ManufacturingPanelProperties.cs 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. using InABox.Configuration;
  2. using InABox.Core;
  3. using InABox.DynamicGrid;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. namespace PRSDesktop
  10. {
  11. public class ManufacturingPanelProperties : BaseObject, IGlobalConfigurationSettings
  12. {
  13. [ScriptEditor]
  14. public string PickingListOptimisationScript { get; set; } = "";
  15. public static string PickingListOptimisationMethodName() => "CustomisePickingList";
  16. public static string DefaultPickingListOptimisationScript()
  17. {
  18. return
  19. @"using InABox.Core;
  20. using Comal.Classes;
  21. using PRSDesktop;
  22. using System;
  23. using System.Collections.Generic;
  24. using System.Linq;
  25. using System.Text;
  26. public class Module
  27. {
  28. public List<RequisitionItem>? " + PickingListOptimisationMethodName() + @"(Requisition requisition, List<RequisitionItem> requisitionItems)
  29. {
  30. return requisitionItems;
  31. }
  32. }";
  33. }
  34. }
  35. public class ManufacturingPanelPropertiesGrid : DynamicItemsListGrid<ManufacturingPanelProperties>
  36. {
  37. public ManufacturingPanelPropertiesGrid()
  38. {
  39. OnCustomiseEditor += ManufacturingPanelPropertiesGrid_OnCustomiseEditor;
  40. }
  41. private void ManufacturingPanelPropertiesGrid_OnCustomiseEditor(IDynamicEditorForm sender, ManufacturingPanelProperties[]? items, DynamicGridColumn column, BaseEditor editor)
  42. {
  43. if (items?.FirstOrDefault() is not ManufacturingPanelProperties properties) return;
  44. if (column.ColumnName == nameof(ManufacturingPanelProperties.PickingListOptimisationScript) && editor is ScriptEditor scriptEditor)
  45. {
  46. scriptEditor.Type = ScriptEditorType.TemplateEditor;
  47. scriptEditor.OnEditorClicked += () =>
  48. {
  49. var script = properties.PickingListOptimisationScript.NotWhiteSpaceOr()
  50. ?? ManufacturingPanelProperties.DefaultPickingListOptimisationScript();
  51. var editor = new ScriptEditorWindow(script, SyntaxLanguage.CSharp);
  52. if (editor.ShowDialog() == true)
  53. {
  54. sender.SetEditorValue(column.ColumnName, editor.Script);
  55. properties.PickingListOptimisationScript = editor.Script;
  56. }
  57. };
  58. }
  59. }
  60. }
  61. }