From a7cfd245e376521588a855420ff868da82d2f309 Mon Sep 17 00:00:00 2001 From: Emile Marois Date: Tue, 28 Apr 2026 12:56:55 -0400 Subject: [PATCH 1/4] Added new getLastUpdatedItem function --- src/routes/+page.svelte | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index 69f23932..2d06cedf 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -34,6 +34,7 @@ }>(); let searchResults = $state([]); + let lastUpdatedItem = $state(null); let sortOption = $state("alphabetical"); let exactSearch = $state(false); let viewMode = $state("list"); @@ -104,6 +105,7 @@ const data = await response.json(); searchResults = data as IBasicItemPopulated[]; itemCount = searchResults.length; + getLastUpdatedItem(); if (showItemTree && itemTreeRef) { await itemTreeRef.reload(); } @@ -112,6 +114,31 @@ } } + async function getLastUpdatedItem(){ + try { + const response = await fetch( + `/api/items/search?` + + `name=${encodeURIComponent('')}&` + + `sort=${encodeURIComponent('recentlyChanged')}&` + + `exact=${'false'}`, + { + method: "GET", + headers: { "Content-Type": "application/json" }, + }, + ); + + if (!response.ok) throw new Error("Failed to fetch items"); + + const data = await response.json(); + const fullSearchResults = data as IBasicItemPopulated[]; + if(fullSearchResults.length > 0){ + lastUpdatedItem = fullSearchResults[0]; + } + } catch (err) { + console.error("Home: Error searching items:", err); + } + } + function toggleView() { if (viewMode === "list") { viewMode = "tree"; @@ -279,6 +306,20 @@ +
+ Last Edited Item: + {#if itemCount > 0} + getLastUpdatedItem} + bind:showMoveDialog + bind:draggingItem + bind:targetItemId + bind:targetItemName /> + {/if} + +
+ {#if viewMode === "list"} {#if itemCount > 0} Date: Tue, 28 Apr 2026 14:46:41 -0400 Subject: [PATCH 2/4] Fixed issues + improved style Co-authored-by: Copilot --- src/lib/components/SingleItemCard.svelte | 92 ++++++++++++++++++++++++ src/lib/styles/main.css | 12 ++++ src/routes/+page.svelte | 30 ++++---- 3 files changed, 117 insertions(+), 17 deletions(-) create mode 100644 src/lib/components/SingleItemCard.svelte diff --git a/src/lib/components/SingleItemCard.svelte b/src/lib/components/SingleItemCard.svelte new file mode 100644 index 00000000..da70b1dc --- /dev/null +++ b/src/lib/components/SingleItemCard.svelte @@ -0,0 +1,92 @@ + + + + + diff --git a/src/lib/styles/main.css b/src/lib/styles/main.css index cc215491..3d6610b2 100644 --- a/src/lib/styles/main.css +++ b/src/lib/styles/main.css @@ -46,6 +46,18 @@ border-radius: 10px; } +.last-edited-item-panel { + width: 50%; + max-width: 50%; +} + +@media (max-width: 768px) { + .last-edited-item-panel { + width: 100%; + max-width: 100%; + } +} + /* For components inset within other components*/ .internal-component { margin: 1rem 0; diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index 2d06cedf..c0b84aa0 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -4,6 +4,7 @@ import Dialog from "$lib/components/Dialog.svelte"; import EditItem from "$lib/components/EditItem.svelte"; import ItemContainer from "$lib/components/ItemContainer.svelte"; + import SingleItemCard from "$lib/components/SingleItemCard.svelte"; import ItemDetails from "$lib/components/ItemDetails.svelte"; import ItemTree from "$lib/components/ItemTree.svelte"; import Menu from "$lib/components/Menu.svelte"; @@ -131,11 +132,9 @@ const data = await response.json(); const fullSearchResults = data as IBasicItemPopulated[]; - if(fullSearchResults.length > 0){ - lastUpdatedItem = fullSearchResults[0]; - } + lastUpdatedItem = fullSearchResults[0] ?? null; } catch (err) { - console.error("Home: Error searching items:", err); + console.error("Home: Error loading last updated item:", err); } } @@ -234,6 +233,7 @@ onMount(() => { document.title = "Home - AssetAtlas"; restoreToggleStates(); + void getLastUpdatedItem(); unsubscribe = topBarHeight.subscribe((value) => { currentTopBarHeight = value; }); @@ -305,20 +305,16 @@ - -
- Last Edited Item: - {#if itemCount > 0} - getLastUpdatedItem} - bind:showMoveDialog - bind:draggingItem - bind:targetItemId - bind:targetItemName /> - {/if} + + {#if lastUpdatedItem} +
+ Last Edited Item: -
+ + + +
+ {/if} {#if viewMode === "list"} {#if itemCount > 0} From 24d415dc9b5284a967860ada56528a2f70f32f56 Mon Sep 17 00:00:00 2001 From: Emile Marois Date: Sat, 2 May 2026 13:18:32 -0400 Subject: [PATCH 3/4] Visual upgrades Co-authored-by: Copilot --- src/lib/components/SingleItemCard.svelte | 2 + .../components/SingleItemCardWindow.svelte | 55 +++++++++++++++++++ src/routes/+page.svelte | 30 +++++++--- 3 files changed, 78 insertions(+), 9 deletions(-) create mode 100644 src/lib/components/SingleItemCardWindow.svelte diff --git a/src/lib/components/SingleItemCard.svelte b/src/lib/components/SingleItemCard.svelte index da70b1dc..56d4e679 100644 --- a/src/lib/components/SingleItemCard.svelte +++ b/src/lib/components/SingleItemCard.svelte @@ -1,6 +1,7 @@ + + + + + + diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index c0b84aa0..df94283e 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -23,6 +23,7 @@ import "$lib/styles/main.css"; import { Switch } from "@skeletonlabs/skeleton-svelte"; import { onDestroy, onMount } from "svelte"; + import SingleItemCardWindow from "$lib/components/SingleItemCardWindow.svelte"; let { searchQuery = "", @@ -306,18 +307,19 @@ - {#if lastUpdatedItem} -
- Last Edited Item: - - - - -
- {/if} + {#if viewMode === "list"} {#if itemCount > 0} + {#if lastUpdatedItem} +
+ Last Edited Item: + + + + +
+ {/if} handleSearch(searchQuery)} @@ -356,6 +358,16 @@ {/if} {:else if showItemTree} + {#if lastUpdatedItem} + + + + + {/if} Date: Tue, 12 May 2026 12:46:44 -0400 Subject: [PATCH 4/4] Moved style to main.css --- src/lib/components/SingleItemCard.svelte | 75 +++--------------------- src/lib/styles/main.css | 63 +++++++++++++++++++- 2 files changed, 70 insertions(+), 68 deletions(-) diff --git a/src/lib/components/SingleItemCard.svelte b/src/lib/components/SingleItemCard.svelte index 56d4e679..32935aae 100644 --- a/src/lib/components/SingleItemCard.svelte +++ b/src/lib/components/SingleItemCard.svelte @@ -2,6 +2,7 @@ import type { IBasicItemPopulated } from "$lib/server/db/models/basicItem.js"; import { createEventDispatcher } from "svelte"; import ItemCardOptions from "./ItemCardOptions.svelte"; + import "$lib/styles/main.css"; let { item = $bindable() } = $props<{ item: IBasicItemPopulated; @@ -14,81 +15,21 @@ } -