/****************************************************************************************************************************
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 +=
"" +
"" +
"" +
"" + 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 =
'';
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;
}