Skip to content

[Epic] GSAK filter parity — gap analysis & roadmap #821

Description

@AgreeDK

Background

Following Facebook/community feedback (incl. #673 and Brian Hart's comment)
requesting more GSAK-style filter capabilities. This issue tracks a full
gap analysis between OpenSAK's filter dialog and GSAK's, based on 9
screenshots of GSAK's filter dialog compared against the current
filter_dialog.py/filters/engine.py implementation.

This is a tracking issue, not something to implement in one go. Individual
checklist items should be split into their own issue when picked up (per
usual workflow — issue created just before the code, not all at once).

Already at parity (no action needed)

  • Attributes tab: full parity — tri-state Yes/No/Any per attribute +
    ALL/ANY-of mode toggle
  • General tab covers: name, GC code, placed-by, owner, cache type, size,
    D/T (as a from/to range — arguably more flexible than GSAK's single
    operator), distance, found/availability, premium, trackables present,
    corrected coordinates
  • Misc tab covers: country/state/county, user flag, DNF, first-to-find,
    favorite points
  • Polygon/line filtering — already tracked in Allow filtering by polygon #680 and Support for Custom Polygons for Challenges #184, not
    duplicated here

Gaps

1. Text-field operators (core of Brian Hart's comment on #673)

Every text field (name, owner, placed-by, country/state/county, GC code)
only supports "Contains". GSAK offers Contains / Does not contain /
Equals / Does not equal / Empty / Not empty / RegEx per field.

2. Global "Invert filter" checkbox

GSAK's General tab has a top-level "Reverse filter" checkbox that negates
the entire filter set at once. This is a general-purpose way to cover most
"hide X" requests (e.g. the "hide my own caches" request) without adding a
dedicated operator to every single field.

3. Logs tab — missing entirely

Log date, log-type checkboxes (Found it, DNF, Archive, Announcement,
Needs Maintenance, etc.), search-in-logs scope, "logged by" a specific
person (exact match / wildcard / regex / GC login ID).

4. Children tab — missing entirely

Filter the cache list by child-waypoint properties: code, type, date,
name, comment, created-by-user, count.

5. Custom tab — missing entirely

User-defined custom fields. Requires a schema change (custom field
definitions), larger separate feature — lowest priority of this list.

6. Dates tab — 4 of 8 GSAK date fields missing

Have: placed date, found date, DNF date, last log date.
Missing: created date, last GPX import date, last updated-by-user date,
last modified date.

7. Smaller field gaps

  • Direction-from-center-point filter (NW/N/NE/E/SE/S/SW/W)
  • "Found by me X times" (count-based; found_log_count already exists on
    the model)
  • "Has child waypoints" yes/no
  • "Has personal notes" yes/no
  • Trackable name search (currently only has/doesn't-have)
  • RegEx toggle on the Text Search tab

Out of scope for this issue

Suggested next steps

  • Split out "text-field operators" as its own issue (likely the
    highest-impact item)
  • Split out "global invert filter" as its own issue
  • Split out "Logs tab" as its own issue
  • Split out "Children tab" as its own issue
  • Evaluate "Custom tab" — likely deferred, larger scope
  • Split out remaining Dates-tab fields as its own issue
  • Split out smaller field gaps, group as convenient

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions