JobPlannerEmployeeSelector.cs 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.IO;
  5. using System.Linq;
  6. using System.Linq.Expressions;
  7. using System.Windows;
  8. using System.Windows.Controls;
  9. using System.Windows.Media;
  10. using System.Windows.Media.Imaging;
  11. using Comal.Classes;
  12. using InABox.Configuration;
  13. using InABox.Core;
  14. using InABox.DynamicGrid;
  15. using InABox.WPF;
  16. using Microsoft.Win32;
  17. using Syncfusion.Windows.Shared;
  18. namespace PRSDesktop
  19. {
  20. public class JobPlannerEmployee : BaseObject
  21. {
  22. public Guid ID { get; set; }
  23. [TextBoxEditor(Visible = Visible.Default)]
  24. [EditorSequence(1)]
  25. public String Name { get; set; }
  26. [DurationEditor(Visible=Visible.Default, Format = "hh:mm", Width=50)]
  27. [EditorSequence(2)]
  28. public TimeSpan Time { get; set; }
  29. }
  30. public enum JobPlannerEmployeeAction
  31. {
  32. Assign,
  33. Remove
  34. }
  35. public delegate void JobPlannerEmployeeGridAction(object sender, JobPlannerEmployee[] employee);
  36. public class JobPlannerEmployeeGrid : DynamicItemsListGrid<JobPlannerEmployee>
  37. {
  38. public static readonly DependencyProperty ActionProperty = DependencyProperty.Register(
  39. nameof (Action),
  40. typeof (JobPlannerEmployeeAction),
  41. typeof (JobPlannerEmployeeGrid),
  42. new PropertyMetadata(JobPlannerEmployeeAction.Assign)
  43. );
  44. public JobPlannerEmployeeAction Action
  45. {
  46. get => (JobPlannerEmployeeAction)GetValue(ActionProperty);
  47. set => SetValue(ActionProperty, value);
  48. }
  49. public event JobPlannerEmployeeGridAction OnAction;
  50. private BitmapImage _assign = PRSDesktop.Resources.small_add.AsBitmapImage();
  51. private BitmapImage _remove = PRSDesktop.Resources.small_delete.AsBitmapImage();
  52. public JobPlannerEmployeeGrid()
  53. {
  54. ActionColumns.Add(new DynamicImageColumn(EmployeeImage, EmployeeAction) { Position = DynamicActionColumnPosition.Start});
  55. HiddenColumns.Add(x=>x.ID);
  56. }
  57. private bool EmployeeAction(CoreRow? arg)
  58. {
  59. if (arg == null)
  60. OnAction?.Invoke(this, Items.ToArray());
  61. else
  62. OnAction?.Invoke(this, new JobPlannerEmployee[] { arg.ToObject<JobPlannerEmployee>() });
  63. return true;
  64. }
  65. private BitmapImage? EmployeeImage(CoreRow? arg)
  66. {
  67. return Action == JobPlannerEmployeeAction.Assign
  68. ? _assign
  69. : _remove;
  70. }
  71. }
  72. }