Feedback using text

by OmShiv

HTML

<textarea id="output"></textarea><br>
<button id="nofeedback">No Feedback</button>
<button id="spinner">Spinner</button>
<button id="bar">With Bar</button>

CSS

#output {
    width: 500px;
    height: 100px;
    font-size: 10px;
}

CoffeeScript

out = $("#output")
fbTimer = null

stopFeedback = ->
    clearInterval(fbTimer) if fbTimer? 
    fbTimer = null
    
$('#nofeedback, #bar, #spinner').click ->
    stopFeedback()
    out.text "Please wait...\n"
    setTimeout (->
        out.text "Done!"
        stopFeedback()
    ), 10000

$('#bar').click ->
    prog = 0
    maxprog = 80
    fbTimer = setInterval ( ->
        prog = Math.min(prog + 1, maxprog)
        t = 1 - prog/maxprog
        t *= t
        t = Math.round (1 - t)*maxprog
        full = ("|" for i in [0...t]).join ""
        empty = (" " for i in [t...maxprog]).join ""
        out.text """
        Please wait...
        |#{full}#{empty}|
        """
    
    ), 115

$('#spinner').click ->
    spinFrames = ['\u2014', '\\', '|', '/']
    fbTimer = setInterval ( ->
        curframe = spinFrames.shift()
        out.text "Please wait... #{curframe} "
        spinFrames.push curframe
    ), 60