1 dojo.requireLocalization("openils.reports", "reports");
3 var rpt_strings = dojo.i18n.getLocalization("openils.reports", "reports");
4 var OILS_RPT_DTYPE_ARRAY = 'array';
5 var OILS_RPT_DTYPE_STRING = 'text';
6 var OILS_RPT_DTYPE_MONEY = 'money';
7 var OILS_RPT_DTYPE_BOOL = 'bool';
8 var OILS_RPT_DTYPE_INT = 'int';
9 var OILS_RPT_DTYPE_ID = 'id';
10 var OILS_RPT_DTYPE_OU = 'org_unit';
11 var OILS_RPT_DTYPE_FLOAT = 'float';
12 var OILS_RPT_DTYPE_TIMESTAMP = 'timestamp';
13 var OILS_RPT_DTYPE_INTERVAL = 'interval';
14 var OILS_RPT_DTYPE_LINK = 'link';
15 var OILS_RPT_DTYPE_NONE = '';
16 var OILS_RPT_DTYPE_NULL = null;
17 var OILS_RPT_DTYPE_UNDEF;
19 var OILS_RPT_DTYPE_ALL = [
20 OILS_RPT_DTYPE_STRING,
25 OILS_RPT_DTYPE_TIMESTAMP,
31 OILS_RPT_DTYPE_INTERVAL,
34 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];
35 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];
37 var OILS_RPT_TRANSFORMS = {
39 datatype : OILS_RPT_DTYPE_ALL,
40 label : rpt_strings.TRANSFORMS_BARE
44 datatype : OILS_RPT_DTYPE_NOT_ID,
45 label : rpt_strings.TRANSFORMS_FIRST
49 datatype : OILS_RPT_DTYPE_NOT_ID,
50 label : rpt_strings.TRANSFORMS_LAST
54 datatype : OILS_RPT_DTYPE_NOT_BOOL,
56 label : rpt_strings.TRANSFORMS_COUNT
60 datatype : OILS_RPT_DTYPE_NOT_BOOL,
62 label : rpt_strings.TRANSFORMS_COUNT_DISTINCT
66 datatype : OILS_RPT_DTYPE_NOT_ID,
68 label : rpt_strings.TRANSFORMS_MIN
72 datatype : OILS_RPT_DTYPE_NOT_ID,
74 label : rpt_strings.TRANSFORMS_MAX
77 /* string transforms ------------------------- */
80 datatype : [ OILS_RPT_DTYPE_STRING ],
82 label : rpt_strings.TRANSFORMS_SUBSTRING
86 datatype : [ OILS_RPT_DTYPE_STRING ],
87 label : rpt_strings.TRANSFORMS_LOWER
91 datatype : [ OILS_RPT_DTYPE_STRING ],
92 label : rpt_strings.TRANSFORMS_UPPER
96 datatype : [ OILS_RPT_DTYPE_STRING ],
97 label : rpt_strings.TRANSFORMS_FIRST5
101 datatype : [OILS_RPT_DTYPE_STRING, 'text'],
102 label : rpt_strings.TRANSFORMS_FIRST_WORD
105 /* timestamp transforms ----------------------- */
107 datatype : [ OILS_RPT_DTYPE_TIMESTAMP ],
108 label : rpt_strings.TRANSFORMS_DOW,
113 datatype : [ OILS_RPT_DTYPE_TIMESTAMP ],
114 label : rpt_strings.TRANSFORMS_DOM,
116 regex : /^[0-9]{1,2}$/
120 datatype : [ OILS_RPT_DTYPE_TIMESTAMP ],
121 label : rpt_strings.TRANSFORMS_DOY,
123 regex : /^[0-9]{1,3}$/
127 datatype : [ OILS_RPT_DTYPE_TIMESTAMP ],
128 label : rpt_strings.TRANSFORMS_WOY,
130 regex : /^[0-9]{1,2}$/
134 datatype : [ OILS_RPT_DTYPE_TIMESTAMP ],
135 label : rpt_strings.TRANSFORMS_MOY,
141 datatype : [ OILS_RPT_DTYPE_TIMESTAMP ],
142 label : rpt_strings.TRANSFORMS_QOY,
147 datatype : [ OILS_RPT_DTYPE_TIMESTAMP ],
148 label : rpt_strings.TRANSFORMS_HOD,
154 datatype : [ OILS_RPT_DTYPE_TIMESTAMP ],
155 label : rpt_strings.TRANSFORMS_DATE,
156 regex : /^\d{4}-\d{2}-\d{2}$/,
158 cal_format : '%Y-%m-%d',
163 datatype : [ OILS_RPT_DTYPE_TIMESTAMP ],
164 label : rpt_strings.TRANSFORMS_MONTH_TRUNC,
165 regex : /^\d{4}-\d{2}$/,
167 cal_format : '%Y-%m',
172 datatype : [ OILS_RPT_DTYPE_TIMESTAMP ],
173 label : rpt_strings.TRANSFORMS_YEAR_TRUNC,
181 datatype : [ OILS_RPT_DTYPE_TIMESTAMP ],
182 label : rpt_strings.TRANSFORMS_HOUR_TRUNC,
185 cal_format : '%Y-%m-$d %H',
190 datatype : [ OILS_RPT_DTYPE_TIMESTAMP ],
192 label : rpt_strings.TRANSFORMS_DAY_NAME
196 datatype : [ OILS_RPT_DTYPE_TIMESTAMP ],
198 label : rpt_strings.TRANSFORMS_MONTH_NAME
201 datatype : [ OILS_RPT_DTYPE_TIMESTAMP ],
202 label : rpt_strings.TRANSFORMS_AGE
206 datatype : [ OILS_RPT_DTYPE_TIMESTAMP ],
207 label : rpt_strings.TRANSFORMS_MONTHS_AGO
211 datatype : [ OILS_RPT_DTYPE_TIMESTAMP ],
212 label : rpt_strings.TRANSFORMS_QUARTERS_AGO
215 /* int / float transforms ----------------------------------- */
217 datatype : [ OILS_RPT_DTYPE_INT, OILS_RPT_DTYPE_FLOAT, OILS_RPT_DTYPE_MONEY ],
218 label : rpt_strings.TRANSFORMS_SUM,
223 datatype : [ OILS_RPT_DTYPE_INT, OILS_RPT_DTYPE_FLOAT, OILS_RPT_DTYPE_MONEY ],
224 label : rpt_strings.TRANSFORMS_AVERAGE,
229 datatype : [ OILS_RPT_DTYPE_INT, OILS_RPT_DTYPE_FLOAT ],
230 label : rpt_strings.TRANSFORMS_ROUND,
234 datatype : [ OILS_RPT_DTYPE_FLOAT ],
235 label : rpt_strings.TRANSFORMS_INT
239 function getTransforms(args) {
240 var dtype = args.datatype;
241 var agg = args.aggregate;
242 var tforms = OILS_RPT_TRANSFORMS;
243 var nonagg = args.non_aggregate;
245 var keys = getKeys(OILS_RPT_TRANSFORMS)
248 for( var i = 0; i < keys.length; i++ ) {
250 var obj = OILS_RPT_TRANSFORMS[key];
251 if( agg && !nonagg && !obj.aggregate ) continue;
252 if( !agg && nonagg && obj.aggregate ) continue;
253 if( !dtype && obj.datatype.length > 0 ) continue;
254 if( dtype && obj.datatype.length > 0 && transformIsForDatatype(key,dtype).length == 0 ) continue;
262 function transformIsForDatatype(tform, dtype) {
263 var obj = OILS_RPT_TRANSFORMS[tform];
264 return grep(function(d) { return (d == dtype) }, obj.datatype);