DynamicDashboardAdditionalTableGrid.cs 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. using InABox.Core;
  2. using InABox.DynamicGrid;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Linq;
  6. using System.Text;
  7. using System.Threading.Tasks;
  8. namespace InABox.Wpf.Dashboard.Editor;
  9. internal class DynamicDashboardAdditionalTableEditItem : BaseObject
  10. {
  11. [EditorSequence(1)]
  12. public string Name { get; set; } = "";
  13. [EditorSequence(2)]
  14. [ScriptEditor]
  15. public string Script { get; set; } = "";
  16. public DynamicDashboardAdditionalTableEditItem()
  17. {
  18. }
  19. public DynamicDashboardAdditionalTableEditItem(DynamicDashboardAdditionalTable table)
  20. {
  21. Name = table.Key;
  22. Script = table.Script ?? "";
  23. }
  24. public DynamicDashboardAdditionalTable ToTable()
  25. {
  26. return new DynamicDashboardAdditionalTable
  27. {
  28. Key = Name,
  29. Script = Script.IsNullOrWhiteSpace() ? null : Script
  30. };
  31. }
  32. }
  33. internal class DynamicDashboardAdditionalTableGrid : DynamicItemsListGrid<DynamicDashboardAdditionalTableEditItem>
  34. {
  35. protected override void DoReconfigure(DynamicGridOptions options)
  36. {
  37. base.DoReconfigure(options);
  38. options.AddRows = true;
  39. options.EditRows = true;
  40. options.DeleteRows = true;
  41. }
  42. protected override void CustomiseEditor(IDynamicEditorForm form, DynamicDashboardAdditionalTableEditItem[] items, DynamicGridColumn column, BaseEditor editor)
  43. {
  44. base.CustomiseEditor(form, items, column, editor);
  45. var item = items[0];
  46. if(column.ColumnName == nameof(DynamicDashboardAdditionalTableEditItem.Script) && editor is ScriptEditor scriptEditor)
  47. {
  48. scriptEditor.Type = ScriptEditorType.TemplateEditor;
  49. scriptEditor.OnEditorClicked += () =>
  50. {
  51. var script = item.Script.NotWhiteSpaceOr()
  52. ?? DynamicDashboardAdditionalTable.DefaultScript();
  53. var editor = new ScriptEditorWindow(script, SyntaxLanguage.CSharp);
  54. if (editor.ShowDialog() == true)
  55. {
  56. form.SetEditorValue(column.ColumnName, editor.Script);
  57. item.Script = editor.Script;
  58. }
  59. };
  60. }
  61. }
  62. }