From b9682797029f543ef5944f5637e2f893bfc7636f Mon Sep 17 00:00:00 2001 From: Sebastian Pravda Date: Fri, 23 Dec 2022 14:49:40 +0100 Subject: [PATCH 01/21] feat: candidate portfolio download --- frontend/src/lib/@api/candidate.ts | 11 +++++ .../dashboard/DashboardInfoCard.svelte | 25 ++++++++++- .../components/dashboard/InfoButton.svelte | 43 +++++++++++++++++++ 3 files changed, 78 insertions(+), 1 deletion(-) create mode 100644 frontend/src/lib/components/dashboard/InfoButton.svelte diff --git a/frontend/src/lib/@api/candidate.ts b/frontend/src/lib/@api/candidate.ts index 251a64e..6e5427d 100644 --- a/frontend/src/lib/@api/candidate.ts +++ b/frontend/src/lib/@api/candidate.ts @@ -202,6 +202,17 @@ export const apiSubmitPortfolio = async (): Promise => { } }; +export const apiGetPortfolio = async (): Promise => { + const res = await fetch(API_URL + '/candidate/portfolio/download', { + method: 'GET', + credentials: 'include' + }); + if (!res.ok) { + throw errorHandler(await res.text(), 'Failed to download portfolio'); + } + return await res.blob(); +}; + export const apiDeltePortfolio = async (): Promise => { try { await axios.post(API_URL + '/candidate/portfolio/delete', {}, { withCredentials: true }); diff --git a/frontend/src/lib/components/dashboard/DashboardInfoCard.svelte b/frontend/src/lib/components/dashboard/DashboardInfoCard.svelte index 5ca048c..031fbf9 100644 --- a/frontend/src/lib/components/dashboard/DashboardInfoCard.svelte +++ b/frontend/src/lib/components/dashboard/DashboardInfoCard.svelte @@ -1,10 +1,12 @@
+
+
+
+ +
+
+
diff --git a/frontend/src/lib/components/dashboard/InfoButton.svelte b/frontend/src/lib/components/dashboard/InfoButton.svelte new file mode 100644 index 0000000..11c3e1f --- /dev/null +++ b/frontend/src/lib/components/dashboard/InfoButton.svelte @@ -0,0 +1,43 @@ + + +
+
+ showInfo()} on:keydown={(_) => showInfo()} use:tippy={{ + content: "Zobrazit osobní údaje", + placement: 'top', + showOnCreate: false, + delay: 0 + }}> + + + + download()} on:keydown={(_) => download()} use:tippy={{ + content: "Stáhnout portfolio", + placement: 'top', + showOnCreate: false, + delay: 0 + }}> + + +
+
+ + From 040241bc74061a34da3b8786603216003bbc34c3 Mon Sep 17 00:00:00 2001 From: Sebastian Pravda Date: Fri, 23 Dec 2022 14:56:29 +0100 Subject: [PATCH 02/21] feat(dashboard): resize elements in grid --- .../(candidate)/(authenticated)/dashboard/+page.svelte | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/frontend/src/routes/(candidate)/(authenticated)/dashboard/+page.svelte b/frontend/src/routes/(candidate)/(authenticated)/dashboard/+page.svelte index 50fbfe3..79a235d 100644 --- a/frontend/src/routes/(candidate)/(authenticated)/dashboard/+page.svelte +++ b/frontend/src/routes/(candidate)/(authenticated)/dashboard/+page.svelte @@ -33,19 +33,19 @@
-
+
{$candidateData.candidate.email} Uchazeč na SSPŠ
-
+
-
+
-
+
From 7e3740f4366ae9cea0c084a34beefb55ea39281d Mon Sep 17 00:00:00 2001 From: Sebastian Pravda Date: Fri, 23 Dec 2022 16:30:19 +0100 Subject: [PATCH 03/21] feat: optionally show personal data --- .../dashboard/DashboardInfoCard.svelte | 50 ++++++++++++++++++- .../components/dashboard/InfoButton.svelte | 3 +- .../(authenticated)/dashboard/+page.svelte | 9 ++-- 3 files changed, 56 insertions(+), 6 deletions(-) diff --git a/frontend/src/lib/components/dashboard/DashboardInfoCard.svelte b/frontend/src/lib/components/dashboard/DashboardInfoCard.svelte index 031fbf9..c215a72 100644 --- a/frontend/src/lib/components/dashboard/DashboardInfoCard.svelte +++ b/frontend/src/lib/components/dashboard/DashboardInfoCard.svelte @@ -7,10 +7,12 @@ import StatusNotificationBig from './StatusNotificationBig.svelte'; import InfoButton from './InfoButton.svelte'; import { candidateData } from '$lib/stores/candidate'; + import tippy from 'tippy.js'; export let title: string; export let status: Status; + export let showDetails = true; let loading = false; const submitPortfolio = async () => { @@ -56,12 +58,12 @@
- + showDetails = !showDetails}>
-
+
@@ -71,6 +73,50 @@
+ {#if showDetails} + +
Vámi vyplněné osobní údaje", + allowHTML: true, + placement: 'top', + showOnCreate: false, + delay: 0 + }} + class="flex flex-col justify-around mt-10"> + Adresa: {$candidateData.candidate.address} + Datum narození: {$candidateData.candidate.birthdate} + Místo narození: {$candidateData.candidate.birthplace} + Rodné číslo: {$candidateData.candidate.personalIdNumber} + Telefon: {$candidateData.candidate.telephone} +
+
Vámi vyplněné osobní údaje", + allowHTML: true, + placement: 'top', + showOnCreate: false, + delay: 0 + }} + class="ml-10 flex flex-col justify-around mt-10"> + {#each $candidateData.parents as parent} +
+ {parent.name + " " + parent.surname} + Email: {parent.email} + Telefon: {parent.telephone} +
+ {/each} +
+ {/if}
diff --git a/frontend/src/lib/components/dashboard/InfoButton.svelte b/frontend/src/lib/components/dashboard/InfoButton.svelte index 11c3e1f..215fb8e 100644 --- a/frontend/src/lib/components/dashboard/InfoButton.svelte +++ b/frontend/src/lib/components/dashboard/InfoButton.svelte @@ -16,7 +16,8 @@
- showInfo()} on:keydown={(_) => showInfo()} use:tippy={{ + showInfo()} on:keydown={(_) => showInfo()} + use:tippy={{ content: "Zobrazit osobní údaje", placement: 'top', showOnCreate: false, diff --git a/frontend/src/routes/(candidate)/(authenticated)/dashboard/+page.svelte b/frontend/src/routes/(candidate)/(authenticated)/dashboard/+page.svelte index 79a235d..27fb553 100644 --- a/frontend/src/routes/(candidate)/(authenticated)/dashboard/+page.svelte +++ b/frontend/src/routes/(candidate)/(authenticated)/dashboard/+page.svelte @@ -14,6 +14,9 @@ export let data: PageData; + // TODO: transition + let showDetails = true; + // @ts-ignore $: candidateData.set(data.candidate); // @ts-ignore @@ -33,13 +36,13 @@
-
- +
+ {$candidateData.candidate.email} Uchazeč na SSPŠ
-
+
From d2241593728a9d511e2846d387636733d566ed95 Mon Sep 17 00:00:00 2001 From: Sebastian Pravda Date: Fri, 23 Dec 2022 16:30:44 +0100 Subject: [PATCH 04/21] refactor: code cleanup --- frontend/src/lib/@api/candidate.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/lib/@api/candidate.ts b/frontend/src/lib/@api/candidate.ts index 6e5427d..3515c41 100644 --- a/frontend/src/lib/@api/candidate.ts +++ b/frontend/src/lib/@api/candidate.ts @@ -26,7 +26,7 @@ export const apiFetchDetails = async (fetchSsr?: Fetch): Promise method: 'GET', credentials: 'include' }); - if (res.status != 200) { + if (!res.ok) { throw new Error(await res.text()); } return await res.json(); From 0a4b47504ab9cddaec130b7f9d0aa2a87d65f35d Mon Sep 17 00:00:00 2001 From: Sebastian Pravda Date: Fri, 23 Dec 2022 16:31:39 +0100 Subject: [PATCH 05/21] feat: register data cleanup --- .../routes/(candidate)/(authenticated)/register/+page.svelte | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/frontend/src/routes/(candidate)/(authenticated)/register/+page.svelte b/frontend/src/routes/(candidate)/(authenticated)/register/+page.svelte index 4d9c80e..56be922 100644 --- a/frontend/src/routes/(candidate)/(authenticated)/register/+page.svelte +++ b/frontend/src/routes/(candidate)/(authenticated)/register/+page.svelte @@ -118,6 +118,8 @@ console.log(values.parents); console.log(values); if (pageIndex === pageCount) { + // clone values to oldValues + let oldValues = JSON.parse(JSON.stringify(values)); try { console.log('submit'); // @ts-ignore // love javascript @@ -131,9 +133,12 @@ values.candidate.birthdate = birthdate_formttted; + values.parents.filter((x) => x.name !== '' && x.surname !== '' && x.email !== '' && x.telephone !== ''); + await apiFillDetails(values); goto('/dashboard'); } catch (e) { + values = oldValues; console.error('error while submitting data: ' + e); } } From 828d41ec556e706c07fe94b9453202903f578b29 Mon Sep 17 00:00:00 2001 From: Sebastian Pravda Date: Fri, 23 Dec 2022 17:13:52 +0100 Subject: [PATCH 06/21] feat: element size in grid --- .../routes/(candidate)/(authenticated)/dashboard/+page.svelte | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/frontend/src/routes/(candidate)/(authenticated)/dashboard/+page.svelte b/frontend/src/routes/(candidate)/(authenticated)/dashboard/+page.svelte index 27fb553..a1c614c 100644 --- a/frontend/src/routes/(candidate)/(authenticated)/dashboard/+page.svelte +++ b/frontend/src/routes/(candidate)/(authenticated)/dashboard/+page.svelte @@ -45,10 +45,10 @@
-
+
-
+
From 030e1a77d88e1f2e2a36335a016572ea60b7f190 Mon Sep 17 00:00:00 2001 From: Sebastian Pravda Date: Fri, 23 Dec 2022 17:14:08 +0100 Subject: [PATCH 07/21] fix: code cleanup --- .../src/lib/components/dashboard/DashboardInfoCard.svelte | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/frontend/src/lib/components/dashboard/DashboardInfoCard.svelte b/frontend/src/lib/components/dashboard/DashboardInfoCard.svelte index c215a72..06d89c1 100644 --- a/frontend/src/lib/components/dashboard/DashboardInfoCard.svelte +++ b/frontend/src/lib/components/dashboard/DashboardInfoCard.svelte @@ -51,14 +51,15 @@ } } - + +
- showDetails = !showDetails}> + showDetails = !showDetails}>
From a463394aa3c0c234ef9465c530a3a747837ccbf6 Mon Sep 17 00:00:00 2001 From: Sebastian Pravda Date: Fri, 23 Dec 2022 17:30:10 +0100 Subject: [PATCH 08/21] feat: improve responsivness --- .../dashboard/CoverLetterUploadCard.svelte | 2 + .../dashboard/DashboardInfoCard.svelte | 2 +- .../dashboard/DashboardUploadCard.svelte | 47 ++++++++++--------- .../(authenticated)/dashboard/+page.svelte | 12 +++-- 4 files changed, 38 insertions(+), 25 deletions(-) diff --git a/frontend/src/lib/components/dashboard/CoverLetterUploadCard.svelte b/frontend/src/lib/components/dashboard/CoverLetterUploadCard.svelte index c616515..e40cdc3 100644 --- a/frontend/src/lib/components/dashboard/CoverLetterUploadCard.svelte +++ b/frontend/src/lib/components/dashboard/CoverLetterUploadCard.svelte @@ -4,6 +4,7 @@ import DashboardUploadCard from './DashboardUploadCard.svelte'; import type { ApiError } from '$lib/@api'; + export let compact: boolean = false; let error: string | null = null; const onFileDrop = async (detail: any) => { @@ -26,6 +27,7 @@ onFileDrop(e.detail)} on:delete={onDelete} title="Motivační dopis" diff --git a/frontend/src/lib/components/dashboard/DashboardInfoCard.svelte b/frontend/src/lib/components/dashboard/DashboardInfoCard.svelte index 06d89c1..acb3132 100644 --- a/frontend/src/lib/components/dashboard/DashboardInfoCard.svelte +++ b/frontend/src/lib/components/dashboard/DashboardInfoCard.svelte @@ -108,7 +108,7 @@ showOnCreate: false, delay: 0 }} - class="ml-10 flex flex-col justify-around mt-10"> + class="ml-10 {#each $candidateData.parents as parent}
{parent.name + " " + parent.surname} diff --git a/frontend/src/lib/components/dashboard/DashboardUploadCard.svelte b/frontend/src/lib/components/dashboard/DashboardUploadCard.svelte index 9f0c3aa..f511801 100644 --- a/frontend/src/lib/components/dashboard/DashboardUploadCard.svelte +++ b/frontend/src/lib/components/dashboard/DashboardUploadCard.svelte @@ -20,6 +20,7 @@ export let filesize: number; export let fileType: number; export let placeholder: string = ''; + export let compact: boolean = false; let fileDropped: boolean = false; let progress: number = 1; @@ -101,9 +102,11 @@

{title}

-
- -
+ {#if !compact} +
+ +
+ {/if}
{#if status === 'uploaded'}