@sumaris-net/ngx-components 1.23.1-rc4 → 1.23.2
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 +77 -103
- package/bundles/sumaris-net.ngx-components.umd.js.map +1 -1
- package/bundles/sumaris-net.ngx-components.umd.min.js +2 -2
- package/bundles/sumaris-net.ngx-components.umd.min.js.map +1 -1
- package/esm2015/src/app/core/table/entities-table-datasource.class.js +19 -20
- package/esm2015/src/app/core/table/table.class.js +15 -20
- package/esm2015/src/app/shared/observables.js +44 -58
- package/fesm2015/sumaris-net.ngx-components.js +76 -96
- package/fesm2015/sumaris-net.ngx-components.js.map +1 -1
- package/package.json +1 -1
- package/src/app/core/table/entities-table-datasource.class.d.ts +1 -1
- package/src/app/core/table/table.class.d.ts +1 -4
- package/src/app/shared/observables.d.ts +16 -20
- package/sumaris-net.ngx-components.metadata.json +1 -1
|
@@ -5,32 +5,47 @@ import { isNotNil } from './functions';
|
|
|
5
5
|
export function filterNotNil(obs) {
|
|
6
6
|
return obs.pipe(filter(isNotNil));
|
|
7
7
|
}
|
|
8
|
-
export function firstNotNil(obs, opts) {
|
|
9
|
-
if ((opts === null || opts === void 0 ? void 0 : opts.timeout) > 0) {
|
|
10
|
-
obs.pipe(takeUntil(timer(opts.timeout)), first(isNotNil));
|
|
11
|
-
}
|
|
12
|
-
return obs.pipe(first(isNotNil));
|
|
13
|
-
}
|
|
14
8
|
export function filterTrue(obs) {
|
|
15
9
|
return obs.pipe(filter((v) => v === true));
|
|
16
10
|
}
|
|
17
|
-
export function filterFalse(obs) {
|
|
11
|
+
export function filterFalse(obs, opts) {
|
|
18
12
|
return obs.pipe(filter((v) => v === false));
|
|
19
13
|
}
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
14
|
+
function decorateForFirst(obs, opts) {
|
|
15
|
+
// Set take until notifier
|
|
16
|
+
const takeUntil$ = (opts === null || opts === void 0 ? void 0 : opts.stop) || ((opts === null || opts === void 0 ? void 0 : opts.timeout) && timer(opts.timeout));
|
|
17
|
+
if (takeUntil$) {
|
|
18
|
+
// When stop, throw an error (useful when used with a toPromise())
|
|
19
|
+
if (opts.stopError) {
|
|
20
|
+
return merge(obs.pipe(takeUntil(takeUntil$)), takeUntil$
|
|
21
|
+
.pipe(map(() => {
|
|
22
|
+
throw new Error(opts.timeout ? `Timeout ${opts.timeout}ms` : `Stop`);
|
|
23
|
+
})));
|
|
24
|
+
}
|
|
25
|
+
// Add a takeUntil
|
|
26
|
+
return obs.pipe(takeUntil(takeUntil$));
|
|
23
27
|
}
|
|
24
|
-
return obs
|
|
28
|
+
return obs;
|
|
29
|
+
}
|
|
30
|
+
export function firstNotNil(obs, opts) {
|
|
31
|
+
return decorateForFirst(obs, opts).pipe(first(isNotNil));
|
|
32
|
+
}
|
|
33
|
+
export function firstTrue(obs, opts) {
|
|
34
|
+
return decorateForFirst(obs, opts).pipe(first((v) => v === true), map(_ => { }) // Convert to void
|
|
35
|
+
);
|
|
36
|
+
}
|
|
37
|
+
export function firstFalse(obs, opts) {
|
|
38
|
+
return decorateForFirst(obs, opts).pipe(first((v) => v === false), map(_ => { }) // Convert to void
|
|
39
|
+
);
|
|
40
|
+
}
|
|
41
|
+
export function firstTruePromise(obs, opts) {
|
|
42
|
+
return firstTrue(obs, Object.assign({ stopError: true }, opts)).toPromise();
|
|
25
43
|
}
|
|
26
44
|
export function firstFalsePromise(obs, opts) {
|
|
27
|
-
|
|
28
|
-
return obs.pipe(takeUntil(timer(opts.timeout)), first((v) => v === false)).toPromise();
|
|
29
|
-
}
|
|
30
|
-
return obs.pipe(first((v) => v === false)).toPromise();
|
|
45
|
+
return firstFalse(obs, Object.assign({ stopError: true }, opts)).toPromise();
|
|
31
46
|
}
|
|
32
47
|
export function firstNotNilPromise(obs, opts) {
|
|
33
|
-
return firstNotNil(obs, opts).toPromise();
|
|
48
|
+
return firstNotNil(obs, Object.assign({ stopError: true }, opts)).toPromise();
|
|
34
49
|
}
|
|
35
50
|
export function chainPromises(defers) {
|
|
36
51
|
return (defers || []).reduce((previous, defer) => {
|
|
@@ -47,14 +62,6 @@ export function chainPromises(defers) {
|
|
|
47
62
|
.then(jobRes => finalResult.concat(jobRes)));
|
|
48
63
|
}, null);
|
|
49
64
|
}
|
|
50
|
-
export function firstTrue(obs) {
|
|
51
|
-
return obs.pipe(first(value => value === true), map(_ => { }) // Convert to void
|
|
52
|
-
);
|
|
53
|
-
}
|
|
54
|
-
export function firstFalse(obs) {
|
|
55
|
-
return obs.pipe(first(value => value === false), map(_ => { }) // Convert to void
|
|
56
|
-
);
|
|
57
|
-
}
|
|
58
65
|
/**
|
|
59
66
|
* Wait form a predicate return true. This need to implement AppFormUtils.waitWhilePending(), AppFormUtils.waitIdle()
|
|
60
67
|
* @param predicate
|
|
@@ -71,43 +78,22 @@ export function waitFor(predicate, opts) {
|
|
|
71
78
|
// For DEBUG :
|
|
72
79
|
//tap(() => console.debug("Waiting form idle...", form)),
|
|
73
80
|
filter(_ => predicate()), map(_ => true));
|
|
74
|
-
|
|
75
|
-
if (opts && opts.timeout) {
|
|
76
|
-
const $timeout = timer(opts.timeout);
|
|
77
|
-
wait$ = merge(wait$.pipe(takeUntil($timeout)), $timeout
|
|
78
|
-
.pipe(map(() => {
|
|
79
|
-
throw new Error(`Timeout waitIdle() - after ${opts.timeout}ms`);
|
|
80
|
-
})));
|
|
81
|
-
}
|
|
82
|
-
yield firstNotNilPromise(wait$);
|
|
81
|
+
yield firstNotNilPromise(wait$, opts);
|
|
83
82
|
});
|
|
84
83
|
}
|
|
85
84
|
export function waitForTrue(observable, opts) {
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
})))
|
|
95
|
-
.toPromise();
|
|
96
|
-
}
|
|
97
|
-
// dueTime (without timeout)
|
|
98
|
-
if (opts && opts.dueTime > 0) {
|
|
99
|
-
return timer(opts.dueTime)
|
|
100
|
-
.pipe(switchMap(() => firstTrue(observable)))
|
|
101
|
-
.toPromise();
|
|
102
|
-
}
|
|
103
|
-
return firstTrue(observable).toPromise();
|
|
104
|
-
});
|
|
85
|
+
opts = Object.assign({ stopError: true }, opts);
|
|
86
|
+
// dueTime (without timeout)
|
|
87
|
+
if (opts && opts.dueTime > 0) {
|
|
88
|
+
return timer(opts.dueTime)
|
|
89
|
+
.pipe(switchMap(() => firstTrue(observable, opts)))
|
|
90
|
+
.toPromise();
|
|
91
|
+
}
|
|
92
|
+
return firstTrue(observable, opts).toPromise();
|
|
105
93
|
}
|
|
106
94
|
export function waitForFalse(observable, opts) {
|
|
107
|
-
return
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
observable.pipe(map(v => v === false)), opts);
|
|
111
|
-
});
|
|
95
|
+
return waitForTrue(
|
|
96
|
+
// Inverse the logic
|
|
97
|
+
observable.pipe(map(v => v === false)), opts);
|
|
112
98
|
}
|
|
113
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JzZXJ2YWJsZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NoYXJlZC9vYnNlcnZhYmxlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFDLEtBQUssRUFBdUIsS0FBSyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ3ZELE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUl2QyxNQUFNLFVBQVUsWUFBWSxDQUFVLEdBQWtCO0lBQ3RELE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztBQUNwQyxDQUFDO0FBQ0QsTUFBTSxVQUFVLFdBQVcsQ0FBVSxHQUFrQixFQUFFLElBQXlCO0lBQ2hGLElBQUksQ0FBQSxJQUFJLGFBQUosSUFBSSx1QkFBSixJQUFJLENBQUUsT0FBTyxJQUFHLENBQUMsRUFBRTtRQUNyQixHQUFHLENBQUMsSUFBSSxDQUNOLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQzlCLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FDaEIsQ0FBQztLQUNIO0lBQ0QsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0FBQ25DLENBQUM7QUFDRCxNQUFNLFVBQVUsVUFBVSxDQUFDLEdBQXdCO0lBQ2pELE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQzdDLENBQUM7QUFDRCxNQUFNLFVBQVUsV0FBVyxDQUFDLEdBQXdCO0lBQ2xELE9BQU8sR0FBRyxDQUFDLElB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c0NvbnRlbnQiOlsiaW1wb3J0IHttZXJnZSwgT2JzZXJ2YWJsZSwgU3ViamVjdCwgdGltZXJ9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCBmaXJzdCwgbWFwLCBzd2l0Y2hNYXAsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IGlzTm90TmlsIH0gZnJvbSAnLi9mdW5jdGlvbnMnO1xuaW1wb3J0IHtQcmVkaWNhdGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5cbmV4cG9ydCBmdW5jdGlvbiBmaWx0ZXJOb3ROaWw8VCA9IGFueT4ob2JzOiBPYnNlcnZhYmxlPFQ+KTogT2JzZXJ2YWJsZTxUPiB7XG4gIHJldHVybiBvYnMucGlwZShmaWx0ZXIoaXNOb3ROaWwpKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBmaXJzdE5vdE5pbDxUID0gYW55PihvYnM6IE9ic2VydmFibGU8VD4sIG9wdHM/OiB7dGltZW91dDogbnVtYmVyO30pOiBPYnNlcnZhYmxlPFQ+IHtcbiAgaWYgKG9wdHM/LnRpbWVvdXQgPiAwKSB7XG4gICAgb2JzLnBpcGUoXG4gICAgICB0YWtlVW50aWwodGltZXIob3B0cy50aW1lb3V0KSksXG4gICAgICBmaXJzdChpc05vdE5pbClcbiAgICApO1xuICB9XG4gIHJldHVybiBvYnMucGlwZShmaXJzdChpc05vdE5pbCkpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGZpbHRlclRydWUob2JzOiBPYnNlcnZhYmxlPGJvb2xlYW4+KTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gIHJldHVybiBvYnMucGlwZShmaWx0ZXIoKHYpID0+IHYgPT09IHRydWUpKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBmaWx0ZXJGYWxzZShvYnM6IE9ic2VydmFibGU8Ym9vbGVhbj4pOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgcmV0dXJuIG9icy5waXBlKGZpbHRlcigodikgPT4gdiA9PT0gZmFsc2UpKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBmaXJzdFRydWVQcm9taXNlKG9iczogT2JzZXJ2YWJsZTxib29sZWFuPiwgb3B0cz86IHt0aW1lb3V0OiBudW1iZXJ9KTogUHJvbWlzZTxib29sZWFuPiB7XG4gIGlmIChvcHRzPy50aW1lb3V0ID4gMCkge1xuICAgIHJldHVybiBvYnMucGlwZShcbiAgICAgIHRha2VVbnRpbCh0aW1lcihvcHRzLnRpbWVvdXQpKSxcbiAgICAgIGZpcnN0KCh2KSA9PiB2ID09PSB0cnVlKVxuICAgICkudG9Qcm9taXNlKCk7XG4gIH1cbiAgcmV0dXJuIG9icy5waXBlKFxuICAgIGZpcnN0KCh2KSA9PiB2ID09PSB0cnVlKVxuICApLnRvUHJvbWlzZSgpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGZpcnN0RmFsc2VQcm9taXNlKG9iczogT2JzZXJ2YWJsZTxib29sZWFuPiwgb3B0cz86IHt0aW1lb3V0OiBudW1iZXJ9KTogUHJvbWlzZTxib29sZWFuPiB7XG4gIGlmIChvcHRzPy50aW1lb3V0ID4gMCkge1xuICAgIHJldHVybiBvYnMucGlwZShcbiAgICAgIHRha2VVbnRpbCh0aW1lcihvcHRzLnRpbWVvdXQpKSxcbiAgICAgIGZpcnN0KCh2KSA9PiB2ID09PSBmYWxzZSlcbiAgICApLnRvUHJvbWlzZSgpO1xuICB9XG4gIHJldHVybiBvYnMucGlwZShcbiAgICBmaXJzdCgodikgPT4gdiA9PT0gZmFsc2UpXG4gICkudG9Qcm9taXNlKCk7XG59XG5leHBvcnQgZnVuY3Rpb24gZmlyc3ROb3ROaWxQcm9taXNlPFQgPSBhbnk+KG9iczogT2JzZXJ2YWJsZTxUPiwgb3B0cz86IHt0aW1lb3V0OiBudW1iZXJ9KTogUHJvbWlzZTxUPiB7XG4gIHJldHVybiBmaXJzdE5vdE5pbChvYnMsIG9wdHMpLnRvUHJvbWlzZSgpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGNoYWluUHJvbWlzZXM8VCA9IGFueT4oZGVmZXJzOiAoKCkgPT4gUHJvbWlzZTxhbnk+KVtdKTogUHJvbWlzZTxUW10+IHtcbiAgcmV0dXJuIChkZWZlcnMgfHwgW10pLnJlZHVjZSgocHJldmlvdXM6IFByb21pc2U8YW55PiB8IG51bGwsIGRlZmVyKSA9PiB7XG4gICAgLy8gRmlyc3Qgam9iXG4gICAgaWYgKCFwcmV2aW91cykge1xuICAgICAgcmV0dXJuIGRlZmVyKClcbiAgICAgICAgLy8gSW5pdCB0aGUgZmluYWwgcmVzdWx0IGFycmF5LCB3aXRoIHRoZSBmaXJzdCByZXN1bHRcbiAgICAgICAgLnRoZW4oam9iUmVzID0+IFtqb2JSZXNdKTtcbiAgICB9XG4gICAgLy8gT3RoZXIgam9ic1xuICAgIHJldHVybiBwcmV2aW91c1xuICAgICAgLnRoZW4oKGZpbmFsUmVzdWx0KSA9PiBkZWZlcigpXG4gICAgICAgIC8vIEFkZCBqb2IgcmVzdWx0IHRvIGZpbmFsIHJlc3VsdCBhcnJheVxuICAgICAgICAudGhlbihqb2JSZXMgPT4gZmluYWxSZXN1bHQuY29uY2F0KGpvYlJlcykpKTtcbiAgfSwgbnVsbCk7XG59XG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBXYWl0Rm9yT3B0aW9ucyB7XG4gIGR1ZVRpbWU/OiBudW1iZXI7XG4gIGNoZWNrUGVyaW9kPzogbnVtYmVyO1xuICB0aW1lb3V0PzogbnVtYmVyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZmlyc3RUcnVlKG9iczogT2JzZXJ2YWJsZTxib29sZWFuPik6IE9ic2VydmFibGU8dm9pZD4ge1xuICByZXR1cm4gb2JzLnBpcGUoXG4gICAgZmlyc3QodmFsdWUgPT4gdmFsdWUgPT09IHRydWUpLFxuICAgIG1hcChfID0+IHt9KSAvLyBDb252ZXJ0IHRvIHZvaWRcbiAgKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBmaXJzdEZhbHNlKG9iczogT2JzZXJ2YWJsZTxib29sZWFuPik6IE9ic2VydmFibGU8dm9pZD4ge1xuICByZXR1cm4gb2JzLnBpcGUoXG4gICAgZmlyc3QodmFsdWUgPT4gdmFsdWUgPT09IGZhbHNlKSxcbiAgICBtYXAoXyA9PiB7fSkgLy8gQ29udmVydCB0byB2b2lkXG4gICk7XG59XG5cbi8qKlxuICogV2FpdCBmb3JtIGEgcHJlZGljYXRlIHJldHVybiB0cnVlLiBUaGlzIG5lZWQgdG8gaW1wbGVtZW50IEFwcEZvcm1VdGlscy53YWl0V2hpbGVQZW5kaW5nKCksIEFwcEZvcm1VdGlscy53YWl0SWRsZSgpXG4gKiBAcGFyYW0gcHJlZGljYXRlXG4gKiBAcGFyYW0gb3B0c1xuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gd2FpdEZvcihwcmVkaWNhdGU6IFByZWRpY2F0ZTx2b2lkPiwgb3B0cz86IFdhaXRGb3JPcHRpb25zKTogUHJvbWlzZTx2b2lkPiB7XG4gIGlmIChwcmVkaWNhdGUoKSkgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuXG4gIGNvbnN0IHBlcmlvZCA9IG9wdHMgJiYgb3B0cy5jaGVja1BlcmlvZCB8fCAzMDA7XG4gIGNvbnN0IGR1ZVRpbWUgPSBvcHRzICYmIG9wdHMuZHVlVGltZSB8fCBwZXJpb2Q7XG4gIGxldCB3YWl0JDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRpbWVyKGR1ZVRpbWUsIHBlcmlvZClcbiAgICAucGlwZShcbiAgICAgIC8vIEZvciBERUJVRyA6XG4gICAgICAvL3RhcCgoKSA9PiBjb25zb2xlLmRlYnVnKFwiV2FpdGluZyBmb3JtIGlkbGUuLi5cIiwgZm9ybSkpLFxuICAgICAgZmlsdGVyKF8gPT4gcHJlZGljYXRlKCkpLFxuICAgICAgbWFwKF8gPT4gdHJ1ZSlcbiAgICApO1xuXG4gIC8vIEFkZCB0aW1lb3V0XG4gIGlmIChvcHRzICYmIG9wdHMudGltZW91dCkge1xuICAgIGNvbnN0ICR0aW1lb3V0ID0gdGltZXIob3B0cy50aW1lb3V0KTtcbiAgICB3YWl0JCA9IG1lcmdlKFxuICAgICAgd2FpdCQucGlwZShcbiAgICAgICAgdGFrZVVudGlsKCR0aW1lb3V0KVxuICAgICAgKSxcbiAgICAgICR0aW1lb3V0XG4gICAgICAgIC5waXBlKG1hcCgoKSA9PiB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaW1lb3V0IHdhaXRJZGxlKCkgLSBhZnRlciAke29wdHMudGltZW91dH1tc2ApO1xuICAgICAgICB9KSlcbiAgICApO1xuICB9XG5cbiAgYXdhaXQgZmlyc3ROb3ROaWxQcm9taXNlKHdhaXQkKTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHdhaXRGb3JUcnVlKG9ic2VydmFibGU6IE9ic2VydmFibGU8Ym9vbGVhbj4sIG9wdHM/OiBXYWl0Rm9yT3B0aW9ucyk6IFByb21pc2U8dm9pZD4ge1xuXG4gIC8vIFRpbWVvdXQgKCsgZHVlVGltZSlcbiAgaWYgKG9wdHMgJiYgb3B0cy50aW1lb3V0ID4gMCkge1xuICAgIGNvbnN0ICR0aW1lb3V0ID0gdGltZXIob3B0cy50aW1lb3V0KTtcbiAgICByZXR1cm4gbWVyZ2UoXG4gICAgICB0aW1lcihvcHRzLmR1ZVRpbWUgfHwgMClcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgc3dpdGNoTWFwKCgpID0+IGZpcnN0VHJ1ZShvYnNlcnZhYmxlKSksXG4gICAgICAgICAgdGFrZVVudGlsKCR0aW1lb3V0KVxuICAgICAgICApLFxuICAgICAgJHRpbWVvdXRcbiAgICAgICAgLnBpcGUobWFwKCgpID0+IHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFRpbWVvdXQgcmVhZHkoKSAtIGFmdGVyICR7b3B0cy50aW1lb3V0fW1zYCk7XG4gICAgICAgIH0pKVxuICAgIClcbiAgICAudG9Qcm9taXNlKCk7XG4gIH1cbiAgLy8gZHVlVGltZSAod2l0aG91dCB0aW1lb3V0KVxuICBpZiAob3B0cyAmJiBvcHRzLmR1ZVRpbWUgPiAwKSB7XG4gICAgcmV0dXJuIHRpbWVyKG9wdHMuZHVlVGltZSlcbiAgICAgIC5waXBlKHN3aXRjaE1hcCgoKSA9PiBmaXJzdFRydWUob2JzZXJ2YWJsZSkpKVxuICAgICAgLnRvUHJvbWlzZSgpO1xuICB9XG4gIHJldHVybiBmaXJzdFRydWUob2JzZXJ2YWJsZSkudG9Qcm9taXNlKCk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB3YWl0Rm9yRmFsc2Uob2JzZXJ2YWJsZTogT2JzZXJ2YWJsZTxib29sZWFuPiwgb3B0cz86IFdhaXRGb3JPcHRpb25zKTogUHJvbWlzZTx2b2lkPiB7XG4gIHJldHVybiB3YWl0Rm9yVHJ1ZShcbiAgICAvLyBJbnZlcnNlIHRoZSBsb2dpY1xuICAgIG9ic2VydmFibGUucGlwZShtYXAodiA9PiB2ID09PSBmYWxzZSlcbiAgKSwgb3B0cyk7XG59XG4iXX0=
|
|
99
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JzZXJ2YWJsZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NoYXJlZC9vYnNlcnZhYmxlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFDLEtBQUssRUFBdUIsS0FBSyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ3ZELE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQWN2QyxNQUFNLFVBQVUsWUFBWSxDQUFVLEdBQWtCO0lBQ3RELE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztBQUNwQyxDQUFDO0FBRUQsTUFBTSxVQUFVLFVBQVUsQ0FBQyxHQUF3QjtJQUNqRCxPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQztBQUM3QyxDQUFDO0FBQ0QsTUFBTSxVQUFVLFdBQVcsQ0FBQyxHQUF3QixFQUFFLElBQW1CO0lBQ3ZFLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQzlDLENBQUM7QUFFRCxTQUFTLGdCQUFnQixDQUFVLEdBQWtCLEVBQUUsSUFBbUI7SUFDeEUsMEJBQTBCO0lBQzFCLE1BQU0sVUFBVSxHQUFHLENBQUEsSUFBSSxhQUFKLElBQUksdUJBQUosSUFBSSxDQUFFLElBQUksS0FBSSxDQUFDLENBQUEsSUFBSSxhQUFKLElBQUksdUJBQUosSUFBSSxDQUFFLE9BQU8sS0FBSSxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FB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bEQsU0FBUyxFQUFFLENBQUM7S0FDaEI7SUFDRCxPQUFPLFNBQVMsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7QUFDakQsQ0FBQztBQUVELE1BQU0sVUFBVSxZQUFZLENBQUMsVUFBK0IsRUFBRSxJQUFxQjtJQUNqRixPQUFPLFdBQVc7SUFDaEIsb0JBQW9CO0lBQ3BCLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLEtBQUssQ0FBQyxDQUN0QyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ1gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7bWVyZ2UsIE9ic2VydmFibGUsIFN1YmplY3QsIHRpbWVyfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgZmlyc3QsIG1hcCwgc3dpdGNoTWFwLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBpc05vdE5pbCB9IGZyb20gJy4vZnVuY3Rpb25zJztcbmltcG9ydCB7UHJlZGljYXRlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIEZpcnN0T3B0aW9ucyB7XG4gIHRpbWVvdXQ/OiBudW1iZXI7XG4gIHN0b3A/OiBPYnNlcnZhYmxlPGFueT47XG4gIHN0b3BFcnJvcj86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBXYWl0Rm9yT3B0aW9ucyBleHRlbmRzIEZpcnN0T3B0aW9uc3tcbiAgZHVlVGltZT86IG51bWJlcjtcbiAgY2hlY2tQZXJpb2Q/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaWx0ZXJOb3ROaWw8VCA9IGFueT4ob2JzOiBPYnNlcnZhYmxlPFQ+KTogT2JzZXJ2YWJsZTxUPiB7XG4gIHJldHVybiBvYnMucGlwZShmaWx0ZXIoaXNOb3ROaWwpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpbHRlclRydWUob2JzOiBPYnNlcnZhYmxlPGJvb2xlYW4+KTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gIHJldHVybiBvYnMucGlwZShmaWx0ZXIoKHYpID0+IHYgPT09IHRydWUpKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBmaWx0ZXJGYWxzZShvYnM6IE9ic2VydmFibGU8Ym9vbGVhbj4sIG9wdHM/OiBGaXJzdE9wdGlvbnMpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgcmV0dXJuIG9icy5waXBlKGZpbHRlcigodikgPT4gdiA9PT0gZmFsc2UpKTtcbn1cblxuZnVuY3Rpb24gZGVjb3JhdGVGb3JGaXJzdDxUID0gYW55PihvYnM6IE9ic2VydmFibGU8VD4sIG9wdHM/OiBGaXJzdE9wdGlvbnMpOiBPYnNlcnZhYmxlPFQ+IHtcbiAgLy8gU2V0IHRha2UgdW50aWwgbm90aWZpZXJcbiAgY29uc3QgdGFrZVVudGlsJCA9IG9wdHM/LnN0b3AgfHwgKG9wdHM/LnRpbWVvdXQgJiYgdGltZXIob3B0cy50aW1lb3V0KSk7XG4gIGlmICh0YWtlVW50aWwkKSB7XG5cbiAgICAvLyBXaGVuIHN0b3AsIHRocm93IGFuIGVycm9yICh1c2VmdWwgd2hlbiB1c2VkIHdpdGggYSB0b1Byb21pc2UoKSlcbiAgICBpZiAob3B0cy5zdG9wRXJyb3IpIHtcbiAgICAgIHJldHVybiBtZXJnZShcbiAgICAgICAgb2JzLnBpcGUoXG4gICAgICAgICAgdGFrZVVudGlsKHRha2VVbnRpbCQpXG4gICAgICAgICksXG4gICAgICAgIHRha2VVbnRpbCRcbiAgICAgICAgICAucGlwZShtYXAoKCkgPT4ge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKG9wdHMudGltZW91dCA/IGBUaW1lb3V0ICR7b3B0cy50aW1lb3V0fW1zYCA6IGBTdG9wYCk7XG4gICAgICAgICAgfSkpXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIEFkZCBhIHRha2VVbnRpbFxuICAgIHJldHVybiBvYnMucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRha2VVbnRpbCQpXG4gICAgICApO1xuICB9XG4gIHJldHVybiBvYnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaXJzdE5vdE5pbDxUID0gYW55PihvYnM6IE9ic2VydmFibGU8VD4sIG9wdHM/OiBGaXJzdE9wdGlvbnMpOiBPYnNlcnZhYmxlPFQ+IHtcbiAgcmV0dXJuIGRlY29yYXRlRm9yRmlyc3Qob2JzLCBvcHRzKS5waXBlKGZpcnN0KGlzTm90TmlsKSk7XG59XG5leHBvcnQgZnVuY3Rpb24gZmlyc3RUcnVlKG9iczogT2JzZXJ2YWJsZTxib29sZWFuPiwgb3B0cz86IEZpcnN0T3B0aW9ucyk6IE9ic2VydmFibGU8dm9pZD4ge1xuICByZXR1cm4gZGVjb3JhdGVGb3JGaXJzdChvYnMsIG9wdHMpLnBpcGUoXG4gICAgZmlyc3QoKHYpID0+IHYgPT09IHRydWUpLFxuICAgIG1hcChfID0+IHt9KSAvLyBDb252ZXJ0IHRvIHZvaWRcbiAgKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBmaXJzdEZhbHNlKG9iczogT2JzZXJ2YWJsZTxib29sZWFuPiwgb3B0cz86IEZpcnN0T3B0aW9ucyk6IE9ic2VydmFibGU8dm9pZD4ge1xuICByZXR1cm4gZGVjb3JhdGVGb3JGaXJzdChvYnMsIG9wdHMpLnBpcGUoXG4gICAgZmlyc3QoKHYpID0+IHYgPT09IGZhbHNlKSxcbiAgICBtYXAoXyA9PiB7fSkgLy8gQ29udmVydCB0byB2b2lkXG4gICk7XG59XG5leHBvcnQgZnVuY3Rpb24gZmlyc3RUcnVlUHJvbWlzZShvYnM6IE9ic2VydmFibGU8Ym9vbGVhbj4sIG9wdHM/OiBGaXJzdE9wdGlvbnMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgcmV0dXJuIGZpcnN0VHJ1ZShvYnMsIHtzdG9wRXJyb3I6IHRydWUsIC4uLm9wdHN9KS50b1Byb21pc2UoKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBmaXJzdEZhbHNlUHJvbWlzZShvYnM6IE9ic2VydmFibGU8Ym9vbGVhbj4sIG9wdHM/OiBGaXJzdE9wdGlvbnMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgcmV0dXJuIGZpcnN0RmFsc2Uob2JzLCB7c3RvcEVycm9yOiB0cnVlLCAuLi5vcHRzfSkudG9Qcm9taXNlKCk7XG59XG5leHBvcnQgZnVuY3Rpb24gZmlyc3ROb3ROaWxQcm9taXNlPFQgPSBhbnk+KG9iczogT2JzZXJ2YWJsZTxUPiwgb3B0cz86IEZpcnN0T3B0aW9ucyk6IFByb21pc2U8VD4ge1xuICByZXR1cm4gZmlyc3ROb3ROaWwob2JzLCB7c3RvcEVycm9yOiB0cnVlLCAuLi5vcHRzfSkudG9Qcm9taXNlKCk7XG59XG5leHBvcnQgZnVuY3Rpb24gY2hhaW5Qcm9taXNlczxUID0gYW55PihkZWZlcnM6ICgoKSA9PiBQcm9taXNlPGFueT4pW10pOiBQcm9taXNlPFRbXT4ge1xuICByZXR1cm4gKGRlZmVycyB8fCBbXSkucmVkdWNlKChwcmV2aW91czogUHJvbWlzZTxhbnk+IHwgbnVsbCwgZGVmZXIpID0+IHtcbiAgICAvLyBGaXJzdCBqb2JcbiAgICBpZiAoIXByZXZpb3VzKSB7XG4gICAgICByZXR1cm4gZGVmZXIoKVxuICAgICAgICAvLyBJbml0IHRoZSBmaW5hbCByZXN1bHQgYXJyYXksIHdpdGggdGhlIGZpcnN0IHJlc3VsdFxuICAgICAgICAudGhlbihqb2JSZXMgPT4gW2pvYlJlc10pO1xuICAgIH1cbiAgICAvLyBPdGhlciBqb2JzXG4gICAgcmV0dXJuIHByZXZpb3VzXG4gICAgICAudGhlbigoZmluYWxSZXN1bHQpID0+IGRlZmVyKClcbiAgICAgICAgLy8gQWRkIGpvYiByZXN1bHQgdG8gZmluYWwgcmVzdWx0IGFycmF5XG4gICAgICAgIC50aGVuKGpvYlJlcyA9PiBmaW5hbFJlc3VsdC5jb25jYXQoam9iUmVzKSkpO1xuICB9LCBudWxsKTtcbn1cblxuLyoqXG4gKiBXYWl0IGZvcm0gYSBwcmVkaWNhdGUgcmV0dXJuIHRydWUuIFRoaXMgbmVlZCB0byBpbXBsZW1lbnQgQXBwRm9ybVV0aWxzLndhaXRXaGlsZVBlbmRpbmcoKSwgQXBwRm9ybVV0aWxzLndhaXRJZGxlKClcbiAqIEBwYXJhbSBwcmVkaWNhdGVcbiAqIEBwYXJhbSBvcHRzXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB3YWl0Rm9yKHByZWRpY2F0ZTogUHJlZGljYXRlPHZvaWQ+LCBvcHRzPzogV2FpdEZvck9wdGlvbnMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgaWYgKHByZWRpY2F0ZSgpKSByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG5cbiAgY29uc3QgcGVyaW9kID0gb3B0cyAmJiBvcHRzLmNoZWNrUGVyaW9kIHx8IDMwMDtcbiAgY29uc3QgZHVlVGltZSA9IG9wdHMgJiYgb3B0cy5kdWVUaW1lIHx8IHBlcmlvZDtcbiAgbGV0IHdhaXQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGltZXIoZHVlVGltZSwgcGVyaW9kKVxuICAgIC5waXBlKFxuICAgICAgLy8gRm9yIERFQlVHIDpcbiAgICAgIC8vdGFwKCgpID0+IGNvbnNvbGUuZGVidWcoXCJXYWl0aW5nIGZvcm0gaWRsZS4uLlwiLCBmb3JtKSksXG4gICAgICBmaWx0ZXIoXyA9PiBwcmVkaWNhdGUoKSksXG4gICAgICBtYXAoXyA9PiB0cnVlKVxuICAgICk7XG5cbiAgYXdhaXQgZmlyc3ROb3ROaWxQcm9taXNlKHdhaXQkLCBvcHRzKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdhaXRGb3JUcnVlKG9ic2VydmFibGU6IE9ic2VydmFibGU8Ym9vbGVhbj4sIG9wdHM/OiBXYWl0Rm9yT3B0aW9ucyk6IFByb21pc2U8dm9pZD4ge1xuICBvcHRzID0ge3N0b3BFcnJvcjogdHJ1ZSwgLi4ub3B0c307XG4gIC8vIGR1ZVRpbWUgKHdpdGhvdXQgdGltZW91dClcbiAgaWYgKG9wdHMgJiYgb3B0cy5kdWVUaW1lID4gMCkge1xuICAgIHJldHVybiB0aW1lcihvcHRzLmR1ZVRpbWUpXG4gICAgICAucGlwZShzd2l0Y2hNYXAoKCkgPT4gZmlyc3RUcnVlKG9ic2VydmFibGUsIG9wdHMpKSlcbiAgICAgIC50b1Byb21pc2UoKTtcbiAgfVxuICByZXR1cm4gZmlyc3RUcnVlKG9ic2VydmFibGUsIG9wdHMpLnRvUHJvbWlzZSgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gd2FpdEZvckZhbHNlKG9ic2VydmFibGU6IE9ic2VydmFibGU8Ym9vbGVhbj4sIG9wdHM/OiBXYWl0Rm9yT3B0aW9ucyk6IFByb21pc2U8dm9pZD4ge1xuICByZXR1cm4gd2FpdEZvclRydWUoXG4gICAgLy8gSW52ZXJzZSB0aGUgbG9naWNcbiAgICBvYnNlcnZhYmxlLnBpcGUobWFwKHYgPT4gdiA9PT0gZmFsc2UpXG4gICksIG9wdHMpO1xufVxuIl19
|
|
@@ -37,7 +37,7 @@ import { __awaiter, __decorate } from 'tslib';
|
|
|
37
37
|
import * as i1$6 from '@angular/forms';
|
|
38
38
|
import { Validators, NG_VALUE_ACCESSOR, FormGroupDirective, AbstractControl, FormGroup, FormArray, FormControl, ReactiveFormsModule, FormBuilder } from '@angular/forms';
|
|
39
39
|
import { timer, merge, fromEvent, BehaviorSubject, Subscription, Subject, isObservable, from, of, noop as noop$9, Observable, defer, forkJoin, interval, combineLatest, EMPTY } from 'rxjs';
|
|
40
|
-
import { filter, takeUntil,
|
|
40
|
+
import { filter, takeUntil, map, first, switchMap, tap, debounceTime, startWith, distinctUntilChanged, mergeMap, catchError, throttleTime, skip, bufferWhen, take } from 'rxjs/operators';
|
|
41
41
|
import { trigger, transition, style, animate, state } from '@angular/animations';
|
|
42
42
|
import * as i1$1 from '@ngx-translate/core';
|
|
43
43
|
import { TranslateService, TranslateModule } from '@ngx-translate/core';
|
|
@@ -777,32 +777,47 @@ function focusPreviousInput(event, elements, opts) {
|
|
|
777
777
|
function filterNotNil(obs) {
|
|
778
778
|
return obs.pipe(filter(isNotNil));
|
|
779
779
|
}
|
|
780
|
-
function firstNotNil(obs, opts) {
|
|
781
|
-
if ((opts === null || opts === void 0 ? void 0 : opts.timeout) > 0) {
|
|
782
|
-
obs.pipe(takeUntil(timer(opts.timeout)), first(isNotNil));
|
|
783
|
-
}
|
|
784
|
-
return obs.pipe(first(isNotNil));
|
|
785
|
-
}
|
|
786
780
|
function filterTrue(obs) {
|
|
787
781
|
return obs.pipe(filter((v) => v === true));
|
|
788
782
|
}
|
|
789
|
-
function filterFalse(obs) {
|
|
783
|
+
function filterFalse(obs, opts) {
|
|
790
784
|
return obs.pipe(filter((v) => v === false));
|
|
791
785
|
}
|
|
792
|
-
function
|
|
793
|
-
|
|
794
|
-
|
|
786
|
+
function decorateForFirst(obs, opts) {
|
|
787
|
+
// Set take until notifier
|
|
788
|
+
const takeUntil$ = (opts === null || opts === void 0 ? void 0 : opts.stop) || ((opts === null || opts === void 0 ? void 0 : opts.timeout) && timer(opts.timeout));
|
|
789
|
+
if (takeUntil$) {
|
|
790
|
+
// When stop, throw an error (useful when used with a toPromise())
|
|
791
|
+
if (opts.stopError) {
|
|
792
|
+
return merge(obs.pipe(takeUntil(takeUntil$)), takeUntil$
|
|
793
|
+
.pipe(map(() => {
|
|
794
|
+
throw new Error(opts.timeout ? `Timeout ${opts.timeout}ms` : `Stop`);
|
|
795
|
+
})));
|
|
796
|
+
}
|
|
797
|
+
// Add a takeUntil
|
|
798
|
+
return obs.pipe(takeUntil(takeUntil$));
|
|
795
799
|
}
|
|
796
|
-
return obs
|
|
800
|
+
return obs;
|
|
801
|
+
}
|
|
802
|
+
function firstNotNil(obs, opts) {
|
|
803
|
+
return decorateForFirst(obs, opts).pipe(first(isNotNil));
|
|
804
|
+
}
|
|
805
|
+
function firstTrue(obs, opts) {
|
|
806
|
+
return decorateForFirst(obs, opts).pipe(first((v) => v === true), map(_ => { }) // Convert to void
|
|
807
|
+
);
|
|
808
|
+
}
|
|
809
|
+
function firstFalse(obs, opts) {
|
|
810
|
+
return decorateForFirst(obs, opts).pipe(first((v) => v === false), map(_ => { }) // Convert to void
|
|
811
|
+
);
|
|
812
|
+
}
|
|
813
|
+
function firstTruePromise(obs, opts) {
|
|
814
|
+
return firstTrue(obs, Object.assign({ stopError: true }, opts)).toPromise();
|
|
797
815
|
}
|
|
798
816
|
function firstFalsePromise(obs, opts) {
|
|
799
|
-
|
|
800
|
-
return obs.pipe(takeUntil(timer(opts.timeout)), first((v) => v === false)).toPromise();
|
|
801
|
-
}
|
|
802
|
-
return obs.pipe(first((v) => v === false)).toPromise();
|
|
817
|
+
return firstFalse(obs, Object.assign({ stopError: true }, opts)).toPromise();
|
|
803
818
|
}
|
|
804
819
|
function firstNotNilPromise(obs, opts) {
|
|
805
|
-
return firstNotNil(obs, opts).toPromise();
|
|
820
|
+
return firstNotNil(obs, Object.assign({ stopError: true }, opts)).toPromise();
|
|
806
821
|
}
|
|
807
822
|
function chainPromises(defers) {
|
|
808
823
|
return (defers || []).reduce((previous, defer) => {
|
|
@@ -819,14 +834,6 @@ function chainPromises(defers) {
|
|
|
819
834
|
.then(jobRes => finalResult.concat(jobRes)));
|
|
820
835
|
}, null);
|
|
821
836
|
}
|
|
822
|
-
function firstTrue(obs) {
|
|
823
|
-
return obs.pipe(first(value => value === true), map(_ => { }) // Convert to void
|
|
824
|
-
);
|
|
825
|
-
}
|
|
826
|
-
function firstFalse(obs) {
|
|
827
|
-
return obs.pipe(first(value => value === false), map(_ => { }) // Convert to void
|
|
828
|
-
);
|
|
829
|
-
}
|
|
830
837
|
/**
|
|
831
838
|
* Wait form a predicate return true. This need to implement AppFormUtils.waitWhilePending(), AppFormUtils.waitIdle()
|
|
832
839
|
* @param predicate
|
|
@@ -843,44 +850,23 @@ function waitFor(predicate, opts) {
|
|
|
843
850
|
// For DEBUG :
|
|
844
851
|
//tap(() => console.debug("Waiting form idle...", form)),
|
|
845
852
|
filter(_ => predicate()), map(_ => true));
|
|
846
|
-
|
|
847
|
-
if (opts && opts.timeout) {
|
|
848
|
-
const $timeout = timer(opts.timeout);
|
|
849
|
-
wait$ = merge(wait$.pipe(takeUntil($timeout)), $timeout
|
|
850
|
-
.pipe(map(() => {
|
|
851
|
-
throw new Error(`Timeout waitIdle() - after ${opts.timeout}ms`);
|
|
852
|
-
})));
|
|
853
|
-
}
|
|
854
|
-
yield firstNotNilPromise(wait$);
|
|
853
|
+
yield firstNotNilPromise(wait$, opts);
|
|
855
854
|
});
|
|
856
855
|
}
|
|
857
856
|
function waitForTrue(observable, opts) {
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
})))
|
|
867
|
-
.toPromise();
|
|
868
|
-
}
|
|
869
|
-
// dueTime (without timeout)
|
|
870
|
-
if (opts && opts.dueTime > 0) {
|
|
871
|
-
return timer(opts.dueTime)
|
|
872
|
-
.pipe(switchMap(() => firstTrue(observable)))
|
|
873
|
-
.toPromise();
|
|
874
|
-
}
|
|
875
|
-
return firstTrue(observable).toPromise();
|
|
876
|
-
});
|
|
857
|
+
opts = Object.assign({ stopError: true }, opts);
|
|
858
|
+
// dueTime (without timeout)
|
|
859
|
+
if (opts && opts.dueTime > 0) {
|
|
860
|
+
return timer(opts.dueTime)
|
|
861
|
+
.pipe(switchMap(() => firstTrue(observable, opts)))
|
|
862
|
+
.toPromise();
|
|
863
|
+
}
|
|
864
|
+
return firstTrue(observable, opts).toPromise();
|
|
877
865
|
}
|
|
878
866
|
function waitForFalse(observable, opts) {
|
|
879
|
-
return
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
observable.pipe(map(v => v === false)), opts);
|
|
883
|
-
});
|
|
867
|
+
return waitForTrue(
|
|
868
|
+
// Inverse the logic
|
|
869
|
+
observable.pipe(map(v => v === false)), opts);
|
|
884
870
|
}
|
|
885
871
|
|
|
886
872
|
function createPromiseEventEmitter() {
|
|
@@ -22355,13 +22341,12 @@ class EntitiesTableDataSource extends TableDataSource {
|
|
|
22355
22341
|
* @param config Additional configuration for table.
|
|
22356
22342
|
*/
|
|
22357
22343
|
constructor(dataType, dataService, validatorService, options) {
|
|
22358
|
-
super([], dataType, validatorService, Object.assign({ keepOriginalDataAfterConfirm: false, readOnly: false, saveOnlyDirtyRows: false
|
|
22344
|
+
super([], dataType, validatorService, Object.assign({ keepOriginalDataAfterConfirm: false, readOnly: false, saveOnlyDirtyRows: false }, options));
|
|
22359
22345
|
this.dataService = dataService;
|
|
22360
22346
|
this._debug = false;
|
|
22361
22347
|
this._creating = false;
|
|
22362
22348
|
this._saving = false;
|
|
22363
22349
|
this._stopWatching$ = new Subject();
|
|
22364
|
-
this._editingRowCount = 0;
|
|
22365
22350
|
this._fetchMoreFn = null;
|
|
22366
22351
|
this.loadingSubject = new BehaviorSubject(undefined);
|
|
22367
22352
|
this._entityName = removeEnd((new dataType()).__typename || 'UnknownVO', 'VO');
|
|
@@ -22408,7 +22393,6 @@ class EntitiesTableDataSource extends TableDataSource {
|
|
|
22408
22393
|
}
|
|
22409
22394
|
watchAll(offset, size, sortBy, sortDirection, filter) {
|
|
22410
22395
|
this._stopWatching$.next();
|
|
22411
|
-
this._editingRowCount = 0;
|
|
22412
22396
|
this._fetchMoreFn = null;
|
|
22413
22397
|
this.markAsLoading();
|
|
22414
22398
|
return this.dataService.watchAll(offset, size, sortBy, sortDirection, filter, this.serviceOptions)
|
|
@@ -22416,8 +22400,8 @@ class EntitiesTableDataSource extends TableDataSource {
|
|
|
22416
22400
|
if (this._saving) {
|
|
22417
22401
|
console.info(`[table-datasource] Received ${this._entityName} data (from service), but still saving: skip`);
|
|
22418
22402
|
}
|
|
22419
|
-
else if (this.
|
|
22420
|
-
console.warn(`[table-datasource] Received ${this._entityName} data, while
|
|
22403
|
+
else if (this.hasSomeEditingRow()) {
|
|
22404
|
+
console.warn(`[table-datasource] Received ${this._entityName} data, while some row still editing: skip; Please check save() implementation in the table!`);
|
|
22421
22405
|
}
|
|
22422
22406
|
else {
|
|
22423
22407
|
this.updateDatasource((res.data || []));
|
|
@@ -22471,7 +22455,6 @@ class EntitiesTableDataSource extends TableDataSource {
|
|
|
22471
22455
|
// Stop with an error
|
|
22472
22456
|
throw { code: ErrorCodes.TABLE_INVALID_ROW_ERROR, message: 'ERROR.TABLE_INVALID_ROW_ERROR' };
|
|
22473
22457
|
}
|
|
22474
|
-
this._editingRowCount = 0;
|
|
22475
22458
|
let data;
|
|
22476
22459
|
let dataToSave;
|
|
22477
22460
|
if (this.validatorService) {
|
|
@@ -22548,7 +22531,6 @@ class EntitiesTableDataSource extends TableDataSource {
|
|
|
22548
22531
|
console.warn('[table-datasource] Row still has {editing: true} after confirmCreate()! Force editing to false');
|
|
22549
22532
|
row.validator.disable({ onlySelf: true, emitEvent: false });
|
|
22550
22533
|
}
|
|
22551
|
-
this._editingRowCount--;
|
|
22552
22534
|
return true;
|
|
22553
22535
|
}
|
|
22554
22536
|
confirmEdit(row) {
|
|
@@ -22558,7 +22540,6 @@ class EntitiesTableDataSource extends TableDataSource {
|
|
|
22558
22540
|
console.warn('[table-datasource] Row still has {editing: true} after confirmEdit()! Force editing to false');
|
|
22559
22541
|
row.validator.disable({ onlySelf: true, emitEvent: false });
|
|
22560
22542
|
}
|
|
22561
|
-
this._editingRowCount--;
|
|
22562
22543
|
return true;
|
|
22563
22544
|
}
|
|
22564
22545
|
startEdit(row) {
|
|
@@ -22568,7 +22549,6 @@ class EntitiesTableDataSource extends TableDataSource {
|
|
|
22568
22549
|
console.warn('[table-datasource] Row still has {editing: false} after startEdit()! Force editing');
|
|
22569
22550
|
row.validator.enable({ onlySelf: true, emitEvent: false });
|
|
22570
22551
|
}
|
|
22571
|
-
this._editingRowCount++;
|
|
22572
22552
|
}
|
|
22573
22553
|
handleError(error, message) {
|
|
22574
22554
|
const errorMsg = error && error.message || error;
|
|
@@ -22592,9 +22572,7 @@ class EntitiesTableDataSource extends TableDataSource {
|
|
|
22592
22572
|
console.error(`[table-datasource] Row to delete with id=${id} not found`);
|
|
22593
22573
|
return;
|
|
22594
22574
|
}
|
|
22595
|
-
|
|
22596
|
-
this._editingRowCount--;
|
|
22597
|
-
this.loadingSubject.next(true);
|
|
22575
|
+
this.markAsLoading();
|
|
22598
22576
|
this.dataService.deleteAll([row.currentData], this.serviceOptions)
|
|
22599
22577
|
.catch(err => this.handleServiceError(err))
|
|
22600
22578
|
.then(() => {
|
|
@@ -22603,7 +22581,7 @@ class EntitiesTableDataSource extends TableDataSource {
|
|
|
22603
22581
|
const present = this.getRow(id) === row;
|
|
22604
22582
|
if (present)
|
|
22605
22583
|
super.delete(id);
|
|
22606
|
-
this.
|
|
22584
|
+
this.markAsLoaded();
|
|
22607
22585
|
}, 300);
|
|
22608
22586
|
});
|
|
22609
22587
|
}
|
|
@@ -22620,7 +22598,13 @@ class EntitiesTableDataSource extends TableDataSource {
|
|
|
22620
22598
|
yield this.dataService.deleteAll(data, this.serviceOptions);
|
|
22621
22599
|
// Workaround, to be sure all rows have been deleted
|
|
22622
22600
|
// Sometimes, the service miss deletion, or GrapQHl cache remove failed
|
|
22623
|
-
const rowNotDeleted =
|
|
22601
|
+
const rowNotDeleted = Object.getOwnPropertyNames(rowsById)
|
|
22602
|
+
.reduce((res, id) => {
|
|
22603
|
+
const row = rowsById[id];
|
|
22604
|
+
const present = this.getRow(+id) === row;
|
|
22605
|
+
return present ? res.concat(row) : res;
|
|
22606
|
+
}, []);
|
|
22607
|
+
//this.getRows().filter(row => rows.includes(row));
|
|
22624
22608
|
// Apply missing deletion
|
|
22625
22609
|
if (isNotEmptyArray(rowNotDeleted)) {
|
|
22626
22610
|
console.warn(`[table-datasource] Force deletion of ${rowNotDeleted.length} rows (Is service update the cache ?)`);
|
|
@@ -22631,7 +22615,7 @@ class EntitiesTableDataSource extends TableDataSource {
|
|
|
22631
22615
|
}
|
|
22632
22616
|
}
|
|
22633
22617
|
catch (err) {
|
|
22634
|
-
// Handle
|
|
22618
|
+
// Handle service error
|
|
22635
22619
|
this.handleServiceError(err);
|
|
22636
22620
|
}
|
|
22637
22621
|
finally {
|
|
@@ -22645,6 +22629,9 @@ class EntitiesTableDataSource extends TableDataSource {
|
|
|
22645
22629
|
getRows() {
|
|
22646
22630
|
return this.rowsSubject.getValue();
|
|
22647
22631
|
}
|
|
22632
|
+
hasSomeEditingRow() {
|
|
22633
|
+
return (this.rowsSubject.value || []).some(row => row.editing);
|
|
22634
|
+
}
|
|
22648
22635
|
createNew(insertAt, options = { editing: true }) {
|
|
22649
22636
|
const _super = Object.create(null, {
|
|
22650
22637
|
createNew: { get: () => super.createNew }
|
|
@@ -22667,8 +22654,6 @@ class EntitiesTableDataSource extends TableDataSource {
|
|
|
22667
22654
|
console.error(err && err.message || err, err);
|
|
22668
22655
|
}
|
|
22669
22656
|
}
|
|
22670
|
-
if (row.editing)
|
|
22671
|
-
this._editingRowCount++;
|
|
22672
22657
|
return row;
|
|
22673
22658
|
}
|
|
22674
22659
|
finally {
|
|
@@ -22687,8 +22672,8 @@ class EntitiesTableDataSource extends TableDataSource {
|
|
|
22687
22672
|
return __awaiter(this, void 0, void 0, function* () {
|
|
22688
22673
|
if (!this._fetchMoreFn)
|
|
22689
22674
|
return false; // Avoid multiple call
|
|
22690
|
-
if (this.
|
|
22691
|
-
console.warn(`Cannot fetch more ${this._entityName} because
|
|
22675
|
+
if (this.hasSomeEditingRow()) {
|
|
22676
|
+
console.warn(`Cannot fetch more ${this._entityName} because some row) still editing`);
|
|
22692
22677
|
return;
|
|
22693
22678
|
}
|
|
22694
22679
|
console.debug(`Will fetching more row(s) still...`);
|
|
@@ -22760,7 +22745,6 @@ class AppTable {
|
|
|
22760
22745
|
this.savingSubject = new BehaviorSubject(false);
|
|
22761
22746
|
this.dirtySubject = new BehaviorSubject(false);
|
|
22762
22747
|
this.errorSubject = new BehaviorSubject(undefined);
|
|
22763
|
-
this.isRateLimitReached = false;
|
|
22764
22748
|
this.selection = new SelectionModel(true, []);
|
|
22765
22749
|
this.editedRow = undefined;
|
|
22766
22750
|
this.i18nColumnPrefix = 'COMMON.';
|
|
@@ -23154,7 +23138,6 @@ class AppTable {
|
|
|
23154
23138
|
if (!res)
|
|
23155
23139
|
return; // Skip (e.g error)
|
|
23156
23140
|
if (res && res.data) {
|
|
23157
|
-
this.isRateLimitReached = !this.paginator || (res.data.length < this.paginator.pageSize);
|
|
23158
23141
|
this.visibleRowCount = res.data.length;
|
|
23159
23142
|
this.totalRowCount = isNotNil(res.total) ? res.total : ((this.paginator && this.paginator.pageIndex * (this.paginator.pageSize || DEFAULT_PAGE_SIZE) || 0) + this.visibleRowCount);
|
|
23160
23143
|
if (this.debug)
|
|
@@ -23162,7 +23145,6 @@ class AppTable {
|
|
|
23162
23145
|
}
|
|
23163
23146
|
else {
|
|
23164
23147
|
//if (this.debug) console.debug('[table] NO rows loaded');
|
|
23165
|
-
this.isRateLimitReached = true;
|
|
23166
23148
|
this.totalRowCount = 0;
|
|
23167
23149
|
this.visibleRowCount = 0;
|
|
23168
23150
|
}
|
|
@@ -23284,6 +23266,7 @@ class AppTable {
|
|
|
23284
23266
|
// Stop event
|
|
23285
23267
|
event === null || event === void 0 ? void 0 : event.stopPropagation();
|
|
23286
23268
|
// Confirmation edition or creation
|
|
23269
|
+
//const confirmed = this.dataSource.confirmEditCreate(row);
|
|
23287
23270
|
const confirmed = row.confirmEditCreate();
|
|
23288
23271
|
if (confirmed) {
|
|
23289
23272
|
// If edit finished, forget edited row
|
|
@@ -23514,22 +23497,19 @@ class AppTable {
|
|
|
23514
23497
|
if (this.saveBeforeDelete) {
|
|
23515
23498
|
// Exclude invalid rows (because of save() will fail, when exists some invalid rows)
|
|
23516
23499
|
rows = rows.filter(row => {
|
|
23517
|
-
if
|
|
23518
|
-
|
|
23519
|
-
|
|
23520
|
-
|
|
23521
|
-
|
|
23522
|
-
|
|
23523
|
-
|
|
23524
|
-
|
|
23525
|
-
|
|
23526
|
-
|
|
23527
|
-
|
|
23528
|
-
|
|
23529
|
-
|
|
23530
|
-
this.checkIfRowPristine(row, { emitEvent: false, onlySelf: true /*avoid propagation to table*/ });
|
|
23531
|
-
// Continue: the row will be deleted after the save
|
|
23532
|
-
}
|
|
23500
|
+
// Delete the row, if newly created row (id = -1), or if invalid and not editing (= not cancellable)
|
|
23501
|
+
if (row.id === -1 || (!row.valid && !row.editing)) {
|
|
23502
|
+
row.delete();
|
|
23503
|
+
this.visibleRowCount--;
|
|
23504
|
+
this.totalRowCount--;
|
|
23505
|
+
return false;
|
|
23506
|
+
}
|
|
23507
|
+
// Cancel the row (and mark as pristine), when not valid but in edition
|
|
23508
|
+
else if (!row.valid && row.editing) {
|
|
23509
|
+
row.cancel();
|
|
23510
|
+
// Mark row as pristine (if possible)
|
|
23511
|
+
this.checkIfRowPristine(row, { emitEvent: false, onlySelf: true /*avoid propagation to table*/ });
|
|
23512
|
+
return true; // Keep the row. the row will be deleted after the save
|
|
23533
23513
|
}
|
|
23534
23514
|
return true;
|
|
23535
23515
|
});
|