Class: ProjectShowPresenter
  
  
  
  
  
    - Inherits:
 
    - 
      Object
      
        
          - Object
 
          
            - ProjectShowPresenter
 
          
        
        show all
      
     
  
  
  
  
  
  
  
  
  
  
    - Defined in:
 
    - app/presenters/project_show_presenter.rb
 
  
  
 
  Instance Attribute Summary collapse
  
  
    
      Class Method Summary
      collapse
    
    
  
    
      Instance Method Summary
      collapse
    
    
  
  Constructor Details
  
    
  
  
    
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&.metadata_model
end
     | 
  
 
  
 
  
    Instance Attribute Details
    
      
      
      
  
  
    #project  ⇒ Object  
  
  
  
  
    
Returns the value of attribute project.
   
 
  
  
    
      
6
7
8 
     | 
    
      # File 'app/presenters/project_show_presenter.rb', line 6
def project
  @project
end 
     | 
  
 
    
      
      
      
  
  
    
Returns the value of attribute project_metadata.
   
 
  
  
    
      
6
7
8 
     | 
    
      # File 'app/presenters/project_show_presenter.rb', line 6
def project_metadata
  @project_metadata
end 
     | 
  
 
    
   
  
    Class Method Details
    
      
  
  
    .xml_presenter_class  ⇒ Class 
  
  
  
  
    
Returns 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
    
      
  
  
    #created  ⇒ Object 
  
  
  
  
    
      
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_manager  ⇒ Object 
  
  
  
  
    
      
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.metadata["data_manager"]).uid
  else
    User.find_by(uid: @project_mf[:data_manager])&.uid
  end
end
     | 
  
 
    
      
  
  
    
      
64
65
66
67
68
69
70 
     | 
    
      # File 'app/presenters/project_show_presenter.rb', line 64
def 
  if @project_mf.nil?
    User.find_by(uid: @project.metadata["data_sponsor"]).uid
  else
    User.find_by(uid: @project_mf[:data_sponsor])&.uid
  end
end
     | 
  
 
    
      
  
  
    #description  ⇒ Object 
  
  
  
  
    
      
38
39
40
41
42
43
44 
     | 
    
      # File 'app/presenters/project_show_presenter.rb', line 38
def description
  if @project_mf.nil?
    @project.metadata_model.description
  else
    @project_mf[:description]
  end
end
     | 
  
 
    
      
  
  
    
      
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
     | 
  
 
    
      
  
  
    
      
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_directory  ⇒ Object 
  
  
  
  
    
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 
  
  
  
  
    
      
124
125
126 
     | 
    
      # File 'app/presenters/project_show_presenter.rb', line 124
def project_in_rails?
  project != nil
end 
     | 
  
 
    
      
  
  
    #project_purpose  ⇒ Object 
  
  
  
  
    
      
80
81
82
83
84
85
86 
     | 
    
      # File 'app/presenters/project_show_presenter.rb', line 80
def project_purpose
  if @project_mf.nil?
    project_metadata.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 project_metadata.storage_capacity if session_id.nil?
  persisted = project.storage_capacity_raw(session_id: session_id)
  value = persisted.to_f
  value*default_capacity_divisor
end 
     | 
  
 
    
      
  
  
    #title  ⇒ Object 
  
  
  
  
    
      
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_xml  ⇒ String 
  
  
  
  
    
Returns 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 
     | 
  
 
    
      
  
  
    #updated  ⇒ Object 
  
  
  
  
    
      
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_document  ⇒ Nokogiri::XML::Document 
  
  
  
  
    
Returns 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 
     |