1 var OILS_RPT_DTYPE_STRING = 'text';
2 var OILS_RPT_DTYPE_MONEY = 'money';
3 var OILS_RPT_DTYPE_BOOL = 'bool';
4 var OILS_RPT_DTYPE_INT = 'int';
5 var OILS_RPT_DTYPE_ID = 'id';
6 var OILS_RPT_DTYPE_OU = 'org_unit';
7 var OILS_RPT_DTYPE_FLOAT = 'float';
8 var OILS_RPT_DTYPE_TIMESTAMP = 'timestamp';
9 var OILS_RPT_DTYPE_INTERVAL = 'interval';
10 var OILS_RPT_DTYPE_LINK = 'link';
11 var OILS_RPT_DTYPE_NONE = '';
12 var OILS_RPT_DTYPE_NULL = null;
13 var OILS_RPT_DTYPE_UNDEF;
15 var OILS_RPT_DTYPE_ALL = [
16 OILS_RPT_DTYPE_STRING,
21 OILS_RPT_DTYPE_TIMESTAMP,
27 OILS_RPT_DTYPE_INTERVAL,
30 var OILS_RPT_DTYPE_NOT_ID = [OILS_RPT_DTYPE_STRING,OILS_RPT_DTYPE_MONEY,OILS_RPT_DTYPE_INT,OILS_RPT_DTYPE_FLOAT,OILS_RPT_DTYPE_TIMESTAMP];
31 var OILS_RPT_DTYPE_NOT_BOOL = [OILS_RPT_DTYPE_STRING,OILS_RPT_DTYPE_MONEY,OILS_RPT_DTYPE_INT,OILS_RPT_DTYPE_FLOAT,OILS_RPT_DTYPE_TIMESTAMP,OILS_RPT_DTYPE_ID];
33 var OILS_RPT_TRANSFORMS = {
35 datatype : OILS_RPT_DTYPE_ALL,
40 datatype : OILS_RPT_DTYPE_NOT_ID,
45 datatype : OILS_RPT_DTYPE_NOT_ID,
50 datatype : OILS_RPT_DTYPE_NOT_BOOL,
56 datatype : OILS_RPT_DTYPE_NOT_BOOL,
58 label : 'Count Distinct'
62 datatype : OILS_RPT_DTYPE_NOT_ID,
68 datatype : OILS_RPT_DTYPE_NOT_ID,
73 /* string transforms ------------------------- */
76 datatype : [ OILS_RPT_DTYPE_STRING ],
82 datatype : [ OILS_RPT_DTYPE_STRING ],
87 datatype : [ OILS_RPT_DTYPE_STRING ],
91 /* timestamp transforms ----------------------- */
93 datatype : [ OILS_RPT_DTYPE_TIMESTAMP ],
94 label : 'Day of Week',
99 datatype : [ OILS_RPT_DTYPE_TIMESTAMP ],
100 label : 'Day of Month',
102 regex : /^[0-9]{1,2}$/
106 datatype : [ OILS_RPT_DTYPE_TIMESTAMP ],
107 label : 'Day of Year',
109 regex : /^[0-9]{1,3}$/
113 datatype : [ OILS_RPT_DTYPE_TIMESTAMP ],
114 label : 'Week of Year',
116 regex : /^[0-9]{1,2}$/
120 datatype : [ OILS_RPT_DTYPE_TIMESTAMP ],
121 label : 'Month of Year',
127 datatype : [ OILS_RPT_DTYPE_TIMESTAMP ],
128 label : 'Quarter of Year',
133 datatype : [ OILS_RPT_DTYPE_TIMESTAMP ],
134 label : 'Hour of day',
140 datatype : [ OILS_RPT_DTYPE_TIMESTAMP ],
142 regex : /^\d{4}-\d{2}-\d{2}$/,
144 cal_format : '%Y-%m-%d',
149 datatype : [ OILS_RPT_DTYPE_TIMESTAMP ],
150 label : 'Year + Month',
151 regex : /^\d{4}-\d{2}$/,
153 cal_format : '%Y-%m',
158 datatype : [ OILS_RPT_DTYPE_TIMESTAMP ],
167 datatype : [ OILS_RPT_DTYPE_TIMESTAMP ],
171 cal_format : '%Y-%m-$d %H',
176 datatype : [ OILS_RPT_DTYPE_TIMESTAMP ],
182 datatype : [ OILS_RPT_DTYPE_TIMESTAMP ],
187 datatype : [ OILS_RPT_DTYPE_TIMESTAMP ],
192 datatype : [ OILS_RPT_DTYPE_TIMESTAMP ],
197 datatype : [ OILS_RPT_DTYPE_TIMESTAMP ],
198 label : 'Quarters ago'
201 /* int / float transforms ----------------------------------- */
203 datatype : [ OILS_RPT_DTYPE_INT, OILS_RPT_DTYPE_FLOAT, OILS_RPT_DTYPE_MONEY ],
209 datatype : [ OILS_RPT_DTYPE_INT, OILS_RPT_DTYPE_FLOAT, OILS_RPT_DTYPE_MONEY ],
215 datatype : [ OILS_RPT_DTYPE_INT, OILS_RPT_DTYPE_FLOAT ],
220 datatype : [ OILS_RPT_DTYPE_FLOAT ],
221 label : 'Drop trailing decimals'
225 function getTransforms(args) {
226 var dtype = args.datatype;
227 var agg = args.aggregate;
228 var tforms = OILS_RPT_TRANSFORMS;
229 var nonagg = args.non_aggregate;
231 var keys = getKeys(OILS_RPT_TRANSFORMS)
234 for( var i = 0; i < keys.length; i++ ) {
236 var obj = OILS_RPT_TRANSFORMS[key];
237 if( agg && !nonagg && !obj.aggregate ) continue;
238 if( !agg && nonagg && obj.aggregate ) continue;
239 if( !dtype && obj.datatype.length > 0 ) continue;
240 if( dtype && obj.datatype.length > 0 && transformIsForDatatype(key,dtype).length == 0 ) continue;
248 function transformIsForDatatype(tform, dtype) {
249 var obj = OILS_RPT_TRANSFORMS[tform];
250 return grep(function(d) { return (d == dtype) }, obj.datatype);