Aktualizace všech komentářů jako funkce (a aktualizace, ne vytvoření)

This commit is contained in:
Jonas Havelka 2025-01-22 20:23:12 +01:00
parent f369110cd3
commit 0af99d4f3e
2 changed files with 25 additions and 15 deletions

View file

@ -58,8 +58,8 @@
class Oprava {
static update_or_create(oprava_data) {
const id = oprava_data['id'];
if (id in opravy) opravy[id].update(oprava_data);
else new Oprava(oprava_data);
if (id in opravy) return opravy[id].update(oprava_data);
else return new Oprava(oprava_data);
}
#komentare;
@ -97,6 +97,7 @@
update(oprava_data) {
{# this.oprava_data = oprava_data; #}
this.set_status(oprava_data['status']);
return this;
};
set_status(status) {

View file

@ -7,21 +7,30 @@
{% include "korektury/korekturovatko/__komentar.html" %}
<script>
fetch('{% url "korektury_api_opravy_a_komentare" pdf.id %}')
.then(response => {
if (!response.ok) {alert('Něco se nepovedlo:' + response.statusText);}
else response.json().then(data => {
for (const oprava_data of data["context"]) {
const oprava = new Oprava(oprava_data);
for (const komentar_data of oprava_data["komentare"]) {
new Komentar(komentar_data, oprava);
/**
*
* @param {RequestInit} data
* @param {Boolean} catchError
*/
function update_all(data={}, catchError=true) { // FIXME není mi jasné, zda v {} nemá být `cache: "no-store"`, aby prohlížeč necachoval GET.
fetch('{% url "korektury_api_opravy_a_komentare" pdf.id %}', data)
.then(response => {
if (!response.ok && catchError) {alert('Něco se nepovedlo:' + response.statusText);}
else response.json().then(data => {
for (const oprava_data of data["context"]) {
const oprava = Oprava.update_or_create(oprava_data);
for (const komentar_data of oprava_data["komentare"]) {
Komentar.update_or_create(komentar_data, oprava);
}
}
}
place_comments();
});
})
.catch(error => {alert('Něco se nepovedlo:' + error);});
place_comments();
});
})
.catch(error => {if (catchError) alert('Něco se nepovedlo:' + error);});
}
update_all();
</script>
<form id='CSRF_form' style='display: none'>{% csrf_token %}</form>