/**************************************************************************************************************************** Licensed Materials - Property of IBM BI and PM: QFW © Copyright IBM Corp. 2005, 2010 US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp. *****************************************************************************************************************************/ var G_QanReportGenerator = {}; G_QanReportGenerator.F_convertQueryToReportSpec = function( sV5Command ) { var v_docCommandXML = U_XML.F_LoadString( D_XmlError, sV5Command, false, true ); var v_nModelPath = v_docCommandXML.selectSingleNode( "./command/*/querySet/modelPath" ); var v_sReportSpec = '' + U_XML.F_SerializeNode( v_nModelPath ) + '' + '' + '' + '' + '' + '' + '' + '' + ''; var v_nQRDs = v_docCommandXML.selectNodes( "./command/*/querySet/queryResultDefinitions/queryResultDefinition" ); for ( var iQRD = 0; iQRD < v_nQRDs.length; iQRD++ ) { v_sReportSpec += this.f_convertQRD( v_nQRDs.item( iQRD ) ); } v_sReportSpec += '' + '' + '' + ''; v_sReportSpec += '' + '' + '<script> '+ // 'debugger; ' + // ' document.body.onload = function() { if (parent.adjustResultViewer) parent.adjustResultViewer(window); }; ' + ' setTimeout( function() { if (parent.adjustResultViewer) parent.adjustResultViewer(window); }, 10 )' + // ' document.body.onreadystatechange = function() { alert(\'onreadystatechange\'); }; ' + ' </script>' + '' + ''; v_sReportSpec += '' + '' + '' + '' + '' + '' + ''; var v_nQueries = v_docCommandXML.selectSingleNode( "./command/*/querySet/queries" ); var v_sQueries = U_XML.F_SerializeNode( v_nQueries ); v_sReportSpec += G_QanReportGenerator.f_removeQueryExtensions( v_sQueries ); v_sReportSpec += ''; return v_sReportSpec; } G_QanReportGenerator.f_removeQueryExtensions = function( sQueries ) { var v_sQuery = sQueries.replace( /\]*\>/g, "" ); v_sQuery = v_sQuery.replace( /rID=\"[^\"]\"/g, "" ); v_sQuery = v_sQuery.replace( /orgRollupAggregate=\"[^\"]*\"/g, "" ); return v_sQuery; } G_QanReportGenerator.f_convertQRD = function( nV5QRD ) { var v_nV5Edges = nV5QRD.selectNodes( "edges/edge" ); if( v_nV5Edges.length == 1 ) { return G_QanReportGenerator.f_convertListQRD( nV5QRD, v_nV5Edges[0] ); } else return G_QanReportGenerator.f_convertCrosstabQRD( nV5QRD, v_nV5Edges ); } G_QanReportGenerator.f_convertListQRD = function( nV5QRD, nV5Edge ) { var v_sList = '' + ''; this.m_sListColumns = ""; this.m_aListColumns = []; G_QanReportGenerator.f_collectListItems( nV5Edge ); var v_nV5Valueset = nV5Edge.selectSingleNode( "edgeGroups/edgeGroup/valueSets/valueSet" ); var v_sListGroups = ""; if( v_nV5Valueset && v_nV5Valueset.getAttribute("refDataItem") ) { v_sListGroups = ""; v_sListGroups += G_QanReportGenerator.f_convertListValueset( v_nV5Valueset, 0 ); v_sListGroups += ""; } if( v_nV5Valueset ) { var v_sOverallGroup = G_QanReportGenerator.f_convertOverallHeaderAndFooter( v_nV5Valueset ); if( v_sOverallGroup ) v_sListGroups += "" + v_sOverallGroup + ""; } var v_nDetailSort = nV5Edge.selectSingleNode( ".//edgeGroups/edgeGroup/valueSets/valueSet[not(@refDataItem)]/groupSort" ) var v_sDetailSort = G_QanReportGenerator.f_convertGroupSort( v_nDetailSort ); v_sList += '' + this.m_sListColumns + '' + ((v_sListGroups)? v_sListGroups: "") + v_sDetailSort + ''; return v_sList; } G_QanReportGenerator.f_generateFHItem = function( sItemName, bIsStaticValue, bIsFirstPos, iSpan, sAssociatedItems ) { var v_sCell = "" + "" + "" + ""; if( bIsStaticValue ) v_sCell += "" + sItemName.F_XMLEncode() + ""; else v_sCell += ""; v_sCell += "" + "" + sAssociatedItems + "" + "" + ""; return v_sCell; } G_QanReportGenerator.f_generateAssociatedColumn = function( sItemName ) { var v_sAsscociatedColumnBlock = "" + "" + "" + "" + "" + sItemName.F_XMLEncode() + ": " + "" + "" + "" + "" + "" + "" + "" + "" + ""; return v_sAsscociatedColumnBlock; } G_QanReportGenerator.f_convertFooterAndHeader = function( nV5HeaderFooter, sBlockName, iGroupOrdinal, bIsOverall ) { if( !nV5HeaderFooter ) return ""; var v_sFooterHeader = "<" + sBlockName + ">" + "" + "" + ""; var v_nlV5BlockItems = nV5HeaderFooter.selectNodes( "dataItemRef" ); var v_aItemPositions = []; if( !bIsOverall ) v_aItemPositions[0] = this.m_aListColumns[iGroupOrdinal]; var v_sNotAlignedColumns = ""; for( var i = 0; i < v_nlV5BlockItems.length; ++i ) { var v_sItemName = v_nlV5BlockItems[i].getAttribute( "refDataItem" ); var v_iItemIndex = this.m_aListColumns.indexOf( v_sItemName ); if( v_iItemIndex > iGroupOrdinal ) v_aItemPositions[v_iItemIndex-iGroupOrdinal] = v_sItemName; } for( var i = 0; i < v_nlV5BlockItems.length; ++i ) { var v_sItemName = v_nlV5BlockItems[i].getAttribute( "refDataItem" ); var v_iItemIndex = this.m_aListColumns.indexOf( v_sItemName ); if( v_iItemIndex > iGroupOrdinal ) continue; var v_sNonAggrName = v_sItemName.replace( /^(Aggregate|Total|Count|Average|Minimum|Maximum|Calculated)\(/i, "" ); var v_sNonAggrName = v_sNonAggrName.replace( /\)$/, "" ); var v_iItemIndex = this.m_aListColumns.indexOf( v_sNonAggrName ); if( v_iItemIndex > iGroupOrdinal && !v_aItemPositions[v_iItemIndex-iGroupOrdinal] ) { v_aItemPositions[v_iItemIndex-iGroupOrdinal] = v_sItemName; continue; } v_sNotAlignedColumns += G_QanReportGenerator.f_generateAssociatedColumn( v_sItemName ); } for( var pos = 0; pos < v_aItemPositions.length; ++pos ) { if( !v_aItemPositions[pos] && !( bIsOverall && pos == 0 ) ) continue; for( var nextPos = pos + 1; nextPos < v_aItemPositions.length; ++nextPos ) if( v_aItemPositions[nextPos] ) break; if( bIsOverall && pos == 0 && !v_aItemPositions[pos] ) { v_sFooterHeader += G_QanReportGenerator.f_generateFHItem( "Summary: ", true, ( pos == 0 ), nextPos - pos, ( pos == 0 )? v_sNotAlignedColumns: "" ); continue; } v_sFooterHeader += G_QanReportGenerator.f_generateFHItem( v_aItemPositions[pos], false, ( pos == 0 ), nextPos - pos, ( pos == 0 )? v_sNotAlignedColumns: "" ); } v_sFooterHeader += "" + "" + "" + ""; return v_sFooterHeader; } G_QanReportGenerator.f_convertOverallHeaderAndFooter = function( nV5Valueset ) { var v_sListGroup = ""; var v_nV5Header = nV5Valueset.selectSingleNode( "groupHeader" ); v_sListGroup += G_QanReportGenerator.f_convertFooterAndHeader( v_nV5Header, "listHeader", 0, true ); var v_nV5Footer = nV5Valueset.selectSingleNode( "groupFooter" ); v_sListGroup += G_QanReportGenerator.f_convertFooterAndHeader( v_nV5Footer, "listFooter", 0, true ); return v_sListGroup; } G_QanReportGenerator.f_convertListValueset = function( nV5Valueset, iGroupOrdinal ) { var v_sItemName = nV5Valueset.getAttribute("refDataItem"); if( !v_sItemName ) return ""; var v_nV5NestedValueset = nV5Valueset.selectSingleNode( "../../edgeGroups/edgeGroup/valueSets/valueSet" ); var v_sListGroup = ''; if( v_nV5NestedValueset ) { var v_nV5Header = v_nV5NestedValueset.selectSingleNode( "groupHeader" ); v_sListGroup += G_QanReportGenerator.f_convertFooterAndHeader( v_nV5Header, "listHeader", iGroupOrdinal ); var v_nV5Footer = v_nV5NestedValueset.selectSingleNode( "groupFooter" ); v_sListGroup += G_QanReportGenerator.f_convertFooterAndHeader( v_nV5Footer, "listFooter", iGroupOrdinal ); } v_sListGroup += G_QanReportGenerator.f_convertGroupSort( nV5Valueset.selectSingleNode( "groupSort" ) ); v_sListGroup += ''; // this.m_sListColumns += G_QanReportGenerator.f_generateListColumn( v_sItemName ); if( v_nV5NestedValueset ) v_sListGroup += G_QanReportGenerator.f_convertListValueset( v_nV5NestedValueset, iGroupOrdinal + 1 ); return v_sListGroup; } G_QanReportGenerator.f_convertDetailGroup = function( nV5Edge ) { } G_QanReportGenerator.f_collectListItems = function( nV5Edge ) { var v_nlV5GroupItems = nV5Edge.selectNodes( ".//edgeGroups/edgeGroup/valueSets/valueSet[@refDataItem]" ); for( var i = 0; i < v_nlV5GroupItems.length; ++i ) { var v_sColumnName = v_nlV5GroupItems[i].getAttribute("refDataItem"); this.m_sListColumns += G_QanReportGenerator.f_generateListColumn( v_sColumnName, true ); } var v_nlV5DetailItems = nV5Edge.selectNodes( ".//edgeGroups/edgeGroup/valueSets/valueSet[not(@refDataItem)]/groupBody/dataItemRef" ); for( var i = 0; i < v_nlV5DetailItems.length; ++i ) { var v_sColumnName = v_nlV5DetailItems[i].getAttribute("refDataItem") ; this.m_sListColumns += G_QanReportGenerator.f_generateListColumn( v_sColumnName ); } } G_QanReportGenerator.f_convertGroupSort = function( nV5GroupSort ) { if( !nV5GroupSort ) return ""; var v_sGroupSort = ""; var v_nlSortItems = nV5GroupSort.selectNodes( "sortItem" ); for( var i = 0; i < v_nlSortItems.length; ++i ) { v_sGroupSort += v_nlSortItems[i].xml; } v_sGroupSort += ""; return v_sGroupSort; } G_QanReportGenerator.f_generateListColumn = function( sColumnName, bIsGroupingColumn ) { this.m_aListColumns.push( sColumnName ); var v_sListColumn = '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + ''; if( bIsGroupingColumn ) { v_sListColumn += ''; } v_sListColumn += '' + ''; return v_sListColumn; } G_QanReportGenerator.f_convertCrosstabQRD = function( nV5QRD, v_nV5Edges ) { var v_sCrosstab = '' + '' + ''; if( v_nV5Edges.length >= 3 ) { var v_nV5Valuesets = v_nV5Edges[2].selectNodes( ".//valueSet[@refDataItem]" ); if( v_nV5Valuesets.length == 1 ) { v_sCrosstab += '' + '' + '' + '' + ''; } } v_sCrosstab += '' + '' + '' + ''; if( v_nV5Edges.length >= 2 ) { var v_sValuesets = ""; var v_nV5Valuesets = v_nV5Edges[1].selectNodes( "edgeGroups/edgeGroup/valueSets/valueSet" ); for( var iVS = 0; iVS < v_nV5Valuesets.length; ++iVS ) { v_sValuesets += G_QanReportGenerator.f_convertValueset( v_nV5Valuesets[iVS] ); } if( v_sValuesets ) v_sCrosstab += '' + v_sValuesets + ''; } v_sCrosstab += '' + '' + '' + '' + '' + '' + '' + '' + '' + ''; if( v_nV5Edges.length >= 3 ) { var v_nV5Valuesets = v_nV5Edges[2].selectNodes( ".//valueSet[@refDataItem]" ); if( v_nV5Valuesets.length == 1 ) { v_sCrosstab += ''; } } if( v_nV5Edges.length >= 1 ) { var v_sValuesets = ""; var v_nV5Valuesets = v_nV5Edges[0].selectNodes( "edgeGroups/edgeGroup/valueSets/valueSet" ); for( var iVS = 0; iVS < v_nV5Valuesets.length; ++iVS ) { v_sValuesets += G_QanReportGenerator.f_convertValueset( v_nV5Valuesets[iVS] ); } if( v_sValuesets ) v_sCrosstab += '' + v_sValuesets + ''; } v_sCrosstab += ''; return v_sCrosstab; } G_QanReportGenerator.f_convertValueset = function( nV5Valueset ) { var v_sValueset = ''; var v_nNestedValuesets = nV5Valueset.selectNodes( "../../edgeGroups/edgeGroup/valueSets/valueSet" ); if( v_nNestedValuesets.length > 0 ) { v_sValueset += ''; var v_sNestedValuesets = ""; for( var iVS = 0; iVS < v_nNestedValuesets.length; ++iVS ) { v_sNestedValuesets += G_QanReportGenerator.f_convertValueset( v_nNestedValuesets[iVS] ); } v_sValueset += v_sNestedValuesets + ''; } var v_nlAssociatedItems = nV5Valueset.selectNodes( "groupBody/dataItemRef" ); var v_sAssociatedItems = ""; for( var iItem = 0; iItem < v_nlAssociatedItems.length; ++iItem ) { v_sAssociatedItems += G_QanReportGenerator.f_generateAssociatedColumn( v_nlAssociatedItems[iItem].getAttribute("refDataItem") ); } var v_sGroupSort = G_QanReportGenerator.f_convertGroupSort( nV5Valueset.selectSingleNode( "groupSort" ) ); v_sValueset += '' + '' + '' + '' + '' + '' + '' + '' + '' + v_sAssociatedItems + '' + v_sGroupSort + '' + '' + ''; return v_sValueset; }