1 <div id="voice-internalroute" 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-internalroutes-button md-icon-button" aria-label="Go to internalroutes" ng-click="vm.gotoInternalRoutes()" translate translate-attr-aria-label="VOICE.GO_TO_INTERNALROUTES">
7 <md-icon md-font-icon="icon-arrow-left"></md-icon>
10 <div layout="row" layout-align="start center">
12 <div ng-if="vm.internalroute.userpic" class="internalroute-image" hide-xs>
13 <img ng-src="api/users/{{vm.internalroute.id}}/avatar">
16 <div ng-if="!vm.internalroute.userpic" class="internalroute-image" hide-xs>
17 <img ng-src="assets/images/business/internalroutes.jpg">
20 <div layout="column" layout-align="start start">
22 #{{vm.internalroute.id}} {{vm.internalroute.name}}
24 <div class="subtitle secondary-text">
25 <span translate="VOICE.CREATED_AT"></span> <span>{{vm.internalroute.createdAt | date:'medium'}}</span>
32 <md-button type="submit" ng-click="vm.saveInternalRoute()" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (actionsForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">
43 <md-tabs md-selected="vm.selectedTab" md-dynamic-height>
46 <span translate="VOICE.SETTINGS">SETTINGS</span>
50 <div class="internalroute-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="VOICE.GENERAL">GENERAL</div>
54 <form name="generalForm" novalidate>
55 <md-input-container class="md-block">
56 <label translate="VOICE.PHONENUMBER">PhoneNumber</label>
57 <input type="text" name="exten" ng-model="vm.internalroute.exten" required autofocus>
58 <div ng-messages="generalForm.exten.$error" ng-show="generalForm.exten.$touched" role="alert">
59 <div ng-message="required">
60 <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>
64 <md-input-container class="md-block">
65 <label translate="VOICE.CONTEXT">Context</label>
66 <md-select ng-model="vm.internalroute.context" required>
67 <md-option ng-value="context.name" ng-repeat="context in vm.contexts">{{ context.name }}</md-option>
69 <div ng-messages="generalForm.context.$error" ng-show="generalForm.context.$touched" role="alert">
70 <div ng-message="required">
71 <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>
75 <md-input-container class="md-block">
76 <label translate="VOICE.DESCRIPTION">Description</label>
77 <input type="text" name="description" ng-model="vm.internalroute.description">
78 <div ng-messages="generalForm.description.$error" ng-show="generalForm.description.$touched" role="alert">
79 <div ng-message="required">
80 <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>
91 <span translate="VOICE.ACTIONS">ACTIONS</span>
95 <div class="internalroute-detail-form-container actions md-background-bg md-whiteframe-1dp">
96 <div ng-controller="InternalRouteActionsController as vm_ac" ng-init="vm_ac.init(vm.internalroute)" class="content" md-background-bg layout="row" layout-align="start start">
98 <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20">
99 <!-- SIDENAV CONTENT -->
100 <md-list class="no-padding">
101 <md-subheader class="md-no-sticky">
107 <md-divider></md-divider>
108 <md-list ng-sortable="vm_ac.list">
109 <md-list-item class="handle" ng-repeat="a in vm_ac.apps">
110 <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>
111 <p class="text-truncate" translate="VOICE.{{(a.alias || a.appType) | uppercase}}">{{a.alias || a.appType}}</p>
114 <!-- / SIDENAV CONTENT -->
119 <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="75">
120 <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedInternalRouteApps.length">
121 <div class="md-toolbar-tools">
122 <span class="md-subhead">Drag & Drop Routing</span>
124 <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>
127 <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedInternalRouteApps.length">
128 <div class="md-toolbar-tools">
129 <span class="md-subhead">{{vm_ac.selectedInternalRouteApps.length}} {{vm_ac.selectedInternalRouteApps.length > 1 ? 'items' : 'item'}} selected</span>
131 <md-button class="md-icon-button" ng-click="vm_ac.deleteSelectedInternalRouteApps($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">
132 <md-icon md-font-icon="icon-delete"></md-icon>
137 <!-- QUEUES TABLE -->
139 <table md-table md-row-select multiple ng-model="vm_ac.selectedInternalRouteApps">
142 <th md-column width="10px"></th>
143 <th md-column>Type</th>
144 <th md-column>Appdata</th>
145 <th md-column>Interval</th>
146 <th md-column width="10px"></th>
147 <th md-column width="10px"></th>
150 <tbody md-body ng-sortable="vm_ac.applications">
151 <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.internalrouteApps.rows | filter: vm_ac.query.filter">
153 <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>
155 <td md-cell ng-click="vm_ac.editInternalRouteApp($event, $index)">{{app.app.toLowerCase() === 'agi' ? 'Cally-Square' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === 'custom'">*</span></td>
156 <td md-cell ng-click="vm_ac.editInternalRouteApp($event, $index)"><span class="text-truncate" style="width:200px">{{app.appdata}}</span></td>
157 <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? 'From List' : app.interval}}</td>
159 <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">
160 <md-icon md-font-icon="icon-timer"></md-icon>
162 {{app.IntervalId ? 'From List' : (app.interval === '*,*,*,*' ? 'Always' : 'Custom')}}
166 <td md-cell class="actions">
168 <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE">
169 <md-icon md-font-icon="icon-dots-vertical" ng-click="$mdOpenMenu($event)"></md-icon>
172 <md-menu-content width="3">
174 <md-button ng-click="vm_ac.editInternalRouteApp($event, $index)" translate="VOICE.EDIT_APP">
179 <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">
184 <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">
192 <tr md-row ng-hide="vm_ac.internalrouteApps.rows.length">
193 <td md-cell colspan="6">
194 <span class="text-boxed-ligth" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>
200 <td md-cell colspan="7">
201 <span><em translate="VOICE.LEGEND.CUSTOM_APPLICATION">(*) - Custom application.</em></span>
206 </md-table-container>
207 <!-- / QUEUES TABLE -->
211 <!-- / NO RESULTS -->