/*
IBM Confidential
OCO Source Materials
IBM Cognos Products: uipe
(C) Copyright IBM Corp. 2014
The source code for this program is not published or otherwise divested of its trade secrets, irrespective of what has been deposited with the U.S. Copyright Office.
*/
var U_Utils = {};
U_Utils.F_CreateQueriesComboBox = function( v_nComboIn, v_nQuerySet, v_bShowEmpty )
{
var v_nComboBox = v_nComboIn ? v_nComboIn : G_ResManager.F_GetResource( 'EmptyCombo' );
this.F_AddQueriesToListView(v_nComboBox.selectSingleNode("listView"), v_nQuerySet, v_bShowEmpty != false);
return v_nComboBox;
};
U_Utils.F_CreateQueryItemsComboBox = function( v_nComboIn, v_nQuery, v_bShowEmpty )
{
var v_nComboBox = v_nComboIn ? v_nComboIn : G_ResManager.F_GetResource( 'EmptyCombo' );
this.F_AddDataItemsToListView(v_nComboBox.selectSingleNode("listView"), v_nQuery, v_bShowEmpty != false);
return v_nComboBox;
};
U_Utils.F_AddQueriesToListView = function( v_nListView, v_nQuerySetIn, v_bShowEmpty, v_bAddDefault )
{
var v_doc = v_nListView.ownerDocument;
var v_nListItems = v_nListView.selectSingleNode( "listItems" );
if ( v_bAddDefault )
{
this.F_AddDefaultListItem( v_nListView );
}
var v_nQuerySet = v_nQuerySetIn ? v_nQuerySetIn : G_ReportSpec.F_GetReportNode().selectSingleNode( "queries" );
if ( v_nQuerySet )
{
var nl = v_nQuerySet.selectNodes( "query/@name" );
var v_iLength = nl.length;
if (v_iLength > 0)
{
for ( var i = 0; i < v_iLength; ++i )
{
var v_nListItem = v_nListItems.appendChild( v_doc.createElement( "listItem" ) );
var v_sName = nl.item( i ).value;
v_nListItem.setAttribute( "label", v_sName );
v_nListItem.setAttribute( "value", v_sName );
v_nListItem.setAttribute( "smallIcon", "query.gif" );
}
return;
}
}
if ( v_bShowEmpty && !v_bAddDefault )
{
var v_nListItem = v_nListItems.appendChild( v_doc.createElement( "listItem" ) );
v_nListItem.setAttribute( "value", "" );
v_nListItem.setAttribute( "idsLabel", "IDS_EMPTY_LISTVIEW" );
}
};
U_Utils.F_AddDataItemsToListView = function( v_nListView, v_nQuery, v_bShowEmpty, v_bAddDefault, v_fnGetValue, v_oExcludeItems )
{
var v_doc = v_nListView.ownerDocument;
var v_nListItems = v_nListView.selectSingleNode( "listItems" );
if ( v_bAddDefault )
{
this.F_AddDefaultListItem( v_nListView );
}
if ( v_nQuery )
{
var nl = v_nQuery.selectNodes( "selection/*" );
var v_iLength = nl.length;
if ( v_iLength > 0 )
{
for ( var i = 0; i < v_iLength; i++ )
{
var v_nDataItem = nl.item( i );
var v_sName = v_nDataItem.getAttribute( "name" );
if ( v_oExcludeItems && v_oExcludeItems[v_sName] )
{
// exlude the item, continue
continue;
}
var v_nListItem = v_nListItems.appendChild( v_doc.createElement( "listItem" ) );
if ( v_nDataItem.getAttribute( "iid" ) )
{
v_nListItem.setAttribute( "roid", v_nDataItem.getAttribute( "iid" ) );
}
v_nListItem.setAttribute( "label", v_sName );
if ( v_fnGetValue )
{
v_nListItem.setAttribute( "value", v_fnGetValue( v_nQuery, v_nDataItem ) );
}
else
{
v_nListItem.setAttribute( "value", v_sName );
}
v_nListItem.setAttribute( "smallIcon", U_DataItem.F_GetImage(v_nDataItem) );
}
return;
}
}
if ( v_bShowEmpty && !v_bAddDefault )
{
var v_nListItem = v_nListItems.appendChild( v_doc.createElement( "listItem" ) );
v_nListItem.setAttribute( "value", "" );
v_nListItem.setAttribute( "idsLabel", "IDS_EMPTY_LISTVIEW" );
}
};
/*
* Set a percent attribute on a node.
* @param n {Node}
* @param v_sTxtID {String} id of text input which contains the value to be validated
* @param v_sAttribute {String} Attribute name of to set on the node
* @param v_iMax {Integer} Optional maximum value. (Defaults to 100)
*/
U_Utils.F_CommitPercent = function( n, v_sTxtID, v_sAttribute, v_iMax )
{
v_iMax = v_iMax || 100;
var v_sValue = document.getElementById( v_sTxtID ).value;
var i = parseInt( v_sValue, 10 );
if ( isNaN( i ) )
{
n.removeAttribute( v_sAttribute );
}
else if ( i > v_iMax )
{
if ( G_HAL.M_oLibraries["hal"]["enableAccessibility"] )
{
n.removeAttribute( v_sAttribute );
}
else
{
U_XML.F_SetAttribute( n, v_sAttribute, v_iMax.toString( 10 ) );
}
}
else
{
U_XML.F_SetAttribute( n, v_sAttribute, i.toString( 10 ) );
}
};
U_Utils.F_ShowLoadingMessage = function( el )
{
el.innerHTML = '
' + G_ResManager.F_GetString( "IDS_HAL_TV_LOADING" ).F_HTMLEncode() + '';
};
U_Utils.F_SetColorButtonColor = function( btn, v_sColor )
{
var div = btn.getElementsByTagName( "DIV" ).item( 0 );
div.className = ( v_sColor == "transparent" ) ? "clsColorButtonDIV_transparent" : "clsColorButtonDIV_normal";
div.style.backgroundColor = v_sColor ? v_sColor : "";
if ( G_HAL.M_oLibraries["hal"]["enableAccessibility"] && v_sColor )
{
U_Accessibility.F_AddAriaHiddenSpan( btn, "aria-describedby", U_DOM.F_GetColorAriaLabel( v_sColor ) );
}
};
U_Utils.F_SetFillButtonBackgroundImage = function( btn, v_sUrl )
{
var div = btn.getElementsByTagName( "DIV" ).item( 0 );
div.className = "clsColorButtonDIV_normal";
div.style.backgroundImage = v_sUrl ? ( "url(" + v_sUrl + ")" ) : "";
};
U_Utils.F_GetFillButtonDimension = function( btn )
{
var div = btn.getElementsByTagName( "DIV" ).item( 0 );
div.className = "clsColorButtonDIV_normal";
return new C_Dimension( div.offsetHeight, div.offsetWidth );
};
U_Utils.F_AddEmptyMessageIfRequired = function( v_nListView )
{
if ( !v_nListView.selectSingleNode( "listItems/listItem" ) )
{
var v_nListItem = G_ResManager.F_GetResource( 'EmptyWithMessage' ).selectSingleNode( "listItems/listItem" );
var d = v_nListView.ownerDocument;
v_nListView.selectSingleNode( "listItems" ).appendChild( U_XML.F_ImportNode( d, v_nListItem ) );
return true;
}
return false;
};
U_Utils.F_AddDefaultListItem = function( v_nListView )
{
var v_nListItems = v_nListView.selectSingleNode( "listItems" );
var v_nListItem = v_nListItems.insertBefore( v_nListView.ownerDocument.createElement( "listItem" ), v_nListItems.selectSingleNode( "listItem" ) );
v_nListItem.setAttribute( "idsLabel", "IDS_PROPVAL_DEFAULT" );
v_nListItem.setAttribute( "value", "" );
};
U_Utils.F_GetSourceTypeListView = function( n, v_bAddNone )
{
var v_nListView = G_ResManager.F_GetResource( 'SourceType' );
return this.F_PopulateSourceTypeListView( v_nListView, n, v_bAddNone );
};
U_Utils.F_PopulateSourceTypeListView = function( v_nListView, n, v_bAddNone )
{
if ( !v_bAddNone )
{
C_ListView.F_RemoveListItemWithValue( v_nListView, "" );
}
var v_nQuery = U_LayoutSpec.F_GetQueryContext( n );
if ( !v_nQuery )
{
C_ListView.F_RemoveListItemWithValue( v_nListView, "dataItemValue" );
C_ListView.F_RemoveListItemWithValue( v_nListView, "dataItemLabel" );
C_ListView.F_RemoveListItemWithValue( v_nListView, "memberCaption" );
C_ListView.F_RemoveListItemWithValue( v_nListView, "cellValue" );
}
else if ( U_XML.F_GetAncestorEx( n, ["crosstabFactCell", "crosstabIntersection", "factCell"] ) )
{
C_ListView.F_RemoveListItemWithValue( v_nListView, "memberCaption" );
if ( U_Chart.F_IsChartNode(n) )
{
C_ListView.F_RemoveListItemWithValue( v_nListView, "cellValue" );
}
}
else if ( U_XML.F_GetAncestorEx( n, ["crosstabNodeMember", "crosstabSpacer", "appCrosstabSummary", "chartNodeMember"] ) )
{
C_ListView.F_RemoveListItemWithValue( v_nListView, "cellValue" );
}
else if (n.nodeName == "marker" || n.nodeName == "baseline" || n.nodeName == "pointChartBaseline" || n.nodeName == "pointChartMarker" ||
n.nodeName == "threeDComboBaseline" || n.nodeName == "threeDScatterBaseline")
{
C_ListView.F_RemoveListItemWithValue( v_nListView, "dataItemLabel" );
C_ListView.F_RemoveListItemWithValue( v_nListView, "memberCaption" );
C_ListView.F_RemoveListItemWithValue( v_nListView, "cellValue" );
}
else
{
C_ListView.F_RemoveListItemWithValue( v_nListView, "memberCaption" );
C_ListView.F_RemoveListItemWithValue( v_nListView, "cellValue" );
}
var v_nParentStaticAppControl = U_ReportApp.F_GetStaticAppControl( n );
if (!v_nParentStaticAppControl)
{
C_ListView.F_RemoveListItemWithValue( v_nListView, "appDataItemValue" );
}
return v_nListView;
};
U_Utils.F_ParseCSV = function( v_sCSV )
{
var v_aRows = [];
var v_aCSVRows = v_sCSV.split( /(\r\n)|\n/g );
for ( var v_iRow = 0; v_iRow < v_aCSVRows.length; v_iRow++ )
{
var v_aColumns = [];
var v_aCSVColumns = v_aCSVRows[v_iRow].split( "," );
for ( var v_iCol = 0; v_iCol < v_aCSVColumns.length; v_iCol++ )
{
v_aColumns.push( v_aCSVColumns[v_iCol].replace( /""/g, '"' ).replace( /(^")|("$)/g, "" ) );
}
v_aRows.push( v_aColumns );
}
return v_aRows;
};
U_Utils.F_PopulateDimensionStructureListView = function(v_nListItems, v_nMetadata, v_sPatternStructure, v_sPatternItem, v_iIndent)
{
var nl = v_nMetadata.selectNodes(v_sPatternStructure);
for (var i = 0; i < nl.length; ++i)
{
var n = nl.item(i);
var v_bContainer = false;
if (!n.selectSingleNode("self::" + v_sPatternItem))
{
if (n.selectSingleNode(".//" + v_sPatternItem))
{
v_bContainer = true;
}
else
{
// if object is container and does not contain items we are looking for then skip it.
continue;
}
}
var v_nListItem = U_XML.F_AppendChild(v_nListItems, "listItem");
var v_sLabel = n.getAttribute("name");
v_nListItem.setAttribute("label", v_sLabel);
v_nListItem.setAttribute("tooltip", v_sLabel);
v_nListItem.setAttribute("value", n.getAttribute("_ref"));
switch (n.nodeName)
{
case "dimension":
v_nListItem.setAttribute("smallIcon", n.getAttribute("type") == "measure" ? "dimension_measure.gif" : "dimension.gif");
break;
case "folder":
case "hierarchyFolder":
v_nListItem.setAttribute("smallIcon", n.getAttribute("isNamespace") == "1" ? "namespace.gif" : "hal/images/tv_folder.gif");
break;
case "hierarchy":
v_nListItem.setAttribute("smallIcon", "hierarchy.gif");
break;
}
if (v_iIndent)
{
v_nListItem.setAttribute("indentLevel", v_iIndent);
}
if (v_bContainer)
{
v_nListItem.setAttribute( "selectable", "false" );
this.F_PopulateDimensionStructureListView(v_nListItems, n, v_sPatternStructure, v_sPatternItem, v_iIndent ? v_iIndent + 1 : 1);
}
}
};
U_Utils.F_PopulateDimensionStructureListView = function(v_nListItems, v_nMetadata, v_sPattern, v_sSelectableNodeName, v_iIndent)
{
var nl = v_nMetadata.selectNodes(v_sPattern);
for (var i = 0; i < nl.length; ++i)
{
var n = nl.item(i);
var v_nListItem = U_XML.F_AppendChild(v_nListItems, "listItem");
var v_sLabel = n.getAttribute("name");
v_nListItem.setAttribute("label", v_sLabel);
v_nListItem.setAttribute("tooltip", v_sLabel);
v_nListItem.setAttribute("value", n.getAttribute("_ref"));
switch (n.nodeName)
{
case "dimension":
v_nListItem.setAttribute("smallIcon", n.getAttribute("type") == "measure" ? "dimension_measure.gif" : "dimension.gif");
break;
case "folder":
case "hierarchyFolder":
v_nListItem.setAttribute("smallIcon", n.getAttribute("isNamespace") == "1" ? "namespace.gif" : "hal/images/tv_folder.gif");
break;
case "hierarchy":
v_nListItem.setAttribute("smallIcon", "hierarchy.gif");
break;
}
if (v_iIndent)
{
v_nListItem.setAttribute("indentLevel", v_iIndent);
}
if (n.nodeName != v_sSelectableNodeName)
{
v_nListItem.setAttribute( "selectable", "false" );
this.F_PopulateDimensionStructureListView(v_nListItems, n, v_sPattern, v_sSelectableNodeName, v_iIndent ? v_iIndent + 1 : 1);
}
}
};
U_Utils.F_IsJavascriptURL = function( s )
{
return Boolean( s.match( /^\s*javascript\s*:/i ) );
};
U_Utils.F_ReplaceStringResources = function(v_nChart)
{
var v_nlStringRes = v_nChart.selectNodes(".//stringRes");
var v_iLength = v_nlStringRes.length;
for (var i = 0; i < v_iLength; i++)
{
var n = v_nlStringRes.item(i);
var v_sID = n.getAttribute("id");
var v_nParent = n.parentNode;
v_nParent.removeChild(n);
var v_nlParams = n.selectNodes("param");
switch (v_nlParams.length)
{
case 0:
v_nParent.text = G_ResManager.F_GetString(v_sID);
break;
case 1:
v_nParent.text = G_ResManager.F_GetString(v_sID, v_nlParams.item(0).text);
break;
case 2:
v_nParent.text = G_ResManager.F_GetString(v_sID, v_nlParams.item(0).text, v_nlParams.item(1).text);
break;
}
}
};
U_Utils.F_GetPaletteGradientAriaLabel = function( v_nListItem )
{
var v_sFromColorLabel = U_DOM.F_GetColorAriaLabel( v_nListItem.getAttribute("FROMCOLOR") );
var v_sToColorLabel = U_DOM.F_GetColorAriaLabel( v_nListItem.getAttribute("TOCOLOR") );
var v_sDirection = v_nListItem.getAttribute("direction");
var v_sDirectionLabel = G_ResManager.F_GetOptionalString( "IDS_PROPVAL_" + v_sDirection ) || "";
return G_ResManager.F_GetString("IDS_AC_PALETTE_GRADIENT", v_sFromColorLabel, v_sToColorLabel, v_sDirectionLabel );
};
U_Utils.F_GetPalettePatternAriaLabel = function( v_nListItem )
{
var v_sForeColorLabel = U_DOM.F_GetColorAriaLabel( v_nListItem.getAttribute("FORECOLOR") );
var v_sBackColorLabel = U_DOM.F_GetColorAriaLabel( v_nListItem.getAttribute("BACKCOLOR") );
var v_sPatternType = v_nListItem.getAttribute("patternType");
var v_sPatternTypeLabel = G_ResManager.F_GetOptionalString( "IDS_AC_PATTERN_" + v_sPatternType ) || "";
return G_ResManager.F_GetString("IDS_AC_PALETTE_PATTERN", v_sForeColorLabel, v_sBackColorLabel, v_sPatternTypeLabel );
};
U_Utils.F_GetPalettePatternTypeString = function( v_nListItem )
{
var v_idsPattern;
var v_sPatternType = v_nListItem.getAttribute( "patternType" );
if ( v_sPatternType )
{
v_idsPattern = "IDS_AC_PATTERN_" + v_sPatternType;
}
else
{
v_idsPattern = v_nListItem.getAttribute( "idsAriaLabel" ) || v_nListItem.getAttribute( "idsTooltip" );
}
return v_idsPattern ? G_ResManager.F_GetOptionalString( v_idsPattern ) : "";
};
U_Utils.F_GetColorByValueAriaLabel = function( v_sColor, v_sBoundary )
{
return G_ResManager.F_GetString("IDS_AC_COLOR_BY_VALUE", U_DOM.F_GetColorAriaLabel( v_sColor ), v_sBoundary );
};
U_Utils.F_GetGradientColorAriaLabel = function( v_sColor, v_sPosition )
{
return G_ResManager.F_GetString("IDS_AC_GRADIENT_COLOR", U_DOM.F_GetColorAriaLabel( v_sColor ), v_sPosition );
};
U_Utils.F_GetElementsByROID = function( v_aElements, el, v_oROIDMap, v_bGetAll, v_bDeepSearch )
{
switch ( el.nodeName )
{
case "HTML":
case "#document":
case "#text":
case "#comment":
return;
}
if ( el.getAttribute( "roid" ) )
{
var v_iSelCount = v_oROIDMap[el.getAttribute( "roid" )];
if (v_iSelCount)
{
if ( !v_bGetAll )
{
v_oROIDMap[el.getAttribute( "roid" )] = v_iSelCount - 1;
}
v_aElements.push( el );
if ( !v_bDeepSearch )
{
return;
}
}
}
for ( var v_elChild = el.firstChild; v_elChild; v_elChild = v_elChild.nextSibling )
{
this.F_GetElementsByROID( v_aElements, v_elChild, v_oROIDMap, v_bGetAll, v_bDeepSearch );
}
};
U_Utils.F_GetAllElementsForNode = function( n, container )
{
var a = [];
var v_oROIDMap = {};
v_oROIDMap[n.getAttribute( "iid" )] = 1;
var v_bGetAll = true;
U_Utils.F_GetElementsByROID( a, container, v_oROIDMap, v_bGetAll );
return a;
};
U_Utils.F_GetCopyLabel = function(v_nFrom, v_nTo) {
if (v_nFrom.getAttribute("smallIcon") != "") {
U_XML.F_CopyAttribute(v_nTo, v_nFrom, "smallIcon");
}
if (v_nFrom.getAttribute("idsLabel") != ""
&& U_XML.F_CopyAttribute(v_nTo, v_nFrom, "idsLabel")) {
return;
}
if (v_nFrom.getAttribute("label") != ""
&& U_XML.F_CopyAttribute(v_nTo, v_nFrom, "label")) {
return;
}
if( v_nFrom.getAttribute("id") )
{
v_nTo.setAttribute("label", v_nFrom.getAttribute("id"));
}
else
{
v_nTo.setAttribute("label", v_nFrom.getAttribute("name"));
}
};