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

Returns a new instance of ProjectShowPresenter.



13
14
15
16
# File 'app/presenters/project_show_presenter.rb', line 13

def initialize(project)
  @project = project
  @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



28
29
30
# File 'app/presenters/project_show_presenter.rb', line 28

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

#data_managerObject



40
41
42
# File 'app/presenters/project_show_presenter.rb', line 40

def data_manager
  User.find_by(uid: @project.["data_manager"]).uid
end

#data_sponsorObject



36
37
38
# File 'app/presenters/project_show_presenter.rb', line 36

def data_sponsor
  User.find_by(uid: @project.["data_sponsor"]).uid
end

#formatted_quota_percentage(session_id:) ⇒ Object



71
72
73
74
# File 'app/presenters/project_show_presenter.rb', line 71

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

#formatted_storage_capacity(session_id:) ⇒ Object



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

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



45
46
47
# File 'app/presenters/project_show_presenter.rb', line 45

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

#quota_percentage(session_id:) ⇒ Object



84
85
86
87
88
89
90
91
92
# File 'app/presenters/project_show_presenter.rb', line 84

def quota_percentage(session_id:)
  return 0 if project.pending?

  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



76
77
78
79
80
81
82
# File 'app/presenters/project_show_presenter.rb', line 76

def quota_usage(session_id:)
  if project.pending?
    "0 KB out of 0 GB used"
  else
    "#{project.storage_usage(session_id:)} out of #{project.storage_capacity(session_id:)} used"
  end
end

#storage_capacity(session_id: nil) ⇒ Object



57
58
59
60
61
62
63
64
# File 'app/presenters/project_show_presenter.rb', line 57

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

#storage_usage(session_id:) ⇒ Object

This assumed that the storage usage is recorded in the same units as the units specified in the StorageCapacity metadata



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

def storage_usage(session_id:)
  persisted = project.storage_usage_raw(session_id: session_id)
  value = persisted.to_f

  value*default_usage_divisor
end

#to_xmlString

Returns the XML for the project Document.

Returns:

  • (String)

    the XML for the project Document



19
20
21
# File 'app/presenters/project_show_presenter.rb', line 19

def to_xml
  xml_document.to_xml
end

#updatedObject



32
33
34
# File 'app/presenters/project_show_presenter.rb', line 32

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



24
25
26
# File 'app/presenters/project_show_presenter.rb', line 24

def xml_document
  @xml_document ||= xml_presenter.document
end