--- /dev/null
+<html>\r
+<head>\r
+ <title>The source code</title>\r
+ <link href="../resources/prettify/prettify.css" type="text/css" rel="stylesheet" />\r
+ <script type="text/javascript" src="../resources/prettify/prettify.js"></script>\r
+</head>\r
+<body onload="prettyPrint();">\r
+ <pre class="prettyprint lang-js">Ext.ns('Ext.ux.grid');
+
+<div id="cls-Ext.ux.grid.TableGrid"></div>/**
+ * @class Ext.ux.grid.TableGrid
+ * @extends Ext.grid.GridPanel
+ * A Grid which creates itself from an existing HTML table element.
+ * @history
+ * 2007-03-01 Original version by Nige "Animal" White
+ * 2007-03-10 jvs Slightly refactored to reuse existing classes * @constructor
+ * @param {String/HTMLElement/Ext.Element} table The table element from which this grid will be created -
+ * The table MUST have some type of size defined for the grid to fill. The container will be
+ * automatically set to position relative if it isn't already.
+ * @param {Object} config A config object that sets properties on this grid and has two additional (optional)
+ * properties: fields and columns which allow for customizing data fields and columns for this grid.
+ */
+Ext.ux.grid.TableGrid = function(table, config){
+ config = config ||
+ {};
+ Ext.apply(this, config);
+ var cf = config.fields || [], ch = config.columns || [];
+ table = Ext.get(table);
+
+ var ct = table.insertSibling();
+
+ var fields = [], cols = [];
+ var headers = table.query("thead th");
+ for (var i = 0, h; h = headers[i]; i++) {
+ var text = h.innerHTML;
+ var name = 'tcol-' + i;
+
+ fields.push(Ext.applyIf(cf[i] ||
+ {}, {
+ name: name,
+ mapping: 'td:nth(' + (i + 1) + ')/@innerHTML'
+ }));
+
+ cols.push(Ext.applyIf(ch[i] ||
+ {}, {
+ 'header': text,
+ 'dataIndex': name,
+ 'width': h.offsetWidth,
+ 'tooltip': h.title,
+ 'sortable': true
+ }));
+ }
+
+ var ds = new Ext.data.Store({
+ reader: new Ext.data.XmlReader({
+ record: 'tbody tr'
+ }, fields)
+ });
+
+ ds.loadData(table.dom);
+
+ var cm = new Ext.grid.ColumnModel(cols);
+
+ if (config.width || config.height) {
+ ct.setSize(config.width || 'auto', config.height || 'auto');
+ }
+ else {
+ ct.setWidth(table.getWidth());
+ }
+
+ if (config.remove !== false) {
+ table.remove();
+ }
+
+ Ext.applyIf(this, {
+ 'ds': ds,
+ 'cm': cm,
+ 'sm': new Ext.grid.RowSelectionModel(),
+ autoHeight: true,
+ autoWidth: false
+ });
+ Ext.ux.grid.TableGrid.superclass.constructor.call(this, ct, {});
+};
+
+Ext.extend(Ext.ux.grid.TableGrid, Ext.grid.GridPanel);
+
+//backwards compat
+Ext.grid.TableGrid = Ext.ux.grid.TableGrid;
+</pre> \r
+</body>\r
+</html>
\ No newline at end of file