UNPKG

@visactor/vtable

Version:

canvas table width high performance

85 lines (81 loc) 6.88 kB
import { Title as TitleComponents } from "./../../vrender"; import { getQuadProps } from "../../scenegraph/utils/padding"; import { isEqual, merge } from "@visactor/vutils"; export class Title { constructor(titleOption, table) { this.isReleased = !1, this.table = table, this._titleOption = merge({ orient: "top" }, titleOption), !1 !== titleOption.visible && (this._titleComponent = this._createOrUpdateTitleComponent(this._getTitleAttrs())); } _createOrUpdateTitleComponent(attrs) { if (this._titleComponent) isEqual(attrs, this._cacheAttrs) || this._titleComponent.setAttributes(attrs); else { const title = new TitleComponents(attrs); title.name = "title", this.table.scenegraph.stage.defaultLayer.appendChild(title), this._titleComponent = title; } return this._adjustTableSize(this._titleComponent.attribute), this._titleComponent; } resize() { var _a, _b, _c, _d, _e; if (!this._titleComponent) return; const padding = getQuadProps(null !== (_a = this._titleOption.padding) && void 0 !== _a ? _a : 10), realWidth = null !== (_b = this._titleOption.width) && void 0 !== _b ? _b : ("adaptive" === this.table.widthMode ? this.table.tableNoFrameWidth : Math.min(this.table.tableNoFrameWidth, this.table.getDrawRange().width)) - padding[1] - padding[3], realHeight = null !== (_c = this._titleOption.height) && void 0 !== _c ? _c : ("adaptive" === this.table.heightMode ? this.table.tableNoFrameHeight : Math.min(this.table.tableNoFrameHeight, this.table.getDrawRange().height)) - padding[0] - padding[2]; this._titleComponent.setAttributes({ x: (null !== (_d = this._titleOption.x) && void 0 !== _d ? _d : "right" === this._titleOption.orient) ? this.table.tableX + Math.min(this.table.tableNoFrameWidth, this.table.getDrawRange().width) : this.table.tableX, y: (null !== (_e = this._titleOption.y) && void 0 !== _e ? _e : "bottom" === this._titleOption.orient) ? this.table.tableY + this.table.tableNoFrameHeight : this.table.tableY, width: "top" === this._titleOption.orient || "bottom" === this._titleOption.orient ? realWidth : this._titleOption.width, height: "left" === this._titleOption.orient || "right" === this._titleOption.orient ? realHeight : this._titleOption.height, textStyle: Object.assign({ width: realWidth }, this._titleOption.textStyle), subtextStyle: Object.assign({ width: realWidth }, this._titleOption.subtextStyle) }), this._adjustTableSize(this._titleComponent.attribute); } _adjustTableSize(attrs) { var _a, _b, _c, _d; const width = isFinite(null === (_a = this._titleComponent) || void 0 === _a ? void 0 : _a.AABBBounds.width()) ? this._titleComponent.AABBBounds.width() : 0, height = isFinite(null === (_b = this._titleComponent) || void 0 === _b ? void 0 : _b.AABBBounds.height()) ? this._titleComponent.AABBBounds.height() : 0; "left" === this._titleOption.orient ? (this.table.tableNoFrameWidth = this.table.tableNoFrameWidth - Math.ceil(width), this.table.tableX += Math.ceil(width)) : "top" === this._titleOption.orient ? (this.table.tableNoFrameHeight = this.table.tableNoFrameHeight - Math.ceil(height), this.table.tableY += Math.ceil(height)) : "right" === this._titleOption.orient ? this.table.tableNoFrameWidth = this.table.tableNoFrameWidth - Math.ceil(width) : "bottom" === this._titleOption.orient && (this.table.tableNoFrameHeight = this.table.tableNoFrameHeight - Math.ceil(height)), this._cacheAttrs = attrs, "right" !== this._titleOption.orient && "bottom" !== this._titleOption.orient || this._titleComponent.setAttributes({ x: (null !== (_c = this._titleOption.x) && void 0 !== _c ? _c : "right" === this._titleOption.orient) ? this.table.tableX + this.table.tableNoFrameWidth : this.table.tableX, y: (null !== (_d = this._titleOption.y) && void 0 !== _d ? _d : "bottom" === this._titleOption.orient) ? this.table.tableY + this.table.tableNoFrameHeight : this.table.tableY }); } release() { this._titleComponent && this.table.scenegraph.stage.defaultLayer.removeChild(this._titleComponent), this._titleComponent = null, this.isReleased = !0; } _getTitleAttrs() { var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l; const defaultPadding = this._titleOption.text || this._titleOption.subtext ? 10 : 0, padding = getQuadProps(null !== (_a = this._titleOption.padding) && void 0 !== _a ? _a : defaultPadding), realWidth = null !== (_b = this._titleOption.width) && void 0 !== _b ? _b : Math.min(this.table.tableNoFrameWidth, this.table.getDrawRange().width) - padding[1] - padding[3], realHeight = null !== (_c = this._titleOption.height) && void 0 !== _c ? _c : Math.min(this.table.tableNoFrameHeight, this.table.getDrawRange().height) - padding[0] - padding[2]; return { text: null !== (_d = this._titleOption.text) && void 0 !== _d ? _d : "", subtext: null !== (_e = this._titleOption.subtext) && void 0 !== _e ? _e : "", x: (null !== (_f = this._titleOption.x) && void 0 !== _f ? _f : "right" === this._titleOption.orient) ? this.table.tableX + Math.min(this.table.tableNoFrameWidth, this.table.getDrawRange().width) : this.table.tableX, y: (null !== (_g = this._titleOption.y) && void 0 !== _g ? _g : "bottom" === this._titleOption.orient) ? this.table.tableY + this.table.tableNoFrameHeight : this.table.tableY, width: "top" === this._titleOption.orient || "bottom" === this._titleOption.orient ? realWidth : this._titleOption.width, height: "left" === this._titleOption.orient || "right" === this._titleOption.orient ? realHeight : this._titleOption.height, minWidth: this._titleOption.minWidth, maxWidth: this._titleOption.maxWidth, minHeight: this._titleOption.minHeight, maxHeight: this._titleOption.maxHeight, padding: this._titleOption.padding, align: null !== (_h = this._titleOption.align) && void 0 !== _h ? _h : "left", verticalAlign: null !== (_j = this._titleOption.verticalAlign) && void 0 !== _j ? _j : "top", textStyle: Object.assign({ width: realWidth }, this._titleOption.textStyle), subtextStyle: Object.assign({ width: realWidth }, this._titleOption.subtextStyle), dx: null !== (_k = this._titleOption.dx) && void 0 !== _k ? _k : 0, dy: null !== (_l = this._titleOption.dy) && void 0 !== _l ? _l : 0 }; } getComponentGraphic() { return this._titleComponent; } } //# sourceMappingURL=title.js.map