/**************************************************************************************************************************** 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 = '<report xmlns="http://developer.cognos.com/schemas/report/6.0/" expressionLocale="en">' + U_XML.F_SerializeNode( v_nModelPath ) + '<drillBehavior modelBasedDrillThru="true"/>' + '<layouts>' + '<layout>' + '<reportPages>' + '<page name="Page1">' + '<style>' + '<defaultStyles>' + '<defaultStyle refStyle="pg"/>' + '</defaultStyles>' + '</style>' + '<pageBody>' + '<style>' + '<defaultStyles>' + '<defaultStyle refStyle="pb"/>' + '</defaultStyles>' + '</style>' + '<contents>'; 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 += '</contents>' + '</pageBody>' + '<pageFooter>' + '<contents>'; v_sReportSpec += '<HTMLItem>' + '<dataSource>' + '<staticValue><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></staticValue>' + '</dataSource>' + '</HTMLItem>'; v_sReportSpec += '</contents>' + '<style>' + '<defaultStyles>' + '<defaultStyle refStyle="pf"/>' + '</defaultStyles>' + '<CSS value="padding:0px"/>' + '</style>' + '</pageFooter>' + '</page>' + '</reportPages>' + '</layout>' + '</layouts>'; 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 += '</report>'; return v_sReportSpec; } G_QanReportGenerator.f_removeQueryExtensions = function( sQueries ) { var v_sQuery = sQueries.replace( /\<reportMeasure[^\>]*\>/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 = '<list horizontalPagination="true" name="' + nV5QRD.getAttribute("name").F_XMLEncode() +'" refQuery="'+ nV5QRD.getAttribute("refQuery").F_XMLEncode() + '">' + '<style>' + '<defaultStyles>' + '<defaultStyle refStyle="ls"/>' + '</defaultStyles>' + '<CSS value="border-collapse:collapse"/>' + '</style>'; 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 = "<listGroups>"; v_sListGroups += G_QanReportGenerator.f_convertListValueset( v_nV5Valueset, 0 ); v_sListGroups += "</listGroups>"; } if( v_nV5Valueset ) { var v_sOverallGroup = G_QanReportGenerator.f_convertOverallHeaderAndFooter( v_nV5Valueset ); if( v_sOverallGroup ) v_sListGroups += "<listOverallGroup>" + v_sOverallGroup + "</listOverallGroup>"; } var v_nDetailSort = nV5Edge.selectSingleNode( ".//edgeGroups/edgeGroup/valueSets/valueSet[not(@refDataItem)]/groupSort" ) var v_sDetailSort = G_QanReportGenerator.f_convertGroupSort( v_nDetailSort ); v_sList += '<listColumns>' + this.m_sListColumns + '</listColumns>' + ((v_sListGroups)? v_sListGroups: "") + v_sDetailSort + '</list>'; return v_sList; } G_QanReportGenerator.f_generateFHItem = function( sItemName, bIsStaticValue, bIsFirstPos, iSpan, sAssociatedItems ) { var v_sCell = "<rowCell colSpan=\"" + iSpan + "\">" + "<contents>" + "<textItem>" + "<dataSource>"; if( bIsStaticValue ) v_sCell += "<staticValue>" + sItemName.F_XMLEncode() + "</staticValue>"; else v_sCell += "<dataItemValue refDataItem=\"" + sItemName.F_XMLEncode() + "\"/>"; v_sCell += "</dataSource>" + "</textItem>" + sAssociatedItems + "</contents>" + "<style>" + "<defaultStyles>" + "<defaultStyle refStyle=\"" + ( bIsFirstPos? "of": "os" ) + "\"/>" + "</defaultStyles>" + "</style>" + "</rowCell>"; return v_sCell; } G_QanReportGenerator.f_generateAssociatedColumn = function( sItemName ) { var v_sAsscociatedColumnBlock = "<block>" + "<contents>" + "<textItem>" + "<dataSource>" + "<staticValue>" + sItemName.F_XMLEncode() + ": </staticValue>" + "</dataSource>" + "</textItem>" + "<textItem>" + "<dataSource>" + "<dataItemValue refDataItem=\"" + sItemName.F_XMLEncode() + "\"/>" + "</dataSource>" + "</textItem>" + "</contents>" + "</block>"; return v_sAsscociatedColumnBlock; } G_QanReportGenerator.f_convertFooterAndHeader = function( nV5HeaderFooter, sBlockName, iGroupOrdinal, bIsOverall ) { if( !nV5HeaderFooter ) return ""; var v_sFooterHeader = "<" + sBlockName + ">" + "<listRows>" + "<listRow>" + "<rowCells>"; 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 += "</rowCells>" + "</listRow>" + "</listRows>" + "</" + sBlockName + ">"; 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 = '<listGroup refDataItem="' + v_sItemName.F_XMLEncode() + '">'; 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 += '</listGroup>'; // 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 = "<sortList>"; var v_nlSortItems = nV5GroupSort.selectNodes( "sortItem" ); for( var i = 0; i < v_nlSortItems.length; ++i ) { v_sGroupSort += v_nlSortItems[i].xml; } v_sGroupSort += "</sortList>"; return v_sGroupSort; } G_QanReportGenerator.f_generateListColumn = function( sColumnName, bIsGroupingColumn ) { this.m_aListColumns.push( sColumnName ); var v_sListColumn = '<listColumn>' + '<listColumnTitle>' + '<style>' + '<defaultStyles>' + '<defaultStyle refStyle="lt"/>' + '</defaultStyles>' + '</style>' + '<contents>' + '<textItem>' + '<dataSource>' + '<dataItemLabel refDataItem="'+ sColumnName.F_XMLEncode() +'"/>' + '</dataSource>' + '</textItem>' + '</contents>' + '</listColumnTitle>' + '<listColumnBody>' + '<style>' + '<defaultStyles>' + '<defaultStyle refStyle="lc"/>' + '</defaultStyles>' + '</style>' + '<contents>' + '<textItem>' + '<dataSource>' + '<dataItemValue refDataItem="'+ sColumnName.F_XMLEncode() +'"/>' + '</dataSource>' + '</textItem>' + '</contents>'; if( bIsGroupingColumn ) { v_sListColumn += '<listColumnRowSpan refDataItem="'+ sColumnName.F_XMLEncode() +'"/>'; } v_sListColumn += '</listColumnBody>' + '</listColumn>'; return v_sListColumn; } G_QanReportGenerator.f_convertCrosstabQRD = function( nV5QRD, v_nV5Edges ) { var v_sCrosstab = '<crosstab horizontalPagination="true" name="'+ nV5QRD.getAttribute("name").F_XMLEncode() +'" refQuery="'+ nV5QRD.getAttribute("refQuery").F_XMLEncode() + '">' + '<crosstabCorner>' + '<contents>'; if( v_nV5Edges.length >= 3 ) { var v_nV5Valuesets = v_nV5Edges[2].selectNodes( ".//valueSet[@refDataItem]" ); if( v_nV5Valuesets.length == 1 ) { v_sCrosstab += '<textItem>' + '<dataSource>' + '<dataItemLabel refDataItem="'+ v_nV5Valuesets[0].getAttribute("refDataItem").F_XMLEncode() +'"/>' + '</dataSource>' + '</textItem>'; } } v_sCrosstab += '</contents>' + '<style>' + '<defaultStyles>' + '<defaultStyle refStyle="xm"/>' + '</defaultStyles>' + '</style>' + '</crosstabCorner>' + '<style>' + '<CSS value="border-collapse:collapse"/>' + '<defaultStyles>' + '<defaultStyle refStyle="xt"/>' + '</defaultStyles>' + '</style>'; 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 += '<crosstabRows>' + v_sValuesets + '</crosstabRows>'; } v_sCrosstab += '<crosstabFactCell>' + '<contents>' + '<textItem>' + '<dataSource>' + '<cellValue/>' + '</dataSource>' + '</textItem>' + '</contents>' + '<style>' + '<defaultStyles>' + '<defaultStyle refStyle="mv"/>' + '</defaultStyles>' + '</style>' + '</crosstabFactCell>'; if( v_nV5Edges.length >= 3 ) { var v_nV5Valuesets = v_nV5Edges[2].selectNodes( ".//valueSet[@refDataItem]" ); if( v_nV5Valuesets.length == 1 ) { v_sCrosstab += '<defaultMeasure refDataItem="' + v_nV5Valuesets[0].getAttribute("refDataItem").F_XMLEncode() + '"/>'; } } 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 += '<crosstabColumns>' + v_sValuesets + '</crosstabColumns>'; } v_sCrosstab += '</crosstab>'; return v_sCrosstab; } G_QanReportGenerator.f_convertValueset = function( nV5Valueset ) { var v_sValueset = '<crosstabNode>'; var v_nNestedValuesets = nV5Valueset.selectNodes( "../../edgeGroups/edgeGroup/valueSets/valueSet" ); if( v_nNestedValuesets.length > 0 ) { v_sValueset += '<crosstabNestedNodes>'; 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 + '</crosstabNestedNodes>'; } 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 += '<crosstabNodeMembers>' + '<crosstabNodeMember refDataItem="' + nV5Valueset.getAttribute("refDataItem").F_XMLEncode() + '" >' + '<style>' + '<defaultStyles>' + '<defaultStyle refStyle="ml"/>' + '</defaultStyles>' + '</style>' + '<contents>' + '<textItem>' + '<dataSource>' + '<memberCaption/>' + '</dataSource>' + '</textItem>' + v_sAssociatedItems + '</contents>' + v_sGroupSort + '</crosstabNodeMember>' + '</crosstabNodeMembers>' + '</crosstabNode>'; return v_sValueset; }