Skip to content

Instantly share code, notes, and snippets.

@rbrcurtis
Created March 6, 2012 19:41
Show Gist options
  • Select an option

  • Save rbrcurtis/1988574 to your computer and use it in GitHub Desktop.

Select an option

Save rbrcurtis/1988574 to your computer and use it in GitHub Desktop.

Revisions

  1. rbrcurtis created this gist Mar 6, 2012.
    23 changes: 23 additions & 0 deletions index.coffee
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,23 @@
    require('lib/setup')

    Spine = require 'spine'
    Stage = require 'lib/stage'
    Router = require 'controllers/router'

    class App extends Stage.Global


    constructor: ->
    super

    # $('body').bind 'click', (e) -> e.preventDefault()
    # @el.bind 'touchmove', (e) -> e.preventDefault()

    Spine.Route.setup()

    @router = new Router()
    @router.active()



    module.exports = App
    56 changes: 56 additions & 0 deletions router.coffee
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,56 @@
    Spine = require 'spine'
    Menu = require 'controllers/menu'
    Scanner = require 'controllers/scanner'
    Input = require 'controllers/input'
    Database = require 'controllers/database'
    Record = require 'models/record'

    class Router extends Spine.Controller

    constructor: ->
    super

    @log "router created"

    @initControllers()
    @setupRoutes()
    @fetchModels()


    active: ->
    transition =>
    @log "route is '#{@getRoute()}'"
    if @getRoute() is '' or @getRoute() is '/' then @navigate '/menu'
    else Spine.Route.matchRoute @getRoute()

    initControllers: ->
    @menu = new Menu
    @scanner = new Scanner
    @input = new Input
    @database = new Database

    fetchModels: ->
    Record.fetch()

    changePage: (controller, params) ->
    timeout = if controller is @menu then 500 else 250
    transition =>

    @log "navigating to #{controller['className']}"
    page = $("div.panel.#{controller['className']}")
    controller.active()
    page.trigger('create')
    $.mobile?.changePage(page)

    , timeout

    setupRoutes: ->
    @routes
    '/menu': (params) -> @changePage @menu, params
    '/scan': (params) -> @changePage @scanner, params
    '/show/:id': (params) -> @changePage @input, params
    '/input': (params) -> @changePage @input, params
    '/db': (params) -> @changePage @database, params


    module.exports = Router