aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRoy <Roy.mail.net@gmail.com>2023-06-27 13:16:21 +0300
committerRoy <Roy.mail.net@gmail.com>2023-06-27 13:16:21 +0300
commitc267a46b14ebb3babe8a0378bd403346ca182354 (patch)
treea7d69a29c00c9b2976168bf42d7ad228e1f91680
parent0f150c98978332377ee6aad3eac8c8a08553a8e7 (diff)
parenta5de87ea9863c6e7053e09ed1c2eabf58285af48 (diff)
downloadTango-c267a46b14ebb3babe8a0378bd403346ca182354.tar.gz
Tango-c267a46b14ebb3babe8a0378bd403346ca182354.zip
Merge branch 'eureka' of https://twinetfs.visualstudio.com/Tango/_git/Tango into eureka
-rw-r--r--Software/Visual_Studio/Advanced Installer Projects/Eureka Installer.aip6
-rw-r--r--Software/Visual_Studio/Advanced Installer Projects/FSE Installer.aip6
-rw-r--r--Software/Visual_Studio/FSE/Modules/Tango.FSE.Procedures.Documentation/Help/proc-doc.chmbin368011 -> 368011 bytes
-rw-r--r--Software/Visual_Studio/FSE/Tango.FSE.UI/Properties/AssemblyInfo.cs2
-rw-r--r--Software/Visual_Studio/PPC/Modules/Tango.PPC.JobsV2/Converters/LengthWithSpoolsConverter.cs37
-rw-r--r--Software/Visual_Studio/PPC/Modules/Tango.PPC.JobsV2/Dialogs/VectorFineTuningDialog.xaml16
-rw-r--r--Software/Visual_Studio/PPC/Modules/Tango.PPC.JobsV2/Dialogs/VectorFineTuningDialogVM.cs17
-rw-r--r--Software/Visual_Studio/PPC/Modules/Tango.PPC.JobsV2/Models/BrushStopModel.cs19
-rw-r--r--Software/Visual_Studio/PPC/Modules/Tango.PPC.JobsV2/Models/VisualOffsetModel.cs24
-rw-r--r--Software/Visual_Studio/PPC/Modules/Tango.PPC.JobsV2/Tango.PPC.JobsV2.csproj3
-rw-r--r--Software/Visual_Studio/PPC/Modules/Tango.PPC.JobsV2/ViewModels/JobsViewVM.cs54
-rw-r--r--Software/Visual_Studio/PPC/Modules/Tango.PPC.JobsV2/Views/JobEurekaView.xaml105
-rw-r--r--Software/Visual_Studio/PPC/Modules/Tango.PPC.JobsV2/Views/JobsView.xaml79
-rw-r--r--Software/Visual_Studio/PPC/Modules/Tango.PPC.MachineSettings/Views/MainView.xaml2
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.Common/Resources/Fonts.xaml4
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.UI/App.xaml1
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.UI/Converters/ProgressUnitSpoolConverter.cs2
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.UI/Converters/ProgressWeightSpoolConverter.cs2
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.UI/Converters/StatisticTabToVisibilityConverter.cs28
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.UI/Graphs/GraphHelper.cs36
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.UI/Graphs/RealTimeGraph.cs149
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.UI/Graphs/RealTimeGraph.xaml106
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.UI/Images/Overview Icons/Error.pngbin831 -> 2146 bytes
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.UI/Images/Overview Icons/Normal.pngbin779 -> 1407 bytes
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.UI/Images/Overview Icons/motor.pngbin0 -> 1023 bytes
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.UI/Images/Overview Icons/pr_data.pngbin0 -> 1054 bytes
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.UI/Images/Overview Icons/pressure.pngbin0 -> 1156 bytes
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.UI/Images/Overview Icons/temperature.pngbin0 -> 1065 bytes
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.UI/Images/screw.pngbin0 -> 937 bytes
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.UI/Models/MachineOverviewErrorItem.cs26
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.UI/Models/MachineOverviewErrorStates.cs68
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.UI/Models/MachineOverviewItem.cs8
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.UI/Models/MachineOverviewModel.cs70
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.UI/Properties/AssemblyInfo.cs2
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.UI/Resources/Graphs.xaml8
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.UI/Tango.PPC.UI.csproj26
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.UI/ViewModels/MachineStatusViewVM.cs192
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.UI/Views/LayoutEurekaView.xaml10
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.UI/Views/MachineStatusView.xaml413
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.UI/Views/MachineStatusView.xaml.cs10
-rw-r--r--Software/Visual_Studio/Tango.BL/Builders/JobsCollectionBuilder.cs11
-rw-r--r--Software/Visual_Studio/Tango.BL/Entities/Job.cs9
-rw-r--r--Software/Visual_Studio/Tango.Emulations/Emulators/MachineEmulator.cs37
-rw-r--r--Software/Visual_Studio/Tango.Integration/Operation/JobHandler.cs8
-rw-r--r--Software/Visual_Studio/Tango.Touch/Controls/TouchExpander.cs7
-rw-r--r--Software/Visual_Studio/Tango.Touch/Controls/TouchNavigationLinks.cs22
-rw-r--r--Software/Visual_Studio/Tango.Touch/Controls/TouchNavigationLinks.xaml5
-rw-r--r--Software/Visual_Studio/Tango.Touch/Resources/Colors.xaml28
48 files changed, 1402 insertions, 256 deletions
diff --git a/Software/Visual_Studio/Advanced Installer Projects/Eureka Installer.aip b/Software/Visual_Studio/Advanced Installer Projects/Eureka Installer.aip
index c1ff02c34..7bfcaa3a4 100644
--- a/Software/Visual_Studio/Advanced Installer Projects/Eureka Installer.aip
+++ b/Software/Visual_Studio/Advanced Installer Projects/Eureka Installer.aip
@@ -15,10 +15,10 @@
<ROW Property="CTRLS" Value="2"/>
<ROW Property="ExtractFilesFirst" Value="1"/>
<ROW Property="Manufacturer" Value="Twine Solutions LTD"/>
- <ROW Property="ProductCode" Value="1033:{F8FA8ADD-EE53-487E-894A-5F57E2036781} " Type="16"/>
+ <ROW Property="ProductCode" Value="1033:{046987E0-D4F0-425A-8D40-434E9AF58EF5} " Type="16"/>
<ROW Property="ProductLanguage" Value="1033"/>
<ROW Property="ProductName" Value="Twine X4"/>
- <ROW Property="ProductVersion" Value="2.0.4.0" Type="32" TargetFile="Tango.PPC.UI.exe"/>
+ <ROW Property="ProductVersion" Value="2.0.8.0" Type="32" TargetFile="Tango.PPC.UI.exe"/>
<ROW Property="SecureCustomProperties" Value="OLDPRODUCTS;AI_NEWERPRODUCTFOUND;AI_SETUPEXEPATH;SETUPEXEDIR"/>
<ROW Property="UpgradeCode" Value="{4D8FDA03-F63E-4002-9A96-4BDE65B04355}"/>
<ROW Property="WindowsType9X" MultiBuildValue="DefaultBuild:Windows 9x/ME" ValueLocId="-"/>
@@ -482,7 +482,7 @@
<ROW Action="AI_DetectSoftware" Sequence="101"/>
</COMPONENT>
<COMPONENT cid="caphyon.advinst.msicomp.BuildComponent">
- <ROW BuildKey="DefaultBuild" BuildName="DefaultBuild" BuildOrder="1" BuildType="0" PackageFolder="..\Build\Installers\Eureka" PackageFileName="TwineX4 Installer_v2.0.4" Languages="en" InstallationType="4" CabsLocation="1" PackageType="1" FilesInsideExe="true" ExtractionFolder="[AppDataFolder][|Manufacturer]\[|ProductName] [|ProductVersion]\install" ExtUI="true" UseLargeSchema="true" ExeName="TwineX4 Installer_v2.0.4"/>
+ <ROW BuildKey="DefaultBuild" BuildName="DefaultBuild" BuildOrder="1" BuildType="0" PackageFolder="..\Build\Installers\Eureka" PackageFileName="TwineX4 Installer_v2.0.8" Languages="en" InstallationType="4" CabsLocation="1" PackageType="1" FilesInsideExe="true" ExtractionFolder="[AppDataFolder][|Manufacturer]\[|ProductName] [|ProductVersion]\install" ExtUI="true" UseLargeSchema="true" ExeName="TwineX4 Installer_v2.0.8"/>
</COMPONENT>
<COMPONENT cid="caphyon.advinst.msicomp.DictionaryComponent">
<ROW Path="&lt;AI_DICTS&gt;ui.ail"/>
diff --git a/Software/Visual_Studio/Advanced Installer Projects/FSE Installer.aip b/Software/Visual_Studio/Advanced Installer Projects/FSE Installer.aip
index a18abd6ac..baa6d6fb9 100644
--- a/Software/Visual_Studio/Advanced Installer Projects/FSE Installer.aip
+++ b/Software/Visual_Studio/Advanced Installer Projects/FSE Installer.aip
@@ -29,10 +29,10 @@
<ROW Property="ExtractFilesFirst" Value="1"/>
<ROW Property="LogoIcon" Value="externalui.ico" MultiBuildValue="DefaultBuild:machine_full_0UZ_icon.ico_1" Type="1" MsiKey="LogoIcon"/>
<ROW Property="Manufacturer" Value="Twine Solutions LTD"/>
- <ROW Property="ProductCode" Value="1033:{D08B5A85-0EAD-4425-9148-DC6F6539AA76} " Type="16"/>
+ <ROW Property="ProductCode" Value="1033:{ACD29FBD-AB01-477D-8FDB-4D8625896C70} " Type="16"/>
<ROW Property="ProductLanguage" Value="1033"/>
<ROW Property="ProductName" Value="Tango FSE"/>
- <ROW Property="ProductVersion" Value="2.0.1.0" Type="32"/>
+ <ROW Property="ProductVersion" Value="2.0.2.0" Type="32"/>
<ROW Property="RUNAPPLICATION" Value="1" Type="4"/>
<ROW Property="SecureCustomProperties" Value="OLDPRODUCTS;AI_NEWERPRODUCTFOUND;AI_SETUPEXEPATH;SETUPEXEDIR"/>
<ROW Property="UpgradeCode" Value="{0E13CB0D-89F7-465E-9F56-F1CBD6773E6E}"/>
@@ -1201,7 +1201,7 @@
<ROW Action="AI_DetectSoftware" Sequence="101"/>
</COMPONENT>
<COMPONENT cid="caphyon.advinst.msicomp.BuildComponent">
- <ROW BuildKey="DefaultBuild" BuildName="DefaultBuild" BuildOrder="1" BuildType="0" PackageFolder="..\Build\Installers\FSE\Release" PackageFileName="Tango FSE v2.0.1" Languages="en" InstallationType="4" CabsLocation="1" PackageType="1" FilesInsideExe="true" ExtractionFolder="[AppDataFolder][|Manufacturer]\[|ProductName] [|ProductVersion]\install" ExtUI="true" UseLargeSchema="true" ExeName="Tango FSE v2.0.1"/>
+ <ROW BuildKey="DefaultBuild" BuildName="DefaultBuild" BuildOrder="1" BuildType="0" PackageFolder="..\Build\Installers\FSE\Release" PackageFileName="Tango FSE v2.0.2" Languages="en" InstallationType="4" CabsLocation="1" PackageType="1" FilesInsideExe="true" ExtractionFolder="[AppDataFolder][|Manufacturer]\[|ProductName] [|ProductVersion]\install" ExtUI="true" UseLargeSchema="true" ExeName="Tango FSE v2.0.2"/>
</COMPONENT>
<COMPONENT cid="caphyon.advinst.msicomp.DictionaryComponent">
<ROW Path="&lt;AI_DICTS&gt;ui.ail"/>
diff --git a/Software/Visual_Studio/FSE/Modules/Tango.FSE.Procedures.Documentation/Help/proc-doc.chm b/Software/Visual_Studio/FSE/Modules/Tango.FSE.Procedures.Documentation/Help/proc-doc.chm
index 32466caf1..b6bc6d4cd 100644
--- a/Software/Visual_Studio/FSE/Modules/Tango.FSE.Procedures.Documentation/Help/proc-doc.chm
+++ b/Software/Visual_Studio/FSE/Modules/Tango.FSE.Procedures.Documentation/Help/proc-doc.chm
Binary files differ
diff --git a/Software/Visual_Studio/FSE/Tango.FSE.UI/Properties/AssemblyInfo.cs b/Software/Visual_Studio/FSE/Tango.FSE.UI/Properties/AssemblyInfo.cs
index cd4408202..f13bd3e02 100644
--- a/Software/Visual_Studio/FSE/Tango.FSE.UI/Properties/AssemblyInfo.cs
+++ b/Software/Visual_Studio/FSE/Tango.FSE.UI/Properties/AssemblyInfo.cs
@@ -8,4 +8,4 @@ using System.Windows;
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("Tango FSE")]
-[assembly: AssemblyVersion("2.0.1.0")]
+[assembly: AssemblyVersion("2.0.2.0")]
diff --git a/Software/Visual_Studio/PPC/Modules/Tango.PPC.JobsV2/Converters/LengthWithSpoolsConverter.cs b/Software/Visual_Studio/PPC/Modules/Tango.PPC.JobsV2/Converters/LengthWithSpoolsConverter.cs
new file mode 100644
index 000000000..60f94b8aa
--- /dev/null
+++ b/Software/Visual_Studio/PPC/Modules/Tango.PPC.JobsV2/Converters/LengthWithSpoolsConverter.cs
@@ -0,0 +1,37 @@
+using System;
+using System.Collections.Generic;
+using System.Globalization;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows;
+using System.Windows.Data;
+
+namespace Tango.PPC.Jobs.Converters
+{
+ public class LengthWithSpoolsConverter : IMultiValueConverter
+ {
+ public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
+ {
+ try
+ {
+ double length = System.Convert.ToDouble(values[0]);
+ bool isEureka = System.Convert.ToBoolean(values[1]);
+ double spools = System.Convert.ToDouble(values[2]);
+
+ if (isEureka)
+ return length * spools;
+ else return length;
+ }
+ catch
+ {
+ return 0d;
+ }
+ }
+
+ public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
+ {
+ throw new NotImplementedException();
+ }
+ }
+}
diff --git a/Software/Visual_Studio/PPC/Modules/Tango.PPC.JobsV2/Dialogs/VectorFineTuningDialog.xaml b/Software/Visual_Studio/PPC/Modules/Tango.PPC.JobsV2/Dialogs/VectorFineTuningDialog.xaml
index 0e72c6aa0..99b78d7ec 100644
--- a/Software/Visual_Studio/PPC/Modules/Tango.PPC.JobsV2/Dialogs/VectorFineTuningDialog.xaml
+++ b/Software/Visual_Studio/PPC/Modules/Tango.PPC.JobsV2/Dialogs/VectorFineTuningDialog.xaml
@@ -548,7 +548,18 @@
<TextBlock FontSize="{StaticResource TangoSmallFontSize}" FontWeight="SemiBold" Margin="10 0 0 -5" HorizontalAlignment="Left" >Correction</TextBlock>
<Border Grid.Row="1" Height="220" Margin="0 10 0 0" CornerRadius="0 0 0 0" BorderThickness="0" BorderBrush="{StaticResource TangoGrayBrush}" Background="{Binding VisualCorrectionModel.ManualColorBrush}" >
- <UniformGrid Rows="3" Columns="1" VerticalAlignment="Bottom" Background="Transparent">
+ <Grid>
+ <Grid.RowDefinitions>
+ <RowDefinition Height="1*"/>
+ <RowDefinition Height="Auto"/>
+ </Grid.RowDefinitions>
+ <StackPanel Grid.Row="0" Orientation="Vertical" VerticalAlignment="Center" HorizontalAlignment="Center" Visibility="{Binding VisualCorrectionModel.IsOutOfGamut,Converter={StaticResource BooleanToVisibilityConverter}}">
+ <Image Margin="30 0 24 0" Stretch="Fill" Width="47" Height="43" RenderOptions.BitmapScalingMode="Fant" Source="../Images/ColorSelection/Exclamation.png" HorizontalAlignment="Center"></Image>
+ <!--<Border Margin=" 0 10 0 0" MinWidth="115" Height="31" Background="{StaticResource TangoDarkForegroundBrush}" CornerRadius="2">
+ <TextBlock Margin="10 0" HorizontalAlignment="Center" VerticalAlignment="Center" Foreground="{StaticResource TangoLightForegroundBrush}" FontSize="{StaticResource TangoSmallFontSize}" FontWeight="SemiBold" Text="This color is not supported." ></TextBlock>
+ </Border>-->
+ </StackPanel>
+ <UniformGrid Grid.Row="1" Rows="3" Columns="1" VerticalAlignment="Bottom" Background="Transparent">
<TextBlock FontWeight="Medium" Margin="10 10 0 0" VerticalAlignment="Center" Foreground="{Binding VisualCorrectionModel.ManualColorBrush, Converter={StaticResource ColorContrastConverter}}" FontSize="{StaticResource TangoSmallFontSize}">
<Run Text="L:" ></Run>
<Run Text="{Binding VisualCorrectionModel.L, StringFormat={}{0:F2}}"></Run>
@@ -562,7 +573,8 @@
<Run Text="{Binding VisualCorrectionModel.B, StringFormat={}{0:F2}}"></Run>
</TextBlock>
</UniformGrid>
- </Border>
+ </Grid>
+ </Border>
</StackPanel>
<StackPanel Orientation="Vertical" Grid.Column="2" Grid.Row="1" Margin="0 10 0 0" Visibility="{Binding IsTargetVisible, Converter={StaticResource BooleanToVisibilityConverter}, Mode=TwoWay}">
<TextBlock FontSize="{StaticResource TangoSmallFontSize}" FontWeight="SemiBold" Margin="10 0 0 -5" HorizontalAlignment="Left" >Target</TextBlock>
diff --git a/Software/Visual_Studio/PPC/Modules/Tango.PPC.JobsV2/Dialogs/VectorFineTuningDialogVM.cs b/Software/Visual_Studio/PPC/Modules/Tango.PPC.JobsV2/Dialogs/VectorFineTuningDialogVM.cs
index e473fa420..b9149b81f 100644
--- a/Software/Visual_Studio/PPC/Modules/Tango.PPC.JobsV2/Dialogs/VectorFineTuningDialogVM.cs
+++ b/Software/Visual_Studio/PPC/Modules/Tango.PPC.JobsV2/Dialogs/VectorFineTuningDialogVM.cs
@@ -1319,6 +1319,7 @@ namespace Tango.PPC.Jobs.Dialogs
ActiveLogModel.VectorCorrectionL = VisualCorrectionModel.L;
ActiveLogModel.VectorCorrectionA = VisualCorrectionModel.A;
ActiveLogModel.VectorCorrectionB = VisualCorrectionModel.B;
+ VisualCorrectionModel.IsOutOfGamut = IsOutOfGammot();
TestCommand.RaiseCanExecuteChanged();
ByPassTestCommand.RaiseCanExecuteChanged();
@@ -1333,6 +1334,7 @@ namespace Tango.PPC.Jobs.Dialogs
ActiveLogModel.VectorCorrectionL = VisualCorrectionModel.L;
ActiveLogModel.VectorCorrectionA = VisualCorrectionModel.A;
ActiveLogModel.VectorCorrectionB = VisualCorrectionModel.B;
+ VisualCorrectionModel.IsOutOfGamut = IsOutOfGammot();
TestCommand.RaiseCanExecuteChanged();
ByPassTestCommand.RaiseCanExecuteChanged();
}
@@ -1347,10 +1349,25 @@ namespace Tango.PPC.Jobs.Dialogs
ActiveLogModel.VectorCorrectionL = VisualCorrectionModel.L;
ActiveLogModel.VectorCorrectionA = VisualCorrectionModel.A;
ActiveLogModel.VectorCorrectionB = VisualCorrectionModel.B;
+ VisualCorrectionModel.IsOutOfGamut = IsOutOfGammot();
TestCommand.RaiseCanExecuteChanged();
ByPassTestCommand.RaiseCanExecuteChanged();
}
+ private bool IsOutOfGammot()
+ {
+ BrushStopModel.ColorSpace = ColorSpaces.LAB;
+ BrushStopModel.PreventPropertyUpdate = true;
+ BrushStopModel.L = ActiveLogModel.VectorCorrectionL;
+ BrushStopModel.A = ActiveLogModel.VectorCorrectionA;
+ BrushStopModel.B = ActiveLogModel.VectorCorrectionB;
+ BrushStopModel.PreventPropertyUpdate = false;
+ BrushStopModel.IsOutputOfGamut(ColorSpaces.LAB);
+
+ return BrushStopModel.IsOutOfGamut;
+
+ }
+
#endregion
#region Job
diff --git a/Software/Visual_Studio/PPC/Modules/Tango.PPC.JobsV2/Models/BrushStopModel.cs b/Software/Visual_Studio/PPC/Modules/Tango.PPC.JobsV2/Models/BrushStopModel.cs
index d415dbb79..5464aa5ed 100644
--- a/Software/Visual_Studio/PPC/Modules/Tango.PPC.JobsV2/Models/BrushStopModel.cs
+++ b/Software/Visual_Studio/PPC/Modules/Tango.PPC.JobsV2/Models/BrushStopModel.cs
@@ -1796,6 +1796,25 @@ namespace Tango.PPC.Jobs.Models
}
}
+ public void IsOutputOfGamut(ColorSpaces colorSpace)
+ {
+ try
+ {
+ BrushStop stop = CreateBrushStop(colorSpace);
+ Configuration configuration = SegmentModel.Job.Machine.Configuration;
+ Rml rml = SegmentModel.Job.Rml;
+ IsOutOfGamut = _converter.IsOutOfGamut(stop, configuration, rml);
+ }
+ catch (Exception ex)
+ {
+ LogManager.Log(ex, "An error occurred while trying to test IsOutputOfGammut from conversion engine." + ex);
+ BestMatchColor = Color.FromRgb((byte)Red, (byte)Green, (byte)Blue);
+ }
+ finally
+ {
+ IsBusy = false;
+ }
+ }
#endregion
}
}
diff --git a/Software/Visual_Studio/PPC/Modules/Tango.PPC.JobsV2/Models/VisualOffsetModel.cs b/Software/Visual_Studio/PPC/Modules/Tango.PPC.JobsV2/Models/VisualOffsetModel.cs
index a0b6156a3..74651992e 100644
--- a/Software/Visual_Studio/PPC/Modules/Tango.PPC.JobsV2/Models/VisualOffsetModel.cs
+++ b/Software/Visual_Studio/PPC/Modules/Tango.PPC.JobsV2/Models/VisualOffsetModel.cs
@@ -237,7 +237,24 @@ namespace Tango.PPC.Jobs.Models
return new SolidColorBrush() { Color = Color.FromRgb((byte)rgb.R, (byte)rgb.G, (byte)rgb.B) };
}
}
-
+
+ private bool _isOutOfGamut;
+ /// <summary>
+ /// Gets or sets a value indicating whether this instance is out of gamut.
+ /// </summary>
+ public bool IsOutOfGamut
+ {
+ get { return _isOutOfGamut; }
+ set
+ {
+ if (_isOutOfGamut != value)
+ {
+ _isOutOfGamut = value;
+ RaisePropertyChangedAuto();
+ }
+ }
+ }
+
#endregion
public VisualOffsetModel()
@@ -248,7 +265,9 @@ namespace Tango.PPC.Jobs.Models
MaxChroma = new VisualLCHOffset(TypeColorCorrection.Chroma, 1);
MinHue = new VisualLCHOffset(TypeColorCorrection.Hue, -1);
MaxHue = new VisualLCHOffset(TypeColorCorrection.Hue, 1);
-
+ IsOutOfGamut = false;
+
+
}
public void InitLAB(double l, double a, double b, double c, double h)
@@ -292,6 +311,7 @@ namespace Tango.PPC.Jobs.Models
B = b;
C = last_LCH.C;
H = last_LCH.h;
+ IsOutOfGamut = false;
}
diff --git a/Software/Visual_Studio/PPC/Modules/Tango.PPC.JobsV2/Tango.PPC.JobsV2.csproj b/Software/Visual_Studio/PPC/Modules/Tango.PPC.JobsV2/Tango.PPC.JobsV2.csproj
index c0e24ac8c..3aefa29a1 100644
--- a/Software/Visual_Studio/PPC/Modules/Tango.PPC.JobsV2/Tango.PPC.JobsV2.csproj
+++ b/Software/Visual_Studio/PPC/Modules/Tango.PPC.JobsV2/Tango.PPC.JobsV2.csproj
@@ -240,6 +240,7 @@
<Compile Include="Converters\JobToPieImageConverter.cs" />
<Compile Include="Converters\JobTypeToImageConverter.cs" />
<Compile Include="Converters\LengthToWeightConverter.cs" />
+ <Compile Include="Converters\LengthWithSpoolsConverter.cs" />
<Compile Include="Converters\MarginOffsetSliderConverter .cs" />
<Compile Include="Converters\RoundDoubleConverter.cs" />
<Compile Include="Converters\TimeSpanToHoursConverter.cs" />
@@ -753,7 +754,7 @@
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<ProjectExtensions>
<VisualStudio>
- <UserProperties BuildVersion_AssemblyInfoFilename="Properties\AssemblyInfo.cs" BuildVersion_UpdateAssemblyVersion="True" BuildVersion_BuildVersioningStyle="None.None.Increment.TimeStamp" BuildVersion_UseGlobalSettings="False" BuildVersion_StartDate="2000/1/1" />
+ <UserProperties BuildVersion_StartDate="2000/1/1" BuildVersion_UseGlobalSettings="False" BuildVersion_BuildVersioningStyle="None.None.Increment.TimeStamp" BuildVersion_UpdateAssemblyVersion="True" BuildVersion_AssemblyInfoFilename="Properties\AssemblyInfo.cs" />
</VisualStudio>
</ProjectExtensions>
</Project> \ No newline at end of file
diff --git a/Software/Visual_Studio/PPC/Modules/Tango.PPC.JobsV2/ViewModels/JobsViewVM.cs b/Software/Visual_Studio/PPC/Modules/Tango.PPC.JobsV2/ViewModels/JobsViewVM.cs
index 0e4ec8fa4..e5e41b382 100644
--- a/Software/Visual_Studio/PPC/Modules/Tango.PPC.JobsV2/ViewModels/JobsViewVM.cs
+++ b/Software/Visual_Studio/PPC/Modules/Tango.PPC.JobsV2/ViewModels/JobsViewVM.cs
@@ -225,6 +225,11 @@ namespace Tango.PPC.Jobs.ViewModels
/// </summary>
public RelayCommand ExportJobCommand { get; set; }
+ /// <summary>
+ /// Gets or sets the move to list ( History or Draft) jobs command.
+ /// </summary>
+ public RelayCommand MoveToListJobsCommand { get; set; }
+
#endregion
#region Constructors
@@ -251,6 +256,7 @@ namespace Tango.PPC.Jobs.ViewModels
DeleteJobsCommand = new RelayCommand(() => DeleteJobs(SelectedJobs));
CloneJobsCommand = new RelayCommand(() => CloneJobs(SelectedJobs));
ExportJobCommand = new RelayCommand(ExportJob);
+ MoveToListJobsCommand = new RelayCommand(() => MoveToListJobs(SelectedJobs));
RegisterForMessage<JobRemovedMessage>(HandleJobRemovedMessage);
RegisterForMessage<JobSavedMessage>(HandleJobSavedMessage);
@@ -371,7 +377,7 @@ namespace Tango.PPC.Jobs.ViewModels
_colorSpaces = _db.ColorSpaces.ToList();
- var jobs = new JobsCollectionBuilder(_db).Set(x => x.MachineGuid == MachineProvider.Machine.Guid).WithSegments().WithBrushStops().WithCustomer().WithColorSpace().WithSegmentsGroups().Build();
+ var jobs = new JobsCollectionBuilder(_db).Set(x => x.MachineGuid == MachineProvider.Machine.Guid).WithSegments().WithBrushStops().WithCustomer().WithColorSpace().WithSegmentsGroups().WithRmls().Build();
InvokeUI(() =>
{
@@ -644,6 +650,52 @@ namespace Tango.PPC.Jobs.ViewModels
}
/// <summary>
+ /// Moves to list (Draft/History) jobs.
+ /// </summary>
+ /// <param name="jobs">The jobs.</param>
+ private async void MoveToListJobs(ObservableCollection<Job> jobs)
+ {
+ bool isHistory = SelectedCategory == JobsCategory.History;
+ string list = isHistory ? "Draft" : "History";
+ try
+ {
+
+ LogManager.Log($"Move To {list} selected jobs:\n{jobs.Select(x => x.Name).ToList().ToJsonString()}");
+
+ foreach (var job in SelectedJobs)
+ {
+ if(isHistory)
+ {
+ if(job.JobStatus != JobStatuses.Draft)
+ {
+ job.JobStatus = JobStatuses.Draft;
+ job.LastUpdated = DateTime.UtcNow;
+ }
+ }
+ if(!isHistory)//draft
+ {
+ if(job.JobStatus == JobStatuses.Draft)
+ {
+ job.JobStatus = JobStatuses.Completed;
+ job.LastUpdated = DateTime.UtcNow;
+ }
+ }
+ }
+
+ await _db.SaveChangesAsync();
+
+ HistoryJobsCollectionView.Refresh();
+ DraftJobsCollectionView.Refresh();
+ ClearSelection();
+ }
+ catch (Exception ex)
+ {
+ LogManager.Log(ex, $"Error Move To {list} selected jobs.");
+ await NotificationProvider.ShowError($"An error occurred while trying to Move To {list} the selected jobs.");
+ }
+ }
+
+ /// <summary>
/// Called when the search filter has been changed
/// </summary>
private void OnFilterChanged()
diff --git a/Software/Visual_Studio/PPC/Modules/Tango.PPC.JobsV2/Views/JobEurekaView.xaml b/Software/Visual_Studio/PPC/Modules/Tango.PPC.JobsV2/Views/JobEurekaView.xaml
index efa080561..165f251c3 100644
--- a/Software/Visual_Studio/PPC/Modules/Tango.PPC.JobsV2/Views/JobEurekaView.xaml
+++ b/Software/Visual_Studio/PPC/Modules/Tango.PPC.JobsV2/Views/JobEurekaView.xaml
@@ -30,9 +30,10 @@
<converters:BooleanToVisibilityInverseConverter x:Key="BooleanToVisibilityInverseConverter"/>
<converters:EnumToDescriptionConverter x:Key="EnumToDescriptionConverter"/>
<converters:TimeSpanToMinutesConverter x:Key="TimeSpanToMinutesConverter"/>
+ <converters:TimeSpanToTwoDigitsTimeConverter x:Key="TimeSpanToTwoDigitsTimeConverter"/>
+ <converters:TimeSpanToLabelConverter x:Key="TimeSpanToLabelConverter"/>
<localConverters:MarginOffsetSliderConverter x:Key="MarginOffsetSliderConverter"/>
<localConverters:FirstValueCollectionConverter x:Key="FirstValueCollectionConverter"/>
- <localConverters:TimeSpanToHoursConverter x:Key="TimeSpanToHoursConverter"/>
<localConverters:LengthToWeightConverter x:Key="LengthToWeightConverter"/>
<BitmapImage x:Key="Image_Out_Of_Gamut" UriSource="../Images/JobView/error.png" />
@@ -257,8 +258,8 @@
<Border Margin="20 0 0 0" BorderThickness="1" Height="44" CornerRadius="12" BorderBrush="{StaticResource TangoMidAccentBrush}" Visibility="{Binding ElementName=segmentsGrid, Path=DataContext.IsWeightView, Converter={StaticResource BooleanToVisibilityInverseConverter}}">
<touch:TouchNumericTextBox Margin="20 0 0 0" Width="192" FocusSelectionMode="SelectAll" HorizontalAlignment="Left" HideUnderline="True" VerticalAlignment="Center"
Value="{Binding Length, UpdateSourceTrigger=LostFocus}" VerticalContentAlignment="Center"
- StringFormat="0.0" AutoCalculateJogStep="False"
- HasDecimalPoint="True" Minimum="1" Maximum="100000"
+ StringFormat="N1" AutoCalculateJogStep="False"
+ HasDecimalPoint="True" Minimum="1" Maximum="1000000"
KeyboardContainer="{Binding ElementName=Container}"
FontSize="18" ValueChangedEnd="Length_ValueChanged"
TextGotFocus="Length_BeforeChangeValue" RippleBrush="Transparent"/>
@@ -267,7 +268,7 @@
<touch:TouchNumericTextBox Margin="20 0 0 0" Width="192" FocusSelectionMode="SelectAll" HorizontalAlignment="Left" HideUnderline="True" VerticalAlignment="Center"
Value="{Binding Weight, UpdateSourceTrigger=LostFocus}" VerticalContentAlignment="Center"
StringFormat="0.0" AutoCalculateJogStep="False"
- HasDecimalPoint="True" Minimum="0" Maximum="1000"
+ HasDecimalPoint="True" Minimum="0" Maximum="100000"
KeyboardContainer="{Binding ElementName=Container}"
FontSize="18" RippleBrush="Transparent"/>
</Border>
@@ -886,14 +887,14 @@
<StackPanel Orientation="Horizontal">
<TextBlock HorizontalAlignment="Left" Margin="0 10 0 0" Text="Copies" FontSize="{StaticResource TangoButtonFontSize}" Width="145"/>
<Border Margin="20 0 0 0" BorderThickness="1" Height="44" CornerRadius="12" BorderBrush="{StaticResource TangoMidAccentBrush}" Width="120">
- <touch:TouchNumericTextBox BorderBrush="Transparent" HasDecimalPoint="False" Minimum="4" Step="4" Margin="0 0 0 0" FontSize="{StaticResource TangoComboBoxItemFontSize}" VerticalContentAlignment="Center" VerticalAlignment="Center" HorizontalAlignment="Center" Value="{Binding JobModel.Copies}" HideUnderline="True" RippleBrush="Transparent"></touch:TouchNumericTextBox>
+ <touch:TouchNumericTextBox BorderBrush="Transparent" HasDecimalPoint="False" Minimum="4" Maximum="1000000" Step="4" Margin="0 0 0 0" FontSize="{StaticResource TangoComboBoxItemFontSize}" VerticalContentAlignment="Center" VerticalAlignment="Center" HorizontalAlignment="Center" Value="{Binding JobModel.Copies}" HideUnderline="True" RippleBrush="Transparent"></touch:TouchNumericTextBox>
</Border>
</StackPanel>
</DockPanel>
<StackPanel Orientation="Horizontal" Margin="60 0 60 20" Visibility="{Binding IsBasicMode, Converter={StaticResource BooleanToVisibilityInverseConverter}}">
- <TextBlock HorizontalAlignment="Left" Margin="0 10 0 0" Text="White Gap (m)" FontSize="{StaticResource TangoButtonFontSize}" Width="145"/>
+ <TextBlock HorizontalAlignment="Left" Margin="0 10 0 0" Text="White Gap(m)" FontSize="{StaticResource TangoButtonFontSize}" Width="145"/>
<Border Margin="20 0 0 0" BorderThickness="1" Height="44" CornerRadius="12" BorderBrush="{StaticResource TangoMidAccentBrush}" Width="120">
<touch:TouchNumericTextBox BorderBrush="Transparent" HasDecimalPoint="False" Minimum="0" Margin="0 0 0 0" FontSize="{StaticResource TangoComboBoxItemFontSize}" VerticalContentAlignment="Center" VerticalAlignment="Center" HorizontalAlignment="Center" Value="{Binding JobModel.InterSegmentLength}" HideUnderline="True" RippleBrush="Transparent"></touch:TouchNumericTextBox>
@@ -1029,7 +1030,7 @@
<touch:TouchNumericTextBox Margin="20 0 0 0" Width="192" FocusSelectionMode="SelectAll" HorizontalAlignment="Left" HideUnderline="True" VerticalAlignment="Center"
Value="{Binding Length, UpdateSourceTrigger=LostFocus}" VerticalContentAlignment="Center"
StringFormat="0.0" AutoCalculateJogStep="False"
- HasDecimalPoint="True" Minimum="1" Maximum="100000"
+ HasDecimalPoint="True" Minimum="1" Maximum="1000000"
KeyboardContainer="{Binding ElementName=Container}"
FontSize="18" ValueChangedEnd="Length_ValueChanged"
TextGotFocus="Length_BeforeChangeValue" RippleBrush="Transparent"/>
@@ -1039,7 +1040,7 @@
<touch:TouchNumericTextBox Margin="20 0 0 0" Width="192" FocusSelectionMode="SelectAll" HorizontalAlignment="Left" HideUnderline="True" VerticalAlignment="Center"
Value="{Binding Weight, UpdateSourceTrigger=LostFocus}" VerticalContentAlignment="Center"
StringFormat="0.0" AutoCalculateJogStep="False"
- HasDecimalPoint="True" Minimum="0" Maximum="1000"
+ HasDecimalPoint="True" Minimum="0" Maximum="100000"
KeyboardContainer="{Binding ElementName=Container}"
FontSize="18" RippleBrush="Transparent"/>
@@ -1188,18 +1189,18 @@
</Grid>
<!--<touch:TouchDropShadowBorder Grid.Row="3" Margin="10 0 10 15" CornerRadius="0" BorderThickness="0" Padding="0" >-->
- <Border Grid.Row="2" Margin="10 0 10 15" BorderThickness="0">
- <touch:TouchExpander x:Name="summaryExpander" IsExpanded="{Binding IsSummaryOpened, Mode=TwoWay}" Grid.Row="3" Margin="15 0 15 0 " FontSize="{StaticResource TangoTitleFontSize}" BorderThickness="0" Style="{StaticResource TouchRoundedExpander}">
+ <Border Grid.Row="2" Margin="0 0 0 0" BorderThickness="0">
+ <touch:TouchExpander x:Name="summaryExpander" IsExpanded="{Binding IsSummaryOpened, Mode=TwoWay}" Grid.Row="3" Margin="15 0 15 0 " FontSize="{StaticResource TangoTitleFontSize}" BorderThickness="0" Style="{StaticResource TouchRoundedExpander}" CornerRadius="20 20 0 0" Padding="10" IsTabStop="False" >
<touch:TouchExpander.Header>
- <DockPanel >
- <StackPanel Orientation="Horizontal" DockPanel.Dock="Right" Margin="0 0 20 0" >
+ <DockPanel Height="80">
+ <StackPanel Orientation="Horizontal" DockPanel.Dock="Right" Margin="0 0 10 0" VerticalAlignment="Center" >
<StackPanel Orientation="Horizontal" Visibility="{Binding IsSummaryOpened, Converter={StaticResource BooleanToVisibilityInverseConverter}, Mode=TwoWay}">
- <TextBlock VerticalAlignment="Center" FontSize="{StaticResource TangoDefaultFontSize}" Visibility="{Binding IsWeightView, Converter={StaticResource BooleanToVisibilityInverseConverter}}">
+ <TextBlock VerticalAlignment="Center" FontSize="{StaticResource TangoTitleFontSize}" Visibility="{Binding IsWeightView, Converter={StaticResource BooleanToVisibilityInverseConverter}}">
<Run Text="Copy:" FontWeight="Normal"></Run>
<Run Text="{Binding JobModel.Length,Mode=OneWay,StringFormat=0.##}" FontWeight="DemiBold"/>
<Run Text="m" FontWeight="DemiBold"></Run>
</TextBlock>
- <TextBlock VerticalAlignment="Center" FontSize="{StaticResource TangoDefaultFontSize}" Visibility="{Binding IsWeightView, Converter={StaticResource BooleanToVisibilityConverter}}">
+ <TextBlock VerticalAlignment="Center" FontSize="{StaticResource TangoTitleFontSize}" Visibility="{Binding IsWeightView, Converter={StaticResource BooleanToVisibilityConverter}}">
<Run Text="Copy:" FontWeight="Normal"></Run>
<Run FontWeight="DemiBold">
<Run.Text>
@@ -1211,14 +1212,14 @@
</Run>
<Run Text="g" FontWeight="DemiBold"></Run>
</TextBlock>
- <TextBlock VerticalAlignment="Center" Margin="20 0 0 0" FontSize="{StaticResource TangoDefaultFontSize}" Visibility="{Binding IsWeightView, Converter={StaticResource BooleanToVisibilityInverseConverter}}">
+ <TextBlock VerticalAlignment="Center" Margin="10 0 0 0" FontSize="{StaticResource TangoTitleFontSize}" Visibility="{Binding IsWeightView, Converter={StaticResource BooleanToVisibilityInverseConverter}}">
<Run Text="Total:" FontWeight="Normal"></Run>
- <Run Text="{Binding JobModel.LengthIncludingNumberOfUnitsAndSpools,Mode=OneWay, StringFormat=0.##}" FontWeight="DemiBold"/>
- <Run Text="m" FontWeight="DemiBold"></Run>
+ <Run Text="{Binding JobModel.LengthIncludingNumberOfUnitsAndSpools,Mode=OneWay, StringFormat=0.##}" FontWeight="Bold"/>
+ <Run Text="m" FontWeight="Bold"></Run>
</TextBlock>
- <TextBlock VerticalAlignment="Center" Margin="20 0 0 0" FontSize="{StaticResource TangoDefaultFontSize}" Visibility="{Binding IsWeightView, Converter={StaticResource BooleanToVisibilityConverter}}">
+ <TextBlock VerticalAlignment="Center" Margin="10 0 0 0" FontSize="{StaticResource TangoTitleFontSize}" Visibility="{Binding IsWeightView, Converter={StaticResource BooleanToVisibilityConverter}}">
<Run Text="Total:" FontWeight="Normal"></Run>
- <Run FontWeight="DemiBold">
+ <Run FontWeight="Bold">
<Run.Text>
<MultiBinding Converter="{StaticResource LengthToWeightConverter}" StringFormat="0.##" >
<Binding Path="JobModel.LengthIncludingNumberOfUnitsAndSpools" Mode="OneWay"/>
@@ -1226,23 +1227,23 @@
</MultiBinding>
</Run.Text>
</Run>
- <Run Text="g" FontWeight="DemiBold"></Run>
+ <Run Text="g" FontWeight="Bold"></Run>
</TextBlock>
</StackPanel>
- <TextBlock Margin="20 0 0 0" VerticalAlignment="Center" FontSize="{StaticResource TangoDefaultFontSize}" FontWeight="SemiBold" Foreground="{StaticResource TangoDarkForegroundBrush}">
- <Run Text="Duration: "></Run>
- <Run Text="{Binding JobModel.GetEstimatedDuration, Converter={StaticResource TimeSpanToHoursConverter}, FallbackValue=0, Mode=OneWay,StringFormat=0.0}"></Run>
- <Run Text="h"></Run>
- </TextBlock>
+ <TextBlock Margin="10 0 0 0" VerticalAlignment="Center" FontSize="{StaticResource TangoTitleFontSize}" FontWeight="Bold" Foreground="{StaticResource TangoDarkForegroundBrush}">
+ <Run Text="Duration: " FontWeight="Normal"></Run>
+ <Run Text="{Binding JobModel.GetEstimatedDuration, Converter={StaticResource TimeSpanToTwoDigitsTimeConverter}, FallbackValue=0, Mode=OneWay}"></Run>
+ <Run Text="{Binding JobModel.GetEstimatedDuration, Converter={StaticResource TimeSpanToLabelConverter}, FallbackValue=min, Mode=OneWay}"></Run>
+ </TextBlock>
</StackPanel>
<StackPanel DockPanel.Dock="Left" Orientation="Horizontal" VerticalAlignment="Center" Style="{StaticResource Level1Container}">
<Image Source="../Images/JobView/job-summary.png" Width="39" />
- <TextBlock FontWeight="Medium" Margin="20 0 0 0" VerticalAlignment="Center" FontSize="{StaticResource TangoExpanderHeaderFontSize}">Job Summary</TextBlock>
+ <TextBlock FontWeight="Medium" Margin="10 0 0 0" VerticalAlignment="Center" FontSize="{StaticResource TangoExpanderHeaderFontSize}">Summary</TextBlock>
</StackPanel>
</DockPanel>
</touch:TouchExpander.Header>
- <Grid Margin="40 0 40 0">
+ <Grid Margin="40 0 40 10">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
@@ -1254,15 +1255,15 @@
</Grid>
<UniformGrid Grid.Row="1" Margin="0 40 0 0" Columns="4" Rows="1" HorizontalAlignment="Stretch" >
- <TextBlock Text="Total:" FontWeight="DemiBold" FontSize="{StaticResource TangoDefaultFontSize}" ></TextBlock>
- <TextBlock FontSize="{StaticResource TangoDefaultFontSize}" Visibility="{Binding IsWeightView, Converter={StaticResource BooleanToVisibilityInverseConverter}}">
+ <TextBlock Text="Total:" FontWeight="Bold" FontSize="{StaticResource TangoTitleFontSize}" ></TextBlock>
+ <TextBlock FontSize="{StaticResource TangoTitleFontSize}" Visibility="{Binding IsWeightView, Converter={StaticResource BooleanToVisibilityInverseConverter}}">
<Run Text="Copy:" FontWeight="Normal"></Run>
- <Run Text="{Binding JobModel.Length,Mode=OneWay,StringFormat=0.##}" FontWeight="DemiBold"/>
- <Run Text="m" FontWeight="DemiBold"></Run>
+ <Run Text="{Binding JobModel.Length,Mode=OneWay,StringFormat=0.##}" FontWeight="Bold"/>
+ <Run Text="m" FontWeight="Bold"></Run>
</TextBlock>
- <TextBlock FontSize="{StaticResource TangoDefaultFontSize}" Visibility="{Binding IsWeightView, Converter={StaticResource BooleanToVisibilityConverter}}">
+ <TextBlock FontSize="{StaticResource TangoTitleFontSize}" Visibility="{Binding IsWeightView, Converter={StaticResource BooleanToVisibilityConverter}}">
<Run Text="Copy:" FontWeight="Normal"></Run>
- <Run FontWeight="DemiBold">
+ <Run FontWeight="Bold">
<Run.Text>
<MultiBinding Converter="{StaticResource LengthToWeightConverter}" StringFormat="0.##" >
<Binding Path="JobModel.Length" Mode="OneWay"/>
@@ -1272,18 +1273,18 @@
</Run>
<Run Text="g" FontWeight="DemiBold"></Run>
</TextBlock>
- <TextBlock FontSize="{StaticResource TangoDefaultFontSize}">
+ <TextBlock FontSize="{StaticResource TangoTitleFontSize}">
<Run Text="Copies:" FontWeight="Normal"></Run>
- <Run Text="{Binding JobModel.Copies}" FontWeight="DemiBold"/>
+ <Run Text="{Binding JobModel.Copies}" FontWeight="Bold"/>
</TextBlock>
- <TextBlock FontSize="{StaticResource TangoDefaultFontSize}" Visibility="{Binding IsWeightView, Converter={StaticResource BooleanToVisibilityInverseConverter}}">
+ <TextBlock FontSize="{StaticResource TangoTitleFontSize}" Visibility="{Binding IsWeightView, Converter={StaticResource BooleanToVisibilityInverseConverter}}">
<Run Text="Total:" FontWeight="Normal"></Run>
- <Run Text="{Binding JobModel.LengthIncludingNumberOfUnitsAndSpools,Mode=OneWay, StringFormat=0.##}" FontWeight="DemiBold"/>
- <Run Text="m" FontWeight="DemiBold"></Run>
+ <Run Text="{Binding JobModel.LengthIncludingNumberOfUnitsAndSpools,Mode=OneWay, StringFormat=0.##}" FontWeight="Bold"/>
+ <Run Text="m" FontWeight="Bold"></Run>
</TextBlock>
- <TextBlock FontSize="{StaticResource TangoDefaultFontSize}" Visibility="{Binding IsWeightView, Converter={StaticResource BooleanToVisibilityConverter}}">
+ <TextBlock FontSize="{StaticResource TangoTitleFontSize}" Visibility="{Binding IsWeightView, Converter={StaticResource BooleanToVisibilityConverter}}">
<Run Text="Total:" FontWeight="Normal"></Run>
- <Run FontWeight="DemiBold">
+ <Run FontWeight="Bold">
<Run.Text>
<MultiBinding Converter="{StaticResource LengthToWeightConverter}" StringFormat="0.##" >
<Binding Path="JobModel.LengthIncludingNumberOfUnitsAndSpools" Mode="OneWay"/>
@@ -1291,27 +1292,27 @@
</MultiBinding>
</Run.Text>
</Run>
- <Run Text="g" FontWeight="DemiBold"></Run>
+ <Run Text="g" FontWeight="Bold"></Run>
</TextBlock>
</UniformGrid>
<UniformGrid Grid.Row="2" Margin="0 40 0 0" Columns="4" Rows="1" HorizontalAlignment="Stretch">
- <TextBlock Text="Per Spool:" FontWeight="DemiBold" FontSize="{StaticResource TangoDefaultFontSize}"></TextBlock>
- <TextBlock FontSize="{StaticResource TangoDefaultFontSize}">
+ <TextBlock Text="Per Spool:" FontWeight="Bold" FontSize="{StaticResource TangoTitleFontSize}"></TextBlock>
+ <TextBlock FontSize="{StaticResource TangoTitleFontSize}">
<Run Text="Spools:" FontWeight="Normal"></Run>
- <Run Text="{Binding JobModel.NumberSpools}" FontWeight="DemiBold"/>
+ <Run Text="{Binding JobModel.NumberSpools}" FontWeight="Bold"/>
</TextBlock>
- <TextBlock FontSize="{StaticResource TangoDefaultFontSize}">
+ <TextBlock FontSize="{StaticResource TangoTitleFontSize}">
<Run Text="Copies:" FontWeight="Normal"></Run>
- <Run Text="{Binding JobModel.NumberOfUnits}" FontWeight="DemiBold"/>
+ <Run Text="{Binding JobModel.NumberOfUnits}" FontWeight="Bold"/>
</TextBlock>
- <TextBlock FontSize="{StaticResource TangoDefaultFontSize}" Visibility="{Binding IsWeightView, Converter={StaticResource BooleanToVisibilityInverseConverter}}">
+ <TextBlock FontSize="{StaticResource TangoTitleFontSize}" Visibility="{Binding IsWeightView, Converter={StaticResource BooleanToVisibilityInverseConverter}}">
<Run Text="Total:" FontWeight="Normal"></Run>
- <Run Text="{Binding JobModel.LengthIncludingNumberOfUnits,Mode=OneWay, StringFormat=0.##}" FontWeight="DemiBold"/>
- <Run Text="m" FontWeight="DemiBold"></Run>
+ <Run Text="{Binding JobModel.LengthIncludingNumberOfUnits,Mode=OneWay, StringFormat=0.##}" FontWeight="Bold"/>
+ <Run Text="m" FontWeight="Bold"></Run>
</TextBlock>
- <TextBlock FontSize="{StaticResource TangoDefaultFontSize}" Visibility="{Binding IsWeightView, Converter={StaticResource BooleanToVisibilityConverter}}">
+ <TextBlock FontSize="{StaticResource TangoTitleFontSize}" Visibility="{Binding IsWeightView, Converter={StaticResource BooleanToVisibilityConverter}}">
<Run Text="Total:" FontWeight="Normal"></Run>
- <Run FontWeight="DemiBold">
+ <Run FontWeight="Bold">
<Run.Text>
<MultiBinding Converter="{StaticResource LengthToWeightConverter}" StringFormat="0.##" >
<Binding Path="JobModel.LengthIncludingNumberOfUnits" Mode="OneWay"/>
@@ -1319,7 +1320,7 @@
</MultiBinding>
</Run.Text>
</Run>
- <Run Text="g" FontWeight="DemiBold"></Run>
+ <Run Text="g" FontWeight="Bold"></Run>
</TextBlock>
</UniformGrid>
</Grid>
diff --git a/Software/Visual_Studio/PPC/Modules/Tango.PPC.JobsV2/Views/JobsView.xaml b/Software/Visual_Studio/PPC/Modules/Tango.PPC.JobsV2/Views/JobsView.xaml
index d143268c7..0e9e6d617 100644
--- a/Software/Visual_Studio/PPC/Modules/Tango.PPC.JobsV2/Views/JobsView.xaml
+++ b/Software/Visual_Studio/PPC/Modules/Tango.PPC.JobsV2/Views/JobsView.xaml
@@ -29,6 +29,7 @@
</ResourceDictionary.MergedDictionaries>
<converters:JobToPieImageConverter x:Key="JobToPieImageConverter" />
+ <converters:LengthWithSpoolsConverter x:Key="LengthWithSpoolsConverter"/>
<sharedConverters:DateTimeUTCToShortDateConverter x:Key="DateTimeUTCToShortDateConverter" />
<sharedConverters:EnumToDescriptionConverter x:Key="EnumToDescriptionConverter" />
<sharedConverters:EnumToItemsSourceConverter x:Key="EnumToItemsSourceConverter" />
@@ -90,26 +91,17 @@
</Style.Triggers>
</Style>
</StackPanel.Style>
- <touch:TouchIconButton Command="{Binding ClearSelectionCommand}" Visibility="{Binding IsMultiSelecting,Converter={StaticResource BooleanToVisibilityConverter}}" Margin="0 0 30 0" Padding="20" Icon="Undo">
+ <touch:TouchIconButton Command="{Binding ClearSelectionCommand}" Visibility="{Binding IsMultiSelecting,Converter={StaticResource BooleanToVisibilityConverter}}" Margin="0 0 30 0" Padding="20" Icon="Close" Width="50" Height="50" Style="{StaticResource TangoRoundTouchIconButton}">
+
+ </touch:TouchIconButton>
+ <touch:TouchIconButton Command="{Binding MoveToListJobsCommand}" Margin="0 0 30 0" Padding="20" >
<touch:TouchIconButton.Style>
<Style TargetType="touch:TouchIconButton" BasedOn="{StaticResource TangoRoundTouchIconButton}">
<Setter Property="IconAngle" Value="0"></Setter>
+ <Setter Property="Icon" Value="Redo"/>
<Style.Triggers>
- <DataTrigger Binding="{Binding IsMultiSelecting}" Value="True">
- <DataTrigger.EnterActions>
- <BeginStoryboard>
- <Storyboard>
- <DoubleAnimation Storyboard.TargetProperty="IconAngle" To="360" Duration="00:00:0.2"></DoubleAnimation>
- </Storyboard>
- </BeginStoryboard>
- </DataTrigger.EnterActions>
- <DataTrigger.ExitActions>
- <BeginStoryboard>
- <Storyboard>
- <DoubleAnimation Storyboard.TargetProperty="IconAngle" To="0" Duration="00:00:00"></DoubleAnimation>
- </Storyboard>
- </BeginStoryboard>
- </DataTrigger.ExitActions>
+ <DataTrigger Binding="{Binding SelectedCategoryIndex}" Value="1">
+ <Setter Property="Icon" Value="Undo"/>
</DataTrigger>
</Style.Triggers>
</Style>
@@ -167,7 +159,7 @@
<DockPanel>
<Rectangle Margin="0 0 20 0" HorizontalAlignment="Center" VerticalAlignment="Bottom" Stroke="{StaticResource TangoGrayBrush}" StrokeThickness="1" Height="25"></Rectangle>
<touch:TouchIcon DockPanel.Dock="Left" Foreground="{StaticResource TangoGrayBrush}" Width="20" Height="20" VerticalAlignment="Bottom" Icon="Magnify" />
- <touch:TouchTextBox Margin="5 0 0 0" Width="300" Text="{Binding Filter,Mode=TwoWay}" Watermark="find name, customer..."></touch:TouchTextBox>
+ <touch:TouchTextBox Margin="5 0 0 0" Width="300" Text="{Binding Filter,Mode=TwoWay}" Watermark="find name"></touch:TouchTextBox>
</DockPanel>
</Grid>
<StackPanel Orientation="Horizontal" DockPanel.Dock="Right" HorizontalAlignment="Right" Margin="0 20 20 0" Visibility="{Binding BuildProvider.IsEureka, Converter={StaticResource BooleanToVisibilityConverter}}">
@@ -256,28 +248,44 @@
</touch:LightTouchDataGridColumn.Header>
<touch:LightTouchDataGridColumn.CellTemplate>
<DataTemplate>
- <TextBlock Margin="20 0 0 0" IsHitTestVisible="False" Text="{Binding Name,Converter={StaticResource StringEllipsisConverter},ConverterParameter='40'}"></TextBlock>
+ <TextBlock Margin="20 0 0 0" IsHitTestVisible="False" Text="{Binding Name,Converter={StaticResource StringEllipsisConverter},ConverterParameter='56'}" TextWrapping="Wrap"></TextBlock>
+ </DataTemplate>
+ </touch:LightTouchDataGridColumn.CellTemplate>
+ </touch:LightTouchDataGridColumn>
+ <touch:LightTouchDataGridColumn Width="200" Header="Thread" SortMember="ThreadName" HorizontalContentAlignment="Left">
+ <touch:LightTouchDataGridColumn.CellTemplate>
+ <DataTemplate>
+ <TextBlock Margin="5 0 0 0" IsHitTestVisible="False" Text="{Binding ThreadName,Converter={StaticResource StringEllipsisConverter},ConverterParameter='44'}" TextWrapping="Wrap" HorizontalAlignment="Left" VerticalAlignment="Center" FontWeight="Regular"></TextBlock>
</DataTemplate>
</touch:LightTouchDataGridColumn.CellTemplate>
</touch:LightTouchDataGridColumn>
- <touch:LightTouchDataGridColumn Width="117" Header="Length (m)" SortMember="Length">
+ <touch:LightTouchDataGridColumn Width="117" Header="Length (m)" SortMember="LengthIncludingNumberOfUnits">
<touch:LightTouchDataGridColumn.CellTemplate>
<DataTemplate>
- <TextBlock IsHitTestVisible="False" Text="{Binding Length,StringFormat=0.0}"></TextBlock>
+ <TextBlock IsHitTestVisible="False">
+ <TextBlock.Text>
+ <MultiBinding Converter="{StaticResource LengthWithSpoolsConverter}" StringFormat="0.0" TargetNullValue='0' FallbackValue='0' Mode="OneWay">
+ <Binding Path="LengthIncludingNumberOfUnits" Mode="OneWay"/>
+ <Binding Path="DataContext.BuildProvider.IsEureka" Mode="OneWay" RelativeSource="{RelativeSource AncestorType=UserControl}"/>
+ <Binding Path="Spools" Mode="OneWay"/>
+ </MultiBinding>
+ </TextBlock.Text>
+ </TextBlock>
</DataTemplate>
</touch:LightTouchDataGridColumn.CellTemplate>
</touch:LightTouchDataGridColumn>
+
<touch:LightTouchDataGridColumn Header="Colors" SortMember="Segments.Count" Width="85">
<touch:LightTouchDataGridColumn.CellTemplate>
<DataTemplate>
- <Image Stretch="Fill" IsHitTestVisible="False" Source="{Binding Converter={StaticResource JobToPieImageConverter},ConverterParameter='25,25',IsAsync=True}" Width="25" Height="25" HorizontalAlignment="Left"></Image>
+ <Image Stretch="Fill" IsHitTestVisible="False" Source="{Binding Converter={StaticResource JobToPieImageConverter},ConverterParameter='60,60',IsAsync=True}" Width="60" Height="60" HorizontalAlignment="Left"></Image>
</DataTemplate>
</touch:LightTouchDataGridColumn.CellTemplate>
</touch:LightTouchDataGridColumn>
<touch:LightTouchDataGridColumn Width="100" Header="Updated" SortMember="LastUpdated">
<touch:LightTouchDataGridColumn.CellTemplate>
<DataTemplate>
- <TextBlock IsHitTestVisible="False" Text="{Binding LastUpdated,Converter={StaticResource DateTimeUTCToShortDateConverter}}"></TextBlock>
+ <TextBlock IsHitTestVisible="False" Text="{Binding LastUpdated,Converter={StaticResource DateTimeUTCToShortDateConverter}}" FontWeight="Regular"></TextBlock>
</DataTemplate>
</touch:LightTouchDataGridColumn.CellTemplate>
</touch:LightTouchDataGridColumn>
@@ -356,35 +364,50 @@
<touch:LightTouchDataGridColumn Width="100" Header="Status" SortMember="JobStatus" HorizontalContentAlignment="Left">
<touch:LightTouchDataGridColumn.CellTemplate>
<DataTemplate>
- <TextBlock IsHitTestVisible="False" Text="{Binding JobStatus,Converter={StaticResource EnumToDescriptionConverter}}" HorizontalAlignment="Left" VerticalAlignment="Center"></TextBlock>
+ <TextBlock IsHitTestVisible="False" Text="{Binding JobStatus,Converter={StaticResource EnumToDescriptionConverter}}" HorizontalAlignment="Left" VerticalAlignment="Center" FontWeight="Regular"></TextBlock>
</DataTemplate>
</touch:LightTouchDataGridColumn.CellTemplate>
</touch:LightTouchDataGridColumn>
<touch:LightTouchDataGridColumn Width="1*" Header="Name" SortMember="Name" HorizontalContentAlignment="Left">
<touch:LightTouchDataGridColumn.CellTemplate>
<DataTemplate>
- <TextBlock IsHitTestVisible="False" Text="{Binding Name,Converter={StaticResource StringEllipsisConverter},ConverterParameter='40'}" HorizontalAlignment="Left" VerticalAlignment="Center"></TextBlock>
+ <TextBlock IsHitTestVisible="False" Text="{Binding Name,Converter={StaticResource StringEllipsisConverter},ConverterParameter='46'}" TextWrapping="Wrap" HorizontalAlignment="Left" VerticalAlignment="Center"></TextBlock>
+ </DataTemplate>
+ </touch:LightTouchDataGridColumn.CellTemplate>
+ </touch:LightTouchDataGridColumn>
+ <touch:LightTouchDataGridColumn Width="200" Header="Thread" SortMember="ThreadName" HorizontalContentAlignment="Left">
+ <touch:LightTouchDataGridColumn.CellTemplate>
+ <DataTemplate>
+ <TextBlock Margin="5 0 0 0" IsHitTestVisible="False" Text="{Binding ThreadName,Converter={StaticResource StringEllipsisConverter},ConverterParameter='43'}" TextWrapping="Wrap" HorizontalAlignment="Left" VerticalAlignment="Center" FontWeight="Regular"></TextBlock>
</DataTemplate>
</touch:LightTouchDataGridColumn.CellTemplate>
</touch:LightTouchDataGridColumn>
- <touch:LightTouchDataGridColumn Width="117" Header="Length (m)" SortMember="Length">
+ <touch:LightTouchDataGridColumn Width="117" Header="Length (m)" SortMember="LengthIncludingNumberOfUnits">
<touch:LightTouchDataGridColumn.CellTemplate>
<DataTemplate>
- <TextBlock IsHitTestVisible="False" Text="{Binding Length,StringFormat=0.0}"></TextBlock>
+ <TextBlock IsHitTestVisible="False" >
+ <TextBlock.Text>
+ <MultiBinding Converter="{StaticResource LengthWithSpoolsConverter}" StringFormat="0.0" TargetNullValue='0' FallbackValue='0'>
+ <Binding Path="LengthIncludingNumberOfUnits" Mode="OneWay"/>
+ <Binding Path="DataContext.BuildProvider.IsEureka" Mode="OneWay" RelativeSource="{RelativeSource AncestorType=UserControl}"/>
+ <Binding Path="Spools" Mode="OneWay"/>
+ </MultiBinding>
+ </TextBlock.Text>
+ </TextBlock>
</DataTemplate>
</touch:LightTouchDataGridColumn.CellTemplate>
</touch:LightTouchDataGridColumn>
<touch:LightTouchDataGridColumn Header="Colors" SortMember="Segments.Count" Width="85">
<touch:LightTouchDataGridColumn.CellTemplate>
<DataTemplate>
- <Image Stretch="Fill" IsHitTestVisible="False" Source="{Binding Converter={StaticResource JobToPieImageConverter},ConverterParameter='25,25',IsAsync=True}" Width="25" Height="25" HorizontalAlignment="Left"></Image>
+ <Image Stretch="Fill" IsHitTestVisible="False" Source="{Binding Converter={StaticResource JobToPieImageConverter},ConverterParameter='60,60',IsAsync=True}" Width="60" Height="60" HorizontalAlignment="Left"></Image>
</DataTemplate>
</touch:LightTouchDataGridColumn.CellTemplate>
</touch:LightTouchDataGridColumn>
<touch:LightTouchDataGridColumn Width="100" Header="Updated" SortMember="LastUpdated">
<touch:LightTouchDataGridColumn.CellTemplate>
<DataTemplate>
- <TextBlock IsHitTestVisible="False" Text="{Binding LastUpdated,Converter={StaticResource DateTimeUTCToShortDateConverter}}"></TextBlock>
+ <TextBlock IsHitTestVisible="False" Text="{Binding LastUpdated,Converter={StaticResource DateTimeUTCToShortDateConverter}}" FontWeight="Regular"></TextBlock>
</DataTemplate>
</touch:LightTouchDataGridColumn.CellTemplate>
</touch:LightTouchDataGridColumn>
diff --git a/Software/Visual_Studio/PPC/Modules/Tango.PPC.MachineSettings/Views/MainView.xaml b/Software/Visual_Studio/PPC/Modules/Tango.PPC.MachineSettings/Views/MainView.xaml
index 6475869dd..764f044d0 100644
--- a/Software/Visual_Studio/PPC/Modules/Tango.PPC.MachineSettings/Views/MainView.xaml
+++ b/Software/Visual_Studio/PPC/Modules/Tango.PPC.MachineSettings/Views/MainView.xaml
@@ -461,7 +461,7 @@
</DockPanel>
<DockPanel Margin="0 20 0 0" TextElement.FontSize="{StaticResource TangoDefaultFontSize}">
- <TextBlock VerticalAlignment="Center">Show advanced options (Multi-segments &amp; Gradients) in the Job Editor</TextBlock>
+ <TextBlock VerticalAlignment="Center">Show advanced options (Segments &amp; Gradients) in the Job Editor</TextBlock>
<touch:TouchToggleSlider IsChecked="{Binding Settings.ShowAdvancedOptions}" Margin="0 0 100 0" DockPanel.Dock="Right" Style="{StaticResource TangoToggleButtonGrayAccent}" HorizontalAlignment="Right" Width="90"></touch:TouchToggleSlider>
</DockPanel>
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.Common/Resources/Fonts.xaml b/Software/Visual_Studio/PPC/Tango.PPC.Common/Resources/Fonts.xaml
index 1f0068c3e..4e704751c 100644
--- a/Software/Visual_Studio/PPC/Tango.PPC.Common/Resources/Fonts.xaml
+++ b/Software/Visual_Studio/PPC/Tango.PPC.Common/Resources/Fonts.xaml
@@ -2,8 +2,8 @@
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
xmlns:local="clr-namespace:Tango.PPC.Common.Resources">
-
- <FontFamily x:Key="Poppins" >..//Fonts//#Poppins</FontFamily>
+
+ <FontFamily x:Key="Poppins" >pack://application:,,,/Tango.PPC.Common;Component/Fonts/#Poppins</FontFamily>
</ResourceDictionary>
\ No newline at end of file
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/App.xaml b/Software/Visual_Studio/PPC/Tango.PPC.UI/App.xaml
index bdcf675e3..38a5b91b2 100644
--- a/Software/Visual_Studio/PPC/Tango.PPC.UI/App.xaml
+++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/App.xaml
@@ -20,6 +20,7 @@
<ResourceDictionary Source="Resources/Colors.xaml"></ResourceDictionary>
<ResourceDictionary Source="Resources/Fonts.xaml"></ResourceDictionary>
<ResourceDictionary Source="Resources/Styles.xaml"></ResourceDictionary>
+ <ResourceDictionary Source="Resources/Graphs.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/Converters/ProgressUnitSpoolConverter.cs b/Software/Visual_Studio/PPC/Tango.PPC.UI/Converters/ProgressUnitSpoolConverter.cs
index 054ccd3df..d0cc8284e 100644
--- a/Software/Visual_Studio/PPC/Tango.PPC.UI/Converters/ProgressUnitSpoolConverter.cs
+++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/Converters/ProgressUnitSpoolConverter.cs
@@ -17,7 +17,7 @@ namespace Tango.PPC.UI.Converters
if (values.Count() == 1)//may be added count of spools
{
int CurrentUnit = System.Convert.ToInt16(values[0]);
- CurrentUnit +=1;
+
var totalBy4Spools = (double)CurrentUnit * 4;// spools ;
return totalBy4Spools.ToString();
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/Converters/ProgressWeightSpoolConverter.cs b/Software/Visual_Studio/PPC/Tango.PPC.UI/Converters/ProgressWeightSpoolConverter.cs
index 05a41912c..f451fe0d9 100644
--- a/Software/Visual_Studio/PPC/Tango.PPC.UI/Converters/ProgressWeightSpoolConverter.cs
+++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/Converters/ProgressWeightSpoolConverter.cs
@@ -42,7 +42,7 @@ namespace Tango.PPC.UI.Converters
var currentProgressBy4Spools = (double)currentProgresslength * 4;
int coeff = (int)currentProgressBy4Spools / (int)totalBy4Spools;
- var progressCurrent = coeff == 0 ? currentProgressBy4Spools : currentProgressBy4Spools % (coeff * totalBy4Spools);//show for progress
+ var progressCurrent = (coeff == 0 || coeff == 1) ? currentProgressBy4Spools : currentProgressBy4Spools % (coeff * totalBy4Spools);//show for progress
var weight = ((double)progressCurrent * coef) / (1000);//(g)
if (forOneSpool)
{
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/Converters/StatisticTabToVisibilityConverter.cs b/Software/Visual_Studio/PPC/Tango.PPC.UI/Converters/StatisticTabToVisibilityConverter.cs
new file mode 100644
index 000000000..06c75a999
--- /dev/null
+++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/Converters/StatisticTabToVisibilityConverter.cs
@@ -0,0 +1,28 @@
+using System;
+using System.Collections.Generic;
+using System.Globalization;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows;
+using System.Windows.Data;
+using static Tango.PPC.UI.ViewModels.MachineStatusViewVM;
+
+namespace Tango.PPC.UI.Converters
+{
+ public class StatisticTabToVisibilityConverter : IValueConverter
+ {
+ public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
+ {
+ StatisticTab selected = (StatisticTab)Enum.Parse(typeof(StatisticTab), parameter.ToString());
+ StatisticTab statTab = (StatisticTab)value;
+
+ return statTab.Equals(selected) ? Visibility.Visible : Visibility.Hidden;
+ }
+
+ public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
+ {
+ throw new NotImplementedException();
+ }
+ }
+}
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/Graphs/GraphHelper.cs b/Software/Visual_Studio/PPC/Tango.PPC.UI/Graphs/GraphHelper.cs
new file mode 100644
index 000000000..d06ed042a
--- /dev/null
+++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/Graphs/GraphHelper.cs
@@ -0,0 +1,36 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Windows;
+using System.Windows.Media;
+
+namespace Tango.PPC.UI.Graphs
+{
+ public static class GraphHelper
+ {
+ public enum GraphColor
+ {
+ White,
+ Red,
+ Yellow,
+ Green,
+ Orange
+ }
+
+ public static Color GetGraphColor(GraphColor graphColor)
+ {
+ return (Color)Application.Current.Resources[$"Tango_RealTimeGraph_{graphColor.ToString()}"];
+ }
+
+ public static Brush GetGraphBrush(GraphColor graphColor)
+ {
+ return new SolidColorBrush(GetGraphColor(graphColor));
+ }
+
+ public static Color GetGraphStrokeColor()
+ {
+ return (Color)Application.Current.Resources["Tango_RealTimeGraph_ForegroundColor"];
+ }
+ }
+}
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/Graphs/RealTimeGraph.cs b/Software/Visual_Studio/PPC/Tango.PPC.UI/Graphs/RealTimeGraph.cs
new file mode 100644
index 000000000..303b18892
--- /dev/null
+++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/Graphs/RealTimeGraph.cs
@@ -0,0 +1,149 @@
+using RealTimeGraphX;
+using System;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Media;
+
+namespace Tango.PPC.UI.Graphs
+{
+ public class RealTimeGraph : Control
+ {
+ /// <summary>
+ /// Gets or sets the graph controller.
+ /// </summary>
+ public IGraphController Controller
+ {
+ get { return (IGraphController)GetValue(ControllerProperty); }
+ set { SetValue(ControllerProperty, value); }
+ }
+ public static readonly DependencyProperty ControllerProperty =
+ DependencyProperty.Register("Controller", typeof(IGraphController), typeof(RealTimeGraph), new PropertyMetadata(null));
+
+
+ /// <summary>
+ /// Gets or sets the string format of the y-axis.
+ /// </summary>
+ public String StringFormat
+ {
+ get { return (String)GetValue(StringFormatProperty); }
+ set { SetValue(StringFormatProperty, value); }
+ }
+ public static readonly DependencyProperty StringFormatProperty =
+ DependencyProperty.Register("StringFormat", typeof(String), typeof(RealTimeGraph), new PropertyMetadata("0.0"));
+
+
+ /// <summary>
+ /// Gets or sets the display name.
+ /// </summary>
+ public String DisplayName
+ {
+ get { return (String)GetValue(DisplayNameProperty); }
+ set { SetValue(DisplayNameProperty, value); }
+ }
+ public static readonly DependencyProperty DisplayNameProperty =
+ DependencyProperty.Register("DisplayName", typeof(String), typeof(RealTimeGraph), new PropertyMetadata(null));
+
+
+ /// <summary>
+ /// Gets or sets the display units.
+ /// </summary>
+ public String DisplayUnits
+ {
+ get { return (String)GetValue(DisplayUnitsProperty); }
+ set { SetValue(DisplayUnitsProperty, value); }
+ }
+ public static readonly DependencyProperty DisplayUnitsProperty =
+ DependencyProperty.Register("DisplayUnits", typeof(String), typeof(RealTimeGraph), new PropertyMetadata(null));
+
+ /// <summary>
+ /// Gets or sets the graph label visibility.
+ /// </summary>
+ public Visibility GraphLabelVisibility
+ {
+ get { return (Visibility)GetValue(GraphLabelVisibilityProperty); }
+ set { SetValue(GraphLabelVisibilityProperty, value); }
+ }
+ public static readonly DependencyProperty GraphLabelVisibilityProperty =
+ DependencyProperty.Register("GraphLabelVisibility", typeof(Visibility), typeof(RealTimeGraph), new PropertyMetadata(Visibility.Visible));
+
+
+ /// <summary>
+ /// Gets or sets the vertical ticks.
+ /// </summary>
+ public int VerticalTicks
+ {
+ get { return (int)GetValue(VerticalTicksProperty); }
+ set { SetValue(VerticalTicksProperty, value); }
+ }
+ public static readonly DependencyProperty VerticalTicksProperty =
+ DependencyProperty.Register("VerticalTicks", typeof(int), typeof(RealTimeGraph), new PropertyMetadata(10));
+
+
+ /// <summary>
+ /// Gets or sets the horizontal ticks.
+ /// </summary>
+ public int HorizontalTicks
+ {
+ get { return (int)GetValue(HorizontalTicksProperty); }
+ set { SetValue(HorizontalTicksProperty, value); }
+ }
+ public static readonly DependencyProperty HorizontalTicksProperty =
+ DependencyProperty.Register("HorizontalTicks", typeof(int), typeof(RealTimeGraph), new PropertyMetadata(10));
+
+ public Brush GridLinesBrush
+ {
+ get { return (Brush)GetValue(GridLinesBrushProperty); }
+ set { SetValue(GridLinesBrushProperty, value); }
+ }
+ public static readonly DependencyProperty GridLinesBrushProperty =
+ DependencyProperty.Register("GridLinesBrush", typeof(Brush), typeof(RealTimeGraph), new PropertyMetadata(null));
+
+ public Visibility HorizontalAxisVisibility
+ {
+ get { return (Visibility)GetValue(HorizontalAxisVisibilityProperty); }
+ set { SetValue(HorizontalAxisVisibilityProperty, value); }
+ }
+ public static readonly DependencyProperty HorizontalAxisVisibilityProperty =
+ DependencyProperty.Register("HorizontalAxisVisibility", typeof(Visibility), typeof(RealTimeGraph), new PropertyMetadata(Visibility.Visible));
+
+ public Visibility VerticalAxisVisibility
+ {
+ get { return (Visibility)GetValue(VerticalAxisVisibilityProperty); }
+ set { SetValue(VerticalAxisVisibilityProperty, value); }
+ }
+ public static readonly DependencyProperty VerticalAxisVisibilityProperty =
+ DependencyProperty.Register("VerticalAxisVisibility", typeof(Visibility), typeof(RealTimeGraph), new PropertyMetadata(Visibility.Visible));
+
+ public Visibility CurrentValueVisibility
+ {
+ get { return (Visibility)GetValue(CurrentValueVisibilityProperty); }
+ set { SetValue(CurrentValueVisibilityProperty, value); }
+ }
+ public static readonly DependencyProperty CurrentValueVisibilityProperty =
+ DependencyProperty.Register("CurrentValueVisibility", typeof(Visibility), typeof(RealTimeGraph), new PropertyMetadata(Visibility.Collapsed));
+
+ public double CurrentValueFontSize
+ {
+ get { return (double)GetValue(CurrentValueFontSizeProperty); }
+ set { SetValue(CurrentValueFontSizeProperty, value); }
+ }
+ public static readonly DependencyProperty CurrentValueFontSizeProperty =
+ DependencyProperty.Register("CurrentValueFontSize", typeof(double), typeof(RealTimeGraph), new PropertyMetadata(25.0));
+
+ public Thickness CurrentValueMargin
+ {
+ get { return (Thickness)GetValue(CurrentValueMarginProperty); }
+ set { SetValue(CurrentValueMarginProperty, value); }
+ }
+ public static readonly DependencyProperty CurrentValueMarginProperty =
+ DependencyProperty.Register("CurrentValueMargin", typeof(Thickness), typeof(RealTimeGraph), new PropertyMetadata(new Thickness(20)));
+
+ /// <summary>
+ /// Initializes the <see cref="RealTimeGraph"/> class.
+ /// </summary>
+ static RealTimeGraph()
+ {
+ DefaultStyleKeyProperty.OverrideMetadata(typeof(RealTimeGraph), new FrameworkPropertyMetadata(typeof(RealTimeGraph)));
+ }
+ }
+}
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/Graphs/RealTimeGraph.xaml b/Software/Visual_Studio/PPC/Tango.PPC.UI/Graphs/RealTimeGraph.xaml
new file mode 100644
index 000000000..8844f9627
--- /dev/null
+++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/Graphs/RealTimeGraph.xaml
@@ -0,0 +1,106 @@
+<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+ xmlns:realTimeGraphX="clr-namespace:RealTimeGraphX.WPF;assembly=RealTimeGraphX.WPF"
+ xmlns:local="clr-namespace:Tango.PPC.UI.Graphs">
+
+ <BitmapImage x:Key="PPC_Screw" UriSource="../Images/screw.png" />
+
+ <Style TargetType="{x:Type local:RealTimeGraph}">
+ <Setter Property="BorderThickness" Value="1"></Setter>
+ <Setter Property="BorderBrush" Value="{StaticResource Tango_RealTimeGraph_OuterBorderBrush}"></Setter>
+ <Setter Property="Padding" Value="20 20 30 20"></Setter>
+ <Setter Property="FontSize" Value="11"></Setter>
+ <Setter Property="Foreground" Value="{StaticResource Tango_RealTimeGraph_ForegroundBrush}"></Setter>
+ <Setter Property="Background" Value="{StaticResource Tango_RealTimeGraph_BackgroundBrush}"></Setter>
+ <Setter Property="GridLinesBrush" Value="{StaticResource Tango_RealTimeGraph_GridLinesBrush}"></Setter>
+ <Setter Property="Template">
+ <Setter.Value>
+ <ControlTemplate TargetType="{x:Type local:RealTimeGraph}">
+ <Grid>
+ <Border Background="{TemplateBinding Background}"
+ BorderBrush="{TemplateBinding BorderBrush}"
+ BorderThickness="{TemplateBinding BorderThickness}"
+ CornerRadius="5"
+ Padding="{TemplateBinding Padding}">
+ <Grid>
+ <Grid.RowDefinitions>
+ <RowDefinition Height="1*"/>
+ <RowDefinition Height="Auto"/>
+ </Grid.RowDefinitions>
+ <Grid.ColumnDefinitions>
+ <ColumnDefinition Width="Auto"/>
+ <ColumnDefinition Width="1*"/>
+ </Grid.ColumnDefinitions>
+
+ <Grid Grid.Column="1">
+ <realTimeGraphX:WpfGraphGridLines Controller="{TemplateBinding Controller}" Foreground="{TemplateBinding GridLinesBrush}" />
+ <realTimeGraphX:WpfGraphSurface x:Name="surface" Controller="{TemplateBinding Controller}" BorderThickness="1 0 0 1" BorderBrush="{StaticResource Tango_RealTimeGraph_InnerBorderBrush}" />
+ </Grid>
+
+ <realTimeGraphX:WpfGraphAxisControl Width="70" Visibility="{TemplateBinding VerticalAxisVisibility}" Orientation="Vertical" Controller="{TemplateBinding Controller}" StringFormat="{TemplateBinding StringFormat}" Ticks="{TemplateBinding VerticalTicks}" />
+ <realTimeGraphX:WpfGraphAxisControl Height="35" Visibility="{TemplateBinding HorizontalAxisVisibility}" Orientation="Horizontal" Controller="{TemplateBinding Controller}" Grid.Column="1" Grid.Row="1" Ticks="{TemplateBinding HorizontalTicks}" StringFormat="hh\:mm\:ss"/>
+ </Grid>
+ </Border>
+ <Image HorizontalAlignment="Left" VerticalAlignment="Top" Margin="8" Source="{StaticResource PPC_Screw}" RenderOptions.BitmapScalingMode="Fant" Width="10" Height="10" />
+ <Image HorizontalAlignment="Right" VerticalAlignment="Top" Margin="8" Source="{StaticResource PPC_Screw}" RenderOptions.BitmapScalingMode="Fant" Width="10" Height="10" />
+
+ <Image HorizontalAlignment="Right" VerticalAlignment="Bottom" Margin="8" Source="{StaticResource PPC_Screw}" RenderOptions.BitmapScalingMode="Fant" Width="10" Height="10" />
+ <Image HorizontalAlignment="Left" VerticalAlignment="Bottom" Margin="8" Source="{StaticResource PPC_Screw}" RenderOptions.BitmapScalingMode="Fant" Width="10" Height="10" />
+ </Grid>
+ </ControlTemplate>
+ </Setter.Value>
+ </Setter>
+ </Style>
+
+ <Style TargetType="{x:Type local:RealTimeGraph}" x:Key="PPC_RealTimeGraph_Flat">
+ <Setter Property="BorderThickness" Value="1"></Setter>
+ <Setter Property="BorderBrush" Value="{StaticResource Tango_RealTimeGraph_OuterBorderBrush}"></Setter>
+ <Setter Property="Padding" Value="0"></Setter>
+ <Setter Property="FontSize" Value="11"></Setter>
+ <Setter Property="Foreground" Value="{StaticResource Tango_RealTimeGraph_ForegroundBrush}"></Setter>
+ <Setter Property="Background" Value="Transparent"></Setter>
+ <Setter Property="GridLinesBrush" Value="{StaticResource Tango_RealTimeGraph_GridLinesBrush}"></Setter>
+ <Setter Property="Template">
+ <Setter.Value>
+ <ControlTemplate TargetType="{x:Type local:RealTimeGraph}">
+ <Grid>
+ <Border Background="{TemplateBinding Background}"
+ BorderBrush="{TemplateBinding BorderBrush}"
+ BorderThickness="{TemplateBinding BorderThickness}"
+ Padding="{TemplateBinding Padding}">
+ <Grid>
+ <Grid.RowDefinitions>
+ <RowDefinition Height="1*"/>
+ <RowDefinition Height="Auto"/>
+ </Grid.RowDefinitions>
+ <Grid.ColumnDefinitions>
+ <ColumnDefinition Width="Auto"/>
+ <ColumnDefinition Width="1*"/>
+ </Grid.ColumnDefinitions>
+
+ <Grid Grid.Column="1" ClipToBounds="True">
+ <realTimeGraphX:WpfGraphGridLines Controller="{TemplateBinding Controller}" Foreground="{TemplateBinding GridLinesBrush}" Rows="5" Columns="0"/>
+ <realTimeGraphX:WpfGraphSurface Margin="-2 0 0 0" x:Name="surface" Controller="{TemplateBinding Controller}" BorderThickness="0 0 0 0" BorderBrush="{StaticResource Tango_RealTimeGraph_InnerBorderBrush}" />
+ </Grid>
+
+ <realTimeGraphX:WpfGraphAxisControl Width="30" Visibility="{TemplateBinding VerticalAxisVisibility}" Orientation="Vertical" Controller="{TemplateBinding Controller}" StringFormat="{TemplateBinding StringFormat}" Ticks="{TemplateBinding VerticalTicks}" />
+ <realTimeGraphX:WpfGraphAxisControl Height="38" Visibility="{TemplateBinding HorizontalAxisVisibility}" Orientation="Horizontal" Controller="{TemplateBinding Controller}" Grid.Column="1" Grid.Row="1" Ticks="{TemplateBinding HorizontalTicks}" StringFormat="hh\:mm"/>
+ </Grid>
+ </Border>
+
+ <Viewbox IsHitTestVisible="False" Stretch="Uniform" Margin="{TemplateBinding CurrentValueMargin}" Visibility="{TemplateBinding CurrentValueVisibility}">
+ <Grid Width="200" Height="200">
+ <!--<Ellipse Stroke="#38FFFFFF" StrokeThickness="20" />-->
+
+ <StackPanel HorizontalAlignment="Center" VerticalAlignment="Center">
+ <TextBlock Opacity="0.8" HorizontalAlignment="Center" VerticalAlignment="Center" FontWeight="SemiBold" FontSize="{TemplateBinding CurrentValueFontSize}" Text="{Binding RelativeSource={RelativeSource Mode=TemplatedParent},Path=Controller.DataSeriesCollection[0].CurrentValue}"></TextBlock>
+ </StackPanel>
+ </Grid>
+ </Viewbox>
+ </Grid>
+ </ControlTemplate>
+ </Setter.Value>
+ </Setter>
+ </Style>
+
+</ResourceDictionary> \ No newline at end of file
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/Overview Icons/Error.png b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/Overview Icons/Error.png
index b9138f444..a5a178bdb 100644
--- a/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/Overview Icons/Error.png
+++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/Overview Icons/Error.png
Binary files differ
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/Overview Icons/Normal.png b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/Overview Icons/Normal.png
index a562e9228..8ddeecbe0 100644
--- a/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/Overview Icons/Normal.png
+++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/Overview Icons/Normal.png
Binary files differ
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/Overview Icons/motor.png b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/Overview Icons/motor.png
new file mode 100644
index 000000000..8401a8e30
--- /dev/null
+++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/Overview Icons/motor.png
Binary files differ
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/Overview Icons/pr_data.png b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/Overview Icons/pr_data.png
new file mode 100644
index 000000000..ebd02a99b
--- /dev/null
+++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/Overview Icons/pr_data.png
Binary files differ
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/Overview Icons/pressure.png b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/Overview Icons/pressure.png
new file mode 100644
index 000000000..12ade5d92
--- /dev/null
+++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/Overview Icons/pressure.png
Binary files differ
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/Overview Icons/temperature.png b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/Overview Icons/temperature.png
new file mode 100644
index 000000000..de9b042c4
--- /dev/null
+++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/Overview Icons/temperature.png
Binary files differ
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/screw.png b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/screw.png
new file mode 100644
index 000000000..46a8134fe
--- /dev/null
+++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/screw.png
Binary files differ
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/Models/MachineOverviewErrorItem.cs b/Software/Visual_Studio/PPC/Tango.PPC.UI/Models/MachineOverviewErrorItem.cs
new file mode 100644
index 000000000..3925a1752
--- /dev/null
+++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/Models/MachineOverviewErrorItem.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Tango.Core;
+
+namespace Tango.PPC.UI.Models
+{
+ public class MachineOverviewErrorItem : ExtendedObject
+ {
+ private bool _isErrorState;
+
+ public bool IsErrorState
+ {
+ get { return _isErrorState; }
+ set { _isErrorState = value; RaisePropertyChangedAuto();}
+ }
+
+ public MachineOverviewErrorItem()
+ {
+ IsErrorState = false;
+ }
+
+ }
+}
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/Models/MachineOverviewErrorStates.cs b/Software/Visual_Studio/PPC/Tango.PPC.UI/Models/MachineOverviewErrorStates.cs
new file mode 100644
index 000000000..1863b01e1
--- /dev/null
+++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/Models/MachineOverviewErrorStates.cs
@@ -0,0 +1,68 @@
+using System;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Tango.Core;
+
+namespace Tango.PPC.UI.Models
+{
+ public class MachineOverviewErrorStates : ExtendedObject
+ {
+ public ObservableCollection<MachineOverviewErrorItem> Winders { get; set; }
+
+ public ObservableCollection<MachineOverviewErrorItem> Dancers { get; set; }
+
+ public ObservableCollection<MachineOverviewErrorItem> BTSRs { get; set; }
+
+ public MachineOverviewErrorStates()
+ {
+ Winders = new ObservableCollection<MachineOverviewErrorItem>();
+ Dancers = new ObservableCollection<MachineOverviewErrorItem>();
+ BTSRs = new ObservableCollection<MachineOverviewErrorItem>();
+ for ( int i = 0; i < 4 ; i++)
+ {
+ Winders.Add( new MachineOverviewErrorItem());
+ Dancers.Add(new MachineOverviewErrorItem());
+ BTSRs.Add(new MachineOverviewErrorItem());
+ }
+ }
+
+ public void UpdateWinders(List<bool> updates)
+ {
+ if(!UpdateCollection(Winders, updates))
+ {
+ LogManager.Log("Error in display Winders Errors. Number of Winders In Error is less then 4!");
+ }
+ }
+ public void UpdateDancers(List<bool> updates)
+ {
+ if(!UpdateCollection(Dancers, updates))
+ {
+ LogManager.Log("Error in display Dancers Errors. Number of Dancers In Error is less then 4!");
+ }
+ }
+ public void UpdateBTSRs(List<bool> updates)
+ {
+ if(!UpdateCollection(BTSRs, updates))
+ {
+ LogManager.Log("Error in display BTSRs Errors. Number of BTSRs In Error is less then 4!");
+ }
+ }
+
+ private bool UpdateCollection(ObservableCollection<MachineOverviewErrorItem> collection, List<bool> updates )
+ {
+ if (collection.Count == updates.Count)
+ {
+ for (int i = 0; i < collection.Count; i++)
+ {
+ collection[i].IsErrorState = updates[i];
+ }
+ return true;
+ }
+ return false;
+
+ }
+ }
+}
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/Models/MachineOverviewItem.cs b/Software/Visual_Studio/PPC/Tango.PPC.UI/Models/MachineOverviewItem.cs
index ded7e33e8..42f6bd180 100644
--- a/Software/Visual_Studio/PPC/Tango.PPC.UI/Models/MachineOverviewItem.cs
+++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/Models/MachineOverviewItem.cs
@@ -17,6 +17,13 @@ namespace Tango.PPC.UI.Models
set { _displayValue = value; RaisePropertyChangedAuto(); }
}
+ private String _displayMaxValue;
+ public String DisplayMaxValue
+ {
+ get { return _displayMaxValue; }
+ set { _displayMaxValue = value; RaisePropertyChangedAuto(); }
+ }
+
private String _status;
public String Status
{
@@ -53,6 +60,7 @@ namespace Tango.PPC.UI.Models
DisplayValue = "--";
Value = 0;
MaxValue = 100;
+ DisplayMaxValue = "";
}
}
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/Models/MachineOverviewModel.cs b/Software/Visual_Studio/PPC/Tango.PPC.UI/Models/MachineOverviewModel.cs
index bd34122c6..beba47246 100644
--- a/Software/Visual_Studio/PPC/Tango.PPC.UI/Models/MachineOverviewModel.cs
+++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/Models/MachineOverviewModel.cs
@@ -56,7 +56,7 @@ namespace Tango.PPC.UI.Models
public void Update(StartDiagnosticsResponse diagnostics, Rml rml, ProcessParametersTable processParameters)
{
//Dryer Zone 3
- var dryerZone3State = diagnostics.HeatersStates.FirstOrDefault(x => x.HeaterType == HeaterType.HeaterZone3);
+ var dryerZone3State = diagnostics.HeatersStates.FirstOrDefault(x => x.HeaterType == HeaterType.EDryerHeater3);
UpdateHeaterItem(DryerZone3, dryerZone3State);
//Dryer Air
@@ -70,11 +70,29 @@ namespace Tango.PPC.UI.Models
UpdateHeaterItem(Tunnel, tunnelState);
//Pumps Pressure
- if (diagnostics.Monitors.EuInkLinesPressure.Count > 0 && diagnostics.Monitors.EuInkLinesPressure.Any(x => x.Data.Count > 0))
- {
- var pumpsPressuerValue = diagnostics.Monitors.EuInkLinesPressure.SelectMany(x => x.Data).Max();
- UpdatePumpsPressureItem(pumpsPressuerValue);
- }
+
+ //EuDispenser1Pressure
+ List<double> EuDispensersPressure = new List<double>();
+ var EuDispenser1PressureValue = diagnostics.Monitors.EuDispenser1Pressure.FirstOrDefault();
+ EuDispensersPressure.Add(EuDispenser1PressureValue);
+ var EuDispenser2PressureValue = diagnostics.Monitors.EuDispenser2Pressure.FirstOrDefault();
+ EuDispensersPressure.Add(EuDispenser2PressureValue);
+ var EuDispenser3PressureValue = diagnostics.Monitors.EuDispenser3Pressure.FirstOrDefault();
+ EuDispensersPressure.Add(EuDispenser3PressureValue);
+ var EuDispenser4PressureValue = diagnostics.Monitors.EuDispenser4Pressure.FirstOrDefault();
+ EuDispensersPressure.Add(EuDispenser4PressureValue);
+ var EuDispenser5PressureValue = diagnostics.Monitors.EuDispenser5Pressure.FirstOrDefault();
+ EuDispensersPressure.Add(EuDispenser5PressureValue);
+ var EuDispenser6PressureValue = diagnostics.Monitors.EuDispenser6Pressure.FirstOrDefault();
+ EuDispensersPressure.Add(EuDispenser6PressureValue);
+ var EuDispenser7PressureValue = diagnostics.Monitors.EuDispenser7Pressure.FirstOrDefault();
+ EuDispensersPressure.Add(EuDispenser7PressureValue);
+ var EuDispenser8PressureValue = diagnostics.Monitors.EuDispenser8Pressure.FirstOrDefault();
+ EuDispensersPressure.Add(EuDispenser8PressureValue);
+
+ var pumpsPressuerValue = EuDispensersPressure.Max();// diagnostics.Monitors.EuInkLinesPressure.SelectMany(x => x.Data).Max();
+ UpdatePumpsPressureItem(pumpsPressuerValue);
+
//Lubricant
var lubricantValue = diagnostics.Monitors.EuLubricantCurrent.FirstOrDefault();
@@ -92,23 +110,33 @@ namespace Tango.PPC.UI.Models
{
item.Status = "Heating Up";
item.Color = Colors.Orange;
- item.DisplayValue = $"{state.CurrentValue} / {state.SetPoint}";
+ item.DisplayValue = $"{state.CurrentValue.ToString("N1")}";
+ item.DisplayMaxValue = $"/{state.SetPoint}";
item.MaxValue = state.SetPoint;
item.Value = state.CurrentValue;
}
- else if (state.SetPoint == 0 || (state.CurrentValue >= (state.SetPoint - 10) || state.CurrentValue <= (state.SetPoint + 10)))
+ else if (state.SetPoint == 0 || (state.CurrentValue >= (state.SetPoint - 10) && state.CurrentValue <= (state.SetPoint + 10)))
{
item.Status = "Operational";
item.Color = Colors.Green;
item.DisplayValue = $" {state.SetPoint}";
- item.MaxValue = state.SetPoint;
+ item.DisplayMaxValue = "";
+ if(state.SetPoint == 0 && state.CurrentValue == 0)
+ {
+ item.MaxValue = 10;
+ }
+ else
+ {
+ item.MaxValue = state.SetPoint;
+ }
item.Value = state.CurrentValue;
}
else if (!state.IsRampingUp && (state.CurrentValue < (state.SetPoint - 10) || state.CurrentValue > (state.SetPoint + 10)))
{
item.Status = "Over-temperature";
item.Color = Colors.Red;
- item.DisplayValue = $"{state.CurrentValue} / {state.SetPoint}";
+ item.DisplayValue = $"{state.CurrentValue.ToString("N1")}";
+ item.DisplayMaxValue = $"/{state.SetPoint}";
item.MaxValue = state.SetPoint;
item.Value = state.CurrentValue > state.SetPoint? state.SetPoint : state.CurrentValue;
}
@@ -117,6 +145,7 @@ namespace Tango.PPC.UI.Models
item.Color = Colors.Gray;
item.MaxValue = 100;
item.Value = 0;
+ item.DisplayMaxValue = "";
}
}
}
@@ -127,13 +156,13 @@ namespace Tango.PPC.UI.Models
{
DryerAir.Status = "Heating Up";
DryerAir.Color = Colors.Orange;
- DryerAir.DisplayValue = $"{currentvalue}";
+ DryerAir.DisplayValue = currentvalue.ToString("N1");
}
else if (currentvalue >= DryerAirMaxValue)
{
DryerAir.Status = "Operational";
DryerAir.Color = Colors.Green;
- DryerAir.DisplayValue = $"{currentvalue}";
+ DryerAir.DisplayValue = currentvalue.ToString("N1");
}
DryerAir.Value = currentvalue;
}
@@ -144,13 +173,13 @@ namespace Tango.PPC.UI.Models
{
PumpsPressure.Status = "Overpressure";
PumpsPressure.Color = Colors.Red;
- PumpsPressure.DisplayValue = maxValue.ToString();
+ PumpsPressure.DisplayValue = maxValue.ToString("N1");
}
else
{
PumpsPressure.Status = "Operational";
PumpsPressure.Color = Colors.Green;
- PumpsPressure.DisplayValue = maxValue.ToString();
+ PumpsPressure.DisplayValue = maxValue.ToString("N1");
}
PumpsPressure.Value = maxValue;
}
@@ -170,13 +199,16 @@ namespace Tango.PPC.UI.Models
return;
}
Lubricant.Status = "Active";
- Lubricant.DisplayValue = lubricantValue.ToString();
+ Lubricant.DisplayValue = lubricantValue.ToString("N1");
Lubricant.Color = Colors.Green;
+ return;
+ }
+ else
+ {
+ Lubricant.Status = "NotActive";
+ Lubricant.DisplayValue = "None";
+ Lubricant.Color = Colors.Gray;
}
-
- Lubricant.Status = "NotActive";
- Lubricant.DisplayValue = "None";
- Lubricant.Color = Colors.Gray;
}
}
}
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/Properties/AssemblyInfo.cs b/Software/Visual_Studio/PPC/Tango.PPC.UI/Properties/AssemblyInfo.cs
index 4940201f0..16a8c01b9 100644
--- a/Software/Visual_Studio/PPC/Tango.PPC.UI/Properties/AssemblyInfo.cs
+++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/Properties/AssemblyInfo.cs
@@ -8,4 +8,4 @@ using System.Windows;
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("Tango PPC Application")]
-[assembly: AssemblyVersion("2.0.4.0")]
+[assembly: AssemblyVersion("2.0.8.0")]
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/Resources/Graphs.xaml b/Software/Visual_Studio/PPC/Tango.PPC.UI/Resources/Graphs.xaml
new file mode 100644
index 000000000..67047cf1f
--- /dev/null
+++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/Resources/Graphs.xaml
@@ -0,0 +1,8 @@
+<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+ xmlns:local="clr-namespace:Tango.PPC.UI.Resources">
+ <ResourceDictionary.MergedDictionaries>
+ <ResourceDictionary Source="pack://application:,,,/Tango.PPC.UI;component/Graphs/RealTimeGraph.xaml" />
+ </ResourceDictionary.MergedDictionaries>
+
+</ResourceDictionary> \ No newline at end of file
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/Tango.PPC.UI.csproj b/Software/Visual_Studio/PPC/Tango.PPC.UI/Tango.PPC.UI.csproj
index 51600b0e8..e2d447be5 100644
--- a/Software/Visual_Studio/PPC/Tango.PPC.UI/Tango.PPC.UI.csproj
+++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/Tango.PPC.UI.csproj
@@ -176,6 +176,7 @@
<Compile Include="Converters\ProgressLengthSpoolConverter.cs" />
<Compile Include="Converters\ProgressUnitSpoolConverter.cs" />
<Compile Include="Converters\ProgressWeightSpoolConverter.cs" />
+ <Compile Include="Converters\StatisticTabToVisibilityConverter.cs" />
<Compile Include="Dialogs\BitResultsView.xaml.cs">
<DependentUpon>BitResultsView.xaml</DependentUpon>
</Compile>
@@ -236,11 +237,15 @@
</Compile>
<Compile Include="Dialogs\FirmwareUpgradeFromFileViewVM.cs" />
<Compile Include="Dialogs\UpdateFromFileViewVM.cs" />
+ <Compile Include="Graphs\GraphHelper.cs" />
+ <Compile Include="Graphs\RealTimeGraph.cs" />
<Compile Include="Helpers\DpiHelper.cs" />
<Compile Include="InternalModule.cs" />
+ <Compile Include="Models\MachineOverviewErrorStates.cs" />
<Compile Include="Models\MachineOverviewItem.cs" />
<Compile Include="Models\MachineOverviewModel.cs" />
<Compile Include="Models\JerricanLevelModel.cs" />
+ <Compile Include="Models\MachineOverviewErrorItem.cs" />
<Compile Include="Modules\DefaultPPCModuleLoader.cs" />
<Compile Include="Navigation\EurekaNavigationManager.cs" />
<Compile Include="Navigation\DefaultNavigationManager.cs" />
@@ -407,6 +412,10 @@
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
+ <Page Include="Graphs\RealTimeGraph.xaml">
+ <SubType>Designer</SubType>
+ <Generator>MSBuild:Compile</Generator>
+ </Page>
<Page Include="MainWindow.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
@@ -431,6 +440,10 @@
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
+ <Page Include="Resources\Graphs.xaml">
+ <SubType>Designer</SubType>
+ <Generator>MSBuild:Compile</Generator>
+ </Page>
<Page Include="Resources\Styles.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
@@ -625,6 +638,11 @@
<Resource Include="Images\Overview Icons\Feeder4.png" />
<Resource Include="Manifests\eureka_debug.xml" />
<Resource Include="Images\Overview Icons\JericanRemoved.png" />
+ <Resource Include="Images\Overview Icons\motor.png" />
+ <Resource Include="Images\Overview Icons\pressure.png" />
+ <Resource Include="Images\Overview Icons\pr_data.png" />
+ <Resource Include="Images\Overview Icons\temperature.png" />
+ <Resource Include="Images\screw.png" />
<Content Include="Intro.wmv" />
<Content Include="Manifests\release.xml" />
<Content Include="Manifests\debug.xml" />
@@ -646,6 +664,14 @@
<None Include="App.config" />
</ItemGroup>
<ItemGroup>
+ <ProjectReference Include="..\..\SideChains\RealTimeGraphX-master\RealTimeGraphX.WPF\RealTimeGraphX.WPF.csproj">
+ <Project>{6b9774f7-960d-438e-ad81-c6b9be328d50}</Project>
+ <Name>RealTimeGraphX.WPF</Name>
+ </ProjectReference>
+ <ProjectReference Include="..\..\SideChains\RealTimeGraphX-master\RealTimeGraphX\RealTimeGraphX.csproj">
+ <Project>{f13a489c-80ee-4cd0-bdd4-92d959215646}</Project>
+ <Name>RealTimeGraphX</Name>
+ </ProjectReference>
<ProjectReference Include="..\..\Tango.AnimatedGif\Tango.AnimatedGif.csproj">
<Project>{d129789c-3096-4d0b-8dd7-fe24a4df4b21}</Project>
<Name>Tango.AnimatedGif</Name>
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/ViewModels/MachineStatusViewVM.cs b/Software/Visual_Studio/PPC/Tango.PPC.UI/ViewModels/MachineStatusViewVM.cs
index 828047ccf..103084e11 100644
--- a/Software/Visual_Studio/PPC/Tango.PPC.UI/ViewModels/MachineStatusViewVM.cs
+++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/ViewModels/MachineStatusViewVM.cs
@@ -20,11 +20,27 @@ using System.Timers;
using System.Windows.Threading;
using System.Diagnostics;
using Tango.PMR.Printing;
+using System.ComponentModel;
+using RealTimeGraphX.WPF;
+using RealTimeGraphX.DataPoints;
+using Tango.PPC.UI.Graphs;
namespace Tango.PPC.UI.ViewModels
{
public class MachineStatusViewVM : PPCViewModel
{
+ public enum StatisticTab
+ {
+ [Description("Production Data")]
+ Productiondata = 0,
+ [Description("Temperature")]
+ Temperature = 1,
+ [Description("Pressure")]
+ Pressure = 2,
+ [Description("Motor")]
+ Motor = 3
+ }
+
#region Properties
[TangoInject]
@@ -45,6 +61,7 @@ namespace Tango.PPC.UI.ViewModels
if (_job == null)
IsDyeingProcess = false;
RaisePropertyChangedAuto();
+ InvalidateRelayCommands();
}
}
@@ -185,6 +202,13 @@ namespace Tango.PPC.UI.ViewModels
set { _midTankLevels = value; RaisePropertyChangedAuto(); }
}
+ private JerricanLevelModel _midTankLubLevel;
+ public JerricanLevelModel MidTankLubLevel
+ {
+ get { return _midTankLubLevel; }
+ set { _midTankLubLevel = value; RaisePropertyChangedAuto(); }
+ }
+
public MachineOverviewModel OverviewModel { get; set; }
private bool _isDisplayJobOutline;
@@ -206,7 +230,84 @@ namespace Tango.PPC.UI.ViewModels
get { return _jobOutlineTicket; }
set { _jobOutlineTicket = value; RaisePropertyChangedAuto(); }
}
-
+
+ public MachineOverviewErrorStates MachineErrorStates { get; set; }
+
+ private bool _isExpandedNotificatios;
+
+ public bool IsExpandedNotifications
+ {
+ get { return _isExpandedNotificatios; }
+ set {
+ _isExpandedNotificatios = value;
+ RaisePropertyChangedAuto();}
+ }
+
+ private int _selectedStatisticTabIndex;
+ /// <summary>
+ /// Gets or sets the index of the selected category.
+ /// </summary>
+ public int SelectedStatisticTabIndex
+ {
+ get { return _selectedStatisticTabIndex; }
+ set
+ {
+ if (_selectedStatisticTabIndex != value)
+ {
+ _selectedStatisticTabIndex = value;
+ RaisePropertyChangedAuto();
+ switch (_selectedStatisticTabIndex)
+ {
+ case 0:
+ {
+ SelectedStatisticTab = StatisticTab.Productiondata;
+ break;
+ }
+ case 1:
+ {
+ SelectedStatisticTab = StatisticTab.Temperature;
+ break;
+ }
+ case 2:
+ {
+ SelectedStatisticTab = StatisticTab.Pressure;
+ break;
+ }
+ case 3:
+ {
+ SelectedStatisticTab = StatisticTab.Motor;
+ break;
+ }
+ }
+ }
+ }
+ }
+
+ private StatisticTab _selectedStatisticTab;
+ /// <summary>
+ /// Gets or sets the selected category.
+ /// </summary>
+ ///
+ public StatisticTab SelectedStatisticTab
+ {
+ get
+ {
+ return _selectedStatisticTab;
+ }
+ set
+ {
+ if (_selectedStatisticTab != value)
+ {
+ _selectedStatisticTab = value;
+ RaisePropertyChangedAuto();
+ }
+ _selectedStatisticTabIndex = _selectedStatisticTab.ToInt32();
+ RaisePropertyChanged(nameof(SelectedStatisticTabIndex));
+ }
+ }
+
+ public WpfGraphController<DateTimeDataPoint, DoubleDataPoint> JobController { get; set; }
+
#endregion
#region Commands
@@ -241,7 +342,7 @@ namespace Tango.PPC.UI.ViewModels
StopCommand = new RelayCommand(StopJob, () => CanStopped());
AbortCommand = new RelayCommand(AbortJob, () => CanStopped());
- GoToJobCommand = new RelayCommand(GoToJob);
+ GoToJobCommand = new RelayCommand(GoToJob, () => IsEnableGoToJob());
JobStatusViewCommand = new RelayCommand(JobStatusView);
OverviewViewCommand = new RelayCommand(OverviewView);
ClearAllNotificationsCommand = new RelayCommand(ClearAllNotifications);
@@ -254,17 +355,32 @@ namespace Tango.PPC.UI.ViewModels
IsWeghtView = false;
OverviewModel = new MachineOverviewModel();
+ MachineErrorStates = new MachineOverviewErrorStates();
+
+ IsExpandedNotifications = false;
+ SelectedStatisticTabIndex = 0;
+
+ JobController = CreateController(CreateSeries("Total", GraphHelper.GraphColor.Green));
}
public override void OnApplicationReady()
{
base.OnApplicationReady();
+ EventLogger.EventReceived += EventLogger_EventReceived;
- MidTankLevels = MachineProvider.Machine.Configuration.NoneEmptyIdsPacks.Where(x => x.MidTankType.HasLevelMeasure || x.MidTankType.Type == MidTankTypes.LubricantMidTank).OrderBy(x => x.PackIndex).Select(x => new JerricanLevelModel()
+ MidTankLevels = MachineProvider.Machine.Configuration.NoneEmptyIdsPacks.Where(x => x.MidTankType.HasLevelMeasure ).OrderBy(x => x.PackIndex).Select(x => new JerricanLevelModel()
{
Max = x.MidTankType.LiterCapacity,
IDSPack = x,
- }).OrderBy(y => y.IDSPack.LiquidType.PreferredIndex).ToList();
+ }).OrderBy(y => y.IDSPack.LiquidType.Type).ToList();
+ var LubLevel = MachineProvider.Machine.Configuration.NoneEmptyIdsPacks.Where(x => x.MidTankType.Type == MidTankTypes.LubricantMidTank).FirstOrDefault();
+
+ MidTankLubLevel = new JerricanLevelModel();
+ if(LubLevel != null)
+ {
+ MidTankLubLevel.Max = LubLevel.MidTankType.LiterCapacity;
+ MidTankLubLevel.IDSPack = LubLevel;
+ };
MachineProvider.MachineOperator.MachineStatusChanged += MachineOperator_MachineStatusChanged;
@@ -272,9 +388,21 @@ namespace Tango.PPC.UI.ViewModels
#region Events
- private void MachineOperator_MachineStatusChanged(object sender, MachineStatus status)
+ private void EventLogger_EventReceived(object sender, MachinesEvent ev)
+ {
+ InvokeUI(() =>
+ {
+ if (ev.Category == EventTypeCategories.Error || ev.Category == EventTypeCategories.Critical)
+ {
+ IsExpandedNotifications = true;
+ }
+ });
+ }
+
+ private void MachineOperator_MachineStatusChanged(object sender, MachineStatus status)
{
UpdateMidTankLevels(status);
+ UpdateMachineStatusErrors(status);
}
private void UpdateMidTankLevels(MachineStatus status)
{
@@ -282,7 +410,15 @@ namespace Tango.PPC.UI.ViewModels
{
foreach (var item in status.IDSPacksLevels)
{
- var model = MidTankLevels.SingleOrDefault(x => x.IDSPack.PackIndex == item.Index);
+ JerricanLevelModel model = null;
+ if (item.Index == 8)//lub
+ {
+ model = MidTankLubLevel;
+
+ }
+ else {
+ model = MidTankLevels.SingleOrDefault(x => x.IDSPack.PackIndex == item.Index);
+ }
if (model != null)
{
@@ -348,6 +484,16 @@ namespace Tango.PPC.UI.ViewModels
}
}
+ private void UpdateMachineStatusErrors(MachineStatus status)
+ {
+ var windersInError = status.WindersInError.ToList();// to test
+ MachineErrorStates.UpdateWinders(windersInError);
+ var dansersInError = status.DancersInError.ToList();
+ MachineErrorStates.UpdateDancers(dansersInError);
+ var btsrsInErrors = status.BtsrsInError.ToList();
+ MachineErrorStates.UpdateBTSRs(btsrsInErrors);
+ }
+
private void MachineOperator_InkFillingStatusChanged(object sender, InkFillingStatusChangedEventArgs e)
{
//foreach (var cartridge in e.Status.CartridgesStatuses.Where(x => x.Cartridge.Slot != CartridgeSlot.Ink))
@@ -453,6 +599,11 @@ namespace Tango.PPC.UI.ViewModels
#region Methods
+ private bool IsEnableGoToJob()
+ {
+ return Job != null && _handler != null;
+ }
+
private void GoToJob()
{
@@ -545,6 +696,35 @@ namespace Tango.PPC.UI.ViewModels
}
}
+ private WpfGraphController<DateTimeDataPoint, DoubleDataPoint> CreateController(params WpfGraphDataSeries[] seriesCollection)
+ {
+ var controller = new WpfGraphController<DateTimeDataPoint, DoubleDataPoint>();
+
+ foreach (var series in seriesCollection)
+ {
+ controller.DataSeriesCollection.Add(series);
+ }
+
+ controller.Range.AutoY = true;
+ controller.Range.MaximumY = 100;
+ controller.Range.MinimumY = 0;
+ controller.Range.MaximumX = new DateTime(0).AddMinutes(30);
+
+ controller.RefreshRate = TimeSpan.FromMilliseconds(300000);//5 min
+
+ return controller;
+ }
+
+ private WpfGraphDataSeries CreateSeries(String name, GraphHelper.GraphColor fill)
+ {
+ WpfGraphDataSeries series = new WpfGraphDataSeries();
+ series.Name = name;
+ series.Fill = GraphHelper.GetGraphBrush(fill);
+ series.StrokeThickness = 1;
+ series.Stroke = GraphHelper.GetGraphStrokeColor();
+ return series;
+ }
+
#endregion
}
}
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/Views/LayoutEurekaView.xaml b/Software/Visual_Studio/PPC/Tango.PPC.UI/Views/LayoutEurekaView.xaml
index 84d1108f2..049f2268d 100644
--- a/Software/Visual_Studio/PPC/Tango.PPC.UI/Views/LayoutEurekaView.xaml
+++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/Views/LayoutEurekaView.xaml
@@ -61,7 +61,7 @@
Foreground="{StaticResource TangoLightForegroundBrush}" Background="{StaticResource TangoMidAccentBrush}" CornerRadius="18" Margin="0 8 0 8">
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center">
- <touch:TouchIcon Icon="ArrowLeft" Background="Transparent" Width="30" BorderThickness="0">
+ <touch:TouchIcon Icon="ArrowLeft" Background="Transparent" Width="30" BorderThickness="0" HorizontalAlignment="Center" Margin="-8 0 0 0">
<touch:TouchIcon.Style>
<Style TargetType="touch:TouchIcon" BasedOn="{StaticResource {x:Type touch:TouchIcon}}">
<Style.Triggers>
@@ -72,7 +72,7 @@
</Style>
</touch:TouchIcon.Style>
</touch:TouchIcon>
- <TextBlock Background="Transparent" FontSize="{StaticResource TangoComboBoxItemFontSize}" VerticalAlignment="Center" Foreground="{StaticResource TangoLightForegroundBrush}" Margin="0 0 0 0" >Back</TextBlock>
+ <TextBlock HorizontalAlignment="Center" Background="Transparent" FontSize="{StaticResource TangoComboBoxItemFontSize}" VerticalAlignment="Center" Foreground="{StaticResource TangoLightForegroundBrush}" Margin="5 0 0 0" >Back</TextBlock>
</StackPanel>
</touch:TouchButton>
@@ -85,7 +85,7 @@
<touch:TouchButton Height="45" Margin="0 0 0 0" Padding="10 0" Command="{Binding RelativeSource={RelativeSource AncestorType=UserControl},Path=DataContext.ModuleNavigationCommand}" CommandParameter="{Binding Name}" >
<StackPanel Orientation="Horizontal" HorizontalAlignment="Left">
<Image VerticalAlignment="Center" Source="{Binding Image}" Width="20" Height="20"></Image>
- <TextBlock VerticalAlignment="Center" Margin="20 0 0 0" Text="{Binding Name}" FontSize="{StaticResource TangoComboBoxItemFontSize}" FontWeight="Light"></TextBlock>
+ <TextBlock VerticalAlignment="Center" Margin="20 0 0 0" Text="{Binding Name}" FontSize="{StaticResource TangoDataGridHeaderFontSize}" FontWeight="Light"></TextBlock>
</StackPanel>
<touch:TouchButton.Style>
<Style TargetType="touch:TouchButton" BasedOn="{StaticResource TangoFlatButton}" >
@@ -119,7 +119,7 @@
<touch:TouchButton Style="{StaticResource TangoFlatButton}" Padding="10 0" Height="45" Foreground="{StaticResource TangoDarkForegroundBrush}" Command="{Binding UpdateCommand}">
<StackPanel Orientation="Horizontal" HorizontalAlignment="Left">
<Image Source="/Images/Menu/update.png" VerticalAlignment="Center" Width="20" Height="20"></Image>
- <TextBlock VerticalAlignment="Center" Margin="20 0 0 0" Foreground="{StaticResource TangoLightForegroundBrush}" FontSize="{StaticResource TangoComboBoxItemFontSize}" FontWeight="Light">Update</TextBlock>
+ <TextBlock VerticalAlignment="Center" Margin="20 0 0 0" Foreground="{StaticResource TangoLightForegroundBrush}" FontSize="{StaticResource TangoDataGridHeaderFontSize}" FontWeight="Light">Update</TextBlock>
</StackPanel>
</touch:TouchButton>
</Border>
@@ -129,7 +129,7 @@
<touch:TouchButton Style="{StaticResource TangoFlatButton}" Padding="10 0" Height="45" Foreground="{StaticResource TangoDarkForegroundBrush}" Command="{Binding PowerCommand}">
<StackPanel Orientation="Horizontal" HorizontalAlignment="Left">
<Image Source="/Images/menu/power.png" VerticalAlignment="Center" Width="20" Height="20" ></Image>
- <TextBlock VerticalAlignment="Center" Margin="20 0 0 0" Foreground="{StaticResource TangoLightForegroundBrush}" FontSize="{StaticResource TangoComboBoxItemFontSize}" FontWeight="Light">Power</TextBlock>
+ <TextBlock VerticalAlignment="Center" Margin="20 0 0 0" Foreground="{StaticResource TangoLightForegroundBrush}" FontSize="{StaticResource TangoDataGridHeaderFontSize}" FontWeight="Light">Power</TextBlock>
</StackPanel>
</touch:TouchButton>
</Border>
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/Views/MachineStatusView.xaml b/Software/Visual_Studio/PPC/Tango.PPC.UI/Views/MachineStatusView.xaml
index 666fffe72..9e766fffc 100644
--- a/Software/Visual_Studio/PPC/Tango.PPC.UI/Views/MachineStatusView.xaml
+++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/Views/MachineStatusView.xaml
@@ -12,6 +12,7 @@
xmlns:localConverters="clr-namespace:Tango.PPC.UI.Converters"
xmlns:global="clr-namespace:Tango.PPC.UI"
xmlns:models="clr-namespace:Tango.PPC.UI.Models"
+ xmlns:graphs="clr-namespace:Tango.PPC.UI.Graphs"
xmlns:local="clr-namespace:Tango.PPC.UI.Views"
mc:Ignorable="d"
d:DesignHeight="1280" d:DesignWidth="932" d:DataContext="{d:DesignInstance Type=vm:MachineStatusViewVM, IsDesignTimeCreatable=False}" DataContext="{x:Static global:ViewModelLocator.MachineStatusViewVM}">
@@ -25,6 +26,7 @@
<localConverters:LiquidTypeToBrushConverter x:Key="LiquidTypeToBrushConverter"/>
<localConverters:MidTankLevelToElementRectConverter x:Key="MidTankLevelToElementRectConverter"/>
<localConverters:ProgressUnitSpoolConverter x:Key="ProgressUnitSpoolConverter"/>
+ <localConverters:StatisticTabToVisibilityConverter x:Key="StatisticTabToVisibilityConverter"/>
<Style x:Key="LinkRoundButtonStyle" TargetType="{x:Type touch:TouchButton}">
<Setter Property="Background" Value="{StaticResource TangoMidAccentBrush}"></Setter>
@@ -162,25 +164,110 @@
</Path>
</Grid>
- <UniformGrid Rows="4" Columns="1" Margin="0 15 0 15" HorizontalAlignment="Center">
- <Rectangle Width="10" Height="2" Stroke="{StaticResource TangoTextWatermarkBrush}"></Rectangle>
- <Rectangle Width="10" Height="2" Stroke="{StaticResource TangoTextWatermarkBrush}"></Rectangle>
- <Rectangle Width="10" Height="2" Stroke="{StaticResource TangoTextWatermarkBrush}"></Rectangle>
- <Rectangle Width="10" Height="2" Stroke="{StaticResource TangoTextWatermarkBrush}"></Rectangle>
+ <UniformGrid Rows="4" Columns="1" Margin="0 12 0 12" HorizontalAlignment="Center">
+ <Rectangle Width="6" Height="2" Fill="{StaticResource TangoKeyboardKeyDarkBrush}"></Rectangle>
+ <Rectangle Width="6" Height="2" Fill="{StaticResource TangoKeyboardKeyDarkBrush}"></Rectangle>
+ <Rectangle Width="6" Height="2" Fill="{StaticResource TangoKeyboardKeyDarkBrush}"></Rectangle>
+ <Rectangle Width="6" Height="2" Fill="{StaticResource TangoKeyboardKeyDarkBrush}"></Rectangle>
</UniformGrid>
- <Image Stretch="Fill" VerticalAlignment="Top" Width="24" Height="24" Margin="0 4 0 0">
+ <Image Stretch="Fill" VerticalAlignment="Top" Margin="0 4 0 0">
<Image.Style>
<Style TargetType="{x:Type Image}" >
<Setter Property="Source" Value="{x:Null}"/>
+ <Setter Property="Image.Width" Value="24"/>
+ <Setter Property="Image.Height" Value="24"/>
<Style.Triggers>
<DataTrigger Binding="{Binding IsMidTankLow}" Value="True">
<Setter Property="Source" Value="../Images/Overview Icons/Warning.png"/>
</DataTrigger>
<DataTrigger Binding="{Binding FillingTimeoutError}" Value="True">
<Setter Property="Source" Value="../Images/Overview Icons/Error.png"/>
+ <Setter Property="Image.Width" Value="21"/>
+ <Setter Property="Image.Height" Value="26"/>
</DataTrigger>
<DataTrigger Binding="{Binding MidTankEmpty}" Value="True">
<Setter Property="Source" Value="../Images/Overview Icons/Error.png"/>
+ <Setter Property="Image.Width" Value="21"/>
+ <Setter Property="Image.Height" Value="26"/>
+ </DataTrigger>
+ <DataTrigger Binding="{Binding MidTankRefillPumpActive}" Value="True" >
+ <Setter Property="Source" Value="../Images/Overview Icons/UpdateInk.png"/>
+ </DataTrigger>
+ <DataTrigger Binding="{Binding JerricanPresent}" Value="False" >
+ <Setter Property="Source" Value="../Images/Overview Icons/JericanRemoved.png"/>
+ </DataTrigger>
+ </Style.Triggers>
+ </Style>
+ </Image.Style>
+ </Image>
+ </Grid>
+ </DockPanel>
+ </DataTemplate>
+
+ <DataTemplate x:Key="LubLiquidBox" DataType="{x:Type models:JerricanLevelModel}">
+ <DockPanel>
+ <TextBlock DockPanel.Dock="Bottom" Text="Lub" HorizontalAlignment="Center" Margin="0 8 0 0"></TextBlock>
+ <Grid Height="15" DockPanel.Dock="Top">
+ <TextBlock DockPanel.Dock="Top" Height="15" VerticalAlignment="Top" TextAlignment="Center" Visibility="{Binding HasRemainingTimeoutError,Converter={StaticResource BooleanToVisibilityConverter}}" Text="{Binding RemainingTimeoutError, StringFormat='{}{0:hh}:{0:mm}m', FallbackValue=00:00}" HorizontalAlignment="Center" FontSize="{StaticResource TangoSmallFontSizeBar}" ></TextBlock>
+ </Grid>
+ <Grid >
+ <Grid ClipToBounds="True" HorizontalAlignment="Center">
+ <Path Fill="{Binding Path=IDSPack.LiquidType, Converter={StaticResource LiquidTypeToBrushConverter}}" StrokeThickness="1.5" >
+ <Path.Resources>
+ <sys:Double x:Key="RectWidth">30</sys:Double>
+ <sys:Double x:Key="RectHeight">88</sys:Double>
+ </Path.Resources>
+ <Path.Data>
+ <CombinedGeometry GeometryCombineMode="Intersect">
+ <CombinedGeometry.Geometry1>
+ <StaticResource ResourceKey="InkContainerPath"/>
+ </CombinedGeometry.Geometry1>
+ <CombinedGeometry.Geometry2>
+ <!--Rect="1,30 30,88"-->
+ <RectangleGeometry >
+ <RectangleGeometry.Rect>
+ <MultiBinding Converter="{StaticResource MidTankLevelToElementRectConverter}">
+ <Binding Source="{StaticResource RectHeight}"/>
+ <Binding Source="{StaticResource RectWidth}"/>
+ <Binding Path="Level" />
+ <Binding Path="IDSPack.MidTankType.LiterCapacity" />
+ </MultiBinding>
+ </RectangleGeometry.Rect>
+ </RectangleGeometry>
+ </CombinedGeometry.Geometry2>
+ </CombinedGeometry>
+ </Path.Data>
+
+ </Path>
+ <Path Stroke="{StaticResource TangoTextWatermarkBrush}" Fill="Transparent" StrokeThickness="1" Data="{StaticResource InkContainerPath}">
+
+ </Path>
+ </Grid>
+ <UniformGrid Rows="4" Columns="1" Margin="0 12 0 12" HorizontalAlignment="Center">
+ <Rectangle Width="6" Height="2" Fill="{StaticResource TangoKeyboardKeyDarkBrush}"></Rectangle>
+ <Rectangle Width="6" Height="2" Fill="{StaticResource TangoKeyboardKeyDarkBrush}"></Rectangle>
+ <Rectangle Width="6" Height="2" Fill="{StaticResource TangoKeyboardKeyDarkBrush}"></Rectangle>
+ <Rectangle Width="6" Height="2" Fill="{StaticResource TangoKeyboardKeyDarkBrush}"></Rectangle>
+ </UniformGrid>
+ <Image Stretch="Fill" VerticalAlignment="Top" Margin="0 4 0 0">
+ <Image.Style>
+ <Style TargetType="{x:Type Image}" >
+ <Setter Property="Source" Value="{x:Null}"/>
+ <Setter Property="Image.Width" Value="24"/>
+ <Setter Property="Image.Height" Value="24"/>
+ <Style.Triggers>
+ <DataTrigger Binding="{Binding IsMidTankLow}" Value="True">
+ <Setter Property="Source" Value="../Images/Overview Icons/Warning.png"/>
+ </DataTrigger>
+ <DataTrigger Binding="{Binding FillingTimeoutError}" Value="True">
+ <Setter Property="Source" Value="../Images/Overview Icons/Error.png"/>
+ <Setter Property="Image.Width" Value="21"/>
+ <Setter Property="Image.Height" Value="26"/>
+ </DataTrigger>
+ <DataTrigger Binding="{Binding MidTankEmpty}" Value="True">
+ <Setter Property="Source" Value="../Images/Overview Icons/Error.png"/>
+ <Setter Property="Image.Width" Value="21"/>
+ <Setter Property="Image.Height" Value="26"/>
</DataTrigger>
<DataTrigger Binding="{Binding MidTankRefillPumpActive}" Value="True" >
<Setter Property="Source" Value="../Images/Overview Icons/UpdateInk.png"/>
@@ -230,18 +317,43 @@
</Path>
<Path Stroke="{StaticResource TangoTextWatermarkBrush}" Fill="Transparent" StrokeThickness="1" Data="{StaticResource InkContainerPath}"/>
</Grid>
- <UniformGrid Rows="4" Columns="1" Margin="0 15 0 15" HorizontalAlignment="Center">
- <Rectangle Stroke="{StaticResource TangoTextWatermarkBrush}" Width="10" Height="2" ></Rectangle>
- <Rectangle Width="10" Height="2" Stroke="{StaticResource TangoTextWatermarkBrush}"></Rectangle>
- <Rectangle Width="10" Height="2" Stroke="{StaticResource TangoTextWatermarkBrush}"></Rectangle>
- <Rectangle Width="10" Height="2" Stroke="{StaticResource TangoTextWatermarkBrush}"></Rectangle>
+ <UniformGrid Rows="4" Columns="1" Margin="0 12 0 12" HorizontalAlignment="Center">
+ <Rectangle Fill="{StaticResource TangoKeyboardKeyDarkBrush}" Width="6" Height="2" ></Rectangle>
+ <Rectangle Width="6" Height="2" Fill="{StaticResource TangoKeyboardKeyDarkBrush}"></Rectangle>
+ <Rectangle Width="6" Height="2" Fill="{StaticResource TangoKeyboardKeyDarkBrush}"></Rectangle>
+ <Rectangle Width="6" Height="2" Fill="{StaticResource TangoKeyboardKeyDarkBrush}"></Rectangle>
</UniformGrid>
</Grid>
</DockPanel>
</DataTemplate>
+ <DataTemplate x:Key="ErrorState" DataType="{x:Type models:MachineOverviewErrorItem}">
+ <Border Margin="0">
+ <Image Stretch="Fill" HorizontalAlignment="Center" VerticalAlignment="Center" >
+ <Image.Style>
+ <Style>
+ <Setter Property="Image.Width" Value="24"/>
+ <Setter Property="Image.Height" Value="24"/>
+ <Setter Property="Image.Source" Value="../Images/Overview Icons/Normal.png"/>
+ <Style.Triggers>
+ <DataTrigger Binding="{Binding IsErrorState}" Value="True">
+ <Setter Property="Image.Source" Value="../Images/Overview Icons/Error.png"/>
+ <Setter Property="Image.Width" Value="21"/>
+ <Setter Property="Image.Height" Value="26"/>
+ </DataTrigger>
+ </Style.Triggers>
+ </Style>
+ </Image.Style>
+ </Image>
+ </Border>
+ </DataTemplate>
+
+ <Style x:Key="DynamicResolutionGraph" TargetType="graphs:RealTimeGraph" BasedOn="{StaticResource {x:Type graphs:RealTimeGraph}}">
+ <Setter Property="VerticalTicks" Value="5"></Setter>
+ </Style>
+
</UserControl.Resources>
- <Grid Width="960" Height="1080">
+ <Grid Width="998" Height="1123">
<Grid >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="28"></ColumnDefinition>
@@ -308,8 +420,30 @@
<DockPanel>
<touch:TouchButton Command="{Binding GoToJobCommand}" DockPanel.Dock="Right" VerticalAlignment="Top" Style="{StaticResource TangoLinkButton}" Foreground="{StaticResource TangoPrimaryAccentBrush}">
<StackPanel Orientation="Vertical">
- <TextBlock Margin="5 0 0 0" FontSize="{StaticResource TangoButtonFontSize}" VerticalAlignment="Bottom">Go To Job</TextBlock>
- <Rectangle Height="3" Fill="{StaticResource TangoPrimaryAccentBrush}" VerticalAlignment="Bottom" Margin="0 2 0 0"></Rectangle>
+ <TextBlock Margin="5 0 0 0" FontSize="{StaticResource TangoButtonFontSize}" VerticalAlignment="Bottom" Text="Go To Job">
+ <TextBlock.Style>
+ <Style TargetType="{x:Type TextBlock}">
+ <Setter Property="Foreground" Value="{StaticResource TangoPrimaryAccentBrush}"></Setter>
+ <Style.Triggers>
+ <DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Button}}, Path=IsEnabled}" Value="False">
+ <Setter Property="Foreground" Value="{StaticResource TangoDisabledBackgroundBrush}"></Setter>
+ </DataTrigger>
+ </Style.Triggers>
+ </Style>
+ </TextBlock.Style>
+ </TextBlock>
+ <Rectangle Height="3" VerticalAlignment="Bottom" Margin="0 2 0 0">
+ <Rectangle.Style>
+ <Style TargetType="{x:Type Rectangle}">
+ <Setter Property="Fill" Value="{StaticResource TangoPrimaryAccentBrush}"></Setter>
+ <Style.Triggers>
+ <DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Button}}, Path=IsEnabled}" Value="False">
+ <Setter Property="Fill" Value="{StaticResource TangoDisabledBackgroundBrush}"></Setter>
+ </DataTrigger>
+ </Style.Triggers>
+ </Style>
+ </Rectangle.Style>
+ </Rectangle>
</StackPanel>
</touch:TouchButton>
<touch:TouchButton DockPanel.Dock="Right" Visibility="{Binding ApplicationManager.IsInTechnicianMode,Converter={StaticResource BooleanToVisibilityConverter}}" VerticalAlignment="Top" Margin="0 0 20 0" Command="{Binding DisplayJobOutlineCommand}" Style="{StaticResource TangoLinkButton}" FontSize="{StaticResource TangoTitleFontSize}">
@@ -318,7 +452,7 @@
<Rectangle Height="3" Fill="{StaticResource TangoPrimaryAccentBrush}" VerticalAlignment="Bottom" Margin="0 2 0 0"></Rectangle>
</StackPanel>
</touch:TouchButton>
- <TextBlock DockPanel.Dock="Left" FontSize="{StaticResource TangoLargeHeaderFontSize}" Text="{Binding Job.Name, TargetNullValue='-', FallbackValue='-'}"></TextBlock>
+ <TextBlock DockPanel.Dock="Left" FontSize="28" Text="{Binding Job.Name, TargetNullValue='-', FallbackValue='-'}"></TextBlock>
</DockPanel>
<Border Height="2" Background="{StaticResource TangoLightBorderBrush}" VerticalAlignment="Bottom" Margin="0 2 0 0" CornerRadius="2"></Border>
</Grid>
@@ -331,19 +465,19 @@
</StackPanel>
</StackPanel>
- <UniformGrid DockPanel.Dock="Left" Columns="1" Rows="5" HorizontalAlignment="Left" Margin="0 0 0 0" Height="326" VerticalAlignment="Top">
+ <UniformGrid x:Name="JobProperties" DockPanel.Dock="Left" Columns="1" Rows="5" HorizontalAlignment="Left" Margin="0 0 0 0" Height="390" VerticalAlignment="Top" MaxWidth="260">
<StackPanel Orientation="Horizontal" HorizontalAlignment="Left">
<Image Source="../Images/Job Issues/thread_type.png" Stretch="None" VerticalAlignment="Top"/>
<StackPanel Orientation="Vertical" Margin="15 0 0 0">
<TextBlock VerticalAlignment="Center" FontSize="{StaticResource TangoDefaultFontSize}">Thread Type</TextBlock>
- <TextBlock Text="{Binding Job.Rml.Name, TargetNullValue='-', FallbackValue='-'}" FontWeight="DemiBold" FontSize="{StaticResource TangoComboBoxItemFontSize}"></TextBlock>
+ <TextBlock Text="{Binding Job.Rml.DisplayName,Converter={StaticResource StringEllipsisConverter},ConverterParameter='38', TargetNullValue='-', FallbackValue='-'}" FontWeight="DemiBold" FontSize="{StaticResource TangoComboBoxItemFontSize}" TextWrapping="Wrap" MaxWidth="200" MaxHeight="52" ></TextBlock>
</StackPanel>
</StackPanel>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Left">
<Image Source="../Images/Job Issues/job_length.png" Stretch="None" VerticalAlignment="Top" HorizontalAlignment="Left"/>
<StackPanel Orientation="Vertical" Margin="15 0 0 0">
- <TextBlock VerticalAlignment="Center" FontSize="{StaticResource TangoDefaultFontSize}">Job Length</TextBlock>
+ <TextBlock VerticalAlignment="Center" FontSize="{StaticResource TangoDefaultFontSize}">Job Length (m)</TextBlock>
<TextBlock FontWeight="DemiBold" FontSize="{StaticResource TangoComboBoxItemFontSize}">
<TextBlock.Style>
<Style TargetType="{x:Type TextBlock}">
@@ -361,7 +495,7 @@
<StackPanel Orientation="Horizontal" HorizontalAlignment="Left">
<Image Source="../Images/Job Issues/job_weight.png" Stretch="None" VerticalAlignment="Top"/>
<StackPanel Orientation="Vertical" Margin="15 0 0 0">
- <TextBlock VerticalAlignment="Center" FontSize="{StaticResource TangoDefaultFontSize}">Job Weight</TextBlock>
+ <TextBlock VerticalAlignment="Center" FontSize="{StaticResource TangoDefaultFontSize}">Job Weight (g)</TextBlock>
<TextBlock FontWeight="DemiBold" FontSize="{StaticResource TangoComboBoxItemFontSize}">
<TextBlock.Style>
<Style TargetType="{x:Type TextBlock}">
@@ -486,7 +620,7 @@
<StackPanel Orientation="Horizontal" Margin="0 15 0 0" HorizontalAlignment="Center" Visibility="{Binding IsWeghtView, Converter={StaticResource BooleanToVisibilityInverseConverter}}">
<TextBlock FontSize="{StaticResource TangoLargeInfoFontSize}" VerticalAlignment="Center">
<TextBlock.Text>
- <MultiBinding Converter="{StaticResource ProgressLengthSpoolConverter}" StringFormat="0.#" TargetNullValue='-' FallbackValue='0' Mode="OneWay">
+ <MultiBinding Converter="{StaticResource ProgressLengthSpoolConverter}" StringFormat="0.0" TargetNullValue='-' FallbackValue='0' Mode="OneWay">
<Binding Path="RunningJobStatus.TotalProgressMinusSettingUp" />
<Binding Path="IsSpoolView"/>
<Binding Path="RunningJobStatus.ProgressMinusSettingUp" />
@@ -508,7 +642,7 @@
<StackPanel Orientation="Horizontal" Margin="0 10 0 0" HorizontalAlignment="Center" Visibility="{Binding IsWeghtView, Converter={StaticResource BooleanToVisibilityConverter}}">
<TextBlock FontSize="{StaticResource TangoLargeInfoFontSize}" VerticalAlignment="Center">
<TextBlock.Text>
- <MultiBinding Converter="{StaticResource ProgressWeightSpoolConverter}" StringFormat="0.##" TargetNullValue='-' FallbackValue='0'>
+ <MultiBinding Converter="{StaticResource ProgressWeightSpoolConverter}" StringFormat="0.00" TargetNullValue='-' FallbackValue='0'>
<Binding Path="RunningJobStatus.TotalProgressMinusSettingUp" />
<Binding Path="IsSpoolView"/>
<Binding Path="RunningJobStatus.ProgressMinusSettingUp" />
@@ -530,14 +664,15 @@
</StackPanel>
</StackPanel>
- <StackPanel Height="90" Visibility="{Binding RunningJobStatus.IsSettingUp, FallbackValue=collapsed, Converter={StaticResource BooleanToVisibilityConverter}}">
- <StackPanel Orientation="Horizontal" HorizontalAlignment="Center">
+ <DockPanel Height="106" Visibility="{Binding RunningJobStatus.IsSettingUp, FallbackValue=collapsed, Converter={StaticResource BooleanToVisibilityConverter}}">
+ <StackPanel Orientation="Horizontal" HorizontalAlignment="Center" DockPanel.Dock="Top">
<Image Source="../Images/JobProgressView/drop.png" Stretch="None" />
<TextBlock Margin="5 0 0 0" VerticalAlignment="Center" FontSize="{StaticResource TangoTitleFontSize}">Getting Ready...</TextBlock>
</StackPanel>
- </StackPanel>
+ <TextBlock Margin="40 30 40 0" FontSize="{StaticResource TangoSmallFontSize}" FontWeight="Light" Text="{Binding RunningJobStatus.Message, FallbackValue='', TargetNullValue='', Converter={StaticResource StringEllipsisConverter},ConverterParameter='76'}" TextWrapping="Wrap" MaxWidth="310" HorizontalAlignment="Center" TextAlignment="Center" Height="42"></TextBlock>
+ </DockPanel>
- <Rectangle Margin="0 10 0 0" Width="250" Stroke="{StaticResource TangoDividerBrush}" />
+ <Rectangle x:Name="Rrect" Margin="0 10 0 0" Width="250" Stroke="{StaticResource TangoLightBorderBrush}" StrokeThickness="1" Fill="{StaticResource TangoLightBorderBrush}" Height="2" />
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" Margin="0 15 0 0">
<Image Source="../Images/JobProgressView/clock.png" Stretch="None" VerticalAlignment="Center" />
@@ -606,7 +741,7 @@
<StackPanel Orientation="Horizontal" HorizontalAlignment="Left">
<Image Source="../Images/Job Issues/job_length.png" Stretch="None" VerticalAlignment="Top" HorizontalAlignment="Left"/>
<StackPanel Orientation="Vertical" Margin="15 0 0 0">
- <TextBlock x:Name="ProgressLength" VerticalAlignment="Center" FontSize="{StaticResource TangoDefaultFontSize}">Job Length</TextBlock>
+ <TextBlock x:Name="ProgressLength" VerticalAlignment="Center" FontSize="{StaticResource TangoDefaultFontSize}">Job Length (m)</TextBlock>
<TextBlock FontWeight="DemiBold" FontSize="{StaticResource TangoComboBoxItemFontSize}">
<TextBlock.Text>
<MultiBinding Converter="{StaticResource LengthWithSpoolsConverter}" StringFormat="0.##" TargetNullValue='-' FallbackValue='-' Mode="OneWay">
@@ -620,7 +755,7 @@
<StackPanel Orientation="Horizontal" HorizontalAlignment="Left">
<Image Source="../Images/Job Issues/job_weight.png" Stretch="None" VerticalAlignment="Top"/>
<StackPanel Orientation="Vertical" Margin="15 0 0 0">
- <TextBlock VerticalAlignment="Center" FontSize="{StaticResource TangoDefaultFontSize}">Job Weight</TextBlock>
+ <TextBlock VerticalAlignment="Center" FontSize="{StaticResource TangoDefaultFontSize}">Job Weight (g)</TextBlock>
<TextBlock FontWeight="DemiBold" FontSize="{StaticResource TangoComboBoxItemFontSize}">
<TextBlock.Text>
<MultiBinding Converter="{StaticResource LengthToWeightConverter}" StringFormat="0.##" TargetNullValue='-' FallbackValue='-' Mode="OneWay">
@@ -637,11 +772,25 @@
<StackPanel Orientation="Vertical" Margin="15 0 0 0">
<TextBlock VerticalAlignment="Center" FontSize="{StaticResource TangoDefaultFontSize}">Copies</TextBlock>
<TextBlock FontWeight="DemiBold" FontSize="{StaticResource TangoComboBoxItemFontSize}">
- <TextBlock.Text>
- <MultiBinding Converter="{StaticResource ProgressUnitSpoolConverter}" TargetNullValue='-' FallbackValue='-' >
- <Binding Path="RunningJobStatus.CurrentUnit" Mode="OneWay"/>
- </MultiBinding>
- </TextBlock.Text>
+ <TextBlock.Style>
+ <Style TargetType="{x:Type TextBlock}">
+ <Setter Property="Text" Value="-"/>
+ <Style.Triggers>
+ <DataTrigger Binding="{Binding RunningJobStatus.IsCompleted}" Value="True">
+ <Setter Property="Text" Value="{Binding Job.NumberOfUnitsMultipliedBySpools}"></Setter>
+ </DataTrigger>
+ <DataTrigger Binding="{Binding RunningJobStatus.IsCompleted}" Value="False">
+ <Setter Property="Text" >
+ <Setter.Value>
+ <MultiBinding Converter="{StaticResource ProgressUnitSpoolConverter}" TargetNullValue='-' FallbackValue='-' >
+ <Binding Path="RunningJobStatus.CurrentUnit" Mode="OneWay"/>
+ </MultiBinding>
+ </Setter.Value>
+ </Setter>
+ </DataTrigger>
+ </Style.Triggers>
+ </Style>
+ </TextBlock.Style>
</TextBlock>
</StackPanel>
</StackPanel>
@@ -649,7 +798,7 @@
<Image Source="../Images/Job Issues/ttime_left.png" Stretch="None" VerticalAlignment="Top"/>
<StackPanel Orientation="Vertical" Margin="15 0 0 0">
<TextBlock VerticalAlignment="Center" FontSize="{StaticResource TangoDefaultFontSize}">Time Left</TextBlock>
- <TextBlock FontWeight="Light" FontSize="{StaticResource TangoComboBoxItemFontSize}" Margin="0 0 0 0" HorizontalAlignment="Center">
+ <TextBlock FontWeight="DemiBold" FontSize="{StaticResource TangoComboBoxItemFontSize}" Margin="0 0 0 0" HorizontalAlignment="Left">
<Run Text="{Binding RunningJobStatus.RemainingTime,Converter={StaticResource TimeSpanToTwoDigitsTimeConverter},FallbackValue=5}"></Run>
<Run FontSize="16" Text="{Binding RunningJobStatus.RemainingTime,Converter={StaticResource TimeSpanToLabelConverter},FallbackValue=min}"></Run>
@@ -820,7 +969,7 @@
</Grid.ColumnDefinitions>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Left" >
<Image Margin="0 2 0 0" Source="../Images/Job Issues/job_length.png" Stretch="Uniform" VerticalAlignment="Top" HorizontalAlignment="Left" Width="Auto" Height="32" />
- <TextBlock Margin="20 10 0 0" Width="50" FontWeight="SemiBold" FontSize="{StaticResource TangoComboBoxItemFontSize}" >
+ <TextBlock Margin="20 5 0 0" Width="Auto" FontWeight="SemiBold" FontSize="{StaticResource TangoComboBoxItemFontSize}" VerticalAlignment="Top">
<TextBlock.Text>
<MultiBinding Converter="{StaticResource LengthWithSpoolsConverter}" StringFormat="0.##" TargetNullValue='-' FallbackValue='-' Mode="OneWay">
<Binding Path="RunningJobStatus.ProgressMinusSettingUp" Mode="OneWay"/>
@@ -830,7 +979,7 @@
</TextBlock>
</StackPanel>
<!--<Grid Grid.Column="1" Margin="20 8 20 0" VerticalAlignment="Top" Height="20">-->
- <locaControls:RunningJobViewerEureka Grid.Column="1" Margin="20 12 20 0" VerticalAlignment="Top" ThumbHeight="16" Height="14" HeightSlider="14" DisplayMarkers="False" IsActive="True" Job="{Binding Job}"
+ <locaControls:RunningJobViewerEureka Grid.Column="1" Margin="10 12 20 0" VerticalAlignment="Top" ThumbHeight="16" Height="14" HeightSlider="14" DisplayMarkers="False" IsActive="True" Job="{Binding Job}"
RunningJobStatus="{Binding RunningJobStatus}"
MaximumValue="{Binding RunningJobStatus.TotalProgressMinusSettingUp, FallbackValue=100,TargetNullValue=100}"
MinimumValue="0"
@@ -840,7 +989,7 @@
<StackPanel Orientation="Horizontal" HorizontalAlignment="Left" Grid.Column="2" Margin="0 0 0 0">
<Image Margin="0 2 0 0" Source="../Images/Job Issues/ttime_left.png" Stretch="Uniform" VerticalAlignment="Top" Height="32"/>
- <TextBlock Margin="15 10 0 0" FontWeight="Light" FontSize="{StaticResource TangoComboBoxItemFontSize}" HorizontalAlignment="Center">
+ <TextBlock Margin="15 5 0 0" FontWeight="Light" FontSize="{StaticResource TangoComboBoxItemFontSize}" HorizontalAlignment="Center">
<Run Text="{Binding RunningJobStatus.RemainingTime,Converter={StaticResource TimeSpanToTwoDigitsTimeConverter},FallbackValue=5}"></Run>
<Run FontSize="16" Text="{Binding RunningJobStatus.RemainingTime,Converter={StaticResource TimeSpanToLabelConverter},FallbackValue=min}"></Run>
@@ -878,12 +1027,15 @@
<SolidColorBrush Color="{Binding DryerZone3.Color}"/>
</touch:TouchArcProgress.Foreground>
</touch:TouchArcProgress>
- <TextBlock VerticalAlignment="Center" HorizontalAlignment="Center" FontSize="{StaticResource TangoComboBoxItemFontSize}" FontWeight="Bold" Text="{Binding DryerZone3.DisplayValue}">
- <TextBlock.Foreground>
- <SolidColorBrush Color="{Binding DryerZone3.Color}"/>
- </TextBlock.Foreground>
+ <TextBlock VerticalAlignment="Center" HorizontalAlignment="Center" FontSize="{StaticResource TangoDefaultFontSize}" FontWeight="Bold" >
+ <Run Text="{Binding DryerZone3.DisplayValue}">
+ <Run.Foreground>
+ <SolidColorBrush Color="{Binding DryerZone3.Color}"/>
+ </Run.Foreground>
+ </Run>
+ <Run Text="{Binding DryerZone3.DisplayMaxValue}" ></Run>
</TextBlock>
- <TextBlock VerticalAlignment="Bottom" HorizontalAlignment="Center" Margin="0 0 0 20" FontSize="{StaticResource TangoComboBoxItemFontSize}" >&#186;C</TextBlock>
+ <TextBlock VerticalAlignment="Bottom" HorizontalAlignment="Center" Margin="0 0 0 20" FontSize="{StaticResource TangoDefaultFontSize}" >&#186;C</TextBlock>
</Grid>
<TextBlock VerticalAlignment="Center" HorizontalAlignment="Center">Dryer Zone 3</TextBlock>
@@ -896,12 +1048,12 @@
<SolidColorBrush Color="{Binding DryerAir.Color}"/>
</touch:TouchArcProgress.Foreground>
</touch:TouchArcProgress>
- <TextBlock VerticalAlignment="Center" HorizontalAlignment="Center" FontSize="{StaticResource TangoComboBoxItemFontSize}" FontWeight="SemiBold" Text="{Binding DryerAir.DisplayValue}">
+ <TextBlock VerticalAlignment="Center" HorizontalAlignment="Center" FontSize="{StaticResource TangoDefaultFontSize}" FontWeight="SemiBold" Text="{Binding DryerAir.DisplayValue}">
<TextBlock.Foreground>
<SolidColorBrush Color="{Binding DryerAir.Color}"/>
</TextBlock.Foreground>
</TextBlock>
- <TextBlock VerticalAlignment="Bottom" HorizontalAlignment="Center" Margin="0 0 0 20" FontSize="{StaticResource TangoComboBoxItemFontSize}" FontWeight="SemiBold" Text="&#186;C" >
+ <TextBlock VerticalAlignment="Bottom" HorizontalAlignment="Center" Margin="0 0 0 20" FontSize="{StaticResource TangoDefaultFontSize}" FontWeight="SemiBold" Text="&#186;C" >
</TextBlock>
</Grid>
<TextBlock VerticalAlignment="Center" HorizontalAlignment="Center">Dryer Air</TextBlock>
@@ -913,12 +1065,15 @@
<SolidColorBrush Color="{Binding Tunnel.Color}"/>
</touch:TouchArcProgress.Foreground>
</touch:TouchArcProgress>
- <TextBlock VerticalAlignment="Center" HorizontalAlignment="Center" FontSize="{StaticResource TangoComboBoxItemFontSize}" FontWeight="SemiBold" Text="{Binding Tunnel.DisplayValue}">
- <TextBlock.Foreground>
- <SolidColorBrush Color="{Binding Tunnel.Color}"/>
- </TextBlock.Foreground>
+ <TextBlock VerticalAlignment="Center" HorizontalAlignment="Center" FontSize="{StaticResource TangoDefaultFontSize}" FontWeight="SemiBold" >
+ <Run Text="{Binding Tunnel.DisplayValue}">
+ <Run.Foreground>
+ <SolidColorBrush Color="{Binding Tunnel.Color}"/>
+ </Run.Foreground>
+ </Run>
+ <Run Text="{Binding Tunnel.DisplayMaxValue}" ></Run>
</TextBlock>
- <TextBlock VerticalAlignment="Bottom" HorizontalAlignment="Center" Margin="0 0 0 20" FontSize="{StaticResource TangoComboBoxItemFontSize}" FontWeight="SemiBold" Text="&#186;C"></TextBlock>
+ <TextBlock VerticalAlignment="Bottom" HorizontalAlignment="Center" Margin="0 0 0 20" FontSize="{StaticResource TangoDefaultFontSize}" FontWeight="SemiBold" Text="&#186;C"></TextBlock>
</Grid>
<TextBlock VerticalAlignment="Center" HorizontalAlignment="Center">Tunnel</TextBlock>
@@ -930,12 +1085,12 @@
<SolidColorBrush Color="{Binding PumpsPressure.Color}"/>
</touch:TouchArcProgress.Foreground>
</touch:TouchArcProgress>
- <TextBlock VerticalAlignment="Center" HorizontalAlignment="Center" FontSize="{StaticResource TangoComboBoxItemFontSize}" FontWeight="SemiBold" Text="{Binding PumpsPressure.DisplayValue}">
+ <TextBlock VerticalAlignment="Center" HorizontalAlignment="Center" FontSize="{StaticResource TangoDefaultFontSize}" FontWeight="SemiBold" Text="{Binding PumpsPressure.DisplayValue}">
<TextBlock.Foreground>
<SolidColorBrush Color="{Binding PumpsPressure.Color}"/>
</TextBlock.Foreground>
</TextBlock>
- <TextBlock VerticalAlignment="Bottom" HorizontalAlignment="Center" Margin="0 0 0 20" FontSize="{StaticResource TangoComboBoxItemFontSize}" FontWeight="SemiBold" Text="Bar"></TextBlock>
+ <TextBlock VerticalAlignment="Bottom" HorizontalAlignment="Center" Margin="0 0 0 20" FontSize="{StaticResource TangoDefaultFontSize}" FontWeight="SemiBold" Text="Bar"></TextBlock>
</Grid>
<TextBlock VerticalAlignment="Center" HorizontalAlignment="Center">Pumps pressure</TextBlock>
@@ -947,12 +1102,12 @@
<SolidColorBrush Color="{Binding Lubricant.Color}"/>
</touch:TouchArcProgress.Foreground>
</touch:TouchArcProgress>
- <TextBlock VerticalAlignment="Center" HorizontalAlignment="Center" FontSize="{StaticResource TangoComboBoxItemFontSize}" FontWeight="SemiBold" Text="{Binding Lubricant.DisplayValue}">
+ <TextBlock VerticalAlignment="Center" HorizontalAlignment="Center" FontSize="{StaticResource TangoDefaultFontSize}" FontWeight="SemiBold" Text="{Binding Lubricant.DisplayValue, StringFormat=0.## }">
<TextBlock.Foreground>
<SolidColorBrush Color="{Binding Lubricant.Color}"/>
</TextBlock.Foreground>
</TextBlock>
- <TextBlock VerticalAlignment="Bottom" HorizontalAlignment="Center" Margin="0 0 0 20" FontSize="{StaticResource TangoComboBoxItemFontSize}" FontWeight="SemiBold" Text="mVolts"></TextBlock>
+ <TextBlock VerticalAlignment="Bottom" HorizontalAlignment="Center" Margin="0 0 0 20" FontSize="{StaticResource TangoDefaultFontSize}" FontWeight="SemiBold" Text="mVolts"></TextBlock>
</Grid>
<TextBlock VerticalAlignment="Center" HorizontalAlignment="Center">Lubricant</TextBlock>
@@ -963,43 +1118,25 @@
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center">
<StackPanel Orientation="Vertical">
<Border Height="184" Width="83" VerticalAlignment="Center" CornerRadius="2 0 0 2" BorderThickness="0" BorderBrush="{StaticResource TangoBlackInkBrush}">
- <UniformGrid Columns="1" Rows="4" Margin="24">
- <Image Stretch="Fill" Width="24" Height="24" Source="../Images/Overview Icons/Normal.png" HorizontalAlignment="Center" >
- <!--<Image.Style>
- <Style>
- <Style.Triggers>
- <DataTrigger Binding="{Binding Job.BTSR}}" Value="True">
- <Setter Property="Image.Source" Value="../Images/Overview Icons/Error.png"/>
- </DataTrigger>
- </Style.Triggers>
- </Style>
- </Image.Style>-->
- </Image>
- <Image Stretch="Fill" Width="24" Height="24" Source="../Images/Overview Icons/Normal.png" HorizontalAlignment="Center" ></Image>
- <Image Stretch="Fill" Width="24" Height="24" Source="../Images/Overview Icons/Normal.png" HorizontalAlignment="Center" ></Image>
- <Image Stretch="Fill" Width="24" Height="24" Source="../Images/Overview Icons/Normal.png" HorizontalAlignment="Center" ></Image>
- </UniformGrid>
+ <ItemsControl Margin="0 21 0 9" ItemsSource="{Binding MachineErrorStates.Winders}" ItemTemplate="{StaticResource ErrorState}">
+ <ItemsControl.ItemsPanel>
+ <ItemsPanelTemplate>
+ <UniformGrid Columns="1" Rows="4" IsItemsHost="True" VerticalAlignment="Stretch"></UniformGrid>
+ </ItemsPanelTemplate>
+ </ItemsControl.ItemsPanel>
+ </ItemsControl>
</Border>
<TextBlock HorizontalAlignment="Center" Margin="0 4 0 0" FontWeight="Thin">Winder</TextBlock>
</StackPanel>
<StackPanel Orientation="Vertical">
- <Border Height="171" Width="95" VerticalAlignment="Center" CornerRadius="0" BorderThickness="0" BorderBrush="{StaticResource TangoBlackInkBrush}">
- <UniformGrid Columns="1" Rows="4" Margin="0 21 0 9" VerticalAlignment="Stretch">
- <Image Stretch="Fill" Width="24" Height="24" Source="../Images/Overview Icons/Normal.png" HorizontalAlignment="Center" >
- <!--<Image.Style>
- <Style>
- <Style.Triggers>
- <DataTrigger Binding="{Binding Job.BTSR}}" Value="True">
- <Setter Property="Image.Source" Value="../Images/Overview Icons/Error.png"/>
- </DataTrigger>
- </Style.Triggers>
- </Style>
- </Image.Style>-->
- </Image>
- <Image Stretch="Fill" Width="24" Height="24" Source="../Images/Overview Icons/Normal.png" HorizontalAlignment="Center" ></Image>
- <Image Stretch="Fill" Width="24" Height="24" Source="../Images/Overview Icons/Normal.png" HorizontalAlignment="Center" ></Image>
- <Image Stretch="Fill" Width="24" Height="24" Source="../Images/Overview Icons/Normal.png" HorizontalAlignment="Center" ></Image>
- </UniformGrid>
+ <Border Height="171" Width="95" VerticalAlignment="Center" CornerRadius="0" BorderThickness="0" BorderBrush="{StaticResource TangoBlackInkBrush}">
+ <ItemsControl Margin="0 21 0 9" ItemsSource="{Binding MachineErrorStates.Dancers}" ItemTemplate="{StaticResource ErrorState}">
+ <ItemsControl.ItemsPanel>
+ <ItemsPanelTemplate>
+ <UniformGrid Columns="1" Rows="4" IsItemsHost="True" VerticalAlignment="Stretch"></UniformGrid>
+ </ItemsPanelTemplate>
+ </ItemsControl.ItemsPanel>
+ </ItemsControl>
</Border>
<TextBlock HorizontalAlignment="Center" Margin="14 18 14 14" FontWeight="Thin">Dancer</TextBlock>
</StackPanel>
@@ -1007,22 +1144,13 @@
<StackPanel Orientation="Vertical" Margin="274 0 0 0">
<Border Height="171" Width="95" VerticalAlignment="Center" CornerRadius="0" BorderThickness="0" BorderBrush="{StaticResource TangoBlackInkBrush}">
- <UniformGrid Columns="1" Rows="4" Margin="0 21 0 9" VerticalAlignment="Stretch">
- <Image Stretch="Fill" Width="24" Height="24" Source="../Images/Overview Icons/Normal.png" HorizontalAlignment="Center" >
- <!--<Image.Style>
- <Style>
- <Style.Triggers>
- <DataTrigger Binding="{Binding Job.BTSR}}" Value="True">
- <Setter Property="Image.Source" Value="../Images/Overview Icons/Error.png"/>
- </DataTrigger>
- </Style.Triggers>
- </Style>
- </Image.Style>-->
- </Image>
- <Image Stretch="Fill" Width="24" Height="24" Source="../Images/Overview Icons/Normal.png" HorizontalAlignment="Center" ></Image>
- <Image Stretch="Fill" Width="24" Height="24" Source="../Images/Overview Icons/Normal.png" HorizontalAlignment="Center" ></Image>
- <Image Stretch="Fill" Width="24" Height="24" Source="../Images/Overview Icons/Normal.png" HorizontalAlignment="Center" ></Image>
- </UniformGrid>
+ <ItemsControl Margin="0 21 0 9" ItemsSource="{Binding MachineErrorStates.BTSRs}" ItemTemplate="{StaticResource ErrorState}">
+ <ItemsControl.ItemsPanel>
+ <ItemsPanelTemplate>
+ <UniformGrid Columns="1" Rows="4" IsItemsHost="True" VerticalAlignment="Stretch"></UniformGrid>
+ </ItemsPanelTemplate>
+ </ItemsControl.ItemsPanel>
+ </ItemsControl>
</Border>
<TextBlock HorizontalAlignment="Center" Margin="0 18 0 0" FontWeight="Thin">BTSR</TextBlock>
</StackPanel>
@@ -1052,7 +1180,7 @@
<TextBlock Margin="12 0 0 0 " VerticalAlignment="Center" HorizontalAlignment="Center" FontSize="{StaticResource TangoComboBoxItemFontSize}">Waste</TextBlock>
</StackPanel>
<StackPanel Orientation="Horizontal" Margin="-25 24 0 0">
- <Rectangle Height="88" Width="2" Fill="{StaticResource TangoColumnDividerBrush}" VerticalAlignment="Top" Margin="-15 15 0 0"/>
+ <Rectangle Height="88" Width="2" Fill="{StaticResource TangoTextWatermarkBrush}" VerticalAlignment="Top" Margin="-15 15 0 0"/>
<ContentControl Margin="20 0 0 0" ContentTemplate="{StaticResource WasteBox}" Content="{Binding}" IsTabStop="False"/>
</StackPanel>
@@ -1070,9 +1198,10 @@
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
-
- <!--<Rectangle Height="88" Width="2" Fill="{StaticResource TangoColumnDividerBrush}" VerticalAlignment="Top" Margin="12 15 0 0"/>
- <ContentControl Margin="45 0 0 0" ContentTemplate="{StaticResource LubBox}" Content="{Binding}" IsTabStop="False"/>-->
+ <StackPanel Orientation="Horizontal" Margin="40 0 0 0">
+ <Rectangle Height="88" Width="2" Fill="{StaticResource TangoTextWatermarkBrush}" VerticalAlignment="Top" Margin="-15 15 0 0"/>
+ <ContentControl Margin="30 0 0 0" ContentTemplate="{StaticResource LubLiquidBox}" Content="{Binding MidTankLubLevel}" IsTabStop="False"/>
+ </StackPanel>
</StackPanel>
</StackPanel>
</DockPanel>
@@ -1080,11 +1209,69 @@
</StackPanel>
<Border VerticalAlignment="Bottom" Height="2" Background="{StaticResource TangoLightBorderBrush}" Margin="0 0 0 0" CornerRadius="2"></Border>
</Grid>
+ <Grid Grid.Row="3" x:Name="StatRealGraph" Margin="0 8 0 0">
+ <Grid.ColumnDefinitions>
+ <ColumnDefinition Width="186"></ColumnDefinition>
+ <ColumnDefinition Width="32"></ColumnDefinition>
+ <ColumnDefinition Width="1*"></ColumnDefinition>
+ </Grid.ColumnDefinitions>
+
+ <touch:TouchNavigationLinks BorderBrush="{StaticResource TangoDividerBrush}" BorderThickness="0 0 0 0" x:Name="navigationSTLinks" HorizontalContentAlignment="Left"
+ SelectedIndex="{Binding SelectedStatisticTabIndex,Mode=TwoWay}" VerticalAlignment="Bottom" Margin="0,10,0,20" Padding="0 0 0 0"
+ FontSize="{StaticResource TangoNavigationLinksFontSize}" LineThickness="0" PreviewTouchDown="NavigationSTLinks_PreviewTouchDown" PreviewMouseDown="NavigationSTLinks_PreviewMouseDown">
+
+ <DockPanel HorizontalAlignment="Stretch">
+ <Image DockPanel.Dock="Left" Source="../Images/Overview Icons/pr_data.png" Stretch="UniformToFill" VerticalAlignment="Top" HorizontalAlignment="Left" Width="32" Height="32"/>
+ <TextBlock HorizontalAlignment="Left" Margin="12 0 0 0" FontSize="{StaticResource TangoDefaultFontSize}" VerticalAlignment="Center">Production Data</TextBlock>
+ </DockPanel>
+ <DockPanel HorizontalAlignment="Stretch" IsEnabled="False" Margin="0 12 0 0">
+ <Image DockPanel.Dock="Left" Source="../Images/Overview Icons/temperature.png" Stretch="UniformToFill" VerticalAlignment="Top" HorizontalAlignment="Left" Width="32" Height="32"/>
+ <TextBlock HorizontalAlignment="Left" Margin="12 0 0 0" FontSize="{StaticResource TangoDefaultFontSize}" VerticalAlignment="Center" Foreground="{StaticResource TangoDisabledForegroundBrush}">Temperature</TextBlock>
+ </DockPanel>
+ <DockPanel HorizontalAlignment="Stretch" IsEnabled="False">
+ <Image DockPanel.Dock="Left" Source="../Images/Overview Icons/pressure.png" Stretch="UniformToFill" VerticalAlignment="Top" HorizontalAlignment="Left" Width="32" Height="32"/>
+ <TextBlock HorizontalAlignment="Left" Margin="12 0 0 0" FontSize="{StaticResource TangoDefaultFontSize}" VerticalAlignment="Center" Foreground="{StaticResource TangoDisabledForegroundBrush}">Pressure</TextBlock>
+ </DockPanel>
+ <DockPanel HorizontalAlignment="Stretch" IsEnabled="False" >
+ <Image DockPanel.Dock="Left" Source="../Images/Overview Icons/motor.png" Stretch="UniformToFill" VerticalAlignment="Top" HorizontalAlignment="Left" Width="32" Height="32"/>
+ <TextBlock HorizontalAlignment="Left" Margin="12 0 0 0" FontSize="{StaticResource TangoDefaultFontSize}" VerticalAlignment="Center" Foreground="{StaticResource TangoDisabledForegroundBrush}">Motor</TextBlock>
+ </DockPanel>
+ <touch:TouchNavigationLinks.Style>
+ <Style TargetType="{x:Type touch:TouchNavigationLinks}">
+ <Setter Property="ItemsPanel">
+ <Setter.Value>
+ <ItemsPanelTemplate>
+ <UniformGrid Rows="4" />
+ </ItemsPanelTemplate>
+ </Setter.Value>
+ </Setter>
+ </Style>
+ </touch:TouchNavigationLinks.Style>
+
+ </touch:TouchNavigationLinks>
+ <Grid Grid.Column="1" Margin="0 40 0 0">
+ <Rectangle Width="20" Height="2" Fill="{StaticResource TangoBlackInkBrush}" VerticalAlignment="Top" Margin="0 0 0 0" ></Rectangle>
+ <!--<Rectangle Width="2" Height="138" Margin="20 0 0 0" Fill="{StaticResource TangoBlackInkBrush}" VerticalAlignment="Top" ></Rectangle>-->
+ <Rectangle Margin="20 0 0 0" VerticalAlignment="Top" Fill="{StaticResource TangoBlackInkBrush}" Height="2" Width="138" HorizontalAlignment="Stretch">
+ <Rectangle.LayoutTransform>
+ <TransformGroup>
+ <RotateTransform Angle="90"/>
+ </TransformGroup>
+ </Rectangle.LayoutTransform>
+ </Rectangle>
+ </Grid>
+ <Grid Grid.Column="2" x:Name="StatGrid" Margin="0,0,0.4,0">
+ <Grid Visibility="{Binding SelectedStatisticTab,Converter={StaticResource StatisticTabToVisibilityConverter},ConverterParameter='Productiondata'}">
+ <graphs:RealTimeGraph Style="{StaticResource PPC_RealTimeGraph_Flat}" Controller="{Binding JobController}" Background="Transparent" StringFormat="0" GridLinesBrush="red" BorderBrush="Transparent"
+ VerticalAxisVisibility="Visible" HorizontalAxisVisibility="Visible" VerticalTicks =" 5"/>
+ </Grid>
+ </Grid>
+ </Grid>
</Grid>
</Grid>
</Grid>
- <Grid VerticalAlignment="Bottom" Grid.ColumnSpan="2" Margin="10 0 0 0">
- <touch:TouchExpander x:Name="Notifications" Style="{StaticResource TouchRoundedExpander}" IsTabStop="False" KeyboardNavigation.TabNavigation ="None" BorderThickness="0" IsExpanded="false" CornerRadius="20 20 0 0" >
+ <Grid VerticalAlignment="Bottom" Grid.ColumnSpan="2" Margin="10 0 10 0">
+ <touch:TouchExpander x:Name="Notifications" Style="{StaticResource TouchRoundedExpander}" IsTabStop="False" KeyboardNavigation.TabNavigation ="None" BorderThickness="0" CornerRadius="20 20 0 0" Margin="0 0 0 -1" IsExpanded="{Binding IsExpandedNotifications, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">
<touch:TouchExpander.Header>
<DockPanel >
<touch:TouchButton Margin="0 0 20 0" Content="Clear All" DockPanel.Dock="Right" Width="120" Height="38" HorizontalAlignment="Right" VerticalAlignment="Center" EnableDropShadow="False" Background="Transparent" BorderThickness="1" CornerRadius="19" BorderBrush="{StaticResource TangoPrimaryAccentBrush}" Foreground="{StaticResource TangoPrimaryAccentBrush}" Command="{Binding ClearAllNotificationsCommand}" Visibility="{Binding NotificationProvider.HasNotificationItems, Converter={StaticResource BooleanToVisibilityConverter}}" >
@@ -1127,13 +1314,13 @@
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
- <Grid HorizontalAlignment="Stretch" Width="1220" Height="62">
+ <Grid HorizontalAlignment="Stretch" Height="60">
<Border BorderThickness="1" Margin="-1 0 0 0" BorderBrush="{StaticResource TangoDividerBrush}">
<Grid HorizontalAlignment="Stretch" >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="56"/>
<ColumnDefinition Width="1*"/>
- <ColumnDefinition Width="56"/>
+ <ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<touch:TouchIcon Margin="24 0 0 0" DockPanel.Dock="Left" Height="32" Grid.Column="0">
<touch:TouchIcon.Style>
@@ -1164,10 +1351,12 @@
</Style>
</touch:TouchIcon.Style>
</touch:TouchIcon>
- <StackPanel Margin="15 3 20 3" VerticalAlignment="Center" Grid.Column="1">
- <TextBlock Text="{Binding Message}" TextTrimming="CharacterEllipsis" TextWrapping="Wrap" Foreground="Black" VerticalAlignment="Center" ></TextBlock>
- <TextBlock Margin="0 5 0 0" Foreground="{StaticResource TangoDarkForegroundBrush}" Text="{Binding ExpandedMessage}" FontSize="{StaticResource TangoSmallFontSize}" TextWrapping="Wrap" VerticalAlignment="Center" />
+
+ <StackPanel Margin="15 3 10 5" VerticalAlignment="Center" Grid.Column="1">
+ <TextBlock Text="{Binding Message}" TextTrimming="CharacterEllipsis" TextWrapping="Wrap" Foreground="Black" VerticalAlignment="Top" ></TextBlock>
+ <TextBlock Margin="0 3 0 0" Foreground="{StaticResource TangoDarkForegroundBrush}" Text="{Binding ExpandedMessage}" FontSize="{StaticResource TangoSmallFontSize}" TextWrapping="NoWrap" VerticalAlignment="Center" HorizontalAlignment="Left" TextTrimming="CharacterEllipsis"/>
</StackPanel>
+
<Grid Grid.Column="2" Width="40" HorizontalAlignment="Right" VerticalAlignment="Stretch" Visibility="{Binding CanClose,Converter={StaticResource BooleanToVisibilityConverter}}">
<Grid Margin="0 0 20 0" HorizontalAlignment="Right" VerticalAlignment="Center" Width="14" Height="14">
<touch:TouchIcon Icon="Close" Foreground="Black" />
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/Views/MachineStatusView.xaml.cs b/Software/Visual_Studio/PPC/Tango.PPC.UI/Views/MachineStatusView.xaml.cs
index 2ee98bc2b..e49e062b7 100644
--- a/Software/Visual_Studio/PPC/Tango.PPC.UI/Views/MachineStatusView.xaml.cs
+++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/Views/MachineStatusView.xaml.cs
@@ -57,5 +57,15 @@ namespace Tango.PPC.UI.Views
{
_timer.Stop();
}
+
+ private void NavigationSTLinks_PreviewTouchDown(object sender, TouchEventArgs e)
+ {
+ e.Handled = true;
+ }
+
+ private void NavigationSTLinks_PreviewMouseDown(object sender, MouseButtonEventArgs e)
+ {
+ e.Handled = true;
+ }
}
}
diff --git a/Software/Visual_Studio/Tango.BL/Builders/JobsCollectionBuilder.cs b/Software/Visual_Studio/Tango.BL/Builders/JobsCollectionBuilder.cs
index c155e7020..a2c9c3678 100644
--- a/Software/Visual_Studio/Tango.BL/Builders/JobsCollectionBuilder.cs
+++ b/Software/Visual_Studio/Tango.BL/Builders/JobsCollectionBuilder.cs
@@ -63,5 +63,16 @@ namespace Tango.BL.Builders
}
});
}
+
+ public virtual JobsCollectionBuilder WithRmls()
+ {
+ return AddStep(4, () =>
+ {
+ foreach (var job in Entities.ToList())
+ {
+ Context.Rmls.Where(x => x.Guid == job.RmlGuid).ToList();
+ }
+ });
+ }
}
}
diff --git a/Software/Visual_Studio/Tango.BL/Entities/Job.cs b/Software/Visual_Studio/Tango.BL/Entities/Job.cs
index 2784dea32..29f7e1054 100644
--- a/Software/Visual_Studio/Tango.BL/Entities/Job.cs
+++ b/Software/Visual_Studio/Tango.BL/Entities/Job.cs
@@ -406,7 +406,13 @@ namespace Tango.BL.Entities
[NotMapped]
[JsonIgnore]
public double GramPerLength { get; set;}
-
+
+ [NotMapped]
+ [JsonIgnore]
+ public String ThreadName
+ {
+ get { return Rml == null ? "" : Rml.DisplayName;}
+ }
#endregion
@@ -480,6 +486,7 @@ namespace Tango.BL.Entities
}
else
GramPerLength = 0;
+ RaisePropertyChanged(nameof(ThreadName));
}
#endregion
diff --git a/Software/Visual_Studio/Tango.Emulations/Emulators/MachineEmulator.cs b/Software/Visual_Studio/Tango.Emulations/Emulators/MachineEmulator.cs
index f873dbece..a081efb25 100644
--- a/Software/Visual_Studio/Tango.Emulations/Emulators/MachineEmulator.cs
+++ b/Software/Visual_Studio/Tango.Emulations/Emulators/MachineEmulator.cs
@@ -170,8 +170,22 @@ namespace Tango.Emulations.Emulators
MidTankLevel = 2.5,
});
}
+ for (int i = 0; i < 4; i++)
+ {
+ if( i == 2)
+ {
+ MachineStatus.WindersInError.Add(false);
+ MachineStatus.DancersInError.Add(true);
+ MachineStatus.BtsrsInError.Add(true);
+ }
+ else {
+ MachineStatus.WindersInError.Add(false);
+ MachineStatus.DancersInError.Add(false);
+ MachineStatus.BtsrsInError.Add(false);
+ }
+ }
- EventsStates = MachineEventState.GetAllEventsStates();
+ EventsStates = MachineEventState.GetAllEventsStates();
_valveStates = new List<ValveState>();
_blower_states = new List<SetBlowerStateRequest>();
@@ -213,6 +227,21 @@ namespace Tango.Emulations.Emulators
HeaterType = (HeaterType)item.Code,
});
}
+ var tunnel = _heater_states.FirstOrDefault(x => x.HeaterType == HeaterType.ETunnelHeater);
+ if(tunnel != null)
+ {
+ tunnel.IsRampingUp = true;
+ tunnel.CurrentValue = 108.5;
+ tunnel.SetPoint = 170;
+ }
+ var dryerZone3 = _heater_states.FirstOrDefault(x => x.HeaterType == HeaterType.EDryerHeater3);
+ if (dryerZone3 != null)
+ {
+ dryerZone3.IsRampingUp = false;
+ dryerZone3.CurrentValue = 200.8;
+ dryerZone3.SetPoint = 170;
+ }
+ //DryerZone3
foreach (var item in adapter.HardwareBlowerTypes)
{
@@ -621,6 +650,12 @@ namespace Tango.Emulations.Emulators
monitors.Dispenser7MotorFrequency.AddRange(dispenserFrequencies[6].Data);
monitors.Dispenser8MotorFrequency.AddRange(dispenserFrequencies[7].Data);
+ monitors.EuDispenser1Pressure.Clear();
+ monitors.EuDispenser1Pressure.Add(5);
+
+ monitors.EuLubricantCurrent.Add(4000.12345);
+
+
//res.HeatersStates.Add(new HeaterState()
//{
// CurrentValue = 50,
diff --git a/Software/Visual_Studio/Tango.Integration/Operation/JobHandler.cs b/Software/Visual_Studio/Tango.Integration/Operation/JobHandler.cs
index 7aa491369..23bd2b1ba 100644
--- a/Software/Visual_Studio/Tango.Integration/Operation/JobHandler.cs
+++ b/Software/Visual_Studio/Tango.Integration/Operation/JobHandler.cs
@@ -440,15 +440,11 @@ namespace Tango.Integration.Operation
Status.CurrentUnitTotalProgress = Status.RemainingUnits > 1 && Job.EnableInterSegment ? Job.Length + (Job.InterSegmentLength) : Job.Length;
- if (s.Message != _lastStatusMessage && s.Message != String.Empty)
+ if (s.Message != _lastStatusMessage )
{
Status.Message = s.Message;
}
- else
- {
- Status.Message = null;
- }
-
+
_lastStatusMessage = s.Message;
diff --git a/Software/Visual_Studio/Tango.Touch/Controls/TouchExpander.cs b/Software/Visual_Studio/Tango.Touch/Controls/TouchExpander.cs
index b85be6c49..80974bd4a 100644
--- a/Software/Visual_Studio/Tango.Touch/Controls/TouchExpander.cs
+++ b/Software/Visual_Studio/Tango.Touch/Controls/TouchExpander.cs
@@ -39,7 +39,12 @@ namespace Tango.Touch.Controls
set { SetValue(IsExpandedProperty, value); }
}
public static readonly DependencyProperty IsExpandedProperty =
- DependencyProperty.Register("IsExpanded", typeof(bool), typeof(TouchExpander), new PropertyMetadata(false));
+ DependencyProperty.Register("IsExpanded", typeof(bool), typeof(TouchExpander), new FrameworkPropertyMetadata
+ {
+ DefaultValue = false,
+ BindsTwoWayByDefault = true,
+ DefaultUpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged
+ });
static TouchExpander()
{
diff --git a/Software/Visual_Studio/Tango.Touch/Controls/TouchNavigationLinks.cs b/Software/Visual_Studio/Tango.Touch/Controls/TouchNavigationLinks.cs
index 3a0d3de9e..5fb4496e0 100644
--- a/Software/Visual_Studio/Tango.Touch/Controls/TouchNavigationLinks.cs
+++ b/Software/Visual_Studio/Tango.Touch/Controls/TouchNavigationLinks.cs
@@ -24,7 +24,18 @@ namespace Tango.Touch.Controls
private const string PART_Rectangle = "PART_Rectangle";
private Line _line;
private Object _lastSelectedItem;
+
+ public int LineThickness
+ {
+ get { return (int)GetValue(LineThicknessProperty); }
+ set { SetValue(LineThicknessProperty, value); }
+ }
+
+ // Using a DependencyProperty as the backing store for LineThickness. This enables animation, styling, binding, etc...
+ public static readonly DependencyProperty LineThicknessProperty =
+ DependencyProperty.Register("LineThickness", typeof(int), typeof(TouchNavigationLinks), new PropertyMetadata(3));
+
static TouchNavigationLinks()
{
DefaultStyleKeyProperty.OverrideMetadata(typeof(TouchNavigationLinks), new FrameworkPropertyMetadata(typeof(TouchNavigationLinks)));
@@ -48,12 +59,14 @@ namespace Tango.Touch.Controls
private void MoveLineToSelectedItem()
{
- if (SelectedItem != null)
+ if (SelectedItem != null )
{
+ if(SelectedItem is UIElement && ((UIElement)SelectedItem).IsEnabled == false)
+ return;
var container = ItemContainerGenerator.ContainerFromItem(SelectedItem) as FrameworkElement;
-
+
ContentPresenter presenter = container.FindChild<ContentPresenter>().FindChild<ContentPresenter>();
-
+
if (presenter != null)
{
Point relativePoint = presenter.TransformToAncestor(this).Transform(new Point(0, 0));
@@ -87,8 +100,9 @@ namespace Tango.Touch.Controls
_line.BeginAnimation(Line.X2Property, aniX2);
}
}
+ _lastSelectedItem = SelectedItem;
}
-
+
_lastSelectedItem = SelectedItem;
}
}
diff --git a/Software/Visual_Studio/Tango.Touch/Controls/TouchNavigationLinks.xaml b/Software/Visual_Studio/Tango.Touch/Controls/TouchNavigationLinks.xaml
index 599dfdf7c..2b8b4ff03 100644
--- a/Software/Visual_Studio/Tango.Touch/Controls/TouchNavigationLinks.xaml
+++ b/Software/Visual_Studio/Tango.Touch/Controls/TouchNavigationLinks.xaml
@@ -37,10 +37,11 @@
<Setter Property="BorderThickness" Value="1"/>
<Setter Property="MinHeight" Value="40"></Setter>
<Setter Property="FocusVisualStyle" Value="{x:Null}"/>
+ <Setter Property="IsEnabled" Value="true"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ListBoxItem}">
- <Border x:Name="Bd" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" Padding="{TemplateBinding Padding}" SnapsToDevicePixels="true">
+ <Border x:Name="Bd" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" Padding="{TemplateBinding Padding}" SnapsToDevicePixels="true" IsEnabled="{TemplateBinding IsEnabled}">
<components:Ripple CornerRadius="5" RippleBrush="{StaticResource TangoRippleDarkBrush}">
<StackPanel Orientation="Horizontal">
<ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
@@ -77,7 +78,7 @@
<Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" Padding="{TemplateBinding Padding}" SnapsToDevicePixels="true">
<StackPanel>
<ItemsPresenter SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" HorizontalAlignment="Stretch"/>
- <Line x:Name="PART_Rectangle" X1="0" X2="0" Y1="0" Y2="0" Margin="0 5 0 -3" Stroke="{StaticResource TangoPrimaryAccentBrush}" StrokeThickness="3" HorizontalAlignment="Stretch"></Line>
+ <Line x:Name="PART_Rectangle" X1="0" X2="0" Y1="0" Y2="0" Margin="0 5 0 -3" Stroke="{StaticResource TangoPrimaryAccentBrush}" StrokeThickness="{Binding RelativeSource={RelativeSource AncestorType=local:TouchNavigationLinks},Path=LineThickness}" HorizontalAlignment="Stretch"></Line>
</StackPanel>
</Border>
</ControlTemplate>
diff --git a/Software/Visual_Studio/Tango.Touch/Resources/Colors.xaml b/Software/Visual_Studio/Tango.Touch/Resources/Colors.xaml
index 283e69b45..1dc2090aa 100644
--- a/Software/Visual_Studio/Tango.Touch/Resources/Colors.xaml
+++ b/Software/Visual_Studio/Tango.Touch/Resources/Colors.xaml
@@ -60,6 +60,17 @@
<Color x:Key="TangoPanelMaskColorLight">#55FFFFFF</Color>
<Color x:Key="TangoMenuPanelDarkColor">#000131</Color>
+ <Color x:Key="Tango_RealTimeGraph_White">#18FFFFFF</Color>
+ <Color x:Key="Tango_RealTimeGraph_Red">#B6FF6F6F</Color>
+ <Color x:Key="Tango_RealTimeGraph_Yellow">#BBFFB84B</Color>
+ <Color x:Key="Tango_RealTimeGraph_Green">#B958C13B</Color>
+ <Color x:Key="Tango_RealTimeGraph_Orange">#BBFA9252</Color>
+
+ <Color x:Key="Tango_RealTimeGraph_ForegroundColor">#7C98B3</Color>
+ <Color x:Key="Tango_RealTimeGraph_OuterBorderColor">#202020</Color>
+ <Color x:Key="Tango_RealTimeGraph_InnerBorderColor">#505050</Color>
+ <Color x:Key="Tango_RealTimeGraph_GridLinesColor">#303030</Color>
+
<!--Brushes-->
<SolidColorBrush x:Key="TangoPrimaryBackgroundBrush" Color="{StaticResource TangoPrimaryBackgroundColor}"></SolidColorBrush>
<SolidColorBrush x:Key="TangoMidBackgroundBrush" Color="{StaticResource TangoMidBackgroundColor}"></SolidColorBrush>
@@ -128,4 +139,21 @@
<SolidColorBrush x:Key="TangoPowerMenuOpenedBackgroundBrush" Color="{StaticResource TangoPowerMenuOpenedBackgroundColor}"></SolidColorBrush>
<SolidColorBrush x:Key="TangoMenuPanelDarkBrush" Color="{StaticResource TangoMenuPanelDarkColor}"></SolidColorBrush>
+
+ <SolidColorBrush x:Key="Tango_RealTimeGraph_ForegroundBrush" Color="{StaticResource Tango_RealTimeGraph_ForegroundColor}" />
+ <SolidColorBrush x:Key="Tango_RealTimeGraph_OuterBorderBrush" Color="{StaticResource Tango_RealTimeGraph_OuterBorderColor}" />
+ <SolidColorBrush x:Key="Tango_RealTimeGraph_InnerBorderBrush" Color="{StaticResource Tango_RealTimeGraph_InnerBorderColor}" />
+ <SolidColorBrush x:Key="Tango_RealTimeGraph_GridLinesBrush" Color="{StaticResource Tango_RealTimeGraph_GridLinesColor}" />
+
+ <LinearGradientBrush x:Key="Tango_RealTimeGraph_BackgroundBrush" EndPoint="0.5,1" StartPoint="0.5,0" >
+ <GradientStop Color="#202020"/>
+ <GradientStop Color="#FF333333" Offset="1"/>
+ </LinearGradientBrush>
+
+ <SolidColorBrush x:Key="Tango_RealTimeGraph_WhiteBrush" Color="{StaticResource Tango_RealTimeGraph_White}"></SolidColorBrush>
+ <SolidColorBrush x:Key="Tango_RealTimeGraph_RedBrush" Color="{StaticResource Tango_RealTimeGraph_Red}"></SolidColorBrush>
+ <SolidColorBrush x:Key="Tango_RealTimeGraph_YellowBrush" Color="{StaticResource Tango_RealTimeGraph_Yellow}"></SolidColorBrush>
+ <SolidColorBrush x:Key="Tango_RealTimeGraph_GreenBrush" Color="{StaticResource Tango_RealTimeGraph_Green}"></SolidColorBrush>
+ <SolidColorBrush x:Key="Tango_RealTimeGraph_OrangeBrush" Color="{StaticResource Tango_RealTimeGraph_Orange}"></SolidColorBrush>
+
</ResourceDictionary> \ No newline at end of file