using Newtonsoft.Json; using System; using System.Collections.Generic; using System.ComponentModel; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Tango.DispenserAnalyzer.UI { public enum AnalyzerSettingsEnum { [Description("Print Results to PDF file")] PrintResultsToPDF, [Description("PBU Pass fail")] PBUPassFail, [Description("PBU Pass fail")] FlowPBUPassFail, [Description("Exclude from analysis")] ExcludeAnalysis, [Description("Avg value")] AvgMaxValue, [Description("Avg value")] AvgMinValue, [Description("Max-Min range")] MaxMinRange, [Description("Max Min intervals")] MaxMinIntervals, [Description("Max error")] MaxError, [Description("Take off 'Max-min' values(out of highest results)")] TakeOffMaxMin, [Description("Time gap between data point [sec]")] TimeInterval, [Description("Time point to start calculation [sec]")] StartCalculation, [Description("Time point to end calculation [sec]")] EndCalculation, [Description("How many points to use for moving average")] MovingAvg, [Description("Cancel Moving AVG")] CancelMovingAVG, [Description("Divider for calculation max error")] DividerMaxError, [Description("Deviation range")] DeviationAtRevolutionsMin, [Description("Deviation range")] DeviationAtRevolutionsMax, [Description("Directory path to save excel file")] DirectoryPath, } public static class Settings { public static Dictionary DefaultValues { get; set; } public static Dictionary CurrentValues { get; set; } static Settings() { DefaultValues = new Dictionary(); DefaultValues[AnalyzerSettingsEnum.PBUPassFail] = 4.5; DefaultValues[AnalyzerSettingsEnum.FlowPBUPassFail] = 4.5; DefaultValues[AnalyzerSettingsEnum.ExcludeAnalysis] = 1800.0; DefaultValues[AnalyzerSettingsEnum.AvgMinValue] = 1400.0; DefaultValues[AnalyzerSettingsEnum.AvgMaxValue] = 1850.0; DefaultValues[AnalyzerSettingsEnum.MaxMinRange] = 450.0; DefaultValues[AnalyzerSettingsEnum.MaxMinIntervals] = 450.0; DefaultValues[AnalyzerSettingsEnum.MaxError] = 1.67; DefaultValues[AnalyzerSettingsEnum.TakeOffMaxMin] = 3.0; DefaultValues[AnalyzerSettingsEnum.TimeInterval] = 0.1; DefaultValues[AnalyzerSettingsEnum.StartCalculation] = 600.0; DefaultValues[AnalyzerSettingsEnum.EndCalculation] = 900.0; DefaultValues[AnalyzerSettingsEnum.MovingAvg] = 50.0; DefaultValues[AnalyzerSettingsEnum.CancelMovingAVG] = false; DefaultValues[AnalyzerSettingsEnum.DividerMaxError] = 1500.0; DefaultValues[AnalyzerSettingsEnum.DeviationAtRevolutionsMin] = 200.0; DefaultValues[AnalyzerSettingsEnum.DeviationAtRevolutionsMax] = 218.0; DefaultValues[AnalyzerSettingsEnum.DirectoryPath] = ""; CurrentValues = new Dictionary(DefaultValues); } public static object GetValueByName(AnalyzerSettingsEnum name) { object value = 0.0; if (CurrentValues.TryGetValue(name, out value)) { return value; } return value; } public static void SetValueByName(AnalyzerSettingsEnum name, object value) { CurrentValues[name] = value; } public static object GetDefaultValueByName(AnalyzerSettingsEnum name) { object value = 0.0; if (DefaultValues.TryGetValue(name, out value)) { return value; } return value; } public static void SetDefaultPath(string path) { DefaultValues[AnalyzerSettingsEnum.DirectoryPath] = path; } public static void SerializeSettings(string path) { string json = JsonConvert.SerializeObject(CurrentValues, Formatting.Indented); File.WriteAllText(path, json); } public static void DeserializeSettings(string path) { if (File.Exists(path)) { Dictionary values = JsonConvert.DeserializeObject>(File.ReadAllText(path)); foreach (KeyValuePair entry in values) { CurrentValues[entry.Key] = entry.Value; } } } } }