// Licensed Materials - Property of IBM // // IBM Cognos Products: pps // // (C) Copyright IBM Corp. 2005, 2017 // // US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp. var selectedCells = new Array(); var allSelected = false; var levelSelected = false; var selectionClassNames = new Array(); selectedCellClass = "cell-selected"; selectedIntersectionClass = "cell-intersection-selected"; selectedHeaderClass = "header-selected"; function processClickSelections(event) { if ( event["altKey"] && topparent.getGlobal("safari")) contextMenu(event); else processSelection(event); } function processSelection(event) { if (!topparent.allFramesInitialized()) return; var eventM = new eventManager(event); var src = eventM.getSrc(); //Clear the dimbar flyouts if (topparent.getXtabFrame() == window && topparent.getChartFrame()) topparent.getChartFrame().clearFlyouts(); else clearFlyouts(); //check if a link or img has been clicked.... if ( (eventM.theEvent.type != "contextmenu") && ( (!src.tagName && src.parentNode.tagName == "A" && src.parentNode.className == "link") || (src.tagName == "A" && (src.href && src.href != "") || (src.onclick && src.onclick != "")) || (src.tagName == "IMG" && typeof src.onclick != "undefined" && src.onclick != null) || (src.tagName == "AREA" && typeof src.onclick != "undefined") ) ) return true; allSelected = false; var objects = new Array(); var obj = bubbleToSelectionSensitiveObject(src); //If this is split view, we count this action as a deselect in the other frame. if (topparent.getGlobal("isSplitView") && (window == topparent.getXtabFrame() || obj == null)) { var frame = topparent.getChartFrame(); frame.deselectAllXtab(event); frame.refreshToolbarState(); frame.refreshActionPane(); } if (topparent.getGlobal("isSplitView") && (window == topparent.getChartFrame()) || obj == null) { var frame = topparent.getXtabFrame(); frame.deselectAllXtab(event); frame.refreshToolbarState(); frame.refreshActionPane(); } if (obj != null) { var ctrlPressed = (topparent.getGlobal("MacGecko"))? eventM.theEvent.altKey : eventM.theEvent.ctrlKey; var currentIdx = getSelectedCellIndex(obj); if (obj.id) { if ( !ctrlPressed || obj.getAttribute("type").charAt(0) == "l" || allSelected) { //Clear all present selection deselectAllXtab(event); if (currentIdx < 0 || obj.getAttribute("type").charAt(0) == "l") { //if wasn't selected, select it processSelectionObj(event, obj, true) addSelectedCells(obj); } } else //ctrl is pressed... { //Clear Level Selection if (levelSelected) deselectLevels(); //If it is currently selected, deselect it if (currentIdx >= 0) { processSelectionObj(event, obj, false) removeSelectedCells(obj); } else { //select it processSelectionObj(event, obj, true) addSelectedCells(obj); } } } refreshToolbarState(); refreshActionPane(); if (obj.getAttribute("type").charAt(0) != "l") hideFloatingToolbar(); eventM.cancelBubble(); } } function processSelectionObj(event, obj, selecting) { var type = obj.getAttribute("type"); if (type == "d") selectCell(event, obj, selecting); else if (type == "r") selectRow(event, obj, selecting); else if (type == "c") selectColumn(event, obj, selecting); else if (type == "m") { if (topparent.getXtabFrame().document.fhidden.ACTPANE.value == 8) //custom exceptions selectAllXtab(event, selecting); } else if (type.indexOf("lr") >= 0 || type.indexOf("lc") >= 0) { selectLevel(event, obj, selecting); } } function bubbleToSelectionSensitiveObject( obj ) { var target = obj; if (!obj) return null; if (!obj.getAttribute || !obj.getAttribute("type") || obj.getAttribute("type") == "" || obj.getAttribute("type") == "rn" || obj.getAttribute("type") == "cn") target = bubbleToSelectionSensitiveObject( obj.parentNode ); return target; } function selectCell(event, obj, selecting) { selectRow(event, xtabCache.getRowHeader(parseRowId(obj.id)), selecting); selectColumn(event, xtabCache.getColHeader(parseColId(obj.id)), selecting); } function selectRow(event, obj, selecting) { var rowID = parseRowId(obj.id); var colID = parseColId(obj.id); if (rowID == "" || colID == "") return; xtabCache.selectRow(rowID,colID,selecting); if (selecting) addSelectedObject(obj) else removeSelectedObject(obj) } function selectColumn(event, obj, selecting) { var rowID = parseRowId(obj.id); var colID = parseColId(obj.id); if (rowID == "" || colID == "") return; xtabCache.selectCol(rowID,colID,selecting); if (selecting) addSelectedObject(obj) else removeSelectedObject(obj) } function mouseOverHeader(event) { if (!topparent.getGlobal("dndManager").isDraggingAnItem()) { var eventM = new eventManager(event); var obj = bubbleToSelectionSensitiveObject(eventM.getSrc()); var rowID = parseRowId(obj.id); var colID = parseColId(obj.id); doMouseOverHeader(rowID,colID,true); } } function mouseLeaveHeader(event) { var eventM = new eventManager(event); var obj = bubbleToSelectionSensitiveObject(eventM.getSrc()); var rowID = parseRowId(obj.id); var colID = parseColId(obj.id); doMouseOverHeader(rowID,colID,false); } function doMouseOverHeader(rowID,colID,Select) { if (xtabCache && typeof xtabCache != "undefined" && xtabCache.initialized) xtabCache.mouseOverHeader(rowID,colID,Select); else //defer to a new javascript thread after the xtabCache initialization is complete setTimeout("doMouseOverHeader(" + rowID + "," + colID + "," + Select + ");",1); } function selectLevel(event, obj, selecting) { var eventM = new eventManager(event); var evtype = eventM.theEvent.type; var ele; var level = parseLevelNumber ( obj.getAttribute("type") ); if (evtype == "click" || evtype== "drop" || evtype.indexOf("drag") >= 0 || evtype == "contextmenu" || evtype == "mouseover") { if (evtype == "click" || evtype == "contextmenu") xtabCache.selectLevel(obj.getAttribute("type").charAt(1),level,selecting); else xtabCache.dragOverLevel(obj.getAttribute("type").charAt(1),level,selecting); if (evtype == "click" && !obj.getAttribute("splitview") && selecting) showFloatingToolbar(event, obj); } levelSelected = selecting; } function deselectAllXtab(event) { if (allSelected) { selectAllXtab(event, false); } var objects = getSelectedCells(); for (var i = 0; i < objects.length; i++) { processSelectionObj(event, objects[i], false); removeSelectedCells(objects[i]); } hideFloatingToolbar(); topparent.executeCrossFrameFunction( "hidePopupMenu", theWindow.name, true); hideChartDropdowns(event); } function deselectLevels() { var objects = getSelectedCells(); for (var i = 0; i < objects.length; i++) if (objects[i].getAttribute("type").charAt(0) == "l") { processSelectionObj(event, objects[i], false); removeSelectedCells(objects[i]); } levelSelected = false; hideFloatingToolbar(); topparent.executeCrossFrameFunction( "hidePopupMenu", theWindow.name, true); } function selectAllXtab(event, selecting) { var lowerbound = 0; var upperbound = numColLevels; for (var i = lowerbound; i < upperbound; i++) { var obj = xtabCache.getXtabLevelSelector("c",i); if (obj) { selectLevel(event, obj, selecting); } } lowerbound = 0; upperbound = numRowLevels; for (var i = lowerbound; i < upperbound; i++) { var obj = xtabCache.getXtabLevelSelector("r",i); if (obj) { selectLevel(event, obj, selecting); } } allSelected = selecting; } function parseParentId( id ) { if (!id) return null; var comma = id.indexOf(","); return id.substr(0, comma); } function parseChildRange( id ) { var comma = id.indexOf(","); return id.substr(comma+1); } function parseRowId( id ) { var comma = id.indexOf(","); var dash = id.indexOf("-"); return id.substr(comma+1, dash); } function parseColId( id ) { var dash = id.indexOf("-") + 1; return id.substr(dash); } function parseLevelNumber ( type ) { var index = Math.max(type.indexOf("lr"), type.indexOf("lc")) + 2; return type.substr(index); } function getSelectedClassName( obj ) { var type = obj.getAttribute("type"); var name = "" if (type == "d") name = selectedCellClass; else if (type == "r" || type == "c") name = selectedHeaderClass; return name; } function getSelectedCellNumber() { return selectedCells.length; } function getSelectedCells() { return selectedCells.slice(0); } function getSelectedCellIndex ( obj ) { var id = obj.id; var arr = getSelectedCells(); var found = false; for (var i = 0; i < arr.length; i++) { if (arr[i].id == id) { found = true; break; } } if (found) return i; return -1; } function addSelectedCells( obj ) { selectedCells[selectedCells.length] = obj; } function removeSelectedCells( obj ) { var idx = getSelectedCellIndex(obj); selectedCells.splice(idx, 1); } function refreshToolbarState() { // Selection has changed, Do any toolbar button updates that depend on selection here. topparent.getToolbarFrame().OnXTabSelectionChange(); } function refreshActionPane() { var actionFrame = topparent.getActionFrame(); if (actionFrame.refresh) { if(topparent.getXtabFrame().fh.ACTPANE.value != 0) actionFrame.refresh(); } } function addSelectedObject(obj) { var frame = topparent.getConfigFrame(); if (obj.getAttribute("type") == "r") frame.selectedRows[frame.selectedRows.length] = obj; else frame.selectedColumns[frame.selectedColumns.length] = obj; } function removeSelectedObject(obj) { var frame = topparent.getConfigFrame(); var arr; var id = obj.id; if (obj.getAttribute("type") == "r") arr = frame.selectedRows; else arr = frame.selectedColumns; var found = false; for (var i = 0; i < arr.length; i++) { var thisid = arr[i].id; if ( id == thisid ) { arr.splice(i, 1); } } } function hoverOverArea(obj) { obj.className += " " + "levelover"; var children = obj.childNodes; for (var i = 0; i < children.length; i++) { var child = children[i]; if (child.tagName.toLowerCase() == "img") child.style.visibility = "visible"; } } function deselectArea(obj) { var origName = obj.className; var pattern = RegExp(" levelover", "g"); obj.className = origName.replace(pattern, ""); var children = obj.childNodes; for (var i = 0; i < children.length; i++) { var child = children[i]; if (child.tagName.toLowerCase() == "img") child.style.visibility = "hidden"; } } function keyPressed(event) { if (!topparent.allFramesInitialized()) return; var eventM = new eventManager(event); if (eventM.theEvent.keyCode == 27) { deselectAllXtab(event); refreshToolbarState(); } else if (eventM.theEvent.keyCode == 46) deleteLevel(); } function showFloatingToolbar(event, obj) { var eventM = new eventManager(event); if (eventM.getSrc().getAttribute("type") != "m") { var options = setLevelBarImages(obj); if (options != null) ContextMenu.display(event, options, true); } } function hideFloatingToolbar() { topparent.executeCrossFrameFunction ( 'hidePopupMenu', '', true); } function setLevelBarImages (obj){ var cmdArray = new Array(); var arrayContextMenu = topparent.getGlobal("main_ContextMenu"); var type = obj.getAttribute("type"); var selectedLevel = parseLevelNumber ( type ); var canExpandLevel = parseInt(obj.getAttribute("canExpandLevel")); var canDrillOnLevel = parseInt(obj.getAttribute("canLevelDown")); var canDrillUpLevel = parseInt(obj.getAttribute("canLevelUp")); var selectedAxis, canMoveLevelLeft, canMoveLevelRight; if ( type.indexOf("lr") >= 0) { selectedAxis = "R"; canMoveLevelLeft = parseInt(obj.getAttribute("canMoveLeft")); canMoveLevelRight = parseInt(obj.getAttribute("canMoveRight")); } else if ( type.indexOf("lc") >= 0) { selectedAxis = "C"; canMoveLevelLeft = parseInt(obj.getAttribute("canMoveUp")); canMoveLevelRight = parseInt(obj.getAttribute("canMoveDown")); } var totalLevels = numRowLevels; if (selectedAxis == "C") totalLevels = numColLevels; var iconPath = topparent.getGlobal("imgPath"); if(canExpandLevel == 0) cmdArray[cmdArray.length] = new ContextImageItem(iconPath + "expand_no.gif","",arrayContextMenu["expand"]._label,true); else cmdArray[cmdArray.length] = new ContextImageItem(iconPath + "expand.gif",function() { expand(); },arrayContextMenu["expand"]._label,false); if(totalLevels == 1) cmdArray[cmdArray.length] = new ContextImageItem(iconPath + "delete_no.gif","",arrayContextMenu["del"]._label,true); else cmdArray[cmdArray.length] = new ContextImageItem(iconPath + "delete.gif",function() { deleteLevel(); },arrayContextMenu["del"]._label,false); if(totalLevels == 1 || selectedLevel == 0 || canMoveLevelLeft == 0) { if(selectedAxis == 'C') cmdArray[cmdArray.length] = new ContextImageItem(iconPath + "moveup_no.gif","",arrayContextMenu["move_up"]._label,true); else cmdArray[cmdArray.length] = new ContextImageItem(iconPath + "moveleft_no.gif","",arrayContextMenu["move_left"]._label,true); } else { if(selectedAxis == 'C') cmdArray[cmdArray.length] = new ContextImageItem(iconPath + "moveup.gif",function() { moveLeftOrUp(); },arrayContextMenu["move_up"]._label,false); else cmdArray[cmdArray.length] = new ContextImageItem(iconPath + "moveleft.gif",function() { moveLeftOrUp(); },arrayContextMenu["move_left"]._label,false); } if(totalLevels == 1 || selectedLevel == totalLevels - 1 || canMoveLevelRight == 0) { if(selectedAxis == 'C') cmdArray[cmdArray.length] = new ContextImageItem(iconPath + "movedown_no.gif","",arrayContextMenu["move_down"]._label,true); else cmdArray[cmdArray.length] = new ContextImageItem(iconPath + "moveright_no.gif","",arrayContextMenu["move_right"]._label,true); } else { if(selectedAxis == 'C') cmdArray[cmdArray.length] = new ContextImageItem(iconPath + "movedown.gif",function() { moveRightOrDown(); },arrayContextMenu["move_down"]._label,false); else cmdArray[cmdArray.length] = new ContextImageItem(iconPath + "moveright.gif",function() { moveRightOrDown(); },arrayContextMenu["move_right"]._label,false); } if(canDrillOnLevel == 0) { if(selectedAxis == 'C') cmdArray[cmdArray.length] = new ContextImageItem(iconPath + "downlevel_columns_no.gif","",arrayContextMenu["down_level"]._label,true); else cmdArray[cmdArray.length] = new ContextImageItem(iconPath + "downlevel_rows_no.gif","",arrayContextMenu["down_level"]._label,true); } else { if(selectedAxis == 'C') cmdArray[cmdArray.length] = new ContextImageItem(iconPath + "downlevel_columns.gif",function() { drillDown(); },arrayContextMenu["down_level"]._label,false); else cmdArray[cmdArray.length] = new ContextImageItem(iconPath + "downlevel_rows.gif",function() { drillDown(); },arrayContextMenu["down_level"]._label,false); } if(canDrillUpLevel == 0) { if(selectedAxis == 'C') cmdArray[cmdArray.length] = new ContextImageItem(iconPath + "uplevel_columns_no.gif","",arrayContextMenu["up_level"]._label,true); else cmdArray[cmdArray.length] = new ContextImageItem(iconPath + "uplevel_rows_no.gif","",arrayContextMenu["up_level"]._label,true); } else { if(selectedAxis == 'C') cmdArray[cmdArray.length] = new ContextImageItem(iconPath + "uplevel_columns.gif",function() { drillUp(); },arrayContextMenu["up_level"]._label,false); else cmdArray[cmdArray.length] = new ContextImageItem(iconPath + "uplevel_rows.gif",function() { drillUp(); },arrayContextMenu["up_level"]._label,false); } cmdArray[cmdArray.length] = new ContextImageItem("../../ppwb/Icon24/explain.gif",function() { explain(); },arrayContextMenu["explain"]._label,false); return cmdArray; } function tabClicked(event) { if (!topparent.allFramesInitialized()) return; var eventM = new eventManager(event); var frame = topparent.getChartFrame(); if (frame) { frame.deselectAllXtab(event); frame.refreshActionPane(); frame.refreshToolbarState(); } frame = topparent.getXtabFrame(); frame.deselectAllXtab(event); frame.refreshActionPane(); frame.refreshToolbarState(); eventM.cancelBubble(); } function getSelected(type) { if (type == "r") { return topparent.getConfigFrame().selectedRows; } else if (type == "c") { return topparent.getConfigFrame().selectedColumns; } else return null; } function isLevelSelected(axis) { return (getSelectedLevel(axis) != null); } function getSelectedLevel(type) { var xtabFrame = topparent.getXtabFrame(); if (xtabFrame.levelSelected && xtabFrame.getSelectedCells().length == 1 && (typeof type == "undefined" || type == null || xtabFrame.getSelectedCells()[0].getAttribute("type").indexOf(type) == 1)) { return xtabFrame.getSelectedCells()[0]; } else { return null; } } function getSelectedLevelNum() { return parseInt(getSelectedLevel().getAttribute("type").substr(2)); } function invokeSelection( rowSelId, colSelId ) { var rowId; var colId; if( rowSelId && colSelId ) { // cell selected rowId = parseInt(topparent.getXtabFrame().numColLevels) + parseInt(rowSelId); colId = parseInt(topparent.getXtabFrame().numRowLevels) + parseInt(colSelId); } else if( rowSelId ) { // only row selected rowId = parseInt(topparent.getXtabFrame().numColLevels) + parseInt(rowSelId); colId = parseInt(topparent.getXtabFrame().numRowLevels) - 1; } else if( colSelId ) { // only col selected rowId = parseInt(topparent.getXtabFrame().numColLevels) -1; colId = parseInt(topparent.getXtabFrame().numRowLevels) + parseInt(colSelId); } var selectedObjectID = rowId + "-" + colId ; fireSelectionEvent(selectedObjectID); } function fireSelectionEvent(id) { var selectedObject = topparent.getXtabFrame().document.getElementById( id ); if (!selectedObject || !topparent.allFramesInitialized()) { setTimeout("fireSelectionEvent('" + id + "')", 100); return; } processSelectionObj(null, selectedObject, true); addSelectedCells(selectedObject); }