2 id="integrations-freshdeskAccount"
3 class="page-layout simple tabbed"
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>
10 class="goto-freshdeskAccounts-button md-icon-button"
11 aria-label="Go to freshdeskAccounts"
12 ng-click="vm.gotoFreshdeskAccounts()"
14 translate-attr-aria-label="INTEGRATIONS.GO_TO_FRESHDESKACCOUNTS"
16 <md-icon md-font-icon="icon-arrow-left"></md-icon>
19 <div layout="row" layout-align="start center">
20 <div class="freshdeskAccount-image" hide-xs>
21 <img ng-src="assets/images/business/freshdeskAccounts.jpg" />
24 <div layout="column" layout-align="start start">
26 #{{vm.freshdeskAccount.id}}
27 <span ng-if="vm.freshdeskAccount.name"
28 >{{vm.freshdeskAccount.name}}</span
31 <div class="subtitle secondary-text">
32 <span translate="APP.CREATED_AT"></span>
33 <span>{{vm.freshdeskAccount.createdAt | date:'medium'}}</span>
41 ng-click="vm.saveFreshdeskAccount()"
42 ng-if="vm.crudPermissions.canEdit"
43 class="send-button md-accent md-raised"
44 ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)"
46 translate-attr-aria-label="APP.SAVE"
57 md-selected="vm.selectedTab"
58 md-stretch-tabs="always"
65 <span translate="APP.ACCOUNT">ACCOUNT</span>
69 class="freshdeskAccount-detail-form-container general md-background-bg md-whiteframe-1dp"
71 <div class="pb-16" layout="row" layout-align="start center">
72 <div class="h2 secondary-text" translate="APP.GENERAL">
76 <form name="generalForm" novalidate>
77 <md-input-container class="md-block">
78 <label translate="APP.NAME">Name</label>
82 ng-model="vm.freshdeskAccount.name"
85 ng-disabled="!vm.crudPermissions.canEdit"
89 ng-messages="generalForm['name'].$error"
90 ng-show="generalForm['name'].$touched"
93 <div ng-message="required">
94 <span translate="APP.ERRORS.NAME_REQUIRED"
95 >Name field is required</span
100 <md-input-container class="md-block">
101 <label translate="APP.USERNAME">Username</label>
105 ng-model="vm.freshdeskAccount.username"
107 ng-disabled="!vm.crudPermissions.canEdit"
111 ng-messages="generalForm['username'].$error"
112 ng-show="generalForm['username'].$touched"
115 <div ng-message="required">
116 <span translate="APP.ERRORS.USERNAME_REQUIRED"
117 >Username field is required</span
121 </md-input-container>
122 <md-input-container class="md-block">
123 <label translate="INTEGRATIONS.URI">Uri</label>
127 ng-model="vm.freshdeskAccount.remoteUri"
129 ng-disabled="!vm.crudPermissions.canEdit"
133 ng-messages="generalForm['remoteUri'].$error"
134 ng-show="generalForm['remoteUri'].$touched"
137 <div ng-message="required">
138 <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED"
139 >Uri field is required</span
142 <div ng-message="url">
143 <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL"
144 >Uri must be a valid url http://www.xcally.com</span
148 </md-input-container>
149 <md-input-container class="md-block">
150 <label translate="APP.APIKEY">ApiKey</label>
154 ng-model="vm.freshdeskAccount.apiKey"
156 ng-disabled="!vm.crudPermissions.canEdit"
160 ng-messages="generalForm['apiKey'].$error"
161 ng-show="generalForm['apiKey'].$touched"
164 <div ng-message="required">
165 <span translate="APP.ERRORS.APIKEY_REQUIRED"
166 >ApiKey field is required</span
170 </md-input-container>
171 <md-input-container class="md-block">
172 <label translate="INTEGRATIONS.MOTIONPROXYADDRESS"
173 >MotionProxyAddress</label
178 ng-model="vm.freshdeskAccount.serverUrl"
181 ng-disabled="!vm.crudPermissions.canEdit"
185 <span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span>
188 ng-messages="generalForm['serverUrl'].$error"
189 ng-show="generalForm['serverUrl'].$touched"
192 <div ng-message="required">
194 translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED"
195 >MotionProxyAddress field is required</span
198 <div ng-message="url">
200 translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL"
201 >MotionProxyAddress must be a valid url
202 http://www.xcally.com</span
206 </md-input-container>
207 <md-input-container class="md-block">
208 <label translate="APP.DESCRIPTION">Description</label>
212 ng-model="vm.freshdeskAccount.description"
213 ng-disabled="!vm.crudPermissions.canEdit"
217 ng-messages="generalForm['description'].$error"
218 ng-show="generalForm['description'].$touched"
221 <div ng-message="required">
222 <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED"
223 >Description field is required</span
227 </md-input-container>
234 <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>
238 class="freshdeskAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp"
240 <div class="pb-16" layout="row" layout-align="start center">
242 class="h2 secondary-text"
243 translate="INTEGRATIONS.CONFIGURATIONS"
249 ng-controller="FreshdeskAccountConfigurationsController as vm_cc"
250 ng-init="vm_cc.init(vm.freshdeskAccount, vm.crudPermissions)"
253 <md-card class="md-whiteframe-1dp" flex="30">
254 <div layout="row" layout-align="center center">
255 <md-subheader flex="75" class="md-no-sticky"
256 >{{ 'INTEGRATIONS.CONFIGURATIONS' | translate
261 ng-if="vm_cc.crudPermissions.canEdit"
262 ng-click="vm_cc.createOrEditFreshdeskConfiguration($event)"
263 class="md-icon-button"
264 aria-label="create freshdeskConfiguration"
266 <md-icon md-font-icon="icon-plus"></md-icon>
272 layout-align="center center"
273 ng-repeat="freshdeskConfiguration in vm_cc.configurations"
275 md-colors="{background: (vm_cc.selectedFreshdeskConfiguration == $index ? 'accent' : 'grey-A100')}"
276 ng-click="vm_cc.getFreshdeskConfiguration($index)"
278 <span class="text-truncate" flex="80"
279 >{{ freshdeskConfiguration.name }}</span
281 <md-menu ng-if="vm_cc.crudPermissions.canDelete">
283 class="md-icon-button"
286 translate-attr-aria-label="APP.MORE"
287 ng-click="$mdMenu.open($event)"
289 <md-icon md-font-icon="icon-dots-vertical"></md-icon>
291 <md-menu-content width="3">
292 <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">
294 ng-click="vm_cc.deleteFreshdeskConfiguration($event, freshdeskConfiguration)"
295 translate="INTEGRATIONS.DELETE_FRESHDESKCONFIGURATION"
297 Delete FreshdeskConfiguration
306 <md-card class="md-whiteframe-1dp" flex="65">
307 <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>
310 <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>
314 class="md-table-toolbar md-default no-padding"
315 ng-hide="vm_cc.selectedSubjects.length"
317 <div class="md-toolbar-tools">
324 ng-if="vm_cc.crudPermissions.canEdit"
325 class="md-icon-button"
326 ng-click="vm_cc.createOrEditSubject($event)"
327 aria-label="add subject"
329 translate-attr-label="INTEGRATIONS.ADD_SUBJECT"
331 <md-icon md-font-icon="icon-plus"></md-icon>
336 class="md-table-toolbar md-accent"
337 ng-show="vm_cc.selectedSubjects.length"
339 <div class="md-toolbar-tools">
340 <span class="md-subhead"
341 >{{vm_cc.selectedSubjects.length}}
342 {{vm_cc.selectedSubjects.length > 1 ? 'items' :
343 'item'}} selected</span
347 ng-if="vm_cc.crudPermissions.canDelete"
348 class="md-icon-button"
349 ng-click="vm_cc.deleteSelectedSubjects($event)"
350 aria-label="delete selected"
352 translate-attr-label="APP.DELETE_SELECTED"
354 <md-icon md-font-icon="icon-delete"></md-icon>
359 class="md-whiteframe-1dp padding-horizontal"
365 ng-model="vm_cc.selectedSubjects"
369 <th md-column>{{ 'APP.ID' | translate }}</th>
370 <th md-column>{{ 'APP.TYPE' | translate }}</th>
371 <th md-column>{{ 'APP.CONTENT' | translate }}</th>
372 <th md-column width="10px"></th>
380 ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.filter"
383 ng-click="vm_cc.createOrEditSubject($event, subject)"
390 ng-click="vm_cc.createOrEditSubject($event, subject)"
394 <span ng-if="subject.FieldId"
395 >{{subject.nameField ||
396 subject.idField}}</span
398 <span ng-if="!subject.FieldId"
399 >{{subject.type}}</span
403 ng-switch="subject.type"
404 ng-click="vm_cc.createOrEditSubject($event, subject)"
407 <span ng-switch-when="string"
408 >{{subject.content}}</span
411 ng-switch-when="variable"
413 >{{subject.variableName}}</span
416 ng-switch-when="customVariable"
419 vm_cc.variablesById[subject.VariableId].name
422 <span ng-switch-when="keyValue">
424 <span ng-switch="description.keyType">
425 <span ng-switch-when="string"
426 >{{subject.keyContent}}</span
429 ng-switch-when="variable"
431 >{{subject.variableName}}</span
434 ng-switch-when="customVariable"
437 vm_cc.variablesById[subject.VariableId].name
442 <span ng-switch-default
443 >{{subject.content}}</span
449 ng-if="!vm_cc.crudPermissions.readOnly"
453 class="md-icon-button"
456 translate-attr-aria-label="APP.MORE"
457 ng-click="$mdMenu.open($event)"
460 md-font-icon="icon-dots-vertical"
464 <md-menu-content width="3">
466 ng-if="vm_cc.crudPermissions.canEdit"
469 ng-click="vm_cc.createOrEditSubject($event, subject)"
470 translate="INTEGRATIONS.EDIT_SUBJECT"
476 ng-if="vm_cc.crudPermissions.canDelete"
479 ng-click="vm_cc.deleteSubjectConfirm($event, subject)"
480 translate="INTEGRATIONS.DELETE_SUBJECT"
491 </md-table-container>
497 <span translate="INTEGRATIONS.DESCRIPTIONS"
503 class="md-table-toolbar md-default no-padding"
504 ng-hide="vm_cc.selectedDescriptions.length"
506 <div class="md-toolbar-tools">
513 ng-if="vm_cc.crudPermissions.canEdit"
514 class="md-icon-button"
515 ng-click="vm_cc.createOrEditDescription($event)"
516 aria-label="add description"
518 translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION"
520 <md-icon md-font-icon="icon-plus"></md-icon>
525 class="md-table-toolbar md-accent"
526 ng-show="vm_cc.selectedDescriptions.length"
528 <div class="md-toolbar-tools">
529 <span class="md-subhead"
530 >{{vm_cc.selectedDescriptions.length}}
531 {{vm_cc.selectedDescriptions.length > 1 ? 'items' :
532 'item'}} selected</span
536 ng-if="vm_cc.crudPermissions.canDelete"
537 class="md-icon-button"
538 ng-click="vm_cc.deleteSelectedDescriptions($event)"
539 aria-label="delete selected"
541 translate-attr-label="APP.DELETE_SELECTED"
543 <md-icon md-font-icon="icon-delete"></md-icon>
548 class="md-whiteframe-1dp padding-horizontal"
554 ng-model="vm_cc.selectedDescriptions"
558 <th md-column>{{ 'APP.ID' | translate }}</th>
559 <th md-column>{{ 'APP.TYPE' | translate }}</th>
560 <th md-column>{{ 'APP.CONTENT' | translate }}</th>
561 <th md-column width="10px"></th>
567 md-select="description"
569 ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.filter"
572 ng-click="vm_cc.createOrEditDescription($event, description)"
579 ng-click="vm_cc.createOrEditDescription($event, description)"
583 <span ng-if="description.FieldId"
584 >{{description.nameField ||
585 description.idField}}</span
587 <span ng-if="!description.FieldId"
588 >{{description.type}}</span
592 ng-switch="description.type"
593 ng-click="vm_cc.createOrEditDescription($event, description)"
596 <span ng-switch-when="string"
597 >{{description.content}}</span
600 ng-switch-when="variable"
602 >{{description.variableName}}</span
605 ng-switch-when="customVariable"
608 vm_cc.variablesById[description.VariableId].name
611 <span ng-switch-when="keyValue">
613 <span ng-switch="description.keyType">
614 <span ng-switch-when="string"
615 >{{description.keyContent}}</span
618 ng-switch-when="variable"
620 >{{description.variableName}}</span
623 ng-switch-when="customVariable"
626 vm_cc.variablesById[description.VariableId].name
631 <span ng-switch-default
632 >{{description.content}}</span
638 ng-if="!vm_cc.crudPermissions.readOnly"
642 class="md-icon-button"
645 translate-attr-aria-label="APP.MORE"
646 ng-click="$mdMenu.open($event)"
649 md-font-icon="icon-dots-vertical"
653 <md-menu-content width="3">
655 ng-if="vm_cc.crudPermissions.canEdit"
658 ng-click="vm_cc.createOrEditDescription($event, description)"
659 translate="INTEGRATIONS.EDIT_DESCRIPTION"
665 ng-if="vm_cc.crudPermissions.canDelete"
668 ng-click="vm_cc.deleteDescriptionConfirm($event, description)"
669 translate="INTEGRATIONS.DELETE_DESCRIPTION"
680 </md-table-container>
686 <span translate="APP.FIELDS">FIELDS</span>
690 class="md-table-toolbar md-default no-padding"
691 ng-hide="vm_cc.selectedFields.length"
693 <div class="md-toolbar-tools">
700 ng-if="vm_cc.crudPermissions.canEdit"
701 class="md-icon-button"
702 ng-click="vm_cc.createOrEditField($event)"
703 aria-label="add field"
705 translate-attr-label="INTEGRATIONS.ADD_FIELD"
707 <md-icon md-font-icon="icon-plus"></md-icon>
712 class="md-table-toolbar md-accent"
713 ng-show="vm_cc.selectedFields.length"
715 <div class="md-toolbar-tools">
716 <span class="md-subhead"
717 >{{vm_cc.selectedFields.length}}
718 {{vm_cc.selectedFields.length > 1 ? 'items' :
719 'item'}} selected</span
723 ng-if="vm_cc.crudPermissions.canDelete"
724 class="md-icon-button"
725 ng-click="vm_cc.deleteSelectedFields($event)"
726 aria-label="delete selected"
728 translate-attr-label="APP.DELETE_SELECTED"
730 <md-icon md-font-icon="icon-delete"></md-icon>
735 class="md-whiteframe-1dp padding-horizontal"
741 ng-model="vm_cc.selectedFields"
745 <th md-column>{{ 'APP.ID' | translate }}</th>
746 <th md-column>{{ 'APP.TYPE' | translate }}</th>
747 <th md-column>{{ 'APP.CONTENT' | translate }}</th>
748 <th md-column width="10px"></th>
756 ng-repeat="field in vm_cc.fields | filter: vm_cc.query.filter"
759 ng-click="vm_cc.createOrEditField($event, field)"
766 ng-click="vm_cc.createOrEditField($event, field)"
770 <span ng-if="field.FieldId"
771 >{{field.nameField || field.idField}}</span
773 <span ng-if="!field.FieldId"
774 >{{field.type}}</span
778 ng-switch="field.type"
779 ng-click="vm_cc.createOrEditField($event, field)"
782 <span ng-switch-when="string"
783 >{{field.content}}</span
786 ng-switch-when="variable"
788 >{{field.variableName}}</span
791 ng-switch-when="customVariable"
793 >{{ vm_cc.variablesById[field.VariableId].name
796 <span ng-switch-when="keyValue">
798 <span ng-switch="description.keyType">
799 <span ng-switch-when="string"
800 >{{field.keyContent}}</span
803 ng-switch-when="variable"
805 >{{field.variableName}}</span
808 ng-switch-when="customVariable"
811 vm_cc.variablesById[field.VariableId].name
816 <span ng-switch-default>{{field.content}}</span>
821 ng-if="!vm_cc.crudPermissions.readOnly"
825 class="md-icon-button"
828 translate-attr-aria-label="APP.MORE"
829 ng-click="$mdMenu.open($event)"
832 md-font-icon="icon-dots-vertical"
836 <md-menu-content width="3">
838 ng-if="vm_cc.crudPermissions.canEdit"
841 ng-click="vm_cc.createOrEditField($event, field)"
842 translate="INTEGRATIONS.EDIT_FIELD"
848 ng-if="vm_cc.crudPermissions.canDelete"
851 ng-click="vm_cc.deleteFieldConfirm($event, field)"
852 translate="INTEGRATIONS.DELETE_FIELD"
863 </md-table-container>
869 <span translate="APP.TAGS">TAGS</span>
872 <md-table-container class="md-whiteframe-1dp padding-20">
873 <md-input-container class="md-block">
874 <label translate="APP.TAGS">Tags</label>
876 ng-model="vm_cc.selectedTags"
877 ng-change="vm_cc.selectTagsChanged($event)"
882 ng-repeat="tag in vm_cc.tags"
883 >{{ tag.name }}</md-option
886 </md-input-container>
887 </md-table-container>
893 ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit"
894 ng-click="vm_cc.createOrEditFreshdeskConfiguration($event)"
897 layout-align="center center"
901 class="padding-20 md-whiteframe-3dp md-accent-bg"
903 layout-align="center center"
905 <md-button class="md-icon-button">
906 <md-icon md-font-icon="icon-plus"></md-icon>
909 aria-label="add configuration"
911 translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION"
912 >ADD CONFIGURATION</span