(sql`
+ SELECT tag FROM property_tags WHERE type = ${type}
+ `)
+
+ if (err) throw new Error('Database error: Failed to load property tags')
return rows
}
diff --git a/src/pages/PropertyListPage.svelte b/src/pages/PropertyListPage.svelte
index 29b391902..a19313d5b 100644
--- a/src/pages/PropertyListPage.svelte
+++ b/src/pages/PropertyListPage.svelte
@@ -2,6 +2,7 @@
import MetaData from '$components/MetaData.svelte'
import SearchFilter from '$components/SearchFilter.svelte'
import SuggestionForm from '$components/SuggestionForm.svelte'
+ import TagList from '$components/TagList.svelte'
import { normalize_text, pluralize } from '$lib/client/utils'
import { get_property_url } from '$lib/commons/property.url'
import { PLURALS } from '$lib/commons/structures'
@@ -14,9 +15,10 @@
grouped_properties: GroupedPropertyShort[]
total: number
grouped_total: number
+ tags: string[]
}
- let { type, grouped_properties, total, grouped_total }: Props = $props()
+ let { type, grouped_properties, total, grouped_total, tags }: Props = $props()
let searched_properties = $derived(
search
@@ -63,4 +65,18 @@
{/each}
+{#if tags.length > 0}
+
+{/if}
+
+
+
diff --git a/src/pages/PropertyPage.svelte b/src/pages/PropertyPage.svelte
index 91b8a2d39..97728efe5 100644
--- a/src/pages/PropertyPage.svelte
+++ b/src/pages/PropertyPage.svelte
@@ -15,11 +15,13 @@
StructureType,
} from '$lib/commons/types'
import { PLURALS } from '$lib/commons/structures'
+ import TagList from '$components/TagList.svelte'
type Props = {
type: StructureType
property: PropertyDisplay
related_properties: string[]
+ tags: string[]
examples: StructureShort[]
counterexamples: StructureShort[]
unknown_structures: StructureShort[]
@@ -31,6 +33,7 @@
type,
property,
related_properties,
+ tags,
examples,
counterexamples,
unknown_structures,
@@ -43,11 +46,16 @@
{property.id}
+
+
{@html property.description}
{#if property.invariant_under_equivalences === false}
- Warning: This property is not invariant under equivalences.
+ Warning: This property is not invariant under equivalences.
{/if}
diff --git a/src/components/StructureDetailPage.svelte b/src/pages/StructureDetailPage.svelte
similarity index 98%
rename from src/components/StructureDetailPage.svelte
rename to src/pages/StructureDetailPage.svelte
index c555f7236..0baaa5c7b 100644
--- a/src/components/StructureDetailPage.svelte
+++ b/src/pages/StructureDetailPage.svelte
@@ -52,7 +52,7 @@
{structure.name}
-
+
diff --git a/src/pages/StructureListPage.svelte b/src/pages/StructureListPage.svelte
index 622b9c5e6..08ba5b0e8 100644
--- a/src/pages/StructureListPage.svelte
+++ b/src/pages/StructureListPage.svelte
@@ -56,9 +56,9 @@
- List of tags
+ Tags
-
+
diff --git a/src/pages/TaggedPropertiesPage.svelte b/src/pages/TaggedPropertiesPage.svelte
new file mode 100644
index 000000000..c8f3e2d6e
--- /dev/null
+++ b/src/pages/TaggedPropertiesPage.svelte
@@ -0,0 +1,28 @@
+
+
+
+
+Properties of {PLURALS[type]} tagged with '{tag}'
+
+
+ {pluralize(properties.length, {
+ one: `Found {count} property`,
+ other: `Found {count} properties`,
+ })}
+
+
+
diff --git a/src/pages/TaggedPage.svelte b/src/pages/TaggedStructuresPage.svelte
similarity index 75%
rename from src/pages/TaggedPage.svelte
rename to src/pages/TaggedStructuresPage.svelte
index 7b7486f26..c496f138c 100644
--- a/src/pages/TaggedPage.svelte
+++ b/src/pages/TaggedStructuresPage.svelte
@@ -1,7 +1,7 @@
-
+
-List of {PLURALS[type]} tagged with '{tag}'
+{capitalize(PLURALS[type])} tagged with '{tag}'
{pluralize(structures.length, {
diff --git a/src/routes/categories/[tag]/+page.server.ts b/src/routes/categories/[tag]/+page.server.ts
index 7c1f5fc06..2dabfdeeb 100644
--- a/src/routes/categories/[tag]/+page.server.ts
+++ b/src/routes/categories/[tag]/+page.server.ts
@@ -1,9 +1,9 @@
import type { EntryGenerator } from './$types'
import { fetch_tagged_structures } from '$lib/server/fetchers/structures'
-import { fetch_tags } from '$lib/server/fetchers/tags'
+import { fetch_structure_tags } from '$lib/server/fetchers/tags'
export const entries: EntryGenerator = () => {
- return fetch_tags('category')
+ return fetch_structure_tags('category')
}
export const load = (event) => {
diff --git a/src/routes/categories/[tag]/+page.svelte b/src/routes/categories/[tag]/+page.svelte
index e1fa0be6f..23a04e044 100644
--- a/src/routes/categories/[tag]/+page.svelte
+++ b/src/routes/categories/[tag]/+page.svelte
@@ -1,7 +1,7 @@
-
+
diff --git a/src/routes/category-properties/+page.server.ts b/src/routes/category-properties/+page.server.ts
index 39f9c2a92..da7dc35a3 100644
--- a/src/routes/category-properties/+page.server.ts
+++ b/src/routes/category-properties/+page.server.ts
@@ -1,5 +1,5 @@
-import { get_grouped_properties } from '$lib/server/fetchers/properties'
+import { fetch_grouped_properties_and_tags } from '$lib/server/fetchers/properties'
export const load = () => {
- return get_grouped_properties('category')
+ return fetch_grouped_properties_and_tags('category')
}
diff --git a/src/routes/category-properties/[tag]/+page.server.ts b/src/routes/category-properties/[tag]/+page.server.ts
new file mode 100644
index 000000000..3c7531a70
--- /dev/null
+++ b/src/routes/category-properties/[tag]/+page.server.ts
@@ -0,0 +1,11 @@
+import { fetch_tagged_properties } from '$lib/server/fetchers/properties'
+import { fetch_property_tags } from '$lib/server/fetchers/tags'
+import type { EntryGenerator } from './$types'
+
+export const entries: EntryGenerator = () => {
+ return fetch_property_tags('category')
+}
+
+export const load = (event) => {
+ return fetch_tagged_properties('category', event.params.tag)
+}
diff --git a/src/routes/category-properties/[tag]/+page.svelte b/src/routes/category-properties/[tag]/+page.svelte
new file mode 100644
index 000000000..dbd54b293
--- /dev/null
+++ b/src/routes/category-properties/[tag]/+page.svelte
@@ -0,0 +1,7 @@
+
+
+
diff --git a/src/routes/category/[id]/+page.svelte b/src/routes/category/[id]/+page.svelte
index 19de4676c..daeb50bb9 100644
--- a/src/routes/category/[id]/+page.svelte
+++ b/src/routes/category/[id]/+page.svelte
@@ -2,7 +2,7 @@
import TextWithProof from '$components/TextWithProof.svelte'
import { faQuestion } from '@fortawesome/free-solid-svg-icons'
import Fa from 'svelte-fa'
- import StructureDetailPage from '$components/StructureDetailPage.svelte'
+ import StructureDetailPage from '$pages/StructureDetailPage.svelte'
let { data } = $props()
diff --git a/src/routes/functor-properties/+page.server.ts b/src/routes/functor-properties/+page.server.ts
index 6635d2729..2e0797ff6 100644
--- a/src/routes/functor-properties/+page.server.ts
+++ b/src/routes/functor-properties/+page.server.ts
@@ -1,5 +1,5 @@
-import { get_grouped_properties } from '$lib/server/fetchers/properties'
+import { fetch_grouped_properties_and_tags } from '$lib/server/fetchers/properties'
export const load = () => {
- return get_grouped_properties('functor')
+ return fetch_grouped_properties_and_tags('functor')
}
diff --git a/src/routes/functor-properties/[tag]/+page.server.ts b/src/routes/functor-properties/[tag]/+page.server.ts
new file mode 100644
index 000000000..7c4f183c7
--- /dev/null
+++ b/src/routes/functor-properties/[tag]/+page.server.ts
@@ -0,0 +1,11 @@
+import { fetch_tagged_properties } from '$lib/server/fetchers/properties'
+import { fetch_property_tags } from '$lib/server/fetchers/tags'
+import type { EntryGenerator } from './$types'
+
+export const entries: EntryGenerator = () => {
+ return fetch_property_tags('functor')
+}
+
+export const load = (event) => {
+ return fetch_tagged_properties('functor', event.params.tag)
+}
diff --git a/src/routes/functor-properties/[tag]/+page.svelte b/src/routes/functor-properties/[tag]/+page.svelte
new file mode 100644
index 000000000..8804e18da
--- /dev/null
+++ b/src/routes/functor-properties/[tag]/+page.svelte
@@ -0,0 +1,7 @@
+
+
+
diff --git a/src/routes/functor/[id]/+page.svelte b/src/routes/functor/[id]/+page.svelte
index 6d75a4300..7d708bb00 100644
--- a/src/routes/functor/[id]/+page.svelte
+++ b/src/routes/functor/[id]/+page.svelte
@@ -1,5 +1,5 @@
diff --git a/src/routes/functors/[tag]/+page.server.ts b/src/routes/functors/[tag]/+page.server.ts
index 7c7b5dec9..b0131707c 100644
--- a/src/routes/functors/[tag]/+page.server.ts
+++ b/src/routes/functors/[tag]/+page.server.ts
@@ -1,9 +1,9 @@
import type { EntryGenerator } from './$types'
import { fetch_tagged_structures } from '$lib/server/fetchers/structures'
-import { fetch_tags } from '$lib/server/fetchers/tags'
+import { fetch_structure_tags } from '$lib/server/fetchers/tags'
export const entries: EntryGenerator = () => {
- return fetch_tags('functor')
+ return fetch_structure_tags('functor')
}
export const load = (event) => {
diff --git a/src/routes/functors/[tag]/+page.svelte b/src/routes/functors/[tag]/+page.svelte
index aa765c464..62d2d5fe8 100644
--- a/src/routes/functors/[tag]/+page.svelte
+++ b/src/routes/functors/[tag]/+page.svelte
@@ -1,7 +1,7 @@
-
+