blob: 4e8ad6f532c7a379a178e136c40f491ef8807d1f [file] [log] [blame]
window.angular && (function(angular) {
'use strict';
angular.module('app.common.directives').directive('remoteLoggingServer', [
'APIUtils',
function(APIUtils) {
return {
'restrict': 'E', 'template': require('./remote-logging-server.html'),
'controller': [
'$scope', '$uibModal', 'toastService',
function($scope, $uibModal, toastService) {
const modalActions = {
ADD: 0,
EDIT: 1,
REMOVE: 2,
properties: {
0: {
title: 'Add remote logging server',
actionLabel: 'Add',
successMessage: 'Connected to remote logging server.',
errorMessage: 'Unable to connect to server.'
},
1: {
title: 'Edit remote logging server',
actionLabel: 'Save',
successMessage: 'Connected to remote logging server.',
errorMessage: 'Unable to save remote logging server.'
},
2: {
title: 'Remove remote logging server',
actionLabel: 'Remove',
successMessage: 'Remote logging server removed.',
errorMessage: 'Unable to remove remote logging server.'
}
}
};
const modalTemplate =
require('./remote-logging-server-modal.html');
$scope.activeModal;
$scope.activeModalProps;
$scope.remoteServer;
$scope.remoteServerForm;
$scope.loadError = true;
$scope.initModal = (type) => {
if (type === undefined) {
return;
}
$scope.activeModal = type;
$scope.activeModalProps = modalActions.properties[type];
$uibModal
.open({
template: modalTemplate,
windowTopClass: 'uib-modal',
scope: $scope,
ariaLabelledBy: 'dialog_label'
})
.result
.then((action) => {
switch (action) {
case modalActions.ADD:
addServer();
break;
case modalActions.EDIT:
editServer();
break;
case modalActions.REMOVE:
removeServer();
break;
default:
setFormValues();
}
})
.catch(() => {
// reset form when modal overlay clicked
// and modal closes
setFormValues();
})
};
const addServer = () => {
$scope.loading = true;
APIUtils.setRemoteLoggingServer($scope.remoteServerForm)
.then(() => {
$scope.loading = false;
$scope.remoteServer = {...$scope.remoteServerForm};
toastService.success(
$scope.activeModalProps.successMessage);
})
.catch(() => {
$scope.loading = false;
$scope.remoteServer = undefined;
setFormValues();
toastService.error(
$scope.activeModalProps.errorMessage);
})
};
const editServer = () => {
$scope.loading = true;
APIUtils.updateRemoteLoggingServer($scope.remoteServerForm)
.then(() => {
$scope.loading = false;
$scope.remoteServer = {...$scope.remoteServerForm};
toastService.success(
$scope.activeModalProps.successMessage);
})
.catch(() => {
$scope.loading = false;
setFormValues();
toastService.error(
$scope.activeModalProps.errorMessage);
})
};
const removeServer = () => {
$scope.loading = true;
APIUtils.disableRemoteLoggingServer()
.then(() => {
$scope.loading = false;
$scope.remoteServer = undefined;
setFormValues();
toastService.success(
$scope.activeModalProps.successMessage);
})
.catch(() => {
$scope.loading = false;
toastService.error(
$scope.activeModalProps.errorMessage);
})
};
const setFormValues = () => {
$scope.remoteServerForm = {...$scope.remoteServer};
};
this.$onInit = () => {
APIUtils.getRemoteLoggingServer()
.then((remoteServer) => {
$scope.loadError = false;
$scope.remoteServer = remoteServer;
setFormValues();
})
.catch(() => {
$scope.loadError = true;
})
};
}
]
}
}
])
})(window.angular);