|
@@ -67,15 +67,26 @@ namespace PRSDesktop
|
|
|
|
|
|
public static readonly DependencyProperty IsEditableProperty = DependencyProperty.Register(
|
|
|
nameof(IsEditable), typeof(bool), typeof(StagingManufacturingPacketListItem),
|
|
|
- new FrameworkPropertyMetadata(false, FrameworkPropertyMetadataOptions.None));
|
|
|
-
|
|
|
+ new FrameworkPropertyMetadata(false, FrameworkPropertyMetadataOptions.None, new PropertyChangedCallback(IsEditableChanged)));
|
|
|
+
|
|
|
+ private static void IsEditableChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
|
|
|
+ {
|
|
|
+ if(d is StagingManufacturingPacketListItem item)
|
|
|
+ {
|
|
|
+ var editable = (bool)e.NewValue;
|
|
|
+ item.StagesGrid.ReadOnly = !editable;
|
|
|
+ item.TreatmentGrid.ReadOnly = !editable;
|
|
|
+ item.ComponentGrid.ReadOnly = !editable;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
public bool IsEditable
|
|
|
{
|
|
|
get => (bool)GetValue(IsEditableProperty);
|
|
|
set => SetValue(IsEditableProperty, value);
|
|
|
}
|
|
|
|
|
|
- public StagingManufacturingPacketListItem(StagingManufacturingPacket packet, bool collapsed)
|
|
|
+ public StagingManufacturingPacketListItem(StagingManufacturingPacket packet, QueryMultipleResults? results, bool collapsed)
|
|
|
{
|
|
|
Packet = packet;
|
|
|
Packet.PropertyChanged += (sender, args) =>
|
|
@@ -89,10 +100,18 @@ namespace PRSDesktop
|
|
|
|
|
|
UpdateTemplateButton();
|
|
|
|
|
|
- StagesGrid.Packet = Packet;
|
|
|
- ComponentGrid.Packet = Packet;
|
|
|
- TreatmentGrid.Packet = Packet;
|
|
|
-
|
|
|
+ StagesGrid.Refresh(true, false);
|
|
|
+ ComponentGrid.Refresh(true, false);
|
|
|
+ TreatmentGrid.Refresh(true, false);
|
|
|
+
|
|
|
+ StagesGrid.InitialiseData(packet, results?.Get<StagingManufacturingPacketStage>());
|
|
|
+ ComponentGrid.InitialiseData(packet, results?.Get<StagingManufacturingPacketComponent>());
|
|
|
+ TreatmentGrid.InitialiseData(packet, results?.Get<StagingManufacturingPacketTreatment>());
|
|
|
+
|
|
|
+ StagesGrid.Refresh(false, true);
|
|
|
+ ComponentGrid.Refresh(false, true);
|
|
|
+ TreatmentGrid.Refresh(false, true);
|
|
|
+
|
|
|
ITPCode.Text = Packet.ITP.Code;
|
|
|
ITPDescription.Text = Packet.ITP.Description;
|
|
|
_itpChanged = false;
|
|
@@ -104,6 +123,58 @@ namespace PRSDesktop
|
|
|
IsEditable = packet.ManufacturingPacket.ID == Guid.Empty;
|
|
|
}
|
|
|
|
|
|
+ // TODO: This sucks
|
|
|
+ private static StagingManufacturingPacketComponentGrid? componentColumnsGrid;
|
|
|
+ private static StagingManufacturingPacketTreatmentGrid? treatmentColumnsGrid;
|
|
|
+ private static StagingManufacturingPacketStageGrid? stageColumnsGrid;
|
|
|
+
|
|
|
+ public static IEnumerable<IKeyedQueryDef> GetQueries(StagingSetout setout)
|
|
|
+ {
|
|
|
+ var packetFilter = new Filter<StagingManufacturingPacket>(x => x.StagingSetout.ID).IsEqualTo(setout.ID);
|
|
|
+ yield return new KeyedQueryDef<StagingManufacturingPacket>(
|
|
|
+ packetFilter,
|
|
|
+ DynamicGridUtils.LoadEditorColumns(
|
|
|
+ new Columns<StagingManufacturingPacket>(x => x.ID)
|
|
|
+ .Add(x => x.Serial)
|
|
|
+ .Add(x => x.Title)
|
|
|
+ .Add(x => x.Quantity)
|
|
|
+ .Add(x => x.BarcodeQuantity)
|
|
|
+ .Add(x => x.Watermark)
|
|
|
+ .Add(x => x.Location)
|
|
|
+ .Add(x => x.ITP.ID)
|
|
|
+ .Add(x => x.ITP.Code)
|
|
|
+ .Add(x => x.ITP.Description)
|
|
|
+ .Add(x => x.Job.ID)
|
|
|
+ .Add(x => x.Group.ID)
|
|
|
+ .Add(x => x.Group.Code)
|
|
|
+ .Add(x => x.Group.Description)
|
|
|
+ .Add(x => x.Group.Watermark)
|
|
|
+ .Add(x => x.Template.ID)
|
|
|
+ .Add(x => x.Template.Code)
|
|
|
+ .Add(x => x.ManufacturingPacket.ID)));
|
|
|
+
|
|
|
+ stageColumnsGrid ??= new StagingManufacturingPacketStageGrid();
|
|
|
+ stageColumnsGrid.Refresh(true, false);
|
|
|
+
|
|
|
+ yield return new KeyedQueryDef<StagingManufacturingPacketStage>(
|
|
|
+ new Filter<StagingManufacturingPacketStage>(x => x.Packet.ID).InQuery(packetFilter, x => x.ID),
|
|
|
+ stageColumnsGrid.DataColumns());
|
|
|
+
|
|
|
+ componentColumnsGrid ??= new StagingManufacturingPacketComponentGrid();
|
|
|
+ componentColumnsGrid.Refresh(true, false);
|
|
|
+
|
|
|
+ yield return new KeyedQueryDef<StagingManufacturingPacketComponent>(
|
|
|
+ new Filter<StagingManufacturingPacketComponent>(x => x.Packet.ID).InQuery(packetFilter, x => x.ID),
|
|
|
+ componentColumnsGrid.DataColumns());
|
|
|
+
|
|
|
+ treatmentColumnsGrid ??= new StagingManufacturingPacketTreatmentGrid();
|
|
|
+ treatmentColumnsGrid.Refresh(true, false);
|
|
|
+
|
|
|
+ yield return new KeyedQueryDef<StagingManufacturingPacketTreatment>(
|
|
|
+ new Filter<StagingManufacturingPacketTreatment>(x => x.Packet.ID).InQuery(packetFilter, x => x.ID),
|
|
|
+ treatmentColumnsGrid.DataColumns());
|
|
|
+ }
|
|
|
+
|
|
|
private void EditButton_Click(object sender, RoutedEventArgs e)
|
|
|
{
|
|
|
var grid = DynamicGridUtils.CreateDynamicGrid(typeof(DynamicDataGrid<>), typeof(StagingManufacturingPacket));
|