@uxland/primary-shell 5.3.7 → 5.3.9
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/dist/index.js +1951 -2144
- package/dist/index.js.map +1 -1
- package/dist/index.umd.cjs +123 -87
- package/dist/index.umd.cjs.map +1 -1
- package/dist/primary/shell/src/events.d.ts +1 -0
- package/dist/primary/shell/src/internal-plugins/activity-history/activity-history-item/add/add-async-history-items/request.d.ts +3 -2
- package/dist/primary/shell/src/internal-plugins/activity-history/activity-history-item/add/handle-error/actions.d.ts +1 -0
- package/dist/primary/shell/src/internal-plugins/activity-history/activity-history-item/add/handle-error/handle-history-items-add-error/bootstrapper.d.ts +4 -0
- package/dist/primary/shell/src/internal-plugins/activity-history/activity-history-item/add/handle-error/handle-history-items-add-error/handler.d.ts +7 -0
- package/dist/primary/shell/src/internal-plugins/activity-history/activity-history-item/add/handle-error/handle-history-items-add-error/request.d.ts +6 -0
- package/dist/primary/shell/src/internal-plugins/activity-history/activity-history-item/add/handle-error/history-full-data-error/component.d.ts +10 -0
- package/dist/primary/shell/src/internal-plugins/activity-history/activity-history-item/add/handle-error/history-full-data-error/template.d.ts +3 -0
- package/dist/primary/shell/src/internal-plugins/activity-history/activity-history-item/add/handle-error/history-partial-data-error/component.d.ts +11 -0
- package/dist/primary/shell/src/internal-plugins/activity-history/activity-history-item/add/handle-error/history-partial-data-error/template.d.ts +3 -0
- package/dist/primary/shell/src/internal-plugins/activity-history/activity-history-item/{list → add}/handle-error/reducers.d.ts +2 -4
- package/dist/primary/shell/src/internal-plugins/activity-history/activity-history-item/add/handle-error/selectors.d.ts +5 -0
- package/dist/primary/shell/src/internal-plugins/activity-history/activity-history-item/domain/model.d.ts +2 -1
- package/dist/primary/shell/src/internal-plugins/activity-history/activity-history-item/domain/specs/diagnostics-filter-spec.d.ts +8 -0
- package/dist/primary/shell/src/internal-plugins/activity-history/activity-history-item/domain/validation/is-valid-basic-history-item.d.ts +5 -0
- package/dist/primary/shell/src/internal-plugins/activity-history/activity-history-item/domain/validation/is-valid-basic-history-item.test.d.ts +1 -0
- package/dist/primary/shell/src/internal-plugins/activity-history/activity-history-item/domain/validation/is-valid-full-history-item.d.ts +5 -0
- package/dist/primary/shell/src/internal-plugins/activity-history/activity-history-item/domain/validation/is-valid-full-history-item.test.d.ts +1 -0
- package/dist/primary/shell/src/internal-plugins/activity-history/activity-history-item/filter/UI/active-filters-badges/active-filters-badges.d.ts +4 -2
- package/dist/primary/shell/src/internal-plugins/activity-history/activity-history-item/filter/UI/active-filters-header/active-filters-header.d.ts +1 -0
- package/dist/primary/shell/src/internal-plugins/activity-history/activity-history-item/filter/UI/activity-history-filters/activity-history-filters.d.ts +4 -1
- package/dist/primary/shell/src/internal-plugins/activity-history/activity-history-item/filter/common-filters/selectors.d.ts +42 -42
- package/dist/primary/shell/src/internal-plugins/activity-history/activity-history-item/filter/custom-filters/add-custom-filters/actions.d.ts +1 -1
- package/dist/primary/shell/src/internal-plugins/activity-history/activity-history-item/filter/custom-filters/add-custom-filters/reducer.d.ts +2 -2
- package/dist/primary/shell/src/internal-plugins/activity-history/activity-history-item/filter/custom-filters/add-custom-filters/request.d.ts +3 -3
- package/dist/primary/shell/src/internal-plugins/activity-history/activity-history-item/filter/custom-filters/selectors.d.ts +29 -29
- package/dist/primary/shell/src/internal-plugins/activity-history/activity-history-item/filter/diagnostic-filters/add/actions.d.ts +1 -0
- package/dist/primary/shell/src/internal-plugins/activity-history/activity-history-item/filter/diagnostic-filters/add/bootstrapper.d.ts +4 -0
- package/dist/primary/shell/src/internal-plugins/activity-history/activity-history-item/filter/diagnostic-filters/add/handler.d.ts +6 -0
- package/dist/primary/shell/src/internal-plugins/activity-history/activity-history-item/filter/diagnostic-filters/add/reducer.d.ts +4 -0
- package/dist/primary/shell/src/internal-plugins/activity-history/activity-history-item/filter/diagnostic-filters/add/reducer.test.d.ts +1 -0
- package/dist/primary/shell/src/internal-plugins/activity-history/activity-history-item/filter/diagnostic-filters/add/request.d.ts +6 -0
- package/dist/primary/shell/src/internal-plugins/activity-history/activity-history-item/filter/diagnostic-filters/handle-add-diagnostics-options-from-item.d.ts +5 -0
- package/dist/primary/shell/src/internal-plugins/activity-history/activity-history-item/filter/diagnostic-filters/handle-add-diagnostics-options-from-item.test.d.ts +1 -0
- package/dist/primary/shell/src/internal-plugins/activity-history/activity-history-item/filter/diagnostic-filters/selectors.d.ts +185 -0
- package/dist/primary/shell/src/internal-plugins/activity-history/activity-history-item/filter/diagnostic-filters/set/actions.d.ts +1 -0
- package/dist/primary/shell/src/internal-plugins/activity-history/activity-history-item/filter/diagnostic-filters/set/bootstrapper.d.ts +4 -0
- package/dist/primary/shell/src/internal-plugins/activity-history/activity-history-item/filter/diagnostic-filters/set/handler.d.ts +6 -0
- package/dist/primary/shell/src/internal-plugins/activity-history/activity-history-item/filter/diagnostic-filters/set/reducer.d.ts +3 -0
- package/dist/primary/shell/src/internal-plugins/activity-history/activity-history-item/filter/diagnostic-filters/set/request.d.ts +4 -0
- package/dist/primary/shell/src/internal-plugins/activity-history/activity-history-item/filter/model.d.ts +18 -3
- package/dist/primary/shell/src/internal-plugins/activity-history/activity-history-item/filter/selectors.d.ts +1 -1
- package/dist/primary/shell/src/internal-plugins/activity-history/activity-history-item/filter/slice.d.ts +7 -3
- package/dist/primary/shell/src/internal-plugins/activity-history/activity-history-item/selectors.d.ts +86 -27
- package/dist/primary/shell/src/internal-plugins/activity-history/activity-history-item/slice.d.ts +2 -2
- package/dist/primary/shell/src/internal-plugins/activity-history/infrastructure/state/store.d.ts +4 -4
- package/dist/primary/shell/src/internal-plugins/activity-history/localization.d.ts +16 -0
- package/dist/primary/shell/src/internal-plugins/activity-history/utils/get-unique-values-by-prop-path.d.ts +1 -1
- package/package.json +1 -2
- package/src/UI/components/primaria-shell/shell-header/styles.css +1 -0
- package/src/UI/images/feedback-error.svg +9 -0
- package/src/UI/internal-views/upper-nav-views.ts +82 -17
- package/src/UI/shared-components/primaria-character-limit-badge/primaria-character-limit-badge.ts +5 -7
- package/src/UI/shared-components/primaria-character-limit-badge/styles.css +1 -1
- package/src/api/interaction-service/modal-styles.css +1 -1
- package/src/events.ts +1 -0
- package/src/features/clinical-monitoring/component/template.ts +5 -5
- package/src/internal-plugins/activity-history/activity-history-item/add/add-async-history-items/handler.ts +4 -3
- package/src/internal-plugins/activity-history/activity-history-item/add/add-async-history-items/request.ts +3 -2
- package/src/internal-plugins/activity-history/activity-history-item/add/add-history-item/handler.ts +4 -2
- package/src/internal-plugins/activity-history/activity-history-item/add/add-history-items/handler.ts +4 -2
- package/src/internal-plugins/activity-history/activity-history-item/add/handle-error/handle-history-items-add-error/bootstrapper.ts +18 -0
- package/src/internal-plugins/activity-history/activity-history-item/add/handle-error/handle-history-items-add-error/handler.ts +26 -0
- package/src/internal-plugins/activity-history/activity-history-item/add/handle-error/handle-history-items-add-error/request.ts +5 -0
- package/src/internal-plugins/activity-history/activity-history-item/add/handle-error/history-full-data-error/component.ts +32 -0
- package/src/internal-plugins/activity-history/activity-history-item/add/handle-error/history-full-data-error/styles.css +11 -0
- package/src/internal-plugins/activity-history/activity-history-item/add/handle-error/history-full-data-error/template.ts +23 -0
- package/src/internal-plugins/activity-history/activity-history-item/add/handle-error/history-partial-data-error/component.ts +42 -0
- package/src/internal-plugins/activity-history/activity-history-item/add/handle-error/history-partial-data-error/styles.css +11 -0
- package/src/internal-plugins/activity-history/activity-history-item/add/handle-error/history-partial-data-error/template.ts +19 -0
- package/src/internal-plugins/activity-history/activity-history-item/{list → add}/handle-error/reducers.ts +3 -2
- package/src/internal-plugins/activity-history/activity-history-item/add/handle-error/selectors.ts +19 -0
- package/src/internal-plugins/activity-history/activity-history-item/bootstrapper.ts +4 -1
- package/src/internal-plugins/activity-history/activity-history-item/domain/business-rules.ts +1 -1
- package/src/internal-plugins/activity-history/activity-history-item/domain/model.ts +2 -1
- package/src/internal-plugins/activity-history/activity-history-item/domain/specs/diagnostics-filter-spec.test.ts +59 -0
- package/src/internal-plugins/activity-history/activity-history-item/domain/specs/diagnostics-filter-spec.ts +18 -0
- package/src/internal-plugins/activity-history/activity-history-item/domain/validation/is-valid-basic-history-item.test.ts +63 -0
- package/src/internal-plugins/activity-history/activity-history-item/domain/validation/is-valid-basic-history-item.ts +43 -0
- package/src/internal-plugins/activity-history/activity-history-item/domain/{is-valid-history-item/is-valid-history-item.test.ts → validation/is-valid-full-history-item.test.ts} +11 -11
- package/src/internal-plugins/activity-history/activity-history-item/domain/{is-valid-history-item/is-valid-history-item.ts → validation/is-valid-full-history-item.ts} +7 -8
- package/src/internal-plugins/activity-history/activity-history-item/filter/UI/active-filters-badges/active-filters-badges.ts +19 -2
- package/src/internal-plugins/activity-history/activity-history-item/filter/UI/active-filters-badges/template.ts +49 -1
- package/src/internal-plugins/activity-history/activity-history-item/filter/UI/active-filters-header/active-filters-header.ts +4 -0
- package/src/internal-plugins/activity-history/activity-history-item/filter/UI/active-filters-header/template.ts +1 -0
- package/src/internal-plugins/activity-history/activity-history-item/filter/UI/activity-history-filters/activity-history-filters.ts +21 -1
- package/src/internal-plugins/activity-history/activity-history-item/filter/UI/activity-history-filters/template.ts +11 -2
- package/src/internal-plugins/activity-history/activity-history-item/filter/bootstrapper.ts +12 -0
- package/src/internal-plugins/activity-history/activity-history-item/filter/common-filters/common-filters.ts +8 -3
- package/src/internal-plugins/activity-history/activity-history-item/filter/custom-filters/add-custom-filters/reducer.ts +2 -2
- package/src/internal-plugins/activity-history/activity-history-item/filter/custom-filters/add-custom-filters/request.ts +2 -2
- package/src/internal-plugins/activity-history/activity-history-item/filter/custom-filters/selectors.ts +4 -5
- package/src/internal-plugins/activity-history/activity-history-item/filter/diagnostic-filters/add/actions.ts +3 -0
- package/src/internal-plugins/activity-history/activity-history-item/filter/diagnostic-filters/add/bootstrapper.ts +14 -0
- package/src/internal-plugins/activity-history/activity-history-item/filter/diagnostic-filters/add/handler.ts +14 -0
- package/src/internal-plugins/activity-history/activity-history-item/filter/diagnostic-filters/add/reducer.test.ts +93 -0
- package/src/internal-plugins/activity-history/activity-history-item/filter/diagnostic-filters/add/reducer.ts +25 -0
- package/src/internal-plugins/activity-history/activity-history-item/filter/diagnostic-filters/add/request.ts +5 -0
- package/src/internal-plugins/activity-history/activity-history-item/filter/diagnostic-filters/handle-add-diagnostics-options-from-item.test.ts +80 -0
- package/src/internal-plugins/activity-history/activity-history-item/filter/diagnostic-filters/handle-add-diagnostics-options-from-item.ts +31 -0
- package/src/internal-plugins/activity-history/activity-history-item/filter/diagnostic-filters/selectors.ts +22 -0
- package/src/internal-plugins/activity-history/activity-history-item/filter/diagnostic-filters/set/actions.ts +3 -0
- package/src/internal-plugins/activity-history/activity-history-item/filter/diagnostic-filters/set/bootstrapper.ts +14 -0
- package/src/internal-plugins/activity-history/activity-history-item/filter/diagnostic-filters/set/handler.ts +13 -0
- package/src/internal-plugins/activity-history/activity-history-item/filter/diagnostic-filters/set/reducer.ts +11 -0
- package/src/internal-plugins/activity-history/activity-history-item/filter/diagnostic-filters/set/request.ts +3 -0
- package/src/internal-plugins/activity-history/activity-history-item/filter/model.ts +21 -4
- package/src/internal-plugins/activity-history/activity-history-item/filter/slice.ts +6 -2
- package/src/internal-plugins/activity-history/activity-history-item/list/UI/timeline/activity-history-timeline.ts +1 -4
- package/src/internal-plugins/activity-history/activity-history-item/list/UI/timeline/template.ts +5 -2
- package/src/internal-plugins/activity-history/activity-history-item/list/bootstrapper.ts +4 -1
- package/src/internal-plugins/activity-history/activity-history-item/list/group-history-items/group-history-items.test.ts +71 -215
- package/src/internal-plugins/activity-history/activity-history-item/list/group-history-items/group-history-items.ts +24 -1
- package/src/internal-plugins/activity-history/activity-history-item/selectors.ts +6 -0
- package/src/internal-plugins/activity-history/activity-history-item/slice.ts +2 -8
- package/src/internal-plugins/activity-history/activity-history-item/update/handler.ts +2 -2
- package/src/internal-plugins/activity-history/localization.ts +16 -0
- package/src/internal-plugins/activity-history/utils/get-unique-values-by-prop-path.test.ts +55 -30
- package/src/internal-plugins/activity-history/utils/get-unique-values-by-prop-path.ts +30 -10
- package/dist/primary/shell/src/internal-plugins/activity-history/activity-history-item/domain/is-valid-history-item/is-valid-history-item.d.ts +0 -5
- package/dist/primary/shell/src/internal-plugins/activity-history/activity-history-item/list/handle-error/actions.d.ts +0 -4
- /package/dist/primary/shell/src/internal-plugins/activity-history/activity-history-item/{list → add}/handle-busy/actions.d.ts +0 -0
- /package/dist/primary/shell/src/internal-plugins/activity-history/activity-history-item/{list → add}/handle-busy/bootstrapper.d.ts +0 -0
- /package/dist/primary/shell/src/internal-plugins/activity-history/activity-history-item/{list → add}/handle-busy/busy-component/component.d.ts +0 -0
- /package/dist/primary/shell/src/internal-plugins/activity-history/activity-history-item/{list → add}/handle-busy/busy-component/template.d.ts +0 -0
- /package/dist/primary/shell/src/internal-plugins/activity-history/activity-history-item/{list → add}/handle-busy/reducers.d.ts +0 -0
- /package/dist/primary/shell/src/internal-plugins/activity-history/activity-history-item/{list → add}/handle-busy/selectors.d.ts +0 -0
- /package/dist/primary/shell/src/internal-plugins/activity-history/activity-history-item/domain/{is-valid-history-item/is-valid-history-item.test.d.ts → specs/diagnostics-filter-spec.test.d.ts} +0 -0
- /package/src/internal-plugins/activity-history/activity-history-item/{list → add}/handle-busy/actions.ts +0 -0
- /package/src/internal-plugins/activity-history/activity-history-item/{list → add}/handle-busy/bootstrapper.ts +0 -0
- /package/src/internal-plugins/activity-history/activity-history-item/{list → add}/handle-busy/busy-component/component.ts +0 -0
- /package/src/internal-plugins/activity-history/activity-history-item/{list → add}/handle-busy/busy-component/styles.css +0 -0
- /package/src/internal-plugins/activity-history/activity-history-item/{list → add}/handle-busy/busy-component/template.ts +0 -0
- /package/src/internal-plugins/activity-history/activity-history-item/{list → add}/handle-busy/reducers.ts +0 -0
- /package/src/internal-plugins/activity-history/activity-history-item/{list → add}/handle-busy/selectors.ts +0 -0
- /package/src/internal-plugins/activity-history/activity-history-item/{list → add}/handle-error/actions.ts +0 -0
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { IActivityHistoryItem } from "../model";
|
|
2
|
+
import { Spec } from "./spec";
|
|
3
|
+
|
|
4
|
+
export class DiagnosticCodeSpec extends Spec<IActivityHistoryItem> {
|
|
5
|
+
constructor(private diagnosticCodes: string[]) {
|
|
6
|
+
super();
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
isSatisfiedBy(item: IActivityHistoryItem): boolean {
|
|
10
|
+
if (!this.diagnosticCodes?.length) {
|
|
11
|
+
return true; // No se filtra si no se proporcionan códigos
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
const itemDiagnostics = item.diagnostics ?? [];
|
|
15
|
+
|
|
16
|
+
return itemDiagnostics.some((d) => this.diagnosticCodes.includes(d.codi));
|
|
17
|
+
}
|
|
18
|
+
}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { describe, it, expect } from "vitest";
|
|
2
|
+
import { isValidBasicActivityHistoryItem } from "./is-valid-basic-history-item";
|
|
3
|
+
|
|
4
|
+
describe("isValidBasicActivityHistoryItem", () => {
|
|
5
|
+
it("should return true for a valid ActivityHistoryItem object", () => {
|
|
6
|
+
const validItem = {
|
|
7
|
+
id: "123",
|
|
8
|
+
date: "2023-10-07T10:32:00.000Z", // formato válido ISO
|
|
9
|
+
professional: {
|
|
10
|
+
id: "prof-1",
|
|
11
|
+
name: "Dr. John Doe",
|
|
12
|
+
speciality: { id: "spec-1", description: "Cardiology" },
|
|
13
|
+
role: { id: "role-1", description: "Lead Doctor" },
|
|
14
|
+
},
|
|
15
|
+
relevant: true,
|
|
16
|
+
diagnostics: [{ codi: "diag-1", cataleg: "001", descripcio: "High Blood Pressure" }],
|
|
17
|
+
center: { id: "center-1", description: "Main Hospital" },
|
|
18
|
+
up: { id: "up-1", description: "Unit A" },
|
|
19
|
+
ep: { id: "ep-1", description: "Emergency Room" },
|
|
20
|
+
service: { id: "service-1", description: "Cardiac Service" },
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
expect(isValidBasicActivityHistoryItem(validItem)).toBe(true);
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
it('should return false if "id" is missing', () => {
|
|
27
|
+
const invalidItem = {
|
|
28
|
+
date: "2023-10-07T10:32:00.000Z",
|
|
29
|
+
// same as above
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
expect(isValidBasicActivityHistoryItem(invalidItem as any)).toBe(false);
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
it('should return false if "date" is missing', () => {
|
|
36
|
+
const invalidItem = {
|
|
37
|
+
id: "123",
|
|
38
|
+
// same as above
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
expect(isValidBasicActivityHistoryItem(invalidItem as any)).toBe(false);
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
it('should return false if "date" is an invalid string', () => {
|
|
45
|
+
const invalidItem = {
|
|
46
|
+
id: "123",
|
|
47
|
+
date: "not-a-date",
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
expect(isValidBasicActivityHistoryItem(invalidItem as any)).toBe(false);
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
it('should return false if "date" is an empty string', () => {
|
|
54
|
+
const invalidItem = {
|
|
55
|
+
id: "123",
|
|
56
|
+
date: "",
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
expect(isValidBasicActivityHistoryItem(invalidItem as any)).toBe(false);
|
|
60
|
+
});
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
});
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { IActivityHistoryItem } from "../model";
|
|
2
|
+
|
|
3
|
+
export const isValidBasicActivityHistoryItem = (obj: IActivityHistoryItem) => {
|
|
4
|
+
// Función auxiliar para comprobar si una propiedad existe y es del tipo string válido
|
|
5
|
+
const isString = (value: any) => typeof value === "string" && value.trim() !== "";
|
|
6
|
+
|
|
7
|
+
// Función para comprobar si un string representa una fecha válida
|
|
8
|
+
const isValidDateString = (value: any) => {
|
|
9
|
+
if (typeof value !== "string" || value.trim() === "") return false;
|
|
10
|
+
|
|
11
|
+
const date = new Date(value);
|
|
12
|
+
return date instanceof Date && !Number.isNaN(date.getTime());
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
// Comprobación del objeto principal
|
|
16
|
+
return (
|
|
17
|
+
obj &&
|
|
18
|
+
isString(obj.id) && // Verifica que "id" esté informado
|
|
19
|
+
isValidDateString(obj.date) // Verifica que "date" sea un string de fecha válido
|
|
20
|
+
);
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
export const ensureAreValidBasicActivityHistoryItems = (items: IActivityHistoryItem[]) => {
|
|
24
|
+
const areValid = items.every(isValidBasicActivityHistoryItem);
|
|
25
|
+
if (!areValid) {
|
|
26
|
+
console.error("Invalid activity history items", items);
|
|
27
|
+
throw new Error("Invalid activity history items");
|
|
28
|
+
}
|
|
29
|
+
return items;
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
const notifyInvalidItem = (item: IActivityHistoryItem) => {
|
|
33
|
+
console.error("Invalid history item", item);
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
export const validateAndFilterBasicItems = (items: IActivityHistoryItem[]) => {
|
|
37
|
+
const validItems = [] as IActivityHistoryItem[];
|
|
38
|
+
for (const item of items) {
|
|
39
|
+
if (isValidBasicActivityHistoryItem(item)) validItems.push(item);
|
|
40
|
+
else notifyInvalidItem(item);
|
|
41
|
+
}
|
|
42
|
+
return validItems;
|
|
43
|
+
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { describe, it, expect } from "vitest";
|
|
2
|
-
import {
|
|
2
|
+
import { isValidFullActivityHistoryItem } from "./is-valid-full-history-item";
|
|
3
3
|
|
|
4
|
-
describe("
|
|
4
|
+
describe("isValidFullActivityHistoryItem", () => {
|
|
5
5
|
it("should return true for a valid ActivityHistoryItem object", () => {
|
|
6
6
|
const validItem = {
|
|
7
7
|
id: "123",
|
|
@@ -20,7 +20,7 @@ describe("isValidActivityHistoryItem", () => {
|
|
|
20
20
|
service: { id: "service-1", description: "Cardiac Service" },
|
|
21
21
|
};
|
|
22
22
|
|
|
23
|
-
expect(
|
|
23
|
+
expect(isValidFullActivityHistoryItem(validItem)).toBe(true);
|
|
24
24
|
});
|
|
25
25
|
|
|
26
26
|
it('should return false if "id" is missing', () => {
|
|
@@ -40,7 +40,7 @@ describe("isValidActivityHistoryItem", () => {
|
|
|
40
40
|
service: { id: "service-1", description: "Cardiac Service" },
|
|
41
41
|
};
|
|
42
42
|
|
|
43
|
-
expect(
|
|
43
|
+
expect(isValidFullActivityHistoryItem(invalidItem)).toBe(false);
|
|
44
44
|
});
|
|
45
45
|
|
|
46
46
|
it('should return false if "date" is missing', () => {
|
|
@@ -60,7 +60,7 @@ describe("isValidActivityHistoryItem", () => {
|
|
|
60
60
|
service: { id: "service-1", description: "Cardiac Service" },
|
|
61
61
|
};
|
|
62
62
|
|
|
63
|
-
expect(
|
|
63
|
+
expect(isValidFullActivityHistoryItem(invalidItem)).toBe(false);
|
|
64
64
|
});
|
|
65
65
|
|
|
66
66
|
it('should return false if "professional" is invalid', () => {
|
|
@@ -81,7 +81,7 @@ describe("isValidActivityHistoryItem", () => {
|
|
|
81
81
|
service: { id: "service-1", description: "Cardiac Service" },
|
|
82
82
|
};
|
|
83
83
|
|
|
84
|
-
expect(
|
|
84
|
+
expect(isValidFullActivityHistoryItem(invalidItem)).toBe(false);
|
|
85
85
|
});
|
|
86
86
|
|
|
87
87
|
it('should return false if "diagnostics" is not an array', () => {
|
|
@@ -102,7 +102,7 @@ describe("isValidActivityHistoryItem", () => {
|
|
|
102
102
|
service: { id: "service-1", description: "Cardiac Service" },
|
|
103
103
|
};
|
|
104
104
|
|
|
105
|
-
expect(
|
|
105
|
+
expect(isValidFullActivityHistoryItem(invalidItem)).toBe(false);
|
|
106
106
|
});
|
|
107
107
|
|
|
108
108
|
it('should return true if "diagnostics" is null', () => {
|
|
@@ -123,7 +123,7 @@ describe("isValidActivityHistoryItem", () => {
|
|
|
123
123
|
service: { id: "service-1", description: "Cardiac Service" },
|
|
124
124
|
};
|
|
125
125
|
|
|
126
|
-
expect(
|
|
126
|
+
expect(isValidFullActivityHistoryItem(validItem)).toBe(true);
|
|
127
127
|
});
|
|
128
128
|
|
|
129
129
|
it('should return false if "diagnostics" are invalid', () => {
|
|
@@ -144,7 +144,7 @@ describe("isValidActivityHistoryItem", () => {
|
|
|
144
144
|
service: { id: "service-1", description: "Cardiac Service" },
|
|
145
145
|
};
|
|
146
146
|
|
|
147
|
-
expect(
|
|
147
|
+
expect(isValidFullActivityHistoryItem(invalidItem)).toBe(false);
|
|
148
148
|
});
|
|
149
149
|
|
|
150
150
|
it('should return false if "relevant" is not a boolean', () => {
|
|
@@ -165,7 +165,7 @@ describe("isValidActivityHistoryItem", () => {
|
|
|
165
165
|
service: { id: "service-1", description: "Cardiac Service" },
|
|
166
166
|
};
|
|
167
167
|
|
|
168
|
-
expect(
|
|
168
|
+
expect(isValidFullActivityHistoryItem(invalidItem)).toBe(false);
|
|
169
169
|
});
|
|
170
170
|
it("should return true if all base props are correct, but object contain more extra fields", () => {
|
|
171
171
|
const validItem = {
|
|
@@ -187,6 +187,6 @@ describe("isValidActivityHistoryItem", () => {
|
|
|
187
187
|
prop2: "value2",
|
|
188
188
|
};
|
|
189
189
|
|
|
190
|
-
expect(
|
|
190
|
+
expect(isValidFullActivityHistoryItem(validItem)).toBe(true);
|
|
191
191
|
});
|
|
192
192
|
});
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { IActivityHistoryItem } from "../model";
|
|
2
|
+
import { isValidBasicActivityHistoryItem } from "./is-valid-basic-history-item";
|
|
2
3
|
|
|
3
|
-
export const
|
|
4
|
+
export const isValidFullActivityHistoryItem = (obj: IActivityHistoryItem) => {
|
|
4
5
|
// Función auxiliar para comprobar si una propiedad existe y es del tipo esperado
|
|
5
6
|
const isString = (value) => typeof value === "string" && value.trim() !== "";
|
|
6
7
|
const isBoolean = (value) => typeof value === "boolean";
|
|
@@ -49,9 +50,7 @@ export const isValidActivityHistoryItem = (obj: IActivityHistoryItem) => {
|
|
|
49
50
|
|
|
50
51
|
// Comprobación del objeto principal
|
|
51
52
|
return (
|
|
52
|
-
obj &&
|
|
53
|
-
isString(obj.id) && // Verifica que "id" esté informado
|
|
54
|
-
isString(obj.date) && // Verifica que "date" esté informado
|
|
53
|
+
isValidBasicActivityHistoryItem(obj) &&
|
|
55
54
|
hasValidProfessional(obj.professional) &&
|
|
56
55
|
isBoolean(obj.relevant) &&
|
|
57
56
|
hasValidDiagnostics(obj.diagnostics) &&
|
|
@@ -62,8 +61,8 @@ export const isValidActivityHistoryItem = (obj: IActivityHistoryItem) => {
|
|
|
62
61
|
);
|
|
63
62
|
};
|
|
64
63
|
|
|
65
|
-
export const
|
|
66
|
-
const areValid = items.every(
|
|
64
|
+
export const ensureAreValidFullActivityHistoryItems = (items: IActivityHistoryItem[]) => {
|
|
65
|
+
const areValid = items.every(isValidFullActivityHistoryItem);
|
|
67
66
|
if (!areValid) {
|
|
68
67
|
console.error("Invalid activity history items", items);
|
|
69
68
|
throw new Error("Invalid activity history items");
|
|
@@ -75,10 +74,10 @@ const notifyInvalidItem = (item: IActivityHistoryItem) => {
|
|
|
75
74
|
console.error("Invalid history item", item);
|
|
76
75
|
};
|
|
77
76
|
|
|
78
|
-
export const
|
|
77
|
+
export const validateAndFilterFullItems = (items: IActivityHistoryItem[]) => {
|
|
79
78
|
const validItems = [] as IActivityHistoryItem[];
|
|
80
79
|
for (const item of items) {
|
|
81
|
-
if (
|
|
80
|
+
if (isValidFullActivityHistoryItem(item)) validItems.push(item);
|
|
82
81
|
else notifyInvalidItem(item);
|
|
83
82
|
}
|
|
84
83
|
return validItems;
|
|
@@ -8,9 +8,15 @@ import { template } from "./template";
|
|
|
8
8
|
import styles from "./styles.css?inline";
|
|
9
9
|
import { activeGroupsWithEnabledFilters } from "../../custom-filters/selectors";
|
|
10
10
|
import { SetCustomFilterValue } from "../../custom-filters/set-custom-filter-value/request";
|
|
11
|
-
import {
|
|
11
|
+
import {
|
|
12
|
+
IActivityHistoryCustomFilterGroup,
|
|
13
|
+
IActivityHistoryDiagnosticsFilter,
|
|
14
|
+
IActivityHistoryFilter,
|
|
15
|
+
} from "../../model";
|
|
12
16
|
import { activityHistoryEnabledCommonFiltersSelector } from "../../common-filters/selectors";
|
|
13
17
|
import { SetCommonFilter } from "../../common-filters/set-common-filter/request";
|
|
18
|
+
import { diagnosticFilterSelector } from "../../diagnostic-filters/selectors";
|
|
19
|
+
import { SetDiagnosticFiltersCommand } from "../../diagnostic-filters/set/request";
|
|
14
20
|
|
|
15
21
|
//@ts-ignore
|
|
16
22
|
@customElement("active-filters-badges")
|
|
@@ -29,11 +35,14 @@ export class ActiveFiltersBadges extends LitElement {
|
|
|
29
35
|
activityHistoryCommonFiltersSelector;
|
|
30
36
|
|
|
31
37
|
@connectedProperty(activityHistoryEnabledCommonFiltersSelector)
|
|
32
|
-
enabledCommonFilters:
|
|
38
|
+
enabledCommonFilters: IActivityHistoryFilter[];
|
|
33
39
|
|
|
34
40
|
@connectedProperty(activeGroupsWithEnabledFilters)
|
|
35
41
|
enabledFilters: IActivityHistoryCustomFilterGroup[];
|
|
36
42
|
|
|
43
|
+
@connectedProperty(diagnosticFilterSelector)
|
|
44
|
+
diagnosticFilterEnabled: IActivityHistoryDiagnosticsFilter;
|
|
45
|
+
|
|
37
46
|
_onDeleteFilterValue(filterGroupId: string, filterId: string, optionId: string, value: boolean) {
|
|
38
47
|
this.api.broker.send(
|
|
39
48
|
new SetCustomFilterValue({
|
|
@@ -48,4 +57,12 @@ export class ActiveFiltersBadges extends LitElement {
|
|
|
48
57
|
_onDeleteCommonFilterValue(filterId: string) {
|
|
49
58
|
this.api.broker.send(new SetCommonFilter({ id: filterId, enabled: false }));
|
|
50
59
|
}
|
|
60
|
+
|
|
61
|
+
_onDeleteDiagnosticFilterValue(diagnosticValue: string) {
|
|
62
|
+
this.api.broker.send(
|
|
63
|
+
new SetDiagnosticFiltersCommand([
|
|
64
|
+
...this.diagnosticFilterEnabled.enabledValues.filter((v) => v !== diagnosticValue),
|
|
65
|
+
]),
|
|
66
|
+
);
|
|
67
|
+
}
|
|
51
68
|
}
|
|
@@ -27,16 +27,64 @@ const renderCommonChip = (filter, props) => html`
|
|
|
27
27
|
></dss-chip>
|
|
28
28
|
`;
|
|
29
29
|
|
|
30
|
+
const renderDiagnosticChip = (id, value, props) => html`
|
|
31
|
+
<dss-chip
|
|
32
|
+
label=${value}
|
|
33
|
+
size="sm"
|
|
34
|
+
hasdelete
|
|
35
|
+
selected
|
|
36
|
+
@click=${() => props._onDeleteDiagnosticFilterValue(id)}
|
|
37
|
+
@onDelete=${() => props._onDeleteDiagnosticFilterValue(id)}
|
|
38
|
+
></dss-chip>
|
|
39
|
+
`;
|
|
40
|
+
|
|
30
41
|
const renderFilterTitle = (title) => html`<div class="filter-title">${`${title}:`}</div>`;
|
|
31
42
|
|
|
32
43
|
export const template = (props: ActiveFiltersBadges) => {
|
|
33
|
-
if (
|
|
44
|
+
if (
|
|
45
|
+
props.enabledFilters.length === 0 &&
|
|
46
|
+
props.enabledCommonFilters.length === 0 &&
|
|
47
|
+
props.diagnosticFilterEnabled.enabledValues.length === 0
|
|
48
|
+
)
|
|
49
|
+
return nothing;
|
|
34
50
|
|
|
35
51
|
let visibleCount = 0;
|
|
36
52
|
const visibleChips: any[] = [];
|
|
37
53
|
const hiddenElements: any[] = [];
|
|
38
54
|
const hiddenChips: any[] = [];
|
|
39
55
|
|
|
56
|
+
const diagnostic = props.diagnosticFilterEnabled;
|
|
57
|
+
|
|
58
|
+
if (diagnostic) {
|
|
59
|
+
const { title, values, enabledValues } = diagnostic;
|
|
60
|
+
const selectedOptions = values.filter((opt) => enabledValues.includes(opt.value));
|
|
61
|
+
|
|
62
|
+
if (selectedOptions.length > 0) {
|
|
63
|
+
let titleAddedToVisible = false;
|
|
64
|
+
let titleAddedToHidden = false;
|
|
65
|
+
|
|
66
|
+
for (const option of selectedOptions) {
|
|
67
|
+
const chip = renderDiagnosticChip(option.value, option.label, props);
|
|
68
|
+
|
|
69
|
+
if (visibleCount < MAX_VISIBLE_CHIPS) {
|
|
70
|
+
if (!titleAddedToVisible) {
|
|
71
|
+
visibleChips.push(renderFilterTitle(title));
|
|
72
|
+
titleAddedToVisible = true;
|
|
73
|
+
}
|
|
74
|
+
visibleChips.push(chip);
|
|
75
|
+
visibleCount++;
|
|
76
|
+
} else {
|
|
77
|
+
if (!titleAddedToHidden) {
|
|
78
|
+
hiddenElements.push(renderFilterTitle(title));
|
|
79
|
+
titleAddedToHidden = true;
|
|
80
|
+
}
|
|
81
|
+
hiddenElements.push(chip);
|
|
82
|
+
hiddenChips.push(chip);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
|
|
40
88
|
for (const filter of props.enabledCommonFilters) {
|
|
41
89
|
const chip = renderCommonChip(filter, props);
|
|
42
90
|
|
|
@@ -6,6 +6,7 @@ import { connectedProperty } from "../../../../infrastructure/state/connected-pr
|
|
|
6
6
|
import { activityHistorySearchStringSelector } from "../../../search/selectors";
|
|
7
7
|
import { areCustomFiltersActive } from "../../custom-filters/selectors";
|
|
8
8
|
import { areCommonFiltersActive } from "../../common-filters/selectors";
|
|
9
|
+
import { areDiagnosticFiltersActive } from "../../diagnostic-filters/selectors";
|
|
9
10
|
|
|
10
11
|
//@ts-ignore
|
|
11
12
|
@customElement("active-filters-header")
|
|
@@ -26,4 +27,7 @@ export class ActiveFiltersHeader extends LitElement {
|
|
|
26
27
|
|
|
27
28
|
@connectedProperty(areCommonFiltersActive)
|
|
28
29
|
areCommonFiltersActive: boolean;
|
|
30
|
+
|
|
31
|
+
@connectedProperty(areDiagnosticFiltersActive)
|
|
32
|
+
areDiagnosticFiltersActive: boolean;
|
|
29
33
|
}
|
|
@@ -4,7 +4,11 @@ import { PrimariaApi } from "../../../../../../api/api";
|
|
|
4
4
|
import { lazyInject } from "../../../../infrastructure/ioc/container";
|
|
5
5
|
import { TYPES } from "../../../../infrastructure/ioc/types";
|
|
6
6
|
import { connectedProperty } from "../../../../infrastructure/state/connected-property";
|
|
7
|
-
import {
|
|
7
|
+
import {
|
|
8
|
+
IActivityHistoryCommonFilter,
|
|
9
|
+
IActivityHistoryCustomFilterGroup,
|
|
10
|
+
IActivityHistoryDiagnosticsFilter,
|
|
11
|
+
} from "../../model";
|
|
8
12
|
import styles from "./styles.css?inline";
|
|
9
13
|
import { template } from "./template";
|
|
10
14
|
import { SetCustomFilterGroup } from "../../custom-filters/set-custom-filter-group/request";
|
|
@@ -12,6 +16,11 @@ import { SetCommonFilter } from "../../common-filters/set-common-filter/request"
|
|
|
12
16
|
import { activityHistoryCommonFiltersSelector } from "../../common-filters/selectors";
|
|
13
17
|
import { SetCustomFilterValue } from "../../custom-filters/set-custom-filter-value/request";
|
|
14
18
|
import { customFilterGroupsWithOptionsSelector } from "../../../selectors";
|
|
19
|
+
import {
|
|
20
|
+
diagnosticFilterEnabledValuesSelector,
|
|
21
|
+
diagnosticFilterSelector,
|
|
22
|
+
} from "../../diagnostic-filters/selectors";
|
|
23
|
+
import { SetDiagnosticFiltersCommand } from "../../diagnostic-filters/set/request";
|
|
15
24
|
|
|
16
25
|
//@ts-ignore
|
|
17
26
|
@customElement("activity-history-filters")
|
|
@@ -30,6 +39,12 @@ export class ActivityHistoryFilters extends LitElement {
|
|
|
30
39
|
@connectedProperty(customFilterGroupsWithOptionsSelector)
|
|
31
40
|
customFilterGroups: IActivityHistoryCustomFilterGroup[];
|
|
32
41
|
|
|
42
|
+
@connectedProperty(diagnosticFilterSelector)
|
|
43
|
+
diagnosticFilter: IActivityHistoryDiagnosticsFilter;
|
|
44
|
+
|
|
45
|
+
@connectedProperty(diagnosticFilterEnabledValuesSelector)
|
|
46
|
+
diagnosticFilterEnabledValues: string[];
|
|
47
|
+
|
|
33
48
|
@lazyInject(TYPES.primaryApi)
|
|
34
49
|
api: PrimariaApi;
|
|
35
50
|
|
|
@@ -72,4 +87,9 @@ export class ActivityHistoryFilters extends LitElement {
|
|
|
72
87
|
}),
|
|
73
88
|
);
|
|
74
89
|
}
|
|
90
|
+
|
|
91
|
+
_handleDiagnosticFilterChange(e: CustomEvent) {
|
|
92
|
+
const selectedValues = e.detail.selectedValue;
|
|
93
|
+
this.api.broker.send(new SetDiagnosticFiltersCommand(selectedValues));
|
|
94
|
+
}
|
|
75
95
|
}
|
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
IActivityHistoryCommonFilter,
|
|
7
7
|
IActivityHistoryCustomFilter,
|
|
8
8
|
IActivityHistoryCustomFilterGroup,
|
|
9
|
-
|
|
9
|
+
IActivityHistoryFilter,
|
|
10
10
|
} from "../../model";
|
|
11
11
|
import { translate } from "../../../../localization";
|
|
12
12
|
|
|
@@ -27,7 +27,7 @@ const filterTemplates = {
|
|
|
27
27
|
const getFilterTemplate = (
|
|
28
28
|
filter: IActivityHistoryCommonFilter | IActivityHistoryCustomFilter,
|
|
29
29
|
onChangeValue: (...args: any[]) => void,
|
|
30
|
-
filterGroup?:
|
|
30
|
+
filterGroup?: IActivityHistoryFilter,
|
|
31
31
|
option?: { id: string; title: string },
|
|
32
32
|
) => {
|
|
33
33
|
const isCustom = !!filterGroup?.id && !!option;
|
|
@@ -62,6 +62,15 @@ export const template = (props: ActivityHistoryFilters) =>
|
|
|
62
62
|
? html`<div class="filters-sidebar-opened">${translate("filters.filters")}<dss-icon-button ?hidden=${props.wrapperMaximized} @click=${() => props._toggleFilters()} size="md" variant="primary" icon="keyboard_double_arrow_left"></dss-icon-button></div>
|
|
63
63
|
<div class="filter-container">
|
|
64
64
|
${repeat(props.commonFilters, (filter: IActivityHistoryCommonFilter) => html`<div class="filter">${getFilterTemplate(filter, props._onChangeCommonFilterValue.bind(props))}</div> `)}
|
|
65
|
+
${
|
|
66
|
+
props.diagnosticFilter &&
|
|
67
|
+
html`<div class="filter">
|
|
68
|
+
<dss-input-dropdown icon="" multiple dropdownFixed type="default" .elements=${props.diagnosticFilter?.values} @onInputDropdownChange=${props._handleDiagnosticFilterChange} .selectedValue=${props.diagnosticFilterEnabledValues}>
|
|
69
|
+
<label slot="label" for="diagnostic-filter">${props.diagnosticFilter.title}</label>
|
|
70
|
+
<input id="diagnostic-filter" slot="input" type="text" class="dss-input" autocomplete="off"/>
|
|
71
|
+
</dss-input-dropdown>
|
|
72
|
+
</div>`
|
|
73
|
+
}
|
|
65
74
|
${repeat(
|
|
66
75
|
props.customFilterGroups,
|
|
67
76
|
(group: IActivityHistoryCustomFilterGroup) => html`
|
|
@@ -16,12 +16,22 @@ import {
|
|
|
16
16
|
bootstrapSetCustomFilterValue,
|
|
17
17
|
teardownSetCustomFilterValue,
|
|
18
18
|
} from "./custom-filters/set-custom-filter-value/bootstrapper";
|
|
19
|
+
import {
|
|
20
|
+
bootstrapAddDiagnosticFilter,
|
|
21
|
+
teardownAddDiagnosticFilter,
|
|
22
|
+
} from "./diagnostic-filters/add/bootstrapper";
|
|
23
|
+
import {
|
|
24
|
+
bootstrapSetDiagnosticFilter,
|
|
25
|
+
teardownSetDiagnosticFilter,
|
|
26
|
+
} from "./diagnostic-filters/set/bootstrapper";
|
|
19
27
|
|
|
20
28
|
export const bootstrapFilters = (broker: BrokerExtensions) => {
|
|
21
29
|
bootstrapSetCommonFilter(broker);
|
|
22
30
|
bootstrapAddCustomFilter(broker);
|
|
23
31
|
bootstrapSetCustomFilterGroup(broker);
|
|
24
32
|
bootstrapSetCustomFilterValue(broker);
|
|
33
|
+
bootstrapAddDiagnosticFilter(broker);
|
|
34
|
+
bootstrapSetDiagnosticFilter(broker);
|
|
25
35
|
};
|
|
26
36
|
|
|
27
37
|
export const teardownFilters = () => {
|
|
@@ -29,4 +39,6 @@ export const teardownFilters = () => {
|
|
|
29
39
|
teardownAddCustomFilter();
|
|
30
40
|
teardownSetCustomFilterGroup();
|
|
31
41
|
teardownSetCustomFilterValue();
|
|
42
|
+
teardownAddDiagnosticFilter();
|
|
43
|
+
teardownSetDiagnosticFilter();
|
|
32
44
|
};
|
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
import { OwnSpec } from "../../domain/specs/own-spec";
|
|
2
2
|
import { RelevantSpec } from "../../domain/specs/relevant-spec";
|
|
3
|
-
import {
|
|
3
|
+
import {
|
|
4
|
+
IActivityHistoryCommonFilterGroup,
|
|
5
|
+
ActivityHistoryFilterType,
|
|
6
|
+
relevantFilterId,
|
|
7
|
+
ownFilterId,
|
|
8
|
+
} from "../model";
|
|
4
9
|
|
|
5
10
|
export const commonFilters: IActivityHistoryCommonFilterGroup[] = [
|
|
6
11
|
{
|
|
@@ -8,14 +13,14 @@ export const commonFilters: IActivityHistoryCommonFilterGroup[] = [
|
|
|
8
13
|
title: "Comuns",
|
|
9
14
|
filters: [
|
|
10
15
|
{
|
|
11
|
-
id:
|
|
16
|
+
id: relevantFilterId,
|
|
12
17
|
title: "Veure rellevants",
|
|
13
18
|
spec: RelevantSpec,
|
|
14
19
|
enabled: false,
|
|
15
20
|
type: ActivityHistoryFilterType.Switch,
|
|
16
21
|
},
|
|
17
22
|
{
|
|
18
|
-
id:
|
|
23
|
+
id: ownFilterId,
|
|
19
24
|
title: "Veure meus",
|
|
20
25
|
spec: OwnSpec,
|
|
21
26
|
enabled: false,
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { PayloadAction } from "@reduxjs/toolkit";
|
|
2
|
-
import {
|
|
2
|
+
import { IActivityHistoryCustomFilterGroup } from "../../model";
|
|
3
3
|
|
|
4
4
|
export function addCustomFiltersReducer(
|
|
5
5
|
state,
|
|
6
|
-
action: PayloadAction<
|
|
6
|
+
action: PayloadAction<IActivityHistoryCustomFilterGroup>,
|
|
7
7
|
) {
|
|
8
8
|
state.filters = [...state.filters, action.payload];
|
|
9
9
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { IActivityHistoryCustomFilterGroup } from "../../model";
|
|
2
2
|
|
|
3
3
|
export class AddCustomFiltersCommand {
|
|
4
|
-
constructor(public payload:
|
|
4
|
+
constructor(public payload: IActivityHistoryCustomFilterGroup) {}
|
|
5
5
|
}
|
|
@@ -1,16 +1,15 @@
|
|
|
1
1
|
import { createSelector } from "@reduxjs/toolkit";
|
|
2
2
|
import {
|
|
3
|
-
IActivityHistoryCustomFilter,
|
|
4
3
|
IActivityHistoryCustomFilterGroup,
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
IActivityHistoryFilter,
|
|
5
|
+
isCustomFilter,
|
|
7
6
|
} from "../model";
|
|
8
7
|
import { activityHistoryFiltersSelector } from "../selectors";
|
|
9
8
|
|
|
10
9
|
export const activityHistoryCustomFilterGroupsSelector = createSelector(
|
|
11
10
|
activityHistoryFiltersSelector,
|
|
12
|
-
(filters:
|
|
13
|
-
const customFilters = filters.filter(
|
|
11
|
+
(filters: IActivityHistoryFilter[]) => {
|
|
12
|
+
const customFilters = filters.filter(isCustomFilter);
|
|
14
13
|
return customFilters.sort(sortBySortProperty);
|
|
15
14
|
},
|
|
16
15
|
);
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { BrokerExtensions } from "@primaria/plugins-core";
|
|
2
|
+
import { BrokerDisposableHandler } from "../../../../../../api/broker/primaria-broker";
|
|
3
|
+
import { AddDiagnosticFiltersHandler } from "./handler";
|
|
4
|
+
import { AddDiagnosticFiltersCommand } from "./request";
|
|
5
|
+
|
|
6
|
+
let request: BrokerDisposableHandler;
|
|
7
|
+
|
|
8
|
+
export const bootstrapAddDiagnosticFilter = (broker: BrokerExtensions) => {
|
|
9
|
+
request = broker.registerRequest(AddDiagnosticFiltersCommand, AddDiagnosticFiltersHandler);
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
export const teardownAddDiagnosticFilter = () => {
|
|
13
|
+
request?.dispose();
|
|
14
|
+
};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { StoreBaseHandler } from "../../../../infrastructure/base-handlers";
|
|
2
|
+
import { addDiagnosticFilters } from "./actions";
|
|
3
|
+
import { AddDiagnosticFiltersCommand } from "./request";
|
|
4
|
+
|
|
5
|
+
export class AddDiagnosticFiltersHandler extends StoreBaseHandler {
|
|
6
|
+
async handle(request: AddDiagnosticFiltersCommand) {
|
|
7
|
+
try {
|
|
8
|
+
//TODO ensure are valid filters
|
|
9
|
+
this.store.dispatch(addDiagnosticFilters(request.payload));
|
|
10
|
+
} catch (e) {
|
|
11
|
+
console.log(e.message);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
}
|