sse struct solved

This commit is contained in:
Miki 2024-01-16 10:58:26 +01:00
parent 7520e449b1
commit fcf9328b63
8 changed files with 92 additions and 65 deletions

Binary file not shown.

View file

@ -46,8 +46,8 @@ func (app *App) RegisterWebRoutes() {
display_h := app.Engine.Group("/display-h") display_h := app.Engine.Group("/display-h")
display_h.Static("/", "./static/display-h") display_h.Static("/", "./static/display-h")
display_v := app.Engine.Group("/display-v") display := app.Engine.Group("/display")
display_v.Static("/", "./static/display-v") display.Static("/", "./static/display")
mobile := app.Engine.Group("/mobile") mobile := app.Engine.Group("/mobile")
mobile.Static("/", "./static/mobile") mobile.Static("/", "./static/mobile")

View file

@ -21,19 +21,18 @@ func (app *App) RegisterApiRoutes() {
func (app *App) GetPriority(c *gin.Context) { func (app *App) GetPriority(c *gin.Context) {
c.JSON(http.StatusOK, app.Stream.Data) c.JSON(http.StatusOK, app.Stream.Data)
log.Printf("priority: %+v", app.Stream.Data) log.Printf("get priority: %+v", app.Stream.Data)
} }
func (app *App) SetPriority(c *gin.Context) { func (app *App) SetPriority(c *gin.Context) {
var priority = &Priority{} var priority = Priority{}
body, _ := io.ReadAll(c.Request.Body) body, _ := io.ReadAll(c.Request.Body)
log.Printf("set priority %s", string(body)) log.Printf("set priority body: %s", string(body))
c.Request.Body = io.NopCloser(bytes.NewReader(body)) c.Request.Body = io.NopCloser(bytes.NewReader(body))
c.ShouldBind(priority) err := c.ShouldBindJSON(&priority)
log.Printf("priority: %+v", priority) log.Printf("set priority: %+v - err: %+v", priority, err)
c.JSON(http.StatusOK, gin.H{ c.JSON(http.StatusOK, gin.H{
"code": http.StatusOK, "code": http.StatusOK,
"message": priority, "message": priority,

View file

@ -2,8 +2,8 @@ package main
type Priority struct { type Priority struct {
Surfers []Surfer `json:"surfers"` Surfers []Surfer `json:"surfers"`
Count int `json:"count"`
Round Round `json:"round"` Round Round `json:"round"`
Count int `json:"surfersCount"`
} }
type Surfer struct { type Surfer struct {

View file

@ -1,2 +1,4 @@
<h1>Welcome to SvelteKit</h1> <h1>Home</h1>
<p>Visit <a href="https://kit.svelte.dev">kit.svelte.dev</a> to read the documentation</p> <a href="/priority">Priority</a>
<a href="/mobile">Mobile</a>
<a href="display">Display</a>

View file

@ -3,12 +3,17 @@
import { onMount } from 'svelte'; import { onMount } from 'svelte';
import { priority } from '$lib/stores/priority.js'; import { priority } from '$lib/stores/priority.js';
let base;
if (dev) { if (dev) {
console.log('Dev mode'); console.log('Dev mode');
base = 'http://10.39.253.16:8080';
} else { } else {
console.log('Not dev mode'); console.log('Not dev mode');
base = '';
} }
const events = ['priority']; const events = ['priority'];
window.document.body.oncontextmenu = function () { window.document.body.oncontextmenu = function () {
@ -25,7 +30,7 @@
}); });
function StartSSE() { function StartSSE() {
let url = '/api/sse?'; let url = base + '/api/sse?';
for (let e in events) { for (let e in events) {
url += `event=${events[e]}&`; url += `event=${events[e]}&`;
} }
@ -41,7 +46,9 @@
let Msg = JSON.parse(e.data); let Msg = JSON.parse(e.data);
console.log(JSON.stringify(Msg)); console.log(JSON.stringify(Msg));
console.log(`surfers: ${Msg.data.priority}`); console.log(`surfers: ${Msg.data.priority}`);
$priority = Msg.data.priority; $priority.surfers = Msg.data.surfers;
$priority.round = Msg.data.round;
$priority.surfersCount = Msg.data.surfersCount;
}); });
return () => { return () => {
@ -51,10 +58,12 @@
} }
async function LoadPriority() { async function LoadPriority() {
const res = await fetch(`/api/priority`); const res = await fetch(`${base}/api/priority`);
const data = await res.json(); const data = await res.json();
console.log(`load priority: ${JSON.stringify(data)}`); console.log(`load priority: ${JSON.stringify(data)}`);
$priority = data.priority; $priority.surfers = data.surfers;
$priority.round = data.round;
$priority.surfersCount = data.surfersCount;
} }
</script> </script>

View file

@ -4,10 +4,14 @@
import { dev } from '$app/environment'; import { dev } from '$app/environment';
import { priority } from '$lib/stores/priority.js'; import { priority } from '$lib/stores/priority.js';
let base;
if (dev) { if (dev) {
console.log('Dev mode'); console.log('Dev mode');
base = 'http://10.39.253.16:8080';
} else { } else {
console.log('Not dev mode'); console.log('Not dev mode');
base = '';
} }
const events = ['priority']; const events = ['priority'];
@ -24,7 +28,7 @@
// } // }
function StartSSE() { function StartSSE() {
let url = '/api/sse?'; let url = base + '/api/sse?';
for (let e in events) { for (let e in events) {
url += `event=${events[e]}&`; url += `event=${events[e]}&`;
} }
@ -36,12 +40,23 @@
console.log(`sse open ${Date.now()}`); console.log(`sse open ${Date.now()}`);
}; };
sse.onmessage = (e) => {
let Msg = JSON.parse(e.data);
console.log(JSON.stringify(Msg));
console.log(`surfers: ${Msg.data.priority}`);
$priority.surfers = Msg.data.surfers;
$priority.round = Msg.data.round;
$priority.surfersCount = Msg.data.surfersCount;
};
sse.addEventListener('priority', (e) => { sse.addEventListener('priority', (e) => {
let Msg = JSON.parse(e.data); let Msg = JSON.parse(e.data);
console.log(JSON.stringify(Msg)); console.log(JSON.stringify(Msg));
console.log(`surfers: ${Msg.data.priority}`); console.log(`surfers: ${Msg.data.priority}`);
$priority = Msg.data.priority; $priority.surfers = Msg.data.surfers;
SaveSession(); $priority.round = Msg.data.round;
$priority.surfersCount = Msg.data.surfersCount;
// SaveSession();
}); });
return () => { return () => {
@ -50,28 +65,27 @@
}; };
} }
function SaveSession() { // function SaveSession() {
window.sessionStorage.setItem('status', true); // window.sessionStorage.setItem('status', true);
window.sessionStorage.setItem('priority', JSON.stringify($priority)); // window.sessionStorage.setItem('priority', JSON.stringify($priority));
console.log(`saved: ${JSON.stringify($priority)}`); // console.log(`saved: ${JSON.stringify($priority)}`);
} // }
async function LoadPriority() { async function LoadPriority() {
const res = await fetch(`/api/priority`); const res = await fetch(`${base}/api/priority`);
const data = await res.json(); const data = await res.json();
console.log(`load priority: ${JSON.stringify(data)}`); console.log(`load priority: ${JSON.stringify(data)}`);
$priority = data.priority; $priority.surfers = data.surfers;
$priority.round = data.round;
$priority.surfersCount = data.surfersCount;
} }
onMount(async () => { onMount(async () => {
if (!dev) { const sse = StartSSE();
const sse = StartSSE();
} else {
const sse = 0;
}
if (window.sessionStorage.getItem('status')) { let pri = window.sessionStorage.getItem('priority')
$priority = JSON.parse(window.sessionStorage.getItem('priority')); if (pri) {
$priority = JSON.parse(pri);
console.log(`loaded: ${JSON.stringify($priority)}`); console.log(`loaded: ${JSON.stringify($priority)}`);
} }

View file

@ -21,16 +21,13 @@
let footer_height = 8; let footer_height = 8;
$: setup_height = (100 - footer_height) / $priority.surfersCount - 2.2 / $priority.surfersCount; $: setup_height = (100 - footer_height) / $priority.surfersCount - 2.2 / $priority.surfersCount;
$: if ($priority.surfers) { // $: if ($priority.surfers) {
SaveToLocalCahe(); // SaveToLocalCahe();
} // }
onMount(async () => { onMount(async () => {
let status = window.sessionStorage.getItem('status'); LoadFromLocalCache();
if (status) { console.log(`loaded: ${JSON.stringify($priority)}`);
LoadFromLocalCache();
// console.log(`loaded: ${JSON.stringify($priority.surfers)}`);
}
}); });
function hasDuplicateColors() { function hasDuplicateColors() {
@ -65,6 +62,7 @@
} }
ResetPriority(); ResetPriority();
start = true; start = true;
SaveToLocalCahe();
SendPriority(); SendPriority();
} }
@ -90,23 +88,44 @@
function ResetLocalCache() { function ResetLocalCache() {
console.log('ResetLocalCache'); console.log('ResetLocalCache');
window.sessionStorage.clear(); window.sessionStorage.clear();
window.sessionStorage.setItem('status', false);
console.log(`reset cache: ${JSON.parse(window.sessionStorage.getItem('priority'))}`);
priority.reset(); priority.reset();
SendPriority(); console.log(`reset store: ${$priority}`);
// SendPriority();
} }
function SaveToLocalCahe() { function SaveToLocalCahe() {
window.sessionStorage.setItem('status', true);
window.sessionStorage.setItem('priority', JSON.stringify($priority)); window.sessionStorage.setItem('priority', JSON.stringify($priority));
window.sessionStorage.setItem('start', JSON.stringify(start)); window.sessionStorage.setItem('start', JSON.stringify(start));
console.log(`update cache: ${JSON.stringify($priority)}`); console.log(`update cache: ${JSON.stringify($priority)}`);
} }
function LoadFromLocalCache() { function LoadFromLocalCache() {
$priority = JSON.parse(window.sessionStorage.getItem('priority')); let pri = window.sessionStorage.getItem('priority')
start = JSON.parse(window.sessionStorage.getItem('start')); if (pri) {
console.log(`load cache: ${JSON.stringify($priority)}`); $priority = JSON.parse(pri);
start = JSON.parse(window.sessionStorage.getItem('start'));
console.log(`load cache: ${JSON.stringify($priority)} - ${start}`);
} else {
console.log(`no cache found`);
}
}
async function SendPriority() {
if (dev) {
return;
}
const res = await fetch(`/api/priority`, {
method: 'POST',
body: JSON.stringify({
surfers: $priority.surfers,
round: $priority.round,
surfersCount: $priority.surfersCount
}),
headers: {
'Content-Type': 'application/json'
}
});
console.log(`SendPriority: ${JSON.stringify($priority)}`);
} }
async function ChangePriority(id) { async function ChangePriority(id) {
@ -167,22 +186,6 @@
SendPriority(); SendPriority();
} }
async function SendPriority() {
if (dev) {
return;
}
const res = await fetch(`/api/priority`, {
method: 'POST',
body: JSON.stringify({
piority: $priority
}),
headers: {
'Content-Type': 'application/json'
}
});
console.log(`SendPriority: ${JSON.stringify($priority)}`);
}
</script> </script>
<svelte:head> <svelte:head>