diff --git a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/static/dashboard/fault_management/active_alarms/active_alarms.controller.js b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/static/dashboard/fault_management/active_alarms/active_alarms.controller.js new file mode 100644 index 00000000..c2df6da0 --- /dev/null +++ b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/static/dashboard/fault_management/active_alarms/active_alarms.controller.js @@ -0,0 +1,93 @@ +/** + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. You may obtain + * a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + */ +/** + * Copyright (c) 2024 Wind River Systems, Inc. + * + * SPDX-License-Identifier: Apache-2.0 + * + */ + +(function() { + 'use strict'; + + angular + .module('horizon.dashboard.fault_management.active_alarms') + .controller('ActiveAlarmsController', ['horizon.dashboard.fault_management.active_alarms.service', '$scope', ActiveAlarmsController]); + + var fieldMappings = { + 'alarm_id': 'Alarm ID', + 'reason_text': 'Reason Text', + 'entity_instance_id': 'Entity Instance ID', + 'severity': 'Severity', + 'timestamp': 'Timestamp', + }; + + function ActiveAlarmsController(activeAlarmsService, $scope) { + $scope.downloadAlarmsData = function() { + activeAlarmsService.getPromise().then(function(response) { + var csvData = convertToCSV(response.data.items, fieldMappings); + triggerDownload(csvData, 'active-alarms-data.csv'); + }); + }; + + function convertToCSV(objArray, fieldMappings) { + var array = objArray; + var str = ''; + var row = ''; + + // Header + for (var index in objArray[0]) { + if (fieldMappings[index]) { + row += '"' + fieldMappings[index].replace(/"/g, '""') + '",'; + } + } + row = row.slice(0, -1); + str += row + '\r\n'; + + // Data + for (var i = 0; i < array.length; i++) { + var line = ''; + for (var index in array[i]) { + if (fieldMappings[index]) { + var data = array[i][index]; + + if (data && typeof data === 'string') { + // Escape double quotes and replace internal line breaks + data = data.replace(/"/g, '""').replace(/(\r\n|\n|\r)/gm, " "); + } + + line += '"' + data + '",'; + } + } + line = line.slice(0, -1); + str += line + '\r\n'; + } + return str; + } + + function triggerDownload(csvData, filename) { + var blob = new Blob([csvData], { type: 'text/csv;charset=utf-8;' }); + var link = document.createElement("a"); + if (link.download !== undefined) { + var url = URL.createObjectURL(blob); + link.setAttribute("href", url); + link.setAttribute("download", filename); + link.style.visibility = 'hidden'; + document.body.appendChild(link); + link.click(); + document.body.removeChild(link); + } + } + } + })(); diff --git a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/static/dashboard/fault_management/active_alarms/active_alarms.module.js b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/static/dashboard/fault_management/active_alarms/active_alarms.module.js index 8a6b6c40..82a7791d 100644 --- a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/static/dashboard/fault_management/active_alarms/active_alarms.module.js +++ b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/static/dashboard/fault_management/active_alarms/active_alarms.module.js @@ -12,7 +12,7 @@ * under the License. */ /** - * Copyright (c) 2019 Wind River Systems, Inc. + * Copyright (c) 2019-2024 Wind River Systems, Inc. * * SPDX-License-Identifier: Apache-2.0 * @@ -181,6 +181,7 @@ $provide.constant('horizon.dashboard.fault_management.active_alarms.basePath', path); $routeProvider.when('/admin/active_alarms', { templateUrl: path + 'panel.html', + controller: 'ActiveAlarmsController', resolve: { searchResults: ['horizon.dashboard.fault_management.active_alarms.service', function (searchService) { return searchService.getSuppressionList(); diff --git a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/static/dashboard/fault_management/active_alarms/panel.html b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/static/dashboard/fault_management/active_alarms/panel.html index 1b087419..94b3b323 100644 --- a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/static/dashboard/fault_management/active_alarms/panel.html +++ b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/static/dashboard/fault_management/active_alarms/panel.html @@ -1,6 +1,11 @@ - + +
+ Export CSV Report +
+
diff --git a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/static/dashboard/fault_management/events/events.controller.js b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/static/dashboard/fault_management/events/events.controller.js new file mode 100644 index 00000000..de763c39 --- /dev/null +++ b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/static/dashboard/fault_management/events/events.controller.js @@ -0,0 +1,94 @@ +/** + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. You may obtain + * a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + */ +/** + * Copyright (c) 2024 Wind River Systems, Inc. + * + * SPDX-License-Identifier: Apache-2.0 + * + */ + +(function() { + 'use strict'; + + angular + .module('horizon.dashboard.fault_management.events') + .controller('EventsController', ['horizon.dashboard.fault_management.events.service', '$scope', EventsController]); + + var fieldMappings = { + 'timestamp': 'Timestamp', + 'state': 'State', + 'event_log_id': 'Event ID', + 'reason_text': 'Reason Text', + 'entity_instance_id': 'Entity Instance ID', + 'severity': 'Severity', + }; + + function EventsController(eventsService, $scope) { + $scope.downloadEventData = function() { + eventsService.getPromise().then(function(response) { + var csvData = convertToCSV(response.data.items, fieldMappings); + triggerDownload(csvData, 'events-data.csv'); + }); + }; + + function convertToCSV(objArray, fieldMappings) { + var array = objArray; + var str = ''; + var row = ''; + + // Header + for (var index in objArray[0]) { + if (fieldMappings[index]) { + row += '"' + fieldMappings[index].replace(/"/g, '""') + '",'; + } + } + row = row.slice(0, -1); + str += row + '\r\n'; + + // Data + for (var i = 0; i < array.length; i++) { + var line = ''; + for (var index in array[i]) { + if (fieldMappings[index]) { + var data = array[i][index]; + + if (data && typeof data === 'string') { + // Escape double quotes and replace internal line breaks + data = data.replace(/"/g, '""').replace(/(\r\n|\n|\r)/gm, " "); + } + + line += '"' + data + '",'; + } + } + line = line.slice(0, -1); + str += line + '\r\n'; + } + return str; + } + + function triggerDownload(csvData, filename) { + var blob = new Blob([csvData], { type: 'text/csv;charset=utf-8;' }); + var link = document.createElement("a"); + if (link.download !== undefined) { + var url = URL.createObjectURL(blob); + link.setAttribute("href", url); + link.setAttribute("download", filename); + link.style.visibility = 'hidden'; + document.body.appendChild(link); + link.click(); + document.body.removeChild(link); + } + } + } + })(); diff --git a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/static/dashboard/fault_management/events/events.module.js b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/static/dashboard/fault_management/events/events.module.js index 08d20885..e336eaba 100644 --- a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/static/dashboard/fault_management/events/events.module.js +++ b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/static/dashboard/fault_management/events/events.module.js @@ -12,7 +12,7 @@ * under the License. */ /** - * Copyright (c) 2019 Wind River Systems, Inc. + * Copyright (c) 2019-2024 Wind River Systems, Inc. * * SPDX-License-Identifier: Apache-2.0 * @@ -195,6 +195,7 @@ $routeProvider.when('/admin/events', { templateUrl: path + 'panel.html', + controller: 'EventsController', resolve: { searchResults: ['horizon.dashboard.fault_management.events.service', function (searchService) { return searchService.getSuppressionList(); diff --git a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/static/dashboard/fault_management/events/panel.html b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/static/dashboard/fault_management/events/panel.html index 3e8ac9cc..595fe5ec 100644 --- a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/static/dashboard/fault_management/events/panel.html +++ b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/static/dashboard/fault_management/events/panel.html @@ -1,6 +1,11 @@ - + +
+ Export CSV Report +
+
diff --git a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/static/dashboard/fault_management/events_suppression/events_suppression.controller.js b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/static/dashboard/fault_management/events_suppression/events_suppression.controller.js new file mode 100644 index 00000000..1efdf134 --- /dev/null +++ b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/static/dashboard/fault_management/events_suppression/events_suppression.controller.js @@ -0,0 +1,91 @@ +/** + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. You may obtain + * a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + */ +/** + * Copyright (c) 2024 Wind River Systems, Inc. + * + * SPDX-License-Identifier: Apache-2.0 + * + */ + +(function() { + 'use strict'; + + angular + .module('horizon.dashboard.fault_management.events_suppression') + .controller('EventsSuppressionController', ['horizon.dashboard.fault_management.events_suppression.service', '$scope', EventsSuppressionController]); + + var fieldMappings = { + 'alarm_id': 'Event ID', + 'description': 'Description', + 'suppression_status': 'Status' + }; + + function EventsSuppressionController(eventsSuppressionService, $scope) { + $scope.downloadEventsSuppressionData = function() { + eventsSuppressionService.getPromise().then(function(response) { + var csvData = convertToCSV(response.data.items, fieldMappings); + triggerDownload(csvData, 'events-suppression-data.csv'); + }); + }; + + function convertToCSV(objArray, fieldMappings) { + var array = objArray; + var str = ''; + var row = ''; + + // Header + for (var index in objArray[0]) { + if (fieldMappings[index]) { + row += '"' + fieldMappings[index].replace(/"/g, '""') + '",'; + } + } + row = row.slice(0, -1); + str += row + '\r\n'; + + // Data + for (var i = 0; i < array.length; i++) { + var line = ''; + for (var index in array[i]) { + if (fieldMappings[index]) { + var data = array[i][index]; + + if (data && typeof data === 'string') { + // Escape double quotes and replace internal line breaks + data = data.replace(/"/g, '""').replace(/(\r\n|\n|\r)/gm, " "); + } + + line += '"' + data + '",'; + } + } + line = line.slice(0, -1); + str += line + '\r\n'; + } + return str; + } + + function triggerDownload(csvData, filename) { + var blob = new Blob([csvData], { type: 'text/csv;charset=utf-8;' }); + var link = document.createElement("a"); + if (link.download !== undefined) { + var url = URL.createObjectURL(blob); + link.setAttribute("href", url); + link.setAttribute("download", filename); + link.style.visibility = 'hidden'; + document.body.appendChild(link); + link.click(); + document.body.removeChild(link); + } + } + } + })(); diff --git a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/static/dashboard/fault_management/events_suppression/events_suppression.module.js b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/static/dashboard/fault_management/events_suppression/events_suppression.module.js index 7008583a..3be04941 100644 --- a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/static/dashboard/fault_management/events_suppression/events_suppression.module.js +++ b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/static/dashboard/fault_management/events_suppression/events_suppression.module.js @@ -12,7 +12,7 @@ * under the License. */ /** - * Copyright (c) 2019 Wind River Systems, Inc. + * Copyright (c) 2019-2024 Wind River Systems, Inc. * * SPDX-License-Identifier: Apache-2.0 * @@ -130,7 +130,8 @@ var path = $windowProvider.$get().STATIC_URL + 'dashboard/fault_management/events_suppression/'; $provide.constant('horizon.dashboard.fault_management.events_suppression.basePath', path); $routeProvider.when('/admin/events_suppression', { - templateUrl: path + 'panel.html' + templateUrl: path + 'panel.html', + controller: 'EventsSuppressionController', }); } })(); diff --git a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/static/dashboard/fault_management/events_suppression/panel.html b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/static/dashboard/fault_management/events_suppression/panel.html index 2734f711..acb2506b 100644 --- a/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/static/dashboard/fault_management/events_suppression/panel.html +++ b/starlingx-dashboard/starlingx-dashboard/starlingx_dashboard/static/dashboard/fault_management/events_suppression/panel.html @@ -2,5 +2,9 @@ - +
+ Export CSV Report +
+ +