]> git.evergreen-ils.org Git - Evergreen.git/blob - Open-ILS/web/reports/oils_rpt_param_editor.js
fixed param name bug which caused duplicate param entries in "where" clause. join...
[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
48 oilsRptParamEditor.prototype.buildWidget = function(param, node) {
49         var transform = param.column.transform;
50         var cls = oilsRptPathClass(param.path);
51         var field = oilsRptFindField(oilsIDL[cls], oilsRptPathCol(param.path));
52         var dtype = field.datatype;
53
54         _debug("building widget with param class:" + cls + ' col: '+param.column.colname + ' op: '+ param.op);
55
56         /* get the atomic widget from the datatype */
57         var atomicWidget = oilsRptTextWidget;
58         var widgetArgs  = {node:node};
59         widgetArgs.calFormat = OILS_RPT_TRANSFORMS[transform].cal_format;
60         widgetArgs.inputSize = OILS_RPT_TRANSFORMS[transform].input_size;
61         widgetArgs.regex = OILS_RPT_TRANSFORMS[transform].regex;
62
63         switch(transform) {
64                 case 'date':
65                         widgetArgs.type = 'date';
66                         atomicWidget = oilsRptTruncPicker;
67                         break;
68                 case 'hour_trunc':
69                         widgetArgs.type = 'hour';
70                         atomicWidget = oilsRptTruncPicker;
71                         break;
72                 case 'month_trunc':
73                         widgetArgs.type = 'month';
74                         atomicWidget = oilsRptTruncPicker;
75                         break;
76                 case 'year_trunc':
77                         widgetArgs.type = 'year';
78                         atomicWidget = oilsRptTruncPicker;
79                         break;
80                 case 'date':
81                         atomicWidget = oilsRptCalWidget;
82                         break;
83                 case 'age':
84                         atomicWidget = oilsRptAgeWidget;
85                         break;
86                 case 'days_ago':        
87                         widgetArgs.size = 7;
88                         widgetArgs.start = 1;
89                         atomicWidget = oilsRptNumberWidget
90                         break;
91                 case 'months_ago':      
92                         widgetArgs.size = 12;
93                         widgetArgs.start = 1;
94                         atomicWidget = oilsRptNumberWidget
95                         break;
96                 case 'quarters_ago':    
97                         widgetArgs.size = 4;
98                         widgetArgs.start = 1;
99                         atomicWidget = oilsRptNumberWidget
100                         break;
101                 case 'years_ago':       
102                         widgetArgs.size = 20;
103                         widgetArgs.start = 1;
104                         atomicWidget = oilsRptNumberWidget
105                         break;
106                 case 'dow':
107                         widgetArgs.size = 7;
108                         widgetArgs.start = 0;
109                         atomicWidget = oilsRptNumberWidget
110                         break;
111                 case 'dom':
112                         widgetArgs.size = 31;
113                         widgetArgs.start = 1;
114                         atomicWidget = oilsRptNumberWidget
115                         break;
116                 case 'doy':
117                         widgetArgs.size = 365;
118                         widgetArgs.start = 1;
119                         atomicWidget = oilsRptNumberWidget
120                         break;
121                 case 'woy':
122                         widgetArgs.size = 52;
123                         widgetArgs.start = 1;
124                         atomicWidget = oilsRptNumberWidget
125                         break;
126                 case 'moy':
127                         widgetArgs.size = 12;
128                         widgetArgs.start = 1;
129                         atomicWidget = oilsRptNumberWidget
130                         break;
131                 case 'qoy':
132                         widgetArgs.size = 4;
133                         widgetArgs.start = 1;
134                         atomicWidget = oilsRptNumberWidget
135                         break;
136                 case 'hod':
137                         widgetArgs.size = 24;
138                         widgetArgs.start = 0;
139                         atomicWidget = oilsRptNumberWidget
140                         break;
141
142                 case 'substring':
143                         atomicWidget = oilsRptSubstrWidget
144                         break;
145
146
147         }
148
149         if( field.selector ) {
150                 atomicWidget = oilsRptRemoteWidget;
151                 widgetArgs.class = cls;
152                 widgetArgs.field = field;
153                 widgetArgs.column = param.column.colname;
154         }
155
156         switch(cls) {
157                 case 'aou':
158                         atomicWidget = oilsRptOrgSelector;
159                         break;
160         }
161
162         switch(dtype) {
163                 case 'bool':
164                         atomicWidget = oilsRptBoolWidget;
165                         break;
166         }
167
168
169         switch(param.op) {
170                 case 'in':
171                 case 'not in':
172                         widgetArgs.inputWidget = atomicWidget;
173                         return new oilsRptSetWidget(widgetArgs);
174                 case 'between':
175                 case 'not between':
176                         widgetArgs.startWidget = atomicWidget;
177                         widgetArgs.endWidget = atomicWidget;
178                         return new oilsRptBetweenWidget(widgetArgs);
179                 default:
180                         return new atomicWidget(widgetArgs);
181         }
182 }
183
184
185
186
187