123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350 |
- /*
- *+------------------------------------------------------------------------+
- *| Licensed Materials - Property of IBM
- *| IBM Cognos Products: Viewer
- *| (C) Copyright IBM Corp. 2001, 2017
- *|
- *| US Government Users Restricted Rights - Use, duplication or
- *| disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
- *|
- *+------------------------------------------------------------------------+
- */
- function CCognosViewerFragment(cognosViewer)
- {
- this.m_cognosViewer = cognosViewer;
- this.m_bUseFrameworkEvents = false;
- this.m_bSharePromptValues = false;
- this.m_bMatchOnParameterNameOnly = false;
- this.m_reportParameters = {};
- this.m_burstItems = {};
- this.m_promptChannel = "";
- this.m_bShareDrillEvents = false;
- this.m_drillChannel = "";
- this.m_bShareAuthoredDrillEvents = false;
- this.m_authoredDrillChannel = "";
- this.m_fragmentUpdateList = [];
- this.m_toolbarProperties = "hidden";
- this.m_fragmentWindowState = "";
- this.m_bTransientUpdateCalled = false;
- this.m_saveReportInProgress = false;
- if(cognosViewer && typeof cognosViewer.envParams["fragment.toolbarProperties"] != "undefined")
- {
- this.m_toolbarProperties = cognosViewer.envParams["fragment.toolbarProperties"];
- }
- }
- CCognosViewerFragment.prototype.fireEventWhenComplete = function() {
- var envParams = this.m_cognosViewer.envParams;
- if (envParams["fragment.fireEventWhenComplete"] && envParams["fragment.fireEventWhenComplete"].length > 0) {
- var fragmentImpl = this.getFragmentObject();
- fragmentImpl.raiseEvent(envParams["fragment.fireEventWhenComplete"], "", "");
-
- envParams["fragment.fireEventWhenComplete"] = "";
- }
- }
- CCognosViewerFragment.prototype.isBUX = function()
- {
- if (this.m_bBux == true)
- {
- return true;
- }
- return false;
- };
- CCognosViewerFragment.prototype.getCognosViewer = function()
- {
- return this.m_cognosViewer;
- };
- CCognosViewerFragment.prototype.raiseEvent = function(sEvent, sPayLoad, sScope)
- {
- if(this.m_bUseFrameworkEvents === false && typeof window.gaRV_INSTANCES != "undefined")
- {
- for(var viewerInstance = 0; viewerInstance < window.gaRV_INSTANCES.length; ++viewerInstance)
- {
- var cognosViewer = window.gaRV_INSTANCES[viewerInstance];
- if(typeof cognosViewer != "undefined" && this.m_cognosViewer.getId() != cognosViewer.getId() && typeof cognosViewer.m_viewerFragment != "undefined")
- {
- cognosViewer.m_viewerFragment.viewerEvent(sPayLoad);
- }
- }
- }
- else
- {
- var fragmentImpl = this.getFragmentObject();
- fragmentImpl.raiseEvent(sEvent, sPayLoad, sScope);
- }
- };
- CCognosViewerFragment.prototype.addToUpdateList = function(viewerFragment)
- {
- this.m_fragmentUpdateList.push(viewerFragment);
- };
- CCognosViewerFragment.prototype.sharePromptValues = function()
- {
- return this.m_bSharePromptValues;
- };
- CCognosViewerFragment.prototype.matchOnParameterNameOnly = function()
- {
- return this.m_bMatchOnParameterNameOnly;
- };
- CCognosViewerFragment.prototype.hasPromptChannel = function()
- {
- return (this.m_promptChannel != "");
- };
- CCognosViewerFragment.prototype.getPromptChannel = function()
- {
- return this.m_promptChannel;
- };
- CCognosViewerFragment.prototype.getParameterMap = function()
- {
- var specMap = this.m_cognosViewer.envParams["fragment.transientSpecMap"];
- if(specMap == "burst")
- {
- return this.m_burstItems;
- }
- else if (specMap == "parameter")
- {
- return this.m_reportParameters;
- }
- // fall back on the ui.action
- var sAction = this.m_cognosViewer.envParams["ui.action"];
- if(sAction == "view")
- {
- return this.m_burstItems;
- }
- else
- {
- return this.m_reportParameters;
- }
- };
- CCognosViewerFragment.prototype.getPromptValue = function(sParameterName, sModelItem, sPromptChannel)
- {
- var sValue = null;
- if(this.getPromptChannel() == sPromptChannel)
- {
- var parameterMap = this.getParameterMap();
- if(sModelItem != "" && !this.matchOnParameterNameOnly()){
- // first try to match on the model item
- for(var key in parameterMap)
- {
- if(parameterMap[key] == sModelItem)
- {
- if(this.hasPromptChannel() && sParameterName.indexOf("PROMPTCHANNEL_" + this.getPromptChannel()) == -1)
- {
- continue;
- }
- sValue = key;
- break;
- }
- }
- }
- //When modelItem is empty or could not match on the model item, return the parameter name.
- if(sValue == null && sParameterName in parameterMap)
- {
- sValue = sParameterName;
- }
- }
- return sValue;
- };
- CCognosViewerFragment.prototype.shareDrillEvents = function()
- {
- return this.m_bShareDrillEvents;
- };
- CCognosViewerFragment.prototype.hasDrillChannel = function()
- {
- return (this.m_drillChannel != "");
- };
- CCognosViewerFragment.prototype.getDrillChannel = function()
- {
- return this.m_drillChannel;
- };
- CCognosViewerFragment.prototype.shareAuthoredDrillEvents = function()
- {
- return this.m_bShareAuthoredDrillEvents;
- };
- CCognosViewerFragment.prototype.hasAuthoredDrillChannel = function()
- {
- return (this.m_authoredDrillChannel != "");
- };
- CCognosViewerFragment.prototype.getAuthoredDrillChannel = function()
- {
- return this.m_authoredDrillChannel;
- };
- CCognosViewerFragment.prototype.getFragmentObject = function()
- {
- var fragmentObject = null;
- try
- {
- fragmentObject = window[this.m_cognosViewer.getId()];
- }
- catch(exception){}
- return fragmentObject;
- };
- CCognosViewerFragment.prototype.isWaitPage = function()
- {
- if (this.m_cognosViewer != null && this.m_cognosViewer.isWorking())
- {
- return true;
- }
- return false;
- };
- CCognosViewerFragment.prototype.canShowToolbar = function()
- {
- if (this.isWaitPage())
- {
- return false;
- }
- var fragmentObject = this.getFragmentObject();
- if(fragmentObject)
- {
- switch(this.m_toolbarProperties)
- {
- case "show":
- return true;
- case "showMaximized":
- return (fragmentObject.windowState == "maximized");
- case "showNormal":
- return (fragmentObject.windowState == "normal");
- default:
- return false;
- }
- }
- return false;
- };
- CCognosViewerFragment.prototype.showToolbar = function(bShow)
- {
- if(typeof this.m_cognosViewer.rvMainWnd != "undefined")
- {
- var toolbar = this.m_cognosViewer.rvMainWnd.getToolbar();
- if(toolbar)
- {
- if(bShow)
- {
- toolbar.showBar();
- }
- else
- {
- toolbar.hideBar();
- }
- return true;
- }
- }
- return false;
- };
- CCognosViewerFragment.prototype.onloadEvent = function(evt, state)
- {
- var sourcePayload = (evt && evt.payload) ? evt.payload.source : "";
- if (sourcePayload === "cache")
- {
- if (state) {
- var requestHandler = new RequestHandler(this.m_cognosViewer);
- requestHandler.updateViewerState(state);
- }
- // if the payload source flag is set to cache, that means the user did a browser back or forward.
- // the best we can do in this situation is to rerun the report from scratch
- var frag = this.getFragmentObject();
- if (frag != null && typeof frag != "undefined")
- {
- frag.retrieve("cv.ignoreState=true");
- }
- }
- else
- {
- this.fireEventWhenComplete();
- if (state != null)
- {
- var requestHandler = new RequestHandler(this.m_cognosViewer);
- requestHandler.processInitialResponse(state);
- }
- if(typeof this.m_cognosViewer.rvMainWnd != "undefined")
- {
- if (!this.isWaitPage())
- {
- this.m_cognosViewer.rvMainWnd.draw();
- this.showToolbar(this.canShowToolbar());
- }
- }
- }
- };
- CCognosViewerFragment.prototype.unloadEvent = function(evt)
- {
- var frag = this.getFragmentObject();
- if (frag != null && typeof frag != "undefined")
- {
- frag.removeEventListener("fragment.load", this.m_cognosViewer.getId() + "handleFragmentLoadEvent", false);
- }
- this.m_cognosViewer.closeContextMenuAndToolbarMenus();
-
- var selectionController = this.m_cognosViewer.getSelectionController();
- selectionController.updateUI(document, selectionController.getSelections(), true, false);
- };
- CCognosViewerFragment.prototype.refreshEvent = function(evt)
- {
- this.m_cognosViewer.setKeepSessionAlive(true);
- if(typeof this.m_cognosViewer.rvMainWnd != "undefined")
- {
- this.m_cognosViewer.rvMainWnd.hideOpenMenus();
- }
- var selectionController =this.m_cognosViewer.getSelectionController();
- selectionController.updateUI(document, selectionController.getSelections(), true, false);
- };
- CCognosViewerFragment.prototype.visibilityChangedEvent = function(evt)
- {
- if (evt && evt.payload && evt.payload.currentVisibility === "hidden" && evt.payload.newVisibility === "visible")
- {
- /*
- * This is a bug in firefox (https://bugzilla.mozilla.org/show_bug.cgi?id=180802)
- * where the pdf plug-in gets destroyed when you set the visibility of the iframe or
- * its container to none. However, there is a work-around to set the iframes src attribute
- * which will force the plug-in to load again
- */
- if (this.m_cognosViewer.sBrowser === "moz" && this.m_cognosViewer.rvMainWnd.getCurrentFormat() === "PDF")
- {
- var oReportIFrame = document.getElementById("CVIFrame" + this.m_cognosViewer.getId());
- if (typeof oReportIFrame != "undefined")
- {
- oReportIFrame.setAttribute("src", oReportIFrame.getAttribute("src"));
- }
- }
- } else if (evt && evt.payload && evt.payload.currentVisibility === "visible") {
- this.m_cognosViewer.closeContextMenuAndToolbarMenus();
- }
- };
- CCognosViewerFragment.prototype.retrieveBeforeEvent = function(evt)
- {
- // if there's no payload then we were called by a transientUpdate
- if (typeof evt.payload === "string" && evt.payload.length == 0)
- {
- if (this.m_cognosViewer.isWorkingOrPrompting() || this.m_bTransientUpdateCalled == true)
- {
- var frag = this.getFragmentObject();
- if (frag != null && typeof frag != "undefined")
- {
- // this stops the fragment fragment from doing a retrive on us since we're taking care of it.
- evt.preventDefault();
- var sParams = "cv.ignoreState=true";
- for(var param in this.m_cognosViewer.envParams)
- {
- if(param.indexOf("frag-") != 0 && param != "cv.fragmentEvent" && param != "cv.transientSpec" && param != "cv.actionState" && param != "globalViewerTransient")
- {
- sParams += "&" + param + encodeURIComponent(this.m_cognosViewer.envParams[param]);
- }
- }
- frag.retrieve(sParams);
- }
- }
- this.m_bTransientUpdateCalled = true;
- }
- };
- CCognosViewerFragment.prototype.windowStateChangedEvent = function(evt)
- {
- var fragmentObject = this.getFragmentObject();
- if(fragmentObject)
- {
- fragmentObject.windowState = evt.payload.newWindowState;
- this.showToolbar(this.canShowToolbar());
- }
- };
- CCognosViewerFragment.prototype.changePromptValues = function(formFields)
- {
- var sEventPayLoad = "<parameters>";
- var bCredentialParameter = false;
- var formFieldNames = formFields.keys();
- for (var index = 0; index < formFieldNames.length; index++)
- {
- var requestParam = formFieldNames[index];
-
- if(requestParam.indexOf("p_") == 0)
- {
- var sParameterValue = formFields.get(requestParam);
- requestParam = requestParam.substring(2, requestParam.length);
- if(requestParam.indexOf("credential:") == 0)
- {
- bCredentialParameter = true;
- sEventPayLoad += "<parameter name=\"" + sXmlEncode(requestParam) + "\">" + sXmlEncode(sParameterValue) + "</parameter>";
- }
- else
- {
- if(this.hasPromptChannel())
- {
- requestParam = "PROMPTCHANNEL_" + this.getPromptChannel() + requestParam;
- }
- if(this.getPromptValue(requestParam, "", this.getPromptChannel()) != null)
- {
- var sModelItem = this.m_reportParameters[requestParam];
- sEventPayLoad += "<parameter name=\"" + sXmlEncode(requestParam) + "\" modelItem=\"" + sXmlEncode(sModelItem) + "\">" + sXmlEncode(sParameterValue) + "</parameter>";
- }
- }
- }
- }
- sEventPayLoad += "</parameters>";
- if(bCredentialParameter)
- {
- sEventPayLoad = "<credentialParameterEntered>" + sEventPayLoad + "</credentialParameterEntered>";
- this.raiseEvent("cognos.viewer.*", sEventPayLoad, "page");
- }
- else if(this.sharePromptValues())
- {
- sEventPayLoad = "<updatePromptValues>" + sEventPayLoad + "</updatePromptValues>";
- return this.viewerEvent(sEventPayLoad);
- }
- return false;
- };
- CCognosViewerFragment.prototype.viewerEvent = function(sPayload)
- {
- var viewerFragmentEvent = new CCognosViewerFragmentEvent(this.m_cognosViewer, sPayload);
- return viewerFragmentEvent.execute();
- };
- CCognosViewerFragment.prototype.raiseAuthoredDrillEvent = function(sDrillSpecification)
- {
- var sPayLoad = "<authoredDrillThrough>";
- sPayLoad += "<authoredDrillChannel>";
- sPayLoad += this.getAuthoredDrillChannel();
- sPayLoad += "</authoredDrillChannel>";
- sPayLoad += sDrillSpecification;
- sPayLoad += "</authoredDrillThrough>";
- if(this.shareAuthoredDrillEvents())
- {
- this.raiseEvent("cognos.viewer.*", "<collectAuthoredDrillThroughListeners><controllerFragment>" + this.m_cognosViewer.getId() + "</controllerFragment><authoredDrillChannel>" + this.getAuthoredDrillChannel() + "</authoredDrillChannel><sharePromptValues>" + this.sharePromptValues() +"</sharePromptValues></collectAuthoredDrillThroughListeners>", "page");
- }
- else
- {
- this.m_fragmentUpdateList.push(this);
- }
- for(var index = 0; index < this.m_fragmentUpdateList.length; ++index)
- {
- var viewerFragmentToUpdate = this.m_fragmentUpdateList[index];
- var authoredDrillEvent = new CCognosViewerFragmentEvent(viewerFragmentToUpdate.m_cognosViewer, sPayLoad);
- authoredDrillEvent.execute();
- }
- this.m_fragmentUpdateList = [];
- };
- CCognosViewerFragment.prototype.getSelectionContext = function()
- {
- var oCV = this.getCognosViewer();
- var modelPath = oCV.getModelPath();
- var sSelectionContext = "";
- if(typeof getViewerSelectionContext != "undefined" && typeof CSelectionContext != "undefined")
- {
- sSelectionContext = getViewerSelectionContext(oCV.getSelectionController(), new CSelectionContext(modelPath));
- }
- return sSelectionContext;
- };
- CCognosViewerFragment.prototype.raiseAADrillUpEvent = function()
- {
- var fragmentImpl = this.getFragmentObject();
- fragmentImpl.raiseEvent("cognos.viewer.AADrillUp", {"selectionContext":this.getSelectionContext()}, "page");
- };
- CCognosViewerFragment.prototype.raiseAADrillDownEvent = function()
- {
- var fragmentImpl = this.getFragmentObject();
- fragmentImpl.raiseEvent("cognos.viewer.AADrillDown", {"selectionContext":this.getSelectionContext()}, "page");
- };
- CCognosViewerFragment.prototype.raiseAuthoredDrillClickEvent = function()
- {
- var fragmentImpl = this.getFragmentObject();
- fragmentImpl.raiseEvent("cognos.viewer.authoredDrillClickEvent", {"selectionContext":this.getSelectionContext()}, "page");
- };
- CCognosViewerFragment.prototype.raiseGotoContextMenuEvent = function()
- {
- var oCV = this.getCognosViewer();
- var contextMenu = oCV.rvMainWnd.getContextMenu();
- var gtContextMenu = null;
- if (typeof contextMenu != "undefined" && contextMenu != null)
- {
- gtContextMenu = contextMenu.getGoToMenuItem().getMenu();
- }
- if (gtContextMenu != "undefined" && gtContextMenu != null && gtContextMenu.getNumItems() == 0)
- {
- var fragmentImpl = this.getFragmentObject();
- fragmentImpl.raiseEvent("cognos.viewer.gotoContextMenu", {"gotoContextMenu":gtContextMenu, "selectionContext":this.getSelectionContext(),"webContentRoot":oCV.getWebContentRoot(),"skin":oCV.getSkin()}, "page");
- }
- };
- function CCognosViewerFragmentEvent(cognosViewer, sPayload)
- {
- this.m_cognosViewer = cognosViewer;
- this.m_viewerEventSpecification = XMLBuilderLoadXMLFromString(sPayload);
- }
- CCognosViewerFragmentEvent.prototype.getFragmentObject = function()
- {
- return this.getViewerFragment().getFragmentObject();
- };
- CCognosViewerFragmentEvent.prototype.getViewerFragment = function()
- {
- return this.m_cognosViewer.m_viewerFragment;
- };
- CCognosViewerFragmentEvent.prototype.getEventNode = function()
- {
- if(this.m_viewerEventSpecification != null)
- {
- var eventNode = this.m_viewerEventSpecification.childNodes;
- if(eventNode && eventNode.length == 1)
- {
- return eventNode[0];
- }
- }
- return null;
- };
- CCognosViewerFragmentEvent.prototype.execute = function()
- {
- var eventNode = this.getEventNode();
- if(eventNode != null)
- {
- var eventName = eventNode.nodeName;
- try
- {
- this.eventMethod = eval("this." + eventName + "Event");
- return this.eventMethod(eventNode);
- }
- catch(e)
- {
- }
- }
- };
- CCognosViewerFragmentEvent.prototype.addRequestParams = function(eventSpecification, oParams)
- {
- for(var index = 0; index < eventSpecification.childNodes.length; ++index)
- {
- var node = eventSpecification.childNodes[index];
- var sName = XMLHelper_GetLocalName(node);
- if(sName.indexOf("p_") != 0 && sName != "parameters")
- {
- var sValue = XMLHelper_GetText(node);
- oParams.add(sName, sValue);
- }
- }
- };
- CCognosViewerFragmentEvent.prototype.addRequestParameterValues = function(eventSpecification, viewRequestObject)
- {
- var parameters = XMLHelper_FindChildByTagName(eventSpecification, "parameters", false);
- if(parameters != null)
- {
- var parameterNodes = XMLHelper_FindChildrenByTagName(parameters, "parameter", false);
- for(var index = 0; index < parameterNodes.length; ++index)
- {
- var parameter = parameterNodes[index];
- var parameterName = parameter.getAttribute("name");
- if(parameterName != null && parameterName != "")
- {
- var parameterValue = XMLHelper_GetText(parameter);
- if(parameterValue != null)
- {
- viewRequestObject.addFormField("p_" + parameterName, parameterValue);
- }
- }
- }
- }
- };
- CCognosViewerFragmentEvent.prototype.getTransientSpecification = function(updateList)
- {
- var fragmentImpl = this.getFragmentObject();
- var transientSpec = fragmentImpl.transientState["globalViewerTransient"];
- if(transientSpec == "" || transientSpec == null)
- {
- transientSpec = "<parameters>";
- for(var fragmentIndex = 0; fragmentIndex < updateList.length; ++fragmentIndex)
- {
- var viewerFragment = updateList[fragmentIndex];
- var sPromptChannel = viewerFragment.getPromptChannel();
- var reportParameterList = viewerFragment.m_reportParameters;
- for(var reportParameter in reportParameterList)
- {
- transientSpec += "<parameter name=\"" + sXmlEncode(reportParameter) + "\" modelItem=\"" + sXmlEncode(reportParameterList[reportParameter]) + "\" channel=\"" + sXmlEncode(sPromptChannel) + "\"/>";
- }
- var burstItemList = updateList[fragmentIndex].m_burstItems;
- for(var burstItem in burstItemList)
- {
- transientSpec += "<parameter name=\"" + sXmlEncode(burstItem) + "\" modelItem=\"" + sXmlEncode(burstItemList[burstItem]) + "\" channel=\"" + sXmlEncode(sPromptChannel) + "\"/>";
- }
- }
- transientSpec += "</parameters>";
- }
- return transientSpec;
- };
- CCognosViewerFragmentEvent.prototype.updateGlobalTransientSpec = function(updateList, rootNode, sParameterNodeName)
- {
- var viewerFragment = this.getViewerFragment();
- var viewerFragmentTransient = new CViewerFragmentTransient(this.getTransientSpecification(updateList), viewerFragment);
- var parameterList = XMLHelper_FindChildrenByTagName(rootNode, sParameterNodeName, false);
- var sPromptChannel = viewerFragment.getPromptChannel();
- for(var paramIndex = 0; paramIndex < parameterList.length; ++paramIndex)
- {
- var parameter = parameterList[paramIndex];
- var sParamName = parameter.getAttribute("name");
- var sModelItem = parameter.getAttribute("modelItem");
- var sParamValue = XMLHelper_GetText(parameter);
- if(sParamValue == "")
- {
- continue;
- }
- if(sParamValue == "<selectChoices></selectChoices>")
- {
- if(sParamName in viewerFragmentTransient.m_transientItems)
- {
- var transientToUpdate = viewerFragmentTransient.m_transientItems[sParamName][sModelItem];
- if (typeof transientToUpdate != "undefined")
- {
- if (transientToUpdate.m_value == "" || transientToUpdate.m_value == sParamValue)
- {
- continue;
- }
- }
- }
- }
- for(var fragmentIndex = 0; fragmentIndex < updateList.length; ++fragmentIndex)
- {
- var fragmentToUpdate = updateList[fragmentIndex];
- var sPromptToUpdate = fragmentToUpdate.getPromptValue(sParamName, sModelItem, sPromptChannel);
- if(sPromptToUpdate != null)
- {
- if(sParamName in viewerFragmentTransient.m_transientItems)
- {
- viewerFragmentTransient.changePromptValue(sPromptToUpdate, sParamValue, sPromptChannel);
- }
- else
- {
- viewerFragmentTransient.addTransientItem(sPromptToUpdate, sModelItem, sParamValue, sPromptChannel);
- }
- }
- }
- }
- var fragmentImpl = this.getFragmentObject();
- fragmentImpl.transientUpdate("globalViewerTransient", viewerFragmentTransient.saveTransientSpec(), "application", null, []);
- return viewerFragmentTransient;
- };
- CCognosViewerFragmentEvent.prototype.credentialParameterEnteredEvent = function(credentialParameterEnteredEventSpecification)
- {
- if(this.m_cognosViewer.getStatus() == "prompting")
- {
- return this.promptEvent(credentialParameterEnteredEventSpecification, "forward");
- }
- return false;
- };
- CCognosViewerFragmentEvent.prototype.updatePromptValuesEvent = function(updatePromptValuesSpecification)
- {
- var viewerFragment = this.getViewerFragment();
- viewerFragment.raiseEvent("cognos.viewer.*", "<collectParameters><controllerFragment>" + this.m_cognosViewer.getId() + "</controllerFragment></collectParameters>", "page");
- viewerFragment.m_fragmentUpdateList.push(viewerFragment);
- var parameters = XMLHelper_FindChildByTagName(updatePromptValuesSpecification, "parameters", false);
- var globalViewerTransient = null;
- if(parameters != null)
- {
- globalViewerTransient = this.updateGlobalTransientSpec(viewerFragment.m_fragmentUpdateList, parameters, "parameter");
- }
- var transientsToUpdate = [];
- for(var fragmentIndex = 0; fragmentIndex < viewerFragment.m_fragmentUpdateList.length; ++fragmentIndex)
- {
- var fragmentToUpdate = viewerFragment.m_fragmentUpdateList[fragmentIndex];
- var parameterMap = fragmentToUpdate.getParameterMap();
- for(var parameter in parameterMap)
- {
- if(globalViewerTransient.hasChanged(parameter, parameterMap[parameter]))
- {
- var newValue = globalViewerTransient.getTransientValue(parameter, parameterMap[parameter]);
- var iUpdateLength = transientsToUpdate.length;
- transientsToUpdate[iUpdateLength] = {};
- transientsToUpdate[iUpdateLength]["name"] = "p_" + parameter;
- transientsToUpdate[iUpdateLength]["scope"] = "application";
- transientsToUpdate[iUpdateLength]["value"] = newValue;
- }
- }
- }
- if(transientsToUpdate.length > 0)
- {
- this.getFragmentObject().transientUpdateList(transientsToUpdate, true);
- }
- viewerFragment.m_fragmentUpdateList = [];
- return (transientsToUpdate.length > 0);
- };
- CCognosViewerFragmentEvent.prototype.collectAuthoredDrillThroughListenersEvent = function(collectAuthoredDrillThroughListenersSpecification)
- {
- var viewerFragment = this.getViewerFragment();
- var controllerFragment = XMLHelper_FindChildByTagName(collectAuthoredDrillThroughListenersSpecification, "controllerFragment", false);
- var authoredDrillChannel = XMLHelper_FindChildByTagName(collectAuthoredDrillThroughListenersSpecification, "authoredDrillChannel", false);
- var sControllerFragmentId = XMLHelper_GetText(controllerFragment);
- var viewerFragmentController = getCognosViewerObjectRef(sControllerFragmentId).m_viewerFragment;
- if(viewerFragment.shareAuthoredDrillEvents() && XMLHelper_GetText(authoredDrillChannel) == viewerFragment.getAuthoredDrillChannel())
- {
- viewerFragmentController.addToUpdateList(viewerFragment);
- }
- return true;
- };
- CCognosViewerFragmentEvent.prototype.collectParametersEvent = function(collectParametersSpecification)
- {
- var viewerFragment = this.getViewerFragment();
- if(viewerFragment.sharePromptValues())
- {
- var controllerFragment = XMLHelper_FindChildByTagName(collectParametersSpecification, "controllerFragment", false);
- if(controllerFragment != null)
- {
- var sControllerFragmentId = XMLHelper_GetText(controllerFragment);
- var viewerFragmentController = getCognosViewerObjectRef(sControllerFragmentId).m_viewerFragment;
- viewerFragmentController.addToUpdateList(viewerFragment);
- }
- }
- return true;
- };
- CCognosViewerFragmentEvent.prototype.promptEvent = function(promptEventSpecification, promptEventName)
- {
- if(this.m_cognosViewer.getConversation() != "")
- {
- var oReq = new ViewerDispatcherEntry(this.m_cognosViewer);
- oReq.addFormField("ui.action", promptEventName);
- oReq.addFormField("cv.fragmentEvent", "true");
- this.addRequestParameterValues(promptEventSpecification, oReq);
- this.m_cognosViewer.dispatchRequest(oReq);
- }
- return true;
- };
- CCognosViewerFragmentEvent.prototype.forwardEvent = function(forwardEventSpecification)
- {
- return this.promptEvent(forwardEventSpecification, "forward");
- };
- CCognosViewerFragmentEvent.prototype.backEvent = function(backEventSpecification)
- {
- return this.promptEvent(backEventSpecification, "back");
- };
- CCognosViewerFragmentEvent.prototype.repromptEvent = function(repromptEventSpecification)
- {
- // todo find out what needs to be added to the bus header for reprompt and add it in
- return this.promptEvent(repromptEventSpecification, "forward");
- };
- CCognosViewerFragmentEvent.prototype.authoredDrillThroughEvent = function(authoredDrillEventSpecification)
- {
- var authoredDrillRequest = XMLHelper_FindChildByTagName(authoredDrillEventSpecification, "authoredDrillRequest", false);
- var viewerFragment = this.getViewerFragment();
- var viewerFragmentImpl = viewerFragment.getFragmentObject();
- if(viewerFragment.sharePromptValues() === true)
- {
- var drillParameters = XMLHelper_FindChildByTagName(authoredDrillRequest, "drillParameters", false);
- for(var index = 0; index < drillParameters.childNodes.length; ++index)
- {
- var drillParameter = drillParameters.childNodes[index];
- var sParameterName = drillParameter.getAttribute("name");
- if(sParameterName in viewerFragmentImpl.transientState)
- {
- viewerFragmentImpl.transientNotify(sParameterName, "");
- }
- }
- }
- var oReq = new ViewerDispatcherEntry(this.m_cognosViewer);
- oReq.addFormField("ui.action", "authoredDrillThrough2");
- oReq.addFormField("ui.primaryAction", "");
- oReq.addFormField("cv.fragmentEvent", "true");
- oReq.addFormField("fragment.fireEventWhenComplete", "cognos.viewer.authoredDrillEvent");
- var oCV = viewerFragment.getCognosViewer();
- var drillForm = document.getElementById("drillForm");
- appendReportHistoryObjects(oCV,drillForm);
- for(var i = 0; i < drillForm.childNodes.length; ++i)
- {
- if(drillForm.childNodes[i].name == "cv.previousReports")
- {
- oReq.addFormField("cv.previousReports", drillForm.childNodes[i].value);
- break;
- }
- }
- oReq.addFormField("authoredDrill.request", XMLBuilderSerializeNode(authoredDrillRequest));
- // clean up our current session
- this.m_cognosViewer.setKeepSessionAlive(false);
- this.m_cognosViewer.release();
- if ( viewerFragmentImpl.parent && viewerFragmentImpl.parent.parent )
- {
- var viewerFragmentGP = viewerFragmentImpl.parent.parent;
- if ( viewerFragmentGP.transientState )
- {
- if ( viewerFragmentGP.transientState.display_id )
- {
- viewerFragmentGP.transientState.display_id = null;
- }
- }
- }
-
- this.m_cognosViewer.dispatchRequest(oReq);
- return true;
- };
- CCognosViewerFragmentEvent.prototype.renderEvent = function(renderEventSpecification)
- {
- if(this.m_cognosViewer.getStatus() == "complete" && this.m_cognosViewer.getConversation() != "")
- {
- var oReq = new ViewerDispatcherEntry(this.m_cognosViewer);
- oReq.addFormField("ui.action", "render");
- oReq.addFormField("cv.fragmentEvent", "true");
- var specificationParams = new CDictionary();
- this.addRequestParams(renderEventSpecification, specificationParams);
- if(specificationParams.exists("run.outputFormat"))
- {
- var formFieldNames = specificationParams.keys();
- for (var index = 0; index < formFieldNames.length; index++) {
- oReq.addFormField(formFieldNames[index], specificationParams.get(formFieldNames[index]));
- }
- this.m_cognosViewer.dispatchRequest(oReq);
- }
- }
- return true;
- };
- CCognosViewerFragmentEvent.prototype.viewEvent = function(viewEventSpecification)
- {
- var oReq = new ViewerDispatcherEntry(this.m_cognosViewer);
- oReq.addFormField("ui.action", "view");
- oReq.addFormField("cv.fragmentEvent", "true");
- var specificationParams = new CDictionary();
- this.addRequestParams(viewEventSpecification, specificationParams);
- if(!specificationParams.exists("ui.object"))
- {
- var searchPath = this.m_cognosViewer.envParams["ui.object"];
- var sAction = this.m_cognosViewer.envParams["ui.action"];
- if(sAction != "view")
- {
- searchPath = "defaultOutput(" + searchPath + ")";
- }
- oReq.addFormField("ui.object", searchPath);
- }
- var formFieldNames = specificationParams.keys();
- for (var index = 0; index < formFieldNames.length; index++) {
- oReq.addFormField(formFieldNames[index], specificationParams.get(formFieldNames[index]));
- }
- // clean up our current session
- this.m_cognosViewer.setKeepSessionAlive(false);
- this.m_cognosViewer.release();
- this.m_cognosViewer.dispatchRequest(oReq);
- return true;
- };
- CCognosViewerFragmentEvent.prototype.runSpecificationEvent = function(runSpecificationEventSpecification)
- {
- var oReq = new ViewerDispatcherEntry(this.m_cognosViewer);
- oReq.addFormField("ui.action", "runSpecification");
- oReq.addFormField("cv.fragmentEvent", "true");
- var specificationParams = new CDictionary();
- this.addRequestParams(runSpecificationEventSpecification, specificationParams);
- this.addRequestParameterValues(runSpecificationEventSpecification, oReq);
-
- if(specificationParams.exists("ui.spec"))
- {
- // clean up our current session
- this.m_cognosViewer.setKeepSessionAlive(false);
- this.m_cognosViewer.release();
- // clear the tracking to avoid asynch issues when re-running
- this.m_cognosViewer.setTracking("");
-
- var formFieldNames = specificationParams.keys();
- for (var index = 0; index < formFieldNames.length; index++) {
- oReq.addFormField(formFieldNames[index], specificationParams.get(formFieldNames[index]));
- }
-
- this.m_cognosViewer.dispatchRequest(oReq);
- return true;
- }
- else
- {
- return false;
- }
- };
- CCognosViewerFragmentEvent.prototype.runEvent = function(runEventSpecification)
- {
- var oReq = new ViewerDispatcherEntry(this.m_cognosViewer);
- oReq.addFormField("ui.action", "run");
- oReq.addFormField("cv.fragmentEvent", "true");
- oReq.addFormField("cv.reUseConversationParameterValues", "false");
-
- var specificationParams = new CDictionary();
- this.addRequestParams(runEventSpecification, specificationParams);
- this.addRequestParameterValues(runEventSpecification, oReq);
- if(!specificationParams.exists("ui.object"))
- {
- var sAction = this.m_cognosViewer.envParams["ui.action"];
- if(sAction == "view")
- {
- var formWarpRequest = document.getElementById("formWarpRequest" + this.m_cognosViewer.getId());
- oReq.addFormField("ui.object", formWarpRequest["reRunObj"].value);
- }
- else
- {
- oReq.addFormField("ui.object", this.m_cognosViewer.envParams["ui.object"]);
- }
- }
- var formFieldNames = specificationParams.keys();
- for (var index = 0; index < formFieldNames.length; index++) {
- oReq.addFormField(formFieldNames[index], specificationParams.get(formFieldNames[index]));
- }
-
- // clean up our current session
- this.m_cognosViewer.setKeepSessionAlive(false);
- this.m_cognosViewer.release();
- this.m_cognosViewer.dispatchRequest(oReq);
- return true;
- };
- CCognosViewerFragmentEvent.prototype.drillEvent = function(drillEventSpecification)
- {
- var viewerFragment = this.getViewerFragment();
- if(viewerFragment.shareDrillEvents() && this.m_cognosViewer.getStatus() == "complete" && this.m_cognosViewer.getConversation() != "")
- {
- var drillChannelNode = XMLHelper_FindChildByTagName(drillEventSpecification, "drillChannel", false);
- var sDrillChannel = "";
- if(drillChannelNode != null)
- {
- sDrillChannel = XMLHelper_GetText(drillChannelNode);
- }
- if(sDrillChannel == viewerFragment.getDrillChannel())
- {
- var drillParams = XMLHelper_FindChildByTagName(drillEventSpecification, "DrillParameters", false);
- if(drillParams != null)
- {
- var selectionController = getCognosViewerSCObjectRef(this.m_cognosViewer.getId());
- var drillParamsArray = [];
- var sRefQuery = "";
- var drillOptionNode = XMLHelper_FindChildByTagName(drillEventSpecification, "DrillOption", false);
- if(drillOptionNode == null) {
- return;
- }
- var sDrillOption = XMLHelper_GetText(drillOptionNode);
- var aDrillGroups = XMLHelper_FindChildrenByTagName(drillParams, "DrillGroup", false);
- for(var iDrillGroupIndex = 0; iDrillGroupIndex < aDrillGroups.length; ++iDrillGroupIndex)
- {
- var munNode = XMLHelper_FindChildByTagName(aDrillGroups[iDrillGroupIndex], "MUN", false);
- var sMun = XMLHelper_GetText(munNode);
- var sCtxId = selectionController.getCtxIdFromMun(sMun);
- var sLun = ""; var sHun = "";
- var lunNode = XMLHelper_FindChildByTagName(aDrillGroups[iDrillGroupIndex], "LUN", false);
- if(lunNode != null)
- {
- sLun = XMLHelper_GetText(lunNode);
- }
- var hunNode = XMLHelper_FindChildByTagName(aDrillGroups[iDrillGroupIndex], "HUN", false);
- if(hunNode != null)
- {
- sHun = XMLHelper_GetText(hunNode);
- }
- if(sCtxId == "")
- {
- sCtxId = selectionController.getCtxIdFromMetaData(sLun, sHun);
- }
- if((sDrillOption == "down" && selectionController.canDrillDown(sCtxId)) || (sDrillOption == "up" && selectionController.canDrillUp(sCtxId)))
- {
- if(sRefQuery == "")
- {
- sRefQuery = selectionController.getRefQuery(sCtxId);
- }
- var sDataItem = selectionController.getRefDataItem(sCtxId);
- drillParamsArray[drillParamsArray.length] = sDataItem;
- drillParamsArray[drillParamsArray.length] = sMun;
- drillParamsArray[drillParamsArray.length] = sLun;
- drillParamsArray[drillParamsArray.length] = sHun;
- }
- }
- if(drillParamsArray.length > 0)
- {
- var drillManager = this.m_cognosViewer.getDrillMgr();
- var drillParamsSpecification = drillManager.buildDrillParametersSpecification(drillParamsArray);
- var oReq = new ViewerDispatcherEntry(this.m_cognosViewer);
- oReq.addFormField("ui.action", "drill");
- oReq.addFormField("rv_drillOption", sDrillOption);
- oReq.addFormField("rv_drillparams", drillParamsSpecification);
- oReq.addFormField("rv_drillRefQuery", sRefQuery);
- oReq.addFormField("cv.fragmentEvent", "true");
- this.m_cognosViewer.dispatchRequest(oReq);
- return true;
- }
- }
- }
- }
- return false;
- };
- function CViewerFragmentTransient(sSpec, viewerFragment)
- {
- this.m_viewerFragment = viewerFragment;
- this.m_transientItems = {};
- var rootNode = XMLBuilderLoadXMLFromString(sSpec);
- if(rootNode != null)
- {
- var parameters = XMLHelper_FindChildByTagName(rootNode, "parameters", false);
- if(parameters != null)
- {
- var parameterNodes = XMLHelper_FindChildrenByTagName(parameters, "parameter", false);
- for(var index = 0; index < parameterNodes.length; ++index)
- {
- var parameter = parameterNodes[index];
- var sName = parameter.getAttribute("name");
- var sModelItem = parameter.getAttribute("modelItem");
- if(sModelItem == null)
- {
- sModelItem = "";
- }
- var sPromptChannel = parameter.getAttribute("channel");
- if(sPromptChannel == null)
- {
- sPromptChannel = "";
- }
- var sValue = XMLHelper_GetText(parameter);
- if(typeof this.m_transientItems[sName] == "undefined")
- {
- this.m_transientItems[sName] = {};
- }
- this.m_transientItems[sName][sModelItem] = {};
- this.m_transientItems[sName][sModelItem].m_value = sValue;
- this.m_transientItems[sName][sModelItem].m_promptChannel = sPromptChannel;
- }
- }
- }
- }
- CViewerFragmentTransient.prototype.getViewerFragment = function()
- {
- return this.m_viewerFragment;
- };
- CViewerFragmentTransient.prototype.addTransientItem = function(sParamName, sModelItem, sValue, sPromptChannel)
- {
- if(typeof this.m_transientItems[sParamName] == "undefined")
- {
- this.m_transientItems[sParamName] = {};
- }
- this.m_transientItems[sParamName][sModelItem] = {};
- this.m_transientItems[sParamName][sModelItem].m_value = sValue;
- this.m_transientItems[sParamName][sModelItem].m_promptChannel = sPromptChannel;
- this.m_transientItems[sParamName][sModelItem].m_bNew = true;
- };
- CViewerFragmentTransient.prototype.changePromptValue = function(sParamName, sValue, sChannel)
- {
- // determine the items that need to be changed
- var affectedModelItems = {};
- if(sParamName in this.m_transientItems)
- {
- for(var modelItem in this.m_transientItems[sParamName])
- {
- if(modelItem != "")
- {
- affectedModelItems[modelItem] = true;
- }
- }
- }
- this.updateAffectedItems(sParamName, affectedModelItems, sValue, sChannel);
- };
- CViewerFragmentTransient.prototype.updateAffectedItems = function(sParamName, affectedModelItems, sValue, sChannel)
- {
- //update the affected items
- for(var paramName in this.m_transientItems)
- {
- var bParameterAffected = false;
- var modelItem = null;
- // check the parameter names for both cases "Match on parameter name" and "Match on parameter name & data item"
- // to avoid updating the values of a parameter with the values of another parameter in the code after comment(3) below
- if (paramName == sParamName)
- {
- if (this.getViewerFragment().matchOnParameterNameOnly())
- {
- for(modelItem in this.m_transientItems[paramName])
- {
- if (this.m_transientItems[paramName][modelItem].m_promptChannel == sChannel)
- {
- bParameterAffected = true;
- break;
- }
- }
- }
- else
- {
- // (1) break when the affected parameter is found
- for(var affectedModelItem in affectedModelItems)
- {
- if(affectedModelItem in this.m_transientItems[paramName] && this.m_transientItems[paramName][affectedModelItem].m_promptChannel == sChannel)
- {
- bParameterAffected = true;
- break;
- }
- }
- // (2) special handling if the modelItem is empty
- // the following code should be executed if the above code (1) does not turn on bParameterAffected
- if (bParameterAffected == false && typeof this.m_transientItems[paramName][""] == "object")
- {
- if (this.m_transientItems[paramName][""].m_value != sValue && this.m_transientItems[paramName][""].m_promptChannel == sChannel)
- {
- bParameterAffected = true;
- }
- }
- }
- }
- if(bParameterAffected == true)
- {
- for(modelItem in this.m_transientItems[paramName])
- {
- // (3) defect #186599 - PI81380 CANNOT USE A RANGE PROMPT IN A SPLITPORTLET PAGE COMMUNICATINGBETWEEN EACH OTHER
- // for "Match on paramameter name & data item" the code below was updating the values of a parameter
- // with the values of another parameter because the code under comment (1) wasn't checking if we are dealing with the same parameter
- this.m_transientItems[paramName][modelItem].m_value = sValue;
- this.m_transientItems[paramName][modelItem].m_bNew = true;
- if(modelItem != "" && !(modelItem in affectedModelItems) && !this.getViewerFragment().matchOnParameterNameOnly())
- {
- affectedModelItems[modelItem] = true;
- return this.updateAffectedItems(sParamName, affectedModelItems, sValue, sChannel);
- }
- }
- }
- }
- };
- CViewerFragmentTransient.prototype.getTransientItem = function(sParameterName, sModelItem)
- {
- if(sParameterName in this.m_transientItems)
- {
- if(sModelItem in this.m_transientItems[sParameterName])
- {
- return this.m_transientItems[sParameterName][sModelItem];
- }
- }
- return null;
- };
- CViewerFragmentTransient.prototype.hasChanged = function(sParameterName, sModelItem)
- {
- var transientItem = this.getTransientItem(sParameterName, sModelItem);
- if(transientItem != null && typeof transientItem.m_bNew != "undefined" && transientItem.m_bNew === true)
- {
- return true;
- }
- else
- {
- return false;
- }
- };
- CViewerFragmentTransient.prototype.getTransientValue = function(sParameterName, sModelItem)
- {
- var sValue = "";
- var transientItem = this.getTransientItem(sParameterName, sModelItem);
- if(transientItem != null && typeof transientItem.m_value != "undefined")
- {
- sValue = transientItem.m_value;
- }
- return sValue;
- };
- CViewerFragmentTransient.prototype.saveTransientSpec = function()
- {
- var sTransientSpec = "<parameters>";
- for(var paramName in this.m_transientItems)
- {
- for(var modelItem in this.m_transientItems[paramName])
- {
- sTransientSpec += "<parameter name=\"" + sXmlEncode(paramName) + "\" modelItem=\"" + sXmlEncode(modelItem) + "\" channel=\"" + sXmlEncode(this.m_transientItems[paramName][modelItem].m_promptChannel) + "\">" + sXmlEncode(this.m_transientItems[paramName][modelItem].m_value) + "</parameter>";
- }
- }
- sTransientSpec += "</parameters>";
- return sTransientSpec;
- };
- CCognosViewerFragment.prototype.createCDictionary = function(oParams)
- {
- var changedParams = new CDictionary();
-
- for (var key in oParams) {
- changedParams.add(key, oParams[key]);
- }
-
- return changedParams;
- };
|