Skip to content
Permalink

Comparing changes

This is a direct comparison between two commits made in this repository or its related repositories. View the default comparison for this range or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: dhis2/line-listing-app
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: b3659991b687b9a313706a9180fa2bd0531bc000
Choose a base ref
..
head repository: dhis2/line-listing-app
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: e1566575e793ed5cfed365581006da2685dca486
Choose a head ref
Showing with 3,819 additions and 2,174 deletions.
  1. +4 −4 .github/workflows/dhis2-preview-pr.yml
  2. +60 −3 .github/workflows/dhis2-verify-app.yml
  3. +4 −4 .github/workflows/dhis2-verify-commits.yml
  4. +73 −0 .github/workflows/e2e-dev.yml
  5. +121 −0 .github/workflows/e2e-prod.yml
  6. +4 −3 .github/workflows/nightly.yml
  7. +1 −1 .tx/config
  8. +58 −0 CHANGELOG.md
  9. +2 −0 CODEOWNERS
  10. +51 −0 cypress.config.js
  11. +0 −11 cypress.json
  12. +3 −3 cypress/helpers/fileMenu.js
  13. +2 −2 cypress/helpers/interpretations.js
  14. +26 −4 cypress/helpers/menubar.js
  15. +8 −2 cypress/helpers/period.js
  16. +6 −3 cypress/integration/conditions/alphanumericConditions.cy.js
  17. +6 −2 cypress/integration/conditions/dateConditions.cy.js
  18. +12 −4 cypress/integration/conditions/numericConditions.cy.js
  19. +1 −0 cypress/integration/contextMenu.cy.js
  20. +3 −26 cypress/integration/download.cy.js
  21. +9 −23 cypress/integration/fileMenu.cy.js
  22. +17 −3 cypress/integration/interpretations.cy.js
  23. +2 −2 cypress/integration/layout.cy.js
  24. +7 −16 cypress/integration/layoutValidation.cy.js
  25. +12 −31 cypress/integration/legendSet.cy.js
  26. +2 −2 cypress/integration/mainSidebar.cy.js
  27. +10 −10 cypress/integration/options.cy.js
  28. +5 −1 cypress/integration/period.cy.js
  29. +2 −2 cypress/integration/table.cy.js
  30. +13 −4 cypress/integration/yourDimensions.cy.js
  31. +13 −1 cypress/{support/getExcludedTags.js → plugins/excludeByVersionTags.js}
  32. +0 −26 cypress/plugins/index.js
  33. +22 −0 cypress/support/commands.js
  34. +82 −0 cypress/support/e2e.js
  35. +0 −20 cypress/support/index.js
  36. +1 −1 cypress/support/util.js
  37. +6 −13 i18n/ar.po
  38. +3 −10 i18n/ar_IQ.po
  39. +3 −12 i18n/cs.po
  40. +71 −24 i18n/da.po
  41. +18 −14 i18n/en.pot
  42. +138 −123 i18n/es.po
  43. +6 −15 i18n/fr.po
  44. +6 −13 i18n/id.po
  45. +4 −11 i18n/km.po
  46. +6 −12 i18n/lo.po
  47. +4 −11 i18n/my.po
  48. +5 −12 i18n/nb.po
  49. +188 −165 i18n/nl.po
  50. +5 −12 i18n/prs.po
  51. +4 −11 i18n/ps.po
  52. +10 −17 i18n/pt.po
  53. +4 −11 i18n/pt_BR.po
  54. +6 −13 i18n/ru.po
  55. +5 −12 i18n/sv.po
  56. +71 −24 i18n/tet.po
  57. +4 −11 i18n/tg.po
  58. +6 −13 i18n/uk.po
  59. +4 −11 i18n/ur.po
  60. +4 −11 i18n/{uz.po → uz_UZ_Cyrl.po}
  61. +736 −0 i18n/uz_UZ_Latn.po
  62. +6 −13 i18n/vi.po
  63. +13 −20 i18n/zh.po
  64. +3 −10 i18n/zh_CN.po
  65. +8 −11 package.json
  66. +1 −1 src/__tests__/cypressGetExcludedTags.spec.js
  67. +0 −11 src/assets/ErrorIcons.js
  68. +0 −51 src/assets/LineListIcon.js
  69. +0 −56 src/assets/PivotTableIcon.js
  70. +9 −4 src/components/App.js
  71. +1 −1 src/components/Dialogs/Conditions/styles/Condition.module.css
  72. +50 −30 src/components/DownloadMenu/DownloadMenu.js
  73. +8 −5 src/components/DownloadMenu/ModalDownloadDropdown.js
  74. +34 −21 src/components/DownloadMenu/PlainDataSourceSubMenu.js
  75. +11 −22 src/components/DownloadMenu/ToolbarDownloadDropdown.js
  76. +5 −9 src/components/DownloadMenu/{useDownloadMenu.js → useDownload.js}
  77. +20 −0 src/components/Toolbar/AppLogo.js
  78. +23 −0 src/components/Toolbar/InterpretationsAndDetailsToggler.js
  79. +40 −59 src/components/Toolbar/{MenuBar → }/MenuBar.js
  80. +0 −31 src/components/Toolbar/MenuBar/InterpretationsButton.js
  81. +0 −24 src/components/Toolbar/MenuBar/MenuButton.js
  82. +0 −84 src/components/Toolbar/MenuBar/ViewDropDown.js
  83. +0 −4 src/components/Toolbar/MenuBar/styles/InterpretationsButton.module.css
  84. +0 −13 src/components/Toolbar/MenuBar/styles/MenuBar.module.css
  85. +0 −29 src/components/Toolbar/MenuBar/styles/MenuButton.module.css
  86. +13 −14 src/components/Toolbar/Toolbar.js
  87. +16 −0 src/components/Toolbar/UpdateButton.js
  88. +69 −0 src/components/Toolbar/ViewDropDown.js
  89. +0 −21 src/components/Toolbar/VisualizationTypeSelector/ListItemIcon.js
  90. +0 −50 src/components/Toolbar/VisualizationTypeSelector/VisualizationTypeListItem.js
  91. +0 −27 src/components/Toolbar/VisualizationTypeSelector/VisualizationTypeSelector.js
  92. +0 −25 src/components/Toolbar/VisualizationTypeSelector/styles/VisualizationTypeSelector.module.css
  93. +10 −0 src/components/Toolbar/styles/AppLogo.module.css
  94. +37 −1 src/components/Visualization/Visualization.js
  95. +26 −11 src/components/VisualizationOptions/VisualizationOptionsManager.js
  96. +23 −17 src/modules/error.js
  97. +0 −20 src/modules/layoutValidation.js
  98. +1,434 −684 yarn.lock
8 changes: 4 additions & 4 deletions .github/workflows/dhis2-preview-pr.yml
Original file line number Diff line number Diff line change
@@ -21,12 +21,12 @@ jobs:
runs-on: ubuntu-latest
if: "!github.event.push.repository.fork && github.actor != 'dependabot[bot]'"
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v1
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 16.x
node-version: 18.x

- uses: c-hive/gha-yarn-cache@v1
- uses: c-hive/gha-yarn-cache@v2
- run: yarn install --frozen-lockfile

- name: Build
63 changes: 60 additions & 3 deletions .github/workflows/dhis2-verify-app.yml
Original file line number Diff line number Diff line change
@@ -77,7 +77,7 @@ jobs:
call-workflow-e2e-prod:
if: "!contains(github.event.head_commit.message, '[skip ci]')"
needs: [build, lint, test]
uses: dhis2/data-visualizer-app/.github/workflows/e2e-prod.yml@dev
uses: ./.github/workflows/e2e-prod.yml
secrets:
baseurl: ${{ secrets.CYPRESS_DHIS2_BASE_URL_DEV }}
username: ${{ secrets.CYPRESS_DHIS2_USERNAME }}
@@ -125,13 +125,70 @@ jobs:
if: |
failure() &&
!cancelled() &&
github.ref == 'refs/heads/master'
github.ref == 'refs/heads/master' &&
contains(github.event.head_commit.message, 'chore(release)')
steps:
- name: Checkout code
uses: actions/checkout@master

- name: Extract version
id: extract_version
uses: Saionaro/extract-package-version@v1.2.1

- name: Send failure message to analytics-internal-bot slack channel
id: slack
uses: slackapi/slack-github-action@v1.23.0
with:
channel-id: ${{ secrets.SLACK_CHANNEL_ID }}
slack-message: ':small_red_triangle_down: Line-listing-app release <https://github.com/dhis2/line-listing-app/actions/workflows/dhis2-verify-app.yml?query=branch%3Amaster+is%3Afailure>'
payload: |
{
"text": ":small_red_triangle_down: :line-listing-app: Line Listing release <https://github.com/dhis2/line-listing-app/actions/workflows/dhis2-verify-app.yml?query=branch%3Amaster+is%3Afailure|failed>",
"blocks": [
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": ":small_red_triangle_down: :line-listing-app: Line Listing release <https://github.com/dhis2/line-listing-app/actions/workflows/dhis2-verify-app.yml?query=branch%3Amaster+is%3Afailure|failed>"
}
}
]
}
env:
SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }}

report-release-success:
runs-on: ubuntu-latest
needs: release
if: |
success() &&
!cancelled() &&
github.ref == 'refs/heads/master' &&
contains(github.event.head_commit.message, 'chore(release)')
steps:
- name: Checkout code
uses: actions/checkout@master

- name: Extract version
id: extract_version
uses: Saionaro/extract-package-version@v1.2.1

- name: Send success message to analytics-internal-bot slack channel
id: slack
uses: slackapi/slack-github-action@v1.23.0
with:
channel-id: ${{ secrets.SLACK_CHANNEL_ID }}
payload: |
{
"text": ":large_green_circle: :line-listing-app: :tada: Line Listing release succeeded for version: ${{ steps.extract_version.outputs.version }}",
"blocks": [
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": ":large_green_circle: :line-listing-app: :tada: Line Listing version ${{ steps.extract_version.outputs.version }} released <https://github.com/dhis2/line-listing-app/actions/workflows/dhis2-verify-app.yml?query=branch%3Amaster+is%3Asuccess|successfully>"
}
}
]
}
env:
SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }}
8 changes: 4 additions & 4 deletions .github/workflows/dhis2-verify-commits.yml
Original file line number Diff line number Diff line change
@@ -8,8 +8,8 @@ jobs:
lint-pr-title:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: c-hive/gha-yarn-cache@v1
- uses: actions/checkout@v3
- uses: c-hive/gha-yarn-cache@v2
- run: yarn install --frozen-lockfile
- id: commitlint
run: echo ::set-output name=config_path::$(node -e "process.stdout.write(require('@dhis2/cli-style').config.commitlint)")
@@ -20,10 +20,10 @@ jobs:
lint-commits:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3
with:
fetch-depth: 0
- uses: c-hive/gha-yarn-cache@v1
- uses: c-hive/gha-yarn-cache@v2
- run: yarn install --frozen-lockfile
- id: commitlint
run: echo ::set-output name=config_path::$(node -e "process.stdout.write(require('@dhis2/cli-style').config.commitlint)")
73 changes: 73 additions & 0 deletions .github/workflows/e2e-dev.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
name: 'e2e-dev'

on:
workflow_call:
secrets:
baseurl:
required: true
username:
required: true
password:
required: true
recordkey:
required: true

concurrency:
group: e2e-dev-${{ github.workflow}}-${{ github.ref }}
cancel-in-progress: true

defaults:
run:
shell: bash

jobs:
compute-dev-version:
if: "!github.event.push.repository.fork && (github.event.pull_request.draft == false || github.action == 'workflow_dispatch')"
runs-on: ubuntu-latest
outputs:
version: ${{ steps.instance-version.outputs.version }}
steps:
- name: Output dev version
id: instance-version
uses: dhis2/action-instance-version@v1
with:
instance-url: ${{ secrets.baseurl }}
username: ${{ secrets.username }}
password: ${{ secrets.password }}

e2e-dev:
needs: compute-dev-version
runs-on: ubuntu-latest

strategy:
fail-fast: false
matrix:
containers: [1, 2, 3, 4]

steps:
- name: Checkout
uses: actions/checkout@v3

- uses: actions/setup-node@v3
with:
node-version: 18.x

- name: Run e2e tests
uses: cypress-io/github-action@v5
with:
start: yarn d2-app-scripts start
wait-on: 'http://localhost:3000'
wait-on-timeout: 300
record: true
parallel: true
browser: chrome
group: e2e-chrome-parallel-dev
env:
BROWSER: none
CYPRESS_RECORD_KEY: ${{ secrets.recordkey }}
CYPRESS_dhis2BaseUrl: ${{ secrets.baseurl }}
CYPRESS_dhis2InstanceVersion: ${{ needs.compute-dev-version.outputs.version }}
CYPRESS_dhis2Username: ${{ secrets.username }}
CYPRESS_dhis2Password: ${{ secrets.password }}
CYPRESS_networkMode: live
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
121 changes: 121 additions & 0 deletions .github/workflows/e2e-prod.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,121 @@
name: 'e2e-prod'

# Requirements:
#
# - Customize environment variables:
# BASE_URL_INSTANCES: Set the base url for the instances, e.g. https://test.e2e.dhis2.org
# NAME_PATTERN_PROD_INSTANCES: Set the name pattern for your instances. {version} will be replaced by "[majorVersion].[minorVersion]"
# NAME_PATTERN_DEV_INSTANCE: Set the name pattern for your dev instance. {version} will be replaced by "dev"
#
# - Other optional customizations:
# containers: Set the matrix containers array for the e2e-prod job. The number of parallel Cypress instances running for each backend version will equal the array length.
#
# - Set status check as required:
# We recommend setting "e2e-tests-success" as a required step in your workflow.

on:
workflow_call:
secrets:
baseurl:
required: true
username:
required: true
password:
required: true
recordkey:
required: true

env:
BASE_URL_INSTANCES: https://debug.dhis2.org
NAME_PATTERN_PROD_INSTANCES: '{version}'
NAME_PATTERN_DEV_INSTANCE: dev

concurrency:
group: e2e-prod-${{ github.workflow}}-${{ github.ref }}
cancel-in-progress: true

defaults:
run:
shell: bash

jobs:
compute-prod-versions:
if: "!github.event.push.repository.fork && (github.event.pull_request.draft == false || github.action == 'workflow_dispatch')"
runs-on: ubuntu-latest
outputs:
versions: ${{ steps.prod-versions.outputs.versions }}
steps:
- name: Compute dev instance url
id: instance-url
run: |
url=${BASE_URL_INSTANCES%/}/${NAME_PATTERN_DEV_INSTANCE/"{version}"/dev}
echo "url=$url" >> $GITHUB_OUTPUT
echo "url: $url"
- uses: actions/checkout@v3

- name: Output prod version urls
id: prod-versions
uses: dhis2/action-supported-legacy-versions@v1
with:
instance-url-latest: ${{ steps.instance-url.outputs.url }} # can be removed if maxDHIS2Version has been specified
username: ${{ secrets.username }}
password: ${{ secrets.password }}

e2e-prod:
needs: compute-prod-versions
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
versions: ${{ fromJSON(needs.compute-prod-versions.outputs.versions) }}
containers: [1, 2]
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 18.x
- uses: browser-actions/setup-chrome@v1
with:
chrome-version: stable
- run: |
echo "BROWSER_PATH=$(which chrome)" >> $GITHUB_ENV
- name: Compute prod instance url
id: instance-url
run: |
url=${BASE_URL_INSTANCES%/}/${NAME_PATTERN_PROD_INSTANCES/"{version}"/$version}
echo "url=$url" >> $GITHUB_OUTPUT
echo "url: $url"
env:
version: ${{ matrix.versions }}

- name: Run e2e tests
uses: cypress-io/github-action@v5
with:
start: yarn d2-app-scripts start
wait-on: 'http://localhost:3000'
wait-on-timeout: 300
record: true
parallel: true
browser: chrome
group: e2e-chrome-parallel-${{ matrix.versions }}
env:
CI: true
BROWSER: none
CYPRESS_RECORD_KEY: ${{ secrets.recordkey }}
CYPRESS_dhis2BaseUrl: ${{ steps.instance-url.outputs.url }}
CYPRESS_dhis2InstanceVersion: ${{matrix.versions}}
CYPRESS_dhis2Username: ${{ secrets.username }}
CYPRESS_dhis2Password: ${{ secrets.password }}
CYPRESS_networkMode: live
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

e2e-tests-success:
needs: e2e-prod
if: ${{ success() || failure() }}
runs-on: ubuntu-latest
steps:
- run: if [ $result != 'success' ]; then exit 1; fi;
env:
result: ${{ needs.e2e-prod.result }}
7 changes: 4 additions & 3 deletions .github/workflows/nightly.yml
Original file line number Diff line number Diff line change
@@ -11,8 +11,9 @@ name: 'dhis2: nightly'
# This workflow runs the e2e tests on the default branch against dev at 6:20am M-F

on:
schedule:
- cron: '20 6 * * 1-5'
# schedule:
# - cron: '20 5 * * 1-5'
workflow_dispatch:

concurrency:
group: ${{ github.workflow}}-${{ github.ref }}
@@ -24,7 +25,7 @@ defaults:

jobs:
call-workflow-e2e-dev:
uses: dhis2/data-visualizer-app/.github/workflows/e2e-dev.yml@dev
uses: ./.github/workflows/e2e-dev.yml
secrets:
baseurl: ${{ secrets.CYPRESS_DHIS2_BASE_URL_DEV }}
username: ${{ secrets.CYPRESS_DHIS2_USERNAME }}
2 changes: 1 addition & 1 deletion .tx/config
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[main]
host = https://www.transifex.com
lang_map = fa_AF: prs, uz@Cyrl: uz, uz@Latn: uz_Latn
lang_map = fa_AF: prs, uz@Cyrl: uz_UZ_Cyrl, uz@Latn: uz_UZ_Latn

[o:hisp-uio:p:app-line-listing:r:en-pot]
file_filter = i18n/<lang>.po
Loading