@uxland/primary-shell 5.4.6 → 5.5.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 +1314 -1050
- package/dist/index.js.map +1 -1
- package/dist/index.umd.cjs +171 -121
- package/dist/index.umd.cjs.map +1 -1
- package/dist/primary/shell/src/UI/components/communication-action-menu/communication-action-menu.d.ts +16 -0
- package/dist/primary/shell/src/UI/components/communication-action-menu/template.d.ts +3 -0
- package/dist/primary/shell/src/UI/internal-views/upper-nav-views.d.ts +2 -0
- package/dist/primary/shell/src/UI/shared-components/quick-action-item/quick-action-item.d.ts +9 -0
- package/dist/primary/shell/src/UI/shared-components/quick-action-item/template.d.ts +3 -0
- package/dist/primary/shell/src/api/region-manager/regions.d.ts +1 -0
- 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/selectors.d.ts +60 -0
- package/package.json +1 -1
- package/src/UI/components/bootstrapper.ts +2 -0
- package/src/UI/components/communication-action-menu/communication-action-menu.ts +48 -0
- package/src/UI/components/communication-action-menu/styles.css +25 -0
- package/src/UI/components/communication-action-menu/template.ts +24 -0
- package/src/UI/components/primaria-shell/styles.css +0 -3
- package/src/UI/internal-views/handle-views.ts +4 -1
- package/src/UI/internal-views/upper-nav-views.ts +59 -29
- package/src/UI/shared-components/quick-action-item/quick-action-item.ts +21 -0
- package/src/UI/shared-components/quick-action-item/template.ts +8 -0
- package/src/api/region-manager/regions.ts +1 -0
- 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/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 +15 -1
- package/src/internal-plugins/activity-history/activity-history-item/filter/UI/active-filters-badges/template.ts +45 -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 +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 +51 -15
- 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/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
|
@@ -3,6 +3,8 @@ import { shellRegions } from "../../api/region-manager/regions";
|
|
|
3
3
|
import { ExitShell } from "../../features/exit/request";
|
|
4
4
|
import { getPatientCip } from "../../features/get-patient-cip/action";
|
|
5
5
|
import { navigateToEcapWithoutClosingWithCip } from "../../features/navigate-to-ecap/navigate-without-closing-and-with-cip";
|
|
6
|
+
import { CommunicationActionMenu } from "../components/communication-action-menu/communication-action-menu";
|
|
7
|
+
import { QuickActionItem } from "../shared-components/quick-action-item/quick-action-item";
|
|
6
8
|
import { PrimariaNavItem } from "../shared-components/primaria-nav-item/primaria-nav-item";
|
|
7
9
|
import { PrimariaNavTreeMenu } from "../shared-components/primaria-nav-tree-menu/primaria-nav-tree-menu";
|
|
8
10
|
|
|
@@ -181,7 +183,7 @@ const upperNavMenuItems: MenuItemConfig[] = [
|
|
|
181
183
|
{
|
|
182
184
|
icon: "open_in_new",
|
|
183
185
|
label: "Prescripció social",
|
|
184
|
-
callbackFn: () => navigateToEcapWithoutClosingWithCip("
|
|
186
|
+
callbackFn: () => navigateToEcapWithoutClosingWithCip("PRESCRIPCIO_SOCIAL"),
|
|
185
187
|
},
|
|
186
188
|
],
|
|
187
189
|
},
|
|
@@ -201,34 +203,6 @@ const upperNavMenuItems: MenuItemConfig[] = [
|
|
|
201
203
|
sortHint: "0100",
|
|
202
204
|
callbackFn: () => navigateToEcapWithoutClosingWithCip("REV_IT"),
|
|
203
205
|
},
|
|
204
|
-
{
|
|
205
|
-
id: "communication",
|
|
206
|
-
icon: "3p",
|
|
207
|
-
label: "Comunicació",
|
|
208
|
-
type: "tree",
|
|
209
|
-
sortHint: "0120",
|
|
210
|
-
actionMenuItems: [
|
|
211
|
-
{
|
|
212
|
-
icon: "open_in_new",
|
|
213
|
-
label: "SMS",
|
|
214
|
-
callbackFn: async () => {
|
|
215
|
-
const CIP = await getPatientCip(shellApi);
|
|
216
|
-
shellApi.ecapEventManager.publish("MISSATGES_DEV", "NO_TANCAR", {
|
|
217
|
-
CIP: CIP || "",
|
|
218
|
-
TipusMissatge: "SMS",
|
|
219
|
-
});
|
|
220
|
-
},
|
|
221
|
-
},
|
|
222
|
-
{ icon: "open_in_new", label: "eConsulta", callbackFn: () => {} },
|
|
223
|
-
{ icon: "open_in_new", label: "Mail", callbackFn: () => {} },
|
|
224
|
-
{
|
|
225
|
-
icon: "open_in_new",
|
|
226
|
-
label: "Veu IP",
|
|
227
|
-
callbackFn: () => navigateToEcapWithoutClosingWithCip("VOIP"),
|
|
228
|
-
},
|
|
229
|
-
{ icon: "open_in_new", label: "Videoconsulta", callbackFn: () => {} },
|
|
230
|
-
],
|
|
231
|
-
},
|
|
232
206
|
{
|
|
233
207
|
id: "visits",
|
|
234
208
|
icon: "event",
|
|
@@ -271,3 +245,59 @@ export const registerUpperNavMenuViews = () => {
|
|
|
271
245
|
});
|
|
272
246
|
}
|
|
273
247
|
};
|
|
248
|
+
|
|
249
|
+
export const registerCommunicationNavMenuItem = () => {
|
|
250
|
+
shellApi.regionManager.registerView(shellRegions.navigationMenu, {
|
|
251
|
+
id: "communication",
|
|
252
|
+
sortHint: "0120",
|
|
253
|
+
factory: () => {
|
|
254
|
+
const menuItem = new CommunicationActionMenu("3p", "Comunicació");
|
|
255
|
+
|
|
256
|
+
return Promise.resolve(menuItem);
|
|
257
|
+
},
|
|
258
|
+
});
|
|
259
|
+
};
|
|
260
|
+
|
|
261
|
+
export const registerCommunicationMenuActions = () => {
|
|
262
|
+
const communicationItems = [
|
|
263
|
+
{
|
|
264
|
+
id: "1",
|
|
265
|
+
sortHint: "0010",
|
|
266
|
+
icon: "open_in_new",
|
|
267
|
+
label: "SMS",
|
|
268
|
+
callbackFn: async () => {
|
|
269
|
+
const CIP = await getPatientCip(shellApi);
|
|
270
|
+
shellApi.ecapEventManager.publish("MISSATGES_DEV", "NO_TANCAR", {
|
|
271
|
+
CIP: CIP || "",
|
|
272
|
+
TipusMissatge: "SMS",
|
|
273
|
+
});
|
|
274
|
+
},
|
|
275
|
+
},
|
|
276
|
+
{ id: "2", sortHint: "0020", icon: "open_in_new", label: "eConsulta", callbackFn: () => {} },
|
|
277
|
+
{ id: "3", icon: "open_in_new", label: "Mail", callbackFn: () => {} },
|
|
278
|
+
{
|
|
279
|
+
id: "4",
|
|
280
|
+
sortHint: "0030",
|
|
281
|
+
icon: "open_in_new",
|
|
282
|
+
label: "Veu IP",
|
|
283
|
+
callbackFn: () => navigateToEcapWithoutClosingWithCip("VOIP"),
|
|
284
|
+
},
|
|
285
|
+
// { id: "5", sortHint: "0040", icon: "open_in_new", label: "Videoconsulta", callbackFn: () => {} },
|
|
286
|
+
];
|
|
287
|
+
for (const item of communicationItems) {
|
|
288
|
+
shellApi.regionManager.registerView(shellRegions.communicationSidenav, {
|
|
289
|
+
id: item.id,
|
|
290
|
+
sortHint: item.sortHint,
|
|
291
|
+
factory: () => {
|
|
292
|
+
const menuItem = new PrimariaNavItem({
|
|
293
|
+
icon: item.icon,
|
|
294
|
+
label: item.label,
|
|
295
|
+
callbackFn: item.callbackFn,
|
|
296
|
+
});
|
|
297
|
+
|
|
298
|
+
const menuTest = new QuickActionItem(item.icon, item.label, item.callbackFn);
|
|
299
|
+
return Promise.resolve(menuTest);
|
|
300
|
+
},
|
|
301
|
+
});
|
|
302
|
+
}
|
|
303
|
+
};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { LitElement, html } from "lit";
|
|
2
|
+
import { template } from "./template";
|
|
3
|
+
import { customElement, property } from "lit/decorators.js";
|
|
4
|
+
|
|
5
|
+
@customElement("quick-action-item")
|
|
6
|
+
export class QuickActionItem extends LitElement {
|
|
7
|
+
constructor(icon: string, label: string, callbackFn: () => void) {
|
|
8
|
+
super();
|
|
9
|
+
this.icon = icon;
|
|
10
|
+
this.label = label;
|
|
11
|
+
this.callbackFn = callbackFn;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
render() {
|
|
15
|
+
return html`${template(this)}`;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
@property({ type: String }) icon = "";
|
|
19
|
+
@property({ type: String }) label = "";
|
|
20
|
+
@property({ attribute: false }) callbackFn = () => {};
|
|
21
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { html } from "lit";
|
|
2
|
+
import { QuickActionItem } from "./quick-action-item";
|
|
3
|
+
|
|
4
|
+
export const template = (props: QuickActionItem) => {
|
|
5
|
+
return html`
|
|
6
|
+
<dss-action-menu-item @click=${props.callbackFn} notificationsstate="error" rightIcon=${props.icon} label=${props.label}></dss-action-menu-item>
|
|
7
|
+
`;
|
|
8
|
+
};
|
|
@@ -6,6 +6,7 @@ export const shellRegions = {
|
|
|
6
6
|
navigationLowerLeftMenu: "navigation-lower-left-menu",
|
|
7
7
|
quickActions: "quick-actions-region",
|
|
8
8
|
floating: "floating-region",
|
|
9
|
+
communicationSidenav: "communication-sidenav-region",
|
|
9
10
|
};
|
|
10
11
|
|
|
11
12
|
export const clinicalMonitoringRegions = {
|
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
|
}
|
|
@@ -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
|
+
}
|
|
@@ -8,13 +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 { IActivityHistoryCustomFilterGroup, IActivityHistoryDiagnosticsFilter, IActivityHistoryFilter } from "../../model";
|
|
11
|
+
import { IActivityHistoryCustomFilterGroup, IActivityHistoryDiagnosticsFilter, IActivityHistoryFilter, IActivityHistoryUpFilter } from "../../model";
|
|
12
12
|
import { activityHistoryEnabledCommonFiltersSelector } from "../../common-filters/selectors";
|
|
13
13
|
import { SetCommonFilter } from "../../common-filters/set-common-filter/request";
|
|
14
14
|
import { diagnosticFilterSelector } from "../../diagnostic-filters/selectors";
|
|
15
15
|
import { SetDiagnosticFiltersCommand } from "../../diagnostic-filters/set/request";
|
|
16
16
|
import { ResetCommonFilter } from "../../common-filters/reset-common-filter/request";
|
|
17
17
|
import { ResetCustomFilter } from "../../custom-filters/reset-custom-filter/request";
|
|
18
|
+
import { upFilterSelector } from "../../up-filters/selectors";
|
|
19
|
+
import { SetUpFiltersCommand } from "../../up-filters/set/request";
|
|
18
20
|
|
|
19
21
|
//@ts-ignore
|
|
20
22
|
@customElement("active-filters-badges")
|
|
@@ -40,6 +42,9 @@ export class ActiveFiltersBadges extends LitElement {
|
|
|
40
42
|
|
|
41
43
|
@connectedProperty(diagnosticFilterSelector)
|
|
42
44
|
diagnosticFilterEnabled: IActivityHistoryDiagnosticsFilter;
|
|
45
|
+
|
|
46
|
+
@connectedProperty(upFilterSelector)
|
|
47
|
+
upFilterEnabled: IActivityHistoryUpFilter;
|
|
43
48
|
|
|
44
49
|
_onDeleteFilterValue(filterGroupId: string, filterId: string, optionId: string, value: boolean) {
|
|
45
50
|
this.api.broker.send(
|
|
@@ -64,8 +69,17 @@ export class ActiveFiltersBadges extends LitElement {
|
|
|
64
69
|
);
|
|
65
70
|
}
|
|
66
71
|
|
|
72
|
+
_onDeleteUpFilterValue(upValue: string) {
|
|
73
|
+
this.api.broker.send(
|
|
74
|
+
new SetUpFiltersCommand([
|
|
75
|
+
...this.upFilterEnabled.enabledValues.filter((v) => v !== upValue),
|
|
76
|
+
]),
|
|
77
|
+
);
|
|
78
|
+
}
|
|
79
|
+
|
|
67
80
|
resetFilters() {
|
|
68
81
|
this.api.broker.send(new SetDiagnosticFiltersCommand([]));
|
|
82
|
+
this.api.broker.send(new SetUpFiltersCommand([]));
|
|
69
83
|
this.api.broker.send(new ResetCommonFilter());
|
|
70
84
|
this.api.broker.send(new ResetCustomFilter());
|
|
71
85
|
}
|
|
@@ -38,13 +38,25 @@ 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) => {
|
|
44
55
|
if (
|
|
45
56
|
props.enabledFilters.length === 0 &&
|
|
46
57
|
props.enabledCommonFilters.length === 0 &&
|
|
47
|
-
props.diagnosticFilterEnabled.enabledValues.length === 0
|
|
58
|
+
props.diagnosticFilterEnabled.enabledValues.length === 0 &&
|
|
59
|
+
props.upFilterEnabled.enabledValues.length === 0
|
|
48
60
|
)
|
|
49
61
|
return nothing;
|
|
50
62
|
|
|
@@ -85,6 +97,38 @@ export const template = (props: ActiveFiltersBadges) => {
|
|
|
85
97
|
}
|
|
86
98
|
}
|
|
87
99
|
|
|
100
|
+
const up = props.upFilterEnabled;
|
|
101
|
+
|
|
102
|
+
if (up) {
|
|
103
|
+
const { title, values, enabledValues } = up;
|
|
104
|
+
const selectedOptions = values.filter((opt) => enabledValues.includes(opt.value));
|
|
105
|
+
|
|
106
|
+
if (selectedOptions.length > 0) {
|
|
107
|
+
let titleAddedToVisible = false;
|
|
108
|
+
let titleAddedToHidden = false;
|
|
109
|
+
|
|
110
|
+
for (const option of selectedOptions) {
|
|
111
|
+
const chip = renderUpChip(option.value, option.label, props);
|
|
112
|
+
|
|
113
|
+
if (visibleCount < MAX_VISIBLE_CHIPS) {
|
|
114
|
+
if (!titleAddedToVisible) {
|
|
115
|
+
visibleChips.push(renderFilterTitle(title));
|
|
116
|
+
titleAddedToVisible = true;
|
|
117
|
+
}
|
|
118
|
+
visibleChips.push(chip);
|
|
119
|
+
visibleCount++;
|
|
120
|
+
} else {
|
|
121
|
+
if (!titleAddedToHidden) {
|
|
122
|
+
hiddenElements.push(renderFilterTitle(title));
|
|
123
|
+
titleAddedToHidden = true;
|
|
124
|
+
}
|
|
125
|
+
hiddenElements.push(chip);
|
|
126
|
+
hiddenChips.push(chip);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
|
|
88
132
|
for (const filter of props.enabledCommonFilters) {
|
|
89
133
|
const chip = renderCommonChip(filter, props);
|
|
90
134
|
|
|
@@ -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
|
}
|
|
@@ -22,6 +22,12 @@ const filterTemplates = {
|
|
|
22
22
|
<input slot="input" id="checkboxStory-${id}" type="checkbox" ?disabled=${!isEnabled}>
|
|
23
23
|
<label slot="label" for="checkboxStory-${id}">${title}</label>
|
|
24
24
|
</dss-checkbox>`,
|
|
25
|
+
|
|
26
|
+
[ActivityHistoryFilterType.Dropdown]: (id, title, handleChange, isSelected, isEnabled) => html`
|
|
27
|
+
<dss-input-dropdown type="default" .checked=${isSelected} @onChange=${(e) => handleChange(e)}>
|
|
28
|
+
<input slot="input" id="dropdownStory-${id}" type="text" ?disabled=${!isEnabled}>
|
|
29
|
+
<label slot="label" for="dropdownStory-${id}">${title}</label>
|
|
30
|
+
</dss-input-dropdown>`,
|
|
25
31
|
};
|
|
26
32
|
|
|
27
33
|
const getFilterTemplate = (
|
|
@@ -33,7 +39,7 @@ const getFilterTemplate = (
|
|
|
33
39
|
const isCustom = !!filterGroup?.id && !!option;
|
|
34
40
|
//const id = isCustom ? `${filterGroupId}-${filter.id}-${option.id}` : filter.id;
|
|
35
41
|
const id = crypto.randomUUID();
|
|
36
|
-
const title = isCustom ? option.title : filter.title;
|
|
42
|
+
const title = isCustom ? option.title || option.id : filter.title;
|
|
37
43
|
|
|
38
44
|
const handleChange = (e) => {
|
|
39
45
|
if (filter.singleOption) onChangeValue(filterGroup?.id, filter.id, null, e.detail);
|
|
@@ -67,6 +73,15 @@ export const template = (props: ActivityHistoryFilters) =>
|
|
|
67
73
|
</dss-input-dropdown>
|
|
68
74
|
</div>`
|
|
69
75
|
}
|
|
76
|
+
${
|
|
77
|
+
props.upFilter &&
|
|
78
|
+
html`<div class="filter">
|
|
79
|
+
<dss-input-dropdown icon="" multiple dropdownFixed type="default" .elements=${props.upFilter?.values} @onInputDropdownChange=${props._handleUpFilterChange} .selectedValue=${props.upFilterEnabledValues} selectorStyle=${"max-height: 450px"}>
|
|
80
|
+
<label slot="label" for="up-filter">${props.upFilter.title}</label>
|
|
81
|
+
<input id="up-filter" slot="input" type="text" class="dss-input" autocomplete="off"/>
|
|
82
|
+
</dss-input-dropdown>
|
|
83
|
+
</div>`
|
|
84
|
+
}
|
|
70
85
|
${repeat(
|
|
71
86
|
props.customFilterGroups,
|
|
72
87
|
(group: IActivityHistoryCustomFilterGroup) => html`
|
|
@@ -91,17 +106,38 @@ const customFilterTemplate = (
|
|
|
91
106
|
filter: IActivityHistoryCustomFilter,
|
|
92
107
|
props: ActivityHistoryFilters,
|
|
93
108
|
group: IActivityHistoryCustomFilterGroup,
|
|
94
|
-
) =>
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
109
|
+
) => {
|
|
110
|
+
if (filter.type === ActivityHistoryFilterType.Dropdown) {
|
|
111
|
+
const elements = filter?.options.map(option => ({ value: option.id, label: option.title }));
|
|
112
|
+
return html`
|
|
113
|
+
<dss-input-dropdown
|
|
114
|
+
icon=""
|
|
115
|
+
multiple
|
|
116
|
+
dropdownFixed
|
|
117
|
+
type="default"
|
|
118
|
+
.elements=${elements}
|
|
119
|
+
@onInputDropdownChange=${(e) =>
|
|
120
|
+
props._onChangeCustomFilterValue(group.id, filter.id, e.detail.selectedValue[e.detail.selectedValue.length-1], true)
|
|
121
|
+
}
|
|
122
|
+
.selectedValue=${filter.enabledValues}
|
|
123
|
+
selectorStyle="max-height: 450px"
|
|
124
|
+
>
|
|
125
|
+
<label slot="label">${filter.title}</label>
|
|
126
|
+
<input slot="input" type="text" class="dss-input" autocomplete="off" />
|
|
127
|
+
</dss-input-dropdown>
|
|
128
|
+
`;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
return filter.singleOption
|
|
132
|
+
? getFilterTemplate(filter, props._onChangeCustomFilterValue.bind(props), group)
|
|
133
|
+
: html`
|
|
134
|
+
<primaria-accordion isOpen>
|
|
135
|
+
<div class="custom-filter-title" slot="title">${filter.title}</div>
|
|
136
|
+
<div class="custom-filter-content" slot="content">
|
|
137
|
+
${filter.options.map(option =>
|
|
138
|
+
getFilterTemplate(filter, props._onChangeCustomFilterValue.bind(props), group, option)
|
|
139
|
+
)}
|
|
140
|
+
</div>
|
|
141
|
+
</primaria-accordion>
|
|
142
|
+
`;
|
|
143
|
+
};
|
|
@@ -14,6 +14,8 @@ import { bootstrapAddDiagnosticFilter, teardownAddDiagnosticFilter } from "./dia
|
|
|
14
14
|
import { bootstrapSetDiagnosticFilter, teardownSetDiagnosticFilter } from "./diagnostic-filters/set/bootstrapper";
|
|
15
15
|
import { bootstrapResetCommonFilter, teardownResetCommonFilter } from "./common-filters/reset-common-filter/bootstrapper";
|
|
16
16
|
import { bootstrapResetCustomFilter, teardownResetCustomFilter } from "./custom-filters/reset-custom-filter/bootstrapper";
|
|
17
|
+
import { bootstrapAddUpFilter, teardownAddUpFilter } from "./up-filters/add/bootstrapper";
|
|
18
|
+
import { bootstrapSetUpFilter, teardownSetUpFilter } from "./up-filters/set/bootstrapper";
|
|
17
19
|
|
|
18
20
|
export const bootstrapFilters = (broker: BrokerExtensions) => {
|
|
19
21
|
bootstrapSetCommonFilter(broker);
|
|
@@ -24,6 +26,8 @@ export const bootstrapFilters = (broker: BrokerExtensions) => {
|
|
|
24
26
|
bootstrapSetDiagnosticFilter(broker);
|
|
25
27
|
bootstrapResetCommonFilter(broker);
|
|
26
28
|
bootstrapResetCustomFilter(broker);
|
|
29
|
+
bootstrapAddUpFilter(broker);
|
|
30
|
+
bootstrapSetUpFilter(broker);
|
|
27
31
|
};
|
|
28
32
|
|
|
29
33
|
export const teardownFilters = () => {
|
|
@@ -35,4 +39,6 @@ export const teardownFilters = () => {
|
|
|
35
39
|
teardownSetDiagnosticFilter();
|
|
36
40
|
teardownResetCommonFilter();
|
|
37
41
|
teardownResetCustomFilter();
|
|
42
|
+
teardownAddUpFilter();
|
|
43
|
+
teardownSetUpFilter();
|
|
38
44
|
};
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
export function resetCustomFilterValuesReducer(state) {
|
|
2
2
|
state.filters = state.filters.map((f) => {
|
|
3
|
-
if (f.id !== "common" && f.id !== "history-diagnostics") {
|
|
4
|
-
console.log("filter", f);
|
|
3
|
+
if (f.id !== "common" && f.id !== "history-diagnostics" && f.id !== "history-up") {
|
|
5
4
|
return {
|
|
6
5
|
...f,
|
|
7
6
|
filters: f.filters.map((ff) => ({ ...ff, enabled: false, enabledValues: [] })),
|
|
@@ -6,6 +6,7 @@ type Constructor<T> = new (...args: any[]) => T;
|
|
|
6
6
|
export enum ActivityHistoryFilterType {
|
|
7
7
|
Switch = "switch",
|
|
8
8
|
Checkbox = "checkbox",
|
|
9
|
+
Dropdown = "dropdown",
|
|
9
10
|
}
|
|
10
11
|
|
|
11
12
|
export enum ActivityHistoryFilterOperation {
|
|
@@ -56,14 +57,11 @@ export interface IActivityHistoryCustomFilter {
|
|
|
56
57
|
}
|
|
57
58
|
|
|
58
59
|
export const isCommonFilterGroup = (group: IActivityHistoryFilter) => group.id === "common";
|
|
59
|
-
export const isNotCommonFilterGroup = (group: IActivityHistoryFilter) =>
|
|
60
|
-
|
|
61
|
-
export const
|
|
62
|
-
|
|
63
|
-
export const
|
|
64
|
-
!isDiagnosticFilter(filter);
|
|
65
|
-
export const isCustomFilter = (filter: IActivityHistoryFilter) =>
|
|
66
|
-
!isCommonFilterGroup(filter) && !isDiagnosticFilter(filter);
|
|
60
|
+
export const isNotCommonFilterGroup = (group: IActivityHistoryFilter) => !isCommonFilterGroup(group);
|
|
61
|
+
export const isDiagnosticFilter = (filter: IActivityHistoryFilter) => filter.id === diagnosticsfilterId;
|
|
62
|
+
export const isNotDiagnosticFilter = (filter: IActivityHistoryFilter) => !isDiagnosticFilter(filter);
|
|
63
|
+
export const isCustomFilter = (filter: IActivityHistoryFilter) => !isCommonFilterGroup(filter) && !isDiagnosticFilter(filter) && !isUpFilter(filter);
|
|
64
|
+
export const isUpFilter = (filter: IActivityHistoryFilter) => filter.id === upFilterId;
|
|
67
65
|
export interface IActivityHistoryDiagnosticsFilter {
|
|
68
66
|
id: string;
|
|
69
67
|
title: string;
|
|
@@ -71,6 +69,14 @@ export interface IActivityHistoryDiagnosticsFilter {
|
|
|
71
69
|
enabledValues: string[];
|
|
72
70
|
}
|
|
73
71
|
|
|
72
|
+
export interface IActivityHistoryUpFilter {
|
|
73
|
+
id: string;
|
|
74
|
+
title: string;
|
|
75
|
+
values: { label: string; value: string }[];
|
|
76
|
+
enabledValues: string[];
|
|
77
|
+
}
|
|
78
|
+
|
|
74
79
|
export const diagnosticsfilterId = "history-diagnostics";
|
|
75
80
|
export const relevantFilterId = "history-relevant";
|
|
76
81
|
export const ownFilterId = "history-own";
|
|
82
|
+
export const upFilterId = "history-up";
|
|
@@ -10,6 +10,8 @@ import { addDiagnosticFiltersReducer } from "./diagnostic-filters/add/reducer";
|
|
|
10
10
|
import { setDiagnosticFilterValuesReducer } from "./diagnostic-filters/set/reducer";
|
|
11
11
|
import { resetCommonFilterValuesReducer } from "./common-filters/reset-common-filter/reducer";
|
|
12
12
|
import { resetCustomFilterValuesReducer } from "./custom-filters/reset-custom-filter/reducer";
|
|
13
|
+
import { addUpFiltersReducer } from "./up-filters/add/reducer";
|
|
14
|
+
import { setUpFilterValuesReducer } from "./up-filters/set/reducer";
|
|
13
15
|
|
|
14
16
|
export const activityHistoryFiltersSlice = createSlice({
|
|
15
17
|
name: "activity-history-filters",
|
|
@@ -27,5 +29,7 @@ export const activityHistoryFiltersSlice = createSlice({
|
|
|
27
29
|
resetCustomFilterValues: resetCustomFilterValuesReducer,
|
|
28
30
|
addDiagnosticFilters: addDiagnosticFiltersReducer,
|
|
29
31
|
setDiagnosticFilterValues: setDiagnosticFilterValuesReducer,
|
|
32
|
+
addUpFilters: addUpFiltersReducer,
|
|
33
|
+
setUpFilterValues: setUpFilterValuesReducer,
|
|
30
34
|
},
|
|
31
35
|
});
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { BrokerExtensions } from "@primaria/plugins-core";
|
|
2
|
+
import { BrokerDisposableHandler } from "../../../../../../api/broker/primaria-broker";
|
|
3
|
+
import { AddUpFiltersHandler } from "./handler";
|
|
4
|
+
import { AddUpFiltersCommand } from "./request";
|
|
5
|
+
|
|
6
|
+
let request: BrokerDisposableHandler;
|
|
7
|
+
|
|
8
|
+
export const bootstrapAddUpFilter = (broker: BrokerExtensions) => {
|
|
9
|
+
request = broker.registerRequest(AddUpFiltersCommand, AddUpFiltersHandler);
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
export const teardownAddUpFilter = () => {
|
|
13
|
+
request?.dispose();
|
|
14
|
+
};
|