Add weight to individual docs articles

This commit is contained in:
thiloho
2024-08-29 12:05:02 +02:00
parent 816df44bd3
commit e5b55baaef
6 changed files with 204 additions and 32 deletions

View File

@@ -3,16 +3,14 @@ import { API_BASE_PREFIX } from "$lib/server/utils";
export const load: PageServerLoad = async ({ params, fetch, cookies, url, parent, locals }) => {
const searchQuery = url.searchParams.get("article_search_query");
const sortBy = url.searchParams.get("article_sort");
const filterBy = url.searchParams.get("article_filter");
const { website, home } = await parent();
let baseFetchUrl = `${API_BASE_PREFIX}/article?website_id=eq.${params.websiteId}&select=id,title`;
let docsSortString = "";
if (website.content_type === "Docs") {
baseFetchUrl += ",docs_category(category_name,category_weight)";
docsSortString = "docs_category(category_weight).desc,";
baseFetchUrl +=
",docs_category(category_name,category_weight)&order=docs_category(category_weight).desc.nullslast,article_weight.desc.nullslast";
}
const parameters = new URLSearchParams();
@@ -21,22 +19,6 @@ export const load: PageServerLoad = async ({ params, fetch, cookies, url, parent
parameters.append("title_description_search", `wfts(english).${searchQuery}`);
}
switch (sortBy) {
case null:
case "creation-time":
parameters.append("order", `${docsSortString}created_at.desc`);
break;
case "last-modified":
parameters.append("order", `${docsSortString}last_modified_at.desc`);
break;
case "title-a-to-z":
parameters.append("order", `${docsSortString}title.asc`);
break;
case "title-z-to-a":
parameters.append("order", `${docsSortString}title.desc`);
break;
}
switch (filterBy) {
case "creations":
parameters.append("user_id", `eq.${locals.user.id}`);

View File

@@ -53,7 +53,7 @@
</h2>
<details>
<summary>Search & Sort & Filter</summary>
<summary>Search & Filter</summary>
<form method="GET">
<label>
Search:
@@ -63,16 +63,6 @@
value={$page.url.searchParams.get("article_search_query")}
/>
</label>
<label>
Sort:
<select name="article_sort">
{#each sortOptions as { value, text }}
<option {value} selected={value === $page.url.searchParams.get("article_sort")}
>{text}</option
>
{/each}
</select>
</label>
<label>
Filter:
<select name="article_filter">

View File

@@ -66,7 +66,8 @@ export const actions: Actions = {
cover_image: uploadedImage.file_id,
publication_date: data.get("publication-date"),
main_content: data.get("main-content"),
category: data.get("category")
category: data.get("category"),
article_weight: data.get("article-weight") ? data.get("article-weight") : null
})
});

View File

@@ -52,6 +52,11 @@
}}
>
{#if data.website.content_type === "Docs"}
<label>
Weight:
<input type="number" name="article-weight" value={data.article.article_weight} min="0" />
</label>
<label>
Category:
<select name="category">