Save hashed PW. Simplify model update. Bugfixes & improvements. Working user-settings & games.

This commit is contained in:
MaxJa4
2024-01-18 19:00:32 +01:00
parent f8ac93f163
commit f2ab72ba1e
20 changed files with 310 additions and 113 deletions

View File

@@ -37,7 +37,7 @@
const submitButton = addPlayerModal.querySelector('button[name="submit"]');
const playerName = addPlayerModal.querySelector('#playerName');
const clanName = addPlayerModal.querySelector('#playerClanName');
const errorDiv = editPlayerModal.querySelector('.error-message');
const errorDiv = addPlayerModal.querySelector('.error-message');
const homeClanListIndex = document.getElementById('home-clan').selectedIndex;
const oppClanListIndex = document.getElementById('opponent-clan').selectedIndex;
@@ -67,6 +67,12 @@
"Content-type": "application/json; charset=UTF-8"
}
})
.then(response => {
if (!response.ok) {
throw new Error('Hinzufügen fehlgeschlagen!\nSpielername existiert möglichweise bereits.');
}
return response.text();
})
.then(() => {
const sameClan = homeClanListIndex === oppClanListIndex;
if (playerList.id === 'home-player-list' || sameClan)

View File

@@ -64,6 +64,12 @@
"Content-type": "application/json; charset=UTF-8"
}
})
.then(response => {
if (!response.ok) {
throw new Error('Änderung fehlgeschlagen!\nSpielername existiert möglichweise bereits.');
}
return response.text();
})
.then(() => {
const sameClan = homeClanListIndex === oppClanListIndex;
if (playerList.id === 'home-player-list' || sameClan)

View File

@@ -13,7 +13,7 @@
<label class="col-form-label col-form-label-lg" for="games">Aktuelles Spiel:</label>
</div>
<div class="col">
<select class="form-select form-select-lg" id="games">
<select class="form-select form-select-lg" id="games" hx-get="/game_html" hx-target="#games" hx-trigger="load">
<!-- fill dynamically with available games -->
</select>
</div>
@@ -41,7 +41,79 @@
</div>
<script lang="javascript">
// TBD
document.addEventListener('DOMContentLoaded', function() {
const settingsModal = document.getElementById('settingsModal');
const settingsModalBS = new bootstrap.Modal('#settingsModal');
const submitButton = settingsModal.querySelector('button[name="submit"]');
let submitSettingsHandler = null;
const games = document.getElementById('games');
const squadColors = document.getElementById('settingsSquadColors');
const calcMedian = document.getElementById('settingsCalcMedian');
const useCache = document.getElementById('settingsUseCache');
function createSubmitSettingsHandler() {
return function submitSettingsHandler(e) {
let activeGameId = games.options[games.selectedIndex].value;
if (activeGameId === '') {
alert('Bitte wähle ein Spiel aus.');
return;
}
activeGameId = parseInt(activeGameId);
fetch("/settings", {
method: "PATCH",
body: JSON.stringify({
active_game_id: activeGameId,
squad_colors: squadColors.checked,
calc_median: calcMedian.checked,
use_cache: useCache.checked
}),
headers: {
"Content-type": "application/json; charset=UTF-8"
}
})
.then(response => {
if (!response.ok) {
throw new Error('Server error');
}
})
.then(() => {
settingsModalBS.hide();
})
.catch((error) => {
alert('Fehler beim Speichern der Einstellungen: ' + error.message);
});
}
}
if (settingsModal) {
settingsModal.addEventListener('show.bs.modal', event => {
submitSettingsHandler = createSubmitSettingsHandler();
submitButton.addEventListener('click', submitSettingsHandler);
fetch("/settings", {
method: "GET",
headers: {
"Content-type": "application/json; charset=UTF-8"
}
})
.then((response) => {
return response.json();
})
.then((result) => {
console.log(result);
games.selectedIndex = games.querySelector(`option[value="${result['active_game_id']}"]`).index;
squadColors.checked = result['squad_colors'];
calcMedian.value = result['calc_median'];
useCache.value = result['use_cache'];
})
.catch((error) => {
alert('Fehler beim Laden der Einstellungen: ' + error.message);
});
});
}
});
</script>
{{ end }}