xref: /openbmc/phosphor-webui/app/server-health/directives/remote-logging-server.js (revision e4194ce0dc8a941c4f30fd0995f9ba4c13cec560)
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);