@uxland/primary-shell 5.3.6 → 5.3.8
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 +3306 -3479
- package/dist/index.js.map +1 -1
- package/dist/index.umd.cjs +143 -94
- 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/specs/diagnostics-filter-spec.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/list/merge-history-items-and-subgroups/merge-history-items-and-subgroups.d.ts +12 -0
- package/dist/primary/shell/src/internal-plugins/activity-history/activity-history-item/list/merge-history-items-and-subgroups/merge-history-items-and-subgroups.test.d.ts +1 -0
- 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/package.json +1 -2
- package/src/UI/images/feedback-error.svg +9 -0
- package/src/UI/internal-views/upper-nav-views.ts +90 -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 +2 -0
- package/src/internal-plugins/activity-history/activity-history-item/add/add-history-items/handler.ts +2 -0
- 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/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/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 +30 -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 +42 -21
- package/src/internal-plugins/activity-history/activity-history-item/list/bootstrapper.ts +4 -1
- package/src/internal-plugins/activity-history/activity-history-item/list/merge-history-items-and-subgroups/merge-history-items-and-subgroups.test.ts +93 -0
- package/src/internal-plugins/activity-history/activity-history-item/list/merge-history-items-and-subgroups/merge-history-items-and-subgroups.ts +34 -0
- package/src/internal-plugins/activity-history/activity-history-item/list/sort-history-items-by-date/sort-history-items-by-date.ts +31 -26
- package/src/internal-plugins/activity-history/activity-history-item/selectors.ts +5 -0
- package/src/internal-plugins/activity-history/activity-history-item/slice.ts +2 -8
- package/src/internal-plugins/activity-history/localization.ts +16 -0
- 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/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,11 @@
|
|
|
1
|
+
import { PayloadAction } from "@reduxjs/toolkit";
|
|
2
|
+
import { IActivityHistoryDiagnosticsFilter, isDiagnosticFilter } from "../../model";
|
|
3
|
+
|
|
4
|
+
export function setDiagnosticFilterValuesReducer(state, action: PayloadAction<string[]>) {
|
|
5
|
+
state.filters = [...state.filters].map((f) => {
|
|
6
|
+
if (isDiagnosticFilter(f)) {
|
|
7
|
+
return { ...f, enabledValues: action.payload } as IActivityHistoryDiagnosticsFilter;
|
|
8
|
+
}
|
|
9
|
+
return f;
|
|
10
|
+
});
|
|
11
|
+
}
|
|
@@ -35,9 +35,10 @@ export interface IActivityHistoryCustomFilterGroup {
|
|
|
35
35
|
filters: IActivityHistoryCustomFilter[];
|
|
36
36
|
}
|
|
37
37
|
|
|
38
|
-
export type
|
|
38
|
+
export type IActivityHistoryFilter =
|
|
39
39
|
| IActivityHistoryCommonFilterGroup
|
|
40
|
-
| IActivityHistoryCustomFilterGroup
|
|
40
|
+
| IActivityHistoryCustomFilterGroup
|
|
41
|
+
| IActivityHistoryDiagnosticsFilter;
|
|
41
42
|
|
|
42
43
|
export interface IActivityHistoryCustomFilter {
|
|
43
44
|
id: string;
|
|
@@ -54,6 +55,22 @@ export interface IActivityHistoryCustomFilter {
|
|
|
54
55
|
enabledValues?: string[];
|
|
55
56
|
}
|
|
56
57
|
|
|
57
|
-
export const isCommonFilterGroup = (group:
|
|
58
|
-
export const isNotCommonFilterGroup = (group:
|
|
58
|
+
export const isCommonFilterGroup = (group: IActivityHistoryFilter) => group.id === "common";
|
|
59
|
+
export const isNotCommonFilterGroup = (group: IActivityHistoryFilter) =>
|
|
59
60
|
!isCommonFilterGroup(group);
|
|
61
|
+
export const isDiagnosticFilter = (filter: IActivityHistoryFilter) =>
|
|
62
|
+
filter.id === diagnosticsfilterId;
|
|
63
|
+
export const isNotDiagnosticFilter = (filter: IActivityHistoryFilter) =>
|
|
64
|
+
!isDiagnosticFilter(filter);
|
|
65
|
+
export const isCustomFilter = (filter: IActivityHistoryFilter) =>
|
|
66
|
+
!isCommonFilterGroup(filter) && !isDiagnosticFilter(filter);
|
|
67
|
+
export interface IActivityHistoryDiagnosticsFilter {
|
|
68
|
+
id: string;
|
|
69
|
+
title: string;
|
|
70
|
+
values: { label: string; value: string }[];
|
|
71
|
+
enabledValues: string[];
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
export const diagnosticsfilterId = "history-diagnostics";
|
|
75
|
+
export const relevantFilterId = "history-relevant";
|
|
76
|
+
export const ownFilterId = "history-own";
|
|
@@ -5,13 +5,15 @@ import { setCommonFilterValueReducer } from "./common-filters/set-common-filter/
|
|
|
5
5
|
import { addCustomFiltersReducer } from "./custom-filters/add-custom-filters/reducer";
|
|
6
6
|
import { setCustomFilterGroupValueReducer } from "./custom-filters/set-custom-filter-group/reducer";
|
|
7
7
|
import { setCustomFilterValueReducer } from "./custom-filters/set-custom-filter-value/reducer";
|
|
8
|
-
import {
|
|
8
|
+
import { IActivityHistoryFilter } from "./model";
|
|
9
|
+
import { addDiagnosticFiltersReducer } from "./diagnostic-filters/add/reducer";
|
|
10
|
+
import { setDiagnosticFilterValuesReducer } from "./diagnostic-filters/set/reducer";
|
|
9
11
|
|
|
10
12
|
export const activityHistoryFiltersSlice = createSlice({
|
|
11
13
|
name: "activity-history-filters",
|
|
12
14
|
initialState: {
|
|
13
15
|
searchString: "",
|
|
14
|
-
filters: [...commonFilters] as
|
|
16
|
+
filters: [...commonFilters] as IActivityHistoryFilter[],
|
|
15
17
|
},
|
|
16
18
|
reducers: {
|
|
17
19
|
setSearchString: setSearchStringReducer,
|
|
@@ -19,5 +21,7 @@ export const activityHistoryFiltersSlice = createSlice({
|
|
|
19
21
|
addCustomFilters: addCustomFiltersReducer,
|
|
20
22
|
setCustomFilterGroupValue: setCustomFilterGroupValueReducer,
|
|
21
23
|
setCustomFilterValue: setCustomFilterValueReducer,
|
|
24
|
+
addDiagnosticFilters: addDiagnosticFiltersReducer,
|
|
25
|
+
setDiagnosticFilterValues: setDiagnosticFilterValuesReducer,
|
|
22
26
|
},
|
|
23
27
|
});
|
|
@@ -3,14 +3,11 @@ import { customElement } from "lit/decorators.js";
|
|
|
3
3
|
import { connectedProperty } from "../../../../infrastructure/state/connected-property";
|
|
4
4
|
import { IActivityHistoryGroup } from "../../../domain/model";
|
|
5
5
|
import { activityHistorySearchStringSelector } from "../../../search/selectors";
|
|
6
|
-
import {
|
|
7
|
-
isAnyCollectionLoadingWithoutAnyLoaded,
|
|
8
|
-
isSomeCollectionLoadedAndOtherLoading,
|
|
9
|
-
} from "../../handle-busy/selectors";
|
|
10
6
|
import { activityHistoryGroupedItems } from "../../../selectors";
|
|
11
7
|
import styles from "./styles.css?inline";
|
|
12
8
|
import { template } from "./template";
|
|
13
9
|
import { unsafeHTML } from "lit/directives/unsafe-html.js";
|
|
10
|
+
import { isAnyCollectionLoadingWithoutAnyLoaded, isSomeCollectionLoadedAndOtherLoading } from "../../../add/handle-busy/selectors";
|
|
14
11
|
|
|
15
12
|
const createZIndexStyles = (max: number) => {
|
|
16
13
|
let styles = "";
|
package/src/internal-plugins/activity-history/activity-history-item/list/UI/timeline/template.ts
CHANGED
|
@@ -14,6 +14,10 @@ import {
|
|
|
14
14
|
import { translate } from "../../../../localization";
|
|
15
15
|
import { virtualize } from "@lit-labs/virtualizer/virtualize.js";
|
|
16
16
|
import { hasItemDivider, shouldShowRole } from "../../../domain/business-rules";
|
|
17
|
+
import {
|
|
18
|
+
ActivityHistoryEntry,
|
|
19
|
+
mergeHistoryItemsAndSubgroups,
|
|
20
|
+
} from "../../merge-history-items-and-subgroups/merge-history-items-and-subgroups";
|
|
17
21
|
|
|
18
22
|
export const template = (props: ActivityHistoryTimeline) => {
|
|
19
23
|
if (!props._hasUpdatedOnce) {
|
|
@@ -21,6 +25,8 @@ export const template = (props: ActivityHistoryTimeline) => {
|
|
|
21
25
|
}
|
|
22
26
|
return html`
|
|
23
27
|
<div class="container">
|
|
28
|
+
<activity-history-full-data-error></activity-history-full-data-error>
|
|
29
|
+
<activity-history-partial-data-error></activity-history-partial-data-error>
|
|
24
30
|
${
|
|
25
31
|
props.historyGroups?.length > 0
|
|
26
32
|
? html`
|
|
@@ -32,26 +38,41 @@ export const template = (props: ActivityHistoryTimeline) => {
|
|
|
32
38
|
${visitHeaderTemplate(props, itemGroup.items[0] || itemGroup.subGroups[0]?.items[0])}
|
|
33
39
|
<div class="visit__items">
|
|
34
40
|
${repeat(
|
|
35
|
-
itemGroup
|
|
36
|
-
(
|
|
37
|
-
(
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
41
|
+
mergeHistoryItemsAndSubgroups(itemGroup),
|
|
42
|
+
(entry) => (entry.type === "item" ? entry.item.id : entry.subGroup.id),
|
|
43
|
+
(entry: ActivityHistoryEntry) => {
|
|
44
|
+
if (entry.type === "item") {
|
|
45
|
+
const item = entry.item;
|
|
46
|
+
return html`
|
|
47
|
+
<div
|
|
48
|
+
class="item"
|
|
49
|
+
?has-divider=${hasItemDivider(item, itemGroup.items as IActivityHistoryItemWithComponent[])}
|
|
50
|
+
>
|
|
51
|
+
${item.component}
|
|
52
|
+
</div>
|
|
53
|
+
`;
|
|
54
|
+
}
|
|
55
|
+
const subGroup = entry.subGroup;
|
|
56
|
+
return html`
|
|
57
|
+
<div class="diagnostics">
|
|
58
|
+
${diagnosticHeaderTemplate(subGroup.items[0])}
|
|
59
|
+
<div class="diagnostics__items">
|
|
60
|
+
${repeat(
|
|
61
|
+
subGroup.items,
|
|
62
|
+
(item) => item.id,
|
|
63
|
+
(item: IActivityHistoryItemWithComponent) => html`
|
|
64
|
+
<div
|
|
65
|
+
class="item"
|
|
66
|
+
?has-divider=${hasItemDivider(item, subGroup.items as IActivityHistoryItemWithComponent[])}
|
|
67
|
+
>
|
|
68
|
+
${item.component}
|
|
69
|
+
</div>
|
|
70
|
+
`,
|
|
71
|
+
)}
|
|
72
|
+
</div>
|
|
73
|
+
</div>
|
|
74
|
+
`;
|
|
75
|
+
},
|
|
55
76
|
)}
|
|
56
77
|
</div>
|
|
57
78
|
</div>
|
|
@@ -96,7 +117,7 @@ const renderProfessionalValues = (props: ActivityHistoryTimeline, item: IActivit
|
|
|
96
117
|
const professionalItems = [
|
|
97
118
|
props.highlighted(item.professional.name),
|
|
98
119
|
showRole ? props.highlighted(item.professional.role.description) : null,
|
|
99
|
-
props.highlighted(item.
|
|
120
|
+
props.highlighted(item.up.description),
|
|
100
121
|
props.highlighted(item.professional.speciality.description),
|
|
101
122
|
props.highlighted(item.service.description),
|
|
102
123
|
].filter(Boolean);
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import "./UI/timeline/activity-history-timeline";
|
|
2
2
|
import "../filter/UI/active-filters-header/active-filters-header";
|
|
3
|
+
import "../add/handle-error/history-full-data-error/component";
|
|
4
|
+
import "../add/handle-error/history-partial-data-error/component";
|
|
5
|
+
|
|
3
6
|
|
|
4
7
|
export const bootstrapListActivityHistoryItems = () => {
|
|
5
8
|
() => null;
|
|
6
|
-
}
|
|
9
|
+
}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { describe, it, expect } from "vitest";
|
|
2
|
+
import { mergeHistoryItemsAndSubgroups } from "./merge-history-items-and-subgroups";
|
|
3
|
+
import {
|
|
4
|
+
IActivityHistoryGroup,
|
|
5
|
+
IActivityHistoryItemWithComponent,
|
|
6
|
+
IActivityHistorySubGroup,
|
|
7
|
+
} from "../../domain/model";
|
|
8
|
+
|
|
9
|
+
type RenderEntry =
|
|
10
|
+
| { type: "item"; date: Date; item: IActivityHistoryItemWithComponent }
|
|
11
|
+
| { type: "subGroup"; date: Date; subGroup: IActivityHistorySubGroup };
|
|
12
|
+
|
|
13
|
+
describe("mergeHistoryItemsAndSubgroups", () => {
|
|
14
|
+
it("should sort only items by date descending", () => {
|
|
15
|
+
const group: IActivityHistoryGroup = {
|
|
16
|
+
id: "g1",
|
|
17
|
+
items: [
|
|
18
|
+
{ id: "i1", date: "2025-05-05T10:00:00Z", component: "<div/>" },
|
|
19
|
+
{ id: "i2", date: "2025-05-05T12:00:00Z", component: "<div/>" },
|
|
20
|
+
{ id: "i3", date: "2025-05-05T08:00:00Z", component: "<div/>" },
|
|
21
|
+
],
|
|
22
|
+
subGroups: [],
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
const result = mergeHistoryItemsAndSubgroups(group) as RenderEntry[];
|
|
26
|
+
const ids = result.map((e) => (e.type === "item" ? e.item.id : e.subGroup.id));
|
|
27
|
+
|
|
28
|
+
expect(ids).toEqual(["i2", "i1", "i3"]);
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
it("should sort only subGroups by their most recent item", () => {
|
|
32
|
+
const subGroupA: IActivityHistorySubGroup = {
|
|
33
|
+
id: "sgA",
|
|
34
|
+
items: [{ id: "a1", date: "2025-05-05T09:00:00Z", component: "<div/>" }],
|
|
35
|
+
};
|
|
36
|
+
const subGroupB: IActivityHistorySubGroup = {
|
|
37
|
+
id: "sgB",
|
|
38
|
+
items: [
|
|
39
|
+
{ id: "b1", date: "2025-05-05T15:00:00Z", component: "<div/>" },
|
|
40
|
+
{ id: "b2", date: "2025-05-05T14:00:00Z", component: "<div/>" },
|
|
41
|
+
],
|
|
42
|
+
};
|
|
43
|
+
const group: IActivityHistoryGroup = {
|
|
44
|
+
id: "g2",
|
|
45
|
+
items: [],
|
|
46
|
+
subGroups: [subGroupA, subGroupB],
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
const result = mergeHistoryItemsAndSubgroups(group) as RenderEntry[];
|
|
50
|
+
const ids = result.map((e) => (e.type === "item" ? e.item.id : e.subGroup.id));
|
|
51
|
+
|
|
52
|
+
expect(ids).toEqual(["sgB", "sgA"]);
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
it("should interleave items and subGroups by date", () => {
|
|
56
|
+
const group: IActivityHistoryGroup = {
|
|
57
|
+
id: "g3",
|
|
58
|
+
items: [
|
|
59
|
+
{ id: "i1", date: "2025-05-05T10:00:00Z", component: "<div/>" },
|
|
60
|
+
{ id: "i2", date: "2025-05-05T14:00:00Z", component: "<div/>" },
|
|
61
|
+
],
|
|
62
|
+
subGroups: [
|
|
63
|
+
{
|
|
64
|
+
id: "sg1",
|
|
65
|
+
items: [{ id: "s1", date: "2025-05-05T12:00:00Z", component: "<div/>" }],
|
|
66
|
+
},
|
|
67
|
+
],
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
const result = mergeHistoryItemsAndSubgroups(group) as RenderEntry[];
|
|
71
|
+
const ids = result.map((e) => (e.type === "item" ? e.item.id : e.subGroup.id));
|
|
72
|
+
|
|
73
|
+
// Expected order: i2 (14:00), sg1 (12:00), i1 (10:00)
|
|
74
|
+
expect(ids).toEqual(["i2", "sg1", "i1"]);
|
|
75
|
+
});
|
|
76
|
+
|
|
77
|
+
it("should place subGroups without items at the end", () => {
|
|
78
|
+
const emptySubGroup: IActivityHistorySubGroup = {
|
|
79
|
+
id: "sgEmpty",
|
|
80
|
+
items: [],
|
|
81
|
+
};
|
|
82
|
+
const group: IActivityHistoryGroup = {
|
|
83
|
+
id: "g4",
|
|
84
|
+
items: [{ id: "i1", date: "2025-05-05T11:00:00Z", component: "<div/>" }],
|
|
85
|
+
subGroups: [emptySubGroup],
|
|
86
|
+
};
|
|
87
|
+
|
|
88
|
+
const result = mergeHistoryItemsAndSubgroups(group) as RenderEntry[];
|
|
89
|
+
const ids = result.map((e) => (e.type === "item" ? e.item.id : e.subGroup.id));
|
|
90
|
+
|
|
91
|
+
expect(ids).toEqual(["i1", "sgEmpty"]);
|
|
92
|
+
});
|
|
93
|
+
});
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import {
|
|
2
|
+
IActivityHistoryGroup,
|
|
3
|
+
IActivityHistoryItemWithComponent,
|
|
4
|
+
IActivityHistorySubGroup,
|
|
5
|
+
} from "../../domain/model";
|
|
6
|
+
|
|
7
|
+
export type ActivityHistoryEntry =
|
|
8
|
+
| { type: "item"; date: Date; item: IActivityHistoryItemWithComponent }
|
|
9
|
+
| { type: "subGroup"; date: Date; subGroup: IActivityHistorySubGroup };
|
|
10
|
+
|
|
11
|
+
export const mergeHistoryItemsAndSubgroups = (
|
|
12
|
+
group: IActivityHistoryGroup,
|
|
13
|
+
): ActivityHistoryEntry[] => {
|
|
14
|
+
// 1. Prepara los items sueltos
|
|
15
|
+
const itemEntries: ActivityHistoryEntry[] = group.items.map((item) => ({
|
|
16
|
+
type: "item",
|
|
17
|
+
date: new Date(item.date),
|
|
18
|
+
item,
|
|
19
|
+
}));
|
|
20
|
+
|
|
21
|
+
// 2. Prepara los subGroups, usando la fecha del ítem más reciente de cada subgrupo
|
|
22
|
+
const subGroupEntries: ActivityHistoryEntry[] = group.subGroups.map((subGroup) => {
|
|
23
|
+
// Asumimos que subGroup.items ya está ordenado de más reciente a más antiguo
|
|
24
|
+
const mostRecent = subGroup.items.length ? new Date(subGroup.items[0].date) : new Date(0);
|
|
25
|
+
return {
|
|
26
|
+
type: "subGroup",
|
|
27
|
+
date: mostRecent,
|
|
28
|
+
subGroup,
|
|
29
|
+
};
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
// 3. Fusiona y ordena
|
|
33
|
+
return [...itemEntries, ...subGroupEntries].sort((a, b) => b.date.getTime() - a.date.getTime());
|
|
34
|
+
};
|
|
@@ -1,47 +1,52 @@
|
|
|
1
1
|
import { IActivityHistoryGroup } from "../../domain/model";
|
|
2
2
|
|
|
3
3
|
export const sortGroupsByMostRecentDate = (arr: IActivityHistoryGroup[]) => {
|
|
4
|
-
// Helper
|
|
5
|
-
const getMostRecentDate = (items) => {
|
|
4
|
+
// Helper: obtener la fecha más reciente de una lista de items
|
|
5
|
+
const getMostRecentDate = (items: { date: string }[]): Date => {
|
|
6
6
|
return items.reduce((latest, item) => {
|
|
7
7
|
const itemDate = new Date(item.date);
|
|
8
8
|
return itemDate > latest ? itemDate : latest;
|
|
9
|
-
}, new Date(0));
|
|
9
|
+
}, new Date(0));
|
|
10
10
|
};
|
|
11
11
|
|
|
12
|
-
//
|
|
13
|
-
const sortItemsByDate = (items) => {
|
|
14
|
-
return items.sort((a, b) => new Date(b.date) - new Date(a.date));
|
|
12
|
+
// Ordenar items de más reciente a más antiguo
|
|
13
|
+
const sortItemsByDate = (items: { date: string }[]) => {
|
|
14
|
+
return items.sort((a, b) => new Date(b.date).getTime() - new Date(a.date).getTime());
|
|
15
15
|
};
|
|
16
16
|
|
|
17
|
-
//
|
|
18
|
-
const
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
// Collect dates from group items
|
|
22
|
-
if (group.items.length > 0) {
|
|
23
|
-
allDates.push(getMostRecentDate(group.items));
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
// Collect dates from subgroups items
|
|
27
|
-
group.subGroups.forEach((subGroup) => {
|
|
28
|
-
if (subGroup.items.length > 0) {
|
|
29
|
-
allDates.push(getMostRecentDate(subGroup.items));
|
|
30
|
-
}
|
|
31
|
-
});
|
|
17
|
+
// Obtener la fecha más reciente de un subgrupo
|
|
18
|
+
const getSubGroupMostRecentDate = (subGroup: { items: { date: string }[] }): Date => {
|
|
19
|
+
return getMostRecentDate(subGroup.items);
|
|
20
|
+
};
|
|
32
21
|
|
|
33
|
-
|
|
34
|
-
|
|
22
|
+
// Obtener la fecha más reciente de un grupo (considerando sus items y subgroups)
|
|
23
|
+
const getGroupMostRecentDate = (group: IActivityHistoryGroup): Date => {
|
|
24
|
+
const itemDates = group.items.length > 0 ? [getMostRecentDate(group.items)] : [];
|
|
25
|
+
const subGroupDates = group.subGroups.map(getSubGroupMostRecentDate);
|
|
26
|
+
const allDates = [...itemDates, ...subGroupDates];
|
|
27
|
+
return allDates.length > 0
|
|
28
|
+
? new Date(Math.max(...allDates.map((d) => d.getTime())))
|
|
29
|
+
: new Date(0);
|
|
35
30
|
};
|
|
36
31
|
|
|
37
|
-
//
|
|
32
|
+
// Procesar cada grupo
|
|
38
33
|
arr.forEach((group) => {
|
|
34
|
+
// Ordenar items del grupo
|
|
39
35
|
group.items = sortItemsByDate(group.items);
|
|
36
|
+
|
|
37
|
+
// Ordenar items de cada subgrupo
|
|
40
38
|
group.subGroups.forEach((subGroup) => {
|
|
41
39
|
subGroup.items = sortItemsByDate(subGroup.items);
|
|
42
40
|
});
|
|
41
|
+
|
|
42
|
+
// Ordenar subgrupos según el item más reciente en cada uno
|
|
43
|
+
group.subGroups.sort(
|
|
44
|
+
(a, b) => getSubGroupMostRecentDate(b).getTime() - getSubGroupMostRecentDate(a).getTime(),
|
|
45
|
+
);
|
|
43
46
|
});
|
|
44
47
|
|
|
45
|
-
//
|
|
46
|
-
return arr.sort(
|
|
48
|
+
// Finalmente, ordenar los grupos por su fecha más reciente
|
|
49
|
+
return arr.sort(
|
|
50
|
+
(a, b) => getGroupMostRecentDate(b).getTime() - getGroupMostRecentDate(a).getTime(),
|
|
51
|
+
);
|
|
47
52
|
};
|
|
@@ -16,6 +16,8 @@ import { activityHistoryCustomFilterGroupsSelector } from "./filter/custom-filte
|
|
|
16
16
|
import { groupActivityHistoryItems } from "./list/group-history-items/group-history-items";
|
|
17
17
|
import { sortGroupsByMostRecentDate } from "./list/sort-history-items-by-date/sort-history-items-by-date";
|
|
18
18
|
import { activityHistorySearchStringSelector } from "./search/selectors";
|
|
19
|
+
import { diagnosticFilterEnabledValuesSelector } from "./filter/diagnostic-filters/selectors";
|
|
20
|
+
import { DiagnosticCodeSpec } from "./domain/specs/diagnostics-filter-spec";
|
|
19
21
|
|
|
20
22
|
export const activityHistoryCollectionsSelector = (state: RootState) =>
|
|
21
23
|
state.activityHistoryCollections.collections;
|
|
@@ -86,17 +88,20 @@ export const activityHistoryGroupedItems = createSelector(
|
|
|
86
88
|
activityHistorySearchStringSelector,
|
|
87
89
|
activityHistoryCommonFiltersSelector,
|
|
88
90
|
activityHistoryCustomFilterGroupsSelector,
|
|
91
|
+
diagnosticFilterEnabledValuesSelector,
|
|
89
92
|
(
|
|
90
93
|
items: IActivityHistoryItem[],
|
|
91
94
|
searchString: string,
|
|
92
95
|
commonFilters: IActivityHistoryCommonFilter[],
|
|
93
96
|
customFilters: IActivityHistoryCustomFilterGroup[],
|
|
97
|
+
diagnosticFilterEnabledValues: string[],
|
|
94
98
|
) => {
|
|
95
99
|
const filteredItems = items.filter((item: IActivityHistoryItem) =>
|
|
96
100
|
new SearchStringSpec(searchString, item.searchPredicate)
|
|
97
101
|
.and(new CommonFilterSpec(commonFilters))
|
|
98
102
|
.and(new ComposedTypeSpec(customFilters))
|
|
99
103
|
.and(new CustomFilterSpec(customFilters))
|
|
104
|
+
.and(new DiagnosticCodeSpec(diagnosticFilterEnabledValues))
|
|
100
105
|
.isSatisfiedBy(item),
|
|
101
106
|
);
|
|
102
107
|
|
|
@@ -6,16 +6,10 @@ import {
|
|
|
6
6
|
IBusyHistoryItem,
|
|
7
7
|
IErrorHistoryItem,
|
|
8
8
|
} from "./domain/model";
|
|
9
|
-
import {
|
|
10
|
-
addBusyHistoryItemReducer,
|
|
11
|
-
removeBusyHistoryItemReducer,
|
|
12
|
-
} from "./list/handle-busy/reducers";
|
|
13
|
-
import {
|
|
14
|
-
addErrorHistoryItemReducer,
|
|
15
|
-
removeErrorHistoryItemReducer,
|
|
16
|
-
} from "./list/handle-error/reducers";
|
|
17
9
|
import { removeActivityHistoryItemReducer } from "./remove/reducer";
|
|
18
10
|
import { updateActivityHistoryItemReducer } from "./update/reducer";
|
|
11
|
+
import { addBusyHistoryItemReducer, removeBusyHistoryItemReducer } from "./add/handle-busy/reducers";
|
|
12
|
+
import { addErrorHistoryItemReducer, removeErrorHistoryItemReducer } from "./add/handle-error/reducers";
|
|
19
13
|
|
|
20
14
|
export const activityHistoryCollectionsSlice = createSlice({
|
|
21
15
|
name: "activity-history-collections",
|
|
@@ -86,6 +86,22 @@ export const locales = {
|
|
|
86
86
|
chipHeader: {
|
|
87
87
|
selection: "Selecció:",
|
|
88
88
|
},
|
|
89
|
+
error: {
|
|
90
|
+
general: {
|
|
91
|
+
title: "Hi ha hagut un problema durant la càrrega de contingut. Actualitza la pàgina o torna-ho a provar més tard.",
|
|
92
|
+
refresh: "Actualitzar pàgina",
|
|
93
|
+
noInfo: "No hi ha informació disponible.",
|
|
94
|
+
},
|
|
95
|
+
partial: {
|
|
96
|
+
title: "Hi ha hagut un problema i no s'ha pogut carregar les notes de tipus",
|
|
97
|
+
refresh: "Actualitzar",
|
|
98
|
+
limit: "Límit de clicks superat",
|
|
99
|
+
},
|
|
100
|
+
title: "Error en la càrrega",
|
|
101
|
+
viewDetails: "Veure detalls",
|
|
102
|
+
imageAlt: "Imatge d'error",
|
|
103
|
+
errorToRefresh: "Error en l'acció d'actualitzar la pàgina",
|
|
104
|
+
},
|
|
89
105
|
},
|
|
90
106
|
},
|
|
91
107
|
};
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
export declare const addErrorHistoryItem: import('@reduxjs/toolkit').ActionCreatorWithPayload<{
|
|
2
|
-
id: string;
|
|
3
|
-
message: string;
|
|
4
|
-
}, "activity-history-collections/addErrorHistoryItem">, removeErrorHistoryItem: import('@reduxjs/toolkit').ActionCreatorWithPayload<string, "activity-history-collections/removeErrorHistoryItem">;
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|