This example source is a copy of the Google Pie Chart example widget which is shipped with Visual LANSA.
function( PROTOTYPE, WIDGET )
\{
//--------------------------------------------------------------------------
// LOAD GOOGLE PIECHART ONLY WHEN THAT IS COMPLETED CAN WE FINALIZE THE WIDGET
//--------------------------------------------------------------------------
google.load( 'visualization', '1', \{ packages:\["corechart"\], callback: WIDGET.Finalize \} );
//--------------------------------------------------------
// WIDGET-INTERFACE FUNCTIONS (CALLED FROM THE VL-RUNTIME)
//--------------------------------------------------------
//
// 'onCreateInstance' - gets called when LANSA creates an instance of this class.
//
PROTOTYPE.onCreateInstance = function()
\{
// Create the datatable
this.m_DataTable = new google.visualization.DataTable();
this.m_DataTable.addColumn( 'string', 'Caption' );
this.m_DataTable.addColumn( 'number', 'Value' );
\}
//
// 'onRealizeControl' - gets called when LANSA creates a visual representation of an instance of this class.
//
// Parameters:
//
// - parentDiv : the div that's been created as a container for this control. Its size and style are controlled by
// RDMLX, its content by the JavaScript below.
//
PROTOTYPE.onRealizeControl = function( parentDiv )
\{
// Create the piechart
this.m_Chart = new google.visualization.PieChart( parentDiv );
// Hook up event handlers
this.AttachEvents();
// We're ready to draw it
this.DrawChart();
\}
//
// 'onSizeChanged - gets called when the widget changes size.
//
PROTOTYPE.onSizeChanged = function()
\{
this.DrawChart();
\}
////////////////
// Properties //
////////////////
//
// getTitle
//
PROTOTYPE.getTitle = function()
\{
return this.m_Title;
\}
//
// setTitle
//
PROTOTYPE.setTitle = function( strTitle )
\{
this.m_Title = strTitle;
this.DrawChart();
\}
/////////////
// Methods //
/////////////
//
// Insert - Insert data into the piechart
//
// Parameters:
// - Value: Integer
// - Caption: String
//
// Return Type: Integer
//
PROTOTYPE.Insert = function( iValue, strCaption )
\{
var index = this.m_DataTable.addRow( \[ strCaption, iValue \] );
this.DrawChart();
return index;
\}
//
// Clear - Clears all data
//
PROTOTYPE.Clear = function()
\{
// Initialize member data
this.m_DataTable.removeRows( 0, this.m_DataTable.getNumberOfRows() );
this.DrawChart();
\}
//
// Remove - Removes the given index from the piechart
//
// Parameters:
// - Index: Integer
//
PROTOTYPE.Remove = function( index )
\{
index -= 1;
if ( ( index >= 0 ) && ( index < this.m_DataTable.getNumberOfRows() ) )
\{
this.m_DataTable.removeRow( index );
this.DrawChart();
\}
\}
//////////////////////
// Helper functions //
//////////////////////
//
// DrawChart
//
PROTOTYPE.DrawChart = function()
\{
if ( this.m_Chart )
\{
// Draw it using our data.
this.m_Chart.draw( this.m_DataTable,
\{
title : this.m_Title,
legend : 'none',
pieSliceText : 'label',
backgroundColor: 'transparent'
\});
\}
\}
//
// AttachEvents
//
PROTOTYPE.AttachEvents = function()
\{
var pThis = this;
// EVENT: select
google.visualization.events.addListener( this.m_Chart, 'select', function()
\{
var
selectedItem = pThis.m_Chart.getSelection()\[0\];
if ( selectedItem )
\{
pThis.fireItemSelected( ( selectedItem.row + 1 ), pThis.m_DataTable.getValue( selectedItem.row, 1 ), pThis.m_DataTable.getValue( selectedItem.row, 0 ) );
\}
\});
\}
// We're still loading (waiting for a callback)
return WIDGET.Loading;
\}
|