]> git.evergreen-ils.org Git - working/Evergreen.git/blob - Open-ILS/web/js/dojo/openils/widget/AutoGrid.js
better handle case where grid structure may exist but just have no columns yet defined
[working/Evergreen.git] / Open-ILS / web / js / dojo / openils / widget / AutoGrid.js
1 if(!dojo._hasResource['openils.widget.AutoGrid']) {
2     dojo.provide('openils.widget.AutoGrid');
3     dojo.require('dojox.grid.DataGrid');
4     dojo.require('openils.widget.AutoWidget');
5     dojo.require('openils.widget.AutoFieldWidget');
6     dojo.require('openils.Util');
7
8     dojo.declare(
9         'openils.widget.AutoGrid',
10         [dojox.grid.DataGrid, openils.widget.AutoWidget],
11         {
12             startup : function() {
13                 this.inherited(arguments);
14                 this.initAutoEnv();
15                 var existing = (this.structure && this.structure[0].cells[0]) ? 
16                     this.structure[0].cells[0] : [];
17                 var fields = [];
18                 for(var f in this.sortedFieldList) {
19                     var field = this.sortedFieldList[f];
20                     if(!field || field.virtual) continue;
21                     var entry = existing.filter(function(i){return (i.field == field.name)})[0];
22                     if(entry) entry.name = field.label;
23                     else entry = {field:field.name, name:field.label};
24                     fields.push(entry);
25                     if(!entry.get) 
26                         entry.get = openils.widget.AutoGrid.defaultGetter
27                 }
28                 this.setStructure([{cells: [fields]}]);
29                 this.setStore(this.buildAutoStore());
30             },
31         }
32     );
33     openils.widget.AutoGrid.markupFactory = dojox.grid.DataGrid.markupFactory;
34
35     openils.widget.AutoGrid.defaultGetter = function(rowIndex, item) {
36         if(!item) return '';
37         var val = this.grid.store.getValue(item, this.field);
38         var autoWidget = new openils.widget.AutoFieldWidget({
39             fmClass: this.grid.fmClass,
40             fmField: this.field,
41             widgetValue : val,
42         });
43         return autoWidget.getDisplayString();
44     }
45 }
46