703f171f61e22c23a934afe29fc51196c3c53d99
[motion-next.git] /
1 <div
2   id="motiondialer-queueCampaign"
3   class="page-layout simple tabbed"
4   layout="column"
5 >
6   <!-- HEADER -->
7   <div class="header md-accent-bg" layout="row" layout-align="start center">
8     <div class="white-fg" layout="row" layout-align="start center" flex>
9       <md-button
10         class="goto-queueCampaigns-button md-icon-button"
11         aria-label="Go to queueCampaigns"
12         ng-click="vm.gotoQueueCampaigns()"
13         translate
14         translate-attr-aria-label="MOTIONDIALER.GO_TO_QUEUECAMPAIGNS"
15       >
16         <md-icon md-font-icon="icon-arrow-left"></md-icon>
17       </md-button>
18
19       <div layout="row" layout-align="start center">
20         <div class="queueCampaign-image" hide-xs>
21           <img ng-src="assets/images/business/queueCampaigns.jpg" />
22         </div>
23
24         <div layout="column" layout-align="start start">
25           <div class="h2">
26             #{{vm.queueCampaign.id}}
27             <span ng-if="vm.queueCampaign.name">{{vm.queueCampaign.name}}</span>
28           </div>
29           <div class="subtitle secondary-text">
30             <span translate="MOTIONDIALER.CREATED_AT"></span>
31             <span>{{vm.queueCampaign.createdAt | date:'medium'}}</span>
32           </div>
33         </div>
34       </div>
35     </div>
36
37     <div ng-cloak ng-if="vm.crudPermissions.canEdit">
38       <md-button
39         ng-click="vm.clonedialog(vm.queueCampaign, $event)"
40         class="md-fab md-green-500-bg md-icon-button"
41         aria-label="clone"
42       >
43         <md-tooltip
44           ><span translate="MOTIONDIALER.CLONE_QUEUECAMPAIGN"></span
45         ></md-tooltip>
46         <md-icon md-font-icon="icon-content-duplicate"></md-icon>
47       </md-button>
48     </div>
49
50     <div ng-cloak>
51       <md-button
52         ng-click="vm.listadddialog(vm.queueCampaign, $event)"
53         class="md-fab md-green-500-bg md-icon-button"
54         aria-label="listadd"
55       >
56         <md-tooltip
57           ><span translate="MOTIONDIALER.LISTADD_QUEUECAMPAIGN"></span
58         ></md-tooltip>
59         <md-icon md-font-icon="icon-format-list-numbers"></md-icon>
60       </md-button>
61     </div>
62
63     <div ng-cloak>
64       <md-button
65         ng-click="vm.blacklistadddialog(vm.queueCampaign, $event)"
66         class="md-fab md-warn md-icon-button"
67         aria-label="blacklistadd"
68       >
69         <md-tooltip
70           ><span translate="MOTIONDIALER.BLACKLISTADD_QUEUECAMPAIGN"></span
71         ></md-tooltip>
72         <md-icon md-font-icon="icon-block-helper"></md-icon>
73       </md-button>
74     </div>
75
76     <div ng-cloak>
77       <md-button
78         ng-click="vm.teamadddialog(vm.queueCampaign, $event)"
79         class="md-fab md-orange-500-bg md-icon-button"
80         aria-label="teamadd"
81       >
82         <md-tooltip
83           ><span translate="MOTIONDIALER.TEAMADD_QUEUECAMPAIGN"></span
84         ></md-tooltip>
85         <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>
86       </md-button>
87     </div>
88
89     <div ng-cloak>
90       <md-button
91         ng-click="vm.agentadddialog(vm.queueCampaign, $event)"
92         class="md-fab md-purple-500-bg md-icon-button"
93         aria-label="agentadd"
94       >
95         <md-tooltip
96           ><span translate="MOTIONDIALER.AGENTADD_QUEUECAMPAIGN"></span
97         ></md-tooltip>
98         <md-icon md-font-icon="icon-account-plus"></md-icon>
99       </md-button>
100     </div>
101
102     <div ng-cloak ng-if="vm.crudPermissions.canEdit">
103       <md-button
104         ng-click="vm.resetlistdialog(vm.queueCampaign, $event)"
105         class="md-fab md-warn md-icon-button"
106         aria-label="resetlist"
107       >
108         <md-tooltip
109           ><span translate="MOTIONDIALER.RESETLIST_QUEUECAMPAIGN"></span
110         ></md-tooltip>
111         <md-icon md-font-icon="icon-restore"></md-icon>
112       </md-button>
113     </div>
114
115     <div ng-cloak>
116       <md-button
117         ng-click="vm.gotogoto(vm.queueCampaign, $event)"
118         class="md-fab md-warn md-icon-button"
119         aria-label="goto"
120       >
121         <md-tooltip
122           ><span translate="MOTIONDIALER.GOTO_QUEUECAMPAIGN"></span
123         ></md-tooltip>
124         <md-icon md-font-icon="icon-cast"></md-icon>
125       </md-button>
126     </div>
127     <div>
128       <md-button
129         type="submit"
130         ng-click="vm.saveQueueCampaign()"
131         ng-if="vm.crudPermissions.canEdit"
132         class="send-button md-accent md-raised"
133         ng-disabled="(generalForm.$invalid) || (campaignForm.$invalid) || (queueForm.$invalid) || (originateForm.$invalid) || (globalForm.$invalid) || (congestionForm.$invalid) || (busyForm.$invalid) || (noanswerForm.$invalid) || (nosuchnumberForm.$invalid) || (dropForm.$invalid) || (abandonedForm.$invalid) || (machineForm.$invalid) || (agentrejectForm.$invalid) || (advancedForm.$invalid) || (advancedpreviewForm.$invalid) || (thresholdsForm.$invalid) || (recallmeForm.$invalid) || (globalintervalForm.$invalid) || (timezoneForm.$invalid) || (amdForm.$invalid) || (hopperStatisticsForm.$invalid) || (hoppersForm.$invalid) || (hopperHistoriesForm.$invalid) || (hopperFinalsForm.$invalid) || (hopperBlacksForm.$invalid)"
134         translate="MOTIONDIALER.SAVE"
135         translate-attr-aria-label="MOTIONDIALER.SAVE"
136       >
137         SAVE
138       </md-button>
139     </div>
140   </div>
141   <!-- / HEADER -->
142
143   <!-- CONTENT -->
144   <div class="content">
145     <md-tabs
146       md-selected="vm.selectedTab"
147       md-stretch-tabs="always"
148       flex
149       layout-fill
150       md-dynamic-height
151     >
152       <md-tab>
153         <md-tab-label>
154           <span translate="MOTIONDIALER.SETTINGS">SETTINGS</span>
155         </md-tab-label>
156         <md-tab-body>
157           <div
158             class="queueCampaign-detail-form-container general md-background-bg md-whiteframe-1dp"
159           >
160             <div class="pb-16" layout="row" layout-align="start center">
161               <div class="h2 secondary-text" translate="MOTIONDIALER.GENERAL">
162                 GENERAL
163               </div>
164             </div>
165             <form name="generalForm" novalidate>
166               <md-input-container class="md-block">
167                 <label translate="MOTIONDIALER.NAME">Name</label>
168                 <input
169                   type="text"
170                   name="name"
171                   ng-model="vm.queueCampaign.name"
172                   ng-pattern="/^[A-Za-z0-9\.\_]+$/i"
173                   ng-required="true"
174                   autofocus
175                   disabled
176                 />
177
178                 <div class="hint">
179                   <span translate="MOTIONDIALER.HELP.NAME"></span>
180                 </div>
181                 <div
182                   ng-messages="generalForm['name'].$error"
183                   ng-show="generalForm['name'].$touched"
184                   role="alert"
185                 >
186                   <div ng-message="required">
187                     <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED"
188                       >Name field is required</span
189                     >
190                   </div>
191                   <div ng-message="pattern">
192                     <span
193                       translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN"
194                       translate-values="{ regex: '/^[A-Za-z0-9\.\_]+$/i' }"
195                       >Name must be valid pattern
196                     </span>
197                   </div>
198                 </div>
199               </md-input-container>
200               <md-input-container class="md-block">
201                 <md-switch
202                   ng-model="vm.queueCampaign.dialActive"
203                   aria-label="Active"
204                   ng-disabled="!vm.crudPermissions.canEdit"
205                   ><span translate="MOTIONDIALER.ACTIVE"
206                     >Active</span
207                   ></md-switch
208                 >
209               </md-input-container>
210               <md-input-container class="md-block">
211                 <label translate="MOTIONDIALER.TRUNK">Trunk</label>
212                 <md-select
213                   name="TrunkId"
214                   ng-model="vm.queueCampaign.TrunkId"
215                   required
216                   ng-disabled="!vm.crudPermissions.canEdit"
217                 >
218                   <md-option
219                     ng-value="TrunkId.id"
220                     ng-repeat="TrunkId in vm.trunks"
221                     ng-disabled="TrunkId.canSelect === false"
222                     >{{ TrunkId.name }}</md-option
223                   >
224                 </md-select>
225                 <div
226                   ng-messages="generalForm['TrunkId'].$error"
227                   ng-show="generalForm['TrunkId'].$touched"
228                   role="alert"
229                 >
230                   <div ng-message="required">
231                     <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED"
232                       >Trunk field is required</span
233                     >
234                   </div>
235                 </div>
236               </md-input-container>
237               <md-input-container class="md-block">
238                 <label translate="MOTIONDIALER.BACKUPTRUNK">BackupTrunk</label>
239                 <md-select
240                   name="TrunkBackupId"
241                   ng-model="vm.queueCampaign.TrunkBackupId"
242                   ng-disabled="!vm.crudPermissions.canEdit"
243                 >
244                   <md-option ng-value="null">None</md-option>
245                   <md-option
246                     ng-value="TrunkBackupId.id"
247                     ng-repeat="TrunkBackupId in vm.trunks"
248                     ng-disabled="TrunkBackupId.canSelect === false"
249                     >{{ TrunkBackupId.name }}</md-option
250                   >
251                 </md-select>
252                 <div
253                   ng-messages="generalForm['TrunkBackupId'].$error"
254                   ng-show="generalForm['TrunkBackupId'].$touched"
255                   role="alert"
256                 >
257                   <div ng-message="required">
258                     <span translate="MOTIONDIALER.ERRORS.BACKUPTRUNK_REQUIRED"
259                       >BackupTrunk field is required</span
260                     >
261                   </div>
262                 </div>
263               </md-input-container>
264               <md-input-container
265                 ng-if="vm.queueCampaign.dialMethod != 'preview'"
266                 class="md-block"
267               >
268                 <label translate="MOTIONDIALER.INTERVAL">Interval</label>
269                 <md-select
270                   name="IntervalId"
271                   ng-model="vm.queueCampaign.IntervalId"
272                   required
273                   ng-disabled="!vm.crudPermissions.canEdit"
274                 >
275                   <md-option
276                     ng-value="IntervalId.id"
277                     ng-repeat="IntervalId in vm.interval"
278                     ng-disabled="IntervalId.canSelect === false"
279                     >{{ IntervalId.name }}</md-option
280                   >
281                 </md-select>
282                 <div
283                   ng-messages="generalForm['IntervalId'].$error"
284                   ng-show="generalForm['IntervalId'].$touched"
285                   role="alert"
286                 >
287                   <div ng-message="required">
288                     <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED"
289                       >Interval field is required</span
290                     >
291                   </div>
292                 </div>
293               </md-input-container>
294               <md-input-container class="md-block">
295                 <label translate="MOTIONDIALER.CHECKDUPLICATE"
296                   >CheckDuplicate</label
297                 >
298                 <md-select
299                   name="dialCheckDuplicateType"
300                   ng-model="vm.queueCampaign.dialCheckDuplicateType"
301                   required
302                   ng-disabled="!vm.crudPermissions.canEdit"
303                 >
304                   <md-option ng-value="'always'">
305                     {{ 'MOTIONDIALER.ALWAYS' | translate }}
306                   </md-option>
307
308                   <md-option ng-value="'never'">
309                     {{ 'MOTIONDIALER.NEVER' | translate }}
310                   </md-option>
311
312                   <md-option ng-value="'onlyIfOpen'">
313                     {{ 'MOTIONDIALER.ONLY_IF_OPEN' | translate }}
314                   </md-option>
315                 </md-select>
316                 <div
317                   ng-messages="generalForm['dialCheckDuplicateType'].$error"
318                   ng-show="generalForm['dialCheckDuplicateType'].$touched"
319                   role="alert"
320                 >
321                   <div ng-message="required">
322                     <span
323                       translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED"
324                       >CheckDuplicate field is required</span
325                     >
326                   </div>
327                 </div>
328               </md-input-container>
329               <md-input-container class="md-block">
330                 <label translate="MOTIONDIALER.CUTDIGIT">CutDigit</label>
331                 <input
332                   type="number"
333                   name="dialCutDigit"
334                   ng-model="vm.queueCampaign.dialCutDigit"
335                   min="0"
336                   max="15"
337                   ng-required="true"
338                   ng-disabled="!vm.crudPermissions.canEdit"
339                 />
340
341                 <div
342                   ng-messages="generalForm['dialCutDigit'].$error"
343                   ng-show="generalForm['dialCutDigit'].$touched"
344                   role="alert"
345                 >
346                   <div ng-message="required">
347                     <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_REQUIRED"
348                       >CutDigit field is required</span
349                     >
350                   </div>
351                   <div ng-message="min">
352                     <span
353                       translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO"
354                       >CutDigit must be a valid greater or equal than</span
355                     >
356                     <span>0</span>
357                   </div>
358                   <div ng-message="max">
359                     <span
360                       translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_LESS_THAN_OR_EQUAL_TO"
361                       >CutDigit must be a valid greater or equal than</span
362                     >
363                     <span>15</span>
364                   </div>
365                 </div>
366               </md-input-container>
367               <md-input-container class="md-block">
368                 <label translate="MOTIONDIALER.DESCRIPTION">Description</label>
369                 <input
370                   type="text"
371                   name="description"
372                   ng-model="vm.queueCampaign.description"
373                   ng-disabled="!vm.crudPermissions.canEdit"
374                 />
375
376                 <div
377                   ng-messages="generalForm['description'].$error"
378                   ng-show="generalForm['description'].$touched"
379                   role="alert"
380                 >
381                   <div ng-message="required">
382                     <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED"
383                       >Description field is required</span
384                     >
385                   </div>
386                 </div>
387               </md-input-container>
388             </form>
389           </div>
390         </md-tab-body>
391       </md-tab>
392       <md-tab>
393         <md-tab-label>
394           <span translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</span>
395         </md-tab-label>
396         <md-tab-body>
397           <div
398             class="queueCampaign-detail-form-container campaign md-background-bg md-whiteframe-1dp"
399           >
400             <div class="pb-16" layout="row" layout-align="start center">
401               <div class="h2 secondary-text" translate="MOTIONDIALER.CAMPAIGN">
402                 CAMPAIGN
403               </div>
404             </div>
405             <form name="campaignForm" novalidate>
406               <md-input-container class="md-block">
407                 <label translate="MOTIONDIALER.METHOD">Method</label>
408                 <md-select
409                   name="dialMethod"
410                   ng-model="vm.queueCampaign.dialMethod"
411                   autofocus
412                   required
413                   ng-disabled="!vm.crudPermissions.canEdit"
414                 >
415                   <md-option ng-value="'progressive'">Progressive</md-option>
416                   <md-option ng-value="'power'">PowerDialing</md-option>
417                   <md-option ng-value="'predictive'">Predictive</md-option>
418                   <md-option ng-value="'preview'">Preview</md-option>
419                   <md-option ng-value="'booked'">BookedProgressive</md-option>
420                 </md-select>
421                 <div class="hint">
422                   <span translate="MOTIONDIALER.HELP.METHOD"></span>
423                 </div>
424                 <div
425                   ng-messages="campaignForm['dialMethod'].$error"
426                   ng-show="campaignForm['dialMethod'].$touched"
427                   role="alert"
428                 >
429                   <div ng-message="required">
430                     <span translate="MOTIONDIALER.ERRORS.METHOD_REQUIRED"
431                       >Method field is required</span
432                     >
433                   </div>
434                 </div>
435               </md-input-container>
436               <md-input-container
437                 ng-if="vm.queueCampaign.dialMethod == 'power'"
438                 class="md-block"
439               >
440                 <span translate="MOTIONDIALER.POWERLEVEL">PowerLevel</span>
441                 <div class="hint">
442                   <span translate="MOTIONDIALER.HELP.POWERLEVEL"></span>
443                 </div>
444                 <md-slider
445                   md-discrete
446                   flex
447                   ng-model="vm.queueCampaign.dialPowerLevel"
448                   min="1"
449                   max="10"
450                   step="0.1"
451                   class="md-accent"
452                 ></md-slider>
453               </md-input-container>
454               <md-input-container
455                 ng-if="vm.queueCampaign.dialMethod == 'predictive'"
456                 class="md-block"
457               >
458                 <label translate="MOTIONDIALER.PREDICTIVEOPTIMIZATION"
459                   >PredictiveOptimization</label
460                 >
461                 <md-select
462                   name="dialPredictiveOptimization"
463                   ng-model="vm.queueCampaign.dialPredictiveOptimization"
464                   ng-disabled="!vm.crudPermissions.canEdit"
465                 >
466                   <md-option ng-value="'agentBusyFactor'">
467                     {{ 'MOTIONDIALER.AGENTBUSYFACTOR' | translate }}
468                   </md-option>
469
470                   <md-option ng-value="'dropRate'">
471                     {{ 'MOTIONDIALER.DROPRATE' | translate }}
472                   </md-option>
473                 </md-select>
474                 <div class="hint">
475                   <span
476                     translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATION"
477                   ></span>
478                 </div>
479                 <div
480                   ng-messages="campaignForm['dialPredictiveOptimization'].$error"
481                   ng-show="campaignForm['dialPredictiveOptimization'].$touched"
482                   role="alert"
483                 >
484                   <div ng-message="required">
485                     <span
486                       translate="MOTIONDIALER.ERRORS.PREDICTIVEOPTIMIZATION_REQUIRED"
487                       >PredictiveOptimization field is required</span
488                     >
489                   </div>
490                 </div>
491               </md-input-container>
492               <md-input-container
493                 ng-if="vm.queueCampaign.dialMethod == 'predictive'"
494                 class="md-block"
495               >
496                 <span translate="MOTIONDIALER.PREDICTIVEOPTIMIZATIONPERCENTAGE"
497                   >PredictiveOptimizationPercentage</span
498                 >
499                 <div class="hint">
500                   <span
501                     translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATIONPERCENTAGE"
502                   ></span>
503                 </div>
504                 <md-slider
505                   md-discrete
506                   flex
507                   ng-model="vm.queueCampaign.dialPredictiveOptimizationPercentage"
508                   min="1"
509                   max="95"
510                   step="0.1"
511                   class="md-accent"
512                 ></md-slider>
513               </md-input-container>
514               <md-input-container
515                 ng-if="vm.queueCampaign.dialMethod == 'predictive'"
516                 class="md-block"
517               >
518                 <span translate="MOTIONDIALER.PREDICTIVEINTERVAL"
519                   >PredictiveInterval</span
520                 >
521                 <div class="hint">
522                   <span translate="MOTIONDIALER.HELP.PREDICTIVEINTERVAL"></span>
523                 </div>
524                 <md-slider
525                   md-discrete
526                   flex
527                   ng-model="vm.queueCampaign.dialPredictiveInterval"
528                   min="5"
529                   max="30"
530                   step="1"
531                   class="md-accent"
532                 ></md-slider>
533               </md-input-container>
534               <md-input-container
535                 ng-if="vm.queueCampaign.dialMethod != 'preview'"
536                 class="md-block"
537               >
538                 <label translate="MOTIONDIALER.MAXCONCURRENTCALLS"
539                   >MaxConcurrentCalls</label
540                 >
541                 <input
542                   type="number"
543                   name="dialLimitQueue"
544                   ng-model="vm.queueCampaign.dialLimitQueue"
545                   min="0"
546                   max="9999"
547                   ng-required="true"
548                   ng-disabled="!vm.crudPermissions.canEdit"
549                 />
550
551                 <div class="hint">
552                   <span translate="MOTIONDIALER.HELP.MAXCONCURRENTCALLS"></span>
553                 </div>
554                 <div
555                   ng-messages="campaignForm['dialLimitQueue'].$error"
556                   ng-show="campaignForm['dialLimitQueue'].$touched"
557                   role="alert"
558                 >
559                   <div ng-message="required">
560                     <span
561                       translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_REQUIRED"
562                       >MaxConcurrentCalls field is required</span
563                     >
564                   </div>
565                   <div ng-message="min">
566                     <span
567                       translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO"
568                       >MaxConcurrentCalls must be a valid greater or equal
569                       than</span
570                     >
571                     <span>0</span>
572                   </div>
573                   <div ng-message="max">
574                     <span
575                       translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO"
576                       >MaxConcurrentCalls must be a valid greater or equal
577                       than</span
578                     >
579                     <span>9999</span>
580                   </div>
581                 </div>
582               </md-input-container>
583               <md-input-container class="md-block">
584                 <label translate="MOTIONDIALER.AGENTTIMEOUT"
585                   >AgentTimeout</label
586                 >
587                 <input
588                   type="number"
589                   name="timeout"
590                   ng-model="vm.queueCampaign.timeout"
591                   min="0"
592                   ng-required="true"
593                   ng-disabled="!vm.crudPermissions.canEdit"
594                 />
595
596                 <div class="hint">
597                   <span translate="MOTIONDIALER.HELP.AGENTTIMEOUT"></span>
598                 </div>
599                 <div
600                   ng-messages="campaignForm['timeout'].$error"
601                   ng-show="campaignForm['timeout'].$touched"
602                   role="alert"
603                 >
604                   <div ng-message="required">
605                     <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_REQUIRED"
606                       >AgentTimeout field is required</span
607                     >
608                   </div>
609                   <div ng-message="min">
610                     <span
611                       translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO"
612                       >AgentTimeout must be a valid greater or equal than</span
613                     >
614                     <span>0</span>
615                   </div>
616                 </div>
617               </md-input-container>
618             </form>
619           </div>
620           <div
621             class="queueCampaign-detail-form-container queue md-background-bg md-whiteframe-1dp"
622           >
623             <div class="pb-16" layout="row" layout-align="start center">
624               <div class="h2 secondary-text" translate="MOTIONDIALER.QUEUE">
625                 QUEUE
626               </div>
627             </div>
628             <form name="queueForm" novalidate>
629               <md-input-container
630                 ng-if="vm.queueCampaign.dialMethod === 'progressive' || vm.queueCampaign.dialMethod === 'predictive' || vm.queueCampaign.dialMethod === 'power'"
631                 class="md-block"
632               >
633                 <label translate="MOTIONDIALER.QUEUEOPTIONS"
634                   >QueueOptions</label
635                 >
636                 <input
637                   type="text"
638                   name="dialQueueOptions"
639                   ng-model="vm.queueCampaign.dialQueueOptions"
640                   autofocus
641                   ng-disabled="!vm.crudPermissions.canEdit"
642                 />
643
644                 <div
645                   ng-messages="queueForm['dialQueueOptions'].$error"
646                   ng-show="queueForm['dialQueueOptions'].$touched"
647                   role="alert"
648                 >
649                   <div ng-message="required">
650                     <span translate="MOTIONDIALER.ERRORS.QUEUEOPTIONS_REQUIRED"
651                       >QueueOptions field is required</span
652                     >
653                   </div>
654                 </div>
655               </md-input-container>
656               <md-input-container
657                 ng-if="vm.queueCampaign.dialMethod === 'progressive' || vm.queueCampaign.dialMethod === 'predictive' || vm.queueCampaign.dialMethod === 'power'"
658                 class="md-block"
659               >
660                 <label translate="MOTIONDIALER.QUEUETIMEOUT"
661                   >QueueTimeout</label
662                 >
663                 <input
664                   type="number"
665                   name="dialQueueTimeout"
666                   ng-model="vm.queueCampaign.dialQueueTimeout"
667                   min="1"
668                   max="999"
669                   ng-required="true"
670                   ng-disabled="!vm.crudPermissions.canEdit"
671                 />
672
673                 <div class="hint">
674                   <span translate="MOTIONDIALER.HELP.QUEUETIMEOUT"></span>
675                 </div>
676                 <div
677                   ng-messages="queueForm['dialQueueTimeout'].$error"
678                   ng-show="queueForm['dialQueueTimeout'].$touched"
679                   role="alert"
680                 >
681                   <div ng-message="required">
682                     <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_REQUIRED"
683                       >QueueTimeout field is required</span
684                     >
685                   </div>
686                   <div ng-message="min">
687                     <span
688                       translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO"
689                       >QueueTimeout must be a valid greater or equal than</span
690                     >
691                     <span>1</span>
692                   </div>
693                   <div ng-message="max">
694                     <span
695                       translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO"
696                       >QueueTimeout must be a valid greater or equal than</span
697                     >
698                     <span>999</span>
699                   </div>
700                 </div>
701               </md-input-container>
702               <md-input-container
703                 ng-if="vm.queueCampaign.dialMethod === 'booked' || vm.queueCampaign.dialMethod === 'progressive' || vm.queueCampaign.dialMethod === 'predictive' || vm.queueCampaign.dialMethod === 'power'"
704                 class="md-block"
705               >
706                 <label translate="MOTIONDIALER.STRATEGY">Strategy</label>
707                 <md-select
708                   name="strategy"
709                   ng-model="vm.queueCampaign.strategy"
710                   required
711                   ng-disabled="!vm.crudPermissions.canEdit"
712                 >
713                   <md-option ng-value="'rrmemory'"
714                     >Round Robin Memory</md-option
715                   >
716                   <md-option
717                     ng-value="'roundrobin'"
718                     ng-if="vm.queueCampaign.dialMethod === 'booked'"
719                     >Round Robin</md-option
720                   >
721                   <md-option
722                     ng-value="'leastrecent'"
723                     ng-if="vm.queueCampaign.dialMethod !== 'booked'"
724                     >Least Recent</md-option
725                   >
726                   <md-option
727                     ng-value="'fewestcalls'"
728                     ng-if="vm.queueCampaign.dialMethod !== 'booked'"
729                     >Fewest Calls</md-option
730                   >
731                   <md-option
732                     ng-value="'random'"
733                     ng-if="vm.queueCampaign.dialMethod !== 'booked'"
734                     >Random</md-option
735                   >
736                   <md-option
737                     ng-value="'linear'"
738                     ng-if="vm.queueCampaign.dialMethod !== 'booked'"
739                     >Linear</md-option
740                   >
741                   <md-option
742                     ng-value="'wrandom'"
743                     ng-if="vm.queueCampaign.dialMethod !== 'booked'"
744                     >Weight Random</md-option
745                   >
746                 </md-select>
747                 <div
748                   ng-messages="queueForm['strategy'].$error"
749                   ng-show="queueForm['strategy'].$touched"
750                   role="alert"
751                 >
752                   <div ng-message="required">
753                     <span translate="MOTIONDIALER.ERRORS.STRATEGY_REQUIRED"
754                       >Strategy field is required</span
755                     >
756                   </div>
757                 </div>
758               </md-input-container>
759               <md-input-container
760                 ng-if="vm.queueCampaign.dialMethod === 'progressive' || vm.queueCampaign.dialMethod === 'predictive' || vm.queueCampaign.dialMethod === 'power'"
761                 class="md-block"
762               >
763                 <label translate="MOTIONDIALER.RETRY">Retry</label>
764                 <input
765                   type="number"
766                   name="retry"
767                   ng-model="vm.queueCampaign.retry"
768                   min="0"
769                   ng-disabled="!vm.crudPermissions.canEdit"
770                 />
771
772                 <div class="hint">
773                   <span translate="MOTIONDIALER.HELP.RETRY"></span>
774                 </div>
775                 <div
776                   ng-messages="queueForm['retry'].$error"
777                   ng-show="queueForm['retry'].$touched"
778                   role="alert"
779                 >
780                   <div ng-message="required">
781                     <span translate="MOTIONDIALER.ERRORS.RETRY_REQUIRED"
782                       >Retry field is required</span
783                     >
784                   </div>
785                   <div ng-message="min">
786                     <span
787                       translate="MOTIONDIALER.ERRORS.RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO"
788                       >Retry must be a valid greater or equal than</span
789                     >
790                     <span>0</span>
791                   </div>
792                 </div>
793               </md-input-container>
794               <md-input-container
795                 ng-if="vm.queueCampaign.dialMethod === 'progressive' || vm.queueCampaign.dialMethod === 'predictive' || vm.queueCampaign.dialMethod === 'power'"
796                 class="md-block"
797               >
798                 <label translate="MOTIONDIALER.WRAPUPTIME">WrapupTime</label>
799                 <input
800                   type="number"
801                   name="wrapuptime"
802                   ng-model="vm.queueCampaign.wrapuptime"
803                   min="0"
804                   ng-disabled="!vm.crudPermissions.canEdit"
805                 />
806
807                 <div class="hint">
808                   <span translate="MOTIONDIALER.HELP.WRAPUPTIME"></span>
809                 </div>
810                 <div
811                   ng-messages="queueForm['wrapuptime'].$error"
812                   ng-show="queueForm['wrapuptime'].$touched"
813                   role="alert"
814                 >
815                   <div ng-message="required">
816                     <span translate="MOTIONDIALER.ERRORS.WRAPUPTIME_REQUIRED"
817                       >WrapupTime field is required</span
818                     >
819                   </div>
820                   <div ng-message="min">
821                     <span
822                       translate="MOTIONDIALER.ERRORS.WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO"
823                       >WrapupTime must be a valid greater or equal than</span
824                     >
825                     <span>0</span>
826                   </div>
827                 </div>
828               </md-input-container>
829               <md-input-container
830                 ng-if="vm.queueCampaign.dialMethod === 'progressive' || vm.queueCampaign.dialMethod === 'predictive' || vm.queueCampaign.dialMethod === 'power'"
831                 class="md-block"
832               >
833                 <label translate="MOTIONDIALER.WEIGHT">Weight</label>
834                 <input
835                   type="number"
836                   name="weight"
837                   ng-model="vm.queueCampaign.weight"
838                   min="0"
839                   ng-disabled="!vm.crudPermissions.canEdit"
840                 />
841
842                 <div class="hint">
843                   <span translate="MOTIONDIALER.HELP.WEIGHT"></span>
844                 </div>
845                 <div
846                   ng-messages="queueForm['weight'].$error"
847                   ng-show="queueForm['weight'].$touched"
848                   role="alert"
849                 >
850                   <div ng-message="required">
851                     <span translate="MOTIONDIALER.ERRORS.WEIGHT_REQUIRED"
852                       >Weight field is required</span
853                     >
854                   </div>
855                   <div ng-message="min">
856                     <span
857                       translate="MOTIONDIALER.ERRORS.WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO"
858                       >Weight must be a valid greater or equal than</span
859                     >
860                     <span>0</span>
861                   </div>
862                 </div>
863               </md-input-container>
864               <md-input-container
865                 ng-if="vm.queueCampaign.dialMethod === 'progressive' || vm.queueCampaign.dialMethod === 'predictive' || vm.queueCampaign.dialMethod === 'power'"
866                 class="md-block"
867               >
868                 <label translate="MOTIONDIALER.MUSICONHOLD">MusicOnHold</label>
869                 <md-select
870                   name="musiconhold"
871                   ng-model="vm.queueCampaign.musiconhold"
872                   ng-disabled="!vm.crudPermissions.canEdit"
873                 >
874                   <md-option
875                     ng-value="musiconhold.name"
876                     ng-repeat="musiconhold in vm.musiconholds"
877                     ng-disabled="musiconhold.canSelect === false"
878                     >{{ musiconhold.name }}</md-option
879                   >
880                 </md-select>
881                 <div class="hint">
882                   <span translate="MOTIONDIALER.HELP.MUSICONHOLD"></span>
883                 </div>
884                 <div
885                   ng-messages="queueForm['musiconhold'].$error"
886                   ng-show="queueForm['musiconhold'].$touched"
887                   role="alert"
888                 >
889                   <div ng-message="required">
890                     <span translate="MOTIONDIALER.ERRORS.MUSICONHOLD_REQUIRED"
891                       >MusicOnHold field is required</span
892                     >
893                   </div>
894                 </div>
895               </md-input-container>
896               <md-input-container
897                 ng-if="vm.queueCampaign.dialMethod === 'progressive' || vm.queueCampaign.dialMethod === 'predictive' || vm.queueCampaign.dialMethod === 'power'"
898                 class="md-block"
899               >
900                 <label translate="MOTIONDIALER.CALLYSQUAREPROJECT"
901                   >CallySquareProject</label
902                 >
903                 <md-select
904                   name="dialQueueProject"
905                   ng-model="vm.queueCampaign.dialQueueProject"
906                   ng-disabled="!vm.crudPermissions.canEdit"
907                 >
908                   <md-option ng-value="null">None</md-option>
909                   <md-option
910                     ng-value="dialQueueProject.name"
911                     ng-repeat="dialQueueProject in vm.projects"
912                     ng-disabled="dialQueueProject.canSelect === false"
913                     >{{ dialQueueProject.name }}</md-option
914                   >
915                 </md-select>
916                 <div class="hint">
917                   <span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECT"></span>
918                 </div>
919                 <div
920                   ng-messages="queueForm['dialQueueProject'].$error"
921                   ng-show="queueForm['dialQueueProject'].$touched"
922                   role="alert"
923                 >
924                   <div ng-message="required">
925                     <span
926                       translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT_REQUIRED"
927                       >CallySquareProject field is required</span
928                     >
929                   </div>
930                 </div>
931               </md-input-container>
932               <md-input-container
933                 ng-if="vm.queueCampaign.dialMethod === 'progressive' || vm.queueCampaign.dialMethod === 'predictive' || vm.queueCampaign.dialMethod === 'power'"
934                 class="md-block"
935               >
936                 <label translate="MOTIONDIALER.CALLYSQUAREPROJECT2"
937                   >CallySquareProject2</label
938                 >
939                 <md-select
940                   name="dialQueueProject2"
941                   ng-model="vm.queueCampaign.dialQueueProject2"
942                   ng-disabled="!vm.crudPermissions.canEdit"
943                 >
944                   <md-option ng-value="null">None</md-option>
945                   <md-option
946                     ng-value="dialQueueProject2.name"
947                     ng-repeat="dialQueueProject2 in vm.projects"
948                     ng-disabled="dialQueueProject2.canSelect === false"
949                     >{{ dialQueueProject2.name }}</md-option
950                   >
951                 </md-select>
952                 <div class="hint">
953                   <span
954                     translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECT2"
955                   ></span>
956                 </div>
957                 <div
958                   ng-messages="queueForm['dialQueueProject2'].$error"
959                   ng-show="queueForm['dialQueueProject2'].$touched"
960                   role="alert"
961                 >
962                   <div ng-message="required">
963                     <span
964                       translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT2_REQUIRED"
965                       >CallySquareProject2 field is required</span
966                     >
967                   </div>
968                 </div>
969               </md-input-container>
970               <md-input-container
971                 ng-if="vm.queueCampaign.dialMethod === 'preview' || vm.queueCampaign.dialMethod === 'booked'"
972                 class="md-block"
973               >
974                 <label translate="MOTIONDIALER.CALLYSQUAREPROJECTPREVIEW"
975                   >CallySquareProjectPreview</label
976                 >
977                 <md-select
978                   name="dialQueueProject"
979                   ng-model="vm.queueCampaign.dialQueueProject"
980                   ng-disabled="!vm.crudPermissions.canEdit"
981                 >
982                   <md-option ng-value="null">None</md-option>
983                   <md-option
984                     ng-value="dialQueueProject.name"
985                     ng-repeat="dialQueueProject in vm.projects"
986                     ng-disabled="dialQueueProject.canSelect === false"
987                     >{{ dialQueueProject.name }}</md-option
988                   >
989                 </md-select>
990                 <div class="hint">
991                   <span
992                     translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECTPREVIEW"
993                   ></span>
994                 </div>
995                 <div
996                   ng-messages="queueForm['dialQueueProject'].$error"
997                   ng-show="queueForm['dialQueueProject'].$touched"
998                   role="alert"
999                 >
1000                   <div ng-message="required">
1001                     <span
1002                       translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECTPREVIEW_REQUIRED"
1003                       >CallySquareProjectPreview field is required</span
1004                     >
1005                   </div>
1006                 </div>
1007               </md-input-container>
1008               <md-input-container
1009                 ng-if="vm.queueCampaign.dialMethod === 'preview' || vm.queueCampaign.dialMethod === 'booked'"
1010                 class="md-block"
1011               >
1012                 <label translate="MOTIONDIALER.CALLYSQUAREPROJECTPREVIEW2"
1013                   >CallySquareProjectPreview2</label
1014                 >
1015                 <md-select
1016                   name="dialQueueProject2"
1017                   ng-model="vm.queueCampaign.dialQueueProject2"
1018                   ng-disabled="!vm.crudPermissions.canEdit"
1019                 >
1020                   <md-option ng-value="null">None</md-option>
1021                   <md-option
1022                     ng-value="dialQueueProject2.name"
1023                     ng-repeat="dialQueueProject2 in vm.projects"
1024                     ng-disabled="dialQueueProject2.canSelect === false"
1025                     >{{ dialQueueProject2.name }}</md-option
1026                   >
1027                 </md-select>
1028                 <div class="hint">
1029                   <span
1030                     translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECTPREVIEW2"
1031                   ></span>
1032                 </div>
1033                 <div
1034                   ng-messages="queueForm['dialQueueProject2'].$error"
1035                   ng-show="queueForm['dialQueueProject2'].$touched"
1036                   role="alert"
1037                 >
1038                   <div ng-message="required">
1039                     <span
1040                       translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECTPREVIEW2_REQUIRED"
1041                       >CallySquareProjectPreview2 field is required</span
1042                     >
1043                   </div>
1044                 </div>
1045               </md-input-container>
1046               <md-input-container
1047                 ng-if="vm.queueCampaign.dialQueueProject2 && (vm.queueCampaign.dialMethod === 'progressive' || vm.queueCampaign.dialMethod === 'predictive' || vm.queueCampaign.dialMethod === 'power')"
1048                 class="md-block"
1049               >
1050                 <md-switch
1051                   ng-model="vm.queueCampaign.dialAgiAfterHangupAgent"
1052                   aria-label="RunIfHangupAgent"
1053                   ng-disabled="!vm.crudPermissions.canEdit"
1054                   ><span translate="MOTIONDIALER.RUNIFHANGUPAGENT"
1055                     >RunIfHangupAgent</span
1056                   ></md-switch
1057                 >
1058
1059                 <div class="hint">
1060                   <span translate="MOTIONDIALER.HELP.RUNIFHANGUPAGENT"></span>
1061                 </div>
1062               </md-input-container>
1063             </form>
1064           </div>
1065           <div
1066             class="queueCampaign-detail-form-container originate md-background-bg md-whiteframe-1dp"
1067           >
1068             <div class="pb-16" layout="row" layout-align="start center">
1069               <div class="h2 secondary-text" translate="MOTIONDIALER.ORIGINATE">
1070                 ORIGINATE
1071               </div>
1072             </div>
1073             <form name="originateForm" novalidate>
1074               <md-input-container class="md-block">
1075                 <label translate="MOTIONDIALER.ORIGINATECALLERIDNAME"
1076                   >OriginateCallerIdName</label
1077                 >
1078                 <input
1079                   type="text"
1080                   name="dialOriginateCallerIdName"
1081                   ng-model="vm.queueCampaign.dialOriginateCallerIdName"
1082                   autofocus
1083                   ng-disabled="!vm.crudPermissions.canEdit"
1084                 />
1085
1086                 <div class="hint">
1087                   <span
1088                     translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNAME"
1089                   ></span>
1090                 </div>
1091                 <div
1092                   ng-messages="originateForm['dialOriginateCallerIdName'].$error"
1093                   ng-show="originateForm['dialOriginateCallerIdName'].$touched"
1094                   role="alert"
1095                 >
1096                   <div ng-message="required">
1097                     <span
1098                       translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNAME_REQUIRED"
1099                       >OriginateCallerIdName field is required</span
1100                     >
1101                   </div>
1102                 </div>
1103               </md-input-container>
1104               <md-input-container class="md-block">
1105                 <label translate="MOTIONDIALER.ORIGINATECALLERIDNUMBER"
1106                   >OriginateCallerIdNumber</label
1107                 >
1108                 <input
1109                   type="text"
1110                   name="dialOriginateCallerIdNumber"
1111                   ng-model="vm.queueCampaign.dialOriginateCallerIdNumber"
1112                   ng-disabled="!vm.crudPermissions.canEdit"
1113                 />
1114
1115                 <div class="hint">
1116                   <span
1117                     translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNUMBER"
1118                   ></span>
1119                 </div>
1120                 <div
1121                   ng-messages="originateForm['dialOriginateCallerIdNumber'].$error"
1122                   ng-show="originateForm['dialOriginateCallerIdNumber'].$touched"
1123                   role="alert"
1124                 >
1125                   <div ng-message="required">
1126                     <span
1127                       translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNUMBER_REQUIRED"
1128                       >OriginateCallerIdNumber field is required</span
1129                     >
1130                   </div>
1131                 </div>
1132               </md-input-container>
1133               <md-input-container class="md-block">
1134                 <label translate="MOTIONDIALER.RANDOMLASTDIGITCALLERIDNUMBER"
1135                   >RandomLastDigitCallerIdNumber</label
1136                 >
1137                 <input
1138                   type="number"
1139                   name="dialRandomLastDigitCallerIdNumber"
1140                   ng-model="vm.queueCampaign.dialRandomLastDigitCallerIdNumber"
1141                   min="0"
1142                   max="15"
1143                   ng-required="true"
1144                   ng-disabled="!vm.crudPermissions.canEdit"
1145                 />
1146
1147                 <div class="hint">
1148                   <span
1149                     translate="MOTIONDIALER.HELP.RANDOMLASTDIGITCALLERIDNUMBER"
1150                   ></span>
1151                 </div>
1152                 <div
1153                   ng-messages="originateForm['dialRandomLastDigitCallerIdNumber'].$error"
1154                   ng-show="originateForm['dialRandomLastDigitCallerIdNumber'].$touched"
1155                   role="alert"
1156                 >
1157                   <div ng-message="required">
1158                     <span
1159                       translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_REQUIRED"
1160                       >RandomLastDigitCallerIdNumber field is required</span
1161                     >
1162                   </div>
1163                   <div ng-message="min">
1164                     <span
1165                       translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO"
1166                       >RandomLastDigitCallerIdNumber must be a valid greater or
1167                       equal than</span
1168                     >
1169                     <span>0</span>
1170                   </div>
1171                   <div ng-message="max">
1172                     <span
1173                       translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO"
1174                       >RandomLastDigitCallerIdNumber must be a valid greater or
1175                       equal than</span
1176                     >
1177                     <span>15</span>
1178                   </div>
1179                 </div>
1180               </md-input-container>
1181               <md-input-container class="md-block">
1182                 <label translate="MOTIONDIALER.ORIGINATETIMEOUT"
1183                   >OriginateTimeout</label
1184                 >
1185                 <input
1186                   type="number"
1187                   name="dialOriginateTimeout"
1188                   ng-model="vm.queueCampaign.dialOriginateTimeout"
1189                   min="1"
1190                   max="999"
1191                   ng-required="true"
1192                   ng-disabled="!vm.crudPermissions.canEdit"
1193                 />
1194
1195                 <div class="hint">
1196                   <span translate="MOTIONDIALER.HELP.ORIGINATETIMEOUT"></span>
1197                 </div>
1198                 <div
1199                   ng-messages="originateForm['dialOriginateTimeout'].$error"
1200                   ng-show="originateForm['dialOriginateTimeout'].$touched"
1201                   role="alert"
1202                 >
1203                   <div ng-message="required">
1204                     <span
1205                       translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_REQUIRED"
1206                       >OriginateTimeout field is required</span
1207                     >
1208                   </div>
1209                   <div ng-message="min">
1210                     <span
1211                       translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO"
1212                       >OriginateTimeout must be a valid greater or equal
1213                       than</span
1214                     >
1215                     <span>1</span>
1216                   </div>
1217                   <div ng-message="max">
1218                     <span
1219                       translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO"
1220                       >OriginateTimeout must be a valid greater or equal
1221                       than</span
1222                     >
1223                     <span>999</span>
1224                   </div>
1225                 </div>
1226               </md-input-container>
1227               <md-input-container class="md-block">
1228                 <label translate="MOTIONDIALER.PREFIX">Prefix</label>
1229                 <input
1230                   type="text"
1231                   name="dialPrefix"
1232                   ng-model="vm.queueCampaign.dialPrefix"
1233                   ng-pattern="/^\d+$/"
1234                   ng-disabled="!vm.crudPermissions.canEdit"
1235                 />
1236
1237                 <div class="hint">
1238                   <span translate="MOTIONDIALER.HELP.PREFIX"></span>
1239                 </div>
1240                 <div
1241                   ng-messages="originateForm['dialPrefix'].$error"
1242                   ng-show="originateForm['dialPrefix'].$touched"
1243                   role="alert"
1244                 >
1245                   <div ng-message="required">
1246                     <span translate="MOTIONDIALER.ERRORS.PREFIX_REQUIRED"
1247                       >Prefix field is required</span
1248                     >
1249                   </div>
1250                   <div ng-message="pattern">
1251                     <span
1252                       translate="MOTIONDIALER.ERRORS.PREFIX_MUST_VALID_PATTERN"
1253                       translate-values="{ regex: '/^\d+$/' }"
1254                       >Prefix must be valid pattern
1255                     </span>
1256                   </div>
1257                 </div>
1258               </md-input-container>
1259             </form>
1260           </div>
1261         </md-tab-body>
1262       </md-tab>
1263       <md-tab>
1264         <md-tab-label>
1265           <span translate="MOTIONDIALER.RETRYANDFREQUENCY"
1266             >RETRYANDFREQUENCY</span
1267           >
1268         </md-tab-label>
1269         <md-tab-body>
1270           <div
1271             class="queueCampaign-detail-form-container global md-background-bg md-whiteframe-1dp"
1272           >
1273             <div class="pb-16" layout="row" layout-align="start center">
1274               <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBAL">
1275                 GLOBAL
1276               </div>
1277             </div>
1278             <form name="globalForm" novalidate>
1279               <md-input-container class="md-block">
1280                 <label translate="MOTIONDIALER.GLOBALMAXRETRY"
1281                   >GlobalMaxRetry</label
1282                 >
1283                 <input
1284                   type="number"
1285                   name="dialGlobalMaxRetry"
1286                   ng-model="vm.queueCampaign.dialGlobalMaxRetry"
1287                   min="1"
1288                   max="999"
1289                   ng-required="true"
1290                   autofocus
1291                   ng-disabled="!vm.crudPermissions.canEdit"
1292                 />
1293
1294                 <div class="hint">
1295                   <span translate="MOTIONDIALER.HELP.GLOBALMAXRETRY"></span>
1296                 </div>
1297                 <div
1298                   ng-messages="globalForm['dialGlobalMaxRetry'].$error"
1299                   ng-show="globalForm['dialGlobalMaxRetry'].$touched"
1300                   role="alert"
1301                 >
1302                   <div ng-message="required">
1303                     <span
1304                       translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_REQUIRED"
1305                       >GlobalMaxRetry field is required</span
1306                     >
1307                   </div>
1308                   <div ng-message="min">
1309                     <span
1310                       translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO"
1311                       >GlobalMaxRetry must be a valid greater or equal
1312                       than</span
1313                     >
1314                     <span>1</span>
1315                   </div>
1316                   <div ng-message="max">
1317                     <span
1318                       translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO"
1319                       >GlobalMaxRetry must be a valid greater or equal
1320                       than</span
1321                     >
1322                     <span>999</span>
1323                   </div>
1324                 </div>
1325               </md-input-container>
1326             </form>
1327           </div>
1328           <div
1329             class="queueCampaign-detail-form-container congestion md-background-bg md-whiteframe-1dp"
1330           >
1331             <div class="pb-16" layout="row" layout-align="start center">
1332               <div
1333                 class="h2 secondary-text"
1334                 translate="MOTIONDIALER.CONGESTION"
1335               >
1336                 CONGESTION
1337               </div>
1338             </div>
1339             <form name="congestionForm" novalidate>
1340               <md-input-container class="md-block">
1341                 <label translate="MOTIONDIALER.CONGESTIONMAXRETRY"
1342                   >CongestionMaxRetry</label
1343                 >
1344                 <input
1345                   type="number"
1346                   name="dialCongestionMaxRetry"
1347                   ng-model="vm.queueCampaign.dialCongestionMaxRetry"
1348                   min="1"
1349                   max="999"
1350                   ng-required="true"
1351                   autofocus
1352                   ng-disabled="!vm.crudPermissions.canEdit"
1353                 />
1354
1355                 <div class="hint">
1356                   <span translate="MOTIONDIALER.HELP.CONGESTIONMAXRETRY"></span>
1357                 </div>
1358                 <div
1359                   ng-messages="congestionForm['dialCongestionMaxRetry'].$error"
1360                   ng-show="congestionForm['dialCongestionMaxRetry'].$touched"
1361                   role="alert"
1362                 >
1363                   <div ng-message="required">
1364                     <span
1365                       translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_REQUIRED"
1366                       >CongestionMaxRetry field is required</span
1367                     >
1368                   </div>
1369                   <div ng-message="min">
1370                     <span
1371                       translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO"
1372                       >CongestionMaxRetry must be a valid greater or equal
1373                       than</span
1374                     >
1375                     <span>1</span>
1376                   </div>
1377                   <div ng-message="max">
1378                     <span
1379                       translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO"
1380                       >CongestionMaxRetry must be a valid greater or equal
1381                       than</span
1382                     >
1383                     <span>999</span>
1384                   </div>
1385                 </div>
1386               </md-input-container>
1387               <md-input-container class="md-block">
1388                 <label translate="MOTIONDIALER.CONGESTIONRETRYTIME"
1389                   >CongestionRetryTime</label
1390                 >
1391                 <input
1392                   type="number"
1393                   name="dialCongestionRetryFrequency"
1394                   ng-model="vm.queueCampaign.dialCongestionRetryFrequency"
1395                   min="1"
1396                   max="99999"
1397                   ng-required="true"
1398                   ng-disabled="!vm.crudPermissions.canEdit"
1399                 />
1400
1401                 <div class="hint">
1402                   <span
1403                     translate="MOTIONDIALER.HELP.CONGESTIONRETRYTIME"
1404                   ></span>
1405                 </div>
1406                 <div
1407                   ng-messages="congestionForm['dialCongestionRetryFrequency'].$error"
1408                   ng-show="congestionForm['dialCongestionRetryFrequency'].$touched"
1409                   role="alert"
1410                 >
1411                   <div ng-message="required">
1412                     <span
1413                       translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_REQUIRED"
1414                       >CongestionRetryTime field is required</span
1415                     >
1416                   </div>
1417                   <div ng-message="min">
1418                     <span
1419                       translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO"
1420                       >CongestionRetryTime must be a valid greater or equal
1421                       than</span
1422                     >
1423                     <span>1</span>
1424                   </div>
1425                   <div ng-message="max">
1426                     <span
1427                       translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO"
1428                       >CongestionRetryTime must be a valid greater or equal
1429                       than</span
1430                     >
1431                     <span>99999</span>
1432                   </div>
1433                 </div>
1434               </md-input-container>
1435             </form>
1436           </div>
1437           <div
1438             class="queueCampaign-detail-form-container busy md-background-bg md-whiteframe-1dp"
1439           >
1440             <div class="pb-16" layout="row" layout-align="start center">
1441               <div class="h2 secondary-text" translate="MOTIONDIALER.BUSY">
1442                 BUSY
1443               </div>
1444             </div>
1445             <form name="busyForm" novalidate>
1446               <md-input-container class="md-block">
1447                 <label translate="MOTIONDIALER.BUSYMAXRETRY"
1448                   >BusyMaxRetry</label
1449                 >
1450                 <input
1451                   type="number"
1452                   name="dialBusyMaxRetry"
1453                   ng-model="vm.queueCampaign.dialBusyMaxRetry"
1454                   min="1"
1455                   max="999"
1456                   ng-required="true"
1457                   autofocus
1458                   ng-disabled="!vm.crudPermissions.canEdit"
1459                 />
1460
1461                 <div class="hint">
1462                   <span translate="MOTIONDIALER.HELP.BUSYMAXRETRY"></span>
1463                 </div>
1464                 <div
1465                   ng-messages="busyForm['dialBusyMaxRetry'].$error"
1466                   ng-show="busyForm['dialBusyMaxRetry'].$touched"
1467                   role="alert"
1468                 >
1469                   <div ng-message="required">
1470                     <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_REQUIRED"
1471                       >BusyMaxRetry field is required</span
1472                     >
1473                   </div>
1474                   <div ng-message="min">
1475                     <span
1476                       translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO"
1477                       >BusyMaxRetry must be a valid greater or equal than</span
1478                     >
1479                     <span>1</span>
1480                   </div>
1481                   <div ng-message="max">
1482                     <span
1483                       translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO"
1484                       >BusyMaxRetry must be a valid greater or equal than</span
1485                     >
1486                     <span>999</span>
1487                   </div>
1488                 </div>
1489               </md-input-container>
1490               <md-input-container class="md-block">
1491                 <label translate="MOTIONDIALER.BUSYRETRYTIME"
1492                   >BusyRetryTime</label
1493                 >
1494                 <input
1495                   type="number"
1496                   name="dialBusyRetryFrequency"
1497                   ng-model="vm.queueCampaign.dialBusyRetryFrequency"
1498                   min="1"
1499                   max="99999"
1500                   ng-required="true"
1501                   ng-disabled="!vm.crudPermissions.canEdit"
1502                 />
1503
1504                 <div class="hint">
1505                   <span translate="MOTIONDIALER.HELP.BUSYRETRYTIME"></span>
1506                 </div>
1507                 <div
1508                   ng-messages="busyForm['dialBusyRetryFrequency'].$error"
1509                   ng-show="busyForm['dialBusyRetryFrequency'].$touched"
1510                   role="alert"
1511                 >
1512                   <div ng-message="required">
1513                     <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_REQUIRED"
1514                       >BusyRetryTime field is required</span
1515                     >
1516                   </div>
1517                   <div ng-message="min">
1518                     <span
1519                       translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO"
1520                       >BusyRetryTime must be a valid greater or equal than</span
1521                     >
1522                     <span>1</span>
1523                   </div>
1524                   <div ng-message="max">
1525                     <span
1526                       translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO"
1527                       >BusyRetryTime must be a valid greater or equal than</span
1528                     >
1529                     <span>99999</span>
1530                   </div>
1531                 </div>
1532               </md-input-container>
1533             </form>
1534           </div>
1535           <div
1536             class="queueCampaign-detail-form-container noanswer md-background-bg md-whiteframe-1dp"
1537           >
1538             <div class="pb-16" layout="row" layout-align="start center">
1539               <div class="h2 secondary-text" translate="MOTIONDIALER.NOANSWER">
1540                 NOANSWER
1541               </div>
1542             </div>
1543             <form name="noanswerForm" novalidate>
1544               <md-input-container class="md-block">
1545                 <label translate="MOTIONDIALER.NOANSWERMAXRETRY"
1546                   >NoAnswerMaxRetry</label
1547                 >
1548                 <input
1549                   type="number"
1550                   name="dialNoAnswerMaxRetry"
1551                   ng-model="vm.queueCampaign.dialNoAnswerMaxRetry"
1552                   min="1"
1553                   max="999"
1554                   ng-required="true"
1555                   autofocus
1556                   ng-disabled="!vm.crudPermissions.canEdit"
1557                 />
1558
1559                 <div class="hint">
1560                   <span translate="MOTIONDIALER.HELP.NOANSWERMAXRETRY"></span>
1561                 </div>
1562                 <div
1563                   ng-messages="noanswerForm['dialNoAnswerMaxRetry'].$error"
1564                   ng-show="noanswerForm['dialNoAnswerMaxRetry'].$touched"
1565                   role="alert"
1566                 >
1567                   <div ng-message="required">
1568                     <span
1569                       translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_REQUIRED"
1570                       >NoAnswerMaxRetry field is required</span
1571                     >
1572                   </div>
1573                   <div ng-message="min">
1574                     <span
1575                       translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO"
1576                       >NoAnswerMaxRetry must be a valid greater or equal
1577                       than</span
1578                     >
1579                     <span>1</span>
1580                   </div>
1581                   <div ng-message="max">
1582                     <span
1583                       translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO"
1584                       >NoAnswerMaxRetry must be a valid greater or equal
1585                       than</span
1586                     >
1587                     <span>999</span>
1588                   </div>
1589                 </div>
1590               </md-input-container>
1591               <md-input-container class="md-block">
1592                 <label translate="MOTIONDIALER.NOANSWERRETRYTIME"
1593                   >NoAnswerRetryTime</label
1594                 >
1595                 <input
1596                   type="number"
1597                   name="dialNoAnswerRetryFrequency"
1598                   ng-model="vm.queueCampaign.dialNoAnswerRetryFrequency"
1599                   min="1"
1600                   max="99999"
1601                   ng-required="true"
1602                   ng-disabled="!vm.crudPermissions.canEdit"
1603                 />
1604
1605                 <div class="hint">
1606                   <span translate="MOTIONDIALER.HELP.NOANSWERRETRYTIME"></span>
1607                 </div>
1608                 <div
1609                   ng-messages="noanswerForm['dialNoAnswerRetryFrequency'].$error"
1610                   ng-show="noanswerForm['dialNoAnswerRetryFrequency'].$touched"
1611                   role="alert"
1612                 >
1613                   <div ng-message="required">
1614                     <span
1615                       translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_REQUIRED"
1616                       >NoAnswerRetryTime field is required</span
1617                     >
1618                   </div>
1619                   <div ng-message="min">
1620                     <span
1621                       translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO"
1622                       >NoAnswerRetryTime must be a valid greater or equal
1623                       than</span
1624                     >
1625                     <span>1</span>
1626                   </div>
1627                   <div ng-message="max">
1628                     <span
1629                       translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO"
1630                       >NoAnswerRetryTime must be a valid greater or equal
1631                       than</span
1632                     >
1633                     <span>99999</span>
1634                   </div>
1635                 </div>
1636               </md-input-container>
1637             </form>
1638           </div>
1639           <div
1640             class="queueCampaign-detail-form-container nosuchnumber md-background-bg md-whiteframe-1dp"
1641           >
1642             <div class="pb-16" layout="row" layout-align="start center">
1643               <div
1644                 class="h2 secondary-text"
1645                 translate="MOTIONDIALER.NOSUCHNUMBER"
1646               >
1647                 NOSUCHNUMBER
1648               </div>
1649             </div>
1650             <form name="nosuchnumberForm" novalidate>
1651               <md-input-container class="md-block">
1652                 <label translate="MOTIONDIALER.NOSUCHNUMBERMAXRETRY"
1653                   >NoSuchNumberMaxRetry</label
1654                 >
1655                 <input
1656                   type="number"
1657                   name="dialNoSuchNumberMaxRetry"
1658                   ng-model="vm.queueCampaign.dialNoSuchNumberMaxRetry"
1659                   min="1"
1660                   max="999"
1661                   ng-required="true"
1662                   autofocus
1663                   ng-disabled="!vm.crudPermissions.canEdit"
1664                 />
1665
1666                 <div class="hint">
1667                   <span
1668                     translate="MOTIONDIALER.HELP.NOSUCHNUMBERMAXRETRY"
1669                   ></span>
1670                 </div>
1671                 <div
1672                   ng-messages="nosuchnumberForm['dialNoSuchNumberMaxRetry'].$error"
1673                   ng-show="nosuchnumberForm['dialNoSuchNumberMaxRetry'].$touched"
1674                   role="alert"
1675                 >
1676                   <div ng-message="required">
1677                     <span
1678                       translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_REQUIRED"
1679                       >NoSuchNumberMaxRetry field is required</span
1680                     >
1681                   </div>
1682                   <div ng-message="min">
1683                     <span
1684                       translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO"
1685                       >NoSuchNumberMaxRetry must be a valid greater or equal
1686                       than</span
1687                     >
1688                     <span>1</span>
1689                   </div>
1690                   <div ng-message="max">
1691                     <span
1692                       translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO"
1693                       >NoSuchNumberMaxRetry must be a valid greater or equal
1694                       than</span
1695                     >
1696                     <span>999</span>
1697                   </div>
1698                 </div>
1699               </md-input-container>
1700               <md-input-container class="md-block">
1701                 <label translate="MOTIONDIALER.NOSUCHNUMBERRETRYTIME"
1702                   >NoSuchNumberRetryTime</label
1703                 >
1704                 <input
1705                   type="number"
1706                   name="dialNoSuchNumberRetryFrequency"
1707                   ng-model="vm.queueCampaign.dialNoSuchNumberRetryFrequency"
1708                   min="1"
1709                   max="99999"
1710                   ng-required="true"
1711                   ng-disabled="!vm.crudPermissions.canEdit"
1712                 />
1713
1714                 <div class="hint">
1715                   <span
1716                     translate="MOTIONDIALER.HELP.NOSUCHNUMBERRETRYTIME"
1717                   ></span>
1718                 </div>
1719                 <div
1720                   ng-messages="nosuchnumberForm['dialNoSuchNumberRetryFrequency'].$error"
1721                   ng-show="nosuchnumberForm['dialNoSuchNumberRetryFrequency'].$touched"
1722                   role="alert"
1723                 >
1724                   <div ng-message="required">
1725                     <span
1726                       translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_REQUIRED"
1727                       >NoSuchNumberRetryTime field is required</span
1728                     >
1729                   </div>
1730                   <div ng-message="min">
1731                     <span
1732                       translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO"
1733                       >NoSuchNumberRetryTime must be a valid greater or equal
1734                       than</span
1735                     >
1736                     <span>1</span>
1737                   </div>
1738                   <div ng-message="max">
1739                     <span
1740                       translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO"
1741                       >NoSuchNumberRetryTime must be a valid greater or equal
1742                       than</span
1743                     >
1744                     <span>99999</span>
1745                   </div>
1746                 </div>
1747               </md-input-container>
1748             </form>
1749           </div>
1750           <div
1751             class="queueCampaign-detail-form-container drop md-background-bg md-whiteframe-1dp"
1752           >
1753             <div class="pb-16" layout="row" layout-align="start center">
1754               <div class="h2 secondary-text" translate="MOTIONDIALER.DROP">
1755                 DROP
1756               </div>
1757             </div>
1758             <form name="dropForm" novalidate>
1759               <md-input-container class="md-block">
1760                 <label translate="MOTIONDIALER.DROPMAXRETRY"
1761                   >DropMaxRetry</label
1762                 >
1763                 <input
1764                   type="number"
1765                   name="dialDropMaxRetry"
1766                   ng-model="vm.queueCampaign.dialDropMaxRetry"
1767                   min="1"
1768                   max="999"
1769                   ng-required="true"
1770                   autofocus
1771                   ng-disabled="!vm.crudPermissions.canEdit"
1772                 />
1773
1774                 <div class="hint">
1775                   <span translate="MOTIONDIALER.HELP.DROPMAXRETRY"></span>
1776                 </div>
1777                 <div
1778                   ng-messages="dropForm['dialDropMaxRetry'].$error"
1779                   ng-show="dropForm['dialDropMaxRetry'].$touched"
1780                   role="alert"
1781                 >
1782                   <div ng-message="required">
1783                     <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_REQUIRED"
1784                       >DropMaxRetry field is required</span
1785                     >
1786                   </div>
1787                   <div ng-message="min">
1788                     <span
1789                       translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO"
1790                       >DropMaxRetry must be a valid greater or equal than</span
1791                     >
1792                     <span>1</span>
1793                   </div>
1794                   <div ng-message="max">
1795                     <span
1796                       translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO"
1797                       >DropMaxRetry must be a valid greater or equal than</span
1798                     >
1799                     <span>999</span>
1800                   </div>
1801                 </div>
1802               </md-input-container>
1803               <md-input-container class="md-block">
1804                 <label translate="MOTIONDIALER.DROPRETRYTIME"
1805                   >DropRetryTime</label
1806                 >
1807                 <input
1808                   type="number"
1809                   name="dialDropRetryFrequency"
1810                   ng-model="vm.queueCampaign.dialDropRetryFrequency"
1811                   min="1"
1812                   max="99999"
1813                   ng-required="true"
1814                   ng-disabled="!vm.crudPermissions.canEdit"
1815                 />
1816
1817                 <div class="hint">
1818                   <span translate="MOTIONDIALER.HELP.DROPRETRYTIME"></span>
1819                 </div>
1820                 <div
1821                   ng-messages="dropForm['dialDropRetryFrequency'].$error"
1822                   ng-show="dropForm['dialDropRetryFrequency'].$touched"
1823                   role="alert"
1824                 >
1825                   <div ng-message="required">
1826                     <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_REQUIRED"
1827                       >DropRetryTime field is required</span
1828                     >
1829                   </div>
1830                   <div ng-message="min">
1831                     <span
1832                       translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO"
1833                       >DropRetryTime must be a valid greater or equal than</span
1834                     >
1835                     <span>1</span>
1836                   </div>
1837                   <div ng-message="max">
1838                     <span
1839                       translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO"
1840                       >DropRetryTime must be a valid greater or equal than</span
1841                     >
1842                     <span>99999</span>
1843                   </div>
1844                 </div>
1845               </md-input-container>
1846             </form>
1847           </div>
1848           <div
1849             class="queueCampaign-detail-form-container abandoned md-background-bg md-whiteframe-1dp"
1850           >
1851             <div class="pb-16" layout="row" layout-align="start center">
1852               <div class="h2 secondary-text" translate="MOTIONDIALER.ABANDONED">
1853                 ABANDONED
1854               </div>
1855             </div>
1856             <form name="abandonedForm" novalidate>
1857               <md-input-container class="md-block">
1858                 <label translate="MOTIONDIALER.ABANDONEDMAXRETRY"
1859                   >AbandonedMaxRetry</label
1860                 >
1861                 <input
1862                   type="number"
1863                   name="dialAbandonedMaxRetry"
1864                   ng-model="vm.queueCampaign.dialAbandonedMaxRetry"
1865                   min="1"
1866                   max="999"
1867                   ng-required="true"
1868                   autofocus
1869                   ng-disabled="!vm.crudPermissions.canEdit"
1870                 />
1871
1872                 <div class="hint">
1873                   <span translate="MOTIONDIALER.HELP.ABANDONEDMAXRETRY"></span>
1874                 </div>
1875                 <div
1876                   ng-messages="abandonedForm['dialAbandonedMaxRetry'].$error"
1877                   ng-show="abandonedForm['dialAbandonedMaxRetry'].$touched"
1878                   role="alert"
1879                 >
1880                   <div ng-message="required">
1881                     <span
1882                       translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_REQUIRED"
1883                       >AbandonedMaxRetry field is required</span
1884                     >
1885                   </div>
1886                   <div ng-message="min">
1887                     <span
1888                       translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO"
1889                       >AbandonedMaxRetry must be a valid greater or equal
1890                       than</span
1891                     >
1892                     <span>1</span>
1893                   </div>
1894                   <div ng-message="max">
1895                     <span
1896                       translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO"
1897                       >AbandonedMaxRetry must be a valid greater or equal
1898                       than</span
1899                     >
1900                     <span>999</span>
1901                   </div>
1902                 </div>
1903               </md-input-container>
1904               <md-input-container class="md-block">
1905                 <label translate="MOTIONDIALER.ABANDONEDRETRYTIME"
1906                   >AbandonedRetryTime</label
1907                 >
1908                 <input
1909                   type="number"
1910                   name="dialAbandonedRetryFrequency"
1911                   ng-model="vm.queueCampaign.dialAbandonedRetryFrequency"
1912                   min="1"
1913                   max="99999"
1914                   ng-required="true"
1915                   ng-disabled="!vm.crudPermissions.canEdit"
1916                 />
1917
1918                 <div class="hint">
1919                   <span translate="MOTIONDIALER.HELP.ABANDONEDRETRYTIME"></span>
1920                 </div>
1921                 <div
1922                   ng-messages="abandonedForm['dialAbandonedRetryFrequency'].$error"
1923                   ng-show="abandonedForm['dialAbandonedRetryFrequency'].$touched"
1924                   role="alert"
1925                 >
1926                   <div ng-message="required">
1927                     <span
1928                       translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_REQUIRED"
1929                       >AbandonedRetryTime field is required</span
1930                     >
1931                   </div>
1932                   <div ng-message="min">
1933                     <span
1934                       translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO"
1935                       >AbandonedRetryTime must be a valid greater or equal
1936                       than</span
1937                     >
1938                     <span>1</span>
1939                   </div>
1940                   <div ng-message="max">
1941                     <span
1942                       translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO"
1943                       >AbandonedRetryTime must be a valid greater or equal
1944                       than</span
1945                     >
1946                     <span>99999</span>
1947                   </div>
1948                 </div>
1949               </md-input-container>
1950             </form>
1951           </div>
1952           <div
1953             class="queueCampaign-detail-form-container machine md-background-bg md-whiteframe-1dp"
1954           >
1955             <div class="pb-16" layout="row" layout-align="start center">
1956               <div class="h2 secondary-text" translate="MOTIONDIALER.MACHINE">
1957                 MACHINE
1958               </div>
1959             </div>
1960             <form name="machineForm" novalidate>
1961               <md-input-container class="md-block">
1962                 <label translate="MOTIONDIALER.MACHINEMAXRETRY"
1963                   >MachineMaxRetry</label
1964                 >
1965                 <input
1966                   type="number"
1967                   name="dialMachineMaxRetry"
1968                   ng-model="vm.queueCampaign.dialMachineMaxRetry"
1969                   min="1"
1970                   max="999"
1971                   ng-required="true"
1972                   autofocus
1973                   ng-disabled="!vm.crudPermissions.canEdit"
1974                 />
1975
1976                 <div class="hint">
1977                   <span translate="MOTIONDIALER.HELP.MACHINEMAXRETRY"></span>
1978                 </div>
1979                 <div
1980                   ng-messages="machineForm['dialMachineMaxRetry'].$error"
1981                   ng-show="machineForm['dialMachineMaxRetry'].$touched"
1982                   role="alert"
1983                 >
1984                   <div ng-message="required">
1985                     <span
1986                       translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_REQUIRED"
1987                       >MachineMaxRetry field is required</span
1988                     >
1989                   </div>
1990                   <div ng-message="min">
1991                     <span
1992                       translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO"
1993                       >MachineMaxRetry must be a valid greater or equal
1994                       than</span
1995                     >
1996                     <span>1</span>
1997                   </div>
1998                   <div ng-message="max">
1999                     <span
2000                       translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO"
2001                       >MachineMaxRetry must be a valid greater or equal
2002                       than</span
2003                     >
2004                     <span>999</span>
2005                   </div>
2006                 </div>
2007               </md-input-container>
2008               <md-input-container class="md-block">
2009                 <label translate="MOTIONDIALER.MACHINERETRYTIME"
2010                   >MachineRetryTime</label
2011                 >
2012                 <input
2013                   type="number"
2014                   name="dialMachineRetryFrequency"
2015                   ng-model="vm.queueCampaign.dialMachineRetryFrequency"
2016                   min="1"
2017                   max="99999"
2018                   ng-required="true"
2019                   ng-disabled="!vm.crudPermissions.canEdit"
2020                 />
2021
2022                 <div class="hint">
2023                   <span translate="MOTIONDIALER.HELP.MACHINERETRYTIME"></span>
2024                 </div>
2025                 <div
2026                   ng-messages="machineForm['dialMachineRetryFrequency'].$error"
2027                   ng-show="machineForm['dialMachineRetryFrequency'].$touched"
2028                   role="alert"
2029                 >
2030                   <div ng-message="required">
2031                     <span
2032                       translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_REQUIRED"
2033                       >MachineRetryTime field is required</span
2034                     >
2035                   </div>
2036                   <div ng-message="min">
2037                     <span
2038                       translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO"
2039                       >MachineRetryTime must be a valid greater or equal
2040                       than</span
2041                     >
2042                     <span>1</span>
2043                   </div>
2044                   <div ng-message="max">
2045                     <span
2046                       translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO"
2047                       >MachineRetryTime must be a valid greater or equal
2048                       than</span
2049                     >
2050                     <span>99999</span>
2051                   </div>
2052                 </div>
2053               </md-input-container>
2054             </form>
2055           </div>
2056           <div
2057             class="queueCampaign-detail-form-container agentreject md-background-bg md-whiteframe-1dp"
2058           >
2059             <div class="pb-16" layout="row" layout-align="start center">
2060               <div
2061                 class="h2 secondary-text"
2062                 translate="MOTIONDIALER.AGENTREJECT"
2063               >
2064                 AGENTREJECT
2065               </div>
2066             </div>
2067             <form name="agentrejectForm" novalidate>
2068               <md-input-container class="md-block">
2069                 <label translate="MOTIONDIALER.AGENTREJECTMAXRETRY"
2070                   >AgentRejectMaxRetry</label
2071                 >
2072                 <input
2073                   type="number"
2074                   name="dialAgentRejectMaxRetry"
2075                   ng-model="vm.queueCampaign.dialAgentRejectMaxRetry"
2076                   min="1"
2077                   max="999"
2078                   ng-required="true"
2079                   autofocus
2080                   ng-disabled="!vm.crudPermissions.canEdit"
2081                 />
2082
2083                 <div class="hint">
2084                   <span
2085                     translate="MOTIONDIALER.HELP.AGENTREJECTMAXRETRY"
2086                   ></span>
2087                 </div>
2088                 <div
2089                   ng-messages="agentrejectForm['dialAgentRejectMaxRetry'].$error"
2090                   ng-show="agentrejectForm['dialAgentRejectMaxRetry'].$touched"
2091                   role="alert"
2092                 >
2093                   <div ng-message="required">
2094                     <span
2095                       translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_REQUIRED"
2096                       >AgentRejectMaxRetry field is required</span
2097                     >
2098                   </div>
2099                   <div ng-message="min">
2100                     <span
2101                       translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO"
2102                       >AgentRejectMaxRetry must be a valid greater or equal
2103                       than</span
2104                     >
2105                     <span>1</span>
2106                   </div>
2107                   <div ng-message="max">
2108                     <span
2109                       translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO"
2110                       >AgentRejectMaxRetry must be a valid greater or equal
2111                       than</span
2112                     >
2113                     <span>999</span>
2114                   </div>
2115                 </div>
2116               </md-input-container>
2117               <md-input-container class="md-block">
2118                 <label translate="MOTIONDIALER.AGENTREJECTRETRYTIME"
2119                   >AgentRejectRetryTime</label
2120                 >
2121                 <input
2122                   type="number"
2123                   name="dialAgentRejectRetryFrequency"
2124                   ng-model="vm.queueCampaign.dialAgentRejectRetryFrequency"
2125                   min="1"
2126                   max="99999"
2127                   ng-required="true"
2128                   ng-disabled="!vm.crudPermissions.canEdit"
2129                 />
2130
2131                 <div class="hint">
2132                   <span
2133                     translate="MOTIONDIALER.HELP.AGENTREJECTRETRYTIME"
2134                   ></span>
2135                 </div>
2136                 <div
2137                   ng-messages="agentrejectForm['dialAgentRejectRetryFrequency'].$error"
2138                   ng-show="agentrejectForm['dialAgentRejectRetryFrequency'].$touched"
2139                   role="alert"
2140                 >
2141                   <div ng-message="required">
2142                     <span
2143                       translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_REQUIRED"
2144                       >AgentRejectRetryTime field is required</span
2145                     >
2146                   </div>
2147                   <div ng-message="min">
2148                     <span
2149                       translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO"
2150                       >AgentRejectRetryTime must be a valid greater or equal
2151                       than</span
2152                     >
2153                     <span>1</span>
2154                   </div>
2155                   <div ng-message="max">
2156                     <span
2157                       translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO"
2158                       >AgentRejectRetryTime must be a valid greater or equal
2159                       than</span
2160                     >
2161                     <span>99999</span>
2162                   </div>
2163                 </div>
2164               </md-input-container>
2165             </form>
2166           </div>
2167         </md-tab-body>
2168       </md-tab>
2169       <md-tab>
2170         <md-tab-label>
2171           <span translate="MOTIONDIALER.ADVANCED">ADVANCED</span>
2172         </md-tab-label>
2173         <md-tab-body>
2174           <div
2175             ng-if="vm.queueCampaign.dialMethod === 'progressive' || vm.queueCampaign.dialMethod === 'predictive' || vm.queueCampaign.dialMethod === 'power'"
2176             class="queueCampaign-detail-form-container advanced md-background-bg md-whiteframe-1dp"
2177           >
2178             <div class="pb-16" layout="row" layout-align="start center">
2179               <div class="h2 secondary-text" translate="MOTIONDIALER.ADVANCED">
2180                 ADVANCED
2181               </div>
2182             </div>
2183             <form name="advancedForm" novalidate>
2184               <md-input-container class="md-block">
2185                 <md-switch
2186                   ng-model="vm.queueCampaign.acw"
2187                   aria-label="AfterCallWork"
2188                   ng-disabled="!vm.crudPermissions.canEdit"
2189                   ><span translate="MOTIONDIALER.AFTERCALLWORK"
2190                     >AfterCallWork</span
2191                   ></md-switch
2192                 >
2193
2194                 <div class="hint">
2195                   <span translate="MOTIONDIALER.HELP.AFTERCALLWORK"></span>
2196                 </div>
2197               </md-input-container>
2198               <md-input-container ng-if="vm.queueCampaign.acw" class="md-block">
2199                 <label translate="MOTIONDIALER.AFTERCALLWORKDURATION"
2200                   >AfterCallWorkDuration</label
2201                 >
2202                 <input
2203                   type="number"
2204                   name="acwTimeout"
2205                   ng-model="vm.queueCampaign.acwTimeout"
2206                   min="0"
2207                   ng-required="true"
2208                   ng-disabled="!vm.crudPermissions.canEdit"
2209                 />
2210
2211                 <div class="hint">
2212                   <span
2213                     translate="MOTIONDIALER.HELP.AFTERCALLWORKDURATION"
2214                   ></span>
2215                 </div>
2216                 <div
2217                   ng-messages="advancedForm['acwTimeout'].$error"
2218                   ng-show="advancedForm['acwTimeout'].$touched"
2219                   role="alert"
2220                 >
2221                   <div ng-message="required">
2222                     <span
2223                       translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_REQUIRED"
2224                       >AfterCallWorkDuration field is required</span
2225                     >
2226                   </div>
2227                   <div ng-message="min">
2228                     <span
2229                       translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO"
2230                       >AfterCallWorkDuration must be a valid greater or equal
2231                       than</span
2232                     >
2233                     <span>0</span>
2234                   </div>
2235                 </div>
2236               </md-input-container>
2237               <md-input-container class="md-block">
2238                 <label translate="MOTIONDIALER.AUTOPAUSE">AutoPause</label>
2239                 <md-select
2240                   name="autopause"
2241                   ng-model="vm.queueCampaign.autopause"
2242                   ng-disabled="!vm.crudPermissions.canEdit"
2243                 >
2244                   <md-option ng-value="'all'">
2245                     {{ 'MOTIONDIALER.YES' | translate }}
2246                   </md-option>
2247
2248                   <md-option ng-value="'no'">
2249                     {{ 'MOTIONDIALER.NO' | translate }}
2250                   </md-option>
2251                 </md-select>
2252                 <div class="hint">
2253                   <span translate="MOTIONDIALER.HELP.AUTOPAUSE"></span>
2254                 </div>
2255                 <div
2256                   ng-messages="advancedForm['autopause'].$error"
2257                   ng-show="advancedForm['autopause'].$touched"
2258                   role="alert"
2259                 >
2260                   <div ng-message="required">
2261                     <span translate="MOTIONDIALER.ERRORS.AUTOPAUSE_REQUIRED"
2262                       >AutoPause field is required</span
2263                     >
2264                   </div>
2265                 </div>
2266               </md-input-container>
2267               <md-input-container class="md-block">
2268                 <label translate="MOTIONDIALER.RINGINUSE">RingInUse</label>
2269                 <md-select
2270                   name="ringinuse"
2271                   ng-model="vm.queueCampaign.ringinuse"
2272                   ng-disabled="!vm.crudPermissions.canEdit"
2273                 >
2274                   <md-option ng-value="'yes'">
2275                     {{ 'MOTIONDIALER.YES' | translate }}
2276                   </md-option>
2277
2278                   <md-option ng-value="'no'">
2279                     {{ 'MOTIONDIALER.NO' | translate }}
2280                   </md-option>
2281                 </md-select>
2282                 <div class="hint">
2283                   <span translate="MOTIONDIALER.HELP.RINGINUSE"></span>
2284                 </div>
2285                 <div
2286                   ng-messages="advancedForm['ringinuse'].$error"
2287                   ng-show="advancedForm['ringinuse'].$touched"
2288                   role="alert"
2289                 >
2290                   <div ng-message="required">
2291                     <span translate="MOTIONDIALER.ERRORS.RINGINUSE_REQUIRED"
2292                       >RingInUse field is required</span
2293                     >
2294                   </div>
2295                 </div>
2296               </md-input-container>
2297               <md-input-container class="md-block">
2298                 <label translate="MOTIONDIALER.MEMBERDELAY">MemberDelay</label>
2299                 <input
2300                   type="number"
2301                   name="memberdelay"
2302                   ng-model="vm.queueCampaign.memberdelay"
2303                   min="0"
2304                   ng-disabled="!vm.crudPermissions.canEdit"
2305                 />
2306
2307                 <div class="hint">
2308                   <span translate="MOTIONDIALER.HELP.MEMBERDELAY"></span>
2309                 </div>
2310                 <div
2311                   ng-messages="advancedForm['memberdelay'].$error"
2312                   ng-show="advancedForm['memberdelay'].$touched"
2313                   role="alert"
2314                 >
2315                   <div ng-message="required">
2316                     <span translate="MOTIONDIALER.ERRORS.MEMBERDELAY_REQUIRED"
2317                       >MemberDelay field is required</span
2318                     >
2319                   </div>
2320                   <div ng-message="min">
2321                     <span
2322                       translate="MOTIONDIALER.ERRORS.MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO"
2323                       >MemberDelay must be a valid greater or equal than</span
2324                     >
2325                     <span>0</span>
2326                   </div>
2327                 </div>
2328               </md-input-container>
2329               <md-input-container class="md-block">
2330                 <label translate="MOTIONDIALER.TIMEOUTRESTART"
2331                   >TimeoutRestart</label
2332                 >
2333                 <md-select
2334                   name="timeoutrestart"
2335                   ng-model="vm.queueCampaign.timeoutrestart"
2336                   ng-disabled="!vm.crudPermissions.canEdit"
2337                 >
2338                   <md-option ng-value="'yes'">
2339                     {{ 'MOTIONDIALER.YES' | translate }}
2340                   </md-option>
2341
2342                   <md-option ng-value="'no'">
2343                     {{ 'MOTIONDIALER.NO' | translate }}
2344                   </md-option>
2345                 </md-select>
2346                 <div class="hint">
2347                   <span translate="MOTIONDIALER.HELP.TIMEOUTRESTART"></span>
2348                 </div>
2349                 <div
2350                   ng-messages="advancedForm['timeoutrestart'].$error"
2351                   ng-show="advancedForm['timeoutrestart'].$touched"
2352                   role="alert"
2353                 >
2354                   <div ng-message="required">
2355                     <span
2356                       translate="MOTIONDIALER.ERRORS.TIMEOUTRESTART_REQUIRED"
2357                       >TimeoutRestart field is required</span
2358                     >
2359                   </div>
2360                 </div>
2361               </md-input-container>
2362               <md-input-container class="md-block">
2363                 <label translate="MOTIONDIALER.MONITORFORMAT"
2364                   >MonitorFormat</label
2365                 >
2366                 <md-select
2367                   name="monitor_format"
2368                   ng-model="vm.queueCampaign.monitor_format"
2369                   ng-disabled="!vm.crudPermissions.canEdit"
2370                 >
2371                   <md-option ng-value="''">Inactive</md-option>
2372                   <md-option ng-value="'wav'">wav</md-option>
2373                   <md-option ng-value="'wav49'">wav49</md-option>
2374                   <md-option ng-value="'gsm'">gsm</md-option>
2375                 </md-select>
2376                 <div class="hint">
2377                   <span translate="MOTIONDIALER.HELP.MONITORFORMAT"></span>
2378                 </div>
2379                 <div
2380                   ng-messages="advancedForm['monitor_format'].$error"
2381                   ng-show="advancedForm['monitor_format'].$touched"
2382                   role="alert"
2383                 >
2384                   <div ng-message="required">
2385                     <span translate="MOTIONDIALER.ERRORS.MONITORFORMAT_REQUIRED"
2386                       >MonitorFormat field is required</span
2387                     >
2388                   </div>
2389                 </div>
2390               </md-input-container>
2391               <md-input-container class="md-block">
2392                 <label translate="MOTIONDIALER.CONTEXT">Context</label>
2393                 <input
2394                   type="text"
2395                   name="context"
2396                   ng-model="vm.queueCampaign.context"
2397                   ng-disabled="!vm.crudPermissions.canEdit"
2398                 />
2399
2400                 <div class="hint">
2401                   <span translate="MOTIONDIALER.HELP.CONTEXT"></span>
2402                 </div>
2403                 <div
2404                   ng-messages="advancedForm['context'].$error"
2405                   ng-show="advancedForm['context'].$touched"
2406                   role="alert"
2407                 >
2408                   <div ng-message="required">
2409                     <span translate="MOTIONDIALER.ERRORS.CONTEXT_REQUIRED"
2410                       >Context field is required</span
2411                     >
2412                   </div>
2413                 </div>
2414               </md-input-container>
2415               <md-input-container class="md-block">
2416                 <label translate="MOTIONDIALER.SETINTERFACEVARIABLES"
2417                   >SetInterfaceVariables</label
2418                 >
2419                 <md-select
2420                   name="setinterfacevar"
2421                   ng-model="vm.queueCampaign.setinterfacevar"
2422                   ng-disabled="!vm.crudPermissions.canEdit"
2423                 >
2424                   <md-option ng-value="'yes'">
2425                     {{ 'MOTIONDIALER.YES' | translate }}
2426                   </md-option>
2427
2428                   <md-option ng-value="'no'">
2429                     {{ 'MOTIONDIALER.NO' | translate }}
2430                   </md-option>
2431                 </md-select>
2432                 <div class="hint">
2433                   <span
2434                     translate="MOTIONDIALER.HELP.SETINTERFACEVARIABLES"
2435                   ></span>
2436                 </div>
2437                 <div
2438                   ng-messages="advancedForm['setinterfacevar'].$error"
2439                   ng-show="advancedForm['setinterfacevar'].$touched"
2440                   role="alert"
2441                 >
2442                   <div ng-message="required">
2443                     <span
2444                       translate="MOTIONDIALER.ERRORS.SETINTERFACEVARIABLES_REQUIRED"
2445                       >SetInterfaceVariables field is required</span
2446                     >
2447                   </div>
2448                 </div>
2449               </md-input-container>
2450               <md-input-container class="md-block">
2451                 <label translate="MOTIONDIALER.SETQUEUEVARIABLES"
2452                   >SetQueueVariables</label
2453                 >
2454                 <md-select
2455                   name="setqueuevar"
2456                   ng-model="vm.queueCampaign.setqueuevar"
2457                   ng-disabled="!vm.crudPermissions.canEdit"
2458                 >
2459                   <md-option ng-value="'yes'">
2460                     {{ 'MOTIONDIALER.YES' | translate }}
2461                   </md-option>
2462
2463                   <md-option ng-value="'no'">
2464                     {{ 'MOTIONDIALER.NO' | translate }}
2465                   </md-option>
2466                 </md-select>
2467                 <div class="hint">
2468                   <span translate="MOTIONDIALER.HELP.SETQUEUEVARIABLES"></span>
2469                 </div>
2470                 <div
2471                   ng-messages="advancedForm['setqueuevar'].$error"
2472                   ng-show="advancedForm['setqueuevar'].$touched"
2473                   role="alert"
2474                 >
2475                   <div ng-message="required">
2476                     <span
2477                       translate="MOTIONDIALER.ERRORS.SETQUEUEVARIABLES_REQUIRED"
2478                       >SetQueueVariables field is required</span
2479                     >
2480                   </div>
2481                 </div>
2482               </md-input-container>
2483               <md-input-container class="md-block">
2484                 <label translate="MOTIONDIALER.SETQUEUEENTRYVARIABLES"
2485                   >SetQueueEntryVariables</label
2486                 >
2487                 <md-select
2488                   name="setqueueentryvar"
2489                   ng-model="vm.queueCampaign.setqueueentryvar"
2490                   ng-disabled="!vm.crudPermissions.canEdit"
2491                 >
2492                   <md-option ng-value="'yes'">
2493                     {{ 'MOTIONDIALER.YES' | translate }}
2494                   </md-option>
2495
2496                   <md-option ng-value="'no'">
2497                     {{ 'MOTIONDIALER.NO' | translate }}
2498                   </md-option>
2499                 </md-select>
2500                 <div class="hint">
2501                   <span
2502                     translate="MOTIONDIALER.HELP.SETQUEUEENTRYVARIABLES"
2503                   ></span>
2504                 </div>
2505                 <div
2506                   ng-messages="advancedForm['setqueueentryvar'].$error"
2507                   ng-show="advancedForm['setqueueentryvar'].$touched"
2508                   role="alert"
2509                 >
2510                   <div ng-message="required">
2511                     <span
2512                       translate="MOTIONDIALER.ERRORS.SETQUEUEENTRYVARIABLES_REQUIRED"
2513                       >SetQueueEntryVariables field is required</span
2514                     >
2515                   </div>
2516                 </div>
2517               </md-input-container>
2518               <md-input-container class="md-block">
2519                 <label translate="MOTIONDIALER.DIALORDERBYSCHEDULEDAT"
2520                   >DialOrderByScheduledAt</label
2521                 >
2522                 <md-select
2523                   name="dialOrderByScheduledAt"
2524                   ng-model="vm.queueCampaign.dialOrderByScheduledAt"
2525                   ng-disabled="!vm.crudPermissions.canEdit"
2526                 >
2527                   <md-option ng-value="'DESC'">
2528                     {{ 'MOTIONDIALER.DESC' | translate }}
2529                   </md-option>
2530
2531                   <md-option ng-value="'ASC'">
2532                     {{ 'MOTIONDIALER.ASC' | translate }}
2533                   </md-option>
2534                 </md-select>
2535                 <div class="hint">
2536                   <span
2537                     translate="MOTIONDIALER.HELP.DIALORDERBYSCHEDULEDAT"
2538                   ></span>
2539                 </div>
2540                 <div
2541                   ng-messages="advancedForm['dialOrderByScheduledAt'].$error"
2542                   ng-show="advancedForm['dialOrderByScheduledAt'].$touched"
2543                   role="alert"
2544                 >
2545                   <div ng-message="required">
2546                     <span
2547                       translate="MOTIONDIALER.ERRORS.DIALORDERBYSCHEDULEDAT_REQUIRED"
2548                       >DialOrderByScheduledAt field is required</span
2549                     >
2550                   </div>
2551                 </div>
2552               </md-input-container>
2553               <md-input-container class="md-block">
2554                 <md-switch
2555                   ng-model="vm.queueCampaign.mandatoryDisposition"
2556                   aria-label="MandatoryDisposition"
2557                   ng-disabled="!vm.crudPermissions.canEdit"
2558                   ><span translate="MOTIONDIALER.MANDATORYDISPOSITION"
2559                     >MandatoryDisposition</span
2560                   ></md-switch
2561                 >
2562               </md-input-container>
2563               <md-input-container
2564                 ng-if="vm.queueCampaign.mandatoryDisposition"
2565                 class="md-block"
2566               >
2567                 <label translate="MOTIONDIALER.MANDATORYDISPOSITIONPAUSEID"
2568                   >MandatoryDispositionPauseId</label
2569                 >
2570                 <md-select
2571                   name="mandatoryDispositionPauseId"
2572                   ng-model="vm.queueCampaign.mandatoryDispositionPauseId"
2573                   required
2574                   ng-disabled="!vm.crudPermissions.canEdit"
2575                 >
2576                   <md-option
2577                     ng-value="mandatoryDispositionPauseId.id"
2578                     ng-repeat="mandatoryDispositionPauseId in vm.pauses"
2579                     ng-disabled="mandatoryDispositionPauseId.canSelect === false"
2580                     >{{ mandatoryDispositionPauseId.name }}</md-option
2581                   >
2582                 </md-select>
2583                 <div class="hint">
2584                   <span
2585                     translate="MOTIONDIALER.HELP.MANDATORYDISPOSITIONPAUSEID"
2586                   ></span>
2587                 </div>
2588                 <div
2589                   ng-messages="advancedForm['mandatoryDispositionPauseId'].$error"
2590                   ng-show="advancedForm['mandatoryDispositionPauseId'].$touched"
2591                   role="alert"
2592                 >
2593                   <div ng-message="required">
2594                     <span
2595                       translate="MOTIONDIALER.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED"
2596                       >MandatoryDispositionPauseId field is required</span
2597                     >
2598                   </div>
2599                 </div>
2600               </md-input-container>
2601             </form>
2602           </div>
2603           <div
2604             ng-if="vm.queueCampaign.dialMethod === 'preview' || vm.queueCampaign.dialMethod === 'booked'"
2605             class="queueCampaign-detail-form-container advancedpreview md-background-bg md-whiteframe-1dp"
2606           >
2607             <div class="pb-16" layout="row" layout-align="start center">
2608               <div
2609                 class="h2 secondary-text"
2610                 translate="MOTIONDIALER.ADVANCEDPREVIEW"
2611               >
2612                 ADVANCEDPREVIEW
2613               </div>
2614             </div>
2615             <form name="advancedpreviewForm" novalidate>
2616               <md-input-container class="md-block">
2617                 <md-switch
2618                   ng-model="vm.queueCampaign.acw"
2619                   aria-label="AfterCallWork"
2620                   ng-disabled="!vm.crudPermissions.canEdit"
2621                   ><span translate="MOTIONDIALER.AFTERCALLWORK"
2622                     >AfterCallWork</span
2623                   ></md-switch
2624                 >
2625
2626                 <div class="hint">
2627                   <span translate="MOTIONDIALER.HELP.AFTERCALLWORK"></span>
2628                 </div>
2629               </md-input-container>
2630               <md-input-container ng-if="vm.queueCampaign.acw" class="md-block">
2631                 <label translate="MOTIONDIALER.AFTERCALLWORKDURATION"
2632                   >AfterCallWorkDuration</label
2633                 >
2634                 <input
2635                   type="number"
2636                   name="acwTimeout"
2637                   ng-model="vm.queueCampaign.acwTimeout"
2638                   min="0"
2639                   ng-required="true"
2640                   ng-disabled="!vm.crudPermissions.canEdit"
2641                 />
2642
2643                 <div class="hint">
2644                   <span
2645                     translate="MOTIONDIALER.HELP.AFTERCALLWORKDURATION"
2646                   ></span>
2647                 </div>
2648                 <div
2649                   ng-messages="advancedpreviewForm['acwTimeout'].$error"
2650                   ng-show="advancedpreviewForm['acwTimeout'].$touched"
2651                   role="alert"
2652                 >
2653                   <div ng-message="required">
2654                     <span
2655                       translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_REQUIRED"
2656                       >AfterCallWorkDuration field is required</span
2657                     >
2658                   </div>
2659                   <div ng-message="min">
2660                     <span
2661                       translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO"
2662                       >AfterCallWorkDuration must be a valid greater or equal
2663                       than</span
2664                     >
2665                     <span>0</span>
2666                   </div>
2667                 </div>
2668               </md-input-container>
2669               <md-input-container class="md-block">
2670                 <label translate="MOTIONDIALER.MONITORFORMAT"
2671                   >MonitorFormat</label
2672                 >
2673                 <md-select
2674                   name="monitor_format"
2675                   ng-model="vm.queueCampaign.monitor_format"
2676                   ng-disabled="!vm.crudPermissions.canEdit"
2677                 >
2678                   <md-option ng-value="''">Inactive</md-option>
2679                   <md-option ng-value="'wav'">wav</md-option>
2680                   <md-option ng-value="'wav49'">wav49</md-option>
2681                   <md-option ng-value="'gsm'">gsm</md-option>
2682                 </md-select>
2683                 <div class="hint">
2684                   <span translate="MOTIONDIALER.HELP.MONITORFORMAT"></span>
2685                 </div>
2686                 <div
2687                   ng-messages="advancedpreviewForm['monitor_format'].$error"
2688                   ng-show="advancedpreviewForm['monitor_format'].$touched"
2689                   role="alert"
2690                 >
2691                   <div ng-message="required">
2692                     <span translate="MOTIONDIALER.ERRORS.MONITORFORMAT_REQUIRED"
2693                       >MonitorFormat field is required</span
2694                     >
2695                   </div>
2696                 </div>
2697               </md-input-container>
2698               <md-input-container class="md-block">
2699                 <label translate="MOTIONDIALER.DIALORDERBYSCHEDULEDAT"
2700                   >DialOrderByScheduledAt</label
2701                 >
2702                 <md-select
2703                   name="dialOrderByScheduledAt"
2704                   ng-model="vm.queueCampaign.dialOrderByScheduledAt"
2705                   ng-disabled="!vm.crudPermissions.canEdit"
2706                 >
2707                   <md-option ng-value="'DESC'">
2708                     {{ 'MOTIONDIALER.DESC' | translate }}
2709                   </md-option>
2710
2711                   <md-option ng-value="'ASC'">
2712                     {{ 'MOTIONDIALER.ASC' | translate }}
2713                   </md-option>
2714                 </md-select>
2715                 <div class="hint">
2716                   <span
2717                     translate="MOTIONDIALER.HELP.DIALORDERBYSCHEDULEDAT"
2718                   ></span>
2719                 </div>
2720                 <div
2721                   ng-messages="advancedpreviewForm['dialOrderByScheduledAt'].$error"
2722                   ng-show="advancedpreviewForm['dialOrderByScheduledAt'].$touched"
2723                   role="alert"
2724                 >
2725                   <div ng-message="required">
2726                     <span
2727                       translate="MOTIONDIALER.ERRORS.DIALORDERBYSCHEDULEDAT_REQUIRED"
2728                       >DialOrderByScheduledAt field is required</span
2729                     >
2730                   </div>
2731                 </div>
2732               </md-input-container>
2733               <md-input-container class="md-block">
2734                 <md-switch
2735                   ng-model="vm.queueCampaign.mandatoryDisposition"
2736                   aria-label="MandatoryDisposition"
2737                   ng-disabled="!vm.crudPermissions.canEdit"
2738                   ><span translate="MOTIONDIALER.MANDATORYDISPOSITION"
2739                     >MandatoryDisposition</span
2740                   ></md-switch
2741                 >
2742               </md-input-container>
2743               <md-input-container
2744                 ng-if="vm.queueCampaign.mandatoryDisposition"
2745                 class="md-block"
2746               >
2747                 <label translate="MOTIONDIALER.MANDATORYDISPOSITIONPAUSEID"
2748                   >MandatoryDispositionPauseId</label
2749                 >
2750                 <md-select
2751                   name="mandatoryDispositionPauseId"
2752                   ng-model="vm.queueCampaign.mandatoryDispositionPauseId"
2753                   required
2754                   ng-disabled="!vm.crudPermissions.canEdit"
2755                 >
2756                   <md-option
2757                     ng-value="mandatoryDispositionPauseId.id"
2758                     ng-repeat="mandatoryDispositionPauseId in vm.pauses"
2759                     ng-disabled="mandatoryDispositionPauseId.canSelect === false"
2760                     >{{ mandatoryDispositionPauseId.name }}</md-option
2761                   >
2762                 </md-select>
2763                 <div class="hint">
2764                   <span
2765                     translate="MOTIONDIALER.HELP.MANDATORYDISPOSITIONPAUSEID"
2766                   ></span>
2767                 </div>
2768                 <div
2769                   ng-messages="advancedpreviewForm['mandatoryDispositionPauseId'].$error"
2770                   ng-show="advancedpreviewForm['mandatoryDispositionPauseId'].$touched"
2771                   role="alert"
2772                 >
2773                   <div ng-message="required">
2774                     <span
2775                       translate="MOTIONDIALER.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED"
2776                       >MandatoryDispositionPauseId field is required</span
2777                     >
2778                   </div>
2779                 </div>
2780               </md-input-container>
2781             </form>
2782           </div>
2783           <div
2784             ng-if="vm.queueCampaign.dialMethod === 'predictive'"
2785             class="queueCampaign-detail-form-container thresholds md-background-bg md-whiteframe-1dp"
2786           >
2787             <div class="pb-16" layout="row" layout-align="start center">
2788               <div
2789                 class="h2 secondary-text"
2790                 translate="MOTIONDIALER.THRESHOLDS"
2791               >
2792                 THRESHOLDS
2793               </div>
2794             </div>
2795             <form name="thresholdsForm" novalidate>
2796               <md-input-container
2797                 ng-if="vm.queueCampaign.dialMethod == 'predictive'"
2798                 class="md-block"
2799               >
2800                 <span translate="MOTIONDIALER.PREDICTIVEMAXTHRESHOLD"
2801                   >PredictiveMaxThreshold</span
2802                 >
2803                 <div class="hint">
2804                   <span
2805                     translate="MOTIONDIALER.HELP.PREDICTIVEMAXTHRESHOLD"
2806                   ></span>
2807                 </div>
2808                 <md-slider
2809                   md-discrete
2810                   flex
2811                   ng-model="vm.queueCampaign.dialPredictiveIntervalMaxThreshold"
2812                   min="1"
2813                   max="100"
2814                   step="1"
2815                   class="md-accent"
2816                 ></md-slider>
2817               </md-input-container>
2818               <md-input-container
2819                 ng-if="vm.queueCampaign.dialMethod == 'predictive'"
2820                 class="md-block"
2821               >
2822                 <span translate="MOTIONDIALER.PREDICTIVEMINTHRESHOLD"
2823                   >PredictiveMinThreshold</span
2824                 >
2825                 <div class="hint">
2826                   <span
2827                     translate="MOTIONDIALER.HELP.PREDICTIVEMINTHRESHOLD"
2828                   ></span>
2829                 </div>
2830                 <md-slider
2831                   md-discrete
2832                   flex
2833                   ng-model="vm.queueCampaign.dialPredictiveIntervalMinThreshold"
2834                   min="1"
2835                   max="100"
2836                   step="1"
2837                   class="md-accent"
2838                 ></md-slider>
2839               </md-input-container>
2840             </form>
2841           </div>
2842           <div
2843             class="queueCampaign-detail-form-container recallme md-background-bg md-whiteframe-1dp"
2844           >
2845             <div class="pb-16" layout="row" layout-align="start center">
2846               <div class="h2 secondary-text" translate="MOTIONDIALER.RECALLME">
2847                 RECALLME
2848               </div>
2849             </div>
2850             <form name="recallmeForm" novalidate>
2851               <md-input-container class="md-block">
2852                 <label translate="MOTIONDIALER.DIALRECALLMETIMEOUT"
2853                   >DialRecallMeTimeout</label
2854                 >
2855                 <input
2856                   type="number"
2857                   name="dialRecallMeTimeout"
2858                   ng-model="vm.queueCampaign.dialRecallMeTimeout"
2859                   min="1"
2860                   ng-required="true"
2861                   autofocus
2862                   ng-disabled="!vm.crudPermissions.canEdit"
2863                 />
2864
2865                 <div class="hint">
2866                   <span
2867                     translate="MOTIONDIALER.HELP.DIALRECALLMETIMEOUT"
2868                   ></span>
2869                 </div>
2870                 <div
2871                   ng-messages="recallmeForm['dialRecallMeTimeout'].$error"
2872                   ng-show="recallmeForm['dialRecallMeTimeout'].$touched"
2873                   role="alert"
2874                 >
2875                   <div ng-message="required">
2876                     <span
2877                       translate="MOTIONDIALER.ERRORS.DIALRECALLMETIMEOUT_REQUIRED"
2878                       >DialRecallMeTimeout field is required</span
2879                     >
2880                   </div>
2881                   <div ng-message="min">
2882                     <span
2883                       translate="MOTIONDIALER.ERRORS.DIALRECALLMETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO"
2884                       >DialRecallMeTimeout must be a valid greater or equal
2885                       than</span
2886                     >
2887                     <span>1</span>
2888                   </div>
2889                 </div>
2890               </md-input-container>
2891               <md-input-container class="md-block">
2892                 <md-switch
2893                   ng-model="vm.queueCampaign.dialRecallInQueue"
2894                   aria-label="DialRecallInQueue"
2895                   ng-disabled="!vm.crudPermissions.canEdit"
2896                   ><span translate="MOTIONDIALER.DIALRECALLINQUEUE"
2897                     >DialRecallInQueue</span
2898                   ></md-switch
2899                 >
2900
2901                 <div class="hint">
2902                   <span translate="MOTIONDIALER.HELP.DIALRECALLINQUEUE"></span>
2903                 </div>
2904               </md-input-container>
2905             </form>
2906           </div>
2907           <div
2908             ng-if="vm.queueCampaign.dialMethod != 'preview'"
2909             class="queueCampaign-detail-form-container globalinterval md-background-bg md-whiteframe-1dp"
2910           >
2911             <div class="pb-16" layout="row" layout-align="start center">
2912               <div
2913                 class="h2 secondary-text"
2914                 translate="MOTIONDIALER.GLOBALINTERVAL"
2915               >
2916                 GLOBALINTERVAL
2917               </div>
2918             </div>
2919             <form name="globalintervalForm" novalidate>
2920               <md-input-container class="md-block">
2921                 <label translate="MOTIONDIALER.GLOBALINTERVAL"
2922                   >GlobalInterval</label
2923                 >
2924                 <input
2925                   type="text"
2926                   name="dialGlobalInterval"
2927                   ng-model="vm.queueCampaign.dialGlobalInterval"
2928                   ng-required="true"
2929                   autofocus
2930                   ng-disabled="!vm.crudPermissions.canEdit"
2931                 />
2932
2933                 <div class="hint">
2934                   <span translate="MOTIONDIALER.HELP.GLOBALINTERVAL"></span>
2935                 </div>
2936                 <div
2937                   ng-messages="globalintervalForm['dialGlobalInterval'].$error"
2938                   ng-show="globalintervalForm['dialGlobalInterval'].$touched"
2939                   role="alert"
2940                 >
2941                   <div ng-message="required">
2942                     <span
2943                       translate="MOTIONDIALER.ERRORS.GLOBALINTERVAL_REQUIRED"
2944                       >GlobalInterval field is required</span
2945                     >
2946                   </div>
2947                 </div>
2948               </md-input-container>
2949             </form>
2950           </div>
2951           <div
2952             ng-if="vm.queueCampaign.dialMethod != 'preview'"
2953             class="queueCampaign-detail-form-container timezone md-background-bg md-whiteframe-1dp"
2954           >
2955             <div class="pb-16" layout="row" layout-align="start center">
2956               <div class="h2 secondary-text" translate="MOTIONDIALER.TIMEZONE">
2957                 TIMEZONE
2958               </div>
2959             </div>
2960             <form name="timezoneForm" novalidate>
2961               <md-input-container class="md-block">
2962                 <label translate="MOTIONDIALER.TIMEZONE">Timezone</label>
2963                 <ms-timezone
2964                   name="dialTimezone"
2965                   ng-model="vm.queueCampaign.dialTimezone"
2966                   autofocus
2967                   ng-disabled="!vm.crudPermissions.canEdit"
2968                 ></ms-timezone>
2969                 <div class="hint">
2970                   <span translate="MOTIONDIALER.HELP.TIMEZONE"></span>
2971                 </div>
2972                 <div
2973                   ng-messages="timezoneForm['dialTimezone'].$error"
2974                   ng-show="timezoneForm[dialTimezone].$touched"
2975                   role="alert"
2976                 >
2977                   <div ng-message="required">
2978                     <span translate="MOTIONDIALER.ERRORS.TIMEZONE_REQUIRED"
2979                       >Timezone field is required</span
2980                     >
2981                   </div>
2982                 </div>
2983               </md-input-container>
2984             </form>
2985           </div>
2986           <div
2987             ng-if="vm.queueCampaign.dialMethod === 'progressive' || vm.queueCampaign.dialMethod === 'predictive' || vm.queueCampaign.dialMethod === 'power'"
2988             class="queueCampaign-detail-form-container amd md-background-bg md-whiteframe-1dp"
2989           >
2990             <div class="pb-16" layout="row" layout-align="start center">
2991               <div class="h2 secondary-text" translate="MOTIONDIALER.AMD">
2992                 AMD
2993               </div>
2994             </div>
2995             <form name="amdForm" novalidate>
2996               <md-input-container class="md-block">
2997                 <md-switch
2998                   ng-model="vm.queueCampaign.dialAMDActive"
2999                   aria-label="AMDActive"
3000                   ng-disabled="!vm.crudPermissions.canEdit"
3001                   ><span translate="MOTIONDIALER.AMDACTIVE"
3002                     >AMDActive</span
3003                   ></md-switch
3004                 >
3005
3006                 <div class="hint">
3007                   <span translate="MOTIONDIALER.HELP.AMDACTIVE"></span>
3008                 </div>
3009               </md-input-container>
3010               <md-input-container
3011                 ng-if="vm.queueCampaign.dialAMDActive"
3012                 class="md-block"
3013               >
3014                 <label translate="MOTIONDIALER.AMDINITIALSILENCE"
3015                   >AMDInitialSilence</label
3016                 >
3017                 <input
3018                   type="number"
3019                   name="dialAMDInitialSilence"
3020                   ng-model="vm.queueCampaign.dialAMDInitialSilence"
3021                   min="0"
3022                   ng-disabled="!vm.crudPermissions.canEdit"
3023                 />
3024
3025                 <div class="hint">
3026                   <span translate="MOTIONDIALER.HELP.AMDINITIALSILENCE"></span>
3027                 </div>
3028                 <div
3029                   ng-messages="amdForm['dialAMDInitialSilence'].$error"
3030                   ng-show="amdForm['dialAMDInitialSilence'].$touched"
3031                   role="alert"
3032                 >
3033                   <div ng-message="required">
3034                     <span
3035                       translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_REQUIRED"
3036                       >AMDInitialSilence field is required</span
3037                     >
3038                   </div>
3039                   <div ng-message="min">
3040                     <span
3041                       translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO"
3042                       >AMDInitialSilence must be a valid greater or equal
3043                       than</span
3044                     >
3045                     <span>0</span>
3046                   </div>
3047                 </div>
3048               </md-input-container>
3049               <md-input-container
3050                 ng-if="vm.queueCampaign.dialAMDActive"
3051                 class="md-block"
3052               >
3053                 <label translate="MOTIONDIALER.AMDGREETING">AMDGreeting</label>
3054                 <input
3055                   type="number"
3056                   name="dialAMDGreeting"
3057                   ng-model="vm.queueCampaign.dialAMDGreeting"
3058                   min="0"
3059                   ng-disabled="!vm.crudPermissions.canEdit"
3060                 />
3061
3062                 <div class="hint">
3063                   <span translate="MOTIONDIALER.HELP.AMDGREETING"></span>
3064                 </div>
3065                 <div
3066                   ng-messages="amdForm['dialAMDGreeting'].$error"
3067                   ng-show="amdForm['dialAMDGreeting'].$touched"
3068                   role="alert"
3069                 >
3070                   <div ng-message="required">
3071                     <span translate="MOTIONDIALER.ERRORS.AMDGREETING_REQUIRED"
3072                       >AMDGreeting field is required</span
3073                     >
3074                   </div>
3075                   <div ng-message="min">
3076                     <span
3077                       translate="MOTIONDIALER.ERRORS.AMDGREETING_MUST_BE_GREATER_THAN_OR_EQUAL_TO"
3078                       >AMDGreeting must be a valid greater or equal than</span
3079                     >
3080                     <span>0</span>
3081                   </div>
3082                 </div>
3083               </md-input-container>
3084               <md-input-container
3085                 ng-if="vm.queueCampaign.dialAMDActive"
3086                 class="md-block"
3087               >
3088                 <label translate="MOTIONDIALER.AMDAFTERGREETINGSILENCE"
3089                   >AMDAfterGreetingSilence</label
3090                 >
3091                 <input
3092                   type="number"
3093                   name="dialAMDAfterGreetingSilence"
3094                   ng-model="vm.queueCampaign.dialAMDAfterGreetingSilence"
3095                   min="0"
3096                   ng-disabled="!vm.crudPermissions.canEdit"
3097                 />
3098
3099                 <div class="hint">
3100                   <span
3101                     translate="MOTIONDIALER.HELP.AMDAFTERGREETINGSILENCE"
3102                   ></span>
3103                 </div>
3104                 <div
3105                   ng-messages="amdForm['dialAMDAfterGreetingSilence'].$error"
3106                   ng-show="amdForm['dialAMDAfterGreetingSilence'].$touched"
3107                   role="alert"
3108                 >
3109                   <div ng-message="required">
3110                     <span
3111                       translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_REQUIRED"
3112                       >AMDAfterGreetingSilence field is required</span
3113                     >
3114                   </div>
3115                   <div ng-message="min">
3116                     <span
3117                       translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO"
3118                       >AMDAfterGreetingSilence must be a valid greater or equal
3119                       than</span
3120                     >
3121                     <span>0</span>
3122                   </div>
3123                 </div>
3124               </md-input-container>
3125               <md-input-container
3126                 ng-if="vm.queueCampaign.dialAMDActive"
3127                 class="md-block"
3128               >
3129                 <label translate="MOTIONDIALER.AMDTOTALANALYSISTIME"
3130                   >AMDTotalAnalysisTime</label
3131                 >
3132                 <input
3133                   type="number"
3134                   name="dialAMDTotalAnalysisTime"
3135                   ng-model="vm.queueCampaign.dialAMDTotalAnalysisTime"
3136                   min="0"
3137                   ng-disabled="!vm.crudPermissions.canEdit"
3138                 />
3139
3140                 <div class="hint">
3141                   <span
3142                     translate="MOTIONDIALER.HELP.AMDTOTALANALYSISTIME"
3143                   ></span>
3144                 </div>
3145                 <div
3146                   ng-messages="amdForm['dialAMDTotalAnalysisTime'].$error"
3147                   ng-show="amdForm['dialAMDTotalAnalysisTime'].$touched"
3148                   role="alert"
3149                 >
3150                   <div ng-message="required">
3151                     <span
3152                       translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_REQUIRED"
3153                       >AMDTotalAnalysisTime field is required</span
3154                     >
3155                   </div>
3156                   <div ng-message="min">
3157                     <span
3158                       translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO"
3159                       >AMDTotalAnalysisTime must be a valid greater or equal
3160                       than</span
3161                     >
3162                     <span>0</span>
3163                   </div>
3164                 </div>
3165               </md-input-container>
3166               <md-input-container
3167                 ng-if="vm.queueCampaign.dialAMDActive"
3168                 class="md-block"
3169               >
3170                 <label translate="MOTIONDIALER.AMDMINWORDLENGTH"
3171                   >AMDMinWordLength</label
3172                 >
3173                 <input
3174                   type="number"
3175                   name="dialAMDMinWordLength"
3176                   ng-model="vm.queueCampaign.dialAMDMinWordLength"
3177                   min="0"
3178                   ng-disabled="!vm.crudPermissions.canEdit"
3179                 />
3180
3181                 <div class="hint">
3182                   <span translate="MOTIONDIALER.HELP.AMDMINWORDLENGTH"></span>
3183                 </div>
3184                 <div
3185                   ng-messages="amdForm['dialAMDMinWordLength'].$error"
3186                   ng-show="amdForm['dialAMDMinWordLength'].$touched"
3187                   role="alert"
3188                 >
3189                   <div ng-message="required">
3190                     <span
3191                       translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_REQUIRED"
3192                       >AMDMinWordLength field is required</span
3193                     >
3194                   </div>
3195                   <div ng-message="min">
3196                     <span
3197                       translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO"
3198                       >AMDMinWordLength must be a valid greater or equal
3199                       than</span
3200                     >
3201                     <span>0</span>
3202                   </div>
3203                 </div>
3204               </md-input-container>
3205               <md-input-container
3206                 ng-if="vm.queueCampaign.dialAMDActive"
3207                 class="md-block"
3208               >
3209                 <label translate="MOTIONDIALER.AMDBETWEENWORDSSILENCE"
3210                   >AMDBetweenWordsSilence</label
3211                 >
3212                 <input
3213                   type="number"
3214                   name="dialAMDBetweenWordsSilence"
3215                   ng-model="vm.queueCampaign.dialAMDBetweenWordsSilence"
3216                   min="0"
3217                   ng-disabled="!vm.crudPermissions.canEdit"
3218                 />
3219
3220                 <div class="hint">
3221                   <span
3222                     translate="MOTIONDIALER.HELP.AMDBETWEENWORDSSILENCE"
3223                   ></span>
3224                 </div>
3225                 <div
3226                   ng-messages="amdForm['dialAMDBetweenWordsSilence'].$error"
3227                   ng-show="amdForm['dialAMDBetweenWordsSilence'].$touched"
3228                   role="alert"
3229                 >
3230                   <div ng-message="required">
3231                     <span
3232                       translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_REQUIRED"
3233                       >AMDBetweenWordsSilence field is required</span
3234                     >
3235                   </div>
3236                   <div ng-message="min">
3237                     <span
3238                       translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO"
3239                       >AMDBetweenWordsSilence must be a valid greater or equal
3240                       than</span
3241                     >
3242                     <span>0</span>
3243                   </div>
3244                 </div>
3245               </md-input-container>
3246               <md-input-container
3247                 ng-if="vm.queueCampaign.dialAMDActive"
3248                 class="md-block"
3249               >
3250                 <label translate="MOTIONDIALER.AMDMAXIMUMNUMBEROFWORDS"
3251                   >AMDMaximumNumberOfWords</label
3252                 >
3253                 <input
3254                   type="number"
3255                   name="dialAMDMaximumNumberOfWords"
3256                   ng-model="vm.queueCampaign.dialAMDMaximumNumberOfWords"
3257                   min="0"
3258                   ng-disabled="!vm.crudPermissions.canEdit"
3259                 />
3260
3261                 <div class="hint">
3262                   <span
3263                     translate="MOTIONDIALER.HELP.AMDMAXIMUMNUMBEROFWORDS"
3264                   ></span>
3265                 </div>
3266                 <div
3267                   ng-messages="amdForm['dialAMDMaximumNumberOfWords'].$error"
3268                   ng-show="amdForm['dialAMDMaximumNumberOfWords'].$touched"
3269                   role="alert"
3270                 >
3271                   <div ng-message="required">
3272                     <span
3273                       translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_REQUIRED"
3274                       >AMDMaximumNumberOfWords field is required</span
3275                     >
3276                   </div>
3277                   <div ng-message="min">
3278                     <span
3279                       translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO"
3280                       >AMDMaximumNumberOfWords must be a valid greater or equal
3281                       than</span
3282                     >
3283                     <span>0</span>
3284                   </div>
3285                 </div>
3286               </md-input-container>
3287               <md-input-container
3288                 ng-if="vm.queueCampaign.dialAMDActive"
3289                 class="md-block"
3290               >
3291                 <label translate="MOTIONDIALER.AMDSILENCETHRESHOLD"
3292                   >AMDSilenceThreshold</label
3293                 >
3294                 <input
3295                   type="number"
3296                   name="dialAMDSilenceThreshold"
3297                   ng-model="vm.queueCampaign.dialAMDSilenceThreshold"
3298                   min="0"
3299                   max="32767"
3300                   ng-disabled="!vm.crudPermissions.canEdit"
3301                 />
3302
3303                 <div class="hint">
3304                   <span
3305                     translate="MOTIONDIALER.HELP.AMDSILENCETHRESHOLD"
3306                   ></span>
3307                 </div>
3308                 <div
3309                   ng-messages="amdForm['dialAMDSilenceThreshold'].$error"
3310                   ng-show="amdForm['dialAMDSilenceThreshold'].$touched"
3311                   role="alert"
3312                 >
3313                   <div ng-message="required">
3314                     <span
3315                       translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_REQUIRED"
3316                       >AMDSilenceThreshold field is required</span
3317                     >
3318                   </div>
3319                   <div ng-message="min">
3320                     <span
3321                       translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_GREATER_THAN_OR_EQUAL_TO"
3322                       >AMDSilenceThreshold must be a valid greater or equal
3323                       than</span
3324                     >
3325                     <span>0</span>
3326                   </div>
3327                   <div ng-message="max">
3328                     <span
3329                       translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_LESS_THAN_OR_EQUAL_TO"
3330                       >AMDSilenceThreshold must be a valid greater or equal
3331                       than</span
3332                     >
3333                     <span>32767</span>
3334                   </div>
3335                 </div>
3336               </md-input-container>
3337               <md-input-container
3338                 ng-if="vm.queueCampaign.dialAMDActive"
3339                 class="md-block"
3340               >
3341                 <label translate="MOTIONDIALER.AMDMAXIMUMWORDLENGTH"
3342                   >AMDMaximumWordLength</label
3343                 >
3344                 <input
3345                   type="number"
3346                   name="dialAMDMaximumWordLength"
3347                   ng-model="vm.queueCampaign.dialAMDMaximumWordLength"
3348                   min="0"
3349                   ng-disabled="!vm.crudPermissions.canEdit"
3350                 />
3351
3352                 <div class="hint">
3353                   <span
3354                     translate="MOTIONDIALER.HELP.AMDMAXIMUMWORDLENGTH"
3355                   ></span>
3356                 </div>
3357                 <div
3358                   ng-messages="amdForm['dialAMDMaximumWordLength'].$error"
3359                   ng-show="amdForm['dialAMDMaximumWordLength'].$touched"
3360                   role="alert"
3361                 >
3362                   <div ng-message="required">
3363                     <span
3364                       translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_REQUIRED"
3365                       >AMDMaximumWordLength field is required</span
3366                     >
3367                   </div>
3368                   <div ng-message="min">
3369                     <span
3370                       translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO"
3371                       >AMDMaximumWordLength must be a valid greater or equal
3372                       than</span
3373                     >
3374                     <span>0</span>
3375                   </div>
3376                 </div>
3377               </md-input-container>
3378             </form>
3379           </div>
3380         </md-tab-body>
3381       </md-tab>
3382       <md-tab>
3383         <md-tab-label>
3384           <span translate="MOTIONDIALER.HOPPERS">HOPPERS</span>
3385         </md-tab-label>
3386         <md-tab-body>
3387           <div
3388             class="queueCampaign-detail-form-container hopperstatistics md-background-bg md-whiteframe-1dp"
3389           >
3390             <div
3391               ng-controller="QueueCampaignHopperStatisticsController as vm_hs"
3392               ng-init="vm_hs.init(vm.queueCampaign)"
3393             >
3394               <md-toolbar class="md-table-toolbar md-default">
3395                 <div class="md-toolbar-tools">
3396                   <span class="md-subhead" translate="MOTIONDIALER.HOPPERWIDGET"
3397                     >Hoppers</span
3398                   >
3399                   <div flex></div>
3400                   <md-button
3401                     class="md-icon-button"
3402                     ng-click="vm_hs.init(vm.queueCampaign)"
3403                     aria-label="refresh Hopper"
3404                     translate
3405                     translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS"
3406                   >
3407                     <md-icon md-font-icon="icon-refresh"></md-icon>
3408                   </md-button>
3409                 </div>
3410               </md-toolbar>
3411               <!-- WIDGET GROUP -->
3412               <div class="widget-group" layout="row" flex="100" layout-wrap>
3413                 <!-- WIDGET 1 -->
3414                 <ms-widget
3415                   class="h-140"
3416                   layout="column"
3417                   flex="100"
3418                   flex-gt-xs="50"
3419                   flex-gt-md="25"
3420                 >
3421                   <!-- Front -->
3422                   <ms-widget-front class="p-16 white-bg" layout="row" flex>
3423                     <div
3424                       class="pt-8 pb-8"
3425                       layout="column"
3426                       layout-align="center center"
3427                       flex
3428                     >
3429                       <div class="md-display-1 pb-8">
3430                         {{(vm_hs.total || 0) + (vm_hs.closed || 0)}}
3431                       </div>
3432                       <div class="font-weight-500 secondary-text">
3433                         {{ 'MOTIONDIALER.TOTAL' | translate }}
3434                       </div>
3435                     </div>
3436                   </ms-widget-front>
3437                   <!-- / Front -->
3438                 </ms-widget>
3439                 <!-- / WIDGET 1 -->
3440
3441                 <!-- WIDGET 2 -->
3442                 <ms-widget
3443                   class="h-140"
3444                   layout="column"
3445                   flex="100"
3446                   flex-gt-xs="50"
3447                   flex-gt-md="25"
3448                 >
3449                   <!-- Front -->
3450                   <ms-widget-front class="p-16 white-bg" layout="row" flex>
3451                     <div
3452                       class="pt-8 pb-8"
3453                       layout="column"
3454                       layout-align="center center"
3455                       flex
3456                     >
3457                       <div class="md-display-1 pb-8">
3458                         {{vm_hs.fresh || 0}} ({{vm_hs.total ? ((((vm_hs.fresh ||
3459                         0) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) |
3460                         number: 2) : 0}}%)
3461                       </div>
3462                       <div class="font-weight-500 secondary-text">
3463                         {{ 'MOTIONDIALER.FRESH' | translate }}
3464                       </div>
3465                     </div>
3466                   </ms-widget-front>
3467                   <!-- / Front -->
3468                 </ms-widget>
3469                 <!-- / WIDGET 2 -->
3470
3471                 <!-- WIDGET 3 -->
3472                 <ms-widget
3473                   class="h-140"
3474                   layout="column"
3475                   flex="100"
3476                   flex-gt-xs="50"
3477                   flex-gt-md="25"
3478                 >
3479                   <!-- Front -->
3480                   <ms-widget-front class="p-16 white-bg" layout="row" flex>
3481                     <div
3482                       class="pt-8 pb-8"
3483                       layout="column"
3484                       layout-align="center center"
3485                       flex
3486                     >
3487                       <div class="md-display-1 pb-8">
3488                         {{vm_hs.total ? (vm_hs.total - (vm_hs.fresh || 0)) : 0}}
3489                         ({{vm_hs.total ? ((((vm_hs.total - (vm_hs.fresh || 0)) *
3490                         100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) |
3491                         number: 2) : 0}}%)
3492                       </div>
3493                       <div class="font-weight-500 secondary-text">
3494                         {{ 'MOTIONDIALER.OPEN' | translate }}
3495                       </div>
3496                     </div>
3497                   </ms-widget-front>
3498                   <!-- / Front -->
3499                 </ms-widget>
3500                 <!-- / WIDGET 3 -->
3501
3502                 <!-- WIDGET 3 -->
3503                 <ms-widget
3504                   class="h-140"
3505                   layout="column"
3506                   flex="100"
3507                   flex-gt-xs="50"
3508                   flex-gt-md="25"
3509                 >
3510                   <!-- Front -->
3511                   <ms-widget-front class="p-16 white-bg" layout="row" flex>
3512                     <div
3513                       class="pt-8 pb-8"
3514                       layout="column"
3515                       layout-align="center center"
3516                       flex
3517                     >
3518                       <div class="md-display-1 pb-8">
3519                         {{vm_hs.closed ? (vm_hs.closed || 0) : 0}}
3520                         ({{vm_hs.closed ? ((((vm_hs.closed) * 100)/(vm_hs.closed
3521                         + (vm_hs.total || 0))) | number: 2) : 0}}%)
3522                       </div>
3523                       <div class="font-weight-500 secondary-text">
3524                         {{ 'MOTIONDIALER.CLOSED' | translate }}
3525                       </div>
3526                     </div>
3527                   </ms-widget-front>
3528                   <!-- / Front -->
3529                 </ms-widget>
3530                 <!-- / WIDGET 3 -->
3531               </div>
3532               <!-- / WIDGET GROUP -->
3533             </div>
3534           </div>
3535           <div
3536             class="queueCampaign-detail-form-container hoppers md-background-bg md-whiteframe-1dp"
3537           >
3538             <div
3539               ng-controller="QueueCampaignHoppersController as vm_dc"
3540               ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)"
3541             >
3542               <md-toolbar
3543                 class="md-table-toolbar md-default"
3544                 ng-hide="vm_dc.selectedQueueCampaignHoppers.length"
3545               >
3546                 <div class="md-toolbar-tools">
3547                   <span class="md-subhead" translate="MOTIONDIALER.HOPPERS"
3548                     >Hoppers</span
3549                   >
3550                   <ms-search-bar
3551                     on-search="vm_dc.query.filter = query"
3552                     on-collapse="vm_dc.query.filter = undefined"
3553                     debounce="300"
3554                     direction="down"
3555                   ></ms-search-bar>
3556                   <div flex></div>
3557                   <md-button
3558                     class="md-icon-button"
3559                     ng-click="vm_dc.getQueueCampaignHoppers()"
3560                     aria-label="refresh Hoppers"
3561                     translate
3562                     translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS"
3563                   >
3564                     <md-icon md-font-icon="icon-refresh"></md-icon>
3565                   </md-button>
3566                 </div>
3567               </md-toolbar>
3568               <md-toolbar
3569                 class="md-table-toolbar md-accent"
3570                 ng-show="vm_dc.selectedQueueCampaignHoppers.length"
3571               >
3572                 <div class="md-toolbar-tools">
3573                   <span class="md-subhead"
3574                     >{{vm_dc.selectedQueueCampaignHoppers.length}}
3575                     {{vm_dc.selectedQueueCampaignHoppers.length > 1 ? 'items' :
3576                     'item'}} selected</span
3577                   >
3578                   <div flex></div>
3579                   <button
3580                     class="md-icon-button"
3581                     ng-csv="vm_dc.exportSelectedQueueCampaignHoppers"
3582                     csv-label="true"
3583                     filename="queueCampaigns.csv"
3584                   >
3585                     <md-icon md-font-icon="icon-file-excel"></md-icon>
3586                   </button>
3587                   <md-button
3588                     ng-if="vm_dc.crudPermissions.canDelete"
3589                     class="md-icon-button"
3590                     ng-click="vm_dc.deleteSelectedQueueCampaignHoppers($event)"
3591                     aria-label="delete selected"
3592                     translate
3593                     translate-attr-label="MOTIONDIALER.DELETE_SELECTED"
3594                   >
3595                     <md-icon md-font-icon="icon-delete"></md-icon>
3596                   </md-button>
3597                 </div>
3598               </md-toolbar>
3599               <md-table-container class="font-size-12">
3600                 <table
3601                   md-table
3602                   md-row-select
3603                   multiple
3604                   ng-model="vm_dc.selectedQueueCampaignHoppers"
3605                   md-progress="vm_dc.promise"
3606                 >
3607                   <thead
3608                     md-head
3609                     md-order="vm_dc.query.sort"
3610                     md-on-reorder="vm_dc.getQueueCampaignHoppers"
3611                   >
3612                     <tr md-row>
3613                       <th md-column md-order-by="ContactId">
3614                         {{ 'MOTIONDIALER.CONTACTID' | translate }}
3615                       </th>
3616                       <th md-column md-order-by="phone">
3617                         {{ 'MOTIONDIALER.PHONE' | translate }}
3618                       </th>
3619                       <th md-column md-order-by="countcongestionretry">
3620                         {{ 'MOTIONDIALER.CONGESTION' | translate }}
3621                       </th>
3622                       <th md-column md-order-by="countbusyretry">
3623                         {{ 'MOTIONDIALER.BUSY' | translate }}
3624                       </th>
3625                       <th md-column md-order-by="countnoanswerretry">
3626                         {{ 'MOTIONDIALER.NOANSWER' | translate }}
3627                       </th>
3628                       <th md-column md-order-by="countnosuchnumberretry">
3629                         {{ 'MOTIONDIALER.NOSUCHNUMBER' | translate }}
3630                       </th>
3631                       <th md-column md-order-by="countdropretry">
3632                         {{ 'MOTIONDIALER.DROP' | translate }}
3633                       </th>
3634                       <th md-column md-order-by="countabandonedretry">
3635                         {{ 'MOTIONDIALER.ABANDONED' | translate }}
3636                       </th>
3637                       <th md-column md-order-by="countmachineretry">
3638                         {{ 'MOTIONDIALER.MACHINE' | translate }}
3639                       </th>
3640                       <th md-column md-order-by="countagentrejectretry">
3641                         {{ 'MOTIONDIALER.AGENTREJECT' | translate }}
3642                       </th>
3643                       <th md-column md-order-by="scheduledat">
3644                         {{ 'MOTIONDIALER.SCHEDULEDAT' | translate }}
3645                       </th>
3646                       <th md-column md-order-by="priority">
3647                         {{ 'MOTIONDIALER.PRIORITY' | translate }}
3648                       </th>
3649                       <th md-column md-order-by="recallme">
3650                         {{ 'MOTIONDIALER.RECALLAGENT' | translate }}
3651                       </th>
3652                       <th md-column width="10px"></th>
3653                     </tr>
3654                   </thead>
3655                   <tbody md-body>
3656                     <tr
3657                       md-row
3658                       md-select="hopper"
3659                       md-select-id="id"
3660                       ng-repeat="hopper in vm_dc.queueCampaignHoppers.rows"
3661                     >
3662                       <td
3663                         ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)"
3664                         md-cell
3665                       >
3666                         {{hopper.ContactId}}
3667                       </td>
3668                       <td
3669                         ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)"
3670                         md-cell
3671                       >
3672                         {{hopper.phone}}
3673                       </td>
3674                       <td
3675                         ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)"
3676                         md-cell
3677                       >
3678                         {{hopper.countcongestionretry}}
3679                       </td>
3680                       <td
3681                         ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)"
3682                         md-cell
3683                       >
3684                         {{hopper.countbusyretry}}
3685                       </td>
3686                       <td
3687                         ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)"
3688                         md-cell
3689                       >
3690                         {{hopper.countnoanswerretry}}
3691                       </td>
3692                       <td
3693                         ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)"
3694                         md-cell
3695                       >
3696                         {{hopper.countnosuchnumberretry}}
3697                       </td>
3698                       <td
3699                         ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)"
3700                         md-cell
3701                       >
3702                         {{hopper.countdropretry}}
3703                       </td>
3704                       <td
3705                         ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)"
3706                         md-cell
3707                       >
3708                         {{hopper.countabandonedretry}}
3709                       </td>
3710                       <td
3711                         ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)"
3712                         md-cell
3713                       >
3714                         {{hopper.countmachineretry}}
3715                       </td>
3716                       <td
3717                         ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)"
3718                         md-cell
3719                       >
3720                         {{hopper.countagentrejectretry}}
3721                       </td>
3722                       <td
3723                         ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)"
3724                         md-cell
3725                       >
3726                         {{ hopper.scheduledat | formatdate }}
3727                       </td>
3728                       <td
3729                         ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)"
3730                         md-cell
3731                       >
3732                         {{ vm_dc.arraypriority[hopper.priority].option }}
3733                       </td>
3734
3735                       <td
3736                         ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)"
3737                         md-cell
3738                         class="recallme"
3739                       >
3740                         <md-icon
3741                           md-colors="{color: {{hopper.recallme ? '\'green\'' : '\'grey\''}}}"
3742                           md-font-icon="{{hopper.recallme? 'icon-check' : 'icon-close'}}"
3743                         ></md-icon>
3744                       </td>
3745                       <td
3746                         md-cell
3747                         class="actions"
3748                         ng-if="!vm_dc.crudPermissions.readOnly"
3749                       >
3750                         <md-menu>
3751                           <md-button
3752                             class="md-icon-button"
3753                             aria-label="More"
3754                             translate
3755                             translate-attr-aria-label="MOTIONDIALER.MORE"
3756                             ng-click="$mdOpenMenu($event)"
3757                           >
3758                             <md-icon
3759                               md-font-icon="icon-dots-vertical"
3760                             ></md-icon>
3761                           </md-button>
3762
3763                           <md-menu-content width="3">
3764                             <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">
3765                               <md-button
3766                                 ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)"
3767                                 translate="MOTIONDIALER.EDIT_HOPPER"
3768                               >
3769                                 Edit Hopper
3770                               </md-button>
3771                             </md-menu-item>
3772                             <md-menu-item
3773                               ng-if="vm_dc.crudPermissions.canDelete"
3774                             >
3775                               <md-button
3776                                 ng-click="vm_dc.deleteConfirm(hopper, $event)"
3777                                 translate="MOTIONDIALER.DELETE_HOPPER"
3778                               >
3779                                 Delete Hopper
3780                               </md-button>
3781                             </md-menu-item>
3782                           </md-menu-content>
3783                         </md-menu>
3784                       </td>
3785                     </tr>
3786                     <tr md-row ng-if="!vm_dc.queueCampaignHoppers.rows.length">
3787                       <td md-cell colspan="17">
3788                         <div layout="row" layout-align="center center">
3789                           <span
3790                             class="text-boxed-light"
3791                             translate="MOTIONDIALER.NO_HOPPER_AVAILABLE"
3792                             >No hopper available</span
3793                           >
3794                         </div>
3795                       </td>
3796                     </tr>
3797                   </tbody>
3798                 </table>
3799               </md-table-container>
3800               <md-table-pagination
3801                 md-label="{page: '{{'MOTIONDIALER.PAGE' | translate}}:', rowsPerPage: '{{'MOTIONDIALER.ROWSPERPAGE' | translate}}:', of: '{{'MOTIONDIALER.OF' | translate}}'}"
3802                 md-limit="vm_dc.query.limit"
3803                 md-limit-options="[10, 15, 20, 50, 100, 250]"
3804                 md-page="vm_dc.query.page"
3805                 md-total="{{vm_dc.queueCampaignHoppers.count}}"
3806                 md-on-paginate="vm_dc.getQueueCampaignHoppers"
3807                 md-page-select
3808               ></md-table-pagination>
3809             </div>
3810           </div>
3811         </md-tab-body>
3812       </md-tab>
3813       <md-tab>
3814         <md-tab-label>
3815           <span translate="MOTIONDIALER.HISTORY">HISTORY</span>
3816         </md-tab-label>
3817         <md-tab-body>
3818           <div
3819             class="queueCampaign-detail-form-container hopperhistories md-background-bg md-whiteframe-1dp"
3820           >
3821             <div
3822               ng-controller="QueueCampaignHopperHistoriesController as vm_dc"
3823               ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)"
3824             >
3825               <md-toolbar
3826                 class="md-table-toolbar md-default"
3827                 ng-hide="vm_dc.selectedQueueCampaignHopperHistories.length"
3828               >
3829                 <div class="md-toolbar-tools">
3830                   <span
3831                     class="md-subhead"
3832                     translate="MOTIONDIALER.HOPPERHISTORIES"
3833                     >HopperHistories</span
3834                   >
3835                   <ms-search-bar
3836                     on-search="vm_dc.query.filter = query"
3837                     on-collapse="vm_dc.query.filter = undefined"
3838                     debounce="300"
3839                     direction="down"
3840                   ></ms-search-bar>
3841                   <div flex></div>
3842                   <md-button
3843                     class="md-icon-button"
3844                     ng-click="vm_dc.getQueueCampaignHopperHistories()"
3845                     aria-label="refresh HopperHistories"
3846                     translate
3847                     translate-attr-label="MOTIONDIALER.REFRESH_HOPPERHISTORIES"
3848                   >
3849                     <md-icon md-font-icon="icon-refresh"></md-icon>
3850                   </md-button>
3851                 </div>
3852               </md-toolbar>
3853               <md-toolbar
3854                 class="md-table-toolbar md-accent"
3855                 ng-show="vm_dc.selectedQueueCampaignHopperHistories.length"
3856               >
3857                 <div class="md-toolbar-tools">
3858                   <span class="md-subhead"
3859                     >{{vm_dc.selectedQueueCampaignHopperHistories.length}}
3860                     {{vm_dc.selectedQueueCampaignHopperHistories.length > 1 ?
3861                     'items' : 'item'}} selected</span
3862                   >
3863                   <div flex></div>
3864                   <button
3865                     class="md-icon-button"
3866                     ng-csv="vm_dc.exportSelectedQueueCampaignHopperHistories"
3867                     csv-label="true"
3868                     filename="queueCampaigns.csv"
3869                   >
3870                     <md-icon md-font-icon="icon-file-excel"></md-icon>
3871                   </button>
3872                 </div>
3873               </md-toolbar>
3874               <md-table-container class="font-size-12">
3875                 <table
3876                   md-table
3877                   md-row-select
3878                   multiple
3879                   ng-model="vm_dc.selectedQueueCampaignHopperHistories"
3880                   md-progress="vm_dc.promise"
3881                 >
3882                   <thead
3883                     md-head
3884                     md-order="vm_dc.query.sort"
3885                     md-on-reorder="vm_dc.getQueueCampaignHopperHistories"
3886                   >
3887                     <tr md-row>
3888                       <th md-column md-order-by="uniqueid">
3889                         {{ 'MOTIONDIALER.UNIQUEID' | translate }}
3890                       </th>
3891                       <th md-column md-order-by="ContactId">
3892                         {{ 'MOTIONDIALER.CONTACTID' | translate }}
3893                       </th>
3894                       <th md-column md-order-by="calleridnum">
3895                         {{ 'MOTIONDIALER.PHONE' | translate }}
3896                       </th>
3897                       <th md-column md-order-by="calleridname">
3898                         {{ 'MOTIONDIALER.NAME' | translate }}
3899                       </th>
3900                       <th md-column md-order-by="statedesc">
3901                         {{ 'MOTIONDIALER.STATUS' | translate }}
3902                       </th>
3903                       <th md-column md-order-by="scheduledat">
3904                         {{ 'MOTIONDIALER.SCHEDULEDAT' | translate }}
3905                       </th>
3906                       <th md-column md-order-by="starttime">
3907                         {{ 'MOTIONDIALER.STARTTIME' | translate }}
3908                       </th>
3909                       <th md-column md-order-by="endtime">
3910                         {{ 'MOTIONDIALER.ENDTIME' | translate }}
3911                       </th>
3912                       <th md-column width="10px"></th>
3913                     </tr>
3914                   </thead>
3915                   <tbody md-body>
3916                     <tr
3917                       md-row
3918                       md-select="hopperHistory"
3919                       md-select-id="id"
3920                       ng-repeat="hopperHistory in vm_dc.queueCampaignHopperHistories.rows"
3921                     >
3922                       <td md-cell>{{hopperHistory.uniqueid}}</td>
3923                       <td md-cell>{{hopperHistory.ContactId}}</td>
3924                       <td md-cell>{{hopperHistory.calleridnum}}</td>
3925                       <td md-cell>{{hopperHistory.calleridname}}</td>
3926                       <td md-cell>{{hopperHistory.statedesc}}</td>
3927                       <td md-cell>
3928                         {{ hopperHistory.scheduledat | formatdate }}
3929                       </td>
3930                       <td md-cell>
3931                         {{ hopperHistory.starttime | formatdate }}
3932                       </td>
3933                       <td md-cell>{{ hopperHistory.endtime | formatdate }}</td>
3934                       <td md-cell class="actions"></td>
3935                     </tr>
3936                     <tr
3937                       md-row
3938                       ng-if="!vm_dc.queueCampaignHopperHistories.rows.length"
3939                     >
3940                       <td md-cell colspan="11">
3941                         <div layout="row" layout-align="center center">
3942                           <span
3943                             class="text-boxed-light"
3944                             translate="MOTIONDIALER.NO_HOPPERHISTORY_AVAILABLE"
3945                             >No hopperhistory available</span
3946                           >
3947                         </div>
3948                       </td>
3949                     </tr>
3950                   </tbody>
3951                 </table>
3952               </md-table-container>
3953               <md-table-pagination
3954                 md-label="{page: '{{'MOTIONDIALER.PAGE' | translate}}:', rowsPerPage: '{{'MOTIONDIALER.ROWSPERPAGE' | translate}}:', of: '{{'MOTIONDIALER.OF' | translate}}'}"
3955                 md-limit="vm_dc.query.limit"
3956                 md-limit-options="[10, 15, 20, 50, 100, 250]"
3957                 md-page="vm_dc.query.page"
3958                 md-total="{{vm_dc.queueCampaignHopperHistories.count}}"
3959                 md-on-paginate="vm_dc.getQueueCampaignHopperHistories"
3960                 md-page-select
3961               ></md-table-pagination>
3962             </div>
3963           </div>
3964         </md-tab-body>
3965       </md-tab>
3966       <md-tab>
3967         <md-tab-label>
3968           <span translate="MOTIONDIALER.FINAL">FINAL</span>
3969         </md-tab-label>
3970         <md-tab-body>
3971           <div
3972             class="queueCampaign-detail-form-container hopperfinals md-background-bg md-whiteframe-1dp"
3973           >
3974             <div
3975               ng-controller="QueueCampaignHopperFinalsController as vm_dc"
3976               ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)"
3977             >
3978               <md-toolbar
3979                 class="md-table-toolbar md-default"
3980                 ng-hide="vm_dc.selectedQueueCampaignHopperFinals.length"
3981               >
3982                 <div class="md-toolbar-tools">
3983                   <span class="md-subhead" translate="MOTIONDIALER.HOPPERFINALS"
3984                     >HopperFinals</span
3985                   >
3986                   <ms-search-bar
3987                     on-search="vm_dc.query.filter = query"
3988                     on-collapse="vm_dc.query.filter = undefined"
3989                     debounce="300"
3990                     direction="down"
3991                   ></ms-search-bar>
3992                   <div flex></div>
3993                   <md-button
3994                     class="md-icon-button"
3995                     ng-click="vm_dc.getQueueCampaignHopperFinals()"
3996                     aria-label="refresh HopperFinals"
3997                     translate
3998                     translate-attr-label="MOTIONDIALER.REFRESH_HOPPERFINALS"
3999                   >
4000                     <md-icon md-font-icon="icon-refresh"></md-icon>
4001                   </md-button>
4002                   <td md-cell class="actions">
4003                     <md-menu>
4004                       <md-button
4005                         class="md-icon-button"
4006                         aria-label="More"
4007                         translate
4008                         translate-attr-aria-label="MOTIONDIALER.MORE"
4009                         ng-click="vm_dc.countContactsQueueCampaignHopperFinal(vm_dc.query.id); $mdOpenMenu($event);"
4010                       >
4011                         <md-icon md-font-icon="icon-backup-restore"></md-icon>
4012                         <md-tooltip
4013                           ><span translate="MOTIONDIALER.RESTORECONTACTS"></span
4014                         ></md-tooltip>
4015                       </md-button>
4016                       <md-menu-content width="3">
4017                         <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">
4018                           <md-button
4019                             ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(3)"
4020                           >
4021                             <span translate="MOTIONDIALER.NOANSWER "
4022                               >NoAnswer</span
4023                             >
4024                             <span class="badge"
4025                               >({{vm_dc.contacts.noAnswerContacts}})</span
4026                             >
4027                           </md-button>
4028                         </md-menu-item>
4029                         <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">
4030                           <md-button
4031                             ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(5)"
4032                           >
4033                             <span translate="MOTIONDIALER.BUSY ">Busy</span>
4034                             <span class="badge"
4035                               >({{vm_dc.contacts.busyContacts}})</span
4036                             >
4037                           </md-button>
4038                         </md-menu-item>
4039                         <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">
4040                           <md-button
4041                             ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(8)"
4042                           >
4043                             <span translate="MOTIONDIALER.CONGESTION "
4044                               >Congestion</span
4045                             >
4046                             <span class="badge"
4047                               >({{vm_dc.contacts.congestionContacts}})</span
4048                             >
4049                           </md-button>
4050                         </md-menu-item>
4051                         <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">
4052                           <md-button
4053                             ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(10)"
4054                           >
4055                             <span translate="MOTIONDIALER.DROPPED ">Drop</span>
4056                             <span class="badge"
4057                               >({{vm_dc.contacts.dropContacts}})</span
4058                             >
4059                           </md-button>
4060                         </md-menu-item>
4061                         <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">
4062                           <md-button
4063                             ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(11)"
4064                           >
4065                             <span translate="MOTIONDIALER.ABANDONED "
4066                               >Abandoned</span
4067                             >
4068                             <span class="badge"
4069                               >({{vm_dc.contacts.abandonedContacts}})</span
4070                             >
4071                           </md-button>
4072                         </md-menu-item>
4073                         <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">
4074                           <md-button
4075                             ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(22)"
4076                           >
4077                             <span translate="MOTIONDIALER.RECALLFAILEDTIMEOUT"
4078                               >Recall</span
4079                             >
4080                             <span class="badge"
4081                               >({{vm_dc.contacts.reCallContacts}})</span
4082                             >
4083                           </md-button>
4084                         </md-menu-item>
4085                         <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">
4086                           <md-button
4087                             ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(0)"
4088                           >
4089                             <span translate="MOTIONDIALER.NO_SUCH_NUMBER"
4090                               >NoSuchNumber</span
4091                             >
4092                             <span class="badge"
4093                               >({{vm_dc.contacts.noSuchContacts}})</span
4094                             >
4095                           </md-button>
4096                         </md-menu-item>
4097                         <md-menu-item>
4098                           <md-button
4099                             ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(19)"
4100                           >
4101                             <span translate="MOTIONDIALER.ANSWERING_MACHINE"
4102                               >AnsweringMachine</span
4103                             >
4104                             <span class="badge"
4105                               >({{vm_dc.contacts.answeringMachine}})</span
4106                             >
4107                           </md-button>
4108                         </md-menu-item>
4109                       </md-menu-content>
4110                     </md-menu>
4111                   </td>
4112                 </div>
4113               </md-toolbar>
4114               <md-toolbar
4115                 class="md-table-toolbar md-accent"
4116                 ng-show="vm_dc.selectedQueueCampaignHopperFinals.length"
4117               >
4118                 <div class="md-toolbar-tools">
4119                   <span class="md-subhead"
4120                     >{{vm_dc.selectedQueueCampaignHopperFinals.length}}
4121                     {{vm_dc.selectedQueueCampaignHopperFinals.length > 1 ?
4122                     'items' : 'item'}} selected</span
4123                   >
4124                   <div flex></div>
4125                   <button
4126                     class="md-icon-button"
4127                     ng-csv="vm_dc.exportSelectedQueueCampaignHopperFinals"
4128                     csv-label="true"
4129                     filename="queueCampaigns.csv"
4130                   >
4131                     <md-icon md-font-icon="icon-file-excel"></md-icon>
4132                   </button>
4133                   <md-button
4134                     ng-if="vm_dc.crudPermissions.canEdit"
4135                     class="md-icon-button"
4136                     ng-click="vm_dc.moveSelectedQueueCampaignHopperFinals($event)"
4137                     aria-label="move selected"
4138                     translate
4139                     translate-attr-label="MOTIONDIALER.MOVE_SELECTED"
4140                   >
4141                     <md-icon md-font-icon="icon-restore"></md-icon>
4142                     <md-tooltip
4143                       ><span translate="MOTIONDIALER.RESTORECONTACTS"></span
4144                     ></md-tooltip>
4145                   </md-button>
4146                 </div>
4147               </md-toolbar>
4148               <md-table-container class="font-size-12">
4149                 <table
4150                   md-table
4151                   md-row-select
4152                   multiple
4153                   ng-model="vm_dc.selectedQueueCampaignHopperFinals"
4154                   md-progress="vm_dc.promise"
4155                 >
4156                   <thead
4157                     md-head
4158                     md-order="vm_dc.query.sort"
4159                     md-on-reorder="vm_dc.getQueueCampaignHopperFinals"
4160                   >
4161                     <tr md-row>
4162                       <th md-column md-order-by="uniqueid">
4163                         {{ 'MOTIONDIALER.UNIQUEID' | translate }}
4164                       </th>
4165                       <th md-column md-order-by="ContactId">
4166                         {{ 'MOTIONDIALER.CONTACTID' | translate }}
4167                       </th>
4168                       <th md-column md-order-by="calleridnum">
4169                         {{ 'MOTIONDIALER.PHONE' | translate }}
4170                       </th>
4171                       <th md-column md-order-by="calleridname">
4172                         {{ 'MOTIONDIALER.NAME' | translate }}
4173                       </th>
4174                       <th md-column md-order-by="statedesc">
4175                         {{ 'MOTIONDIALER.STATUS' | translate }}
4176                       </th>
4177                       <th md-column md-order-by="countcongestionretry">
4178                         {{ 'MOTIONDIALER.CONGESTION' | translate }}
4179                       </th>
4180                       <th md-column md-order-by="countbusyretry">
4181                         {{ 'MOTIONDIALER.BUSY' | translate }}
4182                       </th>
4183                       <th md-column md-order-by="countnoanswerretry">
4184                         {{ 'MOTIONDIALER.NOANSWER' | translate }}
4185                       </th>
4186                       <th md-column md-order-by="countnosuchnumberretry">
4187                         {{ 'MOTIONDIALER.NOSUCHNUMBER' | translate }}
4188                       </th>
4189                       <th md-column md-order-by="countdropretry">
4190                         {{ 'MOTIONDIALER.DROP' | translate }}
4191                       </th>
4192                       <th md-column md-order-by="countabandonedretry">
4193                         {{ 'MOTIONDIALER.ABANDONED' | translate }}
4194                       </th>
4195                       <th md-column md-order-by="countmachineretry">
4196                         {{ 'MOTIONDIALER.MACHINE' | translate }}
4197                       </th>
4198                       <th md-column md-order-by="countagentrejectretry">
4199                         {{ 'MOTIONDIALER.AGENTREJECT' | translate }}
4200                       </th>
4201                       <th md-column md-order-by="starttime">
4202                         {{ 'MOTIONDIALER.STARTTIME' | translate }}
4203                       </th>
4204                       <th md-column md-order-by="endtime">
4205                         {{ 'MOTIONDIALER.ENDTIME' | translate }}
4206                       </th>
4207                       <th md-column md-order-by="disposition">
4208                         {{ 'MOTIONDIALER.DISPOSITION' | translate }}
4209                       </th>
4210                       <th md-column width="10px"></th>
4211                     </tr>
4212                   </thead>
4213                   <tbody md-body>
4214                     <tr
4215                       md-row
4216                       md-select="hopperFinal"
4217                       md-select-id="id"
4218                       ng-repeat="hopperFinal in vm_dc.queueCampaignHopperFinals.rows"
4219                     >
4220                       <td md-cell>{{hopperFinal.uniqueid}}</td>
4221                       <td md-cell>{{hopperFinal.ContactId}}</td>
4222                       <td md-cell>{{hopperFinal.calleridnum}}</td>
4223                       <td md-cell>{{hopperFinal.calleridname}}</td>
4224                       <td md-cell>{{hopperFinal.statedesc}}</td>
4225                       <td md-cell>{{hopperFinal.countcongestionretry}}</td>
4226                       <td md-cell>{{hopperFinal.countbusyretry}}</td>
4227                       <td md-cell>{{hopperFinal.countnoanswerretry}}</td>
4228                       <td md-cell>{{hopperFinal.countnosuchnumberretry}}</td>
4229                       <td md-cell>{{hopperFinal.countdropretry}}</td>
4230                       <td md-cell>{{hopperFinal.countabandonedretry}}</td>
4231                       <td md-cell>{{hopperFinal.countmachineretry}}</td>
4232                       <td md-cell>{{hopperFinal.countagentrejectretry}}</td>
4233                       <td md-cell>{{ hopperFinal.starttime | formatdate }}</td>
4234                       <td md-cell>{{ hopperFinal.endtime | formatdate }}</td>
4235                       <td md-cell>{{hopperFinal.disposition}}</td>
4236                       <td
4237                         md-cell
4238                         class="actions"
4239                         ng-if="!vm_dc.crudPermissions.readOnly"
4240                       >
4241                         <md-menu>
4242                           <md-button
4243                             class="md-icon-button"
4244                             aria-label="More"
4245                             translate
4246                             translate-attr-aria-label="MOTIONDIALER.MORE"
4247                             ng-click="$mdOpenMenu($event)"
4248                           >
4249                             <md-icon
4250                               md-font-icon="icon-dots-vertical"
4251                             ></md-icon>
4252                           </md-button>
4253
4254                           <md-menu-content width="3">
4255                             <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">
4256                               <md-button
4257                                 ng-click="vm_dc.moveConfirm(hopperFinal, $event)"
4258                                 translate="MOTIONDIALER.MOVE_HOPPERFINAL"
4259                               >
4260                                 Move HopperFinal
4261                               </md-button>
4262                             </md-menu-item>
4263                           </md-menu-content>
4264                         </md-menu>
4265                       </td>
4266                     </tr>
4267                     <tr
4268                       md-row
4269                       ng-if="!vm_dc.queueCampaignHopperFinals.rows.length"
4270                     >
4271                       <td md-cell colspan="28">
4272                         <div layout="row" layout-align="center center">
4273                           <span
4274                             class="text-boxed-light"
4275                             translate="MOTIONDIALER.NO_HOPPERFINAL_AVAILABLE"
4276                             >No hopperfinal available</span
4277                           >
4278                         </div>
4279                       </td>
4280                     </tr>
4281                   </tbody>
4282                 </table>
4283               </md-table-container>
4284               <md-table-pagination
4285                 md-label="{page: '{{'MOTIONDIALER.PAGE' | translate}}:', rowsPerPage: '{{'MOTIONDIALER.ROWSPERPAGE' | translate}}:', of: '{{'MOTIONDIALER.OF' | translate}}'}"
4286                 md-limit="vm_dc.query.limit"
4287                 md-limit-options="[10, 15, 20, 50, 100, 250]"
4288                 md-page="vm_dc.query.page"
4289                 md-total="{{vm_dc.queueCampaignHopperFinals.count}}"
4290                 md-on-paginate="vm_dc.getQueueCampaignHopperFinals"
4291                 md-page-select
4292               ></md-table-pagination>
4293             </div>
4294           </div>
4295         </md-tab-body>
4296       </md-tab>
4297       <md-tab>
4298         <md-tab-label>
4299           <span translate="MOTIONDIALER.BLACKLIST">BLACKLIST</span>
4300         </md-tab-label>
4301         <md-tab-body>
4302           <div
4303             class="queueCampaign-detail-form-container hopperblacks md-background-bg md-whiteframe-1dp"
4304           >
4305             <div
4306               ng-controller="QueueCampaignHopperBlacksController as vm_dc"
4307               ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)"
4308             >
4309               <md-toolbar
4310                 class="md-table-toolbar md-default"
4311                 ng-hide="vm_dc.selectedQueueCampaignHopperBlacks.length"
4312               >
4313                 <div class="md-toolbar-tools">
4314                   <span class="md-subhead" translate="MOTIONDIALER.HOPPERBLACKS"
4315                     >HopperBlacks</span
4316                   >
4317                   <ms-search-bar
4318                     on-search="vm_dc.query.filter = query"
4319                     on-collapse="vm_dc.query.filter = undefined"
4320                     debounce="300"
4321                     direction="down"
4322                   ></ms-search-bar>
4323                   <div flex></div>
4324                 </div>
4325               </md-toolbar>
4326               <md-toolbar
4327                 class="md-table-toolbar md-accent"
4328                 ng-show="vm_dc.selectedQueueCampaignHopperBlacks.length"
4329               >
4330                 <div class="md-toolbar-tools">
4331                   <span class="md-subhead"
4332                     >{{vm_dc.selectedQueueCampaignHopperBlacks.length}}
4333                     {{vm_dc.selectedQueueCampaignHopperBlacks.length > 1 ?
4334                     'items' : 'item'}} selected</span
4335                   >
4336                   <div flex></div>
4337                   <button
4338                     class="md-icon-button"
4339                     ng-csv="vm_dc.exportSelectedQueueCampaignHopperBlacks"
4340                     csv-label="true"
4341                     filename="queueCampaigns.csv"
4342                   >
4343                     <md-icon md-font-icon="icon-file-excel"></md-icon>
4344                   </button>
4345                 </div>
4346               </md-toolbar>
4347               <md-table-container class="font-size-12">
4348                 <table
4349                   md-table
4350                   md-row-select
4351                   multiple
4352                   ng-model="vm_dc.selectedQueueCampaignHopperBlacks"
4353                   md-progress="vm_dc.promise"
4354                 >
4355                   <thead
4356                     md-head
4357                     md-order="vm_dc.query.sort"
4358                     md-on-reorder="vm_dc.getQueueCampaignHopperBlacks"
4359                   >
4360                     <tr md-row>
4361                       <th md-column md-order-by="ContactId">
4362                         {{ 'MOTIONDIALER.CONTACTID' | translate }}
4363                       </th>
4364                       <th md-column md-order-by="phone">
4365                         {{ 'MOTIONDIALER.PHONE' | translate }}
4366                       </th>
4367                       <th md-column width="10px"></th>
4368                     </tr>
4369                   </thead>
4370                   <tbody md-body>
4371                     <tr
4372                       md-row
4373                       md-select="hopperBlack"
4374                       md-select-id="id"
4375                       ng-repeat="hopperBlack in vm_dc.queueCampaignHopperBlacks.rows"
4376                     >
4377                       <td md-cell>{{hopperBlack.ContactId}}</td>
4378                       <td md-cell>{{hopperBlack.phone}}</td>
4379                       <td md-cell class="actions"></td>
4380                     </tr>
4381                     <tr
4382                       md-row
4383                       ng-if="!vm_dc.queueCampaignHopperBlacks.rows.length"
4384                     >
4385                       <td md-cell colspan="4">
4386                         <div layout="row" layout-align="center center">
4387                           <span
4388                             class="text-boxed-light"
4389                             translate="MOTIONDIALER.NO_HOPPERBLACK_AVAILABLE"
4390                             >No hopperblack available</span
4391                           >
4392                         </div>
4393                       </td>
4394                     </tr>
4395                   </tbody>
4396                 </table>
4397               </md-table-container>
4398               <md-table-pagination
4399                 md-label="{page: '{{'MOTIONDIALER.PAGE' | translate}}:', rowsPerPage: '{{'MOTIONDIALER.ROWSPERPAGE' | translate}}:', of: '{{'MOTIONDIALER.OF' | translate}}'}"
4400                 md-limit="vm_dc.query.limit"
4401                 md-limit-options="[10, 15, 20, 50, 100, 250]"
4402                 md-page="vm_dc.query.page"
4403                 md-total="{{vm_dc.queueCampaignHopperBlacks.count}}"
4404                 md-on-paginate="vm_dc.getQueueCampaignHopperBlacks"
4405                 md-page-select
4406               ></md-table-pagination>
4407             </div>
4408           </div>
4409         </md-tab-body>
4410       </md-tab>
4411     </md-tabs>
4412   </div>
4413   <!-- / CONTENT -->
4414 </div>