From 34e83fa98c0254334940c92f6ddb1aef3aa256ff Mon Sep 17 00:00:00 2001 From: Owen Stephens Date: Sat, 2 Dec 2017 12:32:06 +0000 Subject: [PATCH] Initial work to add option to set http headers in Add column by fetching URLs --- .../webapp/modules/core/MOD-INF/controller.js | 3 +- .../modules/core/langs/translation-en.json | 1 + .../scripts/dialogs/http-headers-dialog.html | 6 ++ .../scripts/dialogs/http-headers-dialog.js | 68 +++++++++++++++++++ .../add-column-by-fetching-urls-dialog.html | 3 + .../views/data-table/menu-edit-column.js | 5 +- 6 files changed, 84 insertions(+), 2 deletions(-) create mode 100644 main/webapp/modules/core/scripts/dialogs/http-headers-dialog.html create mode 100644 main/webapp/modules/core/scripts/dialogs/http-headers-dialog.js diff --git a/main/webapp/modules/core/MOD-INF/controller.js b/main/webapp/modules/core/MOD-INF/controller.js index 0acb0d393..7ecdff3e4 100644 --- a/main/webapp/modules/core/MOD-INF/controller.js +++ b/main/webapp/modules/core/MOD-INF/controller.js @@ -459,7 +459,8 @@ function init() { "scripts/dialogs/templating-exporter-dialog.js", "scripts/dialogs/column-reordering-dialog.js", "scripts/dialogs/custom-tabular-exporter-dialog.js", - "scripts/dialogs/expression-column-dialog.js" + "scripts/dialogs/expression-column-dialog.js", + "scripts/dialogs/http-headers-dialog.js", ] ); diff --git a/main/webapp/modules/core/langs/translation-en.json b/main/webapp/modules/core/langs/translation-en.json index 15e0acec8..c9a571ce2 100644 --- a/main/webapp/modules/core/langs/translation-en.json +++ b/main/webapp/modules/core/langs/translation-en.json @@ -541,6 +541,7 @@ "throttle-delay": "Throttle delay", "milli": "milliseconds", "url-fetch": "Formulate the URLs to fetch:", + "http-headers": "Define any HTTP headers to be used when fetching URLs:", "enter-col-name": "Enter new column name", "split-col": "Split column", "several-col": "into several columns", diff --git a/main/webapp/modules/core/scripts/dialogs/http-headers-dialog.html b/main/webapp/modules/core/scripts/dialogs/http-headers-dialog.html new file mode 100644 index 000000000..cebfa2407 --- /dev/null +++ b/main/webapp/modules/core/scripts/dialogs/http-headers-dialog.html @@ -0,0 +1,6 @@ +
+ + + + +
KEY
VALUE
\ No newline at end of file diff --git a/main/webapp/modules/core/scripts/dialogs/http-headers-dialog.js b/main/webapp/modules/core/scripts/dialogs/http-headers-dialog.js new file mode 100644 index 000000000..96a7a170a --- /dev/null +++ b/main/webapp/modules/core/scripts/dialogs/http-headers-dialog.js @@ -0,0 +1,68 @@ +/* + +Copyright 2017, Owen Stephens +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of the copyright holder nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +*/ + +function HttpHeadersDialog(title, headers, onDone) { + this._onDone = onDone; + + var self = this; + var frame = DialogSystem.createDialog(); + frame.width("700px"); + + var header = $('
').addClass("dialog-header").text(title).appendTo(frame); + var body = $('
').addClass("dialog-body").appendTo(frame); + var footer = $('
').addClass("dialog-footer").appendTo(frame); + var html = $(HttpHeadersDialog.generateWidgetHtml()).appendTo(body); + + this._elmts = DOM.bind(html); + + DialogSystem.showDialog(frame); + this._previewWidget = new HttpHeadersDialog.Widget( + this._elmts, + headers + ); +} + +HttpHeadersDialog.generateWidgetHtml = function() { + var html = DOM.loadHTML("core", "scripts/dialogs/http-headers-dialog.html"); + return html; +}; + +HttpHeadersDialog.Widget = function( + elmts, + headers +) { + this._elmts = elmts; + this._headers = headers; + + var self = this; +}; \ No newline at end of file diff --git a/main/webapp/modules/core/scripts/views/data-table/add-column-by-fetching-urls-dialog.html b/main/webapp/modules/core/scripts/views/data-table/add-column-by-fetching-urls-dialog.html index e51bc2e52..31fa826cc 100644 --- a/main/webapp/modules/core/scripts/views/data-table/add-column-by-fetching-urls-dialog.html +++ b/main/webapp/modules/core/scripts/views/data-table/add-column-by-fetching-urls-dialog.html @@ -21,6 +21,9 @@ +

+ $HTTP_HEADERS_WIDGET$ +

$EXPRESSION_PREVIEW_WIDGET$ diff --git a/main/webapp/modules/core/scripts/views/data-table/menu-edit-column.js b/main/webapp/modules/core/scripts/views/data-table/menu-edit-column.js index e43491e8c..351fa3027 100644 --- a/main/webapp/modules/core/scripts/views/data-table/menu-edit-column.js +++ b/main/webapp/modules/core/scripts/views/data-table/menu-edit-column.js @@ -91,7 +91,9 @@ DataTableColumnHeaderUI.extendMenu(function(column, columnHeaderUI, menu) { var doAddColumnByFetchingURLs = function() { var frame = $( DOM.loadHTML("core", "scripts/views/data-table/add-column-by-fetching-urls-dialog.html") - .replace("$EXPRESSION_PREVIEW_WIDGET$", ExpressionPreviewDialog.generateWidgetHtml())); + .replace("$EXPRESSION_PREVIEW_WIDGET$", ExpressionPreviewDialog.generateWidgetHtml()) + .replace("$HTTP_HEADERS_WIDGET$", HttpHeadersDialog.generateWidgetHtml()) + ); var elmts = DOM.bind(frame); elmts.dialogHeader.text($.i18n._('core-views')["add-col-fetch"]+" " + column.name); @@ -103,6 +105,7 @@ DataTableColumnHeaderUI.extendMenu(function(column, columnHeaderUI, menu) { elmts.or_views_setBlank.text($.i18n._('core-views')["set-blank"]); elmts.or_views_storeErr.text($.i18n._('core-views')["store-err"]); elmts.or_views_cacheResponses.text($.i18n._('core-views')["cache-responses"]); + elmts.or_views_httpHeaders.text($.i18n._('core-views')["http-headers"]); elmts.or_views_urlFetch.text($.i18n._('core-views')["url-fetch"]); elmts.okButton.html($.i18n._('core-buttons')["ok"]); elmts.cancelButton.text($.i18n._('core-buttons')["cancel"]);