✨ added POST-endpoint for userform
Co-authored-by: haraldnilsen <harald_998@hotmail.com> Signed-off-by: Sindre Kjelsrud <kjelsrudsindre@gmail.com>
This commit is contained in:
parent
b78003b4fc
commit
dd8f22b043
7 changed files with 74 additions and 18 deletions
|
@ -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")
|
||||
}
|
||||
|
|
22
frontend/src/api/postFormData.ts
Normal file
22
frontend/src/api/postFormData.ts
Normal file
|
@ -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;
|
||||
};
|
|
@ -1,7 +1,14 @@
|
|||
<script lang="ts">
|
||||
import { createEventDispatcher } from 'svelte';
|
||||
const dispatch = createEventDispatcher();
|
||||
function handleFormChange(selectedValue: string) {
|
||||
dispatch('update', selectedValue);
|
||||
}
|
||||
|
||||
export let inputType:string
|
||||
export let label:string
|
||||
export let options: string[]
|
||||
export let formData: string
|
||||
import RadioButtons from "./inputs/RadioButtons.svelte"
|
||||
import Select from "./inputs/Select.svelte";
|
||||
</script>
|
||||
|
@ -9,9 +16,9 @@
|
|||
<div class="flex justify-start items-center h-1/4 w-full ">
|
||||
<p class="text-primary font-bold w-1/5">{label}:</p>
|
||||
{#if inputType == "radio"}
|
||||
<RadioButtons options={options}/>
|
||||
<RadioButtons on:update={(e) => handleFormChange(e.detail)} selected={formData} options={options}/>
|
||||
{/if}
|
||||
{#if inputType == "select"}
|
||||
<Select options={options}/>
|
||||
<Select on:update={(e) => handleFormChange(e.detail)} options={options}/>
|
||||
{/if}
|
||||
</div>
|
||||
|
|
|
@ -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`
|
||||
</script>
|
||||
|
||||
<a href={url}><button class={style}>{text}</button></a>
|
||||
<a href={url}><button class={style} on:click={onclick}>{text}</button></a>
|
||||
|
|
|
@ -1,12 +1,18 @@
|
|||
<script lang="ts">
|
||||
import { createEventDispatcher } from 'svelte';
|
||||
const dispatch = createEventDispatcher();
|
||||
function handleButtonClick(selectedValue: string) {
|
||||
dispatch('update', selectedValue);
|
||||
}
|
||||
export let options:string[]
|
||||
export let selected: string
|
||||
</script>
|
||||
|
||||
<div class="flex justify-between w-full">
|
||||
{#each options as data, index (data)}
|
||||
<div class="flex flex-col justify-start items-center w-12 text-center">
|
||||
<button name={data} class="h-6 w-6 rounded-full border-2 border-primary hover:bg-primary"></button>
|
||||
<button name={data} on:click={() => handleButtonClick(data)} class="flex flex-col justify-start items-center w-12 text-center">
|
||||
<div class={`${selected == data && "bg-primary"} h-6 w-6 rounded-full border-2 border-primary hover:bg-primary`}></div>
|
||||
<label class="text-primary text-sm mt-1" for={data}>{data}</label>
|
||||
</div>
|
||||
</button>
|
||||
{/each}
|
||||
</div>
|
||||
|
|
|
@ -1,9 +1,14 @@
|
|||
<script lang="ts">
|
||||
import { createEventDispatcher } from 'svelte';
|
||||
const dispatch = createEventDispatcher();
|
||||
function handleButtonClick(selectedValue: string) {
|
||||
dispatch('update', selectedValue);
|
||||
}
|
||||
export let options:string[]
|
||||
</script>
|
||||
|
||||
<select class="ml-6 pl-2 pr-16 py-2 rounded-xl text-primary border-primary border-2 text-start hover:cursor-pointer ">
|
||||
{#each options as data, index (data)}
|
||||
<option id={data}>{data}</option>
|
||||
<option on:click={() => handleButtonClick(data)} id={data}>{data}</option>
|
||||
{/each}
|
||||
</select>
|
||||
|
|
|
@ -1,7 +1,13 @@
|
|||
<script>
|
||||
<script lang="ts">
|
||||
import UserFormInput from "../../components/userform/UserFormInput.svelte";
|
||||
import ArrowBack from "../../components/svg/ArrowBack.svelte";
|
||||
import ButtonComponent from "../../components/userform/inputs/ButtonComponent.svelte";
|
||||
import { postFormData } from "../../api/postFormData";
|
||||
|
||||
let age: string = "18-20"
|
||||
let education: string = "PhD"
|
||||
let healthcare_personnel: string = "Ja"
|
||||
let gender: string = "Mann"
|
||||
</script>
|
||||
|
||||
<div class="flex flex-col justify-center gap-20 h-full ">
|
||||
|
@ -16,14 +22,14 @@
|
|||
<p>Vi vil igjen nevne at denne undersøkelsen er helt anonym og informasjonen vil kun bli brukt til å forbedre vår tjeneste.</p>
|
||||
</div>
|
||||
<div class="flex flex-col justify-start items-center w-2/4">
|
||||
<UserFormInput inputType="radio" label="Alder" options={["18-20", "20-30", "30-40", "40-50", "50-60"]}/>
|
||||
<UserFormInput inputType="select" label="Utdanningsgrad" options={["PhD", "Master", "Fagbrev", "Bachelor"]}/>
|
||||
<UserFormInput inputType="radio" label="Helsepersonell" options={["Ja", "Nei"]}/>
|
||||
<UserFormInput inputType="radio" label="Kjønn" options={["Mann", "Kvinne", "Annet"]}/>
|
||||
<UserFormInput formData={age} on:update={(e) => age = e.detail} inputType="radio" label="Alder" options={["18-20", "20-30", "30-40", "40-50", "50-60"]}/>
|
||||
<UserFormInput formData={education} on:update={(e) => education = e.detail} inputType="select" label="Utdanningsgrad" options={["PhD", "Master", "Fagbrev", "Bachelor"]}/>
|
||||
<UserFormInput formData={healthcare_personnel} on:update={(e) => healthcare_personnel = e.detail} inputType="radio" label="Helsepersonell" options={["Ja", "Nei"]}/>
|
||||
<UserFormInput formData={gender} on:update={(e) => gender = e.detail} inputType="radio" label="Kjønn" options={["Mann", "Kvinne", "Annet"]}/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex justify-center items-center gap-8 text-primary font-bold">
|
||||
<ButtonComponent text="Start undersøkelse" url="/form" filled={true} />
|
||||
<ButtonComponent text="Start undersøkelse" url="/form" filled={true} onclick={() => postFormData(age, education, healthcare_personnel, gender)} />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
Reference in a new issue