Sha256: 1a296d5f190cdb0bb6812e252cbd874f3fcb469b989089c095c1ea27081be21f

Contents?: true

Size: 1.99 KB

Versions: 2

Compression:

Stored size: 1.99 KB

Contents

require 'erb'
require 'yaml'
require 'columbus3/renderer/sanitizer'

module Columbus3
  # make a track into a flot graph (speed and height)
  module FlotRenderer
    # apply the ERB in html/flot.html.erb
    # and save it in the current directory, under _flot.html
    def self.show filename, file
      template = File.join(File.dirname(__FILE__), "/../../html/flot.html.erb")
      renderer = ERB.new(File.read(template))
      
      # context: location of css and js + list of files to show
      bower_dir = File.join(File.dirname(__FILE__), "/../../../bower_components")
      @flot_js = [File.join(bower_dir, 'jquery/dist/jquery.min.js'),
                  File.join(bower_dir, 'flot/jquery.flot.js'),
                  File.join(bower_dir, 'flot/jquery.flot.resize.js'),
                  File.join(bower_dir, 'flot/jquery.flot.time.js'),
                  File.join(bower_dir, 'flot/jquery.flot.selection.js')                  
                 ]
      @file = file
      # TODO: manage the case of sidecar not existing
      @track_info = Sidecar.new @file
      @track_info.load

      # generate the output
      html = renderer.result(binding)

      # save it to file
      File.open(filename, "w") do |file|
        file << html
      end
    end

    # make a v900 track into a graph layer cached to disk
    def self.to_graph_data filename, force = false
      target = to_graph_filename filename

      if force or not File.exists? target
        track = V900Track.new filename: filename
        File.open(target, "w") do |file|
          id = Sanitizer::sanitize filename

          file.printf <<EOS
min_time_#{id} = #{track.first.time.to_i * 1000};\n
max_time_#{id} = #{track.last.time.to_i * 1000};\n
speed_#{id} = #{track.range.each.map { |i| [track[i].time.to_i * 1000, track[i].speed] }};\n
height_#{id} = #{track.range.each.map { |i|[track[i].time.to_i * 1000, track[i].height] }};\n
EOS
        end
      end

    end

    def self.to_graph_filename filename
      filename + "_graph.js"
    end

  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
columbus3-0.5.1 lib/columbus3/renderer/flot_renderer.rb
columbus3-0.5.0 lib/columbus3/renderer/flot_renderer.rb