Skip to content

Commit

Permalink
Add an Updated timestamp to MyFacilities pages (#1259)
Browse files Browse the repository at this point in the history
**Story card:** https://app.clubhouse.io/simpledotorg/story/1103/add-an-updated-timestamp-to-myfacilities-pages

## Because

We're changing how we refresh matviews weekly to figure out perf bottlnecks. In the interim, we'll display an page update timestamp to let people know if it might be stale.
  • Loading branch information
kitallis committed Aug 28, 2020
1 parent 953b5b1 commit c63383a
Show file tree
Hide file tree
Showing 4 changed files with 51 additions and 18 deletions.
17 changes: 17 additions & 0 deletions app/controllers/my_facilities_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ class MyFacilitiesController < AdminController
before_action :authorize_my_facilities
before_action :set_selected_cohort_period, only: [:blood_pressure_control]
before_action :set_selected_period, only: [:registrations, :missed_visits]
before_action :set_last_updated_at

def index
@facilities = policy_scope([:manage, :facility, Facility])
Expand Down Expand Up @@ -90,6 +91,22 @@ def missed_visits

private

def set_last_updated_at
last_updated_at =
begin
Time.parse(Rails.cache.fetch(Constants::MATVIEW_REFRESH_TIME_KEY))
rescue TypeError, ArgumentError
nil
end

@last_updated_at =
if last_updated_at.nil?
"unknown"
else
last_updated_at.in_time_zone(Rails.application.config.country[:time_zone]).strftime("%d-%^b-%Y %I:%M%p")
end
end

def set_time_zone
time_zone = Rails.application.config.country[:time_zone] || DEFAULT_ANALYTICS_TIME_ZONE

Expand Down
47 changes: 29 additions & 18 deletions app/views/layouts/my_facilities.html.erb
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,12 @@
--------------------->
<div class="mobile">
<div class="dropdown">
<% my_facilities_page_titles = { my_facilities_overview_path => 'Overview',
my_facilities_blood_pressure_control_path => 'BP control',
my_facilities_registrations_path => 'Registrations' } %>
<% my_facilities_page_titles = {
my_facilities_overview_path => 'Overview',
my_facilities_blood_pressure_control_path => 'BP control',
my_facilities_missed_visits_path => 'Missed Visits',
my_facilities_registrations_path => 'Registrations'
} %>
<h1 class="btn btn-sm dropdown-toggle pl-0" role="button" id="dropdownMenuLink2" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<%= my_facilities_page_titles[request.path] %>
</h1>
Expand All @@ -16,6 +19,8 @@
<%= link_to "Missed Visits", my_facilities_missed_visits_path(request.query_parameters), class: "dropdown-item" %>
<%= link_to "Registrations", my_facilities_registrations_path(request.query_parameters), class: "dropdown-item" %>
</div>

<div class="updated-date pb-4">Date updated: <span><%= @last_updated_at %></span></div>
</div>
<% unless request.path == my_facilities_overview_path %>
<div class="mt-0 mb-4 active-filters-mobile">
Expand Down Expand Up @@ -49,7 +54,7 @@
<% @facility_sizes.each do |size| %>
<div class="checkbox-row">
<label for=<%= "facility-#{size}-mobile" %>>
<%= check_box_tag("size[]", value=size, checked=@selected_sizes&.include?(size), {id: "facility-#{size}-mobile"}) %>
<%= check_box_tag("size[]", value = size, checked = @selected_sizes&.include?(size), {id: "facility-#{size}-mobile"}) %>
<%= size.capitalize %>
</label>
</div>
Expand All @@ -61,21 +66,21 @@
<div class="checkbox-row">
<label for="all-zones-filter-mobile">
<%= radio_button_tag("zone",
"",
checked=(@selected_zones.size == @zones.size),
{ form: "query-filters-mobile",
id: "all-zones-filter-mobile" }) %>
"",
checked = (@selected_zones.size == @zones.size),
{form: "query-filters-mobile",
id: "all-zones-filter-mobile"}) %>
All blocks
</label>
</div>
<% @zones.each do |zone| %>
<div class="checkbox-row">
<label for="<%= zone %>-filter-mobile">
<%= radio_button_tag("zone",
zone,
checked=(@selected_zones.size == 1 && @selected_zones.first == zone),
{ form: "query-filters-mobile",
id: "all-zones-filter-mobile" }) %>
zone,
checked = (@selected_zones.size == 1 && @selected_zones.first == zone),
{form: "query-filters-mobile",
id: "all-zones-filter-mobile"}) %>
<%= zone.capitalize %>
</label>
</div>
Expand All @@ -99,17 +104,19 @@
<div class="row">
<div class="col-lg-2 pl-lg-0 desktop">
<nav class="secondary-nav">
<h4 class="pl-2 mt-3">My Facilities</h4>
<%= link_to 'Overview', my_facilities_overview_path,
class: "nav-link #{active_action?("index")}" %>
class: "nav-link #{active_action?("index")}" %>
<%= link_to 'BP control', my_facilities_blood_pressure_control_path(preserve_query_params(request.query_parameters, ["size"])),
class: "nav-link #{active_action?("blood_pressure_control")}" %>
class: "nav-link #{active_action?("blood_pressure_control")}" %>
<%= link_to 'Missed Visits', my_facilities_missed_visits_path(preserve_query_params(request.query_parameters, ["size", "period"])),
class: "nav-link #{active_action?("missed_visits")}" %>
class: "nav-link #{active_action?("missed_visits")}" %>
<%= link_to 'Registrations', my_facilities_registrations_path(preserve_query_params(request.query_parameters, ["size", "period"])),
class: "nav-link #{active_action?("registrations")}" %>
class: "nav-link #{active_action?("registrations")}" %>
</nav>

<% unless request.path == my_facilities_overview_path %>
<section id="facility-filters" class="secondary-nav-filters">
<section id="facility-filters" class="secondary-nav-filters mt-5">
<h4>Facility Filters</h4>
<div class="dropdown show">
<a class="btn btn-sm dropdown-toggle" href="#" role="button" id="dropdownMenuLink" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Expand All @@ -131,7 +138,7 @@
<% @facility_sizes.each do |size| %>
<div>
<label for=<%= "facility-#{size}" %>>
<%= check_box_tag("size[]", value=size, checked=@selected_sizes&.include?(size), {id: "facility-#{size}"}) %>
<%= check_box_tag("size[]", value = size, checked = @selected_sizes&.include?(size), {id: "facility-#{size}"}) %>
<%= size.capitalize %>
</label>
</div>
Expand All @@ -142,6 +149,10 @@
</form>
</section>
<% end %>
<div class="updated-date mt-5">
<h4>Data updated</h4>
<span><%= @last_updated_at %></span>
</div>
</div>
<div class="col-lg-10 pr-lg-0">
<%= yield %>
Expand Down
3 changes: 3 additions & 0 deletions config/initializers/constants.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
module Constants
MATVIEW_REFRESH_TIME_KEY = "last_materialized_view_refresh_time".freeze
end
2 changes: 2 additions & 0 deletions lib/tasks/refresh_materialized_db_views.rake
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,8 @@ task refresh_materialized_db_views: :environment do
benchmark("refresh_materialized_views PatientRegistrationsPerDayPerFacility") do
PatientRegistrationsPerDayPerFacility.refresh
end

Rails.cache.write(Constants::MATVIEW_REFRESH_TIME_KEY, Time.current.in_time_zone(tz).iso8601)
end
end
end

0 comments on commit c63383a

Please sign in to comment.