Node org.unizone.source.Average

org.unizone.0.8546
Instance of TypeScriptInfo

Node dataValue
org.edgescript.TypeScriptInfo.prerequisiteParcelsList{}
org.edgescript.TypeScriptInfo.prerequisiteMethodsList{}
org.edgescript.TypeScriptInfo.scriptimport org.uninode.widget.Workspace; import org.uninode.widget.Place; import org.unizone.source.Source; import org.uninode.Listable; import com.nodelab.System; import org.edgescript.ScriptGenerationInfo; import org.uninode.dimension.DimensionHistory; import org.uninode.collection.List; constructor() { SourceAdapterSingleTimeseries:(); days = 30; // addListener(Void () {changedHistory()}); } constructor(Source src, Int days) { SourceAdapterSingleTimeseries:(); setSource(src); this.days = days; // days.addListener(Void () {changedHistory()}); } void setDays(Int days) { this.days = days; } type Boolean isResourceOf(Listable node, Signature aspect) { if (aspect == 'adapter') return true; false; } String displayName() { "" + days + " days average of " + source().toString(); } /* Signature valueType() { source.valueType; } */ void designEditor(Workspace ws) { // ws.addLabel(new Place(0, 0).setPadding(5, 5), "Days"); // ws.addField(new Place(1, 0).setPadding(20, 5), days, null); } trace void prepareRange() { System.report("preparing " + toString); Source src = source; List[Date] dates = new List[Date](10); List[Real] values = new List[Real](10); Date from = Date{DimensionHistory@'org.uninode.Dimension.from'}; Date to = Date{DimensionHistory@'org.uninode.Dimension.to'}; DimensionHistory@'org.uninode.Dimension.from' = from.addDays(-days); src.collectValues(dates, values, DimensionHistory); Real sum = 0.0; Int count = 0; Int fromIndex = 0; Int toIndex = -1; Int index = 0; Real val; while (index < dates.size && dates.get(index) < from) index = index + 1; while (index < dates.size) { while (toIndex < index) { toIndex = toIndex + 1; DimensionHistory@'org.uninode.Dimension.focus' = dates.get(toIndex); val = src.evaluate; if (val != null) { sum = sum + val; count = count + 1; } } Date fromDate = dates.get(index).addDays(-days); while (dates.get(fromIndex) < fromDate) { DimensionHistory@'org.uninode.Dimension.focus' = dates.get(fromIndex); val = src.evaluate; if (val != null) { sum = sum - val; count = count - 1; } fromIndex = fromIndex + 1; } if (count > 0) val = (10000.0 * sum / count).round / 10000.0; else val = null; put(dates.get(index), val); index = index + 1; } } void instanceScript(ScriptGenerationInfo info) { // getSource().instanceScript(info); // create variables // info.objectId(this, AverageDay, "ave"); } void initScript(ScriptGenerationInfo info) { // String prefix = info.methodPrefix(this); // " " + prefix + "setNextSource(" + getSource().instanceScript(info) + "); // " + prefix + "setDays(" + days.toString + "); //"; }
org.edgescript.TypeScriptInfo.defineTypeorg.unizone.source.Average
org.edgescript.TypeScriptInfo.prerequisiteScriptsList{}