/* 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. */ function C_PropertyEditor( v_divPropertyGroup, v_nPropertyGroup, v_nObjects, v_nNamedSets ) { this.m_doc = document; this.m_divPropertiesDiv = v_divPropertyGroup.appendChild( document.createElement( "div" ) ); this.m_divPropertiesDiv.style.height = "226px"; this.m_divPropertiesDiv.className = "clsTreeView"; var v_sLabel = v_divPropertyGroup.getAttribute( "aria-label" ); if ( v_sLabel ) { this.m_divPropertiesDiv.setAttribute( "aria-label", v_sLabel ); } this.m_divObjectsDiv = v_divPropertyGroup.appendChild( document.createElement( "div" ) ); this.m_divObjectsDiv.style.width = "298px"; var v_nTreeView = v_nPropertyGroup.ownerDocument.createElement( "treeView" ); v_nTreeView.setAttribute( "showCheckboxes", "true" ); this.m_oPropertyTreeView = new C_TreeView( this.m_divPropertiesDiv, v_nTreeView, this ); this.m_nProertyGroup = v_nPropertyGroup; this.m_nObjects = v_nObjects; this.m_nNamedSets = v_nNamedSets; this.m_aObjectViews = {}; this.m_aNamedSetViews = {}; this.f_readProperties(); this.m_oPropertyTreeView.F_SelectNode( v_nTreeView.selectSingleNode( "./treeNode" ), false, true ); }; C_PropertyEditor.prototype.f_readProperties = function() { var v_nProperties = this.m_nProertyGroup.selectNodes( ".//property" ); var v_nPropTreeViewNode = this.m_oPropertyTreeView.F_GetTreeViewNode(); var doc = v_nPropTreeViewNode.ownerDocument; for( var i = 0; i < v_nProperties.length; i++ ) { var v_nProperty = v_nProperties.item( i ); var v_nPropTreeNode = doc.createElement( "treeNode" ); var v_nPropertyName = v_nProperty.getAttribute( "name" ); v_nPropTreeNode.setAttribute( "value", v_nPropertyName ); U_Utils.F_GetCopyLabel( v_nProperty, v_nPropTreeNode ); v_nPropTreeViewNode.appendChild( v_nPropTreeNode ); var v_nObjectsDiv = this.m_divObjectsDiv.appendChild( this.m_doc.createElement( "div" ) ); v_nObjectsDiv.style.margin = "5px 0px 0px 0px"; var v_tabObjectsTabboxTable = v_nObjectsDiv.appendChild( this.m_doc.createElement( "div" ) ); var v_sObjectsTabName = v_nPropertyName + "_tabMain"; var v_sObjectsTableHTML = "" + "" + "" + "" + "" + "
"; v_tabObjectsTabboxTable.innerHTML = v_sObjectsTableHTML; G_ResManager.F_ApplyResStrings( v_tabObjectsTabboxTable ); var v_divObjectPanels = v_nObjectsDiv.appendChild( this.m_doc.createElement( "div" ) ); v_divObjectPanels.setAttribute( "id", v_sObjectsTabName + "_Panels" ); v_divObjectPanels.style.padding = "0px"; var v_divNormalObjectTab = v_divObjectPanels.appendChild( this.m_doc.createElement( "div" ) ); v_divNormalObjectTab.id = v_sObjectsTabName + "_Panel0"; v_divNormalObjectTab.className = "clsListView"; v_divNormalObjectTab.style.border = "medium none"; v_divNormalObjectTab.style.height = "140px"; var v_divAdvancedObjectTab = v_divObjectPanels.appendChild( this.m_doc.createElement( "div" ) ); v_divAdvancedObjectTab.setAttribute( "id", v_sObjectsTabName + "_Panel1" ); v_divAdvancedObjectTab.className = "clsTreeView"; v_divAdvancedObjectTab.style.border = "medium none"; v_divAdvancedObjectTab.style.height = "140px"; var v_oObjectsTab = new C_Tab( v_sObjectsTabName ); v_divNormalObjectTab.removeAttribute("role"); //build object list view var v_oObjectListView = new C_ListView( v_divNormalObjectTab, null, this ); v_oObjectListView.F_GetListViewNode().setAttribute("view", "checkbox"); v_oObjectListView.F_GetListViewNode().setAttribute("propertyName", v_nPropertyName ); var v_oObjectListItems = v_oObjectListView.F_GetListItemsNode(); this.m_aObjectViews[v_nPropertyName] = v_oObjectListView; var v_nObjects = v_nProperty.selectNodes( ".//objectRef" ); for( var j = 0; j < v_nObjects.length; j++ ) { var v_nObject = v_nObjects.item( j ); var v_nObjectListItem = doc.createElement( "listItem" ); var v_sObjectName = v_nObject.getAttribute( "name" ); v_nObjectListItem.setAttribute( "value", v_sObjectName ); var v_nObjectTemplate = this.m_nObjects.selectSingleNode( ".//object[@name='" + v_sObjectName + "']" ) U_Utils.F_GetCopyLabel( v_nObjectTemplate, v_nObjectListItem ); v_nObjectListItem.setAttribute( "value", v_sObjectName ); v_oObjectListItems.appendChild( v_nObjectListItem ); } v_oObjectListView.F_Draw(); //build advanced tree view var v_nTreeViewNode = doc.createElement( "treeView" ); v_nTreeViewNode.setAttribute( "showCheckboxes", "true" ); v_nTreeViewNode.setAttribute( "propertyName", v_nPropertyName ); var v_oAdvancedTreeView = new C_TreeView( v_divAdvancedObjectTab, v_nTreeViewNode, this ); var v_oNamedSets = v_nProperty.selectNodes( ".//namedSetRef" ); for ( var k = 0; k < v_oNamedSets.length; k++ ) { this.f_appendNamedSetNode( v_nTreeViewNode, v_oNamedSets.item( k ).getAttribute( "name" ) ); } v_oAdvancedTreeView.F_Draw(); this.m_aNamedSetViews[v_nPropertyName] = v_oAdvancedTreeView; } this.m_oObjectsDeck = new C_Deck( this.m_divObjectsDiv ); this.f_drawPropertyTree(); }; C_PropertyEditor.prototype.f_hideAllExpandImages = function() { //Hide all the expand images. var v_nExpandImages = this.m_divPropertiesDiv.getElementsByTagName( "IMG" ); for( var k = 0; k < v_nExpandImages.length; k++ ) { if( v_nExpandImages.item( k ).getAttribute("alt") == "+" ) { v_nExpandImages.item( k ).style.display = "none"; } } }; C_PropertyEditor.prototype.f_appendNamedSetNode = function( v_nParentNode, v_nNamedSetName ) { var v_doc = this.m_nProertyGroup.ownerDocument; var v_nNamedSetNode = this.m_nNamedSets.selectSingleNode( ".//namedSet[@name='" + v_nNamedSetName + "']" ); var v_nNameSetTreeNode = v_doc.createElement( "treeNode" ); v_nNameSetTreeNode.setAttribute( "value", v_nNamedSetNode.getAttribute( "name" ) ); U_Utils.F_GetCopyLabel( v_nNamedSetNode, v_nNameSetTreeNode ); v_nNameSetTreeNode.setAttribute( "expandable", "true" ); if( v_nParentNode.nodeName != "treeView" ) { v_nNameSetTreeNode.setAttribute( "hideCheckbox", "true" ); } v_nParentNode.appendChild( v_nNameSetTreeNode ); var v_oNamedSetChildren = v_nNamedSetNode.selectNodes( "./*" ); for( var i = 0; i < v_oNamedSetChildren.length; i++ ) { var v_nChild = v_oNamedSetChildren.item( i ); if( v_nChild.nodeName == "objectRef" ) { var v_nChildObject = this.m_nObjects.selectSingleNode( ".//object[@name='" + v_nChild.getAttribute( "name" ) + "']" ); var v_nChildObjectTreeNode = v_doc.createElement( "treeNode" ); v_nChildObjectTreeNode.setAttribute( "value", v_nChildObject.getAttribute( "name" ) ); v_nChildObjectTreeNode.setAttribute( "hideCheckbox", "true" ); U_Utils.F_GetCopyLabel( v_nChildObject, v_nChildObjectTreeNode ); v_nNameSetTreeNode.appendChild( v_nChildObjectTreeNode ); } else { this.f_appendNamedSetNode( v_nNameSetTreeNode, v_nChild.getAttribute( "name" ) ); } } }; C_PropertyEditor.prototype.F_GetPropertyTreeView = function() { return this.m_oPropertyTreeView; }; C_PropertyEditor.prototype.F_TreeView_OnNodeClick = function( v_oTreeView, v_nTreeNode, v_iMouseButton ) { switch( v_oTreeView ) { case this.m_oPropertyTreeView : var v_sPropName = v_nTreeNode.getAttribute( "value" ); var v_iIndex = 0; for ( var o in this.m_aObjectViews ) { if( o == v_sPropName ) { break; } v_iIndex++; } this.m_oObjectsDeck.F_SetIndex( v_iIndex ); } }; C_PropertyEditor.prototype.F_TreeView_OnNodeCheck = function( v_oTreeView, v_nTreeNode ) { var v_sCheckStatus = v_nTreeNode.getAttribute( "checked" ) == "true" ? "false" : "true"; switch( v_oTreeView ) { case this.m_oPropertyTreeView : var v_sPropertyName = v_nTreeNode.getAttribute( "value" ); if( v_sCheckStatus == "true" ) { this.F_SetObjectsChecked( v_sPropertyName, this.F_GetUncheckedObjectNames( v_sPropertyName ), true ); this.F_SetNamedSetsChecked( v_sPropertyName, this.F_GetUncheckedNamedSetNames( v_sPropertyName ), true ); } else { this.F_SetObjectsChecked( v_sPropertyName, this.F_GetCheckedObjectNames( v_sPropertyName ), true, true ); this.F_SetNamedSetsChecked( v_sPropertyName, this.F_GetCheckedNamedSetNames( v_sPropertyName ), true, true ); } this.f_highlightPropertyNodeByCheck( v_oTreeView, v_nTreeNode, v_sCheckStatus ); break; default : var v_bHighlight = Boolean( v_sCheckStatus == "true" ) != Boolean( v_nTreeNode.getAttribute( "oriChecked" ) ); G_UIPE.F_HighlightTreeNode( v_oTreeView, v_nTreeNode, v_bHighlight ); v_nTreeNode.setAttribute( "checked", v_sCheckStatus ); v_oTreeView.F_UpdateNode( v_nTreeNode ); var v_sPropertyName = v_oTreeView.F_GetTreeViewNode().getAttribute( "propertyName" ); var v_nPropertyNode = this.m_oPropertyTreeView.F_GetTreeViewNode().selectSingleNode( ".//treeNode[@value='" + v_sPropertyName + "']" ); this.f_updatePropertyByClick( v_sPropertyName, v_nPropertyNode, v_sCheckStatus ); this.f_highlightPropertyNodeByCheck( this.m_oPropertyTreeView, v_nPropertyNode ); return false; } }; C_PropertyEditor.prototype.F_ListView_OnCheckboxClick = function( v_oListView, v_nListItem ) { G_UIPE.F_HighlightListItem( v_oListView, v_nListItem ); var v_sPropertyName = v_oListView.F_GetListViewNode().getAttribute( "propertyName" ); var v_nPropertyNode = this.m_oPropertyTreeView.F_GetTreeViewNode().selectSingleNode( ".//treeNode[@value='" + v_sPropertyName + "']" ); this.f_updatePropertyByClick( v_sPropertyName, v_nPropertyNode, v_nListItem.getAttribute( "checked" ) ); this.f_highlightPropertyNodeByCheck( this.m_oPropertyTreeView, v_nPropertyNode ); }; C_PropertyEditor.prototype.f_updatePropertyByClick = function( v_sPropertyName, v_nPropertyNode, v_sCheckStatus ) { if( v_sCheckStatus == "false" ) { if( this.F_GetCheckedObjectNames( v_sPropertyName ).length == 0 && this.F_GetCheckedNamedSetNames( v_sPropertyName ).length == 0 ) { v_nPropertyNode.setAttribute( "checked", "false" ); } } else { v_nPropertyNode.setAttribute( "checked", "true" ); } this.m_oPropertyTreeView.F_UpdateNode( v_nPropertyNode ); }; C_PropertyEditor.prototype.f_highlightPropertyNodeByCheck = function( v_oTreeView, v_nTreeNode, v_sCheckStatus ) { if( !v_sCheckStatus ) { v_sCheckStatus = v_nTreeNode.getAttribute( "checked" ); } var v_bHighlight = Boolean( v_sCheckStatus == "true" ) != Boolean( v_nTreeNode.getAttribute( "oriChecked" ) ); if( !v_bHighlight ) { // check all the objects and namedsets. var v_sPropertyName = v_nTreeNode.getAttribute( "value" ); var v_oObjectsListView = this.m_aObjectViews[v_sPropertyName]; v_bHighlight = Boolean( v_oObjectsListView.F_GetListViewNode().selectSingleNode( ".//listItem[@highlight]" ) ); if( !v_bHighlight ) { var v_oNamedSetView = this.m_aNamedSetViews[v_sPropertyName]; v_bHighlight = Boolean( v_oNamedSetView.F_GetTreeViewNode().selectSingleNode( ".//treeNode[@highlight]" ) ); } } this.f_highlightPropertyNode( v_oTreeView, v_nTreeNode, v_bHighlight ); }; C_PropertyEditor.prototype.f_highlightPropertyNode = function( v_oTreeView, v_nTreeNode, v_bHighlight ) { G_UIPE.F_HighlightTreeNode( v_oTreeView, v_nTreeNode, v_bHighlight ); if( v_bHighlight ) { G_UIPE.F_HighlightSelectedTreeNode( true ); } else { G_UIPE.F_HighlightSelectedTreeNode( v_oTreeView.F_GetTreeViewNode().selectSingleNode( ".//treeNode[@highlight]" ) ); } }; C_PropertyEditor.prototype.F_CheckAll = function() { this.f_setCheckboxStatus( "true" ); }; C_PropertyEditor.prototype.F_UncheckAll = function() { this.f_setCheckboxStatus( "false" ); }; C_PropertyEditor.prototype.f_setCheckboxStatus = function( v_sStatus ) { var v_oTreeNodes = this.f_getPropertyNodes(); for( var i = 0; i < v_oTreeNodes.length; i++ ) { v_oTreeNodes.item( i ).setAttribute( "checked", v_sStatus ); } this.f_drawPropertyTree(); for( var i = 0; i < v_oTreeNodes.length; i++ ) { this.f_highlightPropertyNodeByCheck( this.m_oPropertyTreeView, v_oTreeNodes.item( i ) ); } }; C_PropertyEditor.prototype.f_setNodesChecked = function( v_oNodes, v_aNames, v_bOri, v_bUnchecked ) { if( !v_aNames || v_aNames.length == 0) { return; } for( var i = 0; i < v_oNodes.length; i++ ) { var v_nNode = v_oNodes.item( i ); if( v_aNames.indexOf( v_nNode.getAttribute( "value" ) ) != -1 ) { var v_sChecked = v_bUnchecked ? "false" : "true"; v_nNode.setAttribute( "checked", v_sChecked ); if( v_bOri ) { v_nNode.setAttribute( "oriChecked", "true" ); } } } }; C_PropertyEditor.prototype.F_SetPropertiesChecked = function( v_aNames ) { this.f_setNodesChecked( this.f_getPropertyNodes(), v_aNames, true ); this.f_drawPropertyTree(); }; C_PropertyEditor.prototype.F_SetObjectsChecked = function( v_sPropertyName, v_aNames, v_bNotOri, v_bUnchecked ) { var v_nObjectView = this.m_aObjectViews[v_sPropertyName]; var v_oAllListItems = v_nObjectView.F_GetListItems(); this.f_setNodesChecked( v_oAllListItems, v_aNames, !v_bNotOri, v_bUnchecked, "Object" ); v_nObjectView.F_Draw(); for( var i = 0; i < v_oAllListItems.length; i++ ) { G_UIPE.F_HighlightListItem( v_nObjectView, v_oAllListItems.item( i ) ); } }; C_PropertyEditor.prototype.F_SetNamedSetsChecked = function( v_sPropertyName, v_aNames, v_bNotOri, v_bUnchecked ) { var v_nNamedSetView = this.m_aNamedSetViews[v_sPropertyName]; var v_oAllNamedSetNodes = v_nNamedSetView.F_GetTreeViewNode().selectNodes( "./*" ); this.f_setNodesChecked( v_oAllNamedSetNodes, v_aNames, !v_bNotOri, v_bUnchecked, "NamedSet", v_nNamedSetView ); v_nNamedSetView.F_Draw(); for( var i = 0; i < v_oAllNamedSetNodes.length; i++ ) { var v_nNamedSetNode = v_oAllNamedSetNodes.item( i ); var v_sCheckStatus = v_nNamedSetNode.getAttribute( "checked" ) ; var v_bHighlight = Boolean( v_sCheckStatus == "true" ) != Boolean( v_nNamedSetNode.getAttribute( "oriChecked" ) ); G_UIPE.F_HighlightTreeNode( v_nNamedSetView, v_nNamedSetNode, v_bHighlight ); } }; C_PropertyEditor.prototype.f_drawPropertyTree = function() { this.m_oPropertyTreeView.F_Draw(); this.f_hideAllExpandImages(); } C_PropertyEditor.prototype.f_getPropertyNodes = function() { return this.m_oPropertyTreeView.F_GetTreeViewNode().selectNodes( "./treeNode" ); }; C_PropertyEditor.prototype.F_GetPropertyNames = function() { return U_XML.F_AppendValues( null, this.m_oPropertyTreeView.F_GetTreeViewNode().selectNodes( "./treeNode/@value" ) ); }; C_PropertyEditor.prototype.F_GetCheckedPropertyNames = function() { return this.f_getChildNamesByCheckStatus( this.m_oPropertyTreeView.F_GetTreeViewNode(), true); }; C_PropertyEditor.prototype.F_GetUncheckedPropertyNames = function() { return this.f_getChildNamesByCheckStatus( this.m_oPropertyTreeView.F_GetTreeViewNode(), false); }; C_PropertyEditor.prototype.F_GetCheckedObjectNames = function( v_sPropertyName ) { var v_nObjectView = this.m_aObjectViews[v_sPropertyName]; return this.f_getChildNamesByCheckStatus( v_nObjectView.F_GetListItemsNode(), true ); }; C_PropertyEditor.prototype.F_GetUncheckedObjectNames = function( v_sPropertyName ) { var v_nObjectView = this.m_aObjectViews[v_sPropertyName]; return this.f_getChildNamesByCheckStatus( v_nObjectView.F_GetListItemsNode(), false ); }; C_PropertyEditor.prototype.F_GetCheckedNamedSetNames = function( v_sPropertyName ) { var v_nNamedSetView = this.m_aNamedSetViews[v_sPropertyName]; return this.f_getChildNamesByCheckStatus( v_nNamedSetView.F_GetTreeViewNode(), true ); }; C_PropertyEditor.prototype.F_GetUncheckedNamedSetNames = function( v_sPropertyName ) { var v_nNamedSetView = this.m_aNamedSetViews[v_sPropertyName]; return this.f_getChildNamesByCheckStatus( v_nNamedSetView.F_GetTreeViewNode(), false ); }; C_PropertyEditor.prototype.f_getChildNamesByCheckStatus = function( v_nParentNode, v_bChecked ) { var v_sPath = v_bChecked ? "./*[@checked='true']/@value" : "./*[not(@checked) or @checked='false']/@value"; return U_XML.F_AppendValues( null, v_nParentNode.selectNodes( v_sPath ) ); };