From 591d2aebe9bb64d1e557c7c895df6bb9132a26a1 Mon Sep 17 00:00:00 2001 From: "Marianne Angelika B. Santos" <142327703+Akiri017@users.noreply.github.com> Date: Thu, 11 Sep 2025 07:50:49 +0000 Subject: [PATCH 1/4] Checkpoint from VS Code for coding agent session --- .vscode/launch.json | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 .vscode/launch.json diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..2ba986f --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,15 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "type": "chrome", + "request": "launch", + "name": "Launch Chrome against localhost", + "url": "http://localhost:8080", + "webRoot": "${workspaceFolder}" + } + ] +} \ No newline at end of file From 5484d3fe898c40ef3a8bcb9629dc082caa5701d5 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 11 Sep 2025 07:50:56 +0000 Subject: [PATCH 2/4] Initial plan From d6932d757ba47db56381e4169877192eee00e251 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 11 Sep 2025 07:59:32 +0000 Subject: [PATCH 3/4] Implement search and filter functionality for dog breeds Co-authored-by: Akiri017 <142327703+Akiri017@users.noreply.github.com> --- client/src/components/DogList.svelte | 84 +++++++++++++++++++- server/app.py | 30 +++++++- server/test_app.py | 110 ++++++++++++++++++++++++++- 3 files changed, 214 insertions(+), 10 deletions(-) diff --git a/client/src/components/DogList.svelte b/client/src/components/DogList.svelte index b28bc36..4c4aed5 100644 --- a/client/src/components/DogList.svelte +++ b/client/src/components/DogList.svelte @@ -5,16 +5,47 @@ id: number; name: string; breed: string; + status: string; } export let dogs: Dog[] = []; let loading = true; let error: string | null = null; + let breeds: string[] = []; + let selectedBreed = ''; + let availableOnly = false; + + const fetchBreeds = async () => { + try { + const response = await fetch('/api/breeds'); + if(response.ok) { + breeds = await response.json(); + } else { + console.error('Failed to fetch breeds:', response.status); + } + } catch (err) { + console.error('Error fetching breeds:', err); + } + }; const fetchDogs = async () => { loading = true; try { - const response = await fetch('/api/dogs'); + let url = '/api/dogs'; + const params = new URLSearchParams(); + + if (selectedBreed) { + params.append('breed', selectedBreed); + } + if (availableOnly) { + params.append('available', 'true'); + } + + if (params.toString()) { + url += '?' + params.toString(); + } + + const response = await fetch(url); if(response.ok) { dogs = await response.json(); } else { @@ -28,13 +59,53 @@ }; onMount(() => { + fetchBreeds(); fetchDogs(); }); + + // Reactive statement to refetch dogs when filters change + $: if (selectedBreed !== undefined && availableOnly !== undefined) { + fetchDogs(); + }
{dog.breed}
+{dog.breed}
+