Refactor code structure for improved readability and maintainability
This commit is contained in:
@@ -4,352 +4,355 @@ from jinja2 import Environment, FileSystemLoader
|
|||||||
env = Environment(loader=FileSystemLoader("report_gen"))
|
env = Environment(loader=FileSystemLoader("report_gen"))
|
||||||
|
|
||||||
# Define templates and their unique contexts
|
# Define templates and their unique contexts
|
||||||
pages = [
|
# pages = [
|
||||||
("page_1.html", {"name": "John Doe", "surname": "Moran", "date": "July 29, 2025"}),
|
# ("page_1.html", {"name": "John Doe", "surname": "Moran", "date": "July 29, 2025"}),
|
||||||
("page_2.html", {"content": "This is page 2 content"}),
|
# ("page_2.html", {"content": "This is page 2 content"}),
|
||||||
(
|
# (
|
||||||
"page_3.html",
|
# "page_3.html",
|
||||||
{
|
# {
|
||||||
"patient_name": "Keirstyn Moran",
|
# "patient_name": "Keirstyn Moran",
|
||||||
"age": "34",
|
# "age": "34",
|
||||||
"height": "5'4\"",
|
# "height": "5'4\"",
|
||||||
"weight": "123lbs",
|
# "weight": "123lbs",
|
||||||
"focus": "Endurance",
|
# "focus": "Endurance",
|
||||||
"fat_mass": "27.6lbs",
|
# "fat_mass": "27.6lbs",
|
||||||
"fat_percentage": "22.4%",
|
# "fat_percentage": "22.4%",
|
||||||
"lean_mass": "95.4lbs",
|
# "lean_mass": "95.4lbs",
|
||||||
"lean_percentage": "77.6%",
|
# "lean_percentage": "77.6%",
|
||||||
"body_fat_percent": "22.4%",
|
# "body_fat_percent": "22.4%",
|
||||||
"age_range": "20-39",
|
# "age_range": "20-39",
|
||||||
"gender": "F",
|
# "gender": "F",
|
||||||
"contact_email": "info@ishplabs.com",
|
# "contact_email": "info@ishplabs.com",
|
||||||
"website": "www.ishplabs.com",
|
# "website": "www.ishplabs.com",
|
||||||
"social": "@ishplabs",
|
# "social": "@ishplabs",
|
||||||
"page_number": "4",
|
# "page_number": "4",
|
||||||
"body_composition_chart": "../graphs/page_1_body_composition.png",
|
# "body_composition_chart": "../graphs/page_1_body_composition.png",
|
||||||
"body_fat_chart": "../graphs/page_1_body_fat.png",
|
# "body_fat_chart": "../graphs/page_1_body_fat.png",
|
||||||
},
|
# },
|
||||||
),
|
# ),
|
||||||
(
|
# (
|
||||||
"page_4.html",
|
# "page_4.html",
|
||||||
{
|
# {
|
||||||
"patient_name": "Keirstyn Moran",
|
# "patient_name": "Keirstyn Moran",
|
||||||
"age": "34",
|
# "age": "34",
|
||||||
"height": "5'4\"",
|
# "height": "5'4\"",
|
||||||
"weight": "123lbs",
|
# "weight": "123lbs",
|
||||||
"focus": "Endurance",
|
# "focus": "Endurance",
|
||||||
"contact_email": "info@ishplabs.com",
|
# "contact_email": "info@ishplabs.com",
|
||||||
"website": "www.ishplabs.com",
|
# "website": "www.ishplabs.com",
|
||||||
"social": "@ishplabs",
|
# "social": "@ishplabs",
|
||||||
"page_number": "3",
|
# "page_number": "3",
|
||||||
},
|
# },
|
||||||
),
|
# ),
|
||||||
(
|
# (
|
||||||
"page_5.html",
|
# "page_5.html",
|
||||||
{
|
# {
|
||||||
"patient_name": "Keirstyn Moran",
|
# "patient_name": "Keirstyn Moran",
|
||||||
"age": "34",
|
# "age": "34",
|
||||||
"height": "5'4\"",
|
# "height": "5'4\"",
|
||||||
"weight": "123lbs",
|
# "weight": "123lbs",
|
||||||
"focus": "Endurance",
|
# "focus": "Endurance",
|
||||||
"resting_calories": "1386kCals",
|
# "resting_calories": "1386kCals",
|
||||||
"fat_percentage": "33%",
|
# "fat_percentage": "33%",
|
||||||
"carb_percentage": "67%",
|
# "carb_percentage": "67%",
|
||||||
"neat_calories": "762kCals",
|
# "neat_calories": "762kCals",
|
||||||
"weight_loss_calories": "423kCals",
|
# "weight_loss_calories": "423kCals",
|
||||||
"weight_loss_rate": "1.1lbs",
|
# "weight_loss_rate": "1.1lbs",
|
||||||
"total_calories": "~1725kCals",
|
# "total_calories": "~1725kCals",
|
||||||
"contact_email": "info@ishplabs.com",
|
# "contact_email": "info@ishplabs.com",
|
||||||
"website": "www.ishplabs.com",
|
# "website": "www.ishplabs.com",
|
||||||
"social": "@ishplabs",
|
# "social": "@ishplabs",
|
||||||
"page_number": "5",
|
# "page_number": "5",
|
||||||
},
|
# },
|
||||||
),
|
# ),
|
||||||
(
|
# (
|
||||||
"page_6.html",
|
# "page_6.html",
|
||||||
{
|
# {
|
||||||
"patient_name": "Keirstyn Moran",
|
# "patient_name": "Keirstyn Moran",
|
||||||
"age": "34",
|
# "age": "34",
|
||||||
"height": "5'4\"",
|
# "height": "5'4\"",
|
||||||
"weight": "123lbs",
|
# "weight": "123lbs",
|
||||||
"focus": "Endurance",
|
# "focus": "Endurance",
|
||||||
"deficit_calories": "1725KCals",
|
# "deficit_calories": "1725KCals",
|
||||||
"deficit_protein": "120g Protein",
|
# "deficit_protein": "120g Protein",
|
||||||
"deficit_carbs": "155g Carbs",
|
# "deficit_carbs": "155g Carbs",
|
||||||
"deficit_fat": "69g Fat",
|
# "deficit_fat": "69g Fat",
|
||||||
"deficit_fiber": "25g Fibre",
|
# "deficit_fiber": "25g Fibre",
|
||||||
"refeed_weekday_calories": "1615KCals",
|
# "refeed_weekday_calories": "1615KCals",
|
||||||
"refeed_weekday_protein": "120g Protein",
|
# "refeed_weekday_protein": "120g Protein",
|
||||||
"refeed_weekday_carbs": "142g Carbs",
|
# "refeed_weekday_carbs": "142g Carbs",
|
||||||
"refeed_weekday_fat": "63g Fat",
|
# "refeed_weekday_fat": "63g Fat",
|
||||||
"refeed_weekday_fiber": "24g Fibre",
|
# "refeed_weekday_fiber": "24g Fibre",
|
||||||
"refeed_weekend_calories": "2000KCals",
|
# "refeed_weekend_calories": "2000KCals",
|
||||||
"refeed_weekend_protein": "120g Protein",
|
# "refeed_weekend_protein": "120g Protein",
|
||||||
"refeed_weekend_carbs": "190g Carbs",
|
# "refeed_weekend_carbs": "190g Carbs",
|
||||||
"refeed_weekend_fat": "84g Fat",
|
# "refeed_weekend_fat": "84g Fat",
|
||||||
"refeed_weekend_fiber": "30g Fibre",
|
# "refeed_weekend_fiber": "30g Fibre",
|
||||||
"protein_percentage": "28%",
|
# "protein_percentage": "28%",
|
||||||
"carbs_percentage": "36%",
|
# "carbs_percentage": "36%",
|
||||||
"fats_percentage": "36%",
|
# "fats_percentage": "36%",
|
||||||
"contact_email": "info@ishplabs.com",
|
# "contact_email": "info@ishplabs.com",
|
||||||
"website": "www.ishplabs.com",
|
# "website": "www.ishplabs.com",
|
||||||
"social": "@ishplabs",
|
# "social": "@ishplabs",
|
||||||
"page_number": "6",
|
# "page_number": "6",
|
||||||
},
|
# },
|
||||||
),
|
# ),
|
||||||
(
|
# (
|
||||||
"page_7.html",
|
# "page_7.html",
|
||||||
{
|
# {
|
||||||
"patient_name": "Keirstyn Moran",
|
# "patient_name": "Keirstyn Moran",
|
||||||
"age": "34",
|
# "age": "34",
|
||||||
"height": "5'4\"",
|
# "height": "5'4\"",
|
||||||
"weight": "123lbs",
|
# "weight": "123lbs",
|
||||||
"focus": "Endurance",
|
# "focus": "Endurance",
|
||||||
"fvc_value": "4.24L → 112.0%",
|
# "fvc_value": "4.24L → 112.0%",
|
||||||
"fev1_value": "3.26L → 103.3%",
|
# "fev1_value": "3.26L → 103.3%",
|
||||||
"fev1_fvc_ratio": "76.89% → 91.8%",
|
# "fev1_fvc_ratio": "76.89% → 91.8%",
|
||||||
"indication": "No Respiratory Capacity Limitation",
|
# "indication": "No Respiratory Capacity Limitation",
|
||||||
"respiratory_graph": "../graphs/respiratory_chart.png",
|
# "respiratory_graph": "../graphs/respiratory_chart.png",
|
||||||
"peak_vt_value": "2.38L/Breath which occurs at 172bpm (Zone 3)",
|
# "peak_vt_value": "2.38L/Breath which occurs at 172bpm (Zone 3)",
|
||||||
"peak_vt_percentage": "73% of FEV1",
|
# "peak_vt_percentage": "73% of FEV1",
|
||||||
"contact_email": "info@ishplabs.com",
|
# "contact_email": "info@ishplabs.com",
|
||||||
"website": "www.ishplabs.com",
|
# "website": "www.ishplabs.com",
|
||||||
"social": "@ishplabs",
|
# "social": "@ishplabs",
|
||||||
"page_number": "7",
|
# "page_number": "7",
|
||||||
},
|
# },
|
||||||
),
|
# ),
|
||||||
(
|
# (
|
||||||
"page_8.html",
|
# "page_8.html",
|
||||||
{
|
# {
|
||||||
"patient_name": "Keirstyn Moran",
|
# "patient_name": "Keirstyn Moran",
|
||||||
"age": "34",
|
# "age": "34",
|
||||||
"height": "5'4\"",
|
# "height": "5'4\"",
|
||||||
"weight": "123lbs",
|
# "weight": "123lbs",
|
||||||
"focus": "Endurance",
|
# "focus": "Endurance",
|
||||||
"vo2_max_value": "49.5",
|
# "vo2_max_value": "49.5",
|
||||||
"vo2_max_percentile": "100th percentile",
|
# "vo2_max_percentile": "100th percentile",
|
||||||
"age_range": "30-39",
|
# "age_range": "30-39",
|
||||||
"very_poor_range": "19.0-24.1",
|
# "very_poor_range": "19.0-24.1",
|
||||||
"poor_range": "24.1-28.2",
|
# "poor_range": "24.1-28.2",
|
||||||
"fair_range": "28.2-32.2",
|
# "fair_range": "28.2-32.2",
|
||||||
"good_range": "32.2-35.7",
|
# "good_range": "32.2-35.7",
|
||||||
"excellent_range": "35.7-45.8",
|
# "excellent_range": "35.7-45.8",
|
||||||
"superior_range": "45.8+",
|
# "superior_range": "45.8+",
|
||||||
"zone1_percentage": "55-65% of Max Heart Rate",
|
# "zone1_percentage": "55-65% of Max Heart Rate",
|
||||||
"zone2_percentage": "65-75% of Max Heart Rate",
|
# "zone2_percentage": "65-75% of Max Heart Rate",
|
||||||
"zone3_percentage": "80-85% of Max Heart Rate",
|
# "zone3_percentage": "80-85% of Max Heart Rate",
|
||||||
"zone4_percentage": "85-88% of Max Heart Rate",
|
# "zone4_percentage": "85-88% of Max Heart Rate",
|
||||||
"zone5_percentage": "90% of Max Heart Rate",
|
# "zone5_percentage": "90% of Max Heart Rate",
|
||||||
"zone1_bpm": "81-96bpm",
|
# "zone1_bpm": "81-96bpm",
|
||||||
"zone2_bpm": "96-100bpm",
|
# "zone2_bpm": "96-100bpm",
|
||||||
"zone3_bpm": "100-178bpm",
|
# "zone3_bpm": "100-178bpm",
|
||||||
"zone4_bpm": "178-188bpm",
|
# "zone4_bpm": "178-188bpm",
|
||||||
"zone5_bpm": "188-198bpm",
|
# "zone5_bpm": "188-198bpm",
|
||||||
"zone1_speed": "3.5mph",
|
# "zone1_speed": "3.5mph",
|
||||||
"zone2_speed": "3.5-4.0mph",
|
# "zone2_speed": "3.5-4.0mph",
|
||||||
"zone3_speed": "4.0-6.5mph",
|
# "zone3_speed": "4.0-6.5mph",
|
||||||
"zone4_speed": "6.5-7.0mph",
|
# "zone4_speed": "6.5-7.0mph",
|
||||||
"zone5_speed": "7.0-8.0mph",
|
# "zone5_speed": "7.0-8.0mph",
|
||||||
"zone1_incline": "2% Incline",
|
# "zone1_incline": "2% Incline",
|
||||||
"zone2_incline": "2% Incline",
|
# "zone2_incline": "2% Incline",
|
||||||
"zone3_incline": "2% Incline",
|
# "zone3_incline": "2% Incline",
|
||||||
"zone4_incline": "2% Incline",
|
# "zone4_incline": "2% Incline",
|
||||||
"zone5_incline": "2% Incline",
|
# "zone5_incline": "2% Incline",
|
||||||
"zone1_pace": "10:39min/km Pace",
|
# "zone1_pace": "10:39min/km Pace",
|
||||||
"zone2_pace": "10:39-9:19min/km Pace",
|
# "zone2_pace": "10:39-9:19min/km Pace",
|
||||||
"zone3_pace": "9:19-5:44min/km Pace",
|
# "zone3_pace": "9:19-5:44min/km Pace",
|
||||||
"zone4_pace": "5:44-5:20min/km Pace",
|
# "zone4_pace": "5:44-5:20min/km Pace",
|
||||||
"zone5_pace": "5:20-4:40min/km Pace",
|
# "zone5_pace": "5:20-4:40min/km Pace",
|
||||||
"zone1_calories": "4.4kcals/minute",
|
# "zone1_calories": "4.4kcals/minute",
|
||||||
"zone2_calories": "5.9kcals/minute",
|
# "zone2_calories": "5.9kcals/minute",
|
||||||
"zone3_calories": "9.4kcals/minute",
|
# "zone3_calories": "9.4kcals/minute",
|
||||||
"zone4_calories": "12.5kcals/minute",
|
# "zone4_calories": "12.5kcals/minute",
|
||||||
"zone5_calories": "12.8kcals/minute",
|
# "zone5_calories": "12.8kcals/minute",
|
||||||
"zone1_carb": "Avg: 0.4g/min Carb Utilization",
|
# "zone1_carb": "Avg: 0.4g/min Carb Utilization",
|
||||||
"zone2_carb": "Avg: 0.6g/min Carb Utilization",
|
# "zone2_carb": "Avg: 0.6g/min Carb Utilization",
|
||||||
"zone3_carb": "Avg: 1.9g/min Carb Utilization",
|
# "zone3_carb": "Avg: 1.9g/min Carb Utilization",
|
||||||
"zone4_carb": "Avg: 2.9g/min Carb Utilization",
|
# "zone4_carb": "Avg: 2.9g/min Carb Utilization",
|
||||||
"zone5_carb": "Avg: 3.1g/min Carb Utilization",
|
# "zone5_carb": "Avg: 3.1g/min Carb Utilization",
|
||||||
"zone1_breaths": "Avg: 27 breaths",
|
# "zone1_breaths": "Avg: 27 breaths",
|
||||||
"zone2_breaths": "Avg: 28 breaths",
|
# "zone2_breaths": "Avg: 28 breaths",
|
||||||
"zone3_breaths": "Avg: 31 breaths",
|
# "zone3_breaths": "Avg: 31 breaths",
|
||||||
"zone4_breaths": "Avg: 42 breaths",
|
# "zone4_breaths": "Avg: 42 breaths",
|
||||||
"zone5_breaths": "Avg: 51 breaths",
|
# "zone5_breaths": "Avg: 51 breaths",
|
||||||
"zone1_breath_range": "Ideal Range: 15-20 breaths",
|
# "zone1_breath_range": "Ideal Range: 15-20 breaths",
|
||||||
"zone2_breath_range": "Ideal Range: 20-25 breaths",
|
# "zone2_breath_range": "Ideal Range: 20-25 breaths",
|
||||||
"zone3_breath_range": "Ideal Range: 25-30 breaths",
|
# "zone3_breath_range": "Ideal Range: 25-30 breaths",
|
||||||
"zone4_breath_range": "Ideal Range: 30-35 breaths",
|
# "zone4_breath_range": "Ideal Range: 30-35 breaths",
|
||||||
"zone5_breath_range": "Ideal Range: 40+ breaths",
|
# "zone5_breath_range": "Ideal Range: 40+ breaths",
|
||||||
"contact_email": "info@ishplabs.com",
|
# "contact_email": "info@ishplabs.com",
|
||||||
"website": "www.ishplabs.com",
|
# "website": "www.ishplabs.com",
|
||||||
"social": "@ishplabs",
|
# "social": "@ishplabs",
|
||||||
"page_number": "8",
|
# "page_number": "8",
|
||||||
},
|
# },
|
||||||
),
|
# ),
|
||||||
(
|
# (
|
||||||
"page_9.html",
|
# "page_9.html",
|
||||||
{
|
# {
|
||||||
"patient_name": "Keirstyn Moran",
|
# "patient_name": "Keirstyn Moran",
|
||||||
"age": "34",
|
# "age": "34",
|
||||||
"height": "5'4\"",
|
# "height": "5'4\"",
|
||||||
"weight": "123lbs",
|
# "weight": "123lbs",
|
||||||
"focus": "Endurance",
|
# "focus": "Endurance",
|
||||||
"fuel_utilization_chart": "../graphs/fuel_utilization_chart.png",
|
# "fuel_utilization_chart": "../graphs/fuel_utilization_chart.png",
|
||||||
"client_name": "Keirstyn Moran",
|
# "client_name": "Keirstyn Moran",
|
||||||
"assessment_date": "July 29 2025",
|
# "assessment_date": "July 29 2025",
|
||||||
"contact_email": "info@ishplabs.com",
|
# "contact_email": "info@ishplabs.com",
|
||||||
"website": "www.ishplabs.com",
|
# "website": "www.ishplabs.com",
|
||||||
"social": "@ishplabs",
|
# "social": "@ishplabs",
|
||||||
"page_number": "9",
|
# "page_number": "9",
|
||||||
},
|
# },
|
||||||
),
|
# ),
|
||||||
(
|
# (
|
||||||
"page_10.html",
|
# "page_10.html",
|
||||||
{
|
# {
|
||||||
"patient_name": "Keirstyn Moran",
|
# "patient_name": "Keirstyn Moran",
|
||||||
"age": "34",
|
# "age": "34",
|
||||||
"height": "5'4\"",
|
# "height": "5'4\"",
|
||||||
"weight": "123lbs",
|
# "weight": "123lbs",
|
||||||
"focus": "Endurance",
|
# "focus": "Endurance",
|
||||||
"vo2_pulse_drop_bpm": "180 bpm",
|
# "vo2_pulse_drop_bpm": "180 bpm",
|
||||||
"vo2_pulse_drop_zone": "Zone 4",
|
# "vo2_pulse_drop_zone": "Zone 4",
|
||||||
"vo2_pulse_chart": "../graphs/vo2_pulse_chart.png",
|
# "vo2_pulse_chart": "../graphs/vo2_pulse_chart.png",
|
||||||
"vo2_breath_drop_bpm": "173 bpm",
|
# "vo2_breath_drop_bpm": "173 bpm",
|
||||||
"vo2_breath_drop_zone": "Zone 3",
|
# "vo2_breath_drop_zone": "Zone 3",
|
||||||
"vo2_breath_chart": "../graphs/vo2_breath_chart.png",
|
# "vo2_breath_chart": "../graphs/vo2_breath_chart.png",
|
||||||
"contact_email": "info@ishplabs.com",
|
# "contact_email": "info@ishplabs.com",
|
||||||
"website": "www.ishplabs.com",
|
# "website": "www.ishplabs.com",
|
||||||
"social": "@ishplabs",
|
# "social": "@ishplabs",
|
||||||
"page_number": "9",
|
# "page_number": "9",
|
||||||
},
|
# },
|
||||||
),
|
# ),
|
||||||
(
|
# (
|
||||||
"page_11.html",
|
# "page_11.html",
|
||||||
{
|
# {
|
||||||
"patient_name": "Keirstyn Moran",
|
# "patient_name": "Keirstyn Moran",
|
||||||
"age": "34",
|
# "age": "34",
|
||||||
"height": "5'4\"",
|
# "height": "5'4\"",
|
||||||
"weight": "123lbs",
|
# "weight": "123lbs",
|
||||||
"focus": "Endurance",
|
# "focus": "Endurance",
|
||||||
"fat_max_optimal": "*Optimal 10-12Kcals/minute",
|
# "fat_max_optimal": "*Optimal 10-12Kcals/minute",
|
||||||
"fat_max_value": "3.8Kcals/min",
|
# "fat_max_value": "3.8Kcals/min",
|
||||||
"fat_max_heart_rate": "49% of Max Heart Rate",
|
# "fat_max_heart_rate": "49% of Max Heart Rate",
|
||||||
"fat_max_bpm": "97 bpm",
|
# "fat_max_bpm": "97 bpm",
|
||||||
"crossover_bpm": "100bpm",
|
# "crossover_bpm": "100bpm",
|
||||||
"crossover_heart_rate": "51% of Max Heart Rate",
|
# "crossover_heart_rate": "51% of Max Heart Rate",
|
||||||
"fat_metabolism_note": "100bpm at a speed of 4.0mph and incline of 2%",
|
# "fat_metabolism_note": "100bpm at a speed of 4.0mph and incline of 2%",
|
||||||
"fat_metabolism_chart": "../graphs/fat_metabolism_chart.png",
|
# "fat_metabolism_chart": "../graphs/fat_metabolism_chart.png",
|
||||||
"cardiac_recovery_time": "(1 minute)",
|
# "cardiac_recovery_time": "(1 minute)",
|
||||||
"cardiac_recovery_percentage": "33%",
|
# "cardiac_recovery_percentage": "33%",
|
||||||
"metabolic_recovery_time": "(2 minute)",
|
# "metabolic_recovery_time": "(2 minute)",
|
||||||
"metabolic_recovery_percentage": "65%",
|
# "metabolic_recovery_percentage": "65%",
|
||||||
"breath_recovery_time": "(2.5 minute)",
|
# "breath_recovery_time": "(2.5 minute)",
|
||||||
"breath_recovery_percentage": "76%",
|
# "breath_recovery_percentage": "76%",
|
||||||
"recovery_chart": "../graphs/recovery_chart.png",
|
# "recovery_chart": "../graphs/recovery_chart.png",
|
||||||
"resting_heart_rate": "53bpm",
|
# "resting_heart_rate": "53bpm",
|
||||||
"hr_age_range": "26-35",
|
# "hr_age_range": "26-35",
|
||||||
"hr_poor": "82bpm +",
|
# "hr_poor": "82bpm +",
|
||||||
"hr_below_avg": "75-81bpm",
|
# "hr_below_avg": "75-81bpm",
|
||||||
"hr_average": "71-74bpm",
|
# "hr_average": "71-74bpm",
|
||||||
"hr_above_avg": "66-70bpm",
|
# "hr_above_avg": "66-70bpm",
|
||||||
"hr_good": "62-65bpm",
|
# "hr_good": "62-65bpm",
|
||||||
"hr_excellent": "55-61bpm",
|
# "hr_excellent": "55-61bpm",
|
||||||
"hr_athlete": "44-54bpm",
|
# "hr_athlete": "44-54bpm",
|
||||||
"contact_email": "info@ishplabs.com",
|
# "contact_email": "info@ishplabs.com",
|
||||||
"website": "www.ishplabs.com",
|
# "website": "www.ishplabs.com",
|
||||||
"social": "@ishplabs",
|
# "social": "@ishplabs",
|
||||||
"page_number": "10",
|
# "page_number": "10",
|
||||||
},
|
# },
|
||||||
),
|
# ),
|
||||||
(
|
# (
|
||||||
"page_13.html",
|
# "page_13.html",
|
||||||
{
|
# {
|
||||||
"patient_name": "Keirstyn Moran",
|
# "patient_name": "Keirstyn Moran",
|
||||||
"age": "34",
|
# "age": "34",
|
||||||
"height": "5'4\"",
|
# "height": "5'4\"",
|
||||||
"weight": "123lbs",
|
# "weight": "123lbs",
|
||||||
"focus": "Endurance",
|
# "focus": "Endurance",
|
||||||
"zone2_frequency": "3-4x/week",
|
# "zone2_frequency": "3-4x/week",
|
||||||
"zone2_duration": "40+ minutes",
|
# "zone2_duration": "40+ minutes",
|
||||||
"zone2_hr_range": "____",
|
# "zone2_hr_range": "____",
|
||||||
"zone2_speed": "____ mph",
|
# "zone2_speed": "____ mph",
|
||||||
"zone2_incline": "2% Incline",
|
# "zone2_incline": "2% Incline",
|
||||||
"zone3_frequency": "1-2x/week",
|
# "zone3_frequency": "1-2x/week",
|
||||||
"zone3_duration": "10-20 minutes",
|
# "zone3_duration": "10-20 minutes",
|
||||||
"zone3_hr_range": "____ bpm",
|
# "zone3_hr_range": "____ bpm",
|
||||||
"zone3_speed": "____mph",
|
# "zone3_speed": "____mph",
|
||||||
"zone3_incline": "2% Incline",
|
# "zone3_incline": "2% Incline",
|
||||||
"zone3_target_hr": "___ bpm",
|
# "zone3_target_hr": "___ bpm",
|
||||||
"zone3_recovery_speed": "____mph",
|
# "zone3_recovery_speed": "____mph",
|
||||||
"zone3_recovery_incline": "2% Incline",
|
# "zone3_recovery_incline": "2% Incline",
|
||||||
"zone1_hr_range": "____bpm",
|
# "zone1_hr_range": "____bpm",
|
||||||
"zone1_duration": "4-8 minutes",
|
# "zone1_duration": "4-8 minutes",
|
||||||
"zone3_repeats": "2-3 times",
|
# "zone3_repeats": "2-3 times",
|
||||||
"short_sets": "8-10",
|
# "short_sets": "8-10",
|
||||||
"short_duration": "10-30 seconds",
|
# "short_duration": "10-30 seconds",
|
||||||
"short_zone": "5",
|
# "short_zone": "5",
|
||||||
"short_rpe": "10",
|
# "short_rpe": "10",
|
||||||
"short_recovery": "20-60 seconds",
|
# "short_recovery": "20-60 seconds",
|
||||||
"medium_sets": "6-8",
|
# "medium_sets": "6-8",
|
||||||
"medium_duration": "30-90 seconds",
|
# "medium_duration": "30-90 seconds",
|
||||||
"medium_zone": "4",
|
# "medium_zone": "4",
|
||||||
"medium_rpe": "8-9",
|
# "medium_rpe": "8-9",
|
||||||
"medium_recovery": "30-90 seconds",
|
# "medium_recovery": "30-90 seconds",
|
||||||
"long_sets": "4-6",
|
# "long_sets": "4-6",
|
||||||
"long_duration": "5-10 minutes",
|
# "long_duration": "5-10 minutes",
|
||||||
"long_zone": "3/4",
|
# "long_zone": "3/4",
|
||||||
"long_rpe": "7-8",
|
# "long_rpe": "7-8",
|
||||||
"long_recovery": "2.5-5 minutes",
|
# "long_recovery": "2.5-5 minutes",
|
||||||
"tempo_sets": "2-3",
|
# "tempo_sets": "2-3",
|
||||||
"tempo_duration": "10-20 minutes",
|
# "tempo_duration": "10-20 minutes",
|
||||||
"tempo_zone": "3",
|
# "tempo_zone": "3",
|
||||||
"tempo_rpe": "6-7",
|
# "tempo_rpe": "6-7",
|
||||||
"tempo_recovery": "4-8 minutes",
|
# "tempo_recovery": "4-8 minutes",
|
||||||
"cardio_sets": "1",
|
# "cardio_sets": "1",
|
||||||
"cardio_duration": ">40 minutes",
|
# "cardio_duration": ">40 minutes",
|
||||||
"cardio_zone": "2",
|
# "cardio_zone": "2",
|
||||||
"cardio_rpe": "4-5",
|
# "cardio_rpe": "4-5",
|
||||||
"cardio_recovery": "N/A",
|
# "cardio_recovery": "N/A",
|
||||||
"week1_mon_zone": "Zone 2",
|
# "week1_mon_zone": "Zone 2",
|
||||||
"week1_mon_duration": "45 mins",
|
# "week1_mon_duration": "45 mins",
|
||||||
"week1_tue_zone": "Zone 2",
|
# "week1_tue_zone": "Zone 2",
|
||||||
"week1_tue_duration": "45 mins",
|
# "week1_tue_duration": "45 mins",
|
||||||
"week1_wed_zone": "Zone 3",
|
# "week1_wed_zone": "Zone 3",
|
||||||
"week1_wed_duration1": "10mins On",
|
# "week1_wed_duration1": "10mins On",
|
||||||
"week1_wed_duration2": "8mins Rest",
|
# "week1_wed_duration2": "8mins Rest",
|
||||||
"week1_wed_sets": "x2",
|
# "week1_wed_sets": "x2",
|
||||||
"week1_thu_content": "",
|
# "week1_thu_content": "",
|
||||||
"week1_fri_zone": "Zone 2",
|
# "week1_fri_zone": "Zone 2",
|
||||||
"week1_fri_duration": "45 mins",
|
# "week1_fri_duration": "45 mins",
|
||||||
"week1_sat_content": "",
|
# "week1_sat_content": "",
|
||||||
"week1_sun_content": "",
|
# "week1_sun_content": "",
|
||||||
"week2_mon_zone": "Zone 2",
|
# "week2_mon_zone": "Zone 2",
|
||||||
"week2_mon_duration": "50 mins",
|
# "week2_mon_duration": "50 mins",
|
||||||
"week2_tue_zone": "Zone 2",
|
# "week2_tue_zone": "Zone 2",
|
||||||
"week2_tue_duration": "50 mins",
|
# "week2_tue_duration": "50 mins",
|
||||||
"week2_wed_zone": "Zone 3",
|
# "week2_wed_zone": "Zone 3",
|
||||||
"week2_wed_duration1": "10mins On",
|
# "week2_wed_duration1": "10mins On",
|
||||||
"week2_wed_duration2": "6mins Rest",
|
# "week2_wed_duration2": "6mins Rest",
|
||||||
"week2_wed_sets": "x2",
|
# "week2_wed_sets": "x2",
|
||||||
"week2_thu_content": "",
|
# "week2_thu_content": "",
|
||||||
"week2_fri_zone": "Zone 2",
|
# "week2_fri_zone": "Zone 2",
|
||||||
"week2_fri_duration": "50 mins",
|
# "week2_fri_duration": "50 mins",
|
||||||
"week2_sat_content": "",
|
# "week2_sat_content": "",
|
||||||
"week2_sun_content": "",
|
# "week2_sun_content": "",
|
||||||
"contact_email": "info@ishplabs.com",
|
# "contact_email": "info@ishplabs.com",
|
||||||
"website": "www.ishplabs.com",
|
# "website": "www.ishplabs.com",
|
||||||
"social": "@ishplabs",
|
# "social": "@ishplabs",
|
||||||
"page_number": "12",
|
# "page_number": "12",
|
||||||
},
|
# },
|
||||||
),
|
# ),
|
||||||
("page_14.html", {}),
|
# ("page_14.html", {}),
|
||||||
("page_15.html", {}),
|
# ("page_15.html", {}),
|
||||||
("page_16.html", {}),
|
# ("page_16.html", {}),
|
||||||
("page_17.html", {}),
|
# ("page_17.html", {}),
|
||||||
("page_18.html", {}),
|
# ("page_18.html", {}),
|
||||||
("page_19.html", {}),
|
# ("page_19.html", {}),
|
||||||
]
|
# ]
|
||||||
|
|
||||||
|
pages = [
|
||||||
|
(f"page_{i}.html", {}) for i in range(1, 20)
|
||||||
|
]
|
||||||
# Render each template with its own context
|
# Render each template with its own context
|
||||||
html_pages = []
|
html_pages = []
|
||||||
for tpl, ctx in pages:
|
for tpl, ctx in pages:
|
||||||
@@ -367,9 +370,14 @@ html_doc = f"""
|
|||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
<link href="https://cdn.jsdelivr.net/npm/tailwindcss/dist/tailwind.min.css" rel="stylesheet">
|
<link href="https://cdn.jsdelivr.net/npm/tailwindcss/dist/tailwind.min.css" rel="stylesheet">
|
||||||
<style>
|
<style>
|
||||||
|
html, body {{
|
||||||
|
height: 100%;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
}}
|
||||||
.page-break {{ page-break-after: always; }}
|
.page-break {{ page-break-after: always; }}
|
||||||
.page {{
|
.page {{
|
||||||
height: 386mm;
|
height: 100%;
|
||||||
}}
|
}}
|
||||||
</style>
|
</style>
|
||||||
</head>
|
</head>
|
||||||
@@ -379,10 +387,11 @@ html_doc = f"""
|
|||||||
</html>
|
</html>
|
||||||
"""
|
"""
|
||||||
|
|
||||||
print(html_doc)
|
|
||||||
# Generate PDF
|
# Generate PDF
|
||||||
options = {
|
options = {
|
||||||
"page-size": "A4",
|
# "page-size": "A4",
|
||||||
|
'page-height': '297mm',
|
||||||
|
'page-width': '210mm',
|
||||||
"encoding": "UTF-8",
|
"encoding": "UTF-8",
|
||||||
"margin-top": "0mm",
|
"margin-top": "0mm",
|
||||||
"margin-bottom": "0mm",
|
"margin-bottom": "0mm",
|
||||||
@@ -390,6 +399,6 @@ options = {
|
|||||||
"margin-right": "0mm",
|
"margin-right": "0mm",
|
||||||
"no-outline": None,
|
"no-outline": None,
|
||||||
}
|
}
|
||||||
pdfkit.from_string(html_doc, "multi_page_report.pdf", options=options)
|
pdfkit.from_string(html_doc, "truth_report.pdf", options=options)
|
||||||
|
|
||||||
print("✅ PDF generated: multi_page_report.pdf")
|
print("✅ PDF generated: multi_page_report.pdf")
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
<div
|
<div
|
||||||
class="w-full page bg-black text-white relative overflow-hidden"
|
class="w-full page bg-black text-white relative overflow-hidden"
|
||||||
style="height: 297mm"
|
|
||||||
>
|
>
|
||||||
<!-- ISHP Logo/Text -->
|
<!-- ISHP Logo/Text -->
|
||||||
<div class="absolute top-8 left-8 z-20">
|
<div class="absolute top-8 left-8 z-20">
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
<div class="w-full page bg-white" style="height: 297mm;"></div>
|
<div class="w-full page bg-white">
|
||||||
<!-- Header Section -->
|
<!-- Header Section -->
|
||||||
<div class="bg-black text-white px-6 py-4 flex items-center justify-between">
|
<div class="bg-black text-white px-6 py-4 flex items-center justify-between">
|
||||||
<div class="flex items-center">
|
<div class="flex items-center">
|
||||||
@@ -26,7 +26,7 @@
|
|||||||
|
|
||||||
<!-- VO2 Pulse Graph -->
|
<!-- VO2 Pulse Graph -->
|
||||||
<div class="flex justify-center mb-6">
|
<div class="flex justify-center mb-6">
|
||||||
<img src="{{ vo2_pulse_chart | default('../graphs/vo2_pulse_chart.png') }}"
|
<img src="{{ vo2_pulse_chart }}"
|
||||||
alt="VO2 Pulse Chart"
|
alt="VO2 Pulse Chart"
|
||||||
class="w-full max-w-4xl h-auto object-contain">
|
class="w-full max-w-4xl h-auto object-contain">
|
||||||
</div>
|
</div>
|
||||||
@@ -42,7 +42,7 @@
|
|||||||
|
|
||||||
<!-- VO2 Breath Graph -->
|
<!-- VO2 Breath Graph -->
|
||||||
<div class="flex justify-center mb-6">
|
<div class="flex justify-center mb-6">
|
||||||
<img src="{{ vo2_breath_chart | default('../graphs/vo2_breath_chart.png') }}"
|
<img src="{{ vo2_breath_chart }}"
|
||||||
alt="VO2 Breath Chart"
|
alt="VO2 Breath Chart"
|
||||||
class="w-full max-w-4xl h-auto object-contain">
|
class="w-full max-w-4xl h-auto object-contain">
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
<div class="w-full page bg-white" style="height: 297mm">
|
<div class="w-full page bg-white">
|
||||||
<!-- Header Section -->
|
<!-- Header Section -->
|
||||||
<div
|
<div
|
||||||
class="bg-black text-white px-6 py-4 flex items-center justify-between"
|
class="bg-black text-white px-6 py-4 flex items-center justify-between"
|
||||||
@@ -71,7 +71,7 @@
|
|||||||
|
|
||||||
<div class="flex justify-center">
|
<div class="flex justify-center">
|
||||||
<img
|
<img
|
||||||
src="{{ fat_metabolism_chart | default('../graphs/fat_metabolism_chart.png') }}"
|
src="{{ fat_metabolism_chart }}"
|
||||||
alt="Fat Metabolism Chart"
|
alt="Fat Metabolism Chart"
|
||||||
class="w-full max-w-4xl h-auto object-contain"
|
class="w-full max-w-4xl h-auto object-contain"
|
||||||
/>
|
/>
|
||||||
@@ -130,7 +130,7 @@
|
|||||||
<!-- Recovery Graph -->
|
<!-- Recovery Graph -->
|
||||||
<div class="flex justify-center mb-6">
|
<div class="flex justify-center mb-6">
|
||||||
<img
|
<img
|
||||||
src="{{ recovery_chart | default('../graphs/recovery_chart.png') }}"
|
src="{{ recovery_chart }}"
|
||||||
alt="Recovery Chart"
|
alt="Recovery Chart"
|
||||||
class="w-full max-w-4xl h-auto object-contain"
|
class="w-full max-w-4xl h-auto object-contain"
|
||||||
/>
|
/>
|
||||||
|
|||||||
@@ -0,0 +1,3 @@
|
|||||||
|
<div class="page" id="page-12">
|
||||||
|
This is page 12
|
||||||
|
</div>
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
<div class="w-full page bg-white" style="height: 297mm;"></div>
|
<div class="w-full page bg-white">
|
||||||
<!-- Header Section -->
|
<!-- Header Section -->
|
||||||
<div class="bg-black text-white px-6 py-4 flex items-center justify-between">
|
<div class="bg-black text-white px-6 py-4 flex items-center justify-between">
|
||||||
<div class="flex items-center">
|
<div class="flex items-center">
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
<div class="w-full page bg-white" style="height: 297mm;"></div>
|
<div class="w-full page bg-white">
|
||||||
<!-- Header Section -->
|
<!-- Header Section -->
|
||||||
<div class="bg-black text-white px-6 py-4 flex items-center justify-between">
|
<div class="bg-black text-white px-6 py-4 flex items-center justify-between">
|
||||||
<div class="flex items-center">
|
<div class="flex items-center">
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
<div class="w-full page bg-white" style="height: 297mm;"></div>
|
<div class="w-full page bg-white">
|
||||||
<!-- Header Section -->
|
<!-- Header Section -->
|
||||||
<div class="bg-black text-white px-6 py-4 flex items-center justify-between">
|
<div class="bg-black text-white px-6 py-4 flex items-center justify-between">
|
||||||
<div class="flex items-center">
|
<div class="flex items-center">
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
<div class="w-full page bg-white" style="height: 297mm;"></div>
|
<div class="w-full page bg-white">
|
||||||
<!-- Header Section -->
|
<!-- Header Section -->
|
||||||
<div class="bg-black text-white px-6 py-4 flex items-center justify-between">
|
<div class="bg-black text-white px-6 py-4 flex items-center justify-between">
|
||||||
<div class="flex items-center">
|
<div class="flex items-center">
|
||||||
|
|||||||
+64
-72
@@ -1,5 +1,5 @@
|
|||||||
<body class="bg-white font-sans">
|
|
||||||
<!-- Header -->
|
<!-- Header -->
|
||||||
|
<div class="w-full page">
|
||||||
<div class="bg-black text-white p-4 flex items-center justify-between">
|
<div class="bg-black text-white p-4 flex items-center justify-between">
|
||||||
<div class="flex items-center space-x-4">
|
<div class="flex items-center space-x-4">
|
||||||
<div class="text-xl font-bold">ISHP</div>
|
<div class="text-xl font-bold">ISHP</div>
|
||||||
@@ -31,23 +31,21 @@
|
|||||||
</p>
|
</p>
|
||||||
<ul class="list-disc ml-6 space-y-1">
|
<ul class="list-disc ml-6 space-y-1">
|
||||||
<li>
|
<li>
|
||||||
<strong>Endurance:</strong> Normal capacity, but
|
<strong>Endurance:</strong> Normal capacity, but cannot
|
||||||
cannot maintain their VT over time.
|
maintain their VT over time.
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<strong>Strength/Power:</strong> Normal capacity,
|
<strong>Strength/Power:</strong> Normal capacity, but
|
||||||
but peak VT is not 75-85% of their FEV1 despite FEV1
|
peak VT is not 75-85% of their FEV1 despite FEV1 being
|
||||||
being normal
|
normal
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<strong
|
<strong>Coordination (Hyper/Hypo-Ventilation):</strong>
|
||||||
>Coordination (Hyper/Hypo-Ventilation):</strong
|
Normal capacity, but uses low volumes +/- high BFs at
|
||||||
>
|
lower intensities. A breathing coordination limitation
|
||||||
Normal capacity, but uses low volumes +/- high BFs
|
can also be identified by the loss of volume at higher
|
||||||
at lower intensities. A breathing coordination
|
intensities, which are then recovered upon recovery/stop
|
||||||
limitation can also be identified by the loss of
|
of activity.
|
||||||
volume at higher intensities, which are then
|
|
||||||
recovered upon recovery/stop of activity.
|
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
@@ -57,12 +55,11 @@
|
|||||||
<p class="font-semibold">VO2 Pulse:</p>
|
<p class="font-semibold">VO2 Pulse:</p>
|
||||||
<p>
|
<p>
|
||||||
VO2 Pulse refers to the relationship between oxygen
|
VO2 Pulse refers to the relationship between oxygen
|
||||||
consumption (VO2) and heart rate (HR) during exercise.
|
consumption (VO2) and heart rate (HR) during exercise. This
|
||||||
This measure gives insight into how efficiently the body
|
measure gives insight into how efficiently the body is using
|
||||||
is using oxygen in relation to the heart's output. A
|
oxygen in relation to the heart's output. A higher VO2 Pulse
|
||||||
higher VO2 Pulse suggests that an individual is able to
|
suggests that an individual is able to deliver oxygen more
|
||||||
deliver oxygen more efficiently to the muscles with each
|
efficiently to the muscles with each heartbeat.
|
||||||
heartbeat.
|
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -71,12 +68,12 @@
|
|||||||
<p class="font-semibold">VO2 Breath:</p>
|
<p class="font-semibold">VO2 Breath:</p>
|
||||||
<p>
|
<p>
|
||||||
VO2 Breath refers to the amount of oxygen consumed per
|
VO2 Breath refers to the amount of oxygen consumed per
|
||||||
breath during exercise, which indicates how effectively
|
breath during exercise, which indicates how effectively the
|
||||||
the body delivers oxygen to the bloodstream through the
|
body delivers oxygen to the bloodstream through the lungs
|
||||||
lungs with each breath. A more efficient VO2 Breath
|
with each breath. A more efficient VO2 Breath means the body
|
||||||
means the body requires less effort to obtain the same
|
requires less effort to obtain the same amount of oxygen,
|
||||||
amount of oxygen, indicating better respiratory
|
indicating better respiratory efficiency and oxygen
|
||||||
efficiency and oxygen utilization.
|
utilization.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -86,23 +83,21 @@
|
|||||||
<p class="mb-2">
|
<p class="mb-2">
|
||||||
The point during exercise at which the body shifts its
|
The point during exercise at which the body shifts its
|
||||||
predominant fuel source from fats to carbohydrates. This
|
predominant fuel source from fats to carbohydrates. This
|
||||||
transition typically occurs as exercise intensity
|
transition typically occurs as exercise intensity increases,
|
||||||
increases, and marks the transition from Zone 2 into
|
and marks the transition from Zone 2 into Zone 3. As
|
||||||
Zone 3. As exercise intensity increases, the body starts
|
exercise intensity increases, the body starts to rely more
|
||||||
to rely more on carbohydrates because they provide
|
on carbohydrates because they provide faster energy.
|
||||||
faster energy.
|
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
Endurance training (e.g., long, steady-state cardio
|
Endurance training (e.g., long, steady-state cardio within
|
||||||
within Zones 1 & 2) increases the body's ability to burn
|
Zones 1 & 2) increases the body's ability to burn fat
|
||||||
fat efficiently at higher intensities, shifting the
|
efficiently at higher intensities, shifting the crossover
|
||||||
crossover point to a faster speed, or higher heart
|
point to a faster speed, or higher heart rate/intensity.
|
||||||
rate/intensity. Because fat stores are much larger and
|
Because fat stores are much larger and can provide a steady
|
||||||
can provide a steady stream of energy for prolonged
|
stream of energy for prolonged periods, a higher CHO/FAT
|
||||||
periods, a higher CHO/FAT crossover can help delay
|
crossover can help delay fatigue, which is especially
|
||||||
fatigue, which is especially beneficial in
|
beneficial in longer-duration events, where carbohydrate
|
||||||
longer-duration events, where carbohydrate depletion can
|
depletion can lead to a significant drop in performance.
|
||||||
lead to a significant drop in performance.
|
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -110,10 +105,9 @@
|
|||||||
<div>
|
<div>
|
||||||
<p class="font-semibold">Cardiovascular Recovery:</p>
|
<p class="font-semibold">Cardiovascular Recovery:</p>
|
||||||
<p>
|
<p>
|
||||||
The percentage your heart rate drops within the first
|
The percentage your heart rate drops within the first minute
|
||||||
minute of the inactive recovery phase in relation to the
|
of the inactive recovery phase in relation to the lowest
|
||||||
lowest heart rate recorded prior to the start of the
|
heart rate recorded prior to the start of the test.
|
||||||
test.
|
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -121,19 +115,19 @@
|
|||||||
<div>
|
<div>
|
||||||
<p class="font-semibold">Metabolic (CO2) Recovery:</p>
|
<p class="font-semibold">Metabolic (CO2) Recovery:</p>
|
||||||
<p class="mb-2">
|
<p class="mb-2">
|
||||||
The percentage that your VCO2 levels (amount of CO2 you
|
The percentage that your VCO2 levels (amount of CO2 you are
|
||||||
are exhaling) drop within the first 1.5 minutes of the
|
exhaling) drop within the first 1.5 minutes of the inactive
|
||||||
inactive recovery phase in relation to the lowest VCO2
|
recovery phase in relation to the lowest VCO2 recorded prior
|
||||||
recorded prior to the start of the test.
|
to the start of the test.
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
refers to the rate at which the body clears carbon
|
refers to the rate at which the body clears carbon dioxide
|
||||||
dioxide (CO2) after exercise, reflecting the efficiency
|
(CO2) after exercise, reflecting the efficiency of the
|
||||||
of the cardiovascular and respiratory systems in
|
cardiovascular and respiratory systems in returning CO2
|
||||||
returning CO2 levels to baseline. A faster VCO2 recovery
|
levels to baseline. A faster VCO2 recovery indicates
|
||||||
indicates effective management of metabolic byproducts,
|
effective management of metabolic byproducts, signaling a
|
||||||
signaling a healthier metabolic system and lower risk of
|
healthier metabolic system and lower risk of metabolic
|
||||||
metabolic disorders.
|
disorders.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -141,20 +135,19 @@
|
|||||||
<div>
|
<div>
|
||||||
<p class="font-semibold">Breath Frequency Recovery:</p>
|
<p class="font-semibold">Breath Frequency Recovery:</p>
|
||||||
<p>
|
<p>
|
||||||
Refers to the speed at which the body returns to a
|
Refers to the speed at which the body returns to a normal
|
||||||
normal breathing rate after physical exertion. Faster
|
breathing rate after physical exertion. Faster breath
|
||||||
breath frequency recovery indicates a well-conditioned
|
frequency recovery indicates a well-conditioned
|
||||||
cardiovascular and respiratory system, allowing the body
|
cardiovascular and respiratory system, allowing the body to
|
||||||
to efficiently regulate oxygen and CO2 levels. It
|
efficiently regulate oxygen and CO2 levels. It supports
|
||||||
supports better endurance, faster recovery between
|
better endurance, faster recovery between intervals, and the
|
||||||
intervals, and the ability to sustain higher performance
|
ability to sustain higher performance during repeated
|
||||||
during repeated efforts or prolonged activity.
|
efforts or prolonged activity. Additionally, a quick return
|
||||||
Additionally, a quick return to baseline signals that
|
to baseline signals that the autonomic nervous system is
|
||||||
the autonomic nervous system is functioning well,
|
functioning well, reducing stress on the body and promoting
|
||||||
reducing stress on the body and promoting more efficient
|
more efficient recovery. This also reflects a healthier
|
||||||
recovery. This also reflects a healthier metabolic
|
metabolic system, better management of metabolic byproducts
|
||||||
system, better management of metabolic byproducts like
|
like CO2, and a lower risk of chronic conditions.
|
||||||
CO2, and a lower risk of chronic conditions.
|
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -169,5 +162,4 @@
|
|||||||
<div>SOCIAL: @ishplabs</div>
|
<div>SOCIAL: @ishplabs</div>
|
||||||
<div class="bg-white text-black px-3 py-1 font-bold">17</div>
|
<div class="bg-white text-black px-3 py-1 font-bold">17</div>
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</div>
|
||||||
</html>
|
|
||||||
|
|||||||
+74
-209
@@ -1,13 +1,4 @@
|
|||||||
<!DOCTYPE html>
|
<div class="w-full page">
|
||||||
<html lang="en">
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8" />
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
||||||
<title>Glossary - Page 18</title>
|
|
||||||
<script src="https://cdn.tailwindcss.com"></script>
|
|
||||||
</head>
|
|
||||||
<body class="bg-white font-sans">
|
|
||||||
<!-- Header -->
|
|
||||||
<div class="bg-black text-white p-4 flex items-center justify-between">
|
<div class="bg-black text-white p-4 flex items-center justify-between">
|
||||||
<div class="flex items-center space-x-4">
|
<div class="flex items-center space-x-4">
|
||||||
<div class="text-xl font-bold">ISHP</div>
|
<div class="text-xl font-bold">ISHP</div>
|
||||||
@@ -30,21 +21,20 @@
|
|||||||
<div class="mb-12 text-sm leading-relaxed">
|
<div class="mb-12 text-sm leading-relaxed">
|
||||||
<p class="font-semibold mb-2">Local Muscle Activity/SMO2:</p>
|
<p class="font-semibold mb-2">Local Muscle Activity/SMO2:</p>
|
||||||
<p>
|
<p>
|
||||||
SmO2 testing is a valuable tool for understanding how
|
SmO2 testing is a valuable tool for understanding how muscles
|
||||||
muscles respond to various physiological stressors and how
|
respond to various physiological stressors and how to fine-tune
|
||||||
to fine-tune training, nutrition and hydration accordingly.
|
training, nutrition and hydration accordingly. Monitoring
|
||||||
Monitoring changes in tissue oxygen saturation and
|
changes in tissue oxygen saturation and utilization helps
|
||||||
utilization helps identify an individual's optimal intensity
|
identify an individual's optimal intensity to work at, as well
|
||||||
to work at, as well as how well they recover between bouts
|
as how well they recover between bouts of intensity. This can
|
||||||
of intensity. This can help optimize training to improve
|
help optimize training to improve performance, prevent
|
||||||
performance, prevent overtraining, and tailor strategies for
|
overtraining, and tailor strategies for better results.
|
||||||
better results.
|
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
During competitions, athletes can also use SmO2 data to pace
|
During competitions, athletes can also use SmO2 data to pace
|
||||||
themselves effectively. Adjusting intensity based on muscle
|
themselves effectively. Adjusting intensity based on muscle
|
||||||
oxygenation can help prevent premature fatigue and optimize
|
oxygenation can help prevent premature fatigue and optimize race
|
||||||
race outcomes
|
outcomes
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -57,9 +47,7 @@
|
|||||||
<!-- Male Chart -->
|
<!-- Male Chart -->
|
||||||
<div class="mb-8">
|
<div class="mb-8">
|
||||||
<div class="flex items-center mb-4">
|
<div class="flex items-center mb-4">
|
||||||
<div class="w-20 text-right mr-4 font-medium">
|
<div class="w-20 text-right mr-4 font-medium">Age (M)</div>
|
||||||
Age (M)
|
|
||||||
</div>
|
|
||||||
<div class="flex-1 grid grid-cols-11 gap-0 h-20">
|
<div class="flex-1 grid grid-cols-11 gap-0 h-20">
|
||||||
<!-- Age 20-39 row -->
|
<!-- Age 20-39 row -->
|
||||||
<div
|
<div
|
||||||
@@ -67,36 +55,16 @@
|
|||||||
>
|
>
|
||||||
20-39
|
20-39
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div class="bg-yellow-300 border border-gray-300"></div>
|
||||||
class="bg-yellow-300 border border-gray-300"
|
<div class="bg-green-300 border border-gray-300"></div>
|
||||||
></div>
|
<div class="bg-green-400 border border-gray-300"></div>
|
||||||
<div
|
<div class="bg-yellow-300 border border-gray-300"></div>
|
||||||
class="bg-green-300 border border-gray-300"
|
<div class="bg-red-300 border border-gray-300"></div>
|
||||||
></div>
|
<div class="bg-red-400 border border-gray-300"></div>
|
||||||
<div
|
<div class="bg-red-400 border border-gray-300"></div>
|
||||||
class="bg-green-400 border border-gray-300"
|
<div class="bg-red-400 border border-gray-300"></div>
|
||||||
></div>
|
<div class="bg-red-400 border border-gray-300"></div>
|
||||||
<div
|
<div class="bg-red-400 border border-gray-300"></div>
|
||||||
class="bg-yellow-300 border border-gray-300"
|
|
||||||
></div>
|
|
||||||
<div
|
|
||||||
class="bg-red-300 border border-gray-300"
|
|
||||||
></div>
|
|
||||||
<div
|
|
||||||
class="bg-red-400 border border-gray-300"
|
|
||||||
></div>
|
|
||||||
<div
|
|
||||||
class="bg-red-400 border border-gray-300"
|
|
||||||
></div>
|
|
||||||
<div
|
|
||||||
class="bg-red-400 border border-gray-300"
|
|
||||||
></div>
|
|
||||||
<div
|
|
||||||
class="bg-red-400 border border-gray-300"
|
|
||||||
></div>
|
|
||||||
<div
|
|
||||||
class="bg-red-400 border border-gray-300"
|
|
||||||
></div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -109,36 +77,16 @@
|
|||||||
>
|
>
|
||||||
40-59
|
40-59
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div class="bg-green-300 border border-gray-300"></div>
|
||||||
class="bg-green-300 border border-gray-300"
|
<div class="bg-green-400 border border-gray-300"></div>
|
||||||
></div>
|
<div class="bg-yellow-300 border border-gray-300"></div>
|
||||||
<div
|
<div class="bg-yellow-300 border border-gray-300"></div>
|
||||||
class="bg-green-400 border border-gray-300"
|
<div class="bg-red-300 border border-gray-300"></div>
|
||||||
></div>
|
<div class="bg-red-400 border border-gray-300"></div>
|
||||||
<div
|
<div class="bg-red-400 border border-gray-300"></div>
|
||||||
class="bg-yellow-300 border border-gray-300"
|
<div class="bg-red-400 border border-gray-300"></div>
|
||||||
></div>
|
<div class="bg-red-400 border border-gray-300"></div>
|
||||||
<div
|
<div class="bg-red-400 border border-gray-300"></div>
|
||||||
class="bg-yellow-300 border border-gray-300"
|
|
||||||
></div>
|
|
||||||
<div
|
|
||||||
class="bg-red-300 border border-gray-300"
|
|
||||||
></div>
|
|
||||||
<div
|
|
||||||
class="bg-red-400 border border-gray-300"
|
|
||||||
></div>
|
|
||||||
<div
|
|
||||||
class="bg-red-400 border border-gray-300"
|
|
||||||
></div>
|
|
||||||
<div
|
|
||||||
class="bg-red-400 border border-gray-300"
|
|
||||||
></div>
|
|
||||||
<div
|
|
||||||
class="bg-red-400 border border-gray-300"
|
|
||||||
></div>
|
|
||||||
<div
|
|
||||||
class="bg-red-400 border border-gray-300"
|
|
||||||
></div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -151,36 +99,16 @@
|
|||||||
>
|
>
|
||||||
60-79
|
60-79
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div class="bg-green-300 border border-gray-300"></div>
|
||||||
class="bg-green-300 border border-gray-300"
|
<div class="bg-green-400 border border-gray-300"></div>
|
||||||
></div>
|
<div class="bg-green-400 border border-gray-300"></div>
|
||||||
<div
|
<div class="bg-yellow-300 border border-gray-300"></div>
|
||||||
class="bg-green-400 border border-gray-300"
|
<div class="bg-red-300 border border-gray-300"></div>
|
||||||
></div>
|
<div class="bg-red-400 border border-gray-300"></div>
|
||||||
<div
|
<div class="bg-red-400 border border-gray-300"></div>
|
||||||
class="bg-green-400 border border-gray-300"
|
<div class="bg-red-400 border border-gray-300"></div>
|
||||||
></div>
|
<div class="bg-red-400 border border-gray-300"></div>
|
||||||
<div
|
<div class="bg-red-400 border border-gray-300"></div>
|
||||||
class="bg-yellow-300 border border-gray-300"
|
|
||||||
></div>
|
|
||||||
<div
|
|
||||||
class="bg-red-300 border border-gray-300"
|
|
||||||
></div>
|
|
||||||
<div
|
|
||||||
class="bg-red-400 border border-gray-300"
|
|
||||||
></div>
|
|
||||||
<div
|
|
||||||
class="bg-red-400 border border-gray-300"
|
|
||||||
></div>
|
|
||||||
<div
|
|
||||||
class="bg-red-400 border border-gray-300"
|
|
||||||
></div>
|
|
||||||
<div
|
|
||||||
class="bg-red-400 border border-gray-300"
|
|
||||||
></div>
|
|
||||||
<div
|
|
||||||
class="bg-red-400 border border-gray-300"
|
|
||||||
></div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -208,9 +136,7 @@
|
|||||||
<!-- Female Chart -->
|
<!-- Female Chart -->
|
||||||
<div class="mb-8">
|
<div class="mb-8">
|
||||||
<div class="flex items-center mb-4">
|
<div class="flex items-center mb-4">
|
||||||
<div class="w-20 text-right mr-4 font-medium">
|
<div class="w-20 text-right mr-4 font-medium">Age (F)</div>
|
||||||
Age (F)
|
|
||||||
</div>
|
|
||||||
<div class="flex-1 grid grid-cols-11 gap-0 h-20">
|
<div class="flex-1 grid grid-cols-11 gap-0 h-20">
|
||||||
<!-- Age 20-39 row -->
|
<!-- Age 20-39 row -->
|
||||||
<div
|
<div
|
||||||
@@ -218,36 +144,16 @@
|
|||||||
>
|
>
|
||||||
20-39
|
20-39
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div class="bg-red-300 border border-gray-300"></div>
|
||||||
class="bg-red-300 border border-gray-300"
|
<div class="bg-red-300 border border-gray-300"></div>
|
||||||
></div>
|
<div class="bg-yellow-300 border border-gray-300"></div>
|
||||||
<div
|
<div class="bg-green-300 border border-gray-300"></div>
|
||||||
class="bg-red-300 border border-gray-300"
|
<div class="bg-green-400 border border-gray-300"></div>
|
||||||
></div>
|
<div class="bg-green-300 border border-gray-300"></div>
|
||||||
<div
|
<div class="bg-yellow-300 border border-gray-300"></div>
|
||||||
class="bg-yellow-300 border border-gray-300"
|
<div class="bg-red-300 border border-gray-300"></div>
|
||||||
></div>
|
<div class="bg-red-400 border border-gray-300"></div>
|
||||||
<div
|
<div class="bg-red-400 border border-gray-300"></div>
|
||||||
class="bg-green-300 border border-gray-300"
|
|
||||||
></div>
|
|
||||||
<div
|
|
||||||
class="bg-green-400 border border-gray-300"
|
|
||||||
></div>
|
|
||||||
<div
|
|
||||||
class="bg-green-300 border border-gray-300"
|
|
||||||
></div>
|
|
||||||
<div
|
|
||||||
class="bg-yellow-300 border border-gray-300"
|
|
||||||
></div>
|
|
||||||
<div
|
|
||||||
class="bg-red-300 border border-gray-300"
|
|
||||||
></div>
|
|
||||||
<div
|
|
||||||
class="bg-red-400 border border-gray-300"
|
|
||||||
></div>
|
|
||||||
<div
|
|
||||||
class="bg-red-400 border border-gray-300"
|
|
||||||
></div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -260,36 +166,16 @@
|
|||||||
>
|
>
|
||||||
40-59
|
40-59
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div class="bg-red-400 border border-gray-300"></div>
|
||||||
class="bg-red-400 border border-gray-300"
|
<div class="bg-red-300 border border-gray-300"></div>
|
||||||
></div>
|
<div class="bg-yellow-300 border border-gray-300"></div>
|
||||||
<div
|
<div class="bg-green-300 border border-gray-300"></div>
|
||||||
class="bg-red-300 border border-gray-300"
|
<div class="bg-green-400 border border-gray-300"></div>
|
||||||
></div>
|
<div class="bg-yellow-300 border border-gray-300"></div>
|
||||||
<div
|
<div class="bg-red-300 border border-gray-300"></div>
|
||||||
class="bg-yellow-300 border border-gray-300"
|
<div class="bg-red-400 border border-gray-300"></div>
|
||||||
></div>
|
<div class="bg-red-400 border border-gray-300"></div>
|
||||||
<div
|
<div class="bg-red-400 border border-gray-300"></div>
|
||||||
class="bg-green-300 border border-gray-300"
|
|
||||||
></div>
|
|
||||||
<div
|
|
||||||
class="bg-green-400 border border-gray-300"
|
|
||||||
></div>
|
|
||||||
<div
|
|
||||||
class="bg-yellow-300 border border-gray-300"
|
|
||||||
></div>
|
|
||||||
<div
|
|
||||||
class="bg-red-300 border border-gray-300"
|
|
||||||
></div>
|
|
||||||
<div
|
|
||||||
class="bg-red-400 border border-gray-300"
|
|
||||||
></div>
|
|
||||||
<div
|
|
||||||
class="bg-red-400 border border-gray-300"
|
|
||||||
></div>
|
|
||||||
<div
|
|
||||||
class="bg-red-400 border border-gray-300"
|
|
||||||
></div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -302,36 +188,16 @@
|
|||||||
>
|
>
|
||||||
60-79
|
60-79
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div class="bg-red-400 border border-gray-300"></div>
|
||||||
class="bg-red-400 border border-gray-300"
|
<div class="bg-red-300 border border-gray-300"></div>
|
||||||
></div>
|
<div class="bg-yellow-300 border border-gray-300"></div>
|
||||||
<div
|
<div class="bg-green-300 border border-gray-300"></div>
|
||||||
class="bg-red-300 border border-gray-300"
|
<div class="bg-green-400 border border-gray-300"></div>
|
||||||
></div>
|
<div class="bg-yellow-300 border border-gray-300"></div>
|
||||||
<div
|
<div class="bg-red-300 border border-gray-300"></div>
|
||||||
class="bg-yellow-300 border border-gray-300"
|
<div class="bg-red-400 border border-gray-300"></div>
|
||||||
></div>
|
<div class="bg-red-400 border border-gray-300"></div>
|
||||||
<div
|
<div class="bg-red-400 border border-gray-300"></div>
|
||||||
class="bg-green-300 border border-gray-300"
|
|
||||||
></div>
|
|
||||||
<div
|
|
||||||
class="bg-green-400 border border-gray-300"
|
|
||||||
></div>
|
|
||||||
<div
|
|
||||||
class="bg-yellow-300 border border-gray-300"
|
|
||||||
></div>
|
|
||||||
<div
|
|
||||||
class="bg-red-300 border border-gray-300"
|
|
||||||
></div>
|
|
||||||
<div
|
|
||||||
class="bg-red-400 border border-gray-300"
|
|
||||||
></div>
|
|
||||||
<div
|
|
||||||
class="bg-red-400 border border-gray-300"
|
|
||||||
></div>
|
|
||||||
<div
|
|
||||||
class="bg-red-400 border border-gray-300"
|
|
||||||
></div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -367,5 +233,4 @@
|
|||||||
<div>SOCIAL: @ishplabs</div>
|
<div>SOCIAL: @ishplabs</div>
|
||||||
<div class="bg-white text-black px-3 py-1 font-bold">18</div>
|
<div class="bg-white text-black px-3 py-1 font-bold">18</div>
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</div>
|
||||||
</html>
|
|
||||||
|
|||||||
+1
-12
@@ -1,13 +1,4 @@
|
|||||||
<!DOCTYPE html>
|
<div class="w-full page bg-white">
|
||||||
<html lang="en">
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8" />
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
||||||
<title>Glossary - Page 19</title>
|
|
||||||
<script src="https://cdn.tailwindcss.com"></script>
|
|
||||||
</head>
|
|
||||||
<body class="bg-white font-sans">
|
|
||||||
<div>
|
|
||||||
<!-- Header -->
|
<!-- Header -->
|
||||||
<div
|
<div
|
||||||
class="bg-black text-white p-4 flex items-center justify-between"
|
class="bg-black text-white p-4 flex items-center justify-between"
|
||||||
@@ -846,5 +837,3 @@
|
|||||||
<div class="bg-white text-black px-3 py-1 font-bold">19</div>
|
<div class="bg-white text-black px-3 py-1 font-bold">19</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
<div class="bg-white w-full page m-0 p-0" style="height: 297mm">
|
<div class="bg-white w-full page m-0 p-0">
|
||||||
<div class="px-16 py-20">
|
<div class="px-16 py-20">
|
||||||
<!-- Table of Contents Header -->
|
<!-- Table of Contents Header -->
|
||||||
<div class="mb-12">
|
<div class="mb-12">
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
<div class="w-full page bg-white" style="height: 297mm;"></div>
|
<div class="w-full page bg-white">
|
||||||
<!-- Header Section -->
|
<!-- Header Section -->
|
||||||
<div class="bg-black text-white px-6 py-4 flex items-center justify-between">
|
<div class="bg-black text-white px-6 py-4 flex items-center justify-between">
|
||||||
<div class="flex items-center">
|
<div class="flex items-center">
|
||||||
@@ -30,7 +30,7 @@
|
|||||||
<!-- Body Composition Chart -->
|
<!-- Body Composition Chart -->
|
||||||
<div class="flex justify-center mb-8">
|
<div class="flex justify-center mb-8">
|
||||||
<div class="relative">
|
<div class="relative">
|
||||||
<img src="{{ body_composition_chart | default('../graphs/page_1_body_composition.png') }}"
|
<img src="{{ body_composition_chart}}"
|
||||||
alt="Body Composition Chart"
|
alt="Body Composition Chart"
|
||||||
class="w-80 h-80 object-contain">
|
class="w-80 h-80 object-contain">
|
||||||
|
|
||||||
@@ -53,7 +53,7 @@
|
|||||||
|
|
||||||
<!-- Body Fat Chart -->
|
<!-- Body Fat Chart -->
|
||||||
<div class="flex justify-center">
|
<div class="flex justify-center">
|
||||||
<img src="{{ body_fat_chart | default('../graphs/page_1_body_fat.png') }}"
|
<img src="{{ body_fat_chart}}"
|
||||||
alt="Body Fat Percentage Chart"
|
alt="Body Fat Percentage Chart"
|
||||||
class="w-full max-w-2xl h-32 object-contain">
|
class="w-full max-w-2xl h-32 object-contain">
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
<div class="w-full page bg-white" style="height: 297mm;"></div>
|
<div class="w-full page bg-white">
|
||||||
<!-- Header Section -->
|
<!-- Header Section -->
|
||||||
<div class="bg-black text-white px-6 py-4 flex items-center justify-between">
|
<div class="bg-black text-white px-6 py-4 flex items-center justify-between">
|
||||||
<div class="flex items-center">
|
<div class="flex items-center">
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
<div class="w-full page bg-white" style="height: 297mm;"></div>
|
<div class="w-full page bg-white">
|
||||||
<!-- Header Section -->
|
<!-- Header Section -->
|
||||||
<div class="bg-black text-white px-6 py-4 flex items-center justify-between">
|
<div class="bg-black text-white px-6 py-4 flex items-center justify-between">
|
||||||
<div class="flex items-center">
|
<div class="flex items-center">
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
<div class="w-full page bg-white" style="height: 297mm;"></div>
|
<div class="w-full page bg-white">
|
||||||
<!-- Header Section -->
|
<!-- Header Section -->
|
||||||
<div class="bg-black text-white px-6 py-4 flex items-center justify-between">
|
<div class="bg-black text-white px-6 py-4 flex items-center justify-between">
|
||||||
<div class="flex items-center">
|
<div class="flex items-center">
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
<div class="w-full page bg-white" style="height: 297mm;"></div>
|
<div class="w-full page bg-white">
|
||||||
<!-- Header Section -->
|
<!-- Header Section -->
|
||||||
<div class="bg-black text-white px-6 py-4 flex items-center justify-between">
|
<div class="bg-black text-white px-6 py-4 flex items-center justify-between">
|
||||||
<div class="flex items-center">
|
<div class="flex items-center">
|
||||||
@@ -150,7 +150,7 @@
|
|||||||
|
|
||||||
<!-- Respiratory Graph -->
|
<!-- Respiratory Graph -->
|
||||||
<div class="flex justify-center mb-4">
|
<div class="flex justify-center mb-4">
|
||||||
<img src="{{ respiratory_graph | default('../graphs/respiratory_chart.png') }}"
|
<img src="{{ respiratory_graph }}"
|
||||||
alt="Respiratory Analysis Chart"
|
alt="Respiratory Analysis Chart"
|
||||||
class="w-full max-w-4xl h-64 object-contain">
|
class="w-full max-w-4xl h-64 object-contain">
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
<div class="w-full page bg-white" style="height: 297mm;"></div>
|
<div class="w-full page bg-white">
|
||||||
<!-- Header Section -->
|
<!-- Header Section -->
|
||||||
<div class="bg-black text-white px-6 py-4 flex items-center justify-between">
|
<div class="bg-black text-white px-6 py-4 flex items-center justify-between">
|
||||||
<div class="flex items-center">
|
<div class="flex items-center">
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
<div class="w-full page bg-white" style="height: 297mm;"></div>
|
<div class="w-full page bg-white">
|
||||||
<!-- Header Section -->
|
<!-- Header Section -->
|
||||||
<div class="bg-black text-white px-6 py-4 flex items-center justify-between">
|
<div class="bg-black text-white px-6 py-4 flex items-center justify-between">
|
||||||
<div class="flex items-center">
|
<div class="flex items-center">
|
||||||
@@ -18,7 +18,7 @@
|
|||||||
<div class="px-8 py-12 flex flex-col items-center justify-center h-full">
|
<div class="px-8 py-12 flex flex-col items-center justify-center h-full">
|
||||||
<!-- Fuel Utilization Chart -->
|
<!-- Fuel Utilization Chart -->
|
||||||
<div class="w-full max-w-5xl">
|
<div class="w-full max-w-5xl">
|
||||||
<img src="{{ fuel_utilization_chart | default('../graphs/fuel_utilization_chart.png') }}"
|
<img src="{{ fuel_utilization_chart }}"
|
||||||
alt="Fuel Utilization Report - Institute of Science, Health and Performance"
|
alt="Fuel Utilization Report - Institute of Science, Health and Performance"
|
||||||
class="w-full h-auto object-contain">
|
class="w-full h-auto object-contain">
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Binary file not shown.
Reference in New Issue
Block a user