From 34e31666cd02b44fe610084f3bd99fb9a9d5416e Mon Sep 17 00:00:00 2001 From: Thermo_SIM Date: Fri, 19 Mar 2021 16:05:30 +0100 Subject: [PATCH 01/20] Fix ricetta + Dashboard S --- .../app_modules_thermo/dashboard/base-components/item.vue | 6 +++--- .../setup/ciclo/components/show-ciclo-info.ts | 4 ---- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/Thermo.Active/wwwroot/src/app_modules_thermo/dashboard/base-components/item.vue b/Thermo.Active/wwwroot/src/app_modules_thermo/dashboard/base-components/item.vue index 51047367..71b297df 100644 --- a/Thermo.Active/wwwroot/src/app_modules_thermo/dashboard/base-components/item.vue +++ b/Thermo.Active/wwwroot/src/app_modules_thermo/dashboard/base-components/item.vue @@ -5,7 +5,7 @@
{{'history-item_warmup' | localize("tempo riscaldo")}} - {{Math.floor(value.timeWarm / 60) | round(0)}}'{{value.timeWarm % 60 | round(0)}}'' + {{value.timeWarm | round(0)}}''
{{'history-item_vacuum' | localize("vuoto")}} @@ -29,7 +29,7 @@
{{'history_item_venttime' | localize("tempo ventilazione")}} - {{value.timeVent / 60 | round(0)}}'{{value.timeVent % 60 | round(0)}}'' + {{value.timeVent | round(0)}}''
{{'history_item_cycletimegross' | localize("tempo ciclo lordo")}} @@ -53,7 +53,7 @@
{{'history_item_vacuumtime' | localize("tempo vuoto")}} - {{Math.floor(value.timeVacuum / 60) | round(0)}}'{{value.timeVacuum % 60 | round(0)}}'' + {{value.timeVacuum | round(0)}}''
{{'history_item_mouldenergyin' | localize("energia utilizzata in")}} diff --git a/Thermo.Active/wwwroot/src/app_modules_thermo/setup/ciclo/components/show-ciclo-info.ts b/Thermo.Active/wwwroot/src/app_modules_thermo/setup/ciclo/components/show-ciclo-info.ts index c4a50a94..b1245d0d 100644 --- a/Thermo.Active/wwwroot/src/app_modules_thermo/setup/ciclo/components/show-ciclo-info.ts +++ b/Thermo.Active/wwwroot/src/app_modules_thermo/setup/ciclo/components/show-ciclo-info.ts @@ -122,10 +122,6 @@ export default class ShowCicloInfo extends Vue { if (el.status.visible && el.status.enabled) if (el.setpointHMI != el.setpointPLC) result = true; } - for (const key in store.state.warmers.channels) { - const el = store.state.warmers.channels[key]; - if (el.setpointHMI != el.setpointPLC) result = true; - } return result; } From cacae4eebf0ccf106678d51b2d39e63dfb0bc677 Mon Sep 17 00:00:00 2001 From: Thermo_SIM Date: Fri, 19 Mar 2021 16:40:07 +0100 Subject: [PATCH 02/20] Fix pirometro in Dashboard --- .../dashboard/base-components/stats.vue | 12 -------- .../app_modules_thermo/dashboard/dashboard.ts | 30 +++++++++++++++++-- .../dashboard/dashboard.vue | 4 ++- 3 files changed, 30 insertions(+), 16 deletions(-) diff --git a/Thermo.Active/wwwroot/src/app_modules_thermo/dashboard/base-components/stats.vue b/Thermo.Active/wwwroot/src/app_modules_thermo/dashboard/base-components/stats.vue index be452128..96ca7408 100644 --- a/Thermo.Active/wwwroot/src/app_modules_thermo/dashboard/base-components/stats.vue +++ b/Thermo.Active/wwwroot/src/app_modules_thermo/dashboard/base-components/stats.vue @@ -10,18 +10,6 @@ - diff --git a/Thermo.Active/wwwroot/src/app_modules_thermo/dashboard/dashboard.ts b/Thermo.Active/wwwroot/src/app_modules_thermo/dashboard/dashboard.ts index 039d950e..a2d2be9f 100644 --- a/Thermo.Active/wwwroot/src/app_modules_thermo/dashboard/dashboard.ts +++ b/Thermo.Active/wwwroot/src/app_modules_thermo/dashboard/dashboard.ts @@ -204,13 +204,33 @@ export default class Dashboard extends Vue { } incrementPyr() { - this.recipe.pyrometer_pyrometer_setpoint.setpointHMI++; + this.recipe.pyrometer_pyrometer_setpoint.setpointHMI++; + this.recipe.pyrometer_upperthermoregulator_start_adjustment.setpointHMI++; + this.recipe.pyrometer_upperthermoregulator_end_adjustment.setpointHMI++; + this.recipe.pyrometer_lowerthermoregulator_start_adjustment.setpointHMI++; + this.recipe.pyrometer_lowerthermoregulator_end_adjustment.setpointHMI++; this.debouncedRecipeSave(); } decrementPyr() { - this.recipe.pyrometer_pyrometer_setpoint.setpointHMI--; + this.recipe.pyrometer_pyrometer_setpoint.setpointHMI--; + this.recipe.pyrometer_upperthermoregulator_start_adjustment.setpointHMI--; + this.recipe.pyrometer_upperthermoregulator_end_adjustment.setpointHMI--; + this.recipe.pyrometer_lowerthermoregulator_start_adjustment.setpointHMI--; + this.recipe.pyrometer_lowerthermoregulator_end_adjustment.setpointHMI--; this.debouncedRecipeSave(); } + + togglePyr() { + if(this.recipe.pyrometer_pyrometer_enabled.setpointHMI == 1) + this.recipe.pyrometer_pyrometer_enabled.setpointHMI = 0; + else + this.recipe.pyrometer_pyrometer_enabled.setpointHMI = 1; + + this.debouncedRecipeSave(); + } + get pyrOn(){ + return this.recipe.pyrometer_pyrometer_enabled.setpointHMI == 1; + } debouncedRecipeSave = debounce(this.savePyr, 1000); public async savePyr(){ @@ -229,7 +249,11 @@ export default class Dashboard extends Vue { get payload() { return { pyrometer_pyrometer_enabled: this.recipe.pyrometer_pyrometer_enabled, - pyrometer_pyrometer_setpoint: this.recipe.pyrometer_pyrometer_setpoint + pyrometer_pyrometer_setpoint: this.recipe.pyrometer_pyrometer_setpoint, + pyrometer_upperthermoregulator_start_adjustment: this.recipe.pyrometer_upperthermoregulator_start_adjustment, + pyrometer_upperthermoregulator_end_adjustment: this.recipe.pyrometer_upperthermoregulator_end_adjustment, + pyrometer_lowerthermoregulator_start_adjustment: this.recipe.pyrometer_lowerthermoregulator_start_adjustment, + pyrometer_lowerthermoregulator_end_adjustment: this.recipe.pyrometer_lowerthermoregulator_end_adjustment, } } diff --git a/Thermo.Active/wwwroot/src/app_modules_thermo/dashboard/dashboard.vue b/Thermo.Active/wwwroot/src/app_modules_thermo/dashboard/dashboard.vue index cd2f2037..d37a04dc 100644 --- a/Thermo.Active/wwwroot/src/app_modules_thermo/dashboard/dashboard.vue +++ b/Thermo.Active/wwwroot/src/app_modules_thermo/dashboard/dashboard.vue @@ -118,9 +118,11 @@ -
+
{{'dashboard-setpoint' | localize('set point')}} {{recipe.pyrometer_pyrometer_setpoint.setpointHMI}}{{recipe.pyrometer_pyrometer_setpoint.unitMeasure}} +
ON
+
OFF
- + >{{'underthehood_label_logm' | localize("Log misurazioni")}}
((await this.BASE_URL()) + "/api/underthehood/SheetHistoryCount", true); + return result; + } + + async GetHistorySheetsFitered(from,num) { + let result = await this.Get((await this.BASE_URL()) + `/api/underthehood/SheetHistoryFiltered?start=${from}&number=${num}`, true); + return result; + } + } export const underTheHoodService = new UnderTheHoodService(); \ No newline at end of file From bab9bf504a9863a3f277593a942a2dfeb0d33149 Mon Sep 17 00:00:00 2001 From: Thermo_SIM Date: Fri, 19 Mar 2021 20:07:57 +0100 Subject: [PATCH 08/20] Removed ConsoleLog --- .../src/app_modules_thermo/dashboard/base-components/stats.ts | 1 - .../wwwroot/src/app_modules_thermo/dashboard/dashboard.ts | 2 -- .../setup/riscaldi/components/base-components/warmers.ts | 1 - .../Riscaldi/components/tables/riscaldi-table/riscaldi-table.ts | 1 - 4 files changed, 5 deletions(-) diff --git a/Thermo.Active/wwwroot/src/app_modules_thermo/dashboard/base-components/stats.ts b/Thermo.Active/wwwroot/src/app_modules_thermo/dashboard/base-components/stats.ts index e52a9726..41e6abdc 100644 --- a/Thermo.Active/wwwroot/src/app_modules_thermo/dashboard/base-components/stats.ts +++ b/Thermo.Active/wwwroot/src/app_modules_thermo/dashboard/base-components/stats.ts @@ -9,7 +9,6 @@ export default class stats extends Vue { value: { [id: number]: number }; get Values(): number[] { - console.log(this.value); var r: number[] = []; if (this.value) for (const i in this.value) { diff --git a/Thermo.Active/wwwroot/src/app_modules_thermo/dashboard/dashboard.ts b/Thermo.Active/wwwroot/src/app_modules_thermo/dashboard/dashboard.ts index a2d2be9f..c231648c 100644 --- a/Thermo.Active/wwwroot/src/app_modules_thermo/dashboard/dashboard.ts +++ b/Thermo.Active/wwwroot/src/app_modules_thermo/dashboard/dashboard.ts @@ -118,8 +118,6 @@ export default class Dashboard extends Vue { this.itemsMap.set(i.numDone, i); } this.items = Array.from(this.itemsMap.values()).sort((a, b) => b.numDone - a.numDone); - - console.log(this.items); this.loading = false; } diff --git a/Thermo.Active/wwwroot/src/app_modules_thermo/setup/riscaldi/components/base-components/warmers.ts b/Thermo.Active/wwwroot/src/app_modules_thermo/setup/riscaldi/components/base-components/warmers.ts index 4fd6e693..90c91509 100644 --- a/Thermo.Active/wwwroot/src/app_modules_thermo/setup/riscaldi/components/base-components/warmers.ts +++ b/Thermo.Active/wwwroot/src/app_modules_thermo/setup/riscaldi/components/base-components/warmers.ts @@ -90,7 +90,6 @@ export default class Warmers extends Vue { // Ottengo le resistenze per ogni riga resistancesPerRow(row: number) { - console.log(row,this.resistances.filter(i => i.row == row)) return this.resistances.filter(i => i.row == row); } diff --git a/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/Riscaldi/components/tables/riscaldi-table/riscaldi-table.ts b/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/Riscaldi/components/tables/riscaldi-table/riscaldi-table.ts index 12ebca0a..e3c74f4d 100644 --- a/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/Riscaldi/components/tables/riscaldi-table/riscaldi-table.ts +++ b/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/Riscaldi/components/tables/riscaldi-table/riscaldi-table.ts @@ -14,7 +14,6 @@ export default class RiscaldiTable extends Vue { } getChannelInfo(id) { - console.log(store.state.warmers.channels.filter(i => i.idChannel == 5)[0]); return store.state.warmers.channels.filter(i => i.idChannel == id)[0]; } From bd1488bc02fc89d2ba836b8ed4b83fd07104ee83 Mon Sep 17 00:00:00 2001 From: Thermo_SIM Date: Fri, 19 Mar 2021 22:19:23 +0100 Subject: [PATCH 09/20] FIx Frontend --- .../components/log-misurazioni/log-misurazioni.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/LogMisurazioni/components/log-misurazioni/log-misurazioni.ts b/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/LogMisurazioni/components/log-misurazioni/log-misurazioni.ts index 535bf927..a88e224e 100644 --- a/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/LogMisurazioni/components/log-misurazioni/log-misurazioni.ts +++ b/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/LogMisurazioni/components/log-misurazioni/log-misurazioni.ts @@ -20,7 +20,7 @@ export default class LogMisurazioni extends Vue { async mounted(){ this.currentPage = 0; - this.totalPages = await awaiter(underTheHoodService.GetHistorySheetsCount()); + this.totalPages = await awaiter(underTheHoodService.GetHistorySheetsCount()) / this.itemsPerPage; this.getLogs(); } From 2a4c0e833524b87b426fcfb41b650ffb22009646 Mon Sep 17 00:00:00 2001 From: Thermo_SIM Date: Fri, 19 Mar 2021 22:19:36 +0100 Subject: [PATCH 10/20] Fix Frontend 2 --- .../tables/log-misurazioni-table/log-misurazioni-table.ts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/LogMisurazioni/components/tables/log-misurazioni-table/log-misurazioni-table.ts b/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/LogMisurazioni/components/tables/log-misurazioni-table/log-misurazioni-table.ts index e468e2f1..6f839e1d 100644 --- a/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/LogMisurazioni/components/tables/log-misurazioni-table/log-misurazioni-table.ts +++ b/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/LogMisurazioni/components/tables/log-misurazioni-table/log-misurazioni-table.ts @@ -9,15 +9,13 @@ export default class LogMisurazioniTable extends Vue { rowData:any; mounted() { - } - convertDate(date) { return moment(date).format('L'); } convertDateToTime(date) { - return moment(date).format('HH:mm:ss.SSS'); + return moment(date).format('LTS'); } } From f7ff6629cedfb595a105914445f7b5c8bf0a4a38 Mon Sep 17 00:00:00 2001 From: Thermo_SIM Date: Fri, 19 Mar 2021 22:19:49 +0100 Subject: [PATCH 11/20] Added NC Reading --- Thermo.Active.NC/NcAdapter.cs | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/Thermo.Active.NC/NcAdapter.cs b/Thermo.Active.NC/NcAdapter.cs index e150eb99..f6c5f3ff 100644 --- a/Thermo.Active.NC/NcAdapter.cs +++ b/Thermo.Active.NC/NcAdapter.cs @@ -2561,6 +2561,24 @@ namespace Thermo.Active.NC lastProdStart = DateTime.Now; } + + ThermoModels.HistorySheet shhetRaw = new ThermoModels.HistorySheet(); + libraryError = numericalControl.PLC_RHistorySheets(ref shhetRaw); + + if(shhetRaw.newData) + { + + using (HistorySheetsController HSC = new HistorySheetsController()) + { + HSC.Create(NcFileAdapter.RecipeLiveData.RecipeName, prodInfoData.NumDone, (float) shhetRaw.Value1, (float) shhetRaw.Value2, (float) shhetRaw.Value3); + + // manage strobe/ack! + libraryError = numericalControl.PLC_WAckHistorySheets(); + if (libraryError.IsError()) + return libraryError; + } + } + return libraryError; } From 083be20f029bf35d75ff6172d81283bfc3ae84bb Mon Sep 17 00:00:00 2001 From: Thermo_SIM Date: Fri, 19 Mar 2021 22:21:10 +0100 Subject: [PATCH 12/20] Fix Frontend --- .../components/log-misurazioni/log-misurazioni.ts | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/LogMisurazioni/components/log-misurazioni/log-misurazioni.ts b/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/LogMisurazioni/components/log-misurazioni/log-misurazioni.ts index a88e224e..ada337c5 100644 --- a/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/LogMisurazioni/components/log-misurazioni/log-misurazioni.ts +++ b/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/LogMisurazioni/components/log-misurazioni/log-misurazioni.ts @@ -19,9 +19,7 @@ export default class LogMisurazioni extends Vue { rowData = []; async mounted(){ - this.currentPage = 0; - this.totalPages = await awaiter(underTheHoodService.GetHistorySheetsCount()) / this.itemsPerPage; - this.getLogs(); + this.reload(); } @Watch("currentPage", { deep: true }) @@ -33,7 +31,7 @@ export default class LogMisurazioni extends Vue { async reload(){ this.currentPage = 0; - this.totalPages = await awaiter(underTheHoodService.GetHistorySheetsCount()); + this.totalPages = await awaiter(underTheHoodService.GetHistorySheetsCount()) / this.itemsPerPage; this.getLogs(); } From e098409b8385093285fef175709b82a6209b30f4 Mon Sep 17 00:00:00 2001 From: Thermo_SIM Date: Fri, 19 Mar 2021 22:52:17 +0100 Subject: [PATCH 13/20] Fix COnfig FIle & Sheet cleaning --- Thermo.Active.Config/Config/serverConfig.xml | 4 +++- Thermo.Active.Config/Config/serverConfigValidator.xsd | 2 ++ Thermo.Active.Config/ServerConfigController.cs | 2 ++ .../Controllers/HistorySheetsController.cs | 11 +++++++++++ Thermo.Active.Model/ConfigModels/ServerConfigModel.cs | 4 ++++ .../Listeners/Database/SignalRDatabaseHandler.cs | 8 +++++++- Thermo.Active/Listeners/ListenersHandler.cs | 1 + 7 files changed, 30 insertions(+), 2 deletions(-) diff --git a/Thermo.Active.Config/Config/serverConfig.xml b/Thermo.Active.Config/Config/serverConfig.xml index 1aca93c1..4b73e357 100644 --- a/Thermo.Active.Config/Config/serverConfig.xml +++ b/Thermo.Active.Config/Config/serverConfig.xml @@ -4,7 +4,7 @@ S7NET false - 192.168.0.102 + 192.168.214.1 102 Thermo 2020 C:\CMS\Recipes\ @@ -31,6 +31,8 @@ true 50000 5000 + 10000 + 500 diff --git a/Thermo.Active.Config/Config/serverConfigValidator.xsd b/Thermo.Active.Config/Config/serverConfigValidator.xsd index 6a7ecdf9..c4170347 100644 --- a/Thermo.Active.Config/Config/serverConfigValidator.xsd +++ b/Thermo.Active.Config/Config/serverConfigValidator.xsd @@ -42,6 +42,8 @@ + + diff --git a/Thermo.Active.Config/ServerConfigController.cs b/Thermo.Active.Config/ServerConfigController.cs index 0a1580bf..4ea5e160 100644 --- a/Thermo.Active.Config/ServerConfigController.cs +++ b/Thermo.Active.Config/ServerConfigController.cs @@ -1033,6 +1033,8 @@ namespace Thermo.Active.Config MTCApplicationName = x.Element("MTCApplicationName").Value, MaxAlarmsRows = Convert.ToInt32(x.Element("maxAlarmsRows").Value), AlarmToDelete = Convert.ToInt32(x.Element("alarmToDelete").Value), + MaxSheetHistoryRows = Convert.ToInt32(x.Element("maxSheetHistoryRows").Value), + SheetHistoryToDelete = Convert.ToInt32(x.Element("sheetHistoryToDelete").Value), CmsConnectReady = Convert.ToBoolean(x.Element("CMSConnectReady").Value) }).FirstOrDefault(); diff --git a/Thermo.Active.Database/Controllers/HistorySheetsController.cs b/Thermo.Active.Database/Controllers/HistorySheetsController.cs index 90ea44a0..b9e79682 100644 --- a/Thermo.Active.Database/Controllers/HistorySheetsController.cs +++ b/Thermo.Active.Database/Controllers/HistorySheetsController.cs @@ -4,6 +4,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; using Thermo.Active.Model.DatabaseModels; +using static Thermo.Active.Config.ServerConfig; namespace Thermo.Active.Database.Controllers { @@ -42,6 +43,16 @@ namespace Thermo.Active.Database.Controllers return mod; } + + public void Clean() + { + if (this.count() >= ServerStartupConfig.MaxSheetHistoryRows) + { + dbCtx.Database.ExecuteSqlCommand("DELETE FROM historysheets LIMIT {0}", ServerStartupConfig.SheetHistoryToDelete); + } + + } + public List GetData(int start, int number) { // Get page numbers diff --git a/Thermo.Active.Model/ConfigModels/ServerConfigModel.cs b/Thermo.Active.Model/ConfigModels/ServerConfigModel.cs index 0d096389..42fe0f61 100644 --- a/Thermo.Active.Model/ConfigModels/ServerConfigModel.cs +++ b/Thermo.Active.Model/ConfigModels/ServerConfigModel.cs @@ -18,5 +18,9 @@ namespace Thermo.Active.Model.ConfigModels public int MaxAlarmsRows { get; set; } public int AlarmToDelete { get; set; } + + + public int MaxSheetHistoryRows { get; set; } + public int SheetHistoryToDelete { get; set; } } } \ No newline at end of file diff --git a/Thermo.Active/Listeners/Database/SignalRDatabaseHandler.cs b/Thermo.Active/Listeners/Database/SignalRDatabaseHandler.cs index bf40eae2..f2d39bca 100644 --- a/Thermo.Active/Listeners/Database/SignalRDatabaseHandler.cs +++ b/Thermo.Active/Listeners/Database/SignalRDatabaseHandler.cs @@ -50,7 +50,13 @@ namespace Thermo.Active.Listeners.Database } } } - + public static void cleanHistorySheets() + { + using (HistorySheetsController HSC = new HistorySheetsController()) + { + HSC.Clean(); + } + } public static void UpdateAlarms(object alarmsObj) { diff --git a/Thermo.Active/Listeners/ListenersHandler.cs b/Thermo.Active/Listeners/ListenersHandler.cs index f9b7a02e..24cad4e0 100644 --- a/Thermo.Active/Listeners/ListenersHandler.cs +++ b/Thermo.Active/Listeners/ListenersHandler.cs @@ -130,6 +130,7 @@ namespace Thermo.Active.Listeners })); infos.Add(MessageServices.Current.Subscribe(SEND_THERMO_PROD_INFO_DATA, (a, b) => { + SignalRDatabaseHandler.cleanHistorySheets(); SignalRListener.SendThermoProdInfoData(a); })); infos.Add(MessageServices.Current.Subscribe(SEND_THERMO_PROD_CYCLE_DATA, (a, b) => From 22ad46ab8c76f31ef4e6eb3a5b61a5a8403b7cc9 Mon Sep 17 00:00:00 2001 From: Thermo_SIM Date: Sun, 21 Mar 2021 17:57:19 +0100 Subject: [PATCH 14/20] Fix bitselector --- Thermo.Active.Utils/languages/IT.xml | 2 ++ Thermo.Active.Utils/languages/en.xml | 2 ++ .../setup/components/bitSelect.css | 15 ++++++++++++++- .../setup/components/bitSelect.less | 19 +++++++++++++++++-- .../setup/components/bitSelect.ts | 16 ++++++++++++++++ .../setup/components/bitSelect.vue | 6 +++++- 6 files changed, 56 insertions(+), 4 deletions(-) diff --git a/Thermo.Active.Utils/languages/IT.xml b/Thermo.Active.Utils/languages/IT.xml index efbb32bb..9b0aa567 100644 --- a/Thermo.Active.Utils/languages/IT.xml +++ b/Thermo.Active.Utils/languages/IT.xml @@ -430,4 +430,6 @@ In posizione: In errore: Allarme test freno: + Nessuno + Tutti \ No newline at end of file diff --git a/Thermo.Active.Utils/languages/en.xml b/Thermo.Active.Utils/languages/en.xml index acb7fc67..19a0a095 100644 --- a/Thermo.Active.Utils/languages/en.xml +++ b/Thermo.Active.Utils/languages/en.xml @@ -430,4 +430,6 @@ In Position: In Error: Brake Test Alarm: + None + All \ No newline at end of file diff --git a/Thermo.Active/wwwroot/src/app_modules_thermo/setup/components/bitSelect.css b/Thermo.Active/wwwroot/src/app_modules_thermo/setup/components/bitSelect.css index 13b5039b..32a75fad 100644 --- a/Thermo.Active/wwwroot/src/app_modules_thermo/setup/components/bitSelect.css +++ b/Thermo.Active/wwwroot/src/app_modules_thermo/setup/components/bitSelect.css @@ -40,6 +40,18 @@ overflow: hidden; height: auto !important; width: 500px !important; + border-top: 1px solid #979797; + border-left: 1px solid #979797; +} +.bitSelect > section.bitsections .selall { + grid-column-start: 1; + grid-column-end: 3; + display: flex; + justify-content: flex-end; + align-items: center; + margin: 24px 0px 0 0; + height: 64px; + border-top: 2px solid #bbbcbc; } .bitSelect > section.bitsections > article { height: 70px !important; @@ -47,7 +59,8 @@ grid-template-columns: 68px 1fr; align-items: center; justify-items: center; - border: 1px solid #979797; + border-bottom: 1px solid #979797; + border-right: 1px solid #979797; } .bitSelect > section.bitsections > article label { width: 100%; diff --git a/Thermo.Active/wwwroot/src/app_modules_thermo/setup/components/bitSelect.less b/Thermo.Active/wwwroot/src/app_modules_thermo/setup/components/bitSelect.less index 39fda0e4..0ea23c86 100644 --- a/Thermo.Active/wwwroot/src/app_modules_thermo/setup/components/bitSelect.less +++ b/Thermo.Active/wwwroot/src/app_modules_thermo/setup/components/bitSelect.less @@ -27,7 +27,7 @@ } } - > section.bitsections { + > section.bitsections { position: absolute !important; top: 48px; right: 0; @@ -42,13 +42,28 @@ height: auto !important; width: 500px !important; + border-top: 1px solid #979797; + border-left: 1px solid #979797; + + .selall{ + grid-column-start:1; + grid-column-end:3; + display: flex; + justify-content: flex-end; + align-items: center; + margin: 24px 0px 0 0; + height: 64px; + border-top: 2px solid #bbbcbc; + } + > article { height: 70px !important; display: grid !important; grid-template-columns: 68px 1fr; align-items: center; justify-items: center; - border: 1px solid #979797; + border-bottom: 1px solid #979797; + border-right: 1px solid #979797; label { width: 100%; diff --git a/Thermo.Active/wwwroot/src/app_modules_thermo/setup/components/bitSelect.ts b/Thermo.Active/wwwroot/src/app_modules_thermo/setup/components/bitSelect.ts index 5219b493..7f3ddfa9 100644 --- a/Thermo.Active/wwwroot/src/app_modules_thermo/setup/components/bitSelect.ts +++ b/Thermo.Active/wwwroot/src/app_modules_thermo/setup/components/bitSelect.ts @@ -66,4 +66,20 @@ export default class bitSelect extends Vue { return this.bit_test(this.value.range.max,bit-1); } + setAll(){ + this.Value = this.value.range.max; + + for (let i = 0; i < this.bitSize; i++) { + Vue.set(this.bits, i, this.bit_test(this.Value, i)) + } + } + + clearAll(){ + this.Value = 0; + + for (let i = 0; i < this.bitSize; i++) { + Vue.set(this.bits, i, this.bit_test(this.Value, i)) + } + } + } \ No newline at end of file diff --git a/Thermo.Active/wwwroot/src/app_modules_thermo/setup/components/bitSelect.vue b/Thermo.Active/wwwroot/src/app_modules_thermo/setup/components/bitSelect.vue index 109d19c4..19279836 100644 --- a/Thermo.Active/wwwroot/src/app_modules_thermo/setup/components/bitSelect.vue +++ b/Thermo.Active/wwwroot/src/app_modules_thermo/setup/components/bitSelect.vue @@ -23,7 +23,11 @@
- + +
+ + +
From fe6498f6ed4c946afa2f7e27ce6186e48a81b141 Mon Sep 17 00:00:00 2001 From: Thermo_SIM Date: Sun, 21 Mar 2021 18:06:26 +0100 Subject: [PATCH 15/20] Fix Vuoto Behaviour --- .../setup/vuoto/base-components/vuoto-principale.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Thermo.Active/wwwroot/src/app_modules_thermo/setup/vuoto/base-components/vuoto-principale.ts b/Thermo.Active/wwwroot/src/app_modules_thermo/setup/vuoto/base-components/vuoto-principale.ts index 432acb58..e78f60d9 100644 --- a/Thermo.Active/wwwroot/src/app_modules_thermo/setup/vuoto/base-components/vuoto-principale.ts +++ b/Thermo.Active/wwwroot/src/app_modules_thermo/setup/vuoto/base-components/vuoto-principale.ts @@ -70,6 +70,9 @@ export default class VuotoPrincipale extends Vue { if(this.recipe.vacuum_main_2_chart_setpointx.setpointHMI <= 0 && this.recipe.vacuum_main_3_chart_setpointx.setpointHMI <= 0){ this.recipe.vacuum_main_1_chart_setpointx.setpointHMI = this.recipe.vacuum_main_max_time.setpointHMI; + this.recipe.vacuum_main_2_chart_setpointx.setpointHMI = 0; + this.recipe.vacuum_main_3_chart_setpointx.setpointHMI = 0; + } else if (this.recipe.vacuum_main_3_chart_setpointx.setpointHMI > 0){ diff = this.recipe.vacuum_main_max_time.setpointHMI - @@ -86,6 +89,7 @@ export default class VuotoPrincipale extends Vue { this.recipe.vacuum_main_3_chart_setpointx.setpointHMI; this.recipe.vacuum_main_2_chart_setpointx.setpointHMI = diff; + this.recipe.vacuum_main_3_chart_setpointx.setpointHMI = 0; } } else{ @@ -103,6 +107,7 @@ export default class VuotoPrincipale extends Vue { this.recipe.vacuum_main_3_chart_setpointx.setpointHMI; this.recipe.vacuum_main_2_chart_setpointx.setpointHMI = diff; + this.recipe.vacuum_main_3_chart_setpointx.setpointHMI = 0; } } @@ -130,6 +135,7 @@ export default class VuotoPrincipale extends Vue { { if(this.recipe.vacuum_main_3_chart_setpointx.setpointHMI <= 0){ this.recipe.vacuum_main_2_chart_setpointx.setpointHMI = this.recipe.vacuum_main_max_time.setpointHMI - this.recipe.vacuum_main_1_chart_setpointx.setpointHMI; + this.recipe.vacuum_main_3_chart_setpointx.setpointHMI = 0; } else{ diff = this.recipe.vacuum_main_max_time.setpointHMI - From ef139a236504510917d7c86a7f15907a3dca780d Mon Sep 17 00:00:00 2001 From: Thermo_SIM Date: Sun, 21 Mar 2021 19:28:07 +0100 Subject: [PATCH 16/20] Fix THermoprophet --- Thermo.Active.Core/ThreadsFunctions.cs | 6 ++ Thermo.Active.Model/Constants.cs | 1 + .../DTOModels/ThWarmers/DTOThermoCam.cs | 9 ++- Thermo.Active.NC/NcAdapter.cs | 8 +++ Thermo.Active.Utils/languages/IT.xml | 2 +- Thermo.Active.Utils/languages/en.xml | 2 +- Thermo.Active/Listeners/ListenersHandler.cs | 4 ++ .../Listeners/SignalR/SignalRListener.cs | 7 +++ .../base-components/thermocamera.ts | 56 ++++++++++++++++++- .../base-components/thermocamera.vue | 7 ++- .../components/base-components/warmers.ts | 1 - Thermo.Active/wwwroot/src/services/hub.ts | 8 ++- .../wwwroot/src/services/warmersService.ts | 4 ++ 13 files changed, 105 insertions(+), 10 deletions(-) diff --git a/Thermo.Active.Core/ThreadsFunctions.cs b/Thermo.Active.Core/ThreadsFunctions.cs index 21054cb2..e17c4931 100644 --- a/Thermo.Active.Core/ThreadsFunctions.cs +++ b/Thermo.Active.Core/ThreadsFunctions.cs @@ -390,13 +390,19 @@ public static class ThreadsFunctions } // salvo dati temp sul PLC ncAdapter.WriteRecipeWarmChTCamTempAct(actualTemp); + NcAdapter.lastImageTaken = DateTime.Now; // give PLC strobe for uploaded Actual TEMP from image ncAdapter.SendTCamImageReadyStrb(); + + + MessageServices.Current.Publish(SEND_NEWTCAMIMAGE, null, NcAdapter.lastImageTaken); + } } // salvo status thermocam... NcAdapter.cameraIsConnected = TCCom.CameraIsConnected; + } else RestoreConnection(); diff --git a/Thermo.Active.Model/Constants.cs b/Thermo.Active.Model/Constants.cs index faa86d2b..b4f113c8 100644 --- a/Thermo.Active.Model/Constants.cs +++ b/Thermo.Active.Model/Constants.cs @@ -104,6 +104,7 @@ namespace Thermo.Active.Model public const string SEND_AXIS_INFO = "SEND_AXIS_INFO"; public const string SEND_CHANNELS_IO_DATA = "SEND_CHANNELS_IO_DATA"; + public const string SEND_NEWTCAMIMAGE = "SEND_NEWTCAMIMAGE"; public const string SEND_CMSCONNECT_GW_REBOOT_STATUS = "SEND_CMSCONNECT_GW_REBOOT_STATUS"; public const string SEND_ERROR_TO_UI = "SEND_ERROR_TO_UI"; public const string SEND_EXPIRED_MAINTENANCES_DATA = "SEND_EXPIRED_MAINTENANCES_DATA"; diff --git a/Thermo.Active.Model/DTOModels/ThWarmers/DTOThermoCam.cs b/Thermo.Active.Model/DTOModels/ThWarmers/DTOThermoCam.cs index 95270743..c28c2a07 100644 --- a/Thermo.Active.Model/DTOModels/ThWarmers/DTOThermoCam.cs +++ b/Thermo.Active.Model/DTOModels/ThWarmers/DTOThermoCam.cs @@ -40,6 +40,11 @@ namespace Thermo.Active.Model.DTOModels.ThWarmers /// public bool ThermoOptionActive { get; set; } = false; + /// + /// Data ultima acquisizione + /// + public DateTime LastTakenImage { get; set; } = new DateTime(0); + #endregion Public Properties #region Public Methods @@ -64,7 +69,9 @@ namespace Thermo.Active.Model.DTOModels.ThWarmers return false; if (RangeTemperature != item.RangeTemperature) return false; - + if (LastTakenImage != item.LastTakenImage) + return false; + return true; } diff --git a/Thermo.Active.NC/NcAdapter.cs b/Thermo.Active.NC/NcAdapter.cs index e150eb99..62bc2a11 100644 --- a/Thermo.Active.NC/NcAdapter.cs +++ b/Thermo.Active.NC/NcAdapter.cs @@ -140,6 +140,11 @@ namespace Thermo.Active.NC /// public static bool cameraIsConnected = false; + /// + /// Indica se la FLIR camera è connessa + /// + public static DateTime lastImageTaken = new DateTime(0); + #endregion Public Fields #region Public Constructors @@ -3172,6 +3177,9 @@ namespace Thermo.Active.NC }; // controllo se connessa currTCamData.ThermoCamConnected = cameraIsConnected; + + // DataOra ultima immagine scattata + currTCamData.LastTakenImage = lastImageTaken; } return libraryError; } diff --git a/Thermo.Active.Utils/languages/IT.xml b/Thermo.Active.Utils/languages/IT.xml index 9b0aa567..da101661 100644 --- a/Thermo.Active.Utils/languages/IT.xml +++ b/Thermo.Active.Utils/languages/IT.xml @@ -431,5 +431,5 @@ In errore: Allarme test freno: Nessuno - Tutti + Tutti \ No newline at end of file diff --git a/Thermo.Active.Utils/languages/en.xml b/Thermo.Active.Utils/languages/en.xml index 19a0a095..48d74428 100644 --- a/Thermo.Active.Utils/languages/en.xml +++ b/Thermo.Active.Utils/languages/en.xml @@ -431,5 +431,5 @@ In Error: Brake Test Alarm: None - All + All \ No newline at end of file diff --git a/Thermo.Active/Listeners/ListenersHandler.cs b/Thermo.Active/Listeners/ListenersHandler.cs index f9b7a02e..1bb3cc2f 100644 --- a/Thermo.Active/Listeners/ListenersHandler.cs +++ b/Thermo.Active/Listeners/ListenersHandler.cs @@ -68,6 +68,10 @@ namespace Thermo.Active.Listeners { SignalRListener.SendThermoChannelsIoData(a); })); + infos.Add(MessageServices.Current.Subscribe(SEND_NEWTCAMIMAGE, (a, b) => + { + SignalRListener.SendTCamNewImage(a); + })); infos.Add(MessageServices.Current.Subscribe(SEND_ACTIVE_PROGRAM_DATA, (a, b) => { SignalRListener.SendActiveProgramData(a); diff --git a/Thermo.Active/Listeners/SignalR/SignalRListener.cs b/Thermo.Active/Listeners/SignalR/SignalRListener.cs index 4fd0c6ad..41ec6578 100644 --- a/Thermo.Active/Listeners/SignalR/SignalRListener.cs +++ b/Thermo.Active/Listeners/SignalR/SignalRListener.cs @@ -611,6 +611,13 @@ namespace Thermo.Active.Listeners.SignalR } } + public static void SendTCamNewImage(object newImageDate) + { + DateTime imageDate = (DateTime)newImageDate; + var context = GlobalHost.ConnectionManager.GetHubContext(); + context.Clients.Group("ncData").newThermoCamImage(newImageDate); + } + public static void SetGatewayRebootStatus(object status) { string msg = status.ToString(); diff --git a/Thermo.Active/wwwroot/src/app_modules_thermo/setup/riscaldi/components/base-components/thermocamera.ts b/Thermo.Active/wwwroot/src/app_modules_thermo/setup/riscaldi/components/base-components/thermocamera.ts index ba96d595..00910449 100644 --- a/Thermo.Active/wwwroot/src/app_modules_thermo/setup/riscaldi/components/base-components/thermocamera.ts +++ b/Thermo.Active/wwwroot/src/app_modules_thermo/setup/riscaldi/components/base-components/thermocamera.ts @@ -8,6 +8,8 @@ import { warmersService } from "@/services/warmersService"; import { awaiter } from '@/_base'; import termoModal from "./thermoProphet-modal.vue"; import { ModalHelper } from '@/components/modals'; +import moment from "moment"; +import { messageService } from "src/_base"; @Component({ name: "thermocamera", components: { @@ -26,12 +28,18 @@ export default class Thermocamera extends Vue { btnModeEnabled = true; thermoImageUri: string = "/thermoprophet/colored/_last.jpg"; - thermoImageOpacity: number = 0; + thermoImageOpacity: number = 1; resistanceMode = 0; + timeoutLastTakenImage = 0; + timeCamDiff = " "; + TCamData: { imageSize: { x: number, y: number }, rangeTemperature: { max: number, min: number }, + thermoCamConnected: boolean, + thermoOptionActive: boolean, + lastTakenImage: Date, } = null; @Watch("warmers", { deep: true }) @@ -53,6 +61,13 @@ export default class Thermocamera extends Vue { async mounted() { this.ChangedTemps(); this.TCamData = await warmersService.GetTCamData(); + + messageService.subscribeToChannel("new-thermocam-image", (args)=>{ + if(this.TCamData){ + console.log(args) + this.TCamData.lastTakenImage = args[0]; + } + }); } get selectedChannels(): Warmers.IChannel[] { @@ -75,6 +90,45 @@ export default class Thermocamera extends Vue { // return (store.state.warmers.tCamStatus.thermoCamMode); // } + get thermocameraImageUrl(){ + if(!this.TCamData || moment(this.TCamData.lastTakenImage).year() <= 2000) + return "/thermoprophet/colored/_last.jpg?lastmod=NOTAVAILABLE"; + return "/thermoprophet/colored/_last.jpg?lastmod=" + this.TCamData.lastTakenImage; + } + + get thermocameraImageOk(): boolean { + clearInterval(this.timeoutLastTakenImage); + this.timeCamDiff = " " + + if(!this.TCamData) + return false; + + if(moment(this.TCamData.lastTakenImage).year() > 2000) + { + this.lastTakenImageFuncion(); + this.timeoutLastTakenImage = setInterval(this.lastTakenImageFuncion,10000); + return true; + + } + return false; + } + + lastTakenImageFuncion(){ + var today = moment(new Date()); + var end = moment(this.TCamData.lastTakenImage); + var diff = (moment.duration(today.diff(end)) as any)._data; + var seconds = diff.seconds; + var minutes = diff.minutes; + var hours = diff.hours; + + if(hours >0) + this.timeCamDiff = hours + "h " + minutes + "m "; + else if(minutes >0) + this.timeCamDiff = minutes + "m " + seconds + "s "; + else + this.timeCamDiff = seconds + "s"; + } + get thermocameraModeBTN(): boolean { return (store.state.warmers.tCamStatus.thermoCamOnOff); } diff --git a/Thermo.Active/wwwroot/src/app_modules_thermo/setup/riscaldi/components/base-components/thermocamera.vue b/Thermo.Active/wwwroot/src/app_modules_thermo/setup/riscaldi/components/base-components/thermocamera.vue index 736c8881..f2f970d5 100644 --- a/Thermo.Active/wwwroot/src/app_modules_thermo/setup/riscaldi/components/base-components/thermocamera.vue +++ b/Thermo.Active/wwwroot/src/app_modules_thermo/setup/riscaldi/components/base-components/thermocamera.vue @@ -111,8 +111,8 @@ @methodChanged="m => selectionMethod = m" :recipe="recipe" :resistanceMode="resistanceMode" - thermoImage="/thermoprophet/colored/_last.jpg" - :thermoImageVisible="thermocameraModeBTN" + :thermoImage="thermocameraImageUrl" + :thermoImageVisible="true" :thermoImageOpacity="thermoImageOpacity" :isThermoProphet="true" > @@ -128,8 +128,9 @@ + {{timeCamDiff}} i.row == row)) return this.resistances.filter(i => i.row == row); } diff --git a/Thermo.Active/wwwroot/src/services/hub.ts b/Thermo.Active/wwwroot/src/services/hub.ts index a77898a9..7ffaa307 100644 --- a/Thermo.Active/wwwroot/src/services/hub.ts +++ b/Thermo.Active/wwwroot/src/services/hub.ts @@ -124,8 +124,7 @@ export class Hub { this._hub.client.gaugeData = Hub.gaugeData; this._hub.client.axisInfo = Hub.axisInfoData; this._hub.client.channelsIoVal = Hub.channelsIOUpdate; - - + this._hub.client.newThermoCamImage = Hub.newThermoCamImage; this._hub.client.logout = this.logout; @@ -219,6 +218,11 @@ export class Hub { recipeActions.setOverview(store, data); } + + public static newThermoCamImage(data) { + messageService.publishToChannel("new-thermocam-image", data); + } + public static prodPanelData(data) { prodActions.setProdPanel(store, data); } diff --git a/Thermo.Active/wwwroot/src/services/warmersService.ts b/Thermo.Active/wwwroot/src/services/warmersService.ts index 6648a066..b7f45409 100644 --- a/Thermo.Active/wwwroot/src/services/warmersService.ts +++ b/Thermo.Active/wwwroot/src/services/warmersService.ts @@ -71,10 +71,14 @@ export class WarmersService extends baseRestService { let result = await this.Get<{ imageSize: { x: number, y: number }, rangeTemperature: { max: number, min: number }, + thermoCamConnected: boolean, + thermoOptionActive: boolean, + lastTakenImage: Date, }>((await this.BASE_URL()) + "TCamData", true); return result; } + async GetMeasurePoints(setname: string): Promise { return await this.Get((await this.BASE_URL()) + `getMeasurePoints?setName=${setname}`, true); } From 7ded45280f633b346bd9b643794eb414787ea328 Mon Sep 17 00:00:00 2001 From: Thermo_SIM Date: Mon, 22 Mar 2021 11:26:33 +0100 Subject: [PATCH 17/20] Fix THermocamera History --- Thermo.Active.NC/NcAdapter.cs | 2 +- .../wwwroot/assets/icons/png/NOCamera.png | Bin 0 -> 14809 bytes .../base-components/thermoProphet-modal.css | 13 +++++++-- .../base-components/thermoProphet-modal.less | 23 +++++++++++----- .../base-components/thermoProphet-modal.ts | 6 ++++ .../base-components/thermoProphet-modal.vue | 26 ++++++++++++++---- .../base-components/thermocamera.ts | 2 +- 7 files changed, 55 insertions(+), 17 deletions(-) create mode 100644 Thermo.Active/wwwroot/assets/icons/png/NOCamera.png diff --git a/Thermo.Active.NC/NcAdapter.cs b/Thermo.Active.NC/NcAdapter.cs index 62bc2a11..53cc2f4c 100644 --- a/Thermo.Active.NC/NcAdapter.cs +++ b/Thermo.Active.NC/NcAdapter.cs @@ -2520,7 +2520,7 @@ namespace Thermo.Active.NC { imgName = "UNDEFINED"; } - prodInfoController.Create(pInfoRaw.NumTarget, pInfoRaw.NumDone, pInfoRaw.TimeWarm, pInfoRaw.TimeVent, pInfoRaw.TimeVacuum, pInfoRaw.TimeCycleGross, pInfoRaw.TimeCycleNet, pInfoRaw.MaterialTempEndWarm, pInfoRaw.MaterialTempEndVent, pInfoRaw.MoldTemp, pInfoRaw.VacuumReadVal, pInfoRaw.MouldEnergyOUT, pInfoRaw.MouldEnergyIN, false, pInfoRaw.ThermoImage); + prodInfoController.Create(pInfoRaw.NumTarget, pInfoRaw.NumDone, pInfoRaw.TimeWarm, pInfoRaw.TimeVent, pInfoRaw.TimeVacuum, pInfoRaw.TimeCycleGross, pInfoRaw.TimeCycleNet, pInfoRaw.MaterialTempEndWarm, pInfoRaw.MaterialTempEndVent, pInfoRaw.MoldTemp, pInfoRaw.VacuumReadVal, pInfoRaw.MouldEnergyOUT, pInfoRaw.MouldEnergyIN, false, imgName); // indico di rileggere il DB... forceProdPanelDbReload = true; } diff --git a/Thermo.Active/wwwroot/assets/icons/png/NOCamera.png b/Thermo.Active/wwwroot/assets/icons/png/NOCamera.png new file mode 100644 index 0000000000000000000000000000000000000000..3bd4a65dac5f41c8337cb814fb2f351bba781cff GIT binary patch literal 14809 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 i.thermoImage) } @@ -48,6 +49,7 @@ export default class ThermoModal extends Vue { this.TCamData = await warmersService.GetTCamData(); await warmersService.ResetMeasurePoints(); + console.log(this.lastItem); let min = Math.min(this.lastItem.numDone); this.items.push(...await prodService.History(min - 1, min - 1)) } @@ -63,6 +65,10 @@ export default class ThermoModal extends Vue { this.reloadMeasuresDelayed(this.images[this.selectedImage], this.measurePoints); } + getImageCycle(Sel){ + return this.items[Sel]; + } + @Watch("selectedImage") reloadMeasuresDelayed = debounce(async (image, points) => { let result = await warmersService.GetMeasurePoints(image); diff --git a/Thermo.Active/wwwroot/src/app_modules_thermo/setup/riscaldi/components/base-components/thermoProphet-modal.vue b/Thermo.Active/wwwroot/src/app_modules_thermo/setup/riscaldi/components/base-components/thermoProphet-modal.vue index 13145b32..525b1f1c 100644 --- a/Thermo.Active/wwwroot/src/app_modules_thermo/setup/riscaldi/components/base-components/thermoProphet-modal.vue +++ b/Thermo.Active/wwwroot/src/app_modules_thermo/setup/riscaldi/components/base-components/thermoProphet-modal.vue @@ -6,10 +6,16 @@
+ /> + + {{'thermo-long-tap-info' | localize("Long tap on image to add temperature inspectors")}}
- + + +
+ {{'thermo-cycle' | localize("Cycle")}} {{selectedImage}} + >{{'thermo-cycle' | localize("Cycle")}} {{getImageCycle(selectedImage).numDone}}
diff --git a/Thermo.Active/wwwroot/src/app_modules_thermo/setup/riscaldi/components/base-components/thermocamera.ts b/Thermo.Active/wwwroot/src/app_modules_thermo/setup/riscaldi/components/base-components/thermocamera.ts index 00910449..09b2315d 100644 --- a/Thermo.Active/wwwroot/src/app_modules_thermo/setup/riscaldi/components/base-components/thermocamera.ts +++ b/Thermo.Active/wwwroot/src/app_modules_thermo/setup/riscaldi/components/base-components/thermocamera.ts @@ -28,7 +28,7 @@ export default class Thermocamera extends Vue { btnModeEnabled = true; thermoImageUri: string = "/thermoprophet/colored/_last.jpg"; - thermoImageOpacity: number = 1; + thermoImageOpacity: number = 0; resistanceMode = 0; timeoutLastTakenImage = 0; From 29057c54311bc9e5bad7d15777f0051056348478 Mon Sep 17 00:00:00 2001 From: Thermo_SIM Date: Mon, 22 Mar 2021 14:18:59 +0100 Subject: [PATCH 18/20] Added TYpeval --- .../Controllers/HistorySheetsController.cs | 5 +++-- Thermo.Active.Model/DatabaseModels/HistorySheetModel.cs | 8 +++++++- Thermo.Active.NC/NcAdapter.cs | 2 +- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/Thermo.Active.Database/Controllers/HistorySheetsController.cs b/Thermo.Active.Database/Controllers/HistorySheetsController.cs index b9e79682..4f39d101 100644 --- a/Thermo.Active.Database/Controllers/HistorySheetsController.cs +++ b/Thermo.Active.Database/Controllers/HistorySheetsController.cs @@ -23,7 +23,7 @@ namespace Thermo.Active.Database.Controllers dbCtx.Dispose(); } - public HistorySheetModel Create(string recipe, short piece, float value1, float value2, float value3) + public HistorySheetModel Create(string recipe, short piece, float value1, float value2, float value3, ushort typeval) { HistorySheetModel mod = new HistorySheetModel() { @@ -32,7 +32,8 @@ namespace Thermo.Active.Database.Controllers NumDone = piece, FirstVal = value1, SecondVal = value2, - ThirdVal = value3 + ThirdVal = value3, + TypeVal = typeval }; // Add to database diff --git a/Thermo.Active.Model/DatabaseModels/HistorySheetModel.cs b/Thermo.Active.Model/DatabaseModels/HistorySheetModel.cs index 732e8f47..161cbd91 100644 --- a/Thermo.Active.Model/DatabaseModels/HistorySheetModel.cs +++ b/Thermo.Active.Model/DatabaseModels/HistorySheetModel.cs @@ -27,7 +27,13 @@ namespace Thermo.Active.Model.DatabaseModels public float SecondVal { get; set; } [Column("ThirdVal")] - public float ThirdVal { get; set; } + public float ThirdVal { get; set; } + + [Column("TypeVal")] + public ushort TypeVal { get; set; } + + + #endregion Public Properties } diff --git a/Thermo.Active.NC/NcAdapter.cs b/Thermo.Active.NC/NcAdapter.cs index 7c9e2684..f1469480 100644 --- a/Thermo.Active.NC/NcAdapter.cs +++ b/Thermo.Active.NC/NcAdapter.cs @@ -2575,7 +2575,7 @@ namespace Thermo.Active.NC using (HistorySheetsController HSC = new HistorySheetsController()) { - HSC.Create(NcFileAdapter.RecipeLiveData.RecipeName, prodInfoData.NumDone, (float) shhetRaw.Value1, (float) shhetRaw.Value2, (float) shhetRaw.Value3); + HSC.Create(NcFileAdapter.RecipeLiveData.RecipeName, prodInfoData.NumDone, (float) shhetRaw.Value1, (float) shhetRaw.Value2, (float) shhetRaw.Value3,shhetRaw.TypeVal); // manage strobe/ack! libraryError = numericalControl.PLC_WAckHistorySheets(); From 36dc4171e5049cafe821bff2f2a55c0b20479871 Mon Sep 17 00:00:00 2001 From: Thermo_SIM Date: Mon, 22 Mar 2021 14:24:34 +0100 Subject: [PATCH 19/20] Added Migration --- ...3221323362_addedTypeValHistory.Designer.cs | 29 ++++ .../202103221323362_addedTypeValHistory.cs | 18 +++ .../202103221323362_addedTypeValHistory.resx | 126 ++++++++++++++++++ .../DatabaseModels/HistorySheetModel.cs | 4 +- 4 files changed, 174 insertions(+), 3 deletions(-) create mode 100644 Thermo.Active.Database/Migrations/202103221323362_addedTypeValHistory.Designer.cs create mode 100644 Thermo.Active.Database/Migrations/202103221323362_addedTypeValHistory.cs create mode 100644 Thermo.Active.Database/Migrations/202103221323362_addedTypeValHistory.resx diff --git a/Thermo.Active.Database/Migrations/202103221323362_addedTypeValHistory.Designer.cs b/Thermo.Active.Database/Migrations/202103221323362_addedTypeValHistory.Designer.cs new file mode 100644 index 00000000..0a73b16b --- /dev/null +++ b/Thermo.Active.Database/Migrations/202103221323362_addedTypeValHistory.Designer.cs @@ -0,0 +1,29 @@ +// +namespace Thermo.Active.Database.Migrations +{ + using System.CodeDom.Compiler; + using System.Data.Entity.Migrations; + using System.Data.Entity.Migrations.Infrastructure; + using System.Resources; + + [GeneratedCode("EntityFramework.Migrations", "6.2.0-61023")] + public sealed partial class addedTypeValHistory : IMigrationMetadata + { + private readonly ResourceManager Resources = new ResourceManager(typeof(addedTypeValHistory)); + + string IMigrationMetadata.Id + { + get { return "202103221323362_addedTypeValHistory"; } + } + + string IMigrationMetadata.Source + { + get { return null; } + } + + string IMigrationMetadata.Target + { + get { return Resources.GetString("Target"); } + } + } +} diff --git a/Thermo.Active.Database/Migrations/202103221323362_addedTypeValHistory.cs b/Thermo.Active.Database/Migrations/202103221323362_addedTypeValHistory.cs new file mode 100644 index 00000000..489d24d5 --- /dev/null +++ b/Thermo.Active.Database/Migrations/202103221323362_addedTypeValHistory.cs @@ -0,0 +1,18 @@ +namespace Thermo.Active.Database.Migrations +{ + using System; + using System.Data.Entity.Migrations; + + public partial class addedTypeValHistory : DbMigration + { + public override void Up() + { + AddColumn("dbo.HistorySheets", "TypeVal", c => c.Int(nullable: false)); + } + + public override void Down() + { + DropColumn("dbo.HistorySheets", "TypeVal"); + } + } +} diff --git a/Thermo.Active.Database/Migrations/202103221323362_addedTypeValHistory.resx b/Thermo.Active.Database/Migrations/202103221323362_addedTypeValHistory.resx new file mode 100644 index 00000000..9b6060f4 --- /dev/null +++ b/Thermo.Active.Database/Migrations/202103221323362_addedTypeValHistory.resx @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + H4sIAAAAAAAEAO1d2W4jOZZ9H2D+QdBjT7WVzkI3phN2N1SyM9sob2M5M3ueBDpEy4GKRRWLK92D+bJ5mE+aXxgyVq5BMsiIkKoKiQQsLofk5SF5Sd7L+L//+d+zv30Lg9krTFI/js7npyfv5jMYefHWj3bn8zx7/uO/z//213/9l7PLbfht9qVO9z1Oh3JG6fn8Jcv2HxaL1HuBIUhPQt9L4jR+zk68OFyAbbx4/+7dXxanpwuIIOYIazY7e8ijzA9h8QP9XMWRB/dZDoKbeAuDtApHMesCdXYLQpjugQfP548vMAnjk6WX+a/w5AJk4AmkcD5bBj5AtVnD4Hk+A1EUZyBDdf3wOYXrLImj3XqPAkDw+LaHKN0zCHCuog0f2uS6zXn3Hjdn0Wasobw8zeLQEPD0+0o+CzZ7LynPG/khCV4iSWdvuNWFFM/nywAk4QVMvcTf4yLSQubzGVv0h1WQ4GysyIvkjeDLDjsRg343E2T9rqERYhv+991slQdZnsDzCOZZAlCK+/wp8L0f4dtj/BOMzqM8CMhGoWahOCoABd0n8R4m2dsDfCaberWdzxZ05gWbu8nLZiwFcBVl37+fz25RNcBTABv2EMJaZ3ECP8EIJiCD23uQZTBBnX8bR5Arnins0c8CWBeFuIqG3nx2A75dw2iXvZzP0Z/z2Uf/G9zWIVXxnyMfjVSUKUtyppSzRdvvajZ89APojAUN2OS9n2XAewlhlPWiAJXblgdXW1hIXsUFLDz8l2M68AVdxx4IRitNczx1g6zjPPHauqKJ/mR5vXy42azvPj+sLo3x0MqQcHVistyCV39X9Kwg83z2AIMiMn3x93WVqDGwKdN9TOLwIQ648VZEb5qGxfI0jyDZwaznIMcILsZ3gzP10K67znRQC7t8wOGMy4vcDDBDcn/0kzQbZyYBIxV0D9L0lzjZDl7QGnp5gnp3nYFwP3hpmwBEuxzshhfgBQwgYnFdzg8xmm1ApKCWmSZx5yHRJWgHAd2plSzm1JMPU6ne+iUNMdaU5GQpZtV91TI68EqOcQRoj/95b46FfiKipTC1k9Aj2t5S8wdiNsSBaiSpzsFKXa5/sENmw2dlVBJlDrGWos4mUlxUilUqb1mjgmyY8rkWSVM2VaJaIk9eN7z/rOhK/6LBpp4HxUrYUFOmnuqmMW2ZTLtGI5Pk4pD0FQ5ENdvd7GzacoQ7GzpaVVX7nU0BeBtn7o4vGrCphxeuSJ+BUucbS6G4QavlGNqrswng0M4hWs3AmabQPYYbiovHMB0tHsNMGqsxfPF0630EoR+8uRjEDNrUo7isSp9x3OZsyHr658EOoUfZwT/4u5ds7f+zKemHt8z8aOMaPtuDPHr7R5zcCuQTCENghfBQdR25g+kFtEKbedRpZV4LHNTR6z2EllMkZk4MtnY18SOMce9lyzyLA2u4skqu4C7eIjQ+vVUc7mGUVnd19q11Dlu22jXstf8MrSl7G4d+BAKMZce2B/iKpvYLGGTABEh7gfoIXuPEzyBe6tbxc/YTdLJSyWCnXrKqumhu7foexROl2PS9C62QZLJb4uSRh2mx9PCRkhPO8IhT04WuUi9Nh0MYa+8yitbzFQ/ya/gKAzTJ2850YOsGaZlAMHjLLyNcI8MLB8GRbOCZDXHtAfp3H43F5G39AmHmYnhyeFMPzovs8hUNBfMx2WRU7knd7D8eoOfvxzFGuM3Di6JG3fsqjfvVLyBoaovqGpjrQGvoxdHWHufxxU9cwKDMBIrTsYYY9xSDZFurOz+60aJksFOPvKlNFHQGXaODndqeiFU47wdhzg3wXvzIyREvCTU1Q6q69CEJkXW0Y95S+kMf8kb+zznRrrHNISvBurqwY+EOhHJ95yYm+2jU02X78FtFfATu7tqwapjwpJ6lzqZJ3B7Xy9JwZ/bShKaXgxhOr7plyo664mB1RYtUzq4wOXj2AkSYQF1L+0sQDOxixmlwpp5q6pFiOsfojbAjOwIo9uwD6UZ+lMEIRB50ZcUvgpyaTb/b8nexa1RbfoIeg6zI+otnUw/JXM/TeENlIqf97rSCFUCRweGSJSiJX7YkifQqbr98EbCOp6CDmH4YzpvrzQZDxs3WHqHD5LU9yrmI8+K2W2UhDraB356N6ZuiqCxyb5ZXt4+Xt8vb1WU/u9xVnOMmWd/1DOBsJ5IjYWk7/JY5u3u+gSBFzJfK/PPt1ePm7uPm5nK5/vxwqZR2AgsKYgJYkwF7iFx+2/tJB+QUrlrsLNM1repNqQNMp66MG0WQU0+rfebS300bJXV1p5YNYJBooKy1poVqZU2YtmuAijMMoazJjSylifQqbj+73MPkOU5CuHWstUlxp55nRBXrM/fIcMaaj5ysxpUi9QUEuaXd1SqOsiQOvhI+mZPPXQUU+m+7sSwghGNcyvINmbEd7jrpuZGvlcl02lJNwopC+ZlYK4Np2zrmZP0ZLom3V9Fz7GRWI7GmnsmOxp7jKl17CWi8H/ua/tygghP8ag8M95fR9gvRhJ4mDgziV5CEtohxsMVo1jB5sL1Est69Xd26w7r7/GgJ5sReBoE0bpcWMOXouwrH0Mrx+Fi9eQH8lMSpA3fgAuuWkkBPpC/Ay/PQAQ4xnPqjkEOoH0rZHmzcaGrCpL0i/EcOc3iVwdCJGS6DNvWqoGmqfV+6tk+z59ZZNJoKjlIYSDIUtEtAOMq9yQPcW04iDzBEChKqnT3U8imNgzyDSGIvg7d8jTorN6qw9rBeI7ogHrgY0yTU1AO6qksvv4o261jb0qKtI9w7GhgfaRjvXse71ojeyRFXUz/h7ork14ZK3G6oZGm4PZQ0odm2CSll7ViinZiv0o8B2LUvZZqNrRVqegaiLP03EtXpsELs2cIkeENsI7lA99YNDJ9gUuugq/msOPY4n7/j+pVKeX/dJj3lhVmKTSnK8p7LrSAx5sRivHx4uHvQleTX5cPt1e0nK2nyd4euZMoiTy3Zf9xvLpaPl7rCvVmu/n51e7nBjXj4sryWSZnN93h1I8j03rJruCvGIXqJKWTiDgtD3a660O2bv8v6g+v8JuH3Oh23TNPY8wu515OU4KVKurzLaDvTeLayvXFmX5O9QWL390jQaPU5n/+Ba1B3AfSBQVEAYZhNY787OeEFixQqmGAdBgQFmxJ8vshrX37k+XsQqGvCZBWqbtJXkRZNQWzMBdzDCOtaamHb1aApiNEpVXI6WxDs0SCV+vmxThoYvEXGUI9/ftCQgfrvmbFFC17UHpSh2jXVoYzkoWxz1mp3nXatmFcGpyO1/OmuTkZpvOPFMEk6xynZq/HkneGAOWU76uwuuiieEZ0tvfJ9+xVIPbDlN0poFdq6IruyYdp06nqEzpzuys51Vq/xWa7WB2ReEgPw2VgfODjiTqVHiDvpOPQIxoamkysyUxqGjIQ5nSEZJRY4R0RGcQvGJKO4kw6ejFJfPBlh1I55hJUu53KqT0ylXx9fzoESVNUSHY5IHaqNiKrqO+uaTEHYwhtTm0W0a+ZAVKU8O4lCCE/Igycp2QYdXoidIu3oSXaWXR2mIGbnwq7wxh2ImEe4vHe2YaQFvrOzjmCJF/mCyDnT6RhCEpO1sDYhZpdfybiHop11GY1gHUI/JoKJ3VE1aKDwTRXSrtdpvLZ7qwHVD2GW1GuVnobX4UnQl9ad/eukVlMRXXc2VV8xDULtw5hZJ710UnbCMc2wYh8yDUooHMqENOx1pKTtk3asM2xnqyabYTv79whnWM0TUg2Xw4GpfZSbKkU7xp+Zj/T8VMtlTkYnM/+5llkdXq76XDbywxtXcTCp2khMNekq7cm2ceY8ROoqNAtDB8lxyXvMioZR08bVNoz6/FhUDqnxuox7akv2lm60E4c+v5VG8AYnxNNTWtUaPap0vO9qxGJV/zmpjXPiln4O+F2CYtVon00oHH1wOPyWCQyRURUrW+S0ckZhOYdx1zCTWKal81nrYqGwCuToLIDGO3ApJnHsocDCkhfBEKNApzaEkZisTrwdmQ6wrH6s2ZAOVop1YykYsZFRgBWfXfOFSNyH6pRQ3Ad+RLDyzwup8KvvpqTlh1NE0KIP0ChQyW9YCCAFn8xQALIv9EvEIP8+gAK/mmZEmLTNgyaOjJX8EqIAxDOpCIi44VZWiTqUE9dKdB6qj6vANMeTjUPxsYICWKRMicA79GVVCdXzHiJQ+hURBVDhEy5A4TzPFTjVyitqJa0oMTjEkihYTYhDohmRUriuCM6SKL2ryxmkaQ29knFrv57nB4FWjUpW96JbrSsRje+jS4Rk6NrAt1TfuYEVJbUMqwSq78jAFkOrNW7kLbedl8lZ09qeb7ja3p5tsJBZJsAySXZ0mL0gO4dyl31NV8s6h7KxnEYZyuw7exKJdB2U822QHJKzEqnXOpVIJMfgA4hE/tUIXi56Vq3M0b7CrpVoEqNOdchIacUqQB1CVuUnKzQExVtTdreHsqd0IyLKepKArHRO98KRjS4Ni77ulshGmIVwhh9lImMxoXCUVmWyqzOVcEh1uFM2XUZkw8pG8ux+p5g0bKNk7eu2jhILT62eaptCafaOK5FqUE5boVcb4DiV3ogUlDwm3Ck2DeMR9X23PgU1lAhtY5FROKjWuDQNFAxNFNyKb2gS6j0Ty8vO/K68/2050WzJQUuHVI2uxscXsHyo97jStbjUHVLGo41++dtVvHj1rgrNLguJlrXHYx1yU94M6uqZHbKqX9VqbpuauLPF2nuBIagCzhYoiQf3WQ6CokZpHXED9ns/2qVtzipktt4DD7Vj9cf1fPYtDKL0fP6SZfsPi0VaQKcnoe8lcRo/ZydeHC7ANl68f/fuL4vT00VYYiy8lBQ5ezfWlJTFCdhBJhY/7r2FxTtp9e3ZfLbahlwy9m5NcrZZlya7PuO7sj76rHPiv8k3YOsXf+oKyO7b+IvKCvEjajb+JFghAdh1CiYBQlBrD6DE7NuK9WMaqzjIw6gM9AUXoHKI6is1JEBWBvEYZwumQdw1KydM7v6a7iX9PiwVQFed195f9Oy0DgBpZ1GfhuvfY+3n10iMZxS6iQD/gZsuKOZzbiRegKM2vVCFrMTpws0WcX1j1tx6YibB0ipMH6W2DCBRcjxNiyszEdPLhcEBydubQ3N+d+Q1ka5ZL2OEiCNh3oSaDA+0kojGBwo2HyBAhBWAHlD3IE1/Kb5fQULtm1CDEQG9PMG9lQH8FDw1MKqoTVrG6YNuAhDt8uKxc7qpdag+VGnMxDR0WwcezGDjLk5cLS6chUrPNUaN0zkD0+/89B+aHdN5DyDmkS3xElFfHE6xUuA+ZvShIsRgpJdvi+PtEDXU22AT9SyEgnGeoWDpEJ9yPDlbwRjDrJ5DyNFa1qEp9ByCJddjHF9c7B6UGkLeOLrqytYQp2dXdgDI+gBnsZv7ms/ykRBhHTiY+nlMmnX7nvmhT1CNvaUDTrMGmuakViJIFdwikx2veZ3WVJ198Hcv2dr/JwOT4OBNWoQbqNnwWYAVoFBjqEdv/wieuCMNb7/JgOCzxF1Qn0AYAhpnVwYZiKmy++a1iqSK2ZiqF6s4DhCxfnjLGESvjNg8FTEGkxz4tt5DVmEPwbdNWgYbQV3HQIAUFKEGQH6Ege69bJlnccBj+lGBudl72QY0SYxrKi+gqnTvAi7e0JDyvVUc7mGUgtLUj9oRlQk2HpXCWETKchpRkQX2EJW6oFpkfQu69p8hP1ACFGo8SG5j1GwQYERmnisjNkERYzCQ4StaANDWNmOmhKSIQOtvEXNAi53AI8DBwid1ITBfAfWh5BpMkUuoWaVlnKFO5EhR099ETkUPxqHDBTMEHiA9SKGDIlWNqMxTq0hfMbmv4SsMbnxmqvwFR20CHLcJfaNpH3+7TgyaoJh+mEuUldlUFCH6CJcR1q4YgcM60ODsJPDYbtsHso3NRGOHcltyMHB4PyfzYaOBIVVU6u+1kkKXfP21C+cBev5ecJNUhhsNvfozoCRME2h4FVB855EEakONjtzjaMtBEcEGa8OLn/BQbajZKsMD1YEHM16EXnkOxo3Ujc98+OhDDaw4NBrNKTMJxulpT5WmgXzPQb5XQE5EmMby3gFJKL9Mc2J0Z5fvmJpHmS3OHkvfOxsN5HPk/5xz1ciL0MPscmf3B5wLbe++73GHwDxHYMEBMZHCymtlkr1N/aozfZgVHBihSu8UB0RqXajNGdSR10S6Y29ciu0Fexb7yjsCT9i9nGuAkylD4N/eZ9rQgZFuxX4rVmLMW0P09NZaHA86xU1PXtfEdUBa47VO2o9mfXeFYJJXdjvjV6FGG6MLCLaBz+4gt03omNYgqzjHTWBl45XBpueKBta6cuEQbw/Q8iEijJTM7O75BoI0T1j7PRS1iZ83YR1pILYEFlcM+HqZkVwVs9kCs3subMx3+W3vJxLgwqwPNgmM8Y9v8nFm4iF8ccVqFuph7vGrMvUYZHk8HlsNsQOTA6bKn+8xp6sBlvS8WwBhx2N+XjOdx6oVq/jks3jRei2jTCCjDO0Rv3L2z14ZsTG1gdYbHsaIzQuwHGARkx7WVN48KOViXFAvUPUYC935h758uErXXgIYK9km0IQFiN8+CB5huL+Mtl+4ugkT9Mb/CpKwE79MYHJoGGxxVga0CTVByoPtJSL97u3qloWjonph3n1+lIIWceNfF6EstdMmg1QHm1zy4FF2FXIaBRVhZge+evMC+CmJU8awnI3rgXrLNpqOMUP8Arw8D3m8OtwQjRuCbagZEj/Y2lB9pLIV+Baeu3pjog5mnSjfC3SwSLAPDJovE0qEYZT7yiVD6JBh5sSVZChol4CQPwzbo8jNvow1Pg57gHumekkRYoKAFRUkfBFUFbUxBV0+pQgng/cge2EsRKqYzb6IMriPzECWMxVMq7CDGTKN77+DUUO9pWk+ZLqzS6Vc5rJ0Do9/gswhUVYGGV9hibbF9TVWj+1xYcRxHe9YG6jSzTMoI0ZmE/dMA5ukKb0KaX43zzRUTyRQbzcUIsAvMRRNT6vnGtg3E8ok8xmS06u/xe8l3Lytfw4KFp4Uf64Cv1g06xQ3IPKf0ca/6OTz+Z9O/jSfLQMfpOXrGtVrEB/YF8y1noc4/R4/DwG34YLNbv7IBEZJ0y3FfWIYkq4xiqcUzn6Eb2yH17xq35LniXi2YDOeMXTEecrXc30s4ts8CLDpG+IjCFL+HX8md3WEWwIEcbQr345vUYp34ikQkqhquUjuoUaTRzGlfYJoSKDdzRatJWiPE+E1HRbVNRYYceFkIjQeiLu/soNjXLH6MyKlPl3RB6GZUwkI7mMEV9EWfjuf/1eR58Ps6h/1VPzd7C5BU8SH2bvZfzsiosSM4mg52L5NIOeMJpnblwks2QwcAbWvEtjhsM8R2DavfovADqd5iqCEeYrjQNFpZrNtt9/+0RK+nNzs5rV2giRd/M2mKBGG/nw1xFxbXgn3z79vXwawUSKaW5wSBB/7Z8Vlz30CPT8tdLd3TpluNadLtX5BWrW7vHp4DLMiGtCern4f0pMIBhUy61TJzevRzlvNHa7dqjE5fQ5CrRx5lul0kh+DkWkIgqCPoFyoYaQzfYmUZ3701qc6hC+9JRLhSm+JVDnTW6IwfvSWaLQPvSUY4ULff8S13vO2tRG7zDtoo3tUsW+8KwHQ/umuBOAUlXB6t0SiHd7785D2c9fF0Z7p9ZzBDTTLLs8mfW1UU60kC3N7ZjPoVkS/d1Re2UerHbpYpzlvbptRRvtwW2y1Cw9uu4Y1DtzaJyWCzW1gprVqc1Lh8qzHSImpkZqWTUYLNZhHrX2l7bqtsX2x1GFbT+kS6Bmtc+YohJO0DUzrIG2FUntHO6ejngux1dFIvzMO0/HKehpbQb3vBaUtdLl77m96QSI8fAe5VOz2jD1a0ZNutQanPJW0SWuG5rjn9LvZVboKEAJM4PbD7BEJHQeVntnl7x4nQn0Oo7qq+X6YajZuwWZnZlW2IU44JR65R0tZJ9eGpW/vAJOzyhH2aMV+qAYIrGuQ2bijc1sdWR+c+UG3i86hWgYR3q/VPiPOi6NX0xvv2vPV6W7F9t6T9IEd1XpKJCHC99Va+aKdXoVN00FiPF2d9p3Y2VW3iOkuzNxMAb/fcY7YZZq694GsXCPfcN7r+ZAeLTMHmLoYL1Sb9Yd0PrW5oiM8TnsT1374ED6qPWrR5B5g6r2Xe4ce5Tlt41lqcTAu9CS1OdsUuo5aATZuo3YolLeoI6jCR9QGy9UhOeEeaolEuYbaLeSsS2j/uY12BLXDqR1ALVGIgdIXgxwbfTAYT099HmrPmJ2Okn21AWGyvdgNcuitbVOsBQTvcGlpcFV4R9rc3tJ+lha3t7R3pV2zau9K5yd8ctfEo9VXK/9G22M4xrHRVB2jslsphpRD5AAbGuKj1VWJtMfZhv8gN/H17PYGqapb8V1vIvQmDzJ/H/geKhpV8uTklGtwi8b4upGQbBSN+wcOFHEUJphCIFjFUZolWEPmCe1Hnr8HAdcaJqX+9LxoMNmYC7iHEWa1uLE6Jcot7hcNOjMaVXKgvlquwQvWN2bD+m1KqSJx8OQ6WZDEnEScCw9XDJ9iEErpuLUOyC+NT5nyBYudfKbjXDMsN0yburlmz4FT7vWAu6j8OO5s6ZW+1CuQemDLz+Jott121k48c7JRw3GyFzNcUNJsklU7Dk3DRJer4q+UZuOvpmYlHsBq2lxjHA2f2osXjk9E1K+ET11PoR4an1iTrk0VICUVZXpHdiYdMQq1OHs0QX2Gnq4UHxpxzjCND1zwZXZ9OGIamuHGSDnWWmuRHUqE/mbY1fUVisOglvQTINPw6ggWxEPg1aiLYi9eTb0s0rfyYx5ncRYBND/YyF8DP5RPch8wP9ojTyKwQ32y6NzBJiSBwa6kXkOfpfbigjv+mR2sql7kn46K00xXk7NnqmnrmM7jReaQv4apS3zEIE7wa5y6zE4dDm3qOqojrUNi3VRT3jEdckmNbTft1z9GWi3ldr8kekeq4yeRpumzpHDVV1kOgVBHuJAeJi+nWFId0FP2FaJRuEkaZ22IoxfViX6/86iB6EhZmJH1oSOGPNEfdU5UfCtAfqI/5sLKPHNf1YR7kp4jWvVyPnmDKbDWae3MFGY95ZP35/PtU4yoUVqucbYngiVYUA1iPyounkggLxa78SrLI0YQVxQRJyoF97Fee3jLFHGz+HTy1sWt3YxWHboayiaQl6rfZkLBFpdHJJCXF8X8x/K48thnKfkCuRSiEp+LBMrSpE+j8cXKk4rLL1NvyDfM1NURvAUmqIkolbASVcIN8IRm6Gzx/LNPfOGCNKKiyWTqgqUP/PDly5OKqvFTlbrthh81uoG+ZueqQEeLiq1WDt2CuoYzn6SjQL0hTVzycsURcaJy8E2kRqtEh5GClomSiVvXHqRoLQS86txVul7JJoV2zZfiZKpma82dHVsHrhodaUV12dfJNyYioX0TBZWg40UF10mUZbFePXxpXApReT8XH3RTFUaryFxJdLSomLRMwRVEqIUyPao8vZsRKYXalOCQT3bm0rSOCuW0Xbk3AAHARrEbErqBuo1X27bL5GFoFc83U6pGt80VJFEJT6ZFtqB8CjeilJtsy0SoaeQ9RCN5TDFt2SjXouoccl2WMW6H3JiNZ24LZI3vulRw23huUW0bT0RZN15qrSmQgJ5lp+gkiG8IHdEhDJnSSKK4ZIPYrlBHGrwBItUQTg8tWkCEHrIQZINCw1rO2bAYXwgiiy2hEJSmXQ6FINZ1KyGwkS6FIDZL6paHhimTu+bJkMSqmzjBMALTYM4omuwBCEVsIdItGw2rkuFZJF6QxQmGEZgGi0bRT6YSitalu0A+5pf1zkSlPKMosDpSDS00+fjrcSM90CCcXojSG1CB3PRuS91pNh23nAQKHaEtEO5L1E3c2aI86KkC0E/ui9Nni4c8wu9DlL8uYOrvWogzhBlBj7oSbNLgM7D6ipKpUZ2EfdEJZmALMrBMMv8ZeNl9+SqMH+3msy/4fbfz+WX4BLdX0V2e7fMMNRmGT/SlCb7h7Cr/bMHV+eyuPAhx0QRUTR8/qXEX/ZD7wbap90fBIxoSCHx1Wr1hgvsyw2+Z7N4apNuYPaaXAVXia2588etdAQJL76I1eIV96oYYfA13wHu7r74bLgdRdwQt9rMLH+C3e9IKo82PfiIOb8Nvf/1/JferaTpeAQA= + + + dbo + + \ No newline at end of file diff --git a/Thermo.Active.Model/DatabaseModels/HistorySheetModel.cs b/Thermo.Active.Model/DatabaseModels/HistorySheetModel.cs index 161cbd91..97b9734f 100644 --- a/Thermo.Active.Model/DatabaseModels/HistorySheetModel.cs +++ b/Thermo.Active.Model/DatabaseModels/HistorySheetModel.cs @@ -30,11 +30,9 @@ namespace Thermo.Active.Model.DatabaseModels public float ThirdVal { get; set; } [Column("TypeVal")] - public ushort TypeVal { get; set; } + public int TypeVal { get; set; } - - #endregion Public Properties } } \ No newline at end of file From 2a0b3f7e72670178ccd7f3fc56d0c1693e0151b5 Mon Sep 17 00:00:00 2001 From: Thermo_SIM Date: Mon, 22 Mar 2021 14:33:31 +0100 Subject: [PATCH 20/20] Fix Frontend --- .../Thermo.Active.Database.csproj | 7 +++++++ .../log-misurazioni-table.css | 16 ++++++---------- .../log-misurazioni-table.less | 11 ++++------- .../log-misurazioni-table.ts | 12 ++++++++++++ .../log-misurazioni-table.vue | 10 ++++------ 5 files changed, 33 insertions(+), 23 deletions(-) diff --git a/Thermo.Active.Database/Thermo.Active.Database.csproj b/Thermo.Active.Database/Thermo.Active.Database.csproj index fc16aecf..9aa5b9df 100644 --- a/Thermo.Active.Database/Thermo.Active.Database.csproj +++ b/Thermo.Active.Database/Thermo.Active.Database.csproj @@ -167,6 +167,10 @@ 202103191626072_HistorySheetsCycle.cs + + + 202103221323362_addedTypeValHistory.cs + @@ -227,6 +231,9 @@ 202103191626072_HistorySheetsCycle.cs + + 202103221323362_addedTypeValHistory.cs + \ No newline at end of file diff --git a/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/LogMisurazioni/components/tables/log-misurazioni-table/log-misurazioni-table.css b/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/LogMisurazioni/components/tables/log-misurazioni-table/log-misurazioni-table.css index 3d2ac3fc..20a8ca44 100644 --- a/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/LogMisurazioni/components/tables/log-misurazioni-table/log-misurazioni-table.css +++ b/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/LogMisurazioni/components/tables/log-misurazioni-table/log-misurazioni-table.css @@ -12,21 +12,17 @@ } .main-container th.lastre-recipe, .main-container td.lastre-recipe { - width: 40%; + width: 30%; } .main-container th.lastre-numpezzo, .main-container td.lastre-numpezzo { width: 10%; } -.main-container th.lastre-firstval, -.main-container td.lastre-firstval { +.main-container th.lastre-type, +.main-container td.lastre-type { width: 10%; } -.main-container th.lastre-secondval, -.main-container td.lastre-secondval { - width: 10%; -} -.main-container th.lastre-thirdval, -.main-container td.lastre-thirdval { - width: 10%; +.main-container th.lastre-value, +.main-container td.lastre-value { + width: 30%; } diff --git a/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/LogMisurazioni/components/tables/log-misurazioni-table/log-misurazioni-table.less b/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/LogMisurazioni/components/tables/log-misurazioni-table/log-misurazioni-table.less index 909bd298..8a8c9be0 100644 --- a/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/LogMisurazioni/components/tables/log-misurazioni-table/log-misurazioni-table.less +++ b/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/LogMisurazioni/components/tables/log-misurazioni-table/log-misurazioni-table.less @@ -11,19 +11,16 @@ width: 20%; } &.lastre-recipe { - width: 40%; + width: 30%; } &.lastre-numpezzo { width: 10%; } - &.lastre-firstval { + &.lastre-type { width: 10%; } - &.lastre-secondval { - width: 10%; - } - &.lastre-thirdval { - width: 10%; + &.lastre-value { + width: 30%; } } } diff --git a/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/LogMisurazioni/components/tables/log-misurazioni-table/log-misurazioni-table.ts b/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/LogMisurazioni/components/tables/log-misurazioni-table/log-misurazioni-table.ts index 6f839e1d..52adf874 100644 --- a/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/LogMisurazioni/components/tables/log-misurazioni-table/log-misurazioni-table.ts +++ b/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/LogMisurazioni/components/tables/log-misurazioni-table/log-misurazioni-table.ts @@ -18,4 +18,16 @@ export default class LogMisurazioniTable extends Vue { return moment(date).format('LTS'); } + convertType(item){ + if (!item || item == 0) + return "ND" + else if (item == 1) + return "PALLET HEIGHT" + else if (item == 2) + return "SHEET TICKNESS" + else if (item == 2) + return "SHEET LENGTH" + else + return "ND" + } } diff --git a/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/LogMisurazioni/components/tables/log-misurazioni-table/log-misurazioni-table.vue b/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/LogMisurazioni/components/tables/log-misurazioni-table/log-misurazioni-table.vue index e474ed9c..fe039d4a 100644 --- a/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/LogMisurazioni/components/tables/log-misurazioni-table/log-misurazioni-table.vue +++ b/Thermo.Active/wwwroot/src/app_modules_thermo/sotto-cofano/LogMisurazioni/components/tables/log-misurazioni-table/log-misurazioni-table.vue @@ -6,9 +6,8 @@ {{'underthehood_label_date' | localize("Date")}} {{'underthehood_label_recipe' | localize("Ricetta")}} {{'underthehood_label_numpiece' | localize("N. Pezzo")}} - {{'underthehood_label_firsvtal' | localize("firstVal")}} - {{'underthehood_label_secondval' | localize("secondVal")}} - {{'underthehood_label_thirdval' | localize("thirdVal")}} + {{'underthehood_label_type' | localize("Type")}} + {{'underthehood_label_value' | localize("Value")}} @@ -17,9 +16,8 @@ {{convertDate(item.dtEvent)}} - {{convertDateToTime(item.dtEvent)}} {{item.recipeName}} {{item.numDone}} - {{item.firstVal}} - {{item.secondVal}} - {{item.thirdVal}} + {{convertType(item.typeVal)}} + {{item.firstVal}} [{{item.secondVal}}, {{item.thirdVal}}]