123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597 |
- /****************************************************************************************************************************
- 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;
- }
|