1window.angular && (function(angular) { 2 'use strict'; 3 4 angular.module('app.common.directives').directive('remoteLoggingServer', [ 5 'APIUtils', 6 function(APIUtils) { 7 return { 8 'restrict': 'E', 'template': require('./remote-logging-server.html'), 9 'controller': [ 10 '$scope', '$uibModal', 'toastService', 11 function($scope, $uibModal, toastService) { 12 const modalActions = { 13 ADD: 0, 14 EDIT: 1, 15 REMOVE: 2, 16 properties: { 17 0: { 18 title: 'Add remote logging server', 19 actionLabel: 'Add', 20 successMessage: 'Connected to remote logging server.', 21 errorMessage: 'Unable to connect to server.' 22 }, 23 1: { 24 title: 'Edit remote logging server', 25 actionLabel: 'Save', 26 successMessage: 'Connected to remote logging server.', 27 errorMessage: 'Unable to save remote logging server.' 28 }, 29 2: { 30 title: 'Remove remote logging server', 31 actionLabel: 'Remove', 32 successMessage: 'Remote logging server removed.', 33 errorMessage: 'Unable to remove remote logging server.' 34 } 35 } 36 }; 37 38 const modalTemplate = 39 require('./remote-logging-server-modal.html'); 40 41 $scope.activeModal; 42 $scope.activeModalProps; 43 44 $scope.remoteServer; 45 $scope.remoteServerForm; 46 $scope.loadError = true; 47 48 $scope.initModal = (type) => { 49 if (type === undefined) { 50 return; 51 } 52 $scope.activeModal = type; 53 $scope.activeModalProps = modalActions.properties[type]; 54 55 $uibModal 56 .open({ 57 template: modalTemplate, 58 windowTopClass: 'uib-modal', 59 scope: $scope, 60 ariaLabelledBy: 'dialog_label' 61 }) 62 .result 63 .then((action) => { 64 switch (action) { 65 case modalActions.ADD: 66 addServer(); 67 break; 68 case modalActions.EDIT: 69 editServer(); 70 break; 71 case modalActions.REMOVE: 72 removeServer(); 73 break; 74 default: 75 setFormValues(); 76 } 77 }) 78 .catch(() => { 79 // reset form when modal overlay clicked 80 // and modal closes 81 setFormValues(); 82 }) 83 }; 84 85 const addServer = () => { 86 $scope.loading = true; 87 APIUtils.setRemoteLoggingServer($scope.remoteServerForm) 88 .then(() => { 89 $scope.loading = false; 90 $scope.remoteServer = {...$scope.remoteServerForm}; 91 toastService.success( 92 $scope.activeModalProps.successMessage); 93 }) 94 .catch(() => { 95 $scope.loading = false; 96 $scope.remoteServer = undefined; 97 setFormValues(); 98 toastService.error( 99 $scope.activeModalProps.errorMessage); 100 }) 101 }; 102 103 const editServer = () => { 104 $scope.loading = true; 105 APIUtils.updateRemoteLoggingServer($scope.remoteServerForm) 106 .then(() => { 107 $scope.loading = false; 108 $scope.remoteServer = {...$scope.remoteServerForm}; 109 toastService.success( 110 $scope.activeModalProps.successMessage); 111 }) 112 .catch(() => { 113 $scope.loading = false; 114 setFormValues(); 115 toastService.error( 116 $scope.activeModalProps.errorMessage); 117 }) 118 }; 119 120 const removeServer = () => { 121 $scope.loading = true; 122 APIUtils.disableRemoteLoggingServer() 123 .then(() => { 124 $scope.loading = false; 125 $scope.remoteServer = undefined; 126 setFormValues(); 127 toastService.success( 128 $scope.activeModalProps.successMessage); 129 }) 130 .catch(() => { 131 $scope.loading = false; 132 toastService.error( 133 $scope.activeModalProps.errorMessage); 134 }) 135 }; 136 137 const setFormValues = () => { 138 $scope.remoteServerForm = {...$scope.remoteServer}; 139 }; 140 141 this.$onInit = () => { 142 APIUtils.getRemoteLoggingServer() 143 .then((remoteServer) => { 144 $scope.loadError = false; 145 $scope.remoteServer = remoteServer; 146 setFormValues(); 147 }) 148 .catch(() => { 149 $scope.loadError = true; 150 }) 151 }; 152 } 153 ] 154 } 155 } 156 ]) 157})(window.angular);