Merge branch 'develop' of https://bitbucket.org/ncarminati/cms_thermo_active into develop
This commit is contained in:
@@ -21,3 +21,9 @@ Output/
|
||||
*.njsproj
|
||||
/ConsoleApp1
|
||||
/WindowsFormsApp1
|
||||
!Thermo.Active/wwwroot/thermoprophet/colored/_last.jpg
|
||||
Thermo.Active/wwwroot/thermoprophet/colored/*.jpg
|
||||
!Thermo.Active/wwwroot/thermoprophet/original/_last.jpg
|
||||
Thermo.Active/wwwroot/thermoprophet/original/*.jpg
|
||||
!Thermo.Active/wwwroot/thermoprophet/data/_last.dat
|
||||
Thermo.Active/wwwroot/thermoprophet/data/*.dat
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"MeasPoints": [],
|
||||
"CameraName": "FLIR AX5",
|
||||
"CameraAddress": "",
|
||||
"CameraName": "Camera Emulator",
|
||||
"DestPoints": {
|
||||
"Coords": [
|
||||
"0, 0",
|
||||
@@ -13,10 +13,10 @@
|
||||
},
|
||||
"OrigPoints": {
|
||||
"Coords": [
|
||||
"55, 214",
|
||||
"49, 68",
|
||||
"218, 80",
|
||||
"197, 226"
|
||||
"20, 501",
|
||||
"16, 95",
|
||||
"390, 128",
|
||||
"279, 506"
|
||||
],
|
||||
"curr": 4
|
||||
},
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
</softKey_procedure>
|
||||
|
||||
<softKey_procedure>
|
||||
<active>false</active>
|
||||
<active>true</active>
|
||||
<category>2</category>
|
||||
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
|
||||
<plcId>3</plcId>
|
||||
@@ -35,6 +35,7 @@
|
||||
<lang langKey="it">Termoregolatori</lang>
|
||||
</localizedNames>
|
||||
<visible>true</visible>
|
||||
<starred>true</starred>
|
||||
<refCallParam>options_thermoregulator_enable</refCallParam>
|
||||
<refCallLabel>options_thermoregulator_enable_button</refCallLabel>
|
||||
</softKey_procedure>
|
||||
@@ -101,7 +102,7 @@
|
||||
<lang langKey="it">Riscaldi indietro</lang>
|
||||
</localizedNames>
|
||||
<visible>true</visible>
|
||||
<starred>true</starred>
|
||||
<starred>false</starred>
|
||||
</softKey_procedure>
|
||||
|
||||
<softKey_procedure>
|
||||
@@ -467,22 +468,44 @@
|
||||
<refCallLabel>dash_setpoint_minus_button</refCallLabel>
|
||||
</softKey_procedure>
|
||||
|
||||
|
||||
<!--softKey_group>
|
||||
<active>true</active>
|
||||
<category>1</category>
|
||||
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
|
||||
<softKey_procedure>
|
||||
<active>true</active>
|
||||
<category>3</category>
|
||||
<operatorConfirmationNeeded>true</operatorConfirmationNeeded>
|
||||
<plcId>39</plcId>
|
||||
<localizedNames>
|
||||
<lang langKey="en">aaa:</lang>
|
||||
<lang langKey="it">aaa</lang>
|
||||
<lang langKey="en">Mould heating</lang>
|
||||
<lang langKey="it">Riscaldo stampo</lang>
|
||||
</localizedNames>
|
||||
<subKeys>
|
||||
<subKey active="true" plcId="21"> B </subKey>
|
||||
<subKey active="true" plcId="22"> C </subKey>
|
||||
</subKeys>
|
||||
<visible>true</visible>
|
||||
</softKey_group-->
|
||||
<visible>true</visible>
|
||||
</softKey_procedure>
|
||||
|
||||
|
||||
<softKey_procedure>
|
||||
<active>true</active>
|
||||
<category>2</category>
|
||||
<operatorConfirmationNeeded>true</operatorConfirmationNeeded>
|
||||
<plcId>40</plcId>
|
||||
<localizedNames>
|
||||
<lang langKey="en">Frame X+Y</lang>
|
||||
<lang langKey="it">Cornice X+Y</lang>
|
||||
</localizedNames>
|
||||
<visible>true</visible>
|
||||
<refCallParam>dimensions_frame_setupall</refCallParam>
|
||||
<refCallLabel>dimensions_frame_setupall_button</refCallLabel>
|
||||
</softKey_procedure>
|
||||
|
||||
<softKey_procedure>
|
||||
<active>true</active>
|
||||
<category>2</category>
|
||||
<operatorConfirmationNeeded>true</operatorConfirmationNeeded>
|
||||
<plcId>41</plcId>
|
||||
<localizedNames>
|
||||
<lang langKey="en">Windowplate X+Y</lang>
|
||||
<lang langKey="it">Piastrafinestra X+Y</lang>
|
||||
</localizedNames>
|
||||
<visible>true</visible>
|
||||
<refCallParam>dimensions_plate_setupall</refCallParam>
|
||||
<refCallLabel>dimensions_plate_setupall_button</refCallLabel>
|
||||
</softKey_procedure>
|
||||
|
||||
</userSoftKeys>
|
||||
@@ -229,7 +229,9 @@
|
||||
<SubType>Designer</SubType>
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</EmbeddedResource>
|
||||
<None Include="Config\ThermoConf.json" />
|
||||
<None Include="Config\ThermoConf.json">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Include="packages.config" />
|
||||
<None Include="Recipes\testa.rcp">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
|
||||
@@ -32,6 +32,7 @@ using System.Configuration;
|
||||
using Thermo.Active.Model.DTOModels.ThIO;
|
||||
using Thermo.Active.Thermocamera;
|
||||
|
||||
|
||||
public static class ThreadsFunctions
|
||||
{
|
||||
#region Private Fields
|
||||
|
||||
@@ -45,14 +45,17 @@ namespace Thermo.Active.Database.Migrations
|
||||
|
||||
// Main Areas
|
||||
new FunctionAccessModel() { Name = "productionArea", Area = GENERAL_KEY, Enabled = true, WriteLevelMin = 20, ReadLevelMin = 1, PlcId = 0 },
|
||||
new FunctionAccessModel() { Name = "reportArea", Area = GENERAL_KEY, Enabled = true, WriteLevelMin = 30, ReadLevelMin = 1, PlcId = 0 },
|
||||
new FunctionAccessModel() { Name = "alarmsArea", Area = GENERAL_KEY, Enabled = true, WriteLevelMin = 1, ReadLevelMin = 1, PlcId = 0 },
|
||||
new FunctionAccessModel() { Name = "maintenanceArea", Area = GENERAL_KEY, Enabled = true, WriteLevelMin = 1, ReadLevelMin = 1, PlcId = 0 },
|
||||
new FunctionAccessModel() { Name = "scadaArea", Area = GENERAL_KEY, Enabled = true, WriteLevelMin = 1, ReadLevelMin = 1, PlcId = 0 },
|
||||
new FunctionAccessModel() { Name = "usersArea", Area = GENERAL_KEY, Enabled = true, WriteLevelMin = 30, ReadLevelMin = 1, PlcId = 0 },
|
||||
new FunctionAccessModel() { Name = "jobeditorArea", Area = GENERAL_KEY, Enabled = true, WriteLevelMin = 20, ReadLevelMin = 1, PlcId = 0 },
|
||||
new FunctionAccessModel() { Name = "utilitiesArea", Area = GENERAL_KEY, Enabled = true, WriteLevelMin = 1, ReadLevelMin = 1, PlcId = 0 },
|
||||
new FunctionAccessModel() { Name = "setupArea", Area = GENERAL_KEY, Enabled = true, WriteLevelMin = 20, ReadLevelMin = 1, PlcId = 0 },
|
||||
new FunctionAccessModel() { Name = "progrpreriscArea", Area = GENERAL_KEY, Enabled = true, WriteLevelMin = 20, ReadLevelMin = 1, PlcId = 0 },
|
||||
new FunctionAccessModel() { Name = "thermoHoodArea", Area = GENERAL_KEY, Enabled = true, WriteLevelMin = 30, ReadLevelMin = 1, PlcId = 0 },
|
||||
new FunctionAccessModel() { Name = "modal-load-programArea", Area = GENERAL_KEY, Enabled = true, WriteLevelMin = 20, ReadLevelMin = 1, PlcId = 0 },
|
||||
|
||||
|
||||
|
||||
// thermo functions
|
||||
new FunctionAccessModel() { Name = RECIPE_MANAGER, Area = GENERAL_KEY, Enabled = true, WriteLevelMin = 1, ReadLevelMin = 1, PlcId = 0 }
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 6.2 KiB |
@@ -22,10 +22,9 @@
|
||||
.tab-header {
|
||||
width: 70%;
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fit, minmax(160px, 200px));
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: flex-end;
|
||||
grid-column-gap: 10px;
|
||||
|
||||
.totp{
|
||||
margin-right: 10px;
|
||||
@@ -36,6 +35,7 @@
|
||||
border-radius: 2px;
|
||||
background-image: linear-gradient(to bottom, #f1f1f1 0%, #bbbcbc 98%);
|
||||
height: 48px;
|
||||
width: 150px;
|
||||
|
||||
span {
|
||||
margin: auto;
|
||||
@@ -54,6 +54,8 @@
|
||||
justify-self: flex-end;
|
||||
font-size: 32px;
|
||||
line-height: 1;
|
||||
width: 150px;
|
||||
margin-left: 30px;
|
||||
div{
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
|
||||
@@ -5463,10 +5463,9 @@ article .box .body {
|
||||
.modal.processo-info header .tab-header {
|
||||
width: 70%;
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fit, minmax(160px, 200px));
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: flex-end;
|
||||
grid-column-gap: 10px;
|
||||
}
|
||||
.modal.processo-info header .tab-header .totp {
|
||||
margin-right: 10px;
|
||||
@@ -5476,6 +5475,7 @@ article .box .body {
|
||||
border-radius: 2px;
|
||||
background-image: linear-gradient(to bottom, #f1f1f1 0%, #bbbcbc 98%);
|
||||
height: 48px;
|
||||
width: 150px;
|
||||
}
|
||||
.modal.processo-info header .tab-header button span {
|
||||
margin: auto;
|
||||
@@ -5491,6 +5491,8 @@ article .box .body {
|
||||
justify-self: flex-end;
|
||||
font-size: 32px;
|
||||
line-height: 1;
|
||||
width: 150px;
|
||||
margin-left: 30px;
|
||||
}
|
||||
.modal.processo-info header .tab-header label div {
|
||||
display: flex;
|
||||
|
||||
@@ -14,6 +14,7 @@ declare module Prod {
|
||||
vacuumReadVal: number;
|
||||
mouldEnergyOUT: number;// Generated by https://quicktype.io
|
||||
isScrap: boolean;
|
||||
thermoImage: string;
|
||||
}
|
||||
|
||||
interface IProdPanel {
|
||||
|
||||
@@ -31,6 +31,7 @@
|
||||
<button class="gray square close" @click="sendMessage('close')">×</button>
|
||||
</div>
|
||||
<modal-container name="modal" :class="{'blur':applyBlurNc}"></modal-container>
|
||||
<modal-container container-name="modal2" :class="{'blur':applyBlurNc}"></modal-container>
|
||||
<modal-nc-container name="modal-nc"></modal-nc-container>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -67,7 +67,7 @@ export default class Login extends Vue {
|
||||
})
|
||||
}
|
||||
|
||||
checkIfUserIsAuthorized(): boolean {
|
||||
checkIfUserIsAuthorized(): boolean {
|
||||
return machineStatusActions.isAreaVisible(store, this.URLS_TO_FUNCTIONS_BINDING[this.$route.path]);
|
||||
}
|
||||
|
||||
@@ -75,17 +75,14 @@ export default class Login extends Vue {
|
||||
return machineStatusActions.isAreaVisible(store, "thermoHood");
|
||||
}
|
||||
|
||||
|
||||
URLS_TO_FUNCTIONS_BINDING = {
|
||||
"/production": "production",
|
||||
"/tooling": "tooling",
|
||||
"/report": "report",
|
||||
"/alarms": "alarms",
|
||||
"/maintenance": "maintenance",
|
||||
"/scada": "scada",
|
||||
"/users": "users",
|
||||
"/jobeditor": "job-editor",
|
||||
"/utilities": "utilities"
|
||||
"/setup": "setup",
|
||||
"/progrprerisc": "progrprerisc",
|
||||
"/modal-load-program": "modal-load-program",
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -6,6 +6,8 @@ import Slider from "@/app_modules_thermo/components/slider.vue";
|
||||
@Component({name:"scheda",components: { slider:Slider} })
|
||||
export default class Scheda extends Vue{
|
||||
|
||||
@Prop({})
|
||||
id:string;
|
||||
@Prop({})
|
||||
portata:Recipe.IValue;
|
||||
@Prop({})
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<template v-if="portata.status.visible">
|
||||
<div class="input-area">
|
||||
<label>{{portata.key | localize(portata.key)}}</label>
|
||||
<numeric v-model="portata" />
|
||||
<numeric v-model="portata" :id="id" />
|
||||
</div>
|
||||
<slider v-model="portata"></slider>
|
||||
</template>
|
||||
|
||||
@@ -27,7 +27,19 @@ export default class SVGChart extends Vue {
|
||||
@Prop({ default: null })
|
||||
maxY: number;
|
||||
|
||||
step: number = 50;
|
||||
step: number = 50;
|
||||
|
||||
@Prop({ default: function () { return [] } })
|
||||
ids: string[]
|
||||
|
||||
click(idx){
|
||||
if(idx > this.ids.length -1 )
|
||||
return
|
||||
var elem = document.getElementById(this.ids[idx]);
|
||||
if(elem){
|
||||
elem.focus();
|
||||
}
|
||||
}
|
||||
|
||||
startXOf(barindex: number) {
|
||||
return this.bars.slice(0, barindex).reduce((p, c) => c.width + p, 0);
|
||||
|
||||
@@ -81,6 +81,9 @@
|
||||
:height="scaleY(b.height)"
|
||||
:fill="b.backgroundColor"
|
||||
:stroke="b.borderColor"
|
||||
stroke-width="6"
|
||||
@click="click(idx)"
|
||||
class="pointer"
|
||||
/>
|
||||
|
||||
<line
|
||||
@@ -99,6 +102,9 @@
|
||||
.chart {
|
||||
overflow: hidden;
|
||||
}
|
||||
.pointer {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.chart svg {
|
||||
width: 100%;
|
||||
|
||||
@@ -41,6 +41,17 @@ export default class Gantt extends Vue {
|
||||
return (this.$store.state as AppModel).prod.panel;
|
||||
}
|
||||
|
||||
get prod() {
|
||||
return (this.$store.state as AppModel).prod;
|
||||
}
|
||||
|
||||
get isSection1Active() {
|
||||
return this.prod.fase <= 1;
|
||||
}
|
||||
|
||||
get isSection2Active() {
|
||||
return this.prod.fase <= 2;
|
||||
}
|
||||
|
||||
get ganttHeight() {
|
||||
return (this.$refs.section1 as any).rowHeight +
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
:transform="`translate(0 ${Math.min(ganttOptions.stepDuration * ganttOptions.secondSize + PadY,40) })`"
|
||||
>
|
||||
<gantt-row
|
||||
v-if="isSection1Active"
|
||||
:section="1"
|
||||
:blocks="blocks"
|
||||
ref="section1"
|
||||
@@ -31,7 +32,7 @@
|
||||
<gantt-row
|
||||
v-if="getRowHeight($refs.section1)"
|
||||
:padding-horizontal="PadX "
|
||||
:padding-vertical="getRowHeight($refs.section1) + ganttOptions.elementPadding"
|
||||
:padding-vertical="(isSection1Active ?getRowHeight($refs.section1) + ganttOptions.elementPadding:0)"
|
||||
:section="2"
|
||||
:blocks="blocks"
|
||||
:zoom-factor="zoomFactor"
|
||||
@@ -46,7 +47,7 @@
|
||||
:padding-horizontal="PadX "
|
||||
ref="section3"
|
||||
@heightChanged="updateRow"
|
||||
:padding-vertical="getRowHeight($refs.section1) + getRowHeight($refs.section2) + ganttOptions.elementPadding*2"
|
||||
:padding-vertical="isSection1Active?getRowHeight($refs.section1)+ganttOptions.elementPadding:0 + isSection2Active?getRowHeight($refs.section2)+ganttOptions.elementPadding:0 "
|
||||
:section="3"
|
||||
:blocks="blocks"
|
||||
:zoom-factor="zoomFactor"
|
||||
|
||||
+3
-3
@@ -13,19 +13,19 @@ export default class AriaControstampo extends Vue {
|
||||
return [
|
||||
{
|
||||
backgroundColor: "#fff",
|
||||
borderColor: "#848484",
|
||||
borderColor: "#9e9e9e",
|
||||
height: this.recipe.upperplate_air_1_chart_setpointy.setpointHMI,
|
||||
width: this.recipe.upperplate_air_1_chart_setpointx.setpointHMI
|
||||
},
|
||||
{
|
||||
backgroundColor: "#e5f3ff",
|
||||
borderColor: "#848484",
|
||||
borderColor: "#79a9d2",
|
||||
height: this.recipe.upperplate_air_2_chart_setpointy.setpointHMI,
|
||||
width: this.recipe.upperplate_air_2_chart_setpointx.setpointHMI
|
||||
},
|
||||
{
|
||||
backgroundColor: "#b3dbff",
|
||||
borderColor: "#848484",
|
||||
borderColor: "#538fc6",
|
||||
height: this.recipe.upperplate_air_3_chart_setpointy.setpointHMI,
|
||||
width: this.recipe.upperplate_air_3_chart_setpointx.setpointHMI
|
||||
}
|
||||
|
||||
+4
@@ -36,16 +36,19 @@
|
||||
class="box-500 mb-10"
|
||||
:portata="recipe.upperplate_air_1_chart_setpointy"
|
||||
:durata="recipe.upperplate_air_1_chart_setpointx"
|
||||
id="upperplate_air_1_chart_setpointy"
|
||||
></scheda>
|
||||
<scheda
|
||||
class="box-500 mb-10 color_2"
|
||||
:portata="recipe.upperplate_air_2_chart_setpointy"
|
||||
:durata="recipe.upperplate_air_2_chart_setpointx"
|
||||
id="upperplate_air_2_chart_setpointy"
|
||||
></scheda>
|
||||
<scheda
|
||||
class="box-500 mb-10 color_3"
|
||||
:portata="recipe.upperplate_air_3_chart_setpointy"
|
||||
:durata="recipe.upperplate_air_3_chart_setpointx"
|
||||
id="upperplate_air_3_chart_setpointy"
|
||||
></scheda>
|
||||
</article>
|
||||
<article>
|
||||
@@ -54,6 +57,7 @@
|
||||
:bars="bars"
|
||||
:lines="lines"
|
||||
:unitx="'s'"
|
||||
:ids="['upperplate_air_1_chart_setpointy','upperplate_air_2_chart_setpointy','upperplate_air_3_chart_setpointy']"
|
||||
:max-y="Math.max(recipe.upperplate_air_1_chart_setpointy.range.max , recipe.upperplate_air_2_chart_setpointy.range.max ,recipe.upperplate_air_3_chart_setpointy.range.max)"
|
||||
:max-x="Math.max(recipe.upperplate_air_1_chart_setpointx.setpointHMI+ recipe.upperplate_air_2_chart_setpointx.setpointHMI+recipe.upperplate_air_3_chart_setpointx.setpointHMI, recipe.upperplate_air_max_time.setpointHMI)"
|
||||
></svg-chart>
|
||||
|
||||
+1
-1
@@ -15,7 +15,7 @@ export default class EstrazioneControstampo extends Vue {
|
||||
return [
|
||||
{
|
||||
backgroundColor: "#b3dbff",
|
||||
borderColor: "#848484",
|
||||
borderColor: "#9e9e9e",
|
||||
height: this.recipe.upperplate_extraction_1_chart_setpointy.setpointHMI,
|
||||
width: this.recipe.upperplate_extraction_1_chart_setpointx.setpointHMI
|
||||
}
|
||||
|
||||
+2
@@ -36,12 +36,14 @@
|
||||
class="box-500 color_3"
|
||||
:portata="recipe.upperplate_extraction_1_chart_setpointy"
|
||||
:durata="recipe.upperplate_extraction_1_chart_setpointx"
|
||||
id="upperplate_extraction_1_chart_setpointy"
|
||||
></scheda>
|
||||
</article>
|
||||
<article>
|
||||
<svg-chart
|
||||
line-bar-color="#848484"
|
||||
:bars="bars"
|
||||
:ids="['upperplate_extraction_1_chart_setpointy']"
|
||||
:max-y="recipe.upperplate_extraction_1_chart_setpointy.range.max"
|
||||
:max-x="recipe.upperplate_extraction_1_chart_setpointx.range.max"
|
||||
></svg-chart>
|
||||
|
||||
+4
-4
@@ -14,20 +14,20 @@ export default class VuotoControstampo extends Vue {
|
||||
get bars() {
|
||||
return [
|
||||
{
|
||||
backgroundColor: "#fff",
|
||||
borderColor: "#848484",
|
||||
backgroundColor: "#ededed",
|
||||
borderColor: "#9e9e9e",
|
||||
height: this.recipe.upperplate_vacuum_1_chart_setpointy.setpointHMI,
|
||||
width: this.recipe.upperplate_vacuum_1_chart_setpointx.setpointHMI
|
||||
},
|
||||
{
|
||||
backgroundColor: "#e5f3ff",
|
||||
borderColor: "#848484",
|
||||
borderColor: "#79a9d2",
|
||||
height: this.recipe.upperplate_vacuum_2_chart_setpointy.setpointHMI,
|
||||
width: this.recipe.upperplate_vacuum_2_chart_setpointx.setpointHMI
|
||||
},
|
||||
{
|
||||
backgroundColor: "#b3dbff",
|
||||
borderColor: "#848484",
|
||||
borderColor: "#538fc6",
|
||||
height: this.recipe.upperplate_vacuum_3_chart_setpointy.setpointHMI,
|
||||
width: this.recipe.upperplate_vacuum_3_chart_setpointx.setpointHMI
|
||||
}
|
||||
|
||||
+4
@@ -36,16 +36,19 @@
|
||||
class="box-500 mb-10"
|
||||
:portata="recipe.upperplate_vacuum_1_chart_setpointy"
|
||||
:durata="recipe.upperplate_vacuum_1_chart_setpointx"
|
||||
id="upperplate_vacuum_1_chart_setpointy"
|
||||
></scheda>
|
||||
<scheda
|
||||
class="box-500 mb-10 color_2"
|
||||
:portata="recipe.upperplate_vacuum_2_chart_setpointy"
|
||||
:durata="recipe.upperplate_vacuum_2_chart_setpointx"
|
||||
id="upperplate_vacuum_2_chart_setpointy"
|
||||
></scheda>
|
||||
<scheda
|
||||
class="box-500 mb-10 color_3"
|
||||
:portata="recipe.upperplate_vacuum_3_chart_setpointy"
|
||||
:durata="recipe.upperplate_vacuum_3_chart_setpointx"
|
||||
id="upperplate_vacuum_3_chart_setpointy"
|
||||
></scheda>
|
||||
</article>
|
||||
<article>
|
||||
@@ -53,6 +56,7 @@
|
||||
line-bar-color="#848484"
|
||||
:bars="bars"
|
||||
:lines="lines"
|
||||
:ids="['upperplate_vacuum_1_chart_setpointy','upperplate_vacuum_2_chart_setpointy','upperplate_vacuum_3_chart_setpointy']"
|
||||
:max-y="Math.max(recipe.upperplate_vacuum_1_chart_setpointy.range.max, recipe.upperplate_vacuum_2_chart_setpointy.range.max,recipe.upperplate_vacuum_3_chart_setpointy.range.max)"
|
||||
:max-x="Math.max(recipe.upperplate_vacuum_1_chart_setpointx.setpointHMI +recipe.upperplate_vacuum_2_chart_setpointx.setpointHMI +recipe.upperplate_vacuum_3_chart_setpointx.setpointHMI,recipe.upperplate_vacuum_max_time.setpointHMI)"
|
||||
></svg-chart>
|
||||
|
||||
+1
-1
@@ -23,7 +23,7 @@ export default class EstrazionePrincipale extends Vue {
|
||||
return [
|
||||
{
|
||||
backgroundColor: "#b3dbff",
|
||||
borderColor: "#848484",
|
||||
borderColor: "#538fc6",
|
||||
height: this.recipe.extraction_main_1_chart_setpointy.setpointHMI,
|
||||
width: this.recipe.extraction_main_1_chart_setpointx.setpointHMI
|
||||
}
|
||||
|
||||
+2
@@ -40,12 +40,14 @@
|
||||
class="box-500 color_3"
|
||||
:portata="recipe.extraction_main_1_chart_setpointy"
|
||||
:durata="recipe.extraction_main_1_chart_setpointx"
|
||||
id="extraction_main_1_chart_setpointy"
|
||||
></scheda>
|
||||
</article>
|
||||
<article>
|
||||
<svg-chart
|
||||
line-bar-color="#848484"
|
||||
:bars="bars"
|
||||
:ids="['extraction_main_1_chart_setpointy']"
|
||||
:max-y="recipe.extraction_main_1_chart_setpointy.range.max"
|
||||
:max-x="recipe.extraction_main_1_chart_setpointx.range.max"
|
||||
></svg-chart>
|
||||
|
||||
+1
-1
@@ -23,7 +23,7 @@ export default class EstrazioneSecondaria extends Vue {
|
||||
return [
|
||||
{
|
||||
backgroundColor: "#b3dbff",
|
||||
borderColor: "#848484",
|
||||
borderColor: "#538fc6",
|
||||
height: this.recipe.extraction_aux_1_chart_setpointy.setpointHMI,
|
||||
width: this.recipe.extraction_aux_1_chart_setpointx.setpointHMI
|
||||
}
|
||||
|
||||
+2
@@ -36,12 +36,14 @@
|
||||
class="box-500 color_3"
|
||||
:portata="recipe.extraction_aux_1_chart_setpointy"
|
||||
:durata="recipe.extraction_aux_1_chart_setpointx"
|
||||
id="extraction_aux_1_chart_setpointy"
|
||||
></scheda>
|
||||
</article>
|
||||
<article>
|
||||
<svg-chart
|
||||
line-bar-color="#848484"
|
||||
:bars="bars"
|
||||
:ids="['extraction_aux_1_chart_setpointy']"
|
||||
:max-y="recipe.extraction_aux_1_chart_setpointy.range.max"
|
||||
:max-x="recipe.extraction_aux_1_chart_setpointx.range.max"
|
||||
></svg-chart>
|
||||
|
||||
+1
-1
@@ -30,7 +30,7 @@ export default class ShowImbutituraInfo extends Vue {
|
||||
return [
|
||||
{
|
||||
backgroundColor: "#b3dbff",
|
||||
borderColor: "#848484",
|
||||
borderColor: "#538fc6",
|
||||
height: this.recipe.drawing_1_chart_setpointy.setpointHMI,
|
||||
width: this.recipe.drawing_1_chart_setpointx.setpointHMI
|
||||
}
|
||||
|
||||
@@ -71,12 +71,14 @@
|
||||
class="box-500 color_3"
|
||||
:portata="recipe.drawing_1_chart_setpointy"
|
||||
:durata="recipe.drawing_1_chart_setpointx"
|
||||
id="drawing_1_chart_setpointy"
|
||||
></scheda>
|
||||
</article>
|
||||
<article>
|
||||
<svg-chart
|
||||
line-bar-color="#848484"
|
||||
:bars="bars"
|
||||
:ids="['drawing_1_chart_setpointy']"
|
||||
:max-x="recipe.drawing_1_chart_setpointx.range.max"
|
||||
:max-y="recipe.drawing_1_chart_setpointy.range.max"
|
||||
></svg-chart>
|
||||
|
||||
+1
-2
@@ -52,8 +52,7 @@
|
||||
</template>
|
||||
<style scoped>
|
||||
.svg-area.pirometro {
|
||||
padding: 50px;
|
||||
width: calc(100% - 100px) !important;
|
||||
width: 100% !important;
|
||||
}
|
||||
</style>
|
||||
<script lang="ts" src="./SVG-termo-inferiore.ts"></script>
|
||||
+1
-2
@@ -52,8 +52,7 @@
|
||||
</template>
|
||||
<style scoped>
|
||||
.svg-area.pirometro {
|
||||
padding: 50px;
|
||||
width: calc(100% - 100px) !important;
|
||||
width: 100% !important;
|
||||
}
|
||||
</style>
|
||||
<script lang="ts" src="./SVG-termo-superiore.ts"></script>
|
||||
+34
-9
@@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<div class="chart">
|
||||
<svg :viewBox="`${-2*step} ${-step} ${scaleX(MaxX) *1.2 + step} ${scaleY(MaxY) * 1.2 + step} `">
|
||||
<svg :viewBox="`${-2*step} ${-step} ${scaleX(MaxX) *1.2 + step} ${scaleY(MaxY) * 1.2 + step +90} `">
|
||||
<g>
|
||||
<line
|
||||
:x1="0"
|
||||
@@ -30,6 +30,15 @@
|
||||
:y2="scaleY(MaxY) - scaleY(y2)"
|
||||
:stroke="lineBarColor"
|
||||
/>
|
||||
<line
|
||||
x1="-100"
|
||||
:x2="0"
|
||||
:y1="scaleY(MaxY) - scaleY(y2)"
|
||||
:y2="scaleY(MaxY) - scaleY(y2)"
|
||||
:stroke="lineBarColor"
|
||||
stroke-dasharray="4"
|
||||
/>
|
||||
|
||||
|
||||
<!-- line-v-1: prima riga verticale da sinistra -->
|
||||
<line
|
||||
@@ -44,18 +53,34 @@
|
||||
<line
|
||||
:x1="scaleX(x2)"
|
||||
:x2="scaleX(x2)"
|
||||
:y1="scaleY(MaxY) "
|
||||
:y2="scaleY(MaxY) - scaleY(y3)"
|
||||
:y1="scaleY(MaxY) - scaleY(y3)"
|
||||
:y2="scaleY(MaxY)"
|
||||
:stroke="lineBarColor"
|
||||
/>
|
||||
<line
|
||||
:x1="scaleX(x2)"
|
||||
:x2="scaleX(x2)"
|
||||
:y1="scaleY(MaxY)"
|
||||
:y2="scaleY(MaxY) + 70"
|
||||
:stroke="lineBarColor"
|
||||
stroke-dasharray="4"
|
||||
/>
|
||||
|
||||
<!-- line-v-3 -->
|
||||
<line
|
||||
:x1="scaleX(x3)"
|
||||
:x2="scaleX(x3)"
|
||||
:y1="scaleY(MaxY) "
|
||||
:y2="scaleY(MaxY) - scaleY(y2)"
|
||||
:y1="scaleY(MaxY) - scaleY(y2)"
|
||||
:y2="scaleY(MaxY)"
|
||||
:stroke="lineBarColor"
|
||||
/>
|
||||
<line
|
||||
:x1="scaleX(x3)"
|
||||
:x2="scaleX(x3)"
|
||||
:y1="scaleY(MaxY)"
|
||||
:y2="scaleY(MaxY) + 140"
|
||||
:stroke="lineBarColor"
|
||||
stroke-dasharray="4"
|
||||
/>
|
||||
|
||||
|
||||
@@ -94,7 +119,7 @@
|
||||
class="foreignControlBox"
|
||||
:width="controlWidth"
|
||||
:height="controlHeight"
|
||||
:x="-step"
|
||||
:x="-step -100"
|
||||
:y="scaleY(MaxY) - scaleY(y2) - controlHeight/2"
|
||||
>
|
||||
<slot name="y2" />
|
||||
@@ -113,7 +138,7 @@
|
||||
class="foreignControlBox"
|
||||
:width="controlWidth"
|
||||
:height="controlHeight"
|
||||
:y="scaleY(MaxY) "
|
||||
:y="scaleY(MaxY) +70 "
|
||||
:x="scaleX(x2) - controlWidth/2"
|
||||
>
|
||||
<slot name="x2" />
|
||||
@@ -122,7 +147,7 @@
|
||||
class="foreignControlBox"
|
||||
:width="controlWidth"
|
||||
:height="controlHeight"
|
||||
:y="scaleY(MaxY) "
|
||||
:y="scaleY(MaxY) + 140 "
|
||||
:x="scaleX(x3) - controlWidth/2"
|
||||
>
|
||||
<slot name="x3" />
|
||||
@@ -131,7 +156,7 @@
|
||||
class="foreignControlBox"
|
||||
:width="controlWidth"
|
||||
:height="controlHeight"
|
||||
:y="scaleY(MaxY) "
|
||||
:y="scaleY(MaxY)"
|
||||
:x="scaleX(x4) - controlWidth/2"
|
||||
>
|
||||
<slot name="x4" />
|
||||
|
||||
+4
@@ -122,4 +122,8 @@ export default class Resistance extends Vue {
|
||||
}
|
||||
|
||||
|
||||
get Watt() {
|
||||
return (this.channel.maxPower * this.channel.setpointHMI) / 100;
|
||||
}
|
||||
|
||||
}
|
||||
+1
-1
@@ -24,7 +24,7 @@
|
||||
@click="click"
|
||||
v-on:touchend="click"
|
||||
:style="{backgroundColor:`rgba(${currentColor})`}"
|
||||
>{{channel.actualCurrent}} W</div>
|
||||
>{{Watt}} W</div>
|
||||
<div
|
||||
class="resistance id"
|
||||
:class="{'disabled':!editable}"
|
||||
|
||||
+21
-1
@@ -2,6 +2,25 @@
|
||||
width: 990px;
|
||||
height: 835px;
|
||||
}
|
||||
.modal.prophetimages .measure {
|
||||
position: absolute;
|
||||
background-image: url(/assets//icons/png/termo-inspection.png);
|
||||
width: 72px;
|
||||
height: 56px;
|
||||
background-size: cover;
|
||||
transform: translateX(-36px) translateY(-12px);
|
||||
}
|
||||
.modal.prophetimages .measure > span {
|
||||
font-size: 18px;
|
||||
font-weight: bold;
|
||||
color: #002680;
|
||||
position: absolute;
|
||||
height: 21px;
|
||||
bottom: 3px;
|
||||
left: 6px;
|
||||
right: 6px;
|
||||
text-align: right;
|
||||
}
|
||||
.modal.prophetimages header {
|
||||
padding: 0 16px;
|
||||
display: flex;
|
||||
@@ -26,7 +45,7 @@
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
.modal.prophetimages section .imagecontainer span {
|
||||
.modal.prophetimages section .imagecontainer > span {
|
||||
position: absolute;
|
||||
bottom: -20px;
|
||||
width: 400px;
|
||||
@@ -73,6 +92,7 @@
|
||||
height: 140px;
|
||||
transform: translateX(-100px);
|
||||
bottom: 70px;
|
||||
box-shadow: 0 2px 8px 0 rga(0, 0, 0, 0.5);
|
||||
}
|
||||
.modal.prophetimages section .color-bar {
|
||||
display: grid;
|
||||
|
||||
+22
-1
@@ -1,4 +1,24 @@
|
||||
.modal.prophetimages {
|
||||
.measure {
|
||||
position: absolute;
|
||||
background-image: url(/assets//icons/png/termo-inspection.png);
|
||||
width: 72px;
|
||||
height: 56px;
|
||||
background-size: cover;
|
||||
transform: translateX(-36px) translateY(-12px);
|
||||
> span {
|
||||
font-size: 18px;
|
||||
font-weight: bold;
|
||||
color: #002680;
|
||||
position: absolute;
|
||||
height: 21px;
|
||||
bottom: 3px;
|
||||
left: 6px;
|
||||
right: 6px;
|
||||
text-align: right;
|
||||
}
|
||||
}
|
||||
|
||||
header {
|
||||
padding: 0 16px;
|
||||
display: flex;
|
||||
@@ -24,7 +44,7 @@
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
span {
|
||||
> span {
|
||||
position: absolute;
|
||||
bottom: -20px;
|
||||
width: 400px;
|
||||
@@ -76,6 +96,7 @@
|
||||
height: 140px;
|
||||
transform: translateX(-100px);
|
||||
bottom: 70px;
|
||||
box-shadow: 0 2px 8px 0 rga(0, 0, 0, 0.5);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+54
-120
@@ -1,138 +1,72 @@
|
||||
import Component from "vue-class-component";
|
||||
import Vue from "vue";
|
||||
import { ModalHelper, Modal } from "@/components/modals";
|
||||
import { Prop, Watch } from "vue-property-decorator";
|
||||
import { warmersService } from "@/services/warmersService";
|
||||
import { prodService } from "@/services/prodService";
|
||||
import { AppModel } from "@/store";
|
||||
import { debounce } from "@/_base/debounce";
|
||||
|
||||
@Component({
|
||||
components: { modal: Modal },
|
||||
})
|
||||
export default class ThermoModal extends Vue {
|
||||
|
||||
|
||||
TCamData: {
|
||||
imageSize: { x: number, y: number },
|
||||
rangeTemperature: { max: number, min: number },
|
||||
} = {
|
||||
imageSize: { x: 1024, y: 768 },
|
||||
rangeTemperature: { max: 100, min: 0 }
|
||||
}
|
||||
get tstep() {
|
||||
return (this.TCamData.rangeTemperature.max - this.TCamData.rangeTemperature.min) / 6;
|
||||
}
|
||||
|
||||
measurePoints: {
|
||||
x: number, y: number, temperature: number
|
||||
}[] = [];
|
||||
|
||||
showPreview = 0;
|
||||
selectedImage: number = 0;
|
||||
serverPath = "/thermoprophet/colored";
|
||||
images = ['20201104-163047.jpg',
|
||||
'20201104-163309.jpg',
|
||||
'20201104-163547.jpg',
|
||||
'20201104-163826.jpg',
|
||||
'20201104-164544.jpg',
|
||||
'20201104-164850.jpg',
|
||||
'20201104-165142.jpg',
|
||||
'20201104-165418.jpg',
|
||||
'20201104-165658.jpg',
|
||||
'20201104-170154.jpg',
|
||||
'20201104-170504.jpg',
|
||||
'20201104-170741.jpg',
|
||||
'20201104-171015.jpg',
|
||||
'20201104-171256.jpg',
|
||||
'20201110-141036.jpg',
|
||||
'20201110-141318.jpg',
|
||||
'20201110-141600.jpg',
|
||||
'20201110-141842.jpg',
|
||||
'20201110-142125.jpg',
|
||||
'20201110-142333.jpg',
|
||||
'20201110-142610.jpg',
|
||||
'20201110-142852.jpg',
|
||||
'20201110-143132.jpg',
|
||||
'20201110-143434.jpg',
|
||||
'20201110-155540.jpg',
|
||||
'20201112-161151.jpg',
|
||||
'20201112-161427.jpg',
|
||||
'20201112-161701.jpg',
|
||||
'20201112-161935.jpg',
|
||||
'20201112-162221.jpg',
|
||||
'20201112-163046.jpg',
|
||||
'20201112-163107.jpg',
|
||||
'20201112-163134.jpg',
|
||||
'20201112-163141.jpg',
|
||||
'20201112-163152.jpg',
|
||||
'20201112-163235.jpg',
|
||||
'20201112-163249.jpg',
|
||||
'20201112-163313.jpg',
|
||||
'20201112-163355.jpg',
|
||||
'20201112-163435.jpg',
|
||||
'20201112-163946.jpg',
|
||||
'20201112-165438.jpg',
|
||||
'20201112-165908.jpg',
|
||||
'20201112-165931.jpg',
|
||||
'20201112-165952.jpg',
|
||||
'20201112-170518.jpg',
|
||||
'20201112-170531.jpg',
|
||||
'20201112-170604.jpg',
|
||||
'20201112-170654.jpg',
|
||||
'20201112-171322.jpg',
|
||||
'20201112-171842.jpg',
|
||||
'20201112-171946.jpg',
|
||||
'20201112-172249.jpg',
|
||||
'20201112-172440.jpg',
|
||||
'20201112-172636.jpg',
|
||||
'20201112-172834.jpg',
|
||||
'20201112-173642.jpg',
|
||||
'20201112-174108.jpg',
|
||||
'20201112-174216.jpg',
|
||||
'20201112-175159.jpg',
|
||||
'20201113-141151.jpg',
|
||||
'20201113-145345.jpg',
|
||||
'20201113-145524.jpg',
|
||||
'20201113-145707.jpg',
|
||||
'20201113-145915.jpg',
|
||||
'20201113-150118.jpg',
|
||||
'20201113-150321.jpg',
|
||||
'20201113-150527.jpg',
|
||||
'20201113-150740.jpg',
|
||||
'20201113-150959.jpg',
|
||||
'20201113-153100.jpg',
|
||||
'20201113-153143.jpg',
|
||||
'20201113-153302.jpg',
|
||||
'20201113-162158.jpg',
|
||||
'20201113-162335.jpg',
|
||||
'20201116-091043.jpg',
|
||||
'20201116-091230.jpg',
|
||||
'20201116-091419.jpg',
|
||||
'20201116-091615.jpg',
|
||||
'20201116-091828.jpg',
|
||||
'20201116-092041.jpg',
|
||||
'20201116-092301.jpg',
|
||||
'20201116-092528.jpg',
|
||||
'20201116-092802.jpg',
|
||||
'20201116-093040.jpg',
|
||||
'20201116-093327.jpg',
|
||||
'20201116-093616.jpg',
|
||||
'20201116-093914.jpg',
|
||||
'20201116-100141.jpg',
|
||||
'20201116-100404.jpg',
|
||||
'20201116-100632.jpg',
|
||||
'20201116-100858.jpg',
|
||||
'20201116-101125.jpg',
|
||||
'20201116-101403.jpg',
|
||||
'20201116-101629.jpg',
|
||||
'20201116-101858.jpg',
|
||||
'20201116-102128.jpg',
|
||||
'20201116-102356.jpg',
|
||||
'20201116-102623.jpg',
|
||||
'20201116-102847.jpg',
|
||||
'20201116-103108.jpg',
|
||||
'20201116-103332.jpg',
|
||||
'20201116-103557.jpg',
|
||||
'20201116-103819.jpg',
|
||||
'20201116-104042.jpg',
|
||||
'20201116-104305.jpg',
|
||||
'20201116-104529.jpg',
|
||||
'20201116-104756.jpg',
|
||||
'20201116-105023.jpg',
|
||||
'20201116-105251.jpg',
|
||||
'20201116-105520.jpg',
|
||||
'20201116-105751.jpg',
|
||||
'20201116-110020.jpg',
|
||||
'20201116-110349.jpg',
|
||||
'20201116-110618.jpg'];
|
||||
items: Prod.IProd[] = [];
|
||||
get images() {
|
||||
return this.items.map(i => i.thermoImage)
|
||||
}
|
||||
|
||||
close() {
|
||||
ModalHelper.HideModal();
|
||||
ModalHelper.HideModal("modal2");
|
||||
}
|
||||
|
||||
mounted() {
|
||||
for (const iterator of this.images) {
|
||||
|
||||
}
|
||||
get lastItem() {
|
||||
return (this.$store.state as AppModel).prod.prod;
|
||||
}
|
||||
|
||||
async mounted() {
|
||||
this.TCamData = await warmersService.GetTCamData();
|
||||
await warmersService.ResetMeasurePoints();
|
||||
|
||||
let min = Math.min(this.lastItem.numDone);
|
||||
this.items.push(...await prodService.History(min - 1, min - 1))
|
||||
}
|
||||
|
||||
async imageclick(evt: MouseEvent) {
|
||||
|
||||
let t = evt.target as HTMLImageElement;
|
||||
let x = (evt.offsetX / t.clientWidth) * t.naturalWidth;
|
||||
let y = (evt.offsetY / t.clientHeight) * t.naturalHeight;
|
||||
|
||||
await warmersService.SetMeasurePoints(x, y);
|
||||
this.measurePoints.push({ x, y, temperature: 0 })
|
||||
this.reloadMeasuresDelayed();
|
||||
}
|
||||
|
||||
@Watch("selectedImage")
|
||||
reloadMeasuresDelayed = debounce(async () => this.measurePoints = await warmersService.GetMeasurePoints(this.images[this.selectedImage]), 500);
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
+22
-13
@@ -4,33 +4,42 @@
|
||||
<i class="fa fa-remove"></i>
|
||||
</button>
|
||||
<div class="imagecontainer">
|
||||
<img :src="`${serverPath}/${images[parseInt(selectedImage)]}`" />
|
||||
<img
|
||||
:src="`${serverPath}/${images[parseInt(selectedImage)]}.jpg`"
|
||||
@click="imageclick"
|
||||
v-if="images.length"
|
||||
ref="mainimage"
|
||||
/>
|
||||
<span>{{'thermo-long-tap-info' | localize("Long tap on image to add temperature inspectors")}}</span>
|
||||
|
||||
<div
|
||||
class="measure"
|
||||
:style="`left:${m.x / $refs.mainimage.naturalWidth * $refs.mainimage.clientWidth }px; top:${m.y/ $refs.mainimage.naturalHeight * $refs.mainimage.clientHeight}px`"
|
||||
v-for="(m,idx) in measurePoints"
|
||||
:key="idx"
|
||||
>
|
||||
<span>{{m.temperature}} °C</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="color-bar">
|
||||
<div class="color-line"></div>
|
||||
<div class="legend">
|
||||
<span>300° C</span>
|
||||
<span>270° C</span>
|
||||
<span>240° C</span>
|
||||
<span>210° C</span>
|
||||
<span>180° C</span>
|
||||
<span>150° C</span>
|
||||
<span>120° C</span>
|
||||
<span v-for="c in 7" :key="c">{{Math.round(TCamData.rangeTemperature.max - tstep*(c-1))}}° C</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="image-selector">
|
||||
<div class="timeseries">
|
||||
<time>{{'first-image' | localize("First image")}}</time>
|
||||
<time>{{'last-image' | localize("Last image")}}</time>
|
||||
<!-- <time>{{'first-image' | localize("First image")}}</time>
|
||||
<time>{{'last-image' | localize("Last image")}}</time>-->
|
||||
</div>
|
||||
<img
|
||||
:src="`${serverPath}/${images[parseInt(selectedImage)]}`"
|
||||
:src="`${serverPath}/${images[parseInt(selectedImage)]}.jpg`"
|
||||
v-if="showPreview"
|
||||
class="selector"
|
||||
:style="`left:${(parseInt(selectedImage) / images.length) * 858}px`"
|
||||
:style="`left:${(parseInt(selectedImage) / (images.length-1)) * 858}px`"
|
||||
/>
|
||||
<input
|
||||
v-if="images.length"
|
||||
type="range"
|
||||
:min="0"
|
||||
:max="images.length-1"
|
||||
@@ -41,7 +50,7 @@
|
||||
<div class="selectorarea">
|
||||
<span
|
||||
class="selector"
|
||||
:style="`left:${(parseInt(selectedImage) / images.length) * 858}px`"
|
||||
:style="`left:${(parseInt(selectedImage) / (images.length-1)) * 858}px`"
|
||||
>{{'thermo-cycle' | localize("Cycle")}} {{selectedImage}}</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
+7
-1
@@ -29,6 +29,11 @@ export default class Thermocamera extends Vue {
|
||||
thermoImageOpacity: number = 0;
|
||||
resistanceMode = 0;
|
||||
|
||||
TCamData: {
|
||||
imageSize: { x: number, y: number },
|
||||
rangeTemperature: { max: number, min: number },
|
||||
} = null;
|
||||
|
||||
@Watch("warmers", { deep: true })
|
||||
async ChangedTemps() {
|
||||
|
||||
@@ -47,6 +52,7 @@ export default class Thermocamera extends Vue {
|
||||
}
|
||||
async mounted() {
|
||||
this.ChangedTemps();
|
||||
this.TCamData = await warmersService.GetTCamData();
|
||||
}
|
||||
|
||||
get selectedChannels(): Warmers.IChannel[] {
|
||||
@@ -169,6 +175,6 @@ export default class Thermocamera extends Vue {
|
||||
}
|
||||
|
||||
async openThermoModal() {
|
||||
ModalHelper.ShowModal(termoModal);
|
||||
ModalHelper.ShowModal(termoModal, "modal2");
|
||||
}
|
||||
}
|
||||
+4
-4
@@ -14,20 +14,20 @@ export default class Prevuoto extends Vue {
|
||||
get bars() {
|
||||
return [
|
||||
{
|
||||
backgroundColor: "#fff",
|
||||
borderColor: "#848484",
|
||||
backgroundColor: "#ededed",
|
||||
borderColor: "#9e9e9e",
|
||||
height: this.recipe.vacuum_pre_1_chart_setpointy.setpointHMI,
|
||||
width: this.recipe.vacuum_pre_1_chart_setpointx.setpointHMI
|
||||
},
|
||||
{
|
||||
backgroundColor: "#e5f3ff",
|
||||
borderColor: "#848484",
|
||||
borderColor: "#79a9d2",
|
||||
height: this.recipe.vacuum_pre_2_chart_setpointy.setpointHMI,
|
||||
width: this.recipe.vacuum_pre_2_chart_setpointx.setpointHMI
|
||||
},
|
||||
{
|
||||
backgroundColor: "#b3dbff",
|
||||
borderColor: "#848484",
|
||||
borderColor: "#538fc6",
|
||||
height: this.recipe.vacuum_pre_3_chart_setpointy.setpointHMI,
|
||||
width: this.recipe.vacuum_pre_3_chart_setpointx.setpointHMI
|
||||
}
|
||||
|
||||
@@ -28,16 +28,19 @@
|
||||
<article class="shrink ml-10">
|
||||
<scheda
|
||||
class="box-500 mb-10"
|
||||
id="vacuum_pre_1_chart_setpointy"
|
||||
:portata="recipe.vacuum_pre_1_chart_setpointy"
|
||||
:durata="recipe.vacuum_pre_1_chart_setpointx"
|
||||
></scheda>
|
||||
<scheda
|
||||
class="box-500 mb-10 color_2"
|
||||
id="vacuum_pre_2_chart_setpointy"
|
||||
:portata="recipe.vacuum_pre_2_chart_setpointy"
|
||||
:durata="recipe.vacuum_pre_2_chart_setpointx"
|
||||
></scheda>
|
||||
<scheda
|
||||
class="box-500 mb-10 color_3"
|
||||
id="vacuum_pre_3_chart_setpointy"
|
||||
:portata="recipe.vacuum_pre_3_chart_setpointy"
|
||||
:durata="recipe.vacuum_pre_3_chart_setpointx"
|
||||
></scheda>
|
||||
@@ -47,6 +50,7 @@
|
||||
line-bar-color="#848484"
|
||||
:bars="bars"
|
||||
:lines="lines"
|
||||
:ids="['vacuum_pre_1_chart_setpointy','vacuum_pre_2_chart_setpointy','vacuum_pre_3_chart_setpointy']"
|
||||
:max-y="Math.max(recipe.vacuum_pre_1_chart_setpointy.range.max , recipe.vacuum_pre_2_chart_setpointy.range.max ,recipe.vacuum_pre_3_chart_setpointy.range.max)"
|
||||
:max-x="Math.max(recipe.vacuum_pre_1_chart_setpointx.setpointHMI +recipe.vacuum_pre_2_chart_setpointx.setpointHMI+recipe.vacuum_pre_3_chart_setpointx.setpointHMI,recipe.vacuum_pre_max_time.setpointHMI)"
|
||||
></svg-chart>
|
||||
|
||||
+4
-4
@@ -14,20 +14,20 @@ export default class VuotoAusiliario extends Vue {
|
||||
get bars() {
|
||||
return [
|
||||
{
|
||||
backgroundColor: "#fff",
|
||||
borderColor: "#848484",
|
||||
backgroundColor: "#ededed",
|
||||
borderColor: "#9e9e9e",
|
||||
height: this.recipe.vacuum_aux_1_chart_setpointy.setpointHMI,
|
||||
width: this.recipe.vacuum_aux_1_chart_setpointx.setpointHMI
|
||||
},
|
||||
{
|
||||
backgroundColor: "#e5f3ff",
|
||||
borderColor: "#848484",
|
||||
borderColor: "#79a9d2",
|
||||
height: this.recipe.vacuum_aux_2_chart_setpointy.setpointHMI,
|
||||
width: this.recipe.vacuum_aux_2_chart_setpointx.setpointHMI
|
||||
},
|
||||
{
|
||||
backgroundColor: "#b3dbff",
|
||||
borderColor: "#848484",
|
||||
borderColor: "#538fc6",
|
||||
height: this.recipe.vacuum_aux_3_chart_setpointy.setpointHMI,
|
||||
width: this.recipe.vacuum_aux_3_chart_setpointx.setpointHMI
|
||||
}
|
||||
|
||||
+4
@@ -36,16 +36,19 @@
|
||||
<article class="shrink ml-10">
|
||||
<scheda
|
||||
class="box-500 mb-10"
|
||||
id="vacuum_aux_1_chart_setpointy"
|
||||
:portata="recipe.vacuum_aux_1_chart_setpointy"
|
||||
:durata="recipe.vacuum_aux_1_chart_setpointx"
|
||||
></scheda>
|
||||
<scheda
|
||||
class="box-500 mb-10 color_2"
|
||||
id="vacuum_aux_2_chart_setpointy"
|
||||
:portata="recipe.vacuum_aux_2_chart_setpointy"
|
||||
:durata="recipe.vacuum_aux_2_chart_setpointx"
|
||||
></scheda>
|
||||
<scheda
|
||||
class="box-500 mb-10 color_3"
|
||||
id="vacuum_aux_3_chart_setpointy"
|
||||
:portata="recipe.vacuum_aux_3_chart_setpointy"
|
||||
:durata="recipe.vacuum_aux_3_chart_setpointx"
|
||||
></scheda>
|
||||
@@ -55,6 +58,7 @@
|
||||
line-bar-color="#848484"
|
||||
:bars="bars"
|
||||
:lines="lines"
|
||||
:ids="['vacuum_aux_1_chart_setpointy','vacuum_aux_2_chart_setpointy','vacuum_aux_3_chart_setpointy']"
|
||||
:max-y="Math.max(recipe.vacuum_aux_1_chart_setpointy.range.max , recipe.vacuum_aux_2_chart_setpointy.range.max ,recipe.vacuum_aux_3_chart_setpointy.range.max)"
|
||||
:max-x="Math.max(recipe.vacuum_aux_1_chart_setpointx.setpointHMI+recipe.vacuum_aux_2_chart_setpointx.setpointHMI+recipe.vacuum_aux_3_chart_setpointx.setpointHMI, recipe.vacuum_aux_max_time.setpointHMI)"
|
||||
></svg-chart>
|
||||
|
||||
+4
-4
@@ -163,20 +163,20 @@ export default class VuotoPrincipale extends Vue {
|
||||
get bars() {
|
||||
return [
|
||||
{
|
||||
backgroundColor: "#fff",
|
||||
borderColor: "#848484",
|
||||
backgroundColor: "#ededed",
|
||||
borderColor: "#9e9e9e",
|
||||
height: this.recipe.vacuum_main_1_chart_setpointy.setpointHMI,
|
||||
width: this.recipe.vacuum_main_1_chart_setpointx.setpointHMI
|
||||
},
|
||||
{
|
||||
backgroundColor: "#e5f3ff",
|
||||
borderColor: "#848484",
|
||||
borderColor: "#79a9d2",
|
||||
height: this.recipe.vacuum_main_2_chart_setpointy.setpointHMI,
|
||||
width: this.recipe.vacuum_main_2_chart_setpointx.setpointHMI
|
||||
},
|
||||
{
|
||||
backgroundColor: "#b3dbff",
|
||||
borderColor: "#848484",
|
||||
borderColor: "#538fc6",
|
||||
height: this.recipe.vacuum_main_3_chart_setpointy.setpointHMI,
|
||||
width: this.recipe.vacuum_main_3_chart_setpointx.setpointHMI
|
||||
}
|
||||
|
||||
+4
@@ -33,16 +33,19 @@
|
||||
<article class="shrink ml-10">
|
||||
<scheda
|
||||
class="box-500 mb-10"
|
||||
id="vacuum_main_1_chart_setpointy"
|
||||
:portata="recipe.vacuum_main_1_chart_setpointy"
|
||||
:durata="recipe.vacuum_main_1_chart_setpointx"
|
||||
></scheda>
|
||||
<scheda
|
||||
class="box-500 mb-10 color_2"
|
||||
id="vacuum_main_2_chart_setpointy"
|
||||
:portata="recipe.vacuum_main_2_chart_setpointy"
|
||||
:durata="recipe.vacuum_main_2_chart_setpointx"
|
||||
></scheda>
|
||||
<scheda
|
||||
class="box-500 mb-10 color_3"
|
||||
id="vacuum_main_3_chart_setpointy"
|
||||
:portata="recipe.vacuum_main_3_chart_setpointy"
|
||||
:durata="recipe.vacuum_main_3_chart_setpointx"
|
||||
></scheda>
|
||||
@@ -52,6 +55,7 @@
|
||||
line-bar-color="#848484"
|
||||
:bars="bars"
|
||||
:lines="lines"
|
||||
:ids="['vacuum_main_1_chart_setpointy','vacuum_main_2_chart_setpointy','vacuum_main_3_chart_setpointy']"
|
||||
:max-y="Math.max(recipe.vacuum_main_1_chart_setpointy.range.max , recipe.vacuum_main_2_chart_setpointy.range.max ,recipe.vacuum_main_3_chart_setpointy.range.max)"
|
||||
:max-x="Math.max(recipe.vacuum_main_1_chart_setpointx.setpointHMI+recipe.vacuum_main_2_chart_setpointx.setpointHMI+recipe.vacuum_main_3_chart_setpointx.setpointHMI,recipe.vacuum_main_max_time.setpointHMI)"
|
||||
></svg-chart>
|
||||
|
||||
+13
@@ -41,4 +41,17 @@ export default class IO extends Vue {
|
||||
|
||||
}
|
||||
|
||||
isConfigVisible(group,bankid){
|
||||
var vis = false;
|
||||
var it = this.items[group].filter(i => i.bank == bankid);
|
||||
|
||||
for (let index = 0; index < it.length; index++) {
|
||||
if(it[index].visible){
|
||||
vis = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return vis
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+16
-12
@@ -5,12 +5,14 @@
|
||||
<div class="row-list">
|
||||
<a @click="scrollto(true,`input-pinned`)">Pinned</a>
|
||||
<template v-for="(group, idx) in ['di','ai']">
|
||||
<a
|
||||
@click="scrollto(true,`input-${group}-${inputid}`)"
|
||||
class="upper"
|
||||
v-for="(inputid, idx2) in config[group]"
|
||||
:key="`h-${idx}-${idx2}`"
|
||||
>{{`${group} ${inputid}`}}</a>
|
||||
<template v-for="(inputid, idx2) in config[group]">
|
||||
<a
|
||||
@click="scrollto(true,`input-${group}-${inputid}`)"
|
||||
class="upper"
|
||||
v-if="isConfigVisible(group,inputid)"
|
||||
:key="`h-${idx}-${idx2}`"
|
||||
>{{`${group} ${inputid}`}}</a>
|
||||
</template>
|
||||
</template>
|
||||
</div>
|
||||
<InputTable></InputTable>
|
||||
@@ -20,12 +22,14 @@
|
||||
<div class="row-list">
|
||||
<a @click="scrollto(false,`output-pinned`)">Pinned</a>
|
||||
<template v-for="(group, idx) in ['do','ao']">
|
||||
<a
|
||||
@click="scrollto(false,`output-${group}-${inputid}`)"
|
||||
class="upper"
|
||||
v-for="(inputid, idx2) in config[group]"
|
||||
:key="`h-${idx}-${idx2}`"
|
||||
>{{`${group} ${inputid}`}}</a>
|
||||
<template v-for="(inputid, idx2) in config[group]">
|
||||
<a
|
||||
@click="scrollto(false,`output-${group}-${inputid}`)"
|
||||
class="upper"
|
||||
v-if="isConfigVisible(group,inputid)"
|
||||
:key="`h-${idx}-${idx2}`"
|
||||
>{{`${group} ${inputid}`}}</a>
|
||||
</template>
|
||||
</template>
|
||||
</div>
|
||||
<OutputTable></OutputTable>
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<tr>
|
||||
<tr v-if="item.visible">
|
||||
<td class="pointer">
|
||||
<button class="pointer" @click="$emit('click')">
|
||||
<img
|
||||
|
||||
+14
@@ -32,4 +32,18 @@ export default class InputTable extends Vue {
|
||||
get config(): { [id: string]: number[] } {
|
||||
return store.state.underTheHood.ioChannelsConfig;
|
||||
}
|
||||
|
||||
isConfigVisible(group,bankid){
|
||||
var vis = false;
|
||||
var it = this.items[group].filter(i => i.bank == bankid);
|
||||
|
||||
for (let index = 0; index < it.length; index++) {
|
||||
if(it[index].visible){
|
||||
vis = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return vis
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+1
-1
@@ -29,7 +29,7 @@
|
||||
|
||||
<template v-for="(group, idx) in ['di','ai']">
|
||||
<template v-for="(bankid, idx2) in config[group]">
|
||||
<tr class="group-row" :key="`h-${idx}-${idx2}`" :id="`input-${group}-${bankid}`" >
|
||||
<tr class="group-row" :key="`h-${idx}-${idx2}`" :id="`input-${group}-${bankid}`" v-if="isConfigVisible(group,bankid)" >
|
||||
<td colspan="6">{{ `${group} ${bankid}`}}</td>
|
||||
</tr>
|
||||
<input-row
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<tr>
|
||||
<tr v-if="item.visible">
|
||||
<td class="pointer">
|
||||
<button class="pointer" @click="$emit('click')">
|
||||
<img
|
||||
|
||||
+13
@@ -31,4 +31,17 @@ export default class OutputTable extends Vue {
|
||||
get config(): { [id: string]: number[] } {
|
||||
return store.state.underTheHood.ioChannelsConfig;
|
||||
}
|
||||
|
||||
isConfigVisible(group,bankid){
|
||||
var vis = false;
|
||||
var it = this.items[group].filter(i => i.bank == bankid);
|
||||
|
||||
for (let index = 0; index < it.length; index++) {
|
||||
if(it[index].visible){
|
||||
vis = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return vis
|
||||
}
|
||||
}
|
||||
|
||||
+2
-2
@@ -29,9 +29,9 @@
|
||||
</template>
|
||||
|
||||
<template v-for="(group, idx) in ['do','ao']">
|
||||
<template v-for="(bankid, idx2) in config[group]">
|
||||
<template v-for="(bankid, idx2) in config[group]" >
|
||||
<tr class="group-row" :key="`h-${idx}-${idx2}`"
|
||||
:id="`output-${group}-${bankid}`">
|
||||
:id="`output-${group}-${bankid}`" v-if="isConfigVisible(group,bankid)">
|
||||
<td colspan="7">{{ `${group} ${bankid}`}}</td>
|
||||
</tr>
|
||||
<output-row
|
||||
|
||||
@@ -1,45 +0,0 @@
|
||||
|
||||
import { store, machineStatusActions } from "@/store";
|
||||
|
||||
import { machineService } from "@/services/machineService";
|
||||
import { loginService } from "@/services/loginService";
|
||||
import Vue from "vue";
|
||||
import Component from "vue-class-component";
|
||||
|
||||
@Component({})
|
||||
export default class Home extends Vue{
|
||||
|
||||
|
||||
URLS_TO_FUNCTIONS_BINDING : {
|
||||
"/production": "production",
|
||||
"/tooling": "tooling",
|
||||
"/report": "report",
|
||||
"/alarms": "alarms",
|
||||
"/maintenance": "maintenance",
|
||||
"/scada": "scada",
|
||||
"/users": "users",
|
||||
"/jobeditor": "job-editor",
|
||||
"/utilities": "utilities"
|
||||
};
|
||||
|
||||
|
||||
mounted(){
|
||||
let machine = new machineService();
|
||||
|
||||
loginService.getAuthorizationFunction()
|
||||
.then(() => {
|
||||
// If not authorized redirect to the first available page
|
||||
if(!machineStatusActions.userCanAccessToArea(store, this.URLS_TO_FUNCTIONS_BINDING["/production"])) {
|
||||
for(var k in this.URLS_TO_FUNCTIONS_BINDING) {
|
||||
if(machineStatusActions.userCanAccessToArea(store, this.URLS_TO_FUNCTIONS_BINDING[k])) {
|
||||
this.$router.push(this.URLS_TO_FUNCTIONS_BINDING[k])
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
this.$router.push("production")
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
@@ -1,4 +1,46 @@
|
||||
<template>
|
||||
</template>
|
||||
|
||||
<script src="./Home.ts" lang="ts" />
|
||||
<script>
|
||||
|
||||
import { store, machineStatusActions } from "src/store";
|
||||
|
||||
import { machineService } from "src/services/machineService";
|
||||
import { loginService } from "src/services/loginService";
|
||||
|
||||
export default {
|
||||
components: { },
|
||||
data() {
|
||||
return {
|
||||
URLS_TO_FUNCTIONS_BINDING : {
|
||||
"/production": "production",
|
||||
"/modal-load-program": "modal-load-program",
|
||||
"/setup": "setup",
|
||||
"/alarms": "alarms",
|
||||
"/maintenance": "maintenance",
|
||||
"/progrprerisc": "progrprerisc",
|
||||
"/users": "users",
|
||||
}
|
||||
};
|
||||
},
|
||||
mounted: function(){
|
||||
let machine = new machineService();
|
||||
|
||||
loginService.getAuthorizationFunction()
|
||||
.then(() => {
|
||||
// If not authorized redirect to the first available page
|
||||
if(!machineStatusActions.userCanAccessToArea(store, this.URLS_TO_FUNCTIONS_BINDING["/production"])) {
|
||||
for(var k in this.URLS_TO_FUNCTIONS_BINDING) {
|
||||
if(machineStatusActions.userCanAccessToArea(store, this.URLS_TO_FUNCTIONS_BINDING[k])) {
|
||||
this.$router.push(this.URLS_TO_FUNCTIONS_BINDING[k])
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
this.$router.push("production")
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
</script>
|
||||
@@ -5,7 +5,7 @@
|
||||
@click="openProgram('/modal-load-program')"
|
||||
:title="'footer_tooltip_ricetta' | localize('Apertura Ricetta')"
|
||||
:disabled="false"
|
||||
v-if="true"
|
||||
v-if="isAreaVisible('modal-load-program')"
|
||||
class="oval ricetta"
|
||||
:class="{ big:isInPath('modal-load-program') && !state.isMainViewLiftedUp}"
|
||||
></button>
|
||||
@@ -14,7 +14,7 @@
|
||||
@click="openProgram('/setup')"
|
||||
:title="'footer_tooltip_setup' | localize('Setup')"
|
||||
:disabled="false"
|
||||
v-if="true"
|
||||
v-if="isAreaVisible('setup')"
|
||||
class="oval jobeditor"
|
||||
:class="{ big:isInPath('setup') && !state.isMainViewLiftedUp}"
|
||||
></button>
|
||||
@@ -23,7 +23,7 @@
|
||||
@click="openProgram('/production')"
|
||||
:title="'footer_tooltip_production' | localize('Production')"
|
||||
:disabled="false"
|
||||
v-if="true"
|
||||
v-if="isAreaVisible('production')"
|
||||
class="oval main-production"
|
||||
:class="{ big:(isInPath('production') || isInMainPage()) && !state.isMainViewLiftedUp}"
|
||||
></button>
|
||||
@@ -42,7 +42,7 @@
|
||||
@click="openProgram('/progrprerisc')"
|
||||
:title="'footer_tooltip_progr_prerisc' | localize('Programmazione Preriscaldo')"
|
||||
:disabled="false"
|
||||
v-if="true"
|
||||
v-if="isAreaVisible('progrprerisc')"
|
||||
class="oval progrprerisc"
|
||||
:class="{ big:isInPath('progrprerisc') && !state.isMainViewLiftedUp}"
|
||||
></button>
|
||||
@@ -119,22 +119,5 @@
|
||||
><img src="assets/icons/png/auto.png" />{{'run_auto' | localize("Auto")}}</button>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
<!--
|
||||
<div class="machine-area">
|
||||
<button
|
||||
class="under"
|
||||
@mouseup="toggleMainView()"
|
||||
:class="{'pressed':state.isMainViewLiftedUp}"
|
||||
:title="'footer_tooltip_under_hood' | localize('Open/Close Under-the-hood area')"
|
||||
>
|
||||
<img src="assets/icons/png/siemens-logo.png" v-if="isSiemens()" />
|
||||
<img src="assets/icons/png/fanuc-logo.png" v-if="isFanuc()" />
|
||||
<img src="assets/icons/png/osai-logo.png" v-if="isOsai()" />
|
||||
<span v-if="isDemo()" class="btn-demo">DEMO</span>
|
||||
</button>
|
||||
</div>
|
||||
</footer>
|
||||
-->
|
||||
</template>
|
||||
<script lang="ts" src="./app-footer.ts"></script>
|
||||
|
||||
@@ -3,6 +3,7 @@ import { CONFIGURATION } from "@/config";
|
||||
import { warmersActions } from "@/store/warmers.store";
|
||||
import { store } from "@/store";
|
||||
import Warmers from "@/app_modules_thermo/setup/riscaldi/components/base-components/warmers";
|
||||
import Numeric from "@/app_modules_thermo/components/numeric";
|
||||
|
||||
export class WarmersService extends baseRestService {
|
||||
|
||||
@@ -10,7 +11,7 @@ export class WarmersService extends baseRestService {
|
||||
|
||||
async GetThermocameraStatus() {
|
||||
let result = await this.Get((await this.BASE_URL()) + "TCamData");
|
||||
warmersActions.setTcamStatus(store, result as Warmers.ICamStatus );
|
||||
warmersActions.setTcamStatus(store, result as Warmers.ICamStatus);
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -42,12 +43,12 @@ export class WarmersService extends baseRestService {
|
||||
}
|
||||
|
||||
async setTCamMode(model: boolean) {
|
||||
let result = await this.Put<any>((await this.BASE_URL()) + "setTCamMode?enableTCam="+model, {}, true);
|
||||
let result = await this.Put<any>((await this.BASE_URL()) + "setTCamMode?enableTCam=" + model, {}, true);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
async setTCamOn(model: boolean) {
|
||||
let result = await this.Put<any>((await this.BASE_URL()) + "setTCamOn?setTCamOn="+model,{}, true);
|
||||
let result = await this.Put<any>((await this.BASE_URL()) + "setTCamOn?setTCamOn=" + model, {}, true);
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -66,5 +67,24 @@ export class WarmersService extends baseRestService {
|
||||
return result;
|
||||
}
|
||||
|
||||
async GetTCamData() {
|
||||
let result = await this.Get<{
|
||||
imageSize: { x: number, y: number },
|
||||
rangeTemperature: { max: number, min: number },
|
||||
}>((await this.BASE_URL()) + "TCamData", true);
|
||||
return result;
|
||||
}
|
||||
|
||||
async GetMeasurePoints(setname: string): Promise<any> {
|
||||
return await this.Get<any>((await this.BASE_URL()) + `getMeasurePoints?setName=${setname}`, true);
|
||||
}
|
||||
|
||||
async SetMeasurePoints(x: number, y: number) {
|
||||
return await this.Put((await this.BASE_URL()) + `addMeasurePoint?posX=${Math.round(x)}&posY=${Math.round(y)}`, null, true);
|
||||
}
|
||||
|
||||
async ResetMeasurePoints() {
|
||||
return this.Put((await this.BASE_URL()) + `resetMeasurePoint`, null, true);
|
||||
}
|
||||
}
|
||||
export const warmersService = new WarmersService();
|
||||
@@ -364,10 +364,13 @@ export const machineStatusStore = {
|
||||
}
|
||||
}
|
||||
|
||||
//Patch per Thermoactive N.C.
|
||||
if(areaname == 'setup' || areaname == 'modal-load-program')
|
||||
return areaUserEnabled;
|
||||
|
||||
for (const key in areaconfig) {
|
||||
if (areaconfig.hasOwnProperty(key)) {
|
||||
const config = areaconfig[key];
|
||||
|
||||
if (config && config.name && config.name == areaname) {
|
||||
if (inBrowser) return config.allowExternalBrowser && config.enabled && areaUserEnabled;
|
||||
return config.enabled && areaUserEnabled;
|
||||
|
||||
@@ -3,6 +3,7 @@ import Vue from "vue";
|
||||
export interface ProdStoreModel {
|
||||
prod: Prod.IProd;
|
||||
panel: Prod.IProdPanel;
|
||||
fase: number;
|
||||
}
|
||||
|
||||
|
||||
@@ -21,7 +22,7 @@ export const prodStore = {
|
||||
|
||||
state: {
|
||||
prod: {},
|
||||
panel: {}
|
||||
panel: {}, fase: 0
|
||||
} as ProdStoreModel,
|
||||
|
||||
getters: {
|
||||
@@ -49,7 +50,7 @@ export const prodStore = {
|
||||
};
|
||||
state.panel = {
|
||||
numTarget: 0,
|
||||
numDone: 0, inizioProd: 0,
|
||||
numDone: 0, inizioProd: 0,
|
||||
stimaDurata: 0,
|
||||
tempAct: 0,
|
||||
tempSetpoint: 0,
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 275 KiB After Width: | Height: | Size: 155 KiB |
File diff suppressed because one or more lines are too long
Binary file not shown.
|
Before Width: | Height: | Size: 227 KiB After Width: | Height: | Size: 682 KiB |
Reference in New Issue
Block a user