DataReviewViewModel.cs 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. using Avalonia.Controls.Documents;
  2. using Avalonia.Platform;
  3. using Shaker.Models;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Diagnostics.CodeAnalysis;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. using System.Xml.Linq;
  10. namespace ShakerApp.ViewModels
  11. {
  12. internal class DataReviewViewModel:DisplayViewModelBase<IModel>
  13. {
  14. private Dictionary<MainPageType, IDataReviewItem> DataReviews = new Dictionary<MainPageType, IDataReviewItem>();
  15. [AllowNull]
  16. private IDataReviewItem currentDataReview;
  17. public IDataReviewItem GetDataReview(string path)
  18. {
  19. var type = GetMainPageType(path);
  20. return DataReviews[type];
  21. }
  22. public static MainPageType GetMainPageType(string path)
  23. {
  24. try
  25. {
  26. var tdmsfile = TDMS.TDMSDataBuilder.OpenExisting(path);
  27. if(tdmsfile!=null)
  28. {
  29. tdmsfile.TryGetProperty<string>(nameof(MainPageViewModel.MainPageType), out var type);
  30. tdmsfile.Close();
  31. return Enum.Parse<MainPageType>(type);
  32. }
  33. }
  34. catch
  35. {
  36. }
  37. return MainPageType.StartPage;
  38. }
  39. private DataReviewViewModel()
  40. {
  41. DataReviews[MainPageType.StartPage] = StartPageDataReviewViewModel.Instance;
  42. DataReviews[MainPageType.RandomPage] = RandomDataReviewViewModel.Instance;
  43. DataReviews[MainPageType.SinePage] = SineDataReviewViewModel.Instance;
  44. DataReviews[MainPageType.OutSignal] = OutSignalDataReviewViewModel.Instance;
  45. CurrentDataReview = DataReviews[MainPageType.StartPage];
  46. Content = typeof(Views.DataReviewView);
  47. ButtonVisibily = false;
  48. }
  49. static DataReviewViewModel()
  50. {
  51. }
  52. public IDataReviewItem CurrentDataReview { get => currentDataReview; set =>SetProperty(ref currentDataReview , value); }
  53. public static DataReviewViewModel Instance { get; } = new DataReviewViewModel();
  54. public void OpenFile(string path)
  55. {
  56. CurrentDataReview?.CloseFile();
  57. MainPageType maintype = MainPageType.StartPage;
  58. try
  59. {
  60. var tdmsfile = TDMS.TDMSDataBuilder.OpenExisting(path);
  61. if (tdmsfile != null)
  62. {
  63. if (tdmsfile.IsOpen)
  64. {
  65. tdmsfile.TryGetProperty<string>(nameof(MainPageViewModel.MainPageType), out var type);
  66. if(string.IsNullOrEmpty(type))
  67. {
  68. tdmsfile?.Close();
  69. CurrentDataReview = DataReviews[MainPageType.StartPage];
  70. return;
  71. }
  72. maintype = Enum.Parse<MainPageType>(type);
  73. CurrentDataReview = DataReviews[maintype];
  74. CurrentDataReview.InitData(tdmsfile);
  75. return;
  76. }
  77. else
  78. {
  79. tdmsfile?.Close();
  80. }
  81. }
  82. }
  83. catch
  84. {
  85. }
  86. CurrentDataReview = DataReviews[MainPageType.StartPage];
  87. }
  88. public void CloseFile()
  89. {
  90. CurrentDataReview?.CloseFile();
  91. CurrentDataReview = DataReviews[MainPageType.StartPage];
  92. }
  93. }
  94. }