blob: 9ac46866b59098b39507d2aeb36bc0ac9793b0af [file] [log] [blame]
/******************************************************************************
* Copyright (c) 2004 Actuate Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Actuate Corporation - Initial implementation.
*****************************************************************************/
/**
* BirtReportDocument
* ...
*/
BirtReportDocument = Class.create( );
BirtReportDocument.prototype = Object.extend( new AbstractBaseReportDocument( ),
{
/**
* Initialization routine required by "ProtoType" lib.
*
* @return, void
*/
initialize : function( id, tocElement )
{
this.__instance = $( id );
this.__tocElement = tocElement;
this.__neh_resize( );
this.__has_svg_support = hasSVGSupport;
// Prepare closures.
this.__neh_resize_closure = this.__neh_resize.bindAsEventListener( this );
this.__beh_getPage_closure = this.__beh_getPage.bind( this );
this.__beh_getPageInit_closure = this.__beh_getPageInit.bind( this );
this.__beh_changeParameter_closure = this.__beh_changeParameter.bind( this );
this.__beh_toc_closure = this.__beh_toc.bindAsEventListener( this );
this.__beh_cacheParameter_closure = this.__beh_cacheParameter.bind( this );
this.__beh_printServer_closure = this.__beh_printServer.bind( this );
this.__beh_print_closure = this.__beh_print.bind( this );
this.__beh_pdf_closure = this.__beh_pdf.bind( this );
this.__beh_cancelTask_closure = this.__beh_cancelTask.bind( this );
this.__beh_getPageAll_closure = this.__beh_getPageAll.bind( this );
this.__beh_exportReport_closure = this.__beh_exportReport.bind( this );
Event.observe( window, 'resize', this.__neh_resize_closure, false );
birtEventDispatcher.registerEventHandler( birtEvent.__E_GETPAGE, this.__instance.id, this.__beh_getPage_closure );
birtEventDispatcher.registerEventHandler( birtEvent.__E_GETPAGE_INIT, this.__instance.id, this.__beh_getPageInit_closure );
birtEventDispatcher.registerEventHandler( birtEvent.__E_PARAMETER, this.__instance.id, this.__beh_parameter );
birtEventDispatcher.registerEventHandler( birtEvent.__E_CHANGE_PARAMETER, this.__instance.id, this.__beh_changeParameter_closure );
birtEventDispatcher.registerEventHandler( birtEvent.__E_CASCADING_PARAMETER, this.__instance.id, this.__beh_cascadingParameter );
birtEventDispatcher.registerEventHandler( birtEvent.__E_TOC, this.__instance.id, this.__beh_toc_closure );
birtEventDispatcher.registerEventHandler( birtEvent.__E_QUERY_EXPORT, this.__instance.id, this.__beh_export );
birtEventDispatcher.registerEventHandler( birtEvent.__E_CACHE_PARAMETER, this.__instance.id, this.__beh_cacheParameter_closure );
birtEventDispatcher.registerEventHandler( birtEvent.__E_PRINT, this.__instance.id, this.__beh_print_closure );
birtEventDispatcher.registerEventHandler( birtEvent.__E_PRINT_SERVER, this.__instance.id, this.__beh_printServer_closure );
birtEventDispatcher.registerEventHandler( birtEvent.__E_PDF, this.__instance.id, this.__beh_pdf_closure );
birtEventDispatcher.registerEventHandler( birtEvent.__E_CANCEL_TASK, this.__instance.id, this.__beh_cancelTask_closure );
birtEventDispatcher.registerEventHandler( birtEvent.__E_GETPAGE_ALL, this.__instance.id, this.__beh_getPageAll_closure );
birtEventDispatcher.registerEventHandler( birtEvent.__E_EXPORT_REPORT, this.__instance.id, this.__beh_exportReport_closure );
birtGetUpdatedObjectsResponseHandler.addAssociation( "Docum", this );
// TODO: rename it to birt event
this.__cb_installEventHandlers( id );
},
/**
* Birt event handler for "cache parameter" event.
*
* @id, document id (optional since there's only one document instance)
* @return, true indicating server call
*/
__beh_cacheParameter : function( id )
{
if ( birtParameterDialog.__parameter > 0 )
{
birtParameterDialog.__parameter.length = birtParameterDialog.__parameter.length - 1;
}
birtSoapRequest.addOperation( Constants.documentId, Constants.Document,
"CacheParameter", null, birtParameterDialog.__parameter );
birtSoapRequest.setURL( soapURL );
birtEventDispatcher.setFocusId( null ); // Clear out current focusid.
return true;
},
/**
* Birt event handler for "PrintServer" event.
*
* @id, document id (optional since there's only one document instance)
* @return, true indicating server call
*/
__beh_printServer : function( id )
{
birtPrintReportServerDialog.__cb_bind( );
},
/**
* Birt event handler for "print" event.
*
* @id, document id (optional since there's only one document instance)
* @return, true indicating server call
*/
__beh_print : function( id )
{
birtPrintReportDialog.__cb_bind( );
},
/**
* Birt event handler for "pdf" event.
*
* @id, document id (optional since there's only one document instance)
* @return, true indicating server call
*/
__beh_pdf : function( id )
{
var docObj = document.getElementById( "Document" );
if ( !docObj || birtUtility.trim( docObj.innerHTML ).length <= 0)
{
alert ( Constants.error.generateReportFirst );
return;
}
else
{
var divObj = document.createElement( "DIV" );
document.body.appendChild( divObj );
divObj.style.display = "none";
var formObj = document.createElement( "FORM" );
divObj.appendChild( formObj );
// Replace "html" to "pdf"
var action = soapURL;
var reg = new RegExp( "([&|?]{1}__format\s*)=([^&|^#]*)", "gi" );
if( action.search( reg ) < 0 )
{
action = action + "&__format=pdf";
}
else
{
action = action.replace( reg, "$1=pdf" );
}
// Force "__overwrite" as false
reg = new RegExp( "([&|?]{1}__overwrite\s*)=([^&|^#]*)", "gi" );
if( action.search( reg ) < 0 )
{
action = action + "&__overwrite=false";
}
else
{
action = action.replace( reg, "$1=false" );
}
formObj.action = action;
formObj.method = "post";
formObj.submit( );
}
},
/**
* Birt event handler for "CancelTask" event.
*
* @id, document id (optional since there's only one document instance)
* @return, true indicating server call
*/
__beh_cancelTask : function( id, object )
{
birtSoapRequest.addOperation( Constants.documentId, Constants.Document, "CancelTask", null, object );
birtSoapRequest.setURL( soapURL );
birtEventDispatcher.setFocusId( null ); // Clear out current focusid.
return true;
},
/**
* Birt event handler for "GetPageAll" event.
*
* @id, document id (optional since there's only one document instance)
* @return, true indicating server call
*/
__beh_getPageAll : function( id, object )
{
// set task id
var taskid = birtUtility.setTaskId( );
if( object )
{
birtSoapRequest.addOperation( Constants.documentId, Constants.Document, "GetPageAll",
null, birtParameterDialog.__parameter, object,
{ name : Constants.PARAM_SVG, value : this.__has_svg_support? "true" : "false" },
{ name : Constants.PARAM_TASKID, value : taskid } );
}
else
{
birtSoapRequest.addOperation( Constants.documentId, Constants.Document, "GetPageAll",
null, birtParameterDialog.__parameter,
{ name : Constants.PARAM_SVG, value : this.__has_svg_support? "true" : "false" },
{ name : Constants.PARAM_TASKID, value : taskid } );
}
birtSoapRequest.setURL( soapURL );
birtEventDispatcher.setFocusId( null ); // Clear out current focusid.
birtProgressBar.setRedirect( true );
return true;
},
/**
* Birt event handler for "ExportReport" event.
*
* @id, document id (optional since there's only one document instance)
* @return, true indicating server call
*/
__beh_exportReport : function( id )
{
birtExportReportDialog.__cb_bind( );
},
/**
* Called after the component content is rendered.
*
* @id, ui object id
* @return, void
*/
__postRender : function( id )
{
// ensures that the rendered component is the report document
if ( id == "Document" )
{
var docObj = document.getElementById( id );
if ( docObj )
{
// set document scrollbar position to the top
docObj.scrollTop = "0px";
this.__neh_resize();
}
}
}
});