summaryrefslogtreecommitdiff
path: root/web
diff options
context:
space:
mode:
Diffstat (limited to 'web')
-rw-r--r--web/lib/sql.rb2
-rw-r--r--web/lib/utils.rb4
-rw-r--r--web/public/css/taginfo.css48
-rw-r--r--web/public/js/taginfo.js2
-rwxr-xr-xweb/taginfo.rb41
-rw-r--r--web/views/sources/potlatch/categories.erb36
-rw-r--r--web/views/sources/potlatch/category.erb17
-rw-r--r--web/views/sources/potlatch/feature.erb24
-rw-r--r--web/views/sources/potlatch/features.erb0
-rw-r--r--web/views/sources/potlatch/index.erb7
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{&rarr; <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 '&rarr; <a class="wikilink" href="http://wiki.openstreetmap.org/wiki/' + title + '">' + title + '</a>';
+ return '&rarr; <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>&#x278a; Categories</h2></th>
+ <th></th>
+ <th><h2>&#x278b; Features</h2></th>
+ <th></th>
+ <th><h2>&#x278c; Feature</h2></th>
+</tr><tr>
+ <td class="content" id="categories">
+ <% @categories.each do |row| %>
+ <div>&nbsp;&nbsp;<a href="/sources/potlatch/categories#<%= escape row['id'] %>"><%= row['name'] %></a></div>
+ <% end %>
+ </div>
+ <td class="arrow">&#x2771;</td>
+ <td class="content" id="features"></td>
+ <td class="arrow">&#x2771;</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>&nbsp;&nbsp;<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>
+