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