| OLD | NEW |
| 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 library tracker.models; | 5 library tracker.models; |
| 6 | 6 |
| 7 import 'package:polymer/polymer.dart'; | 7 import 'package:polymer/polymer.dart'; |
| 8 | 8 |
| 9 final appModel = new Tracker(); | 9 final appModel = new Tracker(); |
| 10 | 10 |
| 11 /** | 11 /** |
| 12 * A model for the tracker app. | 12 * A model for the tracker app. |
| 13 * | 13 * |
| 14 * [tasks] contains all tasks used in this app. | 14 * [tasks] contains all tasks used in this app. |
| 15 */ | 15 */ |
| 16 class Tracker extends ObservableBase { | 16 class Tracker extends Observable { |
| 17 @observable List<Task> tasks; | 17 @observable List<Task> tasks; |
| 18 } | 18 } |
| 19 | 19 |
| 20 | 20 |
| 21 /** | 21 /** |
| 22 * A model for creating a single task. | 22 * A model for creating a single task. |
| 23 * | 23 * |
| 24 * A task can be saved or unsaved. Only a saved task has a taskID. | 24 * A task can be saved or unsaved. Only a saved task has a taskID. |
| 25 * | 25 * |
| 26 * This model defines validation rules for a Task. It is the responsibility of | 26 * This model defines validation rules for a Task. It is the responsibility of |
| 27 * the view layer to validate a task before assigning a taskID to the task. A | 27 * the view layer to validate a task before assigning a taskID to the task. A |
| 28 * task with a taskID is considered saved. | 28 * task with a taskID is considered saved. |
| 29 */ | 29 */ |
| 30 class Task extends ObservableBase { | 30 class Task extends Observable { |
| 31 static bool TITLE_REQUIRED = true; | 31 static bool TITLE_REQUIRED = true; |
| 32 static const MAX_TITLE_LENGTH = 40; | 32 static const MAX_TITLE_LENGTH = 40; |
| 33 static const MAX_DESCRIPTION_LENGTH = 200; | 33 static const MAX_DESCRIPTION_LENGTH = 200; |
| 34 static const CURRENT = 'current'; | 34 static const CURRENT = 'current'; |
| 35 static const PENDING = 'pending'; | 35 static const PENDING = 'pending'; |
| 36 static const COMPLETED = 'completed'; | 36 static const COMPLETED = 'completed'; |
| 37 | 37 |
| 38 @observable int taskID; | 38 @observable int taskID; |
| 39 @observable String title = ''; | 39 @observable String title = ''; |
| 40 @observable String description = ''; | 40 @observable String description = ''; |
| 41 @observable String status = PENDING; | 41 @observable String status = PENDING; |
| 42 @observable DateTime createdAt; | 42 @observable DateTime createdAt; |
| 43 @observable DateTime updatedAt; | 43 @observable DateTime updatedAt; |
| 44 | 44 |
| 45 Task.unsaved(); | 45 Task.unsaved(); |
| 46 | 46 |
| 47 Task(this.title, this.description, this.status); | 47 Task(this.title, this.description, this.status); |
| 48 | 48 |
| 49 bool get isValid { | 49 bool get isValid { |
| 50 var minTitleLength = TITLE_REQUIRED ? 1 : 0; | 50 var minTitleLength = TITLE_REQUIRED ? 1 : 0; |
| 51 return (title.length >= minTitleLength && | 51 return (title.length >= minTitleLength && |
| 52 title.length < MAX_TITLE_LENGTH && | 52 title.length < MAX_TITLE_LENGTH && |
| 53 description.length < MAX_DESCRIPTION_LENGTH); | 53 description.length < MAX_DESCRIPTION_LENGTH); |
| 54 } | 54 } |
| 55 | 55 |
| 56 bool get saved => taskID != null; | 56 bool get saved => taskID != null; |
| 57 } | 57 } |
| 58 | 58 |
| OLD | NEW |