diff options
| author | Roy Ben Shabat <roy.mail.net@gmail.com> | 2025-09-09 06:51:14 +0300 |
|---|---|---|
| committer | Roy Ben Shabat <roy.mail.net@gmail.com> | 2025-09-09 06:51:14 +0300 |
| commit | 1cbef6c4d79a1db8c8d3923edfec2e50277caa51 (patch) | |
| tree | 6487fb1a2e4c85327bc74348018ad1621cc28fba /Software | |
| parent | 987e4992d01a0bc84170498c40dad0621542f46c (diff) | |
| download | Tango-1cbef6c4d79a1db8c8d3923edfec2e50277caa51.tar.gz Tango-1cbef6c4d79a1db8c8d3923edfec2e50277caa51.zip | |
RMl Default Liquid Factor + Machine Type + Improved RML Filter Loading.
Diffstat (limited to 'Software')
16 files changed, 374 insertions, 222 deletions
diff --git a/Software/DB/Tango.mdf b/Software/DB/Tango.mdf Binary files differindex 98f11ffc6..950d88e6b 100644 --- a/Software/DB/Tango.mdf +++ b/Software/DB/Tango.mdf diff --git a/Software/DB/Tango_log.ldf b/Software/DB/Tango_log.ldf Binary files differindex f646d3953..be4dd47bc 100644 --- a/Software/DB/Tango_log.ldf +++ b/Software/DB/Tango_log.ldf diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/Models/RmlModel.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/Models/RmlModel.cs index dce3432e2..c2245bcb2 100644 --- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/Models/RmlModel.cs +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/Models/RmlModel.cs @@ -45,6 +45,8 @@ namespace Tango.MachineStudio.RML.Models public List<LiquidTypeColorValue> LiquidTypesR { get; set; } + public MachineTypes? MachineType { get; set; } + public RmlModel() { DyeingSpeed = "-"; diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/ViewModels/MainViewVM.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/ViewModels/MainViewVM.cs index 2e39f9e12..c0318e17b 100644 --- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/ViewModels/MainViewVM.cs +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/ViewModels/MainViewVM.cs @@ -239,7 +239,15 @@ namespace Tango.MachineStudio.RML.ViewModels get { return _RMLFilter; } set { _RMLFilter = value; RaisePropertyChangedAuto(); OnRMLFilterChanged(); } } - + + private bool _loadingRmls; + public bool LoadingRmls + { + get { return _loadingRmls; } + set { _loadingRmls = value; RaisePropertyChangedAuto(); } + } + + #endregion #region Commands @@ -348,105 +356,120 @@ namespace Tango.MachineStudio.RML.ViewModels BatchConversionCommand = new RelayCommand(BatchConversion); } - public override async void OnApplicationReady() + public override void OnApplicationReady() { } private async Task LoadRmls() { - var filter = RMLFilter.ToStringOrEmpty().ToLower(); - - using (ObservablesContext db = ObservablesContext.CreateDefault()) + try { - - var rmls = await db.Rmls.Where(x => x.Name.ToLower().Contains(filter) || x.DisplayName.ToLower().Contains(filter)) - .Include(x => x.Cct.FileName) - .Include(x => x.LiquidTypesRmls) - .Include(x => x.LiquidTypesRmls.Select(y => y.LiquidType)) - .Include(x => x.BtsrApplicationType.Name) - .Include(x => x.BtsrYarnType.Name) - .Include(x => x.ProcessParametersTablesGroups) - .Select(x => new - { - x.Name, - x.Guid, - x.DisplayName, - x.Cct.FileName, - x.ColorConversionVersion, - x.UseColorLibGradients, - x.UseLightInks, - x.HeadType, - x.LastUpdated, - BtsrApplicationType = x.BtsrApplicationType != null ? x.BtsrApplicationType.Name : String.Empty, - BtsrYarnType = x.BtsrYarnType != null ? x.BtsrYarnType.Name : String.Empty, - LiquidTypesRmls = x.LiquidTypesRmls, - LiquidTypes = x.LiquidTypesRmls.Select(y => y.LiquidType), - ProcessParametersTables = x.ProcessParametersTablesGroups - }).ToListAsync(); - - - List<RmlModel> models = new List<RmlModel>(); + LoadingRmls = true; - //var tables = ActiveRML.GetActiveProcessGroup().ProcessParametersTables; + var filter = RMLFilter.ToStringOrEmpty().ToLower(); - foreach (var rml in rmls.OrderBy(x => x.Name).ToList()) + using (ObservablesContext db = ObservablesContext.CreateDefault()) { - ProcessParametersTable tableZone1 = null; - ProcessParametersTable tableZone2 = null; - if (rml.ProcessParametersTables != null) + + var rmls = await db.Rmls.Where(x => x.Name.ToLower().Contains(filter) || x.DisplayName.ToLower().Contains(filter)) + .Include(x => x.Cct.FileName) + .Include(x => x.LiquidTypesRmls) + .Include(x => x.LiquidTypesRmls.Select(y => y.LiquidType)) + .Include(x => x.BtsrApplicationType.Name) + .Include(x => x.BtsrYarnType.Name) + .Include(x => x.ProcessParametersTablesGroups) + .Select(x => new + { + x.Name, + x.Guid, + x.DisplayName, + x.Cct.FileName, + x.ColorConversionVersion, + x.UseColorLibGradients, + x.UseLightInks, + x.HeadType, + x.LastUpdated, + x.MachineType, + BtsrApplicationType = x.BtsrApplicationType != null ? x.BtsrApplicationType.Name : String.Empty, + BtsrYarnType = x.BtsrYarnType != null ? x.BtsrYarnType.Name : String.Empty, + //LiquidTypesRmls = x.LiquidTypesRmls, + //LiquidTypes = x.LiquidTypesRmls.Select(y => y.LiquidType), + ProcessParametersTables = x.ProcessParametersTablesGroups + }).ToListAsync(); + + + List<RmlModel> models = new List<RmlModel>(); + + //var tables = ActiveRML.GetActiveProcessGroup().ProcessParametersTables; + + foreach (var rml in rmls.OrderBy(x => x.Name).ToList()) { - var activeTablesGroup = rml.ProcessParametersTables.Where(x=>x.Active).FirstOrDefault(); - if ( activeTablesGroup != null) - { - try + ProcessParametersTable tableZone1 = null; + ProcessParametersTable tableZone2 = null; + if (rml.ProcessParametersTables != null) + { + var activeTablesGroup = rml.ProcessParametersTables.Where(x => x.Active).FirstOrDefault(); + if (activeTablesGroup != null) { - var tables = await db.ProcessParametersTables.Where(x => x.ProcessParametersTablesGroupGuid == activeTablesGroup.Guid).OrderBy(x => x.TableIndex).ToListAsync(); - if (tables.Count > 0) + try { - tableZone1 = tables[0]; + var tables = await db.ProcessParametersTables.Where(x => x.ProcessParametersTablesGroupGuid == activeTablesGroup.Guid).OrderBy(x => x.TableIndex).ToListAsync(); + if (tables.Count > 0) + { + tableZone1 = tables[0]; + } + if (tables.Count > 1) + { + tableZone2 = tables[1]; + } } - if (tables.Count > 1) + catch (Exception ex) { - tableZone2 = tables[1]; + LogManager.Log($"Error loading ProcessParametersTables {ex.Message}"); } - } - catch (Exception ex) - { - LogManager.Log($"Error loading ProcessParametersTables {ex.Message}"); - } - }; - } - - RmlModel model = new RmlModel(); - model.Guid = rml.Guid; - model.Name = rml.Name; - model.LastUpdated = rml.LastUpdated; - model.DisplayName = rml.DisplayName; - model.CCT = rml.FileName + " v" + rml.ColorConversionVersion; - model.UseGradients = rml.UseColorLibGradients; - model.UseLightInks = rml.UseLightInks; - model.HeadType = (HeadTypes)rml.HeadType; - model.Btsr = (String.IsNullOrEmpty(rml.BtsrApplicationType) ? "N/A" : rml.BtsrApplicationType) + ", " + (String.IsNullOrEmpty(rml.BtsrYarnType) ? "N/A" : rml.BtsrYarnType); - - if( tableZone1 != null) + }; + } + + RmlModel model = new RmlModel(); + model.Guid = rml.Guid; + model.Name = rml.Name; + model.LastUpdated = rml.LastUpdated; + model.DisplayName = rml.DisplayName; + model.CCT = rml.FileName + " v" + rml.ColorConversionVersion; + model.UseGradients = rml.UseColorLibGradients; + model.UseLightInks = rml.UseLightInks; + model.HeadType = (HeadTypes)rml.HeadType; + model.Btsr = (String.IsNullOrEmpty(rml.BtsrApplicationType) ? "N/A" : rml.BtsrApplicationType) + ", " + (String.IsNullOrEmpty(rml.BtsrYarnType) ? "N/A" : rml.BtsrYarnType); + model.MachineType = (MachineTypes?)rml.MachineType; + + if (tableZone1 != null) { - model.Zone1InkUptake = String.Format($"{tableZone1.MinInkUptake}-{tableZone1.MaxInkUptake}"); + model.Zone1InkUptake = String.Format($"{tableZone1.MinInkUptake}-{tableZone1.MaxInkUptake}"); model.DyeingSpeed = tableZone1.DyeingSpeed.ToString(); } - if(tableZone2 != null) + if (tableZone2 != null) { model.DyeingSpeed += String.Format($"-{tableZone2.DyeingSpeed}"); model.Zone2InkUptake = tableZone2 == null ? "-" : String.Format($"{tableZone2.MinInkUptake}-{tableZone2.MaxInkUptake}"); + } + + //model.LiquidTypes = rml.LiquidTypes.OrderBy(x => x.Code).Select(x => x.Color).ToList(); + //model.LiquidTypesR = rml.LiquidTypesRmls.OrderBy(x => x.LiquidType.Code).ToList().Select((n) => new RmlModel.LiquidTypeColorValue(){ Color = n.LiquidType.Color, LiquidTypeValue = n.MaxNlPerCm }).ToList(); + + models.Add(model); } - model.LiquidTypes = rml.LiquidTypes.OrderBy(x => x.Code).Select(x => x.Color).ToList(); - model.LiquidTypesR = rml.LiquidTypesRmls.OrderBy(x => x.LiquidType.Code).ToList().Select((n) => new RmlModel.LiquidTypeColorValue(){ Color = n.LiquidType.Color, LiquidTypeValue = n.MaxNlPerCm }).ToList(); - - models.Add(model); + Rmls = models; } - - Rmls = models; + } + catch (Exception ex) + { + LogManager.Log(ex, "Error filtering rmls on RML module."); + } + finally + { + LoadingRmls = false; } } @@ -730,6 +753,7 @@ namespace Tango.MachineStudio.RML.ViewModels rml.DisplayName = name; rml.QualificationDate = DateTime.UtcNow; rml.Manufacturer = "Twine"; + rml.DefaultLiquidFactor = 140; using (ObservablesContext db = ObservablesContext.CreateDefault()) { diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/Views/RmlView.xaml b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/Views/RmlView.xaml index 8447a3899..acd83cee2 100644 --- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/Views/RmlView.xaml +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/Views/RmlView.xaml @@ -125,6 +125,11 @@ <TextBlock Text="Count (den):" ></TextBlock> <TextBlock Text="{Binding ActiveRML.DencityCount}" Foreground="Blue" ></TextBlock> + <TextBlock Text="Default Liquid Factor:" ></TextBlock> + <mahapps:NumericUpDown Minimum="1" Maximum="1000" Value="{Binding ActiveRML.DefaultLiquidFactor}" Foreground="Blue" ></mahapps:NumericUpDown> + + <TextBlock Text="Machine Type:" ></TextBlock> + <ComboBox ItemsSource="{Binding Source={x:Type enumerations:MachineTypes},Converter={StaticResource EnumToItemsSourceConverter}}" SelectedValue="{Binding ActiveRML.ForMachineType}" SelectedValuePath="Value" DisplayMemberPath="DisplayName" Foreground="Blue" ></ComboBox> <!--<TextBlock Text="Fiber Shape:" ></TextBlock> <ComboBox ItemsSource="{Binding FiberShapes}" SelectedItem="{Binding ActiveRML.FiberShape,Mode=TwoWay}" DisplayMemberPath="Name"></ComboBox>--> diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/Views/RmlsView.xaml b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/Views/RmlsView.xaml index 2c0f77937..eee16a2df 100644 --- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/Views/RmlsView.xaml +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/Views/RmlsView.xaml @@ -9,6 +9,7 @@ xmlns:shapes="clr-namespace:Tango.SharedUI.Shapes;assembly=Tango.SharedUI" xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes" xmlns:converters="clr-namespace:Tango.SharedUI.Converters;assembly=Tango.SharedUI" + xmlns:mahapps="http://metro.mahapps.com/winfx/xaml/controls" xmlns:local="clr-namespace:Tango.MachineStudio.RML.Views" mc:Ignorable="d" d:DesignHeight="1080" d:DesignWidth="1920" Background="Transparent" d:DataContext="{d:DesignInstance Type=vm:MainViewVM, IsDesignTimeCreatable=False}" DataContext="{x:Static global:ViewModelLocator.MainViewVM}"> @@ -19,6 +20,7 @@ <converters:BooleanToYesNoConverter x:Key="BooleanToYesNoConverter" /> <converters:EnumToDescriptionConverter x:Key="EnumToDescriptionConverter" /> <converters:IsNullToVisibilityConverter x:Key="IsNullToVisibilityConverter" /> + <converters:BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter" /> </UserControl.Resources> <Grid IsEnabled="{Binding IsFree}"> @@ -130,7 +132,8 @@ <!--<DataGridTextColumn Header="CL GR" Binding="{Binding UseGradients,Converter={StaticResource BooleanToYesNoConverter}}" Width="Auto" />--> <!--<DataGridTextColumn Header="LIGHT INKS" Binding="{Binding UseLightInks,Converter={StaticResource BooleanToYesNoConverter}}" Width="Auto" />--> <DataGridTextColumn Header="LAST UPDATED" Binding="{Binding LastUpdated,Converter={StaticResource DateTimeUTCToShortDateTimeConverter}}" Width="Auto" /> - <DataGridTemplateColumn Header="LIQUID FACTORS" Width="1*"> + <DataGridTextColumn Header="MACHINE TYPE" Binding="{Binding MachineType,Converter={StaticResource EnumToDescriptionConverter}}" Width="Auto" /> + <!--<DataGridTemplateColumn Header="LIQUID FACTORS" Width="1*"> <DataGridTemplateColumn.CellTemplate> <DataTemplate> <ItemsControl ItemsSource="{Binding LiquidTypesR}" Margin="0 -5 0 0"> @@ -157,9 +160,13 @@ </ItemsControl> </DataTemplate> </DataGridTemplateColumn.CellTemplate> - </DataGridTemplateColumn> + </DataGridTemplateColumn>--> </DataGrid.Columns> </DataGrid> + + <Grid Background="#19000000" Visibility="{Binding LoadingRmls,Converter={StaticResource BooleanToVisibilityConverter}}"> + <mahapps:ProgressRing HorizontalAlignment="Center" VerticalAlignment="Center" Width="100" Height="100"></mahapps:ProgressRing> + </Grid> </Grid> </DockPanel> </Grid> diff --git a/Software/Visual_Studio/Tango.BL/DTO/RmlDTOBase.cs b/Software/Visual_Studio/Tango.BL/DTO/RmlDTOBase.cs index 460d1f193..03bd6b656 100644 --- a/Software/Visual_Studio/Tango.BL/DTO/RmlDTOBase.cs +++ b/Software/Visual_Studio/Tango.BL/DTO/RmlDTOBase.cs @@ -445,5 +445,13 @@ namespace Tango.BL.DTO get; set; } + /// <summary> + /// machine type + /// </summary> + public Nullable<Int32> MachineType + { + get; set; + } + } } diff --git a/Software/Visual_Studio/Tango.BL/Entities/Rml.cs b/Software/Visual_Studio/Tango.BL/Entities/Rml.cs index fdeb8f05e..3f35ed11f 100644 --- a/Software/Visual_Studio/Tango.BL/Entities/Rml.cs +++ b/Software/Visual_Studio/Tango.BL/Entities/Rml.cs @@ -106,6 +106,21 @@ namespace Tango.BL.Entities } } + [NotMapped] + [JsonIgnore] + public MachineTypes? ForMachineType + { + get + { + return MachineType != null ? (MachineTypes?)MachineType : null; + } + set + { + MachineType = (int?)value; + RaisePropertyChanged(nameof(ForMachineType)); + } + } + protected override void OnNameChanged(string name) { base.OnNameChanged(name); diff --git a/Software/Visual_Studio/Tango.BL/Entities/RmlBase.cs b/Software/Visual_Studio/Tango.BL/Entities/RmlBase.cs index 357be1666..59881f3d5 100644 --- a/Software/Visual_Studio/Tango.BL/Entities/RmlBase.cs +++ b/Software/Visual_Studio/Tango.BL/Entities/RmlBase.cs @@ -111,6 +111,8 @@ namespace Tango.BL.Entities public event EventHandler<Double> DefaultLiquidFactorChanged; + public event EventHandler<Nullable<Int32>> MachineTypeChanged; + public event EventHandler<BtsrApplicationType> BtsrApplicationTypeChanged; public event EventHandler<BtsrYarnType> BtsrYarnTypeChanged; @@ -1569,6 +1571,33 @@ namespace Tango.BL.Entities } } + protected Nullable<Int32> _machinetype; + + /// <summary> + /// Gets or sets the rmlbase machine type. + /// </summary> + + [Column("MACHINE_TYPE")] + + public Nullable<Int32> MachineType + { + get + { + return _machinetype; + } + + set + { + if (_machinetype != value) + { + _machinetype = value; + + OnMachineTypeChanged(value); + + } + } + } + protected BtsrApplicationType _btsrapplicationtype; /// <summary> @@ -2500,6 +2529,15 @@ namespace Tango.BL.Entities } /// <summary> + /// Called when the MachineType has changed. + /// </summary> + protected virtual void OnMachineTypeChanged(Nullable<Int32> machinetype) + { + MachineTypeChanged?.Invoke(this, machinetype); + RaisePropertyChanged(nameof(MachineType)); + } + + /// <summary> /// Called when the BtsrApplicationType has changed. /// </summary> protected virtual void OnBtsrApplicationTypeChanged(BtsrApplicationType btsrapplicationtype) diff --git a/Software/Visual_Studio/Tango.DAL.Remote/DB/RML.cs b/Software/Visual_Studio/Tango.DAL.Remote/DB/RML.cs index f6f747893..7f73b5575 100644 --- a/Software/Visual_Studio/Tango.DAL.Remote/DB/RML.cs +++ b/Software/Visual_Studio/Tango.DAL.Remote/DB/RML.cs @@ -83,6 +83,7 @@ namespace Tango.DAL.Remote.DB public string BTSR_YARN_TYPE_GUID { get; set; } public double BTSR_TENSION_ERROR { get; set; } public double DEFAULT_LIQUID_FACTOR { get; set; } + public Nullable<int> MACHINE_TYPE { get; set; } public virtual BTSR_APPLICATION_TYPES BTSR_APPLICATION_TYPES { get; set; } public virtual BTSR_YARN_TYPES BTSR_YARN_TYPES { get; set; } diff --git a/Software/Visual_Studio/Tango.DAL.Remote/DB/RemoteADO.edmx b/Software/Visual_Studio/Tango.DAL.Remote/DB/RemoteADO.edmx index 8ed5c4fed..93ca57214 100644 --- a/Software/Visual_Studio/Tango.DAL.Remote/DB/RemoteADO.edmx +++ b/Software/Visual_Studio/Tango.DAL.Remote/DB/RemoteADO.edmx @@ -1459,6 +1459,7 @@ <Property Name="BTSR_YARN_TYPE_GUID" Type="varchar" MaxLength="36" /> <Property Name="BTSR_TENSION_ERROR" Type="float" Nullable="false" /> <Property Name="DEFAULT_LIQUID_FACTOR" Type="float" Nullable="false" /> + <Property Name="MACHINE_TYPE" Type="int" /> </EntityType> <EntityType Name="RMLS_EXTENSIONS"> <Key> @@ -7109,6 +7110,7 @@ <Property Name="BTSR_YARN_TYPE_GUID" Type="String" MaxLength="36" FixedLength="false" Unicode="false" /> <Property Name="BTSR_TENSION_ERROR" Type="Double" Nullable="false" /> <Property Name="DEFAULT_LIQUID_FACTOR" Type="Double" Nullable="false" /> + <Property Name="MACHINE_TYPE" Type="Int32" /> <NavigationProperty Name="BTSR_APPLICATION_TYPES" Relationship="RemoteModel.FK_RMLS_BTSR_APPLICATION_TYPES" FromRole="RML" ToRole="BTSR_APPLICATION_TYPES" /> <NavigationProperty Name="BTSR_YARN_TYPES" Relationship="RemoteModel.FK_RMLS_BTSR_YARN_TYPES" FromRole="RML" ToRole="BTSR_YARN_TYPES" /> <NavigationProperty Name="CATS" Relationship="RemoteModel.FK_CATS_RMLS" FromRole="RML" ToRole="CAT" /> @@ -10593,6 +10595,7 @@ <EntitySetMapping Name="RMLS"> <EntityTypeMapping TypeName="RemoteModel.RML"> <MappingFragment StoreEntitySet="RMLS"> + <ScalarProperty Name="MACHINE_TYPE" ColumnName="MACHINE_TYPE" /> <ScalarProperty Name="DEFAULT_LIQUID_FACTOR" ColumnName="DEFAULT_LIQUID_FACTOR" /> <ScalarProperty Name="BTSR_TENSION_ERROR" ColumnName="BTSR_TENSION_ERROR" /> <ScalarProperty Name="BTSR_YARN_TYPE_GUID" ColumnName="BTSR_YARN_TYPE_GUID" /> diff --git a/Software/Visual_Studio/Tango.DAL.Remote/DB/RemoteADO.edmx.diagram b/Software/Visual_Studio/Tango.DAL.Remote/DB/RemoteADO.edmx.diagram index 99c611661..b032b64d6 100644 --- a/Software/Visual_Studio/Tango.DAL.Remote/DB/RemoteADO.edmx.diagram +++ b/Software/Visual_Studio/Tango.DAL.Remote/DB/RemoteADO.edmx.diagram @@ -5,103 +5,103 @@ <!-- Diagram content (shape and connector positions) --> <edmx:Diagrams> <Diagram DiagramId="f9ae01d708754bbd997add25a4bacc79" Name="Diagram1" ZoomLevel="58"> - <EntityTypeShape EntityType="RemoteModel.ACTION_LOGS" Width="1.5" PointX="11.25" PointY="16.5" /> - <EntityTypeShape EntityType="RemoteModel.ADDRESS" Width="1.5" PointX="1.5" PointY="89.75" /> - <EntityTypeShape EntityType="RemoteModel.APPLICATION_DISPLAY_PANEL_VERSIONS" Width="1.5" PointX="1.5" PointY="72.25" /> - <EntityTypeShape EntityType="RemoteModel.APPLICATION_FIRMWARE_VERSIONS" Width="1.5" PointX="1.5" PointY="75.125" /> - <EntityTypeShape EntityType="RemoteModel.APPLICATION_OS_VERSIONS" Width="1.5" PointX="1.5" PointY="52.375" /> - <EntityTypeShape EntityType="RemoteModel.BIT_TYPES" Width="1.5" PointX="8.75" PointY="1.25" /> - <EntityTypeShape EntityType="RemoteModel.BRUSH_STOPS" Width="1.5" PointX="18" PointY="21.25" /> - <EntityTypeShape EntityType="RemoteModel.BTSR_APPLICATION_TYPES" Width="1.5" PointX="0.75" PointY="42" /> - <EntityTypeShape EntityType="RemoteModel.BTSR_YARN_TYPES" Width="1.5" PointX="0.75" PointY="29.875" /> - <EntityTypeShape EntityType="RemoteModel.CARTRIDGE_TYPES" Width="1.5" PointX="9" PointY="66.5" /> - <EntityTypeShape EntityType="RemoteModel.CAT" Width="1.5" PointX="5.25" PointY="26" /> - <EntityTypeShape EntityType="RemoteModel.CCT" Width="1.5" PointX="0.75" PointY="12.25" /> - <EntityTypeShape EntityType="RemoteModel.COLOR_CATALOGS" Width="1.5" PointX="1.5" PointY="0.75" /> - <EntityTypeShape EntityType="RemoteModel.COLOR_CATALOGS_GROUPS" Width="1.5" PointX="0.75" PointY="7.25" /> - <EntityTypeShape EntityType="RemoteModel.COLOR_CATALOGS_ITEMS" Width="1.5" PointX="3" PointY="6" /> - <EntityTypeShape EntityType="RemoteModel.COLOR_CATALOGS_ITEMS_RECIPES" Width="1.5" PointX="5.25" PointY="21.875" /> - <EntityTypeShape EntityType="RemoteModel.COLOR_MEASUREMENTS" Width="1.5" PointX="14.75" PointY="1.25" /> - <EntityTypeShape EntityType="RemoteModel.COLOR_PROCESS_INK_UPTAKE" Width="1.5" PointX="13.75" PointY="13.25" /> - <EntityTypeShape EntityType="RemoteModel.COLOR_SPACES" Width="1.5" PointX="9" PointY="42" /> - <EntityTypeShape EntityType="RemoteModel.CONFIGURATION" Width="1.5" PointX="0.75" PointY="58.125" /> - <EntityTypeShape EntityType="RemoteModel.CONTACT" Width="1.5" PointX="1.5" PointY="93.75" /> - <EntityTypeShape EntityType="RemoteModel.CUSTOMER" Width="1.5" PointX="9" PointY="35.75" /> - <EntityTypeShape EntityType="RemoteModel.DATA_STORE_ITEMS" Width="1.5" PointX="5.25" PointY="69.25" /> - <EntityTypeShape EntityType="RemoteModel.DISPENSER_TYPES" Width="1.5" PointX="6.75" PointY="7.875" /> - <EntityTypeShape EntityType="RemoteModel.DISPENSER" Width="1.5" PointX="9" PointY="7.25" /> - <EntityTypeShape EntityType="RemoteModel.EMBEDDED_FIRMWARE_VERSIONS" Width="1.5" PointX="1.5" PointY="69.25" /> - <EntityTypeShape EntityType="RemoteModel.EVENT_TYPES" Width="1.5" PointX="9" PointY="69.5" /> - <EntityTypeShape EntityType="RemoteModel.FIBER_SHAPES" Width="1.5" PointX="0.75" PointY="15.5" /> - <EntityTypeShape EntityType="RemoteModel.FIBER_SYNTHS" Width="1.5" PointX="0.75" PointY="26.375" /> - <EntityTypeShape EntityType="RemoteModel.FSE_VERSIONS" Width="1.5" PointX="11.25" PointY="12.875" /> - <EntityTypeShape EntityType="RemoteModel.GBD" Width="1.5" PointX="0.75" PointY="45.25" /> - <EntityTypeShape EntityType="RemoteModel.GLOBAL_DATA_STORE_ITEMS" Width="1.5" PointX="2.75" PointY="16.25" /> - <EntityTypeShape EntityType="RemoteModel.HARDWARE_BLOWER_TYPES" Width="1.5" PointX="1.5" PointY="97.875" /> - <EntityTypeShape EntityType="RemoteModel.HARDWARE_BLOWERS" Width="1.5" PointX="3.75" PointY="74.5" /> - <EntityTypeShape EntityType="RemoteModel.HARDWARE_BREAK_SENSOR_TYPES" Width="1.5" PointX="1.5" PointY="105.875" /> - <EntityTypeShape EntityType="RemoteModel.HARDWARE_BREAK_SENSORS" Width="1.5" PointX="3.75" PointY="82.5" /> - <EntityTypeShape EntityType="RemoteModel.HARDWARE_DANCER_TYPES" Width="1.5" PointX="4.5" PointY="90.875" /> - <EntityTypeShape EntityType="RemoteModel.HARDWARE_DANCERS" Width="1.5" PointX="6.75" PointY="82.75" /> - <EntityTypeShape EntityType="RemoteModel.HARDWARE_MOTOR_TYPES" Width="1.5" PointX="10.5" PointY="84.75" /> - <EntityTypeShape EntityType="RemoteModel.HARDWARE_MOTORS" Width="1.5" PointX="12.75" PointY="75.5" /> - <EntityTypeShape EntityType="RemoteModel.HARDWARE_PID_CONTROL_TYPES" Width="1.5" PointX="7.5" PointY="74.875" /> - <EntityTypeShape EntityType="RemoteModel.HARDWARE_PID_CONTROLS" Width="1.5" PointX="9.75" PointY="76.875" /> - <EntityTypeShape EntityType="RemoteModel.HARDWARE_SPEED_SENSOR_TYPES" Width="1.5" PointX="4.5" PointY="86.875" /> - <EntityTypeShape EntityType="RemoteModel.HARDWARE_SPEED_SENSORS" Width="1.5" PointX="6.75" PointY="78.5" /> - <EntityTypeShape EntityType="RemoteModel.HARDWARE_VERSIONS" Width="1.5" PointX="1.5" PointY="78.125" /> - <EntityTypeShape EntityType="RemoteModel.HARDWARE_WINDER_TYPES" Width="1.5" PointX="1.5" PointY="101.875" /> - <EntityTypeShape EntityType="RemoteModel.HARDWARE_WINDERS" Width="1.5" PointX="3.75" PointY="78.625" /> - <EntityTypeShape EntityType="RemoteModel.IDS_PACK_FORMULAS" Width="1.5" PointX="9" PointY="12" /> - <EntityTypeShape EntityType="RemoteModel.IDS_PACKS" Width="1.5" PointX="11.25" PointY="37" /> - <EntityTypeShape EntityType="RemoteModel.JOB_RUNS" Width="1.5" PointX="18.75" PointY="1.25" /> - <EntityTypeShape EntityType="RemoteModel.JOB" Width="1.5" PointX="11.25" PointY="22.25" /> - <EntityTypeShape EntityType="RemoteModel.LINEAR_MASS_DENSITY_UNITS" Width="1.5" PointX="0.75" PointY="36.125" /> - <EntityTypeShape EntityType="RemoteModel.LIQUID_TYPES" Width="1.5" PointX="6" PointY="16.125" /> - <EntityTypeShape EntityType="RemoteModel.LIQUID_TYPES_RMLS" Width="1.5" PointX="8.25" PointY="22.125" /> - <EntityTypeShape EntityType="RemoteModel.LUB" Width="1.5" PointX="0.75" PointY="21.5" /> - <EntityTypeShape EntityType="RemoteModel.MACHINE_PROTOTYPES" Width="1.5" PointX="15.75" PointY="13.25" /> - <EntityTypeShape EntityType="RemoteModel.MACHINE_STUDIO_VERSIONS" Width="1.5" PointX="11.25" PointY="9.375" /> - <EntityTypeShape EntityType="RemoteModel.MACHINE_VERSIONS" Width="1.5" PointX="0.75" PointY="49.125" /> - <EntityTypeShape EntityType="RemoteModel.MACHINE" Width="1.5" PointX="3" PointY="57" /> - <EntityTypeShape EntityType="RemoteModel.MACHINES_EVENTS" Width="1.5" PointX="11.25" PointY="42.875" /> - <EntityTypeShape EntityType="RemoteModel.MEDIA_CONDITIONS" Width="1.5" PointX="0.75" PointY="33.125" /> - <EntityTypeShape EntityType="RemoteModel.MEDIA_MATERIALS" Width="1.5" PointX="0.75" PointY="18.5" /> - <EntityTypeShape EntityType="RemoteModel.MEDIA_PURPOSES" Width="1.5" PointX="0.75" PointY="39" /> - <EntityTypeShape EntityType="RemoteModel.MID_TANK_TYPES" Width="1.5" PointX="9" PointY="45.625" /> - <EntityTypeShape EntityType="RemoteModel.ORGANIZATION" Width="1.5" PointX="0.75" PointY="84.625" /> - <EntityTypeShape EntityType="RemoteModel.PERMISSION" Width="1.5" PointX="12" PointY="1.75" /> - <EntityTypeShape EntityType="RemoteModel.PROCESS_PARAMETERS_TABLES" Width="1.5" PointX="7.5" PointY="50.25" /> - <EntityTypeShape EntityType="RemoteModel.PROCESS_PARAMETERS_TABLES_GROUPS" Width="1.5" PointX="5.25" PointY="56.5" /> - <EntityTypeShape EntityType="RemoteModel.PUBLISHED_PROCEDURE_PROJECTS" Width="1.5" PointX="13.75" PointY="9.5" /> - <EntityTypeShape EntityType="RemoteModel.PUBLISHED_PROCEDURE_PROJECTS_VERSIONS" Width="1.5" PointX="16" PointY="9.625" /> - <EntityTypeShape EntityType="RemoteModel.RML_EXTENSION_TEST_WASHING_RESULTS" Width="1.5" PointX="6" PointY="1.5" /> - <EntityTypeShape EntityType="RemoteModel.RML" Width="1.5" PointX="3" PointY="19.75" /> - <EntityTypeShape EntityType="RemoteModel.RMLS_SPOOLS" Width="1.5" PointX="8.25" PointY="25.625" /> - <EntityTypeShape EntityType="RemoteModel.ROLE" Width="1.5" PointX="12" PointY="5.625" /> - <EntityTypeShape EntityType="RemoteModel.ROLES_PERMISSIONS" Width="1.5" PointX="14.25" PointY="5.75" /> - <EntityTypeShape EntityType="RemoteModel.RUBBING_RESULTS" Width="1.5" PointX="13.75" PointY="20.25" /> - <EntityTypeShape EntityType="RemoteModel.SEGMENT" Width="1.5" PointX="15.75" PointY="26" /> - <EntityTypeShape EntityType="RemoteModel.SEGMENTS_GROUPS" Width="1.5" PointX="13.5" PointY="26.25" /> - <EntityTypeShape EntityType="RemoteModel.SITE" Width="1.5" PointX="3" PointY="36" /> - <EntityTypeShape EntityType="RemoteModel.SITES_CATALOGS" Width="1.5" PointX="5.25" PointY="12.625" /> - <EntityTypeShape EntityType="RemoteModel.SITES_RMLS" Width="1.5" PointX="5.25" PointY="30.375" /> - <EntityTypeShape EntityType="RemoteModel.SITES_SPOOL_TYPES" Width="1.5" PointX="14.25" PointY="36.5" /> - <EntityTypeShape EntityType="RemoteModel.SPOOL_TYPES" Width="1.5" PointX="9" PointY="30.25" /> - <EntityTypeShape EntityType="RemoteModel.SPOOL" Width="1.5" PointX="11.25" PointY="47.5" /> - <EntityTypeShape EntityType="RemoteModel.sysdiagram" Width="1.5" PointX="20.75" PointY="1.25" /> - <EntityTypeShape EntityType="RemoteModel.TANGO_UPDATES" Width="1.5" PointX="20.75" PointY="4.25" /> - <EntityTypeShape EntityType="RemoteModel.TANGO_VERSIONS" Width="1.5" PointX="14.25" PointY="31.625" /> - <EntityTypeShape EntityType="RemoteModel.TECH_CONTROLLERS" Width="1.5" PointX="20.75" PointY="9.25" /> - <EntityTypeShape EntityType="RemoteModel.TECH_DISPENSERS" Width="1.5" PointX="20.75" PointY="13.25" /> - <EntityTypeShape EntityType="RemoteModel.TECH_HEATERS" Width="1.5" PointX="20.75" PointY="16.25" /> - <EntityTypeShape EntityType="RemoteModel.TECH_IOS" Width="1.5" PointX="20.75" PointY="19.25" /> - <EntityTypeShape EntityType="RemoteModel.TECH_MONITORS" Width="1.5" PointX="22.75" PointY="1.25" /> - <EntityTypeShape EntityType="RemoteModel.TECH_VALVES" Width="1.5" PointX="22.75" PointY="6.25" /> - <EntityTypeShape EntityType="RemoteModel.USER" Width="1.5" PointX="9" PointY="15.25" /> - <EntityTypeShape EntityType="RemoteModel.USERS_ROLES" Width="1.5" PointX="14.25" PointY="16.75" /> - <EntityTypeShape EntityType="RemoteModel.WASHING_TEST_MATERIALS" Width="1.5" PointX="3.75" PointY="2" /> - <EntityTypeShape EntityType="RemoteModel.WINDING_METHODS" Width="1.5" PointX="9" PointY="38.875" /> + <EntityTypeShape EntityType="RemoteModel.ACTION_LOGS" Width="1.5" PointX="11.25" PointY="54.875" /> + <EntityTypeShape EntityType="RemoteModel.ADDRESS" Width="1.5" PointX="1.5" PointY="89.25" /> + <EntityTypeShape EntityType="RemoteModel.APPLICATION_DISPLAY_PANEL_VERSIONS" Width="1.5" PointX="1.5" PointY="76" /> + <EntityTypeShape EntityType="RemoteModel.APPLICATION_FIRMWARE_VERSIONS" Width="1.5" PointX="1.5" PointY="48.5" /> + <EntityTypeShape EntityType="RemoteModel.APPLICATION_OS_VERSIONS" Width="1.5" PointX="1.5" PointY="79" /> + <EntityTypeShape EntityType="RemoteModel.BIT_TYPES" Width="1.5" PointX="10.75" PointY="9" /> + <EntityTypeShape EntityType="RemoteModel.BRUSH_STOPS" Width="1.5" PointX="18" PointY="21" /> + <EntityTypeShape EntityType="RemoteModel.BTSR_APPLICATION_TYPES" Width="1.5" PointX="0.75" PointY="38.75" /> + <EntityTypeShape EntityType="RemoteModel.BTSR_YARN_TYPES" Width="1.5" PointX="0.75" PointY="12" /> + <EntityTypeShape EntityType="RemoteModel.CARTRIDGE_TYPES" Width="1.5" PointX="3" PointY="43.125" /> + <EntityTypeShape EntityType="RemoteModel.CAT" Width="1.5" PointX="5.25" PointY="21.75" /> + <EntityTypeShape EntityType="RemoteModel.CCT" Width="1.5" PointX="0.75" PointY="45" /> + <EntityTypeShape EntityType="RemoteModel.COLOR_CATALOGS" Width="1.5" PointX="1.5" PointY="1.5" /> + <EntityTypeShape EntityType="RemoteModel.COLOR_CATALOGS_GROUPS" Width="1.5" PointX="3.75" PointY="2" /> + <EntityTypeShape EntityType="RemoteModel.COLOR_CATALOGS_ITEMS" Width="1.5" PointX="6" PointY="0.75" /> + <EntityTypeShape EntityType="RemoteModel.COLOR_CATALOGS_ITEMS_RECIPES" Width="1.5" PointX="8.25" PointY="25.625" /> + <EntityTypeShape EntityType="RemoteModel.COLOR_MEASUREMENTS" Width="1.5" PointX="2.75" PointY="13" /> + <EntityTypeShape EntityType="RemoteModel.COLOR_PROCESS_INK_UPTAKE" Width="1.5" PointX="4.75" PointY="13" /> + <EntityTypeShape EntityType="RemoteModel.COLOR_SPACES" Width="1.5" PointX="9" PointY="33.625" /> + <EntityTypeShape EntityType="RemoteModel.CONFIGURATION" Width="1.5" PointX="0.75" PointY="54.25" /> + <EntityTypeShape EntityType="RemoteModel.CONTACT" Width="1.5" PointX="1.5" PointY="93.25" /> + <EntityTypeShape EntityType="RemoteModel.CUSTOMER" Width="1.5" PointX="9" PointY="30.5" /> + <EntityTypeShape EntityType="RemoteModel.DATA_STORE_ITEMS" Width="1.5" PointX="5.25" PointY="68.75" /> + <EntityTypeShape EntityType="RemoteModel.DISPENSER_TYPES" Width="1.5" PointX="0.75" PointY="98.125" /> + <EntityTypeShape EntityType="RemoteModel.DISPENSER" Width="1.5" PointX="3" PointY="97.5" /> + <EntityTypeShape EntityType="RemoteModel.EMBEDDED_FIRMWARE_VERSIONS" Width="1.5" PointX="1.5" PointY="68.5" /> + <EntityTypeShape EntityType="RemoteModel.EVENT_TYPES" Width="1.5" PointX="9" PointY="83.125" /> + <EntityTypeShape EntityType="RemoteModel.FIBER_SHAPES" Width="1.5" PointX="0.75" PointY="35.875" /> + <EntityTypeShape EntityType="RemoteModel.FIBER_SYNTHS" Width="1.5" PointX="0.75" PointY="21.5" /> + <EntityTypeShape EntityType="RemoteModel.FSE_VERSIONS" Width="1.5" PointX="11.25" PointY="34.625" /> + <EntityTypeShape EntityType="RemoteModel.GBD" Width="1.5" PointX="0.75" PointY="15.25" /> + <EntityTypeShape EntityType="RemoteModel.GLOBAL_DATA_STORE_ITEMS" Width="1.5" PointX="12.75" PointY="9" /> + <EntityTypeShape EntityType="RemoteModel.HARDWARE_BLOWER_TYPES" Width="1.5" PointX="1.5" PointY="102.125" /> + <EntityTypeShape EntityType="RemoteModel.HARDWARE_BLOWERS" Width="1.5" PointX="3.75" PointY="72.75" /> + <EntityTypeShape EntityType="RemoteModel.HARDWARE_BREAK_SENSOR_TYPES" Width="1.5" PointX="8.5" PointY="89.125" /> + <EntityTypeShape EntityType="RemoteModel.HARDWARE_BREAK_SENSORS" Width="1.5" PointX="10.75" PointY="68.875" /> + <EntityTypeShape EntityType="RemoteModel.HARDWARE_DANCER_TYPES" Width="1.5" PointX="5.5" PointY="85.125" /> + <EntityTypeShape EntityType="RemoteModel.HARDWARE_DANCERS" Width="1.5" PointX="7.75" PointY="67.125" /> + <EntityTypeShape EntityType="RemoteModel.HARDWARE_MOTOR_TYPES" Width="1.5" PointX="7.5" PointY="93.125" /> + <EntityTypeShape EntityType="RemoteModel.HARDWARE_MOTORS" Width="1.5" PointX="9.75" PointY="72.75" /> + <EntityTypeShape EntityType="RemoteModel.HARDWARE_PID_CONTROL_TYPES" Width="1.5" PointX="1.5" PointY="106.125" /> + <EntityTypeShape EntityType="RemoteModel.HARDWARE_PID_CONTROLS" Width="1.5" PointX="3.75" PointY="77.25" /> + <EntityTypeShape EntityType="RemoteModel.HARDWARE_SPEED_SENSOR_TYPES" Width="1.5" PointX="4.5" PointY="93.125" /> + <EntityTypeShape EntityType="RemoteModel.HARDWARE_SPEED_SENSORS" Width="1.5" PointX="6.75" PointY="76.875" /> + <EntityTypeShape EntityType="RemoteModel.HARDWARE_VERSIONS" Width="1.5" PointX="1.5" PointY="71.375" /> + <EntityTypeShape EntityType="RemoteModel.HARDWARE_WINDER_TYPES" Width="1.5" PointX="4.5" PointY="89.125" /> + <EntityTypeShape EntityType="RemoteModel.HARDWARE_WINDERS" Width="1.5" PointX="6.75" PointY="73" /> + <EntityTypeShape EntityType="RemoteModel.IDS_PACK_FORMULAS" Width="1.5" PointX="3" PointY="39.875" /> + <EntityTypeShape EntityType="RemoteModel.IDS_PACKS" Width="1.5" PointX="5.25" PointY="34.625" /> + <EntityTypeShape EntityType="RemoteModel.JOB_RUNS" Width="1.5" PointX="14.75" PointY="1" /> + <EntityTypeShape EntityType="RemoteModel.JOB" Width="1.5" PointX="11.25" PointY="22" /> + <EntityTypeShape EntityType="RemoteModel.LINEAR_MASS_DENSITY_UNITS" Width="1.5" PointX="0.75" PointY="26.25" /> + <EntityTypeShape EntityType="RemoteModel.LIQUID_TYPES" Width="1.5" PointX="3" PointY="7.125" /> + <EntityTypeShape EntityType="RemoteModel.LIQUID_TYPES_RMLS" Width="1.5" PointX="5.25" PointY="25.875" /> + <EntityTypeShape EntityType="RemoteModel.LUB" Width="1.5" PointX="0.75" PointY="29.5" /> + <EntityTypeShape EntityType="RemoteModel.MACHINE_PROTOTYPES" Width="1.5" PointX="11.75" PointY="13" /> + <EntityTypeShape EntityType="RemoteModel.MACHINE_STUDIO_VERSIONS" Width="1.5" PointX="11.25" PointY="44.375" /> + <EntityTypeShape EntityType="RemoteModel.MACHINE_VERSIONS" Width="1.5" PointX="0.75" PointY="64.875" /> + <EntityTypeShape EntityType="RemoteModel.MACHINE" Width="1.5" PointX="3" PointY="56.5" /> + <EntityTypeShape EntityType="RemoteModel.MACHINES_EVENTS" Width="1.5" PointX="11.25" PointY="50.5" /> + <EntityTypeShape EntityType="RemoteModel.MEDIA_CONDITIONS" Width="1.5" PointX="0.75" PointY="18.625" /> + <EntityTypeShape EntityType="RemoteModel.MEDIA_MATERIALS" Width="1.5" PointX="0.75" PointY="32.75" /> + <EntityTypeShape EntityType="RemoteModel.MEDIA_PURPOSES" Width="1.5" PointX="0.75" PointY="42.125" /> + <EntityTypeShape EntityType="RemoteModel.MID_TANK_TYPES" Width="1.5" PointX="3" PointY="36.25" /> + <EntityTypeShape EntityType="RemoteModel.ORGANIZATION" Width="1.5" PointX="0.75" PointY="84.125" /> + <EntityTypeShape EntityType="RemoteModel.PERMISSION" Width="1.5" PointX="12" PointY="63.5" /> + <EntityTypeShape EntityType="RemoteModel.PROCESS_PARAMETERS_TABLES" Width="1.5" PointX="7.5" PointY="50.125" /> + <EntityTypeShape EntityType="RemoteModel.PROCESS_PARAMETERS_TABLES_GROUPS" Width="1.5" PointX="5.25" PointY="56.375" /> + <EntityTypeShape EntityType="RemoteModel.PUBLISHED_PROCEDURE_PROJECTS" Width="1.5" PointX="8.75" PointY="5.25" /> + <EntityTypeShape EntityType="RemoteModel.PUBLISHED_PROCEDURE_PROJECTS_VERSIONS" Width="1.5" PointX="11" PointY="5.5" /> + <EntityTypeShape EntityType="RemoteModel.RML_EXTENSION_TEST_WASHING_RESULTS" Width="1.5" PointX="11" PointY="1.25" /> + <EntityTypeShape EntityType="RemoteModel.RML" Width="1.5" PointX="3" PointY="19.5" /> + <EntityTypeShape EntityType="RemoteModel.RMLS_SPOOLS" Width="1.5" PointX="5.25" PointY="29.375" /> + <EntityTypeShape EntityType="RemoteModel.ROLE" Width="1.5" PointX="12" PointY="59.5" /> + <EntityTypeShape EntityType="RemoteModel.ROLES_PERMISSIONS" Width="1.5" PointX="14.25" PointY="59.5" /> + <EntityTypeShape EntityType="RemoteModel.RUBBING_RESULTS" Width="1.5" PointX="16.75" PointY="1" /> + <EntityTypeShape EntityType="RemoteModel.SEGMENT" Width="1.5" PointX="15.75" PointY="25.75" /> + <EntityTypeShape EntityType="RemoteModel.SEGMENTS_GROUPS" Width="1.5" PointX="13.5" PointY="26" /> + <EntityTypeShape EntityType="RemoteModel.SITE" Width="1.5" PointX="6" PointY="17.75" /> + <EntityTypeShape EntityType="RemoteModel.SITES_CATALOGS" Width="1.5" PointX="8.25" PointY="10" /> + <EntityTypeShape EntityType="RemoteModel.SITES_RMLS" Width="1.5" PointX="8.25" PointY="22.125" /> + <EntityTypeShape EntityType="RemoteModel.SITES_SPOOL_TYPES" Width="1.5" PointX="11.25" PointY="17.25" /> + <EntityTypeShape EntityType="RemoteModel.SPOOL_TYPES" Width="1.5" PointX="9" PointY="16.125" /> + <EntityTypeShape EntityType="RemoteModel.SPOOL" Width="1.5" PointX="11.25" PointY="40.125" /> + <EntityTypeShape EntityType="RemoteModel.sysdiagram" Width="1.5" PointX="5.75" PointY="7" /> + <EntityTypeShape EntityType="RemoteModel.TANGO_UPDATES" Width="1.5" PointX="16.75" PointY="5" /> + <EntityTypeShape EntityType="RemoteModel.TANGO_VERSIONS" Width="1.5" PointX="14.25" PointY="50.375" /> + <EntityTypeShape EntityType="RemoteModel.TECH_CONTROLLERS" Width="1.5" PointX="16.75" PointY="10" /> + <EntityTypeShape EntityType="RemoteModel.TECH_DISPENSERS" Width="1.5" PointX="16.75" PointY="14" /> + <EntityTypeShape EntityType="RemoteModel.TECH_HEATERS" Width="1.5" PointX="16.75" PointY="17" /> + <EntityTypeShape EntityType="RemoteModel.TECH_IOS" Width="1.5" PointX="18.75" PointY="1" /> + <EntityTypeShape EntityType="RemoteModel.TECH_MONITORS" Width="1.5" PointX="18.75" PointY="6" /> + <EntityTypeShape EntityType="RemoteModel.TECH_VALVES" Width="1.5" PointX="18.75" PointY="11" /> + <EntityTypeShape EntityType="RemoteModel.USER" Width="1.5" PointX="9" PointY="37.125" /> + <EntityTypeShape EntityType="RemoteModel.USERS_ROLES" Width="1.5" PointX="14.25" PointY="38.5" /> + <EntityTypeShape EntityType="RemoteModel.WASHING_TEST_MATERIALS" Width="1.5" PointX="8.75" PointY="1.75" /> + <EntityTypeShape EntityType="RemoteModel.WINDING_METHODS" Width="1.5" PointX="9" PointY="43.125" /> <AssociationConnector Association="RemoteModel.FK_ACTION_LOGS_USERS" /> <AssociationConnector Association="RemoteModel.FK_ORGANIZATIONS_ADDRESSES" /> <AssociationConnector Association="RemoteModel.FK_USERS_ADDRESSES" /> diff --git a/Software/Visual_Studio/Tango.Integration/JobRuns/BasicJobRunsLogger.cs b/Software/Visual_Studio/Tango.Integration/JobRuns/BasicJobRunsLogger.cs index e128a5949..4f442152d 100644 --- a/Software/Visual_Studio/Tango.Integration/JobRuns/BasicJobRunsLogger.cs +++ b/Software/Visual_Studio/Tango.Integration/JobRuns/BasicJobRunsLogger.cs @@ -15,6 +15,7 @@ using Tango.BL.Enumerations; using Tango.Core; using Tango.Core.ExtensionMethods; using Tango.Integration.Operation; +using Tango.Logging; using Tango.PMR.MachineStatus; using Tango.PMR.Printing; @@ -399,44 +400,32 @@ namespace Tango.Integration.JobRuns } } - private void SetJobRunLiquidQuantities(JobRun run, List<BL.ValueObjects.JobRunLiquidQuantity> quantities, bool update = false) + + public void SetJobRunLiquidQuantities(JobRun run, IEnumerable<BL.ValueObjects.JobRunLiquidQuantity> quantities, bool update = false) { - if (run == null || quantities == null) - return; + if (run == null || quantities == null) return; - // Map each LiquidType to the corresponding JobRun property updater - var setters = new Dictionary<LiquidTypes, Action<long>> - { - { LiquidTypes.Cyan, q => run.CyanQuantity = update ? run.CyanQuantity + q : q }, - { LiquidTypes.Magenta, q => run.MagentaQuantity = update ? run.MagentaQuantity + q : q }, - { LiquidTypes.Yellow, q => run.YellowQuantity = update ? run.YellowQuantity + q : q }, - { LiquidTypes.Black, q => run.BlackQuantity = update ? run.BlackQuantity + q : q }, - { LiquidTypes.Transparent, q => run.TransparentQuantity = update ? run.TransparentQuantity + q : q }, - { LiquidTypes.Lubricant, q => run.LubricantQuantity = update ? run.LubricantQuantity + q : q }, - { LiquidTypes.Cleaner, q => run.CleanerQuantity = update ? run.CleanerQuantity + q : q }, - { LiquidTypes.LightCyan, q => run.LightCyanQuantity = update ? run.LightCyanQuantity + q : q }, - { LiquidTypes.LightMagenta, q => run.LightMagentaQuantity = update ? run.LightMagentaQuantity + q : q }, - { LiquidTypes.LightYellow, q => run.LightYellowQuantity = update ? run.LightYellowQuantity + q : q }, - { LiquidTypes.Blue, q => run.BlueQuantity = update ? run.BlueQuantity + q : q }, - { LiquidTypes.LightBlue, q => run.LightBlueQuantity = update ? run.LightBlueQuantity + q : q }, - { LiquidTypes.Orange, q => run.OrangeQuantity = update ? run.OrangeQuantity + q : q }, - { LiquidTypes.LightOrange, q => run.LightOrangeQuantity = update ? run.LightOrangeQuantity + q : q }, - { LiquidTypes.Rubine, q => run.RubineQuantity = update ? run.RubineQuantity + q : q }, - { LiquidTypes.LightRubine, q => run.LightRubineQuantity = update ? run.LightRubineQuantity + q : q }, - { LiquidTypes.Navy, q => run.NavyQuantity = update ? run.NavyQuantity + q : q }, - { LiquidTypes.Violet, q => run.VioletQuantity = update ? run.VioletQuantity + q : q }, - { LiquidTypes.TWCyan, q => run.TwCyanQuantity = update ? run.VioletQuantity + q : q } - }; + var props = run.GetType() + .GetProperties(BindingFlags.Instance | BindingFlags.Public) + .Where(p => p.CanRead && p.CanWrite && p.PropertyType == typeof(long)) + .Where(p => p.Name.EndsWith("Quantity", StringComparison.OrdinalIgnoreCase)) + .ToDictionary(p => p.Name.ToLower(), p => p); - foreach (var liquidType in setters.Keys) + foreach (var q in quantities) { - var quantityObj = quantities.SingleOrDefault(x => x.LiquidType == liquidType); - var quantity = quantityObj?.Quantity ?? 0; - setters[liquidType](quantity); + var key = (q.LiquidType.ToString() + "Quantity").ToLower(); + if (!props.TryGetValue(key, out var prop)) + { + LogManager.Log($"Could not locate liquid quantity field for {q.LiquidType} on JobRun object.", LogCategory.Error); + continue; + } + + var currentVal = (long)(prop.GetValue(run) ?? 0L); + var newVal = update ? currentVal + q.Quantity : q.Quantity; + prop.SetValue(run, newVal); } } - #endregion #region Public Methods diff --git a/Software/Visual_Studio/Tango.SQLExaminer/SQLExaminer/Configurations/OverrideData.xml b/Software/Visual_Studio/Tango.SQLExaminer/SQLExaminer/Configurations/OverrideData.xml Binary files differindex a5b64e7d9..0e232786a 100644 --- a/Software/Visual_Studio/Tango.SQLExaminer/SQLExaminer/Configurations/OverrideData.xml +++ b/Software/Visual_Studio/Tango.SQLExaminer/SQLExaminer/Configurations/OverrideData.xml diff --git a/Software/Visual_Studio/Tango.Telemetry/Mappers/JobRunMapper.cs b/Software/Visual_Studio/Tango.Telemetry/Mappers/JobRunMapper.cs index 8d8023c95..81bff1eb4 100644 --- a/Software/Visual_Studio/Tango.Telemetry/Mappers/JobRunMapper.cs +++ b/Software/Visual_Studio/Tango.Telemetry/Mappers/JobRunMapper.cs @@ -4,6 +4,7 @@ using System.Collections.Generic; using System.Data.Entity; using System.IO; using System.Linq; +using System.Reflection; using System.Text; using System.Threading.Tasks; using Tango.BL; @@ -63,6 +64,8 @@ namespace Tango.Telemetry.Mappers } } + + public static TelemetryJobRun MapJobRun(JobRun run) { Init(); @@ -106,23 +109,7 @@ namespace Tango.Telemetry.Mappers tRun.Status = run.JobRunStatus.ToString(); - tRun.OutputCyan = run.CyanQuantity; - tRun.OutputMagenta = run.MagentaQuantity; - tRun.OutputYellow = run.YellowQuantity; - tRun.OutputBlack = run.BlackQuantity; - tRun.OutputLightCyan = run.LightCyanQuantity; - tRun.OutputLightMagenta = run.LightMagentaQuantity; - tRun.OutputLightYellow = run.LightYellowQuantity; - tRun.OutputBlue = run.BlueQuantity; - tRun.OutputLightBlue = run.LightBlueQuantity; - tRun.OutputOrange = run.OrangeQuantity; - tRun.OutputLightOrange = run.LightOrangeQuantity; - tRun.OutputRubine = run.RubineQuantity; - tRun.OutputLightRubine = run.LightRubineQuantity; - tRun.OutputNavy = run.NavyQuantity; - tRun.OutputViolet = run.VioletQuantity; - tRun.OutputTransparent = run.TransparentQuantity; - tRun.OutputLubricant = run.LubricantQuantity; + MapToOutputs(run, tRun); tRun.FailureReason = run.FailedMessage; @@ -319,5 +306,38 @@ namespace Tango.Telemetry.Mappers return tRun; } + + public static void MapToOutputs(JobRun run, TelemetryJobRun tRun) + { + if (run == null || tRun == null) return; + + var runProps = run.GetType() + .GetProperties(BindingFlags.Instance | BindingFlags.Public) + .Where(p => p.CanRead && p.PropertyType == typeof(long)) + .Where(p => p.Name.EndsWith("Quantity", StringComparison.OrdinalIgnoreCase)) + .ToDictionary(p => p.Name.ToLower(), p => p); + + var tRunProps = tRun.GetType() + .GetProperties(BindingFlags.Instance | BindingFlags.Public) + .Where(p => p.CanWrite && p.PropertyType == typeof(long)) + .Where(p => p.Name.StartsWith("Output", StringComparison.OrdinalIgnoreCase)) + .ToDictionary(p => p.Name.ToLower(), p => p); + + foreach (var tProp in tRunProps.Values) + { + // "OutputCyan" -> "CyanQuantity" + var baseName = tProp.Name.Substring("Output".Length); + var runKey = (baseName + "Quantity").ToLower(); + + if (!runProps.TryGetValue(runKey, out var runProp)) + { + LogManager.Default.Log($"Could not locate liquid quantity field {runKey} for JobRun Telemetry object.", LogCategory.Warning); + continue; + } + + var value = (long)(runProp.GetValue(run) ?? 0L); + tProp.SetValue(tRun, value); + } + } } } diff --git a/Software/Visual_Studio/Tango.Telemetry/Telemetries/TelemetryJobRun.cs b/Software/Visual_Studio/Tango.Telemetry/Telemetries/TelemetryJobRun.cs index c5f4da8ea..1c52fb2c4 100644 --- a/Software/Visual_Studio/Tango.Telemetry/Telemetries/TelemetryJobRun.cs +++ b/Software/Visual_Studio/Tango.Telemetry/Telemetries/TelemetryJobRun.cs @@ -122,6 +122,46 @@ namespace Tango.Telemetry.Telemetries public long OutputTransparent { get; set; } public long OutputLubricant { get; set; } + public long OutputTwTransparentInk { get; set; } + public long OutputC1Ti { get; set; } + public long OutputTwCyan { get; set; } + public long OutputTwLightCyan { get; set; } + public long OutputTwMagenta { get; set; } + public long OutputTwLightMagenta { get; set; } + public long OutputTwYellow { get; set; } + public long OutputTwLightYellow { get; set; } + public long OutputC1Yellow { get; set; } + public long OutputC1LightYellow { get; set; } + public long OutputTwBlack { get; set; } + public long OutputTwViolet { get; set; } + public long OutputTwLightViolet { get; set; } + public long OutputCtBlue { get; set; } + public long OutputCtLightBlue { get; set; } + public long OutputCtRubine { get; set; } + public long OutputCtLightRubine { get; set; } + public long OutputCtOrange { get; set; } + public long OutputCtLightOrange { get; set; } + public long OutputCtNavy { get; set; } + public long OutputHdBlue { get; set; } + public long OutputHdLightBlue { get; set; } + public long OutputHdRubine { get; set; } + public long OutputHdLightRubine { get; set; } + public long OutputHdOrange { get; set; } + public long OutputHdLightOrange { get; set; } + public long OutputHdNavy { get; set; } + public long OutputHdLightNavy { get; set; } + public long OutputAmBlue { get; set; } + public long OutputAmLightBlue { get; set; } + public long OutputAmRed { get; set; } + public long OutputAmLightRed { get; set; } + public long OutputAmOrange { get; set; } + public long OutputAmLightOrange { get; set; } + public long OutputAmYellow { get; set; } + public long OutputAmLightYellow { get; set; } + public long OutputAmBlack { get; set; } + + + //The error that has occurred when Status = "Failed" public String FailureReason { get; set; } |
