UNPKG

@wcardinal/wcardinal-geditor

Version:

WebGL-based graphic editor, tester and viewer for supervisory systems

120 lines 5.88 kB
import { createGroupUploaded, deserializeBase, DThemes, EShapeCapability, EShapeDefaults, EShapeGroupShadowed, EShapeRectangle, EShapeResourceManagerDeserializationMode, EShapeStrokeSide, EShapeTextAlignHorizontal, UtilRgb } from "@wcardinal/wcardinal-ui"; import { EShapeTable } from "./e-shape-table"; import { EShapeTableBody } from "./e-shape-table-body"; import { EShapeTableColumnValue, EShapeTableColumnValueType } from "./e-shape-table-column-value"; import { EShapeTableColumnValueBody } from "./e-shape-table-column-value-body"; import { EShapeTableColumnValueHeader } from "./e-shape-table-column-value-header"; import { EShapeTableHeader } from "./e-shape-table-header"; import { EShapeExtensions } from "../e-shape-extensions"; import { EShapeTableIds } from "./e-shape-table-ids"; import { EEditorShapeTable } from "./e-editor-shape-table"; import { EShapeTableRuntime } from "./e-shape-table-runtime"; import { EShapeTableHeaderRuntime } from "./e-shape-table-header-runtime"; import { EShapeTableBodyRuntime } from "./e-shape-table-body-runtime"; var EShapeTables = /** @class */ (function () { function EShapeTables() { } EShapeTables.getTheme = function () { return DThemes.get("EShapeTable"); }; EShapeTables.create = function (existing) { var mode = EShapeResourceManagerDeserializationMode.EDITOR; var result = new EShapeTable(mode); var header = new EShapeTableHeader(mode).attach(result); var headerCell = new EShapeRectangle().attach(header); headerCell.stroke.side = EShapeStrokeSide.BOTTOM; headerCell.stroke.width = 1; headerCell.stroke.color = UtilRgb.brighten(EShapeDefaults.STROKE_COLOR, 0.65); var body = new EShapeTableBody(mode).attach(result); body.state.isFocusable = true; body.interactive = true; var even = new EShapeGroupShadowed(mode).attach(body); var odd = new EShapeGroupShadowed(mode).attach(body); var cellEven = new EShapeRectangle().attach(even); cellEven.stroke.enable = false; cellEven.text.value = "-"; cellEven.text.clipping = true; var cellOdd = new EShapeRectangle().attach(odd); cellOdd.fill.color = UtilRgb.darken(EShapeDefaults.FILL_COLOR, 0.05); cellOdd.stroke.enable = false; cellOdd.text.value = "-"; cellOdd.text.clipping = true; result.column.add(new EShapeTableColumnValue(1, EShapeTableColumnValueType.TEXT, "", "", "", EShapeTextAlignHorizontal.CENTER, new EShapeTableColumnValueHeader(this.getTheme().newHeaderLabel()), new EShapeTableColumnValueBody())); if (existing) { result.copy(existing); } result.onSizeChange(); return result; }; EShapeTables.load = function () { var theme = this.getTheme(); var name = theme.getName(); EShapeExtensions.add({ type: EShapeTableIds.ID, name: name, icon: { width: 24, height: 24, // Material Icons https://material.io/tools/icons/ // Available under Apache license version 2.0 svg: "<g transform=\"scale(26.6666)\" fill=\"#fff\" stroke=\"none\">" + "<path d=\"M20 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h15c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 2v3H5V5h15z" + "m-5 14h-5v-9h5v9zM5 10h3v9H5v-9zm12 9v-9h3v9h-3z\"/>" + "</g>" }, title: name, creator: function (existing) { return EShapeTables.create(existing); }, deserializer: function (item, manager) { return EShapeTables.deserialize(item, manager); }, editor: EEditorShapeTable, runtime: EShapeTableRuntime, uploaded: createGroupUploaded }); EShapeExtensions.add({ type: EShapeTableIds.HEADER_ID, name: theme.getHeaderName(), deserializer: function (item, manager) { return EShapeTables.deserializeHeader(item, manager); }, runtime: EShapeTableHeaderRuntime, capability: EShapeCapability.PRIMITIVE & ~EShapeCapability.CHILDREN }); EShapeExtensions.add({ type: EShapeTableIds.BODY_ID, name: theme.getBodyName(), deserializer: function (item, manager) { return EShapeTables.deserializeBody(item, manager); }, runtime: EShapeTableBodyRuntime, capability: EShapeCapability.PRIMITIVE & ~EShapeCapability.CHILDREN }); }; EShapeTables.deserialize = function (item, manager) { var shape = new EShapeTable(manager.mode); var index = item[15]; var resources = manager.resources; if (0 <= index && index < resources.length) { var parsed = manager.getExtension(index); if (parsed == null) { parsed = JSON.parse(resources[index]); manager.setExtension(index, parsed); } shape.column.deserialize(parsed[0], manager); shape.row.deserialize(parsed[1], manager); item[15] = parsed[parsed.length - 1]; } var result = deserializeBase(item, manager, shape); shape.size.init(); return result; }; EShapeTables.deserializeHeader = function (item, manager) { var shape = new EShapeTableHeader(manager.mode); var result = deserializeBase(item, manager, shape); shape.size.init(); return result; }; EShapeTables.deserializeBody = function (item, manager) { var shape = new EShapeTableBody(manager.mode); var result = deserializeBase(item, manager, shape); shape.size.init(); return result; }; return EShapeTables; }()); export { EShapeTables }; //# sourceMappingURL=e-shape-tables.js.map