From 8cd014174f71bf7fc094bfaff22f36836c48a1cf Mon Sep 17 00:00:00 2001 From: Wille Marcel Date: Wed, 16 Dec 2020 09:44:58 -0300 Subject: [PATCH 01/23] Update translations and frontend dependencies --- frontend/package.json | 12 +- frontend/src/locales/he.json | 8 +- frontend/src/locales/nl_NL.json | 8 +- frontend/yarn.lock | 206 ++++++++++++++++---------------- 4 files changed, 117 insertions(+), 117 deletions(-) diff --git a/frontend/package.json b/frontend/package.json index 5f5967c90c..44f57e8a06 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -4,9 +4,9 @@ "license": "BSD-2-Clause", "private": false, "dependencies": { - "@formatjs/intl-locale": "^2.4.8", - "@formatjs/intl-pluralrules": "^4.0.0", - "@formatjs/intl-relativetimeformat": "^8.0.0", + "@formatjs/intl-locale": "^2.4.9", + "@formatjs/intl-pluralrules": "^4.0.1", + "@formatjs/intl-relativetimeformat": "^8.0.1", "@formatjs/intl-utils": "^3.8.4", "@formatjs/macro": "^0.2.8", "@hotosm/id": "^2.19.5", @@ -17,8 +17,8 @@ "@mapbox/mapbox-gl-language": "^0.10.1", "@mapbox/togeojson": "^0.16.0", "@reach/router": "^1.3.4", - "@sentry/react": "^5.29.0", - "@sentry/tracing": "^5.29.0", + "@sentry/react": "^5.29.1", + "@sentry/tracing": "^5.29.1", "@turf/area": "^6.0.1", "@turf/bbox": "^6.0.1", "@turf/bbox-polygon": "^6.0.1", @@ -49,7 +49,7 @@ "react-dom": "^16.14.0", "react-dropzone": "^11.2.4", "react-final-form": "^6.5.2", - "react-intl": "^5.10.6", + "react-intl": "^5.10.7", "react-meta-elements": "^1.0.0", "react-placeholder": "^4.0.3", "react-redux": "^7.2.2", diff --git a/frontend/src/locales/he.json b/frontend/src/locales/he.json index 03bd91dea1..1daab761e1 100644 --- a/frontend/src/locales/he.json +++ b/frontend/src/locales/he.json @@ -444,9 +444,9 @@ "project.nav.showMapToggle": "הצגת המפה", "project.nav.listViewToggle": "תצוגת רשימה", "project.navFilters.typesOfMapping": "סוגי המיפוי", - "project.navFilters.action.map": "", - "project.navFilters.action.validate": "", - "project.navFilters.action.any": "", + "project.navFilters.action.map": "מיזמים למיפוי", + "project.navFilters.action.validate": "מיזמים לאימות", + "project.navFilters.action.any": "מיזם כלשהו", "project.navFilters.typesOfMapping.exactMatch": "תוצאה מדויקת", "project.navFilters.campaigns": "כל מסעות הפרסום", "project.navFilters.showAllXTags": "הצגת {typeOfTag}", @@ -575,7 +575,7 @@ "project.tasks.filter.readyToValidate": "זמין לאימות", "project.tasks.filter.readyToMap": "זמין למיפוי", "project.tasks.filter.noTasksFound": "לא נמצאו משימות.", - "project.tasks.readComments": "", + "project.tasks.readComments": "נא לבדוק את לשונית ההיסטוריה לאיתור תגובות תואמות.", "project.tasks.action.completion": "השלמה", "project.tasks.action.history": "היסטוריה", "project.tasks.action.finish_mapping.title": "לאחר שסיימת למפות", diff --git a/frontend/src/locales/nl_NL.json b/frontend/src/locales/nl_NL.json index 7cce9d633d..32aba4edfe 100644 --- a/frontend/src/locales/nl_NL.json +++ b/frontend/src/locales/nl_NL.json @@ -444,9 +444,9 @@ "project.nav.showMapToggle": "Kaart weergeven", "project.nav.listViewToggle": "Lijstweergave", "project.navFilters.typesOfMapping": "Typen in kaart brengen", - "project.navFilters.action.map": "", - "project.navFilters.action.validate": "", - "project.navFilters.action.any": "", + "project.navFilters.action.map": "In kaart te brengen projecten", + "project.navFilters.action.validate": "Te valideren projecten", + "project.navFilters.action.any": "Elk project", "project.navFilters.typesOfMapping.exactMatch": "Exacte overeenkomst", "project.navFilters.campaigns": "Alle campagnes", "project.navFilters.showAllXTags": "Weergeven {typeOfTag}", @@ -575,7 +575,7 @@ "project.tasks.filter.readyToValidate": "Gereed om te valideren", "project.tasks.filter.readyToMap": "Beschikbaar om in kaart te brengen", "project.tasks.filter.noTasksFound": "Geen taken gevonden.", - "project.tasks.readComments": "", + "project.tasks.readComments": "Bekijk de tab Geschiedenis voor relevante opmerkingen.", "project.tasks.action.completion": "Voltooiïng", "project.tasks.action.history": "Geschiedenis", "project.tasks.action.finish_mapping.title": "Als u eenmaal gereed bent met in kaart brengen", diff --git a/frontend/yarn.lock b/frontend/yarn.lock index 1abe50f585..0d2ec12269 100644 --- a/frontend/yarn.lock +++ b/frontend/yarn.lock @@ -1142,60 +1142,60 @@ dependencies: tslib "^2.0.1" -"@formatjs/intl-datetimeformat@3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@formatjs/intl-datetimeformat/-/intl-datetimeformat-3.1.0.tgz#d0f73a4b6147d23e08eb152c72ae06d1b0da0d9d" - integrity sha512-XKyDQ3xFgZK2w8GE2v+zE0nk/JqGKFE0UxTI716mp/+OVuws+dbQPiORfSrJceH7E3ZkfGrvO0BB8sksQNsZ+w== +"@formatjs/intl-datetimeformat@3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@formatjs/intl-datetimeformat/-/intl-datetimeformat-3.2.0.tgz#a987988fb3dc6160dae4ddf63f478ec55b23a965" + integrity sha512-5tIvP8BoOjE/LpqiDRCVSppn4YAdgeipirnr+vbh0SfNU2Np6fTwavYkmxZZhsBTx3HC8KCYndDxDKI6Y3j61A== dependencies: "@formatjs/ecma402-abstract" "1.5.0" tslib "^2.0.1" -"@formatjs/intl-displaynames@4.0.1": - version "4.0.1" - resolved "https://registry.yarnpkg.com/@formatjs/intl-displaynames/-/intl-displaynames-4.0.1.tgz#bb6a4e7881e666907e916da6a0cb5d532d93edc0" - integrity sha512-vhG9y+F0BudHU9ev0O9Tc5Uwz/MAcCzbBzceSnjcoUMyLLfFN6GSPBvU6+ocxWsfjhu/yL5ja+doZdhwDcSXrA== +"@formatjs/intl-displaynames@4.0.2": + version "4.0.2" + resolved "https://registry.yarnpkg.com/@formatjs/intl-displaynames/-/intl-displaynames-4.0.2.tgz#31212238e7b07daa41fbac03186c532cbbb6c473" + integrity sha512-rOlDcFzr6UFYqH7BKI9vlpDC5MpTT48dsPxO9I6yciDlOb1IyqvIgUs+xsuNOj96akDCDrgwocrdJ1VEDO0Ntw== dependencies: "@formatjs/ecma402-abstract" "1.5.0" tslib "^2.0.1" -"@formatjs/intl-getcanonicallocales@1.5.2": - version "1.5.2" - resolved "https://registry.yarnpkg.com/@formatjs/intl-getcanonicallocales/-/intl-getcanonicallocales-1.5.2.tgz#64b33bc80275d8b9056a4ba80da57a5719d60130" - integrity sha512-oOtLAHSocSaJUtqEXnt2gYvZyxfjBkM2r7JKkoij2K91v02zE1Wc//Wvs3eq08xiMxhC5OlkCflbngZirmBm/w== +"@formatjs/intl-getcanonicallocales@1.5.3": + version "1.5.3" + resolved "https://registry.yarnpkg.com/@formatjs/intl-getcanonicallocales/-/intl-getcanonicallocales-1.5.3.tgz#b5978462340da1502502c3fde1c4abccff8f3b8e" + integrity sha512-QVBnSPZ32Y80wkXbf36hP9VbyklbOb8edppxFcgO9Lbd47zagllw65Y81QOHEn/j11JcTn2OhW0vea95LHvQmA== dependencies: - cldr-core "37.0.0" + cldr-core "38" tslib "^2.0.1" -"@formatjs/intl-listformat@5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@formatjs/intl-listformat/-/intl-listformat-5.0.1.tgz#25994d06acc81a2a0eaae9ac59e7a2fa851be8f0" - integrity sha512-x1gqI3xvTn8uTY0W+bL4ySW/5HFeQXkNNfsdoaRtX2b/HNa4fZoU1EaA6koAk9gUAWSR5Ofe1Ps49CXaMvwcTg== +"@formatjs/intl-listformat@5.0.2": + version "5.0.2" + resolved "https://registry.yarnpkg.com/@formatjs/intl-listformat/-/intl-listformat-5.0.2.tgz#090055c437bf7176a7268a285f5d06fc7e963280" + integrity sha512-Y+7/Dw3oe29kT4afbw2KCSzast6M04ibidBMMPqjxOHHxan1LeL0KQsY/iRHTgTAcfiSIqZnneJZjZi4MzjLJg== dependencies: "@formatjs/ecma402-abstract" "1.5.0" tslib "^2.0.1" -"@formatjs/intl-locale@^2.4.8": - version "2.4.8" - resolved "https://registry.yarnpkg.com/@formatjs/intl-locale/-/intl-locale-2.4.8.tgz#9ce862484dfff66a03de1e0176e47fd6894a2f4f" - integrity sha512-AH41FTHJ+jPx/QYZQxfTy8Yfs480nidsPb7/VMFY7JRIjDG/PXFJBHqFUXV/rKwduTETc05+s9jFBieeNDTIrA== +"@formatjs/intl-locale@^2.4.9": + version "2.4.9" + resolved "https://registry.yarnpkg.com/@formatjs/intl-locale/-/intl-locale-2.4.9.tgz#050a2ea824ffa16180aaf69df61224197cd19e5a" + integrity sha512-oa2Qtpd1bslxme52olgT+Ox5aCr6NuGrefvpDilpam5D2WwG882yLCXPRQCb6FcujhwfmsT16yb4eYjPHAGYsQ== dependencies: "@formatjs/ecma402-abstract" "1.5.0" - "@formatjs/intl-getcanonicallocales" "1.5.2" - cldr-core "^37.0.0" + "@formatjs/intl-getcanonicallocales" "1.5.3" + cldr-core "38" tslib "^2.0.1" -"@formatjs/intl-pluralrules@^4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@formatjs/intl-pluralrules/-/intl-pluralrules-4.0.0.tgz#c5fe276d589666624ab49310714932512803cb7f" - integrity sha512-HWi7zEpSM46zgizvxwojDJTrh/tqxmldCHXkhR3bsbZwAlm2W8yCFLkPSMikNJp/WFvgnEjOjvGctU1A5TqStg== +"@formatjs/intl-pluralrules@^4.0.1": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@formatjs/intl-pluralrules/-/intl-pluralrules-4.0.1.tgz#a1d3222f11647ca3222d91c52482c7f7411cc940" + integrity sha512-FIFSP1N0ZRPdhe2pnV4psKb34RD9Ci6ISYgsluAZsPzaR8UERb46oz7jag/OXlMcAPU4BoiZ2EHRGy++CePQtw== dependencies: "@formatjs/ecma402-abstract" "1.5.0" tslib "^2.0.1" -"@formatjs/intl-relativetimeformat@8.0.0", "@formatjs/intl-relativetimeformat@^8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@formatjs/intl-relativetimeformat/-/intl-relativetimeformat-8.0.0.tgz#e7234f165932a22ca6faf015b53bf7a53dbe5350" - integrity sha512-GKJvd2+Sx0BJqsKt2rBbkgGAwfBjKVnvlRTZQ+OhgSEOeRBHOtaub1jUx8ScQoS5Xe0RFLvTLL2LSnajg6EXkw== +"@formatjs/intl-relativetimeformat@8.0.1", "@formatjs/intl-relativetimeformat@^8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@formatjs/intl-relativetimeformat/-/intl-relativetimeformat-8.0.1.tgz#9fcad0dba673cf0e21b4b9f83dab22ca6b482901" + integrity sha512-yMCtrDeQnqx95ucaYbHc1BP4XUP0q+JoMiP8kzMe04AgVvkfAScsoRuKfXw1EH1FkV51C/vqWIKDoGj1WoZnxQ== dependencies: "@formatjs/ecma402-abstract" "1.5.0" tslib "^2.0.1" @@ -1219,16 +1219,16 @@ dependencies: emojis-list "^3.0.0" -"@formatjs/intl@1.4.10": - version "1.4.10" - resolved "https://registry.yarnpkg.com/@formatjs/intl/-/intl-1.4.10.tgz#0b9b9970649630f7904f7ff930da3cdc8a897d17" - integrity sha512-CwbOmAnM2QKBUs6Eps1ry0YBe9nIQgQp9xQyxth/0BjJ8zRE3gIUzdNrLNCZ41nHuNPVFJRRIX79+yu5l+A56w== +"@formatjs/intl@1.4.11": + version "1.4.11" + resolved "https://registry.yarnpkg.com/@formatjs/intl/-/intl-1.4.11.tgz#6fa19a5b9be9daca36ee511c286cd310529776c0" + integrity sha512-fzAgZhJFpWi3Lc+j5WFIRMiJSt3AuaMHRUHl+eixmBIRqVXUoCbLvAqIs6b+fl/B6pXcVgRPY5HcPFUG2ApCGw== dependencies: "@formatjs/ecma402-abstract" "1.5.0" - "@formatjs/intl-datetimeformat" "3.1.0" - "@formatjs/intl-displaynames" "4.0.1" - "@formatjs/intl-listformat" "5.0.1" - "@formatjs/intl-relativetimeformat" "8.0.0" + "@formatjs/intl-datetimeformat" "3.2.0" + "@formatjs/intl-displaynames" "4.0.2" + "@formatjs/intl-listformat" "5.0.2" + "@formatjs/intl-relativetimeformat" "8.0.1" fast-memoize "^2.5.2" intl-messageformat "9.3.20" intl-messageformat-parser "6.0.18" @@ -1685,79 +1685,79 @@ prop-types "^15.6.1" react-lifecycles-compat "^3.0.4" -"@sentry/browser@5.29.0": - version "5.29.0" - resolved "https://registry.yarnpkg.com/@sentry/browser/-/browser-5.29.0.tgz#a8cab91729c759c456bd2254cef65bafa5cdc4ea" - integrity sha512-kRlt1mE2wrYjspnIupNnPxqsUrRuy02SuXhbpP7J6uu8QasoEmJ78hk0hHz4jOZRmuWwfs2zIXD4tLGgWOKq8A== +"@sentry/browser@5.29.1": + version "5.29.1" + resolved "https://registry.yarnpkg.com/@sentry/browser/-/browser-5.29.1.tgz#f05f8da562dd54bc0fafac6235817e3a3b76d3b7" + integrity sha512-cVlXoQBJ64eNNkQuOB+bS6sK5KWV+Fw+ZYxT+XqjpeXkOPaxh8aeoi9CHz2DsFfbLV91P4AnXZEUdDl+7ktQNg== dependencies: - "@sentry/core" "5.29.0" - "@sentry/types" "5.29.0" - "@sentry/utils" "5.29.0" + "@sentry/core" "5.29.1" + "@sentry/types" "5.29.1" + "@sentry/utils" "5.29.1" tslib "^1.9.3" -"@sentry/core@5.29.0": - version "5.29.0" - resolved "https://registry.yarnpkg.com/@sentry/core/-/core-5.29.0.tgz#4410ca0dc5785abf3df02fa23c18e83ad90d7cda" - integrity sha512-a1sZBJ2u3NG0YDlGvOTwUCWiNjhfmDtAQiKK1o6RIIbcrWy9TlSps7CYDkBP239Y3A4pnvohjEEKEP3v3L3LZQ== +"@sentry/core@5.29.1": + version "5.29.1" + resolved "https://registry.yarnpkg.com/@sentry/core/-/core-5.29.1.tgz#c56cfb6747005413d194f4cfe9a5bbdf5d5e377f" + integrity sha512-SMybIx9IlswkJ7a61ez/zjdiMdAo51Adpo4nVrzke2k84U/t726/EbJj0FJ4vVgsGdLCvSSZ6v7BQlINcwWupg== dependencies: - "@sentry/hub" "5.29.0" - "@sentry/minimal" "5.29.0" - "@sentry/types" "5.29.0" - "@sentry/utils" "5.29.0" + "@sentry/hub" "5.29.1" + "@sentry/minimal" "5.29.1" + "@sentry/types" "5.29.1" + "@sentry/utils" "5.29.1" tslib "^1.9.3" -"@sentry/hub@5.29.0": - version "5.29.0" - resolved "https://registry.yarnpkg.com/@sentry/hub/-/hub-5.29.0.tgz#d018b978fdffc6c8261744b0d08e8d25a3f4dc58" - integrity sha512-kcDPQsRG4cFdmqDh+TzjeO7lWYxU8s1dZYAbbl1J4uGKmhNB0J7I4ak4SGwTsXLY6fhbierxr6PRaoNojCxjPw== +"@sentry/hub@5.29.1": + version "5.29.1" + resolved "https://registry.yarnpkg.com/@sentry/hub/-/hub-5.29.1.tgz#64c738af308c909fe8fcf7c5da9e0685343385bb" + integrity sha512-Ig/vqCiJcsnGaWajkWRFH+5IKeo50ZtsjM0zJb8IfTadLjQuF/gTQst0aXO3l6q4HzveeGsELY8jlm6WVcq9Aw== dependencies: - "@sentry/types" "5.29.0" - "@sentry/utils" "5.29.0" + "@sentry/types" "5.29.1" + "@sentry/utils" "5.29.1" tslib "^1.9.3" -"@sentry/minimal@5.29.0": - version "5.29.0" - resolved "https://registry.yarnpkg.com/@sentry/minimal/-/minimal-5.29.0.tgz#bd8b52f388abcec2234dbbc6d6721ff65aa30e35" - integrity sha512-nhXofdjtO41/caiF1wk1oT3p/QuhOZDYdF/b29DoD2MiAMK9IjhhOXI/gqaRpDKkXlDvd95fDTcx4t/MqqcKXA== +"@sentry/minimal@5.29.1": + version "5.29.1" + resolved "https://registry.yarnpkg.com/@sentry/minimal/-/minimal-5.29.1.tgz#0f1eab0eccc9d38cb0ff3b17b81dbf9c909cd383" + integrity sha512-lAa3+Duxum1qQvR0tKiBUsH6Ehit3g/vO53SqBib7YK3qdvIUWHacmkJvfz/AeSvVnpJ9bsBMCVRJNSVe8BPVA== dependencies: - "@sentry/hub" "5.29.0" - "@sentry/types" "5.29.0" + "@sentry/hub" "5.29.1" + "@sentry/types" "5.29.1" tslib "^1.9.3" -"@sentry/react@^5.29.0": - version "5.29.0" - resolved "https://registry.yarnpkg.com/@sentry/react/-/react-5.29.0.tgz#367bf4113c4abc6477385383013aaaa381668baa" - integrity sha512-caSdAf+XqNrFw5xAj4gyOSd/33IccVhMlu60MuOOs6B6C3YxbMWUBTSuHeyxgK671ufIA+sxvipzMSVYr4VRAQ== +"@sentry/react@^5.29.1": + version "5.29.1" + resolved "https://registry.yarnpkg.com/@sentry/react/-/react-5.29.1.tgz#2c6283c09eb84397b9c8351fff62a6cd3abfa21b" + integrity sha512-sAc3AxqMaturNJvw6anHkhPQ9MRXU8KzisYicKOWakqVLKl/08hrfwSuB783slKdc5vXmWnyw2g/ulzqEr7QFg== dependencies: - "@sentry/browser" "5.29.0" - "@sentry/minimal" "5.29.0" - "@sentry/types" "5.29.0" - "@sentry/utils" "5.29.0" + "@sentry/browser" "5.29.1" + "@sentry/minimal" "5.29.1" + "@sentry/types" "5.29.1" + "@sentry/utils" "5.29.1" hoist-non-react-statics "^3.3.2" tslib "^1.9.3" -"@sentry/tracing@^5.29.0": - version "5.29.0" - resolved "https://registry.yarnpkg.com/@sentry/tracing/-/tracing-5.29.0.tgz#8ed515b3f9d409137357c38c8622858f9e684e4a" - integrity sha512-2ZITUH7Eur7IkmRAd5gw8Xt2Sfc28btCnT7o2P2J8ZPD65e99ATqjxXPokx0+6zEkTsstIDD3mbyuwkpbuvuTA== +"@sentry/tracing@^5.29.1": + version "5.29.1" + resolved "https://registry.yarnpkg.com/@sentry/tracing/-/tracing-5.29.1.tgz#ce97fa749bd80534bf084479fd60ba64043a19f0" + integrity sha512-iWfPtDhf5X7N9R5WB3vX/wlyFVsGG8iMx4hLIP+6bj8EcPYnZfeP6Sxn65a0ACT/FKv7SMBoZ1qPDzmvk0bviw== dependencies: - "@sentry/hub" "5.29.0" - "@sentry/minimal" "5.29.0" - "@sentry/types" "5.29.0" - "@sentry/utils" "5.29.0" + "@sentry/hub" "5.29.1" + "@sentry/minimal" "5.29.1" + "@sentry/types" "5.29.1" + "@sentry/utils" "5.29.1" tslib "^1.9.3" -"@sentry/types@5.29.0": - version "5.29.0" - resolved "https://registry.yarnpkg.com/@sentry/types/-/types-5.29.0.tgz#af5cec98cde54316c14df3121f0e8106e56b578e" - integrity sha512-iDkxT/9sT3UF+Xb+JyLjZ5caMXsgLfRyV9VXQEiR2J6mgpMielj184d9jeF3bm/VMuAf/VFFqrHlcVsVgmrrMw== +"@sentry/types@5.29.1": + version "5.29.1" + resolved "https://registry.yarnpkg.com/@sentry/types/-/types-5.29.1.tgz#ecc65909ac72d4f8024e26a64129e09d14a0a67f" + integrity sha512-QXZBA1gJheMYTGFV+UUhr3+jKpGZqPx8kEJABs8htlKabCDJlEeoFNmeqPuVxCxukoy5ZaaHACoE+2Z87T0g2A== -"@sentry/utils@5.29.0": - version "5.29.0" - resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-5.29.0.tgz#b4c1223ba362a94cf4850e9ca2cb24655b006b53" - integrity sha512-b2B1gshw2u3EHlAi84PuI5sfmLKXW1z9enMMhNuuNT/CoRp+g5kMAcUv/qYTws7UNnYSvTuVGuZG30v1e0hP9A== +"@sentry/utils@5.29.1": + version "5.29.1" + resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-5.29.1.tgz#889498950f6bde8ce054186096a3c95c0afb0fe4" + integrity sha512-FOhWxASvIQREAlSuWf3Vmb4uIkG0fmRdHkULpuv5dFmrMX2PpudYAppQtS8K9V4BYxFy6KFdUht1Qz5zYTecMw== dependencies: - "@sentry/types" "5.29.0" + "@sentry/types" "5.29.1" tslib "^1.9.3" "@svgr/babel-plugin-add-jsx-attribute@^4.2.0": @@ -3725,10 +3725,10 @@ classnames@^2.2.6: resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.2.6.tgz#43935bffdd291f326dad0a205309b38d00f650ce" integrity sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q== -cldr-core@37.0.0, cldr-core@^37.0.0: - version "37.0.0" - resolved "https://registry.yarnpkg.com/cldr-core/-/cldr-core-37.0.0.tgz#f148d6faebed52a7fb8a17cccc4ac858770f663a" - integrity sha512-tNH5lbfsE9xzsjjXQjq1tlpMFcmnQYfssDy0zYIZKVtAY18MeQy0+1qlLxB2Z9dwCixGJV8cdhtFjBOub077Gw== +cldr-core@38: + version "38.0.0" + resolved "https://registry.yarnpkg.com/cldr-core/-/cldr-core-38.0.0.tgz#f54a5dfd222c79a050f1fe8e87ad9764f16fb840" + integrity sha512-WkjA4zo5rLT/BWTZAxHJ0lJXwI33gCYucEz1+CpoI8Wu+rr5IrC57wyNXyrNNMdxfDE5RsWi/JCQ9qnG8sHTiw== clean-css@^4.2.3: version "4.2.3" @@ -10450,16 +10450,16 @@ react-input-autosize@^2.2.2: dependencies: prop-types "^15.5.8" -react-intl@^5.10.6: - version "5.10.6" - resolved "https://registry.yarnpkg.com/react-intl/-/react-intl-5.10.6.tgz#064dd69f3e96434f9145cac0b21c5a47f3ac6088" - integrity sha512-IWhPTGGggs/n/OKkhEHAZ7rCfQ8m/2hmYIwJtOPuNQVyKKU+R863q4xP/+uCW1NOXB+yvbF2p7CB/v2hkuEVCA== +react-intl@^5.10.7: + version "5.10.7" + resolved "https://registry.yarnpkg.com/react-intl/-/react-intl-5.10.7.tgz#2f163122bcbf3938fa736026d05bfc9aade05693" + integrity sha512-wbpQ7RPvlquxYaUBNG9E5lwufc/Ldq7/iJzIGwMG2eh7bag39AlbPlG+2ZfO31xfCo9TU4nG+X6t12I7d+Kdhg== dependencies: "@formatjs/ecma402-abstract" "1.5.0" - "@formatjs/intl" "1.4.10" - "@formatjs/intl-displaynames" "4.0.1" - "@formatjs/intl-listformat" "5.0.1" - "@formatjs/intl-relativetimeformat" "8.0.0" + "@formatjs/intl" "1.4.11" + "@formatjs/intl-displaynames" "4.0.2" + "@formatjs/intl-listformat" "5.0.2" + "@formatjs/intl-relativetimeformat" "8.0.1" "@types/hoist-non-react-statics" "^3.3.1" fast-memoize "^2.5.2" hoist-non-react-statics "^3.3.2" From 39201479051e0d6528bce98790a795d49804a9da Mon Sep 17 00:00:00 2001 From: eternaltyro Date: Mon, 14 Dec 2020 15:44:07 +0530 Subject: [PATCH 02/23] Remove redundant lines --- scripts/aws/cloudformation/tasking-manager.template.js | 3 --- 1 file changed, 3 deletions(-) diff --git a/scripts/aws/cloudformation/tasking-manager.template.js b/scripts/aws/cloudformation/tasking-manager.template.js index acc3f5d6b0..e757ba9842 100644 --- a/scripts/aws/cloudformation/tasking-manager.template.js +++ b/scripts/aws/cloudformation/tasking-manager.template.js @@ -327,9 +327,6 @@ const Resources = { 'sudo sh -c \'echo "deb http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -sc)-pgdg main" > /etc/apt/sources.list.d/PostgreSQL.list\'', 'sudo apt-get update -y', 'sudo apt-get install -y postgresql-11', - 'sudo sh -c \'echo "deb http://apt.postgresql.org/pub/repos/apt xenial-pgdg main" >> /etc/apt/sources.list\'', - 'wget --quiet -O - http://apt.postgresql.org/pub/repos/apt/ACCC4CF8.asc | sudo apt-key add -', - 'sudo apt-get -y update', 'sudo apt-get -y install postgresql-11-postgis', 'sudo apt-get -y install postgresql-11-postgis-scripts', 'sudo apt-get -y install postgis', From f00346c0f75132dc028bf0b2d75c4f4695de4a94 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Fri, 18 Dec 2020 15:23:22 +0000 Subject: [PATCH 03/23] Bump dompurify from 2.2.4 to 2.2.6 in /frontend Bumps [dompurify](https://github.com/cure53/DOMPurify) from 2.2.4 to 2.2.6. - [Release notes](https://github.com/cure53/DOMPurify/releases) - [Commits](https://github.com/cure53/DOMPurify/compare/2.2.4...2.2.6) Signed-off-by: dependabot-preview[bot] --- frontend/package.json | 2 +- frontend/yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/frontend/package.json b/frontend/package.json index 44f57e8a06..3851337d70 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -29,7 +29,7 @@ "@webscopeio/react-textarea-autocomplete": "^4.7.2", "axios": "^0.21.0", "chart.js": "^2.9.4", - "dompurify": "^2.2.4", + "dompurify": "^2.2.6", "downshift-hooks": "^0.8.1", "final-form": "^4.20.1", "fromentries": "^1.3.2", diff --git a/frontend/yarn.lock b/frontend/yarn.lock index 0d2ec12269..2374fd476c 100644 --- a/frontend/yarn.lock +++ b/frontend/yarn.lock @@ -4770,10 +4770,10 @@ domhandler@^2.3.0: dependencies: domelementtype "1" -dompurify@^2.2.4: - version "2.2.4" - resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-2.2.4.tgz#a98cd182b729bdd8715c3eb7a8bf8eafb2ff7410" - integrity sha512-jE21SelIgWrGKoXGfGPA524Zt1IJFBnktwfFMHDlEYRx5FZOdc+4eEH9mkA6PuhExrq3HVpJnY8hMYUzAMl0OA== +dompurify@^2.2.6: + version "2.2.6" + resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-2.2.6.tgz#54945dc5c0b45ce5ae228705777e8e59d7b2edc4" + integrity sha512-7b7ZArhhH0SP6W2R9cqK6RjaU82FZ2UPM7RO8qN1b1wyvC/NY1FNWcX1Pu00fFOAnzEORtwXe4bPaClg6pUybQ== domutils@1.3: version "1.3.0" From fa441560489fad79f47e856c1dfa5fba0e760dc2 Mon Sep 17 00:00:00 2001 From: Wille Marcel Date: Tue, 22 Dec 2020 08:43:12 -0300 Subject: [PATCH 04/23] Fix imagery loading in internal iD and className attrib on mapping sidebar (#4002) * Fix imagery loading in internal iD and class attrib on mapping sidebar * change iD' custom source initialization --- frontend/src/components/editor.js | 25 +++++++++++-------- .../taskSelection/actionSidebars.js | 7 ++++-- 2 files changed, 19 insertions(+), 13 deletions(-) diff --git a/frontend/src/components/editor.js b/frontend/src/components/editor.js index d91b0f9314..4ac60fdc80 100644 --- a/frontend/src/components/editor.js +++ b/frontend/src/components/editor.js @@ -1,4 +1,4 @@ -import React, { useEffect } from 'react'; +import React, { useEffect, useState } from 'react'; import { useSelector, useDispatch } from 'react-redux'; import * as iD from '@hotosm/id'; import '@hotosm/id/dist/iD.css'; @@ -10,7 +10,19 @@ export default function Editor({ setDisable, comment, presets, imageryUrl, gpxUr const session = useSelector((state) => state.auth.get('session')); const iDContext = useSelector((state) => state.editor.context); const locale = useSelector((state) => state.preferences.locale); + const [customImageryIsSet, setCustomImageryIsSet] = useState(false); const windowInit = typeof window !== undefined; + const customSource = + iDContext && iDContext.background() && iDContext.background().findSource('custom'); + + useEffect(() => { + if (!customImageryIsSet && imageryUrl && customSource) { + iDContext.background().baseLayerSource(customSource.template(imageryUrl)); + setCustomImageryIsSet(true); + // this line is needed to update the value on the custom background dialog + window.iD.prefs('background-custom-template', imageryUrl); + } + }, [customImageryIsSet, imageryUrl, iDContext, customSource]); useEffect(() => { return () => { @@ -62,15 +74,6 @@ export default function Editor({ setDisable, comment, presets, imageryUrl, gpxUr } else { iDContext.init(); } - if (imageryUrl) { - let background = iDContext.background(); - const backgroundSource = background.findSource('custom'); - if (backgroundSource) { - background.baseLayerSource(backgroundSource.template(imageryUrl)); - // this line is needed to update the value on the custom background dialog - window.iD.prefs('background-custom-template', imageryUrl); - } - } if (gpxUrl) { iDContext.layers().layer('data').url(gpxUrl, '.gpx'); } @@ -96,7 +99,7 @@ export default function Editor({ setDisable, comment, presets, imageryUrl, gpxUr } }); } - }, [session, iDContext, setDisable, presets, locale, imageryUrl, gpxUrl]); + }, [session, iDContext, setDisable, presets, locale, gpxUrl]); return
; } diff --git a/frontend/src/components/taskSelection/actionSidebars.js b/frontend/src/components/taskSelection/actionSidebars.js index 8786bd215a..079987ee98 100644 --- a/frontend/src/components/taskSelection/actionSidebars.js +++ b/frontend/src/components/taskSelection/actionSidebars.js @@ -108,9 +108,12 @@ export function CompletionTabForMapping({ )} {showReadCommentsAlert && ( -
historyTabSwitch()}> +
historyTabSwitch()} + > - +
From c324be74e9f2716751981351c1d4275dd1a0536e Mon Sep 17 00:00:00 2001 From: Diana Rita Nanyanzi <31903212+d-rita@users.noreply.github.com> Date: Tue, 22 Dec 2020 15:41:38 +0300 Subject: [PATCH 05/23] Allow users to filter task history comments and state changes (#3999) * Users can filter task history for comments and state changes: - Add checkboxes for comments and state changes - Adjust styling for action tabs - Automatic render of comments for beginner mappers * Adjust styling + render comments for beginners --- frontend/src/components/formInputs.js | 2 +- .../src/components/taskSelection/action.js | 3 +- .../src/components/taskSelection/messages.js | 8 ++ .../components/taskSelection/taskActivity.js | 105 +++++++++++++----- 4 files changed, 87 insertions(+), 31 deletions(-) diff --git a/frontend/src/components/formInputs.js b/frontend/src/components/formInputs.js index 53d8305291..0a6115381e 100644 --- a/frontend/src/components/formInputs.js +++ b/frontend/src/components/formInputs.js @@ -110,7 +110,7 @@ export function UserCountrySelect({ className }: Object) { ); } -const CheckBoxInput = ({ isActive, changeState, className = '' }) => ( +export const CheckBoxInput = ({ isActive, changeState, className = '' }) => (
-
+
{activeSection === 'completion' && ( <> {action === 'MAPPING' && ( @@ -308,6 +308,7 @@ export function TaskMapAction({ project, projectIsReady, tasks, activeTasks, act projectId={project.projectId} taskId={tasksIds[0]} commentPayload={taskHistory} + mapperLevel={userDetails['mappingLevel']} /> )}
diff --git a/frontend/src/components/taskSelection/messages.js b/frontend/src/components/taskSelection/messages.js index 20de0d60f5..a9a620c4cb 100644 --- a/frontend/src/components/taskSelection/messages.js +++ b/frontend/src/components/taskSelection/messages.js @@ -315,6 +315,14 @@ export default defineMessages({ id: 'project.tasks.action.history', defaultMessage: 'History', }, + taskComments: { + id: 'project.tasks.history.comments', + defaultMessage: 'Comments', + }, + taskStateChanges: { + id: 'project.tasks.history.stateChanges', + defaultMessage: 'Activities', + }, finishMappingTitle: { id: 'project.tasks.action.finish_mapping.title', defaultMessage: 'Once you have finished mapping', diff --git a/frontend/src/components/taskSelection/taskActivity.js b/frontend/src/components/taskSelection/taskActivity.js index 6dafb9adce..63515199a8 100644 --- a/frontend/src/components/taskSelection/taskActivity.js +++ b/frontend/src/components/taskSelection/taskActivity.js @@ -20,6 +20,7 @@ import { ID_EDITOR_URL } from '../../config'; import { Button, CustomButton } from '../button'; import { Dropdown } from '../dropdown'; import { CommentInputField } from '../comments/commentInput'; +import { CheckBoxInput } from '../formInputs'; const PostComment = ({ projectId, taskId, setCommentPayload }) => { const token = useSelector((state) => state.auth.get('token')); @@ -59,21 +60,31 @@ const PostComment = ({ projectId, taskId, setCommentPayload }) => { ); }; -export const TaskHistory = ({ projectId, taskId, commentPayload }) => { +export const TaskHistory = ({ projectId, taskId, commentPayload, mapperLevel }) => { const token = useSelector((state) => state.auth.get('token')); const [history, setHistory] = useState([]); + const taskChangeSetting = mapperLevel === 'BEGINNER' ? false : true; + const [showTaskComments, setShowTaskComments] = useState(true); + const [taskComments, setTaskComments] = useState([]); + const [showTaskChanges, setShowTaskChanges] = useState(taskChangeSetting); + const [taskChanges, setTaskChanges] = useState([]); + const [shownHistory, setShownHistory] = useState([]); useEffect(() => { if (commentPayload) { setHistory(commentPayload.taskHistory); + setTaskComments(commentPayload.taskHistory.filter((t) => t.action === 'COMMENT')); + setTaskChanges(commentPayload.taskHistory.filter((t) => t.action !== 'COMMENT')); } }, [commentPayload]); const getTaskInfo = useCallback( (projectId, taskId, token) => - fetchLocalJSONAPI(`projects/${projectId}/tasks/${taskId}/`, token).then((res) => - setHistory(res.taskHistory), - ), + fetchLocalJSONAPI(`projects/${projectId}/tasks/${taskId}/`, token).then((res) => { + setHistory(res.taskHistory); + setTaskComments(res.taskHistory.filter((t) => t.action === 'COMMENT')); + setTaskChanges(res.taskHistory.filter((t) => t.action !== 'COMMENT')); + }), [], ); @@ -83,6 +94,18 @@ export const TaskHistory = ({ projectId, taskId, commentPayload }) => { } }, [projectId, taskId, token, commentPayload, getTaskInfo]); + useEffect(() => { + if (showTaskComments && showTaskChanges) { + setShownHistory(history); + } else if (showTaskComments) { + setShownHistory(taskComments); + } else if (showTaskChanges) { + setShownHistory(taskChanges); + } else { + setShownHistory(history); + } + }, [mapperLevel, showTaskComments, showTaskChanges, taskComments, taskChanges, history]); + const getTaskActionMessage = (action, actionText) => { let message = ''; switch (action) { @@ -137,32 +160,56 @@ export const TaskHistory = ({ projectId, taskId, commentPayload }) => { if (!history) { return null; } else { - return history.map((t, n) => ( -
-
- -
-
-

- - {t.actionBy} - {' '} - {getTaskActionMessage(t.action, t.actionText)}{' '} - -

- {t.action === 'COMMENT' ? ( -

- ) : null} + return ( + <> +
+
+ setShowTaskComments(!showTaskComments)} + /> +
+ + + +
+ setShowTaskChanges(!showTaskChanges)} + /> +
+ + +
-
- )); + {shownHistory.map((t, n) => ( +
+
+ +
+
+

+ + {t.actionBy} + {' '} + {getTaskActionMessage(t.action, t.actionText)}{' '} + +

+ {t.action === 'COMMENT' ? ( +

+ ) : null} +
+
+ ))} + + ); } }; From 521b29880a6015641ce13e7e9f3f06027b317757 Mon Sep 17 00:00:00 2001 From: Wille Marcel Date: Tue, 22 Dec 2020 09:46:28 -0300 Subject: [PATCH 06/23] add missing blue-dark css class --- frontend/src/components/contributions/myTasksNav.js | 8 ++++---- frontend/src/components/projects/myProjectNav.js | 2 +- frontend/src/components/taskSelection/taskActivity.js | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/frontend/src/components/contributions/myTasksNav.js b/frontend/src/components/contributions/myTasksNav.js index dbd107370f..7579cd047f 100644 --- a/frontend/src/components/contributions/myTasksNav.js +++ b/frontend/src/components/contributions/myTasksNav.js @@ -18,17 +18,17 @@ const isActiveButton = (buttonName, contributionQuery) => { } }; -export const MyTasksNav = props => { +export const MyTasksNav = (props) => { const [contributionsQuery, setContributionsQuery] = useTaskContributionQueryParams(); const linkCombo = 'link ph3 f6 pv2 ba b--grey-light'; const notAnyFilter = !stringify(contributionsQuery); return ( /* mb1 mb2-ns (removed for map, but now small gap for more-filters) */ -
+
-

+

@@ -38,7 +38,7 @@ export const MyTasksNav = props => {
- {msg => { + {(msg) => { return ( { return (
-

+

{props.management ? ( ) : ( diff --git a/frontend/src/components/taskSelection/taskActivity.js b/frontend/src/components/taskSelection/taskActivity.js index 63515199a8..0e00427d26 100644 --- a/frontend/src/components/taskSelection/taskActivity.js +++ b/frontend/src/components/taskSelection/taskActivity.js @@ -162,7 +162,7 @@ export const TaskHistory = ({ projectId, taskId, commentPayload, mapperLevel }) } else { return ( <> -
+
{shownHistory.map((t, n) => ( -
+
Date: Tue, 22 Dec 2020 11:10:34 -0300 Subject: [PATCH 07/23] Update translations and frontend dependencies --- frontend/package.json | 10 +- frontend/src/locales/ar.json | 2 + frontend/src/locales/cs.json | 2 + frontend/src/locales/de.json | 2 + frontend/src/locales/el.json | 2 + frontend/src/locales/en.json | 2 + frontend/src/locales/es.json | 2 + frontend/src/locales/fa_IR.json | 2 + frontend/src/locales/fr.json | 6 +- frontend/src/locales/he.json | 2 + frontend/src/locales/hu.json | 236 ++++++++++++++++---------------- frontend/src/locales/id.json | 2 + frontend/src/locales/it.json | 2 + frontend/src/locales/ja.json | 2 + frontend/src/locales/mg.json | 2 + frontend/src/locales/ml.json | 2 + frontend/src/locales/nl_NL.json | 2 + frontend/src/locales/pt.json | 2 + frontend/src/locales/pt_BR.json | 2 + frontend/src/locales/sv.json | 2 + frontend/src/locales/sw.json | 2 + frontend/src/locales/tl.json | 2 + frontend/src/locales/tr.json | 2 + frontend/src/locales/uk.json | 14 +- frontend/src/locales/zh_TW.json | 2 + frontend/yarn.lock | 174 +++++++++++------------ 26 files changed, 265 insertions(+), 217 deletions(-) diff --git a/frontend/package.json b/frontend/package.json index 3851337d70..434b5a2f03 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -4,7 +4,7 @@ "license": "BSD-2-Clause", "private": false, "dependencies": { - "@formatjs/intl-locale": "^2.4.9", + "@formatjs/intl-locale": "^2.4.11", "@formatjs/intl-pluralrules": "^4.0.1", "@formatjs/intl-relativetimeformat": "^8.0.1", "@formatjs/intl-utils": "^3.8.4", @@ -17,8 +17,8 @@ "@mapbox/mapbox-gl-language": "^0.10.1", "@mapbox/togeojson": "^0.16.0", "@reach/router": "^1.3.4", - "@sentry/react": "^5.29.1", - "@sentry/tracing": "^5.29.1", + "@sentry/react": "^5.29.2", + "@sentry/tracing": "^5.29.2", "@turf/area": "^6.0.1", "@turf/bbox": "^6.0.1", "@turf/bbox-polygon": "^6.0.1", @@ -27,7 +27,7 @@ "@turf/line-to-polygon": "^6.0.1", "@turf/transform-scale": "^5.1.5", "@webscopeio/react-textarea-autocomplete": "^4.7.2", - "axios": "^0.21.0", + "axios": "^0.21.1", "chart.js": "^2.9.4", "dompurify": "^2.2.6", "downshift-hooks": "^0.8.1", @@ -49,7 +49,7 @@ "react-dom": "^16.14.0", "react-dropzone": "^11.2.4", "react-final-form": "^6.5.2", - "react-intl": "^5.10.7", + "react-intl": "^5.10.9", "react-meta-elements": "^1.0.0", "react-placeholder": "^4.0.3", "react-redux": "^7.2.2", diff --git a/frontend/src/locales/ar.json b/frontend/src/locales/ar.json index 56698c898d..952cf5fe71 100644 --- a/frontend/src/locales/ar.json +++ b/frontend/src/locales/ar.json @@ -578,6 +578,8 @@ "project.tasks.readComments": "", "project.tasks.action.completion": "", "project.tasks.action.history": "", + "project.tasks.history.comments": "", + "project.tasks.history.stateChanges": "", "project.tasks.action.finish_mapping.title": "", "project.tasks.action.instructions.select_task": "", "project.input.placeholder.write_comment": "", diff --git a/frontend/src/locales/cs.json b/frontend/src/locales/cs.json index abb4cf47a8..ddccd0b434 100644 --- a/frontend/src/locales/cs.json +++ b/frontend/src/locales/cs.json @@ -578,6 +578,8 @@ "project.tasks.readComments": "", "project.tasks.action.completion": "Dokončení", "project.tasks.action.history": "Historie", + "project.tasks.history.comments": "Komentáře", + "project.tasks.history.stateChanges": "", "project.tasks.action.finish_mapping.title": "Jakmile skončíte s mapováním", "project.tasks.action.instructions.select_task": "Vyberte jednu z možností uvedených níže, která odpovídá stavu vašich úprav", "project.input.placeholder.write_comment": "Napsat komentář", diff --git a/frontend/src/locales/de.json b/frontend/src/locales/de.json index 9705432a08..8014e27ff9 100644 --- a/frontend/src/locales/de.json +++ b/frontend/src/locales/de.json @@ -578,6 +578,8 @@ "project.tasks.readComments": "", "project.tasks.action.completion": "Erfüllungsgrad", "project.tasks.action.history": "Verlauf", + "project.tasks.history.comments": "Kommentare", + "project.tasks.history.stateChanges": "", "project.tasks.action.finish_mapping.title": "Sobald Sie die Kartierung abgeschlossen haben", "project.tasks.action.instructions.select_task": "Wählen Sie eine der folgenden Optionen aus, die Ihrem Bearbeitungsstatus entspricht.", "project.input.placeholder.write_comment": "Schreiben Sie einen Kommentar", diff --git a/frontend/src/locales/el.json b/frontend/src/locales/el.json index 8335c36be6..2c9f4cdbe3 100644 --- a/frontend/src/locales/el.json +++ b/frontend/src/locales/el.json @@ -578,6 +578,8 @@ "project.tasks.readComments": "", "project.tasks.action.completion": "Ολοκλήρωση", "project.tasks.action.history": "Ιστορικό", + "project.tasks.history.comments": "Σχόλια", + "project.tasks.history.stateChanges": "", "project.tasks.action.finish_mapping.title": "Εφόσον έχετε ολοκληρώσει τη χαρτογράφηση", "project.tasks.action.instructions.select_task": "Ορίστε μία από τις παρακάτω επιλογές που ταιριάζει με την κατάσταση επεξεργασίας σας", "project.input.placeholder.write_comment": "Γράψτε ένα σχόλιο", diff --git a/frontend/src/locales/en.json b/frontend/src/locales/en.json index 9ad968f637..c5d8742e49 100644 --- a/frontend/src/locales/en.json +++ b/frontend/src/locales/en.json @@ -578,6 +578,8 @@ "project.tasks.readComments": "Please check the history tab for relevant comments.", "project.tasks.action.completion": "Completion", "project.tasks.action.history": "History", + "project.tasks.history.comments": "Comments", + "project.tasks.history.stateChanges": "Activities", "project.tasks.action.finish_mapping.title": "Once you have finished mapping", "project.tasks.action.instructions.select_task": "Select one of the options below that matches your edit status", "project.input.placeholder.write_comment": "Write a comment", diff --git a/frontend/src/locales/es.json b/frontend/src/locales/es.json index 06213ea580..cc371ea96e 100644 --- a/frontend/src/locales/es.json +++ b/frontend/src/locales/es.json @@ -578,6 +578,8 @@ "project.tasks.readComments": "Por favor, compruebe la pestaña Historial para ver los comentarios relevantes.", "project.tasks.action.completion": "Terminación", "project.tasks.action.history": "Historial", + "project.tasks.history.comments": "Comentarios", + "project.tasks.history.stateChanges": "Actividades", "project.tasks.action.finish_mapping.title": "Una vez que haya terminado de mapear", "project.tasks.action.instructions.select_task": "Seleccione una de las siguientes opciones que coincida con su estado de edición", "project.input.placeholder.write_comment": "Escribir un comentario", diff --git a/frontend/src/locales/fa_IR.json b/frontend/src/locales/fa_IR.json index 47adafa885..ddea7cc637 100644 --- a/frontend/src/locales/fa_IR.json +++ b/frontend/src/locales/fa_IR.json @@ -578,6 +578,8 @@ "project.tasks.readComments": "", "project.tasks.action.completion": "تکمیل", "project.tasks.action.history": "تاریخچه", + "project.tasks.history.comments": "نظر", + "project.tasks.history.stateChanges": "", "project.tasks.action.finish_mapping.title": "", "project.tasks.action.instructions.select_task": "", "project.input.placeholder.write_comment": "", diff --git a/frontend/src/locales/fr.json b/frontend/src/locales/fr.json index 00cb3e32cc..a5b222635d 100644 --- a/frontend/src/locales/fr.json +++ b/frontend/src/locales/fr.json @@ -578,6 +578,8 @@ "project.tasks.readComments": "", "project.tasks.action.completion": "Achèvement", "project.tasks.action.history": "Historique", + "project.tasks.history.comments": "Commentaires", + "project.tasks.history.stateChanges": "Activités", "project.tasks.action.finish_mapping.title": "Une fois que vous avez terminé de cartographier", "project.tasks.action.instructions.select_task": "Sélectionnez un des choix ci-dessous correspondant à votre statut d'édition. ", "project.input.placeholder.write_comment": "Écrire un commentaire", @@ -908,8 +910,8 @@ "pages.learn.validate.steps.build.description": "", "pages.learn.validate.steps.collaborate.title": "Interagissez avec la communauté", "pages.learn.validate.steps.collaborate.description": "Les différents validateurs ont des techniques de validation différentes. Rejoignez la conversation sur les {mailingListLink} ou sur le {forumLink}. Faites profiter la communauté des ressources que vous trouvez utiles ! ", - "pages.learn.validate.mailing_lists": "", - "pages.learn.validate.forum": "", + "pages.learn.validate.mailing_lists": "listes de diffusion", + "pages.learn.validate.forum": "forum", "pages.learn.validate.tagging_schema": "", "pages.learn.validate.note": "Une fois que vous serez devenu un cartographe expérimenté dans OpenStreetMap, vous aurez la garantie que vous êtes prêt à devenir un validateur. Vous pouvez postuler auprès de certaines des équipes de validation ou trouver un projet sur lequel vous souhaitez valider. Rejoignez une équipe qui vous donnera la permission de valider les tâches. C'est maintenant l'occasion pour vous d'avancer et d'aider d'autres cartographes dans leur périple", "pages.learn.manage_title": "Apprendre à gérer des projets", diff --git a/frontend/src/locales/he.json b/frontend/src/locales/he.json index 1daab761e1..6b94b3aef5 100644 --- a/frontend/src/locales/he.json +++ b/frontend/src/locales/he.json @@ -578,6 +578,8 @@ "project.tasks.readComments": "נא לבדוק את לשונית ההיסטוריה לאיתור תגובות תואמות.", "project.tasks.action.completion": "השלמה", "project.tasks.action.history": "היסטוריה", + "project.tasks.history.comments": "הערות", + "project.tasks.history.stateChanges": "", "project.tasks.action.finish_mapping.title": "לאחר שסיימת למפות", "project.tasks.action.instructions.select_task": "נא לבחור את אחת המשימות שלהלן שתואמת את מצב העריכה שלך", "project.input.placeholder.write_comment": "כתיבת הערה", diff --git a/frontend/src/locales/hu.json b/frontend/src/locales/hu.json index 8ea2a61589..eaf2f313e9 100644 --- a/frontend/src/locales/hu.json +++ b/frontend/src/locales/hu.json @@ -1,16 +1,16 @@ { - "banner.title": "Az összegyűjtött információkról", + "banner.title": "Az általunk gyűjtött információkról", "banner.button.disagree": "Nem értek egyet", "banner.button.agree": "Egyetértek", "banner.privacyPolicy": "adatkezelési irányelvek", "banner.text": "Látogatásai felismerésére és elemzésére, valamint a forgalom és a tevékenység mérésére sütiket és hasonló technológiákat alkalmazunk. {link} oldalunk elolvasásával megtudhatja, miként használjuk fel látogatása adatait vagy az ön által megadott adatokat. Az „Egyetértek” gombra kattintva hozzájárul a sütik használatához.", "comment.input.imageUpload.error": "A kép feltöltése sikertelen.", - "comment.input.imageUpload.progress": "", - "comment.input.sending.progress": "", - "comment.input.sending.success": "", - "comment.input.sending.error": "", - "comment.hashtags.help.managers": "", - "comment.hashtags.help.author": "", + "comment.input.imageUpload.progress": "Fájl feltöltése…", + "comment.input.sending.progress": "Üzenet küldése…", + "comment.input.sending.success": "Üzenet elküldve.", + "comment.input.sending.error": "Hiba történt az üzenet küldése közben.", + "comment.hashtags.help.managers": "Adja hozzá a(z) „{hashtag}” szót, hogy értesítse a projektvezetőket a megjegyzéséről.", + "comment.hashtags.help.author": "Adja hozzá a(z) „{hashtag}” szót, hogy értesítse a projekt szerzőjét a megjegyzéséről.", "mytasks.mainSection.title": "Feladataim", "mytasks.contribution": "Közreműködés", "mytasks.filter.all": "Összes", @@ -88,7 +88,7 @@ "emailUpdate.modal.text2": "Együtt térképezünk! Az e-mail cím megadása a térképezéssel kapcsolatos visszajelzésekhez és a közvetlen üzenetekhez szükséges.", "emailUpdate.modal.privacy_policy": "Ha tájékozódni szeretne arról, hogyan védjük a felhasználók adatait, olvassa el Adatvédelmi irányelveinket.", "home.mainSection.title": "Térkép a szükséget szenvedőknek", - "home.mainSection.lead": "", + "home.mainSection.lead": "Csatlakozzon egy globális közösséghez, amely feltérképezi a katasztrófák és a szegénység által leginkább kiszolgáltatott helyeket, hogy az egész világon támogassa a humanitárius segítségnyújtást és a fenntartható fejlődést.", "home.callToAction.title": "Ön nélkül nem megy", "home.callToAction.firstLeadLine": "A térképet bárki szerkesztheti. Ha korábban még soha nem rajzolt térképet, és szeretne nekilátni, látogasson el {link} oldalunkra.", "home.callToAction.secondLeadLine": "Ön már tapasztalt térképező? Kattintson az alábbi elemre, és nézze meg, hogy most éppen milyen térképezési projektek vannak folyamatban.", @@ -102,7 +102,7 @@ "home.stats.community": "Összes térképező", "home.stats.mappers": "Online állapotú térképezők", "home.mappingFlow.title": "A katasztrófák világszerte évről évre mintegy {number} ember életébe kerülnek, és 200 millió embert sujtanak vagy kényszerítenek lakóhelye elhagyására. A térképezés segíthet abban, hogy ez ne így legyen.", - "home.mappingFlow.headLine": "", + "home.mappingFlow.headLine": "Egyes szervezetek a Tasking Manager feladatkezelővel a világ olyan területein hoznak létre térképészeti projekteket, ahol életek megmentéséhez vagy jobbá tételéhez van szükség adatokra.", "home.mappingFlow.cards.mapping.title": "Térképezés", "home.mappingFlow.cards.validation.title": "Érvényesítés", "home.mappingFlow.cards.usingData.title": "Az adatok felhasználása", @@ -139,7 +139,7 @@ "project.typesOfMapping.landUse": "Területhasználat", "project.typesOfMapping.waterways": "Vízfolyások", "project.typesOfMapping.other": "Egyéb", - "project.typesOfMapping.pointsOfInterest": "", + "project.typesOfMapping.pointsOfInterest": "Érdekes helyek", "notifications.mainSection.title": "Értesítések", "notifications.filter.all": "Összes", "notifications.filter.messages": "Üzenetek", @@ -152,8 +152,8 @@ "notifications.navFilters.error": "{yWord}: hiba történt a(z) {xWord} betöltésekor", "notifications.navFilters.error.simple": "Hiba történt a(z) {xWord} betöltésekor", "notifications.pagination.count": "{number} megjelenítése ennyiből: {total}", - "notifications.nav.new.one": "", - "notifications.nav.new.plural": "", + "notifications.nav.new.one": "1 új üzenet", + "notifications.nav.new.plural": "{n} új üzenet", "notifications.nav.viewAll": "Összes megtekintése", "notifications.nav.goToNotifications": "Ugrás az értesítésekhez", "notifications.nav.noUnread": "Nincs olvasatlan üzenet", @@ -168,7 +168,7 @@ "notifications.refresh": "Frissítés", "notifications.message.type.system": "Rendszer", "notifications.message.type.broadcast": "Adás", - "notifications.message.type.team": "", + "notifications.message.type.team": "Bejelentés csoportnak", "notifications.message.type.mention_notification": "Említés", "notifications.message.type.validation_notification": "Érvényesítés", "notifications.message.type.invalidation_notification": "Érvénytelenítés", @@ -179,9 +179,9 @@ "notifications.message.type.project_activity_notification": "Projekttevékenység", "project.card.contributorCount": "Összesen {number} szerkesztő", "project.card.lastContribution": "Legutóbbi szerkesztés", - "project.card.percentMapped": "", - "project.card.percentValidated": "", - "project.card.percentBadImagery": "", + "project.card.percentMapped": "{n}% feltérképezve", + "project.card.percentValidated": "{n}% érvényesítve", + "project.card.percentBadImagery": "{n}% rossz légi felvétel", "project.card.projectPriorityUrgent": "Sürgős", "project.card.projectPriorityHigh": "Magas", "project.card.projectPriorityMedium": "Közepes", @@ -198,7 +198,7 @@ "management.projects.clone.message": "Az új projekt a következő klónja lesz: #{id} ({name}).", "management.projects.create.clone": "Klónozás", "management.projects.create.area_size": "Terület nagysága: {area} km{sq}", - "management.projects.create.area_error": "", + "management.projects.create.area_error": "A projekt területe több, mint {n} négyzetkilométer.", "management.projects.create.tasks": "Feladatok száma: {n}", "management.projects.create.steps.1": "1. lépés: terület meghatározása", "management.projects.create.steps.2": "2. lépés: feladatok méretének megadása", @@ -232,10 +232,10 @@ "management.projects.create.button.next": "Következő", "management.projects.create.button.trim": "Igazítás", "management.projects.create.button.draw": "Rajzolás", - "management.projects.create.button.select_file": "", - "management.projects.create.arbitrary_tasks": "", - "management.projects.create.draw.description": "", - "management.projects.create.upload.description": "", + "management.projects.create.button.select_file": "Fájl kijelölése", + "management.projects.create.arbitrary_tasks": "Feladatok beállítása feltöltött sokszögek segítségével", + "management.projects.create.draw.description": "Rajzolja meg az érintett területet a térképen, vagy importáljon egy fájlt.", + "management.projects.create.upload.description": "Importálhat GeoJSON, KML, OSM vagy tömörített Shapefile fájlt.", "project.detail.teams.empty": "Ehhez a projekthez nem kapcsolódik csoport.", "project.detail.coordination": "Koordináció", "project.detail.coordination.description": "Ezt a projektet a(z) {organisation} koordinálja, és {user} hozta létre.", @@ -281,13 +281,13 @@ "project.detail.cards.mapthroughosm.description": "Ha még nem térképezett, akkor azt ajánljuk, hogy kezdés előtt tekintse át az utasításokat a Tanulás oldalon.", "project.detail.cards.submityourwork.description": "A munka beküldése nélkülözhetetlen ahhoz, hogy adatai biztosan el legyenek mentve.", "project.detail.sections.overview": "Áttekintés", - "project.detail.sections.overview.dueDate": "", + "project.detail.sections.overview.dueDate": "A projekt befejezésének eszményi dátuma", "project.detail.sections.description": "Leírás", "project.detail.sections.questionsAndComments": "Kérdések és megjegyzések", "project.detail.sections.contributions": "Szerkesztések", "project.detail.sections.contributionsTimeline": "Szerkesztési idővonal", "project.detail.sections.contributions.osmcha": "Módosításkészletek az OSMCha-ba (OSM Changeset Analyzer, módosításkészlet-elemző)", - "project.detail.sections.contributions.changesets": "", + "project.detail.sections.contributions.changesets": "Módosításkészletek", "project.detail.sections.contributors": "Szerkesztők", "project.detail.sections.relatedProjects": "Kapcsolódó projektek", "project.detail.sections.contributions.timelineError": "Az idővonal az első feladat térképezése után lesz látható.", @@ -300,12 +300,12 @@ "project.permissions.teamsAndLevel": "{team}: középhaladó és haladó tagok", "projects.data.download.aoi": "AOI letöltése", "projects.data.download.taskGrid": "Feladatrács letöltése", - "projects.link.stats": "", + "projects.link.stats": "További statisztika", "project.share.twitter": "Közreműködés a(z) #{id} projekt feltérképezésében a(z) {site} oldalon", "project.share.facebook": "Bejegyzés közzététele a Facebookon", "project.share.linkedin": "Megosztás a LinkedIn-en", "projects.formInputs.privacy.title": "Láthatóság", - "projects.formInputs.privacy.field": "", + "projects.formInputs.privacy.field": "Magánprojekt", "projects.formInputs.privacy.description": "A privát azt jelenti, hogy a projektet csak a projektcsoport tagjai érhetik el, térképezhetik vagy érvényesíthetik. Ez a beállítás felülírja a térképezési és érvényesítési engedélyeket.", "projects.formInputs.teams.title": "Csoportok", "projects.formInputs.organisation.title": "Szervezet", @@ -318,7 +318,7 @@ "projects.formInputs.permissions.any": "Bármelyik felhasználó", "projects.formInputs.permissions.level": "Csak középhaladó vagy haladó szintű felhasználók", "projects.formInputs.permissions.teams": "Csak csoporttagok", - "projects.formInputs.permissions.teamsAndLevel": "Csak középhaladó vagy haladó csoporttagok.", + "projects.formInputs.permissions.teamsAndLevel": "Csak középhaladó vagy haladó csoporttagok", "projects.formInputs.permissions.mapping.description": "Azon felhasználók meghatározása, akik térképezhetnek a projektben.", "projects.formInputs.permissions.validation.description": "Azon felhasználók meghatározása, akik érvényesíthetik a projektet.", "projects.formInputs.permissions.mapping.title": "Térképezési engedélyek", @@ -338,13 +338,13 @@ "projects.actions.invalidate_all_tasks.title": "Az összes feladat érvénytelenítése", "projects.actions.invalidate_all_tasks.confirmation": "Biztosan érvényteleníti a projekt összes feladatát? Ez a művelet nem vonható vissza.", "projects.actions.invalidate_all_tasks.description": "Ez (a „nem elérhetők” kivételével) az összes feladatot megjelöli „alaposabban feltérképezendő”-ként. Kérjük, csak akkor használja, ha tudja, mit csinál.", - "projects.actions.invalidate_all_tasks.success": "A feladatok sikeresen meg lettek jelölve a „alaposabban feltérképezendő”-ként", + "projects.actions.invalidate_all_tasks.success": "A feladatok sikeresen meg lettek jelölve „alaposabban feltérképezendő”-ként.", "projects.actions.invalidate_all_tasks.error": "Az összes feladat érvénytelenítése ismeretlen okból meghiúsult.", "projects.actions.validate_all_tasks.title": "Az összes feladat érvényesítése", "projects.actions.validate_all_tasks.confirmation": "Biztosan érvényesíti az összes feladatot? Ez a művelet nem vonható vissza.", "projects.actions.validate_all_tasks.description": "Ez (a „nem elérhetők” kivételével) az összes feladat állapotát megváltoztatja „kész”-re. Kérjük, csak akkor használja, ha tudja, mit csinál.", "projects.actions.validate_all_tasks.success": "A feladatok sikeresen érvényesültek.", - "projects.actions.validate_all_tasks.error": "", + "projects.actions.validate_all_tasks.error": "Az összes feladat érvényesítése ismeretlen okból nem sikerült.", "projects.actions.reset_bad_imagery_tasks.title": "A nem elérhetőként megjelölt feladatok alaphelyzetbe állítása", "projects.actions.reset_bad_imagery_tasks.confirmation": "Biztosan alaphelyzetbe állítja a projektben nem elérhetőként megjelölt összes feladatot? Ez a művelet nem vonható vissza.", "projects.actions.reset_bad_imagery_tasks.description": "Ez azoknak a feladatoknak az állapotát megváltoztatja „térképezésre kész”-re. Kérjük, csak akkor használja, ha tudja, mit csinál.", @@ -361,7 +361,7 @@ "projects.actions.transfer_project.button": "Projekt átruházása", "projects.actions.transfer_project.title": "Projekt tulajdonjogának átruházása", "projects.actions.transfer_project.alert": "Helytelen átruházás esetén forduljon az új tulajdonoshoz a változtatás visszavonásához.", - "projects.actions.transfer_project.success": "", + "projects.actions.transfer_project.success": "A projekt átruházása sikeres volt.", "projects.actions.transfer_project.error": "A projekt átruházása meghiúsult.", "projects.actions.delete_project.title": "Projekt törlése", "projects.actions.delete_project.alert": "Csak az a projekt törölhető, amelyet még nem szerkesztettek.", @@ -389,8 +389,8 @@ "projects.formInputs.priority_areas.options.rectangle": "Téglalap rajzolása", "projects.formInputs.priority_areas.action.clear": "Minden törlése", "projects.formInputs.name": "Projekt neve", - "projects.formInputs.dueDate": "", - "projects.formInputs.dueDate.description": "", + "projects.formInputs.dueDate": "Határidő", + "projects.formInputs.dueDate.description": "Határozza meg az ideális időpontot a projekt befejezéséhez. Dátumformátum: nap/hónap/év.", "projects.formInputs.description": "Leírás", "projects.formInputs.shortDescription": "Rövid leírás", "projects.formInputs.instructions": "Részletes utasítások", @@ -398,7 +398,7 @@ "projects.formInputs.osmcha_filter_id.description": "Az elmentett OSMCha-szűrő opcionális azonosítója, amelyet a projekt OSMCha-ban történő megtekintésekor kell alkalmazni, ha egyedi szűrést kíván. Vegye figyelembe, hogy ez az összes szűrőt felváltja. Például: 095e8b31-b3cb-4b36-a106-02826fb6a109. (A kényelem érdekében egy mentett szűrőt használó OSMCha URL-t is beilleszthet ide, amelyből ki lesz nyerve Önnek a szűrő azonosítója).", "projects.formInputs.priority_areas.description": "Ha azt szeretné, hogy a térképezők először a legmagasabb prioritású területeken dolgozzanak, rajzoljon a projektterületen belül egy vagy több sokszöget.", "projects.formInputs.mapping_types": "Térképezés fajtái", - "projects.formInputs.id_presets": "", + "projects.formInputs.id_presets": "Az iD szerkesztő előbeállításai", "projects.formInputs.user_role": "Felhasználó szerepköre", "projects.formInputs.mapper_level": "Térképező szintje", "projects.formInputs.mapper_level.description": "A szint beállítása segít a térképezőknek, hogy megfelelő projektet találjanak maguknak.", @@ -432,8 +432,8 @@ "projects.formInputs.custom_editor.name": "Név", "projects.formInputs.custom_editor.description": "Leírás", "projects.formInputs.custom_editor.url": "URL", - "projects.formInputs.custom_editor.enabled.mapping": "", - "projects.formInputs.custom_editor.enabled.validation": "", + "projects.formInputs.custom_editor.enabled.mapping": "Térképezéshez engedélyezve", + "projects.formInputs.custom_editor.enabled.validation": "Érvényesítéshez engedélyezve", "projects.formInputs.custom_editor.delete": "Egyedi szerkesztő törlése", "projects.formInputs.custom_editor.remove": "Egyedi szerkesztő eltávolítása", "projects.formInputs.custom_editor.delete.confirm": "Ez eltávolítja az egyedi szerkesztőt a projektből. Biztosan nem letiltani akarja az egyéni szerkesztőt a fenti „Engedélyezve” jelölőnégyzet bekapcsolásával?", @@ -442,12 +442,12 @@ "project.nav.moreFilters": "További szűrők", "project.nav.campaign": "Kampány", "project.nav.showMapToggle": "Térkép megjelenítése", - "project.nav.listViewToggle": "", + "project.nav.listViewToggle": "Listanézet", "project.navFilters.typesOfMapping": "Térképezés fajtái", - "project.navFilters.action.map": "", - "project.navFilters.action.validate": "", - "project.navFilters.action.any": "", - "project.navFilters.typesOfMapping.exactMatch": "", + "project.navFilters.action.map": "Térképezendő projektek", + "project.navFilters.action.validate": "Érvényesítendő projektek", + "project.navFilters.action.any": "Bármely projekt", + "project.navFilters.typesOfMapping.exactMatch": "Pontos egyezés", "project.navFilters.campaigns": "Minden kampány", "project.navFilters.showAllXTags": "{typeOfTag} megjelenítése", "project.inputs.placeholders.search": "Projekt keresése", @@ -464,7 +464,7 @@ "project.nav.contributed": "Szerkesztve", "project.nav.allprojects": "Összes", "project.nav.active": "Aktív", - "project.nav.managed": "", + "project.nav.managed": "Általam kezelt", "project.nav.created": "Én készítettem", "project.nav.draft": "Tervezet", "project.nav.archived": "Archiválva", @@ -480,41 +480,41 @@ "project.nav.apply": "Alkalmazás", "project.nav.clear": "Törlés", "project.results.retry": "Újra", - "projects.stats.title": "", - "projects.stats.average_mapping_time": "", - "projects.stats.average_validation_time": "", - "projects.stats.time_finish_mapping": "", - "projects.stats.time_finish_validation": "", - "project.stats.tasks.tatus": "", - "project.stats.tasks.needs_mapping": "", - "project.stats.tasks.needs_validation": "", + "projects.stats.title": "Időstatisztika", + "projects.stats.average_mapping_time": "Átlagos térképezési idő feladatonként", + "projects.stats.average_validation_time": "Átlagos érvényesítési idő feladatonként", + "projects.stats.time_finish_mapping": "A térképezés befejeződéséig hátralévő becsült idő", + "projects.stats.time_finish_validation": "Az érvényesítés befejeződéséig hátralévő becsült idő", + "project.stats.tasks.tatus": "Feladatok állapot szerint", + "project.stats.tasks.needs_mapping": "Térképezendő feladatok", + "project.stats.tasks.needs_validation": "Érvényesítendő feladatok", "project.stats.contributors.title": "Szerkesztők", - "project.stats.contributors.total": "", - "project.stats.experience.title": "", - "project.stats.level.title": "", - "project.stats.contributors.mappers": "", - "project.stats.contributors.validators": "", - "project.stats.contributors.experience.1": "", - "project.stats.contributors.experience.3": "", - "project.stats.contributors.experience.6": "", - "project.stats.contributors.experience.12": "", - "project.stats.contributors.experience.year": "", - "project.stats.totalEdits": "", - "project.stats.changesets": "", - "project.stats.edits": "", + "project.stats.contributors.total": "Szerkesztők összesen", + "project.stats.experience.title": "A Tasking Manager felhasználói tapasztalat szerint", + "project.stats.level.title": "Felhasználók szint szerint", + "project.stats.contributors.mappers": "Térképezők", + "project.stats.contributors.validators": "Érvényesítők", + "project.stats.contributors.experience.1": "Kevesebb, mint 1 hónapja", + "project.stats.contributors.experience.3": "1–3 hónapja", + "project.stats.contributors.experience.6": "3–6 hónapja", + "project.stats.contributors.experience.12": "6–12 hónapja", + "project.stats.contributors.experience.year": "Több mint 1 éve", + "project.stats.totalEdits": "Összes térképszerkesztés", + "project.stats.changesets": "Módosításkészletek", + "project.stats.edits": "Szerkesztések", "project.tasks.unsaved_map_changes.title": "Van néhány nem mentett térképmódosítása", - "project.tasks.unsaved_map_changes.split": "A feladat felosztásához mentse el vagy vonja vissza ", + "project.tasks.unsaved_map_changes.split": "A feladat felosztásához mentse el vagy vonja vissza", "project.tasks.unsaved_map_changes.unlock": "Másik feladat kijelöléséhez mentse el vagy vonja vissza", "project.tasks.unsaved_map_changes.actions.close_modal": "Bezárás", - "project.tasks.josm_error": "", - "project.tasks.josm_error.description": "", + "project.tasks.josm_error": "Nem sikerült a kapcsolat a JOSM-mal", + "project.tasks.josm_error.description": "Kérjük, ellenőrizze, hogy a JOSM fut-e a számítógépén, és engedélyezve van-e a távirányító.", "project.tasks.lock_error.generic": "Ezt a feladatot nem lehetett Önnek zárolni…", "project.tasks.lock_error.generic.description": "Hibák történtek a feladat zárolásakor. Ellenőrizze, hogy a felhasználó szintje, szerepköre és engedélyei megfelelnek-e a projektjéinek.", "project.tasks.lock_error.license.title": "A projektnek kötelező licence van.", - "project.tasks.lock_error.license.description": "", + "project.tasks.lock_error.license.description": "Kérjük, fogadja el ezt a licencet a projektben való együttműködés érdekében.", "project.tasks.lock_error.license.accept": "Elfogadás", "project.tasks.lock_error.cancel": "Mégse", - "project.tasks.lock_error.another_project": "Találtunk egy másik térképezési feladatot, amelyet Ön már zárolt.", + "project.tasks.lock_error.another_project": "Találtunk egy másik térképezési feladatot, amelyet Ön már zárolt", "project.tasks.lock_error.another_project.description.singular": "Ez a(z) #{project} projekt része. Először ennek a feladatnak kell frissítenie az állapotát, és csak ez után térképezhet egy másik feladatot.", "project.tasks.lock_error.another_project.description.plural": "Ez a(z) #{project} projekt része. Először ennek a feladatnak kell frissítenie az állapotát, és csak ez után térképezhet egy másik feladatot.", "project.tasks.lock_error.current_project.description.singular": "A(z) #{taskId} feladatot Ön már korábban zárolta. Először ennek a feladatnak kell frissítenie az állapotát, és csak ez után térképezhet egy másik feladatot.", @@ -531,14 +531,14 @@ "project.editor.open_editor": "Szerkesztő megnyitása", "project.sidebar.show": "Oldalsáv megjelenítése", "project.sidebar.hide": "Oldalsáv elrejtése", - "project.sidebar.timeToUnlock": "", + "project.sidebar.timeToUnlock": "A feladat elvégzéséhez rendelkezésére álló idő", "project.task": "Feladat", "project.tasks": "Feladatok", "project.taskId": "#{id} feladat", "project.instructions": "Utasítások", "project.changesetComment": "Megjegyzés a módosításkészlethez", "project.contributions": "szerkesztések", - "project.contributions.registered": "", + "project.contributions.registered": "Regisztráció:", "project.imagery": "Légi felvételek", "project.imagery.tms": "Egyedi TMS-réteg", "project.imagery.wms": "Egyedi WMS-réteg", @@ -549,16 +549,16 @@ "project.selectTask.footer.button.mapSelectedTask": "Kijelölt feladat térképezése", "project.selectTask.footer.button.mapAnotherTask": "Másik feladat térképezése", "project.selectTask.footer.button.validateRandomTask": "Feladat érvényesítése", - "project.selectTask.footer.button.validateSelectedTask": "{number, plural, one {} other {}}", + "project.selectTask.footer.button.validateSelectedTask": "{number, plural, one {Kijelölt feladat érvényesítése} other {# kijelölt feladat érvényesítése}}", "project.selectTask.footer.button.validateAnotherTask": "Másik feladat érvényesítése", "project.selectTask.footer.button.selectAnotherProject": "Másik projekt kijelölése", "project.selectTask.footer.button.resumeMapping": "Térképezés folytatása", "project.selectTask.footer.button.resumeValidation": "Érvényesítés folytatása", "project.tasks.list.lastUpdate": "Legutóbb {user} frissítette", - "project.tasks.list.details": "", - "project.tasks.list.zoom": "", - "project.tasks.list.copyLink": "", - "project.tasks.list.linkCopied": "", + "project.tasks.list.details": "Feladatelőzmények megtekintése", + "project.tasks.list.zoom": "Térkép nagyítása a feladatra", + "project.tasks.list.copyLink": "Feladatlink másolása", + "project.tasks.list.linkCopied": "Feladatlink a vágólapra másolva", "project.tasks.priority_areas": "Prioritást élvező területek", "project.tasks.status.ready": "Térképezhető", "project.tasks.status.mapped": "Érvényesítésre kész", @@ -575,9 +575,11 @@ "project.tasks.filter.readyToValidate": "Érvényesítésre kész", "project.tasks.filter.readyToMap": "Térképezhető", "project.tasks.filter.noTasksFound": "Nem található feladat.", - "project.tasks.readComments": "", + "project.tasks.readComments": "Kérjük, ellenőrizze az előzmények fület az idevágó megjegyzésekért.", "project.tasks.action.completion": "Befejezés", "project.tasks.action.history": "Előzmények", + "project.tasks.history.comments": "Megjegyzések", + "project.tasks.history.stateChanges": "", "project.tasks.action.finish_mapping.title": "Miután befejezte a térképezést", "project.tasks.action.instructions.select_task": "Jelölje ki az alábbi beállítások közül azt, amelyik illeszkedik a szerkesztési állapotához", "project.input.placeholder.write_comment": "Megjegyzés írása", @@ -604,9 +606,9 @@ "project.tasks.action.tasks_map": "Feladatok térképe", "project.tasks.action.submit_task": "Feladat beküldése", "project.tasks.action.submit_tasks": "Feladatok beküldése", - "project.tasks.history.title": "", + "project.tasks.history.title": "{n} feladat", "project.tasks.history.unavailable": "A feladat nem érhető el", - "project.tasks.history.split.description": "", + "project.tasks.history.split.description": "A(z) {id} feladat fel lett osztva, az előzményei pedig már nem állnak rendelkezésre", "project.tasks.activity.data.links": "Feladat adatai", "project.tasks.activity.project_id": "#{id} projekt", "project.tasks.activity.overpass.download": "Letöltés az Overpassról", @@ -634,11 +636,11 @@ "project.level.advanced": "Haladó", "project.level.intermediate": "Középhaladó", "project.level.beginner": "Kezdő", - "project.level.new_users": "", - "project.contributions.stats": "", - "project.contributions.user.select.mapped": "", - "project.contributions.user.select.validated": "", - "project.contributions.user.select.all": "", + "project.level.new_users": "Új felhasználók", + "project.contributions.stats": "Statisztika", + "project.contributions.user.select.mapped": "{username} által feltérképezett feladatok kijelölése", + "project.contributions.user.select.validated": "{username} által érvényesített feladatok kijelölése", + "project.contributions.user.select.all": "{username} által feltérképezett vagy érvényesített összes feladat kijelölése", "project.permissions.error.title": "Nem áll készen arra, hogy ezen a munkán dolgozzék…", "project.permissions.error.userLevelToValidate": "Ezt a projektet csak a középhaladó vagy haladó szintű felhasználó érvényesítheti.", "project.permissions.error.userLevelToMap": "Ezt a projektet csak a középhaladó vagy haladó szintű felhasználó szerkesztheti.", @@ -653,7 +655,7 @@ "management.teams.mapping": "Térképező csoportok", "management.teams.validation": "Érvényesítő csoportok", "management.teams.members": "Csoporttagok", - "management.teams.members.send_message": "", + "management.teams.members.send_message": "Csoportüzenetek", "management.teams.members.send_message.button": "Küldés", "management.teams.members.send_message.subject": "Tárgy", "management.teams.join_requests": "Csatlakozási kérések", @@ -719,8 +721,8 @@ "user.gender.male": "Férfi", "user.gender.preferNotToSay": "Inkább nem árulom el", "user.gender.selfDescribe": "Inkább magam írom le:", - "user.slack": "", - "user.personalInfo.error": "", + "user.slack": "Felhasználónév itt: {org} Slack", + "user.personalInfo.error": "Csak a felhasználónevét írja be, ne az URL-t.", "user.form.save": "Mentés", "user.settings.title": "Beállítások", "user.notifications.title": "Értesítések", @@ -733,17 +735,17 @@ "user.settings.language.description": "Adja meg a kívánt nyelvet. Ez a Tasking Managerben látható térképek nyelvét is befolyásolja.", "user.settings.become_validator": "Legyen érvényesítő", "user.settings.become_validator.description": "Az érvényesítők ellenőrzik a befejezett térképszerkesztések minőségét, és visszajelzést adnak a térképezőknek arról, hogyan tudnak fejlődni. Ha Ön tapasztalt térképező, jelentkezzék érvényesítőnek.", - "user.notifications.mentions": "", - "user.notifications.mentions.description": "", - "user.notifications.teams": "", - "user.notifications.teams.description": "", + "user.notifications.mentions": "Említések e-mailben", + "user.notifications.mentions.description": "Minden alkalommal kap egy e-mailt arról, ha a felhasználónevét megemlítik egy megjegyzésben", + "user.notifications.teams": "Csoportbejelentések e-mailben", + "user.notifications.teams.description": "A csoportkezelők bejelentéseit megkapja e-mailben.", "user.notifications.projects": "Projekt frissítései", - "user.notifications.tasks": "", + "user.notifications.tasks": "Feladatérvényesítések e-mailben", "user.settings.required": "Szükséges mezők", "user.notifications.projects.description": "Értesítést kap, ha egy Ön által is szerkesztett projekt halad.", - "user.notifications.task.description": "", + "user.notifications.task.description": "Kap egy e-mailt arról, ha egy Ön által is szerkesztett feladatot érvényesítenek.", "user.notifications.comments": "Megjegyzések", - "user.notifications.comments.description": "", + "user.notifications.comments.description": "Minden alkalommal értesítést kap arról, ha valaki megjegyzést fűz egy olyan projekthez vagy feladathoz, amelyen Ön is dolgozott.", "user.settings.become_validator.button": "Tanulás", "user.welcome.title": "Isten hozta a Tasking Manager feladatkezelőben!", "user.interests.update.success": "Érdeklődési körök sikeresen frissítve.", @@ -794,24 +796,24 @@ "users.detail.loading": "betöltés", "users.detail.contributionTimelineTitle": "Szerkesztési idővonal", "users.detail.projectsTitle": "Projektek", - "users.detail.countries": "", + "users.detail.countries": "Országok", "users.detail.timeSpentMapping": "Térképezéssel töltött idő", "users.detail.buildingsMapped": "Térképre tett épületek", "users.detail.roadMapped": "Térképre tett út (km)", "users.detail.poiMapped": "Térképre tett érdekes pontok (POI-k)", "users.detail.waterwaysMapped": "Térképre tett vízfolyások", - "users.detail.tasksMapped": "", - "users.detail.you": "", - "users.detail.tasksValidated": "", - "users.detail.invalidated": "", + "users.detail.tasksMapped": "{user} térképezte", + "users.detail.you": "Ön", + "users.detail.tasksValidated": "{user} érvényesítette", + "users.detail.invalidated": "Alaposabban feltérképezendő", "users.detail.validated": "Érvényesítve", "users.detail.finished": "Kész", "users.detail.topProjectsMappedTitle": "A legtöbbet szerkesztett 5 projekt", - "users.detail.topProjectsMapped.error": "", + "users.detail.topProjectsMapped.error": "Egyelőre nincs térképezett projekt.", "users.detail.topCausesTitle": "A legtöbbet szerkesztett ügyek", - "users.detail.projects.noData": "", + "users.detail.projects.noData": "Nem áll rendelkezésre információ, mert eddig egyetlen projekt sincs feltérképezve.", "users.detail.editsTitle": "Szerkesztések számokban", - "users.detail.edits.error": "", + "users.detail.edits.error": "Még nincs megjeleníthető adat. Az OpenStreetMap szerkesztési statisztikái egy órás késéssel frissülnek.", "users.detail.topCountriesTitle": "A legtöbbet térképezett 5 ország", "users.detail.tasks": "feladatok", "users.detail.heatmapNoContribution": "Nincs szerkesztés", @@ -821,13 +823,13 @@ "users.detail.heatmapLegendLess": "kevesebb", "users.detail.delay_popup": "Ezek a statisztikák komoly számításokat igényelnek, és a változások körülbelül egy óra késéssel jelennek meg.", "users.detail.teams": "Csoportok", - "error.page.title": "", - "error.page.description": "", - "error.page.link": "", + "error.page.title": "Hiba történt", + "error.page.description": "Valami nem működött jól…", + "error.page.link": "Vissza", "notFound.page.title": "Az oldal nem található", "notFound.project.title": "A(z) {id} projekt nem található", "notFound.lead": "Ellenőrizze az URL-t vagy jelentse ezt a hibát.", - "project.stats.timeline": "", + "project.stats.timeline": "Projekt idővonala", "management.forbiddenAccess.title": "Nem férhet hozzá a kezelési felülethez.", "teamsAndOrgs.management.project.forbidden": "Nem szerkesztheti ezt a projektet.", "teamsAndOrgs.management.team.forbidden": "Nincs jogosultsága a csoport szerkesztéséhez.", @@ -844,7 +846,7 @@ "teamsAndOrgs.management.button.cancel_request": "Kérés törlése", "teamsAndOrgs.management.button.leave_team": "Csoport elhagyása", "teamsAndOrgs.management.button.cancel": "Mégse", - "teamsAndOrgs.management.organisation.manage.error": "", + "teamsAndOrgs.management.organisation.manage.error": "Ön nem kezelője ennek a szervezetnek, ezért nem szerkesztheti.", "teamsAndOrgs.management.organisation.manage": "Szervezet kezelése", "teamsAndOrgs.management.team.manage": "Csoport kezelése", "teamsAndOrgs.management.campaign.manage": "Kampány kezelése", @@ -867,7 +869,7 @@ "EmailVerification.status.verified.explanation": "Köszönjük, hogy megadta e-mail címét.", "EmailVerification.status.verified.explanation.extraLine": "Mostantól folyamatosan tájékoztatni fogjuk arról, hogy a Tasking Managerrel történő térképezéssel hogyan teheti jobbá a világot. Értesítési beállításait testre szabhatja itt: {link}.", "pages.about.title": "Névjegy", - "pages.about.intro": "", + "pages.about.intro": "A színfalak mögött minden nap fáradhatatlanul dolgozik egy globális közösség, hogy elkészítse a világ teljesebb térképét. A munka eredménye nyílt adat, és bárki felhasználhatja. A térinformatikai adatokhoz való egyetemes hozzáférés jelentősen megváltoztatja azt, hogy az emberek hogyan használják a térképeket és mit építenek velük.", "pages.learn.title": "Tanulás", "pages.learn.pages": "Tanulási oldalak", "pages.learn.map.title": "Térképezés tanulása", @@ -896,21 +898,21 @@ "pages.learn.videos.map_buildings.title": "Feladat kiválasztása & épülettérképezés", "pages.learn.videos.map_buildings.description": "Tanulja meg, hogyan kell épületeket térképezni az OpenStreetMapben.", "pages.learn.validate.video.title": "Hogyan érvényesítsünk?", - "pages.learn.validate.video.description": "", - "pages.learn.validate.training.video.title": "", - "pages.learn.validate.training.video.description": "", + "pages.learn.validate.video.description": "Tudnivalók a projektek érvényesítésének megkezdéséről a Tasking Manager feladatkezelőben.", + "pages.learn.validate.training.video.title": "Érvényesítő képzés", + "pages.learn.validate.training.video.description": "Merüljön el az érvényesítés titkaiban ezzel a képzéssel, amely speciális koncepciókat és a JOSM szerkesztőt tartalmaz.", "pages.learn.validate_title": "Érvényesítés tanulása", "pages.learn.validate.intro": "A folyamatnak fontos része az érvényesítés. Magabiztosságot kíván a térképkészítői képességek terén, valamint hajlandóságot arra, hogy az újabb térképészeknek segítsen, őket kísérje és tanácsokat adjon nekik.", "pages.learn.validate.description": "Az OpenStreetMapre felrajzolt és az egész világon felhasznált adatok minőségének biztosításához fontos lépés, hogy a feltérképezett objektumot egy második, harmadik vagy negyedik szempár is lássa.", "pages.learn.validate.steps.identify.title": "Mérlegelje, hogy az érvényesítővé válás az Ön számára megfelelő-e", "pages.learn.validate.steps.identify.description": "Az érvényesítés türelmet és minden részletre kiterjedő figyelmet igényel. Bizonyos OpenStreetMap-térképezői tapasztalat elengedhetetlen, de nem érezze azt, hogy már az induláshoz is szakértőnek kell lennie.", "pages.learn.validate.steps.build.title": "Fejlessze készségeit", - "pages.learn.validate.steps.build.description": "", + "pages.learn.validate.steps.build.description": "A projektek érvényesítéséhez elengedhetetlen a képzett térképésszé válás. Gyűjtse össze tapasztalatait mindenféle elem feltérképezésében. Győződjön meg róla, hogy magabiztosan használja a(z) {taggingLink} alkalmazást. Végül ismerkedjék meg a JOSM-mal, amely az OpenStreetMap testreszabható szerkesztője, és számos eszközzel és bővítménnyel teszi könnyebbé a térképezést és az érvényesítést.", "pages.learn.validate.steps.collaborate.title": "Együttműködés a közösség részeként", "pages.learn.validate.steps.collaborate.description": "Minden érvényesítő más technikát használ az érvényesítéshez. Csatlakozzék a beszélgetéshez a {mailingListLink} vagy a {forumLink} oldalon. Bővítse az Ön által hasznosnak ítélt forrásokat, így visszaadhat valamit a közösségnek! ", - "pages.learn.validate.mailing_lists": "", - "pages.learn.validate.forum": "", - "pages.learn.validate.tagging_schema": "", + "pages.learn.validate.mailing_lists": "levelezőlisták", + "pages.learn.validate.forum": "fórum", + "pages.learn.validate.tagging_schema": "OpenStreetMap címkézési séma", "pages.learn.validate.note": "Miután képzett közösségi térképezővé vált az OpenStreetMapben, megbizonyosodhat arról, hogy készen áll az érvényesítővé válásra. Jelentkezhet néhány ellenőrző csoportba, vagy kereshet egy projektet, amelyet szívesen érvényesítene. Csatlakozzék a csoporthoz, amely engedélyt ad a feladatok érvényesítésére. Innentől ez lehetőség arra, hogy megfeleljen a megelőlegezett bizalomnak, és más térképészeknek is segítsen az útjukon", "pages.learn.manage_title": "Kezelés tanulása", "pages.learn.manage.intro": "A térképezési erőfeszítések szervezésének lehetősége hatalmas lehetőség a gyors és összehangolt adatgyűjtésre. A siker érdekében képesnek kell lennie arra, hogy motiválja a térképészek közösségét.", @@ -949,10 +951,10 @@ "pages.about.floss.description": "A Tasking Manager ingyenes és nyílt forráskódú szoftver, amelyet a {hotLink} fejlesztett ki. Az alkalmazás kódja a {code} webhelyen érhető el, ahol bejelenthet problémákat és közreműködhet a szerkesztésben.", "pages.edit_project.title": "Projekt szerkesztése", "pages.edit_project.buttons.save": "Mentés", - "pages.edit_project.buttons.access_project": "", - "pages.edit_project.buttons.project_page": "", - "pages.edit_project.buttons.task_selection_page": "", - "pages.edit_project.buttons.project_stats": "", + "pages.edit_project.buttons.access_project": "Projekt elérése", + "pages.edit_project.buttons.project_page": "Projektoldal", + "pages.edit_project.buttons.task_selection_page": "Feladatkijelölő oldal", + "pages.edit_project.buttons.project_stats": "Projektstatisztika", "pages.edit_project.actions.update.success": "A projekt sikeresen frissült.", "pages.edit_project.actions.update.error": "A projekt mentése kiszolgálóhiba miatt nem sikerült. Kérjük, próbálja újra később, vagy lépjen kapcsolatba a rendszergazdával, ha a probléma továbbra is fennáll.", "pages.edit_project.actions.missing_fields": "A projekt mentése nem sikerült, mert az alábbi kötelező mezőkre vonatkozó információkat meg kell adnia:", @@ -966,5 +968,5 @@ "pages.edit_project.sections.settings": "Beállítások", "pages.edit_project.sections.actions": "Műveletek", "pages.edit_project.sections.custom_editor": "Egyedi szerkesztő", - "pages.create_campaign.duplicate": "" + "pages.create_campaign.duplicate": "Már létezik azonos nevű kampány" } \ No newline at end of file diff --git a/frontend/src/locales/id.json b/frontend/src/locales/id.json index af29aa3099..f729b5375b 100644 --- a/frontend/src/locales/id.json +++ b/frontend/src/locales/id.json @@ -578,6 +578,8 @@ "project.tasks.readComments": "", "project.tasks.action.completion": "Sudah dipetakan", "project.tasks.action.history": "Riwayat", + "project.tasks.history.comments": "Komentar", + "project.tasks.history.stateChanges": "", "project.tasks.action.finish_mapping.title": "Ketika Anda selesai memetakan", "project.tasks.action.instructions.select_task": "Pilih salah satu dari opsi di bawah yang sesuai dengan status pengeditan Anda", "project.input.placeholder.write_comment": "Tulis komentar", diff --git a/frontend/src/locales/it.json b/frontend/src/locales/it.json index d7dd562755..6bb6e3073a 100644 --- a/frontend/src/locales/it.json +++ b/frontend/src/locales/it.json @@ -578,6 +578,8 @@ "project.tasks.readComments": "", "project.tasks.action.completion": "Completamento", "project.tasks.action.history": "Storico", + "project.tasks.history.comments": "Commenti", + "project.tasks.history.stateChanges": "Attività", "project.tasks.action.finish_mapping.title": "Quando hai finito la mappatura", "project.tasks.action.instructions.select_task": "", "project.input.placeholder.write_comment": "Scrivi un commento", diff --git a/frontend/src/locales/ja.json b/frontend/src/locales/ja.json index 84ac48b86c..db8cf7f0a4 100644 --- a/frontend/src/locales/ja.json +++ b/frontend/src/locales/ja.json @@ -578,6 +578,8 @@ "project.tasks.readComments": "", "project.tasks.action.completion": "完了", "project.tasks.action.history": "履歴", + "project.tasks.history.comments": "コメント", + "project.tasks.history.stateChanges": "", "project.tasks.action.finish_mapping.title": "マッピングが完了したら、", "project.tasks.action.instructions.select_task": "編集のステータスに一致するオプションを 1 つ選択します。", "project.input.placeholder.write_comment": "コメントを書く", diff --git a/frontend/src/locales/mg.json b/frontend/src/locales/mg.json index b371801809..a100cad407 100644 --- a/frontend/src/locales/mg.json +++ b/frontend/src/locales/mg.json @@ -578,6 +578,8 @@ "project.tasks.readComments": "", "project.tasks.action.completion": "", "project.tasks.action.history": "Tahiry", + "project.tasks.history.comments": "", + "project.tasks.history.stateChanges": "", "project.tasks.action.finish_mapping.title": "", "project.tasks.action.instructions.select_task": "", "project.input.placeholder.write_comment": "", diff --git a/frontend/src/locales/ml.json b/frontend/src/locales/ml.json index 1f8fee6793..16707266ca 100644 --- a/frontend/src/locales/ml.json +++ b/frontend/src/locales/ml.json @@ -578,6 +578,8 @@ "project.tasks.readComments": "", "project.tasks.action.completion": "", "project.tasks.action.history": "", + "project.tasks.history.comments": "", + "project.tasks.history.stateChanges": "", "project.tasks.action.finish_mapping.title": "", "project.tasks.action.instructions.select_task": "", "project.input.placeholder.write_comment": "", diff --git a/frontend/src/locales/nl_NL.json b/frontend/src/locales/nl_NL.json index 32aba4edfe..980d25367d 100644 --- a/frontend/src/locales/nl_NL.json +++ b/frontend/src/locales/nl_NL.json @@ -578,6 +578,8 @@ "project.tasks.readComments": "Bekijk de tab Geschiedenis voor relevante opmerkingen.", "project.tasks.action.completion": "Voltooiïng", "project.tasks.action.history": "Geschiedenis", + "project.tasks.history.comments": "Opmerkingen", + "project.tasks.history.stateChanges": "", "project.tasks.action.finish_mapping.title": "Als u eenmaal gereed bent met in kaart brengen", "project.tasks.action.instructions.select_task": "Selecteer een van de opties hieronder die overeenkomt met uw status voor bewerken", "project.input.placeholder.write_comment": "Plaats een opmerking", diff --git a/frontend/src/locales/pt.json b/frontend/src/locales/pt.json index 19330d53a3..9423c5f450 100644 --- a/frontend/src/locales/pt.json +++ b/frontend/src/locales/pt.json @@ -578,6 +578,8 @@ "project.tasks.readComments": "", "project.tasks.action.completion": "Finalização", "project.tasks.action.history": "Histórico", + "project.tasks.history.comments": "Comentários", + "project.tasks.history.stateChanges": "", "project.tasks.action.finish_mapping.title": "Quando terminares de mapear", "project.tasks.action.instructions.select_task": "Seleciona uma das opções em baixo que corresponda ao teu estado de edição", "project.input.placeholder.write_comment": "Escrever um comentário", diff --git a/frontend/src/locales/pt_BR.json b/frontend/src/locales/pt_BR.json index b00e7ce585..51b4d4a3a1 100644 --- a/frontend/src/locales/pt_BR.json +++ b/frontend/src/locales/pt_BR.json @@ -578,6 +578,8 @@ "project.tasks.readComments": "Por favor, verifique a guia Histórico e leia os comentários.", "project.tasks.action.completion": "Atualização", "project.tasks.action.history": "Histórico", + "project.tasks.history.comments": "Comentários", + "project.tasks.history.stateChanges": "Atividades", "project.tasks.action.finish_mapping.title": "Depois de terminar o mapeamento", "project.tasks.action.instructions.select_task": "Selecione uma das opções abaixo que corresponda ao seu status de edição", "project.input.placeholder.write_comment": "Escreva um cometário", diff --git a/frontend/src/locales/sv.json b/frontend/src/locales/sv.json index 8da9132ed6..8b405fa32c 100644 --- a/frontend/src/locales/sv.json +++ b/frontend/src/locales/sv.json @@ -578,6 +578,8 @@ "project.tasks.readComments": "", "project.tasks.action.completion": "Slutförande", "project.tasks.action.history": "Historia", + "project.tasks.history.comments": "Kommentarer", + "project.tasks.history.stateChanges": "", "project.tasks.action.finish_mapping.title": "När du är klar med kartläggningen", "project.tasks.action.instructions.select_task": "Välj ett av alternativen nedan som matchar din redigeringsstatus", "project.input.placeholder.write_comment": "Skriv en kommentar", diff --git a/frontend/src/locales/sw.json b/frontend/src/locales/sw.json index afff884555..9cc1e2bd94 100644 --- a/frontend/src/locales/sw.json +++ b/frontend/src/locales/sw.json @@ -578,6 +578,8 @@ "project.tasks.readComments": "", "project.tasks.action.completion": "Kukamilika", "project.tasks.action.history": "Historia", + "project.tasks.history.comments": "Maoni", + "project.tasks.history.stateChanges": "", "project.tasks.action.finish_mapping.title": "Mara tu utakapokua umemaliza kuchora ramani", "project.tasks.action.instructions.select_task": "Chagua inayoendana na hali yako ya uchoraji", "project.input.placeholder.write_comment": "", diff --git a/frontend/src/locales/tl.json b/frontend/src/locales/tl.json index 1f8fee6793..16707266ca 100644 --- a/frontend/src/locales/tl.json +++ b/frontend/src/locales/tl.json @@ -578,6 +578,8 @@ "project.tasks.readComments": "", "project.tasks.action.completion": "", "project.tasks.action.history": "", + "project.tasks.history.comments": "", + "project.tasks.history.stateChanges": "", "project.tasks.action.finish_mapping.title": "", "project.tasks.action.instructions.select_task": "", "project.input.placeholder.write_comment": "", diff --git a/frontend/src/locales/tr.json b/frontend/src/locales/tr.json index fd1ac28451..946c82f3cc 100644 --- a/frontend/src/locales/tr.json +++ b/frontend/src/locales/tr.json @@ -578,6 +578,8 @@ "project.tasks.readComments": "", "project.tasks.action.completion": "Tamamlanma", "project.tasks.action.history": "Geçmiş", + "project.tasks.history.comments": "Yorumlar", + "project.tasks.history.stateChanges": "", "project.tasks.action.finish_mapping.title": "Haritalamayı bitirdikten sonra", "project.tasks.action.instructions.select_task": "Düzenleme durumunuzla eşleşen seçeneklerden birini seçin", "project.input.placeholder.write_comment": "Bir yorum yaz", diff --git a/frontend/src/locales/uk.json b/frontend/src/locales/uk.json index 16dc8468f2..8834f8b9a3 100644 --- a/frontend/src/locales/uk.json +++ b/frontend/src/locales/uk.json @@ -281,7 +281,7 @@ "project.detail.cards.mapthroughosm.description": "Якщо ви новачок в мапінгу, ми рекомендуємо вам ознайомитись зі сторінкою Навчитись перед початком.", "project.detail.cards.submityourwork.description": "Надсилання результатів ваших зусиль дуже важливе, щоб бути впевненим що вони збережені.", "project.detail.sections.overview": "Огляд", - "project.detail.sections.overview.dueDate": "", + "project.detail.sections.overview.dueDate": "Бажана дата завершення проєкту", "project.detail.sections.description": "Опис", "project.detail.sections.questionsAndComments": "Питання та коментарі", "project.detail.sections.contributions": "Участь", @@ -444,9 +444,9 @@ "project.nav.showMapToggle": "Показати мапу", "project.nav.listViewToggle": "Список", "project.navFilters.typesOfMapping": "Типи мапінгу", - "project.navFilters.action.map": "", - "project.navFilters.action.validate": "", - "project.navFilters.action.any": "", + "project.navFilters.action.map": "Проєкти для мапінгу", + "project.navFilters.action.validate": "Проєкти для перевірки", + "project.navFilters.action.any": "Всі проєкти", "project.navFilters.typesOfMapping.exactMatch": "Точний збіг", "project.navFilters.campaigns": "Всі кампанії", "project.navFilters.showAllXTags": "Показати {typeOfTag}", @@ -531,7 +531,7 @@ "project.editor.open_editor": "Відкрити редактор", "project.sidebar.show": "Показати бічну панель", "project.sidebar.hide": "Сховати бічну панель", - "project.sidebar.timeToUnlock": "", + "project.sidebar.timeToUnlock": "Час відведений на виконання цього завдання", "project.task": "Завдання", "project.tasks": "Завдання", "project.taskId": "Завдання #{id}", @@ -575,9 +575,11 @@ "project.tasks.filter.readyToValidate": "Готові для перевірки", "project.tasks.filter.readyToMap": "Доступні для мапінгу", "project.tasks.filter.noTasksFound": "Завдання не знайдені.", - "project.tasks.readComments": "", + "project.tasks.readComments": "Перегляньте розділ Історія, щоб ознайомитись з коментарями.", "project.tasks.action.completion": "Завершення", "project.tasks.action.history": "Історія", + "project.tasks.history.comments": "Коментарі", + "project.tasks.history.stateChanges": "", "project.tasks.action.finish_mapping.title": "Після того як ви закінчили мапити", "project.tasks.action.instructions.select_task": "Оберіть один з варіантів нижче, який відповідає стану ваших змін", "project.input.placeholder.write_comment": "Напишіть коментар", diff --git a/frontend/src/locales/zh_TW.json b/frontend/src/locales/zh_TW.json index b3ce4781a9..2ca9dd538b 100644 --- a/frontend/src/locales/zh_TW.json +++ b/frontend/src/locales/zh_TW.json @@ -578,6 +578,8 @@ "project.tasks.readComments": "", "project.tasks.action.completion": "", "project.tasks.action.history": "", + "project.tasks.history.comments": "備註", + "project.tasks.history.stateChanges": "", "project.tasks.action.finish_mapping.title": "", "project.tasks.action.instructions.select_task": "", "project.input.placeholder.write_comment": "", diff --git a/frontend/yarn.lock b/frontend/yarn.lock index 2374fd476c..4d834b98a0 100644 --- a/frontend/yarn.lock +++ b/frontend/yarn.lock @@ -1142,10 +1142,10 @@ dependencies: tslib "^2.0.1" -"@formatjs/intl-datetimeformat@3.2.0": - version "3.2.0" - resolved "https://registry.yarnpkg.com/@formatjs/intl-datetimeformat/-/intl-datetimeformat-3.2.0.tgz#a987988fb3dc6160dae4ddf63f478ec55b23a965" - integrity sha512-5tIvP8BoOjE/LpqiDRCVSppn4YAdgeipirnr+vbh0SfNU2Np6fTwavYkmxZZhsBTx3HC8KCYndDxDKI6Y3j61A== +"@formatjs/intl-datetimeformat@3.2.1": + version "3.2.1" + resolved "https://registry.yarnpkg.com/@formatjs/intl-datetimeformat/-/intl-datetimeformat-3.2.1.tgz#f20408cda0e932f2234ecb42fca1e90d2e75250d" + integrity sha512-teeUgUoieP0JjZYPWjJV72CoPQoukCMKGW1YUu00+TaHzZBNqVgPCdFJo2vgl1jKccOAT3VT79BHNEsR9DsBBQ== dependencies: "@formatjs/ecma402-abstract" "1.5.0" tslib "^2.0.1" @@ -1174,10 +1174,10 @@ "@formatjs/ecma402-abstract" "1.5.0" tslib "^2.0.1" -"@formatjs/intl-locale@^2.4.9": - version "2.4.9" - resolved "https://registry.yarnpkg.com/@formatjs/intl-locale/-/intl-locale-2.4.9.tgz#050a2ea824ffa16180aaf69df61224197cd19e5a" - integrity sha512-oa2Qtpd1bslxme52olgT+Ox5aCr6NuGrefvpDilpam5D2WwG882yLCXPRQCb6FcujhwfmsT16yb4eYjPHAGYsQ== +"@formatjs/intl-locale@^2.4.11": + version "2.4.11" + resolved "https://registry.yarnpkg.com/@formatjs/intl-locale/-/intl-locale-2.4.11.tgz#bd0f23d5c30410e9e7a336b9fbc44e502bcf190f" + integrity sha512-Rus5jUOHWKKX17ZbyNa8tjghMPc3WWXnC8SSqNWWtUIaPkkKvBEfKEcRivzrGEr56NyZa86dcsDzSUb8ldjcsA== dependencies: "@formatjs/ecma402-abstract" "1.5.0" "@formatjs/intl-getcanonicallocales" "1.5.3" @@ -1219,19 +1219,19 @@ dependencies: emojis-list "^3.0.0" -"@formatjs/intl@1.4.11": - version "1.4.11" - resolved "https://registry.yarnpkg.com/@formatjs/intl/-/intl-1.4.11.tgz#6fa19a5b9be9daca36ee511c286cd310529776c0" - integrity sha512-fzAgZhJFpWi3Lc+j5WFIRMiJSt3AuaMHRUHl+eixmBIRqVXUoCbLvAqIs6b+fl/B6pXcVgRPY5HcPFUG2ApCGw== +"@formatjs/intl@1.4.13": + version "1.4.13" + resolved "https://registry.yarnpkg.com/@formatjs/intl/-/intl-1.4.13.tgz#634e8e7d29385ade5cf7e7c0ba8aae63e585cba0" + integrity sha512-GEWwkaNFnskOGGd6gq0Y0RetiH2iNnARXzQ+glR2RqU0xk00aS5KpwkEDo1hN9NaO9fRr9UDvzDoEu9foQFVmA== dependencies: "@formatjs/ecma402-abstract" "1.5.0" - "@formatjs/intl-datetimeformat" "3.2.0" + "@formatjs/intl-datetimeformat" "3.2.1" "@formatjs/intl-displaynames" "4.0.2" "@formatjs/intl-listformat" "5.0.2" "@formatjs/intl-relativetimeformat" "8.0.1" fast-memoize "^2.5.2" - intl-messageformat "9.3.20" - intl-messageformat-parser "6.0.18" + intl-messageformat "9.4.0" + intl-messageformat-parser "6.1.0" tslib "^2.0.1" "@formatjs/macro@^0.2.8": @@ -1685,79 +1685,79 @@ prop-types "^15.6.1" react-lifecycles-compat "^3.0.4" -"@sentry/browser@5.29.1": - version "5.29.1" - resolved "https://registry.yarnpkg.com/@sentry/browser/-/browser-5.29.1.tgz#f05f8da562dd54bc0fafac6235817e3a3b76d3b7" - integrity sha512-cVlXoQBJ64eNNkQuOB+bS6sK5KWV+Fw+ZYxT+XqjpeXkOPaxh8aeoi9CHz2DsFfbLV91P4AnXZEUdDl+7ktQNg== +"@sentry/browser@5.29.2": + version "5.29.2" + resolved "https://registry.yarnpkg.com/@sentry/browser/-/browser-5.29.2.tgz#51adb4005511b1a4a70e4571880fc6653d651f91" + integrity sha512-uxZ7y7rp85tJll+RZtXRhXPbnFnOaxZqJEv05vJlXBtBNLQtlczV5iCtU9mZRLVHDtmZ5VVKUV8IKXntEqqDpQ== dependencies: - "@sentry/core" "5.29.1" - "@sentry/types" "5.29.1" - "@sentry/utils" "5.29.1" + "@sentry/core" "5.29.2" + "@sentry/types" "5.29.2" + "@sentry/utils" "5.29.2" tslib "^1.9.3" -"@sentry/core@5.29.1": - version "5.29.1" - resolved "https://registry.yarnpkg.com/@sentry/core/-/core-5.29.1.tgz#c56cfb6747005413d194f4cfe9a5bbdf5d5e377f" - integrity sha512-SMybIx9IlswkJ7a61ez/zjdiMdAo51Adpo4nVrzke2k84U/t726/EbJj0FJ4vVgsGdLCvSSZ6v7BQlINcwWupg== +"@sentry/core@5.29.2": + version "5.29.2" + resolved "https://registry.yarnpkg.com/@sentry/core/-/core-5.29.2.tgz#9e05fe197234161d57aabaf52fab336a7c520d81" + integrity sha512-7WYkoxB5IdlNEbwOwqSU64erUKH4laavPsM0/yQ+jojM76ErxlgEF0u//p5WaLPRzh3iDSt6BH+9TL45oNZeZw== dependencies: - "@sentry/hub" "5.29.1" - "@sentry/minimal" "5.29.1" - "@sentry/types" "5.29.1" - "@sentry/utils" "5.29.1" + "@sentry/hub" "5.29.2" + "@sentry/minimal" "5.29.2" + "@sentry/types" "5.29.2" + "@sentry/utils" "5.29.2" tslib "^1.9.3" -"@sentry/hub@5.29.1": - version "5.29.1" - resolved "https://registry.yarnpkg.com/@sentry/hub/-/hub-5.29.1.tgz#64c738af308c909fe8fcf7c5da9e0685343385bb" - integrity sha512-Ig/vqCiJcsnGaWajkWRFH+5IKeo50ZtsjM0zJb8IfTadLjQuF/gTQst0aXO3l6q4HzveeGsELY8jlm6WVcq9Aw== +"@sentry/hub@5.29.2": + version "5.29.2" + resolved "https://registry.yarnpkg.com/@sentry/hub/-/hub-5.29.2.tgz#208f10fe6674695575ad74182a1151f71d6df00a" + integrity sha512-LaAIo2hwUk9ykeh9RF0cwLy6IRw+DjEee8l1HfEaDFUM6TPGlNNGObMJNXb9/95jzWp7jWwOpQjoIE3jepdQJQ== dependencies: - "@sentry/types" "5.29.1" - "@sentry/utils" "5.29.1" + "@sentry/types" "5.29.2" + "@sentry/utils" "5.29.2" tslib "^1.9.3" -"@sentry/minimal@5.29.1": - version "5.29.1" - resolved "https://registry.yarnpkg.com/@sentry/minimal/-/minimal-5.29.1.tgz#0f1eab0eccc9d38cb0ff3b17b81dbf9c909cd383" - integrity sha512-lAa3+Duxum1qQvR0tKiBUsH6Ehit3g/vO53SqBib7YK3qdvIUWHacmkJvfz/AeSvVnpJ9bsBMCVRJNSVe8BPVA== +"@sentry/minimal@5.29.2": + version "5.29.2" + resolved "https://registry.yarnpkg.com/@sentry/minimal/-/minimal-5.29.2.tgz#420bebac8d03d30980fdb05c72d7b253d8aa541b" + integrity sha512-0aINSm8fGA1KyM7PavOBe1GDZDxrvnKt+oFnU0L+bTcw8Lr+of+v6Kwd97rkLRNOLw621xP076dL/7LSIzMuhw== dependencies: - "@sentry/hub" "5.29.1" - "@sentry/types" "5.29.1" + "@sentry/hub" "5.29.2" + "@sentry/types" "5.29.2" tslib "^1.9.3" -"@sentry/react@^5.29.1": - version "5.29.1" - resolved "https://registry.yarnpkg.com/@sentry/react/-/react-5.29.1.tgz#2c6283c09eb84397b9c8351fff62a6cd3abfa21b" - integrity sha512-sAc3AxqMaturNJvw6anHkhPQ9MRXU8KzisYicKOWakqVLKl/08hrfwSuB783slKdc5vXmWnyw2g/ulzqEr7QFg== +"@sentry/react@^5.29.2": + version "5.29.2" + resolved "https://registry.yarnpkg.com/@sentry/react/-/react-5.29.2.tgz#e0e2055db6f9c7a3957630e726b23d6a0f2d12f2" + integrity sha512-Fvh4l6/wrnO3FWqte7lPUsuWE5o6t3FHwZqVINgCIabpwPMorvOVzm/gwG7uzhuCoyNTP28svR670sl4BnRuTg== dependencies: - "@sentry/browser" "5.29.1" - "@sentry/minimal" "5.29.1" - "@sentry/types" "5.29.1" - "@sentry/utils" "5.29.1" + "@sentry/browser" "5.29.2" + "@sentry/minimal" "5.29.2" + "@sentry/types" "5.29.2" + "@sentry/utils" "5.29.2" hoist-non-react-statics "^3.3.2" tslib "^1.9.3" -"@sentry/tracing@^5.29.1": - version "5.29.1" - resolved "https://registry.yarnpkg.com/@sentry/tracing/-/tracing-5.29.1.tgz#ce97fa749bd80534bf084479fd60ba64043a19f0" - integrity sha512-iWfPtDhf5X7N9R5WB3vX/wlyFVsGG8iMx4hLIP+6bj8EcPYnZfeP6Sxn65a0ACT/FKv7SMBoZ1qPDzmvk0bviw== +"@sentry/tracing@^5.29.2": + version "5.29.2" + resolved "https://registry.yarnpkg.com/@sentry/tracing/-/tracing-5.29.2.tgz#6012788547d2ab7893799d82c4941bda145dcd47" + integrity sha512-iumYbVRpvoU3BUuIooxibydeaOOjl5ysc+mzsqhRs2NGW/C3uKAsFXdvyNfqt3bxtRQwJEhwJByLP2u3pLThpw== dependencies: - "@sentry/hub" "5.29.1" - "@sentry/minimal" "5.29.1" - "@sentry/types" "5.29.1" - "@sentry/utils" "5.29.1" + "@sentry/hub" "5.29.2" + "@sentry/minimal" "5.29.2" + "@sentry/types" "5.29.2" + "@sentry/utils" "5.29.2" tslib "^1.9.3" -"@sentry/types@5.29.1": - version "5.29.1" - resolved "https://registry.yarnpkg.com/@sentry/types/-/types-5.29.1.tgz#ecc65909ac72d4f8024e26a64129e09d14a0a67f" - integrity sha512-QXZBA1gJheMYTGFV+UUhr3+jKpGZqPx8kEJABs8htlKabCDJlEeoFNmeqPuVxCxukoy5ZaaHACoE+2Z87T0g2A== +"@sentry/types@5.29.2": + version "5.29.2" + resolved "https://registry.yarnpkg.com/@sentry/types/-/types-5.29.2.tgz#ac87383df1222c2d9b9f8f9ed7a6b86ea41a098a" + integrity sha512-dM9wgt8wy4WRty75QkqQgrw9FV9F+BOMfmc0iaX13Qos7i6Qs2Q0dxtJ83SoR4YGtW8URaHzlDtWlGs5egBiMA== -"@sentry/utils@5.29.1": - version "5.29.1" - resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-5.29.1.tgz#889498950f6bde8ce054186096a3c95c0afb0fe4" - integrity sha512-FOhWxASvIQREAlSuWf3Vmb4uIkG0fmRdHkULpuv5dFmrMX2PpudYAppQtS8K9V4BYxFy6KFdUht1Qz5zYTecMw== +"@sentry/utils@5.29.2": + version "5.29.2" + resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-5.29.2.tgz#99a5cdda2ea19d34a41932f138d470adcb3ee673" + integrity sha512-nEwQIDjtFkeE4k6yIk4Ka5XjGRklNLThWLs2xfXlL7uwrYOH2B9UBBOOIRUraBm/g/Xrra3xsam/kRxuiwtXZQ== dependencies: - "@sentry/types" "5.29.1" + "@sentry/types" "5.29.2" tslib "^1.9.3" "@svgr/babel-plugin-add-jsx-attribute@^4.2.0": @@ -2942,10 +2942,10 @@ aws4@^1.8.0: resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.9.1.tgz#7e33d8f7d449b3f673cd72deb9abdc552dbe528e" integrity sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug== -axios@^0.21.0: - version "0.21.0" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.0.tgz#26df088803a2350dff2c27f96fef99fe49442aca" - integrity sha512-fmkJBknJKoZwem3/IKSSLpkdNXZeBu5Q7GA/aRsr2btgrptmSCxi2oFjZHqGdK9DoTil9PIHlPIZw2EcRJXRvw== +axios@^0.21.1: + version "0.21.1" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.1.tgz#22563481962f4d6bde9a76d516ef0e5d3c09b2b8" + integrity sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA== dependencies: follow-redirects "^1.10.0" @@ -6602,10 +6602,10 @@ internal-slot@^1.0.2: has "^1.0.3" side-channel "^1.0.2" -intl-messageformat-parser@6.0.18: - version "6.0.18" - resolved "https://registry.yarnpkg.com/intl-messageformat-parser/-/intl-messageformat-parser-6.0.18.tgz#bf2855b82b0749e1f34e452f0a15d08d3277c8c7" - integrity sha512-vLjACEunfi5uSUCWFLOR4PXQ9DGLpED3tM7o9zsYsOvjl0VIheoxyG0WZXnsnhn+S+Zu158M6CkuHXeNZfKRRg== +intl-messageformat-parser@6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/intl-messageformat-parser/-/intl-messageformat-parser-6.1.0.tgz#134328151c41592d9e1a61f5c6779c06c8eb3f08" + integrity sha512-nPPh2kOrKqlh4D9bCAetxkrUiq5/6S1exPQyg52Ihusy0ECNGhZ0Qmq8pFRK9gWIuiQPVmLA7eSNp8diC2tX3w== dependencies: "@formatjs/ecma402-abstract" "1.5.0" tslib "^2.0.1" @@ -6617,13 +6617,13 @@ intl-messageformat-parser@^3.6.4: dependencies: "@formatjs/intl-unified-numberformat" "^3.2.0" -intl-messageformat@9.3.20: - version "9.3.20" - resolved "https://registry.yarnpkg.com/intl-messageformat/-/intl-messageformat-9.3.20.tgz#87ec7e5f7a0f5d13157dc8bed88fe37b4c57b2a1" - integrity sha512-jmpjYHE076J/0CIofrPhtUC4LfmsAhuv4JMQxytl2KJd2bim+3+gQJh+Z1vyHUzcj4fIHdt388ZGchb8f0NwOA== +intl-messageformat@9.4.0: + version "9.4.0" + resolved "https://registry.yarnpkg.com/intl-messageformat/-/intl-messageformat-9.4.0.tgz#b9c9c00a6e88a8f1ffd9ee3e54340c9dfb765d13" + integrity sha512-zcF8OWG52dCwwePkykqqv7F038vCaixPR14Lr3YUFc9jRdGoCazl2dTE3BwBaeHr3pG/qYb6A/mwMKrj4LFt9Q== dependencies: fast-memoize "^2.5.2" - intl-messageformat-parser "6.0.18" + intl-messageformat-parser "6.1.0" tslib "^2.0.1" invariant@^2.2.2, invariant@^2.2.3, invariant@^2.2.4: @@ -10450,21 +10450,21 @@ react-input-autosize@^2.2.2: dependencies: prop-types "^15.5.8" -react-intl@^5.10.7: - version "5.10.7" - resolved "https://registry.yarnpkg.com/react-intl/-/react-intl-5.10.7.tgz#2f163122bcbf3938fa736026d05bfc9aade05693" - integrity sha512-wbpQ7RPvlquxYaUBNG9E5lwufc/Ldq7/iJzIGwMG2eh7bag39AlbPlG+2ZfO31xfCo9TU4nG+X6t12I7d+Kdhg== +react-intl@^5.10.9: + version "5.10.9" + resolved "https://registry.yarnpkg.com/react-intl/-/react-intl-5.10.9.tgz#cab8d9445059d3544cffc762c3e6af47ef9bc8ad" + integrity sha512-DfUF4YMlZqaNRfgfvf46AcXxz7pDi7pkxRbQoimUJWEkjep+6QYLlH7ogypysGD1Sl5kbWi7b69bbG7wPqt1vA== dependencies: "@formatjs/ecma402-abstract" "1.5.0" - "@formatjs/intl" "1.4.11" + "@formatjs/intl" "1.4.13" "@formatjs/intl-displaynames" "4.0.2" "@formatjs/intl-listformat" "5.0.2" "@formatjs/intl-relativetimeformat" "8.0.1" "@types/hoist-non-react-statics" "^3.3.1" fast-memoize "^2.5.2" hoist-non-react-statics "^3.3.2" - intl-messageformat "9.3.20" - intl-messageformat-parser "6.0.18" + intl-messageformat "9.4.0" + intl-messageformat-parser "6.1.0" shallow-equal "^1.2.1" tslib "^2.0.1" From 5159a79f55dcc0fdc2f3fc3baf550b751c23367a Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Sun, 27 Dec 2020 09:59:09 +0000 Subject: [PATCH 08/23] Bump msw from 0.24.2 to 0.24.3 in /frontend Bumps [msw](https://github.com/mswjs/msw) from 0.24.2 to 0.24.3. - [Release notes](https://github.com/mswjs/msw/releases) - [Changelog](https://github.com/mswjs/msw/blob/master/CHANGELOG.md) - [Commits](https://github.com/mswjs/msw/compare/v0.24.2...v0.24.3) Signed-off-by: dependabot-preview[bot] --- frontend/package.json | 2 +- frontend/yarn.lock | 18 +++++++++--------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/frontend/package.json b/frontend/package.json index 434b5a2f03..d5a792455d 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -99,7 +99,7 @@ "@testing-library/react-hooks": "^3.7.0", "combine-react-intl-messages": "^4.0.0", "jest-canvas-mock": "^2.3.0", - "msw": "^0.24.2", + "msw": "^0.24.3", "prettier": "^2.2.1", "react-test-renderer": "^16.14.0" }, diff --git a/frontend/yarn.lock b/frontend/yarn.lock index 4d834b98a0..e7521d0998 100644 --- a/frontend/yarn.lock +++ b/frontend/yarn.lock @@ -8385,10 +8385,10 @@ ms@^2.1.1: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== -msw@^0.24.2: - version "0.24.2" - resolved "https://registry.yarnpkg.com/msw/-/msw-0.24.2.tgz#6c630400e0be7f5ea5ad6334af5806bac4d82977" - integrity sha512-lQubV+wer9Wa08sTxzEEzyxew+f8vQiOtXIKvy+hvrK+pD/G55NSqzzs6wkY3mHcsCVcPuac8Zssg2uvkvyREQ== +msw@^0.24.3: + version "0.24.3" + resolved "https://registry.yarnpkg.com/msw/-/msw-0.24.3.tgz#e18fc134a81be797575b1fffa2eedd44068ecb00" + integrity sha512-IdXMZtcvPDoloq/H2jD81YHPFABM7Nu6sfjWPJWDUWAzwE3d86qkGqTLq8aFKL8VPF8i3yuuw/B0GA6xfw6ptw== dependencies: "@open-draft/until" "^1.0.3" "@types/cookie" "^0.4.0" @@ -8401,7 +8401,7 @@ msw@^0.24.2: node-match-path "^0.6.0" node-request-interceptor "^0.5.3" statuses "^2.0.0" - yargs "^16.1.1" + yargs "^16.2.0" multicast-dns-service-types@^1.1.0: version "1.1.0" @@ -13352,10 +13352,10 @@ yargs@^13.3.0, yargs@^13.3.2: y18n "^4.0.0" yargs-parser "^13.1.2" -yargs@^16.1.1: - version "16.1.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.1.1.tgz#5a4a095bd1ca806b0a50d0c03611d38034d219a1" - integrity sha512-hAD1RcFP/wfgfxgMVswPE+z3tlPFtxG8/yWUrG2i17sTWGCGqWnxKcLTF4cUKDUK8fzokwsmO9H0TDkRbMHy8w== +yargs@^16.2.0: + version "16.2.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" + integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== dependencies: cliui "^7.0.2" escalade "^3.1.1" From bd3b916eedfba6456b8143e1cea7995ce753f824 Mon Sep 17 00:00:00 2001 From: Wille Marcel Date: Mon, 28 Dec 2020 07:51:15 -0300 Subject: [PATCH 09/23] add link to sustainability model FAQs --- frontend/src/locales/en.json | 2 ++ frontend/src/views/about.js | 15 +++++++++++++++ frontend/src/views/messages.js | 8 ++++++++ 3 files changed, 25 insertions(+) diff --git a/frontend/src/locales/en.json b/frontend/src/locales/en.json index c5d8742e49..3c6b3986be 100644 --- a/frontend/src/locales/en.json +++ b/frontend/src/locales/en.json @@ -947,6 +947,8 @@ "pages.about.description2": "This approach allows the distribution of tasks to many individual mappers. It also allows monitoring of project progress and helps to improve the consistency of the mapping (e.g. elements to cover, specific tags to use, etc.)", "pages.about.OpenStreetMap.description": "All work is done through {osmLink}. OpenStreetMap is the community-driven free and editable map of the world, supported by the not-for-profit OpenStreetMap Foundation.", "pages.about.OpenStreetMap.wiki": "Read more on the {osmWikiLink} or join the discussion with your local OSM community.", + "pages.about.sustainabilityModel": "Access the {faqs} for services and support information.", + "pages.about.sustainabilityModel.faq": "Tasking Manager Sustainability Model FAQs", "pages.about.floss.title": "Free and Open Source Software", "pages.about.floss.description": "The Tasking Manager is Free and Open Source software developed by the {hotLink}. The application’s code can be accessed through {code}, where you can report issues and make contributions.", "pages.edit_project.title": "Edit project", diff --git a/frontend/src/views/about.js b/frontend/src/views/about.js index 83f96c41dc..7bb9919e2a 100644 --- a/frontend/src/views/about.js +++ b/frontend/src/views/about.js @@ -38,6 +38,21 @@ export function AboutPage() { }} />

+

+ + + + ), + }} + /> +

diff --git a/frontend/src/views/messages.js b/frontend/src/views/messages.js index b0315963a3..bbf11e886a 100644 --- a/frontend/src/views/messages.js +++ b/frontend/src/views/messages.js @@ -537,6 +537,14 @@ export default defineMessages({ defaultMessage: 'Read more on the {osmWikiLink} or join the discussion with your local OSM community.', }, + sustainabilityModel: { + id: 'pages.about.sustainabilityModel', + defaultMessage: 'Access the {faqs} for services and support information.', + }, + smFAQ: { + id: 'pages.about.sustainabilityModel.faq', + defaultMessage: 'Tasking Manager Sustainability Model FAQs', + }, floss: { id: 'pages.about.floss.title', defaultMessage: 'Free and Open Source Software', From 9542a2784f1d9b2fea552d2f65d80917bfc1b1d3 Mon Sep 17 00:00:00 2001 From: Wille Marcel Date: Mon, 28 Dec 2020 08:59:37 -0300 Subject: [PATCH 10/23] Update translations --- frontend/src/locales/ar.json | 2 ++ frontend/src/locales/cs.json | 12 +++++++----- frontend/src/locales/de.json | 2 ++ frontend/src/locales/el.json | 2 ++ frontend/src/locales/es.json | 2 ++ frontend/src/locales/fa_IR.json | 2 ++ frontend/src/locales/fr.json | 10 ++++++---- frontend/src/locales/he.json | 4 +++- frontend/src/locales/hu.json | 2 ++ frontend/src/locales/id.json | 2 ++ frontend/src/locales/it.json | 2 ++ frontend/src/locales/ja.json | 2 ++ frontend/src/locales/mg.json | 2 ++ frontend/src/locales/ml.json | 2 ++ frontend/src/locales/nl_NL.json | 4 +++- frontend/src/locales/pt.json | 2 ++ frontend/src/locales/pt_BR.json | 2 ++ frontend/src/locales/sv.json | 2 ++ frontend/src/locales/sw.json | 2 ++ frontend/src/locales/tl.json | 2 ++ frontend/src/locales/tr.json | 2 ++ frontend/src/locales/uk.json | 4 +++- frontend/src/locales/zh_TW.json | 2 ++ 23 files changed, 58 insertions(+), 12 deletions(-) diff --git a/frontend/src/locales/ar.json b/frontend/src/locales/ar.json index 952cf5fe71..53b2097fef 100644 --- a/frontend/src/locales/ar.json +++ b/frontend/src/locales/ar.json @@ -947,6 +947,8 @@ "pages.about.description2": "", "pages.about.OpenStreetMap.description": "", "pages.about.OpenStreetMap.wiki": "", + "pages.about.sustainabilityModel": "", + "pages.about.sustainabilityModel.faq": "", "pages.about.floss.title": "", "pages.about.floss.description": "", "pages.edit_project.title": "", diff --git a/frontend/src/locales/cs.json b/frontend/src/locales/cs.json index ddccd0b434..dfcfcefab7 100644 --- a/frontend/src/locales/cs.json +++ b/frontend/src/locales/cs.json @@ -444,9 +444,9 @@ "project.nav.showMapToggle": "Zobrazit mapu", "project.nav.listViewToggle": "Zobrazení jako seznam", "project.navFilters.typesOfMapping": "Druhy mapování", - "project.navFilters.action.map": "", - "project.navFilters.action.validate": "", - "project.navFilters.action.any": "", + "project.navFilters.action.map": "Projekty k mapování", + "project.navFilters.action.validate": "Projekty k validování", + "project.navFilters.action.any": "Jakýkoli projekt", "project.navFilters.typesOfMapping.exactMatch": "Přesná shoda", "project.navFilters.campaigns": "Všechny kampaně", "project.navFilters.showAllXTags": "Zobrazit {typeOfTag}", @@ -575,11 +575,11 @@ "project.tasks.filter.readyToValidate": "Připraveno pro validaci", "project.tasks.filter.readyToMap": "Dostupné pro mapování", "project.tasks.filter.noTasksFound": "Žádná úloha nenalezena.", - "project.tasks.readComments": "", + "project.tasks.readComments": "Zkontrolujte prosím kartu Historie pro relevantní komentáře.", "project.tasks.action.completion": "Dokončení", "project.tasks.action.history": "Historie", "project.tasks.history.comments": "Komentáře", - "project.tasks.history.stateChanges": "", + "project.tasks.history.stateChanges": "Aktivity", "project.tasks.action.finish_mapping.title": "Jakmile skončíte s mapováním", "project.tasks.action.instructions.select_task": "Vyberte jednu z možností uvedených níže, která odpovídá stavu vašich úprav", "project.input.placeholder.write_comment": "Napsat komentář", @@ -947,6 +947,8 @@ "pages.about.description2": "Tento přístup umožňuje distribuci úkolů k mnoha jednotlivým mapovačům. Umožňuje také sledovat průběh projektu a pomáhá zlepšit konzistenci mapování (např. prvky, které je třeba pokrýt, konkrétní značky, které se mají použít atd.)", "pages.about.OpenStreetMap.description": "Veškerá práce se provádí prostřednictvím {osmLink}. OpenStreetMap je bezplatná a upravitelná mapa světa řízená komunitou, podporovaná neziskovou organizací OpenStreetMap Foundation.", "pages.about.OpenStreetMap.wiki": "Přečtěte si více na {osmWikiLink} nebo se připojte k diskuzi s místní komunitou OSM.", + "pages.about.sustainabilityModel": "", + "pages.about.sustainabilityModel.faq": "", "pages.about.floss.title": "Bezplatný open source software", "pages.about.floss.description": "Tasking Manager je bezplatný a open source software vyvinutý {hotLink}. Kód aplikace je přístupný prostřednictvím {code}, kde můžete hlásit problémy a přispívat k vývoji. ", "pages.edit_project.title": "Upravit projekt", diff --git a/frontend/src/locales/de.json b/frontend/src/locales/de.json index 8014e27ff9..432779b407 100644 --- a/frontend/src/locales/de.json +++ b/frontend/src/locales/de.json @@ -947,6 +947,8 @@ "pages.about.description2": "Dieser Ansatz ermöglicht die Verteilung von Aufgaben an viele einzelne Mapper. Es ermöglicht auch die Beobachtung des Projektfortschritts und trägt dazu bei, die Qualität der Kartierung zu verbessern (z. B. welche Objekte kartiert werden sollen oder welche spezifische Tags zu verwenden sind usw.)", "pages.about.OpenStreetMap.description": "Alle Arbeiten werden in {osmLink} durchgeführt. OpenStreetMap ist die von der Gemeinschaft betriebene freie und editierbare Weltkarte, die von der gemeinnützigen OpenStreetMap Foundation unterstützt wird.", "pages.about.OpenStreetMap.wiki": "Lesen Sie mehr über die {osmWikiLink} oder nehmen Sie an der Diskussion mit Ihrer lokalen OSM-Community teil.", + "pages.about.sustainabilityModel": "", + "pages.about.sustainabilityModel.faq": "", "pages.about.floss.title": "Freie und quelloffene Software", "pages.about.floss.description": "Der Tasking Manager ist Freie Software, die vom {hotLink} entwickelt wurde. Auf den Programmcode kann über {code} zugegriffen werden. Dort können Sie auch Probleme melden oder direkt mitarbeiten.", "pages.edit_project.title": "Projekt bearbeiten", diff --git a/frontend/src/locales/el.json b/frontend/src/locales/el.json index 2c9f4cdbe3..7ff889d98c 100644 --- a/frontend/src/locales/el.json +++ b/frontend/src/locales/el.json @@ -947,6 +947,8 @@ "pages.about.description2": "Αυτή η προσέγγιση επιτρέπει στην κατανομή των εργασιών, σε πολλούς μεμονωμένους χαρτογράφους. Επιτρέπει επίσης, την παρακολούθηση της προόδου του έργου και συμβάλλει στη βελτίωση της συνέπειας της χαρτογράφησης (π.χ. στοιχείων προς κάλυψη, χρήση συγκεκριμένων tags κ.λπ.)", "pages.about.OpenStreetMap.description": "Όλη η δουλειά γίνεται μέσω του {osmLink}. Το OpenStreetMap είναι ο ελεύθερος και επεξεργάσιμος χάρτης του κόσμου, με γνώμονα την κοινότητα, υποστηριζόμενος από το μη κερδοσκοπικό Ίδρυμα του OpenStreetMap.", "pages.about.OpenStreetMap.wiki": "Διαβάστε περισσότερα πάνω στο {osmWikiLink} ή συμμετέχετε στη συζήτηση με την τοπική σας κοινότητα OSM.", + "pages.about.sustainabilityModel": "", + "pages.about.sustainabilityModel.faq": "", "pages.about.floss.title": "Ελεύθερο Λογισμικό Ανοικτού Κώδικα", "pages.about.floss.description": "Ο Διαχειριστής Εργασιών είναι Ελεύθερου και Ανοικτού Κώδικα λογισμικό που αναπτύχθηκε από το {hotLink}. Ο κώδικας της εφαρμογής μπορεί να προσπελαστεί μέσω {code}, όπου μπορείτε να αναφέρετε θέματα και να κάνετε συνεισφορές.", "pages.edit_project.title": "Επεξεργαστείτε το έργο", diff --git a/frontend/src/locales/es.json b/frontend/src/locales/es.json index cc371ea96e..c1d3a9fb9b 100644 --- a/frontend/src/locales/es.json +++ b/frontend/src/locales/es.json @@ -947,6 +947,8 @@ "pages.about.description2": "Este enfoque permite la distribución de tareas a muchos mapeadores individuales. También permite monitorear el progreso del proyecto y ayuda a mejorar la consistencia del mapeo (por ejemplo, elementos para cubrir, etiquetas específicas para usar, etc.)", "pages.about.OpenStreetMap.description": "Todo el trabajo se realiza a través de {osmLink}. OpenStreetMap es el mapa gratuito y editable del mundo impulsado por la comunidad, respaldado por la Fundación OpenStreetMap sin fines de lucro.", "pages.about.OpenStreetMap.wiki": "Lea más sobre {osmWikiLink} o únase a la discusión con su comunidad local de OSM.", + "pages.about.sustainabilityModel": "Acceda a {faqs} para obtener información de servicios y soporte técnico.", + "pages.about.sustainabilityModel.faq": "preguntas frecuentes sobre el modelo de sostenibilidad de Tasking Manager", "pages.about.floss.title": "Software libre y de código abierto", "pages.about.floss.description": "El Tasking Manager es software libre y de código abierto desarrollado por {hotLink}. Se puede acceder al código de la aplicación a través de {code}, donde puede informar problemas y hacer contribuciones.", "pages.edit_project.title": "Editar proyecto", diff --git a/frontend/src/locales/fa_IR.json b/frontend/src/locales/fa_IR.json index ddea7cc637..52534aaa4f 100644 --- a/frontend/src/locales/fa_IR.json +++ b/frontend/src/locales/fa_IR.json @@ -947,6 +947,8 @@ "pages.about.description2": "", "pages.about.OpenStreetMap.description": "", "pages.about.OpenStreetMap.wiki": "", + "pages.about.sustainabilityModel": "", + "pages.about.sustainabilityModel.faq": "", "pages.about.floss.title": "نرم افزار ازاد و متن باز", "pages.about.floss.description": "", "pages.edit_project.title": "ویرایش پروژه", diff --git a/frontend/src/locales/fr.json b/frontend/src/locales/fr.json index a5b222635d..54136e6745 100644 --- a/frontend/src/locales/fr.json +++ b/frontend/src/locales/fr.json @@ -235,7 +235,7 @@ "management.projects.create.button.select_file": "Sélectionnez un fichier", "management.projects.create.arbitrary_tasks": "Sélectionner les tâches en fonction des polygones téléchargés.", "management.projects.create.draw.description": "Dessinez la zone d’intérêt sur la carte ou importez un fichier.", - "management.projects.create.upload.description": "Vous pouvez importer un fichier GeoJSON, KML, OSM ou Shapefile zippé.", + "management.projects.create.upload.description": "Vous pouvez importer un fichier GeoJSON, KML, OSM ou Shapefile compressé..", "project.detail.teams.empty": "Ce projet n'a aucune équipe associée.", "project.detail.coordination": "Coordination", "project.detail.coordination.description": "La coordination de ce projet créé par {user} est réalisée par {organisation} ", @@ -361,7 +361,7 @@ "projects.actions.transfer_project.button": "Transférer le projet", "projects.actions.transfer_project.title": "Transférer la propriété du projet", "projects.actions.transfer_project.alert": "En cas de transfert incorrect, contactez le nouveau propriétaire pour annuler la modification.", - "projects.actions.transfer_project.success": "Le projet a été transféré.", + "projects.actions.transfer_project.success": "Le projet a bien été transféré.", "projects.actions.transfer_project.error": "Le transfert du projet a échoué.", "projects.actions.delete_project.title": "Supprimer le projet", "projects.actions.delete_project.alert": "Vous pouvez supprimer seulement les projets qui n'ont pas reçu de contributions. ", @@ -608,7 +608,7 @@ "project.tasks.action.submit_tasks": "Soumettre les tâches", "project.tasks.history.title": "Tâche {n}", "project.tasks.history.unavailable": "Tâche indisponible", - "project.tasks.history.split.description": "La tâche {id} a été divisée et son historique n'est plus disponible", + "project.tasks.history.split.description": "La tâche {id} a été découpée et son historique n'est plus disponible", "project.tasks.activity.data.links": "données associées à la tâche", "project.tasks.activity.project_id": "Projet #{id}", "project.tasks.activity.overpass.download": "Télécharger depuis Overpass", @@ -823,7 +823,7 @@ "users.detail.heatmapLegendLess": "moins", "users.detail.delay_popup": "Ces statistiques nécessitent des calculs importants et les changements apparaissent avec un retard d'environ une heure.", "users.detail.teams": "Équipes", - "error.page.title": "Une erreur est apparue.", + "error.page.title": "Une erreur est intervenue.", "error.page.description": "Quelque chose s'est mal passé...", "error.page.link": "Revenir", "notFound.page.title": "Page non trouvée", @@ -947,6 +947,8 @@ "pages.about.description2": "Cette approche permet de distribuer les tâches à de nombreux cartographes individuels. Elle permet également de suivre l'avancement du projet et contribue à améliorer la cohérence de la cartographie (comme les types d'éléments à cartographier, les balises spécifiques à utiliser, etc.)", "pages.about.OpenStreetMap.description": "Tout le travail se fait par l'intermédiaire d'{osmLink}. OpenStreetMap est une carte modifiable du monde, libre et gratuite, réalisée par la communauté et soutenue par la fondation à but non lucratif OpenStreetMap.", "pages.about.OpenStreetMap.wiki": "Pour en savoir plus, cliquez sur le lien {osmWikiLink} ou participez à la discussion avec votre communauté OSM locale.", + "pages.about.sustainabilityModel": "", + "pages.about.sustainabilityModel.faq": "", "pages.about.floss.title": "Logiciel libre et open source", "pages.about.floss.description": "Le Tasking Manager est un logiciel libre et Open Source développé par {hotLink}. Le code de l'application est accessible via {code}, où vous pouvez signaler les problèmes et apporter des contributions.", "pages.edit_project.title": "Modifier le projet", diff --git a/frontend/src/locales/he.json b/frontend/src/locales/he.json index 6b94b3aef5..9b4798eb81 100644 --- a/frontend/src/locales/he.json +++ b/frontend/src/locales/he.json @@ -579,7 +579,7 @@ "project.tasks.action.completion": "השלמה", "project.tasks.action.history": "היסטוריה", "project.tasks.history.comments": "הערות", - "project.tasks.history.stateChanges": "", + "project.tasks.history.stateChanges": "פעילויות", "project.tasks.action.finish_mapping.title": "לאחר שסיימת למפות", "project.tasks.action.instructions.select_task": "נא לבחור את אחת המשימות שלהלן שתואמת את מצב העריכה שלך", "project.input.placeholder.write_comment": "כתיבת הערה", @@ -947,6 +947,8 @@ "pages.about.description2": "גישה זו מאפשרת להפיץ משימות למגוון רחב של ממפים עצמאיים. היא מאפשרת גם לעקוב אחר התקדמות המיזם ומסייעת לשפר את אחידות המיפוי (למשל: רכיבים שיש לדאוג להם, תגיות מסוימות לשימוש וכן הלאה).", "pages.about.OpenStreetMap.description": "כל העבודה נערכת דרך {osmLink}.‏ OpenStreetMap היא מפה חופשית של העולם בהנהגה קהילתית עם אפשרות לעריכה, בתמיכת הקרן שאינה למטרות רווח OpenStreetMap.", "pages.about.OpenStreetMap.wiki": "ניתן לקרוא מידע נוסף ב־{osmWikiLink} או להשתתף בדיונים מול קהילת ה־OSM המקומית שלך.", + "pages.about.sustainabilityModel": "", + "pages.about.sustainabilityModel.faq": "", "pages.about.floss.title": "תכנה חופשית ובקוד פתוח", "pages.about.floss.description": "Tasking Manager הוא חופשי ובקוד פתוח ופותח על ידי {hotLink}. ניתן לגשת אל קוד המקור של היישום תחת {code}, שם ניתן גם לדווח על תקלות ולהתנדב.", "pages.edit_project.title": "עריכת מיזם", diff --git a/frontend/src/locales/hu.json b/frontend/src/locales/hu.json index eaf2f313e9..22183894b4 100644 --- a/frontend/src/locales/hu.json +++ b/frontend/src/locales/hu.json @@ -947,6 +947,8 @@ "pages.about.description2": "Ezzel a megközelítéssel a projekt felosztható sok egyedi térképész között. Ezen kívül lehetővé teszi a projekt előrehaladásának nyomon követését is, és elősegíti a térképezés egységességének javulását (például felrajzolandó elemek, specifikus címkék stb.)", "pages.about.OpenStreetMap.description": "Minden munka az {osmLink} segítségével történik. Az OpenStreetMap a közösség által vezérelt, ingyenes és szerkeszthető világtérkép, amelyet a nonprofit OpenStreetMap Alapítvány támogat.", "pages.about.OpenStreetMap.wiki": "Olvassa el az {osmWikiLink} oldalt, vagy csatlakozzék a helyi OSM közösség beszélgetéseihez.", + "pages.about.sustainabilityModel": "", + "pages.about.sustainabilityModel.faq": "", "pages.about.floss.title": "Ingyenes és nyílt forráskódú szoftver", "pages.about.floss.description": "A Tasking Manager ingyenes és nyílt forráskódú szoftver, amelyet a {hotLink} fejlesztett ki. Az alkalmazás kódja a {code} webhelyen érhető el, ahol bejelenthet problémákat és közreműködhet a szerkesztésben.", "pages.edit_project.title": "Projekt szerkesztése", diff --git a/frontend/src/locales/id.json b/frontend/src/locales/id.json index f729b5375b..8ea2158974 100644 --- a/frontend/src/locales/id.json +++ b/frontend/src/locales/id.json @@ -947,6 +947,8 @@ "pages.about.description2": "Pendekatan ini memungkinkan distribusi tugas ke banyak relawan pemetaan. Hal ini juga memungkinkan untuk pemantauan kemajuan proyek secara keseluruhan dan membantu meningkatkan konsistensi pemetaan (contohnya elemen yang dicakup, tag spesifik yang digunakan, etc.)", "pages.about.OpenStreetMap.description": "Semua pekerjaan dilakukan melalui {osmLink}. OpenStreetMap adalah peta dunia yang gratis dan terbuka yang digerakkan oleh komunitas, didukung oleh lembaga OpenStreetMap.", "pages.about.OpenStreetMap.wiki": "Baca lebih lanjut pada {osmWikiLink} atau gabung diskusi dengan komunitas OSM lokal Anda.", + "pages.about.sustainabilityModel": "", + "pages.about.sustainabilityModel.faq": "", "pages.about.floss.title": "Perangkat lunak gratis dan terbuka", "pages.about.floss.description": "Tasking Manager adalah software gratis dan terbuka yang dikembangan oleh {hotLink}. Kode aplikasi ini bisa diakses melalui {code}, dimana Anda bisa melaporkan isu dan berkontribusi.", "pages.edit_project.title": "Edit proyek", diff --git a/frontend/src/locales/it.json b/frontend/src/locales/it.json index 6bb6e3073a..9ba57dd09a 100644 --- a/frontend/src/locales/it.json +++ b/frontend/src/locales/it.json @@ -947,6 +947,8 @@ "pages.about.description2": "", "pages.about.OpenStreetMap.description": "", "pages.about.OpenStreetMap.wiki": "", + "pages.about.sustainabilityModel": "", + "pages.about.sustainabilityModel.faq": "", "pages.about.floss.title": "Software libero e open source", "pages.about.floss.description": "", "pages.edit_project.title": "Modifica progetto", diff --git a/frontend/src/locales/ja.json b/frontend/src/locales/ja.json index db8cf7f0a4..3f3168a7ee 100644 --- a/frontend/src/locales/ja.json +++ b/frontend/src/locales/ja.json @@ -947,6 +947,8 @@ "pages.about.description2": "この方法を利用することで、多くの個人マッパーに対してタスクを割り当てることができます。また、プロジェクトの進捗状況を監視し、マッピングの完成度 (例: マッピングするべき要素の完成率、特定タグの利用など) を高めることもできるようになります。", "pages.about.OpenStreetMap.description": "すべての作業は {osmLink} を通じて行われます。OpenStreetMapはコミュニティによって運営される自由で編集可能な世界地図であり、非営利組織OpenStreetMap Foundationによって支援されています。", "pages.about.OpenStreetMap.wiki": "より詳しい情報を知るためには、 {osmWikiLink} を参照したり、地域のOSMコミュニティに参加したりしてみてください。", + "pages.about.sustainabilityModel": "", + "pages.about.sustainabilityModel.faq": "", "pages.about.floss.title": "Free and Open Source Software", "pages.about.floss.description": "Tasking Managerはフリーかつオープンソースのソフトウェアであり、 {hotLink} によって開発されています。アプリケーションのソースコードは {code} で公開されており、課題の報告や活動の参加はそちらから行うことができます。", "pages.edit_project.title": "プロジェクト編集", diff --git a/frontend/src/locales/mg.json b/frontend/src/locales/mg.json index a100cad407..29a8e6e010 100644 --- a/frontend/src/locales/mg.json +++ b/frontend/src/locales/mg.json @@ -947,6 +947,8 @@ "pages.about.description2": "", "pages.about.OpenStreetMap.description": "", "pages.about.OpenStreetMap.wiki": "", + "pages.about.sustainabilityModel": "", + "pages.about.sustainabilityModel.faq": "", "pages.about.floss.title": "", "pages.about.floss.description": "", "pages.edit_project.title": "Hanova tetik'asa", diff --git a/frontend/src/locales/ml.json b/frontend/src/locales/ml.json index 16707266ca..c83ef7b9ec 100644 --- a/frontend/src/locales/ml.json +++ b/frontend/src/locales/ml.json @@ -947,6 +947,8 @@ "pages.about.description2": "", "pages.about.OpenStreetMap.description": "", "pages.about.OpenStreetMap.wiki": "", + "pages.about.sustainabilityModel": "", + "pages.about.sustainabilityModel.faq": "", "pages.about.floss.title": "", "pages.about.floss.description": "", "pages.edit_project.title": "", diff --git a/frontend/src/locales/nl_NL.json b/frontend/src/locales/nl_NL.json index 980d25367d..1bc1833192 100644 --- a/frontend/src/locales/nl_NL.json +++ b/frontend/src/locales/nl_NL.json @@ -579,7 +579,7 @@ "project.tasks.action.completion": "Voltooiïng", "project.tasks.action.history": "Geschiedenis", "project.tasks.history.comments": "Opmerkingen", - "project.tasks.history.stateChanges": "", + "project.tasks.history.stateChanges": "Activiteiten", "project.tasks.action.finish_mapping.title": "Als u eenmaal gereed bent met in kaart brengen", "project.tasks.action.instructions.select_task": "Selecteer een van de opties hieronder die overeenkomt met uw status voor bewerken", "project.input.placeholder.write_comment": "Plaats een opmerking", @@ -947,6 +947,8 @@ "pages.about.description2": "Deze benadering maakt het verdelen van taken aan vele individuele mappers mogelijk. Het maakt het ook mogelijk de algehele voortgang van het project te monitoren en helpt bij het verbeteren van de consistentie van het in kaart gebrachte (bijv. elementen die moeten worden verwerkt, specifieke tags om te gebruiken, etc.)", "pages.about.OpenStreetMap.description": "Al het werk wordt gedaan in {osmLink}. OpenStreetMap is de door de gemeenschap gedreven vrije en bewerkbare kaart van de wereld, ondersteund door de not-for-profit OpenStreetMap Foundation.", "pages.about.OpenStreetMap.wiki": "Lees meer op de {osmWikiLink} of meld u aan bij de besprekingen van uw lokale gemeenschap voor OSM.", + "pages.about.sustainabilityModel": "", + "pages.about.sustainabilityModel.faq": "", "pages.about.floss.title": "Gratis en Open-Bron-software", "pages.about.floss.description": "De Tasking Manager is vrije en open-bron-software, ontwikkeld door het {hotLink}. De code voor de toepassing is toegankelijk via {code}, waar u problemen kunt rapporteren en er aan deelnemen.", "pages.edit_project.title": "Project bewerken", diff --git a/frontend/src/locales/pt.json b/frontend/src/locales/pt.json index 9423c5f450..793b4da8ec 100644 --- a/frontend/src/locales/pt.json +++ b/frontend/src/locales/pt.json @@ -947,6 +947,8 @@ "pages.about.description2": "Esta abordagem permite a distribuição de tarefas por muitos mapeadores individuais. Também permite o monitoramento do progresso do projeto e ajuda a melhorar a consistência do mapeamento (por exemplo: elementos que precisam de ser mapeados, etiquetas específicas que devem ser usadas, etc.)", "pages.about.OpenStreetMap.description": "Todo o trabalho é feito através de {osmLink}. O OpenStreetMap é o mapa do mundo livre e editável pela comunidade, apoiado pela Fundação OpenStreetMap sem fins lucrativos.", "pages.about.OpenStreetMap.wiki": "Lê mais sobre o {OSMWikiLink} ou junta-te à discussão na tua comunidade local de OSM.", + "pages.about.sustainabilityModel": "", + "pages.about.sustainabilityModel.faq": "", "pages.about.floss.title": "Software gratuito e de código aberto", "pages.about.floss.description": "O Gestor de Tarefas é um software livre e de código aberto desenvolvido pelo {hotLink}. O código da aplicação pode ser consultado em {code}, onde também poderás relatar problemas e contribuir.", "pages.edit_project.title": "Editar projeto", diff --git a/frontend/src/locales/pt_BR.json b/frontend/src/locales/pt_BR.json index 51b4d4a3a1..75ac581935 100644 --- a/frontend/src/locales/pt_BR.json +++ b/frontend/src/locales/pt_BR.json @@ -947,6 +947,8 @@ "pages.about.description2": "Essa abordagem permite a distribuição de tarefas para muitos mapeadores individuais. Ele também permite o monitoramento do progresso do projeto e ajuda a melhorar a consistência do mapeamento (por exemplo, elementos que serão mapeados, tags específicas para serem utilizadas, etc.)", "pages.about.OpenStreetMap.description": "Todo o trabalho é feito através do {osmLink}. O OpenStreetMap é o mapa mundial gratuito e editável da comunidade, suportado pela OpenStreetMap Foundation, sem fins lucrativos.", "pages.about.OpenStreetMap.wiki": "Leia mais no {osmWikiLink} ou participe da discussão com sua comunidade OSM local.", + "pages.about.sustainabilityModel": "Acesse as {faqs} para obter informações sobre serviços e suporte.", + "pages.about.sustainabilityModel.faq": "perguntas frequentes sobre o modelo de sustentabilidade do Tasking Manager", "pages.about.floss.title": "Software gratuito e de código aberto", "pages.about.floss.description": "O Tasking Manager é um software livre e de código aberto desenvolvido pelo {hotLink}. O código do aplicativo pode ser acessado através de {code}, onde você pode relatar problemas e fazer contribuições.", "pages.edit_project.title": "Editar projeto", diff --git a/frontend/src/locales/sv.json b/frontend/src/locales/sv.json index 8b405fa32c..5560844a44 100644 --- a/frontend/src/locales/sv.json +++ b/frontend/src/locales/sv.json @@ -947,6 +947,8 @@ "pages.about.description2": "", "pages.about.OpenStreetMap.description": "", "pages.about.OpenStreetMap.wiki": "", + "pages.about.sustainabilityModel": "", + "pages.about.sustainabilityModel.faq": "", "pages.about.floss.title": "", "pages.about.floss.description": "", "pages.edit_project.title": "Redigera projekt", diff --git a/frontend/src/locales/sw.json b/frontend/src/locales/sw.json index 9cc1e2bd94..eb9d72f357 100644 --- a/frontend/src/locales/sw.json +++ b/frontend/src/locales/sw.json @@ -947,6 +947,8 @@ "pages.about.description2": "", "pages.about.OpenStreetMap.description": "", "pages.about.OpenStreetMap.wiki": "", + "pages.about.sustainabilityModel": "", + "pages.about.sustainabilityModel.faq": "", "pages.about.floss.title": "Programu ya Bure na Wazi ", "pages.about.floss.description": "", "pages.edit_project.title": "Hariri mradi", diff --git a/frontend/src/locales/tl.json b/frontend/src/locales/tl.json index 16707266ca..c83ef7b9ec 100644 --- a/frontend/src/locales/tl.json +++ b/frontend/src/locales/tl.json @@ -947,6 +947,8 @@ "pages.about.description2": "", "pages.about.OpenStreetMap.description": "", "pages.about.OpenStreetMap.wiki": "", + "pages.about.sustainabilityModel": "", + "pages.about.sustainabilityModel.faq": "", "pages.about.floss.title": "", "pages.about.floss.description": "", "pages.edit_project.title": "", diff --git a/frontend/src/locales/tr.json b/frontend/src/locales/tr.json index 946c82f3cc..b3d0ee59a1 100644 --- a/frontend/src/locales/tr.json +++ b/frontend/src/locales/tr.json @@ -947,6 +947,8 @@ "pages.about.description2": "Bu yaklaşım görevlerin birden çok haritacıya dağıtılmasını sağlar. Ayrıca proje ilerlemesinin izlenmesine izin verir ve haritalamanın tutarlılığını geliştirmeye yardımcı olur (kapsanacak öğeler, kullanılacak belirli etiketler gibi). ", "pages.about.OpenStreetMap.description": "Tüm çalışmalar {osmLink} aracılığıyla yapılmıştır. OpenStreetMap, kâr amacı gütmeyen OpenStreetMap Vakfı tarafından desteklenen, topluluk odaklı, ücretsiz ve özgürce düzenlenebilir bir Dünya haritasıdır.", "pages.about.OpenStreetMap.wiki": "{osmWikiLink} adresinden daha fazla bilgi edinin veya yerel OSM topluluğunuzun tartışma gruplarına katılın.", + "pages.about.sustainabilityModel": "", + "pages.about.sustainabilityModel.faq": "", "pages.about.floss.title": "Özgür ve Açık Kaynaklı Yazılım", "pages.about.floss.description": "Görev Yöneticisi, {hotLink} tarafından geliştirilen ücretsiz ve açık kaynaklı bir yazılımdır. Kaynak koduna {code} aracılığıyla erişerek sorun bildirebilir veya katkıda bulunabilirsiniz.", "pages.edit_project.title": "Projeyi düzenle", diff --git a/frontend/src/locales/uk.json b/frontend/src/locales/uk.json index 8834f8b9a3..f1076fe90d 100644 --- a/frontend/src/locales/uk.json +++ b/frontend/src/locales/uk.json @@ -579,7 +579,7 @@ "project.tasks.action.completion": "Завершення", "project.tasks.action.history": "Історія", "project.tasks.history.comments": "Коментарі", - "project.tasks.history.stateChanges": "", + "project.tasks.history.stateChanges": "Діяльність", "project.tasks.action.finish_mapping.title": "Після того як ви закінчили мапити", "project.tasks.action.instructions.select_task": "Оберіть один з варіантів нижче, який відповідає стану ваших змін", "project.input.placeholder.write_comment": "Напишіть коментар", @@ -947,6 +947,8 @@ "pages.about.description2": "Такий підхід полегшує розподіл завдань серед учасників. Він також дозволяє керувати процесом та однорідністю виконання роботи (тобто, наявністю певних елементів, теґів та т.і.).", "pages.about.OpenStreetMap.description": "Вся робота виконується в {osmLink}. OpenStreetMap – проєкт по створенню вільної мапи світу спільнотою волонтерів, який підтримується OpenStreetMap Foundation.", "pages.about.OpenStreetMap.wiki": "Більш докладну інформацію шукайте в {osmWikiLink} або зверніться до вашої місцевої спільноти учасників OSM. ", + "pages.about.sustainabilityModel": "", + "pages.about.sustainabilityModel.faq": "", "pages.about.floss.title": "Вільне програмне забезпечення з відкритими сирцями", "pages.about.floss.description": "Менеджер завдань був створений {hotLink} і він є вільним програмним забезпеченням з відкритими сирцями. Сирці знаходяться на {code}, де ви можете повідомити про проблеми та зробити свій внесок у його вдосконалення.", "pages.edit_project.title": "Змінити проєкт", diff --git a/frontend/src/locales/zh_TW.json b/frontend/src/locales/zh_TW.json index 2ca9dd538b..fd48fdba4c 100644 --- a/frontend/src/locales/zh_TW.json +++ b/frontend/src/locales/zh_TW.json @@ -947,6 +947,8 @@ "pages.about.description2": "", "pages.about.OpenStreetMap.description": "", "pages.about.OpenStreetMap.wiki": "", + "pages.about.sustainabilityModel": "", + "pages.about.sustainabilityModel.faq": "", "pages.about.floss.title": "自由與開放源碼軟體", "pages.about.floss.description": "", "pages.edit_project.title": "編輯專案", From 72d85fb347778b5f3c5b1162cd359426d19504e8 Mon Sep 17 00:00:00 2001 From: Wille Marcel Date: Mon, 28 Dec 2020 10:23:03 -0300 Subject: [PATCH 11/23] Improve division on My Tasks card --- frontend/src/components/contributions/taskCard.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/frontend/src/components/contributions/taskCard.js b/frontend/src/components/contributions/taskCard.js index 7cae857d27..013e0ccee3 100644 --- a/frontend/src/components/contributions/taskCard.js +++ b/frontend/src/components/contributions/taskCard.js @@ -44,7 +44,7 @@ export function TaskCard({ }`} >
-
+
-
+
@@ -86,7 +86,7 @@ export function TaskCard({ )}
-
+
From 75726e3f17038a30791acc499fe679f09caa67c1 Mon Sep 17 00:00:00 2001 From: Wille Marcel Date: Mon, 28 Dec 2020 10:08:11 -0300 Subject: [PATCH 12/23] Order task history by action_date instead of id --- backend/models/postgis/task.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/models/postgis/task.py b/backend/models/postgis/task.py index 666eb91188..c9a4aeb88c 100644 --- a/backend/models/postgis/task.py +++ b/backend/models/postgis/task.py @@ -509,7 +509,7 @@ class Task(db.Model): # Mapped objects task_history = db.relationship( - TaskHistory, cascade="all", order_by=desc(TaskHistory.id) + TaskHistory, cascade="all", order_by=desc(TaskHistory.action_date) ) task_annotations = db.relationship(TaskAnnotation, cascade="all") lock_holder = db.relationship(User, foreign_keys=[locked_by]) From 4f883cf2801255e7a7a56bcb8732c7a491f9c05b Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Wed, 30 Dec 2020 01:47:42 +0000 Subject: [PATCH 13/23] Bump @testing-library/jest-dom from 5.11.6 to 5.11.7 in /frontend Bumps [@testing-library/jest-dom](https://github.com/testing-library/jest-dom) from 5.11.6 to 5.11.7. - [Release notes](https://github.com/testing-library/jest-dom/releases) - [Changelog](https://github.com/testing-library/jest-dom/blob/master/CHANGELOG.md) - [Commits](https://github.com/testing-library/jest-dom/compare/v5.11.6...v5.11.7) Signed-off-by: dependabot-preview[bot] --- frontend/package.json | 2 +- frontend/yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/frontend/package.json b/frontend/package.json index d5a792455d..92eb47cf9d 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -94,7 +94,7 @@ ] }, "devDependencies": { - "@testing-library/jest-dom": "^5.11.6", + "@testing-library/jest-dom": "^5.11.7", "@testing-library/react": "^11.2.2", "@testing-library/react-hooks": "^3.7.0", "combine-react-intl-messages": "^4.0.0", diff --git a/frontend/yarn.lock b/frontend/yarn.lock index e7521d0998..825a5d24ef 100644 --- a/frontend/yarn.lock +++ b/frontend/yarn.lock @@ -1877,10 +1877,10 @@ lz-string "^1.4.4" pretty-format "^26.6.2" -"@testing-library/jest-dom@^5.11.6": - version "5.11.6" - resolved "https://registry.yarnpkg.com/@testing-library/jest-dom/-/jest-dom-5.11.6.tgz#782940e82e5cd17bc0a36f15156ba16f3570ac81" - integrity sha512-cVZyUNRWwUKI0++yepYpYX7uhrP398I+tGz4zOlLVlUYnZS+Svuxv4fwLeCIy7TnBYKXUaOlQr3vopxL8ZfEnA== +"@testing-library/jest-dom@^5.11.7": + version "5.11.7" + resolved "https://registry.yarnpkg.com/@testing-library/jest-dom/-/jest-dom-5.11.7.tgz#f788867007eb8b71940ee3100eb69ec45f85b1c6" + integrity sha512-EMU0upXVGTaloWIQNdf3+Q4YMuGFaZQUYEQwdJJ5Pq33uL65rIeMLbv23jC6aCVnxiqNYCOhurIt85ntvoqaag== dependencies: "@babel/runtime" "^7.9.2" "@types/testing-library__jest-dom" "^5.9.1" From dc3ded79446b735acd008d2b595fc2694723c7e6 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Wed, 30 Dec 2020 11:20:09 +0000 Subject: [PATCH 14/23] Bump msw from 0.24.3 to 0.24.4 in /frontend Bumps [msw](https://github.com/mswjs/msw) from 0.24.3 to 0.24.4. - [Release notes](https://github.com/mswjs/msw/releases) - [Changelog](https://github.com/mswjs/msw/blob/master/CHANGELOG.md) - [Commits](https://github.com/mswjs/msw/compare/v0.24.3...v0.24.4) Signed-off-by: dependabot-preview[bot] --- frontend/package.json | 2 +- frontend/yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/frontend/package.json b/frontend/package.json index 92eb47cf9d..7f7805f250 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -99,7 +99,7 @@ "@testing-library/react-hooks": "^3.7.0", "combine-react-intl-messages": "^4.0.0", "jest-canvas-mock": "^2.3.0", - "msw": "^0.24.3", + "msw": "^0.24.4", "prettier": "^2.2.1", "react-test-renderer": "^16.14.0" }, diff --git a/frontend/yarn.lock b/frontend/yarn.lock index 825a5d24ef..fd09d5b9e7 100644 --- a/frontend/yarn.lock +++ b/frontend/yarn.lock @@ -8385,10 +8385,10 @@ ms@^2.1.1: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== -msw@^0.24.3: - version "0.24.3" - resolved "https://registry.yarnpkg.com/msw/-/msw-0.24.3.tgz#e18fc134a81be797575b1fffa2eedd44068ecb00" - integrity sha512-IdXMZtcvPDoloq/H2jD81YHPFABM7Nu6sfjWPJWDUWAzwE3d86qkGqTLq8aFKL8VPF8i3yuuw/B0GA6xfw6ptw== +msw@^0.24.4: + version "0.24.4" + resolved "https://registry.yarnpkg.com/msw/-/msw-0.24.4.tgz#e1f918862146a2bb39be005e52b24905c8c6108e" + integrity sha512-RKPAyfOrEVwritMn6RL5QROYhZMeRVApGuj4JdIQh/uyV0ASx349wsARJVI4VAXGEKu4B1TBvJZf0P0iVMsheg== dependencies: "@open-draft/until" "^1.0.3" "@types/cookie" "^0.4.0" From 7545add9061e3ef08289c058eb3873641c606ece Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Wed, 30 Dec 2020 11:17:57 +0000 Subject: [PATCH 15/23] Bump query-string from 6.13.7 to 6.13.8 in /frontend Bumps [query-string](https://github.com/sindresorhus/query-string) from 6.13.7 to 6.13.8. - [Release notes](https://github.com/sindresorhus/query-string/releases) - [Commits](https://github.com/sindresorhus/query-string/compare/v6.13.7...v6.13.8) Signed-off-by: dependabot-preview[bot] --- frontend/package.json | 2 +- frontend/yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/frontend/package.json b/frontend/package.json index 7f7805f250..cca0240609 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -40,7 +40,7 @@ "marked": "^1.2.7", "node-sass": "^4.14.1", "osmtogeojson": "^3.0.0-beta.3", - "query-string": "^6.13.7", + "query-string": "^6.13.8", "react": "^16.14.0", "react-calendar-heatmap": "^1.8.1", "react-chartjs-2": "^2.11.1", diff --git a/frontend/yarn.lock b/frontend/yarn.lock index fd09d5b9e7..04a4028166 100644 --- a/frontend/yarn.lock +++ b/frontend/yarn.lock @@ -10251,10 +10251,10 @@ query-string@^4.1.0: object-assign "^4.1.0" strict-uri-encode "^1.0.0" -query-string@^6.13.7: - version "6.13.7" - resolved "https://registry.yarnpkg.com/query-string/-/query-string-6.13.7.tgz#af53802ff6ed56f3345f92d40a056f93681026ee" - integrity sha512-CsGs8ZYb39zu0WLkeOhe0NMePqgYdAuCqxOYKDR5LVCytDZYMGx3Bb+xypvQvPHVPijRXB0HZNFllCzHRe4gEA== +query-string@^6.13.8: + version "6.13.8" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-6.13.8.tgz#8cf231759c85484da3cf05a851810d8e825c1159" + integrity sha512-jxJzQI2edQPE/NPUOusNjO/ZOGqr1o2OBa/3M00fU76FsLXDVbJDv/p7ng5OdQyorKrkRz1oqfwmbe5MAMePQg== dependencies: decode-uri-component "^0.2.0" split-on-first "^1.0.0" From 580a794f576e17baac5f46430cdde42aeefb4eab Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Wed, 30 Dec 2020 11:18:20 +0000 Subject: [PATCH 16/23] Bump @testing-library/jest-dom from 5.11.7 to 5.11.8 in /frontend Bumps [@testing-library/jest-dom](https://github.com/testing-library/jest-dom) from 5.11.7 to 5.11.8. - [Release notes](https://github.com/testing-library/jest-dom/releases) - [Changelog](https://github.com/testing-library/jest-dom/blob/master/CHANGELOG.md) - [Commits](https://github.com/testing-library/jest-dom/compare/v5.11.7...v5.11.8) Signed-off-by: dependabot-preview[bot] --- frontend/package.json | 2 +- frontend/yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/frontend/package.json b/frontend/package.json index cca0240609..8fa6a53aa2 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -94,7 +94,7 @@ ] }, "devDependencies": { - "@testing-library/jest-dom": "^5.11.7", + "@testing-library/jest-dom": "^5.11.8", "@testing-library/react": "^11.2.2", "@testing-library/react-hooks": "^3.7.0", "combine-react-intl-messages": "^4.0.0", diff --git a/frontend/yarn.lock b/frontend/yarn.lock index 04a4028166..f46c4159b9 100644 --- a/frontend/yarn.lock +++ b/frontend/yarn.lock @@ -1877,10 +1877,10 @@ lz-string "^1.4.4" pretty-format "^26.6.2" -"@testing-library/jest-dom@^5.11.7": - version "5.11.7" - resolved "https://registry.yarnpkg.com/@testing-library/jest-dom/-/jest-dom-5.11.7.tgz#f788867007eb8b71940ee3100eb69ec45f85b1c6" - integrity sha512-EMU0upXVGTaloWIQNdf3+Q4YMuGFaZQUYEQwdJJ5Pq33uL65rIeMLbv23jC6aCVnxiqNYCOhurIt85ntvoqaag== +"@testing-library/jest-dom@^5.11.8": + version "5.11.8" + resolved "https://registry.yarnpkg.com/@testing-library/jest-dom/-/jest-dom-5.11.8.tgz#433a84d6f9a089485101b9e112ef03e5c30bcbfc" + integrity sha512-ScyKrWQM5xNcr79PkSewnA79CLaoxVskE+f7knTOhDD9ftZSA1Jw8mj+pneqhEu3x37ncNfW84NUr7lqK+mXjA== dependencies: "@babel/runtime" "^7.9.2" "@types/testing-library__jest-dom" "^5.9.1" From 48c52741870fc86c3dbed32a0d3314e383caeba2 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 4 Jan 2021 10:29:37 +0000 Subject: [PATCH 17/23] Bump msw from 0.24.4 to 0.25.0 in /frontend Bumps [msw](https://github.com/mswjs/msw) from 0.24.4 to 0.25.0. - [Release notes](https://github.com/mswjs/msw/releases) - [Changelog](https://github.com/mswjs/msw/blob/master/CHANGELOG.md) - [Commits](https://github.com/mswjs/msw/compare/v0.24.4...v0.25.0) Signed-off-by: dependabot-preview[bot] --- frontend/package.json | 2 +- frontend/yarn.lock | 36 +++++++++++++++++++++++++----------- 2 files changed, 26 insertions(+), 12 deletions(-) diff --git a/frontend/package.json b/frontend/package.json index 8fa6a53aa2..9b5d35e2d6 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -99,7 +99,7 @@ "@testing-library/react-hooks": "^3.7.0", "combine-react-intl-messages": "^4.0.0", "jest-canvas-mock": "^2.3.0", - "msw": "^0.24.4", + "msw": "^0.25.0", "prettier": "^2.2.1", "react-test-renderer": "^16.14.0" }, diff --git a/frontend/yarn.lock b/frontend/yarn.lock index f46c4159b9..5cbe77c5c0 100644 --- a/frontend/yarn.lock +++ b/frontend/yarn.lock @@ -4509,6 +4509,13 @@ debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: dependencies: ms "^2.1.1" +debug@^4.3.0: + version "4.3.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" + integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== + dependencies: + ms "2.1.2" + decamelize@^1.1.2, decamelize@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" @@ -8380,15 +8387,15 @@ ms@2.1.1: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== -ms@^2.1.1: +ms@2.1.2, ms@^2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== -msw@^0.24.4: - version "0.24.4" - resolved "https://registry.yarnpkg.com/msw/-/msw-0.24.4.tgz#e1f918862146a2bb39be005e52b24905c8c6108e" - integrity sha512-RKPAyfOrEVwritMn6RL5QROYhZMeRVApGuj4JdIQh/uyV0ASx349wsARJVI4VAXGEKu4B1TBvJZf0P0iVMsheg== +msw@^0.25.0: + version "0.25.0" + resolved "https://registry.yarnpkg.com/msw/-/msw-0.25.0.tgz#a743cd2c11e7aec28b2597cb133afa8dc7044acc" + integrity sha512-KWW9Qwf4ecw7lgf7KM0gRfFLvfmUPw0ljCvii2IluhObZggoN/dBMFe5YJf1utnW7q9qHBc4oMNLrd8zFE6BfQ== dependencies: "@open-draft/until" "^1.0.3" "@types/cookie" "^0.4.0" @@ -8399,8 +8406,9 @@ msw@^0.24.4: headers-utils "^1.2.0" node-fetch "^2.6.1" node-match-path "^0.6.0" - node-request-interceptor "^0.5.3" + node-request-interceptor "^0.6.3" statuses "^2.0.0" + strict-event-emitter "^0.1.0" yargs "^16.2.0" multicast-dns-service-types@^1.1.0: @@ -8574,14 +8582,15 @@ node-releases@^1.1.52, node-releases@^1.1.53: resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.53.tgz#2d821bfa499ed7c5dffc5e2f28c88e78a08ee3f4" integrity sha512-wp8zyQVwef2hpZ/dJH7SfSrIPD6YoJz6BDQDpGEkcA0s3LpAQoxBIYmfIq6QAhC1DhwsyCgTaTTcONwX8qzCuQ== -node-request-interceptor@^0.5.3: - version "0.5.3" - resolved "https://registry.yarnpkg.com/node-request-interceptor/-/node-request-interceptor-0.5.3.tgz#c8323812610c16b3ec617ab9f638559d9a6f1e3a" - integrity sha512-nr1lfPzSN1Zun9pLHyQQsMYfpdk30ElUn066kmcaiRUcd/HfXEjH+yvXYwtVhOOXP+bBLifR+++0YdSY0vBUdw== +node-request-interceptor@^0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/node-request-interceptor/-/node-request-interceptor-0.6.3.tgz#f2f0dbec2d421584419dd39ff6782ce1e02b42a7" + integrity sha512-8I2V7H2Ch0NvW7qWcjmS0/9Lhr0T6x7RD6PDirhvWEkUQvy83x8BA4haYMr09r/rig7hcgYSjYh6cd4U7G1vLA== dependencies: "@open-draft/until" "^1.0.3" - debug "^4.1.1" + debug "^4.3.0" headers-utils "^1.2.0" + strict-event-emitter "^0.1.0" node-sass@^4.14.1: version "4.14.1" @@ -11850,6 +11859,11 @@ stream-shift@^1.0.0: resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== +strict-event-emitter@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/strict-event-emitter/-/strict-event-emitter-0.1.0.tgz#fd742c1fb7e3852f0b964ecdae2d7666a6fb7ef8" + integrity sha512-8hSYfU+WKLdNcHVXJ0VxRXiPESalzRe7w1l8dg9+/22Ry+iZQUoQuoJ27R30GMD1TiyYINWsIEGY05WrskhSKw== + strict-uri-encode@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" From eb5552e5a191b03088989fbd3a4e29784d9d1226 Mon Sep 17 00:00:00 2001 From: Diana Rita Nanyanzi <31903212+d-rita@users.noreply.github.com> Date: Mon, 4 Jan 2021 14:17:00 +0300 Subject: [PATCH 18/23] Allow validators to view the history of multiple tasks (#4013) * view history of multiple tasks: - add react-accessible-accordion library - fetch task info once triggered in accordion - cache tasks' info in state - adjust styling of task history check inputs - show number of task histories present - for mapping or validation of 1 task, show single task history - for multiple tasks for validation, render accordion with task histories * Add task histories accordion: - create separate multiple task histories component - adjust task history and accordion items spacing - add accordion styles with tachyons - test multiple histories accordion component * chevron sizes and rename files Co-authored-by: Wille Marcel --- frontend/package.json | 1 + frontend/src/assets/styles/_accordion.scss | 33 +++++++ frontend/src/assets/styles/index.scss | 3 +- .../src/components/taskSelection/action.js | 56 ++++++++++-- .../taskSelection/multipleTaskHistories.js | 36 ++++++++ .../components/taskSelection/taskActivity.js | 11 ++- .../tests/multipleTaskHistories.test.js | 85 +++++++++++++++++++ frontend/yarn.lock | 5 ++ 8 files changed, 217 insertions(+), 13 deletions(-) create mode 100644 frontend/src/assets/styles/_accordion.scss create mode 100644 frontend/src/components/taskSelection/multipleTaskHistories.js create mode 100644 frontend/src/components/taskSelection/tests/multipleTaskHistories.test.js diff --git a/frontend/package.json b/frontend/package.json index 9b5d35e2d6..350a1953e8 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -42,6 +42,7 @@ "osmtogeojson": "^3.0.0-beta.3", "query-string": "^6.13.8", "react": "^16.14.0", + "react-accessible-accordion": "^3.3.3", "react-calendar-heatmap": "^1.8.1", "react-chartjs-2": "^2.11.1", "react-click-outside": "^3.0.1", diff --git a/frontend/src/assets/styles/_accordion.scss b/frontend/src/assets/styles/_accordion.scss new file mode 100644 index 0000000000..38ed992ed4 --- /dev/null +++ b/frontend/src/assets/styles/_accordion.scss @@ -0,0 +1,33 @@ +.accordion_button { + &::before { + display: inline-block; + content: ''; + height: 8px; + width: 8px; + margin-right: 12px; + border-bottom: 2px solid currentColor; + border-right: 2px solid currentColor; + transform: rotate(-45deg); + } +} + +.accordion_button[aria-expanded='true']::before, +.accordion_button[aria-selected='true']::before { + transform: rotate(45deg); +} + +[hidden] { + display: none; +} +.accordion_panel { + animation: fadein 0.35s ease-in; +} + +@keyframes fadein { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } +} diff --git a/frontend/src/assets/styles/index.scss b/frontend/src/assets/styles/index.scss index bdb93e7873..758217f8ea 100644 --- a/frontend/src/assets/styles/index.scss +++ b/frontend/src/assets/styles/index.scss @@ -6,4 +6,5 @@ @import 'testimonials'; @import 'organizations'; @import 'calendarheatmap'; -@import 'datepicker'; \ No newline at end of file +@import 'datepicker'; +@import 'accordion'; \ No newline at end of file diff --git a/frontend/src/components/taskSelection/action.js b/frontend/src/components/taskSelection/action.js index 6328454db0..595b8bf2d5 100644 --- a/frontend/src/components/taskSelection/action.js +++ b/frontend/src/components/taskSelection/action.js @@ -25,12 +25,15 @@ import { SidebarToggle, ReopenEditor, } from './actionSidebars'; +import { fetchLocalJSONAPI } from '../../network/genericJSONRequest'; +import { MultipleTaskHistoriesAccordion } from './multipleTaskHistories'; const Editor = React.lazy(() => import('../editor')); export function TaskMapAction({ project, projectIsReady, tasks, activeTasks, action, editor }) { useSetProjectPageTitleTag(project); const userDetails = useSelector((state) => state.auth.get('userDetails')); + const token = useSelector((state) => state.auth.get('token')); const [activeSection, setActiveSection] = useState('completion'); const [activeEditor, setActiveEditor] = useState(editor); const [showSidebar, setShowSidebar] = useState(true); @@ -39,6 +42,7 @@ export function TaskMapAction({ project, projectIsReady, tasks, activeTasks, act const [taskComment, setTaskComment] = useState(''); const [selectedStatus, setSelectedStatus] = useState(); const [historyTabChecked, setHistoryTabChecked] = useState(false); + const [multipleTasksInfo, setMultipleTasksInfo] = useState({}); const intl = useIntl(); const activeTask = activeTasks && activeTasks[0]; @@ -49,6 +53,7 @@ export function TaskMapAction({ project, projectIsReady, tasks, activeTasks, act `projects/${project.projectId}/tasks/${tasksIds[0]}/`, project.projectId && tasksIds && tasksIds.length === 1, ); + const readTaskComments = useReadTaskComments(taskHistory); const getTaskGpxUrlCallback = useCallback((project, tasks) => getTaskGpxUrl(project, tasks), []); @@ -59,6 +64,18 @@ export function TaskMapAction({ project, projectIsReady, tasks, activeTasks, act setActiveSection('history'); }; + const handleTaskHistories = (taskIds) => { + if (taskIds.length < 1) return; + + taskIds.forEach((id) => { + if (!Object.keys(multipleTasksInfo).includes(id.toString())) { + fetchLocalJSONAPI(`projects/${project.projectId}/tasks/${id}/`, token).then((data) => + setMultipleTasksInfo({ ...multipleTasksInfo, [id]: data }), + ); + } + }); + }; + useEffect(() => { if (!editor && projectIsReady && userDetails.defaultEditor && tasks && tasksIds) { let editorToUse; @@ -200,7 +217,7 @@ export function TaskMapAction({ project, projectIsReady, tasks, activeTasks, act > - {activeTasks && activeTasks.length === 1 && ( + {activeTasks && ( historyTabSwitch()} > - {taskHistory && + {activeTasks.length === 1 && + taskHistory && taskHistory.taskHistory && taskHistory.taskHistory.length > 1 && ( )} + {action === 'VALIDATION' && activeTasks.length > 1 && ( + + {activeTasks.length} + + )} )}
@@ -304,12 +330,26 @@ export function TaskMapAction({ project, projectIsReady, tasks, activeTasks, act )} {activeSection === 'history' && ( - + <> + {activeTasks.length === 1 && ( + <> + + + )} + {action === 'VALIDATION' && activeTasks.length > 1 && ( + + )} + )}
diff --git a/frontend/src/components/taskSelection/multipleTaskHistories.js b/frontend/src/components/taskSelection/multipleTaskHistories.js new file mode 100644 index 0000000000..7a74d8b363 --- /dev/null +++ b/frontend/src/components/taskSelection/multipleTaskHistories.js @@ -0,0 +1,36 @@ +import React from 'react'; +import { + Accordion, + AccordionItem, + AccordionItemHeading, + AccordionItemButton, + AccordionItemPanel, +} from 'react-accessible-accordion'; +import { FormattedMessage } from 'react-intl'; + +import messages from './messages'; +import { TaskHistory } from './taskActivity'; + +export const MultipleTaskHistoriesAccordion = ({ handleChange, tasks, projectId, mapperLevel }) => { + return ( + + {tasks.map((t) => ( + + + + + + + + + + + ))} + + ); +}; diff --git a/frontend/src/components/taskSelection/taskActivity.js b/frontend/src/components/taskSelection/taskActivity.js index 0e00427d26..4d09c53c62 100644 --- a/frontend/src/components/taskSelection/taskActivity.js +++ b/frontend/src/components/taskSelection/taskActivity.js @@ -162,8 +162,11 @@ export const TaskHistory = ({ projectId, taskId, commentPayload, mapperLevel }) } else { return ( <> -
-
+
+
setShowTaskComments(!showTaskComments)} @@ -172,7 +175,7 @@ export const TaskHistory = ({ projectId, taskId, commentPayload, mapperLevel }) -
+
setShowTaskChanges(!showTaskChanges)} @@ -183,7 +186,7 @@ export const TaskHistory = ({ projectId, taskId, commentPayload, mapperLevel })
{shownHistory.map((t, n) => ( -
+
{ + let handleChange = jest.fn(); + + it('does not render accordion with task history items if there are no tasks', () => { + render( + + + , + ); + + expect(screen.queryByRole('button')).not.toBeInTheDocument(); + expect(handleChange).not.toHaveBeenCalled(); + expect(screen.queryByText(/Comments/i)).not.toBeInTheDocument(); + expect(screen.queryByText(/Activities/i)).not.toBeInTheDocument(); + }); + + it('renders accordion correctly with task history items for 2 tasks', () => { + const tasks = [ + { + taskId: 1, + taskHistory: [ + { + historyId: 11334, + taskId: 1, + action: 'STATE_CHANGE', + actionText: 'VALIDATED', + actionDate: '2020-09-04T14:35:20.174515Z', + actionBy: 'user_123', + pictureUrl: null, + issues: null, + }, + ], + }, + { + taskId: 2, + taskHistory: [ + { + historyId: 5705, + taskId: 2, + action: 'STATE_CHANGE', + actionText: 'MAPPED', + actionDate: '2020-04-08T10:19:53.537193Z', + actionBy: 'test_user', + pictureUrl: null, + issues: null, + }, + ], + }, + ]; + render( + + + , + ); + + expect(screen.getByText(/Task 1/i)).toBeInTheDocument(); + expect(screen.getByText(/Task 2/i)).toBeInTheDocument(); + + const taskAccordionItems = screen.getAllByRole('button'); + taskAccordionItems.forEach((taskBtn) => { + fireEvent.click(taskBtn); + }); + + expect(handleChange).toHaveBeenCalledTimes(2); + expect(screen.getAllByText(/Comments/i)).toHaveLength(2); + expect(screen.getAllByText(/Activities/i)).toHaveLength(2); + }); +}); diff --git a/frontend/yarn.lock b/frontend/yarn.lock index 5cbe77c5c0..c9dfcff124 100644 --- a/frontend/yarn.lock +++ b/frontend/yarn.lock @@ -10345,6 +10345,11 @@ rbush@^2.0.1: dependencies: quickselect "^1.0.1" +react-accessible-accordion@^3.3.3: + version "3.3.3" + resolved "https://registry.yarnpkg.com/react-accessible-accordion/-/react-accessible-accordion-3.3.3.tgz#387a3f4ab1840b5b6dff9f1f16544f658d5c8e12" + integrity sha512-I1Niy21IIyXIzcDuIlTnnN3k8bUux7puq60eyNuwf+lhvftnocn7hLhAz2NycXrZOqBClqi50YBqXlnbOTNrjQ== + react-app-polyfill@^1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/react-app-polyfill/-/react-app-polyfill-1.0.6.tgz#890f8d7f2842ce6073f030b117de9130a5f385f0" From 17a2622c1c6a3ee54b6638aa6050728b7d7c81c8 Mon Sep 17 00:00:00 2001 From: Wille Marcel Date: Mon, 28 Dec 2020 08:43:59 -0300 Subject: [PATCH 19/23] Avoid error on project list + set action=any on My / Manage projects pages --- backend/models/dtos/project_dto.py | 15 +++------------ frontend/src/components/projects/myProjectNav.js | 6 +++++- frontend/src/components/teamsAndOrgs/menu.js | 4 +++- .../src/components/userDetail/headerProfile.js | 2 +- frontend/src/views/management.js | 2 +- frontend/src/views/welcome.js | 2 +- 6 files changed, 14 insertions(+), 17 deletions(-) diff --git a/backend/models/dtos/project_dto.py b/backend/models/dtos/project_dto.py index d15be90960..e45b2cf22a 100644 --- a/backend/models/dtos/project_dto.py +++ b/backend/models/dtos/project_dto.py @@ -26,15 +26,6 @@ ) from backend.models.dtos.campaign_dto import CampaignDTO -ORDER_BY_OPTIONS = ( - "id", - "mapper_level", - "priority", - "status", - "last_updated", - "due_date", -) - def is_known_project_status(value): """ Validates that Project Status is known value """ @@ -289,7 +280,7 @@ class ProjectSearchDTO(Model): preferred_locale = StringType(default="en") mapper_level = StringType(validators=[is_known_mapping_level]) - action = StringType(choices=("map", "validate", "any")) + action = StringType() mapping_types = ListType(StringType, validators=[is_known_mapping_type]) mapping_types_exact = BooleanType(required=False) project_statuses = ListType(StringType, validators=[is_known_project_status]) @@ -297,8 +288,8 @@ class ProjectSearchDTO(Model): organisation_id = IntType() team_id = IntType() campaign = StringType() - order_by = StringType(choices=ORDER_BY_OPTIONS) - order_by_type = StringType(choices=("ASC", "DESC")) + order_by = StringType() + order_by_type = StringType() country = StringType() page = IntType(required=True) text_search = StringType() diff --git a/frontend/src/components/projects/myProjectNav.js b/frontend/src/components/projects/myProjectNav.js index 86b3cf8fe4..533dac86f6 100644 --- a/frontend/src/components/projects/myProjectNav.js +++ b/frontend/src/components/projects/myProjectNav.js @@ -69,7 +69,11 @@ export const MyProjectNav = (props) => { {!notAnyFilter && ( )} diff --git a/frontend/src/components/teamsAndOrgs/menu.js b/frontend/src/components/teamsAndOrgs/menu.js index d7d2fe582f..060cdaf7d2 100644 --- a/frontend/src/components/teamsAndOrgs/menu.js +++ b/frontend/src/components/teamsAndOrgs/menu.js @@ -19,7 +19,9 @@ export function ManagementMenu({ isAdmin }: Object) { links = links.slice(0, 3); } const items = links.map((item) => ({ - url: `/manage/${item}/${item === 'projects' ? '?status=PUBLISHED&managedByMe=1' : ''}`, + url: `/manage/${item}/${ + item === 'projects' ? '?status=PUBLISHED&managedByMe=1&action=any' : '' + }`, label: , })); diff --git a/frontend/src/components/userDetail/headerProfile.js b/frontend/src/components/userDetail/headerProfile.js index 97b38a4024..45e3579768 100644 --- a/frontend/src/components/userDetail/headerProfile.js +++ b/frontend/src/components/userDetail/headerProfile.js @@ -89,7 +89,7 @@ const MyContributionsNav = ({ username, authUser }) => { const items = [ { url: `/contributions`, label: }, { - url: '/contributions/projects/?mappedByMe=1', + url: '/contributions/projects/?mappedByMe=1&action=any', label: , }, { url: '/contributions/tasks', label: }, diff --git a/frontend/src/views/management.js b/frontend/src/views/management.js index 6e55243c76..2afb20d3d9 100644 --- a/frontend/src/views/management.js +++ b/frontend/src/views/management.js @@ -25,7 +25,7 @@ export function ManagementPageIndex() { <> diff --git a/frontend/src/views/welcome.js b/frontend/src/views/welcome.js index b387085257..0c0d3a0e67 100644 --- a/frontend/src/views/welcome.js +++ b/frontend/src/views/welcome.js @@ -78,7 +78,7 @@ export function Welcome() { {completeness <= 0.5 ? ( ) : userDetails.projectsMapped ? ( - + ) : ( )} From 22a262354425b55d64a57e36378eac3edbc9468f Mon Sep 17 00:00:00 2001 From: Ramya Date: Mon, 4 Jan 2021 19:32:53 +0530 Subject: [PATCH 20/23] Ensure mappers receive notifications on project chat (#4036) * Ensure mappers receive notifs on project chat * Black formatting * User link in comment & chat notifs --- backend/services/messaging/message_service.py | 83 +++++++++++-------- backend/services/messaging/smtp_service.py | 4 + .../messaging/templates/message_alert_en.html | 8 +- 3 files changed, 61 insertions(+), 34 deletions(-) diff --git a/backend/services/messaging/message_service.py b/backend/services/messaging/message_service.py index 2430a483ee..eb4f3a23f0 100644 --- a/backend/services/messaging/message_service.py +++ b/backend/services/messaging/message_service.py @@ -181,6 +181,7 @@ def _push_messages(messages): message["message"].id, UserService.get_user_by_id(message["message"].from_user_id).username, message["message"].project_id, + message["message"].task_id, clean_html(message["message"].subject), message["message"].message, obj.message_type, @@ -238,6 +239,7 @@ def send_message_after_comment( user_from = User.query.get(comment_from) if user_from is None: raise ValueError("Username not found") + user_link = MessageService.get_user_link(user_from.username) task_link = MessageService.get_task_link(project_id, task_id) messages = [] @@ -257,7 +259,9 @@ def send_message_after_comment( message.from_user_id = comment_from message.task_id = task_id message.to_user_id = user.id - message.subject = f"{user_from.username} left a comment in {task_link} of Project {project_id}" + message.subject = ( + f"{user_link} left a comment in {task_link} of Project {project_id}" + ) message.message = comment messages.append(dict(message=message, user=user)) @@ -375,55 +379,68 @@ def send_message_after_chat(chat_from: int, chat: str, project_id: int): app = create_app() with app.app_context(): usernames = MessageService._parse_message_for_username(chat, project_id) - if len(usernames) == 0: - return # Nobody @'d so return - - link = MessageService.get_project_link( - project_id, include_chat_section=True - ) - - messages = [] - for username in usernames: - current_app.logger.debug(f"Searching for {username}") - try: - user = UserService.get_user_by_username(username) - except NotFound: - current_app.logger.error(f"Username {username} not found") - continue # If we can't find the user, keep going no need to fail + if len(usernames) != 0: + link = MessageService.get_project_link( + project_id, include_chat_section=True + ) + messages = [] + for username in usernames: + current_app.logger.debug(f"Searching for {username}") + try: + user = UserService.get_user_by_username(username) + except NotFound: + current_app.logger.error(f"Username {username} not found") + continue # If we can't find the user, keep going no need to fail - message = Message() - message.message_type = MessageType.MENTION_NOTIFICATION.value - message.project_id = project_id - message.from_user_id = chat_from - message.to_user_id = user.id - message.subject = f"You were mentioned in {link} chat" - message.message = chat - messages.append(dict(message=message, user=user)) + message = Message() + message.message_type = MessageType.MENTION_NOTIFICATION.value + message.project_id = project_id + message.from_user_id = chat_from + message.to_user_id = user.id + message.subject = f"You were mentioned in {link} chat" + message.message = chat + messages.append(dict(message=message, user=user)) - MessageService._push_messages(messages) + MessageService._push_messages(messages) query = """ select user_id from project_favorites where project_id = :project_id""" - result = db.engine.execute(text(query), project_id=project_id) - favorited_users = [r[0] for r in result] + favorited_users_results = db.engine.execute( + text(query), project_id=project_id + ) + favorited_users = [r[0] for r in favorited_users_results] + + # Notify all contributors except the user that created the comment. + contributed_users_results = ( + TaskHistory.query.with_entities(TaskHistory.user_id.distinct()) + .filter(TaskHistory.project_id == project_id) + .filter(TaskHistory.user_id != chat_from) + .filter(TaskHistory.action == TaskAction.STATE_CHANGE.name) + .all() + ) + contributed_users = [r[0] for r in contributed_users_results] + + users_to_notify = list(set(contributed_users + favorited_users)) - if len(favorited_users) != 0: + if len(users_to_notify) != 0: + from_user = User.query.get(chat_from) + from_user_link = MessageService.get_user_link(from_user.username) project_link = MessageService.get_project_link( project_id, include_chat_section=True ) - # project_title = ProjectService.get_project_title(project_id) messages = [] - for user_id in favorited_users: - + for user_id in users_to_notify: try: user = UserService.get_user_dto_by_id(user_id) except NotFound: continue # If we can't find the user, keep going no need to fail - message = Message() message.message_type = MessageType.PROJECT_CHAT_NOTIFICATION.value message.project_id = project_id + message.from_user_id = chat_from message.to_user_id = user.id - message.subject = f"{chat_from} left a comment in {project_link}" + message.subject = ( + f"{from_user_link} left a comment in {project_link}" + ) message.message = chat messages.append(dict(message=message, user=user)) diff --git a/backend/services/messaging/smtp_service.py b/backend/services/messaging/smtp_service.py index 2e50e7fb79..223e233a64 100644 --- a/backend/services/messaging/smtp_service.py +++ b/backend/services/messaging/smtp_service.py @@ -52,6 +52,7 @@ def send_email_alert( message_id: int, from_username: str, project_id: int, + task_id: int, subject: str, content: str, message_type: int, @@ -60,6 +61,7 @@ def send_email_alert( current_app.logger.debug(f"Test if email required {to_address}") from_user_link = f"{current_app.config['APP_BASE_URL']}/users/{from_username}" project_link = f"{current_app.config['APP_BASE_URL']}/projects/{project_id}" + task_link = f"{current_app.config['APP_BASE_URL']}/projects/{project_id}/tasks/?search={task_id}" settings_url = "{}/settings#notifications".format( current_app.config["APP_BASE_URL"] ) @@ -76,6 +78,8 @@ def send_email_alert( "FROM_USERNAME": from_username, "PROJECT_LINK": project_link, "PROJECT_ID": str(project_id) if project_id is not None else None, + "TASK_LINK": task_link, + "TASK_ID": str(task_id) if task_id is not None else None, "PROFILE_LINK": inbox_url, "SETTINGS_LINK": settings_url, "CONTENT": format_username_link(content), diff --git a/backend/services/messaging/templates/message_alert_en.html b/backend/services/messaging/templates/message_alert_en.html index 8c465bdb4f..5c37f8aba5 100644 --- a/backend/services/messaging/templates/message_alert_en.html +++ b/backend/services/messaging/templates/message_alert_en.html @@ -1,6 +1,6 @@ {% extends "base.html" %} {% block content %} - {% if values['MESSAGE_TYPE'] in [3, 8, 9] %} + {% if values['MESSAGE_TYPE'] == 3 %}

@{{values['FROM_USERNAME']}} mentioned you in a comment on Project {{values['PROJECT_ID']}}:

{% endif %} {% if values['MESSAGE_TYPE'] == 4 %} @@ -9,6 +9,12 @@ {% if values['MESSAGE_TYPE'] == 5 %}

Task on Project {{values['PROJECT_ID']}} needs more mapping:

{% endif %} + {% if values['MESSAGE_TYPE'] == 8 %} +

@{{values['FROM_USERNAME']}} left a comment on Task {{values['TASK_ID']}} in Project {{values['PROJECT_ID']}}:

+ {% endif %} + {% if values['MESSAGE_TYPE'] == 9 %} +

@{{values['FROM_USERNAME']}} left a comment on Project {{values['PROJECT_ID']}}:

+ {% endif %}

{{ values['CONTENT']|safe }}

From d42851c07b1e98ee7e2edb98be2e418b585ee367 Mon Sep 17 00:00:00 2001 From: Wille Marcel Date: Tue, 5 Jan 2021 12:28:28 -0300 Subject: [PATCH 21/23] Add "Resources" tab for validation (#4042) * add resources tab for validators * Add horizontal scroll to ActionTabsNav * use flex on the task selection dropdown * Add to resourcesTab tests * Add tests to ActionTabsNav Co-authored-by: Diana Rita Nanyanzi <31903212+d-rita@users.noreply.github.com> --- frontend/src/components/button.js | 5 +- .../components/projectDetail/osmchaButton.js | 20 ++-- .../projectDetail/tests/osmchaButton.test.js | 22 +++++ .../src/components/taskSelection/action.js | 62 +++---------- .../components/taskSelection/actionTabsNav.js | 54 +++++++++++ .../src/components/taskSelection/messages.js | 24 +++++ .../components/taskSelection/resourcesTab.js | 78 ++++++++++++++++ .../tests/actionsTabsNav.test.js | 91 +++++++++++++++++++ .../taskSelection/tests/resourcesTab.test.js | 53 +++++++++++ frontend/src/hooks/UseTaskBbox.js | 13 +++ frontend/src/hooks/tests/UseTaskBbox.test.js | 23 +++++ frontend/src/locales/en.json | 6 ++ .../src/network/tests/mockData/taskGrid.js | 82 +++++++++++++++++ 13 files changed, 475 insertions(+), 58 deletions(-) create mode 100644 frontend/src/components/taskSelection/actionTabsNav.js create mode 100644 frontend/src/components/taskSelection/resourcesTab.js create mode 100644 frontend/src/components/taskSelection/tests/actionsTabsNav.test.js create mode 100644 frontend/src/components/taskSelection/tests/resourcesTab.test.js create mode 100644 frontend/src/hooks/UseTaskBbox.js create mode 100644 frontend/src/hooks/tests/UseTaskBbox.test.js create mode 100644 frontend/src/network/tests/mockData/taskGrid.js diff --git a/frontend/src/components/button.js b/frontend/src/components/button.js index baaff73643..bbf2d7ac29 100644 --- a/frontend/src/components/button.js +++ b/frontend/src/components/button.js @@ -33,13 +33,14 @@ export function FormSubmitButton({ children, className, disabledClassName, disab ); } -export function CustomButton({ onClick, children, className }: Object) { +export function CustomButton({ onClick, children, className, disabled }: Object) { return ( diff --git a/frontend/src/components/projectDetail/osmchaButton.js b/frontend/src/components/projectDetail/osmchaButton.js index 853d3beb5d..e5f8175534 100644 --- a/frontend/src/components/projectDetail/osmchaButton.js +++ b/frontend/src/components/projectDetail/osmchaButton.js @@ -6,15 +6,17 @@ import { CustomButton } from '../button'; import { ExternalLinkIcon } from '../svgIcons'; import { formatOSMChaLink } from '../../utils/osmchaLink'; -export const OSMChaButton = ({ project, className, compact = false }: Object) => ( +export const OSMChaButton = ({ project, className, compact = false, children }: Object) => ( - - {compact ? ( - - ) : ( - - )} - - + {children || ( + + {compact ? ( + + ) : ( + + )} + + + )} ); diff --git a/frontend/src/components/projectDetail/tests/osmchaButton.test.js b/frontend/src/components/projectDetail/tests/osmchaButton.test.js index 5d3826167e..72c56a0d22 100644 --- a/frontend/src/components/projectDetail/tests/osmchaButton.test.js +++ b/frontend/src/components/projectDetail/tests/osmchaButton.test.js @@ -42,3 +42,25 @@ test('OSMChaButton with compact True', () => { expect(container.querySelector('svg.pl1')).toBeInTheDocument(); expect(container.querySelector('svg.pl2')).not.toBeInTheDocument(); }); + +test('OSMChaButton with children', () => { + const project = { + osmchaFilterId: null, + aoiBBOX: [0, 0, 1, 1], + changesetComment: '#TM4-TEST', + created: '2019-08-27T12:20:42.460024Z', + }; + const { container } = render( + + + Custom text + + , + ); + expect(screen.queryByText('Changesets')).not.toBeInTheDocument(); + expect(screen.queryByText('Changesets in OSMCha')).not.toBeInTheDocument(); + expect(screen.queryByText('Custom text')).toBeInTheDocument(); + expect(container.querySelector('a').href).toBe(formatOSMChaLink(project)); + expect(container.querySelector('svg.pl1')).not.toBeInTheDocument(); + expect(container.querySelector('svg.pl2')).not.toBeInTheDocument(); +}); diff --git a/frontend/src/components/taskSelection/action.js b/frontend/src/components/taskSelection/action.js index 595b8bf2d5..b0c07f61d7 100644 --- a/frontend/src/components/taskSelection/action.js +++ b/frontend/src/components/taskSelection/action.js @@ -27,6 +27,8 @@ import { } from './actionSidebars'; import { fetchLocalJSONAPI } from '../../network/genericJSONRequest'; import { MultipleTaskHistoriesAccordion } from './multipleTaskHistories'; +import { ResourcesTab } from './resourcesTab'; +import { ActionTabsNav } from './actionTabsNav'; const Editor = React.lazy(() => import('../editor')); @@ -200,53 +202,16 @@ export function TaskMapAction({ project, projectIsReady, tasks, activeTasks, act
-
- setActiveSection('completion')} - > - - - setActiveSection('instructions')} - > - - - {activeTasks && ( - historyTabSwitch()} - > - - {activeTasks.length === 1 && - taskHistory && - taskHistory.taskHistory && - taskHistory.taskHistory.length > 1 && ( - - {taskHistory.taskHistory.length} - - )} - {action === 'VALIDATION' && activeTasks.length > 1 && ( - - {activeTasks.length} - - )} - - )} -
+
{activeSection === 'completion' && ( @@ -351,6 +316,9 @@ export function TaskMapAction({ project, projectIsReady, tasks, activeTasks, act )} )} + {activeSection === 'resources' && ( + + )}
diff --git a/frontend/src/components/taskSelection/actionTabsNav.js b/frontend/src/components/taskSelection/actionTabsNav.js new file mode 100644 index 0000000000..d19ae7a813 --- /dev/null +++ b/frontend/src/components/taskSelection/actionTabsNav.js @@ -0,0 +1,54 @@ +import React from 'react'; +import { FormattedMessage } from 'react-intl'; + +import messages from './messages'; + +export const ActionTabsNav = ({ + activeSection, + setActiveSection, + activeTasks, + historyTabSwitch, + taskHistoryLength, + action, +}) => { + return ( +
+ setActiveSection('completion')} + > + + + setActiveSection('instructions')} + > + + + historyTabSwitch()} + > + + {activeTasks.length === 1 && taskHistoryLength > 1 && ( + + {taskHistoryLength} + + )} + + {action === 'VALIDATION' && ( + setActiveSection('resources')} + > + + + )} +
+ ); +}; diff --git a/frontend/src/components/taskSelection/messages.js b/frontend/src/components/taskSelection/messages.js index a9a620c4cb..8c064c051d 100644 --- a/frontend/src/components/taskSelection/messages.js +++ b/frontend/src/components/taskSelection/messages.js @@ -323,6 +323,10 @@ export default defineMessages({ id: 'project.tasks.history.stateChanges', defaultMessage: 'Activities', }, + resources: { + id: 'project.tasks.action.resources', + defaultMessage: 'Resources', + }, finishMappingTitle: { id: 'project.tasks.action.finish_mapping.title', defaultMessage: 'Once you have finished mapping', @@ -455,6 +459,26 @@ export default defineMessages({ id: 'project.tasks.activity.overpass.visualization', defaultMessage: 'Visualize with Overpass', }, + projectData: { + id: 'project.resources.data', + defaultMessage: "Project's data", + }, + changesets: { + id: 'project.resources.changesets', + defaultMessage: 'Changesets', + }, + selectTask: { + id: 'project.resources.changesets.select_task', + defaultMessage: 'Select task', + }, + entireProject: { + id: 'project.resources.changesets.entire_project', + defaultMessage: 'Entire project', + }, + seeTaskChangesets: { + id: 'project.resources.changesets.task', + defaultMessage: "See task's changesets", + }, taskOnOSMCha: { id: 'project.tasks.activity.osmcha', defaultMessage: 'View changesets in OSMCha', diff --git a/frontend/src/components/taskSelection/resourcesTab.js b/frontend/src/components/taskSelection/resourcesTab.js new file mode 100644 index 0000000000..af6d2548ef --- /dev/null +++ b/frontend/src/components/taskSelection/resourcesTab.js @@ -0,0 +1,78 @@ +import React, { useMemo, useState } from 'react'; +import Select from 'react-select'; +import { FormattedMessage } from 'react-intl'; + +import messages from './messages'; +import { useTaskBbox } from '../../hooks/UseTaskBbox'; +import { formatOSMChaLink } from '../../utils/osmchaLink'; +import { ExternalLinkIcon } from '../svgIcons'; +import { CustomButton } from '../button'; +import { OSMChaButton } from '../projectDetail/osmchaButton'; +import { DownloadAOIButton, DownloadTaskGridButton } from '../projectDetail/downloadButtons'; + +export const ResourcesTab = ({ project, tasksIds, tasksGeojson }) => { + const [activeTask, setActiveTask] = useState(tasksIds.length === 1 ? tasksIds[0] : null); + const bbox = useTaskBbox(activeTask, tasksGeojson); + const osmchaLink = useMemo( + () => + formatOSMChaLink({ + aoiBBOX: bbox, + created: project.created, + changesetComment: project.changesetComment, + }), + [bbox, project.created, project.changesetComment], + ); + + return ( + <> +

+ +

+
+

+ + + + + + +

+
+ {tasksIds.length > 1 && ( +