@sumaris-net/ngx-components 1.23.16 → 1.23.18
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 +505 -252
- package/bundles/sumaris-net.ngx-components.umd.js.map +1 -1
- package/bundles/sumaris-net.ngx-components.umd.min.js +1 -1
- package/bundles/sumaris-net.ngx-components.umd.min.js.map +1 -1
- package/esm2015/public_api.js +3 -2
- package/esm2015/src/app/core/services/network.service.js +17 -25
- package/esm2015/src/app/core/table/entities-table-datasource.class.js +46 -30
- package/esm2015/src/app/core/table/table.class.js +2 -5
- package/esm2015/src/app/core/table/testing/table.testing.js +2 -2
- package/esm2015/src/app/shared/services/memory-entity-service.class.js +49 -29
- package/esm2015/src/app/shared/services/startable-observable-service.class.js +122 -0
- package/esm2015/src/app/shared/services/startable-service.class.js +23 -21
- package/esm2015/src/app/social/job/job.module.js +4 -4
- package/esm2015/src/app/social/job/job.service.js +24 -12
- package/esm2015/src/app/social/job/progression/job-progression.icon.js +208 -0
- package/esm2015/src/app/social/job/testing/job-progression.testing.js +27 -26
- package/esm2015/src/app/social/job/testing/job-progression.testing.service.js +24 -2
- package/esm2015/src/app/social/social.module.js +1 -1
- package/esm2015/src/app/social/user-event/notification/user-event-notification.icon.js +26 -15
- package/esm2015/src/app/social/user-event/notification/user-event-notification.list.js +3 -3
- package/esm2015/src/app/social/user-event/testing/user-event.testing.js +3 -3
- package/esm2015/src/app/social/user-event/user-event.module.js +4 -4
- package/esm2015/src/app/social/user-event/user-event.service.js +2 -2
- package/esm2015/sumaris-net.ngx-components.js +10 -10
- package/fesm2015/sumaris-net.ngx-components.js +389 -191
- package/fesm2015/sumaris-net.ngx-components.js.map +1 -1
- package/package.json +1 -1
- package/public_api.d.ts +2 -1
- package/src/app/core/services/network.service.d.ts +5 -7
- package/src/app/core/table/entities-table-datasource.class.d.ts +9 -1
- package/src/app/shared/services/memory-entity-service.class.d.ts +4 -4
- package/src/app/shared/services/startable-observable-service.class.d.ts +33 -0
- package/src/app/shared/services/startable-service.class.d.ts +9 -8
- package/src/app/social/job/job.service.d.ts +10 -2
- package/src/app/social/job/progression/{job-progression.component.d.ts → job-progression.icon.d.ts} +3 -3
- package/src/app/social/job/testing/job-progression.testing.d.ts +7 -4
- package/src/app/social/job/testing/job-progression.testing.service.d.ts +4 -0
- package/src/app/social/social.module.d.ts +1 -1
- package/src/app/social/user-event/notification/user-event-notification.icon.d.ts +6 -3
- package/src/app/social/user-event/testing/user-event.testing.d.ts +2 -2
- package/src/app/social/user-event/user-event.service.d.ts +1 -1
- package/sumaris-net.ngx-components.d.ts +9 -9
- package/sumaris-net.ngx-components.metadata.json +1 -1
- package/esm2015/src/app/social/job/progression/job-progression.component.js +0 -200
|
@@ -9069,19 +9069,19 @@ class StartableService {
|
|
|
9069
9069
|
? () => prerequisiteService.ready()
|
|
9070
9070
|
: () => Promise.resolve();
|
|
9071
9071
|
}
|
|
9072
|
-
start() {
|
|
9072
|
+
start(opts) {
|
|
9073
9073
|
if (this._startPromise)
|
|
9074
9074
|
return this._startPromise;
|
|
9075
9075
|
if (this._started)
|
|
9076
9076
|
return Promise.resolve(this._data);
|
|
9077
9077
|
this._startPromise = this._startPrerequisite()
|
|
9078
|
-
.then(() => this.ngOnStart())
|
|
9078
|
+
.then(() => this.ngOnStart(opts))
|
|
9079
9079
|
.then(data => {
|
|
9080
9080
|
this._data = data;
|
|
9081
9081
|
this._started = true;
|
|
9082
9082
|
this._startPromise = undefined;
|
|
9083
|
-
this.startSubject.next(
|
|
9084
|
-
return
|
|
9083
|
+
this.startSubject.next(data);
|
|
9084
|
+
return data;
|
|
9085
9085
|
})
|
|
9086
9086
|
.catch(err => {
|
|
9087
9087
|
console.error('Failed to start a service: ' + (err && err.message || err), err);
|
|
@@ -9091,6 +9091,17 @@ class StartableService {
|
|
|
9091
9091
|
});
|
|
9092
9092
|
return this._startPromise;
|
|
9093
9093
|
}
|
|
9094
|
+
ready() {
|
|
9095
|
+
if (this._started)
|
|
9096
|
+
return Promise.resolve(this._data);
|
|
9097
|
+
if (this._startPromise)
|
|
9098
|
+
return this._startPromise;
|
|
9099
|
+
if (this._startByReadyFunction)
|
|
9100
|
+
return this.start();
|
|
9101
|
+
return this.startSubject
|
|
9102
|
+
.pipe(takeUntil(this.stopSubject))
|
|
9103
|
+
.toPromise();
|
|
9104
|
+
}
|
|
9094
9105
|
stop() {
|
|
9095
9106
|
return __awaiter(this, void 0, void 0, function* () {
|
|
9096
9107
|
try {
|
|
@@ -9108,13 +9119,13 @@ class StartableService {
|
|
|
9108
9119
|
}
|
|
9109
9120
|
});
|
|
9110
9121
|
}
|
|
9111
|
-
restart() {
|
|
9122
|
+
restart(opts) {
|
|
9112
9123
|
return __awaiter(this, void 0, void 0, function* () {
|
|
9113
9124
|
if (this._startPromise)
|
|
9114
9125
|
yield this._startPromise; // Wait end of previous loading
|
|
9115
9126
|
if (this._started)
|
|
9116
9127
|
yield this.stop(); // Then stop if started
|
|
9117
|
-
return this.start(); // Then start again
|
|
9128
|
+
return this.start(opts); // Then start again
|
|
9118
9129
|
});
|
|
9119
9130
|
}
|
|
9120
9131
|
get started() {
|
|
@@ -9123,23 +9134,16 @@ class StartableService {
|
|
|
9123
9134
|
get starting() {
|
|
9124
9135
|
return !!this._startPromise;
|
|
9125
9136
|
}
|
|
9126
|
-
|
|
9127
|
-
|
|
9128
|
-
return Promise.resolve(this._data);
|
|
9129
|
-
if (this._startPromise)
|
|
9130
|
-
return this._startPromise;
|
|
9131
|
-
if (this._startByReadyFunction)
|
|
9132
|
-
return this.start();
|
|
9133
|
-
return this.startSubject
|
|
9134
|
-
.pipe(takeUntil(this.stopSubject))
|
|
9135
|
-
.toPromise();
|
|
9137
|
+
get stopped() {
|
|
9138
|
+
return !this._started && !this._startPromise;
|
|
9136
9139
|
}
|
|
9137
9140
|
registerSubscription(sub) {
|
|
9138
9141
|
this._subscription = this._subscription || new Subscription();
|
|
9139
9142
|
return this._subscription.add(sub);
|
|
9140
9143
|
}
|
|
9141
9144
|
unregisterSubscription(sub) {
|
|
9142
|
-
|
|
9145
|
+
var _a;
|
|
9146
|
+
(_a = this._subscription) === null || _a === void 0 ? void 0 : _a.remove(sub);
|
|
9143
9147
|
}
|
|
9144
9148
|
unsubscribe() {
|
|
9145
9149
|
var _a;
|
|
@@ -9147,9 +9151,7 @@ class StartableService {
|
|
|
9147
9151
|
this._subscription = null;
|
|
9148
9152
|
}
|
|
9149
9153
|
ngOnStop() {
|
|
9150
|
-
|
|
9151
|
-
// Can be overwritten by subclasses
|
|
9152
|
-
});
|
|
9154
|
+
// Can be overwritten by subclasses
|
|
9153
9155
|
}
|
|
9154
9156
|
}
|
|
9155
9157
|
StartableService.ctorParameters = () => [
|
|
@@ -11310,6 +11312,124 @@ class Toasts {
|
|
|
11310
11312
|
Toasts.counter = 0;
|
|
11311
11313
|
Toasts.stackSize = 0;
|
|
11312
11314
|
|
|
11315
|
+
/**
|
|
11316
|
+
* Same as StartableService, bu with a dataSubject instead of a simple 'data' property
|
|
11317
|
+
*/
|
|
11318
|
+
class StartableObservableService {
|
|
11319
|
+
constructor(prerequisiteService) {
|
|
11320
|
+
this.dataSubject = new BehaviorSubject(null);
|
|
11321
|
+
this.startSubject = new Subject();
|
|
11322
|
+
this.stopSubject = new Subject();
|
|
11323
|
+
this._debug = false;
|
|
11324
|
+
this._startByReadyFunction = true; // should start when calling ready() ?
|
|
11325
|
+
this._started = false;
|
|
11326
|
+
this._startPromise = null;
|
|
11327
|
+
this._startPrerequisite = null;
|
|
11328
|
+
this._subscription = null;
|
|
11329
|
+
this._startPrerequisite = prerequisiteService
|
|
11330
|
+
? () => prerequisiteService.ready()
|
|
11331
|
+
: () => Promise.resolve();
|
|
11332
|
+
}
|
|
11333
|
+
start(opts) {
|
|
11334
|
+
if (this._startPromise)
|
|
11335
|
+
return this._startPromise;
|
|
11336
|
+
if (this._started)
|
|
11337
|
+
return Promise.resolve(this.dataSubject.value);
|
|
11338
|
+
this._startPromise = this._startPrerequisite()
|
|
11339
|
+
.then(() => this.ngOnStart(opts))
|
|
11340
|
+
.then(data => {
|
|
11341
|
+
this._started = true;
|
|
11342
|
+
this._startPromise = undefined;
|
|
11343
|
+
// Should be done AFTER 'this._started = true', because of the 'filter' operator, inside ready() function
|
|
11344
|
+
this.dataSubject.next(data);
|
|
11345
|
+
this.startSubject.next(data);
|
|
11346
|
+
return data;
|
|
11347
|
+
})
|
|
11348
|
+
.catch(err => {
|
|
11349
|
+
console.error('Failed to start a service: ' + (err && err.message || err), err);
|
|
11350
|
+
this._started = false;
|
|
11351
|
+
this._startPromise = null;
|
|
11352
|
+
return null;
|
|
11353
|
+
});
|
|
11354
|
+
return this._startPromise;
|
|
11355
|
+
}
|
|
11356
|
+
ready() {
|
|
11357
|
+
if (this._started)
|
|
11358
|
+
return Promise.resolve(this.dataSubject.value);
|
|
11359
|
+
if (this._startPromise)
|
|
11360
|
+
return this._startPromise;
|
|
11361
|
+
if (this._startByReadyFunction)
|
|
11362
|
+
return this.start();
|
|
11363
|
+
return this.dataSubject
|
|
11364
|
+
.pipe(takeUntil(this.stopSubject),
|
|
11365
|
+
// Wait start() to be called, to exclude the initial 'null' value
|
|
11366
|
+
filter(_ => this._started))
|
|
11367
|
+
.toPromise();
|
|
11368
|
+
}
|
|
11369
|
+
stop() {
|
|
11370
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
11371
|
+
try {
|
|
11372
|
+
this.unsubscribe();
|
|
11373
|
+
yield this.ngOnStop();
|
|
11374
|
+
}
|
|
11375
|
+
catch (err) {
|
|
11376
|
+
console.error('Failed to stop a service: ' + (err && err.message || err), err);
|
|
11377
|
+
}
|
|
11378
|
+
finally {
|
|
11379
|
+
this._started = false;
|
|
11380
|
+
this._startPromise = undefined;
|
|
11381
|
+
this.stopSubject.next(); // Stop all running observables
|
|
11382
|
+
this.dataSubject.next(null); // Reset data
|
|
11383
|
+
}
|
|
11384
|
+
});
|
|
11385
|
+
}
|
|
11386
|
+
restart(opts) {
|
|
11387
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
11388
|
+
if (this._startPromise)
|
|
11389
|
+
yield this._startPromise; // Wait end of previous loading
|
|
11390
|
+
if (this._started)
|
|
11391
|
+
yield this.stop(); // Then stop if started
|
|
11392
|
+
return this.start(opts); // Then start again
|
|
11393
|
+
});
|
|
11394
|
+
}
|
|
11395
|
+
get started() {
|
|
11396
|
+
return this._started;
|
|
11397
|
+
}
|
|
11398
|
+
get starting() {
|
|
11399
|
+
return !!this._startPromise;
|
|
11400
|
+
}
|
|
11401
|
+
get stopped() {
|
|
11402
|
+
return !this._started && !this._startPromise;
|
|
11403
|
+
}
|
|
11404
|
+
get data() {
|
|
11405
|
+
return this.dataSubject.value;
|
|
11406
|
+
}
|
|
11407
|
+
set data(value) {
|
|
11408
|
+
if (this.dataSubject.value !== value) {
|
|
11409
|
+
this.dataSubject.next(value);
|
|
11410
|
+
}
|
|
11411
|
+
}
|
|
11412
|
+
registerSubscription(sub) {
|
|
11413
|
+
this._subscription = this._subscription || new Subscription();
|
|
11414
|
+
return this._subscription.add(sub);
|
|
11415
|
+
}
|
|
11416
|
+
unregisterSubscription(sub) {
|
|
11417
|
+
var _a;
|
|
11418
|
+
(_a = this._subscription) === null || _a === void 0 ? void 0 : _a.remove(sub);
|
|
11419
|
+
}
|
|
11420
|
+
unsubscribe() {
|
|
11421
|
+
var _a;
|
|
11422
|
+
(_a = this._subscription) === null || _a === void 0 ? void 0 : _a.unsubscribe();
|
|
11423
|
+
this._subscription = null;
|
|
11424
|
+
}
|
|
11425
|
+
ngOnStop() {
|
|
11426
|
+
// Can be overwritten by subclasses
|
|
11427
|
+
}
|
|
11428
|
+
}
|
|
11429
|
+
StartableObservableService.ctorParameters = () => [
|
|
11430
|
+
{ type: undefined, decorators: [{ type: Optional }] }
|
|
11431
|
+
];
|
|
11432
|
+
|
|
11313
11433
|
function getConnectionType(type) {
|
|
11314
11434
|
switch (type) {
|
|
11315
11435
|
case Connection.NONE:
|
|
@@ -11338,7 +11458,7 @@ const NetworkRefreshTimerPeriod = {
|
|
|
11338
11458
|
MOBILE: 1000,
|
|
11339
11459
|
DESKTOP: 1000
|
|
11340
11460
|
}*/
|
|
11341
|
-
class NetworkService extends
|
|
11461
|
+
class NetworkService extends StartableObservableService {
|
|
11342
11462
|
constructor(_document, platform, modalCtrl, cryptoService, storage, settings, cache, http, environment, network, splashScreen, translate, toastController) {
|
|
11343
11463
|
super(platform);
|
|
11344
11464
|
this._document = _document;
|
|
@@ -11354,7 +11474,7 @@ class NetworkService extends StartableService {
|
|
|
11354
11474
|
this.splashScreen = splashScreen;
|
|
11355
11475
|
this.translate = translate;
|
|
11356
11476
|
this.toastController = toastController;
|
|
11357
|
-
this.onPeerChanges = this.startSubject.pipe(map(peer => peer
|
|
11477
|
+
this.onPeerChanges = this.startSubject.pipe(map(peer => peer === null || peer === void 0 ? void 0 : peer.url), filter(isNotNilOrBlank), distinctUntilChanged());
|
|
11358
11478
|
this.onNetworkStatusChanges = new BehaviorSubject(null);
|
|
11359
11479
|
this.onResetNetworkCache = new EventEmitter(true);
|
|
11360
11480
|
this._listeners = {};
|
|
@@ -11367,8 +11487,7 @@ class NetworkService extends StartableService {
|
|
|
11367
11487
|
this._timerRefreshPeriod = NetworkRefreshTimerPeriod.DESKTOP;
|
|
11368
11488
|
this._timerRefreshCondition = () => true; // Always check
|
|
11369
11489
|
}
|
|
11370
|
-
this.
|
|
11371
|
-
this.startSubject.subscribe(() => this.ngOnAfterStart());
|
|
11490
|
+
this.startSubject.subscribe(peer => this.ngOnAfterStart(peer));
|
|
11372
11491
|
// For DEV only
|
|
11373
11492
|
this._debug = !environment.production;
|
|
11374
11493
|
}
|
|
@@ -11385,11 +11504,11 @@ class NetworkService extends StartableService {
|
|
|
11385
11504
|
|| (this.started && this._deviceConnectionType || 'unknown');
|
|
11386
11505
|
}
|
|
11387
11506
|
get peer() {
|
|
11388
|
-
|
|
11507
|
+
var _a;
|
|
11508
|
+
return (_a = this.dataSubject.value) === null || _a === void 0 ? void 0 : _a.clone();
|
|
11389
11509
|
}
|
|
11390
11510
|
set peer(peer) {
|
|
11391
|
-
this.
|
|
11392
|
-
this.restart();
|
|
11511
|
+
this.restart(peer);
|
|
11393
11512
|
}
|
|
11394
11513
|
/**
|
|
11395
11514
|
* Register to network event
|
|
@@ -11437,8 +11556,7 @@ class NetworkService extends StartableService {
|
|
|
11437
11556
|
// Disable the offline mode
|
|
11438
11557
|
this.setForceOffline(false);
|
|
11439
11558
|
// Restart
|
|
11440
|
-
this.
|
|
11441
|
-
yield this.restart();
|
|
11559
|
+
yield this.restart(peer);
|
|
11442
11560
|
// Wait a promise, before recheck
|
|
11443
11561
|
yield this.emit('beforeTryOnlineFinish', this.online);
|
|
11444
11562
|
}
|
|
@@ -11681,11 +11799,11 @@ class NetworkService extends StartableService {
|
|
|
11681
11799
|
});
|
|
11682
11800
|
}
|
|
11683
11801
|
/* -- protected functions -- */
|
|
11684
|
-
ngOnStart() {
|
|
11802
|
+
ngOnStart(peer) {
|
|
11685
11803
|
return __awaiter(this, void 0, void 0, function* () {
|
|
11686
11804
|
console.info('[network] Starting network...');
|
|
11687
11805
|
// Restoring local settings
|
|
11688
|
-
|
|
11806
|
+
peer = peer || (yield this.restoreLocally());
|
|
11689
11807
|
// Make sure to hide the splashscreen, before open the modal
|
|
11690
11808
|
if (!peer && this.splashScreen)
|
|
11691
11809
|
this.splashScreen.hide();
|
|
@@ -11698,11 +11816,11 @@ class NetworkService extends StartableService {
|
|
|
11698
11816
|
return peer;
|
|
11699
11817
|
});
|
|
11700
11818
|
}
|
|
11701
|
-
ngOnAfterStart() {
|
|
11819
|
+
ngOnAfterStart(peer) {
|
|
11702
11820
|
var _a;
|
|
11703
11821
|
return __awaiter(this, void 0, void 0, function* () {
|
|
11704
11822
|
// Wait settings starts, then save peer in settings
|
|
11705
|
-
yield this.settings.apply({ peerUrl:
|
|
11823
|
+
yield this.settings.apply({ peerUrl: peer.url });
|
|
11706
11824
|
this.onDeviceConnectionChanged(((_a = this.network) === null || _a === void 0 ? void 0 : _a.type) || 'unknown');
|
|
11707
11825
|
// Start the refresh timer
|
|
11708
11826
|
this.startRefreshTimer();
|
|
@@ -11714,13 +11832,10 @@ class NetworkService extends StartableService {
|
|
|
11714
11832
|
});
|
|
11715
11833
|
}
|
|
11716
11834
|
ngOnStop() {
|
|
11717
|
-
|
|
11718
|
-
|
|
11719
|
-
|
|
11720
|
-
|
|
11721
|
-
this.stopRefreshTimer();
|
|
11722
|
-
}
|
|
11723
|
-
});
|
|
11835
|
+
// Stop timer, if cannot refresh anymore
|
|
11836
|
+
if (this._timerRefreshCondition() === false) {
|
|
11837
|
+
this.stopRefreshTimer();
|
|
11838
|
+
}
|
|
11724
11839
|
}
|
|
11725
11840
|
/**
|
|
11726
11841
|
* Try to restore peer from the local storage
|
|
@@ -11854,9 +11969,6 @@ class NetworkService extends StartableService {
|
|
|
11854
11969
|
}
|
|
11855
11970
|
}
|
|
11856
11971
|
}
|
|
11857
|
-
resetData() {
|
|
11858
|
-
this._data = null;
|
|
11859
|
-
}
|
|
11860
11972
|
/**
|
|
11861
11973
|
* Get default peers, from environment
|
|
11862
11974
|
*/
|
|
@@ -18140,13 +18252,13 @@ class EntityFilterUtils {
|
|
|
18140
18252
|
|
|
18141
18253
|
// @dynamic
|
|
18142
18254
|
// eslint-disable-next-line @angular-eslint/directive-class-suffix
|
|
18143
|
-
class InMemoryEntitiesService extends
|
|
18255
|
+
class InMemoryEntitiesService extends StartableObservableService {
|
|
18144
18256
|
constructor(dataType, filterType, options) {
|
|
18145
18257
|
super(null);
|
|
18146
18258
|
this.dataType = dataType;
|
|
18147
18259
|
this.filterType = filterType;
|
|
18148
18260
|
this.debug = false;
|
|
18149
|
-
this.
|
|
18261
|
+
this._hiddenData = null;
|
|
18150
18262
|
this.dirtySubject = new BehaviorSubject(false);
|
|
18151
18263
|
this.savingSubject = new BehaviorSubject(false);
|
|
18152
18264
|
options = Object.assign({ onSort: this.sort }, options);
|
|
@@ -18161,6 +18273,7 @@ class InMemoryEntitiesService extends StartableService {
|
|
|
18161
18273
|
}
|
|
18162
18274
|
return undefined;
|
|
18163
18275
|
});
|
|
18276
|
+
this._startByReadyFunction = false; // Need setValue() to be called, to start the service
|
|
18164
18277
|
this._sortByReplacement = Object.assign({
|
|
18165
18278
|
// Detect rankOrder on the entity class
|
|
18166
18279
|
id: (Object.getOwnPropertyNames(new dataType()).findIndex(key => key === 'rankOrder') !== -1) ? 'rankOrder' : undefined }, options.sortByReplacement);
|
|
@@ -18177,12 +18290,16 @@ class InMemoryEntitiesService extends StartableService {
|
|
|
18177
18290
|
get dirty() {
|
|
18178
18291
|
return this.dirtySubject.value;
|
|
18179
18292
|
}
|
|
18180
|
-
ngOnStart() {
|
|
18293
|
+
ngOnStart(data) {
|
|
18181
18294
|
return __awaiter(this, void 0, void 0, function* () {
|
|
18295
|
+
if (!data)
|
|
18296
|
+
throw new Error('Missing required data, to start this service');
|
|
18182
18297
|
if (this.debug)
|
|
18183
18298
|
console.debug('[memory-data-service] Starting...');
|
|
18184
|
-
|
|
18185
|
-
|
|
18299
|
+
this._hiddenData = [];
|
|
18300
|
+
this.markAsSaved();
|
|
18301
|
+
this.markAsPristine();
|
|
18302
|
+
return data;
|
|
18186
18303
|
});
|
|
18187
18304
|
}
|
|
18188
18305
|
ngOnStop() {
|
|
@@ -18191,9 +18308,9 @@ class InMemoryEntitiesService extends StartableService {
|
|
|
18191
18308
|
console.debug('[memory-data-service] Stopping...');
|
|
18192
18309
|
this.dataSubject.complete();
|
|
18193
18310
|
this.dataSubject.unsubscribe();
|
|
18194
|
-
this.
|
|
18195
|
-
this.
|
|
18196
|
-
this.
|
|
18311
|
+
this._hiddenData = null;
|
|
18312
|
+
this.markAsSaved();
|
|
18313
|
+
this.markAsPristine();
|
|
18197
18314
|
});
|
|
18198
18315
|
}
|
|
18199
18316
|
ngOnDestroy() {
|
|
@@ -18201,12 +18318,17 @@ class InMemoryEntitiesService extends StartableService {
|
|
|
18201
18318
|
}
|
|
18202
18319
|
setValue(data) {
|
|
18203
18320
|
if (this.dataSubject.value !== data) {
|
|
18204
|
-
|
|
18205
|
-
|
|
18206
|
-
|
|
18207
|
-
|
|
18321
|
+
// If service already started, then update data
|
|
18322
|
+
if (this.started) {
|
|
18323
|
+
this._hiddenData = [];
|
|
18324
|
+
this.dataSubject.next(data);
|
|
18325
|
+
this.markAsPristine();
|
|
18326
|
+
}
|
|
18327
|
+
// if service not started yet, then start it, using given data
|
|
18328
|
+
else {
|
|
18329
|
+
this.start(data);
|
|
18330
|
+
}
|
|
18208
18331
|
}
|
|
18209
|
-
this.markAsPristine();
|
|
18210
18332
|
}
|
|
18211
18333
|
loadAll(offset, size, sortBy, sortDirection, filter, opts) {
|
|
18212
18334
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -18216,17 +18338,20 @@ class InMemoryEntitiesService extends StartableService {
|
|
|
18216
18338
|
if (isNil(originalData)) {
|
|
18217
18339
|
console.warn('[memory-data-service] Cannot load all: no value set. Will return empty result');
|
|
18218
18340
|
}
|
|
18219
|
-
// Wait ready
|
|
18220
18341
|
try {
|
|
18221
|
-
|
|
18222
|
-
|
|
18223
|
-
|
|
18224
|
-
|
|
18342
|
+
// Wait service is ready
|
|
18343
|
+
yield this.ready();
|
|
18344
|
+
// Wait while busy (e.g. when saving, or deleting)
|
|
18345
|
+
yield this.waitIdle({ stopError: false /*avoid error when stopped*/ });
|
|
18225
18346
|
}
|
|
18226
|
-
|
|
18227
|
-
|
|
18228
|
-
|
|
18347
|
+
catch (err) {
|
|
18348
|
+
// Should be a stop error: log and continue
|
|
18349
|
+
if (!this.stopped)
|
|
18350
|
+
console.error('Unexpected error, while waiting :', err);
|
|
18229
18351
|
}
|
|
18352
|
+
// Make sure service is not stopped
|
|
18353
|
+
if (this.stopped)
|
|
18354
|
+
return undefined;
|
|
18230
18355
|
const excludedDataByFilter = [];
|
|
18231
18356
|
let excludedDataByPagination;
|
|
18232
18357
|
try {
|
|
@@ -18286,10 +18411,10 @@ class InMemoryEntitiesService extends StartableService {
|
|
|
18286
18411
|
if (nextOffset < total) {
|
|
18287
18412
|
res.fetchMore = () => this.loadAll(nextOffset, size, sortBy, sortDirection, filter, opts)
|
|
18288
18413
|
.then(res => {
|
|
18289
|
-
var _a;
|
|
18414
|
+
var _a, _b;
|
|
18290
18415
|
// Update hidden data (remove new fetched item)
|
|
18291
18416
|
if ((_a = res.data) === null || _a === void 0 ? void 0 : _a.length) {
|
|
18292
|
-
this._hiddenData = this._hiddenData.filter(item => !res.data.includes(item));
|
|
18417
|
+
this._hiddenData = (_b = this._hiddenData) === null || _b === void 0 ? void 0 : _b.filter(item => !res.data.includes(item));
|
|
18293
18418
|
}
|
|
18294
18419
|
return res;
|
|
18295
18420
|
});
|
|
@@ -18388,6 +18513,11 @@ class InMemoryEntitiesService extends StartableService {
|
|
|
18388
18513
|
var _a;
|
|
18389
18514
|
return ((_a = this._hiddenData) === null || _a === void 0 ? void 0 : _a.length) || 0;
|
|
18390
18515
|
}
|
|
18516
|
+
waitIdle(opts) {
|
|
18517
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
18518
|
+
yield this.waitWhileSaving(opts);
|
|
18519
|
+
});
|
|
18520
|
+
}
|
|
18391
18521
|
/* -- protected methods -- */
|
|
18392
18522
|
filter(data, _filter, hiddenData) {
|
|
18393
18523
|
// if filter is DataFilter instance, use its test function
|
|
@@ -18413,9 +18543,11 @@ class InMemoryEntitiesService extends StartableService {
|
|
|
18413
18543
|
}));
|
|
18414
18544
|
}
|
|
18415
18545
|
waitWhileSaving(opts) {
|
|
18416
|
-
|
|
18417
|
-
|
|
18418
|
-
|
|
18546
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
18547
|
+
if (this.saving) {
|
|
18548
|
+
return firstFalsePromise(this.savingSubject, Object.assign({ stop: (opts === null || opts === void 0 ? void 0 : opts.stop) || merge(this.stopSubject, this.dataSubject), stopError: false }, opts));
|
|
18549
|
+
}
|
|
18550
|
+
});
|
|
18419
18551
|
}
|
|
18420
18552
|
markAsSaving() {
|
|
18421
18553
|
if (!this.savingSubject.value) {
|
|
@@ -22392,8 +22524,8 @@ class EntitiesTableDataSource extends TableDataSource {
|
|
|
22392
22524
|
this._debug = false;
|
|
22393
22525
|
this._creating = false;
|
|
22394
22526
|
this._saving = false;
|
|
22395
|
-
this._stopWatching$ = new Subject();
|
|
22396
22527
|
this._fetchMoreFn = null;
|
|
22528
|
+
this._stopWatchSubject = new Subject();
|
|
22397
22529
|
this.loadingSubject = new BehaviorSubject(undefined);
|
|
22398
22530
|
this._entityName = removeEnd((new dataType()).__typename || 'UnknownVO', 'VO');
|
|
22399
22531
|
this._debug = (options === null || options === void 0 ? void 0 : options.suppressErrors) === false && !environment.production;
|
|
@@ -22430,24 +22562,37 @@ class EntitiesTableDataSource extends TableDataSource {
|
|
|
22430
22562
|
get loading() {
|
|
22431
22563
|
return this.loadingSubject.value !== false; // Should be true when undefined (initial state)
|
|
22432
22564
|
}
|
|
22565
|
+
/**
|
|
22566
|
+
* @deprecated use disconnect
|
|
22567
|
+
*/
|
|
22433
22568
|
ngOnDestroy() {
|
|
22434
|
-
this.
|
|
22435
|
-
|
|
22436
|
-
|
|
22437
|
-
|
|
22438
|
-
|
|
22569
|
+
this.close();
|
|
22570
|
+
}
|
|
22571
|
+
/**
|
|
22572
|
+
* @deprecated use disconnect
|
|
22573
|
+
*/
|
|
22574
|
+
close() {
|
|
22575
|
+
if (!this._stopWatchSubject.closed) {
|
|
22576
|
+
if (this._debug)
|
|
22577
|
+
console.debug('[entities-table-datasource] Closing...');
|
|
22578
|
+
this._stopWatchSubject.next();
|
|
22579
|
+
this._stopWatchSubject.complete();
|
|
22580
|
+
this._stopWatchSubject.unsubscribe();
|
|
22581
|
+
this.loadingSubject.complete();
|
|
22582
|
+
this.loadingSubject.unsubscribe();
|
|
22583
|
+
}
|
|
22439
22584
|
}
|
|
22440
22585
|
watchAll(offset, size, sortBy, sortDirection, filter) {
|
|
22441
|
-
this.
|
|
22586
|
+
this._stopWatchSubject.next();
|
|
22442
22587
|
this._fetchMoreFn = null;
|
|
22443
22588
|
this.markAsLoading();
|
|
22444
22589
|
return this.dataService.watchAll(offset, size, sortBy, sortDirection, filter, this.serviceOptions)
|
|
22445
22590
|
.pipe(catchError(err => this.handleError(err, 'ERROR.LOAD_DATA_ERROR')), map((res) => {
|
|
22446
22591
|
if (this._saving) {
|
|
22447
|
-
console.info(`[table-datasource] Received ${this._entityName} data (from service), but still saving: skip`);
|
|
22592
|
+
console.info(`[entities-table-datasource] Received ${this._entityName} data (from service), but still saving: skip`);
|
|
22448
22593
|
}
|
|
22449
22594
|
else if (this.hasSomeEditingRow()) {
|
|
22450
|
-
console.warn(`[table-datasource] Received ${this._entityName} data, while some row still editing: skip; Please check save() implementation in the table!`);
|
|
22595
|
+
console.warn(`[entities-table-datasource] Received ${this._entityName} data, while some row still editing: skip; Please check save() implementation in the table!`);
|
|
22451
22596
|
}
|
|
22452
22597
|
else {
|
|
22453
22598
|
this.updateDatasource((res.data || []));
|
|
@@ -22456,7 +22601,7 @@ class EntitiesTableDataSource extends TableDataSource {
|
|
|
22456
22601
|
return res;
|
|
22457
22602
|
}),
|
|
22458
22603
|
// Stop this pipe next time we call watchAll()
|
|
22459
|
-
takeUntil(this.
|
|
22604
|
+
takeUntil(this._stopWatchSubject)
|
|
22460
22605
|
// ⚠ Notice: Don't put any operator after takeUntil to avoid potential subscription leaks
|
|
22461
22606
|
);
|
|
22462
22607
|
}
|
|
@@ -22465,22 +22610,22 @@ class EntitiesTableDataSource extends TableDataSource {
|
|
|
22465
22610
|
// Avoid to update dataSourceSubject, when not need
|
|
22466
22611
|
if ((_a = this.datasourceSubject.observers) === null || _a === void 0 ? void 0 : _a.length) {
|
|
22467
22612
|
if (!this.config.suppressErrors)
|
|
22468
|
-
console.warn('[table-datasource] Update datasource subject. Please prefer using \'rowsSubject\' instead of \'datasourceSubject\'');
|
|
22613
|
+
console.warn('[entities-table-datasource] Update datasource subject. Please prefer using \'rowsSubject\' instead of \'datasourceSubject\'');
|
|
22469
22614
|
super.updateDatasourceFromRows(rows);
|
|
22470
22615
|
}
|
|
22471
22616
|
else {
|
|
22472
|
-
console.debug('[table-datasource] Skipping datasourceSubject update (not used yet).');
|
|
22617
|
+
console.debug('[entities-table-datasource] Skipping datasourceSubject update (not used yet).');
|
|
22473
22618
|
}
|
|
22474
22619
|
}
|
|
22475
22620
|
save() {
|
|
22476
22621
|
return __awaiter(this, void 0, void 0, function* () {
|
|
22477
22622
|
if (this.config.readOnly) {
|
|
22478
|
-
console.error('[table-datasource] Enable to save, because config.readOnly=true');
|
|
22623
|
+
console.error('[entities-table-datasource] Enable to save, because config.readOnly=true');
|
|
22479
22624
|
return false;
|
|
22480
22625
|
}
|
|
22481
22626
|
// Saving twice (should never occur)
|
|
22482
22627
|
if (this._saving) {
|
|
22483
|
-
console.warn(`[table-datasource] Trying to save ${this._entityName} rows twice. Skip`);
|
|
22628
|
+
console.warn(`[entities-table-datasource] Trying to save ${this._entityName} rows twice. Skip`);
|
|
22484
22629
|
return false;
|
|
22485
22630
|
}
|
|
22486
22631
|
this._saving = true;
|
|
@@ -22488,7 +22633,7 @@ class EntitiesTableDataSource extends TableDataSource {
|
|
|
22488
22633
|
const onlyDirtyRows = this.config.saveOnlyDirtyRows;
|
|
22489
22634
|
try {
|
|
22490
22635
|
if (this._debug)
|
|
22491
|
-
console.debug(`[table-datasource] Saving ${this._entityName} rows... {onlyDirtyRows: ${onlyDirtyRows}}`);
|
|
22636
|
+
console.debug(`[entities-table-datasource] Saving ${this._entityName} rows... {onlyDirtyRows: ${onlyDirtyRows}}`);
|
|
22492
22637
|
// Get all rows
|
|
22493
22638
|
const rows = this.getRows();
|
|
22494
22639
|
// Finish editing all rows
|
|
@@ -22497,7 +22642,7 @@ class EntitiesTableDataSource extends TableDataSource {
|
|
|
22497
22642
|
if (invalidRows.length) {
|
|
22498
22643
|
// log errors
|
|
22499
22644
|
if (this._debug)
|
|
22500
|
-
invalidRows.forEach(row => AppTableUtils.logRowErrors(row, `[table-datasource] ${this._entityName} row #${row.id}`));
|
|
22645
|
+
invalidRows.forEach(row => AppTableUtils.logRowErrors(row, `[entities-table-datasource] ${this._entityName} row #${row.id}`));
|
|
22501
22646
|
// Stop with an error
|
|
22502
22647
|
throw { code: ErrorCodes.TABLE_INVALID_ROW_ERROR, message: 'ERROR.TABLE_INVALID_ROW_ERROR' };
|
|
22503
22648
|
}
|
|
@@ -22525,21 +22670,21 @@ class EntitiesTableDataSource extends TableDataSource {
|
|
|
22525
22670
|
// If no data to save: exit
|
|
22526
22671
|
if (onlyDirtyRows && !dataToSave.length) {
|
|
22527
22672
|
if (this._debug)
|
|
22528
|
-
console.debug(`[table-datasource] No ${this._entityName} data to save. Skip`);
|
|
22673
|
+
console.debug(`[entities-table-datasource] No ${this._entityName} data to save. Skip`);
|
|
22529
22674
|
return false;
|
|
22530
22675
|
}
|
|
22531
22676
|
if (this._debug)
|
|
22532
|
-
console.debug(`[table-datasource] Asking service to save this ${this._entityName} data:`, dataToSave);
|
|
22677
|
+
console.debug(`[entities-table-datasource] Asking service to save this ${this._entityName} data:`, dataToSave);
|
|
22533
22678
|
yield this.dataService.saveAll(dataToSave, this.serviceOptions);
|
|
22534
22679
|
if (this._debug)
|
|
22535
|
-
console.debug(`[table-datasource] Saving ${this._entityName} data [OK]`);
|
|
22680
|
+
console.debug(`[entities-table-datasource] Saving ${this._entityName} data [OK]`);
|
|
22536
22681
|
// 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)
|
|
22537
22682
|
this.updateDatasource(data, { emitEvent: false });
|
|
22538
22683
|
return true;
|
|
22539
22684
|
}
|
|
22540
22685
|
catch (error) {
|
|
22541
22686
|
if (this._debug)
|
|
22542
|
-
console.error('[table-datasource] Error while saving: ' + error && error.message || error);
|
|
22687
|
+
console.error('[entities-table-datasource] Error while saving: ' + error && error.message || error);
|
|
22543
22688
|
throw error;
|
|
22544
22689
|
}
|
|
22545
22690
|
finally {
|
|
@@ -22550,7 +22695,7 @@ class EntitiesTableDataSource extends TableDataSource {
|
|
|
22550
22695
|
}
|
|
22551
22696
|
updateDatasource(data, opts) {
|
|
22552
22697
|
if (this._debug)
|
|
22553
|
-
console.debug(`[table-datasource] Updating datasource with data:`, data);
|
|
22698
|
+
console.debug(`[entities-table-datasource] Updating datasource with data:`, data);
|
|
22554
22699
|
super.updateDatasource(data, opts);
|
|
22555
22700
|
if (!opts || opts.emitEvent !== false) {
|
|
22556
22701
|
this.markAsLoaded();
|
|
@@ -22558,11 +22703,14 @@ class EntitiesTableDataSource extends TableDataSource {
|
|
|
22558
22703
|
}
|
|
22559
22704
|
connect(collectionViewer) {
|
|
22560
22705
|
// DEBUG console.debug("[entities-datasource] connect");
|
|
22706
|
+
this.viewer = collectionViewer;
|
|
22561
22707
|
return super.connect(collectionViewer);
|
|
22562
22708
|
}
|
|
22563
22709
|
disconnect(collectionViewer) {
|
|
22710
|
+
if (this._debug)
|
|
22711
|
+
console.debug('[entities-table-datasource] Disconnecting...');
|
|
22564
22712
|
super.disconnect(collectionViewer);
|
|
22565
|
-
this.
|
|
22713
|
+
this.close();
|
|
22566
22714
|
}
|
|
22567
22715
|
waitIdle(debounceTimeMs) {
|
|
22568
22716
|
return firstFalsePromise(this.loadingSubject
|
|
@@ -22574,7 +22722,7 @@ class EntitiesTableDataSource extends TableDataSource {
|
|
|
22574
22722
|
if (!super.confirmCreate(row))
|
|
22575
22723
|
return false;
|
|
22576
22724
|
if (row.editing && row.validator) {
|
|
22577
|
-
console.warn('[table-datasource] Row still has {editing: true} after confirmCreate()! Force editing to false');
|
|
22725
|
+
console.warn('[entities-table-datasource] Row still has {editing: true} after confirmCreate()! Force editing to false');
|
|
22578
22726
|
row.validator.disable({ onlySelf: true, emitEvent: false });
|
|
22579
22727
|
}
|
|
22580
22728
|
return true;
|
|
@@ -22583,7 +22731,7 @@ class EntitiesTableDataSource extends TableDataSource {
|
|
|
22583
22731
|
if (!super.confirmEdit(row))
|
|
22584
22732
|
return false;
|
|
22585
22733
|
if (row.editing && row.validator) {
|
|
22586
|
-
console.warn('[table-datasource] Row still has {editing: true} after confirmEdit()! Force editing to false');
|
|
22734
|
+
console.warn('[entities-table-datasource] Row still has {editing: true} after confirmEdit()! Force editing to false');
|
|
22587
22735
|
row.validator.disable({ onlySelf: true, emitEvent: false });
|
|
22588
22736
|
}
|
|
22589
22737
|
return true;
|
|
@@ -22592,19 +22740,19 @@ class EntitiesTableDataSource extends TableDataSource {
|
|
|
22592
22740
|
if (!super.startEdit(row))
|
|
22593
22741
|
return false;
|
|
22594
22742
|
if (!row.editing && row.validator) {
|
|
22595
|
-
console.warn('[table-datasource] Row still has {editing: false} after startEdit()! Force editing');
|
|
22743
|
+
console.warn('[entities-table-datasource] Row still has {editing: false} after startEdit()! Force editing');
|
|
22596
22744
|
row.validator.enable({ onlySelf: true, emitEvent: false });
|
|
22597
22745
|
}
|
|
22598
22746
|
}
|
|
22599
22747
|
handleError(error, message) {
|
|
22600
22748
|
const errorMsg = error && error.message || error;
|
|
22601
|
-
console.error(`[table-datasource] Service ${this._entityName} sent error: ${errorMsg}`, error);
|
|
22749
|
+
console.error(`[entities-table-datasource] Service ${this._entityName} sent error: ${errorMsg}`, error);
|
|
22602
22750
|
this.markAsLoaded();
|
|
22603
22751
|
throw new Error(message || errorMsg);
|
|
22604
22752
|
}
|
|
22605
22753
|
handleServiceError(error) {
|
|
22606
22754
|
const errorMsg = error && error.message || error;
|
|
22607
|
-
console.error(`[table-datasource] Service ${this._entityName} sent error: ${errorMsg}`, error);
|
|
22755
|
+
console.error(`[entities-table-datasource] Service ${this._entityName} sent error: ${errorMsg}`, error);
|
|
22608
22756
|
this.markAsLoaded();
|
|
22609
22757
|
throw error;
|
|
22610
22758
|
}
|
|
@@ -22615,7 +22763,7 @@ class EntitiesTableDataSource extends TableDataSource {
|
|
|
22615
22763
|
}
|
|
22616
22764
|
const row = this.getRow(id);
|
|
22617
22765
|
if (!row) {
|
|
22618
|
-
console.error(`[table-datasource] Row to delete with id=${id} not found`);
|
|
22766
|
+
console.error(`[entities-table-datasource] Row to delete with id=${id} not found`);
|
|
22619
22767
|
return;
|
|
22620
22768
|
}
|
|
22621
22769
|
this.markAsLoading();
|
|
@@ -22646,7 +22794,7 @@ class EntitiesTableDataSource extends TableDataSource {
|
|
|
22646
22794
|
// In this case, apply missing deletion using the super.delete() function
|
|
22647
22795
|
const rowNotDeleted = this.getRows().filter(row => rows.includes(row));
|
|
22648
22796
|
if (isNotEmptyArray(rowNotDeleted)) {
|
|
22649
|
-
console.warn(`[table-datasource] Force deletion of ${rowNotDeleted.length} rows! Please check that data service update the cache, after deletion`);
|
|
22797
|
+
console.warn(`[entities-table-datasource] Force deletion of ${rowNotDeleted.length} rows! Please check that data service update the cache, after deletion`);
|
|
22650
22798
|
rowNotDeleted
|
|
22651
22799
|
// Start at the end
|
|
22652
22800
|
.sort((a, b) => a.id > b.id ? -1 : 1)
|
|
@@ -23114,7 +23262,6 @@ class AppTable {
|
|
|
23114
23262
|
this.listenSortAndPaginationEvents();
|
|
23115
23263
|
}
|
|
23116
23264
|
ngOnDestroy() {
|
|
23117
|
-
var _a;
|
|
23118
23265
|
this._subscription.unsubscribe();
|
|
23119
23266
|
// Unsubscribe column value changes
|
|
23120
23267
|
Object.keys(this._cellValueChangesDefs).forEach(col => this.stopCellValueChanges(col, true));
|
|
@@ -23139,7 +23286,6 @@ class AppTable {
|
|
|
23139
23286
|
this.onError.unsubscribe();
|
|
23140
23287
|
this.destroySubject.next();
|
|
23141
23288
|
this.destroySubject.unsubscribe();
|
|
23142
|
-
(_a = this._dataSource) === null || _a === void 0 ? void 0 : _a.ngOnDestroy();
|
|
23143
23289
|
}
|
|
23144
23290
|
updateView(res, opts) {
|
|
23145
23291
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -23174,12 +23320,11 @@ class AppTable {
|
|
|
23174
23320
|
}
|
|
23175
23321
|
}
|
|
23176
23322
|
resetDataSource() {
|
|
23177
|
-
var _a;
|
|
23178
23323
|
if (this._dataSourceLoadingSubscription) {
|
|
23179
23324
|
this._dataSourceLoadingSubscription.unsubscribe();
|
|
23180
23325
|
this._subscription.remove(this._dataSourceLoadingSubscription);
|
|
23181
23326
|
}
|
|
23182
|
-
|
|
23327
|
+
//this._dataSource?.close();
|
|
23183
23328
|
this._dataSource = null;
|
|
23184
23329
|
}
|
|
23185
23330
|
addColumnDef(column) {
|
|
@@ -26153,7 +26298,7 @@ const SocialErrorCodes = {
|
|
|
26153
26298
|
};
|
|
26154
26299
|
|
|
26155
26300
|
const moment$6 = momentImported;
|
|
26156
|
-
const
|
|
26301
|
+
const APP_USER_EVENT_SERVICE = new InjectionToken('UserEventService');
|
|
26157
26302
|
class AbstractUserEventService extends BaseGraphqlService {
|
|
26158
26303
|
constructor(graphql, accountService, network, translate, options) {
|
|
26159
26304
|
super(graphql, options);
|
|
@@ -26823,7 +26968,7 @@ UserEventNotificationList.ctorParameters = () => [
|
|
|
26823
26968
|
{ type: ChangeDetectorRef },
|
|
26824
26969
|
{ type: PopoverController },
|
|
26825
26970
|
{ type: LocalSettingsService, decorators: [{ type: Optional }] },
|
|
26826
|
-
{ type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [
|
|
26971
|
+
{ type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [APP_USER_EVENT_SERVICE,] }] }
|
|
26827
26972
|
];
|
|
26828
26973
|
UserEventNotificationList.propDecorators = {
|
|
26829
26974
|
debug: [{ type: Input }],
|
|
@@ -26840,11 +26985,12 @@ UserEventNotificationList.propDecorators = {
|
|
|
26840
26985
|
ionItems: [{ type: ViewChildren, args: [IonItem,] }]
|
|
26841
26986
|
};
|
|
26842
26987
|
|
|
26843
|
-
class
|
|
26844
|
-
constructor(userEventService, accountService, popoverController) {
|
|
26988
|
+
class UserEventNotificationIcon {
|
|
26989
|
+
constructor(userEventService, accountService, popoverController, cd) {
|
|
26845
26990
|
this.userEventService = userEventService;
|
|
26846
26991
|
this.accountService = accountService;
|
|
26847
26992
|
this.popoverController = popoverController;
|
|
26993
|
+
this.cd = cd;
|
|
26848
26994
|
this.debug = false;
|
|
26849
26995
|
this.titleI18n = 'SOCIAL.USER_EVENT.NOTIFICATION.TITLE';
|
|
26850
26996
|
this.disabled = false;
|
|
@@ -26858,15 +27004,23 @@ class AppUserEventNotificationIcon {
|
|
|
26858
27004
|
return of();
|
|
26859
27005
|
return this.userEventService
|
|
26860
27006
|
.countSubject
|
|
26861
|
-
.pipe(
|
|
27007
|
+
.pipe(tap(value => {
|
|
27008
|
+
const visible = !this.autoHide || value > 0;
|
|
27009
|
+
if (this.visible !== visible) {
|
|
27010
|
+
this.visible = visible;
|
|
27011
|
+
this.cd.markForCheck();
|
|
27012
|
+
}
|
|
27013
|
+
}), map(value => value === 0 ? undefined : value));
|
|
26862
27014
|
}
|
|
26863
27015
|
ngOnInit() {
|
|
26864
27016
|
return __awaiter(this, void 0, void 0, function* () {
|
|
26865
27017
|
if (isNil(this.userEventService)) {
|
|
26866
27018
|
console.warn(`${this._logPrefix}No service injected`);
|
|
26867
27019
|
this.disabled = true;
|
|
27020
|
+
this.visible = false;
|
|
26868
27021
|
return;
|
|
26869
27022
|
}
|
|
27023
|
+
this.visible = toBoolean(this.visible, !this.autoHide);
|
|
26870
27024
|
// Wait service
|
|
26871
27025
|
yield this.userEventService.ready();
|
|
26872
27026
|
// Subscribe to read event
|
|
@@ -26907,23 +27061,25 @@ class AppUserEventNotificationIcon {
|
|
|
26907
27061
|
}
|
|
26908
27062
|
}
|
|
26909
27063
|
}
|
|
26910
|
-
|
|
27064
|
+
UserEventNotificationIcon.decorators = [
|
|
26911
27065
|
{ type: Component, args: [{
|
|
26912
27066
|
selector: 'app-user-event-notification-icon',
|
|
26913
|
-
template: "<button\n #button\n mat-icon-button\n [title]=\"titleI18n | translate\"\n [disabled]=\"disabled\"\n (click)=\"showList($event)\"\n>\n <mat-icon\n [matBadge]=\"countChanges | async\"\n matBadgeColor=\"accent\"\n matBadgeSize=\"small\"\n matBadgePosition=\"above after\"\n >notifications\n </mat-icon>\n</button>\n\n",
|
|
27067
|
+
template: "<button\n #button\n mat-icon-button\n [title]=\"titleI18n | translate\"\n [disabled]=\"disabled\"\n *ngIf=\"visible\"\n (click)=\"showList($event)\"\n>\n <mat-icon\n [matBadge]=\"countChanges | async\"\n matBadgeColor=\"accent\"\n matBadgeSize=\"small\"\n matBadgePosition=\"above after\"\n >notifications\n </mat-icon>\n</button>\n\n",
|
|
26914
27068
|
changeDetection: ChangeDetectionStrategy.OnPush
|
|
26915
27069
|
},] }
|
|
26916
27070
|
];
|
|
26917
|
-
|
|
26918
|
-
{ type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [
|
|
27071
|
+
UserEventNotificationIcon.ctorParameters = () => [
|
|
27072
|
+
{ type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [APP_USER_EVENT_SERVICE,] }] },
|
|
26919
27073
|
{ type: AccountService },
|
|
26920
|
-
{ type: PopoverController }
|
|
27074
|
+
{ type: PopoverController },
|
|
27075
|
+
{ type: ChangeDetectorRef }
|
|
26921
27076
|
];
|
|
26922
|
-
|
|
27077
|
+
UserEventNotificationIcon.propDecorators = {
|
|
26923
27078
|
debug: [{ type: Input }],
|
|
26924
27079
|
titleI18n: [{ type: Input }],
|
|
26925
27080
|
disabled: [{ type: Input }],
|
|
26926
|
-
filter: [{ type: Input }]
|
|
27081
|
+
filter: [{ type: Input }],
|
|
27082
|
+
autoHide: [{ type: Input }]
|
|
26927
27083
|
};
|
|
26928
27084
|
|
|
26929
27085
|
class UserEventModule {
|
|
@@ -26937,11 +27093,11 @@ UserEventModule.decorators = [
|
|
|
26937
27093
|
NgxJdenticonModule
|
|
26938
27094
|
],
|
|
26939
27095
|
declarations: [
|
|
26940
|
-
|
|
27096
|
+
UserEventNotificationIcon,
|
|
26941
27097
|
UserEventNotificationList
|
|
26942
27098
|
],
|
|
26943
27099
|
exports: [
|
|
26944
|
-
|
|
27100
|
+
UserEventNotificationIcon
|
|
26945
27101
|
]
|
|
26946
27102
|
},] }
|
|
26947
27103
|
];
|
|
@@ -27198,16 +27354,18 @@ JobProgression = JobProgression_1 = __decorate([
|
|
|
27198
27354
|
EntityClass({ typename: 'JobProgressionVO' })
|
|
27199
27355
|
], JobProgression);
|
|
27200
27356
|
|
|
27201
|
-
const
|
|
27202
|
-
const
|
|
27203
|
-
|
|
27204
|
-
id
|
|
27205
|
-
|
|
27206
|
-
|
|
27207
|
-
|
|
27208
|
-
|
|
27209
|
-
|
|
27210
|
-
}
|
|
27357
|
+
const APP_JOB_PROGRESSION_SERVICE = new InjectionToken('JobProgressionService');
|
|
27358
|
+
const QUERIES = {
|
|
27359
|
+
listenChanges: gql `subscription UpdateJobProgression($id: Int!, $interval: Int){
|
|
27360
|
+
data: updateJobProgression(id: $id, interval: $interval) {
|
|
27361
|
+
id
|
|
27362
|
+
name
|
|
27363
|
+
message
|
|
27364
|
+
current
|
|
27365
|
+
total
|
|
27366
|
+
}
|
|
27367
|
+
}`
|
|
27368
|
+
};
|
|
27211
27369
|
class JobProgressionService extends BaseGraphqlService {
|
|
27212
27370
|
constructor(graphql, environment) {
|
|
27213
27371
|
super(graphql, environment);
|
|
@@ -27217,13 +27375,22 @@ class JobProgressionService extends BaseGraphqlService {
|
|
|
27217
27375
|
// For DEV only
|
|
27218
27376
|
this._debug = !(environment === null || environment === void 0 ? void 0 : environment.production);
|
|
27219
27377
|
}
|
|
27378
|
+
watchAll(options) {
|
|
27379
|
+
return of([]); // TODO
|
|
27380
|
+
}
|
|
27381
|
+
addJob(id, job) {
|
|
27382
|
+
throw new Error('no implemented');
|
|
27383
|
+
}
|
|
27384
|
+
removeJob(id) {
|
|
27385
|
+
throw new Error('no implemented');
|
|
27386
|
+
}
|
|
27220
27387
|
listenChanges(id, options) {
|
|
27221
27388
|
if (isNil(id))
|
|
27222
27389
|
throw new Error(`${this._logPrefix}Missing argument 'id'`);
|
|
27223
27390
|
if (this._debug)
|
|
27224
27391
|
console.debug(`${this._logPrefix}[WS] Listening changes for job progression {${id}}...`);
|
|
27225
27392
|
return this.graphql.subscribe({
|
|
27226
|
-
query:
|
|
27393
|
+
query: QUERIES.listenChanges,
|
|
27227
27394
|
fetchPolicy: options === null || options === void 0 ? void 0 : options.fetchPolicy,
|
|
27228
27395
|
variables: { id, interval: toNumber(options === null || options === void 0 ? void 0 : options.interval, 10) },
|
|
27229
27396
|
error: { code: SocialErrorCodes.SUBSCRIBE_JOB_PROGRESSION_ERROR, message: 'SOCIAL.ERROR.SUBSCRIBE_JOB_PROGRESSION_ERROR' }
|
|
@@ -27262,7 +27429,7 @@ JobProgressionList.propDecorators = {
|
|
|
27262
27429
|
jobProgressions: [{ type: Input }]
|
|
27263
27430
|
};
|
|
27264
27431
|
|
|
27265
|
-
class
|
|
27432
|
+
class JobProgressionIcon {
|
|
27266
27433
|
constructor(jobProgressionService, popoverController, cd) {
|
|
27267
27434
|
this.jobProgressionService = jobProgressionService;
|
|
27268
27435
|
this.popoverController = popoverController;
|
|
@@ -27285,13 +27452,17 @@ class JobProgressionComponent {
|
|
|
27285
27452
|
console.warn(`${this._logPrefix}No service injected`);
|
|
27286
27453
|
}
|
|
27287
27454
|
// parse options
|
|
27288
|
-
this.autoHide = toBoolean((_a = this.options) === null || _a === void 0 ? void 0 : _a.autoHide
|
|
27455
|
+
this.autoHide = toBoolean(this.autoHide, ((_a = this.options) === null || _a === void 0 ? void 0 : _a.autoHide) || false);
|
|
27289
27456
|
this.visible = !this.autoHide;
|
|
27290
27457
|
this.autoHideDelay = toNumber((_b = this.options) === null || _b === void 0 ? void 0 : _b.autoHideDelay, 1000);
|
|
27291
27458
|
this.autoRemove = toBoolean((_c = this.options) === null || _c === void 0 ? void 0 : _c.autoRemove, true);
|
|
27292
27459
|
this.autoRemoveDelay = toNumber((_d = this.options) === null || _d === void 0 ? void 0 : _d.autoRemoveDelay, 1000);
|
|
27460
|
+
this._subscriptions.add(this.jobProgressionService.watchAll()
|
|
27461
|
+
.subscribe(items => {
|
|
27462
|
+
(items || []).forEach(item => this.addJob(item.id, item));
|
|
27463
|
+
}));
|
|
27293
27464
|
}
|
|
27294
|
-
addJob(id) {
|
|
27465
|
+
addJob(id, job) {
|
|
27295
27466
|
if (isNil(this.jobProgressionService)) {
|
|
27296
27467
|
console.warn(`${this._logPrefix}No service injected. Can't add a job`);
|
|
27297
27468
|
return;
|
|
@@ -27304,8 +27475,11 @@ class JobProgressionComponent {
|
|
|
27304
27475
|
console.debug(`${this._logPrefix}Add job id=${id}`);
|
|
27305
27476
|
}
|
|
27306
27477
|
// Adding empty job progression
|
|
27307
|
-
|
|
27308
|
-
|
|
27478
|
+
let progression = this.getProgression(id);
|
|
27479
|
+
if (!progression) {
|
|
27480
|
+
progression = job || new JobProgression(id);
|
|
27481
|
+
this.jobProgressions.push(progression);
|
|
27482
|
+
}
|
|
27309
27483
|
this.disabled = false;
|
|
27310
27484
|
const sub = this.jobProgressionService.listenChanges(id)
|
|
27311
27485
|
.pipe(filter(progression => {
|
|
@@ -27433,23 +27607,24 @@ class JobProgressionComponent {
|
|
|
27433
27607
|
this._subscriptions.unsubscribe();
|
|
27434
27608
|
}
|
|
27435
27609
|
}
|
|
27436
|
-
|
|
27610
|
+
JobProgressionIcon.decorators = [
|
|
27437
27611
|
{ type: Component, args: [{
|
|
27438
|
-
selector: 'app-job-progression',
|
|
27612
|
+
selector: 'app-job-progression-icon',
|
|
27439
27613
|
template: "<button\n #button\n mat-icon-button\n [title]=\"titleI18n | translate\"\n [disabled]=\"disabled\"\n *ngIf=\"visible\"\n (click)=\"showList($event)\"\n>\n <mat-icon\n [matBadge]=\"jobProgressions?.length\"\n [matBadgeHidden]=\"!jobProgressions?.length\"\n matBadgeColor=\"accent\"\n matBadgeSize=\"small\"\n matBadgePosition=\"above after\"\n >{{ disabled || jobProgressions?.length ? 'schedule' : 'task_alt' }}\n </mat-icon>\n <mat-spinner\n #spinner\n *ngIf=\"jobProgressions?.length\"\n class=\"floating-spinner\"\n [color]=\"color\"\n [mode]=\"mode\"\n [value]=\"value\"\n diameter=\"30\"\n strokeWidth=\"3\"\n ></mat-spinner>\n</button>\n\n",
|
|
27440
27614
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
27441
27615
|
styles: [".floating-spinner{position:absolute;top:6px;left:5px}"]
|
|
27442
27616
|
},] }
|
|
27443
27617
|
];
|
|
27444
|
-
|
|
27445
|
-
{ type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [
|
|
27618
|
+
JobProgressionIcon.ctorParameters = () => [
|
|
27619
|
+
{ type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [APP_JOB_PROGRESSION_SERVICE,] }] },
|
|
27446
27620
|
{ type: PopoverController },
|
|
27447
27621
|
{ type: ChangeDetectorRef }
|
|
27448
27622
|
];
|
|
27449
|
-
|
|
27623
|
+
JobProgressionIcon.propDecorators = {
|
|
27450
27624
|
debug: [{ type: Input }],
|
|
27451
27625
|
titleI18n: [{ type: Input }],
|
|
27452
27626
|
options: [{ type: Input }],
|
|
27627
|
+
autoHide: [{ type: Input }],
|
|
27453
27628
|
jobFinished: [{ type: Output }]
|
|
27454
27629
|
};
|
|
27455
27630
|
|
|
@@ -27463,11 +27638,11 @@ JobModule.decorators = [
|
|
|
27463
27638
|
TranslateModule.forChild(),
|
|
27464
27639
|
],
|
|
27465
27640
|
declarations: [
|
|
27466
|
-
|
|
27641
|
+
JobProgressionIcon,
|
|
27467
27642
|
JobProgressionList
|
|
27468
27643
|
],
|
|
27469
27644
|
exports: [
|
|
27470
|
-
|
|
27645
|
+
JobProgressionIcon
|
|
27471
27646
|
]
|
|
27472
27647
|
},] }
|
|
27473
27648
|
];
|
|
@@ -29158,7 +29333,7 @@ class TableTestPage extends AppTable {
|
|
|
29158
29333
|
console.debug('[test-table] Destroying table...');
|
|
29159
29334
|
super.ngOnDestroy();
|
|
29160
29335
|
this.stopTimer();
|
|
29161
|
-
this.dataService.stop();
|
|
29336
|
+
//this.dataService.stop();
|
|
29162
29337
|
}
|
|
29163
29338
|
restoreFilter() {
|
|
29164
29339
|
const json = this.settings.getPageSettings(this.settingsId, 'filter');
|
|
@@ -29419,75 +29594,50 @@ CoreTestingModule.decorators = [
|
|
|
29419
29594
|
},] }
|
|
29420
29595
|
];
|
|
29421
29596
|
|
|
29422
|
-
class JobProgressionTestService {
|
|
29423
|
-
listenChanges(id, options) {
|
|
29424
|
-
return interval(100).pipe(take(111), map(value => {
|
|
29425
|
-
if (value <= 10) {
|
|
29426
|
-
return {
|
|
29427
|
-
id: id,
|
|
29428
|
-
name: `Job #${id}`,
|
|
29429
|
-
current: 0,
|
|
29430
|
-
total: 0,
|
|
29431
|
-
message: `Progression pending`
|
|
29432
|
-
};
|
|
29433
|
-
}
|
|
29434
|
-
value = value - 10;
|
|
29435
|
-
return {
|
|
29436
|
-
id: id,
|
|
29437
|
-
name: `Job #${id}`,
|
|
29438
|
-
current: value,
|
|
29439
|
-
total: 100,
|
|
29440
|
-
message: `Progression ${value}/100`
|
|
29441
|
-
};
|
|
29442
|
-
}));
|
|
29443
|
-
}
|
|
29444
|
-
}
|
|
29445
|
-
JobProgressionTestService.decorators = [
|
|
29446
|
-
{ type: Injectable }
|
|
29447
|
-
];
|
|
29448
|
-
|
|
29449
29597
|
class JobProgressionTestingPage {
|
|
29450
|
-
constructor() {
|
|
29451
|
-
this.
|
|
29598
|
+
constructor(jobProgressionService) {
|
|
29599
|
+
this.jobProgressionService = jobProgressionService;
|
|
29600
|
+
this.jobId = 0;
|
|
29601
|
+
this.job = null;
|
|
29452
29602
|
this.options = {
|
|
29453
29603
|
autoHide: true
|
|
29454
29604
|
};
|
|
29455
|
-
this.job = new JobProgression();
|
|
29456
|
-
this.job.id = 0;
|
|
29457
|
-
this.job.name = 'test';
|
|
29458
|
-
this.job.current = 0;
|
|
29459
|
-
this.job.total = 100;
|
|
29460
29605
|
}
|
|
29461
29606
|
incrementJob(value) {
|
|
29462
|
-
this.job
|
|
29607
|
+
this.job = this.job || this.createJob();
|
|
29608
|
+
this.job.current += value || 0;
|
|
29463
29609
|
this.job.message = `Fake progression (very long message very long message very long message very long message) ${this.job.current}/100`;
|
|
29464
29610
|
if (this.job.current > this.job.total) {
|
|
29465
|
-
this.
|
|
29611
|
+
this.jobProgressionService.removeJob(this.job.id);
|
|
29466
29612
|
this.job.current = 0;
|
|
29613
|
+
this.job = null; // Forget the job
|
|
29467
29614
|
}
|
|
29468
|
-
|
|
29469
|
-
this.jobProgression.jobProgressions.push(this.job);
|
|
29470
|
-
}
|
|
29471
|
-
this.jobProgression.updateValue();
|
|
29615
|
+
this.jobProgressionIcon.updateValue();
|
|
29472
29616
|
}
|
|
29473
29617
|
addJob() {
|
|
29474
|
-
|
|
29475
|
-
|
|
29476
|
-
|
|
29618
|
+
this.job = this.createJob();
|
|
29619
|
+
}
|
|
29620
|
+
createJob() {
|
|
29621
|
+
const job = new JobProgression();
|
|
29622
|
+
job.id = ++this.jobId;
|
|
29623
|
+
job.name = 'test';
|
|
29624
|
+
job.current = 0;
|
|
29625
|
+
job.total = 100;
|
|
29626
|
+
this.jobProgressionService.addJob(job.id, job);
|
|
29627
|
+
return job;
|
|
29477
29628
|
}
|
|
29478
29629
|
}
|
|
29479
29630
|
JobProgressionTestingPage.decorators = [
|
|
29480
29631
|
{ type: Component, args: [{
|
|
29481
29632
|
selector: 'job-progression-testing',
|
|
29482
|
-
template: "<ion-toolbar color=\"primary\">\n <ion-title>Job progression</ion-title>\n</ion-toolbar>\n\n<ion-content class=\"ion-padding\">\n\n <app-job-progression #
|
|
29483
|
-
providers: [
|
|
29484
|
-
{ provide: JobProgressionServiceToken, useClass: JobProgressionTestService }
|
|
29485
|
-
]
|
|
29633
|
+
template: "<ion-toolbar color=\"primary\">\n <ion-title>Job progression</ion-title>\n</ion-toolbar>\n\n<ion-content class=\"ion-padding\">\n\n <app-job-progression-icon #icon [debug]=\"true\" [options]=\"options\" ></app-job-progression-icon>\n\n <p>\n <ion-button (click)=\"incrementJob(10)\">\n +10\n </ion-button>\n <ion-button (click)=\"incrementJob(-10)\">\n -10\n </ion-button>\n </p>\n <p>\n <ion-button (click)=\"addJob()\">Add Job</ion-button>\n </p>\n</ion-content>\n"
|
|
29486
29634
|
},] }
|
|
29487
29635
|
];
|
|
29488
|
-
JobProgressionTestingPage.ctorParameters = () => [
|
|
29636
|
+
JobProgressionTestingPage.ctorParameters = () => [
|
|
29637
|
+
{ type: JobProgressionService, decorators: [{ type: Inject, args: [APP_JOB_PROGRESSION_SERVICE,] }] }
|
|
29638
|
+
];
|
|
29489
29639
|
JobProgressionTestingPage.propDecorators = {
|
|
29490
|
-
|
|
29640
|
+
jobProgressionIcon: [{ type: ViewChild, args: ['icon',] }]
|
|
29491
29641
|
};
|
|
29492
29642
|
|
|
29493
29643
|
class JobTestingModule {
|
|
@@ -29919,7 +30069,7 @@ UserEventTestingPage.decorators = [
|
|
|
29919
30069
|
},] }
|
|
29920
30070
|
];
|
|
29921
30071
|
UserEventTestingPage.ctorParameters = () => [
|
|
29922
|
-
{ type: UserEventTestService, decorators: [{ type: Inject, args: [
|
|
30072
|
+
{ type: UserEventTestService, decorators: [{ type: Inject, args: [APP_USER_EVENT_SERVICE,] }] },
|
|
29923
30073
|
{ type: Router },
|
|
29924
30074
|
{ type: AlertController },
|
|
29925
30075
|
{ type: TranslateService }
|
|
@@ -29978,11 +30128,59 @@ SocialTestingModule.decorators = [
|
|
|
29978
30128
|
},] }
|
|
29979
30129
|
];
|
|
29980
30130
|
|
|
30131
|
+
class JobProgressionTestService {
|
|
30132
|
+
constructor() {
|
|
30133
|
+
this.jobsSubject = new BehaviorSubject([]);
|
|
30134
|
+
}
|
|
30135
|
+
addJob(id, job) {
|
|
30136
|
+
const exists = this.jobsSubject.value.some(j => j.id === id);
|
|
30137
|
+
if (!exists) {
|
|
30138
|
+
job = job || new JobProgression(id);
|
|
30139
|
+
this.jobsSubject.next([...this.jobsSubject.value, job]);
|
|
30140
|
+
}
|
|
30141
|
+
}
|
|
30142
|
+
removeJob(id) {
|
|
30143
|
+
const jobs = this.jobsSubject.value;
|
|
30144
|
+
const index = jobs.findIndex(j => j.id === id);
|
|
30145
|
+
if (index !== -1) {
|
|
30146
|
+
jobs.splice(index, 1);
|
|
30147
|
+
this.jobsSubject.next(jobs);
|
|
30148
|
+
}
|
|
30149
|
+
}
|
|
30150
|
+
watchAll() {
|
|
30151
|
+
return this.jobsSubject.asObservable();
|
|
30152
|
+
}
|
|
30153
|
+
listenChanges(id, options) {
|
|
30154
|
+
return interval(100).pipe(take(111), map(value => {
|
|
30155
|
+
if (value <= 10) {
|
|
30156
|
+
return {
|
|
30157
|
+
id: id,
|
|
30158
|
+
name: `Job #${id}`,
|
|
30159
|
+
current: 0,
|
|
30160
|
+
total: 0,
|
|
30161
|
+
message: `Progression pending`
|
|
30162
|
+
};
|
|
30163
|
+
}
|
|
30164
|
+
value = value - 10;
|
|
30165
|
+
return {
|
|
30166
|
+
id: id,
|
|
30167
|
+
name: `Job #${id}`,
|
|
30168
|
+
current: value,
|
|
30169
|
+
total: 100,
|
|
30170
|
+
message: `Progression ${value}/100`
|
|
30171
|
+
};
|
|
30172
|
+
}));
|
|
30173
|
+
}
|
|
30174
|
+
}
|
|
30175
|
+
JobProgressionTestService.decorators = [
|
|
30176
|
+
{ type: Injectable }
|
|
30177
|
+
];
|
|
30178
|
+
|
|
29981
30179
|
// Environment
|
|
29982
30180
|
|
|
29983
30181
|
/**
|
|
29984
30182
|
* Generated bundle index. Do not edit.
|
|
29985
30183
|
*/
|
|
29986
30184
|
|
|
29987
|
-
export { APP_ABOUT_DEVELOPERS, APP_ABOUT_PARTNERS, APP_CONFIG_OPTIONS, APP_FORM_ERROR_I18N_KEYS, APP_GRAPHQL_TYPE_POLICIES, APP_HOME_BUTTONS, APP_LOCALES, APP_LOCAL_SETTINGS, APP_LOCAL_SETTINGS_OPTIONS, APP_LOCAL_STORAGE_TYPE_POLICIES, APP_MENU_ITEMS, APP_MENU_OPTIONS, APP_TESTING_PAGES, AboutModal, AbstractUserEventService, Account, AccountPage, AccountService, AccountToStringPipe, ActionsColumnComponent, AdminModule, AdminRoutingModule, Alerts, AndroidOsEnvironment, AnimationState, AppEditor, AppEditorOptions, AppEntityEditor, AppEntityEditorModal, AppEntityEditorModalOptions, AppForm, AppFormField, AppFormProvider, AppFormUtils, AppGestureConfig, AppGraphQLModule, AppHelpModal, AppIconComponent, AppIconModule, AppInMemoryTable, AppInstallUpgradeCard, AppListForm, AppLoadingSpinner, AppMenuModule, AppNullForm, AppPropertiesForm, AppTabEditor, AppTabEditorOptions, AppTable, AppTableUtils,
|
|
30185
|
+
export { APP_ABOUT_DEVELOPERS, APP_ABOUT_PARTNERS, APP_CONFIG_OPTIONS, APP_FORM_ERROR_I18N_KEYS, APP_GRAPHQL_TYPE_POLICIES, APP_HOME_BUTTONS, APP_JOB_PROGRESSION_SERVICE, APP_LOCALES, APP_LOCAL_SETTINGS, APP_LOCAL_SETTINGS_OPTIONS, APP_LOCAL_STORAGE_TYPE_POLICIES, APP_MENU_ITEMS, APP_MENU_OPTIONS, APP_TESTING_PAGES, APP_USER_EVENT_SERVICE, AboutModal, AbstractUserEventService, Account, AccountPage, AccountService, AccountToStringPipe, ActionsColumnComponent, AdminModule, AdminRoutingModule, Alerts, AndroidOsEnvironment, AnimationState, AppEditor, AppEditorOptions, AppEntityEditor, AppEntityEditorModal, AppEntityEditorModalOptions, AppForm, AppFormField, AppFormProvider, AppFormUtils, AppGestureConfig, AppGraphQLModule, AppHelpModal, AppIconComponent, AppIconModule, AppInMemoryTable, AppInstallUpgradeCard, AppListForm, AppLoadingSpinner, AppMenuModule, AppNullForm, AppPropertiesForm, AppTabEditor, AppTabEditorOptions, AppTable, AppTableUtils, AppValidatorService, AppendToInputDirective, ArrayFilterPipe, ArrayFirstPipe, ArrayIncludesPipe, ArrayLengthPipe, ArrayPluckPipe, AudioProvider, AuthForm, AuthGuardService, AuthModal, AutoTitleDirective, AutocompleteTestPage, AutofocusDirective, Base58, BaseEntityService, BaseGraphqlService, BaseGraphqlServiceOptions, BaseReferential, Beans, CORE_CONFIG_OPTIONS, CORE_TESTING_PAGES, CellValueChangeListener, ChipsTestPage, Color, ColorScale, ComponentDirtyGuard, ConfigService, Configuration, CoreModule, CoreTestingModule, CryptoService, CsvUtils, DATE_ISO_PATTERN, DATE_PATTERN, DATE_UNIX_MS_TIMESTAMP, DATE_UNIX_TIMESTAMP, DEFAULT_MENU_SHOW_WHEN, DEFAULT_PAGE_SIZE, DEFAULT_PAGE_SIZE_OPTIONS, DEFAULT_PLACEHOLDER_CHAR, DEFAULT_REQUIRED_COLUMNS, DateDiffDurationPipe, DateFormatPipe, DateFromNowPipe, DateTimeTestPage, DateUtils, Department, DepartmentToStringPipe, DragAndDropDirective, DurationPipe, ENTITIES_STORAGE_KEY_PREFIX, ENVIRONMENT, EmptyArrayPipe, EntitiesStorage, EntitiesTableDataSource, Entity, EntityClass, EntityClasses, EntityFilter, EntityFilterUtils, EntityMetadataComponent, EntityStore, EntityUtils, Environment, ErrorCodes, EvenPipe, FileResponse, FileService, FileSizePipe, FilesUtils, FormArrayHelper, FormButtonsBarComponent, FormButtonsBarToken, FormErrorTranslatePipe, FormErrorTranslator, FormFieldValuesHolder, FormGetArrayPipe, FormGetControlPipe, FormGetGroupPipe, FormGetPipe, FormGetValuePipe, Fragments$1 as Fragments, GraphqlService, HAMMER_PRESS_TIME, HAMMER_TAP_TIME, HighlightPipe, HomePage, Hotkeys, HotkeysDialogComponent, IMAGE_DEFAULTS, ImagesUtils, InMemoryEntitiesService, IsLoginAccountPipe, IsNilOrBlankPipe, IsNotNilOrBlankPipe, IsNotOnFieldModePipe, IsOnFieldModePipe, Job, JobModule, JobProgression, JobProgressionIcon, JobProgressionList, JobProgressionService, JobProgressionTestService, JobProgressionTestingPage, JobTestingModule, JobUtils, KEYBOARD_HIDE_DELAY_MS, LAT_LONG_DEFAULT_MAX_DECIMALS, LAT_LONG_PATTERNS, LatLongFormatPipe, LatLongTestPage, LatitudeFormatPipe, LocalSettingsService, LongitudeFormatPipe, MINIFY_ENTITY_FOR_LOCAL_STORAGE, MINIFY_ENTITY_FOR_POD, MOMENT_NO_TIME_PROPERTY, MapGetPipe, MapKeysPipe, MapValuesPipe, MatAutocompleteConfigHolder, MatAutocompleteField, MatBadgeIconDirective, MatBooleanField, MatChipsField, MatDate, MatDateShort, MatDateTime, MatDuration, MatLatLongField, MatNumpadComponent, MatNumpadContainerComponent, MatNumpadContent, MatPaginatorI18n, MatStepperI18n, MatSwipeField, MaterialTestingModule, MathAbsPipe, MenuComponent, MenuItems, MenuOptions, MenuService, Message, MessageFilter, MessageForm, MessageModal, MessageModule, MessageService, MessageTypeList, MessageTypes, MimeTypes, ModalToolbarComponent, NetworkService, NgInitDirective, NgVarDirective, NotEmptyArrayPipe, NumberFormatPipe, NumpadDirective, OddPipe, PRIORITIZED_AUTHORITIES, PUBKEY_REGEXP, Peer, Person, PersonFilter, PersonFragments, PersonService, PersonToStringPipe, PersonUtils, PersonValidatorService, PlatformService, ProgressBarService, ProgressInterceptor, PropertyFormatPipe, PropertyGetPipe, RESERVED_END_COLUMNS, RESERVED_START_COLUMNS, Referential, ReferentialFilter, ReferentialRef, ReferentialUtils, ReferentialValidatorService, RegisterConfirmPage, ResizableComponent, ResizableDirective, ResizableModule, SETTINGS_DISPLAY_COLUMNS, SETTINGS_FILTER, SETTINGS_PAGE_SIZE, SETTINGS_SORTED_COLUMN, SETTINGS_STORAGE_KEY, SETTINGS_TRANSIENT_PROPERTIES, SHARED_MATERIAL_TESTING_PAGES, SHARED_TESTING_PAGES, SOCIAL_TESTING_PAGES, SPACE_PLACEHOLDER_CHAR, SelectPeerModal, ServerErrorCodes, SettingsPage, SharedAsyncValidators, SharedDirectivesModule, SharedFormArrayValidators, SharedFormGroupValidators, SharedHotkeysModule, SharedMatAutocompleteModule, SharedMatBadgeIconModule, SharedMatBooleanModule, SharedMatChipsModule, SharedMatDateTimeModule, SharedMatDurationModule, SharedMatLatLongModule, SharedMatNumpadModule, SharedMatSwipeModule, SharedMaterialModule, SharedModule, SharedPipesModule, SharedRoutingModule, SharedTestingModule, SharedTestsPage, SharedValidators, SocialErrorCodes, SocialModule, SocialModuleOptionsToken, SocialTestingModule, Software, StartableService, StatusById, StatusIds, StatusList, StrIncludesPipe, StrLengthPipe, SwipeTestPage, TableSelectColumnsComponent, TableTestPage, TableTestingModule, TextForm, TextPopover, TextPopoverTestingModule, TextPopoverTestingPage, ToStringPipe, Toasts, ToolbarComponent, ToolbarToken, TranslatablePipe, TranslateContextPipe, TranslateContextService, UploadFile, UploadFileComponent, UploadFilePopover, UploadFileTestingModule, UploadFileTestingPage, UriUtils, UserEventModule, UserEventNotificationIcon, UserEventTestService, UserEventTestingModule, UserEventTestingPage, UserSettings, UsersPage, accountToString, adaptValueToControl, addValueInArray, arrayDistinct, arrayGroupBy, arraySize, asInputElement, canHaveFocus, capitalizeFirstLetter, chainPromises, changeCaseToUnderscore, clearValueInArray, copyEntity2Form, createPromiseEvent, createPromiseEventEmitter, departmentToString, departmentsToString, disableControls, emitPromiseEvent, entityToString, equals, equalsOrNil, escapeRegExp, fadeInAnimation, fadeInOutAnimation, filterFalse, filterNotNil, filterNumberInput, filterTrue, firstArrayValue, firstFalse, firstFalsePromise, firstNotNil, firstNotNilPromise, firstTrue, firstTruePromise, focusInput, focusNextInput, focusPreviousInput, formatLatitude, formatLongitude, fromDateISOString, fromScrollEndEvent, fromUnixMsTimestamp, fromUnixTimestamp, getCaretPosition, getColorContrast, getColorShade, getColorTint, getConnectionType, getControlFromPath, getFocusableInputElements, getFormErrors, getFormValueFromEntity, getProperty, getPropertyByPath, getPropertyByPathAsString, getRandomImage, hexToRgb, hexToRgbArray, isAndroid, isBlankString, isControlHasInput, isCordova, isEmptyArray, isIOS, isInputElement, isInstanceOf, isInt, isMobile, isNil, isNilOrBlank, isNilOrNaN, isNotEmptyArray, isNotNil, isNotNilBoolean, isNotNilOrBlank, isNotNilOrNaN, isNotNilString, isNumber, isNumberRange, isProgressEvent, isResponseEvent, isTouchUi, isWindows, joinProperties, joinPropertiesPath, logFormErrors, markAllAsTouched, markAsUntouched, markControlAsTouched, markFormGroupAsTouched, matchMedia, matchUpperCase, mergeLoadResult, mixHex, moment$5 as moment, moveInputCaretToSeparator, noTrailingSlash, notNilOrDefault, nullIfUndefined, parseLatitudeOrLongitude, propertiesPathComparator, propertyComparator, propertyPathComparator, referentialToString, referentialsToString, remove, removeAll, removeDiacritics, removeDuplicatesFromArray, removeEnd, removeValueInArray, replaceAll, resetCalculatedValue, resizeArray, rgbArrayToHex, rgbToHex, round, scrollFactory, selectInputContent, selectInputRange, setCalculatedValue, setTabIndex, sleep, slideInOutAnimation, slideUpDownAnimation, sort, splitById, splitByProperty, startsWithUpperCase, suggestFromArray, suggestFromStringArray, tabindexComparator, testUserAgent, toBoolean, toDateISOString, toDuration, toFloat, toInt, toNotNil, toNumber, trimEmptyToNull, tz, uncapitalizeFirstLetter, updateValueAndValidity, waitFor, waitForFalse, waitForTrue, waitIdle, waitWhilePending, ɵ0, CustomReuseStrategy as ɵa, MatNumpadDomService as ɵb, StartableObservableService as ɵc, isFocusableElement as ɵd, RegisterForm as ɵe, AccountValidatorService as ɵf, RegisterModal as ɵg, UserSettingsValidatorService as ɵh, LocalSettingsValidatorService as ɵi, AppUpdateOfflineModeCard as ɵj, UserEventNotificationList as ɵk, DateTestPage as ɵl, NumpadTestPage as ɵm, MatBadgeIconTestPage as ɵn, ToastTestingModule as ɵo, ToastTestingPage as ɵp };
|
|
29988
30186
|
//# sourceMappingURL=sumaris-net.ngx-components.js.map
|