]> git.evergreen-ils.org Git - Evergreen.git/blob - Open-ILS/web/reports/oils_rpt_param_editor.js
LP#1332138 Report template / field documentation
[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, par.field_doc)));
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, par.field_doc)));
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     widgetArgs.value = param.value;
78
79         switch(transform) {
80                 case 'date':
81                         widgetArgs.type = 'date';
82                         atomicWidget = oilsRptTruncPicker;
83                         break;
84                 case 'hour_trunc':
85                         widgetArgs.type = 'hour';
86                         atomicWidget = oilsRptTruncPicker;
87                         break;
88                 case 'month_trunc':
89                         widgetArgs.type = 'month';
90                         atomicWidget = oilsRptTruncPicker;
91                         break;
92                 case 'year_trunc':
93                         widgetArgs.type = 'year';
94                         atomicWidget = oilsRptTruncPicker;
95                         break;
96                 case 'date':
97                         atomicWidget = oilsRptCalWidget;
98                         break;
99                 case 'age':
100                         atomicWidget = oilsRptAgeWidget;
101                         break;
102                 case 'days_ago':        
103                         widgetArgs.size = 7;
104                         widgetArgs.start = 1;
105                         atomicWidget = oilsRptNumberWidget
106                         break;
107                 case 'months_ago':      
108                         widgetArgs.size = 12;
109                         widgetArgs.start = 1;
110                         atomicWidget = oilsRptNumberWidget
111                         break;
112                 case 'quarters_ago':    
113                         widgetArgs.size = 4;
114                         widgetArgs.start = 1;
115                         atomicWidget = oilsRptNumberWidget
116                         break;
117                 case 'years_ago':       
118                         widgetArgs.size = 20;
119                         widgetArgs.start = 1;
120                         atomicWidget = oilsRptNumberWidget
121                         break;
122                 case 'dow':
123                         widgetArgs.size = 7;
124                         widgetArgs.start = 0;
125                         atomicWidget = oilsRptNumberWidget
126                         break;
127                 case 'dom':
128                         widgetArgs.size = 31;
129                         widgetArgs.start = 1;
130                         atomicWidget = oilsRptNumberWidget
131                         break;
132                 case 'doy':
133                         widgetArgs.size = 365;
134                         widgetArgs.start = 1;
135                         atomicWidget = oilsRptNumberWidget
136                         break;
137                 case 'woy':
138                         widgetArgs.size = 52;
139                         widgetArgs.start = 1;
140                         atomicWidget = oilsRptNumberWidget
141                         break;
142                 case 'moy':
143                         widgetArgs.size = 12;
144                         widgetArgs.start = 1;
145                         atomicWidget = oilsRptNumberWidget
146                         break;
147                 case 'qoy':
148                         widgetArgs.size = 4;
149                         widgetArgs.start = 1;
150                         atomicWidget = oilsRptNumberWidget
151                         break;
152                 case 'hod':
153                         widgetArgs.size = 24;
154                         widgetArgs.start = 0;
155                         atomicWidget = oilsRptNumberWidget
156                         break;
157
158                 case 'substring':
159                         atomicWidget = oilsRptSubstrWidget
160                         break;
161         }
162
163         if( field.selector ) {
164                 atomicWidget = oilsRptRemoteWidget;
165                 widgetArgs.class = cls;
166                 widgetArgs.field = field;
167                 widgetArgs.column = param.column.colname;
168         }
169
170         switch(cls) {
171                 case 'aou':
172                         atomicWidget = oilsRptOrgSelector;
173                         break;
174         }
175
176         switch(dtype) {
177                 case 'bool':
178                         atomicWidget = oilsRptBoolWidget;
179                         break;
180
181         case "org_unit":
182             atomicWidget = oilsRptOrgSelector;
183             break;
184         }
185
186     if(widgetArgs.value != undefined) 
187         return new oilsRptTemplateWidget(widgetArgs);
188
189
190         switch(param.op) {
191                 case 'in':
192                 case 'not in':
193                         widgetArgs.inputWidget = atomicWidget;
194                         return new oilsRptSetWidget(widgetArgs);
195         case 'is':
196         case 'is not':
197         case 'is blank':
198         case 'is not blank':
199             return new oilsRptNullWidget(widgetArgs);
200                 case 'between':
201                 case 'not between':
202                         widgetArgs.startWidget = atomicWidget;
203                         widgetArgs.endWidget = atomicWidget;
204                         return new oilsRptBetweenWidget(widgetArgs);
205                 default:
206                         return new atomicWidget(widgetArgs);
207         }
208
209 }
210
211
212
213
214