Class: ProjectShowPresenter

Inherits:
Object
  • Object
show all
Defined in:
app/presenters/project_show_presenter.rb

Direct Known Subclasses

ProjectDashboardPresenter

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(project) ⇒ ProjectShowPresenter

While we are transitioning to fetching the data straight from Mediaflux ‘project` can be an ActiveRecord Project model (when used from the Project show page) or a Hash with the data from Mediaflux (when used from the Dashboard). This branching can be refactored (elimitated?) once we implement ticket github.com/pulibrary/tigerdata-app/issues/2039 and the project data will always come from Mediaflux.



19
20
21
22
23
24
25
26
27
28
# File 'app/presenters/project_show_presenter.rb', line 19

def initialize(project)
  if project.is_a?(Hash)
    @project_mf = project
    @project = rails_project(@project_mf)
  else
    @project_mf = nil
    @project = project
  end
  @project_metadata = @project&.
end

Instance Attribute Details

#projectObject (readonly)

Returns the value of attribute project.



6
7
8
# File 'app/presenters/project_show_presenter.rb', line 6

def project
  @project
end

#project_metadataObject (readonly)

Returns the value of attribute project_metadata.



6
7
8
# File 'app/presenters/project_show_presenter.rb', line 6

def 
  @project_metadata
end

Class Method Details

.xml_presenter_classClass

Returns The presenter class for building XML Documents from Projects.

Returns:

  • (Class)

    The presenter class for building XML Documents from Projects



9
10
11
# File 'app/presenters/project_show_presenter.rb', line 9

def self.xml_presenter_class
  ProjectXmlPresenter
end

Instance Method Details

#createdObject



56
57
58
# File 'app/presenters/project_show_presenter.rb', line 56

def created
  @project.created_at.strftime("%b %e, %Y %l:%M %p")
end

#data_managerObject



72
73
74
75
76
77
78
# File 'app/presenters/project_show_presenter.rb', line 72

def data_manager
  if @project_mf.nil?
    User.find_by(uid: @project.["data_manager"]).uid
  else
    User.find_by(uid: @project_mf[:data_manager])&.uid
  end
end

#data_sponsorObject



64
65
66
67
68
69
70
# File 'app/presenters/project_show_presenter.rb', line 64

def data_sponsor
  if @project_mf.nil?
    User.find_by(uid: @project.["data_sponsor"]).uid
  else
    User.find_by(uid: @project_mf[:data_sponsor])&.uid
  end
end

#descriptionObject



38
39
40
41
42
43
44
# File 'app/presenters/project_show_presenter.rb', line 38

def description
  if @project_mf.nil?
    @project..description
  else
    @project_mf[:description]
  end
end

#formatted_quota_percentage(session_id:) ⇒ Object



107
108
109
110
# File 'app/presenters/project_show_presenter.rb', line 107

def formatted_quota_percentage(session_id:)
  value = quota_percentage(session_id:)
  format("%.3f", value)
end

#formatted_storage_capacity(session_id:) ⇒ Object



102
103
104
105
# File 'app/presenters/project_show_presenter.rb', line 102

def formatted_storage_capacity(session_id:)
  value = storage_capacity(session_id: session_id)
  format("%.3f", value)
end

#project_directoryObject

used to hide the project root that is not visible to the end user



89
90
91
# File 'app/presenters/project_show_presenter.rb', line 89

def project_directory
  project.project_directory.gsub(Mediaflux::Connection.hidden_root, "")
end

#project_in_rails?Boolean

Returns:

  • (Boolean)


124
125
126
# File 'app/presenters/project_show_presenter.rb', line 124

def project_in_rails?
  project != nil
end

#project_purposeObject



80
81
82
83
84
85
86
# File 'app/presenters/project_show_presenter.rb', line 80

def project_purpose
  if @project_mf.nil?
    .project_purpose
  else
    @project_mf[:project_purpose]
  end
end

#quota_percentage(session_id:) ⇒ Object



116
117
118
119
120
121
122
# File 'app/presenters/project_show_presenter.rb', line 116

def quota_percentage(session_id:)
  storage_capacity = project.storage_capacity_raw(session_id:)
  return 0 if storage_capacity.zero?

  storage_usage = project.storage_usage_raw(session_id:)
  (storage_usage.to_f / storage_capacity.to_f) * 100
end

#quota_usage(session_id:) ⇒ Object



112
113
114
# File 'app/presenters/project_show_presenter.rb', line 112

def quota_usage(session_id:)
  "#{project.storage_usage(session_id:)} out of #{project.storage_capacity(session_id:)} used"
end

#storage_capacity(session_id: nil) ⇒ Object



93
94
95
96
97
98
99
100
# File 'app/presenters/project_show_presenter.rb', line 93

def storage_capacity(session_id: nil)
  return .storage_capacity if session_id.nil?

  persisted = project.storage_capacity_raw(session_id: session_id)
  value = persisted.to_f

  value*default_capacity_divisor
end

#titleObject



30
31
32
33
34
35
36
# File 'app/presenters/project_show_presenter.rb', line 30

def title
  if @project_mf.nil?
    @project.title
  else
    @project_mf[:title]
  end
end

#to_xmlString

Returns the XML for the project Document.

Returns:

  • (String)

    the XML for the project Document



47
48
49
# File 'app/presenters/project_show_presenter.rb', line 47

def to_xml
  xml_document.to_xml
end

#updatedObject



60
61
62
# File 'app/presenters/project_show_presenter.rb', line 60

def updated
  @project.updated_at.strftime("%b %e, %Y %l:%M %p")
end

#xml_documentNokogiri::XML::Document

Returns the XML Document for the Project.

Returns:

  • (Nokogiri::XML::Document)

    the XML Document for the Project



52
53
54
# File 'app/presenters/project_show_presenter.rb', line 52

def xml_document
  @xml_document ||= xml_presenter.document
end