diff options
author | Jochen Topf <jochen@topf.org> | 2013-01-14 19:53:21 +0100 |
---|---|---|
committer | Jochen Topf <jochen@topf.org> | 2013-01-14 19:53:21 +0100 |
commit | 9f39838e8ad5b6b1dda21013152055f8a008acc9 (patch) | |
tree | 7a30495cee48c7b103e7a8f5ba71f34bbbf65dc6 /web/viewsjs | |
parent | 4298e373d2c7ebbd8e2c82dda6cff54f6c3995b0 (diff) | |
download | taginfo-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.erb | 39 | ||||
-rw-r--r-- | web/viewsjs/relations.js.erb | 48 |
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(' • '); +} + |