PHP Classes

File: web/bundles/bootstrap/vu/js/vuTimePicker.js

Recommend this page to a friend!
  Classes of william amed   Raptor 2   web/bundles/bootstrap/vu/js/vuTimePicker.js   Download  
File: web/bundles/bootstrap/vu/js/vuTimePicker.js
Role: Auxiliary data
Content type: text/plain
Description: Auxiliary data
Class: Raptor 2
Framework that takes routes from annotations
Author: By
Last change:
Date: 8 years ago
Size: 8,564 bytes
 

Contents

Class file image Download
(function($){ if($.fn.timepicker == undefined) return; VU.namespace('VU.Components'); VU.Components.Timepicker = $.fn.timepicker.Constructor; VU.Components.Timepicker.prototype=$.extend(VU.Components.Timepicker.prototype,{ /* * Redifinicion del init para incorporar la validacion del inicio del rango * **/ init: function () { if (this.$element.parent().hasClass('input-append')) { this.$element.parent('.input-append').find('.add-on').on('click', $.proxy(this.showWidget, this)); this.$element.on({ focus: $.proxy(this.highlightUnit, this), click: $.proxy(this.highlightUnit, this), keypress: $.proxy(this.elementKeypress, this), blur: $.proxy(this.blurElement, this) }); } else { if (this.template) { this.$element.on({ focus: $.proxy(this.showWidget, this), click: $.proxy(this.showWidget, this), blur: $.proxy(this.blurElement, this) }); } else { this.$element.on({ focus: $.proxy(this.highlightUnit, this), click: $.proxy(this.highlightUnit, this), keypress: $.proxy(this.elementKeypress, this), blur: $.proxy(this.blurElement, this) }); } } //Aqui: Corrigiendo el lugar donde colocar el timepicker para que se coloquen //dentro del contenedor del elemento. this.$widget = $(this.getTemplate()).appendTo($(this.$element).parent()); // this.$widget = $(this.getTemplate()).appendTo('body'); var me=this; $('body').click(function(e){ me.hideWidget(); e.stopPropagation(); }) this.$widget.on('click', $.proxy(this.widgetClick, this)); if (this.showInputs) { this.$widget.find('input').on({ click: function() { this.select(); }, keypress: $.proxy(this.widgetKeypress, this), change: $.proxy(this.updateFromWidgetInputs, this) }); } //Aqui: Validacion para inicializar cuando este la opcion del rango, iniciar con el valor minimo if(this.options.minTime){ this.validateEntry(); this.setValueInitialRange(); this.defaultTime=this.getTime(); }else this.setDefaultTime(this.defaultTime); }, /** * validar entrada de valores Max y Min * * */ validateEntry:function(){ var min=this.match(this.options.minTime); if(min[2]==undefined) min[2]='00'; if(parseInt(min[0],10)>12) min[3]='PM'; if(this.options.showMeridian&&parseInt(min[0],10)>12){ min[0]=parseInt(min[0],10)-12; } if(min[3]==undefined) if(parseInt(min[0],10)>12) min[3]='PM'; else min[3]='AM'; var max=this.match(this.options.maxTime); if(max[2]==undefined) max[2]='00'; if(parseInt(max[0],10)>12) max[3]='PM'; if(this.options.showMeridian&&parseInt(max[0],10)>12){ max[0]=parseInt(max[0],10)-12; } if(max[3]==undefined) if(parseInt(max[0],10)>12) max[3]='PM'; else max[3]='AM'; this.options.minTime=min[0]+':'+min[1]+':'+min[2]+' '+min[3]; this.options.maxTime=max[0]+':'+max[1]+':'+max[2]+' '+max[3]; } /* * Colocar el valor inicial cuando este activo la opcion del rango * */ ,setValueInitialRange:function(){ var min=this.match(this.options.minTime); if(min[2]==undefined) min[2]='00'; this.meridian=min[3]; this.hour=parseInt(min[0],10); this.minute=parseInt(min[1],10); if(this.options.showSeconds){ this.second=parseInt(min[2],10); }else this.second=0; this.beforeTime=this.getTime(); this.updateElement(); this.updateWidget(); } /* * Para validar el Rango * */ ,validateRange:function(){ var current=this.match(this.getTime()); //Actual var dateCurrent=new Date(); if(this.options.showMeridian){ if(current[3]=='PM'){ if(parseInt(current[0],10)==12) var hourC=parseInt(current[0],10); else var hourC=parseInt(current[0],10)+12; }else{ if(parseInt(current[0],10)==12) var hourC=0; else var hourC=parseInt(current[0],10); } }else var hourC=parseInt(current[0],10); dateCurrent.setHours(hourC); dateCurrent.setMinutes(parseInt(current[1],10)); if(this.options.showSeconds){ dateCurrent.setSeconds(parseInt(current[2],10)); } //Maximo var max=this.match(this.options.maxTime); if(max[2]==undefined) max[2]='00'; var dateMax=new Date(dateCurrent); if(this.options.showMeridian){ if(max[3]=='PM'){ if(parseInt(max[0],10)==12) var hourMax=parseInt(max[0],10); else var hourMax=parseInt(max[0],10)+12; }else{ if(parseInt(max[0],10)==12) var hourMax=0; else var hourMax=parseInt(max[0],10); } }else var hourMax=parseInt(max[0],10); dateMax.setHours(hourMax); dateMax.setMinutes(parseInt(max[1],10)); if(this.options.showSeconds){ dateMax.setSeconds(parseInt(max[2],10)); } //Minimo var min=this.match(this.options.minTime); if(min[2]==undefined) min[2]='00'; //console.info(current) var dateMin=new Date(dateCurrent); if(this.options.showMeridian){ if(min[3]=='PM'){ if(parseInt(min[0],10)==12) var hourMin=parseInt(min[0],10); else var hourMin=parseInt(min[0],10)+12; }else{ if(parseInt(min[0],10)==12) var hourMin=0; else var hourMin=parseInt(min[0],10); } }else var hourMin=parseInt(min[0],10); dateMin.setHours(hourMin); dateMin.setMinutes(parseInt(min[1],10)); if(this.options.showSeconds){ dateMin.setSeconds(parseInt(min[2],10)); } // console.info(dateMin<=dateCurrent,dateMin+'<='+dateCurrent) if(dateMin<=dateCurrent&&dateMax>=dateCurrent) return true; else return false; }, //Expresion regular para dividir la fecha match: function(time) { var rtime = /^((?:1[012]|0[1-9]|[1-9])|(?:[01][0-9]|2[0-3])):([0-5][0-9]):?([0-5][0-9])?(?:\s(am|pm))?$/i, matches = rtime.exec(time); if (matches) { matches.splice(0, 1); } return matches; } /* * Redifinicion del update para agregar el validador de rango * * */ , update: function() { if(this.options.minTime) if(!this.validateRange()){ this.setValues(this.beforeTime); } this.updateElement(); this.updateWidget(); }, /* * Redifinicion de toggleMeridian para agregar el tiempo anterior * **/ toggleMeridian:function(){ this.beforeTime=this.getTime(); this.meridian = this.meridian === 'AM' ? 'PM' : 'AM'; this.update(); }, /* * Este es usado por los increment y no actualiza la interfaz, las llamadas a los increment se encargan de actualizar la interfaz * **/ toggleMeridianIntern:function(){ this.beforeTime=this.getTime(); this.meridian = this.meridian === 'AM' ? 'PM' : 'AM'; } /* * Redifinicion de los increment de las horas para cambiar el toggleMeridian por el toggleMeridianIntern y controlar el tiempo anterior * **/ , incrementHour: function() { this.beforeTime=this.getTime(); if (this.showMeridian) { if (this.hour === 11) { this.toggleMeridianIntern(); } else if (this.hour === 12) { return this.hour = 1; } } if (this.hour === 23) { return this.hour = 0; } this.hour = this.hour + 1; } , decrementHour: function() { this.beforeTime=this.getTime(); if (this.showMeridian) { if (this.hour === 1) { return this.hour = 12; } else if (this.hour === 12) { this.toggleMeridianIntern(); } } if (this.hour === 0) { return this.hour = 23; } this.hour = this.hour - 1; } }) $.fn.vuTimePicker=$.fn.timepicker; })(jQuery)