123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160 |
- /*
- *+------------------------------------------------------------------------+
- *| Licensed Materials - Property of IBM
- *| IBM Cognos Products: Viewer
- *| (C) Copyright IBM Corp. 2001, 2011
- *|
- *| US Government Users Restricted Rights - Use, duplication or
- *| disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
- *|
- *+------------------------------------------------------------------------+
- */
- function CCognosViewerSaveReport( cognosViewer, payload )
- {
- this.m_cognosViewer = cognosViewer;
- this.m_params = null;
- //chrome always send use the storeid of the dashboard to save report in so we know if it is save-as or save operation
- this.dashboardToSaveIn = payload.cm$storeID;
- this.m_doSaveAsOnFault = false;
- }
- /**
- * Can save if the user has write permission, creating a new dashboard or we're doing a saveAs (also creating a 'new' dashboard)
- * @param {Object} permission
- */
- CCognosViewerSaveReport.prototype.canSave = function( permission )
- {
- return ( this.doSaveAs() || permission && permission.indexOf( "write" ) !== -1 ) ;
- };
- CCognosViewerSaveReport.prototype.isSavedOutput = function()
- {
- //do not save if report is a saved output
- var sAction = this.m_cognosViewer.envParams["ui.action"];
- return ( typeof sAction !== "undefined" && sAction === "view");
- };
- /**
- *
- */
- CCognosViewerSaveReport.prototype.doSaveAs = function()
- {
- //savedReportName is only set when report had been saved in the dashboard
- var result = ( this.m_doSaveAsOnFault || !this.m_cognosViewer.envParams["savedReportName"] || !this.isSameDashboard() );
- return result;
- };
- CCognosViewerSaveReport.prototype.isSameDashboard = function()
- {
- var result = ( this.m_cognosViewer.envParams["ui.object"].indexOf( this.dashboardToSaveIn ) !== -1 );
- return result;
- };
- CCognosViewerSaveReport.prototype.getUIAction = function()
- {
- return ( this.doSaveAs() ? "saveInDashboard" : "updateSavedReport");
- };
- CCognosViewerSaveReport.prototype.populateRequestParams = function(asynchRequest) {
- asynchRequest.addFormField('ui.action', this.getUIAction());
- asynchRequest.addFormField('cv.ignoreState', 'true');
- asynchRequest.addFormField("dashboard-id", this.dashboardToSaveIn);
- asynchRequest.addNonEmptyStringFormField("executionParameters", this.m_cognosViewer.m_sParameters);
- for(var param in this.m_cognosViewer.envParams)
- {
- if( param.indexOf("frag-") == 0 || param == "cv.actionState" ||
- param == "ui.primaryAction" || param == "dashboard" ||
- param == "ui.action" || param == "cv.responseFormat" ||
- param == "b_action") {
- continue;
- }
- asynchRequest.addFormField(param, this.m_cognosViewer.envParams[param]);
- }
- };
- CCognosViewerSaveReport.prototype.getCognosViewer = function()
- {
- return this.m_cognosViewer;
- };
- CCognosViewerSaveReport.prototype.getViewerWidget = function()
- {
- return this.getCognosViewer().getViewerWidget();
- };
- CCognosViewerSaveReport.prototype.dispatchRequest = function()
- {
- var cognosViewer = this.m_cognosViewer;
- var viewerWidget = this.getViewerWidget();
- var callbacks = {
- "complete":{"object":viewerWidget,"method":viewerWidget.handleWidgetSaveDone},
- "fault":{"object":this,"method":this.onFault}
- };
- var asynchRequest = new AsynchJSONDispatcherEntry(cognosViewer);
- asynchRequest.setCallbacks(callbacks);
- this.populateRequestParams(asynchRequest);
- cognosViewer.dispatchRequest(asynchRequest);
- };
- CCognosViewerSaveReport.prototype.onFault = function(asynchJSONResponse, arg1){
- var cognosViewer = this.m_cognosViewer;
- var viewerWidget = this.getViewerWidget();
- var soapFaultEnvelope = asynchJSONResponse.getSoapFault();
- var soapFaultNode = XMLHelper_FindChildByTagName(soapFaultEnvelope, "Fault", true);
-
- if( this.ifIsEmptySelectionFault( soapFaultNode ) )
- {
- this.handleEmptySelectionFault();
- return;
- }
- // set retry to False - can't retry a save
- var retryNode = soapFaultEnvelope.createElement("allowRetry");
- retryNode.appendChild(soapFaultEnvelope.createTextNode("false"));
- soapFaultNode.appendChild(retryNode);
- var sSoapFault = XMLBuilderSerializeNode(soapFaultNode);
- cognosViewer.setSoapFault(sSoapFault);
- viewerWidget.handleFault();
- var saveDonePayload = {'status':false};
- viewerWidget.iContext.iEvents.fireEvent( "com.ibm.bux.widget.save.done", null, saveDonePayload );
- };
- /**
- * Returns true if the fault is caused by an attempt to update a non-existing report
- */
- CCognosViewerSaveReport.prototype.ifIsEmptySelectionFault = function( soapFault ){
- if(soapFault) {
- var errorCodeElement = XMLHelper_FindChildByTagName(soapFault, 'errorCode', true);
- if( errorCodeElement )
- {
- var errorCode = XMLHelper_GetText(errorCodeElement, false);
- return ( errorCode === 'cmEmptySelection' );
- }
- }
- return false;
- };
- /**
- * Sends a save-as request
- */
- CCognosViewerSaveReport.prototype.handleEmptySelectionFault = function(){
-
- delete (this.m_cognosViewer.envParams["savedReportName"]);
- this.m_doSaveAsOnFault = true;
- this.dispatchRequest();
- };
|