@uxland/primary-shell 5.4.7 → 5.6.0
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 +11766 -11398
- package/dist/index.js.map +1 -1
- package/dist/index.umd.cjs +833 -750
- package/dist/index.umd.cjs.map +1 -1
- package/dist/primary/shell/src/UI/components/primaria-shell/shell-header/header-divider/header-divider.d.ts +6 -0
- package/dist/primary/shell/src/UI/components/primaria-shell/shell-header/header-divider/template.d.ts +3 -0
- package/dist/primary/shell/src/UI/components/primaria-shell/shell-header/shell-header.d.ts +1 -0
- package/dist/primary/shell/src/internal-plugins/activity-history/activity-history-item/add/handle-busy/busy-component/component.d.ts +2 -1
- package/dist/primary/shell/src/internal-plugins/activity-history/activity-history-item/add/handle-busy/selectors.d.ts +1 -1
- package/dist/primary/shell/src/internal-plugins/activity-history/activity-history-item/domain/specs/up-filter-spec.d.ts +8 -0
- package/dist/primary/shell/src/internal-plugins/activity-history/activity-history-item/domain/specs/up-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 +3 -1
- 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/model.d.ts +13 -1
- package/dist/primary/shell/src/internal-plugins/activity-history/activity-history-item/filter/slice.d.ts +4 -0
- package/dist/primary/shell/src/internal-plugins/activity-history/activity-history-item/filter/up-filters/add/actions.d.ts +1 -0
- package/dist/primary/shell/src/internal-plugins/activity-history/activity-history-item/filter/up-filters/add/bootstrapper.d.ts +4 -0
- package/dist/primary/shell/src/internal-plugins/activity-history/activity-history-item/filter/up-filters/add/handler.d.ts +6 -0
- package/dist/primary/shell/src/internal-plugins/activity-history/activity-history-item/filter/up-filters/add/reducer.d.ts +4 -0
- package/dist/primary/shell/src/internal-plugins/activity-history/activity-history-item/filter/up-filters/add/reducer.test.d.ts +1 -0
- package/dist/primary/shell/src/internal-plugins/activity-history/activity-history-item/filter/up-filters/add/request.d.ts +6 -0
- package/dist/primary/shell/src/internal-plugins/activity-history/activity-history-item/filter/up-filters/handle-add-up-options-from-item.d.ts +4 -0
- package/dist/primary/shell/src/internal-plugins/activity-history/activity-history-item/filter/up-filters/selectors.d.ts +185 -0
- package/dist/primary/shell/src/internal-plugins/activity-history/activity-history-item/filter/up-filters/set/actions.d.ts +1 -0
- package/dist/primary/shell/src/internal-plugins/activity-history/activity-history-item/filter/up-filters/set/bootstrapper.d.ts +4 -0
- package/dist/primary/shell/src/internal-plugins/activity-history/activity-history-item/filter/up-filters/set/handler.d.ts +6 -0
- package/dist/primary/shell/src/internal-plugins/activity-history/activity-history-item/filter/up-filters/set/reducer.d.ts +3 -0
- package/dist/primary/shell/src/internal-plugins/activity-history/activity-history-item/filter/up-filters/set/request.d.ts +4 -0
- package/dist/primary/shell/src/internal-plugins/activity-history/activity-history-item/list/UI/main-view/activity-history-main.d.ts +2 -0
- package/dist/primary/shell/src/internal-plugins/activity-history/activity-history-item/selectors.d.ts +60 -0
- package/package.json +2 -2
- package/src/UI/components/bootstrapper.ts +2 -0
- package/src/UI/components/communication-action-menu/template.ts +3 -2
- package/src/UI/components/primaria-shell/shell-header/header-divider/header-divider.ts +13 -0
- package/src/UI/components/primaria-shell/shell-header/header-divider/styles.css +5 -0
- package/src/UI/components/primaria-shell/shell-header/header-divider/template.ts +8 -0
- package/src/UI/components/primaria-shell/shell-header/shell-header.ts +27 -0
- package/src/UI/components/primaria-shell/shell-header/styles.css +4 -4
- package/src/UI/components/primaria-shell/shell-header/template.ts +2 -0
- package/src/UI/components/primaria-shell/styles.css +6 -1
- package/src/UI/internal-views/handle-views.ts +1 -1
- package/src/UI/internal-views/lower-nav-menu-views.ts +0 -17
- package/src/UI/internal-views/upper-nav-views.ts +32 -6
- 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-busy/busy-component/component.ts +7 -6
- package/src/internal-plugins/activity-history/activity-history-item/add/handle-busy/busy-component/styles.css +11 -14
- package/src/internal-plugins/activity-history/activity-history-item/add/handle-busy/busy-component/template.ts +2 -2
- package/src/internal-plugins/activity-history/activity-history-item/add/handle-busy/selectors.ts +6 -6
- package/src/internal-plugins/activity-history/activity-history-item/add/handle-error/selectors.ts +4 -6
- package/src/internal-plugins/activity-history/activity-history-item/domain/specs/search-string-spec.ts +1 -1
- package/src/internal-plugins/activity-history/activity-history-item/domain/specs/up-filter-spec.test.ts +38 -0
- package/src/internal-plugins/activity-history/activity-history-item/domain/specs/up-filter-spec.ts +18 -0
- package/src/internal-plugins/activity-history/activity-history-item/filter/UI/active-filters-badges/active-filters-badges.ts +21 -6
- package/src/internal-plugins/activity-history/activity-history-item/filter/UI/active-filters-badges/template.ts +65 -6
- 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 +16 -10
- package/src/internal-plugins/activity-history/activity-history-item/filter/UI/activity-history-filters/styles.css +1 -0
- package/src/internal-plugins/activity-history/activity-history-item/filter/UI/activity-history-filters/template.ts +53 -16
- package/src/internal-plugins/activity-history/activity-history-item/filter/bootstrapper.ts +6 -0
- package/src/internal-plugins/activity-history/activity-history-item/filter/custom-filters/reset-custom-filter/reducer.ts +1 -2
- package/src/internal-plugins/activity-history/activity-history-item/filter/model.ts +14 -8
- package/src/internal-plugins/activity-history/activity-history-item/filter/slice.ts +4 -0
- package/src/internal-plugins/activity-history/activity-history-item/filter/up-filters/add/actions.ts +3 -0
- package/src/internal-plugins/activity-history/activity-history-item/filter/up-filters/add/bootstrapper.ts +14 -0
- package/src/internal-plugins/activity-history/activity-history-item/filter/up-filters/add/handler.ts +14 -0
- package/src/internal-plugins/activity-history/activity-history-item/filter/up-filters/add/reducer.test.ts +93 -0
- package/src/internal-plugins/activity-history/activity-history-item/filter/up-filters/add/reducer.ts +22 -0
- package/src/internal-plugins/activity-history/activity-history-item/filter/up-filters/add/request.ts +5 -0
- package/src/internal-plugins/activity-history/activity-history-item/filter/up-filters/handle-add-up-options-from-item.ts +20 -0
- package/src/internal-plugins/activity-history/activity-history-item/filter/up-filters/selectors.ts +14 -0
- package/src/internal-plugins/activity-history/activity-history-item/filter/up-filters/set/actions.ts +3 -0
- package/src/internal-plugins/activity-history/activity-history-item/filter/up-filters/set/bootstrapper.ts +14 -0
- package/src/internal-plugins/activity-history/activity-history-item/filter/up-filters/set/handler.ts +13 -0
- package/src/internal-plugins/activity-history/activity-history-item/filter/up-filters/set/reducer.ts +11 -0
- package/src/internal-plugins/activity-history/activity-history-item/filter/up-filters/set/request.ts +3 -0
- package/src/internal-plugins/activity-history/activity-history-item/list/UI/main-view/activity-history-main.ts +11 -9
- package/src/internal-plugins/activity-history/activity-history-item/list/UI/main-view/template.ts +2 -2
- package/src/internal-plugins/activity-history/activity-history-item/list/UI/timeline/activity-history-timeline.ts +3 -6
- package/src/internal-plugins/activity-history/activity-history-item/list/UI/timeline/template.ts +1 -1
- package/src/internal-plugins/activity-history/activity-history-item/selectors.ts +10 -23
- package/src/internal-plugins/activity-history/utils/get-unique-values-by-prop-path.ts +3 -1
- package/src/locales.ts +3 -6
|
@@ -15,11 +15,13 @@ export const template = (props: PrimariaShellHeader) => {
|
|
|
15
15
|
<div class="header-logo">
|
|
16
16
|
<img src=${salutLogo} alt="logo" />
|
|
17
17
|
</div>
|
|
18
|
+
<header-divider></header-divider>
|
|
18
19
|
<div id="header-region-container"></div>
|
|
19
20
|
</div>
|
|
20
21
|
<div class="header__right">
|
|
21
22
|
<finalize-visit-button></finalize-visit-button>
|
|
22
23
|
<div id="header-actions-region-container"></div>
|
|
24
|
+
<header-divider></header-divider>
|
|
23
25
|
${when(
|
|
24
26
|
props.professional,
|
|
25
27
|
() => html`<dss-header-menu-professional @onExit=${props.logout} slot="professional-menu" name="${props.professional.firstName} ${props.professional?.familyName} ${props.professional?.lastName}" center="${props.professional.workCenter}" collegiate="${props.professional.registrationNumber}">
|
|
@@ -64,7 +64,7 @@
|
|
|
64
64
|
overflow-y: auto;
|
|
65
65
|
margin-right: -14px;
|
|
66
66
|
padding-right: 14px;
|
|
67
|
-
scrollbar-color: var(--color-primary-
|
|
67
|
+
scrollbar-color: var(--color-primary-200) var(--color-primary-700);
|
|
68
68
|
scrollbar-width: thin;
|
|
69
69
|
}
|
|
70
70
|
#menu-region-container::-webkit-scrollbar {
|
|
@@ -140,6 +140,11 @@
|
|
|
140
140
|
height: 100%;
|
|
141
141
|
flex: 1;
|
|
142
142
|
}
|
|
143
|
+
#navigation-menu-lower-region-container{
|
|
144
|
+
display: flex;
|
|
145
|
+
flex-direction: column;
|
|
146
|
+
gap: 4px;
|
|
147
|
+
}
|
|
143
148
|
#floating-region-container {
|
|
144
149
|
position: fixed;
|
|
145
150
|
z-index: 300;
|
|
@@ -1,19 +1,2 @@
|
|
|
1
|
-
import { shellApi } from "../../api/api";
|
|
2
|
-
import { shellRegions } from "../../api/region-manager/regions";
|
|
3
|
-
import { PrimariaNavItem } from "../shared-components/primaria-nav-item/primaria-nav-item";
|
|
4
|
-
|
|
5
1
|
export const registerLowerNavMenuViews = () => {
|
|
6
|
-
shellApi.regionManager.registerView(shellRegions.navigationLowerLeftMenu, {
|
|
7
|
-
id: "configuration-center",
|
|
8
|
-
factory: () => {
|
|
9
|
-
const menuItem = new PrimariaNavItem({
|
|
10
|
-
icon: "settings",
|
|
11
|
-
label: "Centre de configuració",
|
|
12
|
-
callbackFn: () => {
|
|
13
|
-
// shellApi.regionManager.activateView(shellRegions.main, "");
|
|
14
|
-
},
|
|
15
|
-
});
|
|
16
|
-
return Promise.resolve(menuItem);
|
|
17
|
-
},
|
|
18
|
-
});
|
|
19
2
|
};
|
|
@@ -7,6 +7,7 @@ import { CommunicationActionMenu } from "../components/communication-action-menu
|
|
|
7
7
|
import { QuickActionItem } from "../shared-components/quick-action-item/quick-action-item";
|
|
8
8
|
import { PrimariaNavItem } from "../shared-components/primaria-nav-item/primaria-nav-item";
|
|
9
9
|
import { PrimariaNavTreeMenu } from "../shared-components/primaria-nav-tree-menu/primaria-nav-tree-menu";
|
|
10
|
+
import { GetVisitId } from "../../features/visit/get-visit-id/request";
|
|
10
11
|
|
|
11
12
|
type MenuItemConfig =
|
|
12
13
|
| {
|
|
@@ -56,7 +57,7 @@ const upperNavMenuItems: MenuItemConfig[] = [
|
|
|
56
57
|
actionMenuItems: [
|
|
57
58
|
{
|
|
58
59
|
icon: "open_in_new",
|
|
59
|
-
label: "ARES",
|
|
60
|
+
label: "Proces d'atenció - ARES",
|
|
60
61
|
callbackFn: () => navigateToEcapWithoutClosingWithCip("PROCES_ATENCIO"),
|
|
61
62
|
},
|
|
62
63
|
{
|
|
@@ -89,7 +90,7 @@ const upperNavMenuItems: MenuItemConfig[] = [
|
|
|
89
90
|
{
|
|
90
91
|
id: "unique-petition",
|
|
91
92
|
icon: "playlist_add",
|
|
92
|
-
label: "
|
|
93
|
+
label: "Peticionari",
|
|
93
94
|
type: "tree",
|
|
94
95
|
sortHint: "0050",
|
|
95
96
|
actionMenuItems: [
|
|
@@ -183,7 +184,7 @@ const upperNavMenuItems: MenuItemConfig[] = [
|
|
|
183
184
|
{
|
|
184
185
|
icon: "open_in_new",
|
|
185
186
|
label: "Prescripció social",
|
|
186
|
-
callbackFn: () => navigateToEcapWithoutClosingWithCip("
|
|
187
|
+
callbackFn: () => navigateToEcapWithoutClosingWithCip("PRESCRIPCIO_SOCIAL"),
|
|
187
188
|
},
|
|
188
189
|
],
|
|
189
190
|
},
|
|
@@ -273,8 +274,33 @@ export const registerCommunicationMenuActions = () => {
|
|
|
273
274
|
});
|
|
274
275
|
},
|
|
275
276
|
},
|
|
276
|
-
{
|
|
277
|
-
|
|
277
|
+
{
|
|
278
|
+
id: "2",
|
|
279
|
+
sortHint: "0020",
|
|
280
|
+
icon: "open_in_new",
|
|
281
|
+
label: "eConsulta",
|
|
282
|
+
callbackFn: async () => {
|
|
283
|
+
const CIP = await getPatientCip(shellApi);
|
|
284
|
+
const visiId = (await shellApi.broker.send(new GetVisitId())) as string;
|
|
285
|
+
|
|
286
|
+
shellApi.ecapEventManager.publish("NAVEGACIO_ECAP_ECONSULTA", "NO_TANCAR", {
|
|
287
|
+
CIP: CIP || "",
|
|
288
|
+
VisiID: visiId || "",
|
|
289
|
+
});
|
|
290
|
+
},
|
|
291
|
+
},
|
|
292
|
+
{
|
|
293
|
+
id: "3",
|
|
294
|
+
icon: "open_in_new",
|
|
295
|
+
label: "Mail",
|
|
296
|
+
callbackFn: async () => {
|
|
297
|
+
const CIP = await getPatientCip(shellApi);
|
|
298
|
+
shellApi.ecapEventManager.publish("COMUNICACIO_MISSATGES_CREAR", "NO_TANCAR", {
|
|
299
|
+
CIP: CIP || "",
|
|
300
|
+
TipusMissatge: "SMS",
|
|
301
|
+
});
|
|
302
|
+
},
|
|
303
|
+
},
|
|
278
304
|
{
|
|
279
305
|
id: "4",
|
|
280
306
|
sortHint: "0030",
|
|
@@ -282,7 +308,7 @@ export const registerCommunicationMenuActions = () => {
|
|
|
282
308
|
label: "Veu IP",
|
|
283
309
|
callbackFn: () => navigateToEcapWithoutClosingWithCip("VOIP"),
|
|
284
310
|
},
|
|
285
|
-
{ id: "5", sortHint: "0040", icon: "open_in_new", label: "Videoconsulta", callbackFn: () => {} },
|
|
311
|
+
// { id: "5", sortHint: "0040", icon: "open_in_new", label: "Videoconsulta", callbackFn: () => {} },
|
|
286
312
|
];
|
|
287
313
|
for (const item of communicationItems) {
|
|
288
314
|
shellApi.regionManager.registerView(shellRegions.communicationSidenav, {
|
package/src/internal-plugins/activity-history/activity-history-item/add/add-history-item/handler.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { StoreBaseHandler } from "../../../infrastructure/base-handlers";
|
|
2
2
|
import { ensureAreValidBasicActivityHistoryItems } from "../../domain/validation/is-valid-basic-history-item";
|
|
3
3
|
import { handleAddDiagnosticsFilter } from "../../filter/diagnostic-filters/handle-add-diagnostics-options-from-item";
|
|
4
|
+
import { handleAddUpFilter } from "../../filter/up-filters/handle-add-up-options-from-item";
|
|
4
5
|
import { addActivityHistoryItem } from "./action";
|
|
5
6
|
import { AddHistoryItemPayload } from "./request";
|
|
6
7
|
|
|
@@ -15,6 +16,7 @@ export class AddHistoryItemHandler extends StoreBaseHandler {
|
|
|
15
16
|
}),
|
|
16
17
|
);
|
|
17
18
|
handleAddDiagnosticsFilter([payload.item], this.store);
|
|
19
|
+
handleAddUpFilter([payload.item], this.store);
|
|
18
20
|
} catch (e) {
|
|
19
21
|
console.log(e.message);
|
|
20
22
|
}
|
package/src/internal-plugins/activity-history/activity-history-item/add/add-history-items/handler.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { StoreBaseHandler } from "../../../infrastructure/base-handlers";
|
|
2
2
|
import { validateAndFilterBasicItems } from "../../domain/validation/is-valid-basic-history-item";
|
|
3
3
|
import { handleAddDiagnosticsFilter } from "../../filter/diagnostic-filters/handle-add-diagnostics-options-from-item";
|
|
4
|
+
import { handleAddUpFilter } from "../../filter/up-filters/handle-add-up-options-from-item";
|
|
4
5
|
import { addActivityHistoryItems } from "./action";
|
|
5
6
|
import { AddHistoryItemsPayload } from "./request";
|
|
6
7
|
|
|
@@ -17,6 +18,7 @@ export class AddHistoryItemsHandler extends StoreBaseHandler {
|
|
|
17
18
|
}),
|
|
18
19
|
);
|
|
19
20
|
handleAddDiagnosticsFilter(validItems, this.store);
|
|
21
|
+
handleAddUpFilter(validItems, this.store);
|
|
20
22
|
} catch (e) {
|
|
21
23
|
console.log(e.message);
|
|
22
24
|
}
|
|
@@ -3,10 +3,7 @@ import { customElement } from "lit/decorators.js";
|
|
|
3
3
|
import styles from "./styles.css?inline";
|
|
4
4
|
import { template } from "./template";
|
|
5
5
|
import { connectedProperty } from "../../../../infrastructure/state/connected-property";
|
|
6
|
-
import {
|
|
7
|
-
isAnyCollectionLoadingWithoutAnyLoaded,
|
|
8
|
-
isSomeCollectionLoadedAndOtherLoading,
|
|
9
|
-
} from "../selectors";
|
|
6
|
+
import { isSomeCollectionLoadedAndOtherLoading, isCollectionInitialState } from "../selectors";
|
|
10
7
|
|
|
11
8
|
//@ts-ignore
|
|
12
9
|
@customElement("activity-history-busy")
|
|
@@ -19,9 +16,13 @@ export class ActivityHistoryBusy extends LitElement {
|
|
|
19
16
|
${unsafeCSS(styles)}
|
|
20
17
|
`;
|
|
21
18
|
|
|
22
|
-
@connectedProperty(
|
|
23
|
-
|
|
19
|
+
@connectedProperty(isCollectionInitialState)
|
|
20
|
+
isCollectionInitialState: boolean;
|
|
24
21
|
|
|
25
22
|
@connectedProperty(isSomeCollectionLoadedAndOtherLoading)
|
|
26
23
|
isSomeCollectionLoadedAndOtherLoading: boolean;
|
|
24
|
+
|
|
25
|
+
get skeletons() {
|
|
26
|
+
return Array.from({ length: 12 }, () => html`<dss-skeleton width="100" height="10"></dss-skeleton>`);
|
|
27
|
+
}
|
|
27
28
|
}
|
|
@@ -1,15 +1,12 @@
|
|
|
1
1
|
.spinner-container {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
align-items: center;
|
|
14
|
-
justify-content: center;
|
|
15
|
-
}
|
|
2
|
+
display: flex;
|
|
3
|
+
flex-direction: row;
|
|
4
|
+
align-items: center;
|
|
5
|
+
gap: 24px;
|
|
6
|
+
justify-content: center;
|
|
7
|
+
padding-top:16px
|
|
8
|
+
}
|
|
9
|
+
.skeleton-container {
|
|
10
|
+
padding: 20px;
|
|
11
|
+
height: 100%;
|
|
12
|
+
}
|
|
@@ -3,8 +3,8 @@ import { ActivityHistoryBusy } from "./component";
|
|
|
3
3
|
import { translate } from "../../../../localization";
|
|
4
4
|
|
|
5
5
|
export const template = (props: ActivityHistoryBusy) =>
|
|
6
|
-
props.
|
|
7
|
-
? html`<div class="
|
|
6
|
+
props.isCollectionInitialState
|
|
7
|
+
? html`<div class="skeleton-container">${props.skeletons}</div>`
|
|
8
8
|
: props.isSomeCollectionLoadedAndOtherLoading
|
|
9
9
|
? html`<div class="spinner-container"><dss-spinner size="sm"></dss-spinner><div class="busy-description">${translate("busyEntriesLoading")}</div></div>`
|
|
10
10
|
: nothing;
|
package/src/internal-plugins/activity-history/activity-history-item/add/handle-busy/selectors.ts
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { RootState } from "../../../infrastructure/state/store";
|
|
2
2
|
|
|
3
|
-
const isAnyCollectionBusySelector = (state: RootState) =>
|
|
4
|
-
state.activityHistoryCollections.busy.length > 0;
|
|
5
|
-
export const isAnyCollectionLoadingWithoutAnyLoaded = (state: RootState) => {
|
|
6
|
-
const collections = Object.values(state.activityHistoryCollections.collections);
|
|
7
|
-
return !collections?.length && isAnyCollectionBusySelector(state);
|
|
8
|
-
};
|
|
3
|
+
const isAnyCollectionBusySelector = (state: RootState) => state.activityHistoryCollections.busy.length > 0;
|
|
9
4
|
|
|
10
5
|
export const isSomeCollectionLoadedAndOtherLoading = (state: RootState) => {
|
|
11
6
|
const collections = Object.values(state.activityHistoryCollections.collections);
|
|
12
7
|
return collections && isAnyCollectionBusySelector(state);
|
|
13
8
|
};
|
|
9
|
+
|
|
10
|
+
export const isCollectionInitialState = (state: RootState) => {
|
|
11
|
+
const collections = Object.values(state.activityHistoryCollections.collections);
|
|
12
|
+
return !collections?.length && !isAnyCollectionBusySelector(state);
|
|
13
|
+
};
|
package/src/internal-plugins/activity-history/activity-history-item/add/handle-error/selectors.ts
CHANGED
|
@@ -1,19 +1,17 @@
|
|
|
1
1
|
import { RootState } from "../../../infrastructure/state/store";
|
|
2
|
-
import {
|
|
2
|
+
import { isSomeCollectionLoadedAndOtherLoading } from "../handle-busy/selectors";
|
|
3
3
|
|
|
4
4
|
export const isErrorOccurred = (state: RootState) => state.activityHistoryCollections.error.length > 0;
|
|
5
5
|
|
|
6
6
|
const areCollectionsEmpty = (state: RootState) => {
|
|
7
7
|
const collections = state.activityHistoryCollections.collections;
|
|
8
8
|
|
|
9
|
-
return Object.values(collections).every(collection => {
|
|
9
|
+
return Object.values(collections).every((collection) => {
|
|
10
10
|
return !collection.items || collection.items.length === 0;
|
|
11
11
|
});
|
|
12
12
|
};
|
|
13
13
|
export const isAllDataFailedToLoad = (state: RootState) => {
|
|
14
|
-
return !
|
|
15
|
-
!isSomeCollectionLoadedAndOtherLoading(state) &&
|
|
16
|
-
isErrorOccurred(state) && areCollectionsEmpty(state);
|
|
14
|
+
return !isSomeCollectionLoadedAndOtherLoading(state) && isErrorOccurred(state) && areCollectionsEmpty(state);
|
|
17
15
|
};
|
|
18
16
|
|
|
19
|
-
export const selectErrorMessages = (state: RootState) => state.activityHistoryCollections.error;
|
|
17
|
+
export const selectErrorMessages = (state: RootState) => state.activityHistoryCollections.error;
|
|
@@ -12,7 +12,7 @@ const commonFieldsSearchPredicate = (item: IActivityHistoryItem, searchString: s
|
|
|
12
12
|
item.professional?.role?.description && propContainsString(item.professional?.role.description, searchString);
|
|
13
13
|
const serviceNameContainsSearchString = item.service?.description && propContainsString(item.service.description, searchString);
|
|
14
14
|
const diagnosticsMatch = item.diagnostics?.some(
|
|
15
|
-
(diagnostic) => propContainsString(diagnostic.
|
|
15
|
+
(diagnostic) => propContainsString(diagnostic.descripcio, searchString),
|
|
16
16
|
);
|
|
17
17
|
return (
|
|
18
18
|
professionalNameContainsSearchString ||
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest';
|
|
2
|
+
import { IActivityHistoryItem } from '../model';
|
|
3
|
+
import { UpFilterSpec } from './up-filter-spec';
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
describe('UpFilterSpec', () => {
|
|
7
|
+
const makeItem = (upId: string | undefined, description: string | undefined): IActivityHistoryItem => ({
|
|
8
|
+
up: { id: upId, description },
|
|
9
|
+
} as IActivityHistoryItem);
|
|
10
|
+
|
|
11
|
+
it('should return true if up filter is empty', () => {
|
|
12
|
+
const spec = new UpFilterSpec([]);
|
|
13
|
+
const item = makeItem('00461', 'EAP Barcelona 2D - Universitat');
|
|
14
|
+
|
|
15
|
+
expect(spec.isSatisfiedBy(item)).toBe(true);
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
it('should return true if item has at least one matching up', () => {
|
|
19
|
+
const spec = new UpFilterSpec(['00001', '00461', '99999']);
|
|
20
|
+
const item = makeItem('00461', 'EAP Barcelona 2D - Universitat');
|
|
21
|
+
|
|
22
|
+
expect(spec.isSatisfiedBy(item)).toBe(true);
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
it('should return false if item has up but none match', () => {
|
|
26
|
+
const spec = new UpFilterSpec(['00001', '00002', '00003']);
|
|
27
|
+
const item = makeItem('00461', 'EAP Barcelona 2D - Universitat');
|
|
28
|
+
|
|
29
|
+
expect(spec.isSatisfiedBy(item)).toBe(false);
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
it('should return false if item has no up', () => {
|
|
33
|
+
const spec = new UpFilterSpec(['a']);
|
|
34
|
+
const item = makeItem(undefined, undefined);
|
|
35
|
+
|
|
36
|
+
expect(spec.isSatisfiedBy(item)).toBe(false);
|
|
37
|
+
});
|
|
38
|
+
});
|
package/src/internal-plugins/activity-history/activity-history-item/domain/specs/up-filter-spec.ts
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { IActivityHistoryItem } from "../model";
|
|
2
|
+
import { Spec } from "./spec";
|
|
3
|
+
|
|
4
|
+
export class UpFilterSpec extends Spec<IActivityHistoryItem> {
|
|
5
|
+
constructor(private upIds: string[]) {
|
|
6
|
+
super();
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
isSatisfiedBy(item: IActivityHistoryItem): boolean {
|
|
10
|
+
if (!this.upIds?.length) {
|
|
11
|
+
return true; // No se filtra si no se proporcionan códigos
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
const itemUp = item.up ?? null;
|
|
15
|
+
|
|
16
|
+
return this.upIds.some((upId) => itemUp.id === upId);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
@@ -6,15 +6,24 @@ import { PrimariaApi } from "../../../../../../api/api";
|
|
|
6
6
|
import { TYPES } from "../../../../infrastructure/ioc/types";
|
|
7
7
|
import { template } from "./template";
|
|
8
8
|
import styles from "./styles.css?inline";
|
|
9
|
-
|
|
9
|
+
|
|
10
10
|
import { SetCustomFilterValue } from "../../custom-filters/set-custom-filter-value/request";
|
|
11
|
-
import {
|
|
11
|
+
import {
|
|
12
|
+
IActivityHistoryCustomFilter,
|
|
13
|
+
IActivityHistoryCustomFilterGroup,
|
|
14
|
+
IActivityHistoryDiagnosticsFilter,
|
|
15
|
+
IActivityHistoryFilter,
|
|
16
|
+
IActivityHistoryUpFilter,
|
|
17
|
+
} from "../../model";
|
|
12
18
|
import { activityHistoryEnabledCommonFiltersSelector } from "../../common-filters/selectors";
|
|
13
19
|
import { SetCommonFilter } from "../../common-filters/set-common-filter/request";
|
|
14
20
|
import { diagnosticFilterSelector } from "../../diagnostic-filters/selectors";
|
|
15
21
|
import { SetDiagnosticFiltersCommand } from "../../diagnostic-filters/set/request";
|
|
16
22
|
import { ResetCommonFilter } from "../../common-filters/reset-common-filter/request";
|
|
17
23
|
import { ResetCustomFilter } from "../../custom-filters/reset-custom-filter/request";
|
|
24
|
+
import { upFilterSelector } from "../../up-filters/selectors";
|
|
25
|
+
import { SetUpFiltersCommand } from "../../up-filters/set/request";
|
|
26
|
+
import { customFilterGroupsWithOptionsSelector } from "../../../selectors";
|
|
18
27
|
|
|
19
28
|
//@ts-ignore
|
|
20
29
|
@customElement("active-filters-badges")
|
|
@@ -35,12 +44,15 @@ export class ActiveFiltersBadges extends LitElement {
|
|
|
35
44
|
@connectedProperty(activityHistoryEnabledCommonFiltersSelector)
|
|
36
45
|
enabledCommonFilters: IActivityHistoryFilter[];
|
|
37
46
|
|
|
38
|
-
@connectedProperty(
|
|
47
|
+
@connectedProperty(customFilterGroupsWithOptionsSelector)
|
|
39
48
|
enabledFilters: IActivityHistoryCustomFilterGroup[];
|
|
40
49
|
|
|
41
50
|
@connectedProperty(diagnosticFilterSelector)
|
|
42
51
|
diagnosticFilterEnabled: IActivityHistoryDiagnosticsFilter;
|
|
43
52
|
|
|
53
|
+
@connectedProperty(upFilterSelector)
|
|
54
|
+
upFilterEnabled: IActivityHistoryUpFilter;
|
|
55
|
+
|
|
44
56
|
_onDeleteFilterValue(filterGroupId: string, filterId: string, optionId: string, value: boolean) {
|
|
45
57
|
this.api.broker.send(
|
|
46
58
|
new SetCustomFilterValue({
|
|
@@ -58,14 +70,17 @@ export class ActiveFiltersBadges extends LitElement {
|
|
|
58
70
|
|
|
59
71
|
_onDeleteDiagnosticFilterValue(diagnosticValue: string) {
|
|
60
72
|
this.api.broker.send(
|
|
61
|
-
new SetDiagnosticFiltersCommand([
|
|
62
|
-
...this.diagnosticFilterEnabled.enabledValues.filter((v) => v !== diagnosticValue),
|
|
63
|
-
]),
|
|
73
|
+
new SetDiagnosticFiltersCommand([...this.diagnosticFilterEnabled.enabledValues.filter((v) => v !== diagnosticValue)]),
|
|
64
74
|
);
|
|
65
75
|
}
|
|
66
76
|
|
|
77
|
+
_onDeleteUpFilterValue(upValue: string) {
|
|
78
|
+
this.api.broker.send(new SetUpFiltersCommand([...this.upFilterEnabled.enabledValues.filter((v) => v !== upValue)]));
|
|
79
|
+
}
|
|
80
|
+
|
|
67
81
|
resetFilters() {
|
|
68
82
|
this.api.broker.send(new SetDiagnosticFiltersCommand([]));
|
|
83
|
+
this.api.broker.send(new SetUpFiltersCommand([]));
|
|
69
84
|
this.api.broker.send(new ResetCommonFilter());
|
|
70
85
|
this.api.broker.send(new ResetCustomFilter());
|
|
71
86
|
}
|
|
@@ -5,14 +5,14 @@ import { formatShowFilterTitle, normalizeDeletedFilterBooleanValue, normalizeEmp
|
|
|
5
5
|
|
|
6
6
|
const MAX_VISIBLE_CHIPS = 5;
|
|
7
7
|
|
|
8
|
-
const renderChip = (id, filter,
|
|
8
|
+
const renderChip = (id, filter, option, props) => html`
|
|
9
9
|
<dss-chip
|
|
10
|
-
label=${normalizeEmptyFilterValue(
|
|
10
|
+
label=${normalizeEmptyFilterValue(option.title, filter.title)}
|
|
11
11
|
size="sm"
|
|
12
12
|
hasdelete
|
|
13
13
|
selected
|
|
14
|
-
@click=${() => props._onDeleteFilterValue(id, filter.id,
|
|
15
|
-
@onDelete=${() => props._onDeleteFilterValue(id, filter.id,
|
|
14
|
+
@click=${() => props._onDeleteFilterValue(id, filter.id, option.id, false)}
|
|
15
|
+
@onDelete=${() => props._onDeleteFilterValue(id, filter.id, option.id, false)}
|
|
16
16
|
></dss-chip>
|
|
17
17
|
`;
|
|
18
18
|
|
|
@@ -38,13 +38,26 @@ const renderDiagnosticChip = (id, value, props) => html`
|
|
|
38
38
|
></dss-chip>
|
|
39
39
|
`;
|
|
40
40
|
|
|
41
|
+
const renderUpChip = (id, value, props) => html`
|
|
42
|
+
<dss-chip
|
|
43
|
+
label=${value}
|
|
44
|
+
size="sm"
|
|
45
|
+
hasdelete
|
|
46
|
+
selected
|
|
47
|
+
@click=${() => props._onDeleteUpFilterValue(id)}
|
|
48
|
+
@onDelete=${() => props._onDeleteUpFilterValue(id)}
|
|
49
|
+
></dss-chip>
|
|
50
|
+
`;
|
|
51
|
+
|
|
41
52
|
const renderFilterTitle = (title) => html`<div class="filter-title">${`${title}:`}</div>`;
|
|
42
53
|
|
|
43
54
|
export const template = (props: ActiveFiltersBadges) => {
|
|
55
|
+
//TODO: refactor chips render
|
|
44
56
|
if (
|
|
45
57
|
props.enabledFilters.length === 0 &&
|
|
46
58
|
props.enabledCommonFilters.length === 0 &&
|
|
47
|
-
props.diagnosticFilterEnabled.enabledValues.length === 0
|
|
59
|
+
props.diagnosticFilterEnabled.enabledValues.length === 0 &&
|
|
60
|
+
props.upFilterEnabled.enabledValues.length === 0
|
|
48
61
|
)
|
|
49
62
|
return nothing;
|
|
50
63
|
|
|
@@ -85,6 +98,38 @@ export const template = (props: ActiveFiltersBadges) => {
|
|
|
85
98
|
}
|
|
86
99
|
}
|
|
87
100
|
|
|
101
|
+
const up = props.upFilterEnabled;
|
|
102
|
+
|
|
103
|
+
if (up) {
|
|
104
|
+
const { title, values, enabledValues } = up;
|
|
105
|
+
const selectedOptions = values.filter((opt) => enabledValues.includes(opt.value));
|
|
106
|
+
|
|
107
|
+
if (selectedOptions.length > 0) {
|
|
108
|
+
let titleAddedToVisible = false;
|
|
109
|
+
let titleAddedToHidden = false;
|
|
110
|
+
|
|
111
|
+
for (const option of selectedOptions) {
|
|
112
|
+
const chip = renderUpChip(option.value, option.label, props);
|
|
113
|
+
|
|
114
|
+
if (visibleCount < MAX_VISIBLE_CHIPS) {
|
|
115
|
+
if (!titleAddedToVisible) {
|
|
116
|
+
visibleChips.push(renderFilterTitle(title));
|
|
117
|
+
titleAddedToVisible = true;
|
|
118
|
+
}
|
|
119
|
+
visibleChips.push(chip);
|
|
120
|
+
visibleCount++;
|
|
121
|
+
} else {
|
|
122
|
+
if (!titleAddedToHidden) {
|
|
123
|
+
hiddenElements.push(renderFilterTitle(title));
|
|
124
|
+
titleAddedToHidden = true;
|
|
125
|
+
}
|
|
126
|
+
hiddenElements.push(chip);
|
|
127
|
+
hiddenChips.push(chip);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
|
|
88
133
|
for (const filter of props.enabledCommonFilters) {
|
|
89
134
|
const chip = renderCommonChip(filter, props);
|
|
90
135
|
|
|
@@ -103,7 +148,21 @@ export const template = (props: ActiveFiltersBadges) => {
|
|
|
103
148
|
|
|
104
149
|
for (const filter of filters) {
|
|
105
150
|
for (const value of [...new Set(filter.enabledValues)]) {
|
|
106
|
-
|
|
151
|
+
let filterOption = filter?.options?.find((o) => o.id === value);
|
|
152
|
+
|
|
153
|
+
if (filterOption) {
|
|
154
|
+
//Fill when filter option doesnt have title (description)
|
|
155
|
+
filterOption.title = filterOption.title !== "" ? filterOption.title : value;
|
|
156
|
+
} else {
|
|
157
|
+
//Hi ha un filtre de curs clinic "veure eliminats" booleà que no serà un filterOption, per tant entra aquí
|
|
158
|
+
//Aqui es crea el objecte que es passa al chip
|
|
159
|
+
const deletedFiltersOption = normalizeDeletedFilterBooleanValue(value);
|
|
160
|
+
filterOption = { title: deletedFiltersOption, id: deletedFiltersOption };
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
const chip2 = renderChip(id, filter, normalizeDeletedFilterBooleanValue(value), props);
|
|
164
|
+
|
|
165
|
+
const chip = renderChip(id, filter, filterOption, props);
|
|
107
166
|
|
|
108
167
|
if (visibleCount < MAX_VISIBLE_CHIPS) {
|
|
109
168
|
if (!titleAddedToVisible) {
|
|
@@ -7,6 +7,7 @@ import { activityHistorySearchStringSelector } from "../../../search/selectors";
|
|
|
7
7
|
import { areCustomFiltersActive } from "../../custom-filters/selectors";
|
|
8
8
|
import { areCommonFiltersActive } from "../../common-filters/selectors";
|
|
9
9
|
import { areDiagnosticFiltersActive } from "../../diagnostic-filters/selectors";
|
|
10
|
+
import { areUpFiltersActive } from "../../up-filters/selectors";
|
|
10
11
|
|
|
11
12
|
//@ts-ignore
|
|
12
13
|
@customElement("active-filters-header")
|
|
@@ -30,4 +31,7 @@ export class ActiveFiltersHeader extends LitElement {
|
|
|
30
31
|
|
|
31
32
|
@connectedProperty(areDiagnosticFiltersActive)
|
|
32
33
|
areDiagnosticFiltersActive: boolean;
|
|
34
|
+
|
|
35
|
+
@connectedProperty(areUpFiltersActive)
|
|
36
|
+
areUpFiltersActive: boolean;
|
|
33
37
|
}
|
|
@@ -8,6 +8,7 @@ import {
|
|
|
8
8
|
IActivityHistoryCommonFilter,
|
|
9
9
|
IActivityHistoryCustomFilterGroup,
|
|
10
10
|
IActivityHistoryDiagnosticsFilter,
|
|
11
|
+
IActivityHistoryUpFilter,
|
|
11
12
|
} from "../../model";
|
|
12
13
|
import styles from "./styles.css?inline";
|
|
13
14
|
import { template } from "./template";
|
|
@@ -16,11 +17,10 @@ import { SetCommonFilter } from "../../common-filters/set-common-filter/request"
|
|
|
16
17
|
import { activityHistoryCommonFiltersSelector } from "../../common-filters/selectors";
|
|
17
18
|
import { SetCustomFilterValue } from "../../custom-filters/set-custom-filter-value/request";
|
|
18
19
|
import { customFilterGroupsWithOptionsSelector } from "../../../selectors";
|
|
19
|
-
import {
|
|
20
|
-
diagnosticFilterEnabledValuesSelector,
|
|
21
|
-
diagnosticFilterSelector,
|
|
22
|
-
} from "../../diagnostic-filters/selectors";
|
|
20
|
+
import { diagnosticFilterEnabledValuesSelector, diagnosticFilterSelector } from "../../diagnostic-filters/selectors";
|
|
23
21
|
import { SetDiagnosticFiltersCommand } from "../../diagnostic-filters/set/request";
|
|
22
|
+
import { upFilterEnabledValuesSelector, upFilterSelector } from "../../up-filters/selectors";
|
|
23
|
+
import { SetUpFiltersCommand } from "../../up-filters/set/request";
|
|
24
24
|
|
|
25
25
|
//@ts-ignore
|
|
26
26
|
@customElement("activity-history-filters")
|
|
@@ -45,6 +45,12 @@ export class ActivityHistoryFilters extends LitElement {
|
|
|
45
45
|
@connectedProperty(diagnosticFilterEnabledValuesSelector)
|
|
46
46
|
diagnosticFilterEnabledValues: string[];
|
|
47
47
|
|
|
48
|
+
@connectedProperty(upFilterSelector)
|
|
49
|
+
upFilter: IActivityHistoryUpFilter;
|
|
50
|
+
|
|
51
|
+
@connectedProperty(upFilterEnabledValuesSelector)
|
|
52
|
+
upFilterEnabledValues: string[];
|
|
53
|
+
|
|
48
54
|
@lazyInject(TYPES.primaryApi)
|
|
49
55
|
api: PrimariaApi;
|
|
50
56
|
|
|
@@ -72,12 +78,7 @@ export class ActivityHistoryFilters extends LitElement {
|
|
|
72
78
|
this.api.broker.send(new SetCustomFilterGroup({ id: filterGroupId, enabled: value }));
|
|
73
79
|
}
|
|
74
80
|
|
|
75
|
-
_onChangeCustomFilterValue(
|
|
76
|
-
filterGroupId: string,
|
|
77
|
-
filterId: string,
|
|
78
|
-
optionId: string,
|
|
79
|
-
value: boolean,
|
|
80
|
-
) {
|
|
81
|
+
_onChangeCustomFilterValue(filterGroupId: string, filterId: string, optionId: string, value: boolean) {
|
|
81
82
|
this.api.broker.send(
|
|
82
83
|
new SetCustomFilterValue({
|
|
83
84
|
filterGroupId,
|
|
@@ -92,4 +93,9 @@ export class ActivityHistoryFilters extends LitElement {
|
|
|
92
93
|
const selectedValues = e.detail.selectedValue;
|
|
93
94
|
this.api.broker.send(new SetDiagnosticFiltersCommand(selectedValues));
|
|
94
95
|
}
|
|
96
|
+
|
|
97
|
+
_handleUpFilterChange(e: CustomEvent) {
|
|
98
|
+
const selectedValues = e.detail.selectedValue;
|
|
99
|
+
this.api.broker.send(new SetUpFiltersCommand(selectedValues));
|
|
100
|
+
}
|
|
95
101
|
}
|