Skip to content

Commit 7287ec6

Browse files
authored
Merge pull request #4110 from dhis2/release/3.2.0
Release 3.2.0 [skip size]
2 parents 57ea376 + 6ee53c8 commit 7287ec6

File tree

621 files changed

+19257
-17512
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

621 files changed

+19257
-17512
lines changed

.github/pull_request_template.md

Lines changed: 15 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,18 @@
11
## Description
2-
Please include a summary of the change and include the related jira issue if it exists.
32

4-
[ jira issue ](https://dhis2.atlassian.net/browse/ANDROAPP-
3+
Summarize the change and link
4+
the [JIRA issue](https://dhis2.atlassian.net/browse/ANDROAPP-<ISSUE-NUMBER>).
55

6-
## Solution description
7-
If this PR is a fix include a brief description on how the issue is solved.
8-
## Covered unit test cases
9-
Describe the tests that you ran to verify your changes.
10-
## Where did you test this issue?
11-
- [ ] Smartphone Emulator
12-
- [ ] Tablet Emulator
13-
- [ ] Smartphone
14-
- [ ] Tablet
15-
## Which Android versions did you test this issue?
16-
- [ ] 4.4
17-
- [ ] 5.X - 6.X
18-
- [ ] 7.X
19-
- [ ] 8.X
20-
- [ ] 9.X - 10.X
21-
- [ ] 11.X - 13.X
22-
- [ ] Other
23-
## Checklist
24-
- [ ] My code follows the style guidelines of this project
25-
- [ ] I have performed a self-review of my own code
6+
## Solution Description
7+
8+
Briefly describe how the issue is resolved.
9+
10+
## Title Format
11+
12+
`<type>: [JIRA-ISSUE] Description`
13+
14+
- `<type>` Follow [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/) (e.g., `fix`, `feat`).
15+
- Add the **JIRA issue number** in `[ANDROAPP-XXXX]`.
16+
- Include a brief description.
17+
- Append `[skip ci]` to skip CI if needed.
18+
- Append `[skip size]` to skip PR size limitation.

.github/workflows/build-release-candidate.yml

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ on:
1313

1414
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
1515
jobs:
16-
# This workflow contains a single job called "greet"
17-
greet:
16+
17+
build-release-candidate:
1818
# The type of runner that the job will run on
1919
runs-on: ubuntu-latest
2020

@@ -44,7 +44,7 @@ jobs:
4444
fileName: 'dhis_keystore.jks'
4545
encodedString: ${{ secrets.KEYSTORE }}
4646
- name: build prod
47-
run: ./gradlew app:assembleDhisRelease
47+
run: ./gradlew app:assembleDhisRelease app:assembleDhisPlayServicesRelease
4848
env:
4949
SENTRY_DSN: ${{ secrets.SENTRY_DSN }}
5050
SIGNING_KEY_ALIAS: ${{ secrets.KEY_ALIAS }}
@@ -57,9 +57,16 @@ jobs:
5757
id: read-version
5858
run: echo "::set-output name=vName::$(grep 'vName' libs.versions.toml | awk -F' = ' '{print $2}' | tr -d '"')"
5959

60-
# Upload Artifact Build
61-
- name: Upload Android artifacts
62-
uses: actions/upload-artifact@v3
60+
# Upload DhisRelease APK
61+
- name: Upload DhisRelease APK
62+
uses: actions/upload-artifact@v4.6.1
6363
with:
64-
name: ${{ env.repository_name }} - Android APK
64+
name: ${{ env.repository_name }} - DhisRelease APK
6565
path: ${{ env.main_project_module }}/build/outputs/apk/dhis/release/dhis2-v${{ steps.read-version.outputs.vName }}.apk
66+
67+
# Upload DhisPlayServicesRelease APK
68+
- name: Upload DhisPlayServicesRelease APK
69+
uses: actions/[email protected]
70+
with:
71+
name: ${{ env.repository_name }} - DhisPlayServicesRelease APK
72+
path: ${{ env.main_project_module }}/build/outputs/apk/dhisPlayServices/release/dhis2-v${{ steps.read-version.outputs.vName }}-googlePlay.apk

.github/workflows/continuous-delivery.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,8 @@ jobs:
4545
# Create APK Debug
4646
- name: Build apk debug project (APK) - ${{ env.main_project_module }} module
4747
run: ./gradlew assembleDhisDebug
48+
env:
49+
SENTRY_DSN: ${{ secrets.SENTRY_DSN }}
4850

4951
- name: Read version name from file
5052
working-directory: ./gradle

.tx/config

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,3 +64,19 @@ source_file = tracker/src/main/res/values/strings.xml
6464
source_lang = en
6565
type = ANDROID
6666
minimum_perc = 0
67+
68+
[o:hisp-uio:p:dhis2-android-capture-app:r:aggregates-strings-xml]
69+
file_filter = aggregates/src/commonMain/composeResources/values-<lang>/strings.xml
70+
source_file = aggregates/src/commonMain/composeResources/values/strings.xml
71+
source_lang = en
72+
type = ANDROID
73+
minimum_perc = 0
74+
resource_name = Aggregates
75+
76+
[o:hisp-uio:p:dhis2-android-capture-app:r:commonskmm-strings-xml]
77+
file_filter = commonskmm/src/commonMain/composeResources/values-<lang>/strings.xml
78+
source_file = commonskmm/src/commonMain/composeResources/values/strings.xml
79+
source_lang = en
80+
type = ANDROID
81+
minimum_perc = 0
82+
resource_name = CommonsKMM

Jenkinsfile

Lines changed: 61 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,24 @@ pipeline {
1212

1313
options {
1414
buildDiscarder(logRotator(daysToKeepStr: '5'))
15-
timeout(time: 50)
1615
disableConcurrentBuilds(abortPrevious: true)
16+
skipStagesAfterUnstable()
1717
}
1818

1919
stages {
20+
stage('Check for [skip ci]') {
21+
when {
22+
expression {
23+
return isSkipCI()
24+
}
25+
}
26+
steps {
27+
script {
28+
currentBuild.result = 'UNSTABLE' // Mark build as a warning instead of an error
29+
echo "⚠️ Warning: Skipping CI because '[skip ci]' was found in the PR title or description."
30+
}
31+
}
32+
}
2033
stage('Change to JAVA 17') {
2134
steps {
2235
script {
@@ -26,6 +39,24 @@ pipeline {
2639
}
2740
}
2841
}
42+
stage('Check PR Size') {
43+
when {
44+
expression {
45+
return !isSkipSizeCheck()
46+
}
47+
}
48+
environment {
49+
GIT_BRANCH = "${env.CHANGE_BRANCH}"
50+
GIT_BRANCH_DEST = "${env.CHANGE_TARGET == null ? '' : env.CHANGE_TARGET}"
51+
}
52+
steps {
53+
script {
54+
echo "Checking PR Size against ${env.CHANGE_TARGET ?: 'None (CI build)'}"
55+
sh 'chmod +x ./scripts/check_pr_size.sh'
56+
sh './scripts/check_pr_size.sh'
57+
}
58+
}
59+
}
2960
stage('Lint Check') {
3061
steps {
3162
script {
@@ -74,24 +105,31 @@ pipeline {
74105
}
75106
}
76107
}
77-
stage('Deploy compose-table module Tests') {
108+
stage('Deploy and Run UI Tests') {
78109
environment {
79110
BROWSERSTACK = credentials('android-browserstack')
80-
compose_table_apk = sh(returnStdout: true, script: 'find compose-table/build/outputs -iname "*.apk" | sed -n 1p')
81-
compose_table_apk_path = "${env.WORKSPACE}/${compose_table_apk}"
82-
buildTag = "${env.GIT_BRANCH} - table"
111+
app_apk = sh(returnStdout: true, script: 'find app/build/outputs/apk/dhisUITesting -iname "*.apk"')
112+
test_apk = sh(returnStdout: true, script: 'find app/build/outputs/apk/androidTest -iname "*.apk"')
113+
app_apk_path = "${env.WORKSPACE}/${app_apk}"
114+
test_apk_path = "${env.WORKSPACE}/${test_apk}"
115+
buildTag = "${env.GIT_BRANCH}"
83116
}
84117
steps {
85118
dir("${env.WORKSPACE}/scripts"){
86119
script {
87-
echo 'Browserstack deployment and running compose-table module tests'
88-
sh 'chmod +x browserstackJenkinsCompose.sh'
89-
sh './browserstackJenkinsCompose.sh'
120+
echo 'Browserstack deployment and running tests'
121+
sh 'chmod +x browserstackJenkins.sh'
122+
sh './browserstackJenkins.sh'
90123
}
91124
}
92125
}
93126
}
94-
stage('Deploy and Run UI Tests') {
127+
stage('Run UI Tests in Landscape') {
128+
when {
129+
expression {
130+
return JOB_NAME.startsWith('android-multibranch-PUSH')
131+
}
132+
}
95133
environment {
96134
BROWSERSTACK = credentials('android-browserstack')
97135
app_apk = sh(returnStdout: true, script: 'find app/build/outputs/apk/dhisUITesting -iname "*.apk"')
@@ -104,8 +142,8 @@ pipeline {
104142
dir("${env.WORKSPACE}/scripts"){
105143
script {
106144
echo 'Browserstack deployment and running tests'
107-
sh 'chmod +x browserstackJenkins.sh'
108-
sh './browserstackJenkins.sh'
145+
sh 'chmod +x browserstackJenkinsLandscape.sh'
146+
sh './browserstackJenkinsLandscape.sh'
109147
}
110148
}
111149
}
@@ -163,3 +201,15 @@ def custom_msg(){
163201
def JENKINS_LOG= "*Job:* $JOB_NAME\n *Branch:* $BRANCH_NAME\n *Build Number:* $BUILD_NUMBER (<${BUILD_URL}|Open>)"
164202
return JENKINS_LOG
165203
}
204+
205+
def isSkipCI() {
206+
def prTitle = env.CHANGE_TITLE ?: ""
207+
def prDescription = env.CHANGE_DESCRIPTION ?: ""
208+
return (prTitle.contains("[skip ci]") || prDescription.contains("[skip ci]"))
209+
}
210+
211+
def isSkipSizeCheck() {
212+
def prTitle = env.CHANGE_TITLE ?: ""
213+
def prDescription = env.CHANGE_DESCRIPTION ?: ""
214+
return (prTitle.contains("[skip size]") || prDescription.contains("[skip size]"))
215+
}

RELEASE.md

Lines changed: 143 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,146 @@
1-
# Release notes - Android App for DHIS2 - 3.1.1.1
1+
<table>
2+
<tr>
3+
<td>
4+
The new <strong>DHIS2 Android App</strong> allows offline data capture across all DHIS2 data models. Data and metadata are automatically synchronized whenever there is internet access, always keeping the most relevant data for the logged user in the device.
5+
The app is compatible and we support <strong>42</strong>, <strong>41</strong>, <strong>40</strong>.
6+
</td>
7+
</tr>
8+
<tr>
9+
<td colspan="2" bgcolor="white">
210

311
### Bug
412

5-
[ANDROAPP-6797](https://dhis2.atlassian.net/browse/ANDROAPP-6797) Update rule engine
13+
[ANDROAPP-5770](https://dhis2.atlassian.net/browse/ANDROAPP-5770) IllegalStateException: Expected BringIntoViewRequester to not be used before parents are placed.
14+
15+
[ANDROAPP-6616](https://dhis2.atlassian.net/browse/ANDROAPP-6616) Cannot sync after referring TEI to an org unit where user does not have write access
16+
17+
[ANDROAPP-6662](https://dhis2.atlassian.net/browse/ANDROAPP-6662) \[Data Set\] App crashes after exiting the org unit dialog \(using the x\)
18+
19+
[ANDROAPP-6704](https://dhis2.atlassian.net/browse/ANDROAPP-6704) Large option set renders inconsistenly in DS
20+
21+
[ANDROAPP-6740](https://dhis2.atlassian.net/browse/ANDROAPP-6740) Incorrect order when displaying rules in feedback/indicator widget
22+
23+
[ANDROAPP-6754](https://dhis2.atlassian.net/browse/ANDROAPP-6754) Update Bottom sheet dialog to new usage for edge to edge devices
24+
25+
[ANDROAPP-6761](https://dhis2.atlassian.net/browse/ANDROAPP-6761) User able to create new events after completing enrollment
26+
27+
[ANDROAPP-6775](https://dhis2.atlassian.net/browse/ANDROAPP-6775) Selecting report periods when creating a datasets can freeze the app
28+
29+
[ANDROAPP-6801](https://dhis2.atlassian.net/browse/ANDROAPP-6801) Crash when using breaking the glass to access to a TEI
30+
31+
[ANDROAPP-6826](https://dhis2.atlassian.net/browse/ANDROAPP-6826) Aggregates Total column is not been displayed
32+
33+
[ANDROAPP-6854](https://dhis2.atlassian.net/browse/ANDROAPP-6854) Add edge to edge to DatasetInstance screen
34+
35+
[ANDROAPP-6867](https://dhis2.atlassian.net/browse/ANDROAPP-6867) Make whole data set table screen scrollable
36+
37+
[ANDROAPP-6873](https://dhis2.atlassian.net/browse/ANDROAPP-6873) Clear button not updating value in cell for certain inputs
38+
39+
[ANDROAPP-6874](https://dhis2.atlassian.net/browse/ANDROAPP-6874) Move a category to row is not working as expected
40+
41+
[ANDROAPP-6880](https://dhis2.atlassian.net/browse/ANDROAPP-6880) Clear input dialog and cell selection when changing section
42+
43+
[ANDROAPP-6882](https://dhis2.atlassian.net/browse/ANDROAPP-6882) Cursor slides to the end when typing
44+
45+
[ANDROAPP-6883](https://dhis2.atlassian.net/browse/ANDROAPP-6883) Input dialog is hidden behind keyboard on certain devices
46+
47+
[ANDROAPP-6884](https://dhis2.atlassian.net/browse/ANDROAPP-6884) Period tags in section details is not displaying in user friendly format
48+
49+
[ANDROAPP-6886](https://dhis2.atlassian.net/browse/ANDROAPP-6886) Some forms are crashing
50+
51+
[ANDROAPP-6887](https://dhis2.atlassian.net/browse/ANDROAPP-6887) Keyboard type not changing when navigate from one data type to other using next
52+
53+
[ANDROAPP-6888](https://dhis2.atlassian.net/browse/ANDROAPP-6888) Button to reset cell size doesnt exist
54+
55+
[ANDROAPP-6889](https://dhis2.atlassian.net/browse/ANDROAPP-6889) Multiple cells are being selected simultaneously, even disabled total cells.
56+
57+
[ANDROAPP-6892](https://dhis2.atlassian.net/browse/ANDROAPP-6892) Latest automatically generated apks are crashing when opening any dataset
58+
59+
[ANDROAPP-6895](https://dhis2.atlassian.net/browse/ANDROAPP-6895) Handling Errors in cells
60+
61+
[ANDROAPP-6896](https://dhis2.atlassian.net/browse/ANDROAPP-6896) Input Field Error: Missing Red Line and Label in inputDialog
62+
63+
[ANDROAPP-6899](https://dhis2.atlassian.net/browse/ANDROAPP-6899) Implement persist table resizing layout
64+
65+
[ANDROAPP-6900](https://dhis2.atlassian.net/browse/ANDROAPP-6900) Suppress 'Default' Text in Input Shell with Single 'Value' Column
66+
67+
[ANDROAPP-6902](https://dhis2.atlassian.net/browse/ANDROAPP-6902) Unable to save coordinates
68+
69+
[ANDROAPP-6903](https://dhis2.atlassian.net/browse/ANDROAPP-6903) Tapping on the "x" in the org unit dialog deletes the value in the cell
70+
71+
[ANDROAPP-6911](https://dhis2.atlassian.net/browse/ANDROAPP-6911) Missing rowHeaders
72+
73+
[ANDROAPP-6913](https://dhis2.atlassian.net/browse/ANDROAPP-6913) Resized table is lost when moving between sections
74+
75+
[ANDROAPP-6915](https://dhis2.atlassian.net/browse/ANDROAPP-6915) Lateral scrolling alignment issues
76+
77+
[ANDROAPP-6916](https://dhis2.atlassian.net/browse/ANDROAPP-6916) No space between column headers
78+
79+
[ANDROAPP-6922](https://dhis2.atlassian.net/browse/ANDROAPP-6922) unable to delete value from cell
80+
81+
[ANDROAPP-6934](https://dhis2.atlassian.net/browse/ANDROAPP-6934) Unable to re-open data set
82+
83+
[ANDROAPP-6936](https://dhis2.atlassian.net/browse/ANDROAPP-6936) Auto-Scroll Misalignment on Cell Selection
84+
85+
[ANDROAPP-6963](https://dhis2.atlassian.net/browse/ANDROAPP-6963) Datasets: unable to select option in multiselect value type
86+
87+
[ANDROAPP-6981](https://dhis2.atlassian.net/browse/ANDROAPP-6981) Incorrect display of greyed fields
88+
89+
[ANDROAPP-6982](https://dhis2.atlassian.net/browse/ANDROAPP-6982) Unable to add "." or "-" in numeric value types
90+
91+
[ANDROAPP-7005](https://dhis2.atlassian.net/browse/ANDROAPP-7005) Unable to download APK "software update" in Android versions > 10
92+
93+
### Feature
94+
95+
[ANDROAPP-6371](https://dhis2.atlassian.net/browse/ANDROAPP-6371) Implement period picker in data sets
96+
97+
[ANDROAPP-6426](https://dhis2.atlassian.net/browse/ANDROAPP-6426) Quick actions in TEI Dashboard
98+
99+
[ANDROAPP-6469](https://dhis2.atlassian.net/browse/ANDROAPP-6469) Display GPS coordinate accuracy in UI \[Data Set\]
100+
101+
[ANDROAPP-6638](https://dhis2.atlassian.net/browse/ANDROAPP-6638) Support feature: Disable automatic grouping of data elements
102+
103+
[ANDROAPP-6640](https://dhis2.atlassian.net/browse/ANDROAPP-6640) Support feature: Pivot: categories as rows, data elements as columns
104+
105+
[ANDROAPP-6641](https://dhis2.atlassian.net/browse/ANDROAPP-6641) Support feature: Move a category to rows
106+
107+
[ANDROAPP-6642](https://dhis2.atlassian.net/browse/ANDROAPP-6642) Support feature: Content before and after a section
108+
109+
[ANDROAPP-6758](https://dhis2.atlassian.net/browse/ANDROAPP-6758) Implement ListCardTitle overflow in Map Cards
110+
111+
[ANDROAPP-6767](https://dhis2.atlassian.net/browse/ANDROAPP-6767) Support feature: "Render vertically"
112+
113+
[ANDROAPP-6788](https://dhis2.atlassian.net/browse/ANDROAPP-6788) Implement period picker in filters
114+
115+
[ANDROAPP-6796](https://dhis2.atlassian.net/browse/ANDROAPP-6796) Merge all category combinations in one table
116+
117+
[ANDROAPP-6802](https://dhis2.atlassian.net/browse/ANDROAPP-6802) DatasetInstanceScreen: Saving and complete workflow
118+
119+
[ANDROAPP-6812](https://dhis2.atlassian.net/browse/ANDROAPP-6812) Support feature: multi header rows
120+
121+
[ANDROAPP-6832](https://dhis2.atlassian.net/browse/ANDROAPP-6832) Implement InputDialog Text value types actions
122+
123+
[ANDROAPP-6833](https://dhis2.atlassian.net/browse/ANDROAPP-6833) Implement dates \(date, datetime, time\) value types actions
124+
125+
[ANDROAPP-6834](https://dhis2.atlassian.net/browse/ANDROAPP-6834) Implement InputDialog File and Image value types actions
126+
127+
[ANDROAPP-6835](https://dhis2.atlassian.net/browse/ANDROAPP-6835) Implement InputDialog Org Unit value type actions
128+
129+
[ANDROAPP-6836](https://dhis2.atlassian.net/browse/ANDROAPP-6836) Implement go to next cell
130+
131+
[ANDROAPP-6837](https://dhis2.atlassian.net/browse/ANDROAPP-6837) Implement validation error parsing
132+
133+
[ANDROAPP-6841](https://dhis2.atlassian.net/browse/ANDROAPP-6841) Support feature: Title and subtitle
134+
135+
[ANDROAPP-6855](https://dhis2.atlassian.net/browse/ANDROAPP-6855) Implement legends in dataset input dialog
136+
137+
[ANDROAPP-6864](https://dhis2.atlassian.net/browse/ANDROAPP-6864) Implement optionset input \[Data Set\]
138+
139+
[ANDROAPP-6878](https://dhis2.atlassian.net/browse/ANDROAPP-6878) Yes Only type cell layout
140+
141+
Remember to check the [Android app documentation](https://docs.dhis2.org/en/use/android-app/about-this-guide.html) for detailed information of the features included in the App and how to configure DHIS2 to use it.
142+
143+
For support contact us at [DHIS2 community](https://community.dhis2.org) if you have any issue.
144+
</td>
145+
</tr>
146+
</table>

aggregates/.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
/build

0 commit comments

Comments
 (0)