791690ead3011c91a7234265a2c0bf203886734a
[motion-next.git] /
1 <div
2   id="motiondialer-ivrCampaign"
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-ivrCampaigns-button md-icon-button"
11         aria-label="Go to ivrCampaigns"
12         ng-click="vm.gotoIvrCampaigns()"
13         translate
14         translate-attr-aria-label="MOTIONDIALER.GO_TO_IVRCAMPAIGNS"
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="ivrCampaign-image" hide-xs>
21           <img ng-src="assets/images/business/ivrCampaigns.jpg" />
22         </div>
23
24         <div layout="column" layout-align="start start">
25           <div class="h2">
26             #{{vm.ivrCampaign.id}}
27             <span ng-if="vm.ivrCampaign.name">{{vm.ivrCampaign.name}}</span>
28           </div>
29           <div class="subtitle secondary-text">
30             <span translate="MOTIONDIALER.CREATED_AT"></span>
31             <span>{{vm.ivrCampaign.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.ivrCampaign, $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_IVRCAMPAIGN"></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.ivrCampaign, $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_IVRCAMPAIGN"></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.ivrCampaign, $event)"
66         class="md-fab md-warn md-icon-button"
67         aria-label="blacklistadd"
68       >
69         <md-tooltip
70           ><span translate="MOTIONDIALER.BLACKLISTADD_IVRCAMPAIGN"></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 ng-if="vm.crudPermissions.canEdit">
77       <md-button
78         ng-click="vm.resetlistdialog(vm.ivrCampaign, $event)"
79         class="md-fab md-warn md-icon-button"
80         aria-label="resetlist"
81       >
82         <md-tooltip
83           ><span translate="MOTIONDIALER.RESETLIST_IVRCAMPAIGN"></span
84         ></md-tooltip>
85         <md-icon md-font-icon="icon-restore"></md-icon>
86       </md-button>
87     </div>
88
89     <div ng-cloak>
90       <md-button
91         ng-click="vm.gotogoto(vm.ivrCampaign, $event)"
92         class="md-fab md-warn md-icon-button"
93         aria-label="goto"
94       >
95         <md-tooltip
96           ><span translate="MOTIONDIALER.GOTO_IVRCAMPAIGN"></span
97         ></md-tooltip>
98         <md-icon md-font-icon="icon-cast"></md-icon>
99       </md-button>
100     </div>
101     <div>
102       <md-button
103         type="submit"
104         ng-click="vm.saveIvrCampaign()"
105         ng-if="vm.crudPermissions.canEdit"
106         class="send-button md-accent md-raised"
107         ng-disabled="(generalForm.$invalid) || (campaignForm.$invalid) || (originateForm.$invalid) || (globalForm.$invalid) || (congestionForm.$invalid) || (busyForm.$invalid) || (noanswerForm.$invalid) || (nosuchnumberForm.$invalid) || (dropForm.$invalid) || (abandonedForm.$invalid) || (machineForm.$invalid) || (agentrejectForm.$invalid) || (advancedForm.$invalid) || (globalintervalForm.$invalid) || (timezoneForm.$invalid) || (amdForm.$invalid) || (hopperStatisticsForm.$invalid) || (hoppersForm.$invalid) || (hopperHistoriesForm.$invalid) || (hopperFinalsForm.$invalid) || (hopperBlacksForm.$invalid)"
108         translate="MOTIONDIALER.SAVE"
109         translate-attr-aria-label="MOTIONDIALER.SAVE"
110       >
111         SAVE
112       </md-button>
113     </div>
114   </div>
115   <!-- / HEADER -->
116
117   <!-- CONTENT -->
118   <div class="content">
119     <md-tabs
120       md-selected="vm.selectedTab"
121       md-stretch-tabs="always"
122       flex
123       layout-fill
124       md-dynamic-height
125     >
126       <md-tab>
127         <md-tab-label>
128           <span translate="MOTIONDIALER.SETTINGS">SETTINGS</span>
129         </md-tab-label>
130         <md-tab-body>
131           <div
132             class="ivrCampaign-detail-form-container general md-background-bg md-whiteframe-1dp"
133           >
134             <div class="pb-16" layout="row" layout-align="start center">
135               <div class="h2 secondary-text" translate="MOTIONDIALER.GENERAL">
136                 GENERAL
137               </div>
138             </div>
139             <form name="generalForm" novalidate>
140               <md-input-container class="md-block">
141                 <label translate="MOTIONDIALER.NAME">Name</label>
142                 <input
143                   type="text"
144                   name="name"
145                   ng-model="vm.ivrCampaign.name"
146                   ng-pattern="/^[A-Za-z0-9\.\_]+$/i"
147                   ng-required="true"
148                   autofocus
149                   disabled
150                 />
151
152                 <div class="hint">
153                   <span translate="MOTIONDIALER.HELP.NAME"></span>
154                 </div>
155                 <div
156                   ng-messages="generalForm['name'].$error"
157                   ng-show="generalForm['name'].$touched"
158                   role="alert"
159                 >
160                   <div ng-message="required">
161                     <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED"
162                       >Name field is required</span
163                     >
164                   </div>
165                   <div ng-message="pattern">
166                     <span
167                       translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN"
168                       translate-values="{ regex: '/^[A-Za-z0-9\.\_]+$/i' }"
169                       >Name must be valid pattern
170                     </span>
171                   </div>
172                 </div>
173               </md-input-container>
174               <md-input-container class="md-block">
175                 <md-switch
176                   ng-model="vm.ivrCampaign.active"
177                   aria-label="Active"
178                   ng-disabled="!vm.crudPermissions.canEdit"
179                   ><span translate="MOTIONDIALER.ACTIVE"
180                     >Active</span
181                   ></md-switch
182                 >
183               </md-input-container>
184               <md-input-container class="md-block">
185                 <label translate="MOTIONDIALER.TRUNK">Trunk</label>
186                 <md-select
187                   name="TrunkId"
188                   ng-model="vm.ivrCampaign.TrunkId"
189                   required
190                   ng-disabled="!vm.crudPermissions.canEdit"
191                 >
192                   <md-option
193                     ng-value="TrunkId.id"
194                     ng-repeat="TrunkId in vm.trunks"
195                     ng-disabled="TrunkId.canSelect === false"
196                     >{{ TrunkId.name }}</md-option
197                   >
198                 </md-select>
199                 <div
200                   ng-messages="generalForm['TrunkId'].$error"
201                   ng-show="generalForm['TrunkId'].$touched"
202                   role="alert"
203                 >
204                   <div ng-message="required">
205                     <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED"
206                       >Trunk field is required</span
207                     >
208                   </div>
209                 </div>
210               </md-input-container>
211               <md-input-container class="md-block">
212                 <label translate="MOTIONDIALER.BACKUPTRUNK">BackupTrunk</label>
213                 <md-select
214                   name="TrunkBackupId"
215                   ng-model="vm.ivrCampaign.TrunkBackupId"
216                   ng-disabled="!vm.crudPermissions.canEdit"
217                 >
218                   <md-option ng-value="null">None</md-option>
219                   <md-option
220                     ng-value="TrunkBackupId.id"
221                     ng-repeat="TrunkBackupId in vm.trunks"
222                     ng-disabled="TrunkBackupId.canSelect === false"
223                     >{{ TrunkBackupId.name }}</md-option
224                   >
225                 </md-select>
226                 <div
227                   ng-messages="generalForm['TrunkBackupId'].$error"
228                   ng-show="generalForm['TrunkBackupId'].$touched"
229                   role="alert"
230                 >
231                   <div ng-message="required">
232                     <span translate="MOTIONDIALER.ERRORS.BACKUPTRUNK_REQUIRED"
233                       >BackupTrunk field is required</span
234                     >
235                   </div>
236                 </div>
237               </md-input-container>
238               <md-input-container class="md-block">
239                 <label translate="MOTIONDIALER.INTERVAL">Interval</label>
240                 <md-select
241                   name="IntervalId"
242                   ng-model="vm.ivrCampaign.IntervalId"
243                   required
244                   ng-disabled="!vm.crudPermissions.canEdit"
245                 >
246                   <md-option
247                     ng-value="IntervalId.id"
248                     ng-repeat="IntervalId in vm.interval"
249                     ng-disabled="IntervalId.canSelect === false"
250                     >{{ IntervalId.name }}</md-option
251                   >
252                 </md-select>
253                 <div
254                   ng-messages="generalForm['IntervalId'].$error"
255                   ng-show="generalForm['IntervalId'].$touched"
256                   role="alert"
257                 >
258                   <div ng-message="required">
259                     <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED"
260                       >Interval field is required</span
261                     >
262                   </div>
263                 </div>
264               </md-input-container>
265               <md-input-container class="md-block">
266                 <label translate="MOTIONDIALER.CHECKDUPLICATE"
267                   >CheckDuplicate</label
268                 >
269                 <md-select
270                   name="dialCheckDuplicateType"
271                   ng-model="vm.ivrCampaign.dialCheckDuplicateType"
272                   required
273                   ng-disabled="!vm.crudPermissions.canEdit"
274                 >
275                   <md-option ng-value="'always'">
276                     {{ 'MOTIONDIALER.ALWAYS' | translate }}
277                   </md-option>
278
279                   <md-option ng-value="'never'">
280                     {{ 'MOTIONDIALER.NEVER' | translate }}
281                   </md-option>
282
283                   <md-option ng-value="'onlyIfOpen'">
284                     {{ 'MOTIONDIALER.ONLY_IF_OPEN' | translate }}
285                   </md-option>
286                 </md-select>
287                 <div
288                   ng-messages="generalForm['dialCheckDuplicateType'].$error"
289                   ng-show="generalForm['dialCheckDuplicateType'].$touched"
290                   role="alert"
291                 >
292                   <div ng-message="required">
293                     <span
294                       translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED"
295                       >CheckDuplicate field is required</span
296                     >
297                   </div>
298                 </div>
299               </md-input-container>
300               <md-input-container class="md-block">
301                 <label translate="MOTIONDIALER.CUTDIGIT">CutDigit</label>
302                 <input
303                   type="number"
304                   name="dialCutDigit"
305                   ng-model="vm.ivrCampaign.dialCutDigit"
306                   min="0"
307                   max="15"
308                   ng-required="true"
309                   ng-disabled="!vm.crudPermissions.canEdit"
310                 />
311
312                 <div
313                   ng-messages="generalForm['dialCutDigit'].$error"
314                   ng-show="generalForm['dialCutDigit'].$touched"
315                   role="alert"
316                 >
317                   <div ng-message="required">
318                     <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_REQUIRED"
319                       >CutDigit field is required</span
320                     >
321                   </div>
322                   <div ng-message="min">
323                     <span
324                       translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO"
325                       >CutDigit must be a valid greater or equal than</span
326                     >
327                     <span>0</span>
328                   </div>
329                   <div ng-message="max">
330                     <span
331                       translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_LESS_THAN_OR_EQUAL_TO"
332                       >CutDigit must be a valid greater or equal than</span
333                     >
334                     <span>15</span>
335                   </div>
336                 </div>
337               </md-input-container>
338               <md-input-container class="md-block">
339                 <label translate="MOTIONDIALER.DESCRIPTION">Description</label>
340                 <input
341                   type="text"
342                   name="description"
343                   ng-model="vm.ivrCampaign.description"
344                   ng-disabled="!vm.crudPermissions.canEdit"
345                 />
346
347                 <div
348                   ng-messages="generalForm['description'].$error"
349                   ng-show="generalForm['description'].$touched"
350                   role="alert"
351                 >
352                   <div ng-message="required">
353                     <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED"
354                       >Description field is required</span
355                     >
356                   </div>
357                 </div>
358               </md-input-container>
359             </form>
360           </div>
361         </md-tab-body>
362       </md-tab>
363       <md-tab>
364         <md-tab-label>
365           <span translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</span>
366         </md-tab-label>
367         <md-tab-body>
368           <div
369             class="ivrCampaign-detail-form-container campaign md-background-bg md-whiteframe-1dp"
370           >
371             <div class="pb-16" layout="row" layout-align="start center">
372               <div class="h2 secondary-text" translate="MOTIONDIALER.CAMPAIGN">
373                 CAMPAIGN
374               </div>
375             </div>
376             <form name="campaignForm" novalidate>
377               <md-input-container class="md-block">
378                 <label translate="MOTIONDIALER.CALLYSQUAREPROJECT"
379                   >CallySquareProject</label
380                 >
381                 <md-select
382                   name="SquareProjectId"
383                   ng-model="vm.ivrCampaign.SquareProjectId"
384                   autofocus
385                   required
386                   ng-disabled="!vm.crudPermissions.canEdit"
387                 >
388                   <md-option
389                     ng-value="SquareProjectId.id"
390                     ng-repeat="SquareProjectId in vm.projects"
391                     ng-disabled="SquareProjectId.canSelect === false"
392                     >{{ SquareProjectId.name }}</md-option
393                   >
394                 </md-select>
395                 <div
396                   ng-messages="campaignForm['SquareProjectId'].$error"
397                   ng-show="campaignForm['SquareProjectId'].$touched"
398                   role="alert"
399                 >
400                   <div ng-message="required">
401                     <span
402                       translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT_REQUIRED"
403                       >CallySquareProject field is required</span
404                     >
405                   </div>
406                 </div>
407               </md-input-container>
408               <md-input-container class="md-block">
409                 <label translate="MOTIONDIALER.CONCURRENTCALLS"
410                   >ConcurrentCalls</label
411                 >
412                 <input
413                   type="number"
414                   name="limitCalls"
415                   ng-model="vm.ivrCampaign.limitCalls"
416                   min="1"
417                   max="200"
418                   ng-required="true"
419                   ng-disabled="!vm.crudPermissions.canEdit"
420                 />
421
422                 <div class="hint">
423                   <span translate="MOTIONDIALER.HELP.CONCURRENTCALLS"></span>
424                 </div>
425                 <div
426                   ng-messages="campaignForm['limitCalls'].$error"
427                   ng-show="campaignForm['limitCalls'].$touched"
428                   role="alert"
429                 >
430                   <div ng-message="required">
431                     <span
432                       translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_REQUIRED"
433                       >ConcurrentCalls field is required</span
434                     >
435                   </div>
436                   <div ng-message="min">
437                     <span
438                       translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO"
439                       >ConcurrentCalls must be a valid greater or equal
440                       than</span
441                     >
442                     <span>1</span>
443                   </div>
444                   <div ng-message="max">
445                     <span
446                       translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO"
447                       >ConcurrentCalls must be a valid greater or equal
448                       than</span
449                     >
450                     <span>200</span>
451                   </div>
452                 </div>
453               </md-input-container>
454             </form>
455           </div>
456           <div
457             class="ivrCampaign-detail-form-container originate md-background-bg md-whiteframe-1dp"
458           >
459             <div class="pb-16" layout="row" layout-align="start center">
460               <div class="h2 secondary-text" translate="MOTIONDIALER.ORIGINATE">
461                 ORIGINATE
462               </div>
463             </div>
464             <form name="originateForm" novalidate>
465               <md-input-container class="md-block">
466                 <label translate="MOTIONDIALER.ORIGINATECALLERIDNAME"
467                   >OriginateCallerIdName</label
468                 >
469                 <input
470                   type="text"
471                   name="dialOriginateCallerIdName"
472                   ng-model="vm.ivrCampaign.dialOriginateCallerIdName"
473                   autofocus
474                   ng-disabled="!vm.crudPermissions.canEdit"
475                 />
476
477                 <div class="hint">
478                   <span
479                     translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNAME"
480                   ></span>
481                 </div>
482                 <div
483                   ng-messages="originateForm['dialOriginateCallerIdName'].$error"
484                   ng-show="originateForm['dialOriginateCallerIdName'].$touched"
485                   role="alert"
486                 >
487                   <div ng-message="required">
488                     <span
489                       translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNAME_REQUIRED"
490                       >OriginateCallerIdName field is required</span
491                     >
492                   </div>
493                 </div>
494               </md-input-container>
495               <md-input-container class="md-block">
496                 <label translate="MOTIONDIALER.ORIGINATECALLERIDNUMBER"
497                   >OriginateCallerIdNumber</label
498                 >
499                 <input
500                   type="text"
501                   name="dialOriginateCallerIdNumber"
502                   ng-model="vm.ivrCampaign.dialOriginateCallerIdNumber"
503                   ng-disabled="!vm.crudPermissions.canEdit"
504                 />
505
506                 <div class="hint">
507                   <span
508                     translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNUMBER"
509                   ></span>
510                 </div>
511                 <div
512                   ng-messages="originateForm['dialOriginateCallerIdNumber'].$error"
513                   ng-show="originateForm['dialOriginateCallerIdNumber'].$touched"
514                   role="alert"
515                 >
516                   <div ng-message="required">
517                     <span
518                       translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNUMBER_REQUIRED"
519                       >OriginateCallerIdNumber field is required</span
520                     >
521                   </div>
522                 </div>
523               </md-input-container>
524               <md-input-container class="md-block">
525                 <label translate="MOTIONDIALER.RANDOMLASTDIGITCALLERIDNUMBER"
526                   >RandomLastDigitCallerIdNumber</label
527                 >
528                 <input
529                   type="number"
530                   name="dialRandomLastDigitCallerIdNumber"
531                   ng-model="vm.ivrCampaign.dialRandomLastDigitCallerIdNumber"
532                   min="0"
533                   max="15"
534                   ng-required="true"
535                   ng-disabled="!vm.crudPermissions.canEdit"
536                 />
537
538                 <div class="hint">
539                   <span
540                     translate="MOTIONDIALER.HELP.RANDOMLASTDIGITCALLERIDNUMBER"
541                   ></span>
542                 </div>
543                 <div
544                   ng-messages="originateForm['dialRandomLastDigitCallerIdNumber'].$error"
545                   ng-show="originateForm['dialRandomLastDigitCallerIdNumber'].$touched"
546                   role="alert"
547                 >
548                   <div ng-message="required">
549                     <span
550                       translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_REQUIRED"
551                       >RandomLastDigitCallerIdNumber field is required</span
552                     >
553                   </div>
554                   <div ng-message="min">
555                     <span
556                       translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO"
557                       >RandomLastDigitCallerIdNumber must be a valid greater or
558                       equal than</span
559                     >
560                     <span>0</span>
561                   </div>
562                   <div ng-message="max">
563                     <span
564                       translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO"
565                       >RandomLastDigitCallerIdNumber must be a valid greater or
566                       equal than</span
567                     >
568                     <span>15</span>
569                   </div>
570                 </div>
571               </md-input-container>
572               <md-input-container class="md-block">
573                 <label translate="MOTIONDIALER.ORIGINATETIMEOUT"
574                   >OriginateTimeout</label
575                 >
576                 <input
577                   type="number"
578                   name="dialOriginateTimeout"
579                   ng-model="vm.ivrCampaign.dialOriginateTimeout"
580                   min="1"
581                   max="999"
582                   ng-required="true"
583                   ng-disabled="!vm.crudPermissions.canEdit"
584                 />
585
586                 <div class="hint">
587                   <span translate="MOTIONDIALER.HELP.ORIGINATETIMEOUT"></span>
588                 </div>
589                 <div
590                   ng-messages="originateForm['dialOriginateTimeout'].$error"
591                   ng-show="originateForm['dialOriginateTimeout'].$touched"
592                   role="alert"
593                 >
594                   <div ng-message="required">
595                     <span
596                       translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_REQUIRED"
597                       >OriginateTimeout field is required</span
598                     >
599                   </div>
600                   <div ng-message="min">
601                     <span
602                       translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO"
603                       >OriginateTimeout must be a valid greater or equal
604                       than</span
605                     >
606                     <span>1</span>
607                   </div>
608                   <div ng-message="max">
609                     <span
610                       translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO"
611                       >OriginateTimeout must be a valid greater or equal
612                       than</span
613                     >
614                     <span>999</span>
615                   </div>
616                 </div>
617               </md-input-container>
618               <md-input-container class="md-block">
619                 <label translate="MOTIONDIALER.PREFIX">Prefix</label>
620                 <input
621                   type="text"
622                   name="dialPrefix"
623                   ng-model="vm.ivrCampaign.dialPrefix"
624                   ng-pattern="/^\d+$/"
625                   ng-disabled="!vm.crudPermissions.canEdit"
626                 />
627
628                 <div class="hint">
629                   <span translate="MOTIONDIALER.HELP.PREFIX"></span>
630                 </div>
631                 <div
632                   ng-messages="originateForm['dialPrefix'].$error"
633                   ng-show="originateForm['dialPrefix'].$touched"
634                   role="alert"
635                 >
636                   <div ng-message="required">
637                     <span translate="MOTIONDIALER.ERRORS.PREFIX_REQUIRED"
638                       >Prefix field is required</span
639                     >
640                   </div>
641                   <div ng-message="pattern">
642                     <span
643                       translate="MOTIONDIALER.ERRORS.PREFIX_MUST_VALID_PATTERN"
644                       translate-values="{ regex: '/^\d+$/' }"
645                       >Prefix must be valid pattern
646                     </span>
647                   </div>
648                 </div>
649               </md-input-container>
650             </form>
651           </div>
652         </md-tab-body>
653       </md-tab>
654       <md-tab>
655         <md-tab-label>
656           <span translate="MOTIONDIALER.RETRYANDFREQUENCY"
657             >RETRYANDFREQUENCY</span
658           >
659         </md-tab-label>
660         <md-tab-body>
661           <div
662             class="ivrCampaign-detail-form-container global md-background-bg md-whiteframe-1dp"
663           >
664             <div class="pb-16" layout="row" layout-align="start center">
665               <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBAL">
666                 GLOBAL
667               </div>
668             </div>
669             <form name="globalForm" novalidate>
670               <md-input-container class="md-block">
671                 <label translate="MOTIONDIALER.GLOBALMAXRETRY"
672                   >GlobalMaxRetry</label
673                 >
674                 <input
675                   type="number"
676                   name="dialGlobalMaxRetry"
677                   ng-model="vm.ivrCampaign.dialGlobalMaxRetry"
678                   min="1"
679                   max="999"
680                   ng-required="true"
681                   autofocus
682                   ng-disabled="!vm.crudPermissions.canEdit"
683                 />
684
685                 <div class="hint">
686                   <span translate="MOTIONDIALER.HELP.GLOBALMAXRETRY"></span>
687                 </div>
688                 <div
689                   ng-messages="globalForm['dialGlobalMaxRetry'].$error"
690                   ng-show="globalForm['dialGlobalMaxRetry'].$touched"
691                   role="alert"
692                 >
693                   <div ng-message="required">
694                     <span
695                       translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_REQUIRED"
696                       >GlobalMaxRetry field is required</span
697                     >
698                   </div>
699                   <div ng-message="min">
700                     <span
701                       translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO"
702                       >GlobalMaxRetry must be a valid greater or equal
703                       than</span
704                     >
705                     <span>1</span>
706                   </div>
707                   <div ng-message="max">
708                     <span
709                       translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO"
710                       >GlobalMaxRetry must be a valid greater or equal
711                       than</span
712                     >
713                     <span>999</span>
714                   </div>
715                 </div>
716               </md-input-container>
717             </form>
718           </div>
719           <div
720             class="ivrCampaign-detail-form-container congestion md-background-bg md-whiteframe-1dp"
721           >
722             <div class="pb-16" layout="row" layout-align="start center">
723               <div
724                 class="h2 secondary-text"
725                 translate="MOTIONDIALER.CONGESTION"
726               >
727                 CONGESTION
728               </div>
729             </div>
730             <form name="congestionForm" novalidate>
731               <md-input-container class="md-block">
732                 <label translate="MOTIONDIALER.CONGESTIONMAXRETRY"
733                   >CongestionMaxRetry</label
734                 >
735                 <input
736                   type="number"
737                   name="dialCongestionMaxRetry"
738                   ng-model="vm.ivrCampaign.dialCongestionMaxRetry"
739                   min="1"
740                   max="999"
741                   ng-required="true"
742                   autofocus
743                   ng-disabled="!vm.crudPermissions.canEdit"
744                 />
745
746                 <div class="hint">
747                   <span translate="MOTIONDIALER.HELP.CONGESTIONMAXRETRY"></span>
748                 </div>
749                 <div
750                   ng-messages="congestionForm['dialCongestionMaxRetry'].$error"
751                   ng-show="congestionForm['dialCongestionMaxRetry'].$touched"
752                   role="alert"
753                 >
754                   <div ng-message="required">
755                     <span
756                       translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_REQUIRED"
757                       >CongestionMaxRetry field is required</span
758                     >
759                   </div>
760                   <div ng-message="min">
761                     <span
762                       translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO"
763                       >CongestionMaxRetry must be a valid greater or equal
764                       than</span
765                     >
766                     <span>1</span>
767                   </div>
768                   <div ng-message="max">
769                     <span
770                       translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO"
771                       >CongestionMaxRetry must be a valid greater or equal
772                       than</span
773                     >
774                     <span>999</span>
775                   </div>
776                 </div>
777               </md-input-container>
778               <md-input-container class="md-block">
779                 <label translate="MOTIONDIALER.CONGESTIONRETRYTIME"
780                   >CongestionRetryTime</label
781                 >
782                 <input
783                   type="number"
784                   name="dialCongestionRetryFrequency"
785                   ng-model="vm.ivrCampaign.dialCongestionRetryFrequency"
786                   min="1"
787                   max="99999"
788                   ng-required="true"
789                   ng-disabled="!vm.crudPermissions.canEdit"
790                 />
791
792                 <div class="hint">
793                   <span
794                     translate="MOTIONDIALER.HELP.CONGESTIONRETRYTIME"
795                   ></span>
796                 </div>
797                 <div
798                   ng-messages="congestionForm['dialCongestionRetryFrequency'].$error"
799                   ng-show="congestionForm['dialCongestionRetryFrequency'].$touched"
800                   role="alert"
801                 >
802                   <div ng-message="required">
803                     <span
804                       translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_REQUIRED"
805                       >CongestionRetryTime field is required</span
806                     >
807                   </div>
808                   <div ng-message="min">
809                     <span
810                       translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO"
811                       >CongestionRetryTime must be a valid greater or equal
812                       than</span
813                     >
814                     <span>1</span>
815                   </div>
816                   <div ng-message="max">
817                     <span
818                       translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO"
819                       >CongestionRetryTime must be a valid greater or equal
820                       than</span
821                     >
822                     <span>99999</span>
823                   </div>
824                 </div>
825               </md-input-container>
826             </form>
827           </div>
828           <div
829             class="ivrCampaign-detail-form-container busy md-background-bg md-whiteframe-1dp"
830           >
831             <div class="pb-16" layout="row" layout-align="start center">
832               <div class="h2 secondary-text" translate="MOTIONDIALER.BUSY">
833                 BUSY
834               </div>
835             </div>
836             <form name="busyForm" novalidate>
837               <md-input-container class="md-block">
838                 <label translate="MOTIONDIALER.BUSYMAXRETRY"
839                   >BusyMaxRetry</label
840                 >
841                 <input
842                   type="number"
843                   name="dialBusyMaxRetry"
844                   ng-model="vm.ivrCampaign.dialBusyMaxRetry"
845                   min="1"
846                   max="999"
847                   ng-required="true"
848                   autofocus
849                   ng-disabled="!vm.crudPermissions.canEdit"
850                 />
851
852                 <div class="hint">
853                   <span translate="MOTIONDIALER.HELP.BUSYMAXRETRY"></span>
854                 </div>
855                 <div
856                   ng-messages="busyForm['dialBusyMaxRetry'].$error"
857                   ng-show="busyForm['dialBusyMaxRetry'].$touched"
858                   role="alert"
859                 >
860                   <div ng-message="required">
861                     <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_REQUIRED"
862                       >BusyMaxRetry field is required</span
863                     >
864                   </div>
865                   <div ng-message="min">
866                     <span
867                       translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO"
868                       >BusyMaxRetry must be a valid greater or equal than</span
869                     >
870                     <span>1</span>
871                   </div>
872                   <div ng-message="max">
873                     <span
874                       translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO"
875                       >BusyMaxRetry must be a valid greater or equal than</span
876                     >
877                     <span>999</span>
878                   </div>
879                 </div>
880               </md-input-container>
881               <md-input-container class="md-block">
882                 <label translate="MOTIONDIALER.BUSYRETRYTIME"
883                   >BusyRetryTime</label
884                 >
885                 <input
886                   type="number"
887                   name="dialBusyRetryFrequency"
888                   ng-model="vm.ivrCampaign.dialBusyRetryFrequency"
889                   min="1"
890                   max="99999"
891                   ng-required="true"
892                   ng-disabled="!vm.crudPermissions.canEdit"
893                 />
894
895                 <div class="hint">
896                   <span translate="MOTIONDIALER.HELP.BUSYRETRYTIME"></span>
897                 </div>
898                 <div
899                   ng-messages="busyForm['dialBusyRetryFrequency'].$error"
900                   ng-show="busyForm['dialBusyRetryFrequency'].$touched"
901                   role="alert"
902                 >
903                   <div ng-message="required">
904                     <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_REQUIRED"
905                       >BusyRetryTime field is required</span
906                     >
907                   </div>
908                   <div ng-message="min">
909                     <span
910                       translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO"
911                       >BusyRetryTime must be a valid greater or equal than</span
912                     >
913                     <span>1</span>
914                   </div>
915                   <div ng-message="max">
916                     <span
917                       translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO"
918                       >BusyRetryTime must be a valid greater or equal than</span
919                     >
920                     <span>99999</span>
921                   </div>
922                 </div>
923               </md-input-container>
924             </form>
925           </div>
926           <div
927             class="ivrCampaign-detail-form-container noanswer md-background-bg md-whiteframe-1dp"
928           >
929             <div class="pb-16" layout="row" layout-align="start center">
930               <div class="h2 secondary-text" translate="MOTIONDIALER.NOANSWER">
931                 NOANSWER
932               </div>
933             </div>
934             <form name="noanswerForm" novalidate>
935               <md-input-container class="md-block">
936                 <label translate="MOTIONDIALER.NOANSWERMAXRETRY"
937                   >NoAnswerMaxRetry</label
938                 >
939                 <input
940                   type="number"
941                   name="dialNoAnswerMaxRetry"
942                   ng-model="vm.ivrCampaign.dialNoAnswerMaxRetry"
943                   min="1"
944                   max="999"
945                   ng-required="true"
946                   autofocus
947                   ng-disabled="!vm.crudPermissions.canEdit"
948                 />
949
950                 <div class="hint">
951                   <span translate="MOTIONDIALER.HELP.NOANSWERMAXRETRY"></span>
952                 </div>
953                 <div
954                   ng-messages="noanswerForm['dialNoAnswerMaxRetry'].$error"
955                   ng-show="noanswerForm['dialNoAnswerMaxRetry'].$touched"
956                   role="alert"
957                 >
958                   <div ng-message="required">
959                     <span
960                       translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_REQUIRED"
961                       >NoAnswerMaxRetry field is required</span
962                     >
963                   </div>
964                   <div ng-message="min">
965                     <span
966                       translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO"
967                       >NoAnswerMaxRetry must be a valid greater or equal
968                       than</span
969                     >
970                     <span>1</span>
971                   </div>
972                   <div ng-message="max">
973                     <span
974                       translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO"
975                       >NoAnswerMaxRetry must be a valid greater or equal
976                       than</span
977                     >
978                     <span>999</span>
979                   </div>
980                 </div>
981               </md-input-container>
982               <md-input-container class="md-block">
983                 <label translate="MOTIONDIALER.NOANSWERRETRYTIME"
984                   >NoAnswerRetryTime</label
985                 >
986                 <input
987                   type="number"
988                   name="dialNoAnswerRetryFrequency"
989                   ng-model="vm.ivrCampaign.dialNoAnswerRetryFrequency"
990                   min="1"
991                   max="99999"
992                   ng-required="true"
993                   ng-disabled="!vm.crudPermissions.canEdit"
994                 />
995
996                 <div class="hint">
997                   <span translate="MOTIONDIALER.HELP.NOANSWERRETRYTIME"></span>
998                 </div>
999                 <div
1000                   ng-messages="noanswerForm['dialNoAnswerRetryFrequency'].$error"
1001                   ng-show="noanswerForm['dialNoAnswerRetryFrequency'].$touched"
1002                   role="alert"
1003                 >
1004                   <div ng-message="required">
1005                     <span
1006                       translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_REQUIRED"
1007                       >NoAnswerRetryTime field is required</span
1008                     >
1009                   </div>
1010                   <div ng-message="min">
1011                     <span
1012                       translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO"
1013                       >NoAnswerRetryTime must be a valid greater or equal
1014                       than</span
1015                     >
1016                     <span>1</span>
1017                   </div>
1018                   <div ng-message="max">
1019                     <span
1020                       translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO"
1021                       >NoAnswerRetryTime must be a valid greater or equal
1022                       than</span
1023                     >
1024                     <span>99999</span>
1025                   </div>
1026                 </div>
1027               </md-input-container>
1028             </form>
1029           </div>
1030           <div
1031             class="ivrCampaign-detail-form-container nosuchnumber md-background-bg md-whiteframe-1dp"
1032           >
1033             <div class="pb-16" layout="row" layout-align="start center">
1034               <div
1035                 class="h2 secondary-text"
1036                 translate="MOTIONDIALER.NOSUCHNUMBER"
1037               >
1038                 NOSUCHNUMBER
1039               </div>
1040             </div>
1041             <form name="nosuchnumberForm" novalidate>
1042               <md-input-container class="md-block">
1043                 <label translate="MOTIONDIALER.NOSUCHNUMBERMAXRETRY"
1044                   >NoSuchNumberMaxRetry</label
1045                 >
1046                 <input
1047                   type="number"
1048                   name="dialNoSuchNumberMaxRetry"
1049                   ng-model="vm.ivrCampaign.dialNoSuchNumberMaxRetry"
1050                   min="1"
1051                   max="999"
1052                   ng-required="true"
1053                   autofocus
1054                   ng-disabled="!vm.crudPermissions.canEdit"
1055                 />
1056
1057                 <div class="hint">
1058                   <span
1059                     translate="MOTIONDIALER.HELP.NOSUCHNUMBERMAXRETRY"
1060                   ></span>
1061                 </div>
1062                 <div
1063                   ng-messages="nosuchnumberForm['dialNoSuchNumberMaxRetry'].$error"
1064                   ng-show="nosuchnumberForm['dialNoSuchNumberMaxRetry'].$touched"
1065                   role="alert"
1066                 >
1067                   <div ng-message="required">
1068                     <span
1069                       translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_REQUIRED"
1070                       >NoSuchNumberMaxRetry field is required</span
1071                     >
1072                   </div>
1073                   <div ng-message="min">
1074                     <span
1075                       translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO"
1076                       >NoSuchNumberMaxRetry must be a valid greater or equal
1077                       than</span
1078                     >
1079                     <span>1</span>
1080                   </div>
1081                   <div ng-message="max">
1082                     <span
1083                       translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO"
1084                       >NoSuchNumberMaxRetry must be a valid greater or equal
1085                       than</span
1086                     >
1087                     <span>999</span>
1088                   </div>
1089                 </div>
1090               </md-input-container>
1091               <md-input-container class="md-block">
1092                 <label translate="MOTIONDIALER.NOSUCHNUMBERRETRYTIME"
1093                   >NoSuchNumberRetryTime</label
1094                 >
1095                 <input
1096                   type="number"
1097                   name="dialNoSuchNumberRetryFrequency"
1098                   ng-model="vm.ivrCampaign.dialNoSuchNumberRetryFrequency"
1099                   min="1"
1100                   max="99999"
1101                   ng-required="true"
1102                   ng-disabled="!vm.crudPermissions.canEdit"
1103                 />
1104
1105                 <div class="hint">
1106                   <span
1107                     translate="MOTIONDIALER.HELP.NOSUCHNUMBERRETRYTIME"
1108                   ></span>
1109                 </div>
1110                 <div
1111                   ng-messages="nosuchnumberForm['dialNoSuchNumberRetryFrequency'].$error"
1112                   ng-show="nosuchnumberForm['dialNoSuchNumberRetryFrequency'].$touched"
1113                   role="alert"
1114                 >
1115                   <div ng-message="required">
1116                     <span
1117                       translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_REQUIRED"
1118                       >NoSuchNumberRetryTime field is required</span
1119                     >
1120                   </div>
1121                   <div ng-message="min">
1122                     <span
1123                       translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO"
1124                       >NoSuchNumberRetryTime must be a valid greater or equal
1125                       than</span
1126                     >
1127                     <span>1</span>
1128                   </div>
1129                   <div ng-message="max">
1130                     <span
1131                       translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO"
1132                       >NoSuchNumberRetryTime must be a valid greater or equal
1133                       than</span
1134                     >
1135                     <span>99999</span>
1136                   </div>
1137                 </div>
1138               </md-input-container>
1139             </form>
1140           </div>
1141           <div
1142             class="ivrCampaign-detail-form-container drop md-background-bg md-whiteframe-1dp"
1143           >
1144             <div class="pb-16" layout="row" layout-align="start center">
1145               <div class="h2 secondary-text" translate="MOTIONDIALER.DROP">
1146                 DROP
1147               </div>
1148             </div>
1149             <form name="dropForm" novalidate>
1150               <md-input-container class="md-block">
1151                 <label translate="MOTIONDIALER.DROPMAXRETRY"
1152                   >DropMaxRetry</label
1153                 >
1154                 <input
1155                   type="number"
1156                   name="dialDropMaxRetry"
1157                   ng-model="vm.ivrCampaign.dialDropMaxRetry"
1158                   min="1"
1159                   max="999"
1160                   ng-required="true"
1161                   autofocus
1162                   ng-disabled="!vm.crudPermissions.canEdit"
1163                 />
1164
1165                 <div class="hint">
1166                   <span translate="MOTIONDIALER.HELP.DROPMAXRETRY"></span>
1167                 </div>
1168                 <div
1169                   ng-messages="dropForm['dialDropMaxRetry'].$error"
1170                   ng-show="dropForm['dialDropMaxRetry'].$touched"
1171                   role="alert"
1172                 >
1173                   <div ng-message="required">
1174                     <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_REQUIRED"
1175                       >DropMaxRetry field is required</span
1176                     >
1177                   </div>
1178                   <div ng-message="min">
1179                     <span
1180                       translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO"
1181                       >DropMaxRetry must be a valid greater or equal than</span
1182                     >
1183                     <span>1</span>
1184                   </div>
1185                   <div ng-message="max">
1186                     <span
1187                       translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO"
1188                       >DropMaxRetry must be a valid greater or equal than</span
1189                     >
1190                     <span>999</span>
1191                   </div>
1192                 </div>
1193               </md-input-container>
1194               <md-input-container class="md-block">
1195                 <label translate="MOTIONDIALER.DROPRETRYTIME"
1196                   >DropRetryTime</label
1197                 >
1198                 <input
1199                   type="number"
1200                   name="dialDropRetryFrequency"
1201                   ng-model="vm.ivrCampaign.dialDropRetryFrequency"
1202                   min="1"
1203                   max="99999"
1204                   ng-required="true"
1205                   ng-disabled="!vm.crudPermissions.canEdit"
1206                 />
1207
1208                 <div class="hint">
1209                   <span translate="MOTIONDIALER.HELP.DROPRETRYTIME"></span>
1210                 </div>
1211                 <div
1212                   ng-messages="dropForm['dialDropRetryFrequency'].$error"
1213                   ng-show="dropForm['dialDropRetryFrequency'].$touched"
1214                   role="alert"
1215                 >
1216                   <div ng-message="required">
1217                     <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_REQUIRED"
1218                       >DropRetryTime field is required</span
1219                     >
1220                   </div>
1221                   <div ng-message="min">
1222                     <span
1223                       translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO"
1224                       >DropRetryTime must be a valid greater or equal than</span
1225                     >
1226                     <span>1</span>
1227                   </div>
1228                   <div ng-message="max">
1229                     <span
1230                       translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO"
1231                       >DropRetryTime must be a valid greater or equal than</span
1232                     >
1233                     <span>99999</span>
1234                   </div>
1235                 </div>
1236               </md-input-container>
1237             </form>
1238           </div>
1239           <div
1240             class="ivrCampaign-detail-form-container abandoned md-background-bg md-whiteframe-1dp"
1241           >
1242             <div class="pb-16" layout="row" layout-align="start center">
1243               <div class="h2 secondary-text" translate="MOTIONDIALER.ABANDONED">
1244                 ABANDONED
1245               </div>
1246             </div>
1247             <form name="abandonedForm" novalidate>
1248               <md-input-container class="md-block">
1249                 <label translate="MOTIONDIALER.ABANDONEDMAXRETRY"
1250                   >AbandonedMaxRetry</label
1251                 >
1252                 <input
1253                   type="number"
1254                   name="dialAbandonedMaxRetry"
1255                   ng-model="vm.ivrCampaign.dialAbandonedMaxRetry"
1256                   min="1"
1257                   max="999"
1258                   ng-required="true"
1259                   autofocus
1260                   ng-disabled="!vm.crudPermissions.canEdit"
1261                 />
1262
1263                 <div class="hint">
1264                   <span translate="MOTIONDIALER.HELP.ABANDONEDMAXRETRY"></span>
1265                 </div>
1266                 <div
1267                   ng-messages="abandonedForm['dialAbandonedMaxRetry'].$error"
1268                   ng-show="abandonedForm['dialAbandonedMaxRetry'].$touched"
1269                   role="alert"
1270                 >
1271                   <div ng-message="required">
1272                     <span
1273                       translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_REQUIRED"
1274                       >AbandonedMaxRetry field is required</span
1275                     >
1276                   </div>
1277                   <div ng-message="min">
1278                     <span
1279                       translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO"
1280                       >AbandonedMaxRetry must be a valid greater or equal
1281                       than</span
1282                     >
1283                     <span>1</span>
1284                   </div>
1285                   <div ng-message="max">
1286                     <span
1287                       translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO"
1288                       >AbandonedMaxRetry must be a valid greater or equal
1289                       than</span
1290                     >
1291                     <span>999</span>
1292                   </div>
1293                 </div>
1294               </md-input-container>
1295               <md-input-container class="md-block">
1296                 <label translate="MOTIONDIALER.ABANDONEDRETRYTIME"
1297                   >AbandonedRetryTime</label
1298                 >
1299                 <input
1300                   type="number"
1301                   name="dialAbandonedRetryFrequency"
1302                   ng-model="vm.ivrCampaign.dialAbandonedRetryFrequency"
1303                   min="1"
1304                   max="99999"
1305                   ng-required="true"
1306                   ng-disabled="!vm.crudPermissions.canEdit"
1307                 />
1308
1309                 <div class="hint">
1310                   <span translate="MOTIONDIALER.HELP.ABANDONEDRETRYTIME"></span>
1311                 </div>
1312                 <div
1313                   ng-messages="abandonedForm['dialAbandonedRetryFrequency'].$error"
1314                   ng-show="abandonedForm['dialAbandonedRetryFrequency'].$touched"
1315                   role="alert"
1316                 >
1317                   <div ng-message="required">
1318                     <span
1319                       translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_REQUIRED"
1320                       >AbandonedRetryTime field is required</span
1321                     >
1322                   </div>
1323                   <div ng-message="min">
1324                     <span
1325                       translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO"
1326                       >AbandonedRetryTime must be a valid greater or equal
1327                       than</span
1328                     >
1329                     <span>1</span>
1330                   </div>
1331                   <div ng-message="max">
1332                     <span
1333                       translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO"
1334                       >AbandonedRetryTime must be a valid greater or equal
1335                       than</span
1336                     >
1337                     <span>99999</span>
1338                   </div>
1339                 </div>
1340               </md-input-container>
1341             </form>
1342           </div>
1343           <div
1344             class="ivrCampaign-detail-form-container machine md-background-bg md-whiteframe-1dp"
1345           >
1346             <div class="pb-16" layout="row" layout-align="start center">
1347               <div class="h2 secondary-text" translate="MOTIONDIALER.MACHINE">
1348                 MACHINE
1349               </div>
1350             </div>
1351             <form name="machineForm" novalidate>
1352               <md-input-container class="md-block">
1353                 <label translate="MOTIONDIALER.MACHINEMAXRETRY"
1354                   >MachineMaxRetry</label
1355                 >
1356                 <input
1357                   type="number"
1358                   name="dialMachineMaxRetry"
1359                   ng-model="vm.ivrCampaign.dialMachineMaxRetry"
1360                   min="1"
1361                   max="999"
1362                   ng-required="true"
1363                   autofocus
1364                   ng-disabled="!vm.crudPermissions.canEdit"
1365                 />
1366
1367                 <div class="hint">
1368                   <span translate="MOTIONDIALER.HELP.MACHINEMAXRETRY"></span>
1369                 </div>
1370                 <div
1371                   ng-messages="machineForm['dialMachineMaxRetry'].$error"
1372                   ng-show="machineForm['dialMachineMaxRetry'].$touched"
1373                   role="alert"
1374                 >
1375                   <div ng-message="required">
1376                     <span
1377                       translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_REQUIRED"
1378                       >MachineMaxRetry field is required</span
1379                     >
1380                   </div>
1381                   <div ng-message="min">
1382                     <span
1383                       translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO"
1384                       >MachineMaxRetry must be a valid greater or equal
1385                       than</span
1386                     >
1387                     <span>1</span>
1388                   </div>
1389                   <div ng-message="max">
1390                     <span
1391                       translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO"
1392                       >MachineMaxRetry must be a valid greater or equal
1393                       than</span
1394                     >
1395                     <span>999</span>
1396                   </div>
1397                 </div>
1398               </md-input-container>
1399               <md-input-container class="md-block">
1400                 <label translate="MOTIONDIALER.MACHINERETRYTIME"
1401                   >MachineRetryTime</label
1402                 >
1403                 <input
1404                   type="number"
1405                   name="dialMachineRetryFrequency"
1406                   ng-model="vm.ivrCampaign.dialMachineRetryFrequency"
1407                   min="1"
1408                   max="99999"
1409                   ng-required="true"
1410                   ng-disabled="!vm.crudPermissions.canEdit"
1411                 />
1412
1413                 <div class="hint">
1414                   <span translate="MOTIONDIALER.HELP.MACHINERETRYTIME"></span>
1415                 </div>
1416                 <div
1417                   ng-messages="machineForm['dialMachineRetryFrequency'].$error"
1418                   ng-show="machineForm['dialMachineRetryFrequency'].$touched"
1419                   role="alert"
1420                 >
1421                   <div ng-message="required">
1422                     <span
1423                       translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_REQUIRED"
1424                       >MachineRetryTime field is required</span
1425                     >
1426                   </div>
1427                   <div ng-message="min">
1428                     <span
1429                       translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO"
1430                       >MachineRetryTime must be a valid greater or equal
1431                       than</span
1432                     >
1433                     <span>1</span>
1434                   </div>
1435                   <div ng-message="max">
1436                     <span
1437                       translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO"
1438                       >MachineRetryTime must be a valid greater or equal
1439                       than</span
1440                     >
1441                     <span>99999</span>
1442                   </div>
1443                 </div>
1444               </md-input-container>
1445             </form>
1446           </div>
1447           <div
1448             class="ivrCampaign-detail-form-container agentreject md-background-bg md-whiteframe-1dp"
1449           >
1450             <div class="pb-16" layout="row" layout-align="start center">
1451               <div
1452                 class="h2 secondary-text"
1453                 translate="MOTIONDIALER.AGENTREJECT"
1454               >
1455                 AGENTREJECT
1456               </div>
1457             </div>
1458             <form name="agentrejectForm" novalidate>
1459               <md-input-container class="md-block">
1460                 <label translate="MOTIONDIALER.AGENTREJECTMAXRETRY"
1461                   >AgentRejectMaxRetry</label
1462                 >
1463                 <input
1464                   type="number"
1465                   name="dialAgentRejectMaxRetry"
1466                   ng-model="vm.ivrCampaign.dialAgentRejectMaxRetry"
1467                   min="1"
1468                   max="999"
1469                   ng-required="true"
1470                   autofocus
1471                   ng-disabled="!vm.crudPermissions.canEdit"
1472                 />
1473
1474                 <div class="hint">
1475                   <span
1476                     translate="MOTIONDIALER.HELP.AGENTREJECTMAXRETRY"
1477                   ></span>
1478                 </div>
1479                 <div
1480                   ng-messages="agentrejectForm['dialAgentRejectMaxRetry'].$error"
1481                   ng-show="agentrejectForm['dialAgentRejectMaxRetry'].$touched"
1482                   role="alert"
1483                 >
1484                   <div ng-message="required">
1485                     <span
1486                       translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_REQUIRED"
1487                       >AgentRejectMaxRetry field is required</span
1488                     >
1489                   </div>
1490                   <div ng-message="min">
1491                     <span
1492                       translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO"
1493                       >AgentRejectMaxRetry must be a valid greater or equal
1494                       than</span
1495                     >
1496                     <span>1</span>
1497                   </div>
1498                   <div ng-message="max">
1499                     <span
1500                       translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO"
1501                       >AgentRejectMaxRetry must be a valid greater or equal
1502                       than</span
1503                     >
1504                     <span>999</span>
1505                   </div>
1506                 </div>
1507               </md-input-container>
1508               <md-input-container class="md-block">
1509                 <label translate="MOTIONDIALER.AGENTREJECTRETRYTIME"
1510                   >AgentRejectRetryTime</label
1511                 >
1512                 <input
1513                   type="number"
1514                   name="dialAgentRejectRetryFrequency"
1515                   ng-model="vm.ivrCampaign.dialAgentRejectRetryFrequency"
1516                   min="1"
1517                   max="99999"
1518                   ng-required="true"
1519                   ng-disabled="!vm.crudPermissions.canEdit"
1520                 />
1521
1522                 <div class="hint">
1523                   <span
1524                     translate="MOTIONDIALER.HELP.AGENTREJECTRETRYTIME"
1525                   ></span>
1526                 </div>
1527                 <div
1528                   ng-messages="agentrejectForm['dialAgentRejectRetryFrequency'].$error"
1529                   ng-show="agentrejectForm['dialAgentRejectRetryFrequency'].$touched"
1530                   role="alert"
1531                 >
1532                   <div ng-message="required">
1533                     <span
1534                       translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_REQUIRED"
1535                       >AgentRejectRetryTime field is required</span
1536                     >
1537                   </div>
1538                   <div ng-message="min">
1539                     <span
1540                       translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO"
1541                       >AgentRejectRetryTime must be a valid greater or equal
1542                       than</span
1543                     >
1544                     <span>1</span>
1545                   </div>
1546                   <div ng-message="max">
1547                     <span
1548                       translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO"
1549                       >AgentRejectRetryTime must be a valid greater or equal
1550                       than</span
1551                     >
1552                     <span>99999</span>
1553                   </div>
1554                 </div>
1555               </md-input-container>
1556             </form>
1557           </div>
1558         </md-tab-body>
1559       </md-tab>
1560       <md-tab>
1561         <md-tab-label>
1562           <span translate="MOTIONDIALER.ADVANCED">ADVANCED</span>
1563         </md-tab-label>
1564         <md-tab-body>
1565           <div
1566             class="ivrCampaign-detail-form-container advanced md-background-bg md-whiteframe-1dp"
1567           >
1568             <div class="pb-16" layout="row" layout-align="start center">
1569               <div class="h2 secondary-text" translate="MOTIONDIALER.ADVANCED">
1570                 ADVANCED
1571               </div>
1572             </div>
1573             <form name="advancedForm" novalidate>
1574               <md-input-container class="md-block">
1575                 <label translate="MOTIONDIALER.DIALORDERBYSCHEDULEDAT"
1576                   >DialOrderByScheduledAt</label
1577                 >
1578                 <md-select
1579                   name="dialOrderByScheduledAt"
1580                   ng-model="vm.ivrCampaign.dialOrderByScheduledAt"
1581                   autofocus
1582                   ng-disabled="!vm.crudPermissions.canEdit"
1583                 >
1584                   <md-option ng-value="'DESC'">
1585                     {{ 'MOTIONDIALER.DESC' | translate }}
1586                   </md-option>
1587
1588                   <md-option ng-value="'ASC'">
1589                     {{ 'MOTIONDIALER.ASC' | translate }}
1590                   </md-option>
1591                 </md-select>
1592                 <div class="hint">
1593                   <span
1594                     translate="MOTIONDIALER.HELP.DIALORDERBYSCHEDULEDAT"
1595                   ></span>
1596                 </div>
1597                 <div
1598                   ng-messages="advancedForm['dialOrderByScheduledAt'].$error"
1599                   ng-show="advancedForm['dialOrderByScheduledAt'].$touched"
1600                   role="alert"
1601                 >
1602                   <div ng-message="required">
1603                     <span
1604                       translate="MOTIONDIALER.ERRORS.DIALORDERBYSCHEDULEDAT_REQUIRED"
1605                       >DialOrderByScheduledAt field is required</span
1606                     >
1607                   </div>
1608                 </div>
1609               </md-input-container>
1610             </form>
1611           </div>
1612           <div
1613             class="ivrCampaign-detail-form-container globalinterval md-background-bg md-whiteframe-1dp"
1614           >
1615             <div class="pb-16" layout="row" layout-align="start center">
1616               <div
1617                 class="h2 secondary-text"
1618                 translate="MOTIONDIALER.GLOBALINTERVAL"
1619               >
1620                 GLOBALINTERVAL
1621               </div>
1622             </div>
1623             <form name="globalintervalForm" novalidate>
1624               <md-input-container class="md-block">
1625                 <label translate="MOTIONDIALER.GLOBALINTERVAL"
1626                   >GlobalInterval</label
1627                 >
1628                 <input
1629                   type="text"
1630                   name="dialGlobalInterval"
1631                   ng-model="vm.ivrCampaign.dialGlobalInterval"
1632                   ng-required="true"
1633                   autofocus
1634                   ng-disabled="!vm.crudPermissions.canEdit"
1635                 />
1636
1637                 <div class="hint">
1638                   <span translate="MOTIONDIALER.HELP.GLOBALINTERVAL"></span>
1639                 </div>
1640                 <div
1641                   ng-messages="globalintervalForm['dialGlobalInterval'].$error"
1642                   ng-show="globalintervalForm['dialGlobalInterval'].$touched"
1643                   role="alert"
1644                 >
1645                   <div ng-message="required">
1646                     <span
1647                       translate="MOTIONDIALER.ERRORS.GLOBALINTERVAL_REQUIRED"
1648                       >GlobalInterval field is required</span
1649                     >
1650                   </div>
1651                 </div>
1652               </md-input-container>
1653             </form>
1654           </div>
1655           <div
1656             class="ivrCampaign-detail-form-container timezone md-background-bg md-whiteframe-1dp"
1657           >
1658             <div class="pb-16" layout="row" layout-align="start center">
1659               <div class="h2 secondary-text" translate="MOTIONDIALER.TIMEZONE">
1660                 TIMEZONE
1661               </div>
1662             </div>
1663             <form name="timezoneForm" novalidate>
1664               <md-input-container class="md-block">
1665                 <label translate="MOTIONDIALER.TIMEZONE">Timezone</label>
1666                 <ms-timezone
1667                   name="dialTimezone"
1668                   ng-model="vm.ivrCampaign.dialTimezone"
1669                   autofocus
1670                   ng-disabled="!vm.crudPermissions.canEdit"
1671                 ></ms-timezone>
1672                 <div class="hint">
1673                   <span translate="MOTIONDIALER.HELP.TIMEZONE"></span>
1674                 </div>
1675                 <div
1676                   ng-messages="timezoneForm['dialTimezone'].$error"
1677                   ng-show="timezoneForm[dialTimezone].$touched"
1678                   role="alert"
1679                 >
1680                   <div ng-message="required">
1681                     <span translate="MOTIONDIALER.ERRORS.TIMEZONE_REQUIRED"
1682                       >Timezone field is required</span
1683                     >
1684                   </div>
1685                 </div>
1686               </md-input-container>
1687             </form>
1688           </div>
1689           <div
1690             class="ivrCampaign-detail-form-container amd md-background-bg md-whiteframe-1dp"
1691           >
1692             <div class="pb-16" layout="row" layout-align="start center">
1693               <div class="h2 secondary-text" translate="MOTIONDIALER.AMD">
1694                 AMD
1695               </div>
1696             </div>
1697             <form name="amdForm" novalidate>
1698               <md-input-container class="md-block">
1699                 <md-switch
1700                   ng-model="vm.ivrCampaign.dialAMDActive"
1701                   aria-label="AMDActive"
1702                   ng-disabled="!vm.crudPermissions.canEdit"
1703                   ><span translate="MOTIONDIALER.AMDACTIVE"
1704                     >AMDActive</span
1705                   ></md-switch
1706                 >
1707
1708                 <div class="hint">
1709                   <span translate="MOTIONDIALER.HELP.AMDACTIVE"></span>
1710                 </div>
1711               </md-input-container>
1712               <md-input-container
1713                 ng-if="vm.ivrCampaign.dialAMDActive"
1714                 class="md-block"
1715               >
1716                 <label translate="MOTIONDIALER.AMDINITIALSILENCE"
1717                   >AMDInitialSilence</label
1718                 >
1719                 <input
1720                   type="number"
1721                   name="dialAMDInitialSilence"
1722                   ng-model="vm.ivrCampaign.dialAMDInitialSilence"
1723                   min="0"
1724                   ng-disabled="!vm.crudPermissions.canEdit"
1725                 />
1726
1727                 <div class="hint">
1728                   <span translate="MOTIONDIALER.HELP.AMDINITIALSILENCE"></span>
1729                 </div>
1730                 <div
1731                   ng-messages="amdForm['dialAMDInitialSilence'].$error"
1732                   ng-show="amdForm['dialAMDInitialSilence'].$touched"
1733                   role="alert"
1734                 >
1735                   <div ng-message="required">
1736                     <span
1737                       translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_REQUIRED"
1738                       >AMDInitialSilence field is required</span
1739                     >
1740                   </div>
1741                   <div ng-message="min">
1742                     <span
1743                       translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO"
1744                       >AMDInitialSilence must be a valid greater or equal
1745                       than</span
1746                     >
1747                     <span>0</span>
1748                   </div>
1749                 </div>
1750               </md-input-container>
1751               <md-input-container
1752                 ng-if="vm.ivrCampaign.dialAMDActive"
1753                 class="md-block"
1754               >
1755                 <label translate="MOTIONDIALER.AMDGREETING">AMDGreeting</label>
1756                 <input
1757                   type="number"
1758                   name="dialAMDGreeting"
1759                   ng-model="vm.ivrCampaign.dialAMDGreeting"
1760                   min="0"
1761                   ng-disabled="!vm.crudPermissions.canEdit"
1762                 />
1763
1764                 <div class="hint">
1765                   <span translate="MOTIONDIALER.HELP.AMDGREETING"></span>
1766                 </div>
1767                 <div
1768                   ng-messages="amdForm['dialAMDGreeting'].$error"
1769                   ng-show="amdForm['dialAMDGreeting'].$touched"
1770                   role="alert"
1771                 >
1772                   <div ng-message="required">
1773                     <span translate="MOTIONDIALER.ERRORS.AMDGREETING_REQUIRED"
1774                       >AMDGreeting field is required</span
1775                     >
1776                   </div>
1777                   <div ng-message="min">
1778                     <span
1779                       translate="MOTIONDIALER.ERRORS.AMDGREETING_MUST_BE_GREATER_THAN_OR_EQUAL_TO"
1780                       >AMDGreeting must be a valid greater or equal than</span
1781                     >
1782                     <span>0</span>
1783                   </div>
1784                 </div>
1785               </md-input-container>
1786               <md-input-container
1787                 ng-if="vm.ivrCampaign.dialAMDActive"
1788                 class="md-block"
1789               >
1790                 <label translate="MOTIONDIALER.AMDAFTERGREETINGSILENCE"
1791                   >AMDAfterGreetingSilence</label
1792                 >
1793                 <input
1794                   type="number"
1795                   name="dialAMDAfterGreetingSilence"
1796                   ng-model="vm.ivrCampaign.dialAMDAfterGreetingSilence"
1797                   min="0"
1798                   ng-disabled="!vm.crudPermissions.canEdit"
1799                 />
1800
1801                 <div class="hint">
1802                   <span
1803                     translate="MOTIONDIALER.HELP.AMDAFTERGREETINGSILENCE"
1804                   ></span>
1805                 </div>
1806                 <div
1807                   ng-messages="amdForm['dialAMDAfterGreetingSilence'].$error"
1808                   ng-show="amdForm['dialAMDAfterGreetingSilence'].$touched"
1809                   role="alert"
1810                 >
1811                   <div ng-message="required">
1812                     <span
1813                       translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_REQUIRED"
1814                       >AMDAfterGreetingSilence field is required</span
1815                     >
1816                   </div>
1817                   <div ng-message="min">
1818                     <span
1819                       translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO"
1820                       >AMDAfterGreetingSilence must be a valid greater or equal
1821                       than</span
1822                     >
1823                     <span>0</span>
1824                   </div>
1825                 </div>
1826               </md-input-container>
1827               <md-input-container
1828                 ng-if="vm.ivrCampaign.dialAMDActive"
1829                 class="md-block"
1830               >
1831                 <label translate="MOTIONDIALER.AMDTOTALANALYSISTIME"
1832                   >AMDTotalAnalysisTime</label
1833                 >
1834                 <input
1835                   type="number"
1836                   name="dialAMDTotalAnalysisTime"
1837                   ng-model="vm.ivrCampaign.dialAMDTotalAnalysisTime"
1838                   min="0"
1839                   ng-disabled="!vm.crudPermissions.canEdit"
1840                 />
1841
1842                 <div class="hint">
1843                   <span
1844                     translate="MOTIONDIALER.HELP.AMDTOTALANALYSISTIME"
1845                   ></span>
1846                 </div>
1847                 <div
1848                   ng-messages="amdForm['dialAMDTotalAnalysisTime'].$error"
1849                   ng-show="amdForm['dialAMDTotalAnalysisTime'].$touched"
1850                   role="alert"
1851                 >
1852                   <div ng-message="required">
1853                     <span
1854                       translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_REQUIRED"
1855                       >AMDTotalAnalysisTime field is required</span
1856                     >
1857                   </div>
1858                   <div ng-message="min">
1859                     <span
1860                       translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO"
1861                       >AMDTotalAnalysisTime must be a valid greater or equal
1862                       than</span
1863                     >
1864                     <span>0</span>
1865                   </div>
1866                 </div>
1867               </md-input-container>
1868               <md-input-container
1869                 ng-if="vm.ivrCampaign.dialAMDActive"
1870                 class="md-block"
1871               >
1872                 <label translate="MOTIONDIALER.AMDMINWORDLENGTH"
1873                   >AMDMinWordLength</label
1874                 >
1875                 <input
1876                   type="number"
1877                   name="dialAMDMinWordLength"
1878                   ng-model="vm.ivrCampaign.dialAMDMinWordLength"
1879                   min="0"
1880                   ng-disabled="!vm.crudPermissions.canEdit"
1881                 />
1882
1883                 <div class="hint">
1884                   <span translate="MOTIONDIALER.HELP.AMDMINWORDLENGTH"></span>
1885                 </div>
1886                 <div
1887                   ng-messages="amdForm['dialAMDMinWordLength'].$error"
1888                   ng-show="amdForm['dialAMDMinWordLength'].$touched"
1889                   role="alert"
1890                 >
1891                   <div ng-message="required">
1892                     <span
1893                       translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_REQUIRED"
1894                       >AMDMinWordLength field is required</span
1895                     >
1896                   </div>
1897                   <div ng-message="min">
1898                     <span
1899                       translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO"
1900                       >AMDMinWordLength must be a valid greater or equal
1901                       than</span
1902                     >
1903                     <span>0</span>
1904                   </div>
1905                 </div>
1906               </md-input-container>
1907               <md-input-container
1908                 ng-if="vm.ivrCampaign.dialAMDActive"
1909                 class="md-block"
1910               >
1911                 <label translate="MOTIONDIALER.AMDBETWEENWORDSSILENCE"
1912                   >AMDBetweenWordsSilence</label
1913                 >
1914                 <input
1915                   type="number"
1916                   name="dialAMDBetweenWordsSilence"
1917                   ng-model="vm.ivrCampaign.dialAMDBetweenWordsSilence"
1918                   min="0"
1919                   ng-disabled="!vm.crudPermissions.canEdit"
1920                 />
1921
1922                 <div class="hint">
1923                   <span
1924                     translate="MOTIONDIALER.HELP.AMDBETWEENWORDSSILENCE"
1925                   ></span>
1926                 </div>
1927                 <div
1928                   ng-messages="amdForm['dialAMDBetweenWordsSilence'].$error"
1929                   ng-show="amdForm['dialAMDBetweenWordsSilence'].$touched"
1930                   role="alert"
1931                 >
1932                   <div ng-message="required">
1933                     <span
1934                       translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_REQUIRED"
1935                       >AMDBetweenWordsSilence field is required</span
1936                     >
1937                   </div>
1938                   <div ng-message="min">
1939                     <span
1940                       translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO"
1941                       >AMDBetweenWordsSilence must be a valid greater or equal
1942                       than</span
1943                     >
1944                     <span>0</span>
1945                   </div>
1946                 </div>
1947               </md-input-container>
1948               <md-input-container
1949                 ng-if="vm.ivrCampaign.dialAMDActive"
1950                 class="md-block"
1951               >
1952                 <label translate="MOTIONDIALER.AMDMAXIMUMNUMBEROFWORDS"
1953                   >AMDMaximumNumberOfWords</label
1954                 >
1955                 <input
1956                   type="number"
1957                   name="dialAMDMaximumNumberOfWords"
1958                   ng-model="vm.ivrCampaign.dialAMDMaximumNumberOfWords"
1959                   min="0"
1960                   ng-disabled="!vm.crudPermissions.canEdit"
1961                 />
1962
1963                 <div class="hint">
1964                   <span
1965                     translate="MOTIONDIALER.HELP.AMDMAXIMUMNUMBEROFWORDS"
1966                   ></span>
1967                 </div>
1968                 <div
1969                   ng-messages="amdForm['dialAMDMaximumNumberOfWords'].$error"
1970                   ng-show="amdForm['dialAMDMaximumNumberOfWords'].$touched"
1971                   role="alert"
1972                 >
1973                   <div ng-message="required">
1974                     <span
1975                       translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_REQUIRED"
1976                       >AMDMaximumNumberOfWords field is required</span
1977                     >
1978                   </div>
1979                   <div ng-message="min">
1980                     <span
1981                       translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO"
1982                       >AMDMaximumNumberOfWords must be a valid greater or equal
1983                       than</span
1984                     >
1985                     <span>0</span>
1986                   </div>
1987                 </div>
1988               </md-input-container>
1989               <md-input-container
1990                 ng-if="vm.ivrCampaign.dialAMDActive"
1991                 class="md-block"
1992               >
1993                 <label translate="MOTIONDIALER.AMDSILENCETHRESHOLD"
1994                   >AMDSilenceThreshold</label
1995                 >
1996                 <input
1997                   type="number"
1998                   name="dialAMDSilenceThreshold"
1999                   ng-model="vm.ivrCampaign.dialAMDSilenceThreshold"
2000                   min="0"
2001                   max="32767"
2002                   ng-disabled="!vm.crudPermissions.canEdit"
2003                 />
2004
2005                 <div class="hint">
2006                   <span
2007                     translate="MOTIONDIALER.HELP.AMDSILENCETHRESHOLD"
2008                   ></span>
2009                 </div>
2010                 <div
2011                   ng-messages="amdForm['dialAMDSilenceThreshold'].$error"
2012                   ng-show="amdForm['dialAMDSilenceThreshold'].$touched"
2013                   role="alert"
2014                 >
2015                   <div ng-message="required">
2016                     <span
2017                       translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_REQUIRED"
2018                       >AMDSilenceThreshold field is required</span
2019                     >
2020                   </div>
2021                   <div ng-message="min">
2022                     <span
2023                       translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_GREATER_THAN_OR_EQUAL_TO"
2024                       >AMDSilenceThreshold must be a valid greater or equal
2025                       than</span
2026                     >
2027                     <span>0</span>
2028                   </div>
2029                   <div ng-message="max">
2030                     <span
2031                       translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_LESS_THAN_OR_EQUAL_TO"
2032                       >AMDSilenceThreshold must be a valid greater or equal
2033                       than</span
2034                     >
2035                     <span>32767</span>
2036                   </div>
2037                 </div>
2038               </md-input-container>
2039               <md-input-container
2040                 ng-if="vm.ivrCampaign.dialAMDActive"
2041                 class="md-block"
2042               >
2043                 <label translate="MOTIONDIALER.AMDMAXIMUMWORDLENGTH"
2044                   >AMDMaximumWordLength</label
2045                 >
2046                 <input
2047                   type="number"
2048                   name="dialAMDMaximumWordLength"
2049                   ng-model="vm.ivrCampaign.dialAMDMaximumWordLength"
2050                   min="0"
2051                   ng-disabled="!vm.crudPermissions.canEdit"
2052                 />
2053
2054                 <div class="hint">
2055                   <span
2056                     translate="MOTIONDIALER.HELP.AMDMAXIMUMWORDLENGTH"
2057                   ></span>
2058                 </div>
2059                 <div
2060                   ng-messages="amdForm['dialAMDMaximumWordLength'].$error"
2061                   ng-show="amdForm['dialAMDMaximumWordLength'].$touched"
2062                   role="alert"
2063                 >
2064                   <div ng-message="required">
2065                     <span
2066                       translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_REQUIRED"
2067                       >AMDMaximumWordLength field is required</span
2068                     >
2069                   </div>
2070                   <div ng-message="min">
2071                     <span
2072                       translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO"
2073                       >AMDMaximumWordLength must be a valid greater or equal
2074                       than</span
2075                     >
2076                     <span>0</span>
2077                   </div>
2078                 </div>
2079               </md-input-container>
2080             </form>
2081           </div>
2082         </md-tab-body>
2083       </md-tab>
2084       <md-tab>
2085         <md-tab-label>
2086           <span translate="MOTIONDIALER.HOPPERS">HOPPERS</span>
2087         </md-tab-label>
2088         <md-tab-body>
2089           <div
2090             class="ivrCampaign-detail-form-container hopperstatistics md-background-bg md-whiteframe-1dp"
2091           >
2092             <div
2093               ng-controller="IvrCampaignHopperStatisticsController as vm_hs"
2094               ng-init="vm_hs.init(vm.ivrCampaign)"
2095             >
2096               <md-toolbar class="md-table-toolbar md-default">
2097                 <div class="md-toolbar-tools">
2098                   <span class="md-subhead" translate="MOTIONDIALER.HOPPERWIDGET"
2099                     >Hoppers</span
2100                   >
2101                   <div flex></div>
2102                   <md-button
2103                     class="md-icon-button"
2104                     ng-click="vm_hs.init(vm.ivrCampaign)"
2105                     aria-label="refresh Hopper"
2106                     translate
2107                     translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS"
2108                   >
2109                     <md-icon md-font-icon="icon-refresh"></md-icon>
2110                   </md-button>
2111                 </div>
2112               </md-toolbar>
2113               <!-- WIDGET GROUP -->
2114               <div class="widget-group" layout="row" flex="100" layout-wrap>
2115                 <!-- WIDGET 1 -->
2116                 <ms-widget
2117                   class="h-140"
2118                   layout="column"
2119                   flex="100"
2120                   flex-gt-xs="50"
2121                   flex-gt-md="25"
2122                 >
2123                   <!-- Front -->
2124                   <ms-widget-front class="p-16 white-bg" layout="row" flex>
2125                     <div
2126                       class="pt-8 pb-8"
2127                       layout="column"
2128                       layout-align="center center"
2129                       flex
2130                     >
2131                       <div class="md-display-1 pb-8">
2132                         {{(vm_hs.total || 0) + (vm_hs.closed || 0)}}
2133                       </div>
2134                       <div class="font-weight-500 secondary-text">
2135                         {{ 'MOTIONDIALER.TOTAL' | translate }}
2136                       </div>
2137                     </div>
2138                   </ms-widget-front>
2139                   <!-- / Front -->
2140                 </ms-widget>
2141                 <!-- / WIDGET 1 -->
2142
2143                 <!-- WIDGET 2 -->
2144                 <ms-widget
2145                   class="h-140"
2146                   layout="column"
2147                   flex="100"
2148                   flex-gt-xs="50"
2149                   flex-gt-md="25"
2150                 >
2151                   <!-- Front -->
2152                   <ms-widget-front class="p-16 white-bg" layout="row" flex>
2153                     <div
2154                       class="pt-8 pb-8"
2155                       layout="column"
2156                       layout-align="center center"
2157                       flex
2158                     >
2159                       <div class="md-display-1 pb-8">
2160                         {{vm_hs.fresh || 0}} ({{vm_hs.total ? ((((vm_hs.fresh ||
2161                         0) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) |
2162                         number: 2) : 0}}%)
2163                       </div>
2164                       <div class="font-weight-500 secondary-text">
2165                         {{ 'MOTIONDIALER.FRESH' | translate }}
2166                       </div>
2167                     </div>
2168                   </ms-widget-front>
2169                   <!-- / Front -->
2170                 </ms-widget>
2171                 <!-- / WIDGET 2 -->
2172
2173                 <!-- WIDGET 3 -->
2174                 <ms-widget
2175                   class="h-140"
2176                   layout="column"
2177                   flex="100"
2178                   flex-gt-xs="50"
2179                   flex-gt-md="25"
2180                 >
2181                   <!-- Front -->
2182                   <ms-widget-front class="p-16 white-bg" layout="row" flex>
2183                     <div
2184                       class="pt-8 pb-8"
2185                       layout="column"
2186                       layout-align="center center"
2187                       flex
2188                     >
2189                       <div class="md-display-1 pb-8">
2190                         {{vm_hs.total ? (vm_hs.total - (vm_hs.fresh || 0)) : 0}}
2191                         ({{vm_hs.total ? ((((vm_hs.total - (vm_hs.fresh || 0)) *
2192                         100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) |
2193                         number: 2) : 0}}%)
2194                       </div>
2195                       <div class="font-weight-500 secondary-text">
2196                         {{ 'MOTIONDIALER.OPEN' | translate }}
2197                       </div>
2198                     </div>
2199                   </ms-widget-front>
2200                   <!-- / Front -->
2201                 </ms-widget>
2202                 <!-- / WIDGET 3 -->
2203
2204                 <!-- WIDGET 3 -->
2205                 <ms-widget
2206                   class="h-140"
2207                   layout="column"
2208                   flex="100"
2209                   flex-gt-xs="50"
2210                   flex-gt-md="25"
2211                 >
2212                   <!-- Front -->
2213                   <ms-widget-front class="p-16 white-bg" layout="row" flex>
2214                     <div
2215                       class="pt-8 pb-8"
2216                       layout="column"
2217                       layout-align="center center"
2218                       flex
2219                     >
2220                       <div class="md-display-1 pb-8">
2221                         {{vm_hs.closed ? (vm_hs.closed || 0) : 0}}
2222                         ({{vm_hs.closed ? ((((vm_hs.closed) * 100)/(vm_hs.closed
2223                         + (vm_hs.total || 0))) | number: 2) : 0}}%)
2224                       </div>
2225                       <div class="font-weight-500 secondary-text">
2226                         {{ 'MOTIONDIALER.CLOSED' | translate }}
2227                       </div>
2228                     </div>
2229                   </ms-widget-front>
2230                   <!-- / Front -->
2231                 </ms-widget>
2232                 <!-- / WIDGET 3 -->
2233               </div>
2234               <!-- / WIDGET GROUP -->
2235             </div>
2236           </div>
2237           <div
2238             class="ivrCampaign-detail-form-container hoppers md-background-bg md-whiteframe-1dp"
2239           >
2240             <div
2241               ng-controller="IvrCampaignHoppersController as vm_dc"
2242               ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)"
2243             >
2244               <md-toolbar
2245                 class="md-table-toolbar md-default"
2246                 ng-hide="vm_dc.selectedIvrCampaignHoppers.length"
2247               >
2248                 <div class="md-toolbar-tools">
2249                   <span class="md-subhead" translate="MOTIONDIALER.HOPPERS"
2250                     >Hoppers</span
2251                   >
2252                   <ms-search-bar
2253                     on-search="vm_dc.query.filter = query"
2254                     on-collapse="vm_dc.query.filter = undefined"
2255                     debounce="300"
2256                     direction="down"
2257                   ></ms-search-bar>
2258                   <div flex></div>
2259                   <md-button
2260                     class="md-icon-button"
2261                     ng-click="vm_dc.getIvrCampaignHoppers()"
2262                     aria-label="refresh Hoppers"
2263                     translate
2264                     translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS"
2265                   >
2266                     <md-icon md-font-icon="icon-refresh"></md-icon>
2267                   </md-button>
2268                 </div>
2269               </md-toolbar>
2270               <md-toolbar
2271                 class="md-table-toolbar md-accent"
2272                 ng-show="vm_dc.selectedIvrCampaignHoppers.length"
2273               >
2274                 <div class="md-toolbar-tools">
2275                   <span class="md-subhead"
2276                     >{{vm_dc.selectedIvrCampaignHoppers.length}}
2277                     {{vm_dc.selectedIvrCampaignHoppers.length > 1 ? 'items' :
2278                     'item'}} selected</span
2279                   >
2280                   <div flex></div>
2281                   <button
2282                     class="md-icon-button"
2283                     ng-csv="vm_dc.exportSelectedIvrCampaignHoppers"
2284                     csv-label="true"
2285                     filename="ivrCampaigns.csv"
2286                   >
2287                     <md-icon md-font-icon="icon-file-excel"></md-icon>
2288                   </button>
2289                   <md-button
2290                     ng-if="vm_dc.crudPermissions.canDelete"
2291                     class="md-icon-button"
2292                     ng-click="vm_dc.deleteSelectedIvrCampaignHoppers($event)"
2293                     aria-label="delete selected"
2294                     translate
2295                     translate-attr-label="MOTIONDIALER.DELETE_SELECTED"
2296                   >
2297                     <md-icon md-font-icon="icon-delete"></md-icon>
2298                   </md-button>
2299                 </div>
2300               </md-toolbar>
2301               <md-table-container class="font-size-12">
2302                 <table
2303                   md-table
2304                   md-row-select
2305                   multiple
2306                   ng-model="vm_dc.selectedIvrCampaignHoppers"
2307                   md-progress="vm_dc.promise"
2308                 >
2309                   <thead
2310                     md-head
2311                     md-order="vm_dc.query.sort"
2312                     md-on-reorder="vm_dc.getIvrCampaignHoppers"
2313                   >
2314                     <tr md-row>
2315                       <th md-column md-order-by="ContactId">
2316                         {{ 'MOTIONDIALER.CONTACTID' | translate }}
2317                       </th>
2318                       <th md-column md-order-by="phone">
2319                         {{ 'MOTIONDIALER.PHONE' | translate }}
2320                       </th>
2321                       <th md-column md-order-by="countcongestionretry">
2322                         {{ 'MOTIONDIALER.CONGESTION' | translate }}
2323                       </th>
2324                       <th md-column md-order-by="countbusyretry">
2325                         {{ 'MOTIONDIALER.BUSY' | translate }}
2326                       </th>
2327                       <th md-column md-order-by="countnoanswerretry">
2328                         {{ 'MOTIONDIALER.NOANSWER' | translate }}
2329                       </th>
2330                       <th md-column md-order-by="countnosuchnumberretry">
2331                         {{ 'MOTIONDIALER.NOSUCHNUMBER' | translate }}
2332                       </th>
2333                       <th md-column md-order-by="countdropretry">
2334                         {{ 'MOTIONDIALER.DROP' | translate }}
2335                       </th>
2336                       <th md-column md-order-by="countabandonedretry">
2337                         {{ 'MOTIONDIALER.ABANDONED' | translate }}
2338                       </th>
2339                       <th md-column md-order-by="countmachineretry">
2340                         {{ 'MOTIONDIALER.MACHINE' | translate }}
2341                       </th>
2342                       <th md-column md-order-by="countagentrejectretry">
2343                         {{ 'MOTIONDIALER.AGENTREJECT' | translate }}
2344                       </th>
2345                       <th md-column md-order-by="scheduledat">
2346                         {{ 'MOTIONDIALER.SCHEDULEDAT' | translate }}
2347                       </th>
2348                       <th md-column md-order-by="priority">
2349                         {{ 'MOTIONDIALER.PRIORITY' | translate }}
2350                       </th>
2351                       <th md-column width="10px"></th>
2352                     </tr>
2353                   </thead>
2354                   <tbody md-body>
2355                     <tr
2356                       md-row
2357                       md-select="hopper"
2358                       md-select-id="id"
2359                       ng-repeat="hopper in vm_dc.ivrCampaignHoppers.rows"
2360                     >
2361                       <td
2362                         ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)"
2363                         md-cell
2364                       >
2365                         {{hopper.ContactId}}
2366                       </td>
2367                       <td
2368                         ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)"
2369                         md-cell
2370                       >
2371                         {{hopper.phone}}
2372                       </td>
2373                       <td
2374                         ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)"
2375                         md-cell
2376                       >
2377                         {{hopper.countcongestionretry}}
2378                       </td>
2379                       <td
2380                         ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)"
2381                         md-cell
2382                       >
2383                         {{hopper.countbusyretry}}
2384                       </td>
2385                       <td
2386                         ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)"
2387                         md-cell
2388                       >
2389                         {{hopper.countnoanswerretry}}
2390                       </td>
2391                       <td
2392                         ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)"
2393                         md-cell
2394                       >
2395                         {{hopper.countnosuchnumberretry}}
2396                       </td>
2397                       <td
2398                         ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)"
2399                         md-cell
2400                       >
2401                         {{hopper.countdropretry}}
2402                       </td>
2403                       <td
2404                         ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)"
2405                         md-cell
2406                       >
2407                         {{hopper.countabandonedretry}}
2408                       </td>
2409                       <td
2410                         ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)"
2411                         md-cell
2412                       >
2413                         {{hopper.countmachineretry}}
2414                       </td>
2415                       <td
2416                         ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)"
2417                         md-cell
2418                       >
2419                         {{hopper.countagentrejectretry}}
2420                       </td>
2421                       <td
2422                         ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)"
2423                         md-cell
2424                       >
2425                         {{ hopper.scheduledat | formatdate }}
2426                       </td>
2427                       <td
2428                         ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)"
2429                         md-cell
2430                       >
2431                         {{ vm_dc.arraypriority[hopper.priority].option }}
2432                       </td>
2433
2434                       <td
2435                         md-cell
2436                         class="actions"
2437                         ng-if="!vm_dc.crudPermissions.readOnly"
2438                       >
2439                         <md-menu>
2440                           <md-button
2441                             class="md-icon-button"
2442                             aria-label="More"
2443                             translate
2444                             translate-attr-aria-label="MOTIONDIALER.MORE"
2445                             ng-click="$mdOpenMenu($event)"
2446                           >
2447                             <md-icon
2448                               md-font-icon="icon-dots-vertical"
2449                             ></md-icon>
2450                           </md-button>
2451
2452                           <md-menu-content width="3">
2453                             <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">
2454                               <md-button
2455                                 ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)"
2456                                 translate="MOTIONDIALER.EDIT_HOPPER"
2457                               >
2458                                 Edit Hopper
2459                               </md-button>
2460                             </md-menu-item>
2461                             <md-menu-item
2462                               ng-if="vm_dc.crudPermissions.canDelete"
2463                             >
2464                               <md-button
2465                                 ng-click="vm_dc.deleteConfirm(hopper, $event)"
2466                                 translate="MOTIONDIALER.DELETE_HOPPER"
2467                               >
2468                                 Delete Hopper
2469                               </md-button>
2470                             </md-menu-item>
2471                           </md-menu-content>
2472                         </md-menu>
2473                       </td>
2474                     </tr>
2475                     <tr md-row ng-if="!vm_dc.ivrCampaignHoppers.rows.length">
2476                       <td md-cell colspan="15">
2477                         <div layout="row" layout-align="center center">
2478                           <span
2479                             class="text-boxed-light"
2480                             translate="MOTIONDIALER.NO_HOPPER_AVAILABLE"
2481                             >No hopper available</span
2482                           >
2483                         </div>
2484                       </td>
2485                     </tr>
2486                   </tbody>
2487                 </table>
2488               </md-table-container>
2489               <md-table-pagination
2490                 md-label="{page: '{{'MOTIONDIALER.PAGE' | translate}}:', rowsPerPage: '{{'MOTIONDIALER.ROWSPERPAGE' | translate}}:', of: '{{'MOTIONDIALER.OF' | translate}}'}"
2491                 md-limit="vm_dc.query.limit"
2492                 md-limit-options="[10, 15, 20, 50, 100, 250]"
2493                 md-page="vm_dc.query.page"
2494                 md-total="{{vm_dc.ivrCampaignHoppers.count}}"
2495                 md-on-paginate="vm_dc.getIvrCampaignHoppers"
2496                 md-page-select
2497               ></md-table-pagination>
2498             </div>
2499           </div>
2500         </md-tab-body>
2501       </md-tab>
2502       <md-tab>
2503         <md-tab-label>
2504           <span translate="MOTIONDIALER.HISTORY">HISTORY</span>
2505         </md-tab-label>
2506         <md-tab-body>
2507           <div
2508             class="ivrCampaign-detail-form-container hopperhistories md-background-bg md-whiteframe-1dp"
2509           >
2510             <div
2511               ng-controller="IvrCampaignHopperHistoriesController as vm_dc"
2512               ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)"
2513             >
2514               <md-toolbar
2515                 class="md-table-toolbar md-default"
2516                 ng-hide="vm_dc.selectedIvrCampaignHopperHistories.length"
2517               >
2518                 <div class="md-toolbar-tools">
2519                   <span
2520                     class="md-subhead"
2521                     translate="MOTIONDIALER.HOPPERHISTORIES"
2522                     >HopperHistories</span
2523                   >
2524                   <ms-search-bar
2525                     on-search="vm_dc.query.filter = query"
2526                     on-collapse="vm_dc.query.filter = undefined"
2527                     debounce="300"
2528                     direction="down"
2529                   ></ms-search-bar>
2530                   <div flex></div>
2531                   <md-button
2532                     class="md-icon-button"
2533                     ng-click="vm_dc.getIvrCampaignHopperHistories()"
2534                     aria-label="refresh HopperHistories"
2535                     translate
2536                     translate-attr-label="MOTIONDIALER.REFRESH_HOPPERHISTORIES"
2537                   >
2538                     <md-icon md-font-icon="icon-refresh"></md-icon>
2539                   </md-button>
2540                 </div>
2541               </md-toolbar>
2542               <md-toolbar
2543                 class="md-table-toolbar md-accent"
2544                 ng-show="vm_dc.selectedIvrCampaignHopperHistories.length"
2545               >
2546                 <div class="md-toolbar-tools">
2547                   <span class="md-subhead"
2548                     >{{vm_dc.selectedIvrCampaignHopperHistories.length}}
2549                     {{vm_dc.selectedIvrCampaignHopperHistories.length > 1 ?
2550                     'items' : 'item'}} selected</span
2551                   >
2552                   <div flex></div>
2553                   <button
2554                     class="md-icon-button"
2555                     ng-csv="vm_dc.exportSelectedIvrCampaignHopperHistories"
2556                     csv-label="true"
2557                     filename="ivrCampaigns.csv"
2558                   >
2559                     <md-icon md-font-icon="icon-file-excel"></md-icon>
2560                   </button>
2561                 </div>
2562               </md-toolbar>
2563               <md-table-container class="font-size-12">
2564                 <table
2565                   md-table
2566                   md-row-select
2567                   multiple
2568                   ng-model="vm_dc.selectedIvrCampaignHopperHistories"
2569                   md-progress="vm_dc.promise"
2570                 >
2571                   <thead
2572                     md-head
2573                     md-order="vm_dc.query.sort"
2574                     md-on-reorder="vm_dc.getIvrCampaignHopperHistories"
2575                   >
2576                     <tr md-row>
2577                       <th md-column md-order-by="uniqueid">
2578                         {{ 'MOTIONDIALER.UNIQUEID' | translate }}
2579                       </th>
2580                       <th md-column md-order-by="ContactId">
2581                         {{ 'MOTIONDIALER.CONTACTID' | translate }}
2582                       </th>
2583                       <th md-column md-order-by="calleridnum">
2584                         {{ 'MOTIONDIALER.PHONE' | translate }}
2585                       </th>
2586                       <th md-column md-order-by="calleridname">
2587                         {{ 'MOTIONDIALER.NAME' | translate }}
2588                       </th>
2589                       <th md-column md-order-by="statedesc">
2590                         {{ 'MOTIONDIALER.STATUS' | translate }}
2591                       </th>
2592                       <th md-column md-order-by="scheduledat">
2593                         {{ 'MOTIONDIALER.SCHEDULEDAT' | translate }}
2594                       </th>
2595                       <th md-column md-order-by="starttime">
2596                         {{ 'MOTIONDIALER.STARTTIME' | translate }}
2597                       </th>
2598                       <th md-column md-order-by="endtime">
2599                         {{ 'MOTIONDIALER.ENDTIME' | translate }}
2600                       </th>
2601                       <th md-column width="10px"></th>
2602                     </tr>
2603                   </thead>
2604                   <tbody md-body>
2605                     <tr
2606                       md-row
2607                       md-select="hopperHistory"
2608                       md-select-id="id"
2609                       ng-repeat="hopperHistory in vm_dc.ivrCampaignHopperHistories.rows"
2610                     >
2611                       <td md-cell>{{hopperHistory.uniqueid}}</td>
2612                       <td md-cell>{{hopperHistory.ContactId}}</td>
2613                       <td md-cell>{{hopperHistory.calleridnum}}</td>
2614                       <td md-cell>{{hopperHistory.calleridname}}</td>
2615                       <td md-cell>{{hopperHistory.statedesc}}</td>
2616                       <td md-cell>
2617                         {{ hopperHistory.scheduledat | formatdate }}
2618                       </td>
2619                       <td md-cell>
2620                         {{ hopperHistory.starttime | formatdate }}
2621                       </td>
2622                       <td md-cell>{{ hopperHistory.endtime | formatdate }}</td>
2623                       <td md-cell class="actions"></td>
2624                     </tr>
2625                     <tr
2626                       md-row
2627                       ng-if="!vm_dc.ivrCampaignHopperHistories.rows.length"
2628                     >
2629                       <td md-cell colspan="11">
2630                         <div layout="row" layout-align="center center">
2631                           <span
2632                             class="text-boxed-light"
2633                             translate="MOTIONDIALER.NO_HOPPERHISTORY_AVAILABLE"
2634                             >No hopperhistory available</span
2635                           >
2636                         </div>
2637                       </td>
2638                     </tr>
2639                   </tbody>
2640                 </table>
2641               </md-table-container>
2642               <md-table-pagination
2643                 md-label="{page: '{{'MOTIONDIALER.PAGE' | translate}}:', rowsPerPage: '{{'MOTIONDIALER.ROWSPERPAGE' | translate}}:', of: '{{'MOTIONDIALER.OF' | translate}}'}"
2644                 md-limit="vm_dc.query.limit"
2645                 md-limit-options="[10, 15, 20, 50, 100, 250]"
2646                 md-page="vm_dc.query.page"
2647                 md-total="{{vm_dc.ivrCampaignHopperHistories.count}}"
2648                 md-on-paginate="vm_dc.getIvrCampaignHopperHistories"
2649                 md-page-select
2650               ></md-table-pagination>
2651             </div>
2652           </div>
2653         </md-tab-body>
2654       </md-tab>
2655       <md-tab>
2656         <md-tab-label>
2657           <span translate="MOTIONDIALER.FINAL">FINAL</span>
2658         </md-tab-label>
2659         <md-tab-body>
2660           <div
2661             class="ivrCampaign-detail-form-container hopperfinals md-background-bg md-whiteframe-1dp"
2662           >
2663             <div
2664               ng-controller="IvrCampaignHopperFinalsController as vm_dc"
2665               ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)"
2666             >
2667               <md-toolbar
2668                 class="md-table-toolbar md-default"
2669                 ng-hide="vm_dc.selectedIvrCampaignHopperFinals.length"
2670               >
2671                 <div class="md-toolbar-tools">
2672                   <span class="md-subhead" translate="MOTIONDIALER.HOPPERFINALS"
2673                     >HopperFinals</span
2674                   >
2675                   <ms-search-bar
2676                     on-search="vm_dc.query.filter = query"
2677                     on-collapse="vm_dc.query.filter = undefined"
2678                     debounce="300"
2679                     direction="down"
2680                   ></ms-search-bar>
2681                   <div flex></div>
2682                   <md-button
2683                     class="md-icon-button"
2684                     ng-click="vm_dc.getIvrCampaignHopperFinals()"
2685                     aria-label="refresh HopperFinals"
2686                     translate
2687                     translate-attr-label="MOTIONDIALER.REFRESH_HOPPERFINALS"
2688                   >
2689                     <md-icon md-font-icon="icon-refresh"></md-icon>
2690                   </md-button>
2691                   <td md-cell class="actions">
2692                     <md-menu>
2693                       <md-button
2694                         class="md-icon-button"
2695                         aria-label="More"
2696                         translate
2697                         translate-attr-aria-label="MOTIONDIALER.MORE"
2698                         ng-click="vm_dc.countContactsIvrCampaignHopperFinal(vm_dc.query.id); $mdOpenMenu($event);"
2699                       >
2700                         <md-icon md-font-icon="icon-backup-restore"></md-icon>
2701                         <md-tooltip
2702                           ><span translate="MOTIONDIALER.RESTORECONTACTS"></span
2703                         ></md-tooltip>
2704                       </md-button>
2705                       <md-menu-content width="3">
2706                         <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">
2707                           <md-button
2708                             ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(3)"
2709                           >
2710                             <span translate="MOTIONDIALER.NOANSWER "
2711                               >NoAnswer</span
2712                             >
2713                             <span class="badge"
2714                               >({{vm_dc.contacts.noAnswerContacts}})</span
2715                             >
2716                           </md-button>
2717                         </md-menu-item>
2718                         <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">
2719                           <md-button
2720                             ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(5)"
2721                           >
2722                             <span translate="MOTIONDIALER.BUSY ">Busy</span>
2723                             <span class="badge"
2724                               >({{vm_dc.contacts.busyContacts}})</span
2725                             >
2726                           </md-button>
2727                         </md-menu-item>
2728                         <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">
2729                           <md-button
2730                             ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(8)"
2731                           >
2732                             <span translate="MOTIONDIALER.CONGESTION "
2733                               >Congestion</span
2734                             >
2735                             <span class="badge"
2736                               >({{vm_dc.contacts.congestionContacts}})</span
2737                             >
2738                           </md-button>
2739                         </md-menu-item>
2740                         <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">
2741                           <md-button
2742                             ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(10)"
2743                           >
2744                             <span translate="MOTIONDIALER.DROPPED ">Drop</span>
2745                             <span class="badge"
2746                               >({{vm_dc.contacts.dropContacts}})</span
2747                             >
2748                           </md-button>
2749                         </md-menu-item>
2750                         <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">
2751                           <md-button
2752                             ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(11)"
2753                           >
2754                             <span translate="MOTIONDIALER.ABANDONED "
2755                               >Abandoned</span
2756                             >
2757                             <span class="badge"
2758                               >({{vm_dc.contacts.abandonedContacts}})</span
2759                             >
2760                           </md-button>
2761                         </md-menu-item>
2762                         <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">
2763                           <md-button
2764                             ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(22)"
2765                           >
2766                             <span translate="MOTIONDIALER.RECALLFAILEDTIMEOUT"
2767                               >Recall</span
2768                             >
2769                             <span class="badge"
2770                               >({{vm_dc.contacts.reCallContacts}})</span
2771                             >
2772                           </md-button>
2773                         </md-menu-item>
2774                         <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">
2775                           <md-button
2776                             ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(0)"
2777                           >
2778                             <span translate="MOTIONDIALER.NO_SUCH_NUMBER"
2779                               >NoSuchNumber</span
2780                             >
2781                             <span class="badge"
2782                               >({{vm_dc.contacts.noSuchContacts}})</span
2783                             >
2784                           </md-button>
2785                         </md-menu-item>
2786                         <md-menu-item>
2787                           <md-button
2788                             ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(19)"
2789                           >
2790                             <span translate="MOTIONDIALER.ANSWERING_MACHINE"
2791                               >AnsweringMachine</span
2792                             >
2793                             <span class="badge"
2794                               >({{vm_dc.contacts.answeringMachine}})</span
2795                             >
2796                           </md-button>
2797                         </md-menu-item>
2798                       </md-menu-content>
2799                     </md-menu>
2800                   </td>
2801                 </div>
2802               </md-toolbar>
2803               <md-toolbar
2804                 class="md-table-toolbar md-accent"
2805                 ng-show="vm_dc.selectedIvrCampaignHopperFinals.length"
2806               >
2807                 <div class="md-toolbar-tools">
2808                   <span class="md-subhead"
2809                     >{{vm_dc.selectedIvrCampaignHopperFinals.length}}
2810                     {{vm_dc.selectedIvrCampaignHopperFinals.length > 1 ? 'items'
2811                     : 'item'}} selected</span
2812                   >
2813                   <div flex></div>
2814                   <button
2815                     class="md-icon-button"
2816                     ng-csv="vm_dc.exportSelectedIvrCampaignHopperFinals"
2817                     csv-label="true"
2818                     filename="ivrCampaigns.csv"
2819                   >
2820                     <md-icon md-font-icon="icon-file-excel"></md-icon>
2821                   </button>
2822                   <md-button
2823                     ng-if="vm_dc.crudPermissions.canEdit"
2824                     class="md-icon-button"
2825                     ng-click="vm_dc.moveSelectedIvrCampaignHopperFinals($event)"
2826                     aria-label="move selected"
2827                     translate
2828                     translate-attr-label="MOTIONDIALER.MOVE_SELECTED"
2829                   >
2830                     <md-icon md-font-icon="icon-restore"></md-icon>
2831                     <md-tooltip
2832                       ><span translate="MOTIONDIALER.RESTORECONTACTS"></span
2833                     ></md-tooltip>
2834                   </md-button>
2835                 </div>
2836               </md-toolbar>
2837               <md-table-container class="font-size-12">
2838                 <table
2839                   md-table
2840                   md-row-select
2841                   multiple
2842                   ng-model="vm_dc.selectedIvrCampaignHopperFinals"
2843                   md-progress="vm_dc.promise"
2844                 >
2845                   <thead
2846                     md-head
2847                     md-order="vm_dc.query.sort"
2848                     md-on-reorder="vm_dc.getIvrCampaignHopperFinals"
2849                   >
2850                     <tr md-row>
2851                       <th md-column md-order-by="uniqueid">
2852                         {{ 'MOTIONDIALER.UNIQUEID' | translate }}
2853                       </th>
2854                       <th md-column md-order-by="ContactId">
2855                         {{ 'MOTIONDIALER.CONTACTID' | translate }}
2856                       </th>
2857                       <th md-column md-order-by="calleridnum">
2858                         {{ 'MOTIONDIALER.PHONE' | translate }}
2859                       </th>
2860                       <th md-column md-order-by="calleridname">
2861                         {{ 'MOTIONDIALER.NAME' | translate }}
2862                       </th>
2863                       <th md-column md-order-by="statedesc">
2864                         {{ 'MOTIONDIALER.STATUS' | translate }}
2865                       </th>
2866                       <th md-column md-order-by="countcongestionretry">
2867                         {{ 'MOTIONDIALER.CONGESTION' | translate }}
2868                       </th>
2869                       <th md-column md-order-by="countbusyretry">
2870                         {{ 'MOTIONDIALER.BUSY' | translate }}
2871                       </th>
2872                       <th md-column md-order-by="countnoanswerretry">
2873                         {{ 'MOTIONDIALER.NOANSWER' | translate }}
2874                       </th>
2875                       <th md-column md-order-by="countnosuchnumberretry">
2876                         {{ 'MOTIONDIALER.NOSUCHNUMBER' | translate }}
2877                       </th>
2878                       <th md-column md-order-by="countdropretry">
2879                         {{ 'MOTIONDIALER.DROP' | translate }}
2880                       </th>
2881                       <th md-column md-order-by="countabandonedretry">
2882                         {{ 'MOTIONDIALER.ABANDONED' | translate }}
2883                       </th>
2884                       <th md-column md-order-by="countmachineretry">
2885                         {{ 'MOTIONDIALER.MACHINE' | translate }}
2886                       </th>
2887                       <th md-column md-order-by="countagentrejectretry">
2888                         {{ 'MOTIONDIALER.AGENTREJECT' | translate }}
2889                       </th>
2890                       <th md-column md-order-by="starttime">
2891                         {{ 'MOTIONDIALER.STARTTIME' | translate }}
2892                       </th>
2893                       <th md-column md-order-by="endtime">
2894                         {{ 'MOTIONDIALER.ENDTIME' | translate }}
2895                       </th>
2896                       <th md-column md-order-by="disposition">
2897                         {{ 'MOTIONDIALER.DISPOSITION' | translate }}
2898                       </th>
2899                       <th md-column width="10px"></th>
2900                     </tr>
2901                   </thead>
2902                   <tbody md-body>
2903                     <tr
2904                       md-row
2905                       md-select="hopperFinal"
2906                       md-select-id="id"
2907                       ng-repeat="hopperFinal in vm_dc.ivrCampaignHopperFinals.rows"
2908                     >
2909                       <td md-cell>{{hopperFinal.uniqueid}}</td>
2910                       <td md-cell>{{hopperFinal.ContactId}}</td>
2911                       <td md-cell>{{hopperFinal.calleridnum}}</td>
2912                       <td md-cell>{{hopperFinal.calleridname}}</td>
2913                       <td md-cell>{{hopperFinal.statedesc}}</td>
2914                       <td md-cell>{{hopperFinal.countcongestionretry}}</td>
2915                       <td md-cell>{{hopperFinal.countbusyretry}}</td>
2916                       <td md-cell>{{hopperFinal.countnoanswerretry}}</td>
2917                       <td md-cell>{{hopperFinal.countnosuchnumberretry}}</td>
2918                       <td md-cell>{{hopperFinal.countdropretry}}</td>
2919                       <td md-cell>{{hopperFinal.countabandonedretry}}</td>
2920                       <td md-cell>{{hopperFinal.countmachineretry}}</td>
2921                       <td md-cell>{{hopperFinal.countagentrejectretry}}</td>
2922                       <td md-cell>{{ hopperFinal.starttime | formatdate }}</td>
2923                       <td md-cell>{{ hopperFinal.endtime | formatdate }}</td>
2924                       <td md-cell>{{hopperFinal.disposition}}</td>
2925                       <td
2926                         md-cell
2927                         class="actions"
2928                         ng-if="!vm_dc.crudPermissions.readOnly"
2929                       >
2930                         <md-menu>
2931                           <md-button
2932                             class="md-icon-button"
2933                             aria-label="More"
2934                             translate
2935                             translate-attr-aria-label="MOTIONDIALER.MORE"
2936                             ng-click="$mdOpenMenu($event)"
2937                           >
2938                             <md-icon
2939                               md-font-icon="icon-dots-vertical"
2940                             ></md-icon>
2941                           </md-button>
2942
2943                           <md-menu-content width="3">
2944                             <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">
2945                               <md-button
2946                                 ng-click="vm_dc.moveConfirm(hopperFinal, $event)"
2947                                 translate="MOTIONDIALER.MOVE_HOPPERFINAL"
2948                               >
2949                                 Move HopperFinal
2950                               </md-button>
2951                             </md-menu-item>
2952                           </md-menu-content>
2953                         </md-menu>
2954                       </td>
2955                     </tr>
2956                     <tr
2957                       md-row
2958                       ng-if="!vm_dc.ivrCampaignHopperFinals.rows.length"
2959                     >
2960                       <td md-cell colspan="28">
2961                         <div layout="row" layout-align="center center">
2962                           <span
2963                             class="text-boxed-light"
2964                             translate="MOTIONDIALER.NO_HOPPERFINAL_AVAILABLE"
2965                             >No hopperfinal available</span
2966                           >
2967                         </div>
2968                       </td>
2969                     </tr>
2970                   </tbody>
2971                 </table>
2972               </md-table-container>
2973               <md-table-pagination
2974                 md-label="{page: '{{'MOTIONDIALER.PAGE' | translate}}:', rowsPerPage: '{{'MOTIONDIALER.ROWSPERPAGE' | translate}}:', of: '{{'MOTIONDIALER.OF' | translate}}'}"
2975                 md-limit="vm_dc.query.limit"
2976                 md-limit-options="[10, 15, 20, 50, 100, 250]"
2977                 md-page="vm_dc.query.page"
2978                 md-total="{{vm_dc.ivrCampaignHopperFinals.count}}"
2979                 md-on-paginate="vm_dc.getIvrCampaignHopperFinals"
2980                 md-page-select
2981               ></md-table-pagination>
2982             </div>
2983           </div>
2984         </md-tab-body>
2985       </md-tab>
2986       <md-tab>
2987         <md-tab-label>
2988           <span translate="MOTIONDIALER.BLACKLIST">BLACKLIST</span>
2989         </md-tab-label>
2990         <md-tab-body>
2991           <div
2992             class="ivrCampaign-detail-form-container hopperblacks md-background-bg md-whiteframe-1dp"
2993           >
2994             <div
2995               ng-controller="IvrCampaignHopperBlacksController as vm_dc"
2996               ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)"
2997             >
2998               <md-toolbar
2999                 class="md-table-toolbar md-default"
3000                 ng-hide="vm_dc.selectedIvrCampaignHopperBlacks.length"
3001               >
3002                 <div class="md-toolbar-tools">
3003                   <span class="md-subhead" translate="MOTIONDIALER.HOPPERBLACKS"
3004                     >HopperBlacks</span
3005                   >
3006                   <ms-search-bar
3007                     on-search="vm_dc.query.filter = query"
3008                     on-collapse="vm_dc.query.filter = undefined"
3009                     debounce="300"
3010                     direction="down"
3011                   ></ms-search-bar>
3012                   <div flex></div>
3013                 </div>
3014               </md-toolbar>
3015               <md-toolbar
3016                 class="md-table-toolbar md-accent"
3017                 ng-show="vm_dc.selectedIvrCampaignHopperBlacks.length"
3018               >
3019                 <div class="md-toolbar-tools">
3020                   <span class="md-subhead"
3021                     >{{vm_dc.selectedIvrCampaignHopperBlacks.length}}
3022                     {{vm_dc.selectedIvrCampaignHopperBlacks.length > 1 ? 'items'
3023                     : 'item'}} selected</span
3024                   >
3025                   <div flex></div>
3026                   <button
3027                     class="md-icon-button"
3028                     ng-csv="vm_dc.exportSelectedIvrCampaignHopperBlacks"
3029                     csv-label="true"
3030                     filename="ivrCampaigns.csv"
3031                   >
3032                     <md-icon md-font-icon="icon-file-excel"></md-icon>
3033                   </button>
3034                 </div>
3035               </md-toolbar>
3036               <md-table-container class="font-size-12">
3037                 <table
3038                   md-table
3039                   md-row-select
3040                   multiple
3041                   ng-model="vm_dc.selectedIvrCampaignHopperBlacks"
3042                   md-progress="vm_dc.promise"
3043                 >
3044                   <thead
3045                     md-head
3046                     md-order="vm_dc.query.sort"
3047                     md-on-reorder="vm_dc.getIvrCampaignHopperBlacks"
3048                   >
3049                     <tr md-row>
3050                       <th md-column md-order-by="ContactId">
3051                         {{ 'MOTIONDIALER.CONTACTID' | translate }}
3052                       </th>
3053                       <th md-column md-order-by="phone">
3054                         {{ 'MOTIONDIALER.PHONE' | translate }}
3055                       </th>
3056                       <th md-column width="10px"></th>
3057                     </tr>
3058                   </thead>
3059                   <tbody md-body>
3060                     <tr
3061                       md-row
3062                       md-select="hopperBlack"
3063                       md-select-id="id"
3064                       ng-repeat="hopperBlack in vm_dc.ivrCampaignHopperBlacks.rows"
3065                     >
3066                       <td md-cell>{{hopperBlack.ContactId}}</td>
3067                       <td md-cell>{{hopperBlack.phone}}</td>
3068                       <td md-cell class="actions"></td>
3069                     </tr>
3070                     <tr
3071                       md-row
3072                       ng-if="!vm_dc.ivrCampaignHopperBlacks.rows.length"
3073                     >
3074                       <td md-cell colspan="4">
3075                         <div layout="row" layout-align="center center">
3076                           <span
3077                             class="text-boxed-light"
3078                             translate="MOTIONDIALER.NO_HOPPERBLACK_AVAILABLE"
3079                             >No hopperblack available</span
3080                           >
3081                         </div>
3082                       </td>
3083                     </tr>
3084                   </tbody>
3085                 </table>
3086               </md-table-container>
3087               <md-table-pagination
3088                 md-label="{page: '{{'MOTIONDIALER.PAGE' | translate}}:', rowsPerPage: '{{'MOTIONDIALER.ROWSPERPAGE' | translate}}:', of: '{{'MOTIONDIALER.OF' | translate}}'}"
3089                 md-limit="vm_dc.query.limit"
3090                 md-limit-options="[10, 15, 20, 50, 100, 250]"
3091                 md-page="vm_dc.query.page"
3092                 md-total="{{vm_dc.ivrCampaignHopperBlacks.count}}"
3093                 md-on-paginate="vm_dc.getIvrCampaignHopperBlacks"
3094                 md-page-select
3095               ></md-table-pagination>
3096             </div>
3097           </div>
3098         </md-tab-body>
3099       </md-tab>
3100     </md-tabs>
3101   </div>
3102   <!-- / CONTENT -->
3103 </div>