diff --git a/CHANGELOG.md b/CHANGELOG.md index baaaeb4db4..0eb9a40a3c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,45 @@ +# [101.4.0](https://github.com/dhis2/capture-app/compare/v101.3.3...v101.4.0) (2024-09-09) + + +### Features + +* [DHIS2-17878][DHIS2-17048] Add overflow menu with actions to stages&events ([#3756](https://github.com/dhis2/capture-app/issues/3756)) ([12af138](https://github.com/dhis2/capture-app/commit/12af1384f4ab4e9c6eeef2460bee7d53bfb6b8cc)) + +## [101.3.3](https://github.com/dhis2/capture-app/compare/v101.3.2...v101.3.3) (2024-09-02) + + +### Bug Fixes + +* [DHIS2-17971] trigger program stage specific rules on opening new event page ([#3776](https://github.com/dhis2/capture-app/issues/3776)) ([cd06e41](https://github.com/dhis2/capture-app/commit/cd06e414fc2162397f3844887e1b3f902d18a874)) + +## [101.3.2](https://github.com/dhis2/capture-app/compare/v101.3.1...v101.3.2) (2024-09-01) + + +### Bug Fixes + +* **translations:** sync translations from transifex (master) ([3dfd424](https://github.com/dhis2/capture-app/commit/3dfd4240ad9d5ef4512b283dc222eb54891aa896)) + +## [101.3.1](https://github.com/dhis2/capture-app/compare/v101.3.0...v101.3.1) (2024-08-29) + + +### Bug Fixes + +* [DHIS2-17651] enrollment dashboard UI changes ([#3767](https://github.com/dhis2/capture-app/issues/3767)) ([012b60d](https://github.com/dhis2/capture-app/commit/012b60d3c297eea1bc3bfb62d9329ba37a9c0f94)) + +# [101.3.0](https://github.com/dhis2/capture-app/compare/v101.2.2...v101.3.0) (2024-08-28) + + +### Features + +* [DHIS2-11836] respect block entry form ([#3759](https://github.com/dhis2/capture-app/issues/3759)) ([ed3ed5a](https://github.com/dhis2/capture-app/commit/ed3ed5a58f602ea487b90bb5997aad9f3b6e22cb)) + +## [101.2.2](https://github.com/dhis2/capture-app/compare/v101.2.1...v101.2.2) (2024-08-28) + + +### Bug Fixes + +* [DHIS2-17953] Invalid dateFormat conversion in related stages ([#3774](https://github.com/dhis2/capture-app/issues/3774)) ([334297c](https://github.com/dhis2/capture-app/commit/334297c91fca8ef427729a6454f5a8f8dd550453)) + ## [101.2.1](https://github.com/dhis2/capture-app/compare/v101.2.0...v101.2.1) (2024-08-25) diff --git a/cypress/e2e/EnrollmentAddEventPage/EnrollmentAddEventPageForm/EnrollmentAddEventPageForm.js b/cypress/e2e/EnrollmentAddEventPage/EnrollmentAddEventPageForm/EnrollmentAddEventPageForm.js index f3a2d9f851..f5369a15cf 100644 --- a/cypress/e2e/EnrollmentAddEventPage/EnrollmentAddEventPageForm/EnrollmentAddEventPageForm.js +++ b/cypress/e2e/EnrollmentAddEventPage/EnrollmentAddEventPageForm/EnrollmentAddEventPageForm.js @@ -38,7 +38,7 @@ const changeEnrollmentAndEventsStatus = () => ( ); const showAllEventsInProgramStage = () => { - cy.get('[data-test="dhis2-uicore-tablefoot"]') + cy.get('[data-test="dhis2-uicore-tabletoolbar"]') .then(($footer) => { if ($footer.find('[data-test="show-more-button"]').length > 0) { $footer.find('[data-test="show-more-button"]') @@ -119,11 +119,6 @@ When(/^you click the button to (.*) without post request/, (buttonText) => { When('the enrollment overview is finished loading', () => { cy.get('[data-test="dhis2-uicore-circularloader"]').should('not.exist'); - cy.get('[data-test="dhis2-uicore-datatable"]') - .within(() => { - cy.get('[data-test="dhis2-uicore-datatablerow"]') - .should('exist'); - }); }); When('the form is finished loading', () => { diff --git a/cypress/e2e/EnrollmentEditEventPage/EnrollmentEditEventPageForm/EnrollmentEditEventPageForm.feature b/cypress/e2e/EnrollmentEditEventPage/EnrollmentEditEventPageForm/EnrollmentEditEventPageForm.feature index 72271b0594..594b821007 100644 --- a/cypress/e2e/EnrollmentEditEventPage/EnrollmentEditEventPageForm/EnrollmentEditEventPageForm.feature +++ b/cypress/e2e/EnrollmentEditEventPage/EnrollmentEditEventPageForm/EnrollmentEditEventPageForm.feature @@ -101,6 +101,12 @@ Scenario: User can see disabled scheduled date for active event Then the user see the following text: Enrollment: Edit Event Then the user see the schedule date field with tooltip: Scheduled date cannot be changed for Active events +@user:trackerAutoTestRestricted +Scenario: The user cannot enter edit mode for completed events + Given you land on the enrollment event page with selected Person by having typed /#/enrollmentEventEdit?eventId=nUVwTLuQ6FT&orgUnitId=DiszpKrYNg8 + And the user see the following text: Enrollment: View Event + Then the edit button should be disabled + Scenario: User can edit the event and complete the enrollment Given you land on the enrollment event page with selected Malaria Entity by having typed #/enrollmentEventEdit?eventId=MHR4Zj6KLz0&orgUnitId=DiszpKrYNg8 And the enrollment status is active diff --git a/cypress/e2e/EnrollmentEditEventPage/EnrollmentEditEventPageForm/EnrollmentEditEventPageForm.js b/cypress/e2e/EnrollmentEditEventPage/EnrollmentEditEventPageForm/EnrollmentEditEventPageForm.js index bd82268d44..bd8c7855fc 100644 --- a/cypress/e2e/EnrollmentEditEventPage/EnrollmentEditEventPageForm/EnrollmentEditEventPageForm.js +++ b/cypress/e2e/EnrollmentEditEventPage/EnrollmentEditEventPageForm/EnrollmentEditEventPageForm.js @@ -204,3 +204,9 @@ And('you open the Birth stage event', () => { }); }); +Then('the edit button should be disabled', () => { + cy.get('[data-test="widget-enrollment-event"]') + .find('[data-test="dhis2-uicore-button"]') + .eq(1) + .should('be.disabled'); +}); diff --git a/cypress/e2e/EnrollmentPage/StagesAndEventsWidget/StagesAndEventsWidget.feature b/cypress/e2e/EnrollmentPage/StagesAndEventsWidget/StagesAndEventsWidget.feature index e76f9dac8a..e944741b2f 100644 --- a/cypress/e2e/EnrollmentPage/StagesAndEventsWidget/StagesAndEventsWidget.feature +++ b/cypress/e2e/EnrollmentPage/StagesAndEventsWidget/StagesAndEventsWidget.feature @@ -1,9 +1,5 @@ Feature: User interacts with Stages and Events Widget - @user:trackerAutoTestRestricted - Scenario: Create new event button is disabled if no data write access - Given you open the enrollment page by typing #enrollment?enrollmentId=WKPoiZxZxNG&orgUnitId=DiszpKrYNg8&programId=WSGAb5XwJ3Y&teiId=PgmUFEQYZdt - Then you should see the disabled button New Previous deliveries event Scenario: User can view program stages Given you open the enrollment page @@ -29,13 +25,10 @@ Feature: User interacts with Stages and Events Widget And you see the first 5 events in the table And you see buttons in the footer list - Scenario: User can view more events and then view less + Scenario: User can view more events Given you open the enrollment page which has multiples events and stages When you click show more button in stages&event list - Then more events should be displayed - And reset button should be displayed - And you click reset button - Then there should be 5 rows in the table + Then there should be 10 rows in the table Scenario: User can sort the list of events Given you open the enrollment page which has multiples events and stages @@ -60,13 +53,36 @@ Feature: User interacts with Stages and Events Widget When you click New First antenatal care visit event Then you should navigate to Add new page #/enrollmentEventNew?enrollmentId=ek4WWAgXX5i&orgUnitId=DwpbWkiqjMy&programId=WSGAb5XwJ3Y&stageId=WZbXY0S00lP&teiId=yFcOhsM1Yoa - Scenario: User can not go to Add new page if stage is not repeatable and there is event in the stage Given you open the enrollment page by typing #enrollment?programId=IpHINAT79UW&orgUnitId=UgYg0YW7ZIh&teiId=fhFQhO0xILJ&enrollmentId=gPDueU02tn8 Then you should see the disabled button New Birth event + Scenario: User can skip a scheduled event + Given you open the enrollment page by typing #/enrollment?enrollmentId=gL8BooqKhdX&orgUnitId=DiszpKrYNg8&programId=ur1Edk5Oe2n&teiId=RABlFsj5Omi + And there is an Overdue event in the TB visit stage + When you click the Skip event overflow button on the Overdue event + Then the event should be skipped + + Scenario: User can unskip a scheduled event + Given you open the enrollment page by typing #/enrollment?enrollmentId=gL8BooqKhdX&orgUnitId=DiszpKrYNg8&programId=ur1Edk5Oe2n&teiId=RABlFsj5Omi + And there is an Skipped event in the TB visit stage + When you click the Unskip event overflow button on the Skipped event + Then there is an Overdue event in the TB visit stage + + @with-restore-deleted-event + Scenario: User can delete an event + Given you open the enrollment page by typing #/enrollment?enrollmentId=ikYMpSKXik1&orgUnitId=DiszpKrYNg8&programId=ur1Edk5Oe2n&teiId=Trc1H9T5C6f + And there is an Active event in the TB visit stage + When you click the Delete event overflow button on the Active event + And you confirm you want to delete the event + Then the TB visit stage should be empty + @user:trackerAutoTestRestricted Scenario: Program stage is hidden if no data read access And you open the enrollment page by typing #enrollment?enrollmentId=iNEq9d22Nyp&orgUnitId=DiszpKrYNg8&programId=WSGAb5XwJ3Y&teiId=k4ODejBytgv Then the Care at birth program stage should be hidden + @user:trackerAutoTestRestricted + Scenario: Create new event button is disabled if no data write access + Given you open the enrollment page by typing #enrollment?enrollmentId=WKPoiZxZxNG&orgUnitId=DiszpKrYNg8&programId=WSGAb5XwJ3Y&teiId=PgmUFEQYZdt + Then you should see the disabled button New Previous deliveries event diff --git a/cypress/e2e/EnrollmentPage/StagesAndEventsWidget/StagesAndEventsWidget.js b/cypress/e2e/EnrollmentPage/StagesAndEventsWidget/StagesAndEventsWidget.js index 510bbebae5..d4771a8876 100644 --- a/cypress/e2e/EnrollmentPage/StagesAndEventsWidget/StagesAndEventsWidget.js +++ b/cypress/e2e/EnrollmentPage/StagesAndEventsWidget/StagesAndEventsWidget.js @@ -1,7 +1,38 @@ -import { Given, When, Then, defineStep as And } from '@badeball/cypress-cucumber-preprocessor'; +import { Given, When, Then, defineStep as And, After } from '@badeball/cypress-cucumber-preprocessor'; import { getCurrentYear } from '../../../support/date'; import '../sharedSteps'; +After({ tags: '@with-restore-deleted-event' }, () => { + cy.visit('#/enrollment?enrollmentId=ikYMpSKXik1&orgUnitId=DiszpKrYNg8&programId=ur1Edk5Oe2n&teiId=Trc1H9T5C6f'); + + cy.get('[data-test="stages-and-events-widget"]') + .find('[data-test="widget-contents"]') + .contains('[data-test="stage-content"]', 'TB visit') + .find('[data-test="create-new-button"]') + .click(); + + cy.get('[data-test="capture-ui-input"]') + .first() + .type('2023-01-26') + .blur(); + + cy.get('[data-test="virtualized-select"]') + .eq(0) + .click() + .contains('P+') + .click(); + + cy.get('[data-test="virtualized-select"]') + .eq(1) + .click() + .contains('New') + .click(); + + cy.get('[data-test="dhis2-uicore-button"]') + .contains('Save without completing') + .click(); +}); + Then('the program stages should be displayed', () => { cy.get('[data-test="stages-and-events-widget"]') .within(() => { @@ -49,7 +80,7 @@ When('you click show more button in stages&event list', () => { }); }); -Then('more events should be displayed', () => { +Then('there should be 10 rows in the table', () => { cy.get('[data-test="stages-and-events-widget"]') .find('[data-test="widget-contents"]') .find('[data-test="stage-content"]') @@ -61,34 +92,6 @@ Then('more events should be displayed', () => { }); }); -Then('reset button should be displayed', () => { - cy.get('[data-test="stages-and-events-widget"]').within(() => { - cy.get('[data-test="view-all-button"]').should('exist'); - cy.get('[data-test="show-more-button"]').should('exist'); - cy.get('[data-test="reset-button"]').should('exist'); - cy.get('[data-test="create-new-button"]').should('exist'); - }); -}); - -And('you click reset button', () => { - cy.get('[data-test="stages-and-events-widget"]').within(() => { - cy.get('[data-test="reset-button"]').click(); - cy.wait(100); - }); -}); - -Then('there should be 5 rows in the table', () => { - cy.get('[data-test="stages-and-events-widget"]') - .find('[data-test="widget-contents"]') - .find('[data-test="stage-content"]') - .eq(2) - .within(() => { - cy.get('[data-test="dhis2-uicore-datatable"]').should('exist'); - cy.get('[data-test="dhis2-uicore-tablebody"]') - .find('[data-test="dhis2-uicore-datatablerow"]').should('have.length', 5); - }); -}); - Then('the default list should be displayed', () => { const rows = [ '07-13|Bumbeh MCHP', @@ -190,3 +193,58 @@ Then('the Care at birth program stage should be hidden', () => { cy.contains('[data-test="stages-and-events-widget"]', 'Postpartum care visit').should('exist'); cy.contains('[data-test="stages-and-events-widget"]', 'Care at birth').should('not.exist'); }); + +Given(/there is an (.*) event in the TB visit stage$/, (eventStatus) => { + cy.get('[data-test="stages-and-events-widget"]') + .find('[data-test="widget-contents"]') + .contains('[data-test="stage-content"]', 'TB visit') + .within(() => { + cy.get('[data-test="dhis2-uicore-datatablerow"]') + .contains(eventStatus); + }); +}); + +When(/you click the (.*) event overflow button on the (.*) event$/, (buttonName, eventStatus) => { + cy.get('[data-test="stages-and-events-widget"]') + .find('[data-test="widget-contents"]') + .contains('[data-test="stage-content"]', 'TB visit') + .find('[data-test="dhis2-uicore-tablebody"]') + .contains('tr', eventStatus) + .find('[data-test="overflow-button"]') + .click({ force: true }); + + cy.get('[data-test="overflow-menu"]') + .contains(buttonName) + .click(); +}); + +Then('the event should be skipped', () => { + cy.get('[data-test="stages-and-events-widget"]') + .find('[data-test="widget-contents"]') + .contains('[data-test="stage-content"]', 'TB visit') + .find('[data-test="dhis2-uicore-datatablerow"]') + .contains('Skipped'); +}); + +Then('the TB visit stage should be empty', () => { + cy.get('[data-test="stages-and-events-widget"]') + .find('[data-test="widget-contents"]') + .contains('[data-test="stage-content"]', 'TB visit') + .find('[data-test="dhis2-uicore-datatablerow"]') + .should('not.exist'); +}); + +When('you confirm you want to delete the event', () => { + cy.intercept('POST', '**/tracker?async=false&importStrategy=DELETE') + .as('deleteEvent'); + + cy.get('[data-test="dhis2-uicore-modal"]').within(() => { + cy.contains('button', 'Yes, delete event') + .click(); + }); + + cy.wait('@deleteEvent') + .its('response.statusCode') + .should('eq', 200); +}); + diff --git a/i18n/ar_IQ.po b/i18n/ar_IQ.po index 01af8b5790..cbeeaaf0e3 100644 --- a/i18n/ar_IQ.po +++ b/i18n/ar_IQ.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: i18next-conv\n" -"POT-Creation-Date: 2024-08-08T11:49:13.423Z\n" +"POT-Creation-Date: 2024-08-10T10:42:21.141Z\n" "PO-Revision-Date: 2019-06-27 07:31+0000\n" "Last-Translator: KRG HIS , 2024\n" "Language-Team: Arabic (Iraq) (https://app.transifex.com/hisp-uio/teams/100509/ar_IQ/)\n" @@ -491,18 +491,6 @@ msgstr "يحتوي على نص" msgid "Yes" msgstr "نعم" -msgid "mm/dd/yyyy" -msgstr "شهر / يوم / سنة" - -msgid "Years" -msgstr "السنوات" - -msgid "Months" -msgstr "الأشهر" - -msgid "Days" -msgstr "‏‏الأيام" - msgid "Uploading file" msgstr "تحميل ملف" @@ -1323,6 +1311,9 @@ msgstr "" msgid "Event completed" msgstr "" +msgid "The event cannot be edited after it has been completed" +msgstr "" + msgid "Back to all stages and events" msgstr "" @@ -1482,22 +1473,22 @@ msgstr "" msgid "Please select a valid event" msgstr "" -msgid "New {{ eventName }} event" +msgid "You do not have access to create events in this stage" msgstr "" -msgid "To open this event, please wait until saving is complete" +msgid "This stage can only have one event" msgstr "" -msgid "Show {{ rest }} more" +msgid "New {{ eventName }} event" msgstr "" -msgid "Reset list" +msgid "To open this event, please wait until saving is complete" msgstr "" -msgid "Go to full {{ eventName }}" +msgid "Show {{ rest }} more" msgstr "" -msgid "This stage can only have one event" +msgid "Go to full {{ eventName }}" msgstr "" msgid "Events could not be retrieved. Please try again later." diff --git a/i18n/ckb.po b/i18n/ckb.po index 9ca0dee15f..1a33d92772 100644 --- a/i18n/ckb.po +++ b/i18n/ckb.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: i18next-conv\n" -"POT-Creation-Date: 2024-06-28T11:23:02.970Z\n" +"POT-Creation-Date: 2024-08-10T10:42:21.141Z\n" "PO-Revision-Date: 2019-06-27 07:31+0000\n" "Last-Translator: Philip Larsen Donnelly, 2024\n" "Language-Team: Central Kurdish (https://app.transifex.com/hisp-uio/teams/100509/ckb/)\n" @@ -45,6 +45,9 @@ msgstr "" "تکایە پەیجەکەت ریفرێش بکەوە بۆ ئەوەی ئەم وەشانە بکەیتەوە بەڵام ئاگاداربکە " "ئەم کردارە وەشانەکانیتر دادەخات" +msgid "More" +msgstr "" + msgid "View {{programName}} dashboard" msgstr "" @@ -375,17 +378,11 @@ msgstr "کەسی تۆمارکراو" msgid "validation failed" msgstr "سەلماندنەکە سەرکەوتوونەبوو" -msgid "Errors" -msgstr "هەڵەکان" - -msgid "Feedback" -msgstr "ڕاووبۆچون" - -msgid "Indicators" -msgstr "نیشاندەر" +msgid "No feedback for this event yet" +msgstr "" -msgid "Warnings" -msgstr "ئاگادارکردنەوەکان" +msgid "No indicator output for this event yet" +msgstr "" msgid "Generate new event" msgstr "" @@ -499,18 +496,6 @@ msgstr "نووسینی تێدایە" msgid "Yes" msgstr "بەڵێ" -msgid "mm/dd/yyyy" -msgstr "مانگ/رۆژ/ساڵ" - -msgid "Years" -msgstr "ساڵەکان" - -msgid "Months" -msgstr "مانگەکان" - -msgid "Days" -msgstr "رۆژەکان" - msgid "Uploading file" msgstr "سەرخستنی فایل" @@ -577,6 +562,9 @@ msgstr "ستونەکانی دەتەوێ دەربکەوێ لە خشتەکە" msgid "Column" msgstr "ستوون" +msgid "Visible" +msgstr "" + msgid "Update" msgstr "نوێ کردنەوە" @@ -784,12 +772,6 @@ msgstr "" msgid "Choose an organisation unit to start reporting" msgstr "" -msgid "No feedback for this event yet" -msgstr "" - -msgid "No indicator output for this event yet" -msgstr "" - msgid "Program stage is invalid" msgstr "" @@ -820,6 +802,11 @@ msgstr "" msgid "Registered events" msgstr "حالەتە تۆمارکراوەکان" +msgid "" +"The category option is not valid for the selected organisation unit. Please " +"select a valid combination." +msgstr "" + msgid "Please select {{category}}." msgstr "" @@ -935,6 +922,18 @@ msgstr "" "بەجێهێشتنی ئەم پەڕەیە هەڵبژاردنەکانت هەڵدەسپێری کە بۆ پەیوەندیە نوێیەکان " "کردووتە" +msgid "Errors" +msgstr "هەڵەکان" + +msgid "Feedback" +msgstr "ڕاووبۆچون" + +msgid "Indicators" +msgstr "نیشاندەر" + +msgid "Warnings" +msgstr "ئاگادارکردنەوەکان" + msgid "Show all events" msgstr "هەموو حاڵەتەکان پیشان بدە" @@ -976,6 +975,12 @@ msgstr "" msgid "The enrollment event data could not be found" msgstr "" +msgid "Loading" +msgstr "" + +msgid "An error occurred while loading the form" +msgstr "" + msgid "Possible duplicates found" msgstr "ڕەنگە دووبارەبوونەوە دۆزرابێتەوە" @@ -1255,9 +1260,6 @@ msgstr "" msgid "Owned by {{ownerOrgUnit}}" msgstr "" -msgid "Last updated {{date}}" -msgstr "" - msgid "Cancelled" msgstr "" @@ -1312,6 +1314,9 @@ msgstr "" msgid "Event completed" msgstr "" +msgid "The event cannot be edited after it has been completed" +msgstr "" + msgid "Back to all stages and events" msgstr "" @@ -1463,22 +1468,22 @@ msgstr "" msgid "Please select a valid event" msgstr "" -msgid "New {{ eventName }} event" +msgid "You do not have access to create events in this stage" msgstr "" -msgid "To open this event, please wait until saving is complete" +msgid "This stage can only have one event" msgstr "" -msgid "Show {{ rest }} more" +msgid "New {{ eventName }} event" msgstr "" -msgid "Reset list" +msgid "To open this event, please wait until saving is complete" msgstr "" -msgid "Go to full {{ eventName }}" +msgid "Show {{ rest }} more" msgstr "" -msgid "This stage can only have one event" +msgid "Go to full {{ eventName }}" msgstr "" msgid "Events could not be retrieved. Please try again later." @@ -1498,6 +1503,15 @@ msgstr "" msgid "Stages and Events" msgstr "" +msgid "An error occurred while loading the widget." +msgstr "" + +msgid "View linked event" +msgstr "" + +msgid "Scheduled" +msgstr "" + msgid "Changelog" msgstr "" @@ -1663,9 +1677,6 @@ msgstr "هەڵەیک ڕوویدا، تکایە سەیری لۆگ فایل بکە msgid "Scheduled{{ escape }} due {{ time }}" msgstr "" -msgid "Scheduled" -msgstr "" - msgid "Overdue{{ escape }} due {{ time }}" msgstr "" diff --git a/i18n/cs.po b/i18n/cs.po index 9248d56299..62ef1badcc 100644 --- a/i18n/cs.po +++ b/i18n/cs.po @@ -1354,6 +1354,9 @@ msgstr "Naplánované datum nelze změnit pro události {{ eventStatus }}" msgid "Event completed" msgstr "Událost dokončena" +msgid "The event cannot be edited after it has been completed" +msgstr "" + msgid "Back to all stages and events" msgstr "Zpět ke všem fázím a událostem" @@ -1538,9 +1541,6 @@ msgstr "Chcete-li otevřít tuto událost, počkejte na dokončení ukládání" msgid "Show {{ rest }} more" msgstr "Zobrazit {{ rest }} více" -msgid "Reset list" -msgstr "Resetovat seznam" - msgid "Go to full {{ eventName }}" msgstr "Přejít na celou {{ eventName }}" diff --git a/i18n/en.pot b/i18n/en.pot index 20cf9855af..5d63ac1048 100644 --- a/i18n/en.pot +++ b/i18n/en.pot @@ -1335,6 +1335,9 @@ msgstr "Scheduled date cannot be changed for {{ eventStatus }} events" msgid "Event completed" msgstr "Event completed" +msgid "The event cannot be edited after it has been completed" +msgstr "The event cannot be edited after it has been completed" + msgid "Back to all stages and events" msgstr "Back to all stages and events" @@ -1499,15 +1502,31 @@ msgstr "This stage can only have one event" msgid "New {{ eventName }} event" msgstr "New {{ eventName }} event" +msgid "An error occurred while deleting the event" +msgstr "An error occurred while deleting the event" + +msgid "" +"Deleting an event is permanent and cannot be undone. Are you sure you want " +"to delete this event?" +msgstr "" +"Deleting an event is permanent and cannot be undone. Are you sure you want " +"to delete this event?" + +msgid "An error occurred when updating event status" +msgstr "An error occurred when updating event status" + +msgid "Unskip" +msgstr "Unskip" + +msgid "Skip" +msgstr "Skip" + msgid "To open this event, please wait until saving is complete" msgstr "To open this event, please wait until saving is complete" msgid "Show {{ rest }} more" msgstr "Show {{ rest }} more" -msgid "Reset list" -msgstr "Reset list" - msgid "Go to full {{ eventName }}" msgstr "Go to full {{ eventName }}" diff --git a/i18n/es.po b/i18n/es.po index c876e8fa4f..1b377c622d 100644 --- a/i18n/es.po +++ b/i18n/es.po @@ -1393,6 +1393,9 @@ msgstr "" msgid "Event completed" msgstr "Evento completado" +msgid "The event cannot be edited after it has been completed" +msgstr "" + msgid "Back to all stages and events" msgstr "Volver a todas las etapas y eventos" @@ -1583,9 +1586,6 @@ msgstr "Para abrir este evento, espere hasta que se complete el guardado." msgid "Show {{ rest }} more" msgstr "Mostrar más {{ rest }} " -msgid "Reset list" -msgstr "Resetear lista" - msgid "Go to full {{ eventName }}" msgstr "Ir a {{ eventName }} completado" diff --git a/i18n/es_419.po b/i18n/es_419.po index c4288e743b..8bc4508cd5 100644 --- a/i18n/es_419.po +++ b/i18n/es_419.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: i18next-conv\n" -"POT-Creation-Date: 2024-06-28T11:23:02.970Z\n" +"POT-Creation-Date: 2024-08-10T10:42:21.141Z\n" "PO-Revision-Date: 2019-06-27 07:31+0000\n" "Last-Translator: Jaime Bosque , 2024\n" "Language-Team: Spanish (Latin America) (https://app.transifex.com/hisp-uio/teams/100509/es_419/)\n" @@ -46,6 +46,9 @@ msgstr "" " a utilizar esta versión, pero tenga en cuenta que esto cerrará otras " "versiones." +msgid "More" +msgstr "" + msgid "View {{programName}} dashboard" msgstr "Ver panel de {{programName}}" @@ -384,17 +387,11 @@ msgstr "persona registrada" msgid "validation failed" msgstr "La validación ha fallado" -msgid "Errors" -msgstr "Errores" - -msgid "Feedback" -msgstr "Retroalimentación" - -msgid "Indicators" -msgstr "Indicadores" +msgid "No feedback for this event yet" +msgstr "" -msgid "Warnings" -msgstr "Advertencias" +msgid "No indicator output for this event yet" +msgstr "" msgid "Generate new event" msgstr "Generar nuevo evento" @@ -509,18 +506,6 @@ msgstr "Contiene texto" msgid "Yes" msgstr "Sí" -msgid "mm/dd/yyyy" -msgstr "mm/dd/aaaa" - -msgid "Years" -msgstr "Años" - -msgid "Months" -msgstr "Meses" - -msgid "Days" -msgstr "Días" - msgid "Uploading file" msgstr "Subiendo archivo" @@ -587,6 +572,9 @@ msgstr "Columns to show in table" msgid "Column" msgstr "Columna" +msgid "Visible" +msgstr "" + msgid "Update" msgstr "Actualizar" @@ -816,12 +804,6 @@ msgstr "Hubo un error al cargar la página" msgid "Choose an organisation unit to start reporting" msgstr "" -msgid "No feedback for this event yet" -msgstr "" - -msgid "No indicator output for this event yet" -msgstr "" - msgid "Program stage is invalid" msgstr "La etapa del programa no es válida" @@ -852,6 +834,11 @@ msgstr "Etapa" msgid "Registered events" msgstr "Eventos registrados" +msgid "" +"The category option is not valid for the selected organisation unit. Please " +"select a valid combination." +msgstr "" + msgid "Please select {{category}}." msgstr "Seleccione {{category}}." @@ -969,6 +956,18 @@ msgstr "" "Al salir de esta página, se descartarán las selecciones que haya realizado " "para una nueva relación." +msgid "Errors" +msgstr "Errores" + +msgid "Feedback" +msgstr "Retroalimentación" + +msgid "Indicators" +msgstr "Indicadores" + +msgid "Warnings" +msgstr "Advertencias" + msgid "Show all events" msgstr "Mostrar todos los eventos" @@ -1012,6 +1011,12 @@ msgstr "" msgid "The enrollment event data could not be found" msgstr "No se pudieron encontrar los datos del evento de inscripción" +msgid "Loading" +msgstr "" + +msgid "An error occurred while loading the form" +msgstr "" + msgid "Possible duplicates found" msgstr "Posibles duplicados encontrados." @@ -1294,9 +1299,6 @@ msgstr "" msgid "Owned by {{ownerOrgUnit}}" msgstr "" -msgid "Last updated {{date}}" -msgstr "" - msgid "Cancelled" msgstr "Cancelar" @@ -1351,6 +1353,9 @@ msgstr "" msgid "Event completed" msgstr "Evento completado" +msgid "The event cannot be edited after it has been completed" +msgstr "" + msgid "Back to all stages and events" msgstr "Volver a todas las etapas y eventos" @@ -1504,6 +1509,12 @@ msgstr "Fecha de reporte" msgid "Please select a valid event" msgstr "" +msgid "You do not have access to create events in this stage" +msgstr "" + +msgid "This stage can only have one event" +msgstr "" + msgid "New {{ eventName }} event" msgstr "Nuevo evento {{ eventName }}" @@ -1513,15 +1524,9 @@ msgstr "" msgid "Show {{ rest }} more" msgstr "" -msgid "Reset list" -msgstr "" - msgid "Go to full {{ eventName }}" msgstr "" -msgid "This stage can only have one event" -msgstr "" - msgid "Events could not be retrieved. Please try again later." msgstr "" @@ -1540,6 +1545,15 @@ msgstr "" msgid "Stages and Events" msgstr "" +msgid "An error occurred while loading the widget." +msgstr "" + +msgid "View linked event" +msgstr "" + +msgid "Scheduled" +msgstr "" + msgid "Changelog" msgstr "" @@ -1705,9 +1719,6 @@ msgstr " Ha ocurrido un error. Ver el registro para más detalles." msgid "Scheduled{{ escape }} due {{ time }}" msgstr "" -msgid "Scheduled" -msgstr "" - msgid "Overdue{{ escape }} due {{ time }}" msgstr "" diff --git a/i18n/fr.po b/i18n/fr.po index cb371ad974..894d0c288e 100644 --- a/i18n/fr.po +++ b/i18n/fr.po @@ -1368,6 +1368,9 @@ msgstr "" msgid "Event completed" msgstr "Événement terminé" +msgid "The event cannot be edited after it has been completed" +msgstr "" + msgid "Back to all stages and events" msgstr "Retour à tous les stades et événements" @@ -1551,9 +1554,6 @@ msgstr "" msgid "Show {{ rest }} more" msgstr "Afficher {{ rest }} plus" -msgid "Reset list" -msgstr "Réinitialiser la liste" - msgid "Go to full {{ eventName }}" msgstr "Aller à l'intégralité de {{ eventName }}" diff --git a/i18n/id.po b/i18n/id.po index 85a7841d2d..e251484c4c 100644 --- a/i18n/id.po +++ b/i18n/id.po @@ -1332,6 +1332,9 @@ msgstr "" msgid "Event completed" msgstr "Even selesai" +msgid "The event cannot be edited after it has been completed" +msgstr "" + msgid "Back to all stages and events" msgstr "" @@ -1496,9 +1499,6 @@ msgstr "" msgid "Show {{ rest }} more" msgstr "" -msgid "Reset list" -msgstr "Mengatur ulang daftar" - msgid "Go to full {{ eventName }}" msgstr "" diff --git a/i18n/km.po b/i18n/km.po index 488cdcbe42..04fa91cdc5 100644 --- a/i18n/km.po +++ b/i18n/km.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: i18next-conv\n" -"POT-Creation-Date: 2024-08-08T11:49:13.423Z\n" +"POT-Creation-Date: 2024-08-10T10:42:21.141Z\n" "PO-Revision-Date: 2019-06-27 07:31+0000\n" "Last-Translator: Viktor Varland , 2024\n" "Language-Team: Khmer (https://app.transifex.com/hisp-uio/teams/100509/km/)\n" @@ -478,18 +478,6 @@ msgstr "" msgid "Yes" msgstr "បាទ/ចាស" -msgid "mm/dd/yyyy" -msgstr "" - -msgid "Years" -msgstr "ឆ្នាំ" - -msgid "Months" -msgstr "ខែ" - -msgid "Days" -msgstr "ថ្ងៃ" - msgid "Uploading file" msgstr "" @@ -1305,6 +1293,9 @@ msgstr "" msgid "Event completed" msgstr "" +msgid "The event cannot be edited after it has been completed" +msgstr "" + msgid "Back to all stages and events" msgstr "" @@ -1454,22 +1445,22 @@ msgstr "ថ្ងៃខែឆ្នាំរាយការណ៏" msgid "Please select a valid event" msgstr "" -msgid "New {{ eventName }} event" +msgid "You do not have access to create events in this stage" msgstr "" -msgid "To open this event, please wait until saving is complete" +msgid "This stage can only have one event" msgstr "" -msgid "Show {{ rest }} more" +msgid "New {{ eventName }} event" msgstr "" -msgid "Reset list" +msgid "To open this event, please wait until saving is complete" msgstr "" -msgid "Go to full {{ eventName }}" +msgid "Show {{ rest }} more" msgstr "" -msgid "This stage can only have one event" +msgid "Go to full {{ eventName }}" msgstr "" msgid "Events could not be retrieved. Please try again later." diff --git a/i18n/lo.po b/i18n/lo.po index da0a57c457..b2da06a4c5 100644 --- a/i18n/lo.po +++ b/i18n/lo.po @@ -1335,6 +1335,9 @@ msgstr "ວັນທີທີ່ກຳນົດໄວ້ບໍ່ສາມາດ msgid "Event completed" msgstr "ກິດຈະກຳສຳເລັດແລ້ວ" +msgid "The event cannot be edited after it has been completed" +msgstr "" + msgid "Back to all stages and events" msgstr "ກັບໄປທຸກຂັ້ນຕອນ ແລະ ເຫດການ" @@ -1508,9 +1511,6 @@ msgstr "ເພື່ອເປີດເຫດການນີ້, ກະລຸນ msgid "Show {{ rest }} more" msgstr "ສະແດງ {{ rest }} ເພີ່ມເຕີມ" -msgid "Reset list" -msgstr "ເຮັດລາຍຊື່ຄືນໃໝ່" - msgid "Go to full {{ eventName }}" msgstr "ໄປທີ່ {{ eventName }} ແບບເຕັມ" @@ -1701,13 +1701,13 @@ msgid "Download with current filters" msgstr "ດາວໂຫຼດດ້ວຍຕົວກອງປັດຈຸບັນ" msgid "An error has occured. See log for details" -msgstr "" +msgstr "ເກີດຄວາມຜິດພາດຂຶ້ນ. ເບິ່ງລາຍລະອຽດ" msgid "Scheduled{{ escape }} due {{ time }}" -msgstr "" +msgstr "ກຳນົດເວລາ {{ escape }} ຈົນເຖິງ {{ time }}" msgid "Overdue{{ escape }} due {{ time }}" -msgstr "" +msgstr "ເກີນກຳນົດ {{ escape }} ຈົນເຖິງ {{ time }}" msgid "Overdue" msgstr "ກາຍເວລາທີ່ກໍານົດ" @@ -1719,76 +1719,76 @@ msgid "Visited" msgstr "ເຂົ້າຊົມ" msgid "{{trackedEntityName}} in program{{escape}} {{programName}}" -msgstr "" +msgstr "{{trackedEntityName}} ໃນໂປຣແກຣມ {{escape}} {{programName}}" msgid "Program not found" -msgstr "" +msgstr "ບໍ່ພົບໂປຣແກຣມ" msgid "Program is not a tracker program" -msgstr "" +msgstr "ໂປແກຣມນີ້ບໍ່ແມ່ນໂປແກຣມຕິດຕາມ" msgid "Error saving event" -msgstr "" +msgstr "ເກີດຄວາມຜິດພາດໃນການບັນທຶກເຫດການ" msgid "Could not save event" -msgstr "" +msgstr "ບໍ່ສາມາດບັນທຶກເຫດການໄດ້" msgid "Could not delete event" -msgstr "" +msgstr "ບໍ່ສາມາດລົບເຫດການໄດ້" msgid "Could not save working list" -msgstr "" +msgstr "ບໍ່ສາມາດບັນທຶກລາຍຊື່ການເຮັດວຽກໄດ້" msgid "Could not add working list" -msgstr "" +msgstr "ບໍ່ສາມາດເພີ່ມລາຍຊື່ການເຮັດວຽກໄດ້" msgid "Could not delete working list" -msgstr "" +msgstr "ບໍ່ສາມາດລົບລາຍຊື່ການເຮັດວຽກໄດ້" msgid "Organisation unit search failed." -msgstr "" +msgstr "ເກີດຄວາມຜິດພາດໃນການຄົ້ນຫາຫົວໜ່ວຍການຈັດຕັ້ງ" msgid "Error saving tracked entity instance" -msgstr "" +msgstr "ເກີດຄວາມຜິດພາດໃນການບັນທຶກການຕິດຕາມລາຍບຸກຄົນ" msgid "Error saving enrollment" -msgstr "" +msgstr "ເກີດຄວາມຜິດພາດໃນການບັນທຶກການລົງທະບຽນ" msgid "Error saving the enrollment event" -msgstr "" +msgstr "ເກີດຄວາມຜິດພາດໃນການບັນທຶກການລົງທະບຽນເຫດການ" msgid "Error deleting the enrollment event" -msgstr "" +msgstr "ເກີດຄວາມຜິດພາດໃນການລົບການລົງທະບຽນເຫດການ" msgid "Error editing the event, the changes made were not saved" -msgstr "" +msgstr "ເກີດຄວາມຜິດພາດໃນການແກ້ໄຂເຫດການ, ການປ່ຽນແປງທີ່ເຮັດບໍ່ໄດ້ມີການບັນທຶກ" msgid "Error updating the Assignee" -msgstr "" +msgstr "ເກີດຄວາມຜິດພາດໃນການອັບເດດຜູ້ຮັບຜິດຊອບ" msgid "Set coordinate" msgstr "ຕັ້ງຄ່າເສັ້ນສະແດງ" msgid "Time" -msgstr "" +msgstr "ເວລາ" msgid "From date" msgstr "From date" msgid "From time" -msgstr "" +msgstr "ຈາກເວລາ" msgid "To date" msgstr "ເຖີງວັນທີ່" msgid "To time" -msgstr "" +msgstr "ເຖິງເວລາ" msgid "Page {{currentPage}}" -msgstr "" +msgstr "ໜ້າ {{currentPage}}" msgid "Area on map saved" -msgstr "" +msgstr "ບັນທຶກພື້ນທີ່ໃນແຜນທີ່ແລ້ວ" msgid "Compatibility mode" -msgstr "" +msgstr "ຮູບແບບຄວາມເຂົ້າກັນໄດ້" diff --git a/i18n/my.po b/i18n/my.po index c244ccbdf3..5bc6407800 100644 --- a/i18n/my.po +++ b/i18n/my.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: i18next-conv\n" -"POT-Creation-Date: 2024-08-08T11:49:13.423Z\n" +"POT-Creation-Date: 2024-08-10T10:42:21.141Z\n" "PO-Revision-Date: 2019-06-27 07:31+0000\n" "Last-Translator: Viktor Varland , 2024\n" "Language-Team: Burmese (https://app.transifex.com/hisp-uio/teams/100509/my/)\n" @@ -479,18 +479,6 @@ msgstr "" msgid "Yes" msgstr "Yes" -msgid "mm/dd/yyyy" -msgstr "" - -msgid "Years" -msgstr "နှစ်များ" - -msgid "Months" -msgstr "လများ" - -msgid "Days" -msgstr "" - msgid "Uploading file" msgstr "" @@ -1306,6 +1294,9 @@ msgstr "" msgid "Event completed" msgstr "" +msgid "The event cannot be edited after it has been completed" +msgstr "" + msgid "Back to all stages and events" msgstr "" @@ -1455,22 +1446,22 @@ msgstr "" msgid "Please select a valid event" msgstr "" -msgid "New {{ eventName }} event" +msgid "You do not have access to create events in this stage" msgstr "" -msgid "To open this event, please wait until saving is complete" +msgid "This stage can only have one event" msgstr "" -msgid "Show {{ rest }} more" +msgid "New {{ eventName }} event" msgstr "" -msgid "Reset list" +msgid "To open this event, please wait until saving is complete" msgstr "" -msgid "Go to full {{ eventName }}" +msgid "Show {{ rest }} more" msgstr "" -msgid "This stage can only have one event" +msgid "Go to full {{ eventName }}" msgstr "" msgid "Events could not be retrieved. Please try again later." diff --git a/i18n/nb.po b/i18n/nb.po index 9577fef16d..12080b29b7 100644 --- a/i18n/nb.po +++ b/i18n/nb.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: i18next-conv\n" -"POT-Creation-Date: 2024-08-08T11:49:13.423Z\n" +"POT-Creation-Date: 2024-08-10T10:42:21.141Z\n" "PO-Revision-Date: 2019-06-27 07:31+0000\n" "Last-Translator: Caroline Hesthagen Holen , 2024\n" "Language-Team: Norwegian Bokmål (https://app.transifex.com/hisp-uio/teams/100509/nb/)\n" @@ -496,18 +496,6 @@ msgstr "Inneholder tekst" msgid "Yes" msgstr "Ja" -msgid "mm/dd/yyyy" -msgstr "mm/dd/yyyy" - -msgid "Years" -msgstr "År" - -msgid "Months" -msgstr "Måneder" - -msgid "Days" -msgstr "Dager" - msgid "Uploading file" msgstr "Laster opp fil" @@ -1362,6 +1350,9 @@ msgstr "Planlagt dato kan ikke endres for {{ eventStatus }} hendelser" msgid "Event completed" msgstr "Hendelse fullført" +msgid "The event cannot be edited after it has been completed" +msgstr "" + msgid "Back to all stages and events" msgstr "Tilbake til alle faser og hendelser" @@ -1522,6 +1513,12 @@ msgstr "Rapporteringsdato" msgid "Please select a valid event" msgstr "" +msgid "You do not have access to create events in this stage" +msgstr "" + +msgid "This stage can only have one event" +msgstr "Denne fasen kan bare ha en hendelse" + msgid "New {{ eventName }} event" msgstr "Ny {{ eventName }} hendelse" @@ -1531,15 +1528,9 @@ msgstr "For å åpne denne hendelsen, vennligst vent til lagringen er fullført" msgid "Show {{ rest }} more" msgstr "Vis {{ rest }} flere" -msgid "Reset list" -msgstr "Nullstill liste" - msgid "Go to full {{ eventName }}" msgstr "Gå til hele {{ eventName }}" -msgid "This stage can only have one event" -msgstr "Denne fasen kan bare ha en hendelse" - msgid "Events could not be retrieved. Please try again later." msgstr "Hendelser kunne ikke hentes. Prøv igjen senere." diff --git a/i18n/nl.po b/i18n/nl.po index 1af9d52450..05303720b5 100644 --- a/i18n/nl.po +++ b/i18n/nl.po @@ -1372,6 +1372,9 @@ msgstr "" msgid "Event completed" msgstr "Evenement voltooid" +msgid "The event cannot be edited after it has been completed" +msgstr "" + msgid "Back to all stages and events" msgstr "Terug naar alle stadium en evenementen" @@ -1551,9 +1554,6 @@ msgstr "Wacht tot het opslaan is voltooid om dit evenement te openen" msgid "Show {{ rest }} more" msgstr "Toon {{ rest }} meer" -msgid "Reset list" -msgstr "Lijst resetten" - msgid "Go to full {{ eventName }}" msgstr "Ga naar volledige {{ eventName }}" diff --git a/i18n/prs.po b/i18n/prs.po index 14e21b32d3..e8fcb7ddf2 100644 --- a/i18n/prs.po +++ b/i18n/prs.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: i18next-conv\n" -"POT-Creation-Date: 2024-08-08T11:49:13.423Z\n" +"POT-Creation-Date: 2024-08-10T10:42:21.141Z\n" "PO-Revision-Date: 2019-06-27 07:31+0000\n" "Last-Translator: Philip Larsen Donnelly, 2024\n" "Language-Team: Persian (Afghanistan) (https://app.transifex.com/hisp-uio/teams/100509/fa_AF/)\n" @@ -477,18 +477,6 @@ msgstr "" msgid "Yes" msgstr "بلی" -msgid "mm/dd/yyyy" -msgstr "" - -msgid "Years" -msgstr "سالانه" - -msgid "Months" -msgstr "ماه ها" - -msgid "Days" -msgstr "روزها" - msgid "Uploading file" msgstr "" @@ -1305,6 +1293,9 @@ msgstr "" msgid "Event completed" msgstr "" +msgid "The event cannot be edited after it has been completed" +msgstr "" + msgid "Back to all stages and events" msgstr "" @@ -1456,22 +1447,22 @@ msgstr "تاریخ گزارش" msgid "Please select a valid event" msgstr "" -msgid "New {{ eventName }} event" +msgid "You do not have access to create events in this stage" msgstr "" -msgid "To open this event, please wait until saving is complete" +msgid "This stage can only have one event" msgstr "" -msgid "Show {{ rest }} more" +msgid "New {{ eventName }} event" msgstr "" -msgid "Reset list" +msgid "To open this event, please wait until saving is complete" msgstr "" -msgid "Go to full {{ eventName }}" +msgid "Show {{ rest }} more" msgstr "" -msgid "This stage can only have one event" +msgid "Go to full {{ eventName }}" msgstr "" msgid "Events could not be retrieved. Please try again later." diff --git a/i18n/ps.po b/i18n/ps.po index 419cc4b400..ada1358d93 100644 --- a/i18n/ps.po +++ b/i18n/ps.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: i18next-conv\n" -"POT-Creation-Date: 2024-08-08T11:49:13.423Z\n" +"POT-Creation-Date: 2024-08-10T10:42:21.141Z\n" "PO-Revision-Date: 2019-06-27 07:31+0000\n" "Last-Translator: Viktor Varland , 2024\n" "Language-Team: Pashto (https://app.transifex.com/hisp-uio/teams/100509/ps/)\n" @@ -478,18 +478,6 @@ msgstr "" msgid "Yes" msgstr "هو [ درست ]" -msgid "mm/dd/yyyy" -msgstr "" - -msgid "Years" -msgstr "کلونه" - -msgid "Months" -msgstr "میاشت" - -msgid "Days" -msgstr "ورځې" - msgid "Uploading file" msgstr "" @@ -1306,6 +1294,9 @@ msgstr "" msgid "Event completed" msgstr "" +msgid "The event cannot be edited after it has been completed" +msgstr "" + msgid "Back to all stages and events" msgstr "" @@ -1457,22 +1448,22 @@ msgstr "د راپور نېټه" msgid "Please select a valid event" msgstr "" -msgid "New {{ eventName }} event" +msgid "You do not have access to create events in this stage" msgstr "" -msgid "To open this event, please wait until saving is complete" +msgid "This stage can only have one event" msgstr "" -msgid "Show {{ rest }} more" +msgid "New {{ eventName }} event" msgstr "" -msgid "Reset list" +msgid "To open this event, please wait until saving is complete" msgstr "" -msgid "Go to full {{ eventName }}" +msgid "Show {{ rest }} more" msgstr "" -msgid "This stage can only have one event" +msgid "Go to full {{ eventName }}" msgstr "" msgid "Events could not be retrieved. Please try again later." diff --git a/i18n/pt.po b/i18n/pt.po index 81fb7ab3b9..c7c2353c06 100644 --- a/i18n/pt.po +++ b/i18n/pt.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: i18next-conv\n" -"POT-Creation-Date: 2024-08-08T11:49:13.423Z\n" +"POT-Creation-Date: 2024-08-10T10:42:21.141Z\n" "PO-Revision-Date: 2019-06-27 07:31+0000\n" "Last-Translator: Viktor Varland , 2024\n" "Language-Team: Portuguese (https://app.transifex.com/hisp-uio/teams/100509/pt/)\n" @@ -505,18 +505,6 @@ msgstr "Contém texto" msgid "Yes" msgstr "sim" -msgid "mm/dd/yyyy" -msgstr "mm/dd/aaaa" - -msgid "Years" -msgstr "Anos" - -msgid "Months" -msgstr "Meses" - -msgid "Days" -msgstr "Dias" - msgid "Uploading file" msgstr "Carregando arquivo" @@ -1380,6 +1368,9 @@ msgstr "A data agendada não pode ser alterada para eventos {{ eventStatus }}" msgid "Event completed" msgstr "Evento concluído" +msgid "The event cannot be edited after it has been completed" +msgstr "" + msgid "Back to all stages and events" msgstr "Voltar para todos os palcos e eventos" @@ -1543,6 +1534,12 @@ msgstr "Data do relatório" msgid "Please select a valid event" msgstr "" +msgid "You do not have access to create events in this stage" +msgstr "" + +msgid "This stage can only have one event" +msgstr "Esta etapa só pode ter um evento" + msgid "New {{ eventName }} event" msgstr "Novo evento de {{ eventName }}" @@ -1553,15 +1550,9 @@ msgstr "" msgid "Show {{ rest }} more" msgstr "Mostrar mais {{ rest }}" -msgid "Reset list" -msgstr "Reiniciar lista" - msgid "Go to full {{ eventName }}" msgstr "Vá para o {{ eventName }} completo" -msgid "This stage can only have one event" -msgstr "Esta etapa só pode ter um evento" - msgid "Events could not be retrieved. Please try again later." msgstr "" "Os eventos não puderam ser recuperados. Por favor, tente novamente mais " diff --git a/i18n/pt_BR.po b/i18n/pt_BR.po index 59779dc49f..b968595bfc 100644 --- a/i18n/pt_BR.po +++ b/i18n/pt_BR.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: i18next-conv\n" -"POT-Creation-Date: 2024-08-08T11:49:13.423Z\n" +"POT-Creation-Date: 2024-08-10T10:42:21.141Z\n" "PO-Revision-Date: 2019-06-27 07:31+0000\n" "Last-Translator: Viktor Varland , 2024\n" "Language-Team: Portuguese (Brazil) (https://app.transifex.com/hisp-uio/teams/100509/pt_BR/)\n" @@ -481,18 +481,6 @@ msgstr "" msgid "Yes" msgstr "Sim" -msgid "mm/dd/yyyy" -msgstr "" - -msgid "Years" -msgstr "Anos" - -msgid "Months" -msgstr "Meses" - -msgid "Days" -msgstr "Dias" - msgid "Uploading file" msgstr "" @@ -1310,6 +1298,9 @@ msgstr "" msgid "Event completed" msgstr "" +msgid "The event cannot be edited after it has been completed" +msgstr "" + msgid "Back to all stages and events" msgstr "" @@ -1463,22 +1454,22 @@ msgstr "Data do relatório" msgid "Please select a valid event" msgstr "" -msgid "New {{ eventName }} event" +msgid "You do not have access to create events in this stage" msgstr "" -msgid "To open this event, please wait until saving is complete" +msgid "This stage can only have one event" msgstr "" -msgid "Show {{ rest }} more" +msgid "New {{ eventName }} event" msgstr "" -msgid "Reset list" +msgid "To open this event, please wait until saving is complete" msgstr "" -msgid "Go to full {{ eventName }}" +msgid "Show {{ rest }} more" msgstr "" -msgid "This stage can only have one event" +msgid "Go to full {{ eventName }}" msgstr "" msgid "Events could not be retrieved. Please try again later." diff --git a/i18n/ro.po b/i18n/ro.po index 3b2ff70faf..310d3bc638 100644 --- a/i18n/ro.po +++ b/i18n/ro.po @@ -1315,6 +1315,9 @@ msgstr "" msgid "Event completed" msgstr "Eveniment finalizat" +msgid "The event cannot be edited after it has been completed" +msgstr "" + msgid "Back to all stages and events" msgstr "Înapoi la toate etapele și evenimentele" @@ -1484,9 +1487,6 @@ msgstr "" msgid "Show {{ rest }} more" msgstr "" -msgid "Reset list" -msgstr "Resetare listă" - msgid "Go to full {{ eventName }}" msgstr "Accesare {{ eventName }} complet" diff --git a/i18n/ru.po b/i18n/ru.po index 39bdd2d94b..cfd4926b7f 100644 --- a/i18n/ru.po +++ b/i18n/ru.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: i18next-conv\n" -"POT-Creation-Date: 2024-08-08T11:49:13.423Z\n" +"POT-Creation-Date: 2024-08-10T10:42:21.141Z\n" "PO-Revision-Date: 2019-06-27 07:31+0000\n" "Last-Translator: Viktor Varland , 2024\n" "Language-Team: Russian (https://app.transifex.com/hisp-uio/teams/100509/ru/)\n" @@ -503,18 +503,6 @@ msgstr "Содержит текст" msgid "Yes" msgstr "Да" -msgid "mm/dd/yyyy" -msgstr "мм/дд/гггг" - -msgid "Years" -msgstr "Годы" - -msgid "Months" -msgstr "Месяцы" - -msgid "Days" -msgstr "Дни" - msgid "Uploading file" msgstr "Загрузка файла" @@ -1397,6 +1385,9 @@ msgstr "" msgid "Event completed" msgstr "Событие завершено" +msgid "The event cannot be edited after it has been completed" +msgstr "" + msgid "Back to all stages and events" msgstr "Обратно ко всем этапам и событиям" @@ -1578,6 +1569,12 @@ msgstr "Дата отчета" msgid "Please select a valid event" msgstr "Выберите действительное событие" +msgid "You do not have access to create events in this stage" +msgstr "" + +msgid "This stage can only have one event" +msgstr "Данный этап позволяет создать только одно событие" + msgid "New {{ eventName }} event" msgstr "Новое событие {{ eventName }} " @@ -1587,15 +1584,9 @@ msgstr "Чтобы открыть это событие, дождитесь за msgid "Show {{ rest }} more" msgstr "Показать {{ rest }} подробнее" -msgid "Reset list" -msgstr "Сброс списка" - msgid "Go to full {{ eventName }}" msgstr "Перейти к полной версии события {{ eventName }}" -msgid "This stage can only have one event" -msgstr "Данный этап позволяет создать только одно событие" - msgid "Events could not be retrieved. Please try again later." msgstr "Не удалось загрузить события. Повторите попытку позже." diff --git a/i18n/sv.po b/i18n/sv.po index 9113f74852..62edd96eb5 100644 --- a/i18n/sv.po +++ b/i18n/sv.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: i18next-conv\n" -"POT-Creation-Date: 2024-06-28T11:23:02.970Z\n" +"POT-Creation-Date: 2024-08-10T10:42:21.141Z\n" "PO-Revision-Date: 2019-06-27 07:31+0000\n" "Last-Translator: Viktor Varland , 2024\n" "Language-Team: Swedish (https://app.transifex.com/hisp-uio/teams/100509/sv/)\n" @@ -39,6 +39,9 @@ msgid "" "again, but be aware that this will close other versions." msgstr "" +msgid "More" +msgstr "" + msgid "View {{programName}} dashboard" msgstr "" @@ -361,16 +364,10 @@ msgstr "" msgid "validation failed" msgstr "" -msgid "Errors" +msgid "No feedback for this event yet" msgstr "" -msgid "Feedback" -msgstr "Återkoppling" - -msgid "Indicators" -msgstr "indikatorer" - -msgid "Warnings" +msgid "No indicator output for this event yet" msgstr "" msgid "Generate new event" @@ -483,18 +480,6 @@ msgstr "" msgid "Yes" msgstr "Ja" -msgid "mm/dd/yyyy" -msgstr "" - -msgid "Years" -msgstr "År" - -msgid "Months" -msgstr "Månader" - -msgid "Days" -msgstr "Dagar" - msgid "Uploading file" msgstr "" @@ -561,6 +546,9 @@ msgstr "" msgid "Column" msgstr "" +msgid "Visible" +msgstr "" + msgid "Update" msgstr "Uppdatera" @@ -768,12 +756,6 @@ msgstr "" msgid "Choose an organisation unit to start reporting" msgstr "" -msgid "No feedback for this event yet" -msgstr "" - -msgid "No indicator output for this event yet" -msgstr "" - msgid "Program stage is invalid" msgstr "" @@ -804,6 +786,11 @@ msgstr "Skede" msgid "Registered events" msgstr "" +msgid "" +"The category option is not valid for the selected organisation unit. Please " +"select a valid combination." +msgstr "" + msgid "Please select {{category}}." msgstr "" @@ -917,6 +904,18 @@ msgid "" "relationship" msgstr "" +msgid "Errors" +msgstr "" + +msgid "Feedback" +msgstr "Återkoppling" + +msgid "Indicators" +msgstr "indikatorer" + +msgid "Warnings" +msgstr "" + msgid "Show all events" msgstr "" @@ -958,6 +957,12 @@ msgstr "" msgid "The enrollment event data could not be found" msgstr "" +msgid "Loading" +msgstr "" + +msgid "An error occurred while loading the form" +msgstr "" + msgid "Possible duplicates found" msgstr "" @@ -1237,9 +1242,6 @@ msgstr "" msgid "Owned by {{ownerOrgUnit}}" msgstr "" -msgid "Last updated {{date}}" -msgstr "" - msgid "Cancelled" msgstr "Avbruten" @@ -1294,6 +1296,9 @@ msgstr "" msgid "Event completed" msgstr "" +msgid "The event cannot be edited after it has been completed" +msgstr "" + msgid "Back to all stages and events" msgstr "" @@ -1445,22 +1450,22 @@ msgstr "Rapportdatum" msgid "Please select a valid event" msgstr "" -msgid "New {{ eventName }} event" +msgid "You do not have access to create events in this stage" msgstr "" -msgid "To open this event, please wait until saving is complete" +msgid "This stage can only have one event" msgstr "" -msgid "Show {{ rest }} more" +msgid "New {{ eventName }} event" msgstr "" -msgid "Reset list" +msgid "To open this event, please wait until saving is complete" msgstr "" -msgid "Go to full {{ eventName }}" +msgid "Show {{ rest }} more" msgstr "" -msgid "This stage can only have one event" +msgid "Go to full {{ eventName }}" msgstr "" msgid "Events could not be retrieved. Please try again later." @@ -1480,6 +1485,15 @@ msgstr "" msgid "Stages and Events" msgstr "" +msgid "An error occurred while loading the widget." +msgstr "" + +msgid "View linked event" +msgstr "" + +msgid "Scheduled" +msgstr "Schemalagd" + msgid "Changelog" msgstr "" @@ -1645,9 +1659,6 @@ msgstr "" msgid "Scheduled{{ escape }} due {{ time }}" msgstr "" -msgid "Scheduled" -msgstr "Schemalagd" - msgid "Overdue{{ escape }} due {{ time }}" msgstr "" diff --git a/i18n/tet.po b/i18n/tet.po index 844f679277..719938fd39 100644 --- a/i18n/tet.po +++ b/i18n/tet.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: i18next-conv\n" -"POT-Creation-Date: 2024-06-28T11:23:02.970Z\n" +"POT-Creation-Date: 2024-08-10T10:42:21.141Z\n" "PO-Revision-Date: 2019-06-27 07:31+0000\n" "Last-Translator: Philip Larsen Donnelly, 2024\n" "Language-Team: Tetum (Tetun) (https://app.transifex.com/hisp-uio/teams/100509/tet/)\n" @@ -37,6 +37,9 @@ msgid "" "again, but be aware that this will close other versions." msgstr "" +msgid "More" +msgstr "" + msgid "View {{programName}} dashboard" msgstr "" @@ -358,16 +361,10 @@ msgstr "" msgid "validation failed" msgstr "" -msgid "Errors" +msgid "No feedback for this event yet" msgstr "" -msgid "Feedback" -msgstr "Feedback" - -msgid "Indicators" -msgstr "Indikadores" - -msgid "Warnings" +msgid "No indicator output for this event yet" msgstr "" msgid "Generate new event" @@ -480,18 +477,6 @@ msgstr "" msgid "Yes" msgstr "Sim" -msgid "mm/dd/yyyy" -msgstr "" - -msgid "Years" -msgstr "Tinan" - -msgid "Months" -msgstr "Fulan" - -msgid "Days" -msgstr "" - msgid "Uploading file" msgstr "" @@ -558,6 +543,9 @@ msgstr "" msgid "Column" msgstr "Koluna" +msgid "Visible" +msgstr "" + msgid "Update" msgstr "Atualiza" @@ -765,12 +753,6 @@ msgstr "" msgid "Choose an organisation unit to start reporting" msgstr "" -msgid "No feedback for this event yet" -msgstr "" - -msgid "No indicator output for this event yet" -msgstr "" - msgid "Program stage is invalid" msgstr "" @@ -801,6 +783,11 @@ msgstr "" msgid "Registered events" msgstr "" +msgid "" +"The category option is not valid for the selected organisation unit. Please " +"select a valid combination." +msgstr "" + msgid "Please select {{category}}." msgstr "" @@ -914,6 +901,18 @@ msgid "" "relationship" msgstr "" +msgid "Errors" +msgstr "" + +msgid "Feedback" +msgstr "Feedback" + +msgid "Indicators" +msgstr "Indikadores" + +msgid "Warnings" +msgstr "" + msgid "Show all events" msgstr "" @@ -954,6 +953,12 @@ msgstr "" msgid "The enrollment event data could not be found" msgstr "" +msgid "Loading" +msgstr "" + +msgid "An error occurred while loading the form" +msgstr "" + msgid "Possible duplicates found" msgstr "" @@ -1233,9 +1238,6 @@ msgstr "" msgid "Owned by {{ownerOrgUnit}}" msgstr "" -msgid "Last updated {{date}}" -msgstr "" - msgid "Cancelled" msgstr "" @@ -1290,6 +1292,9 @@ msgstr "" msgid "Event completed" msgstr "" +msgid "The event cannot be edited after it has been completed" +msgstr "" + msgid "Back to all stages and events" msgstr "" @@ -1439,22 +1444,22 @@ msgstr "" msgid "Please select a valid event" msgstr "" -msgid "New {{ eventName }} event" +msgid "You do not have access to create events in this stage" msgstr "" -msgid "To open this event, please wait until saving is complete" +msgid "This stage can only have one event" msgstr "" -msgid "Show {{ rest }} more" +msgid "New {{ eventName }} event" msgstr "" -msgid "Reset list" +msgid "To open this event, please wait until saving is complete" msgstr "" -msgid "Go to full {{ eventName }}" +msgid "Show {{ rest }} more" msgstr "" -msgid "This stage can only have one event" +msgid "Go to full {{ eventName }}" msgstr "" msgid "Events could not be retrieved. Please try again later." @@ -1473,6 +1478,15 @@ msgstr "" msgid "Stages and Events" msgstr "" +msgid "An error occurred while loading the widget." +msgstr "" + +msgid "View linked event" +msgstr "" + +msgid "Scheduled" +msgstr "" + msgid "Changelog" msgstr "" @@ -1638,9 +1652,6 @@ msgstr "" msgid "Scheduled{{ escape }} due {{ time }}" msgstr "" -msgid "Scheduled" -msgstr "" - msgid "Overdue{{ escape }} due {{ time }}" msgstr "" diff --git a/i18n/tg.po b/i18n/tg.po index d3195081c7..1346766a62 100644 --- a/i18n/tg.po +++ b/i18n/tg.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: i18next-conv\n" -"POT-Creation-Date: 2024-08-08T11:49:13.423Z\n" +"POT-Creation-Date: 2024-08-10T10:42:21.141Z\n" "PO-Revision-Date: 2019-06-27 07:31+0000\n" "Last-Translator: Viktor Varland , 2024\n" "Language-Team: Tajik (https://app.transifex.com/hisp-uio/teams/100509/tg/)\n" @@ -478,18 +478,6 @@ msgstr "" msgid "Yes" msgstr "Ҳа" -msgid "mm/dd/yyyy" -msgstr "" - -msgid "Years" -msgstr "Солҳо" - -msgid "Months" -msgstr "Моҳҳо" - -msgid "Days" -msgstr "" - msgid "Uploading file" msgstr "" @@ -1306,6 +1294,9 @@ msgstr "" msgid "Event completed" msgstr "" +msgid "The event cannot be edited after it has been completed" +msgstr "" + msgid "Back to all stages and events" msgstr "" @@ -1457,22 +1448,22 @@ msgstr "Санаи ҳисобот" msgid "Please select a valid event" msgstr "" -msgid "New {{ eventName }} event" +msgid "You do not have access to create events in this stage" msgstr "" -msgid "To open this event, please wait until saving is complete" +msgid "This stage can only have one event" msgstr "" -msgid "Show {{ rest }} more" +msgid "New {{ eventName }} event" msgstr "" -msgid "Reset list" +msgid "To open this event, please wait until saving is complete" msgstr "" -msgid "Go to full {{ eventName }}" +msgid "Show {{ rest }} more" msgstr "" -msgid "This stage can only have one event" +msgid "Go to full {{ eventName }}" msgstr "" msgid "Events could not be retrieved. Please try again later." diff --git a/i18n/uk.po b/i18n/uk.po index 382b45618d..dd5ad8b73b 100644 --- a/i18n/uk.po +++ b/i18n/uk.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: i18next-conv\n" -"POT-Creation-Date: 2024-08-08T11:49:13.423Z\n" +"POT-Creation-Date: 2024-08-10T10:42:21.141Z\n" "PO-Revision-Date: 2019-06-27 07:31+0000\n" "Last-Translator: Viktor Varland , 2024\n" "Language-Team: Ukrainian (https://app.transifex.com/hisp-uio/teams/100509/uk/)\n" @@ -483,18 +483,6 @@ msgstr "" msgid "Yes" msgstr "Так" -msgid "mm/dd/yyyy" -msgstr "" - -msgid "Years" -msgstr "Роки" - -msgid "Months" -msgstr "Місяці" - -msgid "Days" -msgstr "Дні" - msgid "Uploading file" msgstr "" @@ -1313,6 +1301,9 @@ msgstr "" msgid "Event completed" msgstr "" +msgid "The event cannot be edited after it has been completed" +msgstr "" + msgid "Back to all stages and events" msgstr "" @@ -1468,22 +1459,22 @@ msgstr "Дата звіту" msgid "Please select a valid event" msgstr "" -msgid "New {{ eventName }} event" +msgid "You do not have access to create events in this stage" msgstr "" -msgid "To open this event, please wait until saving is complete" +msgid "This stage can only have one event" msgstr "" -msgid "Show {{ rest }} more" +msgid "New {{ eventName }} event" msgstr "" -msgid "Reset list" +msgid "To open this event, please wait until saving is complete" msgstr "" -msgid "Go to full {{ eventName }}" +msgid "Show {{ rest }} more" msgstr "" -msgid "This stage can only have one event" +msgid "Go to full {{ eventName }}" msgstr "" msgid "Events could not be retrieved. Please try again later." diff --git a/i18n/ur.po b/i18n/ur.po index 8e95fe396d..69cec58a92 100644 --- a/i18n/ur.po +++ b/i18n/ur.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: i18next-conv\n" -"POT-Creation-Date: 2024-08-08T11:49:13.423Z\n" +"POT-Creation-Date: 2024-08-10T10:42:21.141Z\n" "PO-Revision-Date: 2019-06-27 07:31+0000\n" "Last-Translator: Viktor Varland , 2024\n" "Language-Team: Urdu (https://app.transifex.com/hisp-uio/teams/100509/ur/)\n" @@ -478,18 +478,6 @@ msgstr "" msgid "Yes" msgstr "ہاں" -msgid "mm/dd/yyyy" -msgstr "" - -msgid "Years" -msgstr "سال" - -msgid "Months" -msgstr "مہینے" - -msgid "Days" -msgstr "دن" - msgid "Uploading file" msgstr "" @@ -1306,6 +1294,9 @@ msgstr "" msgid "Event completed" msgstr "" +msgid "The event cannot be edited after it has been completed" +msgstr "" + msgid "Back to all stages and events" msgstr "" @@ -1457,22 +1448,22 @@ msgstr "رپورٹ کی تاریخ" msgid "Please select a valid event" msgstr "" -msgid "New {{ eventName }} event" +msgid "You do not have access to create events in this stage" msgstr "" -msgid "To open this event, please wait until saving is complete" +msgid "This stage can only have one event" msgstr "" -msgid "Show {{ rest }} more" +msgid "New {{ eventName }} event" msgstr "" -msgid "Reset list" +msgid "To open this event, please wait until saving is complete" msgstr "" -msgid "Go to full {{ eventName }}" +msgid "Show {{ rest }} more" msgstr "" -msgid "This stage can only have one event" +msgid "Go to full {{ eventName }}" msgstr "" msgid "Events could not be retrieved. Please try again later." diff --git a/i18n/uz_UZ_Cyrl.po b/i18n/uz_UZ_Cyrl.po index cd49eaf87b..96a05d6a51 100644 --- a/i18n/uz_UZ_Cyrl.po +++ b/i18n/uz_UZ_Cyrl.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: i18next-conv\n" -"POT-Creation-Date: 2024-08-08T11:49:13.423Z\n" +"POT-Creation-Date: 2024-08-10T10:42:21.141Z\n" "PO-Revision-Date: 2019-06-27 07:31+0000\n" "Last-Translator: Khurshid Ibatov , 2024\n" "Language-Team: Uzbek (Cyrillic) (https://app.transifex.com/hisp-uio/teams/100509/uz@Cyrl/)\n" @@ -496,18 +496,6 @@ msgstr "Матнни ўз ичига олади" msgid "Yes" msgstr "Ҳа" -msgid "mm/dd/yyyy" -msgstr "кун/ой/йил" - -msgid "Years" -msgstr "Йиллар" - -msgid "Months" -msgstr "Ойлар" - -msgid "Days" -msgstr "Кунлар" - msgid "Uploading file" msgstr "Файл юкланмоқда" @@ -1341,6 +1329,9 @@ msgstr "" msgid "Event completed" msgstr "Ҳодиса/тадбир якунланди" +msgid "The event cannot be edited after it has been completed" +msgstr "" + msgid "Back to all stages and events" msgstr "" @@ -1491,22 +1482,22 @@ msgstr "Ҳисобот санаси" msgid "Please select a valid event" msgstr "" -msgid "New {{ eventName }} event" +msgid "You do not have access to create events in this stage" msgstr "" -msgid "To open this event, please wait until saving is complete" +msgid "This stage can only have one event" msgstr "" -msgid "Show {{ rest }} more" +msgid "New {{ eventName }} event" msgstr "" -msgid "Reset list" +msgid "To open this event, please wait until saving is complete" msgstr "" -msgid "Go to full {{ eventName }}" +msgid "Show {{ rest }} more" msgstr "" -msgid "This stage can only have one event" +msgid "Go to full {{ eventName }}" msgstr "" msgid "Events could not be retrieved. Please try again later." diff --git a/i18n/uz_UZ_Latn.po b/i18n/uz_UZ_Latn.po index 3c876c6abd..217bfb6e90 100644 --- a/i18n/uz_UZ_Latn.po +++ b/i18n/uz_UZ_Latn.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: i18next-conv\n" -"POT-Creation-Date: 2024-08-08T11:49:13.423Z\n" +"POT-Creation-Date: 2024-08-10T10:42:21.141Z\n" "PO-Revision-Date: 2019-06-27 07:31+0000\n" "Last-Translator: Yury Rogachev , 2024\n" "Language-Team: Uzbek (Latin) (https://app.transifex.com/hisp-uio/teams/100509/uz@Latn/)\n" @@ -496,18 +496,6 @@ msgstr "Matnni oʼz ichiga oladi" msgid "Yes" msgstr "Ha" -msgid "mm/dd/yyyy" -msgstr "kun/oy/yil" - -msgid "Years" -msgstr "Yillar" - -msgid "Months" -msgstr "Oylar" - -msgid "Days" -msgstr "Kunlar" - msgid "Uploading file" msgstr "Fayl yuklanmoqda" @@ -1330,6 +1318,9 @@ msgstr "" msgid "Event completed" msgstr "" +msgid "The event cannot be edited after it has been completed" +msgstr "" + msgid "Back to all stages and events" msgstr "" @@ -1479,22 +1470,22 @@ msgstr "Hisobot sanasi" msgid "Please select a valid event" msgstr "" -msgid "New {{ eventName }} event" +msgid "You do not have access to create events in this stage" msgstr "" -msgid "To open this event, please wait until saving is complete" +msgid "This stage can only have one event" msgstr "" -msgid "Show {{ rest }} more" +msgid "New {{ eventName }} event" msgstr "" -msgid "Reset list" +msgid "To open this event, please wait until saving is complete" msgstr "" -msgid "Go to full {{ eventName }}" +msgid "Show {{ rest }} more" msgstr "" -msgid "This stage can only have one event" +msgid "Go to full {{ eventName }}" msgstr "" msgid "Events could not be retrieved. Please try again later." diff --git a/i18n/vi.po b/i18n/vi.po index f4fdf8ca07..6df6022cce 100644 --- a/i18n/vi.po +++ b/i18n/vi.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: i18next-conv\n" -"POT-Creation-Date: 2024-08-08T11:49:13.423Z\n" +"POT-Creation-Date: 2024-08-10T10:42:21.141Z\n" "PO-Revision-Date: 2019-06-27 07:31+0000\n" "Last-Translator: Viktor Varland , 2024\n" "Language-Team: Vietnamese (https://app.transifex.com/hisp-uio/teams/100509/vi/)\n" @@ -493,18 +493,6 @@ msgstr "Chứa văn bản" msgid "Yes" msgstr "Có" -msgid "mm/dd/yyyy" -msgstr "mm / dd / yyyy" - -msgid "Years" -msgstr "Năm" - -msgid "Months" -msgstr "Tháng" - -msgid "Days" -msgstr "Ngày" - msgid "Uploading file" msgstr "Đang tải tập tin lên" @@ -1328,6 +1316,9 @@ msgstr "" msgid "Event completed" msgstr "" +msgid "The event cannot be edited after it has been completed" +msgstr "" + msgid "Back to all stages and events" msgstr "" @@ -1477,22 +1468,22 @@ msgstr "Ngày báo cáo" msgid "Please select a valid event" msgstr "" -msgid "New {{ eventName }} event" +msgid "You do not have access to create events in this stage" msgstr "" -msgid "To open this event, please wait until saving is complete" +msgid "This stage can only have one event" msgstr "" -msgid "Show {{ rest }} more" +msgid "New {{ eventName }} event" msgstr "" -msgid "Reset list" +msgid "To open this event, please wait until saving is complete" msgstr "" -msgid "Go to full {{ eventName }}" +msgid "Show {{ rest }} more" msgstr "" -msgid "This stage can only have one event" +msgid "Go to full {{ eventName }}" msgstr "" msgid "Events could not be retrieved. Please try again later." diff --git a/i18n/zh.po b/i18n/zh.po index 8058b5a3eb..a5216b482f 100644 --- a/i18n/zh.po +++ b/i18n/zh.po @@ -1301,6 +1301,9 @@ msgstr "无法更改 {{ eventStatus }} 事件的预定日期" msgid "Event completed" msgstr "事件完成" +msgid "The event cannot be edited after it has been completed" +msgstr "" + msgid "Back to all stages and events" msgstr "回到所有阶段和事件" @@ -1467,9 +1470,6 @@ msgstr "要打开此活动,请等待保存完成" msgid "Show {{ rest }} more" msgstr "显示 {{ rest }} 更多" -msgid "Reset list" -msgstr "重置列表" - msgid "Go to full {{ eventName }}" msgstr "转到完整的{{ eventName }}" diff --git a/i18n/zh_CN.po b/i18n/zh_CN.po index 29a3101e26..a23db1a424 100644 --- a/i18n/zh_CN.po +++ b/i18n/zh_CN.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: i18next-conv\n" -"POT-Creation-Date: 2024-08-08T11:49:13.423Z\n" +"POT-Creation-Date: 2024-08-10T10:42:21.141Z\n" "PO-Revision-Date: 2019-06-27 07:31+0000\n" "Last-Translator: 晓东 林 <13981924470@126.com>, 2024\n" "Language-Team: Chinese (China) (https://app.transifex.com/hisp-uio/teams/100509/zh_CN/)\n" @@ -480,18 +480,6 @@ msgstr "包含文本" msgid "Yes" msgstr "是" -msgid "mm/dd/yyyy" -msgstr "mm/dd/yyyy" - -msgid "Years" -msgstr "年" - -msgid "Months" -msgstr "月" - -msgid "Days" -msgstr "天" - msgid "Uploading file" msgstr "上传文件" @@ -1312,6 +1300,9 @@ msgstr "无法更改 {{ eventStatus }} 事件的预定日期" msgid "Event completed" msgstr "事件完成" +msgid "The event cannot be edited after it has been completed" +msgstr "" + msgid "Back to all stages and events" msgstr "回到所有阶段和事件" @@ -1461,6 +1452,12 @@ msgstr "报告日期" msgid "Please select a valid event" msgstr "" +msgid "You do not have access to create events in this stage" +msgstr "" + +msgid "This stage can only have one event" +msgstr "这个阶段只能有一个事件" + msgid "New {{ eventName }} event" msgstr "新的 {{ eventName }} 事件" @@ -1470,15 +1467,9 @@ msgstr "要打开此活动,请等待保存完成" msgid "Show {{ rest }} more" msgstr "显示 {{ rest }} 更多" -msgid "Reset list" -msgstr "重置列表" - msgid "Go to full {{ eventName }}" msgstr "转到完整的{{ eventName }}" -msgid "This stage can only have one event" -msgstr "这个阶段只能有一个事件" - msgid "Events could not be retrieved. Please try again later." msgstr "无法检索事件。请稍后再试。" diff --git a/package.json b/package.json index ab2107d6f1..8e93ee83a0 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "capture-app", "homepage": ".", - "version": "101.2.1", + "version": "101.4.0", "cacheVersion": "7", "serverVersion": "38", "license": "BSD-3-Clause", @@ -10,7 +10,7 @@ "packages/rules-engine" ], "dependencies": { - "@dhis2/rules-engine-javascript": "101.2.1", + "@dhis2/rules-engine-javascript": "101.4.0", "@dhis2/app-runtime": "^3.9.3", "@dhis2/d2-i18n": "^1.1.0", "@dhis2/d2-icons": "^1.0.1", diff --git a/packages/rules-engine/package.json b/packages/rules-engine/package.json index 25d980d96d..f4cb98057a 100644 --- a/packages/rules-engine/package.json +++ b/packages/rules-engine/package.json @@ -1,6 +1,6 @@ { "name": "@dhis2/rules-engine-javascript", - "version": "101.2.1", + "version": "101.4.0", "license": "BSD-3-Clause", "main": "./build/cjs/index.js", "scripts": { diff --git a/src/core_modules/capture-core-utils/validators/form/date.validator.js b/src/core_modules/capture-core-utils/validators/form/date.validator.js index 3c298feb88..fe14203f11 100644 --- a/src/core_modules/capture-core-utils/validators/form/date.validator.js +++ b/src/core_modules/capture-core-utils/validators/form/date.validator.js @@ -4,6 +4,7 @@ import { parseDate } from '../../parsers'; * * @export * @param {string} value + * @param {string} format * @returns {boolean} */ export function isValidDate(value: string, format: string) { diff --git a/src/core_modules/capture-core/components/Buttons/OverflowButton.component.js b/src/core_modules/capture-core/components/Buttons/OverflowButton.component.js index 5f20a47c92..57e99a125e 100644 --- a/src/core_modules/capture-core/components/Buttons/OverflowButton.component.js +++ b/src/core_modules/capture-core/components/Buttons/OverflowButton.component.js @@ -1,7 +1,7 @@ // @flow import * as React from 'react'; -import i18n from '@dhis2/d2-i18n'; import { useRef, useState } from 'react'; +import i18n from '@dhis2/d2-i18n'; import { Button, Layer, Popper } from '@dhis2/ui'; type Props = { @@ -15,6 +15,7 @@ type Props = { dataTest?: string, small?: boolean, large?: boolean, + disabled?: boolean, }; export const OverflowButton = ({ @@ -23,6 +24,7 @@ export const OverflowButton = ({ secondary, small, large, + disabled, onClick: handleClick, open: propsOpen, icon, @@ -43,10 +45,11 @@ export const OverflowButton = ({ return (
+ + + + + ); +}; diff --git a/src/core_modules/capture-core/components/WidgetStagesAndEvents/Stages/Stage/StageDetail/EventRow/DeleteActionModal/index.js b/src/core_modules/capture-core/components/WidgetStagesAndEvents/Stages/Stage/StageDetail/EventRow/DeleteActionModal/index.js new file mode 100644 index 0000000000..f288fff5b2 --- /dev/null +++ b/src/core_modules/capture-core/components/WidgetStagesAndEvents/Stages/Stage/StageDetail/EventRow/DeleteActionModal/index.js @@ -0,0 +1,3 @@ +// @flow + +export { DeleteActionModal } from './DeleteActionModal'; diff --git a/src/core_modules/capture-core/components/WidgetStagesAndEvents/Stages/Stage/StageDetail/EventRow/EventRow.js b/src/core_modules/capture-core/components/WidgetStagesAndEvents/Stages/Stage/StageDetail/EventRow/EventRow.js new file mode 100644 index 0000000000..1f8ba00e56 --- /dev/null +++ b/src/core_modules/capture-core/components/WidgetStagesAndEvents/Stages/Stage/StageDetail/EventRow/EventRow.js @@ -0,0 +1,111 @@ +// @flow +import React, { useState } from 'react'; +import { withStyles } from '@material-ui/core/'; +import { + DataTableCell, + DataTableRow, + FlyoutMenu, + IconMore16, +} from '@dhis2/ui'; +import { OverflowButton } from '../../../../../Buttons'; +import type { EventRowProps } from './EventRow.types'; +import { DeleteActionButton } from './DeleteActionButton'; +import { SkipAction } from './SkipAction'; +import { DeleteActionModal } from './DeleteActionModal'; + +const styles = { + row: { + maxWidth: '100%', + whiteSpace: 'nowrap', + cursor: 'pointer', + }, + rowDisabled: { + cursor: 'not-allowed', + opacity: 0.5, + }, +}; + +export const EventStatuses = { + ACTIVE: 'ACTIVE', + COMPLETED: 'COMPLETED', + SKIPPED: 'SKIPPED', + SCHEDULE: 'SCHEDULE', +}; + +const EventRowPlain = ({ + id, + pendingApiResponse, + eventDetails, + cells, + stageWriteAccess, + onDeleteEvent, + onRollbackDeleteEvent, + onUpdateEventStatus, + teiId, + programId, + enrollmentId, + classes, +}: EventRowProps) => { + const [actionsOpen, setActionsOpen] = useState(false); + const [deleteModalOpen, setDeleteModalOpen] = useState(false); + + return ( + + {cells} + + + <> + setActionsOpen(prev => !prev)} + dataTest={'overflow-button'} + secondary + small + icon={} + disabled={pendingApiResponse || !stageWriteAccess} + component={( + + {(eventDetails.status === EventStatuses.SCHEDULE || eventDetails.status === EventStatuses.SKIPPED) && ( + + )} + + + + )} + /> + + {deleteModalOpen && ( + + )} + + + + ); +}; + +export const EventRow = withStyles(styles)(EventRowPlain); diff --git a/src/core_modules/capture-core/components/WidgetStagesAndEvents/Stages/Stage/StageDetail/EventRow/EventRow.types.js b/src/core_modules/capture-core/components/WidgetStagesAndEvents/Stages/Stage/StageDetail/EventRow/EventRow.types.js new file mode 100644 index 0000000000..d47cc386fc --- /dev/null +++ b/src/core_modules/capture-core/components/WidgetStagesAndEvents/Stages/Stage/StageDetail/EventRow/EventRow.types.js @@ -0,0 +1,17 @@ +// @flow + +export type EventRowProps = {| + id: string, + pendingApiResponse: boolean, + eventDetails: ApiEnrollmentEvent, + cells: Array>, + onEventClick: (id: string, options: ?Object) => void, + onDeleteEvent: (id: string) => void, + onUpdateEventStatus: (id: string, status: string) => void, + onRollbackDeleteEvent: (event: ApiEnrollmentEvent) => void, + stageWriteAccess: boolean, + teiId: string, + programId: string, + enrollmentId: string, + ...CssClasses, +|}; diff --git a/src/core_modules/capture-core/components/WidgetStagesAndEvents/Stages/Stage/StageDetail/EventRow/SkipAction/SkipAction.js b/src/core_modules/capture-core/components/WidgetStagesAndEvents/Stages/Stage/StageDetail/EventRow/SkipAction/SkipAction.js new file mode 100644 index 0000000000..70cd1068b4 --- /dev/null +++ b/src/core_modules/capture-core/components/WidgetStagesAndEvents/Stages/Stage/StageDetail/EventRow/SkipAction/SkipAction.js @@ -0,0 +1,89 @@ +// @flow +import React from 'react'; +import i18n from '@dhis2/d2-i18n'; +import log from 'loglevel'; +import { + MenuItem, + IconArrowRight16, IconRedo16, +} from '@dhis2/ui'; +import { useMutation } from 'react-query'; +import { useAlert, useDataEngine } from '@dhis2/app-runtime'; +import { EventStatuses } from '../EventRow'; +import { errorCreator } from '../../../../../../../../capture-core-utils'; + +type Props = {| + eventId: string, + eventDetails: ApiEnrollmentEvent, + pendingApiResponse: boolean, + onUpdateEventStatus: (eventId: string, status: string) => void, + setActionsOpen: (open: boolean) => void, +|} + +export const SkipAction = ({ + eventId, + eventDetails, + pendingApiResponse, + setActionsOpen, + onUpdateEventStatus, +}: Props) => { + const dataEngine = useDataEngine(); + const { show: showError } = useAlert( + ({ message }) => message, + { critical: true }, + ); + const { mutate: updateEventStatus } = useMutation( + ({ status }) => dataEngine.mutate({ + resource: 'tracker?async=false&importStrategy=UPDATE', + type: 'create', + data: { + events: [ + { + ...eventDetails, + event: eventId, + status, + }, + ], + }, + }), + { + onMutate: (payload) => { + const status = EventStatuses[payload.status]; + const previousStatus = eventDetails.status; + + status && onUpdateEventStatus(eventId, status); + + return { previousStatus }; + }, + onError: (error, payload, context) => { + showError({ message: i18n.t('An error occurred when updating event status') }); + log.error(errorCreator('An error occurred when updating event status')({ error, payload, context })); + context && onUpdateEventStatus(eventId, context.previousStatus); + }, + }, + ); + + const handleMenuItemClick = (status) => { + setActionsOpen(false); + !pendingApiResponse && updateEventStatus({ status }); + }; + + if (eventDetails.status === EventStatuses.SKIPPED) { + return ( + } + label={i18n.t('Unskip')} + onClick={() => handleMenuItemClick(EventStatuses.SCHEDULE)} + /> + ); + } + + return ( + } + label={i18n.t('Skip')} + onClick={() => handleMenuItemClick(EventStatuses.SKIPPED)} + /> + ); +}; diff --git a/src/core_modules/capture-core/components/WidgetStagesAndEvents/Stages/Stage/StageDetail/EventRow/SkipAction/index.js b/src/core_modules/capture-core/components/WidgetStagesAndEvents/Stages/Stage/StageDetail/EventRow/SkipAction/index.js new file mode 100644 index 0000000000..860c3a51f5 --- /dev/null +++ b/src/core_modules/capture-core/components/WidgetStagesAndEvents/Stages/Stage/StageDetail/EventRow/SkipAction/index.js @@ -0,0 +1,3 @@ +// @flow + +export { SkipAction } from './SkipAction'; diff --git a/src/core_modules/capture-core/components/WidgetStagesAndEvents/Stages/Stage/StageDetail/EventRow/index.js b/src/core_modules/capture-core/components/WidgetStagesAndEvents/Stages/Stage/StageDetail/EventRow/index.js new file mode 100644 index 0000000000..acea1793f8 --- /dev/null +++ b/src/core_modules/capture-core/components/WidgetStagesAndEvents/Stages/Stage/StageDetail/EventRow/index.js @@ -0,0 +1,3 @@ +// @flow + +export { EventRow } from './EventRow'; diff --git a/src/core_modules/capture-core/components/WidgetStagesAndEvents/Stages/Stage/StageDetail/StageDetail.component.js b/src/core_modules/capture-core/components/WidgetStagesAndEvents/Stages/Stage/StageDetail/StageDetail.component.js index 644936ef57..e36d5f4b16 100644 --- a/src/core_modules/capture-core/components/WidgetStagesAndEvents/Stages/Stage/StageDetail/StageDetail.component.js +++ b/src/core_modules/capture-core/components/WidgetStagesAndEvents/Stages/Stage/StageDetail/StageDetail.component.js @@ -3,11 +3,14 @@ import React, { type ComponentType, useState, useCallback } from 'react'; import { withStyles } from '@material-ui/core'; import i18n from '@dhis2/d2-i18n'; // $FlowFixMe -import { colors, +import { + colors, + spacers, spacersNum, + theme, + DataTableToolbar, DataTableBody, DataTableHead, - DataTableFoot, DataTable, DataTableRow, DataTableCell, @@ -15,12 +18,15 @@ import { colors, Button, Tooltip, } from '@dhis2/ui'; +import log from 'loglevel'; import { sortDataFromEvent } from './hooks/sortFuntions'; import { StageCreateNewButton } from '../StageCreateNewButton'; import { useComputeDataFromEvent, useComputeHeaderColumn, formatRowForView } from './hooks/useEventList'; import { DEFAULT_NUMBER_OF_ROW, SORT_DIRECTION } from './hooks/constants'; import { getProgramAndStageForProgram } from '../../../../../metaData/helpers'; import type { Props } from './stageDetail.types'; +import { EventRow } from './EventRow'; +import { errorCreator } from '../../../../../../capture-core-utils'; const styles = { @@ -29,21 +35,13 @@ const styles = { whiteSpace: 'nowrap', cursor: 'pointer', }, - rowDisabled: { - cursor: 'not-allowed', - opacity: 0.5, - }, container: { display: 'flex', - marginRight: spacersNum.dp16, - marginLeft: spacersNum.dp16, - marginBottom: spacersNum.dp16, - backgroundColor: colors.grey200, - alignItems: 'center', - overflowX: 'auto', + flexDirection: 'column', }, - button: { - marginRight: spacersNum.dp8, + scrollBox: { + overflowX: 'auto', + overflow: 'hidden', }, hidenButton: { display: 'none !important' }, icon: { @@ -54,6 +52,40 @@ const styles = { label: { paddingLeft: spacersNum.dp32, }, + table: { + border: 'none !important', + }, + tableToolbar: { + borderLeft: 'none !important', + borderBottom: 'none !important', + borderRight: 'none !important', + borderTop: `1px solid ${colors.grey300} !important`, + width: '100%', + padding: '0 !important', + }, + toolbarContent: { + width: '100%', + }, + showMoreButton: { + width: '100%', + border: 'none', + background: colors.grey100, + color: colors.grey800, + fontSize: '13px', + height: '24px', + borderBottom: `1px solid ${colors.grey300}`, + '&:hover': { + background: colors.grey200, + color: colors.grey900, + cursor: 'pointer', + }, + '&:focus': { + outline: `3px solid ${theme.focus}`, + }, + }, + newButton: { + margin: `${spacers.dp8} ${spacers.dp12}`, + }, }; const StageDetailPlain = (props: Props) => { @@ -67,10 +99,14 @@ const StageDetailPlain = (props: Props) => { repeatable = false, enableUserAssignment = false, onEventClick, + onDeleteEvent, + onUpdateEventStatus, + onRollbackDeleteEvent, onViewAll, onCreateNew, hiddenProgramStage, - classes } = props; + classes, + } = props; const defaultSortState = { columnName: 'status', sortDirection: SORT_DIRECTION.DESC, @@ -125,6 +161,8 @@ const StageDetailPlain = (props: Props) => { className={classes.row} > {headerCells} + + ); } @@ -172,15 +210,28 @@ const StageDetailPlain = (props: Props) => { )} )); + const eventDetails = events.find(event => event.event === row.id); + if (!eventDetails) { + log.error(errorCreator('Event details not found')({ row })); + return null; + } return ( - - {cells} - + ); }); } @@ -188,27 +239,17 @@ const StageDetailPlain = (props: Props) => { function renderFooter() { const renderShowMoreButton = () => (dataSource && !loading && events.length > DEFAULT_NUMBER_OF_ROW - && displayedRowNumber < events.length ? + : null); - const renderResetButton = () => (displayedRowNumber > DEFAULT_NUMBER_OF_ROW ? : null); - const renderViewAllButton = () => (events.length > 1 ? : null); const renderCreateNewButton = () => ( - +
+ +
); return ( - - - {renderShowMoreButton()} - {renderViewAllButton()} - {renderCreateNewButton()} - {renderResetButton()} - - +
+ {renderShowMoreButton()} + {renderViewAllButton()} + {renderCreateNewButton()} +
+ ); } @@ -249,19 +290,23 @@ const StageDetailPlain = (props: Props) => { } return (
- - - {renderHeader()} - - - {renderRows()} - - +
+ + + {renderHeader()} + + + {renderRows()} + + +
+ +
{renderFooter()} - - +
+
); }; diff --git a/src/core_modules/capture-core/components/WidgetStagesAndEvents/Stages/Stage/StageDetail/stageDetail.types.js b/src/core_modules/capture-core/components/WidgetStagesAndEvents/Stages/Stage/StageDetail/stageDetail.types.js index 31d8c79dea..d5a07514d3 100644 --- a/src/core_modules/capture-core/components/WidgetStagesAndEvents/Stages/Stage/StageDetail/stageDetail.types.js +++ b/src/core_modules/capture-core/components/WidgetStagesAndEvents/Stages/Stage/StageDetail/stageDetail.types.js @@ -1,7 +1,7 @@ // @flow import type { StageDataElement, StageCommonProps } from '../../../types/common.types'; - type ExtractedProps = {| +type ExtractedProps = {| events: Array, dataElements: Array, eventName: string, @@ -9,6 +9,10 @@ import type { StageDataElement, StageCommonProps } from '../../../types/common.t repeatable?: boolean, enableUserAssignment?: boolean, stageId: string, + onCreateNew: (stageId: string) => void, + onDeleteEvent: (eventId: string) => void, + onUpdateEventStatus: (eventId: string, status: string) => void, + onRollbackDeleteEvent: (eventId: ApiEnrollmentEvent) => void, hiddenProgramStage?: boolean, ...CssClasses, |}; diff --git a/src/core_modules/capture-core/components/WidgetStagesAndEvents/Stages/Stage/StageOverview/StageOverview.component.js b/src/core_modules/capture-core/components/WidgetStagesAndEvents/Stages/Stage/StageOverview/StageOverview.component.js index b7b576500d..c2e7731421 100644 --- a/src/core_modules/capture-core/components/WidgetStagesAndEvents/Stages/Stage/StageOverview/StageOverview.component.js +++ b/src/core_modules/capture-core/components/WidgetStagesAndEvents/Stages/Stage/StageOverview/StageOverview.component.js @@ -3,7 +3,9 @@ import React, { type ComponentType } from 'react'; import cx from 'classnames'; import { withStyles } from '@material-ui/core'; import { useTimeZoneConversion } from '@dhis2/app-runtime'; -import { colors, spacersNum, IconInfo16, IconWarning16, IconCalendar16, IconClockHistory16, Tooltip } from '@dhis2/ui'; +import { + colors, spacers, spacersNum, IconInfo16, IconWarning16, IconCalendar16, IconClockHistory16, Tooltip, +} from '@dhis2/ui'; import i18n from '@dhis2/d2-i18n'; import moment from 'moment'; import { statusTypes } from 'capture-core/events/statusTypes'; @@ -15,6 +17,10 @@ const styles = { container: { display: 'flex', alignItems: 'center', + padding: '0', + justifyContent: 'space-between', + width: '100%', + marginLeft: '-4px', }, icon: { paddingRight: spacersNum.dp8, @@ -24,22 +30,32 @@ const styles = { marginRight: spacersNum.dp8, height: '16px', }, + infoTitles: { + display: 'flex', + alignItems: 'center', + }, + infoItems: { + display: 'flex', + gap: spacers.dp12, + }, indicatorIcon: { paddingRight: spacersNum.dp4, height: '16px', }, title: { - fontSize: '14px', + fontSize: '18px', lineHeight: '19px', fontWeight: 500, color: colors.grey900, display: 'flex', + marginInlineEnd: spacers.dp4, }, indicator: { - padding: spacersNum.dp8, color: colors.grey800, - fontSize: '14px', + fontSize: '12px', + lineHeight: '16px', fontWeight: 400, + height: '100%', display: 'flex', alignItems: 'center', }, @@ -76,24 +92,26 @@ export const StageOverviewPlain = ({ title, icon, description, events, classes } const scheduledEvents = events.filter(event => event.status === statusTypes.SCHEDULE).length; return (
- { - icon && ( -
- -
- ) - } +
+ { + icon && ( +
+ +
+ ) + } +
-
- {title} -
- { description && +
+ {title} +
+ { description &&
- } -
- {i18n.t('{{ count }} event', { - count: totalEvents, - defaultValue: '{{ count }} event', - defaultValue_plural: '{{count}} events', - })} + }
- {overdueEvents > 0 ?
-
- -
- {i18n.t('{{ overdueEvents }} overdue', { overdueEvents })} -
: null} - {scheduledEvents > 0 ?
-
- +
+
+ {i18n.t('{{ count }} event', { + count: totalEvents, + defaultValue: '{{ count }} event', + defaultValue_plural: '{{count}} events', + })}
- {i18n.t('{{ scheduledEvents }} scheduled', { scheduledEvents })} -
: null } - {totalEvents > 0 &&
-
- -
- {getLastUpdatedAt(events, fromServerDate)} -
} + {overdueEvents > 0 ?
+
+ +
+ {i18n.t('{{ overdueEvents }} overdue', { overdueEvents })} +
: null} + {scheduledEvents > 0 ?
+
+ +
+ {i18n.t('{{ scheduledEvents }} scheduled', { scheduledEvents })} +
: null } + {totalEvents > 0 &&
+
+ +
+ {getLastUpdatedAt(events, fromServerDate)} +
} +
); }; diff --git a/src/core_modules/capture-core/components/WidgetStagesAndEvents/Stages/Stage/stage.types.js b/src/core_modules/capture-core/components/WidgetStagesAndEvents/Stages/Stage/stage.types.js index d8ce73c7e6..10be4ac00d 100644 --- a/src/core_modules/capture-core/components/WidgetStagesAndEvents/Stages/Stage/stage.types.js +++ b/src/core_modules/capture-core/components/WidgetStagesAndEvents/Stages/Stage/stage.types.js @@ -7,6 +7,9 @@ type ExtractedProps = {| events: Array, className?: string, onEventClick: (eventId: string) => void, + onDeleteEvent: (eventId: string) => void, + onUpdateEventStatus: (eventId: string, status: string) => void, + onRollbackDeleteEvent: (eventId: ApiEnrollmentEvent) => void, ...CssClasses, |}; diff --git a/src/core_modules/capture-core/components/WidgetStagesAndEvents/Stages/stages.types.js b/src/core_modules/capture-core/components/WidgetStagesAndEvents/Stages/stages.types.js index 82208aa356..c4ca0b8fd6 100644 --- a/src/core_modules/capture-core/components/WidgetStagesAndEvents/Stages/stages.types.js +++ b/src/core_modules/capture-core/components/WidgetStagesAndEvents/Stages/stages.types.js @@ -5,6 +5,9 @@ export type PlainProps = {| stages: Array, events: Array, onEventClick: (eventId: string) => void, + onDeleteEvent: (eventId: string) => void, + onUpdateEventStatus: (eventId: string, status: string) => void, + onRollbackDeleteEvent: (eventId: ApiEnrollmentEvent) => void, ...StageCommonProps, ...CssClasses, |}; @@ -13,5 +16,8 @@ export type InputProps = {| stages?: Array, events?: ?Array, onEventClick: (eventId: string) => void, + onDeleteEvent: (eventId: string) => void, + onUpdateEventStatus: (eventId: string, status: string) => void, + onRollbackDeleteEvent: (eventId: ApiEnrollmentEvent) => void, ...StageCommonProps, |}; diff --git a/src/core_modules/capture-core/components/WidgetStagesAndEvents/stagesAndEvents.types.js b/src/core_modules/capture-core/components/WidgetStagesAndEvents/stagesAndEvents.types.js index c7e2453f24..5dce9859fb 100644 --- a/src/core_modules/capture-core/components/WidgetStagesAndEvents/stagesAndEvents.types.js +++ b/src/core_modules/capture-core/components/WidgetStagesAndEvents/stagesAndEvents.types.js @@ -6,6 +6,9 @@ type ExtractedProps = {| stages?: Array, events: ?Array, onEventClick: (eventId: string) => void, + onDeleteEvent: (eventId: string) => void, + onUpdateEventStatus: (eventId: string, status: string) => void, + onRollbackDeleteEvent: (eventId: ApiEnrollmentEvent) => void, className?: string, |}; diff --git a/src/core_modules/capture-core/metaData/Program/ProgramStage.js b/src/core_modules/capture-core/metaData/Program/ProgramStage.js index be8714768e..226cf9d313 100644 --- a/src/core_modules/capture-core/metaData/Program/ProgramStage.js +++ b/src/core_modules/capture-core/metaData/Program/ProgramStage.js @@ -12,6 +12,7 @@ export class ProgramStage { _id: string; _name: string; _access: { data: { write: boolean } }; + _blockEntryForm: boolean; _untranslatedName: string; _stageForm: RenderFoundation; _relationshipTypes: Array; @@ -41,6 +42,14 @@ export class ProgramStage { this._stageForm = stageForm; } + get blockEntryForm(): boolean { + return this._blockEntryForm; + } + + set blockEntryForm(blockEntryForm: boolean) { + this._blockEntryForm = blockEntryForm; + } + get id(): string { return this._id; } diff --git a/src/core_modules/capture-core/metaDataMemoryStoreBuilders/programs/factory/programStage/ProgramStageFactory.js b/src/core_modules/capture-core/metaDataMemoryStoreBuilders/programs/factory/programStage/ProgramStageFactory.js index 532b40086a..4241f27b2d 100644 --- a/src/core_modules/capture-core/metaDataMemoryStoreBuilders/programs/factory/programStage/ProgramStageFactory.js +++ b/src/core_modules/capture-core/metaDataMemoryStoreBuilders/programs/factory/programStage/ProgramStageFactory.js @@ -196,6 +196,7 @@ export class ProgramStageFactory { _stage.generatedByEnrollmentDate = !!cachedProgramStage.generatedByEnrollmentDate; _stage.reportDateToUse = cachedProgramStage.reportDateToUse; _stage.minDaysFromStart = cachedProgramStage.minDaysFromStart; + _stage.blockEntryForm = !!cachedProgramStage.blockEntryForm; _stage.repeatable = cachedProgramStage.repeatable; _stage.stageForm = new RenderFoundation((_form) => { _form.id = cachedProgramStage.id; diff --git a/src/core_modules/capture-core/metaDataStoreLoaders/programs/quickStoreOperations/storePrograms.js b/src/core_modules/capture-core/metaDataStoreLoaders/programs/quickStoreOperations/storePrograms.js index 529cb771b1..080f4fcbb3 100644 --- a/src/core_modules/capture-core/metaDataStoreLoaders/programs/quickStoreOperations/storePrograms.js +++ b/src/core_modules/capture-core/metaDataStoreLoaders/programs/quickStoreOperations/storePrograms.js @@ -89,7 +89,7 @@ const fieldsParam = 'id,displayName,displayShortName,description,programType,sty 'categoryCombo[id,displayName,isDefault,categories[id,displayName]],' + 'userRoles[id,displayName],' + // eslint-disable-next-line max-len -'programStages[id,access,autoGenerateEvent,openAfterEnrollment,hideDueDate,allowGenerateNextVisit,remindCompleted,repeatable,generatedByEnrollmentDate,reportDateToUse,minDaysFromStart,name,displayName,description,displayExecutionDateLabel,displayDueDateLabel,formType,featureType,validationStrategy,enableUserAssignment,style,dataEntryForm[id,htmlCode]' + +'programStages[id,access,autoGenerateEvent,openAfterEnrollment,hideDueDate,allowGenerateNextVisit,remindCompleted,repeatable,generatedByEnrollmentDate,reportDateToUse,blockEntryForm,minDaysFromStart,name,displayName,description,displayExecutionDateLabel,displayDueDateLabel,formType,featureType,validationStrategy,enableUserAssignment,style,dataEntryForm[id,htmlCode]' + 'programStageSections[id,displayName,displayDescription,sortOrder,dataElements[id]],' + // eslint-disable-next-line max-len 'programStageDataElements[compulsory,displayInReports,renderOptionsAsRadio,allowFutureDate,renderType[*],dataElement[id]]]' + diff --git a/src/core_modules/capture-core/reducers/descriptions/enrollmentDomain.reducerDescription.js b/src/core_modules/capture-core/reducers/descriptions/enrollmentDomain.reducerDescription.js index 2eecc8429a..f7ca795289 100644 --- a/src/core_modules/capture-core/reducers/descriptions/enrollmentDomain.reducerDescription.js +++ b/src/core_modules/capture-core/reducers/descriptions/enrollmentDomain.reducerDescription.js @@ -23,6 +23,8 @@ const { COMMIT_ENROLLMENT_EVENTS, ADD_PERSISTED_ENROLLMENT_EVENTS, COMMIT_ENROLLMENT_AND_EVENTS, + DELETE_ENROLLMENT_EVENT, + UPDATE_ENROLLMENT_EVENT_STATUS, } = enrollmentSiteActionTypes; const setAssignee = (state, action) => { @@ -98,6 +100,19 @@ export const enrollmentDomainDesc = createReducerDescription( return { ...state, enrollment: { ...state.enrollment, events } }; }, + [DELETE_ENROLLMENT_EVENT]: (state, { payload: { eventId } }) => { + const events = state.enrollment.events?.filter(event => event.event !== eventId); + return { ...state, enrollment: { ...state.enrollment, events } }; + }, + [UPDATE_ENROLLMENT_EVENT_STATUS]: (state, { payload: { eventId, status, updatedAt } }) => { + const events = state.enrollment.events?.map(event => + (event.event === eventId + ? { ...event, status, updatedAt } + : event), + ); + + return { ...state, enrollment: { ...state.enrollment, events } }; + }, [UPDATE_OR_ADD_ENROLLMENT_EVENTS]: ( state, { payload: { events } }, diff --git a/src/core_modules/capture-core/storageControllers/cache.types.js b/src/core_modules/capture-core/storageControllers/cache.types.js index 121534f5ab..d41cb0fa9e 100644 --- a/src/core_modules/capture-core/storageControllers/cache.types.js +++ b/src/core_modules/capture-core/storageControllers/cache.types.js @@ -102,6 +102,7 @@ export type CachedDataEntryForm = { export type CachedProgramStage = { id: string, access: Object, + blockEntryForm: boolean, name: string, displayName: string, description: ?string, diff --git a/src/core_modules/capture-core/utils/converters/date/stringToMomentDateFormat.js b/src/core_modules/capture-core/utils/converters/date/stringToMomentDateFormat.js index 54ca885689..eed1df7957 100644 --- a/src/core_modules/capture-core/utils/converters/date/stringToMomentDateFormat.js +++ b/src/core_modules/capture-core/utils/converters/date/stringToMomentDateFormat.js @@ -11,6 +11,6 @@ import { systemSettingsStore } from '../../../metaDataMemoryStores'; export function convertStringToDateFormat(date: string) { if (!date || !date.length) { return ''; } const dateFormat = systemSettingsStore.get().dateFormat; - const formattedDateString = moment(date, dateFormat).format('YYYY-MM-DD'); + const formattedDateString = moment(date, dateFormat).format(dateFormat); return formattedDateString; }