158 lines
4.2 KiB
HTML
158 lines
4.2 KiB
HTML
<!DOCTYPE HTML>
|
|
<html>
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
|
<title>SlickGrid example 14: Highlighting and Flashing cells</title>
|
|
<link rel="stylesheet" href="../slick.grid.css" type="text/css"/>
|
|
<link rel="stylesheet" href="../css/smoothness/jquery-ui-1.8.16.custom.css" type="text/css"/>
|
|
<link rel="stylesheet" href="examples.css" type="text/css"/>
|
|
<style>
|
|
.load-medium {
|
|
color: orange;
|
|
font-weight: bold;
|
|
}
|
|
|
|
.load-hi {
|
|
color: red;
|
|
font-weight: bold;
|
|
}
|
|
|
|
.changed {
|
|
background: pink;
|
|
}
|
|
|
|
.current-server {
|
|
border: 1px solid black;
|
|
background: orange;
|
|
}
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<div style="position:relative">
|
|
<div style="width:520px;">
|
|
<div id="myGrid" style="width:100%;height:500px;"></div>
|
|
</div>
|
|
|
|
<div class="options-panel">
|
|
<h2>About</h2>
|
|
This example simulates a real-time display of CPU utilization in a web farm.
|
|
Data is updated in real-time, and cells with changed data are highlighted.
|
|
You can also click "Find current server" to scroll the row displaying data for the current
|
|
server into view and flash it.
|
|
<h2>Demonstrates</h2>
|
|
<ul>
|
|
<li>setHighlightedCells()</li>
|
|
<li>flashCell()</li>
|
|
</ul>
|
|
<h2>Controls</h2>
|
|
<button onclick="simulateRealTimeUpdates()">Start simulation</button>
|
|
<button onclick="findCurrentServer()">Find current server</button>
|
|
<h2>View Source:</h2>
|
|
<ul>
|
|
<li><A href="https://github.com/mleibman/SlickGrid/blob/gh-pages/examples/example14-highlighting.html" target="_sourcewindow"> View the source for this example on Github</a></li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
|
|
<script src="../lib/firebugx.js"></script>
|
|
|
|
<script src="../lib/jquery-1.7.min.js"></script>
|
|
<script src="../lib/jquery-ui-1.8.16.custom.min.js"></script>
|
|
<script src="../lib/jquery.event.drag-2.2.js"></script>
|
|
|
|
<script src="../slick.core.js"></script>
|
|
<script src="../plugins/slick.cellselectionmodel.js"></script>
|
|
<script src="../plugins/slick.rowmovemanager.js"></script>
|
|
<script src="../slick.grid.js"></script>
|
|
|
|
<script>
|
|
var grid;
|
|
var data = [];
|
|
var columns = [
|
|
{id: "server", name: "Server", field: "server", width: 180}
|
|
];
|
|
var currentServer;
|
|
|
|
function cpuUtilizationFormatter(row, cell, value, columnDef, dataContext) {
|
|
if (value > 90) {
|
|
return "<span class='load-hi'>" + value + "%</span>";
|
|
}
|
|
else if (value > 70) {
|
|
return "<span class='load-medium'>" + value + "%</span>";
|
|
}
|
|
else {
|
|
return value + "%";
|
|
}
|
|
}
|
|
|
|
for (var i = 0; i < 4; i++) {
|
|
columns.push({
|
|
id: "cpu" + i,
|
|
name: "CPU" + i,
|
|
field: i,
|
|
width: 80,
|
|
formatter: cpuUtilizationFormatter
|
|
});
|
|
}
|
|
|
|
var options = {
|
|
editable: false,
|
|
enableAddRow: false,
|
|
enableCellNavigation: true,
|
|
cellHighlightCssClass: "changed",
|
|
cellFlashingCssClass: "current-server"
|
|
};
|
|
|
|
|
|
$(function () {
|
|
for (var i = 0; i < 500; i++) {
|
|
var d = (data[i] = {});
|
|
d.server = "Server " + i;
|
|
for (var j = 0; j < columns.length; j++) {
|
|
d[j] = Math.round(Math.random() * 100);
|
|
}
|
|
}
|
|
|
|
grid = new Slick.Grid("#myGrid", data, columns, options);
|
|
|
|
currentServer = Math.round(Math.random() * (data.length - 1));
|
|
});
|
|
|
|
|
|
function simulateRealTimeUpdates() {
|
|
var changes = {};
|
|
var numberOfUpdates = Math.round(Math.random() * (data.length / 10));
|
|
for (var i = 0; i < numberOfUpdates; i++) {
|
|
var server = Math.round(Math.random() * (data.length - 1));
|
|
var cpu = Math.round(Math.random() * (columns.length - 1));
|
|
var delta = Math.round(Math.random() * 50) - 25;
|
|
var col = grid.getColumnIndex("cpu" + cpu);
|
|
var val = data[server][col] + delta;
|
|
val = Math.max(0, val);
|
|
val = Math.min(100, val);
|
|
|
|
data[server][col] = val;
|
|
|
|
if (!changes[server]) {
|
|
changes[server] = {};
|
|
}
|
|
|
|
changes[server]["cpu" + cpu] = "changed";
|
|
|
|
grid.invalidateRow(server);
|
|
}
|
|
|
|
grid.setCellCssStyles("highlight", changes);
|
|
grid.render();
|
|
|
|
setTimeout(simulateRealTimeUpdates, 500);
|
|
}
|
|
|
|
function findCurrentServer() {
|
|
grid.scrollRowIntoView(currentServer);
|
|
grid.flashCell(currentServer, grid.getColumnIndex("server"), 100);
|
|
}
|
|
</script>
|
|
</body>
|
|
</html>
|