123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Windows;
- using System.Windows.Controls;
- using System.Windows.Data;
- using System.Windows.Documents;
- using System.Windows.Input;
- using System.Windows.Media;
- using System.Windows.Media.Imaging;
- using System.Windows.Shapes;
- using System.Xml;
- using Aitex.UI.Charting.ViewModel;
- using System.Reflection;
- using System.IO;
- using DataAnalysisControl.Core;
- namespace Aitex.UI.Charting.View
- {
- /// <summary>
- /// Interaction logic for LoadPresetDataDialog.xaml
- /// </summary>
- public partial class LoadPresetDataDialog : Window
- {
- public LoadPresetDataDialog()
- {
- InitializeComponent();
- DataSets = new System.Collections.ObjectModel.ObservableCollection<PresetDataItem>();
- Loaded += new RoutedEventHandler(LoadPresetDataDialog_Loaded);
- }
- void LoadPresetDataDialog_Loaded(object sender, RoutedEventArgs e)
- {
- try
- {
- string cfgFilePath = Environment.GetEnvironmentVariable("APPDATA") + "\\DataAnalysis\\ChartingPresetSetting.xml";
- System.IO.FileInfo fi = new System.IO.FileInfo(cfgFilePath);
- if (!fi.Directory.Exists)
- fi.Directory.Create();
- if (!fi.Exists)
- {
- //create default xml configuration file
- Assembly assem = this.GetType().Assembly;
- Stream stream = assem.GetManifestResourceStream("DataAnalysisControl.Charting.View.ChartingPresetSetting.xml");
- int length = (int)stream.Length;
- byte[] arr = new byte[length];
- stream.Read(arr, 0, length);
- var xmlStr = ASCIIEncoding.UTF8.GetString(arr);
- XmlDocument doc = new XmlDocument();
- doc.LoadXml(xmlStr);
- doc.Save(cfgFilePath);
- }
- {
- DataSets.Clear();
- var doc = new XmlDocument();
- doc.Load(Environment.GetEnvironmentVariable("APPDATA") + "\\DataAnalysis\\ChartingPresetSetting.xml");
- foreach (XmlElement item in doc.SelectNodes("/Aitex/DataPreset/Data"))
- {
- string displayNameStr = item.HasAttribute("Name") ? item.Attributes["Name"].Value : "";
- string createTimeStr = item.HasAttribute("CreateTime") ? item.Attributes["CreateTime"].Value : "";
- if (string.IsNullOrEmpty(createTimeStr))
- createTimeStr = DateTime.Now.ToString();
- DataSets.Add(new PresetDataItem() { Name = displayNameStr, CreateTime = createTimeStr });
- }
- }
- }
- catch (Exception ex)
- {
- CONTEXT.WriteLog(ex);
- }
- grid1.DataContext = this;
- }
- public class PresetDataItem
- {
- public string Name { get; set; }
- public string CreateTime { get; set; }
- }
- public System.Collections.ObjectModel.ObservableCollection<PresetDataItem> DataSets { get; set; }
- private void OnLoadData(object sender, RoutedEventArgs e)
- {
- try
- {
- string settingName = (string)((Button)sender).Tag;
- var doc = new XmlDocument();
- doc.Load(Environment.GetEnvironmentVariable("APPDATA") + "\\DataAnalysis\\ChartingPresetSetting.xml");
- foreach (XmlElement item in doc.SelectNodes(string.Format("/Aitex/DataPreset/Data[@Name='{0}']/Item", settingName)))
- {
- //preset new item's color,line width, etc
- string displayNameStr = item.HasAttribute("DisplayName") ? item.Attributes["DisplayName"].Value : "";
- string dataName = item.InnerText;
- string lineColorStr = item.HasAttribute("LineColor") ? item.Attributes["LineColor"].Value : "#FF000000";
- string factorStr = item.HasAttribute("Factor") ? item.Attributes["Factor"].Value : "1.0";
- string offsetStr = item.HasAttribute("Offset") ? item.Attributes["Offset"].Value : "0.0";
- string lineWidthStr = item.HasAttribute("LineWidth") ? item.Attributes["LineWidth"].Value : "1";
- var viewModel = CommonViewModel.Instance;
- var source = viewModel.CurrentSelectedDataSource;
- if (source == null)
- {
- Close();
- return;
- }
- bool isDataNameLoaded = false;
- if (source.Datas.ContainsKey(dataName))
- {
- foreach (MyLineSeries item1 in viewModel.RenderableSeries)
- {
- if (item1.DataSource == source && item1.SeriesName == dataName)
- {
- isDataNameLoaded = true;
- break;
- }
- }
- }
- if (!isDataNameLoaded)
- viewModel.AddDataSeries(source.Title, dataName, displayNameStr, (Color)ColorConverter.ConvertFromString(lineColorStr), Convert.ToSingle(factorStr), Convert.ToSingle(offsetStr), (int)(Convert.ToDouble(lineWidthStr) + 0.5));
- }
- Close();
- }
- catch (Exception ex)
- {
- CONTEXT.WriteLog(ex);
- }
- }
- private void OnDeleteData(object sender, RoutedEventArgs e)
- {
- string settingName = (string)((Button)sender).Tag;
- if (MessageBox.Show(string.Format("是否删除预设值的数据组'{0}'?", settingName), "预设值数据", MessageBoxButton.YesNo, MessageBoxImage.Question) == MessageBoxResult.Yes)
- {
- try
- {
- var doc = new XmlDocument();
- var fileName = Environment.GetEnvironmentVariable("APPDATA") + "\\DataAnalysis\\ChartingPresetSetting.xml";
- doc.Load(fileName);
- var itemNode = doc.SelectSingleNode(string.Format("/Aitex/DataPreset/Data[@Name='{0}']", settingName));
- if (itemNode != null)
- itemNode.ParentNode.RemoveChild(itemNode);
- doc.Save(fileName);
- LoadPresetDataDialog_Loaded(null, null);
- }
- catch (Exception ex)
- {
- CONTEXT.WriteLog(ex);
- }
- }
- }
- private void textBox1_TextChanged(object sender, TextChangedEventArgs e)
- {
- button1.IsEnabled = !string.IsNullOrEmpty(textBox1.Text);
- }
- private void SaveCurrentSeriesConfiguration_Click(object sender, RoutedEventArgs e)
- {
- try
- {
- string presetName = textBox1.Text;
- var doc = new XmlDocument();
- var fileName = Environment.GetEnvironmentVariable("APPDATA") + "\\DataAnalysis\\ChartingPresetSetting.xml";
- doc.Load(fileName);
- var testNode = doc.SelectSingleNode(string.Format("/Aitex/DataPreset/Data[@Name='{0}']", presetName));
- if (testNode != null)
- {
- if (MessageBox.Show(string.Format("预设名称‘{0}’已存在,是否覆盖?", presetName), "保存设置", MessageBoxButton.YesNo, MessageBoxImage.Question) == MessageBoxResult.No)
- return;
- testNode.ParentNode.RemoveChild(testNode);
- }
- var newNode = doc.CreateElement("Data");
- doc.SelectSingleNode("/Aitex/DataPreset").AppendChild(newNode);
- newNode.SetAttribute("Name", presetName);
- newNode.SetAttribute("CreateTime", DateTime.Now.ToString());
- List<string> dataName = new List<string>();
- foreach (MyLineSeries series in CommonViewModel.Instance.RenderableSeries)
- {
- if (dataName.Contains(series.SeriesName))
- continue;
- var itemNode = doc.CreateElement("Item");
- newNode.AppendChild(itemNode);
- itemNode.SetAttribute("DisplayName", series.DisplayName);
- itemNode.SetAttribute("LineColor", series.SeriesColor.ToString());
- itemNode.SetAttribute("Factor", series.Factor.ToString());
- itemNode.SetAttribute("Offset", series.Offset.ToString());
- itemNode.SetAttribute("LineWidth", series.LineThickness.ToString());
- itemNode.InnerText = series.SeriesName;
- dataName.Add(series.SeriesName);
- }
- doc.Save(fileName);
- LoadPresetDataDialog_Loaded(null, null);
- Close();
- }
- catch (Exception ex)
- {
- CONTEXT.WriteLog(ex);
- }
- }
- }
- }
|