diff options
Diffstat (limited to 'web')
-rw-r--r-- | web/lib/sql.rb | 2 | ||||
-rw-r--r-- | web/lib/utils.rb | 4 | ||||
-rw-r--r-- | web/public/css/taginfo.css | 48 | ||||
-rw-r--r-- | web/public/js/taginfo.js | 2 | ||||
-rwxr-xr-x | web/taginfo.rb | 41 | ||||
-rw-r--r-- | web/views/sources/potlatch/categories.erb | 36 | ||||
-rw-r--r-- | web/views/sources/potlatch/category.erb | 17 | ||||
-rw-r--r-- | web/views/sources/potlatch/feature.erb | 24 | ||||
-rw-r--r-- | web/views/sources/potlatch/features.erb | 0 | ||||
-rw-r--r-- | web/views/sources/potlatch/index.erb | 7 |
10 files changed, 179 insertions, 2 deletions
diff --git a/web/lib/sql.rb b/web/lib/sql.rb index 514dedf..5ebff89 100644 --- a/web/lib/sql.rb +++ b/web/lib/sql.rb @@ -11,7 +11,7 @@ module SQL @db = SQLite3::Database.new(filename) @db.results_as_hash = true - [:db, :wiki, :josm].each do |dbname| + [:db, :wiki, :josm, :potlatch].each do |dbname| @db.execute("ATTACH DATABASE '#{dir}/taginfo-#{dbname}.db' AS #{dbname}") end diff --git a/web/lib/utils.rb b/web/lib/utils.rb index 415553b..7ffc55f 100644 --- a/web/lib/utils.rb +++ b/web/lib/utils.rb @@ -171,3 +171,7 @@ def link_to_tag(key, value) return link_to_key(key) + '=' + link_to_value(key, value) end +def external_link(title, link) + %Q{→ <a class="extlink" href="#{link}" target="_blank">#{title}</a>} +end + diff --git a/web/public/css/taginfo.css b/web/public/css/taginfo.css index b28f132..1ef4fe8 100644 --- a/web/public/css/taginfo.css +++ b/web/public/css/taginfo.css @@ -342,3 +342,51 @@ div#canvas-keypairs { background-color: #ffffff; } +/* ========== */ + +table.drilldown { + border-collapse: separate; + border-spacing: 10px; +} + +table.drilldown td, table.drilldown th { + vertical-align: top; +} + +table.drilldown th h2 { + padding: 0; + margin: 0; +} + +table.drilldown td.content { + width: 16em; + border: 1px solid #d0d0d0; + background-color: #f0f0f0; + -moz-border-radius: 8px; + -khtml-border-radius: 8px; + -webkit-border-radius: 8px; + -chrome-border-radius: 8px; + -o-border-radius: 8px; + padding: 10px 0; +} + +table.drilldown td.content div { + width: 100%; + padding: 1px 0; +} + +table.drilldown td.content div.current { + background-color: #e0e0e0; +} + +table.drilldown td.arrow { + vertical-align: middle; + font-size: 200%; +} + +table.drilldown td#feature { + min-width: 16em; + padding: 10px; +} + +/* ========== */ diff --git a/web/public/js/taginfo.js b/web/public/js/taginfo.js index 15d10af..0746306 100644 --- a/web/public/js/taginfo.js +++ b/web/public/js/taginfo.js @@ -1,7 +1,7 @@ // taginfo.js function print_wiki_link(title) { - return '→ <a class="wikilink" href="http://wiki.openstreetmap.org/wiki/' + title + '">' + title + '</a>'; + return '→ <a class="wikilink" href="http://wiki.openstreetmap.org/wiki/' + title + '" target="_blank">' + title + '</a>'; } function print_language(code, lang) { diff --git a/web/taginfo.rb b/web/taginfo.rb index a9adcdd..5147e13 100755 --- a/web/taginfo.rb +++ b/web/taginfo.rb @@ -305,6 +305,47 @@ class Taginfo < Sinatra::Base #-------------------------------------------------------------------------- + get '/sources/potlatch/?' do + @title = 'Potlatch' + @breadcrumbs << ['Sources', '/sources'] + @breadcrumbs << ['Potlatch'] + + erb :'sources/potlatch/index' + end + + get '/sources/potlatch/categories' do + @title = 'Potlatch Features' + @breadcrumbs << ['Sources', '/sources'] + @breadcrumbs << ['Potlatch', '/sources/potlatch'] + @breadcrumbs << ['Features'] + + @categories = @db.execute('SELECT * FROM potlatch.categories ORDER BY name') + + erb :'sources/potlatch/categories' + end + + get '/sources/potlatch/categories/:category' do + @category = params[:category] + @features = @db.execute('SELECT * FROM potlatch.features WHERE category_id=? ORDER BY name', @category) + + erb :'sources/potlatch/category', :layout => false + end + + get '/sources/potlatch/features/:feature' do + @feature_name = params[:feature] + @feature = @db.execute('SELECT * FROM potlatch.features WHERE name=?', @feature_name)[0] + @tags = @db.execute('SELECT * FROM potlatch.tags WHERE feature_name=? ORDER BY key, value', @feature_name) + + erb :'sources/potlatch/feature', :layout => false + end + + get %r{/sources/potlatch/icon/(.*)} do + content_type :png + IO.read('../../var/sources/potlatch/resources/' + params[:captures].first) + end + + #-------------------------------------------------------------------------- + load 'lib/api/db.rb' load 'lib/api/wiki.rb' load 'lib/api/josm.rb' diff --git a/web/views/sources/potlatch/categories.erb b/web/views/sources/potlatch/categories.erb new file mode 100644 index 0000000..3aa75d1 --- /dev/null +++ b/web/views/sources/potlatch/categories.erb @@ -0,0 +1,36 @@ +<h1><img src="/img/sources/potlatch.32.png" alt="" title="Potlatch"/> Potlatch</h1> + +<table class="drilldown"><tr> + <th><h2>➊ Categories</h2></th> + <th></th> + <th><h2>➋ Features</h2></th> + <th></th> + <th><h2>➌ Feature</h2></th> +</tr><tr> + <td class="content" id="categories"> + <% @categories.each do |row| %> + <div> <a href="/sources/potlatch/categories#<%= escape row['id'] %>"><%= row['name'] %></a></div> + <% end %> + </div> + <td class="arrow">❱</td> + <td class="content" id="features"></td> + <td class="arrow">❱</td> + <td class="content" id="feature"></td> +</tr></table> + +<script type="text/javascript"> + +jQuery('#categories a').bind('click', function() { + jQuery('#categories div').removeClass('current'); + jQuery(this).parent().addClass('current'); + jQuery('#feature').html(''); + jQuery.ajax({ + url: this.href.replace(/#/, '/'), + success: function(html) { + jQuery('#features').html(html); + } + }); + return false; +}); + +</script> diff --git a/web/views/sources/potlatch/category.erb b/web/views/sources/potlatch/category.erb new file mode 100644 index 0000000..2355ec6 --- /dev/null +++ b/web/views/sources/potlatch/category.erb @@ -0,0 +1,17 @@ +<% @features.each do |row| %> + <div> <a href="/sources/potlatch/features/<%= escape row['name'] %>"><%= row['name'] %></a></div> +<% end %> +<script type="text/javascript"> +jQuery('#features a').bind('click', function() { + jQuery('#features div').removeClass('current'); + jQuery(this).parent().addClass('current'); + jQuery.ajax({ + url: this.href, + success: function(html) { + jQuery('#feature').html(html); + } + }); + return false; +}); + +</script> diff --git a/web/views/sources/potlatch/feature.erb b/web/views/sources/potlatch/feature.erb new file mode 100644 index 0000000..6e53f0b --- /dev/null +++ b/web/views/sources/potlatch/feature.erb @@ -0,0 +1,24 @@ +<p style="text-align: center;"><b><%= @feature_name %></b></p> + +<p style="background: #ffffff; padding: 4px; -moz-border-radius: 3px; text-align: center; min-height: 36px; vertical-align: middle;"> +<% if @feature['icon_image'] %> + <img src="/sources/potlatch/icon/<%= @feature['icon_image'] %>" alt="Icon" title="Icon"/> +<% end %> +</p> + +<p style="text-align: center;"> +<% [:point, :line, :area, :relation].each do |otype| %> + <% imgmatch = { :point => 'node', :line => 'way', :area => 'area', :relation => 'relation' }; + image = @feature['on_' + otype.to_s] == '1' ? imgmatch[otype] : 'none' %> + <img src="/img/types/<%= image %>.16.png" alt="" title="<%= otype.to_s.capitalize %>"/> +<% end %> +</p> + +<p style="text-align: center;"><%= external_link('Help text', @feature['help']) %></p> + +<p style="text-align: center;">Tags:<br/> + <% @tags.each do |tag| %> + <%= link_to_tag(tag['key'], tag['value']) %><br/> + <% end %> +</p> + diff --git a/web/views/sources/potlatch/features.erb b/web/views/sources/potlatch/features.erb new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/web/views/sources/potlatch/features.erb diff --git a/web/views/sources/potlatch/index.erb b/web/views/sources/potlatch/index.erb new file mode 100644 index 0000000..5a1a289 --- /dev/null +++ b/web/views/sources/potlatch/index.erb @@ -0,0 +1,7 @@ +<h1><img src="/img/sources/potlatch.32.png" alt="" title="Potlatch"/> Potlatch</h1> + +<ul> + <li><a href="/sources/potlatch/categories">Categories</a></li> + <li><a href="/sources/potlatch/features">Features</a></li> +</ul> + |