Compare commits
10 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b0672d7fde | ||
| fa21264ef3 | |||
|
0f934a6671
|
|||
|
d697c3e268
|
|||
|
|
eb59f30b38 | ||
| 455a3b4115 | |||
|
1ad010d079
|
|||
|
85ba0bf07c
|
|||
| c9f03b4f1f | |||
|
36b968998e
|
@@ -89,7 +89,7 @@ body {
|
||||
|
||||
/* Layout */
|
||||
.container {
|
||||
max-width: 1200px;
|
||||
max-width: 1250px;
|
||||
margin: 0 auto;
|
||||
padding: 0 20px;
|
||||
}
|
||||
@@ -165,6 +165,7 @@ h2 {
|
||||
input[type="text"],
|
||||
input[type="email"],
|
||||
input[type="number"],
|
||||
input[type="date"],
|
||||
select,
|
||||
textarea {
|
||||
width: 100%;
|
||||
@@ -178,6 +179,14 @@ textarea {
|
||||
font-family: inherit;
|
||||
}
|
||||
|
||||
/* Normalize date input appearance */
|
||||
input[type="date"] {
|
||||
-webkit-appearance: none;
|
||||
appearance: none;
|
||||
font-family: inherit;
|
||||
/* Ensure text is legible and consistent */
|
||||
}
|
||||
|
||||
textarea {
|
||||
resize: vertical;
|
||||
min-height: 80px;
|
||||
@@ -231,6 +240,13 @@ input[type="radio"] { accent-color: var(--control-accent); }
|
||||
}
|
||||
[data-theme="dark"] .btn-secondary:hover { background: #1f2b3f; }
|
||||
|
||||
/* Generic disabled button state */
|
||||
.btn:disabled {
|
||||
opacity: 0.55;
|
||||
cursor: not-allowed;
|
||||
filter: grayscale(0.15);
|
||||
}
|
||||
|
||||
.actions {
|
||||
margin-top: 16px;
|
||||
display: flex;
|
||||
@@ -528,7 +544,8 @@ input[type="radio"] { accent-color: var(--control-accent); }
|
||||
top: 20px;
|
||||
right: 20px;
|
||||
background: var(--card-bg);
|
||||
border: 1px solid #22c55e;
|
||||
border: 1px solid hsl(142, 82%, 30%);
|
||||
background-color: hsl(142, 71%, 45%);
|
||||
border-radius: 12px;
|
||||
box-shadow: 0 10px 40px rgba(0,0,0,0.2);
|
||||
padding: 16px 20px;
|
||||
|
||||
@@ -84,7 +84,7 @@
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-field">
|
||||
<label for="classname">Lehrveranstaltungsname</label>
|
||||
<label for="classname">Veranstaltungsname</label>
|
||||
<input type="text" name="classname" id="classname" required>
|
||||
</div>
|
||||
<div class="form-field">
|
||||
@@ -103,13 +103,13 @@
|
||||
|
||||
<h2>Medien</h2>
|
||||
<div class="media-controls">
|
||||
<button type="button" class="btn btn-secondary" onclick="addMediaType('monografie')">
|
||||
<button type="button" id="btn-monografie" class="btn btn-secondary" onclick="addMediaType('monografie')" title="Monografie Sektion hinzufügen">
|
||||
<span class="mdi mdi-book"></span> + Monografie
|
||||
</button>
|
||||
<button type="button" class="btn btn-secondary" onclick="addMediaType('zeitschriftenartikel')">
|
||||
<button type="button" id="btn-zeitschriftenartikel" class="btn btn-secondary" onclick="addMediaType('zeitschriftenartikel')" title="Zeitschriftenartikel Sektion hinzufügen">
|
||||
<span class="mdi mdi-newspaper"></span> + Zeitschriftenartikel
|
||||
</button>
|
||||
<button type="button" class="btn btn-secondary" onclick="addMediaType('herausgeberwerk')">
|
||||
<button type="button" id="btn-herausgeberwerk" class="btn btn-secondary" onclick="addMediaType('herausgeberwerk')" title="Herausgeberwerk Sektion hinzufügen">
|
||||
<span class="mdi mdi-book-multiple"></span> + Herausgeberwerk
|
||||
</button>
|
||||
</div>
|
||||
@@ -173,6 +173,9 @@
|
||||
|
||||
// Media management functions (global scope for onclick handlers)
|
||||
function addMediaType(type) {
|
||||
const btn = document.getElementById('btn-' + type);
|
||||
// Prevent duplicate sections of same type
|
||||
if (btn && btn.disabled) { return; }
|
||||
const container = document.getElementById('media-sections');
|
||||
const sectionId = 'section-' + sectionCounter++;
|
||||
|
||||
@@ -188,7 +191,7 @@
|
||||
title = 'Monografie';
|
||||
tableHtml = '<table class="data-table media-table" id="table-' + sectionId + '">' +
|
||||
'<tr>' +
|
||||
'<th>Autor (Nachname, Vorname)</th>' +
|
||||
'<th>Autor<br>(Nachname, Vorname)</th>' +
|
||||
'<th>Jahr</th>' +
|
||||
'<th>Auflage</th>' +
|
||||
'<th>Titel</th>' +
|
||||
@@ -202,7 +205,7 @@
|
||||
title = 'Zeitschriftenartikel';
|
||||
tableHtml = '<table class="data-table media-table" id="table-' + sectionId + '">' +
|
||||
'<tr>' +
|
||||
'<th>Autor (Nachname, Vorname)</th>' +
|
||||
'<th>Autor<br>(Nachname, Vorname)</th>' +
|
||||
'<th>Jahr</th>' +
|
||||
'<th>Band</th>' +
|
||||
'<th>Titel des Artikels</th>' +
|
||||
@@ -217,11 +220,11 @@
|
||||
title = 'Herausgeberwerk';
|
||||
tableHtml = '<table class="data-table media-table" id="table-' + sectionId + '">' +
|
||||
'<tr>' +
|
||||
'<th>Herausgeber (Nachname, Vorname)</th>' +
|
||||
'<th>Herausgeber<br>(Nachname, Vorname)</th>' +
|
||||
'<th>Titel des Werks</th>' +
|
||||
'<th>Jahr</th>' +
|
||||
'<th>Auflage</th>' +
|
||||
'<th>Autor des Artikels (Nachname, Vorname)</th>' +
|
||||
'<th>Autor des Artikels<br>(Nachname, Vorname)</th>' +
|
||||
'<th>Titel des Artikels</th>' +
|
||||
'<th>Signatur</th>' +
|
||||
'<th>Seiten von</th>' +
|
||||
@@ -243,6 +246,11 @@
|
||||
'</button>';
|
||||
|
||||
container.appendChild(section);
|
||||
// Disable button for this type until section removed
|
||||
if (btn) {
|
||||
btn.disabled = true;
|
||||
btn.title = 'Sektion bereits hinzugefügt – entfernen zum erneuten Hinzufügen';
|
||||
}
|
||||
|
||||
// Add first row automatically
|
||||
addMediaRow(sectionId, type);
|
||||
@@ -314,6 +322,7 @@
|
||||
const section = document.getElementById(sectionId);
|
||||
if (section) {
|
||||
if (confirm('Möchten Sie diese Sektion wirklich entfernen?')) {
|
||||
const type = section.getAttribute('data-type');
|
||||
// Clean up tracking for removed rows
|
||||
const rows = section.querySelectorAll('tr[id]');
|
||||
rows.forEach(row => {
|
||||
@@ -323,6 +332,12 @@
|
||||
}
|
||||
});
|
||||
section.remove();
|
||||
// Re-enable button for this media type
|
||||
const btn = document.getElementById('btn-' + type);
|
||||
if (btn) {
|
||||
btn.disabled = false;
|
||||
btn.title = 'Sektion hinzufügen';
|
||||
}
|
||||
updateSubmitButton();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[project]
|
||||
name = "semapform"
|
||||
version = "0.2.0"
|
||||
version = "0.2.2"
|
||||
description = "Add your description here"
|
||||
readme = "README.md"
|
||||
requires-python = ">=3.13"
|
||||
@@ -15,7 +15,7 @@ dependencies = [
|
||||
]
|
||||
|
||||
[tool.bumpversion]
|
||||
current_version = "0.2.0"
|
||||
current_version = "0.2.2"
|
||||
parse = "(?P<major>\\d+)\\.(?P<minor>\\d+)\\.(?P<patch>\\d+)"
|
||||
serialize = ["{major}.{minor}.{patch}"]
|
||||
search = "{current_version}"
|
||||
|
||||
Reference in New Issue
Block a user