From 96c60311ad04996ef822d601cf91156dfb471298 Mon Sep 17 00:00:00 2001 From: Ansis Brammanis Date: Wed, 27 Feb 2013 12:04:05 -0500 Subject: [PATCH] Add preset descriptions via taginfo --- css/app.css | 7 +++++++ js/id/services/taginfo.js | 2 +- js/id/ui/presetgrid.js | 30 +++++++++++++++++++++++++----- 3 files changed, 33 insertions(+), 6 deletions(-) diff --git a/css/app.css b/css/app.css index dd151ef46..b039bfa03 100644 --- a/css/app.css +++ b/css/app.css @@ -785,6 +785,13 @@ div.combobox { position: absolute; bottom: 0px; right: 0px; + width: 20px; + height: 20px; + background: black; +} + +.grid-entry .preset-help:hover { + background: grey; } .preset-inspect { diff --git a/js/id/services/taginfo.js b/js/id/services/taginfo.js index 74e5dc311..feb3c650e 100644 --- a/js/id/services/taginfo.js +++ b/js/id/services/taginfo.js @@ -113,7 +113,7 @@ iD.taginfo = function() { taginfo.docs = function(parameters, callback) { var debounce = parameters.debounce; parameters = clean(setSort(parameters)); - request(endpoint + 'tag/wiki_pages?' + + request(endpoint + (parameters.value ? 'tag/wiki_pages?' : 'key/wiki_pages?') + iD.util.qsString(parameters), debounce, callback); }; diff --git a/js/id/ui/presetgrid.js b/js/id/ui/presetgrid.js index 77a836513..bc8f3dfd6 100644 --- a/js/id/ui/presetgrid.js +++ b/js/id/ui/presetgrid.js @@ -1,7 +1,8 @@ iD.ui.PresetGrid = function(context) { var event = d3.dispatch('choose', 'message'), entity, - presetData; + presetData, + taginfo = iD.taginfo(); function presetgrid(selection, preset) { @@ -109,9 +110,11 @@ iD.ui.PresetGrid = function(context) { var presetinspect; - entered.append('button') + entered.append('span').attr('class','label').text(name); + + entered.append('div') .attr('tabindex', -1) - .attr('class', 'preset-help minor') + .attr('class', 'preset-help') .on('click', function(d) { // Display description box inline @@ -138,12 +141,29 @@ iD.ui.PresetGrid = function(context) { .datum(d); presetinspect.append('h2').text(d.title || d.name); + + var description = presetinspect.append('p'); + var link = presetinspect.append('a'); + + var params = {}, + locale = iD.detect().locale.split('-')[0] || 'en'; + + params.key = Object.keys(d.match.tags)[0]; + if (d.match.tags[params.key] !== '*') { + params.value = d.match.tags[params.key]; + } + + taginfo.docs(params, function(err, data) { + var doc = _.find(data, function(d) { return d.lang === locale; }) || + _.find(data, function(d) { return d.lang === 'en'; }); + description.text(doc.description); + link.attr('href', 'http://wiki.openstreetmap.org/wiki/' + encodeURIComponent(doc.title)); + link.text(doc.title); + }); }) .append('span') .attr('class', 'icon inspect'); - entered.append('span').attr('class','label').text(name); - entries.exit().remove(); entries.order(); }