From 840d760094fb5dd7e78e42fab57f2589b6f708ea Mon Sep 17 00:00:00 2001 From: johc Date: Wed, 15 Nov 2023 17:48:27 +0100 Subject: [PATCH] Updated to endpoints and changed to localstorage --- .../frontend/js/controllers/configuration.js | 6 +-- .../js/controllers/surveyController.js | 42 ++++++++++--------- .../js/controllers/telemetryController.js | 8 ++-- flask_monitoringdashboard/static/js/app.js | 6 +-- .../static/pages/survey.html | 2 +- 5 files changed, 33 insertions(+), 31 deletions(-) diff --git a/flask_monitoringdashboard/frontend/js/controllers/configuration.js b/flask_monitoringdashboard/frontend/js/controllers/configuration.js index 2e68f757..ceb43edb 100644 --- a/flask_monitoringdashboard/frontend/js/controllers/configuration.js +++ b/flask_monitoringdashboard/frontend/js/controllers/configuration.js @@ -96,16 +96,16 @@ export function ConfigurationController($scope, $http, menuService, endpointServ $scope.telemetryConsent; $scope.fetchTelemetryConsent = function () { - $http.post(`/dashboard/get_telemetry_answered`) + $http.post(`/dashboard/get_is_telemetry_answered`) .then(function (response) { - $scope.telemetryConsent = response.data.get_telemetry_answered; + $scope.telemetryConsent = response.data; }, function (error) { console.error('Error fetching telemetry consent:', error); }); }; $scope.handleTelemetry = function (consent) { - $http.post('/dashboard/telemetry/accept_telemetry', { 'consent': consent }) + $http.post('/dashboard/telemetry/accept_telemetry_consent', { 'consent': consent }) .then(function (response) { }, function (error) { console.error('Error updating telemetry consent:', error); diff --git a/flask_monitoringdashboard/frontend/js/controllers/surveyController.js b/flask_monitoringdashboard/frontend/js/controllers/surveyController.js index 04afb4a1..8393d41b 100644 --- a/flask_monitoringdashboard/frontend/js/controllers/surveyController.js +++ b/flask_monitoringdashboard/frontend/js/controllers/surveyController.js @@ -1,7 +1,12 @@ export function SurveyController($scope, $http, $sce) { $scope.surveyShow = false; - $scope.surveyCompleted = false; // New flag for survey completion - $scope.surveyVariationIndex = 0; + $scope.surveyCompleted = false; + + // Fetch local storage variation index + const storedIndex = localStorage.getItem('surveyVariationIndex'); + $scope.surveyVariationIndex = storedIndex && !isNaN(parseInt(storedIndex)) ? parseInt(storedIndex) : 0; + + // Variations of the survey prompt $scope.surveyVariations = [ 'Please take a moment to fill out our survey.', 'Your feedback is valuable! Take our quick survey.', @@ -9,42 +14,39 @@ export function SurveyController($scope, $http, $sce) { 'Help us improve! Participate in our short survey.' ]; + // Mark as trusted HTML $scope.surveyVariations = $scope.surveyVariations.map(variation => $sce.trustAsHtml(variation) ); - - $scope.fetchSurveyStatus = function () { - $http.post('/dashboard/survey_status') + // Fetches the survey from database + $scope.fetchSurveyFilled = function () { + $http.post('/dashboard/get_is_survey_filled') .then(function (response) { - $scope.surveyVariationIndex = response.data.surveyVariationIndex; - $scope.surveyCompleted = response.data.surveyCompleted; - $scope.surveyShow = !$scope.surveyCompleted && ($scope.surveyVariationIndex < $scope.surveyVariations.length); + $scope.surveyCompleted = response.data.is_survey_filled; }, function (error) { console.error('Error fetching survey status:', error); }); + $scope.surveyShow = !$scope.surveyCompleted && ($scope.surveyVariationIndex < $scope.surveyVariations.length); }; - $scope.fetchSurveyStatus(); + $scope.fetchSurveyFilled(); + // Increment surveyVariation in localStorage $scope.closeSurvey = function () { if (!$scope.surveyCompleted) { $scope.surveyVariationIndex++; - $http.post('/dashboard/survey_status', { surveyVariationIndex: $scope.surveyVariationIndex }) - .then(function (response) { - $scope.surveyShow = false; - }, function (error) { - console.error('Error:', error); - }); + localStorage.setItem('surveyVariationIndex', $scope.surveyVariationIndex.toString()); } }; - $scope.surveyClicked = function () { - $http.post('/dashboard/survey_clicked') + // Mark survey as filled in database + $scope.surveyFilled = function () { + $http.post('/dashboard/survey_has_been_filled') .then(function (response) { - $scope.surveyCompleted = true; - $scope.surveyShow = false; }, function (error) { console.error('Error:', error); }); + $scope.surveyCompleted = true; + $scope.surveyShow = false; }; -} +} \ No newline at end of file diff --git a/flask_monitoringdashboard/frontend/js/controllers/telemetryController.js b/flask_monitoringdashboard/frontend/js/controllers/telemetryController.js index a28a4d3c..d9425f56 100644 --- a/flask_monitoringdashboard/frontend/js/controllers/telemetryController.js +++ b/flask_monitoringdashboard/frontend/js/controllers/telemetryController.js @@ -1,11 +1,11 @@ export function TelemetryController($scope, $http) { - $scope.telemetryShow = false; + $scope.telemetryShow = true; $scope.followUpShow = false; $scope.fetchTelemetryConsent = function () { - $http.post(`/dashboard/get_telemetry_answered`) + $http.post(`/dashboard/get_is_telemetry_answered`) .then(function (response) { - $scope.telemetryShow = !response.data.get_telemetry_answered; + $scope.telemetryShow = !response.data.is_telemetry_answered; }, function (error) { console.error('Error fetching telemetry consent:', error); }); @@ -16,7 +16,7 @@ export function TelemetryController($scope, $http) { $scope.telemetryShow = false; $scope.followUpShow = !consent; - $http.post('/dashboard/telemetry/accept_telemetry', { 'consent': consent }) + $http.post('/dashboard/telemetry/accept_telemetry_consent', { 'consent': consent }) .then(function (response) { $scope.telemetryShow = false; }, function (error) { diff --git a/flask_monitoringdashboard/static/js/app.js b/flask_monitoringdashboard/static/js/app.js index 6cb690f3..8611e313 100644 --- a/flask_monitoringdashboard/static/js/app.js +++ b/flask_monitoringdashboard/static/js/app.js @@ -49,7 +49,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ConfigurationController: () => (/* binding */ ConfigurationController)\n/* harmony export */ });\nconst HEADERS = {\r\n headers: {\r\n 'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8;'\r\n }\r\n}\r\n\r\nfunction ConfigurationController($scope, $http, menuService, endpointService, modalService) {\r\n endpointService.reset();\r\n menuService.reset('configuration');\r\n modalService.setConfirm('delete', () => deleteUser($scope.user));\r\n modalService.setConfirm('edit', () => editUser($scope.user));\r\n modalService.setConfirm('create', createUser);\r\n\r\n $scope.details = {};\r\n $scope.config = {};\r\n $scope.error = {};\r\n $scope.userData = [];\r\n\r\n $http.get('api/users').then(function (response) {\r\n $scope.userData = response.data;\r\n });\r\n\r\n $http.get('api/deploy_details').then(function (response) {\r\n $scope.details = response.data;\r\n });\r\n $http.get('api/deploy_config').then(function (response) {\r\n $scope.config = response.data;\r\n });\r\n\r\n $scope.openModal = function (name, user) {\r\n $scope.user = user;\r\n $(`#${name}Modal`).modal();\r\n }\r\n\r\n function fetchUsers() {\r\n $http.get('api/users').then(function (response) {\r\n $scope.userData = response.data; // reload user data\r\n });\r\n }\r\n\r\n function createUser() {\r\n $http.post(\r\n 'api/user/create',\r\n $.param({\r\n 'username': $('#create-username')[0].value,\r\n 'password': $('#create-pwd')[0].value,\r\n 'password2': $('#create-pwd2')[0].value,\r\n 'is_admin': $('#create-admin')[0].checked,\r\n }),\r\n HEADERS\r\n ).then(function (successResponse) {\r\n fetchUsers();\r\n $('#createModal').modal('hide');\r\n modalService.setErrorMessage('create', null); // remove error message.\r\n }, function (errorResponse) {\r\n modalService.setErrorMessage('create', errorResponse.data.message);\r\n });\r\n }\r\n\r\n function editUser() {\r\n $http.post(\r\n 'api/user/edit',\r\n $.param({\r\n 'user_id': $scope.user.id,\r\n 'old_password': $('#edit-old-pwd')[0].value,\r\n 'new_password': $('#edit-new-pwd')[0].value,\r\n 'new_password2': $('#edit-new-pwd2')[0].value,\r\n 'is_admin': $('#edit-admin')[0].checked,\r\n }),\r\n HEADERS\r\n ).then(function (successResponse) {\r\n fetchUsers();\r\n $('#editModal').modal('hide');\r\n modalService.setErrorMessage('edit', null); // remove error message.\r\n }, function (errorResponse) {\r\n modalService.setErrorMessage('edit', errorResponse.data.message);\r\n });\r\n }\r\n\r\n function deleteUser(user) {\r\n $http.post(\r\n 'api/user/delete',\r\n $.param({\r\n 'user_id': user.id\r\n }),\r\n HEADERS\r\n ).then(function (successResponse) {\r\n fetchUsers();\r\n $('#deleteModal').modal('hide');\r\n modalService.setErrorMessage('delete', null); // remove error message.\r\n }, function (errorResponse) {\r\n modalService.setErrorMessage('delete', errorResponse.data.message);\r\n });\r\n }\r\n\r\n $scope.telemetryConsent;\r\n\r\n $scope.fetchTelemetryConsent = function () {\r\n $http.post(`/dashboard/get_telemetry_answered`)\r\n .then(function (response) {\r\n $scope.telemetryConsent = response.data.get_telemetry_answered;\r\n }, function (error) {\r\n console.error('Error fetching telemetry consent:', error);\r\n });\r\n };\r\n\r\n $scope.handleTelemetry = function (consent) {\r\n $http.post('/dashboard/telemetry/accept_telemetry', { 'consent': consent })\r\n .then(function (response) {\r\n }, function (error) {\r\n console.error('Error updating telemetry consent:', error);\r\n });\r\n };\r\n\r\n $scope.fetchTelemetryConsent();\r\n\r\n}\n\n//# sourceURL=webpack://frontend/./js/controllers/configuration.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ConfigurationController: () => (/* binding */ ConfigurationController)\n/* harmony export */ });\nconst HEADERS = {\r\n headers: {\r\n 'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8;'\r\n }\r\n}\r\n\r\nfunction ConfigurationController($scope, $http, menuService, endpointService, modalService) {\r\n endpointService.reset();\r\n menuService.reset('configuration');\r\n modalService.setConfirm('delete', () => deleteUser($scope.user));\r\n modalService.setConfirm('edit', () => editUser($scope.user));\r\n modalService.setConfirm('create', createUser);\r\n\r\n $scope.details = {};\r\n $scope.config = {};\r\n $scope.error = {};\r\n $scope.userData = [];\r\n\r\n $http.get('api/users').then(function (response) {\r\n $scope.userData = response.data;\r\n });\r\n\r\n $http.get('api/deploy_details').then(function (response) {\r\n $scope.details = response.data;\r\n });\r\n $http.get('api/deploy_config').then(function (response) {\r\n $scope.config = response.data;\r\n });\r\n\r\n $scope.openModal = function (name, user) {\r\n $scope.user = user;\r\n $(`#${name}Modal`).modal();\r\n }\r\n\r\n function fetchUsers() {\r\n $http.get('api/users').then(function (response) {\r\n $scope.userData = response.data; // reload user data\r\n });\r\n }\r\n\r\n function createUser() {\r\n $http.post(\r\n 'api/user/create',\r\n $.param({\r\n 'username': $('#create-username')[0].value,\r\n 'password': $('#create-pwd')[0].value,\r\n 'password2': $('#create-pwd2')[0].value,\r\n 'is_admin': $('#create-admin')[0].checked,\r\n }),\r\n HEADERS\r\n ).then(function (successResponse) {\r\n fetchUsers();\r\n $('#createModal').modal('hide');\r\n modalService.setErrorMessage('create', null); // remove error message.\r\n }, function (errorResponse) {\r\n modalService.setErrorMessage('create', errorResponse.data.message);\r\n });\r\n }\r\n\r\n function editUser() {\r\n $http.post(\r\n 'api/user/edit',\r\n $.param({\r\n 'user_id': $scope.user.id,\r\n 'old_password': $('#edit-old-pwd')[0].value,\r\n 'new_password': $('#edit-new-pwd')[0].value,\r\n 'new_password2': $('#edit-new-pwd2')[0].value,\r\n 'is_admin': $('#edit-admin')[0].checked,\r\n }),\r\n HEADERS\r\n ).then(function (successResponse) {\r\n fetchUsers();\r\n $('#editModal').modal('hide');\r\n modalService.setErrorMessage('edit', null); // remove error message.\r\n }, function (errorResponse) {\r\n modalService.setErrorMessage('edit', errorResponse.data.message);\r\n });\r\n }\r\n\r\n function deleteUser(user) {\r\n $http.post(\r\n 'api/user/delete',\r\n $.param({\r\n 'user_id': user.id\r\n }),\r\n HEADERS\r\n ).then(function (successResponse) {\r\n fetchUsers();\r\n $('#deleteModal').modal('hide');\r\n modalService.setErrorMessage('delete', null); // remove error message.\r\n }, function (errorResponse) {\r\n modalService.setErrorMessage('delete', errorResponse.data.message);\r\n });\r\n }\r\n\r\n $scope.telemetryConsent;\r\n\r\n $scope.fetchTelemetryConsent = function () {\r\n $http.post(`/dashboard/get_is_telemetry_answered`)\r\n .then(function (response) {\r\n $scope.telemetryConsent = response.data;\r\n }, function (error) {\r\n console.error('Error fetching telemetry consent:', error);\r\n });\r\n };\r\n\r\n $scope.handleTelemetry = function (consent) {\r\n $http.post('/dashboard/telemetry/accept_telemetry_consent', { 'consent': consent })\r\n .then(function (response) {\r\n }, function (error) {\r\n console.error('Error updating telemetry consent:', error);\r\n });\r\n };\r\n\r\n $scope.fetchTelemetryConsent();\r\n\r\n}\n\n//# sourceURL=webpack://frontend/./js/controllers/configuration.js?"); /***/ }), @@ -225,7 +225,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ SurveyController: () => (/* binding */ SurveyController)\n/* harmony export */ });\nfunction SurveyController($scope, $http, $sce) {\r\n $scope.surveyShow = false;\r\n $scope.surveyCompleted = false; // New flag for survey completion\r\n $scope.surveyVariationIndex = 0;\r\n $scope.surveyVariations = [\r\n 'Please take a moment to fill out our survey.',\r\n 'Your feedback is valuable! Take our quick survey.',\r\n 'We value your opinion! Click here to share your thoughts.',\r\n 'Help us improve! Participate in our short survey.'\r\n ];\r\n\r\n $scope.surveyVariations = $scope.surveyVariations.map(variation =>\r\n $sce.trustAsHtml(variation)\r\n );\r\n \r\n\r\n $scope.fetchSurveyStatus = function () {\r\n $http.post('/dashboard/survey_status')\r\n .then(function (response) {\r\n $scope.surveyVariationIndex = response.data.surveyVariationIndex;\r\n $scope.surveyCompleted = response.data.surveyCompleted;\r\n $scope.surveyShow = !$scope.surveyCompleted && ($scope.surveyVariationIndex < $scope.surveyVariations.length);\r\n }, function (error) {\r\n console.error('Error fetching survey status:', error);\r\n });\r\n };\r\n $scope.fetchSurveyStatus();\r\n\r\n $scope.closeSurvey = function () {\r\n if (!$scope.surveyCompleted) {\r\n $scope.surveyVariationIndex++;\r\n $http.post('/dashboard/survey_status', { surveyVariationIndex: $scope.surveyVariationIndex })\r\n .then(function (response) {\r\n $scope.surveyShow = false;\r\n }, function (error) {\r\n console.error('Error:', error);\r\n });\r\n }\r\n };\r\n\r\n $scope.surveyClicked = function () {\r\n $http.post('/dashboard/survey_clicked')\r\n .then(function (response) {\r\n $scope.surveyCompleted = true;\r\n $scope.surveyShow = false;\r\n }, function (error) {\r\n console.error('Error:', error);\r\n });\r\n };\r\n}\r\n\n\n//# sourceURL=webpack://frontend/./js/controllers/surveyController.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ SurveyController: () => (/* binding */ SurveyController)\n/* harmony export */ });\nfunction SurveyController($scope, $http, $sce) {\r\n $scope.surveyShow = false;\r\n $scope.surveyCompleted = false;\r\n\r\n // Fetch local storage variation index\r\n const storedIndex = localStorage.getItem('surveyVariationIndex');\r\n $scope.surveyVariationIndex = storedIndex && !isNaN(parseInt(storedIndex)) ? parseInt(storedIndex) : 0;\r\n\r\n // Variations of the survey prompt\r\n $scope.surveyVariations = [\r\n 'Please take a moment to fill out our survey.',\r\n 'Your feedback is valuable! Take our quick survey.',\r\n 'We value your opinion! Click here to share your thoughts.',\r\n 'Help us improve! Participate in our short survey.'\r\n ];\r\n\r\n // Mark as trusted HTML\r\n $scope.surveyVariations = $scope.surveyVariations.map(variation =>\r\n $sce.trustAsHtml(variation)\r\n );\r\n\r\n // Fetches the survey from database\r\n $scope.fetchSurveyFilled = function () {\r\n $http.post('/dashboard/get_is_survey_filled')\r\n .then(function (response) {\r\n $scope.surveyCompleted = response.data.is_survey_filled;\r\n }, function (error) {\r\n console.error('Error fetching survey status:', error);\r\n });\r\n $scope.surveyShow = !$scope.surveyCompleted && ($scope.surveyVariationIndex < $scope.surveyVariations.length);\r\n };\r\n $scope.fetchSurveyFilled();\r\n\r\n // Increment surveyVariation in localStorage\r\n $scope.closeSurvey = function () {\r\n if (!$scope.surveyCompleted) {\r\n $scope.surveyVariationIndex++;\r\n localStorage.setItem('surveyVariationIndex', $scope.surveyVariationIndex.toString());\r\n }\r\n };\r\n\r\n // Mark survey as filled in database\r\n $scope.surveyFilled = function () {\r\n $http.post('/dashboard/survey_has_been_filled')\r\n .then(function (response) {\r\n }, function (error) {\r\n console.error('Error:', error);\r\n });\r\n $scope.surveyCompleted = true;\r\n $scope.surveyShow = false;\r\n };\r\n}\n\n//# sourceURL=webpack://frontend/./js/controllers/surveyController.js?"); /***/ }), @@ -236,7 +236,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ TelemetryController: () => (/* binding */ TelemetryController)\n/* harmony export */ });\nfunction TelemetryController($scope, $http) {\r\n $scope.telemetryShow = false;\r\n $scope.followUpShow = false;\r\n\r\n $scope.fetchTelemetryConsent = function () {\r\n $http.post(`/dashboard/get_telemetry_answered`)\r\n .then(function (response) {\r\n $scope.telemetryShow = !response.data.get_telemetry_answered;\r\n }, function (error) {\r\n console.error('Error fetching telemetry consent:', error);\r\n });\r\n };\r\n $scope.fetchTelemetryConsent();\r\n\r\n $scope.handleTelemetry = function (consent) {\r\n $scope.telemetryShow = false;\r\n $scope.followUpShow = !consent;\r\n\r\n $http.post('/dashboard/telemetry/accept_telemetry', { 'consent': consent })\r\n .then(function (response) {\r\n $scope.telemetryShow = false;\r\n }, function (error) {\r\n console.error('Error updating telemetry consent:', error);\r\n });\r\n };\r\n\r\n $scope.reasons = {\r\n privacy: false,\r\n performance: false,\r\n trust: false,\r\n other: false\r\n };\r\n $scope.customReason = '';\r\n\r\n var config = {\r\n headers: {\r\n 'X-Parse-Application-Id': '',\r\n 'X-Parse-REST-API-Key': '',\r\n 'Content-Type': 'application/json'\r\n }\r\n };\r\n\r\n $scope.submitFollowUp = function () {\r\n $scope.followUpShow = false;\r\n\r\n var feedback = [];\r\n for (var key in $scope.reasons) {\r\n if ($scope.reasons[key]) {\r\n if (key === 'other') {\r\n feedback.push(key);\r\n if ($scope.customReason.trim() !== '') {\r\n feedback.push({ other: $scope.customReason });\r\n }\r\n } else {\r\n feedback.push(key);\r\n }\r\n }\r\n }\r\n $http.post('https://parseapi.back4app.com/classes/FollowUp', { reasons: feedback }, config)\r\n .then(function (response) {\r\n console.log('Feedback sent:', response.data);\r\n }, function (error) {\r\n console.error('Error sending feedback:', error);\r\n });\r\n };\r\n}\n\n//# sourceURL=webpack://frontend/./js/controllers/telemetryController.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ TelemetryController: () => (/* binding */ TelemetryController)\n/* harmony export */ });\nfunction TelemetryController($scope, $http) {\r\n $scope.telemetryShow = true;\r\n $scope.followUpShow = false;\r\n\r\n $scope.fetchTelemetryConsent = function () {\r\n $http.post(`/dashboard/get_is_telemetry_answered`)\r\n .then(function (response) {\r\n $scope.telemetryShow = !response.data.is_telemetry_answered;\r\n }, function (error) {\r\n console.error('Error fetching telemetry consent:', error);\r\n });\r\n };\r\n $scope.fetchTelemetryConsent();\r\n\r\n $scope.handleTelemetry = function (consent) {\r\n $scope.telemetryShow = false;\r\n $scope.followUpShow = !consent;\r\n\r\n $http.post('/dashboard/telemetry/accept_telemetry_consent', { 'consent': consent })\r\n .then(function (response) {\r\n $scope.telemetryShow = false;\r\n }, function (error) {\r\n console.error('Error updating telemetry consent:', error);\r\n });\r\n };\r\n\r\n $scope.reasons = {\r\n privacy: false,\r\n performance: false,\r\n trust: false,\r\n other: false\r\n };\r\n $scope.customReason = '';\r\n\r\n var config = {\r\n headers: {\r\n 'X-Parse-Application-Id': '',\r\n 'X-Parse-REST-API-Key': '',\r\n 'Content-Type': 'application/json'\r\n }\r\n };\r\n\r\n $scope.submitFollowUp = function () {\r\n $scope.followUpShow = false;\r\n\r\n var feedback = [];\r\n for (var key in $scope.reasons) {\r\n if ($scope.reasons[key]) {\r\n if (key === 'other') {\r\n feedback.push(key);\r\n if ($scope.customReason.trim() !== '') {\r\n feedback.push({ other: $scope.customReason });\r\n }\r\n } else {\r\n feedback.push(key);\r\n }\r\n }\r\n }\r\n $http.post('https://parseapi.back4app.com/classes/FollowUp', { reasons: feedback }, config)\r\n .then(function (response) {\r\n console.log('Feedback sent:', response.data);\r\n }, function (error) {\r\n console.error('Error sending feedback:', error);\r\n });\r\n };\r\n}\n\n//# sourceURL=webpack://frontend/./js/controllers/telemetryController.js?"); /***/ }), diff --git a/flask_monitoringdashboard/static/pages/survey.html b/flask_monitoringdashboard/static/pages/survey.html index 448d95f6..31b4715f 100644 --- a/flask_monitoringdashboard/static/pages/survey.html +++ b/flask_monitoringdashboard/static/pages/survey.html @@ -1,5 +1,5 @@
Survey: - + ×