Skip to content

Commit 92195bf

Browse files
committed
Add waiting time calculations to review controllers
1 parent 0c6df30 commit 92195bf

File tree

6 files changed

+66
-2
lines changed

6 files changed

+66
-2
lines changed

app/controllers/admin/build_reviews_controller.rb

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,13 @@ def show
100100
@claimed_by_other = Reviews::ClaimProject.claimed_by_other?(project: @project, reviewer: current_user, type: :build)
101101
@build_review = @project.build_reviews.build
102102
@ai_review = @project.latest_ai_review("build") if Flipper.enabled?(:ai_reviewer)
103+
104+
# Waiting time: last and first time project entered build_pending
105+
pending_versions = PaperTrail::Version.where(item_type: "Project", item_id: @project.id, event: "update")
106+
.where("jsonb_exists(object_changes, 'review_status')")
107+
.where("object_changes->'review_status'->>1 = ?", "build_pending")
108+
@waiting_since = pending_versions.maximum(:created_at)
109+
@first_waiting_since = pending_versions.minimum(:created_at)
103110
end
104111

105112
def show_next

app/controllers/admin/design_reviews_controller.rb

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,13 @@ def show
8686
@claimed_by_other = Reviews::ClaimProject.claimed_by_other?(project: @project, reviewer: current_user, type: :design)
8787
@design_review = @project.design_reviews.build
8888
@ai_review = @project.latest_ai_review("design") if Flipper.enabled?(:ai_reviewer)
89+
90+
# Waiting time: last and first time project entered design_pending
91+
pending_versions = PaperTrail::Version.where(item_type: "Project", item_id: @project.id, event: "update")
92+
.where("jsonb_exists(object_changes, 'review_status')")
93+
.where("object_changes->'review_status'->>1 = ?", "design_pending")
94+
@waiting_since = pending_versions.maximum(:created_at)
95+
@first_waiting_since = pending_versions.minimum(:created_at)
8996
end
9097

9198
def show_next

app/views/admin/build_reviews/_streamlined_show.html.erb

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,18 @@
7676
<% if project.ysws.present? %>
7777
&middot; <span class="text-zinc-300"><%= project.ysws %></span>
7878
<% end %>
79+
<% if @waiting_since %>
80+
<%
81+
now = Time.current
82+
fmt = ->(t) { secs = now - t; secs < 1.hour ? "<1h" : secs < 1.day ? "#{(secs / 1.hour).floor}h" : "#{(secs / 1.day).floor}d" }
83+
last_str = fmt.call(@waiting_since)
84+
first_str = @first_waiting_since ? fmt.call(@first_waiting_since) : last_str
85+
%>
86+
&middot; Waiting <span class="text-zinc-300"><%= last_str %></span>
87+
<% if last_str != first_str %>
88+
(<span class="text-zinc-300"><%= first_str %></span> total)
89+
<% end %>
90+
<% end %>
7991
</p>
8092
</div>
8193

app/views/admin/build_reviews/show.html.erb

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,20 @@
3939
<div class="flex flex-col justify-between space-y-1" >
4040
<h1 class="pb-2 text-4xl">Project #<%= @project.id %>, <%= link_to @project.title, admin_project_path(@project), class: "underline" %></h1>
4141
<div>
42-
<p>By <%= render "shared/user_inline", user: @project.user, admin_view: true %> on <%= @project.created_at.strftime("%B %d, %Y") %></p>
42+
<p>By <%= render "shared/user_inline", user: @project.user, admin_view: true %> on <%= @project.created_at.strftime("%B %d, %Y") %>
43+
<% if @waiting_since %>
44+
<%
45+
now = Time.current
46+
fmt = ->(t) { secs = now - t; secs < 1.hour ? "<1h" : secs < 1.day ? "#{(secs / 1.hour).floor}h" : "#{(secs / 1.day).floor}d" }
47+
last_str = fmt.call(@waiting_since)
48+
first_str = @first_waiting_since ? fmt.call(@first_waiting_since) : last_str
49+
%>
50+
&middot; Waiting <%= last_str %>
51+
<% if last_str != first_str %>
52+
(<%= first_str %> total)
53+
<% end %>
54+
<% end %>
55+
</p>
4356
</div>
4457
<div class="flex justify-start text-xl mt-4">
4558
<% if @project.tier.present? %>

app/views/admin/design_reviews/_streamlined_show.html.erb

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,18 @@
156156
<% if project.ysws == "hackpad" && project.approx_hour.present? %>
157157
&middot; Self-reported: <span class="text-zinc-700 dark:text-zinc-300"><%= project.approx_hour %>h</span>
158158
<% end %>
159+
<% if @waiting_since %>
160+
<%
161+
now = Time.current
162+
fmt = ->(t) { secs = now - t; secs < 1.hour ? "<1h" : secs < 1.day ? "#{(secs / 1.hour).floor}h" : "#{(secs / 1.day).floor}d" }
163+
last_str = fmt.call(@waiting_since)
164+
first_str = @first_waiting_since ? fmt.call(@first_waiting_since) : last_str
165+
%>
166+
&middot; Waiting <span class="text-zinc-700 dark:text-zinc-300"><%= last_str %></span>
167+
<% if last_str != first_str %>
168+
(<span class="text-zinc-700 dark:text-zinc-300"><%= first_str %></span> total)
169+
<% end %>
170+
<% end %>
159171
</span>
160172
<% if current_user.admin? %>
161173
<% u = project.user

app/views/admin/design_reviews/show.html.erb

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,20 @@
4444
<div class="flex flex-col justify-between space-y-1 flex-1">
4545
<h1 class="pb-2 text-4xl">Project #<%= @project.id %>, <%= link_to @project.title, admin_project_path(@project), class: "underline" %></h1>
4646
<div>
47-
<p>By <%= render "shared/user_inline", user: @project.user, admin_view: true %> on <%= @project.created_at.strftime("%B %d, %Y") %></p>
47+
<p>By <%= render "shared/user_inline", user: @project.user, admin_view: true %> on <%= @project.created_at.strftime("%B %d, %Y") %>
48+
<% if @waiting_since %>
49+
<%
50+
now = Time.current
51+
fmt = ->(t) { secs = now - t; secs < 1.hour ? "<1h" : secs < 1.day ? "#{(secs / 1.hour).floor}h" : "#{(secs / 1.day).floor}d" }
52+
last_str = fmt.call(@waiting_since)
53+
first_str = @first_waiting_since ? fmt.call(@first_waiting_since) : last_str
54+
%>
55+
&middot; Waiting <%= last_str %>
56+
<% if last_str != first_str %>
57+
(<%= first_str %> total)
58+
<% end %>
59+
<% end %>
60+
</p>
4861
</div>
4962
<div class="flex justify-start text-xl mt-4">
5063
<% if @project.tier.present? %>

0 commit comments

Comments
 (0)