cccc/static/sg/examples/example13-getItem-sorting.html
2018-12-04 09:58:47 +01:00

125 lines
3.6 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>SlickGrid example 13: Indexed Sorting using Functional Data Provider</title>
<link rel="stylesheet" href="../slick.grid.css" type="text/css"/>
<link rel="stylesheet" href="examples.css" type="text/css"/>
<style>
html, body {
margin: 0;
padding: 0;
background-color: White;
overflow: auto;
}
body {
font: 11px Helvetica, Arial, sans-serif;
}
#container {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
}
#description {
position: fixed;
top: 30px;
right: 30px;
width: 25em;
background-color: beige;
border: solid 1px gray;
z-index: 1000;
}
#description h2 {
padding-left: 0.5em;
}
</style>
</head>
<body>
<div id="container"></div>
<div id="description">
<h2>Demonstrates:</h2>
<ul>
<li>Sorting grid items by an index</li>
<li>Using the getItem method to provide data</li>
</ul>
<h2>View Source:</h2>
<ul>
<li><A href="https://github.com/mleibman/SlickGrid/blob/gh-pages/examples/example13-getItem-sorting.html" target="_sourcewindow"> View the source for this example on Github</a></li>
</ul>
</div>
<script src="../lib/jquery-1.7.min.js"></script>
<script src="../lib/jquery.event.drag-2.2.js"></script>
<script src="../slick.core.js"></script>
<script src="../slick.grid.js"></script>
<script>
var grid,
data = [],
columns = [
{ id: "title", name: "Title", field: "title", width: 240, sortable: true },
{ id: "c1", name: "Sort 1", field: "c1", width: 240, sortable: true },
{ id: "c2", name: "Sort 2", field: "c2", width: 240, sortable: true },
{ id: "c3", name: "Sort 3", field: "c3", width: 240, sortable: true }
],
options = {
enableCellNavigation: false,
enableColumnReorder: false
},
numberOfItems = 25000, items = [], indices, isAsc = true, currentSortCol = { id: "title" }, i;
// Copies and shuffles the specified array and returns a new shuffled array.
function randomize(items) {
var randomItems = $.extend(true, null, items), randomIndex, temp, index;
for (index = items.length; index-- > 0;) {
randomIndex = Math.round(Math.random() * items.length - 1);
if (randomIndex > -1) {
temp = randomItems[randomIndex];
randomItems[randomIndex] = randomItems[index];
randomItems[index] = temp;
}
}
return randomItems;
}
/// Build the items and indices.
for (i = numberOfItems; i-- > 0;) {
items[i] = i;
data[i] = {
title: "Task ".concat(i + 1)
};
}
indices = { title: items, c1: randomize(items), c2: randomize(items), c3: randomize(items) };
// Assign values to the data.
for (i = numberOfItems; i-- > 0;) {
data[indices.c1[i]].c1 = "Value ".concat(i + 1);
data[indices.c2[i]].c2 = "Value ".concat(i + 1);
data[indices.c3[i]].c3 = "Value ".concat(i + 1);
}
// Define function used to get the data and sort it.
function getItem(index) {
return isAsc ? data[indices[currentSortCol.id][index]] : data[indices[currentSortCol.id][(data.length - 1) - index]];
}
function getLength() {
return data.length;
}
grid = new Slick.Grid("#container", {getLength: getLength, getItem: getItem}, columns, options);
grid.onSort.subscribe(function (e, args) {
currentSortCol = args.sortCol;
isAsc = args.sortAsc;
grid.invalidateAllRows();
grid.render();
});
</script>
</body>
</html>