2 var OILS_RPT_DTYPE_STRING = 'string';
3 var OILS_RPT_DTYPE_NUMERIC = 'numeric';
4 var OILS_RPT_DTYPE_FLOAT = 'float';
5 var OILS_RPT_DTYPE_TIMESTAMP = 'timestamp';
8 var OILS_RPT_TRANSFORMS = {
28 label : 'Count Distinct'
41 /* string transforms ------------------------- */
44 datatype : OILS_RPT_DTYPE_STRING,
49 datatype : OILS_RPT_DTYPE_STRING,
54 datatype : OILS_RPT_DTYPE_STRING,
58 /* timestamp transforms ----------------------- */
60 datatype : OILS_RPT_DTYPE_TIMESTAMP,
61 label : 'Day of Week',
65 datatype : OILS_RPT_DTYPE_TIMESTAMP,
66 label : 'Day of Month',
67 regex : /^[0-9]{1,2}$/
71 datatype : OILS_RPT_DTYPE_TIMESTAMP,
72 label : 'Day of Year',
73 regex : /^[0-9]{1,3}$/
77 datatype : OILS_RPT_DTYPE_TIMESTAMP,
78 label : 'Week of Year',
79 regex : /^[0-9]{1,2}$/
83 datatype : OILS_RPT_DTYPE_TIMESTAMP,
84 label : 'Month of Year',
85 regex : /^[0-9]{1,2}$/
89 datatype : OILS_RPT_DTYPE_TIMESTAMP,
90 label : 'Quarter of Year',
95 datatype : OILS_RPT_DTYPE_TIMESTAMP,
97 regex : /^\d{4}-\d{2}-\d{2}$/,
99 cal_format : '%Y-%m-%d'
103 datatype : OILS_RPT_DTYPE_TIMESTAMP,
104 label : 'Year + Month',
105 regex : /^\d{4}-\d{2}$/,
111 datatype : OILS_RPT_DTYPE_TIMESTAMP,
119 datatype : OILS_RPT_DTYPE_TIMESTAMP,
124 datatype : OILS_RPT_DTYPE_TIMESTAMP,
128 datatype : OILS_RPT_DTYPE_TIMESTAMP,
133 /* int / float transforms ----------------------------------- */
135 datatype : [ OILS_RPT_DTYPE_INT, OILS_RPT_DTYPE_FLOAT ],
141 datatype : [ OILS_RPT_DTYPE_INT, OILS_RPT_DTYPE_FLOAT ],
147 datatype : [ OILS_RPT_DTYPE_INT, OILS_RPT_DTYPE_FLOAT ],
152 datatype : OILS_RPT_DTYPE_FLOAT,
153 label : 'Drop trailing decimals'
158 function oilsRptGetTforms(args) {
159 var dtype = args.datatype;
160 var agg = args.aggregate;
161 var tforms = OILS_RPT_TRANSFORMS;
162 var nonagg = args.non_aggregate;
164 var keys = oilsRptObjectKeys(OILS_RPT_TRANSFORMS);
167 _debug('getting tform '+dtype+' : ' + agg + ' : ' + nonagg);
169 for( var i = 0; i < keys.length; i++ ) {
171 var obj = OILS_RPT_TRANSFORMS[key];
172 if( dtype && !oilsRptTformIsDtype(key,dtype) ) continue;
173 if( agg && !nonagg && !obj.aggregate ) continue;
174 if( !agg && nonagg && obj.aggregate ) continue;
182 function oilsRptTformIsDtype(tform, dtype) {
183 var obj = OILS_RPT_TRANSFORMS[tform];
184 if( typeof obj.datatype == 'string' )
185 return (obj.datatype == dtype);
186 return !obj.datatype || grep(obj.datatype, function(d) { return (d == dtype) });
192 /* builds a new transform picker */
193 function oilsRptTformPicker(args) {
194 this.node = args.node;
195 this.selector = elem('select');
196 this.tforms = oilsRptGetTforms(args);
197 for( var i = 0; i < this.tforms.length; i++ )
198 this.addOpt(this.tforms[i]);
199 appendClear(this.node, this.selector);
202 oilsRptTformPicker.prototype.addOpt = function(key) {
203 _debug("drawing tform opt with key " + key);
204 var tform = OILS_RPT_TRANSFORMS[key];
207 this.selector, -1, tform.label, key,
209 obj.setSelected(getSelectorVal(obj.selector));
210 _debug("setting selected to " + obj.getSelected());
215 oilsRptTformPicker.prototype.setSelected = function(key) {
218 oilsRptTformPicker.prototype.getSelected = function(key) {
219 return this.selected;