1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- if (!dojo._hasResource["dojox.grid._grid.layout"]) { // _hasResource checks
- // added by build. Do
- // not use _hasResource
- // directly in your
- // code.
- dojo._hasResource["dojox.grid._grid.layout"] = true;
- dojo.provide("dojox.grid._grid.layout");
- dojo.require("dojox.grid._grid.cell");
- dojo.declare("dojox.grid.layout", null, {
- // summary:
- // Controls grid cell layout. Owned by grid and used internally.
- constructor : function(inGrid) {
- this.grid = inGrid;
- },
- // flat array of grid cells
- cells : null,
- // structured array of grid cells
- structure : null,
- // default cell width
- defaultWidth : '6em',
- // methods
- setStructure : function(inStructure) {
- this.fieldIndex = 0;
- this.cells = [];
- var s = this.structure = [];
- for (var i = 0, viewDef, rows; (viewDef = inStructure[i]); i++) {
- s.push(this.addViewDef(viewDef));
- }
- this.cellCount = this.cells.length;
- },
- addViewDef : function(inDef) {
- this._defaultCellProps = inDef.defaultCell || {};
- return dojo.mixin({}, inDef, {
- rows : this.addRowsDef(inDef.rows
- || inDef.cells)
- });
- },
- addRowsDef : function(inDef) {
- var result = [];
- for (var i = 0, row; inDef && (row = inDef[i]); i++) {
- result.push(this.addRowDef(i, row));
- }
- return result;
- },
- addRowDef : function(inRowIndex, inDef) {
- var result = [];
- for (var i = 0, def, cell; (def = inDef[i]); i++) {
- cell = this.addCellDef(inRowIndex, i, def);
- result.push(cell);
- this.cells.push(cell);
- }
- return result;
- },
- addCellDef : function(inRowIndex, inCellIndex, inDef) {
- var w = 0;
- if (inDef.colSpan > 1) {
- w = 0;
- } else if (!isNaN(inDef.width)) {
- w = inDef.width + "em";
- } else {
- w = inDef.width || this.defaultWidth;
- }
- // fieldIndex progresses linearly from the last indexed
- // field
- // FIXME: support generating fieldIndex based a text field
- // name (probably in Grid)
- var fieldIndex = inDef.field != undefined
- ? inDef.field
- : (inDef.get ? -1 : this.fieldIndex);
- if ((inDef.field != undefined) || !inDef.get) {
- this.fieldIndex = (inDef.field > -1
- ? inDef.field
- : this.fieldIndex)
- + 1;
- }
- return new dojox.grid.cell(dojo.mixin({},
- this._defaultCellProps, inDef, {
- grid : this.grid,
- subrow : inRowIndex,
- layoutIndex : inCellIndex,
- index : this.cells.length,
- fieldIndex : fieldIndex,
- unitWidth : w
- }));
- }
- });
- }
|