= setup OK
= surfer OK
This commit is contained in:
parent
6b86375ce9
commit
2bb01aa45a
6 changed files with 72 additions and 23 deletions
|
@ -10,7 +10,8 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
type Surfer struct {
|
type Surfer struct {
|
||||||
Athlete Athlete `json:"surfer"`
|
Name string `json:"name"`
|
||||||
|
Category string `json:"category"`
|
||||||
Color string `json:"color"`
|
Color string `json:"color"`
|
||||||
Priority string `json:"priority"`
|
Priority string `json:"priority"`
|
||||||
Score string `json:"score"`
|
Score string `json:"score"`
|
||||||
|
@ -34,6 +35,10 @@ func heatName(heat Heat) string {
|
||||||
func (app *App) SaveHeat(c *gin.Context) {
|
func (app *App) SaveHeat(c *gin.Context) {
|
||||||
var heat Heat
|
var heat Heat
|
||||||
|
|
||||||
|
// body, _ := io.ReadAll(c.Request.Body)
|
||||||
|
|
||||||
|
// log.Printf("save: %+v", string(body))
|
||||||
|
|
||||||
err := c.ShouldBind(&heat)
|
err := c.ShouldBind(&heat)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
@ -93,4 +93,5 @@ func (app *App) RegisterApiRoutes() {
|
||||||
// api.GET("/runningheat", app.LoadRunning)
|
// api.GET("/runningheat", app.LoadRunning)
|
||||||
api.GET("/loadsurfers", app.LoadSurfers)
|
api.GET("/loadsurfers", app.LoadSurfers)
|
||||||
api.POST("/savesurfer", app.SaveSurfer)
|
api.POST("/savesurfer", app.SaveSurfer)
|
||||||
|
api.POST("/deletesurfer", app.DeleteSurfer)
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,7 +15,7 @@ type Athlete struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
func surferName(athlete Athlete) string {
|
func surferName(athlete Athlete) string {
|
||||||
str := fmt.Sprintf("%s.%s", athlete.Name, athlete.Category)
|
str := fmt.Sprintf("%s-%s", athlete.Name, athlete.Category)
|
||||||
str = strings.ReplaceAll(str, " ", "_")
|
str = strings.ReplaceAll(str, " ", "_")
|
||||||
return str
|
return str
|
||||||
}
|
}
|
||||||
|
@ -50,3 +50,26 @@ func (app *App) SaveSurfer(c *gin.Context) {
|
||||||
|
|
||||||
c.JSON(http.StatusOK, gin.H{"status": "saved"})
|
c.JSON(http.StatusOK, gin.H{"status": "saved"})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (app *App) DeleteSurfer(c *gin.Context) {
|
||||||
|
var athlete Athlete
|
||||||
|
|
||||||
|
err := c.ShouldBind(&athlete)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
log.Printf("req error: %+v", err)
|
||||||
|
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
log.Printf("surfer: %+v", athlete)
|
||||||
|
|
||||||
|
err = app.DB.Delete("Surfers", surferName(athlete))
|
||||||
|
if err != nil {
|
||||||
|
log.Printf("set error: %+v", err)
|
||||||
|
c.JSON(http.StatusInternalServerError, gin.H{"status": fmt.Sprintf("Error: %+v", err)})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
c.JSON(http.StatusOK, gin.H{"status": "deleted"})
|
||||||
|
}
|
||||||
|
|
|
@ -6,15 +6,14 @@
|
||||||
export let handleSelect;
|
export let handleSelect;
|
||||||
export let element;
|
export let element;
|
||||||
|
|
||||||
console.log(`options: ${JSON.stringify(options)}`)
|
console.log(`options: ${JSON.stringify(options)}`);
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<label class="label" for={id}>{label}</label>
|
<label class="label" for={id}>{label}</label>
|
||||||
<select name={id} {id} bind:value on:change={handleSelect}>
|
<select name={id} {id} bind:value on:change={handleSelect}>
|
||||||
{#each options as option}
|
{#each options as option}
|
||||||
{#if element}
|
{#if element}
|
||||||
<option value={option}>{option[element]}</option>
|
<option value={option[element]}>{option[element]}</option>
|
||||||
{:else}
|
{:else}
|
||||||
<option value={option}>{option}</option>
|
<option value={option}>{option}</option>
|
||||||
{/if}
|
{/if}
|
||||||
|
|
|
@ -44,10 +44,12 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
async function loadHeats() {
|
async function loadHeats() {
|
||||||
|
heats = [];
|
||||||
const res = await fetch(`/api/loadheats`);
|
const res = await fetch(`/api/loadheats`);
|
||||||
const data = await res.json();
|
const data = await res.json();
|
||||||
for (let i in data) {
|
for (let i in data) {
|
||||||
heats[i] = data[i];
|
heats[i] = data[i];
|
||||||
|
heats = heats;
|
||||||
console.log(`${i} loadHeats: ${JSON.stringify(data[i])}`);
|
console.log(`${i} loadHeats: ${JSON.stringify(data[i])}`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -144,7 +146,11 @@
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
heat.surfers = surfer_list;
|
console.log(`saving heat: ${JSON.stringify(heat)}`);
|
||||||
|
|
||||||
|
// heat.surfers = surfer_list;
|
||||||
|
|
||||||
|
console.log(`saving complete heat: ${JSON.stringify(heat)}`);
|
||||||
|
|
||||||
const res = await fetch(`/api/saveheat`, {
|
const res = await fetch(`/api/saveheat`, {
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
|
@ -240,7 +246,7 @@
|
||||||
|
|
||||||
<hr />
|
<hr />
|
||||||
<div class="list">
|
<div class="list">
|
||||||
{#each heats as h, id}
|
{#each heats || [] as h, id}
|
||||||
<div class="surfer">
|
<div class="surfer">
|
||||||
<Button handleClick={() => setHeat(id)} label="{h.round} {h.number} {h.category}" />
|
<Button handleClick={() => setHeat(id)} label="{h.round} {h.number} {h.category}" />
|
||||||
<Button handleClick={() => deleteHeat(id)} label="X" />
|
<Button handleClick={() => deleteHeat(id)} label="X" />
|
||||||
|
|
|
@ -10,30 +10,44 @@
|
||||||
|
|
||||||
let surfer = {};
|
let surfer = {};
|
||||||
|
|
||||||
$: value = '';
|
// $: value = '';
|
||||||
|
|
||||||
function resetSurfer() {
|
function resetSurfer() {
|
||||||
surfer = {
|
surfer = {
|
||||||
firstname: '',
|
firstname: '',
|
||||||
lastname: '',
|
lastname: '',
|
||||||
name: '',
|
|
||||||
category: ''
|
category: ''
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
async function loadSurfers() {
|
async function loadSurfers() {
|
||||||
|
surfers = [];
|
||||||
const res = await fetch(`/api/loadsurfers`);
|
const res = await fetch(`/api/loadsurfers`);
|
||||||
const data = await res.json();
|
const data = await res.json();
|
||||||
for (let i in data) {
|
for (let i in data) {
|
||||||
const flname = data[i].name.split(" ");
|
const flname = data[i].name.split('.');
|
||||||
data[i].firstname = flname[0];
|
data[i].firstname = flname[0];
|
||||||
data[i].lastname = flname[1];
|
data[i].lastname = flname[1];
|
||||||
surfers[i] = data[i];
|
surfers[i] = data[i];
|
||||||
|
surfers = surfers;
|
||||||
console.log(`${i} retval: ${JSON.stringify(data[i])}`);
|
console.log(`${i} retval: ${JSON.stringify(data[i])}`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async function deleteSurfer(surfer) {
|
||||||
|
console.log(`deleting: ${JSON.stringify(surfer)}`);
|
||||||
|
const res = await fetch(`/api/deletesurfer`, {
|
||||||
|
method: 'POST',
|
||||||
|
body: JSON.stringify(surfer),
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/json'
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
console.log(`deleted surfer: ${JSON.stringify(res)}`);
|
||||||
|
loadSurfers();
|
||||||
|
}
|
||||||
|
|
||||||
async function save() {
|
async function save() {
|
||||||
if (surfer.firstname === '') {
|
if (surfer.firstname === '') {
|
||||||
alert('Must have a name');
|
alert('Must have a name');
|
||||||
|
@ -50,11 +64,14 @@
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
surfer.name = `${surfer.firstname} ${surfer.lastname}`
|
surfer.name = `${surfer.firstname} ${surfer.lastname}`;
|
||||||
|
|
||||||
const res = await fetch(`/api/savesurfer`, {
|
const res = await fetch(`/api/savesurfer`, {
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
body: JSON.stringify(surfer),
|
body: JSON.stringify({
|
||||||
|
name: `${surfer.firstname}.${surfer.lastname}`,
|
||||||
|
category: surfer.category
|
||||||
|
}),
|
||||||
headers: {
|
headers: {
|
||||||
'Content-Type': 'application/json'
|
'Content-Type': 'application/json'
|
||||||
}
|
}
|
||||||
|
@ -86,10 +103,8 @@
|
||||||
|
|
||||||
<hr />
|
<hr />
|
||||||
|
|
||||||
<label for="surfer">{JSON.stringify(surfer)}</label>
|
|
||||||
|
|
||||||
<hr />
|
|
||||||
|
|
||||||
{#each surfers as s}
|
{#each surfers as s}
|
||||||
<label for={s}>{s.firstname} {s.lastname} - {s.category}</label><br />
|
<Button label="{s.firstname} {s.lastname} - {s.category}" />
|
||||||
|
<Button handleClick={() => deleteSurfer(s)} label="X" />
|
||||||
|
<br />
|
||||||
{/each}}
|
{/each}}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue