UNPKG

@larva.io/webcomponents

Version:

Fentrica SmartUnits WebComponents package

266 lines (265 loc) 9.69 kB
/*! * (C) Fentrica http://fentrica.com - Seee LICENSE.md */ import { h } from "@stencil/core"; import { getEventMessage, getLogLevel, LogLevel, Qualify, ReportEvent } from "@larva.io/report-definitions"; import ReportHelpers from "./report-codes-helper"; import moment from "moment"; import pick from "lodash-es/pick"; import omit from "lodash-es/omit"; import values from "lodash-es/values"; import orderBy from "lodash-es/orderBy"; import { config } from "../../../global/config"; export class LogModal { constructor() { this.config = config; /** * Larva sub-components request event */ this.logreceived = false; /** * Larva sub-components request event */ this.logdata = []; this.logcount = 0; } /** * Request response method */ async response(data) { if (this.modal) { this.modal.setAttribute('icon-small', ''); } this.logreceived = true; this.logdata = data.logs; this.logcount = data.count; } componentDidLoad() { this.request.emit(); // request logs } /** * Display Larva Error */ async error(data, timeout = 5000) { this.logreceived = true; let msg = 'error_messages.'; if (typeof data === 'string') { msg += data; } else if (data && data.message && typeof data.message === 'string') { msg += data.message; } else { msg += 'UNKNOWN_ERROR'; } const translate = h("lar-translate", { t: msg }); // this.notify.create(translate, 'danger', timeout); // @TODO: error notify } // @ts-ignore static parseData(data, eventCode) { let ret = {}; if (data && ReportHelpers.isSecurityEvent(eventCode)) { // alarm zone info ret = pick(data, ['name', 'sn', 'io', 'state', 'zone']); } else { ret = omit(data, ['user', 'flow']); } return values(ret).toString(); } renderLogList() { const logs = []; const logdata = orderBy(this.logdata, 'createdAt', 'desc'); const formatDateTime = this.config.get('formatDateTime', 'DD.MM.YYYY HH:mm'); if (logdata.length === 0) { logs.push(h("lar-list-header", null, h("lar-translate", { t: "log.nologs" }))); return logs; } let prevMonth; let prevYear; logdata.forEach(logitem => { let color = 'tertiary'; let icon = 'info'; const date = moment(new Date(logitem.createdAt)); const month = date.month() + 1; const year = date.year(); const code = Number(logitem.code); const logLevel = getLogLevel(code); const message = getEventMessage(code); const qualify = Number(logitem.qualify); if (prevMonth !== month || prevYear !== year) { logs.push(h("lar-list-header", null, h("lar-translate", { t: 'date.months.' + month }), " ", year)); prevMonth = month; prevYear = year; } if (logLevel === LogLevel.ERROR) { color = 'danger'; } else if (logLevel === LogLevel.WARNING) { color = 'warning'; } // if issue is resolved issue, change color to green if (qualify === Qualify.RESTORE) { color = 'success'; } if (ReportHelpers.isUserEvent(code)) { icon = 'user'; } else if (ReportHelpers.isSecurityEvent(code)) { icon = 'warning'; if (ReportHelpers.isFireAlarm(code)) { icon = 'fire_alarm'; } if (ReportHelpers.isMedicalAlarm(code)) { icon = 'medical_alarm'; } if (ReportHelpers.isPanicAlarm(code)) { icon = 'panic_alarm'; } if (ReportHelpers.isOtherAreaAlarm(code)) { icon = 'other_alarm'; } } else if (ReportHelpers.isCloudEvent(code)) { icon = 'cloud'; } else if (ReportHelpers.isSystemEvent(code)) { icon = 'device'; } logs.push(h("lar-list-item", null, h("div", { slot: "start", class: "circle" }, h("lar-icon", { icon: icon, color: color })), h("div", null, h("div", { class: "date" }, h("small", null, moment(new Date(logitem.createdAt)).format(formatDateTime))), h("h4", null, h("lar-translate", { t: 'log_entries.' + code, fallback: message })), h("div", null, logitem.data && logitem.data.user && h("small", null, logitem.data.user.firstname, " ", logitem.data.user.lastname)), logitem.data && h("div", null, h("small", null, LogModal.parseData(logitem.data, code))), qualify === Qualify.RESTORE && h("div", null, h("small", null, h("lar-badge", { color: "success" }, code === ReportEvent.SECURITY_PARTIAL_ARMED_DISARMED || code === ReportEvent.SECURITY_ARMED_DISARMED ? // if arm arm/disarm event then NEW = disrarm, RESTORE = arm h("lar-translate", { t: "log.armed" }) : h("lar-translate", { t: "log.resolved" }))))))); }); return logs; } render() { return [ h("div", { key: 'ff4fda3f33471cd7c103e7bea437448152fe69e5' }, this.logreceived && h("lar-list", { key: '28f2ec6bdce7fc267bbf2e09e3943c2ca233e087' }, this.renderLogList())) ]; } static get is() { return "lar-log-modal"; } static get encapsulation() { return "shadow"; } static get originalStyleUrls() { return { "$": ["log-modal.scss"] }; } static get styleUrls() { return { "$": ["log-modal.css"] }; } static get properties() { return { "modal": { "type": "any", "mutable": false, "complexType": { "original": "HTMLLarModalElement", "resolved": "HTMLLarModalElement", "references": { "HTMLLarModalElement": { "location": "global", "id": "global::HTMLLarModalElement" } } }, "required": false, "optional": true, "docs": { "tags": [], "text": "" }, "getter": false, "setter": false, "reflect": false, "attribute": "modal" } }; } static get states() { return { "logreceived": {}, "logdata": {} }; } static get events() { return [{ "method": "request", "name": "request", "bubbles": true, "cancelable": true, "composed": true, "docs": { "tags": [], "text": "Larva sub-components request event" }, "complexType": { "original": "any", "resolved": "any", "references": {} } }]; } static get methods() { return { "response": { "complexType": { "signature": "(data: InputMessage) => Promise<void>", "parameters": [{ "name": "data", "type": "InputMessage", "docs": "" }], "references": { "Promise": { "location": "global", "id": "global::Promise" }, "InputMessage": { "location": "import", "path": "./log-interface", "id": "src/components/internal/log-modal/log-interface.tsx::InputMessage" } }, "return": "Promise<void>" }, "docs": { "text": "Request response method", "tags": [] } }, "error": { "complexType": { "signature": "(data: any, timeout?: number) => Promise<void>", "parameters": [{ "name": "data", "type": "any", "docs": "" }, { "name": "timeout", "type": "number", "docs": "" }], "references": { "Promise": { "location": "global", "id": "global::Promise" } }, "return": "Promise<void>" }, "docs": { "text": "Display Larva Error", "tags": [] } } }; } } //# sourceMappingURL=log-modal.js.map