core-cde
Version:
143 lines • 4.73 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.DataTableRemovedArg = exports.DataTableAddedArg = exports.DataTableCollection = void 0;
const tslib_1 = require("tslib");
const Events_module_1 = require("../../events/Events.module");
const Linq_1 = (0, tslib_1.__importDefault)(require("typescript-dotnet-commonjs/System.Linq/Linq"));
const List_1 = (0, tslib_1.__importDefault)(require("typescript-dotnet-commonjs/System/Collections/List"));
const Data_module_1 = require("../Data.module");
class DataTableCollection {
constructor() {
this._list = new List_1.default();
this._onDataTableAdded = new Events_module_1.EventDispatcher();
this._onDataTableRemoved = new Events_module_1.EventDispatcher();
}
get onDataTableAdded() {
return this._onDataTableAdded;
}
get onDataTableRemoved() {
return this._onDataTableRemoved;
}
static fromJSON(json) {
if (typeof json === 'string') {
return DataTableCollection.fromJSON(JSON.parse(json));
}
else {
const obj = JSON.parse(json.tabItems);
const collections = new DataTableCollection();
const realTabs = [];
obj.forEach(t => {
const tab = Data_module_1.DataTable.createNew(null, t.uniqueName);
realTabs.push(tab);
});
const assign = Object.assign(collections, null, {
_list: new List_1.default(realTabs)
});
return assign;
}
}
toJSON() {
return Object.assign({}, null, {
tabItems: JSON.stringify(this._list.toArray())
});
}
set(index, value) {
return this._list.set(index, value);
}
insert(index, value) {
this._list.insert(index, value);
this.raiseOnDataTableAdded(value);
}
removeAt(index) {
const table = this._list.get(index);
let res = false;
if (typeof table !== 'undefined') {
res = this._list.remove(table) > 0;
this.raiseOnDataTableRemoved(table);
}
return res;
}
add(entry) {
this.checkTableNameAndThrow(entry);
this._list.add(entry);
this.raiseOnDataTableAdded(entry);
return this;
}
remove(entry, max) {
const res = this._list.remove(entry, max);
this.raiseOnDataTableRemoved(entry);
return res;
}
clear() {
return this._list.clear();
}
importEntries(entries) {
return this._list.importEntries(entries);
}
toArray() {
return this._list.toArray();
}
get count() {
return this._list.count;
}
get isReadOnly() {
return false;
}
contains(entry) {
return this._list.contains(entry);
}
copyTo(target, index) {
return this._list.copyTo(target, index);
}
getEnumerator() {
return this._list.getEnumerator();
}
get(index) {
return this._list.get(index);
}
indexOf(item) {
return this._list.indexOf(item);
}
/**
* Возвращает таблицу из коллекции по имению Если не найдено - возвращается undefined
*/
findByName(name) {
const e = (0, Linq_1.default)(this._list);
const res = e.where(t => t.uniqueName === name).firstOrDefault();
return res;
}
// ==== PRIVATE ====
raiseOnDataTableAdded(table) {
this._onDataTableAdded.dispatch(new DataTableAddedArg(table));
}
raiseOnDataTableRemoved(table) {
this._onDataTableRemoved.dispatch(new DataTableRemovedArg(table));
}
checkTableNameAndThrow(table) {
try {
const e = (0, Linq_1.default)(this._list);
const tables = e.where(t => t.uniqueName === table.uniqueName).firstOrDefault();
if (typeof tables === 'undefined') {
return;
}
}
catch (e) {
console.error(e);
}
throw new Error(`Таблица с именем ${table.uniqueName} уже существует`);
}
}
exports.DataTableCollection = DataTableCollection;
class DataTableAddedArg {
constructor(newTable) {
this.newTable = newTable;
}
}
exports.DataTableAddedArg = DataTableAddedArg;
class DataTableRemovedArg {
constructor(oldTable) {
this.oldTable = oldTable;
}
}
exports.DataTableRemovedArg = DataTableRemovedArg;
//# sourceMappingURL=DataTableCollection.js.map