@webitel/ui-sdk 24.12.120 → 24.12.122
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/CHANGELOG.md +8 -0
- package/dist/ui-sdk.js +1 -1
- package/dist/ui-sdk.umd.cjs +1 -1
- package/package.json +1 -1
- package/src/api/clients/caseCloseReasonGroups/caseCloseReasonGroups.js +130 -0
- package/src/api/clients/caseCloseReasons/caseCloseReasons.js +130 -0
- package/src/api/clients/casePriorities/casePriorities.js +130 -0
- package/src/api/clients/caseServiceCatalogs/service-catalogs.js +198 -0
- package/src/api/clients/caseServices/services.js +174 -0
- package/src/api/clients/caseSources/caseSources.js +138 -0
- package/src/api/clients/caseStatusConditions/caseStatusConditions.js +167 -0
- package/src/api/clients/caseStatuses/caseStatuses.js +121 -0
- package/src/api/clients/contactGroups/contactGroups.js +162 -0
- package/src/api/clients/index.js +16 -0
- package/src/api/clients/slaConditions/slaConditions.js +167 -0
- package/src/api/clients/slas/slas.js +129 -0
- package/src/locale/en/en.js +104 -30
- package/src/locale/ru/ru.js +105 -31
- package/src/locale/ua/ua.js +105 -31
- package/src/modules/Filters/v2/filters/components/config/dynamic-filter-config-form.vue +3 -2
- package/src/modules/Filters/v2/filters/components/dynamic-filter-search.vue +69 -0
- package/src/modules/Filters/v2/filters/components/values/_shared/date-time-filter/date-time-filter-value-field.vue +53 -0
- package/src/modules/Filters/v2/filters/components/values/actual-reaction-time/actual-reaction-time-filter-value-field.vue +18 -0
- package/src/modules/Filters/v2/filters/components/values/actual-reaction-time/actual-reaction-time-filter-value-preview.vue +42 -0
- package/src/modules/Filters/v2/filters/components/values/actual-resolution-time/actual-resolution-time-filter-value-field.vue +18 -0
- package/src/modules/Filters/v2/filters/components/values/actual-resolution-time/actual-resolution-time-filter-value-preview.vue +42 -0
- package/src/modules/Filters/v2/filters/components/values/assignee/assignee-filter-value-field.vue +74 -0
- package/src/modules/Filters/v2/filters/components/values/assignee/assignee-filter-value-preview.vue +40 -0
- package/src/modules/Filters/v2/filters/components/values/assignee/config.js +4 -0
- package/src/modules/Filters/v2/filters/components/values/author/author-filter-value-field.vue +56 -0
- package/src/modules/Filters/v2/filters/components/values/author/author-filter-value-preview.vue +32 -0
- package/src/modules/Filters/v2/filters/components/values/author/config.js +4 -0
- package/src/modules/Filters/v2/filters/components/values/close-reason-groups-case/close-reason-groups-case-filter-value-field.vue +99 -0
- package/src/modules/Filters/v2/filters/components/values/close-reason-groups-case/close-reason-groups-case-filter-value-preview.vue +32 -0
- package/src/modules/Filters/v2/filters/components/values/close-reason-groups-case/config.js +6 -0
- package/src/modules/Filters/v2/filters/components/values/contact-group/config.js +4 -0
- package/src/modules/Filters/v2/filters/components/values/contact-group/contact-group-filter-value-field.vue +74 -0
- package/src/modules/Filters/v2/filters/components/values/contact-group/contact-group-filter-value-preview.vue +43 -0
- package/src/modules/Filters/v2/filters/components/values/has-attachment/has-attachment-filter-value-field.vue +43 -0
- package/src/modules/Filters/v2/filters/components/values/has-attachment/has-attachment-filter-value-preview.vue +22 -0
- package/src/modules/Filters/v2/filters/components/values/has-file/has-file-filter-value-field.vue +1 -1
- package/src/modules/Filters/v2/filters/components/values/has-transcription/has-transcription-filter-value-field.vue +1 -1
- package/src/modules/Filters/v2/filters/components/values/impacted/config.js +4 -0
- package/src/modules/Filters/v2/filters/components/values/impacted/impacted-filter-value-field.vue +56 -0
- package/src/modules/Filters/v2/filters/components/values/impacted/impacted-filter-value-preview.vue +32 -0
- package/src/modules/Filters/v2/filters/components/values/index.js +77 -5
- package/src/modules/Filters/v2/filters/components/values/priority-case/config.js +5 -0
- package/src/modules/Filters/v2/filters/components/values/priority-case/priority-case-filter-value-field.vue +57 -0
- package/src/modules/Filters/v2/filters/components/values/priority-case/priority-case-filter-value-preview.vue +32 -0
- package/src/modules/Filters/v2/filters/components/values/rated/rated-filter-value-field.vue +1 -1
- package/src/modules/Filters/v2/filters/components/values/rating/rating-from-to-filter-value-field.vue +89 -0
- package/src/modules/Filters/v2/filters/components/values/rating/rating-from-to-filter-value-preview.vue +37 -0
- package/src/modules/Filters/v2/filters/components/values/reaction-time/reaction-time-filter-value-field.vue +18 -0
- package/src/modules/Filters/v2/filters/components/values/reaction-time/reaction-time-filter-value-preview.vue +42 -0
- package/src/modules/Filters/v2/filters/components/values/reporter/config.js +4 -0
- package/src/modules/Filters/v2/filters/components/values/reporter/reporter-filter-value-field.vue +56 -0
- package/src/modules/Filters/v2/filters/components/values/reporter/reporter-filter-value-preview.vue +32 -0
- package/src/modules/Filters/v2/filters/components/values/resolution-time/resolution-time-filter-value-field.vue +18 -0
- package/src/modules/Filters/v2/filters/components/values/resolution-time/resolution-time-filter-value-preview.vue +42 -0
- package/src/modules/Filters/v2/filters/components/values/service-case/config.js +6 -0
- package/src/modules/Filters/v2/filters/components/values/service-case/service-case-filter-value-field.vue +113 -0
- package/src/modules/Filters/v2/filters/components/values/service-case/service-case-filter-value-preview.vue +15 -0
- package/src/modules/Filters/v2/filters/components/values/sla/config.js +4 -0
- package/src/modules/Filters/v2/filters/components/values/sla/sla-filter-value-field.vue +57 -0
- package/src/modules/Filters/v2/filters/components/values/sla/sla-filter-value-preview.vue +32 -0
- package/src/modules/Filters/v2/filters/components/values/sla-condition/config.js +6 -0
- package/src/modules/Filters/v2/filters/components/values/sla-condition/sla-condition-filter-value-field.vue +98 -0
- package/src/modules/Filters/v2/filters/components/values/sla-condition/sla-condition-filter-value-preview.vue +37 -0
- package/src/modules/Filters/v2/filters/components/values/source-case/config.js +5 -0
- package/src/modules/Filters/v2/filters/components/values/source-case/source-case-filter-value-field.vue +57 -0
- package/src/modules/Filters/v2/filters/components/values/source-case/source-case-filter-value-preview.vue +32 -0
- package/src/modules/Filters/v2/filters/components/values/status-case/config.js +6 -0
- package/src/modules/Filters/v2/filters/components/values/status-case/status-case-filter-value-field.vue +99 -0
- package/src/modules/Filters/v2/filters/components/values/status-case/status-case-filter-value-preview.vue +37 -0
- package/src/modules/Filters/v2/filters/components/values/talk-duration/talk-duration-filter-value-field.vue +1 -1
- package/src/modules/Filters/v2/filters/components/values/total-duration/total-duration-filter-value-field.vue +1 -1
package/src/locale/ru/ru.js
CHANGED
|
@@ -80,6 +80,8 @@ export default {
|
|
|
80
80
|
read: 'Читать',
|
|
81
81
|
create: 'Создать',
|
|
82
82
|
draggable: 'Перетащить',
|
|
83
|
+
unassigned: 'Неназначенные',
|
|
84
|
+
showUnassigned: 'Показать неназначенные',
|
|
83
85
|
},
|
|
84
86
|
vocabulary: {
|
|
85
87
|
apply: 'Применить',
|
|
@@ -151,11 +153,11 @@ export default {
|
|
|
151
153
|
hasOption: 'Has option',
|
|
152
154
|
hasRecording: 'Запись разговора',
|
|
153
155
|
amdResult: 'AMD результат',
|
|
154
|
-
evaluation: 'Оценивание',
|
|
155
156
|
ratedBy: 'Оценено кем',
|
|
156
157
|
talkDuration: 'Длительность разговора',
|
|
157
158
|
totalDuration: 'Общая длительность',
|
|
158
159
|
transcription: 'Транскрипция',
|
|
160
|
+
attachment: 'Вложение | Вложения',
|
|
159
161
|
queue: {
|
|
160
162
|
queue: 'Очередь | Очереди',
|
|
161
163
|
type: {
|
|
@@ -219,6 +221,24 @@ export default {
|
|
|
219
221
|
[ChannelType.Job]: 'Задача',
|
|
220
222
|
},
|
|
221
223
|
},
|
|
224
|
+
cases: {
|
|
225
|
+
status: 'Статус',
|
|
226
|
+
source: 'Источник',
|
|
227
|
+
author: 'Автор',
|
|
228
|
+
reporter: 'Инициатор',
|
|
229
|
+
impacted: 'Влияет на',
|
|
230
|
+
assignee: 'Исполнитель',
|
|
231
|
+
group: 'Группа исполнителей',
|
|
232
|
+
reason: 'Причина | Причины',
|
|
233
|
+
rating: 'Оценка',
|
|
234
|
+
service: 'Сервисы | Сервисы',
|
|
235
|
+
appliedSLA: 'Примененный SLA',
|
|
236
|
+
appliedCondition: 'Примененное условие',
|
|
237
|
+
reactionTime: 'Плановое время реакции',
|
|
238
|
+
resolutionTime: 'Плановое время решения',
|
|
239
|
+
actualReactionTime: 'Фактическое время реакции',
|
|
240
|
+
actualResolutionTime: 'Фактическое время решения',
|
|
241
|
+
},
|
|
222
242
|
calls: {
|
|
223
243
|
direction: {
|
|
224
244
|
[CallDirection.Inbound]: 'Входящий | Входящие',
|
|
@@ -475,67 +495,121 @@ export default {
|
|
|
475
495
|
filterLabel: ({ linked }) => {
|
|
476
496
|
return linked('vocabulary.labels');
|
|
477
497
|
},
|
|
478
|
-
|
|
498
|
+
actualReactionTime: ({ linked }) => {
|
|
499
|
+
return linked('cases.actualReactionTime');
|
|
500
|
+
},
|
|
501
|
+
actualResolutionTime: ({ linked }) => {
|
|
502
|
+
return linked('cases.actualResolutionTime');
|
|
503
|
+
},
|
|
504
|
+
agent : ({ linked }) => {
|
|
479
505
|
return linked('objects.agent.agent');
|
|
480
506
|
},
|
|
481
|
-
amdResult: ({ linked }) => {
|
|
507
|
+
amdResult : ({ linked }) => {
|
|
482
508
|
return linked('objects.amdResult');
|
|
483
509
|
},
|
|
484
|
-
|
|
510
|
+
assignee: ({ linked }) => {
|
|
511
|
+
return linked('cases.assignee');
|
|
512
|
+
},
|
|
513
|
+
author: ({ linked }) => {
|
|
514
|
+
return linked('cases.author');
|
|
515
|
+
},
|
|
516
|
+
cause : ({ linked }) => {
|
|
517
|
+
return linked('objects.hangupCause');
|
|
518
|
+
},
|
|
519
|
+
closeReasonGroupsCase: ({ linked }) => {
|
|
520
|
+
return linked('cases.reason');
|
|
521
|
+
},
|
|
522
|
+
contact : ({ linked }) => {
|
|
485
523
|
return linked('vocabulary.contact');
|
|
486
524
|
},
|
|
487
|
-
|
|
525
|
+
contactGroup: ({ linked }) => {
|
|
526
|
+
return linked('cases.group');
|
|
527
|
+
},
|
|
528
|
+
createdAtFrom : ({ linked }) => {
|
|
488
529
|
return linked('reusable.from');
|
|
489
530
|
},
|
|
490
|
-
createdAtTo: ({ linked }) => {
|
|
531
|
+
createdAtTo : ({ linked }) => {
|
|
491
532
|
return linked('reusable.to');
|
|
492
533
|
},
|
|
493
|
-
direction: ({ linked }) => {
|
|
494
|
-
return linked('
|
|
534
|
+
direction : ({ linked }) => {
|
|
535
|
+
return linked('calls.direction');
|
|
495
536
|
},
|
|
496
|
-
|
|
497
|
-
return linked('
|
|
498
|
-
},
|
|
499
|
-
gateway: ({ linked }) => {
|
|
500
|
-
return linked('objects.gateway');
|
|
537
|
+
gateway : ({ linked }) => {
|
|
538
|
+
return linked('vocabulary.gateway');
|
|
501
539
|
},
|
|
502
|
-
grantee: ({ linked }) => {
|
|
540
|
+
grantee : ({ linked }) => {
|
|
503
541
|
return linked('objects.grantee');
|
|
504
542
|
},
|
|
505
|
-
|
|
506
|
-
return linked('objects.
|
|
543
|
+
hasAttachment: ({ linked }) => {
|
|
544
|
+
return linked('objects.attachment');
|
|
545
|
+
},
|
|
546
|
+
hasFile: ({ linked }) => {
|
|
547
|
+
return linked('objects.hasRecording');
|
|
548
|
+
},
|
|
549
|
+
hasTranscription: ({ linked }) => {
|
|
550
|
+
return linked('objects.transcription');
|
|
507
551
|
},
|
|
508
|
-
|
|
509
|
-
return linked('
|
|
552
|
+
impacted: ({ linked }) => {
|
|
553
|
+
return linked('cases.impacted');
|
|
510
554
|
},
|
|
511
|
-
|
|
555
|
+
priorityCase: ({ linked }) => {
|
|
556
|
+
return linked('vocabulary.priority');
|
|
557
|
+
},
|
|
558
|
+
queue : ({ linked }) => {
|
|
512
559
|
return linked('objects.queue.queue');
|
|
513
560
|
},
|
|
514
|
-
|
|
515
|
-
return linked('objects.
|
|
561
|
+
rated: ({ linked }) => {
|
|
562
|
+
return linked('objects.rated');
|
|
563
|
+
},
|
|
564
|
+
ratedBy : ({ linked }) => {
|
|
565
|
+
return linked('objects.ratedBy');
|
|
566
|
+
},
|
|
567
|
+
rating: ({ linked }) => {
|
|
568
|
+
return linked('cases.rating');
|
|
569
|
+
},
|
|
570
|
+
reactionTime: ({ linked }) => {
|
|
571
|
+
return linked('cases.reactionTime');
|
|
572
|
+
},
|
|
573
|
+
reporter: ({ linked }) => {
|
|
574
|
+
return linked('cases.reporter');
|
|
575
|
+
},
|
|
576
|
+
resolutionTime: ({ linked }) => {
|
|
577
|
+
return linked('cases.resolutionTime');
|
|
516
578
|
},
|
|
517
|
-
score: ({ linked }) => {
|
|
579
|
+
score : ({ linked }) => {
|
|
518
580
|
return linked('webitelUI.auditForm.score');
|
|
519
581
|
},
|
|
520
|
-
|
|
582
|
+
serviceCase: ({ linked }) => {
|
|
583
|
+
return linked('cases.service');
|
|
584
|
+
},
|
|
585
|
+
sla: ({ linked }) => {
|
|
586
|
+
return linked('cases.appliedSLA');
|
|
587
|
+
},
|
|
588
|
+
slaCondition: ({ linked }) => {
|
|
589
|
+
return linked('cases.appliedCondition');
|
|
590
|
+
},
|
|
591
|
+
sourceCase: ({ linked }) => {
|
|
592
|
+
return linked('cases.source');
|
|
593
|
+
},
|
|
594
|
+
statusCase: ({ linked }) => {
|
|
595
|
+
return linked('cases.status');
|
|
596
|
+
},
|
|
597
|
+
tag : ({ linked }) => {
|
|
521
598
|
return linked('vocabulary.tag');
|
|
522
599
|
},
|
|
523
|
-
|
|
600
|
+
talkDuration: ({ linked }) => {
|
|
524
601
|
return linked('objects.talkDuration');
|
|
525
602
|
},
|
|
526
|
-
team: ({ linked }) => {
|
|
603
|
+
team : ({ linked }) => {
|
|
527
604
|
return linked('objects.team');
|
|
528
605
|
},
|
|
529
|
-
|
|
606
|
+
totalDuration: ({ linked }) => {
|
|
530
607
|
return linked('objects.totalDuration');
|
|
531
608
|
},
|
|
532
|
-
|
|
533
|
-
return linked('objects.transcription');
|
|
534
|
-
},
|
|
535
|
-
user: ({ linked }) => {
|
|
609
|
+
user : ({ linked }) => {
|
|
536
610
|
return linked('objects.user');
|
|
537
611
|
},
|
|
538
|
-
variable: ({ linked }) => {
|
|
612
|
+
variable : ({ linked }) => {
|
|
539
613
|
return linked('vocabulary.variables');
|
|
540
614
|
},
|
|
541
615
|
},
|
package/src/locale/ua/ua.js
CHANGED
|
@@ -81,6 +81,8 @@ export default {
|
|
|
81
81
|
read: 'Читати',
|
|
82
82
|
create: 'Створити',
|
|
83
83
|
draggable: 'Перетягнути',
|
|
84
|
+
unassigned: 'Непризначені',
|
|
85
|
+
showUnassigned: 'Показати непризначені',
|
|
84
86
|
},
|
|
85
87
|
vocabulary: {
|
|
86
88
|
apply: 'Застосувати',
|
|
@@ -151,11 +153,11 @@ export default {
|
|
|
151
153
|
hasOption: 'Has option',
|
|
152
154
|
hasRecording: 'Запис розмови',
|
|
153
155
|
amdResult: 'AMD результат',
|
|
154
|
-
evaluation: 'Оцінювання',
|
|
155
156
|
ratedBy: 'Оцінено ким',
|
|
156
157
|
talkDuration: 'Тривалість розмови',
|
|
157
158
|
totalDuration: 'Загальна тривалість',
|
|
158
159
|
transcription: 'Транскрипція',
|
|
160
|
+
attachment: 'Додаток | Додатки',
|
|
159
161
|
queue: {
|
|
160
162
|
queue: 'Черга | Черги',
|
|
161
163
|
type: {
|
|
@@ -225,6 +227,24 @@ export default {
|
|
|
225
227
|
[CallDirection.Outbound]: 'Вихідний | Вихідні',
|
|
226
228
|
},
|
|
227
229
|
},
|
|
230
|
+
cases: {
|
|
231
|
+
status: 'Статус',
|
|
232
|
+
source: 'Джерело',
|
|
233
|
+
author: 'Автор',
|
|
234
|
+
reporter: 'Ініціатор',
|
|
235
|
+
impacted: 'Впливає на',
|
|
236
|
+
assignee: 'Виконавець',
|
|
237
|
+
group: 'Група виконавців',
|
|
238
|
+
reason: 'Причина | Причини',
|
|
239
|
+
rating: 'Оцінка',
|
|
240
|
+
service: 'Cервіси | Cервіси',
|
|
241
|
+
appliedSLA: 'Застосований SLA',
|
|
242
|
+
appliedCondition: 'Застосована умова',
|
|
243
|
+
reactionTime: 'Плановий час реакції',
|
|
244
|
+
resolutionTime: 'Плановий час вирішення',
|
|
245
|
+
actualReactionTime: 'Фактичний час реакції',
|
|
246
|
+
actualResolutionTime: 'Фактичний час вирішення',
|
|
247
|
+
},
|
|
228
248
|
// describes Webitel FRONTEND applications + their navs
|
|
229
249
|
WebitelApplications: {
|
|
230
250
|
[WebitelApplications.AGENT]: { name: 'Agent Workspace' },
|
|
@@ -475,67 +495,121 @@ export default {
|
|
|
475
495
|
filterLabel: ({ linked }) => {
|
|
476
496
|
return linked('vocabulary.labels');
|
|
477
497
|
},
|
|
478
|
-
|
|
498
|
+
actualReactionTime: ({ linked }) => {
|
|
499
|
+
return linked('cases.actualReactionTime');
|
|
500
|
+
},
|
|
501
|
+
actualResolutionTime: ({ linked }) => {
|
|
502
|
+
return linked('cases.actualResolutionTime');
|
|
503
|
+
},
|
|
504
|
+
agent : ({ linked }) => {
|
|
479
505
|
return linked('objects.agent.agent');
|
|
480
506
|
},
|
|
481
|
-
amdResult: ({ linked }) => {
|
|
507
|
+
amdResult : ({ linked }) => {
|
|
482
508
|
return linked('objects.amdResult');
|
|
483
509
|
},
|
|
484
|
-
|
|
510
|
+
assignee: ({ linked }) => {
|
|
511
|
+
return linked('cases.assignee');
|
|
512
|
+
},
|
|
513
|
+
author: ({ linked }) => {
|
|
514
|
+
return linked('cases.author');
|
|
515
|
+
},
|
|
516
|
+
cause : ({ linked }) => {
|
|
517
|
+
return linked('objects.hangupCause');
|
|
518
|
+
},
|
|
519
|
+
closeReasonGroupsCase: ({ linked }) => {
|
|
520
|
+
return linked('cases.reason');
|
|
521
|
+
},
|
|
522
|
+
contact : ({ linked }) => {
|
|
485
523
|
return linked('vocabulary.contact');
|
|
486
524
|
},
|
|
487
|
-
|
|
525
|
+
contactGroup: ({ linked }) => {
|
|
526
|
+
return linked('cases.group');
|
|
527
|
+
},
|
|
528
|
+
createdAtFrom : ({ linked }) => {
|
|
488
529
|
return linked('reusable.from');
|
|
489
530
|
},
|
|
490
|
-
createdAtTo: ({ linked }) => {
|
|
531
|
+
createdAtTo : ({ linked }) => {
|
|
491
532
|
return linked('reusable.to');
|
|
492
533
|
},
|
|
493
|
-
direction: ({ linked }) => {
|
|
494
|
-
return linked('
|
|
534
|
+
direction : ({ linked }) => {
|
|
535
|
+
return linked('calls.direction');
|
|
495
536
|
},
|
|
496
|
-
|
|
497
|
-
return linked('
|
|
498
|
-
},
|
|
499
|
-
gateway: ({ linked }) => {
|
|
500
|
-
return linked('objects.gateway');
|
|
537
|
+
gateway : ({ linked }) => {
|
|
538
|
+
return linked('vocabulary.gateway');
|
|
501
539
|
},
|
|
502
|
-
grantee: ({ linked }) => {
|
|
540
|
+
grantee : ({ linked }) => {
|
|
503
541
|
return linked('objects.grantee');
|
|
504
542
|
},
|
|
505
|
-
|
|
506
|
-
return linked('objects.
|
|
543
|
+
hasAttachment: ({ linked }) => {
|
|
544
|
+
return linked('objects.attachment');
|
|
545
|
+
},
|
|
546
|
+
hasFile: ({ linked }) => {
|
|
547
|
+
return linked('objects.hasRecording');
|
|
548
|
+
},
|
|
549
|
+
hasTranscription: ({ linked }) => {
|
|
550
|
+
return linked('objects.transcription');
|
|
507
551
|
},
|
|
508
|
-
|
|
509
|
-
return linked('
|
|
552
|
+
impacted: ({ linked }) => {
|
|
553
|
+
return linked('cases.impacted');
|
|
510
554
|
},
|
|
511
|
-
|
|
555
|
+
priorityCase: ({ linked }) => {
|
|
556
|
+
return linked('vocabulary.priority');
|
|
557
|
+
},
|
|
558
|
+
queue : ({ linked }) => {
|
|
512
559
|
return linked('objects.queue.queue');
|
|
513
560
|
},
|
|
514
|
-
|
|
515
|
-
return linked('objects.
|
|
561
|
+
rated: ({ linked }) => {
|
|
562
|
+
return linked('objects.rated');
|
|
563
|
+
},
|
|
564
|
+
ratedBy : ({ linked }) => {
|
|
565
|
+
return linked('objects.ratedBy');
|
|
566
|
+
},
|
|
567
|
+
rating: ({ linked }) => {
|
|
568
|
+
return linked('cases.rating');
|
|
569
|
+
},
|
|
570
|
+
reactionTime: ({ linked }) => {
|
|
571
|
+
return linked('cases.reactionTime');
|
|
572
|
+
},
|
|
573
|
+
reporter: ({ linked }) => {
|
|
574
|
+
return linked('cases.reporter');
|
|
575
|
+
},
|
|
576
|
+
resolutionTime: ({ linked }) => {
|
|
577
|
+
return linked('cases.resolutionTime');
|
|
516
578
|
},
|
|
517
|
-
score: ({ linked }) => {
|
|
579
|
+
score : ({ linked }) => {
|
|
518
580
|
return linked('webitelUI.auditForm.score');
|
|
519
581
|
},
|
|
520
|
-
|
|
582
|
+
serviceCase: ({ linked }) => {
|
|
583
|
+
return linked('cases.service');
|
|
584
|
+
},
|
|
585
|
+
sla: ({ linked }) => {
|
|
586
|
+
return linked('cases.appliedSLA');
|
|
587
|
+
},
|
|
588
|
+
slaCondition: ({ linked }) => {
|
|
589
|
+
return linked('cases.appliedCondition');
|
|
590
|
+
},
|
|
591
|
+
sourceCase: ({ linked }) => {
|
|
592
|
+
return linked('cases.source');
|
|
593
|
+
},
|
|
594
|
+
statusCase: ({ linked }) => {
|
|
595
|
+
return linked('cases.status');
|
|
596
|
+
},
|
|
597
|
+
tag : ({ linked }) => {
|
|
521
598
|
return linked('vocabulary.tag');
|
|
522
599
|
},
|
|
523
|
-
|
|
600
|
+
talkDuration: ({ linked }) => {
|
|
524
601
|
return linked('objects.talkDuration');
|
|
525
602
|
},
|
|
526
|
-
team: ({ linked }) => {
|
|
603
|
+
team : ({ linked }) => {
|
|
527
604
|
return linked('objects.team');
|
|
528
605
|
},
|
|
529
|
-
|
|
606
|
+
totalDuration: ({ linked }) => {
|
|
530
607
|
return linked('objects.totalDuration');
|
|
531
608
|
},
|
|
532
|
-
|
|
533
|
-
return linked('objects.transcription');
|
|
534
|
-
},
|
|
535
|
-
user: ({ linked }) => {
|
|
609
|
+
user : ({ linked }) => {
|
|
536
610
|
return linked('objects.user');
|
|
537
611
|
},
|
|
538
|
-
variable: ({ linked }) => {
|
|
612
|
+
variable : ({ linked }) => {
|
|
539
613
|
return linked('vocabulary.variables');
|
|
540
614
|
},
|
|
541
615
|
},
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<form class="dynamic-filter-config-form">
|
|
3
3
|
<wt-select
|
|
4
|
+
:clearable="false"
|
|
4
5
|
:disabled="editMode"
|
|
5
6
|
:label="t('webitelUI.filters.filterName')"
|
|
6
7
|
:options="options"
|
|
7
8
|
:value="filterName"
|
|
8
|
-
:clearable="false"
|
|
9
9
|
track-by="value"
|
|
10
10
|
use-value-from-options-by-prop="value"
|
|
11
11
|
@input="onFilterNameUpdate($event)"
|
|
@@ -101,6 +101,7 @@ const onLabelValueUpdate = (val: string) => {
|
|
|
101
101
|
const onFilterNameUpdate = (val: string) => {
|
|
102
102
|
filterName.value = val;
|
|
103
103
|
filterValue.value = null;
|
|
104
|
+
filterLabel.value = t(`webitelUI.filters.${val}`);
|
|
104
105
|
};
|
|
105
106
|
|
|
106
107
|
const submit = () => {
|
|
@@ -119,7 +120,7 @@ if (props.options) {
|
|
|
119
120
|
filterValue.value = null;
|
|
120
121
|
|
|
121
122
|
if (!touchedLabel.value) {
|
|
122
|
-
filterLabel.value = filterName.value;
|
|
123
|
+
filterLabel.value = t(`webitelUI.filters.${filterName.value}`);
|
|
123
124
|
}
|
|
124
125
|
},
|
|
125
126
|
{ immediate: true },
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<wt-search-bar
|
|
3
|
+
:placeholder="t('reusable.search')"
|
|
4
|
+
:search-mode="props.searchMode"
|
|
5
|
+
:search-mode-options="searchModeOptions"
|
|
6
|
+
:value="model"
|
|
7
|
+
:v="v$.model"
|
|
8
|
+
@input="model = $event"
|
|
9
|
+
@search="handleSearch"
|
|
10
|
+
@update:search-mode="emit('update:search-mode', $event.value)"
|
|
11
|
+
>
|
|
12
|
+
<template
|
|
13
|
+
v-if="props.showTextSearchIcon"
|
|
14
|
+
#search-icon
|
|
15
|
+
>
|
|
16
|
+
<wt-icon icon="stt-search" />
|
|
17
|
+
</template>
|
|
18
|
+
</wt-search-bar>
|
|
19
|
+
</template>
|
|
20
|
+
|
|
21
|
+
<script lang="ts" setup>
|
|
22
|
+
import { useVuelidate } from '@vuelidate/core';
|
|
23
|
+
import { required } from '@vuelidate/validators';
|
|
24
|
+
import { computed } from 'vue';
|
|
25
|
+
import { useI18n } from 'vue-i18n';
|
|
26
|
+
|
|
27
|
+
import WtSearchBar from '../../../../../components/wt-search-bar/wt-search-bar.vue';
|
|
28
|
+
|
|
29
|
+
type ModelValue = string;
|
|
30
|
+
const model = defineModel<ModelValue>();
|
|
31
|
+
|
|
32
|
+
const props = defineProps<{
|
|
33
|
+
searchMode: string;
|
|
34
|
+
searchModeOptions: Record<string, string>;
|
|
35
|
+
showTextSearchIcon: boolean;
|
|
36
|
+
}>();
|
|
37
|
+
|
|
38
|
+
const emit = defineEmits<{
|
|
39
|
+
'update:search-mode': [string];
|
|
40
|
+
'handle-search': [string];
|
|
41
|
+
}>();
|
|
42
|
+
|
|
43
|
+
const { t } = useI18n();
|
|
44
|
+
|
|
45
|
+
const v$ = useVuelidate(
|
|
46
|
+
computed(() => ({
|
|
47
|
+
model: {
|
|
48
|
+
required,
|
|
49
|
+
},
|
|
50
|
+
})),
|
|
51
|
+
{ model },
|
|
52
|
+
{ $autoDirty: true },
|
|
53
|
+
);
|
|
54
|
+
|
|
55
|
+
const handleSearch = () => {
|
|
56
|
+
emit('handle-search', model.value);
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
const searchModeOptions = computed(() =>
|
|
60
|
+
Object.values(props.searchModeOptions).map((mode) => {
|
|
61
|
+
return {
|
|
62
|
+
value: mode,
|
|
63
|
+
text: t(`filters.search.${mode}`),
|
|
64
|
+
};
|
|
65
|
+
}),
|
|
66
|
+
);
|
|
67
|
+
</script>
|
|
68
|
+
|
|
69
|
+
<style lang="scss" scoped></style>
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div class="date-time-filter-value-field">
|
|
3
|
+
<wt-datepicker
|
|
4
|
+
:label="`${t('webitelUI.filters.createdAtFrom')}:`"
|
|
5
|
+
:value="model?.from"
|
|
6
|
+
class="date-time-filter-value-field__picker"
|
|
7
|
+
mode="datetime"
|
|
8
|
+
@input="handleInput('from', $event)"
|
|
9
|
+
/>
|
|
10
|
+
|
|
11
|
+
<wt-datepicker
|
|
12
|
+
:label="`${t('webitelUI.filters.createdAtTo')}:`"
|
|
13
|
+
:value="model?.to"
|
|
14
|
+
class="date-time-filter-value-field__picker"
|
|
15
|
+
mode="datetime"
|
|
16
|
+
@input="handleInput('to', $event)"
|
|
17
|
+
/>
|
|
18
|
+
</div>
|
|
19
|
+
</template>
|
|
20
|
+
|
|
21
|
+
<script lang="ts" setup>
|
|
22
|
+
import {endOfToday, startOfToday} from 'date-fns';
|
|
23
|
+
import {useI18n} from 'vue-i18n';
|
|
24
|
+
import {onMounted} from 'vue';
|
|
25
|
+
|
|
26
|
+
type ModelValue = {
|
|
27
|
+
from: number;
|
|
28
|
+
to: number;
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
const model = defineModel<ModelValue>();
|
|
32
|
+
const {t} = useI18n();
|
|
33
|
+
|
|
34
|
+
const handleInput = (key: keyof ModelValue, value: number) => {
|
|
35
|
+
model.value = { ...model.value, [key]: value};
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
const initModel = () => {
|
|
39
|
+
if (!model.value) {
|
|
40
|
+
model.value = {from: startOfToday().getTime(), to: endOfToday().getTime()};
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
onMounted(() => initModel());
|
|
45
|
+
</script>
|
|
46
|
+
|
|
47
|
+
<style lang="scss" scoped>
|
|
48
|
+
.date-time-filter-value-field {
|
|
49
|
+
display: flex;
|
|
50
|
+
flex-direction: column;
|
|
51
|
+
grid-gap: var(--spacing-xs);
|
|
52
|
+
}
|
|
53
|
+
</style>
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<date-time-filter-value-field
|
|
3
|
+
:model-value="model"
|
|
4
|
+
@update:model-value="model = $event"
|
|
5
|
+
/>
|
|
6
|
+
</template>
|
|
7
|
+
|
|
8
|
+
<script lang="ts" setup>
|
|
9
|
+
import DateTimeFilterValueField from '../_shared/date-time-filter/date-time-filter-value-field.vue';
|
|
10
|
+
|
|
11
|
+
type ModelValue = {
|
|
12
|
+
from: number;
|
|
13
|
+
to: number;
|
|
14
|
+
};
|
|
15
|
+
const model = defineModel<ModelValue>();
|
|
16
|
+
</script>
|
|
17
|
+
|
|
18
|
+
<style lang="scss" scoped></style>
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div class="actual-reaction-time-filter-value-preview">
|
|
3
|
+
<div v-if="props.value.from">
|
|
4
|
+
<p class="actual-reaction-time-filter-value-preview__title">
|
|
5
|
+
{{t('reusable.from')}}
|
|
6
|
+
</p>
|
|
7
|
+
|
|
8
|
+
<span>{{convertTimestampToDate(props.value.from)}}</span>
|
|
9
|
+
</div>
|
|
10
|
+
|
|
11
|
+
<div v-if="props.value.to">
|
|
12
|
+
<p class="actual-reaction-time-filter-value-preview__title">
|
|
13
|
+
{{t('reusable.to')}}
|
|
14
|
+
</p>
|
|
15
|
+
|
|
16
|
+
<span>{{convertTimestampToDate(props.value.to)}}</span>
|
|
17
|
+
</div>
|
|
18
|
+
</div>
|
|
19
|
+
</template>
|
|
20
|
+
|
|
21
|
+
<script lang="ts" setup>
|
|
22
|
+
import {useI18n} from "vue-i18n";
|
|
23
|
+
import { format } from "date-fns";
|
|
24
|
+
|
|
25
|
+
const props = defineProps<{
|
|
26
|
+
value: number[];
|
|
27
|
+
}>();
|
|
28
|
+
|
|
29
|
+
const { t } = useI18n();
|
|
30
|
+
|
|
31
|
+
function convertTimestampToDate(value) {
|
|
32
|
+
return format(new Date(value), 'dd.MM.yyyy HH:mm');
|
|
33
|
+
}
|
|
34
|
+
</script>
|
|
35
|
+
|
|
36
|
+
<style lang="scss" scoped>
|
|
37
|
+
.actual-reaction-time-filter-value-preview {
|
|
38
|
+
&__title {
|
|
39
|
+
@extend %typo-subtitle-1;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
</style>
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<date-time-filter-value-field
|
|
3
|
+
:model-value="model"
|
|
4
|
+
@update:model-value="model = $event"
|
|
5
|
+
/>
|
|
6
|
+
</template>
|
|
7
|
+
|
|
8
|
+
<script lang="ts" setup>
|
|
9
|
+
import DateTimeFilterValueField from '../_shared/date-time-filter/date-time-filter-value-field.vue';
|
|
10
|
+
|
|
11
|
+
type ModelValue = {
|
|
12
|
+
from: number;
|
|
13
|
+
to: number;
|
|
14
|
+
};
|
|
15
|
+
const model = defineModel<ModelValue>();
|
|
16
|
+
</script>
|
|
17
|
+
|
|
18
|
+
<style lang="scss" scoped></style>
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div class="actual-resolution-time-filter-value-preview">
|
|
3
|
+
<div v-if="props.value.from">
|
|
4
|
+
<p class="actual-resolution-time-filter-value-preview__title">
|
|
5
|
+
{{t('reusable.from')}}
|
|
6
|
+
</p>
|
|
7
|
+
|
|
8
|
+
<span>{{convertTimestampToDate(props.value.from)}}</span>
|
|
9
|
+
</div>
|
|
10
|
+
|
|
11
|
+
<div v-if="props.value.to">
|
|
12
|
+
<p class="actual-resolution-time-filter-value-preview__title">
|
|
13
|
+
{{t('reusable.to')}}
|
|
14
|
+
</p>
|
|
15
|
+
|
|
16
|
+
<span>{{convertTimestampToDate(props.value.to)}}</span>
|
|
17
|
+
</div>
|
|
18
|
+
</div>
|
|
19
|
+
</template>
|
|
20
|
+
|
|
21
|
+
<script lang="ts" setup>
|
|
22
|
+
import {useI18n} from "vue-i18n";
|
|
23
|
+
import {format} from "date-fns";
|
|
24
|
+
|
|
25
|
+
const props = defineProps<{
|
|
26
|
+
value: number[];
|
|
27
|
+
}>();
|
|
28
|
+
|
|
29
|
+
const { t } = useI18n();
|
|
30
|
+
|
|
31
|
+
function convertTimestampToDate(value) {
|
|
32
|
+
return format(new Date(value), 'dd.MM.yyyy HH:mm');
|
|
33
|
+
}
|
|
34
|
+
</script>
|
|
35
|
+
|
|
36
|
+
<style lang="scss" scoped>
|
|
37
|
+
.actual-resolution-time-filter-value-preview {
|
|
38
|
+
&__title {
|
|
39
|
+
@extend %typo-subtitle-1;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
</style>
|