/* *+------------------------------------------------------------------------+ *| Licensed Materials - Property of IBM *| BI and PM: prmt *| (C) Copyright IBM Corp. 2002, 2011 *| *| US Government Users Restricted Rights - Use, duplication or *| disclosure restricted by GSA ADP Schedule Contract with IBM Corp. *| *+------------------------------------------------------------------------+ */ /** This script is used to provide interactivity for the PickTree prompt control This control primary purpose is to support SAP hierarchy variables @private @class */ cognos.Prompt.Control.PickTree = cognos.Prompt.Control.f_extend({ f_initialize: function( v_oProps ) { this._type_ = "cognos.Prompt.Control.PickTree"; this.f_parent( v_oProps ); // call parent's initialize() var v_oPropsComponent = Object.f_extend( {}, v_oProps ); v_oPropsComponent["@required"] = true; v_oPropsComponent["@hideAdornments"] = true; v_oPropsComponent.m_bIsAComponent = true; v_oPropsComponent.m_oOwner = this; v_oPropsComponent._id_ = this.f_getId(); this.m_oTreeArguments = v_oPropsComponent; this.f_initCompleted(); // initialize adornment image this.m_adornmentImg = 'spacer.gif'; }, //validate the input into the control checkData: function() { this.m_bValid = this.m_oTree.m_bValid; this.f_parent(); // call parent's checkData using saved reference. return this.m_bValid; }, clearValues: function() { this.f_parent(); this.f_clear(); }, f_drawCompleted: function() { this.m_oTree.f_drawCompleted(); var v_oPickList = $(this.f_getId("PRMT_PT_HIERARCHIES_")); this.m_oPickList = v_oPickList; PRMTUtils.f_addEvent(v_oPickList, "change", this.f_onChangeTree.bind(this) ); } }); /** * Return the value of the control, which in this case is returning the tree selection */ cognos.Prompt.Control.PickTree.prototype.f_getPV = function() { var v_oTree = this.m_oTree; var v_aPV = []; if ( v_oTree ) { v_aPV = v_oTree.f_getPV(); } return v_aPV; }; /** * Draws the layout *
| Adornment* | * pickList* Tree*
 *	@private
 *	@param {C_PromptElement} v_el Container.
 *	@return {void}
*/
cognos.Prompt.Control.PickTree.prototype.f_drawLayout = function( v_el )
{
	var v_tdLayout = $CE( "td", {}, v_el );
	var v_tbl = $CE( "table", {"border": K_PRMT_DEBUG_TABLEBORDER, "cellPadding":0, "cellSpacing":0, "role":K_PRMT_ARIA_ROLE_PRESENTATION}, v_tdLayout );
	if ( this[K_PRMT_sATTR_DISABLED] )
	{
		v_tbl.f_setProperty( "disabled", "disabled" );
	}
	var v_tbd = $CE( "tbody", {}, v_tbl );
	var v_tr = $CE( "tr", {}, v_tbd );
	var v_td = $CE( "td", {"vAlign":"top", "class": "clsControlLabel pc"}, v_tr );
	if ( this.isRequired() && !this["@hideAdornments"] )
	{
		var v_imgReq = $CE( "img", {
			"src": this.m_sSkin + "/prompting/images/icon_required.gif",
			"class": "clsErrorRequired",
			"vAlign": "top",
			"height": 10,
			"width": 10,
			"border": 0,
			"alt": ""
		}, v_td);
	}
	var v_tdControl = $CE( "td", {}, v_tr );
	this.f_drawPickList( v_tdControl );
	v_tr = $CE( "tr", {}, v_tbd );
	v_td = $CE( "td", {"vAlign":"top", "class": "clsControlLabel pc"}, v_tr );
	$CE("img", {"src": this.m_sSkin + "/prompting/images/spacer.gif", "width": 10, "height": 1, "border": 0, "alt": ""}, v_td);
	this.m_elPrompt =  this.f_drawTree( v_tr );
	return (this.m_elPrompt);
}
/**
 * Draws the drop down to pick the hierarchy 
 *
 *	@private
 *	@param {C_PromptElement} v_el Container.
 *	@return {void}
*/
cognos.Prompt.Control.PickTree.prototype.f_drawPickList = function( v_el )
{
	var v_oContainer = $CE("div", {"id": this.f_getId("PRMT_PT_HIERARCHIES_BOX_")}, v_el);
	var v_oPickList = $CE("select",{"id": this.f_getId("PRMT_PT_HIERARCHIES_"), "class":"clsSelectControl pv"},v_oContainer);
	var v_firstOption = this["@columnName"] && this["@columnName"].length > 0 ? this["@columnName"]:this["@parameter"];
	// draw select options
	var v_choices = this.f_getChildByTagName( "selectHierarchyChoice" );
	var v_selectedHierarchy = ((v_choices && v_choices.c && v_choices.c.length > 0)? v_choices.c[0] : null);
	var v_options = this.f_getChildByTagName( "selectHierarchies" );
	var v_optionEl;
	
	// add the top two lines
	v_optionEl = $CE("option", {}, v_oPickList);
	v_optionEl.f_appendText( G_IsBidiEnabled && this["@contentTextDirection"] ? PRMT_BidiUtils.enforceBidiDirection(v_firstOption, this["@contentTextDirection"]) : v_firstOption );
	v_optionEl = $CE("option", {}, v_oPickList);
	v_optionEl.f_appendText("--------------------------------------------");
		
	if ( v_options && v_options.c && v_options.c.length > 0)
	{
		for (var i = 0; i < v_options.c.length; i++ )
		{
			var v_option = v_options.c[i];
			var v_optionAttr = {"value": v_option[K_PRMT_sATTR_USE_VALUE], "dv":v_option[K_PRMT_sATTR_DISPLAY_VALUE]};
			if (v_selectedHierarchy && v_option && v_option[K_PRMT_sATTR_USE_VALUE] == v_selectedHierarchy[K_PRMT_sATTR_USE_VALUE]) {
				v_optionAttr["selected"] = "true"
			}
			v_optionEl = $CE("option", v_optionAttr, v_oPickList);
			v_optionEl.f_appendText( (G_IsBidiEnabled && this["@contentTextDirection"] ? PRMT_BidiUtils.enforceBidiDirection(v_option[K_PRMT_sATTR_DISPLAY_VALUE], this["@contentTextDirection"]) : v_option[K_PRMT_sATTR_DISPLAY_VALUE]) );
		}
	}
	return v_oContainer;
};
/**
 * Draw the tree part of the control leveraging already existing Tree control
 */
cognos.Prompt.Control.PickTree.prototype.f_drawTree = function( v_el )
{
	var v_oContainer = $CE("div", {"id": this.f_getId("PRMT_PT_TREE_BOX_")}, v_el);
	var v_tbl = $CE( "table", {"border": K_PRMT_DEBUG_TABLEBORDER, "cellPadding":0, "cellSpacing":0, "role":K_PRMT_ARIA_ROLE_PRESENTATION}, v_oContainer );
	var v_tbd = $CE( "tbody", {}, v_tbl );
	var v_tr = $CE( "tr", {}, v_tbd );
	this.f_cleanTreeArguments();
	var v_oTree = new cognos.Prompt.Control.Tree( this.m_oTreeArguments );
	v_oTree.f_drawLayout(v_tr);
	this.m_oTree = v_oTree;
};
/**
 * Clean the hierarchy list and choice from the tree arguments
 */
cognos.Prompt.Control.PickTree.prototype.f_cleanTreeArguments = function(  ) {
	// rm "selectHierarchies"  and "selectHierarchyChoice", if selectOptions is missing or empty set canExpand to false;
	var v_treeArguments = this.m_oTreeArguments;
	if ( v_treeArguments.c && v_treeArguments.c.length )
	{
		for ( var i = 0, j = 0; i < v_treeArguments.c.length; i++ )
		{
			if ( v_treeArguments.c[i].n == "selectHierarchies"  || v_treeArguments.c[i].n == "selectHierarchyChoice") {
				v_treeArguments.c.splice(i,1);
				i--;
			}
		}
	}
	
};
/**
 * Get the selected hierarchy from the hierarchy pick list
 */
cognos.Prompt.Control.PickTree.prototype.f_getPickListSelection = function()
{
	var result = null;
	var v_oPickList = this.m_oPickList;
	if (v_oPickList.options && v_oPickList.options.length > 0) {
		var v_oSelOption = v_oPickList.options[v_oPickList.selectedIndex];
		if (v_oSelOption) {
			result = v_oSelOption.getAttribute('value');
			if (result === null)
			{
				result = v_oSelOption.value;
			}
			// for embedded IE 9 "feature"
			if  (!result && v_oSelOption.attributes && v_oSelOption.attributes['value']) {
				result = v_oSelOption.attributes['value'].value;
			}
		}
	}
	return result;
};
/**
 * Get the hierarchy options in XML format, like the example below:
 * |