From dd8f22b043f24c6c7c612b4050cda64fc7788c6a Mon Sep 17 00:00:00 2001 From: Sindre Kjelsrud Date: Thu, 21 Dec 2023 19:31:14 +0100 Subject: [PATCH] :sparkles: added POST-endpoint for userform Co-authored-by: haraldnilsen Signed-off-by: Sindre Kjelsrud --- backend/cmd/api/main.go | 11 ++++++++++ frontend/src/api/postFormData.ts | 22 +++++++++++++++++++ .../components/userform/UserFormInput.svelte | 11 ++++++++-- .../userform/inputs/ButtonComponent.svelte | 11 +++++----- .../userform/inputs/RadioButtons.svelte | 12 +++++++--- .../components/userform/inputs/Select.svelte | 7 +++++- frontend/src/routes/userform/+page.svelte | 18 ++++++++++----- 7 files changed, 74 insertions(+), 18 deletions(-) create mode 100644 frontend/src/api/postFormData.ts diff --git a/backend/cmd/api/main.go b/backend/cmd/api/main.go index c61f627..052d4ca 100644 --- a/backend/cmd/api/main.go +++ b/backend/cmd/api/main.go @@ -1,6 +1,8 @@ package main import ( + "fmt" + "io" "net/http" "github.com/gin-gonic/gin" @@ -16,6 +18,15 @@ func main() { }) }) + // Info about user + router.POST("/submitform", func(c *gin.Context) { + jsonData, err := io.ReadAll(c.Request.Body) + if err != nil { + // Handle error + } + fmt.Print(string(jsonData)) + }) + // Run the server on port 8080 router.Run(":8080") } diff --git a/frontend/src/api/postFormData.ts b/frontend/src/api/postFormData.ts new file mode 100644 index 0000000..df37694 --- /dev/null +++ b/frontend/src/api/postFormData.ts @@ -0,0 +1,22 @@ +export const postFormData = ( + age: string, + education: string, + healthcare_personnel: string, + gender: string +) => { + let url = "http://localhost:8080/submitform"; + let personnel = healthcare_personnel == "Ja" ? true : false; + + const response = fetch(url, { + method: "POST", + body: JSON.stringify({ + age: age, + education: education, + healthcare_personnel: personnel, + gender: gender, + }), + }).catch((error) => { + console.log(error); + }); + return response; +}; diff --git a/frontend/src/components/userform/UserFormInput.svelte b/frontend/src/components/userform/UserFormInput.svelte index 5c69e8d..49a4a50 100644 --- a/frontend/src/components/userform/UserFormInput.svelte +++ b/frontend/src/components/userform/UserFormInput.svelte @@ -1,7 +1,14 @@ @@ -9,9 +16,9 @@

{label}:

{#if inputType == "radio"} - + handleFormChange(e.detail)} selected={formData} options={options}/> {/if} {#if inputType == "select"} - handleFormChange(e.detail)} options={options}/> {/if}
diff --git a/frontend/src/components/userform/inputs/ButtonComponent.svelte b/frontend/src/components/userform/inputs/ButtonComponent.svelte index 1aa8dae..ee8987e 100644 --- a/frontend/src/components/userform/inputs/ButtonComponent.svelte +++ b/frontend/src/components/userform/inputs/ButtonComponent.svelte @@ -2,14 +2,13 @@ export let text: string; export let url: string; export let filled = false; + export let onclick: () => {}; let style:string; - if (!filled) { - style = "text-primary font-bold uppercase border-primary border-2 rounded-full px-8 py-3 hover:bg-primary hover:text-bg"; - } else { - style = "bg-primary text-bg font-bold uppercase border-primary border-2 rounded-full px-8 py-3 hover:bg-bg hover:text-primary"; - } + style = `${!filled ? "text-primary hover:bg-primary hover:text-bg" + : "bg-primary text-bg hover:bg-bg hover:text-primary"} + font-bold uppercase border-primary border-2 rounded-full px-8 py-3` - + diff --git a/frontend/src/components/userform/inputs/RadioButtons.svelte b/frontend/src/components/userform/inputs/RadioButtons.svelte index cbe7b39..c2cb77a 100644 --- a/frontend/src/components/userform/inputs/RadioButtons.svelte +++ b/frontend/src/components/userform/inputs/RadioButtons.svelte @@ -1,12 +1,18 @@
{#each options as data, index (data)} -
- +
+ {/each}
diff --git a/frontend/src/components/userform/inputs/Select.svelte b/frontend/src/components/userform/inputs/Select.svelte index 300f2ec..d04d62c 100644 --- a/frontend/src/components/userform/inputs/Select.svelte +++ b/frontend/src/components/userform/inputs/Select.svelte @@ -1,9 +1,14 @@ diff --git a/frontend/src/routes/userform/+page.svelte b/frontend/src/routes/userform/+page.svelte index 25b1368..c6330c1 100644 --- a/frontend/src/routes/userform/+page.svelte +++ b/frontend/src/routes/userform/+page.svelte @@ -1,7 +1,13 @@ -
@@ -16,14 +22,14 @@

Vi vil igjen nevne at denne undersøkelsen er helt anonym og informasjonen vil kun bli brukt til å forbedre vår tjeneste.

- - - - + age = e.detail} inputType="radio" label="Alder" options={["18-20", "20-30", "30-40", "40-50", "50-60"]}/> + education = e.detail} inputType="select" label="Utdanningsgrad" options={["PhD", "Master", "Fagbrev", "Bachelor"]}/> + healthcare_personnel = e.detail} inputType="radio" label="Helsepersonell" options={["Ja", "Nei"]}/> + gender = e.detail} inputType="radio" label="Kjønn" options={["Mann", "Kvinne", "Annet"]}/>
- + postFormData(age, education, healthcare_personnel, gender)} />