@uxland/primary-shell 5.6.3 → 5.6.5

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.
Files changed (33) hide show
  1. package/dist/index.js +191 -109
  2. package/dist/index.js.map +1 -1
  3. package/dist/index.umd.cjs +46 -33
  4. package/dist/index.umd.cjs.map +1 -1
  5. package/dist/primary/shell/src/internal-plugins/activity-history/activity-history-item/add/handle-busy/is-grouping-busy/component.d.ts +6 -0
  6. package/dist/primary/shell/src/internal-plugins/activity-history/activity-history-item/add/handle-busy/is-grouping-busy/template.d.ts +3 -0
  7. package/dist/primary/shell/src/internal-plugins/activity-history/activity-history-item/filter/UI/activity-history-filters/activity-history-filters.d.ts +1 -0
  8. package/dist/primary/shell/src/internal-plugins/activity-history/activity-history-item/filter/custom-filters/set-custom-filter-all-values/actions.d.ts +1 -0
  9. package/dist/primary/shell/src/internal-plugins/activity-history/activity-history-item/filter/custom-filters/set-custom-filter-all-values/bootstrapper.d.ts +4 -0
  10. package/dist/primary/shell/src/internal-plugins/activity-history/activity-history-item/filter/custom-filters/set-custom-filter-all-values/handler.d.ts +6 -0
  11. package/dist/primary/shell/src/internal-plugins/activity-history/activity-history-item/filter/custom-filters/set-custom-filter-all-values/reducer.d.ts +4 -0
  12. package/dist/primary/shell/src/internal-plugins/activity-history/activity-history-item/filter/custom-filters/set-custom-filter-all-values/request.d.ts +9 -0
  13. package/dist/primary/shell/src/internal-plugins/activity-history/activity-history-item/filter/slice.d.ts +2 -0
  14. package/dist/primary/shell/src/internal-plugins/activity-history/localization.d.ts +5 -0
  15. package/package.json +1 -1
  16. package/src/internal-plugins/activity-history/activity-history-item/add/add-history-item/handler.ts +2 -2
  17. package/src/internal-plugins/activity-history/activity-history-item/add/add-history-items/handler.ts +2 -2
  18. package/src/internal-plugins/activity-history/activity-history-item/add/handle-busy/is-grouping-busy/component.ts +15 -0
  19. package/src/internal-plugins/activity-history/activity-history-item/add/handle-busy/is-grouping-busy/styles.css +8 -0
  20. package/src/internal-plugins/activity-history/activity-history-item/add/handle-busy/is-grouping-busy/template.ts +10 -0
  21. package/src/internal-plugins/activity-history/activity-history-item/filter/UI/activity-history-filters/activity-history-filters.ts +11 -0
  22. package/src/internal-plugins/activity-history/activity-history-item/filter/UI/activity-history-filters/template.ts +1 -1
  23. package/src/internal-plugins/activity-history/activity-history-item/filter/bootstrapper.ts +3 -0
  24. package/src/internal-plugins/activity-history/activity-history-item/filter/custom-filters/set-custom-filter-all-values/actions.ts +3 -0
  25. package/src/internal-plugins/activity-history/activity-history-item/filter/custom-filters/set-custom-filter-all-values/bootstrapper.ts +14 -0
  26. package/src/internal-plugins/activity-history/activity-history-item/filter/custom-filters/set-custom-filter-all-values/handler.ts +13 -0
  27. package/src/internal-plugins/activity-history/activity-history-item/filter/custom-filters/set-custom-filter-all-values/reducer.ts +21 -0
  28. package/src/internal-plugins/activity-history/activity-history-item/filter/custom-filters/set-custom-filter-all-values/request.ts +9 -0
  29. package/src/internal-plugins/activity-history/activity-history-item/filter/custom-filters/set-custom-filter-value/reducer.ts +1 -1
  30. package/src/internal-plugins/activity-history/activity-history-item/filter/slice.ts +2 -0
  31. package/src/internal-plugins/activity-history/activity-history-item/list/UI/timeline/activity-history-timeline.ts +12 -5
  32. package/src/internal-plugins/activity-history/activity-history-item/list/UI/timeline/template.ts +20 -13
  33. package/src/internal-plugins/activity-history/localization.ts +5 -0
@@ -0,0 +1,6 @@
1
+ import { LitElement } from 'lit';
2
+
3
+ export declare class ActivityHistoryIsGroupingBusy extends LitElement {
4
+ static styles: import('lit').CSSResult;
5
+ render(): import('lit').TemplateResult<1>;
6
+ }
@@ -0,0 +1,3 @@
1
+ import { ActivityHistoryIsGroupingBusy } from './component';
2
+
3
+ export declare const template: (_props: ActivityHistoryIsGroupingBusy) => import('lit').TemplateResult<1>;
@@ -19,6 +19,7 @@ export declare class ActivityHistoryFilters extends LitElement {
19
19
  _onChangeCommonFilterValue(filterId: string, value: boolean): void;
20
20
  _onChangeCustomFilterGroupValue(filterGroupId: string, value: boolean): void;
21
21
  _onChangeCustomFilterValue(filterGroupId: string, filterId: string, optionId: string, value: boolean): void;
22
+ _onChangeCustomFilterAllValues(filterGroupId: string, filterId: string, values: string[]): void;
22
23
  _handleDiagnosticFilterChange(e: CustomEvent): void;
23
24
  _handleUpFilterChange(e: CustomEvent): void;
24
25
  }
@@ -0,0 +1 @@
1
+ export declare const setCustomFilterAllValues: import('@reduxjs/toolkit').ActionCreatorWithPayload<import('./request').SetCustomFilterAllValuesPayload, "activity-history-filters/setCustomFilterAllValues">;
@@ -0,0 +1,4 @@
1
+ import { BrokerExtensions } from '@primaria/plugins-core';
2
+
3
+ export declare const bootstrapSetCustomFilterAllValues: (broker: BrokerExtensions) => void;
4
+ export declare const teardownSetCustomFilterAllValues: () => void;
@@ -0,0 +1,6 @@
1
+ import { StoreBaseHandler } from '../../../../infrastructure/base-handlers';
2
+ import { SetCustomFilterAllValues } from './request';
3
+
4
+ export declare class SetCustomFilterAllValuesHandler extends StoreBaseHandler {
5
+ handle(request: SetCustomFilterAllValues): Promise<void>;
6
+ }
@@ -0,0 +1,4 @@
1
+ import { PayloadAction } from '@reduxjs/toolkit';
2
+ import { SetCustomFilterAllValuesPayload } from './request';
3
+
4
+ export declare function setCustomFilterAllValuesReducer(state: any, action: PayloadAction<SetCustomFilterAllValuesPayload>): void;
@@ -0,0 +1,9 @@
1
+ export interface SetCustomFilterAllValuesPayload {
2
+ filterGroupId: string;
3
+ filterId: string;
4
+ values: string[];
5
+ }
6
+ export declare class SetCustomFilterAllValues {
7
+ payload: SetCustomFilterAllValuesPayload;
8
+ constructor(payload: SetCustomFilterAllValuesPayload);
9
+ }
@@ -9,6 +9,7 @@ import { setDiagnosticFilterValuesReducer } from './diagnostic-filters/set/reduc
9
9
  import { addUpFiltersReducer } from './up-filters/add/reducer';
10
10
  import { setUpFilterValuesReducer } from './up-filters/set/reducer';
11
11
  import { resetFiltersReducer } from './reset/reducer';
12
+ import { setCustomFilterAllValuesReducer } from './custom-filters/set-custom-filter-all-values/reducer';
12
13
 
13
14
  export declare const activityHistoryFiltersSlice: import('@reduxjs/toolkit').Slice<{
14
15
  searchString: string;
@@ -19,6 +20,7 @@ export declare const activityHistoryFiltersSlice: import('@reduxjs/toolkit').Sli
19
20
  addCustomFilters: typeof addCustomFiltersReducer;
20
21
  setCustomFilterGroupValue: typeof setCustomFilterGroupValueReducer;
21
22
  setCustomFilterValue: typeof setCustomFilterValueReducer;
23
+ setCustomFilterAllValues: typeof setCustomFilterAllValuesReducer;
22
24
  addDiagnosticFilters: typeof addDiagnosticFiltersReducer;
23
25
  setDiagnosticFilterValues: typeof setDiagnosticFilterValuesReducer;
24
26
  addUpFilters: typeof addUpFiltersReducer;
@@ -18,6 +18,11 @@ export declare const locales: {
18
18
  goToDate: string;
19
19
  busyEntriesLoading: string;
20
20
  noResults: string;
21
+ noData: {
22
+ title: string;
23
+ description: string;
24
+ };
25
+ isGrouping: string;
21
26
  searchBarResults: string;
22
27
  actions: {
23
28
  cronogram: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@uxland/primary-shell",
3
- "version": "5.6.3",
3
+ "version": "5.6.5",
4
4
  "description": "Primaria Shell",
5
5
  "author": "UXLand <dev@uxland.es>",
6
6
  "homepage": "https://github.com/uxland/harmonix/tree/app#readme",
@@ -9,14 +9,14 @@ export class AddHistoryItemHandler extends StoreBaseHandler {
9
9
  async handle(payload: AddHistoryItemPayload) {
10
10
  try {
11
11
  ensureAreValidBasicActivityHistoryItems([payload.item]);
12
+ handleAddDiagnosticsFilter([payload.item], this.store);
13
+ handleAddUpFilter([payload.item], this.store);
12
14
  this.store.dispatch(
13
15
  addActivityHistoryItem({
14
16
  id: payload.entityId,
15
17
  item: payload.item,
16
18
  }),
17
19
  );
18
- handleAddDiagnosticsFilter([payload.item], this.store);
19
- handleAddUpFilter([payload.item], this.store);
20
20
  } catch (e) {
21
21
  console.log(e.message);
22
22
  }
@@ -9,6 +9,8 @@ export class AddHistoryItemsHandler extends StoreBaseHandler {
9
9
  async handle(payload: AddHistoryItemsPayload) {
10
10
  try {
11
11
  const validItems = validateAndFilterBasicItems(payload.items);
12
+ handleAddDiagnosticsFilter(validItems, this.store);
13
+ handleAddUpFilter(validItems, this.store);
12
14
  this.store.dispatch(
13
15
  addActivityHistoryItems({
14
16
  id: payload.entityId,
@@ -17,8 +19,6 @@ export class AddHistoryItemsHandler extends StoreBaseHandler {
17
19
  searchPredicate: payload.searchPredicate,
18
20
  }),
19
21
  );
20
- handleAddDiagnosticsFilter(validItems, this.store);
21
- handleAddUpFilter(validItems, this.store);
22
22
  } catch (e) {
23
23
  console.log(e.message);
24
24
  }
@@ -0,0 +1,15 @@
1
+ import { LitElement, html, css, unsafeCSS } from "lit";
2
+ import { customElement } from "lit/decorators.js";
3
+ import styles from "./styles.css?inline";
4
+ import { template } from "./template";
5
+
6
+ @customElement("activity-history-is-grouping-busy")
7
+ export class ActivityHistoryIsGroupingBusy extends LitElement {
8
+ static styles = css`
9
+ ${unsafeCSS(styles)}
10
+ `;
11
+
12
+ render() {
13
+ return template(this);
14
+ }
15
+ }
@@ -0,0 +1,8 @@
1
+ .grouping-busy-container {
2
+ display: flex;
3
+ flex-direction: row;
4
+ align-items: center;
5
+ gap: 24px;
6
+ justify-content: center;
7
+ padding-top:16px
8
+ }
@@ -0,0 +1,10 @@
1
+ import { html } from "lit";
2
+ import { ActivityHistoryIsGroupingBusy } from "./component";
3
+ import { translate } from "../../../../localization";
4
+
5
+ export const template = (_props: ActivityHistoryIsGroupingBusy) => html`
6
+ <div class="grouping-busy-container">
7
+ <dss-spinner size="sm"></dss-spinner>
8
+ <div>${translate("isGrouping")}</div>
9
+ </div>
10
+ `;
@@ -21,6 +21,7 @@ import { diagnosticFilterEnabledValuesSelector, diagnosticFilterSelector } from
21
21
  import { SetDiagnosticFiltersCommand } from "../../diagnostic-filters/set/request";
22
22
  import { upFilterEnabledValuesSelector, upFilterSelector } from "../../up-filters/selectors";
23
23
  import { SetUpFiltersCommand } from "../../up-filters/set/request";
24
+ import { SetCustomFilterAllValues } from "../../custom-filters/set-custom-filter-all-values/request";
24
25
 
25
26
  //@ts-ignore
26
27
  @customElement("activity-history-filters")
@@ -89,6 +90,16 @@ export class ActivityHistoryFilters extends LitElement {
89
90
  );
90
91
  }
91
92
 
93
+ _onChangeCustomFilterAllValues(filterGroupId: string, filterId: string, values: string[]) {
94
+ this.api.broker.send(
95
+ new SetCustomFilterAllValues({
96
+ filterGroupId,
97
+ filterId,
98
+ values: values,
99
+ }),
100
+ );
101
+ }
102
+
92
103
  _handleDiagnosticFilterChange(e: CustomEvent) {
93
104
  const selectedValues = e.detail.selectedValue;
94
105
  this.api.broker.send(new SetDiagnosticFiltersCommand(selectedValues));
@@ -118,7 +118,7 @@ const customFilterTemplate = (
118
118
  type="default"
119
119
  .elements=${elements}
120
120
  @onInputDropdownChange=${(e) =>
121
- props._onChangeCustomFilterValue(group.id, filter.id, e.detail.selectedValue[e.detail.selectedValue.length-1], true)
121
+ props._onChangeCustomFilterAllValues(group.id, filter.id, e.detail.selectedValue)
122
122
  }
123
123
  .selectedValue=${filter.enabledValues}
124
124
  selectorStyle="max-height: 450px"
@@ -15,12 +15,14 @@ import { bootstrapSetDiagnosticFilter, teardownSetDiagnosticFilter } from "./dia
15
15
  import { bootstrapAddUpFilter, teardownAddUpFilter } from "./up-filters/add/bootstrapper";
16
16
  import { bootstrapSetUpFilter, teardownSetUpFilter } from "./up-filters/set/bootstrapper";
17
17
  import { bootstrapResetFilters, teardownResetFilters } from "./reset/bootstrapper";
18
+ import { bootstrapSetCustomFilterAllValues, teardownSetCustomFilterAllValues } from "./custom-filters/set-custom-filter-all-values/bootstrapper";
18
19
 
19
20
  export const bootstrapFilters = (broker: BrokerExtensions) => {
20
21
  bootstrapSetCommonFilter(broker);
21
22
  bootstrapAddCustomFilter(broker);
22
23
  bootstrapSetCustomFilterGroup(broker);
23
24
  bootstrapSetCustomFilterValue(broker);
25
+ bootstrapSetCustomFilterAllValues(broker);
24
26
  bootstrapAddDiagnosticFilter(broker);
25
27
  bootstrapSetDiagnosticFilter(broker);
26
28
  bootstrapAddUpFilter(broker);
@@ -33,6 +35,7 @@ export const teardownFilters = () => {
33
35
  teardownAddCustomFilter();
34
36
  teardownSetCustomFilterGroup();
35
37
  teardownSetCustomFilterValue();
38
+ teardownSetCustomFilterAllValues();
36
39
  teardownAddDiagnosticFilter();
37
40
  teardownSetDiagnosticFilter();
38
41
  teardownAddUpFilter();
@@ -0,0 +1,3 @@
1
+ import { activityHistoryFiltersSlice } from "../../slice";
2
+
3
+ export const { setCustomFilterAllValues } = activityHistoryFiltersSlice.actions;
@@ -0,0 +1,14 @@
1
+ import { BrokerExtensions } from "@primaria/plugins-core";
2
+ import { BrokerDisposableHandler } from "../../../../../../api/broker/primaria-broker";
3
+ import { SetCustomFilterAllValues } from "./request";
4
+ import { SetCustomFilterAllValuesHandler } from "./handler";
5
+
6
+ let request: BrokerDisposableHandler;
7
+
8
+ export const bootstrapSetCustomFilterAllValues = (broker: BrokerExtensions) => {
9
+ request = broker.registerRequest(SetCustomFilterAllValues, SetCustomFilterAllValuesHandler);
10
+ };
11
+
12
+ export const teardownSetCustomFilterAllValues = () => {
13
+ request?.dispose();
14
+ };
@@ -0,0 +1,13 @@
1
+ import { StoreBaseHandler } from "../../../../infrastructure/base-handlers";
2
+ import { setCustomFilterAllValues } from "./actions";
3
+ import { SetCustomFilterAllValues } from "./request";
4
+
5
+ export class SetCustomFilterAllValuesHandler extends StoreBaseHandler {
6
+ async handle(request: SetCustomFilterAllValues) {
7
+ try {
8
+ this.store.dispatch(setCustomFilterAllValues(request.payload));
9
+ } catch (e) {
10
+ console.log(e.message);
11
+ }
12
+ }
13
+ }
@@ -0,0 +1,21 @@
1
+ import { PayloadAction } from "@reduxjs/toolkit";
2
+ import { SetCustomFilterAllValuesPayload } from "./request";
3
+
4
+ export function setCustomFilterAllValuesReducer(
5
+ state,
6
+ action: PayloadAction<SetCustomFilterAllValuesPayload>,
7
+ ) {
8
+ state.filters = state.filters.map((f) => {
9
+ if (f.id === action.payload.filterGroupId) {
10
+ return {
11
+ ...f,
12
+ filters: f.filters.map((ff) =>
13
+ ff.id === action.payload.filterId
14
+ ? { ...ff, enabledValues: action.payload.values }
15
+ : ff,
16
+ ),
17
+ };
18
+ }
19
+ return f;
20
+ });
21
+ }
@@ -0,0 +1,9 @@
1
+ export interface SetCustomFilterAllValuesPayload {
2
+ filterGroupId: string;
3
+ filterId: string;
4
+ values: string[];
5
+ }
6
+
7
+ export class SetCustomFilterAllValues {
8
+ constructor(public payload: SetCustomFilterAllValuesPayload) {}
9
+ }
@@ -1,6 +1,6 @@
1
1
  import { PayloadAction } from "@reduxjs/toolkit";
2
2
  import { SetCustomFilterValuePayload } from "./request";
3
- import { IActivityHistoryCustomFilter, IActivityHistoryCustomFilterGroup } from "../../model";
3
+ import { IActivityHistoryCustomFilter } from "../../model";
4
4
 
5
5
  export function setCustomFilterValueReducer(
6
6
  state,
@@ -11,6 +11,7 @@ import { setDiagnosticFilterValuesReducer } from "./diagnostic-filters/set/reduc
11
11
  import { addUpFiltersReducer } from "./up-filters/add/reducer";
12
12
  import { setUpFilterValuesReducer } from "./up-filters/set/reducer";
13
13
  import { resetFiltersReducer } from "./reset/reducer";
14
+ import { setCustomFilterAllValuesReducer } from "./custom-filters/set-custom-filter-all-values/reducer";
14
15
 
15
16
  export const activityHistoryFiltersSlice = createSlice({
16
17
  name: "activity-history-filters",
@@ -24,6 +25,7 @@ export const activityHistoryFiltersSlice = createSlice({
24
25
  addCustomFilters: addCustomFiltersReducer,
25
26
  setCustomFilterGroupValue: setCustomFilterGroupValueReducer,
26
27
  setCustomFilterValue: setCustomFilterValueReducer,
28
+ setCustomFilterAllValues: setCustomFilterAllValuesReducer,
27
29
  addDiagnosticFilters: addDiagnosticFiltersReducer,
28
30
  setDiagnosticFilterValues: setDiagnosticFilterValuesReducer,
29
31
  addUpFilters: addUpFiltersReducer,
@@ -1,5 +1,5 @@
1
1
  import { LitElement, PropertyValues, css, html, unsafeCSS } from "lit";
2
- import { customElement, query } from "lit/decorators.js";
2
+ import { customElement, query, state } 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";
@@ -52,11 +52,18 @@ export class ActivityHistoryTimeline extends LitElement {
52
52
 
53
53
  @query(".virtualizer") private _virtualizer!: HTMLElement;
54
54
 
55
- _hasUpdatedOnce = false;
55
+ @state()
56
+ renderGroupsControlTimeExpired = false;
56
57
 
57
- firstUpdated(_changeProps: PropertyValues) {
58
- super.firstUpdated(_changeProps);
59
- this._hasUpdatedOnce = true;
58
+ connectedCallback(): void {
59
+ super.connectedCallback();
60
+ setTimeout(() => {
61
+ this.renderGroupsControlTimeExpired = true;
62
+ }, 8000);
63
+ }
64
+
65
+ disconnectedCallback(): void {
66
+ super.disconnectedCallback();
60
67
  }
61
68
 
62
69
  async updated(changedProperties) {
@@ -9,7 +9,6 @@ import {
9
9
  IActivityHistoryGroup,
10
10
  IActivityHistoryItem,
11
11
  IActivityHistoryItemWithComponent,
12
- IActivityHistorySubGroup,
13
12
  } from "../../../domain/model";
14
13
  import { translate } from "../../../../localization";
15
14
  import { hasItemDivider, shouldShowRole } from "../../../domain/business-rules";
@@ -17,11 +16,9 @@ import {
17
16
  ActivityHistoryEntry,
18
17
  mergeHistoryItemsAndSubgroups,
19
18
  } from "../../merge-history-items-and-subgroups/merge-history-items-and-subgroups";
19
+ import "../../../add/handle-busy/is-grouping-busy/component";
20
20
 
21
21
  export const template = (props: ActivityHistoryTimeline) => {
22
- if (!props._hasUpdatedOnce) {
23
- return html`<div class="container"></div>`;
24
- }
25
22
  return html`
26
23
  <div class="container">
27
24
  <activity-history-full-data-error></activity-history-full-data-error>
@@ -78,20 +75,30 @@ export const template = (props: ActivityHistoryTimeline) => {
78
75
  `}
79
76
  ></lit-virtualizer>
80
77
  `
81
- : !props.isCollectionInitialState && !props.isSomeCollectionLoadedAndOtherLoading
82
- ? html`
83
- <dss-user-feedback
84
- class="feedback"
85
- imagesrc=${notFound}
86
- title=${translate("noResults")}>
87
- </dss-user-feedback>
88
- `
89
- : nothing
78
+ : noGroupsTemplate(props)
90
79
  }
91
80
  </div>
92
81
  `;
93
82
  };
94
83
 
84
+ const noGroupsTemplate = (props: ActivityHistoryTimeline)=> html `
85
+ ${props.searchString?.length > 1
86
+ ? html`
87
+ <dss-user-feedback
88
+ class="feedback"
89
+ imagesrc=${notFound}
90
+ title=${translate("noResults")}>
91
+ </dss-user-feedback>
92
+ `
93
+ : props.renderGroupsControlTimeExpired
94
+ ? html`<dss-user-feedback
95
+ class="feedback"
96
+ imagesrc=${notFound}
97
+ title=${translate("noData.title")}
98
+ description=${translate("noData.description")}>
99
+ </dss-user-feedback>`
100
+ : html`<activity-history-is-grouping-busy></activity-history-is-grouping-busy>`}`;
101
+
95
102
  const visitHeaderTemplate = (props: ActivityHistoryTimeline, item: IActivityHistoryItem | undefined) => {
96
103
  if (!item) return nothing;
97
104
  return html`
@@ -32,6 +32,11 @@ export const locales = {
32
32
  goToDate: "Anar a data",
33
33
  busyEntriesLoading: "Carregant totes les entrades",
34
34
  noResults: "Sense resultats. Modifica la cerca",
35
+ noData: {
36
+ title: "Sense dades",
37
+ description: "No existeix informació per a mostrar"
38
+ },
39
+ isGrouping: "Creant agrupacions i preparant les dades...",
35
40
  searchBarResults: "Resultats per",
36
41
  actions: {
37
42
  cronogram: "Cronograma",