parent
7639d2e196
commit
76c7b544f0
After Width: | Height: | Size: 52 KiB |
@ -0,0 +1,10 @@
|
|||||||
|
# Pomodoro-Timer
|
||||||
|
|
||||||
|
# Description
|
||||||
|
|
||||||
|
* Pomodoro is an excellent technique for increasing your productivity and helps you overcome procrastination.
|
||||||
|
* Set your timer and focus on a single task until the timer rings. When your session ends, mark off one pomodoro and record what you completed. Then enjoy a five-minute break.
|
||||||
|
* Created using Vanilla Javascript.
|
||||||
|
|
||||||
|
# Snapshot
|
||||||
|
![Preview]()
|
@ -0,0 +1,127 @@
|
|||||||
|
const sessionLength= document.querySelector('#sessionLength');
|
||||||
|
const breakLength= document.querySelector('#breakLength');
|
||||||
|
const addSession= document.querySelector('#add-session');
|
||||||
|
const subSession= document.querySelector('#sub-session');
|
||||||
|
const addBreak= document.querySelector('#add-break');
|
||||||
|
const subBreak= document.querySelector('#sub-break');
|
||||||
|
|
||||||
|
const startButton= document.querySelector('.start');
|
||||||
|
const stopButton= document.querySelector('.stop');
|
||||||
|
const resetButton= document.querySelector('.reset');
|
||||||
|
|
||||||
|
const clock= document.querySelector('.clock');
|
||||||
|
const session= document.querySelector('.session');
|
||||||
|
|
||||||
|
startButton.addEventListener('click',startPomodoro);
|
||||||
|
resetButton.addEventListener('click',resetPomodoro);
|
||||||
|
stopButton.addEventListener('click',stopPomodoro);
|
||||||
|
|
||||||
|
let workTime= sessionLength.innerHTML;
|
||||||
|
let breakTime= breakLength.innerHTML;
|
||||||
|
let timerID;
|
||||||
|
let timeStart;
|
||||||
|
addSession.addEventListener('click',()=>{
|
||||||
|
if(workTime<60){workTime++;}
|
||||||
|
sessionLength.innerHTML= workTime;
|
||||||
|
clock.innerHTML= workTime+':00';
|
||||||
|
console.log(workTime);
|
||||||
|
})
|
||||||
|
subSession.addEventListener('click',()=>{
|
||||||
|
if(workTime>1){workTime--;}
|
||||||
|
sessionLength.innerHTML= workTime;
|
||||||
|
clock.innerHTML= workTime+':00';
|
||||||
|
})
|
||||||
|
addBreak.addEventListener('click',()=>{
|
||||||
|
if(breakTime<60){breakTime++;}
|
||||||
|
breakLength.innerHTML=breakTime;
|
||||||
|
})
|
||||||
|
subBreak.addEventListener('click',()=>{
|
||||||
|
if(breakTime>1){breakTime--;}
|
||||||
|
breakLength.innerHTML=breakTime;
|
||||||
|
})
|
||||||
|
function stopPomodoro(){
|
||||||
|
addSession.disabled=false;
|
||||||
|
subSession.disabled=false;
|
||||||
|
addBreak.disabled=false;
|
||||||
|
subBreak.disabled=false;
|
||||||
|
startButton.disabled= false;
|
||||||
|
clearInterval(timerID);
|
||||||
|
session.innerHTML="Work Session";
|
||||||
|
clock.innerHTML=sessionLength.innerHTML+":00";
|
||||||
|
}
|
||||||
|
|
||||||
|
function resetPomodoro(){
|
||||||
|
addSession.disabled=true;
|
||||||
|
subSession.disabled=true;
|
||||||
|
addBreak.disabled=true;
|
||||||
|
subBreak.disabled=true;
|
||||||
|
startButton.disabled= true;
|
||||||
|
clearInterval(timerID);
|
||||||
|
document.querySelector('.timer').style.borderColor="#BD3737";
|
||||||
|
document.querySelector('.timer').style.backgroundColor="#942222";
|
||||||
|
timeStart= new Date().getTime();
|
||||||
|
session.innerHTML="Work Session";
|
||||||
|
totalSeconds= sessionLength.innerHTML * 60;
|
||||||
|
timerID= setInterval(changeTime,990);
|
||||||
|
}
|
||||||
|
function startPomodoro(){
|
||||||
|
addSession.disabled=true;
|
||||||
|
subSession.disabled=true;
|
||||||
|
addBreak.disabled=true;
|
||||||
|
subBreak.disabled=true;
|
||||||
|
startButton.disabled= true;
|
||||||
|
document.querySelector('.timer').style.borderColor="#BD3737";
|
||||||
|
document.querySelector('.timer').style.backgroundColor="#942222";
|
||||||
|
timeStart= new Date().getTime();
|
||||||
|
timerID= setInterval(changeTime,990);
|
||||||
|
totalSeconds= sessionLength.innerHTML * 60;
|
||||||
|
}
|
||||||
|
let minutes;
|
||||||
|
let seconds;
|
||||||
|
let totalSeconds;
|
||||||
|
function changeTime(){
|
||||||
|
let timeNow= new Date().getTime();
|
||||||
|
let diff= Math.floor((timeNow-timeStart)/1000);
|
||||||
|
console.log(totalSeconds+" "+diff);
|
||||||
|
let temp= totalSeconds-diff;
|
||||||
|
if(temp==2){
|
||||||
|
playSound();
|
||||||
|
}
|
||||||
|
if(diff>=totalSeconds){
|
||||||
|
changeSessions();
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
minutes= Math.floor(temp/60);
|
||||||
|
seconds= Math.floor(temp-minutes*60);
|
||||||
|
if(seconds<10){seconds='0'+seconds;}
|
||||||
|
clock.innerHTML= minutes+':'+seconds;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function changeSessions(){
|
||||||
|
clearInterval(timerID);
|
||||||
|
timeStart= new Date().getTime();
|
||||||
|
if(session.innerHTML=="Work Session"){
|
||||||
|
session.innerHTML="Break Session";
|
||||||
|
clock.innerHTML=breakLength.innerHTML+':00';
|
||||||
|
totalSeconds= breakLength.innerHTML * 60;
|
||||||
|
document.querySelector('.timer').style.borderColor="#a31cd4";
|
||||||
|
document.querySelector('.timer').style.backgroundColor="#7b1cd4";
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
session.innerHTML="Work Session";
|
||||||
|
clock.innerHTML=sessionLength.innerHTML+':00';
|
||||||
|
totalSeconds= sessionLength.innerHTML * 60;
|
||||||
|
document.querySelector('.timer').style.borderColor="#BD3737";
|
||||||
|
document.querySelector('.timer').style.backgroundColor="#942222";
|
||||||
|
}
|
||||||
|
timerID=setInterval(changeTime,990);
|
||||||
|
}
|
||||||
|
|
||||||
|
function playSound() {
|
||||||
|
|
||||||
|
var mp3 = "http://soundbible.com/grab.php?id=1746&type=mp3";
|
||||||
|
var audio = new Audio(mp3);
|
||||||
|
audio.play();
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,56 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<link rel="stylesheet" href="style.css">
|
||||||
|
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||||
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||||
|
<link href="https://fonts.googleapis.com/css2?family=Bree+Serif&display=swap" rel="stylesheet">
|
||||||
|
<title>Pomodoro Timer</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="heading">
|
||||||
|
<h1>POMODORO TIMER</h1>
|
||||||
|
</div>
|
||||||
|
<div class="bdy">
|
||||||
|
<div class="main-ui">
|
||||||
|
<div class="session-break-length">
|
||||||
|
<div class="session-length">
|
||||||
|
<div class="session-break-h">Session Length</div>
|
||||||
|
<div class="session-break-b">
|
||||||
|
<button type="button" id="sessionLength">25</button>
|
||||||
|
</div>
|
||||||
|
<div class="change-buttons">
|
||||||
|
<button type="button" class="ssr" id="add-session">+</button>
|
||||||
|
<button type="button" class="ssr" id="sub-session" >-</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="break-length">
|
||||||
|
<div class="session-break-h">Break Length</div>
|
||||||
|
<div class="session-break-b">
|
||||||
|
<button type="button" id="breakLength">5</button>
|
||||||
|
</div>
|
||||||
|
<div class="change-buttons">
|
||||||
|
<button type="button" class="ssr" id="add-break">+</button>
|
||||||
|
<button type="button" class="ssr" id="sub-break">-</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="pomodoro">
|
||||||
|
<div class="timer">
|
||||||
|
<div class="session">Work Session</div>
|
||||||
|
<div class="clock">25:00</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="important-btns">
|
||||||
|
<button type="button" class="ssr start">START</button>
|
||||||
|
<button type="button" class="ssr stop">STOP</button>
|
||||||
|
<button type="button" class="ssr reset">RESET</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<script src="app.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -0,0 +1,131 @@
|
|||||||
|
*{
|
||||||
|
margin:0;
|
||||||
|
padding:0;
|
||||||
|
}
|
||||||
|
body{
|
||||||
|
background-color: rgb(242, 245, 237);
|
||||||
|
height: 100vh;
|
||||||
|
}
|
||||||
|
.heading{
|
||||||
|
height: 15vh;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items:flex-end;
|
||||||
|
font-family: 'Bree Serif', serif;
|
||||||
|
}
|
||||||
|
.bdy{
|
||||||
|
background-color: rgb(242, 245, 237);
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
min-height: 80vh;
|
||||||
|
transition: 0.1s all ease-out;
|
||||||
|
}
|
||||||
|
.main-ui{
|
||||||
|
height: 400px;
|
||||||
|
width: 400px;
|
||||||
|
background-color:#E1578A;
|
||||||
|
box-shadow: 2px 2px 10px #252525, -2px -2px 10px #252424
|
||||||
|
}
|
||||||
|
.session-break-length{
|
||||||
|
height: 30%;
|
||||||
|
font-family: 'Bree Serif', serif;
|
||||||
|
}
|
||||||
|
.pomodoro{
|
||||||
|
height: 50%;
|
||||||
|
}
|
||||||
|
/* Buttons top */
|
||||||
|
.session-break-length{
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
.session-length,.break-length{
|
||||||
|
width: 50%;
|
||||||
|
}
|
||||||
|
.session-break-h{
|
||||||
|
color: rgb(242, 245, 237);
|
||||||
|
font-size: 20px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
.session-break-b button{
|
||||||
|
width: 35px;
|
||||||
|
height: 35px;
|
||||||
|
border-radius: 50%;
|
||||||
|
border: none;
|
||||||
|
color:#A9333A;
|
||||||
|
font-weight: 700;
|
||||||
|
}
|
||||||
|
.session-break-b{
|
||||||
|
text-align: center;
|
||||||
|
padding-top: 3%;
|
||||||
|
padding-bottom: 3%;
|
||||||
|
}
|
||||||
|
.session-break-length .change-buttons{
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
/* The pomodora clock */
|
||||||
|
.pomodoro{
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
.timer{
|
||||||
|
width: 50%;
|
||||||
|
height: 100%;
|
||||||
|
border-radius: 50%;
|
||||||
|
border: 3px solid #A9333A;
|
||||||
|
/* border-color:rgb(5, 60, 243); */
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
color: rgb(242, 245, 237);
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
.session{
|
||||||
|
font-size: 17px;
|
||||||
|
padding-bottom: 2%;
|
||||||
|
}
|
||||||
|
.clock{
|
||||||
|
font-size: 40px;
|
||||||
|
font-weight: 500
|
||||||
|
}
|
||||||
|
/* Bottom controls */
|
||||||
|
.important-btns{
|
||||||
|
padding-top:5%;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-around;
|
||||||
|
padding-right: 10%;
|
||||||
|
padding-left: 10%;
|
||||||
|
}
|
||||||
|
.ssr{
|
||||||
|
padding: 8px 15px;
|
||||||
|
background-color: #A9333A;
|
||||||
|
border-radius: 10%;
|
||||||
|
border: 2px solid #BD3737;
|
||||||
|
color: rgb(242, 245, 237);
|
||||||
|
font-size: 16px;
|
||||||
|
}
|
||||||
|
.change-buttons .ssr{
|
||||||
|
padding: 4px 14px;
|
||||||
|
font-size: 18px;
|
||||||
|
}
|
||||||
|
.ssr:hover{
|
||||||
|
background-color: #BD3737;
|
||||||
|
font-weight:700;
|
||||||
|
}
|
||||||
|
@media screen and (max-width: 400px){
|
||||||
|
.main-ui{
|
||||||
|
height: 300px;
|
||||||
|
width:300px;
|
||||||
|
}
|
||||||
|
.session-break-h{
|
||||||
|
font-size: 16px;
|
||||||
|
}
|
||||||
|
.session-break-b button{
|
||||||
|
width: 25px;
|
||||||
|
height: 25px;
|
||||||
|
}
|
||||||
|
.ssr{
|
||||||
|
padding: 5px 10px;
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in new issue