a11yist/app/models/success_criterion.rb
david c36230b8ba
Some checks failed
/ Run tests (push) Successful in 2m6s
/ Run system tests (push) Failing after 2m29s
/ Build, push and deploy image (push) Successful in 1m46s
edit comment and pdf export
2024-11-23 21:11:01 +01:00

50 lines
1.2 KiB
Ruby

# frozen_string_literal: true
class SuccessCriterion < ApplicationRecord
belongs_to :element, touch: true
belongs_to :check, optional: true
has_rich_text :test_comment
has_rich_text :quick_criterion
has_rich_text :quick_fail
has_rich_text :quick_fix
delegate :page, :report, to: :element
enum :result, %i[passed failed not_applicable]
enum :level, %i[A AA AAA]
before_save :set_position
before_update :update_positions, if: :position_changed?
validates :result, inclusion: { in: self.results.keys + [ nil ] }
scope :failed, -> { where(result: :failed) }
def level_value
return nil unless level
self.class.levels.values.index_of(level)
end
def header
"HEADER"
end
def number
[ page.position, element.position, position ].join(".")
end
private
def set_position
self.position ||= (element.success_criteria.pluck(:position).max || 0) + 1
Rails.logger.debug("set position: "+position.to_s)
end
def update_positions
if position_was
element.success_criteria.where("position > ?", position_was).update_all("position = position - 1")
end
element.success_criteria.where(position: position..).update_all("position = position + 1")
end
end