summaryrefslogtreecommitdiff
path: root/web/viewsjs
diff options
context:
space:
mode:
authorJochen Topf <jochen@topf.org>2013-01-14 19:53:21 +0100
committerJochen Topf <jochen@topf.org>2013-01-14 19:53:21 +0100
commit9f39838e8ad5b6b1dda21013152055f8a008acc9 (patch)
tree7a30495cee48c7b103e7a8f5ba71f34bbbf65dc6 /web/viewsjs
parent4298e373d2c7ebbd8e2c82dda6cff54f6c3995b0 (diff)
downloadtaginfo-9f39838e8ad5b6b1dda21013152055f8a008acc9.tar
taginfo-9f39838e8ad5b6b1dda21013152055f8a008acc9.tar.gz
Add new relations section
There is a whole new relations section which gives information about different relation types. There is a list of all relation types and there is a page for each relation type which currently contains an empty overview tab and a roles tab with a list of roles used with this relation type. There is currently no link that leads to this section as it is not finished yet.
Diffstat (limited to 'web/viewsjs')
-rw-r--r--web/viewsjs/relation.js.erb39
-rw-r--r--web/viewsjs/relations.js.erb48
2 files changed, 87 insertions, 0 deletions
diff --git a/web/viewsjs/relation.js.erb b/web/viewsjs/relation.js.erb
new file mode 100644
index 0000000..c33073e
--- /dev/null
+++ b/web/viewsjs/relation.js.erb
@@ -0,0 +1,39 @@
+<%
+ osm = @trans.t.osm
+ page = @trans.t.pages.relation
+ %>
+var create_flexigrid_for = {
+ roles: function(rtype) {
+ create_flexigrid('grid-roles', {
+ url: '/api/4/relation/roles?type=' + encodeURIComponent(rtype),
+ colModel: [
+ { display: '<%= osm.relation_member_role %>', name: 'role', width: 250, sortable: true },
+ { display: '<span title="<%= page.roles.objects_tooltip %>"><img src="/img/types/all.16.png" width="16" height="16" alt=""/> <%= osm.relation_members %></span>', name: 'count_all_members', width: 250, sortable: true, align: 'center' },
+ { display: '<span title="<%= page.roles.nodes_tooltip %>"><img src="/img/types/node.16.png" width="16" height="16" alt=""/> <%= osm.relation_member_nodes %></span>', name: 'count_node_members', width: 250, sortable: true, align: 'center' },
+ { display: '<span title="<%= page.roles.ways_tooltip %>"><img src="/img/types/way.16.png" width="16" height="16" alt=""/> <%= osm.relation_member_ways %></span>', name: 'count_way_members', width: 250, sortable: true, align: 'center' },
+ { display: '<span title="<%= page.roles.relations_tooltip %>"><img src="/img/types/relation.16.png" width="16" height="16" alt=""/> <%= osm.relation_member_relations %></span>', name: 'count_relation_members', width: 250, sortable: true, align: 'center' },
+ ],
+ searchitems: [
+ { display: '<%= osm.relation_member_role %>', name: 'role' }
+ ],
+ sortname: 'count_all_members',
+ sortorder: 'desc',
+ preProcess: function(data) {
+ data.rows = jQuery.map(data.data, function(row, i) {
+ return { 'cell': [
+ pp_role(row.role),
+ print_value_with_percent(row.count_all_members, row.count_all_members_fraction),
+ print_value_with_percent(row.count_node_members, row.count_node_members_fraction),
+ print_value_with_percent(row.count_way_members, row.count_way_members_fraction),
+ print_value_with_percent(row.count_relation_members, row.count_relation_members_fraction)
+ ] };
+ });
+ return data;
+ }
+ });
+ }
+};
+
+function page_init() {
+ page_init2();
+}
diff --git a/web/viewsjs/relations.js.erb b/web/viewsjs/relations.js.erb
new file mode 100644
index 0000000..147d590
--- /dev/null
+++ b/web/viewsjs/relations.js.erb
@@ -0,0 +1,48 @@
+<%
+ osm = @trans.t.osm
+ page = @trans.t.pages.relations
+ %>
+function page_init() {
+ create_flexigrid('grid-relations', {
+ url: '/api/4/relations/all',
+ colModel: [
+ { display: '<%= osm.relation_type %>', name: 'relation_type', width: 220, sortable: true },
+ { display: '<span title="<%= page.relations_of_type_tooltip %>"><%= osm.relations %></span>', name: 'count', width: 250, sortable: true, align: 'center' },
+ { display: '<%= osm.tag %>', name: 'tag', width: 250, sortable: false },
+ { display: '<span title="<%= page.prevalent_roles_tooltip %>"><%= page.prevalent_roles %></span>', name: 'prevalent_roles', width: 550, sortable: false }
+ ],
+ searchitems: [
+ { display: '<%= osm.relation_type %>', name: 'relation_type' }
+ ],
+ sortname: 'count',
+ sortorder: 'desc',
+ preProcess: function(data) {
+ data.rows = jQuery.map(data.data, function(row, i) {
+ return { 'cell': [
+ link_to_rtype(row.relation_type),
+ print_value_with_percent(row.count, row.count_fraction),
+ link_to_tag('type', row.relation_type),
+ print_prevalent_role_list(row.prevalent_roles)
+ ] };
+ });
+ return data;
+ }
+ });
+};
+
+function print_prevalent_role_list(list) {
+ if (list === null) {
+ return empty('<%= page.no_information %>');
+ }
+ if (list.length == 0) {
+ return empty(page.roles_less_than_one_percent);
+ }
+ return jQuery.map(list, function(item, i) {
+ if (item.role) {
+ return tag('span', item.role, { tipsy: 'e', title: html_escape(item.role) + ' (' + item.fraction.print_as_percent() + ')' });
+ } else {
+ return tag('span', empty('<%= page.empty_role %>'), { tipsy: 'e', title: '(' + item.fraction.print_as_percent() + ')' });
+ }
+ }).join(' &bull; ');
+}
+