UKBouldering.com

self adjusting interval app/website (Read 7043 times)

ghisino

Offline
  • ****
  • forum abuser
  • Posts: 664
  • Karma: +36/-0
self adjusting interval app/website
December 16, 2017, 12:44:31 pm
hi, i wonder if anyone knows an app (for windows phone) or website that will do the following:

1) when you first press the "start/stop" button it works as a regular stopwatch, to record "work" interval

2) when you hit the start/stop button the second time, it automatically launches a "rest" interval equal to the work time (say you worked 43.4 secs: it will make you rest 43.4 secs)

3) when the rest time is elapsed, a new work interval is automatically launched. You need to press the stop/start button to end it.


csl

Offline
  • ****
  • junky
  • Posts: 786
  • Karma: +93/-2
#1 Re: self adjusting interval app/website
December 21, 2017, 10:28:08 am
I actually built exactly this for doing foot on campus workouts - I just cleaned it up and put online here https://interval.conorcussell.co.uk

Doesn't make any noise at the moment but was planning on fixing that at some point

highrepute

Offline
  • *****
  • forum hero
  • Posts: 1288
  • Karma: +109/-0
  • Blah
#2 Re: self adjusting interval app/website
December 21, 2017, 11:33:13 am
nice

sdm

Offline
  • ****
  • forum abuser
  • Posts: 622
  • Karma: +25/-1
#3 Re: self adjusting interval app/website
December 21, 2017, 12:34:54 pm
 Thanks for that csl, wadded.

nai

Offline
  • *****
  • forum hero
  • Posts: 4008
  • Karma: +206/-1
  • In my dreams
#4 Re: self adjusting interval app/website
December 21, 2017, 01:48:57 pm
Very good, so simple.  If you could add a warning countdown into the work phase that would be be perfect

kelvin

Offline
  • *****
  • forum hero
  • Posts: 1293
  • Karma: +60/-1
#5 Re: self adjusting interval app/website
December 21, 2017, 01:52:07 pm
Duly wadded

thekettle

Offline
  • **
  • menacing presence
  • Posts: 203
  • Karma: +27/-0
    • johnkettle.com
#6 Re: self adjusting interval app/website
December 29, 2017, 03:31:14 pm
Also wadded, and saved offline. This is an excellent tool for profiling using foot-on-campusing. I'd pay a couple of quid for an app version of this, as would many of the folk I profile as it'll make reprofiling easier.

nik at work

Offline
  • *****
  • forum hero
  • Posts: 3586
  • Karma: +312/-2
#7 Re: self adjusting interval app/website
January 28, 2018, 11:08:45 pm
Just to revisit this, I have a cobbled together a similar thing to csl (I need to brush up on my practicaly non-existant javascript skills for an seperate project so thougth I'd have a play).

Anyway it is a very similar html/css/javascript web based timer to the one above with a couple of extras..

1) You can change the size of the font of the timer (oh yeah, big WOW factor time) (+ and - buttons to the right of reset button)

2) You can add a run in countdown time, i.e. you set it going and it gives you say 10 seconds (or whatever you set it at, up to 59sec) to get in position and start the work/rest cycle. (+ and - buttons to left of reset button)

3) Perhaps the most useful feature is that it records the time of each rep, the number of reps and the number of sets of reps (i.e. the number of times you click reset and start again) in a handy table which is created on the fly at the bottom of the page (which can be cut and pasted into a spreadsheet for those that are thus inclined).

I have no way of hosting it anywhere and can't be arsed to trawl through various freewebhostingbestintheworldhonestguv options. But if anybody is interested in trying it I can email it over (it's just a single HTML file so easy to view offline).

Be warned I am not a scripting ninja, I'm a lowly hammer wielding workshop monkey, so the code is probably vomit inducing if you look at it in any detail.

In fact here it is, if you want to try the page cut and paste the below into your favourite text editor and save as a file with the extension .html then open in the javascript supporting browser of your choice (I have tried it in firefox and chrome on windows 10 and it works, beyond that who knows...) Good luck...:
NSFW  :
<!DOCTYPE html>
<html>
<style>

body
{

color: #DAD6D6;

font-size: 40pt;

background: #171A21;

text-align: center;

}



#start
{
    width: 90%;
 
margin: 5px auto;

text-align: center;

font-size: 40pt;

color: #DAD6D6;

background: #564E58;

border:solid 8px #35492C;

border-radius:5px;

padding:5px 40px 5px;

letter-spacing: 2px;

cursor:pointer;

}

#run_in_up
{
width: 10%;

margin: 5px auto;

text-align: center;

font-size: 40pt;

color: #DAD6D6;

background: #564E58;

border:solid 8px #3E383F;

border-radius:5px;

padding:5px 40px 5px;

letter-spacing: 2px;

cursor:pointer;

}

#run_in_down
{
width: 10%;

margin: 5px auto;

text-align: center;

font-size: 40pt;

color: #DAD6D6;

background: #564E58;

border:solid 8px #3E383F;

border-radius:5px;

padding:5px 40px 5px;

letter-spacing: 2px;

cursor:pointer;

}


#clear
{
width: 50%;

margin: 5px auto;

text-align: center;

font-size: 40pt;

color: #DAD6D6;

background: #564E58;

border:solid 8px #3E383F;

border-radius:5px;

padding:5px 40px 5px;

letter-spacing: 2px;

cursor:pointer;

}

#font_up
{
width: 10%;

margin: 5px auto;

text-align: center;

font-size: 40pt;

color: #DAD6D6;

background: #564E58;

border:solid 8px #3E383F;

border-radius:5px;

padding:5px 40px 5px;

letter-spacing: 2px;

cursor:pointer;

}

#font_down
{
width: 10%;

margin: 5px auto;

text-align: center;

font-size: 40pt;

color: #DAD6D6;

background: #564E58;

border:solid 8px #3E383F;

border-radius:5px;

padding:5px 40px 5px;

letter-spacing: 2px;

cursor:pointer;

}

table{
padding: 40px;   

background: #564E58;

margin:5px auto;

border:solid 8px #3E383F;

border-radius: 5px;

width: 90%;

text-align: center;

align-content: center;

font-family: Arial, Helvetica, sans-serif;
}




</style>
<body>

<button id="start">00:00:00:0</button>
<br>
<button id="run_in_up">+</button>
<button id="run_in_down">-</button>
<button id="clear">RESET</button>
<button id="font_up">+</button>
<button id="font_down">-</button>

<table id="sessionData">
    <tr>
        <td>
            Set
        </td>
        <td>
            Rep
        </td>
        <td>
            Interval
        </td>
    </tr>

</table>

<script language="JavaScript">
var start = document.getElementById('start'),
 
clear = document.getElementById('clear'),

runin_up = document.getElementById('run_in_up'),

runin_down = document.getElementById('run_in_down'),

fontsize_up = document.getElementById('font_up'),

fontsize_down = document.getElementById('font_down'),

currentfont_size = 40,

clockheight = window.innerHeight,

running = false,

runningDown = false,

stayGrey = false,

timeData = "00:00:00:0",

set_number = 1,

rep_number = 1,

tenths = 0, seconds = 0, minutes = 0, hours = 0,
 
t;

start.style.height = (clockheight * 7.5)/10+"px";

clear.style.height = (clockheight * 2)/10+"px";



function add() {

tenths++;
if (tenths >= 10){
tenths = 0;
seconds++;

if (seconds >= 60) {

seconds = 0;

minutes++;

if (minutes >= 60) {

minutes = 0;

hours++;
}

}

}
timeData = (hours ? (hours > 9 ? hours : "0" + hours) : "00") + ":"
 + (minutes ? (minutes > 9 ? minutes : "0" + minutes) : "00") + ":"
 + (seconds > 9 ? seconds : "0" + seconds) + ":" + (tenths);
start.textContent = timeData;


}

function downcount() {
   
tenths--;
if (tenths < 0){
tenths = 9;
seconds--;

if (seconds < 0) {

seconds = 59;

minutes--;

if (minutes < 0) {

minutes = 59;

hours--;
}

}

}
timeData = (hours ? (hours > 9 ? hours : "0" + hours) : "00") + ":"
 + (minutes ? (minutes > 9 ? minutes : "0" + minutes) : "00") + ":"
 + (seconds > 9 ? seconds : "0" + seconds) + ":" + (tenths);
 start.textContent = timeData;

if (tenths == 0 && seconds == 0 && minutes == 0 && hours == 0){
    clearInterval(t);
    running = false;
    timer();
}

}

function timer() {
if (running == false){
    running = true;
    runningDown = false;
    stayGrey = false;
    start.style.backgroundColor = "#48633B";
    t = setInterval(add, 100);
   
}
else{
    if(runningDown == false){
        runningDown = true;
       
        addTableData();
     
        clearInterval(t);
   
        if (stayGrey == false){
            start.style.backgroundColor = "#721329";
        }
    t = setInterval(downcount, 100);
    }
   
}
}

function addTableData() {
    if (timeData != '00:00:00:0'){
    var table = document.getElementById("sessionData");

    //create new row
    var row = table.insertRow(-1);

    //create new cells in row
    var new_set = row.insertCell(0);
    var new_rep = row.insertCell(1);
    var new_interval = row.insertCell(2);
   
    //populate cells
    new_set.innerHTML = set_number;
    new_rep.innerHTML = rep_number;
    new_interval.innerHTML = timeData;

    rep_number++;
}
}

/*run-in up button*/
runin_up.onclick = increaseRunIn;

function increaseRunIn(){
    if(seconds < 59){
    seconds++;
    running = true;
    stayGrey = true;
    start.textContent = (hours ? (hours > 9 ? hours : "0" + hours) : "00") + ":"
 + (minutes ? (minutes > 9 ? minutes : "0" + minutes) : "00") + ":"
 + (seconds > 9 ? seconds : "0" + seconds) + ":" + (tenths);
}
}

/*run-in down button*/
runin_down.onclick = decreaseRunIn;

function decreaseRunIn(){
    if(seconds > 0){
    seconds--;
    if (seconds == 0)    {
running = false;
stayGray = false;
    }
    start.textContent = (hours ? (hours > 9 ? hours : "0" + hours) : "00") + ":"
 + (minutes ? (minutes > 9 ? minutes : "0" + minutes) : "00") + ":"
 + (seconds > 9 ? seconds : "0" + seconds) + ":" + (tenths);
}
}

/*font-size up button*/
fontsize_up.onclick = sizeUp;

function sizeUp(){
    currentfont_size++;
start.style.fontSize = currentfont_size + "pt";
}

/*font-size down button*/
fontsize_down.onclick = sizeDown;

function sizeDown(){
    currentfont_size--;
start.style.fontSize = currentfont_size + "pt";
}



/* Start button */

start.onclick = timer;





/* Clear button */

clear.onclick = function() {
clearInterval(t);
//zero the clock, clear running booleans and zero the time variables
start.textContent = "00:00:00:0";
start.style.backgroundColor = "#564E58";
running = false;
runningDown = false;
tenths = 0;
seconds = 0;
minutes = 0;
hours = 0;
timeData = '00:00:00:0';

//increase set number and reset rep number
rep_number = 1;
set_number++;



}
</script>
</body>
</html>

It's probably shit but someone might like it.

Paul B

Offline
  • *****
  • forum hero
  • Posts: 9626
  • Karma: +264/-4
#8 Re: self adjusting interval app/website
January 29, 2018, 01:28:53 am
Can you no longer host from a public Google drive folder?

nik at work

Offline
  • *****
  • forum hero
  • Posts: 3586
  • Karma: +312/-2
#9 Re: self adjusting interval app/website
January 29, 2018, 07:18:18 am
No idea.

Google drive??

Haven't done anything internetty (beyond browsing) for 15 years. I'm a full on luddite :)

jimmyjjohnson

Offline
  • *
  • newbie
  • Posts: 2
  • Karma: +0/-0
#10 Re: self adjusting interval app/website
January 29, 2018, 08:37:53 am
I started to make this once but forgot about it. https://timer.besttabata.com/ My site certificate has expired though so ignore the scary message from chrome...

nik at work

Offline
  • *****
  • forum hero
  • Posts: 3586
  • Karma: +312/-2
#11 Re: self adjusting interval app/website
January 29, 2018, 10:03:17 am
Had a quick look at Google Drive (cheers Paul :) ) and have hosted it there. However it's embedded within a google drive standard page with a header image thing which is probably quite annoying. So if anybody thinks it would be useful I'd suggest saving the code locally as suggested above to get a less cluttered screen.

https://sites.google.com/view/keeg/timer

remus

Offline
  • *****
  • forum hero
  • Posts: 2857
  • Karma: +146/-1
#12 Re: self adjusting interval app/website
January 29, 2018, 12:35:58 pm
I've put it up on the lattice training domain so you can skip out the headers http://latticetraining.com/timer.html

nik at work

Offline
  • *****
  • forum hero
  • Posts: 3586
  • Karma: +312/-2
#13 Re: self adjusting interval app/website
January 29, 2018, 01:01:26 pm
 :2thumbsup:
Nice one.

tim palmer

Offline
  • ****
  • forum abuser
  • Posts: 735
  • Karma: +34/-0
#14 Re: self adjusting interval app/website
January 29, 2018, 01:39:26 pm
Custom interval timer on Google play is a good fully customisable app for your phone, although not self adjusting

nik at work

Offline
  • *****
  • forum hero
  • Posts: 3586
  • Karma: +312/-2
If anybody is still interested in this I decided to look into building my javascript webpage as an android app.

A handful of frustrating evenings on a steep learning curve and I have the thing up and running. It's a simple two "page" app.

Page 1 - the mirror timer (rest period = work period just done) repeat until bored. With the same intro downcount option as in the webpage.

Page 2 - Your set history. Currently this is just a list of sets of reps starting with the most recent set at the top down to the oldest at the bottom. It's not pretty at this stage but the app does save and show all your data. At this point there is no way to edit the data (i.e. delete individual sets of reps) and the data formating is just well relatively unformatted... No whizzy graphics.

Anyway if anybody is interested in using (testing) it then I believe I can email you the APK as an attachement (the app instalation file wotnot) and if you pick it up on your phone apparently you can install it from there (possibly involving some sort of clicking on an "I trust this source" type of box??). As is probably crystal clear I am not an app developer so I'm kind of working this out as I go...

Anyway if you have an android phone and you'd like to try/test the app PM me an email address and I'll send it over.

Note: I am in Font for a week from tomorrow without laptop. I'll see if I can send the attachment from my phone but if not it might be a week or so before I can send the app.

FYI I have had it running on my phone (at various different stages of build) for the last few days and it hasn't killed it or anything...

nik at work

Offline
  • *****
  • forum hero
  • Posts: 3586
  • Karma: +312/-2
After having played around with it for a bit, and getting a bit of feedback from some UKB based experiment ponies last night I decided fuck it and stuck the timer app on the play store.
Here it is:

https://play.google.com/store/apps/details?id=uk.co.keeg.freetimer

If you're interested in a simple timer app that can do the work=rest type stuff detailed above, that will keep a record of your training sets (and allow you to export them) then it's probably/possibly worth a look. Mind you the weather is quite nice right now so you could just go climbing....

If anyone does use it, feel free to comment/criticise/mock/suggest additional features that would be useful :)

yetix

Offline
  • ****
  • forum abuser
  • Posts: 610
  • Karma: +33/-0
Downloaded and had a play. I like it.

One thing which could be useful for the future could be the ability to repeat previously used workouts (I'm lazy and this means I can click less when I already want to avoid fingerboarding) just an idea if you're already going to store this data in some regard I guess.

nik at work

Offline
  • *****
  • forum hero
  • Posts: 3586
  • Karma: +312/-2
Thanks  ;D

Re: repeating workouts. Good suggestion, I'll look into a way of saving individual set settings, and possibly building up groups of set settings into a full workout session that can also be saved and re-used.

Duma

Offline
  • *****
  • forum hero
  • Posts: 5751
  • Karma: +226/-4
I may be missing something, but would be nice if you could save settings? Intro time, sound preferences etc seem to go back to default every time I shut it.

nik at work

Offline
  • *****
  • forum hero
  • Posts: 3586
  • Karma: +312/-2
If you shut it shut it (i.e. fully shut it as in close the app down) then when it starts up again it will do so with the default setting. However if you leave it running (running in the sense that the app is open, not running as in the timer is running) in the background it should keep the settings unchanged afaik??
In much the same way as your web-browser will 'open' at the last page you visited if you leave it running in the background but if you close it down and restart it then it will open at a homepage.

Or does the timer reset to defaults if you just leave the app then come back to it? If so that's weird...

Anyway I'll see about adding the function to have saved pre-set settings over the weekend.  That should solve this problem (albeit in an indirect fashion)

Duma

Offline
  • *****
  • forum hero
  • Posts: 5751
  • Karma: +226/-4
It's just when I shut it shut it. A nice to have rather than a complaint tbh. Though it'd make sense to me to have an intro time set of, say, 10secs set as the default

nik at work

Offline
  • *****
  • forum hero
  • Posts: 3586
  • Karma: +312/-2
We'll I've had a look at adding in the ability to save some preset sets of settings that can be "built" and saved on the settings page and then accessed from the timer page without having to go into settings (and re-enter the same settings again...) to use them.

And it is underway, but a combination of a surprisingly hectic weekend, a forgotten fun lovin criminals gig and the required coding being a little bit more involved than anticipated (as it always is when you're knowledge base is close to zero) means than while the update is close it's not quite ready yet...

Feel free to throw other suggestions into the mix.

And thank-you to those 23 people who have installed the app (all UK-based apart from a single resident of Italy, Nibs I pressume??) and an extra thank-you to those 4 who left a (five-star :dance1: :-[) review.

Nibile

Offline
  • *****
  • forum hero
  • Posts: 7991
  • Karma: +743/-4
  • Part Animal Part Machine
    • TOTOLORE
 :guilty:
It's cool!  :bow:

nik at work

Offline
  • *****
  • forum hero
  • Posts: 3586
  • Karma: +312/-2
 :) I've just rolled out version 1.1 of the timer app, now with added pre-sets.

It won't have gone live yet, can take a few hours to be up and running I think? Once it is live I'll post up here (or you might get update reminders direct to your phone???  :shrug: if you do can you tell me please so I know for future reference).

Anyway as ever let me know if it works/looks ok, and if you spot any bugs/tweaks/frustrations. As ever suggestions for further development will be duly noted and acted on as time and ability allow...

Cheers :)

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal