import { Collection, Component, View, Model } from "../../../src/core";
import { HeroCollection } from "../Collection/Hero";
@Component({
el: "ng-herolist",
events: {
"change [data-bind=checkbox]": "onSelect",
"click [data-sort]": "onClickSort",
"click [data-bind=remove]": "onClickRemoveGroup",
"click [data-bind=markall]": "onSelectAll"
},
template: `
0 selected items
`
})
export class HeroListView extends View {
el: HTMLElement;
collections: NgBackbone.CollectionMap;
heroes: HeroCollection;
toggle: boolean = false;
initialize() {
this.heroes = this.collections.get( "heroes" ) as HeroCollection;
this.heroes.fetch();
this.render();
}
onSelect( e: Event ){
let el = e.target as HTMLInputElement,
model = this.heroes.get( el.dataset[ "id" ] ),
selected = model.get( "selected" );
model.set( "selected", !selected );
}
onSelectAll(){
this.toggle= !this.toggle;
this.heroes.forEach(( model: Model ) => {
model.set( "selected", this.toggle);
});
}
onClickRemoveGroup(){
this.heroes.getSelected().forEach( ( model: Model ) => model.destroy() );
}
onClickSort( e:Event ) {
let el = e.target,
order: string = el.dataset[ "sort" ],
heroes = this.heroes as HeroCollection;
e.preventDefault();
heroes.orderBy( order );
}
}