egroupware/etemplate/js/test/test_dataview.html
2012-03-30 11:43:39 +00:00

200 lines
6.0 KiB
HTML

<html>
<head>
<title>ET2 - Test</title>
<script src="jquery.js"></script>
<script src="../../../phpgwapi/js/jsapi/jsapi.js"></script>
<script src="../../../phpgwapi/js/egw_json.js"></script>
<script src="../../../phpgwapi/js/jquery/jquery.tools.min.js"></script>
<script src="../../../phpgwapi/js/jquery/jquery-ui.js"></script>
<script src="../../../phpgwapi/js/egw_action/egw_action.js"></script>
<script src="../../../phpgwapi/js/egw_action/egw_action_common.js"></script>
<script>
// Create the egw object template
window["egw"] = {
'prefsOnly': true
};
</script>
<script src="../../../phpgwapi/js/jsapi/egw_core.js"></script>
<script src="../../../phpgwapi/js/jsapi/egw_utils.js"></script>
<script src="../../../phpgwapi/js/jsapi/egw_css.js"></script>
<script src="../../../phpgwapi/js/jsapi/egw_debug.js"></script>
<script src="../et2_core_inheritance.js"></script>
<script src="../et2_core_interfaces.js"></script>
<script src="../et2_core_common.js"></script>
<script src="../et2_extension_nextmatch_dynheight.js"></script>
<script src="../et2_dataview_interfaces.js"></script>
<script src="../et2_dataview_controller.js"></script>
<script src="../et2_dataview_controller_selection.js"></script>
<script src="../et2_dataview_model_columns.js"></script>
<script src="../et2_dataview_view_aoi.js"></script>
<script src="../et2_dataview_view_rowProvider.js"></script>
<script src="../et2_dataview_view_container.js"></script>
<script src="../et2_dataview_view_grid.js"></script>
<script src="../et2_dataview_view_spacer.js"></script>
<script src="../et2_dataview_view_row.js"></script>
<script src="../et2_dataview_view_resizeable.js"></script>
<script src="../et2_dataview.js"></script>
<link rel="StyleSheet" type="text/css" href="./test.css" />
<link rel="StyleSheet" type="text/css" href="./grid.css" />
</head>
<body>
<h1>EGroupware ETemplate2 Dataview Test</h1>
<div>
<button id="update">Update</button>
<button id="refresh">Refresh</button>
<span id="range" style="float: right; font-size: 12pt; padding-right: 10px">0-0</span>
</div>
<div id="container" style="margin:0; padding:0;">
</div>
<script type="text/javascript">
document.getElementById("update").onclick = function () {
controller.update();
};
document.getElementById("refresh").onclick = function () {
controller.reset();
};
// The column data object contains the data which is used to setup
// the column properties (visibility, width) etc. "caption" is only
// used to build the column selection menu (which is not used in
// this example)
var columnData = [
{
"id": "col_0",
"caption": "Name",
"visibility": ET2_COL_VISIBILITY_VISIBLE,
"width": "50%"
},
{
"id": "col_1",
"caption": "Size",
"visibility": ET2_COL_VISIBILITY_VISIBLE,
"width": "auto"
},
{
"id": "col_2",
"caption": "Creation Date",
"visibility": ET2_COL_VISIBILITY_VISIBLE,
"width": "auto"
}
];
var data = new Array(1000);
for (var i = 0; i < data.length; i++)
{
data[i] = "uid_" + i;
}
var dataprovider = Class.extend(et2_IDataProvider, {
dataFetch: function (_queriedRange, _callback, _context) {
var response = {
"order": data.slice(_queriedRange.start, _queriedRange.start + _queriedRange.num_rows),
"total": data.length
};
window.setTimeout(function () {
_callback.call(_context, response)
}, Math.round(100 + Math.random() * 750));
},
dataRegisterUID: function (_uid, _callback, _context) {
_callback.call(_context, {
"caption": "Row " + _uid
});
},
dataUnregisterUID: function (_uid, _callback, _context) {
//
}
});
/**
* The row callback gets called by the gridview controller whenever
* the actual DOM-Nodes for a node with the given data have to be
* created.
*/
function rowCallback(_data, _row, _idx)
{
var tr = _row.getDOMNode();
var row = dataview.rowProvider.getPrototype("default");
$j("div", row).each(function () { $j(this).text("#" + _idx + " " + _data.caption) });
$j(tr).append(row.children());
_row.makeExpandable(true, function () {
var grid = new et2_dataview_grid(_row, dataview.grid);
var controller = new et2_dataview_controller(grid,
new dataprovider(), rowCallback, linkCallback, null,
objectManager);
controller.update();
return grid;
});
}
function linkCallback() {
return [];
}
// The dynheight object is responsible for automatically resizing
// the gridContainer to its maximum extends
var dynheight = new et2_dynheight(window, $j("#container"), 150);
// The et2_dataview_gridContainer object is the outer grid container
// which is responsible for displaying the columns etc.
var dataview = new et2_dataview($j("#container"), egw(window));
// Load the column data
dataview.setColumns(columnData);
// Register the callback for displaying the range
dataview.grid.setInvalidateCallback(function (range) {
$j("#range").text("Showing elements " + (range.top + 1) + " - " + (range.bottom + 1) + " of " + dataview.grid.getTotalCount());
});
// Create the action manager and the object manager (optional)
var actionManager = egw_getActionManager("test");
var objectManager = egw_getObjectManager("test");
// Create the gridview controller
var controller = new et2_dataview_controller(dataview.grid,
new dataprovider(), rowCallback, linkCallback, null,
objectManager);
// Trigger the initial update
controller.update();
// Write something inside the column headers
for (var i = 0; i < columnData.length; i++)
{
$j(dataview.getHeaderContainerNode(i)).text(columnData[i].caption);
}
// Register a resize callback
$j(window).resize(function() {
dynheight.update(function(_w, _h) {
dataview.resize(_w, _h);
});
});
$j(window).resize();
</script>
</body>
</html>