+++ /dev/null
-<div
- id="openchannel-openchannelAccount"
- class="page-layout simple tabbed"
- layout="column"
->
- <!-- HEADER -->
- <div class="header md-accent-bg" layout="row" layout-align="start center">
- <div class="white-fg" layout="row" layout-align="start center" flex>
- <md-button
- class="goto-openchannelAccounts-button md-icon-button"
- aria-label="Go to openchannelAccounts"
- ng-click="vm.gotoOpenchannelAccounts()"
- translate
- translate-attr-aria-label="OPENCHANNEL.GO_TO_OPENCHANNELACCOUNTS"
- >
- <md-icon md-font-icon="icon-arrow-left"></md-icon>
- </md-button>
-
- <div layout="row" layout-align="start center">
- <div class="openchannelAccount-image" hide-xs>
- <img ng-src="assets/images/business/openchannelAccounts.jpg" />
- </div>
-
- <div layout="column" layout-align="start start">
- <div class="h2">
- #{{vm.openchannelAccount.id}}
- <span ng-if="vm.openchannelAccount.name"
- >{{vm.openchannelAccount.name}}</span
- >
- </div>
- <div class="subtitle secondary-text">
- <span translate="APP.CREATED_AT"></span>
- <span>{{vm.openchannelAccount.createdAt | date:'medium'}}</span>
- </div>
- </div>
- </div>
- </div>
-
- <div ng-cloak>
- <md-button
- ng-click="vm.agentadddialog(vm.openchannelAccount, $event)"
- class="md-fab md-warn md-icon-button"
- aria-label="agentadd"
- >
- <md-tooltip
- ><span translate="OPENCHANNEL.AGENTADD_OPENCHANNELACCOUNT"></span
- ></md-tooltip>
- <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>
- </md-button>
- </div>
- <div>
- <md-button
- type="submit"
- ng-click="vm.saveOpenchannelAccount()"
- ng-if="vm.crudPermissions.canEdit"
- class="send-button md-accent md-raised"
- ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (proxyForm.$invalid) || (dispositionForm.$invalid) || (openchannelDispositionsForm.$invalid) || (openchannelCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)"
- translate="APP.SAVE"
- translate-attr-aria-label="APP.SAVE"
- >
- SAVE
- </md-button>
- </div>
- </div>
- <!-- / HEADER -->
-
- <!-- CONTENT -->
- <div class="content">
- <md-tabs
- md-selected="vm.selectedTab"
- md-stretch-tabs="always"
- flex
- layout-fill
- md-dynamic-height
- >
- <md-tab>
- <md-tab-label>
- <span translate="APP.SETTINGS">SETTINGS</span>
- </md-tab-label>
- <md-tab-body>
- <div
- class="openchannelAccount-detail-form-container general md-background-bg md-whiteframe-1dp"
- >
- <div class="pb-16" layout="row" layout-align="start center">
- <div class="h2 secondary-text" translate="APP.GENERAL">
- GENERAL
- </div>
- </div>
- <form name="generalForm" novalidate>
- <md-input-container class="md-block">
- <label translate="APP.NAME">Name</label>
- <input
- type="text"
- name="name"
- ng-model="vm.openchannelAccount.name"
- ng-required="true"
- autofocus
- disabled
- />
-
- <div
- ng-messages="generalForm['name'].$error"
- ng-show="generalForm['name'].$touched"
- role="alert"
- >
- <div ng-message="required">
- <span translate="APP.ERRORS.NAME_REQUIRED"
- >Name field is required</span
- >
- </div>
- </div>
- </md-input-container>
- <md-input-container class="md-block">
- <label translate="APP.KEY">key</label>
- <input
- type="text"
- name="key"
- ng-model="vm.openchannelAccount.key"
- md-maxlength="5"
- ng-required="true"
- ng-disabled="!vm.crudPermissions.canEdit"
- />
-
- <div
- ng-messages="generalForm['key'].$error"
- ng-show="generalForm['key'].$touched"
- role="alert"
- >
- <div ng-message="required">
- <span translate="APP.ERRORS.KEY_REQUIRED"
- >key field is required</span
- >
- </div>
- <div ng-message="md-maxlength">
- <span
- translate="APP.ERRORS.KEY_MAX_LENGTH"
- translate-values="{max: 5}"
- >key must have a maximum length equal to 5</span
- >
- </div>
- </div>
- </md-input-container>
- <md-input-container class="md-block">
- <label translate="OPENCHANNEL.REPLYURI">replyUri</label>
- <input
- type="url"
- name="replyUri"
- ng-model="vm.openchannelAccount.replyUri"
- ng-disabled="!vm.crudPermissions.canEdit"
- />
-
- <div class="hint">
- <span translate="OPENCHANNEL.HELP.REPLYURI"></span>
- </div>
- <div
- ng-messages="generalForm['replyUri'].$error"
- ng-show="generalForm['replyUri'].$touched"
- role="alert"
- >
- <div ng-message="required">
- <span translate="OPENCHANNEL.ERRORS.REPLYURI_REQUIRED"
- >replyUri field is required</span
- >
- </div>
- <div ng-message="url">
- <span translate="OPENCHANNEL.ERRORS.REPLYURI_MUST_VALID_URL"
- >replyUri must be a valid url http://www.xcally.com</span
- >
- </div>
- </div>
- </md-input-container>
- <md-input-container class="md-block">
- <label translate="APP.LIST">List</label>
- <md-select
- name="ListId"
- ng-model="vm.openchannelAccount.ListId"
- required
- ng-disabled="!vm.crudPermissions.canEdit"
- >
- <md-option
- ng-value="ListId.id"
- ng-repeat="ListId in vm.lists"
- ng-disabled="ListId.canSelect === false"
- >{{ ListId.name }}</md-option
- >
- </md-select>
- <div class="hint">
- <span translate="APP.HELP.LIST"></span>
- </div>
- <div
- ng-messages="generalForm['ListId'].$error"
- ng-show="generalForm['ListId'].$touched"
- role="alert"
- >
- <div ng-message="required">
- <span translate="APP.ERRORS.LIST_REQUIRED"
- >List field is required</span
- >
- </div>
- </div>
- </md-input-container>
- <md-input-container class="md-block">
- <label translate="APP.WAITFORTHEASSIGNEDAGENT"
- >WaitForTheAssignedAgent</label
- >
- <input
- type="number"
- name="waitForTheAssignedAgent"
- ng-model="vm.openchannelAccount.waitForTheAssignedAgent"
- min="1"
- max="2147483"
- ng-required="true"
- ng-disabled="!vm.crudPermissions.canEdit"
- />
-
- <div
- ng-messages="generalForm['waitForTheAssignedAgent'].$error"
- ng-show="generalForm['waitForTheAssignedAgent'].$touched"
- role="alert"
- >
- <div ng-message="required">
- <span
- translate="APP.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED"
- >WaitForTheAssignedAgent field is required</span
- >
- </div>
- <div ng-message="min">
- <span
- translate="APP.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO"
- >WaitForTheAssignedAgent must be a valid greater or equal
- than</span
- >
- <span>1</span>
- </div>
- <div ng-message="max">
- <span
- translate="APP.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO"
- >WaitForTheAssignedAgent must be a valid greater or equal
- than</span
- >
- <span>2147483</span>
- </div>
- </div>
- </md-input-container>
- <md-input-container class="md-block">
- <label translate="OPENCHANNEL.MAPKEY">MapKey</label>
- <md-select
- name="mapKey"
- ng-model="vm.openchannelAccount.mapKey"
- ng-disabled="!vm.crudPermissions.canEdit"
- >
- <md-option ng-value="''">None</md-option>
- <md-optgroup label="standard">
- <md-option
- ng-value="mapKey.columnName"
- ng-repeat="mapKey in vm.fields"
- ng-if="!mapKey.columnName.toString().startsWith('cf_')"
- ng-disabled="mapKey.canSelect === false"
- >
- {{ mapKey.displayName }}</md-option
- >
- </md-optgroup>
- <md-optgroup label="custom">
- <md-option
- ng-value="mapKey.columnName"
- ng-repeat="mapKey in vm.fields"
- ng-if="mapKey.columnName.toString().startsWith('cf_')"
- ng-disabled="mapKey.canSelect === false"
- >
- {{ mapKey.displayName }}</md-option
- >
- </md-optgroup>
- </md-select>
- <div
- ng-messages="generalForm['mapKey'].$error"
- ng-show="generalForm['mapKey'].$touched"
- role="alert"
- >
- <div ng-message="required">
- <span translate="OPENCHANNEL.ERRORS.MAPKEY_REQUIRED"
- >MapKey field is required</span
- >
- </div>
- </div>
- </md-input-container>
- <md-input-container class="md-block">
- <label translate="APP.DESCRIPTION">Description</label>
- <input
- type="text"
- name="description"
- ng-model="vm.openchannelAccount.description"
- ng-disabled="!vm.crudPermissions.canEdit"
- />
-
- <div
- ng-messages="generalForm['description'].$error"
- ng-show="generalForm['description'].$touched"
- role="alert"
- >
- <div ng-message="required">
- <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED"
- >Description field is required</span
- >
- </div>
- </div>
- </md-input-container>
- <md-input-container class="md-block">
- <label translate="OPENCHANNEL.RECEIVEURI">receiveUri</label>
- <div layout="row" layout-align="center center">
- <button
- class="md-button md-fab md-mini md-primary"
- ngclipboard
- data-clipboard-target="#copytoclipboard-receiveUri"
- ngclipboard-success="vm.alert({title: 'copied to clipboard', msg: e.text});"
- ngclipboard-error="vm.alert({title: 'error', msg: 'copy to clipboard failed'});"
- >
- <md-icon md-font-icon="icon-clipboard-text"></md-icon>
- </button>
- <input
- class="md-input"
- type="text"
- id="copytoclipboard-receiveUri"
- name="receiveUri"
- ng-value="vm.location + '/api/openchannel/accounts/' + vm.openchannelAccount.id + '/notify'"
- ng-readonly="true"
- />
- </div>
- <div class="hint">
- <span translate="OPENCHANNEL.HELP.RECEIVEURI"></span>
- </div>
- </md-input-container>
- </form>
- </div>
- <div
- class="openchannelAccount-detail-form-container notification md-background-bg md-whiteframe-1dp"
- >
- <div class="pb-16" layout="row" layout-align="start center">
- <div class="h2 secondary-text" translate="APP.NOTIFICATION">
- NOTIFICATION
- </div>
- </div>
- <form name="notificationForm" novalidate>
- <md-input-container class="md-block">
- <md-switch
- ng-model="vm.openchannelAccount.notificationSound"
- aria-label="notificationSound"
- ng-disabled="!vm.crudPermissions.canEdit"
- ><span translate="APP.NOTIFICATIONSOUND"
- >notificationSound</span
- ></md-switch
- >
- </md-input-container>
- <md-input-container class="md-block">
- <md-switch
- ng-model="vm.openchannelAccount.notificationShake"
- aria-label="notificationShake"
- ng-disabled="!vm.crudPermissions.canEdit"
- ><span translate="APP.NOTIFICATIONSHAKE"
- >notificationShake</span
- ></md-switch
- >
- </md-input-container>
- <div class="md-block">
- <label
- class="md-caption grey-fg"
- translate="APP.NOTIFICATIONTEMPLATE"
- >notificationTemplate</label
- >
- <textarea
- aria-label="notificationTemplate notificationTemplate"
- ckeditor="{ skin: 'office2013', language: 'en', allowedContent: true, extraPlugins: 'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64', toolbarGroups: [{ name: 'styles', groups: ['styles'] }, { name: 'clipboard', groups: ['undo'] }, { name: 'colors', groups: ['colors'] }, { name: 'basicstyles', groups: ['basicstyles'] }, { name: 'paragraph', groups: ['list', 'indent', 'align'] }, { name: 'mode' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: '8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt', removePlugins: 'magicline' }"
- ng-model="vm.openchannelAccount.notificationTemplate"
- ></textarea>
- </div>
- </form>
- </div>
- <div
- class="openchannelAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp"
- >
- <div class="pb-16" layout="row" layout-align="start center">
- <div class="h2 secondary-text" translate="APP.TRANSFER">
- TRANSFER
- </div>
- </div>
- <form name="transferForm" novalidate>
- <md-input-container class="md-block">
- <md-switch
- ng-model="vm.openchannelAccount.queueTransfer"
- aria-label="queueTransfer"
- ng-disabled="!vm.crudPermissions.canEdit"
- ><span translate="APP.QUEUETRANSFER">queueTransfer</span>
- </md-switch>
- </md-input-container>
- <md-input-container
- ng-if="vm.openchannelAccount.queueTransfer == true"
- class="md-block"
- >
- <label translate="APP.QUEUETRANSFERTIMEOUT"
- >queueTransferTimeout</label
- >
- <input
- type="number"
- name="queueTransferTimeout"
- ng-model="vm.openchannelAccount.queueTransferTimeout"
- min="1"
- max="2147483"
- ng-required="true"
- ng-disabled="!vm.crudPermissions.canEdit"
- />
-
- <div
- ng-messages="transferForm['queueTransferTimeout'].$error"
- ng-show="transferForm['queueTransferTimeout'].$touched"
- role="alert"
- >
- <div ng-message="required">
- <span translate="APP.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED"
- >queueTransferTimeout field is required</span
- >
- </div>
- <div ng-message="min">
- <span
- translate="APP.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO"
- >queueTransferTimeout must be a valid greater or equal
- than</span
- >
- <span>1</span>
- </div>
- <div ng-message="max">
- <span
- translate="APP.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO"
- >queueTransferTimeout must be a valid greater or equal
- than</span
- >
- <span>2147483</span>
- </div>
- </div>
- </md-input-container>
- <md-input-container class="md-block">
- <md-switch
- ng-model="vm.openchannelAccount.agentTransfer"
- aria-label="agentTransfer"
- ng-disabled="!vm.crudPermissions.canEdit"
- ><span translate="APP.AGENTTRANSFER">agentTransfer</span>
- </md-switch>
- </md-input-container>
- <md-input-container
- ng-if="vm.openchannelAccount.agentTransfer == true"
- class="md-block"
- >
- <label translate="APP.AGENTTRANSFERTIMEOUT"
- >agentTransferTimeout</label
- >
- <input
- type="number"
- name="agentTransferTimeout"
- ng-model="vm.openchannelAccount.agentTransferTimeout"
- min="1"
- max="2147483"
- ng-required="true"
- ng-disabled="!vm.crudPermissions.canEdit"
- />
-
- <div
- ng-messages="transferForm['agentTransferTimeout'].$error"
- ng-show="transferForm['agentTransferTimeout'].$touched"
- role="alert"
- >
- <div ng-message="required">
- <span translate="APP.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED"
- >agentTransferTimeout field is required</span
- >
- </div>
- <div ng-message="min">
- <span
- translate="APP.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO"
- >agentTransferTimeout must be a valid greater or equal
- than</span
- >
- <span>1</span>
- </div>
- <div ng-message="max">
- <span
- translate="APP.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO"
- >agentTransferTimeout must be a valid greater or equal
- than</span
- >
- <span>2147483</span>
- </div>
- </div>
- </md-input-container>
- </form>
- </div>
- </md-tab-body>
- </md-tab>
- <md-tab>
- <md-tab-label>
- <span translate="APP.ADVANCED">ADVANCED</span>
- </md-tab-label>
- <md-tab-body>
- <div
- class="openchannelAccount-detail-form-container proxy md-background-bg md-whiteframe-1dp"
- >
- <div class="pb-16" layout="row" layout-align="start center">
- <div class="h2 secondary-text" translate="APP.PROXY">PROXY</div>
- </div>
- <form name="proxyForm" novalidate>
- <md-input-container class="md-block">
- <label translate="APP.TOKEN">token</label>
- <input
- type="text"
- name="token"
- ng-model="vm.openchannelAccount.token"
- autofocus
- disabled
- />
-
- <div class="hint">
- <span translate="OPENCHANNEL.HELP.TOKEN"></span>
- </div>
- <div
- ng-messages="proxyForm['token'].$error"
- ng-show="proxyForm['token'].$touched"
- role="alert"
- >
- <div ng-message="required">
- <span translate="APP.ERRORS.TOKEN_REQUIRED"
- >token field is required</span
- >
- </div>
- </div>
- </md-input-container>
- </form>
- </div>
- <div
- class="openchannelAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp"
- >
- <div class="pb-16" layout="row" layout-align="start center">
- <div class="h2 secondary-text" translate="APP.DISPOSITION">
- DISPOSITION
- </div>
- </div>
- <form name="dispositionForm" novalidate>
- <md-input-container class="md-block">
- <md-switch
- ng-model="vm.openchannelAccount.mandatoryDisposition"
- aria-label="MandatoryDisposition"
- ng-disabled="!vm.crudPermissions.canEdit"
- ><span translate="APP.MANDATORYDISPOSITION"
- >MandatoryDisposition</span
- ></md-switch
- >
- </md-input-container>
- <md-input-container
- ng-if="vm.openchannelAccount.mandatoryDisposition"
- class="md-block"
- >
- <label translate="APP.MANDATORYDISPOSITIONPAUSEID"
- >MandatoryDispositionPauseId</label
- >
- <md-select
- name="mandatoryDispositionPauseId"
- ng-model="vm.openchannelAccount.mandatoryDispositionPauseId"
- required
- ng-disabled="!vm.crudPermissions.canEdit"
- >
- <md-option
- ng-value="mandatoryDispositionPauseId.id"
- ng-repeat="mandatoryDispositionPauseId in vm.pauses"
- ng-disabled="mandatoryDispositionPauseId.canSelect === false"
- >{{ mandatoryDispositionPauseId.name }}
- </md-option>
- </md-select>
- <div class="hint">
- <span translate="APP.HELP.MANDATORYDISPOSITIONPAUSEID"></span>
- </div>
- <div
- ng-messages="dispositionForm['mandatoryDispositionPauseId'].$error"
- ng-show="dispositionForm['mandatoryDispositionPauseId'].$touched"
- role="alert"
- >
- <div ng-message="required">
- <span
- translate="APP.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED"
- >MandatoryDispositionPauseId field is required</span
- >
- </div>
- </div>
- </md-input-container>
- </form>
- </div>
- </md-tab-body>
- </md-tab>
- <md-tab>
- <md-tab-label>
- <span translate="APP.DISPOSITIONS">DISPOSITIONS</span>
- </md-tab-label>
- <md-tab-body>
- <div
- ng-controller="OpenchannelAccountDispositionsController as vm_dc"
- ng-init="vm_dc.init(vm.openchannelAccount, vm.crudPermissions)"
- >
- <div layout="row">
- <div class="column" flex="20">
- <md-card class="mt-0">
- <md-card-content>
- <button
- layout-align="center center"
- md-mini-fab
- ng-click="vm_dc.query.level = null; vm_dc.getDispositions()"
- >
- <div layout="row" layout-align="start center">
- <md-icon md-font-icon="icon-refresh"></md-icon>
- <span class="ph-5"
- >{{ 'TOOLS.ALL_DISPOSITIONS' | translate }}</span
- >
- </div>
- </button>
- </md-card-content>
- </md-card>
- <md-card>
- <md-card-content>
- <md-input-container class="md-block" flex-gt-sm="">
- <label translate="TOOLS.SELECT_LEVEL"
- >Select a level</label
- >
- <md-select
- placeholder="{{ 'TOOLS.SELECT_LEVEL' | translate }}"
- ng-model="vm_dc.query.level"
- ng-change="vm_dc.getDispositions()"
- >
- <md-option ng-value="null"
- ><em translate="APP.ALL">All</em></md-option
- >
- <md-option
- ng-value="key"
- ng-repeat="(key, value) in vm_dc.levels"
- >{{ value }}</md-option
- >
- </md-select>
- </md-input-container>
- </md-card-content>
- </md-card>
- </div>
- <div
- class="openchannelAccount-detail-form-container openchanneldispositions md-background-bg md-whiteframe-1dp"
- flex="80"
- >
- <md-toolbar
- class="md-table-toolbar md-default"
- ng-hide="vm_dc.selectedOpenchannelAccountDispositions.length"
- >
- <div class="md-toolbar-tools">
- <span class="md-subhead" translate="APP.DISPOSITIONS"
- >Dispositions</span
- >
- <ms-search-bar
- on-search="vm_dc.query.filter = query"
- on-collapse="vm_dc.query.filter = undefined"
- debounce="300"
- direction="down"
- ></ms-search-bar>
- <div flex></div>
- <md-button
- ng-if="vm_dc.crudPermissions.canEdit"
- class="md-icon-button"
- ng-click="vm_dc.createOrEditDisposition($event)"
- aria-label="Add openchannel dispositions"
- translate
- translate-attr-label="OPENCHANNEL.ADD_DISPOSITION"
- >
- <md-icon md-font-icon="icon-plus"></md-icon>
- </md-button>
- </div>
- </md-toolbar>
- <md-toolbar
- class="md-table-toolbar md-accent"
- ng-show="vm_dc.selectedDispositions.length"
- >
- <div class="md-toolbar-tools">
- <span class="md-subhead"
- >{{vm_dc.selectedDispositions.length}}
- {{vm_dc.selectedDispositions.length > 1 ? 'items' :
- 'item'}} selected</span
- >
- <div flex></div>
- <button
- class="md-icon-button"
- ng-csv="vm_dc.exportSelectedDispositions"
- csv-label="true"
- filename="openchannelAccounts.csv"
- >
- <md-icon md-font-icon="icon-file-excel"></md-icon>
- </button>
- <md-button
- ng-if="vm_dc.crudPermissions.canDelete"
- class="md-icon-button"
- ng-click="vm_dc.deleteSelectedDispositions($event)"
- aria-label="delete selected"
- translate
- translate-attr-label="APP.DELETE_SELECTED"
- >
- <md-icon md-font-icon="icon-delete"></md-icon>
- </md-button>
- </div>
- </md-toolbar>
- <md-table-container>
- <table
- md-table
- md-row-select
- multiple
- ng-model="vm_dc.selectedDispositions"
- md-progress="vm_dc.promise"
- >
- <thead
- md-head
- md-order="vm_dc.query.sort"
- md-on-reorder="vm_dc.getDispositions"
- >
- <tr md-row>
- <th md-column md-order-by="id">
- {{ 'APP.ID' | translate }}
- </th>
- <th md-column md-order-by="level">
- {{ 'TOOLS.LEVEL' | translate }}
- </th>
- <th md-column md-order-by="name">
- {{ 'APP.NAME' | translate }}
- </th>
- <th md-column md-order-by="description">
- {{ 'APP.DESCRIPTION' | translate }}
- </th>
- <th md-column width="10px"></th>
- </tr>
- </thead>
- <tbody md-body>
- <tr md-row ng-hide="vm_dc.dispositions.rows.length">
- <td md-cell colspan="5">
- <div layout="row" layout-align="center center">
- <span translate="APP.NO_AVAILABLE_INFO"
- >No Available Info</span
- >
- </div>
- </td>
- </tr>
- <tr
- md-row
- md-select="disposition"
- md-select-id="id"
- ng-repeat="disposition in vm_dc.dispositions.rows"
- >
- <td
- ng-click="vm_dc.createOrEditDisposition($event, disposition)"
- md-cell
- class="id"
- >
- {{disposition.id}}
- </td>
- <td
- ng-click="vm_dc.createOrEditDisposition($event, disposition)"
- md-cell
- class="level"
- >
- {{ vm_dc.levels[disposition.level] }}
- </td>
- <td
- ng-click="vm_dc.createOrEditDisposition($event, disposition)"
- md-cell
- class="name"
- >
- {{disposition.name}}
- </td>
- <td
- ng-click="vm_dc.createOrEditDisposition($event, disposition)"
- md-cell
- class="description"
- >
- {{disposition.description}}
- </td>
- <td
- md-cell
- class="actions"
- ng-if="!vm_dc.crudPermissions.readOnly"
- >
- <md-menu>
- <md-button
- class="md-icon-button"
- aria-label="More"
- translate
- translate-attr-aria-label="APP.MORE"
- ng-click="$mdMenu.open($event)"
- >
- <md-icon
- md-font-icon="icon-dots-vertical"
- ></md-icon>
- </md-button>
- <md-menu-content width="3">
- <!-- SUBACTIONS -->
- <!-- ACTIONS -->
- <md-menu-item
- ng-if="vm_dc.crudPermissions.canEdit"
- >
- <md-button
- ng-click="vm_dc.createOrEditDisposition($event, disposition)"
- translate="TOOLS.EDIT_DISPOSITION"
- >
- Edit Disposition
- </md-button>
- </md-menu-item>
- <!-- SUBACTIONS -->
- <!-- ACTIONS -->
- <md-menu-item
- ng-if="vm_dc.crudPermissions.canDelete"
- >
- <md-button
- ng-click="vm_dc.deleteConfirm(disposition, $event)"
- translate="TOOLS.DELETE_DISPOSITION"
- >
- Delete Disposition
- </md-button>
- </md-menu-item>
- </md-menu-content>
- </md-menu>
- </td>
- </tr>
- </tbody>
- </table>
- </md-table-container>
- <md-table-pagination
- md-label="{page: '{{'OPENCHANNEL.PAGE' | translate}}:', rowsPerPage: '{{'OPENCHANNEL.ROWSPERPAGE' | translate}}:', of: '{{'OPENCHANNEL.OF' | translate}}'}"
- md-limit="vm_dc.query.limit"
- md-limit-options="[10, 15, 20, 50, 100, 250]"
- md-page="vm_dc.query.page"
- md-total="{{vm_dc.dispositions.count}}"
- md-on-paginate="vm_dc.getDispositions"
- md-page-select
- >
- </md-table-pagination>
- </div>
- </div>
- </div>
- </md-tab-body>
- </md-tab>
- <md-tab>
- <md-tab-label>
- <span translate="APP.CANNEDANSWERS">CANNEDANSWERS</span>
- </md-tab-label>
- <md-tab-body>
- <div
- class="openchannelAccount-detail-form-container openchannelcannedanswers md-background-bg md-whiteframe-1dp"
- >
- <div
- ng-controller="OpenchannelAccountOpenchannelCannedAnswersController as vm_dc"
- ng-init="vm_dc.init(vm.openchannelAccount, vm.crudPermissions)"
- >
- <md-toolbar
- class="md-table-toolbar md-default"
- ng-hide="vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers.length"
- >
- <div class="md-toolbar-tools">
- <span
- class="md-subhead"
- translate="OPENCHANNEL.OPENCHANNELCANNEDANSWERS"
- >OpenchannelCannedAnswers</span
- >
- <ms-search-bar
- on-search="vm_dc.query.filter = query"
- on-collapse="vm_dc.query.filter = undefined"
- debounce="300"
- direction="down"
- ></ms-search-bar>
- <div flex></div>
- <md-button
- ng-if="vm_dc.crudPermissions.canEdit"
- class="md-icon-button"
- ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event)"
- aria-label="add openchannelCannedAnswer"
- translate
- translate-attr-label="OPENCHANNEL.ADD_OPENCHANNELCANNEDANSWER"
- >
- <md-icon md-font-icon="icon-plus"></md-icon>
- </md-button>
- </div>
- </md-toolbar>
- <md-toolbar
- class="md-table-toolbar md-accent"
- ng-show="vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers.length"
- >
- <div class="md-toolbar-tools">
- <span class="md-subhead"
- >{{vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers.length}}
- {{vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers.length
- > 1 ? 'items' : 'item'}} selected</span
- >
- <div flex></div>
- <button
- class="md-icon-button"
- ng-csv="vm_dc.exportSelectedOpenchannelAccountOpenchannelCannedAnswers"
- csv-label="true"
- filename="openchannelAccounts.csv"
- >
- <md-icon md-font-icon="icon-file-excel"></md-icon>
- </button>
- <md-button
- ng-if="vm_dc.crudPermissions.canDelete"
- class="md-icon-button"
- ng-click="vm_dc.deleteSelectedOpenchannelAccountOpenchannelCannedAnswers($event)"
- aria-label="delete selected"
- translate
- translate-attr-label="APP.DELETE_SELECTED"
- >
- <md-icon md-font-icon="icon-delete"></md-icon>
- </md-button>
- </div>
- </md-toolbar>
- <md-table-container class="font-size-12">
- <table
- md-table
- md-row-select
- multiple
- ng-model="vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers"
- md-progress="vm_dc.promise"
- >
- <thead
- md-head
- md-order="vm_dc.query.sort"
- md-on-reorder="vm_dc.getOpenchannelAccountOpenchannelCannedAnswers"
- >
- <tr md-row>
- <th md-column md-order-by="id">
- {{ 'APP.ID' | translate }}
- </th>
- <th md-column md-order-by="key">
- {{ 'APP.KEY' | translate }}
- </th>
- <th md-column md-order-by="value">
- {{ 'APP.VALUE' | translate }}
- </th>
- <th md-column md-order-by="description">
- {{ 'APP.DESCRIPTION' | translate }}
- </th>
- <th md-column md-order-by="createdAt">
- {{ 'APP.CREATED_AT' | translate }}
- </th>
- <th md-column width="10px"></th>
- </tr>
- </thead>
- <tbody md-body>
- <tr
- md-row
- md-select="openchannelCannedAnswer"
- md-select-id="id"
- ng-repeat="openchannelCannedAnswer in vm_dc.openchannelAccountOpenchannelCannedAnswers.rows"
- >
- <td
- ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)"
- md-cell
- >
- {{openchannelCannedAnswer.id}}
- </td>
- <td
- ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)"
- md-cell
- >
- {{openchannelCannedAnswer.key}}
- </td>
- <td
- ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)"
- md-cell
- >
- {{openchannelCannedAnswer.value}}
- </td>
- <td
- ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)"
- md-cell
- >
- {{openchannelCannedAnswer.description}}
- </td>
- <td
- ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)"
- md-cell
- >
- {{ openchannelCannedAnswer.createdAt | formatdate }}
- </td>
- <td
- md-cell
- class="actions"
- ng-if="!vm_dc.crudPermissions.readOnly"
- >
- <md-menu>
- <md-button
- class="md-icon-button"
- aria-label="More"
- translate
- translate-attr-aria-label="APP.MORE"
- ng-click="$mdMenu.open($event)"
- >
- <md-icon
- md-font-icon="icon-dots-vertical"
- ></md-icon>
- </md-button>
-
- <md-menu-content width="3">
- <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">
- <md-button
- ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)"
- translate="OPENCHANNEL.EDIT_OPENCHANNELCANNEDANSWER"
- >
- Edit OpenchannelCannedAnswer
- </md-button>
- </md-menu-item>
- <md-menu-item
- ng-if="vm_dc.crudPermissions.canDelete"
- >
- <md-button
- ng-click="vm_dc.deleteConfirm(openchannelCannedAnswer, $event)"
- translate="OPENCHANNEL.DELETE_OPENCHANNELCANNEDANSWER"
- >
- Delete OpenchannelCannedAnswer
- </md-button>
- </md-menu-item>
- </md-menu-content>
- </md-menu>
- </td>
- </tr>
- <tr
- md-row
- ng-if="!vm_dc.openchannelAccountOpenchannelCannedAnswers.rows.length"
- >
- <td md-cell colspan="7">
- <div layout="row" layout-align="center center">
- <span
- class="text-boxed-light"
- translate="OPENCHANNEL.NO_OPENCHANNELCANNEDANSWER_AVAILABLE"
- >No openchannelcannedanswer available</span
- >
- </div>
- </td>
- </tr>
- </tbody>
- </table>
- </md-table-container>
- <md-table-pagination
- md-label="{page: '{{'OPENCHANNEL.PAGE' | translate}}:', rowsPerPage: '{{'OPENCHANNEL.ROWSPERPAGE' | translate}}:', of: '{{'OPENCHANNEL.OF' | translate}}'}"
- md-limit="vm_dc.query.limit"
- md-limit-options="[10, 15, 20, 50, 100, 250]"
- md-page="vm_dc.query.page"
- md-total="{{vm_dc.openchannelAccountOpenchannelCannedAnswers.count}}"
- md-on-paginate="vm_dc.getOpenchannelAccountOpenchannelCannedAnswers"
- md-page-select
- >
- </md-table-pagination>
- </div>
- </div>
- </md-tab-body>
- </md-tab>
- <md-tab>
- <md-tab-label>
- <span translate="APP.ACTIONS">ACTIONS</span>
- </md-tab-label>
- <md-tab-body>
- <div
- class="openchannelAccount-detail-form-container actions md-background-bg md-whiteframe-1dp"
- >
- <div
- ng-controller="OpenchannelAccountActionsController as vm_ac"
- ng-init="vm_ac.init(vm.openchannelAccount, vm.crudPermissions)"
- class="content"
- md-background-bg
- layout="row"
- layout-align="start start"
- >
- <!-- SIDENAV -->
- <div
- class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp"
- ms-scroll
- layout="column"
- flex="20"
- ng-if="vm_ac.crudPermissions.canEdit"
- >
- <!-- SIDENAV CONTENT -->
- <md-list class="no-padding">
- <md-subheader class="md-no-sticky">
- <span translate="VOICE.APPLICATIONS_LIST">
- Applications List
- </span>
- </md-subheader>
- </md-list>
- <md-divider></md-divider>
- <md-list ng-sortable="vm_ac.list">
- <md-list-item class="handle" ng-repeat="a in vm_ac.apps">
- <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>
- <p
- class="text-truncate"
- translate="OPENCHANNEL.{{(a.alias || a.appType) | uppercase}}"
- >
- {{a.alias || a.appType}}
- </p>
- </md-list-item>
- </md-list>
- <!-- / SIDENAV CONTENT -->
- </div>
- <!-- / SIDENAV -->
- <div flex></div>
- <!-- MAIN -->
- <div
- class="main scrollable md-background-bg md-whiteframe-1dp"
- ms-scroll
- layout="column"
- flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}"
- >
- <md-toolbar
- class="md-table-toolbar md-default"
- ng-hide="vm_ac.selectedOpenchannelAccountApps.length"
- >
- <div class="md-toolbar-tools">
- <span class="md-subhead">Drag & Drop Routing</span>
- <div flex></div>
- <ms-search-bar
- on-search="vm_ac.query.filter = query"
- on-collapse="vm_ac.query.filter = undefined"
- debounce="300"
- ></ms-search-bar>
- </div>
- </md-toolbar>
- <md-toolbar
- class="md-table-toolbar md-accent"
- ng-show="vm_ac.selectedOpenchannelAccountApps.length"
- >
- <div class="md-toolbar-tools">
- <span class="md-subhead"
- >{{vm_ac.selectedOpenchannelAccountApps.length}}
- {{vm_ac.selectedOpenchannelAccountApps.length > 1 ?
- 'items' : 'item'}} selected</span
- >
- <div flex></div>
- <md-button
- ng-if="vm_ac.crudPermissions.canDelete"
- class="md-icon-button"
- ng-click="vm_ac.deleteSelectedOpenchannelAccountApps($event)"
- aria-label="delete selected"
- translate
- translate-attr-label="APP.DELETE_SELECTED"
- >
- <md-icon md-font-icon="icon-delete"></md-icon>
- </md-button>
- </div>
- </md-toolbar>
-
- <!-- QUEUES TABLE -->
- <md-table-container>
- <table
- md-table
- md-row-select
- multiple
- ng-model="vm_ac.selectedOpenchannelAccountApps"
- >
- <thead md-head>
- <tr md-row>
- <th md-column width="10px"></th>
- <th md-column width="10px">
- <span translate="APP.PRIORITY">Priority</span>
- </th>
- <th md-column>
- <span>Type</span>
- </th>
- <th md-column>
- <span>Appdata</span>
- </th>
- <th md-column>
- <span>Interval</span>
- </th>
- <th md-column width="10px"></th>
- <th md-column width="10px"></th>
- </tr>
- </thead>
- <tbody md-body ng-sortable="vm_ac.applications">
- <tr
- md-row
- md-select="app"
- md-select-id="id"
- ng-repeat="app in vm_ac.openchannelAccountApps.rows | filter: vm_ac.query.filter"
- >
- <td md-cell>
- <md-icon
- md-font-icon="icon-drag-vertical"
- class="s16 handle"
- ></md-icon>
- </td>
- <td
- md-cell
- ng-click="vm_ac.editOpenchannelAccountApp($event, $index)"
- >
- <span>{{app.priority}}</span>
- </td>
- <td
- md-cell
- ng-click="vm_ac.editOpenchannelAccountApp($event, $index)"
- >
- {{app.app.toLowerCase() === 'agi' ? 'Cally-Square' :
- app.app | ucfirst}}<span
- ng-if="app.appType.toLowerCase() === 'custom'"
- >*</span
- >
- </td>
- <td
- md-cell
- ng-click="vm_ac.editOpenchannelAccountApp($event, $index)"
- >
- <span class="text-truncate" style="width: 200px"
- >{{app.appdata}}</span
- >
- </td>
- <td
- md-cell
- ng-click="vm_ac.editInterval($event, $index)"
- >
- {{app.IntervalId ? 'From List' : app.interval}}
- </td>
- <td md-cell>
- <md-button
- ng-click="vm_ac.editInterval($event, $index)"
- class="md-icon-button"
- aria-label="Interval"
- >
- <md-icon md-font-icon="icon-timer"></md-icon>
- <md-tooltip>
- {{app.IntervalId ? 'From List' : (app.interval ===
- '*,*,*,*' ? 'Always' : 'Custom')}}
- </md-tooltip>
- </md-button>
- </td>
- <td
- md-cell
- class="actions"
- ng-if="!vm_ac.crudPermissions.readOnly"
- >
- <md-menu>
- <md-button
- class="md-icon-button"
- aria-label="More"
- translate
- translate-attr-aria-label="APP.MORE"
- ng-click="$mdMenu.open($event)"
- >
- <md-icon
- md-font-icon="icon-dots-vertical"
- ></md-icon>
- </md-button>
-
- <md-menu-content width="3">
- <md-menu-item
- ng-if="vm_ac.crudPermissions.canEdit"
- >
- <md-button
- ng-click="vm_ac.editOpenchannelAccountApp($event, $index)"
- translate="APP.EDIT_APP"
- >
- Edit App
- </md-button>
- </md-menu-item>
- <md-menu-item
- ng-if="vm_ac.crudPermissions.canEdit"
- >
- <md-button
- ng-click="vm_ac.editInterval($event, $index)"
- translate="APP.EDIT_INTERVAL"
- >
- Edit Interval
- </md-button>
- </md-menu-item>
- <md-menu-item
- ng-if="vm_ac.crudPermissions.canDelete"
- >
- <md-button
- ng-click="vm_ac.deleteConfirm(app, $index, $event)"
- translate="APP.DELETE_APP"
- >
- Delete App
- </md-button>
- </md-menu-item>
- </md-menu-content>
- </md-menu>
- </td>
- </tr>
- <tr
- md-row
- ng-hide="vm_ac.openchannelAccountApps.rows.length"
- >
- <td md-cell colspan="7">
- <span
- class="text-boxed-light"
- translate="APP.NO_APPS_AVAILABLE"
- >No apps available</span
- >
- </td>
- </tr>
- </tbody>
- </table>
- </md-table-container>
- <!-- / QUEUES TABLE -->
-
- <!-- NO RESULTS -->
-
- <!-- / NO RESULTS -->
- </div>
- <!-- / MAIN -->
- </div>
- </div>
- </md-tab-body>
- </md-tab>
- <md-tab>
- <md-tab-label>
- <span translate="APP.INTERACTIONS">INTERACTIONS</span>
- </md-tab-label>
- <md-tab-body>
- <div
- class="openchannelAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp"
- >
- <div
- ng-controller="OpenchannelAccountInteractionsController as vm_dc"
- ng-init="vm_dc.init(vm.openchannelAccount, vm.crudPermissions)"
- >
- <md-toolbar
- class="md-table-toolbar md-default"
- ng-hide="vm_dc.selectedOpenchannelAccountInteractions.length"
- >
- <div class="md-toolbar-tools">
- <span class="md-subhead" translate="APP.INTERACTIONS"
- >Interactions</span
- >
- <ms-search-bar
- on-search="vm_dc.query.filter = query"
- on-collapse="vm_dc.query.filter = undefined"
- debounce="300"
- direction="down"
- ></ms-search-bar>
- <div flex></div>
- <ms-quick-filter
- filters="vm_dc.quickFilters"
- query="vm_dc.query"
- search="vm_dc.getOpenchannelAccountInteractions()"
- ></ms-quick-filter>
- <div layout="column">
- <md-button
- class="md-icon-button advanced-search"
- ng-class="{ 'md-fab md-mini md-accent-bg': vm_dc.query.search }"
- aria-label="Filter"
- translate
- translate-attr-aria-label="APP.FILTER"
- ng-click="vm_dc.openAdvancedSearch()"
- >
- <md-icon
- md-font-icon="{{ vm_dc.query.search ? 'icon-filter' : 'icon-filter-outline' }}"
- ng-class="{ 'blink': vm_dc.query.search }"
- ></md-icon>
- </md-button>
- </div>
- <md-button
- class="md-icon-button"
- ng-click="vm_dc.getOpenchannelAccountInteractions()"
- aria-label="refresh Interactions"
- translate
- translate-attr-label="APP.REFRESH_INTERACTIONS"
- >
- <md-icon md-font-icon="icon-refresh"></md-icon>
- </md-button>
- </div>
- </md-toolbar>
- <md-toolbar
- class="md-table-toolbar md-accent"
- ng-show="vm_dc.selectedOpenchannelAccountInteractions.length"
- >
- <div class="md-toolbar-tools">
- <span class="md-subhead"
- >{{vm_dc.selectedOpenchannelAccountInteractions.length}}
- {{vm_dc.selectedOpenchannelAccountInteractions.length > 1 ?
- 'items' : 'item'}} selected</span
- >
- <div flex></div>
- <button
- class="md-icon-button"
- ng-csv="vm_dc.exportSelectedOpenchannelAccountInteractions"
- csv-label="true"
- filename="openchannelAccounts.csv"
- >
- <md-icon md-font-icon="icon-file-excel"></md-icon>
- </button>
- <md-button
- ng-if="vm_dc.crudPermissions.canDelete"
- class="md-icon-button"
- ng-click="vm_dc.deleteSelectedOpenchannelAccountInteractions($event)"
- aria-label="delete selected"
- translate
- translate-attr-label="APP.DELETE_SELECTED"
- >
- <md-icon md-font-icon="icon-delete"></md-icon>
- </md-button>
- </div>
- </md-toolbar>
- <md-table-container class="font-size-12">
- <table
- md-table
- md-row-select
- multiple
- ng-model="vm_dc.selectedOpenchannelAccountInteractions"
- md-progress="vm_dc.promise"
- >
- <thead
- md-head
- md-order="vm_dc.query.sort"
- md-on-reorder="vm_dc.getOpenchannelAccountInteractions"
- >
- <tr md-row>
- <th md-column md-order-by="id">
- {{ 'APP.ID' | translate }}
- </th>
- <th md-column class="no-padding">
- <md-icon md-font-icon="icon-eye" class="s16"></md-icon>
- </th>
- <th md-column class="no-padding"></th>
- <th md-column class="no-padding"></th>
- <th md-column md-order-by="contactName">
- {{ 'APP.CONTACT' | translate }}
- </th>
- <th md-column md-order-by="createdAt">
- {{ 'APP.STARTEDAT' | translate }}
- </th>
- <th md-column md-order-by="lastMsgAt">
- {{ 'APP.LASTMESSAGE' | translate }}
- </th>
- <th md-column md-order-by="closed">
- {{ 'APP.STATUS' | translate }}
- </th>
- <th md-column>{{ 'APP.AGENT' | translate }}</th>
- <th md-column md-order-by="tag">
- {{ 'APP.TAGS' | translate }}
- </th>
- <th md-column width="10px"></th>
- </tr>
- </thead>
- <tbody md-body>
- <tr
- md-row
- md-select="interaction"
- md-select-id="id"
- ng-repeat="interaction in vm_dc.openchannelAccountInteractions.rows"
- ng-class="{'text-bold text-italic': interaction.unreadMessages > 0}"
- >
- <td md-cell>{{interaction.id}}</td>
- <td md-cell class="no-padding">
- <div
- ng-if="!interaction.closed && interaction.Users.length"
- >
- <md-icon
- md-font-icon="icon-eye"
- class="s16"
- ></md-icon>
- <md-tooltip>
- <span ng-repeat="user in interaction.Users"
- >{{ user.fullname | translate }}
- <span ng-if="!$last">, </span>
- </span>
- </md-tooltip>
- </div>
- </td>
- <td md-cell class="no-padding">
- <div
- ng-if="interaction.unreadMessages > 0"
- layout="row"
- layout-align="start center"
- >
- <span
- class="badge white-fg md-primary-bg"
- layout-margin
- >{{ interaction.unreadMessages}}</span
- >
- </div>
- </td>
- <td md-cell class="no-padding">
- <div ng-if="interaction.attach">
- <md-icon
- md-font-icon="icon-paperclip"
- class="s16"
- ></md-icon>
- </div>
- </td>
- <td md-cell>
- <div layout="column" layout-align="start start">
- <span
- class="font-size-12 text-truncate contact-text"
- ng-class="{'margin-bottom-0' : interaction.contactInfo}"
- layout-margin
- >{{ interaction.contactName }}</span
- >
- <span
- ng-if="interaction.contactInfo"
- class="font-size-12 text-truncate contact-text margin-top-0"
- layout-margin
- >{{ interaction.contactInfo }}</span
- >
- </div>
- </td>
- <td md-cell>{{ interaction.createdAt | formatdate }}</td>
- <td md-cell>
- <div layout="row">
- <span>
- <md-icon
- md-font-icon="{{interaction.lastMsgDirection == 'in' ? 'icon-arrow-down-bold blue-grey-800-fg' : 'icon-arrow-up-bold blue-grey-300-fg'}}"
- >
- </md-icon>
- </span>
- <div layout="column" layout-align="center center">
- <span class="text-truncate"
- >{{ interaction.lastMsgAt | formatdate }}</span
- >
- </div>
- </div>
- </td>
- <td md-cell>
- <span ng-if="interaction.closed === 0" class="green-fg">
- {{ 'APP.OPENED' | translate }}
- <span ng-if="interaction.substatus">
- - {{ interaction.substatus }}
- </span>
- </span>
- <span ng-if="interaction.closed === 1" class="red-fg">
- {{ 'APP.CLOSED' | translate }}
- <span ng-if="interaction.disposition">
- - {{ interaction.thirdDisposition ||
- interaction.secondDisposition ||
- interaction.disposition }}
- </span>
- <md-tooltip class="multiline">
- <div layout="column">
- <div layout="column">
- <span
- >{{ 'DASHBOARDS.CLOSED_AT' |
- translate}}:</span
- >
- <span class="text-bold"
- >{{ interaction.closedAt | formatdate }}</span
- >
- </div>
- <div
- ng-if="interaction.disposition"
- layout="column"
- >
- <span
- >{{ 'DASHBOARDS.DISPOSITION' |
- translate}}:</span
- >
- <span class="text-bold"
- >{{ interaction.disposition }}</span
- >
- </div>
- <div
- ng-if="interaction.secondDisposition"
- layout="column"
- >
- <span
- >{{ 'DASHBOARDS.SECOND_LEVEL_DISPOSITION' |
- translate}}:</span
- >
- <span class="text-bold"
- >{{ interaction.secondDisposition }}</span
- >
- </div>
- <div
- ng-if="interaction.thirdDisposition"
- layout="column"
- >
- <span
- >{{ 'DASHBOARDS.THIRD_LEVEL_DISPOSITION' |
- translate}}:</span
- >
- <span class="text-bold"
- >{{ interaction.thirdDisposition }}</span
- >
- </div>
- </div>
- </md-tooltip>
- </span>
- </td>
-
- <td md-cell>{{interaction.Owner.name}}</td>
- <td md-cell>
- <div ng-if="interaction.Tags.length">
- <md-tooltip md-direction="left" layout="row">
- <span ng-repeat="tag in interaction.Tags"
- >{{tag.name}}<span ng-if="!$last">, </span></span
- >
- </md-tooltip>
- <md-icon
- md-font-icon="icon-tag"
- ng-style="{'color': interaction.Tags.length == 1 && interaction.Tags[0].color }"
- >
- </md-icon>
- </div>
- </td>
- <td md-cell class="actions">
- <md-menu>
- <md-button
- class="md-icon-button"
- aria-label="More"
- translate
- translate-attr-aria-label="APP.MORE"
- ng-click="$mdMenu.open($event)"
- >
- <md-icon
- md-font-icon="icon-dots-vertical"
- ></md-icon>
- </md-button>
-
- <md-menu-content width="3">
- <md-menu-item>
- <md-button
- ng-click="vm_dc.spyopenchannelInteraction($event, interaction)"
- translate="APP.SPYINTERACTION"
- >
- Spy Interaction
- </md-button>
- </md-menu-item>
- <md-menu-item>
- <md-button
- class="md-primary"
- ng-click="vm_dc.openchannelInteractionDownload(interaction, $event, true)"
- translate="APP.DOWNLOAD_WITH_ATTACHMENTS"
- >
- Download with attachments
- </md-button>
- </md-menu-item>
- <md-menu-item>
- <md-button
- class="md-primary"
- ng-click="vm_dc.openchannelInteractionDownload(interaction, $event)"
- translate="APP.DOWNLOAD_WITHOUT_ATTACHMENTS"
- >
- Download without attachments
- </md-button>
- </md-menu-item>
- <md-menu-item
- ng-if="vm_dc.crudPermissions.canDelete"
- >
- <md-button
- ng-click="vm_dc.deleteConfirm(interaction, $event)"
- translate="APP.DELETE_INTERACTION"
- >
- Delete Interaction
- </md-button>
- </md-menu-item>
- </md-menu-content>
- </md-menu>
- </td>
- </tr>
- <tr
- md-row
- ng-if="!vm_dc.openchannelAccountInteractions.rows.length"
- >
- <td md-cell colspan="12">
- <div layout="row" layout-align="center center">
- <span
- class="text-boxed-light"
- translate="APP.NO_INTERACTION_AVAILABLE"
- >No interaction available</span
- >
- </div>
- </td>
- </tr>
- </tbody>
- </table>
- </md-table-container>
- <md-table-pagination
- md-label="{page: '{{'OPENCHANNEL.PAGE' | translate}}:', rowsPerPage: '{{'OPENCHANNEL.ROWSPERPAGE' | translate}}:', of: '{{'OPENCHANNEL.OF' | translate}}'}"
- md-limit="vm_dc.query.limit"
- md-limit-options="[10, 15, 20, 50, 100, 250]"
- md-page="vm_dc.query.page"
- md-total="{{vm_dc.openchannelAccountInteractions.count}}"
- md-on-paginate="vm_dc.getOpenchannelAccountInteractions"
- md-page-select
- ></md-table-pagination>
- </div>
- </div>
- </md-tab-body>
- </md-tab>
- </md-tabs>
- </div>
- <!-- / CONTENT -->
-</div>