1 oilsRptSetSubClass('oilsRptParamEditor','oilsRptObject');
2 function oilsRptParamEditor(report, tbody, readonly) {
5 this.readonly = readonly;
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';
15 oilsRptParamEditor.prototype.recurInterval = function() {
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'));
20 var count = getSelectorVal(DOM.oils_rpt_recur_count);
21 var intvl = getSelectorVal(DOM.oils_rpt_recur_interval_type);
22 return count+''+intvl;
25 oilsRptParamEditor.prototype.draw = function() {
26 var params = this.report.gatherParams();
29 if(!oilsRptParamEditor.row)
30 oilsRptParamEditor.row =
31 DOM.oils_rpt_param_editor_tbody.removeChild(
32 $n(DOM.oils_rpt_param_editor_tbody, 'tr'));
34 removeChildren(this.tbody);
35 _debug(formatJSON(js2JSON(params)));
37 for( var p = 0; p < params.length; p++ ) {
39 var row = oilsRptParamEditor.row.cloneNode(true);
40 this.tbody.appendChild(row);
41 var clabel = oilsRptMakeLabel(par.path) || par.label || par.alias;
42 $n(row, 'column').appendChild(text(clabel));
45 $n(row, 'column').appendChild(
46 elem('div', {'class':'oils_rpt_field_hint'}, par.field_doc));
49 //$n(row, 'column').appendChild(text(oilsRptMakeLabel(par.path, par.field_doc)));
50 $n(row, 'transform').appendChild(text(OILS_RPT_TRANSFORMS[par.column.transform].label));
51 $n(row, 'action').appendChild(text(OILS_RPT_FILTERS[par.op].label));
52 par.widget = this.buildWidget(par, $n(row, 'widget'));
56 /** draw the pre-defined template params so the user will know
57 what params are already set */
58 var tparams = this.report.gatherTemplateParams();
60 for( var p = 0; p < tparams.length; p++ ) {
62 var row = oilsRptParamEditor.row.cloneNode(true);
63 this.tbody.appendChild(row);
64 $n(row, 'column').appendChild(text(oilsRptMakeLabel(par.path)));
66 $n(row, 'column').appendChild(
67 elem('div', {'class':'oils_rpt_field_hint'}, par.field_doc));
69 $n(row, 'transform').appendChild(text(OILS_RPT_TRANSFORMS[par.column.transform].label));
70 $n(row, 'action').appendChild(text(OILS_RPT_FILTERS[par.op].label));
71 par.widget = this.buildWidget(par, $n(row, 'widget'), true);
76 oilsRptParamEditor.prototype.buildWidget = function(param, node, fromTemplate) {
77 var transform = param.column.transform;
78 var cls = oilsRptPathClass(param.path);
79 var field = oilsRptFindField(oilsIDL[cls], oilsRptPathCol(param.path));
80 var dtype = field.datatype;
82 _debug("building widget with param class:" + cls + ' col: '+param.column.colname + ' op: '+ param.op);
84 /* get the atomic widget from the datatype */
85 var atomicWidget = oilsRptTextWidget;
86 var widgetArgs = {node:node};
87 widgetArgs.calFormat = OILS_RPT_TRANSFORMS[transform].cal_format;
88 widgetArgs.inputSize = OILS_RPT_TRANSFORMS[transform].input_size;
89 widgetArgs.regex = OILS_RPT_TRANSFORMS[transform].regex;
90 widgetArgs.value = param.value;
91 widgetArgs.readonly = this.readonly;
95 widgetArgs.type = 'date';
96 atomicWidget = oilsRptTruncPicker;
99 widgetArgs.type = 'hour';
100 atomicWidget = oilsRptTruncPicker;
103 widgetArgs.type = 'month';
104 atomicWidget = oilsRptTruncPicker;
107 widgetArgs.type = 'year';
108 atomicWidget = oilsRptTruncPicker;
111 atomicWidget = oilsRptCalWidget;
114 atomicWidget = oilsRptAgeWidget;
118 widgetArgs.start = 1;
119 atomicWidget = oilsRptNumberWidget
122 widgetArgs.size = 12;
123 widgetArgs.start = 1;
124 atomicWidget = oilsRptNumberWidget
128 widgetArgs.start = 1;
129 atomicWidget = oilsRptNumberWidget
132 widgetArgs.size = 20;
133 widgetArgs.start = 1;
134 atomicWidget = oilsRptNumberWidget
138 widgetArgs.start = 0;
139 atomicWidget = oilsRptNumberWidget
142 widgetArgs.size = 31;
143 widgetArgs.start = 1;
144 atomicWidget = oilsRptNumberWidget
147 widgetArgs.size = 365;
148 widgetArgs.start = 1;
149 atomicWidget = oilsRptNumberWidget
152 widgetArgs.size = 52;
153 widgetArgs.start = 1;
154 atomicWidget = oilsRptNumberWidget
157 widgetArgs.size = 12;
158 widgetArgs.start = 1;
159 atomicWidget = oilsRptNumberWidget
163 widgetArgs.start = 1;
164 atomicWidget = oilsRptNumberWidget
167 widgetArgs.size = 24;
168 widgetArgs.start = 0;
169 atomicWidget = oilsRptNumberWidget
173 atomicWidget = oilsRptSubstrWidget
177 // aggregates like count (etc) on a pkey should not use the remote widget
178 if( !param.column.aggregate && field.selector ) {
179 atomicWidget = oilsRptRemoteWidget;
180 widgetArgs.class = cls;
181 widgetArgs.field = field;
182 widgetArgs.column = param.column.colname;
183 widgetArgs.async = true;
188 atomicWidget = oilsRptOrgSelector;
194 atomicWidget = oilsRptBoolWidget;
198 atomicWidget = oilsRptOrgSelector;
202 // oilsRptTemplateWidget's are pre-set read-only values
203 if(fromTemplate && widgetArgs.value != undefined)
204 return new oilsRptTemplateWidget(widgetArgs);
210 widgetArgs.inputWidget = atomicWidget;
211 return new oilsRptSetWidget(widgetArgs);
216 return new oilsRptNullWidget(widgetArgs);
219 widgetArgs.startWidget = atomicWidget;
220 widgetArgs.endWidget = atomicWidget;
221 return new oilsRptBetweenWidget(widgetArgs);
223 return new atomicWidget(widgetArgs);