Sic03-8inch/SicUI/Models/PMs/Charting/ChartingTemplateViewModel.cs

146 lines
4.5 KiB
C#

using Aitex.Common.Util;
using MECF.Framework.UI.Client.ClientBase;
using SciChart.Charting.Visuals.RenderableSeries;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.IO;
using System.Linq;
using System.Runtime.Serialization.Formatters.Binary;
using System.Text;
using System.Threading.Tasks;
namespace SicUI.Models.PMs.Charting
{
public class ChartingTemplateViewModel : SicModuleUIViewModelBase, ISupportMultipleSystem
{
public class TemplateInfo
{
public string TemplateName
{
get;set;
}
public string TemplateCreateTime
{
get;set;
}
}
public ChartingTemplateViewModel()
{
TemplateInfos = new ObservableCollection<TemplateInfo>();
LoadTemplateInfo();
}
public ObservableCollection<TemplateInfo> TemplateInfos { get; set; }
public List<PMNodeInfo> CurrentDataInfo { get; set; }
public TemplateInfo SelectTemplate { get; set; }
private string _currentFileName;
public string CurrentFileName
{
get => _currentFileName;
set { _currentFileName = value; NotifyOfPropertyChange(nameof(CurrentFileName)); }
}
public void LoadTemplateInfo()
{
if (!Directory.Exists(PathManager.GetCfgDir() + @"ChartTemplate"))
{
Directory.CreateDirectory(PathManager.GetCfgDir() + @"ChartTemplate");
}
var path = PathManager.GetCfgDir() + $"ChartTemplate";
string[] allFile = Directory.GetFiles(path, "*.template");
if (TemplateInfos.Count > 0)
{
TemplateInfos.Clear();
}
for (int i = 0; i < allFile.Length; i++)
{
TemplateInfos.Add(new TemplateInfo()
{
TemplateName = Path.GetFileNameWithoutExtension(allFile[i]),
TemplateCreateTime = File.GetCreationTime(allFile[i]).ToString("yyyy-MM-dd HH:mm:ss")
}) ;
}
}
public void SaveToTemplate()
{
if (CurrentDataInfo != null && CurrentDataInfo.Count>0)
{
using (StreamWriter sw = new StreamWriter(PathManager.GetCfgDir() + @"ChartTemplate\" + CurrentFileName + ".template", false))
{
foreach (PMNodeInfo node in CurrentDataInfo)
{
if (node.Selected)
{
sw.WriteLine(node.NodeStr);
}
}
}
}
var temp = TemplateInfos.FirstOrDefault(x => x.TemplateName == CurrentFileName);
if (temp == null)
{
TemplateInfos.Add(new TemplateInfo()
{
TemplateName = CurrentFileName,
TemplateCreateTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")
});
}
}
public void Load()
{
foreach(PMNodeInfo node in CurrentDataInfo)
{
node.Selected = false;
}
using (StreamReader sr = new StreamReader(PathManager.GetCfgDir() + @"ChartTemplate\" + SelectTemplate.TemplateName + ".template"))
{
string line;
while ((line = sr.ReadLine()) != null)
{
foreach (PMNodeInfo node in CurrentDataInfo)
{
if (node.NodeStr == line)
{
node.Selected = true;
break;
}
}
}
}
this.TryClose(true);
}
public void Remove()
{
string curName = SelectTemplate.TemplateName;
if (File.Exists(PathManager.GetCfgDir() + @"ChartTemplate\" + curName + ".template"))
{
File.Delete(PathManager.GetCfgDir() + @"ChartTemplate\" + curName + ".template");
for (int i = 0; i < TemplateInfos.Count; i++)
{
if (TemplateInfos[i].TemplateName == curName)
{
TemplateInfos.RemoveAt(i);
}
}
}
}
}
}