1 if(!dojo._hasResource['openils.widget.AutoWidget']) {
2 dojo.provide('openils.widget.AutoWidget');
3 dojo.require('dojo.data.ItemFileWriteStore');
4 dojo.require('fieldmapper.dojoData');
5 dojo.require('fieldmapper.IDL');
7 // common superclass to auto-generated UIs
8 dojo.declare('openils.widget.AutoWidget', null, {
10 fieldOrder : null, // ordered list of field names, optional.
11 sortedFieldList : [], // holds the sorted IDL defs for our fields
12 fmObject : null, // single fielmapper object
13 fmObjectList : null, // list of fieldmapper objects
14 fmClass : '', // our fieldmapper class
16 // locates the relevent IDL info
17 initAutoEnv : function() {
18 if(this.fmObjectList && this.fmObjectList.length)
19 this.fmClass = this.fmObjectList[0].classname;
21 this.fmClass = this.fmObject.classname;
22 this.fmIDL = fieldmapper.IDL.fmclasses[this.fmClass];
24 fieldmapper.IDL.load([this.fmClass]);
25 this.fmIDL = fieldmapper.IDL.fmclasses[this.fmClass];
27 this.buildSortedFieldList();
30 buildAutoStore : function() {
32 if(this.fmObjectList) {
33 list = this.fmObjectList;
36 list = [this.fmObject];
38 return new dojo.data.ItemFileWriteStore(
39 {data:fieldmapper[this.fmClass].toStoreData(list)});
42 buildSortedFieldList : function() {
43 this.sortedFieldList = [];
48 dojo.forEach(this.fieldOrder,
50 var field = self.fmIDL.fields.filter(function(item) { return (item.name == name) } )[0];
52 self.sortedFieldList.push(field)
55 self.sortedFieldList.push({name : name, nonIdl:true});
60 // if the user-defined order does not list all fields,
61 // shove the extras on the end.
63 for(var idx in this.fmIDL.fields) {
64 var name = this.fmIDL.fields[idx].name;
65 if(this.fieldOrder.indexOf(name) < 0) {
66 anonFields.push(this.fmIDL.fields[idx]);
70 anonFields = anonFields.sort(
72 if(a.label > b.label) return 1;
73 if(a.label < b.label) return -1;
78 this.sortedFieldList = this.sortedFieldList.concat(anonFields);
81 // no sort order defined, sort all fields on display label
83 for(var f in this.fmIDL.fields)
84 this.sortedFieldList.push(this.fmIDL.fields[f]);
85 this.sortedFieldList = this.sortedFieldList.sort(
86 // by default, sort on label
88 if(a.label > b.label) return 1;
89 if(a.label < b.label) return -1;