-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathjsonHTML.min.js
More file actions
19 lines (17 loc) · 6.39 KB
/
Copy pathjsonHTML.min.js
File metadata and controls
19 lines (17 loc) · 6.39 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function $jConstruct(t,n){return sig(t,n)}var micronDB=function(){return{db:[],hashTraverse:function(t,n){if(this.db[t]){for(var e=0;e<this.db[t].length;++e)if(this.db[t][e]){var r=n(this.db[t][e]);if(r)return r}return!1}return!1},calcIndex:function(t){if(t){for(var n=0,e=0;e<t.length;++e)n+=t.charCodeAt(e);return n%50}return-1},exists:function(t){var n=this.calcIndex(t);return this.hashTraverse(n,function(n){return n?n.id==t:!1})},makeID:function(){var t=new micronDB,n=0,e=8,r=function(){for(var t="",n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",r=0;e>r;++r)t+=n.charAt(Math.floor(Math.random()*n.length));return t},i=function(i){var o=function(){for(var o=62*Math.pow(e,2);t.exists(i)&&o>n;)++n,i=r()};return o(),t.exists(i)&&(e=Math.round(e/2+e),o()),i};return i(r())},hash:function(t){if(t.id=void 0===t.id?this.makeID():t.id,this.exists(t.id))return!1;var n=this.calcIndex(t.id);return this.db[n]?(this.db[n][this.db[n].length]=t,t):(this.db[n]=[],this.db[n][this.db[n].length]=t,t)},get:function(t){var n=this.calcIndex(t);return this.hashTraverse(n,function(n){return n.id==t?n:void 0})},remove:function(t){var n=this.calcIndex(t);if(this.db[n])for(var e=0;e<this.db[n].length;++e)if(this.db[n][e]&&this.db[n][e]==this.get(t))return this.db[n].splice(e,1),!this.exists(t)},match:{where:function(t,n){for(var e in n)if("undefined"!=typeof t[e])if("function"==typeof t[e]){if(t[e](n[e])===!0)return n}else if(n[e]==t[e])return n;return!1}},traverse:function(t,n,e){var r=function(t,e){for(var i=[],o=0;o<e.length;++o)if(Array.isArray(e[o])){var d=r(t,e[o]);d.length>0&&(Array.isArray(d)&&d.length<2?i[i.length]=d[0]:i[i.length]=d)}else n(t,e[o])&&(i[i.length]=n(t,e[o]));return i},i=[],o=0,d=function(t,n,e,d){"undefined"!=typeof e[d]&&"number"!=typeof d&&(o?i.length>0&&(i=r(t,i)):i=r(t,n)),++o},s=function(t,n,e,o){if("undefined"!=typeof e[o]&&"number"!=typeof o){var d=r(t,n);if(i.length>0)for(var s=function(t,n){for(var e=0;e<n.length;++e)if(n[e]==t)return!0;return!1},a=0;a<d.length;++a)s(d[a],i)||(i[i.length]=d[a]);else i=r(t,n)}};for(var a in t){"$and"==a&&(o=0);var u={};if(u[a]=t[a],"$or"==a||"$and"==a)for(var f in u[a]){var c={};c[f]=u[a][f],"$or"==a?s(c,e,u[a],f):d(c,e,u[a],f)}else d(u,e,t,a)}return i},insert:function(t){return this.hash(t)},query:function(t){var n;for(var e in t)"undefined"!=typeof this.match[e]&&(n=void 0===n?this.traverse(t[e],this.match[e],this.db):this.traverse(t[e],this.match[e],n));return n}}},arrdb=new micronDB,sig=function(t,n){function e(t,n,i){var o=new $.Deferred,d=function(){i=i?i:"append",t="function"==typeof t?t():t,t.id=void 0===t.id?arrdb.makeID():t.id,t.parent=t.parent?t.parent:n;var d=arrdb.get(t.id);if(d?d.append=i:arrdb.hash(t),$(n)[i](r(t.type)(t)),void 0!==t.children)for(var s=0;s<t.children.length;++s)e(t.children[s],"#"+t.id);if(void 0!==t.functions)for(var s=0;s<t.functions.length;++s)t.functions[s]();o.resolve()};return d(),o.promise()}var r=function(t){var n=function(t){return["text","textbox","password","checkbox","radio","file","image","submit"].indexOf(t)>-1},e=function(e){var r="";for(var i in e){var o=i.toString();"string"==typeof e[i]&&("type"==i&&n(t)||"text"!=i)&&(r+=" "+o+'="'+e[i]+'"')}return r},r={generic:function(t){var n={start:"<"+t.type,end:t.text?">"+t.text+"</"+t.type+">":"></"+t.type+">"};return n.start+e(t)+n.end},input:function(t){var n={start:"<input",end:t.text?' value="'+t.text+'"></input>':"></input>"};return n.start+e(t)+n.end},html:function(t){return t.data}};return n(t)?r.input:r[t]?r[t]:r.generic},i={basicPropInsrt:function(t,n){t.addChild=function(t){return this.children[this.children.length]=t,this},t.addFunction=function(t){return this.functions[this.functions.length]=t,this},t.appendTo=function(t,n){var r=new $.Deferred,i="object"==typeof t?"#"+t.id:t;return this.state=e(this,i,n).done(function(){r.resolve()}),this},t.event=function(n,e){var r="#"+this.id;return $(r)[0]?e?$(r)[n](e):$(r)[n]():e?t.addFunction(function(){$(r)[n](e)}):t.addFunction(function(){$(r)[n]()}),this},t.css=function(t){var n="#"+this.id,e=$(n);if(e[0]){if(!t)return e[0].style;e.css(t)}else{if(!t)return e[0].style;this.addFunction(function(){$(n).css(t)})}return this},t.remove=function(t){var n=this,e=document.getElementById(n.id);if(e){if(t){if(t.all)for(var r=0;r<n.children.length;++r){var i=n.children[r];i.remove(t)}t.db&&arrdb.remove(n.id)}for(;e.firstChild;)e.removeChild(e.firstChild);$("#"+n.id).remove()}else console.log("jsonHTML:",n.id,"does not exist on the DOM. Use arrdb.remove(objID) to remove from micronDB.");return this},t.refresh=function(n){var e=new $.Deferred;if(t.parent.length>0){t.remove();n?n:arrdb.get(t.id).append;t.appendTo(t.parent,n).state.done(function(){e.resolve()})}else e.reject("jsonHTML: Parent of the object is not defined. Was it rendered to the DOM yet?");return this.state=e,this}},propertyAdd:function(t,n){for(var e in n)t[e]=n[e];return this}};return function(){var e={type:void 0!==t?t:"div",children:[],functions:[]};return n&&i.propertyAdd(e,n),void 0===e.id&&(e.id=arrdb.makeID()),i.basicPropInsrt(e,n),e}()},toadFish={};toadFish.create2DArray=function(t){for(var n=[],e=0;t>e;++e)n[e]=[];return n},toadFish.structure=function(t,n){for(var e=$jConstruct("div",{collectionName:n}).css({clear:"left","float":"left",display:"block"}),r=0;r<t.length;++r){var i=$jConstruct("div");t[r].length?i.css({"float":"left"}):i.addChild(t[r]);for(var o=0;o<t[r].length;++o)i.addChild(t[r][o]);e.addChild(i)}return e.getCell=function(t,n){return e.children[n].children[t]},e},toadFish.drop=function(t){var n=sig("div",{"class":"dropdown"}).event("click",function(){var t=document.getElementById(e.id);("none"==t.style.display||""==t.style.display)&&(e.css({display:"block"}),toadFish.dropVisible=1)}),e=sig("div",{"class":"dropdown-content"}).event("mouseleave",function(){var t=document.getElementById(e.id);"block"==t.style.display&&(e.css({display:"none"}),toadFish.dropVisible=0)});return n.addOption=function(t){var n=sig("div",{text:t.name,"class":"dropdown-content-link"}).event(t.event.type,t.event.func);return e.addChild(n),n},n.addChild(t),n.addChild(e),n};
/*
(c) v1.3.1 /\\\\
o / \\\\
p / \\\\
y / \\\\
r /=======|\\\\
i / \\ \\\\
g / \\ \\\\
h / // \\\\
t / // \\\\.
/ .=======| \\\\=
2 /....................\\\\==
0 github.com/trillobite/jsonHTML
1
6 View full license in LICENSE.md
*/