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
+
+
+