ngx-mat-dynamic-table
Version:
Dynamic material table table.
72 lines • 8.83 kB
JavaScript
import { Injectable } from '@angular/core';
import { Observable } from 'rxjs';
import * as i0 from "@angular/core";
export class ColumnStorageService {
constructor() {
this.dbName = 'ngx-mat-dynamic-table';
this.storeName = 'columns';
this.version = 1; //versions start at 1
var request = indexedDB.open(this.dbName, this.version);
request.onerror = (event) => {
console.warn('IndexedDB not enabled.');
};
request.onupgradeneeded = (event) => {
this.db = request.result;
this.objectStore = this.db.createObjectStore(this.storeName, { keyPath: 'tableId' });
console.debug('ngx-mat-dynamic-table: create object store 👍');
};
request.onsuccess = (event) => {
this.db = request.result;
console.debug('ngx-mat-dynamic-table: db opened 👍' + this.db);
};
}
isDbOpen() {
return !!this.db;
}
save(doc) {
// Dont try to save if there is no db
if (!this.db)
return;
var request = this.db.transaction([this.storeName], 'readwrite')
.objectStore(this.storeName)
.put(doc);
request.onsuccess = (event) => {
// console.debug('Saved columns...');
};
}
read(tableId) {
return new Observable((observer) => {
var transaction = this.db.transaction([this.storeName]);
if (!transaction) {
observer.next(null);
observer.complete();
return;
}
var objectStore = transaction.objectStore(this.storeName);
var request = objectStore.get(tableId);
request.onerror = (event) => {
observer.error(new Error);
observer.complete();
};
request.onsuccess = (event) => {
if (request.result) {
observer.next(request.result);
observer.complete();
}
else {
// observer.error((e) => console.log(e));
observer.next(null);
observer.complete();
}
};
});
}
}
ColumnStorageService.ɵprov = i0.ɵɵdefineInjectable({ factory: function ColumnStorageService_Factory() { return new ColumnStorageService(); }, token: ColumnStorageService, providedIn: "root" });
ColumnStorageService.decorators = [
{ type: Injectable, args: [{
providedIn: 'root'
},] }
];
ColumnStorageService.ctorParameters = () => [];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLXN0b3JhZ2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbWF0LWR5bmFtaWMtdGFibGUvc3JjLyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudHMvc2VydmljZXMvY29sdW1uLXN0b3JhZ2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxVQUFVLEVBQVksTUFBTSxNQUFNLENBQUM7O0FBVTVDLE1BQU0sT0FBTyxvQkFBb0I7SUFTL0I7UUFQQSxXQUFNLEdBQUcsdUJBQXVCLENBQUE7UUFDaEMsY0FBUyxHQUFHLFNBQVMsQ0FBQTtRQUNyQixZQUFPLEdBQUcsQ0FBQyxDQUFBLENBQUMscUJBQXFCO1FBTS9CLElBQUksT0FBTyxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFeEQsT0FBTyxDQUFDLE9BQU8sR0FBRyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQzFCLE9BQU8sQ0FBQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsQ0FBQztRQUN6QyxDQUFDLENBQUM7UUFFRixPQUFPLENBQUMsZUFBZSxHQUFHLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDbEMsSUFBSSxDQUFDLEVBQUUsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7WUFDckYsT0FBTyxDQUFDLEtBQUssQ0FBQywrQ0FBK0MsQ0FBQyxDQUFDO1FBQ2pFLENBQUMsQ0FBQztRQUVGLE9BQU8sQ0FBQyxTQUFTLEdBQUcsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUM1QixJQUFJLENBQUMsRUFBRSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUM7WUFDekIsT0FBTyxDQUFDLEtBQUssQ0FBQyxxQ0FBcUMsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDakUsQ0FBQyxDQUFDO0lBRUosQ0FBQztJQUVNLFFBQVE7UUFDYixPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO0lBQ25CLENBQUM7SUFFRCxJQUFJLENBQUMsR0FBa0I7UUFDckIscUNBQXFDO1FBQ3JDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNWLE9BQU87UUFFVCxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxXQUFXLENBQUM7YUFDN0QsV0FBVyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7YUFDM0IsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRVosT0FBTyxDQUFDLFNBQVMsR0FBRyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQzVCLHFDQUFxQztRQUN2QyxDQUFDLENBQUM7SUFDSixDQUFDO0lBRUQsSUFBSSxDQUFDLE9BQWU7UUFDbEIsT0FBTyxJQUFJLFVBQVUsQ0FBQyxDQUFDLFFBQWlDLEVBQUUsRUFBRTtZQUMxRCxJQUFJLFdBQVcsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1lBQ3hELElBQUksQ0FBQyxXQUFXLEVBQUU7Z0JBQ2hCLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3BCLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDcEIsT0FBTzthQUNSO1lBQ0QsSUFBSSxXQUFXLEdBQUcsV0FBVyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDMUQsSUFBSSxPQUFPLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUV2QyxPQUFPLENBQUMsT0FBTyxHQUFHLENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQzFCLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQztnQkFDMUIsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3RCLENBQUMsQ0FBQztZQUVGLE9BQU8sQ0FBQyxTQUFTLEdBQUcsQ0FBQyxLQUFLLEVBQUUsRUFBRTtnQkFDNUIsSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFO29CQUNsQixRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztvQkFDOUIsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO2lCQUNyQjtxQkFBTTtvQkFDTCx5Q0FBeUM7b0JBQ3pDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ3BCLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztpQkFDckI7WUFDSCxDQUFDLENBQUM7UUFFSixDQUFDLENBQUMsQ0FBQTtJQUVKLENBQUM7Ozs7WUEvRUYsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgT2JzZXJ2ZXIgfSBmcm9tICdyeGpzJztcblxuZXhwb3J0IGludGVyZmFjZSBDb2x1bW5TdG9yYWdlIHtcbiAgdGFibGVJZDogc3RyaW5nO1xuICB2aXNpYmxlQ29sdW1uczogc3RyaW5nW107XG59XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIENvbHVtblN0b3JhZ2VTZXJ2aWNlIHtcblxuICBkYk5hbWUgPSAnbmd4LW1hdC1keW5hbWljLXRhYmxlJ1xuICBzdG9yZU5hbWUgPSAnY29sdW1ucydcbiAgdmVyc2lvbiA9IDEgLy92ZXJzaW9ucyBzdGFydCBhdCAxXG5cbiAgZGI7XG4gIG9iamVjdFN0b3JlO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHZhciByZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4odGhpcy5kYk5hbWUsIHRoaXMudmVyc2lvbik7XG5cbiAgICByZXF1ZXN0Lm9uZXJyb3IgPSAoZXZlbnQpID0+IHtcbiAgICAgIGNvbnNvbGUud2FybignSW5kZXhlZERCIG5vdCBlbmFibGVkLicpO1xuICAgIH07XG5cbiAgICByZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IChldmVudCkgPT4ge1xuICAgICAgdGhpcy5kYiA9IHJlcXVlc3QucmVzdWx0O1xuICAgICAgdGhpcy5vYmplY3RTdG9yZSA9IHRoaXMuZGIuY3JlYXRlT2JqZWN0U3RvcmUodGhpcy5zdG9yZU5hbWUsIHsga2V5UGF0aDogJ3RhYmxlSWQnIH0pO1xuICAgICAgY29uc29sZS5kZWJ1Zygnbmd4LW1hdC1keW5hbWljLXRhYmxlOiBjcmVhdGUgb2JqZWN0IHN0b3JlIPCfkY0nKTtcbiAgICB9O1xuXG4gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSAoZXZlbnQpID0+IHtcbiAgICAgIHRoaXMuZGIgPSByZXF1ZXN0LnJlc3VsdDtcbiAgICAgIGNvbnNvbGUuZGVidWcoJ25neC1tYXQtZHluYW1pYy10YWJsZTogZGIgb3BlbmVkIPCfkY0nICsgdGhpcy5kYik7XG4gICAgfTtcblxuICB9XG5cbiAgcHVibGljIGlzRGJPcGVuKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMuZGI7XG4gIH1cblxuICBzYXZlKGRvYzogQ29sdW1uU3RvcmFnZSk6IHZvaWQge1xuICAgIC8vIERvbnQgdHJ5IHRvIHNhdmUgaWYgdGhlcmUgaXMgbm8gZGJcbiAgICBpZiAoIXRoaXMuZGIpXG4gICAgICByZXR1cm47XG5cbiAgICB2YXIgcmVxdWVzdCA9IHRoaXMuZGIudHJhbnNhY3Rpb24oW3RoaXMuc3RvcmVOYW1lXSwgJ3JlYWR3cml0ZScpXG4gICAgICAub2JqZWN0U3RvcmUodGhpcy5zdG9yZU5hbWUpXG4gICAgICAucHV0KGRvYyk7XG5cbiAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IChldmVudCkgPT4ge1xuICAgICAgLy8gY29uc29sZS5kZWJ1ZygnU2F2ZWQgY29sdW1ucy4uLicpO1xuICAgIH07XG4gIH1cblxuICByZWFkKHRhYmxlSWQ6IHN0cmluZyk6IE9ic2VydmFibGU8Q29sdW1uU3RvcmFnZT4ge1xuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZSgob2JzZXJ2ZXI6IE9ic2VydmVyPENvbHVtblN0b3JhZ2U+KSA9PiB7XG4gICAgICB2YXIgdHJhbnNhY3Rpb24gPSB0aGlzLmRiLnRyYW5zYWN0aW9uKFt0aGlzLnN0b3JlTmFtZV0pO1xuICAgICAgaWYgKCF0cmFuc2FjdGlvbikge1xuICAgICAgICBvYnNlcnZlci5uZXh0KG51bGwpO1xuICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB2YXIgb2JqZWN0U3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSh0aGlzLnN0b3JlTmFtZSk7XG4gICAgICB2YXIgcmVxdWVzdCA9IG9iamVjdFN0b3JlLmdldCh0YWJsZUlkKTtcblxuICAgICAgcmVxdWVzdC5vbmVycm9yID0gKGV2ZW50KSA9PiB7XG4gICAgICAgIG9ic2VydmVyLmVycm9yKG5ldyBFcnJvcik7XG4gICAgICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XG4gICAgICB9O1xuXG4gICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IChldmVudCkgPT4ge1xuICAgICAgICBpZiAocmVxdWVzdC5yZXN1bHQpIHtcbiAgICAgICAgICBvYnNlcnZlci5uZXh0KHJlcXVlc3QucmVzdWx0KTtcbiAgICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIG9ic2VydmVyLmVycm9yKChlKSA9PiBjb25zb2xlLmxvZyhlKSk7XG4gICAgICAgICAgb2JzZXJ2ZXIubmV4dChudWxsKTtcbiAgICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgfSlcblxuICB9XG5cbn1cbiJdfQ==