Skip to content

Commit

Permalink
Group field guide by category
Browse files Browse the repository at this point in the history
Signed-off-by: Kyle Corry <kylecorry31@gmail.com>
  • Loading branch information
kylecorry31 committed Jan 10, 2025
1 parent eac61f4 commit 8449964
Show file tree
Hide file tree
Showing 13 changed files with 319 additions and 97 deletions.
Original file line number Diff line number Diff line change
@@ -1,14 +1,37 @@
package com.kylecorry.trail_sense.tools.field_guide.domain

import com.kylecorry.trail_sense.shared.data.Identifiable
import com.kylecorry.trail_sense.shared.withId

data class FieldGuidePage(
override val id: Long,
val name: String,
val images: List<String> = emptyList(),
val tags: List<FieldGuidePageTag> = emptyList(),
val directTags: List<FieldGuidePageTag> = emptyList(),
val notes: String? = null,

// User specific fields (not exported)
val sightings: List<Sighting> = emptyList(),
) : Identifiable
) : Identifiable {
val tags: List<FieldGuidePageTag> by lazy {
val tagQueue = directTags.toMutableList()
val tags = mutableListOf<FieldGuidePageTag>()
while (tagQueue.isNotEmpty()) {
val tag = tagQueue.removeAt(0)
if (tags.any { it.id == tag.id }) {
continue
}
tags.add(tag)
val parent = tag.parentId?.let { FieldGuidePageTag.entries.withId(it) }
if (parent != null) {
tagQueue.add(parent)
}
}

if (tags.none { it.type == FieldGuidePageTagType.Classification }) {
tags.add(FieldGuidePageTag.Other)
}

tags
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ package com.kylecorry.trail_sense.tools.field_guide.domain
import com.kylecorry.trail_sense.shared.data.Identifiable

enum class FieldGuidePageTagType {
Continent,
Location,
Habitat,
Classification,
ActivityPattern,
Expand All @@ -12,80 +12,97 @@ enum class FieldGuidePageTagType {

enum class FieldGuidePageTag(
override val id: Long,
val type: FieldGuidePageTagType
val type: FieldGuidePageTagType,
val parentId: Long? = null
) : Identifiable {
Africa(1, FieldGuidePageTagType.Continent),
Antarctica(2, FieldGuidePageTagType.Continent),
Asia(3, FieldGuidePageTagType.Continent),
Australia(4, FieldGuidePageTagType.Continent),
Europe(5, FieldGuidePageTagType.Continent),
NorthAmerica(6, FieldGuidePageTagType.Continent),
SouthAmerica(7, FieldGuidePageTagType.Continent),
Plant(8, FieldGuidePageTagType.Classification),
Animal(9, FieldGuidePageTagType.Classification),
Fungus(10, FieldGuidePageTagType.Classification),
Bird(11, FieldGuidePageTagType.Classification),
Mammal(12, FieldGuidePageTagType.Classification),
Reptile(13, FieldGuidePageTagType.Classification),
Amphibian(14, FieldGuidePageTagType.Classification),
Fish(15, FieldGuidePageTagType.Classification),
Insect(16, FieldGuidePageTagType.Classification),
Arachnid(17, FieldGuidePageTagType.Classification),
Crustacean(18, FieldGuidePageTagType.Classification),
Mollusk(19, FieldGuidePageTagType.Classification),
Forest(20, FieldGuidePageTagType.Habitat),
// Location
Africa(1, FieldGuidePageTagType.Location),
Antarctica(2, FieldGuidePageTagType.Location),
Asia(3, FieldGuidePageTagType.Location),
Australia(4, FieldGuidePageTagType.Location),
Europe(5, FieldGuidePageTagType.Location),
NorthAmerica(6, FieldGuidePageTagType.Location),
SouthAmerica(7, FieldGuidePageTagType.Location),

// Classification
Plant(100, FieldGuidePageTagType.Classification),
Animal(101, FieldGuidePageTagType.Classification),
Fungus(102, FieldGuidePageTagType.Classification),
Bird(103, FieldGuidePageTagType.Classification, 101),
Mammal(104, FieldGuidePageTagType.Classification, 101),
Reptile(105, FieldGuidePageTagType.Classification, 101),
Amphibian(106, FieldGuidePageTagType.Classification, 101),
Fish(107, FieldGuidePageTagType.Classification, 101),
Invertebrate(108, FieldGuidePageTagType.Classification, 101),
Rock(109, FieldGuidePageTagType.Classification),
Insect(110, FieldGuidePageTagType.Classification, 108),
Arachnid(111, FieldGuidePageTagType.Classification, 108),
Crustacean(112, FieldGuidePageTagType.Classification, 108),
Mollusk(113, FieldGuidePageTagType.Classification, 108),
Sponge(114, FieldGuidePageTagType.Classification, 108),
Coral(115, FieldGuidePageTagType.Classification, 108),
Jellyfish(116, FieldGuidePageTagType.Classification, 108),
Worm(117, FieldGuidePageTagType.Classification, 108),
Echinoderm(118, FieldGuidePageTagType.Classification, 108),
Other(119, FieldGuidePageTagType.Classification),

// Habitat
Forest(200, FieldGuidePageTagType.Habitat),
Desert(
21,
201,
FieldGuidePageTagType.Habitat
),
Grassland(
22,
202,
FieldGuidePageTagType.Habitat
),
Wetland(
23,
203,
FieldGuidePageTagType.Habitat
),
Mountain(
24,
204,
FieldGuidePageTagType.Habitat
),
Urban(
25,
205,
FieldGuidePageTagType.Habitat
),
Marine(
26,
206,
FieldGuidePageTagType.Habitat
),
Freshwater(
27,
207,
FieldGuidePageTagType.Habitat
),
Cave(
28,
208,
FieldGuidePageTagType.Habitat
),
Tundra(
29,
209,
FieldGuidePageTagType.Habitat
),
Rock(30, FieldGuidePageTagType.Classification),

// Activity pattern
Diurnal(
31,
300,
FieldGuidePageTagType.ActivityPattern
),
Nocturnal(
32,
301,
FieldGuidePageTagType.ActivityPattern
),
Crepuscular(
33,
302,
FieldGuidePageTagType.ActivityPattern
),
Edible(34, FieldGuidePageTagType.HumanInteraction),
Inedible(35, FieldGuidePageTagType.HumanInteraction),
Dangerous(36, FieldGuidePageTagType.HumanInteraction),
Crafting(37, FieldGuidePageTagType.HumanInteraction),
Medicinal(38, FieldGuidePageTagType.HumanInteraction),

// Human interaction
Edible(400, FieldGuidePageTagType.HumanInteraction),
Inedible(401, FieldGuidePageTagType.HumanInteraction),
Dangerous(402, FieldGuidePageTagType.HumanInteraction),
Crafting(403, FieldGuidePageTagType.HumanInteraction),
Medicinal(404, FieldGuidePageTagType.HumanInteraction),
}
Original file line number Diff line number Diff line change
Expand Up @@ -334,7 +334,7 @@ object BuiltInFieldGuide {
FieldGuidePageTag.NorthAmerica,
FieldGuidePageTag.SouthAmerica,
FieldGuidePageTag.Animal,
FieldGuidePageTag.Insect,
FieldGuidePageTag.Worm,
FieldGuidePageTag.Forest,
FieldGuidePageTag.Grassland,
FieldGuidePageTag.Urban,
Expand Down Expand Up @@ -432,7 +432,9 @@ object BuiltInFieldGuide {
FieldGuidePageTag.NorthAmerica,
FieldGuidePageTag.SouthAmerica,
FieldGuidePageTag.Forest,
FieldGuidePageTag.Marine
FieldGuidePageTag.Marine,
FieldGuidePageTag.Plant,
FieldGuidePageTag.Other
)
),
BuiltInFieldGuidePage(
Expand Down Expand Up @@ -613,7 +615,8 @@ object BuiltInFieldGuide {
FieldGuidePageTag.NorthAmerica,
FieldGuidePageTag.Mountain,
FieldGuidePageTag.Marine,
FieldGuidePageTag.Freshwater
FieldGuidePageTag.Freshwater,
FieldGuidePageTag.Rock
)
),
BuiltInFieldGuidePage(
Expand All @@ -624,7 +627,8 @@ object BuiltInFieldGuide {
FieldGuidePageTag.Asia,
FieldGuidePageTag.Grassland,
FieldGuidePageTag.Marine,
FieldGuidePageTag.Freshwater
FieldGuidePageTag.Freshwater,
FieldGuidePageTag.Rock
)
),
BuiltInFieldGuidePage(
Expand All @@ -636,7 +640,8 @@ object BuiltInFieldGuide {
FieldGuidePageTag.Australia,
FieldGuidePageTag.Grassland,
FieldGuidePageTag.Mountain,
FieldGuidePageTag.Freshwater
FieldGuidePageTag.Freshwater,
FieldGuidePageTag.Rock
)
),
BuiltInFieldGuidePage(
Expand All @@ -649,7 +654,8 @@ object BuiltInFieldGuide {
FieldGuidePageTag.NorthAmerica,
FieldGuidePageTag.Urban,
FieldGuidePageTag.Marine,
FieldGuidePageTag.Freshwater
FieldGuidePageTag.Freshwater,
FieldGuidePageTag.Rock
)
),
)
Expand Down
Loading

0 comments on commit 8449964

Please sign in to comment.