web-atoms-rest
Version:
REST Json Service for Web Atoms
63 lines (50 loc) • 2.1 kB
text/typescript
namespace WebAtoms{
var AtomBinder = window["AtomBinder"];
var AtomPromise = window["AtomPromise"];
export class AtomList<T> extends Array<T> {
constructor(){
super();
this["__proto__"] = AtomList.prototype;
}
add(item: T): number {
var i = this.length;
var n = this.push(item);
AtomBinder.invokeItemsEvent(this, "add", i, item);
Atom.refresh(this, "length");
return n;
}
addAll(items: Array<T>) {
for (let item of items) {
var i = this.length;
this.push(item);
AtomBinder.invokeItemsEvent(this, "add", i, item);
Atom.refresh(this, "length");
}
}
insert(i: number, item: T) {
var n = this.splice(i, 0, item);
AtomBinder.invokeItemsEvent(this, "add", i, item);
Atom.refresh(this, "length");
}
removeAt(i: number) {
var item = this[i];
this.splice(i, 1);
AtomBinder.invokeItemsEvent(this, "remove", i, item);
Atom.refresh(this, "length");
}
remove(item: T) {
var n = this.indexOf(item);
if (n != -1) {
this.removeAt(n);
}
}
clear() {
this.length = 0;
this.refresh();
}
refresh() {
AtomBinder.invokeItemsEvent(this, "refresh", -1, null);
Atom.refresh(this, "length");
}
}
}