ManufacturingPanelProperties.cs 2.3 KB

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