From cb1972d76fc1eb2501b8d68530f665cbb9322db9 Mon Sep 17 00:00:00 2001 From: John Firebaugh Date: Wed, 14 May 2014 17:22:24 -0700 Subject: [PATCH] Make field reference more flexible Will need to support {"rtype": "restriction"} for turn restriction field. --- data/presets/fields.json | 8 ++++++-- data/presets/fields/access.json | 2 +- data/presets/fields/address.json | 2 +- data/presets/schema/field.json | 32 +++++++++++++++++++++++++++++--- js/id/ui/preset.js | 3 +-- 5 files changed, 38 insertions(+), 9 deletions(-) diff --git a/data/presets/fields.json b/data/presets/fields.json index bbd21905b..65545df54 100644 --- a/data/presets/fields.json +++ b/data/presets/fields.json @@ -7,7 +7,9 @@ "bicycle", "horse" ], - "referenceKey": "access", + "reference": { + "key": "access" + }, "type": "access", "label": "Access", "placeholder": "Unknown", @@ -66,7 +68,9 @@ "addr:city", "addr:postcode" ], - "referenceKey": "addr", + "reference": { + "key": "addr" + }, "icon": "address", "universal": true, "label": "Address", diff --git a/data/presets/fields/access.json b/data/presets/fields/access.json index 2994b957d..2c2eb60a5 100644 --- a/data/presets/fields/access.json +++ b/data/presets/fields/access.json @@ -1,6 +1,6 @@ { "keys": ["access", "foot", "motor_vehicle", "bicycle", "horse"], - "referenceKey": "access", + "reference": {"key": "access"}, "type": "access", "label": "Access", "placeholder": "Unknown", diff --git a/data/presets/fields/address.json b/data/presets/fields/address.json index fd0188fe4..d9baf20af 100644 --- a/data/presets/fields/address.json +++ b/data/presets/fields/address.json @@ -6,7 +6,7 @@ "addr:city", "addr:postcode" ], - "referenceKey": "addr", + "reference": {"key": "addr"}, "icon": "address", "universal": true, "label": "Address", diff --git a/data/presets/schema/field.json b/data/presets/schema/field.json index b07430635..12a45ee5f 100644 --- a/data/presets/schema/field.json +++ b/data/presets/schema/field.json @@ -14,9 +14,35 @@ "type": "string" } }, - "referenceKey": { - "description": "Tag key which should be used to get taginfo documentation for (to be used when a field manages multiple tags)", - "type": "string" + "reference": { + "description": "Taginfo documentation parameters (to be used when a field manages multiple tags)", + "type": [ + { + "type": "object", + "properties": { + "key": { + "description": "For documentation of a key", + "type": "string", + "required": true + }, + "value": { + "description": "For documentation of a tag (key and value)", + "type": "string" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "rtype": { + "description": "For documentation of a relation type", + "type": "string" + } + }, + "additionalProperties": false + } + ] }, "type": { "description": "Type of field", diff --git a/js/id/ui/preset.js b/js/id/ui/preset.js index 80eb1fa6a..99ae2ff54 100644 --- a/js/id/ui/preset.js +++ b/js/id/ui/preset.js @@ -134,8 +134,7 @@ iD.ui.preset = function(context) { return field.present(); }) .each(function(field) { - var key = field.referenceKey || field.key, - reference = iD.ui.TagReference({key: key}); + var reference = iD.ui.TagReference(field.reference || {key: field.key}); if (state === 'hover') { reference.showing(false);