aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/MachineStudio
diff options
context:
space:
mode:
authorRoy <roy.mail.net@gmail.com>2018-02-20 00:03:51 +0200
committerRoy <roy.mail.net@gmail.com>2018-02-20 00:03:51 +0200
commit1a573aaa346ec4b8bd58a0e35ab9df571a09b855 (patch)
tree18055974ba06b0b1282955a2160e1fad5dd21bcc /Software/Visual_Studio/MachineStudio
parent160ec4042539e69a7494bcde5c893c6dffcbf1b6 (diff)
downloadTango-1a573aaa346ec4b8bd58a0e35ab9df571a09b855.tar.gz
Tango-1a573aaa346ec4b8bd58a0e35ab9df571a09b855.zip
Added logs to developer module!
Diffstat (limited to 'Software/Visual_Studio/MachineStudio')
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/Controls/IOMonitorControl.xaml115
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/Controls/IOMonitorControl.xaml.cs109
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/Navigation/DeveloperNavigationManager.cs2
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/Tango.MachineStudio.Developer.csproj15
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/ViewModels/IOVM.cs47
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/ViewModels/MainViewVM.cs569
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/TechnicianDbContext.cs28
7 files changed, 380 insertions, 505 deletions
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/Controls/IOMonitorControl.xaml b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/Controls/IOMonitorControl.xaml
deleted file mode 100644
index c40e69d98..000000000
--- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/Controls/IOMonitorControl.xaml
+++ /dev/null
@@ -1,115 +0,0 @@
-<UserControl x:Class="Tango.MachineStudio.Developer.Controls.IOMonitorControl"
- xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
- xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
- xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
- xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
- xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
- xmlns:local="clr-namespace:Tango.MachineStudio.Developer.Controls"
- mc:Ignorable="d"
- d:DesignHeight="120" d:DesignWidth="200" Width="200" Height="120" Background="White">
-
- <UserControl.Resources>
-
- </UserControl.Resources>
-
- <Grid Margin="5">
- <Grid.ColumnDefinitions>
- <ColumnDefinition Width="30"/>
- <ColumnDefinition Width="1*"/>
- <ColumnDefinition Width="30"/>
- </Grid.ColumnDefinitions>
-
- <Grid Grid.Column="1" Grid.Row="1">
- <Border BorderThickness="1" BorderBrush="#878787" CornerRadius="5">
- <Border.Background>
- <ImageBrush ImageSource="../Images/black-screen.jpg" />
- </Border.Background>
-
- <TextBlock TextAlignment="Center" VerticalAlignment="Center" FontSize="50" Text="{Binding RelativeSource={RelativeSource AncestorType=UserControl},Path=Value,FallbackValue='0000'}"></TextBlock>
- </Border>
- </Grid>
-
- <Grid Grid.Row="1">
- <Border BorderBrush="Gainsboro" BorderThickness="1 1 0 1" Margin="0 10" CornerRadius="5 0 0 5" PreviewMouseDown="OnBackwardPressed" PreviewMouseUp="OnBackwardReleased">
- <Border.Style>
- <Style TargetType="Border">
- <Setter Property="Background">
- <Setter.Value>
- <LinearGradientBrush EndPoint="1,0">
- <GradientStop Color="#515151" Offset="1" />
- <GradientStop Color="#FFEEEEEE" Offset="0"/>
- </LinearGradientBrush>
- </Setter.Value>
- </Setter>
- <Style.Triggers>
- <EventTrigger RoutedEvent="PreviewMouseDown">
- <EventTrigger.Actions>
- <BeginStoryboard>
- <Storyboard>
- <ColorAnimation Storyboard.TargetProperty="Background.GradientStops[1].Color" To="#FFCECECE" Duration="00:00:0.1" />
- </Storyboard>
- </BeginStoryboard>
- </EventTrigger.Actions>
- </EventTrigger>
- <EventTrigger RoutedEvent="PreviewMouseUp">
- <EventTrigger.Actions>
- <BeginStoryboard>
- <Storyboard>
- <ColorAnimation Storyboard.TargetProperty="Background.GradientStops[1].Color" To="#FFEEEEEE" Duration="00:00:0.1" />
- </Storyboard>
- </BeginStoryboard>
- </EventTrigger.Actions>
- </EventTrigger>
- </Style.Triggers>
- </Style>
- </Border.Style>
-
- <Viewbox Stretch="Fill" Margin="-10 10">
- <materialDesign:PackIcon Kind="ChevronLeft" HorizontalAlignment="Center" VerticalAlignment="Center" Width="24" Height="24" Foreground="#202020" />
- </Viewbox>
- </Border>
- </Grid>
-
- <Grid Grid.Row="1" Grid.Column="2">
- <Border BorderBrush="Gainsboro" BorderThickness="0 1 1 1" Margin="0 10" CornerRadius="0 10 10 0" PreviewMouseDown="OnForwardPressed" PreviewMouseUp="OnForwardReleased">
- <Border.Style>
- <Style TargetType="Border">
- <Setter Property="Background">
- <Setter.Value>
- <LinearGradientBrush EndPoint="1,0">
- <GradientStop Color="#515151" Offset="0" />
- <GradientStop Color="#FFEEEEEE" Offset="1"/>
- </LinearGradientBrush>
- </Setter.Value>
- </Setter>
- <Style.Triggers>
- <EventTrigger RoutedEvent="PreviewMouseDown">
- <EventTrigger.Actions>
- <BeginStoryboard>
- <Storyboard>
- <ColorAnimation Storyboard.TargetProperty="Background.GradientStops[1].Color" To="#FFCECECE" Duration="00:00:0.1" />
- </Storyboard>
- </BeginStoryboard>
- </EventTrigger.Actions>
- </EventTrigger>
- <EventTrigger RoutedEvent="PreviewMouseUp">
- <EventTrigger.Actions>
- <BeginStoryboard>
- <Storyboard>
- <ColorAnimation Storyboard.TargetProperty="Background.GradientStops[1].Color" To="#FFEEEEEE" Duration="00:00:0.1" />
- </Storyboard>
- </BeginStoryboard>
- </EventTrigger.Actions>
- </EventTrigger>
- </Style.Triggers>
- </Style>
- </Border.Style>
-
- <Viewbox Stretch="Fill" Margin="-10 10">
- <materialDesign:PackIcon Kind="ChevronRight" HorizontalAlignment="Center" VerticalAlignment="Center" Width="24" Height="24" Foreground="#202020" />
- </Viewbox>
- </Border>
- </Grid>
-
- </Grid>
-</UserControl>
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/Controls/IOMonitorControl.xaml.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/Controls/IOMonitorControl.xaml.cs
deleted file mode 100644
index bc408958d..000000000
--- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/Controls/IOMonitorControl.xaml.cs
+++ /dev/null
@@ -1,109 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using System.Windows;
-using System.Windows.Controls;
-using System.Windows.Data;
-using System.Windows.Documents;
-using System.Windows.Input;
-using System.Windows.Media;
-using System.Windows.Media.Imaging;
-using System.Windows.Navigation;
-using System.Windows.Shapes;
-using Tango.Core.Commands;
-
-namespace Tango.MachineStudio.Developer.Controls
-{
- /// <summary>
- /// Interaction logic for IOMonitorControl.xaml
- /// </summary>
- public partial class IOMonitorControl : UserControl
- {
- public ICommand ForwardPressedCommand
- {
- get { return (ICommand)GetValue(ForwardPressedCommandProperty); }
- set { SetValue(ForwardPressedCommandProperty, value); }
- }
- public static readonly DependencyProperty ForwardPressedCommandProperty =
- DependencyProperty.Register("ForwardPressedCommand", typeof(ICommand), typeof(IOMonitorControl), new PropertyMetadata(null));
-
- public ICommand ForwardReleasedCommand
- {
- get { return (ICommand)GetValue(ForwardReleasedCommandProperty); }
- set { SetValue(ForwardReleasedCommandProperty, value); }
- }
- public static readonly DependencyProperty ForwardReleasedCommandProperty =
- DependencyProperty.Register("ForwardReleasedCommand", typeof(ICommand), typeof(IOMonitorControl), new PropertyMetadata(null));
-
- public ICommand BackwardPressedCommand
- {
- get { return (ICommand)GetValue(BackwardPressedCommandProperty); }
- set { SetValue(BackwardPressedCommandProperty, value); }
- }
- public static readonly DependencyProperty BackwardPressedCommandProperty =
- DependencyProperty.Register("BackwardPressedCommand", typeof(ICommand), typeof(IOMonitorControl), new PropertyMetadata(null));
-
- public ICommand BackwardReleasedCommand
- {
- get { return (ICommand)GetValue(BackwardReleasedCommandProperty); }
- set { SetValue(BackwardReleasedCommandProperty, value); }
- }
- public static readonly DependencyProperty BackwardReleasedCommandProperty =
- DependencyProperty.Register("BackwardReleasedCommand", typeof(ICommand), typeof(IOMonitorControl), new PropertyMetadata(null));
-
- public object CommandParameter
- {
- get { return (object)GetValue(CommandParameterProperty); }
- set { SetValue(CommandParameterProperty, value); }
- }
- public static readonly DependencyProperty CommandParameterProperty =
- DependencyProperty.Register("CommandParameter", typeof(object), typeof(IOMonitorControl), new PropertyMetadata(null));
-
- public String Value
- {
- get { return (String)GetValue(ValueProperty); }
- set { SetValue(ValueProperty, value); }
- }
- public static readonly DependencyProperty ValueProperty =
- DependencyProperty.Register("Value", typeof(String), typeof(IOMonitorControl), new PropertyMetadata("0000"));
-
- public IOMonitorControl()
- {
- InitializeComponent();
- }
-
- private void OnForwardPressed(object sender, MouseButtonEventArgs e)
- {
- if (ForwardPressedCommand != null)
- {
- ForwardPressedCommand.Execute(CommandParameter);
- }
- }
-
- private void OnForwardReleased(object sender, MouseButtonEventArgs e)
- {
- if (ForwardReleasedCommand != null)
- {
- ForwardReleasedCommand.Execute(CommandParameter);
- }
- }
-
- private void OnBackwardPressed(object sender, MouseButtonEventArgs e)
- {
- if (BackwardPressedCommand != null)
- {
- BackwardPressedCommand.Execute(CommandParameter);
- }
- }
-
- private void OnBackwardReleased(object sender, MouseButtonEventArgs e)
- {
- if (BackwardReleasedCommand != null)
- {
- BackwardReleasedCommand.Execute(CommandParameter);
- }
- }
- }
-}
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/Navigation/DeveloperNavigationManager.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/Navigation/DeveloperNavigationManager.cs
index 5be50231d..03e022380 100644
--- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/Navigation/DeveloperNavigationManager.cs
+++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/Navigation/DeveloperNavigationManager.cs
@@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
+using Tango.Logging;
using Tango.MachineStudio.Common.Navigation;
using Tango.MachineStudio.Developer.Views;
@@ -12,6 +13,7 @@ namespace Tango.MachineStudio.Developer.Navigation
{
public void NavigateTo(DeveloperNavigationView view)
{
+ LogManager.Log(String.Format("Navigating to view {0}...", view.ToString()));
MainView.Instance.TransitionControl.AutoNavigate(view.ToString());
}
}
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 91a9602be..364b8573a 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
@@ -100,9 +100,6 @@
<Reference Include="PresentationFramework" />
</ItemGroup>
<ItemGroup>
- <Compile Include="Controls\IOMonitorControl.xaml.cs">
- <DependentUpon>IOMonitorControl.xaml</DependentUpon>
- </Compile>
<Compile Include="Converters\BrushStopLabToColorConverter.cs" />
<Compile Include="Converters\BrushStopCMYKToColorConverter.cs" />
<Compile Include="Converters\BrushStopToColorConverter.cs" />
@@ -122,7 +119,6 @@
<Compile Include="Navigation\DeveloperNavigationManager.cs" />
<Compile Include="Navigation\DeveloperNavigationView.cs" />
<Compile Include="ViewModelLocator.cs" />
- <Compile Include="ViewModels\IOVM.cs" />
<Compile Include="ViewModels\MainViewVM.cs" />
<Compile Include="Views\MainView.xaml.cs">
<DependentUpon>MainView.xaml</DependentUpon>
@@ -140,10 +136,6 @@
<Compile Include="Views\RunningJobView.xaml.cs">
<DependentUpon>RunningJobView.xaml</DependentUpon>
</Compile>
- <Page Include="Controls\IOMonitorControl.xaml">
- <SubType>Designer</SubType>
- <Generator>MSBuild:Compile</Generator>
- </Page>
<Page Include="Resources\GraphEx.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
@@ -219,6 +211,10 @@
<Project>{4206ac58-3b57-4699-8835-90bf6db01a61}</Project>
<Name>Tango.Integration</Name>
</ProjectReference>
+ <ProjectReference Include="..\..\..\Tango.Logging\Tango.Logging.csproj">
+ <Project>{bc932dbd-7cdb-488c-99e4-f02cf441f55e}</Project>
+ <Name>Tango.Logging</Name>
+ </ProjectReference>
<ProjectReference Include="..\..\..\Tango.PMR\Tango.PMR.csproj">
<Project>{e4927038-348d-4295-aaf4-861c58cb3943}</Project>
<Name>Tango.PMR</Name>
@@ -314,5 +310,8 @@
<ItemGroup>
<Resource Include="Images\black-screen.jpg" />
</ItemGroup>
+ <ItemGroup>
+ <Folder Include="Controls\" />
+ </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/IOVM.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/ViewModels/IOVM.cs
deleted file mode 100644
index cc4170827..000000000
--- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/ViewModels/IOVM.cs
+++ /dev/null
@@ -1,47 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using Tango.Core;
-using Tango.Integration.Observables;
-
-namespace Tango.MachineStudio.Developer.ViewModels
-{
- public class IOVM : ExtendedObject
- {
- private TechMonitor _io;
- public TechMonitor IO
- {
- get { return _io; }
- set { _io = value; RaisePropertyChangedAuto(); }
- }
-
- private String _name;
- public String Name
- {
- get { return _name; }
- set { _name = value; }
- }
-
- private bool _index;
- public bool Index
- {
- get { return _index; }
- set { _index = value; }
- }
-
- private double _value;
- public double Value
- {
- get { return _value; }
- set { _value = value; RaisePropertyChanged(nameof(Value)); }
- }
-
- public IOVM(TechMonitor io, String name)
- {
- IO = io;
- Name = name;
- }
- }
-}
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 62b742390..cf66efbd6 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
@@ -1,43 +1,29 @@
using GalaSoft.MvvmLight.Ioc;
-using RealTimeGraphEx.Controllers;
-using RealTimeGraphEx.DataSeries;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
+using System.ComponentModel;
using System.Linq;
-using System.Text;
+using System.Runtime.CompilerServices;
using System.Threading.Tasks;
+using System.Windows.Data;
using System.Windows.Media;
using Tango.Core.Commands;
using Tango.Integration.Observables;
+using Tango.Integration.Operators;
+using Tango.Integration.Services;
+using Tango.Logging;
+using Tango.MachineStudio.Common.Authentication;
using Tango.MachineStudio.Common.Controls;
+using Tango.MachineStudio.Common.Diagnostics;
using Tango.MachineStudio.Common.Notifications;
using Tango.MachineStudio.Common.StudioApplication;
-using Tango.SharedUI;
-using System.Runtime.CompilerServices;
-using System.Windows.Threading;
-using Tango.Settings;
-using Tango.MachineStudio.Developer.Views;
-using Tango.Video.DirectCapture;
-using Tango.Integration.Operators;
-using Tango.PMR.Diagnostics;
-using System.Reflection;
-using Tango.PMR.Common;
-using Tango.SharedUI.Helpers;
-using Tango.Transport;
-using Tango.Integration.Printing;
-using Tango.Integration.Diagnostics;
-using Microsoft.Win32;
-using Tango.MachineStudio.Technician.ViewModels;
-using Tango.MachineStudio.Common.Diagnostics;
using Tango.MachineStudio.Common.Video;
-using Tango.Integration.Services;
using Tango.MachineStudio.Developer.Navigation;
-using System.Data.Entity;
-using Tango.MachineStudio.Common.Authentication;
-using DeepEqual.Syntax;
-using System.ComponentModel;
-using System.Windows.Data;
+using Tango.MachineStudio.Developer.Views;
+using Tango.Settings;
+using Tango.SharedUI;
+using Tango.Transport;
namespace Tango.MachineStudio.Developer.ViewModels
{
@@ -53,10 +39,10 @@ namespace Tango.MachineStudio.Developer.ViewModels
private TimeSpan _runningJobEstimatedDuration;
private JobHandler _jobHandler;
private DeveloperNavigationManager _navigation;
- private ObservablesContext _dbJobContext;
private bool _blockInvalidateCommands;
private IAuthenticationProvider _authentication;
- private ObservablesContext _machineDBContext;
+ private ObservablesContext _machineDbContext;
+ private ObservablesContext _activeJobDbContext;
#region Properties
@@ -91,14 +77,15 @@ namespace Tango.MachineStudio.Developer.ViewModels
}
private ObservableCollection<WindingMethod> _windingMethods;
-
+ /// <summary>
+ /// Gets or sets the winding methods.
+ /// </summary>
public ObservableCollection<WindingMethod> WindingMethods
{
get { return _windingMethods; }
set { _windingMethods = value; RaisePropertyChangedAuto(); }
}
-
/// <summary>
/// Gets or sets the application manager.
/// </summary>
@@ -152,21 +139,6 @@ namespace Tango.MachineStudio.Developer.ViewModels
{ _rmlProcessParametersTablesGroup = value; RaisePropertyChangedAuto(); OnProcessParametersTableGroupChanged(); }
}
- public void OnDropSegment(Segment dragged, Segment dropped)
- {
- dragged.SegmentIndex = dropped.SegmentIndex;
- dropped.SegmentIndex++;
-
- int index = 1;
-
- foreach (var segment in ActiveJob.Segments.OrderBy(x => x.SegmentIndex))
- {
- segment.SegmentIndex = index++;
- }
-
- SegmentsCollectionView.Refresh();
- }
-
private ObservableCollection<ProcessParametersTablesGroup> _groupsHistory;
/// <summary>
/// Gets or sets the RML process parameters groups history.
@@ -465,7 +437,9 @@ namespace Tango.MachineStudio.Developer.ViewModels
}
private String _jobFilter;
-
+ /// <summary>
+ /// Gets or sets the job filter.
+ /// </summary>
public String JobFilter
{
get { return _jobFilter; }
@@ -598,15 +572,18 @@ namespace Tango.MachineStudio.Developer.ViewModels
{
SelectedJobs = new ObservableCollection<Job>();
- _machineDBContext = ObservablesContext.CreateDefault();
+ LogManager.Log("Initializing machine Db context...");
+ _machineDbContext = ObservablesContext.CreateDefault();
if (SettingsManager.Default.MachineStudio.DeveloperModule.LastSelectedMachineGuid != null)
{
- SelectedMachine = _machineDBContext.Machines.SingleOrDefault(x => x.Guid == SettingsManager.Default.MachineStudio.DeveloperModule.LastSelectedMachineGuid);
+ LogManager.Log("Setting last selected machine from settings...");
+ SelectedMachine = _machineDbContext.Machines.SingleOrDefault(x => x.Guid == SettingsManager.Default.MachineStudio.DeveloperModule.LastSelectedMachineGuid);
}
if (SettingsManager.Default.MachineStudio.DeveloperModule.LastSelectedJobGuid != null && SelectedMachine != null)
{
+ LogManager.Log("Setting last selected job from settings...");
SelectedMachineJob = SelectedMachine.Jobs.SingleOrDefault(x => x.Guid == SettingsManager.Default.MachineStudio.DeveloperModule.LastSelectedJobGuid);
}
@@ -618,6 +595,8 @@ namespace Tango.MachineStudio.Developer.ViewModels
ApplicationManager = applicationManager;
VideoCaptureProvider = videoCaptureProvider;
+ LogManager.Log("Initializing relay commands...");
+
//Initialize Commands...
EditMachineCommand = new RelayCommand(EditMachine, () => SelectedMachine != null);
EditRMLCommand = new RelayCommand(EditRML, () => SelectedRML != null);
@@ -630,12 +609,12 @@ namespace Tango.MachineStudio.Developer.ViewModels
RemoveJobCommand = new RelayCommand(RemoveSelectedJobs, () => SelectedMachineJob != null);
AddBrushStopCommand = new RelayCommand(AddBrushStop, () => SelectedSegment != null);
RemoveBrushStopCommand = new RelayCommand(RemoveSelectedBrushStops, () => SelectedBrushStop != null);
- SaveJobCommand = new RelayCommand(SaveJob, () => SelectedMachine != null);
- DiscardJobCommand = new RelayCommand(DiscardJob, () => SelectedMachine != null);
+ SaveJobCommand = new RelayCommand(SaveActiveJob, () => SelectedMachine != null);
+ DiscardJobCommand = new RelayCommand(BackToJobs, () => SelectedMachine != null);
StartJobCommand = new RelayCommand(StartJob, () => ActiveJob != null && !IsJobRunning);
StopJobCommand = new RelayCommand(StopJob, () => IsJobRunning);
CloseJobCompletionStatusCommand = new RelayCommand(CloseJobCompletionStatusBar);
- LoadJobCommand = new RelayCommand(LoadJob, () => SelectedMachineJob != null);
+ LoadJobCommand = new RelayCommand(LoadSelectedJob, () => SelectedMachineJob != null);
DuplicateJobCommand = new RelayCommand(DuplicateSelectedJobs, () => SelectedMachineJob != null);
DuplicateSegmentCommand = new RelayCommand(DuplicateSelectedSegments, () => SelectedSegment != null);
DuplicateBrushStopCommand = new RelayCommand(DuplicateSelectedBrushStops, () => SelectedBrushStop != null);
@@ -665,7 +644,7 @@ namespace Tango.MachineStudio.Developer.ViewModels
private void SelectedMachine_Saved(object sender, EventArgs e)
{
InvalidateLiquidFactorsAndProcessTables();
- SelectedMachine.Reload(_machineDBContext);
+ SelectedMachine.Reload(_machineDbContext);
}
/// <summary>
@@ -698,32 +677,36 @@ namespace Tango.MachineStudio.Developer.ViewModels
#endregion
- #region Virtual Methods
+ #region Properties Changes
+ /// <summary>
+ /// Called when the selected parameters table has changed.
+ /// </summary>
protected virtual void OnSelectedParametersTableChanged()
{
if (SelectedProcessParametersTable != null)
{
+ LogManager.Log("Selected process parameters table changed.");
SelectedProcessParametersTable.DyeingSpeedMinInkUptakeChanged -= SelectedProcessParametersTable_DyeingSpeedMinInkUptakeChanged;
SelectedProcessParametersTable.DyeingSpeedMinInkUptakeChanged += SelectedProcessParametersTable_DyeingSpeedMinInkUptakeChanged;
- }
-
- SetSegmentBrushStopsLiquidVolumes(SelectedSegment);
- UpdateEstimatedDuration();
+ SetSegmentBrushStopsLiquidVolumes(SelectedSegment);
+ UpdateEstimatedDuration();
+ }
}
/// <summary>
/// Called when the process parameters table group has been changed
/// </summary>
- private void OnProcessParametersTableGroupChanged()
+ protected virtual void OnProcessParametersTableGroupChanged()
{
if (RmlProcessParametersTableGroup != null && RmlProcessParametersTableGroup.ProcessParametersTables.Count > 0)
{
- SelectedProcessParametersTable = RmlProcessParametersTableGroup.ProcessParametersTables.First();
- }
+ LogManager.Log("Process parameters group changed...");
+ SelectedProcessParametersTable = RmlProcessParametersTableGroup.ProcessParametersTables.OrderBy(x => x.TableIndex).FirstOrDefault();
- UpdateEstimatedDuration();
+ UpdateEstimatedDuration();
+ }
}
/// <summary>
@@ -733,6 +716,7 @@ namespace Tango.MachineStudio.Developer.ViewModels
{
if (SelectedSegment != null)
{
+ LogManager.Log("Selected segment changed...");
SetSegmentBrushStopsLiquidVolumes(SelectedSegment);
SelectedBrushStop = SelectedSegment.BrushStops.FirstOrDefault();
@@ -748,6 +732,7 @@ namespace Tango.MachineStudio.Developer.ViewModels
{
if (SelectedGroupHistory != null)
{
+ LogManager.Log(String.Format("Parameters group {0} selected from history.", SelectedGroupHistory.Name));
RmlProcessParametersTableGroup = SelectedGroupHistory.CloneGroup();
}
}
@@ -759,137 +744,96 @@ namespace Tango.MachineStudio.Developer.ViewModels
{
if (SelectedMachine != null)
{
+ LogManager.Log(String.Format("Machine {0} changed.", SelectedMachine.SerialNumber));
ReloadMachine();
JobsCollectionView = CollectionViewSource.GetDefaultView(SelectedMachine.Jobs);
JobsCollectionView.SortDescriptions.Add(new SortDescription(nameof(Job.LastUpdated), ListSortDirection.Descending));
}
}
- private void ReloadMachine()
+ /// <summary>
+ /// Called when the job filtering has changed.
+ /// </summary>
+ protected virtual void OnJobFilterChanged()
{
- _machineDBContext.Dispose();
- _machineDBContext = ObservablesContext.CreateDefault();
- _machineDBContext.Configuration.LazyLoadingEnabled = true;
- Machines = _machineDBContext.Machines.ToObservableCollection();
- _selectedMachine = Machines.SingleOrDefault(x => x.Guid == _selectedMachine.Guid);
- RaisePropertyChanged(nameof(SelectedMachine));
-
- JobsCollectionView = CollectionViewSource.GetDefaultView(SelectedMachine.Jobs);
- JobsCollectionView.SortDescriptions.Add(new SortDescription(nameof(Job.LastUpdated), ListSortDirection.Descending));
- }
-
- #endregion
-
- #region Private Methods
+ String filter = JobFilter.ToLower();
- private void OnJobFilterChanged()
- {
JobsCollectionView.Filter = (job) =>
{
Job j = job as Job;
- return String.IsNullOrWhiteSpace(JobFilter)
+ return String.IsNullOrWhiteSpace(filter)
+ ||
+ j.Name.ToLower().Contains(filter) //Job name
+ ||
+ j.User.Contact.FirstName.ToLower().Contains(filter) // User first name
||
- j.Name.ToLower().Contains(JobFilter.ToLower());
+ j.Length.ToString().Contains(filter); //Job length
};
}
- private void OnActiveJobChanged()
+ /// <summary>
+ /// Called when the active job has changed.
+ /// </summary>
+ protected virtual void OnActiveJobChanged()
{
if (ActiveJob != null)
{
+ LogManager.Log(String.Format("Active job {0} changed.", ActiveJob.Name));
SegmentsCollectionView = CollectionViewSource.GetDefaultView(ActiveJob.Segments);
SegmentsCollectionView.SortDescriptions.Add(new SortDescription(nameof(Segment.SegmentIndex), ListSortDirection.Ascending));
}
}
- private void LoadJob()
- {
- if (SelectedMachineJob != null)
- {
- SelectedSegments = new ObservableCollection<Segment>();
- SelectedBrushStops = new ObservableCollection<BrushStop>();
- SelectedRML = null;
- SelectedSegment = null;
- SelectedGroupHistory = null;
- SelectedBrushStop = null;
- SelectedProcessParametersTable = null;
- RmlProcessParametersTableGroup = null;
-
- using (_notification.PushTaskItem("Loading job details..."))
- {
- //await Task.Factory.StartNew(() =>
- //{
- _blockInvalidateCommands = false;
-
- _dbJobContext = ObservablesContext.CreateDefault();
- _dbJobContext.Configuration.LazyLoadingEnabled = true;
-
- ColorSpaces = _dbJobContext.ColorSpaces.ToObservableCollection();
- Rmls = _dbJobContext.Rmls.ToObservableCollection();
- WindingMethods = _dbJobContext.WindingMethods.ToObservableCollection();
-
- _activeJob = _dbJobContext.Jobs.SingleOrDefault(x => x.Guid == SelectedMachineJob.Guid);
-
- _selectedRML = ActiveJob.Rml;
-
- _selectedSegment = ActiveJob.Segments.FirstOrDefault();
-
- ActiveJob.LengthChanged -= ActiveJob_LengthChanged;
- ActiveJob.LengthChanged += ActiveJob_LengthChanged;
+ #endregion
- ActiveJob = _activeJob;
+ #region Drag & Drop
- SelectedRML = _selectedRML;
- SelectedSegment = _selectedSegment;
+ /// <summary>
+ /// Switch the segment position in the job.
+ /// </summary>
+ /// <param name="dragged">The dragged.</param>
+ /// <param name="dropped">The dropped.</param>
+ public void OnDropSegment(Segment dragged, Segment dropped)
+ {
+ LogManager.Log(String.Format("Segment {0} Dropped on segment {1}", dragged.SegmentIndex, dropped.SegmentIndex));
- UpdateEstimatedDuration();
+ dragged.SegmentIndex = dropped.SegmentIndex;
+ dropped.SegmentIndex++;
- _blockInvalidateCommands = false;
- InvalidateRelayCommands();
+ int index = 1;
- InvokeUI(() => _navigation.NavigateTo(DeveloperNavigationView.JobView));
- //});
- }
+ foreach (var segment in ActiveJob.Segments.OrderBy(x => x.SegmentIndex))
+ {
+ segment.SegmentIndex = index++;
}
+
+ SegmentsCollectionView.Refresh();
}
- private async void SaveJob()
+ /// <summary>
+ /// Switch the brush stop position in the segment.
+ /// </summary>
+ /// <param name="dragged">The dragged stop.</param>
+ /// <param name="dropped">The dropped stop.</param>
+ public void OnDropBrushStop(BrushStop dragged, BrushStop dropped)
{
- if (ActiveJob != null)
- {
- using (_notification.PushTaskItem("Saving job to database..."))
- {
- ActiveJob.LastUpdated = DateTime.UtcNow;
- ActiveJob.Rml = SelectedRML;
+ LogManager.Log(String.Format("BrushStop {0} Dropped on BrushStop {1}", dragged.StopIndex, dropped.StopIndex));
- await ActiveJob.SaveAsync(_dbJobContext);
- ReloadMachine();
- SelectedMachineJob = SelectedMachine.Jobs.SingleOrDefault(x => x.Guid == ActiveJob.Guid);
- }
- }
+ dragged.SetStopIndex(dropped.StopIndex);
+ dropped.SetStopIndex(dropped.StopIndex + 1);
+ ArrangeBrushStopsIndices();
}
- private void DiscardJob()
- {
- bool jobModified = !ActiveJob.CompareUsingJson(SelectedMachineJob);
+ #endregion
- if (jobModified)
- {
- if (_notification.ShowQuestion("This will discard the current job changes. Are you sure?"))
- {
- _dbJobContext.Dispose();
- _navigation.NavigateTo(DeveloperNavigationView.MachineJobSelectionView);
- }
- }
- else
- {
- _dbJobContext.Dispose();
- _navigation.NavigateTo(DeveloperNavigationView.MachineJobSelectionView);
- }
- }
+ #region Running Job Management
+ /// <summary>
+ /// Closes the job completion status bar.
+ /// </summary>
private void CloseJobCompletionStatusBar()
{
+ LogManager.Log("Closing job completion status bar...");
_navigation.NavigateTo(DeveloperNavigationView.JobView);
IsJobCompleted = false;
IsJobFailed = false;
@@ -898,27 +842,43 @@ namespace Tango.MachineStudio.Developer.ViewModels
RunningJob = null;
}
+ /// <summary>
+ /// Stops the job.
+ /// </summary>
private void StopJob()
{
+ LogManager.Log("Stopping job...");
IsJobRunning = false;
IsJobCanceled = true;
_jobHandler.Cancel();
}
- private void FailJob()
+ /// <summary>
+ /// Fails the job.
+ /// </summary>
+ private void SetJobFailed()
{
+ LogManager.Log("Setting job failed state...");
IsJobRunning = false;
IsJobFailed = true;
}
- private void CompleteJob()
+ /// <summary>
+ /// Completes the job.
+ /// </summary>
+ private void SetJobCompleted()
{
+ LogManager.Log("Setting job completed state...");
IsJobRunning = false;
IsJobCompleted = true;
}
+ /// <summary>
+ /// Starts the job.
+ /// </summary>
private void StartJob()
{
+ LogManager.Log(String.Format("Starting job {0}...", ActiveJob.Name));
if (MachineOperator == null || MachineOperator.State != TransportComponentState.Connected)
{
_notification.ShowError("No machine connected. Could not execute the specified job.");
@@ -945,6 +905,7 @@ namespace Tango.MachineStudio.Developer.ViewModels
_navigation.NavigateTo(DeveloperNavigationView.RunningJobView);
+ LogManager.Log("Sending job to machine operator...");
_jobHandler = MachineOperator.Print(ActiveJob, SelectedProcessParametersTable);
_jobHandler.StatusReceived += (x, status) =>
@@ -976,7 +937,8 @@ namespace Tango.MachineStudio.Developer.ViewModels
_jobHandler.Failed += (x, ex) =>
{
- FailJob();
+ LogManager.Log(ex, String.Format("Job {0} has failed.", RunningJob.Name));
+ SetJobFailed();
InvokeUI(() =>
{
@@ -986,34 +948,58 @@ namespace Tango.MachineStudio.Developer.ViewModels
_jobHandler.Completed += (x, e) =>
{
- CompleteJob();
+ LogManager.Log(String.Format("Job {0} has completed.", RunningJob.Name));
+ SetJobCompleted();
};
_jobHandler.Canceled += (x, y) =>
{
+ LogManager.Log(String.Format("Job {0} has been canceled.", RunningJob.Name));
//Finally Canceled..
};
}
- private void UpdateEstimatedDuration()
+ /// <summary>
+ /// Creates the running job effective segments.
+ /// </summary>
+ /// <param name="job">The job.</param>
+ /// <returns></returns>
+ private List<Segment> CreateRunningJobEffectiveSegments(Job job)
{
- if (ActiveJob != null && SelectedProcessParametersTable != null && SelectedProcessParametersTable.DyeingSpeed > 0)
- {
- EstimatedDuration = TimeSpan.FromSeconds(ActiveJob.Length / (SelectedProcessParametersTable.DyeingSpeed / 100d));
- }
- }
+ LogManager.Log("Creating job effective segments...");
- private void SetSegmentBrushStopsLiquidVolumes(Segment segment)
- {
- if (!DesignMode && segment != null)
+ List<Segment> segments = new List<Segment>();
+ foreach (var s in job.Segments)
{
- foreach (var stop in segment.BrushStops)
+ s.Completed = false;
+ s.Started = false;
+ segments.Add(s);
+
+ if (job.EnableInterSegment && job.Segments.IndexOf(s) != job.Segments.Count - 1)
{
- stop.SetLiquidVolumes(SelectedMachine.Configuration, SelectedRML, SelectedProcessParametersTable);
+ 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 RML
+
/// <summary>
/// Saves the liquid factors.
/// </summary>
@@ -1023,7 +1009,8 @@ namespace Tango.MachineStudio.Developer.ViewModels
{
using (_notification.PushTaskItem("Saving Liquid Factors..."))
{
- await SelectedRML.SaveAsync(_dbJobContext);
+ LogManager.Log(String.Format("Saving liquid factors for RML {0}...", SelectedRML.Name));
+ await SelectedRML.SaveAsync(_activeJobDbContext);
InvalidateLiquidFactorsAndProcessTables();
}
}
@@ -1034,18 +1021,11 @@ namespace Tango.MachineStudio.Developer.ViewModels
/// </summary>
private void EditRML()
{
+ LogManager.Log(String.Format("Requesting DB module for RML {0} editing...", SelectedRML.Name));
ApplicationManager.RequestModule("Data Base", SelectedRML);
}
/// <summary>
- /// Navigates to the Machine Designer Module in order to edit the selected machine.
- /// </summary>
- private void EditMachine()
- {
- ApplicationManager.RequestModule("Machine Designer", SelectedMachine);
- }
-
- /// <summary>
/// Saves the process parameters group.
/// </summary>
private async void SaveProcessParameters()
@@ -1056,6 +1036,7 @@ namespace Tango.MachineStudio.Developer.ViewModels
using (_notification.PushTaskItem("Saving Parameters Group..."))
{
+ LogManager.Log(String.Format("Saving process parameters group under the name {0}...", response));
ProcessParametersTablesGroup group = new ProcessParametersTablesGroup();
List<ProcessParametersTable> tables = new List<ProcessParametersTable>();
@@ -1078,7 +1059,7 @@ namespace Tango.MachineStudio.Developer.ViewModels
}
SelectedRML.ProcessParametersTablesGroups.Add(group);
- await SelectedRML.SaveAsync(_dbJobContext);
+ await SelectedRML.SaveAsync(_activeJobDbContext);
InvalidateLiquidFactorsAndProcessTables();
}
@@ -1091,10 +1072,11 @@ namespace Tango.MachineStudio.Developer.ViewModels
{
if (SelectedRML != null && SelectedMachine != null)
{
+ LogManager.Log("Invalidating liquid factors, process parameters and process group history...");
LiquidTypesRmls = SelectedMachine.Configuration.IdsPacks.OrderBy(x => x.PackIndex).Select(x => x.LiquidType).SelectMany(x => x.LiquidTypesRmls).Where(x => x.Rml.Guid == SelectedRML.Guid).ToList();
RmlProcessParametersTableGroup = SelectedRML.ProcessParametersTablesGroups.ToList().SingleOrDefault(x => x.Active);
- _selectedGroupHistory = RmlProcessParametersTableGroup;
+ var selectedHistory = RmlProcessParametersTableGroup;
if (RmlProcessParametersTableGroup != null)
{
@@ -1104,44 +1086,173 @@ namespace Tango.MachineStudio.Developer.ViewModels
GroupsHistory = SelectedRML.ProcessParametersTablesGroups.OrderByDescending(x => x.SaveDate).OrderBy(x => !x.Active).ToObservableCollection();
+ _selectedGroupHistory = selectedHistory;
+
RaisePropertyChangedAuto(nameof(SelectedGroupHistory));
}
}
- private List<Segment> CreateRunningJobEffectiveSegments(Job job)
+ #endregion
+
+ #region Active Job Management
+
+ /// <summary>
+ /// Loads the selected job.
+ /// </summary>
+ private void LoadSelectedJob()
{
- List<Segment> segments = new List<Segment>();
- foreach (var s in job.Segments)
+ if (SelectedMachineJob != null)
{
- s.Completed = false;
- s.Started = false;
- segments.Add(s);
+ using (_notification.PushTaskItem("Loading job details..."))
+ {
+ LogManager.Log(String.Format("Loading job {0}...", SelectedMachineJob.Name));
+ SelectedSegments = new ObservableCollection<Segment>();
+ SelectedBrushStops = new ObservableCollection<BrushStop>();
+ SelectedRML = null;
+ SelectedSegment = null;
+ SelectedGroupHistory = null;
+ SelectedBrushStop = null;
+ SelectedProcessParametersTable = null;
+ RmlProcessParametersTableGroup = null;
- if (job.EnableInterSegment && job.Segments.IndexOf(s) != job.Segments.Count - 1)
+
+ _blockInvalidateCommands = false;
+
+ LogManager.Log("Creating active job DB context...");
+ _activeJobDbContext = ObservablesContext.CreateDefault();
+ _activeJobDbContext.Configuration.LazyLoadingEnabled = true;
+
+ LogManager.Log("Initializing available color spaces, RMLs & Winding methods...");
+ ColorSpaces = _activeJobDbContext.ColorSpaces.ToObservableCollection();
+ Rmls = _activeJobDbContext.Rmls.ToObservableCollection();
+ WindingMethods = _activeJobDbContext.WindingMethods.ToObservableCollection();
+
+ LogManager.Log("Setting active job...");
+ _activeJob = _activeJobDbContext.Jobs.SingleOrDefault(x => x.Guid == SelectedMachineJob.Guid);
+
+ _selectedRML = ActiveJob.Rml;
+
+ LogManager.Log("Setting selected segment...");
+ _selectedSegment = ActiveJob.Segments.FirstOrDefault();
+
+ ActiveJob.LengthChanged -= ActiveJob_LengthChanged;
+ ActiveJob.LengthChanged += ActiveJob_LengthChanged;
+
+ ActiveJob = _activeJob;
+
+ SelectedRML = _selectedRML;
+ SelectedSegment = _selectedSegment;
+
+ UpdateEstimatedDuration();
+
+ _blockInvalidateCommands = false;
+ InvalidateRelayCommands();
+
+ _navigation.NavigateTo(DeveloperNavigationView.JobView);
+ }
+ }
+ }
+
+ /// <summary>
+ /// Saves the active job.
+ /// </summary>
+ private async void SaveActiveJob()
+ {
+ if (ActiveJob != null)
+ {
+ using (_notification.PushTaskItem("Saving job details..."))
{
- segments.Add(new Segment()
- {
- Length = job.InterSegmentLength,
- BrushStops = new System.Collections.ObjectModel.ObservableCollection<BrushStop>()
- {
- new BrushStop()
- {
- Color = Colors.White,
- }
- },
- Started = false,
- Completed = false
- });
+ LogManager.Log(String.Format("Saving the active job {0}...", ActiveJob.Name));
+ ActiveJob.LastUpdated = DateTime.UtcNow;
+ ActiveJob.Rml = SelectedRML;
+
+ await ActiveJob.SaveAsync(_activeJobDbContext);
+ ReloadMachine();
+ SelectedMachineJob = SelectedMachine.Jobs.SingleOrDefault(x => x.Guid == ActiveJob.Guid);
}
}
+ }
- return segments;
+ private void BackToJobs()
+ {
+ LogManager.Log("User request for 'back to jobs'...");
+ LogManager.Log("Comparing active job with selected job...");
+
+ bool jobModified = !ActiveJob.CompareUsingJson(SelectedMachineJob);
+
+ if (jobModified)
+ {
+ LogManager.Log("Selected job has been modified. Invoking confirmation dialog...");
+ if (_notification.ShowQuestion("This will discard the current job changes. Are you sure?"))
+ {
+ LogManager.Log("Disposing active job db context...");
+ _activeJobDbContext.Dispose();
+ _navigation.NavigateTo(DeveloperNavigationView.MachineJobSelectionView);
+ }
+ }
+ else
+ {
+ LogManager.Log("Disposing active job db context...");
+ _activeJobDbContext.Dispose();
+ _navigation.NavigateTo(DeveloperNavigationView.MachineJobSelectionView);
+ }
+ }
+
+ #endregion
+
+ #region Private Methods
+
+ private void ReloadMachine()
+ {
+ LogManager.Log("Reloading selected machine...");
+ _machineDbContext.Dispose();
+ _machineDbContext = ObservablesContext.CreateDefault();
+ _machineDbContext.Configuration.LazyLoadingEnabled = true;
+ String machineGuid = _selectedMachine.Guid;
+ Machines = _machineDbContext.Machines.ToObservableCollection();
+ _selectedMachine = Machines.SingleOrDefault(x => x.Guid == machineGuid);
+ RaisePropertyChanged(nameof(SelectedMachine));
+
+ JobsCollectionView = CollectionViewSource.GetDefaultView(SelectedMachine.Jobs);
+ JobsCollectionView.SortDescriptions.Add(new SortDescription(nameof(Job.LastUpdated), ListSortDirection.Descending));
+ }
+
+ private void UpdateEstimatedDuration()
+ {
+ if (ActiveJob != null && SelectedProcessParametersTable != null && SelectedProcessParametersTable.DyeingSpeed > 0)
+ {
+ EstimatedDuration = TimeSpan.FromSeconds(ActiveJob.Length / (SelectedProcessParametersTable.DyeingSpeed / 100d));
+ }
+ }
+
+ private void SetSegmentBrushStopsLiquidVolumes(Segment segment)
+ {
+ if (!DesignMode && segment != null)
+ {
+ LogManager.Log("Setting segment brush stops liquid volumes...");
+ foreach (var stop in segment.BrushStops)
+ {
+ stop.SetLiquidVolumes(SelectedMachine.Configuration, SelectedRML, SelectedProcessParametersTable);
+ }
+ }
+ }
+
+ /// <summary>
+ /// Navigates to the Machine Designer Module in order to edit the selected machine.
+ /// </summary>
+ private void EditMachine()
+ {
+ LogManager.Log(String.Format("Requesting machine designer module for machine {0} editing...", SelectedMachine.SerialNumber));
+ ApplicationManager.RequestModule("Machine Designer", SelectedMachine);
}
#endregion
#region Add / Remove / Duplicate Jobs, Segments & Brush Stops
+ /// <summary>
+ /// Arranges the segments indices.
+ /// </summary>
private void ArrangeSegmentsIndices()
{
int index = 1;
@@ -1154,6 +1265,9 @@ namespace Tango.MachineStudio.Developer.ViewModels
SegmentsCollectionView.Refresh();
}
+ /// <summary>
+ /// Arranges the brush stops indices.
+ /// </summary>
private void ArrangeBrushStopsIndices()
{
int index = 0;
@@ -1187,10 +1301,12 @@ namespace Tango.MachineStudio.Developer.ViewModels
{
if (_notification.ShowQuestion("Are you sure you want to delete the selected segments?"))
{
+ LogManager.Log(String.Format("Removing {0} segments...", SelectedSegments.Count));
+
SelectedSegments.ToList().ForEach(x =>
{
ActiveJob.Segments.Remove(x);
- x.DefferedDelete(_dbJobContext);
+ x.DefferedDelete(_activeJobDbContext);
});
ArrangeSegmentsIndices();
@@ -1205,6 +1321,7 @@ namespace Tango.MachineStudio.Developer.ViewModels
{
if (ActiveJob != null)
{
+ LogManager.LogFormat("Adding new segment to job {0}...", ActiveJob.Name);
Segment seg = new Segment();
seg.Name = "Untitled Segment";
seg.Length = 10;
@@ -1233,15 +1350,17 @@ namespace Tango.MachineStudio.Developer.ViewModels
{
if (_notification.ShowQuestion("Are you sure you want to delete the selected jobs?"))
{
+ LogManager.Log(String.Format("Removing {0} jobs...", SelectedJobs.Count));
SelectedJobs.ToList().ForEach(x =>
{
SelectedMachine.Jobs.Remove(x);
- x.DefferedDelete(_machineDBContext);
+ x.DefferedDelete(_machineDbContext);
});
using (_notification.PushTaskItem("Removing selected jobs..."))
{
- await SelectedMachine.SaveAsync(_machineDBContext);
+ LogManager.Log("Saving selected machine to database...");
+ await SelectedMachine.SaveAsync(_machineDbContext);
}
}
}
@@ -1258,18 +1377,21 @@ namespace Tango.MachineStudio.Developer.ViewModels
if (!String.IsNullOrWhiteSpace(jobName))
{
+ LogManager.Log(String.Format("Adding new job {0}...", jobName));
+
Job newJob = new Job();
newJob.Name = jobName;
newJob.CreationDate = DateTime.UtcNow;
newJob.User = _authentication.CurrentUser;
- newJob.Rml = _machineDBContext.Rmls.FirstOrDefault();
- newJob.WindingMethod = _machineDBContext.WindingMethods.FirstOrDefault();
+ newJob.Rml = _machineDbContext.Rmls.FirstOrDefault();
+ newJob.WindingMethod = _machineDbContext.WindingMethods.FirstOrDefault();
newJob.Machine = SelectedMachine;
SelectedMachine.Jobs.Add(newJob);
- await SelectedMachine.SaveAsync(_machineDBContext);
+ LogManager.Log("Saving selected machine to database...");
+ await SelectedMachine.SaveAsync(_machineDbContext);
SelectedMachineJob = newJob;
- LoadJob();
+ LoadSelectedJob();
AddSegment();
}
}
@@ -1284,10 +1406,12 @@ namespace Tango.MachineStudio.Developer.ViewModels
{
if (_notification.ShowQuestion("Are you sure you want to delete the selected colors?"))
{
+ LogManager.Log(String.Format("Removing {0} brush stops...", SelectedBrushStops.Count));
+
SelectedBrushStops.ToList().ForEach(x =>
{
SelectedSegment.BrushStops.Remove(x);
- x.DefferedDelete(_dbJobContext);
+ x.DefferedDelete(_activeJobDbContext);
});
ArrangeBrushStopsIndices();
@@ -1302,6 +1426,8 @@ namespace Tango.MachineStudio.Developer.ViewModels
{
if (SelectedSegment != null)
{
+ LogManager.LogFormat("Adding new brush stop to segment...", SelectedSegment.SegmentIndex.ToString());
+
var stop = new BrushStop();
if (SelectedSegment.BrushStops.Count > 0)
@@ -1315,7 +1441,7 @@ namespace Tango.MachineStudio.Developer.ViewModels
stop.OffsetPercent = 100;
stop.Segment = SelectedSegment;
- stop.ColorSpace = _dbJobContext.ColorSpaces.FirstOrDefault();
+ stop.ColorSpace = _activeJobDbContext.ColorSpaces.FirstOrDefault();
stop.Color = Colors.Black;
stop.SetLiquidVolumes(SelectedMachine.Configuration, SelectedRML, SelectedProcessParametersTable);
SelectedSegment.BrushStops.Add(stop);
@@ -1329,6 +1455,8 @@ namespace Tango.MachineStudio.Developer.ViewModels
/// </summary>
private void DuplicateSelectedBrushStops()
{
+ LogManager.LogFormat("Duplicating {0} brush stops...", SelectedBrushStops.Count);
+
foreach (var stop in SelectedBrushStops.OrderBy(x => x.StopIndex))
{
var cloned = stop.Clone();
@@ -1344,6 +1472,8 @@ namespace Tango.MachineStudio.Developer.ViewModels
/// </summary>
private void DuplicateSelectedSegments()
{
+ LogManager.LogFormat("Duplicating {0} segments...", SelectedSegments.Count);
+
foreach (var segment in SelectedSegments.OrderBy(x => x.SegmentIndex))
{
var cloned = segment.Clone();
@@ -1363,6 +1493,8 @@ namespace Tango.MachineStudio.Developer.ViewModels
{
using (_notification.PushTaskItem("Cloning selected jobs..."))
{
+ LogManager.LogFormat("Duplicating {0} jobs...", SelectedJobs.Count);
+
int index = SelectedMachine.Jobs.Max(x => x.JobIndex);
foreach (var job in SelectedJobs)
@@ -1372,7 +1504,8 @@ namespace Tango.MachineStudio.Developer.ViewModels
SelectedMachine.Jobs.Add(cloned);
}
- await SelectedMachine.SaveAsync(_machineDBContext);
+ LogManager.Log("Saving selected machine to database...");
+ await SelectedMachine.SaveAsync(_machineDbContext);
}
}
}
@@ -1393,22 +1526,6 @@ namespace Tango.MachineStudio.Developer.ViewModels
#endregion
- #region Public Methods
-
- /// <summary>
- /// Switch the brush stop position in the segment.
- /// </summary>
- /// <param name="draggedStop">The dragged stop.</param>
- /// <param name="droppedStop">The dropped stop.</param>
- public void OnDropBrushStop(BrushStop draggedStop, BrushStop droppedStop)
- {
- draggedStop.SetStopIndex(droppedStop.StopIndex);
- droppedStop.SetStopIndex(droppedStop.StopIndex + 1);
- ArrangeBrushStopsIndices();
- }
-
- #endregion
-
#region IShutdownRequestBlocker
public Task<bool> OnShutdownRequest()
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/TechnicianDbContext.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/TechnicianDbContext.cs
new file mode 100644
index 000000000..a0314ab6b
--- /dev/null
+++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/TechnicianDbContext.cs
@@ -0,0 +1,28 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Tango.Integration.Observables;
+
+namespace Tango.MachineStudio.Technician
+{
+ public class TechnicianDbContext
+ {
+ private static ObservablesContext _context;
+
+ public static ObservablesContext Context
+ {
+ get
+ {
+ if (_context == null)
+ {
+ _context = ObservablesContext.CreateDefault();
+ }
+
+ return _context;
+ }
+ private set { _context = value; }
+ }
+ }
+}