Skip to content

Commit

Permalink
Merge pull request tastejs#536 from stephenplusplus/batman
Browse files Browse the repository at this point in the history
batman updated to use bower. about time, batman.
  • Loading branch information
sindresorhus committed Apr 17, 2013
2 parents 13ba439 + 03ce061 commit 0578cc1
Show file tree
Hide file tree
Showing 13 changed files with 14,008 additions and 297 deletions.
86 changes: 86 additions & 0 deletions labs/architecture-examples/batman/app.coffee
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
class Alfred extends Batman.App
@root 'todos#all'
@route '/completed', 'todos#completed'
@route '/active', 'todos#active'

class Alfred.TodosController extends Batman.Controller
constructor: ->
super
@set('newTodo', new Alfred.Todo(completed: false))

routingKey: 'todos'
currentTodoSet: 'all'

@accessor 'currentTodos', -> Alfred.Todo.get(@get('currentTodoSet'))

all: ->
@set('currentTodoSet', 'all')

completed: ->
@set 'currentTodoSet', 'completed'
@render(source: 'todos/all')

active: ->
@set 'currentTodoSet', 'active'
@render(source: 'todos/all')

createTodo: ->
@get('newTodo').save (err, todo) =>
if err
throw err unless err instanceof Batman.ErrorsSet
else
@set 'newTodo', new Alfred.Todo(completed: false, title: "")

todoDoneChanged: (node, event, context) ->
todo = context.get('todo')
todo.save (err) ->
throw err if err && !err instanceof Batman.ErrorsSet

destroyTodo: (node, event, context) ->
todo = context.get('todo')
todo.destroy (err) -> throw err if err

toggleAll: (node, context) ->
Alfred.Todo.get('all').forEach (todo) ->
todo.set('completed', !!node.checked)
todo.save (err) ->
throw err if err && !err instanceof Batman.ErrorsSet

clearCompleted: ->
Alfred.Todo.get('completed').forEach (todo) ->
todo.destroy (err) -> throw err if err

toggleEditing: (node, event, context) ->
todo = context.get('todo')
editing = todo.set('editing', !todo.get('editing'))
if editing
input = document.getElementById("todo-input-#{todo.get('id')}")
input.focus()
else
if todo.get('title')?.length > 0
todo.save (err, todo) ->
throw err if err && !err instanceof Batman.ErrorsSet
else
todo.destroy (err, todo) ->
throw err if err

disableEditingUponSubmit: (node, event, context) ->
node.blur() if Batman.DOM.events.isEnter(event)

class Alfred.Todo extends Batman.Model
@encode 'title', 'completed'
@persist Batman.LocalStorage
@validate 'title', presence: true
@storageKey: 'todos-batman'

@classAccessor 'active', ->
@get('all').filter (todo) -> !todo.get('completed')

@classAccessor 'completed', ->
@get('all').filter (todo) -> todo.get('completed')

@wrapAccessor 'title', (core) ->
set: (key, value) -> core.set.call(@, key, value?.trim())

window.Alfred = Alfred
Alfred.run()
202 changes: 202 additions & 0 deletions labs/architecture-examples/batman/app.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 8 additions & 0 deletions labs/architecture-examples/batman/component.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"name": "todomvc-batman",
"version": "0.0.0",
"dependencies": {
"todomvc-common": "~0.1.4",
"batman": "~0.14.1"
}
}
Loading

0 comments on commit 0578cc1

Please sign in to comment.