]> git.nbdom.net Git - nb.git/commitdiff
www/dbq/html/default.js
authorNicolas Boisselier <nicolas.boisselier@gmail.com>
Tue, 16 Jan 2018 18:13:15 +0000 (18:13 +0000)
committerNicolas Boisselier <nicolas.boisselier@gmail.com>
Tue, 16 Jan 2018 18:13:15 +0000 (18:13 +0000)
www/dbq/html/default.js
www/dbq/html/default.min.js

index 1864d2a5d120f5ad8df51147451645f7213c9a76..687f7e6690c3905cee3230d80a55c615b885ced1 100644 (file)
@@ -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;
+}
index b47eaaec19f1f743ef6e4a62c2c0a0e0a3e0d591..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 (file)
@@ -1 +0,0 @@
-function form_clean(e){var t;for(i=0;i<e.length;i++)"none"!=(t=e.elements[i]).style.display&&("text"==t.type?t.value="":!t.type.match(/^select/)||"limit"!=t.name&&"format"!=t.name||(t.selectedIndex=0))}function form_submit_clean(e){var t=0,n="",o=e.getAttribute("action");if("get"!=e.getAttribute("method"))return!0;for(t=0;t<e.length;t++){var r=e[t];r.name&&(""!=r.value&&"undefined"!=r.value&&(n+=(n?"&":"?")+encodeURI(r.name)+"="+encodeURI(r.value)))}return n=("?"==o?"":o)+n,e.reset(),window.location=n,!1}function dbqGet(e,t){var n=new XMLHttpRequest;delete window._dbq.dbqGet,n.open("GET",e,!0),n.onload=function(e){if(4===n.readyState){var o={rows:JSON.parse(n.responseText),debug:function(e){console.log(e.rows)},select:function(e){document.createElement("select");o.rows.forEach(function(e){var t=Object.keys(e);console.log(t)})}};if(!t)return window._dbq.dbqGet=o;if("function"==typeof t)return t(o);if("string"==typeof t&&t in o)return"function"==typeof o[t]?o[t](o):o[t]}},n.send()}document.addEventListener("DOMContentLoaded",function(){NodeList.prototype.forEach=Array.prototype.forEach;var e=window._dbq["param.format"]?"."+window._dbq["param.format"]:"";if(e=="."+window._dbq["default.format"]&&(e=""),document.querySelectorAll("form").forEach(function(e){e.onsubmit=function(){if(this.elements.limit){var e=this.elements.limit;"undefined"!=window._dbq.default_limit&&e.value==window._dbq.default_limit&&e.removeAttribute("value")}return form_submit_clean(this)}}),document.querySelectorAll("form.menu").forEach(function(t){t.setAttribute("action",window.location.toString().replace(/\?.*$/,"")),t.querySelectorAll("form.menu select.format").forEach(function(e){e.removeAttribute("name"),e.onchange=function(){return this.form.setAttribute("action",window._dbq["table.base"]+"."+this.value),this.form.onsubmit()}}),t.querySelectorAll("form.menu select.tables").forEach(function(t){t.removeAttribute("name"),t.onchange=function(){return this.form.setAttribute("action",window._dbq["db.base"]+"/"+this.value+e),form_clean(this.form),this.form.onsubmit()}}),t.querySelectorAll("form.menu select.limit").forEach(function(e){e.onchange=function(){return this.form.onsubmit()}})}),document.querySelector(".nav.bottom")&&document.querySelector("table.rows")&&document.querySelector("table.rows").insertAdjacentHTML("beforebegin",'<div class="nav top">'+document.querySelector(".nav.bottom").innerHTML+"</div>"),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.perms.write&&(document.querySelectorAll("form.edit").forEach(function(e){e.setAttribute("onsubmit","return false")}),document.querySelectorAll("form.edit input[type=submit],form.edit input[type=reset]").forEach(function(e){e.setAttribute("style","display:none")})),document.querySelectorAll("form.menu input[type=submit]").forEach(function(e){e.insertAdjacentHTML("afterend",'&nbsp;<input type="button" class="clear '+e.className+'" onclick="form_clean(this.form)" value="'+window._dbq["text.clear"]+'" />'+(window._dbq.perm>=window._dbq.perms.write?'&nbsp;<input type="button" class="add '+e.className+'" onclick="window.location=\''+window._dbq["table.base"]+'/add/\'" value="'+window._dbq["text.add"]+'"/>':""))}),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<e.length;++j){var t=e[j],n=t.getAttribute("action"),o=[],r=t.getElementsByTagName("input");for(i=0;i<r.length;++i){var a=r[i];o.push(a.name+"="+encodeURI(a.value))}var l=new XMLHttpRequest;l.open("POST",n,!0),l.setRequestHeader("Content-type","application/x-www-form-urlencoded"),l.onload=function(t){if(4===l.readyState){if(j!=e.length)return;location.reload()}},l.send(o.join("&"))}return!1},document.querySelector("th.delete").appendChild(t)}document.querySelectorAll("body > 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}})});