| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Threading;
- using Comal.Classes;
- using InABox.Clients;
- using InABox.Core;
- using InABox.DynamicGrid;
- using InABox.WPF;
- namespace PRSDesktop;
- public class FactoryComponentsGrid : DynamicDataGrid<ManufacturingPacketComponent>
- {
- private ManufacturingPacket? _currentPacket;
- public ManufacturingPacket? CurrentPacket
- {
- get => _currentPacket;
- set
- {
- _currentPacket = value;
- Refresh(false,true);
- }
- }
- protected override void Init()
- {
- base.Init();
- HiddenColumns.Add(x=>x.Consumed);
- ActionColumns.Add(
- new DynamicTickColumn<ManufacturingPacketComponent,int>(
- x=>x.Consumed,
- PRSDesktop.Resources.tick.AsBitmapImage(),
- PRSDesktop.Resources.tick.AsBitmapImage(),
- null,
- ConsumeItem)
- {
- Position = DynamicActionColumnPosition.Start
- });
- }
- private bool ConsumeItem(CoreRow? row)
- {
- var rows = row == null ? Data.Rows : [row];
- Dictionary<ManufacturingPacketComponent,CoreRow> map = new Dictionary<ManufacturingPacketComponent, CoreRow>(
- rows.Select(r => new KeyValuePair<ManufacturingPacketComponent, CoreRow>(r.ToObject<ManufacturingPacketComponent>(), r)));
-
-
- if (map.Keys.Any(x => x.Consumed == 0))
- foreach (var packet in map.Keys)
- packet.Consumed = packet.Quantity;
- else
- foreach (var packet in map.Keys)
- packet.Consumed = 0;
- foreach (var key in map.Keys.Where(x => x.IsChanged()))
- {
- map[key].Set<ManufacturingPacketComponent, int>(x => x.Consumed, key.Consumed);
- InvalidateRow(map[key]);
- }
- Client.Save(map.Keys.Where(x => x.IsChanged()), "Updated from Factory Floor Screen", (o, e) => { });
-
- return false;
- }
- public override DynamicGridColumns GenerateColumns()
- {
- var result = new DynamicGridColumns();
- result.Add<ManufacturingPacketComponent>(x=>x.Product.Code, 100);
- result.Add<ManufacturingPacketComponent>(x => x.Product.Name, 0);
- result.Add<ManufacturingPacketComponent>(x => x.Dimensions.UnitSize, 70);
- result.Add<ManufacturingPacketComponent>(x => x.Quantity, 60);
- return result;
- }
- protected override void DoReconfigure(DynamicGridOptions options)
- {
- base.DoReconfigure(options);
- options.Clear();
- options.SelectColumns = true;
- options.FilterRows = true;
- options.HideDatabaseFilters = true;
- }
- protected override void Reload(Filters<ManufacturingPacketComponent> criteria, Columns<ManufacturingPacketComponent> columns, ref SortOrder<ManufacturingPacketComponent>? sort, CancellationToken token, Action<CoreTable?, Exception?> action)
- {
- var filter = _currentPacket == null
- ? new Filter<ManufacturingPacketComponent>().None()
- : new Filter<ManufacturingPacketComponent>(x => x.Packet.ID).IsEqualTo(_currentPacket.ID);
- criteria.Add(filter);
- base.Reload(criteria, columns, ref sort, token, action);
- }
- }
|