summaryrefslogtreecommitdiff
path: root/includes/js/dojox/grid/_grid/layout.js
diff options
context:
space:
mode:
Diffstat (limited to 'includes/js/dojox/grid/_grid/layout.js')
-rw-r--r--includes/js/dojox/grid/_grid/layout.js75
1 files changed, 75 insertions, 0 deletions
diff --git a/includes/js/dojox/grid/_grid/layout.js b/includes/js/dojox/grid/_grid/layout.js
new file mode 100644
index 0000000..128f486
--- /dev/null
+++ b/includes/js/dojox/grid/_grid/layout.js
@@ -0,0 +1,75 @@
+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: [],
+ // 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
+ }));
+ }
+});
+
+}