@webitel/ui-datalist 1.1.45 → 1.1.47
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/modules/_shared/createDatalistStore.ts +5 -1
- package/src/modules/card/composables/useCardComponent.ts +0 -1
- package/src/modules/card/composables/useCardValidation.ts +1 -1
- package/src/modules/card/stores/createCardStore.ts +7 -1
- package/src/modules/filter-presets/api/PresetQuery.ts +1 -1
- package/src/modules/filter-presets/components/_shared/input-fields/preset-name-field.vue +1 -2
- package/src/modules/filter-presets/components/apply-preset/apply-preset-action.vue +7 -6
- package/src/modules/filter-presets/components/save-preset/save-preset-action.vue +5 -4
- package/src/modules/filter-presets/components/save-preset/save-preset-popup.vue +0 -4
- package/src/modules/filter-presets/stores/createFilterPresetsStore.ts +7 -1
- package/src/modules/filter-presets/stores/headers/headers.ts +2 -2
- package/src/modules/filters/classes/FiltersManager.ts +5 -2
- package/src/modules/filters/components/config/dynamic-view/dynamic-filter-config-form.vue +21 -2
- package/src/modules/filters/components/config/dynamic-view/dynamic-filter-config-view.vue +1 -1
- package/src/modules/filters/components/dynamic-filter-add-action.vue +4 -2
- package/src/modules/filters/components/preview/dynamic-filter-preview.vue +11 -8
- package/src/modules/filters/components/search-bar/dynamic-filter-search.vue +3 -1
- package/src/modules/filters/components/table-filters-panel.vue +2 -2
- package/src/modules/filters/composables/useFilterConfigsToolkit.ts +7 -2
- package/src/modules/filters/createTableFiltersStore.ts +3 -2
- package/src/modules/filters/modules/filterConfig/classes/FilterConfig.ts +39 -8
- package/src/modules/filters/modules/filterConfig/classes/createFilterConfig.ts +1 -1
- package/src/modules/filters/modules/filterConfig/components/_custom/filterConfig.ts +7 -8
- package/src/modules/filters/modules/filterConfig/components/_custom/type-extension-filter-value-field.vue +27 -10
- package/src/modules/filters/modules/filterConfig/components/_custom/type-extension-filter-value-preview.vue +21 -5
- package/src/modules/filters/modules/filterConfig/components/_shared/date-time-filter/date-time-options/date-time-options-filter-value-field.vue +59 -3
- package/src/modules/filters/modules/filterConfig/components/_shared/date-time-filter/date-time-options/date-time-options-filter-value-preview.vue +13 -7
- package/src/modules/filters/modules/filterConfig/components/_shared/durations/duration-filter-value-field.vue +16 -3
- package/src/modules/filters/modules/filterConfig/components/_shared/lookup-filter-preview/lookup-filter-value-preview.vue +14 -6
- package/src/modules/filters/modules/filterConfig/components/case-actual-reaction-time/case-actual-reaction-time-filter-value-preview.vue +4 -1
- package/src/modules/filters/modules/filterConfig/components/case-actual-resolution-time/case-actual-resolution-time-filter-value-preview.vue +4 -1
- package/src/modules/filters/modules/filterConfig/components/case-assignee/case-assignee-filter-value-field.vue +16 -3
- package/src/modules/filters/modules/filterConfig/components/case-assignee/case-assignee-filter-value-preview.vue +7 -3
- package/src/modules/filters/modules/filterConfig/components/case-assignee/filterConfig.ts +9 -5
- package/src/modules/filters/modules/filterConfig/components/case-close-reason-groups/case-close-reason-groups-filter-value-field.vue +16 -3
- package/src/modules/filters/modules/filterConfig/components/case-close-reason-groups/case-close-reason-groups-filter-value-preview.vue +2 -2
- package/src/modules/filters/modules/filterConfig/components/case-priority/case-priority-filter-value-preview.vue +2 -2
- package/src/modules/filters/modules/filterConfig/components/case-reaction-time/case-reaction-time-filter-value-preview.vue +4 -1
- package/src/modules/filters/modules/filterConfig/components/case-resolution-time/case-resolution-time-filter-value-preview.vue +4 -1
- package/src/modules/filters/modules/filterConfig/components/case-service/case-service-filter-value-field.vue +1 -1
- package/src/modules/filters/modules/filterConfig/components/case-service/case-service-filter-value-preview.vue +2 -2
- package/src/modules/filters/modules/filterConfig/components/case-sla/case-sla-filter-value-preview.vue +2 -2
- package/src/modules/filters/modules/filterConfig/components/case-sla-condition/case-sla-condition-filter-value-field.vue +16 -3
- package/src/modules/filters/modules/filterConfig/components/case-sla-condition/case-sla-condition-filter-value-preview.vue +2 -2
- package/src/modules/filters/modules/filterConfig/components/case-source/case-source-filter-value-preview.vue +2 -2
- package/src/modules/filters/modules/filterConfig/components/case-status/case-status-filter-value-field.vue +16 -3
- package/src/modules/filters/modules/filterConfig/components/case-status/case-status-filter-value-preview.vue +2 -2
- package/src/modules/filters/modules/filterConfig/components/contact-group/contact-group-filter-value-field.vue +19 -6
- package/src/modules/filters/modules/filterConfig/components/contact-group/contact-group-filter-value-preview.vue +7 -3
- package/src/modules/filters/modules/filterConfig/components/contact-group/index.ts +6 -3
- package/src/modules/filters/modules/filterConfig/components/contact-label/index.ts +14 -5
- package/src/modules/filters/modules/filterConfig/components/has-attachment/has-attachment-filter-value-field.vue +1 -1
- package/src/modules/filters/modules/filterConfig/components/index.ts +58 -57
- package/src/modules/filters/modules/filterConfig/components/rating/rating-from-to-filter-value-field.vue +16 -3
- package/src/modules/filters/modules/filterConfig/components/rating/rating-from-to-filter-value-preview.vue +4 -1
- package/src/modules/filters/modules/filterConfig/components/score/score-from-to-filter-value-field.vue +16 -3
- package/src/modules/filters/modules/filterConfig/components/score/score-from-to-filter-value-preview.vue +4 -1
- package/src/modules/filters/modules/filterConfig/components/tag/tag-filter-value-preview.vue +1 -1
- package/src/modules/filters/modules/filterConfig/components/utilization-progress/utilization-progress-filter-value-preview.vue +3 -1
- package/src/modules/filters/modules/filterConfig/composables/useQueueTypeOptions.ts +2 -2
- package/src/modules/filters/modules/filterConfig/types/DynamicFilterPreviewComponent.ts +2 -2
- package/src/modules/headers/createTableHeadersStore.ts +9 -6
- package/src/modules/pagination/createTablePaginationStore.ts +2 -1
- package/src/modules/table/createTableStore.store.ts +3 -12
- package/src/modules/types/createDatalistStore.types.ts +1 -1
- package/src/modules/types/tableStore.types.ts +12 -2
- package/types/modules/card/composables/useCardComponent.d.ts +3 -3
- package/types/modules/card/composables/useCardValidation.d.ts +1 -1
- package/types/modules/card/composables/useNestedCardComponent.d.ts +3 -3
- package/types/modules/card/stores/createCardStore.d.ts +5 -1
- package/types/modules/filter-presets/api/PresetQuery.d.ts +2 -2
- package/types/modules/filter-presets/components/_shared/input-fields/preset-name-field.vue.d.ts +1 -2
- package/types/modules/filter-presets/components/apply-preset/apply-preset-action.vue.d.ts +2 -2
- package/types/modules/filter-presets/stores/createFilterPresetsStore.d.ts +90 -16
- package/types/modules/filter-presets/stores/headers/headers.d.ts +2 -2
- package/types/modules/filters/classes/FiltersManager.d.ts +7 -2
- package/types/modules/filters/components/preview/dynamic-filter-preview.vue.d.ts +2 -3
- package/types/modules/filters/components/table-filters-panel.vue.d.ts +2 -2
- package/types/modules/filters/composables/useFilterConfigsToolkit.d.ts +6 -2
- package/types/modules/filters/createTableFiltersStore.d.ts +17 -6
- package/types/modules/filters/modules/filterConfig/classes/FilterConfig.d.ts +33 -8
- package/types/modules/filters/modules/filterConfig/classes/createFilterConfig.d.ts +1 -1
- package/types/modules/filters/modules/filterConfig/components/_custom/filterConfig.d.ts +3 -3
- package/types/modules/filters/modules/filterConfig/components/_shared/date-time-filter/date-time-options/date-time-options-filter-value-field.vue.d.ts +2 -0
- package/types/modules/filters/modules/filterConfig/components/_shared/lookup-filter-preview/lookup-filter-value-preview.vue.d.ts +1 -4
- package/types/modules/filters/modules/filterConfig/components/case-actual-reaction-time/case-actual-reaction-time-filter-value-preview.vue.d.ts +4 -1
- package/types/modules/filters/modules/filterConfig/components/case-actual-resolution-time/case-actual-resolution-time-filter-value-preview.vue.d.ts +4 -1
- package/types/modules/filters/modules/filterConfig/components/case-assignee/case-assignee-filter-value-preview.vue.d.ts +4 -2
- package/types/modules/filters/modules/filterConfig/components/case-assignee/filterConfig.d.ts +10 -5
- package/types/modules/filters/modules/filterConfig/components/case-close-reason-groups/case-close-reason-groups-filter-value-preview.vue.d.ts +2 -2
- package/types/modules/filters/modules/filterConfig/components/case-priority/case-priority-filter-value-preview.vue.d.ts +2 -2
- package/types/modules/filters/modules/filterConfig/components/case-reaction-time/case-reaction-time-filter-value-preview.vue.d.ts +4 -1
- package/types/modules/filters/modules/filterConfig/components/case-resolution-time/case-resolution-time-filter-value-preview.vue.d.ts +4 -1
- package/types/modules/filters/modules/filterConfig/components/case-service/case-service-filter-value-preview.vue.d.ts +2 -2
- package/types/modules/filters/modules/filterConfig/components/case-sla/case-sla-filter-value-preview.vue.d.ts +2 -2
- package/types/modules/filters/modules/filterConfig/components/case-sla-condition/case-sla-condition-filter-value-preview.vue.d.ts +2 -2
- package/types/modules/filters/modules/filterConfig/components/case-source/case-source-filter-value-preview.vue.d.ts +2 -2
- package/types/modules/filters/modules/filterConfig/components/case-status/case-status-filter-value-preview.vue.d.ts +2 -2
- package/types/modules/filters/modules/filterConfig/components/contact-group/contact-group-filter-value-field.vue.d.ts +2 -2
- package/types/modules/filters/modules/filterConfig/components/contact-group/contact-group-filter-value-preview.vue.d.ts +4 -2
- package/types/modules/filters/modules/filterConfig/components/contact-group/index.d.ts +19 -14
- package/types/modules/filters/modules/filterConfig/components/contact-label/index.d.ts +4 -2
- package/types/modules/filters/modules/filterConfig/components/has-attachment/has-attachment-filter-value-field.vue.d.ts +3 -3
- package/types/modules/filters/modules/filterConfig/components/index.d.ts +50 -39
- package/types/modules/filters/modules/filterConfig/components/rating/rating-from-to-filter-value-preview.vue.d.ts +4 -1
- package/types/modules/filters/modules/filterConfig/components/score/score-from-to-filter-value-preview.vue.d.ts +4 -1
- package/types/modules/filters/modules/filterConfig/components/utilization-progress/utilization-progress-filter-value-preview.vue.d.ts +3 -1
- package/types/modules/filters/modules/filterConfig/types/DynamicFilterPreviewComponent.d.ts +2 -2
- package/types/modules/headers/createTableHeadersStore.d.ts +66 -12
- package/types/modules/pagination/createTablePaginationStore.d.ts +2 -1
- package/types/modules/table/createTableStore.store.d.ts +93 -24
- package/types/modules/types/createDatalistStore.types.d.ts +1 -1
- package/types/modules/types/tableStore.types.d.ts +11 -2
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
:show-clear="false"
|
|
5
5
|
:label="t('cases.status')"
|
|
6
6
|
:search-method="caseStatusesSearchMethod"
|
|
7
|
-
:v="
|
|
7
|
+
:v="vSelection"
|
|
8
8
|
:model-value="model?.selection"
|
|
9
9
|
data-key="id"
|
|
10
10
|
option-value="id"
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
:disabled="!model.selection"
|
|
18
18
|
:label="t('webitelUI.filters.filterValue')"
|
|
19
19
|
:search-method="getConditionList"
|
|
20
|
-
:v="
|
|
20
|
+
:v="vConditions"
|
|
21
21
|
v-model:model-value="model.conditions"
|
|
22
22
|
data-key="id"
|
|
23
23
|
option-value="id"
|
|
@@ -66,7 +66,9 @@ const initModel = () => {
|
|
|
66
66
|
};
|
|
67
67
|
onMounted(() => initModel());
|
|
68
68
|
|
|
69
|
-
const v$ = useVuelidate
|
|
69
|
+
const v$ = useVuelidate<{
|
|
70
|
+
model: ModelValue;
|
|
71
|
+
}>(
|
|
70
72
|
computed(() => ({
|
|
71
73
|
model: {
|
|
72
74
|
selection: {
|
|
@@ -87,6 +89,17 @@ const v$ = useVuelidate(
|
|
|
87
89
|
|
|
88
90
|
v$.value.$touch();
|
|
89
91
|
|
|
92
|
+
const vSelection = computed(() => {
|
|
93
|
+
const modelValidation = v$.value.model;
|
|
94
|
+
if (!modelValidation) return undefined;
|
|
95
|
+
return modelValidation.selection;
|
|
96
|
+
});
|
|
97
|
+
const vConditions = computed(() => {
|
|
98
|
+
const modelValidation = v$.value.model;
|
|
99
|
+
if (!modelValidation) return undefined;
|
|
100
|
+
return modelValidation.conditions;
|
|
101
|
+
});
|
|
102
|
+
|
|
90
103
|
const emit = defineEmits<{
|
|
91
104
|
'update:invalid': [
|
|
92
105
|
boolean,
|
|
@@ -3,12 +3,12 @@
|
|
|
3
3
|
</template>
|
|
4
4
|
|
|
5
5
|
<script lang="ts" setup>
|
|
6
|
-
import type {
|
|
6
|
+
import type { WebitelCasesStatus } from 'webitel-sdk';
|
|
7
7
|
|
|
8
8
|
import LookupFilterValuePreview from '../_shared/lookup-filter-preview/lookup-filter-value-preview.vue';
|
|
9
9
|
|
|
10
10
|
const props = defineProps<{
|
|
11
|
-
value:
|
|
11
|
+
value: WebitelCasesStatus[];
|
|
12
12
|
}>();
|
|
13
13
|
</script>
|
|
14
14
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
<wt-multi-select
|
|
3
3
|
:label="labelValue"
|
|
4
4
|
:search-method="props.filterConfig.searchRecords"
|
|
5
|
-
:v="!disableValidation &&
|
|
5
|
+
:v="!disableValidation && vList"
|
|
6
6
|
:model-value="model?.list"
|
|
7
7
|
data-key="id"
|
|
8
8
|
option-value="id"
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
v-if="!props.filterConfig?.hideUnassigned"
|
|
14
14
|
:label="t('reusable.showUnassigned')"
|
|
15
15
|
:selected="model?.unassigned"
|
|
16
|
-
:v="!disableValidation &&
|
|
16
|
+
:v="!disableValidation && vUnassigned"
|
|
17
17
|
@update:selected="model.unassigned = $event"
|
|
18
18
|
/>
|
|
19
19
|
</template>
|
|
@@ -34,8 +34,8 @@ const props = defineProps<{
|
|
|
34
34
|
}>();
|
|
35
35
|
|
|
36
36
|
type ModelValue = {
|
|
37
|
-
list
|
|
38
|
-
unassigned
|
|
37
|
+
list?: string[];
|
|
38
|
+
unassigned?: boolean | null;
|
|
39
39
|
};
|
|
40
40
|
|
|
41
41
|
const model = defineModel<ModelValue>();
|
|
@@ -61,7 +61,9 @@ const changeListValue = (event) => {
|
|
|
61
61
|
list: event,
|
|
62
62
|
};
|
|
63
63
|
};
|
|
64
|
-
const v$ = useVuelidate
|
|
64
|
+
const v$ = useVuelidate<{
|
|
65
|
+
model: ModelValue;
|
|
66
|
+
}>(
|
|
65
67
|
computed(() => ({
|
|
66
68
|
model: {
|
|
67
69
|
list: {
|
|
@@ -69,7 +71,7 @@ const v$ = useVuelidate(
|
|
|
69
71
|
},
|
|
70
72
|
unassigned: {
|
|
71
73
|
required: requiredIf(
|
|
72
|
-
() => props.filterConfig?.hideUnassigned && !model.value.list
|
|
74
|
+
() => props.filterConfig?.hideUnassigned && !model.value.list?.length,
|
|
73
75
|
),
|
|
74
76
|
},
|
|
75
77
|
},
|
|
@@ -82,6 +84,17 @@ const v$ = useVuelidate(
|
|
|
82
84
|
},
|
|
83
85
|
);
|
|
84
86
|
|
|
87
|
+
const vList = computed(() => {
|
|
88
|
+
const modelValidation = v$.value.model;
|
|
89
|
+
if (!modelValidation) return undefined;
|
|
90
|
+
return modelValidation.list;
|
|
91
|
+
});
|
|
92
|
+
const vUnassigned = computed(() => {
|
|
93
|
+
const modelValidation = v$.value.model;
|
|
94
|
+
if (!modelValidation) return undefined;
|
|
95
|
+
return modelValidation.unassigned;
|
|
96
|
+
});
|
|
97
|
+
|
|
85
98
|
const initModel = () => {
|
|
86
99
|
if (!model.value) {
|
|
87
100
|
model.value = {
|
|
@@ -5,20 +5,24 @@
|
|
|
5
5
|
<script lang="ts" setup>
|
|
6
6
|
import { computed } from 'vue';
|
|
7
7
|
import { useI18n } from 'vue-i18n';
|
|
8
|
-
import { WebitelContactsContact } from 'webitel-sdk';
|
|
9
8
|
|
|
10
9
|
import { IFilter } from '../../../../classes/Filter';
|
|
11
10
|
import LookupFilterValuePreview from '../_shared/lookup-filter-preview/lookup-filter-value-preview.vue';
|
|
12
11
|
|
|
13
12
|
const props = defineProps<{
|
|
14
|
-
value:
|
|
13
|
+
value: Array<{
|
|
14
|
+
id?: string | number;
|
|
15
|
+
name?: string;
|
|
16
|
+
}>;
|
|
15
17
|
filter: IFilter;
|
|
16
18
|
}>();
|
|
17
19
|
|
|
18
20
|
const { t } = useI18n();
|
|
19
21
|
|
|
20
22
|
const rawValue = computed(() => {
|
|
21
|
-
return props.filter.value
|
|
23
|
+
return props.filter.value as {
|
|
24
|
+
unassigned?: boolean;
|
|
25
|
+
};
|
|
22
26
|
});
|
|
23
27
|
|
|
24
28
|
const shownValue = computed(() => {
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import { contactGroups } from '@webitel/ui-sdk/api/clients/index';
|
|
2
2
|
|
|
3
3
|
import {
|
|
4
|
+
type FilterConfigBaseParams,
|
|
5
|
+
type FilterConfigSearchFilterContext,
|
|
6
|
+
type FilterConfigSearchRequestParams,
|
|
4
7
|
type IWtSysTypeFilterConfig,
|
|
5
8
|
WtSysTypeFilterConfig,
|
|
6
9
|
} from '../../classes/FilterConfig';
|
|
@@ -15,7 +18,7 @@ class ContactGroupFilterConfig extends WtSysTypeFilterConfig {
|
|
|
15
18
|
hideUnassigned?: boolean;
|
|
16
19
|
|
|
17
20
|
constructor(
|
|
18
|
-
params: {
|
|
21
|
+
params: FilterConfigBaseParams & {
|
|
19
22
|
hideUnassigned?: boolean;
|
|
20
23
|
} = {},
|
|
21
24
|
) {
|
|
@@ -26,8 +29,8 @@ class ContactGroupFilterConfig extends WtSysTypeFilterConfig {
|
|
|
26
29
|
}
|
|
27
30
|
|
|
28
31
|
searchRecords(
|
|
29
|
-
params:
|
|
30
|
-
{ filterValue } = {},
|
|
32
|
+
params: FilterConfigSearchRequestParams,
|
|
33
|
+
{ filterValue }: FilterConfigSearchFilterContext = {},
|
|
31
34
|
): Promise<{
|
|
32
35
|
items: unknown[];
|
|
33
36
|
next?: boolean;
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import { labels as contactLabels } from '@webitel/ui-sdk/api/clients/index';
|
|
2
2
|
|
|
3
|
-
import {
|
|
3
|
+
import {
|
|
4
|
+
type FilterConfigSearchFilterContext,
|
|
5
|
+
type FilterConfigSearchRequestParams,
|
|
6
|
+
WtSysTypeFilterConfig,
|
|
7
|
+
} from '../../classes/FilterConfig';
|
|
4
8
|
import { FilterOption } from '../../enums/FilterOption';
|
|
5
9
|
import ContactLabelFilterValueField from './contact-label-filter-value-field.vue';
|
|
6
10
|
import ContactLabelFilterValuePreview from './contact-label-filter-value-preview.vue';
|
|
@@ -11,8 +15,13 @@ class ContactLabelFilterConfig extends WtSysTypeFilterConfig {
|
|
|
11
15
|
valuePreviewComponent = ContactLabelFilterValuePreview;
|
|
12
16
|
|
|
13
17
|
searchRecords(
|
|
14
|
-
params:
|
|
15
|
-
{
|
|
18
|
+
params: FilterConfigSearchRequestParams,
|
|
19
|
+
{
|
|
20
|
+
filterValue,
|
|
21
|
+
}: Omit<FilterConfigSearchFilterContext, 'filterValue'> & {
|
|
22
|
+
/* label filter stores the selected labels list itself */
|
|
23
|
+
filterValue?: unknown[];
|
|
24
|
+
} = {},
|
|
16
25
|
): Promise<{
|
|
17
26
|
items: unknown[];
|
|
18
27
|
next?: boolean;
|
|
@@ -22,9 +31,9 @@ class ContactLabelFilterConfig extends WtSysTypeFilterConfig {
|
|
|
22
31
|
// For label preview component no need to call the API, so we return filterValue back to the searchRecords method and display it
|
|
23
32
|
|
|
24
33
|
if (filterValue)
|
|
25
|
-
return {
|
|
34
|
+
return Promise.resolve({
|
|
26
35
|
items: filterValue,
|
|
27
|
-
};
|
|
36
|
+
});
|
|
28
37
|
|
|
29
38
|
return contactLabels.getLookup(params);
|
|
30
39
|
}
|
|
@@ -13,7 +13,7 @@ import { computed, watch } from 'vue';
|
|
|
13
13
|
|
|
14
14
|
import HasOptionFilterValueField from '../_shared/has-options/has-option-filter-value-field.vue';
|
|
15
15
|
|
|
16
|
-
const model = defineModel<
|
|
16
|
+
const model = defineModel<boolean | null>();
|
|
17
17
|
|
|
18
18
|
const v$ = useVuelidate(
|
|
19
19
|
computed(() => ({
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { Component } from 'vue';
|
|
2
2
|
|
|
3
|
-
import {
|
|
3
|
+
import type { FilterConfigSearchMethodParams } from '../classes/FilterConfig';
|
|
4
|
+
import { FilterOption } from '../enums/FilterOption';
|
|
4
5
|
import DateTimeOptionsFilterValueField from './_shared/date-time-filter/date-time-options/date-time-options-filter-value-field.vue';
|
|
5
6
|
import DateTimeOptionsFilterValuePreview from './_shared/date-time-filter/date-time-options/date-time-options-filter-value-preview.vue';
|
|
6
7
|
import AgentFilter from './agent/agent-filter-value-field.vue';
|
|
@@ -222,60 +223,59 @@ export {
|
|
|
222
223
|
VariableFilterPreview,
|
|
223
224
|
};
|
|
224
225
|
|
|
225
|
-
export const FilterOptionToValueComponentMap: Record<
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
};
|
|
226
|
+
export const FilterOptionToValueComponentMap: Record<FilterOption, Component> =
|
|
227
|
+
{
|
|
228
|
+
[FilterOption.Agent]: AgentFilter,
|
|
229
|
+
[FilterOption.AgentStatus]: AgentStatusFilter,
|
|
230
|
+
[FilterOption.UtilizationProgress]: UtilizationProgressFilter,
|
|
231
|
+
[FilterOption.Skill]: SkillFilter,
|
|
232
|
+
[FilterOption.Region]: RegionFilter,
|
|
233
|
+
[FilterOption.Auditor]: AuditorFilter,
|
|
234
|
+
[FilterOption.Supervisor]: SupervisorFilter,
|
|
235
|
+
[FilterOption.AmdResult]: AmdResultFilter,
|
|
236
|
+
[FilterOption.Contact]: ContactFilter,
|
|
237
|
+
[FilterOption.CallDirection]: CallDirectionFilterValueField,
|
|
238
|
+
[FilterOption.Rated]: HasRatingFilterValueField,
|
|
239
|
+
[FilterOption.Gateway]: GatewayFilter,
|
|
240
|
+
[FilterOption.Grantee]: GranteeFilter,
|
|
241
|
+
[FilterOption.HangupCause]: HangupCauseFilterValueField,
|
|
242
|
+
[FilterOption.Queue]: QueueFilter,
|
|
243
|
+
[FilterOption.QueueType]: QueueTypeFilter,
|
|
244
|
+
[FilterOption.QueuePeriod]: QueuePeriodFilter,
|
|
245
|
+
[FilterOption.RatedBy]: RatedByFilter,
|
|
246
|
+
[FilterOption.HasFile]: HasFileFilter,
|
|
247
|
+
[FilterOption.Score]: ScoreFilter,
|
|
248
|
+
[FilterOption.Tag]: TagFilter,
|
|
249
|
+
[FilterOption.TalkDuration]: TalkDurationFilter,
|
|
250
|
+
[FilterOption.Team]: TeamFilter,
|
|
251
|
+
[FilterOption.TotalDuration]: TotalDurationFilter,
|
|
252
|
+
[FilterOption.HasTranscription]: HasTranscriptionFilter,
|
|
253
|
+
[FilterOption.HasUser]: HasUserFilter,
|
|
254
|
+
[FilterOption.User]: UserFilter,
|
|
255
|
+
[FilterOption.Variable]: VariableFilter,
|
|
256
|
+
[FilterOption.CreatedAt]: DateTimeOptionsFilterValueField,
|
|
257
|
+
[FilterOption.CaseStatus]: CaseStatusFilterValueField,
|
|
258
|
+
[FilterOption.CaseSource]: CaseSourceFilterValueField,
|
|
259
|
+
[FilterOption.CaseService]: CaseServiceFilterValueField,
|
|
260
|
+
[FilterOption.CaseAuthor]: CaseAuthorFilterValueField,
|
|
261
|
+
[FilterOption.CaseReporter]: CaseReporterFilterValueField,
|
|
262
|
+
[FilterOption.CaseImpacted]: CaseImpactedFilterValueField,
|
|
263
|
+
[FilterOption.CasePriority]: CasePriorityFilterValueField,
|
|
264
|
+
[FilterOption.CaseCloseReasonGroups]: CaseCloseReasonGroupsFilterValueField,
|
|
265
|
+
[FilterOption.Rating]: RatingFromToFilter,
|
|
266
|
+
[FilterOption.CaseSla]: CaseSlaFilterValueField,
|
|
267
|
+
[FilterOption.CaseSlaCondition]: CaseSlaConditionFilterValueField,
|
|
268
|
+
[FilterOption.CaseReactionTime]: CaseReactionTimeFilterValueField,
|
|
269
|
+
[FilterOption.CaseResolutionTime]: CaseResolutionTimeFilterValueField,
|
|
270
|
+
[FilterOption.CaseActualReactionTime]:
|
|
271
|
+
CaseActualReactionTimeFilterValueField,
|
|
272
|
+
[FilterOption.CaseActualResolutionTime]:
|
|
273
|
+
CaseActualResolutionTimeFilterValueField,
|
|
274
|
+
[FilterOption.HasAttachment]: HasAttachmentFilter,
|
|
275
|
+
};
|
|
276
276
|
|
|
277
277
|
export const FilterOptionToPreviewComponentMap: Record<
|
|
278
|
-
|
|
278
|
+
FilterOption,
|
|
279
279
|
Component
|
|
280
280
|
> = {
|
|
281
281
|
[FilterOption.CreatedAt]: DateTimeOptionsFilterValuePreview,
|
|
@@ -328,10 +328,11 @@ export const FilterOptionToPreviewComponentMap: Record<
|
|
|
328
328
|
};
|
|
329
329
|
|
|
330
330
|
export const FilterOptionToPreviewApiSearchMethodMap: Record<
|
|
331
|
-
|
|
332
|
-
(
|
|
333
|
-
items;
|
|
334
|
-
|
|
331
|
+
FilterOption,
|
|
332
|
+
(...params: FilterConfigSearchMethodParams) => Promise<{
|
|
333
|
+
items: unknown[];
|
|
334
|
+
next?: boolean;
|
|
335
|
+
}>
|
|
335
336
|
> = {
|
|
336
337
|
[FilterOption.Agent]: agentSearchMethod,
|
|
337
338
|
[FilterOption.Gateway]: gatewaySearchMethod,
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
v-if="model"
|
|
5
5
|
:label="`${t('reusable.from')}:`"
|
|
6
6
|
:placeholder="t('webitelUI.filters.filterValue')"
|
|
7
|
-
:v="
|
|
7
|
+
:v="vFrom"
|
|
8
8
|
:model-value="model.from"
|
|
9
9
|
class="rating-from-to-filter-value-field__input"
|
|
10
10
|
@update:model-value="handleInput('from', $event)"
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
v-if="model"
|
|
15
15
|
:label="`${t('reusable.to')}:`"
|
|
16
16
|
:placeholder="t('webitelUI.filters.filterValue')"
|
|
17
|
-
:v="
|
|
17
|
+
:v="vTo"
|
|
18
18
|
:model-value="model.to"
|
|
19
19
|
class="rating-from-to-filter-value-field__input"
|
|
20
20
|
@update:model-value="handleInput('to', $event)"
|
|
@@ -48,7 +48,9 @@ const emit = defineEmits<{
|
|
|
48
48
|
|
|
49
49
|
const { t } = useI18n();
|
|
50
50
|
|
|
51
|
-
const v$ = useVuelidate
|
|
51
|
+
const v$ = useVuelidate<{
|
|
52
|
+
model: ModelValue;
|
|
53
|
+
}>(
|
|
52
54
|
computed(() => ({
|
|
53
55
|
model: {
|
|
54
56
|
from: {
|
|
@@ -73,6 +75,17 @@ const v$ = useVuelidate(
|
|
|
73
75
|
);
|
|
74
76
|
v$.value.$touch();
|
|
75
77
|
|
|
78
|
+
const vFrom = computed(() => {
|
|
79
|
+
const modelValidation = v$.value.model;
|
|
80
|
+
if (!modelValidation) return undefined;
|
|
81
|
+
return modelValidation.from;
|
|
82
|
+
});
|
|
83
|
+
const vTo = computed(() => {
|
|
84
|
+
const modelValidation = v$.value.model;
|
|
85
|
+
if (!modelValidation) return undefined;
|
|
86
|
+
return modelValidation.to;
|
|
87
|
+
});
|
|
88
|
+
|
|
76
89
|
const handleInput = (key: keyof ModelValue, value: number) => {
|
|
77
90
|
const newValue = {
|
|
78
91
|
...model.value,
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
:model-value="model.from"
|
|
6
6
|
:max="props.numberMax"
|
|
7
7
|
:min="0"
|
|
8
|
-
:v="
|
|
8
|
+
:v="vFrom"
|
|
9
9
|
:label="`${t('reusable.from')}:`"
|
|
10
10
|
:placeholder="t('webitelUI.filters.filterValue')"
|
|
11
11
|
class="score-from-to-filter-value-field__input"
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
:model-value="model.to"
|
|
19
19
|
:max="props.numberMax"
|
|
20
20
|
:min="0"
|
|
21
|
-
:v="
|
|
21
|
+
:v="vTo"
|
|
22
22
|
:label="`${t('reusable.to')}:`"
|
|
23
23
|
:placeholder="t('webitelUI.filters.filterValue')"
|
|
24
24
|
class="score-from-to-filter-value-field__input"
|
|
@@ -63,7 +63,9 @@ const emit = defineEmits<{
|
|
|
63
63
|
|
|
64
64
|
const { t } = useI18n();
|
|
65
65
|
|
|
66
|
-
const v$ = useVuelidate
|
|
66
|
+
const v$ = useVuelidate<{
|
|
67
|
+
model: ModelValue;
|
|
68
|
+
}>(
|
|
67
69
|
computed(() => ({
|
|
68
70
|
model: {
|
|
69
71
|
from: {
|
|
@@ -83,6 +85,17 @@ const v$ = useVuelidate(
|
|
|
83
85
|
);
|
|
84
86
|
v$.value.$touch();
|
|
85
87
|
|
|
88
|
+
const vFrom = computed(() => {
|
|
89
|
+
const modelValidation = v$.value.model;
|
|
90
|
+
if (!modelValidation) return undefined;
|
|
91
|
+
return modelValidation.from;
|
|
92
|
+
});
|
|
93
|
+
const vTo = computed(() => {
|
|
94
|
+
const modelValidation = v$.value.model;
|
|
95
|
+
if (!modelValidation) return undefined;
|
|
96
|
+
return modelValidation.to;
|
|
97
|
+
});
|
|
98
|
+
|
|
86
99
|
const handleInput = (key: keyof ModelValue, value: number) => {
|
|
87
100
|
const newValue = {
|
|
88
101
|
...model.value,
|
package/src/modules/filters/modules/filterConfig/components/tag/tag-filter-value-preview.vue
CHANGED
|
@@ -24,7 +24,7 @@ const { t } = useI18n();
|
|
|
24
24
|
const tags = computed(() => {
|
|
25
25
|
const tagLocaleMap = CallHistoryTagFilterOptions.reduce(
|
|
26
26
|
(acc, option) => {
|
|
27
|
-
acc[option.value] = option.locale;
|
|
27
|
+
acc[String(option.value)] = option.locale;
|
|
28
28
|
return acc;
|
|
29
29
|
},
|
|
30
30
|
{} as Record<string, string>,
|
|
@@ -5,11 +5,11 @@ import { useI18n } from 'vue-i18n';
|
|
|
5
5
|
export function useQueueTypeOptions() {
|
|
6
6
|
const { t } = useI18n();
|
|
7
7
|
|
|
8
|
-
const mapQueueTypeToLabel = (value: string) =>
|
|
8
|
+
const mapQueueTypeToLabel = (value: string | number) =>
|
|
9
9
|
t(`objects.queue.type.${value}`);
|
|
10
10
|
|
|
11
11
|
const options = computed(() =>
|
|
12
|
-
Object.entries(QueueType).map(([
|
|
12
|
+
Object.entries(QueueType).map(([, value]) => ({
|
|
13
13
|
value,
|
|
14
14
|
label: mapQueueTypeToLabel(value),
|
|
15
15
|
})),
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { IFilter } from '../../../classes/Filter';
|
|
2
|
-
import type {
|
|
2
|
+
import type { AnyFilterConfig } from '../classes/FilterConfig';
|
|
3
3
|
|
|
4
4
|
export type DynamicFilterPreviewComponentProps = {
|
|
5
5
|
value: unknown;
|
|
6
|
-
filterConfig:
|
|
6
|
+
filterConfig: AnyFilterConfig;
|
|
7
7
|
filter: IFilter;
|
|
8
8
|
};
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import type { WtTableHeader } from '@webitel/ui-sdk/components/wt-table/types/WtTable';
|
|
2
1
|
import { sortToQueryAdapter } from '@webitel/ui-sdk/scripts';
|
|
3
2
|
import { SortSymbols } from '@webitel/ui-sdk/scripts/sortQueryAdapters';
|
|
4
3
|
import { computed, nextTick, ref } from 'vue';
|
|
@@ -6,10 +5,14 @@ import { computed, nextTick, ref } from 'vue';
|
|
|
6
5
|
import { createDatalistStore } from '../_shared/createDatalistStore';
|
|
7
6
|
import { PersistedStorageType } from '../persist/PersistedStorage.types';
|
|
8
7
|
import { usePersistedStorage } from '../persist/usePersistedStorage';
|
|
9
|
-
import type {
|
|
8
|
+
import type { Identifiable } from '../types/createDatalistStore.types';
|
|
9
|
+
import type {
|
|
10
|
+
DatalistTableHeader,
|
|
11
|
+
useTableStoreConfig,
|
|
12
|
+
} from '../types/tableStore.types';
|
|
10
13
|
|
|
11
14
|
interface TableHeadersStoreBodyParams {
|
|
12
|
-
rawHeaders:
|
|
15
|
+
rawHeaders: DatalistTableHeader[];
|
|
13
16
|
id: string;
|
|
14
17
|
}
|
|
15
18
|
|
|
@@ -17,7 +20,7 @@ export const tableHeadersStoreBody = ({
|
|
|
17
20
|
rawHeaders,
|
|
18
21
|
id,
|
|
19
22
|
}: TableHeadersStoreBodyParams) => {
|
|
20
|
-
const headers = ref<
|
|
23
|
+
const headers = ref<DatalistTableHeader[]>(rawHeaders);
|
|
21
24
|
const isReorderingColumn = ref(false);
|
|
22
25
|
|
|
23
26
|
const shownHeaders = computed(() => {
|
|
@@ -104,7 +107,7 @@ export const tableHeadersStoreBody = ({
|
|
|
104
107
|
const fieldsSet = new Set(fields);
|
|
105
108
|
const mainFieldNames = new Set(headers.value.map((header) => header.field));
|
|
106
109
|
|
|
107
|
-
const mainHeaders = headers.value.map((header:
|
|
110
|
+
const mainHeaders = headers.value.map((header: DatalistTableHeader) => ({
|
|
108
111
|
...header,
|
|
109
112
|
show: fieldsSet.has(header.field),
|
|
110
113
|
}));
|
|
@@ -311,7 +314,7 @@ export const tableHeadersStoreBody = ({
|
|
|
311
314
|
};
|
|
312
315
|
};
|
|
313
316
|
|
|
314
|
-
export const createTableHeadersStore = <Entity>(
|
|
317
|
+
export const createTableHeadersStore = <Entity extends Identifiable>(
|
|
315
318
|
namespace: string,
|
|
316
319
|
config: useTableStoreConfig<Entity>,
|
|
317
320
|
{ headers: rawHeaders },
|
|
@@ -2,6 +2,7 @@ import { ref } from 'vue';
|
|
|
2
2
|
|
|
3
3
|
import { createDatalistStore } from '../_shared/createDatalistStore';
|
|
4
4
|
import { usePersistedStorage } from '../persist/usePersistedStorage';
|
|
5
|
+
import type { Identifiable } from '../types/createDatalistStore.types';
|
|
5
6
|
import type { useTableStoreConfig } from '../types/tableStore.types';
|
|
6
7
|
|
|
7
8
|
export const tablePaginationStoreBody = () => {
|
|
@@ -63,7 +64,7 @@ export const tablePaginationStoreBody = () => {
|
|
|
63
64
|
};
|
|
64
65
|
};
|
|
65
66
|
|
|
66
|
-
export const createTablePaginationStore = <Entity>(
|
|
67
|
+
export const createTablePaginationStore = <Entity extends Identifiable>(
|
|
67
68
|
namespace: string,
|
|
68
69
|
config: useTableStoreConfig<Entity>,
|
|
69
70
|
) => {
|
|
@@ -9,18 +9,14 @@ import {
|
|
|
9
9
|
import { createTableFiltersStore } from '../filters/createTableFiltersStore';
|
|
10
10
|
import { createTableHeadersStore } from '../headers/createTableHeadersStore';
|
|
11
11
|
import { createTablePaginationStore } from '../pagination/createTablePaginationStore';
|
|
12
|
+
import type { Identifiable } from '../types/createDatalistStore.types';
|
|
12
13
|
import type {
|
|
13
14
|
LoadDataListOptions,
|
|
14
15
|
PatchItemPropertyParams,
|
|
15
16
|
useTableStoreConfig,
|
|
16
17
|
} from '../types/tableStore.types';
|
|
17
18
|
|
|
18
|
-
export const tableStoreBody = <
|
|
19
|
-
Entity extends {
|
|
20
|
-
id: string;
|
|
21
|
-
etag?: string;
|
|
22
|
-
},
|
|
23
|
-
>(
|
|
19
|
+
export const tableStoreBody = <Entity extends Identifiable>(
|
|
24
20
|
namespace: string,
|
|
25
21
|
config: useTableStoreConfig<Entity>,
|
|
26
22
|
) => {
|
|
@@ -360,12 +356,7 @@ export const tableStoreBody = <
|
|
|
360
356
|
};
|
|
361
357
|
};
|
|
362
358
|
|
|
363
|
-
export const createTableStore = <
|
|
364
|
-
Entity extends {
|
|
365
|
-
id: string;
|
|
366
|
-
etag?: string;
|
|
367
|
-
},
|
|
368
|
-
>(
|
|
359
|
+
export const createTableStore = <Entity extends Identifiable>(
|
|
369
360
|
namespace: string,
|
|
370
361
|
config: useTableStoreConfig<Entity>,
|
|
371
362
|
) => {
|