package commongrid.utils.summary {
import mx.collections.CursorBookmark;
import mx.collections.IViewCursor;
import mx.collections.SummaryObject;
public class Div {
private var numeratorField:String;
private var denominatorField:String;
public function Div(numeratorString:String,denominatorString:String) {
this.numeratorField = numeratorString;
this.denominatorField = denominatorString;
}
public function getCallbackFunction():Function{
return myFunc1;
}
/** Use this only for GroupingCollection1 */
private function myFunc1(summaryObj:SummaryObject,depth:int,current:Object, dataField:String, operation:String):Number{
if(summaryObj[numeratorField] == null){
summaryObj[numeratorField] = 0.0;
}
if(summaryObj[denominatorField] == null){
summaryObj[denominatorField] = 0.0;
}
var numeratorTotal:Number = Number(summaryObj[numeratorField]);
var denominatorTotal:Number = Number(summaryObj[denominatorField]);
var result:Number = (denominatorTotal == 0)?0.0:(numeratorTotal/denominatorTotal);
switch(operation){
case "BPS":
return (10000)* result;
default: return result;
}
}
private function myFunc(iterator:IViewCursor, dataField:String, operation:String):Number{
if (!iterator){
return 0.0;
}
if (!iterator.current){
return 0.0;
}
if(!iterator.current.hasOwnProperty(numeratorField)){
return 0.0;
}
if(!iterator.current.hasOwnProperty(denominatorField)){
return 0.0;
}
var numeratorTotal:Number = 0;
var denominatorTotal:Number = 0;
iterator.seek( CursorBookmark.FIRST );
while (!iterator.afterLast){
var o:Object = iterator.current;
numeratorTotal += Number(o[numeratorField]);
denominatorTotal += Number(o[denominatorField]);
iterator.moveNext();
}
var result:Number = (denominatorTotal == 0)?0.0:(numeratorTotal/denominatorTotal);
switch(operation){
case "BPS":
return (10000)* result;
default: return result;
}
}
}
}