@sumaris-net/ngx-components 1.23.15 → 1.23.17
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 +486 -225
- 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 +24 -10
- 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 +54 -26
- 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 +372 -168
- 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 +5 -5
- 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,22 +18290,27 @@ 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() {
|
|
18189
18306
|
return __awaiter(this, void 0, void 0, function* () {
|
|
18190
18307
|
if (this.debug)
|
|
18191
18308
|
console.debug('[memory-data-service] Stopping...');
|
|
18192
|
-
this.savingSubject.next(false);
|
|
18193
|
-
this.dirtySubject.next(false);
|
|
18194
18309
|
this.dataSubject.complete();
|
|
18195
|
-
this.dataSubject
|
|
18310
|
+
this.dataSubject.unsubscribe();
|
|
18311
|
+
this._hiddenData = null;
|
|
18312
|
+
this.markAsSaved();
|
|
18313
|
+
this.markAsPristine();
|
|
18196
18314
|
});
|
|
18197
18315
|
}
|
|
18198
18316
|
ngOnDestroy() {
|
|
@@ -18200,12 +18318,17 @@ class InMemoryEntitiesService extends StartableService {
|
|
|
18200
18318
|
}
|
|
18201
18319
|
setValue(data) {
|
|
18202
18320
|
if (this.dataSubject.value !== data) {
|
|
18203
|
-
|
|
18204
|
-
|
|
18205
|
-
|
|
18206
|
-
|
|
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
|
+
}
|
|
18207
18331
|
}
|
|
18208
|
-
this.markAsPristine();
|
|
18209
18332
|
}
|
|
18210
18333
|
loadAll(offset, size, sortBy, sortDirection, filter, opts) {
|
|
18211
18334
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -18215,11 +18338,20 @@ class InMemoryEntitiesService extends StartableService {
|
|
|
18215
18338
|
if (isNil(originalData)) {
|
|
18216
18339
|
console.warn('[memory-data-service] Cannot load all: no value set. Will return empty result');
|
|
18217
18340
|
}
|
|
18218
|
-
|
|
18219
|
-
|
|
18341
|
+
try {
|
|
18342
|
+
// Wait service is ready
|
|
18220
18343
|
yield this.ready();
|
|
18221
|
-
|
|
18222
|
-
yield this.
|
|
18344
|
+
// Wait while busy (e.g. when saving, or deleting)
|
|
18345
|
+
yield this.waitIdle({ stopError: false /*avoid error when stopped*/ });
|
|
18346
|
+
}
|
|
18347
|
+
catch (err) {
|
|
18348
|
+
// Should be a stop error: log and continue
|
|
18349
|
+
if (!this.stopped)
|
|
18350
|
+
console.error('Unexpected error, while waiting :', err);
|
|
18351
|
+
}
|
|
18352
|
+
// Make sure service is not stopped
|
|
18353
|
+
if (this.stopped)
|
|
18354
|
+
return undefined;
|
|
18223
18355
|
const excludedDataByFilter = [];
|
|
18224
18356
|
let excludedDataByPagination;
|
|
18225
18357
|
try {
|
|
@@ -18279,10 +18411,10 @@ class InMemoryEntitiesService extends StartableService {
|
|
|
18279
18411
|
if (nextOffset < total) {
|
|
18280
18412
|
res.fetchMore = () => this.loadAll(nextOffset, size, sortBy, sortDirection, filter, opts)
|
|
18281
18413
|
.then(res => {
|
|
18282
|
-
var _a;
|
|
18414
|
+
var _a, _b;
|
|
18283
18415
|
// Update hidden data (remove new fetched item)
|
|
18284
18416
|
if ((_a = res.data) === null || _a === void 0 ? void 0 : _a.length) {
|
|
18285
|
-
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));
|
|
18286
18418
|
}
|
|
18287
18419
|
return res;
|
|
18288
18420
|
});
|
|
@@ -18303,7 +18435,8 @@ class InMemoryEntitiesService extends StartableService {
|
|
|
18303
18435
|
return this.dataSubject
|
|
18304
18436
|
.pipe(takeUntil(this.stopSubject),
|
|
18305
18437
|
// Warn if waiting value to be set
|
|
18306
|
-
tap((data) => this.debug && !data && console.debug('[memory-data-service] Waiting value to be set...')), filter(isNotNil), mergeMap(_ => this.loadAll(offset, size, sortBy, sortDirection, filterData, options)))
|
|
18438
|
+
tap((data) => this.debug && !data && console.debug('[memory-data-service] Waiting value to be set...')), filter(isNotNil), mergeMap(_ => this.loadAll(offset, size, sortBy, sortDirection, filterData, options)), filter(isNotNil) // Skip no result (e.g. when stopped)
|
|
18439
|
+
);
|
|
18307
18440
|
}
|
|
18308
18441
|
saveAll(data, options) {
|
|
18309
18442
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -18380,6 +18513,11 @@ class InMemoryEntitiesService extends StartableService {
|
|
|
18380
18513
|
var _a;
|
|
18381
18514
|
return ((_a = this._hiddenData) === null || _a === void 0 ? void 0 : _a.length) || 0;
|
|
18382
18515
|
}
|
|
18516
|
+
waitIdle(opts) {
|
|
18517
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
18518
|
+
yield this.waitWhileSaving(opts);
|
|
18519
|
+
});
|
|
18520
|
+
}
|
|
18383
18521
|
/* -- protected methods -- */
|
|
18384
18522
|
filter(data, _filter, hiddenData) {
|
|
18385
18523
|
// if filter is DataFilter instance, use its test function
|
|
@@ -18405,9 +18543,11 @@ class InMemoryEntitiesService extends StartableService {
|
|
|
18405
18543
|
}));
|
|
18406
18544
|
}
|
|
18407
18545
|
waitWhileSaving(opts) {
|
|
18408
|
-
|
|
18409
|
-
|
|
18410
|
-
|
|
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
|
+
});
|
|
18411
18551
|
}
|
|
18412
18552
|
markAsSaving() {
|
|
18413
18553
|
if (!this.savingSubject.value) {
|
|
@@ -22384,8 +22524,8 @@ class EntitiesTableDataSource extends TableDataSource {
|
|
|
22384
22524
|
this._debug = false;
|
|
22385
22525
|
this._creating = false;
|
|
22386
22526
|
this._saving = false;
|
|
22387
|
-
this._stopWatching$ = new Subject();
|
|
22388
22527
|
this._fetchMoreFn = null;
|
|
22528
|
+
this._stopWatchSubject = new Subject();
|
|
22389
22529
|
this.loadingSubject = new BehaviorSubject(undefined);
|
|
22390
22530
|
this._entityName = removeEnd((new dataType()).__typename || 'UnknownVO', 'VO');
|
|
22391
22531
|
this._debug = (options === null || options === void 0 ? void 0 : options.suppressErrors) === false && !environment.production;
|
|
@@ -22422,15 +22562,27 @@ class EntitiesTableDataSource extends TableDataSource {
|
|
|
22422
22562
|
get loading() {
|
|
22423
22563
|
return this.loadingSubject.value !== false; // Should be true when undefined (initial state)
|
|
22424
22564
|
}
|
|
22565
|
+
/**
|
|
22566
|
+
* @deprecated use disconnect
|
|
22567
|
+
*/
|
|
22425
22568
|
ngOnDestroy() {
|
|
22426
|
-
this.
|
|
22427
|
-
|
|
22428
|
-
|
|
22429
|
-
|
|
22430
|
-
|
|
22569
|
+
this.close();
|
|
22570
|
+
}
|
|
22571
|
+
/**
|
|
22572
|
+
* @deprecated use disconnect
|
|
22573
|
+
*/
|
|
22574
|
+
close() {
|
|
22575
|
+
if (!this._stopWatchSubject.closed) {
|
|
22576
|
+
console.debug('[table-datasource] Closing...');
|
|
22577
|
+
this._stopWatchSubject.next();
|
|
22578
|
+
this._stopWatchSubject.complete();
|
|
22579
|
+
this._stopWatchSubject.unsubscribe();
|
|
22580
|
+
this.loadingSubject.complete();
|
|
22581
|
+
this.loadingSubject.unsubscribe();
|
|
22582
|
+
}
|
|
22431
22583
|
}
|
|
22432
22584
|
watchAll(offset, size, sortBy, sortDirection, filter) {
|
|
22433
|
-
this.
|
|
22585
|
+
this._stopWatchSubject.next();
|
|
22434
22586
|
this._fetchMoreFn = null;
|
|
22435
22587
|
this.markAsLoading();
|
|
22436
22588
|
return this.dataService.watchAll(offset, size, sortBy, sortDirection, filter, this.serviceOptions)
|
|
@@ -22448,7 +22600,7 @@ class EntitiesTableDataSource extends TableDataSource {
|
|
|
22448
22600
|
return res;
|
|
22449
22601
|
}),
|
|
22450
22602
|
// Stop this pipe next time we call watchAll()
|
|
22451
|
-
takeUntil(this.
|
|
22603
|
+
takeUntil(this._stopWatchSubject)
|
|
22452
22604
|
// ⚠ Notice: Don't put any operator after takeUntil to avoid potential subscription leaks
|
|
22453
22605
|
);
|
|
22454
22606
|
}
|
|
@@ -22550,11 +22702,13 @@ class EntitiesTableDataSource extends TableDataSource {
|
|
|
22550
22702
|
}
|
|
22551
22703
|
connect(collectionViewer) {
|
|
22552
22704
|
// DEBUG console.debug("[entities-datasource] connect");
|
|
22705
|
+
this.viewer = collectionViewer;
|
|
22553
22706
|
return super.connect(collectionViewer);
|
|
22554
22707
|
}
|
|
22555
22708
|
disconnect(collectionViewer) {
|
|
22709
|
+
console.debug('[table-datasource] Disconnecting...');
|
|
22556
22710
|
super.disconnect(collectionViewer);
|
|
22557
|
-
this.
|
|
22711
|
+
this.close();
|
|
22558
22712
|
}
|
|
22559
22713
|
waitIdle(debounceTimeMs) {
|
|
22560
22714
|
return firstFalsePromise(this.loadingSubject
|
|
@@ -23106,7 +23260,6 @@ class AppTable {
|
|
|
23106
23260
|
this.listenSortAndPaginationEvents();
|
|
23107
23261
|
}
|
|
23108
23262
|
ngOnDestroy() {
|
|
23109
|
-
var _a;
|
|
23110
23263
|
this._subscription.unsubscribe();
|
|
23111
23264
|
// Unsubscribe column value changes
|
|
23112
23265
|
Object.keys(this._cellValueChangesDefs).forEach(col => this.stopCellValueChanges(col, true));
|
|
@@ -23131,7 +23284,6 @@ class AppTable {
|
|
|
23131
23284
|
this.onError.unsubscribe();
|
|
23132
23285
|
this.destroySubject.next();
|
|
23133
23286
|
this.destroySubject.unsubscribe();
|
|
23134
|
-
(_a = this._dataSource) === null || _a === void 0 ? void 0 : _a.ngOnDestroy();
|
|
23135
23287
|
}
|
|
23136
23288
|
updateView(res, opts) {
|
|
23137
23289
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -23166,12 +23318,11 @@ class AppTable {
|
|
|
23166
23318
|
}
|
|
23167
23319
|
}
|
|
23168
23320
|
resetDataSource() {
|
|
23169
|
-
var _a;
|
|
23170
23321
|
if (this._dataSourceLoadingSubscription) {
|
|
23171
23322
|
this._dataSourceLoadingSubscription.unsubscribe();
|
|
23172
23323
|
this._subscription.remove(this._dataSourceLoadingSubscription);
|
|
23173
23324
|
}
|
|
23174
|
-
|
|
23325
|
+
//this._dataSource?.close();
|
|
23175
23326
|
this._dataSource = null;
|
|
23176
23327
|
}
|
|
23177
23328
|
addColumnDef(column) {
|
|
@@ -26145,7 +26296,7 @@ const SocialErrorCodes = {
|
|
|
26145
26296
|
};
|
|
26146
26297
|
|
|
26147
26298
|
const moment$6 = momentImported;
|
|
26148
|
-
const
|
|
26299
|
+
const APP_USER_EVENT_SERVICE = new InjectionToken('UserEventService');
|
|
26149
26300
|
class AbstractUserEventService extends BaseGraphqlService {
|
|
26150
26301
|
constructor(graphql, accountService, network, translate, options) {
|
|
26151
26302
|
super(graphql, options);
|
|
@@ -26815,7 +26966,7 @@ UserEventNotificationList.ctorParameters = () => [
|
|
|
26815
26966
|
{ type: ChangeDetectorRef },
|
|
26816
26967
|
{ type: PopoverController },
|
|
26817
26968
|
{ type: LocalSettingsService, decorators: [{ type: Optional }] },
|
|
26818
|
-
{ type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [
|
|
26969
|
+
{ type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [APP_USER_EVENT_SERVICE,] }] }
|
|
26819
26970
|
];
|
|
26820
26971
|
UserEventNotificationList.propDecorators = {
|
|
26821
26972
|
debug: [{ type: Input }],
|
|
@@ -26832,11 +26983,12 @@ UserEventNotificationList.propDecorators = {
|
|
|
26832
26983
|
ionItems: [{ type: ViewChildren, args: [IonItem,] }]
|
|
26833
26984
|
};
|
|
26834
26985
|
|
|
26835
|
-
class
|
|
26836
|
-
constructor(userEventService, accountService, popoverController) {
|
|
26986
|
+
class UserEventNotificationIcon {
|
|
26987
|
+
constructor(userEventService, accountService, popoverController, cd) {
|
|
26837
26988
|
this.userEventService = userEventService;
|
|
26838
26989
|
this.accountService = accountService;
|
|
26839
26990
|
this.popoverController = popoverController;
|
|
26991
|
+
this.cd = cd;
|
|
26840
26992
|
this.debug = false;
|
|
26841
26993
|
this.titleI18n = 'SOCIAL.USER_EVENT.NOTIFICATION.TITLE';
|
|
26842
26994
|
this.disabled = false;
|
|
@@ -26850,15 +27002,23 @@ class AppUserEventNotificationIcon {
|
|
|
26850
27002
|
return of();
|
|
26851
27003
|
return this.userEventService
|
|
26852
27004
|
.countSubject
|
|
26853
|
-
.pipe(
|
|
27005
|
+
.pipe(tap(value => {
|
|
27006
|
+
const visible = !this.autoHide || value > 0;
|
|
27007
|
+
if (this.visible !== visible) {
|
|
27008
|
+
this.visible = visible;
|
|
27009
|
+
this.cd.markForCheck();
|
|
27010
|
+
}
|
|
27011
|
+
}), map(value => value === 0 ? undefined : value));
|
|
26854
27012
|
}
|
|
26855
27013
|
ngOnInit() {
|
|
26856
27014
|
return __awaiter(this, void 0, void 0, function* () {
|
|
26857
27015
|
if (isNil(this.userEventService)) {
|
|
26858
27016
|
console.warn(`${this._logPrefix}No service injected`);
|
|
26859
27017
|
this.disabled = true;
|
|
27018
|
+
this.visible = false;
|
|
26860
27019
|
return;
|
|
26861
27020
|
}
|
|
27021
|
+
this.visible = toBoolean(this.visible, !this.autoHide);
|
|
26862
27022
|
// Wait service
|
|
26863
27023
|
yield this.userEventService.ready();
|
|
26864
27024
|
// Subscribe to read event
|
|
@@ -26899,23 +27059,25 @@ class AppUserEventNotificationIcon {
|
|
|
26899
27059
|
}
|
|
26900
27060
|
}
|
|
26901
27061
|
}
|
|
26902
|
-
|
|
27062
|
+
UserEventNotificationIcon.decorators = [
|
|
26903
27063
|
{ type: Component, args: [{
|
|
26904
27064
|
selector: 'app-user-event-notification-icon',
|
|
26905
|
-
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",
|
|
27065
|
+
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",
|
|
26906
27066
|
changeDetection: ChangeDetectionStrategy.OnPush
|
|
26907
27067
|
},] }
|
|
26908
27068
|
];
|
|
26909
|
-
|
|
26910
|
-
{ type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [
|
|
27069
|
+
UserEventNotificationIcon.ctorParameters = () => [
|
|
27070
|
+
{ type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [APP_USER_EVENT_SERVICE,] }] },
|
|
26911
27071
|
{ type: AccountService },
|
|
26912
|
-
{ type: PopoverController }
|
|
27072
|
+
{ type: PopoverController },
|
|
27073
|
+
{ type: ChangeDetectorRef }
|
|
26913
27074
|
];
|
|
26914
|
-
|
|
27075
|
+
UserEventNotificationIcon.propDecorators = {
|
|
26915
27076
|
debug: [{ type: Input }],
|
|
26916
27077
|
titleI18n: [{ type: Input }],
|
|
26917
27078
|
disabled: [{ type: Input }],
|
|
26918
|
-
filter: [{ type: Input }]
|
|
27079
|
+
filter: [{ type: Input }],
|
|
27080
|
+
autoHide: [{ type: Input }]
|
|
26919
27081
|
};
|
|
26920
27082
|
|
|
26921
27083
|
class UserEventModule {
|
|
@@ -26929,11 +27091,11 @@ UserEventModule.decorators = [
|
|
|
26929
27091
|
NgxJdenticonModule
|
|
26930
27092
|
],
|
|
26931
27093
|
declarations: [
|
|
26932
|
-
|
|
27094
|
+
UserEventNotificationIcon,
|
|
26933
27095
|
UserEventNotificationList
|
|
26934
27096
|
],
|
|
26935
27097
|
exports: [
|
|
26936
|
-
|
|
27098
|
+
UserEventNotificationIcon
|
|
26937
27099
|
]
|
|
26938
27100
|
},] }
|
|
26939
27101
|
];
|
|
@@ -27190,16 +27352,18 @@ JobProgression = JobProgression_1 = __decorate([
|
|
|
27190
27352
|
EntityClass({ typename: 'JobProgressionVO' })
|
|
27191
27353
|
], JobProgression);
|
|
27192
27354
|
|
|
27193
|
-
const
|
|
27194
|
-
const
|
|
27195
|
-
|
|
27196
|
-
id
|
|
27197
|
-
|
|
27198
|
-
|
|
27199
|
-
|
|
27200
|
-
|
|
27201
|
-
|
|
27202
|
-
}
|
|
27355
|
+
const APP_JOB_PROGRESSION_SERVICE = new InjectionToken('JobProgressionService');
|
|
27356
|
+
const QUERIES = {
|
|
27357
|
+
listenChanges: gql `subscription UpdateJobProgression($id: Int!, $interval: Int){
|
|
27358
|
+
data: updateJobProgression(id: $id, interval: $interval) {
|
|
27359
|
+
id
|
|
27360
|
+
name
|
|
27361
|
+
message
|
|
27362
|
+
current
|
|
27363
|
+
total
|
|
27364
|
+
}
|
|
27365
|
+
}`
|
|
27366
|
+
};
|
|
27203
27367
|
class JobProgressionService extends BaseGraphqlService {
|
|
27204
27368
|
constructor(graphql, environment) {
|
|
27205
27369
|
super(graphql, environment);
|
|
@@ -27209,13 +27373,22 @@ class JobProgressionService extends BaseGraphqlService {
|
|
|
27209
27373
|
// For DEV only
|
|
27210
27374
|
this._debug = !(environment === null || environment === void 0 ? void 0 : environment.production);
|
|
27211
27375
|
}
|
|
27376
|
+
watchAll(options) {
|
|
27377
|
+
return of([]); // TODO
|
|
27378
|
+
}
|
|
27379
|
+
addJob(id, job) {
|
|
27380
|
+
throw new Error('no implemented');
|
|
27381
|
+
}
|
|
27382
|
+
removeJob(id) {
|
|
27383
|
+
throw new Error('no implemented');
|
|
27384
|
+
}
|
|
27212
27385
|
listenChanges(id, options) {
|
|
27213
27386
|
if (isNil(id))
|
|
27214
27387
|
throw new Error(`${this._logPrefix}Missing argument 'id'`);
|
|
27215
27388
|
if (this._debug)
|
|
27216
27389
|
console.debug(`${this._logPrefix}[WS] Listening changes for job progression {${id}}...`);
|
|
27217
27390
|
return this.graphql.subscribe({
|
|
27218
|
-
query:
|
|
27391
|
+
query: QUERIES.listenChanges,
|
|
27219
27392
|
fetchPolicy: options === null || options === void 0 ? void 0 : options.fetchPolicy,
|
|
27220
27393
|
variables: { id, interval: toNumber(options === null || options === void 0 ? void 0 : options.interval, 10) },
|
|
27221
27394
|
error: { code: SocialErrorCodes.SUBSCRIBE_JOB_PROGRESSION_ERROR, message: 'SOCIAL.ERROR.SUBSCRIBE_JOB_PROGRESSION_ERROR' }
|
|
@@ -27254,7 +27427,7 @@ JobProgressionList.propDecorators = {
|
|
|
27254
27427
|
jobProgressions: [{ type: Input }]
|
|
27255
27428
|
};
|
|
27256
27429
|
|
|
27257
|
-
class
|
|
27430
|
+
class JobProgressionIcon {
|
|
27258
27431
|
constructor(jobProgressionService, popoverController, cd) {
|
|
27259
27432
|
this.jobProgressionService = jobProgressionService;
|
|
27260
27433
|
this.popoverController = popoverController;
|
|
@@ -27277,13 +27450,17 @@ class JobProgressionComponent {
|
|
|
27277
27450
|
console.warn(`${this._logPrefix}No service injected`);
|
|
27278
27451
|
}
|
|
27279
27452
|
// parse options
|
|
27280
|
-
this.autoHide = toBoolean((_a = this.options) === null || _a === void 0 ? void 0 : _a.autoHide
|
|
27453
|
+
this.autoHide = toBoolean(this.autoHide, ((_a = this.options) === null || _a === void 0 ? void 0 : _a.autoHide) || false);
|
|
27281
27454
|
this.visible = !this.autoHide;
|
|
27282
27455
|
this.autoHideDelay = toNumber((_b = this.options) === null || _b === void 0 ? void 0 : _b.autoHideDelay, 1000);
|
|
27283
27456
|
this.autoRemove = toBoolean((_c = this.options) === null || _c === void 0 ? void 0 : _c.autoRemove, true);
|
|
27284
27457
|
this.autoRemoveDelay = toNumber((_d = this.options) === null || _d === void 0 ? void 0 : _d.autoRemoveDelay, 1000);
|
|
27458
|
+
this._subscriptions.add(this.jobProgressionService.watchAll()
|
|
27459
|
+
.subscribe(items => {
|
|
27460
|
+
(items || []).forEach(item => this.addJob(item.id, item));
|
|
27461
|
+
}));
|
|
27285
27462
|
}
|
|
27286
|
-
addJob(id) {
|
|
27463
|
+
addJob(id, job) {
|
|
27287
27464
|
if (isNil(this.jobProgressionService)) {
|
|
27288
27465
|
console.warn(`${this._logPrefix}No service injected. Can't add a job`);
|
|
27289
27466
|
return;
|
|
@@ -27296,8 +27473,11 @@ class JobProgressionComponent {
|
|
|
27296
27473
|
console.debug(`${this._logPrefix}Add job id=${id}`);
|
|
27297
27474
|
}
|
|
27298
27475
|
// Adding empty job progression
|
|
27299
|
-
|
|
27300
|
-
|
|
27476
|
+
let progression = this.getProgression(id);
|
|
27477
|
+
if (!progression) {
|
|
27478
|
+
progression = job || new JobProgression(id);
|
|
27479
|
+
this.jobProgressions.push(progression);
|
|
27480
|
+
}
|
|
27301
27481
|
this.disabled = false;
|
|
27302
27482
|
const sub = this.jobProgressionService.listenChanges(id)
|
|
27303
27483
|
.pipe(filter(progression => {
|
|
@@ -27425,23 +27605,24 @@ class JobProgressionComponent {
|
|
|
27425
27605
|
this._subscriptions.unsubscribe();
|
|
27426
27606
|
}
|
|
27427
27607
|
}
|
|
27428
|
-
|
|
27608
|
+
JobProgressionIcon.decorators = [
|
|
27429
27609
|
{ type: Component, args: [{
|
|
27430
|
-
selector: 'app-job-progression',
|
|
27610
|
+
selector: 'app-job-progression-icon',
|
|
27431
27611
|
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",
|
|
27432
27612
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
27433
27613
|
styles: [".floating-spinner{position:absolute;top:6px;left:5px}"]
|
|
27434
27614
|
},] }
|
|
27435
27615
|
];
|
|
27436
|
-
|
|
27437
|
-
{ type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [
|
|
27616
|
+
JobProgressionIcon.ctorParameters = () => [
|
|
27617
|
+
{ type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [APP_JOB_PROGRESSION_SERVICE,] }] },
|
|
27438
27618
|
{ type: PopoverController },
|
|
27439
27619
|
{ type: ChangeDetectorRef }
|
|
27440
27620
|
];
|
|
27441
|
-
|
|
27621
|
+
JobProgressionIcon.propDecorators = {
|
|
27442
27622
|
debug: [{ type: Input }],
|
|
27443
27623
|
titleI18n: [{ type: Input }],
|
|
27444
27624
|
options: [{ type: Input }],
|
|
27625
|
+
autoHide: [{ type: Input }],
|
|
27445
27626
|
jobFinished: [{ type: Output }]
|
|
27446
27627
|
};
|
|
27447
27628
|
|
|
@@ -27455,11 +27636,11 @@ JobModule.decorators = [
|
|
|
27455
27636
|
TranslateModule.forChild(),
|
|
27456
27637
|
],
|
|
27457
27638
|
declarations: [
|
|
27458
|
-
|
|
27639
|
+
JobProgressionIcon,
|
|
27459
27640
|
JobProgressionList
|
|
27460
27641
|
],
|
|
27461
27642
|
exports: [
|
|
27462
|
-
|
|
27643
|
+
JobProgressionIcon
|
|
27463
27644
|
]
|
|
27464
27645
|
},] }
|
|
27465
27646
|
];
|
|
@@ -29150,7 +29331,7 @@ class TableTestPage extends AppTable {
|
|
|
29150
29331
|
console.debug('[test-table] Destroying table...');
|
|
29151
29332
|
super.ngOnDestroy();
|
|
29152
29333
|
this.stopTimer();
|
|
29153
|
-
this.dataService.stop();
|
|
29334
|
+
//this.dataService.stop();
|
|
29154
29335
|
}
|
|
29155
29336
|
restoreFilter() {
|
|
29156
29337
|
const json = this.settings.getPageSettings(this.settingsId, 'filter');
|
|
@@ -29411,75 +29592,50 @@ CoreTestingModule.decorators = [
|
|
|
29411
29592
|
},] }
|
|
29412
29593
|
];
|
|
29413
29594
|
|
|
29414
|
-
class JobProgressionTestService {
|
|
29415
|
-
listenChanges(id, options) {
|
|
29416
|
-
return interval(100).pipe(take(111), map(value => {
|
|
29417
|
-
if (value <= 10) {
|
|
29418
|
-
return {
|
|
29419
|
-
id: id,
|
|
29420
|
-
name: `Job #${id}`,
|
|
29421
|
-
current: 0,
|
|
29422
|
-
total: 0,
|
|
29423
|
-
message: `Progression pending`
|
|
29424
|
-
};
|
|
29425
|
-
}
|
|
29426
|
-
value = value - 10;
|
|
29427
|
-
return {
|
|
29428
|
-
id: id,
|
|
29429
|
-
name: `Job #${id}`,
|
|
29430
|
-
current: value,
|
|
29431
|
-
total: 100,
|
|
29432
|
-
message: `Progression ${value}/100`
|
|
29433
|
-
};
|
|
29434
|
-
}));
|
|
29435
|
-
}
|
|
29436
|
-
}
|
|
29437
|
-
JobProgressionTestService.decorators = [
|
|
29438
|
-
{ type: Injectable }
|
|
29439
|
-
];
|
|
29440
|
-
|
|
29441
29595
|
class JobProgressionTestingPage {
|
|
29442
|
-
constructor() {
|
|
29443
|
-
this.
|
|
29596
|
+
constructor(jobProgressionService) {
|
|
29597
|
+
this.jobProgressionService = jobProgressionService;
|
|
29598
|
+
this.jobId = 0;
|
|
29599
|
+
this.job = null;
|
|
29444
29600
|
this.options = {
|
|
29445
29601
|
autoHide: true
|
|
29446
29602
|
};
|
|
29447
|
-
this.job = new JobProgression();
|
|
29448
|
-
this.job.id = 0;
|
|
29449
|
-
this.job.name = 'test';
|
|
29450
|
-
this.job.current = 0;
|
|
29451
|
-
this.job.total = 100;
|
|
29452
29603
|
}
|
|
29453
29604
|
incrementJob(value) {
|
|
29454
|
-
this.job
|
|
29605
|
+
this.job = this.job || this.createJob();
|
|
29606
|
+
this.job.current += value || 0;
|
|
29455
29607
|
this.job.message = `Fake progression (very long message very long message very long message very long message) ${this.job.current}/100`;
|
|
29456
29608
|
if (this.job.current > this.job.total) {
|
|
29457
|
-
this.
|
|
29609
|
+
this.jobProgressionService.removeJob(this.job.id);
|
|
29458
29610
|
this.job.current = 0;
|
|
29611
|
+
this.job = null; // Forget the job
|
|
29459
29612
|
}
|
|
29460
|
-
|
|
29461
|
-
this.jobProgression.jobProgressions.push(this.job);
|
|
29462
|
-
}
|
|
29463
|
-
this.jobProgression.updateValue();
|
|
29613
|
+
this.jobProgressionIcon.updateValue();
|
|
29464
29614
|
}
|
|
29465
29615
|
addJob() {
|
|
29466
|
-
|
|
29467
|
-
|
|
29468
|
-
|
|
29616
|
+
this.job = this.createJob();
|
|
29617
|
+
}
|
|
29618
|
+
createJob() {
|
|
29619
|
+
const job = new JobProgression();
|
|
29620
|
+
job.id = ++this.jobId;
|
|
29621
|
+
job.name = 'test';
|
|
29622
|
+
job.current = 0;
|
|
29623
|
+
job.total = 100;
|
|
29624
|
+
this.jobProgressionService.addJob(job.id, job);
|
|
29625
|
+
return job;
|
|
29469
29626
|
}
|
|
29470
29627
|
}
|
|
29471
29628
|
JobProgressionTestingPage.decorators = [
|
|
29472
29629
|
{ type: Component, args: [{
|
|
29473
29630
|
selector: 'job-progression-testing',
|
|
29474
|
-
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 #
|
|
29475
|
-
providers: [
|
|
29476
|
-
{ provide: JobProgressionServiceToken, useClass: JobProgressionTestService }
|
|
29477
|
-
]
|
|
29631
|
+
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"
|
|
29478
29632
|
},] }
|
|
29479
29633
|
];
|
|
29480
|
-
JobProgressionTestingPage.ctorParameters = () => [
|
|
29634
|
+
JobProgressionTestingPage.ctorParameters = () => [
|
|
29635
|
+
{ type: JobProgressionService, decorators: [{ type: Inject, args: [APP_JOB_PROGRESSION_SERVICE,] }] }
|
|
29636
|
+
];
|
|
29481
29637
|
JobProgressionTestingPage.propDecorators = {
|
|
29482
|
-
|
|
29638
|
+
jobProgressionIcon: [{ type: ViewChild, args: ['icon',] }]
|
|
29483
29639
|
};
|
|
29484
29640
|
|
|
29485
29641
|
class JobTestingModule {
|
|
@@ -29911,7 +30067,7 @@ UserEventTestingPage.decorators = [
|
|
|
29911
30067
|
},] }
|
|
29912
30068
|
];
|
|
29913
30069
|
UserEventTestingPage.ctorParameters = () => [
|
|
29914
|
-
{ type: UserEventTestService, decorators: [{ type: Inject, args: [
|
|
30070
|
+
{ type: UserEventTestService, decorators: [{ type: Inject, args: [APP_USER_EVENT_SERVICE,] }] },
|
|
29915
30071
|
{ type: Router },
|
|
29916
30072
|
{ type: AlertController },
|
|
29917
30073
|
{ type: TranslateService }
|
|
@@ -29970,11 +30126,59 @@ SocialTestingModule.decorators = [
|
|
|
29970
30126
|
},] }
|
|
29971
30127
|
];
|
|
29972
30128
|
|
|
30129
|
+
class JobProgressionTestService {
|
|
30130
|
+
constructor() {
|
|
30131
|
+
this.jobsSubject = new BehaviorSubject([]);
|
|
30132
|
+
}
|
|
30133
|
+
addJob(id, job) {
|
|
30134
|
+
const exists = this.jobsSubject.value.some(j => j.id === id);
|
|
30135
|
+
if (!exists) {
|
|
30136
|
+
job = job || new JobProgression(id);
|
|
30137
|
+
this.jobsSubject.next([...this.jobsSubject.value, job]);
|
|
30138
|
+
}
|
|
30139
|
+
}
|
|
30140
|
+
removeJob(id) {
|
|
30141
|
+
const jobs = this.jobsSubject.value;
|
|
30142
|
+
const index = jobs.findIndex(j => j.id === id);
|
|
30143
|
+
if (index !== -1) {
|
|
30144
|
+
jobs.splice(index, 1);
|
|
30145
|
+
this.jobsSubject.next(jobs);
|
|
30146
|
+
}
|
|
30147
|
+
}
|
|
30148
|
+
watchAll() {
|
|
30149
|
+
return this.jobsSubject.asObservable();
|
|
30150
|
+
}
|
|
30151
|
+
listenChanges(id, options) {
|
|
30152
|
+
return interval(100).pipe(take(111), map(value => {
|
|
30153
|
+
if (value <= 10) {
|
|
30154
|
+
return {
|
|
30155
|
+
id: id,
|
|
30156
|
+
name: `Job #${id}`,
|
|
30157
|
+
current: 0,
|
|
30158
|
+
total: 0,
|
|
30159
|
+
message: `Progression pending`
|
|
30160
|
+
};
|
|
30161
|
+
}
|
|
30162
|
+
value = value - 10;
|
|
30163
|
+
return {
|
|
30164
|
+
id: id,
|
|
30165
|
+
name: `Job #${id}`,
|
|
30166
|
+
current: value,
|
|
30167
|
+
total: 100,
|
|
30168
|
+
message: `Progression ${value}/100`
|
|
30169
|
+
};
|
|
30170
|
+
}));
|
|
30171
|
+
}
|
|
30172
|
+
}
|
|
30173
|
+
JobProgressionTestService.decorators = [
|
|
30174
|
+
{ type: Injectable }
|
|
30175
|
+
];
|
|
30176
|
+
|
|
29973
30177
|
// Environment
|
|
29974
30178
|
|
|
29975
30179
|
/**
|
|
29976
30180
|
* Generated bundle index. Do not edit.
|
|
29977
30181
|
*/
|
|
29978
30182
|
|
|
29979
|
-
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,
|
|
30183
|
+
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 };
|
|
29980
30184
|
//# sourceMappingURL=sumaris-net.ngx-components.js.map
|