]> git.evergreen-ils.org Git - Evergreen.git/blob - Open-ILS/web/reports/oils_rpt_param_editor.js
LP#1332138 Report template / field docs repairs
[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
42         if (par.field_doc) {
43                     $n(row, 'column').appendChild(
44                 elem('div', {'class':'oils_rpt_field_hint'}, par.field_doc));
45         }
46             
47                 //$n(row, 'column').appendChild(text(oilsRptMakeLabel(par.path, par.field_doc)));
48                 $n(row, 'transform').appendChild(text(OILS_RPT_TRANSFORMS[par.column.transform].label));
49                 $n(row, 'action').appendChild(text(OILS_RPT_FILTERS[par.op].label));
50                 par.widget = this.buildWidget(par, $n(row, 'widget'));
51                 par.widget.draw();
52         }
53
54     /** draw the pre-defined template params so the user will know
55         what params are already set */
56     var tparams = this.report.gatherTemplateParams();
57
58         for( var p = 0; p < tparams.length; p++ ) {
59                 var par = tparams[p];
60                 var row = oilsRptParamEditor.row.cloneNode(true);
61                 this.tbody.appendChild(row);
62                 $n(row, 'column').appendChild(text(oilsRptMakeLabel(par.path)));
63         if (par.field_doc) {
64                     $n(row, 'column').appendChild(
65                 elem('div', {'class':'oils_rpt_field_hint'}, par.field_doc));
66         }
67                 $n(row, 'transform').appendChild(text(OILS_RPT_TRANSFORMS[par.column.transform].label));
68                 $n(row, 'action').appendChild(text(OILS_RPT_FILTERS[par.op].label));
69                 par.widget = this.buildWidget(par, $n(row, 'widget'));
70                 par.widget.draw();
71         }
72 }
73
74 oilsRptParamEditor.prototype.buildWidget = function(param, node) {
75         var transform = param.column.transform;
76         var cls = oilsRptPathClass(param.path);
77         var field = oilsRptFindField(oilsIDL[cls], oilsRptPathCol(param.path));
78         var dtype = field.datatype;
79
80         _debug("building widget with param class:" + cls + ' col: '+param.column.colname + ' op: '+ param.op);
81
82         /* get the atomic widget from the datatype */
83         var atomicWidget = oilsRptTextWidget;
84         var widgetArgs  = {node:node};
85         widgetArgs.calFormat = OILS_RPT_TRANSFORMS[transform].cal_format;
86         widgetArgs.inputSize = OILS_RPT_TRANSFORMS[transform].input_size;
87         widgetArgs.regex = OILS_RPT_TRANSFORMS[transform].regex;
88     widgetArgs.value = param.value;
89
90         switch(transform) {
91                 case 'date':
92                         widgetArgs.type = 'date';
93                         atomicWidget = oilsRptTruncPicker;
94                         break;
95                 case 'hour_trunc':
96                         widgetArgs.type = 'hour';
97                         atomicWidget = oilsRptTruncPicker;
98                         break;
99                 case 'month_trunc':
100                         widgetArgs.type = 'month';
101                         atomicWidget = oilsRptTruncPicker;
102                         break;
103                 case 'year_trunc':
104                         widgetArgs.type = 'year';
105                         atomicWidget = oilsRptTruncPicker;
106                         break;
107                 case 'date':
108                         atomicWidget = oilsRptCalWidget;
109                         break;
110                 case 'age':
111                         atomicWidget = oilsRptAgeWidget;
112                         break;
113                 case 'days_ago':        
114                         widgetArgs.size = 7;
115                         widgetArgs.start = 1;
116                         atomicWidget = oilsRptNumberWidget
117                         break;
118                 case 'months_ago':      
119                         widgetArgs.size = 12;
120                         widgetArgs.start = 1;
121                         atomicWidget = oilsRptNumberWidget
122                         break;
123                 case 'quarters_ago':    
124                         widgetArgs.size = 4;
125                         widgetArgs.start = 1;
126                         atomicWidget = oilsRptNumberWidget
127                         break;
128                 case 'years_ago':       
129                         widgetArgs.size = 20;
130                         widgetArgs.start = 1;
131                         atomicWidget = oilsRptNumberWidget
132                         break;
133                 case 'dow':
134                         widgetArgs.size = 7;
135                         widgetArgs.start = 0;
136                         atomicWidget = oilsRptNumberWidget
137                         break;
138                 case 'dom':
139                         widgetArgs.size = 31;
140                         widgetArgs.start = 1;
141                         atomicWidget = oilsRptNumberWidget
142                         break;
143                 case 'doy':
144                         widgetArgs.size = 365;
145                         widgetArgs.start = 1;
146                         atomicWidget = oilsRptNumberWidget
147                         break;
148                 case 'woy':
149                         widgetArgs.size = 52;
150                         widgetArgs.start = 1;
151                         atomicWidget = oilsRptNumberWidget
152                         break;
153                 case 'moy':
154                         widgetArgs.size = 12;
155                         widgetArgs.start = 1;
156                         atomicWidget = oilsRptNumberWidget
157                         break;
158                 case 'qoy':
159                         widgetArgs.size = 4;
160                         widgetArgs.start = 1;
161                         atomicWidget = oilsRptNumberWidget
162                         break;
163                 case 'hod':
164                         widgetArgs.size = 24;
165                         widgetArgs.start = 0;
166                         atomicWidget = oilsRptNumberWidget
167                         break;
168
169                 case 'substring':
170                         atomicWidget = oilsRptSubstrWidget
171                         break;
172         }
173
174         if( field.selector ) {
175                 atomicWidget = oilsRptRemoteWidget;
176                 widgetArgs.class = cls;
177                 widgetArgs.field = field;
178                 widgetArgs.column = param.column.colname;
179         }
180
181         switch(cls) {
182                 case 'aou':
183                         atomicWidget = oilsRptOrgSelector;
184                         break;
185         }
186
187         switch(dtype) {
188                 case 'bool':
189                         atomicWidget = oilsRptBoolWidget;
190                         break;
191
192         case "org_unit":
193             atomicWidget = oilsRptOrgSelector;
194             break;
195         }
196
197     if(widgetArgs.value != undefined) 
198         return new oilsRptTemplateWidget(widgetArgs);
199
200
201         switch(param.op) {
202                 case 'in':
203                 case 'not in':
204                         widgetArgs.inputWidget = atomicWidget;
205                         return new oilsRptSetWidget(widgetArgs);
206         case 'is':
207         case 'is not':
208         case 'is blank':
209         case 'is not blank':
210             return new oilsRptNullWidget(widgetArgs);
211                 case 'between':
212                 case 'not between':
213                         widgetArgs.startWidget = atomicWidget;
214                         widgetArgs.endWidget = atomicWidget;
215                         return new oilsRptBetweenWidget(widgetArgs);
216                 default:
217                         return new atomicWidget(widgetArgs);
218         }
219
220 }
221
222
223
224
225