Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

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;

...


}