1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216 |
- // Licensed Materials - Property of IBM
- //
- // IBM Cognos Products: pps
- //
- // (C) Copyright IBM Corp. 2005, 2019
- //
- // US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
- // This forms the javascript functions used for PowerPlay Studio Toolbar
- // The functions handle any minor browser differences.
- // Variables and constants
- var ext = ".gif";
- var BTN_HIDDEN = -1;
- var BTN_NORMAL = 0;
- var BTN_RAISED = 1;
- var BTN_PRESSED = 2;
- var BTN_ROLL_PRESSED = 3;
- var BTN_DISABLED = 4;
- var STATUS_HIDDEN = -1;
- var STATUS_NORMAL = 0;
- var STATUS_PRESSED = 1;
- var STATUS_DISABLED = 2;
- var IDX_DEFAULT = 0;
- var IDX_DISABLED = 1;
- var ACT_PANE_GROUP = 0;
- var xtabButtonItem;
- var chartButtonItem;
- var displayOptionsButtonItem;
- var zeroSuppressionButtonItem;
- var helpButtonItem;
- var getDataAltImg = "data_now";
- var toolBarImages = new Array();
- var toggleGroups = new Array();
- var ZS_PRESSED = 0;
- var ETS_PRESSED = 0;
- var ZS_ICON = "";
- var ETS_ICON = "";
- var hourglass = new Image();
- // Used to keep track of original (set by server) enabled/disabled values for toolbarbuttons
- // since we may dynamically disbale buttons.
- var originalButtonStates = new Array();
- var intialized = false;
- // ButtonName FileName Mod1 Mod2
- var buttonRules =[
- [ "xtab", "xtab", [ "" ] ],
- [ "ftab", "ftab", [ "", "_no" ] ],
- [ "menu", "arrow", [ "" ] ],
- [ "bar", "bar", [ "", "_no" ] ],
- [ "pie", "pie", [ "", "_no" ] ],
- [ "cluster", "cluster", [ "", "_no" ] ],
- [ "stack", "stack", [ "", "_no" ] ],
- [ "line", "line", [ "", "_no" ] ],
- [ "3d", "3d", [ "", "_no" ] ],
- [ "sline", "sline", [ "", "_no" ] ],
- [ "scatter", "scatter", [ "", "_no" ] ],
- [ "correlation", "correlation", [ "", "_no" ] ],
- [ "displayoption", "display_options", [ "", "_no" ] ],
- [ "chartoption", "options", [ "", "_no" ] ],
- [ "xtaboption", "options", [ "", "_no" ] ],
- [ "displayoptionmenu","display_options_menu", [ "" ] ],
- [ "splitview", "split_view", [ "", "_no" ] ],
- [ "edittitle", "edit_title", [ "", "_no" ] ],
- [ "calculation", "calculation", [ "", "_no" ] ],
- [ "rank", "rank", [ "", "_no" ] ],
- [ "hideshow", "hide_show", [ "", "_no" ] ],
- [ "customsubset", "custom_subset", [ "", "_no" ] ],
- [ "swap", "swap", [ "" ] ],
- [ "zero", "zero", [ "" ] ],
- [ "rows_only", "zero_rows", [ "" ] ],
- [ "columns_only", "zero_cols", [ "" ] ],
- [ "f8020", "f8020", [ "", "_no" ] ],
- [ "except", "except", [ "" ] ],
- [ "customexception", "customex", [ "" ] ],
- [ "bookmark", "bookmark", [ "", "_no" ] ],
- [ "explain", "explain", [ "" ] ],
- [ "find", "find", [ "", "_no" ] ],
- [ "drillthrough", "drillthru", [ "", "_no" ] ],
- [ "help", "help", [ "" ] ],
- [ "file", "file", [ "", "_no" ] ],
- [ "save", "save", [ "", "_no" ] ],
- [ "saveas", "saveas", [ "", "_no" ] ],
- [ "custom1", "custom1", [ "" ] ],
- [ "custom2", "custom2", [ "" ] ],
- [ "custom3", "custom3", [ "" ] ],
- [ "custom4", "custom4", [ "" ] ],
- [ "custom5", "custom5", [ "" ] ],
- [ "custom6", "custom6", [ "" ] ],
- [ "custom7", "custom7", [ "" ] ],
- [ "custom8", "custom8", [ "" ] ] ];
- function winFocus(w){
- if( w != null && w.focus != null ) {
- w.focus();
- }
- }
- //In order to add a new button or change an image, modify this function.
- function InitializeToolbar(forceBestEffort) {
- if (!forceBestEffort && !checkAllButtonPropertiesLoaded()) {
- topparent.notifyFrameNotYetLoaded();
- return;
- }
- addButtonToPreloadArray();
- //Initialize the menus
- intializeToolbarMenus();
- xtabButtonItem = getActiveMenuIndex("xtab");
- chartButtonItem = getActiveMenuIndex("chart");
- zeroSuppressionButtonItem = getActiveMenuIndex("zero");
- helpButtonItem = getFirstMenuIndex("help");
- //Set each button to its correct image
- setAllButtons();
- setHelpButtonStatusMsg();
- //Set up the toggle groups
- addToToggleGroup("calculation", ACT_PANE_GROUP);
- addToToggleGroup("rank", ACT_PANE_GROUP);
- addToToggleGroup("hideshow", ACT_PANE_GROUP);
- addToToggleGroup("customexception", ACT_PANE_GROUP);
- //addToToggleGroup("explain", ACT_PANE_GROUP);
- //addToToggleGroup("find", ACT_PANE_GROUP);
- addToToggleGroup("customsubset", ACT_PANE_GROUP);
- initialized = true;
- }
- //Modify this function to add/remove or modify toolbar menus
- function intializeToolbarMenus() {
- //Initialize menu images
- addMenuItem("xtab", "xtab", "xtab", "setXtabButton('xtab');doit('OY:0');");
- addMenuItem("xtab", "ftab", "ftab", "setXtabButton('ftab');doit('OY:9');");
- addMenuItem("xtab", "xtaboption", "options", "doit('MB')");
- addMenuItem("chart", "bar", "bar", "setChartButton('bar');doit('OY:2')");
- addMenuItem("chart", "pie", "pie", "setChartButton('pie');doit('OY:1')");
- addMenuItem("chart", "cluster", "cluster", "setChartButton('cluster');doit('OY:3')");
- addMenuItem("chart", "stack", "stack", "setChartButton('stack');doit('OY:5')");
- addMenuItem("chart", "line", "line", "setChartButton('line');doit('OY:4')");
- addMenuItem("chart", "3d", "3d", "setChartButton('3d');doit('OY:6')");
- addMenuItem("chart", "sline", "sline", "setChartButton('sline');doit('OY:10')");
- addMenuItem("chart", "scatter", "scatter", "setChartButton('scatter');doit('OY:11')");
- addMenuItem("chart", "correlation", "correlation", "setChartButton('correlation');doit('OY:12')");
- addMenuItem("chart", "chartoption", "options", "doit('MY')");
- addMenuItem("displayoptionmenu", "displayoption","display_options", "doit('MT')");
- addMenuItem("displayoptionmenu", "splitview", "split_view", "doit('OSD')");
- addMenuItem("displayoptionmenu", "edittitle", "edit_title", "doit('MI')");
- addMenuItem("displayoptionmenu", "getdata", "data_later", "doit('OGD')");
- addMenuItem("displayoptionmenu", "reset", "reset", "doReset()");
- addMenuItem("zero", "zero", "zero", "setZeroButton('zero');doit('UX:1')");
- addMenuItem("zero", "rows_only", "zero_rows", "setZeroButton('rows_only');doit('UX:2')");
- addMenuItem("zero", "columns_only", "zero_cols", "setZeroButton('columns_only');doit('UX:3')");
- addMenuItem("zero", "options", "options", "doit('MD')");
-
- addMenuItem("file", "pdf_options", "pdf_options", "doit('MP')");
- addMenuItem("file", "savepdf", "savepdf", "ra(12)");
- addMenuItem("file", "savecsv", "savecsv", "ra(1)");
- addMenuItem("file", "savexls", "save_xls", "ra(11)");
- addMenuItem("file", "savexlsx", "save_xlsx", "ra(13)");
- addMenuItem("file", "bookmark", "bookmark", "ra(7)");
- addMenuItem("file", "openas", "openas", "launchStudio('as')");
- addMenuItem("file", "openrs", "openrs", "launchStudio('rs')");
- addMenuItem("file", "openbua", "openbua", "launchStudio('bua')");
- addMenuItem("file", "extractppx", "extractppx", "ra(98)");
- addMenuItem("help", "help", "help", "doMenuHelp();");
- addMenuItem("help", "find", "find", "doit('MF')");
- addMenuItem("help", "explain", "explain", "doit('ME')");
- }
- //In order to modify or add button actions, modify this function
- function doButtonAction(event, button) {
-
- if (typeof initialized == "undefined" || !initialized) {
- return false;
- }
-
- if (!isDisabled(button)) {
- switch (button.id) {
- case "xtab": doXtab(); break;
- case "chart": doChart(); break;
- case "displayoptionmenu": doMenuButtonAction(event, button); break;
- case "hideshow": toggleButton(button, true); doit('MQ'); break;
- case "calculation": toggleButton(button, true); doit('MC'); break;
- case "rank":toggleButton(button, true); doit('MO'); break;
- case "customsubset": toggleButton(button, true); doit('MZI'); break;
- case "swap": doit('EX'); break;
- case "zero": if (ZS_PRESSED == 1) { break; } toggleButton(button, true); doZeroSuppression();DisableZS(); break;
- case "f8020": if (ETS_PRESSED == 1) { break; } toggleButton(button, true); doit('OETS:1');DisableETS(); break;
- case "except": toggleButton(button, true); doit('OEX'); break;
- case "customexception": toggleButton(button, true); doit('MX'); break;
- case "drillthrough": ra(4); break;
- case "help": doHelp(); break;
- case "file": doMenuButtonAction(event, button); break;
- case "save": doit('RU:1'); fh.CO.value = ""; break;
- case "saveas": doParent('RU:0'); break;
- case "custom1": custom1(); break;
- case "custom2": custom2(); break;
- case "custom3": custom3(); break;
- case "custom4": custom4(); break;
- case "custom5": custom5(); break;
- case "custom6": custom6(); break;
- case "custom7": custom7(); break;
- case "custom8": custom8(); break;
- }
- }
- setStatusBar(button);
- }
- //Used to handle Buttons that change according to selected menu item.
- function getButtonId(button) {
- if (button.id == "xtab" && (xtabButtonItem != -1)) {
- return toolbarMenus["xtab"][xtabButtonItem]._name;
- } else if (button.id == "chart" && (chartButtonItem != -1)){
- return toolbarMenus["chart"][chartButtonItem]._name;
- } else if (button.id == "zero" && (zeroSuppressionButtonItem != -1)) {
- return toolbarMenus["zero"][zeroSuppressionButtonItem]._name;
- } else if (button.id == "help" && (helpButtonItem != -1)) {
- return toolbarMenus["help"][helpButtonItem]._name;
- } else {
- return button.id;
- }
- }
- function doChart() {
- //Get the present menu item's action and perform it.
- eval(toolbarMenus["chart"][chartButtonItem]._action);
- }
- function doXtab() {
- //Get the present menu item's action and perform it.
- eval(toolbarMenus["xtab"][xtabButtonItem]._action);
- }
- function doHelp() {
- if (toolbarMenus["help"][helpButtonItem]._name == "help") {
- help(topparent.getXtabFrame().document.fhidden.LA.value);
- } else {
- eval(toolbarMenus["help"][helpButtonItem]._action);
- }
- }
- function doMenuHelp() {
- //In order to ensure the correct relative URL when the CCL help function
- //is called, invoke the onclick of the toolbar button directly.
-
- var button = document.getElementById("help");
-
- if (button.fireEvent) {
- button.fireEvent('onclick');
- } else {
- var eventObject = document.createEvent('MouseEvents');
- eventObject.initMouseEvent('click',true,true,window,0,0,0,0,0,false,false,false,false,0,null);
- button.dispatchEvent(eventObject);
- }
- }
- function doZeroSuppression() {
- //Get the present menu item's action and perform it.
- eval(toolbarMenus["zero"][zeroSuppressionButtonItem]._action);
- }
- function doMenuOrButton(event, button) {
- //If we have only 1 menu item, then execute it. Otherwise display the menu.
- if (getNumMenuItems(button.id) == 1) {
- eval(toolbarMenus[button.id][getFirstMenuIndex(button.id)]._action);
- } else {
- doMenuButtonAction(event, button.nextSibling);
- }
- }
- function setChartButton(menuName) {
- var chartMenu = toolbarMenus["chart"];
- if (menuName) {
- for (var i = 0; i < chartMenu.length; i++) {
- if (chartMenu[i]._name == menuName) {
- chartButtonItem = i;
- }
- }
- }
-
- var button = document.getElementById("chart");
-
- if (chartButtonItem >= 0) {
- button.setAttribute("help",chartMenu[chartButtonItem]._help);
- }
- setButton(button,getButtonState(button));
- }
- function setXtabButton(menuName) {
- var xtabMenu = toolbarMenus["xtab"];
- if (menuName) {
- for (var i = 0; i < xtabMenu.length; i++) {
- if (xtabMenu[i]._name == menuName) {
- xtabButtonItem = i;
- }
- }
- }
- var button = document.getElementById("xtab");
-
- if (xtabButtonItem >= 0) {
- button.setAttribute("help",xtabMenu[xtabButtonItem]._help);
- }
- setButton(button,getButtonState(button));
- }
- function setZeroButton(menuName) {
-
- var zeroMenu = toolbarMenus["zero"];
-
- if (menuName) {
- for (var i = 0; i < zeroMenu.length; i++) {
- if (zeroMenu[i]._name == menuName) {
- zeroSuppressionButtonItem = i;
- }
- }
- }
- var button = document.getElementById("zero");
- if (zeroSuppressionButtonItem >= 0) {
- button.setAttribute("help",zeroMenu[zeroSuppressionButtonItem]._help);
- }
- if (isToggled(button)) {
- setButton(button,getButtonState(button));
- } else if (menuName) {
- toggleButton(button,true);
- }
- }
- function setHelpButtonStatusMsg() {
- var helpMenu = toolbarMenus["help"];
- var button = document.getElementById("help");
- if (helpButtonItem >= 0) {
- button.setAttribute("help", helpMenu[helpButtonItem]._help);
- button.setAttribute("title", helpMenu[helpButtonItem]._label);
- }
- }
- function isToggled(button) {
- return (button.getAttribute("isToggled") == "true");
- }
- function setToggled(button, toggled) {
- if (toggled) {
- button.setAttribute("isToggled", "true");
- } else {
- button.setAttribute("isToggled", "false");
- }
- }
- function toggleButton(button, untoggleable) {
- if (topparent.getXtabFrame()) {
- if (!isToggled(button)) {
- setToggled(button, true);
- setButton(button, getButtonState(button));
- var buttonsInGroup = toggleGroups[parseInt(button.getAttribute("toggleGroup"))];
- if (buttonsInGroup != null) {
- for (var i = 0; i < buttonsInGroup.length; i++) {
- if (buttonsInGroup[i] != button.id)
- unToggleButton(document.getElementById(buttonsInGroup[i]));
- }
- }
- } else if (untoggleable) {
- unToggleButton(button);
- }
- }
- }
- function unToggleButton(button) {
- if (isToggled(button)) {
- setToggled(button, false);
- setButton(button, getButtonState(button));
- }
- }
- function addToToggleGroup(name, group) {
- if (toggleGroups[group] == null) {
- toggleGroups[group] = new Array();
- }
- toggleGroups[group][toggleGroups[group].length] = name;
- document.getElementById(name).setAttribute("toggleGroup",group);
- }
- function addMenuItem(menuName, menuItemName, icon, action, checked) {
- var menuArray = toolbarMenus[menuName];
- var menuItem;
- for (var i = 0; i < menuArray.length; i++) {
- if (menuArray[i]._name == menuItemName) {
- menuArray[i]._img = icon + ext;
- menuArray[i]._action = action;
- return;
- }
- }
- }
- function getFirstMenuIndex(menuName) {
- var menuArray = toolbarMenus[menuName];
- for (var i = 0; i < menuArray.length; i++) {
- if (menuArray[i]._state != STATUS_HIDDEN) {
- return i;
- }
- }
- return -1;
- }
- function getActiveMenuIndex(menuName) {
- var menuArray = toolbarMenus[menuName];
- for (var i = 0; i < menuArray.length; i++) {
- if (menuArray[i]._state == STATUS_PRESSED) {
- return i;
- }
- }
-
- //If we get here the currently active one is not available, so
- //return the first visible button.
- for (var i = 0; i < menuArray.length; i++) {
- if (menuArray[i]._state == STATUS_NORMAL)
- return i;
- }
- //None visible, so return -1.
- return -1;
- }
- function getNumMenuItems(menuName) {
- var ctr = 0;
- var menuArray = toolbarMenus[menuName];
-
- if (!menuArray)
- return 0;
-
- for (var i = 0; i < menuArray.length; i++) {
- if (menuArray[i]._state != STATUS_HIDDEN)
- ctr++;
- }
- return ctr;
- }
- function doMenuButtonAction(event, button) {
- if (topparent.getXtabFrame() && !topparent.isXtabStillLoading()) {
- if (typeof initialized == "undefined" || !initialized)
- return false;
- var ownerButton = getOwnerButton(button);
- if (!isDisabled(ownerButton)) {
- var menuArray = toolbarMenus[ownerButton.id];
- var contextItems = new Array();
- for (var i = 0; i < menuArray.length; i++) {
- if (menuArray[i]._state != STATUS_HIDDEN) {
- var funcBody = menuArray[i]._action;
- var func = new Function(funcBody);
- contextItems[contextItems.length] = new ContextItem(menuArray[i]._img, menuArray[i]._label, func, (menuArray[i]._state == STATUS_DISABLED), menuArray[i]._checked);
- }
- }
- ContextMenu.display(event, contextItems);
- }
- }
- }
- function toolbarMenuRecord(name,state,label,help) {
- this._name = name;
- this._state = state;
- this._label = label;
- this._help = help;
- this._img = null;
- this._action = null;
- }
- function getOwnerButton(menuButton) {
- if (menuButton.id == "file" || menuButton.id == "displayoptionmenu")
- return menuButton;
- else
- return document.getElementById(menuButton.id.substr(5,menuButton.id.length));
- }
- function validState(state) {
- return (state == STATUS_HIDDEN || state == STATUS_NORMAL || state == STATUS_PRESSED || state == STATUS_DISABLED);
- }
- function checkAllButtonPropertiesLoaded() {
-
- var buttons = document.getElementById("toolbarButtons").childNodes;
- for (var i = 0; i < buttons.length; i++) {
- if (!buttons[i].id)
- return false;
- if (buttons[i].id != "sep" && buttons[i].id.indexOf("menu") != 0 && !validState(parseInt(buttons[i].getAttribute("state"))))
- return false;
- }
- return true;
- }
- function isMenuButton(button) {
- return button.id.substr(0,5) == "menu_";
- }
-
- function setAllButtons() {
- var buttons = document.getElementById("toolbarButtons").childNodes;
- var sepGif = "sep.gif"
- var sepPath = buttonPath + sepGif;
- var arrowGif = "arrow.gif"
- var arrowPath = buttonPath + arrowGif;
- for (var i = 0; i < buttons.length; i++) {
- if (buttons[i].id == 'sep') {
- if (!buttons[i].src || buttons[i].src.indexOf("/" + sepGif) < 0) {
- buttons[i].src = sepPath;
- }
- }
- else if (isMenuButton(buttons[i])) {
-
- if (!buttons[i].src || buttons[i].src.indexOf("/" + arrowGif) < 0) {
- buttons[i].src = arrowPath;
- }
-
- var ownerButton = getOwnerButton(buttons[i]);
- if (getNumMenuItems(ownerButton.id) > 1) {
- if (parseInt(ownerButton.getAttribute("state")) == STATUS_PRESSED) {
- setButton(buttons[i],BTN_NORMAL);
- } else {
- setButton(buttons[i],getImgType(ownerButton));
- }
- } else {
- setButton(buttons[i],BTN_HIDDEN);
- }
- } else {
- setButton(buttons[i],getImgType(buttons[i]));
- if (buttons[i].getAttribute("state") != STATUS_PRESSED) {
- unToggleButton(buttons[i]);
- } else if (!isToggled(buttons[i])) {
- toggleButton(buttons[i], true);
- }
- // Store the original state of all toolbar buttons.
- originalButtonStates[buttons[i].id] = parseInt(buttons[i].getAttribute("state"))
- }
- }
- var buttons = document.getElementById("custom_toolbarButtons").childNodes;
- for (var i = 0; i < buttons.length; i++) {
- setButton(buttons[i],getImgType(buttons[i]));
- }
- var buttons = document.getElementById("right_toolbarButtons").childNodes;
- for (var i = 0; i < buttons.length; i++) {
- if (buttons[i].id == 'sep') {
- buttons[i].src = buttonPath + "/sep.gif";
- } else {
- setButton(buttons[i],getImgType(buttons[i]));
- }
- }
-
- hourglass.src = buttonPath + "/hourglass.gif";
-
- }
- function getImgType(button) {
- switch (parseInt(button.getAttribute("state"))) {
- case STATUS_HIDDEN: return BTN_HIDDEN;
- case STATUS_NORMAL: return BTN_NORMAL;
- case STATUS_PRESSED: return BTN_PRESSED;
- case STATUS_DISABLED: return BTN_DISABLED;
- }
- }
- function addButtonToPreloadArray() {
- for (var i = 0; i < buttonRules.length; i++) {
- toolBarImages[i] = new Array();
- for ( var j = 0; j < buttonRules[i][2].length; j++ ) {
- var btnImage = new Image();
- btnImage.src = buttonPath + buttonRules[i][1] + buttonRules[i][2][j] + ext;
- toolBarImages[j][buttonRules[i][0]] = btnImage;
- }
- }
- }
- function setButton(button, type) {
- var id = getButtonId(button);
- if (type != BTN_HIDDEN) {
- var arrayIdx = IDX_DEFAULT;
- if (type == BTN_DISABLED)
- arrayIdx = IDX_DISABLED;
-
- if (button.id.substr(0,5) != "menu_") {
- //check if the button has been loaded
- if (toolBarImages[arrayIdx][id]) {
- if (button.src != toolBarImages[arrayIdx][id].src) {
- button.src = toolBarImages[arrayIdx][id].src;
- }
- button.width = buttonSize;
- if (button.getAttribute("menu_integrated") == "true") {
- button.width += 10;
- }
- }
- } else {
- //check if the button has been loaded
- if (toolBarImages[arrayIdx]["menu"]) {
- if (button.src != toolBarImages[arrayIdx]["menu"].src) {
- button.src = toolBarImages[arrayIdx]["menu"].src;
- }
- button.width = "10";
- }
- }
- button.className = getButtonClass(type);
- button.style.visibility = "visible";
- } else {
- button.width = "0";
- button.style.visibility = "hidden";
- }
- }
- function getButtonClass(type) {
- switch (type) {
- case BTN_RAISED: return "toolbarButtonRollOver";
- case BTN_PRESSED: return "toolbarButtonPressed";
- case BTN_ROLL_PRESSED: return "toolbarButtonRollOverPressed";
- case BTN_DISABLED: return "toolbarButtonDisabled";
- }
- return "toolbarButtonNormal";
- }
- function isDisabled(button) {
- return (button.getAttribute("state") == STATUS_DISABLED);
- }
- // Sets the button state. state is one of STATUS_*
- function setButtonState(button, state) {
- button.setAttribute("state",state);
- setButton(button,getImgType(button));
- }
- function isHidden(button) {
- return (button.getAttribute("state") == STATUS_HIDDEN);
- }
- function setRollOver(button, rollover) {
- if (rollover) {
- button.setAttribute("rollover","true");
- } else {
- button.setAttribute("rollover","false");
- }
- }
- function isRollOver(button) {
- return (button.getAttribute("rollover") == "true");
- }
- function getButtonState(button) {
- if (isHidden(button))
- return BTN_HIDDEN;
- if (isDisabled(button))
- return BTN_DISABLED;
- if (isToggled(button)) {
- if (isRollOver(button)) {
- return BTN_ROLL_PRESSED;
- } else {
- return BTN_PRESSED;
- }
- } else {
- if (isRollOver(button)) {
- return BTN_RAISED;
- } else {
- return BTN_NORMAL;
- }
- }
- }
- function setStatusBar(button) {
- if (getButtonState(button) == BTN_ROLL_PRESSED && button.getAttribute("pressedHelp"))
- window.status = CEncodingUtil.ForceUnescape(button.getAttribute("pressedHelp"));
- else
- window.status = CEncodingUtil.ForceUnescape(button.getAttribute("help"));
- }
- function buttonMouseOver(event, button) {
- if (typeof initialized == "undefined" || !initialized)
- return false;
- if (!isDisabled(button)) {
- setRollOver(button, true);
- setButton(button, getButtonState(button));
- }
- setStatusBar(button); //BF 530075 - allow status bar messages for disabled buttons
- return true;
- }
- function buttonMouseOut(event, button) {
- if (typeof initialized == "undefined" || !initialized)
- return false;
- if (!isDisabled(button)) {
- setRollOver(button, false)
- setButton(button, getButtonState(button));
- window.status = "";
- }
- return true;
- }
- function buttonMouseOverMenu(event, button) {
- if (typeof initialized == "undefined" || !initialized)
- return false;
- var ownerButton = getOwnerButton(button);
- //Check the owner button
- var ownerButton = getOwnerButton(button);
- if (!isDisabled(ownerButton)) {
- setButton(ownerButton, getButtonState(ownerButton));
- setButton(button, BTN_RAISED);
- }
- }
- function buttonMouseOutMenu(event, button) {
- if (typeof initialized == "undefined" || !initialized)
- return false;
- var ownerButton = getOwnerButton(button);
- //Check the owner button
- var ownerButton = getOwnerButton(button);
- if (!isDisabled(ownerButton)) {
- setButton(ownerButton, getButtonState(ownerButton));
- setButton(button, BTN_NORMAL);
- }
- }
- function sync_menu(menu, syncArray) {
- for (var i = 0; i < menu.length; i++) {
- menu[i]._state = parseInt(syncArray[i]);
- }
- }
- function sync(){
- var menuMax = 13;
- var xtabFrame = topparent.getXtabFrame();
- var arrayIconState = topparent.getGlobal("gIconState");
- var i = 0;
- var buttons = document.getElementById("toolbarButtons").childNodes;
- for (var j = 0; j < buttons.length; j++) {
- if (buttons[j].id != 'sep' && !isMenuButton(buttons[j])) {
- buttons[j].setAttribute("state",arrayIconState[i++]);
- }
- }
- buttons = document.getElementById("right_toolbarButtons").childNodes;
- for (var j = 0; j < buttons.length; j++) {
- if (buttons[j].id != 'sep' && !isMenuButton(buttons[j])) {
- buttons[j].setAttribute("state",arrayIconState[i++]);
- }
- }
- buttons = document.getElementById("custom_toolbarButtons").childNodes;
- for (var j = 0; j < buttons.length; j++) {
- if (buttons[j].id != 'sep' && !isMenuButton(buttons[j])) {
- buttons[j].setAttribute("state",arrayIconState[i++]);
- }
- }
- sync_menu(toolbarMenus["xtab"],topparent.getGlobal("gMenuState[0]"));
- sync_menu(toolbarMenus["chart"],topparent.getGlobal("gMenuState[1]"));
- sync_menu(toolbarMenus["displayoptionmenu"],topparent.getGlobal("gMenuState[2]"));
- sync_menu(toolbarMenus["zero"],topparent.getGlobal("gMenuState[3]"));
- sync_menu(toolbarMenus["file"],topparent.getGlobal("gMenuState[4]"));
- sync_menu(toolbarMenus["help"],topparent.getGlobal("gMenuState[5]"));
- xtabButtonItem = getActiveMenuIndex("xtab");
- chartButtonItem = getActiveMenuIndex("chart");
- zeroSuppressionButtonItem = getActiveMenuIndex("zero");
- helpButtonItem = getFirstMenuIndex("help");
- setAllButtons();
- setXtabButton();
- setChartButton();
- setZeroButton();
- setHelpButtonStatusMsg();
- fh=xtabFrame.fhidden;
- winFocus(xtabFrame);
- }
- /********* Action Pane Handling routines **************/
- function clearToggleButton() {
- //Clear the action pane buttons
- var buttonsInGroup = toggleGroups[ACT_PANE_GROUP];
- if (buttonsInGroup != null) {
- for (var i = 0; i < buttonsInGroup.length; i++) {
- unToggleButton(document.getElementById(buttonsInGroup[i]));
- }
- }
- }
- function updateToggleButton(actionPaneIndex) {
- //Clears all except button corresponding to the acion pane given
- var ACT_PANE_FIND = "1";
- var ACT_PANE_HIDESHOW = "2";
- var ACT_PANE_EXPLAIN = "4";
- var ACT_PANE_CALCULATION = "7";
- switch (actionPaneIndex) {
- case ACT_PANE_FIND: toggleButton(document.getElementById("find"), false); break;
- case ACT_PANE_HIDESHOW: toggleButton(document.getElementById("hideshow"), false); break;
- case ACT_PANE_EXPLAIN: toggleButton(document.getElementById("explain"), false); break;
- case ACT_PANE_CALCULATION: toggleButton(document.getElementById("calculation"), false); break;
- }
- }
- //******* Functions called from buttons or menu items *******
- function doit(s){
- if (topparent.getXtabFrame() && topparent.getXtabFrame().doit)
- topparent.getXtabFrame().doit(s);
- }
- // Gets a XTab element by its position (row, col)
- function GetElement( row, col )
- {
- var elem = null;
- if ( topparent.getXtabFrame().xtabCache.exists(row,col) ) {
- elem = topparent.getXtabFrame().xtabCache.getXtabCell(row,col);
- }
- return elem;
- }
- // Get parent row of an element.
- // If there is no parent, returns null.
- function GetParentRow( element )
- {
- var parent = null;
- var row = topparent.getXtabFrame().parseRowId(element.id);
- var col = topparent.getXtabFrame().parseColId(element.id);
- // Get parent
- if ( col > 0 )
- {
- // Get element @ row, column - 1
- col--;
- parent = GetElement( row, col );
- // Due to spanning the parent may not be at the same row number, move up the
- // row numbers till we get an element at the column we want.
- while ( !parent && ( row > 0 ) )
- {
- row--;
- parent = GetElement( row, col );
- }
- }
- return parent;
- }
- // Get parent column of an element.
- // If there is no parent, returns null.
- function GetParentCol( element )
- {
- var parent = null;
- var row = topparent.getXtabFrame().parseRowId(element.id);
- var col = topparent.getXtabFrame().parseColId(element.id);
- // Get parent
- if ( row > 0 )
- {
- // Get element @ row - 1, column
- row--;
- parent = GetElement( row, col );
- // Due to spanning the parent may not be at the same column number, move left
- // till we get an element at the column we want.
- while ( !parent && ( col > 0 ) )
- {
- col--;
- parent = GetElement( row, col );
- }
- }
- return parent;
- }
- // Get entire nested path i.e. parents of an element in the nested crosstab hierarchy
- // Returns in format (ppdsID,dimIdx/ppdsID,dimIdx/...) path
- // Walks up the nested rows/columns.
- // 1st param is element, 2nd is set to "row" walk up rows
- function getNestedPath( pathLeaf, rowOrCol, useSummary )
- {
- var result = "";
- var element = pathLeaf;
- while( element )
- {
- if( useSummary || !element.getAttribute("summary") ) // ignore summary
- {
- // Get parent path.
- var curPath = "";
- curPath += element.getAttribute("ppdsId");
- curPath += "," + element.getAttribute("dimIdx");
-
- // Prepend parent path.
- if ( result != "" )
- curPath += "/";
- curPath += result;
-
- // Thats our new result.
- result = curPath;
- }
- if ( rowOrCol == "row" )
- element = GetParentRow( element );
- else
- element = GetParentCol( element );
- }
- return result;
- }
- // Validate current selection to see if it is consistent with Drill Through.
- // All elemnts in row selection & col selection should have the same parent.
- function ValidateSelectionForDrillThru( rowSelections, colSelections )
- {
- var bValid = true; // be optimistic !
- // All row selections must have same parent
- if ( rowSelections.length > 1 )
- {
- var parentRow = GetParentRow( rowSelections[0] );
- for( var i = 1; bValid && i < rowSelections.length; ++i)
- bValid = ( GetParentRow( rowSelections[i] ) == parentRow );
- }
- // All column selections must have same parent
- if ( bValid && ( colSelections.length > 1 ) )
- {
- var parentCol = GetParentCol( colSelections[0] );
- for( var i = 1; bValid && i < colSelections.length; ++i)
- bValid = ( GetParentCol( colSelections[i] ) == parentCol);
- }
- // If we have both row and column slections, they must not share any dimensions
- // in all their nested ancestor path
- if ( bValid && ( rowSelections.length > 0 ) && ( colSelections.length > 0 ) )
- {
- // Get all dimensions used by row nesting.
- var rowDimensions = new Array();
- var curElem = rowSelections[0];
- while ( curElem )
- {
- rowDimensions[curElem.getAttribute("dimIdx")] = true;
- curElem = GetParentRow( curElem );
- }
- // We should not encounter any of the row Dimensions in the column ancestor path.
- curElem = colSelections[0];
- while ( bValid && curElem )
- {
- if ( rowDimensions[curElem.getAttribute("dimIdx")] )
- bValid = false;
- curElem = GetParentCol( curElem );
- }
- }
- return bValid;
- }
- function OnXTabSelectionChange()
- {
- // XTab Selection has changed, Do any toolbar button updates that depend on selection here.
- // ---- DRILL THROUGH BUTTON >>>>
- // Find Original State of Drill Through button.
- drillThruButton = document.getElementById("drillthrough")
- var origState = originalButtonStates[drillThruButton.id];
-
- switch ( origState )
- {
- case STATUS_HIDDEN :
- case STATUS_DISABLED :
- // Cannot enable drill though button that was disabled by the server
- break;
- case STATUS_NORMAL :
- case STATUS_PRESSED :
- {
- // see if we need to disable/enable the button
- var rowSelections = topparent.getXtabFrame().getSelected("r");
- var colSelections = topparent.getXtabFrame().getSelected("c");
- var bOkToDrillThru = ValidateSelectionForDrillThru( rowSelections, colSelections );
- if ( bOkToDrillThru ) {
- setButtonState( drillThruButton, origState );
- topparent.enableDrill();
- }
- else {
- setButtonState( drillThruButton, STATUS_DISABLED );
- topparent.disableDrill();
- }
- break;
- }
- }
- // ---- DRILL THROUGH BUTTON <<<<
- }
- // Borrowed and modified from Custom Exceptions (custexcept.js -> buildSelectionString).
- // Returns current selection in as a list of tab separated (ppdsID,dimIdx/ppdsID,dimIdx/...) path pairs.
- function encodeSelectionForDrillThru() {
- var result = "";
- var rowSelections = topparent.getXtabFrame().getSelected("r");
- var colSelections = topparent.getXtabFrame().getSelected("c");
- //result = "ROWS --> ";
- for(var i = 0; i < rowSelections.length; ++i)
- {
- // Add nested path.
- result += getNestedPath( rowSelections[i], "row", false) + "\t";
- }
- //result += "COLS --> ";
- for(var i = 0; i < colSelections.length; ++i)
- {
- // Add nested path.
- result += getNestedPath( colSelections[i], "col", false) + "\t";
- }
- //make sure we return a space as the value, or the parameter will get stripped
- //by the XSL transform the next time through
- if (result == "")
- return " ";
- return result;
- }
- function ra(as){
- var fh = topparent.getXtabFrame().document.fhidden;
- if ( !topparent.getXtabFrame()._fhchanged ) {
- topparent.getXtabFrame()._fhchanged = true;
- topparent.getXtabFrame()._fhtarget = fh.target;
- topparent.getXtabFrame()._fhaction = fh.action;
- topparent.getXtabFrame()._fhRA = fh.RA.value;
- }
-
- var RA_CSV = 1,
- RA_XLS = 11,
- RA_PDF = 12,
- RA_DRILLTHRU = 4,
- RA_BOOKMARK = 7,
- RA_SPECS = 98,
- RA_XLSX=13;
-
- if( as == RA_CSV || as == RA_PDF || as == RA_DRILLTHRU || as == RA_BOOKMARK || as == RA_XLS ||as==RA_XLSX || RA_SPECS) {
- FTok = false;
-
- fh.RA.value = as;
- var targetWindow = topparent;
- if( ! targetWindow.name || targetWindow.length == 0 )
- targetWindow.name = "PPESTarget";
- fh.target = targetWindow.name;
- if( as == RA_BOOKMARK ) {
- if( parent.parent != parent ) {
- fh.target = "_blank"; // open a new window because bookmarks set the location
- }
- fh.HTTPSBM.value = location.protocol.toLowerCase();
- } else if( as == RA_CSV ) {
- resetExportVars(fh);
- fh.action += "?MIME=.CSV";
- } else if( as == RA_SPECS ) { /* Show Specs (PPX & CFX) */
- fh.target = "_blank";
- } else if( as == RA_XLS ) {
- resetExportVars(fh);
- fh.action += "?MIME=.XLS";
- fh.CNCT.value = 24;
- } else if( as == RA_XLSX ) {
- resetExportVars(fh);
- fh.action += "?MIME=.XLSX";
- fh.CNCT.value = 24;
- } else if( as == RA_PDF ) {
- resetExportVars(fh);
- fh.action += "?MIME=.PDF";
- } else if ( as == RA_DRILLTHRU )
- {
- var selStr = encodeSelectionForDrillThru();
- fh.DTSEL.value = selStr;
- fh.target = "_blank";
- }
- if( as == RA_PDF && document.cookie.length != 0 && getCookie("PageOrientation") ) {
- submitExportIcon( topparent.getXtabFrame() );
- } else {
- topparent.getXtabFrame().parseAndSubmit(fh);
- }
- } else {
- // We're not expecting it -- eat it
- }
- }
- // It will clear the MiME type and CO value
- function resetExportVars(fh) {
- fh.action = fh.action.replace(/\?MIME=.CSV|\?MIME=.XLSX|\?MIME=.XLS|\?MIME=.PDF/gi, '');
- fh.CO.value = "";
- }
- function launchStudio(studio) {
- var fh = topparent.getXtabFrame().document.fhidden;
- switch (studio) {
- case 'as': doParent('RU:4', '_blank'); break;
- case 'rs': doParent('RU:3', '_blank'); break;
- case 'bua': doParent('RU:7', '_blank'); break;
- default: break;
- }
- fh.CO.value = ""; // Cleanup
- }
- function doParent(action, target){
- if (topparent.getXtabFrame()) {
- topparent.getXtabFrame().doParent(action, target);
- }
- }
- function ret() {
- if( document.pqr != null ) {
- document.pqr.submit();
- }
- }
- function doReset() {
- if(topparent.getXtabFrame() && document.reset != null ) {
- topparent.getXtabFrame().parseAndSubmit(document.reset);
- }
- }
- function ButtonEnable() {
- if (ZS_PRESSED == 1) {
- restoreZSButton();
- }
-
- if (ETS_PRESSED == 1) {
- restoreETSButton();
- }
- }
- function restoreZSButton() {
- ZS_PRESSED = 0;
- if (ZS_ICON != "") {
- document.getElementById("zero").src = ZS_ICON;
- ZS_ICON = "";
- }
- }
- function restoreETSButton() {
- ETS_PRESSED = 0;
- if ( ETS_ICON != "" ) {
- document.getElementById("f8020").src = ETS_ICON;
- ETS_ICON = "";
- }
- }
- function DisableZS() {
- ZS_PRESSED = 1;
- setTimeout( "setWorking('zs');", 1000 );
- }
- function DisableETS() {
- ETS_PRESSED = 1;
- setTimeout( "setWorking('ets');", 1000 );
- }
- function setWorking(button) {
- switch(button) {
- case 'zs': {
- if (ZS_PRESSED == 1) {
- var button = document.getElementById("zero");
- ZS_ICON = button.src;
- button.src = hourglass.src;
- }
- break;
- }
- case 'ets': {
- if (ETS_PRESSED == 1) {
- var button = document.getElementById("f8020");
- ETS_ICON = button.src;
- button.src = hourglass.src;
- }
- break;
- }
- }
- }
|