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;
}


  • No labels