1 |
|
2 |
|
3 |
|
4 |
|
5 | ;(function(p,l){"undefined"!=typeof module?module.exports=l():"function"==typeof define&&"object"==typeof define.amd?define(l):this[p]=l()})("Clusterize",function(){function p(b,a,c){return a.addEventListener?a.addEventListener(b,c,!1):a.attachEvent("on"+b,c)}function l(b,a,c){return a.removeEventListener?a.removeEventListener(b,c,!1):a.detachEvent("on"+b,c)}function q(b){return"[object Array]"===Object.prototype.toString.call(b)}function m(b,a){return window.getComputedStyle?window.getComputedStyle(a)[b]:
|
6 | a.currentStyle[b]}var k=function(){for(var b=3,a=document.createElement("b"),c=a.all||[];a.innerHTML="\x3c!--[if gt IE "+ ++b+"]><i><![endif]--\x3e",c[0];);return 4<b?b:document.documentMode}(),x=navigator.platform.toLowerCase().indexOf("mac")+1,n=function(b){if(!(this instanceof n))return new n(b);var a=this,c={item_height:0,block_height:0,rows_in_block:50,rows_in_cluster:0,cluster_height:0,blocks_in_cluster:4,tag:null,content_tag:null,show_no_data_row:!0,no_data_class:"clusterize-no-data",no_data_text:"No data",
|
7 | keep_parity:!0,callbacks:{},scroll_top:0};a.options={};for(var d="rows_in_block blocks_in_cluster show_no_data_row no_data_class no_data_text keep_parity tag callbacks".split(" "),f=0,h;h=d[f];f++)a.options[h]="undefined"!=typeof b[h]&&null!=b[h]?b[h]:c[h];c=["scroll","content"];for(f=0;d=c[f];f++)if(a[d+"_elem"]=b[d+"Id"]?document.getElementById(b[d+"Id"]):b[d+"Elem"],!a[d+"_elem"])throw Error("Error! Could not find "+d+" element");a.content_elem.hasAttribute("tabindex")||a.content_elem.setAttribute("tabindex",
|
8 | 0);var e=q(b.rows)?b.rows:a.fetchMarkup(),g={data:"",bottom:0};b=a.scroll_elem.scrollTop;a.exploreEnvironment(e);a.insertToDOM(e,g);a.scroll_elem.scrollTop=b;var k=!1,m=0,r=!1,t=function(){x&&(r||(a.content_elem.style.pointerEvents="none"),r=!0,clearTimeout(m),m=setTimeout(function(){a.content_elem.style.pointerEvents="auto";r=!1},50));k!=(k=a.getClusterNum())&&a.insertToDOM(e,g);a.options.callbacks.scrollingProgress&&a.options.callbacks.scrollingProgress(a.getScrollProgress())},u=0,v=function(){clearTimeout(u);
|
9 | u=setTimeout(a.refresh,100)};p("scroll",a.scroll_elem,t);p("resize",window,v);a.destroy=function(b){l("scroll",a.scroll_elem,t);l("resize",window,v);a.html((b?a.generateEmptyRow():e).join(""))};a.refresh=function(){a.getRowsHeight(e)&&a.update(e)};a.update=function(b){e=q(b)?b:[];b=a.scroll_elem.scrollTop;e.length*a.options.item_height<b&&(k=a.scroll_elem.scrollTop=0);a.insertToDOM(e,g);a.scroll_elem.scrollTop=b};a.clear=function(){a.update([])};a.getRowsAmount=function(){return e.length};a.getScrollProgress=
|
10 | function(){return this.options.scroll_top/(e.length*this.options.item_height)*100||0};var w=function(b,c){var d=q(c)?c:[];d.length&&(e="append"==b?e.concat(d):d.concat(e),a.insertToDOM(e,g))};a.append=function(a){w("append",a)};a.prepend=function(a){w("prepend",a)}};n.prototype={constructor:n,fetchMarkup:function(){for(var b=[],a=this.getChildNodes(this.content_elem);a.length;)b.push(a.shift().outerHTML);return b},exploreEnvironment:function(b){var a=this.options;a.content_tag=this.content_elem.tagName.toLowerCase();
|
11 | b.length&&(k&&9>=k&&!a.tag&&(a.tag=b[0].match(/<([^>\s/]*)/)[1].toLowerCase()),1>=this.content_elem.children.length&&this.html(b[0]+b[0]+b[0]),a.tag||(a.tag=this.content_elem.children[0].tagName.toLowerCase()),this.getRowsHeight(b))},getRowsHeight:function(b){var a=this.options,c=a.item_height;a.cluster_height=0;if(b.length)return b=this.content_elem.children,a.item_height=b[Math.floor(b.length/2)].offsetHeight,"tr"==a.tag&&"collapse"!=m("borderCollapse",this.content_elem)&&(a.item_height+=parseInt(m("borderSpacing",
|
12 | this.content_elem))||0),a.block_height=a.item_height*a.rows_in_block,a.rows_in_cluster=a.blocks_in_cluster*a.rows_in_block,a.cluster_height=a.blocks_in_cluster*a.block_height,c!=a.item_height},getClusterNum:function(){this.options.scroll_top=this.scroll_elem.scrollTop;return Math.floor(this.options.scroll_top/(this.options.cluster_height-this.options.block_height))||0},generateEmptyRow:function(){var b=this.options;if(!b.tag||!b.show_no_data_row)return[];var a=document.createElement(b.tag),c=document.createTextNode(b.no_data_text),
|
13 | d;a.className=b.no_data_class;"tr"==b.tag&&(d=document.createElement("td"),d.appendChild(c));a.appendChild(d||c);return[a.outerHTML]},generate:function(b,a){var c=this.options,d=b.length;if(d<c.rows_in_block)return{top_offset:0,bottom_offset:0,rows_above:0,rows:d?b:this.generateEmptyRow()};c.cluster_height||this.exploreEnvironment(b);var f=Math.max((c.rows_in_cluster-c.rows_in_block)*a,0),h=f+c.rows_in_cluster,e=Math.max(f*c.item_height,0),c=Math.max((d-h)*c.item_height,0),d=[],g=f;for(1>e&&g++;f<
|
14 | h;f++)b[f]&&d.push(b[f]);return{top_offset:e,bottom_offset:c,rows_above:g,rows:d}},renderExtraTag:function(b,a){var c=document.createElement(this.options.tag);c.className=["clusterize-extra-row","clusterize-"+b].join(" ");a&&(c.style.height=a+"px");return c.outerHTML},insertToDOM:function(b,a){var c=this.generate(b,this.getClusterNum()),d=c.rows.join(""),f=this.checkChanges("data",d,a),h=this.checkChanges("bottom",c.bottom_offset,a),e=this.options.callbacks,g=[];f?(c.top_offset&&(this.options.keep_parity&&
|
15 | g.push(this.renderExtraTag("keep-parity")),g.push(this.renderExtraTag("top-space",c.top_offset))),g.push(d),c.bottom_offset&&g.push(this.renderExtraTag("bottom-space",c.bottom_offset)),e.clusterWillChange&&e.clusterWillChange(),this.html(g.join("")),"ol"==this.options.content_tag&&this.content_elem.setAttribute("start",c.rows_above),e.clusterChanged&&e.clusterChanged()):h&&(this.content_elem.lastChild.style.height=c.bottom_offset+"px")},html:function(b){var a=this.content_elem;if(k&&9>=k&&"tr"==this.options.tag){var c=
|
16 | document.createElement("div");for(c.innerHTML="<table><tbody>"+b+"</tbody></table>";b=a.lastChild;)a.removeChild(b);for(c=this.getChildNodes(c.firstChild.firstChild);c.length;)a.appendChild(c.shift())}else a.innerHTML=b},getChildNodes:function(b){b=b.children;for(var a=[],c=0,d=b.length;c<d;c++)a.push(b[c]);return a},checkChanges:function(b,a,c){var d=a!=c[b];c[b]=a;return d}};return n}); |
\ | No newline at end of file |