-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathtimingfield.min.js
More file actions
1 lines (1 loc) · 6.19 KB
/
timingfield.min.js
File metadata and controls
1 lines (1 loc) · 6.19 KB
1
!function(t){var i=function(i,s){this.elem=t(i),this.disabled=!1,this.settings=t.extend({},t.fn.timingfield.defaults,s),this.tpl=t(t.fn.timingfield.template),this.init()};i.prototype={init:function(){this.settings.hasSeconds||this.tpl.find(".timingfield_seconds").remove(),this.elem.after(this.tpl),this.elem.hide();this.elem.is(":disabled")&&this.disable(),this.getHours().value=this.tsToHours(this.elem.val()),this.getMinutes().value=this.tsToMinutes(this.elem.val()),this.settings.hasSeconds&&(this.getSeconds().value=this.tsToSeconds(this.elem.val())),this.tpl.width(this.settings.width),this.tpl.find(".timingfield_hours .input-group-addon").text(this.settings.hoursText),this.tpl.find(".timingfield_minutes .input-group-addon").text(this.settings.minutesText),this.tpl.find(".timingfield_seconds .input-group-addon").text(this.settings.secondsText),this.tpl.find(".timingfield_hours .timingfield_next").on("mousedown",t.proxy(this.upHour,this)),this.tpl.find(".timingfield_hours .timingfield_prev").on("mousedown",t.proxy(this.downHour,this)),this.tpl.find(".timingfield_minutes .timingfield_next").on("mousedown",t.proxy(this.upMin,this)),this.tpl.find(".timingfield_minutes .timingfield_prev").on("mousedown",t.proxy(this.downMin,this)),this.tpl.find(".timingfield_seconds .timingfield_next").on("mousedown",t.proxy(this.upSec,this)),this.tpl.find(".timingfield_seconds .timingfield_prev").on("mousedown",t.proxy(this.downSec,this)),this.tpl.find(".timingfield_hours input").on("keyup",t.proxy(this.inputHour,this)),this.tpl.find(".timingfield_minutes input").on("keyup",t.proxy(this.inputMin,this)),this.tpl.find(".timingfield_seconds input").on("keyup",t.proxy(this.inputSec,this)),this.elem.on("change",t.proxy(this.change,this))},getHours:function(){return this.tpl.find(".timingfield_hours input")[0]},getMinutes:function(){return this.tpl.find(".timingfield_minutes input")[0]},getSeconds:function(){return this.tpl.find(".timingfield_seconds input")[0]},tsToHours:function(t){return parseInt(t/3600)},tsToMinutes:function(t){return parseInt(t%3600/60)},tsToSeconds:function(t){return parseInt(t%3600%60)},updateElem:function(){var t=3600*parseInt(this.getHours().value)+60*parseInt(this.getMinutes().value);this.settings.hasSeconds&&(t+=parseInt(this.getSeconds().value)),this.elem.val(t).trigger("change").trigger("input")},upHour:function(){return!this.disabled&&this.getHours().value<this.settings.maxHour&&(this.getHours().value=parseInt(this.getHours().value)+1,this.updateElem(),!0)},downHour:function(){return!this.disabled&&this.getHours().value>0&&(this.getHours().value=parseInt(this.getHours().value)-1,this.updateElem(),!0)},inputHour:function(){this.disabled||(this.getHours().value<0?this.getHours().value=0:this.getHours().value>this.settings.maxHour&&(this.getHours().value=this.settings.maxHour)),this.updateElem()},upMin:function(){if(!this.disabled){if(this.getMinutes().value<59)return this.getMinutes().value=parseInt(this.getMinutes().value)+1,this.updateElem(),!0;if(this.upHour())return this.getMinutes().value=0,this.updateElem(),!0}return!1},downMin:function(){if(!this.disabled){if(this.getMinutes().value>0)return this.getMinutes().value=parseInt(this.getMinutes().value)-1,this.updateElem(),!0;if(this.downHour())return this.getMinutes().value=59,this.updateElem(),!0}return!1},inputMin:function(){this.disabled||(this.getMinutes().value<0?this.getMinutes().value=0:this.getMinutes().value>59&&(this.getMinutes().value=59),this.updateElem())},upSec:function(){if(!this.disabled){if(this.getSeconds().value<59)return this.getSeconds().value=parseInt(this.getSeconds().value)+1,this.updateElem(),!0;if(this.upMin())return this.getSeconds().value=0,this.updateElem(),!0}return!1},downSec:function(){if(!this.disabled){if(this.getSeconds().value>0)return this.getSeconds().value=parseInt(this.getSeconds().value)-1,this.updateElem(),!0;if(this.downMin())return this.getSeconds().value=59,this.updateElem(),!0}return!1},inputSec:function(){this.disabled||(this.getSeconds().value<0?this.getSeconds().value=0:this.getSeconds().value>59&&(this.getSeconds().value=59),this.updateElem())},disable:function(){this.disabled=!0,this.tpl.find("input:text").prop("disabled",!0)},enable:function(){this.disabled=!1,this.tpl.find("input:text").prop("disabled",!1)},change:function(){this.elem.is(":disabled")?this.disable():this.enable()}},t.fn.timingfield=function(s){return this.each(function(){var n=t(this);if(!n.data("timingfield")){var e=new i(this,s);n.data("timingfield",e)}})},t.fn.timingfield.defaults={maxHour:23,width:263,hoursText:"H",minutesText:"M",secondsText:"S",hasSeconds:!0},t.fn.timingfield.template='<div class="timingfield"> <div class="timingfield_hours"> <button type="button" class="timingfield_next btn btn-default btn-xs btn-block" tabindex="-1"><span class="glyphicon glyphicon-plus"></span></button> <div class="input-group"> <input type="text" class="form-control"> <span class="input-group-addon"></span> </div> <button type="button" class="timingfield_prev btn btn-default btn-xs btn-block" tabindex="-1"><span class="glyphicon glyphicon-minus"></span></button> </div> <div class="timingfield_minutes"> <button type="button" class="timingfield_next btn btn-default btn-xs btn-block" tabindex="-1"><span class="glyphicon glyphicon-plus"></span></button> <span class="input-group"> <input type="text" class="form-control"> <span class="input-group-addon"></span> </span> <button type="button" class="timingfield_prev btn btn-default btn-xs btn-block" tabindex="-1"><span class="glyphicon glyphicon-minus"></span></button> </div> <div class="timingfield_seconds"> <button type="button" class="timingfield_next btn btn-default btn-xs btn-block" tabindex="-1"><span class="glyphicon glyphicon-plus"></span></button> <span class="input-group"> <input type="text" class="form-control"> <span class="input-group-addon"></span> </span> <button type="button" class="timingfield_prev btn btn-default btn-xs btn-block" tabindex="-1"><span class="glyphicon glyphicon-minus"></span></button> </div> </div>'}(jQuery);