Mithril Table Redraw

by ramnathv

HTML

<script src="//cdn.jsdelivr.net/mithril/0.2.2-rc.1/mithril.min.js"></script>
<div id="app"></div>

CoffeeScript

Table = view: (ctrl, props) ->
  m 'table.table.table-condensed',
    m 'thead',
      m 'tr',
        m 'th', 'Key'
        m 'th', 'Value'
    m 'tbody', props.data.map (v, i) ->
      m 'tr', 
        m 'td', i
        m 'td', v
        
App =
  controller: ->
    data = m.prop([])
    running = m.prop(false)
    runApp = (e) ->
      data([1..25].map (d) -> Math.random())
      if running() then m.redraw()
    stopApp = (e) -> running(false)
    window.setInterval(runApp, 2000)
    {data, running, runApp, stopApp}
  view: (ctrl, props) -> 
    m 'div',
      m 'button.btn-lg btn-success', 
        {onclick: ctrl.runApp}, 'Click to run'
      m 'button.btn-lg btn-danger', 
        {onclick: ctrl.stopApp}, 'Click to stop'
      m Table, {data: ctrl.data()}
  

m.mount(
  document.getElementById("app"),
  m App
)