From a25705d6f4c88016e4f3d248ea8c97f41cf08d18 Mon Sep 17 00:00:00 2001 From: AmyNickollse Date: Mon, 20 May 2024 14:54:10 +0100 Subject: [PATCH] basic bootstrap rate table --- dm_regional_app/charts.py | 9 +++++++-- .../dm_regional_app/views/adjusted.html | 6 ++++-- dm_regional_app/templatetags/table_tags.py | 18 +++++++++++++----- dm_regional_app/views.py | 9 ++++++++- 4 files changed, 32 insertions(+), 10 deletions(-) diff --git a/dm_regional_app/charts.py b/dm_regional_app/charts.py index 25e08e8..eae1f52 100644 --- a/dm_regional_app/charts.py +++ b/dm_regional_app/charts.py @@ -1,4 +1,3 @@ -import django_tables2 import pandas as pd import plotly.express as px import plotly.graph_objects as go @@ -141,5 +140,11 @@ def transistion_rate_table(data): df.insert(0, "Age", age) df.drop("to", axis=1, inplace=True) df = df.round(4) + df["Age"] = df["Age"].mask(df["Age"].duplicated(), "") - return df + cols = df.columns.to_frame().T + cols = cols.transpose() + cols["Age"] = cols["Age"].mask(cols["Age"].duplicated(), "") + cols = cols.transpose() + + return df, cols diff --git a/dm_regional_app/templates/dm_regional_app/views/adjusted.html b/dm_regional_app/templates/dm_regional_app/views/adjusted.html index a6b8c23..b036e4b 100644 --- a/dm_regional_app/templates/dm_regional_app/views/adjusted.html +++ b/dm_regional_app/templates/dm_regional_app/views/adjusted.html @@ -77,14 +77,16 @@
To make adjustments, you can view the table by:
- +
+
- {{ transistion_rate_table | convert_data_frame_to_html_table_headers | safe}} + {{ tran_rate_cols | convert_data_frame_to_html_table_headers | safe}} {{transistion_rate_table | convert_data_frame_to_html_table_rows | safe}}
+
diff --git a/dm_regional_app/templatetags/table_tags.py b/dm_regional_app/templatetags/table_tags.py index a1a01ea..3dc421b 100644 --- a/dm_regional_app/templatetags/table_tags.py +++ b/dm_regional_app/templatetags/table_tags.py @@ -4,10 +4,13 @@ def convert_data_frame_to_html_table_headers(df): - html = "" - for col in df.columns: - html += f"{col}" - html += "" + html = "" + for row in df.values: + row_html = "" + for value in row: + row_html += f'

{value.capitalize()}

' + row_html += "" + html += row_html return html @@ -16,7 +19,12 @@ def convert_data_frame_to_html_table_rows(df): for row in df.values: row_html = "" for value in row: - row_html += f"{value}" + if isinstance(value, str): + row_html += ( + f'

{value.capitalize()}

' + ) + else: + row_html += f'

{value}

' row_html += "" html += row_html return html diff --git a/dm_regional_app/views.py b/dm_regional_app/views.py index 7c88f98..1da3f09 100644 --- a/dm_regional_app/views.py +++ b/dm_regional_app/views.py @@ -163,7 +163,13 @@ def adjusted(request): stats, prediction, **session_scenario.prediction_parameters ) - tran_rate_table = transistion_rate_table(prediction.transition_rates) + tran_rate_table, tran_rate_cols = transistion_rate_table( + prediction.transition_rates + ) + + tran_rate_cols = tran_rate_cols + + print(type(tran_rate_cols)) return render( request, @@ -174,6 +180,7 @@ def adjusted(request): "chart": chart, "empty_dataframe": empty_dataframe, "transistion_rate_table": tran_rate_table, + "tran_rate_cols": tran_rate_cols, }, ) else: