@wcardinal/wcardinal-geditor
Version:
WebGL-based graphic editor, tester and viewer for supervisory systems
120 lines • 5.88 kB
JavaScript
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