0votos

Pomodoro Kata en JavaScript

por josejuan usando Consola de firefox hace 6 años

Mi pomodoro viene con UI incluida, además, puedes ejecutarlo en la consola de tu explorador ¡si la página tiene jQuery! (eg. aquí mismo en Solveet). Por defecto genero tres tomates, pero si te gustan mucho ¡puedes crear los pomodoros que quieras! XD XD

Haz un programa capaz de ayudarte a llevar a cabo la técnica del pomodoro. Sólo tendrás un pomodoro (25 minutos) para hacerlo, ¿serás capaz?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
// copia y pega en la consola de tu explorador 
function Pomodoro(id) { 
    var self = this; 
    self.i = id; 
    self.c = $('<div id="' + self.i + '"><span id</div>').draggable(); 
    var reset = function() { 
        self.s = true; 
        self.ss = 0; 
        self.tt = 0; 
        self.dt = 25 * 60; 
    }; 
    reset(); 
    self.c.css({ 
        'position': 'fixed', 
        'cursor': 'move', 
        'left': '0px', 
        'top': '0px', 
        'background-image': 'url(http://cdn1.iconfinder.com/data/icons/fruits/512/Tomato.png)', 
        'background-repeat': 'no-repeat', 
        'min-width': '512px', 
        'min-height': '512px', 
        'padding-top': '200px', 
        'text-align': 'center', 
        'font-size': '30px', 
        'line-height': '35px', 
        'color': 'white' 
    }); 
    var dead = function() { 
        return self.tt >= self.dt; 
    }; 
    var ustops = function() { 
        self.stops.html('Stops: ' + self.ss); 
        self.run.html(self.s ? 'Start' : 'Stop'); 
    }; 
    $(document.body).append(self.c); 
    self.c. 
    append($('<span style="cursor: pointer; color: blue">Kill</span><br />').click(function(){ 
        window.clearInterval(self.th); 
        $('#' + self.i).remove(); 
    })). 
    append(self.it = $('<input type="text" value="25" style="width: 50px" />').keyup(function(){ 
        var m = parseInt($(this).val()); 
        if(!isNaN(m)) self.dt = 60 * m; 
    })). 
    append($('<br />')). 
    append(self.run = $('<span style="cursor: pointer; color: blue">Start</span>').click(function(){ 
        if(!dead() && (self.s = !self.s)) ++self.ss; 
        ustops(); 
    })). 
    append($('<span> / </span>')). 
    append($('<span style="cursor: pointer; color: blue">Reset</span><br />').click(function(){ 
        reset(); 
        self.it.val(~~(self.dt / 60)); 
        ustops(); 
    })). 
    append(self.stops = $('<span>Stops: 0</span>')). 
    append(self.time = $('<br /><span style="font-weight: bold">00:00:00</span><br />')); 
    self.th = window.setInterval(function() { 
        if(!dead() && !self.s) self.tt++; 
        var h = ~~(self.tt / 3600); 
        var m = ~~((self.tt % 3600) / 60); 
        var s = (self.tt % 3600) % 60; 
        self.time.html(dead() ? 'Stop working NOW!' : ((h<10?'0':'')+h+':'+(m<10?'0':'')+m+':'+(s<10?'0':'')+s)); 
    }, 1000); 
 
// crea los pomodoros que quieras 
new Pomodoro("pomodoro1"); 
new Pomodoro("pomodoro2"); 
new Pomodoro("pomodoro3"); 

Comenta la solución

Tienes que identificarte para poder publicar tu comentario.