diff options
| author | Roy <roy.mail.net@gmail.com> | 2018-02-16 19:04:47 +0200 |
|---|---|---|
| committer | Roy <roy.mail.net@gmail.com> | 2018-02-16 19:04:47 +0200 |
| commit | e332170566c295fb4ff375498867f984f1570707 (patch) | |
| tree | 9b9b72067d9d03e01f262b26e01203dada4fe624 /Software/Visual_Studio/MachineStudio/Modules | |
| parent | 9879f87a345bec10a3ee26e9ec669add2b5bfcd3 (diff) | |
| download | Tango-e332170566c295fb4ff375498867f984f1570707.tar.gz Tango-e332170566c295fb4ff375498867f984f1570707.zip | |
Before developer module redesign.
Diffstat (limited to 'Software/Visual_Studio/MachineStudio/Modules')
3 files changed, 192 insertions, 45 deletions
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 b2f6c3579..013129fc1 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 @@ -47,7 +47,6 @@ namespace Tango.MachineStudio.Developer.ViewModels private int _fullScreenGraphIndex; private JobHandler _jobHandler; - #region Properties /// <summary> @@ -329,6 +328,16 @@ namespace Tango.MachineStudio.Developer.ViewModels set { _fullScreenGraph = value; RaisePropertyChangedAuto(); } } + private List<Segment> _runningJobSegments; + /// <summary> + /// Gets or sets the running job segments. + /// </summary> + public List<Segment> RunningJobSegments + { + get { return _runningJobSegments; } + set { _runningJobSegments = value; RaisePropertyChangedAuto(); } + } + #endregion #region Commands @@ -477,11 +486,21 @@ namespace Tango.MachineStudio.Developer.ViewModels #region Event Handlers + /// <summary> + /// Handles the diagnostics provider frame received event. + /// </summary> + /// <param name="sender">The sender.</param> + /// <param name="response">The response.</param> private void DiagnosticsFrameProvider_FrameReceived(object sender, PushDiagnosticsResponse response) { PopulateDiagnosticsData(response); } + /// <summary> + /// Handles the application manager connected machine changes event. + /// </summary> + /// <param name="sender">The sender.</param> + /// <param name="machine">The machine.</param> private void ApplicationManager_ConnectedMachineChanged(object sender, IExternalBridgeClient machine) { MachineOperator = machine; @@ -497,11 +516,21 @@ namespace Tango.MachineStudio.Developer.ViewModels InvalidateLiquidFactorsAndProcessTables(); } + /// <summary> + /// Handles the LengthChanged event of the SelectedJob. + /// </summary> + /// <param name="sender">The source of the event.</param> + /// <param name="e">The <see cref="EventArgs"/> instance containing the event data.</param> private void SelectedJob_LengthChanged(object sender, EventArgs e) { UpdateEstimatedDuration(); } + /// <summary> + /// Handles the DyeingSpeedMinInkUptakeChanged event of the SelectedProcessParametersTable. + /// </summary> + /// <param name="sender">The source of the event.</param> + /// <param name="e">The <see cref="EventArgs"/> instance containing the event data.</param> private void SelectedProcessParametersTable_DyeingSpeedMinInkUptakeChanged(object sender, EventArgs e) { if (SelectedSegment != null) @@ -693,6 +722,7 @@ namespace Tango.MachineStudio.Developer.ViewModels RunningJob = SelectedJob; _runningJobEstimatedDuration = EstimatedDuration; + RunningJobSegments = CreateRunningJobEffectiveSegments(RunningJob); _jobHandler = MachineOperator.Print(SelectedJob, SelectedProcessParametersTable); @@ -700,6 +730,27 @@ namespace Tango.MachineStudio.Developer.ViewModels { RunningJobRemainingTime = _runningJobEstimatedDuration - TimeSpan.FromSeconds(RunningJobProgress / (SelectedProcessParametersTable.DyeingSpeed / 100d)); RunningJobProgress = status.Progress; + + foreach (var segment in RunningJobSegments) + { + var previousSegmentsWithThis = RunningJobSegments.Where(s => RunningJobSegments.IndexOf(s) <= RunningJobSegments.IndexOf(segment)).ToList(); + var segmentsDuration = TimeSpan.FromSeconds(previousSegmentsWithThis.Sum(s => s.Length) / (SelectedProcessParametersTable.DyeingSpeed / 100d)); + var segmentDuration = TimeSpan.FromSeconds(segment.Length / (SelectedProcessParametersTable.DyeingSpeed / 100d)); + TimeSpan remaining = segmentsDuration - TimeSpan.FromSeconds(RunningJobProgress / (SelectedProcessParametersTable.DyeingSpeed / 100d)); + if (remaining >= TimeSpan.Zero) + { + segment.RemainingTime = remaining; + } + if (remaining < segmentDuration) + { + segment.Started = true; + } + if (remaining <= TimeSpan.Zero) + { + segment.Completed = true; + segment.Started = false; + } + } }; _jobHandler.Failed += (x, ex) => @@ -729,6 +780,7 @@ namespace Tango.MachineStudio.Developer.ViewModels { using (_notification.PushTaskItem("Saving machine jobs...")) { + SelectedJob.CreationDate = DateTime.UtcNow; await SelectedJob.SaveAsync(); } } @@ -938,6 +990,36 @@ namespace Tango.MachineStudio.Developer.ViewModels } } + private List<Segment> CreateRunningJobEffectiveSegments(Job job) + { + List<Segment> segments = new List<Segment>(); + foreach (var s in job.Segments) + { + s.Completed = false; + s.Started = false; + segments.Add(s); + + if (job.EnableInterSegment && job.Segments.IndexOf(s) != job.Segments.Count - 1) + { + segments.Add(new Segment() + { + Length = job.InterSegmentLength, + BrushStops = new System.Collections.ObjectModel.ObservableCollection<BrushStop>() + { + new BrushStop() + { + Color = Colors.White, + } + }, + Started = false, + Completed = false + }); + } + } + + return segments; + } + #endregion #region Override Methods 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 b6d859cd4..240e3127c 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 @@ -255,17 +255,17 @@ </Grid.Style> <Border BorderBrush="#404040" BorderThickness="0 0 0 1" Padding="20"> <DockPanel> - <Grid DockPanel.Dock="Left" MinWidth="190"> - <StackPanel Orientation="Horizontal" Visibility="{Binding IsJobRunning,Converter={StaticResource BooleanToVisibilityConverter}}"> - <ProgressBar Foreground="#FF6464" Width="30" Height="30" HorizontalAlignment="Center" VerticalAlignment="Center" IsIndeterminate="True" Style="{StaticResource MaterialDesignCircularProgressBar}" Value="0" /> - <TextBlock VerticalAlignment="Center" Margin="10 0 0 0" FontSize="14" FontStyle="Italic" FontWeight="DemiBold" Foreground="#FF6464"> + <Grid DockPanel.Dock="Left" MinWidth="190" VerticalAlignment="Center" Margin="0 0 0 0"> + <StackPanel Orientation="Vertical" Visibility="{Binding IsJobRunning,Converter={StaticResource BooleanToVisibilityConverter}}"> + <ProgressBar Foreground="#FF6464" Width="50" Height="50" HorizontalAlignment="Center" VerticalAlignment="Center" IsIndeterminate="True" Style="{StaticResource MaterialDesignCircularProgressBar}" Value="0" /> + <TextBlock Margin="0 10 0 0" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="14" FontStyle="Italic" FontWeight="DemiBold" Foreground="#FF6464" TextWrapping="Wrap"> <Run Text="Running '"></Run> <Run Text="{Binding RunningJob.Name}"></Run> <Run Text="'..."></Run> </TextBlock> </StackPanel> </Grid> - <StackPanel DockPanel.Dock="Right"> + <StackPanel DockPanel.Dock="Right" VerticalAlignment="Center" Margin="0 20 0 0"> <StackPanel Orientation="Horizontal"> <TextBlock VerticalAlignment="Center" FontSize="30" FontFamily="{StaticResource digital-7}" Margin="0 0 40 0" Foreground="#FF6464" Width="100" Text="{Binding RunningJobRemainingTime,StringFormat=hh\\:mm\\:ss}"></TextBlock> @@ -279,9 +279,10 @@ </StackPanel> <Grid> <Grid> - <Border VerticalAlignment="Bottom" Width="1200" BorderBrush="#404040" BorderThickness="0" ClipToBounds="False"> - <Grid ClipToBounds="False" Height="32"> - <ItemsControl ClipToBounds="False" x:Name="runningJobBrushList"> + <Border Margin="0 10 0 0" VerticalAlignment="Bottom" Width="1200" BorderBrush="#404040" BorderThickness="0" ClipToBounds="False"> + <Grid ClipToBounds="False" > + + <ItemsControl ClipToBounds="False" x:Name="runningJobBrushList" ItemsSource="{Binding RunningJobSegments}"> <ItemsControl.ItemsPanel> <ItemsPanelTemplate> <StackPanel Orientation="Horizontal" ClipToBounds="False"></StackPanel> @@ -289,7 +290,7 @@ </ItemsControl.ItemsPanel> <ItemsControl.ItemTemplate> <DataTemplate> - <Grid> + <Grid ClipToBounds="False"> <Grid.Width> <MultiBinding Converter="{StaticResource SegmentLengthToWidthConverter}"> <Binding RelativeSource="{RelativeSource AncestorType=UserControl}" Path="DataContext.RunningJob"></Binding> @@ -298,53 +299,85 @@ <Binding Path="Length"></Binding> </MultiBinding> </Grid.Width> - <Rectangle Height="10" VerticalAlignment="Bottom"> - <Rectangle.Fill> - <MultiBinding Converter="{StaticResource SegmentToBrushConverterMulti}"> - <Binding Path="."></Binding> - <Binding RelativeSource="{RelativeSource AncestorType=UserControl}" Path="DataContext.RunningJob"></Binding> - <Binding RelativeSource="{RelativeSource AncestorType=UserControl}" Path="DataContext.RunningJob.Length"></Binding> - </MultiBinding> - </Rectangle.Fill> - </Rectangle> - <StackPanel Margin="0 0 0 0" HorizontalAlignment="Center"> - <TextBlock FontSize="9" HorizontalAlignment="Right"> + <StackPanel Margin="0 0 0 0" ClipToBounds="False"> + + <StackPanel Margin="0 0 0 0" HorizontalAlignment="Center" VerticalAlignment="Center"> + <TextBlock Margin="0 0 0 0" FontSize="14" HorizontalAlignment="Right"> <Run Text="{Binding Length,Mode=OneWay}"></Run> - <Run FontSize="8" Text="m"></Run> - </TextBlock> - <materialDesign:PackIcon HorizontalAlignment="Right" RenderTransformOrigin="0.5,0.5" Kind="Triangle" Width="8" Height="8"> - <materialDesign:PackIcon.RenderTransform> - <RotateTransform Angle="180" /> - </materialDesign:PackIcon.RenderTransform> - </materialDesign:PackIcon> + <Run FontSize="12" Text="m"></Run> + </TextBlock> + <materialDesign:PackIcon HorizontalAlignment="Center" RenderTransformOrigin="0.5,0.5" Kind="Triangle" Width="12" Height="12"> + <materialDesign:PackIcon.RenderTransform> + <RotateTransform Angle="180" /> + </materialDesign:PackIcon.RenderTransform> + </materialDesign:PackIcon> + </StackPanel> + + <Rectangle Height="30" Margin="0 10 0 0" VerticalAlignment="Center"> + <Rectangle.Fill> + <MultiBinding Converter="{StaticResource SegmentToBrushConverterMulti}"> + <Binding Path="."></Binding> + <Binding RelativeSource="{RelativeSource AncestorType=UserControl}" Path="DataContext.RunningJob"></Binding> + <Binding RelativeSource="{RelativeSource AncestorType=UserControl}" Path="DataContext.RunningJob.Length"></Binding> + </MultiBinding> + </Rectangle.Fill> + </Rectangle> + + <Canvas Height="30" HorizontalAlignment="Center" Width="80"> + <Label Padding="0" Margin="0"> + <Label.Style> + <Style TargetType="Label"> + <Setter Property="Content" Value="{x:Null}"></Setter> + <Style.Triggers> + <DataTrigger Binding="{Binding Started}" Value="True"> + <Setter Property="Content"> + <Setter.Value> + <TextBlock Text="{Binding RemainingTime,StringFormat=hh\\:mm\\:ss}" Foreground="#FF6464" FontFamily="{StaticResource digital-7}" HorizontalAlignment="Center" Margin="10" FontSize="20"></TextBlock> + </Setter.Value> + </Setter> + </DataTrigger> + <DataTrigger Binding="{Binding Completed}" Value="True"> + <Setter Property="Content"> + <Setter.Value> + <materialDesign:PackIcon Margin="30 10 0 0" HorizontalAlignment="Center" Width="24" Height="24" Kind="Check" Foreground="#47FF00" /> + </Setter.Value> + </Setter> + </DataTrigger> + </Style.Triggers> + </Style> + </Label.Style> + </Label> + </Canvas> </StackPanel> + + <Rectangle HorizontalAlignment="Right" Stroke="White" Margin="0 35 0 25"></Rectangle> </Grid> </DataTemplate> </ItemsControl.ItemTemplate> </ItemsControl> - <StackPanel Margin="-20 -5 0 0" HorizontalAlignment="Left"> - <TextBlock FontSize="9"> + <StackPanel Margin="-40 -5 0 0" HorizontalAlignment="Left"> + <TextBlock FontSize="14"> <Run Text="0"></Run> - <Run FontSize="8" Text="m"></Run> + <Run FontSize="13" Text="m"></Run> </TextBlock> - <materialDesign:PackIcon HorizontalAlignment="Right" RenderTransformOrigin="0.5,0.5" Kind="SubdirectoryArrowRight" Width="16" Height="16"> + <materialDesign:PackIcon HorizontalAlignment="Right" RenderTransformOrigin="0.5,0.5" Kind="SubdirectoryArrowRight" Width="20" Height="20"> </materialDesign:PackIcon> </StackPanel> - <StackPanel Margin="0 -5 -20 0" HorizontalAlignment="Right"> - <TextBlock FontSize="9"> + <StackPanel Margin="0 -5 -40 0" HorizontalAlignment="Right"> + <TextBlock FontSize="14"> <Run Text="{Binding RunningJob.Length,Mode=OneWay}"></Run> - <Run FontSize="8" Text="m"></Run> + <Run FontSize="13" Text="m"></Run> </TextBlock> - <materialDesign:PackIcon HorizontalAlignment="Right" RenderTransformOrigin="0.5,0.5" Kind="FlagCheckered" Width="16" Height="16"> + <materialDesign:PackIcon HorizontalAlignment="Right" RenderTransformOrigin="0.5,0.5" Kind="FlagCheckered" Width="20" Height="20"> </materialDesign:PackIcon> </StackPanel> - <Border BorderBrush="#404040" BorderThickness="1" VerticalAlignment="Bottom" Height="10"> + <Border BorderBrush="#404040" BorderThickness="1" VerticalAlignment="Center" Height="30" Margin="0 11 0 0"> </Border> @@ -357,8 +390,8 @@ <Binding ElementName="jobProgressCanvas" Path="ActualWidth" /> </MultiBinding> </Canvas.Left> - <materialDesign:PackIcon Kind="MapMarker" Foreground="#FF6464" Background="#202020" Width="16" Height="16" Margin="-6 0 0 0" /> - <TextBlock Margin="-4 -18 0 0" FontSize="10" Foreground="#FF6464" VerticalAlignment="Top" Background="#202020" Height="18" Text="{Binding RunningJobProgress,StringFormat=0.0}"></TextBlock> + <materialDesign:PackIcon Kind="MapMarker" Foreground="#FF6464" Width="35" Height="35" Margin="-17 0 0 0" /> + <TextBlock Margin="-11 -23 0 0" FontSize="16" Foreground="#FF6464" VerticalAlignment="Top" Height="18" Text="{Binding RunningJobProgress,StringFormat=0.0}"></TextBlock> </Grid> </Canvas> </Grid> @@ -804,7 +837,22 @@ <Grid> - <Rectangle HorizontalAlignment="Right" StrokeDashArray="5" StrokeThickness="1" Stroke="Silver" Margin="0 40 0 40"></Rectangle> + <Rectangle HorizontalAlignment="Right" StrokeThickness="1" Width="3" Margin="0 40 0 40"> + <Rectangle.Fill> + <LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1"> + <GradientStop Offset="0" Color="Transparent" /> + <GradientStop Offset="0.5" Color="Black" /> + <GradientStop Offset="1.1" Color="Transparent" /> + </LinearGradientBrush> + </Rectangle.Fill> + <Rectangle.Stroke> + <LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1"> + <GradientStop Offset="0" Color="Transparent" /> + <GradientStop Offset="0.5" Color="White" /> + <GradientStop Offset="1" Color="Transparent" /> + </LinearGradientBrush> + </Rectangle.Stroke> + </Rectangle> <DockPanel Margin="10"> <StackPanel DockPanel.Dock="Top" > <StackPanel Orientation="Horizontal"> @@ -812,7 +860,7 @@ <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" CornerRadius="5" BorderThickness="1" BorderBrush="Gainsboro" Background="#7BFFFFFF"> <StackPanel Orientation="Horizontal" HorizontalAlignment="Right"> @@ -1027,6 +1075,23 @@ </ListBox> </DockPanel> + <Rectangle HorizontalAlignment="Right" StrokeThickness="1" Width="3" Margin="0 40 0 40"> + <Rectangle.Fill> + <LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1"> + <GradientStop Offset="0" Color="Transparent" /> + <GradientStop Offset="0.5" Color="Black" /> + <GradientStop Offset="1.1" Color="Transparent" /> + </LinearGradientBrush> + </Rectangle.Fill> + <Rectangle.Stroke> + <LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1"> + <GradientStop Offset="0" Color="Transparent" /> + <GradientStop Offset="0.5" Color="White" /> + <GradientStop Offset="1" Color="Transparent" /> + </LinearGradientBrush> + </Rectangle.Stroke> + </Rectangle> + <Grid Grid.Column="1" Margin="10 5 0 0"> <DockPanel> <StackPanel Orientation="Horizontal" DockPanel.Dock="Top"> @@ -1106,8 +1171,8 @@ <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> + <Setter Property="BorderBrush" Value="#B5B5B5"></Setter> + <Setter Property="Background" Value="#70FFFFFF"></Setter> <Style.Triggers> <DataTrigger Binding="{Binding RelativeSource={RelativeSource AncestorType=ListBoxItem},Path=IsSelected,FallbackValue=False}" Value="True"> <Setter Property="BorderBrush" Value="Gainsboro"></Setter> @@ -1521,7 +1586,7 @@ <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="{StaticResource digital-7}" Text="{Binding EstimatedDuration,StringFormat=hh\\:mm\\:ss,TargetNullValue='00:00:00'}"></Run> + <Run FontSize="18" FontStyle="Italic" FontFamily="{StaticResource digital-7}" Text="{Binding EstimatedDuration,StringFormat=hh\\:mm\\:ss,TargetNullValue='00:00:00'}"></Run> </TextBlock> </StackPanel> </Grid> diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/Views/MainView.xaml.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/Views/MainView.xaml.cs index d47a7ecb1..e52a686bc 100644 --- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/Views/MainView.xaml.cs +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/Views/MainView.xaml.cs @@ -146,7 +146,7 @@ namespace Tango.MachineStudio.Developer.Views private void OnJobStartClick(object sender, RoutedEventArgs e) { - runningJobBrushList.ItemsSource = jobBrushList.ItemsSource; + } private void HiveColorPickerControl_SelectedColorChanged(object sender, Color e) |
