UNPKG

mthb-offscreen-canvas-table-worker

Version:
198 lines 8.82 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const CanvasTableColum_1 = require("../../share/CanvasTableColum"); exports.Align = CanvasTableColum_1.Align; exports.Sort = CanvasTableColum_1.Sort; const CanvasTableEditAction_1 = require("../../share/CanvasTableEditAction"); const CanvasTableMode_1 = require("../../share/CanvasTableMode"); exports.CanvasTableMode = CanvasTableMode_1.CanvasTableMode; const CustomCanvasTable_1 = require("../../share/CustomCanvasTable"); exports.CustomCanvasTable = CustomCanvasTable_1.CustomCanvasTable; const OffscreenCanvasTableMessage_1 = require("../../share/OffscreenCanvasTableMessage"); const ScrollView_1 = require("../../share/ScrollView"); class OffscreenCanvasTableWorker extends CustomCanvasTable_1.CustomCanvasTable { constructor(offscreenCanvasTableId, col, config) { super(config); this.id = offscreenCanvasTableId; this.updateColumns(col); } updateColumns(col) { super.updateColumns(col); const data = { mthbCanvasTable: this.id, type: OffscreenCanvasTableMessage_1.OffscreenCanvasMesssageType.removeUpdateForEdit, }; postMessage(data); this.hasUpdateForEdit = undefined; } message(data) { if (data.mthbCanvasTable !== this.id) { return; } switch (data.type) { case OffscreenCanvasTableMessage_1.OffscreenCanvasMesssageType.create: this.canvas = data.offscreen; this.setR(data.r); const context = this.canvas.getContext("2d"); if (context === null) { return; } this.scrollView = new ScrollView_1.ScrollView(context, this, this.config ? this.config.scrollView : undefined, this.askForExtentedMouseMoveAndMaouseUp, this.askForNormalMouseMoveAndMaouseUp, this.scrollViewChange); this.context = context; this.doReize(data.width, data.height); this.askForReDraw(); break; case OffscreenCanvasTableMessage_1.OffscreenCanvasMesssageType.resize: this.setR(data.r); this.doReize(data.width, data.height); this.askForReDraw(); break; case OffscreenCanvasTableMessage_1.OffscreenCanvasMesssageType.collapseAll: this.collapseAll(); break; case OffscreenCanvasTableMessage_1.OffscreenCanvasMesssageType.expendAll: this.expendAll(); break; case OffscreenCanvasTableMessage_1.OffscreenCanvasMesssageType.setGroupBy: this.setGroupBy(data.groupBy); break; case OffscreenCanvasTableMessage_1.OffscreenCanvasMesssageType.focus: this.setIsFocus(data.focus); break; case OffscreenCanvasTableMessage_1.OffscreenCanvasMesssageType.scroll: this.wheel(data.deltaMode, data.deltaX, data.deltaY); break; case OffscreenCanvasTableMessage_1.OffscreenCanvasMesssageType.mouseDown: this.mouseDown(data.x, data.y); break; case OffscreenCanvasTableMessage_1.OffscreenCanvasMesssageType.mouseMove: this.mouseMove(data.x, data.y); break; case OffscreenCanvasTableMessage_1.OffscreenCanvasMesssageType.mouseUp: this.mouseUp(data.x, data.y); break; case OffscreenCanvasTableMessage_1.OffscreenCanvasMesssageType.mouseDblClick: this.dblClick(data.x, data.y); break; case OffscreenCanvasTableMessage_1.OffscreenCanvasMesssageType.mouseMoveExtended: this.mouseMoveExtended(data.x, data.y); break; case OffscreenCanvasTableMessage_1.OffscreenCanvasMesssageType.mouseUpExtended: this.mouseUpExtended(data.x, data.y); break; case OffscreenCanvasTableMessage_1.OffscreenCanvasMesssageType.mouseLeave: this.mouseLeave(); break; case OffscreenCanvasTableMessage_1.OffscreenCanvasMesssageType.touchStart: this.TouchStart(data.event, data.offsetLeft, data.offsetTop); break; case OffscreenCanvasTableMessage_1.OffscreenCanvasMesssageType.touchMove: this.TouchMove(data.event, data.offsetLeft, data.offsetTop); break; case OffscreenCanvasTableMessage_1.OffscreenCanvasMesssageType.touchEnd: this.TouchEnd(data.event, data.offsetLeft, data.offsetTop); break; case OffscreenCanvasTableMessage_1.OffscreenCanvasMesssageType.keyDown: this.keydown(data.keycode); break; case OffscreenCanvasTableMessage_1.OffscreenCanvasMesssageType.onEditRemoveUpdateForEdit: this.onEditRemoveUpdateForEdit(data.action, data.cancel, data.col, data.newData, data.row); break; } } resize() { /** */ } drawCanvas() { if (this.context === undefined || this.dataIndex === undefined) { this.requestAnimationFrame = undefined; this.askForReDraw(this.drawconf); return; } super.drawCanvas(); } scrollViewChange() { if (this.hasUpdateForEdit) { const rect = this.calcRect(this.hasUpdateForEdit.col, this.hasUpdateForEdit.row); if (!rect) { return; } const data = { mthbCanvasTable: this.id, rect, type: OffscreenCanvasTableMessage_1.OffscreenCanvasMesssageType.locationForEdit, }; postMessage(data); } } updateForEdit(col, row) { const rect = this.calcRect(col, row); if (!rect) { return; } const value = this.getUpdateDataOrData(row, col.field); const data = { cellHeight: this.cellHeight, col, mthbCanvasTable: this.id, rect, row, type: OffscreenCanvasTableMessage_1.OffscreenCanvasMesssageType.updateForEdit, value, }; postMessage(data); this.hasUpdateForEdit = { col, row }; } setCanvasSize(width, height) { if (this.canvas === undefined) { return; } this.canvas.width = width; this.canvas.height = height; super.setCanvasSize(width, height); } setCursor(cursor) { const data = { cursor, mthbCanvasTable: this.id, type: OffscreenCanvasTableMessage_1.OffscreenCanvasMesssageType.setCursor }; postMessage(data); } askForExtentedMouseMoveAndMaouseUp() { const data = { mthbCanvasTable: this.id, type: OffscreenCanvasTableMessage_1.OffscreenCanvasMesssageType.askForExtentedMouseMoveAndMaouseUp }; postMessage(data); } askForNormalMouseMoveAndMaouseUp() { const data = { mthbCanvasTable: this.id, type: OffscreenCanvasTableMessage_1.OffscreenCanvasMesssageType.askForNormalMouseMoveAndMaouseUp }; postMessage(data); } onEditRemoveUpdateForEdit(action, cancel, col, newData, row) { this.hasUpdateForEdit = undefined; if (cancel || col === undefined || row === undefined) { return; } if (String(this.getUpdateDataOrData(row, col.field)) !== String(newData)) { this.setUpdateData(row, col.field, newData); this.reCalcIndexIfNeed(col.field); this.askForReDraw(); } if (action !== undefined) { switch (action) { case CanvasTableEditAction_1.CanvasTableEditAction.moveNext: if (this.column.length > col.index + 1) { const column = this.column[col.index + 1]; this.updateForEdit(column, row); } break; case CanvasTableEditAction_1.CanvasTableEditAction.movePrev: if (0 < col.index) { const column = this.column[col.index - 1]; this.updateForEdit(column, row); } break; } } } } exports.OffscreenCanvasTableWorker = OffscreenCanvasTableWorker; //# sourceMappingURL=OffscreenCanvasTableWorker.js.map