123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172 |
- using System;
- using System.Collections.Generic;
- using System.Collections.ObjectModel;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Xml.Linq;
- using Aitex.Core.Util;
- using DocumentFormat.OpenXml.Drawing.Diagrams;
- using DocumentFormat.OpenXml.Wordprocessing;
- using FurnaceUI.DataModule;
- using FurnaceUI.Models;
- using MECF.Framework.Common.OperationCenter;
- using MECF.Framework.UI.Client.CenterViews.Configs.SystemConfig;
- using OpenSEMI.ClientBase.Command;
- using SciChart.Core.Extensions;
- namespace FurnaceUI.Views.Parameter
- {
- public class BackUpCompareViewModel : FurnaceUIViewModelBase
- {
- private List<string> _selectItemNames = new List<string>();
- public List<string> SelectItemNames
- {
- get { return _selectItemNames; }
- set { _selectItemNames = value; this.NotifyOfPropertyChange(nameof(SelectItemNames)); }
- }
- private bool _isShowAll = true;
- public bool IsShowAll
- {
- get { return _isShowAll; }
- set { _isShowAll = value; this.NotifyOfPropertyChange(nameof(IsShowAll)); }
- }
- private ObservableCollection<PageDataView> _historyTableDatas = new ObservableCollection<PageDataView>();
- public ObservableCollection<PageDataView> HistoryTableDatas
- {
- get { return _historyTableDatas; }
- set { _historyTableDatas = value; this.NotifyOfPropertyChange(nameof(HistoryTableDatas)); }
- }
- [Subscription("System.CompareFileDataA")]
- public Dictionary<string, string> CompareFileDataA { get; set; }
- [Subscription("System.SCDataLastWriteTime")]
- public string SCDataLastWriteTime { get; set; }
- [Subscription("System.CompareFileDataB")]
- public Dictionary<string, string> CompareFileDataB { get; set; }
- public BaseCommand<ConfigNode> TreeViewSelectedItemChangedCmd { private set; get; }
- private string _selectItemName;
- public string SelectItemName
- {
- get { return _selectItemName; }
- set { _selectItemName = value; this.NotifyOfPropertyChange(nameof(SelectItemName)); }
- }
- private bool _busyIndicatorVisibility = false;
- public bool BusyIndicatorVisibility
- {
- get { return _busyIndicatorVisibility; }
- set { _busyIndicatorVisibility = value; this.NotifyOfPropertyChange(nameof(BusyIndicatorVisibility)); }
- }
- private BackUpCompareView _view { get; set; }
- protected override void OnViewLoaded(object view)
- {
- base.OnViewLoaded(view);
- _view = view as BackUpCompareView;
- DelayData();
- ConfigNodes = SystemConfigProvider.Instance.GetConfigTree("System").SubNodes;
- TreeViewSelectedItemChangedCmd = new BaseCommand<ConfigNode>(TreeViewSelectedItemChanged);
- }
- private void TreeViewSelectedItemChanged(ConfigNode node)
- {
- BusyIndicatorVisibility = true;
- SelectItemName = string.IsNullOrEmpty(node.Path) ? node.Name : $"{node.Path}.{node.Name}";
- DelayData();
- }
- async void DelayData()
- {
- BusyIndicatorVisibility = true;
- await WaitForResultsAsync();
- GetDataItem(IsShowAll);
- if (SelectItemNames.Count == 1 )
- {
- SelectItemNames.Add(SCDataLastWriteTime);
- }
- }
- private async Task WaitForResultsAsync()
- {
- // Simulate waiting for results using a delay
- // In a real-world scenario, you might wait for an event or a specific condition
- await Task.Delay(300);
- // Here you can add logic to check if the results are ready
- // For example, polling or using a completion source
- }
- private void GetDataItem(bool isShowAll, string name = "")
- {
- HistoryTableDatas.Clear();
- if (CompareFileDataB == null || CompareFileDataA == null)
- {
- return;
- }
- if (CompareFileDataB.Count >= CompareFileDataA.Count)
- {
- foreach (var item in CompareFileDataB)
- {
- if (CompareFileDataA.ContainsKey(item.Key))
- {
- var dataItem = new PageDataView() { Name = item.Key, ValueStr = item.Value, CompareValueStr = CompareFileDataA[item.Key], IsDifference = CompareFileDataA[item.Key] != item.Value };
- if (isShowAll || (!isShowAll && dataItem.IsDifference))
- HistoryTableDatas.Add(dataItem);
- }
- else
- {
- var dataItem = new PageDataView() { Name = item.Key, ValueStr = item.Value, CompareValueStr = "", IsDifference = true };
- if (isShowAll || (!isShowAll && dataItem.IsDifference))
- HistoryTableDatas.Add(dataItem);
- }
- }
- }
- else
- {
- foreach (var item in CompareFileDataA)
- {
- if (CompareFileDataB.ContainsKey(item.Key))
- {
- var dataItem = new PageDataView() { Name = item.Key, ValueStr = item.Value, CompareValueStr = CompareFileDataB[item.Key], IsDifference = CompareFileDataB[item.Key] != item.Value };
- if (isShowAll || (!isShowAll && dataItem.IsDifference))
- HistoryTableDatas.Add(dataItem);
- }
- else
- {
- var dataItem = new PageDataView() { Name = item.Key, ValueStr = item.Value, CompareValueStr = "", IsDifference = true };
- if (isShowAll || (!isShowAll && dataItem.IsDifference))
- HistoryTableDatas.Add(dataItem);
- }
- }
- }
- if (!string.IsNullOrEmpty(SelectItemName))
- {
- HistoryTableDatas = new ObservableCollection<PageDataView>(HistoryTableDatas.Where(a => a.Name.StartsWith(SelectItemName)).ToList());
- }
- HistoryTableDatas = new ObservableCollection<PageDataView>(HistoryTableDatas.OrderByDescending(a => a.IsDifference).ToList());
- BusyIndicatorVisibility = false;
- }
- public void IsShowAllItemClick(object value)
- {
- IsShowAll = bool.Parse(value.ToString());
- GetDataItem(bool.Parse(value.ToString()));
- }
- private List<ConfigNode> _ConfigNodes = new List<ConfigNode>();
- public List<ConfigNode> ConfigNodes
- {
- get { return _ConfigNodes; }
- set { _ConfigNodes = value; NotifyOfPropertyChange("ConfigNodes"); }
- }
- protected override void InvokeAfterUpdateProperty(Dictionary<string, object> data)
- {
- base.InvokeAfterUpdateProperty(data);
- }
- }
- }
|