UNPKG

@visactor/vtable

Version:

canvas table width high performance

75 lines (68 loc) 5.37 kB
"use strict"; var __decorate = this && this.__decorate || function(decorators, target, key, desc) { var d, c = arguments.length, r = c < 3 ? target : null === desc ? desc = Object.getOwnPropertyDescriptor(target, key) : desc; if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) (d = decorators[i]) && (r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r); return c > 3 && r && Object.defineProperty(target, key, r), r; }; Object.defineProperty(exports, "__esModule", { value: !0 }), exports.DefaultCanvasChartRender = exports.ChartRenderContribution = exports.ChartRender = void 0; const vrender_1 = require("./../../../vrender"), chart_1 = require("../chart"), chart_render_helper_1 = require("./chart-render-helper"), vutils_1 = require("@visactor/vutils"); exports.ChartRender = Symbol.for("ChartRender"), exports.ChartRenderContribution = Symbol.for("ChartRenderContribution"); let DefaultCanvasChartRender = class extends vrender_1.BaseRender { constructor() { super(...arguments), this.numberType = chart_1.CHART_NUMBER_TYPE; } drawShape(chart, context, x, y, drawContext, params, fillCb, strokeCb) { var _a, _b, _c, _d; const groupAttribute = (0, vrender_1.getTheme)(chart, null == params ? void 0 : params.theme).group, {dataId: dataId, data: data, spec: spec} = chart.attribute, {width: width = groupAttribute.width, height: height = groupAttribute.height} = (chart.getViewBox(), chart.attribute), {table: table} = chart.getRootNode(), {active: active, cacheCanvas: cacheCanvas, activeChartInstance: activeChartInstance} = chart; if (!active && cacheCanvas) (0, vutils_1.isArray)(cacheCanvas) ? cacheCanvas.forEach((singleCacheCanvas => { const {x: x, y: y, width: width, height: height, canvas: canvas} = singleCacheCanvas; context.drawImage(canvas, x, y, width, height); })) : context.drawImage(cacheCanvas, x, y, width, height); else if (activeChartInstance) { if (table.options.specFormat) { const formatResult = table.options.specFormat(chart.attribute.spec, activeChartInstance, chart); if (formatResult.needFormatSpec && formatResult.spec) { const spec = formatResult.spec; activeChartInstance.updateSpecSync(spec); } } const viewBox = chart.getViewBox(); activeChartInstance.updateViewBox({ x1: 0, x2: viewBox.x2 - viewBox.x1, y1: 0, y2: viewBox.y2 - viewBox.y1 }, !1, !1); const chartStage = activeChartInstance.getStage(); chartStage.needRender = !0; const matrix = chart.globalTransMatrix.clone(), stageMatrix = chart.stage.window.getViewBoxTransform().clone(); if (stageMatrix.multiply(matrix.a, matrix.b, matrix.c, matrix.d, matrix.e, matrix.f), chartStage.window.setViewBoxTransform(stageMatrix.a, stageMatrix.b, stageMatrix.c, stageMatrix.d, stageMatrix.e, stageMatrix.f), "string" == typeof dataId) activeChartInstance.updateDataSync(dataId, null != data ? data : []); else { const dataBatch = []; for (const dataIdStr in dataId) { const dataIdAndField = dataId[dataIdStr], series = spec.series.find((item => { var _a; return (null === (_a = null == item ? void 0 : item.data) || void 0 === _a ? void 0 : _a.id) === dataIdStr; })); dataBatch.push({ id: dataIdStr, values: dataIdAndField ? null !== (_a = null == data ? void 0 : data.filter((item => item.hasOwnProperty(dataIdAndField)))) && void 0 !== _a ? _a : [] : null != data ? data : [], fields: null === (_b = null == series ? void 0 : series.data) || void 0 === _b ? void 0 : _b.fields }), activeChartInstance.updateFullDataSync || activeChartInstance.updateDataSync(dataIdStr, dataIdAndField ? null !== (_c = null == data ? void 0 : data.filter((item => item.hasOwnProperty(dataIdAndField)))) && void 0 !== _c ? _c : [] : null != data ? data : []); } null === (_d = activeChartInstance.updateFullDataSync) || void 0 === _d || _d.call(activeChartInstance, dataBatch); } } else table.internalProps.renderChartAsync ? (-1 === chart_render_helper_1.chartRenderKeys.indexOf(`${chart.parent.col}+${chart.parent.row}`) && (chart_render_helper_1.chartRenderKeys.push(`${chart.parent.col}+${chart.parent.row}`), chart_render_helper_1.chartRenderQueueList.push(chart)), (0, chart_render_helper_1.IsHandlingChartQueue)() || (0, chart_render_helper_1.startRenderChartQueue)(table)) : (0, chart_render_helper_1.renderChart)(chart); } draw(chart, renderService, drawContext, params) { this._draw(chart, {}, !1, drawContext, params); } }; DefaultCanvasChartRender = __decorate([ (0, vrender_1.injectable)() ], DefaultCanvasChartRender), exports.DefaultCanvasChartRender = DefaultCanvasChartRender; //# sourceMappingURL=chart-render.js.map