From 61e38f545e0c2203b18e642102e8f9a3ec266ecf Mon Sep 17 00:00:00 2001 From: Atlante45 Date: Thu, 2 Oct 2014 15:38:36 -0700 Subject: [PATCH 01/16] new table type --- domain-server/resources/web/js/settings.js | 82 ++++++++++++++++++++-- 1 file changed, 78 insertions(+), 4 deletions(-) diff --git a/domain-server/resources/web/js/settings.js b/domain-server/resources/web/js/settings.js index 48b3b15e8f..4471efdc66 100644 --- a/domain-server/resources/web/js/settings.js +++ b/domain-server/resources/web/js/settings.js @@ -22,13 +22,77 @@ var viewHelpers = { } if (setting.type === 'checkbox') { - form_group += "" + if (setting.label !== null && typeof(setting.label) !== 'undefined' && setting.label !== "") { + form_group += "" + } form_group += "
" form_group += ""; form_group += "
" + } else if (setting.type === 'table') { + form_group += "
" + form_group += "
" + setting.label + "
" + form_group += "
" + form_group += "

" + setting.help + "

" + form_group += "
" + + form_group += "" + // Column names + form_group += "" + if (setting.number === true) { + form_group += "" + } + form_group += "" + _.each(setting.columns, function(col) { + form_group += "" + }) + if (setting.can_delete === true || setting.can_add === true) { + form_group += "" + } + form_group += "" + + // Rows + var row_num = 1 + _.each(setting_value, function(row, name) { + form_group += "" + if (setting.number === true) { + form_group += "" + } + form_group += "" + _.each(setting.columns, function(col) { + form_group += "" + }) + if (setting.can_delete === true) { + form_group += "" + } else if (setting.can_add === true) { + form_group += "" + } + form_group += "" + row_num++ + }) + + // Entries + if (setting.can_add === true) { + form_group += "" + if (setting.number === true) { + form_group += "" + } + form_group += "" + _.each(setting.columns, function(col) { + form_group += "" + }) + form_group += "" + form_group += "" + } + + form_group += "
#" + setting.key.label + "" + col.label + "
" + row_num + "" + name + "" + if (row.hasOwnProperty(col.name)) { + form_group += row[col.name] + } + form_group += "
" + form_group += "
" } else { input_type = _.has(setting, 'type') ? setting.type : "text" @@ -46,7 +110,7 @@ var viewHelpers = { form_group += "" } else { - form_group += "" } @@ -79,8 +143,18 @@ $(document).ready(function(){ resizeFn(); $(window).resize(resizeFn); }) + + + $('#settings-form').on('click', '.add-row', function(){ + console.log("add-row " + $(this)) + }) - $('#settings-form').on('change', 'input', function(){ + $('#settings-form').on('click', '.del-row', function(){ + console.log("del-row " + $(this)) + }) + + + $('#settings-form').on('change', '.setting-input', function(){ // this input was changed, add the changed data attribute to it $(this).attr('data-changed', true) From a5108375b88dde5238935ac9177e218f7923d3d7 Mon Sep 17 00:00:00 2001 From: Atlante45 Date: Thu, 2 Oct 2014 15:39:02 -0700 Subject: [PATCH 02/16] Table JSON data --- .../resources/describe-settings.json | 86 +++++++++++++------ 1 file changed, 59 insertions(+), 27 deletions(-) diff --git a/domain-server/resources/describe-settings.json b/domain-server/resources/describe-settings.json index 24e9a5b63b..fb0989d91f 100644 --- a/domain-server/resources/describe-settings.json +++ b/domain-server/resources/describe-settings.json @@ -3,45 +3,77 @@ "name": "metaverse", "label": "Metaverse Registration", "settings": [ - { - "name": "access_token", - "label": "Access Token", - "help": "This is an access token generated on the My Tokens page of your High Fidelity account.
Generate a token with the 'domains' scope and paste it here.
This is required to associate this domain-server with a domain in your account." - }, - { - "name": "id", - "label": "Domain ID", - "help": "This is your High Fidelity domain ID. If you do not want your domain to be registered in the High Fidelity metaverse you can leave this blank." - } + ] }, { "name": "security", "label": "Security", "settings": [ - { - "name": "http_username", - "label": "HTTP Username", - "help": "Username used for basic HTTP authentication." - }, - { - "name": "http_password", - "label": "HTTP Password", - "type": "password", - "help": "Password used for basic HTTP authentication. Leave this blank if you do not want to change it.", - "value-hidden": true - } + ] }, { - "name": "audio", - "label": "Audio", - "assignment-types": [0], - "settings": [ + "name": "audio", + "label": "Audio", + "assignment-types": [0], + "settings": [ + { + "name": "zones", + "type": "table", + "label": "Zones", + "help": "In this table you can define a set of zones in which you can specify various audio properties.", + "number": true, + "can_add": true, + "can_delete": true, + "key": { + "label": "Name", + "placeholder": "Zone name" + }, + "columns": [ + { + "name": "x-range", + "label": "X range", + "can_set": true, + "placeholder": "0-16384" + }, + { + "name": "y-range", + "label": "Y range", + "can_set": true, + "placeholder": "0-16384" + }, + { + "name": "z-range", + "label": "Z range", + "can_set": true, + "placeholder": "0-16384" + } + ], + "default": { + "Zone 1": + { + "x-range": "10-82", + "y-range": "36-94", + "z-range": "38-84" + }, + "Zone 2": + { + "x-range": "12-163", + "y-range": "64-134", + "z-range": "27-184" + }, + "Zone 3": + { + "x-range": "463-632", + "y-range": "264-384", + "z-range": "843-937" + } + } + }, { "name": "enable_filter", "type": "checkbox", - "label": "Enable Positional Filter", "help": "positional audio stream uses lowpass filter", "default": true }, From 1aab86884d25a7085904b899f9a7eeaf1d6bfd89 Mon Sep 17 00:00:00 2001 From: Atlante45 Date: Fri, 3 Oct 2014 14:25:36 -0700 Subject: [PATCH 03/16] Move table view code + wire row delete --- .../resources/describe-settings.json | 20 +-- domain-server/resources/web/js/settings.js | 155 ++++++++++-------- 2 files changed, 90 insertions(+), 85 deletions(-) diff --git a/domain-server/resources/describe-settings.json b/domain-server/resources/describe-settings.json index fb0989d91f..d07d73b74c 100644 --- a/domain-server/resources/describe-settings.json +++ b/domain-server/resources/describe-settings.json @@ -1,18 +1,4 @@ [ - { - "name": "metaverse", - "label": "Metaverse Registration", - "settings": [ - - ] - }, - { - "name": "security", - "label": "Security", - "settings": [ - - ] - }, { "name": "audio", "label": "Audio", @@ -51,19 +37,19 @@ } ], "default": { - "Zone 1": + "Zone_1": { "x-range": "10-82", "y-range": "36-94", "z-range": "38-84" }, - "Zone 2": + "Zone_2": { "x-range": "12-163", "y-range": "64-134", "z-range": "27-184" }, - "Zone 3": + "Zone_3": { "x-range": "463-632", "y-range": "264-384", diff --git a/domain-server/resources/web/js/settings.js b/domain-server/resources/web/js/settings.js index 4471efdc66..660fac7081 100644 --- a/domain-server/resources/web/js/settings.js +++ b/domain-server/resources/web/js/settings.js @@ -32,67 +32,7 @@ var viewHelpers = { form_group += " " + setting.help + ""; form_group += "" } else if (setting.type === 'table') { - form_group += "
" - form_group += "
" + setting.label + "
" - form_group += "
" - form_group += "

" + setting.help + "

" - form_group += "
" - - form_group += "" - // Column names - form_group += "" - if (setting.number === true) { - form_group += "" - } - form_group += "" - _.each(setting.columns, function(col) { - form_group += "" - }) - if (setting.can_delete === true || setting.can_add === true) { - form_group += "" - } - form_group += "" - - // Rows - var row_num = 1 - _.each(setting_value, function(row, name) { - form_group += "" - if (setting.number === true) { - form_group += "" - } - form_group += "" - _.each(setting.columns, function(col) { - form_group += "" - }) - if (setting.can_delete === true) { - form_group += "" - } else if (setting.can_add === true) { - form_group += "" - } - form_group += "" - row_num++ - }) - - // Entries - if (setting.can_add === true) { - form_group += "" - if (setting.number === true) { - form_group += "" - } - form_group += "" - _.each(setting.columns, function(col) { - form_group += "" - }) - form_group += "" - form_group += "" - } - - form_group += "
#" + setting.key.label + "" + col.label + "
" + row_num + "" + name + "" - if (row.hasOwnProperty(col.name)) { - form_group += row[col.name] - } - form_group += "
" - form_group += "
" + form_group += makeTable(setting, setting_name, setting_value); } else { input_type = _.has(setting, 'type') ? setting.type : "text" @@ -145,13 +85,20 @@ $(document).ready(function(){ }) - $('#settings-form').on('click', '.add-row', function(){ - console.log("add-row " + $(this)) - }) - - $('#settings-form').on('click', '.del-row', function(){ - console.log("del-row " + $(this)) - }) + $('#settings-form').on('click', '.add-row', function(){ + console.log("add-row " + $(this)) + + var row = $(this).parents("tr") + + }) + + $('#settings-form').on('click', '.del-row', function(){ + console.log("del-row " + $(this)) + + var row = $(this).parents("tr") + row.empty() + row.html(""); + }) $('#settings-form').on('change', '.setting-input', function(){ @@ -262,6 +209,78 @@ $('body').on('click', '.save-button', function(e){ return false; }); +function makeTable(setting, setting_name, setting_value) { + var html = "
" + html += "
" + setting.label + "
" + html += "
" + html += "

" + setting.help + "

" + html += "
" + html += "" + + // Column names + html += "" + if (setting.number === true) { + html += "" // Row number + } + html += "" // Key + _.each(setting.columns, function(col) { + html += "" // Data + }) + if (setting.can_delete === true || setting.can_add === true) { + html += "" // Buttons + } + html += "" + + // Rows + var row_num = 1 + _.each(setting_value, function(row, name) { + html += "" + if (setting.number === true) { + html += "" + } + html += "" + _.each(setting.columns, function(col) { + html += "" + }) + if (setting.can_delete === true) { + html += "" + } else if (setting.can_add === true) { + html += "" + } + html += "" + row_num++ + }) + + // Inputs + if (setting.can_add === true) { + html += makeTableInputs(setting) + } + + html += "
#" + setting.key.label + "" + col.label + "
" + row_num + "" + name + "" + if (row.hasOwnProperty(col.name)) { + html += row[col.name] + } + html += "
" + html += "
" + + return html; +} + +function makeTableInputs(setting) { + var html = "" + if (setting.number === true) { + html += "" + } + html += "" + _.each(setting.columns, function(col) { + html += "" + }) + html += "" + html += "" + + return html +} + function badgeSidebarForDifferences(changedInput) { // figure out which group this input is in var panelParentID = changedInput.closest('.panel').attr('id') From 8be5c1841222602dc5623519ceab58decb0e544d Mon Sep 17 00:00:00 2001 From: Atlante45 Date: Mon, 6 Oct 2014 17:52:41 -0700 Subject: [PATCH 04/16] Get table data over to DS --- .../resources/describe-settings.json | 6 +- domain-server/resources/web/js/settings.js | 124 ++++++++++++++---- .../src/DomainServerSettingsManager.cpp | 33 ++--- 3 files changed, 118 insertions(+), 45 deletions(-) diff --git a/domain-server/resources/describe-settings.json b/domain-server/resources/describe-settings.json index 660edcf735..2c0b0cebf4 100644 --- a/domain-server/resources/describe-settings.json +++ b/domain-server/resources/describe-settings.json @@ -58,10 +58,6 @@ "name": "audio", "label": "Audio", "assignment-types": [0], - "settings": [ - "name": "audio", - "label": "Audio", - "assignment-types": [0], "settings": [ { "name": "zones", @@ -72,6 +68,7 @@ "can_add": true, "can_delete": true, "key": { + "name": "name", "label": "Name", "placeholder": "Zone name" }, @@ -119,6 +116,7 @@ { "name": "enable_filter", "type": "checkbox", + "label": "Positional filter", "help": "positional audio stream uses lowpass filter", "default": true }, diff --git a/domain-server/resources/web/js/settings.js b/domain-server/resources/web/js/settings.js index 660fac7081..4c2da87887 100644 --- a/domain-server/resources/web/js/settings.js +++ b/domain-server/resources/web/js/settings.js @@ -22,9 +22,7 @@ var viewHelpers = { } if (setting.type === 'checkbox') { - if (setting.label !== null && typeof(setting.label) !== 'undefined' && setting.label !== "") { - form_group += "" - } + form_group += "" form_group += "
" form_group += "
" - - return html; + return html; } function makeTableInputs(setting) { - var html = "" - if (setting.number === true) { - html += "" - } - html += "\ - \ - " - _.each(setting.columns, function(col) { - html += "\ - \ - " - }) - html += "" - html += "" + var html = "" + if (setting.number === true) { + html += "" + } + html += "\ + \ + " + _.each(setting.columns, function(col) { + html += "\ + \ + " + }) + html += "" + html += "" - return html + return html } function badgeSidebarForDifferences(changedInput) { @@ -406,7 +406,7 @@ function cleanupFormValues(node) { if (node.type && node.type === 'checkbox') { return { name: node.name, value: node.checked ? true : false }; } else { - return false; + return false; } } @@ -461,7 +461,7 @@ function chooseFromHighFidelityDomains(clickedButton) { } } modal_body = "

You do not have any domains in your High Fidelity account." + - "

Go to your domains page to create a new one. Once your domain is created re-open this dialog to select it.

" + "

Go to your domains page to create a new one. Once your domain is created re-open this dialog to select it.

" } @@ -479,7 +479,7 @@ function chooseFromHighFidelityDomains(clickedButton) { } else { bootbox.alert({ message: "You must have an access token to query your High Fidelity domains.

" + - "Please follow the instructions on the settings page to add an access token.", + "Please follow the instructions on the settings page to add an access token.", title: "Access token required" }) } From cd67c9d4563fdd8b0ea9ba6c680e9f4fb9c4ecbc Mon Sep 17 00:00:00 2001 From: Atlante45 Date: Wed, 8 Oct 2014 11:40:43 -0700 Subject: [PATCH 15/16] Removed console logs --- domain-server/resources/web/js/settings.js | 13 +++++-------- domain-server/src/DomainServerSettingsManager.cpp | 8 ++------ 2 files changed, 7 insertions(+), 14 deletions(-) diff --git a/domain-server/resources/web/js/settings.js b/domain-server/resources/web/js/settings.js index 0bccdacfb0..fc6b664359 100644 --- a/domain-server/resources/web/js/settings.js +++ b/domain-server/resources/web/js/settings.js @@ -84,7 +84,7 @@ $(document).ready(function(){ $('#settings-form').on('click', '.add-row', function(){ var row = $(this).parents("tr") - var row-data = row.parent().children(".row-data") + var data = row.parent().children(".row-data") // Check key spaces var name = row.children(".key").children("input").val() @@ -94,7 +94,7 @@ $(document).ready(function(){ } // Check keys with the same name var equals = false; - _.each(row-data.children(".key"), function(element) { + _.each(data.children(".key"), function(element) { if ($(element).text() === name) { equals = true return @@ -125,7 +125,7 @@ $(document).ready(function(){ _.each(row.children(), function(element) { if ($(element).hasClass("number")) { // Index row - var numbers = row-data.children(".number") + var numbers = data.children(".number") if (numbers.length > 0) { $(element).html(parseInt(numbers.last().text()) + 1) } else { @@ -134,10 +134,7 @@ $(document).ready(function(){ } else if ($(element).hasClass("buttons")) { // Change buttons var prevSpan = $(element).parent().prev().children(".buttons").children("span") var span = $(element).children("span") - console.log(prevSpan.length) - console.log(span.length) if (prevSpan.hasClass("del-row")) { - console.log("Switching icons") span.removeClass("glyphicon-ok add-row") span.addClass("glyphicon-remove del-row") } else { @@ -308,7 +305,7 @@ function makeTable(setting, setting_name, setting_value) { } html += "" + name + "" _.each(setting.columns, function(col) { - html += "" + html += "" if (row.hasOwnProperty(col.name)) { html += row[col.name] } @@ -343,7 +340,7 @@ function makeTableInputs(setting) { \ " _.each(setting.columns, function(col) { - html += "\ + html += "\ \ " }) diff --git a/domain-server/src/DomainServerSettingsManager.cpp b/domain-server/src/DomainServerSettingsManager.cpp index 5fcc7a8f82..c0366157db 100644 --- a/domain-server/src/DomainServerSettingsManager.cpp +++ b/domain-server/src/DomainServerSettingsManager.cpp @@ -279,9 +279,7 @@ void DomainServerSettingsManager::updateSetting(const QString& key, const QJsonV QVariantMap& thisMap = *reinterpret_cast(settingMap[key].data()); foreach(const QString childKey, newValue.toObject().keys()) { - updateSetting(childKey, newValue.toObject()[childKey], - thisMap, - settingDescription.toObject()[key]); + updateSetting(childKey, newValue.toObject()[childKey], thisMap, settingDescription.toObject()[key]); } if (settingMap[key].toMap().isEmpty()) { @@ -310,9 +308,7 @@ void DomainServerSettingsManager::recurseJSONObjectAndOverwriteSettings(const QJ QJsonValue thisDescription; if (settingExists(groupKey, settingKey, descriptionArray, thisDescription)) { QVariantMap& thisMap = *reinterpret_cast(settingsVariant[groupKey].data()); - updateSetting(settingKey, settingValue, - thisMap, - thisDescription); + updateSetting(settingKey, settingValue, thisMap, thisDescription); } } From 19d103c343824fef71ef66f34bd590ceaa8b3e47 Mon Sep 17 00:00:00 2001 From: Atlante45 Date: Wed, 8 Oct 2014 13:54:53 -0700 Subject: [PATCH 16/16] Indentation --- domain-server/resources/web/js/settings.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/domain-server/resources/web/js/settings.js b/domain-server/resources/web/js/settings.js index 60d7b7ba35..d6646a87da 100644 --- a/domain-server/resources/web/js/settings.js +++ b/domain-server/resources/web/js/settings.js @@ -26,7 +26,7 @@ var viewHelpers = { form_group += "
" form_group += ""; form_group += "
" } else if (setting.type === 'table') { @@ -463,7 +463,7 @@ function chooseFromHighFidelityDomains(clickedButton) { } } modal_body = "

You do not have any domains in your High Fidelity account." + - "

Go to your domains page to create a new one. Once your domain is created re-open this dialog to select it.

" + "

Go to your domains page to create a new one. Once your domain is created re-open this dialog to select it.

" } @@ -481,7 +481,7 @@ function chooseFromHighFidelityDomains(clickedButton) { } else { bootbox.alert({ message: "You must have an access token to query your High Fidelity domains.

" + - "Please follow the instructions on the settings page to add an access token.", + "Please follow the instructions on the settings page to add an access token.", title: "Access token required" }) }