1
0
Fork 0
mirror of https://github.com/seanmorley15/AdventureLog.git synced 2025-08-02 19:55:18 +02:00

Add is_visited filtering to AdventureViewSet and update frontend components

This commit is contained in:
Sean Morley 2024-10-31 09:59:56 -04:00
parent 727daf0cfd
commit 25ed72afbc
4 changed files with 81 additions and 20 deletions

View file

@ -151,6 +151,7 @@
"visited": "Visited",
"planned": "Planned",
"duration": "Duration",
"all": "All",
"image_removed_success": "Image removed successfully!",
"image_removed_error": "Error removing image",
"no_image_url": "No image found at that URL.",

View file

@ -27,9 +27,10 @@ export const load = (async (event) => {
const order_by = event.url.searchParams.get('order_by') || 'updated_at';
const order_direction = event.url.searchParams.get('order_direction') || 'asc';
const page = event.url.searchParams.get('page') || '1';
const is_visited = event.url.searchParams.get('is_visited') || 'all';
let initialFetch = await fetch(
`${serverEndpoint}/api/adventures/filtered?types=${typeString}&order_by=${order_by}&order_direction=${order_direction}&include_collections=${include_collections}&page=${page}`,
`${serverEndpoint}/api/adventures/filtered?types=${typeString}&order_by=${order_by}&order_direction=${order_direction}&include_collections=${include_collections}&page=${page}&is_visited=${is_visited}`,
{
headers: {
Cookie: `${event.cookies.get('auth')}`

View file

@ -21,7 +21,8 @@
order: '',
visited: true,
planned: true,
includeCollections: true
includeCollections: true,
is_visited: 'all'
};
let resultsPerPage: number = 25;
@ -120,6 +121,10 @@
currentSort.visited = true;
currentSort.planned = true;
}
if (url.searchParams.get('is_visited')) {
currentSort.is_visited = url.searchParams.get('is_visited') || 'all';
}
}
let adventureToEdit: Adventure | null = null;
@ -314,19 +319,53 @@
/>
</div>
<br />
<p class="text-lg font-semibold mt-2 mb-2">{$t('adventures.sources')}</p>
<label class="label cursor-pointer">
<span class="label-text">{$t('adventures.collection_adventures')}</span>
<!-- is visited true false or all -->
<p class="text-lg font-semibold mt-2 mb-2">{$t('adventures.visited')}</p>
<div class="join">
<input
type="checkbox"
name="include_collections"
id="include_collections"
class="checkbox checkbox-primary"
checked={currentSort.includeCollections}
class="join-item btn btn-neutral"
type="radio"
name="is_visited"
id="all"
value="all"
aria-label={$t('adventures.all')}
checked={currentSort.is_visited === 'all'}
/>
</label>
<button type="submit" class="btn btn-success mt-4">{$t('adventures.filter')}</button>
<input
class="join-item btn btn-neutral"
type="radio"
name="is_visited"
id="true"
value="true"
aria-label={$t('adventures.visited')}
checked={currentSort.is_visited === 'true'}
/>
<input
class="join-item btn btn-neutral"
type="radio"
name="is_visited"
id="false"
value="false"
aria-label={$t('adventures.not_visited')}
checked={currentSort.is_visited === 'false'}
/>
</div>
<div class="divider"></div>
<div class="form-control">
<br />
<p class="text-lg font-semibold mt-2 mb-2">{$t('adventures.sources')}</p>
<label class="label cursor-pointer">
<span class="label-text">{$t('adventures.collection_adventures')}</span>
<input
type="checkbox"
name="include_collections"
id="include_collections"
class="checkbox checkbox-primary"
checked={currentSort.includeCollections}
/>
</label>
<button type="submit" class="btn btn-success mt-4">{$t('adventures.filter')}</button>
</div>
</form>
</div>
</ul>