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.
51 lines
1.5 KiB
51 lines
1.5 KiB
class AnnotationFormComponent < BaseComponent |
|
attr_reader :annotation, :opts |
|
|
|
def initialize(current_user:, annotation:, opts: {}) |
|
@annotation = annotation |
|
@opts = opts |
|
end |
|
|
|
def document |
|
return annotation.document if annotation.persisted? |
|
|
|
Cdao::Document.find(opts[:document_id].to_i) |
|
end |
|
|
|
def clean_phil_rep(annotation) |
|
return if annotation.phil_rep.blank? |
|
|
|
annotation.phil_rep.gsub(/(PhilRep|Phil)\.?,?/i, "Phil") |
|
end |
|
|
|
def display_text |
|
return annotation.content if annotation.persisted? && annotation.content.present? && annotation.content.include?("Phil") |
|
|
|
display_text = nil |
|
title = document.short_title || document.title |
|
year_or_date = document.doc_date.present? ? document.doc_date.strftime("%B %d, %Y") : document.year |
|
|
|
if annotation.new_record? |
|
display_text = [title, document.clean_reference_number, year_or_date].join(", ") |
|
else |
|
contents = [[title, document.clean_reference_number, year_or_date].reject(&:blank?).join(", ")] |
|
|
|
annotation.documents.each do |citing_doc| |
|
citing_doc_title = citing_doc.short_title || citing_doc.title |
|
citing_doc_year_or_date = citing_doc.doc_date.present? ? citing_doc.doc_date.strftime("%B %d, %Y") : citing_doc.year |
|
contents << [citing_doc_title, citing_doc.clean_reference_number, citing_doc_year_or_date].join(", ") |
|
end |
|
|
|
display_text = contents.reject(&:blank?).join(" citing ") |
|
end |
|
|
|
display_text |
|
end |
|
|
|
def phil_rep |
|
return annotation.phil_rep if annotation.persisted? |
|
|
|
document.phil_rep |
|
end |
|
end |
|
|