-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathjquery.partition.min.js
19 lines (19 loc) · 9.57 KB
/
jquery.partition.min.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
(function(d){d.widget("ui.partitioner",d.ui.mouse,{widgetEventPrefix:"partitioner",options:{animate:!1,distance:0,max:100,min:0,orientation:"horizontal",step:1,values:null,colors:"green blue yellow red #6B3F7F #ccc".split(" "),indicator:!0},_create:function(){var a=this,b=this.options,c=this.element.find(".ui-partitioner-handle").addClass("ui-state-default ui-corner-all"),f=b.values&&b.values.length||1,e=[];this._mouseSliding=this._keySliding=!1;this._animateOff=!0;this._handleIndex=null;this._detectOrientation();
this._mouseInit();this.element.addClass("ui-partitioner ui-partitioner-"+this.orientation+" ui-widget ui-widget-content ui-corner-all"+(b.disabled?" ui-partitioner-disabled ui-state-disabled ui-disabled":""));for(var g=c.length;g<f;g+=1)e.push("<a class='ui-partitioner-handle ui-state-default ui-corner-all' href='#'></a>");this.handles=c.add(d(e.join("")).appendTo(a.element));this.handle=this.handles.eq(0);this.ranges=[];for(g=0;g<=this.options.values.length;g++)a=this,this.ranges[g]=d("<div></div>").appendTo(this.element).addClass("ui-partitioner-range").css({"float":"left",
"background-color":this.options.colors[g]});this.handles.filter("a").click(function(a){a.preventDefault()}).hover(function(){b.disabled||d(this).addClass("ui-state-hover")},function(){d(this).removeClass("ui-state-hover")}).focus(function(){b.disabled?d(this).blur():(d(".ui-partitioner .ui-state-focus").removeClass("ui-state-focus"),d(this).addClass("ui-state-focus"))}).blur(function(){d(this).removeClass("ui-state-focus")});this.handles.each(function(a){d(this).data("index.ui-partitioner-handle",
a)});this.handles.keydown(function(b){var c=d(this).data("index.ui-partitioner-handle"),e,f,g;if(!a.options.disabled){switch(b.keyCode){case d.ui.keyCode.HOME:case d.ui.keyCode.END:case d.ui.keyCode.PAGE_UP:case d.ui.keyCode.PAGE_DOWN:case d.ui.keyCode.UP:case d.ui.keyCode.RIGHT:case d.ui.keyCode.DOWN:case d.ui.keyCode.LEFT:if(b.preventDefault(),!a._keySliding&&(a._keySliding=!0,d(this).addClass("ui-state-active"),e=a._start(b,c),!1===e))return}g=a.options.step;e=a.options.values&&a.options.values.length?
f=a.values(c):f=a.value();switch(b.keyCode){case d.ui.keyCode.HOME:f=a._valueMin();break;case d.ui.keyCode.END:f=a._valueMax();break;case d.ui.keyCode.PAGE_UP:f=a._trimAlignValue(e+(a._valueMax()-a._valueMin())/5);break;case d.ui.keyCode.PAGE_DOWN:f=a._trimAlignValue(e-(a._valueMax()-a._valueMin())/5);break;case d.ui.keyCode.UP:case d.ui.keyCode.RIGHT:if(e===a._valueMax())return;f=a._trimAlignValue(e+g);break;case d.ui.keyCode.DOWN:case d.ui.keyCode.LEFT:if(e===a._valueMin())return;f=a._trimAlignValue(e-
g)}a._slide(b,c,f)}}).keyup(function(b){var c=d(this).data("index.ui-partitioner-handle");a._keySliding&&(a._keySliding=!1,a._stop(b,c),a._change(b,c),d(this).removeClass("ui-state-active"))});this._refreshValue();this._animateOff=!1},destroy:function(){this.handles.remove();for(var a=0;a<this.ranges.length;a++)this.ranges[a].remove();this.element.removeClass("ui-partitioner ui-partitioner-horizontal ui-partitioner-vertical ui-partitioner-disabled ui-widget ui-widget-content ui-corner-all").removeData("partitioner").unbind(".partitioner");
this._mouseDestroy();return this},_mouseCapture:function(a){var b=this.options,c,f,e,g,h;if(b.disabled)return!1;this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()};this.elementOffset=this.element.offset();c=this._normValueFromMouse({x:a.pageX,y:a.pageY});f=this._valueMax()-this._valueMin()+1;g=this;this.handles.each(function(a){var b=Math.abs(c-g.values(a));f>b&&(f=b,e=d(this),h=a)});this.values(1)===b.min&&(h+=1,e=d(this.handles[h]));if(!1===this._start(a,h))return!1;
this._mouseSliding=!0;g._handleIndex=h;e.addClass("ui-state-active").focus();b=e.offset();this._clickOffset=!d(a.target).parents().andSelf().is(".ui-partitioner-handle")?{left:0,top:0}:{left:a.pageX-b.left-e.width()/2,top:a.pageY-b.top-e.height()/2-(parseInt(e.css("borderTopWidth"),10)||0)-(parseInt(e.css("borderBottomWidth"),10)||0)+(parseInt(e.css("marginTop"),10)||0)};this.handles.hasClass("ui-state-hover")||this._slide(a,h,c);return this._animateOff=!0},_mouseStart:function(){return!0},_mouseDrag:function(a){var b=
this._normValueFromMouse({x:a.pageX,y:a.pageY});this._slide(a,this._handleIndex,b);return!1},_mouseStop:function(a){this.handles.removeClass("ui-state-active");this._mouseSliding=!1;this._stop(a,this._handleIndex);this._change(a,this._handleIndex);this._clickOffset=this._handleIndex=null;return this._animateOff=!1},_detectOrientation:function(){this.orientation="vertical"===this.options.orientation?"vertical":"horizontal"},_normValueFromMouse:function(a){var b;"horizontal"===this.orientation?(b=this.elementSize.width,
a=a.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)):(b=this.elementSize.height,a=a.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0));b=a/b;1<b&&(b=1);0>b&&(b=0);"vertical"===this.orientation&&(b=1-b);a=this._valueMax()-this._valueMin();b=this._valueMin()+b*a;return this._trimAlignValue(b)},_start:function(a,b){var c={handle:this.handles[b]};this.options.values&&this.options.values.length&&(c.values=this.values());return this._trigger("start",a,c)},_slide:function(a,
b,c){var d,e;d=b?this.values(b-1):this.options.min;e=b==this.options.values.length-1?this.options.max:this.values(b+1);c>e?c=e:c<d&&(c=d);c!==this.values(b)&&(d=this.values(),d[b]=c,a=this._trigger("slide",a,{handle:this.handles[b],value:c,values:d}),!1!==a&&this.values(b,c,!0))},_stop:function(a,b){var c={handle:this.handles[b]};this.options.values&&this.options.values.length&&(c.values=this.values());this._trigger("stop",a,c)},_change:function(a,b){if(!this._keySliding&&!this._mouseSliding){var c=
{handle:this.handles[b]};this.options.values&&this.options.values.length&&(c.values=this.values());this._trigger("change",a,c)}},values:function(a,b){var c,f,e;if(1<arguments.length)this.options.values[a]=this._trimAlignValue(b),this._refreshValue(),this._change(null,a);else if(arguments.length)if(d.isArray(arguments[0])){c=this.options.values;f=arguments[0];for(e=0;e<c.length;e+=1)c[e]=this._trimAlignValue(f[e]),this._change(null,e);this._refreshValue()}else return this._values(a);else return this._values()},
_span:function(a){return 0>=a?this.values(0):a>=this.options.values.length?this._valueMax()-this.values(this.options.values.length-1):this.values(a)-this.values(a-1)},spans:function(){for(var a=[],b=0;b<=this.options.values.length;b++)a[b]=this._span(b);return a},_setOption:function(a,b){var c,f=0;d.isArray(this.options.values)&&(f=this.options.values.length);d.Widget.prototype._setOption.apply(this,arguments);switch(a){case "disabled":b?(this.handles.filter(".ui-state-focus").blur(),this.handles.removeClass("ui-state-hover"),
this.handles.propAttr("disabled",!0),this.element.addClass("ui-disabled")):(this.handles.propAttr("disabled",!1),this.element.removeClass("ui-disabled"));break;case "orientation":this._detectOrientation();this.element.removeClass("ui-partitioner-horizontal ui-partitioner-vertical").addClass("ui-partitioner-"+this.orientation);this._refreshValue();break;case "values":this._animateOff=!0;this._refreshValue();for(c=0;c<f;c+=1)this._change(null,c);this._animateOff=!1;break;case "colors":for(c=0;c<f;c+=
1)this.ranges[c].css("background-color",this.options.colors[c])}},_values:function(a){var b,c;if(arguments.length)return b=this.options.values[a],b=this._trimAlignValue(b);b=this.options.values.slice();for(c=0;c<b.length;c+=1)b[c]=this._trimAlignValue(b[c]);return b},_trimAlignValue:function(a){if(a<=this._valueMin())return this._valueMin();if(a>=this._valueMax())return this._valueMax();var b=0<this.options.step?this.options.step:1,c=(a-this._valueMin())%b;a-=c;2*Math.abs(c)>=b&&(a+=0<c?b:-b);return parseFloat(a.toFixed(5))},
_valueMin:function(){return this.options.min},_valueMax:function(){return this.options.max},_diskSizeFormate:function(a){return 1099511627776<=a?(a/1099511627776).toFixed(1)+"T":1073741824<=a?(a/1073741824).toFixed(1)+"G":1048576<=a?(a/1048576).toFixed(1)+"M":1024<=a?(a/1024).toFixed(1)+"KB":a+"B"},_renderIndicator:function(a,b,c){if("function"===typeof this.options.indicator)this.options.indicator(a,b,c);else switch(this.options.indicator){case "value":a.text(c);break;case "diskSize":a.text(this._diskSizeFormate(c));
break;default:b=100*((c-this._valueMin())/(this._valueMax()-this._valueMin())),a.text(b.toFixed(1)+"%")}},_refreshValue:function(){var a=this.options,b=this,c=!this._animateOff?a.animate:!1,f,e={},g=0,h=0;this.options.values&&this.options.values.length&&(this.handles.each(function(j){f=100*((b.values(j)-b._valueMin())/(b._valueMax()-b._valueMin()));e["horizontal"===b.orientation?"left":"bottom"]=f+"%";d(this).stop(1,1)[c?"animate":"css"](e,a.animate);"horizontal"===b.orientation?(b.ranges[j].stop(1,
1)[c?"animate":"css"]({left:g+"%"},a.animate),b.ranges[j][c?"animate":"css"]({width:f-g+"%"},{queue:!1,duration:a.animate})):(b.ranges[j].stop(1,1)[c?"animate":"css"]({bottom:g+"%"},a.animate),b.ranges[j][c?"animate":"css"]({height:f-g+"%"},{queue:!1,duration:a.animate}));b.options.indicator&&b._renderIndicator(b.ranges[j],j,b.values(j)-h);g=f;h=b.values(j)}),"horizontal"===b.orientation?(b.ranges[b.ranges.length-1].stop(1,1)[c?"animate":"css"]({left:g+"%"},a.animate),b.ranges[b.ranges.length-1][c?
"animate":"css"]({width:100-g+"%"},{queue:!1,duration:a.animate})):(b.ranges[b.ranges.length-1].stop(1,1)[c?"animate":"css"]({bottom:g+"%"},a.animate),b.ranges[b.ranges.length-1][c?"animate":"css"]({height:100-g+"%"},{queue:!1,duration:a.animate})),b.options.indicator&&b._renderIndicator(b.ranges[b.ranges.length-1],b.ranges.length-1,b._span(b.options.values.length)))}});d.extend(d.ui.partitioner,{version:"1.0.0"})})(jQuery);