SetoutTemplateList.xaml.cs 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197
  1. using System;
  2. using System.Linq;
  3. using System.Windows;
  4. using System.Windows.Controls;
  5. using Comal.Classes;
  6. using InABox.Core;
  7. using PRSDesktop.Utils;
  8. using Syncfusion.Windows.Controls.Grid;
  9. namespace PRSDesktop
  10. {
  11. public class TempateSelectedArgs : EventArgs
  12. {
  13. public FactoryTemplate Template { get; set; }
  14. }
  15. public delegate void TemplateSelectedHandler(object sender, TempateSelectedArgs e);
  16. /// <summary>
  17. /// Interaction logic for SetoutTemplateList.xaml
  18. /// </summary>
  19. public partial class SetoutTemplateList : UserControl
  20. {
  21. private FactorySetup _settings;
  22. public SetoutTemplateList()
  23. {
  24. InitializeComponent();
  25. Templates = new PackableList<FactoryTemplate>();
  26. Grid.Model.ColumnCount = 5;
  27. Grid.Model.ColumnWidths[0] = 0;
  28. Grid.Model.ColumnWidths[1] = 40;
  29. Grid.Model.ColumnWidths[2] = 0;
  30. Grid.Model.ColumnWidths[3] = 100;
  31. Grid.Model.ColumnWidths[4] = 20;
  32. Grid.Model.HeaderColumns = 0;
  33. }
  34. public PackableList<FactoryTemplate> Templates { get; }
  35. public event TemplateSelectedHandler TemplateSelected;
  36. private void SelectTemplate(FactoryTemplate template)
  37. {
  38. //Null check makes sure the main page is attached to the event
  39. if (TemplateSelected != null)
  40. TemplateSelected(this, new TempateSelectedArgs { Template = template });
  41. }
  42. public void Load(FactorySetup settings)
  43. {
  44. _settings = settings;
  45. Templates.Clear();
  46. Templates.AddRange(_settings.Templates.OrderBy(x => x.Code));
  47. Grid.Model.RowCount = 0;
  48. Grid.Model.RowCount = Templates.Count + 2;
  49. }
  50. private void Grid_SizeChanged(object sender, SizeChangedEventArgs e)
  51. {
  52. Grid.Model.ColumnWidths[2] = e.NewSize.Width - 160;
  53. }
  54. private void Grid_QueryCellInfo(object sender, GridQueryCellInfoEventArgs e)
  55. {
  56. try
  57. {
  58. var row = e.Cell.RowIndex - 1;
  59. var col = e.Cell.ColumnIndex;
  60. switch (col)
  61. {
  62. case 0:
  63. if (row == -1)
  64. {
  65. e.Style.CellValue = "ID";
  66. }
  67. else
  68. {
  69. e.Style.CellType = "Static";
  70. e.Style.CellValue = row < Templates.Count ? Templates[row].ID : Guid.Empty;
  71. }
  72. e.Style.VerticalAlignment = VerticalAlignment.Center;
  73. break;
  74. case 1:
  75. if (row == -1)
  76. e.Style.CellValue = "Code";
  77. else
  78. e.Style.CellValue = row < Templates.Count ? Templates[row].Code : "";
  79. e.Style.VerticalAlignment = VerticalAlignment.Center;
  80. break;
  81. case 2:
  82. if (row == -1)
  83. e.Style.CellValue = "Template Name";
  84. else
  85. e.Style.CellValue = row < Templates.Count ? Templates[row].Name : "Add new..";
  86. e.Style.VerticalAlignment = VerticalAlignment.Center;
  87. break;
  88. case 3:
  89. if (row == -1)
  90. {
  91. e.Style.CellValue = "Group";
  92. }
  93. else
  94. {
  95. e.Style.CellType = "ComboBox";
  96. e.Style.ItemsSource = _settings.Groups.Select(x => new { ID = x.Group, Name = x.Group }).ToList();
  97. e.Style.DropDownStyle = GridDropDownStyle.AutoComplete;
  98. e.Style.DisplayMember = "Name";
  99. e.Style.ValueMember = "ID";
  100. e.Style.CellValue = row < Templates.Count ? Templates[row].Group : "Add new..";
  101. }
  102. e.Style.VerticalAlignment = VerticalAlignment.Center;
  103. break;
  104. case 4:
  105. if (row < Templates.Count)
  106. GridUtils.SetButtonImage(e.Style, PRSDesktop.Resources.delete, Grid.Model, col);
  107. else
  108. GridUtils.SetButtonImage(e.Style, null, Grid.Model, col);
  109. break;
  110. }
  111. }
  112. catch (Exception err)
  113. {
  114. Logger.Send(LogType.Error, "", string.Format("*** Unknown Error: {0}\n{1}", err.Message, err.StackTrace));
  115. }
  116. }
  117. private void Grid_CommitCellInfo(object sender, GridCommitCellInfoEventArgs e)
  118. {
  119. if (e.Cell.ColumnIndex == 1 || e.Cell.ColumnIndex == 2 || e.Cell.ColumnIndex == 3)
  120. {
  121. FactoryTemplate template = null;
  122. if (e.Style.RowIndex > Templates.Count)
  123. {
  124. template = new FactoryTemplate { ID = Guid.NewGuid() };
  125. foreach (var section in _settings.Sections)
  126. template.Stages.Add(
  127. new StageTemplate
  128. {
  129. SectionID = section.ID,
  130. Sequence = SequenceType.Link,
  131. Minutes = 0,
  132. QualityChecks = section.QualityChecks
  133. }
  134. );
  135. Templates.Add(template);
  136. }
  137. else
  138. {
  139. template = Templates[e.Style.RowIndex - 1];
  140. }
  141. if (e.Cell.ColumnIndex == 1)
  142. template.Code = e.Style.CellValue.ToString();
  143. else if (e.Cell.ColumnIndex == 2)
  144. template.Name = e.Style.CellValue.ToString();
  145. else if (e.Cell.ColumnIndex == 3)
  146. template.Group = e.Style.CellValue.ToString();
  147. Grid.Model.RowCount = 0;
  148. Grid.Model.RowCount = Templates.Count + 2;
  149. }
  150. }
  151. private void Grid_CellClick(object sender, GridCellClickEventArgs e)
  152. {
  153. var row = e.RowIndex - 1;
  154. if (row > -1 && row < Templates.Count)
  155. {
  156. var document = Templates[row];
  157. if (e.ColumnIndex == 4)
  158. {
  159. Templates.Remove(document);
  160. e.Handled = true;
  161. }
  162. }
  163. if (e.Handled)
  164. {
  165. Grid.Model.RowCount = 0;
  166. Grid.Model.RowCount = Templates.Count + 2;
  167. }
  168. if (row > -1 && row < Templates.Count)
  169. SelectTemplate(Templates[row]);
  170. else
  171. SelectTemplate(null);
  172. }
  173. }
  174. }