r2 - 06 Jun 2006 - 07:37:32 - TWikiGuestYou are here: TWiki >  Main Web  >  ElixirEnsemble > ElixirEnsembleCookbook > Scripting
... no changes ... no changes ... no changes ... no changes ... no changes ... no changes ... no changes ... no changes ... no changes ... no changes ... no changes ... Welcome!!! Links: free ringtones : [http://www.ringtones-dir.com download ringtones] - [HTTP://www.ringtones-dir.com download ringtones] : [nokia ringtones|http://www.ringtones-dir.com] - [nokia ringtones|HTTP://www.ringtones-dir.com] : http://www.ringtones-dir.com/download/ : ring tones : | ringtones download : "samsung ringtones" http://www.ringtones-dir.com : [http://www.ringtones-dir.com|ringtones free] ---+Working with Custom Javascript for loading into Ensemble

To allow JavaScript to be executed as extensions during the start-up process, all you need to do is add a .js file to the /ext directory and it will be processed during startup. This is intended for once-per-session configuration of the environment.

As an example, I've written an example that will allow user-defined functions in the Cube and Report processing.

Here's the JavaScript:

// UserDefinedFunction.js

function JonFn()
{
  var self = new UserDefinedFunction("Jon's Average");
  self.m_Value = 0;
  self.m_Count = 0;
  self.clone = function()
  {
    return new JonFn();
  }
  self.update = function(data)
  {
    if (data!=null)
    {
      this.m_Value = this.m_Value + data.doubleValue();
      ++this.m_Count;
    }
  }
  self.getResult = function()
  {
    return this.m_Value / this.m_Count;
  }
  self.reset = function()
  {
    this.m_Value = 0;
    this.m_Count = 0;
  }
  return new JavaAdapter(Packages.com.elixirtech.data2["function"].Function, self);
}

importClass(Packages.com.elixirtech.data2["function"].FunctionFactory);
FunctionFactory.addUserFunction(new JonFn());
--------------------------------------------------
If you put this code in /ext you will find a new Function available at the bottom of the Functions list (all user-defined ones are at the bottom) called "Jon's Average". It produces exactly the same results as the built-in Average function.

The requirements for your Function implementation are that it provides the following methods:

clone()
update(data) // usually a Number, will be called once for each data item
getResult()
reset()
It can have whatever data it needs, in my example m_Value, m_Count - just use whatever names you want - no need to predefine.

If your function returns a different type from the input type, you will also need to supply:

getResultType(dataType)
which should return the DataType? of the result, based on the DataType? of the input. I've configured the default to be the same type (eg. Min on Int will return an Int, Min on Date will return a Date etc.)

-- SooGuan - 27 Dec 2005

Edit | Attach | Printable | Raw View | Backlinks: Web, All Webs | History: r2 < r1 | More topic actions
 
Powered by TWiki
This site is powered by the TWiki collaboration platformCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback