1 dojo.requireLocalization("openils.reports", "reports");
3 var rpt_strings = dojo.i18n.getLocalization("openils.reports", "reports");
6 var OILS_RPT_TRANSFORMS = {
8 label : rpt_strings.TFORMS_LABEL_RAW_DATA
12 label : rpt_strings.TFORMS_LABEL_FIRST
16 label : rpt_strings.TFORMS_LABEL_LAST
21 label : rpt_strings.TFORMS_LABEL_COUNT
26 label : rpt_strings.TFORMS_LABEL_COUNT_DISTINCT
31 label : rpt_strings.TFORMS_LABEL_MIN
36 label : rpt_strings.TFORMS_LABEL_MAX
39 /* string transforms ------------------------- */
41 /* XXX not supported yet
43 datatype : OILS_RPT_DTYPE_STRING,
49 datatype : [OILS_RPT_DTYPE_STRING, 'text'],
50 label : rpt_strings.TFORMS_LABEL_LOWER
54 datatype : [OILS_RPT_DTYPE_STRING, 'text'],
55 label : rpt_strings.TFORMS_LABEL_UPPER
59 datatype : [OILS_RPT_DTYPE_STRING, 'text'],
60 label : rpt_strings.TFORMS_LABEL_FIRST5
64 datatype : [OILS_RPT_DTYPE_STRING, 'text'],
65 label : rpt_strings.TFORMS_LABEL_FIRST_WORD
68 /* timestamp transforms ----------------------- */
70 datatype : OILS_RPT_DTYPE_TIMESTAMP,
71 label : rpt_strings.TFORMS_LABEL_DOW,
75 datatype : OILS_RPT_DTYPE_TIMESTAMP,
76 label : rpt_strings.TFORMS_LABEL_DOM,
77 regex : /^[0-9]{1,2}$/
81 datatype : OILS_RPT_DTYPE_TIMESTAMP,
82 label : rpt_strings.TFORMS_LABEL_DOY,
83 regex : /^[0-9]{1,3}$/
87 datatype : OILS_RPT_DTYPE_TIMESTAMP,
88 label : rpt_strings.TFORMS_LABEL_WOY,
89 regex : /^[0-9]{1,2}$/
93 datatype : OILS_RPT_DTYPE_TIMESTAMP,
94 label : rpt_strings.TFORMS_LABEL_MOY,
99 datatype : OILS_RPT_DTYPE_TIMESTAMP,
100 label : rpt_strings.TFORMS_LABEL_QOY,
105 datatype : OILS_RPT_DTYPE_TIMESTAMP,
106 label : rpt_strings.TFORMS_LABEL_HOD,
111 datatype : OILS_RPT_DTYPE_TIMESTAMP,
112 label : rpt_strings.TFORMS_LABEL_DATE,
113 regex : /^\d{4}-\d{2}-\d{2}$/,
115 cal_format : '%Y-%m-%d',
120 datatype : OILS_RPT_DTYPE_TIMESTAMP,
121 label : rpt_strings.TFORMS_LABEL_MONTH_TRUNC,
122 regex : /^\d{4}-\d{2}$/,
124 cal_format : '%Y-%m',
129 datatype : OILS_RPT_DTYPE_TIMESTAMP,
130 label : rpt_strings.TFORMS_LABEL_YEAR_TRUNC,
138 datatype : OILS_RPT_DTYPE_TIMESTAMP,
139 label : rpt_strings.TFORMS_LABEL_HOUR_TRUNC,
147 datatype : OILS_RPT_DTYPE_TIMESTAMP,
148 label : rpt_strings.TFORMS_LABEL_DAY_NAME
152 datatype : OILS_RPT_DTYPE_TIMESTAMP,
153 label : rpt_strings.TFORMS_LABEL_MONTH_NAME
156 datatype : OILS_RPT_DTYPE_TIMESTAMP,
157 label : rpt_strings.TFORMS_LABEL_AGE
161 datatype : OILS_RPT_DTYPE_TIMESTAMP,
162 label : rpt_strings.TFORMS_LABEL_MONTHS_AGO
166 datatype : OILS_RPT_DTYPE_TIMESTAMP,
167 label : rpt_strings.TFORMS_LABEL_QUARTERS_AGO
170 /* int / float transforms ----------------------------------- */
172 datatype : [ OILS_RPT_DTYPE_INT, OILS_RPT_DTYPE_FLOAT ],
173 label : rpt_strings.TFORMS_LABEL_SUM,
178 datatype : [ OILS_RPT_DTYPE_INT, OILS_RPT_DTYPE_FLOAT ],
179 label : rpt_strings.TFORMS_LABEL_AVERAGE,
184 datatype : [ OILS_RPT_DTYPE_INT, OILS_RPT_DTYPE_FLOAT ],
185 label : rpt_strings.TFORMS_LABEL_ROUND,
189 datatype : OILS_RPT_DTYPE_FLOAT,
190 label : rpt_strings.TFORMS_LABEL_INT
195 function oilsRptGetTforms(args) {
196 var dtype = args.datatype;
197 var agg = args.aggregate;
198 var tforms = OILS_RPT_TRANSFORMS;
199 var nonagg = args.non_aggregate;
201 var keys = oilsRptObjectKeys(OILS_RPT_TRANSFORMS);
204 _debug('getting tform '+dtype+' : ' + agg + ' : ' + nonagg);
206 for( var i = 0; i < keys.length; i++ ) {
208 var obj = OILS_RPT_TRANSFORMS[key];
209 if( dtype && !oilsRptTformIsDtype(key,dtype) ) continue;
210 if( agg && !nonagg && !obj.aggregate ) continue;
211 if( !agg && nonagg && obj.aggregate ) continue;
219 function oilsRptTformIsDtype(tform, dtype) {
220 var obj = OILS_RPT_TRANSFORMS[tform];
221 if( typeof obj.datatype == 'string' )
222 return (obj.datatype == dtype);
223 return !obj.datatype || grep(obj.datatype, function(d) { return (d == dtype) });
229 /* builds a new transform picker */
230 function oilsRptTformPicker(args) {
231 this.node = args.node;
232 this.selector = elem('select');
233 this.tforms = oilsRptGetTforms(args);
234 for( var i = 0; i < this.tforms.length; i++ )
235 this.addOpt(this.tforms[i], this.tforms[i] == args.select );
236 appendClear(this.node, this.selector);
239 oilsRptTformPicker.prototype.addOpt = function(key, select) {
240 var tform = OILS_RPT_TRANSFORMS[key];
242 var opt = insertSelectorVal(this.selector, -1, tform.label, key);
243 if( select ) opt.selected = true;
246 oilsRptTformPicker.prototype.getSelected = function(key) {
247 return getSelectorVal(this.selector);