diff --git a/caimira/apps/calculator/report_generator.py b/caimira/apps/calculator/report_generator.py index 76c363f5..b70610bf 100644 --- a/caimira/apps/calculator/report_generator.py +++ b/caimira/apps/calculator/report_generator.py @@ -319,6 +319,12 @@ def readable_minutes(minutes: int) -> str: return time_str + unit +def hour_format(hour: float) -> str: + hours = int(hour) + minutes = int(hour % 1 * 60) + + return f"{hours}:{minutes}" + def percentage(absolute: float) -> float: return absolute * 100 @@ -514,6 +520,7 @@ class ReportGenerator: env.filters['non_zero_percentage'] = non_zero_percentage env.filters['readable_minutes'] = readable_minutes env.filters['minutes_to_time'] = minutes_to_time + env.filters['hour_format'] = hour_format env.filters['float_format'] = "{0:.2f}".format env.filters['int_format'] = "{:0.0f}".format env.filters['percentage'] = percentage diff --git a/caimira/apps/calculator/static/js/co2_form.js b/caimira/apps/calculator/static/js/co2_form.js index e5277f3f..d03186a5 100644 --- a/caimira/apps/calculator/static/js/co2_form.js +++ b/caimira/apps/calculator/static/js/co2_form.js @@ -125,6 +125,12 @@ function validate() { return submit; } +function display_transition_times_hour_format(start, stop) { + var minutes_start = start % 1 * 60; + var minutes_stop = stop % 1 * 60; + return Math.floor(start) + ':' + minutes_start.toPrecision(2) + ' - ' + Math.floor(stop) + ':' + minutes_stop.toPrecision(2); +} + function display_fitting_data(json_response) { $("#DIV_CO2_fitting_result").show(); $("#CO2_data_plot").attr("src", json_response['CO2_plot']); @@ -132,11 +138,10 @@ function display_fitting_data(json_response) { delete json_response['CO2_plot']; $("#CO2_fitting_result").val(JSON.stringify(json_response)); $("#exhalation_rate_fit").html('Exhalation rate: ' + String(json_response['exhalation_rate'].toFixed(2)) + ' m³/h'); - let ventilation_table = "TimeVentilation value (ACH)"; + let ventilation_table = "Time (HH:MM)ACH value (h⁻¹)"; json_response['ventilation_values'].map((val, index) => { - console.log(json_response['transition_times']) - let transition_times = `${(json_response['transition_times'][index]).toFixed(2)} - ${(json_response['transition_times'][index + 1]).toFixed(2)}` - ventilation_table += `${transition_times}${val}`; + let transition_times = display_transition_times_hour_format(json_response['transition_times'][index], json_response['transition_times'][index + 1]); + ventilation_table += `${transition_times}${val.toPrecision(2)}`; }); $("#ventilation_rate_fit").html(ventilation_table); $("#generate_fitting_data").html('Fit data'); diff --git a/caimira/apps/calculator/static/js/form.js b/caimira/apps/calculator/static/js/form.js index f24c21cc..72eff671 100644 --- a/caimira/apps/calculator/static/js/form.js +++ b/caimira/apps/calculator/static/js/form.js @@ -500,7 +500,6 @@ function ventilation_from_fitting(condition_from_fitting) { $('input[type=radio][id=mechanical_ventilation]').prop("disabled", condition_from_fitting); $('input[type=radio][id=natural_ventilation]').prop("disabled", condition_from_fitting); $('input[type=radio][id=from_fitting]').prop("disabled", !condition_from_fitting); - if (condition_from_fitting) { $('input[type=radio][id=from_fitting]').prop('checked',true); $('#DIVfrom_fitting').after($('#window_opening_regime')); diff --git a/caimira/apps/templates/base/calculator.report.html.j2 b/caimira/apps/templates/base/calculator.report.html.j2 index cdbd26d0..fed4c361 100644 --- a/caimira/apps/templates/base/calculator.report.html.j2 +++ b/caimira/apps/templates/base/calculator.report.html.j2 @@ -530,11 +530,15 @@ {% endif %}
  • From Fitting: {% if form.ventilation_type == "from_fitting" %} - Yes + Yes - + {% for ventilation in form.CO2_fitting_result['ventilation_values'] %} - + {% set transition_time = form.CO2_fitting_result['transition_times'] %} + + + + {% endfor %}
    Ventilation value (ACH)
    Time (HH:MM)ACH value (h⁻¹)
    {{ventilation}}
    {{ transition_time[loop.index - 1] | hour_format }} - {{ transition_time[loop.index] | hour_format }}{{ ventilation | float_format }}
    {% else %}