DFAddTaskControl.cs 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. using Comal.Classes;
  2. using InABox.Clients;
  3. using InABox.DynamicGrid;
  4. using PRSClasses;
  5. using Syncfusion.Windows.Shared;
  6. using System.Collections.Generic;
  7. using System.Linq;
  8. using System.Text;
  9. using System.Threading.Tasks;
  10. using System.Windows;
  11. using System.Windows.Controls;
  12. using Button = System.Windows.Controls.Button;
  13. using MessageBox = System.Windows.MessageBox;
  14. using TextBox = System.Windows.Controls.TextBox;
  15. namespace PRS.Shared
  16. {
  17. public class DFAddTaskControl : DynamicFormFieldControl<DFLayoutAddTaskField, DFLayoutAddTaskFieldProperties, string?, string?>
  18. {
  19. private IntegerTextBox Number = null!; // Late-initialisation
  20. private Button Button = null!; // Late-initialisation
  21. protected override FrameworkElement Create()
  22. {
  23. var panel = new DockPanel();
  24. Button = new Button
  25. {
  26. Content = "Create Task",
  27. Padding = new Thickness(5),
  28. IsEnabled = FormDesignGrid.IsEditing
  29. };
  30. Button.Click += Button_Click;
  31. Number = new IntegerTextBox
  32. {
  33. IsEnabled = false,
  34. VerticalAlignment = VerticalAlignment.Stretch,
  35. Margin = new Thickness(0, 0, 5, 0)
  36. };
  37. Button.SetValue(DockPanel.DockProperty, Dock.Right);
  38. Number.SetValue(DockPanel.DockProperty, Dock.Left);
  39. panel.Children.Add(Button);
  40. panel.Children.Add(Number);
  41. return panel;
  42. }
  43. private void Button_Click(object sender, RoutedEventArgs e)
  44. {
  45. var kanban = new Kanban();
  46. kanban.Type.ID = Field.Properties.TaskType.ID;
  47. var grid = DynamicGridUtils.CreateDynamicGrid(typeof(DynamicDataGrid<>), typeof(Kanban)) as DynamicDataGrid<Kanban>;
  48. if (grid!.EditItems(new[] { kanban }))
  49. {
  50. new Client<Kanban>().Save(kanban, $"Created by form variable '{Field.Name}'");
  51. Number.Value = kanban.Number;
  52. Button.IsEnabled = false;
  53. }
  54. }
  55. public override string? GetSerializedValue()
  56. {
  57. return GetValue();
  58. }
  59. public override void SetSerializedValue(string? value)
  60. {
  61. SetValue(value);
  62. }
  63. public override string? GetValue()
  64. {
  65. return Number.Value?.ToString();
  66. }
  67. public override void SetValue(string? value)
  68. {
  69. if(int.TryParse(value, out var i))
  70. {
  71. Number.Value = i;
  72. }
  73. else
  74. {
  75. Number.Value = null;
  76. }
  77. Button.IsEnabled = FormDesignGrid.IsEditing && value == null;
  78. }
  79. protected override bool IsEmpty() => GetValue() == null;
  80. }
  81. }