Files
cms_thermo_active/Thermo.Active/wwwroot/src/modules/app-header.ts
T
2020-08-07 12:02:26 +02:00

128 lines
3.5 KiB
TypeScript

import Vue from "vue";
import Component from "vue-class-component";
import ProcessInfo from "@/modules/base-components/process-info.vue";
import { AppModel, buttonStatus } from "@/store";
import { /*Factory,*/ messageService } from "@/_base";
//import { Hub } from "src/services/hub";
//import { Watch } from "vue-property-decorator";
import AppRibbon from "@/components/app-ribbon.vue";
import UserInfo from "@/app_modules/machine/components/user-info.vue";
import { Prop } from "vue-property-decorator";
import Archinterface from "@/app_modules_thermo/components/arch-interface/arch-interface.vue";
import { recipeService } from "@/services/recipeService";
declare let $: any;
@Component({
name: "app-header", components: {
appRibbon: AppRibbon, userInfo: UserInfo, processInfo: ProcessInfo, archinterface: Archinterface
}
})
export default class AppHeader extends Vue {
$store: any;
public get state() { return this.$store.state.machineStatus; };
public get isMainViewLiftedUp() { return this.$store.state.isMainViewLiftedUp; }
public get mainStatus() { return this.$store.getters.mainStatus; };
public get powerOnStatus() { return this.$store.getters.powerOnAlarms; };
get panel() {
return (this.$store.state as AppModel).prod.panel;
}
mounted() {
messageService.subscribeToChannel("force-ui-update", args => {
this.$forceUpdate();
});
// $('.process-container').mousewheel(function (e, delta) {
// this.scrollLeft -= (delta * 40);
// e.preventDefault();
// });
}
public get alarmTitle() {
let s = this.$store.state as AppModel;
switch (this.ribbonStatus) {
case ribbonStatusEnum.Warning:
if (this.alarmCount == 1) return "warning_ribbon_title_1_item";
return "warning_ribbon_title_more_items";
case ribbonStatusEnum.Alarm:
if (this.alarmCount == 1) return "alarm_ribbon_title_1_item";
return "alarm_ribbon_title_more_items";
default:
return "";
}
}
public get alarms() {
let s = this.$store.state as AppModel;
return s.alarms.alarms.concat(s.alarms.warnings);
}
public get processes() {
let s = this.$store.state as AppModel;
return s.process.process;
}
public get alarmCount() {
return this.alarms.length;
}
public get showDetails(): boolean {
let s = this.$store.state as AppModel;
switch (this.ribbonStatus) {
case ribbonStatusEnum.Warning:
return s.alarms.warnings.length == 1;
case ribbonStatusEnum.Alarm:
return s.alarms.alarms.length == 1;
default: return false;
}
}
public get ribbonStatus(): ribbonStatusEnum {
// Controllo se ci sono allarmi
let s = this.$store.state as AppModel;
if (s.alarms.alarms.length > 0) return ribbonStatusEnum.Alarm;
if (s.alarms.warnings.length > 0) return ribbonStatusEnum.Warning;
if (s.process.running) return ribbonStatusEnum.Working;
return ribbonStatusEnum.Idle;
}
public get serviceRequired() {
return this.$store.state.alarms.serviceAlarms.length > 0;
}
public sendMessage(name: string) {
messageService.publishToChannel(name);
}
// public manageClick(btn: buttonStatus) {
// if (btn.clickable)
// Hub.Current.sendPowerCommand(btn.id);
// }
public manageClick(btn: any) {
// if (btn.clickable)
// Hub.Current.sendPowerCommand(btn.id);
}
async saveRecipe() {
await recipeService.Save();
}
}
enum ribbonStatusEnum {
Idle = 0,
Working = 1,
Warning = 2,
Alarm = 3
}