ARK-Builders / ARK-Builders/ark-android

Query modes

Open
#17 2 comments 0 reactions 0 assignees View on GitHub
Dominant language
Kotlin
Stars
0
Forks
1
PR merge metrics
No merged PRs in 30d

Description

The app uses "tags selector" to specify tags, i.e. it outputs some set of tags.
But there are multiple ways to interpret a selection into subset of resources.
Of the following 1, 2 and 5 seem to be most natural and modes 3, 4 might be useful sometimes.

1. _Normal mode_ (intersection)

Every resource which is **marked with all of specified tags** is displayed.
I.e. resources which contain extra tags are also displayed.

2. _Focus mode_

This mode is stricter: only those resources which are **marked with all
of specified tags and none of non-specified tags** are displayed.
I.e. resources which contain extra tags are filtered-out.

3. _Extra mode_

This mode is derived from 1 and 2: we apply Normal mode
and filter-out all resources from Focus mode.
I.e. resources which are **marked with all of specified tags
and at least one of non-specified tags** are displayed.
We can also, on the opposite, define Focus mode via Extra mode.

4. _Inversion mode_

This mode is inverted Normal mode: we take the whole
collection and filter resources which are marked with all of specified tags out.
I.e. we display only those resources which are **not marked with any of specified tags**.

5. _Union mode_

We display all resources **marked with at least one of specified tags**.

To illustrate these modes, let's take some collection of resources:
* Resource _1_ is marked with tag _a_
* Resource _2_ is marked with tag _b_
* Resource _3_ is marked with tag _c_
* Resource _4_ is marked with tags _a, b_
* Resource _5_ is marked with tags _b, c_
* Resource _6_ is marked with tags _a, c_
* Resource _7_ is marked with tags _a, b, c_
* Resource _8_ isn't marked with any tag

Examples of queries on this collection:

1. Empty query (beginning of user's interaction)

_Normal_ mode outputs _1, 2, 3, 4, 5, 6, 7, 8_
_Focus_ mode outputs _8_
_Extra_ mode outputs _1, 2, 3, 4, 5, 6, 7_
_Inversion_ mode outputs _nothing_
_Union_ mode outputs _nothing_

2. Single tag query, e.g. _{a}_

_Normal_ mode outputs _1, 4, 6, 7_
_Focus_ mode outputs _1_
_Extra_ mode outputs _4, 6, 7_
_Inversion_ mode outputs _2, 3, 5, 8_
_Union_ mode outputs _1, 4, 6, 7_

3. Two tags query, e.g. _{a, b}_

_Normal_ mode outputs _4, 7_
_Focus_ mode outputs _4_
_Extra_ mode outputs _7_
_Inversion_ mode outputs _1, 2, 3, 5, 6, 8_
_Union_ mode outputs _1, 2, 4, 5, 6, 7_

4. Three tags query, e.g. _{a, b, c}_

_Normal_ mode outputs _7_
_Focus_ mode outputs _7_
_Extra_ mode outputs _nothing_
_Inversion_ mode outputs _1, 2, 3, 4, 5, 6, 8_
_Union_ mode outputs _1, 2, 3, 4, 5, 6, 7_

Contributor guide

No contributing guide indexed for this repository

Research direction

No files or tests are named. Start by locating the tags selector and resource-filtering entry points, then compare their behavior with the five modes and examples in this issue; done means the selected mode returns the specified resources for empty, single-tag, two-tag, and three-tag queries.

Written by the indexing model from the issue text.

Assessment

Tech stack
kotlin
Domain
mobile-dev, search
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.