DRILL-7605: Preserve query form field values between reloads / navigation
It is nice to continue where you left off when returning to the query
form.
closes #1995
diff --git a/exec/java-exec/src/main/resources/rest/query/query.ftl b/exec/java-exec/src/main/resources/rest/query/query.ftl
index aea8bb3..a20cf3e 100644
--- a/exec/java-exec/src/main/resources/rest/query/query.ftl
+++ b/exec/java-exec/src/main/resources/rest/query/query.ftl
@@ -87,13 +87,51 @@
</form>
<script>
+ // Remember form field values over page reloads
+ $("input[type=text],input[type=checkbox],input[type=radio],select").each(function () {
+ var $input = $(this);
+ var savedKey = "saved_query_" + $input.attr("name");
+ var savedValue = sessionStorage.getItem(savedKey);
+ if ($input.attr("type") === "checkbox") {
+ if (savedValue === "true") {
+ $input.prop("checked", true);
+ }
+ if (savedValue === "false") {
+ $input.prop("checked", false);
+ }
+ $input.change(function () {
+ sessionStorage.setItem(savedKey, String($(this).prop("checked")));
+ });
+ } else if ($input.attr("type") === "radio") {
+ var value = $input.val();
+ if (savedValue === value) {
+ $input.prop("checked", true);
+ }
+ $input.change(function () {
+ sessionStorage.setItem(savedKey, $(this).val());
+ });
+ } else {
+ if (typeof savedValue === "string") {
+ $input.val(savedValue);
+ }
+ $input.change(function () {
+ sessionStorage.setItem(savedKey, $(this).val());
+ });
+ }
+ });
+ // Hidden text input for form-submission
+ var queryText = $('input[name="query"]');
ace.require("ace/ext/language_tools");
var editor = ace.edit("query-editor-format");
- var queryText = $('input[name="query"]');
- //Hidden text input for form-submission
editor.getSession().on("change", function () {
- queryText.val(editor.getSession().getValue());
+ var text = editor.getSession().getValue();
+ queryText.val(text);
+ sessionStorage.setItem("saved_query_query", text);
});
+ var savedQueryText = sessionStorage.getItem('saved_query_query');
+ if (savedQueryText) {
+ editor.getSession().setValue(savedQueryText);
+ }
editor.setAutoScrollEditorIntoView(true);
editor.setOption("maxLines", 25);
editor.setOption("minLines", 12);