Skip to content

Filtering support#4451

Merged
Withalion merged 58 commits into
masterfrom
dev/filtering
Apr 23, 2026
Merged

Filtering support#4451
Withalion merged 58 commits into
masterfrom
dev/filtering

Conversation

@Withalion

Copy link
Copy Markdown
Collaborator

This PR encapsulates all work done for filtering in the mobile app.

The work introduces multiple new UI features showcased below:

  • filtering option in project options
  • filtering floating button on the map
  • filtering page
  • multiple filtering widgets inside the filtering page

tomasMizera and others added 22 commits February 10, 2026 21:29
Implement a filtering system that lets users filter map features
by field values. Supports text, number, and date/datetime range
filters with calendar picker integration.

- FilterController manages filter state, expression generation,
  and layer subset string application
- Filter panel UI with per-layer sections and field-type-aware inputs
- Date filters use MMCalendarDrawer with time picker for datetime
  fields and date-only picker for date fields
- Timezone-aware: converts local time to UTC for GeoPackage comparison
- Seconds/milliseconds normalization for inclusive time ranges
- Individual date clear buttons and range validation
- Filter button on map, settings toggle, feature list integration

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Switch the map filter button from outline to filled icon when
filters are applied, making the active state more visually distinct.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Detect ValueMap/ValueRelation editor widgets and show dropdown filter
instead of text/number input. Options are lazy-loaded via getDropdownOptions()
with search and a 100-item limit for large ValueRelation tables.
Multi-value fields (AllowMulti) use LIKE-based expressions to match
the {k1,k2} storage format. Selected items are always included in
the options list even when beyond the limit.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@Withalion Withalion added this to the 2026.2.0 milestone Apr 14, 2026
@Withalion Withalion added enhancement map tools Something is wrong with recording, geometry editing, splitting, stakeout, .. labels Apr 14, 2026
@github-actions

github-actions Bot commented Apr 14, 2026

Copy link
Copy Markdown

Coverage Report for CI Build 24831658012

Warning

No base build found for commit b5a6431 on master.
Coverage changes can't be calculated without a base build.
If a base build is processing, this comment will update automatically when it completes.

Coverage: 57.805%

Details

  • Patch coverage: No coverable lines changed in this PR.

Uncovered Changes

No uncovered changes found.

Coverage Regressions

Requires a base build to compare against. How to fix this →


Coverage Stats

Coverage Status
Relevant Lines: 15234
Covered Lines: 8806
Line Coverage: 57.8%
Coverage Strength: 99.82 hits per line

💛 - Coveralls

@github-actions

Copy link
Copy Markdown

📦 Build Artifacts Ready

OS Status Build Info Workflow run
macOS Build Build failed or not found. #6689
linux Build 📬 Mergin Maps 67001 x86_64 Expires: 13/07/2026 #6700
win64 Build 📬 Mergin Maps 58841 win64 Expires: 13/07/2026 #5884
Android Build 📬 Mergin Maps 800151 APK [arm64-v8a] Expires: 13/07/2026 #8001
📬 Mergin Maps 800151 APK [arm64-v8a] Google Play Store #8001
Android Build 📬 Mergin Maps 800111 APK [armeabi-v7a] Expires: 13/07/2026 #8001
📬 Mergin Maps 800111 APK [armeabi-v7a] Google Play Store #8001
iOS Build 📬 Build number: 26.04.894011 #8940

@github-actions

Copy link
Copy Markdown

📦 Build Artifacts Ready

OS Status Build Info Workflow run
macOS Build 📬 Mergin Maps 67331 dmg Expires: 20/07/2026 #6733
linux Build 📬 Mergin Maps 67441 x86_64 Expires: 20/07/2026 #6744
win64 Build 📬 Mergin Maps 59281 win64 Expires: 20/07/2026 #5928
Android Build 📬 Mergin Maps 804551 APK [arm64-v8a] Expires: 20/07/2026 #8045
📬 Mergin Maps 804551 APK [arm64-v8a] Google Play Store #8045
Android Build 📬 Mergin Maps 804511 APK [armeabi-v7a] Expires: 20/07/2026 #8045
📬 Mergin Maps 804511 APK [armeabi-v7a] Google Play Store #8045
iOS Build 📬 Build number: 26.04.898411 #8984

@github-actions

Copy link
Copy Markdown

📦 Build Artifacts Ready

OS Status Build Info Workflow run
macOS Build 📬 Mergin Maps 67341 dmg Expires: 20/07/2026 #6734
linux Build 📬 Mergin Maps 67451 x86_64 Expires: 20/07/2026 #6745
win64 Build 📬 Mergin Maps 59291 win64 Expires: 20/07/2026 #5929
Android Build 📬 Mergin Maps 804651 APK [arm64-v8a] Expires: 20/07/2026 #8046
📬 Mergin Maps 804651 APK [arm64-v8a] Google Play Store #8046
Android Build 📬 Mergin Maps 804611 APK [armeabi-v7a] Expires: 20/07/2026 #8046
📬 Mergin Maps 804611 APK [armeabi-v7a] Google Play Store #8046
iOS Build 📬 Build number: 26.04.898511 #8985

@github-actions

Copy link
Copy Markdown

📦 Build Artifacts Ready

OS Status Build Info Workflow run
macOS Build 📬 Mergin Maps 67351 dmg Expires: 20/07/2026 #6735
linux Build 📬 Mergin Maps 67461 x86_64 Expires: 20/07/2026 #6746
win64 Build 📬 Mergin Maps 59301 win64 Expires: 20/07/2026 #5930
Android Build 📬 Mergin Maps 804752 APK [arm64-v8a] Expires: 20/07/2026 #8047
Android Build 📬 Mergin Maps 804711 APK [armeabi-v7a] Expires: 20/07/2026 #8047
iOS Build 📬 Build number: 26.04.898611 #8986

@github-actions

Copy link
Copy Markdown

📦 Build Artifacts Ready

OS Status Build Info Workflow run
macOS Build 📬 Mergin Maps 67371 dmg Expires: 21/07/2026 #6737
linux Build 📬 Mergin Maps 67481 x86_64 Expires: 21/07/2026 #6748
win64 Build 📬 Mergin Maps 59321 win64 Expires: 21/07/2026 #5932
Android Build 📬 Mergin Maps 804911 APK [armeabi-v7a] Expires: 21/07/2026 #8049
📬 Mergin Maps 804911 APK [armeabi-v7a] Google Play Store #8049
Android Build 📬 Mergin Maps 804951 APK [arm64-v8a] Expires: 21/07/2026 #8049
📬 Mergin Maps 804951 APK [arm64-v8a] Google Play Store #8049
iOS Build 📬 Build number: 26.04.898811 #8988

@github-actions

Copy link
Copy Markdown

📦 Build Artifacts Ready

OS Status Build Info Workflow run
macOS Build 📬 Mergin Maps 67391 dmg Expires: 21/07/2026 #6739
linux Build 📬 Mergin Maps 67501 x86_64 Expires: 21/07/2026 #6750
win64 Build 📬 Mergin Maps 59341 win64 Expires: 21/07/2026 #5934
Android Build 📬 Mergin Maps 805151 APK [arm64-v8a] Expires: 21/07/2026 #8051
📬 Mergin Maps 805151 APK [arm64-v8a] Google Play Store #8051
Android Build 📬 Mergin Maps 805111 APK [armeabi-v7a] Expires: 21/07/2026 #8051
📬 Mergin Maps 805111 APK [armeabi-v7a] Google Play Store #8051
iOS Build 📬 Build number: 26.04.899011 #8990

@github-actions

Copy link
Copy Markdown

📦 Build Artifacts Ready

OS Status Build Info Workflow run
macOS Build 📬 Mergin Maps 67411 dmg Expires: 22/07/2026 #6741
linux Build 📬 Mergin Maps 67521 x86_64 Expires: 22/07/2026 #6752
win64 Build 📬 Mergin Maps 59361 win64 Expires: 22/07/2026 #5936
Android Build 📬 Mergin Maps 805351 APK [arm64-v8a] Expires: 22/07/2026 #8053
📬 Mergin Maps 805351 APK [arm64-v8a] Google Play Store #8053
Android Build 📬 Mergin Maps 805311 APK [armeabi-v7a] Expires: 22/07/2026 #8053
📬 Mergin Maps 805311 APK [armeabi-v7a] Google Play Store #8053
iOS Build 📬 Build number: 26.04.899211 #8992

Comment thread app/filter/filtercontroller.h
Comment thread app/qml/filters/MMFilterChip.qml Outdated
Comment thread app/qml/filters/MMFiltersPanel.qml Outdated
Comment thread app/qml/filters/MMFiltersPanel.qml Outdated
Comment thread app/filter/uniquevaluesfiltermodel.cpp Outdated
Comment thread app/qml/components/MMListMultiselectDrawer.qml Outdated
Comment thread app/qml/filters/components/MMFilterDateInput.qml
Comment thread app/qml/filters/components/MMFilterTextEditor.qml Outdated
Comment thread app/qml/filters/components/MMFilterTextInput.qml
Comment thread docs/filtering-wireframes.jpg Outdated
Comment thread app/layerfeaturesmodel.h Outdated
Comment thread app/qml/form/editors/MMFormGalleryEditor.qml Outdated
Comment thread app/qml/form/editors/MMFormRelationEditor.qml Outdated
Comment thread app/qml/layers/MMFeaturesListPage.qml Outdated
@github-actions

Copy link
Copy Markdown

📦 Build Artifacts Ready

OS Status Build Info Workflow run
macOS Build 📬 Mergin Maps 67421 dmg Expires: 22/07/2026 #6742
linux Build 📬 Mergin Maps 67531 x86_64 Expires: 22/07/2026 #6753
win64 Build 📬 Mergin Maps 59371 win64 Expires: 22/07/2026 #5937
Android Build 📬 Mergin Maps 805411 APK [armeabi-v7a] Expires: 22/07/2026 #8054
📬 Mergin Maps 805411 APK [armeabi-v7a] Google Play Store #8054
Android Build 📬 Mergin Maps 805451 APK [arm64-v8a] Expires: 22/07/2026 #8054
📬 Mergin Maps 805451 APK [arm64-v8a] Google Play Store #8054
iOS Build 📬 Build number: 26.04.899311 #8993

Comment thread app/filter/filtercontroller.cpp
Comment thread app/filter/filtercontroller.cpp
Comment thread app/filter/uniquevaluesfiltermodel.cpp Outdated
text: root.currentValue && root.currentValue[0] !== undefined ? root.currentValue[0] : ""
errorMsg: rangeRow.rangeInvalid ? qsTr( "\"Min\" must be less than \"Max\"" ) : ""

onTextChanged: {

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For future - we need to use onTextEdited instead

Comment thread app/qml/filters/components/MMFilterRangeInput.qml Outdated
@Withalion Withalion merged commit eaaa44f into master Apr 23, 2026
11 of 12 checks passed
@Withalion Withalion deleted the dev/filtering branch April 23, 2026 14:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement map tools Something is wrong with recording, geometry editing, splitting, stakeout, ..

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants