DFAddTaskControl.cs 2.8 KB

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