/*! * angular-ui-timepicker * https://mirskytech.github.io/angular-ui-timepicker * Version: 0.2.0 - 2015-12-08T15:25:05.715Z * License: MIT */ !function(){"use strict";var t=function(t,e,a,n){var o,r,i,s,l=$(e),c=!1,d=!1,p=null,m=null,u=200,f=u,h=u,g={top:10,right:10,bottom:10,left:10},v=10,w=1,x=720,M=1,b=!1,k=function(t,e,n){function l(t){return"AM"===moment(t).format("A")}function c(){o=r=h-g.right-g.left-g.top-g.bottom,i=s=o/2,v=.2*o,m.outerRadius(o/2),m.innerRadius(o/2*.85)}function d(e,a,n,r){var i=Math.min((M-w)/(x-w),1),s=Math.min(360*i,360)*Math.PI/180;m.endAngle(s),e.attr("d",m);var l=360*M/x,c=o/2-5,d=c*Math.cos((l-90)*Math.PI/180),p=c*Math.sin((l-90)*Math.PI/180);a.attr("cx",d).attr("cy",p);var u=moment(t.datetime).hours(),f=u>=12?u-12:u,h=moment(t.datetime).minutes(),g=""+f+":";10>h&&(g+="0"),g+=h,n.text(g),r.text(moment(t.datetime).format("A"))}({increments:t.increments||1});p=d3.select(e),m=d3.svg.arc().startAngle(0*(Math.PI/180)).endAngle(360*(Math.PI/180)),p.each(function(e){c();var n=d3.select(this).selectAll("svg").data([e]),p=n.enter().append("svg").attr("class","x1-timepicker-svg").append("g").attr("transform","translate("+g.left+","+g.top+")");n.attr("width",u).attr("height",f);var h=p.append("g").attr("class","x1-timepicker-component"),w=(h.append("circle").attr("class","x1-timepicker-inner").attr("transform","translate("+i+","+s+")").attr("cx",0).attr("cy",0).attr("r",o/2),h.append("path").attr("transform","translate("+i+","+s+")").attr("d",m),p.append("g").attr("class","x1-timepicker-arcs")),k=w.append("path").attr("class","arc").attr("transform","translate("+i+","+s+")").attr("d",m),y=p.append("g").attr("class","x1-timepicker-labels"),$=(y.append("text").attr("class","title").attr("x",i).attr("y",o/4.2+v/3).attr("width",o).text("Time").style("font-size",.4*v+"px"),y.append("text").attr("class","time").attr("x",i).attr("y",s+v/3).attr("width",o).style("font-size",1.4*v+"px")),P=y.append("text").attr("class","ampm").attr("cursor","pointer").attr("x",i).attr("y",o/1.4+v/3).attr("width",o).style("font-size",.6*v+"px").on("click",function(){var e=l(t.datetime),a=e?12:-12;b=!e,t.datetime=moment(t.datetime).add(a,"hour").toDate(),d3.select(this).text(moment(t.datetime).format("A")),t.$apply()}),C=d3.behavior.drag().on("drag",function(){var e=d3.event.x,n=d3.event.y,i=(Math.PI*o,0),s=0,l=e-o/2,c=r/2-n,p=(c-s)/(l-i),m=Math.abs(Math.atan(p)/(Math.PI/180)),u=0;l>0&&c>=0?u=90-m:l>=0&&0>c?u=90+m:0>l&&0>=c?u=270-m:0>=l&&c>0&&(u=270+m),M=x*(u/360);var f=Math.floor(M/60);f=b?f:f+12;var h=Math.floor(M%60/a.increments)*a.increments;t.datetime=moment(t.datetime).set("hour",f).set("minute",h).set("second",0).toDate(),t.$apply(function(){d(k,A,$,P)})}),A=p.append("g").append("circle").attr("class","x1-timepicker-handler").attr("cursor","pointer").attr("transform","translate("+i+","+s+")").attr("cx",0).attr("cy",0).attr("r",10).attr("fill","#FFFFFF").call(C),z=function(t){var e=moment(t).hours(),a=e>=12?e-12:e,n=moment(t).minutes();M=60*a+n,d(k,A,$,P)};z(t.datetime),b=l(t.datetime),t.$watch("datetime",function(t,e){z(t)})})},y=function(){var e=$("
").addClass("bootstrap-datetimepicker-widget dropdown-menu"),a=document.createElement("div");return k(t,a),e.append(a)},P=function(){var t,n=(c||e).position(),o=(c||e).offset(),r=a.widgetPositioning.vertical,i=a.widgetPositioning.horizontal;if(a.widgetParent)t=a.widgetParent.append(d);else if(e.is("input"))t=e.after(d).parent();else{if(a.inline)return void(t=e.append(d));t=e,e.children().first().after(d)}if("auto"===r&&(r=o.top+1.5*d.height()>=$(window).height()+$(window).scrollTop()&&d.height()+e.outerHeight()$(window).width()?"right":"left"),"top"===r?d.addClass("top").removeClass("bottom"):d.addClass("bottom").removeClass("top"),"right"===i?d.addClass("pull-right"):d.removeClass("pull-right"),"relative"!==t.css("position")&&(t=t.parents().filter(function(){return"relative"===$(this).css("position")}).first()),0===t.length)throw new Error("datetimepicker component should be placed within a relative positioned container");d.css({top:"top"===r?"auto":n.top+e.outerHeight(),bottom:"top"===r?n.top+e.outerHeight():"auto",left:"left"===i?t===e?0:n.left:"auto",right:"left"===i?"auto":t.outerWidth()-e.outerWidth()-(t===e?0:n.left)})},C=function(){var t=!1;return d?(d.find(".collapse").each(function(){var e=$(this).data("collapse");return e&&e.transitioning?(t=!0,!1):!0}),t?!1:(c&&c.hasClass("btn")&&c.toggleClass("active"),d.hide(),$(window).off("resize",P),d.off("click","[data-action]"),d.off("mousedown",!1),d.remove(),d=!1,l.blur(),!0)):!1},A=function(){return l.prop("disabled")||!a.ignoreReadonly&&l.prop("readonly")||d?!1:(d=y(t,e),$(window).on("resize",P),d.on("mousedown",!1),c&&c.hasClass("btn")&&c.toggleClass("active"),d.show(),P(),a.focusOnShow&&!l.is(":focus")&&l.focus(),!0)},z=function(){l.on({blur:C,focus:A}),e.is("input")?l.on({focus:A}):c&&(c.on("click",toggle),c.on("mousedown",!1))};z()};angular.module("ui.timepicker",["angularMoment"]).directive("uiTimepicker",["$compile","moment",function(e,a){var n={increments:1,format:"h:mm a",widgetPositioning:{horizontal:"auto",vertical:"auto"},widgetParent:null,ignoreReadonly:!1,keepOpen:!1,focusOnShow:!0,inline:!1};return{replace:!1,require:"ngModel",scope:{datetime:"=ngModel",options:"="},template:'
',link:function(o,r,i,s){console.log(o.options);var l=angular.merge({},n,o.options||{});console.log(l),t(o,r,l,e),s.$formatters.push(function(t){return t?a(t).format(l.format):t})}}}])}();