111 lines
2.8 KiB
HTML
111 lines
2.8 KiB
HTML
<!DOCTYPE HTML>
|
|
<html>
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
|
<title>SlickGrid Model Benchmark</title>
|
|
</head>
|
|
<body>
|
|
<script src="../lib/jquery-1.7.min.js"></script>
|
|
<script src="../slick.core.js"></script>
|
|
<script src="../slick.dataview.js"></script>
|
|
<script src="../slick.groupitemmetadataprovider.js"></script>
|
|
|
|
<script>
|
|
function filter(item, args) {
|
|
// simulate a more expensive filer
|
|
var matches = 0;
|
|
if (item.title.indexOf("ask") != -1) matches++;
|
|
for (var j = 0; j < 5; j++)
|
|
matches += Math.random();
|
|
|
|
if (item.percentComplete >= args) {
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
var data = [];
|
|
|
|
for (var i = 0; i < 300000; i++) {
|
|
var d = (data[i] = {});
|
|
|
|
d["id"] = i;
|
|
d["title"] = "Task " + i;
|
|
d["percentComplete"] = i % 100;
|
|
d["duration"] = Math.round(Math.random() * 14);
|
|
}
|
|
|
|
var dv = new Slick.Data.DataView({inlineFilters: true});
|
|
dv.beginUpdate();
|
|
dv.setItems(data);
|
|
dv.setFilter(filter);
|
|
dv.setFilterArgs(0);
|
|
//dv.setPagingOptions({pageSize:25});
|
|
|
|
dv.setGrouping([
|
|
{
|
|
getter: "duration",
|
|
formatter: function (g) {
|
|
return "Duration: " + g.value + " <span style='color:green'>(" + g.count + " items)</span>";
|
|
},
|
|
aggregators: [
|
|
new Slick.Data.Aggregators.Avg("percentComplete"),
|
|
new Slick.Data.Aggregators.Sum("cost")
|
|
],
|
|
aggregateCollapsed: true,
|
|
aggregateChildGroups: true
|
|
},
|
|
{
|
|
getter: "effortDriven",
|
|
formatter: function (g) {
|
|
return "Effort-Driven: " + (g.value ? "True" : "False") + " <span style='color:green'>(" + g.count + " items)</span>";
|
|
},
|
|
aggregators: [
|
|
new Slick.Data.Aggregators.Avg("percentComplete"),
|
|
new Slick.Data.Aggregators.Sum("cost")
|
|
],
|
|
aggregateCollapsed: false
|
|
}
|
|
]);
|
|
|
|
dv.endUpdate();
|
|
|
|
|
|
console.time("total");
|
|
console.time("narrow");
|
|
|
|
for (var i = 0; i <= 100; i += 5) {
|
|
dv.setFilterArgs(i);
|
|
dv.setRefreshHints({
|
|
ignoreDiffsBefore:200,
|
|
ignoreDiffsAfter:300,
|
|
isFilterNarrowing:true
|
|
});
|
|
dv.refresh();
|
|
|
|
//console.log(dv.getLength());
|
|
}
|
|
|
|
console.timeEnd("narrow");
|
|
|
|
console.time("expand");
|
|
|
|
for (var i = 100; i > 0; i -= 5) {
|
|
dv.setFilterArgs(i);
|
|
dv.setRefreshHints({
|
|
ignoreDiffsBefore:200,
|
|
ignoreDiffsAfter:300,
|
|
isFilterExpanding:true
|
|
});
|
|
dv.refresh();
|
|
|
|
//console.log(dv.getLength());
|
|
}
|
|
|
|
console.timeEnd("expand");
|
|
console.timeEnd("total");
|
|
</script>
|
|
</body>
|
|
</html>
|