From 3773ab338dd4f07a8d6e15397e48d2c6ec0318cc Mon Sep 17 00:00:00 2001 From: erickson Date: Thu, 21 Sep 2006 19:02:22 +0000 Subject: [PATCH] core report types are broken out into a top level report type dropdown git-svn-id: svn://svn.open-ils.org/ILS/trunk@6181 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- Open-ILS/web/reports/oils_rpt.css | 8 +++- Open-ILS/web/reports/oils_rpt.js | 5 ++- Open-ILS/web/reports/oils_rpt_builder.js | 63 +++++++++++++++++------------ Open-ILS/web/reports/oils_rpt_builder.xhtml | 18 +++++++-- Open-ILS/web/reports/oils_rpt_tree.js | 31 +++++++++----- Open-ILS/web/reports/oils_rpt_utils.js | 20 +++++---- Open-ILS/web/reports/oils_rpt_vars.js | 2 + 7 files changed, 98 insertions(+), 49 deletions(-) diff --git a/Open-ILS/web/reports/oils_rpt.css b/Open-ILS/web/reports/oils_rpt.css index 78a5cbcebe..49bf2ea616 100644 --- a/Open-ILS/web/reports/oils_rpt.css +++ b/Open-ILS/web/reports/oils_rpt.css @@ -8,11 +8,14 @@ body { font-size: 9pt; font-family: Helvetica, Arial, Tahoma, sans-serif; font-s font-size: 10pt; } -#oils_rpt_name_div { +#oils_rpt_name_table { vertical-align: middle; - padding: 5px; background: #E0F0F0; margin-bottom: 20px; + width: 100%; +} +#oils_rpt_name_table td { + padding: 5px; } #oils_rpt_table { @@ -127,6 +130,7 @@ button { .oils_rpt_tree_link_ref { color: #A52A2A; + /*color: darkblue;*/ font-family: courier; } diff --git a/Open-ILS/web/reports/oils_rpt.js b/Open-ILS/web/reports/oils_rpt.js index dd3f9dee75..0ce14c472d 100644 --- a/Open-ILS/web/reports/oils_rpt.js +++ b/Open-ILS/web/reports/oils_rpt.js @@ -1,17 +1,20 @@ function oilsInitReports() { + oilsRptIdObjects(); + /* tell FF to capture mouse movements */ document.captureEvents(Event.MOUSEMOVE); document.onmousemove = setMousePos; var cgi = new CGI(); fetchUser(cgi.param('ses')); - $('oils_rpt_user').appendChild(text(USER.usrname())); + DOM.oils_rpt_user.appendChild(text(USER.usrname())); oilsRptDebugEnabled = cgi.param('dbg'); } function oilsCleanupReports() { try {oilsRptDebugWindow.close();} catch(e) {} + DOM = null; } diff --git a/Open-ILS/web/reports/oils_rpt_builder.js b/Open-ILS/web/reports/oils_rpt_builder.js index 3fc3f44882..d8239137c8 100644 --- a/Open-ILS/web/reports/oils_rpt_builder.js +++ b/Open-ILS/web/reports/oils_rpt_builder.js @@ -3,17 +3,24 @@ */ function oilsInitReportBuilder() { oilsInitReports(); - oilsRpt = new oilsReport(); - oilsRptDisplaySelector = $('oils_rpt_display_selector'); - oilsRptFilterSelector = $('oils_rpt_filter_selector'); + oilsReportBuilderReset(); oilsDrawRptTree( function() { - hideMe($('oils_rpt_tree_loading')); - unHideMe($('oils_rpt_table')); + hideMe(DOM.oils_rpt_tree_loading); + unHideMe(DOM.oils_rpt_table); } ); } +function oilsReportBuilderReset() { + oilsRpt = new oilsReport(); + oilsRptDisplaySelector = DOM.oils_rpt_display_selector; + oilsRptFilterSelector = DOM.oils_rpt_filter_selector; + removeChildren(oilsRptDisplaySelector); + removeChildren(oilsRptFilterSelector); + oilsRptDebug(); +} + /* returns just the column name */ function oilsRptPathCol(path) { var parts = path.split(/-/); @@ -201,9 +208,9 @@ function oilsDelSelectedItems(sel) { /* hides the different field editor tabs */ function oilsRptHideEditorDivs() { - hideMe($('oils_rpt_tform_div')); - hideMe($('oils_rpt_filter_div')); - hideMe($('oils_rpt_agg_filter_div')); + hideMe(DOM.oils_rpt_tform_div); + hideMe(DOM.oils_rpt_filter_div); + hideMe(DOM.oils_rpt_agg_filter_div); } @@ -217,43 +224,47 @@ function oilsRptDrawDataWindow(path) { var field = grep(oilsIDL[cls].fields, function(f){return (f.name==col);})[0]; _debug("setting update data window for column "+col+' on class '+cls); - var div = $('oils_rpt_column_editor'); + var div = DOM.oils_rpt_column_editor; + /* set a preliminary top position so the page won't bounce around */ + div.setAttribute('style','top:'+oilsMouseX+'px'); + + /* unhide the div so we can determine the dimensions */ unHideMe(div); + /* don't let them see the floating div until the position is fully determined */ div.style.visibility='hidden'; oilsRptDrawTransformWindow(path, col, cls, field); - $('oils_rpt_column_editor_close_button').onclick = function(){hideMe(div);}; + DOM.oils_rpt_column_editor_close_button.onclick = function(){hideMe(div);}; buildFloatingDiv(div, 600); - div.style.visibility='visible'; - /* focus after all the shifting to make sure the div is at least visible */ - $('oils_rpt_tform_label_input').focus(); + /* now let them see it */ + div.style.visibility='visible'; /* give the tab links behavior */ - $('oils_rpt_tform_tab').onclick = - function(){oilsRptHideEditorDivs();unHideMe($('oils_rpt_tform_div'))}; - $('oils_rpt_filter_tab').onclick = - function(){oilsRptHideEditorDivs();unHideMe($('oils_rpt_filter_div'))}; - $('oils_rpt_agg_filter_tab').onclick = - function(){oilsRptHideEditorDivs();unHideMe($('oils_rpt_agg_filter_div'))}; + DOM.oils_rpt_tform_tab.onclick = + function(){oilsRptHideEditorDivs();unHideMe(DOM.oils_rpt_tform_div)}; + DOM.oils_rpt_filter_tab.onclick = + function(){oilsRptHideEditorDivs();unHideMe(DOM.oils_rpt_filter_div)}; + DOM.oils_rpt_agg_filter_tab.onclick = + function(){oilsRptHideEditorDivs();unHideMe(DOM.oils_rpt_agg_filter_div)}; } /* draws the transform window */ function oilsRptDrawTransformWindow(path, col, cls, field) { - appendClear($('oils_rpt_tform_label'), text(oilsRptMakeLabel(path))); - $('oils_rpt_tform_label_input').value = oilsRptMakeLabel(path); + appendClear(DOM.oils_rpt_tform_label, text(oilsRptMakeLabel(path))); + DOM.oils_rpt_tform_label_input.value = oilsRptMakeLabel(path); - $('oils_rpt_tform_submit').onclick = - function(){ oilsAddRptDisplayItem(path, $('oils_rpt_tform_label_input').value) }; + DOM.oils_rpt_tform_submit.onclick = + function(){ oilsAddRptDisplayItem(path, DOM.oils_rpt_tform_label_input.value) }; - $('oils_rpt_tform_label_input').focus(); - $('oils_rpt_tform_label_input').select(); + DOM.oils_rpt_tform_label_input.focus(); + DOM.oils_rpt_tform_label_input.select(); if( field.datatype == 'timestamp' ) - unHideMe($('oils_rpt_tform_date_div')); + unHideMe(DOM.oils_rpt_tform_date_div); } diff --git a/Open-ILS/web/reports/oils_rpt_builder.xhtml b/Open-ILS/web/reports/oils_rpt_builder.xhtml index 729c5a62c7..527c08bc66 100644 --- a/Open-ILS/web/reports/oils_rpt_builder.xhtml +++ b/Open-ILS/web/reports/oils_rpt_builder.xhtml @@ -63,10 +63,15 @@ -
- Report Name: - -
+ + + + + + + + +
Report Name:
Report Type:
@@ -122,6 +127,11 @@ + + This will destroy the report you are currently constructing. + Are you sure you wish to do this? + + diff --git a/Open-ILS/web/reports/oils_rpt_tree.js b/Open-ILS/web/reports/oils_rpt_tree.js index 27e5a5651f..c053452df9 100644 --- a/Open-ILS/web/reports/oils_rpt_tree.js +++ b/Open-ILS/web/reports/oils_rpt_tree.js @@ -117,24 +117,37 @@ function oilsRptParseFields( node ) { /* shoves the IDL into a UI tree */ function oilsRenderRptTree(callback) { + var sel = DOM.oils_rpt_builder_type_selector; - oilsRptTree = new SlimTree( $('oils_rpt_tree_div'), 'oilsRptTree' ); - var treeId = oilsNextId(); - oilsRptTree.addNode( treeId, -1, nodeText('oils_rpt_tree_label')); for( var i in oilsIDL ) { var data = oilsIDL[i]; if( !data.core ) continue; - var subTreeId = oilsNextId(); - oilsRptTree.addNode( subTreeId, treeId, data.label ); - oilsRenderSubTree( data, subTreeId, 'Display Data', '' ); + insertSelectorVal( sel, -1, data.label, data.name ); } + + sel.onchange = function() { + if(oilsRpt.def.select.length > 0) + if(!confirm(DOM.oils_rpt_confirm_new_report.innerHTML)) + return; + oilsRptRenderClassTree(getSelectorVal(sel)) + oilsReportBuilderReset(); + }; + + sel.onchange(); if( callback ) callback(); } +function oilsRptRenderClassTree(cls) { + var data = oilsIDL[cls]; + removeChildren(DOM.oils_rpt_tree_div); + oilsRptTree = new SlimTree( DOM.oils_rpt_tree_div, 'oilsRptTree' ); + var treeId = oilsNextId(); + oilsRptTree.addNode( treeId, -1, data.label ); + oilsRenderSubTree( data, treeId, '' ); +} -function oilsRenderSubTree( data, subTreeId, rootName, path ) { - _debug("rendering subtree with full path "+path); +function oilsRenderSubTree( data, subTreeId, path ) { for( var f = 0; f < data.fields.length; f++ ) { @@ -173,7 +186,7 @@ function oilsAddLinkTree( parentId, classname, fullpath ) { oilsLinkTreeCache[parentId].push(classname); var data = grep( oilsIDL, function(i) { return ( i.name == classname ); })[0]; - var sid = oilsRenderSubTree( data, parentId, '', fullpath ); + var sid = oilsRenderSubTree( data, parentId, fullpath ); oilsRptTree.open(parentId); } diff --git a/Open-ILS/web/reports/oils_rpt_utils.js b/Open-ILS/web/reports/oils_rpt_utils.js index 8fc2d7b00c..8f89378b59 100644 --- a/Open-ILS/web/reports/oils_rpt_utils.js +++ b/Open-ILS/web/reports/oils_rpt_utils.js @@ -93,13 +93,6 @@ function buildFloatingDiv(div, width) { function mergeObjects( src, obj ) { for( var i in obj ) { - _debug("merging object element: "+i + ' : ' + src[i]); - if( i =='from' ) { - _debug('------------------------------'); - _debug(formatJSON(js2JSON(src[i]))); - _debug(formatJSON(js2JSON(obj[i]))); - _debug('------------------------------'); - } if( typeof obj[i] == 'string' ) { src[i] = obj[i]; } else { @@ -109,3 +102,16 @@ function mergeObjects( src, obj ) { } } + +/* scours the doc for elements with IDs. When it finds one, + it grabs the dom node and sets a reference to the node at DOM[id]; */ +function oilsRptIdObjects(node) { + if(!node) node = document.documentElement; + if( node.nodeType != 1 ) return; + var id = node.getAttribute('id'); + if( id ) eval("DOM."+id+"=$('"+id+"');"); + var children = node.childNodes; + for( var c = 0; c < children.length; c++ ) + oilsRptIdObjects(children[c]); +} + diff --git a/Open-ILS/web/reports/oils_rpt_vars.js b/Open-ILS/web/reports/oils_rpt_vars.js index f4e497988f..9e2ed3981a 100644 --- a/Open-ILS/web/reports/oils_rpt_vars.js +++ b/Open-ILS/web/reports/oils_rpt_vars.js @@ -1,3 +1,5 @@ +/* dom nodes with IDs are inserted into DOM as DOM[id] */ +var DOM = {}; /* JS object version of the IDL */ var oilsIDL; -- 2.11.0