This commit is contained in:
Samuele Locatelli
2020-11-03 12:43:34 +01:00
9 changed files with 102 additions and 50 deletions
@@ -31,6 +31,9 @@
font-size: 32px;
font-weight: bold;
color: #fff;
&.disabled{
cursor:not-allowed;
}
&.temp{
grid-template-columns: 50% 50%;
@@ -4736,6 +4736,9 @@ article .box .body {
font-weight: bold;
color: #fff;
}
.warmers svg .resistance.disabled {
cursor: not-allowed;
}
.warmers svg .resistance.temp {
grid-template-columns: 50% 50%;
grid-template-rows: 50% 50%;
@@ -11,6 +11,9 @@ export default class Resistance extends Vue {
@Prop()
channel: Warmers.IChannel;
@Prop({ default: true })
editable: boolean;
@Prop({ default: false })
selected: boolean;
@@ -36,25 +39,33 @@ export default class Resistance extends Vue {
@Prop({ default: function () { return [23, 86, 173] } })
selectedColorTo: number[];
click(){
if(this.editable)
this.$emit('click');
}
get currentStandardTempColor() {
//Not linear, but quadratic
if(!this.channel.tCamActive || this.channel.tCamTempSet==0)
if(!this.channel.tCamActive || this.channel.setpointHMI==0)
return "179, 179, 179";
var delta = this.channel.tCamTempSet - this.channel.tCamTempAct;
if(delta=> - 5 && delta<=5)
console.log(delta);
if(delta >= - 5 && delta <= 5)
{
console.log("delta");
return "144,191,61";
}
else if(delta>5){
return [this.colorFrom[0] - (this.colorFrom[0] - this.colorTo[0]) * delta / 100,
this.colorFrom[1] - (this.colorFrom[1] - this.colorTo[1]) * delta / 100,
this.colorFrom[2] - (this.colorFrom[2] - this.colorTo[2]) * delta / 100];
return [this.colorFrom[0] - (this.colorFrom[0] - this.colorTo[0]) * delta / 300,
this.colorFrom[1] - (this.colorFrom[1] - this.colorTo[1]) * delta / 300,
this.colorFrom[2] - (this.colorFrom[2] - this.colorTo[2]) * delta / 300];
}
else {
return [this.ColorColdFrom[0] - (this.ColorColdFrom[0] - this.colorColdTo[0]) * delta / 100,
this.ColorColdFrom[1] - (this.ColorColdFrom[1] - this.colorColdTo[1]) * delta / 100,
this.ColorColdFrom[2] - (this.ColorColdFrom[2] - this.colorColdTo[2]) * delta / 100];
delta = delta* (-1);
return [this.ColorColdFrom[0] - (this.ColorColdFrom[0] - this.colorColdTo[0]) * delta / 300,
this.ColorColdFrom[1] - (this.ColorColdFrom[1] - this.colorColdTo[1]) * delta / 300,
this.ColorColdFrom[2] - (this.ColorColdFrom[2] - this.colorColdTo[2]) * delta / 300];
}
@@ -3,19 +3,20 @@
class="resistance"
:key="selected"
v-if="!temperature"
@click="$emit('click')"
v-on:touchend="$emit('click')"
@click="click"
v-on:touchend="click"
:style="{backgroundColor:`rgb(${currentColor})`}"
>{{channel.setpointHMI}} %</div>
<div
class="resistance temp"
:class="{'disabled':!editable}"
:key="selected"
@click="$emit('click')"
v-on:touchend="$emit('click')"
@click="click"
v-on:touchend="click"
v-else
:style="{backgroundColor:`rgb(${currentColorTemp})`}"
>
<span v-if="channel.tCamTempSet == 0 || !channel.tCamActive">--</span>
<span v-if="channel.setpointHMI == 0 || !channel.tCamActive">--</span>
<span v-else>{{channel.tCamTempSet}}&nbsp;°C</span>
<span>{{channel.tCamTempAct}}&nbsp;°C</span>
<span>{{channel.setpointHMI}}&nbsp;&nbsp;%</span>
@@ -34,7 +34,7 @@ export default class Thermocamera extends Vue {
setpointHMI: this.thermocameraOnOff,
range: { min: 0, max: 999999 },
status: {
enabled: true,
enabled: this.isOnOffRunEnabled,
hasError: false,
visible: true
}
@@ -67,6 +67,19 @@ export default class Thermocamera extends Vue {
return store.state.warmers.channels.filter(i => this.selectedChannelIds.indexOf(i.idChannel) >= 0);
}
get isEnableDisableEnabled(): Boolean{
return !store.state.warmers.tCamStatus.thermoCamOnOff;
}
get isOnOffRunEnabled(): Boolean{
for(const ch of store.state.warmers.channels){
if(ch.tCamTempSet > 0)
return true;
}
return false;
}
get thermocameraMode(): number {
if(store.state.warmers.tCamStatus.thermoCamMode)
return 1
@@ -130,7 +143,7 @@ export default class Thermocamera extends Vue {
}
clearAllTemperature(){
for (const c of this.selectedChannels) c.tCamTempSet = 0;
(this.$refs.warmers as any).clearTemp();
this.$emit("tempsChanged");
}
@@ -12,17 +12,14 @@
:status="modeEnabled.status"
></toggle-button>
</div>
</template>
<template>
<div class="input-area">
<label>{{'thermocamera_on_off'|localize('Thermoprophet Run')}}</label>
<toggle-button
v-model="OnOffEnabled.setpointHMI"
:status="OnOffEnabled.status"
></toggle-button>
</div>
</template>
<div class="divider"></div>
</template>
<div class="input-area left grid">
<button
class="btn"
@click="showcamera"
>{{'warmers_showcamera' | localize('Show Camera Image')}}</button>
</div>
<div class="divider"></div>
<div class="input-area">
<label>{{'warmers_selection' | localize('Selezione')}}</label>
</div>
@@ -49,13 +46,7 @@
<label>{{'warmers_select_none' | localize('Nessuno')}}</label>
</button>
</div>
<div class="input-area left grid">
<button
class="btn"
@click="showcamera"
>{{'warmers_showcamera' | localize('Show Camera Image')}}</button>
</div>
<div class="divider"></div>
<div class="divider"></div>
<div class="input-area">
<label>{{'warmers_enable' | localize('Enable/Disable Management')}}</label>
</div>
@@ -63,10 +54,12 @@
<button
class="btn"
@click="enableHeater"
:disabled="!isEnableDisableEnabled"
>{{'warmers_enabletemp' | localize('Enable selected')}}</button>
<button
class="btn"
@click="disableHeater"
:disabled="!isEnableDisableEnabled"
>{{'warmers_disabletemp' | localize('Disable selected')}}</button>
</div>
<div class="divider"></div>
@@ -87,12 +80,24 @@
<button
class="btn btn-success"
@click="setAllTemperature"
:disabled="!isEnableDisableEnabled"
>{{'warmers_setTemperature' | localize('Set all temperature')}}</button>
<button
class="btn btn-success"
@click="clearAllTemperature"
:disabled="!isEnableDisableEnabled"
>{{'warmers_setTemperature' | localize('Clear all temperature')}}</button>
</div>
</div>
<div class="divider"></div>
<template>
<div class="input-area">
<label>{{'thermocamera_on_off'|localize('Thermoprophet Run')}}</label>
<toggle-button
v-model="OnOffEnabled.setpointHMI"
:status="OnOffEnabled.status"
></toggle-button>
</div>
</template>
<!-- </div> -->
</div>
@@ -48,6 +48,7 @@ export default class Warmers extends Vue {
selectedChannels: number[] = []
selectionMethod: SelectionMethod = SelectionMethod.none;
get parameters() {
@@ -100,7 +101,11 @@ export default class Warmers extends Vue {
}
selectAll() {
this.selectedChannels.splice(0, this.selectedChannels.length, ...this.channels.map(c => c.idChannel));
this.selectedChannels = [];
for (var ch of this.channels) {
if(!this.isdisabled(ch.idChannel))
this.selectedChannels.push(ch.idChannel);
}
this.$emit('select', this.selectedChannels)
}
@@ -150,6 +155,7 @@ export default class Warmers extends Vue {
}
async mounted() {
let $this = this;
if (this.usePanZoom)
setTimeout(() => {
@@ -157,6 +163,7 @@ export default class Warmers extends Vue {
zoomEnabled: true,
controlIconsEnabled: false,
center: true,
dblClickZoomEnabled: false
});
}, 500);
}
@@ -199,7 +206,8 @@ export default class Warmers extends Vue {
this.resistancePosition(row, cell, point1, point2, point3, point4);
if (lazo.isPointInFill(point1) || lazo.isPointInFill(point2) || lazo.isPointInFill(point3) || lazo.isPointInFill(point4)) {
captured.add(cell.idChannel);
if(!this.isdisabled(cell.idChannel))
captured.add(cell.idChannel);
}
}
}
@@ -224,6 +232,19 @@ export default class Warmers extends Vue {
}
isdisabled(id){
if(!this.temperature)
return false;
let channel = this.channels.find(c => c.idChannel == id);
return channel.setpointHMI==0;
}
clearTemp() {
for (const chan of this.channels) {
chan.tCamTempSet = 0;
}
}
automateTemp() {
var min = parseFloat(this.parameters.warmerAutocompStartValue.toString());
@@ -236,9 +257,6 @@ export default class Warmers extends Vue {
let result = new Map<number, Warmers.IResistance[]>();
for (const c of this.channels) c.setpointHMI = 0;
for (const row of this.rows) {
for (const cell of this.resistancesPerRow(row)) {
this.resistancePosition(row, cell, point1, point2, point3, point4);
@@ -251,12 +269,6 @@ export default class Warmers extends Vue {
}
}
let mink = Math.min(...Array.from(result.keys()));
let maxk = Math.max(...Array.from(result.keys()));
let dk = maxk - mink;
let dv = max - min;
for (const i of Array.from(result.keys())) {
for (const res of result.get(i)) {
let channel = this.channels.find(c => c.idChannel == res.idChannel);
@@ -265,9 +277,6 @@ export default class Warmers extends Vue {
}
}
// console.log('automate', result);
}
automate() {
@@ -27,6 +27,7 @@
@click="select(cell)"
:selected="isSelected(cell.idChannel)"
:temperature="temperature"
:editable="!isdisabled(cell.idChannel)"
/>
</foreignObject>
</g>
@@ -167,15 +167,21 @@ export default class ShowRiscaldamentoSuperioreInfo extends Vue {
// recipeActions.setCurrent(store, this.recipe);
this.isLoading = true;
if(this.warmersEdited)
if(this.warmersEdited){
for (const ch of store.state.warmers.channels) {
if(ch.setpointHMI==0)
ch.tCamActive = false;
}
await warmersService.Update(store.state.warmers.channels.reduce((p, c) => { p[c.idChannel] = c.setpointHMI; return p; }, {}));
}
if(this.tempsEdited)
await warmersService.UpdateTemp(store.state.warmers.channels.reduce((p, c) => { p[c.idChannel] = c.tCamTempSet; return p; }, {}));
if(this.tempEnabledEdited){
if(this.warmersEdited || this.tempEnabledEdited){
await warmersService.UpdateEnable(store.state.warmers.channels.reduce((p, c) => { p[c.idChannel] = c.tCamActive; return p; }, {}));
await warmersService.setTCamMode(store.state.warmers.tCamStatus.thermoCamMode);
await warmersService.setTCamOn(store.state.warmers.tCamStatus.thermoCamOnOff);
}
if(this.warmersEdited || this.tempsEdited || this.tempEnabledEdited)
await warmersService.Confirm();