Skip to content

Commit e81ce9a

Browse files
committed
Add methods to calculate completed payout totals and project counts; refactor allocation details view
1 parent cdee27f commit e81ce9a

File tree

4 files changed

+155
-64
lines changed

4 files changed

+155
-64
lines changed

app/models/allocation.rb

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,26 @@ def complete!
2323
update!(completed_at: Time.now)
2424
end
2525

26+
def complete_payout_total_cents
27+
project_allocations.select(&:success?).sum(&:amount_cents)
28+
end
29+
30+
def complete_payout_projects_count
31+
project_allocations.select(&:success?).length
32+
end
33+
34+
def completed_github_sponsored_projects_count
35+
project_allocations.select(&:success?).map(&:funding_source).select{|fs| fs.platform == 'github.com'}.length
36+
end
37+
38+
def completed_open_collective_projects_count
39+
project_allocations.select(&:success?).map(&:funding_source).select{|fs| fs.platform == 'opencollcetive.com'}.length
40+
end
41+
42+
def completed_other_projects_count
43+
project_allocations.select(&:success?).map(&:funding_source).approved.reject{|fs| ['opencollective.com', 'github.com'].include?(fs.platform) }.length
44+
end
45+
2646
def latest?
2747
fund.allocations.order(created_at: :desc).first == self
2848
end
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
<h3 class="fw-normal fs-6">Allocation Details</h3>
2+
<div class="fund-stat-bar fund-stat-bar--allocation-stat-bar mb-2 mb-md-3">
3+
<div class="stat-card mb-2">
4+
<div class="stat-card-body">
5+
<span class="stat-card-title"><%= number_to_currency @allocation.total_cents/100.0 %></span>
6+
<span class="stat-card-text extra-small">Total funded</span>
7+
</div>
8+
</div>
9+
10+
<div class="stat-card mb-2">
11+
<div class="stat-card-body">
12+
<span class="stat-card-title"><%= @allocation.funders_count %></span>
13+
<span class="stat-card-text extra-small">Funders</span>
14+
</div>
15+
</div>
16+
17+
<div class="stat-card mb-2">
18+
<div class="stat-card-body">
19+
<span class="stat-card-title"><%= @allocation.funded_projects_count %></span>
20+
<span class="stat-card-text extra-small">Projects</span>
21+
</div>
22+
</div>
23+
</div>
24+
</div>
25+
26+
<div class="col-md-7 col-xl-12">
27+
<h3 class="fw-normal fs-6">Distribution Details</h3>
28+
<div class="fund-stat-bar fund-stat-bar--allocation-stat-bar mb-4 mb-md-5">
29+
<% if @allocation.github_sponsored_projects_count > 0 %>
30+
<div class="stat-card mb-2">
31+
<div class="stat-card-body">
32+
<span class="stat-card-title"><%= @allocation.github_sponsored_projects_count %></span>
33+
<span class="stat-card-text extra-small">GitHub Sponsors</span>
34+
</div>
35+
</div>
36+
<% end %>
37+
38+
<% if @allocation.open_collective_projects_count > 0 %>
39+
<div class="stat-card mb-2">
40+
<div class="stat-card-body">
41+
<span class="stat-card-title"><%= @allocation.open_collective_projects_count %></span>
42+
<span class="stat-card-text extra-small">Open Collective</span>
43+
</div>
44+
</div>
45+
<% end %>
46+
47+
<% if @allocation.other_projects_count > 0 %>
48+
<div class="stat-card mb-2">
49+
<div class="stat-card-body">
50+
<span class="stat-card-title"><%= @allocation.other_projects_count %></span>
51+
<span class="stat-card-text extra-small" data-bs-toggle="tooltip" data-bs-title="ecosyste.ms supports most funding platforms like Patreon, Kofi, and GoFundMe.">Other sources <a href="#"><%= bootstrap_icon 'info-circle', width: 14, height: 14 %></a></span>
52+
</div>
53+
</div>
54+
<% end %>
55+
56+
<% if @allocation.invited_projects_count > 0%>
57+
<div class="stat-card mb-2">
58+
<div class="stat-card-body">
59+
<span class="stat-card-title"><%= @allocation.invited_projects_count %></span>
60+
<span class="stat-card-text extra-small" data-bs-toggle="tooltip" data-bs-title="ecosyste.ms has contacted maintainers to direct this contribution to their preferred platform or payment method.">Projects invited <a href="#"><%= bootstrap_icon 'info-circle', width: 14, height: 14 %></a></span>
61+
</div>
62+
</div>
63+
<% end %>
64+
</div>
65+
</div>
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
<h3 class="fw-normal fs-6">Allocation Details</h3>
2+
<div class="fund-stat-bar fund-stat-bar--allocation-stat-bar mb-2 mb-md-3">
3+
<div class="stat-card mb-2">
4+
<div class="stat-card-body">
5+
<span class="stat-card-title"><%= number_to_currency @allocation.complete_payout_total_cents/100.0 %></span>
6+
<span class="stat-card-text extra-small">Total funded</span>
7+
</div>
8+
</div>
9+
10+
<div class="stat-card mb-2">
11+
<div class="stat-card-body">
12+
<span class="stat-card-title"><%= @allocation.funders_count %></span>
13+
<span class="stat-card-text extra-small">Funders</span>
14+
</div>
15+
</div>
16+
17+
<div class="stat-card mb-2">
18+
<div class="stat-card-body">
19+
<span class="stat-card-title"><%= @allocation.complete_payout_projects_count %></span>
20+
<span class="stat-card-text extra-small">Projects</span>
21+
</div>
22+
</div>
23+
</div>
24+
</div>
25+
26+
<div class="col-md-7 col-xl-12">
27+
<h3 class="fw-normal fs-6">Distribution Details</h3>
28+
<div class="fund-stat-bar fund-stat-bar--allocation-stat-bar mb-4 mb-md-5">
29+
<% if @allocation.completed_github_sponsored_projects_count > 0 %>
30+
<div class="stat-card mb-2">
31+
<div class="stat-card-body">
32+
<span class="stat-card-title"><%= @allocation.completed_github_sponsored_projects_count %></span>
33+
<span class="stat-card-text extra-small">GitHub Sponsors</span>
34+
</div>
35+
</div>
36+
<% end %>
37+
38+
<% if @allocation.open_collective_projects_count > 0 %>
39+
<div class="stat-card mb-2">
40+
<div class="stat-card-body">
41+
<span class="stat-card-title"><%= @allocation.open_collective_projects_count %></span>
42+
<span class="stat-card-text extra-small">Open Collective</span>
43+
</div>
44+
</div>
45+
<% end %>
46+
47+
<% if @allocation.other_projects_count > 0 %>
48+
<div class="stat-card mb-2">
49+
<div class="stat-card-body">
50+
<span class="stat-card-title"><%= @allocation.other_projects_count %></span>
51+
<span class="stat-card-text extra-small" data-bs-toggle="tooltip" data-bs-title="ecosyste.ms supports most funding platforms like Patreon, Kofi, and GoFundMe.">Other sources <a href="#"><%= bootstrap_icon 'info-circle', width: 14, height: 14 %></a></span>
52+
</div>
53+
</div>
54+
<% end %>
55+
56+
<% if @allocation.invited_projects_count > 0%>
57+
<div class="stat-card mb-2">
58+
<div class="stat-card-body">
59+
<span class="stat-card-title"><%= @allocation.invited_projects_count %></span>
60+
<span class="stat-card-text extra-small" data-bs-toggle="tooltip" data-bs-title="ecosyste.ms has contacted maintainers to direct this contribution to their preferred platform or payment method.">Projects invited <a href="#"><%= bootstrap_icon 'info-circle', width: 14, height: 14 %></a></span>
61+
</div>
62+
</div>
63+
<% end %>
64+
</div>
65+
</div>

app/views/funds/show.html.erb

Lines changed: 5 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -69,70 +69,11 @@
6969
<div class="col-xl-3">
7070
<div class="row mt-md-3">
7171
<div class="col-md-5 col-xl-12">
72-
<h3 class="fw-normal fs-6">Allocation Details</h3>
73-
<div class="fund-stat-bar fund-stat-bar--allocation-stat-bar mb-2 mb-md-3">
74-
<div class="stat-card mb-2">
75-
<div class="stat-card-body">
76-
<span class="stat-card-title"><%= number_to_currency @allocation.total_cents/100.0 %></span>
77-
<span class="stat-card-text extra-small">Total funded</span>
78-
</div>
79-
</div>
80-
81-
<div class="stat-card mb-2">
82-
<div class="stat-card-body">
83-
<span class="stat-card-title"><%= @allocation.funders_count %></span>
84-
<span class="stat-card-text extra-small">Funders</span>
85-
</div>
86-
</div>
87-
88-
<div class="stat-card mb-2">
89-
<div class="stat-card-body">
90-
<span class="stat-card-title"><%= @allocation.funded_projects_count %></span>
91-
<span class="stat-card-text extra-small">Projects</span>
92-
</div>
93-
</div>
94-
</div>
95-
</div>
96-
97-
<div class="col-md-7 col-xl-12">
98-
<h3 class="fw-normal fs-6">Distribution Details</h3>
99-
<div class="fund-stat-bar fund-stat-bar--allocation-stat-bar mb-4 mb-md-5">
100-
<% if @allocation.github_sponsored_projects_count > 0 %>
101-
<div class="stat-card mb-2">
102-
<div class="stat-card-body">
103-
<span class="stat-card-title"><%= @allocation.github_sponsored_projects_count %></span>
104-
<span class="stat-card-text extra-small">GitHub Sponsors</span>
105-
</div>
106-
</div>
107-
<% end %>
108-
109-
<% if @allocation.open_collective_projects_count > 0 %>
110-
<div class="stat-card mb-2">
111-
<div class="stat-card-body">
112-
<span class="stat-card-title"><%= @allocation.open_collective_projects_count %></span>
113-
<span class="stat-card-text extra-small">Open Collective</span>
114-
</div>
115-
</div>
116-
<% end %>
117-
118-
<% if @allocation.other_projects_count > 0 %>
119-
<div class="stat-card mb-2">
120-
<div class="stat-card-body">
121-
<span class="stat-card-title"><%= @allocation.other_projects_count %></span>
122-
<span class="stat-card-text extra-small" data-bs-toggle="tooltip" data-bs-title="ecosyste.ms supports most funding platforms like Patreon, Kofi, and GoFundMe.">Other sources <a href="#"><%= bootstrap_icon 'info-circle', width: 14, height: 14 %></a></span>
123-
</div>
124-
</div>
125-
<% end %>
126-
127-
<% if @allocation.invited_projects_count > 0%>
128-
<div class="stat-card mb-2">
129-
<div class="stat-card-body">
130-
<span class="stat-card-title"><%= @allocation.invited_projects_count %></span>
131-
<span class="stat-card-text extra-small" data-bs-toggle="tooltip" data-bs-title="ecosyste.ms has contacted maintainers to direct this contribution to their preferred platform or payment method.">Projects invited <a href="#"><%= bootstrap_icon 'info-circle', width: 14, height: 14 %></a></span>
132-
</div>
133-
</div>
134-
<% end %>
135-
</div>
72+
<% if @allocation.completed? %>
73+
<%= render 'completed_allocation_details' %>
74+
<% else %>
75+
<%= render 'allocation_details' %>
76+
<% end %>
13677
</div>
13778
</div>
13879
</div>

0 commit comments

Comments
 (0)