UNPKG

@senx/discovery-plugin-marauder

Version:

Discovery plugin - Marauder's map

218 lines (214 loc) 10.4 kB
import { proxyCustomElement, HTMLElement, createEvent, h } from '@stencil/core/internal/client'; import { a as DataModel } from './types.js'; import { P as Param, G as GTSLib, U as Utils, L as Logger } from './utils.js'; import { a as html2canvas } from './html2canvas.js'; import { d as defineCustomElement$2 } from './discovery-pageable2.js'; import { d as defineCustomElement$1 } from './discovery-spinner2.js'; const discoveryTabularCss = "/*!\n * Copyright 2022 SenX S.A.S.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */:host .tabular-wrapper{width:calc(100% - 20px);height:calc(100% - 20px);position:relative;overflow-y:auto;margin:0;padding:10px}:host .tabular-wrapper .tabular-wrapper-inner{position:absolute;width:calc(100% - 20px);left:10px;right:0;bottom:0;top:0}"; const DiscoveryTabularStyle0 = discoveryTabularCss; const DiscoveryTabular = /*@__PURE__*/ proxyCustomElement(class DiscoveryTabular extends HTMLElement { constructor() { super(); this.__registerHost(); this.__attachShadow(); this.draw = createEvent(this, "draw", 7); this.dataPointOver = createEvent(this, "dataPointOver", 7); this.dataPointSelected = createEvent(this, "dataPointSelected", 7); this.discoveryEvent = createEvent(this, "discoveryEvent", 7); this.divider = 1000; this.result = undefined; this.type = undefined; this.options = Object.assign(Object.assign({}, new Param()), { timeMode: 'date' }); this.width = undefined; this.height = undefined; this.debug = false; this.unit = undefined; this.parsing = false; this.rendering = false; this.tabularData = []; } updateRes() { this.tabularData = this.convert(GTSLib.getData(this.result)); } async resize() { const dims = Utils.getContentBounds(this.el.parentElement); this.width = dims.w; this.height = dims.h; return Promise.resolve(); } // noinspection JSUnusedLocalSymbols // eslint-disable-next-line @typescript-eslint/no-unused-vars async export(type = 'png') { return (await html2canvas(this.pngWrapper, { allowTaint: true, backgroundColor: this.options.bgColor || Utils.getCSSColor(this.el, '--warp-view-tile-background', '#fff'), })).toDataURL(); } componentWillLoad() { var _a; this.parsing = true; this.LOG = new Logger(DiscoveryTabular, this.debug); if (typeof this.options === 'string') { this.options = JSON.parse(this.options); } this.result = GTSLib.getData(this.result); this.divider = GTSLib.getDivider(this.options.timeUnit || 'us'); this.tabularData = this.convert(this.result || new DataModel()); (_a = this.LOG) === null || _a === void 0 ? void 0 : _a.debug(['componentWillLoad'], { type: this.type, options: this.options, }); const dims = Utils.getContentBounds(this.el.parentElement); this.width = dims.w; this.height = dims.h; this.el.addEventListener('mouseout', () => this.dataPointOver.emit({})); } static getHeaderParam(data, i, j, key, def) { return data.params && data.params[i] && data.params[i][key] && data.params[i][key][j] ? data.params[i][key][j] : data.globalParams && data.globalParams[key] && data.globalParams[key][j] ? data.globalParams[key][j] : def; } handleDataPointOver(event) { event.stopImmediatePropagation(); this.dataPointOver.emit(event.detail); } handleDataPointSelected(event) { event.stopImmediatePropagation(); this.dataPointSelected.emit(event.detail); } convert(data) { var _a; let options = Utils.mergeDeep(Object.assign(Object.assign({}, new Param()), { timeMode: 'date' }), this.options || {}); options = Utils.mergeDeep(options || {}, data.globalParams); this.options = Object.assign({}, options); this.params = data.params || []; let dataGrid; if (GTSLib.isArray(data.data)) { const dataList = GTSLib.flatDeep(data.data); (_a = this.LOG) === null || _a === void 0 ? void 0 : _a.debug(['convert', 'isArray'], dataList, options); if (data.data.length > 0 && GTSLib.isGts(dataList[0])) { dataGrid = this.parseData(data, dataList); } else { dataGrid = this.parseCustomData(data, dataList); } } else { dataGrid = this.parseCustomData(data, [data.data]); } this.parsing = false; return dataGrid; } parseCustomData(dataModel, data) { var _a; const flatData = []; data.forEach(d => { if (d !== null && d !== undefined) { const dataSet = { name: (d === null || d === void 0 ? void 0 : d.title) || '', values: (d === null || d === void 0 ? void 0 : d.rows) || [], headers: (d === null || d === void 0 ? void 0 : d.columns) || [], isGTS: false, params: (d === null || d === void 0 ? void 0 : d.params) || [], }; flatData.push(dataSet); } }); (_a = this.LOG) === null || _a === void 0 ? void 0 : _a.debug(['parseCustomData', 'flatData'], flatData, dataModel); return flatData; } parseData(dataModel, data) { var _a, _b; const flatData = []; (_a = this.LOG) === null || _a === void 0 ? void 0 : _a.debug(['parseData'], data); data.forEach((d, i) => { var _a, _b; const dataSet = { name: '', values: [], headers: [], isGTS: false, params: this.params }; if (GTSLib.isGts(d)) { (_a = this.LOG) === null || _a === void 0 ? void 0 : _a.debug(['parseData', 'isGts'], d); dataSet.name = ((dataModel.params || [])[i] || { key: undefined }).key || GTSLib.serializeGtsMetadata(d); dataSet.values = d.v; // .map(v => [this.formatDate(v[0])].concat(v.slice(1, v.length))); dataSet.isGTS = true; } else { (_b = this.LOG) === null || _b === void 0 ? void 0 : _b.debug(['parseData', 'is not a Gts'], d); dataSet.values = GTSLib.isArray(d) ? d : [d]; } dataSet.headers = [DiscoveryTabular.getHeaderParam(dataModel, i, 0, 'headers', 'Date')]; if (d.v && d.v.length > 0 && d.v[0].length > 2) { dataSet.headers.push(DiscoveryTabular.getHeaderParam(dataModel, i, 1, 'headers', 'Latitude')); } if (d.v && d.v.length > 0 && d.v[0].length > 3) { dataSet.headers.push(DiscoveryTabular.getHeaderParam(dataModel, i, 2, 'headers', 'Longitude')); } if (d.v && d.v.length > 0 && d.v[0].length > 4) { dataSet.headers.push(DiscoveryTabular.getHeaderParam(dataModel, i, 3, 'headers', 'Elevation')); } if (d.v && d.v.length > 0) { dataSet.headers.push(DiscoveryTabular.getHeaderParam(dataModel, i, d.v[0].length - 1, 'headers', 'Value')); } if (dataSet.values.length > 0) { flatData.push(dataSet); } }); (_b = this.LOG) === null || _b === void 0 ? void 0 : _b.debug(['parseData', 'flatData'], flatData, this.options); return flatData; } render() { this.draw.emit(); return h("div", { key: '7297bf88186f787500ea89da2274975a51445f05', class: "tabular-wrapper", ref: (el) => this.pngWrapper = el }, h("div", { key: 'ca7c692b57badc91df79e241c76c287e10fe672e', class: "tabular-wrapper-inner" }, this.parsing ? h("discovery-spinner", null, "Parsing data...") : '', this.rendering ? h("discovery-spinner", null, "Rendering data...") : '', this.tabularData.map(d => h("discovery-pageable", { data: d, onDataPointOver: event => this.handleDataPointOver(event), onDataPointSelected: event => this.handleDataPointSelected(event), divider: this.divider, options: this.options, debug: this.debug })))); } get el() { return this; } static get watchers() { return { "result": ["updateRes"] }; } static get style() { return DiscoveryTabularStyle0; } }, [1, "discovery-tabular", { "result": [1025], "type": [1], "options": [1025], "width": [1026], "height": [1026], "debug": [4], "unit": [1], "parsing": [32], "rendering": [32], "tabularData": [32], "resize": [64], "export": [64] }, undefined, { "result": ["updateRes"] }]); function defineCustomElement() { if (typeof customElements === "undefined") { return; } const components = ["discovery-tabular", "discovery-pageable", "discovery-spinner"]; components.forEach(tagName => { switch (tagName) { case "discovery-tabular": if (!customElements.get(tagName)) { customElements.define(tagName, DiscoveryTabular); } break; case "discovery-pageable": if (!customElements.get(tagName)) { defineCustomElement$2(); } break; case "discovery-spinner": if (!customElements.get(tagName)) { defineCustomElement$1(); } break; } }); } export { DiscoveryTabular as D, defineCustomElement as d }; //# sourceMappingURL=discovery-tabular2.js.map