| @ -1 +1 @@ | |||
| var started=!1,update_timeout=null,start_time=null,stop_time=null,remaining_time=null,elapsed_time=null,steps=[];$(document).ready(function(){$("#set").click(start_timer),$("#stop").click(stop_timer),$("#add").click(add_step)});var start_timer=function(){return remaining_time=parseFloat($("#total").val()),elapsed_time=0,remaining_time?(remaining_time*=60,start_time=(new Date).getTime(),stop_time=start_time+1e3*remaining_time,update_timers(),$("#set-timer").hide(),$("#stop-timer").show(),void 0):(alert("invalid number: "+$("#total").val()),!1)},stop_timer=function(){$("#total").val(round(remaining_time/60,2)),update_timeout&&clearTimeout(update_timeout),$("#set-timer").show(),$("#stop-timer").hide()},update_timers=function(){remaining_time-=1,elapsed_time-=1,remaining_time>0?update_timeout=setTimeout(update_timers,1e3):($("#finished").trigger("play"),$("#set-timer").show(),$("#stop-timer").hide()),$("#remaining h3").html(format_time(remaining_time)),$("#elapsed h3").html("-"+format_time(elapsed_time));var now=(new Date).getTime(),true_total=Math.floor((stop_time-start_time)/1e3),true_elapsed=Math.floor((start_time-now)/1e3),true_remaining=Math.floor((stop_time-now)/1e3);(true_elapsed!=elapsed_time||true_remaining!=remaining_time||elapsed_time+remaining_time!=true_total)&&(remaining_time=Math.floor((stop_time-now)/1e3),elapsed_time=true_elapsed),check_steps(true_remaining)},format_time=function(time){time=Math.abs(time);var hours=Math.floor(time/3600);time-=3600*hours;var minutes=Math.floor(time/60);time-=60*minutes;var seconds=round(time,0);return less_than_ten(hours)+":"+less_than_ten(minutes)+":"+less_than_ten(seconds)},less_than_ten=function(time){return 10>time?"0"+time:time},add_step=function(){var step={at:round(parseFloat($("#add-step #time").val()),2),name:$("#add-step #name").val()};return step.at?step.name&&""!=step.name?(step.at*=60,steps.push(step),write_steps(),$("#add-step #time").val(""),$("#add-step #name").val(""),void 0):(alert("invalid name: "+step.name),!1):(alert("invalid number: "+$("#add-step #time").val()),!1)},write_steps=function(){steps.sort(function(a,b){return a.at<b.at}),$("#steps .step").remove();for(var i in steps){var step=steps[i],html=$('<div class="step row"/>');html.append('<div class="six columns"><h5 class="name">'+step.name+"</h5></div>"),html.append('<div class="two columns"><h5 class="at">'+format_time(step.at)+"</h5></div>"),html.append('<div class="two columns end"><button class="remove button">Remove Step</button></div>'),$("#steps #list").append(html)}$("#steps #list .remove").click(remove_step)},remove_step=function(){var step=$(this).parent().parent(),columns=step.children("columns"),name=columns.children(".name").html(),at=60*parseFloat(columns.children(".at").html()),remove=null;for(var i in steps){var step=steps[i];if(step.at==at&&step.name==name){remove=i;break}}remove>=0&&steps.splice(i,1),write_steps()},check_steps=function(time){$("#steps #list .step").each(function(){var columns=$(this).children(".columns"),at=columns.children(".at").html(),matches=at.match("([0-9]+):([0-9]+):([0-9]+)");at=3600*parseInt(matches[1]),at+=parseInt(60*matches[2]),at+=parseInt(matches[3]),at>time?($(this).addClass("completed"),$(this).removeClass("current")):at==time?($(this).addClass("current"),$("#completed").trigger("play")):($(this).removeClass("current"),$(this).removeClass("completed"))})},round=function(num,num_places){return num_places=Math.pow(10,num_places),Math.round(num*num_places)/num_places}; | |||
| var warning_time=60;var started=false;var update_timeout=null;var start_time=null;var stop_time=null;var remaining_time=null;var elapsed_time=null;var steps=[];$(document).ready(function(){$("#set").click(start_timer);$("#stop").click(stop_timer);$("#add").click(add_step);$("#set-warning").click(set_warning);$("#warning-time").val(round(warning_time/60,2))});var start_timer=function(){remaining_time=parseFloat($("#total").val());elapsed_time=0;if(!remaining_time){alert("invalid number: "+$("#total").val());return false}remaining_time*=60;start_time=(new Date).getTime();stop_time=start_time+remaining_time*1e3;update_timers();$("#set-timer").hide();$("#stop-timer").show()};var stop_timer=function(){$("#total").val(round(remaining_time/60,2));if(update_timeout){clearTimeout(update_timeout)}$("#set-timer").show();$("#stop-timer").hide()};var update_timers=function(){remaining_time-=1;elapsed_time-=1;if(remaining_time>0){update_timeout=setTimeout(update_timers,1e3)}else{$("#finished").trigger("play");$("#set-timer").show();$("#stop-timer").hide()}$("#remaining h3").html(format_time(remaining_time));$("#elapsed h3").html("-"+format_time(elapsed_time));var now=(new Date).getTime();var true_total=Math.floor((stop_time-start_time)/1e3);var true_elapsed=Math.floor((start_time-now)/1e3);var true_remaining=Math.floor((stop_time-now)/1e3);if(true_elapsed!=elapsed_time||true_remaining!=remaining_time||elapsed_time+remaining_time!=true_total){remaining_time=Math.floor((stop_time-now)/1e3);elapsed_time=true_elapsed}check_steps(true_remaining)};var format_time=function(time){time=Math.abs(time);var hours=Math.floor(time/3600);time-=hours*3600;var minutes=Math.floor(time/60);time-=minutes*60;var seconds=round(time,0);return less_than_ten(hours)+":"+less_than_ten(minutes)+":"+less_than_ten(seconds)};var less_than_ten=function(time){return time<10?"0"+time:time};var add_step=function(){var step={at:round(parseFloat($("#add-step #time").val()),2),name:$("#add-step #name").val()};if(!step.at){alert("invalid number: "+$("#add-step #time").val());return false}if(!step.name||step.name==""){alert("invalid name: "+step.name);return false}step.at*=60;steps.push(step);write_steps();$("#add-step #time").val("");$("#add-step #name").val("")};var write_steps=function(){steps.sort(function(a,b){return a.at<b.at});$("#steps .step").remove();for(var i in steps){var step=steps[i];var html=$('<div class="step row"/>');html.append('<div class="six columns"><h5 class="name">'+step.name+"</h5></div>");html.append('<div class="two columns"><h5 class="at">'+format_time(step.at)+"</h5></div>");html.append('<div class="two columns end"><button class="remove button">Remove Step</button></div>');$("#steps #list").append(html)}$("#steps #list .remove").click(remove_step)};var remove_step=function(){var step=$(this).parent().parent();var columns=step.children(".columns");var name=columns.children(".name").html();var at=parseFloat(columns.children(".at").html())*60;var remove=null;for(var i in steps){var step=steps[i];if(step.at==at&&step.name==name){remove=i;break}}if(remove>=0){steps.splice(i,1)}write_steps()};var check_steps=function(time){$("#steps #list .step").each(function(){var columns=$(this).children(".columns");var at=columns.children(".at").html();var matches=at.match("([0-9]+):([0-9]+):([0-9]+)");at=parseInt(matches[1])*3600;at+=parseInt(matches[2]*60);at+=parseInt(matches[3]);if(at>time){$(this).addClass("completed");$(this).removeClass("current")}else if(at==time){$(this).removeClass("warning");$(this).addClass("current");$("#completed").trigger("play")}else if(warning_time&&at+warning_time==time){$(this).addClass("warning");$("#warning").trigger("play")}else{$(this).removeClass("current");$(this).removeClass("completed")}})};var round=function(num,num_places){num_places=Math.pow(10,num_places);return Math.round(num*num_places)/num_places};var set_warning=function(){warning_time=parseFloat($("#warning-time").val())*60}; | |||
| @ -1 +1 @@ | |||
| #timers h3{font-family:Offside,cursive;font-weight:100}#add-step input,#add-step button,#set-timer input,#set-timer button,#stop-timer button{margin-top:6px;height:35px;width:100%}#stop-timer button{margin-bottom:12px}#stop-timer{display:none}.remove{font-size:12px}#list{min-height:200px}#list .header h5{text-decoration:underline}#list h5{margin:0;padding:0;line-height:35px;text-align:center}.completed{background-color:rgba(200,150,150,.8)}.current{background-color:rgba(150,200,150,.8)}#footer .columns{line-height:50px;text-align:center} | |||
| #timers h3{font-family:Offside,cursive;font-weight:100}#add-step input,#add-step button,#set-timer input,#set-timer button,#stop-timer button{margin-top:6px;height:35px;width:100%}#stop-timer button{margin-bottom:12px}#stop-timer{display:none}.remove{font-size:12px}#list{min-height:200px}#list .header h5{text-decoration:underline}#list h5{margin:0;padding:0;line-height:35px;text-align:center}.completed{background-color:rgba(200,150,150,.8)}.current{background-color:rgba(150,200,150,.8)}.warning{background-color:rgba(255,255,150,.8)}#footer .columns{padding-top:2px;padding-bottom:2px;text-align:center} | |||