123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Windows;
- using System.Windows.Controls;
- using Comal.Classes;
- using InABox.Configuration;
- using InABox.Core;
- using InABox.DynamicGrid;
- using InABox.WPF;
- using PRSDesktop.Utils;
- using Syncfusion.Windows.Controls.Grid;
- namespace PRSDesktop
- {
- /// <summary>
- /// Interaction logic for SetoutStagesPanel.xaml
- /// </summary>
- public partial class SetoutStagesPanel : UserControl
- {
- private readonly List<IStageTemplate> _stages = new();
- private Type _type;
- private FactorySetup settings;
- public SetoutStagesPanel()
- {
- InitializeComponent();
- Grid.Model.RowCount = 1;
- Grid.Model.ColumnCount = 7;
- Grid.Model.ColumnWidths[0] = 20;
- Grid.Model.ColumnWidths[1] = 20;
- Grid.Model.ColumnWidths[2] = Grid.ActualWidth - 150;
- Grid.Model.ColumnWidths[3] = 50;
- Grid.Model.ColumnWidths[4] = 20;
- Grid.Model.ColumnWidths[5] = 20;
- Grid.Model.ColumnWidths[6] = 20;
- Grid.Model.HeaderColumns = 0;
- }
- private IStageTemplate CreateStage()
- {
- return (IStageTemplate)Activator.CreateInstance(_type);
- }
- public IList<T> GetStages<T>() where T : IStageTemplate
- {
- var result = new List<T>();
- foreach (var stage in _stages)
- result.Add((T)stage);
- return result;
- }
- public void SetStages<T>(IList<T> stages) where T : IStageTemplate
- {
- settings = new GlobalConfiguration<FactorySetup>().Load();
- _stages.Clear();
- foreach (IStageTemplate stage in stages)
- _stages.Add(stage);
- _type = typeof(T);
- Grid.Model.RowCount = 0;
- Grid.Model.RowCount = _stages.Count + 2;
- }
- private void Grid_SizeChanged(object sender, SizeChangedEventArgs e)
- {
- Grid.Model.ColumnWidths[2] = e.NewSize.Width - 150;
- }
- private void Grid_QueryCellInfo(object sender, GridQueryCellInfoEventArgs e)
- {
- try
- {
- var row = e.Cell.RowIndex - 1;
- var col = e.Cell.ColumnIndex;
- switch (col)
- {
- case 0:
- if (row != 0 && row < _stages.Count)
- GridUtils.SetButtonImage(e.Style, PRSDesktop.Resources.uparrow, Grid.Model, col);
- else
- GridUtils.SetButtonImage(e.Style, null, Grid.Model, col);
- break;
- case 1:
- if (row < _stages.Count - 1)
- GridUtils.SetButtonImage(e.Style, PRSDesktop.Resources.downarrow, Grid.Model, col);
- else
- GridUtils.SetButtonImage(e.Style, null, Grid.Model, col);
- break;
- case 2:
- if (row == -1)
- {
- e.Style.CellValue = "Section Name";
- }
- else
- {
- e.Style.CellType = "ComboBox";
- var sections = new List<FactorySection>();
- sections.AddRange(settings.Sections);
- if (row == _stages.Count)
- sections.Add(new FactorySection { ID = Guid.Empty, Name = "Add new..", Stations = 0 });
- e.Style.ItemsSource = sections
- .Select(x => new { x.ID, Name = !string.IsNullOrEmpty(x.Group) ? x.Group + " : " + x.Name : x.Name }).ToList();
- e.Style.DropDownStyle = GridDropDownStyle.AutoComplete;
- e.Style.DisplayMember = "Name";
- e.Style.ValueMember = "ID";
- e.Style.CellValue = row < _stages.Count ? _stages[row].SectionID : Guid.Empty;
- }
- e.Style.VerticalAlignment = VerticalAlignment.Center;
- break;
- case 3:
- e.Style.CellValue = row == -1 ? "Time" : row < _stages.Count ? _stages[row].Minutes.ToString() : "";
- e.Style.HorizontalAlignment = HorizontalAlignment.Center;
- e.Style.VerticalAlignment = VerticalAlignment.Center;
- break;
- case 4:
- if (row == -1)
- {
- GridUtils.SetButtonImage(e.Style, PRSDesktop.Resources.quality, Grid.Model, col);
- }
- else if (row < _stages.Count)
- {
- if (!string.IsNullOrWhiteSpace(_stages[row].QualityChecks))
- GridUtils.SetButtonImage(e.Style, PRSDesktop.Resources.quality, Grid.Model, col);
- else
- GridUtils.SetButtonImage(e.Style, PRSDesktop.Resources.quality.AsGrayScale(), Grid.Model, col);
- }
- else
- {
- GridUtils.SetButtonImage(e.Style, null, Grid.Model, col);
- }
- break;
- case 5:
- if (row == -1)
- {
- GridUtils.SetButtonImage(e.Style, PRSDesktop.Resources.link, Grid.Model, col);
- }
- else if (row < _stages.Count)
- {
- if (_stages[row].Sequence == SequenceType.Consolidate)
- GridUtils.SetButtonImage(e.Style, PRSDesktop.Resources.milestone, Grid.Model, col);
- else if (_stages[row].Sequence == SequenceType.Link)
- GridUtils.SetButtonImage(e.Style, PRSDesktop.Resources.link, Grid.Model, col);
- else
- GridUtils.SetButtonImage(e.Style, null, Grid.Model, col);
- }
- else
- {
- GridUtils.SetButtonImage(e.Style, null, Grid.Model, col);
- }
- break;
- case 6:
- if (row < _stages.Count)
- GridUtils.SetButtonImage(e.Style, PRSDesktop.Resources.delete, Grid.Model, col);
- else
- GridUtils.SetButtonImage(e.Style, null, Grid.Model, col);
- break;
- }
- }
- catch (Exception err)
- {
- Logger.Send(LogType.Error, "", string.Format("*** Unknown Error: {0}\n{1}", err.Message, err.StackTrace));
- }
- }
- private void Grid_CommitCellInfo(object sender, GridCommitCellInfoEventArgs e)
- {
- IStageTemplate stage;
- if (e.Style.RowIndex > _stages.Count)
- {
- stage = CreateStage();
- stage.Sequence = SequenceType.Link;
- _stages.Add(stage);
- }
- else
- {
- stage = _stages[e.Style.RowIndex - 1];
- }
- switch (e.Cell.ColumnIndex)
- {
- case 2:
- stage.SectionID = (Guid)e.Style.CellValue;
- break;
- case 3:
- stage.Minutes = Convert.ToInt32(e.Style.CellValue.ToString());
- break;
- }
- Grid.Model.RowCount = 0;
- Grid.Model.RowCount = _stages.Count + 2;
- }
- private void Grid_CellClick(object sender, GridCellClickEventArgs e)
- {
- var row = e.RowIndex - 1;
- if (row > -1 && row < _stages.Count)
- {
- var stage = _stages[row];
- switch (e.ColumnIndex)
- {
- case 0:
- if (row > 0)
- {
- _stages.Remove(stage);
- _stages.Insert(row - 1, stage);
- e.Handled = true;
- }
- break;
- case 1:
- if (e.RowIndex < settings.Sections.Count - 1)
- {
- _stages.Remove(stage);
- _stages.Insert(row + 1, stage);
- e.Handled = true;
- }
- break;
- case 4:
- var form = new NotesForm
- {
- Caption = "Please enter the Quality Checks to be performed before starting work on this stage",
- Text = _stages[row].QualityChecks
- };
- if (form.ShowDialog() == true)
- _stages[row].QualityChecks = form.Text;
- e.Handled = true;
- break;
- case 5:
- switch (_stages[row].Sequence)
- {
- case SequenceType.None:
- _stages[row].Sequence = SequenceType.Link;
- break;
- case SequenceType.Link:
- _stages[row].Sequence = SequenceType.Consolidate;
- break;
- case SequenceType.Consolidate:
- _stages[row].Sequence = SequenceType.None;
- break;
- }
- e.Handled = true;
- break;
- case 6:
- _stages.Remove(stage);
- e.Handled = true;
- break;
- }
- if (e.Handled)
- {
- Grid.Model.RowCount = 0;
- Grid.Model.RowCount = _stages.Count + 2;
- }
- }
- }
- }
- }
|