/practicals/modular-todo-app/js/collections/todos.js
JavaScript | 40 lines | 25 code | 8 blank | 7 comment | 1 complexity | f996754a069320fd1031b7883987443e MD5 | raw file
- define([
- 'underscore',
- 'backbone',
- 'libs/backbone/localstorage',
- 'models/todo'
- ], function(_, Backbone, Store, Todo){
-
- var TodosCollection = Backbone.Collection.extend({
- // Reference to this collection's model.
- model: Todo,
- // Save all of the todo items under the `"todos"` namespace.
- localStorage: new Store("todos"),
- // Filter down the list of all todo items that are finished.
- done: function() {
- return this.filter(function(todo){ return todo.get('done'); });
- },
- // Filter down the list to only todo items that are still not finished.
- remaining: function() {
- return this.without.apply(this, this.done());
- },
- // We keep the Todos in sequential order, despite being saved by unordered
- // GUID in the database. This generates the next order number for new items.
- nextOrder: function() {
- if (!this.length) return 1;
- return this.last().get('order') + 1;
- },
- // Todos are sorted by their original insertion order.
- comparator: function(todo) {
- return todo.get('order');
- }
- });
- return new TodosCollection;
- });