@webitel/ui-datalist 1.1.4 → 1.1.6

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 (219) hide show
  1. package/package.json +5 -12
  2. package/src/modules/_shared/createDatalistStore.ts +44 -44
  3. package/src/modules/card/composables/useCardAnyFieldEditedWatcher.ts +15 -15
  4. package/src/modules/card/composables/useCardComponent.ts +69 -67
  5. package/src/modules/card/composables/useCardIsNew.ts +5 -5
  6. package/src/modules/card/composables/useCardRouting.ts +22 -24
  7. package/src/modules/card/composables/useCardSaveAction.ts +15 -15
  8. package/src/modules/card/composables/useCardValidation.ts +22 -24
  9. package/src/modules/card/composables/useItemCardSaveText.ts +14 -14
  10. package/src/modules/card/stores/createCardStore.ts +174 -173
  11. package/src/modules/filter-presets/api/PresetQuery.ts +115 -92
  12. package/src/modules/filter-presets/components/_shared/input-fields/preset-description-field.vue +1 -1
  13. package/src/modules/filter-presets/components/_shared/preset-filters-preview.vue +8 -10
  14. package/src/modules/filter-presets/components/apply-preset/apply-preset-action.vue +119 -97
  15. package/src/modules/filter-presets/components/apply-preset/preset-preview.vue +66 -60
  16. package/src/modules/filter-presets/components/save-preset/overwrite-preset-popup.vue +8 -6
  17. package/src/modules/filter-presets/components/save-preset/save-preset-action.vue +93 -87
  18. package/src/modules/filter-presets/components/save-preset/save-preset-popup.vue +43 -38
  19. package/src/modules/filter-presets/stores/createFilterPresetsStore.ts +50 -45
  20. package/src/modules/filter-presets/stores/headers/headers.ts +20 -20
  21. package/src/modules/filters/classes/Filter.ts +42 -42
  22. package/src/modules/filters/classes/FiltersManager.ts +287 -246
  23. package/src/modules/filters/classes/__tests__/FiltersManager.spec.ts +64 -0
  24. package/src/modules/filters/components/config/dynamic-view/dynamic-filter-config-form-value-input.vue +6 -4
  25. package/src/modules/filters/components/config/dynamic-view/dynamic-filter-config-form.vue +57 -51
  26. package/src/modules/filters/components/config/dynamic-view/dynamic-filter-config-view.vue +2 -2
  27. package/src/modules/filters/components/config/static-view/static-filter-field.vue +16 -18
  28. package/src/modules/filters/components/dynamic-filter-add-action.vue +9 -7
  29. package/src/modules/filters/components/dynamic-filter-panel-wrapper.vue +6 -6
  30. package/src/modules/filters/components/preview/dynamic-filter-preview.vue +50 -48
  31. package/src/modules/filters/components/search-bar/dynamic-filter-search.vue +92 -80
  32. package/src/modules/filters/components/search-bar/types/DynamicFilterSearch.d.ts +1 -1
  33. package/src/modules/filters/components/table-filters-panel.vue +96 -82
  34. package/src/modules/filters/components/types/Filter.types.ts +14 -10
  35. package/src/modules/filters/composables/useFilterConfigsToolkit.ts +143 -136
  36. package/src/modules/filters/createTableFiltersStore.ts +109 -93
  37. package/src/modules/filters/index.ts +24 -23
  38. package/src/modules/filters/modules/filterConfig/classes/FilterConfig.ts +55 -55
  39. package/src/modules/filters/modules/filterConfig/classes/createFilterConfig.ts +19 -19
  40. package/src/modules/filters/modules/filterConfig/components/_custom/filterConfig.ts +84 -67
  41. package/src/modules/filters/modules/filterConfig/components/_custom/index.ts +3 -3
  42. package/src/modules/filters/modules/filterConfig/components/_custom/type-extension-filter-value-field.vue +24 -16
  43. package/src/modules/filters/modules/filterConfig/components/_custom/type-extension-filter-value-preview.vue +7 -7
  44. package/src/modules/filters/modules/filterConfig/components/_shared/date-time-filter/date-time-filter-value-field.vue +12 -9
  45. package/src/modules/filters/modules/filterConfig/components/_shared/date-time-filter/date-time-filter-value-preview.vue +3 -3
  46. package/src/modules/filters/modules/filterConfig/components/_shared/date-time-filter/date-time-options/date-time-options-filter-value-field.vue +38 -31
  47. package/src/modules/filters/modules/filterConfig/components/_shared/date-time-filter/date-time-options/date-time-options-filter-value-preview.vue +14 -9
  48. package/src/modules/filters/modules/filterConfig/components/_shared/has-options/has-option-filter-value-field.vue +10 -8
  49. package/src/modules/filters/modules/filterConfig/components/_shared/has-options/has-option-filter-value-preview.vue +1 -1
  50. package/src/modules/filters/modules/filterConfig/components/_shared/lookup-filter-preview/lookup-filter-value-preview.vue +4 -4
  51. package/src/modules/filters/modules/filterConfig/components/agent/agent-filter-value-field.vue +22 -14
  52. package/src/modules/filters/modules/filterConfig/components/agent/agent-filter-value-preview.vue +1 -1
  53. package/src/modules/filters/modules/filterConfig/components/agent-status/agent-status-filter-value-field.vue +33 -20
  54. package/src/modules/filters/modules/filterConfig/components/agent-status/agent-status-filter-value-preview.vue +7 -8
  55. package/src/modules/filters/modules/filterConfig/components/amd-result/amd-result-filter-value-field.vue +21 -13
  56. package/src/modules/filters/modules/filterConfig/components/amd-result/amd-result-filter-value-preview.vue +1 -1
  57. package/src/modules/filters/modules/filterConfig/components/auditor/auditor-filter-value-field.vue +33 -19
  58. package/src/modules/filters/modules/filterConfig/components/auditor/auditor-filter-value-preview.vue +1 -1
  59. package/src/modules/filters/modules/filterConfig/components/auditor/index.ts +10 -9
  60. package/src/modules/filters/modules/filterConfig/components/call-direction/call-direction-filter-value-field.vue +21 -13
  61. package/src/modules/filters/modules/filterConfig/components/call-direction/call-direction-filter-value-preview.vue +1 -1
  62. package/src/modules/filters/modules/filterConfig/components/case-actual-reaction-time/case-actual-reaction-time-filter-value-field.vue +2 -2
  63. package/src/modules/filters/modules/filterConfig/components/case-actual-reaction-time/case-actual-reaction-time-filter-value-preview.vue +2 -2
  64. package/src/modules/filters/modules/filterConfig/components/case-actual-resolution-time/case-actual-resolution-time-filter-value-field.vue +2 -2
  65. package/src/modules/filters/modules/filterConfig/components/case-actual-resolution-time/case-actual-resolution-time-filter-value-preview.vue +2 -2
  66. package/src/modules/filters/modules/filterConfig/components/case-assignee/case-assignee-filter-value-field.vue +36 -25
  67. package/src/modules/filters/modules/filterConfig/components/case-assignee/case-assignee-filter-value-preview.vue +15 -13
  68. package/src/modules/filters/modules/filterConfig/components/case-assignee/filterConfig.ts +24 -18
  69. package/src/modules/filters/modules/filterConfig/components/case-assignee/index.ts +3 -3
  70. package/src/modules/filters/modules/filterConfig/components/case-author/case-author-filter-value-field.vue +22 -14
  71. package/src/modules/filters/modules/filterConfig/components/case-author/case-author-filter-value-preview.vue +4 -4
  72. package/src/modules/filters/modules/filterConfig/components/case-close-reason-groups/case-close-reason-groups-filter-value-field.vue +42 -34
  73. package/src/modules/filters/modules/filterConfig/components/case-close-reason-groups/case-close-reason-groups-filter-value-preview.vue +1 -1
  74. package/src/modules/filters/modules/filterConfig/components/case-close-reason-groups/config.js +1 -1
  75. package/src/modules/filters/modules/filterConfig/components/case-impacted/case-impacted-filter-value-field.vue +22 -14
  76. package/src/modules/filters/modules/filterConfig/components/case-impacted/case-impacted-filter-value-preview.vue +1 -1
  77. package/src/modules/filters/modules/filterConfig/components/case-priority/case-priority-filter-value-field.vue +22 -14
  78. package/src/modules/filters/modules/filterConfig/components/case-priority/case-priority-filter-value-preview.vue +1 -1
  79. package/src/modules/filters/modules/filterConfig/components/case-reaction-time/case-reaction-time-filter-value-field.vue +2 -2
  80. package/src/modules/filters/modules/filterConfig/components/case-reaction-time/case-reaction-time-filter-value-preview.vue +2 -2
  81. package/src/modules/filters/modules/filterConfig/components/case-reporter/case-reporter-filter-value-field.vue +22 -14
  82. package/src/modules/filters/modules/filterConfig/components/case-reporter/case-reporter-filter-value-preview.vue +1 -1
  83. package/src/modules/filters/modules/filterConfig/components/case-resolution-time/case-resolution-time-filter-value-field.vue +2 -2
  84. package/src/modules/filters/modules/filterConfig/components/case-resolution-time/case-resolution-time-filter-value-preview.vue +2 -2
  85. package/src/modules/filters/modules/filterConfig/components/case-service/case-service-filter-value-preview.vue +4 -4
  86. package/src/modules/filters/modules/filterConfig/components/case-sla/case-sla-filter-value-field.vue +22 -14
  87. package/src/modules/filters/modules/filterConfig/components/case-sla/case-sla-filter-value-preview.vue +1 -1
  88. package/src/modules/filters/modules/filterConfig/components/case-sla-condition/case-sla-condition-filter-value-field.vue +40 -32
  89. package/src/modules/filters/modules/filterConfig/components/case-sla-condition/case-sla-condition-filter-value-preview.vue +1 -1
  90. package/src/modules/filters/modules/filterConfig/components/case-source/case-source-filter-value-field.vue +22 -14
  91. package/src/modules/filters/modules/filterConfig/components/case-source/case-source-filter-value-preview.vue +1 -1
  92. package/src/modules/filters/modules/filterConfig/components/case-status/case-status-filter-value-field.vue +42 -34
  93. package/src/modules/filters/modules/filterConfig/components/case-status/case-status-filter-value-preview.vue +1 -1
  94. package/src/modules/filters/modules/filterConfig/components/case-status/config.js +1 -1
  95. package/src/modules/filters/modules/filterConfig/components/contact/contact-filter-value-field.vue +22 -14
  96. package/src/modules/filters/modules/filterConfig/components/contact/contact-filter-value-preview.vue +1 -1
  97. package/src/modules/filters/modules/filterConfig/components/contact-group/contact-group-filter-value-field.vue +57 -46
  98. package/src/modules/filters/modules/filterConfig/components/contact-group/contact-group-filter-value-preview.vue +15 -13
  99. package/src/modules/filters/modules/filterConfig/components/contact-group/index.ts +39 -27
  100. package/src/modules/filters/modules/filterConfig/components/contact-label/contact-label-filter-value-field.vue +33 -22
  101. package/src/modules/filters/modules/filterConfig/components/contact-label/contact-label-filter-value-preview.vue +4 -5
  102. package/src/modules/filters/modules/filterConfig/components/contact-label/index.ts +20 -15
  103. package/src/modules/filters/modules/filterConfig/components/contact-owner/contact-owner-filter-value-field.vue +24 -16
  104. package/src/modules/filters/modules/filterConfig/components/contact-owner/contact-owner-filter-value-preview.vue +4 -4
  105. package/src/modules/filters/modules/filterConfig/components/contact-owner/index.ts +10 -9
  106. package/src/modules/filters/modules/filterConfig/components/created-at-from/created-at-from-filter-value-field.vue +1 -1
  107. package/src/modules/filters/modules/filterConfig/components/created-at-from/created-at-from-filter-value-preview.vue +3 -3
  108. package/src/modules/filters/modules/filterConfig/components/created-at-to/created-at-to-filter-value-field.vue +1 -1
  109. package/src/modules/filters/modules/filterConfig/components/created-at-to/created-at-to-filter-value-preview.vue +3 -3
  110. package/src/modules/filters/modules/filterConfig/components/gateway/gateway-filter-value-field.vue +27 -15
  111. package/src/modules/filters/modules/filterConfig/components/gateway/gateway-filter-value-preview.vue +4 -4
  112. package/src/modules/filters/modules/filterConfig/components/grantee/grantee-filter-value-field.vue +22 -14
  113. package/src/modules/filters/modules/filterConfig/components/grantee/grantee-filter-value-preview.vue +4 -4
  114. package/src/modules/filters/modules/filterConfig/components/hangup-cause/hangup-cause-filter-value-field.vue +21 -13
  115. package/src/modules/filters/modules/filterConfig/components/hangup-cause/hangup-cause-filter-value-preview.vue +1 -1
  116. package/src/modules/filters/modules/filterConfig/components/has-attachment/has-attachment-filter-value-field.vue +21 -13
  117. package/src/modules/filters/modules/filterConfig/components/has-attachment/has-attachment-filter-value-preview.vue +1 -1
  118. package/src/modules/filters/modules/filterConfig/components/has-file/has-file-filter-value-field.vue +11 -7
  119. package/src/modules/filters/modules/filterConfig/components/has-file/has-file-filter-value-preview.vue +1 -1
  120. package/src/modules/filters/modules/filterConfig/components/has-rating/has-rating-filter-value-field.vue +11 -7
  121. package/src/modules/filters/modules/filterConfig/components/has-rating/has-rating-filter-value-preview.vue +1 -1
  122. package/src/modules/filters/modules/filterConfig/components/has-transcription/has-transcription-filter-value-field.vue +11 -7
  123. package/src/modules/filters/modules/filterConfig/components/has-transcription/has-transcription-filter-value-preview.vue +1 -1
  124. package/src/modules/filters/modules/filterConfig/components/has-user/has-user-filter-value-field.vue +19 -14
  125. package/src/modules/filters/modules/filterConfig/components/has-user/has-user-filter-value-preview.vue +1 -1
  126. package/src/modules/filters/modules/filterConfig/components/index.ts +261 -259
  127. package/src/modules/filters/modules/filterConfig/components/queue/index.ts +10 -9
  128. package/src/modules/filters/modules/filterConfig/components/queue/queue-filter-value-field.vue +33 -19
  129. package/src/modules/filters/modules/filterConfig/components/queue/queue-filter-value-preview.vue +1 -1
  130. package/src/modules/filters/modules/filterConfig/components/queue-period/queue-period-filter-value-field.vue +33 -20
  131. package/src/modules/filters/modules/filterConfig/components/queue-period/queue-period-filter-value-preview.vue +7 -8
  132. package/src/modules/filters/modules/filterConfig/components/queue-type/queue-type-filter-value-field.vue +33 -20
  133. package/src/modules/filters/modules/filterConfig/components/queue-type/queue-type-filter-value-preview.vue +7 -7
  134. package/src/modules/filters/modules/filterConfig/components/rated-by/rated-by-filter-value-field.vue +22 -14
  135. package/src/modules/filters/modules/filterConfig/components/rated-by/rated-by-filter-value-preview.vue +4 -4
  136. package/src/modules/filters/modules/filterConfig/components/rating/rating-from-to-filter-value-preview.vue +1 -1
  137. package/src/modules/filters/modules/filterConfig/components/region/index.ts +10 -9
  138. package/src/modules/filters/modules/filterConfig/components/region/region-filter-value-field.vue +33 -19
  139. package/src/modules/filters/modules/filterConfig/components/region/region-filter-value-preview.vue +1 -1
  140. package/src/modules/filters/modules/filterConfig/components/score/score-from-to-filter-value-preview.vue +1 -1
  141. package/src/modules/filters/modules/filterConfig/components/skill/index.ts +10 -9
  142. package/src/modules/filters/modules/filterConfig/components/skill/skill-filter-value-field.vue +33 -19
  143. package/src/modules/filters/modules/filterConfig/components/skill/skill-filter-value-preview.vue +1 -1
  144. package/src/modules/filters/modules/filterConfig/components/supervisor/index.ts +10 -9
  145. package/src/modules/filters/modules/filterConfig/components/supervisor/supervisor-filter-value-field.vue +33 -19
  146. package/src/modules/filters/modules/filterConfig/components/supervisor/supervisor-filter-value-preview.vue +1 -1
  147. package/src/modules/filters/modules/filterConfig/components/tag/tag-filter-value-field.vue +21 -13
  148. package/src/modules/filters/modules/filterConfig/components/tag/tag-filter-value-preview.vue +10 -10
  149. package/src/modules/filters/modules/filterConfig/components/talk-duration/TalkDurationFilter.d.ts +2 -2
  150. package/src/modules/filters/modules/filterConfig/components/talk-duration/talk-duration-filter-value-field.vue +3 -1
  151. package/src/modules/filters/modules/filterConfig/components/talk-duration/talk-duration-filter-value-preview.vue +1 -1
  152. package/src/modules/filters/modules/filterConfig/components/team/index.ts +10 -10
  153. package/src/modules/filters/modules/filterConfig/components/team/team-filter-value-field.vue +33 -19
  154. package/src/modules/filters/modules/filterConfig/components/team/team-filter-value-preview.vue +1 -1
  155. package/src/modules/filters/modules/filterConfig/components/total-duration/TotalDurationFilter.d.ts +2 -2
  156. package/src/modules/filters/modules/filterConfig/components/total-duration/total-duration-filter-value-field.vue +3 -1
  157. package/src/modules/filters/modules/filterConfig/components/total-duration/total-duration-filter-value-preview.vue +1 -1
  158. package/src/modules/filters/modules/filterConfig/components/user/user-filter-value-field.vue +22 -14
  159. package/src/modules/filters/modules/filterConfig/components/user/user-filter-value-preview.vue +4 -4
  160. package/src/modules/filters/modules/filterConfig/components/utilization-progress/utilization-progress-filter-value-field.vue +33 -20
  161. package/src/modules/filters/modules/filterConfig/components/utilization-progress/utilization-progress-filter-value-preview.vue +1 -2
  162. package/src/modules/filters/modules/filterConfig/components/variable/variable-filter-value-preview.vue +1 -1
  163. package/src/modules/filters/modules/filterConfig/composables/booleanFilterToolkit.ts +31 -23
  164. package/src/modules/filters/modules/filterConfig/composables/useAgentStatusOptions.ts +16 -15
  165. package/src/modules/filters/modules/filterConfig/composables/useFromToSecToPreviewTime.ts +26 -26
  166. package/src/modules/filters/modules/filterConfig/composables/useQueuePeriodOptions.ts +66 -36
  167. package/src/modules/filters/modules/filterConfig/composables/useQueueTypeOptions.ts +12 -13
  168. package/src/modules/filters/modules/filterConfig/enums/FilterOption.ts +51 -51
  169. package/src/modules/filters/modules/filterConfig/enums/options/AMDResultOptions.ts +29 -29
  170. package/src/modules/filters/modules/filterConfig/enums/options/BooleanFilterOptions.ts +8 -8
  171. package/src/modules/filters/modules/filterConfig/enums/options/CallDirectionFilterOptions.ts +20 -11
  172. package/src/modules/filters/modules/filterConfig/enums/options/CallHistoryTagFilterOptions.ts +5 -5
  173. package/src/modules/filters/modules/filterConfig/enums/options/HangupCauseFilterOptions.ts +257 -257
  174. package/src/modules/filters/modules/filterConfig/enums/options/UtilizationProgressOptions.ts +16 -16
  175. package/src/modules/filters/modules/filterConfig/types/DynamicFilterPreviewComponent.ts +3 -3
  176. package/src/modules/filters/scripts/utils.ts +13 -13
  177. package/src/modules/headers/createTableHeadersStore.ts +278 -251
  178. package/src/modules/pagination/createTablePaginationStore.ts +55 -52
  179. package/src/modules/persist/PersistedStorage.types.ts +33 -31
  180. package/src/modules/persist/useLocalStoragePersistedStorage.ts +24 -24
  181. package/src/modules/persist/usePersistedStorage.ts +117 -105
  182. package/src/modules/persist/useRoutePersistedStorage.ts +33 -31
  183. package/src/modules/scripts/utils.ts +13 -13
  184. package/src/modules/table/createTableStore.store.ts +352 -316
  185. package/src/modules/types/StoreProvider.ts +3 -3
  186. package/src/modules/types/createDatalistStore.types.ts +12 -9
  187. package/src/modules/types/tableStore.types.ts +44 -44
  188. package/types/modules/card/composables/useCardRouting.d.ts +1 -1
  189. package/types/modules/card/composables/useCardSaveAction.d.ts +1 -1
  190. package/types/modules/filter-presets/components/_shared/preset-filters-preview.vue.d.ts +1 -1
  191. package/types/modules/filter-presets/components/apply-preset/apply-preset-action.vue.d.ts +1 -1
  192. package/types/modules/filter-presets/components/apply-preset/preset-preview.vue.d.ts +1 -1
  193. package/types/modules/filter-presets/components/save-preset/save-preset-action.vue.d.ts +1 -1
  194. package/types/modules/filter-presets/components/save-preset/save-preset-popup.vue.d.ts +1 -1
  195. package/types/modules/filter-presets/stores/createFilterPresetsStore.d.ts +16 -4
  196. package/types/modules/filters/classes/FiltersManager.d.ts +4 -1
  197. package/types/modules/filters/components/config/dynamic-view/dynamic-filter-config-form-value-input.vue.d.ts +1 -1
  198. package/types/modules/filters/components/config/dynamic-view/dynamic-filter-config-form.vue.d.ts +2 -2
  199. package/types/modules/filters/components/dynamic-filter-add-action.vue.d.ts +2 -2
  200. package/types/modules/filters/components/table-filters-panel.vue.d.ts +4 -4
  201. package/types/modules/filters/components/types/Filter.types.d.ts +9 -3
  202. package/types/modules/filters/createTableFiltersStore.d.ts +8 -2
  203. package/types/modules/filters/modules/filterConfig/components/_custom/filterConfig.d.ts +2 -2
  204. package/types/modules/filters/modules/filterConfig/components/case-assignee/case-assignee-filter-value-field.vue.d.ts +1 -1
  205. package/types/modules/filters/modules/filterConfig/components/case-assignee/case-assignee-filter-value-preview.vue.d.ts +1 -1
  206. package/types/modules/filters/modules/filterConfig/components/contact-group/contact-group-filter-value-preview.vue.d.ts +1 -1
  207. package/types/modules/filters/modules/filterConfig/components/contact-owner/contact-owner-filter-value-field.vue.d.ts +1 -1
  208. package/types/modules/filters/modules/filterConfig/components/has-file/has-file-filter-value-field.vue.d.ts +1 -1
  209. package/types/modules/filters/modules/filterConfig/components/has-rating/has-rating-filter-value-field.vue.d.ts +1 -1
  210. package/types/modules/filters/modules/filterConfig/components/has-transcription/has-transcription-filter-value-field.vue.d.ts +1 -1
  211. package/types/modules/filters/modules/filterConfig/components/has-user/has-user-filter-value-field.vue.d.ts +2 -2
  212. package/types/modules/filters/modules/filterConfig/components/index.d.ts +14 -14
  213. package/types/modules/filters/modules/filterConfig/composables/booleanFilterToolkit.d.ts +1 -1
  214. package/types/modules/filters/modules/filterConfig/enums/options/AMDResultOptions.d.ts +1 -1
  215. package/types/modules/filters/modules/filterConfig/enums/options/CallDirectionFilterOptions.d.ts +4 -1
  216. package/types/modules/filters/modules/filterConfig/enums/options/CallHistoryTagFilterOptions.d.ts +1 -1
  217. package/types/modules/filters/modules/filterConfig/enums/options/HangupCauseFilterOptions.d.ts +1 -1
  218. package/types/modules/filters/scripts/utils.d.ts +1 -1
  219. package/types/modules/table/createTableStore.store.d.ts +16 -4
@@ -33,40 +33,37 @@
33
33
  <script lang="ts" setup>
34
34
  import { WtIconAction } from '@webitel/ui-sdk/components';
35
35
  import { IconAction } from '@webitel/ui-sdk/enums';
36
- import { computed, inject, reactive, type Ref, ref, watch } from 'vue';
36
+ import { computed, inject, type Ref, reactive, ref, watch } from 'vue';
37
37
  import { useI18n } from 'vue-i18n';
38
38
  import { EnginePresetQuery } from 'webitel-sdk';
39
39
 
40
40
  import {
41
- createFiltersManager, FilterName,
42
- IFiltersManager,
41
+ createFiltersManager,
42
+ FilterName,
43
+ IFiltersManager,
43
44
  } from '../../../filters';
44
- import {AnyFilterConfig} from "../../../filters/modules/filterConfig/classes/FilterConfig";
45
- import {
46
- addPreset,
47
- getPresetList,
48
- updatePreset,
49
- } from '../../api/PresetQuery';
45
+ import { AnyFilterConfig } from '../../../filters/modules/filterConfig/classes/FilterConfig';
46
+ import { addPreset, getPresetList, updatePreset } from '../../api/PresetQuery';
50
47
  import OverwritePresetPopup from './overwrite-preset-popup.vue';
51
48
  import SavePresetPopup, { SubmitConfig } from './save-preset-popup.vue';
52
49
 
53
50
  const props = defineProps<{
54
- /**
55
- * @description
56
- * presets "section" namespace
57
- */
58
- namespace: string;
59
- /**
60
- * @author @dlohvinov
61
- * serves as a source for local filters manager
62
- */
63
- filtersManager: IFiltersManager;
64
- /**
65
- * @description
66
- * include in preset only filter values related to filters panel
67
- */
68
- filtersIncluded: FilterName[];
69
- filterConfigs: AnyFilterConfig[];
51
+ /**
52
+ * @description
53
+ * presets "section" namespace
54
+ */
55
+ namespace: string;
56
+ /**
57
+ * @author @dlohvinov
58
+ * serves as a source for local filters manager
59
+ */
60
+ filtersManager: IFiltersManager;
61
+ /**
62
+ * @description
63
+ * include in preset only filter values related to filters panel
64
+ */
65
+ filtersIncluded: FilterName[];
66
+ filterConfigs: AnyFilterConfig[];
70
67
  }>();
71
68
 
72
69
  const eventBus = inject('$eventBus');
@@ -74,14 +71,18 @@ const eventBus = inject('$eventBus');
74
71
  const localFiltersManager = reactive(createFiltersManager());
75
72
 
76
73
  watch(
77
- props.filtersManager,
78
- () => {
79
- localFiltersManager.reset();
80
- localFiltersManager.fromString(
81
- props.filtersManager.toString({ include: props.filtersIncluded }),
82
- );
83
- },
84
- { immediate: true },
74
+ props.filtersManager,
75
+ () => {
76
+ localFiltersManager.reset();
77
+ localFiltersManager.fromString(
78
+ props.filtersManager.toString({
79
+ include: props.filtersIncluded,
80
+ }),
81
+ );
82
+ },
83
+ {
84
+ immediate: true,
85
+ },
85
86
  );
86
87
 
87
88
  const { t } = useI18n();
@@ -90,7 +91,7 @@ const { t } = useI18n();
90
91
  * disable "save" btn if there's nothing to save
91
92
  * */
92
93
  const disableAction = computed(() => {
93
- return !localFiltersManager.getAllKeys().length;
94
+ return !localFiltersManager.getAllKeys().length;
94
95
  });
95
96
 
96
97
  /**
@@ -104,64 +105,69 @@ const showSaveForm = ref(false);
104
105
  const presetToOverwriteWith: Ref<EnginePresetQuery | null> = ref(null);
105
106
 
106
107
  const handlePresetSubmit = async (
107
- preset: EnginePresetQuery,
108
- { onCompleted }: SubmitConfig,
108
+ preset: EnginePresetQuery,
109
+ { onCompleted }: SubmitConfig,
109
110
  ) => {
110
- try {
111
- await addPreset({ preset, namespace: props.namespace });
112
-
113
- eventBus.$emit('notification', {
114
- type: 'success',
115
- text: t('systemNotifications.success.create', {
116
- entity: t('webitelUI.filters.presets.preset'),
117
- }),
118
- });
119
-
120
- showSaveForm.value = false;
121
- } catch (err) {
122
- if (err?.status === 409) {
123
- presetToOverwriteWith.value = preset;
124
- }
125
- throw err;
126
- } finally {
127
- if (onCompleted) onCompleted();
128
- }
111
+ try {
112
+ await addPreset({
113
+ preset,
114
+ namespace: props.namespace,
115
+ });
116
+
117
+ eventBus.$emit('notification', {
118
+ type: 'success',
119
+ text: t('systemNotifications.success.create', {
120
+ entity: t('webitelUI.filters.presets.preset'),
121
+ }),
122
+ });
123
+
124
+ showSaveForm.value = false;
125
+ } catch (err) {
126
+ if (err?.status === 409) {
127
+ presetToOverwriteWith.value = preset;
128
+ }
129
+ throw err;
130
+ } finally {
131
+ if (onCompleted) onCompleted();
132
+ }
129
133
  };
130
134
 
131
135
  const handlePresetOverwriteConfirmation = async ({
132
- onCompleted,
136
+ onCompleted,
133
137
  }: SubmitConfig) => {
134
- try {
135
- const { items } = await getPresetList(
136
- {
137
- search: presetToOverwriteWith.value.name,
138
- presetNamespace: props.namespace,
139
- },
140
- {
141
- transformers: { useStarToSearch: false },
142
- },
143
- );
144
- const { id: existingPresetId } = items[0];
145
- await updatePreset({
146
- id: existingPresetId,
147
- item: {
148
- ...presetToOverwriteWith.value,
149
- },
150
- namespace: props.namespace,
151
- });
152
-
153
- eventBus.$emit('notification', {
154
- type: 'success',
155
- text: t('systemNotifications.success.update', {
156
- entity: t('webitelUI.filters.presets.preset'),
157
- }),
158
- });
159
-
160
- presetToOverwriteWith.value = null;
161
- showSaveForm.value = false;
162
- } finally {
163
- if (onCompleted) onCompleted();
164
- }
138
+ try {
139
+ const { items } = await getPresetList(
140
+ {
141
+ search: presetToOverwriteWith.value.name,
142
+ presetNamespace: props.namespace,
143
+ },
144
+ {
145
+ transformers: {
146
+ useStarToSearch: false,
147
+ },
148
+ },
149
+ );
150
+ const { id: existingPresetId } = items[0];
151
+ await updatePreset({
152
+ id: existingPresetId,
153
+ item: {
154
+ ...presetToOverwriteWith.value,
155
+ },
156
+ namespace: props.namespace,
157
+ });
158
+
159
+ eventBus.$emit('notification', {
160
+ type: 'success',
161
+ text: t('systemNotifications.success.update', {
162
+ entity: t('webitelUI.filters.presets.preset'),
163
+ }),
164
+ });
165
+
166
+ presetToOverwriteWith.value = null;
167
+ showSaveForm.value = false;
168
+ } finally {
169
+ if (onCompleted) onCompleted();
170
+ }
165
171
  };
166
172
  </script>
167
173
 
@@ -59,29 +59,32 @@ import { useI18n } from 'vue-i18n';
59
59
  import { EnginePresetQuery } from 'webitel-sdk';
60
60
 
61
61
  import type { IFiltersManager } from '../../../filters';
62
- import {AnyFilterConfig} from "../../../filters/modules/filterConfig/classes/FilterConfig";
62
+ import { AnyFilterConfig } from '../../../filters/modules/filterConfig/classes/FilterConfig';
63
63
  import PresetDescriptionField from '../_shared/input-fields/preset-description-field.vue';
64
64
  import PresetNameField from '../_shared/input-fields/preset-name-field.vue';
65
65
  import PresetFiltersPreview from '../_shared/preset-filters-preview.vue';
66
66
 
67
67
  export type SubmitConfig = {
68
- onSuccess?: () => void;
69
- onFailure?: (err: Error) => void;
70
- onCompleted?: () => void;
68
+ onSuccess?: () => void;
69
+ onFailure?: (err: Error) => void;
70
+ onCompleted?: () => void;
71
71
  };
72
72
 
73
73
  const props = defineProps<{
74
- /**
75
- * @description
76
- * is needed here for `.toString()`
77
- */
78
- filtersManager: IFiltersManager;
79
- filterConfigs: AnyFilterConfig[];
74
+ /**
75
+ * @description
76
+ * is needed here for `.toString()`
77
+ */
78
+ filtersManager: IFiltersManager;
79
+ filterConfigs: AnyFilterConfig[];
80
80
  }>();
81
81
 
82
82
  const emit = defineEmits<{
83
- submit: [EnginePresetQuery, SubmitConfig?];
84
- close: [];
83
+ submit: [
84
+ EnginePresetQuery,
85
+ SubmitConfig?,
86
+ ];
87
+ close: [];
85
88
  }>();
86
89
 
87
90
  const { t } = useI18n();
@@ -89,42 +92,44 @@ const { t } = useI18n();
89
92
  const isSaving = ref(false);
90
93
 
91
94
  const presetForm = reactive({
92
- name: '',
93
- description: '',
95
+ name: '',
96
+ description: '',
94
97
  });
95
98
 
96
99
  const v$ = useVuelidate(
97
- computed(() => {
98
- return {
99
- name: {
100
- required,
101
- },
102
- };
103
- }),
104
- presetForm,
105
- { $autoDirty: true },
100
+ computed(() => {
101
+ return {
102
+ name: {
103
+ required,
104
+ },
105
+ };
106
+ }),
107
+ presetForm,
108
+ {
109
+ $autoDirty: true,
110
+ },
106
111
  );
107
112
  v$.value.$touch();
108
113
 
109
114
  const appliedFilters = computed(() => {
110
- return props.filtersManager.getFiltersList();
115
+ return props.filtersManager.getFiltersList();
111
116
  });
112
117
 
113
118
  const save = () => {
114
- isSaving.value = true;
115
-
116
- const preset: EnginePresetQuery = {
117
- ...presetForm,
118
- preset: {
119
- 'filtersManager.toString': props.filtersManager.toString(),
120
- },
121
- };
122
-
123
- emit('submit', preset, {
124
- onCompleted: () => {
125
- isSaving.value = false;
126
- },
127
- });
119
+ isSaving.value = true;
120
+
121
+ const preset: EnginePresetQuery = {
122
+ ...presetForm,
123
+ preset: {
124
+ 'filtersManager.toString': props.filtersManager.toString(),
125
+ },
126
+ };
127
+
128
+ emit('submit', preset, {
129
+ onCompleted: () => {
130
+ isSaving.value = false;
131
+ },
132
+ });
128
133
  };
129
134
  </script>
130
135
 
@@ -8,52 +8,57 @@ import PresetQueryAPI from '../api/PresetQuery';
8
8
  import { headers } from './headers/headers';
9
9
 
10
10
  export const filterPresetsStoreBody = (namespace = 'presets') => {
11
- const presetsNamespace = namespace.endsWith('presets')
12
- ? namespace
13
- : `${namespace}/presets`;
14
-
15
- const presetId = ref(null);
16
-
17
- const setupPresetPersistence = async () => {
18
- const { restore: restorePreset, reset } = usePersistedStorage({
19
- name: 'preset',
20
- value: presetId,
21
- storages: [PersistedStorageType.LocalStorage],
22
- storagePath: presetsNamespace,
23
- onStore: (save, { name }) => {
24
- const value = presetId.value;
25
- if (!value) {
26
- return reset();
27
- }
28
- return save({ name, value });
29
- },
30
- onRestore: async (restore, name) => {
31
- const value = await restore(name);
32
- presetId.value = Number(value);
33
- },
34
- });
35
- await restorePreset();
36
- };
37
-
38
- const tableStore = tableStoreBody<EnginePresetQuery>(presetsNamespace, {
39
- apiModule: PresetQueryAPI,
40
- headers,
41
- disablePersistence: true,
42
- });
43
-
44
- const resetPreset = () => {
45
- presetId.value = null;
46
- };
47
-
48
- return {
49
- ...tableStore,
50
-
51
- presetId,
52
- setupPresetPersistence,
53
- resetPreset,
54
- };
11
+ const presetsNamespace = namespace.endsWith('presets')
12
+ ? namespace
13
+ : `${namespace}/presets`;
14
+
15
+ const presetId = ref(null);
16
+
17
+ const setupPresetPersistence = async () => {
18
+ const { restore: restorePreset, reset } = usePersistedStorage({
19
+ name: 'preset',
20
+ value: presetId,
21
+ storages: [
22
+ PersistedStorageType.LocalStorage,
23
+ ],
24
+ storagePath: presetsNamespace,
25
+ onStore: (save, { name }) => {
26
+ const value = presetId.value;
27
+ if (!value) {
28
+ return reset();
29
+ }
30
+ return save({
31
+ name,
32
+ value,
33
+ });
34
+ },
35
+ onRestore: async (restore, name) => {
36
+ const value = await restore(name);
37
+ presetId.value = Number(value);
38
+ },
39
+ });
40
+ await restorePreset();
41
+ };
42
+
43
+ const tableStore = tableStoreBody<EnginePresetQuery>(presetsNamespace, {
44
+ apiModule: PresetQueryAPI,
45
+ headers,
46
+ disablePersistence: true,
47
+ });
48
+
49
+ const resetPreset = () => {
50
+ presetId.value = null;
51
+ };
52
+
53
+ return {
54
+ ...tableStore,
55
+
56
+ presetId,
57
+ setupPresetPersistence,
58
+ resetPreset,
59
+ };
55
60
  };
56
61
 
57
62
  export const createFilterPresetsStore = (namespace: string) => {
58
- return () => filterPresetsStoreBody(namespace);
63
+ return () => filterPresetsStoreBody(namespace);
59
64
  };
@@ -1,24 +1,24 @@
1
1
  import { WtTableHeader } from 'src/components/wt-table/types/WtTable.d.ts';
2
2
 
3
3
  export const headers: WtTableHeader[] = [
4
- {
5
- value: 'id',
6
- field: 'id',
7
- show: true,
8
- },
9
- {
10
- value: 'name',
11
- field: 'name',
12
- show: true,
13
- },
14
- {
15
- value: 'preset',
16
- field: 'preset',
17
- show: true,
18
- },
19
- {
20
- value: 'description',
21
- field: 'description',
22
- show: true,
23
- },
4
+ {
5
+ value: 'id',
6
+ field: 'id',
7
+ show: true,
8
+ },
9
+ {
10
+ value: 'name',
11
+ field: 'name',
12
+ show: true,
13
+ },
14
+ {
15
+ value: 'preset',
16
+ field: 'preset',
17
+ show: true,
18
+ },
19
+ {
20
+ value: 'description',
21
+ field: 'description',
22
+ show: true,
23
+ },
24
24
  ];
@@ -3,68 +3,68 @@ import { AnyFilterConfig } from '../modules/filterConfig';
3
3
  export type FilterName = string;
4
4
  export type FilterLabel = string;
5
5
  export type FilterValue =
6
- | object
7
- | []
8
- | string
9
- | number
10
- | boolean
11
- | undefined
12
- | null;
6
+ | object
7
+ | []
8
+ | string
9
+ | number
10
+ | boolean
11
+ | undefined
12
+ | null;
13
13
 
14
14
  /**
15
15
  * represents user-input data, that should be (re)stored
16
16
  */
17
17
  export interface FilterData {
18
- value: FilterValue;
19
- label?: FilterLabel;
18
+ value: FilterValue;
19
+ label?: FilterLabel;
20
20
  }
21
21
 
22
22
  export interface FilterInitParams extends FilterData {
23
- name: FilterName;
23
+ name: FilterName;
24
24
  }
25
25
 
26
26
  export interface FilterEnumOption {
27
- locale: string;
28
- value: FilterValue;
27
+ locale: string;
28
+ value: FilterValue;
29
29
  }
30
30
 
31
31
  export interface FilterInstanceConfig {
32
- /**
33
- * Perform simple type conversion on store/restore,
34
- * without need to provide custom store/restore functions
35
- */
36
- storableType?: string;
37
- /**
38
- * list of persistence storages that should be used for this filter
39
- */
40
- storage?: string[];
32
+ /**
33
+ * Perform simple type conversion on store/restore,
34
+ * without need to provide custom store/restore functions
35
+ */
36
+ storableType?: string;
37
+ /**
38
+ * list of persistence storages that should be used for this filter
39
+ */
40
+ storage?: string[];
41
41
  }
42
42
 
43
43
  export interface IFilter {
44
- name: FilterName;
45
- value: FilterValue;
46
- label?: FilterLabel;
47
- set: (data: FilterData) => IFilter;
44
+ name: FilterName;
45
+ value: FilterValue;
46
+ label?: FilterLabel;
47
+ set: (data: FilterData) => IFilter;
48
48
  }
49
49
 
50
50
  export class Filter implements IFilter {
51
- readonly name: FilterName;
52
- label: FilterLabel;
53
- value: FilterValue;
51
+ readonly name: FilterName;
52
+ label: FilterLabel;
53
+ value: FilterValue;
54
54
 
55
- constructor(
56
- { name, value, label }: FilterInitParams,
57
- public payload: object | undefined,
58
- public config: FilterInstanceConfig,
59
- ) {
60
- this.name = name;
61
- this.value = value;
62
- this.label = label;
63
- }
55
+ constructor(
56
+ { name, value, label }: FilterInitParams,
57
+ public payload: object | undefined,
58
+ public config: FilterInstanceConfig,
59
+ ) {
60
+ this.name = name;
61
+ this.value = value;
62
+ this.label = label;
63
+ }
64
64
 
65
- set({ value, label }: { value?: FilterValue; label?: FilterLabel }): IFilter {
66
- this.value = value;
67
- this.label = label;
68
- return this;
69
- }
65
+ set({ value, label }: { value?: FilterValue; label?: FilterLabel }): IFilter {
66
+ this.value = value;
67
+ this.label = label;
68
+ return this;
69
+ }
70
70
  }