Make several data external instead of bundled:

Also dist/data/* contains minified files now

These are now external and will fetch as needed:
-export { dataAddressFormats } from './address-formats.json';
-export { dataDeprecated } from './deprecated.json';
-export { dataDiscarded } from './discarded.json';
-export { dataLanguages } from './languages.json';
-export { dataPhoneFormats } from './phone-formats.json';
-export { dataShortcuts } from './shortcuts.json';
-export { dataTerritoryLanguages } from './territory-languages.json';
This commit is contained in:
Bryan Housel
2020-01-28 22:21:31 -05:00
parent 3ac800c619
commit 567eeac587
40 changed files with 2815 additions and 3193 deletions
+1
View File
@@ -12,6 +12,7 @@ transifex.auth
/dist/*.js
/dist/*.css
/dist/*.map
/dist/data/
/dist/img/*.svg
/dist/mapillary-js/
/dist/pannellum-streetside/
-184
View File
@@ -1,184 +0,0 @@
{
"dataAddressFormats": [
{
"format": [
["housenumber", "street"],
["city", "postcode"]
]
},
{
"countryCodes": ["au"],
"format": [
["unit","housenumber", "street"],
["suburb", "state", "postcode"]
]
},
{
"countryCodes": ["gb"],
"format": [
["housename"],
["housenumber", "street"],
["city", "postcode"]
]
},
{
"countryCodes": ["ie"],
"format": [
["housename"],
["housenumber", "street"],
["city"],
["postcode"]
]
},
{
"countryCodes": ["at", "ch", "de", "si", "pl"],
"format": [
["street", "housenumber"],
["postcode", "city"]
]
},
{
"countryCodes": [
"ad", "ba", "be", "cz", "dk", "es", "fi", "gr", "hr", "is",
"it", "li", "nl", "no", "pt", "se", "sk", "sm", "va"
],
"format": [
["street", "housenumber", "unit"],
["postcode", "city"]
]
},
{
"countryCodes": ["fr", "lu", "mo"],
"format": [
["housenumber", "street"],
["postcode", "city"]
]
},
{
"countryCodes": ["br"],
"format": [
["street"],
["housenumber", "suburb"],
["city", "postcode"]
]
},
{
"countryCodes": ["vn"],
"format": [
["housenumber", "street"],
["subdistrict"],
["district"],
["city"],
["province", "postcode"]
]
},
{
"countryCodes": ["ca"],
"format": [
["housenumber", "street", "unit"],
["city", "province", "postcode"]
]
},
{
"countryCodes": ["us"],
"format": [
["housenumber", "street", "unit"],
["city", "state", "postcode"]
]
},
{
"countryCodes": ["tw"],
"format": [
["postcode", "city", "district"],
["place", "street"],
["housenumber", "floor", "unit"]
]
},
{
"countryCodes": ["jp"],
"format": [
["postcode", "province", "county"],
["city", "suburb"],
["quarter", "neighbourhood"],
["block_number", "housenumber"]
],
"dropdowns": [
"postcode", "province", "county", "city", "suburb",
"quarter", "neighbourhood", "block_number"
],
"widths": {
"postcode": 0.3,
"province": 0.35,
"county": 0.35,
"city": 0.65,
"suburb": 0.35,
"quarter": 0.5,
"neighbourhood": 0.5,
"block_number": 0.5,
"housenumber": 0.5
}
},
{
"countryCodes": ["tr"],
"format": [
["neighbourhood"],
["street", "housenumber"],
["postcode", "district", "city"]
]
},
{
"countryCodes": ["ua"],
"format": [
["housenumber", "postcode"],
["street"]
]
},
{
"countryCodes": ["cn"],
"format": [
["postcode", "province"],
["city", "district"],
["street", "housenumber"]
],
"widths": {
"postcode": 0.3,
"province": 0.7,
"city": 0.5,
"district": 0.5,
"street": 0.7,
"housenumber": 0.3
}
},
{
"countryCodes": ["bo"],
"format": [
["street", "housenumber"],
["neighbourhood", "city"]
],
"widths": {
"street": 0.7,
"housenumber": 0.3,
"neighbourhood": 0.5,
"city": 0.5
}
},
{
"countryCodes": ["pe"],
"format": [
["street", "housenumber"],
["neighbourhood"],
["city", "state", "postcode"]
],
"dropdowns": [
"street", "neighbourhood", "city", "state", "postcode"
],
"widths": {
"street": 0.7,
"housenumber": 0.3,
"city": 0.4,
"state": 0.4,
"postcode": 0.2
}
}
]
}
+182
View File
@@ -0,0 +1,182 @@
[
{
"format": [
["housenumber", "street"],
["city", "postcode"]
]
},
{
"countryCodes": ["au"],
"format": [
["unit","housenumber", "street"],
["suburb", "state", "postcode"]
]
},
{
"countryCodes": ["gb"],
"format": [
["housename"],
["housenumber", "street"],
["city", "postcode"]
]
},
{
"countryCodes": ["ie"],
"format": [
["housename"],
["housenumber", "street"],
["city"],
["postcode"]
]
},
{
"countryCodes": ["at", "ch", "de", "si", "pl"],
"format": [
["street", "housenumber"],
["postcode", "city"]
]
},
{
"countryCodes": [
"ad", "ba", "be", "cz", "dk", "es", "fi", "gr", "hr", "is",
"it", "li", "nl", "no", "pt", "se", "sk", "sm", "va"
],
"format": [
["street", "housenumber", "unit"],
["postcode", "city"]
]
},
{
"countryCodes": ["fr", "lu", "mo"],
"format": [
["housenumber", "street"],
["postcode", "city"]
]
},
{
"countryCodes": ["br"],
"format": [
["street"],
["housenumber", "suburb"],
["city", "postcode"]
]
},
{
"countryCodes": ["vn"],
"format": [
["housenumber", "street"],
["subdistrict"],
["district"],
["city"],
["province", "postcode"]
]
},
{
"countryCodes": ["ca"],
"format": [
["housenumber", "street", "unit"],
["city", "province", "postcode"]
]
},
{
"countryCodes": ["us"],
"format": [
["housenumber", "street", "unit"],
["city", "state", "postcode"]
]
},
{
"countryCodes": ["tw"],
"format": [
["postcode", "city", "district"],
["place", "street"],
["housenumber", "floor", "unit"]
]
},
{
"countryCodes": ["jp"],
"format": [
["postcode", "province", "county"],
["city", "suburb"],
["quarter", "neighbourhood"],
["block_number", "housenumber"]
],
"dropdowns": [
"postcode", "province", "county", "city", "suburb",
"quarter", "neighbourhood", "block_number"
],
"widths": {
"postcode": 0.3,
"province": 0.35,
"county": 0.35,
"city": 0.65,
"suburb": 0.35,
"quarter": 0.5,
"neighbourhood": 0.5,
"block_number": 0.5,
"housenumber": 0.5
}
},
{
"countryCodes": ["tr"],
"format": [
["neighbourhood"],
["street", "housenumber"],
["postcode", "district", "city"]
]
},
{
"countryCodes": ["ua"],
"format": [
["housenumber", "postcode"],
["street"]
]
},
{
"countryCodes": ["cn"],
"format": [
["postcode", "province"],
["city", "district"],
["street", "housenumber"]
],
"widths": {
"postcode": 0.3,
"province": 0.7,
"city": 0.5,
"district": 0.5,
"street": 0.7,
"housenumber": 0.3
}
},
{
"countryCodes": ["bo"],
"format": [
["street", "housenumber"],
["neighbourhood", "city"]
],
"widths": {
"street": 0.7,
"housenumber": 0.3,
"neighbourhood": 0.5,
"city": 0.5
}
},
{
"countryCodes": ["pe"],
"format": [
["street", "housenumber"],
["neighbourhood"],
["city", "state", "postcode"]
],
"dropdowns": [
"street", "neighbourhood", "city", "state", "postcode"
],
"widths": {
"street": 0.7,
"housenumber": 0.3,
"city": 0.4,
"state": 0.4,
"postcode": 0.2
}
}
]
+1366 -1368
View File
File diff suppressed because it is too large Load Diff
+46 -48
View File
@@ -1,58 +1,56 @@
{
"dataDiscarded": {
"created_by": true,
"created_by": true,
"odbl": true,
"odbl:note": true,
"odbl": true,
"odbl:note": true,
"tiger:upload_uuid": true,
"tiger:tlid": true,
"tiger:source": true,
"tiger:separated": true,
"tiger:upload_uuid": true,
"tiger:tlid": true,
"tiger:source": true,
"tiger:separated": true,
"geobase:datasetName": true,
"geobase:uuid": true,
"geobase:datasetName": true,
"geobase:uuid": true,
"osmarender:nameDirection": true,
"osmarender:renderName": true,
"osmarender:renderRef": true,
"osmarender:rendernames": true,
"osmarender:nameDirection": true,
"osmarender:renderName": true,
"osmarender:renderRef": true,
"osmarender:rendernames": true,
"sub_sea:type": true,
"sub_sea:type": true,
"KSJ2:ADS": true,
"KSJ2:ARE": true,
"KSJ2:AdminArea": true,
"KSJ2:COP_label": true,
"KSJ2:DFD": true,
"KSJ2:INT": true,
"KSJ2:INT_label": true,
"KSJ2:LOC": true,
"KSJ2:LPN": true,
"KSJ2:OPC": true,
"KSJ2:PubFacAdmin": true,
"KSJ2:RAC": true,
"KSJ2:RAC_label": true,
"KSJ2:RIC": true,
"KSJ2:RIN": true,
"KSJ2:WSC": true,
"KSJ2:coordinate": true,
"KSJ2:curve_id": true,
"KSJ2:curve_type": true,
"KSJ2:filename": true,
"KSJ2:lake_id": true,
"KSJ2:lat": true,
"KSJ2:long": true,
"KSJ2:river_id": true,
"KSJ2:ADS": true,
"KSJ2:ARE": true,
"KSJ2:AdminArea": true,
"KSJ2:COP_label": true,
"KSJ2:DFD": true,
"KSJ2:INT": true,
"KSJ2:INT_label": true,
"KSJ2:LOC": true,
"KSJ2:LPN": true,
"KSJ2:OPC": true,
"KSJ2:PubFacAdmin": true,
"KSJ2:RAC": true,
"KSJ2:RAC_label": true,
"KSJ2:RIC": true,
"KSJ2:RIN": true,
"KSJ2:WSC": true,
"KSJ2:coordinate": true,
"KSJ2:curve_id": true,
"KSJ2:curve_type": true,
"KSJ2:filename": true,
"KSJ2:lake_id": true,
"KSJ2:lat": true,
"KSJ2:long": true,
"KSJ2:river_id": true,
"SK53_bulk:load": true,
"SK53_bulk:load": true,
"yh:LINE_NAME": true,
"yh:LINE_NUM": true,
"yh:STRUCTURE": true,
"yh:TOTYUMONO": true,
"yh:TYPE": true,
"yh:WIDTH": true,
"yh:WIDTH_RANK": true
}
"yh:LINE_NAME": true,
"yh:LINE_NUM": true,
"yh:STRUCTURE": true,
"yh:TOTYUMONO": true,
"yh:TYPE": true,
"yh:WIDTH": true,
"yh:WIDTH_RANK": true
}
-8
View File
@@ -1,14 +1,6 @@
export { wikipedia as dataWikipedia } from 'wmf-sitematrix';
export { dataAddressFormats } from './address-formats.json';
export { dataDeprecated } from './deprecated.json';
export { dataDiscarded } from './discarded.json';
export { dataLanguages } from './languages.json';
export { dataLocales } from './locales.json';
export { dataPhoneFormats } from './phone-formats.json';
export { dataShortcuts } from './shortcuts.json';
export { dataTerritoryLanguages } from './territory-languages.json';
export { en as dataEn } from '../dist/locales/en.json';
import {
+233 -727
View File
@@ -1,729 +1,235 @@
{
"dataLanguages": {
"af": {
"nativeName": "Afrikaans"
},
"agq": {
"nativeName": "Aghem"
},
"ak": {
"nativeName": "Akan"
},
"am": {
"nativeName": "አማርኛ"
},
"ar": {
"nativeName": "العربية"
},
"as": {
"nativeName": "অসমীয়া"
},
"asa": {
"nativeName": "Kipare"
},
"ast": {
"nativeName": "asturianu"
},
"az": {
"nativeName": "azərbaycan"
},
"az-Cyrl": {
"base": "az",
"script": "Cyrl"
},
"az-Latn": {
"base": "az",
"script": "Latn"
},
"bas": {
"nativeName": "Ɓàsàa"
},
"be": {
"nativeName": "беларуская"
},
"bem": {
"nativeName": "Ichibemba"
},
"bez": {
"nativeName": "Hibena"
},
"bg": {
"nativeName": "български"
},
"bm": {
"nativeName": "bamanakan"
},
"bn": {
"nativeName": "বাংলা"
},
"bo": {
"nativeName": "བོད་སྐད་"
},
"br": {
"nativeName": "brezhoneg"
},
"brx": {
"nativeName": "बड़ो"
},
"bs": {
"nativeName": "bosanski"
},
"bs-Cyrl": {
"base": "bs",
"script": "Cyrl"
},
"bs-Latn": {
"base": "bs",
"script": "Latn"
},
"ca": {
"nativeName": "català"
},
"ccp": {
"nativeName": "𑄌𑄋𑄴𑄟𑄳𑄦"
},
"ce": {
"nativeName": "нохчийн"
},
"ceb": {
"nativeName": "Binisaya"
},
"cgg": {
"nativeName": "Rukiga"
},
"chr": {
"nativeName": "ᏣᎳᎩ"
},
"ckb": {
"nativeName": "کوردیی ناوەندی"
},
"cs": {
"nativeName": "čeština"
},
"cu": {
"nativeName": "cu"
},
"cy": {
"nativeName": "Cymraeg"
},
"da": {
"nativeName": "dansk"
},
"dav": {
"nativeName": "Kitaita"
},
"de": {
"nativeName": "Deutsch"
},
"dje": {
"nativeName": "Zarmaciine"
},
"dsb": {
"nativeName": "dolnoserbšćina"
},
"dua": {
"nativeName": "duálá"
},
"dyo": {
"nativeName": "joola"
},
"dz": {
"nativeName": "རྫོང་ཁ"
},
"ebu": {
"nativeName": "Kĩembu"
},
"ee": {
"nativeName": "Eʋegbe"
},
"el": {
"nativeName": "Ελληνικά"
},
"en": {
"nativeName": "English"
},
"eo": {
"nativeName": "esperanto"
},
"es": {
"nativeName": "español"
},
"et": {
"nativeName": "eesti"
},
"eu": {
"nativeName": "euskara"
},
"ewo": {
"nativeName": "ewondo"
},
"fa": {
"nativeName": "فارسی"
},
"ff": {
"nativeName": "Pulaar"
},
"ff-Latn": {
"base": "ff",
"script": "Latn"
},
"fi": {
"nativeName": "suomi"
},
"fil": {
"nativeName": "Filipino"
},
"fo": {
"nativeName": "føroyskt"
},
"fr": {
"nativeName": "français"
},
"fur": {
"nativeName": "furlan"
},
"fy": {
"nativeName": "Frysk"
},
"ga": {
"nativeName": "Gaeilge"
},
"gd": {
"nativeName": "Gàidhlig"
},
"gl": {
"nativeName": "galego"
},
"gsw": {
"nativeName": "Schwiizertüütsch"
},
"gu": {
"nativeName": "ગુજરાતી"
},
"guz": {
"nativeName": "Ekegusii"
},
"gv": {
"nativeName": "Gaelg"
},
"ha": {
"nativeName": "Hausa"
},
"haw": {
"nativeName": "ʻŌlelo Hawaiʻi"
},
"he": {
"nativeName": "עברית"
},
"hi": {
"nativeName": "हिन्दी"
},
"hr": {
"nativeName": "hrvatski"
},
"hsb": {
"nativeName": "hornjoserbšćina"
},
"hu": {
"nativeName": "magyar"
},
"hy": {
"nativeName": "հայերեն"
},
"ia": {
"nativeName": "interlingua"
},
"id": {
"nativeName": "Indonesia"
},
"ig": {
"nativeName": "Asụsụ Igbo"
},
"ii": {
"nativeName": "ꆈꌠꉙ"
},
"is": {
"nativeName": "íslenska"
},
"it": {
"nativeName": "italiano"
},
"ja": {
"nativeName": "日本語"
},
"ja-Hira": {
"base": "ja",
"script": "Hira"
},
"ja-Latn": {
"base": "ja",
"script": "Latn"
},
"jgo": {
"nativeName": "Ndaa"
},
"jmc": {
"nativeName": "Kimachame"
},
"jv": {
"nativeName": "Jawa"
},
"ka": {
"nativeName": "ქართული"
},
"kab": {
"nativeName": "Taqbaylit"
},
"kam": {
"nativeName": "Kikamba"
},
"kde": {
"nativeName": "Chimakonde"
},
"kea": {
"nativeName": "kabuverdianu"
},
"khq": {
"nativeName": "Koyra ciini"
},
"ki": {
"nativeName": "Gikuyu"
},
"kk": {
"nativeName": "қазақ тілі"
},
"kkj": {
"nativeName": "kakɔ"
},
"kl": {
"nativeName": "kalaallisut"
},
"kln": {
"nativeName": "Kalenjin"
},
"km": {
"nativeName": "ខ្មែរ"
},
"kn": {
"nativeName": "ಕನ್ನಡ"
},
"ko": {
"nativeName": "한국어"
},
"ko-Latn": {
"base": "ko",
"script": "Latn"
},
"kok": {
"nativeName": "कोंकणी"
},
"ks": {
"nativeName": "کٲشُر"
},
"ksb": {
"nativeName": "Kishambaa"
},
"ksf": {
"nativeName": "rikpa"
},
"ksh": {
"nativeName": "Kölsch"
},
"ku": {
"nativeName": "kurdî"
},
"kw": {
"nativeName": "kernewek"
},
"ky": {
"nativeName": "кыргызча"
},
"lag": {
"nativeName": "Kɨlaangi"
},
"lb": {
"nativeName": "Lëtzebuergesch"
},
"lg": {
"nativeName": "Luganda"
},
"lkt": {
"nativeName": "Lakȟólʼiyapi"
},
"ln": {
"nativeName": "lingála"
},
"lo": {
"nativeName": "ລາວ"
},
"lrc": {
"nativeName": "لۊری شومالی"
},
"lt": {
"nativeName": "lietuvių"
},
"lu": {
"nativeName": "Tshiluba"
},
"luo": {
"nativeName": "Dholuo"
},
"luy": {
"nativeName": "Luluhia"
},
"lv": {
"nativeName": "latviešu"
},
"mas": {
"nativeName": "Maa"
},
"mer": {
"nativeName": "Kĩmĩrũ"
},
"mfe": {
"nativeName": "kreol morisien"
},
"mg": {
"nativeName": "Malagasy"
},
"mgh": {
"nativeName": "Makua"
},
"mgo": {
"nativeName": "metaʼ"
},
"mi": {
"nativeName": "Māori"
},
"mk": {
"nativeName": "македонски"
},
"ml": {
"nativeName": "മലയാളം"
},
"mn": {
"nativeName": "монгол"
},
"mr": {
"nativeName": "मराठी"
},
"ms": {
"nativeName": "Melayu"
},
"mt": {
"nativeName": "Malti"
},
"mua": {
"nativeName": "MUNDAŊ"
},
"my": {
"nativeName": "မြန်မာ"
},
"mzn": {
"nativeName": "مازرونی"
},
"naq": {
"nativeName": "Khoekhoegowab"
},
"nb": {
"nativeName": "norsk bokmål"
},
"nd": {
"nativeName": "isiNdebele"
},
"nds": {
"nativeName": "nds"
},
"ne": {
"nativeName": "नेपाली"
},
"nl": {
"nativeName": "Nederlands"
},
"nmg": {
"nativeName": "nmg"
},
"nn": {
"nativeName": "nynorsk"
},
"nnh": {
"nativeName": "Shwóŋò ngiembɔɔn"
},
"nus": {
"nativeName": "Thok Nath"
},
"nyn": {
"nativeName": "Runyankore"
},
"oc": {
"nativeName": "Occitan"
},
"om": {
"nativeName": "Oromoo"
},
"or": {
"nativeName": "ଓଡ଼ିଆ"
},
"os": {
"nativeName": "ирон"
},
"pa": {
"nativeName": "ਪੰਜਾਬੀ"
},
"pa-Arab": {
"base": "pa",
"script": "Arab"
},
"pa-Guru": {
"base": "pa",
"script": "Guru"
},
"pl": {
"nativeName": "polski"
},
"prg": {
"nativeName": "prūsiskan"
},
"ps": {
"nativeName": "پښتو"
},
"pt": {
"nativeName": "português"
},
"qu": {
"nativeName": "Runasimi"
},
"rm": {
"nativeName": "rumantsch"
},
"rn": {
"nativeName": "Ikirundi"
},
"ro": {
"nativeName": "română"
},
"rof": {
"nativeName": "Kihorombo"
},
"root": {
"nativeName": "root"
},
"ru": {
"nativeName": "русский"
},
"rw": {
"nativeName": "Kinyarwanda"
},
"rwk": {
"nativeName": "Kiruwa"
},
"sah": {
"nativeName": "саха тыла"
},
"saq": {
"nativeName": "Kisampur"
},
"sbp": {
"nativeName": "Ishisangu"
},
"sd": {
"nativeName": "سنڌي"
},
"se": {
"nativeName": "davvisámegiella"
},
"seh": {
"nativeName": "sena"
},
"ses": {
"nativeName": "Koyraboro senni"
},
"sg": {
"nativeName": "Sängö"
},
"shi": {
"nativeName": "ⵜⴰⵛⵍⵃⵉⵜ"
},
"shi-Latn": {
"base": "shi",
"script": "Latn"
},
"shi-Tfng": {
"base": "shi",
"script": "Tfng"
},
"si": {
"nativeName": "සිංහල"
},
"sk": {
"nativeName": "slovenčina"
},
"sl": {
"nativeName": "slovenščina"
},
"smn": {
"nativeName": "anarâškielâ"
},
"sn": {
"nativeName": "chiShona"
},
"so": {
"nativeName": "Soomaali"
},
"sq": {
"nativeName": "shqip"
},
"sr": {
"nativeName": "српски"
},
"sr-Cyrl": {
"base": "sr",
"script": "Cyrl"
},
"sr-Latn": {
"base": "sr",
"script": "Latn"
},
"sv": {
"nativeName": "svenska"
},
"sw": {
"nativeName": "Kiswahili"
},
"ta": {
"nativeName": "தமிழ்"
},
"te": {
"nativeName": "తెలుగు"
},
"teo": {
"nativeName": "Kiteso"
},
"tg": {
"nativeName": "тоҷикӣ"
},
"th": {
"nativeName": "ไทย"
},
"ti": {
"nativeName": "ትግርኛ"
},
"tk": {
"nativeName": "türkmen dili"
},
"to": {
"nativeName": "lea fakatonga"
},
"tr": {
"nativeName": "Türkçe"
},
"tt": {
"nativeName": "татар"
},
"twq": {
"nativeName": "Tasawaq senni"
},
"tzm": {
"nativeName": "Tamaziɣt n laṭlaṣ"
},
"ug": {
"nativeName": "ئۇيغۇرچە"
},
"uk": {
"nativeName": "українська"
},
"ur": {
"nativeName": "اردو"
},
"uz": {
"nativeName": "ozbek"
},
"uz-Arab": {
"base": "uz",
"script": "Arab"
},
"uz-Cyrl": {
"base": "uz",
"script": "Cyrl"
},
"uz-Latn": {
"base": "uz",
"script": "Latn"
},
"vai": {
"nativeName": "ꕙꔤ"
},
"vai-Latn": {
"base": "vai",
"script": "Latn"
},
"vai-Vaii": {
"base": "vai",
"script": "Vaii"
},
"vi": {
"nativeName": "Tiếng Việt"
},
"vo": {
"nativeName": "vo"
},
"vun": {
"nativeName": "Kyivunjo"
},
"wae": {
"nativeName": "Walser"
},
"wo": {
"nativeName": "Wolof"
},
"xh": {
"nativeName": "isiXhosa"
},
"xog": {
"nativeName": "Olusoga"
},
"yav": {
"nativeName": "nuasue"
},
"yi": {
"nativeName": "ייִדיש"
},
"yo": {
"nativeName": "Èdè Yorùbá"
},
"yue": {
"nativeName": "粵語"
},
"yue-Hans": {
"base": "yue",
"script": "Hans"
},
"yue-Hant": {
"base": "yue",
"script": "Hant"
},
"zgh": {
"nativeName": "ⵜⴰⵎⴰⵣⵉⵖⵜ"
},
"zh": {
"nativeName": "中文"
},
"zh-Hans": {
"base": "zh",
"script": "Hans",
"nativeName": "简体中文"
},
"zh-Hant": {
"base": "zh",
"script": "Hant",
"nativeName": "繁體中文"
},
"zh_pinyin": {
"base": "zh",
"script": "Latn"
},
"zu": {
"nativeName": "isiZulu"
}
}
"af": {"nativeName": "Afrikaans"},
"agq": {"nativeName": "Aghem"},
"ak": {"nativeName": "Akan"},
"am": {"nativeName": "አማርኛ"},
"ar": {"nativeName": "العربية"},
"as": {"nativeName": "অসমীয়া"},
"asa": {"nativeName": "Kipare"},
"ast": {"nativeName": "asturianu"},
"az": {"nativeName": "azərbaycan"},
"az-Cyrl": {"base": "az", "script": "Cyrl"},
"az-Latn": {"base": "az", "script": "Latn"},
"bas": {"nativeName": "Ɓàsàa"},
"be": {"nativeName": "беларуская"},
"bem": {"nativeName": "Ichibemba"},
"bez": {"nativeName": "Hibena"},
"bg": {"nativeName": "български"},
"bm": {"nativeName": "bamanakan"},
"bn": {"nativeName": "বাংলা"},
"bo": {"nativeName": "བོད་སྐད་"},
"br": {"nativeName": "brezhoneg"},
"brx": {"nativeName": "बड़ो"},
"bs": {"nativeName": "bosanski"},
"bs-Cyrl": {"base": "bs", "script": "Cyrl"},
"bs-Latn": {"base": "bs", "script": "Latn"},
"ca": {"nativeName": "català"},
"ccp": {"nativeName": "𑄌𑄋𑄴𑄟𑄳𑄦"},
"ce": {"nativeName": "нохчийн"},
"ceb": {"nativeName": "Binisaya"},
"cgg": {"nativeName": "Rukiga"},
"chr": {"nativeName": "ᏣᎳᎩ"},
"ckb": {"nativeName": "کوردیی ناوەندی"},
"cs": {"nativeName": "čeština"},
"cu": {"nativeName": "cu"},
"cy": {"nativeName": "Cymraeg"},
"da": {"nativeName": "dansk"},
"dav": {"nativeName": "Kitaita"},
"de": {"nativeName": "Deutsch"},
"dje": {"nativeName": "Zarmaciine"},
"dsb": {"nativeName": "dolnoserbšćina"},
"dua": {"nativeName": "duálá"},
"dyo": {"nativeName": "joola"},
"dz": {"nativeName": "རྫོང་ཁ"},
"ebu": {"nativeName": "Kĩembu"},
"ee": {"nativeName": "Eʋegbe"},
"el": {"nativeName": "Ελληνικά"},
"en": {"nativeName": "English"},
"eo": {"nativeName": "esperanto"},
"es": {"nativeName": "español"},
"et": {"nativeName": "eesti"},
"eu": {"nativeName": "euskara"},
"ewo": {"nativeName": "ewondo"},
"fa": {"nativeName": "فارسی"},
"ff": {"nativeName": "Pulaar"},
"ff-Latn": {"base": "ff", "script": "Latn"},
"fi": {"nativeName": "suomi"},
"fil": {"nativeName": "Filipino"},
"fo": {"nativeName": "føroyskt"},
"fr": {"nativeName": "français"},
"fur": {"nativeName": "furlan"},
"fy": {"nativeName": "Frysk"},
"ga": {"nativeName": "Gaeilge"},
"gd": {"nativeName": "Gàidhlig"},
"gl": {"nativeName": "galego"},
"gsw": {"nativeName": "Schwiizertüütsch"},
"gu": {"nativeName": "ગુજરાતી"},
"guz": {"nativeName": "Ekegusii"},
"gv": {"nativeName": "Gaelg"},
"ha": {"nativeName": "Hausa"},
"haw": {"nativeName": "ʻŌlelo Hawaiʻi"},
"he": {"nativeName": "עברית"},
"hi": {"nativeName": "हिन्दी"},
"hr": {"nativeName": "hrvatski"},
"hsb": {"nativeName": "hornjoserbšćina"},
"hu": {"nativeName": "magyar"},
"hy": {"nativeName": "հայերեն"},
"ia": {"nativeName": "interlingua"},
"id": {"nativeName": "Indonesia"},
"ig": {"nativeName": "Asụsụ Igbo"},
"ii": {"nativeName": "ꆈꌠꉙ"},
"is": {"nativeName": "íslenska"},
"it": {"nativeName": "italiano"},
"ja": {"nativeName": "日本語"},
"ja-Hira": {"base": "ja", "script": "Hira"},
"ja-Latn": {"base": "ja", "script": "Latn"},
"jgo": {"nativeName": "Ndaa"},
"jmc": {"nativeName": "Kimachame"},
"jv": {"nativeName": "Jawa"},
"ka": {"nativeName": "ქართული"},
"kab": {"nativeName": "Taqbaylit"},
"kam": {"nativeName": "Kikamba"},
"kde": {"nativeName": "Chimakonde"},
"kea": {"nativeName": "kabuverdianu"},
"khq": {"nativeName": "Koyra ciini"},
"ki": {"nativeName": "Gikuyu"},
"kk": {"nativeName": "қазақ тілі"},
"kkj": {"nativeName": "kakɔ"},
"kl": {"nativeName": "kalaallisut"},
"kln": {"nativeName": "Kalenjin"},
"km": {"nativeName": "ខ្មែរ"},
"kn": {"nativeName": "ಕನ್ನಡ"},
"ko": {"nativeName": "한국어"},
"ko-Latn": {"base": "ko", "script": "Latn"},
"kok": {"nativeName": "कोंकणी"},
"ks": {"nativeName": "کٲشُر"},
"ksb": {"nativeName": "Kishambaa"},
"ksf": {"nativeName": "rikpa"},
"ksh": {"nativeName": "Kölsch"},
"ku": {"nativeName": "kurdî"},
"kw": {"nativeName": "kernewek"},
"ky": {"nativeName": "кыргызча"},
"lag": {"nativeName": "Kɨlaangi"},
"lb": {"nativeName": "Lëtzebuergesch"},
"lg": {"nativeName": "Luganda"},
"lkt": {"nativeName": "Lakȟólʼiyapi"},
"ln": {"nativeName": "lingála"},
"lo": {"nativeName": "ລາວ"},
"lrc": {"nativeName": "لۊری شومالی"},
"lt": {"nativeName": "lietuvių"},
"lu": {"nativeName": "Tshiluba"},
"luo": {"nativeName": "Dholuo"},
"luy": {"nativeName": "Luluhia"},
"lv": {"nativeName": "latviešu"},
"mas": {"nativeName": "Maa"},
"mer": {"nativeName": "Kĩmĩrũ"},
"mfe": {"nativeName": "kreol morisien"},
"mg": {"nativeName": "Malagasy"},
"mgh": {"nativeName": "Makua"},
"mgo": {"nativeName": "metaʼ"},
"mi": {"nativeName": "Māori"},
"mk": {"nativeName": "македонски"},
"ml": {"nativeName": "മലയാളം"},
"mn": {"nativeName": "монгол"},
"mr": {"nativeName": "मराठी"},
"ms": {"nativeName": "Melayu"},
"mt": {"nativeName": "Malti"},
"mua": {"nativeName": "MUNDAŊ"},
"my": {"nativeName": "မြန်မာ"},
"mzn": {"nativeName": "مازرونی"},
"naq": {"nativeName": "Khoekhoegowab"},
"nb": {"nativeName": "norsk bokmål"},
"nd": {"nativeName": "isiNdebele"},
"nds": {"nativeName": "nds"},
"ne": {"nativeName": "नेपाली"},
"nl": {"nativeName": "Nederlands"},
"nmg": {"nativeName": "nmg"},
"nn": {"nativeName": "nynorsk"},
"nnh": {"nativeName": "Shwóŋò ngiembɔɔn"},
"nus": {"nativeName": "Thok Nath"},
"nyn": {"nativeName": "Runyankore"},
"oc": {"nativeName": "Occitan"},
"om": {"nativeName": "Oromoo"},
"or": {"nativeName": "ଓଡ଼ିଆ"},
"os": {"nativeName": "ирон"},
"pa": {"nativeName": "ਪੰਜਾਬੀ"},
"pa-Arab": {"base": "pa", "script": "Arab"},
"pa-Guru": {"base": "pa", "script": "Guru"},
"pl": {"nativeName": "polski"},
"prg": {"nativeName": "prūsiskan"},
"ps": {"nativeName": "پښتو"},
"pt": {"nativeName": "português"},
"qu": {"nativeName": "Runasimi"},
"rm": {"nativeName": "rumantsch"},
"rn": {"nativeName": "Ikirundi"},
"ro": {"nativeName": "română"},
"rof": {"nativeName": "Kihorombo"},
"root": {"nativeName": "root"},
"ru": {"nativeName": "русский"},
"rw": {"nativeName": "Kinyarwanda"},
"rwk": {"nativeName": "Kiruwa"},
"sah": {"nativeName": "саха тыла"},
"saq": {"nativeName": "Kisampur"},
"sbp": {"nativeName": "Ishisangu"},
"sd": {"nativeName": "سنڌي"},
"se": {"nativeName": "davvisámegiella"},
"seh": {"nativeName": "sena"},
"ses": {"nativeName": "Koyraboro senni"},
"sg": {"nativeName": "Sängö"},
"shi": {"nativeName": "ⵜⴰⵛⵍⵃⵉⵜ"},
"shi-Latn": {"base": "shi", "script": "Latn"},
"shi-Tfng": {"base": "shi", "script": "Tfng"},
"si": {"nativeName": "සිංහල"},
"sk": {"nativeName": "slovenčina"},
"sl": {"nativeName": "slovenščina"},
"smn": {"nativeName": "anarâškielâ"},
"sn": {"nativeName": "chiShona"},
"so": {"nativeName": "Soomaali"},
"sq": {"nativeName": "shqip"},
"sr": {"nativeName": "српски"},
"sr-Cyrl": {"base": "sr", "script": "Cyrl"},
"sr-Latn": {"base": "sr", "script": "Latn"},
"sv": {"nativeName": "svenska"},
"sw": {"nativeName": "Kiswahili"},
"ta": {"nativeName": "தமிழ்"},
"te": {"nativeName": "తెలుగు"},
"teo": {"nativeName": "Kiteso"},
"tg": {"nativeName": "тоҷикӣ"},
"th": {"nativeName": "ไทย"},
"ti": {"nativeName": "ትግርኛ"},
"tk": {"nativeName": "türkmen dili"},
"to": {"nativeName": "lea fakatonga"},
"tr": {"nativeName": "Türkçe"},
"tt": {"nativeName": "татар"},
"twq": {"nativeName": "Tasawaq senni"},
"tzm": {"nativeName": "Tamaziɣt n laṭlaṣ"},
"ug": {"nativeName": "ئۇيغۇرچە"},
"uk": {"nativeName": "українська"},
"ur": {"nativeName": "اردو"},
"uz": {"nativeName": "ozbek"},
"uz-Arab": {"base": "uz", "script": "Arab"},
"uz-Cyrl": {"base": "uz", "script": "Cyrl"},
"uz-Latn": {"base": "uz", "script": "Latn"},
"vai": {"nativeName": "ꕙꔤ"},
"vai-Latn": {"base": "vai", "script": "Latn"},
"vai-Vaii": {"base": "vai", "script": "Vaii"},
"vi": {"nativeName": "Tiếng Việt"},
"vo": {"nativeName": "vo"},
"vun": {"nativeName": "Kyivunjo"},
"wae": {"nativeName": "Walser"},
"wo": {"nativeName": "Wolof"},
"xh": {"nativeName": "isiXhosa"},
"xog": {"nativeName": "Olusoga"},
"yav": {"nativeName": "nuasue"},
"yi": {"nativeName": "ייִדיש"},
"yo": {"nativeName": "Èdè Yorùbá"},
"yue": {"nativeName": "粵語"},
"yue-Hans": {"base": "yue", "script": "Hans"},
"yue-Hant": {"base": "yue", "script": "Hant"},
"zgh": {"nativeName": "ⵜⴰⵎⴰⵣⵉⵖⵜ"},
"zh": {"nativeName": "中文"},
"zh-Hans": {"base": "zh", "script": "Hans", "nativeName": "简体中文"},
"zh-Hant": {"base": "zh", "script": "Hant", "nativeName": "繁體中文"},
"zh_pinyin": {"base": "zh", "script": "Latn"},
"zu": {"nativeName": "isiZulu"}
}
File diff suppressed because one or more lines are too long
-65
View File
@@ -1,65 +0,0 @@
{
"dataPhoneFormats": {
"ag": "+1-268-555-1234",
"ai": "+1-264-555-1234",
"as": "+1-684-555-1234",
"at": "+43 1 123 45 67",
"au": "+61 1 2345 6789",
"bb": "+1-246-555-1234",
"bj": "+229 20 12 34 56",
"bm": "+1-441-555-1234",
"bo": "+591 1 2345678",
"br": "+55 11 0982 1098",
"bs": "+1-242-555-1234",
"ca": "+1-226-555-1234",
"ci": "+225 20 12 34 56",
"cn": "+86 10 12345678",
"de": "+49 89 1234567",
"dm": "+1-767-555-1234",
"do": "+1-809-555-1234",
"es": "+34 989 12 34 56",
"fi": "+358 40 123 4567",
"fr": "+33 1 23 45 67 89",
"gb": "+44 1632 961234",
"gd": "+1-473-555-1234",
"gg": "+44 1632 961234",
"gu": "+1-671-555-1234",
"hk": "+852 1234 5678",
"hr": "+385 01 123 4567",
"hu": "+36 1 123 45 67",
"ie": "+353 20 912 3456",
"im": "+44 1632 961234",
"it": "+39 01 123 456",
"je": "+44 1632 961234",
"jm": "+1-876-555-1234",
"kn": "+1-869-555-1234",
"ky": "+1-345-555-1234",
"kz": "+7 495 1234567",
"lc": "+1-758-555-1234",
"mp": "+1-670-555-1234",
"ms": "+1-664-555-1234",
"nl": "+31 42 123 4567",
"no": "+47 22 12 34 56",
"pe": "+51 1 1234567",
"pl": "+48 42 123 4567",
"pr": "+1-787-555-1234",
"pt": "+351 211 123456",
"ru": "+7 495 1234567",
"se": "+46 31 123 4567",
"si": "+386 31 123 4567",
"sj": "+47 22 12 34 56",
"sx": "+1-721-555-1234",
"tc": "+1-649-555-1234",
"tr": "+90 312 123 4567",
"tt": "+1-868-555-1234",
"tw": "+886 1 2345 6789",
"ua": "+380 44 123 4567",
"us": "+1-202-555-1234",
"va": "+39 01 123 456",
"vc": "+1-784-555-1234",
"vg": "+1-284-555-1234",
"vi": "+1-340-555-1234",
"vn": "+84 1 234 5678",
"za": "+27 11 907 1111"
}
}
+63
View File
@@ -0,0 +1,63 @@
{
"ag": "+1-268-555-1234",
"ai": "+1-264-555-1234",
"as": "+1-684-555-1234",
"at": "+43 1 123 45 67",
"au": "+61 1 2345 6789",
"bb": "+1-246-555-1234",
"bj": "+229 20 12 34 56",
"bm": "+1-441-555-1234",
"bo": "+591 1 2345678",
"br": "+55 11 0982 1098",
"bs": "+1-242-555-1234",
"ca": "+1-226-555-1234",
"ci": "+225 20 12 34 56",
"cn": "+86 10 12345678",
"de": "+49 89 1234567",
"dm": "+1-767-555-1234",
"do": "+1-809-555-1234",
"es": "+34 989 12 34 56",
"fi": "+358 40 123 4567",
"fr": "+33 1 23 45 67 89",
"gb": "+44 1632 961234",
"gd": "+1-473-555-1234",
"gg": "+44 1632 961234",
"gu": "+1-671-555-1234",
"hk": "+852 1234 5678",
"hr": "+385 01 123 4567",
"hu": "+36 1 123 45 67",
"ie": "+353 20 912 3456",
"im": "+44 1632 961234",
"it": "+39 01 123 456",
"je": "+44 1632 961234",
"jm": "+1-876-555-1234",
"kn": "+1-869-555-1234",
"ky": "+1-345-555-1234",
"kz": "+7 495 1234567",
"lc": "+1-758-555-1234",
"mp": "+1-670-555-1234",
"ms": "+1-664-555-1234",
"nl": "+31 42 123 4567",
"no": "+47 22 12 34 56",
"pe": "+51 1 1234567",
"pl": "+48 42 123 4567",
"pr": "+1-787-555-1234",
"pt": "+351 211 123456",
"ru": "+7 495 1234567",
"se": "+46 31 123 4567",
"si": "+386 31 123 4567",
"sj": "+47 22 12 34 56",
"sx": "+1-721-555-1234",
"tc": "+1-649-555-1234",
"tr": "+90 312 123 4567",
"tt": "+1-868-555-1234",
"tw": "+886 1 2345 6789",
"ua": "+380 44 123 4567",
"us": "+1-202-555-1234",
"va": "+39 01 123 456",
"vc": "+1-784-555-1234",
"vg": "+1-284-555-1234",
"vi": "+1-340-555-1234",
"vn": "+84 1 234 5678",
"za": "+27 11 907 1111"
}
+340 -342
View File
@@ -1,342 +1,340 @@
{
"dataShortcuts": [
{
"tab": "browsing",
"text": "shortcuts.browsing.title",
"columns": [
{
"rows": [
{
"section": "navigation",
"text": "shortcuts.browsing.navigation.title"
},
{
"shortcuts": ["↓", "↑", "←", "→"],
"text": "shortcuts.browsing.navigation.pan",
"separator": ","
},
{
"modifiers": ["⌘"],
"shortcuts": ["↓", "↑", "←", "→"],
"text": "shortcuts.browsing.navigation.pan_more",
"separator": ","
},
{
"shortcuts": ["+", "-"],
"text": "shortcuts.browsing.navigation.zoom",
"separator": ","
},
{
"modifiers": [""],
"shortcuts": ["+", "-"],
"text": "shortcuts.browsing.navigation.zoom_more",
"separator": ","
},
{
"section": "display_options",
"text": "shortcuts.browsing.display_options.title"
},
{
"shortcuts": ["background.key"],
"text": "shortcuts.browsing.display_options.background"
},
{
"modifiers": ["⌘"],
"shortcuts": ["background.key"],
"text": "shortcuts.browsing.display_options.background_switch"
},
{
"shortcuts": ["map_data.key"],
"text": "shortcuts.browsing.display_options.map_data"
},
{
"shortcuts": ["issues.key"],
"text": "shortcuts.browsing.display_options.issues"
},
{
"shortcuts": ["preferences.key"],
"text": "shortcuts.browsing.display_options.preferences"
},
{
"modifiers": ["", ""],
"shortcuts": ["F", "F11"],
"text": "shortcuts.browsing.display_options.fullscreen"
},
{
"shortcuts": ["sidebar.key", "`", "²"],
"text": "shortcuts.browsing.display_options.sidebar"
},
{
"shortcuts": ["area_fill.wireframe.key"],
"text": "shortcuts.browsing.display_options.wireframe"
},
{
"modifiers": ["⌥"],
"shortcuts": ["area_fill.wireframe.key"],
"text": "shortcuts.browsing.display_options.osm_data"
},
{
"shortcuts": ["background.minimap.key"],
"text": "shortcuts.browsing.display_options.minimap"
},
{
"shortcuts": ["map_data.highlight_edits.key"],
"text": "shortcuts.browsing.display_options.highlight_edits"
}
]
},
{
"rows": [
{
"section": "help",
"text": "shortcuts.browsing.help.title"
},
{
"shortcuts": ["help.key"],
"text": "shortcuts.browsing.help.help"
},
{
"shortcuts": ["shortcuts.toggle.key", "?"],
"text": "shortcuts.browsing.help.keyboard"
},
{
"section": "selecting",
"text": "shortcuts.browsing.selecting.title"
},
{
"shortcuts": ["Left-click"],
"text": "shortcuts.browsing.selecting.select_one"
},
{
"modifiers": [""],
"shortcuts": ["Left-click"],
"text": "shortcuts.browsing.selecting.select_multi"
},
{
"modifiers": [""],
"shortcuts": ["Left-click"],
"gesture": "shortcuts.gesture.drag",
"text": "shortcuts.browsing.selecting.lasso"
},
{
"modifiers": [""],
"shortcuts": ["F"],
"text": "shortcuts.browsing.selecting.search"
},
{
"section": "with_selected",
"text": "shortcuts.browsing.with_selected.title"
},
{
"shortcuts": ["Right-click", "shortcuts.key.space"],
"text": "shortcuts.browsing.with_selected.edit_menu"
},
{
"shortcuts": ["inspector.zoom_to.key"],
"text": "shortcuts.browsing.with_selected.zoom_to"
},
{
"section": "vertex_selected",
"text": "shortcuts.browsing.vertex_selected.title"
},
{
"shortcuts": ["[", "↖"],
"text": "shortcuts.browsing.vertex_selected.previous"
},
{
"shortcuts": ["]", "↘"],
"text": "shortcuts.browsing.vertex_selected.next"
},
{
"shortcuts": ["{", "⇞"],
"text": "shortcuts.browsing.vertex_selected.first"
},
{
"shortcuts": ["}", "⇟"],
"text": "shortcuts.browsing.vertex_selected.last"
},
{
"shortcuts": ["\\", "shortcuts.key.pause"],
"text": "shortcuts.browsing.vertex_selected.change_parent"
}
]
}
]
},
{
"tab": "editing",
"text": "shortcuts.editing.title",
"columns": [
{
"rows": [
{
"section": "drawing",
"text": "shortcuts.editing.drawing.title"
},
{
"shortcuts": ["1"],
"text": "shortcuts.editing.drawing.add_point"
},
{
"shortcuts": ["2"],
"text": "shortcuts.editing.drawing.add_line"
},
{
"shortcuts": ["3"],
"text": "shortcuts.editing.drawing.add_area"
},
{
"shortcuts": ["modes.add_note.key"],
"text": "shortcuts.editing.drawing.add_note"
},
{
"shortcuts": ["Left-click", "shortcuts.key.space"],
"text": "shortcuts.editing.drawing.place_point"
},
{
"shortcuts": ["⌥"],
"text": "shortcuts.editing.drawing.disable_snap"
},
{
"shortcuts": ["↵", "⎋"],
"text": "shortcuts.editing.drawing.stop_line"
},
{
"section": "commands",
"text": "shortcuts.editing.commands.title"
},
{
"modifiers": [""],
"shortcuts": ["C"],
"text": "shortcuts.editing.commands.copy"
},
{
"modifiers": [""],
"shortcuts": ["V"],
"text": "shortcuts.editing.commands.paste"
},
{
"modifiers": [""],
"shortcuts": ["Z"],
"text": "shortcuts.editing.commands.undo"
},
{
"modifiers": ["⌘", "⇧"],
"shortcuts": ["Z"],
"text": "shortcuts.editing.commands.redo"
},
{
"modifiers": [""],
"shortcuts": ["S"],
"text": "shortcuts.editing.commands.save"
}
]
},
{
"rows": [
{
"section": "operations",
"text": "shortcuts.editing.operations.title"
},
{
"shortcuts": ["operations.continue.key"],
"text": "shortcuts.editing.operations.continue_line"
},
{
"shortcuts": ["operations.merge.key"],
"text": "shortcuts.editing.operations.merge"
},
{
"shortcuts": ["operations.disconnect.key"],
"text": "shortcuts.editing.operations.disconnect"
},
{
"shortcuts": ["operations.extract.key"],
"text": "shortcuts.editing.operations.extract"
},
{
"shortcuts": ["operations.split.key"],
"text": "shortcuts.editing.operations.split"
},
{
"shortcuts": ["operations.reverse.key"],
"text": "shortcuts.editing.operations.reverse"
},
{
"shortcuts": ["operations.move.key"],
"text": "shortcuts.editing.operations.move"
},
{
"shortcuts": ["operations.rotate.key"],
"text": "shortcuts.editing.operations.rotate"
},
{
"shortcuts": ["operations.orthogonalize.key"],
"text": "shortcuts.editing.operations.orthogonalize"
},
{
"shortcuts": ["operations.straighten.key"],
"text": "shortcuts.editing.operations.straighten"
},
{
"shortcuts": ["operations.circularize.key"],
"text": "shortcuts.editing.operations.circularize"
},
{
"shortcuts": ["operations.reflect.key.long"],
"text": "shortcuts.editing.operations.reflect_long"
},
{
"shortcuts": ["operations.reflect.key.short"],
"text": "shortcuts.editing.operations.reflect_short"
},
{
"modifiers": [""],
"shortcuts": ["⌫"],
"text": "shortcuts.editing.operations.delete"
}
]
}
]
},
{
"tab": "tools",
"text": "shortcuts.tools.title",
"columns": [
{
"rows": [
{
"section": "info",
"text": "shortcuts.tools.info.title"
},
{
"modifiers": ["⌘"],
"shortcuts": ["info_panels.key"],
"text": "shortcuts.tools.info.all"
},
{
"modifiers": ["⌘", "⇧"],
"shortcuts": ["info_panels.background.key"],
"text": "shortcuts.tools.info.background"
},
{
"modifiers": ["⌘", "⇧"],
"shortcuts": ["info_panels.history.key"],
"text": "shortcuts.tools.info.history"
},
{
"modifiers": ["⌘", "⇧"],
"shortcuts": ["info_panels.location.key"],
"text": "shortcuts.tools.info.location"
},
{
"modifiers": ["⌘", "⇧"],
"shortcuts": ["info_panels.measurement.key"],
"text": "shortcuts.tools.info.measurement"
}
]
}
]
}
]
}
[
{
"tab": "browsing",
"text": "shortcuts.browsing.title",
"columns": [
{
"rows": [
{
"section": "navigation",
"text": "shortcuts.browsing.navigation.title"
},
{
"shortcuts": ["↓", "↑", "←", "→"],
"text": "shortcuts.browsing.navigation.pan",
"separator": ","
},
{
"modifiers": ["⌘"],
"shortcuts": ["↓", "↑", "←", "→"],
"text": "shortcuts.browsing.navigation.pan_more",
"separator": ","
},
{
"shortcuts": ["+", "-"],
"text": "shortcuts.browsing.navigation.zoom",
"separator": ","
},
{
"modifiers": ["⌘"],
"shortcuts": ["+", "-"],
"text": "shortcuts.browsing.navigation.zoom_more",
"separator": ","
},
{
"section": "display_options",
"text": "shortcuts.browsing.display_options.title"
},
{
"shortcuts": ["background.key"],
"text": "shortcuts.browsing.display_options.background"
},
{
"modifiers": ["⌘"],
"shortcuts": ["background.key"],
"text": "shortcuts.browsing.display_options.background_switch"
},
{
"shortcuts": ["map_data.key"],
"text": "shortcuts.browsing.display_options.map_data"
},
{
"shortcuts": ["issues.key"],
"text": "shortcuts.browsing.display_options.issues"
},
{
"shortcuts": ["preferences.key"],
"text": "shortcuts.browsing.display_options.preferences"
},
{
"modifiers": ["⌃", "⌘"],
"shortcuts": ["F", "F11"],
"text": "shortcuts.browsing.display_options.fullscreen"
},
{
"shortcuts": ["sidebar.key", "`", "²"],
"text": "shortcuts.browsing.display_options.sidebar"
},
{
"shortcuts": ["area_fill.wireframe.key"],
"text": "shortcuts.browsing.display_options.wireframe"
},
{
"modifiers": ["⌥"],
"shortcuts": ["area_fill.wireframe.key"],
"text": "shortcuts.browsing.display_options.osm_data"
},
{
"shortcuts": ["background.minimap.key"],
"text": "shortcuts.browsing.display_options.minimap"
},
{
"shortcuts": ["map_data.highlight_edits.key"],
"text": "shortcuts.browsing.display_options.highlight_edits"
}
]
},
{
"rows": [
{
"section": "help",
"text": "shortcuts.browsing.help.title"
},
{
"shortcuts": ["help.key"],
"text": "shortcuts.browsing.help.help"
},
{
"shortcuts": ["shortcuts.toggle.key", "?"],
"text": "shortcuts.browsing.help.keyboard"
},
{
"section": "selecting",
"text": "shortcuts.browsing.selecting.title"
},
{
"shortcuts": ["Left-click"],
"text": "shortcuts.browsing.selecting.select_one"
},
{
"modifiers": ["⇧"],
"shortcuts": ["Left-click"],
"text": "shortcuts.browsing.selecting.select_multi"
},
{
"modifiers": ["⇧"],
"shortcuts": ["Left-click"],
"gesture": "shortcuts.gesture.drag",
"text": "shortcuts.browsing.selecting.lasso"
},
{
"modifiers": ["⌘"],
"shortcuts": ["F"],
"text": "shortcuts.browsing.selecting.search"
},
{
"section": "with_selected",
"text": "shortcuts.browsing.with_selected.title"
},
{
"shortcuts": ["Right-click", "shortcuts.key.space"],
"text": "shortcuts.browsing.with_selected.edit_menu"
},
{
"shortcuts": ["inspector.zoom_to.key"],
"text": "shortcuts.browsing.with_selected.zoom_to"
},
{
"section": "vertex_selected",
"text": "shortcuts.browsing.vertex_selected.title"
},
{
"shortcuts": ["[", "↖"],
"text": "shortcuts.browsing.vertex_selected.previous"
},
{
"shortcuts": ["]", "↘"],
"text": "shortcuts.browsing.vertex_selected.next"
},
{
"shortcuts": ["{", "⇞"],
"text": "shortcuts.browsing.vertex_selected.first"
},
{
"shortcuts": ["}", "⇟"],
"text": "shortcuts.browsing.vertex_selected.last"
},
{
"shortcuts": ["\\", "shortcuts.key.pause"],
"text": "shortcuts.browsing.vertex_selected.change_parent"
}
]
}
]
},
{
"tab": "editing",
"text": "shortcuts.editing.title",
"columns": [
{
"rows": [
{
"section": "drawing",
"text": "shortcuts.editing.drawing.title"
},
{
"shortcuts": ["1"],
"text": "shortcuts.editing.drawing.add_point"
},
{
"shortcuts": ["2"],
"text": "shortcuts.editing.drawing.add_line"
},
{
"shortcuts": ["3"],
"text": "shortcuts.editing.drawing.add_area"
},
{
"shortcuts": ["modes.add_note.key"],
"text": "shortcuts.editing.drawing.add_note"
},
{
"shortcuts": ["Left-click", "shortcuts.key.space"],
"text": "shortcuts.editing.drawing.place_point"
},
{
"shortcuts": ["⌥"],
"text": "shortcuts.editing.drawing.disable_snap"
},
{
"shortcuts": ["↵", "⎋"],
"text": "shortcuts.editing.drawing.stop_line"
},
{
"section": "commands",
"text": "shortcuts.editing.commands.title"
},
{
"modifiers": ["⌘"],
"shortcuts": ["C"],
"text": "shortcuts.editing.commands.copy"
},
{
"modifiers": ["⌘"],
"shortcuts": ["V"],
"text": "shortcuts.editing.commands.paste"
},
{
"modifiers": ["⌘"],
"shortcuts": ["Z"],
"text": "shortcuts.editing.commands.undo"
},
{
"modifiers": ["⌘", "⇧"],
"shortcuts": ["Z"],
"text": "shortcuts.editing.commands.redo"
},
{
"modifiers": ["⌘"],
"shortcuts": ["S"],
"text": "shortcuts.editing.commands.save"
}
]
},
{
"rows": [
{
"section": "operations",
"text": "shortcuts.editing.operations.title"
},
{
"shortcuts": ["operations.continue.key"],
"text": "shortcuts.editing.operations.continue_line"
},
{
"shortcuts": ["operations.merge.key"],
"text": "shortcuts.editing.operations.merge"
},
{
"shortcuts": ["operations.disconnect.key"],
"text": "shortcuts.editing.operations.disconnect"
},
{
"shortcuts": ["operations.extract.key"],
"text": "shortcuts.editing.operations.extract"
},
{
"shortcuts": ["operations.split.key"],
"text": "shortcuts.editing.operations.split"
},
{
"shortcuts": ["operations.reverse.key"],
"text": "shortcuts.editing.operations.reverse"
},
{
"shortcuts": ["operations.move.key"],
"text": "shortcuts.editing.operations.move"
},
{
"shortcuts": ["operations.rotate.key"],
"text": "shortcuts.editing.operations.rotate"
},
{
"shortcuts": ["operations.orthogonalize.key"],
"text": "shortcuts.editing.operations.orthogonalize"
},
{
"shortcuts": ["operations.straighten.key"],
"text": "shortcuts.editing.operations.straighten"
},
{
"shortcuts": ["operations.circularize.key"],
"text": "shortcuts.editing.operations.circularize"
},
{
"shortcuts": ["operations.reflect.key.long"],
"text": "shortcuts.editing.operations.reflect_long"
},
{
"shortcuts": ["operations.reflect.key.short"],
"text": "shortcuts.editing.operations.reflect_short"
},
{
"modifiers": ["⌘"],
"shortcuts": [""],
"text": "shortcuts.editing.operations.delete"
}
]
}
]
},
{
"tab": "tools",
"text": "shortcuts.tools.title",
"columns": [
{
"rows": [
{
"section": "info",
"text": "shortcuts.tools.info.title"
},
{
"modifiers": ["⌘"],
"shortcuts": ["info_panels.key"],
"text": "shortcuts.tools.info.all"
},
{
"modifiers": ["⌘", "⇧"],
"shortcuts": ["info_panels.background.key"],
"text": "shortcuts.tools.info.background"
},
{
"modifiers": ["⌘", "⇧"],
"shortcuts": ["info_panels.history.key"],
"text": "shortcuts.tools.info.history"
},
{
"modifiers": ["⌘", "⇧"],
"shortcuts": ["info_panels.location.key"],
"text": "shortcuts.tools.info.location"
},
{
"modifiers": ["⌘", "⇧"],
"shortcuts": ["info_panels.measurement.key"],
"text": "shortcuts.tools.info.measurement"
}
]
}
]
}
]
-260
View File
@@ -1,260 +0,0 @@
{
"dataTerritoryLanguages": {
"ac": ["en"],
"ad": ["ca", "es", "fr"],
"ae": ["ar", "en", "ml", "ps", "bal", "fa"],
"af": ["fa", "ps", "haz", "uz-Arab", "tk", "prd", "bal", "bgn", "ug", "kk-Arab"],
"ag": ["en", "pt"],
"ai": ["en"],
"al": ["sq", "el", "mk"],
"am": ["hy", "ku", "az"],
"ao": ["pt", "umb", "kmb", "ln"],
"aq": ["und"],
"ar": ["es", "en", "cy", "gn"],
"as": ["sm", "en"],
"at": ["de", "bar", "en", "fr", "it", "hr", "sl", "hu"],
"au": ["en", "zh-Hant", "it", "wbp"],
"aw": ["nl", "pap", "en"],
"ax": ["sv"],
"az": ["az", "az-Cyrl", "tly", "ku", "ttt", "tkr"],
"ba": ["bs", "bs-Cyrl", "en", "hr", "sr", "sr-Latn"],
"bb": ["en"],
"bd": ["bn", "en", "rkt", "syl", "ccp", "my", "grt", "mro", "mni"],
"be": ["en", "nl", "fr", "de", "vls", "wa"],
"bf": ["mos", "dyu", "fr", "ff", "ff-Adlm"],
"bg": ["bg", "en", "ru", "tr", "de"],
"bh": ["ar", "ml"],
"bi": ["rn", "fr", "sw", "en"],
"bj": ["fr", "fon", "yo"],
"bl": ["fr"],
"bm": ["en"],
"bn": ["ms", "zh-Hant", "ms-Arab", "en"],
"bo": ["es", "qu", "ay", "gn", "aro"],
"bq": ["pap", "nl"],
"br": ["pt", "en", "de", "it", "ja", "es", "ko", "kgp", "gub", "yrl", "xav"],
"bs": ["en"],
"bt": ["dz", "ne", "tsj", "en", "lep"],
"bv": ["und"],
"bw": ["en", "tn", "af"],
"by": ["be", "ru"],
"bz": ["en", "es"],
"ca": ["en", "fr", "it", "de", "pdt", "cr", "crk", "yi", "iu", "iu-Latn", "moe", "crj", "atj", "crl", "csw", "crm", "ikt", "moh", "dgr", "den", "scs", "nsk", "chp", "gwi"],
"cc": ["ms-Arab", "en"],
"cd": ["sw", "lua", "fr", "ln", "lu", "kg", "lol", "rw"],
"cf": ["fr", "sg", "ln"],
"cg": ["fr", "ln"],
"ch": ["de", "gsw", "en", "fr", "it", "lmo", "pt", "rm", "rmo", "wae"],
"ci": ["fr", "bci", "sef", "dnj", "kfo", "bqv"],
"ck": ["en"],
"cl": ["es", "en", "arn"],
"cm": ["fr", "en", "bum", "ff", "ewo", "ybb", "bbj", "nnh", "bkm", "bas", "bax", "byv", "mua", "maf", "bfd", "bss", "kkj", "dua", "mgo", "ar", "jgo", "ksf", "agq", "ha-Arab", "nmg", "yav", "ff-Adlm"],
"cn": ["zh", "wuu", "yue-Hans", "hsn", "hak", "nan", "gan", "ii", "ug", "za", "mn-Mong", "bo", "ko", "kk-Arab", "lis", "ky-Arab", "nxq", "khb", "tdd", "lcp", "en", "ru", "vi", "uz-Cyrl", "lzh"],
"co": ["es", "guc"],
"cp": ["und"],
"cr": ["es"],
"cu": ["es"],
"cv": ["kea", "pt"],
"cw": ["pap", "nl", "es"],
"cx": ["en"],
"cy": ["el", "en", "tr", "fr", "hy", "ar"],
"cz": ["cs", "en", "sk", "de", "pl"],
"de": ["de", "en", "fr", "bar", "nds", "nl", "it", "es", "ru", "vmf", "tr", "gsw", "da", "swg", "hr", "ku", "el", "ksh", "pl", "hsb", "frr", "dsb", "frs", "stq", "pfl"],
"dg": ["en"],
"dj": ["aa", "so", "ar", "fr"],
"dk": ["da", "en", "de", "sv", "fo", "kl", "jut"],
"dm": ["en"],
"do": ["es", "en"],
"dz": ["arq", "ar", "fr", "kab", "en"],
"ea": ["es"],
"ec": ["es", "qu", "qug"],
"ee": ["et", "ru", "en", "fi", "vro"],
"eg": ["ar", "arz", "en", "el"],
"eh": ["ar"],
"er": ["ti", "en", "tig", "ar", "aa", "ssy", "byn"],
"es": ["es", "en", "ca", "gl", "eu", "ast", "ext", "an"],
"et": ["en", "am", "om", "so", "ti", "sid", "wal", "aa"],
"fi": ["fi", "en", "sv", "de", "ru", "et", "rmf", "se", "smn", "sms"],
"fj": ["en", "hi", "hif", "fj", "rtm"],
"fk": ["en"],
"fm": ["en", "chk", "pon", "kos", "yap", "uli"],
"fo": ["fo"],
"fr": ["fr", "en", "es", "de", "oc", "it", "pt", "pcd", "gsw", "br", "co", "ca", "eu", "nl", "frp", "ia"],
"ga": ["fr", "puu"],
"gb": ["en", "fr", "de", "sco", "pa", "cy", "bn", "zh-Hant", "syl", "el", "it", "ks", "gd", "yi", "ml", "ga", "kw"],
"gd": ["en"],
"ge": ["ka", "xmf", "ru", "hy", "ab", "os", "ku"],
"gf": ["fr", "gcr", "zh-Hant"],
"gg": ["en"],
"gh": ["ak", "en", "ee", "abr", "gur", "ada", "gaa", "nzi", "ha", "saf", "ff", "ff-Adlm"],
"gi": ["en", "es"],
"gl": ["kl", "da"],
"gm": ["en", "man", "ff", "ff-Adlm"],
"gn": ["fr", "ff", "man-Nkoo", "sus", "nqo", "kpe", "ff-Adlm"],
"gp": ["fr"],
"gq": ["es", "fan", "fr", "bvb", "pt"],
"gr": ["el", "en", "fr", "de", "pnt", "mk", "tr", "bg", "sq", "tsd"],
"gs": ["und"],
"gt": ["es", "quc"],
"gu": ["en", "ch"],
"gw": ["pt", "knf", "ff", "ff-Adlm"],
"gy": ["en"],
"hk": ["zh-Hant", "yue", "en", "zh"],
"hm": ["und"],
"hn": ["es", "en"],
"hr": ["hr", "en", "it"],
"ht": ["ht", "fr"],
"hu": ["hu", "en", "de", "fr", "ro", "hr", "sk", "sl"],
"ic": ["es"],
"id": ["id", "jv", "su", "mad", "ms-Arab", "min", "bew", "ban", "bug", "bjn", "ace", "sas", "bbc", "zh-Hant", "mak", "ljp", "rej", "gor", "nij", "kge", "aoz", "kvr", "lbw", "gay", "rob", "mdr", "sxn", "sly", "mwv"],
"ie": ["en", "ga", "fr"],
"il": ["he", "en", "ar", "ru", "ro", "yi", "pl", "lad", "hu", "am", "ti", "ml"],
"im": ["en", "gv"],
"in": ["hi", "en", "bn", "te", "mr", "ta", "ur", "gu", "kn", "ml", "or", "pa", "bho", "awa", "as", "bgc", "mag", "mai", "mwr", "hne", "dcc", "bjj", "ne", "sat", "wtm", "rkt", "ks", "kok", "gom", "swv", "gbm", "lmn", "sd", "gon", "kfy", "doi", "kru", "sck", "wbq", "xnr", "khn", "tcy", "wbr", "brx", "noe", "bhb", "mni", "raj", "hoc", "mtr", "unr", "bhi", "hoj", "kha", "kfr", "grt", "unx", "bfy", "srx", "saz", "ccp", "sd-Deva", "bfq", "njo", "ria", "bo", "bpy", "bft", "bra", "lep", "btv", "lif", "lah", "sa", "kht", "dv", "dz"],
"io": ["en"],
"iq": ["ar", "en", "ckb", "az-Arab", "fa", "lrc", "syr"],
"ir": ["fa", "az-Arab", "mzn", "glk", "ckb", "sdh", "tk", "lrc", "ar", "bal", "rmt", "bqi", "luz", "lki", "bgn", "prd", "hy", "ps", "ka", "gbz", "kk-Arab"],
"is": ["is", "da"],
"it": ["it", "en", "fr", "sc", "de", "vec", "nap", "lij", "scn", "sdc", "sl", "fur", "egl", "ca", "el", "lmo", "pms", "hr", "rgn"],
"je": ["en"],
"jm": ["en", "jam"],
"jo": ["ar", "en"],
"jp": ["ja", "ryu", "ko"],
"ke": ["sw", "en", "ki", "luy", "luo", "kam", "kln", "guz", "mer", "mas", "ebu", "so", "dav", "teo", "pko", "om", "saq", "ar", "pa", "gu"],
"kg": ["ky", "ru"],
"kh": ["km", "cja", "kdt"],
"ki": ["en", "gil"],
"km": ["ar", "fr", "zdj", "wni"],
"kn": ["en"],
"kp": ["ko"],
"kr": ["ko"],
"kw": ["ar"],
"ky": ["en"],
"kz": ["ru", "kk", "en", "de", "ug-Cyrl"],
"la": ["lo", "kjg", "kdt"],
"lb": ["ar", "en", "hy", "ku-Arab", "fr"],
"lc": ["en"],
"li": ["de", "gsw", "wae"],
"lk": ["si", "ta", "en"],
"lr": ["en", "kpe", "vai", "men", "ff", "ff-Adlm", "vai-Latn"],
"ls": ["st", "en", "zu", "ss", "xh"],
"lt": ["lt", "ru", "en", "de", "sgs"],
"lu": ["fr", "lb", "de", "en", "pt"],
"lv": ["lv", "en", "ru", "ltg"],
"ly": ["ar"],
"ma": ["ary", "ar", "zgh", "fr", "en", "tzm", "shi", "shi-Latn", "rif", "rif-Latn", "es"],
"mc": ["fr"],
"md": ["ro", "uk", "bg", "gag", "ru"],
"me": ["sr-Latn", "sq", "sr"],
"mf": ["fr"],
"mg": ["mg", "fr", "en"],
"mh": ["en", "mh"],
"mk": ["mk", "sq", "tr"],
"ml": ["bm", "fr", "ffm", "snk", "mwk", "ses", "tmh", "bm-Nkoo", "khq", "dtm", "kao", "ar", "bmq", "bze"],
"mm": ["my", "shn", "kac", "mnw", "kht"],
"mn": ["mn", "kk-Arab", "zh", "ru", "ug-Cyrl"],
"mo": ["zh-Hant", "pt", "zh", "en"],
"mp": ["en", "ch"],
"mq": ["fr"],
"mr": ["ar", "fr", "ff", "wo", "ff-Adlm"],
"ms": ["en"],
"mt": ["mt", "en", "it", "fr"],
"mu": ["mfe", "en", "bho", "ur", "fr", "ta"],
"mv": ["dv"],
"mw": ["en", "ny", "tum", "tog", "zu"],
"mx": ["es", "en", "yua", "nhe", "nhw", "maz", "nch", "sei"],
"my": ["ms", "en", "zh-Hant", "ta", "iba", "jv", "zmi", "dtp", "ml", "bug", "bjn"],
"mz": ["pt", "vmw", "ndc", "ts", "ngl", "seh", "mgh", "rng", "ny", "yao", "sw", "zu"],
"na": ["af", "kj", "ng", "naq", "hz", "en", "de", "tn"],
"nc": ["fr"],
"ne": ["ha", "fr", "dje", "fuq", "tmh", "ar", "twq", "ff", "ff-Adlm"],
"nf": ["en"],
"ng": ["en", "pcm", "ha", "ig", "yo", "fuv", "tiv", "efi", "ibb", "ha-Arab", "bin", "kaj", "kcg", "ar", "cch", "amo", "ff", "ff-Adlm"],
"ni": ["es"],
"nl": ["nl", "en", "de", "fr", "nds", "li", "fy", "gos", "id", "zea", "rif-Latn", "tr"],
"no": ["nb", "nn", "se"],
"np": ["ne", "mai", "bho", "new", "jml", "en", "dty", "awa", "thl", "bap", "tdg", "thr", "lif", "mgp", "thq", "mrd", "bfy", "xsr", "rjs", "taj", "hi", "gvr", "bo", "tkt", "tdh", "bn", "unr-Deva", "lep"],
"nr": ["en", "na"],
"nu": ["en", "niu"],
"nz": ["en", "mi"],
"om": ["ar", "bal", "fa"],
"pa": ["es", "en", "zh-Hant"],
"pe": ["es", "qu", "ay"],
"pf": ["fr", "ty", "zh-Hant"],
"pg": ["tpi", "en", "ho"],
"ph": ["en", "fil", "es", "ceb", "ilo", "hil", "bik", "war", "bhk", "pam", "pag", "mdh", "tsg", "zh-Hant", "cps", "krj", "bto", "hnn", "tbw", "bku"],
"pk": ["ur", "pa-Arab", "en", "lah", "ps", "sd", "skr", "bal", "brh", "hno", "fa", "bgn", "hnd", "tg-Arab", "gju", "bft", "kvx", "khw", "mvy", "gjk", "kxp", "ks", "btv"],
"pl": ["pl", "en", "de", "ru", "szl", "be", "uk", "csb", "sli", "lt"],
"pm": ["fr", "en"],
"pn": ["en"],
"pr": ["es", "en"],
"ps": ["ar"],
"pt": ["pt", "en", "fr", "es", "gl"],
"pw": ["pau", "en"],
"py": ["gn", "es", "de"],
"qa": ["ar", "fa", "ml"],
"re": ["fr", "rcf", "ta"],
"ro": ["ro", "en", "fr", "es", "hu", "de", "tr", "sr-Latn", "bg", "el", "pl"],
"rs": ["sr", "sr-Latn", "sq", "hu", "ro", "hr", "sk", "uk"],
"ru": ["ru", "tt", "ba", "cv", "hy", "ce", "av", "udm", "chm", "os", "sah", "kbd", "myv", "dar", "bua", "mdf", "kum", "kv", "lez", "krc", "inh", "tyv", "az-Cyrl", "ady", "krl", "lbe", "koi", "mrj", "alt", "fi", "sr-Latn", "vep", "mn", "izh", "cu", "vot"],
"rw": ["rw", "en", "fr"],
"sa": ["ar", "ars"],
"sb": ["en", "rug"],
"sc": ["crs", "fr", "en"],
"sd": ["ar", "en", "bej", "fvr", "ha-Arab", "mls", "fia", "zag"],
"se": ["sv", "en", "fi", "fit", "se", "rmu", "yi", "smj", "sma", "ia"],
"sg": ["en", "zh", "ms", "ta", "ml", "pa"],
"sh": ["en"],
"si": ["sl", "hr", "en", "de", "hu", "it"],
"sj": ["nb", "ru"],
"sk": ["sk", "cs", "en", "de", "hu", "uk", "pl"],
"sl": ["kri", "en", "men", "tem", "ff", "ff-Adlm"],
"sm": ["it", "eo"],
"sn": ["wo", "fr", "ff", "srr", "dyo", "sav", "mfv", "bjt", "snf", "knf", "bsc", "mey", "tnr", "ff-Adlm"],
"so": ["so", "ar", "sw", "om"],
"sr": ["nl", "srn", "zh-Hant"],
"ss": ["ar", "en", "nus"],
"st": ["pt"],
"sv": ["es"],
"sx": ["en", "es", "vic", "nl"],
"sy": ["ar", "ku", "fr", "hy", "syr"],
"sz": ["en", "ss", "zu", "ts"],
"ta": ["en"],
"tc": ["en"],
"td": ["fr", "ar"],
"tf": ["fr"],
"tg": ["fr", "ee", "ife"],
"th": ["th", "en", "tts", "nod", "sou", "mfa", "zh-Hant", "kxm", "kdt", "mnw", "shn", "lcp", "lwl"],
"tj": ["tg", "ru", "fa", "ar"],
"tk": ["en", "tkl"],
"tl": ["pt", "tet"],
"tm": ["tk", "ru", "uz", "ku"],
"tn": ["aeb", "ar", "fr"],
"to": ["to", "en"],
"tr": ["tr", "en", "ku", "zza", "kbd", "az", "az-Arab", "ar", "bgx", "bg", "ady", "kiu", "hy", "ka", "lzz", "sr-Latn", "sq", "ab", "el", "tru", "uz", "ky-Latn", "kk"],
"tt": ["en", "es"],
"tv": ["tvl", "en"],
"tw": ["zh-Hant", "trv"],
"tz": ["sw", "en", "suk", "nym", "kde", "bez", "ksb", "mas", "mgy", "asa", "lag", "jmc", "rof", "vun", "rwk", "sbp"],
"ua": ["uk", "ru", "pl", "yi", "rue", "be", "crh", "ro", "bg", "tr", "hu", "el"],
"ug": ["sw", "lg", "nyn", "cgg", "xog", "en", "teo", "laj", "ach", "myx", "rw", "ttj", "hi"],
"um": ["en"],
"us": ["en", "es", "zh-Hant", "fr", "de", "fil", "it", "vi", "ko", "ru", "nv", "yi", "pdc", "haw", "frc", "chr", "esu", "dak", "cho", "lkt", "ik", "mus", "cic", "osa"],
"uy": ["es"],
"uz": ["uz", "uz-Cyrl", "ru", "kaa", "tr"],
"va": ["it", "la"],
"vc": ["en"],
"ve": ["es"],
"vg": ["en"],
"vi": ["en"],
"vn": ["vi", "zh-Hant", "cjm"],
"vu": ["bi", "en", "fr"],
"wf": ["wls", "fr", "fud"],
"ws": ["sm", "en"],
"xk": ["sq", "aln", "sr", "sr-Latn"],
"ye": ["ar", "en"],
"yt": ["swb", "fr", "buc", "sw"],
"za": ["en", "zu", "xh", "af", "nso", "tn", "st", "ts", "ss", "ve", "hi", "nr", "sw"],
"zm": ["bem", "en", "ny", "loz"],
"zw": ["sn", "en", "nd", "mxc", "ndc", "kck", "ny", "ve", "tn"]
}
}
+258
View File
@@ -0,0 +1,258 @@
{
"ac": ["en"],
"ad": ["ca", "es", "fr"],
"ae": ["ar", "en", "ml", "ps", "bal", "fa"],
"af": ["fa", "ps", "haz", "uz-Arab", "tk", "prd", "bal", "bgn", "ug", "kk-Arab"],
"ag": ["en", "pt"],
"ai": ["en"],
"al": ["sq", "el", "mk"],
"am": ["hy", "ku", "az"],
"ao": ["pt", "umb", "kmb", "ln"],
"aq": ["und"],
"ar": ["es", "en", "cy", "gn"],
"as": ["sm", "en"],
"at": ["de", "bar", "en", "fr", "it", "hr", "sl", "hu"],
"au": ["en", "zh-Hant", "it", "wbp"],
"aw": ["nl", "pap", "en"],
"ax": ["sv"],
"az": ["az", "az-Cyrl", "tly", "ku", "ttt", "tkr"],
"ba": ["bs", "bs-Cyrl", "en", "hr", "sr", "sr-Latn"],
"bb": ["en"],
"bd": ["bn", "en", "rkt", "syl", "ccp", "my", "grt", "mro", "mni"],
"be": ["en", "nl", "fr", "de", "vls", "wa"],
"bf": ["mos", "dyu", "fr", "ff", "ff-Adlm"],
"bg": ["bg", "en", "ru", "tr", "de"],
"bh": ["ar", "ml"],
"bi": ["rn", "fr", "sw", "en"],
"bj": ["fr", "fon", "yo"],
"bl": ["fr"],
"bm": ["en"],
"bn": ["ms", "zh-Hant", "ms-Arab", "en"],
"bo": ["es", "qu", "ay", "gn", "aro"],
"bq": ["pap", "nl"],
"br": ["pt", "en", "de", "it", "ja", "es", "ko", "kgp", "gub", "yrl", "xav"],
"bs": ["en"],
"bt": ["dz", "ne", "tsj", "en", "lep"],
"bv": ["und"],
"bw": ["en", "tn", "af"],
"by": ["be", "ru"],
"bz": ["en", "es"],
"ca": ["en", "fr", "it", "de", "pdt", "cr", "crk", "yi", "iu", "iu-Latn", "moe", "crj", "atj", "crl", "csw", "crm", "ikt", "moh", "dgr", "den", "scs", "nsk", "chp", "gwi"],
"cc": ["ms-Arab", "en"],
"cd": ["sw", "lua", "fr", "ln", "lu", "kg", "lol", "rw"],
"cf": ["fr", "sg", "ln"],
"cg": ["fr", "ln"],
"ch": ["de", "gsw", "en", "fr", "it", "lmo", "pt", "rm", "rmo", "wae"],
"ci": ["fr", "bci", "sef", "dnj", "kfo", "bqv"],
"ck": ["en"],
"cl": ["es", "en", "arn"],
"cm": ["fr", "en", "bum", "ff", "ewo", "ybb", "bbj", "nnh", "bkm", "bas", "bax", "byv", "mua", "maf", "bfd", "bss", "kkj", "dua", "mgo", "ar", "jgo", "ksf", "agq", "ha-Arab", "nmg", "yav", "ff-Adlm"],
"cn": ["zh", "wuu", "yue-Hans", "hsn", "hak", "nan", "gan", "ii", "ug", "za", "mn-Mong", "bo", "ko", "kk-Arab", "lis", "ky-Arab", "nxq", "khb", "tdd", "lcp", "en", "ru", "vi", "uz-Cyrl", "lzh"],
"co": ["es", "guc"],
"cp": ["und"],
"cr": ["es"],
"cu": ["es"],
"cv": ["kea", "pt"],
"cw": ["pap", "nl", "es"],
"cx": ["en"],
"cy": ["el", "en", "tr", "fr", "hy", "ar"],
"cz": ["cs", "en", "sk", "de", "pl"],
"de": ["de", "en", "fr", "bar", "nds", "nl", "it", "es", "ru", "vmf", "tr", "gsw", "da", "swg", "hr", "ku", "el", "ksh", "pl", "hsb", "frr", "dsb", "frs", "stq", "pfl"],
"dg": ["en"],
"dj": ["aa", "so", "ar", "fr"],
"dk": ["da", "en", "de", "sv", "fo", "kl", "jut"],
"dm": ["en"],
"do": ["es", "en"],
"dz": ["arq", "ar", "fr", "kab", "en"],
"ea": ["es"],
"ec": ["es", "qu", "qug"],
"ee": ["et", "ru", "en", "fi", "vro"],
"eg": ["ar", "arz", "en", "el"],
"eh": ["ar"],
"er": ["ti", "en", "tig", "ar", "aa", "ssy", "byn"],
"es": ["es", "en", "ca", "gl", "eu", "ast", "ext", "an"],
"et": ["en", "am", "om", "so", "ti", "sid", "wal", "aa"],
"fi": ["fi", "en", "sv", "de", "ru", "et", "rmf", "se", "smn", "sms"],
"fj": ["en", "hi", "hif", "fj", "rtm"],
"fk": ["en"],
"fm": ["en", "chk", "pon", "kos", "yap", "uli"],
"fo": ["fo"],
"fr": ["fr", "en", "es", "de", "oc", "it", "pt", "pcd", "gsw", "br", "co", "ca", "eu", "nl", "frp", "ia"],
"ga": ["fr", "puu"],
"gb": ["en", "fr", "de", "sco", "pa", "cy", "bn", "zh-Hant", "syl", "el", "it", "ks", "gd", "yi", "ml", "ga", "kw"],
"gd": ["en"],
"ge": ["ka", "xmf", "ru", "hy", "ab", "os", "ku"],
"gf": ["fr", "gcr", "zh-Hant"],
"gg": ["en"],
"gh": ["ak", "en", "ee", "abr", "gur", "ada", "gaa", "nzi", "ha", "saf", "ff", "ff-Adlm"],
"gi": ["en", "es"],
"gl": ["kl", "da"],
"gm": ["en", "man", "ff", "ff-Adlm"],
"gn": ["fr", "ff", "man-Nkoo", "sus", "nqo", "kpe", "ff-Adlm"],
"gp": ["fr"],
"gq": ["es", "fan", "fr", "bvb", "pt"],
"gr": ["el", "en", "fr", "de", "pnt", "mk", "tr", "bg", "sq", "tsd"],
"gs": ["und"],
"gt": ["es", "quc"],
"gu": ["en", "ch"],
"gw": ["pt", "knf", "ff", "ff-Adlm"],
"gy": ["en"],
"hk": ["zh-Hant", "yue", "en", "zh"],
"hm": ["und"],
"hn": ["es", "en"],
"hr": ["hr", "en", "it"],
"ht": ["ht", "fr"],
"hu": ["hu", "en", "de", "fr", "ro", "hr", "sk", "sl"],
"ic": ["es"],
"id": ["id", "jv", "su", "mad", "ms-Arab", "min", "bew", "ban", "bug", "bjn", "ace", "sas", "bbc", "zh-Hant", "mak", "ljp", "rej", "gor", "nij", "kge", "aoz", "kvr", "lbw", "gay", "rob", "mdr", "sxn", "sly", "mwv"],
"ie": ["en", "ga", "fr"],
"il": ["he", "en", "ar", "ru", "ro", "yi", "pl", "lad", "hu", "am", "ti", "ml"],
"im": ["en", "gv"],
"in": ["hi", "en", "bn", "te", "mr", "ta", "ur", "gu", "kn", "ml", "or", "pa", "bho", "awa", "as", "bgc", "mag", "mai", "mwr", "hne", "dcc", "bjj", "ne", "sat", "wtm", "rkt", "ks", "kok", "gom", "swv", "gbm", "lmn", "sd", "gon", "kfy", "doi", "kru", "sck", "wbq", "xnr", "khn", "tcy", "wbr", "brx", "noe", "bhb", "mni", "raj", "hoc", "mtr", "unr", "bhi", "hoj", "kha", "kfr", "grt", "unx", "bfy", "srx", "saz", "ccp", "sd-Deva", "bfq", "njo", "ria", "bo", "bpy", "bft", "bra", "lep", "btv", "lif", "lah", "sa", "kht", "dv", "dz"],
"io": ["en"],
"iq": ["ar", "en", "ckb", "az-Arab", "fa", "lrc", "syr"],
"ir": ["fa", "az-Arab", "mzn", "glk", "ckb", "sdh", "tk", "lrc", "ar", "bal", "rmt", "bqi", "luz", "lki", "bgn", "prd", "hy", "ps", "ka", "gbz", "kk-Arab"],
"is": ["is", "da"],
"it": ["it", "en", "fr", "sc", "de", "vec", "nap", "lij", "scn", "sdc", "sl", "fur", "egl", "ca", "el", "lmo", "pms", "hr", "rgn"],
"je": ["en"],
"jm": ["en", "jam"],
"jo": ["ar", "en"],
"jp": ["ja", "ryu", "ko"],
"ke": ["sw", "en", "ki", "luy", "luo", "kam", "kln", "guz", "mer", "mas", "ebu", "so", "dav", "teo", "pko", "om", "saq", "ar", "pa", "gu"],
"kg": ["ky", "ru"],
"kh": ["km", "cja", "kdt"],
"ki": ["en", "gil"],
"km": ["ar", "fr", "zdj", "wni"],
"kn": ["en"],
"kp": ["ko"],
"kr": ["ko"],
"kw": ["ar"],
"ky": ["en"],
"kz": ["ru", "kk", "en", "de", "ug-Cyrl"],
"la": ["lo", "kjg", "kdt"],
"lb": ["ar", "en", "hy", "ku-Arab", "fr"],
"lc": ["en"],
"li": ["de", "gsw", "wae"],
"lk": ["si", "ta", "en"],
"lr": ["en", "kpe", "vai", "men", "ff", "ff-Adlm", "vai-Latn"],
"ls": ["st", "en", "zu", "ss", "xh"],
"lt": ["lt", "ru", "en", "de", "sgs"],
"lu": ["fr", "lb", "de", "en", "pt"],
"lv": ["lv", "en", "ru", "ltg"],
"ly": ["ar"],
"ma": ["ary", "ar", "zgh", "fr", "en", "tzm", "shi", "shi-Latn", "rif", "rif-Latn", "es"],
"mc": ["fr"],
"md": ["ro", "uk", "bg", "gag", "ru"],
"me": ["sr-Latn", "sq", "sr"],
"mf": ["fr"],
"mg": ["mg", "fr", "en"],
"mh": ["en", "mh"],
"mk": ["mk", "sq", "tr"],
"ml": ["bm", "fr", "ffm", "snk", "mwk", "ses", "tmh", "bm-Nkoo", "khq", "dtm", "kao", "ar", "bmq", "bze"],
"mm": ["my", "shn", "kac", "mnw", "kht"],
"mn": ["mn", "kk-Arab", "zh", "ru", "ug-Cyrl"],
"mo": ["zh-Hant", "pt", "zh", "en"],
"mp": ["en", "ch"],
"mq": ["fr"],
"mr": ["ar", "fr", "ff", "wo", "ff-Adlm"],
"ms": ["en"],
"mt": ["mt", "en", "it", "fr"],
"mu": ["mfe", "en", "bho", "ur", "fr", "ta"],
"mv": ["dv"],
"mw": ["en", "ny", "tum", "tog", "zu"],
"mx": ["es", "en", "yua", "nhe", "nhw", "maz", "nch", "sei"],
"my": ["ms", "en", "zh-Hant", "ta", "iba", "jv", "zmi", "dtp", "ml", "bug", "bjn"],
"mz": ["pt", "vmw", "ndc", "ts", "ngl", "seh", "mgh", "rng", "ny", "yao", "sw", "zu"],
"na": ["af", "kj", "ng", "naq", "hz", "en", "de", "tn"],
"nc": ["fr"],
"ne": ["ha", "fr", "dje", "fuq", "tmh", "ar", "twq", "ff", "ff-Adlm"],
"nf": ["en"],
"ng": ["en", "pcm", "ha", "ig", "yo", "fuv", "tiv", "efi", "ibb", "ha-Arab", "bin", "kaj", "kcg", "ar", "cch", "amo", "ff", "ff-Adlm"],
"ni": ["es"],
"nl": ["nl", "en", "de", "fr", "nds", "li", "fy", "gos", "id", "zea", "rif-Latn", "tr"],
"no": ["nb", "nn", "se"],
"np": ["ne", "mai", "bho", "new", "jml", "en", "dty", "awa", "thl", "bap", "tdg", "thr", "lif", "mgp", "thq", "mrd", "bfy", "xsr", "rjs", "taj", "hi", "gvr", "bo", "tkt", "tdh", "bn", "unr-Deva", "lep"],
"nr": ["en", "na"],
"nu": ["en", "niu"],
"nz": ["en", "mi"],
"om": ["ar", "bal", "fa"],
"pa": ["es", "en", "zh-Hant"],
"pe": ["es", "qu", "ay"],
"pf": ["fr", "ty", "zh-Hant"],
"pg": ["tpi", "en", "ho"],
"ph": ["en", "fil", "es", "ceb", "ilo", "hil", "bik", "war", "bhk", "pam", "pag", "mdh", "tsg", "zh-Hant", "cps", "krj", "bto", "hnn", "tbw", "bku"],
"pk": ["ur", "pa-Arab", "en", "lah", "ps", "sd", "skr", "bal", "brh", "hno", "fa", "bgn", "hnd", "tg-Arab", "gju", "bft", "kvx", "khw", "mvy", "gjk", "kxp", "ks", "btv"],
"pl": ["pl", "en", "de", "ru", "szl", "be", "uk", "csb", "sli", "lt"],
"pm": ["fr", "en"],
"pn": ["en"],
"pr": ["es", "en"],
"ps": ["ar"],
"pt": ["pt", "en", "fr", "es", "gl"],
"pw": ["pau", "en"],
"py": ["gn", "es", "de"],
"qa": ["ar", "fa", "ml"],
"re": ["fr", "rcf", "ta"],
"ro": ["ro", "en", "fr", "es", "hu", "de", "tr", "sr-Latn", "bg", "el", "pl"],
"rs": ["sr", "sr-Latn", "sq", "hu", "ro", "hr", "sk", "uk"],
"ru": ["ru", "tt", "ba", "cv", "hy", "ce", "av", "udm", "chm", "os", "sah", "kbd", "myv", "dar", "bua", "mdf", "kum", "kv", "lez", "krc", "inh", "tyv", "az-Cyrl", "ady", "krl", "lbe", "koi", "mrj", "alt", "fi", "sr-Latn", "vep", "mn", "izh", "cu", "vot"],
"rw": ["rw", "en", "fr"],
"sa": ["ar", "ars"],
"sb": ["en", "rug"],
"sc": ["crs", "fr", "en"],
"sd": ["ar", "en", "bej", "fvr", "ha-Arab", "mls", "fia", "zag"],
"se": ["sv", "en", "fi", "fit", "se", "rmu", "yi", "smj", "sma", "ia"],
"sg": ["en", "zh", "ms", "ta", "ml", "pa"],
"sh": ["en"],
"si": ["sl", "hr", "en", "de", "hu", "it"],
"sj": ["nb", "ru"],
"sk": ["sk", "cs", "en", "de", "hu", "uk", "pl"],
"sl": ["kri", "en", "men", "tem", "ff", "ff-Adlm"],
"sm": ["it", "eo"],
"sn": ["wo", "fr", "ff", "srr", "dyo", "sav", "mfv", "bjt", "snf", "knf", "bsc", "mey", "tnr", "ff-Adlm"],
"so": ["so", "ar", "sw", "om"],
"sr": ["nl", "srn", "zh-Hant"],
"ss": ["ar", "en", "nus"],
"st": ["pt"],
"sv": ["es"],
"sx": ["en", "es", "vic", "nl"],
"sy": ["ar", "ku", "fr", "hy", "syr"],
"sz": ["en", "ss", "zu", "ts"],
"ta": ["en"],
"tc": ["en"],
"td": ["fr", "ar"],
"tf": ["fr"],
"tg": ["fr", "ee", "ife"],
"th": ["th", "en", "tts", "nod", "sou", "mfa", "zh-Hant", "kxm", "kdt", "mnw", "shn", "lcp", "lwl"],
"tj": ["tg", "ru", "fa", "ar"],
"tk": ["en", "tkl"],
"tl": ["pt", "tet"],
"tm": ["tk", "ru", "uz", "ku"],
"tn": ["aeb", "ar", "fr"],
"to": ["to", "en"],
"tr": ["tr", "en", "ku", "zza", "kbd", "az", "az-Arab", "ar", "bgx", "bg", "ady", "kiu", "hy", "ka", "lzz", "sr-Latn", "sq", "ab", "el", "tru", "uz", "ky-Latn", "kk"],
"tt": ["en", "es"],
"tv": ["tvl", "en"],
"tw": ["zh-Hant", "trv"],
"tz": ["sw", "en", "suk", "nym", "kde", "bez", "ksb", "mas", "mgy", "asa", "lag", "jmc", "rof", "vun", "rwk", "sbp"],
"ua": ["uk", "ru", "pl", "yi", "rue", "be", "crh", "ro", "bg", "tr", "hu", "el"],
"ug": ["sw", "lg", "nyn", "cgg", "xog", "en", "teo", "laj", "ach", "myx", "rw", "ttj", "hi"],
"um": ["en"],
"us": ["en", "es", "zh-Hant", "fr", "de", "fil", "it", "vi", "ko", "ru", "nv", "yi", "pdc", "haw", "frc", "chr", "esu", "dak", "cho", "lkt", "ik", "mus", "cic", "osa"],
"uy": ["es"],
"uz": ["uz", "uz-Cyrl", "ru", "kaa", "tr"],
"va": ["it", "la"],
"vc": ["en"],
"ve": ["es"],
"vg": ["en"],
"vi": ["en"],
"vn": ["vi", "zh-Hant", "cjm"],
"vu": ["bi", "en", "fr"],
"wf": ["wls", "fr", "fud"],
"ws": ["sm", "en"],
"xk": ["sq", "aln", "sr", "sr-Latn"],
"ye": ["ar", "en"],
"yt": ["swb", "fr", "buc", "sw"],
"za": ["en", "zu", "xh", "af", "nso", "tn", "st", "ts", "ss", "ve", "hi", "nr", "sw"],
"zm": ["bem", "en", "ny", "loz"],
"zw": ["sn", "en", "nd", "mxc", "ndc", "kck", "ny", "ve", "tn"]
}
+22 -23
View File
@@ -1,30 +1,29 @@
import { dataDiscarded } from '../../data';
export function actionDiscardTags(difference) {
export function actionDiscardTags(difference, discardTags) {
discardTags = discardTags || {};
return function(graph) {
function discardTags(entity) {
var tags = {};
var keys = Object.keys(entity.tags);
var discarded = false;
return (graph) => {
difference.modified().forEach(checkTags);
difference.created().forEach(checkTags);
return graph;
for (var i = 0; i < keys.length; i++) {
var k = keys[i];
if (dataDiscarded[k] || !entity.tags[k]) {
discarded = true;
} else {
tags[k] = entity.tags[k];
}
}
function checkTags(entity) {
const keys = Object.keys(entity.tags);
let didDiscard = false;
let tags = {};
if (discarded) {
graph = graph.replace(entity.update({ tags: tags }));
}
for (let i = 0; i < keys.length; i++) {
const k = keys[i];
if (discardTags[k] || !entity.tags[k]) {
didDiscard = true;
} else {
tags[k] = entity.tags[k];
}
}
if (didDiscard) {
graph = graph.replace(entity.update({ tags: tags }));
}
}
difference.modified().forEach(discardTags);
difference.created().forEach(discardTags);
return graph;
};
};
}
+3 -3
View File
@@ -4,11 +4,11 @@ import { diff3Merge } from 'node-diff3';
import { t } from '../util/locale';
import { actionDeleteMultiple } from './delete_multiple';
import { osmEntity } from '../osm';
import { dataDiscarded } from '../../data';
import { utilArrayUnion, utilArrayUniq } from '../util';
export function actionMergeRemoteChanges(id, localGraph, remoteGraph, formatUser) {
export function actionMergeRemoteChanges(id, localGraph, remoteGraph, discardTags, formatUser) {
discardTags = discardTags || {};
var _option = 'safe'; // 'safe', 'force_local', 'force_remote'
var _conflicts = [];
@@ -167,7 +167,7 @@ export function actionMergeRemoteChanges(id, localGraph, remoteGraph, formatUser
var a = target.tags || {};
var b = remote.tags || {};
var keys = utilArrayUnion(utilArrayUnion(Object.keys(o), Object.keys(a)), Object.keys(b))
.filter(function(k) { return !dataDiscarded[k]; });
.filter(function(k) { return !discardTags[k]; });
var tags = Object.assign({}, a); // shallow copy
var changed = false;
+10 -1
View File
@@ -9,7 +9,16 @@ export function coreData(context) {
let _module = {};
let _inflight = {};
let _fileMap = {
'intro_graph': 'data/intro_graph.json'
'address_formats': 'data/address_formats.min.json',
'deprecated': 'data/deprecated.min.json',
'discarded': 'data/discarded.min.json',
'imagery': 'data/imagery.min.json',
'intro_graph': 'data/intro_graph.min.json',
'languages': 'data/languages.min.json',
'locales': 'data/locales.min.json',
'phone_formats': 'data/phone_formats.min.json',
'shortcuts': 'data/shortcuts.min.json',
'territory_languages': 'data/territory_languages.min.json'
};
+10 -5
View File
@@ -43,6 +43,11 @@ export function modeSave(context) {
var _origChanges;
var _location;
var _discardTags = {};
context.data().get('discarded')
.then(function(d) { _discardTags = d; })
.catch(function() { /* ignore */ });
function cancel(selectedID) {
if (selectedID) {
@@ -92,7 +97,7 @@ export function modeSave(context) {
_errors = [];
// Store original changes, in case user wants to download them as an .osc file
_origChanges = history.changes(actionDiscardTags(history.difference()));
_origChanges = history.changes(actionDiscardTags(history.difference(), _discardTags));
// First time, `history.perform` a no-op action.
// Any conflict resolutions will be done as `history.replace`
@@ -241,15 +246,15 @@ export function modeSave(context) {
if (sameVersions(local, remote)) return;
var action = actionMergeRemoteChanges;
var merge = action(id, localGraph, remoteGraph, formatUser);
var merge = action(id, localGraph, remoteGraph, _discardTags, formatUser);
history.replace(merge);
var mergeConflicts = merge.conflicts();
if (!mergeConflicts.length) return; // merged safely
var forceLocal = action(id, localGraph, remoteGraph).withOption('force_local');
var forceRemote = action(id, localGraph, remoteGraph).withOption('force_remote');
var forceLocal = action(id, localGraph, remoteGraph, _discardTags).withOption('force_local');
var forceRemote = action(id, localGraph, remoteGraph, _discardTags).withOption('force_remote');
var keepMine = t('save.conflict.' + (remote.visible ? 'keep_local' : 'restore'));
var keepTheirs = t('save.conflict.' + (remote.visible ? 'keep_remote' : 'delete'));
@@ -285,7 +290,7 @@ export function modeSave(context) {
} else {
var history = context.history();
var changes = history.changes(actionDiscardTags(history.difference()));
var changes = history.changes(actionDiscardTags(history.difference(), _discardTags));
if (changes.modified.length || changes.created.length || changes.deleted.length) {
loadLocation(); // so it is ready when we display the save screen
osm.putChangeset(changeset, changes, uploadCallback);
+2 -3
View File
@@ -1,6 +1,5 @@
import { debug } from '../index';
import { osmIsInterestingTag } from './tags';
import { dataDeprecated } from '../../data/index';
import { utilArrayUnion } from '../util';
@@ -52,7 +51,7 @@ osmEntity.key = function(entity) {
var _deprecatedTagValuesByKey;
osmEntity.deprecatedTagValuesByKey = function() {
osmEntity.deprecatedTagValuesByKey = function(dataDeprecated) {
if (!_deprecatedTagValuesByKey) {
_deprecatedTagValuesByKey = {};
dataDeprecated.forEach(function(d) {
@@ -187,7 +186,7 @@ osmEntity.prototype = {
return true;
},
deprecatedTags: function() {
deprecatedTags: function(dataDeprecated) {
var tags = this.tags;
// if there are no tags, none can be deprecated
+8 -3
View File
@@ -18,6 +18,11 @@ export function uiCommitChanges(context) {
var detected = utilDetect();
var _entityID;
var _discardTags = {};
context.data().get('discarded')
.then(function(d) { _discardTags = d; })
.catch(function() { /* ignore */ });
function commitChanges(selection) {
var history = context.history();
@@ -96,7 +101,7 @@ export function uiCommitChanges(context) {
// Download changeset link
var changeset = new osmChangeset().update({ id: undefined });
var changes = history.changes(actionDiscardTags(history.difference()));
var changes = history.changes(actionDiscardTags(history.difference(), _discardTags));
delete changeset.id; // Export without chnageset_id
@@ -158,9 +163,9 @@ export function uiCommitChanges(context) {
}
commitChanges.entityID = function(_) {
commitChanges.entityID = function(val) {
if (!arguments.length) return _entityID;
_entityID = _;
_entityID = val;
return commitChanges;
};
+15 -5
View File
@@ -2,7 +2,6 @@ import { dispatch as d3_dispatch } from 'd3-dispatch';
import { select as d3_select } from 'd3-selection';
import * as countryCoder from '@ideditor/country-coder';
import { dataAddressFormats } from '../../../data';
import { geoExtent, geoChooseEdge, geoSphericalDistance } from '../../geo';
import { uiCombobox } from '../combobox';
import { utilArrayUniqBy, utilGetSetValue, utilNoAuto, utilRebind } from '../../util';
@@ -12,10 +11,21 @@ import { t } from '../../util/locale';
export function uiFieldAddress(field, context) {
var dispatch = d3_dispatch('init', 'change');
var wrap = d3_select(null);
var addrField = context.presets().field('address'); // needed for placeholder strings
var _isInitialized = false;
var _entity;
// needed for placeholder strings
var addrField = context.presets().field('address');
var _addressFormats = [{
format: [
['housenumber', 'street'],
['city', 'postcode']
]
}];
context.data().get('address_formats')
.then(function(d) { _addressFormats = d; })
.catch(function() { /* ignore */ });
function getNearStreets() {
var extent = _entity.extent(context.graph());
@@ -113,8 +123,8 @@ export function uiFieldAddress(field, context) {
countryCode = countryCode.toLowerCase();
var addressFormat;
for (var i = 0; i < dataAddressFormats.length; i++) {
var format = dataAddressFormats[i];
for (var i = 0; i < _addressFormats.length; i++) {
var format = _addressFormats[i];
if (!format.countryCodes) {
addressFormat = format; // choose the default format, keep going
} else if (format.countryCodes.indexOf(countryCode) !== -1) {
+8 -1
View File
@@ -38,6 +38,13 @@ export function uiFieldCombo(field, context) {
var _entity;
var _countryCode;
// initialize deprecated tags array
var _dataDeprecated = [];
context.data().get('deprecated')
.then(function(d) { _dataDeprecated = d; })
.catch(function() { /* ignore */ });
// ensure multiCombo field.key ends with a ':'
if (isMulti && /[^:]$/.test(field.key)) {
field.key += ':';
@@ -193,7 +200,7 @@ export function uiFieldCombo(field, context) {
return !d.count || d.count > 10;
});
var deprecatedValues = osmEntity.deprecatedTagValuesByKey()[field.key];
var deprecatedValues = osmEntity.deprecatedTagValuesByKey(_dataDeprecated)[field.key];
if (deprecatedValues) {
// don't suggest deprecated tag values
data = data.filter(function(d) {
+8 -2
View File
@@ -3,7 +3,6 @@ import { select as d3_select, event as d3_event } from 'd3-selection';
import * as countryCoder from '@ideditor/country-coder';
import { t, textDirection } from '../../util/locale';
import { dataPhoneFormats } from '../../../data';
import { utilGetSetValue, utilNoAuto, utilRebind } from '../../util';
import { svgIcon } from '../../svg/icon';
@@ -21,6 +20,13 @@ export function uiFieldText(field, context) {
var input = d3_select(null);
var outlinkButton = d3_select(null);
var _entity;
var _phoneFormats = {};
if (field.type === 'tel') {
context.data().get('phone_formats')
.then(function(d) { _phoneFormats = d; })
.catch(function() { /* ignore */ });
}
function i(selection) {
var preset = _entity && context.presets().match(_entity, context.graph());
@@ -61,7 +67,7 @@ export function uiFieldText(field, context) {
if (field.type === 'tel' && _entity) {
var center = _entity.extent(context.graph()).center();
var countryCode = countryCoder.iso1A2Code(center);
var format = countryCode && dataPhoneFormats[countryCode.toLowerCase()];
var format = countryCode && _phoneFormats[countryCode.toLowerCase()];
if (format) {
wrap.selectAll('#' + fieldID)
.attr('placeholder', format);
+42 -34
View File
@@ -3,8 +3,6 @@ import { select as d3_select, event as d3_event } from 'd3-selection';
import * as countryCoder from '@ideditor/country-coder';
import { currentLocale, t, languageName } from '../../util/locale';
import { dataLanguages } from '../../../data';
import { dataTerritoryLanguages } from '../../../data';
import { services } from '../../services';
import { svgIcon } from '../../svg';
import { tooltip } from '../../util/tooltip';
@@ -12,29 +10,7 @@ import { uiCombobox } from '../combobox';
import { utilDetect } from '../../util/detect';
import { utilArrayUniq, utilEditDistance, utilGetSetValue, utilNoAuto, utilRebind } from '../../util';
var languagesArray = [];
function loadLanguagesArray() {
if (languagesArray.length !== 0) return;
// some conversion is needed to ensure correct OSM tags are used
var replacements = {
sr: 'sr-Cyrl', // in OSM, `sr` implies Cyrillic
'sr-Cyrl': false // `sr-Cyrl` isn't used in OSM
};
for (var code in dataLanguages) {
if (replacements[code] === false) continue;
var metaCode = code;
if (replacements[code]) metaCode = replacements[code];
languagesArray.push({
localName: languageName(metaCode, { localOnly: true }),
nativeName: dataLanguages[metaCode].nativeName,
code: code,
label: languageName(metaCode)
});
}
}
var _languagesArray = [];
export function uiFieldLocalized(field, context) {
@@ -44,6 +20,16 @@ export function uiFieldLocalized(field, context) {
var localizedInputs = d3_select(null);
var _countryCode;
context.data().get('languages')
.then(loadLanguagesArray)
.catch(function() { /* ignore */ });
var _territoryLanguages = {};
context.data().get('territory_languages')
.then(function(d) { _territoryLanguages = d; })
.catch(function() { /* ignore */ });
var allSuggestions = context.presets().collection.filter(function(p) {
return p.suggestion === true;
});
@@ -66,6 +52,30 @@ export function uiFieldLocalized(field, context) {
var _entity;
function loadLanguagesArray(dataLanguages) {
if (_languagesArray.length !== 0) return;
// some conversion is needed to ensure correct OSM tags are used
var replacements = {
sr: 'sr-Cyrl', // in OSM, `sr` implies Cyrillic
'sr-Cyrl': false // `sr-Cyrl` isn't used in OSM
};
for (var code in dataLanguages) {
if (replacements[code] === false) continue;
var metaCode = code;
if (replacements[code]) metaCode = replacements[code];
_languagesArray.push({
localName: languageName(context, metaCode, { localOnly: true }),
nativeName: dataLanguages[metaCode].nativeName,
code: code,
label: languageName(context, metaCode)
});
}
}
function calcLocked() {
if (!_entity) { // the original entity
field.locked(false);
@@ -91,6 +101,7 @@ export function uiFieldLocalized(field, context) {
field.locked(isLocked);
}
// update _multilingual, maintaining the existing order
function calcMultilingual(tags) {
var existingLangsOrdered = _multilingual.map(function(item) {
@@ -119,9 +130,6 @@ export function uiFieldLocalized(field, context) {
function localized(selection) {
// load if needed
loadLanguagesArray();
_selection = selection;
calcLocked();
var isLocked = field.locked();
@@ -376,7 +384,7 @@ export function uiFieldLocalized(field, context) {
function changeLang(d) {
var lang = utilGetSetValue(d3_select(this));
var t = {};
var language = languagesArray.find(function(d) {
var language = _languagesArray.find(function(d) {
return (d.localName && d.localName.toLowerCase() === lang.toLowerCase()) ||
d.label.toLowerCase() === lang.toLowerCase() ||
(d.nativeName && d.nativeName.toLowerCase() === lang.toLowerCase());
@@ -418,18 +426,18 @@ export function uiFieldLocalized(field, context) {
// show the user's language first
var langCodes = [currentLocale, currentLocale.split('-')[0]];
if (_countryCode && dataTerritoryLanguages[_countryCode]) {
langCodes = langCodes.concat(dataTerritoryLanguages[_countryCode]);
if (_countryCode && _territoryLanguages[_countryCode]) {
langCodes = langCodes.concat(_territoryLanguages[_countryCode]);
}
var langItems = [];
langCodes.forEach(function(code) {
var langItem = languagesArray.find(function(item) {
var langItem = _languagesArray.find(function(item) {
return item.code === code;
});
if (langItem) langItems.push(langItem);
});
langItems = utilArrayUniq(langItems.concat(languagesArray));
langItems = utilArrayUniq(langItems.concat(_languagesArray));
cb(langItems.filter(function(d) {
return d.label.toLowerCase().indexOf(v) >= 0 ||
@@ -537,7 +545,7 @@ export function uiFieldLocalized(field, context) {
entries.order();
utilGetSetValue(entries.select('.localized-lang'), function(d) {
return languageName(d.lang);
return languageName(context, d.lang);
});
utilGetSetValue(entries.select('.localized-value'),
+2 -1
View File
@@ -56,7 +56,8 @@ export function uiIntro(context) {
}
}
selection.call(startIntro);
});
})
.catch(function() { /* ignore */ });
}
+10 -13
View File
@@ -1,10 +1,6 @@
import {
select as d3_select,
selectAll as d3_selectAll
} from 'd3-selection';
import { select as d3_select, selectAll as d3_selectAll } from 'd3-selection';
import { t } from '../util/locale';
import { dataShortcuts } from '../../data';
import { svgIcon } from '../svg/icon';
import { uiCmd } from './cmd';
import { uiModal } from './modal';
@@ -28,7 +24,7 @@ export function uiShortcuts(context) {
}
} else {
_modalSelection = uiModal(_selection);
shortcutsModal(_modalSelection);
_modalSelection.call(shortcutsModal);
}
});
@@ -37,20 +33,21 @@ export function uiShortcuts(context) {
_modalSelection.select('.modal')
.classed('modal-shortcuts', true);
var shortcutsModal = _modalSelection.select('.content');
var content = _modalSelection.select('.content');
shortcutsModal
content
.append('div')
.attr('class', 'modal-section')
.append('h3')
.text(t('shortcuts.title'));
shortcutsModal
.call(render);
context.data().get('shortcuts')
.then(function(data) { content.call(render, data); })
.catch(function() { /* ignore */ });
}
function render(selection) {
function render(selection, dataShortcuts) {
var wrapper = selection
.selectAll('.wrapper')
.data([0]);
@@ -80,7 +77,7 @@ export function uiShortcuts(context) {
.attr('class', 'tab')
.on('click', function (d, i) {
_activeTab = i;
render(selection);
render(selection, dataShortcuts);
});
tabsEnter
@@ -257,7 +254,7 @@ export function uiShortcuts(context) {
_selection = selection;
if (show) {
_modalSelection = uiModal(selection);
shortcutsModal(_modalSelection);
_modalSelection.call(shortcutsModal);
}
};
}
+1 -1
View File
@@ -279,7 +279,7 @@ export function uiSuccess(context) {
if (d.languageCodes && d.languageCodes.length) {
const languageList = d.languageCodes
.map(code => languageName(code))
.map(code => languageName(context, code))
.join(', ');
moreEnter
+15 -13
View File
@@ -1,6 +1,5 @@
import { dataLanguages } from '../../../data';
var translations = Object.create(null);
var _dataLanguages = {};
export var currentLocale = 'en';
export var textDirection = 'ltr';
@@ -73,7 +72,6 @@ export function t(s, o, loc) {
*
* @param {string} dir ltr or rtl
*/
export function setTextDirection(dir) {
textDirection = dir;
}
@@ -86,38 +84,42 @@ export function setScriptNames(obj) {
scriptNames = obj;
}
export function languageName(code, options) {
if (languageNames[code]) { // name in locale langauge
export function languageName(context, code, options) {
// Data access is async now, which makes this complicated.
// If _dataLanguages haven't been loaded yet, try to load them.
// Worst case, we fallback to the code until the file has been loaded.
if (!Object.keys(_dataLanguages).length) {
context.data().get('languages')
.then(function(d) { _dataLanguages = d; })
.catch(function() { /* ignore */ });
}
if (languageNames[code]) { // name in locale langauge
// e.g. German
return languageNames[code];
}
// sometimes we only want the local name
if (options && options.localOnly) return null;
var langInfo = dataLanguages[code];
var langInfo = _dataLanguages[code];
if (langInfo) {
if (langInfo.nativeName) { // name in native language
// e.g. Deutsch (de)
return t('translate.language_and_code', { language: langInfo.nativeName, code: code });
} else if (langInfo.base && langInfo.script) {
var base = langInfo.base; // the code of the langauge this is based on
if (languageNames[base]) { // base language name in locale langauge
var scriptCode = langInfo.script;
var script = scriptNames[scriptCode] || scriptCode;
// e.g. Serbian (Cyrillic)
return t('translate.language_and_code', { language: languageNames[base], code: script });
} else if (dataLanguages[base] && dataLanguages[base].nativeName) {
} else if (_dataLanguages[base] && _dataLanguages[base].nativeName) {
// e.g. српски (sr-Cyrl)
return t('translate.language_and_code', { language: dataLanguages[base].nativeName, code: code });
return t('translate.language_and_code', { language: _dataLanguages[base].nativeName, code: code });
}
}
}
+7 -1
View File
@@ -13,6 +13,12 @@ import { validationIssue, validationIssueFix } from '../core/validation';
export function validationOutdatedTags(context) {
var type = 'outdated_tags';
// initialize deprecated tags array
var _dataDeprecated = [];
context.data().get('deprecated')
.then(function(d) { _dataDeprecated = d; })
.catch(function() { /* ignore */ });
// initialize name-suggestion-index matcher
var nsiMatcher = matcher();
nsiMatcher.buildMatchIndex(brands.brands);
@@ -43,7 +49,7 @@ export function validationOutdatedTags(context) {
}
// upgrade tags..
var deprecatedTags = entity.deprecatedTags();
var deprecatedTags = entity.deprecatedTags(_dataDeprecated);
if (deprecatedTags.length) {
deprecatedTags.forEach(function(tag) {
graph = actionUpgradeTags(entity.id, tag.old, tag.replace)(graph);
+2 -2
View File
@@ -58,7 +58,7 @@ export function validationSuspiciousName() {
var entity = context.hasEntity(this.entityIds[0]);
if (!entity) return '';
var preset = utilPreset(entity, context);
var langName = langCode && languageName(langCode);
var langName = langCode && languageName(context, langCode);
return t('issues.generic_name.message' + (langName ? '_language' : ''),
{ feature: preset.name(), name: genericName, language: langName }
);
@@ -105,7 +105,7 @@ export function validationSuspiciousName() {
var entity = context.hasEntity(this.entityIds[0]);
if (!entity) return '';
var preset = utilPreset(entity, context);
var langName = langCode && languageName(langCode);
var langName = langCode && languageName(context, langCode);
return t('issues.incorrect_name.message' + (langName ? '_language' : ''),
{ feature: preset.name(), name: incorrectName, language: langName }
);
+36 -4
View File
@@ -11,7 +11,7 @@ const YAML = require('js-yaml');
const fieldSchema = require('../data/presets/schema/field.json');
const presetSchema = require('../data/presets/schema/preset.json');
const deprecated = require('../data/deprecated.json').dataDeprecated;
const deprecated = require('../data/deprecated.json');
// fontawesome icons
const fontawesome = require('@fortawesome/fontawesome-svg-core');
@@ -85,7 +85,7 @@ function buildData() {
'data/presets/presets.json',
'data/presets.yaml',
'data/taginfo.json',
'data/territory-languages.json',
'data/territory_languages.json',
'dist/locales/en.json',
'svg/fontawesome/*.svg',
]);
@@ -110,10 +110,26 @@ function buildData() {
writeFileProm('data/presets/presets.json', prettyStringify({ presets: presets }, { maxLength: 9999 }) ),
writeFileProm('data/presets.yaml', translationsToYAML(translations) ),
writeFileProm('data/taginfo.json', prettyStringify(taginfo, { maxLength: 9999 }) ),
writeFileProm('data/territory-languages.json', prettyStringify({ dataTerritoryLanguages: territoryLanguages }, { maxLength: 9999 }) ),
writeFileProm('data/territory_languages.json', prettyStringify(territoryLanguages, { maxLength: 9999 }) ),
writeEnJson(tstrings),
writeFaIcons(faIcons),
writeTnpIcons(tnpIcons)
writeTnpIcons(tnpIcons),
minifyJSON('data/presets/categories.json', 'dist/data/categories.min.json'),
minifyJSON('data/presets/fields.json', 'dist/data/fields.min.json'),
minifyJSON('data/presets/presets.json', 'dist/data/presets.min.json'),
minifyJSON('data/address_formats.json', 'dist/data/address_formats.min.json'),
minifyJSON('data/deprecated.json', 'dist/data/deprecated.min.json'),
minifyJSON('data/discarded.json', 'dist/data/discarded.min.json'),
minifyJSON('data/imagery.json', 'dist/data/imagery.min.json'),
minifyJSON('data/intro_graph.json', 'dist/data/intro_graph.min.json'),
minifyJSON('data/keepRight.json', 'dist/data/keepRight.min.json'),
minifyJSON('data/languages.json', 'dist/data/languages.min.json'),
minifyJSON('data/locales.json', 'dist/data/locales.min.json'),
minifyJSON('data/phone_formats.json', 'dist/data/phone_formats.min.json'),
minifyJSON('data/qa_errors.json', 'dist/data/qa_errors.min.json'),
minifyJSON('data/shortcuts.json', 'dist/data/shortcuts.min.json'),
minifyJSON('data/taginfo.json', 'dist/data/taginfo.min.json'),
minifyJSON('data/territory_languages.json', 'dist/data/territory_languages.min.json')
];
return _currBuild =
@@ -873,4 +889,20 @@ function readFileProm(path, options) {
}
function minifyJSON(inPath, outPath) {
return new Promise((resolve, reject) => {
fs.readFile(inPath, 'utf8', (err, data) => {
if (err) return reject(err);
const minified = JSON.stringify(JSON.parse(data));
fs.writeFile(outPath, minified, (err) => {
if (err) return reject(err);
resolve();
});
});
});
}
module.exports = buildData;
+12 -19
View File
@@ -9,7 +9,7 @@ const colors = require('colors/safe');
const resources = ['core', 'presets', 'imagery', 'community'];
const outdir = 'dist/locales/';
const apiroot = 'https://www.transifex.com/api/2';
const projectURL = `${apiroot}/project/id-editor/`;
const projectURL = `${apiroot}/project/id-editor`;
/*
@@ -22,21 +22,14 @@ const projectURL = `${apiroot}/project/id-editor/`;
* }
* */
const auth = JSON.parse(fs.readFileSync('../transifex.auth', 'utf8'));
// const sourceCore = YAML.load(fs.readFileSync('../data/core.yaml', 'utf8'));
// const sourcePresets = YAML.load(fs.readFileSync('../data/presets.yaml', 'utf8'));
// const sourceImagery = YAML.load(fs.readFileSync('../node_modules/editor-layer-index/i18n/en.yaml', 'utf8'));
// const sourceCommunity = YAML.load(fs.readFileSync('../node_modules/osm-community-index/i18n/en.yaml', 'utf8'));
const dataShortcuts = JSON.parse(fs.readFileSync('../data/shortcuts.json', 'utf8')).dataShortcuts;
const cldrMainDir = '../node_modules/cldr-localenames-full/main/';
const auth = JSON.parse(fs.readFileSync('./transifex.auth', 'utf8'));
const dataShortcuts = JSON.parse(fs.readFileSync('data/shortcuts.json', 'utf8'));
const cldrMainDir = 'node_modules/cldr-localenames-full/main/';
let referencedScripts = [];
const languageInfo = { dataLanguages: getLangNamesInNativeLang() };
fs.writeFileSync('data/languages.json', JSON.stringify(languageInfo, null, 4));
const languageInfo = getLangNamesInNativeLang();
fs.writeFileSync('data/languages.json', prettyStringify(languageInfo, { maxLength: 200 }));
let shortcuts = [];
dataShortcuts.forEach(tab => {
@@ -103,9 +96,9 @@ asyncMap(resources, getResource, (err, results) => {
(err) => {
if (!err) {
const keys = Object.keys(dataLocales).sort();
let sorted = {};
keys.forEach(k => sorted[k] = dataLocales[k]);
fs.writeFileSync('data/locales.json', prettyStringify({ dataLocales: sorted }, { maxLength: 99999 }));
let sortedLocales = {};
keys.forEach(k => sortedLocales[k] = dataLocales[k]);
fs.writeFileSync('data/locales.json', prettyStringify({ dataLocales: sortedLocales }, { maxLength: 99999 }));
}
}
);
@@ -113,7 +106,7 @@ asyncMap(resources, getResource, (err, results) => {
function getResource(resource, callback) {
let resourceURL = `${projectURL}resource/${resource}/`;
let resourceURL = `${projectURL}/resource/${resource}`;
getLanguages(resourceURL, (err, codes) => {
if (err) return callback(err);
@@ -195,8 +188,8 @@ function getLanguageInfo(code, callback) {
}
function getLanguages(resource, callback) {
let url = `${resource}?details`;
function getLanguages(resourceURL, callback) {
let url = `${resourceURL}?details`;
request.get(url, { auth: auth }, (err, resp, body) => {
if (err) return callback(err);
console.log(`${resp.statusCode}: ${url}`);
+6 -4
View File
@@ -1,9 +1,11 @@
describe('iD.actionDiscardTags', function() {
var discardTags = { created_by: true };
it('discards obsolete tags from modified entities', function() {
var way = iD.osmWay({ id: 'w1', tags: { created_by: 'Potlatch' } });
var base = iD.coreGraph([way]);
var head = base.replace(way.update({ tags: { created_by: 'Potlatch', foo: 'bar' } }));
var action = iD.actionDiscardTags(iD.coreDifference(base, head));
var action = iD.actionDiscardTags(iD.coreDifference(base, head), discardTags);
expect(action(head).entity(way.id).tags).to.eql({foo: 'bar'});
});
@@ -11,7 +13,7 @@ describe('iD.actionDiscardTags', function() {
var way = iD.osmWay({ tags: { created_by: 'Potlatch' } });
var base = iD.coreGraph();
var head = base.replace(way);
var action = iD.actionDiscardTags(iD.coreDifference(base, head));
var action = iD.actionDiscardTags(iD.coreDifference(base, head), discardTags);
expect(action(head).entity(way.id).tags).to.eql({});
});
@@ -19,7 +21,7 @@ describe('iD.actionDiscardTags', function() {
var way = iD.osmWay();
var base = iD.coreGraph();
var head = base.replace(way);
var action = iD.actionDiscardTags(iD.coreDifference(base, head));
var action = iD.actionDiscardTags(iD.coreDifference(base, head), discardTags);
expect(action(head).entity(way.id)).to.equal(way);
});
@@ -27,7 +29,7 @@ describe('iD.actionDiscardTags', function() {
var way = iD.osmWay({ tags: { lmnop: '' } });
var base = iD.coreGraph();
var head = base.replace(way);
var action = iD.actionDiscardTags(iD.coreDifference(base, head));
var action = iD.actionDiscardTags(iD.coreDifference(base, head), discardTags);
expect(action(head).entity(way.id).tags).to.eql({});
});
});
+29 -27
View File
@@ -1,4 +1,6 @@
describe('iD.actionMergeRemoteChanges', function () {
var discardTags = { created_by: true };
var base = iD.coreGraph([
iD.osmNode({id: 'a', loc: [1, 1], version: '1', tags: {foo: 'foo'}}),
@@ -73,7 +75,7 @@ describe('iD.actionMergeRemoteChanges', function () {
remote = base.entity('a').update({tags: remoteTags, version: '2'}),
localGraph = makeGraph([local]),
remoteGraph = makeGraph([remote]),
action = iD.actionMergeRemoteChanges('a', localGraph, remoteGraph);
action = iD.actionMergeRemoteChanges('a', localGraph, remoteGraph, discardTags);
var result = action(localGraph);
expect(result).to.eql(localGraph);
@@ -86,7 +88,7 @@ describe('iD.actionMergeRemoteChanges', function () {
remote = base.entity('a').update({tags: remoteTags, version: '2'}),
localGraph = makeGraph([local]),
remoteGraph = makeGraph([remote]),
action = iD.actionMergeRemoteChanges('a', localGraph, remoteGraph),
action = iD.actionMergeRemoteChanges('a', localGraph, remoteGraph, discardTags),
result = action(localGraph);
expect(result).to.eql(localGraph);
@@ -99,7 +101,7 @@ describe('iD.actionMergeRemoteChanges', function () {
remote = base.entity('a').update({tags: remoteTags, version: '2'}),
localGraph = makeGraph([local]),
remoteGraph = makeGraph([remote]),
action = iD.actionMergeRemoteChanges('a', localGraph, remoteGraph),
action = iD.actionMergeRemoteChanges('a', localGraph, remoteGraph, discardTags),
result = action(localGraph);
expect(result).to.eql(localGraph);
@@ -112,7 +114,7 @@ describe('iD.actionMergeRemoteChanges', function () {
remote = base.entity('a').update({tags: remoteTags, version: '2'}),
localGraph = makeGraph([local]),
remoteGraph = makeGraph([remote]),
action = iD.actionMergeRemoteChanges('a', localGraph, remoteGraph),
action = iD.actionMergeRemoteChanges('a', localGraph, remoteGraph, discardTags),
result = action(localGraph);
expect(result).to.eql(localGraph);
@@ -126,7 +128,7 @@ describe('iD.actionMergeRemoteChanges', function () {
remote = base.entity('a').update({tags: remoteTags, version: '2'}),
localGraph = makeGraph([local]),
remoteGraph = makeGraph([remote]),
action = iD.actionMergeRemoteChanges('a', localGraph, remoteGraph),
action = iD.actionMergeRemoteChanges('a', localGraph, remoteGraph, discardTags),
result = action(localGraph);
expect(result.entity('a').version).to.eql('2');
@@ -141,7 +143,7 @@ describe('iD.actionMergeRemoteChanges', function () {
remote = base.entity('a').update({tags: remoteTags, version: '2'}),
localGraph = makeGraph([local]),
remoteGraph = makeGraph([remote]),
action = iD.actionMergeRemoteChanges('a', localGraph, remoteGraph),
action = iD.actionMergeRemoteChanges('a', localGraph, remoteGraph, discardTags),
result = action(localGraph);
expect(result.entity('a').version).to.eql('2');
@@ -160,7 +162,7 @@ describe('iD.actionMergeRemoteChanges', function () {
remote = base.entity('a').update({tags: remoteTags, loc: remoteLoc, version: '2'}),
localGraph = makeGraph([local]),
remoteGraph = makeGraph([remote]),
action = iD.actionMergeRemoteChanges('a', localGraph, remoteGraph),
action = iD.actionMergeRemoteChanges('a', localGraph, remoteGraph, discardTags),
result = action(localGraph);
expect(result).to.eql(localGraph);
@@ -176,7 +178,7 @@ describe('iD.actionMergeRemoteChanges', function () {
remote = base.entity('a').update({tags: remoteTags, loc: remoteLoc, version: '2'}),
localGraph = makeGraph([local]),
remoteGraph = makeGraph([remote]),
action = iD.actionMergeRemoteChanges('a', localGraph, remoteGraph),
action = iD.actionMergeRemoteChanges('a', localGraph, remoteGraph, discardTags),
result = action(localGraph);
expect(result.entity('a').version).to.eql('2');
@@ -195,7 +197,7 @@ describe('iD.actionMergeRemoteChanges', function () {
remote = base.entity('w1').update({tags: remoteTags, version: '2'}),
localGraph = makeGraph([local]),
remoteGraph = makeGraph([remote]),
action = iD.actionMergeRemoteChanges('w1', localGraph, remoteGraph),
action = iD.actionMergeRemoteChanges('w1', localGraph, remoteGraph, discardTags),
result = action(localGraph);
expect(result.entity('w1').version).to.eql('2');
@@ -212,7 +214,7 @@ describe('iD.actionMergeRemoteChanges', function () {
remote = base.entity('w1').update({tags: remoteTags, nodes: remoteNodes, version: '2'}),
localGraph = makeGraph([local]),
remoteGraph = makeGraph([remote, r2, r3]),
action = iD.actionMergeRemoteChanges('w1', localGraph, remoteGraph),
action = iD.actionMergeRemoteChanges('w1', localGraph, remoteGraph, discardTags),
result = action(localGraph);
expect(result.entity('w1').version).to.eql('2');
@@ -232,7 +234,7 @@ describe('iD.actionMergeRemoteChanges', function () {
remote = base.entity('w1').update({tags: remoteTags, nodes: remoteNodes, version: '2'}),
localGraph = makeGraph([local, r2, r3]),
remoteGraph = makeGraph([remote]),
action = iD.actionMergeRemoteChanges('w1', localGraph, remoteGraph),
action = iD.actionMergeRemoteChanges('w1', localGraph, remoteGraph, discardTags),
result = action(localGraph);
expect(result.entity('w1').version).to.eql('2');
@@ -251,7 +253,7 @@ describe('iD.actionMergeRemoteChanges', function () {
remote = base.entity('w1').update({tags: remoteTags, nodes: remoteNodes, version: '2'}),
localGraph = makeGraph([local, r1, r2]),
remoteGraph = makeGraph([remote, r3, r4]),
action = iD.actionMergeRemoteChanges('w1', localGraph, remoteGraph),
action = iD.actionMergeRemoteChanges('w1', localGraph, remoteGraph, discardTags),
result = action(localGraph);
expect(result.entity('w1').version).to.eql('2');
@@ -270,7 +272,7 @@ describe('iD.actionMergeRemoteChanges', function () {
remote = base.entity('w1').update({tags: remoteTags, nodes: remoteNodes, version: '2'}),
localGraph = makeGraph([local, r1, r2]),
remoteGraph = makeGraph([remote, r3, r4]),
action = iD.actionMergeRemoteChanges('w1', localGraph, remoteGraph),
action = iD.actionMergeRemoteChanges('w1', localGraph, remoteGraph, discardTags),
result = action(localGraph);
expect(result).to.eql(localGraph);
@@ -283,7 +285,7 @@ describe('iD.actionMergeRemoteChanges', function () {
remote = base.entity('p1').update({loc: remoteLoc, version: '2'}),
localGraph = makeGraph([local]),
remoteGraph = makeGraph([remote]),
action = iD.actionMergeRemoteChanges('w1', localGraph, remoteGraph),
action = iD.actionMergeRemoteChanges('w1', localGraph, remoteGraph, discardTags),
result = action(localGraph);
expect(result.entity('p1').version).to.eql('2');
@@ -297,7 +299,7 @@ describe('iD.actionMergeRemoteChanges', function () {
remote = base.entity('p1').update({loc: remoteLoc, version: '2'}),
localGraph = makeGraph([local]),
remoteGraph = makeGraph([remote]),
action = iD.actionMergeRemoteChanges('w1', localGraph, remoteGraph),
action = iD.actionMergeRemoteChanges('w1', localGraph, remoteGraph, discardTags),
result = action(localGraph);
expect(result).to.eql(localGraph);
@@ -315,7 +317,7 @@ describe('iD.actionMergeRemoteChanges', function () {
remote = base.entity('r').update({tags: remoteTags, members: remoteMembers, version: '2'}),
localGraph = makeGraph([local]),
remoteGraph = makeGraph([remote, s1, s2, s3, s4, w4]),
action = iD.actionMergeRemoteChanges('r', localGraph, remoteGraph),
action = iD.actionMergeRemoteChanges('r', localGraph, remoteGraph, discardTags),
result = action(localGraph);
expect(result).to.eql(localGraph);
@@ -331,7 +333,7 @@ describe('iD.actionMergeRemoteChanges', function () {
remote = base.entity('r').update({tags: remoteTags, members: remoteMembers, version: '2'}),
localGraph = makeGraph([local]),
remoteGraph = makeGraph([remote]),
action = iD.actionMergeRemoteChanges('r', localGraph, remoteGraph),
action = iD.actionMergeRemoteChanges('r', localGraph, remoteGraph, discardTags),
result = action(localGraph);
expect(result.entity('r').version).to.eql('2');
@@ -349,7 +351,7 @@ describe('iD.actionMergeRemoteChanges', function () {
remote = base.entity('a').update({tags: remoteTags, loc: remoteLoc, version: '2'}),
localGraph = makeGraph([local]),
remoteGraph = makeGraph([remote]),
action = iD.actionMergeRemoteChanges('a', localGraph, remoteGraph);
action = iD.actionMergeRemoteChanges('a', localGraph, remoteGraph, discardTags);
action(localGraph);
expect(action.conflicts()).not.to.be.empty;
@@ -369,7 +371,7 @@ describe('iD.actionMergeRemoteChanges', function () {
remote = base.entity('a').update({tags: remoteTags, loc: remoteLoc, version: '2'}),
localGraph = makeGraph([local]),
remoteGraph = makeGraph([remote]),
action = iD.actionMergeRemoteChanges('a', localGraph, remoteGraph).withOption('force_local'),
action = iD.actionMergeRemoteChanges('a', localGraph, remoteGraph, discardTags).withOption('force_local'),
result = action(localGraph);
expect(result.entity('a').version).to.eql('2');
@@ -386,7 +388,7 @@ describe('iD.actionMergeRemoteChanges', function () {
remote = base.entity('a').update({tags: remoteTags, loc: remoteLoc, version: '2'}),
localGraph = makeGraph([local]),
remoteGraph = makeGraph([remote]),
action = iD.actionMergeRemoteChanges('a', localGraph, remoteGraph).withOption('force_remote'),
action = iD.actionMergeRemoteChanges('a', localGraph, remoteGraph, discardTags).withOption('force_remote'),
result = action(localGraph);
expect(result.entity('a').version).to.eql('2');
@@ -406,7 +408,7 @@ describe('iD.actionMergeRemoteChanges', function () {
remote = base.entity('w1').update({tags: remoteTags, nodes: remoteNodes, version: '2'}),
localGraph = makeGraph([local, r1, r2]),
remoteGraph = makeGraph([remote, r3, r4]),
action = iD.actionMergeRemoteChanges('w1', localGraph, remoteGraph).withOption('force_local'),
action = iD.actionMergeRemoteChanges('w1', localGraph, remoteGraph, discardTags).withOption('force_local'),
result = action(localGraph);
expect(result.entity('w1').version).to.eql('2');
@@ -423,7 +425,7 @@ describe('iD.actionMergeRemoteChanges', function () {
remote = base.entity('w1').update({tags: remoteTags, nodes: remoteNodes, version: '2'}),
localGraph = makeGraph([local, r1, r2]),
remoteGraph = makeGraph([remote, r3, r4]),
action = iD.actionMergeRemoteChanges('w1', localGraph, remoteGraph).withOption('force_remote'),
action = iD.actionMergeRemoteChanges('w1', localGraph, remoteGraph, discardTags).withOption('force_remote'),
result = action(localGraph);
expect(result.entity('w1').version).to.eql('2');
@@ -440,7 +442,7 @@ describe('iD.actionMergeRemoteChanges', function () {
remote = base.entity('p1').update({loc: remoteLoc, version: '2'}),
localGraph = makeGraph([local]),
remoteGraph = makeGraph([remote]),
action = iD.actionMergeRemoteChanges('w1', localGraph, remoteGraph).withOption('force_local'),
action = iD.actionMergeRemoteChanges('w1', localGraph, remoteGraph, discardTags).withOption('force_local'),
result = action(localGraph);
expect(result.entity('p1').version).to.eql('2');
@@ -454,7 +456,7 @@ describe('iD.actionMergeRemoteChanges', function () {
remote = base.entity('p1').update({loc: remoteLoc, version: '2'}),
localGraph = makeGraph([local]),
remoteGraph = makeGraph([remote]),
action = iD.actionMergeRemoteChanges('w1', localGraph, remoteGraph).withOption('force_remote'),
action = iD.actionMergeRemoteChanges('w1', localGraph, remoteGraph, discardTags).withOption('force_remote'),
result = action(localGraph);
expect(result.entity('p1').version).to.eql('2');
@@ -469,7 +471,7 @@ describe('iD.actionMergeRemoteChanges', function () {
remote = base.entity('w1').update({nodes: remoteNodes, version: '2'}),
localGraph = makeGraph([local, localr1, r2]),
remoteGraph = makeGraph([remote, r3, r4]),
action = iD.actionMergeRemoteChanges('w1', localGraph, remoteGraph).withOption('force_remote'),
action = iD.actionMergeRemoteChanges('w1', localGraph, remoteGraph, discardTags).withOption('force_remote'),
result = action(localGraph);
expect(result.entity('w1').nodes).to.eql(remoteNodes);
@@ -489,7 +491,7 @@ describe('iD.actionMergeRemoteChanges', function () {
remote = base.entity('r').update({tags: remoteTags, members: remoteMembers, version: '2'}),
localGraph = makeGraph([local, r1, r2, r3, r4, w3]),
remoteGraph = makeGraph([remote, s1, s2, s3, s4, w4]),
action = iD.actionMergeRemoteChanges('r', localGraph, remoteGraph).withOption('force_local'),
action = iD.actionMergeRemoteChanges('r', localGraph, remoteGraph, discardTags).withOption('force_local'),
result = action(localGraph);
expect(result.entity('r').version).to.eql('2');
@@ -506,7 +508,7 @@ describe('iD.actionMergeRemoteChanges', function () {
remote = base.entity('r').update({tags: remoteTags, members: remoteMembers, version: '2'}),
localGraph = makeGraph([local, r1, r2, r3, r4, w3]),
remoteGraph = makeGraph([remote, s1, s2, s3, s4, w4]),
action = iD.actionMergeRemoteChanges('r', localGraph, remoteGraph).withOption('force_remote'),
action = iD.actionMergeRemoteChanges('r', localGraph, remoteGraph, discardTags).withOption('force_remote'),
result = action(localGraph);
expect(result.entity('r').version).to.eql('2');
+33 -18
View File
@@ -22,7 +22,7 @@ describe('iD.coreData', function() {
});
it('sets the fileMap', function() {
var data = iD.coreData(_context);
var files = { 'intro_graph': 'data/intro_graph.json' };
var files = { 'intro_graph': 'data/intro_graph.min.json' };
expect(data.fileMap(files)).to.be.ok;
});
});
@@ -31,31 +31,46 @@ describe('iD.coreData', function() {
it('returns a promise resolved if we already have the data', function(done) {
var data = iD.coreData(_context);
var prom = data.get('test');
expect(prom).to.be.a('promise');
prom.then(function (data) {
expect(data).to.be.a('object');
expect(data.hello).to.eql('world');
done();
});
// expect(prom).to.be.a('promise'); // these are polyfilled in phantomjs
prom
.then(function(data) {
expect(data).to.be.a('object');
expect(data.hello).to.eql('world');
done();
})
.catch(function(err) {
throw err;
done();
});
});
it('returns a promise rejected if we can not get the data', function(done) {
var data = iD.coreData(_context);
var prom = data.get('wat');
prom.catch(function (err) {
expect(/^Unknown data file/.test(err)).to.be.true;
done();
});
prom
.then(function(data) {
throw new Error('got data ' + data);
done();
})
.catch(function(err) {
expect(/^Unknown data file/.test(err)).to.be.true;
done();
});
});
it('returns a promise to fetch data if we do not already have the data', function(done) {
var files = { 'intro_graph': 'data/intro_graph.json' };
var files = { 'intro_graph': 'data/intro_graph.min.json' };
var data = iD.coreData(_context).fileMap(files);
var prom = data.get('intro_graph');
expect(prom).to.be.a('promise');
prom.then(function (data) {
expect(data).to.be.a('object');
expect(data.n1.tags.name).to.eql('Three Rivers City Hall');
done();
});
// expect(prom).to.be.a('promise'); // these are polyfilled in phantomjs
prom
.then(function(data) {
expect(data).to.be.a('object');
expect(data.n1.tags.name).to.eql('Three Rivers City Hall');
done();
})
.catch(function(err) {
throw err;
done();
});
});
});
+16 -8
View File
@@ -222,46 +222,54 @@ describe('iD.osmEntity', function () {
});
describe('#deprecatedTags', function () {
var deprecated = [
{ old: { highway: 'no' } },
{ old: { amenity: 'toilet' }, replace: { amenity: 'toilets' } },
{ old: { speedlimit: '*' }, replace: { maxspeed: '$1' } },
{ old: { man_made: 'water_tank' }, replace: { man_made: 'storage_tank', content: 'water' } },
{ old: { amenity: 'gambling', gambling: 'casino' }, replace: { amenity: 'casino' } }
];
it('returns none if entity has no tags', function () {
expect(iD.osmEntity().deprecatedTags()).to.eql([]);
expect(iD.osmEntity().deprecatedTags(deprecated)).to.eql([]);
});
it('returns none when no tags are deprecated', function () {
expect(iD.osmEntity({ tags: { amenity: 'toilets' } }).deprecatedTags()).to.eql([]);
expect(iD.osmEntity({ tags: { amenity: 'toilets' } }).deprecatedTags(deprecated)).to.eql([]);
});
it('returns 1:0 replacement', function () {
expect(iD.osmEntity({ tags: { highway: 'no' } }).deprecatedTags()).to.eql(
expect(iD.osmEntity({ tags: { highway: 'no' } }).deprecatedTags(deprecated)).to.eql(
[{ old: { highway: 'no' } }]
);
});
it('returns 1:1 replacement', function () {
expect(iD.osmEntity({ tags: { amenity: 'toilet' } }).deprecatedTags()).to.eql(
expect(iD.osmEntity({ tags: { amenity: 'toilet' } }).deprecatedTags(deprecated)).to.eql(
[{ old: { amenity: 'toilet' }, replace: { amenity: 'toilets' } }]
);
});
it('returns 1:1 wildcard', function () {
expect(iD.osmEntity({ tags: { speedlimit: '50' } }).deprecatedTags()).to.eql(
expect(iD.osmEntity({ tags: { speedlimit: '50' } }).deprecatedTags(deprecated)).to.eql(
[{ old: { speedlimit: '*' }, replace: { maxspeed: '$1' } }]
);
});
it('returns 1:2 total replacement', function () {
expect(iD.osmEntity({ tags: { man_made: 'water_tank' } }).deprecatedTags()).to.eql(
expect(iD.osmEntity({ tags: { man_made: 'water_tank' } }).deprecatedTags(deprecated)).to.eql(
[{ old: { man_made: 'water_tank' }, replace: { man_made: 'storage_tank', content: 'water' } }]
);
});
it('returns 1:2 partial replacement', function () {
expect(iD.osmEntity({ tags: { man_made: 'water_tank', content: 'water' } }).deprecatedTags()).to.eql(
expect(iD.osmEntity({ tags: { man_made: 'water_tank', content: 'water' } }).deprecatedTags(deprecated)).to.eql(
[{ old: { man_made: 'water_tank' }, replace: { man_made: 'storage_tank', content: 'water' } }]
);
});
it('returns 2:1 replacement', function () {
expect(iD.osmEntity({ tags: { amenity: 'gambling', gambling: 'casino' } }).deprecatedTags()).to.eql(
expect(iD.osmEntity({ tags: { amenity: 'gambling', gambling: 'casino' } }).deprecatedTags(deprecated)).to.eql(
[{ old: { amenity: 'gambling', gambling: 'casino' }, replace: { amenity: 'casino' } }]
);
});
+2
View File
@@ -19,6 +19,8 @@ iD.data.presets = {
man_made: { name: 'Man Made', tags: { man_made: '*' }, geometry: ['vertex', 'point', 'line', 'area'] }
}
};
// creating `coreContext` creates validators, and `validatonOutdatedTags` will try to load this
iD.data.deprecated = [];
mocha.setup({
+14
View File
@@ -1,6 +1,19 @@
describe('iD.uiFieldLocalized', function() {
var context, selection, field;
before(function() {
iD.data.languages = {
de: { nativeName: 'Deutsch' },
en: { nativeName: 'English' }
};
iD.data.territory_languages = {};
});
after(function() {
delete iD.data.languages;
delete iD.data.territory_languages;
});
beforeEach(function() {
context = iD.coreContext();
selection = d3.select(document.createElement('div'));
@@ -8,6 +21,7 @@ describe('iD.uiFieldLocalized', function() {
field.locked = function() { return false; };
});
it('adds a blank set of fields when the + button is clicked', function() {
var localized = iD.uiFieldLocalized(field, context);
selection.call(localized);
+12
View File
@@ -1,10 +1,22 @@
describe('iD.validations.outdated_tags', function () {
var context;
before(function() {
iD.data.deprecated = [
{ old: { highway: 'no' } },
{ old: { highway: 'ford' }, replace: { ford: '*' } }
];
});
after(function() {
delete iD.data.deprecated;
});
beforeEach(function() {
context = iD.coreContext();
});
function createWay(tags) {
var n1 = iD.osmNode({id: 'n-1', loc: [4,4]});
var n2 = iD.osmNode({id: 'n-2', loc: [4,5]});