Merge remote-tracking branch 'origin/develop' into new/ThermoCamManager
This commit is contained in:
@@ -40,4 +40,9 @@
|
||||
<allowExternalBrowser>true</allowExternalBrowser>
|
||||
<ncNeeded>false</ncNeeded>
|
||||
</users>
|
||||
<thermoHood>
|
||||
<enabled>true</enabled>
|
||||
<allowExternalBrowser>true</allowExternalBrowser>
|
||||
<ncNeeded>false</ncNeeded>
|
||||
</thermoHood>
|
||||
</areasConfig>
|
||||
@@ -82,6 +82,16 @@
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="thermoHood">
|
||||
<xs:complexType>
|
||||
<xs:all>
|
||||
<xs:element name="enabled" type="xs:boolean" />
|
||||
<xs:element name="allowExternalBrowser" type="xs:boolean" />
|
||||
<xs:element name="ncNeeded" type="xs:boolean" />
|
||||
</xs:all>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
</xs:all>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
@@ -47,6 +47,7 @@ namespace Thermo.Active.Config
|
||||
public static AreasConfigModel ScadaConfig;
|
||||
public static AreasConfigModel JobEditorConfig;
|
||||
public static AreasConfigModel UsersConfig;
|
||||
public static AreasConfigModel ThermoHoodConfig;
|
||||
|
||||
public static List<ScadaSchemaModel> ProductionScadaSchema = new List<ScadaSchemaModel>();
|
||||
public static List<ScadaSchemaModel> ConfiguredScadaSchema = new List<ScadaSchemaModel>();
|
||||
|
||||
@@ -211,6 +211,10 @@ namespace Thermo.Active.Config
|
||||
case AREAS.USERS_KEY:
|
||||
SetAreaValue(ref UsersConfig, element);
|
||||
break;
|
||||
|
||||
case AREAS.THERMO_HOOD_KEY:
|
||||
SetAreaValue(ref ThermoHoodConfig, element);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -52,6 +52,7 @@ namespace Thermo.Active.Database.Migrations
|
||||
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 = "thermoHoodArea", Area = GENERAL_KEY, Enabled = true, WriteLevelMin = 30, ReadLevelMin = 1, PlcId = 0 },
|
||||
|
||||
// thermo functions
|
||||
new FunctionAccessModel() { Name = RECIPE_MANAGER, Area = GENERAL_KEY, Enabled = true, WriteLevelMin = 1, ReadLevelMin = 1, PlcId = 0 }
|
||||
|
||||
@@ -263,6 +263,7 @@ namespace Thermo.Active.Model
|
||||
public const string USERS_KEY = "users";
|
||||
public const string THERMO_KEY = "thermo";
|
||||
public const string RISC_KEY = "risc";
|
||||
public const string THERMO_HOOD_KEY = "thermoHood";
|
||||
}
|
||||
|
||||
// Config File Names
|
||||
|
||||
@@ -12,5 +12,6 @@ namespace Thermo.Active.Model.DTOModels
|
||||
public AreasConfigModel ScadaConfig;
|
||||
public AreasConfigModel JobEditorConfig;
|
||||
public AreasConfigModel UsersConfig;
|
||||
public AreasConfigModel ThermoHoodConfig;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -27,7 +27,8 @@ namespace Thermo.Active.Controllers.WebApi
|
||||
ReportConfig = ReportConfig,
|
||||
UtilitiesConfig = UtilitiesConfig,
|
||||
JobEditorConfig = JobEditorConfig,
|
||||
UsersConfig = UsersConfig
|
||||
UsersConfig = UsersConfig,
|
||||
ThermoHoodConfig = ThermoHoodConfig
|
||||
};
|
||||
|
||||
return Ok(startupConfiguration);
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 1.5 KiB |
@@ -139,7 +139,7 @@ button.btn.btn-success[disabled] {
|
||||
}
|
||||
|
||||
button.under {
|
||||
min-width: 118px;
|
||||
min-width: 140px;
|
||||
height: 45px;
|
||||
object-fit: contain;
|
||||
border-radius: 100px;
|
||||
@@ -154,6 +154,13 @@ button.under {
|
||||
font-weight: 500;
|
||||
font-size: 18px;
|
||||
|
||||
&.thermoHood{
|
||||
min-width:45px;
|
||||
max-width: 45px;
|
||||
margin-right: 15px;
|
||||
margin-left: 10px;
|
||||
}
|
||||
|
||||
img {
|
||||
max-width: 178px;
|
||||
max-height: 45px;
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
@footer-button-halfball-size: @footer-button-ball-size / 2;
|
||||
@footer-button-margin: 19px;
|
||||
@footer-padding: 0 0 9px 8px;
|
||||
@footer-machine-area-size: 300px;
|
||||
@footer-machine-area-size: 390px;
|
||||
|
||||
footer {
|
||||
position: absolute;
|
||||
@@ -29,6 +29,9 @@ footer {
|
||||
img {
|
||||
margin: 0px 5px;
|
||||
}
|
||||
.noThermoHood{
|
||||
min-width: 45px;
|
||||
}
|
||||
}
|
||||
|
||||
.container {
|
||||
|
||||
@@ -45,6 +45,8 @@
|
||||
@modal-history-maintenance-height: 700px;
|
||||
@modal-create-user-width: 752px;
|
||||
@modal-create-user-height: 550px;
|
||||
@modal-resistance-info-width: 450px;
|
||||
@modal-resistance-info-height: 650px;
|
||||
@modal-machine-height: 730px;
|
||||
@modal-machine-width: 600px;
|
||||
@modal-machine-top: @modal-machine-height / 2;
|
||||
@@ -3904,6 +3906,54 @@
|
||||
justify-content: flex-end;
|
||||
}
|
||||
}
|
||||
.@{modal}.info-resistance {
|
||||
width: @modal-resistance-info-width;
|
||||
height: @modal-resistance-info-height;
|
||||
top: calc(~"50%"- @modal-resistance-info-height / 2);
|
||||
left: calc(~"50%"- @modal-resistance-info-width / 2);
|
||||
|
||||
header {
|
||||
background-color: @color-darkish-blue;
|
||||
color: @color-white;
|
||||
font-family: @font-family;
|
||||
font-weight: 600;
|
||||
font-size: 24px;
|
||||
text-align: left;
|
||||
padding: 0px 23px;
|
||||
|
||||
}
|
||||
|
||||
.details {
|
||||
text-align: center;
|
||||
color: @color-greyish-brown;
|
||||
|
||||
.status{
|
||||
display: flex;
|
||||
flex-flow: row;
|
||||
align-items: center;
|
||||
justify-content: flex-end;
|
||||
|
||||
strong {
|
||||
font-size: 2.5em;
|
||||
margin-right: 100px;
|
||||
margin-left: 10px;
|
||||
width: 10%;
|
||||
|
||||
.fa-check{
|
||||
color: #90c03d;
|
||||
}
|
||||
.fa-exclamation-triangle{
|
||||
color: #d0021b;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&>hr {
|
||||
border: none;
|
||||
margin-bottom: 40px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.@{modal}.create-user {
|
||||
width: @modal-create-user-width;
|
||||
|
||||
@@ -3998,6 +3998,47 @@ article .box .body {
|
||||
align-items: center;
|
||||
justify-content: flex-end;
|
||||
}
|
||||
.modal.info-resistance {
|
||||
width: 450px;
|
||||
height: 650px;
|
||||
top: calc(50%-650px / 2);
|
||||
left: calc(50%-450px / 2);
|
||||
}
|
||||
.modal.info-resistance header {
|
||||
background-color: #002680;
|
||||
color: #fff;
|
||||
font-family: 'Work Sans', sans-serif;
|
||||
font-weight: 600;
|
||||
font-size: 24px;
|
||||
text-align: left;
|
||||
padding: 0px 23px;
|
||||
}
|
||||
.modal.info-resistance .details {
|
||||
text-align: center;
|
||||
color: #4b4b4b;
|
||||
}
|
||||
.modal.info-resistance .details .status {
|
||||
display: flex;
|
||||
flex-flow: row;
|
||||
align-items: center;
|
||||
justify-content: flex-end;
|
||||
}
|
||||
.modal.info-resistance .details .status strong {
|
||||
font-size: 2.5em;
|
||||
margin-right: 100px;
|
||||
margin-left: 10px;
|
||||
width: 10%;
|
||||
}
|
||||
.modal.info-resistance .details .status strong .fa-check {
|
||||
color: #90c03d;
|
||||
}
|
||||
.modal.info-resistance .details .status strong .fa-exclamation-triangle {
|
||||
color: #d0021b;
|
||||
}
|
||||
.modal.info-resistance .details > hr {
|
||||
border: none;
|
||||
margin-bottom: 40px;
|
||||
}
|
||||
.modal.create-user {
|
||||
width: 752px;
|
||||
height: 550px;
|
||||
@@ -6104,7 +6145,7 @@ button.btn.btn-success[disabled]:hover {
|
||||
background-image: linear-gradient(to bottom, #1756ad, #002680) !important;
|
||||
}
|
||||
button.under {
|
||||
min-width: 118px;
|
||||
min-width: 140px;
|
||||
height: 45px;
|
||||
object-fit: contain;
|
||||
border-radius: 100px;
|
||||
@@ -6119,6 +6160,12 @@ button.under {
|
||||
font-weight: 500;
|
||||
font-size: 18px;
|
||||
}
|
||||
button.under.thermoHood {
|
||||
min-width: 45px;
|
||||
max-width: 45px;
|
||||
margin-right: 15px;
|
||||
margin-left: 10px;
|
||||
}
|
||||
button.under img {
|
||||
max-width: 178px;
|
||||
max-height: 45px;
|
||||
@@ -6927,7 +6974,7 @@ footer .machine-area {
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
right: 0;
|
||||
width: 300px;
|
||||
width: 390px;
|
||||
height: 80px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
@@ -6936,13 +6983,16 @@ footer .machine-area {
|
||||
footer .machine-area img {
|
||||
margin: 0px 5px;
|
||||
}
|
||||
footer .machine-area .noThermoHood {
|
||||
min-width: 45px;
|
||||
}
|
||||
footer .container {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
align-items: flex-end;
|
||||
background-image: linear-gradient(to bottom, #1791ff, #005e94);
|
||||
box-shadow: 3px 2px 3px 0 rgba(0, 0, 0, 0.4);
|
||||
right: 300px;
|
||||
right: 390px;
|
||||
margin: 0;
|
||||
border-top-right-radius: 40px;
|
||||
border-bottom-right-radius: 40px;
|
||||
|
||||
@@ -283,10 +283,11 @@ export default class app extends Vue {
|
||||
}
|
||||
}
|
||||
applyViewPosition(position, removetransition?) {
|
||||
/* NO HANDLER
|
||||
(this.$refs["main-view"] as any).style = (this.$refs["main-view-handler"] as any).style =
|
||||
"transform:translateY(" +
|
||||
position +
|
||||
"px);" +
|
||||
(removetransition ? "transition:unset;" : "");
|
||||
(removetransition ? "transition:unset;" : "");*/
|
||||
}
|
||||
};
|
||||
|
||||
@@ -14,8 +14,8 @@
|
||||
<router-view :class="{'blur':applyBlurInternal}" />
|
||||
<modal-container name="modal" container-name="modal-internal" :inform-hmi="false"></modal-container>
|
||||
</div>
|
||||
<sotto-cofano></sotto-cofano>
|
||||
<paddle></paddle>
|
||||
<sotto-cofano :class="{'blur':(applyBlur || applyBlurNc)}"></sotto-cofano>
|
||||
<paddle :class="{'blur':(applyBlur || applyBlurNc)}"></paddle>
|
||||
|
||||
<app-footer :class="{'blur':(applyBlur || applyBlurNc)}"></app-footer>
|
||||
<print-gantt></print-gantt>
|
||||
|
||||
@@ -35,6 +35,7 @@ import ModalMissingTools from "./modules/base-components/modal-missing-tools.vue
|
||||
import ProgramManagement from "./modules/program-management.vue";
|
||||
import ZoomImage from './modules/base-components/zoom-image.vue';
|
||||
import ModalReportSelectColumn from './modules/base-components/modal-report-select-column.vue';
|
||||
import ModalInfoResistance from "./modules/base-components/modal-info-resistance.vue";
|
||||
|
||||
|
||||
export {
|
||||
@@ -56,7 +57,8 @@ export {
|
||||
ZoomImage,
|
||||
ModalCreateUser,
|
||||
ModalPasswordUser,
|
||||
ModalRoleUser
|
||||
ModalRoleUser,
|
||||
ModalInfoResistance
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import {
|
||||
// Home,
|
||||
Home,
|
||||
// CreateMaintenance,
|
||||
// SoftKeysPrefered,
|
||||
// CreateQueue,
|
||||
@@ -34,7 +34,7 @@ import { routes as users } from "./app_modules/users/route";
|
||||
//import { routes as ioRoutes } from "@/app_modules_thermo/sotto-cofano/route";
|
||||
|
||||
export let routes = [
|
||||
{ path: "", component: productionRoutes[0].component, name: productionRoutes[0].name, meta: { title: "Dashboard" } },
|
||||
{ path: "", component: Home, name: "home", meta: { title: "Dashboard" } },
|
||||
{ path: "/utilities", component: Utilities, meta: { title: "Utilities", area: "utilities" } },
|
||||
// { path: "/card-utilities", component: CardUtilities, meta: { title: "Card-Utilities", area: "card-utilities" } },
|
||||
// { path: "/card-tool-depot", component: CardToolDepot, meta: { title: "Card-Tool-Depot", area: "card-tool-depot" } },
|
||||
|
||||
@@ -6,7 +6,7 @@ import { Factory, messageService, awaiter } from "@/_base";
|
||||
import { loginService } from "@/app.modules";
|
||||
import { DataService } from 'src/services/dataService';
|
||||
import iziToast, { IziToastSettings } from "izitoast";
|
||||
import { store, machineStatusActions } from "@/store";
|
||||
import { store, machineStatusActions,appModelActions } from "@/store";
|
||||
|
||||
@Component({ name: "login", components: { modal: Modal } })
|
||||
export default class Login extends Vue {
|
||||
@@ -31,6 +31,10 @@ export default class Login extends Vue {
|
||||
if(!this.checkIfUserIsAuthorized()){
|
||||
userNotAuthorized = true;
|
||||
}
|
||||
|
||||
if(!this.checkIfUserIsAuthorizedToThermoHood()){
|
||||
appModelActions.MainViewLiftDown(this.$store);
|
||||
}
|
||||
}).catch(() => {
|
||||
this.logginIn = false;
|
||||
this.hasError = !service.isAuthenticated;
|
||||
@@ -67,6 +71,11 @@ export default class Login extends Vue {
|
||||
return machineStatusActions.isAreaVisible(store, this.URLS_TO_FUNCTIONS_BINDING[this.$route.path]);
|
||||
}
|
||||
|
||||
checkIfUserIsAuthorizedToThermoHood(): boolean {
|
||||
return machineStatusActions.isAreaVisible(store, "thermoHood");
|
||||
}
|
||||
|
||||
|
||||
URLS_TO_FUNCTIONS_BINDING = {
|
||||
"/production": "production",
|
||||
"/tooling": "tooling",
|
||||
|
||||
+1
-1
@@ -13,7 +13,7 @@
|
||||
<th class="assi-buttons"></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tbody class="autocolor">
|
||||
<template v-for="group of groupedData">
|
||||
<template v-for="(item, index) of group">
|
||||
<tr v-if="item.level === 0" :key="`${item.axis}_${index}`">
|
||||
|
||||
+1
-1
@@ -5,7 +5,7 @@
|
||||
<img
|
||||
v-if="pinned"
|
||||
src="/assets/icons/sotto-cofano/png/ico-bt-selez-auto-pin.png"
|
||||
class="ico-bt-selez-auto-pin-input"
|
||||
class="ico-bt-selez-auto-pin-input pinned"
|
||||
/>
|
||||
<img
|
||||
v-if="!pinned"
|
||||
|
||||
+2
@@ -23,6 +23,7 @@
|
||||
:item="item"
|
||||
v-for="(item, index) of pinned"
|
||||
:key="`pinned-${index}`"
|
||||
:class="`back-${index%2}`"
|
||||
></input-row>
|
||||
</template>
|
||||
|
||||
@@ -40,6 +41,7 @@
|
||||
:id="`input-${group}`"
|
||||
v-for="(item, index) of items[group].filter(i => i.bank == bankid)"
|
||||
:key="`h-${idx}-${idx2}-${index}`"
|
||||
:class="`back-${index%2}`"
|
||||
></input-row>
|
||||
</template>
|
||||
</template>
|
||||
|
||||
+14
@@ -2,6 +2,7 @@ import Component from "vue-class-component";
|
||||
import Vue from "vue";
|
||||
import { Prop, Watch } from "vue-property-decorator";
|
||||
import { underTheHoodService } from "@/services/underTheHoodService";
|
||||
import { Modal as modal, ModalHelper } from "@/components/modals";
|
||||
|
||||
@Component({})
|
||||
export default class outputRow extends Vue {
|
||||
@@ -24,7 +25,20 @@ export default class outputRow extends Vue {
|
||||
}
|
||||
|
||||
async force(value: number) {
|
||||
|
||||
console.log("force",value);
|
||||
await underTheHoodService.forceChannel(this.group, this.item, value);
|
||||
/*
|
||||
if(this.item.isForced)
|
||||
await underTheHoodService.forceChannel(this.group, this.item, value);
|
||||
else
|
||||
{
|
||||
ModalHelper.AskConfirm( this.$options.filters.localize("modal_confirm_title", "Richiesta di conferma"),
|
||||
this.$options.filters.localize("softkey_confirm", "Confirm?"),
|
||||
async() => {
|
||||
await underTheHoodService.forceChannel(this.group, this.item, value);
|
||||
}, null, "modal");
|
||||
}*/
|
||||
}
|
||||
|
||||
async reset() {
|
||||
|
||||
+1
-1
@@ -5,7 +5,7 @@
|
||||
<img
|
||||
v-if="pinned"
|
||||
src="/assets/icons/sotto-cofano/png/ico-bt-selez-auto-pin.png"
|
||||
class="ico-bt-selez-auto-pin-input"
|
||||
class="ico-bt-selez-auto-pin-input pinned"
|
||||
/>
|
||||
<img
|
||||
v-if="!pinned"
|
||||
|
||||
+2
@@ -24,6 +24,7 @@
|
||||
:item="item"
|
||||
v-for="(item, index) of pinned"
|
||||
:key="`pinned-${index}`"
|
||||
:class="`back-${index%2}`"
|
||||
></output-row>
|
||||
</template>
|
||||
|
||||
@@ -41,6 +42,7 @@
|
||||
:id="`output-${group}`"
|
||||
v-for="(item, index) of items[group].filter(i => i.bank == bankid)"
|
||||
:key="`h-${idx}-${idx2}-${index}`"
|
||||
:class="`back-${index%2}`"
|
||||
></output-row>
|
||||
</template>
|
||||
</template>
|
||||
|
||||
+1
-1
@@ -10,7 +10,7 @@
|
||||
<th></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tbody class="autocolor">
|
||||
<template v-for="(item, idx) in rowData">
|
||||
<tr :key="`c-${idx}`">
|
||||
<td>{{ item.date }}</td>
|
||||
|
||||
+1
-1
@@ -9,7 +9,7 @@
|
||||
<th class="misurazioni-value">Value</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tbody class="autocolor">
|
||||
<tr v-for="(item, i) of rowData" :key="i" class="tr-inner">
|
||||
<td>
|
||||
<span>
|
||||
|
||||
+82
@@ -0,0 +1,82 @@
|
||||
.main-container th.riscaldi-set,
|
||||
.main-container td.riscaldi-set {
|
||||
width: 10%;
|
||||
max-width: 10%;
|
||||
}
|
||||
.main-container th.riscaldi-cell-id,
|
||||
.main-container td.riscaldi-cell-id {
|
||||
width: 10%;
|
||||
max-width: 10%;
|
||||
}
|
||||
.main-container th.channel-id,
|
||||
.main-container td.channel-id {
|
||||
width: 10%;
|
||||
max-width: 10%;
|
||||
}
|
||||
.main-container th.board-id,
|
||||
.main-container td.board-id {
|
||||
width: 10%;
|
||||
max-width: 10%;
|
||||
}
|
||||
.main-container th.output-id,
|
||||
.main-container td.output-id {
|
||||
width: 10%;
|
||||
max-width: 10%;
|
||||
}
|
||||
.main-container th.reflector-id,
|
||||
.main-container td.reflector-id {
|
||||
width: 10%;
|
||||
max-width: 10%;
|
||||
}
|
||||
.main-container th.riscaldi-current,
|
||||
.main-container td.riscaldi-current {
|
||||
width: 10%;
|
||||
max-width: 10%;
|
||||
}
|
||||
.main-container th.riscaldi-status,
|
||||
.main-container td.riscaldi-status {
|
||||
width: 20%;
|
||||
max-width: 20%;
|
||||
}
|
||||
.main-container th.riscaldi-details,
|
||||
.main-container td.riscaldi-details {
|
||||
width: 10%;
|
||||
max-width: 10%;
|
||||
}
|
||||
.main-container td > span {
|
||||
padding: 0 10px;
|
||||
}
|
||||
.main-container .status-td {
|
||||
display: flex;
|
||||
flex-flow: row;
|
||||
justify-content: flex-start;
|
||||
align-items: center;
|
||||
}
|
||||
.main-container .details-td {
|
||||
display: flex;
|
||||
flex-flow: row;
|
||||
justify-content: flex-end;
|
||||
align-items: center;
|
||||
padding: 0;
|
||||
}
|
||||
.main-container .status-buttons {
|
||||
width: 80px;
|
||||
padding: 3px 3px;
|
||||
border-radius: 2px;
|
||||
text-shadow: 0 0 4px rgba(0, 0, 0, 0.5);
|
||||
color: #e8e8e8;
|
||||
text-align: center;
|
||||
}
|
||||
.main-container .main-container label {
|
||||
margin: 3px 16px 3px 16px;
|
||||
}
|
||||
.main-container .ok-button {
|
||||
background-color: #90c03d;
|
||||
}
|
||||
.main-container .broken-button {
|
||||
background-color: #d0021b;
|
||||
}
|
||||
.main-container .status-container {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
}
|
||||
+13
@@ -1,5 +1,7 @@
|
||||
import { Component, Vue } from "vue-property-decorator";
|
||||
import { store } from "@/store";
|
||||
import { ModalHelper } from "@/components/modals";
|
||||
import { ModalInfoResistance } from "@/modules/base-components";
|
||||
|
||||
@Component({})
|
||||
export default class RiscaldiTable extends Vue {
|
||||
@@ -25,4 +27,15 @@ export default class RiscaldiTable extends Vue {
|
||||
|
||||
mounted() {
|
||||
}
|
||||
|
||||
|
||||
details(item) {
|
||||
ModalHelper.selectedResistanceModal.idGroup = item.idGroup
|
||||
ModalHelper.selectedResistanceModal.idReflector = item.idGroup
|
||||
ModalHelper.selectedResistanceModal.idBoard = this.getOutput(item.idChannel)
|
||||
ModalHelper.selectedResistanceModal.idoutput = this.getOutput(item.idChannel)
|
||||
ModalHelper.selectedResistanceModal.status = this.getChannelInfo(item.idChannel).channelStatus
|
||||
ModalHelper.ShowModal(ModalInfoResistance);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+2
-2
@@ -14,7 +14,7 @@
|
||||
<th class="riscaldi-details"> </th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tbody class="autocolor">
|
||||
<tr v-for="(item, i) of resistances" :key="i">
|
||||
<td ><span>{{item.idGroup}}</span></td>
|
||||
<td ><span>{{item.idReflector}}</span></td>
|
||||
@@ -39,7 +39,7 @@
|
||||
</td>
|
||||
<td >
|
||||
<span class="details-td">
|
||||
<button class="btn button-details" @click="goToDetails()">
|
||||
<button class="btn button-details" @click="details(item)">
|
||||
Details
|
||||
</button>
|
||||
</span>
|
||||
|
||||
@@ -0,0 +1,147 @@
|
||||
.main-container {
|
||||
width: 1920px;
|
||||
height: 1080px;
|
||||
display: grid;
|
||||
grid-template-rows: 193px 1fr;
|
||||
grid-template-columns: 495px 1fr;
|
||||
}
|
||||
.main-container table {
|
||||
border-collapse: collapse;
|
||||
position: relative;
|
||||
}
|
||||
.main-container table thead {
|
||||
width: 674px;
|
||||
height: 34px;
|
||||
padding: 10px 0 0;
|
||||
background-color: #4e585e;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
.main-container table thead tr th {
|
||||
background-color: #4e585e;
|
||||
position: sticky;
|
||||
top: 0;
|
||||
height: 12px;
|
||||
font-size: 14px;
|
||||
line-height: 34px;
|
||||
text-align: left;
|
||||
color: #ffffff;
|
||||
min-width: 64px;
|
||||
overflow: hidden;
|
||||
padding: 0;
|
||||
}
|
||||
.main-container table thead tr th:after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
bottom: 0px;
|
||||
width: 100%;
|
||||
height: 2px;
|
||||
background-color: #bbbcbc;
|
||||
display: block;
|
||||
}
|
||||
.main-container table .center {
|
||||
text-align: center;
|
||||
}
|
||||
.main-container table tbody {
|
||||
width: 100%;
|
||||
border-collapse: collapse;
|
||||
border-spacing: 0px;
|
||||
margin: 0;
|
||||
}
|
||||
.main-container table tbody td {
|
||||
height: 64px;
|
||||
color: #e8e8e8;
|
||||
}
|
||||
.main-container table tbody tr.back-0 {
|
||||
background-color: #747f85;
|
||||
}
|
||||
.main-container table tbody tr.back-1 {
|
||||
background-color: #4e585e;
|
||||
}
|
||||
.main-container table tbody.autocolor tr:nth-child(odd) {
|
||||
background-color: #747f85;
|
||||
}
|
||||
.main-container table tbody.autocolor tr:nth-child(even) {
|
||||
background-color: #4e585e;
|
||||
}
|
||||
.main-container table tbody::-webkit-scrollbar {
|
||||
width: 16px;
|
||||
}
|
||||
.main-container table tbody::-webkit-scrollbar-track {
|
||||
margin: 20px 0px;
|
||||
background-color: #5a656b;
|
||||
border-radius: 15px;
|
||||
}
|
||||
.main-container table tbody::-webkit-scrollbar-thumb {
|
||||
width: 16px;
|
||||
background: #3e464a;
|
||||
border: 4px solid #5a656b;
|
||||
border-radius: 15px;
|
||||
}
|
||||
.main-container .table-container {
|
||||
height: 700px;
|
||||
}
|
||||
.main-container .table-container tr.group-row {
|
||||
height: 64px;
|
||||
width: 100%;
|
||||
background: transparent !important;
|
||||
}
|
||||
.main-container .table-container tr.group-row td {
|
||||
text-align: center;
|
||||
padding: 20px;
|
||||
height: auto;
|
||||
font-size: 16px;
|
||||
color: #fff;
|
||||
font-weight: bold;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
.main-container .table-container td.pointer {
|
||||
text-align: center;
|
||||
}
|
||||
.main-container .table-container button.pointer {
|
||||
width: 48px;
|
||||
height: 48px;
|
||||
object-fit: contain;
|
||||
border-radius: 2px;
|
||||
box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.4);
|
||||
background-image: linear-gradient(to bottom, #818a8f 0%, #42494e 98%);
|
||||
border: none;
|
||||
}
|
||||
.main-container .table-container button.pointer .pinned {
|
||||
transform: rotateZ(45deg);
|
||||
}
|
||||
.main-container .column-menu {
|
||||
grid-row: 2;
|
||||
border-top: #ffffff 2px solid;
|
||||
}
|
||||
.main-container .column-page {
|
||||
grid-row: 2;
|
||||
grid-column: 2;
|
||||
width: 1424px;
|
||||
height: 885px;
|
||||
border-top: #ffffff 2px solid;
|
||||
background-color: #657178;
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fill, minmax(600px, 1fr));
|
||||
}
|
||||
.main-container .column-page-one-column {
|
||||
grid-row: 2;
|
||||
grid-column: 2;
|
||||
width: auto;
|
||||
height: 885px;
|
||||
border-top: #ffffff 2px solid;
|
||||
background-color: #657178;
|
||||
display: grid;
|
||||
}
|
||||
.main-container .column-page-one-column > table {
|
||||
margin: 20px 0 0 20px;
|
||||
}
|
||||
.main-container .one-column-table-container {
|
||||
height: 750px;
|
||||
margin: 20px 20px 0 20px;
|
||||
}
|
||||
.main-container .one-column-table-container > table {
|
||||
width: -webkit-fill-available;
|
||||
}
|
||||
.main-container .pointer {
|
||||
cursor: pointer;
|
||||
}
|
||||
@@ -11,18 +11,19 @@
|
||||
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
position: relative;
|
||||
|
||||
thead {
|
||||
width: 674px;
|
||||
height: 34px;
|
||||
padding: 10px 0 0;
|
||||
|
||||
background-color: @fill-under-grey-1-2;
|
||||
border-bottom: 2px solid @light-grey-blue;
|
||||
box-sizing: border-box;
|
||||
|
||||
tr {
|
||||
th {
|
||||
background-color: @fill-under-grey-1-2;
|
||||
// border-bottom: 2px solid @light-grey-blue;
|
||||
position: sticky;
|
||||
top: 0;
|
||||
height: 12px;
|
||||
@@ -31,6 +32,18 @@
|
||||
text-align: left;
|
||||
color: #ffffff;
|
||||
min-width: 64px;
|
||||
overflow: hidden;
|
||||
padding: 0;
|
||||
|
||||
&:after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
bottom: 0px;
|
||||
width: 100%;
|
||||
height: 2px;
|
||||
background-color: @light-grey-blue;
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -50,13 +63,26 @@
|
||||
color: #e8e8e8;
|
||||
}
|
||||
|
||||
tr:nth-child(odd) {
|
||||
// tr:nth-child(odd),
|
||||
tr.back-0 {
|
||||
background-color: @fill-under-grey-3-2;
|
||||
}
|
||||
tr:nth-child(even) {
|
||||
// tr:nth-child(even),
|
||||
tr.back-1 {
|
||||
background-color: @fill-under-grey-1-2;
|
||||
}
|
||||
|
||||
&.autocolor{
|
||||
tr:nth-child(odd) {
|
||||
background-color: @fill-under-grey-3-2;
|
||||
}
|
||||
tr:nth-child(even) {
|
||||
background-color: @fill-under-grey-1-2;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
&::-webkit-scrollbar {
|
||||
width: 16px;
|
||||
}
|
||||
@@ -107,6 +133,9 @@
|
||||
box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.4);
|
||||
background-image: linear-gradient(to bottom, #818a8f 0%, #42494e 98%);
|
||||
border: none;
|
||||
.pinned{
|
||||
transform: rotateZ(45deg);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -129,7 +158,7 @@
|
||||
.column-page-one-column {
|
||||
grid-row: 2;
|
||||
grid-column: 2;
|
||||
width: 1384px;
|
||||
width: auto;
|
||||
height: 885px;
|
||||
border-top: @white 2px solid;
|
||||
background-color: @fill-under-grey-2-2;
|
||||
@@ -141,7 +170,7 @@
|
||||
|
||||
.one-column-table-container {
|
||||
height: 750px;
|
||||
margin: 20px 0 0 20px;
|
||||
margin: 20px 20px 0 20px;
|
||||
> table {
|
||||
width: -webkit-fill-available;
|
||||
}
|
||||
|
||||
@@ -10,6 +10,14 @@ declare let $: any;
|
||||
|
||||
export class ModalHelper {
|
||||
|
||||
|
||||
public static selectedResistanceModal = {
|
||||
idGroup: -1,
|
||||
idReflector: -1,
|
||||
idBoard: -1,
|
||||
idoutput: -1,
|
||||
status: 0
|
||||
};
|
||||
|
||||
public static loadDepotModal = {
|
||||
positionId: 0,
|
||||
|
||||
@@ -58,6 +58,9 @@ export default class AppFooter extends Vue {
|
||||
return machineStatusActions.isAreaVisible(store, areaname);
|
||||
}
|
||||
|
||||
isThermoHoodVisible() {
|
||||
return machineStatusActions.isAreaVisible(store, "thermoHood");
|
||||
}
|
||||
public getUtilities(): Array<Object> {
|
||||
if (typeof cmsClient != "undefined")
|
||||
return JSON.parse(cmsClient.getConfiguredProcessesInMainMenu());
|
||||
|
||||
@@ -95,15 +95,15 @@
|
||||
</div>
|
||||
|
||||
<div class="machine-area">
|
||||
<button
|
||||
<button
|
||||
@mouseup="toggleMainView()"
|
||||
style="min-width:45px"
|
||||
class="under"
|
||||
class="under thermoHood"
|
||||
v-if="isThermoHoodVisible()"
|
||||
:class="{'pressed':state.isMainViewLiftedUp}"
|
||||
:title="'footer_tooltip_under_hood' | localize('Open/Close Under-the-hood area')"
|
||||
>
|
||||
<i class="fa fa-gear"></i>
|
||||
</button>
|
||||
><img src="assets/icons/png/ico-bt-dark-advanced.png" /></button>
|
||||
|
||||
<span class="noThermoHood" v-else ></span>
|
||||
|
||||
<button
|
||||
class="under"
|
||||
|
||||
@@ -22,6 +22,7 @@ import ModalAddOffsetTool from "./modal-add-offset-tool.vue";
|
||||
import ModalMissingTools from "./modal-missing-tools.vue";
|
||||
import ModalJobAddParameter from "./modal-job-add-parameter.vue";
|
||||
import ModalNcContainer from "./modal-nc-container.vue";
|
||||
import ModalInfoResistance from "./modal-info-resistance.vue";
|
||||
|
||||
|
||||
export {
|
||||
@@ -43,5 +44,6 @@ export {
|
||||
ModalAddOffsetTool,
|
||||
ModalMissingTools,
|
||||
ModalJobAddParameter,
|
||||
HistoryMaintenance
|
||||
HistoryMaintenance,
|
||||
ModalInfoResistance
|
||||
};
|
||||
|
||||
@@ -0,0 +1,39 @@
|
||||
import Vue from "vue";
|
||||
import { Factory, messageService } from 'src/_base';
|
||||
import Component from "vue-class-component";
|
||||
import { Deferred } from "../../services/Deferred";
|
||||
import { Prop } from "vue-property-decorator";
|
||||
import { relativeTimeThreshold } from "moment";
|
||||
import { ModalHelper, Modal } from "@/components/modals";
|
||||
|
||||
|
||||
|
||||
@Component({
|
||||
components: {
|
||||
modal: Modal,
|
||||
}
|
||||
})
|
||||
export default class ModalInfoResistance extends Vue {
|
||||
|
||||
@Prop()
|
||||
deferred: Deferred<any>;
|
||||
|
||||
get resis(){
|
||||
return ModalHelper.selectedResistanceModal;
|
||||
}
|
||||
|
||||
|
||||
getBitVal(number){
|
||||
if((this.resis.status & number) == number)
|
||||
return true;
|
||||
else
|
||||
return false
|
||||
}
|
||||
|
||||
close() {
|
||||
|
||||
messageService.deleteChannel("esc_pressed");
|
||||
ModalHelper.HideModal();
|
||||
};
|
||||
|
||||
};
|
||||
@@ -0,0 +1,54 @@
|
||||
<template>
|
||||
<modal type="info-resistance" :title="'modal_resistance_info' | localize('Info Resistenza')">
|
||||
<button class="close" slot="header-buttons" @click="close()"><i class="fa fa-remove"></i></button>
|
||||
<div class="details">
|
||||
<hr/>
|
||||
<div class="status"><span>{{'resistance_info_id_group' | localize('Group ID:')}} </span>
|
||||
<strong>{{resis.idGroup}}</strong>
|
||||
</div>
|
||||
<div class="status"><span>{{'resistance_info_id_reflector' | localize('Reflector ID:')}} </span>
|
||||
<strong>{{resis.idReflector}}</strong>
|
||||
</div>
|
||||
<div class="status"><span>{{'resistance_info_id_output' | localize('Output ID:')}} </span>
|
||||
<strong>{{resis.idoutput}}</strong>
|
||||
</div>
|
||||
<hr/>
|
||||
<div class="status"><span>{{'resistance_info_wire_broken' | localize('Heater / Wire broken:')}} </span>
|
||||
<strong v-if="getBitVal(1)"><i class="fa fa-exclamation-triangle"></i></strong>
|
||||
<strong v-else><i class="fa fa-check"></i></strong>
|
||||
</div>
|
||||
<div class="status"><span>{{'resistance_info_fuse_blown' | localize('Fuse Blown:')}} </span>
|
||||
<strong v-if="getBitVal(2)"><i class="fa fa-exclamation-triangle"></i></strong>
|
||||
<strong v-else><i class="fa fa-check"></i></strong>
|
||||
</div>
|
||||
<div class="status"><span>{{'resistance_info_short_triac' | localize('Shortest Triac:')}} </span>
|
||||
<strong v-if="getBitVal(4)"><i class="fa fa-exclamation-triangle"></i></strong>
|
||||
<strong v-else><i class="fa fa-check"></i></strong>
|
||||
</div>
|
||||
<div class="status"><span>{{'resistance_info_amp_low' | localize('Amp too low:')}} </span>
|
||||
<strong v-if="getBitVal(16)"><i class="fa fa-exclamation-triangle"></i></strong>
|
||||
<strong v-else><i class="fa fa-check"></i></strong>
|
||||
</div>
|
||||
<div class="status"><span>{{'resistance_info_phase_missing' | localize('One or more phase are missinog:')}} </span>
|
||||
<strong v-if="getBitVal(64)"><i class="fa fa-exclamation-triangle"></i></strong>
|
||||
<strong v-else><i class="fa fa-check"></i></strong>
|
||||
</div>
|
||||
<div class="status"><span>{{'resistance_info_ssr_overload' | localize('SSR overload:')}} </span>
|
||||
<strong v-if="getBitVal(128)"><i class="fa fa-exclamation-triangle"></i></strong>
|
||||
<strong v-else><i class="fa fa-check"></i></strong>
|
||||
</div>
|
||||
<div class="status"><span>{{'resistance_info_frequency_not_ok' | localize('Frequency not 49..51 or 59..61 Hz:')}} </span>
|
||||
<strong v-if="getBitVal(256)"><i class="fa fa-exclamation-triangle"></i></strong>
|
||||
<strong v-else><i class="fa fa-check"></i></strong>
|
||||
</div>
|
||||
</div>
|
||||
</modal>
|
||||
</template>
|
||||
<script src="./modal-info-resistance.ts" lang="ts">
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user