DataReviewViewModel.cs 3.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  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. }
  48. static DataReviewViewModel()
  49. {
  50. }
  51. public IDataReviewItem CurrentDataReview { get => currentDataReview; set =>SetProperty(ref currentDataReview , value); }
  52. public static DataReviewViewModel Instance { get; } = new DataReviewViewModel();
  53. public void OpenFile(string path)
  54. {
  55. CurrentDataReview?.CloseFile();
  56. MainPageType maintype = MainPageType.StartPage;
  57. try
  58. {
  59. var tdmsfile = TDMS.TDMSDataBuilder.OpenExisting(path);
  60. if (tdmsfile != null)
  61. {
  62. if (tdmsfile.IsOpen)
  63. {
  64. tdmsfile.TryGetProperty<string>(nameof(MainPageViewModel.MainPageType), out var type);
  65. if(string.IsNullOrEmpty(type))
  66. {
  67. tdmsfile?.Close();
  68. CurrentDataReview = DataReviews[MainPageType.StartPage];
  69. return;
  70. }
  71. maintype = Enum.Parse<MainPageType>(type);
  72. CurrentDataReview = DataReviews[maintype];
  73. CurrentDataReview.InitData(tdmsfile);
  74. return;
  75. }
  76. else
  77. {
  78. tdmsfile?.Close();
  79. }
  80. }
  81. }
  82. catch
  83. {
  84. }
  85. CurrentDataReview = DataReviews[MainPageType.StartPage];
  86. }
  87. public void CloseFile()
  88. {
  89. CurrentDataReview?.CloseFile();
  90. CurrentDataReview = DataReviews[MainPageType.StartPage];
  91. }
  92. }
  93. }