@provoly/dashboard 1.4.57 → 1.4.59

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 (97) hide show
  1. package/esm2022/admin/components/admin-abac-rules/admin-abac-rules-form/admin-abac-rules-form.component.mjs +1 -1
  2. package/esm2022/admin/components/admin-abac-rules/components/attribute-condition/attribute-condition.component.mjs +1 -1
  3. package/esm2022/admin/components/admin-abac-rules/components/metadata-condition/metadata-condition.component.mjs +1 -1
  4. package/esm2022/admin/components/admin-classes/admin-classes-customize/symbol/admin-classes-customize-symbol.component.mjs +1 -1
  5. package/esm2022/admin/components/admin-classes/admin-classes-customize/tooltip/admin-classes-customize-tooltip.component.mjs +1 -1
  6. package/esm2022/admin/components/admin-classes/admin-classes-form/admin-classes-form.component.mjs +1 -1
  7. package/esm2022/admin/components/admin-classes/admin-classes-view/admin-attributes-form/admin-attributes-form.component.mjs +1 -1
  8. package/esm2022/admin/components/admin-dataset/admin-form-dataset/admin-form-dataset.component.mjs +1 -1
  9. package/esm2022/admin/components/admin-environment/admin-environment-form/admin-environment-form.component.mjs +1 -1
  10. package/esm2022/admin/components/admin-fields/admin-fields-form/admin-fields-form.component.mjs +1 -1
  11. package/esm2022/admin/components/admin-links/admin-links-new/admin-links-new.component.mjs +1 -1
  12. package/esm2022/admin/components/admin-metadata/shared/form-metadata/form-metadata.component.mjs +1 -1
  13. package/esm2022/admin/components/admin-metadata-rules/shared/admin-form-metadata-rules/admin-form-metadata-rules.component.mjs +1 -1
  14. package/esm2022/components/metadata-editor/metadata-editor.component.mjs +1 -1
  15. package/esm2022/components/scheme-picker/scheme-picker.component.mjs +1 -1
  16. package/esm2022/filters/autocomplete/autocomplete.component.mjs +1 -1
  17. package/esm2022/filters/list/list-filter.component.mjs +1 -1
  18. package/esm2022/import/components/form/import-form.component.mjs +1 -1
  19. package/esm2022/import/components/list/import-list.component.mjs +1 -1
  20. package/esm2022/lib/core/components/overlay/dialog.service.mjs +4 -2
  21. package/esm2022/lib/core/components/select/select.component.mjs +8 -4
  22. package/esm2022/lib/core/components/share/access-rights-share/access-rights-share.component.mjs +1 -1
  23. package/esm2022/lib/core/components/share/legacy-share/share.component.mjs +1 -1
  24. package/esm2022/lib/dashboard/components/context-menu/object-edition/object-edition.component.mjs +1 -1
  25. package/esm2022/lib/dashboard/components/dashboard.component.mjs +22 -12
  26. package/esm2022/lib/dashboard/components/widgets/datasource-selector/datasource-list/datasource-list.component.mjs +1 -1
  27. package/esm2022/lib/dashboard/components/widgets/header/widget-header.component.mjs +90 -19
  28. package/esm2022/lib/dashboard/store/dashboard.selectors.mjs +3 -2
  29. package/esm2022/lib/dashboard/store/manifest.service.mjs +5 -3
  30. package/esm2022/pipeline-components/filter/component/filter.component.mjs +1 -1
  31. package/esm2022/pipeline-components/input-datasource/component/input-datasource.component.mjs +1 -1
  32. package/esm2022/pipeline-components/output-dataset/component/output-dataset.component.mjs +1 -1
  33. package/esm2022/restitution/components/restitution/restitution.component.mjs +1 -1
  34. package/esm2022/search/search-mono-class/components/search-condition/search-condition.component.mjs +1 -1
  35. package/esm2022/search/search-mono-class/components/search-mono-class/search-mono-class.component.mjs +1 -1
  36. package/esm2022/search/search-mono-class/components/search-order/search-order.component.mjs +1 -1
  37. package/esm2022/search/search-multi-class/components/multi-class-condition/multi-class-condition.component.mjs +1 -1
  38. package/esm2022/toolbox/components/filter-settings/filter-settings.component.mjs +1 -1
  39. package/esm2022/toolbox/shared/presentation-form/presentation-form.component.mjs +1 -1
  40. package/esm2022/widgets/widget-aggregated-chart/component/widget-aggregated-chart.component.mjs +1 -1
  41. package/esm2022/widgets/widget-analytic/component/widget-analytic.component.mjs +1 -1
  42. package/esm2022/widgets/widget-chart/component/widget-chart.component.mjs +1 -1
  43. package/esm2022/widgets/widget-graph/component/widget-graph.component.mjs +1 -1
  44. package/esm2022/widgets/widget-map/component/widget-map.component.mjs +1 -1
  45. package/esm2022/widgets/widget-table/component/widget-table.component.mjs +1 -1
  46. package/esm2022/widgets/widget-tile/component/widget-tile.component.mjs +1 -1
  47. package/esm2022/widgets/widget-vega/component/widget-vega.component.mjs +5 -5
  48. package/fesm2022/provoly-dashboard-admin.mjs +13 -13
  49. package/fesm2022/provoly-dashboard-admin.mjs.map +1 -1
  50. package/fesm2022/provoly-dashboard-components-metadata-editor.mjs +1 -1
  51. package/fesm2022/provoly-dashboard-components-metadata-editor.mjs.map +1 -1
  52. package/fesm2022/provoly-dashboard-components-scheme-picker.mjs +1 -1
  53. package/fesm2022/provoly-dashboard-components-scheme-picker.mjs.map +1 -1
  54. package/fesm2022/provoly-dashboard-filters-autocomplete.mjs +1 -1
  55. package/fesm2022/provoly-dashboard-filters-autocomplete.mjs.map +1 -1
  56. package/fesm2022/provoly-dashboard-filters-list.mjs +1 -1
  57. package/fesm2022/provoly-dashboard-filters-list.mjs.map +1 -1
  58. package/fesm2022/provoly-dashboard-import.mjs +2 -2
  59. package/fesm2022/provoly-dashboard-import.mjs.map +1 -1
  60. package/fesm2022/provoly-dashboard-pipeline-components-filter.mjs +1 -1
  61. package/fesm2022/provoly-dashboard-pipeline-components-filter.mjs.map +1 -1
  62. package/fesm2022/provoly-dashboard-pipeline-components-input-datasource.mjs +1 -1
  63. package/fesm2022/provoly-dashboard-pipeline-components-input-datasource.mjs.map +1 -1
  64. package/fesm2022/provoly-dashboard-pipeline-components-output-dataset.mjs +1 -1
  65. package/fesm2022/provoly-dashboard-pipeline-components-output-dataset.mjs.map +1 -1
  66. package/fesm2022/provoly-dashboard-restitution.mjs +1 -1
  67. package/fesm2022/provoly-dashboard-restitution.mjs.map +1 -1
  68. package/fesm2022/provoly-dashboard-search.mjs +4 -4
  69. package/fesm2022/provoly-dashboard-search.mjs.map +1 -1
  70. package/fesm2022/provoly-dashboard-toolbox.mjs +2 -2
  71. package/fesm2022/provoly-dashboard-toolbox.mjs.map +1 -1
  72. package/fesm2022/provoly-dashboard-widgets-widget-aggregated-chart.mjs +1 -1
  73. package/fesm2022/provoly-dashboard-widgets-widget-aggregated-chart.mjs.map +1 -1
  74. package/fesm2022/provoly-dashboard-widgets-widget-analytic.mjs +1 -1
  75. package/fesm2022/provoly-dashboard-widgets-widget-analytic.mjs.map +1 -1
  76. package/fesm2022/provoly-dashboard-widgets-widget-chart.mjs +1 -1
  77. package/fesm2022/provoly-dashboard-widgets-widget-chart.mjs.map +1 -1
  78. package/fesm2022/provoly-dashboard-widgets-widget-graph.mjs +1 -1
  79. package/fesm2022/provoly-dashboard-widgets-widget-graph.mjs.map +1 -1
  80. package/fesm2022/provoly-dashboard-widgets-widget-map.mjs +1 -1
  81. package/fesm2022/provoly-dashboard-widgets-widget-map.mjs.map +1 -1
  82. package/fesm2022/provoly-dashboard-widgets-widget-table.mjs +1 -1
  83. package/fesm2022/provoly-dashboard-widgets-widget-table.mjs.map +1 -1
  84. package/fesm2022/provoly-dashboard-widgets-widget-tile.mjs +1 -1
  85. package/fesm2022/provoly-dashboard-widgets-widget-tile.mjs.map +1 -1
  86. package/fesm2022/provoly-dashboard-widgets-widget-vega.mjs +4 -4
  87. package/fesm2022/provoly-dashboard-widgets-widget-vega.mjs.map +1 -1
  88. package/fesm2022/provoly-dashboard.mjs +206 -118
  89. package/fesm2022/provoly-dashboard.mjs.map +1 -1
  90. package/lib/core/components/overlay/dialog.service.d.ts +2 -0
  91. package/lib/core/components/select/select.component.d.ts +3 -2
  92. package/lib/dashboard/components/dashboard.component.d.ts +8 -1
  93. package/lib/dashboard/components/widgets/header/widget-header.component.d.ts +18 -1
  94. package/lib/dashboard/store/dashboard.selectors.d.ts +17 -0
  95. package/lib/dashboard/store/manifest.service.d.ts +11 -2
  96. package/package.json +37 -37
  97. package/styles/components/_o-widget.scss +28 -0
@@ -1 +1 @@
1
- {"version":3,"file":"provoly-dashboard-search.mjs","sources":["../../../../projects/provoly/dashboard/search/components/choose-widget/choose-widget.component.ts","../../../../projects/provoly/dashboard/search/components/choose-widget/choose-widget.component.html","../../../../projects/provoly/dashboard/search/search-mono-class/store/search-mono-class.actions.ts","../../../../projects/provoly/dashboard/search/search-mono-class/store/search-mono-class.reducer.ts","../../../../projects/provoly/dashboard/search/search-mono-class/store/search-mono-class.selectors.ts","../../../../projects/provoly/dashboard/search/search-multi-class/store/search-multi-class.actions.ts","../../../../projects/provoly/dashboard/search/search-multi-class/store/search-multi-class.reducer.ts","../../../../projects/provoly/dashboard/search/search-multi-class/store/search-multi-class.selectors.ts","../../../../projects/provoly/dashboard/search/search-fulltext/store/search-fulltext.actions.ts","../../../../projects/provoly/dashboard/search/components/save-query/save-query.component.ts","../../../../projects/provoly/dashboard/search/components/save-query/save-query.component.html","../../../../projects/provoly/dashboard/search/style/css.component.ts","../../../../projects/provoly/dashboard/search/search-home/search-home.component.ts","../../../../projects/provoly/dashboard/search/search-home/search-home.component.html","../../../../projects/provoly/dashboard/search/search-mono-class/components/search-select-attribute/search-select-attribute.component.ts","../../../../projects/provoly/dashboard/search/search-mono-class/components/search-select-attribute/search-select-attribute.component.html","../../../../projects/provoly/dashboard/search/search-mono-class/components/search-condition/search-condition.component.ts","../../../../projects/provoly/dashboard/search/search-mono-class/components/search-condition/search-condition.component.html","../../../../projects/provoly/dashboard/search/search-mono-class/components/search-composed/search-composed.component.ts","../../../../projects/provoly/dashboard/search/search-mono-class/components/search-composed/search-composed.component.html","../../../../projects/provoly/dashboard/search/search-mono-class/components/search-order/search-order.component.ts","../../../../projects/provoly/dashboard/search/search-mono-class/components/search-order/search-order.component.html","../../../../projects/provoly/dashboard/search/search-mono-class/components/search-mono-class/search-mono-class.component.ts","../../../../projects/provoly/dashboard/search/search-mono-class/components/search-mono-class/search-mono-class.component.html","../../../../projects/provoly/dashboard/search/search-multi-class/store/search-multi-class.service.ts","../../../../projects/provoly/dashboard/search/search-multi-class/components/multi-class-field-selection/multi-class-field-selection.component.ts","../../../../projects/provoly/dashboard/search/search-multi-class/components/multi-class-field-selection/multi-class-field-selection.component.html","../../../../projects/provoly/dashboard/search/search-multi-class/components/multi-class-condition/multi-class-condition.component.ts","../../../../projects/provoly/dashboard/search/search-multi-class/components/multi-class-condition/multi-class-condition.component.html","../../../../projects/provoly/dashboard/search/search-multi-class/components/search-multi-class/search-multi-class.component.ts","../../../../projects/provoly/dashboard/search/search-multi-class/components/search-multi-class/search-multi-class.component.html","../../../../projects/provoly/dashboard/search/search-fulltext/search-fulltext/search-fulltext.component.ts","../../../../projects/provoly/dashboard/search/search-fulltext/search-fulltext/search-fulltext.component.html","../../../../projects/provoly/dashboard/search/components/save-query-button/save-query-button.component.ts","../../../../projects/provoly/dashboard/search/components/save-query-button/save-query-button.component.html","../../../../projects/provoly/dashboard/search/components/edit-named-query/edit-named-query.component.ts","../../../../projects/provoly/dashboard/search/components/edit-named-query/edit-named-query.component.html","../../../../projects/provoly/dashboard/search/search-tools/search-tools.component.ts","../../../../projects/provoly/dashboard/search/search-tools/search-tools.component.html","../../../../projects/provoly/dashboard/search/components/edit-named-query-modal/edit-named-query-modal.component.ts","../../../../projects/provoly/dashboard/search/components/edit-named-query-modal/edit-named-query-modal.component.html","../../../../projects/provoly/dashboard/search/i18n/en.translations.ts","../../../../projects/provoly/dashboard/search/i18n/fr.translations.ts","../../../../projects/provoly/dashboard/search/search-fulltext/store/search-fulltext.service.ts","../../../../projects/provoly/dashboard/search/search-fulltext/store/search-fulltext.effects.ts","../../../../projects/provoly/dashboard/search/search-mono-class/store/search-mono-class.service.ts","../../../../projects/provoly/dashboard/search/search-mono-class/store/search-mono-class.effects.ts","../../../../projects/provoly/dashboard/search/search-multi-class/store/search-multi-class.effects.ts","../../../../projects/provoly/dashboard/search/search.module.ts","../../../../projects/provoly/dashboard/search/provoly-dashboard-search.ts"],"sourcesContent":["import { ConnectedPosition } from '@angular/cdk/overlay';\nimport {\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n Output,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport {\n CatalogEntry,\n NamedQueryTypes,\n SubscriptionnerDirective,\n ToolboxManifestService,\n ToolboxMenuService\n} from '@provoly/dashboard';\nimport { map, Observable } from 'rxjs';\n\n@Component({\n selector: 'pry-choose-widget',\n templateUrl: './choose-widget.component.html',\n encapsulation: ViewEncapsulation.None\n})\nexport class ChooseWidgetComponent extends SubscriptionnerDirective implements OnChanges {\n @ViewChild('chooseWidgets') chooseWidgets!: ElementRef<HTMLButtonElement>;\n selectedWidget?: Element | null;\n widgetSelected?: { icon: string; label: string; type: string };\n @Input() panelOpen: boolean = false;\n readonly FULL_TEXT = NamedQueryTypes.FULL_TEXT;\n @Output() selected = new EventEmitter<string>();\n readonly TOP_POSITION: ConnectedPosition = {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom'\n };\n readonly BOTTOM_POSITION: ConnectedPosition = {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top'\n };\n @Input() mode = 'button';\n @Input() width = 200;\n widgets$: Observable<CatalogEntry[]>;\n\n constructor(\n private toolboxMenuService: ToolboxMenuService,\n private toolboxManifestService: ToolboxManifestService\n ) {\n super();\n this.widgets$ = this.toolboxMenuService.menuStructure$.pipe(\n map((menu) =>\n menu\n .map((items) => [...items.sub.filter((s) => this.toolboxManifestService.isModel(s.type))])\n .reduce((acc, items) => [...acc, ...items], [])\n )\n );\n this.subscriptions.add(\n this.widgets$.subscribe(\n (widgets) => (this.widgetSelected = [...widgets].sort((a, b) => (a.type === 'table' ? -1 : 1))[0])\n )\n );\n }\n\n ngOnChanges(): void {\n if (this.panelOpen) {\n setTimeout(() => {\n this.chooseWidgets.nativeElement.focus();\n }, 10);\n }\n }\n\n togglePopup() {\n this.panelOpen = !this.panelOpen;\n }\n\n onSelectWidget(type: { icon: string; label: string; type: string }) {\n this.widgetSelected = type;\n this.selected.emit(type.type);\n }\n}\n","<div cdkOverlayOrigin #originSearch=\"cdkOverlayOrigin\" class=\"m-choose-widget\">\n @if (mode === 'button') {\n <button\n type=\"button\"\n title=\"{{ '@pry.widget.buttonChoice' | i18n }}\"\n class=\"a-btn a-btn--primary a-btn--icon-text m-choose-widget__buttons-widget\"\n (click)=\"togglePopup()\"\n >\n <img\n [alt]=\"widgetSelected?.label\"\n [src]=\"widgetSelected?.icon | getSecuredImage | async\"\n [width]=\"22\"\n [height]=\"22\"\n />\n <span>{{ widgetSelected ? (widgetSelected.label | i18n) : ('@pry.toolbox.table' | i18n) }}</span>\n </button>\n }\n</div>\n\n@if (mode !== 'button') {\n <div class=\"m-choose-widget__input\" [class.choose-widget__input__inline]=\"mode === 'inline'\">\n <ng-content></ng-content>\n </div>\n}\n\n<ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayLockPosition\n [cdkConnectedOverlayOrigin]=\"originSearch\"\n [cdkConnectedOverlayOpen]=\"panelOpen\"\n [cdkConnectedOverlayPositions]=\"[BOTTOM_POSITION, TOP_POSITION]\"\n >\n <div class=\"m-choose-widget__widget_overlay\" (keydown.escape)=\"togglePopup()\" [style.width.px]=\"width\">\n <div class=\"m-choose-widget__widget_overlay__content\">\n @for (widget of widgets$ | async; track widget) {\n <div>\n <button\n #chooseWidgets\n type=\"button\"\n class=\"m-choose-widget__widget_overlay__content__item\"\n [class.choose-widget__widget_overlay__content__item__selected]=\"widget.type === widgetSelected?.type\"\n (click)=\"onSelectWidget(widget)\"\n >\n <img [alt]=\"widget.label | i18n\" [height]=\"22\" [width]=\"22\" [src]=\"widget.icon | getSecuredImage | async\" />\n <span class=\"m-choose-widget__widget_overlay__content__item__label\">{{ widget.label | i18n }}</span>\n </button>\n </div>\n }\n </div>\n </div>\n</ng-template>\n","import { createAction, props } from '@ngrx/store';\nimport {\n Attribute,\n ConditionType,\n DescriptionQuery,\n MonoClassSearchPayload,\n NormalizedCondition,\n OperatorType,\n OrderValue,\n ValueDataType\n} from '@provoly/dashboard';\n\nexport const SearchMonoClassActions = {\n save: createAction('[SearchMonoClass] save', props<{ descriptionQuery: DescriptionQuery; id?: string }>()),\n search: createAction('[SearchMonoClass] launch Mono Class search'),\n load: createAction('[SearchMonoClass] launch Mono Class search'),\n saveMonoClassSearch: createAction('[SearchMonoClass] launch Mono Class search'),\n\n selectMonoClassSearch: createAction('[Condition] select mono class search', props<{ classId: string }>()),\n addFirstNormalizedCondition: createAction(\n '[Condition] add first normalizedCondition ',\n props<{ condition: NormalizedCondition }>()\n ),\n addNormalizedConditionAttributeForConditionId: createAction(\n '[Condition] add normalizedCondition attribute ',\n props<{ conditionId: string; attribute: Attribute }>()\n ),\n addNormalizedConditionComposedForConditionId: createAction(\n '[Condition] add normalizedCondition composed ',\n props<{ conditionId: string }>()\n ),\n addNormalizedConditionForConditionId: createAction(\n '[Condition] add normalizedCondition for condition id',\n props<{ conditionId: string; condition: NormalizedCondition }>()\n ),\n updateNormalizedConditionOperatorForConditionId: createAction(\n '[Condition] update normalizedCondition operator for condition id',\n props<{ conditionId: string; operator: OperatorType }>()\n ),\n updateNormalizedConditionValueForConditionId: createAction(\n '[Condition] update normalizedCondition value for condition id',\n props<{ conditionId: string; value: ValueDataType; upperValue?: ValueDataType }>()\n ),\n updateNormalizedConditionTypeForConditionId: createAction(\n '[Condition] update normalizedCondition type for condition id',\n props<{ conditionId: string; conditionType: ConditionType }>()\n ),\n deleteNormalizedConditionById: createAction(\n '[Condition] delete normalizedCondition for condition id',\n props<{ conditionId: string }>()\n ),\n deleteNormalizedCondition: createAction(\n '[Condition] delete normalizedCondition',\n props<{ condition: NormalizedCondition }>()\n ),\n removeConditionFromComposed: createAction(\n '[Condition] remove normalizedCondition id from parent composed',\n props<{ parentId: string; childrenId: string }>()\n ),\n loadExistingConditions: createAction(\n '[SearchMonoClass] load existing conditions',\n props<{ payload: MonoClassSearchPayload }>()\n ),\n addIdCondition: createAction('[SearchMonoClass] add id condition', props<{ ids: string[] }>()),\n addIdMaster: createAction('[SearchMonoClass] add id master', props<{ id: string }>()),\n addEntities: createAction(\n '[SearchMonoClass] add entities',\n props<{ entities: { [key: string]: NormalizedCondition } }>()\n ),\n addIdClass: createAction('[SearchMonoClass] add id class', props<{ id: string }>()),\n resetSearch: createAction('[SearchMonoClass] reset search'),\n addOrder: createAction('[SearchMonoClass] add order', props<{ attribute?: string; asc?: OrderValue }>())\n};\n","import { createReducer, on } from '@ngrx/store';\nimport { MonoClassConditions, ResultOrder } from '@provoly/dashboard';\nimport { SearchMonoClassActions } from './search-mono-class.actions';\n\nexport const searchMonoClassFeatureKey = '@pry/search/mono-class';\n\nexport interface SearchMonoClassState {\n loading: boolean;\n monoClassConditions: MonoClassConditions;\n monoClassId?: string;\n order?: ResultOrder;\n}\n\nexport const initialSearchMonoClassState: SearchMonoClassState = {\n loading: false,\n monoClassConditions: {\n masterId: null,\n ids: [],\n entities: {}\n },\n order: undefined\n};\n\nexport const searchMonoClassReducer = createReducer(\n initialSearchMonoClassState,\n on(SearchMonoClassActions.selectMonoClassSearch, (state, action) => ({\n ...state,\n monoClassId: action.classId\n })),\n on(SearchMonoClassActions.addFirstNormalizedCondition, (state, action) => ({\n ...state,\n monoClassConditions: {\n masterId: action.condition.id,\n ids: [action.condition.id],\n entities: {\n [action.condition.id]: action.condition\n }\n }\n })),\n on(SearchMonoClassActions.addNormalizedConditionForConditionId, (state, action) => {\n const composedIds = [\n ...(state.monoClassConditions.entities[action.conditionId]?.composed ?? []),\n action.condition.id\n ];\n return {\n ...state,\n monoClassConditions: {\n ...state.monoClassConditions,\n ids: [...state.monoClassConditions.ids, action.condition.id],\n entities: {\n ...state.monoClassConditions.entities,\n [action.conditionId]: {\n ...state.monoClassConditions.entities[action.conditionId],\n composed: composedIds\n },\n [action.condition.id]: action.condition\n }\n }\n };\n }),\n on(SearchMonoClassActions.updateNormalizedConditionOperatorForConditionId, (state, action) => ({\n ...state,\n monoClassConditions: {\n ...state.monoClassConditions,\n entities: {\n ...state.monoClassConditions.entities,\n [action.conditionId]: {\n ...state.monoClassConditions.entities[action.conditionId],\n operator: action.operator\n }\n }\n }\n })),\n on(SearchMonoClassActions.updateNormalizedConditionValueForConditionId, (state, action) => ({\n ...state,\n monoClassConditions: {\n ...state.monoClassConditions,\n entities: {\n ...state.monoClassConditions.entities,\n [action.conditionId]: {\n ...state.monoClassConditions.entities[action.conditionId],\n value: action.value,\n upperValue: action.upperValue\n }\n }\n }\n })),\n on(SearchMonoClassActions.updateNormalizedConditionTypeForConditionId, (state, action) => ({\n ...state,\n monoClassConditions: {\n ...state.monoClassConditions,\n entities: {\n ...state.monoClassConditions.entities,\n [action.conditionId]: {\n ...state.monoClassConditions.entities[action.conditionId],\n type: action.conditionType\n }\n }\n }\n })),\n on(SearchMonoClassActions.deleteNormalizedCondition, (state, action) => {\n const ids = [...state.monoClassConditions.ids.filter((id) => id !== action.condition.id)];\n const { [action.condition.id]: value, ...entities } = { ...state.monoClassConditions.entities };\n return {\n ...state,\n monoClassConditions: {\n ...state.monoClassConditions,\n ids,\n entities\n }\n };\n }),\n on(SearchMonoClassActions.removeConditionFromComposed, (state, action) => ({\n ...state,\n monoClassConditions: {\n ...state.monoClassConditions,\n entities: {\n ...state.monoClassConditions.entities,\n [action.parentId]: {\n ...state.monoClassConditions.entities[action.parentId],\n composed: [\n ...(state.monoClassConditions.entities[action.parentId]?.composed?.filter(\n (el) => el !== action.childrenId\n ) ?? [])\n ]\n }\n }\n }\n })),\n on(SearchMonoClassActions.addIdCondition, (state, action) => ({\n ...state,\n monoClassConditions: { ...state.monoClassConditions, ids: [...action.ids] }\n })),\n on(SearchMonoClassActions.addIdMaster, (state, action) => ({\n ...state,\n monoClassConditions: { ...state.monoClassConditions, masterId: action.id }\n })),\n on(SearchMonoClassActions.addEntities, (state, action) => ({\n ...state,\n monoClassConditions: {\n ...state.monoClassConditions,\n entities: { ...action.entities }\n }\n })),\n on(SearchMonoClassActions.addIdClass, (state, action) => ({\n ...state,\n monoClassId: action.id\n })),\n on(SearchMonoClassActions.resetSearch, (state) => ({\n ...state,\n monoClassId: undefined,\n monoClassConditions: {\n masterId: null,\n ids: [],\n entities: {}\n }\n })),\n on(SearchMonoClassActions.addOrder, (state, action) => ({\n ...state,\n order: action.asc\n ? {\n attribute: action.attribute ?? state.order?.attribute ?? '',\n asc: action.asc\n }\n : undefined\n }))\n);\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\nimport { Attribute, ClassSelectors, MonoClassConditions } from '@provoly/dashboard';\nimport * as fromSearchMonoClass from './search-mono-class.reducer';\nimport { SearchMonoClassState } from './search-mono-class.reducer';\n\nconst feature = createFeatureSelector<fromSearchMonoClass.SearchMonoClassState>(\n fromSearchMonoClass.searchMonoClassFeatureKey\n);\n\nconst selectMonoClassIdSearch = createSelector(feature, (state: SearchMonoClassState) => state?.monoClassId);\nconst selectMonoClassAttributesSearch = createSelector(\n ClassSelectors.entities,\n selectMonoClassIdSearch,\n (classes, classId?: string) => (classId ? [...new Set(classes[classId]?.attributes ?? [])] : [])\n);\n\nconst selectMonoClassSearchAttributeById = (attributeId: string) =>\n createSelector(selectMonoClassAttributesSearch, (attributes: Attribute[]) =>\n attributes.find((attr) => attr.id === attributeId)\n );\nconst selectMonoClassConditions = createSelector(feature, (state: SearchMonoClassState) => state.monoClassConditions);\nconst order = createSelector(feature, (state: SearchMonoClassState) => state.order);\nconst selectMonoClassConditionsMasterId = createSelector(\n selectMonoClassConditions,\n (monoClassCondition: MonoClassConditions) => monoClassCondition?.masterId\n);\n\nconst selectMonoClassConditionsById = (id: string) =>\n createSelector(\n selectMonoClassConditions,\n (monoClassConditions: MonoClassConditions) => monoClassConditions.entities[id]\n );\n\nconst searchMonoClassValid = createSelector(\n selectMonoClassConditions,\n selectMonoClassIdSearch,\n (conditions: MonoClassConditions, searchClassId) => {\n if (!searchClassId) {\n return false;\n }\n const attributeConditionIds = conditions.ids.filter((id) => conditions.entities[id]?.type === 'ATTRIBUTE');\n return (\n attributeConditionIds.find((id) => {\n const condition = conditions.entities[id];\n const pattern = condition?.pattern ?? '';\n const value = condition?.value ?? '';\n if (pattern === '' || value === '') {\n return true;\n }\n return !RegExp(pattern).test(`${value}`);\n }) === undefined\n );\n }\n);\n\nexport const SearchMonoClassSelectors = {\n feature,\n selectMonoClassIdSearch,\n selectMonoClassAttributesSearch,\n selectMonoClassSearchAttributeById,\n selectMonoClassConditions,\n selectMonoClassConditionsById,\n selectMonoClassConditionsMasterId,\n searchMonoClassValid,\n order\n};\n","import { createAction, props } from '@ngrx/store';\nimport { DescriptionQuery, MultiClassCondition, MultiClassSearchPayload } from '@provoly/dashboard';\n\nexport const SearchMultiClassActions = {\n updateMultiType: createAction('[Search Multi class] update conditonnal type', props<{ multiType: 'AND' | 'OR' }>()),\n addNewEmptyCondition: createAction('[SearchMultiClass] add empty condition'),\n addMultiClassCondition: createAction(\n '[SearchMultiClass] add multi class condition',\n props<{ condition: MultiClassCondition }>()\n ),\n updateConditionField: createAction(\n '[SearchMultiClass] update condition field',\n props<{ conditionId: string; field: string }>()\n ),\n updateCondition: createAction(\n '[SearchMultiClass] update condition',\n props<{ conditionId: string; key: keyof MultiClassCondition; value: any; upperValue?: any }>()\n ),\n updateConditionPattern: createAction(\n '[SearchMultiClass] update condition pattern',\n props<{ conditionId: string; pattern: string; isDate: boolean }>()\n ),\n removeCondition: createAction('[SearchMultiClass] remove condition', props<{ conditionId: string }>()),\n resetSearch: createAction('[SearchMultiClass] reset search'),\n\n loadExistingConditions: createAction(\n '[SearchMultiClass] load existing conditions',\n props<{ payload: MultiClassSearchPayload }>()\n ),\n updateConditions: createAction(\n '[SearchMultiClass] update conditions',\n props<{ conditions: MultiClassCondition[] }>()\n ),\n\n search: createAction('[SearchMultiClass] launch search'),\n save: createAction('[SearchMultiClass] launch save', props<{ descriptionQuery: DescriptionQuery; id?: string }>())\n};\n","import { createReducer, on } from '@ngrx/store';\nimport { MultiClassCondition } from '@provoly/dashboard';\nimport { SearchMultiClassActions } from './search-multi-class.actions';\n\nexport const searchMultiClassFeatureKey = '@pry/search/multi-class';\n\nexport interface SearchMultiClassState {\n multiType: 'AND' | 'OR';\n conditions: MultiClassCondition[];\n}\n\nexport const initialSearchState: SearchMultiClassState = {\n multiType: 'AND',\n conditions: []\n};\n\nexport const searchMultiClassReducer = createReducer(\n initialSearchState,\n on(SearchMultiClassActions.updateMultiType, (state, action) => ({\n ...state,\n multiType: action.multiType\n })),\n on(SearchMultiClassActions.addMultiClassCondition, (state, action) => ({\n ...state,\n conditions: [...state.conditions, action.condition]\n })),\n on(SearchMultiClassActions.removeCondition, (state, action) => ({\n ...state,\n conditions: [...state.conditions.filter((c) => c.id !== action.conditionId)]\n })),\n on(SearchMultiClassActions.updateConditionField, (state, action) => ({\n ...state,\n conditions: [\n ...state.conditions.map((c) =>\n c.id === action.conditionId\n ? ({\n ...c,\n field: action.field\n } as MultiClassCondition)\n : c\n )\n ]\n })),\n on(SearchMultiClassActions.updateConditionPattern, (state, action) => ({\n ...state,\n conditions: [\n ...state.conditions.map((c) =>\n c.id === action.conditionId\n ? ({\n ...c,\n pattern: action.pattern,\n isDate: action.isDate,\n operator: action.isDate ? 'GREATER_THAN' : 'EQUALS',\n value: null\n } as MultiClassCondition)\n : c\n )\n ]\n })),\n on(SearchMultiClassActions.updateCondition, (state, action) => ({\n ...state,\n conditions: [\n ...state.conditions.map((c) =>\n c.id === action.conditionId\n ? {\n ...c,\n [action.key]: action.value,\n upperValue: action.upperValue\n }\n : c\n )\n ]\n })),\n on(SearchMultiClassActions.updateConditions, (state, action) => ({\n ...state,\n conditions: action.conditions\n })),\n on(SearchMultiClassActions.resetSearch, (state) => ({\n ...state,\n multiType: 'AND' as const,\n conditions: []\n }))\n);\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\nimport { MultiClassCondition } from '@provoly/dashboard';\nimport * as fromSearchMultiClass from './search-multi-class.reducer';\nimport { SearchMultiClassState } from './search-multi-class.reducer';\n\nconst feature = createFeatureSelector<fromSearchMultiClass.SearchMultiClassState>(\n fromSearchMultiClass.searchMultiClassFeatureKey\n);\n\nconst multiType = createSelector(feature, (state: SearchMultiClassState) => state?.multiType);\nconst conditions = createSelector(feature, (state: SearchMultiClassState) => state?.conditions);\nconst getConditionById = (id: string) =>\n createSelector(conditions, (conditions: MultiClassCondition[]) => conditions?.find((c) => c.id === id));\n\n// in case when user could choose classes before fields\n\nconst searchMultiClassValid = createSelector(conditions, (conditions: MultiClassCondition[]) => {\n return (\n conditions.find((condition: MultiClassCondition) => {\n if (condition.field === undefined) {\n return true;\n }\n if ((condition.value ?? '') === '') {\n return true;\n }\n if (condition.pattern) {\n const pattern = condition.pattern;\n const value = condition.value as string;\n const patternTest = RegExp(pattern).test(value);\n return !patternTest;\n }\n return false;\n }) === undefined\n );\n});\n\nexport const SearchMultiClassSelectors = {\n feature,\n multiType,\n conditions,\n getConditionById,\n searchMultiClassValid\n};\n","import { createAction, props } from '@ngrx/store';\nimport { DescriptionQuery } from '@provoly/dashboard';\n\nexport const searchFulltextActions = {\n search: createAction('[Search Fulltext] search', props<{ search: string; classes: string[] }>()),\n save: createAction(\n '[Search Fulltext] save',\n props<{ search: string; classes: string[]; descriptionQuery: DescriptionQuery; id?: string }>()\n )\n};\n","import { Component, ElementRef, Inject, OnInit, ViewChild } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport {\n ConfigActions,\n DataSourceActions,\n DataSourceSelectors,\n DEFAULT_NAMED_QUERY_ID,\n EXPLORE_NAMED_QUERY_ID,\n NamedQuery,\n NamedQueryTypes,\n PRY_DIALOG_DATA,\n PryDialogRef,\n PryVisibilityType\n} from '@provoly/dashboard';\nimport { Observable, take } from 'rxjs';\nimport { v4 as uuidv4 } from 'uuid';\nimport { SearchFulltextChange } from '../../search-fulltext/search-fulltext/search-fulltext.component';\nimport { searchFulltextActions } from '../../search-fulltext/store/search-fulltext.actions';\nimport { SearchMonoClassActions } from '../../search-mono-class/store/search-mono-class.actions';\nimport { SearchMultiClassActions } from '../../search-multi-class/store/search-multi-class.actions';\n\n@Component({\n selector: 'pry-save-query',\n templateUrl: './save-query.component.html'\n})\nexport class PrySaveQueryComponent implements OnInit {\n value: string = '';\n opened = false;\n currentEdit$: Observable<NamedQuery | undefined>;\n isEdit = false;\n\n id?: string;\n name: string = '';\n description: string = '';\n visibility = {\n type: PryVisibilityType.PRIVATE,\n users: []\n };\n savedNameQuery?: NamedQuery;\n\n get modalSave(): boolean {\n return this.data.save;\n }\n\n get saveDisabled(): boolean {\n return (\n (this.name ?? '') === '' ||\n (this.savedNameQuery?.name === this.name && !this.savedNameQuery?.owner) ||\n this.name.length > 30 ||\n this.description.length > 200\n );\n }\n\n @ViewChild('cross') cross!: ElementRef<HTMLButtonElement>;\n @ViewChild('save') save!: ElementRef<HTMLButtonElement>;\n\n constructor(\n private store: Store,\n private dialog: PryDialogRef<PrySaveQueryComponent>,\n @Inject(PRY_DIALOG_DATA)\n private data: {\n save: boolean;\n type: NamedQueryTypes;\n payload?: SearchFulltextChange;\n }\n ) {\n this.currentEdit$ = this.store.select(DataSourceSelectors.currentEdit);\n }\n\n ngOnInit(): void {\n setTimeout(() => {\n this.cross.nativeElement.focus();\n }, 10);\n\n this.currentEdit$.pipe(take(1)).subscribe((nq) => {\n if (nq) {\n this.savedNameQuery = nq;\n this.id = nq.id;\n this.isEdit = true;\n this.name = nq.name;\n this.description = nq.description ?? '';\n }\n });\n }\n\n onSave() {\n const id =\n this.id === DEFAULT_NAMED_QUERY_ID || this.id === EXPLORE_NAMED_QUERY_ID || !this.id ? uuidv4() : this.id;\n if (this.name !== '') {\n const descriptionQuery = {\n name: this.name,\n description: this.description ?? undefined,\n visibility: this.visibility\n };\n switch (this.data.type) {\n case NamedQueryTypes.FULL_TEXT:\n const classes = this.data.payload?.classes ?? [];\n const search = this.data.payload?.value ?? '';\n this.store.dispatch(searchFulltextActions.save({ descriptionQuery, classes, search, id }));\n break;\n case NamedQueryTypes.MONO_CLASS:\n this.store.dispatch(SearchMonoClassActions.save({ descriptionQuery, id }));\n break;\n case NamedQueryTypes.MULTI_CLASS:\n this.store.dispatch(SearchMultiClassActions.save({ descriptionQuery, id }));\n break;\n }\n this.onClose();\n }\n }\n focusElement(element: HTMLButtonElement) {\n element.focus();\n }\n\n onClose() {\n this.store.dispatch(ConfigActions.closeOverlay({ id: 'PrySaveQueryComponent' }));\n this.store.dispatch(DataSourceActions.namedQuery.stopRename());\n if (this.isEdit) {\n this.store.dispatch(DataSourceActions.namedQuery.stopEdit());\n }\n this.isEdit = false;\n this.dialog.close();\n }\n}\n","<div\n class=\"o-modal-wrapper\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby=\"dialog_rename\"\n (keydown.escape)=\"onClose()\"\n>\n <div class=\"o-modal\">\n <div class=\"o-modal__top\">\n <div class=\"o-modal__top__title\">\n <h2 class=\"a-h2\" id=\"dialog_title\">\n {{ '@pry.search.namedQuery.' + (modalSave ? 'saveTitle' : 'renameTitle') | i18n }}\n </h2>\n </div>\n <div class=\"o-modal__top__close\">\n <button class=\"a-btn a-btn--icon-only\" #cross (keydown.shift.tab)=\"focusElement(this.save)\" (click)=\"onClose()\">\n <pry-icon iconSvg=\"close\" [height]=\"35\" [width]=\"35\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.toolbox.close' | i18n }}</span>\n </button>\n </div>\n </div>\n\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"name\">{{ '@pry.search.namedQuery.name' | i18n }}</label>\n <input [(ngModel)]=\"name\" id=\"name\" type=\"text\" class=\"a-form-field\" required maxlength=\"30\" />\n </div>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"description\">{{ '@pry.search.namedQuery.description' | i18n }}</label>\n <input [(ngModel)]=\"description\" id=\"description\" type=\"text\" class=\"a-form-field\" required maxlength=\"200\" />\n </div>\n\n <pry-share [(ngModel)]=\"visibility\"></pry-share>\n\n <div class=\"m-btn-group\">\n <button type=\"button\" (click)=\"onClose()\" class=\"a-btn a-btn--secondary\">\n {{ '@pry.toolbox.manifest.close' | i18n }}\n </button>\n <button\n type=\"button\"\n #save\n (click)=\"onSave()\"\n class=\"a-btn a-btn--primary\"\n [disabled]=\"saveDisabled\"\n (keydown.tab)=\"focusElement(this.cross)\"\n >\n {{ '@pry.toolbox.manifest.check' | i18n }}\n </button>\n </div>\n </div>\n</div>\n","import { Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'pry-search-css',\n template: '',\n styleUrls: [\n '_m-choose-widget.scss',\n '_o-edit-named-query.scss',\n '_o-search-fulltext.scss',\n '_o-pry-search-composed.scss',\n '_o-pry-search-order.scss',\n '_m-pry-search-select-attribute.scss',\n '_o-multi-class-condition.scss',\n '_o-search-mono-class.scss',\n '_o-pry-search-condition.scss',\n '_o-pry-search-tools.scss',\n '_o-edit-named-query-modal.scss',\n '_o-multi-class-field-selection.scss',\n '_o-search-multi-class.scss',\n '_o-pry-search-home.scss'\n ],\n encapsulation: ViewEncapsulation.None\n})\nexport class PrySearchCssComponent {}\n","import { ConnectedPosition, Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport {\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n TemplateRef,\n ViewChild,\n ViewContainerRef\n} from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport {\n ConfigActions,\n DashboardActions,\n DashboardGridLayout,\n DashboardSelectors,\n DataSourceActions,\n DataSourceSelectors,\n DatasourceUtils,\n defaultMenuStructure,\n FullTextSearchPayload,\n NamedQuery,\n NamedQueryTypes,\n PryDialogConfirmComponent,\n PryDialogConfirmData,\n PryDialogService,\n SearchActions,\n WidgetLayout\n} from '@provoly/dashboard';\nimport {\n BehaviorSubject,\n combineLatest,\n combineLatestWith,\n debounceTime,\n filter,\n map,\n Observable,\n Subscription,\n take\n} from 'rxjs';\nimport { PrySaveQueryComponent } from '../components/save-query/save-query.component';\nimport { SearchFulltextChange } from '../search-fulltext/search-fulltext/search-fulltext.component';\n\n@Component({\n selector: 'pry-search-home',\n templateUrl: './search-home.component.html'\n})\nexport class PrySearchHomeComponent implements OnInit, OnDestroy {\n @ViewChild('templateSpot', { read: TemplateRef }) templateSpot!: TemplateRef<any>;\n @ViewChild('templateRefresh', { read: TemplateRef }) templateRefresh!: TemplateRef<any>;\n\n @Input() searchFulltextTpl?: TemplateRef<any>;\n @Input() isMoreList = false;\n\n @Output() changeListView = new EventEmitter<boolean>();\n @Output() changeSearchCriteria = new EventEmitter<boolean>();\n\n namedQueryList$?: Observable<NamedQuery[]>;\n private subscription: Subscription = new Subscription();\n\n namedQueriesUses$!: Observable<{ [p: string]: { windowIndex: number; type: string; layout: WidgetLayout }[] }>;\n spotting$ = new BehaviorSubject<string>('');\n spottingWidget$!: Observable<{ windowIndex: number; type: string; layout: WidgetLayout }[]>;\n refreshOptions = [0, 10, 30, 60];\n\n icons = {\n map: 'share_location',\n table: 'table_chart',\n chart: 'show_chart',\n graph: 'graph'\n } as { [key: string]: string };\n\n loadOpened: string | undefined;\n\n private overlayRef?: OverlayRef;\n\n readonly connectedPosition: ConnectedPosition = {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top'\n };\n structure = defaultMenuStructure.map((items) => ({\n ...items,\n sub: items.sub.filter((s) => s.type !== 'iframe' && s.type !== 'detail')\n }));\n\n refreshRates$!: Observable<{ [p: string]: number }>;\n refreshId: string = '';\n deleteError$?: Observable<any>;\n layout$!: Observable<string>;\n DashboardGridLayout = DashboardGridLayout;\n\n constructor(\n private store: Store,\n private overlay: Overlay,\n private viewContainerRef: ViewContainerRef,\n private pryDialog: PryDialogService\n ) {}\n\n ngOnInit() {\n this.store.dispatch(DataSourceActions.load({}));\n this.namedQueryList$ = this.store.select(DataSourceSelectors.getNamedQuerySorted);\n this.namedQueriesUses$ = this.store.select(DashboardSelectors.namedQueriesUses);\n this.spottingWidget$ = combineLatest([this.namedQueriesUses$, this.spotting$]).pipe(\n map(([uses, spotting]) => uses[spotting] ?? []),\n map((uses) => uses.map((use) => ({ ...use, windowIndex: use.windowIndex + 1 })))\n );\n this.refreshRates$ = this.store.select(DashboardSelectors.refreshRates);\n this.layout$ = this.store.select(DashboardSelectors.gridLayout);\n this.deleteError$ = this.store.select(DataSourceSelectors.errors).pipe(debounceTime(100));\n }\n\n onSearchNamedQuery(id: string) {\n this.store.dispatch(DashboardActions.updateWidgetInPresentation({ id, widgetType: 'table' }));\n }\n\n onFavorite(id: string, isFavorite: boolean | undefined) {\n if (!isFavorite) {\n this.store.dispatch(DataSourceActions.namedQuery.addFavorite({ id }));\n } else {\n this.store.dispatch(DataSourceActions.namedQuery.deleteFavorite({ id }));\n }\n }\n\n onSpot(id: string, $event: MouseEvent) {\n this.spotting$.next(id);\n\n if (!this.overlayRef) {\n this.overlayRef = this.overlay.create(\n new OverlayConfig({\n hasBackdrop: false,\n panelClass: ['spot-rs']\n })\n );\n this.store.dispatch(ConfigActions.addingOverlay({ id: this.constructor.name }));\n this.overlayRef.attach(new TemplatePortal(this.templateSpot, this.viewContainerRef));\n const spotElement = document.querySelector('.spot-rs') as HTMLDivElement;\n if (!!spotElement) {\n spotElement.style.left = $event.clientX - 10 + 'px';\n spotElement.style.top = $event.clientY - 10 + 'px';\n }\n }\n }\n\n hideSpot() {\n this.overlayRef?.dispose();\n this.store.dispatch(ConfigActions.closeOverlay({ id: this.constructor.name }));\n this.overlayRef = undefined;\n }\n\n onEdit(namedQuery: NamedQuery) {\n this.store.dispatch(DataSourceActions.namedQuery.edit({ currentEdit: namedQuery }));\n }\n\n onChangeListView(isMoreList: boolean) {\n this.changeListView.emit(isMoreList);\n }\n\n onSearchCriteria() {\n this.changeSearchCriteria.emit();\n }\n\n loadWidget(id: string, sub: { icon: string; label: string; type: string }) {\n this.store.dispatch(DashboardActions.updateWidgetInPresentation({ id, widgetType: sub.type }));\n this.loadOpened = undefined;\n }\n\n onDelete(nq: NamedQuery) {\n const data: PryDialogConfirmData = {\n title: '@pry.search.namedQuery.delete',\n actions: [\n { id: 0, label: '@pry.toolbox.manifest.close', color: 'secondary' },\n { id: 1, label: '@pry.search.namedQuery.delete' }\n ]\n };\n const dialog = this.pryDialog.open(PryDialogConfirmComponent, {\n data\n });\n this.subscription.add(\n dialog.closeValue.pipe(take(1)).subscribe((action) => {\n this.store.dispatch(ConfigActions.closeOverlay({ id: 'PryDialogConfirmComponent' }));\n if (action.id === 1) {\n this.store.dispatch(DataSourceActions.namedQuery.delete({ id: nq.id ?? '' }));\n this.subscription.add(\n this.deleteError$\n ?.pipe(\n combineLatestWith(this.store.select(DataSourceSelectors.isLoading)),\n filter(([, isLoading]) => !isLoading),\n take(1)\n )\n .subscribe(([error]) => {\n if (error?.status === 403) {\n const data: PryDialogConfirmData = {\n title: '@pry.manifest.deleteError',\n actions: [{ id: 1, label: '@pry.toolbox.close' }]\n };\n const errorDialog = this.pryDialog.open(PryDialogConfirmComponent, {\n data\n });\n this.subscription.add(\n errorDialog.closeValue.pipe(take(1)).subscribe(() => {\n this.store.dispatch(ConfigActions.closeOverlay({ id: 'PryDialogConfirmComponent' }));\n })\n );\n }\n })\n );\n }\n })\n );\n }\n\n onRename(nq: NamedQuery) {\n this.store.dispatch(DataSourceActions.namedQuery.openRename());\n this.store.dispatch(DataSourceActions.namedQuery.edit({ currentEdit: nq }));\n const save = false;\n const type = DatasourceUtils.getTypeFromPayload(nq.request);\n const data =\n type === NamedQueryTypes.FULL_TEXT\n ? { save, type, payload: this.extractPayload(nq.request as FullTextSearchPayload) }\n : { save, type };\n this.pryDialog.open(PrySaveQueryComponent, { data });\n }\n\n private extractPayload(payload: FullTextSearchPayload): SearchFulltextChange {\n const { fullSearch, oClasses } = payload;\n return { value: fullSearch.value, classes: oClasses ?? [] };\n }\n\n onRefresh(id: string, $event: MouseEvent) {\n this.refreshId = id;\n\n if (!this.overlayRef) {\n this.overlayRef = this.overlay.create(\n new OverlayConfig({\n hasBackdrop: true,\n panelClass: ['refresh-rs']\n })\n );\n this.store.dispatch(ConfigActions.addingOverlay({ id: this.constructor.name }));\n this.overlayRef.attach(new TemplatePortal(this.templateRefresh, this.viewContainerRef));\n this.overlayRef.backdropClick().subscribe((_) => this.hideSpot());\n const refreshElement = document.querySelector('.refresh-rs') as HTMLDivElement;\n const refresh = document.querySelector('.refreshbt') as HTMLDivElement;\n if (!!refreshElement) {\n const rect = refresh.getBoundingClientRect();\n refreshElement.style.left = rect.left + rect.width + 10 + 'px';\n refreshElement.style.top = rect.top + 137 + 'px';\n }\n }\n }\n\n selectRefresh($event: number) {\n this.store.dispatch(DashboardActions.setRefreshRate({ id: this.refreshId ?? '', rate: $event }));\n this.hideSpot();\n }\n\n refresh(id: string) {\n this.store.dispatch(\n SearchActions.getDatasourceItems({ id, excludeGeo: false, from: 'PrySearchHomeComponent.refresh()' })\n );\n }\n\n ngOnDestroy(): void {\n this.subscription.unsubscribe();\n }\n}\n","<pry-search-css></pry-search-css>\n<div class=\"o-pry-search-home__named-query\">\n @if (namedQueryList$ | async; as namedQuery) {\n @if (namedQuery.length > 0) {\n <div class=\"o-pry-search-home__named-query__card\">\n <pry-expand-panel [open]=\"true\">\n <pry-expand-panel-title>{{ '@pry.search.home.title' | i18n }}</pry-expand-panel-title>\n @for (nq of namedQuery.length > 1 && !isMoreList ? namedQuery.slice(0, 2) : namedQuery; track nq) {\n <pry-card>\n <pry-card-header [marker]=\"true\">\n <pry-card-icon>\n <pry-nq-color-selector [datasource]=\"nq\" [disabled]=\"true\"></pry-nq-color-selector>\n <img\n [alt]=\"nq.id | translateId : { type: 'datasource', output: 'name' } | async\"\n [height]=\"22\"\n [width]=\"22\"\n [src]=\"nq.id | translateId : { type: 'datasource', output: 'icon' } | async\"\n />\n </pry-card-icon>\n <pry-card-title>\n <div class=\"o-pry-card-title__text\" aria-describedby=\"infoTooltip_searchHome\">\n <div class=\"a-p o-pry-card-title__text__title\">{{ nq.name }}</div>\n @if (nq.description) {\n <div class=\"a-p o-pry-card-title__text__description\">{{ nq.description }}</div>\n }\n </div>\n <ng-template #infoTooltip>\n <div class=\"m-tooltip\" role=\"tooltip\" id=\"infoTooltip_searchHome\">\n <span class=\"m-tooltip__text\">\n {{ nq.name }}\n </span>\n @if (nq.description) {\n <span class=\"m-tooltip__description\">\n {{ nq.description }}\n </span>\n }\n </div>\n </ng-template>\n @if (nq.favorite) {\n <pry-icon\n class=\"o-pry-card-title__pin\"\n [width]=\"18\"\n [height]=\"18\"\n aria-label=\"favorite\"\n iconSvg=\"epingle\"\n ></pry-icon>\n }\n @if ((layout$ | async) !== DashboardGridLayout.MANUAL) {\n <button\n [attr.data-tooltip]=\"'@pry.search.home.showAssociatedWidget' | i18n\"\n data-tooltip-position=\"bottom\"\n class=\"a-tooltip a-btn a-btn--secondary -size-sm -override-tooltip-position\"\n (click)=\"onSearchNamedQuery(nq.id)\"\n >\n {{ '@pry.search.namedQuery.display' | i18n }}\n <span class=\"u-visually-hidden\">{{ '@pry.search.home.associatedWidget' | i18n }}</span>\n </button>\n }\n </pry-card-title>\n <pry-card-menu>\n <div class=\"o-pry-card-menu__nav\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-text o-pry-card-menu__nav__item\"\n (click)=\"onFavorite(nq.id, nq.favorite)\"\n >\n <pry-icon iconSvg=\"epingle\"></pry-icon>\n {{ (nq.favorite ? '@pry.search.namedQuery.noFavorite' : '@pry.search.namedQuery.favorite') | i18n }}\n </button>\n <pry-card-menu (click)=\"refresh(nq.id)\" class=\"refreshbt\">\n <button type=\"button\" class=\"a-btn a-btn--icon-text o-pry-card-menu__nav__item\">\n <pry-icon iconSvg=\"synchro\"></pry-icon>\n {{ '@pry.search.namedQuery.refreshData' | i18n }}\n </button>\n </pry-card-menu>\n @if ((layout$ | async) !== DashboardGridLayout.MANUAL) {\n <pry-card-menu>\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-text o-pry-card-menu__nav__item\"\n (click)=\"loadOpened = nq.id; $event.stopPropagation()\"\n cdkOverlayOrigin\n #triggerLoad=\"cdkOverlayOrigin\"\n >\n <pry-icon iconSvg=\"file_download\"></pry-icon>\n {{ '@pry.search.namedQuery.display' | i18n }}\n <pry-icon\n iconSvg=\"fleche_haut\"\n [ngStyle]=\"{ transform: 'rotate(90deg)', marginLeft: 'auto' }\"\n ></pry-icon>\n </button>\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"triggerLoad\"\n [cdkConnectedOverlayOpen]=\"loadOpened === nq.id\"\n [cdkConnectedOverlayHasBackdrop]=\"true\"\n [cdkConnectedOverlayPositions]=\"[connectedPosition]\"\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n (backdropClick)=\"loadOpened = undefined\"\n >\n <div class=\"o-draggable-menu -search-home\">\n <ul class=\"o-draggable-menu__list\">\n @for (menu of structure; track menu) {\n <li class=\"o-draggable-menu__list__item\">\n <button class=\"a-btn\" aria-haspopup=\"true\" aria-expanded=\"false\">\n <pry-icon [iconSvg]=\"menu.icon\"></pry-icon>\n {{ menu.label | i18n }}\n </button>\n <ul class=\"o-draggable-menu__list__submenu\">\n @for (sub of menu.sub; track sub) {\n <li class=\"o-draggable-menu__list__submenu__item\">\n <button class=\"a-btn\" (click)=\"loadWidget(nq.id, sub)\">\n <pry-icon [iconSvg]=\"sub.icon\"></pry-icon>\n {{ sub.label | i18n }}\n </button>\n </li>\n }\n </ul>\n </li>\n }\n </ul>\n </div>\n </ng-template>\n </pry-card-menu>\n }\n <pry-card-menu class=\"o-pry-card-menu__nav__item\">\n <pry-nq-color-selector [ngStyle]=\"{ width: '100%' }\" [datasource]=\"nq\"></pry-nq-color-selector>\n </pry-card-menu>\n <pry-card-menu (click)=\"onSpot(nq.id, $event)\">\n <button type=\"button\" class=\"a-btn a-btn--icon-text o-pry-card-menu__nav__item\">\n <pry-icon iconSvg=\"mode_clic\"></pry-icon>\n {{ '@pry.search.namedQuery.spot' | i18n }}\n <pry-icon\n iconSvg=\"fleche_haut\"\n [ngStyle]=\"{ transform: 'rotate(90deg)', marginLeft: 'auto' }\"\n ></pry-icon>\n </button>\n </pry-card-menu>\n <pry-card-menu (click)=\"onRefresh(nq.id, $event)\">\n <button type=\"button\" class=\"a-btn a-btn--icon-text o-pry-card-menu__nav__item\">\n <pry-icon iconSvg=\"history-line\"></pry-icon>\n {{ '@pry.search.namedQuery.refresh.title' | i18n }}\n <pry-icon\n iconSvg=\"fleche_haut\"\n [ngStyle]=\"{ transform: 'rotate(90deg)', marginLeft: 'auto' }\"\n ></pry-icon>\n </button>\n </pry-card-menu>\n @if (nq.owner) {\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-text o-pry-card-menu__nav__item\"\n (click)=\"onDelete(nq)\"\n >\n <pry-icon iconSvg=\"delete\"></pry-icon>\n {{ '@pry.search.namedQuery.delete' | i18n }}\n </button>\n }\n @if (nq.owner) {\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-text o-pry-card-menu__nav__item\"\n (click)=\"onRename(nq)\"\n >\n <pry-icon iconSvg=\"renamed\"></pry-icon>\n {{ '@pry.search.namedQuery.rename' | i18n }}\n </button>\n }\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-text o-pry-card-menu__nav__item\"\n (click)=\"onEdit(nq)\"\n (keydown.tab)=\"hideSpot()\"\n >\n <pry-icon iconSvg=\"edit\"></pry-icon>\n {{ '@pry.search.namedQuery.edit' | i18n }}\n </button>\n </div>\n </pry-card-menu>\n </pry-card-header>\n </pry-card>\n }\n </pry-expand-panel>\n </div>\n @if (namedQuery.length > 2) {\n <button\n class=\"a-btn -link-like\"\n aria-pressed=\"false\"\n id=\"btn_view_more\"\n (click)=\"onChangeListView(isMoreList)\"\n >\n {{ isMoreList ? ('@pry.search.namedQuery.seeLess' | i18n) : ('@pry.search.namedQuery.seeMore' | i18n) }}\n </button>\n }\n } @else {\n <p class=\"search-home__container-search\">{{ '@pry.search.namedQuery.emptyNamedQuery' | i18n }}</p>\n }\n }\n</div>\n\n<div class=\"o-pry-search-home__search\">\n <h3 class=\"a-h3\">{{ '@pry.search.home.ssTitle' | i18n }}</h3>\n @if (searchFulltextTpl) {\n <ng-container [ngTemplateOutlet]=\"searchFulltextTpl\"></ng-container>\n <p class=\"a-p o-pry-search-home__search__or\">{{ '@pry.search.home.or' | i18n }}</p>\n }\n <button class=\"a-btn a-btn--primary -width-full\" (click)=\"onSearchCriteria()\">\n <pry-icon [width]=\"20\" [height]=\"20\" iconSvg=\"search-criteria\"></pry-icon>\n {{ '@pry.search.home.searchByCriteria' | i18n }}\n <pry-icon iconSvg=\"arrow_right\"></pry-icon>\n </button>\n</div>\n\n<ng-template #templateSpot>\n <div (mouseleave)=\"hideSpot()\">\n {{\n ((spottingWidget$ | async)?.length ?? 0 > 0\n ? '@pry.search.namedQuery.spotTitle'\n : '@pry.search.namedQuery.noSpot'\n ) | i18n : { length: (spottingWidget$ | async)?.length }\n }}\n @for (use of spottingWidget$ | async; track use) {\n <div class=\"spot-line\">\n <pry-icon [width]=\"20\" [height]=\"20\" [iconSvg]=\"icons[use.type]\"></pry-icon>\n {{ '@pry.search.namedQuery.type.' + use.type | i18n }} - {{ '@pry.search.namedQuery.use' | i18n : use }}\n </div>\n }\n </div>\n</ng-template>\n\n<ng-template #templateRefresh>\n <div>\n @for (option of refreshOptions; track option) {\n <button\n class=\"refresh-line a-btn a-btn--icon-text -size-sm\"\n (click)=\"selectRefresh(option)\"\n >\n @if ((((refreshRates$ | async) ?? {})[refreshId] ?? 0) === option) {\n <pry-icon\n [width]=\"20\"\n [height]=\"20\"\n iconSvg=\"check\"\n ></pry-icon>\n }\n {{ '@pry.search.namedQuery.refresh.' + option | i18n }}\n </button>\n }\n </div>\n</ng-template>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { Attribute, Class, ClassSelectors, FieldSelectors, FieldType } from '@provoly/dashboard';\nimport { filter, map, Observable, switchMap } from 'rxjs';\nimport { withLatestFrom } from 'rxjs';\nimport { SearchMonoClassSelectors } from '../../store/search-mono-class.selectors';\n\n@Component({\n selector: 'pry-search-select-attribute',\n templateUrl: './search-select-attribute.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PrySearchSelectAttributeComponent {\n @Input() set id(val: string) {\n this._attributes$ = this.store.select(SearchMonoClassSelectors.selectMonoClassIdSearch).pipe(\n filter((id): id is string => id !== null),\n switchMap((id) => this.store.select(ClassSelectors.classById(id))),\n filter((clazz): clazz is Class => clazz !== undefined),\n map((clazz) => {\n const attributes = [...(clazz.attributes ?? [])].filter((attr) => attr.field.type !== FieldType.RAW);\n return attributes.sort((a, b) => a.name.localeCompare(b.name));\n })\n );\n }\n\n @Output() selectAttributeChange = new EventEmitter<Attribute>();\n\n get attributes$(): Observable<Attribute[]> | undefined {\n return this._attributes$;\n }\n\n _attributes$?: Observable<Attribute[]>;\n\n constructor(private store: Store<any>) {}\n\n onSelectAttribute(attribute: Attribute): void {\n this.selectAttributeChange.emit(attribute);\n }\n}\n","@if (_attributes$ | async; as attributes) {\n <ul class=\"m-pry-search-select-attribute\">\n @for (attr of attributes; track attr) {\n <li class=\"m-pry-search-select-attribute__item\">\n <button class=\"a-btn\" (click)=\"onSelectAttribute(attr)\">\n {{ attr.name }}\n </button>\n </li>\n }\n </ul>\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, HostBinding, Input, OnDestroy } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport {\n Attribute,\n Class,\n ClassSelectors,\n DateRange,\n FieldType,\n NormalizedCondition,\n OPERATOR_OPTIONS,\n OperatorOption,\n OperatorType\n} from '@provoly/dashboard';\nimport { combineLatest, filter, map, Observable, Subject, Subscription, switchMap, tap } from 'rxjs';\nimport { SearchMonoClassActions } from '../../store/search-mono-class.actions';\nimport { SearchMonoClassSelectors } from '../../store/search-mono-class.selectors';\n\n@Component({\n selector: 'pry-search-condition',\n templateUrl: './search-condition.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PrySearchConditionComponent implements OnDestroy {\n @HostBinding('class') class = 'o-pry-search-condition-wrapper';\n\n @Input() set attributeId(val: string) {\n this.attributeId$.next(val);\n this.attributeName$ = this.store.select(SearchMonoClassSelectors.selectMonoClassIdSearch).pipe(\n filter((id): id is string => id !== null),\n switchMap((id) => this.store.select(ClassSelectors.classById(id))),\n filter((clazz): clazz is Class => clazz !== undefined),\n map((clazz: Class) => clazz.attributes.find((c) => c.id === val)?.name ?? '')\n );\n }\n\n @Input() set id(val: string) {\n this.conditionId$.next(val);\n this.conditionId = val;\n }\n\n @Input() set useTextDateInputs(val: boolean) {\n this.textDateInputs = val;\n }\n\n private attributeId$ = new Subject<string>();\n private conditionId$ = new Subject<string>();\n private conditionId!: string;\n attributeName$?: Observable<string>;\n operatorOptions$!: Observable<OperatorOption[]>;\n condition$!: Observable<NormalizedCondition>;\n\n pattern?: string;\n isDate = false;\n firstValueInvalid = false;\n secondValueInvalid = false;\n conditionValue = '';\n secondConditionValue = '';\n twoValues = false;\n operatorSelectedValue?: OperatorType;\n textDateInputs = false;\n dateConditionValue: string | DateRange = '';\n\n private sub = new Subscription();\n\n constructor(\n private store: Store<any>,\n private _detect: ChangeDetectorRef\n ) {\n this.sub.add(\n combineLatest([this.attributeId$, this.conditionId$])\n .pipe(\n filter(([attributeId, conditionId]) => attributeId !== null && conditionId !== null),\n tap(([attributeId, conditionId]) => {\n this.assignOperatorOption$(attributeId);\n this.assignCondition$(conditionId);\n }),\n switchMap(() => combineLatest([this.operatorOptions$, this.condition$]))\n )\n .subscribe(([operatorOptions, condition]) => {\n if (condition) {\n this.conditionValue = condition.value?.toString() ?? '';\n const operator = operatorOptions.find((ope) => ope.operator === condition.operator);\n if (operator) {\n this.operatorSelectedValue = operator.operator;\n this.twoValues = operator.twoValues;\n }\n this.pattern = condition.pattern;\n this.isDate = condition.isDate ?? false;\n this._detect.markForCheck();\n }\n })\n );\n }\n\n ngOnDestroy(): void {\n this.sub.unsubscribe();\n }\n\n onSelectedOperator(operatorType: OperatorType): void {\n this.store.dispatch(\n SearchMonoClassActions.updateNormalizedConditionOperatorForConditionId({\n conditionId: this.conditionId,\n operator: operatorType\n })\n );\n }\n\n updateFirstValue(): void {\n this.store.dispatch(\n SearchMonoClassActions.updateNormalizedConditionValueForConditionId({\n value: this.conditionValue,\n conditionId: this.conditionId\n })\n );\n }\n\n onCheckValidity(evt: any, first: boolean) {\n if (this.pattern && evt?.target?.value) {\n if (first) {\n this.firstValueInvalid = !RegExp(this.pattern).test(evt.target.value);\n } else {\n this.secondValueInvalid = !RegExp(this.pattern).test(evt.target.value);\n }\n this._detect.markForCheck();\n }\n }\n\n onDeleteAttributeCondition(): void {\n this.store.dispatch(SearchMonoClassActions.deleteNormalizedConditionById({ conditionId: this.conditionId }));\n }\n\n updateSecondValue(): void {\n this.store.dispatch(\n SearchMonoClassActions.updateNormalizedConditionValueForConditionId({\n value: this.conditionValue,\n conditionId: this.conditionId,\n upperValue: this.secondConditionValue\n })\n );\n }\n\n updateDateCondition(): void {\n this.store.dispatch(\n SearchMonoClassActions.updateNormalizedConditionValueForConditionId({\n value: typeof this.dateConditionValue == 'object' ? this.dateConditionValue.start : this.dateConditionValue,\n conditionId: this.conditionId,\n upperValue: typeof this.dateConditionValue == 'object' ? this.dateConditionValue.end : ''\n })\n );\n }\n\n private assignOperatorOption$(attributeId: string): void {\n this.operatorOptions$ = this.store\n .select(SearchMonoClassSelectors.selectMonoClassSearchAttributeById(attributeId))\n .pipe(\n filter((attr): attr is Attribute => attr !== undefined),\n map((attr: Attribute) => {\n const fieldType = attr.field.type;\n if (fieldType === FieldType.STRING || fieldType === FieldType.KEYWORD) {\n return OPERATOR_OPTIONS.filter((el) => el.type === 'string');\n } else if (\n fieldType === FieldType.INTEGER ||\n fieldType === FieldType.DECIMAL ||\n fieldType === FieldType.LONG\n ) {\n return OPERATOR_OPTIONS.filter((el) => el.type === 'number');\n } else {\n return OPERATOR_OPTIONS.filter((el) => el.type === 'date');\n }\n })\n );\n }\n\n private assignCondition$(conditionId: string): void {\n this.condition$ = this.store\n .select(SearchMonoClassSelectors.selectMonoClassConditionsById(conditionId))\n .pipe(filter((cond): cond is NormalizedCondition => cond !== null));\n }\n}\n","<div class=\"o-pry-search-condition\">\n <div class=\"o-pry-search-condition__fields\" [class.has-date-picker]=\"isDate && !textDateInputs\">\n <input class=\"a-form-field\" type=\"text\" [ngModel]=\"attributeName$ | async\" readonly />\n <pry-select\n class=\"a-pry-select operator\"\n [items]=\"operatorOptions$ | async\"\n bindValue=\"operator\"\n bindLabel=\"translation\"\n name=\"operator\"\n [ngModel]=\"operatorSelectedValue\"\n (ngModelChange)=\"onSelectedOperator($event)\"\n ></pry-select>\n @if (isDate && !textDateInputs) {\n <pry-date-picker\n class=\"o-pry-search-condition__date-picker\"\n [(ngModel)]=\"dateConditionValue\"\n (ngModelChange)=\"updateDateCondition()\"\n [rangePicker]=\"twoValues\"\n [roundSelection]=\"true\"\n [timePicker]=\"true\"\n required\n ></pry-date-picker>\n } @else {\n <input\n class=\"a-form-field\"\n type=\"text\"\n [placeholder]=\"(twoValues ? '@pry.search.placeholder.minValue' : '@pry.search.placeholder.search') | i18n\"\n [ngClass]=\"{ '-half': twoValues }\"\n [class.pry-search-condition-input-pattern]=\"firstValue.touched && firstValueInvalid\"\n [class.pry-search-condition-input-required]=\"firstValue.touched && firstValue.invalid\"\n name=\"value\"\n [type]=\"isDate ? 'date' : 'text'\"\n required\n #firstValue=\"ngModel\"\n [(ngModel)]=\"conditionValue\"\n (input)=\"onCheckValidity($event, true)\"\n (focusout)=\"updateFirstValue()\"\n />\n @if (twoValues) {\n <input\n class=\"a-form-field\"\n type=\"text\"\n [placeholder]=\"'@pry.search.placeholder.maxValue' | i18n\"\n required\n [type]=\"isDate ? 'date' : 'text'\"\n [(ngModel)]=\"secondConditionValue\"\n (input)=\"onCheckValidity($event, false)\"\n (focusout)=\"updateSecondValue()\"\n />\n }\n }\n </div>\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only -circle -size-xs delete\"\n (click)=\"onDeleteAttributeCondition()\"\n [title]=\"'@pry.search.attribute.remove' | i18n\"\n >\n <pry-icon iconSvg=\"close\" [width]=\"22\" [height]=\"22\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.search.attribute.remove' | i18n }}</span>\n </button>\n</div>\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, HostBinding, HostListener, Input } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { Attribute, ConditionType, NormalizedCondition } from '@provoly/dashboard';\nimport { Observable, of } from 'rxjs';\nimport { SearchMonoClassActions } from '../../store/search-mono-class.actions';\nimport { SearchMonoClassSelectors } from '../../store/search-mono-class.selectors';\n\n@Component({\n selector: 'pry-search-composed',\n templateUrl: './search-composed.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PrySearchComposedComponent {\n @HostBinding('class') class = 'o-pry-search-composed-wrapper';\n @HostBinding('class.is-hover') hover = false;\n masterId$: Observable<string | null>;\n\n @HostListener('mouseover', ['$event'])\n onMouseOver(evt: any) {\n evt.stopPropagation();\n this.hover = true;\n }\n\n @HostListener('mouseout', ['$event'])\n onMouseOut(evt: any) {\n evt.stopPropagation();\n this.hover = false;\n }\n\n @Input() set id(val: string) {\n this._id = val;\n this.condition$ = this.store.select(SearchMonoClassSelectors.selectMonoClassConditionsById(this._id));\n }\n\n private _id!: string;\n condition$: Observable<NormalizedCondition | null> = of(null);\n\n panelNewAttributeOpen = false;\n\n constructor(\n private store: Store<any>,\n private _change: ChangeDetectorRef\n ) {\n this.masterId$ = this.store.select(SearchMonoClassSelectors.selectMonoClassConditionsMasterId);\n }\n\n onAddNestedCondition(conditionId: string): void {\n this.store.dispatch(SearchMonoClassActions.addNormalizedConditionComposedForConditionId({ conditionId }));\n }\n\n onSelectType(conditionId: string, conditionType: ConditionType): void {\n this.store.dispatch(\n SearchMonoClassActions.updateNormalizedConditionTypeForConditionId({ conditionId, conditionType })\n );\n }\n\n onOpenPanel() {\n this.panelNewAttributeOpen = true;\n this._change.markForCheck();\n }\n\n onClosePanel() {\n if (this.panelNewAttributeOpen) {\n this.panelNewAttributeOpen = false;\n this._change.markForCheck();\n }\n }\n\n onAddAttributeCondition(attribute: Attribute, conditionId: string): void {\n this.store.dispatch(\n SearchMonoClassActions.addNormalizedConditionAttributeForConditionId({ conditionId, attribute })\n );\n this.onClosePanel();\n }\n\n onDeleteNestedCondition(conditionId: string): void {\n this.store.dispatch(SearchMonoClassActions.deleteNormalizedConditionById({ conditionId }));\n }\n}\n","<div class=\"o-pry-search-composed\" [ngClass]=\"{ 'pry-search-composed-hover': hover }\">\n @if (condition$ | async; as cond) {\n @if (cond.type === 'ATTRIBUTE') {\n @if (cond.attribute) {\n <pry-search-condition [attributeId]=\"cond.attribute\" [id]=\"cond.id\"></pry-search-condition>\n }\n } @else {\n <div class=\"o-pry-search-composed__condition\">\n <div class=\"o-pry-search-composed__condition__type -vertical-bar\">\n <div class=\"o-pry-search-composed__condition__type__content\">\n <pry-toggle\n [leftword]=\"'@pry.search.type.or' | i18n\"\n [rightword]=\"'@pry.search.type.and' | i18n\"\n [alwaysActive]=\"true\"\n [ngModel]=\"cond.type === 'OR'\"\n (ngModelChange)=\"onSelectType(cond.id, cond.type === 'OR' ? 'AND' : 'OR')\"\n ></pry-toggle>\n </div>\n </div>\n <div class=\"o-pry-search-composed__condition__content\">\n @for (composedId of cond.composed; track composedId) {\n <pry-search-composed [id]=\"composedId\"></pry-search-composed>\n }\n <div class=\"o-pry-search-composed__condition__content__footer\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--select -size-sm\"\n (click)=\"onOpenPanel()\"\n [pryOverlay]=\"selectAttribute\"\n [overlayOpen]=\"panelNewAttributeOpen\"\n (overlayOpenChange)=\"onClosePanel()\"\n pryOverlayPosition=\"start-bottom\"\n [pryOverlayNoPadding]=\"true\"\n >\n <pry-icon iconSvg=\"add\" [width]=\"15\" [height]=\"15\"></pry-icon>\n <span>{{ '@pry.search.composed.addCondition' | i18n }}</span>\n </button>\n <button type=\"button\" class=\"a-btn a-btn--secondary -size-sm\" (click)=\"onAddNestedCondition(cond.id)\">\n <pry-icon iconSvg=\"picture-in-picture\" [width]=\"16\" [height]=\"16\"></pry-icon>\n <span>{{ '@pry.search.composed.addGroup' | i18n }}</span>\n </button>\n @if (masterId$ | async; as masterId) {\n @if (masterId !== cond.id) {\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only -circle -size-sm o-pry-search-composed__condition__content__footer__remove\"\n (click)=\"onDeleteNestedCondition(cond.id)\"\n >\n <pry-icon iconSvg=\"close\" [width]=\"16\" [height]=\"16\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.search.composed.remove' | i18n }}</span>\n </button>\n }\n }\n </div>\n <ng-template #selectAttribute>\n <pry-search-select-attribute\n [id]=\"cond.id\"\n (selectAttributeChange)=\"onAddAttributeCondition($event, cond.id)\"\n ></pry-search-select-attribute>\n </ng-template>\n </div>\n </div>\n }\n }\n</div>\n","import { AfterViewInit, ChangeDetectionStrategy, Component, HostBinding, HostListener } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport {\n Attribute,\n Class,\n ClassSelectors,\n Field,\n FieldSelectors,\n FieldType,\n OrderValue,\n PryI18nService,\n ResultOrder\n} from '@provoly/dashboard';\nimport equal from 'fast-deep-equal/es6';\nimport { combineLatest, Observable } from 'rxjs';\nimport { distinctUntilChanged, map, withLatestFrom } from 'rxjs';\nimport { SearchMonoClassActions } from '../../store/search-mono-class.actions';\nimport { SearchMonoClassSelectors } from '../../store/search-mono-class.selectors';\n\n@Component({\n selector: 'pry-search-order',\n templateUrl: './search-order.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PrySearchOrderComponent implements AfterViewInit {\n @HostBinding('class') class = 'o-pry-search-order-wrapper';\n @HostBinding('class.is-hover') hover = false;\n masterId$: Observable<string | null>;\n monoClassId$: Observable<string | undefined>;\n classes$: Observable<Class[]>;\n variableAttributes$: Observable<Attribute[]>;\n order$: Observable<ResultOrder | undefined>;\n fields$: Observable<Field[]>;\n private activated = false;\n\n @HostListener('mouseover', ['$event'])\n onMouseOver(evt: any) {\n evt.stopPropagation();\n this.hover = true;\n }\n\n @HostListener('mouseout', ['$event'])\n onMouseOut(evt: any) {\n evt.stopPropagation();\n this.hover = false;\n }\n\n constructor(\n private store: Store<any>,\n private translateService: PryI18nService\n ) {\n this.masterId$ = this.store.select(SearchMonoClassSelectors.selectMonoClassConditionsMasterId);\n this.monoClassId$ = this.store.select(SearchMonoClassSelectors.selectMonoClassIdSearch);\n this.order$ = this.store.select(SearchMonoClassSelectors.order);\n this.classes$ = this.store.select(ClassSelectors.classes);\n this.fields$ = this.store.select(FieldSelectors.fields);\n\n this.variableAttributes$ = combineLatest([this.monoClassId$, this.classes$]).pipe(\n map(([classId, classes]) => classes.find((clazz) => clazz.id === classId)?.attributes ?? []),\n map((attrs) => attrs.filter((attr) => attr.field.type !== FieldType.RAW)),\n map((attrs) =>\n attrs.concat({\n name: this.translateService.instant('@pry.search.composed.orderNone'),\n id: 'null'\n } as unknown as Attribute)\n ),\n distinctUntilChanged((p, c) => equal(p, c))\n );\n }\n\n ngAfterViewInit(): void {\n setTimeout(() => {\n this.activated = true;\n }, 100);\n }\n\n changeProperty(_attribute?: string, asc?: OrderValue) {\n if (this.activated) {\n const attribute = _attribute === 'null' ? undefined : _attribute;\n this.store.dispatch(\n SearchMonoClassActions.addOrder({ attribute: attribute, asc: asc ?? (attribute ? 'asc' : undefined) })\n );\n }\n }\n}\n","<div class=\"o-pry-search-order\">\n <pry-select\n (ngModelChange)=\"changeProperty($event)\"\n [items]=\"variableAttributes$ | async\"\n [ngModel]=\"(order$ | async)?.attribute ?? 'null'\"\n bindLabel=\"name\"\n bindValue=\"id\"\n ></pry-select>\n @if ((order$ | async)?.attribute) {\n <pry-toggle\n [ngModel]=\"(order$ | async)?.asc === 'asc'\"\n (ngModelChange)=\"changeProperty(undefined, $event ? 'asc' : 'desc')\"\n [alwaysActive]=\"true\"\n dir=\"ltr\"\n >\n {{ ((order$ | async)?.asc === 'asc' ? '@pry.search.composed.orderA' : '@pry.search.composed.orderD') | i18n }}\n </pry-toggle>\n }\n</div>\n","import { Component } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { Class, ClassSelectors, ClassState, SearchState } from '@provoly/dashboard';\nimport { Observable } from 'rxjs';\nimport { filter, switchMap, take } from 'rxjs';\nimport { SearchMonoClassActions } from '../../store/search-mono-class.actions';\nimport { SearchMonoClassSelectors } from '../../store/search-mono-class.selectors';\n\n@Component({\n selector: 'pry-search-mono-class',\n templateUrl: './search-mono-class.component.html'\n})\nexport class PrySearchMonoClassComponent {\n classes$?: Observable<Array<Class>>;\n monoClass$?: Observable<Class>;\n monoClassMasterId$?: Observable<string | null>;\n monoClassId$: Observable<string | undefined>;\n\n constructor(private store: Store<SearchState | ClassState>) {\n this.classes$ = this.store.select(ClassSelectors.classes);\n this.monoClassMasterId$ = this.store.select(SearchMonoClassSelectors.selectMonoClassConditionsMasterId);\n this.monoClassId$ = this.store.select(SearchMonoClassSelectors.selectMonoClassIdSearch);\n\n this.monoClass$ = this.store.select(SearchMonoClassSelectors.selectMonoClassIdSearch).pipe(\n filter((id): id is string => id !== null),\n switchMap((id) => this.store.select(ClassSelectors.classById(id))),\n filter((clazz): clazz is Class => clazz !== null)\n );\n }\n\n onChangeClass(classId: any) {\n this.store.dispatch(SearchMonoClassActions.addOrder({}));\n this.monoClassId$\n .pipe(\n take(1),\n filter((monoClassId) => monoClassId !== classId)\n )\n .subscribe(() => this.store.dispatch(SearchMonoClassActions.selectMonoClassSearch({ classId })));\n }\n}\n","<div class=\"o-search-mono-class\">\n <div class=\"o-search-mono-class__header search-mono__header\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"composed_class\">{{ '@pry.search.composed.class' | i18n }}</label>\n <pry-select\n [items]=\"classes$ | async\"\n bindValue=\"id\"\n [ngModel]=\"monoClassId$ | async\"\n (ngModelChange)=\"onChangeClass($event)\"\n [template]=\"optionTpl\"\n id=\"composed_class\"\n >\n </pry-select>\n </div>\n\n <ng-template #optionTpl let-item=\"item\">\n <div class=\"o-search-mono-class__header__selected search-class-selected__content\">\n @if (item.image) {\n <img\n alt=\"\"\n [height]=\"25\"\n [width]=\"25\"\n [src]=\"item.id | translateId : { type: 'class', output: 'icon' } | async\"\n />\n } @else {\n <img\n alt=\"\"\n [height]=\"25\"\n [width]=\"25\"\n [src]=\"item.id | translateId : { type: 'class', output: 'icon' } | async\"\n />\n }\n <span>{{ item.name }}</span>\n </div>\n </ng-template>\n </div>\n\n <div class=\"o-search-mono-class__content-wrapper search-mono__content\">\n <div class=\"o-search-mono-class__content search-mono__content__wrapper\">\n @if (monoClassMasterId$ | async; as conditionId) {\n <p class=\"o-search-mono-class__content__title search-mono__content__title\">\n {{ '@pry.search.composed.title' | i18n }}\n </p>\n @if (monoClass$ | async; as clazz) {\n <pry-search-composed [id]=\"conditionId\"></pry-search-composed>\n <p class=\"o-search-mono-class__content__title search-mono__content__title\">\n {{ '@pry.search.composed.order' | i18n }}\n </p>\n <pry-search-order></pry-search-order>\n }\n } @else {\n {{ '@pry.search.composed.shouldSelectClass' | i18n }}\n }\n </div>\n </div>\n</div>\n","import { Injectable } from '@angular/core';\nimport {\n Class,\n Field,\n FieldType,\n MultiClassCondition,\n MultiClassField,\n MultiClassFieldSelection,\n MultiClassSearchPayload,\n NamedQueryTypes\n} from '@provoly/dashboard';\nimport { v4 as uuidv4 } from 'uuid';\n\n@Injectable({ providedIn: 'root' })\nexport class SearchMultiClassService {\n generateCondition(field?: string, operator?: string): MultiClassCondition {\n const id = uuidv4();\n return {\n id,\n field,\n operator: operator ? operator : field ? 'EQUALS' : null,\n value: field ? '' : null,\n isDate: false\n } as MultiClassCondition;\n }\n\n getConditionsFromSearchPayload(payload: MultiClassSearchPayload, fields: Field[]): MultiClassCondition[] {\n return payload.fields.map((item: any) => {\n const generatedCondition = this.generateCondition(item.field, item.operator);\n const field = fields.find((field) => field.id === item.field);\n if (!field) {\n return generatedCondition;\n }\n const pattern = this.getPatternForField(field);\n return {\n ...generatedCondition,\n value: item.value,\n pattern,\n isDate: field?.type === FieldType.INSTANT\n };\n });\n }\n\n buildConditionsToSearchPayload(\n conditions: MultiClassCondition[],\n classes: Class[],\n multiType: 'AND' | 'OR'\n ): MultiClassSearchPayload {\n const oClasses = this.getClassesIdsByConditions(conditions, classes);\n const fields = conditions.map(\n (c) =>\n ({\n field: c.field,\n operator: c.operator,\n value: c.value,\n upperValue: c.upperValue\n }) as MultiClassField\n );\n return {\n fullSearch: null,\n type: NamedQueryTypes.MULTI_CLASS,\n multiType,\n oClasses,\n fields: fields.map((f) => {\n if (f.operator === 'INSIDE' || f.operator === 'OUTSIDE') {\n return f;\n }\n const { upperValue, ...rest } = f;\n return rest;\n })\n };\n }\n\n getFieldsAvailable(\n conditions: MultiClassCondition[],\n classes: Class[],\n fields: Field[],\n excludedCondition?: string\n ): MultiClassFieldSelection[] {\n const selectedFields = this.getSelectedFields(conditions, excludedCondition);\n const availableClasses = this.getClassesIntersectFields(selectedFields, classes);\n\n const classesByFields: { [key: string]: string[] } = {};\n const availableFields = [\n ...new Set(\n availableClasses.reduce((acc: Field[], c: Class) => {\n const fieldsByClass = c.attributes\n .map((a) => fields.find((f) => f.id === a.field.id))\n .filter((f): f is Field => f !== undefined);\n fieldsByClass.forEach((f) => {\n classesByFields[f.id] = classesByFields[f.id] ? [...classesByFields[f.id], c.name] : [c.name];\n });\n return [...acc, ...fieldsByClass];\n }, [])\n )\n ];\n\n return availableFields.map((f) => ({\n id: f.id,\n name: f.name,\n classes: classesByFields[f.id]\n }));\n }\n\n getClassesForField(\n conditions: MultiClassCondition[],\n condition: MultiClassCondition | undefined,\n classes: Class[]\n ): Class[] {\n const selectedFields = this.getSelectedFields(conditions);\n const availableClasses = this.getClassesIntersectFields(selectedFields, classes);\n return condition\n ? availableClasses.filter((c) => c.attributes.find((a) => a.field.id === condition.field))\n : availableClasses;\n }\n\n getPatternForField(field: Field): string {\n const type = field.type;\n switch (type) {\n case FieldType.DECIMAL:\n return '^[+-]?([0-9]*[.])?[0-9]+$';\n case FieldType.INTEGER:\n case FieldType.LONG:\n return '^[+-]?[0-9]+$';\n case FieldType.STRING:\n case FieldType.KEYWORD:\n return '^.+$';\n case FieldType.INSTANT:\n return '^[0-9]{4}-[0-9]{2}-[0-9]{2}$|^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}$';\n default:\n return '^.+$';\n }\n }\n\n private getClassesIdsByConditions(conditions: MultiClassCondition[], classes: Class[]): string[] {\n const selectedFields = this.getSelectedFields(conditions);\n const availableClasses = this.getClassesIntersectFields(selectedFields, classes);\n return availableClasses.map((c) => c.id);\n }\n\n private getClassesIntersectFields(fields: string[], classes: Class[]): Class[] {\n return fields?.length > 0\n ? classes.filter((c) => {\n const fieldsInClass = c.attributes.map((a) => a.field.id);\n const intersect = fields.filter((field) => fieldsInClass.includes(field)).length;\n return intersect === fields.length;\n })\n : classes;\n }\n\n private getSelectedFields(conditions: MultiClassCondition[], excludedCondition?: string): string[] {\n return [\n ...new Set(conditions.filter((c) => !(c.id === excludedCondition || c.field === undefined)).map((c) => c.field))\n ];\n }\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport {\n Class,\n ClassSelectors,\n Field,\n FieldSelectors,\n FieldType,\n MultiClassCondition,\n MultiClassFieldSelection\n} from '@provoly/dashboard';\nimport { combineLatest, map, Observable } from 'rxjs';\nimport { SearchMultiClassSelectors } from '../../store/search-multi-class.selectors';\nimport { SearchMultiClassService } from '../../store/search-multi-class.service';\n\n@Component({\n selector: 'pry-multi-class-field-selection',\n templateUrl: './multi-class-field-selection.component.html'\n})\nexport class MultiClassFieldSelectionComponent {\n fields$: Observable<Field[]>;\n classes$: Observable<Class[]>;\n conditions$: Observable<MultiClassCondition[]>;\n availableFields$: Observable<MultiClassFieldSelection[]>;\n\n fieldSearch = '';\n\n @Input() set conditionId(val: string | undefined) {\n this._conditionId = val;\n this.availableFields$ = combineLatest([this.conditions$, this.classes$, this.fields$]).pipe(\n map(([conditions, classes, fields]) => this.sortFields(conditions, classes, fields)),\n map((fields) => {\n const uniqueFields = fields.map((field) => ({\n ...field,\n classes: [...new Set(field.classes)]\n }));\n return uniqueFields;\n })\n );\n }\n\n get conditionId(): any {\n return this._conditionId;\n }\n\n private _conditionId?: string;\n\n @Output() closeModal = new EventEmitter();\n @Output() selectFieldChange = new EventEmitter<string>();\n\n constructor(\n private store: Store<any>,\n private searchMultiClassService: SearchMultiClassService\n ) {\n this.classes$ = this.store.select(ClassSelectors.classes);\n this.fields$ = this.store\n .select(FieldSelectors.fields)\n .pipe(map((fields) => fields.filter((field) => field.type !== FieldType.RAW)));\n this.conditions$ = this.store.select(SearchMultiClassSelectors.conditions);\n this.availableFields$ = combineLatest([this.conditions$, this.classes$, this.fields$]).pipe(\n map(([conditions, classes, fields]) => this.sortFields(conditions, classes, fields)),\n map((fields) => {\n const uniqueFields = fields.map((field) => ({\n ...field,\n classes: [...new Set(field.classes)]\n }));\n return uniqueFields;\n })\n );\n }\n\n private sortFields(conditions: MultiClassCondition[], classes: Class[], fields: Field[]): MultiClassFieldSelection[] {\n const availableFields = this.searchMultiClassService.getFieldsAvailable(\n conditions,\n classes,\n fields,\n this._conditionId\n );\n return availableFields.sort((a, b) => a.name.localeCompare(b.name));\n }\n}\n","<div class=\"o-multi-class-field-selection\" id=\"popin\">\n <div class=\"o-multi-class-field-selection__header\" data-toggle=\"popin\">\n <div class=\"o-multi-class-field-selection__header__top\">\n <div class=\"o-multi-class-field-selection__header__top__title\">\n <h2 class=\"a-h2\" id=\"dialog_title\">\n {{ '@pry.search.multi.selectField' | i18n }}\n </h2>\n </div>\n <div class=\"o-multi-class-field-selection__header__top__close\">\n <button class=\"a-btn a-btn--icon-only\" (click)=\"closeModal.emit()\">\n <pry-icon iconSvg=\"close\" [height]=\"35\" [width]=\"35\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.close' | i18n }}</span>\n </button>\n </div>\n </div>\n @if (availableFields$ | async; as list) {\n @if (list.length > 7) {\n <div class=\"o-multi-class-field-selection__header__search\">\n <input class=\"a-form-field\" type=\"text\" [(ngModel)]=\"fieldSearch\" placeholder=\"Filtrer\" />\n </div>\n }\n }\n </div>\n <div class=\"o-multi-class-field-selection__legend\">{{ '@pry.search.multi.legend' | i18n }}</div>\n <ul class=\"o-multi-class-field-selection__fields\">\n @for (field of availableFields$ | async | pryFilter: 'name' : fieldSearch; track field.id) {\n <li class=\"o-multi-class-field-selection__fields__select\" (click)=\"selectFieldChange.emit(field.id)\">\n <button class=\"a-btn -link-like\">\n {{ field.name }}\n <span class=\"o-multi-class-field-selection__fields__select__inside\"\n >{{ '@pry.search.multi.in' | i18n }}\n <ng-container> {{ field.classes.join(', ') }} </ng-container>\n </span>\n </button>\n </li>\n }\n </ul>\n</div>\n","import { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { Component, Input, OnInit, TemplateRef, ViewChild, ViewContainerRef } from '@angular/core';\nimport { AbstractControl, UntypedFormControl, UntypedFormGroup, Validators } from '@angular/forms';\nimport { Store } from '@ngrx/store';\nimport {\n Class,\n ClassSelectors,\n ConfigActions,\n Field,\n FieldSelectors,\n FieldType,\n MultiClassCondition,\n OPERATOR_OPTIONS,\n OperatorOption\n} from '@provoly/dashboard';\nimport { combineLatest, filter, map, Observable, of, switchMap, take } from 'rxjs';\nimport { SearchMultiClassActions } from '../../store/search-multi-class.actions';\nimport { SearchMultiClassSelectors } from '../../store/search-multi-class.selectors';\nimport { SearchMultiClassService } from '../../store/search-multi-class.service';\n\n@Component({\n selector: 'pry-multi-class-condition',\n templateUrl: './multi-class-condition.component.html'\n})\nexport class MultiClassConditionComponent implements OnInit {\n @ViewChild('fieldSelectionTpl', { read: TemplateRef }) fieldSelectionTpl!: TemplateRef<any>;\n condition$: Observable<MultiClassCondition | undefined> = of(undefined);\n classesLinked$: Observable<Class[]> = of([]);\n field$: Observable<Field | undefined> = of(undefined);\n classes$: Observable<Class[]>;\n conditions$: Observable<MultiClassCondition[]>;\n notLastCondition$: Observable<boolean>;\n operators$: Observable<OperatorOption[]> = of([]);\n\n @Input() set id(val: string) {\n this._id = val;\n this.condition$ = this.store.select(SearchMultiClassSelectors.getConditionById(this._id));\n this.condition$\n .pipe(\n filter((c): c is MultiClassCondition => c?.field !== undefined),\n take(1)\n )\n .subscribe((c) => {\n if (c.isDate && typeof this.form.get('value')?.value !== 'string') {\n this.form.patchValue({ operator: c.operator, value: { start: c.value, end: c.upperValue } });\n } else {\n this.form.patchValue(\n { operator: c.operator, value: c.value, upperValue: c.upperValue },\n { emitEvent: false }\n );\n }\n\n this.formValue?.setValidators([Validators.required]);\n this.formValue?.updateValueAndValidity();\n if (c.value !== null) {\n this.form.markAllAsTouched();\n }\n this.form.enable({ emitEvent: false });\n });\n this.field$ = this.condition$.pipe(\n filter((c): c is MultiClassCondition => c !== undefined),\n switchMap((c) => this.store.select(FieldSelectors.fieldById(c.field)))\n );\n this.classesLinked$ = combineLatest([this.conditions$, this.condition$, this.classes$]).pipe(\n map(([conditions, condition, classes]) => this.service.getClassesForField(conditions, condition, classes)),\n filter((clazz) => (clazz?.length ?? 0) > 0)\n );\n this.operators$ = this.condition$.pipe(\n filter((c): c is MultiClassCondition => c !== undefined),\n switchMap((c) => this.store.select(FieldSelectors.fieldById(c.field))),\n filter((f): f is Field => f !== undefined),\n map((f) => {\n const type = f.type;\n if ([FieldType.STRING, FieldType.KEYWORD].includes(type)) {\n return OPERATOR_OPTIONS.filter((opt) => opt.type === 'string');\n } else if ([FieldType.DECIMAL, FieldType.INTEGER, FieldType.LONG].includes(type)) {\n return OPERATOR_OPTIONS.filter((opt) => opt.type === 'number');\n } else {\n return OPERATOR_OPTIONS.filter((opt) => opt.type === 'date');\n }\n })\n );\n }\n\n private _id?: string;\n opened = false;\n private overlayRef?: OverlayRef;\n\n form = new UntypedFormGroup({\n operator: new UntypedFormControl({ value: null, disabled: true }, [Validators.required]),\n value: new UntypedFormControl({ value: null, disabled: true }, [Validators.required]),\n upperValue: new UntypedFormControl({ value: null, disabled: true }, [])\n });\n\n get formValue(): AbstractControl | null {\n return this.form.get('value');\n }\n\n constructor(\n private store: Store<any>,\n private service: SearchMultiClassService,\n private overlay: Overlay,\n private viewContainerRef: ViewContainerRef\n ) {\n this.classes$ = this.store.select(ClassSelectors.classes);\n this.conditions$ = this.store.select(SearchMultiClassSelectors.conditions);\n this.notLastCondition$ = this.conditions$.pipe(map((conditions) => (conditions?.length ?? 0) !== 1));\n }\n\n public ngOnInit(): void {\n this.form.get('operator')?.valueChanges.subscribe((value) => {\n if (this._id) {\n this.store.dispatch(SearchMultiClassActions.updateCondition({ conditionId: this._id, key: 'operator', value }));\n }\n });\n }\n\n onRemoveCondition(condition: MultiClassCondition): void {\n this.store.dispatch(SearchMultiClassActions.removeCondition({ conditionId: condition.id }));\n }\n\n toggleFieldSelection() {\n this.opened = !this.opened;\n if (this.opened) {\n this.openWithTemplate();\n } else {\n this.store.dispatch(ConfigActions.closeOverlay({ id: this.constructor.name }));\n this.overlayRef?.dispose();\n }\n }\n\n openWithTemplate() {\n this.overlayRef = this.overlay.create(\n new OverlayConfig({\n hasBackdrop: true,\n backdropClass: 'backdrop',\n positionStrategy: this.overlay.position().global().centerHorizontally().centerVertically(),\n minHeight: '300px',\n maxHeight: '600px',\n width: '500px'\n })\n );\n this.store.dispatch(ConfigActions.addingOverlay({ id: this.constructor.name }));\n this.overlayRef.backdropClick().subscribe((_) => this.toggleFieldSelection());\n this.overlayRef.attach(new TemplatePortal(this.fieldSelectionTpl, this.viewContainerRef));\n }\n\n onChangeField(condition: MultiClassCondition, field: string) {\n if (condition.field !== field) {\n this.store.dispatch(SearchMultiClassActions.updateConditionField({ conditionId: condition.id, field }));\n }\n this.toggleFieldSelection();\n }\n\n onCloseModal() {\n this.toggleFieldSelection();\n }\n\n onUpdateValue(condition: MultiClassCondition) {\n let formValue, formSecondValue;\n if (condition.isDate && typeof this.form.get('value')?.value !== 'string') {\n formValue = this.form.get('value')?.value.start;\n formSecondValue = this.form.get('value')?.value.end;\n } else {\n formValue = this.form.get('value')?.value;\n formSecondValue = this.form.get('upperValue')?.value;\n }\n\n if (formValue !== condition.value || formSecondValue !== condition.upperValue) {\n this.store.dispatch(\n SearchMultiClassActions.updateCondition({\n conditionId: condition.id,\n key: 'value',\n value: formValue,\n upperValue: formSecondValue\n })\n );\n }\n }\n\n join(classes: Class[]): string {\n return classes.map((clazz) => clazz.name).join(', ');\n }\n\n get hasTwoFields() {\n return this.form.get('operator')?.value === 'INSIDE' || this.form.get('operator')?.value === 'OUTSIDE';\n }\n}\n","@if (condition$ | async; as condition) {\n <div class=\"o-multi-class-condition\">\n <div class=\"o-multi-class-condition__content\">\n <div class=\"o-multi-class-condition__content__action\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--primary -size-sm -width-full\"\n aria-label=\"selection button\"\n (click)=\"toggleFieldSelection()\"\n >\n @if (field$ | async; as field) {\n {{ field.name }}\n } @else {\n {{ '@pry.search.multi.selectField' | i18n }}\n }\n </button>\n @if (classesLinked$ | async; as classesLinked) {\n <pry-icon\n iconSvg=\"links_line\"\n [width]=\"15\"\n [height]=\"15\"\n style=\"color: black\"\n [attr.data-tooltip]=\"('@pry.search.multi.in' | i18n) + ' ' + join(classesLinked)\"\n ></pry-icon>\n }\n </div>\n <ng-container [formGroup]=\"form\">\n <div class=\"m-form-label-field\">\n <pry-select\n [items]=\"operators$ | async\"\n placeholder=\"Opérateur\"\n formControlName=\"operator\"\n bindValue=\"operator\"\n bindLabel=\"translation\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n @if (condition.isDate) {\n <pry-date-picker\n formControlName=\"value\"\n (click)=\"onUpdateValue(condition)\"\n [rangePicker]=\"hasTwoFields\"\n [roundSelection]=\"true\"\n [timePicker]=\"true\"\n ></pry-date-picker>\n } @else {\n <input\n type=\"text\"\n class=\"a-form-field\"\n [placeholder]=\"\n (hasTwoFields ? '@pry.search.placeholder.minValue' : '@pry.search.placeholder.search') | i18n\n \"\n formControlName=\"value\"\n (focusout)=\"onUpdateValue(condition)\"\n />\n @if (hasTwoFields) {\n <input\n type=\"text\"\n class=\"a-form-field\"\n [placeholder]=\"'@pry.search.placeholder.maxValue' | i18n\"\n formControlName=\"upperValue\"\n (focusout)=\"onUpdateValue(condition)\"\n />\n }\n }\n @if (formValue?.errors?.['required'] && formValue?.touched) {\n <label class=\"a-label a-label--help -error\">\n {{ '@pry.search.multi.requiredError' | i18n }}\n </label>\n }\n </div>\n </ng-container>\n </div>\n <div class=\"o-multi-class-condition__delete-content\">\n @if (notLastCondition$ | async) {\n <button type=\"button\" class=\"a-btn a-btn--icon-only\">\n <pry-icon\n iconSvg=\"delete\"\n [height]=\"20\"\n [width]=\"20\"\n [animation]=\"false\"\n (click)=\"onRemoveCondition(condition)\"\n ></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.delete' | i18n }}</span>\n </button>\n } @else {\n <button type=\"button\" class=\"a-btn a-btn--icon-only\" disabled>\n <pry-icon [height]=\"20\" [width]=\"20\" iconSvg=\"delete\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.delete' | i18n }}</span>\n </button>\n }\n </div>\n </div>\n <ng-template #fieldSelectionTpl>\n <pry-multi-class-field-selection\n [conditionId]=\"condition.id\"\n (closeModal)=\"onCloseModal()\"\n (selectFieldChange)=\"onChangeField(condition, $event)\"\n ></pry-multi-class-field-selection>\n </ng-template>\n}\n","import { Component } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { MultiClassCondition } from '@provoly/dashboard';\nimport { Observable, take } from 'rxjs';\nimport { SearchMultiClassActions } from '../../store/search-multi-class.actions';\nimport { SearchMultiClassSelectors } from '../../store/search-multi-class.selectors';\n\n@Component({\n selector: 'pry-search-multi-class',\n templateUrl: './search-multi-class.component.html'\n})\nexport class PrySearchMultiClassComponent {\n conditions$: Observable<MultiClassCondition[]>;\n multiType$: Observable<'AND' | 'OR'>;\n\n optionsOpen = false;\n\n constructor(private store: Store<any>) {\n this.conditions$ = this.store.select(SearchMultiClassSelectors.conditions);\n this.multiType$ = this.store.select(SearchMultiClassSelectors.multiType);\n this.conditions$.pipe(take(1)).subscribe((conditions) => {\n if ((conditions?.length ?? 0) === 0) {\n this.store.dispatch(SearchMultiClassActions.addNewEmptyCondition());\n }\n });\n }\n\n onAddCondition() {\n this.store.dispatch(SearchMultiClassActions.addNewEmptyCondition());\n }\n\n onChangeMultiType(evt: any) {\n const multiType = evt ? 'OR' : 'AND';\n this.store.dispatch(SearchMultiClassActions.updateMultiType({ multiType }));\n }\n}\n","<div class=\"o-search-multi-class\">\n <div class=\"o-search-multi-class__header\">\n <h3 class=\"a-h3\">{{ '@pry.search.multi.title' | i18n }}</h3>\n <div\n class=\"a-tooltip\"\n [attr.data-tooltip]=\"'@pry.search.multi.extraOptions' | i18n\"\n data-tooltip-position=\"bottom\"\n [pryOverlay]=\"optionOverlay\"\n [(overlayOpen)]=\"optionsOpen\"\n (click)=\"optionsOpen = !optionsOpen\"\n >\n <button class=\"a-btn a-btn--icon-text\">\n {{ '@pry.search.multi.options' | i18n }}\n <pry-icon iconSvg=\"tune\" [width]=\"16\" [height]=\"16\" [animation]=\"false\"></pry-icon>\n </button>\n </div>\n <ng-template #optionOverlay>\n <div class=\"o-search-multi-class__options\">\n <pry-toggle\n [ngModel]=\"(multiType$ | async) === 'OR'\"\n [leftword]=\"'@pry.search.type.or' | i18n\"\n [rightword]=\"'@pry.search.type.and' | i18n\"\n [alwaysActive]=\"true\"\n (ngModelChange)=\"onChangeMultiType($event)\"\n >{{ '@pry.search.multi.multiType' | i18n }}</pry-toggle\n >\n </div>\n </ng-template>\n </div>\n\n <div class=\"o-search-multi-class__conditions-wrapper\">\n <div class=\"o-search-multi-class__conditions\">\n @for (condition of conditions$ | async; track condition) {\n <pry-multi-class-condition [id]=\"condition.id\"></pry-multi-class-condition>\n }\n </div>\n <div class=\"o-search-multi-class__add-condition\">\n <button (click)=\"onAddCondition()\" class=\"a-btn a-btn--secondary -size-sm\">\n <pry-icon [height]=\"20\" [width]=\"20\" iconSvg=\"add\"></pry-icon>\n {{ '@pry.search.multi.addCondition' | i18n }}\n </button>\n </div>\n </div>\n </div>\n","import { ConnectedPosition } from '@angular/cdk/overlay';\nimport { Component, ElementRef, EventEmitter, HostListener, Input, OnInit, Output, ViewChild } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport {\n Class,\n ClassSelectors,\n ClassState,\n DashboardActions,\n DEFAULT_NAMED_QUERY_ID,\n FullTextSearchPayload,\n NamedQuery\n} from '@provoly/dashboard';\nimport { Observable, take } from 'rxjs';\nimport { searchFulltextActions } from '../store/search-fulltext.actions';\n\nexport interface SearchFulltextChange {\n classes: string[];\n value: string;\n}\n\n@Component({\n selector: 'pry-search-fulltext',\n templateUrl: './search-fulltext.component.html'\n})\nexport class PrySearchFulltextComponent implements OnInit {\n @ViewChild('searchButton', { read: ElementRef }) searchButton?: ElementRef;\n @ViewChild('searchTrigger', { read: ElementRef }) searchTrigger!: ElementRef;\n @ViewChild('searchInput', { read: ElementRef }) searchInputRef!: ElementRef;\n @ViewChild('searchOverlay', { read: ElementRef }) searchOverlayRef!: ElementRef;\n @ViewChild('searchClass') searchClass!: ElementRef<HTMLButtonElement>;\n @ViewChild('chooseClasses') chooseClasses!: ElementRef;\n selectedClassItem?: Element | null;\n panelClassesOpen = false;\n panelSearchOpen = false;\n searchPanelWidth?: number;\n\n @Input() mode: 'inline' | 'vertical' = 'inline';\n @Input() launchButton: boolean = true;\n\n @Input() set currentEdit(nq: NamedQuery | null | undefined) {\n if (nq) {\n const request = nq.request as FullTextSearchPayload;\n this.search = request.fullSearch?.value;\n this.classesSelected = request.oClasses ?? [];\n } else {\n this.search = '';\n this.classesSelected = [];\n }\n this.searchDisabled = this.search === '';\n this.emitChange(this.search, this.classesSelected);\n }\n\n search = '';\n isFocused = false;\n @Output() searchChange = new EventEmitter<SearchFulltextChange>();\n\n private readonly BOTTOM_POSITION: ConnectedPosition = {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top'\n };\n private readonly TOP_POSITION: ConnectedPosition = {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom'\n };\n positions: ConnectedPosition[] = [this.BOTTOM_POSITION, this.TOP_POSITION];\n\n widgetSelected?: string;\n\n classesSelected: string[] = [];\n\n classes$: Observable<Class[]>;\n classesSelectedLabel = '@pry.search.fulltext.allClasses';\n searchDisabled = true;\n panelBottom: any;\n\n constructor(private store: Store<ClassState>) {\n this.classes$ = this.store.select(ClassSelectors.classes);\n }\n\n ngOnInit(): void {\n this.emitChange(this.search, this.classesSelected);\n }\n\n onArrowUp() {\n const lastElement = this.chooseClasses.nativeElement.lastElementChild;\n if (this.selectedClassItem?.previousElementSibling) {\n this.selectedClassItem = this.selectedClassItem?.previousElementSibling;\n } else {\n this.selectedClassItem = lastElement;\n }\n const focusElement = this.selectedClassItem as HTMLButtonElement;\n focusElement.focus();\n }\n\n onArrowDown() {\n const firstElement = this.chooseClasses.nativeElement.firstElementChild;\n if (this.selectedClassItem?.nextElementSibling) {\n this.selectedClassItem = this.selectedClassItem?.nextElementSibling;\n } else {\n this.selectedClassItem = firstElement;\n }\n const focusElement = this.selectedClassItem as HTMLButtonElement;\n focusElement.focus();\n }\n\n @HostListener('document:click', ['$event'])\n clickout(event: any) {\n if (this.panelSearchOpen) {\n setTimeout(() => {\n this.selectedClassItem = this.chooseClasses?.nativeElement?.firstElementChild;\n }, 10);\n const clickInput = this.searchInputRef?.nativeElement?.contains(event.target);\n if (!clickInput) {\n const clickPanel = this.searchOverlayRef?.nativeElement?.contains(event.target);\n if (!clickPanel) {\n this.panelSearchOpen = false;\n }\n }\n }\n }\n\n @HostListener('window:keyup.enter', ['$event'])\n keyEvent(event: KeyboardEvent) {\n this.chooseClasses?.nativeElement?.firstElementChild.focus();\n this.selectedClassItem = this.chooseClasses?.nativeElement?.firstElementChild;\n const search = this.search;\n if ((search ?? '') !== '' && (this.panelSearchOpen || this.isFocused)) {\n this.searchButton?.nativeElement.click();\n }\n }\n\n closeFocus() {\n if (this.panelClassesOpen) {\n this.panelClassesOpen = false;\n this.searchClass?.nativeElement?.focus();\n }\n }\n\n onSearch() {\n this.panelSearchOpen = false;\n const search = this.search;\n if ((search ?? '') !== '') {\n const classes = this.classesSelected;\n this.store.dispatch(searchFulltextActions.search({ classes, search }));\n this.store.dispatch(\n DashboardActions.updateWidgetInPresentation({\n id: DEFAULT_NAMED_QUERY_ID,\n widgetType: this.widgetSelected ?? 'table'\n })\n );\n }\n }\n\n onChangeSearch(evt: any) {\n const value = evt?.target?.value ?? '';\n this.searchDisabled = value === '';\n this.emitChange(value, this.classesSelected);\n }\n\n onClearSearch(evt: any) {\n this.search = '';\n this.searchDisabled = true;\n this.emitChange(this.search, this.classesSelected);\n }\n\n onOpenSearchPanel() {\n this.isFocused = true;\n this.searchPanelWidth = this.searchInputRef.nativeElement.getBoundingClientRect().width;\n this.panelSearchOpen = true;\n }\n\n onFocusOut() {\n this.isFocused = false;\n }\n\n onSelectWidget(widget: string) {\n this.widgetSelected = this.widgetSelected === widget ? undefined : widget;\n }\n\n onSelectAllClasses() {\n this.classesSelected = [];\n this.classesSelectedLabel = '@pry.search.fulltext.allClasses';\n }\n\n onSelectClass(clazz: Class) {\n if (this.classesSelected.indexOf(clazz.id) !== -1) {\n this.classesSelected = this.classesSelected.filter((c) => clazz.id !== c);\n } else {\n this.classesSelected = [...this.classesSelected, clazz.id];\n }\n\n this.emitChange(this.search, this.classesSelected);\n\n if (this.classesSelected?.length === 1) {\n this.classes$.pipe(take(1)).subscribe((classes) => {\n this.classesSelectedLabel =\n classes.find((c) => this.classesSelected[0] === c.id)?.name ?? '@pry.search.fulltext.oneClass';\n });\n } else if (this.classesSelected?.length > 1) {\n this.classesSelectedLabel = '@pry.search.fulltext.manyClasses';\n } else {\n this.classesSelectedLabel = '@pry.search.fulltext.allClasses';\n }\n }\n\n private emitChange(value: string, classes: string[]) {\n const payload = { value, classes };\n this.searchChange.emit(payload);\n }\n}\n","<pry-search-css></pry-search-css>\n<div class=\"o-search-fulltext\" [class.o-search-fulltext--vertical]=\"mode === 'vertical'\">\n <div class=\"o-search-fulltext__container\">\n <button\n #searchClass\n type=\"button\"\n class=\"o-search-fulltext__classes\"\n [class.o-search-fulltext__classes--inline]=\"mode === 'inline'\"\n [pryOverlay]=\"classesOverlay\"\n [(overlayOpen)]=\"panelClassesOpen\"\n pryOverlayPosition=\"start-top\"\n [pryOverlaySticky]=\"true\"\n [pryOverlayNoPadding]=\"true\"\n (click)=\"panelClassesOpen = true\"\n >\n <span\n class=\"o-search-fulltext__classes__content a-tooltip\"\n [attr.data-tooltip]=\"'@pry.search.fulltext.selectClass' | i18n\"\n data-tooltip-position=\"bottom\"\n >\n <pry-icon\n [iconSvg]=\"classesSelected.length === 0 ? 'apps' : 'detail'\"\n [height]=\"20\"\n [width]=\"20\"\n [animation]=\"false\"\n ></pry-icon>\n @if (mode === 'inline') {\n <span class=\"o-search-fulltext__classes__content__label\">\n {{ classesSelectedLabel | i18n : { nb: classesSelected.length } }}\n </span>\n }\n </span>\n\n <span class=\"o-search-fulltext__classes__arrow\">\n <pry-icon\n iconSvg=\"fleche_bas\"\n [width]=\"17\"\n [height]=\"17\"\n [animation]=\"false\"\n class=\"o-search-fulltext__classes__arrow__icon\"\n [class.is-open]=\"panelClassesOpen\"\n ></pry-icon>\n </span>\n </button>\n\n <pry-choose-widget\n [mode]=\"'input'\"\n [class.m-choose-widget__input__inline]=\"mode === 'inline'\"\n [panelOpen]=\"panelSearchOpen\"\n [width]=\"searchPanelWidth ?? 200\"\n (selected)=\"onSelectWidget($event)\"\n >\n <input\n #searchInput\n [(ngModel)]=\"search\"\n (input)=\"onChangeSearch($event)\"\n (focusin)=\"onOpenSearchPanel()\"\n (focusout)=\"onFocusOut()\"\n />\n @if (!searchDisabled) {\n <div class=\"o-search-fulltext__input__clear\">\n <div class=\"o-search-fulltext__input__clear__wrapper\" (click)=\"onClearSearch($event)\">\n <div\n class=\"a-tooltip\"\n [attr.data-tooltip]=\"'@pry.search.fulltext.clear' | i18n\"\n data-tooltip-position=\"bottom\"\n >\n <pry-icon iconSvg=\"close\" [height]=\"16\" [width]=\"16\" [animation]=\"false\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.search.fulltext.clear' | i18n }}</span>\n </div>\n </div>\n </div>\n }\n </pry-choose-widget>\n </div>\n\n @if (launchButton) {\n <button\n #searchButton\n class=\"a-btn a-btn--primary a-tooltip\"\n (click)=\"onSearch()\"\n [class.o-search-fulltext__button__inline]=\"mode === 'inline'\"\n [ngClass]=\"{ ' -width-full': mode === 'vertical' }\"\n [disabled]=\"searchDisabled\"\n [attr.data-tooltip]=\"'@pry.search.fulltext.search' | i18n\"\n data-tooltip-position=\"bottom\"\n >\n <pry-icon iconSvg=\"search-line\" [animation]=\"false\"></pry-icon>\n @if (mode === 'vertical') {\n <span>{{ '@pry.search.fulltext.search' | i18n }}</span>\n }\n <span class=\"u-visually-hidden\">{{ '@pry.search.fulltext.search' | i18n }}</span>\n </button>\n }\n</div>\n\n<ng-template #classesOverlay>\n <div\n class=\"o-search-fulltext__classes-overlay\"\n #chooseClasses\n (keydown.escape)=\"closeFocus()\"\n (keydown.arrowDown)=\"onArrowDown()\"\n (keydown.arrowUp)=\"onArrowUp()\"\n >\n <button class=\"o-search-fulltext__classes-overlay__item\" (click)=\"onSelectAllClasses()\">\n <pry-icon iconSvg=\"apps\" [width]=\"20\" [height]=\"20\"></pry-icon>\n <span class=\"o-search-fulltext__classes-overlay__item__label\">{{\n '@pry.search.fulltext.allClasses' | i18n\n }}</span>\n </button>\n @for (clazz of classes$ | async; track clazz; let last = $last) {\n <button\n type=\"button\"\n class=\"o-search-fulltext__classes-overlay__item\"\n (click)=\"onSelectClass(clazz)\"\n [class.o-search-fulltext__classes-overlay__item__selected]=\"classesSelected.includes(clazz.id)\"\n (keydown.tab)=\"last ? closeFocus() : null\"\n >\n <img\n alt=\"class\"\n [height]=\"20\"\n [width]=\"20\"\n [src]=\"clazz.id | translateId : { type: 'class', output: 'icon' } | async\"\n />\n <span class=\"o-search-fulltext__classes-overlay__item__label\">{{ clazz.name }}</span>\n </button>\n }\n </div>\n</ng-template>\n","import { Component, Input, OnChanges, SimpleChanges } from '@angular/core';\nimport { DatasourceUtils, NamedQuery, NamedQueryTypes, PryDialogService } from '@provoly/dashboard';\nimport { SearchFulltextChange } from '../../search-fulltext/search-fulltext/search-fulltext.component';\nimport { PrySaveQueryComponent } from '../save-query/save-query.component';\n\n@Component({\n selector: 'pry-save-query-button',\n templateUrl: './save-query-button.component.html'\n})\nexport class PrySaveQueryButtonComponent implements OnChanges {\n @Input() editInProgress: boolean | null = false;\n @Input() currentEdit?: NamedQuery | null;\n @Input() currentEditType?: NamedQueryTypes | null;\n @Input() fulltextValid: boolean | null = false;\n @Input() multiValid: boolean | null = false;\n @Input() monoValid: boolean | null = false;\n @Input() isNotFulltext = false;\n @Input() isMonoSearch = false;\n @Input() fulltextSearch?: SearchFulltextChange;\n @Input() saveDisabled = true;\n\n constructor(private pryDialog: PryDialogService) {}\n\n ngOnChanges(changes: SimpleChanges): void {\n const isEditFulltextValid =\n this.editInProgress && this.currentEditType === NamedQueryTypes.FULL_TEXT && this.fulltextValid;\n const isEditMonoValid =\n this.editInProgress && this.currentEditType === NamedQueryTypes.MONO_CLASS && this.monoValid;\n const isEditMultiValid =\n this.editInProgress && this.currentEditType === NamedQueryTypes.MULTI_CLASS && this.multiValid;\n const isCreateFulltextValid = !this.editInProgress && !this.isNotFulltext && this.fulltextValid;\n const isCreateMonoValid = !this.editInProgress && this.isNotFulltext && this.isMonoSearch && this.monoValid;\n const isCreateMultiValid = !this.editInProgress && this.isNotFulltext && !this.isMonoSearch && this.multiValid;\n this.saveDisabled =\n //test pour rendre inactive la sauvegarde via l'edition\n //!isEditFulltextValid &&\n //!isEditMonoValid &&\n //!isEditMultiValid &&\n !isCreateFulltextValid && !isCreateMonoValid && !isCreateMultiValid;\n }\n\n openSaveQuery() {\n if (!this.saveDisabled) {\n const save = true;\n const nq = this.currentEdit;\n const type = nq\n ? DatasourceUtils.getTypeFromPayload(nq.request)\n : this.getNQType(this.isNotFulltext, this.isMonoSearch);\n const data = type === NamedQueryTypes.FULL_TEXT ? { save, type, payload: this.fulltextSearch } : { save, type };\n this.pryDialog.open(PrySaveQueryComponent, { data });\n }\n }\n\n private getNQType(isNotFulltext: boolean, isMono: boolean): NamedQueryTypes {\n return isNotFulltext\n ? isMono\n ? NamedQueryTypes.MONO_CLASS\n : NamedQueryTypes.MULTI_CLASS\n : NamedQueryTypes.FULL_TEXT;\n }\n}\n","<button class=\"a-btn a-btn--icon-text save-query-button\" (click)=\"openSaveQuery()\" [disabled]=\"saveDisabled\">\n <pry-icon iconSvg=\"save-line\"></pry-icon>\n <span>{{ '@pry.search.namedQuery.open' | i18n }}</span>\n</button>\n","import { Component, EventEmitter, HostBinding, Input, Output } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport {\n DashboardActions,\n DataSourceActions,\n DataSourceSelectors,\n DatasourceUtils,\n DEFAULT_NAMED_QUERY_ID,\n NamedQuery,\n NamedQueryTypes,\n SearchActions,\n SubscriptionnerDirective\n} from '@provoly/dashboard';\nimport { Observable } from 'rxjs';\nimport { SearchFulltextChange } from '../../search-fulltext/search-fulltext/search-fulltext.component';\nimport { searchFulltextActions } from '../../search-fulltext/store/search-fulltext.actions';\nimport { SearchMonoClassActions } from '../../search-mono-class/store/search-mono-class.actions';\nimport { SearchMonoClassSelectors } from '../../search-mono-class/store/search-mono-class.selectors';\nimport { SearchMultiClassActions } from '../../search-multi-class/store/search-multi-class.actions';\nimport { SearchMultiClassSelectors } from '../../search-multi-class/store/search-multi-class.selectors';\n\n@Component({\n selector: 'pry-edit-named-query',\n templateUrl: './edit-named-query.component.html'\n})\nexport class EditNamedQueryComponent extends SubscriptionnerDirective {\n @HostBinding('class') class = 'o-edit-named-query-wrapper';\n currentEditType$: Observable<NamedQueryTypes | undefined>;\n currentEdit$: Observable<NamedQuery | undefined>;\n searchMultiClassValid$: Observable<boolean>;\n searchMonoClassValid$: Observable<boolean>;\n readonly FULL_TEXT = NamedQueryTypes.FULL_TEXT;\n readonly MONO_CLASS = NamedQueryTypes.MONO_CLASS;\n readonly MULTI_CLASS = NamedQueryTypes.MULTI_CLASS;\n isSearchCriteria = false;\n isSearchParams = false;\n @Input() fromWidget?: { windowsIndex: number; widgetIndex: number };\n DEFAULT_NAMED_QUERY_ID = DEFAULT_NAMED_QUERY_ID;\n\n @Output() searchFulltextChange = new EventEmitter<SearchFulltextChange>();\n @Output() cancelled = new EventEmitter<void>();\n @Output() searched = new EventEmitter<void>();\n currentEdit?: NamedQuery;\n private fullTextPayload: SearchFulltextChange = { value: '', classes: [] };\n widgetType: string = 'table';\n\n constructor(private store: Store) {\n super();\n this.currentEditType$ = this.store.select(DataSourceSelectors.currentEditType);\n this.currentEdit$ = this.store.select(DataSourceSelectors.currentEdit);\n this.searchMultiClassValid$ = this.store.select(SearchMultiClassSelectors.searchMultiClassValid);\n this.searchMonoClassValid$ = this.store.select(SearchMonoClassSelectors.searchMonoClassValid);\n this.subscriptions.add(this.currentEdit$.subscribe((currentEdit) => (this.currentEdit = currentEdit)));\n }\n\n cancel() {\n this.isSearchCriteria = false;\n this.isSearchParams = false;\n this.store.dispatch(DataSourceActions.namedQuery.stopEdit());\n this.cancelled.emit();\n }\n\n search() {\n // Save as current name\n const descriptionQuery = {\n name: this.currentEdit?.name ?? '',\n description: this.currentEdit?.description,\n visibility: this.currentEdit?.visibility ?? undefined\n };\n switch (DatasourceUtils.getTypeFromPayload(this.currentEdit?.request)) {\n case NamedQueryTypes.FULL_TEXT:\n this.store.dispatch(\n searchFulltextActions.save({\n descriptionQuery,\n id: this.currentEdit?.id,\n classes: this.fullTextPayload.classes,\n search: this.fullTextPayload.value\n })\n );\n break;\n case NamedQueryTypes.MONO_CLASS:\n this.store.dispatch(SearchMonoClassActions.save({ descriptionQuery, id: this.currentEdit?.id }));\n break;\n case NamedQueryTypes.MULTI_CLASS:\n this.store.dispatch(SearchMultiClassActions.save({ descriptionQuery, id: this.currentEdit?.id }));\n break;\n }\n if (this.currentEdit?.id !== DEFAULT_NAMED_QUERY_ID) {\n this.store.dispatch(\n SearchActions.getDatasourceItems({\n id: this.currentEdit?.id ?? DEFAULT_NAMED_QUERY_ID,\n excludeGeo: false,\n from: 'EditNamedQueryComponent.search()'\n })\n );\n }\n this.store.dispatch(\n DashboardActions.updateWidgetInPresentation({\n id: this.currentEdit?.id ?? DEFAULT_NAMED_QUERY_ID,\n widgetType: this.widgetType\n })\n );\n this.searched.emit();\n }\n\n onSearchFulltextChange(evt: SearchFulltextChange) {\n this.searchFulltextChange.emit(evt);\n this.fullTextPayload = evt;\n }\n\n select($event: string) {\n this.widgetType = $event;\n }\n}\n","<div class=\"o-edit-named-query\">\n @if (currentEditType$ | async; as currentEditType) {\n <div class=\"o-edit-named-query__content\">\n @switch (currentEditType) {\n @case (FULL_TEXT) {\n <pry-search-fulltext\n mode=\"vertical\"\n [launchButton]=\"false\"\n (searchChange)=\"onSearchFulltextChange($event)\"\n [currentEdit]=\"currentEdit$ | async\"\n ></pry-search-fulltext>\n }\n @case (MONO_CLASS) {\n <pry-search-mono-class></pry-search-mono-class>\n }\n @case (MULTI_CLASS) {\n <pry-search-multi-class></pry-search-multi-class>\n }\n }\n </div>\n <div class=\"o-edit-named-query__buttons\">\n @if (currentEditType !== FULL_TEXT) {\n <pry-choose-widget (selected)=\"select($event)\"></pry-choose-widget>\n }\n <div class=\"m-btn-group\">\n @if (currentEditType === FULL_TEXT) {\n <button type=\"button\" class=\"a-btn a-btn--primary\" (click)=\"cancel()\">\n {{ '@pry.search.button.cancel' | i18n }}\n </button>\n }\n <button\n [disabled]=\"\n (currentEditType === MULTI_CLASS && !(searchMultiClassValid$ | async)) ||\n (currentEditType === MONO_CLASS && !(searchMonoClassValid$ | async)) ||\n !(currentEdit$ | async)?.owner\n \"\n type=\"button\"\n class=\"a-btn a-btn--primary a-btn--icon-text\"\n (click)=\"search()\"\n >\n <pry-icon iconSvg=\"search-line\"></pry-icon>\n {{\n ((currentEdit$ | async)?.id === DEFAULT_NAMED_QUERY_ID\n ? '@pry.search.button.search'\n : '@pry.search.button.update'\n ) | i18n\n }}\n </button>\n </div>\n </div>\n }\n</div>\n","import { Component, HostBinding, OnDestroy } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport {\n ClassActions,\n ClassState,\n DashboardActions,\n DataSourceActions,\n DataSourceSelectors,\n DataSourceState,\n DEFAULT_NAMED_QUERY_ID,\n FieldActions,\n FieldState,\n NamedQuery,\n NamedQueryTypes\n} from '@provoly/dashboard';\nimport { combineLatest, delay, map, Observable, of, Subscription } from 'rxjs';\nimport { v4 } from 'uuid';\nimport { SearchFulltextChange } from '../search-fulltext/search-fulltext/search-fulltext.component';\nimport { SearchMonoClassActions } from '../search-mono-class/store/search-mono-class.actions';\nimport { SearchMonoClassSelectors } from '../search-mono-class/store/search-mono-class.selectors';\nimport { SearchMultiClassActions } from '../search-multi-class/store/search-multi-class.actions';\nimport { SearchMultiClassState } from '../search-multi-class/store/search-multi-class.reducer';\nimport { SearchMultiClassSelectors } from '../search-multi-class/store/search-multi-class.selectors';\n\n@Component({\n selector: 'pry-search-tools',\n templateUrl: './search-tools.component.html'\n})\nexport class PrySearchToolsComponent implements OnDestroy {\n @HostBinding('class.o-pry-search-tools-wrapper') class = true;\n @HostBinding('class.is-close') searchToolsClose = false;\n\n searchMultiClassValid$: Observable<boolean>;\n searchMonoClassValid$: Observable<boolean>;\n loading$: Observable<boolean>;\n isRename$: Observable<boolean>;\n\n isSearchCriteria = false;\n isSearchMono = false;\n isSearchFullText = false;\n isSearchFulltextValid = false;\n isMoreList = false;\n widgetType: string = 'table';\n\n get isNewMono(): boolean {\n return this.isSearchCriteria && this.isSearchMono;\n }\n\n get isEditMono$(): Observable<boolean> {\n return combineLatest([this.currentEditType$, this.isRename$]).pipe(\n map(([type, isRename]) => type === NamedQueryTypes.MONO_CLASS && !isRename)\n );\n }\n\n getIcon = {\n caracteristique: 'default',\n lieu: 'default',\n meteo: 'default',\n usager: 'profil',\n valeur_fonciere: 'default',\n vehicule: 'car'\n } as { [clazz: string]: string };\n\n items: Observable<any[] | null> = of([\n { id: 1, name: '1' },\n { id: 2, name: '2' },\n { id: 3, name: '3' },\n { id: 4, name: '4' }\n ]);\n editInProgress$: Observable<boolean>;\n currentEdit$: Observable<NamedQuery | undefined>;\n currentEditType$: Observable<NamedQueryTypes | undefined>;\n readonly FULL_TEXT = NamedQueryTypes.FULL_TEXT;\n readonly MONO_CLASS = NamedQueryTypes.MONO_CLASS;\n readonly MULTI_CLASS = NamedQueryTypes.MULTI_CLASS;\n searchFulltextTemp?: SearchFulltextChange;\n\n private sub = new Subscription();\n\n constructor(private store: Store<DataSourceState | SearchMultiClassState | FieldState | ClassState>) {\n this.loading$ = this.store.select(DataSourceSelectors.isLoading);\n this.store.dispatch(DataSourceActions.load({}));\n this.store.dispatch(FieldActions.load({}));\n this.store.dispatch(ClassActions.load({}));\n this.searchMultiClassValid$ = this.store.select(SearchMultiClassSelectors.searchMultiClassValid).pipe(delay(100));\n this.searchMonoClassValid$ = this.store.select(SearchMonoClassSelectors.searchMonoClassValid).pipe(delay(100));\n this.editInProgress$ = this.store.select(DataSourceSelectors.editInProgress);\n this.currentEditType$ = this.store.select(DataSourceSelectors.currentEditType);\n this.currentEdit$ = this.store.select(DataSourceSelectors.currentEdit);\n this.isRename$ = this.store.select(DataSourceSelectors.isRename);\n this.sub.add(\n combineLatest([this.editInProgress$, this.isRename$]).subscribe(([editInProgress, isRename]) => {\n if (editInProgress && this.searchToolsClose && !isRename) {\n this.onChangePanel();\n }\n })\n );\n }\n\n ngOnDestroy(): void {\n this.sub.unsubscribe();\n }\n\n onSearchCriteria() {\n this.isSearchCriteria = true;\n this.store.dispatch(\n DataSourceActions.namedQuery.openEdit({\n currentEdit: {\n sourceType: 'namedQuery',\n id: v4(),\n request: { type: NamedQueryTypes.MULTI_CLASS, fullSearch: null, fields: [], multiType: 'AND' },\n name: ''\n }\n })\n );\n }\n\n onSearchTools() {\n this.isSearchCriteria = false;\n this.store.dispatch(DataSourceActions.namedQuery.stopEdit());\n this.resizeScreen();\n }\n\n back() {\n this.store.dispatch(DataSourceActions.namedQuery.stopEdit());\n this.resizeScreen();\n }\n\n onMonoSearch() {\n this.isSearchMono = !this.isSearchMono;\n this.resizeScreen();\n }\n\n onChangeListView(isMoreList: boolean) {\n this.isMoreList = !isMoreList;\n }\n\n onSearchFulltextChange(payload: SearchFulltextChange) {\n setTimeout(() => {\n this.isSearchFulltextValid = payload.value !== '';\n this.searchFulltextTemp = payload;\n }, 10);\n }\n\n onSearch() {\n if (this.isSearchMono) {\n this.store.dispatch(SearchMonoClassActions.search());\n } else {\n this.store.dispatch(SearchMultiClassActions.search());\n }\n this.store.dispatch(\n DashboardActions.updateWidgetInPresentation({\n id: DEFAULT_NAMED_QUERY_ID,\n widgetType: this.widgetType\n })\n );\n }\n\n onChangePanel() {\n this.searchToolsClose = !this.searchToolsClose;\n this.resizeScreen();\n }\n\n private resizeScreen() {\n setTimeout(() => window?.dispatchEvent(new Event('resize')), 400);\n }\n\n selectWidget($event: string) {\n this.widgetType = $event;\n }\n\n reset() {\n this.store.dispatch(DataSourceActions.namedQuery.stopEdit());\n this.isSearchCriteria = true;\n }\n\n updateVisibility($event: any) {\n this.store.dispatch(DataSourceActions.namedQuery.updateCurrentEdit({ currentEdit: { visibility: $event } }));\n }\n}\n","<div\n class=\"o-pry-search-tools\"\n [class.is-close]=\"searchToolsClose\"\n [class.is-mono]=\"isNewMono || (isEditMono$ | async)\"\n >\n @if (((editInProgress$ | async) && !(isRename$ | async)) || isSearchCriteria) {\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-text -back a-tooltip\"\n (click)=\"onSearchTools()\"\n aria-pressed=\"false\"\n [attr.data-tooltip]=\"'@pry.search.button.backSearch' | i18n\"\n data-tooltip-position=\"bottom\"\n >\n <pry-icon iconSvg=\"arrow_back\" [width]=\"24\" [height]=\"24\" [animation]=\"false\"></pry-icon>\n <span>{{ '@pry.search.button.backSearch' | i18n }}</span>\n </button>\n }\n <div class=\"o-pry-search-tools__content\" [class.is-close]=\"searchToolsClose\">\n @if (((editInProgress$ | async) && !(isRename$ | async)) || isSearchCriteria) {\n <button\n class=\"a-btn a-btn--icon-text -link-like u-self-end\"\n (click)=\"reset()\"\n id=\"btn_reset\"\n >\n <pry-icon iconSvg=\"reset\" [width]=\"18\" [height]=\"18\"></pry-icon>\n {{ '@pry.search.button.reset' | i18n }}\n </button>\n }\n @if (editInProgress$ | async) {\n <pry-share [ngModel]=\"(currentEdit$ | async)?.visibility\" (ngModelChange)=\"updateVisibility($event)\"></pry-share>\n }\n @if ((editInProgress$ | async) && !(isRename$ | async) && !(loading$ | async)) {\n <pry-edit-named-query\n (searchFulltextChange)=\"onSearchFulltextChange($event)\"\n (cancelled)=\"onSearchTools()\"\n ></pry-edit-named-query>\n } @else {\n @if (isSearchCriteria && !(loading$ | async)) {\n <pry-toggle\n class=\"o-pry-search-tools__content__toggle\"\n [ngModel]=\"isSearchMono\"\n (ngModelChange)=\"onMonoSearch()\"\n [alwaysActive]=\"true\"\n mode=\"action\"\n >\n {{ (isSearchMono ? '@pry.search.button.mono' : '@pry.search.button.multi') | i18n }}\n </pry-toggle>\n <div class=\"o-pry-search-tools__content__full\">\n @if (isSearchMono) {\n <pry-search-mono-class></pry-search-mono-class>\n } @else {\n <pry-search-multi-class></pry-search-multi-class>\n }\n </div>\n <div class=\"o-pry-search-tools__content__button-search\">\n @if (isSearchCriteria) {\n <pry-choose-widget (selected)=\"selectWidget($event)\"></pry-choose-widget>\n }\n @if (!isSearchCriteria) {\n <button class=\"a-btn a-btn--primary\" (click)=\"onSearchTools()\">\n {{ '@pry.search.button.cancel' | i18n }}\n </button>\n }\n <button\n [disabled]=\"\n (!(searchMultiClassValid$ | async) && !isSearchMono) || (!(searchMonoClassValid$ | async) && isSearchMono)\n \"\n class=\"a-btn a-btn--primary\"\n (click)=\"onSearch()\"\n >\n <pry-icon iconSvg=\"search-line\"></pry-icon>\n {{ '@pry.search.button.search' | i18n }}\n </button>\n </div>\n } @else {\n <div class=\"o-pry-search-tools__content__full\">\n <pry-search-home\n class=\"o-pry-search-home\"\n [isMoreList]=\"isMoreList\"\n [searchFulltextTpl]=\"searchFulltextTpl\"\n (changeListView)=\"onChangeListView($event)\"\n (changeSearchCriteria)=\"onSearchCriteria()\"\n ></pry-search-home>\n <ng-template #searchFulltextTpl>\n <pry-search-fulltext mode=\"vertical\" (searchChange)=\"onSearchFulltextChange($event)\"></pry-search-fulltext>\n </ng-template>\n </div>\n }\n }\n\n </div>\n <div class=\"o-pry-search-tools__footer\" [class.is-close]=\"searchToolsClose\">\n <pry-save-query-button\n [editInProgress]=\"editInProgress$ | async\"\n [currentEdit]=\"currentEdit$ | async\"\n [currentEditType]=\"currentEditType$ | async\"\n [fulltextValid]=\"isSearchFulltextValid\"\n [multiValid]=\"searchMultiClassValid$ | async\"\n [monoValid]=\"searchMonoClassValid$ | async\"\n [isNotFulltext]=\"isSearchCriteria\"\n [isMonoSearch]=\"isSearchMono\"\n [fulltextSearch]=\"searchFulltextTemp\"\n ></pry-save-query-button>\n </div>\n</div>\n","import { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { Component, TemplateRef, ViewChild, ViewContainerRef } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { ConfigActions, DataSourceActions, DataSourceSelectors, SubscriptionnerDirective } from '@provoly/dashboard';\n\n@Component({\n selector: 'pry-edit-named-query-modal',\n templateUrl: './edit-named-query-modal.component.html'\n})\nexport class EditNamedQueryModalComponent extends SubscriptionnerDirective {\n private overlayRef?: OverlayRef;\n @ViewChild('template', { read: TemplateRef }) template!: TemplateRef<any>;\n\n constructor(\n private store: Store,\n private overlay: Overlay,\n private viewContainerRef: ViewContainerRef\n ) {\n super();\n\n this.subscriptions.add(\n this.store.select(DataSourceSelectors.editInProgress).subscribe((inProgress) => {\n if (inProgress && !this.overlayRef && !this.isPanelAlreadyPresent) {\n // open modal\n this.overlayRef = this.overlay.create(\n new OverlayConfig({\n hasBackdrop: true,\n panelClass: ['o-edit-named-query-modal'],\n backdropClass: 'backdrop'\n })\n );\n this.store.dispatch(ConfigActions.addingOverlay({ id: this.constructor.name }));\n this.overlayRef.backdropClick().subscribe((_) => {\n this.close();\n });\n this.overlayRef.attach(new TemplatePortal(this.template, this.viewContainerRef));\n }\n if (!inProgress) {\n this.close();\n }\n })\n );\n }\n\n close() {\n this.overlayRef?.dispose();\n this.overlayRef = undefined;\n this.store.dispatch(DataSourceActions.namedQuery.stopEdit());\n this.store.dispatch(ConfigActions.closeOverlay({ id: this.constructor.name }));\n }\n\n get isPanelAlreadyPresent() {\n return (\n document.getElementsByTagName('pry-search-home').length +\n document.getElementsByTagName('pry-search-tools').length >\n 0\n );\n }\n}\n","<ng-template #template>\n <div>\n <pry-search-tools></pry-search-tools>\n </div>\n</ng-template>\n","export const enTranslations = {\n '@pry': {\n search: {\n title: 'Search',\n button: {\n update: 'Save',\n search: 'Search',\n cancel: 'Cancel',\n reset: 'Reset',\n backSearch: 'Back to searches list',\n mono: 'Class search',\n multi: 'Business field search'\n },\n home: {\n or: 'or',\n title: 'My search',\n ssTitle: 'New search',\n searchByCriteria: 'search by criteria',\n associatedWidget: 'widget associated with this search',\n showAssociatedWidget: 'Show the widget associated with this search',\n otherActions: 'Other actions'\n },\n attribute: {\n title: 'Attribute: ',\n remove: 'Remove attribute filter'\n },\n type: {\n and: 'AND',\n or: 'OR'\n },\n composed: {\n class: 'Class',\n title: 'Include filters',\n order: 'Add sort',\n orderA: 'Ascending',\n orderD: 'Descending',\n orderNone: 'None',\n shouldSelectClass: 'Select a class',\n changeClassWarning: 'Change class will remove all conditions',\n addCondition: 'Add condition',\n addGroup: 'Add nested group',\n removeGroup: 'Remove nested group'\n },\n operator: {\n contains: 'Contains (case sensitive)',\n containsCaseInsensitive: 'Contains (case insensitive)',\n startWith: 'Starts with',\n endWith: 'Ends with',\n notEqualsString: 'Different from',\n notEqualsNumber: 'Different from',\n equalsString: 'Match',\n equalsNumber: 'Equal to',\n greaterThanNumber: 'Greater than',\n lowerThanNumber: 'Lower than',\n innerBoundsNumber: 'Between',\n outerBoundsNumber: 'Outside',\n greaterThanDate: 'After',\n lowerThanDate: 'Before',\n innerBoundsDate: 'Between',\n outerBoundsDate: 'Outside',\n in: 'In',\n not_in: 'Not in'\n },\n placeholder: {\n search: 'Enter value...',\n minValue: 'Min value...',\n maxValue: 'Max value...'\n },\n namedQuery: {\n emptyNamedQuery: 'No saved search',\n open: 'Save search...',\n title: 'Give a name to this search',\n saveTitle: 'Save search',\n renameTitle: 'Rename search',\n rename: 'Rename',\n name: 'Name',\n description: 'Description',\n favorite: 'Pin',\n noFavorite: 'Detach',\n display: 'Display',\n refreshData: 'Refresh',\n noSpot: 'Unused search',\n color: 'Data color',\n spot: 'Spot',\n spotTitle: 'This query is used {{length}} times:',\n use: 'View n°{{windowIndex}}',\n delete: 'Delete',\n edit: 'Edit',\n seeLess: 'see less',\n seeMore: 'see More',\n explore: 'Exploring set',\n type: {\n map: 'Map',\n table: 'Table',\n chart: 'Chart',\n graph: 'Network Relation'\n },\n alreadyEditing: 'A search is already being edited.',\n refresh: {\n title: 'Automatic refresh',\n 0: 'Inactive',\n 10: '10 seconds',\n 30: '30 seconds',\n 60: '1 minute'\n }\n },\n mono: {\n title: 'Search advanded criteria'\n },\n fulltext: {\n allClasses: 'All classes',\n oneClass: 'One selected class',\n manyClasses: '{{nb}} selected classes',\n selectClass: 'Select class',\n search: 'Search',\n clear: 'Clear input'\n },\n multi: {\n title: 'Add criterias',\n addCondition: 'Add one criteria',\n options: 'Options',\n extraOptions: 'Extra options',\n multiType: 'Kind of association',\n search: 'Search',\n requiredError: 'Value is missing',\n patternError: 'Format is incorrect',\n selectField: 'Select the criteria',\n legend: 'Criteria / classes using it',\n in: 'in'\n },\n params: {\n title: 'Search parameters',\n button: 'Save settings',\n namedQuery: {\n title: 'Searches',\n description: 'This part presents default parameters when creating a new search, like color or refresh rate.'\n }\n }\n }\n }\n};\n","export const frTranslations = {\n '@pry': {\n search: {\n title: 'Recherche',\n button: {\n update: 'Enregistrer',\n search: 'Rechercher',\n cancel: 'Annuler',\n reset: 'Remise à zéro',\n backSearch: 'Retour à la liste des recherches',\n mono: 'Recherche par classe',\n multi: 'Recherche par champs métier'\n },\n home: {\n or: 'ou',\n title: 'Mes recherches',\n ssTitle: 'Nouvelle recherche',\n searchByCriteria: 'Recherche par critères',\n associatedWidget: 'le widget associé à cette recherche',\n showAssociatedWidget: 'Afficher le widget associé à cette recherche',\n otherActions: 'Autres actions'\n },\n attribute: {\n title: 'Attribut : ',\n remove: 'Retirer le filtre'\n },\n type: {\n and: 'ET',\n or: 'OU'\n },\n composed: {\n class: 'Classe',\n title: 'Incluez des filtres',\n order: 'Ajouter un tri',\n orderA: 'Croissant',\n orderD: 'Décroissant',\n orderNone: 'Aucun tri',\n shouldSelectClass: 'Choisissez une classe',\n changeClassWarning: 'Changer de classe supprimera toutes les conditions',\n addCondition: 'Ajouter une condition',\n addGroup: 'Ajouter un sous-groupe',\n removeGroup: 'Supprimer un sous-groupe'\n },\n operator: {\n contains: 'Contient (sensible à la casse)',\n containsCaseInsensitive: 'Contient (pas sensible à la casse)',\n startWith: 'Commence par',\n endWith: 'Fini par',\n notEqualsString: 'Différent de',\n notEqualsNumber: 'Différent de',\n equalsString: 'Exactement',\n equalsNumber: 'Egal',\n greaterThanNumber: 'Supérieur à',\n lowerThanNumber: 'Inférieur à',\n innerBoundsNumber: 'Compris entre',\n outerBoundsNumber: \"A l'extérieur de\",\n greaterThanDate: 'Après',\n lowerThanDate: 'Avant',\n innerBoundsDate: 'Entre deux dates',\n outerBoundsDate: \"A l'extérieur d'une période\",\n in: 'Appartient à',\n not_in: \"N'appartient pas à\"\n },\n placeholder: {\n search: 'Entrer la valeur ...',\n minValue: 'Valeur min ...',\n maxValue: 'Valeur max ...'\n },\n namedQuery: {\n emptyNamedQuery: 'Aucune recherche enregistrée',\n open: 'Enregistrer la recherche sous...',\n title: 'Nommez cette recherche',\n saveTitle: 'Sauvegarder cette recherche',\n renameTitle: 'Renommer cette recherche',\n rename: 'Renommer',\n name: 'Nom',\n description: 'Description',\n favorite: 'Epingler',\n noFavorite: 'Détacher',\n display: 'Afficher',\n refreshData: 'Actualiser',\n noSpot: 'Recherche non utilisée',\n color: 'Couleur jeu de données',\n spot: 'Repérer',\n spotTitle: 'La recherche est utilisée à {{length}} endroits:',\n use: 'Vue n°{{windowIndex}}',\n delete: 'Supprimer',\n edit: 'Editer',\n seeLess: 'voir moins',\n seeMore: 'voir plus',\n explore: 'Recherche exploratoire',\n type: {\n map: 'Carte',\n table: 'Tableau',\n chart: 'Graphique',\n graph: 'Relations'\n },\n alreadyEditing: 'Vous avez déjà une édition de recherche en cours.',\n refresh: {\n title: 'Rafraichissement automatique',\n 0: 'Inactif',\n 10: '10 secondes',\n 30: '30 secondes',\n 60: '1 minute'\n }\n },\n mono: {\n title: 'Recherche critères avancés'\n },\n fulltext: {\n allClasses: 'Toutes les classes',\n oneClass: 'Une classe sélectionnée',\n manyClasses: '{{nb}} classes sélectionnées',\n selectClass: 'Sélectionner la classe',\n search: 'Lancer la recherche',\n clear: 'Effacer la saisie'\n },\n multi: {\n title: 'Ajouter des critères',\n addCondition: 'Ajouter un critère',\n options: 'Options',\n extraOptions: 'Options supplémentaires',\n multiType: 'Associer les critères',\n search: 'Rechercher',\n requiredError: 'La valeur est manquante',\n patternError: 'Le format est incorrect',\n selectField: 'Sélectionner un critère',\n legend: 'Critère / classes utilisant ce critère',\n in: 'dans'\n },\n params: {\n title: 'Paramètres de recherche',\n button: 'Enregistrer les paramètres',\n namedQuery: {\n title: 'Recherches',\n description:\n \"Cette partie regroupe les paramètres par défaut d'une nouvelle recherche(la couleur à utiliser, ...)\"\n }\n }\n }\n }\n};\n","import { Injectable } from '@angular/core';\nimport { FullTextSearchPayload, NamedQueryTypes } from '@provoly/dashboard';\n\n@Injectable({ providedIn: 'root' })\nexport class SearchFulltextService {\n buildPayload(value: string, oClasses: string[]): FullTextSearchPayload {\n return {\n type: NamedQueryTypes.MULTI_CLASS,\n multiType: 'AND',\n oClasses,\n fullSearch: {\n value\n }\n };\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { Store } from '@ngrx/store';\nimport { DataSourceActions, DataSourceSelectors, DEFAULT_NAMED_QUERY_ID, SearchActions } from '@provoly/dashboard';\nimport { map, withLatestFrom } from 'rxjs';\nimport { searchFulltextActions } from './search-fulltext.actions';\nimport { SearchFulltextService } from './search-fulltext.service';\n\n@Injectable()\nexport class SearchFulltextEffects {\n search$ = createEffect(() =>\n this.actions$.pipe(\n ofType(searchFulltextActions.search, searchFulltextActions.save),\n withLatestFrom(this.store.select(DataSourceSelectors.currentEdit)),\n map(([action, currentEdit]) => {\n const payload = this.searchFulltextService.buildPayload(action.search, action.classes);\n if (action.type === searchFulltextActions.save.type && DEFAULT_NAMED_QUERY_ID !== action?.id) {\n return DataSourceActions.namedQuery.post({\n id: action.id ?? currentEdit?.id,\n name: action.descriptionQuery.name,\n description: action.descriptionQuery?.description,\n visibility: action.descriptionQuery?.visibility,\n payload,\n color: currentEdit?.color,\n favorite: currentEdit?.favorite ?? false,\n isEdit: !!currentEdit\n });\n }\n return SearchActions.search({ payload });\n })\n )\n );\n\n constructor(\n private actions$: Actions,\n private store: Store<any>,\n private searchFulltextService: SearchFulltextService\n ) {}\n}\n","import { Injectable } from '@angular/core';\nimport {\n Attribute,\n Class,\n Condition,\n Field,\n FieldType,\n MonoClassConditions,\n MonoClassSearchPayload,\n NamedQueryTypes,\n NormalizedCondition,\n OrderValue,\n ResultOrder\n} from '@provoly/dashboard';\nimport { v4 as uuidV4 } from 'uuid';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SearchMonoClassService {\n initNormalizedConditionComposed(parentId: string | null): NormalizedCondition {\n const id = uuidV4();\n return {\n id,\n parentId,\n type: 'AND'\n } as NormalizedCondition;\n }\n\n initNormalizedConditionAttribute(parentId: string, attributeId: string): NormalizedCondition {\n if (!attributeId.trim()) {\n throw new Error('Invalid attribute ID');\n }\n const id = uuidV4();\n return {\n id,\n parentId,\n attribute: attributeId,\n type: 'ATTRIBUTE',\n operator: 'EQUALS'\n } as NormalizedCondition;\n }\n\n buildMonoClassSearchPayloadForSearch(\n oClass: string,\n masterId: string,\n monoClassConditions: MonoClassConditions,\n order: ResultOrder | undefined\n ): MonoClassSearchPayload {\n if (!oClass.trim()) {\n throw new Error('Invalid class ID');\n }\n const condition = this.buildConditionFromMonoClassSearchCondition(monoClassConditions, masterId);\n let sort = undefined as { [key: string]: any } | undefined;\n if (order) {\n sort = {\n attribute: order.attribute,\n direction: order.asc\n };\n }\n return { type: NamedQueryTypes.MONO_CLASS, ...{ condition }, ...{ sort }, oClass } as MonoClassSearchPayload;\n }\n\n private buildConditionFromMonoClassSearchCondition(\n monoClassConditions: MonoClassConditions,\n idCondition: string\n ): Condition {\n const cond: NormalizedCondition = monoClassConditions.entities[idCondition];\n const subCond: Condition[] =\n monoClassConditions.entities[idCondition].composed?.map((id: string) =>\n this.buildConditionFromMonoClassSearchCondition(monoClassConditions, id)\n ) ?? [];\n const condition = {\n type: cond.type,\n attribute: cond.attribute,\n composed: subCond.length > 0 ? subCond : undefined,\n operator: cond.operator,\n value: cond.value,\n upperValue: cond.upperValue\n };\n if (condition.operator !== 'INSIDE' && condition.operator !== 'OUTSIDE') {\n delete condition.upperValue;\n }\n return condition;\n }\n\n loadNormalizedConditions(\n cond: Condition | undefined,\n parentId: string,\n classes: Class[],\n fields: Field[],\n masterId?: string,\n sort?: { attribute: string; direction: string }\n ): { id: string; conditions: NormalizedCondition[]; sort: ResultOrder | undefined } {\n let resultSort = undefined as ResultOrder | undefined;\n if (sort) {\n resultSort = {\n attribute: sort.attribute,\n asc: sort.direction as OrderValue\n };\n }\n if (cond?.type === 'AND' || cond?.type === 'OR') {\n const id = masterId ?? uuidV4();\n if (cond?.composed) {\n const children = cond.composed.map((cond) => this.loadNormalizedConditions(cond, id, classes, fields));\n const ids = children.map((child) => child.id);\n const normalizedChildren = children.reduce(\n (acc, res) => [...acc, ...res.conditions],\n [] as NormalizedCondition[]\n );\n return {\n id,\n conditions: [\n ...normalizedChildren,\n {\n id,\n parentId: parentId ?? null,\n type: cond.type,\n composed: ids\n }\n ],\n sort: resultSort\n };\n }\n return {\n id,\n conditions: [\n {\n id,\n parentId: parentId ?? null,\n type: cond.type\n }\n ],\n sort: resultSort\n };\n } else {\n const id = masterId ?? uuidV4();\n const field = this.getFieldFromAttribute(cond?.attribute, classes);\n const condition: NormalizedCondition = field\n ? {\n id,\n parentId: parentId ?? null,\n type: 'ATTRIBUTE',\n attribute: cond?.attribute,\n operator: cond?.operator,\n value: cond?.value,\n pattern: this.getPatternForField(field),\n isDate: field.type === FieldType.INSTANT\n }\n : {\n id,\n parentId: parentId ?? null,\n type: 'ATTRIBUTE',\n attribute: cond?.attribute,\n operator: cond?.operator,\n value: cond?.value\n };\n return {\n id,\n conditions: [condition],\n sort: resultSort\n };\n }\n }\n\n getPatternForField(field: Field): string {\n const type = field.type;\n switch (type) {\n case FieldType.DECIMAL:\n return '^[+-]?([0-9]*[.])?[0-9]+$';\n case FieldType.INTEGER:\n case FieldType.LONG:\n return '^[+-]?[0-9]+$';\n case FieldType.STRING:\n case FieldType.KEYWORD:\n return '^.+$';\n case FieldType.INSTANT:\n return '^[0-9]{4}-[0-9]{2}-[0-9]{2}$|^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}$';\n default:\n return '^.+$';\n }\n }\n\n private getFieldFromAttribute(attributeId: string | undefined, classes: Class[]): Field | undefined {\n if (!attributeId) {\n return undefined;\n }\n return classes\n .reduce((acc, clazz) => [...acc, ...clazz.attributes], [] as Attribute[])\n .find((a) => a.id === attributeId)?.field;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { Action, Store } from '@ngrx/store';\nimport {\n ClassSelectors,\n DataSourceActions,\n DataSourceSelectors,\n DatasourceUtils,\n DEFAULT_NAMED_QUERY_ID,\n FieldSelectors,\n FieldType,\n MonoClassSearchPayload,\n MultiClassSearchPayload,\n NamedQueryTypes,\n NormalizedCondition,\n OrderValue,\n SearchActions,\n SearchService\n} from '@provoly/dashboard';\nimport { combineLatest, of } from 'rxjs';\nimport { catchError, first, map, mergeMap, switchMap, withLatestFrom } from 'rxjs';\nimport { v4 as uuidv4 } from 'uuid';\nimport { SearchMultiClassActions } from '../../../search/search-multi-class/store/search-multi-class.actions';\nimport { SearchMonoClassActions } from './search-mono-class.actions';\nimport { SearchMonoClassSelectors } from './search-mono-class.selectors';\nimport { SearchMonoClassService } from './search-mono-class.service';\n\n@Injectable()\nexport class SearchMonoClassEffects {\n constructor(\n private actions$: Actions,\n private searchService: SearchService,\n private searchMonoClassService: SearchMonoClassService,\n private store: Store<any>\n ) {}\n\n selectedMonoClass$ = createEffect(() =>\n this.actions$.pipe(\n ofType(SearchMonoClassActions.selectMonoClassSearch),\n map(() => {\n const condition: NormalizedCondition = this.searchMonoClassService.initNormalizedConditionComposed(null);\n return SearchMonoClassActions.addFirstNormalizedCondition({ condition });\n })\n )\n );\n\n addNormalizedConditionAttribute$ = createEffect(() =>\n this.actions$.pipe(\n ofType(SearchMonoClassActions.addNormalizedConditionAttributeForConditionId),\n mergeMap((action) =>\n combineLatest([of(action), this.store.select(FieldSelectors.fieldById(action.attribute.field.id))]).pipe(\n first()\n )\n ),\n map(([action, field]) => {\n const pattern = this.searchMonoClassService.getPatternForField(field);\n const isDate = field.type === FieldType.INSTANT;\n const condition: NormalizedCondition = {\n ...this.searchMonoClassService.initNormalizedConditionAttribute(action.conditionId, action.attribute.id),\n isDate,\n pattern\n };\n\n return SearchMonoClassActions.addNormalizedConditionForConditionId({\n conditionId: action.conditionId,\n condition\n });\n })\n )\n );\n\n addNormalizedConditionComposed$ = createEffect(() =>\n this.actions$.pipe(\n ofType(SearchMonoClassActions.addNormalizedConditionComposedForConditionId),\n map((action) => {\n const condition: NormalizedCondition = this.searchMonoClassService.initNormalizedConditionComposed(\n action.conditionId\n );\n return SearchMonoClassActions.addNormalizedConditionForConditionId({\n conditionId: action.conditionId,\n condition\n });\n })\n )\n );\n\n deleteNormalizedCondition$ = createEffect(() =>\n this.actions$.pipe(\n ofType(SearchMonoClassActions.deleteNormalizedConditionById),\n mergeMap((action) =>\n combineLatest([\n of(action),\n this.store.select(SearchMonoClassSelectors.selectMonoClassConditionsById(action.conditionId))\n ]).pipe(first())\n ),\n switchMap(([action, condition]) => {\n const actionCondition$ = SearchMonoClassActions.deleteNormalizedCondition({ condition });\n const actionParent$ = SearchMonoClassActions.removeConditionFromComposed({\n parentId: condition.parentId ?? null,\n childrenId: condition.id\n });\n const actionsComposed$ = condition.composed?.map((id: string) =>\n SearchMonoClassActions.deleteNormalizedConditionById({ conditionId: id })\n );\n return actionsComposed$\n ? [actionCondition$, actionParent$, ...actionsComposed$]\n : [actionCondition$, actionParent$];\n })\n )\n );\n\n actionMonoClassSearch$ = createEffect(() =>\n this.actions$.pipe(\n ofType(SearchMonoClassActions.search, SearchMonoClassActions.save),\n withLatestFrom(\n this.store.select(SearchMonoClassSelectors.selectMonoClassIdSearch),\n this.store.select(SearchMonoClassSelectors.selectMonoClassConditionsMasterId),\n this.store.select(SearchMonoClassSelectors.selectMonoClassConditions),\n this.store.select(SearchMonoClassSelectors.order),\n this.store.select(DataSourceSelectors.currentEdit)\n ),\n map(([action, oClass, masterId, conditions, order, currentEdit]) => {\n const payload = this.searchMonoClassService.buildMonoClassSearchPayloadForSearch(\n oClass ?? '',\n masterId ?? '',\n conditions,\n order\n );\n if (action.type === SearchMonoClassActions.save.type && DEFAULT_NAMED_QUERY_ID !== action?.id) {\n return DataSourceActions.namedQuery.post({\n id: action.id ?? currentEdit?.id,\n name: action.descriptionQuery.name,\n description: action.descriptionQuery?.description,\n visibility: action.descriptionQuery?.visibility,\n payload,\n color: currentEdit?.color,\n favorite: currentEdit?.favorite ?? false,\n isEdit: !!currentEdit\n });\n }\n return SearchActions.search({ payload });\n })\n )\n );\n\n loadExistingConditions$ = createEffect(() =>\n this.actions$.pipe(\n ofType(SearchMonoClassActions.loadExistingConditions),\n withLatestFrom(this.store.select(ClassSelectors.classes), this.store.select(FieldSelectors.fields)),\n mergeMap(([action, classes, fields]) => {\n const { oClass, condition, sort } = action.payload;\n const masterId = uuidv4();\n const conditions = this.searchMonoClassService.loadNormalizedConditions(\n condition,\n masterId,\n classes,\n fields,\n masterId,\n sort\n ).conditions;\n const ids = conditions.map((cond) => cond.id);\n const entities = conditions.reduce((acc, cond) => ({ ...acc, [cond.id]: cond }), {});\n return [\n SearchMonoClassActions.addIdMaster({ id: masterId }),\n SearchMonoClassActions.addIdCondition({ ids }),\n SearchMonoClassActions.addEntities({ entities }),\n SearchMonoClassActions.addIdClass({ id: oClass }),\n SearchMonoClassActions.addOrder({ attribute: sort?.attribute, asc: sort?.direction as OrderValue })\n ];\n })\n )\n );\n\n addEdit$ = createEffect(() =>\n this.actions$.pipe(\n ofType(DataSourceActions.namedQuery.openEdit),\n withLatestFrom(this.store.select(DataSourceSelectors.currentEdit)),\n mergeMap(([action, currentEdit]) => {\n const actions = [] as Action[];\n if (!!currentEdit) {\n const type = DatasourceUtils.getTypeFromPayload(currentEdit.request);\n if (type === NamedQueryTypes.MULTI_CLASS) {\n actions.push(\n SearchMultiClassActions.loadExistingConditions({\n payload: currentEdit.request as MultiClassSearchPayload\n })\n );\n }\n if (type === NamedQueryTypes.MONO_CLASS) {\n actions.push(\n SearchMonoClassActions.loadExistingConditions({ payload: currentEdit.request as MonoClassSearchPayload })\n );\n }\n }\n return actions;\n }),\n catchError((error) => [DataSourceActions.namedQuery.failure({ error })])\n )\n );\n\n stopEdit$ = createEffect(() =>\n this.actions$.pipe(\n ofType(DataSourceActions.namedQuery.stopEdit),\n mergeMap(() => [SearchMultiClassActions.resetSearch(), SearchMonoClassActions.resetSearch()])\n )\n );\n}\n","import { Injectable } from '@angular/core';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { Store } from '@ngrx/store';\nimport {\n ClassSelectors,\n DataSourceActions,\n DataSourceSelectors,\n DEFAULT_NAMED_QUERY_ID,\n FieldSelectors,\n FieldType,\n MultiClassCondition,\n SearchActions\n} from '@provoly/dashboard';\nimport { combineLatest } from 'rxjs';\nimport { filter, first, map, mergeMap, withLatestFrom } from 'rxjs';\nimport { SearchMultiClassActions } from './search-multi-class.actions';\nimport { SearchMultiClassSelectors } from './search-multi-class.selectors';\nimport { SearchMultiClassService } from './search-multi-class.service';\n\n@Injectable()\nexport class SearchMultiClassEffects {\n constructor(\n private actions$: Actions,\n private store: Store<any>,\n private multiClassService: SearchMultiClassService\n ) {}\n\n addCondition$ = createEffect(() =>\n this.actions$.pipe(\n ofType(SearchMultiClassActions.addNewEmptyCondition),\n map(() => {\n const condition = this.multiClassService.generateCondition();\n return SearchMultiClassActions.addMultiClassCondition({ condition });\n })\n )\n );\n updateConditionField$ = createEffect(() =>\n this.actions$.pipe(\n ofType(SearchMultiClassActions.updateConditionField),\n mergeMap((action) =>\n combineLatest([\n this.store\n .select(SearchMultiClassSelectors.getConditionById(action.conditionId))\n .pipe(filter((c): c is MultiClassCondition => c !== undefined)),\n this.store.select(FieldSelectors.fieldById(action.field))\n ]).pipe(first())\n ),\n map(([condition, field]) => {\n const pattern = this.multiClassService.getPatternForField(field);\n const isDate = field.type === FieldType.INSTANT;\n return SearchMultiClassActions.updateConditionPattern({\n conditionId: condition.id,\n pattern,\n isDate\n });\n })\n )\n );\n\n actionMultiClassSearch$ = createEffect(() =>\n this.actions$.pipe(\n ofType(SearchMultiClassActions.search, SearchMultiClassActions.save),\n withLatestFrom(\n this.store.select(SearchMultiClassSelectors.conditions),\n this.store.select(SearchMultiClassSelectors.multiType),\n this.store.select(ClassSelectors.classes),\n this.store.select(DataSourceSelectors.currentEdit)\n ),\n map(([action, conditions, multiType, classes, currentEdit]) => {\n const payload = this.multiClassService.buildConditionsToSearchPayload(conditions, classes, multiType);\n if (action.type === SearchMultiClassActions.save.type && DEFAULT_NAMED_QUERY_ID !== currentEdit?.id) {\n return DataSourceActions.namedQuery.post({\n id: action.id ?? currentEdit?.id,\n name: action.descriptionQuery.name,\n description: action.descriptionQuery?.description,\n visibility: action.descriptionQuery?.visibility,\n payload,\n color: currentEdit?.color,\n favorite: currentEdit?.favorite ?? false,\n isEdit: !!currentEdit\n });\n }\n return SearchActions.search({ payload });\n })\n )\n );\n\n loadExistingConditions$ = createEffect(() =>\n this.actions$.pipe(\n ofType(SearchMultiClassActions.loadExistingConditions),\n withLatestFrom(this.store.select(FieldSelectors.fields)),\n mergeMap(([action, fields]) => {\n const conditions = this.multiClassService.getConditionsFromSearchPayload(action.payload, fields);\n const multiType = action.payload.multiType;\n return [\n SearchMultiClassActions.updateConditions({ conditions }),\n SearchMultiClassActions.updateMultiType({ multiType })\n ];\n })\n )\n );\n}\n","import { OverlayModule } from '@angular/cdk/overlay';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { EffectsModule } from '@ngrx/effects';\nimport { StoreModule } from '@ngrx/store';\nimport {\n PryCoreModule,\n PryDashboardModule,\n PryDatePickerModule,\n PryI18nModule,\n PryI18nService,\n PryIconModule,\n PryOverlayModule,\n PrySelectModule,\n PryShareModule,\n PryToggleModule\n} from '@provoly/dashboard';\nimport { PryCardModule } from '@provoly/dashboard/components/card';\nimport { PryCheckboxModule } from '@provoly/dashboard/components/checkbox';\nimport { PryExpandPanelModule } from '@provoly/dashboard/components/expand-panel';\nimport { PryFilterModule } from '@provoly/dashboard/components/filter';\nimport { ChooseWidgetComponent } from './components/choose-widget/choose-widget.component';\nimport { EditNamedQueryModalComponent } from './components/edit-named-query-modal/edit-named-query-modal.component';\nimport { EditNamedQueryComponent } from './components/edit-named-query/edit-named-query.component';\nimport { PrySaveQueryButtonComponent } from './components/save-query-button/save-query-button.component';\nimport { PrySaveQueryComponent } from './components/save-query/save-query.component';\nimport { enTranslations } from './i18n/en.translations';\nimport { frTranslations } from './i18n/fr.translations';\nimport { PrySearchFulltextComponent } from './search-fulltext/search-fulltext/search-fulltext.component';\nimport { SearchFulltextEffects } from './search-fulltext/store/search-fulltext.effects';\nimport { PrySearchHomeComponent } from './search-home/search-home.component';\nimport { PrySearchComposedComponent } from './search-mono-class/components/search-composed/search-composed.component';\nimport { PrySearchConditionComponent } from './search-mono-class/components/search-condition/search-condition.component';\nimport { PrySearchMonoClassComponent } from './search-mono-class/components/search-mono-class/search-mono-class.component';\nimport { PrySearchOrderComponent } from './search-mono-class/components/search-order/search-order.component';\nimport { PrySearchSelectAttributeComponent } from './search-mono-class/components/search-select-attribute/search-select-attribute.component';\nimport { SearchMonoClassEffects } from './search-mono-class/store/search-mono-class.effects';\nimport { searchMonoClassFeatureKey, searchMonoClassReducer } from './search-mono-class/store/search-mono-class.reducer';\nimport { MultiClassConditionComponent } from './search-multi-class/components/multi-class-condition/multi-class-condition.component';\nimport { MultiClassFieldSelectionComponent } from './search-multi-class/components/multi-class-field-selection/multi-class-field-selection.component';\nimport { PrySearchMultiClassComponent } from './search-multi-class/components/search-multi-class/search-multi-class.component';\nimport { SearchMultiClassEffects } from './search-multi-class/store/search-multi-class.effects';\nimport {\n searchMultiClassFeatureKey,\n searchMultiClassReducer\n} from './search-multi-class/store/search-multi-class.reducer';\nimport { PrySearchToolsComponent } from './search-tools/search-tools.component';\nimport { PrySearchCssComponent } from './style/css.component';\n\n@NgModule({\n imports: [\n CommonModule,\n PryCoreModule,\n StoreModule.forFeature(searchMultiClassFeatureKey, searchMultiClassReducer),\n StoreModule.forFeature(searchMonoClassFeatureKey, searchMonoClassReducer),\n EffectsModule.forFeature([SearchMultiClassEffects, SearchMonoClassEffects, SearchFulltextEffects]),\n PryIconModule,\n FormsModule,\n ReactiveFormsModule,\n OverlayModule,\n PortalModule,\n PrySelectModule,\n PryToggleModule,\n PryOverlayModule,\n PryFilterModule,\n PryToggleModule,\n PryExpandPanelModule,\n PryCardModule,\n PryCheckboxModule,\n PryDashboardModule,\n PryShareModule,\n PryDatePickerModule,\n PryI18nModule\n ],\n declarations: [\n PrySearchComposedComponent,\n PrySearchSelectAttributeComponent,\n PrySearchConditionComponent,\n PrySaveQueryComponent,\n PrySearchToolsComponent,\n PrySearchHomeComponent,\n PrySearchMonoClassComponent,\n PrySaveQueryComponent,\n MultiClassConditionComponent,\n PrySearchMultiClassComponent,\n MultiClassFieldSelectionComponent,\n PrySearchFulltextComponent,\n PrySaveQueryButtonComponent,\n EditNamedQueryComponent,\n EditNamedQueryModalComponent,\n ChooseWidgetComponent,\n PrySearchOrderComponent,\n PrySearchCssComponent\n ],\n exports: [PrySearchToolsComponent, PrySearchFulltextComponent, EditNamedQueryModalComponent, ChooseWidgetComponent]\n})\nexport class PrySearchModule {\n constructor(private pryTranslateService: PryI18nService) {\n this.pryTranslateService.addLangObject('fr', 'search', frTranslations);\n this.pryTranslateService.addLangObject('en', 'search', enTranslations);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i3","feature","fromSearchMonoClass.searchMonoClassFeatureKey","fromSearchMultiClass.searchMultiClassFeatureKey","uuidv4","i2","i4","i7.PrySearchCssComponent","i5.PrySearchSelectAttributeComponent","i6.PrySearchConditionComponent","i5","i4.PrySearchComposedComponent","i5.PrySearchOrderComponent","i6","i2.SearchMultiClassService","i6.MultiClassFieldSelectionComponent","i7","i4.MultiClassConditionComponent","i5.ChooseWidgetComponent","i6.PrySearchCssComponent","i3.PrySearchMonoClassComponent","i4.PrySearchMultiClassComponent","i5.PrySearchFulltextComponent","i6.ChooseWidgetComponent","i4.PrySearchHomeComponent","i5.PrySearchMonoClassComponent","i6.PrySearchMultiClassComponent","i7.PrySearchFulltextComponent","i8.PrySaveQueryButtonComponent","i9.EditNamedQueryComponent","i10.ChooseWidgetComponent","i11","i3.PrySearchToolsComponent","i3.SearchFulltextService","uuidV4","i3.SearchMonoClassService","i3.SearchMultiClassService"],"mappings":"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"}
1
+ {"version":3,"file":"provoly-dashboard-search.mjs","sources":["../../../../projects/provoly/dashboard/search/components/choose-widget/choose-widget.component.ts","../../../../projects/provoly/dashboard/search/components/choose-widget/choose-widget.component.html","../../../../projects/provoly/dashboard/search/search-mono-class/store/search-mono-class.actions.ts","../../../../projects/provoly/dashboard/search/search-mono-class/store/search-mono-class.reducer.ts","../../../../projects/provoly/dashboard/search/search-mono-class/store/search-mono-class.selectors.ts","../../../../projects/provoly/dashboard/search/search-multi-class/store/search-multi-class.actions.ts","../../../../projects/provoly/dashboard/search/search-multi-class/store/search-multi-class.reducer.ts","../../../../projects/provoly/dashboard/search/search-multi-class/store/search-multi-class.selectors.ts","../../../../projects/provoly/dashboard/search/search-fulltext/store/search-fulltext.actions.ts","../../../../projects/provoly/dashboard/search/components/save-query/save-query.component.ts","../../../../projects/provoly/dashboard/search/components/save-query/save-query.component.html","../../../../projects/provoly/dashboard/search/style/css.component.ts","../../../../projects/provoly/dashboard/search/search-home/search-home.component.ts","../../../../projects/provoly/dashboard/search/search-home/search-home.component.html","../../../../projects/provoly/dashboard/search/search-mono-class/components/search-select-attribute/search-select-attribute.component.ts","../../../../projects/provoly/dashboard/search/search-mono-class/components/search-select-attribute/search-select-attribute.component.html","../../../../projects/provoly/dashboard/search/search-mono-class/components/search-condition/search-condition.component.ts","../../../../projects/provoly/dashboard/search/search-mono-class/components/search-condition/search-condition.component.html","../../../../projects/provoly/dashboard/search/search-mono-class/components/search-composed/search-composed.component.ts","../../../../projects/provoly/dashboard/search/search-mono-class/components/search-composed/search-composed.component.html","../../../../projects/provoly/dashboard/search/search-mono-class/components/search-order/search-order.component.ts","../../../../projects/provoly/dashboard/search/search-mono-class/components/search-order/search-order.component.html","../../../../projects/provoly/dashboard/search/search-mono-class/components/search-mono-class/search-mono-class.component.ts","../../../../projects/provoly/dashboard/search/search-mono-class/components/search-mono-class/search-mono-class.component.html","../../../../projects/provoly/dashboard/search/search-multi-class/store/search-multi-class.service.ts","../../../../projects/provoly/dashboard/search/search-multi-class/components/multi-class-field-selection/multi-class-field-selection.component.ts","../../../../projects/provoly/dashboard/search/search-multi-class/components/multi-class-field-selection/multi-class-field-selection.component.html","../../../../projects/provoly/dashboard/search/search-multi-class/components/multi-class-condition/multi-class-condition.component.ts","../../../../projects/provoly/dashboard/search/search-multi-class/components/multi-class-condition/multi-class-condition.component.html","../../../../projects/provoly/dashboard/search/search-multi-class/components/search-multi-class/search-multi-class.component.ts","../../../../projects/provoly/dashboard/search/search-multi-class/components/search-multi-class/search-multi-class.component.html","../../../../projects/provoly/dashboard/search/search-fulltext/search-fulltext/search-fulltext.component.ts","../../../../projects/provoly/dashboard/search/search-fulltext/search-fulltext/search-fulltext.component.html","../../../../projects/provoly/dashboard/search/components/save-query-button/save-query-button.component.ts","../../../../projects/provoly/dashboard/search/components/save-query-button/save-query-button.component.html","../../../../projects/provoly/dashboard/search/components/edit-named-query/edit-named-query.component.ts","../../../../projects/provoly/dashboard/search/components/edit-named-query/edit-named-query.component.html","../../../../projects/provoly/dashboard/search/search-tools/search-tools.component.ts","../../../../projects/provoly/dashboard/search/search-tools/search-tools.component.html","../../../../projects/provoly/dashboard/search/components/edit-named-query-modal/edit-named-query-modal.component.ts","../../../../projects/provoly/dashboard/search/components/edit-named-query-modal/edit-named-query-modal.component.html","../../../../projects/provoly/dashboard/search/i18n/en.translations.ts","../../../../projects/provoly/dashboard/search/i18n/fr.translations.ts","../../../../projects/provoly/dashboard/search/search-fulltext/store/search-fulltext.service.ts","../../../../projects/provoly/dashboard/search/search-fulltext/store/search-fulltext.effects.ts","../../../../projects/provoly/dashboard/search/search-mono-class/store/search-mono-class.service.ts","../../../../projects/provoly/dashboard/search/search-mono-class/store/search-mono-class.effects.ts","../../../../projects/provoly/dashboard/search/search-multi-class/store/search-multi-class.effects.ts","../../../../projects/provoly/dashboard/search/search.module.ts","../../../../projects/provoly/dashboard/search/provoly-dashboard-search.ts"],"sourcesContent":["import { ConnectedPosition } from '@angular/cdk/overlay';\nimport {\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n Output,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport {\n CatalogEntry,\n NamedQueryTypes,\n SubscriptionnerDirective,\n ToolboxManifestService,\n ToolboxMenuService\n} from '@provoly/dashboard';\nimport { map, Observable } from 'rxjs';\n\n@Component({\n selector: 'pry-choose-widget',\n templateUrl: './choose-widget.component.html',\n encapsulation: ViewEncapsulation.None\n})\nexport class ChooseWidgetComponent extends SubscriptionnerDirective implements OnChanges {\n @ViewChild('chooseWidgets') chooseWidgets!: ElementRef<HTMLButtonElement>;\n selectedWidget?: Element | null;\n widgetSelected?: { icon: string; label: string; type: string };\n @Input() panelOpen: boolean = false;\n readonly FULL_TEXT = NamedQueryTypes.FULL_TEXT;\n @Output() selected = new EventEmitter<string>();\n readonly TOP_POSITION: ConnectedPosition = {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom'\n };\n readonly BOTTOM_POSITION: ConnectedPosition = {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top'\n };\n @Input() mode = 'button';\n @Input() width = 200;\n widgets$: Observable<CatalogEntry[]>;\n\n constructor(\n private toolboxMenuService: ToolboxMenuService,\n private toolboxManifestService: ToolboxManifestService\n ) {\n super();\n this.widgets$ = this.toolboxMenuService.menuStructure$.pipe(\n map((menu) =>\n menu\n .map((items) => [...items.sub.filter((s) => this.toolboxManifestService.isModel(s.type))])\n .reduce((acc, items) => [...acc, ...items], [])\n )\n );\n this.subscriptions.add(\n this.widgets$.subscribe(\n (widgets) => (this.widgetSelected = [...widgets].sort((a, b) => (a.type === 'table' ? -1 : 1))[0])\n )\n );\n }\n\n ngOnChanges(): void {\n if (this.panelOpen) {\n setTimeout(() => {\n this.chooseWidgets.nativeElement.focus();\n }, 10);\n }\n }\n\n togglePopup() {\n this.panelOpen = !this.panelOpen;\n }\n\n onSelectWidget(type: { icon: string; label: string; type: string }) {\n this.widgetSelected = type;\n this.selected.emit(type.type);\n }\n}\n","<div cdkOverlayOrigin #originSearch=\"cdkOverlayOrigin\" class=\"m-choose-widget\">\n @if (mode === 'button') {\n <button\n type=\"button\"\n title=\"{{ '@pry.widget.buttonChoice' | i18n }}\"\n class=\"a-btn a-btn--primary a-btn--icon-text m-choose-widget__buttons-widget\"\n (click)=\"togglePopup()\"\n >\n <img\n [alt]=\"widgetSelected?.label\"\n [src]=\"widgetSelected?.icon | getSecuredImage | async\"\n [width]=\"22\"\n [height]=\"22\"\n />\n <span>{{ widgetSelected ? (widgetSelected.label | i18n) : ('@pry.toolbox.table' | i18n) }}</span>\n </button>\n }\n</div>\n\n@if (mode !== 'button') {\n <div class=\"m-choose-widget__input\" [class.choose-widget__input__inline]=\"mode === 'inline'\">\n <ng-content></ng-content>\n </div>\n}\n\n<ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayLockPosition\n [cdkConnectedOverlayOrigin]=\"originSearch\"\n [cdkConnectedOverlayOpen]=\"panelOpen\"\n [cdkConnectedOverlayPositions]=\"[BOTTOM_POSITION, TOP_POSITION]\"\n >\n <div class=\"m-choose-widget__widget_overlay\" (keydown.escape)=\"togglePopup()\" [style.width.px]=\"width\">\n <div class=\"m-choose-widget__widget_overlay__content\">\n @for (widget of widgets$ | async; track widget) {\n <div>\n <button\n #chooseWidgets\n type=\"button\"\n class=\"m-choose-widget__widget_overlay__content__item\"\n [class.choose-widget__widget_overlay__content__item__selected]=\"widget.type === widgetSelected?.type\"\n (click)=\"onSelectWidget(widget)\"\n >\n <img [alt]=\"widget.label | i18n\" [height]=\"22\" [width]=\"22\" [src]=\"widget.icon | getSecuredImage | async\" />\n <span class=\"m-choose-widget__widget_overlay__content__item__label\">{{ widget.label | i18n }}</span>\n </button>\n </div>\n }\n </div>\n </div>\n</ng-template>\n","import { createAction, props } from '@ngrx/store';\nimport {\n Attribute,\n ConditionType,\n DescriptionQuery,\n MonoClassSearchPayload,\n NormalizedCondition,\n OperatorType,\n OrderValue,\n ValueDataType\n} from '@provoly/dashboard';\n\nexport const SearchMonoClassActions = {\n save: createAction('[SearchMonoClass] save', props<{ descriptionQuery: DescriptionQuery; id?: string }>()),\n search: createAction('[SearchMonoClass] launch Mono Class search'),\n load: createAction('[SearchMonoClass] launch Mono Class search'),\n saveMonoClassSearch: createAction('[SearchMonoClass] launch Mono Class search'),\n\n selectMonoClassSearch: createAction('[Condition] select mono class search', props<{ classId: string }>()),\n addFirstNormalizedCondition: createAction(\n '[Condition] add first normalizedCondition ',\n props<{ condition: NormalizedCondition }>()\n ),\n addNormalizedConditionAttributeForConditionId: createAction(\n '[Condition] add normalizedCondition attribute ',\n props<{ conditionId: string; attribute: Attribute }>()\n ),\n addNormalizedConditionComposedForConditionId: createAction(\n '[Condition] add normalizedCondition composed ',\n props<{ conditionId: string }>()\n ),\n addNormalizedConditionForConditionId: createAction(\n '[Condition] add normalizedCondition for condition id',\n props<{ conditionId: string; condition: NormalizedCondition }>()\n ),\n updateNormalizedConditionOperatorForConditionId: createAction(\n '[Condition] update normalizedCondition operator for condition id',\n props<{ conditionId: string; operator: OperatorType }>()\n ),\n updateNormalizedConditionValueForConditionId: createAction(\n '[Condition] update normalizedCondition value for condition id',\n props<{ conditionId: string; value: ValueDataType; upperValue?: ValueDataType }>()\n ),\n updateNormalizedConditionTypeForConditionId: createAction(\n '[Condition] update normalizedCondition type for condition id',\n props<{ conditionId: string; conditionType: ConditionType }>()\n ),\n deleteNormalizedConditionById: createAction(\n '[Condition] delete normalizedCondition for condition id',\n props<{ conditionId: string }>()\n ),\n deleteNormalizedCondition: createAction(\n '[Condition] delete normalizedCondition',\n props<{ condition: NormalizedCondition }>()\n ),\n removeConditionFromComposed: createAction(\n '[Condition] remove normalizedCondition id from parent composed',\n props<{ parentId: string; childrenId: string }>()\n ),\n loadExistingConditions: createAction(\n '[SearchMonoClass] load existing conditions',\n props<{ payload: MonoClassSearchPayload }>()\n ),\n addIdCondition: createAction('[SearchMonoClass] add id condition', props<{ ids: string[] }>()),\n addIdMaster: createAction('[SearchMonoClass] add id master', props<{ id: string }>()),\n addEntities: createAction(\n '[SearchMonoClass] add entities',\n props<{ entities: { [key: string]: NormalizedCondition } }>()\n ),\n addIdClass: createAction('[SearchMonoClass] add id class', props<{ id: string }>()),\n resetSearch: createAction('[SearchMonoClass] reset search'),\n addOrder: createAction('[SearchMonoClass] add order', props<{ attribute?: string; asc?: OrderValue }>())\n};\n","import { createReducer, on } from '@ngrx/store';\nimport { MonoClassConditions, ResultOrder } from '@provoly/dashboard';\nimport { SearchMonoClassActions } from './search-mono-class.actions';\n\nexport const searchMonoClassFeatureKey = '@pry/search/mono-class';\n\nexport interface SearchMonoClassState {\n loading: boolean;\n monoClassConditions: MonoClassConditions;\n monoClassId?: string;\n order?: ResultOrder;\n}\n\nexport const initialSearchMonoClassState: SearchMonoClassState = {\n loading: false,\n monoClassConditions: {\n masterId: null,\n ids: [],\n entities: {}\n },\n order: undefined\n};\n\nexport const searchMonoClassReducer = createReducer(\n initialSearchMonoClassState,\n on(SearchMonoClassActions.selectMonoClassSearch, (state, action) => ({\n ...state,\n monoClassId: action.classId\n })),\n on(SearchMonoClassActions.addFirstNormalizedCondition, (state, action) => ({\n ...state,\n monoClassConditions: {\n masterId: action.condition.id,\n ids: [action.condition.id],\n entities: {\n [action.condition.id]: action.condition\n }\n }\n })),\n on(SearchMonoClassActions.addNormalizedConditionForConditionId, (state, action) => {\n const composedIds = [\n ...(state.monoClassConditions.entities[action.conditionId]?.composed ?? []),\n action.condition.id\n ];\n return {\n ...state,\n monoClassConditions: {\n ...state.monoClassConditions,\n ids: [...state.monoClassConditions.ids, action.condition.id],\n entities: {\n ...state.monoClassConditions.entities,\n [action.conditionId]: {\n ...state.monoClassConditions.entities[action.conditionId],\n composed: composedIds\n },\n [action.condition.id]: action.condition\n }\n }\n };\n }),\n on(SearchMonoClassActions.updateNormalizedConditionOperatorForConditionId, (state, action) => ({\n ...state,\n monoClassConditions: {\n ...state.monoClassConditions,\n entities: {\n ...state.monoClassConditions.entities,\n [action.conditionId]: {\n ...state.monoClassConditions.entities[action.conditionId],\n operator: action.operator\n }\n }\n }\n })),\n on(SearchMonoClassActions.updateNormalizedConditionValueForConditionId, (state, action) => ({\n ...state,\n monoClassConditions: {\n ...state.monoClassConditions,\n entities: {\n ...state.monoClassConditions.entities,\n [action.conditionId]: {\n ...state.monoClassConditions.entities[action.conditionId],\n value: action.value,\n upperValue: action.upperValue\n }\n }\n }\n })),\n on(SearchMonoClassActions.updateNormalizedConditionTypeForConditionId, (state, action) => ({\n ...state,\n monoClassConditions: {\n ...state.monoClassConditions,\n entities: {\n ...state.monoClassConditions.entities,\n [action.conditionId]: {\n ...state.monoClassConditions.entities[action.conditionId],\n type: action.conditionType\n }\n }\n }\n })),\n on(SearchMonoClassActions.deleteNormalizedCondition, (state, action) => {\n const ids = [...state.monoClassConditions.ids.filter((id) => id !== action.condition.id)];\n const { [action.condition.id]: value, ...entities } = { ...state.monoClassConditions.entities };\n return {\n ...state,\n monoClassConditions: {\n ...state.monoClassConditions,\n ids,\n entities\n }\n };\n }),\n on(SearchMonoClassActions.removeConditionFromComposed, (state, action) => ({\n ...state,\n monoClassConditions: {\n ...state.monoClassConditions,\n entities: {\n ...state.monoClassConditions.entities,\n [action.parentId]: {\n ...state.monoClassConditions.entities[action.parentId],\n composed: [\n ...(state.monoClassConditions.entities[action.parentId]?.composed?.filter(\n (el) => el !== action.childrenId\n ) ?? [])\n ]\n }\n }\n }\n })),\n on(SearchMonoClassActions.addIdCondition, (state, action) => ({\n ...state,\n monoClassConditions: { ...state.monoClassConditions, ids: [...action.ids] }\n })),\n on(SearchMonoClassActions.addIdMaster, (state, action) => ({\n ...state,\n monoClassConditions: { ...state.monoClassConditions, masterId: action.id }\n })),\n on(SearchMonoClassActions.addEntities, (state, action) => ({\n ...state,\n monoClassConditions: {\n ...state.monoClassConditions,\n entities: { ...action.entities }\n }\n })),\n on(SearchMonoClassActions.addIdClass, (state, action) => ({\n ...state,\n monoClassId: action.id\n })),\n on(SearchMonoClassActions.resetSearch, (state) => ({\n ...state,\n monoClassId: undefined,\n monoClassConditions: {\n masterId: null,\n ids: [],\n entities: {}\n }\n })),\n on(SearchMonoClassActions.addOrder, (state, action) => ({\n ...state,\n order: action.asc\n ? {\n attribute: action.attribute ?? state.order?.attribute ?? '',\n asc: action.asc\n }\n : undefined\n }))\n);\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\nimport { Attribute, ClassSelectors, MonoClassConditions } from '@provoly/dashboard';\nimport * as fromSearchMonoClass from './search-mono-class.reducer';\nimport { SearchMonoClassState } from './search-mono-class.reducer';\n\nconst feature = createFeatureSelector<fromSearchMonoClass.SearchMonoClassState>(\n fromSearchMonoClass.searchMonoClassFeatureKey\n);\n\nconst selectMonoClassIdSearch = createSelector(feature, (state: SearchMonoClassState) => state?.monoClassId);\nconst selectMonoClassAttributesSearch = createSelector(\n ClassSelectors.entities,\n selectMonoClassIdSearch,\n (classes, classId?: string) => (classId ? [...new Set(classes[classId]?.attributes ?? [])] : [])\n);\n\nconst selectMonoClassSearchAttributeById = (attributeId: string) =>\n createSelector(selectMonoClassAttributesSearch, (attributes: Attribute[]) =>\n attributes.find((attr) => attr.id === attributeId)\n );\nconst selectMonoClassConditions = createSelector(feature, (state: SearchMonoClassState) => state.monoClassConditions);\nconst order = createSelector(feature, (state: SearchMonoClassState) => state.order);\nconst selectMonoClassConditionsMasterId = createSelector(\n selectMonoClassConditions,\n (monoClassCondition: MonoClassConditions) => monoClassCondition?.masterId\n);\n\nconst selectMonoClassConditionsById = (id: string) =>\n createSelector(\n selectMonoClassConditions,\n (monoClassConditions: MonoClassConditions) => monoClassConditions.entities[id]\n );\n\nconst searchMonoClassValid = createSelector(\n selectMonoClassConditions,\n selectMonoClassIdSearch,\n (conditions: MonoClassConditions, searchClassId) => {\n if (!searchClassId) {\n return false;\n }\n const attributeConditionIds = conditions.ids.filter((id) => conditions.entities[id]?.type === 'ATTRIBUTE');\n return (\n attributeConditionIds.find((id) => {\n const condition = conditions.entities[id];\n const pattern = condition?.pattern ?? '';\n const value = condition?.value ?? '';\n if (pattern === '' || value === '') {\n return true;\n }\n return !RegExp(pattern).test(`${value}`);\n }) === undefined\n );\n }\n);\n\nexport const SearchMonoClassSelectors = {\n feature,\n selectMonoClassIdSearch,\n selectMonoClassAttributesSearch,\n selectMonoClassSearchAttributeById,\n selectMonoClassConditions,\n selectMonoClassConditionsById,\n selectMonoClassConditionsMasterId,\n searchMonoClassValid,\n order\n};\n","import { createAction, props } from '@ngrx/store';\nimport { DescriptionQuery, MultiClassCondition, MultiClassSearchPayload } from '@provoly/dashboard';\n\nexport const SearchMultiClassActions = {\n updateMultiType: createAction('[Search Multi class] update conditonnal type', props<{ multiType: 'AND' | 'OR' }>()),\n addNewEmptyCondition: createAction('[SearchMultiClass] add empty condition'),\n addMultiClassCondition: createAction(\n '[SearchMultiClass] add multi class condition',\n props<{ condition: MultiClassCondition }>()\n ),\n updateConditionField: createAction(\n '[SearchMultiClass] update condition field',\n props<{ conditionId: string; field: string }>()\n ),\n updateCondition: createAction(\n '[SearchMultiClass] update condition',\n props<{ conditionId: string; key: keyof MultiClassCondition; value: any; upperValue?: any }>()\n ),\n updateConditionPattern: createAction(\n '[SearchMultiClass] update condition pattern',\n props<{ conditionId: string; pattern: string; isDate: boolean }>()\n ),\n removeCondition: createAction('[SearchMultiClass] remove condition', props<{ conditionId: string }>()),\n resetSearch: createAction('[SearchMultiClass] reset search'),\n\n loadExistingConditions: createAction(\n '[SearchMultiClass] load existing conditions',\n props<{ payload: MultiClassSearchPayload }>()\n ),\n updateConditions: createAction(\n '[SearchMultiClass] update conditions',\n props<{ conditions: MultiClassCondition[] }>()\n ),\n\n search: createAction('[SearchMultiClass] launch search'),\n save: createAction('[SearchMultiClass] launch save', props<{ descriptionQuery: DescriptionQuery; id?: string }>())\n};\n","import { createReducer, on } from '@ngrx/store';\nimport { MultiClassCondition } from '@provoly/dashboard';\nimport { SearchMultiClassActions } from './search-multi-class.actions';\n\nexport const searchMultiClassFeatureKey = '@pry/search/multi-class';\n\nexport interface SearchMultiClassState {\n multiType: 'AND' | 'OR';\n conditions: MultiClassCondition[];\n}\n\nexport const initialSearchState: SearchMultiClassState = {\n multiType: 'AND',\n conditions: []\n};\n\nexport const searchMultiClassReducer = createReducer(\n initialSearchState,\n on(SearchMultiClassActions.updateMultiType, (state, action) => ({\n ...state,\n multiType: action.multiType\n })),\n on(SearchMultiClassActions.addMultiClassCondition, (state, action) => ({\n ...state,\n conditions: [...state.conditions, action.condition]\n })),\n on(SearchMultiClassActions.removeCondition, (state, action) => ({\n ...state,\n conditions: [...state.conditions.filter((c) => c.id !== action.conditionId)]\n })),\n on(SearchMultiClassActions.updateConditionField, (state, action) => ({\n ...state,\n conditions: [\n ...state.conditions.map((c) =>\n c.id === action.conditionId\n ? ({\n ...c,\n field: action.field\n } as MultiClassCondition)\n : c\n )\n ]\n })),\n on(SearchMultiClassActions.updateConditionPattern, (state, action) => ({\n ...state,\n conditions: [\n ...state.conditions.map((c) =>\n c.id === action.conditionId\n ? ({\n ...c,\n pattern: action.pattern,\n isDate: action.isDate,\n operator: action.isDate ? 'GREATER_THAN' : 'EQUALS',\n value: null\n } as MultiClassCondition)\n : c\n )\n ]\n })),\n on(SearchMultiClassActions.updateCondition, (state, action) => ({\n ...state,\n conditions: [\n ...state.conditions.map((c) =>\n c.id === action.conditionId\n ? {\n ...c,\n [action.key]: action.value,\n upperValue: action.upperValue\n }\n : c\n )\n ]\n })),\n on(SearchMultiClassActions.updateConditions, (state, action) => ({\n ...state,\n conditions: action.conditions\n })),\n on(SearchMultiClassActions.resetSearch, (state) => ({\n ...state,\n multiType: 'AND' as const,\n conditions: []\n }))\n);\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\nimport { MultiClassCondition } from '@provoly/dashboard';\nimport * as fromSearchMultiClass from './search-multi-class.reducer';\nimport { SearchMultiClassState } from './search-multi-class.reducer';\n\nconst feature = createFeatureSelector<fromSearchMultiClass.SearchMultiClassState>(\n fromSearchMultiClass.searchMultiClassFeatureKey\n);\n\nconst multiType = createSelector(feature, (state: SearchMultiClassState) => state?.multiType);\nconst conditions = createSelector(feature, (state: SearchMultiClassState) => state?.conditions);\nconst getConditionById = (id: string) =>\n createSelector(conditions, (conditions: MultiClassCondition[]) => conditions?.find((c) => c.id === id));\n\n// in case when user could choose classes before fields\n\nconst searchMultiClassValid = createSelector(conditions, (conditions: MultiClassCondition[]) => {\n return (\n conditions.find((condition: MultiClassCondition) => {\n if (condition.field === undefined) {\n return true;\n }\n if ((condition.value ?? '') === '') {\n return true;\n }\n if (condition.pattern) {\n const pattern = condition.pattern;\n const value = condition.value as string;\n const patternTest = RegExp(pattern).test(value);\n return !patternTest;\n }\n return false;\n }) === undefined\n );\n});\n\nexport const SearchMultiClassSelectors = {\n feature,\n multiType,\n conditions,\n getConditionById,\n searchMultiClassValid\n};\n","import { createAction, props } from '@ngrx/store';\nimport { DescriptionQuery } from '@provoly/dashboard';\n\nexport const searchFulltextActions = {\n search: createAction('[Search Fulltext] search', props<{ search: string; classes: string[] }>()),\n save: createAction(\n '[Search Fulltext] save',\n props<{ search: string; classes: string[]; descriptionQuery: DescriptionQuery; id?: string }>()\n )\n};\n","import { Component, ElementRef, Inject, OnInit, ViewChild } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport {\n ConfigActions,\n DataSourceActions,\n DataSourceSelectors,\n DEFAULT_NAMED_QUERY_ID,\n EXPLORE_NAMED_QUERY_ID,\n NamedQuery,\n NamedQueryTypes,\n PRY_DIALOG_DATA,\n PryDialogRef,\n PryVisibilityType\n} from '@provoly/dashboard';\nimport { Observable, take } from 'rxjs';\nimport { v4 as uuidv4 } from 'uuid';\nimport { SearchFulltextChange } from '../../search-fulltext/search-fulltext/search-fulltext.component';\nimport { searchFulltextActions } from '../../search-fulltext/store/search-fulltext.actions';\nimport { SearchMonoClassActions } from '../../search-mono-class/store/search-mono-class.actions';\nimport { SearchMultiClassActions } from '../../search-multi-class/store/search-multi-class.actions';\n\n@Component({\n selector: 'pry-save-query',\n templateUrl: './save-query.component.html'\n})\nexport class PrySaveQueryComponent implements OnInit {\n value: string = '';\n opened = false;\n currentEdit$: Observable<NamedQuery | undefined>;\n isEdit = false;\n\n id?: string;\n name: string = '';\n description: string = '';\n visibility = {\n type: PryVisibilityType.PRIVATE,\n users: []\n };\n savedNameQuery?: NamedQuery;\n\n get modalSave(): boolean {\n return this.data.save;\n }\n\n get saveDisabled(): boolean {\n return (\n (this.name ?? '') === '' ||\n (this.savedNameQuery?.name === this.name && !this.savedNameQuery?.owner) ||\n this.name.length > 30 ||\n this.description.length > 200\n );\n }\n\n @ViewChild('cross') cross!: ElementRef<HTMLButtonElement>;\n @ViewChild('save') save!: ElementRef<HTMLButtonElement>;\n\n constructor(\n private store: Store,\n private dialog: PryDialogRef<PrySaveQueryComponent>,\n @Inject(PRY_DIALOG_DATA)\n private data: {\n save: boolean;\n type: NamedQueryTypes;\n payload?: SearchFulltextChange;\n }\n ) {\n this.currentEdit$ = this.store.select(DataSourceSelectors.currentEdit);\n }\n\n ngOnInit(): void {\n setTimeout(() => {\n this.cross.nativeElement.focus();\n }, 10);\n\n this.currentEdit$.pipe(take(1)).subscribe((nq) => {\n if (nq) {\n this.savedNameQuery = nq;\n this.id = nq.id;\n this.isEdit = true;\n this.name = nq.name;\n this.description = nq.description ?? '';\n }\n });\n }\n\n onSave() {\n const id =\n this.id === DEFAULT_NAMED_QUERY_ID || this.id === EXPLORE_NAMED_QUERY_ID || !this.id ? uuidv4() : this.id;\n if (this.name !== '') {\n const descriptionQuery = {\n name: this.name,\n description: this.description ?? undefined,\n visibility: this.visibility\n };\n switch (this.data.type) {\n case NamedQueryTypes.FULL_TEXT:\n const classes = this.data.payload?.classes ?? [];\n const search = this.data.payload?.value ?? '';\n this.store.dispatch(searchFulltextActions.save({ descriptionQuery, classes, search, id }));\n break;\n case NamedQueryTypes.MONO_CLASS:\n this.store.dispatch(SearchMonoClassActions.save({ descriptionQuery, id }));\n break;\n case NamedQueryTypes.MULTI_CLASS:\n this.store.dispatch(SearchMultiClassActions.save({ descriptionQuery, id }));\n break;\n }\n this.onClose();\n }\n }\n focusElement(element: HTMLButtonElement) {\n element.focus();\n }\n\n onClose() {\n this.store.dispatch(ConfigActions.closeOverlay({ id: 'PrySaveQueryComponent' }));\n this.store.dispatch(DataSourceActions.namedQuery.stopRename());\n if (this.isEdit) {\n this.store.dispatch(DataSourceActions.namedQuery.stopEdit());\n }\n this.isEdit = false;\n this.dialog.close();\n }\n}\n","<div\n class=\"o-modal-wrapper\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby=\"dialog_rename\"\n (keydown.escape)=\"onClose()\"\n>\n <div class=\"o-modal\">\n <div class=\"o-modal__top\">\n <div class=\"o-modal__top__title\">\n <h2 class=\"a-h2\" id=\"dialog_title\">\n {{ '@pry.search.namedQuery.' + (modalSave ? 'saveTitle' : 'renameTitle') | i18n }}\n </h2>\n </div>\n <div class=\"o-modal__top__close\">\n <button class=\"a-btn a-btn--icon-only\" #cross (keydown.shift.tab)=\"focusElement(this.save)\" (click)=\"onClose()\">\n <pry-icon iconSvg=\"close\" [height]=\"35\" [width]=\"35\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.toolbox.close' | i18n }}</span>\n </button>\n </div>\n </div>\n\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"name\">{{ '@pry.search.namedQuery.name' | i18n }}</label>\n <input [(ngModel)]=\"name\" id=\"name\" type=\"text\" class=\"a-form-field\" required maxlength=\"30\" />\n </div>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"description\">{{ '@pry.search.namedQuery.description' | i18n }}</label>\n <input [(ngModel)]=\"description\" id=\"description\" type=\"text\" class=\"a-form-field\" required maxlength=\"200\" />\n </div>\n\n <pry-share [(ngModel)]=\"visibility\"></pry-share>\n\n <div class=\"m-btn-group\">\n <button type=\"button\" (click)=\"onClose()\" class=\"a-btn a-btn--secondary\">\n {{ '@pry.toolbox.manifest.close' | i18n }}\n </button>\n <button\n type=\"button\"\n #save\n (click)=\"onSave()\"\n class=\"a-btn a-btn--primary\"\n [disabled]=\"saveDisabled\"\n (keydown.tab)=\"focusElement(this.cross)\"\n >\n {{ '@pry.toolbox.manifest.check' | i18n }}\n </button>\n </div>\n </div>\n</div>\n","import { Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'pry-search-css',\n template: '',\n styleUrls: [\n '_m-choose-widget.scss',\n '_o-edit-named-query.scss',\n '_o-search-fulltext.scss',\n '_o-pry-search-composed.scss',\n '_o-pry-search-order.scss',\n '_m-pry-search-select-attribute.scss',\n '_o-multi-class-condition.scss',\n '_o-search-mono-class.scss',\n '_o-pry-search-condition.scss',\n '_o-pry-search-tools.scss',\n '_o-edit-named-query-modal.scss',\n '_o-multi-class-field-selection.scss',\n '_o-search-multi-class.scss',\n '_o-pry-search-home.scss'\n ],\n encapsulation: ViewEncapsulation.None\n})\nexport class PrySearchCssComponent {}\n","import { ConnectedPosition, Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport {\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n TemplateRef,\n ViewChild,\n ViewContainerRef\n} from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport {\n ConfigActions,\n DashboardActions,\n DashboardGridLayout,\n DashboardSelectors,\n DataSourceActions,\n DataSourceSelectors,\n DatasourceUtils,\n defaultMenuStructure,\n FullTextSearchPayload,\n NamedQuery,\n NamedQueryTypes,\n PryDialogConfirmComponent,\n PryDialogConfirmData,\n PryDialogService,\n SearchActions,\n WidgetLayout\n} from '@provoly/dashboard';\nimport {\n BehaviorSubject,\n combineLatest,\n combineLatestWith,\n debounceTime,\n filter,\n map,\n Observable,\n Subscription,\n take\n} from 'rxjs';\nimport { PrySaveQueryComponent } from '../components/save-query/save-query.component';\nimport { SearchFulltextChange } from '../search-fulltext/search-fulltext/search-fulltext.component';\n\n@Component({\n selector: 'pry-search-home',\n templateUrl: './search-home.component.html'\n})\nexport class PrySearchHomeComponent implements OnInit, OnDestroy {\n @ViewChild('templateSpot', { read: TemplateRef }) templateSpot!: TemplateRef<any>;\n @ViewChild('templateRefresh', { read: TemplateRef }) templateRefresh!: TemplateRef<any>;\n\n @Input() searchFulltextTpl?: TemplateRef<any>;\n @Input() isMoreList = false;\n\n @Output() changeListView = new EventEmitter<boolean>();\n @Output() changeSearchCriteria = new EventEmitter<boolean>();\n\n namedQueryList$?: Observable<NamedQuery[]>;\n private subscription: Subscription = new Subscription();\n\n namedQueriesUses$!: Observable<{ [p: string]: { windowIndex: number; type: string; layout: WidgetLayout }[] }>;\n spotting$ = new BehaviorSubject<string>('');\n spottingWidget$!: Observable<{ windowIndex: number; type: string; layout: WidgetLayout }[]>;\n refreshOptions = [0, 10, 30, 60];\n\n icons = {\n map: 'share_location',\n table: 'table_chart',\n chart: 'show_chart',\n graph: 'graph'\n } as { [key: string]: string };\n\n loadOpened: string | undefined;\n\n private overlayRef?: OverlayRef;\n\n readonly connectedPosition: ConnectedPosition = {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top'\n };\n structure = defaultMenuStructure.map((items) => ({\n ...items,\n sub: items.sub.filter((s) => s.type !== 'iframe' && s.type !== 'detail')\n }));\n\n refreshRates$!: Observable<{ [p: string]: number }>;\n refreshId: string = '';\n deleteError$?: Observable<any>;\n layout$!: Observable<string>;\n DashboardGridLayout = DashboardGridLayout;\n\n constructor(\n private store: Store,\n private overlay: Overlay,\n private viewContainerRef: ViewContainerRef,\n private pryDialog: PryDialogService\n ) {}\n\n ngOnInit() {\n this.store.dispatch(DataSourceActions.load({}));\n this.namedQueryList$ = this.store.select(DataSourceSelectors.getNamedQuerySorted);\n this.namedQueriesUses$ = this.store.select(DashboardSelectors.namedQueriesUses);\n this.spottingWidget$ = combineLatest([this.namedQueriesUses$, this.spotting$]).pipe(\n map(([uses, spotting]) => uses[spotting] ?? []),\n map((uses) => uses.map((use) => ({ ...use, windowIndex: use.windowIndex + 1 })))\n );\n this.refreshRates$ = this.store.select(DashboardSelectors.refreshRates);\n this.layout$ = this.store.select(DashboardSelectors.gridLayout);\n this.deleteError$ = this.store.select(DataSourceSelectors.errors).pipe(debounceTime(100));\n }\n\n onSearchNamedQuery(id: string) {\n this.store.dispatch(DashboardActions.updateWidgetInPresentation({ id, widgetType: 'table' }));\n }\n\n onFavorite(id: string, isFavorite: boolean | undefined) {\n if (!isFavorite) {\n this.store.dispatch(DataSourceActions.namedQuery.addFavorite({ id }));\n } else {\n this.store.dispatch(DataSourceActions.namedQuery.deleteFavorite({ id }));\n }\n }\n\n onSpot(id: string, $event: MouseEvent) {\n this.spotting$.next(id);\n\n if (!this.overlayRef) {\n this.overlayRef = this.overlay.create(\n new OverlayConfig({\n hasBackdrop: false,\n panelClass: ['spot-rs']\n })\n );\n this.store.dispatch(ConfigActions.addingOverlay({ id: this.constructor.name }));\n this.overlayRef.attach(new TemplatePortal(this.templateSpot, this.viewContainerRef));\n const spotElement = document.querySelector('.spot-rs') as HTMLDivElement;\n if (!!spotElement) {\n spotElement.style.left = $event.clientX - 10 + 'px';\n spotElement.style.top = $event.clientY - 10 + 'px';\n }\n }\n }\n\n hideSpot() {\n this.overlayRef?.dispose();\n this.store.dispatch(ConfigActions.closeOverlay({ id: this.constructor.name }));\n this.overlayRef = undefined;\n }\n\n onEdit(namedQuery: NamedQuery) {\n this.store.dispatch(DataSourceActions.namedQuery.edit({ currentEdit: namedQuery }));\n }\n\n onChangeListView(isMoreList: boolean) {\n this.changeListView.emit(isMoreList);\n }\n\n onSearchCriteria() {\n this.changeSearchCriteria.emit();\n }\n\n loadWidget(id: string, sub: { icon: string; label: string; type: string }) {\n this.store.dispatch(DashboardActions.updateWidgetInPresentation({ id, widgetType: sub.type }));\n this.loadOpened = undefined;\n }\n\n onDelete(nq: NamedQuery) {\n const data: PryDialogConfirmData = {\n title: '@pry.search.namedQuery.delete',\n actions: [\n { id: 0, label: '@pry.toolbox.manifest.close', color: 'secondary' },\n { id: 1, label: '@pry.search.namedQuery.delete' }\n ]\n };\n const dialog = this.pryDialog.open(PryDialogConfirmComponent, {\n data\n });\n this.subscription.add(\n dialog.closeValue.pipe(take(1)).subscribe((action) => {\n this.store.dispatch(ConfigActions.closeOverlay({ id: 'PryDialogConfirmComponent' }));\n if (action.id === 1) {\n this.store.dispatch(DataSourceActions.namedQuery.delete({ id: nq.id ?? '' }));\n this.subscription.add(\n this.deleteError$\n ?.pipe(\n combineLatestWith(this.store.select(DataSourceSelectors.isLoading)),\n filter(([, isLoading]) => !isLoading),\n take(1)\n )\n .subscribe(([error]) => {\n if (error?.status === 403) {\n const data: PryDialogConfirmData = {\n title: '@pry.manifest.deleteError',\n actions: [{ id: 1, label: '@pry.toolbox.close' }]\n };\n const errorDialog = this.pryDialog.open(PryDialogConfirmComponent, {\n data\n });\n this.subscription.add(\n errorDialog.closeValue.pipe(take(1)).subscribe(() => {\n this.store.dispatch(ConfigActions.closeOverlay({ id: 'PryDialogConfirmComponent' }));\n })\n );\n }\n })\n );\n }\n })\n );\n }\n\n onRename(nq: NamedQuery) {\n this.store.dispatch(DataSourceActions.namedQuery.openRename());\n this.store.dispatch(DataSourceActions.namedQuery.edit({ currentEdit: nq }));\n const save = false;\n const type = DatasourceUtils.getTypeFromPayload(nq.request);\n const data =\n type === NamedQueryTypes.FULL_TEXT\n ? { save, type, payload: this.extractPayload(nq.request as FullTextSearchPayload) }\n : { save, type };\n this.pryDialog.open(PrySaveQueryComponent, { data });\n }\n\n private extractPayload(payload: FullTextSearchPayload): SearchFulltextChange {\n const { fullSearch, oClasses } = payload;\n return { value: fullSearch.value, classes: oClasses ?? [] };\n }\n\n onRefresh(id: string, $event: MouseEvent) {\n this.refreshId = id;\n\n if (!this.overlayRef) {\n this.overlayRef = this.overlay.create(\n new OverlayConfig({\n hasBackdrop: true,\n panelClass: ['refresh-rs']\n })\n );\n this.store.dispatch(ConfigActions.addingOverlay({ id: this.constructor.name }));\n this.overlayRef.attach(new TemplatePortal(this.templateRefresh, this.viewContainerRef));\n this.overlayRef.backdropClick().subscribe((_) => this.hideSpot());\n const refreshElement = document.querySelector('.refresh-rs') as HTMLDivElement;\n const refresh = document.querySelector('.refreshbt') as HTMLDivElement;\n if (!!refreshElement) {\n const rect = refresh.getBoundingClientRect();\n refreshElement.style.left = rect.left + rect.width + 10 + 'px';\n refreshElement.style.top = rect.top + 137 + 'px';\n }\n }\n }\n\n selectRefresh($event: number) {\n this.store.dispatch(DashboardActions.setRefreshRate({ id: this.refreshId ?? '', rate: $event }));\n this.hideSpot();\n }\n\n refresh(id: string) {\n this.store.dispatch(\n SearchActions.getDatasourceItems({ id, excludeGeo: false, from: 'PrySearchHomeComponent.refresh()' })\n );\n }\n\n ngOnDestroy(): void {\n this.subscription.unsubscribe();\n }\n}\n","<pry-search-css></pry-search-css>\n<div class=\"o-pry-search-home__named-query\">\n @if (namedQueryList$ | async; as namedQuery) {\n @if (namedQuery.length > 0) {\n <div class=\"o-pry-search-home__named-query__card\">\n <pry-expand-panel [open]=\"true\">\n <pry-expand-panel-title>{{ '@pry.search.home.title' | i18n }}</pry-expand-panel-title>\n @for (nq of namedQuery.length > 1 && !isMoreList ? namedQuery.slice(0, 2) : namedQuery; track nq) {\n <pry-card>\n <pry-card-header [marker]=\"true\">\n <pry-card-icon>\n <pry-nq-color-selector [datasource]=\"nq\" [disabled]=\"true\"></pry-nq-color-selector>\n <img\n [alt]=\"nq.id | translateId : { type: 'datasource', output: 'name' } | async\"\n [height]=\"22\"\n [width]=\"22\"\n [src]=\"nq.id | translateId : { type: 'datasource', output: 'icon' } | async\"\n />\n </pry-card-icon>\n <pry-card-title>\n <div class=\"o-pry-card-title__text\" aria-describedby=\"infoTooltip_searchHome\">\n <div class=\"a-p o-pry-card-title__text__title\">{{ nq.name }}</div>\n @if (nq.description) {\n <div class=\"a-p o-pry-card-title__text__description\">{{ nq.description }}</div>\n }\n </div>\n <ng-template #infoTooltip>\n <div class=\"m-tooltip\" role=\"tooltip\" id=\"infoTooltip_searchHome\">\n <span class=\"m-tooltip__text\">\n {{ nq.name }}\n </span>\n @if (nq.description) {\n <span class=\"m-tooltip__description\">\n {{ nq.description }}\n </span>\n }\n </div>\n </ng-template>\n @if (nq.favorite) {\n <pry-icon\n class=\"o-pry-card-title__pin\"\n [width]=\"18\"\n [height]=\"18\"\n aria-label=\"favorite\"\n iconSvg=\"epingle\"\n ></pry-icon>\n }\n @if ((layout$ | async) !== DashboardGridLayout.MANUAL) {\n <button\n [attr.data-tooltip]=\"'@pry.search.home.showAssociatedWidget' | i18n\"\n data-tooltip-position=\"bottom\"\n class=\"a-tooltip a-btn a-btn--secondary -size-sm -override-tooltip-position\"\n (click)=\"onSearchNamedQuery(nq.id)\"\n >\n {{ '@pry.search.namedQuery.display' | i18n }}\n <span class=\"u-visually-hidden\">{{ '@pry.search.home.associatedWidget' | i18n }}</span>\n </button>\n }\n </pry-card-title>\n <pry-card-menu>\n <div class=\"o-pry-card-menu__nav\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-text o-pry-card-menu__nav__item\"\n (click)=\"onFavorite(nq.id, nq.favorite)\"\n >\n <pry-icon iconSvg=\"epingle\"></pry-icon>\n {{ (nq.favorite ? '@pry.search.namedQuery.noFavorite' : '@pry.search.namedQuery.favorite') | i18n }}\n </button>\n <pry-card-menu (click)=\"refresh(nq.id)\" class=\"refreshbt\">\n <button type=\"button\" class=\"a-btn a-btn--icon-text o-pry-card-menu__nav__item\">\n <pry-icon iconSvg=\"synchro\"></pry-icon>\n {{ '@pry.search.namedQuery.refreshData' | i18n }}\n </button>\n </pry-card-menu>\n @if ((layout$ | async) !== DashboardGridLayout.MANUAL) {\n <pry-card-menu>\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-text o-pry-card-menu__nav__item\"\n (click)=\"loadOpened = nq.id; $event.stopPropagation()\"\n cdkOverlayOrigin\n #triggerLoad=\"cdkOverlayOrigin\"\n >\n <pry-icon iconSvg=\"file_download\"></pry-icon>\n {{ '@pry.search.namedQuery.display' | i18n }}\n <pry-icon\n iconSvg=\"fleche_haut\"\n [ngStyle]=\"{ transform: 'rotate(90deg)', marginLeft: 'auto' }\"\n ></pry-icon>\n </button>\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"triggerLoad\"\n [cdkConnectedOverlayOpen]=\"loadOpened === nq.id\"\n [cdkConnectedOverlayHasBackdrop]=\"true\"\n [cdkConnectedOverlayPositions]=\"[connectedPosition]\"\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n (backdropClick)=\"loadOpened = undefined\"\n >\n <div class=\"o-draggable-menu -search-home\">\n <ul class=\"o-draggable-menu__list\">\n @for (menu of structure; track menu) {\n <li class=\"o-draggable-menu__list__item\">\n <button class=\"a-btn\" aria-haspopup=\"true\" aria-expanded=\"false\">\n <pry-icon [iconSvg]=\"menu.icon\"></pry-icon>\n {{ menu.label | i18n }}\n </button>\n <ul class=\"o-draggable-menu__list__submenu\">\n @for (sub of menu.sub; track sub) {\n <li class=\"o-draggable-menu__list__submenu__item\">\n <button class=\"a-btn\" (click)=\"loadWidget(nq.id, sub)\">\n <pry-icon [iconSvg]=\"sub.icon\"></pry-icon>\n {{ sub.label | i18n }}\n </button>\n </li>\n }\n </ul>\n </li>\n }\n </ul>\n </div>\n </ng-template>\n </pry-card-menu>\n }\n <pry-card-menu class=\"o-pry-card-menu__nav__item\">\n <pry-nq-color-selector [ngStyle]=\"{ width: '100%' }\" [datasource]=\"nq\"></pry-nq-color-selector>\n </pry-card-menu>\n <pry-card-menu (click)=\"onSpot(nq.id, $event)\">\n <button type=\"button\" class=\"a-btn a-btn--icon-text o-pry-card-menu__nav__item\">\n <pry-icon iconSvg=\"mode_clic\"></pry-icon>\n {{ '@pry.search.namedQuery.spot' | i18n }}\n <pry-icon\n iconSvg=\"fleche_haut\"\n [ngStyle]=\"{ transform: 'rotate(90deg)', marginLeft: 'auto' }\"\n ></pry-icon>\n </button>\n </pry-card-menu>\n <pry-card-menu (click)=\"onRefresh(nq.id, $event)\">\n <button type=\"button\" class=\"a-btn a-btn--icon-text o-pry-card-menu__nav__item\">\n <pry-icon iconSvg=\"history-line\"></pry-icon>\n {{ '@pry.search.namedQuery.refresh.title' | i18n }}\n <pry-icon\n iconSvg=\"fleche_haut\"\n [ngStyle]=\"{ transform: 'rotate(90deg)', marginLeft: 'auto' }\"\n ></pry-icon>\n </button>\n </pry-card-menu>\n @if (nq.owner) {\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-text o-pry-card-menu__nav__item\"\n (click)=\"onDelete(nq)\"\n >\n <pry-icon iconSvg=\"delete\"></pry-icon>\n {{ '@pry.search.namedQuery.delete' | i18n }}\n </button>\n }\n @if (nq.owner) {\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-text o-pry-card-menu__nav__item\"\n (click)=\"onRename(nq)\"\n >\n <pry-icon iconSvg=\"renamed\"></pry-icon>\n {{ '@pry.search.namedQuery.rename' | i18n }}\n </button>\n }\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-text o-pry-card-menu__nav__item\"\n (click)=\"onEdit(nq)\"\n (keydown.tab)=\"hideSpot()\"\n >\n <pry-icon iconSvg=\"edit\"></pry-icon>\n {{ '@pry.search.namedQuery.edit' | i18n }}\n </button>\n </div>\n </pry-card-menu>\n </pry-card-header>\n </pry-card>\n }\n </pry-expand-panel>\n </div>\n @if (namedQuery.length > 2) {\n <button\n class=\"a-btn -link-like\"\n aria-pressed=\"false\"\n id=\"btn_view_more\"\n (click)=\"onChangeListView(isMoreList)\"\n >\n {{ isMoreList ? ('@pry.search.namedQuery.seeLess' | i18n) : ('@pry.search.namedQuery.seeMore' | i18n) }}\n </button>\n }\n } @else {\n <p class=\"search-home__container-search\">{{ '@pry.search.namedQuery.emptyNamedQuery' | i18n }}</p>\n }\n }\n</div>\n\n<div class=\"o-pry-search-home__search\">\n <h3 class=\"a-h3\">{{ '@pry.search.home.ssTitle' | i18n }}</h3>\n @if (searchFulltextTpl) {\n <ng-container [ngTemplateOutlet]=\"searchFulltextTpl\"></ng-container>\n <p class=\"a-p o-pry-search-home__search__or\">{{ '@pry.search.home.or' | i18n }}</p>\n }\n <button class=\"a-btn a-btn--primary -width-full\" (click)=\"onSearchCriteria()\">\n <pry-icon [width]=\"20\" [height]=\"20\" iconSvg=\"search-criteria\"></pry-icon>\n {{ '@pry.search.home.searchByCriteria' | i18n }}\n <pry-icon iconSvg=\"arrow_right\"></pry-icon>\n </button>\n</div>\n\n<ng-template #templateSpot>\n <div (mouseleave)=\"hideSpot()\">\n {{\n ((spottingWidget$ | async)?.length ?? 0 > 0\n ? '@pry.search.namedQuery.spotTitle'\n : '@pry.search.namedQuery.noSpot'\n ) | i18n : { length: (spottingWidget$ | async)?.length }\n }}\n @for (use of spottingWidget$ | async; track use) {\n <div class=\"spot-line\">\n <pry-icon [width]=\"20\" [height]=\"20\" [iconSvg]=\"icons[use.type]\"></pry-icon>\n {{ '@pry.search.namedQuery.type.' + use.type | i18n }} - {{ '@pry.search.namedQuery.use' | i18n : use }}\n </div>\n }\n </div>\n</ng-template>\n\n<ng-template #templateRefresh>\n <div>\n @for (option of refreshOptions; track option) {\n <button\n class=\"refresh-line a-btn a-btn--icon-text -size-sm\"\n (click)=\"selectRefresh(option)\"\n >\n @if ((((refreshRates$ | async) ?? {})[refreshId] ?? 0) === option) {\n <pry-icon\n [width]=\"20\"\n [height]=\"20\"\n iconSvg=\"check\"\n ></pry-icon>\n }\n {{ '@pry.search.namedQuery.refresh.' + option | i18n }}\n </button>\n }\n </div>\n</ng-template>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { Attribute, Class, ClassSelectors, FieldSelectors, FieldType } from '@provoly/dashboard';\nimport { filter, map, Observable, switchMap } from 'rxjs';\nimport { withLatestFrom } from 'rxjs';\nimport { SearchMonoClassSelectors } from '../../store/search-mono-class.selectors';\n\n@Component({\n selector: 'pry-search-select-attribute',\n templateUrl: './search-select-attribute.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PrySearchSelectAttributeComponent {\n @Input() set id(val: string) {\n this._attributes$ = this.store.select(SearchMonoClassSelectors.selectMonoClassIdSearch).pipe(\n filter((id): id is string => id !== null),\n switchMap((id) => this.store.select(ClassSelectors.classById(id))),\n filter((clazz): clazz is Class => clazz !== undefined),\n map((clazz) => {\n const attributes = [...(clazz.attributes ?? [])].filter((attr) => attr.field.type !== FieldType.RAW);\n return attributes.sort((a, b) => a.name.localeCompare(b.name));\n })\n );\n }\n\n @Output() selectAttributeChange = new EventEmitter<Attribute>();\n\n get attributes$(): Observable<Attribute[]> | undefined {\n return this._attributes$;\n }\n\n _attributes$?: Observable<Attribute[]>;\n\n constructor(private store: Store<any>) {}\n\n onSelectAttribute(attribute: Attribute): void {\n this.selectAttributeChange.emit(attribute);\n }\n}\n","@if (_attributes$ | async; as attributes) {\n <ul class=\"m-pry-search-select-attribute\">\n @for (attr of attributes; track attr) {\n <li class=\"m-pry-search-select-attribute__item\">\n <button class=\"a-btn\" (click)=\"onSelectAttribute(attr)\">\n {{ attr.name }}\n </button>\n </li>\n }\n </ul>\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, HostBinding, Input, OnDestroy } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport {\n Attribute,\n Class,\n ClassSelectors,\n DateRange,\n FieldType,\n NormalizedCondition,\n OPERATOR_OPTIONS,\n OperatorOption,\n OperatorType\n} from '@provoly/dashboard';\nimport { combineLatest, filter, map, Observable, Subject, Subscription, switchMap, tap } from 'rxjs';\nimport { SearchMonoClassActions } from '../../store/search-mono-class.actions';\nimport { SearchMonoClassSelectors } from '../../store/search-mono-class.selectors';\n\n@Component({\n selector: 'pry-search-condition',\n templateUrl: './search-condition.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PrySearchConditionComponent implements OnDestroy {\n @HostBinding('class') class = 'o-pry-search-condition-wrapper';\n\n @Input() set attributeId(val: string) {\n this.attributeId$.next(val);\n this.attributeName$ = this.store.select(SearchMonoClassSelectors.selectMonoClassIdSearch).pipe(\n filter((id): id is string => id !== null),\n switchMap((id) => this.store.select(ClassSelectors.classById(id))),\n filter((clazz): clazz is Class => clazz !== undefined),\n map((clazz: Class) => clazz.attributes.find((c) => c.id === val)?.name ?? '')\n );\n }\n\n @Input() set id(val: string) {\n this.conditionId$.next(val);\n this.conditionId = val;\n }\n\n @Input() set useTextDateInputs(val: boolean) {\n this.textDateInputs = val;\n }\n\n private attributeId$ = new Subject<string>();\n private conditionId$ = new Subject<string>();\n private conditionId!: string;\n attributeName$?: Observable<string>;\n operatorOptions$!: Observable<OperatorOption[]>;\n condition$!: Observable<NormalizedCondition>;\n\n pattern?: string;\n isDate = false;\n firstValueInvalid = false;\n secondValueInvalid = false;\n conditionValue = '';\n secondConditionValue = '';\n twoValues = false;\n operatorSelectedValue?: OperatorType;\n textDateInputs = false;\n dateConditionValue: string | DateRange = '';\n\n private sub = new Subscription();\n\n constructor(\n private store: Store<any>,\n private _detect: ChangeDetectorRef\n ) {\n this.sub.add(\n combineLatest([this.attributeId$, this.conditionId$])\n .pipe(\n filter(([attributeId, conditionId]) => attributeId !== null && conditionId !== null),\n tap(([attributeId, conditionId]) => {\n this.assignOperatorOption$(attributeId);\n this.assignCondition$(conditionId);\n }),\n switchMap(() => combineLatest([this.operatorOptions$, this.condition$]))\n )\n .subscribe(([operatorOptions, condition]) => {\n if (condition) {\n this.conditionValue = condition.value?.toString() ?? '';\n const operator = operatorOptions.find((ope) => ope.operator === condition.operator);\n if (operator) {\n this.operatorSelectedValue = operator.operator;\n this.twoValues = operator.twoValues;\n }\n this.pattern = condition.pattern;\n this.isDate = condition.isDate ?? false;\n this._detect.markForCheck();\n }\n })\n );\n }\n\n ngOnDestroy(): void {\n this.sub.unsubscribe();\n }\n\n onSelectedOperator(operatorType: OperatorType): void {\n this.store.dispatch(\n SearchMonoClassActions.updateNormalizedConditionOperatorForConditionId({\n conditionId: this.conditionId,\n operator: operatorType\n })\n );\n }\n\n updateFirstValue(): void {\n this.store.dispatch(\n SearchMonoClassActions.updateNormalizedConditionValueForConditionId({\n value: this.conditionValue,\n conditionId: this.conditionId\n })\n );\n }\n\n onCheckValidity(evt: any, first: boolean) {\n if (this.pattern && evt?.target?.value) {\n if (first) {\n this.firstValueInvalid = !RegExp(this.pattern).test(evt.target.value);\n } else {\n this.secondValueInvalid = !RegExp(this.pattern).test(evt.target.value);\n }\n this._detect.markForCheck();\n }\n }\n\n onDeleteAttributeCondition(): void {\n this.store.dispatch(SearchMonoClassActions.deleteNormalizedConditionById({ conditionId: this.conditionId }));\n }\n\n updateSecondValue(): void {\n this.store.dispatch(\n SearchMonoClassActions.updateNormalizedConditionValueForConditionId({\n value: this.conditionValue,\n conditionId: this.conditionId,\n upperValue: this.secondConditionValue\n })\n );\n }\n\n updateDateCondition(): void {\n this.store.dispatch(\n SearchMonoClassActions.updateNormalizedConditionValueForConditionId({\n value: typeof this.dateConditionValue == 'object' ? this.dateConditionValue.start : this.dateConditionValue,\n conditionId: this.conditionId,\n upperValue: typeof this.dateConditionValue == 'object' ? this.dateConditionValue.end : ''\n })\n );\n }\n\n private assignOperatorOption$(attributeId: string): void {\n this.operatorOptions$ = this.store\n .select(SearchMonoClassSelectors.selectMonoClassSearchAttributeById(attributeId))\n .pipe(\n filter((attr): attr is Attribute => attr !== undefined),\n map((attr: Attribute) => {\n const fieldType = attr.field.type;\n if (fieldType === FieldType.STRING || fieldType === FieldType.KEYWORD) {\n return OPERATOR_OPTIONS.filter((el) => el.type === 'string');\n } else if (\n fieldType === FieldType.INTEGER ||\n fieldType === FieldType.DECIMAL ||\n fieldType === FieldType.LONG\n ) {\n return OPERATOR_OPTIONS.filter((el) => el.type === 'number');\n } else {\n return OPERATOR_OPTIONS.filter((el) => el.type === 'date');\n }\n })\n );\n }\n\n private assignCondition$(conditionId: string): void {\n this.condition$ = this.store\n .select(SearchMonoClassSelectors.selectMonoClassConditionsById(conditionId))\n .pipe(filter((cond): cond is NormalizedCondition => cond !== null));\n }\n}\n","<div class=\"o-pry-search-condition\">\n <div class=\"o-pry-search-condition__fields\" [class.has-date-picker]=\"isDate && !textDateInputs\">\n <input class=\"a-form-field\" type=\"text\" [ngModel]=\"attributeName$ | async\" readonly />\n <pry-select\n class=\"a-pry-select operator\"\n [items]=\"operatorOptions$ | async\"\n bindValue=\"operator\"\n bindLabel=\"translation\"\n name=\"operator\"\n [ngModel]=\"operatorSelectedValue\"\n (ngModelChange)=\"onSelectedOperator($event)\"\n ></pry-select>\n @if (isDate && !textDateInputs) {\n <pry-date-picker\n class=\"o-pry-search-condition__date-picker\"\n [(ngModel)]=\"dateConditionValue\"\n (ngModelChange)=\"updateDateCondition()\"\n [rangePicker]=\"twoValues\"\n [roundSelection]=\"true\"\n [timePicker]=\"true\"\n required\n ></pry-date-picker>\n } @else {\n <input\n class=\"a-form-field\"\n type=\"text\"\n [placeholder]=\"(twoValues ? '@pry.search.placeholder.minValue' : '@pry.search.placeholder.search') | i18n\"\n [ngClass]=\"{ '-half': twoValues }\"\n [class.pry-search-condition-input-pattern]=\"firstValue.touched && firstValueInvalid\"\n [class.pry-search-condition-input-required]=\"firstValue.touched && firstValue.invalid\"\n name=\"value\"\n [type]=\"isDate ? 'date' : 'text'\"\n required\n #firstValue=\"ngModel\"\n [(ngModel)]=\"conditionValue\"\n (input)=\"onCheckValidity($event, true)\"\n (focusout)=\"updateFirstValue()\"\n />\n @if (twoValues) {\n <input\n class=\"a-form-field\"\n type=\"text\"\n [placeholder]=\"'@pry.search.placeholder.maxValue' | i18n\"\n required\n [type]=\"isDate ? 'date' : 'text'\"\n [(ngModel)]=\"secondConditionValue\"\n (input)=\"onCheckValidity($event, false)\"\n (focusout)=\"updateSecondValue()\"\n />\n }\n }\n </div>\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only -circle -size-xs delete\"\n (click)=\"onDeleteAttributeCondition()\"\n [title]=\"'@pry.search.attribute.remove' | i18n\"\n >\n <pry-icon iconSvg=\"close\" [width]=\"22\" [height]=\"22\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.search.attribute.remove' | i18n }}</span>\n </button>\n</div>\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, HostBinding, HostListener, Input } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { Attribute, ConditionType, NormalizedCondition } from '@provoly/dashboard';\nimport { Observable, of } from 'rxjs';\nimport { SearchMonoClassActions } from '../../store/search-mono-class.actions';\nimport { SearchMonoClassSelectors } from '../../store/search-mono-class.selectors';\n\n@Component({\n selector: 'pry-search-composed',\n templateUrl: './search-composed.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PrySearchComposedComponent {\n @HostBinding('class') class = 'o-pry-search-composed-wrapper';\n @HostBinding('class.is-hover') hover = false;\n masterId$: Observable<string | null>;\n\n @HostListener('mouseover', ['$event'])\n onMouseOver(evt: any) {\n evt.stopPropagation();\n this.hover = true;\n }\n\n @HostListener('mouseout', ['$event'])\n onMouseOut(evt: any) {\n evt.stopPropagation();\n this.hover = false;\n }\n\n @Input() set id(val: string) {\n this._id = val;\n this.condition$ = this.store.select(SearchMonoClassSelectors.selectMonoClassConditionsById(this._id));\n }\n\n private _id!: string;\n condition$: Observable<NormalizedCondition | null> = of(null);\n\n panelNewAttributeOpen = false;\n\n constructor(\n private store: Store<any>,\n private _change: ChangeDetectorRef\n ) {\n this.masterId$ = this.store.select(SearchMonoClassSelectors.selectMonoClassConditionsMasterId);\n }\n\n onAddNestedCondition(conditionId: string): void {\n this.store.dispatch(SearchMonoClassActions.addNormalizedConditionComposedForConditionId({ conditionId }));\n }\n\n onSelectType(conditionId: string, conditionType: ConditionType): void {\n this.store.dispatch(\n SearchMonoClassActions.updateNormalizedConditionTypeForConditionId({ conditionId, conditionType })\n );\n }\n\n onOpenPanel() {\n this.panelNewAttributeOpen = true;\n this._change.markForCheck();\n }\n\n onClosePanel() {\n if (this.panelNewAttributeOpen) {\n this.panelNewAttributeOpen = false;\n this._change.markForCheck();\n }\n }\n\n onAddAttributeCondition(attribute: Attribute, conditionId: string): void {\n this.store.dispatch(\n SearchMonoClassActions.addNormalizedConditionAttributeForConditionId({ conditionId, attribute })\n );\n this.onClosePanel();\n }\n\n onDeleteNestedCondition(conditionId: string): void {\n this.store.dispatch(SearchMonoClassActions.deleteNormalizedConditionById({ conditionId }));\n }\n}\n","<div class=\"o-pry-search-composed\" [ngClass]=\"{ 'pry-search-composed-hover': hover }\">\n @if (condition$ | async; as cond) {\n @if (cond.type === 'ATTRIBUTE') {\n @if (cond.attribute) {\n <pry-search-condition [attributeId]=\"cond.attribute\" [id]=\"cond.id\"></pry-search-condition>\n }\n } @else {\n <div class=\"o-pry-search-composed__condition\">\n <div class=\"o-pry-search-composed__condition__type -vertical-bar\">\n <div class=\"o-pry-search-composed__condition__type__content\">\n <pry-toggle\n [leftword]=\"'@pry.search.type.or' | i18n\"\n [rightword]=\"'@pry.search.type.and' | i18n\"\n [alwaysActive]=\"true\"\n [ngModel]=\"cond.type === 'OR'\"\n (ngModelChange)=\"onSelectType(cond.id, cond.type === 'OR' ? 'AND' : 'OR')\"\n ></pry-toggle>\n </div>\n </div>\n <div class=\"o-pry-search-composed__condition__content\">\n @for (composedId of cond.composed; track composedId) {\n <pry-search-composed [id]=\"composedId\"></pry-search-composed>\n }\n <div class=\"o-pry-search-composed__condition__content__footer\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--select -size-sm\"\n (click)=\"onOpenPanel()\"\n [pryOverlay]=\"selectAttribute\"\n [overlayOpen]=\"panelNewAttributeOpen\"\n (overlayOpenChange)=\"onClosePanel()\"\n pryOverlayPosition=\"start-bottom\"\n [pryOverlayNoPadding]=\"true\"\n >\n <pry-icon iconSvg=\"add\" [width]=\"15\" [height]=\"15\"></pry-icon>\n <span>{{ '@pry.search.composed.addCondition' | i18n }}</span>\n </button>\n <button type=\"button\" class=\"a-btn a-btn--secondary -size-sm\" (click)=\"onAddNestedCondition(cond.id)\">\n <pry-icon iconSvg=\"picture-in-picture\" [width]=\"16\" [height]=\"16\"></pry-icon>\n <span>{{ '@pry.search.composed.addGroup' | i18n }}</span>\n </button>\n @if (masterId$ | async; as masterId) {\n @if (masterId !== cond.id) {\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only -circle -size-sm o-pry-search-composed__condition__content__footer__remove\"\n (click)=\"onDeleteNestedCondition(cond.id)\"\n >\n <pry-icon iconSvg=\"close\" [width]=\"16\" [height]=\"16\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.search.composed.remove' | i18n }}</span>\n </button>\n }\n }\n </div>\n <ng-template #selectAttribute>\n <pry-search-select-attribute\n [id]=\"cond.id\"\n (selectAttributeChange)=\"onAddAttributeCondition($event, cond.id)\"\n ></pry-search-select-attribute>\n </ng-template>\n </div>\n </div>\n }\n }\n</div>\n","import { AfterViewInit, ChangeDetectionStrategy, Component, HostBinding, HostListener } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport {\n Attribute,\n Class,\n ClassSelectors,\n Field,\n FieldSelectors,\n FieldType,\n OrderValue,\n PryI18nService,\n ResultOrder\n} from '@provoly/dashboard';\nimport equal from 'fast-deep-equal/es6';\nimport { combineLatest, Observable } from 'rxjs';\nimport { distinctUntilChanged, map, withLatestFrom } from 'rxjs';\nimport { SearchMonoClassActions } from '../../store/search-mono-class.actions';\nimport { SearchMonoClassSelectors } from '../../store/search-mono-class.selectors';\n\n@Component({\n selector: 'pry-search-order',\n templateUrl: './search-order.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PrySearchOrderComponent implements AfterViewInit {\n @HostBinding('class') class = 'o-pry-search-order-wrapper';\n @HostBinding('class.is-hover') hover = false;\n masterId$: Observable<string | null>;\n monoClassId$: Observable<string | undefined>;\n classes$: Observable<Class[]>;\n variableAttributes$: Observable<Attribute[]>;\n order$: Observable<ResultOrder | undefined>;\n fields$: Observable<Field[]>;\n private activated = false;\n\n @HostListener('mouseover', ['$event'])\n onMouseOver(evt: any) {\n evt.stopPropagation();\n this.hover = true;\n }\n\n @HostListener('mouseout', ['$event'])\n onMouseOut(evt: any) {\n evt.stopPropagation();\n this.hover = false;\n }\n\n constructor(\n private store: Store<any>,\n private translateService: PryI18nService\n ) {\n this.masterId$ = this.store.select(SearchMonoClassSelectors.selectMonoClassConditionsMasterId);\n this.monoClassId$ = this.store.select(SearchMonoClassSelectors.selectMonoClassIdSearch);\n this.order$ = this.store.select(SearchMonoClassSelectors.order);\n this.classes$ = this.store.select(ClassSelectors.classes);\n this.fields$ = this.store.select(FieldSelectors.fields);\n\n this.variableAttributes$ = combineLatest([this.monoClassId$, this.classes$]).pipe(\n map(([classId, classes]) => classes.find((clazz) => clazz.id === classId)?.attributes ?? []),\n map((attrs) => attrs.filter((attr) => attr.field.type !== FieldType.RAW)),\n map((attrs) =>\n attrs.concat({\n name: this.translateService.instant('@pry.search.composed.orderNone'),\n id: 'null'\n } as unknown as Attribute)\n ),\n distinctUntilChanged((p, c) => equal(p, c))\n );\n }\n\n ngAfterViewInit(): void {\n setTimeout(() => {\n this.activated = true;\n }, 100);\n }\n\n changeProperty(_attribute?: string, asc?: OrderValue) {\n if (this.activated) {\n const attribute = _attribute === 'null' ? undefined : _attribute;\n this.store.dispatch(\n SearchMonoClassActions.addOrder({ attribute: attribute, asc: asc ?? (attribute ? 'asc' : undefined) })\n );\n }\n }\n}\n","<div class=\"o-pry-search-order\">\n <pry-select\n (ngModelChange)=\"changeProperty($event)\"\n [items]=\"variableAttributes$ | async\"\n [ngModel]=\"(order$ | async)?.attribute ?? 'null'\"\n bindLabel=\"name\"\n bindValue=\"id\"\n ></pry-select>\n @if ((order$ | async)?.attribute) {\n <pry-toggle\n [ngModel]=\"(order$ | async)?.asc === 'asc'\"\n (ngModelChange)=\"changeProperty(undefined, $event ? 'asc' : 'desc')\"\n [alwaysActive]=\"true\"\n dir=\"ltr\"\n >\n {{ ((order$ | async)?.asc === 'asc' ? '@pry.search.composed.orderA' : '@pry.search.composed.orderD') | i18n }}\n </pry-toggle>\n }\n</div>\n","import { Component } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { Class, ClassSelectors, ClassState, SearchState } from '@provoly/dashboard';\nimport { Observable } from 'rxjs';\nimport { filter, switchMap, take } from 'rxjs';\nimport { SearchMonoClassActions } from '../../store/search-mono-class.actions';\nimport { SearchMonoClassSelectors } from '../../store/search-mono-class.selectors';\n\n@Component({\n selector: 'pry-search-mono-class',\n templateUrl: './search-mono-class.component.html'\n})\nexport class PrySearchMonoClassComponent {\n classes$?: Observable<Array<Class>>;\n monoClass$?: Observable<Class>;\n monoClassMasterId$?: Observable<string | null>;\n monoClassId$: Observable<string | undefined>;\n\n constructor(private store: Store<SearchState | ClassState>) {\n this.classes$ = this.store.select(ClassSelectors.classes);\n this.monoClassMasterId$ = this.store.select(SearchMonoClassSelectors.selectMonoClassConditionsMasterId);\n this.monoClassId$ = this.store.select(SearchMonoClassSelectors.selectMonoClassIdSearch);\n\n this.monoClass$ = this.store.select(SearchMonoClassSelectors.selectMonoClassIdSearch).pipe(\n filter((id): id is string => id !== null),\n switchMap((id) => this.store.select(ClassSelectors.classById(id))),\n filter((clazz): clazz is Class => clazz !== null)\n );\n }\n\n onChangeClass(classId: any) {\n this.store.dispatch(SearchMonoClassActions.addOrder({}));\n this.monoClassId$\n .pipe(\n take(1),\n filter((monoClassId) => monoClassId !== classId)\n )\n .subscribe(() => this.store.dispatch(SearchMonoClassActions.selectMonoClassSearch({ classId })));\n }\n}\n","<div class=\"o-search-mono-class\">\n <div class=\"o-search-mono-class__header search-mono__header\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"composed_class\">{{ '@pry.search.composed.class' | i18n }}</label>\n <pry-select\n [items]=\"classes$ | async\"\n bindValue=\"id\"\n [ngModel]=\"monoClassId$ | async\"\n (ngModelChange)=\"onChangeClass($event)\"\n [template]=\"optionTpl\"\n id=\"composed_class\"\n >\n </pry-select>\n </div>\n\n <ng-template #optionTpl let-item=\"item\">\n <div class=\"o-search-mono-class__header__selected search-class-selected__content\">\n @if (item.image) {\n <img\n alt=\"\"\n [height]=\"25\"\n [width]=\"25\"\n [src]=\"item.id | translateId : { type: 'class', output: 'icon' } | async\"\n />\n } @else {\n <img\n alt=\"\"\n [height]=\"25\"\n [width]=\"25\"\n [src]=\"item.id | translateId : { type: 'class', output: 'icon' } | async\"\n />\n }\n <span>{{ item.name }}</span>\n </div>\n </ng-template>\n </div>\n\n <div class=\"o-search-mono-class__content-wrapper search-mono__content\">\n <div class=\"o-search-mono-class__content search-mono__content__wrapper\">\n @if (monoClassMasterId$ | async; as conditionId) {\n <p class=\"o-search-mono-class__content__title search-mono__content__title\">\n {{ '@pry.search.composed.title' | i18n }}\n </p>\n @if (monoClass$ | async; as clazz) {\n <pry-search-composed [id]=\"conditionId\"></pry-search-composed>\n <p class=\"o-search-mono-class__content__title search-mono__content__title\">\n {{ '@pry.search.composed.order' | i18n }}\n </p>\n <pry-search-order></pry-search-order>\n }\n } @else {\n {{ '@pry.search.composed.shouldSelectClass' | i18n }}\n }\n </div>\n </div>\n</div>\n","import { Injectable } from '@angular/core';\nimport {\n Class,\n Field,\n FieldType,\n MultiClassCondition,\n MultiClassField,\n MultiClassFieldSelection,\n MultiClassSearchPayload,\n NamedQueryTypes\n} from '@provoly/dashboard';\nimport { v4 as uuidv4 } from 'uuid';\n\n@Injectable({ providedIn: 'root' })\nexport class SearchMultiClassService {\n generateCondition(field?: string, operator?: string): MultiClassCondition {\n const id = uuidv4();\n return {\n id,\n field,\n operator: operator ? operator : field ? 'EQUALS' : null,\n value: field ? '' : null,\n isDate: false\n } as MultiClassCondition;\n }\n\n getConditionsFromSearchPayload(payload: MultiClassSearchPayload, fields: Field[]): MultiClassCondition[] {\n return payload.fields.map((item: any) => {\n const generatedCondition = this.generateCondition(item.field, item.operator);\n const field = fields.find((field) => field.id === item.field);\n if (!field) {\n return generatedCondition;\n }\n const pattern = this.getPatternForField(field);\n return {\n ...generatedCondition,\n value: item.value,\n pattern,\n isDate: field?.type === FieldType.INSTANT\n };\n });\n }\n\n buildConditionsToSearchPayload(\n conditions: MultiClassCondition[],\n classes: Class[],\n multiType: 'AND' | 'OR'\n ): MultiClassSearchPayload {\n const oClasses = this.getClassesIdsByConditions(conditions, classes);\n const fields = conditions.map(\n (c) =>\n ({\n field: c.field,\n operator: c.operator,\n value: c.value,\n upperValue: c.upperValue\n }) as MultiClassField\n );\n return {\n fullSearch: null,\n type: NamedQueryTypes.MULTI_CLASS,\n multiType,\n oClasses,\n fields: fields.map((f) => {\n if (f.operator === 'INSIDE' || f.operator === 'OUTSIDE') {\n return f;\n }\n const { upperValue, ...rest } = f;\n return rest;\n })\n };\n }\n\n getFieldsAvailable(\n conditions: MultiClassCondition[],\n classes: Class[],\n fields: Field[],\n excludedCondition?: string\n ): MultiClassFieldSelection[] {\n const selectedFields = this.getSelectedFields(conditions, excludedCondition);\n const availableClasses = this.getClassesIntersectFields(selectedFields, classes);\n\n const classesByFields: { [key: string]: string[] } = {};\n const availableFields = [\n ...new Set(\n availableClasses.reduce((acc: Field[], c: Class) => {\n const fieldsByClass = c.attributes\n .map((a) => fields.find((f) => f.id === a.field.id))\n .filter((f): f is Field => f !== undefined);\n fieldsByClass.forEach((f) => {\n classesByFields[f.id] = classesByFields[f.id] ? [...classesByFields[f.id], c.name] : [c.name];\n });\n return [...acc, ...fieldsByClass];\n }, [])\n )\n ];\n\n return availableFields.map((f) => ({\n id: f.id,\n name: f.name,\n classes: classesByFields[f.id]\n }));\n }\n\n getClassesForField(\n conditions: MultiClassCondition[],\n condition: MultiClassCondition | undefined,\n classes: Class[]\n ): Class[] {\n const selectedFields = this.getSelectedFields(conditions);\n const availableClasses = this.getClassesIntersectFields(selectedFields, classes);\n return condition\n ? availableClasses.filter((c) => c.attributes.find((a) => a.field.id === condition.field))\n : availableClasses;\n }\n\n getPatternForField(field: Field): string {\n const type = field.type;\n switch (type) {\n case FieldType.DECIMAL:\n return '^[+-]?([0-9]*[.])?[0-9]+$';\n case FieldType.INTEGER:\n case FieldType.LONG:\n return '^[+-]?[0-9]+$';\n case FieldType.STRING:\n case FieldType.KEYWORD:\n return '^.+$';\n case FieldType.INSTANT:\n return '^[0-9]{4}-[0-9]{2}-[0-9]{2}$|^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}$';\n default:\n return '^.+$';\n }\n }\n\n private getClassesIdsByConditions(conditions: MultiClassCondition[], classes: Class[]): string[] {\n const selectedFields = this.getSelectedFields(conditions);\n const availableClasses = this.getClassesIntersectFields(selectedFields, classes);\n return availableClasses.map((c) => c.id);\n }\n\n private getClassesIntersectFields(fields: string[], classes: Class[]): Class[] {\n return fields?.length > 0\n ? classes.filter((c) => {\n const fieldsInClass = c.attributes.map((a) => a.field.id);\n const intersect = fields.filter((field) => fieldsInClass.includes(field)).length;\n return intersect === fields.length;\n })\n : classes;\n }\n\n private getSelectedFields(conditions: MultiClassCondition[], excludedCondition?: string): string[] {\n return [\n ...new Set(conditions.filter((c) => !(c.id === excludedCondition || c.field === undefined)).map((c) => c.field))\n ];\n }\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport {\n Class,\n ClassSelectors,\n Field,\n FieldSelectors,\n FieldType,\n MultiClassCondition,\n MultiClassFieldSelection\n} from '@provoly/dashboard';\nimport { combineLatest, map, Observable } from 'rxjs';\nimport { SearchMultiClassSelectors } from '../../store/search-multi-class.selectors';\nimport { SearchMultiClassService } from '../../store/search-multi-class.service';\n\n@Component({\n selector: 'pry-multi-class-field-selection',\n templateUrl: './multi-class-field-selection.component.html'\n})\nexport class MultiClassFieldSelectionComponent {\n fields$: Observable<Field[]>;\n classes$: Observable<Class[]>;\n conditions$: Observable<MultiClassCondition[]>;\n availableFields$: Observable<MultiClassFieldSelection[]>;\n\n fieldSearch = '';\n\n @Input() set conditionId(val: string | undefined) {\n this._conditionId = val;\n this.availableFields$ = combineLatest([this.conditions$, this.classes$, this.fields$]).pipe(\n map(([conditions, classes, fields]) => this.sortFields(conditions, classes, fields)),\n map((fields) => {\n const uniqueFields = fields.map((field) => ({\n ...field,\n classes: [...new Set(field.classes)]\n }));\n return uniqueFields;\n })\n );\n }\n\n get conditionId(): any {\n return this._conditionId;\n }\n\n private _conditionId?: string;\n\n @Output() closeModal = new EventEmitter();\n @Output() selectFieldChange = new EventEmitter<string>();\n\n constructor(\n private store: Store<any>,\n private searchMultiClassService: SearchMultiClassService\n ) {\n this.classes$ = this.store.select(ClassSelectors.classes);\n this.fields$ = this.store\n .select(FieldSelectors.fields)\n .pipe(map((fields) => fields.filter((field) => field.type !== FieldType.RAW)));\n this.conditions$ = this.store.select(SearchMultiClassSelectors.conditions);\n this.availableFields$ = combineLatest([this.conditions$, this.classes$, this.fields$]).pipe(\n map(([conditions, classes, fields]) => this.sortFields(conditions, classes, fields)),\n map((fields) => {\n const uniqueFields = fields.map((field) => ({\n ...field,\n classes: [...new Set(field.classes)]\n }));\n return uniqueFields;\n })\n );\n }\n\n private sortFields(conditions: MultiClassCondition[], classes: Class[], fields: Field[]): MultiClassFieldSelection[] {\n const availableFields = this.searchMultiClassService.getFieldsAvailable(\n conditions,\n classes,\n fields,\n this._conditionId\n );\n return availableFields.sort((a, b) => a.name.localeCompare(b.name));\n }\n}\n","<div class=\"o-multi-class-field-selection\" id=\"popin\">\n <div class=\"o-multi-class-field-selection__header\" data-toggle=\"popin\">\n <div class=\"o-multi-class-field-selection__header__top\">\n <div class=\"o-multi-class-field-selection__header__top__title\">\n <h2 class=\"a-h2\" id=\"dialog_title\">\n {{ '@pry.search.multi.selectField' | i18n }}\n </h2>\n </div>\n <div class=\"o-multi-class-field-selection__header__top__close\">\n <button class=\"a-btn a-btn--icon-only\" (click)=\"closeModal.emit()\">\n <pry-icon iconSvg=\"close\" [height]=\"35\" [width]=\"35\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.close' | i18n }}</span>\n </button>\n </div>\n </div>\n @if (availableFields$ | async; as list) {\n @if (list.length > 7) {\n <div class=\"o-multi-class-field-selection__header__search\">\n <input class=\"a-form-field\" type=\"text\" [(ngModel)]=\"fieldSearch\" placeholder=\"Filtrer\" />\n </div>\n }\n }\n </div>\n <div class=\"o-multi-class-field-selection__legend\">{{ '@pry.search.multi.legend' | i18n }}</div>\n <ul class=\"o-multi-class-field-selection__fields\">\n @for (field of availableFields$ | async | pryFilter: 'name' : fieldSearch; track field.id) {\n <li class=\"o-multi-class-field-selection__fields__select\" (click)=\"selectFieldChange.emit(field.id)\">\n <button class=\"a-btn -link-like\">\n {{ field.name }}\n <span class=\"o-multi-class-field-selection__fields__select__inside\"\n >{{ '@pry.search.multi.in' | i18n }}\n <ng-container> {{ field.classes.join(', ') }} </ng-container>\n </span>\n </button>\n </li>\n }\n </ul>\n</div>\n","import { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { Component, Input, OnInit, TemplateRef, ViewChild, ViewContainerRef } from '@angular/core';\nimport { AbstractControl, UntypedFormControl, UntypedFormGroup, Validators } from '@angular/forms';\nimport { Store } from '@ngrx/store';\nimport {\n Class,\n ClassSelectors,\n ConfigActions,\n Field,\n FieldSelectors,\n FieldType,\n MultiClassCondition,\n OPERATOR_OPTIONS,\n OperatorOption\n} from '@provoly/dashboard';\nimport { combineLatest, filter, map, Observable, of, switchMap, take } from 'rxjs';\nimport { SearchMultiClassActions } from '../../store/search-multi-class.actions';\nimport { SearchMultiClassSelectors } from '../../store/search-multi-class.selectors';\nimport { SearchMultiClassService } from '../../store/search-multi-class.service';\n\n@Component({\n selector: 'pry-multi-class-condition',\n templateUrl: './multi-class-condition.component.html'\n})\nexport class MultiClassConditionComponent implements OnInit {\n @ViewChild('fieldSelectionTpl', { read: TemplateRef }) fieldSelectionTpl!: TemplateRef<any>;\n condition$: Observable<MultiClassCondition | undefined> = of(undefined);\n classesLinked$: Observable<Class[]> = of([]);\n field$: Observable<Field | undefined> = of(undefined);\n classes$: Observable<Class[]>;\n conditions$: Observable<MultiClassCondition[]>;\n notLastCondition$: Observable<boolean>;\n operators$: Observable<OperatorOption[]> = of([]);\n\n @Input() set id(val: string) {\n this._id = val;\n this.condition$ = this.store.select(SearchMultiClassSelectors.getConditionById(this._id));\n this.condition$\n .pipe(\n filter((c): c is MultiClassCondition => c?.field !== undefined),\n take(1)\n )\n .subscribe((c) => {\n if (c.isDate && typeof this.form.get('value')?.value !== 'string') {\n this.form.patchValue({ operator: c.operator, value: { start: c.value, end: c.upperValue } });\n } else {\n this.form.patchValue(\n { operator: c.operator, value: c.value, upperValue: c.upperValue },\n { emitEvent: false }\n );\n }\n\n this.formValue?.setValidators([Validators.required]);\n this.formValue?.updateValueAndValidity();\n if (c.value !== null) {\n this.form.markAllAsTouched();\n }\n this.form.enable({ emitEvent: false });\n });\n this.field$ = this.condition$.pipe(\n filter((c): c is MultiClassCondition => c !== undefined),\n switchMap((c) => this.store.select(FieldSelectors.fieldById(c.field)))\n );\n this.classesLinked$ = combineLatest([this.conditions$, this.condition$, this.classes$]).pipe(\n map(([conditions, condition, classes]) => this.service.getClassesForField(conditions, condition, classes)),\n filter((clazz) => (clazz?.length ?? 0) > 0)\n );\n this.operators$ = this.condition$.pipe(\n filter((c): c is MultiClassCondition => c !== undefined),\n switchMap((c) => this.store.select(FieldSelectors.fieldById(c.field))),\n filter((f): f is Field => f !== undefined),\n map((f) => {\n const type = f.type;\n if ([FieldType.STRING, FieldType.KEYWORD].includes(type)) {\n return OPERATOR_OPTIONS.filter((opt) => opt.type === 'string');\n } else if ([FieldType.DECIMAL, FieldType.INTEGER, FieldType.LONG].includes(type)) {\n return OPERATOR_OPTIONS.filter((opt) => opt.type === 'number');\n } else {\n return OPERATOR_OPTIONS.filter((opt) => opt.type === 'date');\n }\n })\n );\n }\n\n private _id?: string;\n opened = false;\n private overlayRef?: OverlayRef;\n\n form = new UntypedFormGroup({\n operator: new UntypedFormControl({ value: null, disabled: true }, [Validators.required]),\n value: new UntypedFormControl({ value: null, disabled: true }, [Validators.required]),\n upperValue: new UntypedFormControl({ value: null, disabled: true }, [])\n });\n\n get formValue(): AbstractControl | null {\n return this.form.get('value');\n }\n\n constructor(\n private store: Store<any>,\n private service: SearchMultiClassService,\n private overlay: Overlay,\n private viewContainerRef: ViewContainerRef\n ) {\n this.classes$ = this.store.select(ClassSelectors.classes);\n this.conditions$ = this.store.select(SearchMultiClassSelectors.conditions);\n this.notLastCondition$ = this.conditions$.pipe(map((conditions) => (conditions?.length ?? 0) !== 1));\n }\n\n public ngOnInit(): void {\n this.form.get('operator')?.valueChanges.subscribe((value) => {\n if (this._id) {\n this.store.dispatch(SearchMultiClassActions.updateCondition({ conditionId: this._id, key: 'operator', value }));\n }\n });\n }\n\n onRemoveCondition(condition: MultiClassCondition): void {\n this.store.dispatch(SearchMultiClassActions.removeCondition({ conditionId: condition.id }));\n }\n\n toggleFieldSelection() {\n this.opened = !this.opened;\n if (this.opened) {\n this.openWithTemplate();\n } else {\n this.store.dispatch(ConfigActions.closeOverlay({ id: this.constructor.name }));\n this.overlayRef?.dispose();\n }\n }\n\n openWithTemplate() {\n this.overlayRef = this.overlay.create(\n new OverlayConfig({\n hasBackdrop: true,\n backdropClass: 'backdrop',\n positionStrategy: this.overlay.position().global().centerHorizontally().centerVertically(),\n minHeight: '300px',\n maxHeight: '600px',\n width: '500px'\n })\n );\n this.store.dispatch(ConfigActions.addingOverlay({ id: this.constructor.name }));\n this.overlayRef.backdropClick().subscribe((_) => this.toggleFieldSelection());\n this.overlayRef.attach(new TemplatePortal(this.fieldSelectionTpl, this.viewContainerRef));\n }\n\n onChangeField(condition: MultiClassCondition, field: string) {\n if (condition.field !== field) {\n this.store.dispatch(SearchMultiClassActions.updateConditionField({ conditionId: condition.id, field }));\n }\n this.toggleFieldSelection();\n }\n\n onCloseModal() {\n this.toggleFieldSelection();\n }\n\n onUpdateValue(condition: MultiClassCondition) {\n let formValue, formSecondValue;\n if (condition.isDate && typeof this.form.get('value')?.value !== 'string') {\n formValue = this.form.get('value')?.value.start;\n formSecondValue = this.form.get('value')?.value.end;\n } else {\n formValue = this.form.get('value')?.value;\n formSecondValue = this.form.get('upperValue')?.value;\n }\n\n if (formValue !== condition.value || formSecondValue !== condition.upperValue) {\n this.store.dispatch(\n SearchMultiClassActions.updateCondition({\n conditionId: condition.id,\n key: 'value',\n value: formValue,\n upperValue: formSecondValue\n })\n );\n }\n }\n\n join(classes: Class[]): string {\n return classes.map((clazz) => clazz.name).join(', ');\n }\n\n get hasTwoFields() {\n return this.form.get('operator')?.value === 'INSIDE' || this.form.get('operator')?.value === 'OUTSIDE';\n }\n}\n","@if (condition$ | async; as condition) {\n <div class=\"o-multi-class-condition\">\n <div class=\"o-multi-class-condition__content\">\n <div class=\"o-multi-class-condition__content__action\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--primary -size-sm -width-full\"\n aria-label=\"selection button\"\n (click)=\"toggleFieldSelection()\"\n >\n @if (field$ | async; as field) {\n {{ field.name }}\n } @else {\n {{ '@pry.search.multi.selectField' | i18n }}\n }\n </button>\n @if (classesLinked$ | async; as classesLinked) {\n <pry-icon\n iconSvg=\"links_line\"\n [width]=\"15\"\n [height]=\"15\"\n style=\"color: black\"\n [attr.data-tooltip]=\"('@pry.search.multi.in' | i18n) + ' ' + join(classesLinked)\"\n ></pry-icon>\n }\n </div>\n <ng-container [formGroup]=\"form\">\n <div class=\"m-form-label-field\">\n <pry-select\n [items]=\"operators$ | async\"\n placeholder=\"Opérateur\"\n formControlName=\"operator\"\n bindValue=\"operator\"\n bindLabel=\"translation\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n @if (condition.isDate) {\n <pry-date-picker\n formControlName=\"value\"\n (click)=\"onUpdateValue(condition)\"\n [rangePicker]=\"hasTwoFields\"\n [roundSelection]=\"true\"\n [timePicker]=\"true\"\n ></pry-date-picker>\n } @else {\n <input\n type=\"text\"\n class=\"a-form-field\"\n [placeholder]=\"\n (hasTwoFields ? '@pry.search.placeholder.minValue' : '@pry.search.placeholder.search') | i18n\n \"\n formControlName=\"value\"\n (focusout)=\"onUpdateValue(condition)\"\n />\n @if (hasTwoFields) {\n <input\n type=\"text\"\n class=\"a-form-field\"\n [placeholder]=\"'@pry.search.placeholder.maxValue' | i18n\"\n formControlName=\"upperValue\"\n (focusout)=\"onUpdateValue(condition)\"\n />\n }\n }\n @if (formValue?.errors?.['required'] && formValue?.touched) {\n <label class=\"a-label a-label--help -error\">\n {{ '@pry.search.multi.requiredError' | i18n }}\n </label>\n }\n </div>\n </ng-container>\n </div>\n <div class=\"o-multi-class-condition__delete-content\">\n @if (notLastCondition$ | async) {\n <button type=\"button\" class=\"a-btn a-btn--icon-only\">\n <pry-icon\n iconSvg=\"delete\"\n [height]=\"20\"\n [width]=\"20\"\n [animation]=\"false\"\n (click)=\"onRemoveCondition(condition)\"\n ></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.delete' | i18n }}</span>\n </button>\n } @else {\n <button type=\"button\" class=\"a-btn a-btn--icon-only\" disabled>\n <pry-icon [height]=\"20\" [width]=\"20\" iconSvg=\"delete\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.delete' | i18n }}</span>\n </button>\n }\n </div>\n </div>\n <ng-template #fieldSelectionTpl>\n <pry-multi-class-field-selection\n [conditionId]=\"condition.id\"\n (closeModal)=\"onCloseModal()\"\n (selectFieldChange)=\"onChangeField(condition, $event)\"\n ></pry-multi-class-field-selection>\n </ng-template>\n}\n","import { Component } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { MultiClassCondition } from '@provoly/dashboard';\nimport { Observable, take } from 'rxjs';\nimport { SearchMultiClassActions } from '../../store/search-multi-class.actions';\nimport { SearchMultiClassSelectors } from '../../store/search-multi-class.selectors';\n\n@Component({\n selector: 'pry-search-multi-class',\n templateUrl: './search-multi-class.component.html'\n})\nexport class PrySearchMultiClassComponent {\n conditions$: Observable<MultiClassCondition[]>;\n multiType$: Observable<'AND' | 'OR'>;\n\n optionsOpen = false;\n\n constructor(private store: Store<any>) {\n this.conditions$ = this.store.select(SearchMultiClassSelectors.conditions);\n this.multiType$ = this.store.select(SearchMultiClassSelectors.multiType);\n this.conditions$.pipe(take(1)).subscribe((conditions) => {\n if ((conditions?.length ?? 0) === 0) {\n this.store.dispatch(SearchMultiClassActions.addNewEmptyCondition());\n }\n });\n }\n\n onAddCondition() {\n this.store.dispatch(SearchMultiClassActions.addNewEmptyCondition());\n }\n\n onChangeMultiType(evt: any) {\n const multiType = evt ? 'OR' : 'AND';\n this.store.dispatch(SearchMultiClassActions.updateMultiType({ multiType }));\n }\n}\n","<div class=\"o-search-multi-class\">\n <div class=\"o-search-multi-class__header\">\n <h3 class=\"a-h3\">{{ '@pry.search.multi.title' | i18n }}</h3>\n <div\n class=\"a-tooltip\"\n [attr.data-tooltip]=\"'@pry.search.multi.extraOptions' | i18n\"\n data-tooltip-position=\"bottom\"\n [pryOverlay]=\"optionOverlay\"\n [(overlayOpen)]=\"optionsOpen\"\n (click)=\"optionsOpen = !optionsOpen\"\n >\n <button class=\"a-btn a-btn--icon-text\">\n {{ '@pry.search.multi.options' | i18n }}\n <pry-icon iconSvg=\"tune\" [width]=\"16\" [height]=\"16\" [animation]=\"false\"></pry-icon>\n </button>\n </div>\n <ng-template #optionOverlay>\n <div class=\"o-search-multi-class__options\">\n <pry-toggle\n [ngModel]=\"(multiType$ | async) === 'OR'\"\n [leftword]=\"'@pry.search.type.or' | i18n\"\n [rightword]=\"'@pry.search.type.and' | i18n\"\n [alwaysActive]=\"true\"\n (ngModelChange)=\"onChangeMultiType($event)\"\n >{{ '@pry.search.multi.multiType' | i18n }}</pry-toggle\n >\n </div>\n </ng-template>\n </div>\n\n <div class=\"o-search-multi-class__conditions-wrapper\">\n <div class=\"o-search-multi-class__conditions\">\n @for (condition of conditions$ | async; track condition) {\n <pry-multi-class-condition [id]=\"condition.id\"></pry-multi-class-condition>\n }\n </div>\n <div class=\"o-search-multi-class__add-condition\">\n <button (click)=\"onAddCondition()\" class=\"a-btn a-btn--secondary -size-sm\">\n <pry-icon [height]=\"20\" [width]=\"20\" iconSvg=\"add\"></pry-icon>\n {{ '@pry.search.multi.addCondition' | i18n }}\n </button>\n </div>\n </div>\n </div>\n","import { ConnectedPosition } from '@angular/cdk/overlay';\nimport { Component, ElementRef, EventEmitter, HostListener, Input, OnInit, Output, ViewChild } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport {\n Class,\n ClassSelectors,\n ClassState,\n DashboardActions,\n DEFAULT_NAMED_QUERY_ID,\n FullTextSearchPayload,\n NamedQuery\n} from '@provoly/dashboard';\nimport { Observable, take } from 'rxjs';\nimport { searchFulltextActions } from '../store/search-fulltext.actions';\n\nexport interface SearchFulltextChange {\n classes: string[];\n value: string;\n}\n\n@Component({\n selector: 'pry-search-fulltext',\n templateUrl: './search-fulltext.component.html'\n})\nexport class PrySearchFulltextComponent implements OnInit {\n @ViewChild('searchButton', { read: ElementRef }) searchButton?: ElementRef;\n @ViewChild('searchTrigger', { read: ElementRef }) searchTrigger!: ElementRef;\n @ViewChild('searchInput', { read: ElementRef }) searchInputRef!: ElementRef;\n @ViewChild('searchOverlay', { read: ElementRef }) searchOverlayRef!: ElementRef;\n @ViewChild('searchClass') searchClass!: ElementRef<HTMLButtonElement>;\n @ViewChild('chooseClasses') chooseClasses!: ElementRef;\n selectedClassItem?: Element | null;\n panelClassesOpen = false;\n panelSearchOpen = false;\n searchPanelWidth?: number;\n\n @Input() mode: 'inline' | 'vertical' = 'inline';\n @Input() launchButton: boolean = true;\n\n @Input() set currentEdit(nq: NamedQuery | null | undefined) {\n if (nq) {\n const request = nq.request as FullTextSearchPayload;\n this.search = request.fullSearch?.value;\n this.classesSelected = request.oClasses ?? [];\n } else {\n this.search = '';\n this.classesSelected = [];\n }\n this.searchDisabled = this.search === '';\n this.emitChange(this.search, this.classesSelected);\n }\n\n search = '';\n isFocused = false;\n @Output() searchChange = new EventEmitter<SearchFulltextChange>();\n\n private readonly BOTTOM_POSITION: ConnectedPosition = {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top'\n };\n private readonly TOP_POSITION: ConnectedPosition = {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom'\n };\n positions: ConnectedPosition[] = [this.BOTTOM_POSITION, this.TOP_POSITION];\n\n widgetSelected?: string;\n\n classesSelected: string[] = [];\n\n classes$: Observable<Class[]>;\n classesSelectedLabel = '@pry.search.fulltext.allClasses';\n searchDisabled = true;\n panelBottom: any;\n\n constructor(private store: Store<ClassState>) {\n this.classes$ = this.store.select(ClassSelectors.classes);\n }\n\n ngOnInit(): void {\n this.emitChange(this.search, this.classesSelected);\n }\n\n onArrowUp() {\n const lastElement = this.chooseClasses.nativeElement.lastElementChild;\n if (this.selectedClassItem?.previousElementSibling) {\n this.selectedClassItem = this.selectedClassItem?.previousElementSibling;\n } else {\n this.selectedClassItem = lastElement;\n }\n const focusElement = this.selectedClassItem as HTMLButtonElement;\n focusElement.focus();\n }\n\n onArrowDown() {\n const firstElement = this.chooseClasses.nativeElement.firstElementChild;\n if (this.selectedClassItem?.nextElementSibling) {\n this.selectedClassItem = this.selectedClassItem?.nextElementSibling;\n } else {\n this.selectedClassItem = firstElement;\n }\n const focusElement = this.selectedClassItem as HTMLButtonElement;\n focusElement.focus();\n }\n\n @HostListener('document:click', ['$event'])\n clickout(event: any) {\n if (this.panelSearchOpen) {\n setTimeout(() => {\n this.selectedClassItem = this.chooseClasses?.nativeElement?.firstElementChild;\n }, 10);\n const clickInput = this.searchInputRef?.nativeElement?.contains(event.target);\n if (!clickInput) {\n const clickPanel = this.searchOverlayRef?.nativeElement?.contains(event.target);\n if (!clickPanel) {\n this.panelSearchOpen = false;\n }\n }\n }\n }\n\n @HostListener('window:keyup.enter', ['$event'])\n keyEvent(event: KeyboardEvent) {\n this.chooseClasses?.nativeElement?.firstElementChild.focus();\n this.selectedClassItem = this.chooseClasses?.nativeElement?.firstElementChild;\n const search = this.search;\n if ((search ?? '') !== '' && (this.panelSearchOpen || this.isFocused)) {\n this.searchButton?.nativeElement.click();\n }\n }\n\n closeFocus() {\n if (this.panelClassesOpen) {\n this.panelClassesOpen = false;\n this.searchClass?.nativeElement?.focus();\n }\n }\n\n onSearch() {\n this.panelSearchOpen = false;\n const search = this.search;\n if ((search ?? '') !== '') {\n const classes = this.classesSelected;\n this.store.dispatch(searchFulltextActions.search({ classes, search }));\n this.store.dispatch(\n DashboardActions.updateWidgetInPresentation({\n id: DEFAULT_NAMED_QUERY_ID,\n widgetType: this.widgetSelected ?? 'table'\n })\n );\n }\n }\n\n onChangeSearch(evt: any) {\n const value = evt?.target?.value ?? '';\n this.searchDisabled = value === '';\n this.emitChange(value, this.classesSelected);\n }\n\n onClearSearch(evt: any) {\n this.search = '';\n this.searchDisabled = true;\n this.emitChange(this.search, this.classesSelected);\n }\n\n onOpenSearchPanel() {\n this.isFocused = true;\n this.searchPanelWidth = this.searchInputRef.nativeElement.getBoundingClientRect().width;\n this.panelSearchOpen = true;\n }\n\n onFocusOut() {\n this.isFocused = false;\n }\n\n onSelectWidget(widget: string) {\n this.widgetSelected = this.widgetSelected === widget ? undefined : widget;\n }\n\n onSelectAllClasses() {\n this.classesSelected = [];\n this.classesSelectedLabel = '@pry.search.fulltext.allClasses';\n }\n\n onSelectClass(clazz: Class) {\n if (this.classesSelected.indexOf(clazz.id) !== -1) {\n this.classesSelected = this.classesSelected.filter((c) => clazz.id !== c);\n } else {\n this.classesSelected = [...this.classesSelected, clazz.id];\n }\n\n this.emitChange(this.search, this.classesSelected);\n\n if (this.classesSelected?.length === 1) {\n this.classes$.pipe(take(1)).subscribe((classes) => {\n this.classesSelectedLabel =\n classes.find((c) => this.classesSelected[0] === c.id)?.name ?? '@pry.search.fulltext.oneClass';\n });\n } else if (this.classesSelected?.length > 1) {\n this.classesSelectedLabel = '@pry.search.fulltext.manyClasses';\n } else {\n this.classesSelectedLabel = '@pry.search.fulltext.allClasses';\n }\n }\n\n private emitChange(value: string, classes: string[]) {\n const payload = { value, classes };\n this.searchChange.emit(payload);\n }\n}\n","<pry-search-css></pry-search-css>\n<div class=\"o-search-fulltext\" [class.o-search-fulltext--vertical]=\"mode === 'vertical'\">\n <div class=\"o-search-fulltext__container\">\n <button\n #searchClass\n type=\"button\"\n class=\"o-search-fulltext__classes\"\n [class.o-search-fulltext__classes--inline]=\"mode === 'inline'\"\n [pryOverlay]=\"classesOverlay\"\n [(overlayOpen)]=\"panelClassesOpen\"\n pryOverlayPosition=\"start-top\"\n [pryOverlaySticky]=\"true\"\n [pryOverlayNoPadding]=\"true\"\n (click)=\"panelClassesOpen = true\"\n >\n <span\n class=\"o-search-fulltext__classes__content a-tooltip\"\n [attr.data-tooltip]=\"'@pry.search.fulltext.selectClass' | i18n\"\n data-tooltip-position=\"bottom\"\n >\n <pry-icon\n [iconSvg]=\"classesSelected.length === 0 ? 'apps' : 'detail'\"\n [height]=\"20\"\n [width]=\"20\"\n [animation]=\"false\"\n ></pry-icon>\n @if (mode === 'inline') {\n <span class=\"o-search-fulltext__classes__content__label\">\n {{ classesSelectedLabel | i18n : { nb: classesSelected.length } }}\n </span>\n }\n </span>\n\n <span class=\"o-search-fulltext__classes__arrow\">\n <pry-icon\n iconSvg=\"fleche_bas\"\n [width]=\"17\"\n [height]=\"17\"\n [animation]=\"false\"\n class=\"o-search-fulltext__classes__arrow__icon\"\n [class.is-open]=\"panelClassesOpen\"\n ></pry-icon>\n </span>\n </button>\n\n <pry-choose-widget\n [mode]=\"'input'\"\n [class.m-choose-widget__input__inline]=\"mode === 'inline'\"\n [panelOpen]=\"panelSearchOpen\"\n [width]=\"searchPanelWidth ?? 200\"\n (selected)=\"onSelectWidget($event)\"\n >\n <input\n #searchInput\n [(ngModel)]=\"search\"\n (input)=\"onChangeSearch($event)\"\n (focusin)=\"onOpenSearchPanel()\"\n (focusout)=\"onFocusOut()\"\n />\n @if (!searchDisabled) {\n <div class=\"o-search-fulltext__input__clear\">\n <div class=\"o-search-fulltext__input__clear__wrapper\" (click)=\"onClearSearch($event)\">\n <div\n class=\"a-tooltip\"\n [attr.data-tooltip]=\"'@pry.search.fulltext.clear' | i18n\"\n data-tooltip-position=\"bottom\"\n >\n <pry-icon iconSvg=\"close\" [height]=\"16\" [width]=\"16\" [animation]=\"false\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.search.fulltext.clear' | i18n }}</span>\n </div>\n </div>\n </div>\n }\n </pry-choose-widget>\n </div>\n\n @if (launchButton) {\n <button\n #searchButton\n class=\"a-btn a-btn--primary a-tooltip\"\n (click)=\"onSearch()\"\n [class.o-search-fulltext__button__inline]=\"mode === 'inline'\"\n [ngClass]=\"{ ' -width-full': mode === 'vertical' }\"\n [disabled]=\"searchDisabled\"\n [attr.data-tooltip]=\"'@pry.search.fulltext.search' | i18n\"\n data-tooltip-position=\"bottom\"\n >\n <pry-icon iconSvg=\"search-line\" [animation]=\"false\"></pry-icon>\n @if (mode === 'vertical') {\n <span>{{ '@pry.search.fulltext.search' | i18n }}</span>\n }\n <span class=\"u-visually-hidden\">{{ '@pry.search.fulltext.search' | i18n }}</span>\n </button>\n }\n</div>\n\n<ng-template #classesOverlay>\n <div\n class=\"o-search-fulltext__classes-overlay\"\n #chooseClasses\n (keydown.escape)=\"closeFocus()\"\n (keydown.arrowDown)=\"onArrowDown()\"\n (keydown.arrowUp)=\"onArrowUp()\"\n >\n <button class=\"o-search-fulltext__classes-overlay__item\" (click)=\"onSelectAllClasses()\">\n <pry-icon iconSvg=\"apps\" [width]=\"20\" [height]=\"20\"></pry-icon>\n <span class=\"o-search-fulltext__classes-overlay__item__label\">{{\n '@pry.search.fulltext.allClasses' | i18n\n }}</span>\n </button>\n @for (clazz of classes$ | async; track clazz; let last = $last) {\n <button\n type=\"button\"\n class=\"o-search-fulltext__classes-overlay__item\"\n (click)=\"onSelectClass(clazz)\"\n [class.o-search-fulltext__classes-overlay__item__selected]=\"classesSelected.includes(clazz.id)\"\n (keydown.tab)=\"last ? closeFocus() : null\"\n >\n <img\n alt=\"class\"\n [height]=\"20\"\n [width]=\"20\"\n [src]=\"clazz.id | translateId : { type: 'class', output: 'icon' } | async\"\n />\n <span class=\"o-search-fulltext__classes-overlay__item__label\">{{ clazz.name }}</span>\n </button>\n }\n </div>\n</ng-template>\n","import { Component, Input, OnChanges, SimpleChanges } from '@angular/core';\nimport { DatasourceUtils, NamedQuery, NamedQueryTypes, PryDialogService } from '@provoly/dashboard';\nimport { SearchFulltextChange } from '../../search-fulltext/search-fulltext/search-fulltext.component';\nimport { PrySaveQueryComponent } from '../save-query/save-query.component';\n\n@Component({\n selector: 'pry-save-query-button',\n templateUrl: './save-query-button.component.html'\n})\nexport class PrySaveQueryButtonComponent implements OnChanges {\n @Input() editInProgress: boolean | null = false;\n @Input() currentEdit?: NamedQuery | null;\n @Input() currentEditType?: NamedQueryTypes | null;\n @Input() fulltextValid: boolean | null = false;\n @Input() multiValid: boolean | null = false;\n @Input() monoValid: boolean | null = false;\n @Input() isNotFulltext = false;\n @Input() isMonoSearch = false;\n @Input() fulltextSearch?: SearchFulltextChange;\n @Input() saveDisabled = true;\n\n constructor(private pryDialog: PryDialogService) {}\n\n ngOnChanges(changes: SimpleChanges): void {\n const isEditFulltextValid =\n this.editInProgress && this.currentEditType === NamedQueryTypes.FULL_TEXT && this.fulltextValid;\n const isEditMonoValid =\n this.editInProgress && this.currentEditType === NamedQueryTypes.MONO_CLASS && this.monoValid;\n const isEditMultiValid =\n this.editInProgress && this.currentEditType === NamedQueryTypes.MULTI_CLASS && this.multiValid;\n const isCreateFulltextValid = !this.editInProgress && !this.isNotFulltext && this.fulltextValid;\n const isCreateMonoValid = !this.editInProgress && this.isNotFulltext && this.isMonoSearch && this.monoValid;\n const isCreateMultiValid = !this.editInProgress && this.isNotFulltext && !this.isMonoSearch && this.multiValid;\n this.saveDisabled =\n //test pour rendre inactive la sauvegarde via l'edition\n //!isEditFulltextValid &&\n //!isEditMonoValid &&\n //!isEditMultiValid &&\n !isCreateFulltextValid && !isCreateMonoValid && !isCreateMultiValid;\n }\n\n openSaveQuery() {\n if (!this.saveDisabled) {\n const save = true;\n const nq = this.currentEdit;\n const type = nq\n ? DatasourceUtils.getTypeFromPayload(nq.request)\n : this.getNQType(this.isNotFulltext, this.isMonoSearch);\n const data = type === NamedQueryTypes.FULL_TEXT ? { save, type, payload: this.fulltextSearch } : { save, type };\n this.pryDialog.open(PrySaveQueryComponent, { data });\n }\n }\n\n private getNQType(isNotFulltext: boolean, isMono: boolean): NamedQueryTypes {\n return isNotFulltext\n ? isMono\n ? NamedQueryTypes.MONO_CLASS\n : NamedQueryTypes.MULTI_CLASS\n : NamedQueryTypes.FULL_TEXT;\n }\n}\n","<button class=\"a-btn a-btn--icon-text save-query-button\" (click)=\"openSaveQuery()\" [disabled]=\"saveDisabled\">\n <pry-icon iconSvg=\"save-line\"></pry-icon>\n <span>{{ '@pry.search.namedQuery.open' | i18n }}</span>\n</button>\n","import { Component, EventEmitter, HostBinding, Input, Output } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport {\n DashboardActions,\n DataSourceActions,\n DataSourceSelectors,\n DatasourceUtils,\n DEFAULT_NAMED_QUERY_ID,\n NamedQuery,\n NamedQueryTypes,\n SearchActions,\n SubscriptionnerDirective\n} from '@provoly/dashboard';\nimport { Observable } from 'rxjs';\nimport { SearchFulltextChange } from '../../search-fulltext/search-fulltext/search-fulltext.component';\nimport { searchFulltextActions } from '../../search-fulltext/store/search-fulltext.actions';\nimport { SearchMonoClassActions } from '../../search-mono-class/store/search-mono-class.actions';\nimport { SearchMonoClassSelectors } from '../../search-mono-class/store/search-mono-class.selectors';\nimport { SearchMultiClassActions } from '../../search-multi-class/store/search-multi-class.actions';\nimport { SearchMultiClassSelectors } from '../../search-multi-class/store/search-multi-class.selectors';\n\n@Component({\n selector: 'pry-edit-named-query',\n templateUrl: './edit-named-query.component.html'\n})\nexport class EditNamedQueryComponent extends SubscriptionnerDirective {\n @HostBinding('class') class = 'o-edit-named-query-wrapper';\n currentEditType$: Observable<NamedQueryTypes | undefined>;\n currentEdit$: Observable<NamedQuery | undefined>;\n searchMultiClassValid$: Observable<boolean>;\n searchMonoClassValid$: Observable<boolean>;\n readonly FULL_TEXT = NamedQueryTypes.FULL_TEXT;\n readonly MONO_CLASS = NamedQueryTypes.MONO_CLASS;\n readonly MULTI_CLASS = NamedQueryTypes.MULTI_CLASS;\n isSearchCriteria = false;\n isSearchParams = false;\n @Input() fromWidget?: { windowsIndex: number; widgetIndex: number };\n DEFAULT_NAMED_QUERY_ID = DEFAULT_NAMED_QUERY_ID;\n\n @Output() searchFulltextChange = new EventEmitter<SearchFulltextChange>();\n @Output() cancelled = new EventEmitter<void>();\n @Output() searched = new EventEmitter<void>();\n currentEdit?: NamedQuery;\n private fullTextPayload: SearchFulltextChange = { value: '', classes: [] };\n widgetType: string = 'table';\n\n constructor(private store: Store) {\n super();\n this.currentEditType$ = this.store.select(DataSourceSelectors.currentEditType);\n this.currentEdit$ = this.store.select(DataSourceSelectors.currentEdit);\n this.searchMultiClassValid$ = this.store.select(SearchMultiClassSelectors.searchMultiClassValid);\n this.searchMonoClassValid$ = this.store.select(SearchMonoClassSelectors.searchMonoClassValid);\n this.subscriptions.add(this.currentEdit$.subscribe((currentEdit) => (this.currentEdit = currentEdit)));\n }\n\n cancel() {\n this.isSearchCriteria = false;\n this.isSearchParams = false;\n this.store.dispatch(DataSourceActions.namedQuery.stopEdit());\n this.cancelled.emit();\n }\n\n search() {\n // Save as current name\n const descriptionQuery = {\n name: this.currentEdit?.name ?? '',\n description: this.currentEdit?.description,\n visibility: this.currentEdit?.visibility ?? undefined\n };\n switch (DatasourceUtils.getTypeFromPayload(this.currentEdit?.request)) {\n case NamedQueryTypes.FULL_TEXT:\n this.store.dispatch(\n searchFulltextActions.save({\n descriptionQuery,\n id: this.currentEdit?.id,\n classes: this.fullTextPayload.classes,\n search: this.fullTextPayload.value\n })\n );\n break;\n case NamedQueryTypes.MONO_CLASS:\n this.store.dispatch(SearchMonoClassActions.save({ descriptionQuery, id: this.currentEdit?.id }));\n break;\n case NamedQueryTypes.MULTI_CLASS:\n this.store.dispatch(SearchMultiClassActions.save({ descriptionQuery, id: this.currentEdit?.id }));\n break;\n }\n if (this.currentEdit?.id !== DEFAULT_NAMED_QUERY_ID) {\n this.store.dispatch(\n SearchActions.getDatasourceItems({\n id: this.currentEdit?.id ?? DEFAULT_NAMED_QUERY_ID,\n excludeGeo: false,\n from: 'EditNamedQueryComponent.search()'\n })\n );\n }\n this.store.dispatch(\n DashboardActions.updateWidgetInPresentation({\n id: this.currentEdit?.id ?? DEFAULT_NAMED_QUERY_ID,\n widgetType: this.widgetType\n })\n );\n this.searched.emit();\n }\n\n onSearchFulltextChange(evt: SearchFulltextChange) {\n this.searchFulltextChange.emit(evt);\n this.fullTextPayload = evt;\n }\n\n select($event: string) {\n this.widgetType = $event;\n }\n}\n","<div class=\"o-edit-named-query\">\n @if (currentEditType$ | async; as currentEditType) {\n <div class=\"o-edit-named-query__content\">\n @switch (currentEditType) {\n @case (FULL_TEXT) {\n <pry-search-fulltext\n mode=\"vertical\"\n [launchButton]=\"false\"\n (searchChange)=\"onSearchFulltextChange($event)\"\n [currentEdit]=\"currentEdit$ | async\"\n ></pry-search-fulltext>\n }\n @case (MONO_CLASS) {\n <pry-search-mono-class></pry-search-mono-class>\n }\n @case (MULTI_CLASS) {\n <pry-search-multi-class></pry-search-multi-class>\n }\n }\n </div>\n <div class=\"o-edit-named-query__buttons\">\n @if (currentEditType !== FULL_TEXT) {\n <pry-choose-widget (selected)=\"select($event)\"></pry-choose-widget>\n }\n <div class=\"m-btn-group\">\n @if (currentEditType === FULL_TEXT) {\n <button type=\"button\" class=\"a-btn a-btn--primary\" (click)=\"cancel()\">\n {{ '@pry.search.button.cancel' | i18n }}\n </button>\n }\n <button\n [disabled]=\"\n (currentEditType === MULTI_CLASS && !(searchMultiClassValid$ | async)) ||\n (currentEditType === MONO_CLASS && !(searchMonoClassValid$ | async)) ||\n !(currentEdit$ | async)?.owner\n \"\n type=\"button\"\n class=\"a-btn a-btn--primary a-btn--icon-text\"\n (click)=\"search()\"\n >\n <pry-icon iconSvg=\"search-line\"></pry-icon>\n {{\n ((currentEdit$ | async)?.id === DEFAULT_NAMED_QUERY_ID\n ? '@pry.search.button.search'\n : '@pry.search.button.update'\n ) | i18n\n }}\n </button>\n </div>\n </div>\n }\n</div>\n","import { Component, HostBinding, OnDestroy } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport {\n ClassActions,\n ClassState,\n DashboardActions,\n DataSourceActions,\n DataSourceSelectors,\n DataSourceState,\n DEFAULT_NAMED_QUERY_ID,\n FieldActions,\n FieldState,\n NamedQuery,\n NamedQueryTypes\n} from '@provoly/dashboard';\nimport { combineLatest, delay, map, Observable, of, Subscription } from 'rxjs';\nimport { v4 } from 'uuid';\nimport { SearchFulltextChange } from '../search-fulltext/search-fulltext/search-fulltext.component';\nimport { SearchMonoClassActions } from '../search-mono-class/store/search-mono-class.actions';\nimport { SearchMonoClassSelectors } from '../search-mono-class/store/search-mono-class.selectors';\nimport { SearchMultiClassActions } from '../search-multi-class/store/search-multi-class.actions';\nimport { SearchMultiClassState } from '../search-multi-class/store/search-multi-class.reducer';\nimport { SearchMultiClassSelectors } from '../search-multi-class/store/search-multi-class.selectors';\n\n@Component({\n selector: 'pry-search-tools',\n templateUrl: './search-tools.component.html'\n})\nexport class PrySearchToolsComponent implements OnDestroy {\n @HostBinding('class.o-pry-search-tools-wrapper') class = true;\n @HostBinding('class.is-close') searchToolsClose = false;\n\n searchMultiClassValid$: Observable<boolean>;\n searchMonoClassValid$: Observable<boolean>;\n loading$: Observable<boolean>;\n isRename$: Observable<boolean>;\n\n isSearchCriteria = false;\n isSearchMono = false;\n isSearchFullText = false;\n isSearchFulltextValid = false;\n isMoreList = false;\n widgetType: string = 'table';\n\n get isNewMono(): boolean {\n return this.isSearchCriteria && this.isSearchMono;\n }\n\n get isEditMono$(): Observable<boolean> {\n return combineLatest([this.currentEditType$, this.isRename$]).pipe(\n map(([type, isRename]) => type === NamedQueryTypes.MONO_CLASS && !isRename)\n );\n }\n\n getIcon = {\n caracteristique: 'default',\n lieu: 'default',\n meteo: 'default',\n usager: 'profil',\n valeur_fonciere: 'default',\n vehicule: 'car'\n } as { [clazz: string]: string };\n\n items: Observable<any[] | null> = of([\n { id: 1, name: '1' },\n { id: 2, name: '2' },\n { id: 3, name: '3' },\n { id: 4, name: '4' }\n ]);\n editInProgress$: Observable<boolean>;\n currentEdit$: Observable<NamedQuery | undefined>;\n currentEditType$: Observable<NamedQueryTypes | undefined>;\n readonly FULL_TEXT = NamedQueryTypes.FULL_TEXT;\n readonly MONO_CLASS = NamedQueryTypes.MONO_CLASS;\n readonly MULTI_CLASS = NamedQueryTypes.MULTI_CLASS;\n searchFulltextTemp?: SearchFulltextChange;\n\n private sub = new Subscription();\n\n constructor(private store: Store<DataSourceState | SearchMultiClassState | FieldState | ClassState>) {\n this.loading$ = this.store.select(DataSourceSelectors.isLoading);\n this.store.dispatch(DataSourceActions.load({}));\n this.store.dispatch(FieldActions.load({}));\n this.store.dispatch(ClassActions.load({}));\n this.searchMultiClassValid$ = this.store.select(SearchMultiClassSelectors.searchMultiClassValid).pipe(delay(100));\n this.searchMonoClassValid$ = this.store.select(SearchMonoClassSelectors.searchMonoClassValid).pipe(delay(100));\n this.editInProgress$ = this.store.select(DataSourceSelectors.editInProgress);\n this.currentEditType$ = this.store.select(DataSourceSelectors.currentEditType);\n this.currentEdit$ = this.store.select(DataSourceSelectors.currentEdit);\n this.isRename$ = this.store.select(DataSourceSelectors.isRename);\n this.sub.add(\n combineLatest([this.editInProgress$, this.isRename$]).subscribe(([editInProgress, isRename]) => {\n if (editInProgress && this.searchToolsClose && !isRename) {\n this.onChangePanel();\n }\n })\n );\n }\n\n ngOnDestroy(): void {\n this.sub.unsubscribe();\n }\n\n onSearchCriteria() {\n this.isSearchCriteria = true;\n this.store.dispatch(\n DataSourceActions.namedQuery.openEdit({\n currentEdit: {\n sourceType: 'namedQuery',\n id: v4(),\n request: { type: NamedQueryTypes.MULTI_CLASS, fullSearch: null, fields: [], multiType: 'AND' },\n name: ''\n }\n })\n );\n }\n\n onSearchTools() {\n this.isSearchCriteria = false;\n this.store.dispatch(DataSourceActions.namedQuery.stopEdit());\n this.resizeScreen();\n }\n\n back() {\n this.store.dispatch(DataSourceActions.namedQuery.stopEdit());\n this.resizeScreen();\n }\n\n onMonoSearch() {\n this.isSearchMono = !this.isSearchMono;\n this.resizeScreen();\n }\n\n onChangeListView(isMoreList: boolean) {\n this.isMoreList = !isMoreList;\n }\n\n onSearchFulltextChange(payload: SearchFulltextChange) {\n setTimeout(() => {\n this.isSearchFulltextValid = payload.value !== '';\n this.searchFulltextTemp = payload;\n }, 10);\n }\n\n onSearch() {\n if (this.isSearchMono) {\n this.store.dispatch(SearchMonoClassActions.search());\n } else {\n this.store.dispatch(SearchMultiClassActions.search());\n }\n this.store.dispatch(\n DashboardActions.updateWidgetInPresentation({\n id: DEFAULT_NAMED_QUERY_ID,\n widgetType: this.widgetType\n })\n );\n }\n\n onChangePanel() {\n this.searchToolsClose = !this.searchToolsClose;\n this.resizeScreen();\n }\n\n private resizeScreen() {\n setTimeout(() => window?.dispatchEvent(new Event('resize')), 400);\n }\n\n selectWidget($event: string) {\n this.widgetType = $event;\n }\n\n reset() {\n this.store.dispatch(DataSourceActions.namedQuery.stopEdit());\n this.isSearchCriteria = true;\n }\n\n updateVisibility($event: any) {\n this.store.dispatch(DataSourceActions.namedQuery.updateCurrentEdit({ currentEdit: { visibility: $event } }));\n }\n}\n","<div\n class=\"o-pry-search-tools\"\n [class.is-close]=\"searchToolsClose\"\n [class.is-mono]=\"isNewMono || (isEditMono$ | async)\"\n >\n @if (((editInProgress$ | async) && !(isRename$ | async)) || isSearchCriteria) {\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-text -back a-tooltip\"\n (click)=\"onSearchTools()\"\n aria-pressed=\"false\"\n [attr.data-tooltip]=\"'@pry.search.button.backSearch' | i18n\"\n data-tooltip-position=\"bottom\"\n >\n <pry-icon iconSvg=\"arrow_back\" [width]=\"24\" [height]=\"24\" [animation]=\"false\"></pry-icon>\n <span>{{ '@pry.search.button.backSearch' | i18n }}</span>\n </button>\n }\n <div class=\"o-pry-search-tools__content\" [class.is-close]=\"searchToolsClose\">\n @if (((editInProgress$ | async) && !(isRename$ | async)) || isSearchCriteria) {\n <button\n class=\"a-btn a-btn--icon-text -link-like u-self-end\"\n (click)=\"reset()\"\n id=\"btn_reset\"\n >\n <pry-icon iconSvg=\"reset\" [width]=\"18\" [height]=\"18\"></pry-icon>\n {{ '@pry.search.button.reset' | i18n }}\n </button>\n }\n @if (editInProgress$ | async) {\n <pry-share [ngModel]=\"(currentEdit$ | async)?.visibility\" (ngModelChange)=\"updateVisibility($event)\"></pry-share>\n }\n @if ((editInProgress$ | async) && !(isRename$ | async) && !(loading$ | async)) {\n <pry-edit-named-query\n (searchFulltextChange)=\"onSearchFulltextChange($event)\"\n (cancelled)=\"onSearchTools()\"\n ></pry-edit-named-query>\n } @else {\n @if (isSearchCriteria && !(loading$ | async)) {\n <pry-toggle\n class=\"o-pry-search-tools__content__toggle\"\n [ngModel]=\"isSearchMono\"\n (ngModelChange)=\"onMonoSearch()\"\n [alwaysActive]=\"true\"\n mode=\"action\"\n >\n {{ (isSearchMono ? '@pry.search.button.mono' : '@pry.search.button.multi') | i18n }}\n </pry-toggle>\n <div class=\"o-pry-search-tools__content__full\">\n @if (isSearchMono) {\n <pry-search-mono-class></pry-search-mono-class>\n } @else {\n <pry-search-multi-class></pry-search-multi-class>\n }\n </div>\n <div class=\"o-pry-search-tools__content__button-search\">\n @if (isSearchCriteria) {\n <pry-choose-widget (selected)=\"selectWidget($event)\"></pry-choose-widget>\n }\n @if (!isSearchCriteria) {\n <button class=\"a-btn a-btn--primary\" (click)=\"onSearchTools()\">\n {{ '@pry.search.button.cancel' | i18n }}\n </button>\n }\n <button\n [disabled]=\"\n (!(searchMultiClassValid$ | async) && !isSearchMono) || (!(searchMonoClassValid$ | async) && isSearchMono)\n \"\n class=\"a-btn a-btn--primary\"\n (click)=\"onSearch()\"\n >\n <pry-icon iconSvg=\"search-line\"></pry-icon>\n {{ '@pry.search.button.search' | i18n }}\n </button>\n </div>\n } @else {\n <div class=\"o-pry-search-tools__content__full\">\n <pry-search-home\n class=\"o-pry-search-home\"\n [isMoreList]=\"isMoreList\"\n [searchFulltextTpl]=\"searchFulltextTpl\"\n (changeListView)=\"onChangeListView($event)\"\n (changeSearchCriteria)=\"onSearchCriteria()\"\n ></pry-search-home>\n <ng-template #searchFulltextTpl>\n <pry-search-fulltext mode=\"vertical\" (searchChange)=\"onSearchFulltextChange($event)\"></pry-search-fulltext>\n </ng-template>\n </div>\n }\n }\n\n </div>\n <div class=\"o-pry-search-tools__footer\" [class.is-close]=\"searchToolsClose\">\n <pry-save-query-button\n [editInProgress]=\"editInProgress$ | async\"\n [currentEdit]=\"currentEdit$ | async\"\n [currentEditType]=\"currentEditType$ | async\"\n [fulltextValid]=\"isSearchFulltextValid\"\n [multiValid]=\"searchMultiClassValid$ | async\"\n [monoValid]=\"searchMonoClassValid$ | async\"\n [isNotFulltext]=\"isSearchCriteria\"\n [isMonoSearch]=\"isSearchMono\"\n [fulltextSearch]=\"searchFulltextTemp\"\n ></pry-save-query-button>\n </div>\n</div>\n","import { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { Component, TemplateRef, ViewChild, ViewContainerRef } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { ConfigActions, DataSourceActions, DataSourceSelectors, SubscriptionnerDirective } from '@provoly/dashboard';\n\n@Component({\n selector: 'pry-edit-named-query-modal',\n templateUrl: './edit-named-query-modal.component.html'\n})\nexport class EditNamedQueryModalComponent extends SubscriptionnerDirective {\n private overlayRef?: OverlayRef;\n @ViewChild('template', { read: TemplateRef }) template!: TemplateRef<any>;\n\n constructor(\n private store: Store,\n private overlay: Overlay,\n private viewContainerRef: ViewContainerRef\n ) {\n super();\n\n this.subscriptions.add(\n this.store.select(DataSourceSelectors.editInProgress).subscribe((inProgress) => {\n if (inProgress && !this.overlayRef && !this.isPanelAlreadyPresent) {\n // open modal\n this.overlayRef = this.overlay.create(\n new OverlayConfig({\n hasBackdrop: true,\n panelClass: ['o-edit-named-query-modal'],\n backdropClass: 'backdrop'\n })\n );\n this.store.dispatch(ConfigActions.addingOverlay({ id: this.constructor.name }));\n this.overlayRef.backdropClick().subscribe((_) => {\n this.close();\n });\n this.overlayRef.attach(new TemplatePortal(this.template, this.viewContainerRef));\n }\n if (!inProgress) {\n this.close();\n }\n })\n );\n }\n\n close() {\n this.overlayRef?.dispose();\n this.overlayRef = undefined;\n this.store.dispatch(DataSourceActions.namedQuery.stopEdit());\n this.store.dispatch(ConfigActions.closeOverlay({ id: this.constructor.name }));\n }\n\n get isPanelAlreadyPresent() {\n return (\n document.getElementsByTagName('pry-search-home').length +\n document.getElementsByTagName('pry-search-tools').length >\n 0\n );\n }\n}\n","<ng-template #template>\n <div>\n <pry-search-tools></pry-search-tools>\n </div>\n</ng-template>\n","export const enTranslations = {\n '@pry': {\n search: {\n title: 'Search',\n button: {\n update: 'Save',\n search: 'Search',\n cancel: 'Cancel',\n reset: 'Reset',\n backSearch: 'Back to searches list',\n mono: 'Class search',\n multi: 'Business field search'\n },\n home: {\n or: 'or',\n title: 'My search',\n ssTitle: 'New search',\n searchByCriteria: 'search by criteria',\n associatedWidget: 'widget associated with this search',\n showAssociatedWidget: 'Show the widget associated with this search',\n otherActions: 'Other actions'\n },\n attribute: {\n title: 'Attribute: ',\n remove: 'Remove attribute filter'\n },\n type: {\n and: 'AND',\n or: 'OR'\n },\n composed: {\n class: 'Class',\n title: 'Include filters',\n order: 'Add sort',\n orderA: 'Ascending',\n orderD: 'Descending',\n orderNone: 'None',\n shouldSelectClass: 'Select a class',\n changeClassWarning: 'Change class will remove all conditions',\n addCondition: 'Add condition',\n addGroup: 'Add nested group',\n removeGroup: 'Remove nested group'\n },\n operator: {\n contains: 'Contains (case sensitive)',\n containsCaseInsensitive: 'Contains (case insensitive)',\n startWith: 'Starts with',\n endWith: 'Ends with',\n notEqualsString: 'Different from',\n notEqualsNumber: 'Different from',\n equalsString: 'Match',\n equalsNumber: 'Equal to',\n greaterThanNumber: 'Greater than',\n lowerThanNumber: 'Lower than',\n innerBoundsNumber: 'Between',\n outerBoundsNumber: 'Outside',\n greaterThanDate: 'After',\n lowerThanDate: 'Before',\n innerBoundsDate: 'Between',\n outerBoundsDate: 'Outside',\n in: 'In',\n not_in: 'Not in'\n },\n placeholder: {\n search: 'Enter value...',\n minValue: 'Min value...',\n maxValue: 'Max value...'\n },\n namedQuery: {\n emptyNamedQuery: 'No saved search',\n open: 'Save search...',\n title: 'Give a name to this search',\n saveTitle: 'Save search',\n renameTitle: 'Rename search',\n rename: 'Rename',\n name: 'Name',\n description: 'Description',\n favorite: 'Pin',\n noFavorite: 'Detach',\n display: 'Display',\n refreshData: 'Refresh',\n noSpot: 'Unused search',\n color: 'Data color',\n spot: 'Spot',\n spotTitle: 'This query is used {{length}} times:',\n use: 'View n°{{windowIndex}}',\n delete: 'Delete',\n edit: 'Edit',\n seeLess: 'see less',\n seeMore: 'see More',\n explore: 'Exploring set',\n type: {\n map: 'Map',\n table: 'Table',\n chart: 'Chart',\n graph: 'Network Relation'\n },\n alreadyEditing: 'A search is already being edited.',\n refresh: {\n title: 'Automatic refresh',\n 0: 'Inactive',\n 10: '10 seconds',\n 30: '30 seconds',\n 60: '1 minute'\n }\n },\n mono: {\n title: 'Search advanded criteria'\n },\n fulltext: {\n allClasses: 'All classes',\n oneClass: 'One selected class',\n manyClasses: '{{nb}} selected classes',\n selectClass: 'Select class',\n search: 'Search',\n clear: 'Clear input'\n },\n multi: {\n title: 'Add criterias',\n addCondition: 'Add one criteria',\n options: 'Options',\n extraOptions: 'Extra options',\n multiType: 'Kind of association',\n search: 'Search',\n requiredError: 'Value is missing',\n patternError: 'Format is incorrect',\n selectField: 'Select the criteria',\n legend: 'Criteria / classes using it',\n in: 'in'\n },\n params: {\n title: 'Search parameters',\n button: 'Save settings',\n namedQuery: {\n title: 'Searches',\n description: 'This part presents default parameters when creating a new search, like color or refresh rate.'\n }\n }\n }\n }\n};\n","export const frTranslations = {\n '@pry': {\n search: {\n title: 'Recherche',\n button: {\n update: 'Enregistrer',\n search: 'Rechercher',\n cancel: 'Annuler',\n reset: 'Remise à zéro',\n backSearch: 'Retour à la liste des recherches',\n mono: 'Recherche par classe',\n multi: 'Recherche par champs métier'\n },\n home: {\n or: 'ou',\n title: 'Mes recherches',\n ssTitle: 'Nouvelle recherche',\n searchByCriteria: 'Recherche par critères',\n associatedWidget: 'le widget associé à cette recherche',\n showAssociatedWidget: 'Afficher le widget associé à cette recherche',\n otherActions: 'Autres actions'\n },\n attribute: {\n title: 'Attribut : ',\n remove: 'Retirer le filtre'\n },\n type: {\n and: 'ET',\n or: 'OU'\n },\n composed: {\n class: 'Classe',\n title: 'Incluez des filtres',\n order: 'Ajouter un tri',\n orderA: 'Croissant',\n orderD: 'Décroissant',\n orderNone: 'Aucun tri',\n shouldSelectClass: 'Choisissez une classe',\n changeClassWarning: 'Changer de classe supprimera toutes les conditions',\n addCondition: 'Ajouter une condition',\n addGroup: 'Ajouter un sous-groupe',\n removeGroup: 'Supprimer un sous-groupe'\n },\n operator: {\n contains: 'Contient (sensible à la casse)',\n containsCaseInsensitive: 'Contient (pas sensible à la casse)',\n startWith: 'Commence par',\n endWith: 'Fini par',\n notEqualsString: 'Différent de',\n notEqualsNumber: 'Différent de',\n equalsString: 'Exactement',\n equalsNumber: 'Egal',\n greaterThanNumber: 'Supérieur à',\n lowerThanNumber: 'Inférieur à',\n innerBoundsNumber: 'Compris entre',\n outerBoundsNumber: \"A l'extérieur de\",\n greaterThanDate: 'Après',\n lowerThanDate: 'Avant',\n innerBoundsDate: 'Entre deux dates',\n outerBoundsDate: \"A l'extérieur d'une période\",\n in: 'Appartient à',\n not_in: \"N'appartient pas à\"\n },\n placeholder: {\n search: 'Entrer la valeur ...',\n minValue: 'Valeur min ...',\n maxValue: 'Valeur max ...'\n },\n namedQuery: {\n emptyNamedQuery: 'Aucune recherche enregistrée',\n open: 'Enregistrer la recherche sous...',\n title: 'Nommez cette recherche',\n saveTitle: 'Sauvegarder cette recherche',\n renameTitle: 'Renommer cette recherche',\n rename: 'Renommer',\n name: 'Nom',\n description: 'Description',\n favorite: 'Epingler',\n noFavorite: 'Détacher',\n display: 'Afficher',\n refreshData: 'Actualiser',\n noSpot: 'Recherche non utilisée',\n color: 'Couleur jeu de données',\n spot: 'Repérer',\n spotTitle: 'La recherche est utilisée à {{length}} endroits:',\n use: 'Vue n°{{windowIndex}}',\n delete: 'Supprimer',\n edit: 'Editer',\n seeLess: 'voir moins',\n seeMore: 'voir plus',\n explore: 'Recherche exploratoire',\n type: {\n map: 'Carte',\n table: 'Tableau',\n chart: 'Graphique',\n graph: 'Relations'\n },\n alreadyEditing: 'Vous avez déjà une édition de recherche en cours.',\n refresh: {\n title: 'Rafraichissement automatique',\n 0: 'Inactif',\n 10: '10 secondes',\n 30: '30 secondes',\n 60: '1 minute'\n }\n },\n mono: {\n title: 'Recherche critères avancés'\n },\n fulltext: {\n allClasses: 'Toutes les classes',\n oneClass: 'Une classe sélectionnée',\n manyClasses: '{{nb}} classes sélectionnées',\n selectClass: 'Sélectionner la classe',\n search: 'Lancer la recherche',\n clear: 'Effacer la saisie'\n },\n multi: {\n title: 'Ajouter des critères',\n addCondition: 'Ajouter un critère',\n options: 'Options',\n extraOptions: 'Options supplémentaires',\n multiType: 'Associer les critères',\n search: 'Rechercher',\n requiredError: 'La valeur est manquante',\n patternError: 'Le format est incorrect',\n selectField: 'Sélectionner un critère',\n legend: 'Critère / classes utilisant ce critère',\n in: 'dans'\n },\n params: {\n title: 'Paramètres de recherche',\n button: 'Enregistrer les paramètres',\n namedQuery: {\n title: 'Recherches',\n description:\n \"Cette partie regroupe les paramètres par défaut d'une nouvelle recherche(la couleur à utiliser, ...)\"\n }\n }\n }\n }\n};\n","import { Injectable } from '@angular/core';\nimport { FullTextSearchPayload, NamedQueryTypes } from '@provoly/dashboard';\n\n@Injectable({ providedIn: 'root' })\nexport class SearchFulltextService {\n buildPayload(value: string, oClasses: string[]): FullTextSearchPayload {\n return {\n type: NamedQueryTypes.MULTI_CLASS,\n multiType: 'AND',\n oClasses,\n fullSearch: {\n value\n }\n };\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { Store } from '@ngrx/store';\nimport { DataSourceActions, DataSourceSelectors, DEFAULT_NAMED_QUERY_ID, SearchActions } from '@provoly/dashboard';\nimport { map, withLatestFrom } from 'rxjs';\nimport { searchFulltextActions } from './search-fulltext.actions';\nimport { SearchFulltextService } from './search-fulltext.service';\n\n@Injectable()\nexport class SearchFulltextEffects {\n search$ = createEffect(() =>\n this.actions$.pipe(\n ofType(searchFulltextActions.search, searchFulltextActions.save),\n withLatestFrom(this.store.select(DataSourceSelectors.currentEdit)),\n map(([action, currentEdit]) => {\n const payload = this.searchFulltextService.buildPayload(action.search, action.classes);\n if (action.type === searchFulltextActions.save.type && DEFAULT_NAMED_QUERY_ID !== action?.id) {\n return DataSourceActions.namedQuery.post({\n id: action.id ?? currentEdit?.id,\n name: action.descriptionQuery.name,\n description: action.descriptionQuery?.description,\n visibility: action.descriptionQuery?.visibility,\n payload,\n color: currentEdit?.color,\n favorite: currentEdit?.favorite ?? false,\n isEdit: !!currentEdit\n });\n }\n return SearchActions.search({ payload });\n })\n )\n );\n\n constructor(\n private actions$: Actions,\n private store: Store<any>,\n private searchFulltextService: SearchFulltextService\n ) {}\n}\n","import { Injectable } from '@angular/core';\nimport {\n Attribute,\n Class,\n Condition,\n Field,\n FieldType,\n MonoClassConditions,\n MonoClassSearchPayload,\n NamedQueryTypes,\n NormalizedCondition,\n OrderValue,\n ResultOrder\n} from '@provoly/dashboard';\nimport { v4 as uuidV4 } from 'uuid';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SearchMonoClassService {\n initNormalizedConditionComposed(parentId: string | null): NormalizedCondition {\n const id = uuidV4();\n return {\n id,\n parentId,\n type: 'AND'\n } as NormalizedCondition;\n }\n\n initNormalizedConditionAttribute(parentId: string, attributeId: string): NormalizedCondition {\n if (!attributeId.trim()) {\n throw new Error('Invalid attribute ID');\n }\n const id = uuidV4();\n return {\n id,\n parentId,\n attribute: attributeId,\n type: 'ATTRIBUTE',\n operator: 'EQUALS'\n } as NormalizedCondition;\n }\n\n buildMonoClassSearchPayloadForSearch(\n oClass: string,\n masterId: string,\n monoClassConditions: MonoClassConditions,\n order: ResultOrder | undefined\n ): MonoClassSearchPayload {\n if (!oClass.trim()) {\n throw new Error('Invalid class ID');\n }\n const condition = this.buildConditionFromMonoClassSearchCondition(monoClassConditions, masterId);\n let sort = undefined as { [key: string]: any } | undefined;\n if (order) {\n sort = {\n attribute: order.attribute,\n direction: order.asc\n };\n }\n return { type: NamedQueryTypes.MONO_CLASS, ...{ condition }, ...{ sort }, oClass } as MonoClassSearchPayload;\n }\n\n private buildConditionFromMonoClassSearchCondition(\n monoClassConditions: MonoClassConditions,\n idCondition: string\n ): Condition {\n const cond: NormalizedCondition = monoClassConditions.entities[idCondition];\n const subCond: Condition[] =\n monoClassConditions.entities[idCondition].composed?.map((id: string) =>\n this.buildConditionFromMonoClassSearchCondition(monoClassConditions, id)\n ) ?? [];\n const condition = {\n type: cond.type,\n attribute: cond.attribute,\n composed: subCond.length > 0 ? subCond : undefined,\n operator: cond.operator,\n value: cond.value,\n upperValue: cond.upperValue\n };\n if (condition.operator !== 'INSIDE' && condition.operator !== 'OUTSIDE') {\n delete condition.upperValue;\n }\n return condition;\n }\n\n loadNormalizedConditions(\n cond: Condition | undefined,\n parentId: string,\n classes: Class[],\n fields: Field[],\n masterId?: string,\n sort?: { attribute: string; direction: string }\n ): { id: string; conditions: NormalizedCondition[]; sort: ResultOrder | undefined } {\n let resultSort = undefined as ResultOrder | undefined;\n if (sort) {\n resultSort = {\n attribute: sort.attribute,\n asc: sort.direction as OrderValue\n };\n }\n if (cond?.type === 'AND' || cond?.type === 'OR') {\n const id = masterId ?? uuidV4();\n if (cond?.composed) {\n const children = cond.composed.map((cond) => this.loadNormalizedConditions(cond, id, classes, fields));\n const ids = children.map((child) => child.id);\n const normalizedChildren = children.reduce(\n (acc, res) => [...acc, ...res.conditions],\n [] as NormalizedCondition[]\n );\n return {\n id,\n conditions: [\n ...normalizedChildren,\n {\n id,\n parentId: parentId ?? null,\n type: cond.type,\n composed: ids\n }\n ],\n sort: resultSort\n };\n }\n return {\n id,\n conditions: [\n {\n id,\n parentId: parentId ?? null,\n type: cond.type\n }\n ],\n sort: resultSort\n };\n } else {\n const id = masterId ?? uuidV4();\n const field = this.getFieldFromAttribute(cond?.attribute, classes);\n const condition: NormalizedCondition = field\n ? {\n id,\n parentId: parentId ?? null,\n type: 'ATTRIBUTE',\n attribute: cond?.attribute,\n operator: cond?.operator,\n value: cond?.value,\n pattern: this.getPatternForField(field),\n isDate: field.type === FieldType.INSTANT\n }\n : {\n id,\n parentId: parentId ?? null,\n type: 'ATTRIBUTE',\n attribute: cond?.attribute,\n operator: cond?.operator,\n value: cond?.value\n };\n return {\n id,\n conditions: [condition],\n sort: resultSort\n };\n }\n }\n\n getPatternForField(field: Field): string {\n const type = field.type;\n switch (type) {\n case FieldType.DECIMAL:\n return '^[+-]?([0-9]*[.])?[0-9]+$';\n case FieldType.INTEGER:\n case FieldType.LONG:\n return '^[+-]?[0-9]+$';\n case FieldType.STRING:\n case FieldType.KEYWORD:\n return '^.+$';\n case FieldType.INSTANT:\n return '^[0-9]{4}-[0-9]{2}-[0-9]{2}$|^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}$';\n default:\n return '^.+$';\n }\n }\n\n private getFieldFromAttribute(attributeId: string | undefined, classes: Class[]): Field | undefined {\n if (!attributeId) {\n return undefined;\n }\n return classes\n .reduce((acc, clazz) => [...acc, ...clazz.attributes], [] as Attribute[])\n .find((a) => a.id === attributeId)?.field;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { Action, Store } from '@ngrx/store';\nimport {\n ClassSelectors,\n DataSourceActions,\n DataSourceSelectors,\n DatasourceUtils,\n DEFAULT_NAMED_QUERY_ID,\n FieldSelectors,\n FieldType,\n MonoClassSearchPayload,\n MultiClassSearchPayload,\n NamedQueryTypes,\n NormalizedCondition,\n OrderValue,\n SearchActions,\n SearchService\n} from '@provoly/dashboard';\nimport { combineLatest, of } from 'rxjs';\nimport { catchError, first, map, mergeMap, switchMap, withLatestFrom } from 'rxjs';\nimport { v4 as uuidv4 } from 'uuid';\nimport { SearchMultiClassActions } from '../../../search/search-multi-class/store/search-multi-class.actions';\nimport { SearchMonoClassActions } from './search-mono-class.actions';\nimport { SearchMonoClassSelectors } from './search-mono-class.selectors';\nimport { SearchMonoClassService } from './search-mono-class.service';\n\n@Injectable()\nexport class SearchMonoClassEffects {\n constructor(\n private actions$: Actions,\n private searchService: SearchService,\n private searchMonoClassService: SearchMonoClassService,\n private store: Store<any>\n ) {}\n\n selectedMonoClass$ = createEffect(() =>\n this.actions$.pipe(\n ofType(SearchMonoClassActions.selectMonoClassSearch),\n map(() => {\n const condition: NormalizedCondition = this.searchMonoClassService.initNormalizedConditionComposed(null);\n return SearchMonoClassActions.addFirstNormalizedCondition({ condition });\n })\n )\n );\n\n addNormalizedConditionAttribute$ = createEffect(() =>\n this.actions$.pipe(\n ofType(SearchMonoClassActions.addNormalizedConditionAttributeForConditionId),\n mergeMap((action) =>\n combineLatest([of(action), this.store.select(FieldSelectors.fieldById(action.attribute.field.id))]).pipe(\n first()\n )\n ),\n map(([action, field]) => {\n const pattern = this.searchMonoClassService.getPatternForField(field);\n const isDate = field.type === FieldType.INSTANT;\n const condition: NormalizedCondition = {\n ...this.searchMonoClassService.initNormalizedConditionAttribute(action.conditionId, action.attribute.id),\n isDate,\n pattern\n };\n\n return SearchMonoClassActions.addNormalizedConditionForConditionId({\n conditionId: action.conditionId,\n condition\n });\n })\n )\n );\n\n addNormalizedConditionComposed$ = createEffect(() =>\n this.actions$.pipe(\n ofType(SearchMonoClassActions.addNormalizedConditionComposedForConditionId),\n map((action) => {\n const condition: NormalizedCondition = this.searchMonoClassService.initNormalizedConditionComposed(\n action.conditionId\n );\n return SearchMonoClassActions.addNormalizedConditionForConditionId({\n conditionId: action.conditionId,\n condition\n });\n })\n )\n );\n\n deleteNormalizedCondition$ = createEffect(() =>\n this.actions$.pipe(\n ofType(SearchMonoClassActions.deleteNormalizedConditionById),\n mergeMap((action) =>\n combineLatest([\n of(action),\n this.store.select(SearchMonoClassSelectors.selectMonoClassConditionsById(action.conditionId))\n ]).pipe(first())\n ),\n switchMap(([action, condition]) => {\n const actionCondition$ = SearchMonoClassActions.deleteNormalizedCondition({ condition });\n const actionParent$ = SearchMonoClassActions.removeConditionFromComposed({\n parentId: condition.parentId ?? null,\n childrenId: condition.id\n });\n const actionsComposed$ = condition.composed?.map((id: string) =>\n SearchMonoClassActions.deleteNormalizedConditionById({ conditionId: id })\n );\n return actionsComposed$\n ? [actionCondition$, actionParent$, ...actionsComposed$]\n : [actionCondition$, actionParent$];\n })\n )\n );\n\n actionMonoClassSearch$ = createEffect(() =>\n this.actions$.pipe(\n ofType(SearchMonoClassActions.search, SearchMonoClassActions.save),\n withLatestFrom(\n this.store.select(SearchMonoClassSelectors.selectMonoClassIdSearch),\n this.store.select(SearchMonoClassSelectors.selectMonoClassConditionsMasterId),\n this.store.select(SearchMonoClassSelectors.selectMonoClassConditions),\n this.store.select(SearchMonoClassSelectors.order),\n this.store.select(DataSourceSelectors.currentEdit)\n ),\n map(([action, oClass, masterId, conditions, order, currentEdit]) => {\n const payload = this.searchMonoClassService.buildMonoClassSearchPayloadForSearch(\n oClass ?? '',\n masterId ?? '',\n conditions,\n order\n );\n if (action.type === SearchMonoClassActions.save.type && DEFAULT_NAMED_QUERY_ID !== action?.id) {\n return DataSourceActions.namedQuery.post({\n id: action.id ?? currentEdit?.id,\n name: action.descriptionQuery.name,\n description: action.descriptionQuery?.description,\n visibility: action.descriptionQuery?.visibility,\n payload,\n color: currentEdit?.color,\n favorite: currentEdit?.favorite ?? false,\n isEdit: !!currentEdit\n });\n }\n return SearchActions.search({ payload });\n })\n )\n );\n\n loadExistingConditions$ = createEffect(() =>\n this.actions$.pipe(\n ofType(SearchMonoClassActions.loadExistingConditions),\n withLatestFrom(this.store.select(ClassSelectors.classes), this.store.select(FieldSelectors.fields)),\n mergeMap(([action, classes, fields]) => {\n const { oClass, condition, sort } = action.payload;\n const masterId = uuidv4();\n const conditions = this.searchMonoClassService.loadNormalizedConditions(\n condition,\n masterId,\n classes,\n fields,\n masterId,\n sort\n ).conditions;\n const ids = conditions.map((cond) => cond.id);\n const entities = conditions.reduce((acc, cond) => ({ ...acc, [cond.id]: cond }), {});\n return [\n SearchMonoClassActions.addIdMaster({ id: masterId }),\n SearchMonoClassActions.addIdCondition({ ids }),\n SearchMonoClassActions.addEntities({ entities }),\n SearchMonoClassActions.addIdClass({ id: oClass }),\n SearchMonoClassActions.addOrder({ attribute: sort?.attribute, asc: sort?.direction as OrderValue })\n ];\n })\n )\n );\n\n addEdit$ = createEffect(() =>\n this.actions$.pipe(\n ofType(DataSourceActions.namedQuery.openEdit),\n withLatestFrom(this.store.select(DataSourceSelectors.currentEdit)),\n mergeMap(([action, currentEdit]) => {\n const actions = [] as Action[];\n if (!!currentEdit) {\n const type = DatasourceUtils.getTypeFromPayload(currentEdit.request);\n if (type === NamedQueryTypes.MULTI_CLASS) {\n actions.push(\n SearchMultiClassActions.loadExistingConditions({\n payload: currentEdit.request as MultiClassSearchPayload\n })\n );\n }\n if (type === NamedQueryTypes.MONO_CLASS) {\n actions.push(\n SearchMonoClassActions.loadExistingConditions({ payload: currentEdit.request as MonoClassSearchPayload })\n );\n }\n }\n return actions;\n }),\n catchError((error) => [DataSourceActions.namedQuery.failure({ error })])\n )\n );\n\n stopEdit$ = createEffect(() =>\n this.actions$.pipe(\n ofType(DataSourceActions.namedQuery.stopEdit),\n mergeMap(() => [SearchMultiClassActions.resetSearch(), SearchMonoClassActions.resetSearch()])\n )\n );\n}\n","import { Injectable } from '@angular/core';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { Store } from '@ngrx/store';\nimport {\n ClassSelectors,\n DataSourceActions,\n DataSourceSelectors,\n DEFAULT_NAMED_QUERY_ID,\n FieldSelectors,\n FieldType,\n MultiClassCondition,\n SearchActions\n} from '@provoly/dashboard';\nimport { combineLatest } from 'rxjs';\nimport { filter, first, map, mergeMap, withLatestFrom } from 'rxjs';\nimport { SearchMultiClassActions } from './search-multi-class.actions';\nimport { SearchMultiClassSelectors } from './search-multi-class.selectors';\nimport { SearchMultiClassService } from './search-multi-class.service';\n\n@Injectable()\nexport class SearchMultiClassEffects {\n constructor(\n private actions$: Actions,\n private store: Store<any>,\n private multiClassService: SearchMultiClassService\n ) {}\n\n addCondition$ = createEffect(() =>\n this.actions$.pipe(\n ofType(SearchMultiClassActions.addNewEmptyCondition),\n map(() => {\n const condition = this.multiClassService.generateCondition();\n return SearchMultiClassActions.addMultiClassCondition({ condition });\n })\n )\n );\n updateConditionField$ = createEffect(() =>\n this.actions$.pipe(\n ofType(SearchMultiClassActions.updateConditionField),\n mergeMap((action) =>\n combineLatest([\n this.store\n .select(SearchMultiClassSelectors.getConditionById(action.conditionId))\n .pipe(filter((c): c is MultiClassCondition => c !== undefined)),\n this.store.select(FieldSelectors.fieldById(action.field))\n ]).pipe(first())\n ),\n map(([condition, field]) => {\n const pattern = this.multiClassService.getPatternForField(field);\n const isDate = field.type === FieldType.INSTANT;\n return SearchMultiClassActions.updateConditionPattern({\n conditionId: condition.id,\n pattern,\n isDate\n });\n })\n )\n );\n\n actionMultiClassSearch$ = createEffect(() =>\n this.actions$.pipe(\n ofType(SearchMultiClassActions.search, SearchMultiClassActions.save),\n withLatestFrom(\n this.store.select(SearchMultiClassSelectors.conditions),\n this.store.select(SearchMultiClassSelectors.multiType),\n this.store.select(ClassSelectors.classes),\n this.store.select(DataSourceSelectors.currentEdit)\n ),\n map(([action, conditions, multiType, classes, currentEdit]) => {\n const payload = this.multiClassService.buildConditionsToSearchPayload(conditions, classes, multiType);\n if (action.type === SearchMultiClassActions.save.type && DEFAULT_NAMED_QUERY_ID !== currentEdit?.id) {\n return DataSourceActions.namedQuery.post({\n id: action.id ?? currentEdit?.id,\n name: action.descriptionQuery.name,\n description: action.descriptionQuery?.description,\n visibility: action.descriptionQuery?.visibility,\n payload,\n color: currentEdit?.color,\n favorite: currentEdit?.favorite ?? false,\n isEdit: !!currentEdit\n });\n }\n return SearchActions.search({ payload });\n })\n )\n );\n\n loadExistingConditions$ = createEffect(() =>\n this.actions$.pipe(\n ofType(SearchMultiClassActions.loadExistingConditions),\n withLatestFrom(this.store.select(FieldSelectors.fields)),\n mergeMap(([action, fields]) => {\n const conditions = this.multiClassService.getConditionsFromSearchPayload(action.payload, fields);\n const multiType = action.payload.multiType;\n return [\n SearchMultiClassActions.updateConditions({ conditions }),\n SearchMultiClassActions.updateMultiType({ multiType })\n ];\n })\n )\n );\n}\n","import { OverlayModule } from '@angular/cdk/overlay';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { EffectsModule } from '@ngrx/effects';\nimport { StoreModule } from '@ngrx/store';\nimport {\n PryCoreModule,\n PryDashboardModule,\n PryDatePickerModule,\n PryI18nModule,\n PryI18nService,\n PryIconModule,\n PryOverlayModule,\n PrySelectModule,\n PryShareModule,\n PryToggleModule\n} from '@provoly/dashboard';\nimport { PryCardModule } from '@provoly/dashboard/components/card';\nimport { PryCheckboxModule } from '@provoly/dashboard/components/checkbox';\nimport { PryExpandPanelModule } from '@provoly/dashboard/components/expand-panel';\nimport { PryFilterModule } from '@provoly/dashboard/components/filter';\nimport { ChooseWidgetComponent } from './components/choose-widget/choose-widget.component';\nimport { EditNamedQueryModalComponent } from './components/edit-named-query-modal/edit-named-query-modal.component';\nimport { EditNamedQueryComponent } from './components/edit-named-query/edit-named-query.component';\nimport { PrySaveQueryButtonComponent } from './components/save-query-button/save-query-button.component';\nimport { PrySaveQueryComponent } from './components/save-query/save-query.component';\nimport { enTranslations } from './i18n/en.translations';\nimport { frTranslations } from './i18n/fr.translations';\nimport { PrySearchFulltextComponent } from './search-fulltext/search-fulltext/search-fulltext.component';\nimport { SearchFulltextEffects } from './search-fulltext/store/search-fulltext.effects';\nimport { PrySearchHomeComponent } from './search-home/search-home.component';\nimport { PrySearchComposedComponent } from './search-mono-class/components/search-composed/search-composed.component';\nimport { PrySearchConditionComponent } from './search-mono-class/components/search-condition/search-condition.component';\nimport { PrySearchMonoClassComponent } from './search-mono-class/components/search-mono-class/search-mono-class.component';\nimport { PrySearchOrderComponent } from './search-mono-class/components/search-order/search-order.component';\nimport { PrySearchSelectAttributeComponent } from './search-mono-class/components/search-select-attribute/search-select-attribute.component';\nimport { SearchMonoClassEffects } from './search-mono-class/store/search-mono-class.effects';\nimport { searchMonoClassFeatureKey, searchMonoClassReducer } from './search-mono-class/store/search-mono-class.reducer';\nimport { MultiClassConditionComponent } from './search-multi-class/components/multi-class-condition/multi-class-condition.component';\nimport { MultiClassFieldSelectionComponent } from './search-multi-class/components/multi-class-field-selection/multi-class-field-selection.component';\nimport { PrySearchMultiClassComponent } from './search-multi-class/components/search-multi-class/search-multi-class.component';\nimport { SearchMultiClassEffects } from './search-multi-class/store/search-multi-class.effects';\nimport {\n searchMultiClassFeatureKey,\n searchMultiClassReducer\n} from './search-multi-class/store/search-multi-class.reducer';\nimport { PrySearchToolsComponent } from './search-tools/search-tools.component';\nimport { PrySearchCssComponent } from './style/css.component';\n\n@NgModule({\n imports: [\n CommonModule,\n PryCoreModule,\n StoreModule.forFeature(searchMultiClassFeatureKey, searchMultiClassReducer),\n StoreModule.forFeature(searchMonoClassFeatureKey, searchMonoClassReducer),\n EffectsModule.forFeature([SearchMultiClassEffects, SearchMonoClassEffects, SearchFulltextEffects]),\n PryIconModule,\n FormsModule,\n ReactiveFormsModule,\n OverlayModule,\n PortalModule,\n PrySelectModule,\n PryToggleModule,\n PryOverlayModule,\n PryFilterModule,\n PryToggleModule,\n PryExpandPanelModule,\n PryCardModule,\n PryCheckboxModule,\n PryDashboardModule,\n PryShareModule,\n PryDatePickerModule,\n PryI18nModule\n ],\n declarations: [\n PrySearchComposedComponent,\n PrySearchSelectAttributeComponent,\n PrySearchConditionComponent,\n PrySaveQueryComponent,\n PrySearchToolsComponent,\n PrySearchHomeComponent,\n PrySearchMonoClassComponent,\n PrySaveQueryComponent,\n MultiClassConditionComponent,\n PrySearchMultiClassComponent,\n MultiClassFieldSelectionComponent,\n PrySearchFulltextComponent,\n PrySaveQueryButtonComponent,\n EditNamedQueryComponent,\n EditNamedQueryModalComponent,\n ChooseWidgetComponent,\n PrySearchOrderComponent,\n PrySearchCssComponent\n ],\n exports: [PrySearchToolsComponent, PrySearchFulltextComponent, EditNamedQueryModalComponent, ChooseWidgetComponent]\n})\nexport class PrySearchModule {\n constructor(private pryTranslateService: PryI18nService) {\n this.pryTranslateService.addLangObject('fr', 'search', frTranslations);\n this.pryTranslateService.addLangObject('en', 'search', enTranslations);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i3","feature","fromSearchMonoClass.searchMonoClassFeatureKey","fromSearchMultiClass.searchMultiClassFeatureKey","uuidv4","i2","i4","i7.PrySearchCssComponent","i5.PrySearchSelectAttributeComponent","i6.PrySearchConditionComponent","i5","i4.PrySearchComposedComponent","i5.PrySearchOrderComponent","i6","i2.SearchMultiClassService","i6.MultiClassFieldSelectionComponent","i7","i4.MultiClassConditionComponent","i5.ChooseWidgetComponent","i6.PrySearchCssComponent","i3.PrySearchMonoClassComponent","i4.PrySearchMultiClassComponent","i5.PrySearchFulltextComponent","i6.ChooseWidgetComponent","i4.PrySearchHomeComponent","i5.PrySearchMonoClassComponent","i6.PrySearchMultiClassComponent","i7.PrySearchFulltextComponent","i8.PrySaveQueryButtonComponent","i9.EditNamedQueryComponent","i10.ChooseWidgetComponent","i11","i3.PrySearchToolsComponent","i3.SearchFulltextService","uuidV4","i3.SearchMonoClassService","i3.SearchMultiClassService"],"mappings":"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"}