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 ],
92 datatype : [ OILS_RPT_DTYPE_STRING ],
93 label : 'First 5 characters (for US ZIP code)'
96 /* timestamp transforms ----------------------- */
98 datatype : [ OILS_RPT_DTYPE_TIMESTAMP ],
99 label : 'Day of Week',
104 datatype : [ OILS_RPT_DTYPE_TIMESTAMP ],
105 label : 'Day of Month',
107 regex : /^[0-9]{1,2}$/
111 datatype : [ OILS_RPT_DTYPE_TIMESTAMP ],
112 label : 'Day of Year',
114 regex : /^[0-9]{1,3}$/
118 datatype : [ OILS_RPT_DTYPE_TIMESTAMP ],
119 label : 'Week of Year',
121 regex : /^[0-9]{1,2}$/
125 datatype : [ OILS_RPT_DTYPE_TIMESTAMP ],
126 label : 'Month of Year',
132 datatype : [ OILS_RPT_DTYPE_TIMESTAMP ],
133 label : 'Quarter of Year',
138 datatype : [ OILS_RPT_DTYPE_TIMESTAMP ],
139 label : 'Hour of day',
145 datatype : [ OILS_RPT_DTYPE_TIMESTAMP ],
147 regex : /^\d{4}-\d{2}-\d{2}$/,
149 cal_format : '%Y-%m-%d',
154 datatype : [ OILS_RPT_DTYPE_TIMESTAMP ],
155 label : 'Year + Month',
156 regex : /^\d{4}-\d{2}$/,
158 cal_format : '%Y-%m',
163 datatype : [ OILS_RPT_DTYPE_TIMESTAMP ],
172 datatype : [ OILS_RPT_DTYPE_TIMESTAMP ],
176 cal_format : '%Y-%m-$d %H',
181 datatype : [ OILS_RPT_DTYPE_TIMESTAMP ],
187 datatype : [ OILS_RPT_DTYPE_TIMESTAMP ],
192 datatype : [ OILS_RPT_DTYPE_TIMESTAMP ],
197 datatype : [ OILS_RPT_DTYPE_TIMESTAMP ],
202 datatype : [ OILS_RPT_DTYPE_TIMESTAMP ],
203 label : 'Quarters ago'
206 /* int / float transforms ----------------------------------- */
208 datatype : [ OILS_RPT_DTYPE_INT, OILS_RPT_DTYPE_FLOAT, OILS_RPT_DTYPE_MONEY ],
214 datatype : [ OILS_RPT_DTYPE_INT, OILS_RPT_DTYPE_FLOAT, OILS_RPT_DTYPE_MONEY ],
220 datatype : [ OILS_RPT_DTYPE_INT, OILS_RPT_DTYPE_FLOAT ],
225 datatype : [ OILS_RPT_DTYPE_FLOAT ],
226 label : 'Drop trailing decimals'
230 function getTransforms(args) {
231 var dtype = args.datatype;
232 var agg = args.aggregate;
233 var tforms = OILS_RPT_TRANSFORMS;
234 var nonagg = args.non_aggregate;
236 var keys = getKeys(OILS_RPT_TRANSFORMS)
239 for( var i = 0; i < keys.length; i++ ) {
241 var obj = OILS_RPT_TRANSFORMS[key];
242 if( agg && !nonagg && !obj.aggregate ) continue;
243 if( !agg && nonagg && obj.aggregate ) continue;
244 if( !dtype && obj.datatype.length > 0 ) continue;
245 if( dtype && obj.datatype.length > 0 && transformIsForDatatype(key,dtype).length == 0 ) continue;
253 function transformIsForDatatype(tform, dtype) {
254 var obj = OILS_RPT_TRANSFORMS[tform];
255 return grep(function(d) { return (d == dtype) }, obj.datatype);