-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathjquery.rbtable.min.js
More file actions
2 lines (2 loc) · 9.07 KB
/
jquery.rbtable.min.js
File metadata and controls
2 lines (2 loc) · 9.07 KB
1
/* rbTable - Jquery plugin - Quang K. Cao runbusi.com MIT license*/(function(a){var b={init:function(b){function m(b){a(".pointer_box",a(this)).hide();a(this).unbind("mousemove")}function n(b){a(this).css({"-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-o-user-select":"none","user-select":"none"});a(".pointer_box",a(this).parent()).css({width:"0px",height:"0px"});var k=b.pageY;var l=b.pageX;var m=d.attr("pageYOffset")||a(document.documentElement).attr("scrollTop");a(".pointer_box",a(this).parent()).offset({top:b.pageY+m,left:b.pageX});a(".pointer_box",a(this).parent()).show();var n=0;var o=0;var p=0;var q=0;var r=true;k=b.pageY;if(b.shiftKey){a("."+c.row,a(this)).each(function(){if(a(this).hasClass(j+"_first")){if(k>a(this).offset().top){g=a(this).offset().top+1;hBox=b.pageY-g}else{g=b.pageY-1;hBox=a(this).offset().top-b.pageY+a(this).height()}}});i=a(this).offset().top;h=a(this).height();if(g>=i&&g<=i+h){a("."+c.row,a(this)).each(function(){e=a(this).offset().top;f=a(this).height();if(e+f>=g&&e<=g+hBox){if(!a(this).hasClass(j)){a(this).addClass(j);if(c.row_bg[2]!=""){a(this).css("background",c.row_bg[2])}}if(r){a(this).addClass(j+"_first")}r=false}else{a(this).removeClass(j);a(this).removeClass(j+"_first");if(c.row_bg[0]!=""){a(this).css("background",c.row_bg[0])}if(c.text_color[0]!=""){a(this).css({color:c.text_color[0]})}}})}}else if(b.ctrlKey){a("."+c.row,a(this)).each(function(){e=a(this).offset().top;f=a(this).height();if(e+f>=k&&e<=k){if(a(this).hasClass(j)){a(this).removeClass(j);a(this).removeClass(j+"_first")}else{a(this).addClass(j);a(this).addClass(j+"_first")}}})}else{a("."+c.row,a(this)).each(function(){e=a(this).offset().top;f=a(this).height();if(e+f>=k&&e<=k){if(!a(this).hasClass(j)){a(this).addClass(j)}if(c.row_bg[2]!=""){a("."+j,a(this)).css("background",c.row_bg[2])}if(c.text_color[2]!=""){a("."+j,a(this)).css({color:c.text_color[2]})}if(r){a(this).addClass(j+"_first")}r=false}else{a(this).removeClass(j);a(this).removeClass(j+"_first");if(c.row_bg[0]!=""){a(this).css("background",c.row_bg[0])}if(c.text_color[0]!=""){a(this).css({color:c.text_color[0]})}}})}a(this).mousemove(function(b){if(b.pageX>=l){if(b.pageY<k){p=b.pageY;q=l;n=b.pageX-l;o=k-b.pageY}else{p=k;q=l;n=b.pageX-l;o=b.pageY-k}}else{if(b.pageY<k){p=b.pageY;q=b.pageX;n=l-b.pageX;o=k-b.pageY}else{p=k;q=b.pageX;n=l-b.pageX;o=b.pageY-k}}a(".pointer_box",a(this).parent()).offset({top:p,left:q});a(".pointer_box",a(this).parent()).width(n-2*c.pointer_box_border[0]);a(".pointer_box",a(this).parent()).height(o-2*c.pointer_box_border[0]);g=a(".pointer_box",a(this).parent()).offset().top;hBox=o;i=a(this).offset().top;h=a(this).height();if(g>=i&&g<=i+h){a("."+c.row,a(this)).each(function(){e=a(this).offset().top;f=a(this).height();if(e+f>=g&&e<=g+hBox){if(!a(this).hasClass(j)){a(this).addClass(j)}if(r){a(this).addClass(j+"_first")}r=false}else{if(!b.ctrlKey){a(this).removeClass(j);a(this).removeClass(j+"_first");if(c.row_bg[0]!=""){a(this).css("background",c.row_bg[0])}if(c.text_color[0]!=""){a(this).css({color:c.text_color[0]})}}}})}})}function o(b){a(this).unbind("mousemove");a(".pointer_box",a(this)).hide();return false}var c={table:"table",table_border:[1,"solid","#ccc"],header:"th",header_bg_color:["transparent","#ccc"],header_text_color:["",""],row:"tr",row_bg:["none","#ccc","#666"],text_color:["","",""],row_border:[1,"solid","#ccc"],pointer_box_border:[1,"dashed","#FFF"],sort_indicator:["asc","desc"],pagination:["","right","both"]};var d=a(window);var e,f,g,f;var h;var i;var j="row_click";var k="row_hover";var l="header_hover";return this.each(function(){function h(b){if(e<=0){if(a(".pagination",a(this).parent().parent()).val()!=1){e=0;f=c.pagination[0]}b.preventDefault();return false}else{e=e-c.pagination[0];f=f-c.pagination[0]}if(f<=a("."+c.row,a("."+c.table,a(this).parent().parent())).size())a(".next_nav",a(this).parent()).show();p(e,f,a(this).parent().parent());a("input:text[name=page_input]",a(".pagination",a(this).parent().parent())).val(parseInt(a("input:text[name=page_input]",a(".pagination",a(this).parent().parent())).val())-1);return false}function i(b){if(f>=a("."+c.row,a("."+c.table,a(this).parent().parent())).size()){if(a("input:text[name=page_input]",a(".pagination",a(this).parent().parent())).val()<a("."+c.table,a(this).parent().parent()).size()){e=a("."+c.row,a("."+c.table,a(this).parent().parent())).size()-c.pagination[0];f=a("."+c.row,a("."+c.table,a(this).parent().parent())).size()}b.preventDefault();return false}else{e=e+c.pagination[0];f=f+c.pagination[0]}if(e>1)a(".pre_nav",a(this).parent()).show();p(e,f,a(this).parent().parent());a("input:text[name=page_input]",a(".pagination",a(this).parent().parent())).val(parseInt(a("input:text[name=page_input]",a(".pagination",a(this).parent().parent())).val())+1);return false}function p(b,d,e){a("."+c.row,a("."+c.table,e)).each(function(c){if(c>=b&&c<d){a(this).show()}else{a(this).hide()}})}var d=a(this);if(b)a.extend(c,b);if(isNaN(parseInt(c.pagination[0]))){c.pagination[0]=a("."+c.row,a("."+c.table,a(this))).size()}a("."+c.table,a(this)).css({border:c.table_border[0]+"px "+c.table_border[1]+" "+c.table_border[2]});a("."+c.row,a("."+c.table,a(this))).css({"border-top":c.row_border[0]+"px "+c.row_border[1]+" "+c.row_border[2]});a("."+c.table,a(this)).bind("mousedown",n);a(this).bind("mouseup",o);a(this).bind("mouseleave",m);a(this).css({background:c.bg,cursor:"default"});a(this).data("defaults",{row:c.row,row_click:j});a(this).append('<div class="pointer_box"></div>');a(".pointer_box",a(this)).css({position:"absolute",width:"0",height:"0",border:c.pointer_box_border[0]+"px "+c.pointer_box_border[1]+" "+c.pointer_box_border[2],display:"none","z-index":a(this).index()+1});if(c.text_color[0]!=""){a("."+c.row,a("."+c.table,a(this))).css({color:c.text_color[0]})}a("."+c.row,a("."+c.table,a(this))).hover(function(){a(this).addClass(k);if(c.row_bg[1]){a("."+k,a(this).parent()).css({background:c.row_bg[1]})}if(c.text_color[1]){a("."+k,a(this).parent()).css({color:c.text_color[1]})}},function(){a(this).removeClass(k);if(c.row_bg[0]){a(this).css("background",c.row_bg[0])}if(c.text_color[0]){a(this).css({color:c.text_color[0]})}if(a(this).hasClass(j)){if(c.row_bg[2]){a("."+j,a(this).parent()).css("background",c.row_bg[2])}if(c.text_color[2]){a("."+j,a(this).parent()).css({color:c.text_color[2]})}}});if(c.header_text_color[0]!=""){a("."+c.header,a("."+c.table,a(this))).css({color:c.header_text_color[0]})}if(c.header_bg_color[0]){a("."+c.header,a("."+c.table,a(this))).css({"background-color":c.header_bg_color[0]})}a(".col",a("."+c.header,a("."+c.table,a(this)))).hover(function(){a(this).addClass(l);if(c.header_bg_color[1]){a("."+l,a(this).parent()).css({"background-color":c.header_bg_color[1]})}if(c.header_text_color[1]!=""){a("."+l,a(this).parent()).css({color:c.header_text_color[1]})}},function(){a(this).removeClass(l);if(c.header_bg_color[0]){a(this).css("background-color",c.header_bg_color[0])}if(c.header_text_color[0]!=""){a(this).css({color:c.header_text_color[0]})}});var e=0;var f=c.pagination[0];total=a("."+c.row,a(this)).size();p(e,f,a(this));if(c.pagination[0]<total){if(c.pagination[2]=="top"||c.pagination[2]=="both"){a(this).prepend('<div class="pagination"></div>')}if(c.pagination[2]=="bottom"||c.pagination[2]=="both"){a(this).append('<div class="pagination"></div>')}a(".pagination",a(this)).css({"text-align":c.pagination[1],"z-index":a(this).index()+1});a(".pagination",a(this)).append('<a class="pre_nav" href="">«</a>');a(".pre_nav",a(".pagination",a(this))).bind("click",h);a(".pagination",a(this)).append('<input type="text" name="page_input" class="page_input" value="1" disabled="disabled"/> / '+Math.ceil(total/c.pagination[0]));a(".pagination",a(this)).append('<a class="next_nav" href="">»</a>');a(".next_nav",a(".pagination",a(this))).bind("click",i);if(total<=c.pagination[0]){a(".pre_nav",a(".pagination",a(this))).hide()}}var g=c.sort_indicator[1];a(".col",a("."+c.header,a("."+c.table,a(this)))).each(function(b){a(this).click(function(){var d=[];var h=0;a("."+c.row,a(this).parent().parent()).each(function(c){if(h==0)h=c;a(".col",a(this)).each(function(c){if(c==b){a_order=[a(this).html(),a(this).parent()];d.push(a_order)}})});g=g==c.sort_indicator[0]?c.sort_indicator[1]:c.sort_indicator[0];a(".col",a(this).parent()).each(function(){a(this).removeClass(c.sort_indicator[0]);a(this).removeClass(c.sort_indicator[1])});if(g==c.sort_indicator[0]){a(this).addClass(g);a(this).removeClass(c.sort_indicator[1])}else{a(this).addClass(g);a(this).removeClass(c.sort_indicator[0])}d.sort(function(a,b){if(a[0]<=b[0]){return g==c.sort_indicator[0]?1:-1}return g==c.sort_indicator[0]?-1:1});for(var i=0;i<d.length;i++){a(this).parent().parent().append(d[i][1])}p(e,f,a(this))})})})},selected_rows:function(b){b=typeof b=="undefined"?"name":b;var c=new Array;var d=a(this).data("defaults");a("."+d.row,a(this)).each(function(){if(a(this).hasClass(d.row_click)){if(b=="html"){c.push(a(this).html())}else{c.push(a(this).attr(b))}}});return c}};a.fn.rbTable=function(c){if(b[c]){return b[c].apply(this,Array.prototype.slice.call(arguments,1))}else if(typeof c==="object"||!c){return b.init.apply(this,arguments)}else{a.error("Method "+c+" does not exist")}}})(jQuery)