UNPKG

core-cde

Version:

143 lines 4.73 kB
"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