From: Nicolas Boisselier Date: Tue, 16 Jan 2018 18:13:15 +0000 (+0000) Subject: www/dbq/html/default.js X-Git-Url: https://git.nbdom.net/?a=commitdiff_plain;h=2f0fa05f6e804796a1d7c8169cd8d7e38cf889ba;p=nb.git www/dbq/html/default.js --- diff --git a/www/dbq/html/default.js b/www/dbq/html/default.js index 1864d2a5..687f7e66 100644 --- a/www/dbq/html/default.js +++ b/www/dbq/html/default.js @@ -134,22 +134,23 @@ document.addEventListener("DOMContentLoaded", function() { } document.querySelectorAll("body > h1 a.db, body > h1 a.table").forEach(function(e) { - var item = document.getElementById(e.className); - if (!item) return; - var id = item.getAttribute('id'); - var sel = document.createElement('select'); - sel.id = 'nav-'+id; - sel.innerHTML = item.innerHTML; - sel.onchange = function() { - var id = this.id.replace(/^[^-]+-/,''); - var e = document.getElementById(id); - console.log(id+' '+this.value); - e.value = this.value; - e.onchange(); - }; - item.parentElement.style.display = 'none'; - e.parentNode.replaceChild(sel, e); - return false; + var base = window._dbq[e.className+'.base'].replace(/\/[^\/]+$/,''); + //if (base == '') base = '/'; + var url = base + (base == '' ? '/ls' : '') + '.json'; + console.log(url); + var id = e.className == 'db' ? 'id' : 'name'; + dbqGet(url,function(o){ + console.log(window._dbq['param.'+e.className]); + var s = o.select(id,id, window._dbq['param.'+e.className]); + s.onchange = function() { + window.location = base + '/' + this.value + ext; + //console.log(base + '/' + this.value + ext); + }; + var crit = document.getElementById(e.className); + if (crit) crit.parentNode.style.display = 'none'; + s.className = e.className; + e.parentNode.replaceChild(s, e); + }); }); }); @@ -202,21 +203,20 @@ function dbqGet(url,callback) { xhttp.onload = function (e) { if (xhttp.readyState === 4) { var obj = { 'rows': JSON.parse(xhttp.responseText), - 'debug': function(obj) { + 'debug': function() { console.log(obj.rows); }, - 'select': function(fields) { - var el = document.createElement('select'); + 'select': function(k,v,sel='undefined') { + var select = document.createElement('select'); obj['rows'].forEach(function(row) { var keys = Object.keys(row); - console.log(keys); - /* - for(var k in keys) { - var v = row[k]; - console.log(k+' '+v); - } - */ + var opt = document.createElement('option'); + opt.value = row[k]; + opt.innerHTML = dbqPrettyText(row[v]); + select.appendChild(opt); }); + if (sel != 'undefined') select.value = sel; + return select; }, }; if (!callback) return (window._dbq['dbqGet'] = obj); @@ -228,6 +228,12 @@ function dbqGet(url,callback) { //console.log(xhttp.responseText); //var row = JSON.parse(xhttp.responseText); //console.log(row); - } } + } }; xhttp.send(); } + +function dbqPrettyText(str) { + str = str.replace(/(\b\w)/g,function(m){return m.toUpperCase();}); + str = str.replace(/[^a-zA-Z0-9]+/g,' '); + return str; +} diff --git a/www/dbq/html/default.min.js b/www/dbq/html/default.min.js index b47eaaec..e69de29b 100644 --- a/www/dbq/html/default.min.js +++ b/www/dbq/html/default.min.js @@ -1 +0,0 @@ -function form_clean(e){var t;for(i=0;i'+document.querySelector(".nav.bottom").innerHTML+""),document.querySelectorAll("table").forEach(function(e){parseInt(e.offsetWidth)>parseInt(window.innerWidth)&&(e.className=e.className.replace(/(^| +)fixed($| )/,"")+" fixed",e.className=e.className.trim())}),window._dbq.perm'+(window._dbq.perm>=window._dbq.perms.write?' ':""))}),document.querySelector("th.delete")){var t=document.createElement("a");t.setAttribute("href","#"),t.innerHTML=document.querySelector("th.delete").innerHTML,document.querySelector("th.delete").innerHTML="",t.onclick=function(){var e=document.querySelectorAll("form.rm");for((document.querySelector(".rows")?document.querySelector(".rows"):"").className="loader",j=0;j h1 a.db, body > h1 a.table").forEach(function(e){var t=document.getElementById(e.className);if(t){var n=t.getAttribute("id"),o=document.createElement("select");return o.id="nav-"+n,o.innerHTML=t.innerHTML,o.onchange=function(){var e=this.id.replace(/^[^-]+-/,""),t=document.getElementById(e);console.log(e+" "+this.value),t.value=this.value,t.onchange()},t.parentElement.style.display="none",e.parentNode.replaceChild(o,e),!1}})});