You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
96 lines
3.5 KiB
96 lines
3.5 KiB
<%= form_with(model: entry, local: true) do |form| %>
|
|
<% if entry.errors.any? %>
|
|
<div class="alert alert-danger">
|
|
<h4><%= pluralize(entry.errors.count, "Fehler") %> verhinderten das Speichern:</h4>
|
|
<ul>
|
|
<% entry.errors.full_messages.each do |msg| %>
|
|
<li><%= msg %></li>
|
|
<% end %>
|
|
</ul>
|
|
</div>
|
|
<% end %>
|
|
|
|
<!-- Erste Zeile: Datum, Stunden, Minuten -->
|
|
<div class="row g-3 mt-1">
|
|
<div class="col-12 col-md-4">
|
|
<%= form.label :date, 'Datum', class: 'form-label' %>
|
|
<%= form.text_field :date,
|
|
class: 'form-control flatpickr',
|
|
data: { enable_time: false, allow_input: true },
|
|
value: (form.object.date || Date.today) %>
|
|
</div>
|
|
|
|
<div class="col-12 col-md-4">
|
|
<%= form.label :hours, 'Stunden', class: 'form-label' %>
|
|
<%= form.number_field :hours,
|
|
class: 'form-control',
|
|
min: 0,
|
|
value: form.object.hours || 0 %>
|
|
</div>
|
|
|
|
<div class="col-12 col-md-4">
|
|
<%= form.label :minutes, 'Minuten', class: 'form-label' %>
|
|
<%= form.number_field :minutes,
|
|
class: 'form-control',
|
|
min: 0, max: 59,
|
|
value: form.object.minutes || 0 %>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Weitere Felder: Typ, Art, Entfernung -->
|
|
<div class="row g-3 mt-1">
|
|
<div class="col-12">
|
|
<%= form.label :praktikums_typ, 'Praktikumstyp', class: 'form-label' %>
|
|
<%= form.select :praktikums_typ, Entry::PRAKTIKUMSTYPEN, {}, class: 'form-select' %>
|
|
</div>
|
|
|
|
<div class="col-12">
|
|
<%= form.label :entry_art, 'Art', class: 'form-label' %>
|
|
<%= form.select :entry_art, Entry::ENTRY_ARTEN, {}, class: 'form-select', id: 'entry_art_select' %>
|
|
</div>
|
|
|
|
<div class="col-12">
|
|
<%= form.label :distance_km, 'Entfernung (km) Gesamt', class: 'form-label' %>
|
|
<%= form.number_field :distance_km,
|
|
class: 'form-control',
|
|
min: 0,
|
|
value: form.object.distance_km || 0 %>
|
|
</div>
|
|
|
|
<div id="fortbildung-fields" style="<%= form.object.entry_art == "Fortbildung" ? '' : 'display: none;' %>">
|
|
<div class="col-12 col-md-4">
|
|
<%= form.label :beschreibung, 'Beschreibung', class: 'form-label' %>
|
|
<%= form.text_field :beschreibung, class: 'form-control' %>
|
|
</div>
|
|
|
|
<div class="col-12 col-md-4">
|
|
<%= form.label :kosten, 'Kosten (z. B. Teilnahmegebühr)', class: 'form-label' %>
|
|
<%= form.number_field :kosten, class: 'form-control', min: 0, step: 0.01 %>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
<!-- Buttons -->
|
|
<div class="mt-4">
|
|
<%= form.submit 'Speichern', class: 'btn btn-primary' %>
|
|
<%= link_to 'Zurück', entries_path, class: 'btn btn-secondary ms-2' %>
|
|
</div>
|
|
<% end %>
|
|
<script>
|
|
document.addEventListener("DOMContentLoaded", function () {
|
|
const entryArtSelect = document.getElementById("entry_art_select");
|
|
const fortbildungFields = document.getElementById("fortbildung-fields");
|
|
|
|
if (entryArtSelect && fortbildungFields) {
|
|
entryArtSelect.addEventListener("change", function () {
|
|
if (entryArtSelect.value === "Fortbildung") {
|
|
fortbildungFields.style.display = "block";
|
|
} else {
|
|
fortbildungFields.style.display = "none";
|
|
}
|
|
});
|
|
}
|
|
});
|
|
</script>
|