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