From e3e2ea602a410ccff704fec6c74a4871c3eb0d31 Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Thu, 22 May 2014 13:48:04 -0400 Subject: [PATCH] Checkmark fields now support custom string options oneway fields now show "Assumed to be No" or "Assumed to be Yes" instead of "Unknown" #2220 --- data/presets.yaml | 8 ++++++ data/presets/fields.json | 18 +++++++++++-- data/presets/fields/oneway.json | 9 ++++++- data/presets/fields/oneway_yes.json | 9 ++++++- data/presets/presets.json | 2 +- data/presets/presets/highway/motorway.json | 4 +-- dist/locales/en.json | 14 ++++++++-- js/id/ui/preset/check.js | 30 ++++++++++++++-------- 8 files changed, 75 insertions(+), 19 deletions(-) diff --git a/data/presets.yaml b/data/presets.yaml index 5bb6ecda0..af1b0937e 100644 --- a/data/presets.yaml +++ b/data/presets.yaml @@ -240,8 +240,16 @@ en: label: Type oneway: label: One Way + options: + undefined: Assumed to be No + yes: Yes + no: No oneway_yes: label: One Way + options: + undefined: Assumed to be Yes + yes: Yes + no: No opening_hours: label: Hours operator: diff --git a/data/presets/fields.json b/data/presets/fields.json index bbdbc6ac6..96fe0ef41 100644 --- a/data/presets/fields.json +++ b/data/presets/fields.json @@ -570,13 +570,27 @@ "oneway": { "key": "oneway", "type": "check", - "label": "One Way" + "label": "One Way", + "strings": { + "options": { + "undefined": "Assumed to be No", + "yes": "Yes", + "no": "No" + } + } }, "oneway_yes": { "key": "oneway", "type": "check", "default": "yes", - "label": "One Way" + "label": "One Way", + "strings": { + "options": { + "undefined": "Assumed to be Yes", + "yes": "Yes", + "no": "No" + } + } }, "opening_hours": { "key": "opening_hours", diff --git a/data/presets/fields/oneway.json b/data/presets/fields/oneway.json index cdf746e4e..2b9b0fe02 100644 --- a/data/presets/fields/oneway.json +++ b/data/presets/fields/oneway.json @@ -1,5 +1,12 @@ { "key": "oneway", "type": "check", - "label": "One Way" + "label": "One Way", + "strings": { + "options": { + "undefined": "Assumed to be No", + "yes": "Yes", + "no": "No" + } + } } diff --git a/data/presets/fields/oneway_yes.json b/data/presets/fields/oneway_yes.json index b73d5a366..3e212eef1 100644 --- a/data/presets/fields/oneway_yes.json +++ b/data/presets/fields/oneway_yes.json @@ -2,5 +2,12 @@ "key": "oneway", "type": "check", "default": "yes", - "label": "One Way" + "label": "One Way", + "strings": { + "options": { + "undefined": "Assumed to be Yes", + "yes": "Yes", + "no": "No" + } + } } diff --git a/data/presets/presets.json b/data/presets/presets.json index e6665a9d5..b17249d29 100644 --- a/data/presets/presets.json +++ b/data/presets/presets.json @@ -3822,7 +3822,7 @@ "highway/motorway": { "icon": "highway-motorway", "fields": [ - "oneway", + "oneway_yes", "maxspeed", "structure", "access", diff --git a/data/presets/presets/highway/motorway.json b/data/presets/presets/highway/motorway.json index d33aa952a..c05ac6e54 100644 --- a/data/presets/presets/highway/motorway.json +++ b/data/presets/presets/highway/motorway.json @@ -1,7 +1,7 @@ { "icon": "highway-motorway", "fields": [ - "oneway", + "oneway_yes", "maxspeed", "structure", "access", @@ -17,4 +17,4 @@ }, "terms": [], "name": "Motorway" -} \ No newline at end of file +} diff --git a/dist/locales/en.json b/dist/locales/en.json index 04b1b3571..5fd3f8323 100644 --- a/dist/locales/en.json +++ b/dist/locales/en.json @@ -743,10 +743,20 @@ "label": "Type" }, "oneway": { - "label": "One Way" + "label": "One Way", + "options": { + "undefined": "Assumed to be No", + "yes": "Yes", + "no": "No" + } }, "oneway_yes": { - "label": "One Way" + "label": "One Way", + "options": { + "undefined": "Assumed to be Yes", + "yes": "Yes", + "no": "No" + } }, "opening_hours": { "label": "Hours" diff --git a/js/id/ui/preset/check.js b/js/id/ui/preset/check.js index 2badb14fc..010060953 100644 --- a/js/id/ui/preset/check.js +++ b/js/id/ui/preset/check.js @@ -1,13 +1,24 @@ iD.ui.preset.check = iD.ui.preset.defaultcheck = function(field) { var event = d3.dispatch('change'), - values = field.type === 'check' ? - [undefined, 'yes', 'no'] : - [undefined, 'yes'], - value, - box, - text, - label; + options = field.strings && field.strings.options, + values = [], + texts = [], + value, box, text, label; + + if (options) { + for (var k in options) { + values.push(k === 'undefined' ? undefined : k); + texts.push(field.t('check.' + k, { 'default': options[k] })); + } + } else { + values = [undefined, 'yes']; + texts = [t('inspector.unknown'), t('inspector.check.yes')]; + if (field.type === 'check') { + values.push('no'); + texts.push(t('inspector.check.no')); + } + } var check = function(selection) { selection.classed('checkselect', 'true'); @@ -24,7 +35,7 @@ iD.ui.preset.defaultcheck = function(field) { .attr('id', 'preset-input-' + field.id); enter.append('span') - .text(t('inspector.unknown')) + .text(texts[0]) .attr('class', 'value'); box = label.select('input') @@ -42,8 +53,7 @@ iD.ui.preset.defaultcheck = function(field) { value = tags[field.key]; box.property('indeterminate', field.type === 'check' && !value); box.property('checked', value === 'yes'); - text.text(value ? t('inspector.check.' + value, {default: value}) : - field.type === 'check' ? t('inspector.unknown') : t('inspector.check.no')); + text.text(texts[values.indexOf(value)]); label.classed('set', !!value); };