From 831b67beaee4ddf02144f00b98e416a6f3065456 Mon Sep 17 00:00:00 2001 From: Ansis Brammanis Date: Tue, 12 Mar 2013 19:19:10 -0400 Subject: [PATCH] universal presets presets with universal=true show up for any preset if the key is present --- build.js | 1 - data/presets/forms/address.json | 3 ++- data/presets/forms/elevation.json | 5 +++-- data/presets/forms/source.json | 5 +++++ data/presets/forms/telephone.json | 5 +++++ data/presets/forms/website.json | 5 +++++ data/presets/forms/wikipedia.json | 5 +++++ js/id/presets.js | 7 +++++++ js/id/ui/preset.js | 8 +++++++- 9 files changed, 39 insertions(+), 5 deletions(-) create mode 100644 data/presets/forms/source.json create mode 100644 data/presets/forms/telephone.json create mode 100644 data/presets/forms/website.json create mode 100644 data/presets/forms/wikipedia.json diff --git a/build.js b/build.js index 780c7b98e..ba3a77cd1 100644 --- a/build.js +++ b/build.js @@ -28,7 +28,6 @@ fs.writeFileSync('data/presets/presets.json', JSON.stringify( fs.writeFileSync('data/data.js', 'iD.data = ' + JSON.stringify({ deprecated: r('deprecated.json'), discarded: r('discarded.json'), - imagery: r('imagery.json'), keys: r('keys.json'), imagery: r('imagery.json'), presets: { diff --git a/data/presets/forms/address.json b/data/presets/forms/address.json index dd8a73898..02d01ebb0 100644 --- a/data/presets/forms/address.json +++ b/data/presets/forms/address.json @@ -5,5 +5,6 @@ "addr:housenumber", "addr:street", "addr:city" - ] + ], + "universal": true } diff --git a/data/presets/forms/elevation.json b/data/presets/forms/elevation.json index 3793abbc0..c4ceed73e 100644 --- a/data/presets/forms/elevation.json +++ b/data/presets/forms/elevation.json @@ -1,4 +1,5 @@ { "key": "ele", - "type": "number" -} \ No newline at end of file + "type": "number", + "universal": true +} diff --git a/data/presets/forms/source.json b/data/presets/forms/source.json new file mode 100644 index 000000000..64db875fc --- /dev/null +++ b/data/presets/forms/source.json @@ -0,0 +1,5 @@ +{ + "key": "source", + "type": "text", + "universal": true +} diff --git a/data/presets/forms/telephone.json b/data/presets/forms/telephone.json new file mode 100644 index 000000000..5ac9b3a94 --- /dev/null +++ b/data/presets/forms/telephone.json @@ -0,0 +1,5 @@ +{ + "key": "phone", + "type": "tel", + "universal": true +} diff --git a/data/presets/forms/website.json b/data/presets/forms/website.json new file mode 100644 index 000000000..205eec6ba --- /dev/null +++ b/data/presets/forms/website.json @@ -0,0 +1,5 @@ +{ + "key": "website", + "type": "url", + "universal": true +} diff --git a/data/presets/forms/wikipedia.json b/data/presets/forms/wikipedia.json new file mode 100644 index 000000000..34ce5248d --- /dev/null +++ b/data/presets/forms/wikipedia.json @@ -0,0 +1,5 @@ +{ + "key": "wikipedia", + "type": "text", + "universal": true +} diff --git a/js/id/presets.js b/js/id/presets.js index 9592e3e60..8f6a43bbc 100644 --- a/js/id/presets.js +++ b/js/id/presets.js @@ -15,6 +15,7 @@ iD.presets = function(context) { all = iD.presets.Collection([iD.presets.Preset(other)]), defaults = { area: all, line: all, point: all, vertex: all }, forms = {}, + universal = [], recent = iD.presets.Collection([]); all.load = function(d) { @@ -22,6 +23,7 @@ iD.presets = function(context) { if (d.forms) { _.forEach(d.forms, function(d, id) { forms[id] = iD.presets.Form(d, id); + if (d.universal) universal.push(forms[id]); }); } @@ -31,6 +33,7 @@ iD.presets = function(context) { }); } + if (d.categories) { d.categories.forEach(function(d) { all.collection.push(iD.presets.Category(d, all)); @@ -50,6 +53,10 @@ iD.presets = function(context) { return all; }; + all.universal = function() { + return universal; + }; + all.defaults = function(entity, n) { var rec = recent.matchGeometry(entity, context.graph()).collection.slice(0, 4), def = _.uniq(rec.concat(defaults[entity.geometry(context.graph())].collection)).slice(0, n - 1); diff --git a/js/id/ui/preset.js b/js/id/ui/preset.js index c9280d1a4..48203b457 100644 --- a/js/id/ui/preset.js +++ b/js/id/ui/preset.js @@ -46,7 +46,7 @@ iD.ui.preset = function(context) { .enter() .append('button') .attr('class', 'preset-add-form') - .attr('title', function(d) { return d.title || d.key; }) + .attr('title', function(d) { return d.label(); }) .on('click', addForm) .append('span') .attr('class', function(d) { return 'icon ' + d.icon; }); @@ -105,6 +105,12 @@ iD.ui.preset = function(context) { } }); + context.presets().universal().forEach(function(p) { + if (haveKey(p.key) || _.any(p.keys, haveKey)) { + draw(formwrap, [p]); + } + }); + event.setTags(tags); return presets; };