angular2-data-table
Version:
angular2-data-table is a Angular2 component for presenting large and complex data.
64 lines (55 loc) • 1.52 kB
text/typescript
import { Component } from '@angular/core';
@Component({
selector: 'virtual-scroll-demo',
template: `
<div>
<h3>Virtual Scrolling with 10k Rows</h3>
<swui-datatable
class='material'
[]='rows'
[]="'standard'"
[]="50"
[]="50"
[]="50"
[]="true"
(page)="onPage($event)">
<swui-datatable-column name="Name" width="200">
<template let-value="value" swui-datatable-cell-template>
<strong>{{value}}</strong>
</template>
</swui-datatable-column>
<swui-datatable-column name="Gender" width="300">
<template let-row="row" let-value="value" swui-datatable-cell-template>
<i [innerHTML]="row['name']"></i> and <i>{{value}}</i>
</template>
</swui-datatable-column>
<swui-datatable-column name="Age" width="80">
</swui-datatable-column>
</swui-datatable>
</div>
`
})
export class VirtualScrollComponent {
rows = [];
expanded = {};
timeout: any;
constructor() {
this.fetch((data) => {
this.rows = data;
});
}
onPage(event) {
clearTimeout(this.timeout);
this.timeout = setTimeout(() => {
console.log('paged!', event);
}, 100);
}
fetch(cb) {
let req = new XMLHttpRequest();
req.open('GET', `assets/data/100k.json`);
req.onload = () => {
cb(JSON.parse(req.response));
};
req.send();
}
}