1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
|
<%
osm = @trans.t.osm
misc = @trans.t.misc
taginfo = @trans.t.taginfo
page = @trans.t.pages.key
%>
var create_flexigrid_for = {
overview: function(key, filter_type) {
create_flexigrid('grid-overview', {
url: '/api/4/key/stats?key=' + encodeURIComponent(key),
colModel: [
{ display: '<%= h(misc.object_type) %>', name: 'type', width: 100, sortable: true },
{ display: '<%= h(page.number_objects) %>', name: 'count', width: 260, sortable: true, align: 'center' },
{ display: '<%= h(page.number_values) %>', name: 'value', width: 140, sortable: true, align: 'right' }
],
usepager: false,
useRp: false,
preProcess: function(data) {
return {
total: 4,
page: 1,
rows: jQuery.map(data.data, function(row, i) {
return { 'cell': [
fmt_type_image(row.type),
fmt_value_with_percent(row.count, row.count_fraction),
fmt_with_ts(row.values)
]};
})
};
}
});
},
values: function(key, filter_type, lang) {
create_flexigrid('grid-values', {
url: '/api/4/key/values?key=' + encodeURIComponent(key) + '&filter=' + encodeURIComponent(filter_type) + '&lang=' + encodeURIComponent(lang),
colModel: [
{ display: '<%= h(osm.value) %>', name: 'value', width: 200, sortable: true },
{ display: '<%= h(misc.count) %>', name: 'count', width: 260, sortable: true, align: 'center' },
{ display: '<img src="/img/sources/wiki.16.png" alt="Wiki" width="16" height="16" title="<%= h(misc.in_wiki_tooltip) %>"/>', name: 'in_wiki', width: 20, sortable: true, align: 'center' },
{ display: '<span title="<%= h(page.tag_description_from_wiki) %>"><%= h(misc.description) %></span>', name: 'description', width: 600, sortable: false, align: 'left' }
],
searchitems: [
{ display: '<%= h(osm.value) %>', name: 'value' }
],
sortname: 'count',
sortorder: 'desc',
preProcess: function(data) {
data.rows = jQuery.map(data.data, function(row, i) {
return { 'cell': [
hover_expand(link_to_value(key, row.value)),
fmt_value_with_percent(row.count, row.fraction),
fmt_checkmark(row.in_wiki),
html_escape(row.description)
] };
});
delete data.data;
return data;
}
});
},
combinations: function(key, filter_type) {
create_flexigrid('grid-keys', {
url: '/api/4/key/combinations?key=' + encodeURIComponent(key) + '&filter=' + encodeURIComponent(filter_type),
colModel: [
{ display: '<span title="<%= h(page.other_keys_used.to_count_tooltip) %>"><%= h(misc.count) %> →</span>', name: 'to_count', width: 260, sortable: true, align: 'center' },
{ display: '<span title="<%= h(page.other_keys_used.other_key_tooltip) %>"><%= h(page.other_keys_used.other) %></span>', name: 'other_key', width: 400, sortable: true },
{ display: '<span title="<%= h(page.other_keys_used.from_count_tooltip) %>">→ <%= h(misc.count) %></span>', name: 'from_count', width: 260, sortable: true, align: 'center' }
],
searchitems: [
{ display: '<%= h(page.other_keys_used.other) %>', name: 'other_key' }
],
sortname: 'to_count',
sortorder: 'desc',
preProcess: function(data) {
data.rows = jQuery.map(data.data, function(row, i) {
return { 'cell': [
fmt_value_with_percent(row.together_count, row.to_fraction),
link_to_key(row.other_key),
fmt_value_with_percent(row.together_count, row.from_fraction),
] };
});
return data;
}
});
},
similar: function(key) {
create_flexigrid('grid-similar', {
url: '/api/4/key/similar?key=' + encodeURIComponent(key),
colModel: [
{ display: '<%= h(page.similar.other) %>', name: 'other_key', width: 500, sortable: true },
{ display: '<span title="<%= h(page.similar.count_all_tooltip) %>"><%= h(misc.count) %></span>', name: 'count_all', width: 160, sortable: true, align: 'right' },
{ display: '<span title="<%= h(page.similar.similarity_tooltip) %>"><%= h(page.similar.similarity) %></span>', name: 'similarity', width: 100, sortable: true, align: 'right' }
],
searchitems: [
{ display: '<%= h(page.similar.other) %>', name: 'other_key' }
],
sortname: 'other_key',
sortorder: 'asc',
preProcess: function(data) {
data.rows = jQuery.map(data.data, function(row, i) {
return { 'cell': [
link_to_key_with_highlight(row.other_key, key),
row.count_all,
row.similarity
] };
});
return data;
}
});
},
wiki: function(key, filter_type) {
create_flexigrid('grid-wiki', {
url: '/api/4/key/wiki_pages?key=' + encodeURIComponent(key),
colModel: [
{ display: '<%= h(misc.language) %>', name: 'lang', width: 150, sortable: false },
{ display: '<%= h(page.wiki_pages.wiki_page) %>', name: 'title', width: 160, sortable: false, align: 'right' },
{ display: '<%= h(misc.description) %>', name: 'description', width: 400, sortable: false },
{ display: '<%= h(misc.image) %>', name: 'image', width: 120, sortable: false },
{ display: '<%= h(osm.objects) %>', name: 'objects', width: 80, sortable: false },
{ display: '<%= h(page.wiki_pages.implied_tags) %>', name: 'tags_implied', width: 120, sortable: false },
{ display: '<%= h(page.wiki_pages.combined_tags) %>', name: 'tags_combination', width: 120, sortable: false },
{ display: '<%= h(page.wiki_pages.linked_tags) %>', name: 'tags_linked', width: 220, sortable: false }
],
usepager: false,
useRp: false,
preProcess: function(data) {
return {
total: data.size,
page: 1,
rows: jQuery.map(data, function(row, i) {
return { 'cell': [
fmt_language(row.lang, row.language, row.language_en),
link_to_wiki(row.title),
html_escape(row.description),
fmt_wiki_image_popup(row.image),
fmt_type_icon('node', row.on_node) +
fmt_type_icon('way', row.on_way) +
fmt_type_icon('area', row.on_area) +
fmt_type_icon('relation', row.on_relation),
fmt_key_or_tag_list(row.tags_implies),
fmt_key_or_tag_list(row.tags_combination),
fmt_key_or_tag_list(row.tags_linked)
]};
})
};
}
});
},
projects: function(key, filter_type) {
create_flexigrid('grid-projects', {
url: '/api/4/key/projects?key=' + encodeURIComponent(key) + '&filter=' + encodeURIComponent(filter_type),
colModel: [
{ display: '<%= h(taginfo.project) %>', name: 'project_name', width: 280, sortable: true },
{ display: '<%= h(osm.tag) %>', name: 'tag', width: 220, sortable: true },
{ display: '<%= h(osm.objects) %>', name: 'objects', width: 80, sortable: false },
{ display: '<%= h(page.projects.description) %>', name: 'description', width: 600, sortable: false, align: 'left' }
],
searchitems: [
{ display: '<%= h(taginfo.project) %>/<%= h(osm.value) %>', name: 'project_value' }
],
sortname: 'tag',
sortorder: 'asc',
preProcess: function(data) {
data.rows = jQuery.map(data.data, function(row, i) {
return { 'cell': [
link_to_project(row.project_id, row.project_name, row.project_icon_url),
row.value ? link_to_tag(row.key, row.value) : (link_to_key(row.key) + '=*'),
fmt_type_icon('node', row.on_node) +
fmt_type_icon('way', row.on_way) +
fmt_type_icon('area', row.on_area) +
fmt_type_icon('relation', row.on_relation),
project_tag_desc(row.description, row.icon_url, row.doc_url)
] };
});
return data;
}
});
}
};
function create_chart(params) {
var y = 0;
params.data.forEach(function(d) {
d['y'] = y;
y += d['count'];
});
var scale = d3.scale.linear()
.domain([0, params.max])
.range([0, params.height]);
var color = d3.scale.ordinal()
.range(d3_colors());
var chart = d3.select('#canvas-values').append('svg')
.attr("width", params.width)
.attr("height", params.height);
chart.selectAll("rect")
.data(params.data)
.enter()
.append("svg:a")
.attr('xlink:href', function(d) { return url_for_tag(params.key, d['value']); })
.attr('transform', function(d) { return 'translate(10, ' + scale(d['y']) + ')'; })
.call(function(c) {
c.append("rect")
.attr('width', 20)
.attr('height', function(d) { return scale(d['count']); })
.style('fill', function(d, i) { return color(i); });
})
.append("text")
.attr('x', 25)
.attr('y', function(d) { return scale(d['count'] / 2); })
.attr('dy', '0.5em')
.text(function(d) { return d['value']; });
}
function page_init() {
up = function() { window.location = '/keys'; }
activate_josm_button();
jQuery('#filter').bind('change', function() {
var value = this.value;
var qs = jQuery.getQueryString;
qs['filter'] = value;
window.location.search = jQuery.param(qs);
});
page_init2();
}
|