1 <md-dialog class="queueCampaign-dialog" aria-label="New QueueCampaign">
2 <form name="queueCampaignForm" class="md-inline-form" novalidate>
3 <md-toolbar class="md-accent md-hue-2">
4 <div class="md-toolbar-tools" layout="row" layout-align="space-between center">
5 <span class="title">{{ vm.title | translate }}</span>
6 <md-button class="md-icon-button" ng-click="vm.closeDialog()">
7 <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>
12 <md-dialog-content ms-scroll>
13 <div class="error-list">
14 <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">
16 <span class="message">{{error.message}}</span>
17 <span class="type">({{error.type}})</span>
19 <md-button class="md-icon-button">
20 <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>
24 <md-input-container class="md-block">
25 <label translate="MOTIONDIALER.NAME">Name</label>
26 <input type="text" name="name" ng-model="vm.queueCampaign.name" ng-pattern="/^[A-Za-z0-9\.\_]+$/i" required autofocus ng-disabled="!vm.newQueueCampaign">
27 <div ng-messages="queueCampaignForm.name.$error" ng-show="queueCampaignForm.name.$touched" role="alert">
28 <div ng-message="required">
29 <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>
31 <div ng-message="pattern">
32 <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: '/^[A-Za-z0-9\.\_]+$/i' }">Name must be valid pattern </span>
36 <md-input-container class="md-block">
37 <md-switch ng-model="vm.queueCampaign.dialActive" aria-label="Active"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>
39 <md-input-container class="md-block">
40 <label translate="MOTIONDIALER.TRUNK">Trunk</label>
41 <md-select ng-model="vm.queueCampaign.TrunkId" required>
42 <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks">{{ TrunkId.name }}</md-option>
44 <div ng-messages="queueCampaignForm.TrunkId.$error" ng-show="queueCampaignForm.TrunkId.$touched" role="alert">
45 <div ng-message="required">
46 <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>
50 <md-input-container class="md-block">
51 <label translate="MOTIONDIALER.INTERVAL">Interval</label>
52 <md-select ng-model="vm.queueCampaign.IntervalId" required>
53 <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval">{{ IntervalId.name }}</md-option>
55 <div ng-messages="queueCampaignForm.IntervalId.$error" ng-show="queueCampaignForm.IntervalId.$touched" role="alert">
56 <div ng-message="required">
57 <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>
61 <md-input-container class="md-block">
62 <label translate="MOTIONDIALER.METHOD">Method</label>
63 <md-select ng-model="vm.queueCampaign.dialMethod" required>
64 <md-option ng-value="'progressive'">Progressive</md-option>
65 <md-option ng-value="'power'">PowerDialing</md-option>
66 <md-option ng-value="'predictive'">Predictive</md-option>
68 <div class="hint"><span translate="MOTIONDIALER.HELP.METHOD"></span></div>
69 <div ng-messages="queueCampaignForm.dialMethod.$error" ng-show="queueCampaignForm.dialMethod.$touched" role="alert">
70 <div ng-message="required">
71 <span translate="MOTIONDIALER.ERRORS.METHOD_REQUIRED">Method field is required</span>
75 <md-input-container ng-if="vm.queueCampaign.dialMethod == 'power'" class="md-block">
76 <span translate="MOTIONDIALER.POWERLEVEL">PowerLevel</span>
77 <div class="hint"><span translate="MOTIONDIALER.HELP.POWERLEVEL"></span></div>
78 <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPowerLevel" min="1" max="10" step="0.1" class="md-accent">
80 <md-input-container ng-if="vm.queueCampaign.dialMethod == 'predictive'" class="md-block">
81 <label translate="MOTIONDIALER.PREDICTIVEOPTIMIZATION">PredictiveOptimization</label>
82 <md-select ng-model="vm.queueCampaign.dialPredictiveOptimization">
84 <md-option ng-value="'agentBusyFactor'"> {{ 'MOTIONDIALER.AGENTBUSYFACTOR' | translate }}</md-option>
86 <md-option ng-value="'dropRate'"> {{ 'MOTIONDIALER.DROPRATE' | translate }}</md-option>
88 <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATION"></span></div>
89 <div ng-messages="queueCampaignForm.dialPredictiveOptimization.$error" ng-show="queueCampaignForm.dialPredictiveOptimization.$touched" role="alert">
90 <div ng-message="required">
91 <span translate="MOTIONDIALER.ERRORS.PREDICTIVEOPTIMIZATION_REQUIRED">PredictiveOptimization field is required</span>
95 <md-input-container ng-if="vm.queueCampaign.dialMethod == 'predictive'" class="md-block">
96 <span translate="MOTIONDIALER.PREDICTIVEOPTIMIZATIONPERCENTAGE">PredictiveOptimizationPercentage</span>
97 <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATIONPERCENTAGE"></span></div>
98 <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveOptimizationPercentage" min="1" max="95" step="0.1" class="md-accent">
100 <md-input-container ng-if="vm.queueCampaign.dialMethod == 'predictive'" class="md-block">
101 <span translate="MOTIONDIALER.PREDICTIVEINTERVAL">PredictiveInterval</span>
102 <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEINTERVAL"></span></div>
103 <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveInterval" min="5" max="30" step="1" class="md-accent">
104 </md-input-container>
105 <md-input-container ng-if="vm.queueCampaign.dialMethod != 'preview'" class="md-block">
106 <label translate="MOTIONDIALER.MAXCONCURRENTCALLS">MaxConcurrentCalls</label>
107 <input type="number" name="dialLimitQueue" ng-model="vm.queueCampaign.dialLimitQueue" min="0" max="9999" required>
108 <div class="hint"><span translate="MOTIONDIALER.HELP.MAXCONCURRENTCALLS"></span></div>
109 <div ng-messages="queueCampaignForm.dialLimitQueue.$error" ng-show="queueCampaignForm.dialLimitQueue.$touched" role="alert">
110 <div ng-message="required">
111 <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_REQUIRED">MaxConcurrentCalls field is required</span>
114 </md-input-container>
115 <md-input-container class="md-block">
116 <label translate="MOTIONDIALER.DESCRIPTION">Description</label>
117 <input type="text" name="description" ng-model="vm.queueCampaign.description">
118 <div ng-messages="queueCampaignForm.description.$error" ng-show="queueCampaignForm.description.$touched" role="alert">
119 <div ng-message="required">
120 <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>
123 </md-input-container>
125 <div class="error-list">
126 <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">
128 <span class="message">{{error.message}}</span>
129 <span class="type">({{error.type}})</span>
131 <md-button class="md-icon-button">
132 <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>
138 <md-dialog-actions layout="row" layout-align="space-between center">
139 <div layout="row" layout-align="start center">
140 <md-button type="submit" ng-if="!vm.newQueueCampaign" ng-click="vm.saveQueueCampaign()" class="send-button md-accent md-raised" ng-disabled="queueCampaignForm.$invalid || queueCampaignForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">
144 <md-button type="submit" ng-if="vm.newQueueCampaign" ng-click="vm.addNewQueueCampaign()" class="send-button md-accent md-raised" ng-disabled="queueCampaignForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_QUEUECAMPAIGN" translate-attr-aria-label="MOTIONDIALER.ADD_QUEUECAMPAIGN">
149 <md-button class="md-icon-button" ng-if="!vm.newQueueCampaign" ng-click="vm.deleteQueueCampaign($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">
150 <md-icon md-font-icon="icon-delete"></md-icon>
151 <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>