]> git.evergreen-ils.org Git - working/Evergreen.git/blob - Open-ILS/web/reports/oils_rpt_param_editor.js
fixed tab opening to contain navigation and print buttons
[working/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
143         }
144
145         if( field.selector ) {
146                 atomicWidget = oilsRptRemoteWidget;
147                 widgetArgs.class = cls;
148                 widgetArgs.field = field;
149                 widgetArgs.column = param.column.colname;
150         }
151
152         switch(cls) {
153                 case 'aou':
154                         atomicWidget = oilsRptOrgSelector;
155                         break;
156         }
157
158         switch(dtype) {
159                 case 'bool':
160                         atomicWidget = oilsRptBoolWidget;
161                         break;
162         }
163
164
165         switch(param.op) {
166                 case 'in':
167                 case 'not in':
168                         widgetArgs.inputWidget = atomicWidget;
169                         return new oilsRptSetWidget(widgetArgs);
170                 case 'between':
171                 case 'not between':
172                         widgetArgs.startWidget = atomicWidget;
173                         widgetArgs.endWidget = atomicWidget;
174                         return new oilsRptBetweenWidget(widgetArgs);
175                 default:
176                         return new atomicWidget(widgetArgs);
177         }
178 }
179
180
181
182
183