From e4f95e9147a337f9a675ffebff641ea5bd9a0430 Mon Sep 17 00:00:00 2001 From: "@dhis2-bot" Date: Wed, 13 Sep 2023 03:31:57 +0200 Subject: [PATCH 001/129] fix(translations): sync translations from transifex (master) Automatically merged. --- .tx/config | 2 +- i18n/es.po | 6 +- i18n/{uz.po => uz_UZ_Cyrl.po} | 0 i18n/uz_UZ_Latn.po | 1175 +++++++++++++++++++++++++++++++++ 4 files changed, 1179 insertions(+), 4 deletions(-) rename i18n/{uz.po => uz_UZ_Cyrl.po} (100%) create mode 100644 i18n/uz_UZ_Latn.po diff --git a/.tx/config b/.tx/config index 5b3223f33..9cff8d175 100644 --- a/.tx/config +++ b/.tx/config @@ -1,6 +1,6 @@ [main] host = https://www.transifex.com -lang_map = fa_AF: prs, uz@Cyrl: uz, uz@Latn: uz_Latn +lang_map = fa_AF: prs, uz@Cyrl: uz_UZ_Cyrl, uz@Latn: uz_UZ_Latn [o:hisp-uio:p:app-analytics:r:en-pot] file_filter = i18n/.po diff --git a/i18n/es.po b/i18n/es.po index 2983c3317..2e622029d 100644 --- a/i18n/es.po +++ b/i18n/es.po @@ -6,7 +6,7 @@ # Gabriela Rodriguez , 2022 # Viktor Varland , 2022 # Marta Vila , 2023 -# phil_dhis2, 2023 +# Philip Larsen Donnelly, 2023 # Janeth Cruz, 2023 # Sergio Valenzuela , 2023 # Enzo Nicolas Rossi , 2023 @@ -400,7 +400,7 @@ msgid "Write an interpretation" msgstr "Escribir una interpretación" msgid "Post interpretation" -msgstr "" +msgstr "Interpretación posterior" msgid "Interpretations" msgstr "Interpretaciones" @@ -415,7 +415,7 @@ msgstr[1] "{{contar}} respuestas" msgstr[2] "{{count}} respuestas" msgid "View replies" -msgstr "" +msgstr "Ver respuestas" msgid "Unlike" msgstr "diferente a" diff --git a/i18n/uz.po b/i18n/uz_UZ_Cyrl.po similarity index 100% rename from i18n/uz.po rename to i18n/uz_UZ_Cyrl.po diff --git a/i18n/uz_UZ_Latn.po b/i18n/uz_UZ_Latn.po new file mode 100644 index 000000000..d6871a81b --- /dev/null +++ b/i18n/uz_UZ_Latn.po @@ -0,0 +1,1175 @@ +# +# Translators: +# Yury Rogachev , 2023 +# +msgid "" +msgstr "" +"Project-Id-Version: i18next-conv\n" +"POT-Creation-Date: 2023-07-06T08:30:33.216Z\n" +"PO-Revision-Date: 2020-04-28 22:05+0000\n" +"Last-Translator: Yury Rogachev , 2023\n" +"Language-Team: Uzbek (Latin) (https://app.transifex.com/hisp-uio/teams/100509/uz@Latn/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: uz@Latn\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +msgid "view only" +msgstr "" + +msgid "view and edit" +msgstr "" + +msgid "all users ({{accessLevel}})" +msgstr "" + +msgid "{{userOrGroup}} ({{accessLevel}})" +msgstr "" + +msgid "Shared with {{commaSeparatedListOfUsersAndGroups}}" +msgstr "" + +msgid "Not shared with any users or groups" +msgstr "" + +msgid "No description" +msgstr "Tavsif yoʼq" + +msgid "Last updated {{time}}" +msgstr "" + +msgid "Created {{time}} by {{author}}" +msgstr "" + +msgid "Created {{time}}" +msgstr "" + +msgid "Viewed {{count}} times" +msgid_plural "Viewed {{count}} times" +msgstr[0] "" + +msgid "Notifications" +msgstr "" + +msgid "You're subscribed and getting updates about new interpretations." +msgstr "" + +msgid "Unsubscribe" +msgstr "" + +msgid "Subscribe to get updates about new interpretations." +msgstr "" + +msgid "Subscribe" +msgstr "" + +msgid "About this map" +msgstr "" + +msgid "About this line list" +msgstr "" + +msgid "About this visualization" +msgstr "" + +msgid "This app could not retrieve required data." +msgstr "" + +msgid "Network error" +msgstr "" + +msgid "Data / Edit calculation" +msgstr "" + +msgid "Data / New calculation" +msgstr "" + +msgid "Remove item" +msgstr "" + +msgid "Check formula" +msgstr "" + +msgid "Calculation name" +msgstr "" + +msgid "Shown in table headers and chart axes/legends" +msgstr "" + +msgid "Delete calculation" +msgstr "" + +msgid "Cancel" +msgstr "Бекор қилиш" + +msgid "The calculation can only be saved with a valid formula" +msgstr "" + +msgid "Add a name to save this calculation" +msgstr "" + +msgid "Save calculation" +msgstr "" + +msgid "" +"Are you sure you want to delete this calculation? It may be used by other " +"visualizations." +msgstr "" + +msgid "Yes, delete" +msgstr "" + +msgid "Totals only" +msgstr "" + +msgid "Details only" +msgstr "" + +msgid "Loading" +msgstr "Yuklanmoqda" + +msgid "Data elements" +msgstr "Maʼlumot elementlari" + +msgid "Search by data element name" +msgstr "" + +msgid "No data elements found for \"{{- searchTerm}}\"" +msgstr "" + +msgid "No data elements found" +msgstr "" + +msgid "" +"Drag items here, or double click in the list, to start building a " +"calculation formula" +msgstr "" + +msgid "Math operators" +msgstr "" + +msgid "Data Type" +msgstr "Maʼlumot turi" + +msgid "All types" +msgstr "Barcha turlari" + +msgid "Disaggregation" +msgstr "" + +msgid "No data" +msgstr "Maʼlumot yoʼq" + +msgid "Search by data item name" +msgstr "" + +msgid "No items selected" +msgstr "Element tanlanmagan" + +msgid "Selected Items" +msgstr "Element tanlangan" + +msgid "No indicators found" +msgstr "" + +msgid "No data sets found" +msgstr "" + +msgid "No event data items found" +msgstr "" + +msgid "No program indicators found" +msgstr "" + +msgid "No indicators found for \"{{- searchTerm}}\"" +msgstr "" + +msgid "No data sets found for \"{{- searchTerm}}\"" +msgstr "" + +msgid "No event data items found for \"{{- searchTerm}}\"" +msgstr "" + +msgid "No program indicators found for \"{{- searchTerm}}\"" +msgstr "" + +msgid "Nothing found for \"{{- searchTerm}}\"" +msgstr "" + +msgid "Calculation" +msgstr "" + +msgid "Metric type" +msgstr "" + +msgid "All metrics" +msgstr "Barcha koʼrsatgichlar" + +msgid "Move to {{axisName}}" +msgstr "Harakatlaning {{axisName}} ga qarab" + +msgid "Add to {{axisName}}" +msgstr "{{axisName}} ga qoʼshing" + +msgid "Not available for {{visualizationType}}" +msgstr "{{visualizationType}} uchun mavjud emas" + +msgid "Remove Assigned Categories" +msgstr "Belgilangan kategoriyalar oʼchirilsin" + +msgid "Add Assigned Categories" +msgstr "Belgilangan kategoriyalar qoʼshilsin" + +msgid "Remove" +msgstr "Olib tashlash" + +msgid "Filter dimensions" +msgstr "Filtr sozlamalari" + +msgid "Main dimensions" +msgstr "Umumiy oʼlchamlar" + +msgid "Your dimensions" +msgstr "Sizning sozlamalaringiz" + +msgid "Dimension recommended with selected data" +msgstr "Tanlangan maʼlumotlar uchun sozlamalar tavsiya etiladi" + +msgid "All items" +msgstr "" + +msgid "Automatically include all items" +msgstr "" + +msgid "" +"Select all {{- dimensionTitle}} items. With this option, new items added in " +"the future will be automatically included." +msgstr "" + +msgid "Manually select items..." +msgstr "" + +msgid "Nothing found in {{- dimensionTitle}}" +msgstr "" + +msgid "Search" +msgstr "Izlash" + +msgid "Nothing found for {{- searchTerm}}" +msgstr "" + +msgid "Delete {{fileType}}" +msgstr "" + +msgid "" +"This {{fileType}} and related interpretations will be deleted. Continue?" +msgstr "" + +msgid "Delete" +msgstr "Oʼchirib tashlash" + +msgid "File" +msgstr "Fayl" + +msgid "New" +msgstr "Yangi" + +msgid "Open…" +msgstr "" + +msgid "Save" +msgstr "Saqlash" + +msgid "Save…" +msgstr "" + +msgid "Save as…" +msgstr "" + +msgid "Rename…" +msgstr "" + +msgid "Translate…" +msgstr "" + +msgid "Share…" +msgstr "" + +msgid "Get link…" +msgstr "" + +msgid "Open in this app" +msgstr "Ushbu ilovada oching" + +msgid "Close" +msgstr "Yopmoq" + +msgid "Rename {{fileType}}" +msgstr "" + +msgid "Name" +msgstr "Исми" + +msgid "Description" +msgstr "Tavsif" + +msgid "Rename" +msgstr "Қайта номлаш" + +msgid "{{- objectName}} (copy)" +msgstr "" + +msgid "Save {{fileType}} as" +msgstr "" + +msgid "event report" +msgstr "hodisa/tadbir hisoboti" + +msgid "line list" +msgstr "" + +msgid "map" +msgstr "xarita" + +msgid "visualization" +msgstr "" + +msgid "Edit" +msgstr "Tahrirlash" + +msgid "Write a reply" +msgstr "Izoh yozing" + +msgid "Post reply" +msgstr "" + +msgid "Delete failed" +msgstr "Oʼchirish amalga oshmadi" + +msgid "Could not update comment" +msgstr "" + +msgid "Enter comment text" +msgstr "" + +msgid "Update" +msgstr "Янгилаш" + +msgid "Viewing interpretation: {{- visualisationName}}" +msgstr "" + +msgid "Could not load interpretation" +msgstr "" + +msgid "" +"The interpretation couldn’t be displayed. Try again or contact your system " +"administrator." +msgstr "" + +msgid "Hide interpretation" +msgstr "" + +msgid "Write an interpretation" +msgstr "Talqin yozish" + +msgid "Post interpretation" +msgstr "" + +msgid "Interpretations" +msgstr "Talqinlar" + +msgid "Reply" +msgstr "Javob" + +msgid "{{count}} replies" +msgid_plural "{{count}} replies" +msgstr[0] "" + +msgid "View replies" +msgstr "" + +msgid "Unlike" +msgstr "Аksincha" + +msgid "Like" +msgstr "Kabi, oʼxshash" + +msgid "Share" +msgstr "Улашиш" + +msgid "See interpretation" +msgstr "" + +msgid "Manage sharing" +msgstr "Ulashishni boshqarish" + +msgid "Could not update interpretation" +msgstr "" + +msgid "Enter interpretation text" +msgstr "" + +msgid "Bold text" +msgstr "" + +msgid "Italic text" +msgstr "" + +msgid "Link to a URL" +msgstr "" + +msgid "Mention a user" +msgstr "" + +msgid "Add emoji" +msgstr "" + +msgid "Preview" +msgstr "" + +msgid "Back to write mode" +msgstr "" + +msgid "Too many results. Try refining the search." +msgstr "" + +msgid "Search for a user" +msgstr "" + +msgid "Searching for \"{{- searchText}}\"" +msgstr "" + +msgid "No results found" +msgstr "Hech qanday natija topilmadi" + +msgid "Not available offline" +msgstr "" + +msgid "Created by" +msgstr "Томонидан яратилган" + +msgid "Anyone" +msgstr "Kimdir" + +msgid "Only you" +msgstr "" + +msgid "Others" +msgstr "" + +msgid "Not supported by this app yet" +msgstr "" + +msgid "Filter by name" +msgstr "Nomi boʼyicha filtrlash" + +msgid "Created" +msgstr "Yaratilgan" + +msgid "Last updated" +msgstr "Oxirgi yangilangan" + +msgid "Type" +msgstr "Turi" + +msgid "Clear filters" +msgstr "Filtrlarni tozalash" + +msgid "{{firstItemIndex}}-{{lastItemIndex}} of {{totalNumberOfItems}}" +msgstr "" + +msgid "Open" +msgstr "Ochiq" + +msgid "Couldn't load items" +msgstr "" + +msgid "" +"There was a problem loading items. Try again or contact your system " +"administrator." +msgstr "" + +msgid "No items found. Create a new to get started." +msgstr "" + +msgid "" +"No items found. Try adjusting your search or filter options to find what " +"you're looking for." +msgstr "" + +msgid "Create new" +msgstr "Yangisini yaratish" + +msgid "Open a visualization" +msgstr "" + +msgid "Loading visualizations" +msgstr "" + +msgid "Couldn't load visualizations" +msgstr "" + +msgid "" +"There was a problem loading visualizations. Try again or contact your system" +" administrator." +msgstr "" + +msgid "No visualizations found. Click New visualization to get started." +msgstr "" + +msgid "" +"No visualizations found. Try adjusting your search or filter options to find" +" what you're looking for." +msgstr "" + +msgid "New visualization" +msgstr "" + +msgid "Open a map" +msgstr "" + +msgid "Loading maps" +msgstr "" + +msgid "Couldn't load maps" +msgstr "" + +msgid "" +"There was a problem loading maps. Try again or contact your system " +"administrator." +msgstr "" + +msgid "No maps found. Click New map to get started." +msgstr "" + +msgid "" +"No maps found. Try adjusting your search or filter options to find what " +"you're looking for." +msgstr "" + +msgid "New map" +msgstr "" + +msgid "Open a line list" +msgstr "" + +msgid "Loading line lists" +msgstr "" + +msgid "Couldn't load line lists" +msgstr "" + +msgid "" +"There was a problem loading line lists. Try again or contact your system " +"administrator." +msgstr "" + +msgid "No line lists found. Click New line list to get started." +msgstr "" + +msgid "" +"No line lists found. Try adjusting your search or filter options to find " +"what you're looking for." +msgstr "" + +msgid "New line list" +msgstr "" + +msgid "Options" +msgstr "Вариант" + +msgid "Hide" +msgstr "Berkitish" + +msgid "{{count}} org units" +msgid_plural "{{count}} org units" +msgstr[0] "" + +msgid "{{count}} levels" +msgid_plural "{{count}} levels" +msgstr[0] "" + +msgid "{{count}} groups" +msgid_plural "{{count}} groups" +msgstr[0] "" + +msgid "Selected: {{commaSeparatedListOfOrganisationUnits}}" +msgstr "" + +msgid "Nothing selected" +msgstr "" + +msgid "User organisation unit" +msgstr "Ташкилий бўлим фойдаланувчиси" + +msgid "User sub-units" +msgstr "Фойдаланувчига бўйсунувчи бирликлар" + +msgid "User sub-x2-units" +msgstr "Фойдаланувчига бўйсунувчи 2 даражали бирликлар" + +msgid "Select a level" +msgstr "Pogʼonani tanlang" + +msgid "Select a group" +msgstr "Guruhni tanlang" + +msgid "Deselect all" +msgstr "Barcha tanlanganni bekor qilish" + +msgid "Period type" +msgstr "Davr turi" + +msgid "Year" +msgstr "Yil" + +msgid "Select year" +msgstr "Yilni tanlang" + +msgid "Period" +msgstr "Davr" + +msgid "Relative periods" +msgstr "Nisbiy davrlar" + +msgid "Fixed periods" +msgstr "Beligalangan davrlar" + +msgid "Selected Periods" +msgstr "Tanlangan Davrlar" + +msgid "No periods selected" +msgstr "Davr tanlanmagan" + +msgid "Daily" +msgstr "Kunlik" + +msgid "Weekly" +msgstr "Haftalik" + +msgid "Weekly (Start Wednesday)" +msgstr "Haftalik (Boshlanishi Chorshanba)" + +msgid "Weekly (Start Thursday)" +msgstr "Haftalik (Boshlanishi Payshanba)" + +msgid "Weekly (Start Saturday)" +msgstr "Haftalik (Boshlanishi Shanba)" + +msgid "Weekly (Start Sunday)" +msgstr "Haftalik (Boshlanishi Yakshanba)" + +msgid "Bi-weekly" +msgstr "Juft haftalik" + +msgid "Monthly" +msgstr "Oylik" + +msgid "Bi-monthly" +msgstr "Juft oylik" + +msgid "Quarterly" +msgstr "Har kvartal" + +msgid "Six-monthly" +msgstr "Yarim yillik" + +msgid "Six-monthly April" +msgstr "Yarim yillik Аprel" + +msgid "Yearly" +msgstr "Yillik" + +msgid "Financial year (Start November)" +msgstr "Moliyaviy yil (Boshlanishi Noyabr)" + +msgid "Financial year (Start October)" +msgstr "Moliyaviy yil (boshlanishi Oktyabr)" + +msgid "Financial year (Start July)" +msgstr "Moliyaviy yil (boshlanishi Iyul)" + +msgid "Financial year (Start April)" +msgstr "Moliyaviy yil (boshlanishi Аprel)" + +msgid "Today" +msgstr "Bugun" + +msgid "Yesterday" +msgstr "Kecha" + +msgid "Last 3 days" +msgstr "Oxirgi 3 kun" + +msgid "Last 7 days" +msgstr "Oxirgi 7 kun" + +msgid "Last 14 days" +msgstr "Oxirgi 14 kun" + +msgid "Last 30 days" +msgstr "Oxirgi 30 kun" + +msgid "Last 60 days" +msgstr "Oxirgi 60 kun" + +msgid "Last 90 days" +msgstr "Oxirgi 90 kun" + +msgid "Last 180 days" +msgstr "Oxirgi 180 kun" + +msgid "This week" +msgstr "Ushbu hafta" + +msgid "Last week" +msgstr "Oxirgi hafta" + +msgid "Last 4 weeks" +msgstr "Oxirgi 4 hafta" + +msgid "Last 12 weeks" +msgstr "Oxirgi 12 hafta" + +msgid "Last 52 weeks" +msgstr "Oxirgi 52 hafta" + +msgid "Weeks this year" +msgstr "Haftalar ayni yilda" + +msgid "This bi-week" +msgstr "Ushbu juft hafta" + +msgid "Last bi-week" +msgstr "Oxirgi juft hafta" + +msgid "Last 4 bi-weeks" +msgstr "Oxirgi 4 juft haftalar" + +msgid "This month" +msgstr "Ushbu oy" + +msgid "Last month" +msgstr "Oxirgi oy" + +msgid "Last 3 months" +msgstr "Oxirgi 3 oy" + +msgid "Last 6 months" +msgstr "Oxirgi 6 oy" + +msgid "Last 12 months" +msgstr "Oxirgi 12 oy" + +msgid "Months this year" +msgstr "Oylar ayni yilda" + +msgid "This bi-month" +msgstr "Ushbu juft oy" + +msgid "Last bi-month" +msgstr "Oxirgi 2 oy" + +msgid "Last 6 bi-months" +msgstr "Oxirgi 6 juft oylar" + +msgid "Bi-months this year" +msgstr "Аyni yildagi juft oylar" + +msgid "This quarter" +msgstr "Ushbu kvartal" + +msgid "Last quarter" +msgstr "Oxirgi kvartal" + +msgid "Last 4 quarters" +msgstr "Oxirgi 4 kvartal" + +msgid "Quarters this year" +msgstr "Ushbu yildagi kvartallar" + +msgid "This six-month" +msgstr "Ushbu yarim yillik" + +msgid "Last six-month" +msgstr "Oxirgi 6 oy" + +msgid "Last 2 six-month" +msgstr "Oxirgi juft yarim yillik" + +msgid "This financial year" +msgstr "Ushbu moliyaviy yil" + +msgid "Last financial year" +msgstr "Oxirgi moliyaviy yil" + +msgid "Last 5 financial years" +msgstr "Oxirgi 5 moliyaviy yillar" + +msgid "This year" +msgstr "Ushbu yil" + +msgid "Last year" +msgstr "Oxirgi yil" + +msgid "Last 5 years" +msgstr "Oxirgi 5 yil" + +msgid "Last 10 years" +msgstr "Oxirgi 10 yil" + +msgid "Days" +msgstr "Kunlar" + +msgid "Weeks" +msgstr "Haftalar" + +msgid "Bi-weeks" +msgstr "Juft haftalar" + +msgid "Months" +msgstr "Oylar" + +msgid "Bi-months" +msgstr "2 oy" + +msgid "Quarters" +msgstr "Kvartal" + +msgid "Six-months" +msgstr "Yarim yillik" + +msgid "Financial Years" +msgstr "Moliyaviy yillar" + +msgid "Years" +msgstr "Yillar" + +msgid "Interpretations and details" +msgstr "" + +msgid "Translating to" +msgstr "" + +msgid "Choose a locale" +msgstr "" + +msgid "Base locale reference" +msgstr "" + +msgid "Choose a locale to translate from the menu above" +msgstr "" + +msgid "Translate: {{objectName}}" +msgstr "" + +msgid "Save translations" +msgstr "" + +msgid "Cannot save while offline" +msgstr "" + +msgid "Could not load translations" +msgstr "" + +msgid "Retry" +msgstr "" + +msgid "Series" +msgstr "Ketma-ketliklar" + +msgid "Category" +msgstr "Kategoriya" + +msgid "Filter" +msgstr "Filtr" + +msgid "Columns" +msgstr "Ustunlar" + +msgid "Rows" +msgstr "Qatorlar" + +msgid "Points" +msgstr "Nuqtalar" + +msgid "Reporting rate" +msgstr "Hisobotdagi stavka" + +msgid "Reporting rate on time" +msgstr "Hisobotdagi stavka oʼz vaqtida" + +msgid "Actual reports" +msgstr "Haqiqiy hisobotlar" + +msgid "Actual reports on time" +msgstr "Haqiqiy hisobotlar oʼz vaqtida" + +msgid "Expected reports" +msgstr "Kutilayotgan hisobotlar" + +msgid "Program" +msgstr "Programma" + +msgid "Select a program" +msgstr "Dasturni tanlang" + +msgid "Indicators" +msgstr "Indikatorlar" + +msgid "Indicator group" +msgstr "Koʼrsatgich guruhi" + +msgid "All groups" +msgstr "" + +msgid "Indicator" +msgstr "Indikator" + +msgid "No indicator groups found" +msgstr "" + +msgid "Loading indicator groups" +msgstr "" + +msgid "Data element group" +msgstr "Maʼlumotlar elementi guruhi" + +msgid "Data element" +msgstr "Maʼlumotlar elementi" + +msgid "No data element groups found" +msgstr "" + +msgid "Loading data element groups" +msgstr "" + +msgid "Data sets" +msgstr "Maʼlumotlar toʼplami" + +msgid "Data set" +msgstr "Maʼlumotlar toʼplami" + +msgid "All data sets" +msgstr "" + +msgid "Loading data sets" +msgstr "" + +msgid "Event data items" +msgstr "Hodisalar haqida maʼlumot elementlari" + +msgid "All programs" +msgstr "" + +msgid "Event data item" +msgstr "Hodisa/Tadbir maʼlumoti elementi" + +msgid "No programs found" +msgstr "" + +msgid "Loading programs" +msgstr "" + +msgid "Program indicators" +msgstr "Dastur indikatorlari" + +msgid "Program indicator" +msgstr "Dastur indikatori" + +msgid "Calculations" +msgstr "" + +msgid "Number" +msgstr "Tartib raqami" + +msgid "Formula is empty. Add items to the formula from the lists on the left." +msgstr "" + +msgid "Consecutive math operators" +msgstr "" + +msgid "Consecutive data elements" +msgstr "" + +msgid "Starts or ends with a math operator" +msgstr "" + +msgid "Empty parentheses" +msgstr "" + +msgid "Missing right parenthesis )" +msgstr "" + +msgid "Missing left parenthesis (" +msgstr "" + +msgid "Extra Small" +msgstr "Juda Kichik" + +msgid "Small" +msgstr "Kichik" + +msgid "Regular" +msgstr "Regulyar" + +msgid "Large" +msgstr "Katta" + +msgid "Extra Large" +msgstr "Juda Katta" + +msgid "Left" +msgstr "Chap" + +msgid "Center" +msgstr "Markaz" + +msgid "Right" +msgstr "Oʼng" + +msgid "Start" +msgstr "Boshlash" + +msgid "Middle" +msgstr "Oʼrtav" + +msgid "End" +msgstr "Oxiri" + +msgid "Top" +msgstr "Yuqoridagi" + +msgid "Bottom" +msgstr "Pastki" + +msgid "{{dynamicOuNames}} and {{lastOuName}}" +msgstr "{{dynamicOuNames}} va {{lastOuName}}" + +msgid "{{allDynamicOuNames}} levels" +msgstr "Barcha {{allDynamicOuNames}} pogʼonalar" + +msgid "{{allDynamicOuNames}} groups" +msgstr "{{allDynamicOuNames}} guruhlar" + +msgid "{{allDynamicOuNames}} levels in {{staticOuNames}}" +msgstr "{{allDynamicOuNames}} pogʼonalar {{staticOuNames}} ichida" + +msgid "{{allDynamicOuNames}} groups in {{staticOuNames}}" +msgstr "{{allDynamicOuNames}} guruhlar {{staticOuNames}} ichida" + +msgid "{{percentage}}% of total x values" +msgstr "" + +msgid "{{percentage}}% of total y values" +msgstr "" + +msgid "{{thresholdFactor}} × IQR Q1" +msgstr "" + +msgid "{{thresholdFactor}} × IQR Q3" +msgstr "" + +msgid "{{thresholdFactor}} × Modified Z-score low" +msgstr "" + +msgid "{{thresholdFactor}} × Modified Z-score high" +msgstr "" + +msgid "{{thresholdFactor}} × Z-score low" +msgstr "" + +msgid "{{thresholdFactor}} × Z-score high" +msgstr "" + +msgid "Data" +msgstr "Maʼlumot" + +msgid "Organisation unit" +msgstr "Ташкилий бирлик" + +msgid "Assigned Categories" +msgstr "Belgilangan Kategoriyalar" + +msgid "Pivot table" +msgstr "Solishtirma jadval" + +msgid "Area" +msgstr "Maydon" + +msgid "Stacked area" +msgstr "Yigʼilgan maydon" + +msgid "Bar" +msgstr "Tizimcha" + +msgid "Stacked bar" +msgstr "Yigʼilgan tizimcha" + +msgid "Column" +msgstr "Ustun" + +msgid "Year over year (column)" +msgstr "Yildan yilga (ustun)" + +msgid "Stacked column" +msgstr "Yigʼilgan ustun" + +msgid "Gauge" +msgstr "Hisoblagich" + +msgid "Line" +msgstr "Qator" + +msgid "Line list" +msgstr "Qatorlar roʼyxati" + +msgid "Year over year (line)" +msgstr "Yildan yilga (qator)" + +msgid "Pie" +msgstr "Butun aylana" + +msgid "Radar" +msgstr "Radar" + +msgid "Scatter" +msgstr "Tarqoqlik" + +msgid "Single value" +msgstr "Yagona qiymat" + +msgid "All charts" +msgstr "" + +msgid "{{seriesName}} (trend)" +msgstr "" + +msgid "Trend" +msgstr "Yoʼnalish" + +msgid "No legend for this series" +msgstr "Ushbu seriya uchun taʼrif mavjud emas" + +msgid "and {{amount}} more..." +msgstr "" + +msgid "Linear Regression" +msgstr "" + +msgid "Target" +msgstr "Nishon" + +msgid "Base" +msgstr "Аsos" + +msgid "Axis {{axisId}}" +msgstr "Oʼqlar {{axisId}}" + +msgid "{{count}} items" +msgid_plural "{{count}} items" +msgstr[0] "" + +msgid "Reset zoom" +msgstr "" From 63f523cefb1444de553e51f38b8a73b68a6fed2a Mon Sep 17 00:00:00 2001 From: "@dhis2-bot" Date: Wed, 13 Sep 2023 01:38:03 +0000 Subject: [PATCH 002/129] chore(release): cut 26.0.18 [skip ci] ## [26.0.18](https://github.com/dhis2/analytics/compare/v26.0.17...v26.0.18) (2023-09-13) ### Bug Fixes * **translations:** sync translations from transifex (master) ([e4f95e9](https://github.com/dhis2/analytics/commit/e4f95e9147a337f9a675ffebff641ea5bd9a0430)) --- CHANGELOG.md | 7 +++++++ package.json | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 69b7b35c7..84478ba54 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +## [26.0.18](https://github.com/dhis2/analytics/compare/v26.0.17...v26.0.18) (2023-09-13) + + +### Bug Fixes + +* **translations:** sync translations from transifex (master) ([e4f95e9](https://github.com/dhis2/analytics/commit/e4f95e9147a337f9a675ffebff641ea5bd9a0430)) + ## [26.0.17](https://github.com/dhis2/analytics/compare/v26.0.16...v26.0.17) (2023-08-28) diff --git a/package.json b/package.json index eef1e94f0..9e3256bbe 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@dhis2/analytics", - "version": "26.0.17", + "version": "26.0.18", "main": "./build/cjs/index.js", "module": "./build/es/index.js", "exports": { From 492975e46d1570e7856ef217a9a28c3ede5c7fa5 Mon Sep 17 00:00:00 2001 From: Edoardo Sabadelli Date: Fri, 15 Sep 2023 09:24:56 +0200 Subject: [PATCH 003/129] fix: use translated dimension labels in PT DHIS2-15750 (#1572) --- src/modules/pivotTable/PivotTableEngine.js | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/modules/pivotTable/PivotTableEngine.js b/src/modules/pivotTable/PivotTableEngine.js index ddea5c485..d59559d2b 100644 --- a/src/modules/pivotTable/PivotTableEngine.js +++ b/src/modules/pivotTable/PivotTableEngine.js @@ -1,3 +1,4 @@ +import i18n from '@dhis2/d2-i18n' import times from 'lodash/times' import { DIMENSION_TYPE_DATA, @@ -448,27 +449,31 @@ export class PivotTableEngine { columnLevel === lastColumnLevel && this.dimensionLookup.columns[lastColumnLevel] ) { - return `${this.dimensionLookup.rows[lastRowLevel].meta.name} / ${this.dimensionLookup.columns[lastColumnLevel].meta.name}` + return `${i18n.t( + this.dimensionLookup.rows[lastRowLevel].meta.name + )} / ${i18n.t( + this.dimensionLookup.columns[lastColumnLevel].meta.name + )}` } if (lastRowLevel === -1) { - return this.dimensionLookup.columns[columnLevel].meta.name + return i18n.t(this.dimensionLookup.columns[columnLevel].meta.name) } if (lastColumnLevel === -1) { - return this.dimensionLookup.rows[rowLevel].meta.name + return i18n.t(this.dimensionLookup.rows[rowLevel].meta.name) } if ( rowLevel === lastRowLevel && this.dimensionLookup.columns[columnLevel] ) { - return this.dimensionLookup.columns[columnLevel].meta.name + return i18n.t(this.dimensionLookup.columns[columnLevel].meta.name) } if ( columnLevel === lastColumnLevel && this.dimensionLookup.rows[rowLevel] ) { - return this.dimensionLookup.rows[rowLevel].meta.name + return i18n.t(this.dimensionLookup.rows[rowLevel].meta.name) } } From 2e07397fdab0ecea33616a4f02dd8c86321c3164 Mon Sep 17 00:00:00 2001 From: "@dhis2-bot" Date: Fri, 15 Sep 2023 07:29:50 +0000 Subject: [PATCH 004/129] chore(release): cut 26.0.19 [skip ci] ## [26.0.19](https://github.com/dhis2/analytics/compare/v26.0.18...v26.0.19) (2023-09-15) ### Bug Fixes * use translated dimension labels in PT DHIS2-15750 ([#1572](https://github.com/dhis2/analytics/issues/1572)) ([492975e](https://github.com/dhis2/analytics/commit/492975e46d1570e7856ef217a9a28c3ede5c7fa5)) --- CHANGELOG.md | 7 +++++++ package.json | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 84478ba54..ef00dd62b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +## [26.0.19](https://github.com/dhis2/analytics/compare/v26.0.18...v26.0.19) (2023-09-15) + + +### Bug Fixes + +* use translated dimension labels in PT DHIS2-15750 ([#1572](https://github.com/dhis2/analytics/issues/1572)) ([492975e](https://github.com/dhis2/analytics/commit/492975e46d1570e7856ef217a9a28c3ede5c7fa5)) + ## [26.0.18](https://github.com/dhis2/analytics/compare/v26.0.17...v26.0.18) (2023-09-13) diff --git a/package.json b/package.json index 9e3256bbe..d864f5510 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@dhis2/analytics", - "version": "26.0.18", + "version": "26.0.19", "main": "./build/cjs/index.js", "module": "./build/es/index.js", "exports": { From a1f8d694121d62d001f7b4567d84d49ecec377fd Mon Sep 17 00:00:00 2001 From: Edoardo Sabadelli Date: Mon, 25 Sep 2023 15:28:35 +0200 Subject: [PATCH 005/129] fix: export function for preparing payload for copy DHIS2-15722 (#1573) * fix: export function for preparing payload for copy DHIS2-15722 * fix: make sure user is removed from payload Better than relying on apps not fetching the user information when loading a visualization. --- src/components/FileMenu/utils.js | 9 +++++++++ src/index.js | 1 + 2 files changed, 10 insertions(+) diff --git a/src/components/FileMenu/utils.js b/src/components/FileMenu/utils.js index 7cca04a9d..424f7f43e 100644 --- a/src/components/FileMenu/utils.js +++ b/src/components/FileMenu/utils.js @@ -39,3 +39,12 @@ export const appPathFor = (fileType, id) => { return `${window.location.search}${window.location.hash}` } } + +export const preparePayloadForSaveAs = ({ ...visualization }) => { + delete visualization.id + delete visualization.created + delete visualization.createdBy + delete visualization.user + + return visualization +} diff --git a/src/index.js b/src/index.js index 069656b77..8db29cbb2 100644 --- a/src/index.js +++ b/src/index.js @@ -22,6 +22,7 @@ export { default as DimensionMenu } from './components/DimensionMenu.js' export { default as PivotTable } from './components/PivotTable/PivotTable.js' export { default as FileMenu } from './components/FileMenu/FileMenu.js' +export { preparePayloadForSaveAs } from './components/FileMenu/utils.js' export { default as VisTypeIcon } from './components/VisTypeIcon.js' From f3a6f3ba069226b493b39252f4fdf162deb9bfa1 Mon Sep 17 00:00:00 2001 From: "@dhis2-bot" Date: Mon, 25 Sep 2023 13:33:42 +0000 Subject: [PATCH 006/129] chore(release): cut 26.0.20 [skip ci] ## [26.0.20](https://github.com/dhis2/analytics/compare/v26.0.19...v26.0.20) (2023-09-25) ### Bug Fixes * export function for preparing payload for copy DHIS2-15722 ([#1573](https://github.com/dhis2/analytics/issues/1573)) ([a1f8d69](https://github.com/dhis2/analytics/commit/a1f8d694121d62d001f7b4567d84d49ecec377fd)) --- CHANGELOG.md | 7 +++++++ package.json | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ef00dd62b..67a51f42c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +## [26.0.20](https://github.com/dhis2/analytics/compare/v26.0.19...v26.0.20) (2023-09-25) + + +### Bug Fixes + +* export function for preparing payload for copy DHIS2-15722 ([#1573](https://github.com/dhis2/analytics/issues/1573)) ([a1f8d69](https://github.com/dhis2/analytics/commit/a1f8d694121d62d001f7b4567d84d49ecec377fd)) + ## [26.0.19](https://github.com/dhis2/analytics/compare/v26.0.18...v26.0.19) (2023-09-15) diff --git a/package.json b/package.json index d864f5510..f719aeb6e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@dhis2/analytics", - "version": "26.0.19", + "version": "26.0.20", "main": "./build/cjs/index.js", "module": "./build/es/index.js", "exports": { From f6c89e1481dbbc2ea2cfe80a3c9ed7f81a63c83c Mon Sep 17 00:00:00 2001 From: Edoardo Sabadelli Date: Thu, 28 Sep 2023 11:06:57 +0200 Subject: [PATCH 007/129] fix: avoid crash in DV with some chart types DHIS2-15882 (#1582) --- .../config/adapters/dhis_highcharts/chart.js | 6 +++++- .../config/generators/highcharts/index.js | 11 +++++++---- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/src/visualizations/config/adapters/dhis_highcharts/chart.js b/src/visualizations/config/adapters/dhis_highcharts/chart.js index 9174ad816..e50a52ca9 100644 --- a/src/visualizations/config/adapters/dhis_highcharts/chart.js +++ b/src/visualizations/config/adapters/dhis_highcharts/chart.js @@ -22,7 +22,11 @@ const getEvents = () => ({ if (item.legendSymbol) { item.legendSymbol.attr({ translateY: - -((item.legendItem.getBBox().height * 0.75) / 4) + + -( + (item.legendItem.label.getBBox().height * + 0.75) / + 4 + ) + item.legendSymbol.r / 2, }) } diff --git a/src/visualizations/config/generators/highcharts/index.js b/src/visualizations/config/generators/highcharts/index.js index ca8ad2b3d..92a775910 100644 --- a/src/visualizations/config/generators/highcharts/index.js +++ b/src/visualizations/config/generators/highcharts/index.js @@ -20,6 +20,8 @@ function drawLegendSymbolWrap() { H.seriesTypes.column.prototype, 'drawLegendSymbol', function (proceed, legend, item) { + const legendItem = item.legendItem + if (this.options.legendSet?.legends?.length) { const ys = legend.baseline - legend.symbolHeight + 1, // y start x = legend.symbolWidth / 2 > 8 ? legend.symbolWidth / 2 : 8, // x start @@ -32,7 +34,7 @@ function drawLegendSymbolWrap() { .attr({ fill: legends[legends.length >= 5 ? 1 : 0].color, }) - .add(this.legendGroup) + .add(legendItem.group) this.chart.renderer .path(['M', x, ye, 'A', 1, 1, 0, 0, 0, x, ys, 'V', ye]) .attr({ @@ -42,13 +44,14 @@ function drawLegendSymbolWrap() { : legends.length - 1 ].color, }) - .add(this.legendGroup) + .add(legendItem.group) } else { var options = legend.options, symbolHeight = legend.symbolHeight, square = options.squareSymbol, symbolWidth = square ? symbolHeight : legend.symbolWidth - item.legendSymbol = this.chart.renderer + + legendItem.symbol = this.chart.renderer .rect( square ? (legend.symbolWidth - symbolHeight) / 2 : 0, legend.baseline - symbolHeight + 1, @@ -60,7 +63,7 @@ function drawLegendSymbolWrap() { .attr({ zIndex: 3, }) - .add(item.legendGroup) + .add(legendItem.group) } } ) From b730a3582aec0bebc42fa884b8932fd73cd93863 Mon Sep 17 00:00:00 2001 From: "@dhis2-bot" Date: Thu, 28 Sep 2023 09:12:03 +0000 Subject: [PATCH 008/129] chore(release): cut 26.0.21 [skip ci] ## [26.0.21](https://github.com/dhis2/analytics/compare/v26.0.20...v26.0.21) (2023-09-28) ### Bug Fixes * avoid crash in DV with some chart types DHIS2-15882 ([#1582](https://github.com/dhis2/analytics/issues/1582)) ([f6c89e1](https://github.com/dhis2/analytics/commit/f6c89e1481dbbc2ea2cfe80a3c9ed7f81a63c83c)) --- CHANGELOG.md | 7 +++++++ package.json | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 67a51f42c..54757d305 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +## [26.0.21](https://github.com/dhis2/analytics/compare/v26.0.20...v26.0.21) (2023-09-28) + + +### Bug Fixes + +* avoid crash in DV with some chart types DHIS2-15882 ([#1582](https://github.com/dhis2/analytics/issues/1582)) ([f6c89e1](https://github.com/dhis2/analytics/commit/f6c89e1481dbbc2ea2cfe80a3c9ed7f81a63c83c)) + ## [26.0.20](https://github.com/dhis2/analytics/compare/v26.0.19...v26.0.20) (2023-09-25) diff --git a/package.json b/package.json index f719aeb6e..62ad56e8b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@dhis2/analytics", - "version": "26.0.20", + "version": "26.0.21", "main": "./build/cjs/index.js", "module": "./build/es/index.js", "exports": { From c37ba2d1a187963b3b5aeee5b951bcf9c129dcd2 Mon Sep 17 00:00:00 2001 From: Hendrik de Graaf Date: Tue, 3 Oct 2023 14:42:15 +0200 Subject: [PATCH 009/129] feat(pivot-table): truncate title and show full in tooltip (#1579) * feat(pivot-table): truncate title and show full in tooltip * fix(pivot-table): set padding on hoverable div instead of container th * fix(pivot-table): correctly show tooltip after resizing the container * chore: simplify code and remove redundant prop --- src/__demo__/PivotTable.stories.js | 41 ++++++++++++ .../PivotTable/PivotTableTitleRow.js | 62 ++++++++++++++----- .../PivotTable/PivotTableTitleRows.js | 12 ---- .../PivotTable/styles/PivotTable.style.js | 18 +++++- 4 files changed, 105 insertions(+), 28 deletions(-) diff --git a/src/__demo__/PivotTable.stories.js b/src/__demo__/PivotTable.stories.js index b4c46f346..e06782146 100644 --- a/src/__demo__/PivotTable.stories.js +++ b/src/__demo__/PivotTable.stories.js @@ -1119,3 +1119,44 @@ storiesOf('PivotTable', module).add('DEGS', (_, { pivotTableOptions }) => { ) }) + +storiesOf('PivotTable', module).add( + 'Truncated header cell', + (_, { pivotTableOptions }) => { + const widths = [250, 200, 500] + const [width, setWidth] = useState(250) + const toggleWidth = () => + setWidth( + (currentWidth) => + widths[widths.indexOf(currentWidth) + 1] ?? widths[0] + ) + const visualization = { + ...narrativeVisualization, + ...visualizationReset, + ...pivotTableOptions, + columns: narrativeVisualization.filters, + filters: narrativeVisualization.columns, + rowTotals: true, + colTotals: true, + } + + const data = { + ...narrativeData, + rows: [narrativeData.rows[0]], + } + + return ( +
+ + +
+ ) + } +) diff --git a/src/components/PivotTable/PivotTableTitleRow.js b/src/components/PivotTable/PivotTableTitleRow.js index 681eaf1ab..ae9bfb576 100644 --- a/src/components/PivotTable/PivotTableTitleRow.js +++ b/src/components/PivotTable/PivotTableTitleRow.js @@ -1,5 +1,6 @@ +import { Tooltip } from '@dhis2/ui' import PropTypes from 'prop-types' -import React, { useState, useEffect } from 'react' +import React, { useRef, useState, useEffect } from 'react' import { PivotTableCell } from './PivotTableCell.js' import { usePivotTableEngine } from './PivotTableEngineContext.js' import { cell as cellStyle } from './styles/PivotTable.style.js' @@ -8,34 +9,66 @@ export const PivotTableTitleRow = ({ title, scrollPosition, containerWidth, - totalWidth, }) => { + const containerRef = useRef(null) + const [scrollWidth, setScrollWidth] = useState(0) + const [isTitleTruncated, setIsTitleTruncated] = useState(false) const engine = usePivotTableEngine() const columnCount = engine.width + engine.rowDepth + const maxWidth = containerWidth - (engine.cellPadding * 2 + 2) + const marginLeft = Math.max(0, scrollPosition?.x ?? 0) - const [position, setPosition] = useState(scrollPosition.x) useEffect(() => { - setPosition( - Math.max(0, Math.min(scrollPosition.x, totalWidth - containerWidth)) - ) - }, [containerWidth, scrollPosition.x, totalWidth]) + if (containerRef.current) { + /* Only set `scrollWidth` once, because during a CSS transition + * the reported value can sometimes be equal to `clientWidth` + * even though the text doesn't fit. Due to `white-space: nowrap` + * and `overflow: hidden` the `scrollWidth` should remain constant, + * so we can assume this initial value is correct. */ + if (!scrollWidth) { + setScrollWidth(containerRef.current.scrollWidth) + } + const currentScrollWidth = + scrollWidth ?? containerRef.current.scrollWidth + const newIsTitleTruncated = + currentScrollWidth > containerRef.current.clientWidth + if (newIsTitleTruncated !== isTitleTruncated) { + setIsTitleTruncated(newIsTitleTruncated) + } + } + }, [containerWidth, scrollWidth, isTitleTruncated]) + return (
- {title} + {isTitleTruncated ? ( + + {({ ref: tooltipRef, onMouseOver, onMouseOut }) => ( +
+ {title} +
+ )} +
+ ) : ( + title + )}
@@ -47,5 +80,4 @@ PivotTableTitleRow.propTypes = { scrollPosition: PropTypes.shape({ x: PropTypes.number.isRequired }) .isRequired, title: PropTypes.string.isRequired, - totalWidth: PropTypes.number.isRequired, } diff --git a/src/components/PivotTable/PivotTableTitleRows.js b/src/components/PivotTable/PivotTableTitleRows.js index 34ad04e33..8a3439c9d 100644 --- a/src/components/PivotTable/PivotTableTitleRows.js +++ b/src/components/PivotTable/PivotTableTitleRows.js @@ -13,10 +13,6 @@ export const PivotTableTitleRows = ({ clippingResult, width }) => { title={engine.options.title} scrollPosition={clippingResult.scrollPosition} containerWidth={width} - totalWidth={ - engine.adaptiveClippingController.columns.totalSize + - engine.adaptiveClippingController.columns.headerSize - } /> ) : null} {engine.options.subtitle ? ( @@ -24,10 +20,6 @@ export const PivotTableTitleRows = ({ clippingResult, width }) => { title={engine.options.subtitle} scrollPosition={clippingResult.scrollPosition} containerWidth={width} - totalWidth={ - engine.adaptiveClippingController.columns.totalSize + - engine.adaptiveClippingController.columns.headerSize - } /> ) : null} {engine.visualization.filters?.length ? ( @@ -38,10 +30,6 @@ export const PivotTableTitleRows = ({ clippingResult, width }) => { )} scrollPosition={clippingResult.scrollPosition} containerWidth={width} - totalWidth={ - engine.adaptiveClippingController.columns.totalSize + - engine.adaptiveClippingController.columns.headerSize - } /> ) : null} diff --git a/src/components/PivotTable/styles/PivotTable.style.js b/src/components/PivotTable/styles/PivotTable.style.js index 23cfab64b..00bf7c6a6 100644 --- a/src/components/PivotTable/styles/PivotTable.style.js +++ b/src/components/PivotTable/styles/PivotTable.style.js @@ -109,9 +109,25 @@ export const cell = css` align-items: center; justify-content: center; } - .title { + .title-cell { font-weight: bold; background-color: #cddaed; + padding: 0; + } + .title-cell-content { + text-align: center; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + } + .title-cell.displaydensity-COMPACT > .title-cell-content { + padding: ${DISPLAY_DENSITY_PADDING_COMPACT}px; + } + .title-cell.displaydensity-NORMAL > .title-cell-content { + padding: ${DISPLAY_DENSITY_PADDING_NORMAL}px; + } + .title-cell.displaydensity-COMFORTABLE > .title-cell-content { + padding: ${DISPLAY_DENSITY_PADDING_COMFORTABLE}px; } .row-header { background-color: #dae6f8; From c7d778f729f65b1f13e41240cbf177768c6d9a12 Mon Sep 17 00:00:00 2001 From: "@dhis2-bot" Date: Tue, 3 Oct 2023 12:48:19 +0000 Subject: [PATCH 010/129] chore(release): cut 26.1.0 [skip ci] # [26.1.0](https://github.com/dhis2/analytics/compare/v26.0.21...v26.1.0) (2023-10-03) ### Features * **pivot-table:** truncate title and show full in tooltip ([#1579](https://github.com/dhis2/analytics/issues/1579)) ([c37ba2d](https://github.com/dhis2/analytics/commit/c37ba2d1a187963b3b5aeee5b951bcf9c129dcd2)) --- CHANGELOG.md | 7 +++++++ package.json | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 54757d305..717784fac 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +# [26.1.0](https://github.com/dhis2/analytics/compare/v26.0.21...v26.1.0) (2023-10-03) + + +### Features + +* **pivot-table:** truncate title and show full in tooltip ([#1579](https://github.com/dhis2/analytics/issues/1579)) ([c37ba2d](https://github.com/dhis2/analytics/commit/c37ba2d1a187963b3b5aeee5b951bcf9c129dcd2)) + ## [26.0.21](https://github.com/dhis2/analytics/compare/v26.0.20...v26.0.21) (2023-09-28) diff --git a/package.json b/package.json index 62ad56e8b..f38f5ba6b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@dhis2/analytics", - "version": "26.0.21", + "version": "26.1.0", "main": "./build/cjs/index.js", "module": "./build/es/index.js", "exports": { From dd9c23f34a0489cae89f5f5c10ab1dc17e2c13ef Mon Sep 17 00:00:00 2001 From: "@dhis2-bot" Date: Thu, 5 Oct 2023 03:33:01 +0200 Subject: [PATCH 011/129] fix(translations): sync translations from transifex (master) Automatically merged. --- i18n/nb.po | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/i18n/nb.po b/i18n/nb.po index 14644d70c..0d8c22c53 100644 --- a/i18n/nb.po +++ b/i18n/nb.po @@ -1,15 +1,15 @@ # # Translators: -# Karoline Tufte Lien , 2022 # Caroline Hesthagen Holen , 2023 # Jen Jones Arnesen , 2023 +# Karoline Tufte Lien , 2023 # msgid "" msgstr "" "Project-Id-Version: i18next-conv\n" "POT-Creation-Date: 2023-07-06T08:30:33.216Z\n" "PO-Revision-Date: 2020-04-28 22:05+0000\n" -"Last-Translator: Jen Jones Arnesen , 2023\n" +"Last-Translator: Karoline Tufte Lien , 2023\n" "Language-Team: Norwegian Bokmål (https://app.transifex.com/hisp-uio/teams/100509/nb/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -451,7 +451,7 @@ msgid "No results found" msgstr "Ingen resultater funnet" msgid "Not available offline" -msgstr "" +msgstr "Ikke tilgjengelig i frakoblet modus" msgid "Created by" msgstr "Opprettet av" From b58ae36621d917f156c0fbcf6da1cd48116d78a7 Mon Sep 17 00:00:00 2001 From: "@dhis2-bot" Date: Thu, 5 Oct 2023 01:39:12 +0000 Subject: [PATCH 012/129] chore(release): cut 26.1.1 [skip ci] ## [26.1.1](https://github.com/dhis2/analytics/compare/v26.1.0...v26.1.1) (2023-10-05) ### Bug Fixes * **translations:** sync translations from transifex (master) ([dd9c23f](https://github.com/dhis2/analytics/commit/dd9c23f34a0489cae89f5f5c10ab1dc17e2c13ef)) --- CHANGELOG.md | 7 +++++++ package.json | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 717784fac..720e6edc6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +## [26.1.1](https://github.com/dhis2/analytics/compare/v26.1.0...v26.1.1) (2023-10-05) + + +### Bug Fixes + +* **translations:** sync translations from transifex (master) ([dd9c23f](https://github.com/dhis2/analytics/commit/dd9c23f34a0489cae89f5f5c10ab1dc17e2c13ef)) + # [26.1.0](https://github.com/dhis2/analytics/compare/v26.0.21...v26.1.0) (2023-10-03) diff --git a/package.json b/package.json index f38f5ba6b..ef28c989a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@dhis2/analytics", - "version": "26.1.0", + "version": "26.1.1", "main": "./build/cjs/index.js", "module": "./build/es/index.js", "exports": { From 8e60f266bd55f8dee9745ad1930f6525e3ca96f3 Mon Sep 17 00:00:00 2001 From: Jen Jones Arnesen Date: Fri, 8 Sep 2023 13:22:07 +0200 Subject: [PATCH 013/129] fix: interpretation panel display date and timestamps according to client time zone (DHIS2-15825) --- src/components/AboutAOUnit/AboutAOUnit.js | 17 ++- .../InterpretationThread.js | 6 +- .../InterpretationsUnit/InterpretationList.js | 4 +- .../Interpretations/common/Message/Message.js | 104 +++++++++--------- 4 files changed, 76 insertions(+), 55 deletions(-) diff --git a/src/components/AboutAOUnit/AboutAOUnit.js b/src/components/AboutAOUnit/AboutAOUnit.js index 0fb7fb78e..76002a453 100644 --- a/src/components/AboutAOUnit/AboutAOUnit.js +++ b/src/components/AboutAOUnit/AboutAOUnit.js @@ -1,4 +1,8 @@ -import { useDataQuery, useDataMutation } from '@dhis2/app-runtime' +import { + useDataQuery, + useDataMutation, + useTimeZoneConversion, +} from '@dhis2/app-runtime' import i18n from '@dhis2/d2-i18n' import { Parser as RichTextParser } from '@dhis2/d2-ui-rich-text' import { @@ -57,6 +61,7 @@ const getUnsubscribeMutation = (type, id) => ({ const AboutAOUnit = forwardRef(({ type, id, renderId }, ref) => { const [isExpanded, setIsExpanded] = useState(true) + const { fromServerDate } = useTimeZoneConversion() const queries = useMemo(() => getQueries(type), [type]) @@ -208,7 +213,7 @@ const AboutAOUnit = forwardRef(({ type, id, renderId }, ref) => { {i18n.t('Last updated {{time}}', { time: moment( - data.ao.lastUpdated + fromServerDate(data.ao.lastUpdated) ).fromNow(), })}

@@ -219,7 +224,9 @@ const AboutAOUnit = forwardRef(({ type, id, renderId }, ref) => { 'Created {{time}} by {{author}}', { time: moment( - data.ao.created + fromServerDate( + data.ao.created + ) ).fromNow(), author: data.ao.createdBy .displayName, @@ -227,7 +234,9 @@ const AboutAOUnit = forwardRef(({ type, id, renderId }, ref) => { ) : i18n.t('Created {{time}}', { time: moment( - data.ao.created + fromServerDate( + data.ao.created + ) ).fromNow(), })}

diff --git a/src/components/Interpretations/InterpretationModal/InterpretationThread.js b/src/components/Interpretations/InterpretationModal/InterpretationThread.js index 03540290d..f1d5779e2 100644 --- a/src/components/Interpretations/InterpretationModal/InterpretationThread.js +++ b/src/components/Interpretations/InterpretationModal/InterpretationThread.js @@ -1,3 +1,4 @@ +import { useTimeZoneConversion } from '@dhis2/app-runtime' import { IconClock16, colors } from '@dhis2/ui' import cx from 'classnames' import moment from 'moment' @@ -16,6 +17,7 @@ const InterpretationThread = ({ onThreadUpdated, downloadMenuComponent: DownloadMenu, }) => { + const { fromServerDate } = useTimeZoneConversion() const focusRef = useRef() useEffect(() => { @@ -36,7 +38,9 @@ const InterpretationThread = ({
- {moment(interpretation.created).format('LLL')} + {moment(fromServerDate(interpretation.created)).format( + 'LLL' + )}
{DownloadMenu && ( diff --git a/src/components/Interpretations/InterpretationsUnit/InterpretationList.js b/src/components/Interpretations/InterpretationsUnit/InterpretationList.js index 22de9c3a0..f16d78514 100644 --- a/src/components/Interpretations/InterpretationsUnit/InterpretationList.js +++ b/src/components/Interpretations/InterpretationsUnit/InterpretationList.js @@ -1,3 +1,4 @@ +import { useTimeZoneConversion } from '@dhis2/app-runtime' import { IconCalendar24, colors, spacers } from '@dhis2/ui' import moment from 'moment' import PropTypes from 'prop-types' @@ -25,6 +26,7 @@ export const InterpretationList = ({ refresh, disabled, }) => { + const { fromServerDate } = useTimeZoneConversion() const interpretationsByDate = interpretations.reduce( (groupedInterpretations, interpretation) => { const date = interpretation.created.split('T')[0] @@ -50,7 +52,7 @@ export const InterpretationList = ({
    diff --git a/src/components/Interpretations/common/Message/Message.js b/src/components/Interpretations/common/Message/Message.js index 0253cb5cb..a965d2965 100644 --- a/src/components/Interpretations/common/Message/Message.js +++ b/src/components/Interpretations/common/Message/Message.js @@ -1,63 +1,69 @@ +import { useTimeZoneConversion } from '@dhis2/app-runtime' import { Parser as RichTextParser } from '@dhis2/d2-ui-rich-text' import { UserAvatar, spacers, colors } from '@dhis2/ui' import moment from 'moment' import PropTypes from 'prop-types' import React from 'react' -const Message = ({ children, text, created, username }) => ( -
  1. -
    - - {username} - -
    -
    - {text} -
    -
    {children}
    - -
  2. -) + .footer { + display: flex; + flex-direction: column; + align-items: flex-start; + gap: ${spacers.dp8}; + } + `} + + ) +} Message.propTypes = { children: PropTypes.node.isRequired, From f27bc38e5cf47840971eb685f0ee705f174eadc0 Mon Sep 17 00:00:00 2001 From: HendrikThePendric Date: Tue, 5 Sep 2023 15:34:38 +0200 Subject: [PATCH 014/129] fix: show warning text below RichTextEditor when unable to show snapshot (DHIS2-15781) --- i18n/en.pot | 7 ++- src/__demo__/InterpretationsUnit.stories.js | 51 +++++++++++++++++++ .../InterpretationsUnit/InterpretationForm.js | 9 ++++ .../InterpretationsUnit.js | 8 +++ .../common/RichTextEditor/RichTextEditor.js | 9 +++- 5 files changed, 80 insertions(+), 4 deletions(-) create mode 100644 src/__demo__/InterpretationsUnit.stories.js diff --git a/i18n/en.pot b/i18n/en.pot index 52645c02d..bfd246658 100644 --- a/i18n/en.pot +++ b/i18n/en.pot @@ -5,8 +5,8 @@ msgstr "" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" -"POT-Creation-Date: 2023-07-06T08:30:33.216Z\n" -"PO-Revision-Date: 2023-07-06T08:30:33.216Z\n" +"POT-Creation-Date: 2023-09-27T14:15:13.876Z\n" +"PO-Revision-Date: 2023-09-27T14:15:13.876Z\n" msgid "view only" msgstr "view only" @@ -374,6 +374,9 @@ msgstr "Hide interpretation" msgid "Write an interpretation" msgstr "Write an interpretation" +msgid "Other people viewing this interpretation in the future may see more data." +msgstr "Other people viewing this interpretation in the future may see more data." + msgid "Post interpretation" msgstr "Post interpretation" diff --git a/src/__demo__/InterpretationsUnit.stories.js b/src/__demo__/InterpretationsUnit.stories.js new file mode 100644 index 000000000..f1c786f57 --- /dev/null +++ b/src/__demo__/InterpretationsUnit.stories.js @@ -0,0 +1,51 @@ +import { CustomDataProvider } from '@dhis2/app-runtime' +import { storiesOf } from '@storybook/react' +import React from 'react' +import { InterpretationsUnit } from '../components/Interpretations/InterpretationsUnit/index.js' + +storiesOf('IntepretationsUnit', module).add('Default', () => { + return ( + + + + ) +}) + +storiesOf('IntepretationsUnit', module).add( + 'With no time dimensions warning', + () => { + return ( + + + + ) + } +) diff --git a/src/components/Interpretations/InterpretationsUnit/InterpretationForm.js b/src/components/Interpretations/InterpretationsUnit/InterpretationForm.js index 1fa8b471d..2b7e9d02c 100644 --- a/src/components/Interpretations/InterpretationsUnit/InterpretationForm.js +++ b/src/components/Interpretations/InterpretationsUnit/InterpretationForm.js @@ -14,6 +14,7 @@ export const InterpretationForm = ({ id, currentUser, disabled, + showNoTimeDimensionHelpText, onSave, }) => { const [showRichTextEditor, setShowRichTextEditor] = useState(false) @@ -51,6 +52,13 @@ export const InterpretationForm = ({ inputPlaceholder={inputPlaceholder} onChange={setInterpretationText} value={interpretationText} + helpText={ + showNoTimeDimensionHelpText + ? i18n.t( + 'Other people viewing this interpretation in the future may see more data.' + ) + : undefined + } />
) : ( - + Date: Thu, 6 Jul 2023 09:51:41 +0200 Subject: [PATCH 015/129] fix: interpretations modal height (DHIS2-15558) --- .../InterpretationModal/InterpretationModal.js | 8 +++++--- .../InterpretationModal/InterpretationThread.js | 13 ++++++++----- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/src/components/Interpretations/InterpretationModal/InterpretationModal.js b/src/components/Interpretations/InterpretationModal/InterpretationModal.js index 4f02eaefa..6853ed4ed 100644 --- a/src/components/Interpretations/InterpretationModal/InterpretationModal.js +++ b/src/components/Interpretations/InterpretationModal/InterpretationModal.js @@ -24,14 +24,14 @@ const modalCSS = css.resolve` max-width: calc(100vw - 128px) !important; max-height: calc(100vh - 128px) !important; width: auto !important; - height: auto !important; + height: calc(100vw - 128px) !important; overflow-y: hidden; } aside.hidden { display: none; } aside > :global(div) > :global(div) { - max-height: none; + height: 100%; } ` @@ -39,6 +39,7 @@ function getModalContentCSS(width) { return css.resolve` div { width: ${width}px; + overflow-y: visible; } ` } @@ -216,12 +217,14 @@ const InterpretationModal = ({ .container { display: flex; flex-direction: column; + height: 100%; } .row { display: flex; flex-direction: row; gap: 16px; + height: 100%; } .visualisation-wrap { @@ -233,7 +236,6 @@ const InterpretationModal = ({ padding-right: ${spacers.dp4}; flex-basis: 300px; flex-shrink: 0; - overflow-y: auto; } `} diff --git a/src/components/Interpretations/InterpretationModal/InterpretationThread.js b/src/components/Interpretations/InterpretationModal/InterpretationThread.js index f1d5779e2..ec4a8b624 100644 --- a/src/components/Interpretations/InterpretationModal/InterpretationThread.js +++ b/src/components/Interpretations/InterpretationModal/InterpretationThread.js @@ -80,9 +80,17 @@ const InterpretationThread = ({ )} + onThreadUpdated(true)} + focusRef={focusRef} + /> {i18n.t('Rename {{fileType}}', { @@ -67,6 +80,7 @@ export const RenameDialog = ({ type, object, onClose, onRename, onError }) => { required value={name} onChange={({ value }) => setName(value)} + dataTest="file-menu-rename-modal-name" /> { value={description} rows={3} onChange={({ value }) => setDescription(value)} + dataTest="file-menu-rename-modal-description" /> - - From 4a8a54ac61d0af1ea3ea5923c6487eb4c1061b18 Mon Sep 17 00:00:00 2001 From: "@dhis2-bot" Date: Tue, 7 Nov 2023 09:09:57 +0000 Subject: [PATCH 025/129] chore(release): cut 26.1.6 [skip ci] ## [26.1.6](https://github.com/dhis2/analytics/compare/v26.1.5...v26.1.6) (2023-11-07) ### Bug Fixes * use json+patch for PATCH requests ([#1593](https://github.com/dhis2/analytics/issues/1593)) ([bdb0b9c](https://github.com/dhis2/analytics/commit/bdb0b9ceaa5ef102ef9768038c763b70a3d5e7d1)) --- CHANGELOG.md | 7 +++++++ package.json | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ff21a7bd6..7a6c9d268 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +## [26.1.6](https://github.com/dhis2/analytics/compare/v26.1.5...v26.1.6) (2023-11-07) + + +### Bug Fixes + +* use json+patch for PATCH requests ([#1593](https://github.com/dhis2/analytics/issues/1593)) ([bdb0b9c](https://github.com/dhis2/analytics/commit/bdb0b9ceaa5ef102ef9768038c763b70a3d5e7d1)) + ## [26.1.5](https://github.com/dhis2/analytics/compare/v26.1.4...v26.1.5) (2023-11-03) diff --git a/package.json b/package.json index d8370ddad..350328668 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@dhis2/analytics", - "version": "26.1.5", + "version": "26.1.6", "main": "./build/cjs/index.js", "module": "./build/es/index.js", "exports": { From cb4a052a19ebdced3ea7b6ffb7d1c40064abac38 Mon Sep 17 00:00:00 2001 From: "@dhis2-bot" Date: Sun, 19 Nov 2023 02:37:51 +0100 Subject: [PATCH 026/129] fix(translations): sync translations from transifex (master) Automatically merged. --- i18n/uz_UZ_Cyrl.po | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/i18n/uz_UZ_Cyrl.po b/i18n/uz_UZ_Cyrl.po index 8a67b872d..888e2a210 100644 --- a/i18n/uz_UZ_Cyrl.po +++ b/i18n/uz_UZ_Cyrl.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: i18next-conv\n" -"POT-Creation-Date: 2023-07-06T08:30:33.216Z\n" +"POT-Creation-Date: 2023-09-27T14:15:13.876Z\n" "PO-Revision-Date: 2020-04-28 22:05+0000\n" "Last-Translator: Ibatov , 2023\n" "Language-Team: Uzbek (Cyrillic) (https://app.transifex.com/hisp-uio/teams/100509/uz@Cyrl/)\n" @@ -237,7 +237,7 @@ msgid "Dimension recommended with selected data" msgstr "Танланган маълумотлар учун созламалар тавсия этилади" msgid "All items" -msgstr "" +msgstr "Барча элементлар" msgid "Automatically include all items" msgstr "" @@ -333,7 +333,7 @@ msgid "map" msgstr "харита" msgid "visualization" -msgstr "" +msgstr "Визуализация" msgid "Edit" msgstr "Таҳрирлаш" @@ -373,6 +373,10 @@ msgstr "" msgid "Write an interpretation" msgstr "Талқин ёзиш" +msgid "" +"Other people viewing this interpretation in the future may see more data." +msgstr "" + msgid "Post interpretation" msgstr "" @@ -595,10 +599,10 @@ msgid_plural "{{count}} groups" msgstr[0] "" msgid "Selected: {{commaSeparatedListOfOrganisationUnits}}" -msgstr "" +msgstr "Танланган: {{commaSeparatedListOfOrganisationUnits}}" msgid "Nothing selected" -msgstr "" +msgstr "Ҳеч нима танланмаган" msgid "User organisation unit" msgstr "Ташкилий бўлим фойдаланувчиси" From f8678880f10843e5c3504cb12bf86c5acb208112 Mon Sep 17 00:00:00 2001 From: "@dhis2-bot" Date: Sun, 19 Nov 2023 01:41:34 +0000 Subject: [PATCH 027/129] chore(release): cut 26.1.7 [skip ci] ## [26.1.7](https://github.com/dhis2/analytics/compare/v26.1.6...v26.1.7) (2023-11-19) ### Bug Fixes * **translations:** sync translations from transifex (master) ([cb4a052](https://github.com/dhis2/analytics/commit/cb4a052a19ebdced3ea7b6ffb7d1c40064abac38)) --- CHANGELOG.md | 7 +++++++ package.json | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7a6c9d268..9664c79a4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +## [26.1.7](https://github.com/dhis2/analytics/compare/v26.1.6...v26.1.7) (2023-11-19) + + +### Bug Fixes + +* **translations:** sync translations from transifex (master) ([cb4a052](https://github.com/dhis2/analytics/commit/cb4a052a19ebdced3ea7b6ffb7d1c40064abac38)) + ## [26.1.6](https://github.com/dhis2/analytics/compare/v26.1.5...v26.1.6) (2023-11-07) diff --git a/package.json b/package.json index 350328668..6c50f8338 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@dhis2/analytics", - "version": "26.1.6", + "version": "26.1.7", "main": "./build/cjs/index.js", "module": "./build/es/index.js", "exports": { From 43a607ba0310b19edd07d866f15337e736567b2f Mon Sep 17 00:00:00 2001 From: "@dhis2-bot" Date: Sun, 26 Nov 2023 02:37:17 +0100 Subject: [PATCH 028/129] fix(translations): sync translations from transifex (master) Automatically merged. --- i18n/uz_UZ_Cyrl.po | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/i18n/uz_UZ_Cyrl.po b/i18n/uz_UZ_Cyrl.po index 888e2a210..9b9dc5769 100644 --- a/i18n/uz_UZ_Cyrl.po +++ b/i18n/uz_UZ_Cyrl.po @@ -77,7 +77,7 @@ msgid "This app could not retrieve required data." msgstr "" msgid "Network error" -msgstr "" +msgstr "Тармоқда хатолик" msgid "Data / Edit calculation" msgstr "" @@ -926,7 +926,7 @@ msgid "Indicator group" msgstr "Индикатор гуруҳи" msgid "All groups" -msgstr "" +msgstr "Барча гуруҳлар" msgid "Indicator" msgstr "Индикатор" From 07f2c7d66ff536486a44d7bbb684f52aa797e8f1 Mon Sep 17 00:00:00 2001 From: "@dhis2-bot" Date: Sun, 26 Nov 2023 01:41:11 +0000 Subject: [PATCH 029/129] chore(release): cut 26.1.8 [skip ci] ## [26.1.8](https://github.com/dhis2/analytics/compare/v26.1.7...v26.1.8) (2023-11-26) ### Bug Fixes * **translations:** sync translations from transifex (master) ([43a607b](https://github.com/dhis2/analytics/commit/43a607ba0310b19edd07d866f15337e736567b2f)) --- CHANGELOG.md | 7 +++++++ package.json | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9664c79a4..2aa4eb993 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +## [26.1.8](https://github.com/dhis2/analytics/compare/v26.1.7...v26.1.8) (2023-11-26) + + +### Bug Fixes + +* **translations:** sync translations from transifex (master) ([43a607b](https://github.com/dhis2/analytics/commit/43a607ba0310b19edd07d866f15337e736567b2f)) + ## [26.1.7](https://github.com/dhis2/analytics/compare/v26.1.6...v26.1.7) (2023-11-19) diff --git a/package.json b/package.json index 6c50f8338..1142355fa 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@dhis2/analytics", - "version": "26.1.7", + "version": "26.1.8", "main": "./build/cjs/index.js", "module": "./build/es/index.js", "exports": { From 2b404b423cfb49347bdf57125870bb7b55338322 Mon Sep 17 00:00:00 2001 From: Edoardo Sabadelli Date: Thu, 14 Dec 2023 15:07:41 +0100 Subject: [PATCH 030/129] feat: implement cumulative values in PT engine (DHIS2-5497) (#1567) * feat: implement cumulative values DHIS2-5497 * fix: render NUMBER type cells for cumulative values This solves formatting issues, like right alignment, caused by the default type being TEXT. * fix: do not accumulate TEXT values * fix: pass valueType also for empty cells This is needed for the cumulative values feature, so empty cells can be set to 0 or to the accumulated value. * fix: show 0 for empty cells with no accumulated value * fix: pass dxDimension object also for empty cells Needed for the cumulative values feature. * fix: store rendered values in accumulators * fix: override cell size when using cumulative values This is to accommodate the accumulated value which might need a wider cell. The cell size is computed based on the rendered value. * fix: add styles for title in disabled sections * fix: fix sorting with cumulative values DHIS2-16156 Refactored and moved some code around to allow getRaw() to return cumulative values, thus fixing the sorting which uses getRaw() to sort the rows/columns. --- src/__demo__/PivotTable.stories.js | 40 ++++ .../Options/VisualizationOptions.js | 2 + .../styles/VisualizationOptions.style.js | 6 + src/modules/pivotTable/PivotTableEngine.js | 177 +++++++++++++----- 4 files changed, 173 insertions(+), 52 deletions(-) diff --git a/src/__demo__/PivotTable.stories.js b/src/__demo__/PivotTable.stories.js index e06782146..93ca49ae9 100644 --- a/src/__demo__/PivotTable.stories.js +++ b/src/__demo__/PivotTable.stories.js @@ -784,6 +784,26 @@ storiesOf('PivotTable', module).add( } ) +storiesOf('PivotTable', module).add( + 'cumulative + empty columns (weekly) - shown', + (_, { pivotTableOptions }) => { + const visualization = { + ...weeklyColumnsVisualization, + ...pivotTableOptions, + hideEmptyColumns: false, + cumulativeValues: true, + } + return ( +
+ +
+ ) + } +) + storiesOf('PivotTable', module).add( 'empty columns (weekly) - hidden', (_, { pivotTableOptions }) => { @@ -803,6 +823,26 @@ storiesOf('PivotTable', module).add( } ) +storiesOf('PivotTable', module).add( + 'cumulative + empty columns (weekly) - hidden', + (_, { pivotTableOptions }) => { + const visualization = { + ...weeklyColumnsVisualization, + ...pivotTableOptions, + hideEmptyColumns: true, + cumulativeValues: true, + } + return ( +
+ +
+ ) + } +) + storiesOf('PivotTable', module).add( 'empty columns + assigned cats (shown)', (_, { pivotTableOptions }) => { diff --git a/src/components/Options/VisualizationOptions.js b/src/components/Options/VisualizationOptions.js index 3bb3e3174..c8eb10e72 100644 --- a/src/components/Options/VisualizationOptions.js +++ b/src/components/Options/VisualizationOptions.js @@ -18,6 +18,7 @@ import { modalContent, tabSection, tabSectionTitle, + tabSectionTitleDisabled, tabSectionTitleMargin, tabSectionOption, tabSectionOptionItem, @@ -95,6 +96,7 @@ const VisualizationOptions = ({ {tabContent.styles} {tabSection.styles} {tabSectionTitle.styles} + {tabSectionTitleDisabled.styles} {tabSectionTitleMargin.styles} {tabSectionOption.styles} {tabSectionOptionItem.styles} diff --git a/src/components/Options/styles/VisualizationOptions.style.js b/src/components/Options/styles/VisualizationOptions.style.js index bcd74f517..61c87803f 100644 --- a/src/components/Options/styles/VisualizationOptions.style.js +++ b/src/components/Options/styles/VisualizationOptions.style.js @@ -51,6 +51,12 @@ export const tabSectionTitle = css.resolve` } ` +export const tabSectionTitleDisabled = css.resolve` + span { + color: ${colors.grey600}; + } +` + export const tabSectionTitleMargin = css.resolve` span { margin-top: ${spacers.dp8}; diff --git a/src/modules/pivotTable/PivotTableEngine.js b/src/modules/pivotTable/PivotTableEngine.js index d59559d2b..b5788fee1 100644 --- a/src/modules/pivotTable/PivotTableEngine.js +++ b/src/modules/pivotTable/PivotTableEngine.js @@ -55,6 +55,7 @@ const defaultOptions = { showColumnSubtotals: false, fixColumnHeaders: false, fixRowHeaders: false, + cumulativeValues: false, } const defaultVisualizationProps = { @@ -268,6 +269,7 @@ export class PivotTableEngine { data = [] rowMap = [] columnMap = [] + accumulators = { rows: {} } constructor(visualization, data, legendSets) { this.visualization = Object.assign( @@ -306,6 +308,7 @@ export class PivotTableEngine { fixRowHeaders: this.dimensionLookup.rows.length ? visualization.fixRowHeaders : false, + cumulativeValues: visualization.cumulativeValues, } this.adaptiveClippingController = new AdaptiveClippingController(this) @@ -333,6 +336,7 @@ export class PivotTableEngine { getRaw({ row, column }) { const cellType = this.getRawCellType({ row, column }) const dxDimension = this.getRawCellDxDimension({ row, column }) + const valueType = dxDimension?.valueType || VALUE_TYPE_TEXT const headers = [ ...this.getRawRowHeader(row), @@ -346,55 +350,79 @@ export class PivotTableEngine { header?.dimensionItemType === DIMENSION_TYPE_ORGANISATION_UNIT )?.uid + const rawCell = { + cellType, + valueType, + ouId, + peId, + } + if (!this.data[row] || !this.data[row][column]) { - return { - cellType, - empty: true, - ouId, - peId, + rawCell.empty = true + } else { + const dataRow = this.data[row][column] + + let rawValue = + cellType === CELL_TYPE_VALUE + ? dataRow[this.dimensionLookup.dataHeaders.value] + : dataRow.value + let renderedValue = rawValue + + if (valueType === VALUE_TYPE_NUMBER) { + rawValue = parseValue(rawValue) + switch (this.visualization.numberType) { + case NUMBER_TYPE_ROW_PERCENTAGE: + renderedValue = + rawValue / this.percentageTotals[row].value + break + case NUMBER_TYPE_COLUMN_PERCENTAGE: + renderedValue = + rawValue / this.percentageTotals[column].value + break + default: + break + } } - } - const dataRow = this.data[row][column] + renderedValue = renderValue( + renderedValue, + valueType, + this.visualization + ) - let rawValue = - cellType === CELL_TYPE_VALUE - ? dataRow[this.dimensionLookup.dataHeaders.value] - : dataRow.value - let renderedValue = rawValue - const valueType = dxDimension?.valueType || VALUE_TYPE_TEXT + rawCell.dxDimension = dxDimension + rawCell.empty = false + rawCell.rawValue = rawValue + rawCell.renderedValue = renderedValue + } - if (valueType === VALUE_TYPE_NUMBER) { - rawValue = parseValue(rawValue) - switch (this.visualization.numberType) { - case NUMBER_TYPE_ROW_PERCENTAGE: - renderedValue = rawValue / this.percentageTotals[row].value - break - case NUMBER_TYPE_COLUMN_PERCENTAGE: - renderedValue = - rawValue / this.percentageTotals[column].value - break - default: - break + if (this.options.cumulativeValues) { + const cumulativeValue = this.getCumulative({ + row, + column, + }) + + if (cumulativeValue !== undefined && cumulativeValue !== null) { + // force to NUMBER for accumulated values + rawCell.valueType = + valueType === undefined || valueType === null + ? VALUE_TYPE_NUMBER + : valueType + rawCell.empty = false + rawCell.rawValue = cumulativeValue + rawCell.renderedValue = renderValue( + cumulativeValue, + valueType, + this.visualization + ) } } - renderedValue = renderValue( - renderedValue, - valueType, - this.visualization - ) + return rawCell + } - return { - cellType, - empty: false, - valueType, - rawValue, - renderedValue, - dxDimension, - ouId, - peId, - } + getCumulative({ row, column }) { + return this.accumulators.rows[row][column] } get({ row, column }) { @@ -488,10 +516,8 @@ export class PivotTableEngine { return undefined } const cellValue = this.data[row][column] - if (!cellValue) { - return undefined - } - if (!Array.isArray(cellValue)) { + + if (cellValue && !Array.isArray(cellValue)) { // This is a total cell return { valueType: cellValue.valueType, @@ -527,6 +553,11 @@ export class PivotTableEngine { } } + // Empty cell + // The cell still needs to get the valueType to render correctly 0 and cumulative values + // + // OR + // // Data is in Filter // TODO : This assumes the server ignores text types, we should confirm this is the case return { @@ -539,7 +570,7 @@ export class PivotTableEngine { return !this.data[row] || this.data[row].length === 0 } columnIsEmpty(column) { - return !this.adaptiveClippingController.columns.sizes[column] + return !this.rowMap.some((row) => this.data[row][column]) } getRawColumnHeader(column) { @@ -967,6 +998,45 @@ export class PivotTableEngine { : times(this.dataWidth, (n) => n) } + resetAccumulators() { + if (this.options.cumulativeValues) { + this.rowMap.forEach((row) => { + this.accumulators.rows[row] = {} + this.columnMap.reduce((acc, column) => { + const cellType = this.getRawCellType({ row, column }) + const dxDimension = this.getRawCellDxDimension({ + row, + column, + }) + const valueType = dxDimension?.valueType || VALUE_TYPE_TEXT + + // only accumulate numeric values + // accumulating text values does not make sense + if (valueType === VALUE_TYPE_NUMBER) { + if (this.data[row] && this.data[row][column]) { + const dataRow = this.data[row][column] + + const rawValue = + cellType === CELL_TYPE_VALUE + ? dataRow[ + this.dimensionLookup.dataHeaders.value + ] + : dataRow.value + + acc += parseValue(rawValue) + } + + this.accumulators.rows[row][column] = acc + } + + return acc + }, 0) + }) + } else { + this.accumulators = { rows: {} } + } + } + get cellPadding() { switch (this.visualization.displayDensity) { case DISPLAY_DENSITY_OPTION_COMPACT: @@ -1059,19 +1129,22 @@ export class PivotTableEngine { this.finalizeTotals() - this.rawData.rows.forEach((dataRow) => { - const pos = lookup(dataRow, this.dimensionLookup, this) - if (pos) { + this.resetRowMap() + this.resetColumnMap() + + this.resetAccumulators() + + this.rowMap.forEach((row) => { + this.columnMap.forEach((column) => { + const pos = { row, column } + this.adaptiveClippingController.add( pos, this.getRaw(pos).renderedValue ) - } + }) }) - this.resetRowMap() - this.resetColumnMap() - this.height = this.rowMap.length this.width = this.columnMap.length From 913eb4084261c035d6027d7a8acf9b3b4e43633a Mon Sep 17 00:00:00 2001 From: "@dhis2-bot" Date: Thu, 14 Dec 2023 14:11:20 +0000 Subject: [PATCH 031/129] chore(release): cut 26.2.0 [skip ci] # [26.2.0](https://github.com/dhis2/analytics/compare/v26.1.8...v26.2.0) (2023-12-14) ### Features * implement cumulative values in PT engine (DHIS2-5497) ([#1567](https://github.com/dhis2/analytics/issues/1567)) ([2b404b4](https://github.com/dhis2/analytics/commit/2b404b423cfb49347bdf57125870bb7b55338322)) --- CHANGELOG.md | 7 +++++++ package.json | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2aa4eb993..f366e4f6e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +# [26.2.0](https://github.com/dhis2/analytics/compare/v26.1.8...v26.2.0) (2023-12-14) + + +### Features + +* implement cumulative values in PT engine (DHIS2-5497) ([#1567](https://github.com/dhis2/analytics/issues/1567)) ([2b404b4](https://github.com/dhis2/analytics/commit/2b404b423cfb49347bdf57125870bb7b55338322)) + ## [26.1.8](https://github.com/dhis2/analytics/compare/v26.1.7...v26.1.8) (2023-11-26) diff --git a/package.json b/package.json index 1142355fa..e9402ffa4 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@dhis2/analytics", - "version": "26.1.8", + "version": "26.2.0", "main": "./build/cjs/index.js", "module": "./build/es/index.js", "exports": { From bac4cc94572b2e8367fb3d1f061eb7ed122f372f Mon Sep 17 00:00:00 2001 From: "@dhis2-bot" Date: Sun, 24 Dec 2023 02:36:43 +0100 Subject: [PATCH 032/129] fix(translations): sync translations from transifex (master) Automatically merged. --- i18n/lo.po | 35 ++++++++++++++++++++++++++--------- 1 file changed, 26 insertions(+), 9 deletions(-) diff --git a/i18n/lo.po b/i18n/lo.po index 31f689fc5..b41993e0e 100644 --- a/i18n/lo.po +++ b/i18n/lo.po @@ -2,16 +2,16 @@ # Translators: # Viktor Varland , 2022 # Somkhit Bouavong , 2022 -# Saysamone Sibounma, 2022 -# phil_dhis2, 2023 +# Philip Larsen Donnelly, 2023 # Phouthasinh PHEUAYSITHIPHONE, 2023 +# Saysamone Sibounma, 2023 # msgid "" msgstr "" "Project-Id-Version: i18next-conv\n" -"POT-Creation-Date: 2023-04-18T08:41:27.838Z\n" +"POT-Creation-Date: 2023-09-27T14:15:13.876Z\n" "PO-Revision-Date: 2020-04-28 22:05+0000\n" -"Last-Translator: Phouthasinh PHEUAYSITHIPHONE, 2023\n" +"Last-Translator: Saysamone Sibounma, 2023\n" "Language-Team: Lao (https://app.transifex.com/hisp-uio/teams/100509/lo/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -81,7 +81,7 @@ msgid "This app could not retrieve required data." msgstr "" msgid "Network error" -msgstr "" +msgstr "ຂໍ້ຜິດພາດທາງເຄື່ອຂ່າຍ" msgid "Data / Edit calculation" msgstr "" @@ -90,7 +90,7 @@ msgid "Data / New calculation" msgstr "" msgid "Remove item" -msgstr "" +msgstr "ລົບລາຍການ" msgid "Check formula" msgstr "" @@ -348,6 +348,9 @@ msgstr "" msgid "Post reply" msgstr "" +msgid "Delete failed" +msgstr "" + msgid "Could not update comment" msgstr "" @@ -374,21 +377,32 @@ msgstr "" msgid "Write an interpretation" msgstr "" +msgid "" +"Other people viewing this interpretation in the future may see more data." +msgstr "" + msgid "Post interpretation" msgstr "" msgid "Interpretations" msgstr "ການແປຂໍ້ມູນ" +msgid "Reply" +msgstr "ຕອບກັບ" + +msgid "{{count}} replies" +msgid_plural "{{count}} replies" +msgstr[0] "" + +msgid "View replies" +msgstr "" + msgid "Unlike" msgstr "ບໍ່ມັກ" msgid "Like" msgstr "ມັກ" -msgid "Reply" -msgstr "ຕອບກັບ" - msgid "Share" msgstr "ເຜີຍແຜ່" @@ -840,6 +854,9 @@ msgstr "" msgid "Years" msgstr "ປີ" +msgid "Interpretations and details" +msgstr "" + msgid "Translating to" msgstr "" From b2751a3bdfc57309f2a18cc90128fb4a0300f669 Mon Sep 17 00:00:00 2001 From: "@dhis2-bot" Date: Sun, 24 Dec 2023 01:40:20 +0000 Subject: [PATCH 033/129] chore(release): cut 26.2.1 [skip ci] ## [26.2.1](https://github.com/dhis2/analytics/compare/v26.2.0...v26.2.1) (2023-12-24) ### Bug Fixes * **translations:** sync translations from transifex (master) ([bac4cc9](https://github.com/dhis2/analytics/commit/bac4cc94572b2e8367fb3d1f061eb7ed122f372f)) --- CHANGELOG.md | 7 +++++++ package.json | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f366e4f6e..8f208755b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +## [26.2.1](https://github.com/dhis2/analytics/compare/v26.2.0...v26.2.1) (2023-12-24) + + +### Bug Fixes + +* **translations:** sync translations from transifex (master) ([bac4cc9](https://github.com/dhis2/analytics/commit/bac4cc94572b2e8367fb3d1f061eb7ed122f372f)) + # [26.2.0](https://github.com/dhis2/analytics/compare/v26.1.8...v26.2.0) (2023-12-14) diff --git a/package.json b/package.json index e9402ffa4..e79653acd 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@dhis2/analytics", - "version": "26.2.0", + "version": "26.2.1", "main": "./build/cjs/index.js", "module": "./build/es/index.js", "exports": { From 52ae98d3cadd975c2079055b00adba58f0982ef4 Mon Sep 17 00:00:00 2001 From: Jen Jones Arnesen Date: Tue, 2 Jan 2024 11:26:04 +0100 Subject: [PATCH 034/129] fix: add white-space css to preserve paragraphs in interpretations (#1599) Fixes DHIS2-16365 --- src/components/Interpretations/common/Message/Message.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/components/Interpretations/common/Message/Message.js b/src/components/Interpretations/common/Message/Message.js index 50613ab2b..016e8b9d0 100644 --- a/src/components/Interpretations/common/Message/Message.js +++ b/src/components/Interpretations/common/Message/Message.js @@ -49,6 +49,7 @@ const Message = ({ children, text, created, username }) => { line-height: 19px; color: ${colors.grey900}; word-break: break-word; + white-space: pre-line; } .content :global(p:first-child) { From e8334947155d0d6b84d4ea90907059d44e60b398 Mon Sep 17 00:00:00 2001 From: "@dhis2-bot" Date: Tue, 2 Jan 2024 10:29:40 +0000 Subject: [PATCH 035/129] chore(release): cut 26.2.2 [skip ci] ## [26.2.2](https://github.com/dhis2/analytics/compare/v26.2.1...v26.2.2) (2024-01-02) ### Bug Fixes * add white-space css to preserve paragraphs in interpretations ([#1599](https://github.com/dhis2/analytics/issues/1599)) ([52ae98d](https://github.com/dhis2/analytics/commit/52ae98d3cadd975c2079055b00adba58f0982ef4)) --- CHANGELOG.md | 7 +++++++ package.json | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8f208755b..f4e829421 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +## [26.2.2](https://github.com/dhis2/analytics/compare/v26.2.1...v26.2.2) (2024-01-02) + + +### Bug Fixes + +* add white-space css to preserve paragraphs in interpretations ([#1599](https://github.com/dhis2/analytics/issues/1599)) ([52ae98d](https://github.com/dhis2/analytics/commit/52ae98d3cadd975c2079055b00adba58f0982ef4)) + ## [26.2.1](https://github.com/dhis2/analytics/compare/v26.2.0...v26.2.1) (2023-12-24) diff --git a/package.json b/package.json index e79653acd..aa5a1e077 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@dhis2/analytics", - "version": "26.2.1", + "version": "26.2.2", "main": "./build/cjs/index.js", "module": "./build/es/index.js", "exports": { From 14fbfb5bbfbbaa430631d39b8ca77c68817f10a4 Mon Sep 17 00:00:00 2001 From: Jen Jones Arnesen Date: Fri, 19 Jan 2024 13:32:04 +0100 Subject: [PATCH 036/129] fix: adjust width of interpretation reply input when in focus [DHIS2-16429] (#1607) Fixes: https://dhis2.atlassian.net/browse/DHIS2-16429 Reduce width by the width of the box shadow so it doesn't get cut off. --- .../common/RichTextEditor/styles/RichTextEditor.style.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/components/Interpretations/common/RichTextEditor/styles/RichTextEditor.style.js b/src/components/Interpretations/common/RichTextEditor/styles/RichTextEditor.style.js index 865e484aa..53b9a5457 100644 --- a/src/components/Interpretations/common/RichTextEditor/styles/RichTextEditor.style.js +++ b/src/components/Interpretations/common/RichTextEditor/styles/RichTextEditor.style.js @@ -36,6 +36,7 @@ export const mainClasses = css` .textarea:focus { outline: none; box-shadow: 0 0 0 3px ${theme.focus}; + width: calc(100% - 3px); } .textarea:disabled { From b259e0390286003713232177686da929477f2511 Mon Sep 17 00:00:00 2001 From: "@dhis2-bot" Date: Fri, 19 Jan 2024 12:35:42 +0000 Subject: [PATCH 037/129] chore(release): cut 26.2.3 [skip ci] ## [26.2.3](https://github.com/dhis2/analytics/compare/v26.2.2...v26.2.3) (2024-01-19) ### Bug Fixes * adjust width of interpretation reply input when in focus [DHIS2-16429] ([#1607](https://github.com/dhis2/analytics/issues/1607)) ([14fbfb5](https://github.com/dhis2/analytics/commit/14fbfb5bbfbbaa430631d39b8ca77c68817f10a4)) --- CHANGELOG.md | 7 +++++++ package.json | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f4e829421..6a38826c4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +## [26.2.3](https://github.com/dhis2/analytics/compare/v26.2.2...v26.2.3) (2024-01-19) + + +### Bug Fixes + +* adjust width of interpretation reply input when in focus [DHIS2-16429] ([#1607](https://github.com/dhis2/analytics/issues/1607)) ([14fbfb5](https://github.com/dhis2/analytics/commit/14fbfb5bbfbbaa430631d39b8ca77c68817f10a4)) + ## [26.2.2](https://github.com/dhis2/analytics/compare/v26.2.1...v26.2.2) (2024-01-02) diff --git a/package.json b/package.json index aa5a1e077..36200f9b8 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@dhis2/analytics", - "version": "26.2.2", + "version": "26.2.3", "main": "./build/cjs/index.js", "module": "./build/es/index.js", "exports": { From 41aa57ff24e790b8db2e21d916b22fb03d6878b2 Mon Sep 17 00:00:00 2001 From: "@dhis2-bot" Date: Sun, 21 Jan 2024 02:39:32 +0100 Subject: [PATCH 038/129] fix(translations): sync translations from transifex (master) Automatically merged. --- i18n/sv.po | 33 ++++++++++++++++++++++++++------- 1 file changed, 26 insertions(+), 7 deletions(-) diff --git a/i18n/sv.po b/i18n/sv.po index afe88915f..4148939cc 100644 --- a/i18n/sv.po +++ b/i18n/sv.po @@ -1,14 +1,15 @@ # # Translators: # Viktor Varland , 2022 -# phil_dhis2, 2023 +# Philip Larsen Donnelly, 2023 +# Jason Pickering , 2024 # msgid "" msgstr "" "Project-Id-Version: i18next-conv\n" -"POT-Creation-Date: 2023-04-18T08:41:27.838Z\n" +"POT-Creation-Date: 2023-09-27T14:15:13.876Z\n" "PO-Revision-Date: 2020-04-28 22:05+0000\n" -"Last-Translator: phil_dhis2, 2023\n" +"Last-Translator: Jason Pickering , 2024\n" "Language-Team: Swedish (https://app.transifex.com/hisp-uio/teams/100509/sv/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -346,6 +347,9 @@ msgstr "" msgid "Post reply" msgstr "" +msgid "Delete failed" +msgstr "" + msgid "Could not update comment" msgstr "" @@ -372,21 +376,33 @@ msgstr "" msgid "Write an interpretation" msgstr "" +msgid "" +"Other people viewing this interpretation in the future may see more data." +msgstr "" + msgid "Post interpretation" msgstr "" msgid "Interpretations" msgstr "tolkningar" +msgid "Reply" +msgstr "Svar" + +msgid "{{count}} replies" +msgid_plural "{{count}} replies" +msgstr[0] "" +msgstr[1] "" + +msgid "View replies" +msgstr "" + msgid "Unlike" msgstr "" msgid "Like" msgstr "" -msgid "Reply" -msgstr "Svar" - msgid "Share" msgstr "Dela med sig" @@ -611,7 +627,7 @@ msgid "Select a group" msgstr "" msgid "Deselect all" -msgstr "" +msgstr "Avmarkera alla" msgid "Period type" msgstr "Periodtyp" @@ -841,6 +857,9 @@ msgstr "" msgid "Years" msgstr "År" +msgid "Interpretations and details" +msgstr "" + msgid "Translating to" msgstr "" From 9ad9f354c752f97c0ceddeb42f81f0e35c69b3b3 Mon Sep 17 00:00:00 2001 From: "@dhis2-bot" Date: Sun, 21 Jan 2024 01:43:18 +0000 Subject: [PATCH 039/129] chore(release): cut 26.2.4 [skip ci] ## [26.2.4](https://github.com/dhis2/analytics/compare/v26.2.3...v26.2.4) (2024-01-21) ### Bug Fixes * **translations:** sync translations from transifex (master) ([41aa57f](https://github.com/dhis2/analytics/commit/41aa57ff24e790b8db2e21d916b22fb03d6878b2)) --- CHANGELOG.md | 7 +++++++ package.json | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6a38826c4..934300ff2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +## [26.2.4](https://github.com/dhis2/analytics/compare/v26.2.3...v26.2.4) (2024-01-21) + + +### Bug Fixes + +* **translations:** sync translations from transifex (master) ([41aa57f](https://github.com/dhis2/analytics/commit/41aa57ff24e790b8db2e21d916b22fb03d6878b2)) + ## [26.2.3](https://github.com/dhis2/analytics/compare/v26.2.2...v26.2.3) (2024-01-19) diff --git a/package.json b/package.json index 36200f9b8..3eae9bf1f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@dhis2/analytics", - "version": "26.2.3", + "version": "26.2.4", "main": "./build/cjs/index.js", "module": "./build/es/index.js", "exports": { From 57eb703a4227e6496d021fdb17d6d4fd0e935eb9 Mon Sep 17 00:00:00 2001 From: HendrikThePendric Date: Wed, 24 Jan 2024 11:00:50 +0100 Subject: [PATCH 040/129] feat: add classname prop to hover-menu-dropdown --- .../Toolbar/HoverMenuBar/HoverMenuDropdown.js | 11 +++++++++-- .../HoverMenuBar/__tests__/HoverMenuDropdown.spec.js | 11 +++++++++++ 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/src/components/Toolbar/HoverMenuBar/HoverMenuDropdown.js b/src/components/Toolbar/HoverMenuBar/HoverMenuDropdown.js index 259131be2..fbcdf146c 100644 --- a/src/components/Toolbar/HoverMenuBar/HoverMenuDropdown.js +++ b/src/components/Toolbar/HoverMenuBar/HoverMenuDropdown.js @@ -6,7 +6,13 @@ import React, { useRef } from 'react' import menuButtonStyles from '../MenuButton.styles.js' import { useHoverMenubarContext } from './HoverMenuBar.js' -export const HoverMenuDropdown = ({ children, label, dataTest, disabled }) => { +export const HoverMenuDropdown = ({ + children, + className, + label, + dataTest, + disabled, +}) => { const buttonRef = useRef() const { onDropDownButtonClick, @@ -18,7 +24,7 @@ export const HoverMenuDropdown = ({ children, label, dataTest, disabled }) => { return ( <> +const OptionsButton = ({ onClick }) => ( + <> + + + ) OptionsButton.propTypes = { - style: PropTypes.object, onClick: PropTypes.func, } diff --git a/src/components/DimensionsPanel/List/RecommendedIcon.js b/src/components/DimensionsPanel/List/RecommendedIcon.js index 3a8b75dc9..12609d3a7 100644 --- a/src/components/DimensionsPanel/List/RecommendedIcon.js +++ b/src/components/DimensionsPanel/List/RecommendedIcon.js @@ -9,7 +9,6 @@ const RecommendedIcon = ({ isRecommended, dataTest }) =>
diff --git a/src/components/DimensionsPanel/List/__tests__/__snapshots__/DimensionItem.spec.js.snap b/src/components/DimensionsPanel/List/__tests__/__snapshots__/DimensionItem.spec.js.snap index 1c33a04bf..f58b07faa 100644 --- a/src/components/DimensionsPanel/List/__tests__/__snapshots__/DimensionItem.spec.js.snap +++ b/src/components/DimensionsPanel/List/__tests__/__snapshots__/DimensionItem.spec.js.snap @@ -1,405 +1,283 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`DimensionItem matches the snapshot 1`] = ` -
  • -
    + +
  • - -
    -
    - - Period - - + +
    +
    + + + Period + + + +
  • - - + + diff --git a/src/components/Interpretations/common/RichTextEditor/index.js b/src/components/Interpretations/common/RichTextEditor/index.js deleted file mode 100644 index 31c0113ca..000000000 --- a/src/components/Interpretations/common/RichTextEditor/index.js +++ /dev/null @@ -1 +0,0 @@ -export { RichTextEditor } from './RichTextEditor.js' diff --git a/src/components/Interpretations/common/index.js b/src/components/Interpretations/common/index.js index 562614fb1..d3473298f 100644 --- a/src/components/Interpretations/common/index.js +++ b/src/components/Interpretations/common/index.js @@ -1,4 +1,3 @@ export * from './Interpretation/index.js' export * from './Message/index.js' -export * from './RichTextEditor/index.js' export * from './getInterpretationAccess.js' diff --git a/src/components/Interpretations/common/RichTextEditor/RichTextEditor.js b/src/components/RichText/Editor/Editor.js similarity index 78% rename from src/components/Interpretations/common/RichTextEditor/RichTextEditor.js rename to src/components/RichText/Editor/Editor.js index e8ad9216d..6fdbf558e 100644 --- a/src/components/Interpretations/common/RichTextEditor/RichTextEditor.js +++ b/src/components/RichText/Editor/Editor.js @@ -1,10 +1,9 @@ import i18n from '@dhis2/d2-i18n' -import { Parser as RichTextParser } from '@dhis2/d2-ui-rich-text' import { Button, Popover, Tooltip, - Field, + Help, IconAt24, IconFaceAdd24, IconLink24, @@ -12,9 +11,11 @@ import { IconTextItalic24, colors, } from '@dhis2/ui' +import cx from 'classnames' import PropTypes from 'prop-types' import React, { forwardRef, useRef, useEffect, useState } from 'react' -import { UserMentionWrapper } from '../UserMention/UserMentionWrapper.js' +import { UserMentionWrapper } from '../../UserMention/UserMentionWrapper.js' +import { Parser } from '../Parser/Parser.js' import { convertCtrlKey, insertMarkdown, @@ -33,22 +34,22 @@ import { toolbarClasses, tooltipAnchorClasses, emojisPopoverClasses, -} from './styles/RichTextEditor.style.js' +} from './styles/Editor.style.js' const EmojisPopover = ({ onInsertMarkdown, onClose, reference }) => (
    • onInsertMarkdown(EMOJI_SMILEY_FACE)}> - {emojis[EMOJI_SMILEY_FACE]} + {emojis[EMOJI_SMILEY_FACE]}
    • onInsertMarkdown(EMOJI_SAD_FACE)}> - {emojis[EMOJI_SAD_FACE]} + {emojis[EMOJI_SAD_FACE]}
    • onInsertMarkdown(EMOJI_THUMBS_UP)}> - {emojis[EMOJI_THUMBS_UP]} + {emojis[EMOJI_THUMBS_UP]}
    • onInsertMarkdown(EMOJI_THUMBS_DOWN)}> - {emojis[EMOJI_THUMBS_DOWN]} + {emojis[EMOJI_THUMBS_DOWN]}
    @@ -190,29 +191,59 @@ Toolbar.propTypes = { disabled: PropTypes.bool, } -export const RichTextEditor = forwardRef( +export const Editor = forwardRef( ( - { value, disabled, inputPlaceholder, onChange, errorText, helpText }, + { + value, + disabled, + inputPlaceholder, + onChange, + errorText, + helpText, + initialFocus, + resizable, + }, externalRef ) => { const [previewMode, setPreviewMode] = useState(false) const internalRef = useRef() const textareaRef = externalRef || internalRef + const caretPosRef = useRef(undefined) - useEffect(() => textareaRef.current?.focus(), [textareaRef]) + const insertMarkdownCallback = (text, caretPos) => { + caretPosRef.current = caretPos + onChange(text) + textareaRef.current.focus() + } + + useEffect(() => { + if (initialFocus) { + textareaRef.current?.focus() + } + }, [initialFocus, textareaRef]) + + useEffect(() => { + if (caretPosRef.current) { + textareaRef.current?.setSelectionRange( + caretPosRef.current, + caretPosRef.current + ) + + caretPosRef.current = undefined + } + }, [value, textareaRef]) return ( -
    +
    { insertMarkdown( markdown, textareaRef.current, - (text, caretPos) => { - onChange(text) - textareaRef.current.focus() - textareaRef.current.selectionEnd = caretPos - } + insertMarkdownCallback ) if (markdown === MENTION) { @@ -231,20 +262,18 @@ export const RichTextEditor = forwardRef( /> {previewMode ? (
    - {value} + {value}
    ) : ( - +