@senx/discovery-plugin-marauder
Version:
Discovery plugin - Marauder's map
218 lines (214 loc) • 10.4 kB
JavaScript
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