From 3224bf5af031c0c98bcbdc79d513f8efb2d1bf9b Mon Sep 17 00:00:00 2001 From: seefo Date: Mon, 19 Jun 2017 11:52:49 -0700 Subject: [PATCH] Domain server settings will now tell user if saving will restart DS --- .../resources/describe-settings.json | 1 + .../resources/web/settings/index.shtml | 4 +-- .../resources/web/settings/js/settings.js | 26 ++++++++++++++++++- 3 files changed, 28 insertions(+), 3 deletions(-) diff --git a/domain-server/resources/describe-settings.json b/domain-server/resources/describe-settings.json index c5e9b08143..1f0fb01bf4 100644 --- a/domain-server/resources/describe-settings.json +++ b/domain-server/resources/describe-settings.json @@ -147,6 +147,7 @@ { "name": "security", "label": "Security", + "restart": true, "settings": [ { "name": "http_username", diff --git a/domain-server/resources/web/settings/index.shtml b/domain-server/resources/web/settings/index.shtml index 1812c52dad..9d38539b42 100644 --- a/domain-server/resources/web/settings/index.shtml +++ b/domain-server/resources/web/settings/index.shtml @@ -26,7 +26,7 @@ - + @@ -77,7 +77,7 @@ diff --git a/domain-server/resources/web/settings/js/settings.js b/domain-server/resources/web/settings/js/settings.js index 39628ebb11..d2220f9296 100644 --- a/domain-server/resources/web/settings/js/settings.js +++ b/domain-server/resources/web/settings/js/settings.js @@ -1328,6 +1328,18 @@ function makeTableCategoryInput(setting, numVisibleColumns) { return html; } +function getDescriptionForKey(key) { + for(var i in Settings.data.descriptions) { + if(Settings.data.descriptions[i].name === key) { + return Settings.data.descriptions[i]; + } + } +} + +var SAVE_BUTTON_LABEL_SAVE = "Save"; +var SAVE_BUTTON_LABEL_RESTART = "Save and restart"; +var reasonsForRestart = []; + function badgeSidebarForDifferences(changedElement) { // figure out which group this input is in var panelParentID = changedElement.closest('.panel').attr('id'); @@ -1350,13 +1362,24 @@ function badgeSidebarForDifferences(changedElement) { } var badgeValue = 0 + var description = getDescriptionForKey(panelParentID); // badge for any settings we have that are not the same or are not present in initialValues for (var setting in panelJSON) { if ((!_.has(initialPanelJSON, setting) && panelJSON[setting] !== "") || (!_.isEqual(panelJSON[setting], initialPanelJSON[setting]) && (panelJSON[setting] !== "" || _.has(initialPanelJSON, setting)))) { - badgeValue += 1 + badgeValue += 1; + + // add a reason to restart + if(description && description.restart) { + reasonsForRestart.push(setting); + } + } else { + // remove a reason to restart + if(description && description.restart) { + reasonsForRestart = $.grep(reasonsForRestart, function(v) { return v != setting; }); + } } } @@ -1365,6 +1388,7 @@ function badgeSidebarForDifferences(changedElement) { badgeValue = "" } + $(".save-button").html(reasonsForRestart.length > 0 ? SAVE_BUTTON_LABEL_RESTART : SAVE_BUTTON_LABEL_SAVE); $("a[href='#" + panelParentID + "'] .badge").html(badgeValue); }