Skip to content

Commit bf90751

Browse files
authored
fix(Dr. Rai Report): Blur only when action plan exists in the period (#5668)
**Story card:** [sc-16421](https://app.shortcut.com/simpledotorg/story/16421/fixes-to-dr-rai-mvp) ## Because PR #5644 introduced a bug ## This addresses Blurring only when the action plan exists within the period being viewed ## Test instructions unit test
1 parent 5c9a372 commit bf90751

File tree

4 files changed

+60
-5
lines changed

4 files changed

+60
-5
lines changed

app/components/dashboard/dr_rai_report.html.erb

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,24 @@
7474
<%# <button class="link-button edit">Edit</button> %>
7575
<ul>
7676
<% indicators.each do |indicator| %>
77-
<li><button role="button" class="link-button advancer <%= indicator.has_action_plans? ? "link-button-inactive" : "link-button-active" %>" <%= "disabled" if indicator.has_action_plans? %> data-target-type="<%= indicator.target_type %>" data-target-ui="<%= indicator.target_type_frontend %>" data-indicator-id=<%= indicator.id %> data-indicator-denominator="<%= indicator_denominator(indicator) %>" data-indicator-previous-numerator="<%= indicator_previous_numerator(indicator) %>" data-indicator-action="<%= indicator.action %>" data-indicator-action-active="<%= indicator.action_active %>" data-indicator-action-passive="<%= indicator.action_passive %>" data-indicator-unit="<%= indicator.unit %>"><%= indicator.display_name %></button></li>
77+
<%= tag.li do %>
78+
<%= tag.button disabled: indicator.has_action_plans?(region, selected_period), class: [
79+
"link-button advancer",
80+
indicator.has_action_plans?(region, selected_period) ? "link-button-inactive" : "link-button-active"
81+
], data: {
82+
indicator_action: indicator.action,
83+
indicator_action_active: indicator.action_active,
84+
indicator_action_passive: indicator.action_passive,
85+
indicator_denominator: indicator_denominator(indicator),
86+
indicator_id: indicator.id,
87+
indicator_previous_numerator: indicator_previous_numerator(indicator),
88+
indicator_unit: indicator.unit,
89+
target_type: indicator.target_type,
90+
target_ui: indicator.target_type_frontend,
91+
} do %>
92+
<%= indicator.display_name %>
93+
<% end %>
94+
<% end %>
7895
<% end %>
7996
</ul>
8097
</div>

app/components/dashboard/dr_rai_report.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ def indicators
2020

2121
def action_plans
2222
@action_plans ||= DrRai::ActionPlan
23-
.includes(:dr_rai_target)
23+
.joins(:dr_rai_target)
2424
.where(
2525
region: @region,
2626
dr_rai_target: {period: @selected_period.value.to_s}

app/models/dr_rai/indicator.rb

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,22 @@ def period
2929
Period.new(type: :quarter, value: target.period)
3030
end
3131

32-
def has_action_plans?
32+
def has_action_plans?(region, period)
33+
raise "Must use a quarter period" unless period.type == :quarter
34+
raise "Must use a Region type" unless region.is_a? Region
35+
3336
@region_exists ||= DrRai::ActionPlan
3437
.joins(:dr_rai_indicator)
35-
.where(dr_rai_indicator: {type: type})
36-
.exists?
38+
.joins(:dr_rai_target)
39+
.where(
40+
region: region,
41+
dr_rai_target: {
42+
period: period.value.to_s
43+
},
44+
dr_rai_indicator: {
45+
type: type
46+
}
47+
).exists?
3748
end
3849

3950
def target_type

spec/models/dr_rai/indicator_spec.rb

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,31 @@
99
expect(new_same_indicator.errors.of_kind?(:type, :taken)).to be_truthy
1010
end
1111
end
12+
13+
describe "#has_action_plans?" do
14+
around do |xmpl|
15+
Timecop.freeze("June 22 2022 22:22 GMT") { xmpl.run }
16+
end
17+
18+
let(:region) { setup_district_with_facilities[:region] }
19+
let(:this_period) { Period.quarter(Date.today) }
20+
let(:another_period) { Period.quarter(5.months.ago) }
21+
22+
let(:the_indicator) { create(:indicator, type: "ExistingIndicator") }
23+
24+
context "when there's an action plan of the same type" do
25+
before do
26+
create(:action_plan,
27+
region: region,
28+
dr_rai_indicator: the_indicator,
29+
dr_rai_target: create(:target, :percentage, indicator: the_indicator, period: this_period.value.to_s))
30+
end
31+
32+
context "in that period" do
33+
it "is true" do
34+
expect(the_indicator.has_action_plans?(region.region, this_period)).to be_truthy
35+
end
36+
end
37+
end
38+
end
1239
end

0 commit comments

Comments
 (0)