From e0c29e866b58c8d9efa3d284df14c135b46dfe65 Mon Sep 17 00:00:00 2001 From: Nicolas Boisselier Date: Mon, 26 Dec 2016 01:53:05 +0000 Subject: [PATCH] dbq --- www/dbq/dbq.php | 3 +++ www/dbq/html/default.js | 60 ++++++++++++++++++++++++++++++----------- 2 files changed, 47 insertions(+), 16 deletions(-) diff --git a/www/dbq/dbq.php b/www/dbq/dbq.php index 09f5dd5a..9ed1b68c 100644 --- a/www/dbq/dbq.php +++ b/www/dbq/dbq.php @@ -104,6 +104,7 @@ class DbQ extends nb { // Write output + $this->default_limit = $this->db->limits[0]; if (empty($this->_nopage)) { $this->page->headers_no_cache(); @@ -111,6 +112,8 @@ class DbQ extends nb { $this->page->js_code = 'window._dbq = ' . json_encode([ 'HTML_FORMAT' => self::HTML_FORMAT, + 'default.format' => self::HTML_FORMAT, + 'default.limit' => $this->default_limit, 'param.format' => $this->params['format'], 'param.db' => $this->params['db'], 'param.table' => $this->params['table'], diff --git a/www/dbq/html/default.js b/www/dbq/html/default.js index 4125e1aa..f7a140b5 100644 --- a/www/dbq/html/default.js +++ b/www/dbq/html/default.js @@ -1,3 +1,5 @@ +// NB 25.12.16: TODEL +/* function form_submit_clean(form) { form_clean(form); form.submit(); @@ -12,6 +14,7 @@ function form_clean(form) { e.value = "" } } +*/ function form_submit_clean(f) { var i = 0; @@ -28,6 +31,7 @@ function form_submit_clean(f) { url += (url ? "&" : "?") + encodeURI(p.name) + "=" + encodeURI(p.value); } + //alert(url); url = (action == "?" ? "" : action) + url; window.location = url; @@ -36,31 +40,55 @@ function form_submit_clean(f) { document.addEventListener("DOMContentLoaded", function() { + // Clean when submit for (var e of document.querySelectorAll("form")) { e.onsubmit = function() { return form_submit_clean(this); }; } - document.getElementById("table").removeAttribute("name"); - document.getElementById("format").removeAttribute("name"); - for (var e of document.querySelectorAll(".menu select.tables, .menu select.format, .menu select.limit")) { - e.onchange = function() { - var format = document.getElementById("format").value; - if (format == window._dbq["HTML_FORMAT"]) format = "html"; - window.location = "./" + document.getElementById("table").value + "." + format; - return true; - }; - } + /* + Menu + */ + for (var form of document.querySelectorAll("form.menu")) { + form.setAttribute('action',window.location.toString().replace(/\?.*$/,'')); + + // Format + for (var e of form.querySelectorAll("form.menu select.format")) { + e.removeAttribute('name'); + e.onchange = function() { + var format = this.value; + if (format == window._dbq["HTML_FORMAT"]) format = "html"; + this.form.setAttribute('action',this.form.getAttribute('action').replace(/(\/|\.\w+)$/,'.'+format)); + this.form.onsubmit(); + return false; + } + } + + // Table + for (var e of form.querySelectorAll("form.menu select.tables")) { + e.removeAttribute('name'); + e.onchange = function() { + this.form.setAttribute('action',this.form.getAttribute('action').replace(/([^\/\.]+)(\.\w+)?$/,this.value+'$2')); + return this.form.onsubmit(); + } + } + + // Limit + for (var e of form.querySelectorAll("form.menu select.limit option")) { + if (e.value == window._dbq["default.limit"]) e.setAttribute('value',''); + } + + // Auto submit + for (var e of form.querySelectorAll("form.menu select.limit")) { + e.onchange = function() { + return this.form.onsubmit(); + }; + } - for (var e of document.querySelectorAll(".menu select.limit")) { - e.onchange = function() { - this.form.submit(); - return true; - }; } - if (document.querySelector(".nav.bottom")) { + if (document.querySelector(".nav.bottom") && document.querySelector("table.rows")) { document.querySelector("table.rows").insertAdjacentHTML("beforebegin","
"+document.querySelector(".nav.bottom").innerHTML+"
"); } -- 2.47.3