@provoly/dashboard 1.4.27 → 1.4.29
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/esm2022/lib/core/auth/geoAuth.service.mjs +39 -12
- package/esm2022/lib/core/store/class/class.actions.mjs +2 -1
- package/esm2022/lib/core/store/class/class.effects.mjs +11 -3
- package/esm2022/lib/dashboard/store/dashboard.effects.mjs +3 -3
- package/esm2022/notification/components/notification/notification.component.mjs +3 -3
- package/fesm2022/provoly-dashboard-notification.mjs +2 -2
- package/fesm2022/provoly-dashboard-notification.mjs.map +1 -1
- package/fesm2022/provoly-dashboard.mjs +49 -15
- package/fesm2022/provoly-dashboard.mjs.map +1 -1
- package/lib/core/auth/geoAuth.service.d.ts +9 -1
- package/lib/core/store/class/class.actions.d.ts +1 -0
- package/lib/core/store/class/class.effects.d.ts +4 -1
- package/lib/dashboard/store/dashboard.effects.d.ts +1 -1
- package/package.json +7 -7
|
@@ -1,35 +1,62 @@
|
|
|
1
1
|
import { Injectable, InjectionToken } from '@angular/core';
|
|
2
|
+
import { catchError, throwError } from 'rxjs';
|
|
2
3
|
import * as i0 from "@angular/core";
|
|
3
4
|
import * as i1 from "@angular/common/http";
|
|
4
5
|
import * as i2 from "../components/snackbar/snackbar.service";
|
|
5
6
|
import * as i3 from "../i18n/i18n.service";
|
|
7
|
+
import * as i4 from "@ngrx/store";
|
|
6
8
|
export class PryGeoAuthService {
|
|
7
9
|
}
|
|
8
10
|
export const PRY_GEOAUTH_TOKEN = new InjectionToken('PRY_GEOAUTH_TOKEN');
|
|
9
11
|
const CONTENT_TYPE = 'Content-Type';
|
|
10
12
|
const ERROR_CONTENT_REGEXP = new RegExp('<ServiceException [\\S\\s]*>([\\S\\s]*)<\\/ServiceException>', 'gm');
|
|
13
|
+
export const GEOSERVER_FAILURE_FN = {
|
|
14
|
+
func: (action, snackBarService, i18nService, store) => {
|
|
15
|
+
switch (action.code) {
|
|
16
|
+
default:
|
|
17
|
+
console.error(`Geoserver error [${action.code}]: ${action.reason}`);
|
|
18
|
+
snackBarService.open({
|
|
19
|
+
type: 'error',
|
|
20
|
+
message: i18nService.instant('@pry.geoAuth.failure', { reason: action.reason })
|
|
21
|
+
});
|
|
22
|
+
break;
|
|
23
|
+
case -2:
|
|
24
|
+
console.warn(`Strange geoserver return [${action.code}]: ${action.reason}`);
|
|
25
|
+
break;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
};
|
|
11
29
|
export class PryDefaultGeoAuthService extends PryGeoAuthService {
|
|
12
|
-
constructor(httpClient, snack, i18nService) {
|
|
30
|
+
constructor(httpClient, snack, i18nService, store) {
|
|
13
31
|
super();
|
|
14
32
|
this.httpClient = httpClient;
|
|
15
33
|
this.snack = snack;
|
|
16
34
|
this.i18nService = i18nService;
|
|
35
|
+
this.store = store;
|
|
17
36
|
}
|
|
18
37
|
customLoader(tile, src) {
|
|
19
|
-
this.httpClient
|
|
38
|
+
this.httpClient
|
|
39
|
+
.get(src, { observe: 'response', params: {}, responseType: 'blob' })
|
|
40
|
+
.pipe(catchError((err) => {
|
|
41
|
+
GEOSERVER_FAILURE_FN.func({
|
|
42
|
+
code: err.status,
|
|
43
|
+
reason: err.statusText
|
|
44
|
+
}, this.snack, this.i18nService, this.store);
|
|
45
|
+
return throwError(err);
|
|
46
|
+
}))
|
|
47
|
+
.subscribe((blob) => {
|
|
20
48
|
if (blob.headers.has(CONTENT_TYPE) && (blob.headers.get(CONTENT_TYPE) ?? '').indexOf('text/xml') >= 0) {
|
|
21
49
|
blob.body.text().then((text) => {
|
|
22
50
|
const match = text.match(ERROR_CONTENT_REGEXP);
|
|
23
51
|
const reason = match[0].replace(/\r/g, '').replace(/\n/g, '').replace(/\s\s/g, ' ');
|
|
24
|
-
if (
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
});
|
|
52
|
+
if (reason.includes('401') && reason.includes('RemoteException')) {
|
|
53
|
+
GEOSERVER_FAILURE_FN.func({ code: 401, reason }, this.snack, this.i18nService, this.store);
|
|
54
|
+
}
|
|
55
|
+
else if (!!reason) {
|
|
56
|
+
GEOSERVER_FAILURE_FN.func({ code: -1, reason }, this.snack, this.i18nService, this.store);
|
|
30
57
|
}
|
|
31
58
|
else {
|
|
32
|
-
|
|
59
|
+
GEOSERVER_FAILURE_FN.func({ code: -2, reason }, this.snack, this.i18nService, this.store);
|
|
33
60
|
}
|
|
34
61
|
});
|
|
35
62
|
}
|
|
@@ -38,10 +65,10 @@ export class PryDefaultGeoAuthService extends PryGeoAuthService {
|
|
|
38
65
|
}
|
|
39
66
|
});
|
|
40
67
|
}
|
|
41
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: PryDefaultGeoAuthService, deps: [{ token: i1.HttpClient }, { token: i2.PrySnackbarService }, { token: i3.PryI18nService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
68
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: PryDefaultGeoAuthService, deps: [{ token: i1.HttpClient }, { token: i2.PrySnackbarService }, { token: i3.PryI18nService }, { token: i4.Store }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
42
69
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: PryDefaultGeoAuthService }); }
|
|
43
70
|
}
|
|
44
71
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: PryDefaultGeoAuthService, decorators: [{
|
|
45
72
|
type: Injectable
|
|
46
|
-
}], ctorParameters: () => [{ type: i1.HttpClient }, { type: i2.PrySnackbarService }, { type: i3.PryI18nService }] });
|
|
47
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
73
|
+
}], ctorParameters: () => [{ type: i1.HttpClient }, { type: i2.PrySnackbarService }, { type: i3.PryI18nService }, { type: i4.Store }] });
|
|
74
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvQXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9kYXNoYm9hcmQvbGliL2NvcmUvYXV0aC9nZW9BdXRoLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFLM0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7OztBQUU5QyxNQUFNLE9BQWdCLGlCQUFpQjtDQUV0QztBQUVELE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLElBQUksY0FBYyxDQUFvQixtQkFBbUIsQ0FBQyxDQUFDO0FBRTVGLE1BQU0sWUFBWSxHQUFHLGNBQWMsQ0FBQztBQUVwQyxNQUFNLG9CQUFvQixHQUFHLElBQUksTUFBTSxDQUFDLDhEQUE4RCxFQUFFLElBQUksQ0FBQyxDQUFDO0FBRTlHLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHO0lBQ2xDLElBQUksRUFBRSxDQUNKLE1BR0MsRUFDRCxlQUFtQyxFQUNuQyxXQUEyQixFQUMzQixLQUFZLEVBQ1osRUFBRTtRQUNGLFFBQVEsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3BCO2dCQUNFLE9BQU8sQ0FBQyxLQUFLLENBQUMsb0JBQW9CLE1BQU0sQ0FBQyxJQUFJLE1BQU0sTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7Z0JBQ3BFLGVBQWUsQ0FBQyxJQUFJLENBQUM7b0JBQ25CLElBQUksRUFBRSxPQUFPO29CQUNiLE9BQU8sRUFBRSxXQUFXLENBQUMsT0FBTyxDQUFDLHNCQUFzQixFQUFFLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztpQkFDaEYsQ0FBQyxDQUFDO2dCQUNILE1BQU07WUFDUixLQUFLLENBQUMsQ0FBQztnQkFDTCxPQUFPLENBQUMs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b0JBQzVGLENBQUM7Z0JBQ0gsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFLLENBQUMsQ0FBQztZQUN4RCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOzhHQTVDVSx3QkFBd0I7a0hBQXhCLHdCQUF3Qjs7MkZBQXhCLHdCQUF3QjtrQkFEcEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgUHJ5U25hY2tiYXJTZXJ2aWNlIH0gZnJvbSAnLi4vY29tcG9uZW50cy9zbmFja2Jhci9zbmFja2Jhci5zZXJ2aWNlJztcbmltcG9ydCB7IFByeUkxOG5TZXJ2aWNlIH0gZnJvbSAnLi4vaTE4bi9pMThuLnNlcnZpY2UnO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBQcnlHZW9BdXRoU2VydmljZSB7XG4gIGFic3RyYWN0IGN1c3RvbUxvYWRlcih0aWxlOiBhbnksIHNyYzogc3RyaW5nKTogdm9pZDtcbn1cblxuZXhwb3J0IGNvbnN0IFBSWV9HRU9BVVRIX1RPS0VOID0gbmV3IEluamVjdGlvblRva2VuPFByeUdlb0F1dGhTZXJ2aWNlPignUFJZX0dFT0FVVEhfVE9LRU4nKTtcblxuY29uc3QgQ09OVEVOVF9UWVBFID0gJ0NvbnRlbnQtVHlwZSc7XG5cbmNvbnN0IEVSUk9SX0NPTlRFTlRfUkVHRVhQID0gbmV3IFJlZ0V4cCgnPFNlcnZpY2VFeGNlcHRpb24gW1xcXFxTXFxcXHNdKj4oW1xcXFxTXFxcXHNdKik8XFxcXC9TZXJ2aWNlRXhjZXB0aW9uPicsICdnbScpO1xuXG5leHBvcnQgY29uc3QgR0VPU0VSVkVSX0ZBSUxVUkVfRk4gPSB7XG4gIGZ1bmM6IChcbiAgICBhY3Rpb246IHtcbiAgICAgIGNvZGU6IG51bWJlcjtcbiAgICAgIHJlYXNvbjogc3RyaW5nO1xuICAgIH0sXG4gICAgc25hY2tCYXJTZXJ2aWNlOiBQcnlTbmFja2JhclNlcnZpY2UsXG4gICAgaTE4blNlcnZpY2U6IFByeUkxOG5TZXJ2aWNlLFxuICAgIHN0b3JlOiBTdG9yZVxuICApID0+IHtcbiAgICBzd2l0Y2ggKGFjdGlvbi5jb2RlKSB7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBjb25zb2xlLmVycm9yKGBHZW9zZXJ2ZXIgZXJyb3IgWyR7YWN0aW9uLmNvZGV9XTogJHthY3Rpb24ucmVhc29ufWApO1xuICAgICAgICBzbmFja0JhclNlcnZpY2Uub3Blbih7XG4gICAgICAgICAgdHlwZTogJ2Vycm9yJyxcbiAgICAgICAgICBtZXNzYWdlOiBpMThuU2VydmljZS5pbnN0YW50KCdAcHJ5Lmdlb0F1dGguZmFpbHVyZScsIHsgcmVhc29uOiBhY3Rpb24ucmVhc29uIH0pXG4gICAgICAgIH0pO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgLTI6XG4gICAgICAgIGNvbnNvbGUud2FybihgU3RyYW5nZSBnZW9zZXJ2ZXIgcmV0dXJuICBbJHthY3Rpb24uY29kZX1dOiAke2FjdGlvbi5yZWFzb259YCk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxufTtcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFByeURlZmF1bHRHZW9BdXRoU2VydmljZSBleHRlbmRzIFByeUdlb0F1dGhTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBodHRwQ2xpZW50OiBIdHRwQ2xpZW50LFxuICAgIHByaXZhdGUgc25hY2s6IFByeVNuYWNrYmFyU2VydmljZSxcbiAgICBwcml2YXRlIGkxOG5TZXJ2aWNlOiBQcnlJMThuU2VydmljZSxcbiAgICBwcml2YXRlIHN0b3JlOiBTdG9yZVxuICApIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgb3ZlcnJpZGUgY3VzdG9tTG9hZGVyKHRpbGU6IGFueSwgc3JjOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmh0dHBDbGllbnRcbiAgICAgIC5nZXQoc3JjLCB7IG9ic2VydmU6ICdyZXNwb25zZScsIHBhcmFtczoge30sIHJlc3BvbnNlVHlwZTogJ2Jsb2InIH0pXG4gICAgICAucGlwZShcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyKSA9PiB7XG4gICAgICAgICAgR0VPU0VSVkVSX0ZBSUxVUkVfRk4uZnVuYyhcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgY29kZTogZXJyLnN0YXR1cyxcbiAgICAgICAgICAgICAgcmVhc29uOiBlcnIuc3RhdHVzVGV4dFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRoaXMuc25hY2ssXG4gICAgICAgICAgICB0aGlzLmkxOG5TZXJ2aWNlLFxuICAgICAgICAgICAgdGhpcy5zdG9yZVxuICAgICAgICAgICk7XG4gICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXJyKTtcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKGJsb2IpID0+IHtcbiAgICAgICAgaWYgKGJsb2IuaGVhZGVycy5oYXMoQ09OVEVOVF9UWVBFKSAmJiAoYmxvYi5oZWFkZXJzLmdldChDT05URU5UX1RZUEUpID8/ICcnKS5pbmRleE9mKCd0ZXh0L3htbCcpID49IDApIHtcbiAgICAgICAgICBibG9iLmJvZHkhLnRleHQoKS50aGVuKCh0ZXh0KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBtYXRjaCA9IHRleHQubWF0Y2goRVJST1JfQ09OVEVOVF9SRUdFWFApO1xuICAgICAgICAgICAgY29uc3QgcmVhc29uID0gbWF0Y2ghWzBdLnJlcGxhY2UoL1xcci9nLCAnJykucmVwbGFjZSgvXFxuL2csICcnKS5yZXBsYWNlKC9cXHNcXHMvZywgJyAnKTtcbiAgICAgICAgICAgIGlmIChyZWFzb24uaW5jbHVkZXMoJzQwMScpICYmIHJlYXNvbi5pbmNsdWRlcygnUmVtb3RlRXhjZXB0aW9uJykpIHtcbiAgICAgICAgICAgICAgR0VPU0VSVkVSX0ZBSUxVUkVfRk4uZnVuYyh7IGNvZGU6IDQwMSwgcmVhc29uIH0sIHRoaXMuc25hY2ssIHRoaXMuaTE4blNlcnZpY2UsIHRoaXMuc3RvcmUpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICghIXJlYXNvbikge1xuICAgICAgICAgICAgICBHRU9TRVJWRVJfRkFJTFVSRV9GTi5mdW5jKHsgY29kZTogLTEsIHJlYXNvbiB9LCB0aGlzLnNuYWNrLCB0aGlzLmkxOG5TZXJ2aWNlLCB0aGlzLnN0b3JlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIEdFT1NFUlZFUl9GQUlMVVJFX0ZOLmZ1bmMoeyBjb2RlOiAtMiwgcmVhc29uIH0sIHRoaXMuc25hY2ssIHRoaXMuaTE4blNlcnZpY2UsIHRoaXMuc3RvcmUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRpbGUuZ2V0SW1hZ2UoKS5zcmMgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IuYm9keSEpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxufVxuIl19
|
|
@@ -3,8 +3,9 @@ export const ClassActions = {
|
|
|
3
3
|
load: createAction('[Class] (bus) Load Classes', props()),
|
|
4
4
|
loadSuccess: createAction('[Class Api] (bus) Load Classes Success', props()),
|
|
5
5
|
loadFailure: createAction('[Class Api] (bus) Load Classes Failure', props()),
|
|
6
|
+
requestUpdate: createAction('[Class Api] (bus) Request Classes Update'),
|
|
6
7
|
loadDatasetCount: createAction('[Class Api] Load DatasetCount'),
|
|
7
8
|
loadDatasetCountSuccess: createAction('[Class Api] Load DatasetCount Success', props()),
|
|
8
9
|
loadDatasetCountFailure: createAction('[Class Api] Load DatasetCount Failure', props())
|
|
9
10
|
};
|
|
10
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3MuYWN0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL2xpYi9jb3JlL3N0b3JlL2NsYXNzL2NsYXNzLmFjdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFJbEQsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHO0lBQzFCLElBQUksRUFBRSxZQUFZLENBQUMsNEJBQTRCLEVBQUUsS0FBSyxFQUF1QixDQUFDO0lBQzlFLFdBQVcsRUFBRSxZQUFZLENBQUMsd0NBQXdDLEVBQUUsS0FBSyxFQUF3QixDQUFDO0lBQ2xHLFdBQVcsRUFBRSxZQUFZLENBQUMsd0NBQXdDLEVBQUUsS0FBSyxFQUFxQixDQUFDO0lBQy9GLGFBQWEsRUFBRSxZQUFZLENBQUMsMENBQTBDLENBQUM7SUFDdkUsZ0JBQWdCLEVBQUUsWUFBWSxDQUFDLCtCQUErQixDQUFDO0lBQy9ELHVCQUF1QixFQUFFLFlBQVksQ0FDbkMsdUNBQXVDLEVBQ3ZDLEtBQUssRUFFRCxDQUNMO0lBQ0QsdUJBQXVCLEVBQUUsWUFBWSxDQUNuQyx1Q0FBdUMsRUFDdkMsS0FBSyxFQUVELENBQ0w7Q0FDRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlQWN0aW9uLCBwcm9wcyB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7IENsYXNzIH0gZnJvbSAnLi9jbGFzcy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRGF0YXNldENvdW50IH0gZnJvbSAnLi4vLi4vbW9kZWwvZGF0YXNldC5pbnRlcmZhY2UnO1xuXG5leHBvcnQgY29uc3QgQ2xhc3NBY3Rpb25zID0ge1xuICBsb2FkOiBjcmVhdGVBY3Rpb24oJ1tDbGFzc10gKGJ1cykgTG9hZCBDbGFzc2VzJywgcHJvcHM8eyBmb3JjZT86IGJvb2xlYW4gfT4oKSksXG4gIGxvYWRTdWNjZXNzOiBjcmVhdGVBY3Rpb24oJ1tDbGFzcyBBcGldIChidXMpIExvYWQgQ2xhc3NlcyBTdWNjZXNzJywgcHJvcHM8eyBjbGFzc2VzOiBDbGFzc1tdIH0+KCkpLFxuICBsb2FkRmFpbHVyZTogY3JlYXRlQWN0aW9uKCdbQ2xhc3MgQXBpXSAoYnVzKSBMb2FkIENsYXNzZXMgRmFpbHVyZScsIHByb3BzPHsgZXJyb3I6IHN0cmluZyB9PigpKSxcbiAgcmVxdWVzdFVwZGF0ZTogY3JlYXRlQWN0aW9uKCdbQ2xhc3MgQXBpXSAoYnVzKSBSZXF1ZXN0IENsYXNzZXMgVXBkYXRlJyksXG4gIGxvYWREYXRhc2V0Q291bnQ6IGNyZWF0ZUFjdGlvbignW0NsYXNzIEFwaV0gTG9hZCBEYXRhc2V0Q291bnQnKSxcbiAgbG9hZERhdGFzZXRDb3VudFN1Y2Nlc3M6IGNyZWF0ZUFjdGlvbihcbiAgICAnW0NsYXNzIEFwaV0gTG9hZCBEYXRhc2V0Q291bnQgU3VjY2VzcycsXG4gICAgcHJvcHM8e1xuICAgICAgZGF0YXNldENvdW50czogRGF0YXNldENvdW50W107XG4gICAgfT4oKVxuICApLFxuICBsb2FkRGF0YXNldENvdW50RmFpbHVyZTogY3JlYXRlQWN0aW9uKFxuICAgICdbQ2xhc3MgQXBpXSBMb2FkIERhdGFzZXRDb3VudCBGYWlsdXJlJyxcbiAgICBwcm9wczx7XG4gICAgICBlcnJvcjogYW55O1xuICAgIH0+KClcbiAgKVxufTtcbiJdfQ==
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Injectable } from '@angular/core';
|
|
2
2
|
import { createEffect, ofType } from '@ngrx/effects';
|
|
3
|
-
import { catchError, debounceTime, filter, map, mergeMap, withLatestFrom } from 'rxjs';
|
|
3
|
+
import { catchError, debounceTime, filter, map, mergeMap, of, withLatestFrom } from 'rxjs';
|
|
4
4
|
import { ClassActions } from './class.actions';
|
|
5
5
|
import { ClassSelectors } from './class.selectors';
|
|
6
6
|
import { DashboardSelectors } from '../../../dashboard/store/dashboard.selectors';
|
|
@@ -13,7 +13,15 @@ export class ClassEffects {
|
|
|
13
13
|
this.actions$ = actions$;
|
|
14
14
|
this.classService = classService;
|
|
15
15
|
this.store = store;
|
|
16
|
-
this.loadClasses$ = createEffect(() => this.actions$.pipe(ofType(ClassActions.load), withLatestFrom(this.store.select(ClassSelectors.classes), this.store.select(DashboardSelectors.rank)), debounceTime(200), filter(([action, classes, rank]) =>
|
|
16
|
+
this.loadClasses$ = createEffect(() => this.actions$.pipe(ofType(ClassActions.load), withLatestFrom(this.store.select(ClassSelectors.classes), this.store.select(DashboardSelectors.rank)), debounceTime(200), filter(([action, classes, rank]) => action.force || classes.length === 0), mergeMap(([action, classes, rank]) => {
|
|
17
|
+
if (rank === 0) {
|
|
18
|
+
return this.classService.getClasses().pipe(map((classes) => ClassActions.loadSuccess({ classes })), catchError((error) => [ClassActions.loadFailure({ error: error })]));
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
return of(ClassActions.requestUpdate());
|
|
22
|
+
}
|
|
23
|
+
})));
|
|
24
|
+
this.requestUpdate$ = createEffect(() => this.actions$.pipe(ofType(ClassActions.requestUpdate), withLatestFrom(this.store.select(ClassSelectors.classes), this.store.select(DashboardSelectors.rank)), filter(([_, classes, rank]) => rank === 0), map(([_, classes, rank]) => ClassActions.loadSuccess({ classes }))));
|
|
17
25
|
this.loadDatasetCount$ = createEffect(() => this.actions$.pipe(ofType(ClassActions.loadDatasetCount), mergeMap((action) => this.classService.getDatasetCounts().pipe(map((datasetCounts) => {
|
|
18
26
|
return ClassActions.loadDatasetCountSuccess({ datasetCounts: datasetCounts });
|
|
19
27
|
}), catchError((error) => [ClassActions.loadDatasetCountFailure({ error: error })])))));
|
|
@@ -24,4 +32,4 @@ export class ClassEffects {
|
|
|
24
32
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: ClassEffects, decorators: [{
|
|
25
33
|
type: Injectable
|
|
26
34
|
}], ctorParameters: () => [{ type: i1.Actions }, { type: i2.ClassService }, { type: i3.Store }] });
|
|
27
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3MuZWZmZWN0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL2xpYi9jb3JlL3N0b3JlL2NsYXNzL2NsYXNzLmVmZmVjdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQVcsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RCxPQUFPLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsY0FBYyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUcvQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOENBQThDLENBQUM7Ozs7O0FBR2xGLE1BQU0sT0FBTyxZQUFZO0lBMkN2QixZQUNVLFFBQWlCLEVBQ2pCLFlBQTBCLEVBQzFCLEtBQVk7UUFGWixhQUFRLEdBQVIsUUFBUSxDQUFTO1FBQ2pCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLFVBQUssR0FBTCxLQUFLLENBQU87UUE3Q3RCLGlCQUFZLEdBQUcsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUMvQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FDaEIsTUFBTSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFDekIsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUNyRyxZQUFZLENBQUMsR0FBRyxDQUFDLEVBQ2pCLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssSUFBSSxPQUFPLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxFQUN6RSxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRTtZQUNuQyxJQUFJLElBQUksS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDZixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxFQUFFLENBQUMsSUFBSSxDQUN4QyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLEVBQ3ZELFVBQVUsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUNwRSxDQUFDO1lBQ0osQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDO1lBQzFDLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FDSCxDQUNGLENBQUM7UUFFRixtQkFBYyxHQUFHLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FDakMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQ2hCLE1BQU0sQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLEVBQ2xDLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUMsRUFDckcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLEVBQzFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FDbkUsQ0FDRixDQUFDO1FBRUYsc0JBQWlCLEdBQUcsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUNwQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FDaEIsTUFBTSxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxFQUNyQyxRQUFRLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUNsQixJQUFJLENBQUMsWUFBWSxDQUFDLGdCQUFnQixFQUFFLENBQUMsSUFBSSxDQUN2QyxHQUFHLENBQUMsQ0FBQyxhQUFhLEVBQUUsRUFBRTtZQUNwQixPQUFPLFlBQVksQ0FBQyx1QkFBdUIsQ0FBQyxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsQ0FBQyxDQUFDO1FBQ2hGLENBQUMsQ0FBQyxFQUNGLFVBQVUsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxZQUFZLENBQUMsdUJBQXVCLENBQUMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQ2hGLENBQ0YsQ0FDRixDQUNGLENBQUM7SUFNQyxDQUFDOzhHQS9DTyxZQUFZO2tIQUFaLFlBQVk7OzJGQUFaLFlBQVk7a0JBRHhCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3Rpb25zLCBjcmVhdGVFZmZlY3QsIG9mVHlwZSB9IGZyb20gJ0BuZ3J4L2VmZmVjdHMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZGVib3VuY2VUaW1lLCBmaWx0ZXIsIG1hcCwgbWVyZ2VNYXAsIG9mLCB3aXRoTGF0ZXN0RnJvbSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ2xhc3NBY3Rpb25zIH0gZnJvbSAnLi9jbGFzcy5hY3Rpb25zJztcbmltcG9ydCB7IENsYXNzU2VydmljZSB9IGZyb20gJy4vY2xhc3Muc2VydmljZSc7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7IENsYXNzU2VsZWN0b3JzIH0gZnJvbSAnLi9jbGFzcy5zZWxlY3RvcnMnO1xuaW1wb3J0IHsgRGFzaGJvYXJkU2VsZWN0b3JzIH0gZnJvbSAnLi4vLi4vLi4vZGFzaGJvYXJkL3N0b3JlL2Rhc2hib2FyZC5zZWxlY3RvcnMnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQ2xhc3NFZmZlY3RzIHtcbiAgbG9hZENsYXNzZXMkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKENsYXNzQWN0aW9ucy5sb2FkKSxcbiAgICAgIHdpdGhMYXRlc3RGcm9tKHRoaXMuc3RvcmUuc2VsZWN0KENsYXNzU2VsZWN0b3JzLmNsYXNzZXMpLCB0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMucmFuaykpLFxuICAgICAgZGVib3VuY2VUaW1lKDIwMCksXG4gICAgICBmaWx0ZXIoKFthY3Rpb24sIGNsYXNzZXMsIHJhbmtdKSA9PiBhY3Rpb24uZm9yY2UgfHwgY2xhc3Nlcy5sZW5ndGggPT09IDApLFxuICAgICAgbWVyZ2VNYXAoKFthY3Rpb24sIGNsYXNzZXMsIHJhbmtdKSA9PiB7XG4gICAgICAgIGlmIChyYW5rID09PSAwKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuY2xhc3NTZXJ2aWNlLmdldENsYXNzZXMoKS5waXBlKFxuICAgICAgICAgICAgbWFwKChjbGFzc2VzKSA9PiBDbGFzc0FjdGlvbnMubG9hZFN1Y2Nlc3MoeyBjbGFzc2VzIH0pKSxcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiBbQ2xhc3NBY3Rpb25zLmxvYWRGYWlsdXJlKHsgZXJyb3I6IGVycm9yIH0pXSlcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBvZihDbGFzc0FjdGlvbnMucmVxdWVzdFVwZGF0ZSgpKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApXG4gICk7XG5cbiAgcmVxdWVzdFVwZGF0ZSQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoQ2xhc3NBY3Rpb25zLnJlcXVlc3RVcGRhdGUpLFxuICAgICAgd2l0aExhdGVzdEZyb20odGhpcy5zdG9yZS5zZWxlY3QoQ2xhc3NTZWxlY3RvcnMuY2xhc3NlcyksIHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5yYW5rKSksXG4gICAgICBmaWx0ZXIoKFtfLCBjbGFzc2VzLCByYW5rXSkgPT4gcmFuayA9PT0gMCksXG4gICAgICBtYXAoKFtfLCBjbGFzc2VzLCByYW5rXSkgPT4gQ2xhc3NBY3Rpb25zLmxvYWRTdWNjZXNzKHsgY2xhc3NlcyB9KSlcbiAgICApXG4gICk7XG5cbiAgbG9hZERhdGFzZXRDb3VudCQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoQ2xhc3NBY3Rpb25zLmxvYWREYXRhc2V0Q291bnQpLFxuICAgICAgbWVyZ2VNYXAoKGFjdGlvbikgPT5cbiAgICAgICAgdGhpcy5jbGFzc1NlcnZpY2UuZ2V0RGF0YXNldENvdW50cygpLnBpcGUoXG4gICAgICAgICAgbWFwKChkYXRhc2V0Q291bnRzKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gQ2xhc3NBY3Rpb25zLmxvYWREYXRhc2V0Q291bnRTdWNjZXNzKHsgZGF0YXNldENvdW50czogZGF0YXNldENvdW50cyB9KTtcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4gW0NsYXNzQWN0aW9ucy5sb2FkRGF0YXNldENvdW50RmFpbHVyZSh7IGVycm9yOiBlcnJvciB9KV0pXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBhY3Rpb25zJDogQWN0aW9ucyxcbiAgICBwcml2YXRlIGNsYXNzU2VydmljZTogQ2xhc3NTZXJ2aWNlLFxuICAgIHByaXZhdGUgc3RvcmU6IFN0b3JlXG4gICkge31cbn1cbiJdfQ==
|