1 <div id="tools-trigger" class="page-layout simple tabbed" layout="column">
4 <div class="header md-accent-bg" layout="row" layout-align="start center">
5 <div class="white-fg" layout="row" layout-align="start center" flex>
6 <md-button class="goto-triggers-button md-icon-button" aria-label="Go to triggers" ng-click="vm.gotoTriggers()" translate translate-attr-aria-label="TOOLS.GO_TO_TRIGGERS">
7 <md-icon md-font-icon="icon-arrow-left"></md-icon>
10 <div layout="row" layout-align="start center">
12 <div ng-if="vm.trigger.userpic" class="trigger-image" hide-xs>
13 <img ng-src="api/users/{{vm.trigger.id}}/avatar">
16 <div ng-if="!vm.trigger.userpic" class="trigger-image" hide-xs>
17 <img ng-src="assets/images/business/triggers.jpg">
20 <div layout="column" layout-align="start start">
22 #{{vm.trigger.id}} {{vm.trigger.name}}
24 <div class="subtitle secondary-text">
25 <span translate="TOOLS.CREATED_AT"></span> <span>{{vm.trigger.createdAt | date:'medium'}}</span>
32 <md-button type="submit" ng-click="vm.saveTrigger()" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (allconditionsForm.$invalid) || (anyconditionsForm.$invalid) || (actionsForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">
43 <md-tabs md-selected="vm.selectedTab" md-dynamic-height>
46 <span translate="TOOLS.SETTINGS">SETTINGS</span>
50 <div class="trigger-detail-form-container general md-background-bg md-whiteframe-1dp">
51 <div class="pb-16" layout="row" layout-align="start center">
52 <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>
54 <form name="generalForm" novalidate>
55 <md-input-container class="md-block">
56 <label translate="TOOLS.NAME">Name</label>
57 <input type="text" name="name" ng-model="vm.trigger.name" required autofocus>
58 <div ng-messages="generalForm.name.$error" ng-show="generalForm.name.$touched" role="alert">
59 <div ng-message="required">
60 <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>
64 <md-input-container class="md-block">
65 <label translate="TOOLS.CHANNEL">Channel</label>
66 <md-select ng-model="vm.trigger.channel" required ng-disabled="true">
68 <md-option ng-value="'voice'"> {{ 'TOOLS.VOICE' | translate }}</md-option>
70 <div ng-messages="generalForm.channel.$error" ng-show="generalForm.channel.$touched" role="alert">
71 <div ng-message="required">
72 <span translate="TOOLS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>
76 <md-input-container class="md-block">
77 <md-switch ng-model="vm.trigger.status" aria-label="Status"><span translate="TOOLS.STATUS">Status</span></md-switch>
79 <md-input-container class="md-block">
80 <label translate="TOOLS.DESCRIPTION">Description</label>
81 <input type="text" name="description" ng-model="vm.trigger.description">
82 <div ng-messages="generalForm.description.$error" ng-show="generalForm.description.$touched" role="alert">
83 <div ng-message="required">
84 <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>
95 <span translate="TOOLS.CONDITIONS&ACTIONS">CONDITIONS&ACTIONS</span>
99 <div class="trigger-detail-form-container allconditions md-background-bg md-whiteframe-1dp">
100 <div ng-controller="TriggerAllConditionsController as vm_dc" ng-init="vm_dc.init(vm.trigger)">
101 <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedTriggerAllConditions.length">
102 <div class="md-toolbar-tools">
103 <span class="md-subhead" translate="TOOLS.ALLCONDITIONS">AllConditions</span>
105 <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300"></ms-search-bar>
106 <md-button class="md-icon-button" ng-click="vm_dc.createOrEditTriggerAllCondition($event)" aria-label="add allCondition" translate translate-attr-label="TOOLS.ADD_ALLCONDITION">
107 <md-icon md-font-icon="icon-plus"></md-icon>
111 <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedTriggerAllConditions.length">
112 <div class="md-toolbar-tools">
113 <span class="md-subhead">{{vm_dc.selectedTriggerAllConditions.length}} {{vm_dc.selectedTriggerAllConditions.length > 1 ? 'items' : 'item'}} selected</span>
115 <md-button class="md-icon-button" ng-click="vm_dc.deleteSelectedTriggerAllConditions($event)" aria-label="delete selected" translate translate-attr-label="TRIGGERS.DELETE_SELECTED">
116 <md-icon md-font-icon="icon-delete"></md-icon>
121 <table md-table md-row-select multiple ng-model="vm_dc.selectedTriggerAllConditions" md-progress="vm_dc.promise">
122 <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getTriggerAllConditions">
124 <th md-column md-order-by="id">{{ 'TOOLS.ID' | translate }}</th>
125 <th md-column md-order-by="field">{{ 'TOOLS.FIELD' | translate }}</th>
126 <th md-column md-order-by="operator">{{ 'TOOLS.OPERATOR' | translate }}</th>
127 <th md-column md-order-by="value">{{ 'TOOLS.VALUE' | translate }}</th>
128 <th md-column md-order-by="createdAt">{{ 'TOOLS.CREATED_AT' | translate }}</th>
129 <th md-column width="10px"></th>
133 <tr md-row md-select="allCondition" md-select-id="id" ng-repeat="allCondition in vm_dc.triggerAllConditions.rows">
134 <td ng-click="vm_dc.createOrEditTriggerAllCondition($event, allCondition)" md-cell>{{allCondition.id}}</td>
135 <td ng-click="vm_dc.createOrEditTriggerAllCondition($event, allCondition)" md-cell>{{ 'TOOLS.' + vm_dc.arrayfield[allCondition.field].option | uppercase | translate }}</td>
136 <td ng-click="vm_dc.createOrEditTriggerAllCondition($event, allCondition)" md-cell>{{ 'TOOLS.' + vm_dc.arrayoperator[allCondition.operator].option | uppercase | translate }}</td>
137 <td ng-click="vm_dc.createOrEditTriggerAllCondition($event, allCondition)" ng-if="allCondition.field == 'queue'" md-cell>{{ value = vm_dc.queues[allCondition.value]; value.name }}</td>
138 <td ng-click="vm_dc.createOrEditTriggerAllCondition($event, allCondition)" ng-if="allCondition.field == 'routeId'" md-cell>{{ value = vm_dc.outboundRoutes[allCondition.value]; value.exten }}</td>
139 <td ng-click="vm_dc.createOrEditTriggerAllCondition($event, allCondition)" ng-if="allCondition.field == 'lastevent'" md-cell>{{ vm_dc.arrayvalue[allCondition.value].option }}</td>
140 <td ng-click="vm_dc.createOrEditTriggerAllCondition($event, allCondition)" md-cell>{{allCondition.createdAt | date:'medium'}}</td>
141 <td md-cell class="actions">
143 <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE">
144 <md-icon md-font-icon="icon-dots-vertical" ng-click="$mdOpenMenu($event)"></md-icon>
147 <md-menu-content width="3">
149 <md-button ng-click="vm_dc.createOrEditTriggerAllCondition($event, allCondition)" translate="TOOLS.EDIT_ALLCONDITION">
154 <md-button ng-click="vm_dc.deleteConfirm(allCondition, $event)" translate="TOOLS.DELETE_ALLCONDITION">
162 <tr md-row ng-if="!vm_dc.triggerAllConditions.rows.length">
163 <td md-cell colspan="9">
164 <span class="text-boxed-ligth" translate="TOOLS.NO_ALLCONDITION_AVAILABLE">No allcondition available</span>
169 </md-table-container>
170 <md-table-pagination md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20]" md-page="vm_dc.query.page" md-total="{{vm_dc.triggerAllConditions.count}}" md-on-paginate="vm_dc.getTriggerAllConditions" md-page-select></md-table-pagination>
174 <div class="trigger-detail-form-container anyconditions md-background-bg md-whiteframe-1dp">
175 <div ng-controller="TriggerAnyConditionsController as vm_dc" ng-init="vm_dc.init(vm.trigger)">
176 <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedTriggerAnyConditions.length">
177 <div class="md-toolbar-tools">
178 <span class="md-subhead" translate="TOOLS.ANYCONDITIONS">AnyConditions</span>
180 <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300"></ms-search-bar>
181 <md-button class="md-icon-button" ng-click="vm_dc.createOrEditTriggerAnyCondition($event)" aria-label="add anyCondition" translate translate-attr-label="TOOLS.ADD_ANYCONDITION">
182 <md-icon md-font-icon="icon-plus"></md-icon>
186 <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedTriggerAnyConditions.length">
187 <div class="md-toolbar-tools">
188 <span class="md-subhead">{{vm_dc.selectedTriggerAnyConditions.length}} {{vm_dc.selectedTriggerAnyConditions.length > 1 ? 'items' : 'item'}} selected</span>
190 <md-button class="md-icon-button" ng-click="vm_dc.deleteSelectedTriggerAnyConditions($event)" aria-label="delete selected" translate translate-attr-label="TRIGGERS.DELETE_SELECTED">
191 <md-icon md-font-icon="icon-delete"></md-icon>
196 <table md-table md-row-select multiple ng-model="vm_dc.selectedTriggerAnyConditions" md-progress="vm_dc.promise">
197 <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getTriggerAnyConditions">
199 <th md-column md-order-by="id">{{ 'TOOLS.ID' | translate }}</th>
200 <th md-column md-order-by="field">{{ 'TOOLS.FIELD' | translate }}</th>
201 <th md-column md-order-by="operator">{{ 'TOOLS.OPERATOR' | translate }}</th>
202 <th md-column md-order-by="value">{{ 'TOOLS.VALUE' | translate }}</th>
203 <th md-column md-order-by="createdAt">{{ 'TOOLS.CREATED_AT' | translate }}</th>
204 <th md-column width="10px"></th>
208 <tr md-row md-select="anyCondition" md-select-id="id" ng-repeat="anyCondition in vm_dc.triggerAnyConditions.rows">
209 <td ng-click="vm_dc.createOrEditTriggerAnyCondition($event, anyCondition)" md-cell>{{anyCondition.id}}</td>
210 <td ng-click="vm_dc.createOrEditTriggerAnyCondition($event, anyCondition)" md-cell>{{ 'TOOLS.' + vm_dc.arrayfield[anyCondition.field].option | uppercase | translate }}</td>
211 <td ng-click="vm_dc.createOrEditTriggerAnyCondition($event, anyCondition)" md-cell>{{ 'TOOLS.' + vm_dc.arrayoperator[anyCondition.operator].option | uppercase | translate }}</td>
212 <td ng-click="vm_dc.createOrEditTriggerAnyCondition($event, anyCondition)" ng-if="anyCondition.field == 'queue'" md-cell>{{ value = vm_dc.queues[anyCondition.value]; value.name }}</td>
213 <td ng-click="vm_dc.createOrEditTriggerAnyCondition($event, anyCondition)" ng-if="anyCondition.field == 'routeId'" md-cell>{{ value = vm_dc.outboundRoutes[anyCondition.value]; value.exten }}</td>
214 <td ng-click="vm_dc.createOrEditTriggerAnyCondition($event, anyCondition)" ng-if="anyCondition.field == 'lastevent'" md-cell>{{ vm_dc.arrayvalue[anyCondition.value].option }}</td>
215 <td ng-click="vm_dc.createOrEditTriggerAnyCondition($event, anyCondition)" md-cell>{{anyCondition.createdAt | date:'medium'}}</td>
216 <td md-cell class="actions">
218 <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE">
219 <md-icon md-font-icon="icon-dots-vertical" ng-click="$mdOpenMenu($event)"></md-icon>
222 <md-menu-content width="3">
224 <md-button ng-click="vm_dc.createOrEditTriggerAnyCondition($event, anyCondition)" translate="TOOLS.EDIT_ANYCONDITION">
229 <md-button ng-click="vm_dc.deleteConfirm(anyCondition, $event)" translate="TOOLS.DELETE_ANYCONDITION">
237 <tr md-row ng-if="!vm_dc.triggerAnyConditions.rows.length">
238 <td md-cell colspan="9">
239 <span class="text-boxed-ligth" translate="TOOLS.NO_ANYCONDITION_AVAILABLE">No anycondition available</span>
244 </md-table-container>
245 <md-table-pagination md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20]" md-page="vm_dc.query.page" md-total="{{vm_dc.triggerAnyConditions.count}}" md-on-paginate="vm_dc.getTriggerAnyConditions" md-page-select></md-table-pagination>
249 <div class="trigger-detail-form-container actions md-background-bg md-whiteframe-1dp">
250 <div ng-controller="TriggerActionsController as vm_dc" ng-init="vm_dc.init(vm.trigger)">
251 <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedTriggerActions.length">
252 <div class="md-toolbar-tools">
253 <span class="md-subhead" translate="TOOLS.ACTIONS">Actions</span>
255 <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300"></ms-search-bar>
256 <md-button class="md-icon-button" ng-click="vm_dc.createOrEditTriggerAction($event)" aria-label="add action" translate translate-attr-label="TOOLS.ADD_ACTION">
257 <md-icon md-font-icon="icon-plus"></md-icon>
261 <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedTriggerActions.length">
262 <div class="md-toolbar-tools">
263 <span class="md-subhead">{{vm_dc.selectedTriggerActions.length}} {{vm_dc.selectedTriggerActions.length > 1 ? 'items' : 'item'}} selected</span>
265 <md-button class="md-icon-button" ng-click="vm_dc.deleteSelectedTriggerActions($event)" aria-label="delete selected" translate translate-attr-label="TRIGGERS.DELETE_SELECTED">
266 <md-icon md-font-icon="icon-delete"></md-icon>
271 <table md-table md-row-select multiple ng-model="vm_dc.selectedTriggerActions" md-progress="vm_dc.promise">
272 <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getTriggerActions">
274 <th md-column md-order-by="id">{{ 'TOOLS.ID' | translate }}</th>
275 <th md-column md-order-by="action">{{ 'TOOLS.ACTION' | translate }}</th>
276 <th md-column md-order-by="data1">{{ 'TOOLS.TYPE' | translate }}</th>
277 <th md-column md-order-by="data2">{{ 'TOOLS.INFO' | translate }}</th>
278 <th md-column md-order-by="createdAt">{{ 'TOOLS.CREATED_AT' | translate }}</th>
279 <th md-column width="10px"></th>
283 <tr md-row md-select="action" md-select-id="id" ng-repeat="action in vm_dc.triggerActions.rows">
284 <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" md-cell>{{action.id}}</td>
285 <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" md-cell>{{ 'TOOLS.' + vm_dc.arrayaction[action.action].option | uppercase | translate }}</td>
286 <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == 'browser'" md-cell>{{ vm_dc.browserValues[action.data1].option }}</td>
287 <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == 'contactManager'" md-cell>{{ data1 = vm_dc.lists[action.data1]; data1.name }}</td>
288 <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == 'urlForward'" md-cell>{{ vm_dc.urlForwardValues[action.data1].option }}</td>
289 <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="!action.data2" md-cell>{{action.data2}}</td>
290 <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == 'urlForward'" md-cell>{{action.data2}}</td>
291 <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == 'integration'" md-cell>{{ vm_dc.integrationValues[action.data1].option }}</td>
292 <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == 'integration' && action.data1 == 'zendesk'" md-cell>{{ data2 = vm_dc.zendeskAccounts[action.data2]; data2.name }}</td>
293 <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == 'integration' && action.data1 == 'salesforce'" md-cell>{{ data2 = vm_dc.salesforceAccounts[action.data2]; data2.name }}</td>
294 <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == 'integration' && action.data1 == 'sugarcrm'" md-cell>{{ data2 = vm_dc.sugarcrmAccounts[action.data2]; data2.name }}</td>
295 <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == 'integration' && action.data1 == 'freshdesk'" md-cell>{{ data2 = vm_dc.freshdeskAccounts[action.data2]; data2.name }}</td>
296 <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == 'motionbar'" md-cell>{{ vm_dc.motionbarValues[action.data1].option }}</td>
297 <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == 'motionbar' && action.data1 == '1'" md-cell>{{action.data2}}</td>
298 <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == 'motionbar' && action.data1 == '2'" md-cell>{{action.data2}}</td>
299 <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == 'motionbar' && action.data1 == '0'" md-cell>{{ data2 = vm_dc.templates[action.data2]; data2.name }}</td>
300 <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == 'browser' && action.data1 == '0'" md-cell>{{ data2 = vm_dc.templates[action.data2]; data2.name }}</td>
301 <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == 'browser' && action.data1 == '1'" md-cell>{{action.data2}}</td>
302 <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" md-cell>{{action.createdAt | date:'medium'}}</td>
303 <td md-cell class="actions">
305 <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE">
306 <md-icon md-font-icon="icon-dots-vertical" ng-click="$mdOpenMenu($event)"></md-icon>
309 <md-menu-content width="3">
311 <md-button ng-click="vm_dc.createOrEditTriggerAction($event, action)" translate="TOOLS.EDIT_ACTION">
316 <md-button ng-click="vm_dc.deleteConfirm(action, $event)" translate="TOOLS.DELETE_ACTION">
324 <tr md-row ng-if="!vm_dc.triggerActions.rows.length">
325 <td md-cell colspan="26">
326 <span class="text-boxed-ligth" translate="TOOLS.NO_ACTION_AVAILABLE">No action available</span>
331 </md-table-container>
332 <md-table-pagination md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20]" md-page="vm_dc.query.page" md-total="{{vm_dc.triggerActions.count}}" md-on-paginate="vm_dc.getTriggerActions" md-page-select></md-table-pagination>