all repos — felt @ 331150a0ffc139f0d09f0ecac27f44f02a1bbd33

virtual tabletop for dungeons and dragons (and similar) using Go, MongoDB, and websockets

fix token preview, copy; bump to v0.2.1
Iris Lightshard nilix@nilfm.cc
PGP Signature
-----BEGIN PGP SIGNATURE-----

iQIzBAABCAAdFiEEkFh6dA+k/6CXFXU4O3+8IhROY5gFAmS2FHcACgkQO3+8IhRO
Y5j5oQ/+LzccOPtr42b3916pTwOGX4FFRUkxmpldJGjnzjcjffWMsXpJQDSyjViI
6RDhB+bTac1n57IfjBcmzO947gfKf0bEW1mGnjXMLBvhHoMAFHLAjL8JFOsLetgS
R6wsrGlZBixEY9qGz5bSDZBVy0MAeHLT5BPzC+BNGzlPqNVqxwllDzIp6ODUGRPN
qBgDULIFDPtmMg6Xp4JToj3+piHq+kcNuZ3vaUfj5jB6xpNAqQmB/R0mteaNXN4w
tqoU8CWmm1TrrkTQagxMUWxsjr0WZuQlto/KWmPblNKgsXnZZlS7awYnc9k1rdcy
9AkmHR6tgKZu0/Aq+Kcl0AeyLouAGu6IsYPqeU8V3ztHBoXKUmIvgvFTrrb/f5PU
tUiwBPDDlBHSjsHn54jjyrSSg3fAsAC1jR3S/KcIMirgrXBkUUwwtDfUlmmBC+rn
IRLxsKytffOnX2hUMIbOdiVnka3sJPu0OExTihJsmIa9g7psuAgh/WUmUbx2jJTE
/3x5a0f7VIfKCq8wEl4oDBKVwoneRHrjECbOMgAL+mvFkeEVUiHh/To5TjeoeJ3w
OAG6XTOPmbExiCyrGBHvhw0m0SILJinmG9Cr/Npe2kr3YqhJ5E46VAsM3EKD7pmM
ekWZUdubZIvh86bniFs+j8iaCgcMFFUo3svWrzu2IxH9GmfjVwc=
=Ooj8
-----END PGP SIGNATURE-----
commit

331150a0ffc139f0d09f0ecac27f44f02a1bbd33

parent

f1c56f63f18f9064f5c7ebd67cc96542b703647c

M static/admin.jsstatic/admin.js

@@ -153,8 +153,11 @@ tokenWidth.value = Math.floor(currentAspect * Number(tokenHeight.value));

break; } } - tokenCX.value = Number(tokenWidth.value)/2; - tokenCY.value = Number(tokenHeight.value)/2; + if (!tokenCX.value || source) { + tokenCX.value = Number(tokenWidth.value)/2; + } if (!tokenCY.value || source) { + tokenCY.value = Number(tokenHeight.value)/2; + } drawTokenOrigin(); } }

@@ -187,20 +190,26 @@ }

} } -function reinitializeSpritePreview() { +function reinitializeSpritePreview(existing = false) { const img = document.createElement("img"); img.src = tokenSpriteDropdown[tokenSpriteDropdown.selectedIndex].value; - const tokenNameParts = tokenSpriteDropdown[tokenSpriteDropdown.selectedIndex].text.split("."); - tokenNameParts.pop(); - tokenName.value = tokenNameParts.join("."); + if (!existing) { + const tokenNameParts = tokenSpriteDropdown[tokenSpriteDropdown.selectedIndex].text.split("."); + tokenNameParts.pop(); + tokenName.value = tokenNameParts.join("."); + } img.onload = () => { const w = img.naturalWidth; const h = img.naturalHeight; + if (!existing) { tokenWidth.value = w; tokenHeight.value = h; + tokenCX.value = "" + tokenCY.value = "" + } scaleSpritePreview(); }

@@ -261,7 +270,7 @@ tokenSpriteDropdown.selectedIndex = i;

break; } } - reinitializeSpritePreview(); + reinitializeSpritePreview(true); } }

@@ -500,7 +509,7 @@ tokenSpriteDropdown.selectedIndex = 0;

} createTokenForm.style.display = v ? "block" : "none"; tokenZone.style.display = v ? "none" : "block"; - reinitializeSpritePreview(); + previewZone.innerHTML = ""; } }
M static/index.htmlstatic/index.html

@@ -146,13 +146,13 @@ <button onclick="setTheme()">Apply</button><button onclick="resetTheme(defaultTheme)">Reset</button>

</form> </details> <div id="lag" style="display:none;">lag...</div> - <div class="ui_win" id="felt_info"><a href="https://hacklab.nilfm.cc/felt">felt v0.2.0</a> (<a href="https://hacklab.nilfm.cc/felt/raw/main/LICENSE">license</a>) | built with <a href="https://leafletjs.com">leaflet</a> (<a href="https://hacklab.nilfm.cc/felt/raw/main/LEAFLET_LICENSE">license</a>) </div> + <div class="ui_win" id="felt_info"><a href="https://hacklab.nilfm.cc/felt">felt v0.2.1</a> (<a href="https://hacklab.nilfm.cc/felt/raw/main/LICENSE">license</a>) | built with <a href="https://leafletjs.com">leaflet</a> (<a href="https://hacklab.nilfm.cc/felt/raw/main/LEAFLET_LICENSE">license</a>) </div> </nav> </body> <script src="./leaflet.js?v=1.9.4" type="text/javascript"></script> - <script src="./util.js?v=0.2.0" type="text/javascript"></script> - <script src="./map.js?v=0.2.0" type="text/javascript"></script> - <script src="./socket.js?v=0.2.0" type="text/javascript"></script> - <script src="./dice.js?v=0.2.0" type="text/javascript"></script> - <script src="./admin.js?v=0.2.0" type="text/javascript"></script> + <script src="./util.js?v=0.2.1" type="text/javascript"></script> + <script src="./map.js?v=0.2.1" type="text/javascript"></script> + <script src="./socket.js?v=0.2.1" type="text/javascript"></script> + <script src="./dice.js?v=0.2.1" type="text/javascript"></script> + <script src="./admin.js?v=0.2.1" type="text/javascript"></script> </html>
M static/map.jsstatic/map.js

@@ -20,6 +20,7 @@ map.setMaxBounds(cameraBounds);

if (init) { map.setView([0,0], 2); } + resizeMarkers(); } // this works but assumes the map is square (reasonable limitation I think)
M static/socket.jsstatic/socket.js

@@ -88,10 +88,12 @@

// the following few functions aren't socket related but they directly relate to the previous function function initSpritePreviewById(id) { - const img = document.createElement("img"); const token = tokens.find(t=>t.t.id == id); + let img = null; if (token && id) { + + img = document.createElement("img"); img.src = token.t.sprite; secondaryPreviewIdInput.value = id;

@@ -102,7 +104,9 @@ }

} dismissPreviewBtn.style.display = (token && id) ? "block" : "none"; secondaryPreviewZone.innerHTML = ""; - secondaryPreviewZone.appendChild(img); + if (img) { + secondaryPreviewZone.appendChild(img); + } } function dismissPreview() {
M templates/error.htmltemplates/error.html

@@ -15,6 +15,6 @@ <p class="error">{{ $params.ErrorMessage }}</p>

<p><a href="/table">Get back to gaming...</a></p> </main> </body> -<script src="./util.js?v=0.2.0" type="text/javascript"></script> +<script src="./util.js?v=0.2.1" type="text/javascript"></script> </html> <html>
M templates/register.htmltemplates/register.html

@@ -23,5 +23,5 @@ <span class="error">The registration token you provided is invalid;<br/> obtain a new one.</span>

{{end}} </main> </body> -<script src="/table/util.js?v=0.2.0" type="text/javascript"></script> +<script src="/table/util.js?v=0.2.1" type="text/javascript"></script> </html>
M templates/registered.htmltemplates/registered.html

@@ -19,5 +19,5 @@ <span class="error">Something went wrong; please try a different username or obtain a new registration code.</span>

{{end}} </main> </body> -<script src="/table/util.js?v=0.2.0" type="text/javascript"></script> +<script src="/table/util.js?v=0.2.1" type="text/javascript"></script> </html>