]> git.evergreen-ils.org Git - Evergreen.git/blob - Open-ILS/web/reports/oils_rpt_param_editor.js
fixed bug in org_unit datatype widget drawing
[Evergreen.git] / Open-ILS / web / reports / oils_rpt_param_editor.js
1 oilsRptSetSubClass('oilsRptParamEditor','oilsRptObject');
2 function oilsRptParamEditor(report, tbody) {
3         this.tbody = tbody;
4         this.report = report;
5 }
6
7
8 oilsRptParamEditor.prototype.recur = function() {
9         //var cb = $n(DOM.oils_rpt_recur_editor_table,'oils_rpt_recur');
10         var cb = DOM.oils_rpt_recur;
11         return (cb.checked) ? 't' : 'f';
12 }
13
14 oilsRptParamEditor.prototype.recurInterval = function() {
15         /*
16         var count = getSelectorVal($n(DOM.oils_rpt_recur_editor_table,'oils_rpt_recur_count'));
17         var intvl = getSelectorVal($n(DOM.oils_rpt_recur_editor_table,'oils_rpt_recur_interval_type'));
18         */
19         var count = getSelectorVal(DOM.oils_rpt_recur_count);
20         var intvl = getSelectorVal(DOM.oils_rpt_recur_interval_type);
21         return count+''+intvl;
22 }
23
24 oilsRptParamEditor.prototype.draw = function() {
25         var params = this.report.gatherParams();
26         this.params = params;
27
28         if(!oilsRptParamEditor.row)
29                 oilsRptParamEditor.row = 
30                         DOM.oils_rpt_param_editor_tbody.removeChild(
31                         $n(DOM.oils_rpt_param_editor_tbody, 'tr'));
32
33         removeChildren(this.tbody);
34         _debug(formatJSON(js2JSON(params)));
35                         
36         for( var p = 0; p < params.length; p++ ) {
37                 var par = params[p];
38                 var row = oilsRptParamEditor.row.cloneNode(true);
39                 this.tbody.appendChild(row);
40                 $n(row, 'column').appendChild(text(oilsRptMakeLabel(par.path)));
41                 $n(row, 'transform').appendChild(text(OILS_RPT_TRANSFORMS[par.column.transform].label));
42                 $n(row, 'action').appendChild(text(OILS_RPT_FILTERS[par.op].label));
43                 par.widget = this.buildWidget(par, $n(row, 'widget'));
44                 par.widget.draw();
45         }
46
47     /** draw the pre-defined template params so the user will know
48         what params are already set */
49     var tparams = this.report.gatherTemplateParams();
50
51         for( var p = 0; p < tparams.length; p++ ) {
52                 var par = tparams[p];
53                 var row = oilsRptParamEditor.row.cloneNode(true);
54                 this.tbody.appendChild(row);
55                 $n(row, 'column').appendChild(text(oilsRptMakeLabel(par.path)));
56                 $n(row, 'transform').appendChild(text(OILS_RPT_TRANSFORMS[par.column.transform].label));
57                 $n(row, 'action').appendChild(text(OILS_RPT_FILTERS[par.op].label));
58                 par.widget = this.buildWidget(par, $n(row, 'widget'));
59                 par.widget.draw();
60         }
61 }
62
63 oilsRptParamEditor.prototype.buildWidget = function(param, node) {
64         var transform = param.column.transform;
65         var cls = oilsRptPathClass(param.path);
66         var field = oilsRptFindField(oilsIDL[cls], oilsRptPathCol(param.path));
67         var dtype = field.datatype;
68
69         _debug("building widget with param class:" + cls + ' col: '+param.column.colname + ' op: '+ param.op);
70
71         /* get the atomic widget from the datatype */
72         var atomicWidget = oilsRptTextWidget;
73         var widgetArgs  = {node:node};
74         widgetArgs.calFormat = OILS_RPT_TRANSFORMS[transform].cal_format;
75         widgetArgs.inputSize = OILS_RPT_TRANSFORMS[transform].input_size;
76         widgetArgs.regex = OILS_RPT_TRANSFORMS[transform].regex;
77
78         switch(transform) {
79                 case 'date':
80                         widgetArgs.type = 'date';
81                         atomicWidget = oilsRptTruncPicker;
82                         break;
83                 case 'hour_trunc':
84                         widgetArgs.type = 'hour';
85                         atomicWidget = oilsRptTruncPicker;
86                         break;
87                 case 'month_trunc':
88                         widgetArgs.type = 'month';
89                         atomicWidget = oilsRptTruncPicker;
90                         break;
91                 case 'year_trunc':
92                         widgetArgs.type = 'year';
93                         atomicWidget = oilsRptTruncPicker;
94                         break;
95                 case 'date':
96                         atomicWidget = oilsRptCalWidget;
97                         break;
98                 case 'age':
99                         atomicWidget = oilsRptAgeWidget;
100                         break;
101                 case 'days_ago':        
102                         widgetArgs.size = 7;
103                         widgetArgs.start = 1;
104                         atomicWidget = oilsRptNumberWidget
105                         break;
106                 case 'months_ago':      
107                         widgetArgs.size = 12;
108                         widgetArgs.start = 1;
109                         atomicWidget = oilsRptNumberWidget
110                         break;
111                 case 'quarters_ago':    
112                         widgetArgs.size = 4;
113                         widgetArgs.start = 1;
114                         atomicWidget = oilsRptNumberWidget
115                         break;
116                 case 'years_ago':       
117                         widgetArgs.size = 20;
118                         widgetArgs.start = 1;
119                         atomicWidget = oilsRptNumberWidget
120                         break;
121                 case 'dow':
122                         widgetArgs.size = 7;
123                         widgetArgs.start = 0;
124                         atomicWidget = oilsRptNumberWidget
125                         break;
126                 case 'dom':
127                         widgetArgs.size = 31;
128                         widgetArgs.start = 1;
129                         atomicWidget = oilsRptNumberWidget
130                         break;
131                 case 'doy':
132                         widgetArgs.size = 365;
133                         widgetArgs.start = 1;
134                         atomicWidget = oilsRptNumberWidget
135                         break;
136                 case 'woy':
137                         widgetArgs.size = 52;
138                         widgetArgs.start = 1;
139                         atomicWidget = oilsRptNumberWidget
140                         break;
141                 case 'moy':
142                         widgetArgs.size = 12;
143                         widgetArgs.start = 1;
144                         atomicWidget = oilsRptNumberWidget
145                         break;
146                 case 'qoy':
147                         widgetArgs.size = 4;
148                         widgetArgs.start = 1;
149                         atomicWidget = oilsRptNumberWidget
150                         break;
151                 case 'hod':
152                         widgetArgs.size = 24;
153                         widgetArgs.start = 0;
154                         atomicWidget = oilsRptNumberWidget
155                         break;
156
157                 case 'substring':
158                         atomicWidget = oilsRptSubstrWidget
159                         break;
160         }
161
162         if( field.selector ) {
163                 atomicWidget = oilsRptRemoteWidget;
164                 widgetArgs.class = cls;
165                 widgetArgs.field = field;
166                 widgetArgs.column = param.column.colname;
167         }
168
169         switch(cls) {
170                 case 'aou':
171                         atomicWidget = oilsRptOrgSelector;
172                         break;
173         }
174
175         switch(dtype) {
176                 case 'bool':
177                         atomicWidget = oilsRptBoolWidget;
178                         break;
179
180         case "org_unit":
181             atomicWidget = oilsRptOrgSelector;
182             break;
183         }
184
185
186         switch(param.op) {
187                 case 'in':
188                 case 'not in':
189                         widgetArgs.inputWidget = atomicWidget;
190                         return new oilsRptSetWidget(widgetArgs);
191         case 'is':
192         case 'is not':
193             return new oilsRptNullWidget(widgetArgs);
194                 case 'between':
195                 case 'not between':
196                         widgetArgs.startWidget = atomicWidget;
197                         widgetArgs.endWidget = atomicWidget;
198                         return new oilsRptBetweenWidget(widgetArgs);
199                 default:
200                         return new atomicWidget(widgetArgs);
201         }
202 }
203
204
205
206
207