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