forked from javve/list.js
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathlist.min.js
1 lines (1 loc) · 7.01 KB
/
list.min.js
1
function List(c,m,g){var k=this,f=null;this.listContainer=document.getElementById(c);this.items=[];this.list=null;this.templateEngines={};this.maxVisibleItemsCount=200;var h=function(o,q){q.list=q.list||c;q.listClass=q.listClass||"list";q.searchClass=q.searchClass||"search";q.sortClass=q.sortClass||"sort";f=new a(k,q);k.list=ListJsHelpers.getByClass(q.listClass,k.listContainer,true);ListJsHelpers.addEvent(ListJsHelpers.getByClass(q.searchClass,k.listContainer),"keyup",k.search);ListJsHelpers.addEvent(ListJsHelpers.getByClass(q.sortClass,k.listContainer),"click",k.sort);if(q.valueNames){var r=e.get(),p=q.valueNames;if(q.indexAsync){e.indexAsync(r,p)}else{e.index(r,p)}}if(typeof o!=="undefined"){k.add(o)}};var n=null;var e={get:function(){var q=k.list.childNodes,p=[];for(var r=0,o=q.length;r<o;r++){if(typeof q[r].data==="undefined"){p.push(q[r])}}return p},index:function(o,q){for(var r=0,p=o.length;r<p;r++){k.items.push(new d(q,o[r]))}},indexAsync:function(o,p){var q=o.splice(0,100);this.index(q,p);if(o.length>0){setTimeout(function(){e.indexAsync(o,p)},10)}else{}}};this.add=function(p,q){var t=[],s=false;if(typeof p[0]==="undefined"){p=[p]}for(var r=0,o=p.length;r<o;r++){var u=null;if(p[r] instanceof d){u=p[r];u.reload()}else{s=(k.items.length>k.maxVisibleItemsCount)?true:false;u=new d(p[r],undefined,s)}if(!s){f.add(u,q)}k.items.push(u);t.push(u)}return t};var b=null;this.addAsync=function(o,p){var q=p?p.count||100:100,r=o.splice(0,q);k.add(r,p);if(o.length>0){setTimeout(function(){k.addAsync(o,p)},10)}else{}};this.remove=function(t,s,p){var r=0;for(var q=0,o=k.items.length;q<o;q++){if(k.items[q].values()[t]==s){f.remove(k.items[q],p);k.items.splice(q,1);o--;r++}}return r};this.get=function(t,r){var s=[];for(var p=0,o=k.items.length;p<o;p++){var q=k.items[p];if(q.values()[t]==r){s.push(q)}}if(s.length==0){return null}else{if(s.length==1){return s[0]}else{return s}}};this.sort=function(s,w){var o=k.items.length,v=null,r=s.target||s.srcElement,q="",u=false;if(r==="undefined"){v=s}else{v=ListJsHelpers.getAttribute(r,"rel");q=ListJsHelpers.getAttribute(r,"sorting");if(q=="asc"){r.setAttribute("sorting","desc");u=false}else{r.setAttribute("sorting","asc");u=true}}if(w){w=w}else{w=function(z,y){return l.alphanum(z.values()[v],y.values()[v],u)}}k.items.sort(w);f.clear();for(var p=0,t=k.items.length;p<t;p++){if(k.maxVisibleItemsCount>p){f.add(k.items[p])}}};var l={alphanum:function(p,o,q){if(typeof p==="undefined"){p=""}if(typeof o==="undefined"){o=""}p=p.toString().replace(/&(lt|gt);/g,function(v,w){return(w=="lt")?"<":">"});p=p.replace(/<\/?[^>]+(>|$)/g,"");o=o.toString().replace(/&(lt|gt);/g,function(v,w){return(w=="lt")?"<":">"});o=o.replace(/<\/?[^>]+(>|$)/g,"");var r=this.chunkify(p);var t=this.chunkify(o);for(x=0;r[x]&&t[x];x++){if(r[x]!==t[x]){var u=Number(r[x]),s=Number(t[x]);if(q){if(u==r[x]&&s==t[x]){return u-s}else{return(r[x]>t[x])?1:-1}}else{if(u==r[x]&&s==t[x]){return s-u}else{return(r[x]>t[x])?-1:1}}}}return r.length-t.length},chunkify:function(s){var w=[],p=0,v=-1,u=0,r,q;while(r=(q=s.charAt(p++)).charCodeAt(0)){var o=(r==46||(r>=48&&r<=57));if(o!==u){w[++v]="";u=o}w[v]+=q}return w}};this.search=function(z,p){var u=[],s=z.target||z.srcElement;if(typeof s!=="undefined"){z=s.value.toLowerCase()}else{z=z.toLowerCase()}var o=false;if(typeof p==="undefined"){o=true}f.clear();if(z===""){for(var r=0,t=k.items.length;((r<t)&&(r<k.maxVisibleItemsCount));r++){k.items[r].show()}}else{for(var r=0,t=k.items.length;r<t;r++){var y=false,w=k.items[r];if(o){p=w.values()}for(var q in p){var v=p[q].toString().toLowerCase();if((z!=="")&&(v.search(z)>-1)){y=true}}if(y){u.push(w)}if(y&&(k.maxVisibleItemsCount>u.length)){w.show()}}}return u};this.filter=function(s){var o=[];for(var q=0,p=k.items.length;q<p;q++){var r=k.items[q];if(s===false||typeof s==="undefined"){r.show();o.push(r)}else{if(s(r.values())){o.push(r);r.show()}else{r.hide()}}}return o};this.size=function(){return k.items.length};function d(p,r,q){var s=this,o={};var t=function(v,y,w){if(typeof y==="undefined"){if(w){s.values(v,w)}else{s.values(v)}}else{s.elm=y;var u=f.get(s,v);s.values(u)}};this.values=function(u,v){if(u!==undefined){for(name in u){if(u.hasOwnProperty(name)){o[name]=u[name]}}if(v!==true){f.set(s,s.values())}}else{return o}};this.show=function(){f.show(s)};this.hide=function(){f.hide(s)};t(p,r,q)}var a=function(p,o){if(typeof o.engine==="undefined"){o.engine="standard"}else{o.engine=o.engine.toLowerCase()}return new k.constructor.prototype.templateEngines[o.engine](p,o)};h(g,m)}List.prototype.templateEngines={};List.prototype.templateEngines.standard=function(f,b){var h=ListJsHelpers.getByClass(b.listClass,document.getElementById(b.list))[0],d=document.getElementById(b.item),a=this,f=f;this.get=function(o,m){c();e(o);var l={};for(var n=0,k=m.length;n<k;n++){l[m[n]]=ListJsHelpers.getByClass(m[n],o.elm)[0].innerHTML}return l};this.set=function(m,l){e(m);for(var k in l){var n=ListJsHelpers.getByClass(k,m.elm,true);if(n){n.innerHTML=l[k]}}};this.create=function(l){if(typeof l.elm!=="undefined"){return}c();var k=d.cloneNode(true);k.id="";l.elm=k;a.set(l,l.values())};this.add=function(k){e(k);h.appendChild(k.elm)};this.remove=function(k){h.removeChild(k.elm)};this.show=function(k){e(k);g(k);h.appendChild(k.elm)};this.hide=function(k){e(k);h.removeChild(k.elm)};this.clear=function(){if(h.hasChildNodes()){while(h.childNodes.length>=1){h.removeChild(h.firstChild)}}};function c(){if(d===null){var m=h.childNodes,l=[];for(var n=0,k=m.length;n<k;n++){if(typeof m[n].data==="undefined"){d=m[n];break}}}}function e(k){if(typeof k.elm==="undefined"){a.create(k)}}function g(k){if(k.elm.parentNode===null){a.add(k)}}};var ListJsHelpers={getByClass:(function(){if(document.getElementsByClassName){return function(b,a,c){if(c){return a.getElementsByClassName(b)[0]}else{return a.getElementsByClassName(b)}}}else{return function(f,d,g){var c=new Array();if(d==null){d=document}tag="*";var b=d.getElementsByTagName(tag);var a=b.length;var e=new RegExp("(^|\\s)"+f+"(\\s|$)");for(i=0,j=0;i<a;i++){if(e.test(b[i].className)){if(g){return b[i]}else{c[j]=b[i];j++}}}return c}}})(),addEvent:(function(b,a){if(a.addEventListener){return function(g,f,d){if((g&&!(g instanceof Array)&&!g.length&&!ListJsHelpers.isNodeList(g))||g===b){g.addEventListener(f,d,false)}else{if(g&&g[0]!==undefined){var c=g.length;for(var e=0;e<c;e++){ListJsHelpers.addEvent(g[e],f,d)}}}}}else{if(a.attachEvent){return function(g,f,d){if((g&&!(g instanceof Array)&&!g.length&&!ListJsHelpers.isNodeList(g))||g===b){g.attachEvent("on"+f,function(){return d.call(g,b.event)})}else{if(g&&g[0]!==undefined){var c=g.length;for(var e=0;e<c;e++){ListJsHelpers.addEvent(g[e],f,d)}}}}}}})(this,document),getAttribute:function(f,b){var a=(f.getAttribute&&f.getAttribute(b))||null;if(!a){var c=f.attributes;var e=c.length;for(var d=0;d<e;d++){if(typeof b[d]!=="undefined"){if(b[d].nodeName===b){alert(attar[d]);a=b[d].nodeValue}}}}return a},isNodeList:function(b){var a=Object.prototype.toString.call(b);if(typeof b==="object"&&/^\[object (HTMLCollection|NodeList|Object)\]$/.test(a)&&(b.length==0||(typeof node==="object"&&b[0].nodeType>0))){return true}return false}};