OutSignalMainPageViewModel.cs 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. using Avalonia.Collections;
  2. using Avalonia.Controls;
  3. using ParquetSharp;
  4. using Shaker.Models;
  5. using ShakerApp.Models;
  6. using ShakerApp.Tools;
  7. using ShakerApp.Views;
  8. using System;
  9. using System.Collections.Generic;
  10. using System.ComponentModel.DataAnnotations;
  11. using System.Diagnostics.CodeAnalysis;
  12. using System.Linq;
  13. using System.Text;
  14. using System.Threading.Tasks;
  15. namespace ShakerApp.ViewModels
  16. {
  17. internal abstract class BaseMainPageViewModel<TModel>:DisplayViewModelBase<TModel>,IMainPageViewModel where TModel:IModel
  18. {
  19. private protected Column[] columns = new Column[0];
  20. public abstract MainPageType PageType { get; }
  21. public virtual void Start() { }
  22. public virtual void Stop() { }
  23. public Column[] Columns => columns;
  24. public virtual void UpdataColnumInfo()
  25. {
  26. columns = new Column[ViewModels.ShakerConfigViewModel.Instance.Model.AnalogSignalConfigs.Count];
  27. for (int i = 0; i < columns.Length; i++)
  28. {
  29. columns[i] = new Column<double>($"{ShakerConfigViewModel.Instance.Model.AnalogSignalConfigs[i].Name}_{ShakerConfigViewModel.Instance.Model.AnalogSignalConfigs[i].Unit}_{ShakerConfigViewModel.Instance.Model.AnalogSignalConfigs[i].AnalogType}_{Models.DataAxisType.Linear}");
  30. }
  31. }
  32. public virtual void SaveTestData(ParquetFileWriter file)
  33. {
  34. var writer = file.AppendBufferedRowGroup();
  35. for(int i=0;i<ShakerConfigViewModel.Instance.Model.AnalogSignalConfigs.Count;i++)
  36. {
  37. writer.Column(i).LogicalWriter<double>().WriteBatch(ShakerDataViewModel.Instance.GetAnalogRawData(i));
  38. }
  39. }
  40. public virtual void SaveTdmsConfig(Dictionary<string, string> config)
  41. {
  42. ShakerConfigViewModel.Instance.SaveTdmsConfig(config);
  43. }
  44. public virtual void UpdateData(List<IResultDataModel> model)
  45. {
  46. }
  47. }
  48. internal class OutSignalMainPageViewModel: BaseMainPageViewModel<IModel>
  49. {
  50. public override MainPageType PageType => MainPageType.OutSignal;
  51. public ViewModels.AnalogSignalPreviewViewModel AnalogSignal { get; } = new AnalogSignalPreviewViewModel()
  52. {
  53. AttachTitle = MainPageType.OutSignal.Description(),
  54. };
  55. private OutSignalMainPageViewModel()
  56. {
  57. }
  58. static OutSignalMainPageViewModel()
  59. {
  60. }
  61. public static OutSignalMainPageViewModel Instance { get; } = new OutSignalMainPageViewModel();
  62. }
  63. }