From 62af203d08f4ffd398e555fc82c0fe176024fcca Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Tue, 26 Jul 2016 13:19:10 -0700 Subject: [PATCH] migrate the deprecated merged master/user config --- .../resources/describe-settings.json | 2 +- domain-server/resources/web/css/style.css | 9 ---- .../resources/web/settings/index.shtml | 6 +-- .../resources/web/settings/js/settings.js | 50 +++++++------------ .../src/DomainServerSettingsManager.cpp | 32 ++++++++---- libraries/shared/src/HifiConfigVariantMap.cpp | 13 +++-- libraries/shared/src/HifiConfigVariantMap.h | 1 + 7 files changed, 52 insertions(+), 61 deletions(-) diff --git a/domain-server/resources/describe-settings.json b/domain-server/resources/describe-settings.json index 524a687772..c888fa301b 100644 --- a/domain-server/resources/describe-settings.json +++ b/domain-server/resources/describe-settings.json @@ -1,5 +1,5 @@ { - "version": 1.6, + "version": 1.7, "settings": [ { "name": "metaverse", diff --git a/domain-server/resources/web/css/style.css b/domain-server/resources/web/css/style.css index b66b7df258..ef967a47bf 100644 --- a/domain-server/resources/web/css/style.css +++ b/domain-server/resources/web/css/style.css @@ -75,15 +75,6 @@ span.port { color: #666666; } -.locked { - color: #428bca; -} - -.locked-table { - cursor: not-allowed; - background-color: #eee; -} - .advanced-setting { display: none; } diff --git a/domain-server/resources/web/settings/index.shtml b/domain-server/resources/web/settings/index.shtml index 3f969ef913..4c937d6139 100644 --- a/domain-server/resources/web/settings/index.shtml +++ b/domain-server/resources/web/settings/index.shtml @@ -57,15 +57,13 @@
<% _.each(split_settings[0], function(setting) { %> <% keypath = isGrouped ? group.name + "." + setting.name : setting.name %> - <%= getFormGroup(keypath, setting, values, false, - (_.has(locked, group.name) && _.has(locked[group.name], setting.name))) %> + <%= getFormGroup(keypath, setting, values, false) %> <% }); %> <% if (!_.isEmpty(split_settings[1])) { %> <% $("#advanced-toggle-button").show() %> <% _.each(split_settings[1], function(setting) { %> <% keypath = isGrouped ? group.name + "." + setting.name : setting.name %> - <%= getFormGroup(keypath, setting, values, true, - (_.has(locked, group.name) && _.has(locked[group.name], setting.name))) %> + <%= getFormGroup(keypath, setting, values, true) %> <% }); %> <% }%>
diff --git a/domain-server/resources/web/settings/js/settings.js b/domain-server/resources/web/settings/js/settings.js index c1005de105..42fcb05d2e 100644 --- a/domain-server/resources/web/settings/js/settings.js +++ b/domain-server/resources/web/settings/js/settings.js @@ -41,7 +41,7 @@ var Settings = { }; var viewHelpers = { - getFormGroup: function(keypath, setting, values, isAdvanced, isLocked) { + getFormGroup: function(keypath, setting, values, isAdvanced) { form_group = "
"; setting_value = _(values).valueForKeyPath(keypath); @@ -54,9 +54,6 @@ var viewHelpers = { } label_class = 'control-label'; - if (isLocked) { - label_class += ' locked'; - } function common_attrs(extra_classes) { extra_classes = (!_.isUndefined(extra_classes) ? extra_classes : ""); @@ -71,9 +68,8 @@ var viewHelpers = { form_group += "" } - form_group += "
" - form_group += "" + form_group += "
" + form_group += "" if (setting.help) { form_group += "" + setting.help + ""; @@ -88,7 +84,7 @@ var viewHelpers = { } if (input_type === 'table') { - form_group += makeTable(setting, keypath, setting_value, isLocked) + form_group += makeTable(setting, keypath, setting_value) } else { if (input_type === 'select') { form_group += "" + "' value='" + setting_value + "'/>" } form_group += "" + setting.help + "" @@ -459,10 +453,8 @@ function setupHFAccountButton() { $("[data-keypath='metaverse.automatic_networking']").hide(); } - var tokenLocked = _(Settings.data).valueForKeyPath("locked.metaverse.access_token"); - // use the existing getFormGroup helper to ask for a button - var buttonGroup = viewHelpers.getFormGroup('', buttonSetting, Settings.data.values, false, tokenLocked); + var buttonGroup = viewHelpers.getFormGroup('', buttonSetting, Settings.data.values, false); // add the button group to the top of the metaverse panel $('#metaverse .panel-body').prepend(buttonGroup); @@ -673,7 +665,7 @@ function setupPlacesTable() { } // get a table for the places - var placesTableGroup = viewHelpers.getFormGroup('', placesTableSetting, Settings.data.values, false, false); + var placesTableGroup = viewHelpers.getFormGroup('', placesTableSetting, Settings.data.values, false); // append the places table in the right place $('#places_paths .panel-body').prepend(placesTableGroup); @@ -873,10 +865,8 @@ function reloadSettings(callback) { Settings.data = data; Settings.initialValues = form2js('settings-form', ".", false, cleanupFormValues, true); - if (!_.has(data["locked"], "metaverse") && !_.has(data["locked"]["metaverse"], "id")) { - // append the domain selection modal, as long as it's not locked - appendDomainIDButtons(); - } + // append the domain selection modal + appendDomainIDButtons(); // call our method to setup the HF account button setupHFAccountButton(); @@ -889,12 +879,6 @@ function reloadSettings(callback) { $('[data-toggle="tooltip"]').tooltip(); - // add tooltip to locked settings - $('label.locked').tooltip({ - placement: 'right', - title: 'This setting is in the master config file and cannot be changed' - }); - // call the callback now that settings are loaded callback(true); }).fail(function() { @@ -943,11 +927,11 @@ $('body').on('click', '.save-button', function(e){ return false; }); -function makeTable(setting, keypath, setting_value, isLocked) { +function makeTable(setting, keypath, setting_value) { var isArray = !_.has(setting, 'key'); var categoryKey = setting.categorize_by_key; var isCategorized = !!categoryKey && isArray; - + if (!isArray && setting.can_order) { setting.can_order = false; } @@ -961,7 +945,7 @@ function makeTable(setting, keypath, setting_value, isLocked) { var nonDeletableRowKey = setting["non-deletable-row-key"]; var nonDeletableRowValues = setting["non-deletable-row-values"]; - html += ""; @@ -976,7 +960,7 @@ function makeTable(setting, keypath, setting_value, isLocked) { _.each(setting.groups, function (group) { html += "" }) - if (!isLocked && !setting.read_only) { + if (!setting.read_only) { if (setting.can_order) { html += ""; @@ -1004,7 +988,7 @@ function makeTable(setting, keypath, setting_value, isLocked) { (col.class ? col.class : '') + "'>" + col.label + "" // Data }) - if (!isLocked && !setting.read_only) { + if (!setting.read_only) { if (setting.can_order) { numVisibleColumns++; html += "
" + group.label + "" @@ -1108,7 +1092,7 @@ function makeTable(setting, keypath, setting_value, isLocked) { } // populate inputs in the table for new values - if (!isLocked && !setting.read_only) { + if (!setting.read_only) { if (setting.can_add_new_categories) { html += makeTableCategoryInput(setting, numVisibleColumns); } diff --git a/domain-server/src/DomainServerSettingsManager.cpp b/domain-server/src/DomainServerSettingsManager.cpp index e85eebd309..bd916a43fe 100644 --- a/domain-server/src/DomainServerSettingsManager.cpp +++ b/domain-server/src/DomainServerSettingsManager.cpp @@ -95,6 +95,8 @@ void DomainServerSettingsManager::processSettingsRequestPacket(QSharedPointerclear(); - QVariant* permissions = valueForKeyPath(_configMap.getMergedConfig(), keyPath, true); + QVariant* permissions = valueForKeyPath(_configMap.getUserConfig(), keyPath, true); if (!permissions->canConvert(QMetaType::QVariantList)) { qDebug() << "Failed to extract permissions for key path" << keyPath << "from settings."; (*permissions) = QVariantList(); @@ -777,7 +788,7 @@ NodePermissions DomainServerSettingsManager::getForbiddensForGroup(const QUuid& } QVariant DomainServerSettingsManager::valueOrDefaultValueForKeyPath(const QString& keyPath) { - const QVariant* foundValue = valueForKeyPath(_configMap.getMergedConfig(), keyPath); + const QVariant* foundValue = valueForKeyPath(_configMap.getUserConfig(), keyPath); if (foundValue) { return *foundValue; @@ -860,12 +871,10 @@ bool DomainServerSettingsManager::handleAuthenticatedHTTPRequest(HTTPConnection // setup a JSON Object with descriptions and non-omitted settings const QString SETTINGS_RESPONSE_DESCRIPTION_KEY = "descriptions"; const QString SETTINGS_RESPONSE_VALUE_KEY = "values"; - const QString SETTINGS_RESPONSE_LOCKED_VALUES_KEY = "locked"; QJsonObject rootObject; rootObject[SETTINGS_RESPONSE_DESCRIPTION_KEY] = _descriptionArray; rootObject[SETTINGS_RESPONSE_VALUE_KEY] = responseObjectForType("", true); - rootObject[SETTINGS_RESPONSE_LOCKED_VALUES_KEY] = QJsonDocument::fromVariant(_configMap.getMasterConfig()).object(); connection->respond(HTTPConnection::StatusCode200, QJsonDocument(rootObject).toJson(), "application/json"); } @@ -910,13 +919,13 @@ QJsonObject DomainServerSettingsManager::responseObjectForType(const QString& ty QVariant variantValue; if (!groupKey.isEmpty()) { - QVariant settingsMapGroupValue = _configMap.getMergedConfig().value(groupKey); + QVariant settingsMapGroupValue = _configMap.getUserConfig().value(groupKey); if (!settingsMapGroupValue.isNull()) { variantValue = settingsMapGroupValue.toMap().value(settingName); } } else { - variantValue = _configMap.getMergedConfig().value(settingName); + variantValue = _configMap.getUserConfig().value(settingName); } QJsonValue result; @@ -1208,6 +1217,9 @@ void DomainServerSettingsManager::persistToFile() { settingsFile.write(QJsonDocument::fromVariant(_configMap.getUserConfig()).toJson()); } else { qCritical("Could not write to JSON settings file. Unable to persist settings."); + + // failed to write, reload whatever the current config state is + _configMap.loadConfig(_argumentList); } } diff --git a/libraries/shared/src/HifiConfigVariantMap.cpp b/libraries/shared/src/HifiConfigVariantMap.cpp index 5ae5ff740d..30eb200770 100644 --- a/libraries/shared/src/HifiConfigVariantMap.cpp +++ b/libraries/shared/src/HifiConfigVariantMap.cpp @@ -111,6 +111,13 @@ void HifiConfigVariantMap::loadMasterAndUserConfig(const QStringList& argumentLi loadMapFromJSONFile(_masterConfig, masterConfigFilepath); } + // load the user config - that method replaces loadMasterAndUserConfig after the 1.7 migration + loadConfig(argumentList); + + mergeMasterAndUserConfigs(); +} + +void HifiConfigVariantMap::loadConfig(const QStringList& argumentList) { // load the user config const QString USER_CONFIG_FILE_OPTION = "--user-config"; static const QString USER_CONFIG_FILE_NAME = "config.json"; @@ -159,12 +166,10 @@ void HifiConfigVariantMap::loadMasterAndUserConfig(const QStringList& argumentLi } } } - + } - + loadMapFromJSONFile(_userConfig, _userConfigFilename); - - mergeMasterAndUserConfigs(); } void HifiConfigVariantMap::mergeMasterAndUserConfigs() { diff --git a/libraries/shared/src/HifiConfigVariantMap.h b/libraries/shared/src/HifiConfigVariantMap.h index e92561cff5..06e28cf182 100644 --- a/libraries/shared/src/HifiConfigVariantMap.h +++ b/libraries/shared/src/HifiConfigVariantMap.h @@ -21,6 +21,7 @@ public: HifiConfigVariantMap(); void loadMasterAndUserConfig(const QStringList& argumentList); + void loadConfig(const QStringList& argumentList); const QVariantMap& getMasterConfig() const { return _masterConfig; } QVariantMap& getUserConfig() { return _userConfig; }