2 id="integrations-servicenowAccount"
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-servicenowAccounts-button md-icon-button"
11 aria-label="Go to servicenowAccounts"
12 ng-click="vm.gotoServicenowAccounts()"
14 translate-attr-aria-label="INTEGRATIONS.GO_TO_SERVICENOWACCOUNTS"
16 <md-icon md-font-icon="icon-arrow-left"></md-icon>
19 <div layout="row" layout-align="start center">
20 <div class="servicenowAccount-image" hide-xs>
21 <img ng-src="assets/images/business/servicenowAccounts.jpg" />
24 <div layout="column" layout-align="start start">
26 #{{vm.servicenowAccount.id}}
27 <span ng-if="vm.servicenowAccount.name"
28 >{{vm.servicenowAccount.name}}</span
31 <div class="subtitle secondary-text">
32 <span translate="APP.CREATED_AT"></span>
33 <span>{{vm.servicenowAccount.createdAt | date:'medium'}}</span>
41 ng-click="vm.saveServicenowAccount()"
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="servicenowAccount-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.servicenowAccount.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.servicenowAccount.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="APP.PASSWORD">Password</label>
127 ng-model="vm.servicenowAccount.password"
128 placeholder="Password"
130 translate-attr-placeholder="APP.PASSWORD"
133 <div ng-messages="generalForm['password'].$error" role="alert">
134 <div ng-message="required">
135 <span translate="APP.ERRORS.PASSWORD_REQUIRED"
136 >Password field is required</span
139 <div ng-message="pattern">
141 translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN"
142 >Must contain at least 8 characters, with a minimum of 1
143 lowercase letter, 1 uppercase letter, 1 numeric character
144 and 1 special character ~!?*@#$%^&-_=+[{]}.</span
148 </md-input-container>
150 <md-input-container class="md-block">
151 <label translate="APP.EMAIL">Email</label>
155 ng-model="vm.servicenowAccount.email"
157 ng-disabled="!vm.crudPermissions.canEdit"
161 ng-messages="generalForm['email'].$error"
162 ng-show="generalForm['email'].$touched"
165 <div ng-message="required">
166 <span translate="APP.ERRORS.EMAIL_REQUIRED"
167 >Email field is required</span
170 <div ng-message="email">
171 <span translate="APP.ERRORS.EMAIL_MUST_VALID"
172 >Email must be a valid e-mail address</span
176 </md-input-container>
177 <md-input-container class="md-block">
178 <label translate="APP.HOST">Host</label>
182 ng-model="vm.servicenowAccount.remoteUri"
184 ng-disabled="!vm.crudPermissions.canEdit"
188 ng-messages="generalForm['remoteUri'].$error"
189 ng-show="generalForm['remoteUri'].$touched"
192 <div ng-message="required">
193 <span translate="APP.ERRORS.HOST_REQUIRED"
194 >Host field is required</span
197 <div ng-message="url">
198 <span translate="INTEGRATIONS.ERRORS.HOST_MUST_VALID_URL"
199 >Host must be a valid url http://www.xcally.com</span
203 </md-input-container>
204 <md-input-container class="md-block">
205 <label translate="INTEGRATIONS.MOTIONPROXYADDRESS"
206 >MotionProxyAddress</label
211 ng-model="vm.servicenowAccount.serverUrl"
214 ng-disabled="!vm.crudPermissions.canEdit"
218 <span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span>
221 ng-messages="generalForm['serverUrl'].$error"
222 ng-show="generalForm['serverUrl'].$touched"
225 <div ng-message="required">
227 translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED"
228 >MotionProxyAddress field is required</span
231 <div ng-message="url">
233 translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL"
234 >MotionProxyAddress must be a valid url
235 http://www.xcally.com</span
239 </md-input-container>
240 <md-input-container class="md-block">
241 <label translate="APP.DESCRIPTION">Description</label>
245 ng-model="vm.servicenowAccount.description"
246 ng-disabled="!vm.crudPermissions.canEdit"
250 ng-messages="generalForm['description'].$error"
251 ng-show="generalForm['description'].$touched"
254 <div ng-message="required">
255 <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED"
256 >Description field is required</span
260 </md-input-container>
267 <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>
271 class="servicenowAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp"
273 <div class="pb-16" layout="row" layout-align="start center">
275 class="h2 secondary-text"
276 translate="INTEGRATIONS.CONFIGURATIONS"
282 ng-controller="ServicenowAccountConfigurationsController as vm_cc"
283 ng-init="vm_cc.init(vm.servicenowAccount, vm.crudPermissions)"
286 <md-card class="md-whiteframe-1dp" flex="30">
287 <div layout="row" layout-align="center center">
288 <md-subheader flex="75" class="md-no-sticky"
289 >{{ 'INTEGRATIONS.CONFIGURATIONS' | translate
294 ng-if="vm_cc.crudPermissions.canEdit"
295 ng-click="vm_cc.createOrEditServicenowConfiguration($event)"
296 class="md-icon-button"
297 aria-label="create servicenowConfiguration"
299 <md-icon md-font-icon="icon-plus"></md-icon>
305 layout-align="center center"
306 ng-repeat="servicenowConfiguration in vm_cc.configurations"
308 md-colors="{background: (vm_cc.selectedServicenowConfiguration == $index ? 'accent' : 'grey-A100')}"
309 ng-click="vm_cc.getServicenowConfiguration($index)"
311 <span class="text-truncate" flex="80"
312 >{{ servicenowConfiguration.name }}</span
314 <md-menu ng-if="vm_cc.crudPermissions.canDelete">
316 class="md-icon-button"
319 translate-attr-aria-label="APP.MORE"
320 ng-click="$mdMenu.open($event)"
322 <md-icon md-font-icon="icon-dots-vertical"></md-icon>
324 <md-menu-content width="3">
325 <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">
327 ng-click="vm_cc.deleteServicenowConfiguration($event, servicenowConfiguration)"
328 translate="INTEGRATIONS.DELETE_SERVICENOWCONFIGURATION"
330 Delete ServicenowConfiguration
339 <md-card class="md-whiteframe-1dp" flex="65">
340 <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>
343 <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>
347 class="md-table-toolbar md-default no-padding"
348 ng-hide="vm_cc.selectedSubjects.length"
350 <div class="md-toolbar-tools">
357 ng-if="vm_cc.crudPermissions.canEdit"
358 class="md-icon-button"
359 ng-click="vm_cc.createOrEditSubject($event)"
360 aria-label="add subject"
362 translate-attr-label="INTEGRATIONS.ADD_SUBJECT"
364 <md-icon md-font-icon="icon-plus"></md-icon>
369 class="md-table-toolbar md-accent"
370 ng-show="vm_cc.selectedSubjects.length"
372 <div class="md-toolbar-tools">
373 <span class="md-subhead"
374 >{{vm_cc.selectedSubjects.length}}
375 {{vm_cc.selectedSubjects.length > 1 ? 'items' :
376 'item'}} selected</span
380 ng-if="vm_cc.crudPermissions.canDelete"
381 class="md-icon-button"
382 ng-click="vm_cc.deleteSelectedSubjects($event)"
383 aria-label="delete selected"
385 translate-attr-label="APP.DELETE_SELECTED"
387 <md-icon md-font-icon="icon-delete"></md-icon>
392 class="md-whiteframe-1dp padding-horizontal"
398 ng-model="vm_cc.selectedSubjects"
402 <th md-column>{{ 'APP.ID' | translate }}</th>
403 <th md-column>{{ 'APP.TYPE' | translate }}</th>
404 <th md-column>{{ 'APP.CONTENT' | translate }}</th>
405 <th md-column width="10px"></th>
413 ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.filter"
416 ng-click="vm_cc.createOrEditSubject($event, subject)"
423 ng-click="vm_cc.createOrEditSubject($event, subject)"
427 <span ng-if="subject.FieldId"
428 >{{subject.nameField ||
429 subject.idField}}</span
431 <span ng-if="!subject.FieldId"
432 >{{subject.type}}</span
436 ng-switch="subject.type"
437 ng-click="vm_cc.createOrEditSubject($event, subject)"
440 <span ng-switch-when="string"
441 >{{subject.content}}</span
444 ng-switch-when="variable"
446 >{{subject.variableName}}</span
449 ng-switch-when="customVariable"
452 vm_cc.variablesById[subject.VariableId].name
455 <span ng-switch-when="keyValue">
457 <span ng-switch="description.keyType">
458 <span ng-switch-when="string"
459 >{{subject.keyContent}}</span
462 ng-switch-when="variable"
464 >{{subject.variableName}}</span
467 ng-switch-when="customVariable"
470 vm_cc.variablesById[subject.VariableId].name
475 <span ng-switch-default
476 >{{subject.content}}</span
482 ng-if="!vm_cc.crudPermissions.readOnly"
486 class="md-icon-button"
489 translate-attr-aria-label="APP.MORE"
490 ng-click="$mdMenu.open($event)"
493 md-font-icon="icon-dots-vertical"
497 <md-menu-content width="3">
499 ng-if="vm_cc.crudPermissions.canEdit"
502 ng-click="vm_cc.createOrEditSubject($event, subject)"
503 translate="INTEGRATIONS.EDIT_SUBJECT"
509 ng-if="vm_cc.crudPermissions.canDelete"
512 ng-click="vm_cc.deleteSubjectConfirm($event, subject)"
513 translate="INTEGRATIONS.DELETE_SUBJECT"
524 </md-table-container>
530 <span translate="INTEGRATIONS.DESCRIPTIONS"
536 class="md-table-toolbar md-default no-padding"
537 ng-hide="vm_cc.selectedDescriptions.length"
539 <div class="md-toolbar-tools">
546 ng-if="vm_cc.crudPermissions.canEdit"
547 class="md-icon-button"
548 ng-click="vm_cc.createOrEditDescription($event)"
549 aria-label="add description"
551 translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION"
553 <md-icon md-font-icon="icon-plus"></md-icon>
558 class="md-table-toolbar md-accent"
559 ng-show="vm_cc.selectedDescriptions.length"
561 <div class="md-toolbar-tools">
562 <span class="md-subhead"
563 >{{vm_cc.selectedDescriptions.length}}
564 {{vm_cc.selectedDescriptions.length > 1 ? 'items' :
565 'item'}} selected</span
569 ng-if="vm_cc.crudPermissions.canDelete"
570 class="md-icon-button"
571 ng-click="vm_cc.deleteSelectedDescriptions($event)"
572 aria-label="delete selected"
574 translate-attr-label="APP.DELETE_SELECTED"
576 <md-icon md-font-icon="icon-delete"></md-icon>
581 class="md-whiteframe-1dp padding-horizontal"
587 ng-model="vm_cc.selectedDescriptions"
591 <th md-column>{{ 'APP.ID' | translate }}</th>
592 <th md-column>{{ 'APP.TYPE' | translate }}</th>
593 <th md-column>{{ 'APP.CONTENT' | translate }}</th>
594 <th md-column width="10px"></th>
600 md-select="description"
602 ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.filter"
605 ng-click="vm_cc.createOrEditDescription($event, description)"
612 ng-click="vm_cc.createOrEditDescription($event, description)"
616 <span ng-if="description.FieldId"
617 >{{description.nameField ||
618 description.idField}}</span
620 <span ng-if="!description.FieldId"
621 >{{description.type}}</span
625 ng-switch="description.type"
626 ng-click="vm_cc.createOrEditDescription($event, description)"
629 <span ng-switch-when="string"
630 >{{description.content}}</span
633 ng-switch-when="variable"
635 >{{description.variableName}}</span
638 ng-switch-when="customVariable"
641 vm_cc.variablesById[description.VariableId].name
644 <span ng-switch-when="keyValue">
646 <span ng-switch="description.keyType">
647 <span ng-switch-when="string"
648 >{{description.keyContent}}</span
651 ng-switch-when="variable"
653 >{{description.variableName}}</span
656 ng-switch-when="customVariable"
659 vm_cc.variablesById[description.VariableId].name
664 <span ng-switch-default
665 >{{description.content}}</span
671 ng-if="!vm_cc.crudPermissions.readOnly"
675 class="md-icon-button"
678 translate-attr-aria-label="APP.MORE"
679 ng-click="$mdMenu.open($event)"
682 md-font-icon="icon-dots-vertical"
686 <md-menu-content width="3">
688 ng-if="vm_cc.crudPermissions.canEdit"
691 ng-click="vm_cc.createOrEditDescription($event, description)"
692 translate="INTEGRATIONS.EDIT_DESCRIPTION"
698 ng-if="vm_cc.crudPermissions.canDelete"
701 ng-click="vm_cc.deleteDescriptionConfirm($event, description)"
702 translate="INTEGRATIONS.DELETE_DESCRIPTION"
713 </md-table-container>
719 ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit"
720 ng-click="vm_cc.createOrEditServicenowConfiguration($event)"
723 layout-align="center center"
727 class="padding-20 md-whiteframe-3dp md-accent-bg"
729 layout-align="center center"
731 <md-button class="md-icon-button">
732 <md-icon md-font-icon="icon-plus"></md-icon>
735 aria-label="add configuration"
737 translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION"
738 >ADD CONFIGURATION</span