diff --git a/Model/Entity/AgileJsonConfigEntity.cs b/Model/Entity/AgileJsonConfigEntity.cs new file mode 100644 index 0000000..313a1af --- /dev/null +++ b/Model/Entity/AgileJsonConfigEntity.cs @@ -0,0 +1,112 @@ +using System.ComponentModel; +using System.Runtime.CompilerServices; +using SparkClient.ViewModel.Configuration; + +namespace SparkClient.Model.Entity; + +public class AgileJsonConfigEntity +{ + private readonly AlgorithmConfigVM _vm; + private readonly List _keys; + public AgileJsonConfigEntity(AlgorithmConfigVM vm, List keys) + { + _vm = vm; + _mode = 0; + Shape = "圆形"; + Spec = _vm.GetSpecOptions(_mode).FirstOrDefault(); + _keys = keys; + JsonKeys = keys; + } + + private int _mode; + public int Mode + { + get => _mode; + set + { + if (_mode == value) return; + _mode = value; + OnPropertyChanged(); + // 自动更新规格 + Spec = _vm.GetSpecOptions(value).FirstOrDefault(); + } + } + + private string _spec; + public string Spec + { + get => _spec; + set => SetField(ref _spec, value); + } + + private string _shape; + public string Shape + { + get => _shape; + private set => SetField(ref _shape, value); + } + + + private string _jsonKey; + public string JsonKey + { + get => _jsonKey; + set + { + SetField(ref _jsonKey, value); + FilterItems(value); + } + } + + private string _value; + public string Value + { + get => _value; + set => SetField(ref _value, value); + } + + private List _jsonKeys; + + public List JsonKeys + { + get => _jsonKeys; + set => SetField(ref _jsonKeys, value); + } + + private string GetDefaultSpec(int mode) + { + return mode switch + { + 0 => "p8-p8", + 1 => "p8-p8-s1", + _ => null + }; + } + + public event PropertyChangedEventHandler PropertyChanged; + protected void OnPropertyChanged([CallerMemberName] string name = null) + { + PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name)); + } + + protected bool SetField(ref T field, T value, [CallerMemberName] string name = null) + { + if (EqualityComparer.Default.Equals(field, value)) return false; + field = value; + OnPropertyChanged(name); + return true; + } + + private void FilterItems(string key) + { + JsonKeys.Clear(); + + foreach (var data in _keys) + { + if (data.ToLower().Contains(key.ToLower())) + { + JsonKeys.Add(data); + } + } + } +} \ No newline at end of file diff --git a/ViewModel/BaseViewModel.cs b/ViewModel/BaseViewModel.cs index 9f97965..ec7c201 100644 --- a/ViewModel/BaseViewModel.cs +++ b/ViewModel/BaseViewModel.cs @@ -14,6 +14,7 @@ public class BaseViewModel : INotifyPropertyChanged protected void OnPropertyChanged([CallerMemberName] string propertyName = null) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); } + public BaseViewModel() { // 记录当前 ViewModel 的名称 diff --git a/ViewModel/Configuration/AlgorithmConfigVM.cs b/ViewModel/Configuration/AlgorithmConfigVM.cs index 86dfac2..883ac9b 100644 --- a/ViewModel/Configuration/AlgorithmConfigVM.cs +++ b/ViewModel/Configuration/AlgorithmConfigVM.cs @@ -1,4 +1,5 @@ -using System.Data; +using System.Collections.ObjectModel; +using System.Data; using System.IO; using System.Text; using System.Windows.Input; @@ -21,6 +22,12 @@ public class AlgorithmConfigVM : BaseViewModel public ICommand SaveAlgorithmDataCommand { get; } public ICommand BeautifyJsonCommand { get; } public ICommand UglifyJsonCommand { get; } + + public List AgileJsonConfigEntities { get; set; } + + public List JsonKeysBak = new List(); + + public List ModeList { get; set; } private bool _isEnabled; public bool IsEnabled { get { return _isEnabled; } set { _isEnabled = value; OnPropertyChanged(nameof(IsEnabled)); } } @@ -34,8 +41,17 @@ public class AlgorithmConfigVM : BaseViewModel UglifyJsonCommand = new RelayCommand(UglifyJson); InitAlgorithmData(null); IsEnabledByRole(); + JsonKeysBak = GetNestedKeys(JObject.Parse(AlgorithmConfigJson)); + ModeList = GetRunModelList(); + AgileJsonConfigEntities = new List(); + AgileJsonConfigEntities.Add(new AgileJsonConfigEntity(this, JsonKeysBak) { + Mode = 0, + Spec = "p8-p8", + + }); } + /// /// 初始化算法数据 /// @@ -115,8 +131,54 @@ public class AlgorithmConfigVM : BaseViewModel Logger.Error($"全局异常捕获:{ex.Message}", ex); } } + + // 命令实现 + public ICommand AddCommand => new RelayCommand((param) => + { + AgileJsonConfigEntities.Add(new AgileJsonConfigEntity(this, JsonKeysBak) + { + Mode = 0, + Spec = "p8-p8", + + }); + }); + + + private static readonly Dictionary> SpecOptions = new() + { + [0] = new List { "p8-p8" }, + [1] = new List { + "p8-p8", "p8-p8-s1", "p8-p8-s2", + "p8-p8-s3", "p8-p8-s4" + } + }; + + public List GetSpecOptions(int mode) + { + return SpecOptions.TryGetValue(mode, out var options) + ? options + : new List(); + } + + private List GetNestedKeys(JToken token, string prefix = "") + { + var keys = new List(); + if (token is JObject obj) + { + foreach (var property in obj.Properties()) + { + var currentKey = string.IsNullOrEmpty(prefix) + ? property.Name + : $"{prefix}.{property.Name}"; + keys.Add(currentKey); + keys.AddRange(GetNestedKeys(property.Value, currentKey)); + } + } + return keys; + } + /// /// 保存数据 /// @@ -227,5 +289,27 @@ public class AlgorithmConfigVM : BaseViewModel { return AlgorithmConfigJson; } - + + public List GetRunModelList() + { + return new List + { + new Param() + { + Value = "0", + Name = "实验室模式" + }, + new Param() + { + Value = "1", + Name = "工厂模式" + } + }; + } +} + +public class Param +{ + public string Value { get; set; } + public string Name { get; set; } } \ No newline at end of file diff --git a/ViewModel/Grading/GradingResultVM.cs b/ViewModel/Grading/GradingResultVM.cs index 265ee16..b90f65b 100644 --- a/ViewModel/Grading/GradingResultVM.cs +++ b/ViewModel/Grading/GradingResultVM.cs @@ -717,14 +717,17 @@ public class GradingResultVM : BaseViewModel info.Max = FormatDouble_D(result.measurements.M2); info.Dev = calDev(info.Max, info.Min); var data = result.measurements; - info.Dtl1 = FormatDouble_D(data.DIAMETER_DETAIL.DIAMETER_1); - info.Dtl2 = FormatDouble_D(data.DIAMETER_DETAIL.DIAMETER_2); - info.Dtl3 = FormatDouble_D(data.DIAMETER_DETAIL.DIAMETER_3); - info.Dtl4 = FormatDouble_D(data.DIAMETER_DETAIL.DIAMETER_4); - info.Dtl5 = FormatDouble_D(data.DIAMETER_DETAIL.DIAMETER_5); - info.Dtl6 = FormatDouble_D(data.DIAMETER_DETAIL.DIAMETER_6); - info.Dtl7 = FormatDouble_D(data.DIAMETER_DETAIL.DIAMETER_7); - info.Dtl8 = FormatDouble_D(data.DIAMETER_DETAIL.DIAMETER_8); + if (data.DIAMETER_DETAIL != null) + { + info.Dtl1 = FormatDouble_D(data.DIAMETER_DETAIL.DIAMETER_1); + info.Dtl2 = FormatDouble_D(data.DIAMETER_DETAIL.DIAMETER_2); + info.Dtl3 = FormatDouble_D(data.DIAMETER_DETAIL.DIAMETER_3); + info.Dtl4 = FormatDouble_D(data.DIAMETER_DETAIL.DIAMETER_4); + info.Dtl5 = FormatDouble_D(data.DIAMETER_DETAIL.DIAMETER_5); + info.Dtl6 = FormatDouble_D(data.DIAMETER_DETAIL.DIAMETER_6); + info.Dtl7 = FormatDouble_D(data.DIAMETER_DETAIL.DIAMETER_7); + info.Dtl8 = FormatDouble_D(data.DIAMETER_DETAIL.DIAMETER_8); + } info.SymLevel = calGradeSym("DIAMETER", calSymValue(data.M1, data.M2, data.DIAMETER,false)); return info; } @@ -752,10 +755,13 @@ public class GradingResultVM : BaseViewModel info.CutLevel = calGrade_TABLE(result.measurements.TABLE_MIN, result.measurements.TABLE_MAX); info.isEnabled = false; var data = result.measurements; - info.Dtl1 = FormatDouble_P(data.TABLE_DETAIL.TABLE_1); - info.Dtl2 = FormatDouble_P(data.TABLE_DETAIL.TABLE_2); - info.Dtl3 = FormatDouble_P(data.TABLE_DETAIL.TABLE_3); - info.Dtl4 = FormatDouble_P(data.TABLE_DETAIL.TABLE_4); + if (data.TABLE_DETAIL != null) + { + info.Dtl1 = FormatDouble_P(data.TABLE_DETAIL.TABLE_1); + info.Dtl2 = FormatDouble_P(data.TABLE_DETAIL.TABLE_2); + info.Dtl3 = FormatDouble_P(data.TABLE_DETAIL.TABLE_3); + info.Dtl4 = FormatDouble_P(data.TABLE_DETAIL.TABLE_4); + } return info; } @@ -772,14 +778,17 @@ public class GradingResultVM : BaseViewModel info.CutLevel = calGrade_CROWN_ANGLE(result.measurements.CROWN_ANGLE_MIN, result.measurements.CROWN_ANGLE_MAX); info.Dev = calDev(info.Max, info.Min); var data = result.measurements; - info.Dtl1 = FormatDouble_A(data.CROWN_ANGLE_DETAIL.CROWN_ANGLE_1); - info.Dtl2 = FormatDouble_A(data.CROWN_ANGLE_DETAIL.CROWN_ANGLE_2); - info.Dtl3 = FormatDouble_A(data.CROWN_ANGLE_DETAIL.CROWN_ANGLE_3); - info.Dtl4 = FormatDouble_A(data.CROWN_ANGLE_DETAIL.CROWN_ANGLE_4); - info.Dtl5 = FormatDouble_A(data.CROWN_ANGLE_DETAIL.CROWN_ANGLE_5); - info.Dtl6 = FormatDouble_A(data.CROWN_ANGLE_DETAIL.CROWN_ANGLE_6); - info.Dtl7 = FormatDouble_A(data.CROWN_ANGLE_DETAIL.CROWN_ANGLE_7); - info.Dtl8 = FormatDouble_A(data.CROWN_ANGLE_DETAIL.CROWN_ANGLE_8); + if (data.CROWN_ANGLE_DETAIL != null) + { + info.Dtl1 = FormatDouble_A(data.CROWN_ANGLE_DETAIL.CROWN_ANGLE_1); + info.Dtl2 = FormatDouble_A(data.CROWN_ANGLE_DETAIL.CROWN_ANGLE_2); + info.Dtl3 = FormatDouble_A(data.CROWN_ANGLE_DETAIL.CROWN_ANGLE_3); + info.Dtl4 = FormatDouble_A(data.CROWN_ANGLE_DETAIL.CROWN_ANGLE_4); + info.Dtl5 = FormatDouble_A(data.CROWN_ANGLE_DETAIL.CROWN_ANGLE_5); + info.Dtl6 = FormatDouble_A(data.CROWN_ANGLE_DETAIL.CROWN_ANGLE_6); + info.Dtl7 = FormatDouble_A(data.CROWN_ANGLE_DETAIL.CROWN_ANGLE_7); + info.Dtl8 = FormatDouble_A(data.CROWN_ANGLE_DETAIL.CROWN_ANGLE_8); + } info.SymLevel = calGradeSym(info.TestItemId, calSymValue(data.CROWN_ANGLE_MIN, data.CROWN_ANGLE_MAX, data.CROWN_ANGLE,false)); return info; } @@ -797,14 +806,17 @@ public class GradingResultVM : BaseViewModel info.CutLevel = calGrade_CROWN_HEIGHT(result.measurements.CROWN_H_MIN, result.measurements.CROWN_H_MAX); info.Dev = calDev(info.Max, info.Min); var data = result.measurements; - info.Dtl1 = FormatDouble_P(data.CROWN_HEIGHT_DETAIL.CROWN_HEIGHT_1); - info.Dtl2 = FormatDouble_P(data.CROWN_HEIGHT_DETAIL.CROWN_HEIGHT_2); - info.Dtl3 = FormatDouble_P(data.CROWN_HEIGHT_DETAIL.CROWN_HEIGHT_3); - info.Dtl4 = FormatDouble_P(data.CROWN_HEIGHT_DETAIL.CROWN_HEIGHT_4); - info.Dtl5 = FormatDouble_P(data.CROWN_HEIGHT_DETAIL.CROWN_HEIGHT_5); - info.Dtl6 = FormatDouble_P(data.CROWN_HEIGHT_DETAIL.CROWN_HEIGHT_6); - info.Dtl7 = FormatDouble_P(data.CROWN_HEIGHT_DETAIL.CROWN_HEIGHT_7); - info.Dtl8 = FormatDouble_P(data.CROWN_HEIGHT_DETAIL.CROWN_HEIGHT_8); + if (data.CROWN_HEIGHT_DETAIL != null) + { + info.Dtl1 = FormatDouble_P(data.CROWN_HEIGHT_DETAIL.CROWN_HEIGHT_1); + info.Dtl2 = FormatDouble_P(data.CROWN_HEIGHT_DETAIL.CROWN_HEIGHT_2); + info.Dtl3 = FormatDouble_P(data.CROWN_HEIGHT_DETAIL.CROWN_HEIGHT_3); + info.Dtl4 = FormatDouble_P(data.CROWN_HEIGHT_DETAIL.CROWN_HEIGHT_4); + info.Dtl5 = FormatDouble_P(data.CROWN_HEIGHT_DETAIL.CROWN_HEIGHT_5); + info.Dtl6 = FormatDouble_P(data.CROWN_HEIGHT_DETAIL.CROWN_HEIGHT_6); + info.Dtl7 = FormatDouble_P(data.CROWN_HEIGHT_DETAIL.CROWN_HEIGHT_7); + info.Dtl8 = FormatDouble_P(data.CROWN_HEIGHT_DETAIL.CROWN_HEIGHT_8); + } info.SymLevel = calGradeSym(info.TestItemId, calSymValue(data.CROWN_H_MIN, data.CROWN_H_MAX, data.CROWN_HEIGHT)); return info; } @@ -821,14 +833,17 @@ public class GradingResultVM : BaseViewModel info.Max = FormatDouble_P(result.measurements.GIRDLE_BEZEL_MAX); info.Dev = calDev(info.Max, info.Min); var data = result.measurements; - info.Dtl1 = FormatDouble_P(data.GIRDLE_BEZEL_DETAIL.GIRDLE_BEZEL_1); - info.Dtl2 = FormatDouble_P(data.GIRDLE_BEZEL_DETAIL.GIRDLE_BEZEL_2); - info.Dtl3 = FormatDouble_P(data.GIRDLE_BEZEL_DETAIL.GIRDLE_BEZEL_3); - info.Dtl4 = FormatDouble_P(data.GIRDLE_BEZEL_DETAIL.GIRDLE_BEZEL_4); - info.Dtl5 = FormatDouble_P(data.GIRDLE_BEZEL_DETAIL.GIRDLE_BEZEL_5); - info.Dtl6 = FormatDouble_P(data.GIRDLE_BEZEL_DETAIL.GIRDLE_BEZEL_6); - info.Dtl7 = FormatDouble_P(data.GIRDLE_BEZEL_DETAIL.GIRDLE_BEZEL_7); - info.Dtl8 = FormatDouble_P(data.GIRDLE_BEZEL_DETAIL.GIRDLE_BEZEL_8); + if (data.GIRDLE_BEZEL_DETAIL != null) + { + info.Dtl1 = FormatDouble_P(data.GIRDLE_BEZEL_DETAIL.GIRDLE_BEZEL_1); + info.Dtl2 = FormatDouble_P(data.GIRDLE_BEZEL_DETAIL.GIRDLE_BEZEL_2); + info.Dtl3 = FormatDouble_P(data.GIRDLE_BEZEL_DETAIL.GIRDLE_BEZEL_3); + info.Dtl4 = FormatDouble_P(data.GIRDLE_BEZEL_DETAIL.GIRDLE_BEZEL_4); + info.Dtl5 = FormatDouble_P(data.GIRDLE_BEZEL_DETAIL.GIRDLE_BEZEL_5); + info.Dtl6 = FormatDouble_P(data.GIRDLE_BEZEL_DETAIL.GIRDLE_BEZEL_6); + info.Dtl7 = FormatDouble_P(data.GIRDLE_BEZEL_DETAIL.GIRDLE_BEZEL_7); + info.Dtl8 = FormatDouble_P(data.GIRDLE_BEZEL_DETAIL.GIRDLE_BEZEL_8); + } info.SymLevel = calGradeSym(info.TestItemId, calSymValue(data.GIRDLE_BEZEL_MIN, data.GIRDLE_BEZEL_MAX, data.GIRDLE_BEZEL)); return info; } @@ -844,14 +859,19 @@ public class GradingResultVM : BaseViewModel info.Max = FormatDouble_P(result.measurements.GIRDLE_BONE_MAX); info.isEnabled = false; var data = result.measurements; - info.Dtl1 = FormatDouble_P(data.GIRDLE_BONE_DETAIL.GIRDLE_BONE_1); - info.Dtl2 = FormatDouble_P(data.GIRDLE_BONE_DETAIL.GIRDLE_BONE_2); - info.Dtl3 = FormatDouble_P(data.GIRDLE_BONE_DETAIL.GIRDLE_BONE_3); - info.Dtl4 = FormatDouble_P(data.GIRDLE_BONE_DETAIL.GIRDLE_BONE_4); - info.Dtl5 = FormatDouble_P(data.GIRDLE_BONE_DETAIL.GIRDLE_BONE_5); - info.Dtl6 = FormatDouble_P(data.GIRDLE_BONE_DETAIL.GIRDLE_BONE_6); - info.Dtl7 = FormatDouble_P(data.GIRDLE_BONE_DETAIL.GIRDLE_BONE_7); - info.Dtl8 = FormatDouble_P(data.GIRDLE_BONE_DETAIL.GIRDLE_BONE_8); + if (data.GIRDLE_BONE_DETAIL != null) + { + info.Dtl1 = FormatDouble_P(data.GIRDLE_BONE_DETAIL.GIRDLE_BONE_1); + info.Dtl2 = FormatDouble_P(data.GIRDLE_BONE_DETAIL.GIRDLE_BONE_2); + info.Dtl3 = FormatDouble_P(data.GIRDLE_BONE_DETAIL.GIRDLE_BONE_3); + info.Dtl4 = FormatDouble_P(data.GIRDLE_BONE_DETAIL.GIRDLE_BONE_4); + info.Dtl5 = FormatDouble_P(data.GIRDLE_BONE_DETAIL.GIRDLE_BONE_5); + info.Dtl6 = FormatDouble_P(data.GIRDLE_BONE_DETAIL.GIRDLE_BONE_6); + info.Dtl7 = FormatDouble_P(data.GIRDLE_BONE_DETAIL.GIRDLE_BONE_7); + info.Dtl8 = FormatDouble_P(data.GIRDLE_BONE_DETAIL.GIRDLE_BONE_8); + } + + return info; } @@ -868,33 +888,39 @@ public class GradingResultVM : BaseViewModel info.CutLevel = calGrade_GIRDLE(result.measurements.GIRDLE_VALLEY_MIN, result.measurements.GIRDLE_VALLEY_MAX); info.Dev = calDev(info.Max, info.Min); var data = result.measurements; - List doubles = new List(); + var girdleValleyDetail = data.GIRDLE_VALLEY_DETAIL; - doubles.Add(girdleValleyDetail.GIRDLE_VALLEY_1); - doubles.Add(girdleValleyDetail.GIRDLE_VALLEY_2); - doubles.Add(girdleValleyDetail.GIRDLE_VALLEY_3); - doubles.Add(girdleValleyDetail.GIRDLE_VALLEY_4); - doubles.Add(girdleValleyDetail.GIRDLE_VALLEY_5); - doubles.Add(girdleValleyDetail.GIRDLE_VALLEY_6); - doubles.Add(girdleValleyDetail.GIRDLE_VALLEY_7); - doubles.Add(girdleValleyDetail.GIRDLE_VALLEY_8); - doubles.Add(girdleValleyDetail.GIRDLE_VALLEY_9); - doubles.Add(girdleValleyDetail.GIRDLE_VALLEY_10); - doubles.Add(girdleValleyDetail.GIRDLE_VALLEY_11); - doubles.Add(girdleValleyDetail.GIRDLE_VALLEY_12); - doubles.Add(girdleValleyDetail.GIRDLE_VALLEY_13); - doubles.Add(girdleValleyDetail.GIRDLE_VALLEY_14); - doubles.Add(girdleValleyDetail.GIRDLE_VALLEY_15); - doubles.Add(girdleValleyDetail.GIRDLE_VALLEY_16); - doubles.Sort(); - info.Dtl1= FormatDouble_P2(doubles[0]); - info.Dtl2 = FormatDouble_P2(doubles[1]); - info.Dtl3 = FormatDouble_P2(doubles[2]); - info.Dtl4 = FormatDouble_P2(doubles[3]); - info.Dtl5 = FormatDouble_P2(doubles[12]); - info.Dtl6 = FormatDouble_P2(doubles[13]); - info.Dtl7 = FormatDouble_P2(doubles[14]); - info.Dtl8 = FormatDouble_P2(doubles[15]); + if (girdleValleyDetail != null) + { + List doubles = new List(); + doubles.Add(girdleValleyDetail.GIRDLE_VALLEY_1); + doubles.Add(girdleValleyDetail.GIRDLE_VALLEY_2); + doubles.Add(girdleValleyDetail.GIRDLE_VALLEY_3); + doubles.Add(girdleValleyDetail.GIRDLE_VALLEY_4); + doubles.Add(girdleValleyDetail.GIRDLE_VALLEY_5); + doubles.Add(girdleValleyDetail.GIRDLE_VALLEY_6); + doubles.Add(girdleValleyDetail.GIRDLE_VALLEY_7); + doubles.Add(girdleValleyDetail.GIRDLE_VALLEY_8); + doubles.Add(girdleValleyDetail.GIRDLE_VALLEY_9); + doubles.Add(girdleValleyDetail.GIRDLE_VALLEY_10); + doubles.Add(girdleValleyDetail.GIRDLE_VALLEY_11); + doubles.Add(girdleValleyDetail.GIRDLE_VALLEY_12); + doubles.Add(girdleValleyDetail.GIRDLE_VALLEY_13); + doubles.Add(girdleValleyDetail.GIRDLE_VALLEY_14); + doubles.Add(girdleValleyDetail.GIRDLE_VALLEY_15); + doubles.Add(girdleValleyDetail.GIRDLE_VALLEY_16); + doubles.Sort(); + info.Dtl1= FormatDouble_P2(doubles[0]); + info.Dtl2 = FormatDouble_P2(doubles[1]); + info.Dtl3 = FormatDouble_P2(doubles[2]); + info.Dtl4 = FormatDouble_P2(doubles[3]); + info.Dtl5 = FormatDouble_P2(doubles[12]); + info.Dtl6 = FormatDouble_P2(doubles[13]); + info.Dtl7 = FormatDouble_P2(doubles[14]); + info.Dtl8 = FormatDouble_P2(doubles[15]); + } + + info.SymLevel = calGradeSym(info.TestItemId, calSymValue(data.GIRDLE_VALLEY_MIN, data.GIRDLE_VALLEY_MAX, data.GIRDLE_VALLEY)); return info; } @@ -912,14 +938,17 @@ public class GradingResultVM : BaseViewModel info.CutLevel = calGrade_PAV_ANGLE(result.measurements.PAV_ANGLE_MIN, result.measurements.PAV_ANGLE_MAX); info.Dev = calDev(info.Max, info.Min); var data = result.measurements; - info.Dtl1 = FormatDouble_A(data.PAV_ANGLE_DETAIL.PAV_ANGLE_1); - info.Dtl2 = FormatDouble_A(data.PAV_ANGLE_DETAIL.PAV_ANGLE_2); - info.Dtl3 = FormatDouble_A(data.PAV_ANGLE_DETAIL.PAV_ANGLE_3); - info.Dtl4 = FormatDouble_A(data.PAV_ANGLE_DETAIL.PAV_ANGLE_4); - info.Dtl5 = FormatDouble_A(data.PAV_ANGLE_DETAIL.PAV_ANGLE_5); - info.Dtl6 = FormatDouble_A(data.PAV_ANGLE_DETAIL.PAV_ANGLE_6); - info.Dtl7 = FormatDouble_A(data.PAV_ANGLE_DETAIL.PAV_ANGLE_7); - info.Dtl8 = FormatDouble_A(data.PAV_ANGLE_DETAIL.PAV_ANGLE_8); + if (data.PAV_ANGLE_DETAIL != null) + { + info.Dtl1 = FormatDouble_A(data.PAV_ANGLE_DETAIL.PAV_ANGLE_1); + info.Dtl2 = FormatDouble_A(data.PAV_ANGLE_DETAIL.PAV_ANGLE_2); + info.Dtl3 = FormatDouble_A(data.PAV_ANGLE_DETAIL.PAV_ANGLE_3); + info.Dtl4 = FormatDouble_A(data.PAV_ANGLE_DETAIL.PAV_ANGLE_4); + info.Dtl5 = FormatDouble_A(data.PAV_ANGLE_DETAIL.PAV_ANGLE_5); + info.Dtl6 = FormatDouble_A(data.PAV_ANGLE_DETAIL.PAV_ANGLE_6); + info.Dtl7 = FormatDouble_A(data.PAV_ANGLE_DETAIL.PAV_ANGLE_7); + info.Dtl8 = FormatDouble_A(data.PAV_ANGLE_DETAIL.PAV_ANGLE_8); + } info.SymLevel = calGradeSym(info.TestItemId, calSymValue(data.PAV_ANGLE_MIN, data.PAV_ANGLE_MAX, data.PAV_ANGLE, false)); return info; } @@ -937,14 +966,18 @@ public class GradingResultVM : BaseViewModel info.CutLevel = calGrade_PAV_DEPTH(result.measurements.PAV_DEPTH_MIN, result.measurements.PAV_DEPTH_MAX); info.Dev = calDev(info.Max, info.Min); var data = result.measurements; - info.Dtl1 = FormatDouble_P(data.PAV_DEPTH_DETAIL.PAV_DEPTH_1); - info.Dtl2 = FormatDouble_P(data.PAV_DEPTH_DETAIL.PAV_DEPTH_2); - info.Dtl3 = FormatDouble_P(data.PAV_DEPTH_DETAIL.PAV_DEPTH_3); - info.Dtl4 = FormatDouble_P(data.PAV_DEPTH_DETAIL.PAV_DEPTH_4); - info.Dtl5 = FormatDouble_P(data.PAV_DEPTH_DETAIL.PAV_DEPTH_5); - info.Dtl6 = FormatDouble_P(data.PAV_DEPTH_DETAIL.PAV_DEPTH_6); - info.Dtl7 = FormatDouble_P(data.PAV_DEPTH_DETAIL.PAV_DEPTH_7); - info.Dtl8 = FormatDouble_P(data.PAV_DEPTH_DETAIL.PAV_DEPTH_8); + if (data.PAV_DEPTH_DETAIL != null) + { + info.Dtl1 = FormatDouble_P(data.PAV_DEPTH_DETAIL.PAV_DEPTH_1); + info.Dtl2 = FormatDouble_P(data.PAV_DEPTH_DETAIL.PAV_DEPTH_2); + info.Dtl3 = FormatDouble_P(data.PAV_DEPTH_DETAIL.PAV_DEPTH_3); + info.Dtl4 = FormatDouble_P(data.PAV_DEPTH_DETAIL.PAV_DEPTH_4); + info.Dtl5 = FormatDouble_P(data.PAV_DEPTH_DETAIL.PAV_DEPTH_5); + info.Dtl6 = FormatDouble_P(data.PAV_DEPTH_DETAIL.PAV_DEPTH_6); + info.Dtl7 = FormatDouble_P(data.PAV_DEPTH_DETAIL.PAV_DEPTH_7); + info.Dtl8 = FormatDouble_P(data.PAV_DEPTH_DETAIL.PAV_DEPTH_8); + } + info.SymLevel = calGradeSym(info.TestItemId, calSymValue(data.PAV_DEPTH_MIN, data.PAV_DEPTH_MAX, data.PAV_DEPTH)); return info; } @@ -961,14 +994,17 @@ public class GradingResultVM : BaseViewModel info.CutLevel = calGrade_STAR(result.measurements.STAR_MIN, result.measurements.STAR_MAX); info.isEnabled = false; var data = result.measurements; - info.Dtl1 = FormatDouble_P(data.STAR_DETAIL.STAR_1); - info.Dtl2 = FormatDouble_P(data.STAR_DETAIL.STAR_2); - info.Dtl3 = FormatDouble_P(data.STAR_DETAIL.STAR_3); - info.Dtl4 = FormatDouble_P(data.STAR_DETAIL.STAR_4); - info.Dtl5 = FormatDouble_P(data.STAR_DETAIL.STAR_5); - info.Dtl6 = FormatDouble_P(data.STAR_DETAIL.STAR_6); - info.Dtl7 = FormatDouble_P(data.STAR_DETAIL.STAR_7); - info.Dtl8 = FormatDouble_P(data.STAR_DETAIL.STAR_8); + if (data.STAR_DETAIL != null) + { + info.Dtl1 = FormatDouble_P(data.STAR_DETAIL.STAR_1); + info.Dtl2 = FormatDouble_P(data.STAR_DETAIL.STAR_2); + info.Dtl3 = FormatDouble_P(data.STAR_DETAIL.STAR_3); + info.Dtl4 = FormatDouble_P(data.STAR_DETAIL.STAR_4); + info.Dtl5 = FormatDouble_P(data.STAR_DETAIL.STAR_5); + info.Dtl6 = FormatDouble_P(data.STAR_DETAIL.STAR_6); + info.Dtl7 = FormatDouble_P(data.STAR_DETAIL.STAR_7); + info.Dtl8 = FormatDouble_P(data.STAR_DETAIL.STAR_8); + } return info; } @@ -984,14 +1020,17 @@ public class GradingResultVM : BaseViewModel info.CutLevel = calGrade_LOWER_HALVES_RATIO(result.measurements.LOWER_HALVES_RATIO_MIN, result.measurements.LOWER_HALVES_RATIO_MAX); info.isEnabled = false; var data = result.measurements; - info.Dtl1 = FormatDouble_P(data.LOWER_HALVES_RATIO_DETAIL.LOWER_HALVES_RATIO_1); - info.Dtl2 = FormatDouble_P(data.LOWER_HALVES_RATIO_DETAIL.LOWER_HALVES_RATIO_2); - info.Dtl3 = FormatDouble_P(data.LOWER_HALVES_RATIO_DETAIL.LOWER_HALVES_RATIO_3); - info.Dtl4 = FormatDouble_P(data.LOWER_HALVES_RATIO_DETAIL.LOWER_HALVES_RATIO_4); - info.Dtl5 = FormatDouble_P(data.LOWER_HALVES_RATIO_DETAIL.LOWER_HALVES_RATIO_5); - info.Dtl6 = FormatDouble_P(data.LOWER_HALVES_RATIO_DETAIL.LOWER_HALVES_RATIO_6); - info.Dtl7 = FormatDouble_P(data.LOWER_HALVES_RATIO_DETAIL.LOWER_HALVES_RATIO_7); - info.Dtl8 = FormatDouble_P(data.LOWER_HALVES_RATIO_DETAIL.LOWER_HALVES_RATIO_8); + if (data.LOWER_HALVES_RATIO_DETAIL != null) + { + info.Dtl1 = FormatDouble_P(data.LOWER_HALVES_RATIO_DETAIL.LOWER_HALVES_RATIO_1); + info.Dtl2 = FormatDouble_P(data.LOWER_HALVES_RATIO_DETAIL.LOWER_HALVES_RATIO_2); + info.Dtl3 = FormatDouble_P(data.LOWER_HALVES_RATIO_DETAIL.LOWER_HALVES_RATIO_3); + info.Dtl4 = FormatDouble_P(data.LOWER_HALVES_RATIO_DETAIL.LOWER_HALVES_RATIO_4); + info.Dtl5 = FormatDouble_P(data.LOWER_HALVES_RATIO_DETAIL.LOWER_HALVES_RATIO_5); + info.Dtl6 = FormatDouble_P(data.LOWER_HALVES_RATIO_DETAIL.LOWER_HALVES_RATIO_6); + info.Dtl7 = FormatDouble_P(data.LOWER_HALVES_RATIO_DETAIL.LOWER_HALVES_RATIO_7); + info.Dtl8 = FormatDouble_P(data.LOWER_HALVES_RATIO_DETAIL.LOWER_HALVES_RATIO_8); + } return info; } @@ -1046,14 +1085,17 @@ public class GradingResultVM : BaseViewModel info.Max = FormatDouble_A(result.measurements.TWIST_MAX); info.Dev = calDev(info.Max, info.Min); var data = result.measurements; - info.Dtl1 = FormatDouble_A(data.TWIST_DETAIL.TWIST_1); - info.Dtl2 = FormatDouble_A(data.TWIST_DETAIL.TWIST_2); - info.Dtl3 = FormatDouble_A(data.TWIST_DETAIL.TWIST_3); - info.Dtl4 = FormatDouble_A(data.TWIST_DETAIL.TWIST_4); - info.Dtl5 = FormatDouble_A(data.TWIST_DETAIL.TWIST_5); - info.Dtl6 = FormatDouble_A(data.TWIST_DETAIL.TWIST_6); - info.Dtl7 = FormatDouble_A(data.TWIST_DETAIL.TWIST_7); - info.Dtl8 = FormatDouble_A(data.TWIST_DETAIL.TWIST_8); + if (data.TWIST_DETAIL != null) + { + info.Dtl1 = FormatDouble_A(data.TWIST_DETAIL.TWIST_1); + info.Dtl2 = FormatDouble_A(data.TWIST_DETAIL.TWIST_2); + info.Dtl3 = FormatDouble_A(data.TWIST_DETAIL.TWIST_3); + info.Dtl4 = FormatDouble_A(data.TWIST_DETAIL.TWIST_4); + info.Dtl5 = FormatDouble_A(data.TWIST_DETAIL.TWIST_5); + info.Dtl6 = FormatDouble_A(data.TWIST_DETAIL.TWIST_6); + info.Dtl7 = FormatDouble_A(data.TWIST_DETAIL.TWIST_7); + info.Dtl8 = FormatDouble_A(data.TWIST_DETAIL.TWIST_8); + } info.SymLevel = calGradeSym(info.TestItemId, calSymValue(data.TWIST_MIN, data.TWIST_MAX, data.TWIST)); return info; } diff --git a/Views/Configuration/AlgorithmConfigPage.xaml b/Views/Configuration/AlgorithmConfigPage.xaml index 7c6ce8b..3f198ee 100644 --- a/Views/Configuration/AlgorithmConfigPage.xaml +++ b/Views/Configuration/AlgorithmConfigPage.xaml @@ -6,93 +6,205 @@ xmlns:hc="https://handyorg.github.io/handycontrol" xmlns:local="clr-namespace:SparkClient.Views" xmlns:configuration="clr-namespace:SparkClient.Views.Configuration" + xmlns:system="clr-namespace:System;assembly=System.Runtime" mc:Ignorable="d" > - + + + 圆形 + + + - - - - + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Views/Configuration/AlgorithmConfigPage.xaml.cs b/Views/Configuration/AlgorithmConfigPage.xaml.cs index 543731b..763fc2f 100644 --- a/Views/Configuration/AlgorithmConfigPage.xaml.cs +++ b/Views/Configuration/AlgorithmConfigPage.xaml.cs @@ -3,6 +3,7 @@ using System.Reflection; using System.Windows; using System.Windows.Controls; using System.Xml; +using HandyControl.Controls; using ICSharpCode.AvalonEdit; using ICSharpCode.AvalonEdit.Highlighting; using ICSharpCode.AvalonEdit.Highlighting.Xshd; @@ -39,6 +40,8 @@ public partial class AlgorithmConfigPage } } }; + + } }