# Introduced when a change to the TCA loading affected Larry at APL, but Autoplot was unaffected because it used a 
# different route.  This sets the QFunction directly instead of via Java reflection.

reset()

from org.virbo.dataset import DDataSet
descriptor= DDataSet.createRank2(3,0)
descriptor.putProperty(QDataSet.LABEL,0,"x");
descriptor.putProperty(QDataSet.UNITS,0,Units.seconds);
descriptor.putProperty(QDataSet.FORMAT,0,"%5.1f");
descriptor.putProperty(QDataSet.LABEL,1,"cos(x)");
descriptor.putProperty(QDataSet.UNITS,1,Units.seconds);
descriptor.putProperty(QDataSet.FORMAT,1,"%5.2f");
descriptor.putProperty(QDataSet.LABEL,2,"sin(x)");
descriptor.putProperty(QDataSet.UNITS,2,Units.seconds);
descriptor.putProperty(QDataSet.FORMAT,2,"%5.2f");

from org.virbo.dataset import AbstractQFunction

class MyQF( AbstractQFunction ):

   def exampleInput( self ):
      return dataset( '2014-09-16T00:00Z' )

   def value( self, t ):
      x= abs( modp( convertUnitsTo(t-self.exampleInput(),Units.seconds), '86400s' ) )
      ret= dataset( [ x,cos(x),sin(x)] )
      ret.putProperty(QDataSet.BUNDLE_0,descriptor)
      return ret

import time
time.sleep(1)

dom.plots[0].xaxis.controller.dasAxis.setTcaFunction( MyQF() )
dom.plots[0].xaxis.controller.dasAxis.setDrawTca(True)
bind( dom, 'timeRange', dom.plots[0].xaxis, 'range' )

import time
#time.sleep(1)

writeToPng( 'test037_timeTcaQFunctionTest.png' )

#from java.io import File
#print File('test037_tcaQFunctionTest.png').absolutePath