From 838dfdfc2553e03ff967d93ceb1ce0ffdb8a0c39 Mon Sep 17 00:00:00 2001 From: James Curtis Date: Thu, 30 Jul 2020 12:18:59 +0100 Subject: [PATCH] [FIX] Food & Fluid not organised by effective date * F&F should be grouped by effective date to calculate for a 24 hour period * Some records not showing in chart * Display not sorted by effective date --- nh_food_and_fluid/models/food_and_fluid.py | 18 ++++++++++-------- nh_food_and_fluid/static/src/js/chart.js | 11 +++++++---- 2 files changed, 17 insertions(+), 12 deletions(-) diff --git a/nh_food_and_fluid/models/food_and_fluid.py b/nh_food_and_fluid/models/food_and_fluid.py index 69c9dd11..d0358783 100644 --- a/nh_food_and_fluid/models/food_and_fluid.py +++ b/nh_food_and_fluid/models/food_and_fluid.py @@ -389,8 +389,8 @@ def get_period_domain(self, date_time): period_start_datetime_str = self.get_period_start_datetime(date_time) period_end_datetime_str = self.get_period_end_datetime(date_time) domain = [ - ('date_terminated', '>=', period_start_datetime_str), - ('date_terminated', '<', period_end_datetime_str) + ('effective_date_terminated', '>=', period_start_datetime_str), + ('effective_date_terminated', '<', period_end_datetime_str) ] return domain @@ -508,7 +508,7 @@ def get_all_completed_food_and_fluid_observation_activities( ('spell_activity_id', '=', spell_activity_id) ] obs_activities = activity_model.search(domain, - order='date_terminated asc') + order='effective_date_terminated asc') return obs_activities @api.multi @@ -566,8 +566,9 @@ def get_period_dictionaries(self, food_and_fluid_observations, # periods containing their observations. for obs in food_and_fluid_observations: date_terminated = obs['date_terminated'] + effective_date_terminated = obs['effective_date_terminated'] period_start_datetime = \ - food_and_fluid_model.get_period_start_datetime(date_terminated) + food_and_fluid_model.get_period_start_datetime(effective_date_terminated) # If this observation is the first in a new period, # add the new period to the list. if period_start_datetime != period_start_datetime_current: @@ -605,15 +606,16 @@ def _create_new_period_dictionary(self, obs, spell_activity_id, # Set period start and end datetimes. date_terminated = obs['date_terminated'] + effective_date_terminated = obs['effective_date_terminated'] period['period_start_datetime'] = \ - food_and_fluid_model.get_period_start_datetime(date_terminated) + food_and_fluid_model.get_period_start_datetime(effective_date_terminated) period['period_end_datetime'] = \ - food_and_fluid_model.get_period_end_datetime(date_terminated) + food_and_fluid_model.get_period_end_datetime(effective_date_terminated) # Set fluid intake. total_fluid_intake = \ food_and_fluid_model.calculate_total_fluid_intake( - spell_activity_id, date_terminated + spell_activity_id, effective_date_terminated ) if include_units: total_fluid_intake = "{}ml".format(total_fluid_intake) @@ -621,7 +623,7 @@ def _create_new_period_dictionary(self, obs, spell_activity_id, # Set fluid balance. fluid_balance = self.calculate_fluid_balance(spell_activity_id, - date_terminated) + effective_date_terminated) if include_units: fluid_balance = \ self.format_fluid_balance_for_frontend(fluid_balance) diff --git a/nh_food_and_fluid/static/src/js/chart.js b/nh_food_and_fluid/static/src/js/chart.js index 4bef820a..344389fc 100644 --- a/nh_food_and_fluid/static/src/js/chart.js +++ b/nh_food_and_fluid/static/src/js/chart.js @@ -143,10 +143,13 @@ var fluidTableDescription = { }; function drawFood_fluidTable(settings, serverData){ - serverData.sort(function (a, b) { - var dateA = new Date(a.effective_date_terminated).getTime(), dateB = new Date(b.effective_date_terminated).getTime(); - return dateA - dateB; - }); + for ( var idx = 0; idx < serverData.length; idx++ ) { + var data = serverData[idx]; + data.observations.sort( function (a, b) { + var dateA = new Date(a.effective_date_terminated).getTime(), dateB = new Date(b.effective_date_terminated).getTime(); + return dateB - dateA; + }) + } setUpControls(); var processedData = processFoodFluidData(serverData); if(!settings.desktop){