diff --git a/admin/admin.go b/admin/admin.go index e3fd616..268335f 100644 --- a/admin/admin.go +++ b/admin/admin.go @@ -273,10 +273,11 @@ func apiListImages(next http.Handler, uploads string, uploadType string, udb aut } } } - w.WriteHeader(422) - next.ServeHTTP(w, req) - return + w.WriteHeader(422) + next.ServeHTTP(w, req) + return } + return http.HandlerFunc(handlerFunc) } @@ -284,7 +285,7 @@ func apiListImages(next http.Handler, uploads string, uploadType string, udb aut func apiDeleteImage(next http.Handler, uploads string, uploadType string, udb auth.UserStore, dbAdapter mongodb.DbAdapter) http.Handler { handlerFunc := func(w http.ResponseWriter, req *http.Request) { // put the path together - urlParams := req.Context().Value("params").(map[string]string) +urlParams := req.Context().Value("params").(map[string]string) tableName := urlParams["table"] tableKey := models.TableKey{ Name: tableName, @@ -307,20 +308,20 @@ func apiDeleteImage(next http.Handler, uploads string, uploadType string, udb au if ok { if dbAdapter.CheckTable(tableKey) { - // if the file exists, delete it and return 201 - filename := urlParams["file"] - fullPath := filepath.Join(uploads, tableName, uploadType, filename) - s, err := os.Stat(fullPath) - if err == nil && !s.IsDir() { - err = os.Remove(fullPath) - if err == nil { - w.WriteHeader(201) - next.ServeHTTP(w, req) - return - } - } - } - } + // if the file exists, delete it and return 201 + filename := urlParams["file"] + fullPath := filepath.Join(uploads, tableName, uploadType, filename) + s, err := os.Stat(fullPath) + if err == nil && !s.IsDir() { + err = os.Remove(fullPath) + if err == nil { + w.WriteHeader(201) + next.ServeHTTP(w, req) + return + } + } + } + } } // otherwise, return an error w.WriteHeader(500) diff --git a/gametable/server.go b/gametable/server.go index 27e6b81..1907be5 100644 --- a/gametable/server.go +++ b/gametable/server.go @@ -165,13 +165,14 @@ func (self *GameTableServer) publish(msg []byte) { } err = self.writeToDB(&tableMsg) + // sanitize auth for rebroadcast tableMsg.Auth = nil clean, err := json.Marshal(tableMsg) - fmt.Println(string(clean[:])) if err != nil { fmt.Println(err.Error()) return } + self.publishLimiter.Wait(context.Background()) for s, k := range self.subscribers { @@ -241,8 +242,6 @@ func (self *GameTableServer) writeToDB(tableMsg *models.TableMessage) error { } } } - - tableMsg.Auth = nil return nil } diff --git a/static/admin.js b/static/admin.js index 04c87e6..56615ce 100644 --- a/static/admin.js +++ b/static/admin.js @@ -40,8 +40,9 @@ async function getTable(name, pass) { infoHtml += ""; } adminZone.innerHTML = infoHtml; - } - else { + + // also, we have to fill and toggle the tokens window + } else { console.log(res.status); } } catch (err) { diff --git a/static/map.js b/static/map.js index 5e3d54e..8817863 100644 --- a/static/map.js +++ b/static/map.js @@ -1,9 +1,11 @@ let map = null; let mapImg = null; +let tokens = []; function initializeMap(mapImgUrl) { if (!map) { map = L.map('map', { minZoom: 0, maxZoom: 4, crs: L.CRS.Simple }); + map.on("zoomend", resizeMarkers); } if (mapImg) { mapImg.removeFrom(map); @@ -12,4 +14,37 @@ function initializeMap(mapImgUrl) { mapImg.addTo(map); map.setMaxBounds([[-180,180],[180,-180]]); map.setView([0,0], 2); +} + +// this works but assumes the map is square (reasonable limitation I think) +function resizeMarkers() { + tokens.forEach(t=>{ + const icon = t.m.options.icon; + const scaleFactor = mapImg._image.clientWidth / mapImg._image.naturalWidth; + icon.options.iconSize = [scaleFactor * t.sz[0], scaleFactor * t.sz[1]]; + t.m.setIcon(icon); + }); +} + +function addToken(token) { + const self = { sz: token.sz, m: L.marker(token.pos, { + icon: L.icon({ + iconUrl: token.img, + iconSize: token.sz, + }), + title: token.name, + draggable: true, + autoPan: true + })}; + + tokens.push(self); + self.m.addTo(map); +} + +// token for testing in browser console +const t = { + img: "https://nilfm.cc/favicon.png", + sz: [32,32], + pos: [0,0], + name: "test", } \ No newline at end of file diff --git a/static/style.css b/static/style.css index f55836b..1b5d6f1 100644 --- a/static/style.css +++ b/static/style.css @@ -155,7 +155,7 @@ pre { nav { display: grid; - grid-template-columns: 1fr 1fr; + grid-template-columns: auto 1fr; } .leaflet-container {