jquery.comiseo.daterangepicker.min.js 7.86 KB
/*! https://github.com/tamble/jquery-ui-daterangepicker
 * Copyright (c) 2015 Tamble, Inc. Licensed MIT
 */

(function(d,D,R){function N(f,c,e){function g(c){a.button("option","label",c)}var a,b;b="drp_autogen"+v++;d('label[for="'+f.attr("id")+'"]').attr("for",b);a=d('<button type="button"></button>').addClass(c+"-triggerbutton").attr({title:f.attr("title"),tabindex:f.attr("tabindex"),id:b}).button({icons:{secondary:e.icon},label:e.initialText});return{getElement:function(){return a},getLabel:function(){return a.button("option","label")},setLabel:g,reset:function(){f.val("").change();g(e.initialText)}}}
function O(f,c,e){var g,a;(function(){g=d("<div></div>").addClass(f+"-presets");a=d("<ul></ul>");d.each(c.presetRanges,function(){d('<li><a href="#">'+this.text+"</a></li>").data("dateStart",this.dateStart).data("dateEnd",this.dateEnd).click(e).appendTo(a)});g.append(a);a.menu().data("ui-menu").delay=0})();return{getElement:function(){return g}}}function P(f,c){function e(){setTimeout(function(){g();e()},moment().endOf("day")-moment())}function g(){a.datepicker("refresh");a.datepicker("setDate",null)}
var a,b={start:null,end:null};a=d("<div></div>",{"class":f+"-calendar ui-widget-content"});a.datepicker(d.extend({},c.datepickerOptions,{beforeShowDay:function(d){var a=[!0,b.start&&(+d===+b.start||b.end&&b.start<=d&&d<=b.end)?"ui-state-highlight":""],e=[!0,""];c.datepickerOptions.hasOwnProperty("beforeShowDay")&&(e=c.datepickerOptions.beforeShowDay(d));return[a[0]&&e[0],a[1]+" "+e[1]]},onSelect:function(e,a){var f=d.datepicker.parseDate(c.datepickerOptions.dateFormat||d.datepicker._defaults.dateFormat,
e);!b.start||b.end?(b.start=f,b.end=null):f<b.start?(b.end=b.start,b.start=f):b.end=f;if(c.datepickerOptions.hasOwnProperty("onSelect"))c.datepickerOptions.onSelect(e,a)}}));e();return{getElement:function(){return a},scrollToRangeStart:function(){b.start&&a.datepicker("setDate",b.start)},getRange:function(){return b},setRange:function(c){b=c;g()},refresh:g,reset:function(){b={start:null,end:null};g()}}}function Q(f,c,e){var g,a,b;a=d('<button type="button" class="ui-priority-primary"></button>').text(c.applyButtonText).button();
b=d('<button type="button" class="ui-priority-secondary"></button>').text(c.clearButtonText).button();c=d('<button type="button" class="ui-priority-secondary"></button>').text(c.cancelButtonText).button();g=d("<div></div>").addClass(f+"-buttonpanel").append(a).append(b).append(c);e&&(a.click(e.onApply),b.click(e.onClear),c.click(e.onCancel));return{getElement:function(){return g}}}function y(f,c){function e(){if(c.autoFitCalendars){var z=d(D).width(),h=k.outerWidth(!0),b=p.getElement(),a=b.datepicker("option",
"numberOfMonths"),f=a;if(h>z){for(;1<a&&k.outerWidth(!0)>z;)b.datepicker("option","numberOfMonths",--a);a!==f&&(e.monthWidth=(h-k.outerWidth(!0))/(f-a))}else for(;a<e.numberOfMonths&&z-k.outerWidth(!0)>=e.monthWidth;)b.datepicker("option","numberOfMonths",++a);F();A=!1}}function g(){m.getElement().click(G);m.getElement().keydown(y);t.click(n);d(D).resize(function(){q?e():A=!0})}function a(a){var h=c.dateFormat;return d.datepicker.formatDate(h,a.start)+(+a.end!==+a.start?c.rangeSplitter+d.datepicker.formatDate(h,
a.end):"")}function b(a){var h=c.altFormat,b={};b.start=d.datepicker.formatDate(h,a.start);b.end=d.datepicker.formatDate(h,a.end);return JSON.stringify(b)}function E(a){var b=c.altFormat,e=null;if(a)try{e=JSON.parse(a,function(a,c){return a?d.datepicker.parseDate(b,c):c})}catch(f){}return e}function w(){var c=E(f.val());c?(m.setLabel(a(c)),p.setRange(c)):p.reset()}function x(d){var h=d||p.getRange();if(h.start&&(h.end||(h.end=h.start),d&&p.setRange(h),m.setLabel(a(h)),f.val(b(h)).change(),c.onChange))c.onChange()}
function H(){m.reset();p.reset();f.val("")}function v(){var a=d(this),b=a.data("dateStart")().startOf("day").toDate(),a=a.data("dateEnd")().startOf("day").toDate();p.setRange({start:b,end:a});c.applyOnMenuSelect&&(n(),x());return!1}function F(){k.position({my:"left top",at:"left bottom"+(0>c.verticalOffset?c.verticalOffset:"+"+c.verticalOffset),of:m.getElement(),collision:"flipfit flipfit",using:function(a,b){var d=r,e,f=b.element.top+b.element.height/2,g=b.target.top+b.target.height/2,n=s;r=b.element.left+
b.element.width/2>b.target.left+b.target.width/2?I:J;r!==d&&(c.mirrorOnCollision&&(e=r===J?B:p,k.children().first().append(e.getElement())),k.removeClass(l+"-"+u[d]),k.addClass(l+"-"+u[r]));k.css({left:a.left,top:a.top});s=f>g?K:L;s!==n&&(null!==n&&m.getElement().removeClass(l+"-"+u[n]),m.getElement().addClass(l+"-"+u[s]));d=s===K&&b.element.top-b.target.top!==b.target.height+c.verticalOffset||s===L&&b.target.top-b.element.top!==b.element.height+c.verticalOffset;m.getElement().toggleClass(l+"-vfit",
d)}})}function y(a){switch(a.which){case d.ui.keyCode.UP:case d.ui.keyCode.DOWN:a.preventDefault();a.stopPropagation();C();break;case d.ui.keyCode.ESCAPE:a.preventDefault();a.stopPropagation();n();break;case d.ui.keyCode.TAB:n()}}function C(){q||(m.getElement().addClass(l+"-active"),t.show(),q=!0,A&&e(),p.scrollToRangeStart(),k.show(),F());if(c.onOpen)c.onOpen()}function n(){q&&(k.hide(),t.hide(),m.getElement().removeClass(l+"-active"),q=!1);if(c.onClose)c.onClose()}function G(){q?n():C()}var l="comiseo-daterangepicker",
k,t,m,B,p,M,q=!1,A=!1,J=0,I=1,L=2,K=3,u=["left","right","top","bottom"],r=I,s=null;(function(){m=N(f,l,c);B=O(l,c,v);p=P(l,c);e.numberOfMonths=c.datepickerOptions.numberOfMonths;e.numberOfMonths instanceof Array&&(c.autoFitCalendars=!1);M=Q(l,c,{onApply:function(){n();x()},onClear:function(){n();H()},onCancel:function(){n();w()}});k=d("<div></div>",{"class":l+" "+l+"-"+u[r]+" ui-widget ui-widget-content ui-corner-all ui-front"}).append(d("<div></div>",{"class":l+"-main ui-widget-content"}).append(B.getElement()).append(p.getElement())).append(d('<div class="ui-helper-clearfix"></div>').append(M.getElement())).hide();
f.hide().after(m.getElement());t=d("<div></div>",{"class":"ui-front "+l+"-mask"}).hide();d("body").append(t).append(k);e();w();g()})();return{toggle:G,destroy:function(){k.remove();m.getElement().remove();f.show()},open:C,close:n,setRange:x,getRange:function(){return E(f.val())},clearRange:H,reset:w,getContainer:function(){return k}}}var v=0;d.widget("comiseo.daterangepicker",{version:"0.4.0",options:{presetRanges:[{text:"Today",dateStart:function(){return moment()},dateEnd:function(){return moment()}},
{text:"Yesterday",dateStart:function(){return moment().subtract("days",1)},dateEnd:function(){return moment().subtract("days",1)}},{text:"Last 7 Days",dateStart:function(){return moment().subtract("days",6)},dateEnd:function(){return moment()}},{text:"Last Week (Mo-Su)",dateStart:function(){return moment().subtract("days",7).isoWeekday(1)},dateEnd:function(){return moment().subtract("days",7).isoWeekday(7)}},{text:"Month to Date",dateStart:function(){return moment().startOf("month")},dateEnd:function(){return moment()}},
{text:"Previous Month",dateStart:function(){return moment().subtract("month",1).startOf("month")},dateEnd:function(){return moment().subtract("month",1).endOf("month")}},{text:"Year to Date",dateStart:function(){return moment().startOf("year")},dateEnd:function(){return moment()}}],verticalOffset:0,initialText:"Select date range...",icon:"ui-icon-triangle-1-s",applyButtonText:"Apply",clearButtonText:"Clear",cancelButtonText:"Cancel",rangeSplitter:" - ",dateFormat:"M d, yy",altFormat:"yy-mm-dd",mirrorOnCollision:!0,
applyOnMenuSelect:!0,autoFitCalendars:!0,onOpen:null,onClose:null,onChange:null,datepickerOptions:{numberOfMonths:3,maxDate:0}},_create:function(){this._dateRangePicker=y(this.element,this.options)},_destroy:function(){this._dateRangePicker.destroy()},open:function(){this._dateRangePicker.open()},close:function(){this._dateRangePicker.close()},setRange:function(d){this._dateRangePicker.setRange(d)},getRange:function(){return this._dateRangePicker.getRange()},clearRange:function(){this._dateRangePicker.clearRange()},
widget:function(){return this._dateRangePicker.getContainer()}})})(jQuery,window);