1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/bluishoul-jquery-range-picker

В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
jquery.range-picker-all.min.js 13 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
bluishoul Отправлено 16.09.2013 09:11 a469496
/*!
* jquery.range-picker.js - v 0.0.1
* author: http://my.oschina.net/dtec
* date: 2013-8-1 19:00
*/
(function(window,$,undefined){$.range_picker=function(sel,options){var selector=sel,picker=this,axis=null,pickers=null,selected=null,defaults={from:0,to:"",ranges:[0,1000,2000,5000,10000,""],axis_width:200,picker_width:8,show_seperator:true,can_switch:false,animate:false,onDrag:function(){},onSelect:function(){},beforeInit:function(){},afterInit:function(){}};picker.sel=selector;picker.options=options=$.extend({},defaults,options);var ranges=options.ranges;var picker_lefts=[];var pl_first=0,pl_last=0,pl_init=0,pr_init=0;var build_picker_ranges=function(){var width=options.axis_width;var left=options.picker_width/2;pl_first=-left;pl_last=options.axis_width-left;picker_lefts.push(pl_first);var len=ranges.length;for(var i=1;i<len-1;i++){picker_lefts.push(i*width/(len-1)-left)}picker_lefts.push(pl_last);var pleft=axis.find(".left");var pright=axis.find(".right");picker.picker_lefts=picker_lefts;pl_init=pleft.offset().left;if(options.from&&options.to){picker.set(options.from,options.to)}};var build_seperator=function(){var width=axis.width();var len=ranges.length-1;var tpl='<span title="{title}" style="width:0;height:100%;border-left:1px solid #CCC;position:absolute;left:{left}px;"></span>';for(var i=0;i<len+1;i++){var t=$(tpl.replace(/\{left\}/ig,i*width/len).replace(/\{title\}/ig,ranges[i]));if(i==0){t.hide()}axis.append(t)}};var build_dom=function(){axis=$('<div class="range-picker-axis"></div>').css("width",options.axis_width);selector.html(axis);var left=$('<div class="range-picker left"></div>');var right=$('<div class="range-picker right"></div>');selected=$('<div class="range-selected"></div>').css("height",axis.height());axis.append(left).append(right).append(selected);pickers=axis.find(".range-picker").css("width",options.picker_width)};var get_reset_index=function(left){var len=picker_lefts.length;var width=options.axis_width/len;var hwidth=width/2;for(var i=0;
i<len;i++){var cur=picker_lefts[i];if(i==0){var next=picker_lefts[i+1];if(left>=cur&&left<cur+hwidth){return 0}else{if(left>=cur+hwidth&&left<next+hwidth){return 1}else{if(left<cur){return 0}}}}else{if(i==len-1){if(left>cur){return len-1}}else{var next=picker_lefts[i+1];if(left>=cur-hwidth&&left<cur+hwidth){return i}else{if(left>=cur+hwidth&&left<next+hwidth){return i+1}}}}}};var rebuild_from_to=function(from,to){if(isNaN(from)){if(isNaN(to)){return["",""]}else{return[to,""]}}else{if(isNaN(to)){return[from,""]}else{return parseFloat(from)>parseFloat(to)?[to,from]:[from,to]}}};var get_lefts=function(){var left=axis.parent().offset().left;var pleft=axis.find(".left");var pright=axis.find(".right");return[pleft.offset().left-left,pright.offset().left-left]};var get_from_to_real_time=function(){var left=axis.parent().offset().left;var pleft=axis.find(".left");var pright=axis.find(".right");var ll=get_reset_index(pleft.offset().left-left);var rl=get_reset_index(pright.offset().left-left);var from=ranges[ll];var to=ranges[rl];return rebuild_from_to(from,to)};var get_from_to=function(){var pleft=axis.find(".left");var pright=axis.find(".right");var from=pleft.attr("title");var to=pright.attr("title");return rebuild_from_to(from,to)};var get_index_of_ranges=function(ft){for(var i=ranges.length-1;i>=0;i--){if(ft+""==ranges[i]){return i}}};var rebuild_selected_region=function(){var lefts=get_lefts();var width=Math.abs(lefts[0]-lefts[1]);var min=lefts[0]<lefts[1]?lefts[0]:lefts[1];selected.css({"width":width,"left":min+options.picker_width/2})};picker.set_by_index=function(self,index){var pl=picker_lefts[index];this.set_by_left(self,pl,options.animate);self.attr("title",ranges[index])};picker.set_by_left=function(self,left,animate){if(!animate){self.css("left",left);rebuild_selected_region()}else{self.animate({"left":left},"fast",function(){rebuild_selected_region()})}};picker.set=function(from,to){var fi=get_index_of_ranges(from);var ti=get_index_of_ranges(to);this.set_by_index(pickers.eq(0),fi);
this.set_by_index(pickers.eq(1),ti)};picker.init=function(){options.beforeInit&&options.beforeInit.call(picker);build_dom();if(options.show_seperator){build_seperator()}build_picker_ranges();pickers.on("drag",function(e,d){var self=$(this);var left=d.offsetX-pl_init-options.picker_width/2;if(left<pl_first||left>pl_last){return}picker.set_by_left(self,left);var ft=get_from_to_real_time();options.onChange&&options.onChange.call(picker,ft)});pickers.on("dragend",function(e,d){var self=$(this);var left=d.offsetX-pl_init-options.picker_width/2;var index=get_reset_index(left);picker.set_by_index(self,index);self.attr("title",ranges[index]);var ft=get_from_to();options.onSelect&&options.onSelect.call(picker,index,ft)});options.afterInit&&options.afterInit.call(picker)};return picker};$.fn.range_picker=function(options){var picker=$(this).data("range_picker");if($(this).length==1){if(!picker){var picker=$(this).data("range_picker");if(!picker){picker=new $.range_picker($(this),options);$(this).data("range_picker",picker);picker.init()}}return picker}return this.each(function(){var picker=$(this).data("range_picker");if(!picker){picker=new $.range_picker($(this),options);$(this).data("range_picker",picker);picker.init()}})}})(window,jQuery,undefined);
/*!
* jquery.event.drag - v 2.2
* Copyright (c) 2010 Three Dub Media - http://threedubmedia.com
* Open Source MIT License - http://threedubmedia.com/code/license
*/
(function($){$.fn.drag=function(str,arg,opts){var type=typeof str=="string"?str:"",fn=$.isFunction(str)?str:$.isFunction(arg)?arg:null;if(type.indexOf("drag")!==0){type="drag"+type}opts=(str==fn?arg:opts)||{};return fn?this.bind(type,opts,fn):this.trigger(type)};var $event=$.event,$special=$event.special,drag=$special.drag={defaults:{which:1,distance:0,not:":input",handle:null,relative:false,drop:true,click:false},datakey:"dragdata",noBubble:true,add:function(obj){var data=$.data(this,drag.datakey),opts=obj.data||{};data.related+=1;$.each(drag.defaults,function(key,def){if(opts[key]!==undefined){data[key]=opts[key]}})},remove:function(){$.data(this,drag.datakey).related-=1},setup:function(){if($.data(this,drag.datakey)){return}var data=$.extend({related:0},drag.defaults);$.data(this,drag.datakey,data);$event.add(this,"touchstart mousedown",drag.init,data);if(this.attachEvent){this.attachEvent("ondragstart",drag.dontstart)}},teardown:function(){var data=$.data(this,drag.datakey)||{};if(data.related){return}$.removeData(this,drag.datakey);$event.remove(this,"touchstart mousedown",drag.init);drag.textselect(true);if(this.detachEvent){this.detachEvent("ondragstart",drag.dontstart)}},init:function(event){if(drag.touched){return}var dd=event.data,results;if(event.which!=0&&dd.which>0&&event.which!=dd.which){return}if($(event.target).is(dd.not)){return}if(dd.handle&&!$(event.target).closest(dd.handle,event.currentTarget).length){return}drag.touched=event.type=="touchstart"?this:null;dd.propagates=1;dd.mousedown=this;dd.interactions=[drag.interaction(this,dd)];dd.target=event.target;dd.pageX=event.pageX;dd.pageY=event.pageY;dd.dragging=null;results=drag.hijack(event,"draginit",dd);if(!dd.propagates){return}results=drag.flatten(results);if(results&&results.length){dd.interactions=[];$.each(results,function(){dd.interactions.push(drag.interaction(this,dd))
})}dd.propagates=dd.interactions.length;if(dd.drop!==false&&$special.drop){$special.drop.handler(event,dd)}drag.textselect(false);if(drag.touched){$event.add(drag.touched,"touchmove touchend",drag.handler,dd)}else{$event.add(document,"mousemove mouseup",drag.handler,dd)}if(!drag.touched||dd.live){return false}},interaction:function(elem,dd){var offset=$(elem)[dd.relative?"position":"offset"]()||{top:0,left:0};return{drag:elem,callback:new drag.callback(),droppable:[],offset:offset}},handler:function(event){var dd=event.data;switch(event.type){case !dd.dragging&&"touchmove":event.preventDefault();case !dd.dragging&&"mousemove":if(Math.pow(event.pageX-dd.pageX,2)+Math.pow(event.pageY-dd.pageY,2)<Math.pow(dd.distance,2)){break}event.target=dd.target;drag.hijack(event,"dragstart",dd);if(dd.propagates){dd.dragging=true}case"touchmove":event.preventDefault();case"mousemove":if(dd.dragging){drag.hijack(event,"drag",dd);if(dd.propagates){if(dd.drop!==false&&$special.drop){$special.drop.handler(event,dd)}break}event.type="mouseup"}case"touchend":case"mouseup":default:if(drag.touched){$event.remove(drag.touched,"touchmove touchend",drag.handler)}else{$event.remove(document,"mousemove mouseup",drag.handler)}if(dd.dragging){if(dd.drop!==false&&$special.drop){$special.drop.handler(event,dd)}drag.hijack(event,"dragend",dd)}drag.textselect(true);if(dd.click===false&&dd.dragging){$.data(dd.mousedown,"suppress.click",new Date().getTime()+5)}dd.dragging=drag.touched=false;break}},hijack:function(event,type,dd,x,elem){if(!dd){return}var orig={event:event.originalEvent,type:event.type},mode=type.indexOf("drop")?"drag":"drop",result,i=x||0,ia,$elems,callback,len=!isNaN(x)?x:dd.interactions.length;event.type=type;event.originalEvent=null;dd.results=[];do{if(ia=dd.interactions[i]){if(type!=="dragend"&&ia.cancelled){continue}callback=drag.properties(event,dd,ia);ia.results=[];$(elem||ia[mode]||dd.droppable).each(function(p,subject){callback.target=subject;event.isPropagationStopped=function(){return false
};result=subject?$event.dispatch.call(subject,event,callback):null;if(result===false){if(mode=="drag"){ia.cancelled=true;dd.propagates-=1}if(type=="drop"){ia[mode][p]=null}}else{if(type=="dropinit"){ia.droppable.push(drag.element(result)||subject)}}if(type=="dragstart"){ia.proxy=$(drag.element(result)||ia.drag)[0]}ia.results.push(result);delete event.result;if(type!=="dropinit"){return result}});dd.results[i]=drag.flatten(ia.results);if(type=="dropinit"){ia.droppable=drag.flatten(ia.droppable)}if(type=="dragstart"&&!ia.cancelled){callback.update()}}}while(++i<len);event.type=orig.type;event.originalEvent=orig.event;return drag.flatten(dd.results)},properties:function(event,dd,ia){var obj=ia.callback;obj.drag=ia.drag;obj.proxy=ia.proxy||ia.drag;obj.startX=dd.pageX;obj.startY=dd.pageY;obj.deltaX=event.pageX-dd.pageX;obj.deltaY=event.pageY-dd.pageY;obj.originalX=ia.offset.left;obj.originalY=ia.offset.top;obj.offsetX=obj.originalX+obj.deltaX;obj.offsetY=obj.originalY+obj.deltaY;obj.drop=drag.flatten((ia.drop||[]).slice());obj.available=drag.flatten((ia.droppable||[]).slice());return obj},element:function(arg){if(arg&&(arg.jquery||arg.nodeType==1)){return arg}},flatten:function(arr){return $.map(arr,function(member){return member&&member.jquery?$.makeArray(member):member&&member.length?drag.flatten(member):member})},textselect:function(bool){$(document)[bool?"unbind":"bind"]("selectstart",drag.dontstart).css("MozUserSelect",bool?"":"none");document.unselectable=bool?"off":"on"},dontstart:function(){return false},callback:function(){}};drag.callback.prototype={update:function(){if($special.drop&&this.available.length){$.each(this.available,function(i){$special.drop.locate(this,i)})}}};var $dispatch=$event.dispatch;$event.dispatch=function(event){if($.data(this,"suppress."+event.type)-new Date().getTime()>0){$.removeData(this,"suppress."+event.type);return}return $dispatch.apply(this,arguments)};var touchHooks=$event.fixHooks.touchstart=$event.fixHooks.touchmove=$event.fixHooks.touchend=$event.fixHooks.touchcancel={props:"clientX clientY pageX pageY screenX screenY".split(" "),filter:function(event,orig){if(orig){var touched=(orig.touches&&orig.touches[0])||(orig.changedTouches&&orig.changedTouches[0])||null;
if(touched){$.each(touchHooks.props,function(i,prop){event[prop]=touched[prop]})}}return event}};$special.draginit=$special.dragstart=$special.dragend=drag})(jQuery);
/*!
* jquery.event.drag.live - v 2.2
* Copyright (c) 2010 Three Dub Media - http://threedubmedia.com
* Open Source MIT License - http://threedubmedia.com/code/license
*/
(function($){var $event=$.event,drag=$event.special.drag,origadd=drag.add,origteardown=drag.teardown;drag.noBubble=false;drag.livekey="livedrag";drag.add=function(obj){origadd.apply(this,arguments);var data=$.data(this,drag.datakey);if(!data.live&&obj.selector){data.live=true;$event.add(this,"draginit."+drag.livekey,drag.delegate)}};drag.teardown=function(){origteardown.apply(this,arguments);var data=$.data(this,drag.datakey)||{};if(data.live){$event.remove(this,"draginit."+drag.livekey,drag.delegate);data.live=false}};drag.delegate=function(event){var elems=[],target,events=$.data(this,"events")||{};$.each(events||[],function(key,arr){if(key.indexOf("drag")!==0){return}$.each(arr||[],function(i,obj){target=$(event.target).closest(obj.selector,event.currentTarget)[0];if(!target){return}$event.add(target,obj.origType+"."+drag.livekey,obj.origHandler||obj.handler,obj.data);if($.inArray(target,elems)<0){elems.push(target)}})});if(!elems.length){return false}return $(elems).bind("dragend."+drag.livekey,function(){$event.remove(this,"."+drag.livekey)})}})(jQuery);

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/bluishoul-jquery-range-picker.git
git@api.gitlife.ru:oschina-mirror/bluishoul-jquery-range-picker.git
oschina-mirror
bluishoul-jquery-range-picker
bluishoul-jquery-range-picker
master