Advertisement
Guest User

Untitled

a guest
Oct 11th, 2017
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ## index.html
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
  3. <html lang="en">
  4.     <head>
  5.         <title>
  6.             ListList
  7.         </title>
  8.         <script src="/batman/coffee-script.js" type="text/javascript"></script>
  9.         <script src="/batman/es5-shim.js" type="text/javascript"></script>
  10.         <script src="/batman/dist/batman.js" type="text/javascript"></script>
  11.         <script src="list_list.js" type="text/javascript"></script>
  12.         <style type="text/css">
  13. * {
  14.         font-family: Helvetica, Arial, sans-serif;
  15.         }
  16.  
  17.         </style>
  18.     </head>
  19.     <body>
  20.         <div id="container">
  21.             <form data-formfor-task="controllers.tasks.emptyTask" data-event-submit="controllers.tasks.create">
  22.                 <input placeholder="Task Name" data-bind="task.title">
  23.                 <input placeholder="Task Description" data-bind="task.description">
  24.                 <select data-bind="task.status">
  25.                     <option selected value="created">
  26.                         created
  27.                     </option>
  28.                     <option value="in_progress">
  29.                         in progress
  30.                     </option>
  31.                     <option value="completed">
  32.                         completed
  33.                     </option>
  34.                     <option value="cancelled">
  35.                         cancelled
  36.                     </option>
  37.                 </select>
  38.                 <input type="submit" value="Submit" />
  39.             </form>
  40.             <ul id="tasks">
  41.                 <li data-foreach-task="Task.all" data-mixin="animation">
  42.                     <p data-bind="task.title"></p>
  43.                     <p data-bind="task.description"></p>
  44.                     <p data-bind="task.status"></p>
  45.                 </li>
  46.                 <li><span data-bind="Task.all.length"></span> <span data-bind="'item' | pluralize Task.all.length"></span></li>
  47.             </ul>
  48.         </div>
  49.         <script type="text/javascript">
  50.             ListList.run();
  51.         </script>
  52.     </body>
  53. </html>
  54.  
  55. ## listlist.coffee
  56.  
  57. class ListList extends Batman.App  
  58.     # Make ListList available in the global namespace so it can be used
  59.     # as a namespace and bound to in views.
  60.     @global yes
  61.     @root 'tasks#index'
  62.     @controller 'tasks'
  63.     @model 'task'
  64.  
  65. ## app_controller.coffee
  66.  
  67. class ListList.TasksController extends Batman.Controller
  68.     emptyTask: null
  69.    
  70.     index: ->
  71.         @set 'emptyTask', new Task
  72.        
  73.         Task.load (error, tasks) ->
  74.             throw error if error
  75.             if not tasks.length
  76.                 callback = (error) -> throw error if error
  77.                 new Task(title: 'First Task', description: 'The first task', status: 'created').save(callback)
  78.                 new Task(title: 'Second Task', description: 'The second task', status: 'created').save(callback)
  79.                 new Task(title: 'Third Task', description: 'The third task', status: 'created').save(callback)
  80.                
  81.         return false
  82.            
  83.     create: =>
  84.         @emptyTask.save (error, record) =>
  85.             throw error if error
  86.            
  87.             @set 'emptyTask', new Task
  88.                
  89.         return false
  90.  
  91. ## list_list_models.coffee
  92.  
  93. class Task extends Batman.Model
  94.     @global yes
  95.     @persist Batman.LocalStorage
  96.     @encode 'title', 'description', 'status', 'creator', 'id'
  97.     @encode 'created_at', 'updated_at', 'completed at',
  98.         encode: (time) -> time.toISOString()
  99.         decode: (timeString) -> Date.parse(timeString)
  100.     @encode 'tags',
  101.         encode: (tagSet) -> tagSet.toArray().join(', ')
  102.         decode: (tagString) -> new Batman.Set(tagString.split(', ')...)
  103.     title: 'Task Title'
  104.     description: 'Task Description'
  105.     status: 'Created'
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement