refactor(playground): make playground great again
This commit is contained in:

committed by
Victor Berchet

parent
69f87ca075
commit
3d9d839c6c
@ -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); }
|
||||
}
|
||||
|
@ -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; });
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user