|
|
@ -1,218 +1,216 @@ |
|
|
|
|
|
|
|
|
<h1 class="mb-4">Meine Einträge</h1> |
|
|
|
|
|
|
|
|
|
|
|
<!-- 🔢 Zusammenfassung --> |
|
|
|
|
|
<div class="mb-4"> |
|
|
|
|
|
<div class="row row-cols-1 row-cols-md-2 row-cols-lg-3 g-4"> |
|
|
|
|
|
|
|
|
|
|
|
<div class="col rounded border shadow-sm p-3"> |
|
|
|
|
|
<h5>🚗 Fahrtkosten (Kilometergeld)</h5> |
|
|
|
|
|
<% @total_kilometer_costs_by_year.each do |year, sum| %> |
|
|
|
|
|
<p><strong><%= year %>:</strong> |
|
|
|
|
|
<%= number_to_currency(sum, unit: "€", separator: ",", delimiter: ".", precision: 2) %> |
|
|
|
|
|
</p> |
|
|
|
|
|
<% end %> |
|
|
|
|
|
</div> |
|
|
|
|
|
|
|
|
<h1 class="mb-4">Meine Einträge</h1> |
|
|
|
|
|
|
|
|
|
|
|
<!-- 🔢 Zusammenfassung --> |
|
|
|
|
|
<div class="container my-4 rounded border shadow-sm py-3 px-4"> |
|
|
|
|
|
<div class="row row-cols-1 row-cols-md-2 row-cols-lg-3 g-4"> |
|
|
|
|
|
|
|
|
|
|
|
<div class="col rounded border shadow-sm p-3"> |
|
|
|
|
|
<h5>🚗 Fahrtkosten (Kilometergeld)</h5> |
|
|
|
|
|
<% @total_kilometer_costs_by_year.each do |year, sum| %> |
|
|
|
|
|
<p><strong><%= year %>:</strong> |
|
|
|
|
|
<%= number_to_currency(sum, unit: "€", separator: ",", delimiter: ".", precision: 2) %> |
|
|
|
|
|
</p> |
|
|
|
|
|
<% end %> |
|
|
|
|
|
</div> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="col rounded border shadow-sm p-3"> |
|
|
|
|
|
<h5>💶 Fortbildungskosten</h5> |
|
|
|
|
|
<% @fortbildungskosten_by_year.each do |year, sum| %> |
|
|
|
|
|
<p><strong><%= year %>:</strong> |
|
|
|
|
|
<%= number_to_currency(sum, unit: "€", separator: ",", delimiter: ".", precision: 2) %> |
|
|
|
|
|
</p> |
|
|
|
|
|
<% end %> |
|
|
|
|
|
</div> |
|
|
|
|
|
|
|
|
|
|
|
<div class="col rounded border shadow-sm p-3"> |
|
|
|
|
|
<h5>🧠 Selbsterfahrungskosten</h5> |
|
|
|
|
|
<% @selbsterfahrungskosten_by_year.each do |year, sum| %> |
|
|
|
|
|
<p><strong><%= year %>:</strong> |
|
|
|
|
|
<%= number_to_currency(sum, unit: "€", separator: ",", delimiter: ".", precision: 2) %> |
|
|
|
|
|
</p> |
|
|
|
|
|
<% end %> |
|
|
|
|
|
</div> |
|
|
|
|
|
|
|
|
<div class="col rounded border shadow-sm p-3"> |
|
|
|
|
|
<h5>💶 Fortbildungskosten</h5> |
|
|
|
|
|
<% @fortbildungskosten_by_year.each do |year, sum| %> |
|
|
|
|
|
<p><strong><%= year %>:</strong> |
|
|
|
|
|
<%= number_to_currency(sum, unit: "€", separator: ",", delimiter: ".", precision: 2) %> |
|
|
|
|
|
</p> |
|
|
|
|
|
<% end %> |
|
|
|
|
|
</div> |
|
|
|
|
|
|
|
|
<div class="col rounded border shadow-sm p-3"> |
|
|
|
|
|
<h5>👨🏫 Supervision</h5> |
|
|
|
|
|
<% @selbstsupervision_by_year.each do |year, sum| %> |
|
|
|
|
|
<p><strong><%= year %>:</strong> |
|
|
|
|
|
<%= number_to_currency(sum, unit: "€", separator: ",", delimiter: ".", precision: 2) %> |
|
|
|
|
|
</p> |
|
|
|
|
|
<% end %> |
|
|
|
|
|
</div> |
|
|
|
|
|
|
|
|
<div class="col rounded border shadow-sm p-3"> |
|
|
|
|
|
<h5>🧠 Selbsterfahrungskosten</h5> |
|
|
|
|
|
<% @selbsterfahrungskosten_by_year.each do |year, sum| %> |
|
|
|
|
|
<p><strong><%= year %>:</strong> |
|
|
|
|
|
<%= number_to_currency(sum, unit: "€", separator: ",", delimiter: ".", precision: 2) %> |
|
|
|
|
|
</p> |
|
|
|
|
|
<% end %> |
|
|
|
|
|
</div> |
|
|
|
|
|
|
|
|
<div class="col rounded border shadow-sm p-3"> |
|
|
|
|
|
<h5>📊 Gesamtkosten</h5> |
|
|
|
|
|
<% @allekosten_by_year.each do |year, sum| %> |
|
|
|
|
|
<p><strong><%= year %>:</strong> |
|
|
|
|
|
<%= number_to_currency(sum, unit: "€", separator: ",", delimiter: ".", precision: 2) %> |
|
|
|
|
|
</p> |
|
|
|
|
|
<% end %> |
|
|
|
|
|
</div> |
|
|
|
|
|
|
|
|
<div class="col rounded border shadow-sm p-3"> |
|
|
|
|
|
<h5>👨🏫 Supervision</h5> |
|
|
|
|
|
<% @selbstsupervision_by_year.each do |year, sum| %> |
|
|
|
|
|
<p><strong><%= year %>:</strong> |
|
|
|
|
|
<%= number_to_currency(sum, unit: "€", separator: ",", delimiter: ".", precision: 2) %> |
|
|
|
|
|
</p> |
|
|
|
|
|
<% end %> |
|
|
|
|
|
</div> |
|
|
|
|
|
|
|
|
<div class="col rounded border shadow-sm p-3"> |
|
|
|
|
|
<h5>🕒 Gesamtzeit</h5> |
|
|
|
|
|
<p><strong><%= @total_minutes / 60 %> h <%= @total_minutes % 60 %> min</strong></p> |
|
|
|
|
|
</div> |
|
|
|
|
|
|
|
|
<div class="col rounded border shadow-sm p-3"> |
|
|
|
|
|
<h5>📊 Gesamtkosten</h5> |
|
|
|
|
|
<% @allekosten_by_year.each do |year, sum| %> |
|
|
|
|
|
<p><strong><%= year %>:</strong> |
|
|
|
|
|
<%= number_to_currency(sum, unit: "€", separator: ",", delimiter: ".", precision: 2) %> |
|
|
|
|
|
</p> |
|
|
|
|
|
<% end %> |
|
|
|
|
|
</div> |
|
|
|
|
|
|
|
|
|
|
|
<div class="col rounded border shadow-sm p-3"> |
|
|
|
|
|
<h5>🕒 Gesamtzeit</h5> |
|
|
|
|
|
<p><strong><%= @total_minutes / 60 %> h <%= @total_minutes % 60 %> min</strong></p> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
|
|
|
</div> |
|
|
</div> |
|
|
|
|
|
</div> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- 📊 Übersicht je Kombination --> |
|
|
|
|
|
<div class="mb-4"> |
|
|
|
|
|
<h4>📊 Übersicht je Kombination</h4> |
|
|
|
|
|
<div class="table-responsive"> |
|
|
|
|
|
<table class="table table-bordered table-sm table-striped"> |
|
|
|
|
|
<thead class="table-light"> |
|
|
|
|
|
<tr> |
|
|
|
|
|
<th>Typ</th> |
|
|
|
|
|
<th>Art</th> |
|
|
|
|
|
<th>Verbleibend</th> |
|
|
|
|
|
<th>Soll (h)</th> |
|
|
|
|
|
<th>Wöchentlich</th> |
|
|
|
|
|
<th>Vorauss. Ende</th> |
|
|
|
|
|
</tr> |
|
|
|
|
|
</thead> |
|
|
|
|
|
<tbody> |
|
|
|
|
|
<% ["propädeutikum", "fachspezifikum"].each do |typ| %> |
|
|
|
|
|
<% ["Praktikum", "Selbsterfahrung", "Supervision"].each do |art| %> |
|
|
|
|
|
<% remaining = @remaining_minutes_matrix.dig(typ, art) %> |
|
|
|
|
|
<% soll = current_user.required_hours_matrix.dig(typ, art) %> |
|
|
|
|
|
<% weekly = current_user.weekly_target_matrix.dig(typ, art) %> |
|
|
|
|
|
<% ende = @estimated_end_by_typ_art.dig(typ, art) %> |
|
|
|
|
|
|
|
|
|
|
|
<% if remaining.present? || soll.present? || weekly.present? %> |
|
|
|
|
|
<tr> |
|
|
|
|
|
<td><%= typ.capitalize %></td> |
|
|
|
|
|
<td><%= art.capitalize %></td> |
|
|
|
|
|
<td><%= remaining ? "#{remaining / 60} h #{remaining % 60} min" : "—" %></td> |
|
|
|
|
|
<td><%= soll || "—" %> h</td> |
|
|
|
|
|
<td><%= weekly || "—" %> h/Woche</td> |
|
|
|
|
|
<td><%= ende.present? ? ende.strftime("%d.%m.%Y") : "—" %></td> |
|
|
|
|
|
</tr> |
|
|
|
|
|
<% end %> |
|
|
|
|
|
|
|
|
<!-- 📊 Übersicht je Kombination --> |
|
|
|
|
|
<div class="mb-4 rounded border shadow-sm p-3"> |
|
|
|
|
|
<h4>📊 Übersicht je Kombination</h4> |
|
|
|
|
|
<div class="table-responsive"> |
|
|
|
|
|
<table class="table table-bordered table-sm table-striped"> |
|
|
|
|
|
<thead class="table-light"> |
|
|
|
|
|
<tr> |
|
|
|
|
|
<th>Typ</th> |
|
|
|
|
|
<th>Art</th> |
|
|
|
|
|
<th>Verbleibend</th> |
|
|
|
|
|
<th>Soll (h)</th> |
|
|
|
|
|
<th>Wöchentlich</th> |
|
|
|
|
|
<th>Vorauss. Ende</th> |
|
|
|
|
|
</tr> |
|
|
|
|
|
</thead> |
|
|
|
|
|
<tbody> |
|
|
|
|
|
<% ["propädeutikum", "fachspezifikum"].each do |typ| %> |
|
|
|
|
|
<% ["Praktikum", "Selbsterfahrung", "Supervision"].each do |art| %> |
|
|
|
|
|
<% remaining = @remaining_minutes_matrix.dig(typ, art) %> |
|
|
|
|
|
<% soll = current_user.required_hours_matrix.dig(typ, art) %> |
|
|
|
|
|
<% weekly = current_user.weekly_target_matrix.dig(typ, art) %> |
|
|
|
|
|
<% ende = @estimated_end_by_typ_art.dig(typ, art) %> |
|
|
|
|
|
|
|
|
|
|
|
<% if remaining.present? || soll.present? || weekly.present? %> |
|
|
|
|
|
<tr> |
|
|
|
|
|
<td><%= typ.capitalize %></td> |
|
|
|
|
|
<td><%= art.capitalize %></td> |
|
|
|
|
|
<td><%= remaining ? "#{remaining / 60} h #{remaining % 60} min" : "—" %></td> |
|
|
|
|
|
<td><%= soll || "—" %> h</td> |
|
|
|
|
|
<td><%= weekly || "—" %> h/Woche</td> |
|
|
|
|
|
<td><%= ende.present? ? ende.strftime("%d.%m.%Y") : "—" %></td> |
|
|
|
|
|
</tr> |
|
|
<% end %> |
|
|
<% end %> |
|
|
<% end %> |
|
|
<% end %> |
|
|
</tbody> |
|
|
|
|
|
</table> |
|
|
|
|
|
</div> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="container my-4 rounded border shadow-sm p-3"> |
|
|
|
|
|
<h4 class="mb-4">⏱ Timer</h4> |
|
|
|
|
|
<% if @running_entry.present? %> |
|
|
|
|
|
<div class="alert alert-info d-flex justify-content-between align-items-center"> |
|
|
|
|
|
<div> |
|
|
|
|
|
<strong>Laufender Eintrag:</strong> |
|
|
|
|
|
<%= @running_entry.praktikums_typ %> – <%= @running_entry.entry_art %><br> |
|
|
|
|
|
Gestartet: <%= l(@running_entry.start_time, format: :short) %><br> |
|
|
|
|
|
Dauer: <span id="live-timer">Berechne …</span> |
|
|
|
|
|
</div> |
|
|
|
|
|
<div> |
|
|
|
|
|
<%= button_to '⏹️ Stoppen', stop_timer_entry_path(@running_entry), method: :post, class: "btn btn-danger" %> |
|
|
|
|
|
</div> |
|
|
|
|
|
</div> |
|
|
|
|
|
<% end %> |
|
|
<% end %> |
|
|
|
|
|
</tbody> |
|
|
|
|
|
</table> |
|
|
|
|
|
</div> |
|
|
|
|
|
|
|
|
<div class="mb-4 row" > |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</div> |
|
|
|
|
|
|
|
|
<%= form_with url: start_timer_entries_path, method: :post, local: true do %> |
|
|
|
|
|
<div class="row g-2 align-items-end"> |
|
|
|
|
|
<div class="col-md-4"> |
|
|
|
|
|
<%= label_tag :typ, 'Typ' %> |
|
|
|
|
|
<%= select_tag :typ, options_for_select(Entry::PRAKTIKUMSTYPEN), class: "form-select" %> |
|
|
|
|
|
</div> |
|
|
|
|
|
|
|
|
<div class="container my-4 rounded border shadow-sm p-3"> |
|
|
|
|
|
<h4 class="mb-4">⏱ Timer</h4> |
|
|
|
|
|
<% if @running_entry.present? %> |
|
|
|
|
|
<div class="alert alert-info d-flex justify-content-between align-items-center"> |
|
|
|
|
|
<div> |
|
|
|
|
|
<strong>Laufender Eintrag:</strong> |
|
|
|
|
|
<%= @running_entry.praktikums_typ %> – <%= @running_entry.entry_art %><br> |
|
|
|
|
|
Gestartet: <%= l(@running_entry.start_time, format: :short) %><br> |
|
|
|
|
|
Dauer: <span id="live-timer">Berechne …</span> |
|
|
|
|
|
</div> |
|
|
|
|
|
<div> |
|
|
|
|
|
<%= button_to '⏹️ Stoppen', stop_timer_entry_path(@running_entry), method: :post, class: "btn btn-danger" %> |
|
|
|
|
|
</div> |
|
|
|
|
|
</div> |
|
|
|
|
|
<% end %> |
|
|
|
|
|
|
|
|
<div class="col-md-4"> |
|
|
|
|
|
<%= label_tag :art, 'Art' %> |
|
|
|
|
|
<%= select_tag :art, options_for_select(Entry::ENTRY_ARTEN), class: "form-select" %> |
|
|
|
|
|
</div> |
|
|
|
|
|
|
|
|
<div class="mb-4 row"> |
|
|
|
|
|
|
|
|
<div class="col-md-4"> |
|
|
|
|
|
<%= submit_tag '▶️ Start', class: "btn btn-success w-100", disabled: @running_entry.present? %> |
|
|
|
|
|
</div> |
|
|
|
|
|
</div> |
|
|
|
|
|
<% end %> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<%= form_with url: start_timer_entries_path, method: :post, local: true do %> |
|
|
|
|
|
<div class="row g-2 align-items-end"> |
|
|
|
|
|
<div class="col-md-4"> |
|
|
|
|
|
<%= label_tag :typ, 'Typ' %> |
|
|
|
|
|
<%= select_tag :typ, options_for_select(Entry::PRAKTIKUMSTYPEN), class: "form-select" %> |
|
|
|
|
|
</div> |
|
|
|
|
|
|
|
|
|
|
|
<div class="col-md-4"> |
|
|
|
|
|
<%= label_tag :art, 'Art' %> |
|
|
|
|
|
<%= select_tag :art, options_for_select(Entry::ENTRY_ARTEN), class: "form-select" %> |
|
|
|
|
|
</div> |
|
|
|
|
|
|
|
|
|
|
|
<div class="col-md-4"> |
|
|
|
|
|
<%= submit_tag '▶️ Start', class: "btn btn-success w-100", disabled: @running_entry.present? %> |
|
|
|
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
<% end %> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</div> |
|
|
</div> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<%= link_to '➕ Neuer Eintrag', new_entry_path, class: 'btn btn-info mt-3 w-100 w-md-auto mb-3' %> |
|
|
|
|
|
|
|
|
</div> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<%= link_to '➕ Neuer Eintrag', new_entry_path, class: 'btn btn-info mt-3 w-100 w-md-auto mb-3' %> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- 📋 Tabelle aller Einträge --> |
|
|
|
|
|
<div class="m-1"> |
|
|
|
|
|
<h4 class="mb-3">📋 Einträge</h4> |
|
|
|
|
|
|
|
|
|
|
|
<div class="mb-3"> |
|
|
|
|
|
<input type="text" id="entryFilter" class="form-control" placeholder="🔍 Filter nach Datum, Typ, Art …"> |
|
|
|
|
|
</div> |
|
|
|
|
|
|
|
|
|
|
|
<div class="table-responsive"> |
|
|
|
|
|
<table class="table table-striped table-hover table-bordered" id="entriesTable"> |
|
|
|
|
|
<thead> |
|
|
|
|
|
|
|
|
<!-- 📋 Tabelle aller Einträge --> |
|
|
|
|
|
<div class="mb-4 rounded border shadow-sm p-3"> |
|
|
|
|
|
<h4 class="mb-3">📋 Einträge</h4> |
|
|
|
|
|
|
|
|
|
|
|
<div class="mb-3"> |
|
|
|
|
|
<input type="text" id="entryFilter" class="form-control" placeholder="🔍 Filter nach Datum, Typ, Art …"> |
|
|
|
|
|
</div> |
|
|
|
|
|
|
|
|
|
|
|
<div class="table-responsive"> |
|
|
|
|
|
<table class="table table-striped table-hover table-bordered" id="entriesTable"> |
|
|
|
|
|
<thead> |
|
|
|
|
|
<tr> |
|
|
|
|
|
<th data-sort-index="0" class="sortable">Datum</th> |
|
|
|
|
|
<th data-sort-index="1" class="sortable">Zeit</th> |
|
|
|
|
|
<th data-sort-index="2" class="sortable">Typ</th> |
|
|
|
|
|
<th data-sort-index="3" class="sortable">Art</th> |
|
|
|
|
|
<th data-sort-index="4" class="sortable">Beschreibung</th> |
|
|
|
|
|
<th data-sort-index="5" class="sortable">Kilometer</th> |
|
|
|
|
|
<th data-sort-index="6" class="sortable">Pauschale</th> |
|
|
|
|
|
<th data-sort-index="7" class="sortable">Kosten</th> |
|
|
|
|
|
<th>Aktionen</th> |
|
|
|
|
|
</tr> |
|
|
|
|
|
</thead> |
|
|
|
|
|
<tbody> |
|
|
|
|
|
<% @entries.each do |entry| %> |
|
|
<tr> |
|
|
<tr> |
|
|
<th data-sort-index="0" class="sortable">Datum</th> |
|
|
|
|
|
<th data-sort-index="1" class="sortable">Zeit</th> |
|
|
|
|
|
<th data-sort-index="2" class="sortable">Typ</th> |
|
|
|
|
|
<th data-sort-index="3" class="sortable">Art</th> |
|
|
|
|
|
<th data-sort-index="4" class="sortable">Beschreibung</th> |
|
|
|
|
|
<th data-sort-index="5" class="sortable">Kilometer</th> |
|
|
|
|
|
<th data-sort-index="6" class="sortable">Pauschale</th> |
|
|
|
|
|
<th data-sort-index="7" class="sortable">Kosten</th> |
|
|
|
|
|
<th>Aktionen</th> |
|
|
|
|
|
</tr> |
|
|
|
|
|
</thead> |
|
|
|
|
|
<tbody> |
|
|
|
|
|
<% @entries.each do |entry| %> |
|
|
|
|
|
<tr> |
|
|
|
|
|
<td><%= entry.date.strftime('%d.%m.%Y') %></td> |
|
|
|
|
|
<td><%= entry.hours.to_i %>h <%= entry.minutes.to_i %>min</td> |
|
|
|
|
|
<td> |
|
|
|
|
|
<%= ["Fortbildung", "Semesterkosten"].include?(entry.entry_art) ? entry.entry_art : entry.praktikums_typ.capitalize %> |
|
|
|
|
|
</td> |
|
|
|
|
|
<td> |
|
|
|
|
|
<%= ["Fortbildung", "Semesterkosten"].include?(entry.entry_art) ? entry.beschreibung : entry.entry_art.capitalize %> |
|
|
|
|
|
</td> |
|
|
|
|
|
<td> |
|
|
|
|
|
<%= entry.beschreibung %> |
|
|
|
|
|
</td> |
|
|
|
|
|
|
|
|
|
|
|
<td><%= entry.distance_km.to_f %> km</td> |
|
|
|
|
|
|
|
|
|
|
|
<td> |
|
|
|
|
|
<%= number_to_currency(entry.kilometer_pauschale, unit: "€", separator: ",", delimiter: ".") %> |
|
|
|
|
|
</td> |
|
|
|
|
|
|
|
|
|
|
|
<td> |
|
|
|
|
|
<%= number_to_currency(entry.kosten, unit: "€", separator: ",", delimiter: ".") %> |
|
|
|
|
|
</td> |
|
|
|
|
|
|
|
|
|
|
|
<td class="text-end"> |
|
|
|
|
|
<div class="d-flex justify-content-between"> |
|
|
|
|
|
|
|
|
<td><%= entry.date.strftime('%d.%m.%Y') %></td> |
|
|
|
|
|
<td><%= entry.hours.to_i %>h <%= entry.minutes.to_i %>min</td> |
|
|
|
|
|
<td> |
|
|
|
|
|
<%= ["Fortbildung", "Semesterkosten"].include?(entry.entry_art) ? entry.entry_art : entry.praktikums_typ.capitalize %> |
|
|
|
|
|
</td> |
|
|
|
|
|
<td> |
|
|
|
|
|
<%= ["Fortbildung", "Semesterkosten"].include?(entry.entry_art) ? entry.beschreibung : entry.entry_art.capitalize %> |
|
|
|
|
|
</td> |
|
|
|
|
|
<td> |
|
|
|
|
|
<%= entry.beschreibung %> |
|
|
|
|
|
</td> |
|
|
|
|
|
|
|
|
|
|
|
<td><%= entry.distance_km.to_f %> km</td> |
|
|
|
|
|
|
|
|
|
|
|
<td> |
|
|
|
|
|
<%= number_to_currency(entry.kilometer_pauschale, unit: "€", separator: ",", delimiter: ".") %> |
|
|
|
|
|
</td> |
|
|
|
|
|
|
|
|
|
|
|
<td> |
|
|
|
|
|
<%= number_to_currency(entry.kosten, unit: "€", separator: ",", delimiter: ".") %> |
|
|
|
|
|
</td> |
|
|
|
|
|
|
|
|
|
|
|
<td class="text-end"> |
|
|
|
|
|
<div class="d-flex justify-content-between"> |
|
|
<%= link_to 'Bearbeiten', edit_entry_path(entry), class: 'btn btn-sm btn-outline-primary' %> |
|
|
<%= link_to 'Bearbeiten', edit_entry_path(entry), class: 'btn btn-sm btn-outline-primary' %> |
|
|
<%= link_to 'Löschen', entry_path(entry), class: 'btn btn-sm btn-outline-danger open-delete-modal' %> |
|
|
<%= link_to 'Löschen', entry_path(entry), class: 'btn btn-sm btn-outline-danger open-delete-modal' %> |
|
|
</div> |
|
|
|
|
|
</td> |
|
|
|
|
|
</tr> |
|
|
|
|
|
<% end %> |
|
|
|
|
|
</tbody> |
|
|
|
|
|
</table> |
|
|
|
|
|
</div> |
|
|
|
|
|
<%= link_to "Export als CSV", export_csv_entries_path(format: :csv), class: "btn btn-outline-secondary mt-3 w-100 w-md-auto" %> |
|
|
|
|
|
|
|
|
</div> |
|
|
|
|
|
</td> |
|
|
|
|
|
</tr> |
|
|
|
|
|
<% end %> |
|
|
|
|
|
</tbody> |
|
|
|
|
|
</table> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
<%= link_to "Export als CSV", export_csv_entries_path(format: :csv), class: "btn btn-outline-secondary mt-3 w-100 w-md-auto" %> |
|
|
|
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|