refactor(playground): make playground great again

This commit is contained in:
Joao Dias
2016-10-23 16:21:18 +02:00
committed by Victor Berchet
parent 69f87ca075
commit 3d9d839c6c
28 changed files with 212 additions and 382 deletions

View File

@ -7,7 +7,6 @@
*/
import {Injectable} from '@angular/core';
import {ListWrapper, Predicate} from '@angular/core/src/facade/collection';
// base model for RecordStore
export abstract class KeyModel {
@ -36,20 +35,9 @@ export class Store<T extends KeyModel> {
add(record: T): void { this.list.push(record); }
remove(record: T): void { this._spliceOut(record); }
remove(record: T): void { this.removeBy((item) => item === record); }
removeBy(callback: Predicate<T>): void {
var records = this.list.filter(callback);
ListWrapper.removeAll(this.list, records);
removeBy(callback: (record: T) => boolean): void {
this.list = this.list.filter((record) => !callback(record));
}
private _spliceOut(record: T) {
var i = this._indexFor(record);
if (i > -1) {
return this.list.splice(i, 1)[0];
}
return null;
}
private _indexFor(record: T) { return this.list.indexOf(record); }
}

View File

@ -18,16 +18,16 @@ class TodoApp {
constructor(public todoStore: Store<Todo>, public factory: TodoFactory) {}
enterTodo(inputElement: any /** TODO #9100 */): void {
enterTodo(inputElement: HTMLInputElement): void {
this.addTodo(inputElement.value);
inputElement.value = '';
}
editTodo(todo: Todo): void { this.todoEdit = todo; }
doneEditing($event: any /** TODO #9100 */, todo: Todo): void {
var which = $event.which;
var target = $event.target;
doneEditing($event: KeyboardEvent, todo: Todo): void {
const which = $event.which;
const target = $event.target as HTMLInputElement;
if (which === 13) {
todo.title = target.value;
this.todoEdit = null;
@ -43,8 +43,8 @@ class TodoApp {
deleteMe(todo: Todo): void { this.todoStore.remove(todo); }
toggleAll($event: any /** TODO #9100 */): void {
var isComplete = $event.target.checked;
toggleAll($event: MouseEvent): void {
const isComplete = ($event.target as HTMLInputElement).checked;
this.todoStore.list.forEach((todo: Todo) => { todo.completed = isComplete; });
}