📄 birtparameterdialog.js
字号:
/******************************************************************************
* 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.
*****************************************************************************/
/**
* BirtParameterDialog
* ...
*/
BirtParameterDialog = Class.create( );
BirtParameterDialog.prototype = Object.extend( new AbstractParameterDialog( ),
{
/**
* Parameter dialog working state. Whether embedded inside
* designer dialog.
*/
__mode : 'frameset',
/**
* Identify the parameter is null.
*/
__isnull : '__isnull',
/**
* Prefix that identify the parameter is to set Display Text for "select" parameter
*/
__isdisplay : '__isdisplay__',
/**
* Initialization routine required by "ProtoType" lib.
* @return, void
*/
initialize : function( id, mode )
{
this.__mode = mode;
if ( this.__mode == 'parameter' )
{
// Hide dialog title bar if embedded in designer.
var paramDialogTitleBar = $( id + 'dialogTitleBar' );
paramDialogTitleBar.style.display = 'none';
}
this.initializeBase( id );
this.__local_installEventHandlers_extend( id );
},
/**
* Install native/birt event handlers.
*
* @id, toolbar id (optional since there is only one toolbar)
* @return, void
*/
__local_installEventHandlers_extend : function( id )
{
// Observe "keydown" event
this.keydown_closure = this.__neh_keydown.bindAsEventListener( this );
Event.observe( $(id), 'keydown', this.keydown_closure, false );
},
/**
* Binding data to the dialog UI. Data includes zoom scaling factor.
* @data, data DOM tree (schema TBD)
* @return, void
*/
__bind : function( data )
{
if ( !data )
{
return;
}
var cascadeParamObj = data.getElementsByTagName( 'CascadeParameter' );
var confirmObj = data.getElementsByTagName( 'Confirmation' );
if ( cascadeParamObj.length > 0 )
{
this.__propogateCascadeParameter( data );
}
else if ( confirmObj.length > 0 )
{
this.__close( );
}
},
/**
* Intall the event handlers for cascade parameter.
*
* @table_param, container table object.
* @counter, index of possible cascade parameter.
* @return, void
*/
__install_cascade_parameter_event_handler : function( table_param, counter )
{
var oSC = table_param.getElementsByTagName( "select" );
var matrix = new Array( );
var m = 0;
var oTRC = table_param.getElementsByTagName( "TR" );
for( var i = 0; i < oTRC.length; i++ )
{
var oSelect = oTRC[i].getElementsByTagName( "select" );
var oInput = oTRC[i].getElementsByTagName( "input" );
var oCascadeFlag = "";
if ( oInput && oInput.length > 0 )
{
var oLastInput = oInput[oInput.length - 1];
if ( oLastInput.name == "isCascade" )
oCascadeFlag = oLastInput.value;
}
// find select items to install event listener
if( oSelect.length > 0 && oCascadeFlag == "true" )
{
if ( i < oTRC.length - 1 )
{
Event.observe( oSelect[0], 'change', this.__neh_click_select_closure, false );
}
if( !matrix[m] )
{
matrix[m] = {};
}
matrix[m].name = oSelect[0].id.substr( 0, oSelect[0].id.length - 10 );
matrix[m++].value = oSelect[0].value;
}
}
this.__cascadingParameter[counter] = matrix;
},
/**
* Collect parameters, include five cases appear in Birt1.0 Viewer.
*
* @return, void
*/
collect_parameter : function( )
{
// Clear parameter array
this.__parameter = new Array( );
var k = 0;
//oTRC[i] is <tr></tr> section
var oTRC = document.getElementById( "parameter_table" ).getElementsByTagName( "TR" );
for( var i = 0; i < oTRC.length; i++ )
{
if( !this.__parameter[k] )
{
this.__parameter[k] = { };
}
//input element collection
var oIEC = oTRC[i].getElementsByTagName( "input" );
//select element collection
var oSEC = oTRC[i].getElementsByTagName( "select" );
//avoid group parameter
var oTable = oTRC[i].getElementsByTagName( "table" );
if( oTable.length > 0 || ( oSEC.length == 0 && oIEC.length == 0 ) || ( oIEC.length == 1 && oIEC[0].type == 'submit' ) )
{
continue;
}
if( oSEC.length == 1 && oIEC.length <= 3 )
{
// Check if select 'Null Value' option
var temp = oSEC[0].options[oSEC[0].selectedIndex].text;
if( temp && temp == 'Null Value' )
{
this.__parameter[k].name = this.__isnull;
if ( oIEC.length > 0 )
this.__parameter[k].value = oIEC[0].name;
else
this.__parameter[k].value = oSEC[0].name;
k++;
continue;
}
// deal with "select" parameter
if( oIEC.length > 0 )
{
this.__parameter[k].name = oIEC[0].name;
}
else
{
this.__parameter[k].name = oSEC[0].name;
}
this.__parameter[k].value = oSEC[0].options[oSEC[0].selectedIndex].value;
k++;
// set display text for the "select" parameter
if( !this.__parameter[k] )
{
this.__parameter[k] = { };
}
this.__parameter[k].name = this.__isdisplay + this.__parameter[k-1].name;
this.__parameter[k].value = oSEC[0].options[oSEC[0].selectedIndex].text;
k++;
continue;
}
if( oSEC.length == 0 && ( oIEC.length == 1 || oIEC.length == 2 ) )
{
var temp = {};
var tempDef = null;
if( oIEC.length == 1 )
{
temp = oIEC[0]
}
else if( oIEC[0].type == 'hidden' )
{
tempDef = oIEC[0]
temp = oIEC[1];
}
else
{
continue;
}
if( temp.type == 'text' || temp.type == 'password' )
{
// deal with "text" parameter
this.__parameter[k].name = temp.name;
// if the parameter neither has a value nor a default value, error
if( birtUtility.trim( temp.value ) == '' )
{
if( tempDef )
{
temp.focus( );
alert( temp.name + ' cannot be blank' );
return false;
}
else
{
this.__parameter[k].value = temp.value;
}
}
else
{
this.__parameter[k].value = temp.value;
}
k++;
}
else if( temp.type == 'checkbox' )
{
// deal with checkbox
this.__parameter[k].name = temp.value;
temp.checked?this.__parameter[k].value = 'true':this.__parameter[k].value = 'false';
k++;
}
else if( temp.type == 'radio' )
{
// deal with radio
this.__parameter[k].name = temp.name;
this.__parameter[k].value = temp.value;
k++;
// set display text for the "radio" parameter
var displayLabel = document.getElementById( temp.id + "_label" );
if( !displayLabel )
continue;
if( !this.__parameter[k] )
{
this.__parameter[k] = { };
}
this.__parameter[k].name = this.__isdisplay + this.__parameter[k-1].name;
this.__parameter[k].value = displayLabel.innerHTML;
k++;
}
else if( temp.type == 'hidden' )
{
// deal with hidden parameter
this.__parameter[k].name = temp.name;
this.__parameter[k].value = temp.value;
k++;
}
}
else if( oSEC.length <= 1 && oIEC.length >= 3 )
{
for( var j = 0; j < oIEC.length; j++ )
{
// deal with radio
if( oIEC[j].type == 'radio' && oIEC[j].checked )
{
if( oIEC[j+1] && ( oIEC[j+1].type == 'text' || oIEC[j+1].type == 'password' ) )
{
//Check if allow blank
var temp = oIEC[j+2];
if ( temp && temp.id == 'isNotBlank' && temp.value == 'true' )
{
if ( birtUtility.trim( oIEC[j+1].value ) == '' )
{
oIEC[j+1].focus( );
alert( temp.name + ' cannot be blank' );
return false;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -