Werke table now contains all columns and is scrollable

This commit is contained in:
eclipse 2025-05-14 20:43:21 +02:00
parent c5fd83b407
commit 170b4d8a18
2 changed files with 61 additions and 33 deletions

View File

@ -12,33 +12,55 @@
{% include "_icons.svg" %}
<table id="werk-table">
<thead>
<tr>
<th>Titel</th>
<th>Untertitel</th>
<th>Reihe</th>
<th>Verlag</th>
<th>Werksform</th>
<th>Genre(s)</th>
<th colspan="2">Aktionen</th>
</tr>
</thead>
<tbody>
{% for werk in werke %}
<tr id="werk-{{ werk['id'] }}">
<td title="Titel">{{ werk["Titel"] }}</td>
<td title="Untertitel">{{ werk["Untertitel"] }}</td>
<td title="Reihe">{{ werk["Reihe"] }}</td>
<td title="Verlag">{{ werk["Verlag"] }}</td>
<td title="Werksform">{{ werk["Werksform"] }}</td>
<td title="Genres">{{ werk["Genre_list"] | join(", ") }}</td>
<td class="action action-update" data-id="{{ werk['id'] }}"><a href="{{ url_for('werk.read', id=werk['id']) }}" title="Werk ansehen/bearbeiten"><svg viewbox="0 0 24 24"><use href="#update" /></svg></a></td>
<td id="delete-{{ werk['id'] }}" class="action"><a onclick="return confirm('Eintrag wirklich löschen?');" href="{{ url_for('werk.delete', id=werk['id']) }}" title="Werk löschen"><svg viewbox="0 0 24 24"><use href="#delete" /></svg></a></td>
</tr>
{% endfor %}
</tbody>
</table>
<div class="overflow-auto">
<table id="werk-table" class="striped">
<thead>
<tr>
<th>Titel</th>
<th>Untertitel</th>
<th>Werksform</th>
<th>Reihe</th>
<th>Reihennummer</th>
<th>Verlag</th>
<th>Preis</th>
<th>Erscheinungsdatum</th>
<th>ISBN_13</th>
<th>ISBN_10</th>
<th>ISSN</th>
<th>Genre(s)</th>
<th>Herausgeber:in(nen)</th>
<th>Titelbild</th>
<th>Klappentext</th>
<th>Anmerkungen</th>
<th colspan="2">Aktionen</th>
</tr>
</thead>
<tbody>
{% for werk in werke %}
<tr id="werk-{{ werk['id'] }}">
<td title="Titel">{{ werk["Titel"] }}</td>
<td title="Untertitel">{{ werk["Untertitel"] }}</td>
<td title="Werksform">{{ werk["Werksform"] }}</td>
<td title="Reihe">{{ werk["Reihe"] }}</td>
<td title="Reihennummer">{{ werk["Reihennummer"] }}</td>
<td title="Verlag">{{ werk["Verlag"] }}</td>
<td title="Preis">{{ werk["Preis"] }}</td>
<td title="Erscheinungsdatum">{{ werk["Erscheinungsdatum"] }}</td>
<td title="ISBN_13">{{ werk["ISBN_13"] }}</td>
<td title="ISBN_10">{{ werk["ISBN_10"] }}</td>
<td title="ISSN">{{ werk["ISSN"] }}</td>
<td title="Genre(s)">{{ werk["Genre_list"] | join(", ") }}</td>
<td title="Herausgeber:in(nen)">{{ werk["Herausgeber_list"] | join(", ") }}</td>
<td title="Titelbild">{% if werk["Titelbild"] %}&#10004;{% else %}&#10008;{% endif %}</td>
<td title="Klappentext"{% if werk["Klappentext"] %} data-tooltip="{{ werk['Klappentext'] | replace('\n', ' &#13;&#10; ') | safe }}" data-placement="bottom">&#10004;{% else %}>&#10008;{% endif %}</td>
<td title="Anmerkungen">{{ werk["Anmerkungen"] }}</td>
<td class="action action-update" data-id="{{ werk['id'] }}"><a href="{{ url_for('werk.read', id=werk['id']) }}" title="Werk ansehen/bearbeiten"><svg viewbox="0 0 24 24"><use href="#update" /></svg></a></td>
<td id="delete-{{ werk['id'] }}" class="action"><a onclick="return confirm('Eintrag wirklich löschen?');" href="{{ url_for('werk.delete', id=werk['id']) }}" title="Werk löschen"><svg viewbox="0 0 24 24"><use href="#delete" /></svg></a></td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
{% endblock content %}
{% block script %}

View File

@ -18,13 +18,19 @@ def all():
"Titel": row.Werk.Titel,
"Untertitel": row.Werk.Untertitel or "",
"Werksform": row.Werksform.Werksform if row.Werksform else "",
"wf_id": row.Werk.Werksform or "",
"Verlag": row.Verlag.Verlag if row.Verlag else "",
"v_id": row.Werk.Verlag or "",
"Reihe": row.Reihe.Titel if row.Reihe else "",
"r_id": row.Werk.Reihe or "",
"Reihennummer": row.Werk.Reihennummer or "",
"Erscheinungsdatum": row.Werk.Erscheinungsdatum or "",
"ISBN_13": row.Werk.ISBN_13 or "",
"ISBN_10": row.Werk.ISBN_10 or "",
"ISSN": row.Werk.ISSN or "",
"Preis": row.Werk.Preis or "",
"Titelbild": True if row.Werk.Titelbild else False,
"Klappentext": row.Werk.Klappentext or "",
"Anmerkungen": row.Werk.Anmerkungen or "",
"Herausgeber_list": [wh.herausgeber.Name for wh in row.Werk.werk_herausgeber],
"Genre_list": [wg.genre.Genre for wg in row.Werk.werk_genre],
"g_id_list": row.Werk.genres
})
return render_template("views/werk.html", werke=werke)
@ -104,14 +110,14 @@ def update(id):
werk.Klappentext = request.form["form_Klappentext"] or None
werk.Anmerkungen = request.form["form_Anmerkungen"] or None
# update genre list by removing genres not in form selection and adding selected ones not currently in list
# update associated values: Genre
form_set = set(map(lambda g: int(g), request.form.getlist("form_Genre")))
for g in set(werk.genres) - form_set:
werk.genres.remove(g)
for g in form_set - set(werk.genres):
werk.genres.append(g)
# update herausgeber list by removing names not in form selection and adding selected ones not currently in list
# update associated values: Herausgeber
form_set = set(map(lambda h: int(h), request.form.getlist("form_Herausgeber")))
for h in set(werk.herausgeber) - form_set:
werk.herausgeber.remove(h)