JS: More performance tweaks for 3D content

Signed-off-by: Matt Chudleigh <matt.chudleigh@ausenco.com>
Signed-off-by: Harvey Harrison <harvey.harrison@ausenco.com>
JS: Fixed race condition bug in renderer

Signed-off-by: Matt Chudleigh <matt.chudleigh@ausenco.com>
Signed-off-by: Harvey Harrison <harvey.harrison@ausenco.com>
JS: Added TimeSeries Output PresentValue with UserSpecifiedUnits

PresentValue is the time series value for the present time

Signed-off-by: Stephen Wong <stephen.wong@ausenco.com>
Signed-off-by: Harvey Harrison <harvey.harrison@ausenco.com>
JS3D: Return double instead of Integer for Queue Output getQueueLength

This change allows the queue length to be graphed

Signed-off-by: Stephen Wong <stephen.wong@ausenco.com>
Signed-off-by: Harvey Harrison <harvey.harrison@ausenco.com>
JS3D: Print queue length with 0 decimal places in utilization report

Required now that getQueueLength returns a double instead of an integer

Signed-off-by: Stephen Wong <stephen.wong@ausenco.com>
Signed-off-by: Harvey Harrison <harvey.harrison@ausenco.com>
JS: Fix for race condition in renderer

It turns out the drawContext could never have been legitimately current
for that thread, but may have been active on another thread (which would
cause a fatal render exception).

Signed-off-by: Matt Chudleigh <matt.chudleigh@ausenco.com>
Signed-off-by: Harvey Harrison <harvey.harrison@ausenco.com>
JS: let TimeSeries implement the SampleProvider interface

Signed-off-by: Harvey Harrison <harvey.harrison@ausenco.com>
JS: default TimeSeries data to a DimensionLessUnit

This allows direct use of the parseDoubles helper that expects a non-null unittype
when parsing.  We can also directly test for the correct number of arguments
in each record.

Signed-off-by: Harvey Harrison <harvey.harrison@ausenco.com>
JS: fold the initialization of startingYear to one place in parse

This avoids a parsing of the first date record twice.

Signed-off-by: Harvey Harrison <harvey.harrison@ausenco.com>
JS: move to strict-parsing the dates/times given in timeseries

Assume our simplified concept of 365 days/year with no leap years, leap seconds.

Signed-off-by: Harvey Harrison <harvey.harrison@ausenco.com>
JS: change date parsing to make the time part optional

Signed-off-by: Harvey Harrison <harvey.harrison@ausenco.com>
JS: add scheduleProcess API that accepts explicit delay length and priority

Signed-off-by: Harvey Harrison <harvey.harrison@ausenco.com>
JS: remove two hours-based functions from TimeSeries

Signed-off-by: Harvey Harrison <harvey.harrison@ausenco.com>
JS: rename the TImeSeries methods to reflect the internal use of Hours

Signed-off-by: Harvey Harrison <harvey.harrison@ausenco.com>
JS: update input example in timeseries to reflect more strict date format

Signed-off-by: Harvey Harrison <harvey.harrison@ausenco.com>
JS: update Threshold getMaxTimeValue/getNextChangeAfter to a shorter form

Signed-off-by: Harvey Harrison <harvey.harrison@ausenco.com>
JS: internally hold timeseries times in a double[]

Signed-off-by: Harvey Harrison <harvey.harrison@ausenco.com>
JS: internally hold timeseries values in a double[]

Signed-off-by: Harvey Harrison <harvey.harrison@ausenco.com>
JS: calculate a min and mx value inside the same value-copying loop

Signed-off-by: Harvey Harrison <harvey.harrison@ausenco.com>
JS: modify saved config file writing to output System line breaks rather than literal \n

Signed-off-by: Harvey Harrison <harvey.harrison@ausenco.com>