1 <div id="voiceRecordings" class="page-layout simple left-sidenav inner-sidenav">
4 class="header md-accent-bg"
6 layout-align="space-between center"
9 <div layout="row" layout-align="start center">
10 <div class="logo" layout="row" layout-align="start center">
11 <span class="logo-icon">
12 <md-icon md-font-icon="icon-phone" class="s24"></md-icon>
14 <span class="logo-text" translate="VOICE.VOICERECORDINGS"
15 >VoiceRecordings</span
24 class="search-input-wrapper"
26 layout-align="start center"
29 <md-icon md-font-icon="icon-magnify"></md-icon>
31 <md-input-container md-no-float class="m-0">
34 placeholder="Search for anyone"
36 ng-model="vm.query.filter"
37 ng-model-options="{ debounce: 1000 }"
39 translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE"
45 filters="vm.quickFilters"
47 search="vm.getVoiceRecordings()"
55 ng-show="vm.selectedVoiceRecordings.length > 0"
56 class="selected-bar header animate-slide-down md-accent-bg"
58 layout-align="start center"
60 <div class="close-button-wrapper" ng-click="vm.selectedVoiceRecordings =[]">
61 <md-button layout="row" layout-align="start center">
62 <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>
63 <span translate="VOICE.BACK">Back</span>
67 <div flex layout="row" layout-align="space-between center">
69 <span class="selected-voiceRecordings-count">
70 <span>{{vm.selectedVoiceRecordings.length}}</span>
71 <span translate="VOICE.SELECTED">selected</span>
74 <md-menu class="select-menu" ng-if="!vm.currentThread">
76 class="md-icon-button"
77 ng-click="$mdOpenMenu($event)"
78 aria-label="multi select toggle"
80 translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE"
82 <md-icon md-font-icon="icon-menu-down"></md-icon>
84 <md-menu-content width="3">
87 ng-click="vm.selectAllVoiceRecordings()"
88 translate="VOICE.SELECT_ALL"
95 ng-click="vm.deselectVoiceRecordings()"
96 translate="VOICE.SELECT_NONE"
105 <div class="multi-select-actions">
107 class="md-icon-button"
108 ng-csv="vm.exportSelectedVoiceRecordings"
110 filename="voiceRecordings.csv"
112 <md-icon md-font-icon="icon-file-excel"></md-icon>
115 class="md-icon-button"
116 ng-if="vm.license.ai"
117 ng-click="vm.runtranscribesentimentSelectedVoiceRecordings($event)"
118 aria-label="transcribesentiment selected"
120 translate-attr-label="VOICERECORDINGS.TRANSCRIBESENTIMENT_SELECTED"
122 <md-icon md-font-icon="icon-text-to-speech"></md-icon
124 >{{'VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING' |
125 translate}}</md-tooltip
129 class="md-icon-button"
130 ng-if="vm.license.ai"
131 ng-click="vm.runtranscribeSelectedVoiceRecordings($event)"
132 aria-label="transcribe selected"
134 translate-attr-label="VOICERECORDINGS.TRANSCRIBE_SELECTED"
136 <md-icon md-font-icon="icon-format-size"></md-icon
138 >{{'VOICE.RUNTRANSCRIBE_VOICERECORDING' | translate}}</md-tooltip
142 class="md-icon-button"
143 ng-if="vm.license.ai"
144 ng-click="vm.runsentimentSelectedVoiceRecordings($event)"
145 aria-label="transcribe selected"
147 translate-attr-label="VOICERECORDINGS.SENTIMENT_SELECTED"
149 <md-icon md-font-icon="icon-heart-outline"></md-icon
151 >{{'VOICE.RUNSENTIMENT_VOICERECORDING' | translate}}</md-tooltip
155 class="md-icon-button"
156 ng-if="vm.crudPermissions.canDelete"
157 ng-click="vm.deleteSelectedVoiceRecordings($event)"
158 aria-label="delete selected"
160 translate-attr-label="VOICE.DELETE_SELECTED"
162 <md-icon md-font-icon="icon-delete"></md-icon>
167 <!-- / SELECTED BAR -->
170 <div class="content" md-background-bg layout="row" layout-align="start start">
172 <div class="main scrollable" ms-scroll>
173 <!-- VOICERECORDING TABLE -->
180 ng-model="vm.selectedVoiceRecordings"
181 md-progress="vm.promise"
185 md-order="vm.query.sort"
186 md-on-reorder="vm.getVoiceRecordings"
191 ng-if="vm.table == 'users' || vm.table == 'agents'"
194 <th md-column md-order-by="type">
195 {{ 'VOICE.TYPE' | translate }}
197 <th md-column md-order-by="uniqueid">
198 {{ 'VOICE.UNIQUEID' | translate }}
200 <th md-column md-order-by="calleridnum">
201 {{ 'VOICE.CALLER' | translate }}
203 <th md-column md-order-by="exten">
204 {{ 'VOICE.CALLED' | translate }}
206 <th md-column md-order-by="connectedlinenum">
207 {{ 'VOICE.CONNECTED' | translate }}
209 <th md-column md-order-by="queue">
210 {{ 'VOICE.QUEUE' | translate }}
212 <th md-column md-order-by="membername">
213 {{ 'VOICE.AGENT' | translate }}
215 <th md-column md-order-by="rating">
216 {{ 'VOICE.RATING' | translate }}
218 <th md-column md-order-by="audio">
219 {{ 'VOICE.AUDIO' | translate }}
221 <th md-column md-order-by="createdAt">
222 {{ 'VOICE.DATE' | translate }}
224 <th md-column md-order-by="userDisposition">
225 {{ 'VOICE.DISPOSITION' | translate }}
227 <th md-column md-order-by="userSecondDisposition">
228 {{ 'VOICE.SECOND_LEVEL_DISPOSITION' | translate }}
230 <th md-column md-order-by="userThirdDisposition">
231 {{ 'VOICE.THIRD_LEVEL_DISPOSITION' | translate }}
235 md-order-by="transcribeStatus"
236 ng-if="vm.license.ai"
238 {{ 'VOICE.TRANSCRIBE' | translate }}
240 <th md-column md-order-by="sentiment" ng-if="vm.license.ai">
241 {{ 'VOICE.SENTIMENTANALYSIS' | translate }}
243 <th md-column width="10px"></th>
247 <tr md-row ng-hide="vm.voiceRecordings.rows.length">
248 <td md-cell colspan="16">
249 <div layout="row" layout-align="center center">
250 <span translate="VOICE.NO_AVAILABLE_INFO"
251 >No Available Info</span
258 md-select="voiceRecording"
260 ng-repeat="voiceRecording in vm.voiceRecordings.rows"
262 <td md-cell ng-if="voiceRecording.userpic">
265 alt="{{voiceRecording.name}}"
266 ng-src="api/users/{{voiceRecording.id}}/avatar"
271 ng-if="!voiceRecording.userpic && (vm.table == 'users' || vm.table == 'agents')"
275 alt="{{voiceRecording.name}}"
276 ng-src="assets/images/avatars/profile.png"
280 ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)"
284 {{voiceRecording.type}}
287 ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)"
291 {{voiceRecording.uniqueid}}
294 ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)"
298 {{voiceRecording.calleridnum}}
301 ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)"
305 {{voiceRecording.exten}}
308 ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)"
310 class="connectedlinenum"
312 {{voiceRecording.connectedlinenum}}
315 ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)"
319 {{voiceRecording.queue}}
322 ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)"
326 {{voiceRecording.membername}}
329 ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)"
334 md-font-icon="icon-star"
336 ng-show="voiceRecording.rating"
337 ng-repeat="rating in [1,2,3,4,5] | limitTo:voiceRecording.rating"
340 ng-hide="voiceRecording.rating"
341 translate="VOICE.NO_RATING"
345 <td md-cell class="audio" ng-switch="voiceRecording.format">
346 <!-- audio recording directive -->
348 ng-switch-when=".wav"
349 id="voiceRecording.id"
351 <!-- / audio recording directive -->
352 <span ng-switch-when=".gsm|.WAV" ng-switch-when-separator="|">
353 <em>{{ 'VOICE.CANT_PLAY_GSM_AUDIO_FILES' | translate }}</em>
357 ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)"
361 {{voiceRecording.createdAt | date:'medium' }}
364 ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)"
366 class="userDisposition"
368 {{voiceRecording.userDisposition}}
371 ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)"
373 class="userSecondDisposition"
375 {{voiceRecording.userSecondDisposition}}
378 ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)"
380 class="userThirdDisposition"
382 {{voiceRecording.userThirdDisposition}}
385 ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)"
387 class="transcribeStatus"
388 ng-if="vm.license.ai"
390 {{ 'VOICE.TRANSCRIBESTATUS_' + voiceRecording.transcribeStatus
394 ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)"
397 ng-if="vm.license.ai"
399 {{voiceRecording.sentiment}}
402 <td md-cell class="actions">
405 class="md-icon-button"
408 translate-attr-aria-label="VOICE.MORE"
409 ng-click="$mdOpenMenu($event)"
411 <md-icon md-font-icon="icon-dots-vertical"></md-icon>
414 <md-menu-content width="3">
419 <md-menu-item ng-if="vm.crudPermissions.canEdit">
421 ng-click="vm.editstate(voiceRecording, $event )"
422 translate="VOICE.EDIT_VOICERECORDING"
433 ng-if="voiceRecording.transcribeStatus == 'NEW' && vm.license.ai"
436 ng-click="vm.runtranscriberuntranscribesentiment(voiceRecording, $event )"
437 translate="VOICE.RUNTRANSCRIBE_VOICERECORDING"
439 RunTranscribe VoiceRecording
448 ng-if="voiceRecording.transcribeStatus == 'NEW' && vm.license.ai"
451 ng-click="vm.runtranscribesentimentruntranscribesentiment(voiceRecording, $event )"
452 translate="VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING"
454 RunTranscribeSentiment VoiceRecording
463 ng-if="voiceRecording.transcribeStatus == 'COMPLETED' && voiceRecording.sentiment == null && vm.license.ai"
466 ng-click="vm.runsentimentruntranscribesentiment(voiceRecording, $event )"
467 translate="VOICE.RUNSENTIMENT_VOICERECORDING"
469 RunSentiment VoiceRecording
478 ng-if="voiceRecording.transcribeStatus == 'COMPLETED' && vm.license.ai"
481 ng-click="vm.downloadtranscribefile2(voiceRecording, $event )"
482 translate="VOICE.DOWNLOADTRANSCRIBE_VOICERECORDING"
484 DownloadTranscribe VoiceRecording
494 ng-click="vm.downloadfile2(voiceRecording, $event , 'voice/recordings' )"
495 translate="VOICE.DOWNLOAD_VOICERECORDING"
497 Download VoiceRecording
505 <md-menu-item ng-if="vm.crudPermissions.canDelete">
507 ng-click="vm.deleteconfirm(voiceRecording, $event )"
508 translate="VOICE.DELETE_VOICERECORDING"
510 Delete VoiceRecording
519 </md-table-container>
522 md-label="{page: '{{'VOICE.PAGE' | translate}}:', rowsPerPage: '{{'VOICE.ROWSPERPAGE' | translate}}:', of: '{{'VOICE.OF' | translate}}'}"
523 md-limit="vm.query.limit"
524 md-limit-options="[10, 15, 20, 50, 100, 250]"
525 md-page="vm.query.page"
526 md-total="{{vm.voiceRecordings.count}}"
527 md-on-paginate="vm.getVoiceRecordings"
529 ></md-table-pagination>
531 <!-- / VOICERECORDING TABLE -->
534 <!-- / NO RESULTS -->
540 <!-- NO ADD BUTTON BUTTON -->