diff options
| author | Roy Ben-Shabat <Roy@Twine-s.com> | 2018-01-31 19:39:18 +0200 |
|---|---|---|
| committer | Roy Ben-Shabat <Roy@Twine-s.com> | 2018-01-31 19:39:18 +0200 |
| commit | 62a1005488e04d8db62be5ef252328d34e1aec0f (patch) | |
| tree | 5e7bb6b2d706b13f04e822b79512785dd1555b0e /Software | |
| parent | fcbc4e2fad831e0e9bc972df86d155311f9f83a4 (diff) | |
| download | Tango-62a1005488e04d8db62be5ef252328d34e1aec0f.tar.gz Tango-62a1005488e04d8db62be5ef252328d34e1aec0f.zip | |
Added FormulaCalculatorBase.
Added Indexing for JOBS and SEGMENTS tables.
Started working on "Running Job"...
Diffstat (limited to 'Software')
29 files changed, 1451 insertions, 1260 deletions
diff --git a/Software/DB/Tango.mdf b/Software/DB/Tango.mdf Binary files differindex 443efa294..4d1c04124 100644 --- a/Software/DB/Tango.mdf +++ b/Software/DB/Tango.mdf diff --git a/Software/DB/Tango_log.ldf b/Software/DB/Tango_log.ldf Binary files differindex 406b62f56..c6ee41459 100644 --- a/Software/DB/Tango_log.ldf +++ b/Software/DB/Tango_log.ldf diff --git a/Software/Graphics/White-Background.jpg b/Software/Graphics/White-Background.jpg Binary files differnew file mode 100644 index 000000000..3810e060f --- /dev/null +++ b/Software/Graphics/White-Background.jpg diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/Images/White-Background.jpg b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/Images/White-Background.jpg Binary files differnew file mode 100644 index 000000000..3810e060f --- /dev/null +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/Images/White-Background.jpg diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/Tango.MachineStudio.Developer.csproj b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/Tango.MachineStudio.Developer.csproj index 3a753dedc..b58908048 100644 --- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/Tango.MachineStudio.Developer.csproj +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/Tango.MachineStudio.Developer.csproj @@ -222,5 +222,8 @@ <ItemGroup> <Resource Include="Images\colorspace.png" /> </ItemGroup> + <ItemGroup> + <Resource Include="Images\White-Background.jpg" /> + </ItemGroup> <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> </Project>
\ No newline at end of file diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/ViewModels/MainViewVM.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/ViewModels/MainViewVM.cs index 8fbce16a3..85febd0f1 100644 --- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/ViewModels/MainViewVM.cs +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/ViewModels/MainViewVM.cs @@ -14,6 +14,7 @@ using Tango.MachineStudio.Common.Controls; using Tango.MachineStudio.Common.Notifications; using Tango.MachineStudio.Common.StudioApplication; using Tango.SharedUI; +using System.Runtime.CompilerServices; namespace Tango.MachineStudio.Developer.ViewModels { @@ -201,6 +202,14 @@ namespace Tango.MachineStudio.Developer.ViewModels set { _estimatedDuration = value; RaisePropertyChangedAuto(); } } + private bool _isJobRunning; + + public bool IsJobRunning + { + get { return _isJobRunning; } + set { _isJobRunning = value; RaisePropertyChangedAuto(); } + } + #endregion #region Commands @@ -265,6 +274,11 @@ namespace Tango.MachineStudio.Developer.ViewModels /// </summary> public RelayCommand SaveJobsCommand { get; set; } + /// <summary> + /// Gets or sets the start job command. + /// </summary> + public RelayCommand StartJobCommand { get; set; } + #endregion #region Constructors @@ -294,19 +308,22 @@ namespace Tango.MachineStudio.Developer.ViewModels public MainViewVM(IStudioApplicationManager applicationManager, INotificationProvider notificationProvider) : this() { _notification = notificationProvider; - EditMachineCommand = new RelayCommand(EditMachine, (x) => SelectedMachine != null); ApplicationManager = applicationManager; - EditRMLCommand = new RelayCommand(EditRML, (x) => SelectedRML != null); + + //Initialize Commands... + EditMachineCommand = new RelayCommand(EditMachine, () => SelectedMachine != null); + EditRMLCommand = new RelayCommand(EditRML, () => SelectedRML != null); ToggleSideBarCommand = new RelayCommand(() => IsSideBarOpened = !IsSideBarOpened); - SaveProcessParametersCommand = new RelayCommand(SaveProcessParameters); - SaveLiquidFactorsCommand = new RelayCommand(SaveLiquidFactors); - AddSegmentCommand = new RelayCommand(AddSegment); - RemoveSegmentCommand = new RelayCommand(RemoveSegment); - AddJobCommand = new RelayCommand(AddJob); - RemoveJobCommand = new RelayCommand(RemoveJob); - AddBrushStopCommand = new RelayCommand(AddBrushStop); - RemoveBrushStopCommand = new RelayCommand(RemoveBrushStop); - SaveJobsCommand = new RelayCommand(SaveJobs); + SaveProcessParametersCommand = new RelayCommand(SaveProcessParameters, () => SelectedRML != null && SelectedRML.ProcessParametersTablesGroups.Count > 0); + SaveLiquidFactorsCommand = new RelayCommand(SaveLiquidFactors, () => SelectedRML != null); + AddSegmentCommand = new RelayCommand(AddSegment, () => SelectedJob != null); + RemoveSegmentCommand = new RelayCommand(RemoveSegment, () => SelectedSegment != null); + AddJobCommand = new RelayCommand(AddJob, () => SelectedMachine != null); + RemoveJobCommand = new RelayCommand(RemoveJob, () => SelectedJob != null); + AddBrushStopCommand = new RelayCommand(AddBrushStop, () => SelectedSegment != null); + RemoveBrushStopCommand = new RelayCommand(RemoveBrushStop, () => SelectedBrushStop != null); + SaveJobsCommand = new RelayCommand(SaveJobs, () => SelectedMachine != null); + StartJobCommand = new RelayCommand(StartJob, () => SelectedJob != null && !IsJobRunning); } #endregion @@ -328,7 +345,7 @@ namespace Tango.MachineStudio.Developer.ViewModels UpdateEstimatedDuration(); } - private void SelectedProcessParametersTable_DyeingSpeedChanged(object sender, EventArgs e) + private void SelectedProcessParametersTable_DyeingSpeedMinInkUptakeChanged(object sender, EventArgs e) { if (SelectedSegment != null) { @@ -347,6 +364,12 @@ namespace Tango.MachineStudio.Developer.ViewModels protected virtual void OnSelectedParametersTableChanged() { + if (SelectedProcessParametersTable != null) + { + SelectedProcessParametersTable.DyeingSpeedMinInkUptakeChanged -= SelectedProcessParametersTable_DyeingSpeedMinInkUptakeChanged; + SelectedProcessParametersTable.DyeingSpeedMinInkUptakeChanged += SelectedProcessParametersTable_DyeingSpeedMinInkUptakeChanged; + } + SetSegmentBrushStopsLiquidVolumes(SelectedSegment); } @@ -359,9 +382,6 @@ namespace Tango.MachineStudio.Developer.ViewModels if (RmlProcessParametersTableGroup != null && RmlProcessParametersTableGroup.ProcessParametersTables.Count > 0) { SelectedProcessParametersTable = RmlProcessParametersTableGroup.ProcessParametersTables.First(); - - SelectedProcessParametersTable.DyeingSpeedChanged -= SelectedProcessParametersTable_DyeingSpeedChanged; - SelectedProcessParametersTable.DyeingSpeedChanged += SelectedProcessParametersTable_DyeingSpeedChanged; } UpdateEstimatedDuration(); @@ -418,6 +438,11 @@ namespace Tango.MachineStudio.Developer.ViewModels #region Private Methods + private void StartJob() + { + IsJobRunning = true; + } + private async void SaveJobs() { if (SelectedMachine != null) @@ -625,6 +650,17 @@ namespace Tango.MachineStudio.Developer.ViewModels #endregion + #region Override Methods + + protected override void RaisePropertyChangedAuto([CallerMemberName] string caller = null) + { + base.RaisePropertyChangedAuto(caller); + + InvalidateRelayCommands(); + } + + #endregion + #region Public Events /// <summary> diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/Views/MainView.xaml b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/Views/MainView.xaml index 284ffe925..a1b607b8b 100644 --- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/Views/MainView.xaml +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/Views/MainView.xaml @@ -43,7 +43,7 @@ <localConverters:SegmentToBrushConverter x:Key="SegmentToBrushConverter" /> <localConverters:SegmentToBrushConverterMulti x:Key="SegmentToBrushConverterMulti" /> - <SolidColorBrush x:Key="SideBarBackground" Color="#F9F9F9"> + <SolidColorBrush x:Key="SideBarBackground" Color="White"> </SolidColorBrush> @@ -130,7 +130,7 @@ <Style TargetType="Border" x:Key="JobFieldBorder"> <Setter Property="BorderBrush" Value="{StaticResource SideBarBackground}"></Setter> - <Setter Property="BorderThickness" Value="1"></Setter> + <Setter Property="BorderThickness" Value="0"></Setter> <Setter Property="CornerRadius" Value="100 10 100 0"></Setter> <Setter Property="Padding" Value="10 5"></Setter> <Setter Property="Margin" Value="0 0 10 0"></Setter> @@ -158,926 +158,1176 @@ </UserControl.Resources> <Grid> - <Grid> - <Grid.ColumnDefinitions> - <ColumnDefinition Width="Auto"/> - <ColumnDefinition Width="1*"/> - </Grid.ColumnDefinitions> + <Grid.RowDefinitions> + <RowDefinition Height="Auto"/> + <RowDefinition Height="1*"/> + </Grid.RowDefinitions> - <Grid Grid.Column="1"> - <Grid.RowDefinitions> - <RowDefinition Height="Auto"/> - <RowDefinition Height="1*"/> - </Grid.RowDefinitions> + <Grid> + <Grid.Style> + <Style TargetType="Grid"> + <Setter Property="LayoutTransform"> + <Setter.Value> + <ScaleTransform ScaleX="1" ScaleY="0" /> + </Setter.Value> + </Setter> + <Style.Triggers> + <DataTrigger Binding="{Binding IsJobRunning}" Value="True"> + <DataTrigger.EnterActions> + <BeginStoryboard> + <Storyboard> + <DoubleAnimation Storyboard.TargetProperty="LayoutTransform.ScaleY" To="1" Duration="00:00:0.3" /> + </Storyboard> + </BeginStoryboard> + </DataTrigger.EnterActions> + <DataTrigger.ExitActions> + <BeginStoryboard> + <Storyboard> + <DoubleAnimation Storyboard.TargetProperty="LayoutTransform.ScaleY" To="0" Duration="00:00:0.3" /> + </Storyboard> + </BeginStoryboard> + </DataTrigger.ExitActions> + </DataTrigger> + </Style.Triggers> + </Style> + </Grid.Style> + <Border BorderBrush="Silver" BorderThickness="0 0 0 1" Padding="10"> + <TextBlock>JOB RUNNING...</TextBlock> + </Border> + </Grid> + + <Grid Grid.Row="1"> + <Grid.ColumnDefinitions> + <ColumnDefinition Width="Auto"/> + <ColumnDefinition Width="1*"/> + </Grid.ColumnDefinitions> - <Grid Background="{StaticResource SideBarBackground}"> - <Grid.Style> - <Style TargetType="Grid"> - <Setter Property="Height" Value="350"></Setter> - <Setter Property="LayoutTransform"> - <Setter.Value> - <ScaleTransform ScaleX="1" ScaleY="0"></ScaleTransform> - </Setter.Value> - </Setter> - <Style.Triggers> - <DataTrigger Binding="{Binding IsSideBarOpened}" Value="True"> - <DataTrigger.EnterActions> - <BeginStoryboard> - <Storyboard> - <DoubleAnimation Storyboard.TargetProperty="LayoutTransform.ScaleY" To="1" Duration="00:00:0.2"></DoubleAnimation> - </Storyboard> - </BeginStoryboard> - </DataTrigger.EnterActions> - <DataTrigger.ExitActions> - <BeginStoryboard> - <Storyboard> - <DoubleAnimation Storyboard.TargetProperty="LayoutTransform.ScaleY" To="0" Duration="00:00:0.2"></DoubleAnimation> - </Storyboard> - </BeginStoryboard> - </DataTrigger.ExitActions> - </DataTrigger> - </Style.Triggers> - </Style> - </Grid.Style> + <Grid Grid.Column="1"> + <Grid.RowDefinitions> + <RowDefinition Height="Auto"/> + <RowDefinition Height="1*"/> + </Grid.RowDefinitions> - <ScrollViewer VerticalScrollBarVisibility="Auto"> - <StackPanel> - <Expander Header="PROCESS PARAMETERS" IsExpanded="True"> - <Grid> - <Grid Height="250"> - <StackPanel Orientation="Horizontal" Margin="25 0 0 0"> + <Grid Background="{StaticResource SideBarBackground}"> + <Grid.Style> + <Style TargetType="Grid"> + <Setter Property="Height" Value="350"></Setter> + <Setter Property="LayoutTransform"> + <Setter.Value> + <ScaleTransform ScaleX="1" ScaleY="0"></ScaleTransform> + </Setter.Value> + </Setter> + <Style.Triggers> + <DataTrigger Binding="{Binding IsSideBarOpened}" Value="True"> + <DataTrigger.EnterActions> + <BeginStoryboard> + <Storyboard> + <DoubleAnimation Storyboard.TargetProperty="LayoutTransform.ScaleY" To="1" Duration="00:00:0.2"></DoubleAnimation> + </Storyboard> + </BeginStoryboard> + </DataTrigger.EnterActions> + <DataTrigger.ExitActions> + <BeginStoryboard> + <Storyboard> + <DoubleAnimation Storyboard.TargetProperty="LayoutTransform.ScaleY" To="0" Duration="00:00:0.2"></DoubleAnimation> + </Storyboard> + </BeginStoryboard> + </DataTrigger.ExitActions> + </DataTrigger> + </Style.Triggers> + </Style> + </Grid.Style> - <Border Width="140" Margin="0 0 10 0" Padding="5" CornerRadius="5" BorderThickness="1" BorderBrush="Silver"> - <DockPanel> - <TextBlock DockPanel.Dock="Top" VerticalAlignment="Center" Padding="2">HISTORY</TextBlock> - <ListBox Margin="0 10 0 0" ItemsSource="{Binding GroupsHistory}" SelectedItem="{Binding SelectedGroupHistory}"> - <ListBox.ItemTemplate> - <DataTemplate> - <StackPanel> - <TextBlock Text="{Binding Name}" FontSize="11" FontWeight="Bold"> - <TextBlock.Style> - <Style TargetType="TextBlock"> - <Style.Triggers> - <DataTrigger Binding="{Binding Active}" Value="True"> - <Setter Property="Foreground" Value="#FF5F5F"></Setter> - <Setter Property="FontStyle" Value="Italic"></Setter> - </DataTrigger> - </Style.Triggers> - </Style> - </TextBlock.Style> - </TextBlock> - <TextBlock Text="{Binding SaveDate}" FontStyle="Italic" Foreground="Gray" FontSize="10"></TextBlock> - </StackPanel> - </DataTemplate> - </ListBox.ItemTemplate> - </ListBox> - </DockPanel> - </Border> - <ListBox ScrollViewer.VerticalScrollBarVisibility="Disabled" BorderThickness="0" Style="{x:Null}" HorizontalContentAlignment="Stretch" ItemsSource="{Binding RmlProcessParametersTableGroup.ProcessParametersTables}" SelectedItem="{Binding SelectedProcessParametersTable}" IsEnabled="{Binding RmlProcessParametersTableGroup.Active}"> - <ListBox.ItemContainerStyle> - <Style TargetType="ListBoxItem" BasedOn="{StaticResource basicListBoxItem}"> + <ScrollViewer VerticalScrollBarVisibility="Auto"> + <StackPanel> + <Expander Header="PROCESS PARAMETERS" IsExpanded="True"> + <Grid> + <Grid Height="250"> + <StackPanel Orientation="Horizontal" Margin="25 0 0 0"> - </Style> - </ListBox.ItemContainerStyle> - <ListBox.ItemsPanel> - <ItemsPanelTemplate> - <WrapPanel IsItemsHost="True"></WrapPanel> - </ItemsPanelTemplate> - </ListBox.ItemsPanel> - <ListBox.ItemTemplate> - <DataTemplate DataType="{x:Type observables:ProcessParametersTable}"> - <Border Padding="5" CornerRadius="5" BorderThickness="1" Height="245" Margin="0 0 10 0"> - <Border.Style> - <Style TargetType="Border" BasedOn="{StaticResource brushStopBorder}"> - <Setter Property="BorderBrush" Value="Silver"></Setter> - <Setter Property="Opacity" Value="0.5"></Setter> - <Setter Property="Background" Value="{StaticResource SideBarBackground}"></Setter> - <Style.Triggers> - <DataTrigger Binding="{Binding RelativeSource={RelativeSource AncestorType=ListBoxItem},Path=IsSelected,FallbackValue=False}" Value="True"> - <Setter Property="BorderBrush" Value="{StaticResource AccentColorBrush}"></Setter> - <Setter Property="Background" Value="White"></Setter> - <Setter Property="Opacity" Value="1"></Setter> - </DataTrigger> - </Style.Triggers> - </Style> - </Border.Style> - <DockPanel> - <TextBox materialDesign:HintAssist.Hint="Table Name" DockPanel.Dock="Top" Text="{Binding Name}"></TextBox> - <WrapPanel Orientation="Vertical" Margin="0 5 0 0"> - <WrapPanel.Resources> - <Style TargetType="TextBlock" BasedOn="{StaticResource {x:Type TextBlock}}"> - <Setter Property="FontSize" Value="10"></Setter> - <Setter Property="Foreground" Value="#7A7A7A"></Setter> - <Setter Property="Margin" Value="0 5 0 5"></Setter> - <Setter Property="MinWidth" Value="80"></Setter> - </Style> + <Border Width="140" Margin="0 0 10 0" Padding="5" CornerRadius="5" BorderThickness="1" BorderBrush="Silver"> + <DockPanel> + <TextBlock DockPanel.Dock="Top" VerticalAlignment="Center" Padding="2">HISTORY</TextBlock> + <ListBox Margin="0 10 0 0" ItemsSource="{Binding GroupsHistory}" SelectedItem="{Binding SelectedGroupHistory}"> + <ListBox.ItemTemplate> + <DataTemplate> + <StackPanel> + <TextBlock Text="{Binding Name}" FontSize="11" FontWeight="Bold"> + <TextBlock.Style> + <Style TargetType="TextBlock"> + <Style.Triggers> + <DataTrigger Binding="{Binding Active}" Value="True"> + <Setter Property="Foreground" Value="#FF5F5F"></Setter> + <Setter Property="FontStyle" Value="Italic"></Setter> + </DataTrigger> + </Style.Triggers> + </Style> + </TextBlock.Style> + </TextBlock> + <TextBlock Text="{Binding SaveDate}" FontStyle="Italic" Foreground="Gray" FontSize="10"></TextBlock> + </StackPanel> + </DataTemplate> + </ListBox.ItemTemplate> + </ListBox> + </DockPanel> + </Border> + <ListBox ScrollViewer.VerticalScrollBarVisibility="Disabled" Background="Transparent" BorderThickness="0" Style="{x:Null}" HorizontalContentAlignment="Stretch" ItemsSource="{Binding RmlProcessParametersTableGroup.ProcessParametersTables}" SelectedItem="{Binding SelectedProcessParametersTable}" IsEnabled="{Binding RmlProcessParametersTableGroup.Active}"> + <ListBox.ItemContainerStyle> + <Style TargetType="ListBoxItem" BasedOn="{StaticResource basicListBoxItem}"> - <Style TargetType="mahapps:NumericUpDown"> - <Setter Property="FontFamily" Value="digital-7"></Setter> - </Style> + </Style> + </ListBox.ItemContainerStyle> + <ListBox.ItemsPanel> + <ItemsPanelTemplate> + <WrapPanel IsItemsHost="True"></WrapPanel> + </ItemsPanelTemplate> + </ListBox.ItemsPanel> + <ListBox.ItemTemplate> + <DataTemplate DataType="{x:Type observables:ProcessParametersTable}"> + <Border Padding="5" CornerRadius="5" BorderThickness="1" Height="245" Margin="0 0 10 0"> + <Border.Style> + <Style TargetType="Border" BasedOn="{StaticResource brushStopBorder}"> + <Setter Property="BorderBrush" Value="Silver"></Setter> + <Setter Property="Opacity" Value="0.5"></Setter> + <Setter Property="Background" Value="{StaticResource SideBarBackground}"></Setter> + <Style.Triggers> + <DataTrigger Binding="{Binding RelativeSource={RelativeSource AncestorType=ListBoxItem},Path=IsSelected,FallbackValue=False}" Value="True"> + <Setter Property="BorderBrush" Value="{StaticResource AccentColorBrush}"></Setter> + <Setter Property="Background" Value="White"></Setter> + <Setter Property="Opacity" Value="1"></Setter> + </DataTrigger> + </Style.Triggers> + </Style> + </Border.Style> + <DockPanel> + <TextBox materialDesign:HintAssist.Hint="Table Name" DockPanel.Dock="Top" Text="{Binding Name}"></TextBox> + <WrapPanel Orientation="Vertical" Margin="0 5 0 0"> + <WrapPanel.Resources> + <Style TargetType="TextBlock" BasedOn="{StaticResource {x:Type TextBlock}}"> + <Setter Property="FontSize" Value="10"></Setter> + <Setter Property="Foreground" Value="#7A7A7A"></Setter> + <Setter Property="Margin" Value="0 5 0 5"></Setter> + <Setter Property="MinWidth" Value="80"></Setter> + </Style> - <Style TargetType="ContentControl"> - <Setter Property="FontFamily" Value="digital-7"></Setter> - <Setter Property="Template"> - <Setter.Value> - <ControlTemplate TargetType="ContentControl"> - <Grid> - <Border> - <Border.Style> - <Style TargetType="Border"> - <Setter Property="BorderBrush" Value="Gainsboro"></Setter> - <Setter Property="BorderThickness" Value="1"></Setter> - <Setter Property="Padding" Value="2"></Setter> - <Setter Property="Margin" Value="5"></Setter> - <Setter Property="CornerRadius" Value="3"></Setter> - </Style> - </Border.Style> - <ContentPresenter Content="{TemplateBinding Content}"></ContentPresenter> - </Border> + <Style TargetType="mahapps:NumericUpDown"> + <Setter Property="FontFamily" Value="digital-7"></Setter> + </Style> - <materialDesign:PackIcon HorizontalAlignment="Left" VerticalAlignment="Top" Margin="0 0 0 0" Width="12" Height="12" Kind="Settings"></materialDesign:PackIcon> - </Grid> - </ControlTemplate> - </Setter.Value> - </Setter> - </Style> + <Style TargetType="ContentControl"> + <Setter Property="FontFamily" Value="digital-7"></Setter> + <Setter Property="Template"> + <Setter.Value> + <ControlTemplate TargetType="ContentControl"> + <Grid> + <Border> + <Border.Style> + <Style TargetType="Border"> + <Setter Property="BorderBrush" Value="Gainsboro"></Setter> + <Setter Property="BorderThickness" Value="1"></Setter> + <Setter Property="Padding" Value="2"></Setter> + <Setter Property="Margin" Value="5"></Setter> + <Setter Property="CornerRadius" Value="3"></Setter> + </Style> + </Border.Style> + <ContentPresenter Content="{TemplateBinding Content}"></ContentPresenter> + </Border> + + <materialDesign:PackIcon HorizontalAlignment="Left" VerticalAlignment="Top" Margin="0 0 0 0" Width="12" Height="12" Kind="Settings"></materialDesign:PackIcon> + </Grid> + </ControlTemplate> + </Setter.Value> + </Setter> + </Style> - </WrapPanel.Resources> - <editors:ParameterizedEditor ParameterizedObject="{Binding}"> - <editors:ParameterizedEditor.ItemsPanel> - <ItemsPanelTemplate> - <WrapPanel IsItemsHost="True" Orientation="Vertical" /> - </ItemsPanelTemplate> - </editors:ParameterizedEditor.ItemsPanel> - <editors:ParameterizedEditor.DoubleTemplate> - <DataTemplate> - <ContentControl> - <StackPanel> - <TextBlock Text="{Binding Name}"></TextBlock> - <mahapps:NumericUpDown Minimum="0" Maximum="10000" StringFormat="0.0" InterceptArrowKeys="True" Background="Transparent" BorderThickness="0" InterceptMouseWheel="True" HasDecimals="True" HorizontalContentAlignment="Left" Value="{Binding Value,Mode=TwoWay}"></mahapps:NumericUpDown> - </StackPanel> - </ContentControl> - </DataTemplate> - </editors:ParameterizedEditor.DoubleTemplate> - </editors:ParameterizedEditor> - </WrapPanel> - </DockPanel> - </Border> - </DataTemplate> - </ListBox.ItemTemplate> - </ListBox> + </WrapPanel.Resources> + <editors:ParameterizedEditor ParameterizedObject="{Binding}"> + <editors:ParameterizedEditor.ItemsPanel> + <ItemsPanelTemplate> + <WrapPanel IsItemsHost="True" Orientation="Vertical" /> + </ItemsPanelTemplate> + </editors:ParameterizedEditor.ItemsPanel> + <editors:ParameterizedEditor.DoubleTemplate> + <DataTemplate> + <ContentControl> + <StackPanel> + <TextBlock Text="{Binding Name}"></TextBlock> + <mahapps:NumericUpDown Minimum="0" Maximum="10000" StringFormat="0.0" InterceptArrowKeys="True" Background="Transparent" BorderThickness="0" InterceptMouseWheel="True" HasDecimals="True" HorizontalContentAlignment="Left" Value="{Binding Value,Mode=TwoWay}"></mahapps:NumericUpDown> + </StackPanel> + </ContentControl> + </DataTemplate> + </editors:ParameterizedEditor.DoubleTemplate> + </editors:ParameterizedEditor> + </WrapPanel> + </DockPanel> + </Border> + </DataTemplate> + </ListBox.ItemTemplate> + </ListBox> - <StackPanel Margin="5 0 0 10" VerticalAlignment="Bottom"> - <Button Command="{Binding SaveProcessParametersCommand}">SAVE GROUP</Button> + <StackPanel Margin="5 0 0 10" VerticalAlignment="Bottom"> + <Button Command="{Binding SaveProcessParametersCommand}">SAVE GROUP</Button> + </StackPanel> </StackPanel> - </StackPanel> - </Grid> + </Grid> - <Grid Background="White"> - <Grid.Style> - <Style TargetType="Grid"> - <Setter Property="Visibility" Value="Visible"></Setter> - <Style.Triggers> - <MultiDataTrigger> - <MultiDataTrigger.Conditions> - <Condition Binding="{Binding SelectedMachine,Converter={StaticResource NullObjectToBooleanConverter}}" Value="True"></Condition> - <Condition Binding="{Binding SelectedRML,Converter={StaticResource NullObjectToBooleanConverter}}" Value="True"></Condition> - </MultiDataTrigger.Conditions> - <Setter Property="Visibility" Value="Collapsed"></Setter> - </MultiDataTrigger> - </Style.Triggers> - </Style> - </Grid.Style> - <TextBlock Foreground="#FA9292" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="24">SELECT MACHINE & MEDIA</TextBlock> + <Grid Background="White"> + <Grid.Style> + <Style TargetType="Grid"> + <Setter Property="Visibility" Value="Visible"></Setter> + <Style.Triggers> + <MultiDataTrigger> + <MultiDataTrigger.Conditions> + <Condition Binding="{Binding SelectedMachine,Converter={StaticResource NullObjectToBooleanConverter}}" Value="True"></Condition> + <Condition Binding="{Binding SelectedRML,Converter={StaticResource NullObjectToBooleanConverter}}" Value="True"></Condition> + </MultiDataTrigger.Conditions> + <Setter Property="Visibility" Value="Collapsed"></Setter> + </MultiDataTrigger> + </Style.Triggers> + </Style> + </Grid.Style> + <TextBlock Foreground="#FA9292" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="24">SELECT MACHINE & MEDIA</TextBlock> + </Grid> </Grid> - </Grid> - </Expander> - <Expander Header="CONTROL PARAMETERS" IsExpanded="False"> - - </Expander> - </StackPanel> - </ScrollViewer> - - <Rectangle VerticalAlignment="Bottom" Stroke="#CECECE" StrokeThickness="1"></Rectangle> - </Grid> + </Expander> + <Expander Header="CONTROL PARAMETERS" IsExpanded="False"> - <Grid Grid.Row="1"> - <Grid> - <Grid.RowDefinitions> - <RowDefinition Height="234*"/> - <RowDefinition x:Name="graphRowDefinition" Height="440"/> - </Grid.RowDefinitions> - <Grid.ColumnDefinitions> - <ColumnDefinition Width="350"/> - <ColumnDefinition Width="1*"/> - </Grid.ColumnDefinitions> + </Expander> + </StackPanel> + </ScrollViewer> + <Rectangle VerticalAlignment="Bottom" Stroke="#CECECE" StrokeThickness="1"></Rectangle> + </Grid> + <Grid Grid.Row="1"> <Grid> - <Rectangle HorizontalAlignment="Right" StrokeDashArray="5" StrokeThickness="1" Stroke="Silver" Margin="0 40 0 40"></Rectangle> - <DockPanel Margin="10"> - <StackPanel DockPanel.Dock="Top" > - <StackPanel Orientation="Horizontal"> - <Image Source="../Images/machine-trans.png" RenderOptions.BitmapScalingMode="Fant" Width="70"></Image> - <TextBlock VerticalAlignment="Center" FontWeight="SemiBold" Margin="10 0 0 0" FontSize="30">MACHINE JOBS</TextBlock> - </StackPanel> - - <Rectangle VerticalAlignment="Bottom" StrokeDashArray="7" StrokeThickness="1" Stroke="Silver" Margin="0 8 0 0"></Rectangle> - </StackPanel> - <Border DockPanel.Dock="Bottom" Background="{StaticResource SideBarBackground}"> - <StackPanel Orientation="Horizontal" HorizontalAlignment="Right"> - <Button Command="{Binding RemoveJobCommand}" Margin="5" Style="{StaticResource MaterialDesignFlatButton}" Padding="0" ToolTip="Remove Job"> - <materialDesign:PackIcon Kind="MinusCircleOutline" Width="24" Height="24"></materialDesign:PackIcon> - </Button> - <Button Command="{Binding AddJobCommand}" Margin="5" Style="{StaticResource MaterialDesignFlatButton}" Padding="0" ToolTip="Add Job"> - <materialDesign:PackIcon Kind="PlusCircleOutline" Width="24" Height="24"></materialDesign:PackIcon> - </Button> - </StackPanel> - </Border> - <ListBox ItemsSource="{Binding SelectedMachine.Jobs}" SelectedItem="{Binding SelectedJob}" Margin="0 10 0 0"> - <ListBox.ItemTemplate> - <DataTemplate> - <Grid> - <StackPanel Orientation="Horizontal"> - <Image Source="../Images/rgb.png" Width="32"></Image> + <Grid.RowDefinitions> + <RowDefinition Height="234*"/> + <RowDefinition x:Name="graphRowDefinition" Height="80"/> + </Grid.RowDefinitions> + <Grid.ColumnDefinitions> + <ColumnDefinition Width="350"/> + <ColumnDefinition Width="1*"/> + </Grid.ColumnDefinitions> - <StackPanel VerticalAlignment="Center" Margin="10 0 0 0"> - <TextBlock FontWeight="Bold" Text="{Binding Name}"></TextBlock> - <TextBlock Foreground="Gray" FontStyle="Italic" FontSize="10" Text="{Binding CreationDate}"></TextBlock> - </StackPanel> + <Grid Grid.ColumnSpan="3"> + <Grid.Background> + <ImageBrush Opacity="0.4" ImageSource="../Images/White-Background.jpg" Stretch="Fill"></ImageBrush> + </Grid.Background> + </Grid> - </StackPanel> - </Grid> - </DataTemplate> - </ListBox.ItemTemplate> - </ListBox> - </DockPanel> - </Grid> - - <Grid Grid.Column="1" Margin="10 10 10 0"> - <Grid.ColumnDefinitions> - <ColumnDefinition/> - <ColumnDefinition Width="Auto"/> - </Grid.ColumnDefinitions> <Grid> - <Grid.RowDefinitions> - <RowDefinition Height="Auto"/> - <RowDefinition Height="1*"/> - </Grid.RowDefinitions> - <StackPanel> - <Grid> - <StackPanel Orientation="Horizontal" Margin="0 5 0 0"> - <Image Source="../Images/rgb.png" Width="24"></Image> - <TextBlock Margin="5 0 0 0" Text="{Binding SelectedJob.Name,FallbackValue='UNSET'}" FontSize="16" FontWeight="SemiBold" VerticalAlignment="Center"></TextBlock> + <Rectangle HorizontalAlignment="Right" StrokeDashArray="5" StrokeThickness="1" Stroke="Silver" Margin="0 40 0 40"></Rectangle> + <DockPanel Margin="10"> + <StackPanel DockPanel.Dock="Top" > + <StackPanel Orientation="Horizontal"> + <Image Source="../Images/machine-trans.png" RenderOptions.BitmapScalingMode="Fant" Width="70"></Image> + <TextBlock VerticalAlignment="Center" FontWeight="SemiBold" Margin="10 0 0 0" FontSize="30">MACHINE JOBS</TextBlock> </StackPanel> - <StackPanel Orientation="Horizontal" Margin="0 5 0 0" HorizontalAlignment="Right"> - <TextBlock Margin="0 0 5 0" Text="{Binding SelectedJob.CreationDate,FallbackValue='UNSET'}" FontSize="12" Foreground="Gray" FontStyle="Italic" VerticalAlignment="Center"></TextBlock> - <Image Source="../Images/calendar.png" Width="16"></Image> + <Rectangle VerticalAlignment="Bottom" StrokeDashArray="7" StrokeThickness="1" Stroke="Silver" Margin="0 8 0 0"></Rectangle> + </StackPanel> + <Border DockPanel.Dock="Bottom" CornerRadius="5" BorderThickness="1" BorderBrush="Gainsboro" Background="#7BFFFFFF"> + <StackPanel Orientation="Horizontal" HorizontalAlignment="Right"> + <Button Command="{Binding RemoveJobCommand}" Margin="5" Style="{StaticResource MaterialDesignFlatButton}" Padding="0" ToolTip="Remove Job"> + <materialDesign:PackIcon Kind="MinusCircleOutline" Width="24" Height="24"></materialDesign:PackIcon> + </Button> + <Button Command="{Binding AddJobCommand}" Margin="5" Style="{StaticResource MaterialDesignFlatButton}" Padding="0" ToolTip="Add Job"> + <materialDesign:PackIcon Kind="PlusCircleOutline" Width="24" Height="24"></materialDesign:PackIcon> + </Button> </StackPanel> - </Grid> + </Border> + <ListBox ItemsSource="{Binding SelectedMachine.Jobs}" SelectedItem="{Binding SelectedJob}" Margin="0 10 0 0"> + <ListBox.ItemTemplate> + <DataTemplate> + <Grid> + <StackPanel Orientation="Horizontal"> + <Image Source="../Images/rgb.png" Width="32"></Image> - <StackPanel Orientation="Horizontal" Margin="0 20 0 0" MaxWidth="940" HorizontalAlignment="Left"> - <Border Style="{StaticResource JobFieldBorder}"> - <StackPanel Margin="5" Width="140"> - <StackPanel Orientation="Horizontal"> - <Image Source="../Images/name.png" Width="32"></Image> - <TextBlock VerticalAlignment="Center" Margin="5 0 0 0" FontSize="10">Name</TextBlock> - </StackPanel> - <TextBox Margin="0 3 0 0" Text="{Binding SelectedJob.Name,UpdateSourceTrigger=PropertyChanged}"></TextBox> - </StackPanel> - </Border> + <StackPanel VerticalAlignment="Center" Margin="10 0 0 0"> + <TextBlock FontWeight="Bold" Text="{Binding Name}"></TextBlock> + <TextBlock Foreground="Gray" FontStyle="Italic" FontSize="10" Text="{Binding CreationDate}"></TextBlock> + </StackPanel> - <Border Style="{StaticResource JobFieldBorder}"> - <StackPanel Margin="10 5 5 5" Width="140"> - <StackPanel Orientation="Horizontal"> - <Image Source="../Images/wind.png" Width="32"></Image> - <TextBlock VerticalAlignment="Center" Margin="5 0 0 0" FontSize="10">Winding Method</TextBlock> - </StackPanel> - <ComboBox ItemsSource="{Binding Adapter.WindingMethods}" SelectedItem="{Binding SelectedJob.WindingMethod}" DisplayMemberPath="Name" ></ComboBox> + + </StackPanel> + </Grid> + </DataTemplate> + </ListBox.ItemTemplate> + </ListBox> + </DockPanel> + </Grid> + + <Grid Grid.Column="1" Margin="10 10 10 0"> + <Grid.ColumnDefinitions> + <ColumnDefinition/> + <ColumnDefinition Width="Auto"/> + </Grid.ColumnDefinitions> + <Grid> + <Grid.RowDefinitions> + <RowDefinition Height="Auto"/> + <RowDefinition Height="1*"/> + </Grid.RowDefinitions> + <StackPanel> + <Grid> + <StackPanel Orientation="Horizontal" Margin="0 5 0 0"> + <Image Source="../Images/rgb.png" Width="24"></Image> + <TextBlock Margin="5 0 0 0" Text="{Binding SelectedJob.Name,FallbackValue='UNSET'}" FontSize="16" FontWeight="SemiBold" VerticalAlignment="Center"></TextBlock> </StackPanel> - </Border> - <Border Style="{StaticResource JobFieldBorder}"> - <StackPanel Margin="20 5 5 5" Width="140"> - <StackPanel Orientation="Horizontal"> - <Image Source="../Images/inter-segment.png" Width="32"></Image> - <TextBlock VerticalAlignment="Center" Margin="5 0 0 0" FontSize="10">Inter Segment</TextBlock> - </StackPanel> - <DockPanel LastChildFill="True"> - <ToggleButton Margin="10 0 0 0" DockPanel.Dock="Right" VerticalAlignment="Bottom" HorizontalAlignment="Right" IsChecked="{Binding SelectedJob.EnableInterSegment}"></ToggleButton> - <mahapps:NumericUpDown StringFormat="{}{0:N1} m" IsEnabled="{Binding SelectedJob.EnableInterSegment}" Margin="0 2 0 0" HideUpDownButtons="True" Minimum="0" Maximum="10000" InterceptArrowKeys="True" Background="Transparent" BorderThickness="0 0 0 1" BorderBrush="DimGray" InterceptMouseWheel="True" HasDecimals="True" HorizontalContentAlignment="Left" Value="{Binding SelectedJob.InterSegmentLength,Mode=TwoWay}"></mahapps:NumericUpDown> - </DockPanel> + <StackPanel Orientation="Horizontal" Margin="0 5 0 0" HorizontalAlignment="Right"> + <TextBlock Margin="0 0 5 0" Text="{Binding SelectedJob.CreationDate,FallbackValue='UNSET'}" FontSize="12" Foreground="Gray" FontStyle="Italic" VerticalAlignment="Center"></TextBlock> + <Image Source="../Images/calendar.png" Width="16"></Image> </StackPanel> - </Border> + </Grid> - <Border Style="{StaticResource JobFieldBorder}"> - <StackPanel Margin="20 5 5 5" Width="140"> - <StackPanel Orientation="Horizontal"> - <Image Source="../Images/lubrication.png" Width="32"></Image> - <TextBlock VerticalAlignment="Center" Margin="5 0 0 0" FontSize="10">Lubrication</TextBlock> + <StackPanel Orientation="Horizontal" Margin="0 20 0 0" MaxWidth="940" HorizontalAlignment="Left"> + <Border Style="{StaticResource JobFieldBorder}"> + <StackPanel Margin="5" Width="140"> + <StackPanel Orientation="Horizontal"> + <Image Source="../Images/name.png" Width="32"></Image> + <TextBlock VerticalAlignment="Center" Margin="5 0 0 0" FontSize="10">Name</TextBlock> + </StackPanel> + <TextBox Margin="0 3 0 0" Text="{Binding SelectedJob.Name,UpdateSourceTrigger=PropertyChanged}"></TextBox> </StackPanel> - <DockPanel LastChildFill="True" Margin="0 10 0 0"> - <ToggleButton DockPanel.Dock="Right" VerticalAlignment="Center" HorizontalAlignment="Center" IsChecked="{Binding SelectedJob.EnableLubrication}"></ToggleButton> - </DockPanel> - </StackPanel> - </Border> + </Border> - <Border Style="{StaticResource JobFieldBorder}" Height="90"> - <StackPanel Width="200"> - <StackPanel Orientation="Horizontal" Margin="10 0 0 0"> - <Image Source="../Images/description.png" Width="32"></Image> - <TextBlock VerticalAlignment="Center" Margin="5 0 0 0" FontSize="10">Description</TextBlock> + <Border Style="{StaticResource JobFieldBorder}"> + <StackPanel Margin="10 5 5 5" Width="140"> + <StackPanel Orientation="Horizontal"> + <Image Source="../Images/wind.png" Width="32"></Image> + <TextBlock VerticalAlignment="Center" Margin="5 0 0 0" FontSize="10">Winding Method</TextBlock> + </StackPanel> + <ComboBox ItemsSource="{Binding Adapter.WindingMethods}" SelectedItem="{Binding SelectedJob.WindingMethod}" DisplayMemberPath="Name" ></ComboBox> </StackPanel> + </Border> - <Border BorderThickness="0" BorderBrush="Silver" CornerRadius="5" Margin="0 0 5 5"> - <TextBox Padding="5 0 0 0" FontStyle="Italic" Background="Transparent" Style="{x:Null}" BorderThickness="0" Margin="5" Height="40" Text="{Binding SelectedJob.Description}" VerticalAlignment="Stretch" materialDesign:HintAssist.Hint="Enter description" AcceptsReturn="True" TextWrapping="Wrap" VerticalScrollBarVisibility="Auto"></TextBox> - </Border> - </StackPanel> - </Border> - </StackPanel> + <Border Style="{StaticResource JobFieldBorder}"> + <StackPanel Margin="20 5 5 5" Width="140"> + <StackPanel Orientation="Horizontal"> + <Image Source="../Images/inter-segment.png" Width="32"></Image> + <TextBlock VerticalAlignment="Center" Margin="5 0 0 0" FontSize="10">Inter Segment</TextBlock> + </StackPanel> + <DockPanel LastChildFill="True"> + <ToggleButton Margin="10 0 0 0" DockPanel.Dock="Right" VerticalAlignment="Bottom" HorizontalAlignment="Right" IsChecked="{Binding SelectedJob.EnableInterSegment}"></ToggleButton> + <mahapps:NumericUpDown StringFormat="{}{0:N1} m" IsEnabled="{Binding SelectedJob.EnableInterSegment}" Margin="0 2 0 0" HideUpDownButtons="True" Minimum="0" Maximum="10000" InterceptArrowKeys="True" Background="Transparent" BorderThickness="0 0 0 1" BorderBrush="DimGray" InterceptMouseWheel="True" HasDecimals="True" HorizontalContentAlignment="Left" Value="{Binding SelectedJob.InterSegmentLength,Mode=TwoWay}"></mahapps:NumericUpDown> + </DockPanel> + </StackPanel> + </Border> + <Border Style="{StaticResource JobFieldBorder}"> + <StackPanel Margin="20 5 5 5" Width="140"> + <StackPanel Orientation="Horizontal"> + <Image Source="../Images/lubrication.png" Width="32"></Image> + <TextBlock VerticalAlignment="Center" Margin="5 0 0 0" FontSize="10">Lubrication</TextBlock> + </StackPanel> + <DockPanel LastChildFill="True" Margin="0 10 0 0"> + <ToggleButton DockPanel.Dock="Right" VerticalAlignment="Center" HorizontalAlignment="Center" IsChecked="{Binding SelectedJob.EnableLubrication}"></ToggleButton> + </DockPanel> + </StackPanel> + </Border> - </StackPanel> + <Border Style="{StaticResource JobFieldBorder}" Height="90"> + <StackPanel Width="200"> + <StackPanel Orientation="Horizontal" Margin="10 0 0 0"> + <Image Source="../Images/description.png" Width="32"></Image> + <TextBlock VerticalAlignment="Center" Margin="5 0 0 0" FontSize="10">Description</TextBlock> + </StackPanel> - <Grid HorizontalAlignment="Right"> - <Button Height="40" Width="170" Margin="0 40 40 0" Command="{Binding SaveJobsCommand}"> - <StackPanel Orientation="Horizontal"> - <materialDesign:PackIcon VerticalAlignment="Center" Width="24" Height="24" Kind="ContentSave" /> - <TextBlock VerticalAlignment="Center" Margin="10 0 0 0">SAVE</TextBlock> + <Border BorderThickness="0" BorderBrush="Silver" CornerRadius="5" Margin="0 0 5 5"> + <TextBox Padding="5 0 0 0" FontStyle="Italic" Background="Transparent" Style="{x:Null}" BorderThickness="0" Margin="5" Height="40" Text="{Binding SelectedJob.Description}" VerticalAlignment="Stretch" materialDesign:HintAssist.Hint="Enter description" AcceptsReturn="True" TextWrapping="Wrap" VerticalScrollBarVisibility="Auto"></TextBox> + </Border> + </StackPanel> + </Border> </StackPanel> - </Button> - </Grid> - <Grid Grid.Row="1" Margin="0 20 0 0"> - <Grid.RowDefinitions> - <RowDefinition Height="1*" /> - <RowDefinition Height="Auto" /> - </Grid.RowDefinitions> - <Grid> - <Grid.ColumnDefinitions> - <ColumnDefinition Width="200"/> - <ColumnDefinition Width="1*"/> - </Grid.ColumnDefinitions> - <DockPanel> - <StackPanel DockPanel.Dock="Top" Orientation="Horizontal"> - <Image Source="../Images/segment.png" Width="42"></Image> - <TextBlock VerticalAlignment="Center" Margin="10 0 0 0" Foreground="DimGray" FontSize="16" FontWeight="SemiBold">SEGMENTS</TextBlock> - </StackPanel> + </StackPanel> - <Border DockPanel.Dock="Bottom" Background="{StaticResource SideBarBackground}"> - <StackPanel Orientation="Horizontal" HorizontalAlignment="Right"> - <Button Command="{Binding RemoveSegmentCommand}" Margin="5" Style="{StaticResource MaterialDesignFlatButton}" Padding="0" ToolTip="Remove Segment"> - <materialDesign:PackIcon Kind="MinusCircleOutline" Width="24" Height="24"></materialDesign:PackIcon> - </Button> - <Button Command="{Binding AddSegmentCommand}" Margin="5" Style="{StaticResource MaterialDesignFlatButton}" Padding="0" ToolTip="Add Segment"> - <materialDesign:PackIcon Kind="PlusCircleOutline" Width="24" Height="24"></materialDesign:PackIcon> - </Button> - </StackPanel> - </Border> + <Grid HorizontalAlignment="Right"> + <Button Height="40" Width="170" Margin="0 40 40 5" VerticalAlignment="Bottom" Foreground="DimGray" Background="#EEEEEE" BorderBrush="Transparent" Command="{Binding SaveJobsCommand}"> + <StackPanel Orientation="Horizontal"> + <materialDesign:PackIcon VerticalAlignment="Center" Width="24" Height="24" Kind="ContentSave" /> + <TextBlock VerticalAlignment="Center" Margin="10 0 0 0">SAVE</TextBlock> + </StackPanel> + </Button> + </Grid> - <ListBox SelectionChanged="ListBox_SelectionChanged" ItemsSource="{Binding SelectedJob.Segments}" SelectedItem="{Binding SelectedSegment}"> - <ListBox.ItemTemplate> - <DataTemplate> - <StackPanel Orientation="Horizontal" Margin="0 5 0 0"> - <Image Source="../Images/segment-single.png" Width="24"></Image> - <TextBlock Margin="5 0 0 0" Text="{Binding Name}" FontSize="12" FontWeight="SemiBold" VerticalAlignment="Center"></TextBlock> - </StackPanel> - </DataTemplate> - </ListBox.ItemTemplate> - </ListBox> - </DockPanel> + <Grid Grid.Row="1" Margin="0 20 0 0"> + <Grid.RowDefinitions> + <RowDefinition Height="1*" /> + <RowDefinition Height="Auto" /> + </Grid.RowDefinitions> + <Grid> + <Grid.ColumnDefinitions> + <ColumnDefinition Width="200"/> + <ColumnDefinition Width="1*"/> + </Grid.ColumnDefinitions> - <Grid Grid.Column="1" Margin="10 5 0 0"> <DockPanel> - <StackPanel Orientation="Horizontal" DockPanel.Dock="Top"> - <Image Source="../Images/segment-single.png" Width="24"></Image> - <TextBlock Margin="5 0 0 0" Text="{Binding SelectedSegment.Name,FallbackValue=''}" FontSize="16" FontWeight="SemiBold" VerticalAlignment="Center"></TextBlock> + <StackPanel DockPanel.Dock="Top" Orientation="Horizontal"> + <Image Source="../Images/segment.png" Width="42"></Image> + <TextBlock VerticalAlignment="Center" Margin="10 0 0 0" Foreground="DimGray" FontSize="16" FontWeight="SemiBold">SEGMENTS</TextBlock> </StackPanel> - <Grid Margin="0 10 0 0"> - <DockPanel> - <Grid DockPanel.Dock="Top"> - <Grid> - <StackPanel Orientation="Horizontal"> - <Border Style="{StaticResource JobFieldBorder}"> - <StackPanel Margin="5" Width="140"> - <StackPanel Orientation="Horizontal"> - <Image Source="../Images/name.png" Width="32"></Image> - <TextBlock VerticalAlignment="Center" Margin="5 0 0 0" FontSize="10">Name</TextBlock> + <Border DockPanel.Dock="Bottom" CornerRadius="5" BorderThickness="1" BorderBrush="Gainsboro" Background="#7BFFFFFF"> + <StackPanel Orientation="Horizontal" HorizontalAlignment="Right"> + <Button Command="{Binding RemoveSegmentCommand}" Margin="5" Style="{StaticResource MaterialDesignFlatButton}" Padding="0" ToolTip="Remove Segment"> + <materialDesign:PackIcon Kind="MinusCircleOutline" Width="24" Height="24"></materialDesign:PackIcon> + </Button> + <Button Command="{Binding AddSegmentCommand}" Margin="5" Style="{StaticResource MaterialDesignFlatButton}" Padding="0" ToolTip="Add Segment"> + <materialDesign:PackIcon Kind="PlusCircleOutline" Width="24" Height="24"></materialDesign:PackIcon> + </Button> + </StackPanel> + </Border> + + <ListBox SelectionChanged="ListBox_SelectionChanged" ItemsSource="{Binding SelectedJob.Segments}" SelectedItem="{Binding SelectedSegment}"> + <ListBox.ItemTemplate> + <DataTemplate> + <StackPanel Orientation="Horizontal" Margin="0 5 0 0"> + <Image Source="../Images/segment-single.png" Width="24"></Image> + <TextBlock Margin="5 0 0 0" Text="{Binding Name}" FontSize="12" FontWeight="SemiBold" VerticalAlignment="Center"></TextBlock> + </StackPanel> + </DataTemplate> + </ListBox.ItemTemplate> + </ListBox> + </DockPanel> + + <Grid Grid.Column="1" Margin="10 5 0 0"> + <DockPanel> + <StackPanel Orientation="Horizontal" DockPanel.Dock="Top"> + <Image Source="../Images/segment-single.png" Width="24"></Image> + <TextBlock Margin="5 0 0 0" Text="{Binding SelectedSegment.Name,FallbackValue=''}" FontSize="16" FontWeight="SemiBold" VerticalAlignment="Center"></TextBlock> + </StackPanel> + + <Grid Margin="0 10 0 0"> + <DockPanel> + <Grid DockPanel.Dock="Top"> + <Grid> + <StackPanel Orientation="Horizontal"> + <Border Style="{StaticResource JobFieldBorder}"> + <StackPanel Margin="5" Width="140"> + <StackPanel Orientation="Horizontal"> + <Image Source="../Images/name.png" Width="32"></Image> + <TextBlock VerticalAlignment="Center" Margin="5 0 0 0" FontSize="10">Name</TextBlock> + </StackPanel> + <TextBox Margin="0 3 0 0" Text="{Binding SelectedSegment.Name,UpdateSourceTrigger=PropertyChanged}"></TextBox> </StackPanel> - <TextBox Margin="0 3 0 0" Text="{Binding SelectedSegment.Name,UpdateSourceTrigger=PropertyChanged}"></TextBox> - </StackPanel> - </Border> - <Border Style="{StaticResource JobFieldBorder}"> - <StackPanel Margin="5" Width="140"> - <StackPanel Orientation="Horizontal"> - <Image Source="../Images/ruler.png" Width="32"></Image> - <TextBlock VerticalAlignment="Center" Margin="5 0 0 0" FontSize="10">Length</TextBlock> + </Border> + <Border Style="{StaticResource JobFieldBorder}"> + <StackPanel Margin="5" Width="140"> + <StackPanel Orientation="Horizontal"> + <Image Source="../Images/ruler.png" Width="32"></Image> + <TextBlock VerticalAlignment="Center" Margin="5 0 0 0" FontSize="10">Length</TextBlock> + </StackPanel> + <mahapps:NumericUpDown StringFormat="{}{0:N1} m" Margin="0 2 0 0" Minimum="1" Maximum="10000" InterceptArrowKeys="True" Background="Transparent" BorderThickness="0 0 0 1" BorderBrush="DimGray" InterceptMouseWheel="True" HasDecimals="True" HorizontalContentAlignment="Left" Value="{Binding SelectedSegment.Length,Mode=TwoWay}"></mahapps:NumericUpDown> </StackPanel> - <mahapps:NumericUpDown StringFormat="{}{0:N1} m" Margin="0 2 0 0" Minimum="1" Maximum="10000" InterceptArrowKeys="True" Background="Transparent" BorderThickness="0 0 0 1" BorderBrush="DimGray" InterceptMouseWheel="True" HasDecimals="True" HorizontalContentAlignment="Left" Value="{Binding SelectedSegment.Length,Mode=TwoWay}"></mahapps:NumericUpDown> - </StackPanel> - </Border> - </StackPanel> + </Border> + </StackPanel> - <Grid HorizontalAlignment="Right"> - <StackPanel Orientation="Horizontal"> + <Grid HorizontalAlignment="Right"> + <StackPanel Orientation="Horizontal"> - </StackPanel> + </StackPanel> + </Grid> </Grid> </Grid> - </Grid> - <Border DockPanel.Dock="Bottom" Background="{StaticResource SideBarBackground}"> - <StackPanel Orientation="Horizontal" DockPanel.Dock="Bottom" HorizontalAlignment="Right"> - <Button Command="{Binding RemoveBrushStopCommand}" Margin="5" Style="{StaticResource MaterialDesignFlatButton}" Padding="0" ToolTip="Remove Color"> - <materialDesign:PackIcon Kind="MinusCircleOutline" Width="24" Height="24"></materialDesign:PackIcon> - </Button> - <Button Command="{Binding AddBrushStopCommand}" Margin="5" Style="{StaticResource MaterialDesignFlatButton}" Padding="0" ToolTip="Add Color"> - <materialDesign:PackIcon Kind="PlusCircleOutline" Width="24" Height="24"></materialDesign:PackIcon> - </Button> - </StackPanel> - </Border> + <Border DockPanel.Dock="Bottom" CornerRadius="5" BorderThickness="1" BorderBrush="Gainsboro" Background="#7BFFFFFF"> + <StackPanel Orientation="Horizontal" DockPanel.Dock="Bottom" HorizontalAlignment="Right"> + <Button Command="{Binding RemoveBrushStopCommand}" Margin="5" Style="{StaticResource MaterialDesignFlatButton}" Padding="0" ToolTip="Remove Color"> + <materialDesign:PackIcon Kind="MinusCircleOutline" Width="24" Height="24"></materialDesign:PackIcon> + </Button> + <Button Command="{Binding AddBrushStopCommand}" Margin="5" Style="{StaticResource MaterialDesignFlatButton}" Padding="0" ToolTip="Add Color"> + <materialDesign:PackIcon Kind="PlusCircleOutline" Width="24" Height="24"></materialDesign:PackIcon> + </Button> + </StackPanel> + </Border> - <Grid Margin="0 20 0 0"> - <DockPanel> - <Grid DockPanel.Dock="Top"> - <StackPanel Orientation="Horizontal" HorizontalAlignment="Left"> - <Image Source="../Images/color-palette.png" Width="42"></Image> - <TextBlock VerticalAlignment="Center" Margin="10 0 0 0" Foreground="DimGray" FontSize="16" FontWeight="SemiBold">SEGMENT BRUSH</TextBlock> - </StackPanel> + <Grid Margin="0 20 0 0"> + <DockPanel> + <Grid DockPanel.Dock="Top"> + <StackPanel Orientation="Horizontal" HorizontalAlignment="Left"> + <Image Source="../Images/color-palette.png" Width="42"></Image> + <TextBlock VerticalAlignment="Center" Margin="10 0 0 0" Foreground="DimGray" FontSize="16" FontWeight="SemiBold">SEGMENT BRUSH</TextBlock> + </StackPanel> - <Rectangle HorizontalAlignment="Stretch" VerticalAlignment="Center" Height="8" Margin="200 0 80 0" StrokeThickness="1" Stroke="Gainsboro"> - <Rectangle.Fill> - <LinearGradientBrush StartPoint="0,0" EndPoint="1,0" x:Name="gradientBrush"></LinearGradientBrush> - </Rectangle.Fill> - </Rectangle> - </Grid> - <Grid Margin="0 10 0 0"> - <ListBox Style="{x:Null}" ScrollViewer.CanContentScroll="False" BorderThickness="0" ItemsSource="{Binding SelectedSegment.BrushStops}" SelectedItem="{Binding SelectedBrushStop}" HorizontalContentAlignment="Stretch"> - <ListBox.ItemContainerStyle> - <Style TargetType="ListBoxItem" BasedOn="{StaticResource basicListBoxItem}"> + <Rectangle HorizontalAlignment="Stretch" VerticalAlignment="Center" Height="8" Margin="200 0 80 0" StrokeThickness="1" Stroke="Gainsboro"> + <Rectangle.Fill> + <LinearGradientBrush StartPoint="0,0" EndPoint="1,0" x:Name="gradientBrush"></LinearGradientBrush> + </Rectangle.Fill> + </Rectangle> + </Grid> + <Grid Margin="0 10 0 0"> + <ListBox Style="{x:Null}" Background="Transparent" ScrollViewer.CanContentScroll="False" BorderThickness="0" ItemsSource="{Binding SelectedSegment.BrushStops}" SelectedItem="{Binding SelectedBrushStop}" HorizontalContentAlignment="Stretch"> + <ListBox.ItemContainerStyle> + <Style TargetType="ListBoxItem" BasedOn="{StaticResource basicListBoxItem}"> - </Style> - </ListBox.ItemContainerStyle> - <ItemsControl.ItemTemplate> - <DataTemplate DataType="{x:Type observables:BrushStop}"> + </Style> + </ListBox.ItemContainerStyle> + <ItemsControl.ItemTemplate> + <DataTemplate DataType="{x:Type observables:BrushStop}"> - <StackPanel Margin="0 0 0 5"> - <Border BorderThickness="1" CornerRadius="5" Padding="10" Background="Transparent" dragAndDrop:DragAndDropService.Drop="OnBrushStopBorderDrop"> - <Border.Style> - <Style TargetType="Border" BasedOn="{StaticResource brushStopBorder}"> - <Setter Property="BorderBrush" Value="{StaticResource SideBarBackground}"></Setter> - <Setter Property="Background" Value="White"></Setter> - <Style.Triggers> - <DataTrigger Binding="{Binding RelativeSource={RelativeSource AncestorType=ListBoxItem},Path=IsSelected,FallbackValue=False}" Value="True"> - <Setter Property="BorderBrush" Value="Gainsboro"></Setter> - <Setter Property="Background" Value="{StaticResource SideBarBackground}"></Setter> - </DataTrigger> - </Style.Triggers> - </Style> - </Border.Style> - <Grid> - <DockPanel> - <ContentControl DockPanel.Dock="Left"> - <ContentControl.Style> - <Style TargetType="ContentControl"> - <Setter Property="Content"> - <Setter.Value> - <Rectangle/> - </Setter.Value> - </Setter> - <Style.Triggers> - <DataTrigger Binding="{Binding ColorSpace.Name}" Value="Volume"> - <Setter Property="Content"> - <Setter.Value> - <StackPanel VerticalAlignment="Center"> - <ItemsControl ItemsSource="{Binding LiquidVolumes}" VerticalAlignment="Center"> - <ItemsControl.ItemsPanel> - <ItemsPanelTemplate> - <StackPanel VerticalAlignment="Center" Orientation="Horizontal" IsItemsHost="True"></StackPanel> - </ItemsPanelTemplate> - </ItemsControl.ItemsPanel> - <ItemsControl.ItemTemplate> - <DataTemplate> - <Border BorderThickness="1" Width="50" Height="50" CornerRadius="50" Margin="10 0 0 0"> - <Border.BorderBrush> - <SolidColorBrush Color="{Binding IdsPack.LiquidType.Color,Converter={StaticResource ColorToIntegerConverter}}"></SolidColorBrush> - </Border.BorderBrush> - <mahapps:NumericUpDown FontSize="14" FontFamily="digital-7" HorizontalAlignment="Center" Value="{Binding Volume, Mode=TwoWay}" Background="Transparent" Width="40" StringFormat="0.0" HideUpDownButtons="True" Minimum="0" Maximum="1000" InterceptArrowKeys="True" BorderThickness="0" InterceptMouseWheel="True" HasDecimals="True" HorizontalContentAlignment="Center"> - <mahapps:NumericUpDown.Resources> - <Style TargetType="TextBox"/> - </mahapps:NumericUpDown.Resources> - </mahapps:NumericUpDown> - </Border> - </DataTemplate> - </ItemsControl.ItemTemplate> - </ItemsControl> - </StackPanel> - </Setter.Value> - </Setter> - </DataTrigger> - <DataTrigger Binding="{Binding ColorSpace.Name}" Value="RGB"> - <Setter Property="Content"> - <Setter.Value> - <StackPanel Orientation="Horizontal"> - <Border BorderThickness="1" Width="50" Height="50" CornerRadius="50" Margin="10 0 0 0" BorderBrush="#FF6F6F"> - <mahapps:NumericUpDown FontSize="14" FontFamily="digital-7" HorizontalAlignment="Center" Value="{Binding Red, Mode=TwoWay}" Background="Transparent" Width="40" StringFormat="0" HideUpDownButtons="True" Minimum="0" Maximum="255" InterceptArrowKeys="True" BorderThickness="0" InterceptMouseWheel="True" HasDecimals="False" HorizontalContentAlignment="Center"> - <mahapps:NumericUpDown.Resources> - <Style TargetType="TextBox"/> - </mahapps:NumericUpDown.Resources> - </mahapps:NumericUpDown> - </Border> + <StackPanel Margin="0 0 0 5"> + <Border BorderThickness="1" CornerRadius="5" Padding="10" dragAndDrop:DragAndDropService.Drop="OnBrushStopBorderDrop"> + <Border.Style> + <Style TargetType="Border" BasedOn="{StaticResource brushStopBorder}"> + <Setter Property="BorderBrush" Value="{StaticResource SideBarBackground}"></Setter> + <Setter Property="Background" Value="#33FFFFFF"></Setter> + <Style.Triggers> + <DataTrigger Binding="{Binding RelativeSource={RelativeSource AncestorType=ListBoxItem},Path=IsSelected,FallbackValue=False}" Value="True"> + <Setter Property="BorderBrush" Value="Gainsboro"></Setter> + <Setter Property="Background" Value="{StaticResource SideBarBackground}"></Setter> + </DataTrigger> + </Style.Triggers> + </Style> + </Border.Style> + <Grid> + <DockPanel> + <ContentControl DockPanel.Dock="Left"> + <ContentControl.Style> + <Style TargetType="ContentControl"> + <Setter Property="Content"> + <Setter.Value> + <Rectangle/> + </Setter.Value> + </Setter> + <Style.Triggers> + <DataTrigger Binding="{Binding ColorSpace.Name}" Value="Volume"> + <Setter Property="Content"> + <Setter.Value> + <StackPanel VerticalAlignment="Center"> + <ItemsControl ItemsSource="{Binding LiquidVolumes}" VerticalAlignment="Center"> + <ItemsControl.ItemsPanel> + <ItemsPanelTemplate> + <StackPanel VerticalAlignment="Center" Orientation="Horizontal" IsItemsHost="True"></StackPanel> + </ItemsPanelTemplate> + </ItemsControl.ItemsPanel> + <ItemsControl.ItemTemplate> + <DataTemplate> + <Border BorderThickness="1" Width="50" Height="50" CornerRadius="50" Margin="10 0 0 0"> + <Border.BorderBrush> + <SolidColorBrush Color="{Binding IdsPack.LiquidType.Color,Converter={StaticResource ColorToIntegerConverter}}"></SolidColorBrush> + </Border.BorderBrush> + <mahapps:NumericUpDown FontSize="14" FontFamily="digital-7" HorizontalAlignment="Center" Value="{Binding Volume, Mode=TwoWay}" Background="Transparent" Width="40" StringFormat="0.0" HideUpDownButtons="True" Minimum="0" Maximum="1000" InterceptArrowKeys="True" BorderThickness="0" InterceptMouseWheel="True" HasDecimals="True" HorizontalContentAlignment="Center"> + <mahapps:NumericUpDown.Resources> + <Style TargetType="TextBox"/> + </mahapps:NumericUpDown.Resources> + </mahapps:NumericUpDown> + </Border> + </DataTemplate> + </ItemsControl.ItemTemplate> + </ItemsControl> + </StackPanel> + </Setter.Value> + </Setter> + </DataTrigger> + <DataTrigger Binding="{Binding ColorSpace.Name}" Value="RGB"> + <Setter Property="Content"> + <Setter.Value> + <StackPanel Orientation="Horizontal"> + <Border BorderThickness="1" Width="50" Height="50" CornerRadius="50" Margin="10 0 0 0" BorderBrush="#FF6F6F"> + <mahapps:NumericUpDown FontSize="14" FontFamily="digital-7" HorizontalAlignment="Center" Value="{Binding Red, Mode=TwoWay}" Background="Transparent" Width="40" StringFormat="0" HideUpDownButtons="True" Minimum="0" Maximum="255" InterceptArrowKeys="True" BorderThickness="0" InterceptMouseWheel="True" HasDecimals="False" HorizontalContentAlignment="Center"> + <mahapps:NumericUpDown.Resources> + <Style TargetType="TextBox"/> + </mahapps:NumericUpDown.Resources> + </mahapps:NumericUpDown> + </Border> - <Border BorderThickness="1" Width="50" Height="50" CornerRadius="50" Margin="10 0 0 0" BorderBrush="#92FF92"> - <mahapps:NumericUpDown FontSize="14" FontFamily="digital-7" HorizontalAlignment="Center" Value="{Binding Green, Mode=TwoWay}" Background="Transparent" Width="40" StringFormat="0" HideUpDownButtons="True" Minimum="0" Maximum="255" InterceptArrowKeys="True" BorderThickness="0" InterceptMouseWheel="True" HasDecimals="False" HorizontalContentAlignment="Center"> - <mahapps:NumericUpDown.Resources> - <Style TargetType="TextBox"/> - </mahapps:NumericUpDown.Resources> - </mahapps:NumericUpDown> - </Border> + <Border BorderThickness="1" Width="50" Height="50" CornerRadius="50" Margin="10 0 0 0" BorderBrush="#92FF92"> + <mahapps:NumericUpDown FontSize="14" FontFamily="digital-7" HorizontalAlignment="Center" Value="{Binding Green, Mode=TwoWay}" Background="Transparent" Width="40" StringFormat="0" HideUpDownButtons="True" Minimum="0" Maximum="255" InterceptArrowKeys="True" BorderThickness="0" InterceptMouseWheel="True" HasDecimals="False" HorizontalContentAlignment="Center"> + <mahapps:NumericUpDown.Resources> + <Style TargetType="TextBox"/> + </mahapps:NumericUpDown.Resources> + </mahapps:NumericUpDown> + </Border> - <Border BorderThickness="1" Width="50" Height="50" CornerRadius="50" Margin="10 0 0 0" BorderBrush="#3C7EF4"> - <mahapps:NumericUpDown FontSize="14" FontFamily="digital-7" HorizontalAlignment="Center" Value="{Binding Blue, Mode=TwoWay}" Background="Transparent" Width="40" StringFormat="0" HideUpDownButtons="True" Minimum="0" Maximum="255" InterceptArrowKeys="True" BorderThickness="0" InterceptMouseWheel="True" HasDecimals="False" HorizontalContentAlignment="Center"> - <mahapps:NumericUpDown.Resources> - <Style TargetType="TextBox"/> - </mahapps:NumericUpDown.Resources> - </mahapps:NumericUpDown> - </Border> + <Border BorderThickness="1" Width="50" Height="50" CornerRadius="50" Margin="10 0 0 0" BorderBrush="#3C7EF4"> + <mahapps:NumericUpDown FontSize="14" FontFamily="digital-7" HorizontalAlignment="Center" Value="{Binding Blue, Mode=TwoWay}" Background="Transparent" Width="40" StringFormat="0" HideUpDownButtons="True" Minimum="0" Maximum="255" InterceptArrowKeys="True" BorderThickness="0" InterceptMouseWheel="True" HasDecimals="False" HorizontalContentAlignment="Center"> + <mahapps:NumericUpDown.Resources> + <Style TargetType="TextBox"/> + </mahapps:NumericUpDown.Resources> + </mahapps:NumericUpDown> + </Border> - <ContentControl Style="{StaticResource colorPicker}"></ContentControl> - </StackPanel> - </Setter.Value> - </Setter> - </DataTrigger> - <DataTrigger Binding="{Binding ColorSpace.Name}" Value="CMYK"> - <Setter Property="Content"> - <Setter.Value> - <StackPanel Orientation="Horizontal"> - <Border BorderThickness="1" Width="50" Height="50" CornerRadius="50" Margin="10 0 0 0" BorderBrush="Cyan"> - <mahapps:NumericUpDown FontSize="14" FontFamily="digital-7" HorizontalAlignment="Center" Value="{Binding Cyan, Mode=TwoWay}" Background="Transparent" Width="40" StringFormat="0" HideUpDownButtons="True" Minimum="0" Maximum="100" InterceptArrowKeys="True" BorderThickness="0" InterceptMouseWheel="True" HasDecimals="True" HorizontalContentAlignment="Center"> - <mahapps:NumericUpDown.Resources> - <Style TargetType="TextBox"/> - </mahapps:NumericUpDown.Resources> - </mahapps:NumericUpDown> - </Border> + <ContentControl Style="{StaticResource colorPicker}"></ContentControl> + </StackPanel> + </Setter.Value> + </Setter> + </DataTrigger> + <DataTrigger Binding="{Binding ColorSpace.Name}" Value="CMYK"> + <Setter Property="Content"> + <Setter.Value> + <StackPanel Orientation="Horizontal"> + <Border BorderThickness="1" Width="50" Height="50" CornerRadius="50" Margin="10 0 0 0" BorderBrush="Cyan"> + <mahapps:NumericUpDown FontSize="14" FontFamily="digital-7" HorizontalAlignment="Center" Value="{Binding Cyan, Mode=TwoWay}" Background="Transparent" Width="40" StringFormat="0" HideUpDownButtons="True" Minimum="0" Maximum="100" InterceptArrowKeys="True" BorderThickness="0" InterceptMouseWheel="True" HasDecimals="True" HorizontalContentAlignment="Center"> + <mahapps:NumericUpDown.Resources> + <Style TargetType="TextBox"/> + </mahapps:NumericUpDown.Resources> + </mahapps:NumericUpDown> + </Border> - <Border BorderThickness="1" Width="50" Height="50" CornerRadius="50" Margin="10 0 0 0" BorderBrush="Magenta"> - <mahapps:NumericUpDown FontSize="14" FontFamily="digital-7" HorizontalAlignment="Center" Value="{Binding Magenta, Mode=TwoWay}" Background="Transparent" Width="40" StringFormat="0" HideUpDownButtons="True" Minimum="0" Maximum="100" InterceptArrowKeys="True" BorderThickness="0" InterceptMouseWheel="True" HasDecimals="True" HorizontalContentAlignment="Center"> - <mahapps:NumericUpDown.Resources> - <Style TargetType="TextBox"/> - </mahapps:NumericUpDown.Resources> - </mahapps:NumericUpDown> - </Border> + <Border BorderThickness="1" Width="50" Height="50" CornerRadius="50" Margin="10 0 0 0" BorderBrush="Magenta"> + <mahapps:NumericUpDown FontSize="14" FontFamily="digital-7" HorizontalAlignment="Center" Value="{Binding Magenta, Mode=TwoWay}" Background="Transparent" Width="40" StringFormat="0" HideUpDownButtons="True" Minimum="0" Maximum="100" InterceptArrowKeys="True" BorderThickness="0" InterceptMouseWheel="True" HasDecimals="True" HorizontalContentAlignment="Center"> + <mahapps:NumericUpDown.Resources> + <Style TargetType="TextBox"/> + </mahapps:NumericUpDown.Resources> + </mahapps:NumericUpDown> + </Border> - <Border BorderThickness="1" Width="50" Height="50" CornerRadius="50" Margin="10 0 0 0" BorderBrush="Yellow"> - <mahapps:NumericUpDown FontSize="14" FontFamily="digital-7" HorizontalAlignment="Center" Value="{Binding Yellow, Mode=TwoWay}" Background="Transparent" Width="40" StringFormat="0" HideUpDownButtons="True" Minimum="0" Maximum="100" InterceptArrowKeys="True" BorderThickness="0" InterceptMouseWheel="True" HasDecimals="True" HorizontalContentAlignment="Center"> - <mahapps:NumericUpDown.Resources> - <Style TargetType="TextBox"/> - </mahapps:NumericUpDown.Resources> - </mahapps:NumericUpDown> - </Border> + <Border BorderThickness="1" Width="50" Height="50" CornerRadius="50" Margin="10 0 0 0" BorderBrush="Yellow"> + <mahapps:NumericUpDown FontSize="14" FontFamily="digital-7" HorizontalAlignment="Center" Value="{Binding Yellow, Mode=TwoWay}" Background="Transparent" Width="40" StringFormat="0" HideUpDownButtons="True" Minimum="0" Maximum="100" InterceptArrowKeys="True" BorderThickness="0" InterceptMouseWheel="True" HasDecimals="True" HorizontalContentAlignment="Center"> + <mahapps:NumericUpDown.Resources> + <Style TargetType="TextBox"/> + </mahapps:NumericUpDown.Resources> + </mahapps:NumericUpDown> + </Border> - <Border BorderThickness="1" Width="50" Height="50" CornerRadius="50" Margin="10 0 0 0" BorderBrush="Black"> - <mahapps:NumericUpDown FontSize="14" FontFamily="digital-7" HorizontalAlignment="Center" Value="{Binding Black, Mode=TwoWay}" Background="Transparent" Width="40" StringFormat="0" HideUpDownButtons="True" Minimum="0" Maximum="100" InterceptArrowKeys="True" BorderThickness="0" InterceptMouseWheel="True" HasDecimals="True" HorizontalContentAlignment="Center"> - <mahapps:NumericUpDown.Resources> - <Style TargetType="TextBox"/> - </mahapps:NumericUpDown.Resources> - </mahapps:NumericUpDown> - </Border> + <Border BorderThickness="1" Width="50" Height="50" CornerRadius="50" Margin="10 0 0 0" BorderBrush="Black"> + <mahapps:NumericUpDown FontSize="14" FontFamily="digital-7" HorizontalAlignment="Center" Value="{Binding Black, Mode=TwoWay}" Background="Transparent" Width="40" StringFormat="0" HideUpDownButtons="True" Minimum="0" Maximum="100" InterceptArrowKeys="True" BorderThickness="0" InterceptMouseWheel="True" HasDecimals="True" HorizontalContentAlignment="Center"> + <mahapps:NumericUpDown.Resources> + <Style TargetType="TextBox"/> + </mahapps:NumericUpDown.Resources> + </mahapps:NumericUpDown> + </Border> - <Rectangle Margin="30 0 0 0" Width="50" Height="50" StrokeThickness="1" Stroke="Gray"> - <Rectangle.Fill> - <SolidColorBrush Color="{Binding Color}"> - </SolidColorBrush> - </Rectangle.Fill> - </Rectangle> - </StackPanel> - </Setter.Value> - </Setter> - </DataTrigger> - <DataTrigger Binding="{Binding ColorSpace.Name}" Value="LAB"> - <Setter Property="Content"> - <Setter.Value> - <StackPanel Orientation="Horizontal"> - <Border BorderThickness="1" Width="50" Height="50" CornerRadius="50" Margin="10 0 0 0" BorderBrush="Gray"> - <mahapps:NumericUpDown FontSize="14" FontFamily="digital-7" HorizontalAlignment="Center" Value="{Binding L, Mode=TwoWay}" Background="Transparent" Width="40" StringFormat="0.0" HideUpDownButtons="True" Minimum="-100" Maximum="100" InterceptArrowKeys="True" BorderThickness="0" InterceptMouseWheel="True" HasDecimals="True" HorizontalContentAlignment="Center"> - <mahapps:NumericUpDown.Resources> - <Style TargetType="TextBox"/> - </mahapps:NumericUpDown.Resources> - </mahapps:NumericUpDown> - </Border> + <Rectangle Margin="30 0 0 0" Width="50" Height="50" StrokeThickness="1" Stroke="Gray"> + <Rectangle.Fill> + <SolidColorBrush Color="{Binding Color}"> + </SolidColorBrush> + </Rectangle.Fill> + </Rectangle> + </StackPanel> + </Setter.Value> + </Setter> + </DataTrigger> + <DataTrigger Binding="{Binding ColorSpace.Name}" Value="LAB"> + <Setter Property="Content"> + <Setter.Value> + <StackPanel Orientation="Horizontal"> + <Border BorderThickness="1" Width="50" Height="50" CornerRadius="50" Margin="10 0 0 0" BorderBrush="Gray"> + <mahapps:NumericUpDown FontSize="14" FontFamily="digital-7" HorizontalAlignment="Center" Value="{Binding L, Mode=TwoWay}" Background="Transparent" Width="40" StringFormat="0.0" HideUpDownButtons="True" Minimum="-100" Maximum="100" InterceptArrowKeys="True" BorderThickness="0" InterceptMouseWheel="True" HasDecimals="True" HorizontalContentAlignment="Center"> + <mahapps:NumericUpDown.Resources> + <Style TargetType="TextBox"/> + </mahapps:NumericUpDown.Resources> + </mahapps:NumericUpDown> + </Border> - <Border BorderThickness="1" Width="50" Height="50" CornerRadius="50" Margin="10 0 0 0" BorderBrush="#FF8A8A"> - <mahapps:NumericUpDown FontSize="14" FontFamily="digital-7" HorizontalAlignment="Center" Value="{Binding A, Mode=TwoWay}" Background="Transparent" Width="40" StringFormat="0.0" HideUpDownButtons="True" Minimum="-100" Maximum="100" InterceptArrowKeys="True" BorderThickness="0" InterceptMouseWheel="True" HasDecimals="True" HorizontalContentAlignment="Center"> - <mahapps:NumericUpDown.Resources> - <Style TargetType="TextBox"/> - </mahapps:NumericUpDown.Resources> - </mahapps:NumericUpDown> - </Border> + <Border BorderThickness="1" Width="50" Height="50" CornerRadius="50" Margin="10 0 0 0" BorderBrush="#FF8A8A"> + <mahapps:NumericUpDown FontSize="14" FontFamily="digital-7" HorizontalAlignment="Center" Value="{Binding A, Mode=TwoWay}" Background="Transparent" Width="40" StringFormat="0.0" HideUpDownButtons="True" Minimum="-100" Maximum="100" InterceptArrowKeys="True" BorderThickness="0" InterceptMouseWheel="True" HasDecimals="True" HorizontalContentAlignment="Center"> + <mahapps:NumericUpDown.Resources> + <Style TargetType="TextBox"/> + </mahapps:NumericUpDown.Resources> + </mahapps:NumericUpDown> + </Border> - <Border BorderThickness="1" Width="50" Height="50" CornerRadius="50" Margin="10 0 0 0" BorderBrush="#FFFF8A"> - <mahapps:NumericUpDown FontSize="14" FontFamily="digital-7" HorizontalAlignment="Center" Value="{Binding B, Mode=TwoWay}" Background="Transparent" Width="40" StringFormat="0.0" HideUpDownButtons="True" Minimum="-100" Maximum="100" InterceptArrowKeys="True" BorderThickness="0" InterceptMouseWheel="True" HasDecimals="True" HorizontalContentAlignment="Center"> - <mahapps:NumericUpDown.Resources> - <Style TargetType="TextBox"/> - </mahapps:NumericUpDown.Resources> - </mahapps:NumericUpDown> - </Border> + <Border BorderThickness="1" Width="50" Height="50" CornerRadius="50" Margin="10 0 0 0" BorderBrush="#FFFF8A"> + <mahapps:NumericUpDown FontSize="14" FontFamily="digital-7" HorizontalAlignment="Center" Value="{Binding B, Mode=TwoWay}" Background="Transparent" Width="40" StringFormat="0.0" HideUpDownButtons="True" Minimum="-100" Maximum="100" InterceptArrowKeys="True" BorderThickness="0" InterceptMouseWheel="True" HasDecimals="True" HorizontalContentAlignment="Center"> + <mahapps:NumericUpDown.Resources> + <Style TargetType="TextBox"/> + </mahapps:NumericUpDown.Resources> + </mahapps:NumericUpDown> + </Border> - <Rectangle Margin="30 0 0 0" Width="50" Height="50" StrokeThickness="1" Stroke="Gray"> - <Rectangle.Fill> - <SolidColorBrush Color="{Binding Color}"> - </SolidColorBrush> - </Rectangle.Fill> - </Rectangle> - </StackPanel> - </Setter.Value> - </Setter> - </DataTrigger> - </Style.Triggers> - </Style> - </ContentControl.Style> - </ContentControl> + <Rectangle Margin="30 0 0 0" Width="50" Height="50" StrokeThickness="1" Stroke="Gray"> + <Rectangle.Fill> + <SolidColorBrush Color="{Binding Color}"> + </SolidColorBrush> + </Rectangle.Fill> + </Rectangle> + </StackPanel> + </Setter.Value> + </Setter> + </DataTrigger> + </Style.Triggers> + </Style> + </ContentControl.Style> + </ContentControl> - <Grid DockPanel.Dock="Right"> - <Border Style="{StaticResource JobFieldBorder}"> - <StackPanel Margin="5" Width="140"> - <StackPanel Orientation="Horizontal"> - <Image Source="../Images/colorspace.png" Width="24"></Image> - <TextBlock VerticalAlignment="Center" Margin="5 0 0 0" FontSize="10">Color Space</TextBlock> + <Grid DockPanel.Dock="Right"> + <Border Style="{StaticResource JobFieldBorder}"> + <StackPanel Margin="5" Width="140"> + <StackPanel Orientation="Horizontal"> + <Image Source="../Images/colorspace.png" Width="24"></Image> + <TextBlock VerticalAlignment="Center" Margin="5 0 0 0" FontSize="10">Color Space</TextBlock> + </StackPanel> + <ComboBox Background="#FCFCFC" ItemsSource="{Binding RelativeSource={RelativeSource AncestorType=UserControl},Path=DataContext.Adapter.ColorSpaces}" SelectedItem="{Binding ColorSpace}" DisplayMemberPath="Name"></ComboBox> </StackPanel> - <ComboBox ItemsSource="{Binding RelativeSource={RelativeSource AncestorType=UserControl},Path=DataContext.Adapter.ColorSpaces}" SelectedItem="{Binding ColorSpace}" DisplayMemberPath="Name"></ComboBox> + </Border> + </Grid> + <Grid> + <StackPanel VerticalAlignment="Center"> + <TextBlock Width="150" TextAlignment="Center" HorizontalAlignment="Center"><Run FontWeight="Bold" FontStyle="Italic" Text="OFFSET:"></Run> <Run FontFamily="digital-7" Text="{Binding OffsetPercent,StringFormat={}{0:F1}%}"></Run></TextBlock> + <Slider ValueChanged="Offset_Slider_ValueChanged" IsSnapToTickEnabled="True" TickFrequency="1" Margin="0 5 0 0" HorizontalAlignment="Center" Width="150" Value="{Binding OffsetPercent}"> + <Slider.Minimum> + <MultiBinding Converter="{StaticResource BrushStopToOffsetLimitConverter}" ConverterParameter="min"> + <Binding Path="."></Binding> + <Binding RelativeSource="{RelativeSource AncestorType=UserControl,Mode=FindAncestor}" Path="DataContext.SelectedSegment"></Binding> + <Binding Path="StopIndex"></Binding> + </MultiBinding> + </Slider.Minimum> + <Slider.Maximum> + <MultiBinding Converter="{StaticResource BrushStopToOffsetLimitConverter}" ConverterParameter="max"> + <Binding Path="."></Binding> + <Binding RelativeSource="{RelativeSource AncestorType=UserControl,Mode=FindAncestor}" Path="DataContext.SelectedSegment"></Binding> + </MultiBinding> + </Slider.Maximum> + </Slider> </StackPanel> - </Border> - </Grid> - <Grid> - <StackPanel VerticalAlignment="Center"> - <TextBlock Width="150" TextAlignment="Center" HorizontalAlignment="Center"><Run FontWeight="Bold" FontStyle="Italic" Text="OFFSET:"></Run> <Run FontFamily="digital-7" Text="{Binding OffsetPercent,StringFormat={}{0:F1}%}"></Run></TextBlock> - <Slider ValueChanged="Offset_Slider_ValueChanged" IsSnapToTickEnabled="True" TickFrequency="1" Margin="0 5 0 0" HorizontalAlignment="Center" Width="150" Value="{Binding OffsetPercent}"> - <Slider.Minimum> - <MultiBinding Converter="{StaticResource BrushStopToOffsetLimitConverter}" ConverterParameter="min"> - <Binding Path="."></Binding> - <Binding RelativeSource="{RelativeSource AncestorType=UserControl,Mode=FindAncestor}" Path="DataContext.SelectedSegment"></Binding> - <Binding Path="StopIndex"></Binding> - </MultiBinding> - </Slider.Minimum> - <Slider.Maximum> - <MultiBinding Converter="{StaticResource BrushStopToOffsetLimitConverter}" ConverterParameter="max"> - <Binding Path="."></Binding> - <Binding RelativeSource="{RelativeSource AncestorType=UserControl,Mode=FindAncestor}" Path="DataContext.SelectedSegment"></Binding> - </MultiBinding> - </Slider.Maximum> - </Slider> - </StackPanel> - </Grid> - </DockPanel> - </Grid> - </Border> + </Grid> + </DockPanel> + </Grid> + </Border> - <StackPanel> - <Grid VerticalAlignment="Top"> - <Grid.Style> - <Style TargetType="Grid"> - <Setter Property="LayoutTransform"> - <Setter.Value> - <ScaleTransform ScaleX="1" ScaleY="0" /> - </Setter.Value> - </Setter> - <Style.Triggers> - <DataTrigger Binding="{Binding ElementName=toggleExpand, Path=IsChecked}" Value="True"> - <DataTrigger.EnterActions> - <BeginStoryboard> - <Storyboard> - <DoubleAnimation Storyboard.TargetProperty="LayoutTransform.ScaleY" To="1" Duration="00:00:0.2" /> - </Storyboard> - </BeginStoryboard> - </DataTrigger.EnterActions> - <DataTrigger.ExitActions> - <BeginStoryboard> - <Storyboard> - <DoubleAnimation Storyboard.TargetProperty="LayoutTransform.ScaleY" To="0" Duration="00:00:0.2" /> - </Storyboard> - </BeginStoryboard> - </DataTrigger.ExitActions> - </DataTrigger> - </Style.Triggers> - </Style> - </Grid.Style> - <Grid> - <DataGrid ItemsSource="{Binding LiquidVolumes}" AutoGenerateColumns="False"> - <DataGrid.Columns> - <DataGridTemplateColumn Header="IDS PACK"> - <DataGridTemplateColumn.CellTemplate> - <DataTemplate> - <Grid x:Name="t0"> - <Polygon x:Name="t1" Points="0,0 20,0 0,20 0,0" Margin="-15 -11 0 0"> - <Polygon.Fill> - <SolidColorBrush x:Name="t2" Color="{Binding IdsPack.LiquidType.Color,Converter={StaticResource ColorToIntegerConverter},FallbackValue={StaticResource dummyColor}}" /> - </Polygon.Fill> - </Polygon> - <TextBlock TextWrapping="Wrap" TextAlignment="Center" VerticalAlignment="Center" Text="{Binding IdsPack.LiquidType.Name}"></TextBlock> - </Grid> - </DataTemplate> - </DataGridTemplateColumn.CellTemplate> - </DataGridTemplateColumn> - <DataGridTemplateColumn Header="DISPENSER NL / PULSE"> - <DataGridTemplateColumn.CellTemplate> - <DataTemplate> - <TextBlock VerticalAlignment="Center"> + <StackPanel> + <Grid VerticalAlignment="Top"> + <Grid.Style> + <Style TargetType="Grid"> + <Setter Property="LayoutTransform"> + <Setter.Value> + <ScaleTransform ScaleX="1" ScaleY="0" /> + </Setter.Value> + </Setter> + <Style.Triggers> + <DataTrigger Binding="{Binding ElementName=toggleExpand, Path=IsChecked}" Value="True"> + <DataTrigger.EnterActions> + <BeginStoryboard> + <Storyboard> + <DoubleAnimation Storyboard.TargetProperty="LayoutTransform.ScaleY" To="1" Duration="00:00:0.2" /> + </Storyboard> + </BeginStoryboard> + </DataTrigger.EnterActions> + <DataTrigger.ExitActions> + <BeginStoryboard> + <Storyboard> + <DoubleAnimation Storyboard.TargetProperty="LayoutTransform.ScaleY" To="0" Duration="00:00:0.2" /> + </Storyboard> + </BeginStoryboard> + </DataTrigger.ExitActions> + </DataTrigger> + </Style.Triggers> + </Style> + </Grid.Style> + <Grid> + <DataGrid ItemsSource="{Binding LiquidVolumes}" AutoGenerateColumns="False" Background="Transparent"> + <DataGrid.Columns> + <DataGridTemplateColumn Header="IDS PACK"> + <DataGridTemplateColumn.CellTemplate> + <DataTemplate> + <Grid x:Name="t0"> + <Polygon x:Name="t1" Points="0,0 15,0 0,15 0,0" Margin="-15 -11 0 0"> + <Polygon.Fill> + <SolidColorBrush x:Name="t2" Color="{Binding IdsPack.LiquidType.Color,Converter={StaticResource ColorToIntegerConverter},FallbackValue={StaticResource dummyColor}}" /> + </Polygon.Fill> + </Polygon> + <TextBlock FontWeight="SemiBold" TextWrapping="Wrap" TextAlignment="Center" VerticalAlignment="Center" Text="{Binding IdsPack.LiquidType.Name}"></TextBlock> + </Grid> + </DataTemplate> + </DataGridTemplateColumn.CellTemplate> + </DataGridTemplateColumn> + <DataGridTemplateColumn Header="DISPENSER NL / PULSE"> + <DataGridTemplateColumn.CellTemplate> + <DataTemplate> + <TextBlock VerticalAlignment="Center"> <Run Text="{Binding IdsPack.DispenserType.NlPerPulse,StringFormat='0.0'}"></Run> <Run Text="(nl)" FontSize="9" Foreground="Gray"></Run> - </TextBlock> - </DataTemplate> - </DataGridTemplateColumn.CellTemplate> - </DataGridTemplateColumn> - <DataGridTemplateColumn Header="LIQUID MAX NL / CM"> - <DataGridTemplateColumn.CellTemplate> - <DataTemplate> - <TextBlock VerticalAlignment="Center"> + </TextBlock> + </DataTemplate> + </DataGridTemplateColumn.CellTemplate> + </DataGridTemplateColumn> + <DataGridTemplateColumn Header="LIQUID MAX NL / CM"> + <DataGridTemplateColumn.CellTemplate> + <DataTemplate> + <TextBlock VerticalAlignment="Center"> <Run Text="{Binding LiquidMaxNanoliterPerCentimeter,Mode=OneWay,StringFormat='0.0'}"></Run> <Run Text="(nl)" FontSize="9" Foreground="Gray"></Run> - </TextBlock> - </DataTemplate> - </DataGridTemplateColumn.CellTemplate> - </DataGridTemplateColumn> - <DataGridTemplateColumn Header="VOLUME"> - <DataGridTemplateColumn.CellTemplate> - <DataTemplate> - <TextBlock VerticalAlignment="Center"> + </TextBlock> + </DataTemplate> + </DataGridTemplateColumn.CellTemplate> + </DataGridTemplateColumn> + <DataGridTemplateColumn Header="VOLUME"> + <DataGridTemplateColumn.CellTemplate> + <DataTemplate> + <TextBlock VerticalAlignment="Center"> <Run Text="{Binding Volume,StringFormat='0.0'}"></Run> <Run Text="%" Foreground="Gray"></Run> - </TextBlock> - </DataTemplate> - </DataGridTemplateColumn.CellTemplate> - </DataGridTemplateColumn> - <DataGridTemplateColumn Header="FORMULA"> - <DataGridTemplateColumn.CellTemplate> - <DataTemplate> - <TextBlock VerticalAlignment="Center"> + </TextBlock> + </DataTemplate> + </DataGridTemplateColumn.CellTemplate> + </DataGridTemplateColumn> + <DataGridTemplateColumn Header="FORMULA"> + <DataGridTemplateColumn.CellTemplate> + <DataTemplate> + <TextBlock VerticalAlignment="Center"> <Run Text="{Binding IdsPack.IdsPackFormula.Name}"></Run> - </TextBlock> - </DataTemplate> - </DataGridTemplateColumn.CellTemplate> - </DataGridTemplateColumn> - <DataGridTemplateColumn Header="NANOLITER / SEC"> - <DataGridTemplateColumn.CellTemplate> - <DataTemplate> - <TextBlock VerticalAlignment="Center"> + </TextBlock> + </DataTemplate> + </DataGridTemplateColumn.CellTemplate> + </DataGridTemplateColumn> + <DataGridTemplateColumn Header="NL / CM"> + <DataGridTemplateColumn.CellTemplate> + <DataTemplate> + <TextBlock VerticalAlignment="Center"> + <Run Text="{Binding NanoliterPerCentimeter,Mode=OneWay,StringFormat='0.0'}"></Run> + <Run Text="(nl)" FontSize="9" Foreground="Gray"></Run> + </TextBlock> + </DataTemplate> + </DataGridTemplateColumn.CellTemplate> + </DataGridTemplateColumn> + <DataGridTemplateColumn Header="NL / SEC"> + <DataGridTemplateColumn.CellTemplate> + <DataTemplate> + <TextBlock VerticalAlignment="Center"> <Run Text="{Binding NanoliterPerSecond,Mode=OneWay,StringFormat='0.0'}"></Run> <Run Text="(nl)" FontSize="9" Foreground="Gray"></Run> - </TextBlock> - </DataTemplate> - </DataGridTemplateColumn.CellTemplate> - </DataGridTemplateColumn> - <DataGridTemplateColumn Header="PULSE / SEC"> - <DataGridTemplateColumn.CellTemplate> - <DataTemplate> - <TextBlock VerticalAlignment="Center"> + </TextBlock> + </DataTemplate> + </DataGridTemplateColumn.CellTemplate> + </DataGridTemplateColumn> + <DataGridTemplateColumn Header="PULSE / SEC"> + <DataGridTemplateColumn.CellTemplate> + <DataTemplate> + <TextBlock VerticalAlignment="Center"> <Run Text="{Binding PulsePerSecond,Mode=OneWay,StringFormat='0.0'}"></Run> <Run Text="(pulse)" FontSize="9" Foreground="Gray"></Run> - </TextBlock> - </DataTemplate> - </DataGridTemplateColumn.CellTemplate> - </DataGridTemplateColumn> - </DataGrid.Columns> - </DataGrid> + </TextBlock> + </DataTemplate> + </DataGridTemplateColumn.CellTemplate> + </DataGridTemplateColumn> + </DataGrid.Columns> + </DataGrid> + </Grid> </Grid> - </Grid> - <ToggleButton Margin="5" x:Name="toggleExpand" Style="{StaticResource MaterialDesignFlatToggleButton}" ToolTip="View more" HorizontalAlignment="Right" Padding="0" Width="24" Height="24" VerticalContentAlignment="Center"> - <materialDesign:PackIcon VerticalAlignment="Center"> - <materialDesign:PackIcon.Style> - <Style TargetType="materialDesign:PackIcon"> - <Setter Property="Kind" Value="ArrowDown"></Setter> - <Setter Property="Margin" Value="0"></Setter> - <Style.Triggers> - <DataTrigger Binding="{Binding RelativeSource={RelativeSource AncestorType=ToggleButton},Path=IsChecked}" Value="True"> - <Setter Property="Kind" Value="ArrowUp"></Setter> - </DataTrigger> - </Style.Triggers> - </Style> - </materialDesign:PackIcon.Style> - </materialDesign:PackIcon> - </ToggleButton> + <ToggleButton Margin="5" x:Name="toggleExpand" Style="{StaticResource MaterialDesignFlatToggleButton}" ToolTip="View more" HorizontalAlignment="Right" Padding="0" Width="24" Height="24" VerticalContentAlignment="Center"> + <materialDesign:PackIcon VerticalAlignment="Center"> + <materialDesign:PackIcon.Style> + <Style TargetType="materialDesign:PackIcon"> + <Setter Property="Kind" Value="ArrowDown"></Setter> + <Setter Property="Margin" Value="0"></Setter> + <Style.Triggers> + <DataTrigger Binding="{Binding RelativeSource={RelativeSource AncestorType=ToggleButton},Path=IsChecked}" Value="True"> + <Setter Property="Kind" Value="ArrowUp"></Setter> + </DataTrigger> + </Style.Triggers> + </Style> + </materialDesign:PackIcon.Style> + </materialDesign:PackIcon> + </ToggleButton> + </StackPanel> </StackPanel> - </StackPanel> - </DataTemplate> - </ItemsControl.ItemTemplate> - </ListBox> - </Grid> - </DockPanel> - </Grid> - </DockPanel> - </Grid> - </DockPanel> + </DataTemplate> + </ItemsControl.ItemTemplate> + </ListBox> + </Grid> + </DockPanel> + </Grid> + </DockPanel> + </Grid> + </DockPanel> + </Grid> </Grid> - </Grid> - <Grid Height="60" Grid.Row="1"> - <DockPanel> - <Grid DockPanel.Dock="Left"> - <StackPanel HorizontalAlignment="Left" Margin="0 0 0 0"> - <TextBlock FontSize="14" Margin="0 20 0 0"> + <Grid Height="60" Grid.Row="1"> + <DockPanel> + <Grid DockPanel.Dock="Left"> + <StackPanel HorizontalAlignment="Left" Margin="0 0 0 0"> + <TextBlock FontSize="14" Margin="0 20 0 0"> <Run FontWeight="Bold">ESTIMATED DURATION:</Run> <Run FontSize="18" Foreground="{StaticResource AccentColorBrush}" FontStyle="Italic" FontFamily="digital-7" Text="{Binding EstimatedDuration,StringFormat=hh\\:mm\\:ss,TargetNullValue='00:00:00'}"></Run> - </TextBlock> - </StackPanel> - </Grid> + </TextBlock> + </StackPanel> + </Grid> - <Grid DockPanel.Dock="Right"> - <StackPanel Orientation="Horizontal"> - <Button Height="40" Width="170"> - <StackPanel Orientation="Horizontal"> - <materialDesign:PackIcon VerticalAlignment="Center" Width="24" Height="24" Kind="ClockFast" /> - <TextBlock VerticalAlignment="Center" Margin="10 0 0 0">START</TextBlock> - </StackPanel> - </Button> - </StackPanel> - </Grid> + <Grid DockPanel.Dock="Right"> + <StackPanel Orientation="Horizontal"> + <Button Height="40" Width="170" Command="{Binding StartJobCommand}"> + <StackPanel Orientation="Horizontal"> + <materialDesign:PackIcon VerticalAlignment="Center" Width="24" Height="24" Kind="ClockFast" /> + <TextBlock VerticalAlignment="Center" Margin="10 0 0 0">START</TextBlock> + </StackPanel> + </Button> + </StackPanel> + </Grid> - <Grid> - <Border VerticalAlignment="Center" Height="10" Margin="30 0 40 0" BorderBrush="Gainsboro" BorderThickness="1" ClipToBounds="False"> - <Grid ClipToBounds="False"> - <ItemsControl x:Name="jobBrushList" ClipToBounds="False"> - <ItemsControl.ItemsPanel> - <ItemsPanelTemplate> - <StackPanel Orientation="Horizontal" ClipToBounds="False"></StackPanel> - </ItemsPanelTemplate> - </ItemsControl.ItemsPanel> - <ItemsControl.ItemTemplate> - <DataTemplate> - <Grid> - <Grid.Width> - <MultiBinding Converter="{StaticResource SegmentLengthToWidthConverter}"> - <Binding RelativeSource="{RelativeSource AncestorType=UserControl}" Path="DataContext.SelectedJob"></Binding> - <Binding RelativeSource="{RelativeSource AncestorType=UserControl}" Path="DataContext.SelectedJob.Length"></Binding> - <Binding RelativeSource="{RelativeSource AncestorType=ItemsControl}" Path="ActualWidth"></Binding> - <Binding Path="Length"></Binding> - </MultiBinding> - </Grid.Width> - <Rectangle> - <Rectangle.Fill> - <MultiBinding Converter="{StaticResource SegmentToBrushConverterMulti}"> - <Binding Path="."></Binding> + <Grid> + <Border VerticalAlignment="Center" Height="10" Margin="30 0 40 0" BorderBrush="Gainsboro" BorderThickness="1" ClipToBounds="False"> + <Grid ClipToBounds="False"> + <ItemsControl x:Name="jobBrushList" ClipToBounds="False"> + <ItemsControl.ItemsPanel> + <ItemsPanelTemplate> + <StackPanel Orientation="Horizontal" ClipToBounds="False"></StackPanel> + </ItemsPanelTemplate> + </ItemsControl.ItemsPanel> + <ItemsControl.ItemTemplate> + <DataTemplate> + <Grid> + <Grid.Width> + <MultiBinding Converter="{StaticResource SegmentLengthToWidthConverter}"> <Binding RelativeSource="{RelativeSource AncestorType=UserControl}" Path="DataContext.SelectedJob"></Binding> <Binding RelativeSource="{RelativeSource AncestorType=UserControl}" Path="DataContext.SelectedJob.Length"></Binding> - <Binding RelativeSource="{RelativeSource AncestorType=UserControl}" Path="DataContext.SelectedBrushStop.Color"></Binding> + <Binding RelativeSource="{RelativeSource AncestorType=ItemsControl}" Path="ActualWidth"></Binding> + <Binding Path="Length"></Binding> </MultiBinding> - </Rectangle.Fill> - </Rectangle> + </Grid.Width> + <Rectangle> + <Rectangle.Fill> + <MultiBinding Converter="{StaticResource SegmentToBrushConverterMulti}"> + <Binding Path="."></Binding> + <Binding RelativeSource="{RelativeSource AncestorType=UserControl}" Path="DataContext.SelectedJob"></Binding> + <Binding RelativeSource="{RelativeSource AncestorType=UserControl}" Path="DataContext.SelectedJob.Length"></Binding> + <Binding RelativeSource="{RelativeSource AncestorType=UserControl}" Path="DataContext.SelectedBrushStop.Color"></Binding> + </MultiBinding> + </Rectangle.Fill> + </Rectangle> - <StackPanel Margin="0 -23 0 0" HorizontalAlignment="Right"> - <TextBlock FontSize="9" HorizontalAlignment="Right"> + <StackPanel Margin="0 -23 0 0" HorizontalAlignment="Right"> + <TextBlock FontSize="9" HorizontalAlignment="Right"> <Run Text="{Binding Length,Mode=OneWay}"></Run> <Run Foreground="Gray" FontSize="8" Text="m"></Run> - </TextBlock> - <materialDesign:PackIcon HorizontalAlignment="Right" RenderTransformOrigin="0.5,0.5" Kind="Triangle" Width="8" Height="8" Foreground="DimGray"> - <materialDesign:PackIcon.RenderTransform> - <RotateTransform Angle="180" /> - </materialDesign:PackIcon.RenderTransform> - </materialDesign:PackIcon> - </StackPanel> - </Grid> - </DataTemplate> - </ItemsControl.ItemTemplate> - </ItemsControl> + </TextBlock> + <materialDesign:PackIcon HorizontalAlignment="Right" RenderTransformOrigin="0.5,0.5" Kind="Triangle" Width="8" Height="8" Foreground="DimGray"> + <materialDesign:PackIcon.RenderTransform> + <RotateTransform Angle="180" /> + </materialDesign:PackIcon.RenderTransform> + </materialDesign:PackIcon> + </StackPanel> + </Grid> + </DataTemplate> + </ItemsControl.ItemTemplate> + </ItemsControl> - <StackPanel Margin="-20 -26 0 0" HorizontalAlignment="Left"> - <TextBlock FontSize="9"> + <StackPanel Margin="-20 -26 0 0" HorizontalAlignment="Left"> + <TextBlock FontSize="9"> <Run Text="0"></Run> <Run Foreground="Gray" FontSize="8" Text="m"></Run> - </TextBlock> - <materialDesign:PackIcon HorizontalAlignment="Right" RenderTransformOrigin="0.5,0.5" Kind="SubdirectoryArrowRight" Width="16" Height="16" Foreground="DimGray"> + </TextBlock> + <materialDesign:PackIcon HorizontalAlignment="Right" RenderTransformOrigin="0.5,0.5" Kind="SubdirectoryArrowRight" Width="16" Height="16" Foreground="DimGray"> - </materialDesign:PackIcon> - </StackPanel> + </materialDesign:PackIcon> + </StackPanel> - <StackPanel Margin="0 -26 -30 0" HorizontalAlignment="Right"> - <TextBlock FontSize="9"> + <StackPanel Margin="0 -26 -30 0" HorizontalAlignment="Right"> + <TextBlock FontSize="9"> <Run Text="{Binding SelectedJob.Length,Mode=OneWay}"></Run> <Run Foreground="Gray" FontSize="8" Text="m"></Run> - </TextBlock> - <materialDesign:PackIcon HorizontalAlignment="Right" RenderTransformOrigin="0.5,0.5" Kind="FlagCheckered" Width="16" Height="16" Foreground="DimGray"> + </TextBlock> + <materialDesign:PackIcon HorizontalAlignment="Right" RenderTransformOrigin="0.5,0.5" Kind="FlagCheckered" Width="16" Height="16" Foreground="DimGray"> - </materialDesign:PackIcon> - </StackPanel> + </materialDesign:PackIcon> + </StackPanel> + </Grid> + </Border> + </Grid> + </DockPanel> + </Grid> + </Grid> + </Grid> + + <Grid Grid.Column="1" Margin="10 0 0 0" Width="340"> + <Grid.Style> + <Style TargetType="Grid"> + <Setter Property="LayoutTransform"> + <Setter.Value> + <ScaleTransform ScaleY="1" ScaleX="1"></ScaleTransform> + </Setter.Value> + </Setter> + <Style.Triggers> + <DataTrigger Binding="{Binding IsSideBarOpened}" Value="True"> + <DataTrigger.EnterActions> + <BeginStoryboard> + <Storyboard> + <DoubleAnimation Storyboard.TargetProperty="LayoutTransform.ScaleX" To="0" Duration="00:00:0.2"></DoubleAnimation> + </Storyboard> + </BeginStoryboard> + </DataTrigger.EnterActions> + <DataTrigger.ExitActions> + <BeginStoryboard> + <Storyboard> + <DoubleAnimation Storyboard.TargetProperty="LayoutTransform.ScaleX" To="1" Duration="00:00:0.2"></DoubleAnimation> + </Storyboard> + </BeginStoryboard> + </DataTrigger.ExitActions> + </DataTrigger> + </Style.Triggers> + </Style> + </Grid.Style> + + <Grid Margin="5 0 0 0"> + <DockPanel Height="850" VerticalAlignment="Top"> + <StackPanel Orientation="Horizontal" DockPanel.Dock="Top"> + <Image Source="../Images/camera.png" Width="42"></Image> + <TextBlock VerticalAlignment="Center" Margin="10 0 0 0" Foreground="DimGray" FontSize="16" FontWeight="SemiBold">USB CAMERAS</TextBlock> + </StackPanel> + <UniformGrid Rows="3"> + <Border RenderOptions.BitmapScalingMode="Fant"> + <Border.Background> + <ImageBrush ImageSource="../Images/video-frame.png" Stretch="Fill"></ImageBrush> + </Border.Background> + + <Grid> + <Label Margin="22 23 0 0" Style="{StaticResource graphLabel}"> + <TextBlock FontFamily="digital-7" VerticalAlignment="Center" FontSize="10" Margin="0 0 30 0">CAMERA 1</TextBlock> + </Label> </Grid> </Border> - </Grid> + <Border RenderOptions.BitmapScalingMode="Fant"> + <Border.Background> + <ImageBrush ImageSource="../Images/video-frame.png" Stretch="Fill"></ImageBrush> + </Border.Background> + + <Grid> + <Label Margin="22 23 0 0" Style="{StaticResource graphLabel}"> + <TextBlock FontFamily="digital-7" VerticalAlignment="Center" FontSize="10" Margin="0 0 30 0">CAMERA 2</TextBlock> + </Label> + </Grid> + </Border> + <Border RenderOptions.BitmapScalingMode="Fant"> + <Border.Background> + <ImageBrush ImageSource="../Images/video-frame.png" Stretch="Fill"></ImageBrush> + </Border.Background> + + <Grid> + <Label Margin="22 23 0 0" Style="{StaticResource graphLabel}"> + <TextBlock FontFamily="digital-7" VerticalAlignment="Center" FontSize="10" Margin="0 0 30 0">CAMERA 3</TextBlock> + </Label> + </Grid> + </Border> + </UniformGrid> + </DockPanel> + </Grid> + + </Grid> + + </Grid> + + <Grid Grid.Row="1" Grid.ColumnSpan="2" Background="{StaticResource SideBarBackground}"> + <Grid Margin="10 70 10 10"> + <Grid.ColumnDefinitions> + <ColumnDefinition Width="1*"/> + <ColumnDefinition Width="350"/> + </Grid.ColumnDefinitions> + + <Grid Grid.Column="1"> + <DockPanel> + <StackPanel Orientation="Horizontal" DockPanel.Dock="Top"> + <Image Source="../Images/graphs.png" Width="42"></Image> + <TextBlock VerticalAlignment="Center" Margin="10 0 0 0" Foreground="DimGray" FontSize="16" FontWeight="SemiBold">AVAILABLE GRAPHS</TextBlock> + </StackPanel> + <ScrollViewer Margin="0 5 0 0" VerticalScrollBarVisibility="Auto"> + <ItemsControl Margin="0 0 5 0" ItemsSource="{Binding AvailableSensors}"> + <ItemsControl.ItemsPanel> + <ItemsPanelTemplate> + <UniformGrid Columns="2" IsItemsHost="True"></UniformGrid> + </ItemsPanelTemplate> + </ItemsControl.ItemsPanel> + <ItemsControl.ItemTemplate> + <DataTemplate DataType="{x:Type observables:Sensor}"> + <Border dragAndDrop:DragAndDropService.Draggable="True" dragAndDrop:DragAndDropService.DraggingSurface="{Binding RelativeSource={RelativeSource AncestorType=UserControl},Path=DraggingSurface}" Margin="5" CornerRadius="3" Height="120" BorderThickness="1" BorderBrush="Silver" ClipToBounds="True"> + <Border.Background> + <ImageBrush ImageSource="../Images/line_graph.png" Stretch="Fill"></ImageBrush> + </Border.Background> + <Grid> + <Label HorizontalAlignment="Left" VerticalAlignment="Top" Style="{StaticResource graphLabel}"> + <TextBlock Foreground="DimGray" VerticalAlignment="Center" Text="{Binding Description}"></TextBlock> + </Label> + </Grid> + </Border> + </DataTemplate> + </ItemsControl.ItemTemplate> + </ItemsControl> + </ScrollViewer> </DockPanel> </Grid> + + <Grid> + <Grid Margin="0 0 10 0" Style="{StaticResource droppableGrid}" dragAndDrop:DragAndDropService.Drop="OnDropAvailableSensor"> + <Border> + <ItemsControl ItemsSource="{Binding Graphs}"> + <ItemsControl.ItemsPanel> + <ItemsPanelTemplate> + <UniformGrid IsItemsHost="True"> + <UniformGrid.Style> + <Style TargetType="UniformGrid"> + <Setter Property="Columns" Value="1"></Setter> + <Setter Property="Rows" Value="1"></Setter> + <Style.Triggers> + <DataTrigger Binding="{Binding Graphs.Count,Converter={StaticResource SmallerThanToBooleanConverter},ConverterParameter=3}" Value="True"> + <Setter Property="Columns" Value="{Binding Graphs.Count}"></Setter> + <Setter Property="Rows" Value="1"></Setter> + </DataTrigger> + <MultiDataTrigger> + <MultiDataTrigger.Conditions> + <Condition Binding="{Binding Graphs.Count,Converter={StaticResource GreaterThanToBooleanConverter},ConverterParameter=2}" Value="True"></Condition> + <Condition Binding="{Binding Graphs.Count,Converter={StaticResource SmallerThanToBooleanConverter},ConverterParameter=5}" Value="True"></Condition> + </MultiDataTrigger.Conditions> + <Setter Property="Columns" Value="2"></Setter> + <Setter Property="Rows" Value="2"></Setter> + </MultiDataTrigger> + <MultiDataTrigger> + <MultiDataTrigger.Conditions> + <Condition Binding="{Binding Graphs.Count,Converter={StaticResource GreaterThanToBooleanConverter},ConverterParameter=4}" Value="True"></Condition> + <Condition Binding="{Binding Graphs.Count,Converter={StaticResource SmallerThanToBooleanConverter},ConverterParameter=7}" Value="True"></Condition> + </MultiDataTrigger.Conditions> + <Setter Property="Columns" Value="3"></Setter> + <Setter Property="Rows" Value="2"></Setter> + </MultiDataTrigger> + <DataTrigger Binding="{Binding Graphs.Count,Converter={StaticResource GreaterThanToBooleanConverter},ConverterParameter=6}" Value="True"> + <Setter Property="Columns" Value="4"></Setter> + <Setter Property="Rows" Value="2"></Setter> + </DataTrigger> + </Style.Triggers> + </Style> + </UniformGrid.Style> + </UniformGrid> + </ItemsPanelTemplate> + </ItemsControl.ItemsPanel> + </ItemsControl> + </Border> + <Grid> + <Grid.Style> + <Style TargetType="Grid"> + <Setter Property="Visibility" Value="Collapsed"></Setter> + <Style.Triggers> + <DataTrigger Binding="{Binding Graphs.Count}" Value="0"> + <Setter Property="Visibility" Value="Visible"></Setter> + </DataTrigger> + </Style.Triggers> + </Style> + </Grid.Style> + <TextBlock Foreground="Silver" VerticalAlignment="Center" HorizontalAlignment="Center" FontSize="30">DRAG & DROP GRAPHS</TextBlock> + </Grid> + </Grid> + </Grid> </Grid> + + <Border VerticalAlignment="Top" Height="50" CornerRadius="0 0 50 50"> + <Border.Effect> + <DropShadowEffect BlurRadius="30" ShadowDepth="20" Opacity="0.2" /> + </Border.Effect> + <Border.Background> + <LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1"> + <GradientStop Color="White" Offset="0" /> + <GradientStop Color="#FFE6E6E6" Offset="1"/> + + </LinearGradientBrush> + </Border.Background> + + <StackPanel Orientation="Horizontal" HorizontalAlignment="Right" Margin="0 0 120 0"> + <ToggleButton x:Name="chkGraphs" IsChecked="False"></ToggleButton> + <TextBlock VerticalAlignment="Center" Margin="5 -1 0 0" Foreground="Gray">Show Graphs</TextBlock> + </StackPanel> + </Border> </Grid> - <Grid Grid.Column="1" Margin="10 0 0 0" Width="340"> + <Grid Grid.ColumnSpan="3" Background="White"> <Grid.Style> <Style TargetType="Grid"> - <Setter Property="LayoutTransform"> + <Setter Property="RenderTransform"> <Setter.Value> - <ScaleTransform ScaleY="1" ScaleX="1"></ScaleTransform> + <ScaleTransform ScaleY="1" ScaleX="0"></ScaleTransform> </Setter.Value> </Setter> <Style.Triggers> @@ -1085,14 +1335,14 @@ <DataTrigger.EnterActions> <BeginStoryboard> <Storyboard> - <DoubleAnimation Storyboard.TargetProperty="LayoutTransform.ScaleX" To="0" Duration="00:00:0.2"></DoubleAnimation> + <DoubleAnimation Storyboard.TargetProperty="RenderTransform.ScaleX" To="1" Duration="00:00:0.5"></DoubleAnimation> </Storyboard> </BeginStoryboard> </DataTrigger.EnterActions> <DataTrigger.ExitActions> <BeginStoryboard> <Storyboard> - <DoubleAnimation Storyboard.TargetProperty="LayoutTransform.ScaleX" To="1" Duration="00:00:0.2"></DoubleAnimation> + <DoubleAnimation Storyboard.TargetProperty="RenderTransform.ScaleX" To="0" Duration="00:00:0.5"></DoubleAnimation> </Storyboard> </BeginStoryboard> </DataTrigger.ExitActions> @@ -1100,374 +1350,178 @@ </Style.Triggers> </Style> </Grid.Style> + <TextBlock HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="40">MONITORING</TextBlock> + </Grid> + </Grid> + </Grid> + </Grid> - <Grid Margin="5 0 0 0"> - <DockPanel> - <StackPanel Orientation="Horizontal" DockPanel.Dock="Top"> - <Image Source="../Images/camera.png" Width="42"></Image> - <TextBlock VerticalAlignment="Center" Margin="10 0 0 0" Foreground="DimGray" FontSize="16" FontWeight="SemiBold">USB CAMERAS</TextBlock> - </StackPanel> - <UniformGrid Rows="3"> - <Border RenderOptions.BitmapScalingMode="Fant"> - <Border.Background> - <ImageBrush ImageSource="../Images/video-frame.png" Stretch="Fill"></ImageBrush> - </Border.Background> + <Grid Background="{StaticResource SideBarBackground}"> + <Grid.Style> + <Style TargetType="Grid"> + <Setter Property="Width" Value="550"></Setter> + <Setter Property="LayoutTransform"> + <Setter.Value> + <ScaleTransform ScaleY="1" ScaleX="0"></ScaleTransform> + </Setter.Value> + </Setter> + <Style.Triggers> + <DataTrigger Binding="{Binding IsSideBarOpened}" Value="True"> + <DataTrigger.EnterActions> + <BeginStoryboard> + <Storyboard> + <DoubleAnimation Storyboard.TargetProperty="LayoutTransform.ScaleX" To="1" Duration="00:00:0.2"></DoubleAnimation> + </Storyboard> + </BeginStoryboard> + </DataTrigger.EnterActions> + <DataTrigger.ExitActions> + <BeginStoryboard> + <Storyboard> + <DoubleAnimation Storyboard.TargetProperty="LayoutTransform.ScaleX" To="0" Duration="00:00:0.2"></DoubleAnimation> + </Storyboard> + </BeginStoryboard> + </DataTrigger.ExitActions> + </DataTrigger> + </Style.Triggers> + </Style> + </Grid.Style> - <Grid> - <Label Margin="22 17 0 0" Style="{StaticResource graphLabel}"> - <TextBlock FontFamily="digital-7" VerticalAlignment="Center" FontSize="10" Margin="0 0 30 0">CAMERA 1</TextBlock> - </Label> - </Grid> - </Border> - <Border RenderOptions.BitmapScalingMode="Fant"> - <Border.Background> - <ImageBrush ImageSource="../Images/video-frame.png" Stretch="Fill"></ImageBrush> - </Border.Background> + <ScrollViewer VerticalScrollBarVisibility="Auto" FlowDirection="RightToLeft"> + <materialDesign:Card Background="{StaticResource SideBarBackground}" FlowDirection="LeftToRight"> + <StackPanel> + <Expander Header="MACHINE" IsExpanded="True" Background="{StaticResource SideBarBackground}"> + <StackPanel Margin="0 0 0 0"> + <ComboBox ItemsSource="{Binding Adapter.Machines}" SelectedItem="{Binding SelectedMachine}" materialDesign:HintAssist.IsFloating="True" materialDesign:HintAssist.Hint="Selected Machine" Margin="40 0 40 0"> + <ComboBox.ItemTemplate> + <DataTemplate> + <StackPanel> + <TextBlock Text="{Binding SerialNumber}" FontWeight="Bold" FontStyle="Italic"></TextBlock> + <TextBlock FontSize="11" Text="{Binding Name}" Foreground="Gray"></TextBlock> + </StackPanel> + </DataTemplate> + </ComboBox.ItemTemplate> + </ComboBox> + <designer:MachineView Width="540" IsHitTestVisible="False" Margin="0 40 0 0" DataContext="{Binding SelectedMachine}" /> + <Button Command="{Binding EditMachineCommand}" HorizontalAlignment="Right" Margin="0 10 20 20" Style="{StaticResource MaterialDesignFlatButton}"> + <StackPanel Orientation="Horizontal"> + <materialDesign:PackIcon VerticalAlignment="Center" Kind="Pencil"></materialDesign:PackIcon> + <TextBlock Margin="10 0 0 0">EDIT</TextBlock> + </StackPanel> + </Button> + </StackPanel> + </Expander> - <Grid> - <Label Margin="22 17 0 0" Style="{StaticResource graphLabel}"> - <TextBlock FontFamily="digital-7" VerticalAlignment="Center" FontSize="10" Margin="0 0 30 0">CAMERA 2</TextBlock> - </Label> - </Grid> - </Border> - <Border RenderOptions.BitmapScalingMode="Fant"> - <Border.Background> - <ImageBrush ImageSource="../Images/video-frame.png" Stretch="Fill"></ImageBrush> - </Border.Background> + <Separator Foreground="{StaticResource MaterialDesignDivider}" Background="{StaticResource MaterialDesignDivider}" /> - <Grid> - <Label Margin="22 17 0 0" Style="{StaticResource graphLabel}"> - <TextBlock FontFamily="digital-7" VerticalAlignment="Center" FontSize="10" Margin="0 0 30 0">CAMERA 3</TextBlock> - </Label> - </Grid> - </Border> - </UniformGrid> - </DockPanel> - </Grid> + <Expander Header="MEDIA" Background="{StaticResource SideBarBackground}" IsExpanded="True"> + <StackPanel> + <ComboBox DockPanel.Dock="Top" ItemsSource="{Binding Adapter.Rmls}" SelectedItem="{Binding SelectedRML}" materialDesign:HintAssist.IsFloating="True" materialDesign:HintAssist.Hint="Selected Thread" Margin="40 0 40 0"> + <ComboBox.ItemTemplate> + <DataTemplate> + <StackPanel> + <TextBlock Text="{Binding Name}" FontWeight="Bold" FontStyle="Italic"></TextBlock> + <TextBlock FontSize="11" Text="{Binding Manufacturer}" Foreground="Gray"></TextBlock> + </StackPanel> + </DataTemplate> + </ComboBox.ItemTemplate> + </ComboBox> - </Grid> + <Button DockPanel.Dock="Bottom" Command="{Binding EditRMLCommand}" HorizontalAlignment="Right" Margin="0 10 20 20" Style="{StaticResource MaterialDesignFlatButton}"> + <StackPanel Orientation="Horizontal"> + <materialDesign:PackIcon VerticalAlignment="Center" Kind="Pencil"></materialDesign:PackIcon> + <TextBlock Margin="10 0 0 0">EDIT</TextBlock> + </StackPanel> + </Button> + </StackPanel> + </Expander> - </Grid> + <Separator Foreground="{StaticResource MaterialDesignDivider}" Background="{StaticResource MaterialDesignDivider}" /> - <Grid Grid.Row="1" Grid.ColumnSpan="2" Background="{StaticResource SideBarBackground}"> - <Grid Margin="10 70 10 10"> - <Grid.ColumnDefinitions> - <ColumnDefinition Width="1*"/> - <ColumnDefinition Width="350"/> - </Grid.ColumnDefinitions> + <Expander Background="{StaticResource SideBarBackground}" IsExpanded="True"> + <Expander.HeaderTemplate> + <DataTemplate> + <TextBlock><Run>LIQUID FACTORS</Run> <Run FontSize="10" Foreground="DimGray">( Max Nanolitter/CM )</Run></TextBlock> + </DataTemplate> + </Expander.HeaderTemplate> - <Grid Grid.Column="1"> - <DockPanel> - <StackPanel Orientation="Horizontal" DockPanel.Dock="Top"> - <Image Source="../Images/graphs.png" Width="42"></Image> - <TextBlock VerticalAlignment="Center" Margin="10 0 0 0" Foreground="DimGray" FontSize="16" FontWeight="SemiBold">AVAILABLE GRAPHS</TextBlock> - </StackPanel> - <ScrollViewer Margin="0 5 0 0" VerticalScrollBarVisibility="Auto"> - <ItemsControl Margin="0 0 5 0" ItemsSource="{Binding AvailableSensors}"> + <Grid> + <StackPanel Margin="40 0 40 0"> + <ItemsControl ItemsSource="{Binding LiquidTypesRmls}"> <ItemsControl.ItemsPanel> <ItemsPanelTemplate> - <UniformGrid Columns="2" IsItemsHost="True"></UniformGrid> + <WrapPanel IsItemsHost="True"></WrapPanel> </ItemsPanelTemplate> </ItemsControl.ItemsPanel> <ItemsControl.ItemTemplate> - <DataTemplate DataType="{x:Type observables:Sensor}"> - <Border dragAndDrop:DragAndDropService.Draggable="True" dragAndDrop:DragAndDropService.DraggingSurface="{Binding RelativeSource={RelativeSource AncestorType=UserControl},Path=DraggingSurface}" Margin="5" CornerRadius="3" Height="120" BorderThickness="1" BorderBrush="Silver" ClipToBounds="True"> - <Border.Background> - <ImageBrush ImageSource="../Images/line_graph.png" Stretch="Fill"></ImageBrush> - </Border.Background> - <Grid> - <Label HorizontalAlignment="Left" VerticalAlignment="Top" Style="{StaticResource graphLabel}"> - <TextBlock Foreground="DimGray" VerticalAlignment="Center" Text="{Binding Description}"></TextBlock> - </Label> + <DataTemplate DataType="{x:Type observables:LiquidTypesRml}"> + <StackPanel Margin="0 0 10 20"> + <TextBlock HorizontalAlignment="Center" FontSize="10" Foreground="DimGray" Text="{Binding LiquidType.Name}"></TextBlock> + <Grid Width="60" Height="50" Margin="0 5 0 0"> + <shapes:Hexagon StrokeThickness="1" Stroke="Gray"> + <shapes:Hexagon.Fill> + <LinearGradientBrush Opacity="0.7" > + <GradientStop Color="{Binding LiquidType.Color,Converter={StaticResource ColorToIntegerConverter}}"/> + <GradientStop Color="White" Offset="1"/> + </LinearGradientBrush> + </shapes:Hexagon.Fill> + </shapes:Hexagon> + + <TextBox Style="{x:Null}" Background="Transparent" Foreground="Black" BorderThickness="0" Text="{Binding MaxNlPerCm}" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" FontWeight="Bold" FontStyle="Italic"></TextBox> </Grid> - </Border> + </StackPanel> </DataTemplate> </ItemsControl.ItemTemplate> </ItemsControl> - </ScrollViewer> - </DockPanel> - </Grid> - <Grid> - <Grid Margin="0 0 10 0" Style="{StaticResource droppableGrid}" dragAndDrop:DragAndDropService.Drop="OnDropAvailableSensor"> - <Border> - <ItemsControl ItemsSource="{Binding Graphs}"> - <ItemsControl.ItemsPanel> - <ItemsPanelTemplate> - <UniformGrid IsItemsHost="True"> - <UniformGrid.Style> - <Style TargetType="UniformGrid"> - <Setter Property="Columns" Value="1"></Setter> - <Setter Property="Rows" Value="1"></Setter> - <Style.Triggers> - <DataTrigger Binding="{Binding Graphs.Count,Converter={StaticResource SmallerThanToBooleanConverter},ConverterParameter=3}" Value="True"> - <Setter Property="Columns" Value="{Binding Graphs.Count}"></Setter> - <Setter Property="Rows" Value="1"></Setter> - </DataTrigger> - <MultiDataTrigger> - <MultiDataTrigger.Conditions> - <Condition Binding="{Binding Graphs.Count,Converter={StaticResource GreaterThanToBooleanConverter},ConverterParameter=2}" Value="True"></Condition> - <Condition Binding="{Binding Graphs.Count,Converter={StaticResource SmallerThanToBooleanConverter},ConverterParameter=5}" Value="True"></Condition> - </MultiDataTrigger.Conditions> - <Setter Property="Columns" Value="2"></Setter> - <Setter Property="Rows" Value="2"></Setter> - </MultiDataTrigger> - <MultiDataTrigger> - <MultiDataTrigger.Conditions> - <Condition Binding="{Binding Graphs.Count,Converter={StaticResource GreaterThanToBooleanConverter},ConverterParameter=4}" Value="True"></Condition> - <Condition Binding="{Binding Graphs.Count,Converter={StaticResource SmallerThanToBooleanConverter},ConverterParameter=7}" Value="True"></Condition> - </MultiDataTrigger.Conditions> - <Setter Property="Columns" Value="3"></Setter> - <Setter Property="Rows" Value="2"></Setter> - </MultiDataTrigger> - <DataTrigger Binding="{Binding Graphs.Count,Converter={StaticResource GreaterThanToBooleanConverter},ConverterParameter=6}" Value="True"> - <Setter Property="Columns" Value="4"></Setter> - <Setter Property="Rows" Value="2"></Setter> - </DataTrigger> - </Style.Triggers> - </Style> - </UniformGrid.Style> - </UniformGrid> - </ItemsPanelTemplate> - </ItemsControl.ItemsPanel> - </ItemsControl> - </Border> - <Grid> + <Button Command="{Binding SaveLiquidFactorsCommand}" HorizontalAlignment="Right" Margin="0 10 -20 20" Style="{StaticResource MaterialDesignFlatButton}"> + <StackPanel Orientation="Horizontal"> + <materialDesign:PackIcon VerticalAlignment="Center" Kind="Harddisk"></materialDesign:PackIcon> + <TextBlock Margin="10 0 0 0">SAVE</TextBlock> + </StackPanel> + </Button> + </StackPanel> + + <Grid Height="150" Background="{StaticResource SideBarBackground}"> <Grid.Style> <Style TargetType="Grid"> - <Setter Property="Visibility" Value="Collapsed"></Setter> + <Setter Property="Visibility" Value="Visible"></Setter> <Style.Triggers> - <DataTrigger Binding="{Binding Graphs.Count}" Value="0"> - <Setter Property="Visibility" Value="Visible"></Setter> - </DataTrigger> + <MultiDataTrigger> + <MultiDataTrigger.Conditions> + <Condition Binding="{Binding SelectedMachine,Converter={StaticResource NullObjectToBooleanConverter}}" Value="True"></Condition> + <Condition Binding="{Binding SelectedRML,Converter={StaticResource NullObjectToBooleanConverter}}" Value="True"></Condition> + </MultiDataTrigger.Conditions> + <Setter Property="Visibility" Value="Collapsed"></Setter> + </MultiDataTrigger> </Style.Triggers> </Style> </Grid.Style> - <TextBlock Foreground="Silver" VerticalAlignment="Center" HorizontalAlignment="Center" FontSize="30">DRAG & DROP GRAPHS</TextBlock> + <TextBlock Foreground="#FA9292" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="24">SELECT MACHINE & MEDIA</TextBlock> </Grid> </Grid> - </Grid> - </Grid> - - <Border VerticalAlignment="Top" Height="50" CornerRadius="0 0 50 50"> - <Border.Effect> - <DropShadowEffect BlurRadius="30" ShadowDepth="20" Opacity="0.2" /> - </Border.Effect> - <Border.Background> - <LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1"> - <GradientStop Color="White" Offset="0" /> - <GradientStop Color="#FFE6E6E6" Offset="1"/> + </Expander> - </LinearGradientBrush> - </Border.Background> - <StackPanel Orientation="Horizontal" HorizontalAlignment="Right" Margin="0 0 120 0"> - <ToggleButton x:Name="chkGraphs" IsChecked="True"></ToggleButton> - <TextBlock VerticalAlignment="Center" Margin="5 -1 0 0" Foreground="Gray">Show Graphs</TextBlock> - </StackPanel> - </Border> - </Grid> + </StackPanel> + </materialDesign:Card> + </ScrollViewer> - <Grid Grid.ColumnSpan="3" Background="White" Visibility="Collapsed"> - <Grid.Style> - <Style TargetType="Grid"> - <Setter Property="RenderTransform"> - <Setter.Value> - <ScaleTransform ScaleY="1" ScaleX="0"></ScaleTransform> - </Setter.Value> - </Setter> - <Style.Triggers> - <DataTrigger Binding="{Binding IsSideBarOpened}" Value="True"> - <DataTrigger.EnterActions> - <BeginStoryboard> - <Storyboard> - <DoubleAnimation Storyboard.TargetProperty="RenderTransform.ScaleX" To="1" Duration="00:00:0.5"></DoubleAnimation> - </Storyboard> - </BeginStoryboard> - </DataTrigger.EnterActions> - <DataTrigger.ExitActions> - <BeginStoryboard> - <Storyboard> - <DoubleAnimation Storyboard.TargetProperty="RenderTransform.ScaleX" To="0" Duration="00:00:0.5"></DoubleAnimation> - </Storyboard> - </BeginStoryboard> - </DataTrigger.ExitActions> - </DataTrigger> - </Style.Triggers> - </Style> - </Grid.Style> - <TextBlock HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="40">MONITORING</TextBlock> - </Grid> - </Grid> + <Rectangle HorizontalAlignment="Right" Stroke="#CECECE" StrokeThickness="1"></Rectangle> </Grid> - </Grid> - <Grid Background="{StaticResource SideBarBackground}"> - <Grid.Style> - <Style TargetType="Grid"> - <Setter Property="Width" Value="550"></Setter> - <Setter Property="LayoutTransform"> - <Setter.Value> - <ScaleTransform ScaleY="1" ScaleX="0"></ScaleTransform> - </Setter.Value> - </Setter> - <Style.Triggers> - <DataTrigger Binding="{Binding IsSideBarOpened}" Value="True"> - <DataTrigger.EnterActions> - <BeginStoryboard> - <Storyboard> - <DoubleAnimation Storyboard.TargetProperty="LayoutTransform.ScaleX" To="1" Duration="00:00:0.2"></DoubleAnimation> - </Storyboard> - </BeginStoryboard> - </DataTrigger.EnterActions> - <DataTrigger.ExitActions> - <BeginStoryboard> - <Storyboard> - <DoubleAnimation Storyboard.TargetProperty="LayoutTransform.ScaleX" To="0" Duration="00:00:0.2"></DoubleAnimation> - </Storyboard> - </BeginStoryboard> - </DataTrigger.ExitActions> - </DataTrigger> - </Style.Triggers> - </Style> - </Grid.Style> - - <ScrollViewer VerticalScrollBarVisibility="Auto" FlowDirection="RightToLeft"> - <materialDesign:Card Background="{StaticResource SideBarBackground}" FlowDirection="LeftToRight"> - <StackPanel> - <Expander Header="MACHINE" IsExpanded="True" Background="{StaticResource SideBarBackground}"> - <StackPanel Margin="0 0 0 0"> - <ComboBox ItemsSource="{Binding Adapter.Machines}" SelectedItem="{Binding SelectedMachine}" materialDesign:HintAssist.IsFloating="True" materialDesign:HintAssist.Hint="Selected Machine" Margin="40 0 40 0"> - <ComboBox.ItemTemplate> - <DataTemplate> - <StackPanel> - <TextBlock Text="{Binding SerialNumber}" FontWeight="Bold" FontStyle="Italic"></TextBlock> - <TextBlock FontSize="11" Text="{Binding Name}" Foreground="Gray"></TextBlock> - </StackPanel> - </DataTemplate> - </ComboBox.ItemTemplate> - </ComboBox> - <designer:MachineView Width="540" IsHitTestVisible="False" Margin="0 40 0 0" DataContext="{Binding SelectedMachine}" /> - <Button Command="{Binding EditMachineCommand}" HorizontalAlignment="Right" Margin="0 10 20 20" Style="{StaticResource MaterialDesignFlatButton}"> - <StackPanel Orientation="Horizontal"> - <materialDesign:PackIcon VerticalAlignment="Center" Kind="Pencil"></materialDesign:PackIcon> - <TextBlock Margin="10 0 0 0">EDIT</TextBlock> - </StackPanel> - </Button> - </StackPanel> - </Expander> - - <Separator Foreground="{StaticResource MaterialDesignDivider}" Background="{StaticResource MaterialDesignDivider}" /> - - <Expander Header="MEDIA" Background="{StaticResource SideBarBackground}" IsExpanded="True"> - <StackPanel> - <ComboBox DockPanel.Dock="Top" ItemsSource="{Binding Adapter.Rmls}" SelectedItem="{Binding SelectedRML}" materialDesign:HintAssist.IsFloating="True" materialDesign:HintAssist.Hint="Selected Thread" Margin="40 0 40 0"> - <ComboBox.ItemTemplate> - <DataTemplate> - <StackPanel> - <TextBlock Text="{Binding Name}" FontWeight="Bold" FontStyle="Italic"></TextBlock> - <TextBlock FontSize="11" Text="{Binding Manufacturer}" Foreground="Gray"></TextBlock> - </StackPanel> - </DataTemplate> - </ComboBox.ItemTemplate> - </ComboBox> - - <Button DockPanel.Dock="Bottom" Command="{Binding EditRMLCommand}" HorizontalAlignment="Right" Margin="0 10 20 20" Style="{StaticResource MaterialDesignFlatButton}"> - <StackPanel Orientation="Horizontal"> - <materialDesign:PackIcon VerticalAlignment="Center" Kind="Pencil"></materialDesign:PackIcon> - <TextBlock Margin="10 0 0 0">EDIT</TextBlock> - </StackPanel> - </Button> - </StackPanel> - </Expander> - - <Separator Foreground="{StaticResource MaterialDesignDivider}" Background="{StaticResource MaterialDesignDivider}" /> - - <Expander Background="{StaticResource SideBarBackground}" IsExpanded="True"> - <Expander.HeaderTemplate> - <DataTemplate> - <TextBlock><Run>LIQUID FACTORS</Run> <Run FontSize="10" Foreground="DimGray">( Max Nanolitter/CM )</Run></TextBlock> - </DataTemplate> - </Expander.HeaderTemplate> - - <Grid> - <StackPanel Margin="40 0 40 0"> - <ItemsControl ItemsSource="{Binding LiquidTypesRmls}"> - <ItemsControl.ItemsPanel> - <ItemsPanelTemplate> - <WrapPanel IsItemsHost="True"></WrapPanel> - </ItemsPanelTemplate> - </ItemsControl.ItemsPanel> - <ItemsControl.ItemTemplate> - <DataTemplate DataType="{x:Type observables:LiquidTypesRml}"> - <StackPanel Margin="0 0 10 20"> - <TextBlock HorizontalAlignment="Center" FontSize="10" Foreground="DimGray" Text="{Binding LiquidType.Name}"></TextBlock> - <Grid Width="60" Height="50" Margin="0 5 0 0"> - <shapes:Hexagon StrokeThickness="1" Stroke="Gray"> - <shapes:Hexagon.Fill> - <LinearGradientBrush Opacity="0.7" > - <GradientStop Color="{Binding LiquidType.Color,Converter={StaticResource ColorToIntegerConverter}}"/> - <GradientStop Color="White" Offset="1"/> - </LinearGradientBrush> - </shapes:Hexagon.Fill> - </shapes:Hexagon> - - <TextBox Style="{x:Null}" Background="Transparent" Foreground="Black" BorderThickness="0" Text="{Binding MaxNlPerCm}" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" FontWeight="Bold" FontStyle="Italic"></TextBox> - </Grid> - </StackPanel> - </DataTemplate> - </ItemsControl.ItemTemplate> - </ItemsControl> - - <Button Command="{Binding SaveLiquidFactorsCommand}" HorizontalAlignment="Right" Margin="0 10 -20 20" Style="{StaticResource MaterialDesignFlatButton}"> - <StackPanel Orientation="Horizontal"> - <materialDesign:PackIcon VerticalAlignment="Center" Kind="Harddisk"></materialDesign:PackIcon> - <TextBlock Margin="10 0 0 0">SAVE</TextBlock> - </StackPanel> - </Button> - </StackPanel> - - <Grid Height="150" Background="{StaticResource SideBarBackground}"> - <Grid.Style> - <Style TargetType="Grid"> - <Setter Property="Visibility" Value="Visible"></Setter> - <Style.Triggers> - <MultiDataTrigger> - <MultiDataTrigger.Conditions> - <Condition Binding="{Binding SelectedMachine,Converter={StaticResource NullObjectToBooleanConverter}}" Value="True"></Condition> - <Condition Binding="{Binding SelectedRML,Converter={StaticResource NullObjectToBooleanConverter}}" Value="True"></Condition> - </MultiDataTrigger.Conditions> - <Setter Property="Visibility" Value="Collapsed"></Setter> - </MultiDataTrigger> - </Style.Triggers> - </Style> - </Grid.Style> - <TextBlock Foreground="#FA9292" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="24">SELECT MACHINE & MEDIA</TextBlock> - </Grid> - </Grid> - </Expander> - - - </StackPanel> - </materialDesign:Card> - </ScrollViewer> - - <Rectangle HorizontalAlignment="Right" Stroke="#CECECE" StrokeThickness="1"></Rectangle> + <Button Background="Transparent" Command="{Binding ToggleSideBarCommand}" Padding="0" Style="{StaticResource MaterialDesignFlatButton}" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" HorizontalAlignment="Right" VerticalAlignment="Center" Height="200" Width="50" Margin="0 0 -50 0"> + <Border Background="#F6F6F6" CornerRadius="0 10 10 0" BorderThickness="0 1 1 1" BorderBrush="#C6C0C0"> + <Grid> + <TextBlock Foreground="#FF7272" Text="CONFIGURATION" FontSize="16" RenderTransformOrigin="0.5,0.5" VerticalAlignment="Center" HorizontalAlignment="Center"> + <TextBlock.LayoutTransform> + <RotateTransform Angle="270"></RotateTransform> + </TextBlock.LayoutTransform> + </TextBlock> + </Grid> + </Border> + </Button> </Grid> - - <Button Background="{StaticResource SideBarBackground}" Command="{Binding ToggleSideBarCommand}" Padding="0" Style="{StaticResource MaterialDesignFlatButton}" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" HorizontalAlignment="Right" VerticalAlignment="Center" Height="200" Width="50" Margin="0 0 -50 0"> - <Border CornerRadius="0 10 10 0" BorderThickness="0 1 1 1" BorderBrush="#C6C0C0"> - <Grid> - <TextBlock Foreground="#FF7272" Text="CONFIGURATION" FontSize="16" RenderTransformOrigin="0.5,0.5" VerticalAlignment="Center" HorizontalAlignment="Center"> - <TextBlock.LayoutTransform> - <RotateTransform Angle="270"></RotateTransform> - </TextBlock.LayoutTransform> - </TextBlock> - </Grid> - </Border> - </Button> </Grid> - <dragAndDrop:DraggingSurface x:Name="draggingSurface" /> </Grid> </UserControl> diff --git a/Software/Visual_Studio/Tango.Core/Commands/RelayCommand.cs b/Software/Visual_Studio/Tango.Core/Commands/RelayCommand.cs index 16af1651c..fecf8a5de 100644 --- a/Software/Visual_Studio/Tango.Core/Commands/RelayCommand.cs +++ b/Software/Visual_Studio/Tango.Core/Commands/RelayCommand.cs @@ -34,6 +34,11 @@ namespace Tango.Core.Commands } + public RelayCommand(Action execute, Func<bool> canExecute) : this((x) => execute(), (x) => canExecute()) + { + + } + public RelayCommand(Action execute, Predicate<object> canExecute) : this((x) => execute(), canExecute) { diff --git a/Software/Visual_Studio/Tango.DAL.Remote/DB/JOB.cs b/Software/Visual_Studio/Tango.DAL.Remote/DB/JOB.cs index e1d4055a1..29afb0c91 100644 --- a/Software/Visual_Studio/Tango.DAL.Remote/DB/JOB.cs +++ b/Software/Visual_Studio/Tango.DAL.Remote/DB/JOB.cs @@ -33,6 +33,7 @@ namespace Tango.DAL.Remote.DB public double INTER_SEGMENT_LENGTH { get; set; } public bool ENABLE_INTER_SEGMENT { get; set; } public bool ENABLE_LUBRICATION { get; set; } + public int JOB_INDEX { get; set; } [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")] public virtual ICollection<JOB_RUNS> JOB_RUNS { get; set; } diff --git a/Software/Visual_Studio/Tango.DAL.Remote/DB/RemoteADO.edmx b/Software/Visual_Studio/Tango.DAL.Remote/DB/RemoteADO.edmx index c6fcae64d..3781d3a06 100644 --- a/Software/Visual_Studio/Tango.DAL.Remote/DB/RemoteADO.edmx +++ b/Software/Visual_Studio/Tango.DAL.Remote/DB/RemoteADO.edmx @@ -323,6 +323,7 @@ <Property Name="INTER_SEGMENT_LENGTH" Type="float" Nullable="false" /> <Property Name="ENABLE_INTER_SEGMENT" Type="bit" Nullable="false" /> <Property Name="ENABLE_LUBRICATION" Type="bit" Nullable="false" /> + <Property Name="JOB_INDEX" Type="int" Nullable="false" /> </EntityType> <EntityType Name="LINEAR_MASS_DENSITY_UNITS"> <Key> @@ -574,6 +575,7 @@ <Property Name="NAME" Type="nvarchar" MaxLength="50" Nullable="false" /> <Property Name="JOB_GUID" Type="varchar" MaxLength="36" Nullable="false" /> <Property Name="LENGTH" Type="float" Nullable="false" /> + <Property Name="SEGMENT_INDEX" Type="int" Nullable="false" /> </EntityType> <EntityType Name="SENSORS"> <Key> @@ -2215,6 +2217,7 @@ <Property Name="INTER_SEGMENT_LENGTH" Type="Double" Nullable="false" /> <Property Name="ENABLE_INTER_SEGMENT" Type="Boolean" Nullable="false" /> <Property Name="ENABLE_LUBRICATION" Type="Boolean" Nullable="false" /> + <Property Name="JOB_INDEX" Type="Int32" Nullable="false" /> <NavigationProperty Name="JOB_RUNS" Relationship="RemoteModel.FK_JOB_RUNS_JOBS" FromRole="JOB" ToRole="JOB_RUNS" /> <NavigationProperty Name="MACHINE" Relationship="RemoteModel.FK_JOBS_MACHINES" FromRole="JOB" ToRole="MACHINE" /> <NavigationProperty Name="RML" Relationship="RemoteModel.FK_JOBS_RMLS" FromRole="JOB" ToRole="RML" /> @@ -2519,6 +2522,7 @@ <Property Name="NAME" Type="String" Nullable="false" MaxLength="50" FixedLength="false" Unicode="true" /> <Property Name="JOB_GUID" Type="String" Nullable="false" MaxLength="36" FixedLength="false" Unicode="false" /> <Property Name="LENGTH" Type="Double" Nullable="false" /> + <Property Name="SEGMENT_INDEX" Type="Int32" Nullable="false" /> <NavigationProperty Name="BRUSH_STOPS" Relationship="RemoteModel.FK_BRUSH_STOPS_SEGMENTS" FromRole="SEGMENT" ToRole="BRUSH_STOPS" /> <NavigationProperty Name="JOB" Relationship="RemoteModel.FK_SEGMENTS_JOBS" FromRole="SEGMENT" ToRole="JOB" /> </EntityType> @@ -3602,6 +3606,7 @@ <EntitySetMapping Name="JOBS"> <EntityTypeMapping TypeName="RemoteModel.JOB"> <MappingFragment StoreEntitySet="JOBS"> + <ScalarProperty Name="JOB_INDEX" ColumnName="JOB_INDEX" /> <ScalarProperty Name="ENABLE_LUBRICATION" ColumnName="ENABLE_LUBRICATION" /> <ScalarProperty Name="ENABLE_INTER_SEGMENT" ColumnName="ENABLE_INTER_SEGMENT" /> <ScalarProperty Name="INTER_SEGMENT_LENGTH" ColumnName="INTER_SEGMENT_LENGTH" /> @@ -3879,6 +3884,7 @@ <EntitySetMapping Name="SEGMENTS"> <EntityTypeMapping TypeName="RemoteModel.SEGMENT"> <MappingFragment StoreEntitySet="SEGMENTS"> + <ScalarProperty Name="SEGMENT_INDEX" ColumnName="SEGMENT_INDEX" /> <ScalarProperty Name="LENGTH" ColumnName="LENGTH" /> <ScalarProperty Name="JOB_GUID" ColumnName="JOB_GUID" /> <ScalarProperty Name="NAME" ColumnName="NAME" /> diff --git a/Software/Visual_Studio/Tango.DAL.Remote/DB/RemoteADO.edmx.diagram b/Software/Visual_Studio/Tango.DAL.Remote/DB/RemoteADO.edmx.diagram index 3feb7c4a1..65d671cd0 100644 --- a/Software/Visual_Studio/Tango.DAL.Remote/DB/RemoteADO.edmx.diagram +++ b/Software/Visual_Studio/Tango.DAL.Remote/DB/RemoteADO.edmx.diagram @@ -5,56 +5,56 @@ <!-- Diagram content (shape and connector positions) --> <edmx:Diagrams> <Diagram DiagramId="f9ae01d708754bbd997add25a4bacc79" Name="Diagram1"> - <EntityTypeShape EntityType="RemoteModel.ACTION_TYPES" Width="1.5" PointX="6.75" PointY="57" /> - <EntityTypeShape EntityType="RemoteModel.ADDRESS" Width="1.5" PointX="1.5" PointY="37.125" /> - <EntityTypeShape EntityType="RemoteModel.APPLICATION_DISPLAY_PANEL_VERSIONS" Width="1.5" PointX="1.5" PointY="56.625" /> - <EntityTypeShape EntityType="RemoteModel.APPLICATION_FIRMWARE_VERSIONS" Width="1.5" PointX="1.5" PointY="73.5" /> - <EntityTypeShape EntityType="RemoteModel.APPLICATION_OS_VERSIONS" Width="1.5" PointX="1.5" PointY="67.625" /> - <EntityTypeShape EntityType="RemoteModel.APPLICATION_VERSIONS" Width="1.5" PointX="1.5" PointY="79.25" /> - <EntityTypeShape EntityType="RemoteModel.BRUSH_STOPS" Width="1.5" PointX="9.75" PointY="17.625" /> - <EntityTypeShape EntityType="RemoteModel.CARTRIDGE_TYPES" Width="1.5" PointX="6" PointY="38" /> - <EntityTypeShape EntityType="RemoteModel.CAT" Width="1.5" PointX="8.25" PointY="14.125" /> - <EntityTypeShape EntityType="RemoteModel.CCT" Width="1.5" PointX="5.25" PointY="24.25" /> - <EntityTypeShape EntityType="RemoteModel.COLOR_SPACES" Width="1.5" PointX="7.5" PointY="5.625" /> - <EntityTypeShape EntityType="RemoteModel.CONFIGURATION" Width="1.5" PointX="0.75" PointY="60.875" /> - <EntityTypeShape EntityType="RemoteModel.CONTACT" Width="1.5" PointX="1.5" PointY="49.375" /> - <EntityTypeShape EntityType="RemoteModel.DISPENSER_TYPES" Width="1.5" PointX="6" PointY="44" /> - <EntityTypeShape EntityType="RemoteModel.EMBEDDED_FIRMWARE_VERSIONS" Width="1.5" PointX="1.5" PointY="76.375" /> - <EntityTypeShape EntityType="RemoteModel.EMBEDDED_SOFTWARE_VERSIONS" Width="1.5" PointX="1.5" PointY="70.5" /> - <EntityTypeShape EntityType="RemoteModel.EVENT_TYPES" Width="1.5" PointX="6.75" PointY="50" /> - <EntityTypeShape EntityType="RemoteModel.EVENT_TYPES_ACTIONS" Width="1.5" PointX="9" PointY="50" /> - <EntityTypeShape EntityType="RemoteModel.FIBER_SHAPES" Width="1.5" PointX="0.75" PointY="14.375" /> - <EntityTypeShape EntityType="RemoteModel.FIBER_SYNTHS" Width="1.5" PointX="0.75" PointY="20.75" /> - <EntityTypeShape EntityType="RemoteModel.HARDWARE_VERSIONS" Width="1.5" PointX="1.5" PointY="53.75" /> - <EntityTypeShape EntityType="RemoteModel.IDS_PACK_FORMULAS" Width="1.5" PointX="6" PointY="34.75" /> - <EntityTypeShape EntityType="RemoteModel.IDS_PACKS" Width="1.5" PointX="8.25" PointY="35.5" /> - <EntityTypeShape EntityType="RemoteModel.JOB_RUNS" Width="1.5" PointX="7.5" PointY="21.875" /> - <EntityTypeShape EntityType="RemoteModel.JOB" Width="1.5" PointX="5.25" PointY="13.25" /> - <EntityTypeShape EntityType="RemoteModel.LINEAR_MASS_DENSITY_UNITS" Width="1.5" PointX="0.75" PointY="9.875" /> - <EntityTypeShape EntityType="RemoteModel.LIQUID_TYPES" Width="1.5" PointX="6" PointY="9" /> - <EntityTypeShape EntityType="RemoteModel.LIQUID_TYPES_RMLS" Width="1.5" PointX="8.25" PointY="10.125" /> - <EntityTypeShape EntityType="RemoteModel.MACHINE_VERSIONS" Width="1.5" PointX="0.75" PointY="41.5" /> - <EntityTypeShape EntityType="RemoteModel.MACHINE" Width="1.5" PointX="3" PointY="43.875" /> - <EntityTypeShape EntityType="RemoteModel.MACHINES_CONFIGURATIONS" Width="1.5" PointX="5.25" PointY="53.875" /> - <EntityTypeShape EntityType="RemoteModel.MACHINES_EVENTS" Width="1.5" PointX="9" PointY="41.625" /> - <EntityTypeShape EntityType="RemoteModel.MEDIA_COLORS" Width="1.5" PointX="0.75" PointY="7.125" /> - <EntityTypeShape EntityType="RemoteModel.MEDIA_CONDITIONS" Width="1.5" PointX="0.75" PointY="23.625" /> - <EntityTypeShape EntityType="RemoteModel.MEDIA_MATERIALS" Width="1.5" PointX="0.75" PointY="26.625" /> - <EntityTypeShape EntityType="RemoteModel.MEDIA_PURPOSES" Width="1.5" PointX="0.75" PointY="17.75" /> - <EntityTypeShape EntityType="RemoteModel.MID_TANK_TYPES" Width="1.5" PointX="6" PointY="40.875" /> - <EntityTypeShape EntityType="RemoteModel.ORGANIZATION" Width="1.5" PointX="0.75" PointY="32.375" /> - <EntityTypeShape EntityType="RemoteModel.PERMISSION" Width="1.5" PointX="8.75" PointY="53.375" /> - <EntityTypeShape EntityType="RemoteModel.PROCESS_PARAMETERS_TABLES" Width="1.5" PointX="7.5" PointY="28.25" /> - <EntityTypeShape EntityType="RemoteModel.PROCESS_PARAMETERS_TABLES_GROUPS" Width="1.5" PointX="5.25" PointY="29.5" /> + <EntityTypeShape EntityType="RemoteModel.ACTION_TYPES" Width="1.5" PointX="8.75" PointY="58.625" /> + <EntityTypeShape EntityType="RemoteModel.ADDRESS" Width="1.5" PointX="1.5" PointY="48.75" /> + <EntityTypeShape EntityType="RemoteModel.APPLICATION_DISPLAY_PANEL_VERSIONS" Width="1.5" PointX="1.5" PointY="53" /> + <EntityTypeShape EntityType="RemoteModel.APPLICATION_FIRMWARE_VERSIONS" Width="1.5" PointX="1.5" PointY="72.75" /> + <EntityTypeShape EntityType="RemoteModel.APPLICATION_OS_VERSIONS" Width="1.5" PointX="1.5" PointY="66.875" /> + <EntityTypeShape EntityType="RemoteModel.APPLICATION_VERSIONS" Width="1.5" PointX="1.5" PointY="69.75" /> + <EntityTypeShape EntityType="RemoteModel.BRUSH_STOPS" Width="1.5" PointX="10.75" PointY="15.875" /> + <EntityTypeShape EntityType="RemoteModel.CARTRIDGE_TYPES" Width="1.5" PointX="8" PointY="34.875" /> + <EntityTypeShape EntityType="RemoteModel.CAT" Width="1.5" PointX="8.25" PointY="10.125" /> + <EntityTypeShape EntityType="RemoteModel.CCT" Width="1.5" PointX="5.25" PointY="17.625" /> + <EntityTypeShape EntityType="RemoteModel.COLOR_SPACES" Width="1.5" PointX="8.5" PointY="21.875" /> + <EntityTypeShape EntityType="RemoteModel.CONFIGURATION" Width="1.5" PointX="0.75" PointY="60.125" /> + <EntityTypeShape EntityType="RemoteModel.CONTACT" Width="1.5" PointX="1.5" PointY="36.625" /> + <EntityTypeShape EntityType="RemoteModel.DISPENSER_TYPES" Width="1.5" PointX="8" PointY="37.75" /> + <EntityTypeShape EntityType="RemoteModel.EMBEDDED_FIRMWARE_VERSIONS" Width="1.5" PointX="1.5" PointY="75.625" /> + <EntityTypeShape EntityType="RemoteModel.EMBEDDED_SOFTWARE_VERSIONS" Width="1.5" PointX="1.5" PointY="78.5" /> + <EntityTypeShape EntityType="RemoteModel.EVENT_TYPES" Width="1.5" PointX="8.75" PointY="51.5" /> + <EntityTypeShape EntityType="RemoteModel.EVENT_TYPES_ACTIONS" Width="1.5" PointX="11" PointY="51.625" /> + <EntityTypeShape EntityType="RemoteModel.FIBER_SHAPES" Width="1.5" PointX="0.75" PointY="26.625" /> + <EntityTypeShape EntityType="RemoteModel.FIBER_SYNTHS" Width="1.5" PointX="0.75" PointY="20.875" /> + <EntityTypeShape EntityType="RemoteModel.HARDWARE_VERSIONS" Width="1.5" PointX="1.5" PointY="56" /> + <EntityTypeShape EntityType="RemoteModel.IDS_PACK_FORMULAS" Width="1.5" PointX="8" PointY="41.125" /> + <EntityTypeShape EntityType="RemoteModel.IDS_PACKS" Width="1.5" PointX="10.25" PointY="31.625" /> + <EntityTypeShape EntityType="RemoteModel.JOB_RUNS" Width="1.5" PointX="7.5" PointY="6.375" /> + <EntityTypeShape EntityType="RemoteModel.JOB" Width="1.5" PointX="5.25" PointY="12.25" /> + <EntityTypeShape EntityType="RemoteModel.LINEAR_MASS_DENSITY_UNITS" Width="1.5" PointX="0.75" PointY="14.375" /> + <EntityTypeShape EntityType="RemoteModel.LIQUID_TYPES" Width="1.5" PointX="6" PointY="2" /> + <EntityTypeShape EntityType="RemoteModel.LIQUID_TYPES_RMLS" Width="1.5" PointX="8.25" PointY="14.125" /> + <EntityTypeShape EntityType="RemoteModel.MACHINE_VERSIONS" Width="1.5" PointX="0.75" PointY="44.5" /> + <EntityTypeShape EntityType="RemoteModel.MACHINE" Width="1.5" PointX="3" PointY="43.375" /> + <EntityTypeShape EntityType="RemoteModel.MACHINES_CONFIGURATIONS" Width="1.5" PointX="5.25" PointY="53.375" /> + <EntityTypeShape EntityType="RemoteModel.MACHINES_EVENTS" Width="1.5" PointX="11" PointY="41.25" /> + <EntityTypeShape EntityType="RemoteModel.MEDIA_COLORS" Width="1.5" PointX="0.75" PointY="23.875" /> + <EntityTypeShape EntityType="RemoteModel.MEDIA_CONDITIONS" Width="1.5" PointX="0.75" PointY="10.125" /> + <EntityTypeShape EntityType="RemoteModel.MEDIA_MATERIALS" Width="1.5" PointX="0.75" PointY="18" /> + <EntityTypeShape EntityType="RemoteModel.MEDIA_PURPOSES" Width="1.5" PointX="0.75" PointY="7.125" /> + <EntityTypeShape EntityType="RemoteModel.MID_TANK_TYPES" Width="1.5" PointX="8" PointY="44.375" /> + <EntityTypeShape EntityType="RemoteModel.ORGANIZATION" Width="1.5" PointX="0.75" PointY="32" /> + <EntityTypeShape EntityType="RemoteModel.PERMISSION" Width="1.5" PointX="8.75" PointY="55" /> + <EntityTypeShape EntityType="RemoteModel.PROCESS_PARAMETERS_TABLES" Width="1.5" PointX="7.5" PointY="28.5" /> + <EntityTypeShape EntityType="RemoteModel.PROCESS_PARAMETERS_TABLES_GROUPS" Width="1.5" PointX="5.25" PointY="29.75" /> <EntityTypeShape EntityType="RemoteModel.RML" Width="1.5" PointX="3" PointY="11.625" /> - <EntityTypeShape EntityType="RemoteModel.ROLE" Width="1.5" PointX="8.75" PointY="46.25" /> - <EntityTypeShape EntityType="RemoteModel.ROLES_PERMISSIONS" Width="1.5" PointX="11" PointY="46.375" /> - <EntityTypeShape EntityType="RemoteModel.SEGMENT" Width="1.5" PointX="7.5" PointY="18.5" /> + <EntityTypeShape EntityType="RemoteModel.ROLE" Width="1.5" PointX="8.75" PointY="47.875" /> + <EntityTypeShape EntityType="RemoteModel.ROLES_PERMISSIONS" Width="1.5" PointX="11" PointY="48" /> + <EntityTypeShape EntityType="RemoteModel.SEGMENT" Width="1.5" PointX="7.5" PointY="17.75" /> <EntityTypeShape EntityType="RemoteModel.SENSOR" Width="1.5" PointX="0.75" PointY="0.75" /> <EntityTypeShape EntityType="RemoteModel.SYNC_CONFIGURATIONS" Width="1.5" PointX="2.75" PointY="0.75" /> - <EntityTypeShape EntityType="RemoteModel.USER" Width="1.5" PointX="3.75" PointY="38.75" /> - <EntityTypeShape EntityType="RemoteModel.USERS_ROLES" Width="1.5" PointX="11" PointY="38.25" /> - <EntityTypeShape EntityType="RemoteModel.WINDING_METHODS" Width="1.5" PointX="3" PointY="60.25" /> + <EntityTypeShape EntityType="RemoteModel.USER" Width="1.5" PointX="3.75" PointY="38.25" /> + <EntityTypeShape EntityType="RemoteModel.USERS_ROLES" Width="1.5" PointX="11" PointY="37.875" /> + <EntityTypeShape EntityType="RemoteModel.WINDING_METHODS" Width="1.5" PointX="3" PointY="20.625" /> <AssociationConnector Association="RemoteModel.FK_EVENTS_ACTIONS_ACTIONS" /> <AssociationConnector Association="RemoteModel.FK_ORGANIZATIONS_ADDRESSES" /> <AssociationConnector Association="RemoteModel.FK_USERS_ADDRESSES" /> diff --git a/Software/Visual_Studio/Tango.DAL.Remote/DB/SEGMENT.cs b/Software/Visual_Studio/Tango.DAL.Remote/DB/SEGMENT.cs index 5f4db14f5..206092a13 100644 --- a/Software/Visual_Studio/Tango.DAL.Remote/DB/SEGMENT.cs +++ b/Software/Visual_Studio/Tango.DAL.Remote/DB/SEGMENT.cs @@ -26,6 +26,7 @@ namespace Tango.DAL.Remote.DB public string NAME { get; set; } public string JOB_GUID { get; set; } public double LENGTH { get; set; } + public int SEGMENT_INDEX { get; set; } [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")] public virtual ICollection<BRUSH_STOPS> BRUSH_STOPS { get; set; } diff --git a/Software/Visual_Studio/Tango.Integration/Formulation/DiluterFormulaCalculator.cs b/Software/Visual_Studio/Tango.Integration/Formulation/DiluterFormulaCalculator.cs index 703431154..a888cd8ce 100644 --- a/Software/Visual_Studio/Tango.Integration/Formulation/DiluterFormulaCalculator.cs +++ b/Software/Visual_Studio/Tango.Integration/Formulation/DiluterFormulaCalculator.cs @@ -9,30 +9,21 @@ using Tango.Integration.Printing; namespace Tango.Integration.Formulation { [Formula(IdsPackFormulas.Diluter)] - public class DiluterFormulaCalculator : IFormulaCalculator + public class DiluterFormulaCalculator : FormulaCalculatorBase { - public double CalculateNanoliterPerSecond(LiquidVolume liquidVolume) + public override double CoerceVolume(LiquidVolume liquidVolume) { - if (liquidVolume.Configuration != null && liquidVolume.RML != null && liquidVolume.ProcessParametersTable != null) + if (liquidVolume.ProcessParametersTable != null) { - return (liquidVolume.Volume / 100d) * (liquidVolume.LiquidMaxNanoliterPerCentimeter * liquidVolume.ProcessParametersTable.DyeingSpeed); + double nlPcmSum = liquidVolume.BrushStop.LiquidVolumes.Where(x => (IdsPackFormulas)x.IdsPack.IdsPackFormula.Code == IdsPackFormulas.StandardColor).Sum(x => x.NanoliterPerCentimeter); + double minInkUpdate = liquidVolume.ProcessParametersTable.MinInkUptake; + double volume = ((minInkUpdate - nlPcmSum) / minInkUpdate) * 100d; + return Math.Max(volume, 0); } else { - return 0d; + return liquidVolume.Volume; } } - - public double CalculatePulsePerSecond(LiquidVolume liquidVolume) - { - var nlPerSecond = CalculateNanoliterPerSecond(liquidVolume); - return nlPerSecond / liquidVolume.IdsPack.DispenserType.NlPerPulse; - } - - public double CoerceVolume(LiquidVolume liquidVolume) - { - double sum = liquidVolume.BrushStop.LiquidVolumes.Where(x => (IdsPackFormulas)x.IdsPack.IdsPackFormula.Code == IdsPackFormulas.StandardColor).Sum(x => x.Volume); - return Math.Max(Math.Min(100d - sum, 100d), 0); - } } } diff --git a/Software/Visual_Studio/Tango.Integration/Formulation/FormulaCalculatorBase.cs b/Software/Visual_Studio/Tango.Integration/Formulation/FormulaCalculatorBase.cs new file mode 100644 index 000000000..ca186bf62 --- /dev/null +++ b/Software/Visual_Studio/Tango.Integration/Formulation/FormulaCalculatorBase.cs @@ -0,0 +1,46 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Tango.Integration.Printing; + +namespace Tango.Integration.Formulation +{ + public abstract class FormulaCalculatorBase : IFormulaCalculator + { + public virtual double CalculateNanoliterPerCentimeter(LiquidVolume liquidVolume) + { + if (liquidVolume.Configuration != null && liquidVolume.RML != null && liquidVolume.ProcessParametersTable != null) + { + return (liquidVolume.Volume / 100d) * (liquidVolume.LiquidMaxNanoliterPerCentimeter); + } + else + { + return 0d; + } + } + + public virtual double CalculateNanoliterPerSecond(LiquidVolume liquidVolume) + { + if (liquidVolume.ProcessParametersTable != null) + { + return CalculateNanoliterPerCentimeter(liquidVolume) * liquidVolume.ProcessParametersTable.DyeingSpeed; + } + else + { + return 0d; + } + } + + public virtual double CalculatePulsePerSecond(LiquidVolume liquidVolume) + { + return CalculateNanoliterPerSecond(liquidVolume) / liquidVolume.IdsPack.DispenserType.NlPerPulse; + } + + public virtual double CoerceVolume(LiquidVolume liquidVolume) + { + return liquidVolume.Volume; + } + } +} diff --git a/Software/Visual_Studio/Tango.Integration/Formulation/FormulasCalculationService.cs b/Software/Visual_Studio/Tango.Integration/Formulation/FormulasCalculationService.cs index 823327cb2..6cbf8aebd 100644 --- a/Software/Visual_Studio/Tango.Integration/Formulation/FormulasCalculationService.cs +++ b/Software/Visual_Studio/Tango.Integration/Formulation/FormulasCalculationService.cs @@ -9,6 +9,12 @@ namespace Tango.Integration.Formulation { public static class FormulasCalculationService { + public static double CalculateNanoliterPerCentimeter(LiquidVolume liquidVolume) + { + IFormulaCalculator formula = FormulaResolver.Resolve(liquidVolume); + return formula.CalculateNanoliterPerCentimeter(liquidVolume); + } + public static double CalculateNanoliterPerSecond(LiquidVolume liquidVolume) { IFormulaCalculator formula = FormulaResolver.Resolve(liquidVolume); diff --git a/Software/Visual_Studio/Tango.Integration/Formulation/IFormulaCalculator.cs b/Software/Visual_Studio/Tango.Integration/Formulation/IFormulaCalculator.cs index 349f1d92d..89894f334 100644 --- a/Software/Visual_Studio/Tango.Integration/Formulation/IFormulaCalculator.cs +++ b/Software/Visual_Studio/Tango.Integration/Formulation/IFormulaCalculator.cs @@ -6,6 +6,8 @@ namespace Tango.Integration.Formulation { double CalculateNanoliterPerSecond(LiquidVolume liquidVolume); + double CalculateNanoliterPerCentimeter(LiquidVolume liquidVolume); + double CalculatePulsePerSecond(LiquidVolume liquidVolume); double CoerceVolume(LiquidVolume liquidVolume); diff --git a/Software/Visual_Studio/Tango.Integration/Formulation/StandardColorFormulaCalculator.cs b/Software/Visual_Studio/Tango.Integration/Formulation/StandardColorFormulaCalculator.cs index 25dab0d60..8b40f45e8 100644 --- a/Software/Visual_Studio/Tango.Integration/Formulation/StandardColorFormulaCalculator.cs +++ b/Software/Visual_Studio/Tango.Integration/Formulation/StandardColorFormulaCalculator.cs @@ -10,29 +10,8 @@ using static Tango.Integration.Observables.BrushStop; namespace Tango.Integration.Formulation { [Formula(IdsPackFormulas.StandardColor)] - public class StandardColorFormulaCalculator : IFormulaCalculator + public class StandardColorFormulaCalculator : FormulaCalculatorBase { - public double CalculateNanoliterPerSecond(LiquidVolume liquidVolume) - { - if (liquidVolume.Configuration != null && liquidVolume.RML != null && liquidVolume.ProcessParametersTable != null) - { - return (liquidVolume.Volume / 100d) * (liquidVolume.LiquidMaxNanoliterPerCentimeter * liquidVolume.ProcessParametersTable.DyeingSpeed); - } - else - { - return 0d; - } - } - public double CalculatePulsePerSecond(LiquidVolume liquidVolume) - { - var nlPerSecond = CalculateNanoliterPerSecond(liquidVolume); - return nlPerSecond / liquidVolume.IdsPack.DispenserType.NlPerPulse; - } - - public double CoerceVolume(LiquidVolume liquidVolume) - { - return liquidVolume.Volume; - } } } diff --git a/Software/Visual_Studio/Tango.Integration/Observables/Entities/Job.cs b/Software/Visual_Studio/Tango.Integration/Observables/Entities/Job.cs index bf33c8b07..2a76a9f7a 100644 --- a/Software/Visual_Studio/Tango.Integration/Observables/Entities/Job.cs +++ b/Software/Visual_Studio/Tango.Integration/Observables/Entities/Job.cs @@ -192,6 +192,26 @@ namespace Tango.Integration.Observables } + protected Int32 _jobindex; + /// <summary> + /// Gets or sets the job job index. + /// </summary> + [Column("JOB_INDEX")] + + public Int32 JobIndex + { + get + { + return _jobindex; + } + + set + { + _jobindex = value; RaisePropertyChanged(nameof(JobIndex)); + } + + } + protected ObservableCollection<JobRun> _jobruns; /// <summary> /// Gets or sets the job job runs. diff --git a/Software/Visual_Studio/Tango.Integration/Observables/Entities/Segment.cs b/Software/Visual_Studio/Tango.Integration/Observables/Entities/Segment.cs index 6a2b59b04..e5c3c50c6 100644 --- a/Software/Visual_Studio/Tango.Integration/Observables/Entities/Segment.cs +++ b/Software/Visual_Studio/Tango.Integration/Observables/Entities/Segment.cs @@ -72,6 +72,26 @@ namespace Tango.Integration.Observables } + protected Int32 _segmentindex; + /// <summary> + /// Gets or sets the segment segment index. + /// </summary> + [Column("SEGMENT_INDEX")] + + public Int32 SegmentIndex + { + get + { + return _segmentindex; + } + + set + { + _segmentindex = value; RaisePropertyChanged(nameof(SegmentIndex)); + } + + } + protected ObservableCollection<BrushStop> _brushstops; /// <summary> /// Gets or sets the segment brush stops. diff --git a/Software/Visual_Studio/Tango.Integration/Observables/Enumerations/ActionTypes.cs b/Software/Visual_Studio/Tango.Integration/Observables/Enumerations/ActionTypes.cs index ef45931de..5165a8218 100644 --- a/Software/Visual_Studio/Tango.Integration/Observables/Enumerations/ActionTypes.cs +++ b/Software/Visual_Studio/Tango.Integration/Observables/Enumerations/ActionTypes.cs @@ -4,7 +4,7 @@ using System.Collections.ObjectModel; using System.Linq; using System.ComponentModel; -namespace Tango.DAL.Observables +namespace Tango.Integration.Observables { public enum ActionTypes { diff --git a/Software/Visual_Studio/Tango.Integration/Observables/Enumerations/EventTypes.cs b/Software/Visual_Studio/Tango.Integration/Observables/Enumerations/EventTypes.cs index 66df05539..59305e0f4 100644 --- a/Software/Visual_Studio/Tango.Integration/Observables/Enumerations/EventTypes.cs +++ b/Software/Visual_Studio/Tango.Integration/Observables/Enumerations/EventTypes.cs @@ -4,7 +4,7 @@ using System.Collections.ObjectModel; using System.Linq; using System.ComponentModel; -namespace Tango.DAL.Observables +namespace Tango.Integration.Observables { public enum EventTypes { diff --git a/Software/Visual_Studio/Tango.Integration/Observables/Enumerations/FiberSynths.cs b/Software/Visual_Studio/Tango.Integration/Observables/Enumerations/FiberSynths.cs index 66ef5b189..bcfc2ad2b 100644 --- a/Software/Visual_Studio/Tango.Integration/Observables/Enumerations/FiberSynths.cs +++ b/Software/Visual_Studio/Tango.Integration/Observables/Enumerations/FiberSynths.cs @@ -4,7 +4,7 @@ using System.Collections.ObjectModel; using System.Linq; using System.ComponentModel; -namespace Tango.DAL.Observables +namespace Tango.Integration.Observables { public enum FiberSynths { diff --git a/Software/Visual_Studio/Tango.Integration/Observables/Enumerations/IdsPackFormulas.cs b/Software/Visual_Studio/Tango.Integration/Observables/Enumerations/IdsPackFormulas.cs index 0ac09b4fd..743f506ee 100644 --- a/Software/Visual_Studio/Tango.Integration/Observables/Enumerations/IdsPackFormulas.cs +++ b/Software/Visual_Studio/Tango.Integration/Observables/Enumerations/IdsPackFormulas.cs @@ -16,9 +16,10 @@ namespace Tango.Integration.Observables StandardColor = 0, /// <summary> - /// (Standard Color IDS Pack Formula) + /// (Diluter) /// </summary> [Description("Diluter")] Diluter = 1, + } } diff --git a/Software/Visual_Studio/Tango.Integration/Observables/Enumerations/LiquidTypes.cs b/Software/Visual_Studio/Tango.Integration/Observables/Enumerations/LiquidTypes.cs index bc2bf036b..f006a1e64 100644 --- a/Software/Visual_Studio/Tango.Integration/Observables/Enumerations/LiquidTypes.cs +++ b/Software/Visual_Studio/Tango.Integration/Observables/Enumerations/LiquidTypes.cs @@ -4,7 +4,7 @@ using System.Collections.ObjectModel; using System.Linq; using System.ComponentModel; -namespace Tango.DAL.Observables +namespace Tango.Integration.Observables { public enum LiquidTypes { diff --git a/Software/Visual_Studio/Tango.Integration/Observables/Enumerations/Rmls.cs b/Software/Visual_Studio/Tango.Integration/Observables/Enumerations/Rmls.cs index 5f8bb5eef..c8e78e6be 100644 --- a/Software/Visual_Studio/Tango.Integration/Observables/Enumerations/Rmls.cs +++ b/Software/Visual_Studio/Tango.Integration/Observables/Enumerations/Rmls.cs @@ -4,7 +4,7 @@ using System.Collections.ObjectModel; using System.Linq; using System.ComponentModel; -namespace Tango.DAL.Observables +namespace Tango.Integration.Observables { public enum Rmls { diff --git a/Software/Visual_Studio/Tango.Integration/Observables/Partials/Machine.cs b/Software/Visual_Studio/Tango.Integration/Observables/Partials/Machine.cs index 24988ab4c..850003e60 100644 --- a/Software/Visual_Studio/Tango.Integration/Observables/Partials/Machine.cs +++ b/Software/Visual_Studio/Tango.Integration/Observables/Partials/Machine.cs @@ -25,15 +25,25 @@ namespace Tango.Integration.Observables public override void Save() { - foreach (var brushStop in Jobs.SelectMany(x => x.Segments).SelectMany(x => x.BrushStops)) + foreach (var job in Jobs) { - foreach (var prop in typeof(BrushStop).GetProperties(BindingFlags.Public | BindingFlags.Instance).Where(x => x.PropertyType == typeof(double))) + job.JobIndex = Jobs.IndexOf(job); + + foreach (var segment in job.Segments) { - double value = (double)prop.GetValue(brushStop); + segment.SegmentIndex = job.Segments.IndexOf(segment); - if (double.IsInfinity(value)) + foreach (var stop in segment.BrushStops) { - prop.SetValue(brushStop, 0d); + foreach (var prop in typeof(BrushStop).GetProperties(BindingFlags.Public | BindingFlags.Instance).Where(x => x.PropertyType == typeof(double))) + { + double value = (double)prop.GetValue(stop); + + if (double.IsInfinity(value)) + { + prop.SetValue(stop, 0d); + } + } } } } diff --git a/Software/Visual_Studio/Tango.Integration/Printing/LiquidVolume.cs b/Software/Visual_Studio/Tango.Integration/Printing/LiquidVolume.cs index cd3e1f7be..8f6fb6245 100644 --- a/Software/Visual_Studio/Tango.Integration/Printing/LiquidVolume.cs +++ b/Software/Visual_Studio/Tango.Integration/Printing/LiquidVolume.cs @@ -77,6 +77,7 @@ namespace Tango.Integration.Printing RaisePropertyChanged(nameof(LiquidMaxNanoliterPerCentimeter)); RaisePropertyChanged(nameof(NanoliterPerSecond)); RaisePropertyChanged(nameof(PulsePerSecond)); + RaisePropertyChanged(nameof(NanoliterPerCentimeter)); RaisePropertyChanged(nameof(Volume)); } @@ -120,6 +121,14 @@ namespace Tango.Integration.Printing } } + public double NanoliterPerCentimeter + { + get + { + return FormulasCalculationService.CalculateNanoliterPerCentimeter(this); + } + } + public double PulsePerSecond { get diff --git a/Software/Visual_Studio/Tango.Integration/Printing/ProcessParametersTable.cs b/Software/Visual_Studio/Tango.Integration/Printing/ProcessParametersTable.cs index 1b4dd59cd..337b903b8 100644 --- a/Software/Visual_Studio/Tango.Integration/Printing/ProcessParametersTable.cs +++ b/Software/Visual_Studio/Tango.Integration/Printing/ProcessParametersTable.cs @@ -8,21 +8,21 @@ namespace Tango.Integration.Observables { public partial class ProcessParametersTable { - public event EventHandler DyeingSpeedChanged; + public event EventHandler DyeingSpeedMinInkUptakeChanged; protected override void RaisePropertyChanged(string propName) { base.RaisePropertyChanged(propName); - if (propName == nameof(DyeingSpeed)) + if (propName == nameof(DyeingSpeed) || propName == nameof(MinInkUptake)) { - OnDyeingSpeedChanged(); + OnDyeingSpeedMinInkUptakeChanged(); } } - protected virtual void OnDyeingSpeedChanged() + protected virtual void OnDyeingSpeedMinInkUptakeChanged() { - DyeingSpeedChanged?.Invoke(this, new EventArgs()); + DyeingSpeedMinInkUptakeChanged?.Invoke(this, new EventArgs()); } } } diff --git a/Software/Visual_Studio/Tango.Integration/Tango.Integration.csproj b/Software/Visual_Studio/Tango.Integration/Tango.Integration.csproj index b69d1431e..42ca836c3 100644 --- a/Software/Visual_Studio/Tango.Integration/Tango.Integration.csproj +++ b/Software/Visual_Studio/Tango.Integration/Tango.Integration.csproj @@ -75,6 +75,7 @@ </Compile> <Compile Include="ExtensionMethods\IExternalBridgeClientExtensions.cs" /> <Compile Include="Formulation\DiluterFormulaCalculator.cs" /> + <Compile Include="Formulation\FormulaCalculatorBase.cs" /> <Compile Include="Formulation\FormulasCalculationService.cs" /> <Compile Include="Formulation\FormulaResolver.cs" /> <Compile Include="Formulation\FormulaAttribute.cs" /> |
