From: erickson Date: Thu, 21 Sep 2006 20:45:42 +0000 (+0000) Subject: adding a top level index-style file X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=47e6fea99ddbee8348e204c1e4c3c8dd66036b21;p=Evergreen.git adding a top level index-style file adding the base transform template files added some more transform handling logic to base code git-svn-id: svn://svn.open-ils.org/ILS/trunk@6182 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- diff --git a/Open-ILS/web/reports/oils_rpt.xhtml b/Open-ILS/web/reports/oils_rpt.xhtml new file mode 100644 index 0000000000..39c2e7725d --- /dev/null +++ b/Open-ILS/web/reports/oils_rpt.xhtml @@ -0,0 +1,58 @@ + + + +]> + + + + + Evergreen: Reports + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ You are logged in as +
+ +
+ Build a New Report +
+ + + + diff --git a/Open-ILS/web/reports/oils_rpt_builder.js b/Open-ILS/web/reports/oils_rpt_builder.js index d8239137c8..0856a0f415 100644 --- a/Open-ILS/web/reports/oils_rpt_builder.js +++ b/Open-ILS/web/reports/oils_rpt_builder.js @@ -13,12 +13,15 @@ function oilsInitReportBuilder() { } function oilsReportBuilderReset() { + var n = (oilsRpt) ? oilsRpt.name : ""; oilsRpt = new oilsReport(); + oilsRpt.name = n; oilsRptDisplaySelector = DOM.oils_rpt_display_selector; oilsRptFilterSelector = DOM.oils_rpt_filter_selector; removeChildren(oilsRptDisplaySelector); removeChildren(oilsRptFilterSelector); oilsRptDebug(); + oilsRptResetParams(); } /* returns just the column name */ @@ -62,7 +65,7 @@ function oilsRptMakeLabel(path) { /* adds an item to the display window */ -function oilsAddRptDisplayItem(path, name) { +function oilsAddRptDisplayItem(path, name, tform) { if( ! oilsAddSelectorItem(oilsRptDisplaySelector, path, name) ) return; @@ -71,11 +74,17 @@ function oilsAddRptDisplayItem(path, name) { var param = oilsRptNextParam(); /* add this item to the select blob */ - oilsRpt.def.select.push( { + var sel = { relation:oilsRptPathRel(path), - column:oilsRptPathCol(path), alias:param - }); + }; + + if( tform ) { + sel.column = {}; + sel.column[tform] = oilsRptPathCol(path); + } else { sel.column = oilsRptPathCol(path); } + + oilsRpt.def.select.push(sel); mergeObjects( oilsRpt.def.from, oilsRptBuildFromClause(path)); oilsRpt.params[param] = name; @@ -85,10 +94,10 @@ function oilsAddRptDisplayItem(path, name) { /* takes a column path and builds a from-clause object for the path */ function oilsRptBuildFromClause(path) { var parts = path.split(/-/); - //var obj = {from : {}}; var obj = {}; var tobj = obj; var newpath = ""; + for( var i = 0; i < parts.length; i += 2 ) { var cls = parts[i]; var col = parts[i+1]; @@ -130,8 +139,13 @@ function oilsDelSelectedDisplayItems() { function(i) { for( var j = 0; j < list.length; j++ ) { var d = list[j]; - if( oilsRptPathRel(d) == i.relation - && oilsRptPathCol(d) == i.column ) { + var col = i.column; + + /* if this columsn has a transform, it will be an object { tform => column } */ + if( typeof col != 'string' ) + for( var c in col ) col = col[c]; + + if( oilsRptPathRel(d) == i.relation && oilsRptPathCol(d) == col ) { var param = (i.alias) ? i.alias.match(/::PARAM\d*/) : null; if( param ) delete oilsRpt.params[param]; return false; @@ -140,10 +154,15 @@ function oilsDelSelectedDisplayItems() { return true; } ); - if(!oilsRpt.def.select) oilsRpt.def.select = []; - for( var j = 0; j < list.length; j++ ) - oilsRptPruneFromClause(list[j]); + if(!oilsRpt.def.select) { + oilsRpt.def.select = []; + oilsReportBuilderReset(); + + } else { + for( var j = 0; j < list.length; j++ ) + oilsRptPruneFromClause(list[j]); + } oilsRptDebug(); } @@ -249,6 +268,8 @@ function oilsRptDrawDataWindow(path) { function(){oilsRptHideEditorDivs();unHideMe(DOM.oils_rpt_filter_div)}; DOM.oils_rpt_agg_filter_tab.onclick = function(){oilsRptHideEditorDivs();unHideMe(DOM.oils_rpt_agg_filter_div)}; + + DOM.oils_rpt_tform_tab.onclick(); } @@ -258,14 +279,38 @@ function oilsRptDrawTransformWindow(path, col, cls, field) { DOM.oils_rpt_tform_label_input.value = oilsRptMakeLabel(path); DOM.oils_rpt_tform_submit.onclick = - function(){ oilsAddRptDisplayItem(path, DOM.oils_rpt_tform_label_input.value) }; + function(){ + var tform = oilsRptGetTform(); + tform = (tform == 'raw') ? null : tform; + oilsAddRptDisplayItem(path, DOM.oils_rpt_tform_label_input.value, tform) + }; DOM.oils_rpt_tform_label_input.focus(); DOM.oils_rpt_tform_label_input.select(); + oilsRptHideTformFields(); - if( field.datatype == 'timestamp' ) - unHideMe(DOM.oils_rpt_tform_date_div); + _debug("Transforming item with datatype "+field.datatype); + unHideMe($('oils_rpt_tform_'+field.datatype+'_div')); + unHideMe($('oils_rpt_tform_'+field.datatype+'_raw')); + $('oils_rpt_tform_'+field.datatype+'_raw').checked = true; } +function oilsRptHideTformFields() { + for( var t in oilsRptTransforms ) { + hideMe($('oils_rpt_tform_'+t+'_div')); + for( var i in oilsRptTransforms[t] ) { + _debug('oils_rpt_tform_'+t+'_'+oilsRptTransforms[t][i]); + $('oils_rpt_tform_'+t+'_'+oilsRptTransforms[t][i]).checked = false; + } + } +} +function oilsRptGetTform() { + for( var t in oilsRptTransforms ) + for( var i in oilsRptTransforms[t] ) + if( $('oils_rpt_tform_'+t+'_'+oilsRptTransforms[t][i]).checked ) + return oilsRptTransforms[t][i]; + return null; +} +; diff --git a/Open-ILS/web/reports/oils_rpt_builder.xhtml b/Open-ILS/web/reports/oils_rpt_builder.xhtml index 527c08bc66..31f776a41a 100644 --- a/Open-ILS/web/reports/oils_rpt_builder.xhtml +++ b/Open-ILS/web/reports/oils_rpt_builder.xhtml @@ -108,6 +108,7 @@
Select how this field should be displayed:
+

diff --git a/Open-ILS/web/reports/oils_rpt_tform_date.xhtml b/Open-ILS/web/reports/oils_rpt_tform_date.xhtml new file mode 100644 index 0000000000..dbd75a6eaa --- /dev/null +++ b/Open-ILS/web/reports/oils_rpt_tform_date.xhtml @@ -0,0 +1,11 @@ +
+ Raw Timestamp
+ Month Trunc
+ Months Ago
+ Quarters Ago
+ Age
+ Count
+ Count Distinct
+ Min
+ Max
+
diff --git a/Open-ILS/web/reports/oils_rpt_tform_numeric.xhtml b/Open-ILS/web/reports/oils_rpt_tform_numeric.xhtml new file mode 100644 index 0000000000..0a7c114ed0 --- /dev/null +++ b/Open-ILS/web/reports/oils_rpt_tform_numeric.xhtml @@ -0,0 +1,9 @@ +
+ Full Data
+ Full Data
+ Full Data
+ Count
+ Count Distinct
+ Min
+ Max
+
diff --git a/Open-ILS/web/reports/oils_rpt_tform_string.xhtml b/Open-ILS/web/reports/oils_rpt_tform_string.xhtml new file mode 100644 index 0000000000..516059a854 --- /dev/null +++ b/Open-ILS/web/reports/oils_rpt_tform_string.xhtml @@ -0,0 +1,8 @@ +
+ Full Data
+ Count
+ Count Distinct
+ Min
+ Max
+ Substring
+
diff --git a/Open-ILS/web/reports/oils_rpt_utils.js b/Open-ILS/web/reports/oils_rpt_utils.js index 8f89378b59..c1f966a4f9 100644 --- a/Open-ILS/web/reports/oils_rpt_utils.js +++ b/Open-ILS/web/reports/oils_rpt_utils.js @@ -8,6 +8,10 @@ function oilsRptNextParam() { return '::PARAM'+ (oilsRptID2++); } +function oilsRptResetParams() { + oilsRptID2 = 0; +} + function nodeText(id) { if($(id)) return $(id).innerHTML; diff --git a/Open-ILS/web/reports/oils_rpt_vars.js b/Open-ILS/web/reports/oils_rpt_vars.js index 9e2ed3981a..5170712137 100644 --- a/Open-ILS/web/reports/oils_rpt_vars.js +++ b/Open-ILS/web/reports/oils_rpt_vars.js @@ -32,3 +32,22 @@ var oilsPageYMid; var oilsIDLReportsNS = 'http://open-ils.org/spec/opensrf/IDL/reporter/v1'; var oilsIDLPersistNS = 'http://open-ils.org/spec/opensrf/IDL/persistance/v1'; + +/* transforms for the different data types */ +var oilsRptTransforms = { + 'string' : [ 'substring' ], + 'numeric' : [ 'sum', 'average' ], + 'timestamp' : [ 'month_trunc', 'months_ago', 'quarters_ago', 'age' ], + 'all' : [ 'raw', 'count', 'count_distinct', 'min', 'max' ] +}; + +/* for ease of use, shove everything in the 'all' slot into the other tforms */ +for( var t in oilsRptTransforms ) { + if( t == 'all' ) continue; + for( var a in oilsRptTransforms['all'] ) + oilsRptTransforms[t].push( oilsRptTransforms['all'][a] ); +} +delete oilsRptTransforms.all; + + +