123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147 |
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Linq;
- using System.Windows.Controls;
- using System.Windows.Threading;
- using Comal.Classes;
- using InABox.Core;
- using InABox.DynamicGrid;
- namespace PRSDesktop;
- public partial class JobScopePanel : UserControl, IPanel<JobScope>, IJobControl
- {
-
- private enum PageIndex
- {
- RequisitionItems = 00,
- ManufacturingPackets,
- DeliveryItems,
- Assignments,
- Documents,
- Tasks,
- Forms,
- }
-
- private int _currentPage = -1;
-
- private JobScopeRequisitionItemGrid? _requisitionItemsGrid;
- private JobScopeAssignmentGrid? _assignmentGrid;
- private JobScopeDocumentGrid? _documentGrid;
- private JobScopeKanbanGrid? _kanbanGrid;
- private JobScopeFormGrid? _formGrid;
- public JobScopePanel()
- {
- InitializeComponent();
-
- }
-
- public Job Job
- {
- get => _scopes.Job;
- set
- {
- _scopes.Job = value;
- }
- }
- public JobPanelSettings Settings { get; set; }
- public bool IsReady { get; set; }
- public event DataModelUpdateEvent? OnUpdateDataModel;
- public void CreateToolbarButtons(IPanelHost host)
- {
- }
- public void Setup()
- {
- _scopes.Refresh(true, false);
- }
- public void Shutdown(CancelEventArgs? cancel)
- {
- }
- public void Refresh()
- {
- _scopes.Refresh(false, true);
- RefreshPage();
- }
-
- private void RefreshPage()
- {
- var scope = _scopes.SelectedRows.FirstOrDefault()?.ToObject<JobScope>();
- var page = (PageIndex)_pages.SelectedIndex;
- switch (page)
- {
- case PageIndex.RequisitionItems :
- RefreshGrid(_requisitionItems, ref _requisitionItemsGrid, scope);
- break;
- case PageIndex.ManufacturingPackets :
- break;
- case PageIndex.DeliveryItems :
- break;
- case PageIndex.Assignments :
- RefreshGrid(_assignments, ref _assignmentGrid, scope);
- break;
- case PageIndex.Documents:
- RefreshGrid(_documents, ref _documentGrid, scope);
- break;
- case PageIndex.Tasks:
- RefreshGrid(_kanbans, ref _kanbanGrid, scope);
- break;
- case PageIndex.Forms:
- RefreshGrid(_forms, ref _formGrid, scope, () => new JobScopeFormGrid(Job));
- break;
- }
- }
- public string SectionName => "Job Scopes";
- public DataModel DataModel(Selection selection)
- {
- var ids = _scopes.ExtractValues(x => x.ID, selection).ToArray();
- return new AutoDataModel<JobScope>(new Filter<JobScope>(c => c.ID).InList(ids));
- }
- public Dictionary<string, object[]> Selected()
- {
- return new Dictionary<string, object[]> { { typeof(JobScope).EntityName(), _scopes.Data.Rows.ToArray<object>() } };
- }
- public void Heartbeat(TimeSpan time)
- {
- }
- private void _scopes_OnSelectItem(object sender, DynamicGridSelectionEventArgs e)
- {
- RefreshPage();
- }
- private void RefreshGrid<T>(TabItem container, ref T? grid, JobScope? scope) where T : IDynamicGrid, IJobScopeGrid, new() =>
- RefreshGrid(container, ref grid, scope, () => new T());
- private void RefreshGrid<T>(TabItem container, ref T? grid, JobScope? scope, Func<T> newGrid)
- where T : IDynamicGrid, IJobScopeGrid
- {
- var bInitialised = grid != null;
- if (!bInitialised)
- {
- grid = newGrid();
- container.Content = grid;
- }
- grid.Scope = scope;
- grid.Refresh(!bInitialised, true);
- }
- private void _pages_OnSelectionChanged(object sender, SelectionChangedEventArgs e)
- {
- RefreshPage();
- }
- }
|