Sha256: 242f249fa86de3a0b964c7f82d76f28980727fdada9075c1321d5a71ef02289f

Contents?: true

Size: 1.95 KB

Versions: 2

Compression:

Stored size: 1.95 KB

Contents

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

module Columbus3
  # renderer controls the transformation of a V900 tracks into a displayable format,
  # whatever this means
  module LeafletRenderer
    # apply the ERB in html/show.html.erb (which includes all the tracks to display)
    # and save it in the current directory, under _show.html
    def self.show filename, files
      template = File.join(File.dirname(__FILE__), "/../../html/show.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")
      @leaflet_providers = File.join(bower_dir, 'leaflet-providers/leaflet-providers.js')
      @leaflet_js = File.join(bower_dir, 'leaflet/dist/leaflet.js')
      @leaflet_css = File.join(bower_dir, 'leaflet/dist/leaflet.css')
      @files = files

      # generate and save to file
      File.open(filename, "w") do |file|
        file << renderer.result(binding)
      end
    end

    # make a v900 track into a leaflet layer cached to disk
    def self.to_leaflet filename, force = false

      target = to_geojson_filename filename

      if force or not File.exists? target
        # load the template
        template = File.join(File.dirname(__FILE__), "/../../html/track.js.erb")
        renderer = ERB.new(File.read(template))
      
        # context: the track and the track's id
        @track = V900Track.new filename: filename
        @filename = filename

        # generate and save it to file
        File.open(target, "w") do |file|
          file << renderer.result(binding)
        end
      end

    end

    def self.to_geojson_filename filename
      filename + ".js"
    end

    def self.to_leaflet_layername filename
      to_varname "layer_", Sanitizer::sanitize(filename)
    end
    
    def self.to_varname prefix, filename
      prefix + Sanitizer::sanitize(filename)
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

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