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)'
97 datatype : [OILS_RPT_DTYPE_STRING, 'text'],
98 label : 'First contiguous non-space string'
101 /* timestamp transforms ----------------------- */
103 datatype : [ OILS_RPT_DTYPE_TIMESTAMP ],
104 label : 'Day of Week',
109 datatype : [ OILS_RPT_DTYPE_TIMESTAMP ],
110 label : 'Day of Month',
112 regex : /^[0-9]{1,2}$/
116 datatype : [ OILS_RPT_DTYPE_TIMESTAMP ],
117 label : 'Day of Year',
119 regex : /^[0-9]{1,3}$/
123 datatype : [ OILS_RPT_DTYPE_TIMESTAMP ],
124 label : 'Week of Year',
126 regex : /^[0-9]{1,2}$/
130 datatype : [ OILS_RPT_DTYPE_TIMESTAMP ],
131 label : 'Month of Year',
137 datatype : [ OILS_RPT_DTYPE_TIMESTAMP ],
138 label : 'Quarter of Year',
143 datatype : [ OILS_RPT_DTYPE_TIMESTAMP ],
144 label : 'Hour of day',
150 datatype : [ OILS_RPT_DTYPE_TIMESTAMP ],
152 regex : /^\d{4}-\d{2}-\d{2}$/,
154 cal_format : '%Y-%m-%d',
159 datatype : [ OILS_RPT_DTYPE_TIMESTAMP ],
160 label : 'Year + Month',
161 regex : /^\d{4}-\d{2}$/,
163 cal_format : '%Y-%m',
168 datatype : [ OILS_RPT_DTYPE_TIMESTAMP ],
177 datatype : [ OILS_RPT_DTYPE_TIMESTAMP ],
181 cal_format : '%Y-%m-$d %H',
186 datatype : [ OILS_RPT_DTYPE_TIMESTAMP ],
192 datatype : [ OILS_RPT_DTYPE_TIMESTAMP ],
197 datatype : [ OILS_RPT_DTYPE_TIMESTAMP ],
202 datatype : [ OILS_RPT_DTYPE_TIMESTAMP ],
207 datatype : [ OILS_RPT_DTYPE_TIMESTAMP ],
208 label : 'Quarters ago'
211 /* int / float transforms ----------------------------------- */
213 datatype : [ OILS_RPT_DTYPE_INT, OILS_RPT_DTYPE_FLOAT, OILS_RPT_DTYPE_MONEY ],
219 datatype : [ OILS_RPT_DTYPE_INT, OILS_RPT_DTYPE_FLOAT, OILS_RPT_DTYPE_MONEY ],
225 datatype : [ OILS_RPT_DTYPE_INT, OILS_RPT_DTYPE_FLOAT ],
230 datatype : [ OILS_RPT_DTYPE_FLOAT ],
231 label : 'Drop trailing decimals'
235 function getTransforms(args) {
236 var dtype = args.datatype;
237 var agg = args.aggregate;
238 var tforms = OILS_RPT_TRANSFORMS;
239 var nonagg = args.non_aggregate;
241 var keys = getKeys(OILS_RPT_TRANSFORMS)
244 for( var i = 0; i < keys.length; i++ ) {
246 var obj = OILS_RPT_TRANSFORMS[key];
247 if( agg && !nonagg && !obj.aggregate ) continue;
248 if( !agg && nonagg && obj.aggregate ) continue;
249 if( !dtype && obj.datatype.length > 0 ) continue;
250 if( dtype && obj.datatype.length > 0 && transformIsForDatatype(key,dtype).length == 0 ) continue;
258 function transformIsForDatatype(tform, dtype) {
259 var obj = OILS_RPT_TRANSFORMS[tform];
260 return grep(function(d) { return (d == dtype) }, obj.datatype);