class GerbilCharts::Surfaces::Tracker
Tracker
(allows mouse selection of timearea)¶ ↑
This sets up the hooks to interact with the gerbil.js Javascript file
Public Class Methods
new(opts={})
click to toggle source
Calls superclass method
GerbilCharts::Surfaces::GraphElement::new
# File lib/gerbilcharts/surfaces/tracker.rb, line 10 def initialize(opts={}) super end
Public Instance Methods
int_render(dc)
click to toggle source
# File lib/gerbilcharts/surfaces/tracker.rb, line 14 def int_render(dc) dc.addshape(GerbilCharts::SVGDC::SVGCustomWin.new("GerbilTracker",self)) end
render_direct(xfrag)
click to toggle source
render the elements directly
# File lib/gerbilcharts/surfaces/tracker.rb, line 21 def render_direct(xfrag) # calculate scaling factors range_options_x = parent.get_global_option(:scaling_x,:auto) rx = parent.modelgroup.effective_range_x(range_options_x) return unless rx.rmin.is_a? Time xfrag.g(:id=> 'gtrackerrect', :visibility=>'hidden') { xfrag.rect(:id=>"trackerrect", :class=>"trackerrect", :height=>parent.anchor.bounds.height, :width=>30, :x=>100, :y=>parent.anchor.bounds.top) } # output the SVG fragment directly xfrag.g(:id => 'gtrackerpanel') { xfrag.rect(:id=>"trackerpanel", :class=>"trackerpanel", :height=>@bounds.height, :width=>@bounds.width, :x=>@bounds.left, :y=>@bounds.top, :onmousedown=>"TrackerMouseDown(evt)", :onmousemove=>"TrackerMouseMove(evt)", :onmouseup=>"TrackerMouseUp(evt)") } ty = parent.anchor.bounds.height/2 xfrag.g(:id=> 'gtrackertext', :visibility=>'hidden', :transform => "translate(200 50)") { xfrag.text( :class => 'trackertextinterval', :id=>'trackertextbox', "text-anchor" => 'middle' ) { xfrag.tspan( :id => 'trackertextinterval', :x=>0, :y=>ty) { "15 Minutes" } xfrag.tspan( :class => 'trackertextfromts', :id => 'trackertextfromts', :x=>0, :dy=>25) { "Starting: Apr 2 1973, 05:00:00 PM" } } } xfrag.g(:id=>"gtrackerdata", :visibility=>'hidden', :gerb_fromts=>rx.rmin.tv_sec, :gerb_seconds=>rx.rmax.tv_sec-rx.rmin.tv_sec, :gerb_scale =>(rx.delta)/parent.anchor.bounds.width, :gerb_tzoffset => Time.new.utc_offset, :gerb_tzname => Time.new.zone, :gerb_selts=>1, :gerb_selsecs=>1) end