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.Clients;
  13. using InABox.Configuration;
  14. using InABox.Core;
  15. using InABox.DynamicGrid;
  16. using InABox.WPF;
  17. using Microsoft.Win32;
  18. using Syncfusion.Windows.Shared;
  19. namespace PRSDesktop
  20. {
  21. public class JobPlannerEmployee : BaseObject
  22. {
  23. public Guid ID { get; set; }
  24. [TextBoxEditor(Visible = Visible.Default)]
  25. [EditorSequence(1)]
  26. public String Name { get; set; }
  27. [DurationEditor(Visible=Visible.Default, Format = "hh:mm", Width=50)]
  28. [EditorSequence(2)]
  29. public TimeSpan Time { get; set; }
  30. }
  31. public enum JobPlannerEmployeeAction
  32. {
  33. Assign,
  34. Remove
  35. }
  36. public delegate void JobPlannerEmployeeGridAction(object sender, JobPlannerEmployee[] employee);
  37. public class JobPlannerEmployeeGrid : DynamicItemsListGrid<JobPlannerEmployee>
  38. {
  39. public static readonly DependencyProperty ActionProperty = DependencyProperty.Register(
  40. nameof (Action),
  41. typeof (JobPlannerEmployeeAction),
  42. typeof (JobPlannerEmployeeGrid),
  43. new PropertyMetadata(JobPlannerEmployeeAction.Assign)
  44. );
  45. public JobPlannerEmployeeAction Action
  46. {
  47. get => (JobPlannerEmployeeAction)GetValue(ActionProperty);
  48. set => SetValue(ActionProperty, value);
  49. }
  50. public event JobPlannerEmployeeGridAction OnAction;
  51. private BitmapImage _assign = PRSDesktop.Resources.small_add.AsBitmapImage();
  52. private BitmapImage _remove = PRSDesktop.Resources.small_delete.AsBitmapImage();
  53. public JobPlannerEmployeeGrid()
  54. {
  55. ActionColumns.Add(new DynamicImageColumn(EmployeeImage, EmployeeAction) { Position = DynamicActionColumnPosition.Start});
  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. }