123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658 |
- // 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);
- }
|