@sumaris-net/ngx-components 1.23.0-rc2 → 1.23.0-rc5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/sumaris-net.ngx-components.umd.js +76 -77
- package/bundles/sumaris-net.ngx-components.umd.js.map +1 -1
- package/bundles/sumaris-net.ngx-components.umd.min.js +2 -2
- package/bundles/sumaris-net.ngx-components.umd.min.js.map +1 -1
- package/esm2015/src/app/core/form/form-buttons-bar.component.js +2 -2
- package/esm2015/src/app/core/table/entities-table-datasource.class.js +20 -14
- package/esm2015/src/app/core/table/testing/table.testing.js +4 -4
- package/esm2015/src/app/shared/file/images.utils.js +2 -2
- package/esm2015/src/app/shared/services/memory-entity-service.class.js +39 -43
- package/fesm2015/sumaris-net.ngx-components.js +57 -57
- package/fesm2015/sumaris-net.ngx-components.js.map +1 -1
- package/package.json +1 -1
- package/src/app/core/table/entities-table-datasource.class.d.ts +8 -7
- package/src/app/shared/services/memory-entity-service.class.d.ts +2 -5
- package/src/theme/_ngx-components.scss +11 -0
- package/sumaris-net.ngx-components.metadata.json +1 -1
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
(function (global, factory) {
|
|
2
|
-
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('@angular/common'), require('@angular/cdk/table'), require('@angular/cdk/a11y'), require('@angular/cdk/overlay'), require('@angular/cdk/scrolling'), require('@angular/material/core'), require('@angular/material/table'), require('@angular/material/sort'), require('@angular/material/paginator'), require('@angular/material/form-field'), require('@angular/material/input'), require('@angular/material/checkbox'), require('@angular/material/expansion'), require('@angular/material/toolbar'), require('@angular/material/icon'), require('@angular/material/button'), require('@angular/material/menu'), require('@angular/material/select'), require('@angular/material/card'), require('@angular/material/tabs'), require('@angular/material/stepper'), require('@angular/material/list'), require('@angular/material/button-toggle'), require('@angular/material/progress-spinner'), require('@angular/material/progress-bar'), require('@angular/material/radio'), require('@angular/material/badge'), require('@angular/material/slide-toggle'), require('@angular/material/dialog'), require('@angular/material/autocomplete'), require('@angular/forms'), require('rxjs'), require('rxjs/operators'), require('@angular/animations'), require('@ngx-translate/core'), require('@ionic/angular'), require('moment'), require('@angular/material-moment-adapter'), require('@ionic-native/keyboard/ngx'), require('angular2-text-mask'), require('ngx-material-timepicker'), require('@angular/material/datepicker'), require('@angular/material/divider'), require('@angular/material/tooltip'), require('@angular/material/chips'), require('@angular/router'), require('@angular/platform-browser'), require('@angular/common/http'), require('ngx-color-picker'), require('@ionic-native/native-audio/ngx'), require('@ionic-native/vibration/ngx'), require('@ionic-native/audio-management/ngx'), require('@ionic-native/native-audio/ngx/index'), require('@ionic-native/vibration/ngx/index'), require('@ionic-native/audio-management/ngx/index'), require('uuid/v4'), require('
|
|
3
|
-
typeof define === 'function' && define.amd ? define('@sumaris-net/ngx-components', ['exports', '@angular/core', '@angular/common', '@angular/cdk/table', '@angular/cdk/a11y', '@angular/cdk/overlay', '@angular/cdk/scrolling', '@angular/material/core', '@angular/material/table', '@angular/material/sort', '@angular/material/paginator', '@angular/material/form-field', '@angular/material/input', '@angular/material/checkbox', '@angular/material/expansion', '@angular/material/toolbar', '@angular/material/icon', '@angular/material/button', '@angular/material/menu', '@angular/material/select', '@angular/material/card', '@angular/material/tabs', '@angular/material/stepper', '@angular/material/list', '@angular/material/button-toggle', '@angular/material/progress-spinner', '@angular/material/progress-bar', '@angular/material/radio', '@angular/material/badge', '@angular/material/slide-toggle', '@angular/material/dialog', '@angular/material/autocomplete', '@angular/forms', 'rxjs', 'rxjs/operators', '@angular/animations', '@ngx-translate/core', '@ionic/angular', 'moment', '@angular/material-moment-adapter', '@ionic-native/keyboard/ngx', 'angular2-text-mask', 'ngx-material-timepicker', '@angular/material/datepicker', '@angular/material/divider', '@angular/material/tooltip', '@angular/material/chips', '@angular/router', '@angular/platform-browser', '@angular/common/http', 'ngx-color-picker', '@ionic-native/native-audio/ngx', '@ionic-native/vibration/ngx', '@ionic-native/audio-management/ngx', '@ionic-native/native-audio/ngx/index', '@ionic-native/vibration/ngx/index', '@ionic-native/audio-management/ngx/index', 'uuid/v4', '
|
|
4
|
-
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory((global["sumaris-net"] = global["sumaris-net"] || {}, global["sumaris-net"]["ngx-components"] = {}), global.ng.core, global.ng.common, global.ng.cdk.table, global.ng.cdk.a11y, global.ng.cdk.overlay, global.ng.cdk.scrolling, global.ng.material.core, global.ng.material.table, global.ng.material.sort, global.ng.material.paginator, global.ng.material.formField, global.ng.material.input, global.ng.material.checkbox, global.ng.material.expansion, global.ng.material.toolbar, global.ng.material.icon, global.ng.material.button, global.ng.material.menu, global.ng.material.select, global.ng.material.card, global.ng.material.tabs, global.ng.material.stepper, global.ng.material.list, global.ng.material.buttonToggle, global.ng.material.progressSpinner, global.ng.material.progressBar, global.ng.material.radio, global.ng.material.badge, global.ng.material.slideToggle, global.ng.material.dialog, global.ng.material.autocomplete, global.ng.forms, global.rxjs, global.rxjs.operators, global.ng.animations, global["ngx-translate"].core, global.ionic.angular, global.moment, global.ng.materialMomentAdapter, global["ionic-native"].keyboard.ngx, global["angular2-text-mask"], global["ngx-material-timepicker"], global.ng.material.datepicker, global.ng.material.divider, global.ng.material.tooltip, global.ng.material.chips, global.ng.router, global.ng.platformBrowser, global.ng.common.http, global["ngx-color-picker"], global["ionic-native"]["native-audio"].ngx, global["ionic-native"].vibration.ngx, global["ionic-native"]["audio-management"].ngx, global["ionic-native"]["native-audio"].ngx.index, global["ionic-native"].vibration.ngx.index, global["ionic-native"]["audio-management"].ngx.index, global.uuid.v4, global.
|
|
5
|
-
})(this, (function (exports, i0, i1$4, table$1, a11y, overlay, scrolling, i1$3, table, sort$1, paginator, formField, input, checkbox, expansion, toolbar, icon, button, menu, select, card, tabs, stepper, list, buttonToggle, progressSpinner, progressBar, radio, badge, slideToggle, i2, autocomplete, i1, rxjs, operators, animations, i1$2, i1$5, momentImported, i1$1, ngx, angular2TextMask, ngxMaterialTimepicker, datepicker, divider, tooltip, chips, i3, i1$6, i2$1, ngxColorPicker, ngx$2, ngx$3, ngx$1, i2$2, i3$1, i4, uuidv4Imported,
|
|
2
|
+
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('@angular/common'), require('@angular/cdk/table'), require('@angular/cdk/a11y'), require('@angular/cdk/overlay'), require('@angular/cdk/scrolling'), require('@angular/material/core'), require('@angular/material/table'), require('@angular/material/sort'), require('@angular/material/paginator'), require('@angular/material/form-field'), require('@angular/material/input'), require('@angular/material/checkbox'), require('@angular/material/expansion'), require('@angular/material/toolbar'), require('@angular/material/icon'), require('@angular/material/button'), require('@angular/material/menu'), require('@angular/material/select'), require('@angular/material/card'), require('@angular/material/tabs'), require('@angular/material/stepper'), require('@angular/material/list'), require('@angular/material/button-toggle'), require('@angular/material/progress-spinner'), require('@angular/material/progress-bar'), require('@angular/material/radio'), require('@angular/material/badge'), require('@angular/material/slide-toggle'), require('@angular/material/dialog'), require('@angular/material/autocomplete'), require('@angular/forms'), require('rxjs'), require('rxjs/operators'), require('@angular/animations'), require('@ngx-translate/core'), require('@ionic/angular'), require('moment'), require('@angular/material-moment-adapter'), require('@ionic-native/keyboard/ngx'), require('angular2-text-mask'), require('ngx-material-timepicker'), require('@angular/material/datepicker'), require('@angular/material/divider'), require('@angular/material/tooltip'), require('@angular/material/chips'), require('@angular/router'), require('@angular/platform-browser'), require('@angular/common/http'), require('ngx-color-picker'), require('@ionic-native/native-audio/ngx'), require('@ionic-native/vibration/ngx'), require('@ionic-native/audio-management/ngx'), require('@ionic-native/native-audio/ngx/index'), require('@ionic-native/vibration/ngx/index'), require('@ionic-native/audio-management/ngx/index'), require('uuid/v4'), require('@angular/cdk/drag-drop'), require('ngx-markdown'), require('tweetnacl'), require('@ionic/storage'), require('zone.js/dist/zone-error'), require('@ionic-native/splash-screen/ngx'), require('@ionic-native/network/ngx'), require('ionic-cache'), require('ionic-cache/dist/cache.service'), require('@ionic-native/network/ngx/index'), require('@ionic-native/splash-screen/ngx/index'), require('@ionic-native/status-bar/ngx'), require('@angular/cdk/platform'), require('@ionic-native/in-app-browser/ngx'), require('@apollo/client/core'), require('apollo-angular'), require('@apollo/client/link/ws'), require('@apollo/client/utilities'), require('@apollo/client/link/retry'), require('apollo-link-queue'), require('apollo-link-serialize'), require('apollo-link-logger'), require('apollo-angular/http'), require('apollo3-cache-persist'), require('@ionic-native/downloader/ngx'), require('@ionic-native/status-bar/ngx/index'), require('@ionic-native/keyboard/ngx/index'), require('@ionic-native/in-app-browser/ngx/index'), require('@ionic-native/downloader/ngx/index'), require('@angular/cdk/text-field'), require('@e-is/ngx-material-table'), require('@angular/cdk/collections'), require('ngx-jdenticon'), require('tweetnacl-util'), require('scrypt-async'), require('hammerjs'), require('moment-timezone')) :
|
|
3
|
+
typeof define === 'function' && define.amd ? define('@sumaris-net/ngx-components', ['exports', '@angular/core', '@angular/common', '@angular/cdk/table', '@angular/cdk/a11y', '@angular/cdk/overlay', '@angular/cdk/scrolling', '@angular/material/core', '@angular/material/table', '@angular/material/sort', '@angular/material/paginator', '@angular/material/form-field', '@angular/material/input', '@angular/material/checkbox', '@angular/material/expansion', '@angular/material/toolbar', '@angular/material/icon', '@angular/material/button', '@angular/material/menu', '@angular/material/select', '@angular/material/card', '@angular/material/tabs', '@angular/material/stepper', '@angular/material/list', '@angular/material/button-toggle', '@angular/material/progress-spinner', '@angular/material/progress-bar', '@angular/material/radio', '@angular/material/badge', '@angular/material/slide-toggle', '@angular/material/dialog', '@angular/material/autocomplete', '@angular/forms', 'rxjs', 'rxjs/operators', '@angular/animations', '@ngx-translate/core', '@ionic/angular', 'moment', '@angular/material-moment-adapter', '@ionic-native/keyboard/ngx', 'angular2-text-mask', 'ngx-material-timepicker', '@angular/material/datepicker', '@angular/material/divider', '@angular/material/tooltip', '@angular/material/chips', '@angular/router', '@angular/platform-browser', '@angular/common/http', 'ngx-color-picker', '@ionic-native/native-audio/ngx', '@ionic-native/vibration/ngx', '@ionic-native/audio-management/ngx', '@ionic-native/native-audio/ngx/index', '@ionic-native/vibration/ngx/index', '@ionic-native/audio-management/ngx/index', 'uuid/v4', '@angular/cdk/drag-drop', 'ngx-markdown', 'tweetnacl', '@ionic/storage', 'zone.js/dist/zone-error', '@ionic-native/splash-screen/ngx', '@ionic-native/network/ngx', 'ionic-cache', 'ionic-cache/dist/cache.service', '@ionic-native/network/ngx/index', '@ionic-native/splash-screen/ngx/index', '@ionic-native/status-bar/ngx', '@angular/cdk/platform', '@ionic-native/in-app-browser/ngx', '@apollo/client/core', 'apollo-angular', '@apollo/client/link/ws', '@apollo/client/utilities', '@apollo/client/link/retry', 'apollo-link-queue', 'apollo-link-serialize', 'apollo-link-logger', 'apollo-angular/http', 'apollo3-cache-persist', '@ionic-native/downloader/ngx', '@ionic-native/status-bar/ngx/index', '@ionic-native/keyboard/ngx/index', '@ionic-native/in-app-browser/ngx/index', '@ionic-native/downloader/ngx/index', '@angular/cdk/text-field', '@e-is/ngx-material-table', '@angular/cdk/collections', 'ngx-jdenticon', 'tweetnacl-util', 'scrypt-async', 'hammerjs', 'moment-timezone'], factory) :
|
|
4
|
+
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory((global["sumaris-net"] = global["sumaris-net"] || {}, global["sumaris-net"]["ngx-components"] = {}), global.ng.core, global.ng.common, global.ng.cdk.table, global.ng.cdk.a11y, global.ng.cdk.overlay, global.ng.cdk.scrolling, global.ng.material.core, global.ng.material.table, global.ng.material.sort, global.ng.material.paginator, global.ng.material.formField, global.ng.material.input, global.ng.material.checkbox, global.ng.material.expansion, global.ng.material.toolbar, global.ng.material.icon, global.ng.material.button, global.ng.material.menu, global.ng.material.select, global.ng.material.card, global.ng.material.tabs, global.ng.material.stepper, global.ng.material.list, global.ng.material.buttonToggle, global.ng.material.progressSpinner, global.ng.material.progressBar, global.ng.material.radio, global.ng.material.badge, global.ng.material.slideToggle, global.ng.material.dialog, global.ng.material.autocomplete, global.ng.forms, global.rxjs, global.rxjs.operators, global.ng.animations, global["ngx-translate"].core, global.ionic.angular, global.moment, global.ng.materialMomentAdapter, global["ionic-native"].keyboard.ngx, global["angular2-text-mask"], global["ngx-material-timepicker"], global.ng.material.datepicker, global.ng.material.divider, global.ng.material.tooltip, global.ng.material.chips, global.ng.router, global.ng.platformBrowser, global.ng.common.http, global["ngx-color-picker"], global["ionic-native"]["native-audio"].ngx, global["ionic-native"].vibration.ngx, global["ionic-native"]["audio-management"].ngx, global["ionic-native"]["native-audio"].ngx.index, global["ionic-native"].vibration.ngx.index, global["ionic-native"]["audio-management"].ngx.index, global.uuid.v4, global.ng.cdk.dragDrop, global["ngx-markdown"], global.tweetnacl, global.ionic.storage, null, global["ionic-native"]["splash-screen"].ngx, global["ionic-native"].network.ngx, global["ionic-cache"], global["ionic-cache/dist/cache"].service, global["ionic-native"].network.ngx.index, global["ionic-native"]["splash-screen"].ngx.index, global["ionic-native"]["status-bar"].ngx, global.ng.cdk.platform, global["ionic-native"]["in-app-browser"].ngx, global.apollo.client.core, global["apollo-angular"], global.apollo.client.link.ws, global.apollo.client.utilities, global.apollo.client.link.retry, global["apollo-link-queue"], global["apollo-link-serialize"], global["apollo-link-logger"], global["apollo-angular"].http, global["apollo3-cache-persist"], global["ionic-native"].downloader.ngx, global["ionic-native"]["status-bar"].ngx.index, global["ionic-native"].keyboard.ngx.index, global["ionic-native"]["in-app-browser"].ngx.index, global["ionic-native"].downloader.ngx.index, global.ng.cdk.textField, global["e-is"]["ngx-material-table"], global.ng.cdk.collections, global["ngx-jdenticon"], null, null, null, global["moment-timezone"]));
|
|
5
|
+
})(this, (function (exports, i0, i1$4, table$1, a11y, overlay, scrolling, i1$3, table, sort$1, paginator, formField, input, checkbox, expansion, toolbar, icon, button, menu, select, card, tabs, stepper, list, buttonToggle, progressSpinner, progressBar, radio, badge, slideToggle, i2, autocomplete, i1, rxjs, operators, animations, i1$2, i1$5, momentImported, i1$1, ngx, angular2TextMask, ngxMaterialTimepicker, datepicker, divider, tooltip, chips, i3, i1$6, i2$1, ngxColorPicker, ngx$2, ngx$3, ngx$1, i2$2, i3$1, i4, uuidv4Imported, dragDrop, ngxMarkdown, tweetnacl, i3$2, zoneError, ngx$5, ngx$4, ionicCache, i6, i9, i10, ngx$7, i2$4, ngx$8, core, i2$3, ws, utilities, retry, QueueLink, SerializingLink, loggerLink, i3$3, apollo3CachePersist, ngx$6, i14, i15, i17, i18, textField, ngxMaterialTable, collections, ngxJdenticon, tweetnaclUtil, scryptAsync, hammerjs, momentTZImported) { 'use strict';
|
|
6
6
|
|
|
7
7
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
8
8
|
|
|
@@ -10690,7 +10690,7 @@
|
|
|
10690
10690
|
reader.readAsDataURL(file);
|
|
10691
10691
|
// Resize image, if need
|
|
10692
10692
|
if (opts) {
|
|
10693
|
-
return $progress.pipe(operators
|
|
10693
|
+
return $progress.pipe(operators.mergeMap(function (event) { return __awaiter(_this, void 0, void 0, function () {
|
|
10694
10694
|
var body;
|
|
10695
10695
|
return __generator(this, function (_a) {
|
|
10696
10696
|
switch (_a.label) {
|
|
@@ -20829,7 +20829,7 @@
|
|
|
20829
20829
|
_this.debug = false;
|
|
20830
20830
|
_this.dirty = false;
|
|
20831
20831
|
_this._saving = false;
|
|
20832
|
-
_this.
|
|
20832
|
+
_this.dataSubject = new rxjs.BehaviorSubject(null);
|
|
20833
20833
|
options = Object.assign({ onSort: _this.sort }, options);
|
|
20834
20834
|
_this._sortFn = options.onSort;
|
|
20835
20835
|
_this._onLoad = options.onLoad;
|
|
@@ -20850,7 +20850,7 @@
|
|
|
20850
20850
|
}
|
|
20851
20851
|
Object.defineProperty(InMemoryEntitiesService.prototype, "value", {
|
|
20852
20852
|
get: function () {
|
|
20853
|
-
return this.
|
|
20853
|
+
return this.dataSubject.getValue();
|
|
20854
20854
|
},
|
|
20855
20855
|
set: function (data) {
|
|
20856
20856
|
this.setValue(data);
|
|
@@ -20861,56 +20861,49 @@
|
|
|
20861
20861
|
InMemoryEntitiesService.prototype.ngOnDestroy = function () {
|
|
20862
20862
|
if (this.debug)
|
|
20863
20863
|
console.debug('[memory-data-service] Destroying...');
|
|
20864
|
-
this.
|
|
20865
|
-
this.
|
|
20864
|
+
this.dataSubject.complete();
|
|
20865
|
+
this.dataSubject.unsubscribe();
|
|
20866
20866
|
};
|
|
20867
|
-
InMemoryEntitiesService.prototype.setValue = function (data
|
|
20868
|
-
if (this.
|
|
20867
|
+
InMemoryEntitiesService.prototype.setValue = function (data) {
|
|
20868
|
+
if (this.dataSubject.value !== data) {
|
|
20869
20869
|
this._hiddenData = [];
|
|
20870
|
-
this.data
|
|
20871
|
-
// Send to observers
|
|
20872
|
-
if (!opts || opts.emitEvent !== false) {
|
|
20873
|
-
this._onChange.next(true);
|
|
20874
|
-
}
|
|
20870
|
+
this.dataSubject.next(data);
|
|
20875
20871
|
}
|
|
20876
20872
|
this.dirty = false;
|
|
20877
20873
|
};
|
|
20878
20874
|
InMemoryEntitiesService.prototype.loadAll = function (offset, size, sortBy, sortDirection, filter, opts) {
|
|
20879
20875
|
return __awaiter(this, void 0, void 0, function () {
|
|
20880
|
-
var excludedDataByFilter, excludedDataByPagination, data, total, res, nextOffset_1;
|
|
20876
|
+
var originalData, excludedDataByFilter, excludedDataByPagination, data, total, res, nextOffset_1;
|
|
20881
20877
|
var _this = this;
|
|
20882
20878
|
return __generator(this, function (_b) {
|
|
20883
20879
|
switch (_b.label) {
|
|
20884
20880
|
case 0:
|
|
20885
20881
|
offset = offset >= 0 ? offset : 0;
|
|
20886
20882
|
size = size >= 0 ? size : -1;
|
|
20887
|
-
|
|
20888
|
-
|
|
20889
|
-
|
|
20883
|
+
originalData = this.dataSubject.value;
|
|
20884
|
+
if (isNil(originalData)) {
|
|
20885
|
+
console.warn('[memory-data-service] Cannot load all: no value set. Will return empty result');
|
|
20886
|
+
}
|
|
20887
|
+
if (!this._saving) return [3 /*break*/, 2];
|
|
20888
|
+
return [4 /*yield*/, waitFor(function () { return !_this._saving; })];
|
|
20890
20889
|
case 1:
|
|
20891
20890
|
_b.sent();
|
|
20892
20891
|
_b.label = 2;
|
|
20893
20892
|
case 2:
|
|
20894
|
-
if (!this._saving) return [3 /*break*/, 4];
|
|
20895
|
-
return [4 /*yield*/, waitFor(function () { return !_this._saving; })];
|
|
20896
|
-
case 3:
|
|
20897
|
-
_b.sent();
|
|
20898
|
-
_b.label = 4;
|
|
20899
|
-
case 4:
|
|
20900
20893
|
excludedDataByFilter = [];
|
|
20901
|
-
_b.label =
|
|
20902
|
-
case
|
|
20903
|
-
_b.trys.push([
|
|
20904
|
-
if (
|
|
20894
|
+
_b.label = 3;
|
|
20895
|
+
case 3:
|
|
20896
|
+
_b.trys.push([3, , 6, 7]);
|
|
20897
|
+
if (isEmptyArray(originalData)) {
|
|
20905
20898
|
return [2 /*return*/, { data: [], total: 0 }];
|
|
20906
20899
|
}
|
|
20907
|
-
data = this._sortFn(
|
|
20908
|
-
if (!this._onLoad) return [3 /*break*/,
|
|
20900
|
+
data = this._sortFn(originalData, sortBy, sortDirection);
|
|
20901
|
+
if (!this._onLoad) return [3 /*break*/, 5];
|
|
20909
20902
|
return [4 /*yield*/, this._onLoad(data)];
|
|
20910
|
-
case
|
|
20903
|
+
case 4:
|
|
20911
20904
|
data = _b.sent();
|
|
20912
|
-
_b.label =
|
|
20913
|
-
case
|
|
20905
|
+
_b.label = 5;
|
|
20906
|
+
case 5:
|
|
20914
20907
|
// Apply filter (will update hiddenData)
|
|
20915
20908
|
data = this.filter(data, filter, excludedDataByFilter);
|
|
20916
20909
|
total = data.length;
|
|
@@ -20927,16 +20920,16 @@
|
|
|
20927
20920
|
data = [];
|
|
20928
20921
|
}
|
|
20929
20922
|
else {
|
|
20930
|
-
excludedDataByPagination = (size > 0 && ((offset + size) < data.length))
|
|
20923
|
+
excludedDataByPagination = (size > 0 && ((offset + size) < data.length))
|
|
20931
20924
|
// Slice using limit to size
|
|
20932
|
-
data.slice(0, offset - 1).concat(data.slice(offset + size))
|
|
20925
|
+
? data.slice(0, offset - 1).concat(data.slice(offset + size))
|
|
20933
20926
|
// Slice without limit
|
|
20934
|
-
data.slice(0, offset - 1);
|
|
20935
|
-
data = (size > 0 && ((offset + size) < data.length))
|
|
20927
|
+
: data.slice(0, offset - 1);
|
|
20928
|
+
data = (size > 0 && ((offset + size) < data.length))
|
|
20936
20929
|
// Slice using limit to size
|
|
20937
|
-
data.slice(offset, offset + size)
|
|
20930
|
+
? data.slice(offset, offset + size)
|
|
20938
20931
|
// Slice without limit
|
|
20939
|
-
data.slice(offset);
|
|
20932
|
+
: data.slice(offset);
|
|
20940
20933
|
}
|
|
20941
20934
|
}
|
|
20942
20935
|
// Apply a limit
|
|
@@ -20950,7 +20943,7 @@
|
|
|
20950
20943
|
}
|
|
20951
20944
|
// /!\ If already observed, then always create a copy of the original array
|
|
20952
20945
|
// Because datasource will only update if the array changed
|
|
20953
|
-
if (data ===
|
|
20946
|
+
if (data === originalData) {
|
|
20954
20947
|
data = data.slice();
|
|
20955
20948
|
}
|
|
20956
20949
|
res = { data: data, total: total };
|
|
@@ -20967,13 +20960,13 @@
|
|
|
20967
20960
|
}); };
|
|
20968
20961
|
}
|
|
20969
20962
|
return [2 /*return*/, res];
|
|
20970
|
-
case
|
|
20963
|
+
case 6:
|
|
20971
20964
|
// Remember hidden data
|
|
20972
20965
|
if (offset === 0) {
|
|
20973
20966
|
this._hiddenData = !excludedDataByPagination ? excludedDataByFilter : excludedDataByFilter.concat.apply(excludedDataByFilter, __spread(excludedDataByPagination));
|
|
20974
20967
|
}
|
|
20975
20968
|
return [7 /*endfinally*/];
|
|
20976
|
-
case
|
|
20969
|
+
case 7: return [2 /*return*/];
|
|
20977
20970
|
}
|
|
20978
20971
|
});
|
|
20979
20972
|
});
|
|
@@ -20982,11 +20975,10 @@
|
|
|
20982
20975
|
var _this = this;
|
|
20983
20976
|
offset = offset >= 0 ? offset : 0;
|
|
20984
20977
|
size = size >= 0 ? size : -1;
|
|
20985
|
-
|
|
20986
|
-
|
|
20987
|
-
|
|
20988
|
-
return
|
|
20989
|
-
.pipe(operators.filter(isNotNil), operators.mergeMap(function (_) { return _this.loadAll(offset, size, sortBy, sortDirection, filterData, options); }));
|
|
20978
|
+
return this.dataSubject
|
|
20979
|
+
.pipe(
|
|
20980
|
+
// Warn if waiting value to be set
|
|
20981
|
+
operators.tap(function (data) { return !data && console.warn('[memory-data-service] Waiting value to be set...'); }), operators.filter(isNotNil), operators.mergeMap(function (_) { return _this.loadAll(offset, size, sortBy, sortDirection, filterData, options); }));
|
|
20990
20982
|
};
|
|
20991
20983
|
InMemoryEntitiesService.prototype.saveAll = function (data, options) {
|
|
20992
20984
|
return __awaiter(this, void 0, void 0, function () {
|
|
@@ -20994,7 +20986,7 @@
|
|
|
20994
20986
|
return __generator(this, function (_c) {
|
|
20995
20987
|
switch (_c.label) {
|
|
20996
20988
|
case 0:
|
|
20997
|
-
if (!this.
|
|
20989
|
+
if (!this.dataSubject.value)
|
|
20998
20990
|
throw new Error('[memory-service] Could not save, because value not set');
|
|
20999
20991
|
this.markAsSaving();
|
|
21000
20992
|
_c.label = 1;
|
|
@@ -21017,9 +21009,9 @@
|
|
|
21017
21009
|
data = _b;
|
|
21018
21010
|
_c.label = 5;
|
|
21019
21011
|
case 5:
|
|
21020
|
-
this.data
|
|
21012
|
+
this.dataSubject.next(data);
|
|
21021
21013
|
this.dirty = true;
|
|
21022
|
-
return [2 /*return*/,
|
|
21014
|
+
return [2 /*return*/, data];
|
|
21023
21015
|
case 6:
|
|
21024
21016
|
this.markAsSaved();
|
|
21025
21017
|
return [7 /*endfinally*/];
|
|
@@ -21030,20 +21022,21 @@
|
|
|
21030
21022
|
};
|
|
21031
21023
|
InMemoryEntitiesService.prototype.deleteAll = function (dataToRemove, options) {
|
|
21032
21024
|
return __awaiter(this, void 0, void 0, function () {
|
|
21033
|
-
var updatedData, deleteCount;
|
|
21025
|
+
var data, updatedData, deleteCount;
|
|
21034
21026
|
var _this = this;
|
|
21035
21027
|
return __generator(this, function (_b) {
|
|
21036
|
-
|
|
21028
|
+
data = this.dataSubject.value;
|
|
21029
|
+
if (!data)
|
|
21037
21030
|
throw new Error('[memory-service] Could not delete, because value not set');
|
|
21038
|
-
updatedData =
|
|
21031
|
+
updatedData = data.filter(function (entity) {
|
|
21039
21032
|
var removed = dataToRemove.findIndex(function (entityToRemove) { return _this.equals(entityToRemove, entity); }) !== -1;
|
|
21040
21033
|
return !removed;
|
|
21041
21034
|
});
|
|
21042
|
-
deleteCount =
|
|
21035
|
+
deleteCount = data.length - updatedData.length;
|
|
21043
21036
|
if (deleteCount > 0) {
|
|
21044
|
-
|
|
21037
|
+
data = updatedData;
|
|
21045
21038
|
this.dirty = true;
|
|
21046
|
-
this.
|
|
21039
|
+
this.dataSubject.next(data);
|
|
21047
21040
|
}
|
|
21048
21041
|
return [2 /*return*/];
|
|
21049
21042
|
});
|
|
@@ -21073,7 +21066,7 @@
|
|
|
21073
21066
|
*/
|
|
21074
21067
|
get: function () {
|
|
21075
21068
|
var _a;
|
|
21076
|
-
return (((_a = this.
|
|
21069
|
+
return (((_a = this.dataSubject.value) === null || _a === void 0 ? void 0 : _a.length) || 0);
|
|
21077
21070
|
},
|
|
21078
21071
|
enumerable: false,
|
|
21079
21072
|
configurable: true
|
|
@@ -21104,9 +21097,8 @@
|
|
|
21104
21097
|
return data;
|
|
21105
21098
|
};
|
|
21106
21099
|
InMemoryEntitiesService.prototype.connect = function () {
|
|
21107
|
-
|
|
21108
|
-
|
|
21109
|
-
var data = _this.data || [];
|
|
21100
|
+
return this.dataSubject.pipe(operators.map(function (data) {
|
|
21101
|
+
data = data || [];
|
|
21110
21102
|
var total = data.length;
|
|
21111
21103
|
return { data: data, total: total };
|
|
21112
21104
|
}));
|
|
@@ -22903,7 +22895,7 @@
|
|
|
22903
22895
|
FormButtonsBarComponent.decorators = [
|
|
22904
22896
|
{ type: i0.Component, args: [{
|
|
22905
22897
|
selector: 'app-form-buttons-bar',
|
|
22906
|
-
template: "\n<ion-toolbar [class]=\"classList\">\n <ion-row class=\"ion-no-padding\" nowrap>\n <!-- show menu button -->\n <ion-col size=\"auto\" class=\"hidden-xs hidden-sm\">\n <ion-menu-toggle>\n <button\n mat-icon-button\n color=\"accent\"\n [title]=\"'COMMON.BTN_SHOW_MENU' | translate\"\n (click)=\"menu.toggleSplitPaneWhen()\">\n <mat-icon><span>»</span></mat-icon>\n </button>\n </ion-menu-toggle>\n </ion-col>\n\n <ion-col>\n <ng-content></ng-content>\n </ion-col>\n\n <ion-col size=\"auto\">\n\n <ng-content select=\"[slot=end]\"></ng-content>\n\n <!-- close (go back) -->\n <ion-button fill=\"clear\" color=\"dark\" (click)=\"onBack.emit($event)\"\n (keyup.enter)=\"onBack.emit($event)\"\n *ngIf=\"onBack.observers | isNotEmptyArray\">\n <ion-label translate>COMMON.BTN_CLOSE</ion-label>\n </ion-button>\n\n <!-- reload -->\n <ion-button fill=\"clear\" color=\"dark\" (click)=\"onCancel.emit($event)\"\n (keyup.enter)=\"onCancel.emit($event)\"\n [disabled]=\"disabledCancel\">\n <ion-icon slot=\"start\" name=\"refresh\"></ion-icon>\n <ion-label translate>COMMON.BTN_RESET</ion-label>\n </ion-button>\n\n <!-- next -->\n <ion-button fill=\"solid\" (click)=\"onNext.emit($event)\" (keyup.enter)=\"onNext.emit($event)\" *ngIf=\"onNext.observers | isNotEmptyArray\">\n <ion-label translate>COMMON.BTN_NEXT</ion-label>\n <ion-icon slot=\"end\" name=\"arrow-forward\"></ion-icon>\n </ion-button>\n\n <!-- save -->\n <ion-button [fill]=\"disabled ? 'clear' : 'solid'\"\n (click)=\"onSave.emit($event)\"\n (keyup.enter)=\"onSave.emit($event)\" color=\"danger\"\n [disabled]=\"disabled\">\n <ion-label [innerHTML]=\"'COMMON.BTN_SAVE_WITH_SHORTCUT'|translate\" [title]=\"'COMMON.BTN_SAVE_WITH_SHORTCUT_HELP'|translate\"></ion-label>\n </ion-button>\n </ion-col>\n </ion-row>\n</ion-toolbar>\n",
|
|
22898
|
+
template: "\n<ion-toolbar [class]=\"classList\">\n <ion-row class=\"ion-no-padding\" nowrap>\n <!-- show menu button -->\n <ion-col size=\"auto\" class=\"hidden-xs hidden-sm\">\n <ion-menu-toggle>\n <button\n mat-icon-button\n color=\"accent\"\n [title]=\"'COMMON.BTN_SHOW_MENU' | translate\"\n (click)=\"menu.toggleSplitPaneWhen()\">\n <mat-icon><span>»</span></mat-icon>\n </button>\n </ion-menu-toggle>\n </ion-col>\n\n <ion-col class=\"app-form-buttons-bar-content\">\n <ng-content></ng-content>\n </ion-col>\n\n <ion-col size=\"auto\">\n\n <ng-content select=\"[slot=end]\"></ng-content>\n\n <!-- close (go back) -->\n <ion-button fill=\"clear\" color=\"dark\" (click)=\"onBack.emit($event)\"\n (keyup.enter)=\"onBack.emit($event)\"\n *ngIf=\"onBack.observers | isNotEmptyArray\">\n <ion-label translate>COMMON.BTN_CLOSE</ion-label>\n </ion-button>\n\n <!-- reload -->\n <ion-button fill=\"clear\" color=\"dark\" (click)=\"onCancel.emit($event)\"\n (keyup.enter)=\"onCancel.emit($event)\"\n [disabled]=\"disabledCancel\">\n <ion-icon slot=\"start\" name=\"refresh\"></ion-icon>\n <ion-label translate>COMMON.BTN_RESET</ion-label>\n </ion-button>\n\n <!-- next -->\n <ion-button fill=\"solid\" (click)=\"onNext.emit($event)\" (keyup.enter)=\"onNext.emit($event)\" *ngIf=\"onNext.observers | isNotEmptyArray\">\n <ion-label translate>COMMON.BTN_NEXT</ion-label>\n <ion-icon slot=\"end\" name=\"arrow-forward\"></ion-icon>\n </ion-button>\n\n <!-- save -->\n <ion-button [fill]=\"disabled ? 'clear' : 'solid'\"\n (click)=\"onSave.emit($event)\"\n (keyup.enter)=\"onSave.emit($event)\" color=\"danger\"\n [disabled]=\"disabled\">\n <ion-label [innerHTML]=\"'COMMON.BTN_SAVE_WITH_SHORTCUT'|translate\" [title]=\"'COMMON.BTN_SAVE_WITH_SHORTCUT_HELP'|translate\"></ion-label>\n </ion-button>\n </ion-col>\n </ion-row>\n</ion-toolbar>\n",
|
|
22907
22899
|
providers: [
|
|
22908
22900
|
{ provide: FormButtonsBarToken, useExisting: FormButtonsBarComponent }
|
|
22909
22901
|
],
|
|
@@ -25825,8 +25817,9 @@
|
|
|
25825
25817
|
* @param config Additional configuration for table.
|
|
25826
25818
|
*/
|
|
25827
25819
|
function EntitiesTableDataSource(dataType, dataService, validatorService, options) {
|
|
25828
|
-
var _this = _super_1.call(this, [], dataType, validatorService, Object.assign({
|
|
25820
|
+
var _this = _super_1.call(this, [], dataType, validatorService, Object.assign({ keepOriginalDataAfterConfirm: false, readOnly: false, saveOnlyDirtyRows: false, dataServiceOptions: {} }, options)) || this;
|
|
25829
25821
|
_this.dataService = dataService;
|
|
25822
|
+
_this._debug = false;
|
|
25830
25823
|
_this._creating = false;
|
|
25831
25824
|
_this._saving = false;
|
|
25832
25825
|
_this._stopWatching$ = new rxjs.Subject();
|
|
@@ -25834,6 +25827,7 @@
|
|
|
25834
25827
|
_this._fetchMoreFn = null;
|
|
25835
25828
|
_this.loadingSubject = new rxjs.BehaviorSubject(undefined);
|
|
25836
25829
|
_this._entityName = removeEnd((new dataType()).__typename || 'UnknownVO', 'VO');
|
|
25830
|
+
_this._debug = (options === null || options === void 0 ? void 0 : options.suppressErrors) === false && !environment.production;
|
|
25837
25831
|
return _this;
|
|
25838
25832
|
}
|
|
25839
25833
|
Object.defineProperty(EntitiesTableDataSource.prototype, "serviceOptions", {
|
|
@@ -25911,8 +25905,8 @@
|
|
|
25911
25905
|
return __generator(this, function (_b) {
|
|
25912
25906
|
switch (_b.label) {
|
|
25913
25907
|
case 0:
|
|
25914
|
-
if (
|
|
25915
|
-
console.error('[table-datasource] Enable to save, because
|
|
25908
|
+
if (this.config.readOnly) {
|
|
25909
|
+
console.error('[table-datasource] Enable to save, because config.readOnly=true');
|
|
25916
25910
|
return [2 /*return*/, false];
|
|
25917
25911
|
}
|
|
25918
25912
|
// Saving twice (should never occur)
|
|
@@ -25922,18 +25916,18 @@
|
|
|
25922
25916
|
}
|
|
25923
25917
|
this._saving = true;
|
|
25924
25918
|
this.markAsLoading();
|
|
25925
|
-
onlyDirtyRows =
|
|
25919
|
+
onlyDirtyRows = this.config.saveOnlyDirtyRows;
|
|
25926
25920
|
_b.label = 1;
|
|
25927
25921
|
case 1:
|
|
25928
25922
|
_b.trys.push([1, 3, 4, 5]);
|
|
25929
|
-
if (this.
|
|
25930
|
-
console.debug("[table-datasource] Saving " + this._entityName + " rows... {
|
|
25923
|
+
if (this._debug)
|
|
25924
|
+
console.debug("[table-datasource] Saving " + this._entityName + " rows... {onlyDirtyRows: " + onlyDirtyRows + "}");
|
|
25931
25925
|
rows = this.getRows();
|
|
25932
25926
|
invalidRows = rows.filter(function (row) { return row.editing && !row.confirmEditCreate(); });
|
|
25933
25927
|
// Cannot finish some rows: error
|
|
25934
25928
|
if (invalidRows.length) {
|
|
25935
25929
|
// log errors
|
|
25936
|
-
if (this.
|
|
25930
|
+
if (this._debug)
|
|
25937
25931
|
invalidRows.forEach(function (row) { return AppTableUtils.logRowErrors(row, "[table-datasource] " + _this._entityName + " row #" + row.id); });
|
|
25938
25932
|
// Stop with an error
|
|
25939
25933
|
throw { code: ErrorCodes.TABLE_INVALID_ROW_ERROR, message: 'ERROR.TABLE_INVALID_ROW_ERROR' };
|
|
@@ -25961,23 +25955,23 @@
|
|
|
25961
25955
|
}
|
|
25962
25956
|
// If no data to save: exit
|
|
25963
25957
|
if (onlyDirtyRows && !dataToSave_1.length) {
|
|
25964
|
-
if (this.
|
|
25958
|
+
if (this._debug)
|
|
25965
25959
|
console.debug("[table-datasource] No " + this._entityName + " data to save. Skip");
|
|
25966
25960
|
return [2 /*return*/, false];
|
|
25967
25961
|
}
|
|
25968
|
-
if (this.
|
|
25962
|
+
if (this._debug)
|
|
25969
25963
|
console.debug("[table-datasource] Asking service to save this " + this._entityName + " data:", dataToSave_1);
|
|
25970
25964
|
return [4 /*yield*/, this.dataService.saveAll(dataToSave_1, this.serviceOptions)];
|
|
25971
25965
|
case 2:
|
|
25972
25966
|
_b.sent();
|
|
25973
|
-
if (this.
|
|
25967
|
+
if (this._debug)
|
|
25974
25968
|
console.debug("[table-datasource] Saving " + this._entityName + " data [OK]");
|
|
25975
25969
|
// LP 23/03/2021: update datasource is necessary but can be changed to a refetch() on QueryRef (must be created and registered in GraphqlService.watchQuery)
|
|
25976
25970
|
this.updateDatasource(data, { emitEvent: false });
|
|
25977
25971
|
return [2 /*return*/, true];
|
|
25978
25972
|
case 3:
|
|
25979
25973
|
error_1 = _b.sent();
|
|
25980
|
-
if (this.
|
|
25974
|
+
if (this._debug)
|
|
25981
25975
|
console.error('[table-datasource] Error while saving: ' + error_1 && error_1.message || error_1);
|
|
25982
25976
|
throw error_1;
|
|
25983
25977
|
case 4:
|
|
@@ -25990,7 +25984,7 @@
|
|
|
25990
25984
|
});
|
|
25991
25985
|
};
|
|
25992
25986
|
EntitiesTableDataSource.prototype.updateDatasource = function (data, opts) {
|
|
25993
|
-
if (this.
|
|
25987
|
+
if (this._debug)
|
|
25994
25988
|
console.debug("[table-datasource] Updating datasource with data:", data);
|
|
25995
25989
|
_super_1.prototype.updateDatasource.call(this, data, opts);
|
|
25996
25990
|
if (!opts || opts.emitEvent !== false) {
|
|
@@ -26122,6 +26116,9 @@
|
|
|
26122
26116
|
});
|
|
26123
26117
|
});
|
|
26124
26118
|
};
|
|
26119
|
+
EntitiesTableDataSource.prototype.getRow = function (id) {
|
|
26120
|
+
return _super_1.prototype.getRow.call(this, id);
|
|
26121
|
+
};
|
|
26125
26122
|
EntitiesTableDataSource.prototype.getRows = function () {
|
|
26126
26123
|
return this.rowsSubject.getValue();
|
|
26127
26124
|
};
|
|
@@ -33903,8 +33900,7 @@
|
|
|
33903
33900
|
if (isNil(this.data)) {
|
|
33904
33901
|
this.data = this.generateData(0, TableTestPage.maxRowCount);
|
|
33905
33902
|
}
|
|
33906
|
-
this.dataService.
|
|
33907
|
-
this.onRefresh.emit();
|
|
33903
|
+
this.dataService.value = this.data;
|
|
33908
33904
|
};
|
|
33909
33905
|
TableTestPage.prototype.fetchMore = function (event) {
|
|
33910
33906
|
return __awaiter(this, void 0, void 0, function () {
|
|
@@ -33917,9 +33913,12 @@
|
|
|
33917
33913
|
case 1:
|
|
33918
33914
|
fetched = _a.sent();
|
|
33919
33915
|
if (!(fetched && (event === null || event === void 0 ? void 0 : event.target) && event.target.complete)) return [3 /*break*/, 3];
|
|
33916
|
+
// Wait end of load
|
|
33920
33917
|
return [4 /*yield*/, this.waitIdle()];
|
|
33921
33918
|
case 2:
|
|
33919
|
+
// Wait end of load
|
|
33922
33920
|
_a.sent();
|
|
33921
|
+
// Mark target event as completed (e.g. IonRefresher)
|
|
33923
33922
|
event.target.complete();
|
|
33924
33923
|
_a.label = 3;
|
|
33925
33924
|
case 3: return [2 /*return*/];
|