From 19bcd711ece13bb0e5644572c91b0efd9db7a6c2 Mon Sep 17 00:00:00 2001 From: John Firebaugh Date: Mon, 15 Apr 2013 15:39:43 -0700 Subject: [PATCH] Split categories into separate files; translate --- build.js | 15 ++++ data/locales.js | 14 ++++ data/locales/en.js | 14 ++++ data/presets.yaml | 9 +++ data/presets/categories.json | 115 +++++++++++++++-------------- data/presets/categories/path.json | 12 +++ data/presets/categories/rail.json | 13 ++++ data/presets/categories/road.json | 22 ++++++ data/presets/categories/water.json | 11 +++ data/presets/defaults.json | 8 +- js/id/presets.js | 5 +- js/id/presets/category.js | 6 +- 12 files changed, 180 insertions(+), 64 deletions(-) create mode 100644 data/presets/categories/path.json create mode 100644 data/presets/categories/rail.json create mode 100644 data/presets/categories/road.json create mode 100644 data/presets/categories/water.json diff --git a/build.js b/build.js index 664d54fbd..3dd1ef034 100644 --- a/build.js +++ b/build.js @@ -43,10 +43,24 @@ function validate(file, instance, schema) { } var translations = { + categories: {}, fields: {}, presets: {} }; +function generateCategories() { + var categories = {}; + glob.sync(__dirname + '/data/presets/categories/*.json').forEach(function(file) { + var field = read(file), + id = 'category-' + path.basename(file, '.json'); + + translations.categories[id] = {name: field.name}; + + categories[id] = field; + }); + fs.writeFileSync('data/presets/categories.json', stringify(categories)); +} + function generateFields() { var fields = {}; glob.sync(__dirname + '/data/presets/fields/*.json').forEach(function(file) { @@ -86,6 +100,7 @@ function generatePresets() { fs.writeFileSync('data/presets.yaml', YAML.dump({en: {presets: translations}})); } +generateCategories(); generateFields(); generatePresets(); diff --git a/data/locales.js b/data/locales.js index 019f49db4..981890ee3 100644 --- a/data/locales.js +++ b/data/locales.js @@ -4384,6 +4384,20 @@ locale.en = { } }, "presets": { + "categories": { + "category-path": { + "name": "Path" + }, + "category-rail": { + "name": "Rail" + }, + "category-road": { + "name": "Road" + }, + "category-water": { + "name": "Water" + } + }, "fields": { "access": { "label": "Access", diff --git a/data/locales/en.js b/data/locales/en.js index 83a977508..c0012aad4 100644 --- a/data/locales/en.js +++ b/data/locales/en.js @@ -309,6 +309,20 @@ locale.en = { } }, "presets": { + "categories": { + "category-path": { + "name": "Path" + }, + "category-rail": { + "name": "Rail" + }, + "category-road": { + "name": "Road" + }, + "category-water": { + "name": "Water" + } + }, "fields": { "access": { "label": "Access", diff --git a/data/presets.yaml b/data/presets.yaml index 4ad982fc2..ae0d578d6 100644 --- a/data/presets.yaml +++ b/data/presets.yaml @@ -1,5 +1,14 @@ en: presets: + categories: + "category-path": + name: Path + "category-rail": + name: Rail + "category-road": + name: Road + "category-water": + name: Water fields: access: label: Access diff --git a/data/presets/categories.json b/data/presets/categories.json index 99268b8db..cd3282a99 100644 --- a/data/presets/categories.json +++ b/data/presets/categories.json @@ -1,55 +1,60 @@ -[{ - "geometry": "line", - "id": "Road", - "icon": "category-roads", - "members": [ - "highway/residential", - "highway/motorway", - "highway/trunk", - "highway/primary", - "highway/secondary", - "highway/tertiary", - "highway/service", - "highway/motorway_link", - "highway/trunk_link", - "highway/primary_link", - "highway/secondary_link", - "highway/tertiary_link", - "highway/unclassified", - "highway/track", - "highway/road" - ] -}, { - "geometry": "line", - "id": "Rail", - "icon": "category-rail", - "members": [ - "railway/rail", - "railway/subway", - "railway/tram", - "railway/monorail", - "railway/disused", - "railway/abandoned" - ] -}, { - "geometry": "line", - "id": "Path", - "icon": "category-path", - "members": [ - "highway/footway", - "highway/cycleway", - "highway/bridleway", - "highway/path", - "highway/steps" - ] -}, { - "geometry": "line", - "id": "Water", - "icon": "category-water", - "members": [ - "waterway/river", - "waterway/stream", - "waterway/canal", - "waterway/ditch" - ] -}] +{ + "category-path": { + "geometry": "line", + "name": "Path", + "icon": "category-path", + "members": [ + "highway/footway", + "highway/cycleway", + "highway/bridleway", + "highway/path", + "highway/steps" + ] + }, + "category-rail": { + "geometry": "line", + "name": "Rail", + "icon": "category-rail", + "members": [ + "railway/rail", + "railway/subway", + "railway/tram", + "railway/monorail", + "railway/disused", + "railway/abandoned" + ] + }, + "category-road": { + "geometry": "line", + "name": "Road", + "icon": "category-roads", + "members": [ + "highway/residential", + "highway/motorway", + "highway/trunk", + "highway/primary", + "highway/secondary", + "highway/tertiary", + "highway/service", + "highway/motorway_link", + "highway/trunk_link", + "highway/primary_link", + "highway/secondary_link", + "highway/tertiary_link", + "highway/unclassified", + "highway/track", + "highway/road" + ] + }, + "category-water": { + "geometry": "line", + "name": "Water", + "icon": "category-water", + "members": [ + "waterway/river", + "waterway/stream", + "waterway/canal", + "waterway/ditch" + ] + } +} \ No newline at end of file diff --git a/data/presets/categories/path.json b/data/presets/categories/path.json new file mode 100644 index 000000000..b8c07c390 --- /dev/null +++ b/data/presets/categories/path.json @@ -0,0 +1,12 @@ +{ + "geometry": "line", + "name": "Path", + "icon": "category-path", + "members": [ + "highway/footway", + "highway/cycleway", + "highway/bridleway", + "highway/path", + "highway/steps" + ] +} \ No newline at end of file diff --git a/data/presets/categories/rail.json b/data/presets/categories/rail.json new file mode 100644 index 000000000..a27a44b89 --- /dev/null +++ b/data/presets/categories/rail.json @@ -0,0 +1,13 @@ +{ + "geometry": "line", + "name": "Rail", + "icon": "category-rail", + "members": [ + "railway/rail", + "railway/subway", + "railway/tram", + "railway/monorail", + "railway/disused", + "railway/abandoned" + ] +} \ No newline at end of file diff --git a/data/presets/categories/road.json b/data/presets/categories/road.json new file mode 100644 index 000000000..5021f7e3a --- /dev/null +++ b/data/presets/categories/road.json @@ -0,0 +1,22 @@ +{ + "geometry": "line", + "name": "Road", + "icon": "category-roads", + "members": [ + "highway/residential", + "highway/motorway", + "highway/trunk", + "highway/primary", + "highway/secondary", + "highway/tertiary", + "highway/service", + "highway/motorway_link", + "highway/trunk_link", + "highway/primary_link", + "highway/secondary_link", + "highway/tertiary_link", + "highway/unclassified", + "highway/track", + "highway/road" + ] +} \ No newline at end of file diff --git a/data/presets/categories/water.json b/data/presets/categories/water.json new file mode 100644 index 000000000..f1968b5fd --- /dev/null +++ b/data/presets/categories/water.json @@ -0,0 +1,11 @@ +{ + "geometry": "line", + "name": "Water", + "icon": "category-water", + "members": [ + "waterway/river", + "waterway/stream", + "waterway/canal", + "waterway/ditch" + ] +} \ No newline at end of file diff --git a/data/presets/defaults.json b/data/presets/defaults.json index 974b973c8..608be4cd7 100644 --- a/data/presets/defaults.json +++ b/data/presets/defaults.json @@ -11,10 +11,10 @@ "other_area" ], "line": [ - "Road", - "Rail", - "Path", - "Water", + "category-road", + "category-rail", + "category-path", + "category-water", "power/line", "other" ], diff --git a/js/id/presets.js b/js/id/presets.js index b0ad04358..588976ed4 100644 --- a/js/id/presets.js +++ b/js/id/presets.js @@ -26,10 +26,9 @@ iD.presets = function(context) { }); } - if (d.categories) { - d.categories.forEach(function(d) { - all.collection.push(iD.presets.Category(d, all)); + _.forEach(d.categories, function(d, id) { + all.collection.push(iD.presets.Category(id, d, all)); }); } diff --git a/js/id/presets/category.js b/js/id/presets/category.js index 18891453f..c3dbfa159 100644 --- a/js/id/presets/category.js +++ b/js/id/presets/category.js @@ -1,6 +1,8 @@ -iD.presets.Category = function(category, all) { +iD.presets.Category = function(id, category, all) { category = _.clone(category); + category.id = id; + category.members = iD.presets.Collection(category.members.map(function(id) { return all.item(id); })); @@ -12,7 +14,7 @@ iD.presets.Category = function(category, all) { category.matchTags = function() { return false; }; category.name = function() { - return category.id; + return t('presets.categories.' + id + '.name', {'default': id}); }; category.terms = function() {