UNPKG

@wcardinal/wcardinal-geditor

Version:

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

124 lines 4.11 kB
import { EShapeTableColumnValue } from "./e-shape-table-column-value"; var EShapeTableColumn = /** @class */ (function () { function EShapeTableColumn(onChange) { this.values = []; this._sizeX = 1; this._onChange = onChange; } EShapeTableColumn.prototype.add = function (value, at) { if (at != null) { this.values.splice(at, 0, value); } else { this.values.push(value); } this._onChange(); }; EShapeTableColumn.prototype.remove = function (index) { var values = this.values; if (0 <= index && index < values.length) { var result = values.splice(index, 1)[0]; this._onChange(); return result; } return null; }; EShapeTableColumn.prototype.indexOf = function (target) { var values = this.values; // Instance-based matching for (var i = 0, imax = values.length; i < imax; ++i) { var value = values[i]; if (value === target) { return i; } } // Data-based matching for (var i = 0, imax = values.length; i < imax; ++i) { var value = values[i]; if (value.isEquals(target)) { return i; } } return -1; }; EShapeTableColumn.prototype.get = function (index) { var result = this.values[index]; if (result != null) { return result; } return null; }; EShapeTableColumn.prototype.set = function (index, value) { this.values[index] = value; this._onChange(); }; EShapeTableColumn.prototype.swap = function (indexA, indexB) { var values = this.values; var tmp = values[indexB]; values[indexB] = values[indexA]; values[indexA] = tmp; this._onChange(); }; EShapeTableColumn.prototype.size = function () { return this.values.length; }; EShapeTableColumn.prototype.copy = function (source) { // Values var values = this.values; var sourceValues = source.values; var sourceValuesLength = sourceValues.length; for (var i = 0; i < sourceValuesLength; ++i) { values.push(sourceValues[i]); } if (values.length !== sourceValuesLength) { values.length = sourceValuesLength; } // this._sizeX = source._sizeX; this._onChange(); return this; }; EShapeTableColumn.prototype.serialize = function (manager) { var serialized = ""; var delimiter = "["; var values = this.values; for (var i = 0, imax = values.length; i < imax; ++i) { var value = values[i]; serialized += delimiter + value.serialize(manager); delimiter = ","; } serialized += "]"; return manager.addResource(serialized); }; EShapeTableColumn.prototype.deserialize = function (target, manager) { var resources = manager.resources; if (0 <= target && target < resources.length) { var parsed = manager.getExtension(target); if (parsed == null) { parsed = JSON.parse(resources[target]); manager.setExtension(target, parsed); } var isChanged = false; var values = this.values; if (0 < values.length) { values.length = 0; isChanged = true; } for (var i = 0, imax = parsed.length; i < imax; ++i) { var value = EShapeTableColumnValue.deserialize(parsed[i], manager); if (value != null) { values.push(value); } } if (0 < values.length) { isChanged = true; } if (isChanged) { this._onChange(); } } }; return EShapeTableColumn; }()); export { EShapeTableColumn }; //# sourceMappingURL=e-shape-table-column.js.map