|
|
@@ -27,6 +27,17 @@ namespace PRSDesktop
|
|
|
/// </summary>
|
|
|
public partial class StagingManufacturingPacketListItem : UserControl
|
|
|
{
|
|
|
+ public static readonly DependencyProperty CollapsedProperty = DependencyProperty.Register(
|
|
|
+ "Collapsed", typeof(bool), typeof(StagingManufacturingPacketListItem),
|
|
|
+ new FrameworkPropertyMetadata(false, FrameworkPropertyMetadataOptions.None, new PropertyChangedCallback(OnCollapsedChanged)));
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// Height of the uncollapsed stages grid.
|
|
|
+ /// </summary>
|
|
|
+ public static readonly DependencyProperty StagesGridHeightProperty = DependencyProperty.Register(
|
|
|
+ "StagesGridHeight", typeof(double), typeof(StagingManufacturingPacketListItem),
|
|
|
+ new FrameworkPropertyMetadata(200.0));
|
|
|
+
|
|
|
private static BitmapImage collapsedImg = PRSDesktop.Resources.rightarrow.ToBitmapImage();
|
|
|
private static BitmapImage uncollapsedImg = PRSDesktop.Resources.downarrow.ToBitmapImage();
|
|
|
|
|
|
@@ -39,7 +50,17 @@ namespace PRSDesktop
|
|
|
|
|
|
private bool _serialChanged = false;
|
|
|
|
|
|
- public bool Collapsed { get; private set; } = false;
|
|
|
+ public bool Collapsed
|
|
|
+ {
|
|
|
+ get => (bool)GetValue(CollapsedProperty);
|
|
|
+ set => SetValue(CollapsedProperty, value);
|
|
|
+ }
|
|
|
+
|
|
|
+ public double StagesGridHeight
|
|
|
+ {
|
|
|
+ get => (double)GetValue(StagesGridHeightProperty);
|
|
|
+ set => SetValue(StagesGridHeightProperty, value);
|
|
|
+ }
|
|
|
|
|
|
public StagingManufacturingPacketListItem(StagingManufacturingPacket packet)
|
|
|
{
|
|
|
@@ -55,6 +76,8 @@ namespace PRSDesktop
|
|
|
};
|
|
|
StagesGrid.Refresh(true, true);
|
|
|
|
|
|
+ SerialBox.Text = Packet.Serial;
|
|
|
+
|
|
|
StagesContainer.Content = StagesGrid;
|
|
|
|
|
|
if (Collapsed)
|
|
|
@@ -100,7 +123,7 @@ namespace PRSDesktop
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- TemplateButton.Content = $"Template: {Packet.Template.Code}";
|
|
|
+ TemplateButton.Content = $"{Packet.Template.Code}";
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -109,11 +132,15 @@ namespace PRSDesktop
|
|
|
new Client<StagingManufacturingPacket>().Save(Packet, "");
|
|
|
}
|
|
|
|
|
|
- private void UpdateStages()
|
|
|
+ /// <summary>
|
|
|
+ /// Create stages for <paramref name="packet"/> based on its template.
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="packet"></param>
|
|
|
+ public static void CreateStages(StagingManufacturingPacket packet)
|
|
|
{
|
|
|
var stages = new Client<ManufacturingTemplateStage>()
|
|
|
.Query(
|
|
|
- new Filter<ManufacturingTemplateStage>(x => x.Template.ID).IsEqualTo(Packet.Template.ID),
|
|
|
+ new Filter<ManufacturingTemplateStage>(x => x.Template.ID).IsEqualTo(packet.Template.ID),
|
|
|
new Columns<ManufacturingTemplateStage>());
|
|
|
|
|
|
var newStages = stages.ToObjects<ManufacturingTemplateStage>()
|
|
|
@@ -125,14 +152,22 @@ namespace PRSDesktop
|
|
|
SequenceType = x.SequenceType,
|
|
|
Sequence = x.Sequence
|
|
|
};
|
|
|
- stage.Packet.ID = Packet.ID;
|
|
|
+ stage.Packet.ID = packet.ID;
|
|
|
stage.Section.ID = x.Section.ID;
|
|
|
return stage;
|
|
|
}).ToList();
|
|
|
+ new Client<StagingManufacturingPacketStage>().Save(newStages, "");
|
|
|
+ }
|
|
|
|
|
|
+ /// <summary>
|
|
|
+ /// Clear all stages and reload from the template.
|
|
|
+ /// </summary>
|
|
|
+ private void UpdateStages()
|
|
|
+ {
|
|
|
var oldStages = StagesGrid.Data.ToObjects<StagingManufacturingPacketStage>().ToArray();
|
|
|
new Client<StagingManufacturingPacketStage>().Delete(oldStages, "");
|
|
|
- new Client<StagingManufacturingPacketStage>().Save(newStages, "");
|
|
|
+
|
|
|
+ CreateStages(Packet);
|
|
|
|
|
|
StagesGrid.Refresh(false, true);
|
|
|
}
|
|
|
@@ -176,12 +211,12 @@ namespace PRSDesktop
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- public void Collapse()
|
|
|
+ private void Collapse()
|
|
|
{
|
|
|
CollapseButton.Content = new Image { Source = collapsedImg };
|
|
|
OnCollapsed?.Invoke(true);
|
|
|
}
|
|
|
- public void Uncollapse()
|
|
|
+ private void Uncollapse()
|
|
|
{
|
|
|
CollapseButton.Content = new Image { Source = uncollapsedImg };
|
|
|
OnCollapsed?.Invoke(false);
|
|
|
@@ -190,13 +225,19 @@ namespace PRSDesktop
|
|
|
private void CollapseButton_Click(object sender, RoutedEventArgs e)
|
|
|
{
|
|
|
Collapsed = !Collapsed;
|
|
|
- if (Collapsed)
|
|
|
+ }
|
|
|
+
|
|
|
+ private static void OnCollapsedChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
|
|
|
+ {
|
|
|
+ var item = (StagingManufacturingPacketListItem)d;
|
|
|
+ var collapsed = (bool)e.NewValue;
|
|
|
+ if (collapsed)
|
|
|
{
|
|
|
- Collapse();
|
|
|
+ item.Collapse();
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- Uncollapse();
|
|
|
+ item.Uncollapse();
|
|
|
}
|
|
|
}
|
|
|
}
|