From 1b7479c968249fa8db66bbcc74a0aa1a3679cd32 Mon Sep 17 00:00:00 2001 From: Hannes Laimer Date: Tue, 26 Apr 2022 06:23:34 +0000 Subject: [PATCH] ui: utils: add function for parsing maintenance mode ...since the same code is used is more than one place Signed-off-by: Hannes Laimer --- www/Utils.js | 17 +++++++++++++---- www/datastore/Summary.js | 7 ++----- www/window/MaintenanceOptions.js | 8 ++------ 3 files changed, 17 insertions(+), 15 deletions(-) diff --git a/www/Utils.js b/www/Utils.js index 32f56278..9a53cc72 100644 --- a/www/Utils.js +++ b/www/Utils.js @@ -640,13 +640,22 @@ Ext.define('PBS.Utils', { return `${icon} ${value}`; }, + // FIXME: this "parser" is brittle and relies on the order the arguments will appear in + parseMaintenanceMode: function(mode) { + let [type, message] = mode.split(/,(.+)/); + type = type.split("=").pop(); + message = message ? message.split("=")[1] + .replace(/^"(.*)"$/, '$1') + .replaceAll('\\"', '"') : null; + return [type, message]; + }, + renderMaintenance: function(mode, activeTasks) { if (!mode) { return gettext('None'); } - // FIXME: this "parser" is brittle and relies on the order the arguments will appear in - let [type, message] = mode.split(","); - type = type.split("=").pop(); + + let [type, message] = PBS.Utils.parseMaintenanceMode(mode); const conflictingTasks = activeTasks.write + (type === 'offline' ? activeTasks.read : 0); @@ -659,7 +668,7 @@ Ext.define('PBS.Utils', { } if (message) { - extra += ` (${message.split("=").pop()})`; + extra += ` ("${message}")`; } let modeText = Proxmox.Utils.unknownText; diff --git a/www/datastore/Summary.js b/www/datastore/Summary.js index d7b53a3a..328aa561 100644 --- a/www/datastore/Summary.js +++ b/www/datastore/Summary.js @@ -49,12 +49,9 @@ Ext.define('PBS.DataStoreInfo', { success: function(response) { const config = response.result.data; if (config['maintenance-mode']) { - const [_type, msg] = config['maintenance-mode'].split(/,(.+)/); - const message = msg ? ': ' + msg.split("=")[1] - .replace(/^"(.*)"$/, '$1') - .replaceAll('\\"', '"') : ''; + const [_type, msg] = PBS.Utils.parseMaintenanceMode(config['maintenance-mode']); me.view.el.mask( - `${gettext('Datastore is in maintenance mode')}${message}`, + `${gettext('Datastore is in maintenance mode')}${msg ? ': ' + msg : ''}`, 'fa pbs-maintenance-mask', ); } else { diff --git a/www/window/MaintenanceOptions.js b/www/window/MaintenanceOptions.js index 47196b42..713da569 100644 --- a/www/window/MaintenanceOptions.js +++ b/www/window/MaintenanceOptions.js @@ -62,14 +62,10 @@ Ext.define('PBS.window.MaintenanceOptions', { 'maintenance-msg': '', }; if (values['maintenance-mode']) { - let [type, message] = values['maintenance-mode'].split(/,(.+)/); - type = type.split("=").pop(); - message = message ? message.split("=")[1] - .replace(/^"(.*)"$/, '$1') - .replaceAll('\\"', '"') : ''; + const [type, message] = PBS.Utils.parseMaintenanceMode(values['maintenance-mode']); options = { 'maintenance-type': type, - 'maintenance-msg': message, + 'maintenance-msg': message ?? '', }; }