Delete stuff in report view

This commit is contained in:
david 2024-11-11 01:40:04 +01:00
parent 644969c613
commit 50e853098b
16 changed files with 64 additions and 31 deletions

View file

@ -57,8 +57,16 @@ class ElementsController < ApplicationController
# DELETE /elements/1
def destroy
@element.destroy!
redirect_to page_elements_url(@element.page), notice: "Element was successfully destroyed.", status: :see_other
Element.connection.transaction do
@element.destroy!
@element.page.elements.where("position > ?", @element.position).update_all("position = position - 1")
end
respond_to do |format|
format.turbo_stream
format.html do
redirect_to page_elements_url(@element.page), notice: "Element was successfully destroyed.", status: :see_other
end
end
end
private

View file

@ -44,7 +44,7 @@ class PagesController < ApplicationController
# DELETE /pages/1
def destroy
@page.destroy!
redirect_to report_pages_url(@page.report), notice: "Page was successfully destroyed.", status: :see_other
redirect_to report_url(@page.report), notice: "Page was successfully destroyed.", status: :see_other
end
private

View file

@ -62,7 +62,10 @@ class SuccessCriteriaController < ApplicationController
# DELETE /success_criteria/1
def destroy
@success_criterion.destroy!
SuccessCriterion.transaction do
@success_criterion.destroy!
@success_criterion.element.success_criteria.where("position > ?", @success_criterion.position).update_all("position = position - 1")
end
respond_to do |format|
format.html do
redirect_to element_success_criteria_url(@success_criterion.element), notice: "Erfolgskriterium was successfully destroyed.", status: :see_other

View file

@ -4,8 +4,10 @@
<h3 class="h4">
<i class="bi bi-boxes">
</i>
<%= element.page.position %>.<%= element.position %>
<%= element.title %>
<span id="<%= dom_id(element, :title) %>">
<%= element.page.position %>.<%= element.position %>
<%= element.title %>
</span>
</h3>
<%= link_to [:edit, element], class: "btn btn-link text-secondary" do %>
<i class="bi bi-pencil">
@ -17,6 +19,11 @@
<%= element.description %>
</div>
<% end %>
<p class="actions">
<%= button_to(element_path(element), method: :delete, class: "btn btn-outline-danger", data: { turbo_confirm: "Bist du sicher?"}) do %>
<i class="bi bi-trash"></i>
<% end %>
</p>
<% end %>
<div id="<%= dom_id(element, :success_criteria_list) %>" class="mb-3">

View file

@ -1,4 +1,4 @@
li
li id=dom_id(element, :page_nav_row)
- if current_page
=< link_to("##{dom_id(element)}", data: { "turbo": false }) do
i.bi.bi-boxes.me-1

View file

@ -0,0 +1,5 @@
= turbo_stream.remove dom_id(@element)
= turbo_stream.remove dom_id(@element, :page_nav_row)
- @element.page.elements.reject { _1 == @element }.each do |e|
= turbo_stream.update dom_id(e, :title), "#{e.page.position}.#{e.position} #{e.title}"
= turbo_stream.replace dom_id(e, :page_nav_row), partial: "elements/page_nav_row", locals: { element: e, current_page: true }

View file

@ -1,11 +1,12 @@
/ div id=dom_id(report, :page_nav)
= turbo_frame_tag(dom_id(report, :page_nav)) do
ul.nav.nav-underline
li.nav-item
= link_to("Baum", report_path(report, page_id: @current_page.id, pnm: :n), class: "nav-link #{@page_nav_mode == :nav_tree ? "active" : nil}", data: { hotkey: "b", controller: :hotkey })
li.nav-item
= link_to("Notizen", report_path(report, page_id: @current_page.id, pnm: :c), class: "nav-link #{@page_nav_mode == :comment ? "active" : nil}", data: { hotkey: "n", controller: :hotkey })
- if @page_nav_mode == :nav_tree
- if current_page
ul.nav.nav-underline
li.nav-item
= link_to("Baum", report_path(report, page_id: current_page.id, pnm: :n), class: "nav-link #{@page_nav_mode != :comment ? "active" : nil}", data: { hotkey: "b", controller: :hotkey })
li.nav-item
= link_to("Notizen", report_path(report, page_id: current_page.id, pnm: :c), class: "nav-link #{@page_nav_mode == :comment ? "active" : nil}", data: { hotkey: "n", controller: :hotkey })
- if @page_nav_mode != :comment || current_page.nil?
- if report.pages.any?
nav.mt-3 id=dom_id(report, :page_nav_spy)
ul
@ -35,5 +36,6 @@
= turbo_frame_tag "new_page_frame" do
= render partial: "reports/new_page_button", locals: { report: report }
- else
= turbo_frame_tag(dom_id(current_page, :notes)) do
= render partial: "pages/notes", locals: { page: current_page }
- if current_page
= turbo_frame_tag(dom_id(current_page, :notes)) do
= render partial: "pages/notes", locals: { page: current_page }

View file

@ -18,6 +18,8 @@ h1
p
'URL:
= @current_page.url
p.actions
= button_to("Pfad \"#{@current_page.path}\" löschen", page_path(@current_page), method: :delete, class: "btn btn-outline-danger", form: {data: { turbo_confirm: "Bist du sicher?" }})
.row
.col-lg-3.col-md-4.col-sm-12
.page_nav.sticky-top

View file

@ -2,11 +2,12 @@
= turbo_frame_tag(dom_id(success_criterion, :frame)) do
.row
.col
= bootstrap_form_with(model: success_criterion, data: { controller: "autosubmit" }) do |form|
.position-relative
.position-absolute.top-0.end-0.fw-bold
= success_criterion_edit_button(success_criterion, false)
.my-3.btn-group[role="group" aria-label="Resultat"]
.position-relative
.position-absolute.top-0.end-0.fw-bold
= button_to(tag.i(class: "bi bi-trash"), success_criterion, method: :delete, class: "btn btn-outline-danger", data: { turbo_confirm: "Bist du sicher?"})
= success_criterion_edit_button(success_criterion, false)
.my-3.btn-group[role="group" aria-label="Resultat"]
= bootstrap_form_with(model: success_criterion, data: { controller: "autosubmit" }) do |form|
= form.radio_button_without_bootstrap :result, :passed, class: "btn-check", autocomplete: "off", id: dom_id(success_criterion, :result_passed)
label.btn.btn-outline-success for=dom_id(success_criterion, :result_passed) Bestanden
= form.radio_button_without_bootstrap :result, :failed, class: "btn-check", autocomplete: "off", id: dom_id(success_criterion, :result_failed)

View file

@ -3,12 +3,13 @@ summary.d-flex.align-items-start id=dom_id(success_criterion, :header)
.content.d-flex.align-items-center
.result-icon.flex-shrink-0 class=[success_criterion_result_color_classes(success_criterion)]
span.h1.bi class=[success_criterion_result_icon_classes(success_criterion)]
.fs-5
= success_criterion.page.position
| .
= success_criterion.element.position
| .
= success_criterion.position
.fs-
span id=dom_id(success_criterion, :position)
= success_criterion.page.position
| .
= success_criterion.element.position
| .
= success_criterion.position
span.me-2
=< success_criterion.title

View file

@ -1 +0,0 @@
<%= turbo_stream.remove dom_id(@success_criterion) %>

View file

@ -0,0 +1,4 @@
= turbo_stream.remove dom_id(@success_criterion)
- @success_criterion.element.success_criteria.reject { _1 == @success_criterion }.each do |sc|
- Rails.logger.debug "Send to sc #{sc.id}"
= turbo_stream.update dom_id(sc, :position), "#{sc.page.position}.#{sc.element.position}.#{sc.position}"

View file

@ -19,6 +19,7 @@ module Admin
end
test "should create admin_backup zip" do
skip "this is flakey during test because the db files get deleted regularly"
get admin_backup_url(@admin_backup, format: :zip)
assert_response :success
end

View file

@ -50,6 +50,6 @@ class PagesControllerTest < ::ControllerTest
delete page_url(@page)
end
assert_redirected_to report_pages_url(@page.report)
assert_redirected_to report_url(@page.report)
end
end

View file

@ -39,7 +39,7 @@ class PagesTest < ApplicationSystemTestCase
visit page_url(@page)
click_on "Pfad löschen", match: :first
assert_text "Pfad hinzufügen"
assert_text "Prüfbericht löschen"
assert(Page.exists?(@page.id) == false)
end
end

View file

@ -18,7 +18,7 @@ class SuccessCriteriaTest < ApplicationSystemTestCase
test "visiting the index" do
visit element_success_criteria_url(@success_criterion.element)
assert_selector "h1", text: "Erfolgskriterien"
assert_text "Erfolgskriterien"
end
test "should create Erfolgskriterium" do
@ -33,7 +33,7 @@ class SuccessCriteriaTest < ApplicationSystemTestCase
# fill_in 'Level', with: @success_criterion.level
# fill_in 'Result', with: @success_criterion.result
# fill_in 'Title', with: @success_criterion.title
click_on "Erfolgskriterium erstellen"
click_on "Hinzufügen"
end
test "should update Erfolgskriterium" do