-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtimer.min.js
1 lines (1 loc) · 5.35 KB
/
timer.min.js
1
var x=null,timer=0,minutes=0,hours=0,timeNow=null,taskname="",items_array=[],item_id=1,delete_confirm=!1,continue_confirm=!1,today=(new Date).toLocaleDateString(),elem__taskname=$("#taskname"),elem__seconds=$("#seconds"),elem__minutes=$("#minutes"),elem__hours=$("#hours");function startTimer(e){""==elem__taskname.val()&&elem__taskname.focus(),e||(minutes=0,hours=0),x=setInterval(function(){(timer+=1)<10?elem__seconds.html("0"+timer):(elem__seconds.html(timer),timer>59&&(timer=0,(minutes+=1)<10?elem__minutes.html("0"+minutes):(elem__minutes.html(minutes),minutes>59&&(minutes=0,(hours+=1)<10?elem__hours.html("0"+hours):elem__hours.html(hours)))))},1e3)}function stopTimer(){if(""!=elem__taskname.val()){$("#start").prop("disabled",!1),$("#stop").prop("disabled",!0),$("#taskname_label").text("Task name"),$("#items-list-header").hasClass("hide")&&$("#items-list-header").removeClass("hide");let e=elem__taskname.val(),t=parseTime("toseconds");createItem(e,t,today),createRow(e,t,today),elem__taskname.val(""),resetTimer(),clearInterval(x)}else elem__taskname.focus(),$("#taskname_label").text("Insert task name here")}function createItem(e,t,s){let a={id:item_id,name:e,duration:t,date:s};items_array.push(a),saveItems()}function createRow(e,t,s){let a=$("<div>").addClass("item item-grid");a.attr("id",item_id);let i=$("<input>").addClass("item-name input-neutral"),r=$("<div>").addClass("date");r.text(s);let n=createOptions();i.val(e),a.append(i),a.append(r),parseInt(t)&&(duration_elem=parseTime("toelement",t)),a.append(duration_elem),a.append(n);let m=$("#items-list-container");item_id+=1,a.addClass("hide"),m.prepend(a);let o=0,l=setInterval(function(){(o=1)&&($(".hide").removeClass("hide"),clearInterval(l)),o+=1},50)}function createDuration(e){Array.isArray(e)||(e=parseTime(""));let t=$("<div>").addClass("duration"),s="";return e[0]>0&&(s+=e[0]+"h "),e[1]>0&&(s+=e[1]+"m "),e[2]>0&&(s+=e[2]+"s"),t.html(s),t}function createOptions(){let e=$("<div>").addClass("item-options"),t=$("<button>").addClass("continue btn-small"),s=$("<button>").addClass("delete btn-small");return t.html("Continue"),t.attr("onclick","continueTimer(this)"),s.html("Delete"),s.attr("onclick","deleteItem(this)"),e.append(t),e.append(s),e}function resetTimer(){timer=0,minutes=0,hours=0,elem__seconds.html(timer),elem__minutes.html(minutes),elem__hours.html(hours)}function continueTimer(e){if(e.classList.contains("resume")&&continue_confirm){$("#start").prop("disabled",!0),$("#stop").prop("disabled",!1);let t=$(e).parent().parent().attr("id"),s=items_array.find(e=>e.id==t),a=s.duration,i=s.name;elem__taskname.val(i),setItemValuesToTimer(a),deleteItem(e,"resume"),startTimer(!0)}else continue_confirm&&0==e.classList.contains("resume")?($(".resume").removeClass("resume"),$(e).addClass("resume"),continue_confirm=!1):continue_confirm||($(".continue").removeClass("resume"),$(e).addClass("resume"),continue_confirm=!0)}function parseTime(e,t){let s;if("toseconds"==e){let e=0;return hours>0&&(e+=60*hours*60),minutes>0&&(e+=60*minutes),s=(e+=timer).toString()}if("toelement"==e||"toarray"==e){let a=t,i=Math.floor(a/3600),r=Math.floor((a-3600*i)/60);if(s=[i,r,a-3600*i-60*r],"toelement"==e){return createDuration(s)}if("toarray"==e)return s}}function setItemValuesToTimer(e){let t=parseTime("toarray",e);hours=t[0],minutes=t[1],timer=t[2],elem__hours.html(hours),elem__minutes.html(minutes),elem__seconds.html(timer)}function deleteItem(e,t){if(e.classList.contains("confirm")&&delete_confirm||"resume"==t){let t=$(e).parent().parent().attr("id");item_id=1,items_array.forEach(e=>{e.id==t?items_array.splice(items_array.indexOf(e),1):(e.id=item_id,item_id+=1)}),saveItems(),$(e).parent().parent().remove();let s=$("#items-list-container"),a=s.children().length;s.children().each(function(){$(this).attr("id",a),a-=1}),delete_confirm=!1,continue_confirm=!1,$(".confirm").removeClass("confirm"),$(".resume").removeClass("resume")}else delete_confirm?delete_confirm&&0==e.classList.contains("confirm")&&($(".confirm").removeClass("confirm"),$(e).addClass("confirm"),delete_confirm=!1):($(".confirm").removeClass("confirm"),$(e).addClass("confirm"),delete_confirm=!0)}function saveItems(){items_array.length<1&&$("#items-list-header").addClass("hide");let e=1;items_array.forEach(t=>{t.id=e,e+=1});var t=JSON.stringify(items_array);localStorage.setItem("data",t)}function loadItems(){null!=localStorage.getItem("data")&&(items_array=JSON.parse(localStorage.getItem("data"))).length>0&&items_array.forEach(e=>{e.id=item_id,createRow(e.name,e.duration,e.date)})}function showTime(){let e=(new Date).toLocaleTimeString();$("#timeNow").html(e)}resetTimer(),loadItems(),$("#start").click(function(){$("#start").prop("disabled",!0),$("#stop").prop("disabled",!1),startTimer()}),$("#stop").click(function(){stopTimer()}),$("#save").click(function(){saveItems()}),$("#load").click(function(){loadItems()}),$("#clear").click(function(){resetLocalStorage()}),$(document).click(function(e){e.target.closest(".confirm")?$(".resume").removeClass("resume"):e.target.closest(".resume")?$(".confirm").removeClass("confirm"):($(".confirm").removeClass("confirm"),$(".resume").removeClass("resume"))}),$("input.item-name").change(function(){let e=$(this).val(),t=$(this).parent().attr("id");items_array.find(e=>e.id==t).name=e,saveItems()});let display=setInterval(showTime,1e3);function resetLocalStorage(){confirm("Are you sure you want to clear all entrys?")&&(localStorage.clear(),location.reload())}