From e71b1661aa5a90fd405552f15fb1560e913b884a Mon Sep 17 00:00:00 2001 From: Shu Higashi Date: Sun, 13 Jan 2019 00:37:11 +0900 Subject: [PATCH 01/16] Update ja.json fixed typo --- src/lang/ja.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/lang/ja.json b/src/lang/ja.json index 68ed2355c..ef4d0f4d8 100644 --- a/src/lang/ja.json +++ b/src/lang/ja.json @@ -47,7 +47,7 @@ "Admin.EditProject.form.displayName.label": "表示名", "Admin.EditProject.form.displayName.description": "プロジェクトの表示名", "Admin.EditProject.form.enabled.label": "表示", - "Admin.EditProject.form.enabled.description": "自分のプロジェクトを表示に設定するとその配下の表示と設定されたチャレンジも全て他のユーザーから利用・発見・検索可能になります。便利なことに、自分のプロジェクトを表示にすると配下で表示設定されたあらゆるチャレンジも公開されます。それ以降も自分のチャレンジで作業できますし、静的なチェレンジのURLをどれでも他の人にシェアすることもできます。そのためプロジェクトを表示に設定するまでは、自分のプロジェクトをチャレンジのテスト用として見ることができます。", + "Admin.EditProject.form.enabled.description": "自分のプロジェクトを表示に設定するとその配下の表示と設定されたチャレンジも全て他のユーザーから利用・発見・検索可能になります。利便性のために、自分のプロジェクトを表示にすると配下で表示設定されたあらゆるチャレンジも公開されます。それ以降も自分のチャレンジで作業できますし、静的なチャレンジのURLをどれでも他の人にシェアすることもできます。そのためプロジェクトを表示に設定するまでは、自分のプロジェクトをチャレンジのテスト用として見ることができます。", "Admin.EditProject.form.description.label": "説明", "Admin.EditProject.form.description.description": "プロジェクトの説明", "GridBlockPicker.menuLabel": "ウィジェットを追加", @@ -56,7 +56,7 @@ "GridBlocks.CalendarHeatmapBlock.label": "きょうのヒートマップ", "GridBlocks.CalendarHeatmapBlock.title": "きょうのヒートマップ: タスクの完成度", "GridBlocks.ChallengeListBlock.label": "チャレンジ", - "GridBlocks.ChallengeListBlock.title": "チェレンジ", + "GridBlocks.ChallengeListBlock.title": "チャレンジ", "GridBlocks.ChallengeListBlock.search.placeholder": "検索", "GridBlocks.ChallengeOverviewBlock.label": "チャレンジの概要", "GridBlocks.ChallengeOverviewBlock.title": "概要", @@ -101,10 +101,10 @@ "Admin.EditChallenge.form.name.description": "あなたのチャレンジ名で、アプリケーションの至る所で表示されます。これは検索する際にも使われます。この項目は入力必須でプレーンテキストのみサポートします。", "Admin.EditChallenge.form.description.label": "説明", "Admin.EditChallenge.form.description.description": "ユーザーがチャレンジの中身を知ろうとクリックした際に表示されるあなたのチャレンジの最初の、やや長い説明。この項目はマークダウン記法をサポートしています。", - "Admin.EditChallenge.form.blurb.label": "宣伝文句", + "Admin.EditChallenge.form.blurb.label": "短い説明", "Admin.EditChallenge.form.blurb.description": "マップのマーカーのポップアップのように小さいスペースに表示するのに適した、あなたのチャレンジのごく短い説明。この項目はマークダウン記法をサポートしています。", "Admin.EditChallenge.form.instruction.label": "手順", - "Admin.EditChallenge.form.instruction.description": "この手順はあなたのチャレンジではどのようにタスクを解決すればよいかをマッパーに伝えます。これはタスクがロードされるたびに手順ボックスでマッパーが目にするもので、タスクを解決する方法についてのマッパー向けの最初の情報の一部なので、この項目の内容はよく考えてください。この項目はマークダウンをサポートしているので、必要ならOSMウィキや他へのハイパーリンクを含めることができます。シンプルな口ひげに似たタグを持つ自分のGeoJSONから地物のプロパティを参照することもできます: 例. `\\{\\{address\\}\\}` は `address` プロパティの値で置き換えられ、各タスク用の手順の基本的なカスタマイズができます。この項目は入力必須です。", + "Admin.EditChallenge.form.instruction.description": "この手順はあなたのチャレンジではどのようにタスクを解決すればよいかをマッパーに伝えます。これはタスクがロードされるたびに手順ボックスでマッパーが目にするものであり、タスクを解決する方法に関するマッパー向けの最初の情報の一部なので、この項目の内容はよく考えてください。この項目はマークダウンをサポートしているので、必要ならOSMウィキや他へのハイパーリンクを含めることができます。シンプルな口ひげに似たタグを持つ自分のGeoJSONから地物のプロパティを参照することもできます: 例. `\\{\\{address\\}\\}` は `address` プロパティの値で置き換えられ、各タスク用の手順の基本的なカスタマイズができます。この項目は入力必須です。", "Admin.EditChallenge.form.checkinComment.label": "変更セットの説明", "Admin.EditChallenge.form.checkinComment.description": "エディタ内でユーザーが行った変更に伴うコメント", "Admin.EditChallenge.form.checkinSource.label": "変更セットのソース", @@ -411,7 +411,7 @@ "Challenge.difficulty.any": "任意", "Challenge.keywords.navigation": "道路 / 歩道 / 自転車道", "Challenge.keywords.water": "水系", - "Challenge.keywords.pointsOfInterest": "興味深いポイン / エリア", + "Challenge.keywords.pointsOfInterest": "興味深いポイント / エリア", "Challenge.keywords.buildings": "建物", "Challenge.keywords.landUse": "土地利用 / 行政界", "Challenge.keywords.transit": "公共交通", From 1a4a25d481165ddc3cf67b343106818054ed0fb6 Mon Sep 17 00:00:00 2001 From: Shu Higashi Date: Sun, 13 Jan 2019 01:01:51 +0900 Subject: [PATCH 02/16] Update ja.json --- src/lang/ja.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/lang/ja.json b/src/lang/ja.json index ef4d0f4d8..15769aaf7 100644 --- a/src/lang/ja.json +++ b/src/lang/ja.json @@ -96,7 +96,7 @@ "Admin.EditChallenge.lineNumber": "行 {line, number}:", "Admin.EditChallenge.form.step1.label": "全般", "Admin.EditChallenge.form.visible.label": "表示", - "Admin.EditChallenge.form.visible.description": "あなたのチャレンジを表示して他のユーザーが見つけられるようにします(プロジェクトの表示設定による)。新しいチャレンジを自信をもって作成しているのでなければ、最初はこれを「いいえ」に設定することをお勧めします。とりわけ親プロジェクトが表示としている場合には。自分の表示設定を「はい」にすると、親プロジェクトも表示に設定されている場合には、ホームページ、チャレンジの検索、統計上に表示されます。", + "Admin.EditChallenge.form.visible.description": "あなたのチャレンジを表示して他のユーザーが見つけられるようにします(プロジェクトの表示設定による)。新しいチャレンジを自信をもって作成しているのでなければ、最初はこれを「no」に設定することをお勧めします。とりわけ親プロジェクトが表示としている場合には。自分の表示設定を「yes」にすると、親プロジェクトも表示に設定されている場合には、ホームページ、チャレンジの検索、統計上に表示されます。", "Admin.EditChallenge.form.name.label": "名前", "Admin.EditChallenge.form.name.description": "あなたのチャレンジ名で、アプリケーションの至る所で表示されます。これは検索する際にも使われます。この項目は入力必須でプレーンテキストのみサポートします。", "Admin.EditChallenge.form.description.label": "説明", @@ -124,7 +124,7 @@ "Admin.EditChallenge.form.step2.description": "MapRoulette の全てのタスクは基本的に、ポイント、ライン、ポリゴンといったジオメトリから成っており、\nあなたがマッパーに評価して欲しいものが何かをマップ上で示しています。\nこのスクリーンであなたはMapRouletteにジオメトリについて伝えることで、\nあなたのチャレンジ用のタスクを定義することができます。\n\nあなたのチャレンジにジオメトリを持ち込む方法は3つあります。\nOverpassクエリー経由、自分のコンピュータ上のGeoJSONファイル経由、そしてネット上のGeoJSONファイルをポイントするURL経由です。\n\n### Overpass経由\n\nOverpass API はOpenStreetMapのデータに対するパワフルなクエリーのインタフェースです。\n本番OSMデータベース上では動作しませんが、Overpassから取得するデータは\n通常、わすか数分前のものです。\n[Overpass QL](https://wiki.openstreetmap.org/wiki/Overpass_API/Language_Guide)、Overpass Query Languageを使って、\nあなたはあなたのチャレンジにタスクとしてロードしたいOSMオブジェクトがどれか、定義することができます。\n[Learn more](https://github.com/maproulette/maproulette2/wiki/Introducing-New-MapRoulette---Part-1.-Creating-and-Maintaining-Challenges#via-overpass)。\n\n### ローカルのGeoJSONファイル経由\n\n別のオプションはあなたが既に持っているGeoJSONファイルを使うことです。OSMに手動で追加したい承認された出典の外部データを持っている場合には素晴らしい方法です。\n[QGIS](https://gis.stackexchange.com/questions/91812/convert-shapefiles-to-geojson)\nや [gdal](http://www.gdal.org/drv_geojson.html) \nといったツールは、シェイプファイルからGeoJSONなど、形式を変換できます。\n変換する際は、プロジェクト化されていない\nWGS84 datum (EPSG:4326)によるlon/latを使うように気をつけてください。\nなぜならMapRoulette がこの形式を内部的に使っているからです。\n\n> 注意: 多数のタスクを持つチャレンジ用には、\n[line-by-line](https://github.com/osmlab/maproulette3/wiki/Line-by-Line-GeoJSON-Format)\n形式を代わりに使うことをお勧めします。これは処理する際のメモリ消費量が少なくてすみます。\n\n### リモートGeoJSON URL\n\nローカルのgeoJSONとURLの唯一の違いは\nMapRoulette にどこから取得すると伝えるか、という点だけです。URLを使う場合には、\nファイルへのリンクを含むページではなくて、生のGeoJSONファイルをポイントすることを忘れないようにしてください。さもないとMapRoulette\nはそれを認識できません。", "Admin.EditChallenge.form.source.label": "GeoJSON ソース", "Admin.EditChallenge.form.overpassQL.label": "Overpass API クエリー", - "Admin.EditChallenge.form.overpassQL.description": "Please provide a suitable bounding box when inserting an overpass query, as this can potentially generate large amounts of data and bog the system down.", + "Admin.EditChallenge.form.overpassQL.description": "Overpassクエリーを入力する際には適切なbbox(矩形)を設定してください。さもないと大量データを生成してシステムダウンを引き起こす可能性があります。", "Admin.EditChallenge.form.overpassQL.placeholder": "Overpass API クエリーをここに入力...", "Admin.EditChallenge.form.localGeoJson.label": "ファイルをアップロード", "Admin.EditChallenge.form.localGeoJson.description": "あなたのコンピュータからローカルのGeoJSONファイルをアップロードしてください", @@ -140,7 +140,7 @@ "Admin.EditChallenge.form.step4.label": "特別", "Admin.EditChallenge.form.step4.description": "チャレンジに特有の要件をマッピングしやすくするためにオプションでセットできる特別な情報", "Admin.EditChallenge.form.updateTasks.label": "古くなったタスクを削除", - "Admin.EditChallenge.form.updateTasks.description": "作成済やスキップ済のまま古くなった(~30日ほど更新されていない)タスクを定期的に削除します。定期的に自分のチャレンジのタスクをリフレッシュしたり、古いものを定期的に削除したい場合に有用です。たいていの場合は「いいえ」にセットしたいでしょう。", + "Admin.EditChallenge.form.updateTasks.description": "作成済やスキップ済のまま古くなった(~30日ほど更新されていない)タスクを定期的に削除します。定期的に自分のチャレンジのタスクをリフレッシュしたり、古いものを定期的に削除したい場合に有用です。たいていの場合は「no」にセットしたいでしょう。", "Admin.EditChallenge.form.defaultZoom.label": "既定のズームレベル", "Admin.EditChallenge.form.defaultZoom.description": "ユーザーがあるタスクについて作業を始める時、MapRoulette はタスクの地物の境界に合ったズームレベルを自動的に使おうと試みます。しかし、それができない場合、このデフォルトズームレベルが使われます。あなたのチャレンジでたいていの場合適しているようなレベルにセットすべきです。", "Admin.EditChallenge.form.minZoom.label": "最小ズームレベル", @@ -382,13 +382,13 @@ "UserSettings.form.locale.label": "言語と地域", "UserSettings.form.locale.description": "MapRoulette UI用のユーザーの言語と地域。", "UserSettings.form.leaderboardOptOut.label": "リーダーボードのオプトアウト", - "UserSettings.form.leaderboardOptOut.description": "「はい」にすると公開リーダーボードにあなたは表示され**ません**", + "UserSettings.form.leaderboardOptOut.description": "「yes」にすると公開リーダーボードにあなたは表示され**ません**", "Admin.EditChallenge.overpass.errors.noTurboShortcuts": "Overpass Turbo のショートカットはサポートされていません。使用したい場合は、Overpass Turbo のサイトで自分のクエリーをテストして、 エクスポート -> クエリー -> スタンドアロン -> コピー の順に選んでここに貼り付けてください。", "Activity.action.updated": "更新日", "Activity.action.created": "作成日", "Activity.action.deleted": "削除日", "Activity.action.taskViewed": "閲覧日", - "Activity.action.taskStatusSet": "状態をオンにする", + "Activity.action.taskStatusSet": "状態を次のように設定:", "Activity.action.tagAdded": "タグの追加先:", "Activity.action.tagRemoved": "タグの削除元:", "Activity.action.questionAnswered": "回答済みの質問をオン", From 877c1e804f47def478d398e8e3e9410a7fcf0211 Mon Sep 17 00:00:00 2001 From: Neil Rotstan Date: Wed, 30 Jan 2019 11:20:36 -0800 Subject: [PATCH 03/16] Change nav Create link label to Create & Manage Change top-nav `Create` link to `Create & Manage` to be a bit clearer that it should also be used to manage existing challenges --- src/components/Navbar/Messages.js | 2 +- src/lang/en-US.json | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/components/Navbar/Messages.js b/src/components/Navbar/Messages.js index 2b46eccbb..324f19aa5 100644 --- a/src/components/Navbar/Messages.js +++ b/src/components/Navbar/Messages.js @@ -16,7 +16,7 @@ export default defineMessages({ adminCreate: { id: 'Navbar.links.admin', - defaultMessage: "Create", + defaultMessage: "Create & Manage", }, help: { diff --git a/src/lang/en-US.json b/src/lang/en-US.json index 91a7e3cbc..e2905980b 100644 --- a/src/lang/en-US.json +++ b/src/lang/en-US.json @@ -305,7 +305,7 @@ "Navbar.links.signout": "Sign out", "Navbar.links.challengeResults": "Challenges", "Navbar.links.leaderboard": "Leaderboard", - "Navbar.links.admin": "Create", + "Navbar.links.admin": "Create & Manage", "Navbar.links.help": "Help", "Navbar.links.mobile.userProfile": "User Profile", "Navbar.mobile.links.signout": "Sign out", @@ -519,4 +519,4 @@ "Locale.fr.label": "fr (Français)", "Locale.af.label": "af (Afrikaans)", "Locale.ja.label": "ja (日本語)" -} +} \ No newline at end of file From f5fb8acdc3fe8d6b24f1b8fc2bd1b9d9d88d2c81 Mon Sep 17 00:00:00 2001 From: Neil Rotstan Date: Wed, 30 Jan 2019 16:15:03 -0800 Subject: [PATCH 04/16] Show total elapsed time when tasks are building * When challenge tasks are building or rebuilding, show the total elapsed time on the progress page in the admin area * Show a countdown timer to the next refresh, as opposed to the number of seconds passed since the last refresh --- package.json | 1 + .../ChallengeDashboard.scss | 38 +++++----- .../Manage/ViewChallengeTasks/Messages.js | 10 +-- .../ViewChallengeTasks/TaskBuildProgress.js | 70 +++++++++++++++---- .../ViewChallengeTasks/ViewChallengeTasks.js | 3 +- .../IntervalRender/IntervalRender.js | 50 +++++++++++++ src/lang/en-US.json | 8 +-- yarn.lock | 5 ++ 8 files changed, 143 insertions(+), 42 deletions(-) create mode 100644 src/components/IntervalRender/IntervalRender.js diff --git a/package.json b/package.json index bf3ff6046..e30e803af 100644 --- a/package.json +++ b/package.json @@ -41,6 +41,7 @@ "react-dropzone": "^4.2.3", "react-grid-layout": "^0.16.6", "react-intl": "^2.3.0", + "react-intl-formatted-duration": "^3.0.0", "react-jsonschema-form": "1.0.3", "react-jsonschema-form-async": "^0.2.0", "react-leaflet": "^1.8.0", diff --git a/src/components/AdminPane/Manage/ChallengeDashboard/ChallengeDashboard.scss b/src/components/AdminPane/Manage/ChallengeDashboard/ChallengeDashboard.scss index 382504f89..a0576f037 100644 --- a/src/components/AdminPane/Manage/ChallengeDashboard/ChallengeDashboard.scss +++ b/src/components/AdminPane/Manage/ChallengeDashboard/ChallengeDashboard.scss @@ -1,30 +1,32 @@ @import 'mixins.scss'; .admin__manage.challenge-dashboard { - .admin__manage__primary-content { - padding-top: 0; - - .challenge-tasks-status { + .challenge-tasks-status { + &__building-header { display: flex; - flex-direction: column; - justify-content: flex-start; + justify-content: space-between; align-items: center; + margin-bottom: 20px; + } - h3 { - font-size: $size-3; - margin-bottom: 20px; + h3 { + font-size: $size-3; + color: $primary; - &.is-danger { - color: $coral; - } + &.is-danger { + color: $coral; } + } - &__status-message { - font-size: $size-6; - white-space: pre-wrap; - max-width: 100%; - border-radius: $radius-medium; - } + &__status-message { + font-size: $size-6; + white-space: pre-wrap; + max-width: 100%; + border-radius: $radius-medium; + } + + &__build-status { + font-size: $size-5; } } diff --git a/src/components/AdminPane/Manage/ViewChallengeTasks/Messages.js b/src/components/AdminPane/Manage/ViewChallengeTasks/Messages.js index 7bf5a24ce..7f0d1d53c 100644 --- a/src/components/AdminPane/Manage/ViewChallengeTasks/Messages.js +++ b/src/components/AdminPane/Manage/ViewChallengeTasks/Messages.js @@ -21,17 +21,17 @@ export default defineMessages({ tasksCreatedCount: { id: "Admin.Challenge.tasksCreatedCount", - defaultMessage: "{count, number} tasks created", + defaultMessage: "{count, number} tasks created so far", }, - asOf: { - id: "Admin.Challenge.status.asOf.label", - defaultMessage: "as of", + totalElapsedTime: { + id: "Admin.Challenge.totalCreationTime", + defaultMessage: "Total elapsed time:", }, refreshStatusLabel: { id: "Admin.Challenge.controls.refreshStatus.label", - defaultMessage: "Refresh Status", + defaultMessage: "Refreshing status in", }, tasksHeader: { diff --git a/src/components/AdminPane/Manage/ViewChallengeTasks/TaskBuildProgress.js b/src/components/AdminPane/Manage/ViewChallengeTasks/TaskBuildProgress.js index efe3d2c6d..377f2b72c 100644 --- a/src/components/AdminPane/Manage/ViewChallengeTasks/TaskBuildProgress.js +++ b/src/components/AdminPane/Manage/ViewChallengeTasks/TaskBuildProgress.js @@ -1,6 +1,7 @@ import React, { Component } from 'react' -import { FormattedMessage, - FormattedRelative } from 'react-intl' +import { FormattedMessage } from 'react-intl' +import FormattedDuration, { TIMER_FORMAT } from 'react-intl-formatted-duration' +import parse from 'date-fns/parse' import _get from 'lodash/get' import { ChallengeStatus } from '../../../../services/Challenge/ChallengeStatus/ChallengeStatus' @@ -18,6 +19,10 @@ const TIMER_INTERVAL = 10000 // 10 seconds export default class TaskBuildProgress extends Component { timerHandle = null + state = { + startTime: new Date(), + } + clearTimer = () => { if (this.timerHandle !== null) { clearInterval(this.timerHandle) @@ -25,10 +30,31 @@ export default class TaskBuildProgress extends Component { } } + /** + * Returns the total elapsed seconds since the start time (usually the challenge + * modification date) + */ + totalElapsedSeconds = () => { + return (Date.now() - this.state.startTime) / 1000 + } + + /** + * Returns the number of seconds until the next status update + */ + nextUpdateSeconds = () => { + return ( + new Date(this.props.challenge._meta.fetchedAt + TIMER_INTERVAL).getTime() - Date.now() + ) / 1000 + } + componentDidMount() { this.clearTimer() this.timerHandle = setInterval(this.props.refreshChallenge, TIMER_INTERVAL) + + if (this.props.challenge.modified) { + this.setState({startTime: parse(this.props.challenge.modified)}) + } } componentWillUnmount() { @@ -43,21 +69,37 @@ export default class TaskBuildProgress extends Component { return (
-

- -
- +
+

+ +

-
- +
+
+ +
+

+ +

+ +

+ +

+
) diff --git a/src/components/AdminPane/Manage/ViewChallengeTasks/ViewChallengeTasks.js b/src/components/AdminPane/Manage/ViewChallengeTasks/ViewChallengeTasks.js index ff03d2047..8bfa2954e 100644 --- a/src/components/AdminPane/Manage/ViewChallengeTasks/ViewChallengeTasks.js +++ b/src/components/AdminPane/Manage/ViewChallengeTasks/ViewChallengeTasks.js @@ -27,6 +27,7 @@ import TriStateCheckbox from '../../../Bulma/TriStateCheckbox' import ConfirmAction from '../../../ConfirmAction/ConfirmAction' import SvgSymbol from '../../../SvgSymbol/SvgSymbol' import BusySpinner from '../../../BusySpinner/BusySpinner' +import IntervalRender from '../../../IntervalRender/IntervalRender' import WithDeactivateOnOutsideClick from '../../../HOCs/WithDeactivateOnOutsideClick/WithDeactivateOnOutsideClick' import ChallengeTaskMap from '../ChallengeTaskMap/ChallengeTaskMap' @@ -99,7 +100,7 @@ export class ViewChallengeTasks extends Component { render() { if (this.props.challenge.status === ChallengeStatus.building) { - return + return } if (this.props.challenge.status === ChallengeStatus.failed) { diff --git a/src/components/IntervalRender/IntervalRender.js b/src/components/IntervalRender/IntervalRender.js new file mode 100644 index 000000000..c8babccd0 --- /dev/null +++ b/src/components/IntervalRender/IntervalRender.js @@ -0,0 +1,50 @@ +import React, { Component } from 'react' +import PropTypes from 'prop-types' + +/** + * Re-renders the child component on a timer that defaults to re-rendering + * every 1/2 second, but can be controlled with the renderInterval prop. Note + * that the child component is cloned on each render + * + * @author [Neil Rotstan](https://github.com/nrotstan) + */ +export default class IntervalRender extends Component { + timerHandle = null + + state = { + counter: 0, + } + + bumpCounter = () => { + this.setState({counter: this.state.counter + 1}) + } + + clearTimer = () => { + if (this.timerHandle !== null) { + clearInterval(this.timerHandle) + this.timerHandle = null + } + } + + componentDidMount() { + this.clearTimer() + this.timerHandle = setInterval(this.bumpCounter, this.props.renderInterval) + } + + componentWillUnmount() { + this.clearTimer() + } + + render() { + return React.cloneElement(this.props.children) + } +} + +IntervalRender.propTypes = { + /** milliseconds between renderings */ + renderInterval: PropTypes.number, +} + +IntervalRender.defaultProps = { + renderInterval: 500, // 1/2 second +} diff --git a/src/lang/en-US.json b/src/lang/en-US.json index 91a7e3cbc..f1722f336 100644 --- a/src/lang/en-US.json +++ b/src/lang/en-US.json @@ -228,9 +228,9 @@ "Admin.Challenge.tasksBuilding": "Tasks Building...", "Admin.Challenge.tasksFailed": "Tasks Failed to Build", "Admin.Challenge.tasksNone": "No Tasks", - "Admin.Challenge.tasksCreatedCount": "{count, number} tasks created", - "Admin.Challenge.status.asOf.label": "as of", - "Admin.Challenge.controls.refreshStatus.label": "Refresh Status", + "Admin.Challenge.tasksCreatedCount": "{count, number} tasks created so far", + "Admin.Challenge.totalCreationTime": "Total elapsed time:", + "Admin.Challenge.controls.refreshStatus.label": "Refreshing status in", "Admin.ManageTasks.header": "Tasks", "Admin.ManageTasks.geographicIndexingNotice": "Please note that it can take up to {delay} hours to geographically index new or modified challenges. Your challenge (and tasks) may not appear as expected in location-specific browsing or searches until indexing is complete.", "Admin.manageTasks.controls.bulkSelection.tooltip": "Select tasks for bulk operation", @@ -519,4 +519,4 @@ "Locale.fr.label": "fr (Français)", "Locale.af.label": "af (Afrikaans)", "Locale.ja.label": "ja (日本語)" -} +} \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index 654e5b80e..ee4a04834 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7171,6 +7171,11 @@ react-grid-layout@^0.16.6: react-draggable "3.x" react-resizable "1.x" +react-intl-formatted-duration@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/react-intl-formatted-duration/-/react-intl-formatted-duration-3.0.0.tgz#ed9d77aeebe40af8eaf5f0ab184e50d43cc898e5" + integrity sha512-VjqkOIJANrNtgtNF4hY+riYLR2xjBTKd6IPNuslbVdlMawaukwCZjR+XJGyB9SR6DzsC7YVe/hzFumpdgwLf2g== + react-intl@^2.3.0, react-intl@^2.4.0: version "2.4.0" resolved "https://registry.yarnpkg.com/react-intl/-/react-intl-2.4.0.tgz#66c14dc9df9a73b2fbbfbd6021726e80a613eb15" From ebd8c366d854cfb69afba026379ae26176672224 Mon Sep 17 00:00:00 2001 From: Kelli Rotstan Date: Thu, 31 Jan 2019 10:20:07 -0800 Subject: [PATCH 05/16] Fix unable to remove changeset comment Changeset comment and blurb are now set to empty sring instead of 'undefined'. --- .../Manage/ManageChallenges/EditChallenge/Step1Schema.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/components/AdminPane/Manage/ManageChallenges/EditChallenge/Step1Schema.js b/src/components/AdminPane/Manage/ManageChallenges/EditChallenge/Step1Schema.js index 3b2796e1f..5cd724468 100644 --- a/src/components/AdminPane/Manage/ManageChallenges/EditChallenge/Step1Schema.js +++ b/src/components/AdminPane/Manage/ManageChallenges/EditChallenge/Step1Schema.js @@ -153,6 +153,9 @@ export const uiSchema = (intl, user, challengeData) => { description: { "ui:field": "markdown", }, + blurb: { + "ui:emptyValue": "", + }, instruction: { "ui:field": "markdown", }, @@ -165,6 +168,9 @@ export const uiSchema = (intl, user, challengeData) => { additionalKeywords: { "ui:field": "tags", }, + checkinComment: { + "ui:emptyValue": "", + }, includeCheckinHashtag: { "ui:widget": "radio", }, From 19db9f7b08ec8d9b99ae06384281ae280cb0fc53 Mon Sep 17 00:00:00 2001 From: Dongha Hwang Date: Sat, 2 Feb 2019 05:51:55 +0900 Subject: [PATCH 06/16] Add Korean translation (#610) Add Korean translation --- src/index.js | 3 +- src/lang/af.json | 1 + src/lang/de.json | 1 + src/lang/en-US.json | 3 +- src/lang/es.json | 1 + src/lang/fr.json | 1 + src/lang/ja.json | 5 +- src/lang/ko.json | 523 +++++++++++++++++++++++++++ src/services/User/Locale/Locale.js | 3 + src/services/User/Locale/Messages.js | 4 + 10 files changed, 541 insertions(+), 4 deletions(-) create mode 100644 src/lang/ko.json diff --git a/src/index.js b/src/index.js index 9626247d3..65ade8ae7 100644 --- a/src/index.js +++ b/src/index.js @@ -8,6 +8,7 @@ import es from 'react-intl/locale-data/es' import de from 'react-intl/locale-data/de' import af from 'react-intl/locale-data/af' import ja from 'react-intl/locale-data/ja' +import ko from 'react-intl/locale-data/ko' import { Router } from 'react-router-dom' import createBrowserHistory from 'history/createBrowserHistory' import PiwikReactRouter from 'piwik-react-router' @@ -28,7 +29,7 @@ import './index.css' import '../node_modules/leaflet.markercluster/dist/MarkerCluster.css' import '../node_modules/leaflet.markercluster/dist/MarkerCluster.Default.css' -addLocaleData([...en, ...fr, ...es, ...de, ...af, ...ja]) +addLocaleData([...en, ...fr, ...es, ...de, ...af, ...ja, ...ko]) /** Attach user's current locale to react-intl IntlProvider */ const ConnectedIntl = WithUserLocale(props => ( diff --git a/src/lang/af.json b/src/lang/af.json index 27c4b79db..f28b0cf7a 100644 --- a/src/lang/af.json +++ b/src/lang/af.json @@ -308,6 +308,7 @@ "Locale.fr.label": "fr (Français)", "Locale.af.label": "af (Afrikaans)", "Locale.ja.label": "ja (日本語)", + "Locale.ko.label": "ko (한국어)", "map.name.openStreetMap": "OpenStreetMap", "map.attribution.openStreetMap": "© OpenStreetMap contributors, CC-BY-SA", "map.name.openCycleMap": "OpenCycleMap", diff --git a/src/lang/de.json b/src/lang/de.json index 91f97163d..8ac51e7fd 100644 --- a/src/lang/de.json +++ b/src/lang/de.json @@ -309,6 +309,7 @@ "Locale.fr.label": "fr (Français)", "Locale.af.label": "af (Afrikaans)", "Locale.ja.label": "ja (日本語)", + "Locale.ko.label": "ko (한국어)", "map.name.openStreetMap": "OpenStreetMap", "map.attribution.openStreetMap": "© OpenStreetMap contributors, CC-BY-SA", "map.name.openCycleMap": "OpenCycleMap", diff --git a/src/lang/en-US.json b/src/lang/en-US.json index 6b4adbf61..d12a91632 100644 --- a/src/lang/en-US.json +++ b/src/lang/en-US.json @@ -518,5 +518,6 @@ "Locale.de.label": "de (Deutsch)", "Locale.fr.label": "fr (Français)", "Locale.af.label": "af (Afrikaans)", - "Locale.ja.label": "ja (日本語)" + "Locale.ja.label": "ja (日本語)", + "Locale.ko.label": "ko (한국어)" } \ No newline at end of file diff --git a/src/lang/es.json b/src/lang/es.json index 92d4807fd..7cce56fa9 100644 --- a/src/lang/es.json +++ b/src/lang/es.json @@ -308,6 +308,7 @@ "Locale.fr.label": "fr (Français)", "Locale.af.label": "af (Afrikaans)", "Locale.ja.label": "ja (日本語)", + "Locale.ko.label": "ko (한국어)", "map.name.openStreetMap": "OpenStreetMap", "map.attribution.openStreetMap": "© OpenStreetMap contributors, CC-BY-SA", "map.name.openCycleMap": "OpenCycleMap", diff --git a/src/lang/fr.json b/src/lang/fr.json index bab865a29..ede9b8fe4 100644 --- a/src/lang/fr.json +++ b/src/lang/fr.json @@ -308,6 +308,7 @@ "Locale.fr.label": "fr (Français)", "Locale.af.label": "af (Afrikaans)", "Locale.ja.label": "ja (日本語)", + "Locale.ko.label": "ko (한국어)", "map.name.openStreetMap": "OpenStreetMap", "map.attribution.openStreetMap": "© OpenStreetMap contributors, CC-BY-SA", "map.name.openCycleMap": "OpenCycleMap", diff --git a/src/lang/ja.json b/src/lang/ja.json index 15769aaf7..4f68e8ed0 100644 --- a/src/lang/ja.json +++ b/src/lang/ja.json @@ -247,7 +247,7 @@ "Admin.manageTasks.controls.exportCSV.label": "CSVをエクスポート", "Metrics.tasks.evaluatedByUser.label": "ユーザー評価済のタスク", "AutosuggestTextBox.labels.noResults": "一致なし", - "Form.textUpload.prompt": "Drop GeoJSONファイルをここにドロップするか、クリックしてファイルを選択", + "Form.textUpload.prompt": "GeoJSONファイルをここにドロップするか、クリックしてファイルを選択", "Form.textUpload.readonly": "既存のファイルが使われます", "Form.controls.addPriorityRule.label": "ルールを追加", "ChallengeFilterSubnav.filter.difficulty.label": "難易度", @@ -509,5 +509,6 @@ "Locale.de.label": "de (Deutsch)", "Locale.fr.label": "fr (Français)", "Locale.af.label": "af (Afrikaans)", - "Locale.ja.label": "ja (日本語)" + "Locale.ja.label": "ja (日本語)", + "Locale.ko.label": "ko (한국어)" } diff --git a/src/lang/ko.json b/src/lang/ko.json new file mode 100644 index 000000000..a30f742eb --- /dev/null +++ b/src/lang/ko.json @@ -0,0 +1,523 @@ +{ + "BurndownChart.heading": "남은 작업: {taskCount, number}", + "BurndownChart.tooltip": "남은 작업", + "CalendarHeatmap.heading": "일별 히트맵: 작업 완료", + "Admin.ChallengeAnalysisTable.columnHeaders.actions": "옵션", + "Admin.ChallengeAnalysisTable.columnHeaders.name": "도전명", + "Admin.ChallengeAnalysisTable.columnHeaders.completed": "완료", + "Admin.ChallengeAnalysisTable.columnHeaders.progress": "진척도", + "Admin.ChallengeAnalysisTable.columnHeaders.enabled": "보이게 하기", + "Admin.ChallengeAnalysisTable.columnHeaders.lastActivity": "마지막 활동", + "Admin.ChallengeAnalysisTable.controls.manageChallenge.label": "관리", + "Admin.ChallengeAnalysisTable.controls.editChallenge.label": "수정", + "Admin.ChallengeAnalysisTable.controls.startChallenge.label": "시작", + "Admin.ChallengeAnalysisTable.controls.cloneChallenge.label": "복제", + "Admin.ChallengeAnalysisTable.controls.showStatusColumns.label": "'상태' 열 추가", + "Admin.Challenge.controls.start.label": "시작", + "Admin.Challenge.controls.edit.label": "수정", + "Admin.Challenge.controls.move.label": "이동", + "Admin.Challenge.controls.move.none": "허가된 프로젝트 없음", + "Admin.Challenge.controls.rebuild.label": "다시 빌드", + "Admin.Challenge.controls.clone.label": "복제", + "Admin.Project.controls.addChallenge.label": "도전 추가", + "Admin.ChallengeList.noChallenges": "도전 없음", + "Admin.ChallengeTaskMap.controls.clusterTasks.label": "묶어서 보기", + "Admin.ChallengeTaskMap.controls.reviewTask.label": "작업 검토", + "Admin.ChallengeTaskMap.controls.editTask.label": "작업 수정", + "Admin.Task.fields.name.label": "작업:", + "Admin.Task.fields.status.label": "상태:", + "CompletionRadar.heading": "완료된 작업: {taskCount, number}", + "Dashboard.controls.renameConfiguration.tooltip": "레이아웃 이름 수정", + "Dashboard.controls.addConfiguration.tooltip": "새 레이아웃 추가", + "Dashboard.controls.deleteConfiguration.tooltip": "레이아웃 삭제", + "Admin.EditProject.unavailable": "이용할 수 없는 프로젝트", + "Admin.EditProject.edit.header": "수정", + "Admin.EditProject.new.header": "새 프로젝트", + "Admin.EditProject.controls.save.label": "저장", + "Admin.EditProject.controls.cancel.label": "취소", + "Admin.EditProject.form.name.label": "이름", + "Admin.EditProject.form.name.description": "프로젝트명", + "Admin.EditProject.form.displayName.label": "표시될 이름", + "Admin.EditProject.form.displayName.description": "표시될 프로젝트명", + "Admin.EditProject.form.enabled.label": "보이게 하기", + "Admin.EditProject.form.enabled.description": "만약 당신의 프로젝트를 보이게 설정했다면, 당신의 프로젝트에 속해 있는 모든 도전을 다른 사람들이 검색할 수 있으며, 참여할 수 있습니다. 다시 말해, 당신의 프로젝트를 보이게 설정한다는 것은 당신이 만든 모든 도전을 보이게 설정한다는 것과 똑같습니다. 당신이 만든 프로젝트에서 당신을 포함한 모든 사람이 참여할 수 있고, 도전 통계 URL을 사람들에게 공유할 수도 있습니다. 따라서 프로젝트를 보이지 않게 설정해 당신이 만든 도전을 검토하는 시간을 가질 수도 있습니다.", + "Admin.EditProject.form.description.label": "설명", + "Admin.EditProject.form.description.description": "프로젝트 설명", + "GridBlockPicker.menuLabel": "위젯 추가", + "GridBlocks.BurndownChartBlock.label": "번다운 차트", + "GridBlocks.BurndownChartBlock.title": "남은 작업: {taskCount, number}", + "GridBlocks.CalendarHeatmapBlock.label": "일일 히트맵", + "GridBlocks.CalendarHeatmapBlock.title": "일일 히트맵: 완료된 작업", + "GridBlocks.ChallengeListBlock.label": "도전", + "GridBlocks.ChallengeListBlock.title": "도전", + "GridBlocks.ChallengeListBlock.search.placeholder": "검색", + "GridBlocks.ChallengeOverviewBlock.label": "도전 개요", + "GridBlocks.ChallengeOverviewBlock.title": "개요", + "GridBlocks.ChallengeOverviewBlock.fields.creationDate.label": "제작:", + "GridBlocks.ChallengeOverviewBlock.fields.lastModifiedDate.label": "수정:", + "GridBlocks.ChallengeOverviewBlock.fields.tasksRefreshDate.label": "작업 새로고침:", + "GridBlocks.ChallengeOverviewBlock.fields.status.label": "상태:", + "GridBlocks.ChallengeOverviewBlock.fields.enabled.label": "보임 여부:", + "GridBlocks.ChallengeTasksBlock.label": "작업", + "GridBlocks.ChallengeTasksBlock.title": "작업", + "GridBlocks.CommentsBlock.label": "댓글", + "GridBlocks.CommentsBlock.title": "댓글", + "GridBlocks.CommentsBlock.controls.export.label": "내보내기", + "GridBlocks.CompletionProgressBlock.label": "진척도", + "GridBlocks.CompletionProgressBlock.title": "진척도", + "GridBlocks.CompletionProgressBlock.noTasks": "이루어진 작업이 없음", + "GridBlocks.LeaderboardBlock.label": "리더보드", + "GridBlocks.LeaderboardBlock.title": "리더보드", + "GridBlocks.ProjectAboutBlock.label": "프로젝트 설명", + "GridBlocks.ProjectAboutBlock.title": "프로젝트 설명", + "GridBlocks.ProjectAboutBlock.content": "프로젝트는 서로 관련 있는 도전을 엮을 때 사용합니다. \n모든 도전은 프로젝트에 속해 있어야 합니다.\n\n프로젝트는 도전을 엮기 위해서라면 얼마든지 만들 수 있으며, \n프로젝트 관리를 도울 다른 MapRoulette 사용자를 초대할 수도 있습니다.\n\n프로젝트에 속해 있는 모든 도전을 공개적으로 보이게 하려면\n프로젝트를 보이게 설정해야 합니다.", + "GridBlocks.ProjectCountBlock.label": "프로젝트 개수", + "GridBlocks.ProjectCountBlock.title": "프로젝트 개수", + "GridBlocks.ProjectListBlock.label": "프로젝트 목록", + "GridBlocks.ProjectListBlock.title": "프로젝트", + "GridBlocks.ProjectListBlock.search.placeholder": "검색", + "GridBlocks.ProjectOverviewBlock.label": "개요", + "GridBlocks.ProjectOverviewBlock.title": "개요", + "GridBlocks.RecentActivityBlock.label": "최근 활동", + "GridBlocks.RecentActivityBlock.title": "최근 활동", + "GridBlocks.StatusRadarBlock.label": "상태 레이더", + "GridBlocks.StatusRadarBlock.title": "완료된 작업의 상태 분포도", + "KeywordAutosuggestInput.controls.addKeyword.placeholder": "키워드 추가", + "Admin.EditChallenge.edit.header": "수정", + "Admin.EditChallenge.clone.header": "복제", + "Admin.EditChallenge.new.header": "새 도전", + "Admin.EditChallenge.lineNumber": "줄 {line, number}:", + "Admin.EditChallenge.form.step1.label": "기본 설정", + "Admin.EditChallenge.form.visible.label": "공개", + "Admin.EditChallenge.form.visible.description": "도전을 다른 사람들에게 보이게 할지 보이지 않게 할지(프로젝트 공개 여부)를 결정합니다. 새 도전을 만드는 데 자신이 있는 게 아니라면, 처음에는 '아니오'로 설정하는 것을 권장드립니다. 특히 이 도전이 속해 있는 프로젝트를 공개로 설정해 놓았을 때는 '아니오'로 설정하는 것이 좋습니다. 도전 공개 여부를 '예'로 설정하면 메인 페이지, 도전 검색 결과, 리더보드에서 도전을 볼 수 있습니다(단, 도전이 속해 있는 프로젝트가 공개 설정되어 있을 때만).", + "Admin.EditChallenge.form.name.label": "도전명", + "Admin.EditChallenge.form.name.description": "사이트 곳곳에 표시될 도전명입니다. 검색창에 이 제목을 입력하면 검색 결과에 이 도전이 뜨게 됩니다. 이 칸은 무조건 채워야 하며, 평문(일반적인 텍스트)만 사용할 수 있습니다.", + "Admin.EditChallenge.form.description.label": "설명", + "Admin.EditChallenge.form.description.description": "더 자세한 정보를 보려고 도전을 클릭한 사람들에게 보여줄 설명입니다. 이 칸은 마크다운 문법을 지원합니다.", + "Admin.EditChallenge.form.blurb.label": "짧은 설명", + "Admin.EditChallenge.form.blurb.description": "지도에 띄우는 팝업 같은 작은 공간에 들어갈 짧은 설명입니다. 이 칸은 마크다운 문법을 지원합니다.", + "Admin.EditChallenge.form.instruction.label": "지시", + "Admin.EditChallenge.form.instruction.description": "도전에 참여한 사람들에게 어떻게 작업해야 하는지 설명하는 내용을 적습니다. 이 지시문은 참여자들이 작업을 불러올 때마다 지시 창에서 보게 되며, 참여자들이 문제를 해결하는 방법을 보려 할 때 가장 먼저 참고합니다. 이 칸은 신중을 기해서 채워 주세요. 마크다운 문법을 지원하기 때문에, 원한다면 오픈스트리트맵 위키 링크나 여타 링크를 달 수도 있고, 이중 중괄호를 사용해서 GeoJSON에서 지물 속성을 가져올 수도 있습니다. 예를 들어, `\\{\\{address\\}\\}`라고 써 넣으면 실제로는 작업하는 지물의 `address` 속성의 값이 뜹니다. 이를 응용해 각 작업마다 맞춤형 지시를 내릴 수 있습니다. 이 칸은 무조건 채워야 합니다.", + "Admin.EditChallenge.form.checkinComment.label": "바뀜집합 설명", + "Admin.EditChallenge.form.checkinComment.description": "편집 내역과 관련된 내용(편집기로 이동할 때 자동으로 적용)", + "Admin.EditChallenge.form.checkinSource.label": "바뀜집합 출처", + "Admin.EditChallenge.form.checkinSource.description": "편집할 때 이용한 자료의 출처(편집기로 이동할 때 자동으로 적용)", + "Admin.EditChallenge.form.includeCheckinHashtag.value.true.label": "자동으로 뒤에 #maproulette 해시태그를 붙임(매우 권장)", + "Admin.EditChallenge.form.includeCheckinHashtag.value.false.label": "해시태그 붙이지 않음", + "Admin.EditChallenge.form.includeCheckinHashtag.description": "해시태그를 바뀜집합 댓글 끝에 붙이면 추후 바뀜집합 분석 작업에 유용하게 사용할 수 있습니다.", + "Admin.EditChallenge.form.difficulty.label": "난이도", + "Admin.EditChallenge.form.difficulty.description": "쉬움, 중간, 전문가 중 하나를 선택하세요. 참여자들에게 해당 도전의 작업을 진행하려면 지도 제작 능력을 얼마나 갖춰야 하는지를 알려줍니다. '쉬움' 난이도의 도전은 경험이 거의 없는 초보자들도 할 수 있어야 합니다.", + "Admin.EditChallenge.form.category.label": "카테고리", + "Admin.EditChallenge.form.category.description": "도전에 알맞은 카테고리를 선택하세요. 특정 분야에 관심이 있는 사람들에게 이 도전을 추천할 수 있습니다. 알맞은 카테고리가 없다면 '기타'를 선택하세요.", + "Admin.EditChallenge.form.additionalKeywords.label": "키워드", + "Admin.EditChallenge.form.additionalKeywords.description": "도전과 관련 있는 키워드를 입력하면 다른 사람들이 해당 도전을 쉽게 찾을 수 있습니다. 도전을 찾을 때 '작업 분야' 검색 필터의 '기타'에서 키워드로 검색할 수 있으며, 검색창에서도 #을 붙여(예시: #tourism) 키워드로 검색할 수 있습니다.", + "Admin.EditChallenge.form.featured.label": "대표 도전", + "Admin.EditChallenge.form.featured.description": "도전을 검색하거나 찾을 때 대표 도전은 목록의 맨 위에 표시됩니다. 권한이 있는 사용자(Super-user)만 도전을 대표 도전으로 지정할 수 있습니다.", + "Admin.EditChallenge.form.step2.label": "GeoJSON 소스", + "Admin.EditChallenge.form.step2.description": "기본적으로 MapRoulette에서는 참여자가 확인해 주길 원하는 지물을\n 점, 선, 면과 같은 도형으로 지도에 나타냅니다.\n 이 과정은 MapRoulette에 도형을 입력해 작업을 정의하는 과정입니다. \n\n도전에 도형을 입력하는 방법에는 Overpass 쿼리, 컴퓨터에 있는 GeoJSON 파일, \n인터넷 상에 올라와 있는 GeoJSON 파일을 가리키는 URL, 이렇게 세 가지가 있습니다.\n\n### Overpass를 이용한 방법\n\nOverpass API는 오픈스트리트맵 데이터를 다루는 강력한 질의 인터페이스입니다. \nOverpass API는 실시간 오픈스트리트맵 데이터베이스를 이용하지 않기 때문에, \nOverpass에서 가져오는 데이터는 대개 몇 분 정도 이전의 데이터입니다. \nOverpass 쿼리에서 사용되는 [Overpass QL](https://wiki.openstreetmap.org/wiki/Overpass_API/Language_Guide) 언어를 사용하면 \n도전에 참여한 사람들이 오픈스트리트맵에서 작업해야 할 \n개체들을 명확하게 정의할 수 있습니다. \n자세한 내용은 [여기](https://github.com/maproulette/maproulette2/wiki/Introducing-New-MapRoulette---Part-1.-Creating-and-Maintaining-Challenges#via-overpass)를 참고하세요.\n\n### 컴퓨터에 있는 GeoJSON 파일을 이용한 방법\n\n이미 갖고 있는 GeoJSON 파일을 이용할 수도 있습니다. \n수동으로 오픈스트리트맵에 입력해도 좋다고 허락을 받은 외부 데이터를 가지고 있다면 \n이 방법을 사용하는 것이 좋습니다. [QGIS](https://gis.stackexchange.com/questions/91812/convert-shapefiles-to-geojson)나 \n[gdal](http://www.gdal.org/drv_geojson.html) 같은 도구로 \nShapefile을 GeoJSON으로\n 변환할 수 있습니다. 변환할 때에 MapRoulette에서 내부적으로 사용하는 \nWGS84(EPSG:4326)에서 투영되지 않은 \n경도/위도를 사용해야 합니다.\n\n> 참고: 작업 수가 너무 많은 도전에는 \n[line-by-line](https://github.com/osmlab/maproulette3/wiki/Line-by-Line-GeoJSON-Format)\n 포맷을 대신 사용하는 것이 좋습니다. 처리 중 메모리 사용이 크게 줄어듭니다.\n\n### 원격 GeoJSON URL을 이용한 방법\n\nGeoJSON 파일을 업로드하는 것과 파일 URL을 입력하는 것 사이의 차이는 \n파일을 가져오는 위치밖에 없습니다. URL을 입력할 때 \nraw GeoJSON 파일을 가리키는지 반드시 확인해 주세요. 파일 다운로드 페이지로 연결되면 MapRoulette에서 \n파일을 인식할 수 없습니다.", + "Admin.EditChallenge.form.source.label": "GeoJSON 소스", + "Admin.EditChallenge.form.overpassQL.label": "Overpass API 쿼리", + "Admin.EditChallenge.form.overpassQL.description": "Overpass 쿼리를 적용할 경계선 상자를 지정해 주세요. 너무 크게 지정하면 데이터의 용량이 너무 커지고, 시스템이 다운될 수도 있습니다.", + "Admin.EditChallenge.form.overpassQL.placeholder": "Overpass API 쿼리 명령어를 입력해 주세요...", + "Admin.EditChallenge.form.localGeoJson.label": "파일 업로드", + "Admin.EditChallenge.form.localGeoJson.description": "컴퓨터에 있는 GeoJSON 파일을 업로드해 주세요", + "Admin.EditChallenge.form.remoteGeoJson.label": "원격 URL", + "Admin.EditChallenge.form.remoteGeoJson.description": "GeoJSON 파일을 가져올 URL을 입력해 주세요", + "Admin.EditChallenge.form.remoteGeoJson.placeholder": "https://www.example.com/geojson.json", + "Admin.EditChallenge.form.ignoreSourceErrors.label": "오류 무시", + "Admin.EditChallenge.form.ignoreSourceErrors.description": "원본 데이터에 오류가 있어도 무시하고 진행합니다. 오류를 무시해서 생길 결과를 확실히 예측할 수 있는 경우에만 사용하세요.", + "Admin.EditChallenge.form.step3.label": "우선 순위", + "Admin.EditChallenge.form.step3.description": "작업의 우선 순위를 높음, 중간, 낮음으로 지정할 수 있습니다. 우선 순위가 '높음'인 모든 작업은 참여자들에게 최우선으로 제시됩니다. '높음'인 작업이 모두 끝나면 '보통'인 작업이 제시되고, 마지막으로 '낮음'인 작업이 제시됩니다. 아래에 적어넣은 규칙과 각 지물의 속성(Overpass 쿼리를 사용하는 경우에는 '오픈스트리트맵 태그', 그 외의 경우에는 GeoJSON 파일에 들어 있는 '모든 속성')이 서로 일치하는 경우 해당 우선순위가 적용됩니다. 어느 규칙도 적용되지 않는 지물은 기본 우선 순위가 적용됩니다.", + "Admin.EditChallenge.form.defaultPriority.label": "기본 우선순위", + "Admin.EditChallenge.form.defaultPriority.description": "이 도전에 속한 작업의 기본 우선순위", + "Admin.EditChallenge.form.step4.label": "부가 정보", + "Admin.EditChallenge.form.step4.description": "도전 참가자들이 작업할 때 도움을 줄 부가 정보를 적을 수 있습니다", + "Admin.EditChallenge.form.updateTasks.label": "오래된 작업 제거", + "Admin.EditChallenge.form.updateTasks.description": "주기적으로 '생성됨'과 '넘김' 처리된 작업 중 오래된 작업(30일 동안 업데이트되지 않음)을 삭제합니다. 도전을 주기적으로 새로고침해서 오래된 작업을 삭제하고 싶을 때 유용합니다. 작업을 삭제하고 싶지 않다면 '아니오'로 설정하세요.", + "Admin.EditChallenge.form.defaultZoom.label": "기본 배율", + "Admin.EditChallenge.form.defaultZoom.description": "작업을 시작할 때 MapRoulette에서 작업할 지물의 크기에 따라 배율을 자동으로 맞춥니다. 그러나 자동으로 배율을 맞출 수 없는 경우에는 이 기본 배율이 적용됩니다. 작업 대부분에 맞는 배율을 기본 배율로 설정해야 합니다.", + "Admin.EditChallenge.form.minZoom.label": "최소 배율", + "Admin.EditChallenge.form.minZoom.description": "도전에 적용될 최소 배율입니다. 최소 배율은 작업하기 어려울 정도로 낮은 배율로 설정되는 막기 위한 것으로, 작업을 편하게 할 수 있을 정도로 충분히 작게 설정해야 합니다.", + "Admin.EditChallenge.form.maxZoom.label": "최대 배율", + "Admin.EditChallenge.form.maxZoom.description": "도전에 적용될 최대 배율입니다. 최대 배율은 작업하기 어려워지거나 지도/이미지의 최대 해상도를 넘길 정도로 높은 배율로 설정되는 막기 위한 것으로, 작업을 편하게 할 수 있을 정도로 충분히 크게 설정해야 합니다.", + "Admin.EditChallenge.form.defaultBasemap.label": "배경 지도", + "Admin.EditChallenge.form.defaultBasemap.description": "도전에 적용될 기본 배경 지도입니다. 각 참여자들이 사용자 설정에서 지정한 기본 배경 지도보다 우선시됩니다.", + "Admin.EditChallenge.form.customBasemap.label": "사용자 설정 배경 지도", + "Admin.EditChallenge.form.customBasemap.description": "URL을 입력해서 원하는 배경 지도를 삽입할 수 있습니다. 예시: `https://\\{s\\}.tile.openstreetmap.org/\\{z\\}/\\{x\\}/\\{y\\}.png` {dummy}", + "Admin.ManageChallenges.header": "도전", + "Admin.ManageChallenges.help.info": "도전은 오픈스트리트맵 데이터에 있는 특정한 문제나 결함을 지도에 표시하는 데 도움을 주는 수많은 작업들로 이루어져 있습니다. 도전을 처음 만들었을 때, 적어넣은 OverpassQL 쿼리를 통해서 자동으로 작업이 생성됩니다. 그러나 작업은 GeoJSON 지물을 담고 있는 파일이나 URL에서 가져올 수도 있씁니다. 도전은 원하는 대로 만들 수 있습니다.", + "Admin.ManageChallenges.search.placeholder": "이름", + "Admin.ManageChallenges.allProjectChallenge": "전체", + "Admin.Challenge.fields.creationDate.label": "만들어짐:", + "Admin.Challenge.fields.lastModifiedDate.label": "수정됨:", + "Admin.Challenge.fields.status.label": "상태:", + "Admin.Challenge.fields.enabled.label": "공개:", + "Admin.Challenge.controls.startChallenge.label": "도전 시작", + "Admin.Challenge.activity.label": "최근 활동", + "Admin.EditTask.edit.header": "작업 수정", + "Admin.EditTask.new.header": "새 작업", + "Admin.EditTask.form.formTitle": "자세한 정보", + "Admin.EditTask.controls.save.label": "저장", + "Admin.EditTask.controls.cancel.label": "취소", + "Admin.EditTask.form.name.label": "이름", + "Admin.EditTask.form.name.description": "작업의 이름입니다.", + "Admin.EditTask.form.instruction.label": "지시", + "Admin.EditTask.form.instruction.description": "이 작업을 진행하는 사람에게 내리는 지시입니다. 도전 지시보다 우선시됩니다.", + "Admin.EditTask.form.geometries.label": "GeoJSON", + "Admin.EditTask.form.geometries.description": "이 작업에 대한 GeoJSON입니다. MapRoulette의 모든 작업은 기본적으로 참여자가 집중해야 할 영역을 나타낸 도형(점, 선, 다각형)으로 이루어져 있으며, 이 도형은 GeoJSON에서 가져온 데이터로 표현됩니다.", + "Admin.EditTask.form.priority.label": "우선순위", + "Admin.EditTask.form.priority.description": "이 작업의 우선순위입니다. 작업의 우선순위는 '높음', '보통', '낮음'으로 정의됩니다. '높음' 우선순위를 가진 작업은 맨 먼저 표시되며, 그 다음으로 '중간', '낮음' 순으로 표시됩니다.", + "Admin.EditTask.form.status.label": "상태", + "Admin.EditTask.form.status.description": "이 작업의 상태입니다. 현재 상태가 무엇인지에 따라 상태를 변경하는 데 제한이 있습니다.", + "Admin.Task.controls.editTask.tooltip": "작업 수정", + "Admin.Task.controls.editTask.label": "수정", + "Admin.manage.header": "생성&관리", + "Admin.ProjectCard.tabs.challenges.label": "도전", + "Admin.ProjectCard.tabs.details.label": "자세한 정보", + "Admin.ProjectCard.tabs.managers.label": "관리자", + "Admin.Project.fields.enabled.tooltip": "활성화", + "Admin.Project.fields.disabled.tooltip": "비활성화", + "Admin.ProjectCard.controls.editProject.tooltip": "프로젝트 수정", + "Admin.ProjectCard.controls.editProject.label": "수정", + "Admin.Project.headers.challengePreview": "일치하는 도전", + "Admin.ProjectDashboard.controls.edit.label": "수정", + "Admin.ProjectDashboard.controls.addChallenge.label": "도전 추가", + "Admin.ProjectManagers.noManagers": "관리자 없음", + "Admin.ProjectManagers.addManager": "프로젝트 관리자 추가", + "Admin.ProjectManagers.projectOwner": "소유자", + "Admin.ProjectManagers.controls.removeManager.tooltip": "관리자 삭제", + "Admin.ProjectManagers.controls.removeManager.confirmation": "정말 이 프로젝트에서 관리자를 삭제하시겠습니까?", + "Admin.ProjectManagers.controls.selectRole.choose.label": "역할 선택", + "Admin.ProjectManagers.controls.chooseOSMUser.placeholder": "오픈스트리트맵 사용자명", + "Admin.Project.fields.creationDate.label": "생성됨:", + "Admin.Project.fields.lastModifiedDate.label": "수정됨:", + "Admin.Project.controls.delete.label": "프로젝트 삭제", + "Admin.ProjectsDashboard.newProject": "프로젝트 추가", + "Admin.ProjectsDashboard.help.info": "프로젝트는 서로 관련 있는 도전을 엮은 것입니다. 모든 도전은 프로젝트에 속해 있어야 합니다.", + "Admin.ProjectsDashboard.search.placeholder": "프로젝트/도전명", + "Admin.Project.controls.addChallenge.tooltip": "새 도전", + "Admin.ProjectsDashboard.regenerateHomeProject": "홈 프로젝트를 새롭게 재생성하려면 로그아웃하고 다시 로그인해 주세요.", + "RebuildTasksControl.label": "재구축", + "RebuildTasksControl.modal.title": "도전에 속한 작업들을 재구축하는 중", + "RebuildTasksControl.modal.intro.overpass": "재구축 작업은 Overpass 쿼리를 재실행하고 도전에 속한 작업들을 최신 데이터로 재구축합니다:", + "RebuildTasksControl.modal.intro.remote": "재구축 작업은 GeoJSON 데이터를 도전 설정에서 등록한 URL에서 다시 다운로드하고 도전에 속한 작업들을 최신 데이터로 재구축합니다:", + "RebuildTasksControl.modal.intro.local": "재구축 작업으로 최신 GeoJSON 데이터 파일을 업로드해 도전에 속한 작업들을 최근 데이터로 재구축할 수 있습니다:", + "RebuildTasksControl.modal.explanation": "* 기존 작업 중 최신 파일에 포함된 작업은 업데이트됩니다\n* 새로운 작업이 추가됩니다\n* 최신 파일에 없는 불완전한 작업 삭제(아래에 있음)를 선택하면, 기존의 __불완전한__ 작업 즁 최신 파일에 포함되지 않은 작업은 삭제됩니다\n* 최신 파일에 없는 불완전한 작업 삭제를 선택하지 않으면 불완전한 작업은 그대로 남으며, 이미 MapRoulette 외부에서 해결된 작업들도 남습니다", + "RebuildTasksControl.modal.warning": "경고: 지물 ID가 적절하게 설정되어 있지 않거나 기존 데이터와 새로운 데이터 간의 일치 작업이 제대로 되지 않았을 경우 재구축 작업 시 작업이 복제될 수 있습니다. 이 작업은 되돌릴 수 없습니다!", + "RebuildTasksControl.modal.moreInfo": "[자세히 알아보기](https://github.com/osmlab/maproulette3/wiki/Rebuilding-(Updating)-Challenge-Task-Data)", + "RebuildTasksControl.modal.controls.removeUnmatched.label": "최신 파일에 없는 불완전한 작업 삭제", + "RebuildTasksControl.modal.controls.cancel.label": "취소", + "RebuildTasksControl.modal.controls.proceed.label": "계속", + "Admin.ReviewTask.header": "작업 검토", + "StepNavigation.controls.cancel.label": "취소", + "StepNavigation.controls.next.label": "다음", + "StepNavigation.controls.prev.label": "이전", + "StepNavigation.controls.finish.label": "완료", + "Admin.TaskAnalysisTable.taskCountStatus": "현재 영역: 작업 {countShown}개", + "Admin.TaskAnalysisTable.taskPercentStatus": "현재 영역: 전체 작업 {countTotal}개 중 {countShown}개({percentShown}%)", + "Admin.TaskAnalysisTable.columnHeaders.actions": "행동", + "Task.fields.id.label": "내부 ID", + "Task.fields.featureId.label": "지물 ID", + "Task.fields.status.label": "상태", + "Task.fields.priority.label": "우선순위", + "Admin.TaskAnalysisTable.controls.reviewTask.label": "검토", + "Admin.TaskAnalysisTable.controls.editTask.label": "수정", + "Admin.TaskAnalysisTable.controls.startTask.label": "시작", + "Admin.TaskUploadProgress.uploadingTasks.header": "작업을 재구축하는 중", + "Admin.TaskUploadProgress.tasksUploaded.label": "작업 업로드 완료", + "Admin.Challenge.tasksBuilding": "작업을 구축하는 중...", + "Admin.Challenge.tasksFailed": "작업을 구축하는 데 실패했습니다", + "Admin.Challenge.tasksNone": "작업 없음", + "Admin.Challenge.tasksCreatedCount": "작업 {count, number}개가 생성되었습니다", + "Admin.Challenge.status.asOf.label": "일자:", + "Admin.Challenge.controls.refreshStatus.label": "상태 새로고침", + "Admin.ManageTasks.header": "작업", + "Admin.ManageTasks.geographicIndexingNotice": "새롭게 만든 도전이나 수정된 도전에서 색인 작업을 마치는 데 {delay}시간 정도 걸릴 수 있다는 점을 알아 두세요. 지도에 위치를 색인하는 작업이 끝나기 전까지는 위치를 기준으로 검색할 때 찾고자 하는 작업이 예상한 대로 나타나지 않을 수 있습니다.", + "Admin.manageTasks.controls.bulkSelection.tooltip": "동시에 처리한 작업을 선택", + "Admin.manageTasks.controls.markCreated.label": "모든 작업의 상태를 '생성됨'으로 되돌리기", + "Admin.manageTasks.controls.changePriority.label": "우선순위 변경", + "Admin.manageTasks.priorityLabel": "우선순위", + "Admin.manageTasks.controls.exportCSV.label": "CSV 내보내기", + "Admin.manageTasks.controls.clearFilters.label": "필터 초기화", + "Metrics.tasks.evaluatedByUser.label": "참여자가 평가한 작업", + "AutosuggestTextBox.labels.noResults": "일치하는 결과 없음", + "Form.textUpload.prompt": "GeoJSON 파일을 여기에 놓거나 클릭해서 파일을 업로드", + "Form.textUpload.readonly": "기존 파일이 사용됩니다", + "Form.controls.addPriorityRule.label": "규칙 추가", + "ChallengeFilterSubnav.filter.difficulty.label": "난이도", + "ChallengeFilterSubnav.filter.keyword.label": "작업 종류", + "ChallengeFilterSubnav.filter.location.label": "위치", + "ChallengeFilterSubnav.filter.search.label": "도전을 검색하는 중입니다...", + "Challenge.controls.unsave.label": "저장하지 않음", + "Challenge.controls.save.label": "저장", + "Challenge.fields.difficulty.label": "난이도", + "Challenge.indicators.virtualChallenge.tooltip": "가상 도전", + "Challenge.controls.start.label": "시작", + "Task.fields.saved.label": "저장됨", + "Task.fields.featured.label": "대표로 설정됨", + "Challenge.management.controls.manage.label": "관리", + "Challenge.fields.lastTaskRefresh.label": "작업 From", + "Challenge.fields.viewLeaderboard.label": "리더보드 보기", + "Challenge.results.heading": "도전", + "Challenge.controls.clearFilters.label": "필터 초기화", + "Challenge.results.noResults": "결과 없음", + "VirtualChallenge.controls.create.label": "작업 {taskCount, number}개로 만들기", + "VirtualChallenge.fields.name.label": "\"가상\" 도전의 명칭", + "Challenge.controls.loadMore.label": "결과 더 보기", + "Task.fauxStatus.available": "사용 가능", + "ChallengeProgress.tooltip.label": "작업", + "ChallengeSearchMap.controls.startChallenge.label": "도전 시작", + "CommentList.controls.viewTask.label": "작업 보기", + "ConfirmAction.title": "확인해 주세요", + "ConfirmAction.prompt": "정말 확실합니까? 이는 되돌릴 수 없습니다.", + "ConfirmAction.cancel": "취소", + "ConfirmAction.proceed": "계속", + "CongratulateModal.header": "축하드립니다!", + "CongratulateModal.primaryMessage": "도전이 완료되었습니다", + "CongratulateModal.control.dismiss.label": "계속", + "FitBoundsControl.tooltip": "지도의 작업할 지물에 맞춤", + "LayerToggle.controls.showTaskFeatures.label": "작업할 지물", + "LayerToggle.controls.showMapillary.label": "Mapillary", + "LayerToggle.imageCount": "({count, plural, =0 {이미지 없음} other {이미지 #개}})", + "LayerToggle.loading": "(불러오는 중...)", + "HelpPopout.control.label": "도움말", + "LayerSource.challengeDefault.label": "도전의 기본값", + "LayerSource.userDefault.label": "당신의 기본값", + "HomePane.header": "잠시 동안 세계 지도에 기여하는 사람이 되세요", + "HomePane.feedback.header": "피드백", + "HomePane.filterTagIntro": "당신에게 중요한 작업을 찾으세요.", + "HomePane.filterLocationIntro": "관심 있는 지역에 있는 문제를 고치세요.", + "HomePane.filterDifficultyIntro": "초보자부터 전문가까지, 자신의 수준에 맞는 작업을 하세요.", + "HomePane.createChallenges": "다른 사람들이 지도 데이터에 도움을 줄 수 있도록 작업을 생성하세요.", + "HomePane.subheader": "시작", + "Leaderboard.title": "리더보드:", + "Leaderboard.scoringMethod.label": "점수 획득 방법", + "Leaderboard.scoringMethod.explanation": "##### 점수는 아래 기준에 따라 작업을 하나씩 완수할 때마다 부여됩니다.\n\n| 상태 | 점수 |\n| :------------ | -----: |\n| 고침 | 5 |\n| 문제가 아님 | 3 |\n| 이미 고쳐짐 | 3 |\n| 너무 어려움 | 1 |\n| 넘김 | 0 |", + "Leaderboard.user.points": "점수", + "Leaderboard.user.topChallenges": "상위 도전", + "Leaderboard.users.none": "해당 기간 동안 기여한 사용자가 없음", + "General.controls.moreResults.label": "결과 더 보기", + "MobileNotSupported.header": "컴퓨터로 접속해 주세요", + "MobileNotSupported.message": "죄송합니다. MapRoulette은 현재 모바일 기기를 지원하지 않습니다.", + "MobileNotSupported.pageMessage": "죄송합니다. 이 페이지는 아직 모바일 기기나 그 외 작은 화면과 호환되지 않습니다.", + "MobileNotSupported.widenDisplay": "컴퓨터를 사용하고 있다면, 화면 크기를 키우거나 더 큰 모니터를 사용해 주세요.", + "Navbar.links.userProfile": "사용자 프로필", + "Navbar.links.signout": "로그아웃", + "Navbar.links.challengeResults": "도전", + "Navbar.links.leaderboard": "리더보드", + "Navbar.links.admin": "제작", + "Navbar.links.help": "도움말", + "Navbar.links.mobile.userProfile": "사용자 프로필", + "Navbar.mobile.links.signout": "로그아웃", + "PageNotFound.message": "죄송합니다. 여기에는 바다밖에 없습니다.", + "PageNotFound.returnTo": "되돌아가기:", + "PageNotFound.homePage": "홈페이지", + "PastDurationSelector.pastMonths.selectOption": "과거 {months, plural, one {1개월} =12 {1년} other {#개월}}", + "ScreenTooNarrow.header": "브라우저 창을 키워 주세요", + "ScreenTooNarrow.message": "이 페이지는 아직 작은 화면과 호환되지 않습니다. 화면 크기를 키우거나 더 큰 기기/모니터를 사용해 주세요.", + "ShareLink.controls.copy.label": "복사", + "SignIn.control.label": "로그인", + "Task.controls.moreOptions.label": "더 많은 옵션", + "Task.controls.alreadyFixed.label": "이미 고쳐짐", + "Task.controls.alreadyFixed.tooltip": "이미 고쳐짐", + "Task.controls.cancelEditing.label": "뒤로", + "Task.controls.cancelEditing.tooltip": "뒤로", + "Task.controls.completionComment.placeholder": "추가 댓글", + "ActiveTask.controls.fixed.label": "직접 고쳤습니다!", + "ActiveTask.controls.notFixed.label": "너무 어려움/볼 수 없음", + "ActiveTask.controls.aleadyFixed.label": "이미 고쳐짐", + "ActiveTask.controls.cancelEditing.label": "뒤로", + "Task.controls.edit.label": "수정", + "Task.controls.edit.tooltip": "수정", + "Task.controls.falsePositive.label": "문제가 아님", + "Task.controls.falsePositive.tooltip": "문제가 아님", + "Task.controls.fixed.label": "직접 고쳤습니다!", + "Task.controls.fixed.tooltip": "직접 고쳤습니다!", + "Task.controls.next.label": "다음 작업", + "Task.controls.next.tooltip": "다음 작업", + "Task.controls.skip.label": "넘기기", + "Task.controls.skip.tooltip": "작업 넘기기", + "Task.controls.tooHard.label": "너무 어려움/볼 수 없음", + "Task.controls.tooHard.tooltip": "너무 어려움/볼 수 없음", + "KeyboardShortcuts.control.label": "키보드 단축키", + "ActiveTask.keyboardShortcuts.label": "키보드 단축키 보기", + "ActiveTask.controls.info.tooltip": "작업 자세히 보기", + "ActiveTask.controls.comments.tooltip": "댓글 보기", + "ActiveTask.subheading.comments": "댓글", + "ActiveTask.heading": "도전 정보", + "ActiveTask.subheading.instructions": "지시", + "ActiveTask.subheading.location": "위치", + "ActiveTask.subheading.progress": "도전 진척도", + "ActiveTask.subheading.social": "공유", + "Admin.TaskReview.controls.previousTask.label": "이전 작업", + "Admin.TaskReview.controls.nextTask.label": "다음 작업", + "Admin.TaskReview.controls.editTask.label": "작업 수정", + "Admin.TaskReview.controls.modifyTask.label": "작업 데이터 변경", + "Admin.TaskReview.controls.postTaskComment.label": "올리기", + "ActiveTask.subheading.status": "기존 상태", + "ActiveTask.controls.status.tooltip": "기존 상태", + "ActiveTask.controls.viewChangset.label": "바뀜집합 보기", + "MobileTask.subheading.instructions": "지시", + "Task.controls.contactOwner.label": "연락처 주인", + "Task.controls.contactLink.label": "오픈스트리트맵으로 {owner}에게 메시지 보내기", + "Task.management.heading": "관리 옵션", + "Task.management.controls.review.label": "검토", + "Task.management.controls.modify.label": "변경", + "Challenge.controls.taskLoadBy.label": "다음 위치에서 작업 불러오기:", + "Task.controls.track.label": "이 작업 추적", + "Task.controls.untrack.label": "이 작업 추적을 멈춤", + "ActiveTask.indicators.virtualChallenge.tooltip": "가상 도전", + "UserProfile.apiKey.header": "API 키", + "UserProfile.apiKey.controls.copy.label": "복사", + "UserProfile.apiKey.controls.reset.label": "초기화", + "UserProfile.tabs.overview": "개요", + "UserProfile.tabs.activity": "활동", + "UserProfile.tabs.settings": "설정", + "UserProfile.savedChallenges.header": "저장된 도전", + "Challenge.controls.unsave.tooltip": "저장되지 않은 도전", + "UserProfile.savedTasks.header": "추적되는 작업", + "Task.unsave.control.tooltip": "추적 멈추기", + "UserProfile.topChallenges.header": "당신의 상위 도전", + "UserProfile.settings.header": "사용자 설정", + "UserSettings.form.defaultEditor.label": "기본 편집기", + "UserSettings.form.defaultEditor.description": "작업에 임할 때 사용할 기본 편집기를 선택하세요. 이 옵션을 선택하면 작업 수정을 클릭하고 나서 뜨는 편집기 선택 창을 보지 않을 수 있습니다.", + "UserSettings.form.defaultBasemap.label": "기본 배경 지도", + "UserSettings.form.defaultBasemap.description": "지도에 표시할 기본 배경 지도를 선택하세요. 도전에서 설정된 기본 배경 지도만 이 옵션(사용자 설정 배경 지도)보다 우선 순위가 높습니다.", + "UserSettings.form.customBasemap.label": "사용자 지정 배경 지도", + "UserSettings.form.customBasemap.description": "여기에 원하는 배경 지도를 넣으세요. 예시: `https://\\{s\\}.tile.openstreetmap.org/\\{z\\}/\\{x\\}/\\{y\\}.png` {dummy}", + "UserSettings.form.locale.label": "언어", + "UserSettings.form.locale.description": "MapRoulette UI에 적용할 언어를 선택하세요.", + "UserSettings.form.leaderboardOptOut.label": "리더보드에 기록하지 않기", + "UserSettings.form.leaderboardOptOut.description": "예를 선택하면, 당신은 공개 리더보드에 기록되지 **않습니다**.", + "Admin.EditChallenge.overpass.errors.noTurboShortcuts": "Overpass Turbo 축약어는 지원되지 않습니다. 이 소스 코드를 사용하고 싶다면, Overpass Turbo로 들어가 쿼리를 테스트해 보고 나서, 내보내기 -> 쿼리 -> 독립 -> 복사한 내용을 여기에 붙여넣기하세요.", + "Activity.action.updated": "업데이트됨", + "Activity.action.created": "생성됨", + "Activity.action.deleted": "삭제됨", + "Activity.action.taskViewed": "봄", + "Activity.action.taskStatusSet": "상태를 다음으로 설정:", + "Activity.action.tagAdded": "다음 지물에 태그 추가:", + "Activity.action.tagRemoved": "다음 지물에서 태그 삭제:", + "Activity.action.questionAnswered": "답변된 질문:", + "Activity.item.project": "프로젝트", + "Activity.item.challenge": "작업", + "Activity.item.task": "작업", + "Activity.item.tag": "태그", + "Activity.item.survey": "조사", + "Activity.item.user": "사용자", + "Activity.item.group": "그룹", + "Challenge.basemap.none": "없음", + "Admin.Challenge.basemap.none": "기본값", + "Challenge.basemap.openStreetMap": "오픈스트리트맵", + "Challenge.basemap.openCycleMap": "OpenCycleMap", + "Challenge.basemap.bing": "Bing", + "Challenge.basemap.custom": "사용자 지정", + "Challenge.difficulty.easy": "쉬움", + "Challenge.difficulty.normal": "보통", + "Challenge.difficulty.expert": "전문가", + "Challenge.difficulty.any": "전부", + "Challenge.keywords.navigation": "도로/보행자 도로/자전거 도로", + "Challenge.keywords.water": "수역", + "Challenge.keywords.pointsOfInterest": "관심 지점/영역", + "Challenge.keywords.buildings": "건물", + "Challenge.keywords.landUse": "토지 이용/행정 경계", + "Challenge.keywords.transit": "교통", + "Challenge.keywords.other": "기타", + "Challenge.keywords.any": "전부", + "Challenge.location.nearMe": "내 근처", + "Challenge.location.withinMapBounds": "지도 경계 안쪽만", + "Challenge.location.intersectingMapBounds": "지도 경계 안쪽을 지나감", + "Challenge.location.any": "전체", + "Challenge.status.none": "적용할 수 없음", + "Challenge.status.building": "구축 중", + "Challenge.status.failed": "실패", + "Challenge.status.ready": "준비됨", + "Challenge.status.partiallyLoaded": "일부만 불러오기 완료됨", + "Challenge.status.finished": "완료", + "Challenge.type.challenge": "도전", + "Challenge.type.survey": "조사", + "Dashboard.ChallengeFilter.visible.label": "보임", + "Dashboard.ChallengeFilter.pinned.label": "고정함", + "Dashboard.ProjectFilter.visible.label": "보임", + "Dashboard.ProjectFilter.owner.label": "소유함", + "Dashboard.ProjectFilter.pinned.label": "고정함", + "Editor.none.label": "없음", + "Editor.id.label": "iD(웹 편집기)에서 편집", + "Editor.josm.label": "JOSM에서 편집", + "Editor.josmLayer.label": "새 JOSM 레이어에서 편집", + "Editor.josmFeatures.label": "JOSM에서 해당 지물만 편집", + "Editor.level0.label": "Level0에서 편집", + "Errors.user.missingHomeLocation": "현재 위치를 찾을 수 없습니다. 브라우저에서 권한을 획득하거나 openstreetmap.org로 들어가 환경설정에서 현재 위치를 설정하세요(오픈스트리트맵 계정에서 변경된 내용을 반영하려면 MapRoulette 사이트에서 로그아웃하고 나서 다시 로그인해야 할 수도 있습니다).", + "Errors.user.unauthenticated": "계속 진행하려면 로그인해 주세요.", + "Errors.user.unauthorized": "죄송합니다. 권한이 부족해 이 행동을 취할 수 없습니다.", + "Errors.user.updateFailure": "서버에 있는 사용자 정보를 업데이트할 수 없습니다.", + "Errors.user.fetchFailure": "서버에서 사용자 정보를 가져올 수 없습니다.", + "Errors.user.notFound": "이 사용자명을 가진 사람을 찾을 수 없습니다.", + "Errors.leaderboard.fetchFailure": "리더보드를 가져올 수 업습니다.", + "Errors.task.none": "이 도전에는 남은 작업이 없습니다.", + "Errors.task.saveFailure": "변경 내역을 저장할 수 없습니다{자세히 보기}", + "Errors.task.updateFailure": "변경 내역을 저장할 수 없습니다s.", + "Errors.task.deleteFailure": "작업을 삭제할 수 없습니다.", + "Errors.task.fetchFailure": "작업을 가져올 수 없습니다.", + "Errors.task.doesNotExist": "작업이 존재하지 않습니다.", + "Errors.clusteredTask.fetchFailure": "작업 뭉치를 가져올 수 없습니다", + "Errors.boundedTask.fetchFailure": "지도 안에 있는 작업을 가져올 수 없습니다", + "Errors.challenge.fetchFailure": "서버에서 최신 버전의 도전 데이터를 가져올 수 없습니다.", + "Errors.challenge.searchFailure": "서버에서 도전을 검색할 수 없습니다.", + "Errors.challenge.deleteFailure": "도전을 삭제할 수 없습니다.", + "Errors.challenge.saveFailure": "변경 내역을 저장할 수 없습니다{자세히 보기}", + "Errors.challenge.rebuildFailure": "도전에 속한 작업들을 재구축할 수 없습니다", + "Errors.challenge.doesNotExist": "도전이 존재하지 않습니다.", + "Errors.virtualChallenge.fetchFailure": "서버에서 최신 버전의 가상 도전 데이터를 가져올 수 없습니다.", + "Errors.virtualChallenge.createFailure": "가상 도전을 만들 수 없습니다{자세히 보기}", + "Errors.virtualChallenge.expired": "가상 도전이 만료되었습니다.", + "Errors.project.saveFailure": "변경 내역을 저장할 수 없습니다{자세히 보기}", + "Errors.project.fetchFailure": "서버에서 최신 버전의 프로젝트 데이터를 가져올 수 없습니다.", + "Errors.project.searchFailure": "프로젝트를 검색할 수 없습니다.", + "Errors.project.deleteFailure": "프로젝트를 삭제할 수 없습니다.", + "Errors.project.notManager": "이 프로젝트의 관리자만 계속 진행할 수 있습니다.", + "Errors.map.renderFailure": "지도를 띄울 수 없습니다. 사용자 지정 백지도의 문제인 경우가 많습니다.", + "Errors.dashboard.renderFailure": "대시보드를 띄울 수 없습니다. 작업 레이아웃으로 전환합니다.", + "Errors.josm.noResponse": "오픈스트리트맵 원격 조종이 응답하지 않습니다. 원격 제어가 활성화된 상태에서 실행 중인 JOSM이 있습니까?", + "Errors.josm.missingFeatureIds": "작업할 지물에 오픈스트리트맵 ID가 없어 해당 지물만 선택해 불러올 수 없습니다. 다른 옵션을 선택해 주세요.", + "KeyMapping.openEditor.editId": "Id에서 편집", + "KeyMapping.openEditor.editJosm": "JOSM에서 편집", + "KeyMapping.openEditor.editJosmLayer": "JOSM에서 편집(새 레이어)", + "KeyMapping.openEditor.editJosmFeatures": "JOSM에서 편집(해당 지물만 불러오기)", + "KeyMapping.openEditor.editLevel0": "Level0에서 편집", + "KeyMapping.taskEditing.cancel": "편집 취소", + "KeyMapping.taskEditing.fitBounds": "지도를 작업할 지물에 맞추기", + "KeyMapping.taskEditing.escapeLabel": "ESC", + "KeyMapping.taskCompletion.skip": "넘기기", + "KeyMapping.taskCompletion.falsePositive": "문제가 아님", + "KeyMapping.taskCompletion.fixed": "직접 고쳤습니다!", + "KeyMapping.taskCompletion.tooHard": "너무 어려움/볼 수 없음", + "KeyMapping.taskCompletion.alreadyFixed": "이미 고쳐짐", + "KeyMapping.taskReview.nextTask": "다음 작업", + "KeyMapping.taskReview.prevTask": "이전 작업", + "Project.GroupType.admin": "관리자", + "Project.GroupType.write": "쓰기", + "Project.GroupType.read": "읽기", + "Challenge.sort.name": "이름", + "Challenge.sort.created": "생성 날짜", + "Challenge.sort.popularity": "인기", + "Challenge.sort.default": "스마트", + "Task.loadByMethod.random": "임의의 작업", + "Task.loadByMethod.proximity": "가까운 작업", + "Task.priority.high": "높음", + "Task.priority.medium": "중간", + "Task.priority.low": "낮음", + "Task.status.created": "생성됨", + "Task.status.fixed": "고침", + "Task.status.falsePositive": "문제가 아님", + "Task.status.skipped": "넘김", + "Task.status.deleted": "삭제됨", + "Task.status.alreadyFixed": "이미 고쳐짐", + "Task.status.tooHard": "너무 어려움", + "Locale.en-US.label": "en-US (U.S. English)", + "Locale.es.label": "es (Español)", + "Locale.de.label": "de (Deutsch)", + "Locale.fr.label": "fr (Français)", + "Locale.af.label": "af (Afrikaans)", + "Locale.ja.label": "ja (日本語)", + "Locale.ko.label": "ko (한국어)" +} diff --git a/src/services/User/Locale/Locale.js b/src/services/User/Locale/Locale.js index a73433187..3abf4eea1 100644 --- a/src/services/User/Locale/Locale.js +++ b/src/services/User/Locale/Locale.js @@ -8,6 +8,7 @@ import frMessages from '../../../lang/fr.json' import deMessages from '../../../lang/de.json' import afMessages from '../../../lang/af.json' import jaMessages from '../../../lang/ja.json' +import koMessages from '../../../lang/ko.json' // Supported locales. export const Locale = Object.freeze({ @@ -17,6 +18,7 @@ export const Locale = Object.freeze({ de: 'de', af: 'af', ja: 'ja', + ko: 'ko', }) /** @@ -38,6 +40,7 @@ export const translatedMessages = Object.freeze({ [Locale.de]: deMessages, [Locale.af]: afMessages, [Locale.ja]: jaMessages, + [Locale.ko]: koMessages, }) /** diff --git a/src/services/User/Locale/Messages.js b/src/services/User/Locale/Messages.js index 266c5b14c..26e6ba36c 100644 --- a/src/services/User/Locale/Messages.js +++ b/src/services/User/Locale/Messages.js @@ -28,4 +28,8 @@ export default defineMessages({ id: "Locale.ja.label", defaultMessage: "ja (日本語)", }, + ko: { + id: "Locale.ko.label", + defaultMessage: "ko (한국어)", + }, }) From c3cd0f97a4c0fe2c87f65bc50fffdeebf9281bb3 Mon Sep 17 00:00:00 2001 From: Neil Rotstan Date: Fri, 1 Feb 2019 19:01:01 -0800 Subject: [PATCH 07/16] Offer OSM data layer during task completion (#613) * Offer new OSM data layer during task completion that fetches all of the OSM data for the current map bounds and renders the nodes/ways/relations on the map. Clicking on an item will show a popup with its OSM id (linked to details on openstreetmap.org) and tags * Add keyboard shortcuts for a few of the layers available during task completion: task features layer (`s`), mapillary layer (`m`), and OSM data layer (`o`) --- src/components/EnhancedMap/EnhancedMap.js | 38 +- .../EnhancedMap/LayerToggle/LayerToggle.js | 18 +- .../EnhancedMap/LayerToggle/Messages.js | 5 + .../EnhancedMap/MapPane/MapPane.scss | 4 - .../EnhancedMap/OSMDataLayer/OSMDataLayer.js | 270 + .../EnhancedMap/PropertyList/PropertyList.js | 41 + .../HOCs/WithCurrentTask/WithCurrentTask.js | 7 +- .../WithCurrentTask.test.js.snap | 1 + .../TaskAlreadyFixedControl.test.js.snap | 23 + .../TaskCancelEditingControl.test.js.snap | 23 + .../TaskCompletionStep1.test.js.snap | 966 +++ .../TaskCompletionStep2.test.js.snap | 2887 ++++++++- .../TaskEditControl.test.js.snap | 69 + .../TaskFalsePositiveControl.test.js.snap | 23 + .../TaskFixedControl.test.js.snap | 23 + .../TaskSkipControl.test.js.snap | 23 + .../TaskTooHardControl.test.js.snap | 23 + .../ActiveTaskControls.test.js.snap | 5203 +++++++++++++++-- src/components/TaskPane/TaskMap/TaskMap.js | 73 +- .../TaskPane/TaskMap/TaskMap.test.js | 3 + .../__snapshots__/TaskMap.test.js.snap | 49 + src/lang/en-US.json | 9 +- src/services/Error/AppErrors.js | 6 + src/services/Error/Messages.js | 15 +- src/services/KeyboardShortcuts/KeyMappings.js | 5 + src/services/KeyboardShortcuts/Messages.js | 15 + src/services/OSM/OSM.js | 56 + src/services/OSMUser/OSMUser.js | 24 - 28 files changed, 9497 insertions(+), 405 deletions(-) create mode 100644 src/components/EnhancedMap/OSMDataLayer/OSMDataLayer.js create mode 100644 src/components/EnhancedMap/PropertyList/PropertyList.js create mode 100644 src/services/OSM/OSM.js delete mode 100644 src/services/OSMUser/OSMUser.js diff --git a/src/components/EnhancedMap/EnhancedMap.js b/src/components/EnhancedMap/EnhancedMap.js index a4a90cb1d..5e77dade3 100644 --- a/src/components/EnhancedMap/EnhancedMap.js +++ b/src/components/EnhancedMap/EnhancedMap.js @@ -1,9 +1,11 @@ +import React from 'react' +import ReactDOM from 'react-dom' import PropTypes from 'prop-types' import { Map } from 'react-leaflet' import { geoJSON, LatLngBounds, LatLng, latLng } from 'leaflet' import _isEmpty from 'lodash/isEmpty' -import _map from 'lodash/map' import _isEqual from 'lodash/isEqual' +import PropertyList from './PropertyList/PropertyList' /** * EnhancedMap is an extension of the react-leaflet Map that provides @@ -149,34 +151,12 @@ export default class EnhancedMap extends Map { } propertyList = featureProperties => { - const tagInfo = process.env.REACT_APP_TAGINFO_SERVER_URL - - if (_isEmpty(featureProperties)) { - return "
No Properties
" - } - else { - return ( - "
" + - "

Properties

" + - "" + - "" + - _map(featureProperties, (value, key) => - "" + - "" + - `` + - "" - ).join('') + - "" + - "" + - "" - ) - } + const contentElement = document.createElement('div') + ReactDOM.render( + , + contentElement + ) + return contentElement } componentDidMount() { diff --git a/src/components/EnhancedMap/LayerToggle/LayerToggle.js b/src/components/EnhancedMap/LayerToggle/LayerToggle.js index 07e475fba..07b2b77fa 100644 --- a/src/components/EnhancedMap/LayerToggle/LayerToggle.js +++ b/src/components/EnhancedMap/LayerToggle/LayerToggle.js @@ -75,7 +75,7 @@ export class LayerToggle extends Component { {this.props.toggleTaskFeatures &&
this.props.toggleTaskFeatures()}> + onClick={this.props.toggleTaskFeatures}>
} + {this.props.toggleOSMData && +
+
+ + +
+
+ } {this.props.toggleMapillary &&
{ + const header = ( + + {layer.feature.type} {layer.feature.id} + + ) + + const contentElement = document.createElement('div') + ReactDOM.render( + , + contentElement + ) + return contentElement + } + + createLeafletElement(props) { + const layerGroup = new L.OSM.DataLayer(props.xmlData, { + styles: { + way: { color: OSM_DATA_COLOR }, + area: { color: OSM_DATA_COLOR }, + node: { color: OSM_DATA_COLOR }, + changeset: { color: OSM_DATA_COLOR }, + }, + }) + + layerGroup.eachLayer(layer => layer.options.fill = false) + layerGroup.bindPopup(this.popupContent) + return layerGroup + } +} + +// The below code (with a couple minor linter fixes) comes from the +// [leaflet-osm](https://github.com/openstreetmap/leaflet-osm) project's +// `leaflet-osm.js` file. Because that project's npm package hasn't been +// updated in ages despite ongoing improvements to the codebase, and given that +// the package is just one file, it's simpler to just pull the code in here +// than fight with all the yarn errors resulting from the old npm +// configuration. Todo: create a separate react-leaflet npm package for +// leaflet-osm +L.OSM = {}; +L.OSM.DataLayer = L.FeatureGroup.extend({ + options: { + areaTags: ['area', 'building', 'leisure', 'tourism', 'ruins', 'historic', 'landuse', 'military', 'natural', 'sport'], + uninterestingTags: ['source', 'source_ref', 'source:ref', 'history', 'attribution', 'created_by', 'tiger:county', 'tiger:tlid', 'tiger:upload_uuid'], + styles: {} + }, + + initialize: function (xml, options) { + L.Util.setOptions(this, options); + + L.FeatureGroup.prototype.initialize.call(this); + + if (xml) { + this.addData(xml); + } + }, + + addData: function (features) { + if (!(features instanceof Array)) { + features = this.buildFeatures(features); + } + + for (var i = 0; i < features.length; i++) { + var feature = features[i], layer; + + if (feature.type === "changeset") { + layer = L.rectangle(feature.latLngBounds, this.options.styles.changeset); + } else if (feature.type === "node") { + layer = L.circleMarker(feature.latLng, this.options.styles.node); + } else { + var latLngs = new Array(feature.nodes.length); + + for (var j = 0; j < feature.nodes.length; j++) { + latLngs[j] = feature.nodes[j].latLng; + } + + if (this.isWayArea(feature)) { + latLngs.pop(); // Remove last == first. + layer = L.polygon(latLngs, this.options.styles.area); + } else { + layer = L.polyline(latLngs, this.options.styles.way); + } + } + + layer.addTo(this); + layer.feature = feature; + } + }, + + buildFeatures: function (xml) { + var features = L.OSM.getChangesets(xml), + nodes = L.OSM.getNodes(xml), + ways = L.OSM.getWays(xml, nodes), + relations = L.OSM.getRelations(xml, nodes, ways); + + for (var node_id in nodes) { + var node = nodes[node_id]; + if (this.interestingNode(node, ways, relations)) { + features.push(node); + } + } + + for (var i = 0; i < ways.length; i++) { + var way = ways[i]; + features.push(way); + } + + return features; + }, + + isWayArea: function (way) { + if (way.nodes[0] !== way.nodes[way.nodes.length - 1]) { + return false; + } + + for (var key in way.tags) { + if (~this.options.areaTags.indexOf(key)) { + return true; + } + } + + return false; + }, + + interestingNode: function (node, ways, relations) { + var used = false; + var i = 0; + + for (i = 0; i < ways.length; i++) { + if (ways[i].nodes.indexOf(node) >= 0) { + used = true; + break; + } + } + + if (!used) { + return true; + } + + for (i = 0; i < relations.length; i++) { + if (relations[i].members.indexOf(node) >= 0) + return true; + } + + for (var key in node.tags) { + if (this.options.uninterestingTags.indexOf(key) < 0) { + return true; + } + } + + return false; + } +}); + +L.Util.extend(L.OSM, { + getChangesets: function (xml) { + var result = []; + + var nodes = xml.getElementsByTagName("changeset"); + for (var i = 0; i < nodes.length; i++) { + var node = nodes[i], id = node.getAttribute("id"); + result.push({ + id: id, + type: "changeset", + latLngBounds: L.latLngBounds( + [node.getAttribute("min_lat"), node.getAttribute("min_lon")], + [node.getAttribute("max_lat"), node.getAttribute("max_lon")]), + tags: this.getTags(node) + }); + } + + return result; + }, + + getNodes: function (xml) { + var result = {}; + + var nodes = xml.getElementsByTagName("node"); + for (var i = 0; i < nodes.length; i++) { + var node = nodes[i], id = node.getAttribute("id"); + result[id] = { + id: id, + type: "node", + latLng: L.latLng(node.getAttribute("lat"), + node.getAttribute("lon"), + true), + tags: this.getTags(node) + }; + } + + return result; + }, + + getWays: function (xml, nodes) { + var result = []; + + var ways = xml.getElementsByTagName("way"); + for (var i = 0; i < ways.length; i++) { + var way = ways[i], nds = way.getElementsByTagName("nd"); + + var way_object = { + id: way.getAttribute("id"), + type: "way", + nodes: new Array(nds.length), + tags: this.getTags(way) + }; + + for (var j = 0; j < nds.length; j++) { + way_object.nodes[j] = nodes[nds[j].getAttribute("ref")]; + } + + result.push(way_object); + } + + return result; + }, + + getRelations: function (xml, nodes, ways) { + var result = []; + + var rels = xml.getElementsByTagName("relation"); + for (var i = 0; i < rels.length; i++) { + var rel = rels[i], members = rel.getElementsByTagName("member"); + + var rel_object = { + id: rel.getAttribute("id"), + type: "relation", + members: new Array(members.length), + tags: this.getTags(rel) + }; + + for (var j = 0; j < members.length; j++) { + if (members[j].getAttribute("type") === "node") + rel_object.members[j] = nodes[members[j].getAttribute("ref")]; + else // relation-way and relation-relation membership not implemented + rel_object.members[j] = null; + } + + result.push(rel_object); + } + + return result; + }, + + getTags: function (xml) { + var result = {}; + + var tags = xml.getElementsByTagName("tag"); + for (var j = 0; j < tags.length; j++) { + result[tags[j].getAttribute("k")] = tags[j].getAttribute("v"); + } + + return result; + } +}); diff --git a/src/components/EnhancedMap/PropertyList/PropertyList.js b/src/components/EnhancedMap/PropertyList/PropertyList.js new file mode 100644 index 000000000..a91b80db8 --- /dev/null +++ b/src/components/EnhancedMap/PropertyList/PropertyList.js @@ -0,0 +1,41 @@ +import React from 'react' +import _map from 'lodash/map' +import _isEmpty from 'lodash/isEmpty' + +/** + * Renders a list of properties in a table, intended for use in a map popup + * + * @author [Neil Rotstan](https://github.com/nrotstan) + */ +const PropertyList = props => { + const tagInfo = process.env.REACT_APP_TAGINFO_SERVER_URL + + if (_isEmpty(props.featureProperties)) { + return
No Properties
+ } + + const rows = _map(props.featureProperties, (value, key) => { + const link = + !_isEmpty(tagInfo) ? + {key} : + {key} + + return ( +
+ + + + ) + }) + + return ( +
+

{props.header || "Properties"}

+
" + - ( - !_isEmpty(tagInfo) ? - `${key}` : - `${key}` - ) + - "${value}
{link}{value}
+ {rows} +
+
+ ) +} + +export default PropertyList diff --git a/src/components/HOCs/WithCurrentTask/WithCurrentTask.js b/src/components/HOCs/WithCurrentTask/WithCurrentTask.js index e1a71c8f0..dd2f1a11d 100644 --- a/src/components/HOCs/WithCurrentTask/WithCurrentTask.js +++ b/src/components/HOCs/WithCurrentTask/WithCurrentTask.js @@ -18,7 +18,7 @@ import { fetchChallenge, fetchParentProject } from '../../../services/Challenge/Challenge' import { TaskLoadMethod } from '../../../services/Task/TaskLoadMethod/TaskLoadMethod' -import { fetchOSMUser } from '../../../services/OSMUser/OSMUser' +import { fetchOSMUser, fetchOSMData } from '../../../services/OSM/OSM' import { fetchChallengeActions } from '../../../services/Challenge/Challenge' import { renewVirtualChallenge } from '../../../services/VirtualChallenge/VirtualChallenge' @@ -202,6 +202,11 @@ export const mapDispatchToProps = (dispatch, ownProps) => { }, fetchOSMUser, + fetchOSMData: bbox => { + return fetchOSMData(bbox).catch(error => { + dispatch(addError(error)) + }) + }, } } diff --git a/src/components/HOCs/WithCurrentTask/__snapshots__/WithCurrentTask.test.js.snap b/src/components/HOCs/WithCurrentTask/__snapshots__/WithCurrentTask.test.js.snap index 5da1f8618..0f61475d3 100644 --- a/src/components/HOCs/WithCurrentTask/__snapshots__/WithCurrentTask.test.js.snap +++ b/src/components/HOCs/WithCurrentTask/__snapshots__/WithCurrentTask.test.js.snap @@ -3,6 +3,7 @@ exports[`mapDispatchToProps maps some functions 1`] = ` Object { "completeTask": [Function], + "fetchOSMData": [Function], "fetchOSMUser": [Function], "loadTask": [Function], "nextTask": [Function], diff --git a/src/components/TaskPane/ActiveTaskDetails/ActiveTaskControls/TaskAlreadyFixedControl/__snapshots__/TaskAlreadyFixedControl.test.js.snap b/src/components/TaskPane/ActiveTaskDetails/ActiveTaskControls/TaskAlreadyFixedControl/__snapshots__/TaskAlreadyFixedControl.test.js.snap index be43b827f..17a6ccffd 100644 --- a/src/components/TaskPane/ActiveTaskDetails/ActiveTaskControls/TaskAlreadyFixedControl/__snapshots__/TaskAlreadyFixedControl.test.js.snap +++ b/src/components/TaskPane/ActiveTaskDetails/ActiveTaskControls/TaskAlreadyFixedControl/__snapshots__/TaskAlreadyFixedControl.test.js.snap @@ -15,6 +15,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", diff --git a/src/components/TaskPane/ActiveTaskDetails/ActiveTaskControls/TaskCancelEditingControl/__snapshots__/TaskCancelEditingControl.test.js.snap b/src/components/TaskPane/ActiveTaskDetails/ActiveTaskControls/TaskCancelEditingControl/__snapshots__/TaskCancelEditingControl.test.js.snap index 8e550e58c..4c2eef33d 100644 --- a/src/components/TaskPane/ActiveTaskDetails/ActiveTaskControls/TaskCancelEditingControl/__snapshots__/TaskCancelEditingControl.test.js.snap +++ b/src/components/TaskPane/ActiveTaskDetails/ActiveTaskControls/TaskCancelEditingControl/__snapshots__/TaskCancelEditingControl.test.js.snap @@ -15,6 +15,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", diff --git a/src/components/TaskPane/ActiveTaskDetails/ActiveTaskControls/TaskCompletionStep1/__snapshots__/TaskCompletionStep1.test.js.snap b/src/components/TaskPane/ActiveTaskDetails/ActiveTaskControls/TaskCompletionStep1/__snapshots__/TaskCompletionStep1.test.js.snap index 9571d1dc2..aad6cbc49 100644 --- a/src/components/TaskPane/ActiveTaskDetails/ActiveTaskControls/TaskCompletionStep1/__snapshots__/TaskCompletionStep1.test.js.snap +++ b/src/components/TaskPane/ActiveTaskDetails/ActiveTaskControls/TaskCompletionStep1/__snapshots__/TaskCompletionStep1.test.js.snap @@ -19,6 +19,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -241,6 +264,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -463,6 +509,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -694,6 +763,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -876,6 +968,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -1046,6 +1161,29 @@ ShallowWrapper { isMinimized={false} keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -1216,6 +1354,29 @@ ShallowWrapper { isMinimized={false} keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -1390,6 +1551,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -1556,6 +1740,29 @@ ShallowWrapper { }, "isMinimized": false, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -1722,6 +1929,29 @@ ShallowWrapper { }, "isMinimized": false, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -1899,6 +2129,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -2069,6 +2322,29 @@ ShallowWrapper { isMinimized={false} keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -2239,6 +2515,29 @@ ShallowWrapper { isMinimized={false} keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -2413,6 +2712,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -2579,6 +2901,29 @@ ShallowWrapper { }, "isMinimized": false, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -2745,6 +3090,29 @@ ShallowWrapper { }, "isMinimized": false, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -2929,6 +3297,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -3111,6 +3502,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -3281,6 +3695,29 @@ ShallowWrapper { isMinimized={false} keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -3451,6 +3888,29 @@ ShallowWrapper { isMinimized={false} keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -3625,6 +4085,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -3791,6 +4274,29 @@ ShallowWrapper { }, "isMinimized": false, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -3957,6 +4463,29 @@ ShallowWrapper { }, "isMinimized": false, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -4134,6 +4663,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -4304,6 +4856,29 @@ ShallowWrapper { isMinimized={false} keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -4474,6 +5049,29 @@ ShallowWrapper { isMinimized={false} keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -4648,6 +5246,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -4814,6 +5435,29 @@ ShallowWrapper { }, "isMinimized": false, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -4980,6 +5624,29 @@ ShallowWrapper { }, "isMinimized": false, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -5164,6 +5831,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -5346,6 +6036,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -5516,6 +6229,29 @@ ShallowWrapper { isMinimized={false} keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -5686,6 +6422,29 @@ ShallowWrapper { isMinimized={false} keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -5860,6 +6619,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -6026,6 +6808,29 @@ ShallowWrapper { }, "isMinimized": false, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -6192,6 +6997,29 @@ ShallowWrapper { }, "isMinimized": false, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -6369,6 +7197,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -6539,6 +7390,29 @@ ShallowWrapper { isMinimized={false} keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -6709,6 +7583,29 @@ ShallowWrapper { isMinimized={false} keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -6883,6 +7780,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -7049,6 +7969,29 @@ ShallowWrapper { }, "isMinimized": false, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -7215,6 +8158,29 @@ ShallowWrapper { }, "isMinimized": false, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", diff --git a/src/components/TaskPane/ActiveTaskDetails/ActiveTaskControls/TaskCompletionStep2/__snapshots__/TaskCompletionStep2.test.js.snap b/src/components/TaskPane/ActiveTaskDetails/ActiveTaskControls/TaskCompletionStep2/__snapshots__/TaskCompletionStep2.test.js.snap index 4874d3e17..bf63ffbae 100644 --- a/src/components/TaskPane/ActiveTaskDetails/ActiveTaskControls/TaskCompletionStep2/__snapshots__/TaskCompletionStep2.test.js.snap +++ b/src/components/TaskPane/ActiveTaskDetails/ActiveTaskControls/TaskCompletionStep2/__snapshots__/TaskCompletionStep2.test.js.snap @@ -20,6 +20,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -196,6 +219,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -365,6 +411,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -535,6 +604,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -704,6 +796,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -878,6 +993,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -1054,6 +1192,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -1223,6 +1384,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -1393,6 +1577,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -1562,6 +1769,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -1736,6 +1966,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -1912,6 +2165,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -2081,6 +2357,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -2251,6 +2550,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -2420,6 +2742,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -2594,6 +2939,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -2770,6 +3138,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -2939,6 +3330,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -3109,6 +3523,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -3278,6 +3715,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -3461,6 +3921,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -3642,6 +4125,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -3810,6 +4316,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -3978,6 +4507,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -4147,6 +4699,29 @@ ShallowWrapper { isMinimized={false} keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -4316,15 +4891,38 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { - "openEditor": Object { - "editId": Object { - "key": "e", + "layers": Object { + "layerMapillary": Object { + "key": "m", "label": Object { - "defaultMessage": "Edit in Id", - "id": "KeyMapping.openEditor.editId", + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", }, }, - "editJosm": Object { + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, + "openEditor": Object { + "editId": Object { + "key": "e", + "label": Object { + "defaultMessage": "Edit in Id", + "id": "KeyMapping.openEditor.editId", + }, + }, + "editJosm": Object { "key": "r", "label": Object { "defaultMessage": "Edit in JOSM", @@ -4488,6 +5086,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -4652,6 +5273,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -4816,6 +5460,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -4981,6 +5648,29 @@ ShallowWrapper { }, "isMinimized": false, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -5146,6 +5836,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -5321,6 +6034,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -5489,6 +6225,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -5657,6 +6416,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -5826,6 +6608,29 @@ ShallowWrapper { isMinimized={false} keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -5995,6 +6800,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -6167,6 +6995,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -6331,6 +7182,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -6495,6 +7369,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -6660,6 +7557,29 @@ ShallowWrapper { }, "isMinimized": false, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -6825,6 +7745,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -7008,6 +7951,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -7189,6 +8155,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -7357,6 +8346,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -7525,6 +8537,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -7694,6 +8729,29 @@ ShallowWrapper { isMinimized={false} keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -7863,6 +8921,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -8035,6 +9116,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -8199,6 +9303,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -8363,6 +9490,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -8528,6 +9678,29 @@ ShallowWrapper { }, "isMinimized": false, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -8693,6 +9866,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -8868,6 +10064,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -9036,6 +10255,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -9204,6 +10446,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -9373,6 +10638,29 @@ ShallowWrapper { isMinimized={false} keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -9542,6 +10830,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -9714,6 +11025,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -9878,6 +11212,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -10042,6 +11399,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -10207,6 +11587,29 @@ ShallowWrapper { }, "isMinimized": false, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -10372,6 +11775,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -10555,6 +11981,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -10736,6 +12185,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -10904,6 +12376,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -11072,6 +12567,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -11241,6 +12759,29 @@ ShallowWrapper { isMinimized={false} keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -11410,6 +12951,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -11582,6 +13146,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -11746,6 +13333,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -11910,6 +13520,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -12075,6 +13708,29 @@ ShallowWrapper { }, "isMinimized": false, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -12240,6 +13896,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -12415,6 +14094,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -12583,6 +14285,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -12751,6 +14476,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -12920,6 +14668,29 @@ ShallowWrapper { isMinimized={false} keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -13089,6 +14860,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -13261,6 +15055,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -13425,6 +15242,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -13589,6 +15429,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -13754,6 +15617,29 @@ ShallowWrapper { }, "isMinimized": false, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -13919,6 +15805,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -14102,6 +16011,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -14283,6 +16215,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -14451,6 +16406,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -14619,6 +16597,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -14788,6 +16789,29 @@ ShallowWrapper { isMinimized={false} keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -14957,6 +16981,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -15129,6 +17176,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -15293,6 +17363,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -15457,6 +17550,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -15622,6 +17738,29 @@ ShallowWrapper { }, "isMinimized": false, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -15787,6 +17926,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -15962,6 +18124,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -16130,6 +18315,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -16298,6 +18506,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -16467,6 +18698,29 @@ ShallowWrapper { isMinimized={false} keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -16636,6 +18890,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -16808,6 +19085,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -16972,6 +19272,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -17136,6 +19459,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -17301,6 +19647,29 @@ ShallowWrapper { }, "isMinimized": false, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -17466,6 +19835,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -17649,6 +20041,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -17830,6 +20245,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -17998,6 +20436,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -18166,6 +20627,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -18335,6 +20819,29 @@ ShallowWrapper { isMinimized={false} keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -18504,6 +21011,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -18676,6 +21206,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -18840,6 +21393,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -19004,6 +21580,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -19169,6 +21768,29 @@ ShallowWrapper { }, "isMinimized": false, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -19334,6 +21956,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -19509,6 +22154,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -19677,6 +22345,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -19845,6 +22536,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -20014,6 +22728,29 @@ ShallowWrapper { isMinimized={false} keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -20183,6 +22920,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -20355,6 +23115,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -20519,6 +23302,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -20683,6 +23489,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -20848,6 +23677,29 @@ ShallowWrapper { }, "isMinimized": false, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -21013,6 +23865,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", diff --git a/src/components/TaskPane/ActiveTaskDetails/ActiveTaskControls/TaskEditControl/__snapshots__/TaskEditControl.test.js.snap b/src/components/TaskPane/ActiveTaskDetails/ActiveTaskControls/TaskEditControl/__snapshots__/TaskEditControl.test.js.snap index 9ccf9d0bd..5fd7dd934 100644 --- a/src/components/TaskPane/ActiveTaskDetails/ActiveTaskControls/TaskEditControl/__snapshots__/TaskEditControl.test.js.snap +++ b/src/components/TaskPane/ActiveTaskDetails/ActiveTaskControls/TaskEditControl/__snapshots__/TaskEditControl.test.js.snap @@ -14,6 +14,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -486,6 +509,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -826,6 +872,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", diff --git a/src/components/TaskPane/ActiveTaskDetails/ActiveTaskControls/TaskFalsePositiveControl/__snapshots__/TaskFalsePositiveControl.test.js.snap b/src/components/TaskPane/ActiveTaskDetails/ActiveTaskControls/TaskFalsePositiveControl/__snapshots__/TaskFalsePositiveControl.test.js.snap index 7e2d91867..76c1b8055 100644 --- a/src/components/TaskPane/ActiveTaskDetails/ActiveTaskControls/TaskFalsePositiveControl/__snapshots__/TaskFalsePositiveControl.test.js.snap +++ b/src/components/TaskPane/ActiveTaskDetails/ActiveTaskControls/TaskFalsePositiveControl/__snapshots__/TaskFalsePositiveControl.test.js.snap @@ -16,6 +16,29 @@ ShallowWrapper { isMinimized={false} keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", diff --git a/src/components/TaskPane/ActiveTaskDetails/ActiveTaskControls/TaskFixedControl/__snapshots__/TaskFixedControl.test.js.snap b/src/components/TaskPane/ActiveTaskDetails/ActiveTaskControls/TaskFixedControl/__snapshots__/TaskFixedControl.test.js.snap index abb35c0df..c284fda4a 100644 --- a/src/components/TaskPane/ActiveTaskDetails/ActiveTaskControls/TaskFixedControl/__snapshots__/TaskFixedControl.test.js.snap +++ b/src/components/TaskPane/ActiveTaskDetails/ActiveTaskControls/TaskFixedControl/__snapshots__/TaskFixedControl.test.js.snap @@ -15,6 +15,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", diff --git a/src/components/TaskPane/ActiveTaskDetails/ActiveTaskControls/TaskSkipControl/__snapshots__/TaskSkipControl.test.js.snap b/src/components/TaskPane/ActiveTaskDetails/ActiveTaskControls/TaskSkipControl/__snapshots__/TaskSkipControl.test.js.snap index 58f80b0c2..4b346360f 100644 --- a/src/components/TaskPane/ActiveTaskDetails/ActiveTaskControls/TaskSkipControl/__snapshots__/TaskSkipControl.test.js.snap +++ b/src/components/TaskPane/ActiveTaskDetails/ActiveTaskControls/TaskSkipControl/__snapshots__/TaskSkipControl.test.js.snap @@ -16,6 +16,29 @@ ShallowWrapper { isMinimized={false} keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", diff --git a/src/components/TaskPane/ActiveTaskDetails/ActiveTaskControls/TaskTooHardControl/__snapshots__/TaskTooHardControl.test.js.snap b/src/components/TaskPane/ActiveTaskDetails/ActiveTaskControls/TaskTooHardControl/__snapshots__/TaskTooHardControl.test.js.snap index 7f6099e0d..37e8699cd 100644 --- a/src/components/TaskPane/ActiveTaskDetails/ActiveTaskControls/TaskTooHardControl/__snapshots__/TaskTooHardControl.test.js.snap +++ b/src/components/TaskPane/ActiveTaskDetails/ActiveTaskControls/TaskTooHardControl/__snapshots__/TaskTooHardControl.test.js.snap @@ -15,6 +15,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", diff --git a/src/components/TaskPane/ActiveTaskDetails/ActiveTaskControls/__snapshots__/ActiveTaskControls.test.js.snap b/src/components/TaskPane/ActiveTaskDetails/ActiveTaskControls/__snapshots__/ActiveTaskControls.test.js.snap index ba510fb66..52e2c3083 100644 --- a/src/components/TaskPane/ActiveTaskDetails/ActiveTaskControls/__snapshots__/ActiveTaskControls.test.js.snap +++ b/src/components/TaskPane/ActiveTaskDetails/ActiveTaskControls/__snapshots__/ActiveTaskControls.test.js.snap @@ -19,6 +19,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -224,6 +247,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -403,6 +449,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -579,6 +648,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -747,6 +839,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -912,6 +1027,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -1076,6 +1214,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -1240,6 +1401,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -1404,6 +1588,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -1577,6 +1784,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -1749,6 +1979,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -1922,6 +2175,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -2086,6 +2362,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -2250,6 +2549,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -2414,6 +2736,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -2574,6 +2919,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -2735,6 +3103,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -2897,6 +3288,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -3059,6 +3473,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -3221,6 +3658,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -3397,6 +3857,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -3573,6 +4056,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -3741,6 +4247,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -3906,6 +4435,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -4070,6 +4622,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -4234,6 +4809,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -4398,6 +4996,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -4571,6 +5192,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -4743,6 +5387,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -4916,6 +5583,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -5080,6 +5770,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -5244,6 +5957,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -5408,6 +6144,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -5568,6 +6327,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -5729,6 +6511,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -5891,6 +6696,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -6053,6 +6881,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -6215,6 +7066,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -6397,6 +7271,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -6576,6 +7473,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -6743,6 +7663,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -6909,6 +7852,29 @@ ShallowWrapper { isMinimized={false} keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -7075,6 +8041,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -7240,6 +8229,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -7404,6 +8416,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -7568,6 +8603,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -7732,6 +8790,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -7905,6 +8986,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -8070,6 +9174,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -8234,6 +9361,29 @@ ShallowWrapper { }, "isMinimized": false, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -8405,6 +9555,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -8569,6 +9742,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -8733,6 +9929,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -8897,6 +10116,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -9057,6 +10299,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -9218,6 +10483,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -9380,6 +10668,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -9542,6 +10853,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -9704,6 +11038,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -9880,6 +11237,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -10047,6 +11427,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -10213,6 +11616,29 @@ ShallowWrapper { isMinimized={false} keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -10379,6 +11805,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -10544,6 +11993,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -10708,6 +12180,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -10872,6 +12367,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -11036,6 +12554,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -11209,6 +12750,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -11374,6 +12938,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -11538,6 +13125,29 @@ ShallowWrapper { }, "isMinimized": false, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -11709,6 +13319,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -11873,6 +13506,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -12037,6 +13693,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -12201,6 +13880,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -12361,6 +14063,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -12522,6 +14247,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -12684,6 +14432,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -12846,6 +14617,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -13008,6 +14802,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -13195,6 +15012,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -13379,6 +15219,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -13563,6 +15426,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -13733,6 +15619,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -13903,6 +15812,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -14072,6 +16004,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -14241,6 +16196,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -14410,6 +16388,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -14586,184 +16587,230 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { - "openEditor": Object { - "editId": Object { - "key": "e", - "label": Object { - "defaultMessage": "Edit in Id", - "id": "KeyMapping.openEditor.editId", - }, - }, - "editJosm": Object { - "key": "r", - "label": Object { - "defaultMessage": "Edit in JOSM", - "id": "KeyMapping.openEditor.editJosm", - }, - }, - "editJosmFeatures": Object { - "key": "y", - "label": Object { - "defaultMessage": "Edit just features in JOSM", - "id": "KeyMapping.openEditor.editJosmFeatures", - }, - }, - "editJosmLayer": Object { - "key": "t", - "label": Object { - "defaultMessage": "Edit in new JOSM layer", - "id": "KeyMapping.openEditor.editJosmLayer", - }, - }, - "editLevel0": Object { - "key": "v", - "label": Object { - "defaultMessage": "Edit in Level0", - "id": "KeyMapping.openEditor.editLevel0", - }, - }, - }, - "taskCompletion": Object { - "alreadyFixed": Object { - "key": "x", + "layers": Object { + "layerMapillary": Object { + "key": "m", "label": Object { - "defaultMessage": "Already fixed", - "id": "KeyMapping.taskCompletion.alreadyFixed", + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", }, }, - "falsePositive": Object { - "key": "q", + "layerOSMData": Object { + "key": "o", "label": Object { - "defaultMessage": "Not an Issue", - "id": "KeyMapping.taskCompletion.falsePositive", + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", }, }, - "fixed": Object { - "key": "f", + "layerTaskFeatures": Object { + "key": "s", "label": Object { - "defaultMessage": "I fixed it!", - "id": "KeyMapping.taskCompletion.fixed", - }, - }, - "skip": Object { - "key": "w", - "label": Object { - "defaultMessage": "Skip", - "id": "KeyMapping.taskCompletion.skip", - }, - }, - "tooHard": Object { - "key": "d", - "label": Object { - "defaultMessage": "Too difficult / Couldn't see", - "id": "KeyMapping.taskCompletion.tooHard", + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, + "openEditor": Object { + "editId": Object { + "key": "e", + "label": Object { + "defaultMessage": "Edit in Id", + "id": "KeyMapping.openEditor.editId", + }, + }, + "editJosm": Object { + "key": "r", + "label": Object { + "defaultMessage": "Edit in JOSM", + "id": "KeyMapping.openEditor.editJosm", + }, + }, + "editJosmFeatures": Object { + "key": "y", + "label": Object { + "defaultMessage": "Edit just features in JOSM", + "id": "KeyMapping.openEditor.editJosmFeatures", + }, + }, + "editJosmLayer": Object { + "key": "t", + "label": Object { + "defaultMessage": "Edit in new JOSM layer", + "id": "KeyMapping.openEditor.editJosmLayer", + }, + }, + "editLevel0": Object { + "key": "v", + "label": Object { + "defaultMessage": "Edit in Level0", + "id": "KeyMapping.openEditor.editLevel0", + }, + }, + }, + "taskCompletion": Object { + "alreadyFixed": Object { + "key": "x", + "label": Object { + "defaultMessage": "Already fixed", + "id": "KeyMapping.taskCompletion.alreadyFixed", + }, + }, + "falsePositive": Object { + "key": "q", + "label": Object { + "defaultMessage": "Not an Issue", + "id": "KeyMapping.taskCompletion.falsePositive", + }, + }, + "fixed": Object { + "key": "f", + "label": Object { + "defaultMessage": "I fixed it!", + "id": "KeyMapping.taskCompletion.fixed", + }, + }, + "skip": Object { + "key": "w", + "label": Object { + "defaultMessage": "Skip", + "id": "KeyMapping.taskCompletion.skip", + }, + }, + "tooHard": Object { + "key": "d", + "label": Object { + "defaultMessage": "Too difficult / Couldn't see", + "id": "KeyMapping.taskCompletion.tooHard", + }, + }, + }, + "taskEditing": Object { + "cancel": Object { + "key": "Escape", + "keyLabel": Object { + "defaultMessage": "ESC", + "id": "KeyMapping.taskEditing.escapeLabel", + }, + "label": Object { + "defaultMessage": "Cancel Editing", + "id": "KeyMapping.taskEditing.cancel", + }, + }, + "fitBounds": Object { + "key": "0", + "label": Object { + "defaultMessage": "Fit Map to Task Features", + "id": "KeyMapping.taskEditing.fitBounds", + }, + }, + }, + "taskReview": Object { + "nextTask": Object { + "key": "l", + "label": Object { + "defaultMessage": "Next Task", + "id": "KeyMapping.taskReview.nextTask", + }, + }, + "prevTask": Object { + "key": "h", + "label": Object { + "defaultMessage": "Previous Task", + "id": "KeyMapping.taskReview.prevTask", + }, + }, + }, + }, + "mapBounds": Object { + "task": Object { + "bounds": Array [ + 0, + 0, + 0, + 0, + ], + }, + }, + "nextTask": [Function], + "saveTask": [Function], + "setTaskBeingCompleted": [Function], + "setTaskLoadBy": [Function], + "task": Object { + "id": 123, + "parent": Object { + "id": 321, + }, + "status": 0, + }, + "taskLoadBy": "random", + "unsaveTask": [Function], + "user": Object { + "id": 357, + "isLoggedIn": true, + "settings": Object { + "defaultEditor": 1, + }, + }, + "value": "", + }, + "ref": null, + "rendered": null, + "type": [Function], + }, + false, + false, + Object { + "instance": null, + "key": undefined, + "nodeType": "class", + "props": Object { + "activateKeyboardShortcutGroup": [Function], + "allowedProgressions": Set { + 1, + 2, + 3, + 4, + 5, + 6, + }, + "cancelEditing": [Function], + "challengeId": 321, + "closeEditor": [Function], + "complete": [Function], + "completeTask": [Function], + "deactivateKeyboardShortcutGroup": [Function], + "editTask": [Function], + "editor": Object { + "success": true, + "taskId": 123, + }, + "intl": Object { + "formatMessage": [Function], + }, + "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", }, }, }, - "taskEditing": Object { - "cancel": Object { - "key": "Escape", - "keyLabel": Object { - "defaultMessage": "ESC", - "id": "KeyMapping.taskEditing.escapeLabel", - }, - "label": Object { - "defaultMessage": "Cancel Editing", - "id": "KeyMapping.taskEditing.cancel", - }, - }, - "fitBounds": Object { - "key": "0", - "label": Object { - "defaultMessage": "Fit Map to Task Features", - "id": "KeyMapping.taskEditing.fitBounds", - }, - }, - }, - "taskReview": Object { - "nextTask": Object { - "key": "l", - "label": Object { - "defaultMessage": "Next Task", - "id": "KeyMapping.taskReview.nextTask", - }, - }, - "prevTask": Object { - "key": "h", - "label": Object { - "defaultMessage": "Previous Task", - "id": "KeyMapping.taskReview.prevTask", - }, - }, - }, - }, - "mapBounds": Object { - "task": Object { - "bounds": Array [ - 0, - 0, - 0, - 0, - ], - }, - }, - "nextTask": [Function], - "saveTask": [Function], - "setTaskBeingCompleted": [Function], - "setTaskLoadBy": [Function], - "task": Object { - "id": 123, - "parent": Object { - "id": 321, - }, - "status": 0, - }, - "taskLoadBy": "random", - "unsaveTask": [Function], - "user": Object { - "id": 357, - "isLoggedIn": true, - "settings": Object { - "defaultEditor": 1, - }, - }, - "value": "", - }, - "ref": null, - "rendered": null, - "type": [Function], - }, - false, - false, - Object { - "instance": null, - "key": undefined, - "nodeType": "class", - "props": Object { - "activateKeyboardShortcutGroup": [Function], - "allowedProgressions": Set { - 1, - 2, - 3, - 4, - 5, - 6, - }, - "cancelEditing": [Function], - "challengeId": 321, - "closeEditor": [Function], - "complete": [Function], - "completeTask": [Function], - "deactivateKeyboardShortcutGroup": [Function], - "editTask": [Function], - "editor": Object { - "success": true, - "taskId": 123, - }, - "intl": Object { - "formatMessage": [Function], - }, - "keyboardShortcutGroups": Object { "openEditor": Object { "editId": Object { "key": "e", @@ -14939,6 +16986,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -15108,6 +17178,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -15277,6 +17370,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -15446,6 +17562,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -15609,6 +17748,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -15773,6 +17935,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -15938,6 +18123,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -16103,6 +18311,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -16268,6 +18499,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -16449,6 +18703,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -16633,6 +18910,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -16803,6 +19103,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -16973,6 +19296,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -17142,6 +19488,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -17311,6 +19680,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -17480,6 +19872,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -17656,184 +20071,230 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { - "openEditor": Object { - "editId": Object { - "key": "e", - "label": Object { - "defaultMessage": "Edit in Id", - "id": "KeyMapping.openEditor.editId", - }, - }, - "editJosm": Object { - "key": "r", - "label": Object { - "defaultMessage": "Edit in JOSM", - "id": "KeyMapping.openEditor.editJosm", - }, - }, - "editJosmFeatures": Object { - "key": "y", - "label": Object { - "defaultMessage": "Edit just features in JOSM", - "id": "KeyMapping.openEditor.editJosmFeatures", - }, - }, - "editJosmLayer": Object { - "key": "t", - "label": Object { - "defaultMessage": "Edit in new JOSM layer", - "id": "KeyMapping.openEditor.editJosmLayer", - }, - }, - "editLevel0": Object { - "key": "v", - "label": Object { - "defaultMessage": "Edit in Level0", - "id": "KeyMapping.openEditor.editLevel0", - }, - }, - }, - "taskCompletion": Object { - "alreadyFixed": Object { - "key": "x", + "layers": Object { + "layerMapillary": Object { + "key": "m", "label": Object { - "defaultMessage": "Already fixed", - "id": "KeyMapping.taskCompletion.alreadyFixed", + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", }, }, - "falsePositive": Object { - "key": "q", + "layerOSMData": Object { + "key": "o", "label": Object { - "defaultMessage": "Not an Issue", - "id": "KeyMapping.taskCompletion.falsePositive", + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", }, }, - "fixed": Object { - "key": "f", + "layerTaskFeatures": Object { + "key": "s", "label": Object { - "defaultMessage": "I fixed it!", - "id": "KeyMapping.taskCompletion.fixed", - }, - }, - "skip": Object { - "key": "w", - "label": Object { - "defaultMessage": "Skip", - "id": "KeyMapping.taskCompletion.skip", - }, - }, - "tooHard": Object { - "key": "d", - "label": Object { - "defaultMessage": "Too difficult / Couldn't see", - "id": "KeyMapping.taskCompletion.tooHard", + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, + "openEditor": Object { + "editId": Object { + "key": "e", + "label": Object { + "defaultMessage": "Edit in Id", + "id": "KeyMapping.openEditor.editId", + }, + }, + "editJosm": Object { + "key": "r", + "label": Object { + "defaultMessage": "Edit in JOSM", + "id": "KeyMapping.openEditor.editJosm", + }, + }, + "editJosmFeatures": Object { + "key": "y", + "label": Object { + "defaultMessage": "Edit just features in JOSM", + "id": "KeyMapping.openEditor.editJosmFeatures", + }, + }, + "editJosmLayer": Object { + "key": "t", + "label": Object { + "defaultMessage": "Edit in new JOSM layer", + "id": "KeyMapping.openEditor.editJosmLayer", + }, + }, + "editLevel0": Object { + "key": "v", + "label": Object { + "defaultMessage": "Edit in Level0", + "id": "KeyMapping.openEditor.editLevel0", + }, + }, + }, + "taskCompletion": Object { + "alreadyFixed": Object { + "key": "x", + "label": Object { + "defaultMessage": "Already fixed", + "id": "KeyMapping.taskCompletion.alreadyFixed", + }, + }, + "falsePositive": Object { + "key": "q", + "label": Object { + "defaultMessage": "Not an Issue", + "id": "KeyMapping.taskCompletion.falsePositive", + }, + }, + "fixed": Object { + "key": "f", + "label": Object { + "defaultMessage": "I fixed it!", + "id": "KeyMapping.taskCompletion.fixed", + }, + }, + "skip": Object { + "key": "w", + "label": Object { + "defaultMessage": "Skip", + "id": "KeyMapping.taskCompletion.skip", + }, + }, + "tooHard": Object { + "key": "d", + "label": Object { + "defaultMessage": "Too difficult / Couldn't see", + "id": "KeyMapping.taskCompletion.tooHard", + }, + }, + }, + "taskEditing": Object { + "cancel": Object { + "key": "Escape", + "keyLabel": Object { + "defaultMessage": "ESC", + "id": "KeyMapping.taskEditing.escapeLabel", + }, + "label": Object { + "defaultMessage": "Cancel Editing", + "id": "KeyMapping.taskEditing.cancel", + }, + }, + "fitBounds": Object { + "key": "0", + "label": Object { + "defaultMessage": "Fit Map to Task Features", + "id": "KeyMapping.taskEditing.fitBounds", + }, + }, + }, + "taskReview": Object { + "nextTask": Object { + "key": "l", + "label": Object { + "defaultMessage": "Next Task", + "id": "KeyMapping.taskReview.nextTask", + }, + }, + "prevTask": Object { + "key": "h", + "label": Object { + "defaultMessage": "Previous Task", + "id": "KeyMapping.taskReview.prevTask", + }, + }, + }, + }, + "mapBounds": Object { + "task": Object { + "bounds": Array [ + 0, + 0, + 0, + 0, + ], + }, + }, + "nextTask": [Function], + "saveTask": [Function], + "setTaskBeingCompleted": [Function], + "setTaskLoadBy": [Function], + "task": Object { + "id": 123, + "parent": Object { + "id": 321, + }, + "status": 0, + }, + "taskLoadBy": "random", + "unsaveTask": [Function], + "user": Object { + "id": 357, + "isLoggedIn": true, + "settings": Object { + "defaultEditor": 1, + }, + }, + "value": "", + }, + "ref": null, + "rendered": null, + "type": [Function], + }, + false, + false, + Object { + "instance": null, + "key": undefined, + "nodeType": "class", + "props": Object { + "activateKeyboardShortcutGroup": [Function], + "allowedProgressions": Set { + 1, + 2, + 3, + 4, + 5, + 6, + }, + "cancelEditing": [Function], + "challengeId": 321, + "closeEditor": [Function], + "complete": [Function], + "completeTask": [Function], + "deactivateKeyboardShortcutGroup": [Function], + "editTask": [Function], + "editor": Object { + "success": true, + "taskId": 123, + }, + "intl": Object { + "formatMessage": [Function], + }, + "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", }, }, }, - "taskEditing": Object { - "cancel": Object { - "key": "Escape", - "keyLabel": Object { - "defaultMessage": "ESC", - "id": "KeyMapping.taskEditing.escapeLabel", - }, - "label": Object { - "defaultMessage": "Cancel Editing", - "id": "KeyMapping.taskEditing.cancel", - }, - }, - "fitBounds": Object { - "key": "0", - "label": Object { - "defaultMessage": "Fit Map to Task Features", - "id": "KeyMapping.taskEditing.fitBounds", - }, - }, - }, - "taskReview": Object { - "nextTask": Object { - "key": "l", - "label": Object { - "defaultMessage": "Next Task", - "id": "KeyMapping.taskReview.nextTask", - }, - }, - "prevTask": Object { - "key": "h", - "label": Object { - "defaultMessage": "Previous Task", - "id": "KeyMapping.taskReview.prevTask", - }, - }, - }, - }, - "mapBounds": Object { - "task": Object { - "bounds": Array [ - 0, - 0, - 0, - 0, - ], - }, - }, - "nextTask": [Function], - "saveTask": [Function], - "setTaskBeingCompleted": [Function], - "setTaskLoadBy": [Function], - "task": Object { - "id": 123, - "parent": Object { - "id": 321, - }, - "status": 0, - }, - "taskLoadBy": "random", - "unsaveTask": [Function], - "user": Object { - "id": 357, - "isLoggedIn": true, - "settings": Object { - "defaultEditor": 1, - }, - }, - "value": "", - }, - "ref": null, - "rendered": null, - "type": [Function], - }, - false, - false, - Object { - "instance": null, - "key": undefined, - "nodeType": "class", - "props": Object { - "activateKeyboardShortcutGroup": [Function], - "allowedProgressions": Set { - 1, - 2, - 3, - 4, - 5, - 6, - }, - "cancelEditing": [Function], - "challengeId": 321, - "closeEditor": [Function], - "complete": [Function], - "completeTask": [Function], - "deactivateKeyboardShortcutGroup": [Function], - "editTask": [Function], - "editor": Object { - "success": true, - "taskId": 123, - }, - "intl": Object { - "formatMessage": [Function], - }, - "keyboardShortcutGroups": Object { "openEditor": Object { "editId": Object { "key": "e", @@ -18009,6 +20470,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -18178,6 +20662,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -18347,6 +20854,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -18516,6 +21046,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -18679,6 +21232,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -18843,6 +21419,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -19008,6 +21607,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -19173,6 +21795,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -19338,6 +21983,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -19520,6 +22188,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -19699,6 +22390,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -19875,6 +22589,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -20043,6 +22780,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -20208,6 +22968,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -20372,6 +23155,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -20536,6 +23342,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -20700,6 +23529,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -20873,6 +23725,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -21045,6 +23920,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -21218,6 +24116,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -21382,6 +24303,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -21546,6 +24490,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -21710,6 +24677,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -21870,6 +24860,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -22031,6 +25044,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -22193,6 +25229,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -22355,6 +25414,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -22517,6 +25599,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -22693,6 +25798,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -22869,6 +25997,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -23037,6 +26188,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -23202,6 +26376,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -23366,6 +26563,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -23530,6 +26750,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -23694,6 +26937,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -23867,6 +27133,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -24039,6 +27328,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -24212,6 +27524,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -24376,6 +27711,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -24540,6 +27898,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -24704,6 +28085,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -24864,6 +28268,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -25025,6 +28452,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -25187,6 +28637,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -25349,6 +28822,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -25511,6 +29007,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -25693,6 +29212,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -25873,6 +29415,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -26047,6 +29612,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -26216,6 +29804,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -26391,6 +30002,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -26565,6 +30199,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -26734,6 +30391,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -26914,6 +30594,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -27093,6 +30796,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -27269,6 +30995,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -27437,6 +31186,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -27602,6 +31374,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -27766,6 +31561,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -27930,6 +31748,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -28094,6 +31935,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -28267,6 +32131,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -28439,6 +32326,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -28612,6 +32522,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -28776,6 +32709,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -28940,6 +32896,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -29104,6 +33083,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -29264,6 +33266,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -29425,6 +33450,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -29587,6 +33635,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -29749,6 +33820,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -29911,6 +34005,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -30087,6 +34204,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -30263,6 +34403,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -30431,6 +34594,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -30596,6 +34782,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -30760,6 +34969,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -30924,6 +35156,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -31088,6 +35343,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -31261,6 +35539,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -31433,6 +35734,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -31606,6 +35930,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -31770,6 +36117,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -31934,6 +36304,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -32098,6 +36491,29 @@ ShallowWrapper { } keyboardShortcutGroups={ Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -32258,6 +36674,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -32419,6 +36858,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -32581,6 +37043,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -32743,6 +37228,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", @@ -32905,6 +37413,29 @@ ShallowWrapper { "formatMessage": [Function], }, "keyboardShortcutGroups": Object { + "layers": Object { + "layerMapillary": Object { + "key": "m", + "label": Object { + "defaultMessage": "Toggle Mapillary Layer", + "id": "KeyMapping.layers.layerMapillary", + }, + }, + "layerOSMData": Object { + "key": "o", + "label": Object { + "defaultMessage": "Toggle OSM Data Layer", + "id": "KeyMapping.layers.layerOSMData", + }, + }, + "layerTaskFeatures": Object { + "key": "s", + "label": Object { + "defaultMessage": "Toggle Features Layer", + "id": "KeyMapping.layers.layerTaskFeatures", + }, + }, + }, "openEditor": Object { "editId": Object { "key": "e", diff --git a/src/components/TaskPane/TaskMap/TaskMap.js b/src/components/TaskPane/TaskMap/TaskMap.js index a95419492..fa853dced 100644 --- a/src/components/TaskPane/TaskMap/TaskMap.js +++ b/src/components/TaskPane/TaskMap/TaskMap.js @@ -8,11 +8,13 @@ import _get from 'lodash/get' import _isEqual from 'lodash/isEqual' import _isFinite from 'lodash/isFinite' import _map from 'lodash/map' +import _pick from 'lodash/pick' import { layerSourceWithId } from '../../../services/VisibleLayer/LayerSources' import EnhancedMap from '../../EnhancedMap/EnhancedMap' import MapillaryViewer from '../../MapillaryViewer/MapillaryViewer' import SourcedTileLayer from '../../EnhancedMap/SourcedTileLayer/SourcedTileLayer' +import OSMDataLayer from '../../EnhancedMap/OSMDataLayer/OSMDataLayer' import LayerToggle from '../../EnhancedMap/LayerToggle/LayerToggle' import FitBoundsControl from '../../EnhancedMap/FitBoundsControl/FitBoundsControl' @@ -22,6 +24,8 @@ import WithSearch from '../../HOCs/WithSearch/WithSearch' import WithIntersectingOverlays from '../../HOCs/WithIntersectingOverlays/WithIntersectingOverlays' import WithVisibleLayer from '../../HOCs/WithVisibleLayer/WithVisibleLayer' +import WithKeyboardShortcuts + from '../../HOCs/WithKeyboardShortcuts/WithKeyboardShortcuts' import { MIN_ZOOM, MAX_ZOOM, DEFAULT_ZOOM } from '../../../services/Challenge/ChallengeZoom/ChallengeZoom' import BusySpinner from '../../BusySpinner/BusySpinner' @@ -37,10 +41,34 @@ import './TaskMap.css' export class TaskMap extends Component { state = { showTaskFeatures: true, + showOSMData: false, + osmData: null, + osmDataLoading: false, mapillaryLayerLoading: false, mapillaryViewerImage: null, } + /** Process keyboard shortcuts for the layers */ + handleKeyboardShortcuts = event => { + if (this.props.textInputActive(event)) { // ignore typing in inputs + return + } + + const layerShortcuts = this.props.keyboardShortcutGroups.layers + switch(event.key) { + case layerShortcuts.layerOSMData.key: + this.toggleOSMDataVisibility() + break + case layerShortcuts.layerTaskFeatures.key: + this.toggleTaskFeatureVisibility() + break + case layerShortcuts.layerMapillary.key: + this.toggleMapillaryVisibility() + break + default: + } + } + /** * Invoked by LayerToggle when the user wishes to toggle visibility of * task features on or off. @@ -49,6 +77,20 @@ export class TaskMap extends Component { this.setState({showTaskFeatures: !this.state.showTaskFeatures}) } + /** + * Invoked by LayerToggle when the user wishes to toggle visibility of + * OSM data on or off. + */ + toggleOSMDataVisibility = () => { + if (!this.state.showOSMData && !this.state.osmData && !this.state.osmDataLoading) { + this.setState({osmDataLoading: true}) + this.props.fetchOSMData(this.props.mapBounds.bounds.toBBoxString()).then(xmlData => { + this.setState({osmData: xmlData, osmDataLoading: false}) + }) + } + this.setState({showOSMData: !this.state.showOSMData}) + } + /** * Invoked by LayerToggle when the user wishes to toggle visibility of * Mapillary markers on or off. @@ -83,6 +125,10 @@ export class TaskMap extends Component { } componentDidMount() { + this.props.activateKeyboardShortcutGroup( + _pick(this.props.keyboardShortcutGroups, 'layers'), + this.handleKeyboardShortcuts) + this.loadMapillaryIfNeeded() } @@ -93,11 +139,18 @@ export class TaskMap extends Component { shouldComponentUpdate(nextProps, nextState) { // We want to avoid constantly re-rendering, so we only re-render if the // task or our internal state changes. We care about changes to the task - // id, its geometries, and a few settings on the parent challenge. + // id, its geometries, layer options, and a few settings on the parent + // challenge. if (nextState.showTaskFeatures !== this.state.showTaskFeatures) { return true } + if (nextState.showOSMData !== this.state.showOSMData || + nextState.osmDataLoading !== this.state.osmDataLoading || + nextState.osmData !== this.state.osmData) { + return true + } + if (nextProps.showMapillaryLayer !== this.props.showMapillaryLayer || nextState.mapillaryLayerLoading !== this.state.mapillaryLayerLoading || nextState.mapillaryViewerImage !== this.state.mapillaryViewerImage) { @@ -142,6 +195,11 @@ export class TaskMap extends Component { return false } + componentWillUnmount() { + this.props.deactivateKeyboardShortcutGroup('layers', + this.handleKeyboardShortcuts) + } + updateTaskBounds = (bounds, zoom) => { // Don't update map bounds if this task is in the process of completing. // We don't want to risk sending updates on a stale task as this one gets @@ -204,6 +262,9 @@ export class TaskMap extends Component { {overlayLayers} + {this.state.showOSMData && this.state.osmData && + + } {this.props.showMapillaryLayer && mapillaryMarkers} @@ -239,6 +303,8 @@ TaskMap.propTypes = { task: PropTypes.object, /** Invoked when the bounds of the map are modified by the user */ setTaskMapBounds: PropTypes.func.isRequired, + /** Invoked when user wishes to display OSM data layer on map */ + fetchOSMData: PropTypes.func.isRequired, /** * The desired centerpoint of the map in (Lat, Lng). * @see See WithTaskCenterpoint HOC @@ -249,7 +315,10 @@ TaskMap.propTypes = { export default WithSearch( WithTaskCenterPoint( WithVisibleLayer( - WithIntersectingOverlays(TaskMap, 'task') + WithIntersectingOverlays( + WithKeyboardShortcuts(TaskMap), + 'task' + ) ) ), 'task' diff --git a/src/components/TaskPane/TaskMap/TaskMap.test.js b/src/components/TaskPane/TaskMap/TaskMap.test.js index 26ef66ca8..3c4aa011a 100644 --- a/src/components/TaskPane/TaskMap/TaskMap.test.js +++ b/src/components/TaskPane/TaskMap/TaskMap.test.js @@ -23,6 +23,9 @@ let basicProps = null beforeEach(() => { basicProps = _cloneDeep(propsFixture) basicProps.setTaskMapBounds = jest.fn() + basicProps.activateKeyboardShortcutGroup = jest.fn() + basicProps.deactivateKeyboardShortcutGroup = jest.fn() + basicProps.fetchOSMData = jest.fn() }) test("renders with props as expected", () => { diff --git a/src/components/TaskPane/TaskMap/__snapshots__/TaskMap.test.js.snap b/src/components/TaskPane/TaskMap/__snapshots__/TaskMap.test.js.snap index f2a7cf5d5..9ec0e97ba 100644 --- a/src/components/TaskPane/TaskMap/__snapshots__/TaskMap.test.js.snap +++ b/src/components/TaskPane/TaskMap/__snapshots__/TaskMap.test.js.snap @@ -5,12 +5,15 @@ ShallowWrapper { "length": 1, Symbol(enzyme.__root__): [Circular], Symbol(enzyme.__unrendered__): , , , , Array [], + false, undefined, ], "features": null, @@ -233,10 +255,13 @@ ShallowWrapper { "key": undefined, "nodeType": "class", "props": Object { + "activateKeyboardShortcutGroup": [Function], "centerPoint": Object { "lat": 0, "lng": 0, }, + "deactivateKeyboardShortcutGroup": [Function], + "fetchOSMData": [Function], "maxZoom": 0, "setTaskMapBounds": [Function], "task": Object { @@ -256,6 +281,7 @@ ShallowWrapper { "rendered": null, "type": [Function], }, + false, undefined, ], "type": [Function], @@ -272,16 +298,21 @@ ShallowWrapper { "props": Object { "children": Array [ , , , , Array [], + false, undefined, ], "features": null, @@ -465,10 +510,13 @@ ShallowWrapper { "key": undefined, "nodeType": "class", "props": Object { + "activateKeyboardShortcutGroup": [Function], "centerPoint": Object { "lat": 0, "lng": 0, }, + "deactivateKeyboardShortcutGroup": [Function], + "fetchOSMData": [Function], "maxZoom": 0, "setTaskMapBounds": [Function], "task": Object { @@ -488,6 +536,7 @@ ShallowWrapper { "rendered": null, "type": [Function], }, + false, undefined, ], "type": [Function], diff --git a/src/lang/en-US.json b/src/lang/en-US.json index d12a91632..1d5162790 100644 --- a/src/lang/en-US.json +++ b/src/lang/en-US.json @@ -277,6 +277,7 @@ "CongratulateModal.control.dismiss.label": "Continue", "FitBoundsControl.tooltip": "Fit map to task features", "LayerToggle.controls.showTaskFeatures.label": "Task Features", + "LayerToggle.controls.showOSMData.label": "OSM Data", "LayerToggle.controls.showMapillary.label": "Mapillary", "LayerToggle.imageCount": "({count, plural, =0 {no images} other {# images}})", "LayerToggle.loading": "(loading...)", @@ -459,6 +460,9 @@ "Errors.task.deleteFailure": "Unable to delete task.", "Errors.task.fetchFailure": "Unable to fetch a task to work on.", "Errors.task.doesNotExist": "That task does not exist.", + "Errors.osm.requestTooLarge": "OpenStreetMap data request too large", + "Errors.osm.bandwidthExceeded": "OpenStreetMap allowed bandwidth exceeded", + "Errors.osm.fetchFailure": "Unable to fetch data from OpenStreetMap", "Errors.clusteredTask.fetchFailure": "Unable to fetch task clusters", "Errors.boundedTask.fetchFailure": "Unable to fetch map-bounded tasks", "Errors.challenge.fetchFailure": "Unable to retrieve latest challenge data from server.", @@ -475,7 +479,7 @@ "Errors.project.searchFailure": "Unable to search projects.", "Errors.project.deleteFailure": "Unable to delete project.", "Errors.project.notManager": "You must be a manager of that project to proceed.", - "Errors.map.renderFailure": "Unable to render the map. This is usally caused by a problematic custom basemap.", + "Errors.map.renderFailure": "Unable to render the map. This may be caused by a problematic custom basemap.", "Errors.dashboard.renderFailure": "Unable to render the dashboard. Switching to a working layout.", "Errors.josm.noResponse": "OSM remote control did not respond. Do you have JOSM running with Remote Control enabled?", "Errors.josm.missingFeatureIds": "This task's features do not include the OSM identifiers required to open them standalone in JOSM. Please choose another editing option.", @@ -484,6 +488,9 @@ "KeyMapping.openEditor.editJosmLayer": "Edit in new JOSM layer", "KeyMapping.openEditor.editJosmFeatures": "Edit just features in JOSM", "KeyMapping.openEditor.editLevel0": "Edit in Level0", + "KeyMapping.layers.layerOSMData": "Toggle OSM Data Layer", + "KeyMapping.layers.layerTaskFeatures": "Toggle Features Layer", + "KeyMapping.layers.layerMapillary": "Toggle Mapillary Layer", "KeyMapping.taskEditing.cancel": "Cancel Editing", "KeyMapping.taskEditing.fitBounds": "Fit Map to Task Features", "KeyMapping.taskEditing.escapeLabel": "ESC", diff --git a/src/services/Error/AppErrors.js b/src/services/Error/AppErrors.js index 4456fefd3..910094942 100644 --- a/src/services/Error/AppErrors.js +++ b/src/services/Error/AppErrors.js @@ -29,6 +29,12 @@ export default { doesNotExist: messages.taskDoesNotExist, }, + osm: { + requestTooLarge: messages.osmRequestTooLarge, + bandwidthExceeded: messages.osmBandwidthExceeded, + fetchFailure: messages.osmFetchFailure, + }, + clusteredTask: { fetchFailure: messages.clusteredTaskFetchFailure, }, diff --git a/src/services/Error/Messages.js b/src/services/Error/Messages.js index 3408c0d21..c65a2fa15 100644 --- a/src/services/Error/Messages.js +++ b/src/services/Error/Messages.js @@ -63,6 +63,19 @@ export default defineMessages({ defaultMessage: "That task does not exist.", }, + osmRequestTooLarge: { + id: 'Errors.osm.requestTooLarge', + defaultMessage: "OpenStreetMap data request too large", + }, + osmBandwidthExceeded: { + id: 'Errors.osm.bandwidthExceeded', + defaultMessage: "OpenStreetMap allowed bandwidth exceeded", + }, + osmFetchFailure: { + id: 'Errors.osm.fetchFailure', + defaultMessage: "Unable to fetch data from OpenStreetMap", + }, + clusteredTaskFetchFailure: { id: 'Errors.clusteredTask.fetchFailure', defaultMessage: "Unable to fetch task clusters", @@ -134,7 +147,7 @@ export default defineMessages({ mapRenderFailure: { id: 'Errors.map.renderFailure', - defaultMessage: "Unable to render the map. This is usally caused by a problematic custom basemap.", + defaultMessage: "Unable to render the map. This may be caused by a problematic custom basemap.", }, dashboardRenderFailure: { diff --git a/src/services/KeyboardShortcuts/KeyMappings.js b/src/services/KeyboardShortcuts/KeyMappings.js index 8162dcfa2..3553826d7 100644 --- a/src/services/KeyboardShortcuts/KeyMappings.js +++ b/src/services/KeyboardShortcuts/KeyMappings.js @@ -24,6 +24,11 @@ export default { cancel: {key: 'Escape', label: messages.cancel, keyLabel: messages.escapeLabel}, fitBounds: {key: '0', label: messages.fitBounds}, }, + layers: { + layerOSMData: {key: 'o', label: messages.layerOSMData}, + layerTaskFeatures: {key: 's', label: messages.layerTaskFeatures}, + layerMapillary: {key: 'm', label: messages.layerMapillary}, + }, taskCompletion: { skip: {key: 'w', label: messages.skip}, falsePositive: {key: 'q', label: messages.falsePositive}, diff --git a/src/services/KeyboardShortcuts/Messages.js b/src/services/KeyboardShortcuts/Messages.js index 717232c45..d2e4d9198 100644 --- a/src/services/KeyboardShortcuts/Messages.js +++ b/src/services/KeyboardShortcuts/Messages.js @@ -29,6 +29,21 @@ export default defineMessages({ defaultMessage: "Edit in Level0", }, + layerOSMData: { + id: "KeyMapping.layers.layerOSMData", + defaultMessage: "Toggle OSM Data Layer", + }, + + layerTaskFeatures: { + id: "KeyMapping.layers.layerTaskFeatures", + defaultMessage: "Toggle Features Layer", + }, + + layerMapillary: { + id: "KeyMapping.layers.layerMapillary", + defaultMessage: "Toggle Mapillary Layer", + }, + cancel: { id: "KeyMapping.taskEditing.cancel", defaultMessage: "Cancel Editing", diff --git a/src/services/OSM/OSM.js b/src/services/OSM/OSM.js new file mode 100644 index 000000000..e99af56c5 --- /dev/null +++ b/src/services/OSM/OSM.js @@ -0,0 +1,56 @@ +import AppErrors from '../Error/AppErrors' + +/** + * Retrieve the OpenStreetMap XML data with nodes/ways/relations for the given + * WSEN (comma-separated) bounding box string + */ +export const fetchOSMData = function(bbox) { + const osmDataURI = + `https://api.openstreetmap.org/api/0.6/map?bbox=${bbox}` + + return new Promise((resolve, reject) => { + fetch(osmDataURI).then(response => { + if (response.ok) { + response.text().then(rawXML => { + const parser = new DOMParser() + const xmlDoc = parser.parseFromString(rawXML, "application/xml") + resolve(xmlDoc) + }) + } + else if (response.status === 400) { + reject(AppErrors.osm.requestTooLarge) + } + else if (response.status === 509) { + reject(AppErrors.osm.bandwidthExceeded) + } + }).catch(error => { + console.log(error) + reject(AppErrors.osm.fetchFailure) + }) + }) +} + +/** + * Retrieve OpenStreetMap user data for the user with the given OSM user id + * (not the same as a MapRoulette user id). Note that this does not update the + * redux store: it simply resolves the returned promise with the user data. + */ +export const fetchOSMUser = function(osmUserId) { + const osmUserURI = + `https://api.openstreetmap.org/api/0.6/user/${osmUserId}` + + // The OSM api call only returns XML, so extract the display name + return new Promise((resolve, reject) => { + fetch(osmUserURI).then(response => { + if (response.ok) { + response.text().then(xmlData => { + const displayNameMatch = /display_name="([^"]+)"/.exec(xmlData) + resolve({id: osmUserId, displayName: displayNameMatch[1]}) + }) + } + else if (response.status === 404) { // No user found + resolve({}) + } + }).catch(error => reject(error)) + }) +} diff --git a/src/services/OSMUser/OSMUser.js b/src/services/OSMUser/OSMUser.js deleted file mode 100644 index d5e10fe5f..000000000 --- a/src/services/OSMUser/OSMUser.js +++ /dev/null @@ -1,24 +0,0 @@ -/** - * Retrieve OpenStreetMap user data for the user with the given OSM user id - * (not the same as a MapRoulette user id). Note that this does not update the - * redux store: it simply resolves the returned promise with the user data. - */ -export const fetchOSMUser = function(osmUserId) { - const osmUserURI = - `https://api.openstreetmap.org/api/0.6/user/${osmUserId}` - - // The OSM api call only returns XML, so extract the display name - return new Promise((resolve, reject) => { - fetch(osmUserURI).then(response => { - if (response.ok) { - response.text().then(xmlData => { - const displayNameMatch = /display_name="([^"]+)"/.exec(xmlData) - resolve({id: osmUserId, displayName: displayNameMatch[1]}) - }) - } - else if (response.status === 404) { // No user found - resolve({}) - } - }).catch(error => reject(error)) - }) -} From d9d151deba95261cee8a7e72cf6e0424725151df Mon Sep 17 00:00:00 2001 From: krotstan Date: Fri, 1 Feb 2019 20:00:33 -0800 Subject: [PATCH 08/16] Add place name search to move map (#612) Add ability to type m/placename and move map to a bounding box returned by Nominatim --- .../ChallengeFilterSubnav.test.js.snap | 12 +- .../WithCommandInterpreter.js | 143 ++++++++++++++---- .../WithCommandInterpreter.test.js | 27 ++-- src/lang/en-US.json | 1 + src/services/Error/AppErrors.js | 1 + src/services/Error/Messages.js | 5 + src/services/Place/Place.js | 24 +++ 7 files changed, 167 insertions(+), 46 deletions(-) diff --git a/src/components/ChallengePane/ChallengeFilterSubnav/__snapshots__/ChallengeFilterSubnav.test.js.snap b/src/components/ChallengePane/ChallengeFilterSubnav/__snapshots__/ChallengeFilterSubnav.test.js.snap index 26b9f0a1a..fa20dadaa 100644 --- a/src/components/ChallengePane/ChallengeFilterSubnav/__snapshots__/ChallengeFilterSubnav.test.js.snap +++ b/src/components/ChallengePane/ChallengeFilterSubnav/__snapshots__/ChallengeFilterSubnav.test.js.snap @@ -228,7 +228,7 @@ ShallowWrapper { } /> - - , - - - , - Execute a map bounds search with either a bounding box or a centerpoint + * n/ => Execute a nominatim search and move map bounds * s/ or default => Execute a standard search query * * @author [Kelli Rotstan](https://github.com/krotstan) @@ -19,24 +26,43 @@ const WithCommandInterpreter = function(WrappedComponent) { return class extends Component { state = { commandString: null, + searchActive: true, + mapLoading: false, } executeSearch = commandString => { - executeCommand(this.props, commandString) - this.setState({commandString}) + if (this.state.searchActive || commandString.length <= 2) { + const wasStandardSearch = executeCommand(this.props, commandString) + this.setState({commandString, searchActive: wasStandardSearch}) + } + else { + this.setState({commandString}) + } } clearSearch = commandString => { this.props.clearSearch() - this.setState({commandString: null}) + this.setState({commandString: null, searchActive: true}) + } + + deactivate = () => { + executeCommand(this.props, this.state.commandString, (loading) => this.setState({mapLoading: loading})) } render() { + const query = this.state.commandString ? this.state.commandString : this.props.searchGroup ? + _get(this.props, `searchQueries.${this.props.searchGroup}.searchQuery.query`) : + _get(this.props, 'searchQuery.query') + + const loading = _get(this.props, 'searchQuery.meta.fetchingResults') || this.state.mapLoading + return + clearSearch={this.clearSearch} + showDoneButton={!this.state.searchActive} + deactivate={this.deactivate} /> } } } @@ -44,33 +70,26 @@ const WithCommandInterpreter = function(WrappedComponent) { /** * Executes the appropriate search type based on the start of * the query string + * + * @return boolean - Whether this was a typical search or a command search */ -export const executeCommand = (props, commandString) => { - const command = commandString.length > 2 ? commandString.substring(0, 2) : null +export const executeCommand = (props, commandString, setLoading) => { + const command = commandString.length >= 2 ? commandString.substring(0, 2) : null let query = commandString.substring(2) switch(command) { case 'm/': - let bounds = null - - // If four points are given then we have a bounding box - if (_split(query, ',').length === 4) { - bounds = _map(_split(query, ','), (point) => parseFloat(point)) - + props.setSearch("") // We need to clear the initial 'm' from the query + if (query.length > 0) { + debouncedMapSearch(props, query, setLoading) } - // If only two points are given then we have a center point - else if (_split(query, ',').length === 2) { - const centerpoint = _map(_split(query, ','), (point) => parseFloat(point)) - bounds = determineBoundingBox(...centerpoint) + return false + case 'n/': + props.setSearch("") // We need to clear the initial 'n' from the query + if (query.length > 0) { + debouncedPlaceSearch(props, query, setLoading) } - - if (bounds) { - // We need to clear the search first so that any string searches won't - // be hanging around in redux - props.clearSearch() - props.updateChallengeSearchMapBounds(bounds, true) - } - break; + return false case 's/': default: if (command !== 's/') { @@ -79,10 +98,77 @@ export const executeCommand = (props, commandString) => { // Standard search query props.setSearch(query) - break; + return true } } +const debouncedMapSearch = + _debounce((props, query, setLoading) => executeMapSearch(props, query, setLoading), 1000, {leading: false}) + +const debouncedPlaceSearch = + _debounce((props, query, setLoading) => executePlaceSearch(props, query, setLoading), 1000, {leading: false}) + +/** + * Executes the map search + */ +export const executeMapSearch = (props, query, setLoading) => { + let bounds = null + + // If four points are given then we have a bounding box + if (_split(query, ',').length === 4) { + const querySplit = _split(query, ',') + + // Check if every element is a valid number + const boundsInvalid = _find(querySplit, point => (point === "" || isNaN(point))) !== undefined + + if (!boundsInvalid) { + bounds = _map(querySplit, (point) => parseFloat(point)) + } + } + // If only two points are given then we have a center point + else if (_split(query, ',').length === 2) { + const querySplit = _split(query, ',') + + // Check if every element is a valid number + const boundsInvalid = _find(querySplit, point => (point === "" || isNaN(point))) !== undefined + + if (!boundsInvalid) { + bounds = determineBoundingBox(..._map(querySplit, (point) => parseFloat(point))) + } + } + + // It might be a string place -- let's ask Nominatim for it's location + if (!bounds) { + executePlaceSearch(props, query, setLoading) + } + else { + setLoading(true) + + // We need to clear the search first so that any string searches won't + // be hanging around in redux + props.clearSearch() + props.updateChallengeSearchMapBounds(bounds, true) + + setLoading(false) + } +} + +/** + * Executes a Place map search + */ +export const executePlaceSearch = (props, query, setLoading) => { + setLoading(true) + fetchPlaceLocation(query).then(boundingBox => { + setLoading(false) + if (boundingBox) { + props.updateChallengeSearchMapBounds(boundingBox, true) + } + else { + props.addError(AppErrors.map.placeNotFound) + } + }) +} + /** * Returns the bouding box from the given centerpoint coordinates */ @@ -108,4 +194,5 @@ WithCommandInterpreter.propTypes = { clearSearch: PropTypes.func.isRequired, } -export default WithCommandInterpreter +export default WrappedComponent => + WithErrors(WithCommandInterpreter(WrappedComponent)) diff --git a/src/components/HOCs/WithCommandInterpreter/WithCommandInterpreter.test.js b/src/components/HOCs/WithCommandInterpreter/WithCommandInterpreter.test.js index 956ba0c4c..e4b14970a 100644 --- a/src/components/HOCs/WithCommandInterpreter/WithCommandInterpreter.test.js +++ b/src/components/HOCs/WithCommandInterpreter/WithCommandInterpreter.test.js @@ -1,6 +1,10 @@ import React, { Component } from 'react' import _findIndex from 'lodash/findIndex' -import { executeCommand } from './WithCommandInterpreter' +import { executeCommand, executeMapSearch } from './WithCommandInterpreter' +import { fetchPlaceLocation } from '../../../services/Place/Place' + +jest.mock('../../../services/Place/Place') +fetchPlaceLocation.mockImplementation((query) => new Promise(() => {})) let basicProps = {} @@ -12,24 +16,23 @@ beforeEach(() => { test("executeCommand recognizes s/", () => { - //const wrapper = new (WithCommandInterpreter(
)) - - executeCommand(basicProps, "s/hello world") + executeCommand(basicProps, "s/hello world", (loading) => {}) expect(basicProps.setSearch).toHaveBeenCalledWith("hello world") }) -test("executeCommand recognizes m/ with 4 bounds", () => { - //const wrapper = new (WithCommandInterpreter(
)) - - executeCommand(basicProps, "m/1.1,2.2,3.3,4.4") +test("executeMapSearch recognizes 4 bounds", () => { + executeMapSearch(basicProps, "1.1,2.2,3.3,4.4", (loading) => {}) expect(basicProps.setSearch).not.toHaveBeenCalled() expect(basicProps.updateChallengeSearchMapBounds).toHaveBeenCalledWith([1.1, 2.2, 3.3, 4.4], true) }) -test("executeCommand recognizes m/ with 2 bounds as centerpoint", () => { - //const wrapper = new (WithCommandInterpreter(
)) - - executeCommand(basicProps, "m/1,4") +test("executeMapSearch recognizes 2 bounds as centerpoint", () => { + executeMapSearch(basicProps, "1,4", (loading) => {}) expect(basicProps.setSearch).not.toHaveBeenCalled() expect(basicProps.updateChallengeSearchMapBounds).toHaveBeenCalledWith([0.625, 3.625, 1.375, 4.375], true) }) + +test("executeMapSearch recognizes string for Nominatim search", () => { + executeMapSearch(basicProps, "moscow", (loading) => {}) + expect(fetchPlaceLocation).toHaveBeenCalledWith("moscow") +}) diff --git a/src/lang/en-US.json b/src/lang/en-US.json index 1d5162790..8f5d7788f 100644 --- a/src/lang/en-US.json +++ b/src/lang/en-US.json @@ -479,6 +479,7 @@ "Errors.project.searchFailure": "Unable to search projects.", "Errors.project.deleteFailure": "Unable to delete project.", "Errors.project.notManager": "You must be a manager of that project to proceed.", + "Errors.map.placeNotFound": "No results found by Nominatim.", "Errors.map.renderFailure": "Unable to render the map. This may be caused by a problematic custom basemap.", "Errors.dashboard.renderFailure": "Unable to render the dashboard. Switching to a working layout.", "Errors.josm.noResponse": "OSM remote control did not respond. Do you have JOSM running with Remote Control enabled?", diff --git a/src/services/Error/AppErrors.js b/src/services/Error/AppErrors.js index 910094942..2d560e6f3 100644 --- a/src/services/Error/AppErrors.js +++ b/src/services/Error/AppErrors.js @@ -68,6 +68,7 @@ export default { map: { renderFailure: messages.mapRenderFailure, + placeNotFound: messages.placeNotFound, }, dashboard: { diff --git a/src/services/Error/Messages.js b/src/services/Error/Messages.js index c65a2fa15..1fefc26b0 100644 --- a/src/services/Error/Messages.js +++ b/src/services/Error/Messages.js @@ -150,6 +150,11 @@ export default defineMessages({ defaultMessage: "Unable to render the map. This may be caused by a problematic custom basemap.", }, + placeNotFound: { + id: 'Errors.map.placeNotFound', + defaultMessage: "No results found by Nominatim.", + }, + dashboardRenderFailure: { id: 'Errors.dashboard.renderFailure', defaultMessage: "Unable to render the dashboard. Switching to a working layout.", diff --git a/src/services/Place/Place.js b/src/services/Place/Place.js index e8cfe03a3..e1f4c2f5d 100644 --- a/src/services/Place/Place.js +++ b/src/services/Place/Place.js @@ -2,6 +2,7 @@ import { schema } from 'normalizr' import RequestStatus from '../Server/RequestStatus' import { fetchContent } from '../Server/Server' import genericEntityReducer from '../Server/GenericEntityReducer' +import _map from 'lodash/map' /** normalizr schema for places */ export const placeSchema = function() { @@ -42,5 +43,28 @@ export const fetchPlace = function(lat, lng) { } } +/** + * Retrieve a bounding box location of the place given. + * + * @param placeSearch - place search string + * @return boundingBox array + */ +export const fetchPlaceLocation = function(placeSearch) { + const placeURI = + `https://nominatim.openstreetmap.org/search?q=${encodeURIComponent(placeSearch)}&format=json&limit=1` + + return fetchContent(placeURI).then(placeResults => { + if (placeResults.length > 0) { + const bounds = _map(placeResults[0].boundingbox, (point) => parseFloat(point)) + + // (from Nominatim) NSWE => (expected) WSEN + return [bounds[2], bounds[1], bounds[3], bounds[0]] + } + else { + return null + } + }) +} + // redux reducers export const placeEntities = genericEntityReducer(RECEIVE_PLACE, 'places') From 76917ce73d3e5ac82c102bb13f6bdc786e6557c8 Mon Sep 17 00:00:00 2001 From: krotstan Date: Fri, 1 Feb 2019 20:03:22 -0800 Subject: [PATCH 09/16] Add 'show more' and user's ranking to leaderboard (#561) * Show user's ranking if they do not appear in top leaderboard list * Add support for country specific leaderboard * Add 'show more' button to leaderboard --- src/App.js | 2 + .../ChallengeResultList.js | 4 +- .../ChallengeResultList/LoadMoreButton.scss | 5 - ...LoadMoreButton.js => PageResultsButton.js} | 23 +- .../ChallengeResultList.test.js.snap | 72 ++--- .../CountryLeaderboard/CountryLeaderboard.js | 21 ++ src/components/CountryLeaderboard/Messages.js | 180 ++++++++++++ .../CountrySelector/CountrySelector.js | 55 ++++ .../CountrySelector/CountrySelector.scss | 27 ++ .../HOCs/WithChallenge/WithChallenge.js | 50 ++-- .../HOCs/WithChallenge/WithChallenge.test.js | 40 +++ .../HOCs/WithLeaderboard/WithLeaderboard.js | 73 +++-- src/components/Leaderboard/Leaderboard.js | 142 ++++++---- src/components/Leaderboard/Leaderboard.scss | 12 + src/components/Leaderboard/LeaderboardMap.js | 34 +++ .../Leaderboard/LeaderboardMap.scss | 17 ++ src/components/Leaderboard/Messages.js | 5 +- src/countryCodeBoundingBox.json | 175 ++++++++++++ src/lang/af.json | 257 +++++++++++++++++- src/lang/de.json | 257 +++++++++++++++++- src/lang/en-US.json | 174 ++++++++++++ src/lang/es.json | 257 +++++++++++++++++- src/lang/fr.json | 257 +++++++++++++++++- src/lang/ja.json | 257 +++++++++++++++++- .../Leaderboard/CountryBoundingBoxes.js | 24 ++ src/services/Leaderboard/Leaderboard.js | 50 +++- src/services/Server/APIRoutes.js | 1 + 27 files changed, 2314 insertions(+), 157 deletions(-) delete mode 100644 src/components/ChallengePane/ChallengeResultList/LoadMoreButton.scss rename src/components/ChallengePane/ChallengeResultList/{LoadMoreButton.js => PageResultsButton.js} (58%) create mode 100644 src/components/CountryLeaderboard/CountryLeaderboard.js create mode 100644 src/components/CountryLeaderboard/Messages.js create mode 100644 src/components/CountrySelector/CountrySelector.js create mode 100644 src/components/CountrySelector/CountrySelector.scss create mode 100644 src/components/HOCs/WithChallenge/WithChallenge.test.js create mode 100644 src/components/Leaderboard/LeaderboardMap.js create mode 100644 src/components/Leaderboard/LeaderboardMap.scss create mode 100644 src/countryCodeBoundingBox.json create mode 100644 src/services/Leaderboard/CountryBoundingBoxes.js diff --git a/src/App.js b/src/App.js index 2cd87ad69..6b4c6ea15 100644 --- a/src/App.js +++ b/src/App.js @@ -22,6 +22,7 @@ import UserProfile from './components/UserProfile/UserProfile' import Leaderboard from './components/Leaderboard/Leaderboard' import ChallengeLeaderboard from './components/ChallengeLeaderboard/ChallengeLeaderboard' import ProjectLeaderboard from './components/ProjectLeaderboard/ProjectLeaderboard' +import CountryLeaderboard from './components/CountryLeaderboard/CountryLeaderboard' import ErrorModal from './components/ErrorModal/ErrorModal' import Sprites from './components/Sprites/Sprites' import MobileNotSupported @@ -89,6 +90,7 @@ export class App extends Component { + diff --git a/src/components/ChallengePane/ChallengeResultList/ChallengeResultList.js b/src/components/ChallengePane/ChallengeResultList/ChallengeResultList.js index 0e08cb97f..c11b87522 100644 --- a/src/components/ChallengePane/ChallengeResultList/ChallengeResultList.js +++ b/src/components/ChallengePane/ChallengeResultList/ChallengeResultList.js @@ -12,7 +12,7 @@ import WithSortedChallenges from '../../HOCs/WithSortedChallenges/WithSortedChal import WithPagedChallenges from '../../HOCs/WithPagedChallenges/WithPagedChallenges' import ChallengeResultItem from '../ChallengeResultItem/ChallengeResultItem' import SortChallengesSelector from './SortChallengesSelector' -import LoadMoreButton from './LoadMoreButton' +import PageResultsButton from './PageResultsButton' import SvgSymbol from '../../SvgSymbol/SvgSymbol' import BusySpinner from '../../BusySpinner/BusySpinner' import StartVirtualChallenge from './StartVirtualChallenge' @@ -123,7 +123,7 @@ export class ChallengeResultList extends Component { {results}
- +
) diff --git a/src/components/ChallengePane/ChallengeResultList/LoadMoreButton.scss b/src/components/ChallengePane/ChallengeResultList/LoadMoreButton.scss deleted file mode 100644 index a801de449..000000000 --- a/src/components/ChallengePane/ChallengeResultList/LoadMoreButton.scss +++ /dev/null @@ -1,5 +0,0 @@ -@import 'mixins.scss'; - -button.load-more-button { - @include invert-on-hover($green, $white); -} diff --git a/src/components/ChallengePane/ChallengeResultList/LoadMoreButton.js b/src/components/ChallengePane/ChallengeResultList/PageResultsButton.js similarity index 58% rename from src/components/ChallengePane/ChallengeResultList/LoadMoreButton.js rename to src/components/ChallengePane/ChallengeResultList/PageResultsButton.js index 06b26d728..15a99ce55 100644 --- a/src/components/ChallengePane/ChallengeResultList/LoadMoreButton.js +++ b/src/components/ChallengePane/ChallengeResultList/PageResultsButton.js @@ -1,10 +1,9 @@ import React, { Component } from 'react' import PropTypes from 'prop-types' -import classNames from 'classnames' import { FormattedMessage } from 'react-intl' import _get from 'lodash/get' import { RESULTS_PER_PAGE } from '../../../services/Search/Search' -import './LoadMoreButton.css' +import LoadMoreButton from '../../LoadMoreButton/LoadMoreButton' import messages from './Messages' @@ -14,31 +13,21 @@ import messages from './Messages' * * @author [Kelli Rotstan](https://github.com/krotstan) */ -export default class LoadMoreButton extends Component { +export default class PageResultsButton extends Component { render() { - if (!this.props.hasMoreResults) { - return null - } - const resultsPerPage = _get(this.props, 'searchPage.resultsPerPage', RESULTS_PER_PAGE) const currentPage = _get(this.props, 'searchPage.currentPage', 0) return ( - + ) } } -LoadMoreButton.propTypes = { +PageResultsButton.propTypes = { /** Invoked to page the challenges when the button is clicked */ setSearchPage: PropTypes.func.isRequired, /** Boolean flag indicating if there are more results */ diff --git a/src/components/ChallengePane/ChallengeResultList/__snapshots__/ChallengeResultList.test.js.snap b/src/components/ChallengePane/ChallengeResultList/__snapshots__/ChallengeResultList.test.js.snap index 023dd67a2..296d51d7f 100644 --- a/src/components/ChallengePane/ChallengeResultList/__snapshots__/ChallengeResultList.test.js.snap +++ b/src/components/ChallengePane/ChallengeResultList/__snapshots__/ChallengeResultList.test.js.snap @@ -208,7 +208,7 @@ ShallowWrapper {
- - - - - - - - - - - - - - - - - - + } +} + +export default injectIntl(CountryLeaderboard) diff --git a/src/components/CountryLeaderboard/Messages.js b/src/components/CountryLeaderboard/Messages.js new file mode 100644 index 000000000..d8c1fc292 --- /dev/null +++ b/src/components/CountryLeaderboard/Messages.js @@ -0,0 +1,180 @@ +import { defineMessages } from 'react-intl' + +/** + * Internationalized messages for country names by country code. + */ +export default defineMessages({ + AF: {id: "CountryName.AF", defaultMessage: "Afghanistan"}, + AO: {id: "CountryName.AO", defaultMessage: "Angola"}, + AL: {id: "CountryName.AL", defaultMessage: "Albania"}, + AE: {id: "CountryName.AE", defaultMessage: "United Arab Emirates"}, + AR: {id: "CountryName.AR", defaultMessage: "Argentina"}, + AM: {id: "CountryName.AM", defaultMessage: "Armenia"}, + AQ: {id: "CountryName.AQ", defaultMessage: "Antarctica"}, + TF: {id: "CountryName.TF", defaultMessage: "French Southern Territories"}, + AU: {id: "CountryName.AU", defaultMessage: "Australia"}, + AT: {id: "CountryName.AT", defaultMessage: "Austria"}, + AZ: {id: "CountryName.AZ", defaultMessage: "Azerbaijan"}, + BI: {id: "CountryName.BI", defaultMessage: "Burundi"}, + BE: {id: "CountryName.BE", defaultMessage: "Belgium"}, + BJ: {id: "CountryName.BJ", defaultMessage: "Benin"}, + BF: {id: "CountryName.BF", defaultMessage: "Burkina Faso"}, + BD: {id: "CountryName.BD", defaultMessage: "Bangladesh"}, + BG: {id: "CountryName.BG", defaultMessage: "Bulgaria"}, + BS: {id: "CountryName.BS", defaultMessage: "Bahamas"}, + BA: {id: "CountryName.BA", defaultMessage: "Bosnia and Herzegovina"}, + BY: {id: "CountryName.BY", defaultMessage: "Belarus"}, + BZ: {id: "CountryName.BZ", defaultMessage: "Belize"}, + BO: {id: "CountryName.BO", defaultMessage: "Bolivia"}, + BR: {id: "CountryName.BR", defaultMessage: "Brazil"}, + BN: {id: "CountryName.BN", defaultMessage: "Brunei"}, + BT: {id: "CountryName.BT", defaultMessage: "Bhutan"}, + BW: {id: "CountryName.BW", defaultMessage: "Botswana"}, + CF: {id: "CountryName.CF", defaultMessage: "Central African Republic"}, + CA: {id: "CountryName.CA", defaultMessage: "Canada"}, + CH: {id: "CountryName.CH", defaultMessage: "Switzerland"}, + CL: {id: "CountryName.CL", defaultMessage: "Chile"}, + CN: {id: "CountryName.CN", defaultMessage: "China"}, + CI: {id: "CountryName.CI", defaultMessage: "Ivory Coast"}, + CM: {id: "CountryName.CM", defaultMessage: "Cameroon"}, + CD: {id: "CountryName.CD", defaultMessage: "Congo (Kinshasa)"}, + CG: {id: "CountryName.CG", defaultMessage: "Congo (Brazzaville)"}, + CO: {id: "CountryName.CO", defaultMessage: "Colombia"}, + CR: {id: "CountryName.CR", defaultMessage: "Costa Rica"}, + CU: {id: "CountryName.CU", defaultMessage: "Cuba"}, + CY: {id: "CountryName.CY", defaultMessage: "Cyprus"}, + CZ: {id: "CountryName.CZ", defaultMessage: "Czech Republic"}, + DE: {id: "CountryName.DE", defaultMessage: "Germany"}, + DJ: {id: "CountryName.DJ", defaultMessage: "Djibouti"}, + DK: {id: "CountryName.DK", defaultMessage: "Denmark"}, + DO: {id: "CountryName.DO", defaultMessage: "Dominican Republic"}, + DZ: {id: "CountryName.DZ", defaultMessage: "Algeria"}, + EC: {id: "CountryName.EC", defaultMessage: "Ecuador"}, + EG: {id: "CountryName.EG", defaultMessage: "Egypt"}, + ER: {id: "CountryName.ER", defaultMessage: "Eritrea"}, + ES: {id: "CountryName.ES", defaultMessage: "Spain"}, + EE: {id: "CountryName.EE", defaultMessage: "Estonia"}, + ET: {id: "CountryName.ET", defaultMessage: "Ethiopia"}, + FI: {id: "CountryName.FI", defaultMessage: "Finland"}, + FJ: {id: "CountryName.FJ", defaultMessage: "Fiji"}, + FK: {id: "CountryName.FK", defaultMessage: "Falkland Islands"}, + FR: {id: "CountryName.FR", defaultMessage: "France"}, + GA: {id: "CountryName.GA", defaultMessage: "Gabon"}, + GB: {id: "CountryName.GB", defaultMessage: "United Kingdom"}, + GE: {id: "CountryName.GE", defaultMessage: "Georgia"}, + GH: {id: "CountryName.GH", defaultMessage: "Ghana"}, + GN: {id: "CountryName.GN", defaultMessage: "Guinea"}, + GM: {id: "CountryName.GM", defaultMessage: "Gambia"}, + GW: {id: "CountryName.GW", defaultMessage: "Guinea Bissau"}, + GQ: {id: "CountryName.GQ", defaultMessage: "Equatorial Guinea"}, + GR: {id: "CountryName.GR", defaultMessage: "Greece"}, + GL: {id: "CountryName.GL", defaultMessage: "Greenland"}, + GT: {id: "CountryName.GT", defaultMessage: "Guatemala"}, + GY: {id: "CountryName.GY", defaultMessage: "Guyana"}, + HN: {id: "CountryName.HN", defaultMessage: "Honduras"}, + HR: {id: "CountryName.HR", defaultMessage: "Croatia"}, + HT: {id: "CountryName.HT", defaultMessage: "Haiti"}, + HU: {id: "CountryName.HU", defaultMessage: "Hungary"}, + ID: {id: "CountryName.ID", defaultMessage: "Indonesia"}, + IN: {id: "CountryName.IN", defaultMessage: "India"}, + IE: {id: "CountryName.IE", defaultMessage: "Ireland"}, + IR: {id: "CountryName.IR", defaultMessage: "Iran"}, + IQ: {id: "CountryName.IQ", defaultMessage: "Iraq"}, + IS: {id: "CountryName.IS", defaultMessage: "Iceland"}, + IL: {id: "CountryName.IL", defaultMessage: "Israel"}, + IT: {id: "CountryName.IT", defaultMessage: "Italy"}, + JM: {id: "CountryName.JM", defaultMessage: "Jamaica"}, + JO: {id: "CountryName.JO", defaultMessage: "Jordan"}, + JP: {id: "CountryName.JP", defaultMessage: "Japan"}, + KZ: {id: "CountryName.KZ", defaultMessage: "Kazakhstan"}, + KE: {id: "CountryName.KE", defaultMessage: "Kenya"}, + KG: {id: "CountryName.KG", defaultMessage: "Kyrgyzstan"}, + KH: {id: "CountryName.KH", defaultMessage: "Cambodia"}, + KR: {id: "CountryName.KR", defaultMessage: "South Korea"}, + KW: {id: "CountryName.KW", defaultMessage: "Kuwait"}, + LA: {id: "CountryName.LA", defaultMessage: "Laos"}, + LB: {id: "CountryName.LB", defaultMessage: "Lebanon"}, + LR: {id: "CountryName.LR", defaultMessage: "Liberia"}, + LY: {id: "CountryName.LY", defaultMessage: "Libya"}, + LK: {id: "CountryName.LK", defaultMessage: "Sri Lanka"}, + LS: {id: "CountryName.LS", defaultMessage: "Lesotho"}, + LT: {id: "CountryName.LT", defaultMessage: "Lithuania"}, + LU: {id: "CountryName.LU", defaultMessage: "Luxembourg"}, + LV: {id: "CountryName.LV", defaultMessage: "Latvia"}, + MA: {id: "CountryName.MA", defaultMessage: "Morocco"}, + MD: {id: "CountryName.MD", defaultMessage: "Moldova"}, + MG: {id: "CountryName.MG", defaultMessage: "Madagascar"}, + MX: {id: "CountryName.MX", defaultMessage: "Mexico"}, + MK: {id: "CountryName.MK", defaultMessage: "Macedonia"}, + ML: {id: "CountryName.ML", defaultMessage: "Mali"}, + MM: {id: "CountryName.MM", defaultMessage: "Myanmar"}, + ME: {id: "CountryName.ME", defaultMessage: "Montenegro"}, + MN: {id: "CountryName.MN", defaultMessage: "Mongolia"}, + MZ: {id: "CountryName.MZ", defaultMessage: "Mozambique"}, + MR: {id: "CountryName.MR", defaultMessage: "Mauritania"}, + MW: {id: "CountryName.MW", defaultMessage: "Malawi"}, + MY: {id: "CountryName.MY", defaultMessage: "Malaysia"}, + NA: {id: "CountryName.NA", defaultMessage: "Namibia"}, + NC: {id: "CountryName.NC", defaultMessage: "New Caledonia"}, + NE: {id: "CountryName.NE", defaultMessage: "Niger"}, + NG: {id: "CountryName.NG", defaultMessage: "Nigeria"}, + NI: {id: "CountryName.NI", defaultMessage: "Nicaragua"}, + NL: {id: "CountryName.NL", defaultMessage: "Netherlands"}, + NO: {id: "CountryName.NO", defaultMessage: "Norway"}, + NP: {id: "CountryName.NP", defaultMessage: "Nepal"}, + NZ: {id: "CountryName.NZ", defaultMessage: "New Zealand"}, + OM: {id: "CountryName.OM", defaultMessage: "Oman"}, + PK: {id: "CountryName.PK", defaultMessage: "Pakistan"}, + PA: {id: "CountryName.PA", defaultMessage: "Panama"}, + PE: {id: "CountryName.PE", defaultMessage: "Peru"}, + PH: {id: "CountryName.PH", defaultMessage: "Philippines"}, + PG: {id: "CountryName.PG", defaultMessage: "Papua New Guinea"}, + PL: {id: "CountryName.PL", defaultMessage: "Poland"}, + PR: {id: "CountryName.PR", defaultMessage: "Puerto Rico"}, + KP: {id: "CountryName.KP", defaultMessage: "North Korea"}, + PT: {id: "CountryName.PT", defaultMessage: "Portugal"}, + PY: {id: "CountryName.PY", defaultMessage: "Paraguay"}, + QA: {id: "CountryName.QA", defaultMessage: "Qatar"}, + RO: {id: "CountryName.RO", defaultMessage: "Romania"}, + RU: {id: "CountryName.RU", defaultMessage: "Russia"}, + RW: {id: "CountryName.RW", defaultMessage: "Rwanda"}, + SA: {id: "CountryName.SA", defaultMessage: "Saudi Arabia"}, + SD: {id: "CountryName.SD", defaultMessage: "Sudan"}, + SS: {id: "CountryName.SS", defaultMessage: "South Sudan"}, + SN: {id: "CountryName.SN", defaultMessage: "Senegal"}, + SB: {id: "CountryName.SB", defaultMessage: "Solomon Islands"}, + SL: {id: "CountryName.SL", defaultMessage: "Sierra Leone"}, + SV: {id: "CountryName.SV", defaultMessage: "El Salvador"}, + SO: {id: "CountryName.SO", defaultMessage: "Somalia"}, + RS: {id: "CountryName.RS", defaultMessage: "Serbia"}, + SR: {id: "CountryName.SR", defaultMessage: "Suriname"}, + SK: {id: "CountryName.SK", defaultMessage: "Slovakia"}, + SI: {id: "CountryName.SI", defaultMessage: "Slovenia"}, + SE: {id: "CountryName.SE", defaultMessage: "Sweden"}, + SZ: {id: "CountryName.SZ", defaultMessage: "Swaziland"}, + SY: {id: "CountryName.SY", defaultMessage: "Syria"}, + TD: {id: "CountryName.TD", defaultMessage: "Chad"}, + TG: {id: "CountryName.TG", defaultMessage: "Togo"}, + TH: {id: "CountryName.TH", defaultMessage: "Thailand"}, + TJ: {id: "CountryName.TJ", defaultMessage: "Tajikistan"}, + TM: {id: "CountryName.TM", defaultMessage: "Turkmenistan"}, + TL: {id: "CountryName.TL", defaultMessage: "East Timor"}, + TT: {id: "CountryName.TT", defaultMessage: "Trinidad and Tobago"}, + TN: {id: "CountryName.TN", defaultMessage: "Tunisia"}, + TR: {id: "CountryName.TR", defaultMessage: "Turkey"}, + TW: {id: "CountryName.TW", defaultMessage: "Taiwan"}, + TZ: {id: "CountryName.TZ", defaultMessage: "Tanzania"}, + UG: {id: "CountryName.UG", defaultMessage: "Uganda"}, + UA: {id: "CountryName.UA", defaultMessage: "Ukraine"}, + UY: {id: "CountryName.UY", defaultMessage: "Uruguay"}, + US: {id: "CountryName.US", defaultMessage: "United States"}, + UZ: {id: "CountryName.UZ", defaultMessage: "Uzbekistan"}, + VE: {id: "CountryName.VE", defaultMessage: "Venezuela"}, + VN: {id: "CountryName.VN", defaultMessage: "Vietnam"}, + VU: {id: "CountryName.VU", defaultMessage: "Vanuatu"}, + PS: {id: "CountryName.PS", defaultMessage: "West Bank"}, + YE: {id: "CountryName.YE", defaultMessage: "Yemen"}, + ZA: {id: "CountryName.ZA", defaultMessage: "South Africa"}, + ZM: {id: "CountryName.ZM", defaultMessage: "Zambia"}, + ZW: {id: "CountryName.ZW", defaultMessage: "Zimbabwe"}, +}) diff --git a/src/components/CountrySelector/CountrySelector.js b/src/components/CountrySelector/CountrySelector.js new file mode 100644 index 000000000..12b9fc5cc --- /dev/null +++ b/src/components/CountrySelector/CountrySelector.js @@ -0,0 +1,55 @@ +import React, { Component } from 'react' +import PropTypes from 'prop-types' +import classNames from 'classnames' +import { FormattedMessage, injectIntl } from 'react-intl' +import _map from 'lodash/map' +import WithDeactivateOnOutsideClick + from '../HOCs/WithDeactivateOnOutsideClick/WithDeactivateOnOutsideClick' +import DropdownButton from '../Bulma/DropdownButton' +import { supportedCountries } from '../../services/Leaderboard/CountryBoundingBoxes' +import countryMessages from '../CountryLeaderboard/Messages' +import './CountrySelector.css' + +const DeactivatableDropdownButton = WithDeactivateOnOutsideClick(DropdownButton) + +/** + * CountrySelector renders an unmanaged dropdown button that can be used + * to select a country where the value returned is a country code. + * + * @author [Kelli Rotstan](https://github.com/krotstan) + */ +export class CountrySelector extends Component { + onSelect = selection => { + this.props.selectCountry(selection.value) + } + + render() { + const dropdownOptions = _map(supportedCountries(), country => ({ + key: country.countryCode, + text: this.props.intl.formatMessage(countryMessages[country.countryCode]), + value: country.countryCode, + })) + + return ( + +
+ +
+
+ + ) + } +} + +CountrySelector.propTypes = { + /** Current selection */ + currentCountryCode: PropTypes.string.isRequired, + /** Invoked when the user chooses a new country */ + selectCountry: PropTypes.func.isRequired, +} + +export default injectIntl(CountrySelector) diff --git a/src/components/CountrySelector/CountrySelector.scss b/src/components/CountrySelector/CountrySelector.scss new file mode 100644 index 000000000..699aa76b1 --- /dev/null +++ b/src/components/CountrySelector/CountrySelector.scss @@ -0,0 +1,27 @@ +@import 'theme.scss'; + +.country-selector { + margin: 2px 20px 0px -60px; + + .dropdown-trigger { + line-height: 24px; + + .button.is-outlined { + @include invert-on-hover($grey-light, $white); + font-weight: $weight-normal; + + .dropdown-indicator { + @include arrow($grey-light); + height: 10px; + width: 10px; + position: relative; + margin-left: 0.5em; + bottom: 2px; + } + } + } + + .dropdown-item { + font-weight: $weight-normal; + } +} diff --git a/src/components/HOCs/WithChallenge/WithChallenge.js b/src/components/HOCs/WithChallenge/WithChallenge.js index e66e41b91..580d6e7fa 100644 --- a/src/components/HOCs/WithChallenge/WithChallenge.js +++ b/src/components/HOCs/WithChallenge/WithChallenge.js @@ -14,8 +14,8 @@ import AppErrors from '../../../services/Error/AppErrors' * * @author [Kelli Rotstan](https://github.com/krotstan) */ -export const WithChallenge = function(WrappedComponent) { - class _WithChallenge extends Component { +const WithChallenge = function(WrappedComponent) { + return class extends Component { state = { challenge: null, } @@ -36,22 +36,10 @@ export const WithChallenge = function(WrappedComponent) { */ updateChallenge = props => { const challengeId = this.parseChallengeId(props) - - if (_get(this.state, 'challenge.id') !== challengeId) { - let challenge = _get(props.entities, `challenges.${challengeId}`) - - if (_isObject(challenge)) { - this.setState({ - challenge: challenge - }) - } - else { - this.props.loadChallenge(challengeId) - } - } + getChallenge(challengeId, props, this) } - componentWillMount() { + componentDidMount() { this.updateChallenge(this.props) } @@ -62,8 +50,6 @@ export const WithChallenge = function(WrappedComponent) { ) } } - - return _WithChallenge } const mapStateToProps = state => ({ @@ -82,10 +68,38 @@ export const mapDispatchToProps = (dispatch, ownProps) => { dispatch(addError(AppErrors.challenge.doesNotExist)) ownProps.history.push('/browse/challenges') } + else { + return _get(normalizedResults, `entities.challenges.${normalizedResults.result}`) + } }) } } } +/** + * This method fetches the challenge and calls setState. + * It has been externalized from the component to aid in testing. + */ +export const getChallenge = (challengeId, props, component) => { + if (_get(component.state, 'challenge.id') !== challengeId) { + let challenge = _get(props.entities, `challenges.${challengeId}`) + + if (_isObject(challenge)) { + component.setState({ + challenge: challenge + }) + } + else { + props.loadChallenge(challengeId).then(challenge => { + if (challenge) { + component.setState({ + challenge: challenge + }) + } + }) + } + } +} + export default WrappedComponent => connect(mapStateToProps, mapDispatchToProps)(WithChallenge(WrappedComponent)) diff --git a/src/components/HOCs/WithChallenge/WithChallenge.test.js b/src/components/HOCs/WithChallenge/WithChallenge.test.js new file mode 100644 index 000000000..32f3eb0e4 --- /dev/null +++ b/src/components/HOCs/WithChallenge/WithChallenge.test.js @@ -0,0 +1,40 @@ +import React, { Component } from 'react' +import { mapDispatchToProps, getChallenge } from './WithChallenge' + +jest.mock('../../../services/Challenge/Challenge') + +let basicState = null + +const fetchChallenge = jest.fn() + +test("mapDispatchToProps makes the loadChallenge() function available", async () => { + const challengeId = 123 + const normalizedResults = {result: challengeId, entities: {challenges: {123:{challengeId: 123}}}} + const dispatch = jest.fn(() => Promise.resolve(normalizedResults)) + const mappedProps = mapDispatchToProps(dispatch) + + const result = await mappedProps.loadChallenge(challengeId) + expect(dispatch).toBeCalled() + expect(result).toEqual({challengeId: challengeId}) +}) + +test("getChallenge returns the Challenge from the entities map if it exists", () => { + const challengeId = 123 + const props = {entities: {challenges: {123: {challengeId: 123}}}} + + const component = {state: {}, setState: jest.fn() } + const result = getChallenge(challengeId, props, component) + expect(component.setState).toBeCalledWith({"challenge": {"challengeId": 123}}) +}) + +test("getChallenge returns a fetched Challenge if not already fetched", async () => { + const challengeId = 123 + const normalizedResults = {result: challengeId, entities: {challenges: {123: {challengeId: 123}}}} + const props = { + loadChallenge: (challengeId) => Promise.resolve({challengeId: challengeId}) + } + + const component = {state: {}, setState: jest.fn() } + const result = await getChallenge(challengeId, props, component) + expect(component.setState).toBeCalledWith({"challenge": {"challengeId": 123}}) +}) diff --git a/src/components/HOCs/WithLeaderboard/WithLeaderboard.js b/src/components/HOCs/WithLeaderboard/WithLeaderboard.js index 5169c92d1..e23cb3aec 100644 --- a/src/components/HOCs/WithLeaderboard/WithLeaderboard.js +++ b/src/components/HOCs/WithLeaderboard/WithLeaderboard.js @@ -4,8 +4,9 @@ import _isArray from 'lodash/isArray' import _isBoolean from 'lodash/isBoolean' import _map from 'lodash/map' import _isEqual from 'lodash/isEqual' -import subMonths from 'date-fns/sub_months' -import { fetchLeaderboard } from '../../../services/Leaderboard/Leaderboard' +import _get from 'lodash/get' +import { fetchLeaderboard, fetchLeaderboardForUser, + DEFAULT_LEADERBOARD_COUNT } from '../../../services/Leaderboard/Leaderboard' /** * WithLeaderboard provides leaderboard and leaderboardLoading props containing @@ -17,16 +18,20 @@ const WithLeaderboard = function(WrappedComponent, initialMonthsPast=1) { return class extends Component { state = { monthsPast: initialMonthsPast, + countryCode: null, leaderboard: null, leaderboardLoading: false, + userLeaderboard: null, + showingCount: DEFAULT_LEADERBOARD_COUNT, } - leaderboardParams = startDate => { - const params = new Map([['startDate', startDate], - ['endDate', null], + leaderboardParams = (numberMonths, countryCode) => { + const params = new Map([['numberMonths', numberMonths], ['onlyEnabled', true], ['forProjects', null], - ['forChallenges', null]]) + ['forChallenges', null], + ['forUsers', null], + ['forCountries', null]]) if (_isObject(this.props.leaderboardOptions)) { if (_isBoolean(this.props.leaderboardOptions.onlyEnabled)) { @@ -42,49 +47,85 @@ const WithLeaderboard = function(WrappedComponent, initialMonthsPast=1) { _isArray(this.props.projects)) { params.set('forProjects', [_map(this.props.projects, 'id')]) } + + if (this.props.leaderboardOptions.filterCountry && countryCode) { + params.set('forCountries', [countryCode || this.props.countryCode]) + } } return params.values() } - updateLeaderboard = startDate => { - this.setState({leaderboardLoading: true}) + updateLeaderboard = (numberMonths, countryCode, loadMore = false) => { + let showingCount = this.state.showingCount + + if (loadMore) { + showingCount += DEFAULT_LEADERBOARD_COUNT + } - fetchLeaderboard(...this.leaderboardParams(startDate)).then(leaderboard => { + this.setState({leaderboardLoading: true, showingCount}) + + fetchLeaderboard(...this.leaderboardParams(numberMonths, countryCode), showingCount).then(leaderboard => { this.setState({leaderboard, leaderboardLoading: false}) }) - } - monthsPastStartDate = monthsPast => subMonths(new Date(), monthsPast) + const userId = _get(this.props, 'user.id') + if (userId) { + fetchLeaderboardForUser(userId, 1, ...this.leaderboardParams(numberMonths, countryCode)).then(userLeaderboard => { + this.setState({userLeaderboard: userLeaderboard}) + }) + } + } setMonthsPast = monthsPast => { if (monthsPast !== this.state.monthsPast) { this.setState({monthsPast}) - this.updateLeaderboard(this.monthsPastStartDate(monthsPast)) + this.updateLeaderboard(monthsPast, this.props.countryCode || this.state.countryCode) + } + } + + setCountryCode = countryCode => { + if (countryCode !== this.state.countryCode) { + this.setState({countryCode}) + this.updateLeaderboard(this.state.monthsPast, countryCode) + this.props.history.push(`/country/${countryCode}/leaderboard` ) } } + loadMore = () => { + this.updateLeaderboard(this.props.monthsPast || this.state.monthsPast, + this.props.countryCode || this.state.countryCode, true) + } + componentDidMount() { - this.updateLeaderboard(this.monthsPastStartDate(this.props.monthsPast || - this.state.monthsPast)) + this.updateLeaderboard(this.props.monthsPast || this.state.monthsPast, + this.props.countryCode || this.state.countryCode) } componentDidUpdate(prevProps) { // A change to state will also fetch leaderboard data, so we only need to // worry about fetching if we're controlled and props change. if (this.props.monthsPast !== prevProps.monthsPast || + this.props.countryCode !== prevProps.countryCode || !_isEqual(this.props.challenges, prevProps.challenges) || !_isEqual(this.props.projects, prevProps.projects)) { - this.updateLeaderboard(this.monthsPastStartDate(this.props.monthsPast || - this.state.monthsPast)) + this.updateLeaderboard(this.props.monthsPast || this.state.monthsPast, + this.props.countryCode || this.state.countryCode) } } render() { + const moreResults = this.state.leaderboard ? this.state.showingCount <= this.state.leaderboard.length : true + return } } diff --git a/src/components/Leaderboard/Leaderboard.js b/src/components/Leaderboard/Leaderboard.js index 115c2f2b1..263f3714e 100644 --- a/src/components/Leaderboard/Leaderboard.js +++ b/src/components/Leaderboard/Leaderboard.js @@ -6,15 +6,22 @@ import { Link } from 'react-router-dom' import _map from 'lodash/map' import _truncate from 'lodash/truncate' import _isFinite from 'lodash/isFinite' +import _get from 'lodash/get' +import _find from 'lodash/find' +import _each from 'lodash/each' import WithLeaderboard from '../HOCs/WithLeaderboard/WithLeaderboard' +import WithCurrentUser from '../HOCs/WithCurrentUser/WithCurrentUser' import WithDeactivateOnOutsideClick from '../HOCs/WithDeactivateOnOutsideClick/WithDeactivateOnOutsideClick' +import LeaderboardMap from './LeaderboardMap' import SimpleDropdown from '../Bulma/SimpleDropdown' import PastDurationSelector from '../PastDurationSelector/PastDurationSelector' +import CountrySelector from '../CountrySelector/CountrySelector' import MarkdownContent from '../MarkdownContent/MarkdownContent' import BusySpinner from '../BusySpinner/BusySpinner' import SvgSymbol from '../SvgSymbol/SvgSymbol' import Ribbon from '../Ribbon/Ribbon' +import LoadMoreButton from '../LoadMoreButton/LoadMoreButton' import messages from './Messages' import './Leaderboard.css' @@ -29,61 +36,83 @@ export class Leaderboard extends Component { this.props.topLeaderCount : DEFAULT_TOP_LEADER_COUNT - leaderGroup = (leaders, offset, withRibbon=false) => { - return _map(leaders, (leader, index) => { - const topChallenges = _map(leader.topChallenges.slice(0, this.topLeaderCount()), challenge => ( - - {_truncate(challenge.name, {length: 35})} - - )) + buildBoard = (leader, withRibbon, isCurrentUser, optionalClass) => { + const topChallenges = _map(leader.topChallenges.slice(0, this.topLeaderCount()), challenge => ( + + {_truncate(challenge.name, {length: 35})} + + )) - return ( -
- {withRibbon ? - - #{index + offset} - : -
#{index + offset}
- } - -
-
-
- -
-
{leader.name}
-
- - - -
+ return ( +
+ {withRibbon ? + + #{leader.rank} + : +
#{leader.rank}
+ } + +
+
+
+ +
+
{leader.name}
+
+ + +
+
- {!this.props.suppressTopChallenges && -
-

- -

-
- {topChallenges} -
+ {!this.props.suppressTopChallenges && +
+

+ +

+
+ {topChallenges}
- } -
- ) +
+ } +
+ ) + } + + leaderGroup = (leaders, withRibbon=false, addUserboard=false) => { + const currentUserId = _get(this.props, 'user.id') + let resultsIncludeUser = false + + const builtBoards = _map(leaders, (leader, index) => { + if (leader.userId === currentUserId) { + resultsIncludeUser = true + } + + return this.buildBoard(leader, withRibbon, leader.userId === currentUserId) }) + + if (addUserboard && currentUserId && !resultsIncludeUser) { + _each(this.props.userLeaderboard, (board) => { + if (!_find(this.props.leaderboard, {userId: board.userId})) { + builtBoards.push(this.buildBoard(board, withRibbon, + currentUserId === board.userId, "current-user-leader-bracket")) + } + }) + } + return builtBoards } render() { if (process.env.REACT_APP_FEATURE_LEADERBOARD !== 'enabled') { return null } - else if (this.props.leaderboardLoading) { + else if (this.props.leaderboardLoading && !this.props.leaderboard) { return (
@@ -106,6 +135,11 @@ export class Leaderboard extends Component { pastMonthsOptions={[1, 3, 6, 12]} currentMonthsPast={this.props.monthsPast} selectDuration={this.props.setMonthsPast} /> + {this.props.leaderboardOptions.filterCountry && + + }
@@ -122,6 +156,10 @@ export class Leaderboard extends Component {

{this.props.displayName}

} + {this.props.leaderboardOptions.filterCountry && + + } + {this.props.leaderboard.length === 0 &&
@@ -130,16 +168,22 @@ export class Leaderboard extends Component { {this.topLeaderCount() > 0 &&
- {this.leaderGroup(this.props.leaderboard.slice(0, this.topLeaderCount()), 1, true)} + {this.leaderGroup(this.props.leaderboard.slice(0, this.topLeaderCount()), true, false)}
} {this.props.leaderboard.length > this.topLeaderCount() &&
- {this.leaderGroup(this.props.leaderboard.slice(this.topLeaderCount()), - this.topLeaderCount() + 1, false)} + {this.leaderGroup(this.props.leaderboard.slice(this.topLeaderCount()), false, + !_find(this.props.leaderboard, {userId: _get(this.props, 'user.id')}))}
} + +
+ + + +
+ + + + +
+ ) + } +} + +LeaderboardMap.propTypes = { + /** Desired center-point of the map */ + countryCode: PropTypes.string.isRequired, +} diff --git a/src/components/Leaderboard/LeaderboardMap.scss b/src/components/Leaderboard/LeaderboardMap.scss new file mode 100644 index 000000000..48f684ca7 --- /dev/null +++ b/src/components/Leaderboard/LeaderboardMap.scss @@ -0,0 +1,17 @@ +@import '../../variables.scss'; + +.leaderboard-map { + padding-bottom: 20px; + max-width: 500px; + margin-right: auto; + margin-left: auto; + + .leaflet-container { + height: 200px; + border-radius: $radius-medium; + + .leaflet-pane { + z-index: $intralayer-bump; + } + } +} diff --git a/src/components/Leaderboard/Messages.js b/src/components/Leaderboard/Messages.js index 2d36412b5..ecce6848c 100644 --- a/src/components/Leaderboard/Messages.js +++ b/src/components/Leaderboard/Messages.js @@ -43,5 +43,8 @@ export default defineMessages({ id: "Leaderboard.users.none", defaultMessage: "No users for time period", }, + loadMoreLabel: { + id: "Leaderboard.controls.loadMore.label", + defaultMessage: "Show More", + }, }) - diff --git a/src/countryCodeBoundingBox.json b/src/countryCodeBoundingBox.json new file mode 100644 index 000000000..8c9367f4e --- /dev/null +++ b/src/countryCodeBoundingBox.json @@ -0,0 +1,175 @@ +{ + "AF": ["Afghanistan", [60.53, 29.32, 75.16, 38.49]], + "AO": ["Angola", [11.64, -17.93, 24.08, -4.44]], + "AL": ["Albania", [19.3, 39.62, 21.02, 42.69]], + "AE": ["United Arab Emirates", [51.58, 22.5, 56.4, 26.06]], + "AR": ["Argentina", [-73.42, -55.25, -53.63, -21.83]], + "AM": ["Armenia", [43.58, 38.74, 46.51, 41.25]], + "AQ": ["Antarctica", [-180.0, -90.0, 180.0, -63.27]], + "TF": ["French Southern Territories", [68.72, -49.78, 70.56, -48.63]], + "AU": ["Australia", [113.34, -43.63, 153.57, -10.67]], + "AT": ["Austria", [9.48, 46.43, 16.98, 49.04]], + "AZ": ["Azerbaijan", [44.79, 38.27, 50.39, 41.86]], + "BI": ["Burundi", [29.02, -4.5, 30.75, -2.35]], + "BE": ["Belgium", [2.51, 49.53, 6.16, 51.48]], + "BJ": ["Benin", [0.77, 6.14, 3.8, 12.24]], + "BF": ["Burkina Faso", [-5.47, 9.61, 2.18, 15.12]], + "BD": ["Bangladesh", [88.08, 20.67, 92.67, 26.45]], + "BG": ["Bulgaria", [22.38, 41.23, 28.56, 44.23]], + "BS": ["Bahamas", [-78.98, 23.71, -77.0, 27.04]], + "BA": ["Bosnia and Herzegovina", [15.75, 42.65, 19.6, 45.23]], + "BY": ["Belarus", [23.2, 51.32, 32.69, 56.17]], + "BZ": ["Belize", [-89.23, 15.89, -88.11, 18.5]], + "BO": ["Bolivia", [-69.59, -22.87, -57.5, -9.76]], + "BR": ["Brazil", [-73.99, -33.77, -34.73, 5.24]], + "BN": ["Brunei", [114.2, 4.01, 115.45, 5.45]], + "BT": ["Bhutan", [88.81, 26.72, 92.1, 28.3]], + "BW": ["Botswana", [19.9, -26.83, 29.43, -17.66]], + "CF": ["Central African Republic", [14.46, 2.27, 27.37, 11.14]], + "CA": ["Canada", [-141.0, 41.68, -52.65, 73.23]], + "CH": ["Switzerland", [6.02, 45.78, 10.44, 47.83]], + "CL": ["Chile", [-75.64, -55.61, -66.96, -17.58]], + "CN": ["China", [73.68, 18.2, 135.03, 53.46]], + "CI": ["Ivory Coast", [-8.6, 4.34, -2.56, 10.52]], + "CM": ["Cameroon", [8.49, 1.73, 16.01, 12.86]], + "CD": ["Congo (Kinshasa)", [12.18, -13.26, 31.17, 5.26]], + "CG": ["Congo (Brazzaville)", [11.09, -5.04, 18.45, 3.73]], + "CO": ["Colombia", [-78.99, -4.3, -66.88, 12.44]], + "CR": ["Costa Rica", [-85.94, 8.23, -82.55, 11.22]], + "CU": ["Cuba", [-84.97, 19.86, -74.18, 23.19]], + "CY": ["Cyprus", [32.26, 34.57, 34.0, 35.17]], + "CZ": ["Czech Republic", [12.24, 48.56, 18.85, 51.12]], + "DE": ["Germany", [5.99, 47.3, 15.02, 54.98]], + "DJ": ["Djibouti", [41.66, 10.93, 43.32, 12.7]], + "DK": ["Denmark", [8.09, 54.8, 12.69, 57.73]], + "DO": ["Dominican Republic", [-71.95, 17.6, -68.32, 19.88]], + "DZ": ["Algeria", [-8.68, 19.06, 12.0, 37.12]], + "EC": ["Ecuador", [-80.97, -4.96, -75.23, 1.38]], + "EG": ["Egypt", [24.7, 22.0, 36.87, 31.59]], + "ER": ["Eritrea", [36.32, 12.46, 43.08, 18.0]], + "ES": ["Spain", [-9.39, 35.95, 3.04, 43.75]], + "EE": ["Estonia", [23.34, 57.47, 28.13, 59.61]], + "ET": ["Ethiopia", [32.95, 3.42, 47.79, 14.96]], + "FI": ["Finland", [20.65, 59.85, 31.52, 70.16]], + "FJ": ["Fiji", [-180.0, -18.29, 180.0, -16.02]], + "FK": ["Falkland Islands", [-61.2, -52.3, -57.75, -51.1]], + "FR": ["France", [-5.0, 42.5, 9.56, 51.15]], + "GA": ["Gabon", [8.8, -3.98, 14.43, 2.33]], + "GB": ["United Kingdom", [-7.57, 49.96, 1.68, 58.64]], + "GE": ["Georgia", [39.96, 41.06, 46.64, 43.55]], + "GH": ["Ghana", [-3.24, 4.71, 1.06, 11.1]], + "GN": ["Guinea", [-15.13, 7.31, -7.83, 12.59]], + "GM": ["Gambia", [-16.84, 13.13, -13.84, 13.88]], + "GW": ["Guinea Bissau", [-16.68, 11.04, -13.7, 12.63]], + "GQ": ["Equatorial Guinea", [9.31, 1.01, 11.29, 2.28]], + "GR": ["Greece", [20.15, 34.92, 26.6, 41.83]], + "GL": ["Greenland", [-73.3, 60.04, -12.21, 83.65]], + "GT": ["Guatemala", [-92.23, 13.74, -88.23, 17.82]], + "GY": ["Guyana", [-61.41, 1.27, -56.54, 8.37]], + "HN": ["Honduras", [-89.35, 12.98, -83.15, 16.01]], + "HR": ["Croatia", [13.66, 42.48, 19.39, 46.5]], + "HT": ["Haiti", [-74.46, 18.03, -71.62, 19.92]], + "HU": ["Hungary", [16.2, 45.76, 22.71, 48.62]], + "ID": ["Indonesia", [95.29, -10.36, 141.03, 5.48]], + "IN": ["India", [68.18, 7.97, 97.4, 35.49]], + "IE": ["Ireland", [-9.98, 51.67, -6.03, 55.13]], + "IR": ["Iran", [44.11, 25.08, 63.32, 39.71]], + "IQ": ["Iraq", [38.79, 29.1, 48.57, 37.39]], + "IS": ["Iceland", [-24.33, 63.5, -13.61, 66.53]], + "IL": ["Israel", [34.27, 29.5, 35.84, 33.28]], + "IT": ["Italy", [6.75, 36.62, 18.48, 47.12]], + "JM": ["Jamaica", [-78.34, 17.7, -76.2, 18.52]], + "JO": ["Jordan", [34.92, 29.2, 39.2, 33.38]], + "JP": ["Japan", [129.41, 31.03, 145.54, 45.55]], + "KZ": ["Kazakhstan", [46.47, 40.66, 87.36, 55.39]], + "KE": ["Kenya", [33.89, -4.68, 41.86, 5.51]], + "KG": ["Kyrgyzstan", [69.46, 39.28, 80.26, 43.3]], + "KH": ["Cambodia", [102.35, 10.49, 107.61, 14.57]], + "KR": ["South Korea", [126.12, 34.39, 129.47, 38.61]], + "KW": ["Kuwait", [46.57, 28.53, 48.42, 30.06]], + "LA": ["Laos", [100.12, 13.88, 107.56, 22.46]], + "LB": ["Lebanon", [35.13, 33.09, 36.61, 34.64]], + "LR": ["Liberia", [-11.44, 4.36, -7.54, 8.54]], + "LY": ["Libya", [9.32, 19.58, 25.16, 33.14]], + "LK": ["Sri Lanka", [79.7, 5.97, 81.79, 9.82]], + "LS": ["Lesotho", [27.0, -30.65, 29.33, -28.65]], + "LT": ["Lithuania", [21.06, 53.91, 26.59, 56.37]], + "LU": ["Luxembourg", [5.67, 49.44, 6.24, 50.13]], + "LV": ["Latvia", [21.06, 55.62, 28.18, 57.97]], + "MA": ["Morocco", [-17.02, 21.42, -1.12, 35.76]], + "MD": ["Moldova", [26.62, 45.49, 30.02, 48.47]], + "MG": ["Madagascar", [43.25, -25.6, 50.48, -12.04]], + "MX": ["Mexico", [-117.13, 14.54, -86.81, 32.72]], + "MK": ["Macedonia", [20.46, 40.84, 22.95, 42.32]], + "ML": ["Mali", [-12.17, 10.1, 4.27, 24.97]], + "MM": ["Myanmar", [92.3, 9.93, 101.18, 28.34]], + "ME": ["Montenegro", [18.45, 41.88, 20.34, 43.52]], + "MN": ["Mongolia", [87.75, 41.6, 119.77, 52.05]], + "MZ": ["Mozambique", [30.18, -26.74, 40.78, -10.32]], + "MR": ["Mauritania", [-17.06, 14.62, -4.92, 27.4]], + "MW": ["Malawi", [32.69, -16.8, 35.77, -9.23]], + "MY": ["Malaysia", [100.09, 0.77, 119.18, 6.93]], + "NA": ["Namibia", [11.73, -29.05, 25.08, -16.94]], + "NC": ["New Caledonia", [164.03, -22.4, 167.12, -20.11]], + "NE": ["Niger", [0.3, 11.66, 15.9, 23.47]], + "NG": ["Nigeria", [2.69, 4.24, 14.58, 13.87]], + "NI": ["Nicaragua", [-87.67, 10.73, -83.15, 15.02]], + "NL": ["Netherlands", [3.31, 50.8, 7.09, 53.51]], + "NO": ["Norway", [4.99, 58.08, 31.29, 70.92]], + "NP": ["Nepal", [80.09, 26.4, 88.17, 30.42]], + "NZ": ["New Zealand", [166.51, -46.64, 178.52, -34.45]], + "OM": ["Oman", [52.0, 16.65, 59.81, 26.4]], + "PK": ["Pakistan", [60.87, 23.69, 77.84, 37.13]], + "PA": ["Panama", [-82.97, 7.22, -77.24, 9.61]], + "PE": ["Peru", [-81.41, -18.35, -68.67, -0.06]], + "PH": ["Philippines", [117.17, 5.58, 126.54, 18.51]], + "PG": ["Papua New Guinea", [141.0, -10.65, 156.02, -2.5]], + "PL": ["Poland", [14.07, 49.03, 24.03, 54.85]], + "PR": ["Puerto Rico", [-67.24, 17.95, -65.59, 18.52]], + "KP": ["North Korea", [124.27, 37.67, 130.78, 42.99]], + "PT": ["Portugal", [-9.53, 36.84, -6.39, 42.28]], + "PY": ["Paraguay", [-62.69, -27.55, -54.29, -19.34]], + "QA": ["Qatar", [50.74, 24.56, 51.61, 26.11]], + "RO": ["Romania", [20.22, 43.69, 29.63, 48.22]], + "RU": ["Russia", [-180.0, 41.15, 180.0, 81.25]], + "RW": ["Rwanda", [29.02, -2.92, 30.82, -1.13]], + "SA": ["Saudi Arabia", [34.63, 16.35, 55.67, 32.16]], + "SD": ["Sudan", [21.94, 8.62, 38.41, 22.0]], + "SS": ["South Sudan", [23.89, 3.51, 35.3, 12.25]], + "SN": ["Senegal", [-17.63, 12.33, -11.47, 16.6]], + "SB": ["Solomon Islands", [156.49, -10.83, 162.4, -6.6]], + "SL": ["Sierra Leone", [-13.25, 6.79, -10.23, 10.05]], + "SV": ["El Salvador", [-90.1, 13.15, -87.72, 14.42]], + "SO": ["Somalia", [40.98, -1.68, 51.13, 12.02]], + "RS": ["Serbia", [18.83, 42.25, 22.99, 46.17]], + "SR": ["Suriname", [-58.04, 1.82, -53.96, 6.03]], + "SK": ["Slovakia", [16.88, 47.76, 22.56, 49.57]], + "SI": ["Slovenia", [13.7, 45.45, 16.56, 46.85]], + "SE": ["Sweden", [11.03, 55.36, 23.9, 69.11]], + "SZ": ["Swaziland", [30.68, -27.29, 32.07, -25.66]], + "SY": ["Syria", [35.7, 32.31, 42.35, 37.23]], + "TD": ["Chad", [13.54, 7.42, 23.89, 23.41]], + "TG": ["Togo", [-0.05, 5.93, 1.87, 11.02]], + "TH": ["Thailand", [97.38, 5.69, 105.59, 20.42]], + "TJ": ["Tajikistan", [67.44, 36.74, 74.98, 40.96]], + "TM": ["Turkmenistan", [52.5, 35.27, 66.55, 42.75]], + "TL": ["East Timor", [124.97, -9.39, 127.34, -8.27]], + "TT": ["Trinidad and Tobago", [-61.95, 10.0, -60.9, 10.89]], + "TN": ["Tunisia", [7.52, 30.31, 11.49, 37.35]], + "TR": ["Turkey", [26.04, 35.82, 44.79, 42.14]], + "TW": ["Taiwan", [120.11, 21.97, 121.95, 25.3]], + "TZ": ["Tanzania", [29.34, -11.72, 40.32, -0.95]], + "UG": ["Uganda", [29.58, -1.44, 35.04, 4.25]], + "UA": ["Ukraine", [22.09, 44.36, 40.08, 52.34]], + "UY": ["Uruguay", [-58.43, -34.95, -53.21, -30.11]], + "US": ["United States", [-125.0, 25.0, -66.96, 49.5]], + "UZ": ["Uzbekistan", [55.93, 37.14, 73.06, 45.59]], + "VE": ["Venezuela", [-73.3, 0.72, -59.76, 12.16]], + "VN": ["Vietnam", [102.17, 8.6, 109.34, 23.35]], + "VU": ["Vanuatu", [166.63, -16.6, 167.84, -14.63]], + "PS": ["West Bank", [34.93, 31.35, 35.55, 32.53]], + "YE": ["Yemen", [42.6, 12.59, 53.11, 19.0]], + "ZA": ["South Africa", [16.34, -34.82, 32.83, -22.09]], + "ZM": ["Zambia", [21.89, -17.96, 33.49, -8.24]], + "ZW": ["Zimbabwe", [25.26, -22.27, 32.85, -15.51]] +} diff --git a/src/lang/af.json b/src/lang/af.json index f28b0cf7a..fdae22f46 100644 --- a/src/lang/af.json +++ b/src/lang/af.json @@ -319,5 +319,260 @@ "map.name.mapboxLight": "Mapbox Light", "map.name.mapboxSatellite": "Mapbox Satellite", "map.attribution.mapbox": "© Mapbox, © OpenStreetMap Improve this map", - "ChallengeFilterSubnav.filter.search.label": "Soek..." + "ChallengeFilterSubnav.filter.search.label": "Soek...", + "CountryName.AF": "Afganistan", + "CountryName.AX": "\u00c5landeilande", + "CountryName.AL": "Albani\u00eb", + "CountryName.DZ": "Algeri\u00eb", + "CountryName.AS": "Amerikaans-Samoa", + "CountryName.VI": "Amerikaanse Maagde-eilande", + "CountryName.AD": "Andorra", + "CountryName.AO": "Angola", + "CountryName.AI": "Anguilla", + "CountryName.AQ": "Antarktika", + "CountryName.AG": "Antigua en Barbuda", + "CountryName.AR": "Argentini\u00eb", + "CountryName.AM": "Armeni\u00eb", + "CountryName.AW": "Aruba", + "CountryName.AC": "Ascensioneiland", + "CountryName.AU": "Australi\u00eb", + "CountryName.AZ": "Azerbeidjan", + "CountryName.BS": "Bahamas", + "CountryName.BH": "Bahrein", + "CountryName.BD": "Bangladesj", + "CountryName.BB": "Barbados", + "CountryName.BY": "Belarus", + "CountryName.BE": "Belgi\u00eb", + "CountryName.BZ": "Belize", + "CountryName.BJ": "Benin", + "CountryName.BM": "Bermuda", + "CountryName.BT": "Bhoetan", + "CountryName.BO": "Bolivi\u00eb", + "CountryName.BA": "Bosni\u00eb en Herzegowina", + "CountryName.BW": "Botswana", + "CountryName.BR": "Brasili\u00eb", + "CountryName.IO": "Brits-Indiese Oseaangebied", + "CountryName.VG": "Britse Maagde-eilande", + "CountryName.BN": "Broenei", + "CountryName.BG": "Bulgarye", + "CountryName.BF": "Burkina Faso", + "CountryName.BI": "Burundi", + "CountryName.EA": "Ceuta en Melilla", + "CountryName.CL": "Chili", + "CountryName.CO": "Colombi\u00eb", + "CountryName.KM": "Comore", + "CountryName.CK": "Cookeilande", + "CountryName.CR": "Costa Rica", + "CountryName.CW": "Cura\u00e7ao", + "CountryName.CD": "Demokratiese Republiek van die Kongo", + "CountryName.DK": "Denemarke", + "CountryName.DG": "Diego Garcia", + "CountryName.DJ": "Djiboeti", + "CountryName.DM": "Dominica", + "CountryName.DO": "Dominikaanse Republiek", + "CountryName.DE": "Duitsland", + "CountryName.EC": "Ecuador", + "CountryName.EG": "Egipte", + "CountryName.IM": "Eiland Man", + "CountryName.GQ": "Ekwatoriaal-Guinee", + "CountryName.SV": "El Salvador", + "CountryName.ER": "Eritrea", + "CountryName.EE": "Estland", + "CountryName.ET": "Ethiopi\u00eb", + "CountryName.EZ": "Eurozone", + "CountryName.FK": "Falklandeilande", + "CountryName.FO": "Faro\u00ebreilande", + "CountryName.FJ": "Fidji", + "CountryName.PH": "Filippyne", + "CountryName.FI": "Finland", + "CountryName.FR": "Frankryk", + "CountryName.GF": "Frans-Guyana", + "CountryName.PF": "Frans-Polinesi\u00eb", + "CountryName.TF": "Franse Suidelike Gebiede", + "CountryName.GA": "Gaboen", + "CountryName.GM": "Gambi\u00eb", + "CountryName.GE": "Georgi\u00eb", + "CountryName.GH": "Ghana", + "CountryName.GI": "Gibraltar", + "CountryName.GD": "Grenada", + "CountryName.GR": "Griekeland", + "CountryName.GL": "Groenland", + "CountryName.GP": "Guadeloupe", + "CountryName.GU": "Guam", + "CountryName.GT": "Guatemala", + "CountryName.GG": "Guernsey", + "CountryName.GN": "Guinee", + "CountryName.GW": "Guinee-Bissau", + "CountryName.GY": "Guyana", + "CountryName.HT": "Ha\u00efti", + "CountryName.HN": "Honduras", + "CountryName.HU": "Hongarye", + "CountryName.HK": "Hongkong SAS Sjina", + "CountryName.IE": "Ierland", + "CountryName.IN": "Indi\u00eb", + "CountryName.ID": "Indonesi\u00eb", + "CountryName.IQ": "Irak", + "CountryName.IR": "Iran", + "CountryName.IL": "Israel", + "CountryName.IT": "Itali\u00eb", + "CountryName.CI": "Ivoorkus", + "CountryName.JM": "Jamaika", + "CountryName.JP": "Japan", + "CountryName.YE": "Jemen", + "CountryName.JE": "Jersey", + "CountryName.JO": "Jordani\u00eb", + "CountryName.KY": "Kaaimanseilande", + "CountryName.CV": "Kaap Verde", + "CountryName.KH": "Kambodja", + "CountryName.CM": "Kameroen", + "CountryName.CA": "Kanada", + "CountryName.IC": "Kanariese Eilande", + "CountryName.BQ": "Karibiese Nederland", + "CountryName.QA": "Katar", + "CountryName.KZ": "Kazakstan", + "CountryName.KE": "Kenia", + "CountryName.CX": "Kerseiland", + "CountryName.KG": "Kirgisi\u00eb", + "CountryName.KI": "Kiribati", + "CountryName.KW": "Koeweit", + "CountryName.CC": "Kokos-eilande", + "CountryName.CG": "Kongo - Brazzaville", + "CountryName.XK": "Kosovo", + "CountryName.HR": "Kroasi\u00eb", + "CountryName.CU": "Kuba", + "CountryName.LA": "Laos", + "CountryName.LS": "Lesotho", + "CountryName.LV": "Letland", + "CountryName.LB": "Libanon", + "CountryName.LR": "Liberi\u00eb", + "CountryName.LY": "Libi\u00eb", + "CountryName.LI": "Liechtenstein", + "CountryName.LT": "Litaue", + "CountryName.LU": "Luxemburg", + "CountryName.MO": "Macau SAS Sjina", + "CountryName.MK": "Macedoni\u00eb", + "CountryName.MG": "Madagaskar", + "CountryName.MW": "Malawi", + "CountryName.MV": "Maledive", + "CountryName.MY": "Maleisi\u00eb", + "CountryName.ML": "Mali", + "CountryName.MT": "Malta", + "CountryName.MA": "Marokko", + "CountryName.MH": "Marshalleilande", + "CountryName.MQ": "Martinique", + "CountryName.MR": "Mauritani\u00eb", + "CountryName.MU": "Mauritius", + "CountryName.YT": "Mayotte", + "CountryName.MX": "Meksiko", + "CountryName.MM": "Mianmar (Birma)", + "CountryName.FM": "Mikronesi\u00eb", + "CountryName.MD": "Moldowa", + "CountryName.MC": "Monaco", + "CountryName.MN": "Mongoli\u00eb", + "CountryName.ME": "Montenegro", + "CountryName.MS": "Montserrat", + "CountryName.MZ": "Mosambiek", + "CountryName.NA": "Namibi\u00eb", + "CountryName.NR": "Nauru", + "CountryName.NL": "Nederland", + "CountryName.NP": "Nepal", + "CountryName.NI": "Nicaragua", + "CountryName.NC": "Nieu-Kaledoni\u00eb", + "CountryName.NZ": "Nieu-Seeland", + "CountryName.NE": "Niger", + "CountryName.NG": "Nigeri\u00eb", + "CountryName.NU": "Niue", + "CountryName.KP": "Noord-Korea", + "CountryName.MP": "Noord-Mariane-eilande", + "CountryName.NO": "Noorwe\u00eb", + "CountryName.NF": "Norfolkeiland", + "CountryName.UA": "Oekra\u00efne", + "CountryName.UZ": "Oesbekistan", + "CountryName.OM": "Oman", + "CountryName.TL": "Oos-Timor", + "CountryName.AT": "Oostenryk", + "CountryName.PK": "Pakistan", + "CountryName.PW": "Palau", + "CountryName.PS": "Palestynse gebiede", + "CountryName.PA": "Panama", + "CountryName.PG": "Papoea-Nieu-Guinee", + "CountryName.PY": "Paraguay", + "CountryName.PE": "Peru", + "CountryName.PN": "Pitcairneilande", + "CountryName.PL": "Pole", + "CountryName.PT": "Portugal", + "CountryName.PR": "Puerto Rico", + "CountryName.RE": "R\u00e9union", + "CountryName.RO": "Roemeni\u00eb", + "CountryName.RU": "Rusland", + "CountryName.RW": "Rwanda", + "CountryName.SB": "Salomonseilande", + "CountryName.WS": "Samoa", + "CountryName.SM": "San Marino", + "CountryName.ST": "S\u00e3o Tom\u00e9 en Pr\u00edncipe", + "CountryName.SA": "Saoedi-Arabi\u00eb", + "CountryName.SN": "Senegal", + "CountryName.CF": "Sentraal-Afrikaanse Republiek", + "CountryName.RS": "Serwi\u00eb", + "CountryName.SC": "Seychelle", + "CountryName.SL": "Sierra Leone", + "CountryName.SG": "Singapoer", + "CountryName.BL": "Sint Barth\u00e9lemy", + "CountryName.SH": "Sint Helena", + "CountryName.SX": "Sint Maarten", + "CountryName.CY": "Siprus", + "CountryName.SY": "Siri\u00eb", + "CountryName.CN": "Sjina", + "CountryName.SK": "Slowakye", + "CountryName.SI": "Sloweni\u00eb", + "CountryName.SD": "Soedan", + "CountryName.SO": "Somali\u00eb", + "CountryName.ES": "Spanje", + "CountryName.LK": "Sri Lanka", + "CountryName.KN": "St. Kitts en Nevis", + "CountryName.LC": "St. Lucia", + "CountryName.MF": "St. Martin", + "CountryName.PM": "St. Pierre en Miquelon", + "CountryName.VC": "St. Vincent en die Grenadine", + "CountryName.ZA": "Suid-Afrika", + "CountryName.GS": "Suid-Georgi\u00eb en die Suidelike Sandwicheilande", + "CountryName.KR": "Suid-Korea", + "CountryName.SS": "Suid-Soedan", + "CountryName.SR": "Suriname", + "CountryName.SJ": "Svalbard en Jan Mayen", + "CountryName.SZ": "Swaziland", + "CountryName.SE": "Swede", + "CountryName.CH": "Switserland", + "CountryName.TJ": "Tadjikistan", + "CountryName.TW": "Taiwan", + "CountryName.TZ": "Tanzani\u00eb", + "CountryName.TH": "Thailand", + "CountryName.CZ": "Tjeggi\u00eb", + "CountryName.TG": "Togo", + "CountryName.TK": "Tokelau", + "CountryName.TO": "Tonga", + "CountryName.TT": "Trinidad en Tobago", + "CountryName.TA": "Tristan da Cunha", + "CountryName.TD": "Tsjad", + "CountryName.TN": "Tunisi\u00eb", + "CountryName.TM": "Turkmeni\u00eb", + "CountryName.TC": "Turks- en Caicoseilande", + "CountryName.TR": "Turkye", + "CountryName.TV": "Tuvalu", + "CountryName.UG": "Uganda", + "CountryName.UY": "Uruguay", + "CountryName.VU": "Vanuatu", + "CountryName.VA": "Vatikaanstad", + "CountryName.VE": "Venezuela", + "CountryName.AE": "Verenigde Arabiese Emirate", + "CountryName.GB": "Verenigde Koninkryk", + "CountryName.UN": "verenigde nasies", + "CountryName.US": "Verenigde State van Amerika", + "CountryName.VN": "Vi\u00ebtnam", + "CountryName.UM": "VS klein omliggende eilande", + "CountryName.WF": "Wallis en Futuna", + "CountryName.EH": "Wes-Sahara", + "CountryName.IS": "Ysland", + "CountryName.ZM": "Zambi\u00eb", + "CountryName.ZW": "Zimbabwe" } diff --git a/src/lang/de.json b/src/lang/de.json index 8ac51e7fd..61266a424 100644 --- a/src/lang/de.json +++ b/src/lang/de.json @@ -321,5 +321,260 @@ "map.name.mapboxSatellite": "Mapbox Satellite", "map.attribution.mapbox": "© Mapbox, © OpenStreetMap Improve this map", "Admin.Project.controls.addChallenge.label": "Neue Kampagne erstellen", - "ChallengeFilterSubnav.filter.search.label": "Suche..." + "ChallengeFilterSubnav.filter.search.label": "Suche...", + "CountryName.AF": "Afghanistan", + "CountryName.EG": "\u00c4gypten", + "CountryName.AX": "\u00c5landinseln", + "CountryName.AL": "Albanien", + "CountryName.DZ": "Algerien", + "CountryName.AS": "Amerikanisch-Samoa", + "CountryName.VI": "Amerikanische Jungferninseln", + "CountryName.UM": "Amerikanische \u00dcberseeinseln", + "CountryName.AD": "Andorra", + "CountryName.AO": "Angola", + "CountryName.AI": "Anguilla", + "CountryName.AQ": "Antarktis", + "CountryName.AG": "Antigua und Barbuda", + "CountryName.GQ": "\u00c4quatorialguinea", + "CountryName.AR": "Argentinien", + "CountryName.AM": "Armenien", + "CountryName.AW": "Aruba", + "CountryName.AC": "Ascension", + "CountryName.AZ": "Aserbaidschan", + "CountryName.ET": "\u00c4thiopien", + "CountryName.AU": "Australien", + "CountryName.BS": "Bahamas", + "CountryName.BH": "Bahrain", + "CountryName.BD": "Bangladesch", + "CountryName.BB": "Barbados", + "CountryName.BY": "Belarus", + "CountryName.BE": "Belgien", + "CountryName.BZ": "Belize", + "CountryName.BJ": "Benin", + "CountryName.BM": "Bermuda", + "CountryName.BT": "Bhutan", + "CountryName.BO": "Bolivien", + "CountryName.BQ": "Bonaire", + "CountryName.BA": "Bosnien und Herzegowina", + "CountryName.BW": "Botsuana", + "CountryName.BR": "Brasilien", + "CountryName.VG": "Britische Jungferninseln", + "CountryName.IO": "Britisches Territorium im Indischen Ozean", + "CountryName.BN": "Brunei Darussalam", + "CountryName.BG": "Bulgarien", + "CountryName.BF": "Burkina Faso", + "CountryName.BI": "Burundi", + "CountryName.CV": "Cabo Verde", + "CountryName.EA": "Ceuta und Melilla", + "CountryName.CL": "Chile", + "CountryName.CN": "China", + "CountryName.CK": "Cookinseln", + "CountryName.CR": "Costa Rica", + "CountryName.CI": "C\u00f4te d\u2019Ivoire", + "CountryName.CW": "Cura\u00e7ao", + "CountryName.DK": "D\u00e4nemark", + "CountryName.DE": "Deutschland", + "CountryName.DG": "Diego Garcia", + "CountryName.DM": "Dominica", + "CountryName.DO": "Dominikanische Republik", + "CountryName.DJ": "Dschibuti", + "CountryName.EC": "Ecuador", + "CountryName.SV": "El Salvador", + "CountryName.ER": "Eritrea", + "CountryName.EE": "Estland", + "CountryName.EZ": "Eurozone", + "CountryName.FK": "Falklandinseln", + "CountryName.FO": "F\u00e4r\u00f6er", + "CountryName.FJ": "Fidschi", + "CountryName.FI": "Finnland", + "CountryName.FR": "Frankreich", + "CountryName.GF": "Franz\u00f6sisch-Guayana", + "CountryName.PF": "Franz\u00f6sisch-Polynesien", + "CountryName.TF": "Franz\u00f6sische S\u00fcd- und Antarktisgebiete", + "CountryName.GA": "Gabun", + "CountryName.GM": "Gambia", + "CountryName.GE": "Georgien", + "CountryName.GH": "Ghana", + "CountryName.GI": "Gibraltar", + "CountryName.GD": "Grenada", + "CountryName.GR": "Griechenland", + "CountryName.GL": "Gr\u00f6nland", + "CountryName.GP": "Guadeloupe", + "CountryName.GU": "Guam", + "CountryName.GT": "Guatemala", + "CountryName.GG": "Guernsey", + "CountryName.GN": "Guinea", + "CountryName.GW": "Guinea-Bissau", + "CountryName.GY": "Guyana", + "CountryName.HT": "Haiti", + "CountryName.HN": "Honduras", + "CountryName.IN": "Indien", + "CountryName.ID": "Indonesien", + "CountryName.IQ": "Irak", + "CountryName.IR": "Iran", + "CountryName.IE": "Irland", + "CountryName.IS": "Island", + "CountryName.IM": "Isle of Man", + "CountryName.IL": "Israel", + "CountryName.IT": "Italien", + "CountryName.JM": "Jamaika", + "CountryName.JP": "Japan", + "CountryName.YE": "Jemen", + "CountryName.JE": "Jersey", + "CountryName.JO": "Jordanien", + "CountryName.KY": "Kaimaninseln", + "CountryName.KH": "Kambodscha", + "CountryName.CM": "Kamerun", + "CountryName.CA": "Kanada", + "CountryName.IC": "Kanarische Inseln", + "CountryName.KZ": "Kasachstan", + "CountryName.QA": "Katar", + "CountryName.KE": "Kenia", + "CountryName.KG": "Kirgisistan", + "CountryName.KI": "Kiribati", + "CountryName.CC": "Kokosinseln", + "CountryName.CO": "Kolumbien", + "CountryName.KM": "Komoren", + "CountryName.CG": "Kongo-Brazzaville", + "CountryName.CD": "Kongo-Kinshasa", + "CountryName.XK": "Kosovo", + "CountryName.HR": "Kroatien", + "CountryName.CU": "Kuba", + "CountryName.KW": "Kuwait", + "CountryName.LA": "Laos", + "CountryName.LS": "Lesotho", + "CountryName.LV": "Lettland", + "CountryName.LB": "Libanon", + "CountryName.LR": "Liberia", + "CountryName.LY": "Libyen", + "CountryName.LI": "Liechtenstein", + "CountryName.LT": "Litauen", + "CountryName.LU": "Luxemburg", + "CountryName.MG": "Madagaskar", + "CountryName.MW": "Malawi", + "CountryName.MY": "Malaysia", + "CountryName.MV": "Malediven", + "CountryName.ML": "Mali", + "CountryName.MT": "Malta", + "CountryName.MA": "Marokko", + "CountryName.MH": "Marshallinseln", + "CountryName.MQ": "Martinique", + "CountryName.MR": "Mauretanien", + "CountryName.MU": "Mauritius", + "CountryName.YT": "Mayotte", + "CountryName.MK": "Mazedonien", + "CountryName.MX": "Mexiko", + "CountryName.FM": "Mikronesien", + "CountryName.MC": "Monaco", + "CountryName.MN": "Mongolei", + "CountryName.ME": "Montenegro", + "CountryName.MS": "Montserrat", + "CountryName.MZ": "Mosambik", + "CountryName.MM": "Myanmar", + "CountryName.NA": "Namibia", + "CountryName.NR": "Nauru", + "CountryName.NP": "Nepal", + "CountryName.NC": "Neukaledonien", + "CountryName.NZ": "Neuseeland", + "CountryName.NI": "Nicaragua", + "CountryName.NL": "Niederlande", + "CountryName.NE": "Niger", + "CountryName.NG": "Nigeria", + "CountryName.NU": "Niue", + "CountryName.KP": "Nordkorea", + "CountryName.MP": "N\u00f6rdliche Marianen", + "CountryName.NF": "Norfolkinsel", + "CountryName.NO": "Norwegen", + "CountryName.OM": "Oman", + "CountryName.AT": "\u00d6sterreich", + "CountryName.TL": "Osttimor", + "CountryName.PK": "Pakistan", + "CountryName.PS": "Pal\u00e4stinensische Autonomiegebiete", + "CountryName.PW": "Palau", + "CountryName.PA": "Panama", + "CountryName.PG": "Papua-Neuguinea", + "CountryName.PY": "Paraguay", + "CountryName.PE": "Peru", + "CountryName.PH": "Philippinen", + "CountryName.PN": "Pitcairninseln", + "CountryName.PL": "Polen", + "CountryName.PT": "Portugal", + "CountryName.PR": "Puerto Rico", + "CountryName.MD": "Republik Moldau", + "CountryName.RE": "R\u00e9union", + "CountryName.RW": "Ruanda", + "CountryName.RO": "Rum\u00e4nien", + "CountryName.RU": "Russland", + "CountryName.SB": "Salomonen", + "CountryName.ZM": "Sambia", + "CountryName.WS": "Samoa", + "CountryName.SM": "San Marino", + "CountryName.ST": "S\u00e3o Tom\u00e9 und Pr\u00edncipe", + "CountryName.SA": "Saudi-Arabien", + "CountryName.SE": "Schweden", + "CountryName.CH": "Schweiz", + "CountryName.SN": "Senegal", + "CountryName.RS": "Serbien", + "CountryName.SC": "Seychellen", + "CountryName.SL": "Sierra Leone", + "CountryName.ZW": "Simbabwe", + "CountryName.SG": "Singapur", + "CountryName.SX": "Sint Maarten", + "CountryName.SK": "Slowakei", + "CountryName.SI": "Slowenien", + "CountryName.SO": "Somalia", + "CountryName.MO": "Sonderverwaltungsregion Macau", + "CountryName.HK": "Sonderverwaltungszone Hongkong", + "CountryName.ES": "Spanien", + "CountryName.SJ": "Spitzbergen", + "CountryName.LK": "Sri Lanka", + "CountryName.BL": "St. Barth\u00e9lemy", + "CountryName.SH": "St. Helena", + "CountryName.KN": "St. Kitts und Nevis", + "CountryName.LC": "St. Lucia", + "CountryName.MF": "St. Martin", + "CountryName.PM": "St. Pierre und Miquelon", + "CountryName.VC": "St. Vincent und die Grenadinen", + "CountryName.ZA": "S\u00fcdafrika", + "CountryName.SD": "Sudan", + "CountryName.GS": "S\u00fcdgeorgien und die S\u00fcdlichen Sandwichinseln", + "CountryName.KR": "S\u00fcdkorea", + "CountryName.SS": "S\u00fcdsudan", + "CountryName.SR": "Suriname", + "CountryName.SZ": "Swasiland", + "CountryName.SY": "Syrien", + "CountryName.TJ": "Tadschikistan", + "CountryName.TW": "Taiwan", + "CountryName.TZ": "Tansania", + "CountryName.TH": "Thailand", + "CountryName.TG": "Togo", + "CountryName.TK": "Tokelau", + "CountryName.TO": "Tonga", + "CountryName.TT": "Trinidad und Tobago", + "CountryName.TA": "Tristan da Cunha", + "CountryName.TD": "Tschad", + "CountryName.CZ": "Tschechien", + "CountryName.TN": "Tunesien", + "CountryName.TR": "T\u00fcrkei", + "CountryName.TM": "Turkmenistan", + "CountryName.TC": "Turks- und Caicosinseln", + "CountryName.TV": "Tuvalu", + "CountryName.UG": "Uganda", + "CountryName.UA": "Ukraine", + "CountryName.HU": "Ungarn", + "CountryName.UY": "Uruguay", + "CountryName.UZ": "Usbekistan", + "CountryName.VU": "Vanuatu", + "CountryName.VA": "Vatikanstadt", + "CountryName.VE": "Venezuela", + "CountryName.AE": "Vereinigte Arabische Emirate", + "CountryName.US": "Vereinigte Staaten", + "CountryName.GB": "Vereinigtes K\u00f6nigreich", + "CountryName.UN": "Vereinte Nationen", + "CountryName.VN": "Vietnam", + "CountryName.WF": "Wallis und Futuna", + "CountryName.CX": "Weihnachtsinsel", + "CountryName.EH": "Westsahara", + "CountryName.CF": "Zentralafrikanische Republik", + "CountryName.CY": "Zypern" } diff --git a/src/lang/en-US.json b/src/lang/en-US.json index 8f5d7788f..4ed08177d 100644 --- a/src/lang/en-US.json +++ b/src/lang/en-US.json @@ -275,6 +275,179 @@ "CongratulateModal.header": "Congratulations!", "CongratulateModal.primaryMessage": "Challenge is complete", "CongratulateModal.control.dismiss.label": "Continue", + "CountryName.AF": "Afghanistan", + "CountryName.AO": "Angola", + "CountryName.AL": "Albania", + "CountryName.AE": "United Arab Emirates", + "CountryName.AR": "Argentina", + "CountryName.AM": "Armenia", + "CountryName.AQ": "Antarctica", + "CountryName.TF": "French Southern Territories", + "CountryName.AU": "Australia", + "CountryName.AT": "Austria", + "CountryName.AZ": "Azerbaijan", + "CountryName.BI": "Burundi", + "CountryName.BE": "Belgium", + "CountryName.BJ": "Benin", + "CountryName.BF": "Burkina Faso", + "CountryName.BD": "Bangladesh", + "CountryName.BG": "Bulgaria", + "CountryName.BS": "Bahamas", + "CountryName.BA": "Bosnia and Herzegovina", + "CountryName.BY": "Belarus", + "CountryName.BZ": "Belize", + "CountryName.BO": "Bolivia", + "CountryName.BR": "Brazil", + "CountryName.BN": "Brunei", + "CountryName.BT": "Bhutan", + "CountryName.BW": "Botswana", + "CountryName.CF": "Central African Republic", + "CountryName.CA": "Canada", + "CountryName.CH": "Switzerland", + "CountryName.CL": "Chile", + "CountryName.CN": "China", + "CountryName.CI": "Ivory Coast", + "CountryName.CM": "Cameroon", + "CountryName.CD": "Congo (Kinshasa)", + "CountryName.CG": "Congo (Brazzaville)", + "CountryName.CO": "Colombia", + "CountryName.CR": "Costa Rica", + "CountryName.CU": "Cuba", + "CountryName.CY": "Cyprus", + "CountryName.CZ": "Czech Republic", + "CountryName.DE": "Germany", + "CountryName.DJ": "Djibouti", + "CountryName.DK": "Denmark", + "CountryName.DO": "Dominican Republic", + "CountryName.DZ": "Algeria", + "CountryName.EC": "Ecuador", + "CountryName.EG": "Egypt", + "CountryName.ER": "Eritrea", + "CountryName.ES": "Spain", + "CountryName.EE": "Estonia", + "CountryName.ET": "Ethiopia", + "CountryName.FI": "Finland", + "CountryName.FJ": "Fiji", + "CountryName.FK": "Falkland Islands", + "CountryName.FR": "France", + "CountryName.GA": "Gabon", + "CountryName.GB": "United Kingdom", + "CountryName.GE": "Georgia", + "CountryName.GH": "Ghana", + "CountryName.GN": "Guinea", + "CountryName.GM": "Gambia", + "CountryName.GW": "Guinea Bissau", + "CountryName.GQ": "Equatorial Guinea", + "CountryName.GR": "Greece", + "CountryName.GL": "Greenland", + "CountryName.GT": "Guatemala", + "CountryName.GY": "Guyana", + "CountryName.HN": "Honduras", + "CountryName.HR": "Croatia", + "CountryName.HT": "Haiti", + "CountryName.HU": "Hungary", + "CountryName.ID": "Indonesia", + "CountryName.IN": "India", + "CountryName.IE": "Ireland", + "CountryName.IR": "Iran", + "CountryName.IQ": "Iraq", + "CountryName.IS": "Iceland", + "CountryName.IL": "Israel", + "CountryName.IT": "Italy", + "CountryName.JM": "Jamaica", + "CountryName.JO": "Jordan", + "CountryName.JP": "Japan", + "CountryName.KZ": "Kazakhstan", + "CountryName.KE": "Kenya", + "CountryName.KG": "Kyrgyzstan", + "CountryName.KH": "Cambodia", + "CountryName.KR": "South Korea", + "CountryName.KW": "Kuwait", + "CountryName.LA": "Laos", + "CountryName.LB": "Lebanon", + "CountryName.LR": "Liberia", + "CountryName.LY": "Libya", + "CountryName.LK": "Sri Lanka", + "CountryName.LS": "Lesotho", + "CountryName.LT": "Lithuania", + "CountryName.LU": "Luxembourg", + "CountryName.LV": "Latvia", + "CountryName.MA": "Morocco", + "CountryName.MD": "Moldova", + "CountryName.MG": "Madagascar", + "CountryName.MX": "Mexico", + "CountryName.MK": "Macedonia", + "CountryName.ML": "Mali", + "CountryName.MM": "Myanmar", + "CountryName.ME": "Montenegro", + "CountryName.MN": "Mongolia", + "CountryName.MZ": "Mozambique", + "CountryName.MR": "Mauritania", + "CountryName.MW": "Malawi", + "CountryName.MY": "Malaysia", + "CountryName.NA": "Namibia", + "CountryName.NC": "New Caledonia", + "CountryName.NE": "Niger", + "CountryName.NG": "Nigeria", + "CountryName.NI": "Nicaragua", + "CountryName.NL": "Netherlands", + "CountryName.NO": "Norway", + "CountryName.NP": "Nepal", + "CountryName.NZ": "New Zealand", + "CountryName.OM": "Oman", + "CountryName.PK": "Pakistan", + "CountryName.PA": "Panama", + "CountryName.PE": "Peru", + "CountryName.PH": "Philippines", + "CountryName.PG": "Papua New Guinea", + "CountryName.PL": "Poland", + "CountryName.PR": "Puerto Rico", + "CountryName.KP": "North Korea", + "CountryName.PT": "Portugal", + "CountryName.PY": "Paraguay", + "CountryName.QA": "Qatar", + "CountryName.RO": "Romania", + "CountryName.RU": "Russia", + "CountryName.RW": "Rwanda", + "CountryName.SA": "Saudi Arabia", + "CountryName.SD": "Sudan", + "CountryName.SS": "South Sudan", + "CountryName.SN": "Senegal", + "CountryName.SB": "Solomon Islands", + "CountryName.SL": "Sierra Leone", + "CountryName.SV": "El Salvador", + "CountryName.SO": "Somalia", + "CountryName.RS": "Serbia", + "CountryName.SR": "Suriname", + "CountryName.SK": "Slovakia", + "CountryName.SI": "Slovenia", + "CountryName.SE": "Sweden", + "CountryName.SZ": "Swaziland", + "CountryName.SY": "Syria", + "CountryName.TD": "Chad", + "CountryName.TG": "Togo", + "CountryName.TH": "Thailand", + "CountryName.TJ": "Tajikistan", + "CountryName.TM": "Turkmenistan", + "CountryName.TL": "East Timor", + "CountryName.TT": "Trinidad and Tobago", + "CountryName.TN": "Tunisia", + "CountryName.TR": "Turkey", + "CountryName.TW": "Taiwan", + "CountryName.TZ": "Tanzania", + "CountryName.UG": "Uganda", + "CountryName.UA": "Ukraine", + "CountryName.UY": "Uruguay", + "CountryName.US": "United States", + "CountryName.UZ": "Uzbekistan", + "CountryName.VE": "Venezuela", + "CountryName.VN": "Vietnam", + "CountryName.VU": "Vanuatu", + "CountryName.PS": "West Bank", + "CountryName.YE": "Yemen", + "CountryName.ZA": "South Africa", + "CountryName.ZM": "Zambia", + "CountryName.ZW": "Zimbabwe", "FitBoundsControl.tooltip": "Fit map to task features", "LayerToggle.controls.showTaskFeatures.label": "Task Features", "LayerToggle.controls.showOSMData.label": "OSM Data", @@ -297,6 +470,7 @@ "Leaderboard.user.points": "Points", "Leaderboard.user.topChallenges": "Top Challenges", "Leaderboard.users.none": "No users for time period", + "Leaderboard.controls.loadMore.label": "Show More", "General.controls.moreResults.label": "More Results", "MobileNotSupported.header": "Please Visit on your Computer", "MobileNotSupported.message": "Sorry, MapRoulette does not currently support mobile devices.", diff --git a/src/lang/es.json b/src/lang/es.json index 7cce56fa9..4a77d1f54 100644 --- a/src/lang/es.json +++ b/src/lang/es.json @@ -320,5 +320,260 @@ "map.name.mapboxSatellite": "Mapbox Satellite", "map.attribution.mapbox": "© Mapbox, © OpenStreetMap Improve this map", "Admin.Project.controls.addChallenge.label": "Crear un Nuevo Reto", - "ChallengeFilterSubnav.filter.search.label": "Buscar..." + "ChallengeFilterSubnav.filter.search.label": "Buscar...", + "CountryName.AF": "Afganist\u00e1n", + "CountryName.AL": "Albania", + "CountryName.DE": "Alemania", + "CountryName.AD": "Andorra", + "CountryName.AO": "Angola", + "CountryName.AI": "Anguila", + "CountryName.AQ": "Ant\u00e1rtida", + "CountryName.AG": "Antigua y Barbuda", + "CountryName.SA": "Arabia Saud\u00ed", + "CountryName.DZ": "Argelia", + "CountryName.AR": "Argentina", + "CountryName.AM": "Armenia", + "CountryName.AW": "Aruba", + "CountryName.AU": "Australia", + "CountryName.AT": "Austria", + "CountryName.AZ": "Azerbaiy\u00e1n", + "CountryName.BS": "Bahamas", + "CountryName.BD": "Banglad\u00e9s", + "CountryName.BB": "Barbados", + "CountryName.BH": "Bar\u00e9in", + "CountryName.BE": "B\u00e9lgica", + "CountryName.BZ": "Belice", + "CountryName.BJ": "Ben\u00edn", + "CountryName.BM": "Bermudas", + "CountryName.BY": "Bielorrusia", + "CountryName.BO": "Bolivia", + "CountryName.BA": "Bosnia-Herzegovina", + "CountryName.BW": "Botsuana", + "CountryName.BR": "Brasil", + "CountryName.BN": "Brun\u00e9i", + "CountryName.BG": "Bulgaria", + "CountryName.BF": "Burkina Faso", + "CountryName.BI": "Burundi", + "CountryName.BT": "But\u00e1n", + "CountryName.CV": "Cabo Verde", + "CountryName.KH": "Camboya", + "CountryName.CM": "Camer\u00fan", + "CountryName.CA": "Canad\u00e1", + "CountryName.IC": "Canarias", + "CountryName.BQ": "Caribe neerland\u00e9s", + "CountryName.QA": "Catar", + "CountryName.EA": "Ceuta y Melilla", + "CountryName.TD": "Chad", + "CountryName.CZ": "Chequia", + "CountryName.CL": "Chile", + "CountryName.CN": "China", + "CountryName.CY": "Chipre", + "CountryName.VA": "Ciudad del Vaticano", + "CountryName.CO": "Colombia", + "CountryName.KM": "Comoras", + "CountryName.KP": "Corea del Norte", + "CountryName.KR": "Corea del Sur", + "CountryName.CR": "Costa Rica", + "CountryName.CI": "C\u00f4te d\u2019Ivoire", + "CountryName.HR": "Croacia", + "CountryName.CU": "Cuba", + "CountryName.CW": "Curazao", + "CountryName.DG": "Diego Garc\u00eda", + "CountryName.DK": "Dinamarca", + "CountryName.DM": "Dominica", + "CountryName.EC": "Ecuador", + "CountryName.EG": "Egipto", + "CountryName.SV": "El Salvador", + "CountryName.AE": "Emiratos \u00c1rabes Unidos", + "CountryName.ER": "Eritrea", + "CountryName.SK": "Eslovaquia", + "CountryName.SI": "Eslovenia", + "CountryName.ES": "Espa\u00f1a", + "CountryName.US": "Estados Unidos", + "CountryName.EE": "Estonia", + "CountryName.ET": "Etiop\u00eda", + "CountryName.EZ": "Eurozone", + "CountryName.PH": "Filipinas", + "CountryName.FI": "Finlandia", + "CountryName.FJ": "Fiyi", + "CountryName.FR": "Francia", + "CountryName.GA": "Gab\u00f3n", + "CountryName.GM": "Gambia", + "CountryName.GE": "Georgia", + "CountryName.GH": "Ghana", + "CountryName.GI": "Gibraltar", + "CountryName.GD": "Granada", + "CountryName.GR": "Grecia", + "CountryName.GL": "Groenlandia", + "CountryName.GP": "Guadalupe", + "CountryName.GU": "Guam", + "CountryName.GT": "Guatemala", + "CountryName.GF": "Guayana Francesa", + "CountryName.GG": "Guernesey", + "CountryName.GN": "Guinea", + "CountryName.GQ": "Guinea Ecuatorial", + "CountryName.GW": "Guinea-Bis\u00e1u", + "CountryName.GY": "Guyana", + "CountryName.HT": "Hait\u00ed", + "CountryName.HN": "Honduras", + "CountryName.HU": "Hungr\u00eda", + "CountryName.IN": "India", + "CountryName.ID": "Indonesia", + "CountryName.IQ": "Irak", + "CountryName.IR": "Ir\u00e1n", + "CountryName.IE": "Irlanda", + "CountryName.AC": "Isla de la Ascensi\u00f3n", + "CountryName.IM": "Isla de Man", + "CountryName.CX": "Isla de Navidad", + "CountryName.NF": "Isla Norfolk", + "CountryName.IS": "Islandia", + "CountryName.AX": "Islas \u00c5land", + "CountryName.KY": "Islas Caim\u00e1n", + "CountryName.CC": "Islas Cocos", + "CountryName.CK": "Islas Cook", + "CountryName.FO": "Islas Feroe", + "CountryName.GS": "Islas Georgia del Sur y Sandwich del Sur", + "CountryName.FK": "Islas Malvinas", + "CountryName.MP": "Islas Marianas del Norte", + "CountryName.MH": "Islas Marshall", + "CountryName.UM": "Islas menores alejadas de EE. UU.", + "CountryName.PN": "Islas Pitcairn", + "CountryName.SB": "Islas Salom\u00f3n", + "CountryName.TC": "Islas Turcas y Caicos", + "CountryName.VG": "Islas V\u00edrgenes Brit\u00e1nicas", + "CountryName.VI": "Islas V\u00edrgenes de EE. UU.", + "CountryName.IL": "Israel", + "CountryName.IT": "Italia", + "CountryName.JM": "Jamaica", + "CountryName.JP": "Jap\u00f3n", + "CountryName.JE": "Jersey", + "CountryName.JO": "Jordania", + "CountryName.KZ": "Kazajist\u00e1n", + "CountryName.KE": "Kenia", + "CountryName.KG": "Kirguist\u00e1n", + "CountryName.KI": "Kiribati", + "CountryName.XK": "Kosovo", + "CountryName.KW": "Kuwait", + "CountryName.LA": "Laos", + "CountryName.LS": "Lesoto", + "CountryName.LV": "Letonia", + "CountryName.LB": "L\u00edbano", + "CountryName.LR": "Liberia", + "CountryName.LY": "Libia", + "CountryName.LI": "Liechtenstein", + "CountryName.LT": "Lituania", + "CountryName.LU": "Luxemburgo", + "CountryName.MK": "Macedonia", + "CountryName.MG": "Madagascar", + "CountryName.MY": "Malasia", + "CountryName.MW": "Malaui", + "CountryName.MV": "Maldivas", + "CountryName.ML": "Mali", + "CountryName.MT": "Malta", + "CountryName.MA": "Marruecos", + "CountryName.MQ": "Martinica", + "CountryName.MU": "Mauricio", + "CountryName.MR": "Mauritania", + "CountryName.YT": "Mayotte", + "CountryName.MX": "M\u00e9xico", + "CountryName.FM": "Micronesia", + "CountryName.MD": "Moldavia", + "CountryName.MC": "M\u00f3naco", + "CountryName.MN": "Mongolia", + "CountryName.ME": "Montenegro", + "CountryName.MS": "Montserrat", + "CountryName.MZ": "Mozambique", + "CountryName.MM": "Myanmar (Birmania)", + "CountryName.NA": "Namibia", + "CountryName.NR": "Nauru", + "CountryName.NP": "Nepal", + "CountryName.NI": "Nicaragua", + "CountryName.NE": "N\u00edger", + "CountryName.NG": "Nigeria", + "CountryName.NU": "Niue", + "CountryName.NO": "Noruega", + "CountryName.NC": "Nueva Caledonia", + "CountryName.NZ": "Nueva Zelanda", + "CountryName.OM": "Om\u00e1n", + "CountryName.NL": "Pa\u00edses Bajos", + "CountryName.PK": "Pakist\u00e1n", + "CountryName.PW": "Palaos", + "CountryName.PA": "Panam\u00e1", + "CountryName.PG": "Pap\u00faa Nueva Guinea", + "CountryName.PY": "Paraguay", + "CountryName.PE": "Per\u00fa", + "CountryName.PF": "Polinesia Francesa", + "CountryName.PL": "Polonia", + "CountryName.PT": "Portugal", + "CountryName.PR": "Puerto Rico", + "CountryName.HK": "RAE de Hong Kong (China)", + "CountryName.MO": "RAE de Macao (China)", + "CountryName.GB": "Reino Unido", + "CountryName.CF": "Rep\u00fablica Centroafricana", + "CountryName.CG": "Rep\u00fablica del Congo", + "CountryName.CD": "Rep\u00fablica Democr\u00e1tica del Congo", + "CountryName.DO": "Rep\u00fablica Dominicana", + "CountryName.RE": "Reuni\u00f3n", + "CountryName.RW": "Ruanda", + "CountryName.RO": "Ruman\u00eda", + "CountryName.RU": "Rusia", + "CountryName.EH": "S\u00e1hara Occidental", + "CountryName.WS": "Samoa", + "CountryName.AS": "Samoa Americana", + "CountryName.BL": "San Bartolom\u00e9", + "CountryName.KN": "San Crist\u00f3bal y Nieves", + "CountryName.SM": "San Marino", + "CountryName.MF": "San Mart\u00edn", + "CountryName.PM": "San Pedro y Miquel\u00f3n", + "CountryName.VC": "San Vicente y las Granadinas", + "CountryName.SH": "Santa Elena", + "CountryName.LC": "Santa Luc\u00eda", + "CountryName.ST": "Santo Tom\u00e9 y Pr\u00edncipe", + "CountryName.SN": "Senegal", + "CountryName.RS": "Serbia", + "CountryName.SC": "Seychelles", + "CountryName.SL": "Sierra Leona", + "CountryName.SG": "Singapur", + "CountryName.SX": "Sint Maarten", + "CountryName.SY": "Siria", + "CountryName.SO": "Somalia", + "CountryName.LK": "Sri Lanka", + "CountryName.SZ": "Suazilandia", + "CountryName.ZA": "Sud\u00e1frica", + "CountryName.SD": "Sud\u00e1n", + "CountryName.SS": "Sud\u00e1n del Sur", + "CountryName.SE": "Suecia", + "CountryName.CH": "Suiza", + "CountryName.SR": "Surinam", + "CountryName.SJ": "Svalbard y Jan Mayen", + "CountryName.TH": "Tailandia", + "CountryName.TW": "Taiw\u00e1n", + "CountryName.TZ": "Tanzania", + "CountryName.TJ": "Tayikist\u00e1n", + "CountryName.IO": "Territorio Brit\u00e1nico del Oc\u00e9ano \u00cdndico", + "CountryName.TF": "Territorios Australes Franceses", + "CountryName.PS": "Territorios Palestinos", + "CountryName.TL": "Timor-Leste", + "CountryName.TG": "Togo", + "CountryName.TK": "Tokelau", + "CountryName.TO": "Tonga", + "CountryName.TT": "Trinidad y Tobago", + "CountryName.TA": "Trist\u00e1n de Acu\u00f1a", + "CountryName.TN": "T\u00fanez", + "CountryName.TM": "Turkmenist\u00e1n", + "CountryName.TR": "Turqu\u00eda", + "CountryName.TV": "Tuvalu", + "CountryName.UA": "Ucrania", + "CountryName.UG": "Uganda", + "CountryName.UN": "United Nations", + "CountryName.UY": "Uruguay", + "CountryName.UZ": "Uzbekist\u00e1n", + "CountryName.VU": "Vanuatu", + "CountryName.VE": "Venezuela", + "CountryName.VN": "Vietnam", + "CountryName.WF": "Wallis y Futuna", + "CountryName.YE": "Yemen", + "CountryName.DJ": "Yibuti", + "CountryName.ZM": "Zambia", + "CountryName.ZW": "Zimbabue" } diff --git a/src/lang/fr.json b/src/lang/fr.json index ede9b8fe4..0cc2dc65c 100644 --- a/src/lang/fr.json +++ b/src/lang/fr.json @@ -320,5 +320,260 @@ "map.name.mapboxSatellite": "Mapbox Satellite", "map.attribution.mapbox": "© Mapbox, © OpenStreetMap Improve this map", "Admin.Project.controls.addChallenge.label": "Créer un nouveau défi", - "ChallengeFilterSubnav.filter.search.label": "Rechercher…" + "ChallengeFilterSubnav.filter.search.label": "Rechercher…", + "CountryName.AF": "Afghanistan", + "CountryName.ZA": "Afrique du Sud", + "CountryName.AL": "Albanie", + "CountryName.DZ": "Alg\u00e9rie", + "CountryName.DE": "Allemagne", + "CountryName.AD": "Andorre", + "CountryName.AO": "Angola", + "CountryName.AI": "Anguilla", + "CountryName.AQ": "Antarctique", + "CountryName.AG": "Antigua-et-Barbuda", + "CountryName.SA": "Arabie saoudite", + "CountryName.AR": "Argentine", + "CountryName.AM": "Arm\u00e9nie", + "CountryName.AW": "Aruba", + "CountryName.AU": "Australie", + "CountryName.AT": "Autriche", + "CountryName.AZ": "Azerba\u00efdjan", + "CountryName.BS": "Bahamas", + "CountryName.BH": "Bahre\u00efn", + "CountryName.BD": "Bangladesh", + "CountryName.BB": "Barbade", + "CountryName.BE": "Belgique", + "CountryName.BZ": "Belize", + "CountryName.BJ": "B\u00e9nin", + "CountryName.BM": "Bermudes", + "CountryName.BT": "Bhoutan", + "CountryName.BY": "Bi\u00e9lorussie", + "CountryName.BO": "Bolivie", + "CountryName.BA": "Bosnie-Herz\u00e9govine", + "CountryName.BW": "Botswana", + "CountryName.BR": "Br\u00e9sil", + "CountryName.BN": "Brun\u00e9i Darussalam", + "CountryName.BG": "Bulgarie", + "CountryName.BF": "Burkina Faso", + "CountryName.BI": "Burundi", + "CountryName.KH": "Cambodge", + "CountryName.CM": "Cameroun", + "CountryName.CA": "Canada", + "CountryName.CV": "Cap-Vert", + "CountryName.EA": "Ceuta et Melilla", + "CountryName.CL": "Chili", + "CountryName.CN": "Chine", + "CountryName.CY": "Chypre", + "CountryName.CO": "Colombie", + "CountryName.KM": "Comores", + "CountryName.CG": "Congo-Brazzaville", + "CountryName.CD": "Congo-Kinshasa", + "CountryName.KP": "Cor\u00e9e du Nord", + "CountryName.KR": "Cor\u00e9e du Sud", + "CountryName.CR": "Costa Rica", + "CountryName.CI": "C\u00f4te d\u2019Ivoire", + "CountryName.HR": "Croatie", + "CountryName.CU": "Cuba", + "CountryName.CW": "Cura\u00e7ao", + "CountryName.DK": "Danemark", + "CountryName.DG": "Diego Garcia", + "CountryName.DJ": "Djibouti", + "CountryName.DM": "Dominique", + "CountryName.EG": "\u00c9gypte", + "CountryName.SV": "El Salvador", + "CountryName.AE": "\u00c9mirats arabes unis", + "CountryName.EC": "\u00c9quateur", + "CountryName.ER": "\u00c9rythr\u00e9e", + "CountryName.ES": "Espagne", + "CountryName.EE": "Estonie", + "CountryName.VA": "\u00c9tat de la Cit\u00e9 du Vatican", + "CountryName.FM": "\u00c9tats f\u00e9d\u00e9r\u00e9s de Micron\u00e9sie", + "CountryName.US": "\u00c9tats-Unis", + "CountryName.ET": "\u00c9thiopie", + "CountryName.EZ": "Eurozone", + "CountryName.FJ": "Fidji", + "CountryName.FI": "Finlande", + "CountryName.FR": "France", + "CountryName.GA": "Gabon", + "CountryName.GM": "Gambie", + "CountryName.GE": "G\u00e9orgie", + "CountryName.GS": "G\u00e9orgie du Sud et \u00eeles Sandwich du Sud", + "CountryName.GH": "Ghana", + "CountryName.GI": "Gibraltar", + "CountryName.GR": "Gr\u00e8ce", + "CountryName.GD": "Grenade", + "CountryName.GL": "Groenland", + "CountryName.GP": "Guadeloupe", + "CountryName.GU": "Guam", + "CountryName.GT": "Guatemala", + "CountryName.GG": "Guernesey", + "CountryName.GN": "Guin\u00e9e", + "CountryName.GQ": "Guin\u00e9e \u00e9quatoriale", + "CountryName.GW": "Guin\u00e9e-Bissau", + "CountryName.GY": "Guyana", + "CountryName.GF": "Guyane fran\u00e7aise", + "CountryName.HT": "Ha\u00efti", + "CountryName.HN": "Honduras", + "CountryName.HU": "Hongrie", + "CountryName.CX": "\u00cele Christmas", + "CountryName.AC": "\u00cele de l\u2019Ascension", + "CountryName.IM": "\u00cele de Man", + "CountryName.NF": "\u00cele Norfolk", + "CountryName.AX": "\u00celes \u00c5land", + "CountryName.KY": "\u00celes Ca\u00efmans", + "CountryName.IC": "\u00celes Canaries", + "CountryName.CC": "\u00celes Cocos", + "CountryName.CK": "\u00celes Cook", + "CountryName.FO": "\u00celes F\u00e9ro\u00e9", + "CountryName.FK": "\u00celes Malouines", + "CountryName.MP": "\u00celes Mariannes du Nord", + "CountryName.MH": "\u00celes Marshall", + "CountryName.UM": "\u00celes mineures \u00e9loign\u00e9es des \u00c9tats-Unis", + "CountryName.PN": "\u00celes Pitcairn", + "CountryName.SB": "\u00celes Salomon", + "CountryName.TC": "\u00celes Turques-et-Ca\u00efques", + "CountryName.VG": "\u00celes Vierges britanniques", + "CountryName.VI": "\u00celes Vierges des \u00c9tats-Unis", + "CountryName.IN": "Inde", + "CountryName.ID": "Indon\u00e9sie", + "CountryName.IQ": "Irak", + "CountryName.IR": "Iran", + "CountryName.IE": "Irlande", + "CountryName.IS": "Islande", + "CountryName.IL": "Isra\u00ebl", + "CountryName.IT": "Italie", + "CountryName.JM": "Jama\u00efque", + "CountryName.JP": "Japon", + "CountryName.JE": "Jersey", + "CountryName.JO": "Jordanie", + "CountryName.KZ": "Kazakhstan", + "CountryName.KE": "Kenya", + "CountryName.KG": "Kirghizistan", + "CountryName.KI": "Kiribati", + "CountryName.XK": "Kosovo", + "CountryName.KW": "Kowe\u00eft", + "CountryName.RE": "La R\u00e9union", + "CountryName.LA": "Laos", + "CountryName.LS": "Lesotho", + "CountryName.LV": "Lettonie", + "CountryName.LB": "Liban", + "CountryName.LR": "Lib\u00e9ria", + "CountryName.LY": "Libye", + "CountryName.LI": "Liechtenstein", + "CountryName.LT": "Lituanie", + "CountryName.LU": "Luxembourg", + "CountryName.MK": "Mac\u00e9doine", + "CountryName.MG": "Madagascar", + "CountryName.MY": "Malaisie", + "CountryName.MW": "Malawi", + "CountryName.MV": "Maldives", + "CountryName.ML": "Mali", + "CountryName.MT": "Malte", + "CountryName.MA": "Maroc", + "CountryName.MQ": "Martinique", + "CountryName.MU": "Maurice", + "CountryName.MR": "Mauritanie", + "CountryName.YT": "Mayotte", + "CountryName.MX": "Mexique", + "CountryName.MD": "Moldavie", + "CountryName.MC": "Monaco", + "CountryName.MN": "Mongolie", + "CountryName.ME": "Mont\u00e9n\u00e9gro", + "CountryName.MS": "Montserrat", + "CountryName.MZ": "Mozambique", + "CountryName.MM": "Myanmar (Birmanie)", + "CountryName.NA": "Namibie", + "CountryName.UN": "Nations Unies", + "CountryName.NR": "Nauru", + "CountryName.NP": "N\u00e9pal", + "CountryName.NI": "Nicaragua", + "CountryName.NE": "Niger", + "CountryName.NG": "Nig\u00e9ria", + "CountryName.NU": "Niue", + "CountryName.NO": "Norv\u00e8ge", + "CountryName.NC": "Nouvelle-Cal\u00e9donie", + "CountryName.NZ": "Nouvelle-Z\u00e9lande", + "CountryName.OM": "Oman", + "CountryName.UG": "Ouganda", + "CountryName.UZ": "Ouzb\u00e9kistan", + "CountryName.PK": "Pakistan", + "CountryName.PW": "Palaos", + "CountryName.PA": "Panama", + "CountryName.PG": "Papouasie-Nouvelle-Guin\u00e9e", + "CountryName.PY": "Paraguay", + "CountryName.NL": "Pays-Bas", + "CountryName.BQ": "Pays-Bas carib\u00e9ens", + "CountryName.PE": "P\u00e9rou", + "CountryName.PH": "Philippines", + "CountryName.PL": "Pologne", + "CountryName.PF": "Polyn\u00e9sie fran\u00e7aise", + "CountryName.PR": "Porto Rico", + "CountryName.PT": "Portugal", + "CountryName.QA": "Qatar", + "CountryName.HK": "R.A.S. chinoise de Hong Kong", + "CountryName.MO": "R.A.S. chinoise de Macao", + "CountryName.CF": "R\u00e9publique centrafricaine", + "CountryName.DO": "R\u00e9publique dominicaine", + "CountryName.RO": "Roumanie", + "CountryName.GB": "Royaume-Uni", + "CountryName.RU": "Russie", + "CountryName.RW": "Rwanda", + "CountryName.EH": "Sahara occidental", + "CountryName.BL": "Saint-Barth\u00e9lemy", + "CountryName.KN": "Saint-Christophe-et-Ni\u00e9v\u00e8s", + "CountryName.SM": "Saint-Marin", + "CountryName.MF": "Saint-Martin", + "CountryName.SX": "Saint-Martin (partie n\u00e9erlandaise)", + "CountryName.PM": "Saint-Pierre-et-Miquelon", + "CountryName.VC": "Saint-Vincent-et-les-Grenadines", + "CountryName.SH": "Sainte-H\u00e9l\u00e8ne", + "CountryName.LC": "Sainte-Lucie", + "CountryName.WS": "Samoa", + "CountryName.AS": "Samoa am\u00e9ricaines", + "CountryName.ST": "Sao Tom\u00e9-et-Principe", + "CountryName.SN": "S\u00e9n\u00e9gal", + "CountryName.RS": "Serbie", + "CountryName.SC": "Seychelles", + "CountryName.SL": "Sierra Leone", + "CountryName.SG": "Singapour", + "CountryName.SK": "Slovaquie", + "CountryName.SI": "Slov\u00e9nie", + "CountryName.SO": "Somalie", + "CountryName.SD": "Soudan", + "CountryName.SS": "Soudan du Sud", + "CountryName.LK": "Sri Lanka", + "CountryName.SE": "Su\u00e8de", + "CountryName.CH": "Suisse", + "CountryName.SR": "Suriname", + "CountryName.SJ": "Svalbard et Jan Mayen", + "CountryName.SZ": "Swaziland", + "CountryName.SY": "Syrie", + "CountryName.TJ": "Tadjikistan", + "CountryName.TW": "Ta\u00efwan", + "CountryName.TZ": "Tanzanie", + "CountryName.TD": "Tchad", + "CountryName.CZ": "Tch\u00e9quie", + "CountryName.TF": "Terres australes fran\u00e7aises", + "CountryName.IO": "Territoire britannique de l\u2019oc\u00e9an Indien", + "CountryName.PS": "Territoires palestiniens", + "CountryName.TH": "Tha\u00eflande", + "CountryName.TL": "Timor oriental", + "CountryName.TG": "Togo", + "CountryName.TK": "Tok\u00e9laou", + "CountryName.TO": "Tonga", + "CountryName.TT": "Trinit\u00e9-et-Tobago", + "CountryName.TA": "Tristan da Cunha", + "CountryName.TN": "Tunisie", + "CountryName.TM": "Turkm\u00e9nistan", + "CountryName.TR": "Turquie", + "CountryName.TV": "Tuvalu", + "CountryName.UA": "Ukraine", + "CountryName.UY": "Uruguay", + "CountryName.VU": "Vanuatu", + "CountryName.VE": "Venezuela", + "CountryName.VN": "Vietnam", + "CountryName.WF": "Wallis-et-Futuna", + "CountryName.YE": "Y\u00e9men", + "CountryName.ZM": "Zambie", + "CountryName.ZW": "Zimbabwe" } diff --git a/src/lang/ja.json b/src/lang/ja.json index 4f68e8ed0..58aa8837e 100644 --- a/src/lang/ja.json +++ b/src/lang/ja.json @@ -510,5 +510,260 @@ "Locale.fr.label": "fr (Français)", "Locale.af.label": "af (Afrikaans)", "Locale.ja.label": "ja (日本語)", - "Locale.ko.label": "ko (한국어)" + "Locale.ko.label": "ko (한국어)", + "CountryName.EZ": "Eurozone", + "CountryName.IS": "\u30a2\u30a4\u30b9\u30e9\u30f3\u30c9", + "CountryName.IE": "\u30a2\u30a4\u30eb\u30e9\u30f3\u30c9", + "CountryName.AZ": "\u30a2\u30bc\u30eb\u30d0\u30a4\u30b8\u30e3\u30f3", + "CountryName.AC": "\u30a2\u30bb\u30f3\u30b7\u30e7\u30f3\u5cf6", + "CountryName.AF": "\u30a2\u30d5\u30ac\u30cb\u30b9\u30bf\u30f3", + "CountryName.US": "\u30a2\u30e1\u30ea\u30ab\u5408\u8846\u56fd", + "CountryName.AE": "\u30a2\u30e9\u30d6\u9996\u9577\u56fd\u9023\u90a6", + "CountryName.DZ": "\u30a2\u30eb\u30b8\u30a7\u30ea\u30a2", + "CountryName.AR": "\u30a2\u30eb\u30bc\u30f3\u30c1\u30f3", + "CountryName.AW": "\u30a2\u30eb\u30d0", + "CountryName.AL": "\u30a2\u30eb\u30d0\u30cb\u30a2", + "CountryName.AM": "\u30a2\u30eb\u30e1\u30cb\u30a2", + "CountryName.AI": "\u30a2\u30f3\u30ae\u30e9", + "CountryName.AO": "\u30a2\u30f3\u30b4\u30e9", + "CountryName.AG": "\u30a2\u30f3\u30c6\u30a3\u30b0\u30a2\u30fb\u30d0\u30fc\u30d6\u30fc\u30c0", + "CountryName.AD": "\u30a2\u30f3\u30c9\u30e9", + "CountryName.YE": "\u30a4\u30a8\u30e1\u30f3", + "CountryName.GB": "\u30a4\u30ae\u30ea\u30b9", + "CountryName.IL": "\u30a4\u30b9\u30e9\u30a8\u30eb", + "CountryName.IT": "\u30a4\u30bf\u30ea\u30a2", + "CountryName.IQ": "\u30a4\u30e9\u30af", + "CountryName.IR": "\u30a4\u30e9\u30f3", + "CountryName.IN": "\u30a4\u30f3\u30c9", + "CountryName.ID": "\u30a4\u30f3\u30c9\u30cd\u30b7\u30a2", + "CountryName.WF": "\u30a6\u30a9\u30ea\u30b9\u30fb\u30d5\u30c4\u30ca", + "CountryName.UG": "\u30a6\u30ac\u30f3\u30c0", + "CountryName.UA": "\u30a6\u30af\u30e9\u30a4\u30ca", + "CountryName.UZ": "\u30a6\u30ba\u30d9\u30ad\u30b9\u30bf\u30f3", + "CountryName.UY": "\u30a6\u30eb\u30b0\u30a2\u30a4", + "CountryName.EC": "\u30a8\u30af\u30a2\u30c9\u30eb", + "CountryName.EG": "\u30a8\u30b8\u30d7\u30c8", + "CountryName.EE": "\u30a8\u30b9\u30c8\u30cb\u30a2", + "CountryName.ET": "\u30a8\u30c1\u30aa\u30d4\u30a2", + "CountryName.ER": "\u30a8\u30ea\u30c8\u30ea\u30a2", + "CountryName.SV": "\u30a8\u30eb\u30b5\u30eb\u30d0\u30c9\u30eb", + "CountryName.AU": "\u30aa\u30fc\u30b9\u30c8\u30e9\u30ea\u30a2", + "CountryName.AT": "\u30aa\u30fc\u30b9\u30c8\u30ea\u30a2", + "CountryName.AX": "\u30aa\u30fc\u30e9\u30f3\u30c9\u8af8\u5cf6", + "CountryName.OM": "\u30aa\u30de\u30fc\u30f3", + "CountryName.NL": "\u30aa\u30e9\u30f3\u30c0", + "CountryName.BQ": "\u30aa\u30e9\u30f3\u30c0\u9818\u30ab\u30ea\u30d6", + "CountryName.GH": "\u30ac\u30fc\u30ca", + "CountryName.CV": "\u30ab\u30fc\u30dc\u30d9\u30eb\u30c7", + "CountryName.GG": "\u30ac\u30fc\u30f3\u30b8\u30fc", + "CountryName.GY": "\u30ac\u30a4\u30a2\u30ca", + "CountryName.KZ": "\u30ab\u30b6\u30d5\u30b9\u30bf\u30f3", + "CountryName.QA": "\u30ab\u30bf\u30fc\u30eb", + "CountryName.CA": "\u30ab\u30ca\u30c0", + "CountryName.IC": "\u30ab\u30ca\u30ea\u30a2\u8af8\u5cf6", + "CountryName.GA": "\u30ac\u30dc\u30f3", + "CountryName.CM": "\u30ab\u30e1\u30eb\u30fc\u30f3", + "CountryName.GM": "\u30ac\u30f3\u30d3\u30a2", + "CountryName.KH": "\u30ab\u30f3\u30dc\u30b8\u30a2", + "CountryName.GN": "\u30ae\u30cb\u30a2", + "CountryName.GW": "\u30ae\u30cb\u30a2\u30d3\u30b5\u30a6", + "CountryName.CY": "\u30ad\u30d7\u30ed\u30b9", + "CountryName.CU": "\u30ad\u30e5\u30fc\u30d0", + "CountryName.CW": "\u30ad\u30e5\u30e9\u30bd\u30fc", + "CountryName.GR": "\u30ae\u30ea\u30b7\u30e3", + "CountryName.KI": "\u30ad\u30ea\u30d0\u30b9", + "CountryName.KG": "\u30ad\u30eb\u30ae\u30b9", + "CountryName.GT": "\u30b0\u30a2\u30c6\u30de\u30e9", + "CountryName.GP": "\u30b0\u30a2\u30c9\u30eb\u30fc\u30d7", + "CountryName.GU": "\u30b0\u30a2\u30e0", + "CountryName.KW": "\u30af\u30a6\u30a7\u30fc\u30c8", + "CountryName.CK": "\u30af\u30c3\u30af\u8af8\u5cf6", + "CountryName.GL": "\u30b0\u30ea\u30fc\u30f3\u30e9\u30f3\u30c9", + "CountryName.CX": "\u30af\u30ea\u30b9\u30de\u30b9\u5cf6", + "CountryName.GD": "\u30b0\u30ec\u30ca\u30c0", + "CountryName.HR": "\u30af\u30ed\u30a2\u30c1\u30a2", + "CountryName.KY": "\u30b1\u30a4\u30de\u30f3\u8af8\u5cf6", + "CountryName.KE": "\u30b1\u30cb\u30a2", + "CountryName.CI": "\u30b3\u30fc\u30c8\u30b8\u30dc\u30ef\u30fc\u30eb", + "CountryName.UN": "\u3053\u304f\u3055\u3044\u308c\u3093\u3054\u3046", + "CountryName.CC": "\u30b3\u30b3\u30b9(\u30ad\u30fc\u30ea\u30f3\u30b0)\u8af8\u5cf6", + "CountryName.CR": "\u30b3\u30b9\u30bf\u30ea\u30ab", + "CountryName.XK": "\u30b3\u30bd\u30dc", + "CountryName.KM": "\u30b3\u30e2\u30ed", + "CountryName.CO": "\u30b3\u30ed\u30f3\u30d3\u30a2", + "CountryName.CG": "\u30b3\u30f3\u30b4\u5171\u548c\u56fd(\u30d6\u30e9\u30b6\u30d3\u30eb)", + "CountryName.CD": "\u30b3\u30f3\u30b4\u6c11\u4e3b\u5171\u548c\u56fd(\u30ad\u30f3\u30b7\u30e3\u30b5)", + "CountryName.SA": "\u30b5\u30a6\u30b8\u30a2\u30e9\u30d3\u30a2", + "CountryName.WS": "\u30b5\u30e2\u30a2", + "CountryName.BL": "\u30b5\u30f3\u30fb\u30d0\u30eb\u30c6\u30eb\u30df\u30fc\u5cf6", + "CountryName.MF": "\u30b5\u30f3\u30fb\u30de\u30eb\u30bf\u30f3", + "CountryName.ST": "\u30b5\u30f3\u30c8\u30e1\u30fb\u30d7\u30ea\u30f3\u30b7\u30da", + "CountryName.ZM": "\u30b6\u30f3\u30d3\u30a2", + "CountryName.PM": "\u30b5\u30f3\u30d4\u30a8\u30fc\u30eb\u5cf6\u30fb\u30df\u30af\u30ed\u30f3\u5cf6", + "CountryName.SM": "\u30b5\u30f3\u30de\u30ea\u30ce", + "CountryName.SL": "\u30b7\u30a8\u30e9\u30ec\u30aa\u30cd", + "CountryName.DJ": "\u30b8\u30d6\u30c1", + "CountryName.GI": "\u30b8\u30d6\u30e9\u30eb\u30bf\u30eb", + "CountryName.JE": "\u30b8\u30e3\u30fc\u30b8\u30fc", + "CountryName.JM": "\u30b8\u30e3\u30de\u30a4\u30ab", + "CountryName.GE": "\u30b8\u30e7\u30fc\u30b8\u30a2", + "CountryName.SY": "\u30b7\u30ea\u30a2", + "CountryName.SG": "\u30b7\u30f3\u30ac\u30dd\u30fc\u30eb", + "CountryName.SX": "\u30b7\u30f3\u30c8\u30fb\u30de\u30fc\u30eb\u30c6\u30f3", + "CountryName.ZW": "\u30b8\u30f3\u30d0\u30d6\u30a8", + "CountryName.CH": "\u30b9\u30a4\u30b9", + "CountryName.SE": "\u30b9\u30a6\u30a7\u30fc\u30c7\u30f3", + "CountryName.SD": "\u30b9\u30fc\u30c0\u30f3", + "CountryName.SJ": "\u30b9\u30d0\u30fc\u30eb\u30d0\u30eb\u8af8\u5cf6\u30fb\u30e4\u30f3\u30de\u30a4\u30a8\u30f3\u5cf6", + "CountryName.ES": "\u30b9\u30da\u30a4\u30f3", + "CountryName.SR": "\u30b9\u30ea\u30ca\u30e0", + "CountryName.LK": "\u30b9\u30ea\u30e9\u30f3\u30ab", + "CountryName.SK": "\u30b9\u30ed\u30d0\u30ad\u30a2", + "CountryName.SI": "\u30b9\u30ed\u30d9\u30cb\u30a2", + "CountryName.SZ": "\u30b9\u30ef\u30b8\u30e9\u30f3\u30c9", + "CountryName.EA": "\u30bb\u30a6\u30bf\u30fb\u30e1\u30ea\u30ea\u30e3", + "CountryName.SC": "\u30bb\u30fc\u30b7\u30a7\u30eb", + "CountryName.SN": "\u30bb\u30cd\u30ac\u30eb", + "CountryName.RS": "\u30bb\u30eb\u30d3\u30a2", + "CountryName.KN": "\u30bb\u30f3\u30c8\u30af\u30ea\u30b9\u30c8\u30d5\u30a1\u30fc\u30fb\u30cd\u30fc\u30f4\u30a3\u30b9", + "CountryName.VC": "\u30bb\u30f3\u30c8\u30d3\u30f3\u30bb\u30f3\u30c8\u53ca\u3073\u30b0\u30ec\u30ca\u30c7\u30a3\u30fc\u30f3\u8af8\u5cf6", + "CountryName.SH": "\u30bb\u30f3\u30c8\u30d8\u30ec\u30ca", + "CountryName.LC": "\u30bb\u30f3\u30c8\u30eb\u30b7\u30a2", + "CountryName.SO": "\u30bd\u30de\u30ea\u30a2", + "CountryName.SB": "\u30bd\u30ed\u30e2\u30f3\u8af8\u5cf6", + "CountryName.TC": "\u30bf\u30fc\u30af\u30b9\u30fb\u30ab\u30a4\u30b3\u30b9\u8af8\u5cf6", + "CountryName.TH": "\u30bf\u30a4", + "CountryName.TJ": "\u30bf\u30b8\u30ad\u30b9\u30bf\u30f3", + "CountryName.TZ": "\u30bf\u30f3\u30b6\u30cb\u30a2", + "CountryName.CZ": "\u30c1\u30a7\u30b3", + "CountryName.TD": "\u30c1\u30e3\u30c9", + "CountryName.TN": "\u30c1\u30e5\u30cb\u30b8\u30a2", + "CountryName.CL": "\u30c1\u30ea", + "CountryName.TV": "\u30c4\u30d0\u30eb", + "CountryName.DG": "\u30c7\u30a3\u30a8\u30b4\u30ac\u30eb\u30b7\u30a2\u5cf6", + "CountryName.DK": "\u30c7\u30f3\u30de\u30fc\u30af", + "CountryName.DE": "\u30c9\u30a4\u30c4", + "CountryName.TG": "\u30c8\u30fc\u30b4", + "CountryName.TK": "\u30c8\u30b1\u30e9\u30a6", + "CountryName.DO": "\u30c9\u30df\u30cb\u30ab\u5171\u548c\u56fd", + "CountryName.DM": "\u30c9\u30df\u30cb\u30ab\u56fd", + "CountryName.TA": "\u30c8\u30ea\u30b9\u30bf\u30f3\u30fb\u30c0\u30fb\u30af\u30fc\u30cb\u30e3", + "CountryName.TT": "\u30c8\u30ea\u30cb\u30c0\u30fc\u30c9\u30fb\u30c8\u30d0\u30b4", + "CountryName.TM": "\u30c8\u30eb\u30af\u30e1\u30cb\u30b9\u30bf\u30f3", + "CountryName.TR": "\u30c8\u30eb\u30b3", + "CountryName.TO": "\u30c8\u30f3\u30ac", + "CountryName.NG": "\u30ca\u30a4\u30b8\u30a7\u30ea\u30a2", + "CountryName.NR": "\u30ca\u30a6\u30eb", + "CountryName.NA": "\u30ca\u30df\u30d3\u30a2", + "CountryName.NU": "\u30cb\u30a6\u30a8", + "CountryName.NI": "\u30cb\u30ab\u30e9\u30b0\u30a2", + "CountryName.NE": "\u30cb\u30b8\u30a7\u30fc\u30eb", + "CountryName.NC": "\u30cb\u30e5\u30fc\u30ab\u30ec\u30c9\u30cb\u30a2", + "CountryName.NZ": "\u30cb\u30e5\u30fc\u30b8\u30fc\u30e9\u30f3\u30c9", + "CountryName.NP": "\u30cd\u30d1\u30fc\u30eb", + "CountryName.NF": "\u30ce\u30fc\u30d5\u30a9\u30fc\u30af\u5cf6", + "CountryName.NO": "\u30ce\u30eb\u30a6\u30a7\u30fc", + "CountryName.BH": "\u30d0\u30fc\u30ec\u30fc\u30f3", + "CountryName.HT": "\u30cf\u30a4\u30c1", + "CountryName.PK": "\u30d1\u30ad\u30b9\u30bf\u30f3", + "CountryName.VA": "\u30d0\u30c1\u30ab\u30f3\u5e02\u56fd", + "CountryName.PA": "\u30d1\u30ca\u30de", + "CountryName.VU": "\u30d0\u30cc\u30a2\u30c4", + "CountryName.BS": "\u30d0\u30cf\u30de", + "CountryName.PG": "\u30d1\u30d7\u30a2\u30cb\u30e5\u30fc\u30ae\u30cb\u30a2", + "CountryName.BM": "\u30d0\u30df\u30e5\u30fc\u30c0", + "CountryName.PW": "\u30d1\u30e9\u30aa", + "CountryName.PY": "\u30d1\u30e9\u30b0\u30a2\u30a4", + "CountryName.BB": "\u30d0\u30eb\u30d0\u30c9\u30b9", + "CountryName.PS": "\u30d1\u30ec\u30b9\u30c1\u30ca\u81ea\u6cbb\u533a", + "CountryName.HU": "\u30cf\u30f3\u30ac\u30ea\u30fc", + "CountryName.BD": "\u30d0\u30f3\u30b0\u30e9\u30c7\u30b7\u30e5", + "CountryName.PN": "\u30d4\u30c8\u30b1\u30a2\u30f3\u8af8\u5cf6", + "CountryName.FJ": "\u30d5\u30a3\u30b8\u30fc", + "CountryName.PH": "\u30d5\u30a3\u30ea\u30d4\u30f3", + "CountryName.FI": "\u30d5\u30a3\u30f3\u30e9\u30f3\u30c9", + "CountryName.BT": "\u30d6\u30fc\u30bf\u30f3", + "CountryName.PR": "\u30d7\u30a8\u30eb\u30c8\u30ea\u30b3", + "CountryName.FO": "\u30d5\u30a7\u30ed\u30fc\u8af8\u5cf6", + "CountryName.FK": "\u30d5\u30a9\u30fc\u30af\u30e9\u30f3\u30c9\u8af8\u5cf6", + "CountryName.BR": "\u30d6\u30e9\u30b8\u30eb", + "CountryName.FR": "\u30d5\u30e9\u30f3\u30b9", + "CountryName.BG": "\u30d6\u30eb\u30ac\u30ea\u30a2", + "CountryName.BF": "\u30d6\u30eb\u30ad\u30ca\u30d5\u30a1\u30bd", + "CountryName.BN": "\u30d6\u30eb\u30cd\u30a4", + "CountryName.BI": "\u30d6\u30eb\u30f3\u30b8", + "CountryName.VN": "\u30d9\u30c8\u30ca\u30e0", + "CountryName.BJ": "\u30d9\u30ca\u30f3", + "CountryName.VE": "\u30d9\u30cd\u30ba\u30a8\u30e9", + "CountryName.BY": "\u30d9\u30e9\u30eb\u30fc\u30b7", + "CountryName.BZ": "\u30d9\u30ea\u30fc\u30ba", + "CountryName.PE": "\u30da\u30eb\u30fc", + "CountryName.BE": "\u30d9\u30eb\u30ae\u30fc", + "CountryName.PL": "\u30dd\u30fc\u30e9\u30f3\u30c9", + "CountryName.BA": "\u30dc\u30b9\u30cb\u30a2\u30fb\u30d8\u30eb\u30c4\u30a7\u30b4\u30d3\u30ca", + "CountryName.BW": "\u30dc\u30c4\u30ef\u30ca", + "CountryName.BO": "\u30dc\u30ea\u30d3\u30a2", + "CountryName.PT": "\u30dd\u30eb\u30c8\u30ac\u30eb", + "CountryName.HN": "\u30db\u30f3\u30b8\u30e5\u30e9\u30b9", + "CountryName.MH": "\u30de\u30fc\u30b7\u30e3\u30eb\u8af8\u5cf6", + "CountryName.MK": "\u30de\u30b1\u30c9\u30cb\u30a2", + "CountryName.MG": "\u30de\u30c0\u30ac\u30b9\u30ab\u30eb", + "CountryName.YT": "\u30de\u30e8\u30c3\u30c8\u5cf6", + "CountryName.MW": "\u30de\u30e9\u30a6\u30a4", + "CountryName.ML": "\u30de\u30ea", + "CountryName.MT": "\u30de\u30eb\u30bf", + "CountryName.MQ": "\u30de\u30eb\u30c6\u30a3\u30cb\u30fc\u30af", + "CountryName.MY": "\u30de\u30ec\u30fc\u30b7\u30a2", + "CountryName.IM": "\u30de\u30f3\u5cf6", + "CountryName.FM": "\u30df\u30af\u30ed\u30cd\u30b7\u30a2\u9023\u90a6", + "CountryName.MM": "\u30df\u30e3\u30f3\u30de\u30fc", + "CountryName.MX": "\u30e1\u30ad\u30b7\u30b3", + "CountryName.MU": "\u30e2\u30fc\u30ea\u30b7\u30e3\u30b9", + "CountryName.MR": "\u30e2\u30fc\u30ea\u30bf\u30cb\u30a2", + "CountryName.MZ": "\u30e2\u30b6\u30f3\u30d3\u30fc\u30af", + "CountryName.MC": "\u30e2\u30ca\u30b3", + "CountryName.MV": "\u30e2\u30eb\u30c7\u30a3\u30d6", + "CountryName.MD": "\u30e2\u30eb\u30c9\u30d0", + "CountryName.MA": "\u30e2\u30ed\u30c3\u30b3", + "CountryName.MN": "\u30e2\u30f3\u30b4\u30eb", + "CountryName.ME": "\u30e2\u30f3\u30c6\u30cd\u30b0\u30ed", + "CountryName.MS": "\u30e2\u30f3\u30c8\u30bb\u30e9\u30c8", + "CountryName.JO": "\u30e8\u30eb\u30c0\u30f3", + "CountryName.LA": "\u30e9\u30aa\u30b9", + "CountryName.LV": "\u30e9\u30c8\u30d3\u30a2", + "CountryName.LT": "\u30ea\u30c8\u30a2\u30cb\u30a2", + "CountryName.LY": "\u30ea\u30d3\u30a2", + "CountryName.LI": "\u30ea\u30d2\u30c6\u30f3\u30b7\u30e5\u30bf\u30a4\u30f3", + "CountryName.LR": "\u30ea\u30d9\u30ea\u30a2", + "CountryName.RO": "\u30eb\u30fc\u30de\u30cb\u30a2", + "CountryName.LU": "\u30eb\u30af\u30bb\u30f3\u30d6\u30eb\u30af", + "CountryName.RW": "\u30eb\u30ef\u30f3\u30c0", + "CountryName.LS": "\u30ec\u30bd\u30c8", + "CountryName.LB": "\u30ec\u30d0\u30ce\u30f3", + "CountryName.RE": "\u30ec\u30e6\u30cb\u30aa\u30f3\u5cf6", + "CountryName.RU": "\u30ed\u30b7\u30a2", + "CountryName.IO": "\u82f1\u9818\u30a4\u30f3\u30c9\u6d0b\u5730\u57df", + "CountryName.VG": "\u82f1\u9818\u30f4\u30a1\u30fc\u30b8\u30f3\u8af8\u5cf6", + "CountryName.UM": "\u5408\u8846\u56fd\u9818\u6709\u5c0f\u96e2\u5cf6", + "CountryName.EH": "\u897f\u30b5\u30cf\u30e9", + "CountryName.GQ": "\u8d64\u9053\u30ae\u30cb\u30a2", + "CountryName.TW": "\u53f0\u6e7e", + "CountryName.KR": "\u5927\u97d3\u6c11\u56fd", + "CountryName.CF": "\u4e2d\u592e\u30a2\u30d5\u30ea\u30ab\u5171\u548c\u56fd", + "CountryName.MO": "\u4e2d\u83ef\u4eba\u6c11\u5171\u548c\u56fd\u30de\u30ab\u30aa\u7279\u5225\u884c\u653f\u533a", + "CountryName.HK": "\u4e2d\u83ef\u4eba\u6c11\u5171\u548c\u56fd\u9999\u6e2f\u7279\u5225\u884c\u653f\u533a", + "CountryName.CN": "\u4e2d\u56fd", + "CountryName.KP": "\u671d\u9bae\u6c11\u4e3b\u4e3b\u7fa9\u4eba\u6c11\u5171\u548c\u56fd", + "CountryName.TL": "\u6771\u30c6\u30a3\u30e2\u30fc\u30eb", + "CountryName.ZA": "\u5357\u30a2\u30d5\u30ea\u30ab", + "CountryName.GS": "\u5357\u30b8\u30e7\u30fc\u30b8\u30a2\u5cf6\u30fb\u5357\u30b5\u30f3\u30c9\u30a4\u30c3\u30c1\u8af8\u5cf6", + "CountryName.SS": "\u5357\u30b9\u30fc\u30c0\u30f3", + "CountryName.AQ": "\u5357\u6975", + "CountryName.JP": "\u65e5\u672c", + "CountryName.GF": "\u4ecf\u9818\u30ae\u30a2\u30ca", + "CountryName.PF": "\u4ecf\u9818\u30dd\u30ea\u30cd\u30b7\u30a2", + "CountryName.TF": "\u4ecf\u9818\u6975\u5357\u8af8\u5cf6", + "CountryName.VI": "\u7c73\u9818\u30f4\u30a1\u30fc\u30b8\u30f3\u8af8\u5cf6", + "CountryName.AS": "\u7c73\u9818\u30b5\u30e2\u30a2", + "CountryName.MP": "\u5317\u30de\u30ea\u30a2\u30ca\u8af8\u5cf6" } diff --git a/src/services/Leaderboard/CountryBoundingBoxes.js b/src/services/Leaderboard/CountryBoundingBoxes.js new file mode 100644 index 000000000..58a000dad --- /dev/null +++ b/src/services/Leaderboard/CountryBoundingBoxes.js @@ -0,0 +1,24 @@ +import _get from 'lodash/get' +import _map from 'lodash/map' +import _reduce from 'lodash/reduce' +import countryCodeBoundingBoxJSON from '../../countryCodeBoundingBox.json' + +/** + * Map of bounding boxes indexed by country code. + */ +export const CountryBoundingBoxes = + _reduce(countryCodeBoundingBoxJSON, function(result, value, key) { + result[key] = {name: value[0], boundingBox: value[1]} + return result + }, {}) + + +export const boundingBoxForCountry = function(countryCode) { + return _get(CountryBoundingBoxes[countryCode], 'boundingBox') +} + +export const supportedCountries = function() { + return _map(CountryBoundingBoxes, (value, key) => { + return {countryCode: key, name: value} + }) +} diff --git a/src/services/Leaderboard/Leaderboard.js b/src/services/Leaderboard/Leaderboard.js index 825b8fed1..937204f4f 100644 --- a/src/services/Leaderboard/Leaderboard.js +++ b/src/services/Leaderboard/Leaderboard.js @@ -1,26 +1,52 @@ import { defaultRoutes as api } from '../Server/Server' import _isArray from 'lodash/isArray' import Endpoint from '../Server/Endpoint' -import startOfDay from 'date-fns/start_of_day' + +// Default leaderboard count +export const DEFAULT_LEADERBOARD_COUNT = 10 + /** * Retrieve leaderboard data from the server for the given date range and * filters, returning a Promise that resolves to the leaderboard data. Note * that leaderboard data is *not* stored in the redux store. */ -export const fetchLeaderboard = function(startDate=null, endDate=null, onlyEnabled=true, - forProjects=null, forChallenges=null, limit=10) { +export const fetchLeaderboard = function(numberMonths=null, onlyEnabled=true, + forProjects=null, forChallenges=null, + forUsers=null, forCountries=null, + limit=10) { const params = { limit, + onlyEnabled } - if (startDate) { - params.start = startOfDay(startDate).toISOString() - } + initializeLeaderboardParams(params, numberMonths, forProjects, forChallenges, forUsers, forCountries) + + return new Endpoint(api.users.leaderboard, {params}).execute() +} - if (endDate) { - params.end = startOfDay(endDate).toISOString() +/** + * Retrieve leaderboard data for a user from the server for the given date range and + * filters, returning a Promise that resolves to the leaderboard data. Note + * that leaderboard data is *not* stored in the redux store. + */ +export const fetchLeaderboardForUser = function(userId, bracket=0, numberMonths=1, + onlyEnabled=true, forProjects=null, forChallenges=null, + forUsers=null, forCountries=null) { + const params = { + bracket, + onlyEnabled } + initializeLeaderboardParams(params, numberMonths, forProjects, forChallenges, null, forCountries) + + return new Endpoint(api.users.userLeaderboard, {variables: {id: userId}, params}).execute() +} + + +const initializeLeaderboardParams = function (params, numberMonths, + forProjects, forChallenges, + forUsers, forCountries) { + params.monthDuration = numberMonths if (_isArray(forProjects)) { params.projectIds = forProjects.join(',') @@ -30,5 +56,11 @@ export const fetchLeaderboard = function(startDate=null, endDate=null, onlyEnabl params.challengeIds = forChallenges.join(',') } - return new Endpoint(api.users.leaderboard, {params}).execute() + if (_isArray(forUsers)) { + params.userIds = forUsers.join(',') + } + + if (_isArray(forCountries)) { + params.countryCodes = forCountries.join(',') + } } diff --git a/src/services/Server/APIRoutes.js b/src/services/Server/APIRoutes.js index e5b901fe6..cbd9e8277 100644 --- a/src/services/Server/APIRoutes.js +++ b/src/services/Server/APIRoutes.js @@ -86,6 +86,7 @@ const apiRoutes = factory => { 'users': { 'single': factory.get('/user/:id'), 'leaderboard': factory.get('/data/user/leaderboard'), + 'userLeaderboard': factory.get('/data/user/:id/leaderboard'), 'find': factory.get('/users/find/:username'), }, 'user': { From 8f9410cc9828682596f6b9ebe6250ac59c870afa Mon Sep 17 00:00:00 2001 From: Ilya Zverev Date: Sat, 2 Feb 2019 17:31:24 +0100 Subject: [PATCH 10/16] SimpleStyle support (#614) Support [simplestyle](https://github.com/mapbox/simplestyle-spec) on task features --- src/components/EnhancedMap/EnhancedMap.js | 7 +++- .../TaskFeature/AsSimpleStyleableFeature.js | 37 +++++++++++++++++++ 2 files changed, 43 insertions(+), 1 deletion(-) create mode 100644 src/interactions/TaskFeature/AsSimpleStyleableFeature.js diff --git a/src/components/EnhancedMap/EnhancedMap.js b/src/components/EnhancedMap/EnhancedMap.js index 5e77dade3..7653d417a 100644 --- a/src/components/EnhancedMap/EnhancedMap.js +++ b/src/components/EnhancedMap/EnhancedMap.js @@ -5,6 +5,8 @@ import { Map } from 'react-leaflet' import { geoJSON, LatLngBounds, LatLng, latLng } from 'leaflet' import _isEmpty from 'lodash/isEmpty' import _isEqual from 'lodash/isEqual' +import AsSimpleStyleableFeature + from '../../interactions/TaskFeature/AsSimpleStyleableFeature' import PropertyList from './PropertyList/PropertyList' /** @@ -131,7 +133,10 @@ export default class EnhancedMap extends Map { this.scheduleAnimation() } } - }, + + // Support [simplestyle](https://github.com/mapbox/simplestyle-spec) + AsSimpleStyleableFeature(feature).styleLeafletLayer(layer) + } }) if (!this.props.justFitFeatures) { diff --git a/src/interactions/TaskFeature/AsSimpleStyleableFeature.js b/src/interactions/TaskFeature/AsSimpleStyleableFeature.js new file mode 100644 index 000000000..c592f11ee --- /dev/null +++ b/src/interactions/TaskFeature/AsSimpleStyleableFeature.js @@ -0,0 +1,37 @@ +import _isUndefined from 'lodash/isUndefined' +import _each from 'lodash/each' + +/** + * AsSimpleStylableFeature adds functionality for interpreting + * [simplestyle](https://github.com/mapbox/simplestyle-spec) properties + */ +export class AsSimpleStyleableFeature { + constructor(feature) { + Object.assign(this, feature) + } + + // Maps simplestyle propertie names to corresponding leaflet style option names + simplestyleLeafletMapping = { + 'stroke': 'color', + 'stroke-width': 'weight', + 'stroke-opacity': 'opacity', + 'fill': 'fillColor', + 'fill-opacity': 'fillOpacity', + } + + /** + * Styles the given Leaflet layer with any supported simplestyle properties + * present on this feature + */ + styleLeafletLayer(layer) { + if (this.properties) { + _each(this.simplestyleLeafletMapping, (leafletStyle, simplestyleProperty) => { + if (!_isUndefined(this.properties[simplestyleProperty])) { + layer.setStyle({[leafletStyle]: this.properties[simplestyleProperty]}) + } + }) + } + } +} + +export default feature => new AsSimpleStyleableFeature(feature) From c25454c04e942a35c9d313b4a8a21d8de70e2620 Mon Sep 17 00:00:00 2001 From: Neil Rotstan Date: Sat, 2 Feb 2019 15:26:22 -0800 Subject: [PATCH 11/16] Fetch project when browsing challenge * When fetching a challenge as a result of browsing, also fetch the parent project so that it'll be available for denormalization * Denormalize browsed challenge so that parent project is available for permission checks, used for example to determine whether to display a Manage option --- .../WithBrowsedChallenge.js | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/src/components/HOCs/WithBrowsedChallenge/WithBrowsedChallenge.js b/src/components/HOCs/WithBrowsedChallenge/WithBrowsedChallenge.js index ed6e53360..4a4cc4d50 100644 --- a/src/components/HOCs/WithBrowsedChallenge/WithBrowsedChallenge.js +++ b/src/components/HOCs/WithBrowsedChallenge/WithBrowsedChallenge.js @@ -1,13 +1,16 @@ import React, { Component } from 'react' import PropTypes from 'prop-types' import { connect } from 'react-redux' +import { denormalize } from 'normalizr' import _get from 'lodash/get' import _isObject from 'lodash/isObject' import _isFinite from 'lodash/isFinite' import _debounce from 'lodash/debounce' import _omit from 'lodash/omit' -import { fetchChallenge } +import { fetchChallenge, challengeDenormalizationSchema } from '../../../services/Challenge/Challenge' +import { fetchProject } + from '../../../services/Project/Project' import { addError } from '../../../services/Error/Error' import AppErrors from '../../../services/Error/AppErrors' @@ -76,8 +79,11 @@ export const WithBrowsedChallenge = function(WrappedComponent) { if (_get(this.state, 'browsedChallenge.id') !== challengeId || this.state.isVirtual !== isVirtual || _isFinite(this.state.loadingBrowsedChallenge)) { - let challenge = isVirtual ? props.virtualChallenge : - _get(props.entities, `challenges.${challengeId}`) + let challenge = isVirtual ? + props.virtualChallenge : + denormalize(_get(this.props.entities, `challenges.${challengeId}`), + challengeDenormalizationSchema(), + this.props.entities) if (_isObject(challenge)) { // If our challenge data is stale, refresh it. @@ -198,6 +204,13 @@ export const mapDispatchToProps = (dispatch, ownProps) => { dispatch(addError(AppErrors.challenge.doesNotExist)) ownProps.history.push('/browse/challenges') } + else { + const projectId = + _get(normalizedResults, `entities.challenges.${normalizedResults.result}.parent`) + if (_isFinite(projectId)) { + dispatch(fetchProject(projectId)) + } + } }) }, 5000, From 7227c8aa57cdeca9039021ce4332bf9cf0ba3315 Mon Sep 17 00:00:00 2001 From: krotstan Date: Sat, 2 Feb 2019 18:40:22 -0800 Subject: [PATCH 12/16] Show remaining task count in Challenge Progress pane (#616) Show remaining tasks count and percentage alongside Challenge Progress --- .../ChallengeProgress/ChallengeProgress.js | 9 +- .../ChallengeProgress/ChallengeProgress.scss | 6 +- src/components/ChallengeProgress/Messages.js | 7 +- .../ChallengeProgress.test.js.snap | 160 ++++++++++++++++++ .../WithBrowsedChallenge.js | 13 +- .../WithBrowsedChallenge.test.js | 5 + .../HOCs/WithCurrentTask/WithCurrentTask.js | 1 + src/lang/en-US.json | 3 +- 8 files changed, 198 insertions(+), 6 deletions(-) diff --git a/src/components/ChallengeProgress/ChallengeProgress.js b/src/components/ChallengeProgress/ChallengeProgress.js index ae67cf691..dcaec3c12 100644 --- a/src/components/ChallengeProgress/ChallengeProgress.js +++ b/src/components/ChallengeProgress/ChallengeProgress.js @@ -1,6 +1,6 @@ import React, { Component } from 'react' import PropTypes from 'prop-types' -import { injectIntl } from 'react-intl' +import { FormattedMessage, FormattedNumber, injectIntl } from 'react-intl' import { ResponsiveBar } from '@nivo/bar' import _isObject from 'lodash/isObject' import _get from 'lodash/get' @@ -108,6 +108,13 @@ export class ChallengeProgress extends Component { } + {taskActions.total > 0 && taskActions.available !== 0 && +
+ + {// eslint-disable-next-line react/style-prop-object + } () +
+ }
) } diff --git a/src/components/ChallengeProgress/ChallengeProgress.scss b/src/components/ChallengeProgress/ChallengeProgress.scss index ab90edb73..f4e0c0bba 100644 --- a/src/components/ChallengeProgress/ChallengeProgress.scss +++ b/src/components/ChallengeProgress/ChallengeProgress.scss @@ -1,7 +1,7 @@ @import '../../variables.scss'; .challenge-task-progress { - margin-bottom: 20px; + margin-bottom: 30px; font-size: $size-9; height: 55px; position: relative; @@ -15,4 +15,8 @@ height: 20px; width: auto; } + + &__tasks-remaining { + margin-top: 5px; + } } diff --git a/src/components/ChallengeProgress/Messages.js b/src/components/ChallengeProgress/Messages.js index 323a992fc..14cf578c5 100644 --- a/src/components/ChallengeProgress/Messages.js +++ b/src/components/ChallengeProgress/Messages.js @@ -12,5 +12,10 @@ export default defineMessages({ tooltipLabel: { id: "ChallengeProgress.tooltip.label", defaultMessage: "Tasks" - } + }, + + tasksRemaining: { + id: "ChallengeProgress.tasks.remaining", + defaultMessage: "Tasks Remaining: {taskCount, number}" + }, }) diff --git a/src/components/ChallengeProgress/__snapshots__/ChallengeProgress.test.js.snap b/src/components/ChallengeProgress/__snapshots__/ChallengeProgress.test.js.snap index fbb4d38db..8c318f18e 100644 --- a/src/components/ChallengeProgress/__snapshots__/ChallengeProgress.test.js.snap +++ b/src/components/ChallengeProgress/__snapshots__/ChallengeProgress.test.js.snap @@ -120,6 +120,26 @@ ShallowWrapper { tooltipFormat={[Function]} />, false, +
+ + ( + + ) +
, ], "className": "challenge-task-progress", }, @@ -177,6 +197,66 @@ ShallowWrapper { "type": [Function], }, false, + Object { + "instance": null, + "key": undefined, + "nodeType": "host", + "props": Object { + "children": Array [ + , + " (", + , + ")", + ], + "className": "challenge-task-progress__tasks-remaining", + }, + "ref": null, + "rendered": Array [ + Object { + "instance": null, + "key": undefined, + "nodeType": "class", + "props": Object { + "defaultMessage": "Tasks Remaining: {taskCount, number}", + "id": "ChallengeProgress.tasks.remaining", + "values": Object { + "taskCount": 3, + }, + }, + "ref": null, + "rendered": null, + "type": [Function], + }, + " (", + Object { + "instance": null, + "key": undefined, + "nodeType": "class", + "props": Object { + "minimumFractionDigits": 1, + "style": "percent", + "value": 0.6, + }, + "ref": null, + "rendered": null, + "type": [Function], + }, + ")", + ], + "type": "div", + }, ], "type": "div", }, @@ -241,6 +321,26 @@ ShallowWrapper { tooltipFormat={[Function]} />, false, +
+ + ( + + ) +
, ], "className": "challenge-task-progress", }, @@ -298,6 +398,66 @@ ShallowWrapper { "type": [Function], }, false, + Object { + "instance": null, + "key": undefined, + "nodeType": "host", + "props": Object { + "children": Array [ + , + " (", + , + ")", + ], + "className": "challenge-task-progress__tasks-remaining", + }, + "ref": null, + "rendered": Array [ + Object { + "instance": null, + "key": undefined, + "nodeType": "class", + "props": Object { + "defaultMessage": "Tasks Remaining: {taskCount, number}", + "id": "ChallengeProgress.tasks.remaining", + "values": Object { + "taskCount": 3, + }, + }, + "ref": null, + "rendered": null, + "type": [Function], + }, + " (", + Object { + "instance": null, + "key": undefined, + "nodeType": "class", + "props": Object { + "minimumFractionDigits": 1, + "style": "percent", + "value": 0.6, + }, + "ref": null, + "rendered": null, + "type": [Function], + }, + ")", + ], + "type": "div", + }, ], "type": "div", }, diff --git a/src/components/HOCs/WithBrowsedChallenge/WithBrowsedChallenge.js b/src/components/HOCs/WithBrowsedChallenge/WithBrowsedChallenge.js index 4a4cc4d50..83cc66612 100644 --- a/src/components/HOCs/WithBrowsedChallenge/WithBrowsedChallenge.js +++ b/src/components/HOCs/WithBrowsedChallenge/WithBrowsedChallenge.js @@ -7,7 +7,7 @@ import _isObject from 'lodash/isObject' import _isFinite from 'lodash/isFinite' import _debounce from 'lodash/debounce' import _omit from 'lodash/omit' -import { fetchChallenge, challengeDenormalizationSchema } +import { fetchChallenge, fetchChallengeActions, challengeDenormalizationSchema } from '../../../services/Challenge/Challenge' import { fetchProject } from '../../../services/Project/Project' @@ -115,6 +115,10 @@ export const WithBrowsedChallenge = function(WrappedComponent) { props.loadChallenge(challengeId) } + + if (!isVirtual) { + props.loadChallengeActions(challengeId) + } } } else if (_isObject(this.state.browsedChallenge)) { @@ -174,7 +178,8 @@ export const WithBrowsedChallenge = function(WrappedComponent) { clusteredTasks={clusteredTasks} {..._omit(this.props, ['entities', 'clusteredTasks', - 'loadChallenge'])} /> + 'loadChallenge', + 'loadChallengeActions'])} /> ) } } @@ -216,6 +221,10 @@ export const mapDispatchToProps = (dispatch, ownProps) => { 5000, {leading: true}, ), + + loadChallengeActions: challengeId => { + return dispatch(fetchChallengeActions(challengeId)) + }, } } diff --git a/src/components/HOCs/WithBrowsedChallenge/WithBrowsedChallenge.test.js b/src/components/HOCs/WithBrowsedChallenge/WithBrowsedChallenge.test.js index 5ac78ddb1..c057680a2 100644 --- a/src/components/HOCs/WithBrowsedChallenge/WithBrowsedChallenge.test.js +++ b/src/components/HOCs/WithBrowsedChallenge/WithBrowsedChallenge.test.js @@ -19,6 +19,7 @@ let history = null let match = null let fetchTasks = null let loadChallenge = null +let loadChallengeActions = null beforeEach(() => { challenges = [ @@ -63,6 +64,7 @@ beforeEach(() => { fetchTasks = jest.fn() loadChallenge = jest.fn() + loadChallengeActions = jest.fn() WrappedComponent = WithBrowsedChallenge(() =>
) }) @@ -72,6 +74,7 @@ test("the browsed challenge from the route match is passed down", () => { ) @@ -84,6 +87,7 @@ test("clustered task loading is kicked off for a new browsed challenge", async ( ) @@ -99,6 +103,7 @@ test("virtual challenges get virtual=true when fetching tasks", async () => { diff --git a/src/components/HOCs/WithCurrentTask/WithCurrentTask.js b/src/components/HOCs/WithCurrentTask/WithCurrentTask.js index dd2f1a11d..a71b7461b 100644 --- a/src/components/HOCs/WithCurrentTask/WithCurrentTask.js +++ b/src/components/HOCs/WithCurrentTask/WithCurrentTask.js @@ -135,6 +135,7 @@ export const mapDispatchToProps = (dispatch, ownProps) => { // Fetch the task comments and location data, but don't wait for them dispatch(fetchTaskComments(taskId)) dispatch(fetchTaskPlace(loadedTask)) + dispatch(fetchChallengeActions(loadedTask.parent)) return normalizedResults }) diff --git a/src/lang/en-US.json b/src/lang/en-US.json index 4ed08177d..c6193a471 100644 --- a/src/lang/en-US.json +++ b/src/lang/en-US.json @@ -266,6 +266,7 @@ "Challenge.controls.loadMore.label": "More Results", "Task.fauxStatus.available": "Available", "ChallengeProgress.tooltip.label": "Tasks", + "ChallengeProgress.tasks.remaining": "Tasks Remaining: {taskCount, number}", "ChallengeSearchMap.controls.startChallenge.label": "Start Challenge", "CommentList.controls.viewTask.label": "View Task", "ConfirmAction.title": "Please Confirm", @@ -653,8 +654,8 @@ "Errors.project.searchFailure": "Unable to search projects.", "Errors.project.deleteFailure": "Unable to delete project.", "Errors.project.notManager": "You must be a manager of that project to proceed.", - "Errors.map.placeNotFound": "No results found by Nominatim.", "Errors.map.renderFailure": "Unable to render the map. This may be caused by a problematic custom basemap.", + "Errors.map.placeNotFound": "No results found by Nominatim.", "Errors.dashboard.renderFailure": "Unable to render the dashboard. Switching to a working layout.", "Errors.josm.noResponse": "OSM remote control did not respond. Do you have JOSM running with Remote Control enabled?", "Errors.josm.missingFeatureIds": "This task's features do not include the OSM identifiers required to open them standalone in JOSM. Please choose another editing option.", From 174762de3318bf034d0f5d31498d650d1dfb6168 Mon Sep 17 00:00:00 2001 From: Kelli Rotstan Date: Sun, 3 Feb 2019 18:10:44 -0800 Subject: [PATCH 13/16] Add total count to tasks remaining label --- .../ChallengeProgress/ChallengeProgress.js | 3 +- src/components/ChallengeProgress/Messages.js | 5 ++ .../ChallengeProgress.test.js.snap | 72 +++++++++++++++++-- src/lang/en-US.json | 1 + 4 files changed, 74 insertions(+), 7 deletions(-) diff --git a/src/components/ChallengeProgress/ChallengeProgress.js b/src/components/ChallengeProgress/ChallengeProgress.js index dcaec3c12..be4609471 100644 --- a/src/components/ChallengeProgress/ChallengeProgress.js +++ b/src/components/ChallengeProgress/ChallengeProgress.js @@ -112,7 +112,8 @@ export class ChallengeProgress extends Component {
{// eslint-disable-next-line react/style-prop-object - } () + } () +
}
diff --git a/src/components/ChallengeProgress/Messages.js b/src/components/ChallengeProgress/Messages.js index 14cf578c5..caafe7834 100644 --- a/src/components/ChallengeProgress/Messages.js +++ b/src/components/ChallengeProgress/Messages.js @@ -18,4 +18,9 @@ export default defineMessages({ id: "ChallengeProgress.tasks.remaining", defaultMessage: "Tasks Remaining: {taskCount, number}" }, + + outOfTotal: { + id: "ChallengeProgress.tasks.totalCount", + defaultMessage: " of {totalCount, number}" + }, }) diff --git a/src/components/ChallengeProgress/__snapshots__/ChallengeProgress.test.js.snap b/src/components/ChallengeProgress/__snapshots__/ChallengeProgress.test.js.snap index 8c318f18e..569fbc746 100644 --- a/src/components/ChallengeProgress/__snapshots__/ChallengeProgress.test.js.snap +++ b/src/components/ChallengeProgress/__snapshots__/ChallengeProgress.test.js.snap @@ -134,11 +134,19 @@ ShallowWrapper { /> ( ) +
, ], "className": "challenge-task-progress", @@ -214,11 +222,19 @@ ShallowWrapper { />, " (", , ")", + , ], "className": "challenge-task-progress__tasks-remaining", }, @@ -245,7 +261,6 @@ ShallowWrapper { "key": undefined, "nodeType": "class", "props": Object { - "minimumFractionDigits": 1, "style": "percent", "value": 0.6, }, @@ -254,6 +269,21 @@ ShallowWrapper { "type": [Function], }, ")", + Object { + "instance": null, + "key": undefined, + "nodeType": "class", + "props": Object { + "defaultMessage": " of {totalCount, number}", + "id": "ChallengeProgress.tasks.totalCount", + "values": Object { + "totalCount": 5, + }, + }, + "ref": null, + "rendered": null, + "type": [Function], + }, ], "type": "div", }, @@ -335,11 +365,19 @@ ShallowWrapper { /> ( ) +
, ], "className": "challenge-task-progress", @@ -415,11 +453,19 @@ ShallowWrapper { />, " (", , ")", + , ], "className": "challenge-task-progress__tasks-remaining", }, @@ -446,7 +492,6 @@ ShallowWrapper { "key": undefined, "nodeType": "class", "props": Object { - "minimumFractionDigits": 1, "style": "percent", "value": 0.6, }, @@ -455,6 +500,21 @@ ShallowWrapper { "type": [Function], }, ")", + Object { + "instance": null, + "key": undefined, + "nodeType": "class", + "props": Object { + "defaultMessage": " of {totalCount, number}", + "id": "ChallengeProgress.tasks.totalCount", + "values": Object { + "totalCount": 5, + }, + }, + "ref": null, + "rendered": null, + "type": [Function], + }, ], "type": "div", }, diff --git a/src/lang/en-US.json b/src/lang/en-US.json index c6193a471..3315db5f0 100644 --- a/src/lang/en-US.json +++ b/src/lang/en-US.json @@ -267,6 +267,7 @@ "Task.fauxStatus.available": "Available", "ChallengeProgress.tooltip.label": "Tasks", "ChallengeProgress.tasks.remaining": "Tasks Remaining: {taskCount, number}", + "ChallengeProgress.tasks.totalCount": "of {totalCount, number}", "ChallengeSearchMap.controls.startChallenge.label": "Start Challenge", "CommentList.controls.viewTask.label": "View Task", "ConfirmAction.title": "Please Confirm", From 06aea9978f2df211d1f517debdf1ffcec5b98316 Mon Sep 17 00:00:00 2001 From: Kelli Rotstan Date: Sun, 3 Feb 2019 18:41:24 -0800 Subject: [PATCH 14/16] Close browse challenge on map move * When using m/ to move map, close a browsed challenge so that map will show that it moved --- .../HOCs/WithCommandInterpreter/WithCommandInterpreter.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/components/HOCs/WithCommandInterpreter/WithCommandInterpreter.js b/src/components/HOCs/WithCommandInterpreter/WithCommandInterpreter.js index 4539c6537..981865add 100644 --- a/src/components/HOCs/WithCommandInterpreter/WithCommandInterpreter.js +++ b/src/components/HOCs/WithCommandInterpreter/WithCommandInterpreter.js @@ -137,6 +137,12 @@ export const executeMapSearch = (props, query, setLoading) => { } } + // If the map is currently showing a browsed challenge, then we need to stop + // browsing so map moves as expected. + if (props.browsedChallenge) { + props.stopBrowsingChallenge() + } + // It might be a string place -- let's ask Nominatim for it's location if (!bounds) { executePlaceSearch(props, query, setLoading) From b7694cd350b288505c7596b79d9c222eb7762e0a Mon Sep 17 00:00:00 2001 From: Kelli Rotstan Date: Sun, 3 Feb 2019 18:45:42 -0800 Subject: [PATCH 15/16] Reverse lat/lon so that it matches map search * Map search by centerpoint m/ currently uses lon/lat, so reverse lat/lon on TaskPane to match and make copy/paste work as expected --- src/components/TaskPane/TaskLatLon/TaskLatLon.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/components/TaskPane/TaskLatLon/TaskLatLon.js b/src/components/TaskPane/TaskLatLon/TaskLatLon.js index e4d186479..0e3a0aa02 100644 --- a/src/components/TaskPane/TaskLatLon/TaskLatLon.js +++ b/src/components/TaskPane/TaskLatLon/TaskLatLon.js @@ -24,11 +24,11 @@ export default class TaskLatLon extends Component { return (
- Lat/Lon: - - {this.rounded(centerpoint.lat)} - , + Lon/Lat: + {this.rounded(centerpoint.lng)} + , + {this.rounded(centerpoint.lat)} From a83b35046a5772ac3c29700b19825274c79ba0bc Mon Sep 17 00:00:00 2001 From: krotstan Date: Sun, 3 Feb 2019 19:26:29 -0800 Subject: [PATCH 16/16] More minor leaderboard changes (#618) * Add country dropdown to main leaderboard * Preserve monthsPast when changing between countries * Add 'All Countries' option to country selector * Sort countries in dropdown alphabetically --- src/components/CountryLeaderboard/Messages.js | 1 + .../CountrySelector/CountrySelector.js | 14 +++++-- .../HOCs/WithLeaderboard/WithLeaderboard.js | 40 ++++++++++++++----- src/components/Leaderboard/Leaderboard.js | 11 +++-- src/lang/en-US.json | 1 + 5 files changed, 48 insertions(+), 19 deletions(-) diff --git a/src/components/CountryLeaderboard/Messages.js b/src/components/CountryLeaderboard/Messages.js index d8c1fc292..03633e85d 100644 --- a/src/components/CountryLeaderboard/Messages.js +++ b/src/components/CountryLeaderboard/Messages.js @@ -4,6 +4,7 @@ import { defineMessages } from 'react-intl' * Internationalized messages for country names by country code. */ export default defineMessages({ + ALL: {id: "CountryName.ALL", defaultMessage: "All Countries"}, AF: {id: "CountryName.AF", defaultMessage: "Afghanistan"}, AO: {id: "CountryName.AO", defaultMessage: "Angola"}, AL: {id: "CountryName.AL", defaultMessage: "Albania"}, diff --git a/src/components/CountrySelector/CountrySelector.js b/src/components/CountrySelector/CountrySelector.js index 12b9fc5cc..e9ed2bde8 100644 --- a/src/components/CountrySelector/CountrySelector.js +++ b/src/components/CountrySelector/CountrySelector.js @@ -3,6 +3,7 @@ import PropTypes from 'prop-types' import classNames from 'classnames' import { FormattedMessage, injectIntl } from 'react-intl' import _map from 'lodash/map' +import _sortBy from 'lodash/sortBy' import WithDeactivateOnOutsideClick from '../HOCs/WithDeactivateOnOutsideClick/WithDeactivateOnOutsideClick' import DropdownButton from '../Bulma/DropdownButton' @@ -24,12 +25,16 @@ export class CountrySelector extends Component { } render() { - const dropdownOptions = _map(supportedCountries(), country => ({ + const countryList = supportedCountries() + let dropdownOptions = _map(countryList, country => ({ key: country.countryCode, text: this.props.intl.formatMessage(countryMessages[country.countryCode]), value: country.countryCode, })) + dropdownOptions = _sortBy(dropdownOptions, (o) => o.text) + dropdownOptions.unshift({key:"ALL", text:"All Countries", value: "ALL"}) + return (
- + { !this.props.currentCountryCode ? + : + + }
@@ -47,7 +55,7 @@ export class CountrySelector extends Component { CountrySelector.propTypes = { /** Current selection */ - currentCountryCode: PropTypes.string.isRequired, + currentCountryCode: PropTypes.string, /** Invoked when the user chooses a new country */ selectCountry: PropTypes.func.isRequired, } diff --git a/src/components/HOCs/WithLeaderboard/WithLeaderboard.js b/src/components/HOCs/WithLeaderboard/WithLeaderboard.js index e23cb3aec..2b1ea8978 100644 --- a/src/components/HOCs/WithLeaderboard/WithLeaderboard.js +++ b/src/components/HOCs/WithLeaderboard/WithLeaderboard.js @@ -5,6 +5,7 @@ import _isBoolean from 'lodash/isBoolean' import _map from 'lodash/map' import _isEqual from 'lodash/isEqual' import _get from 'lodash/get' +import queryString from 'query-string' import { fetchLeaderboard, fetchLeaderboardForUser, DEFAULT_LEADERBOARD_COUNT } from '../../../services/Leaderboard/Leaderboard' @@ -80,26 +81,45 @@ const WithLeaderboard = function(WrappedComponent, initialMonthsPast=1) { setMonthsPast = monthsPast => { if (monthsPast !== this.state.monthsPast) { this.setState({monthsPast}) - this.updateLeaderboard(monthsPast, this.props.countryCode || this.state.countryCode) + + const countryCode = this.props.countryCode || this.state.countryCode + this.updateLeaderboard(monthsPast, countryCode) + + if (countryCode) { + this.props.history.push(`/country/${countryCode}/leaderboard?monthsPast=${monthsPast}` ) + } + else { + this.props.history.push(`/leaderboard?monthsPast=${monthsPast}` ) + } } } setCountryCode = countryCode => { if (countryCode !== this.state.countryCode) { - this.setState({countryCode}) - this.updateLeaderboard(this.state.monthsPast, countryCode) - this.props.history.push(`/country/${countryCode}/leaderboard` ) + if (countryCode === "ALL") { + this.props.history.push(`/leaderboard?monthsPast=${this.monthsPast()}` ) + } + else { + this.props.history.push(`/country/${countryCode}/leaderboard?monthsPast=${this.monthsPast()}` ) + } } } loadMore = () => { - this.updateLeaderboard(this.props.monthsPast || this.state.monthsPast, - this.props.countryCode || this.state.countryCode, true) + this.updateLeaderboard(this.monthsPast(), this.props.countryCode || this.state.countryCode, true) + } + + monthsPast = () => { + const urlParams = queryString.parse(_get(this.props, 'location.search')) + if (urlParams.monthsPast) + return parseInt(urlParams.monthsPast, 10) + else + return this.props.monthsPast || this.state.monthsPast + } componentDidMount() { - this.updateLeaderboard(this.props.monthsPast || this.state.monthsPast, - this.props.countryCode || this.state.countryCode) + this.updateLeaderboard(this.monthsPast(), this.props.countryCode || this.state.countryCode) } componentDidUpdate(prevProps) { @@ -109,7 +129,7 @@ const WithLeaderboard = function(WrappedComponent, initialMonthsPast=1) { this.props.countryCode !== prevProps.countryCode || !_isEqual(this.props.challenges, prevProps.challenges) || !_isEqual(this.props.projects, prevProps.projects)) { - this.updateLeaderboard(this.props.monthsPast || this.state.monthsPast, + this.updateLeaderboard(this.monthsPast(), this.props.countryCode || this.state.countryCode) } } @@ -120,7 +140,7 @@ const WithLeaderboard = function(WrappedComponent, initialMonthsPast=1) { return - {this.props.leaderboardOptions.filterCountry && - - } + +
@@ -156,7 +155,7 @@ export class Leaderboard extends Component {

{this.props.displayName}

} - {this.props.leaderboardOptions.filterCountry && + {_get(this.props, "leaderboardOptions.filterCountry") && } diff --git a/src/lang/en-US.json b/src/lang/en-US.json index c6193a471..c44264604 100644 --- a/src/lang/en-US.json +++ b/src/lang/en-US.json @@ -276,6 +276,7 @@ "CongratulateModal.header": "Congratulations!", "CongratulateModal.primaryMessage": "Challenge is complete", "CongratulateModal.control.dismiss.label": "Continue", + "CountryName.ALL": "All Countries", "CountryName.AF": "Afghanistan", "CountryName.AO": "Angola", "CountryName.AL": "Albania",