aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/Tango.BL
diff options
context:
space:
mode:
authorRoy Ben Shabat <roy.mail.net@gmail.com>2025-09-29 05:46:38 +0300
committerRoy Ben Shabat <roy.mail.net@gmail.com>2025-09-29 05:46:38 +0300
commit9c858b7b51be2eb5b2f515912d436224d7e6483c (patch)
tree46f854bfd37026967ef2dfa8f28a70cd8c8f7727 /Software/Visual_Studio/Tango.BL
parent103bd3c1c825e4ecbb1c714e293a5c9d97a09c8c (diff)
downloadTango-9c858b7b51be2eb5b2f515912d436224d7e6483c.tar.gz
Tango-9c858b7b51be2eb5b2f515912d436224d7e6483c.zip
Process Parameters Visual Representation.
Filter RML by machine type on Research module.
Diffstat (limited to 'Software/Visual_Studio/Tango.BL')
-rw-r--r--Software/Visual_Studio/Tango.BL/Entities/ProcessParametersTable.cs217
-rw-r--r--Software/Visual_Studio/Tango.BL/ProcessParameters.csv70
-rw-r--r--Software/Visual_Studio/Tango.BL/Tango.BL.csproj3
3 files changed, 288 insertions, 2 deletions
diff --git a/Software/Visual_Studio/Tango.BL/Entities/ProcessParametersTable.cs b/Software/Visual_Studio/Tango.BL/Entities/ProcessParametersTable.cs
index 1dadd61c8..83a079700 100644
--- a/Software/Visual_Studio/Tango.BL/Entities/ProcessParametersTable.cs
+++ b/Software/Visual_Studio/Tango.BL/Entities/ProcessParametersTable.cs
@@ -1,18 +1,25 @@
+using LiteDB;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
+using System.Reflection;
using System.Text;
using System.Threading.Tasks;
+using System.Xml.Serialization;
using Tango.BL.Enumerations;
+using Tango.Core;
using Tango.Core.ExtensionMethods;
+using Tango.Core.Helpers;
+using Tango.CSV;
namespace Tango.BL.Entities
{
public partial class ProcessParametersTable : ProcessParametersTableBase
{
public event EventHandler DyeingSpeedMinInkUptakeChanged;
+ private static List<ProcessParameterCsvModel> _csvModels;
[NotMapped]
[JsonIgnore]
@@ -82,12 +89,220 @@ namespace Tango.BL.Entities
return heaters.Average();
}
-
+
public PMR.Printing.ProcessParameters ToProcessParametersPMR()
{
PMR.Printing.ProcessParameters p = new PMR.Printing.ProcessParameters();
this.MapPrimitivesTo(p);
return p;
}
+
+ #region Visual Representation
+
+ public class ProcessParameterCsvModel
+ {
+ public String Name { get; set; }
+ public String Description { get; set; }
+ public List<MachineTypes> MachineTypes { get; set; }
+ public String Group { get; set; }
+ public int Index { get; set; }
+ public String StringFormat { get; set; }
+
+ public ProcessParameterCsvModel()
+ {
+ MachineTypes = new List<MachineTypes>();
+ }
+ }
+
+ public class ProcessParameter : ExtendedObject
+ {
+ private ParameterItem _parameterItem;
+ private ProcessParametersTable _table;
+
+ public String Name { get; set; }
+ public List<MachineTypes> MachineTypes { get; set; }
+ public String Group { get; set; }
+ public int Index { get; set; }
+ public String StringFormat { get; set; }
+
+ public bool HasDiff
+ {
+ get
+ {
+ if (_table == null) return false;
+ if (_table.ProcessParametersTablesGroup == null) return false;
+
+ foreach (var otherTable in _table.ProcessParametersTablesGroup.ProcessParametersTables.Where(x => x != _table).ToList())
+ {
+ var otherValue = otherTable.VisualParameters.FirstOrDefault(x => x.Name == Name);
+ if (otherValue != null)
+ {
+ if (otherValue.Value != Value) return true;
+ }
+ }
+
+ return false;
+ }
+ }
+
+ public double Value
+ {
+ get { return (double)_parameterItem.Value; }
+ set
+ {
+ _parameterItem.Value = value;
+ RaisePropertyChangedAuto();
+ RaisePropertyChanged(nameof(HasDiff));
+
+ if (_table == null) return;
+ if (_table.ProcessParametersTablesGroup == null) return;
+
+ foreach (var otherTable in _table.ProcessParametersTablesGroup.ProcessParametersTables.Where(x => x != _table).ToList())
+ {
+ var otherValue = otherTable.VisualParameters.FirstOrDefault(x => x.Name == Name);
+ if (otherValue != null)
+ {
+ otherValue.Invalidate();
+ }
+ }
+ }
+ }
+
+ public ProcessParameter(ParameterItem parameterItem, ProcessParametersTable table)
+ {
+ MachineTypes = new List<MachineTypes>();
+ _parameterItem = parameterItem;
+ _table = table;
+ }
+
+ public void Invalidate()
+ {
+ RaisePropertyChanged(nameof(HasDiff));
+ }
+ }
+
+ public class ProcessParameterGroup
+ {
+ public String Name { get; set; }
+
+ public List<ProcessParameter> Parameters { get; set; }
+
+ public ProcessParameterGroup()
+ {
+ Parameters = new List<ProcessParameter>();
+ }
+ }
+
+ [NotMapped]
+ [XmlIgnore]
+ [BsonIgnore]
+ [JsonIgnore]
+ [ParameterIgnore]
+ public List<ProcessParameterGroup> ParametersGroups
+ {
+ get
+ {
+ List<ProcessParameterGroup> groups = new List<ProcessParameterGroup>();
+
+ foreach (var g in VisualParameters.GroupBy(x => x.Group))
+ {
+ ProcessParameterGroup group = new ProcessParameterGroup();
+ group.Name = g.First().Group;
+ group.Parameters.AddRange(g);
+ groups.Add(group);
+ }
+
+ return groups;
+ }
+ }
+
+ private List<ProcessParameter> _visualParameters;
+ [NotMapped]
+ [XmlIgnore]
+ [BsonIgnore]
+ [JsonIgnore]
+ [ParameterIgnore]
+ public List<ProcessParameter> VisualParameters
+ {
+ get
+ {
+ if (_visualParameters != null)
+ {
+ return _visualParameters;
+ }
+
+ if (_csvModels == null)
+ {
+ var csv = EmbeddedResourceHelper.GetEmbeddedResourceText("Tango.BL.ProcessParameters.csv");
+ CsvDynamicReader reader = CsvDynamicReader.FromString(csv);
+
+ _csvModels = new List<ProcessParameterCsvModel>();
+
+ foreach (var row in reader.Rows)
+ {
+ ProcessParameterCsvModel csvModel = new ProcessParameterCsvModel();
+
+ csvModel.Name = row.Read("Name", "N/A");
+ csvModel.Description = row.Read("Description", "N/A");
+ csvModel.Group = row.Read("Group", "N/A");
+ csvModel.Index = row.Read("Index", 0);
+ csvModel.StringFormat = row.Read("StringFormat", "0.0");
+
+ String machineType = row.Read("MachineType", "ALL");
+
+ switch (machineType)
+ {
+ case "ALL":
+ csvModel.MachineTypes.AddRange(Enum.GetValues(typeof(MachineTypes)).Cast<MachineTypes>());
+ break;
+ case "TS-1800":
+ csvModel.MachineTypes.Add(MachineTypes.TS1800);
+ break;
+ case "X1":
+ csvModel.MachineTypes.Add(MachineTypes.X1);
+ break;
+ case "X4":
+ csvModel.MachineTypes.Add(MachineTypes.Eureka);
+ break;
+ case "X":
+ csvModel.MachineTypes.Add(MachineTypes.X1);
+ csvModel.MachineTypes.Add(MachineTypes.Eureka);
+ break;
+ }
+
+ _csvModels.Add(csvModel);
+ }
+ }
+
+ var parameters = this.Parameters.Where(x => x.Type == typeof(Double)).ToList();
+
+ _visualParameters = new List<ProcessParameter>();
+
+ foreach (var p in parameters)
+ {
+ var csvModel = _csvModels.SingleOrDefault(x => x.Name.Replace("_", "").ToLower() == p.Name.Replace(" ", "").ToLower());
+
+ if (csvModel.MachineTypes.Count > 0)
+ {
+ ProcessParameter parameter = new ProcessParameter(p, this);
+ parameter.Name = csvModel.Description;
+ parameter.MachineTypes = csvModel.MachineTypes;
+ parameter.Group = csvModel.Group;
+ parameter.Index = csvModel.Index;
+ parameter.StringFormat = csvModel.StringFormat;
+
+ _visualParameters.Add(parameter);
+ }
+ }
+
+ _visualParameters = _visualParameters.OrderBy(x => x.Index).ToList();
+
+ _visualParameters.ForEach(x => x.Invalidate());
+
+ return _visualParameters;
+ }
+ }
+
+ #endregion
}
}
diff --git a/Software/Visual_Studio/Tango.BL/ProcessParameters.csv b/Software/Visual_Studio/Tango.BL/ProcessParameters.csv
new file mode 100644
index 000000000..864d3ac9c
--- /dev/null
+++ b/Software/Visual_Studio/Tango.BL/ProcessParameters.csv
@@ -0,0 +1,70 @@
+Name,Description,MachineType,Group,Index,StringFormat
+DYEING_SPEED,Dyeing Speed [m/sec],ALL,GENERAL,1,0.0
+MIN_INK_UPTAKE,Min Ink Uptake [nl/cm],ALL,GENERAL,2,0.0
+MAX_INK_UPTAKE,Max Ink Uptake [nl/cm],ALL,GENERAL,3,0.0
+DRYER_BUFFER_LENGTH,Dryer Buffer Length [m],ALL,GENERAL,4,0.0
+E_WASTE_PREPARE_TIME,E Waste Prepare Time [sec],X,GENERAL,5,0.0
+DRYER_AIR_FLOW,Dryer Air Flow,TS-1800,AIR FLOW,7,0.0
+R_BLOWER_FLOW,Right Blower Flow,TS-1800,AIR FLOW,8,0.0
+L_BLOWER_FLOW,Left Blower Flow,TS-1800,AIR FLOW,9,0.0
+PRESSURE_BUILD_UP,Pressure Build Up,TS-1800,AIR FLOW,10,0.0
+E_TUNNEL_INCOMING_AIR_FLOW,Tunnel Incoming Air Flow [m^3/hr],X,AIR FLOW,11,0.0
+E_TUNNEL_OUTGOING_AIR_FLOW,Tunnel Outgoing Air Flow [m^3/hr],X,AIR FLOW,12,0.0
+E_DRYER_INCOMING_AIR_FLOW,Dryer Incoming Air Flow [m^3/hr],X,AIR FLOW,13,0.0
+E_DRYER_OUTGOING_AIR_FLOW,Dryer Outgoing Air Flow [m^3/hr],X,AIR FLOW,14,0.0
+DRYER_ZONE1_TEMP,Dryer Zone 1 Temp.,TS-1800,TEMPERATURE,15,0.0
+MIXER_TEMP,Mixer Temp.,TS-1800,TEMPERATURE,16,0.0
+HEAD_ZONE1_TEMP,Head Zone 1 Temp.,TS-1800,TEMPERATURE,17,0.0
+HEAD_ZONE2_TEMP,Head Zone 2 Temp.,TS-1800,TEMPERATURE,18,0.0
+HEAD_ZONE4_TEMP,Lubricant Temp.,TS-1800,TEMPERATURE,19,0.0
+R_BLOWER_TEMP,Right Blower Temp.,TS-1800,TEMPERATURE,20,0.0
+L_BLOWER_TEMP,Left Blower Temp.,TS-1800,TEMPERATURE,21,0.0
+E_MIXER_TEMP,Mixer Temp. [˚C],X,TEMPERATURE,22,0.0
+E_HEAD_ZONE1_TEMP,Head Zone 1 Temp.,NONE,TEMPERATURE,23,0.0
+E_HEAD_ZONE2_TEMP,Head Zone 2 Temp. [˚C],X,TEMPERATURE,24,0.0
+E_HEAD_ZONE3_TEMP,Head Zone 3 Temp.,NONE,TEMPERATURE,25,0.0
+E_TUNNEL_TEMP,Tunnel Temp. [˚C],X,TEMPERATURE,26,0.0
+E_DRYER_ZONE1_TEMP,Dryer Zone 1 Temp. [˚C],X,TEMPERATURE,27,0.0
+E_DRYER_ZONE2_TEMP,Dryer Zone 2 Temp. [˚C],X,TEMPERATURE,28,0.0
+E_DRYER_ZONE3_TEMP,Dryer Zone 3 Temp. [˚C],X,TEMPERATURE,29,0.0
+E_SPARE1,Dryer Average Temp. [˚C],X,TEMPERATURE,30,0.0
+E_LUBRICANT_TEMP,Lubricant Temp. [˚C],X,TEMPERATURE,31,0.0
+BTSR_FEEDING_TENSION,Btsr Feeding Tension,TS-1800,TENSION,32,0.0
+EXIT_TENSION,Dancer Tension,TS-1800,TENSION,33,0.0
+E_BTSR1_FEEDING_TENSION,Feeder BTSR 1 [gr],X,TENSION,34,0.0
+E_BTSR2_FEEDING_TENSION,Feeder BTSR 2 [gr],X4,TENSION,35,0.0
+E_BTSR3_FEEDING_TENSION,Feeder BTSR 3 [gr],X4,TENSION,36,0.0
+E_BTSR4_FEEDING_TENSION,Feeder BTSR 4 [gr],X4,TENSION,37,0.0
+E_WINDER1_TENSION,Dancer1 Tension [steps],X,TENSION,38,0.0
+E_WINDER2_TENSION,Dancer2 Tension [steps],X4,TENSION,39,0.0
+E_WINDER3_TENSION,Dancer3 Tension [steps],X4,TENSION,40,0.0
+E_WINDER4_TENSION,Dancer4 Tension [steps],X4,TENSION,41,0.0
+E_BTSR5_FEEDING_TENSION,Btsr1 Winder Tension [gr],X,TENSION,42,0.0
+E_BTSR6_FEEDING_TENSION,Btsr2 Winder Tension [gr],X4,TENSION,43,0.0
+E_BTSR7_FEEDING_TENSION,Btsr3 Winder Tension [gr],X4,TENSION,44,0.0
+E_BTSR8_FEEDING_TENSION,Btsr4 Winder Tension [gr],X4,TENSION,45,0.0
+HEAD_ZONE3_TEMP,Head Zone 3 Temp.,NONE,TEMPERATURE,46,0.0
+HEAD_ZONE5_TEMP,Head Zone 5 Temp.,NONE,TEMPERATURE,47,0.0
+HEAD_ZONE6_TEMP,Head Zone 6 Temp.,NONE,TEMPERATURE,48,0.0
+HEAD_AIR_FLOW,Head Air Flow,NONE,AIR FLOW,49,0.0
+PROCESS_PARAMETERS_TABLES_GROUP_GUID,Process Param. Tables Group,NONE,GENERAL,50,0.0
+TABLE_INDEX,Table Index,NONE,GENERAL,51,0.0
+HEAD_ZONE7_TEMP,Head Zone 7 Temp.,NONE,TEMPERATURE,52,0.0
+HEAD_ZONE8_TEMP,Head Zone 8 Temp.,NONE,TEMPERATURE,53,0.0
+HEAD_ZONE9_TEMP,Head Zone 9 Temp.,NONE,TEMPERATURE,54,0.0
+HEAD_ZONE10_TEMP,Head Zone 10 Temp.,NONE,TEMPERATURE,55,0.0
+HEAD_ZONE11_TEMP,Head Zone 11 Temp.,NONE,TEMPERATURE,56,0.0
+HEAD_ZONE12_TEMP,Head Zone 12 Temp.,NONE,TEMPERATURE,57,0.0
+BTSR_THREAD_LENGTH_OFFSET,Btsr Thread Length Offset,NONE,GENERAL,58,0.0
+E_WASTE_AIR_FLOW,E Waste Air Flow,NONE,AIR FLOW,59,0.0
+E_PUMP_TEMP,E Pump Temp.,NONE,TEMPERATURE,60,0.0
+E_PRESSURE_BUILD_UP,E Pressure Build Up,NONE,GENERAL,61,0.0
+E_SPARE2,E Spare2,NONE,GENERAL,62,0.0
+E_SPARE3,E Spare3,NONE,GENERAL,63,0.0
+E_SPARE4,E Spare4,NONE,GENERAL,64,0.0
+E_SPARE5,E Spare5,NONE,GENERAL,65,0.0
+DRYER_ZONE2_TEMP,Dryer Zone 2 Temp.,NONE,TEMPERATURE,66,0.0
+DRYER_ZONE3_TEMP,Dryer Zone 3 Temp.,NONE,TEMPERATURE,67,0.0
+FEEDER_TENSION,Feeder Tension,NONE,TENSION,68,0.0
+PULLER_TENSION,Puller Tension,NONE,TENSION,69,0.0
+WINDER_TENSION,Winder Tension,NONE,TENSION,70,0.0
diff --git a/Software/Visual_Studio/Tango.BL/Tango.BL.csproj b/Software/Visual_Studio/Tango.BL/Tango.BL.csproj
index 042105f11..04801741a 100644
--- a/Software/Visual_Studio/Tango.BL/Tango.BL.csproj
+++ b/Software/Visual_Studio/Tango.BL/Tango.BL.csproj
@@ -776,6 +776,7 @@
<None Include="packages.config">
<SubType>Designer</SubType>
</None>
+ <EmbeddedResource Include="ProcessParameters.csv" />
<None Include="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
@@ -838,7 +839,7 @@
</Target>
<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