Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * jQRangeSlider
- * A javascript slider selector that supports dates
- *
- * Copyright (C) Guillaume Gautreau 2012
- * Dual licensed under the MIT or GPL Version 2 licenses.
- *
- */
- (function ($, undefined) {
- "use strict";
- $.fn.dateRangeSlider = function() {
- $.widget("ui.dateRangeSlider", $.ui.rangeSlider, {
- options: {
- bounds: {min: new Date(2010,0,1).valueOf(), max: new Date(2012,0,1).valueOf()},
- defaultValues: {min: new Date(2010,1,11).valueOf(), max: new Date(2011,1,11).valueOf()}
- },
- _create: function(){
- $.ui.rangeSlider.prototype._create.apply(this);
- this.element.addClass("ui-dateRangeSlider");
- },
- destroy: function(){
- this.element.removeClass("ui-dateRangeSlider");
- $.ui.rangeSlider.prototype.destroy.apply(this);
- },
- _setDefaultValues: function(){
- this._values = {
- min: this.options.defaultValues.min.valueOf(),
- max: this.options.defaultValues.max.valueOf()
- };
- },
- _setRulerParameters: function(){
- this.ruler.ruler({
- min: new Date(this.options.bounds.min.valueOf()),
- max: new Date(this.options.bounds.max.valueOf()),
- scales: this.options.scales
- });
- },
- _setOption: function(key, value){
- if ((key === "defaultValues" || key === "bounds") && typeof value !== "undefined" && value !== null && this._isValidDate(value.min) && this._isValidDate(value.max)){
- $.ui.rangeSlider.prototype._setOption.apply(this, [key, {min:value.min.valueOf(), max:value.max.valueOf()}]);
- }else{
- $.ui.rangeSlider.prototype._setOption.apply(this, this._toArray(arguments));
- }
- },
- _handleType: function(){
- return "dateRangeSliderHandle";
- },
- option: function(key){
- if (key === "bounds" || key === "defaultValues"){
- var result = $.ui.rangeSlider.prototype.option.apply(this, arguments);
- return {min:new Date(result.min), max:new Date(result.max)};
- }
- return $.ui.rangeSlider.prototype.option.apply(this, this._toArray(arguments));
- },
- _defaultFormatter: function(value){
- var month = value.getMonth() + 1,
- day = value.getDate();
- return "" + value.getFullYear() + "-" + (month < 10 ? "0" + month : month) + "-" + (day < 10 ? "0" + day : day);
- },
- _getFormatter: function(){
- var formatter = this.options.formatter;
- if (this.options.formatter === false || this.options.formatter === null){
- formatter = this._defaultFormatter;
- }
- return (function(formatter){
- return function(value){
- return formatter(new Date(value));
- };
- }(formatter));
- },
- values: function(min, max){
- var values = null;
- if (this._isValidDate(min) && this._isValidDate(max))
- {
- values = $.ui.rangeSlider.prototype.values.apply(this, [min.valueOf(), max.valueOf()]);
- }else{
- values = $.ui.rangeSlider.prototype.values.apply(this, this._toArray(arguments));
- }
- return {min: new Date(values.min), max: new Date(values.max)};
- },
- min: function(min){
- if (this._isValidDate(min)){
- return new Date($.ui.rangeSlider.prototype.min.apply(this, [min.valueOf()]));
- }
- return new Date($.ui.rangeSlider.prototype.min.apply(this));
- },
- max: function(max){
- if (this._isValidDate(max)){
- return new Date($.ui.rangeSlider.prototype.max.apply(this, [max.valueOf()]));
- }
- return new Date($.ui.rangeSlider.prototype.max.apply(this));
- },
- bounds: function(min, max){
- var result;
- if (this._isValidDate(min) && this._isValidDate(max)) {
- result = $.ui.rangeSlider.prototype.bounds.apply(this, [min.valueOf(), max.valueOf()]);
- } else {
- result = $.ui.rangeSlider.prototype.bounds.apply(this, this._toArray(arguments));
- }
- return {min: new Date(result.min), max: new Date(result.max)};
- },
- _isValidDate: function(value){
- return typeof value !== "undefined" && value instanceof Date;
- },
- _toArray: function(argsObject){
- return Array.prototype.slice.call(argsObject);
- }
- });
- }
- }(jQuery));
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement