Module: Columbus3::LeafletRenderer

Defined in:
lib/columbus3/renderer/leaflet_renderer.rb

Overview

renderer controls the transformation of a V900 tracks into a displayable format, whatever this means

Class Method Summary collapse

Class Method Details

.show(filename, files) ⇒ Object

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



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/columbus3/renderer/leaflet_renderer.rb', line 11

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

.to_geojson_filename(filename) ⇒ Object



50
51
52
# File 'lib/columbus3/renderer/leaflet_renderer.rb', line 50

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

.to_leaflet(filename, force = false) ⇒ Object

make a v900 track into a leaflet layer cached to disk



29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/columbus3/renderer/leaflet_renderer.rb', line 29

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

.to_leaflet_layername(filename) ⇒ Object



54
55
56
# File 'lib/columbus3/renderer/leaflet_renderer.rb', line 54

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

.to_varname(prefix, filename) ⇒ Object



58
59
60
# File 'lib/columbus3/renderer/leaflet_renderer.rb', line 58

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