move potlatch presets to only be generated once, and allow pulling in way_tags in a way via a false primary key
This commit is contained in:
parent
602b7b6d3f
commit
3bd92c1670
6 changed files with 88 additions and 66 deletions
|
@ -85,75 +85,15 @@ class AmfController < ApplicationController
|
|||
|
||||
private
|
||||
|
||||
# Return presets (default tags and crap) to potlatch
|
||||
# Global is set up in config/environment.rb on startup, code is in lib/osm.rb
|
||||
def getpresets
|
||||
return POTLATCH_PRESETS
|
||||
end
|
||||
|
||||
# ====================================================================
|
||||
# Remote calls
|
||||
|
||||
# ----- getpresets
|
||||
# in: none
|
||||
# does: reads tag preset menus, colours, and autocomplete config files
|
||||
# out: [0] presets, [1] presetmenus, [2] presetnames,
|
||||
# [3] colours, [4] casing, [5] areas, [6] autotags
|
||||
# (all hashes)
|
||||
|
||||
def getpresets
|
||||
RAILS_DEFAULT_LOGGER.info(" Message: getpresets")
|
||||
|
||||
# Read preset menus
|
||||
presets={}
|
||||
presetmenus={}; presetmenus['point']=[]; presetmenus['way']=[]; presetmenus['POI']=[]
|
||||
presetnames={}; presetnames['point']={}; presetnames['way']={}; presetnames['POI']={}
|
||||
presettype=''
|
||||
presetcategory=''
|
||||
# StringIO.open(txt) do |file|
|
||||
File.open("#{RAILS_ROOT}/config/potlatch/presets.txt") do |file|
|
||||
file.each_line {|line|
|
||||
t=line.chomp
|
||||
if (t=~/(\w+)\/(\w+)/) then
|
||||
presettype=$1
|
||||
presetcategory=$2
|
||||
presetmenus[presettype].push(presetcategory)
|
||||
presetnames[presettype][presetcategory]=["(no preset)"]
|
||||
elsif (t=~/^(.+):\s?(.+)$/) then
|
||||
pre=$1; kv=$2
|
||||
presetnames[presettype][presetcategory].push(pre)
|
||||
presets[pre]={}
|
||||
kv.split(',').each {|a|
|
||||
if (a=~/^(.+)=(.*)$/) then presets[pre][$1]=$2 end
|
||||
}
|
||||
end
|
||||
}
|
||||
end
|
||||
|
||||
# Read colours/styling
|
||||
colours={}; casing={}; areas={}
|
||||
File.open("#{RAILS_ROOT}/config/potlatch/colours.txt") do |file|
|
||||
file.each_line {|line|
|
||||
t=line.chomp
|
||||
if (t=~/(\w+)\s+([^\s]+)\s+([^\s]+)\s+([^\s]+)/) then
|
||||
tag=$1
|
||||
if ($2!='-') then colours[tag]=$2.hex end
|
||||
if ($3!='-') then casing[tag]=$3.hex end
|
||||
if ($4!='-') then areas[tag]=$4.hex end
|
||||
end
|
||||
}
|
||||
end
|
||||
|
||||
# Read auto-complete
|
||||
autotags={}; autotags['point']={}; autotags['way']={}; autotags['POI']={};
|
||||
File.open("#{RAILS_ROOT}/config/potlatch/autocomplete.txt") do |file|
|
||||
file.each_line {|line|
|
||||
t=line.chomp
|
||||
if (t=~/^(\w+)\/(\w+)\s+(.+)$/) then
|
||||
tag=$1; type=$2; values=$3
|
||||
if values=='-' then autotags[type][tag]=[]
|
||||
else autotags[type][tag]=values.split(',').sort.reverse end
|
||||
end
|
||||
}
|
||||
end
|
||||
|
||||
[presets,presetmenus,presetnames,colours,casing,areas,autotags]
|
||||
end
|
||||
|
||||
|
||||
# ----- whichways
|
||||
|
@ -208,6 +148,8 @@ class AmfController < ApplicationController
|
|||
basey = args[5]
|
||||
masterscale = args[6]
|
||||
|
||||
|
||||
|
||||
sql=<<-EOF
|
||||
SELECT DISTINCT current_ways.id
|
||||
FROM current_nodes,way_nodes,current_ways
|
||||
|
|
|
@ -49,9 +49,10 @@ class Way < ActiveRecord::Base
|
|||
|
||||
# Find a way given it's ID, and in a single SQL call also grab its nodes
|
||||
#
|
||||
|
||||
# You can't pull in all the tags too unless we put a sequence_id on the way_tags table and have a multipart key
|
||||
def self.find_eager(id)
|
||||
way = Way.find(id, :include => {:way_nodes => :node})
|
||||
way = Way.find(id, :include => [:way_tags, {:way_nodes => :node}])
|
||||
end
|
||||
|
||||
# Find a way given it's ID, and in a single SQL call also grab its nodes and tags
|
||||
|
|
|
@ -3,4 +3,6 @@ class WayNode < ActiveRecord::Base
|
|||
|
||||
set_primary_keys :id, :sequence_id
|
||||
belongs_to :node
|
||||
|
||||
belongs_to :way, :foreign_key => :id
|
||||
end
|
||||
|
|
|
@ -1,5 +1,8 @@
|
|||
class WayTag < ActiveRecord::Base
|
||||
set_table_name 'current_way_tags'
|
||||
|
||||
# false multipart key
|
||||
set_primary_keys :id, :k, :v
|
||||
|
||||
belongs_to :way, :foreign_key => 'id'
|
||||
end
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue