2016-06-10 10:21:53 -07:00
|
|
|
import {bootstrap} from '@angular/platform-browser-dynamic';
|
2016-04-28 17:50:03 -07:00
|
|
|
import {Component} from '@angular/core';
|
|
|
|
import {NgFor} from '@angular/common';
|
2016-05-01 22:54:19 -07:00
|
|
|
import {Store, Todo, TodoFactory} from './app/TodoStore';
|
2015-05-22 14:39:00 +02:00
|
|
|
|
2016-03-08 13:36:48 -08:00
|
|
|
@Component({
|
|
|
|
selector: 'todo-app',
|
|
|
|
viewProviders: [Store, TodoFactory],
|
|
|
|
templateUrl: 'todo.html',
|
|
|
|
directives: [NgFor]
|
|
|
|
})
|
2015-05-22 14:39:00 +02:00
|
|
|
class TodoApp {
|
|
|
|
todoEdit: Todo = null;
|
|
|
|
|
2016-02-19 11:49:31 -08:00
|
|
|
constructor(public todoStore: Store<Todo>, public factory: TodoFactory) {}
|
2015-05-22 14:39:00 +02:00
|
|
|
|
2016-06-08 15:45:15 -07:00
|
|
|
enterTodo(inputElement: any /** TODO #9100 */): void {
|
2015-05-22 14:39:00 +02:00
|
|
|
this.addTodo(inputElement.value);
|
|
|
|
inputElement.value = '';
|
|
|
|
}
|
|
|
|
|
|
|
|
editTodo(todo: Todo): void { this.todoEdit = todo; }
|
|
|
|
|
2016-06-08 15:45:15 -07:00
|
|
|
doneEditing($event: any /** TODO #9100 */, todo: Todo): void {
|
2015-05-22 14:39:00 +02:00
|
|
|
var which = $event.which;
|
|
|
|
var target = $event.target;
|
|
|
|
if (which === 13) {
|
|
|
|
todo.title = target.value;
|
|
|
|
this.todoEdit = null;
|
|
|
|
} else if (which === 27) {
|
|
|
|
this.todoEdit = null;
|
|
|
|
target.value = todo.title;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
addTodo(newTitle: string): void { this.todoStore.add(this.factory.create(newTitle, false)); }
|
|
|
|
|
|
|
|
completeMe(todo: Todo): void { todo.completed = !todo.completed; }
|
|
|
|
|
|
|
|
deleteMe(todo: Todo): void { this.todoStore.remove(todo); }
|
|
|
|
|
2016-06-08 15:45:15 -07:00
|
|
|
toggleAll($event: any /** TODO #9100 */): void {
|
2015-05-22 14:39:00 +02:00
|
|
|
var isComplete = $event.target.checked;
|
|
|
|
this.todoStore.list.forEach((todo: Todo) => { todo.completed = isComplete; });
|
|
|
|
}
|
|
|
|
|
2015-08-06 09:52:33 -07:00
|
|
|
clearCompleted(): void { this.todoStore.removeBy((todo: Todo) => todo.completed); }
|
2015-05-22 14:39:00 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
export function main() {
|
|
|
|
bootstrap(TodoApp);
|
|
|
|
}
|