From 42c077f6ab23c4c5156f701fe898e330ca2c7a33 Mon Sep 17 00:00:00 2001 From: david Date: Fri, 1 Nov 2024 03:26:46 +0100 Subject: [PATCH] Gui improvements, ordering --- app/assets/stylesheets/layout.scss | 2 +- app/controllers/pages_controller.rb | 2 +- .../controllers/unsaved_changes_controller.js | 7 +++++++ app/models/element.rb | 7 +++++++ app/models/page.rb | 7 +++++++ app/models/success_criterion.rb | 8 ++++++++ app/views/backoffice/show.html.erb | 4 ++-- app/views/checklists/show.html.erb | 2 +- app/views/elements/_element.html.erb | 7 ++++--- app/views/elements/_form.html.erb | 2 +- app/views/pages/_form.html.erb | 6 ------ app/views/pages/_form.html.slim | 5 +++++ app/views/pages/_notes.html.slim | 3 +++ app/views/pages/_page.html.erb | 7 +++++-- app/views/pages/new.html.erb | 1 - app/views/pages/show.html.erb | 9 --------- app/views/pages/show.html.slim | 9 +++++++++ app/views/reports/_new_page_button.html.erb | 2 +- app/views/reports/show.html.slim | 11 ++++++++--- app/views/reports/show.rtf.erb | 4 ++-- app/views/success_criteria/_form.html.erb | 4 ++-- app/views/success_criteria/_header.html.erb | 3 ++- .../success_criteria/_success_criterion.html.erb | 4 ++-- config/locales/activerecord.yml | 2 ++ ...20241101004644_add_position_to_success_criteria.rb | 8 ++++++++ .../20241101013336_change_position_on_elements.rb | 5 +++++ db/migrate/20241101015725_add_notes_to_pages.rb | 5 +++++ db/schema.rb | 9 +++++++-- 28 files changed, 105 insertions(+), 40 deletions(-) delete mode 100644 app/views/pages/_form.html.erb create mode 100644 app/views/pages/_form.html.slim create mode 100644 app/views/pages/_notes.html.slim delete mode 100644 app/views/pages/show.html.erb create mode 100644 app/views/pages/show.html.slim create mode 100644 db/migrate/20241101004644_add_position_to_success_criteria.rb create mode 100644 db/migrate/20241101013336_change_position_on_elements.rb create mode 100644 db/migrate/20241101015725_add_notes_to_pages.rb diff --git a/app/assets/stylesheets/layout.scss b/app/assets/stylesheets/layout.scss index 33bdf3f..a8c4146 100644 --- a/app/assets/stylesheets/layout.scss +++ b/app/assets/stylesheets/layout.scss @@ -1,7 +1,7 @@ .action-row { @extend .d-flex; @extend .p-2; - @extend .mt-3; + @extend .mt-5; // background-color: map-get($theme-colors, "primary"); background-color: var(--bs-tertiary-bg); diff --git a/app/controllers/pages_controller.rb b/app/controllers/pages_controller.rb index dbd4a59..4bbee18 100644 --- a/app/controllers/pages_controller.rb +++ b/app/controllers/pages_controller.rb @@ -59,6 +59,6 @@ class PagesController < ApplicationController # Only allow a list of trusted parameters through. def page_params - params.require(:page).permit(:position, :path, :url, :report_id) + params.require(:page).permit(:position, :path, :url, :notes, :position) end end diff --git a/app/javascript/controllers/unsaved_changes_controller.js b/app/javascript/controllers/unsaved_changes_controller.js index e3ae242..29b198d 100644 --- a/app/javascript/controllers/unsaved_changes_controller.js +++ b/app/javascript/controllers/unsaved_changes_controller.js @@ -4,14 +4,21 @@ const LEAVE_ALERT = "Es gibt ungespeicherte Änderungen! Wirklich verlassen?" // Connects to data-controller="unsaved-changes" export default class extends Controller { + static targets = ["cancel"] + initialState = null connect() { this.initialState = this.formState() + console.log(this.cancelTargets) window.addEventListener("beforeunload", (event) => this.leavingPage(event)) document.addEventListener('turbo:before-visit', (e) => this.leavingPage(e)) this.element.addEventListener("submit", (_) => this.initialState = null) + this.cancelTargets.forEach(element => { + console.log(element) + element.addEventListener("onclick", (_) => this.initialState = null) + }); } formState() { diff --git a/app/models/element.rb b/app/models/element.rb index f9f3dd3..807c4b6 100644 --- a/app/models/element.rb +++ b/app/models/element.rb @@ -8,6 +8,8 @@ class Element < ApplicationRecord delegate :report, to: :page + after_validation :set_position + # Calculate actual conformity level: # - if a success_criterion has result :failed -> the confirmity_level # of that success_criterion is not reached. @@ -30,4 +32,9 @@ class Element < ApplicationRecord def max_level @max_level ||= success_criteria.reject(&:not_applicable?).max(&:level) end + + def set_position + Rails.logger.debug("element: position #{position}") + self.position ||= (page.elements.pluck(:position).max || 0) + 1 + end end diff --git a/app/models/page.rb b/app/models/page.rb index aed1df3..c572735 100644 --- a/app/models/page.rb +++ b/app/models/page.rb @@ -3,4 +3,11 @@ class Page < ApplicationRecord has_many :elements, dependent: :destroy has_rich_text :comment + + before_validation :set_position + + private + def set_position + self.position ||= (report.pages.pluck(:position).max || 0) + 1 + end end diff --git a/app/models/success_criterion.rb b/app/models/success_criterion.rb index 0165c4d..218bb49 100644 --- a/app/models/success_criterion.rb +++ b/app/models/success_criterion.rb @@ -14,6 +14,8 @@ class SuccessCriterion < ApplicationRecord enum :result, %i[passed failed not_applicable] enum :level, %i[A AA AAA] + before_save :set_position + def level_value return nil unless level @@ -23,4 +25,10 @@ class SuccessCriterion < ApplicationRecord def header "HEADER" end + + private + def set_position + self.position ||= (element.success_criteria.pluck(:position).max || 0) + 1 + Rails.logger.debug("set position: "+position.to_s) + end end diff --git a/app/views/backoffice/show.html.erb b/app/views/backoffice/show.html.erb index a2e52d1..c16d394 100644 --- a/app/views/backoffice/show.html.erb +++ b/app/views/backoffice/show.html.erb @@ -13,13 +13,13 @@ <%= link_to Check.model_name.human(count: Check.count), :checks %>

-

+

<%= Link.count %> <%= link_to Link.model_name.human(count: Link.count), :links %>

-

Backup

+

Backup