Replace broken bmi calculator

This commit is contained in:
Roland Geider
2024-11-14 19:19:52 +01:00
parent 20a56f2f86
commit 9b4818cfbd
10 changed files with 384 additions and 1090 deletions

View File

@@ -12,7 +12,6 @@
"dependencies": {
"bootstrap": "5.3.3",
"components-font-awesome": "5.9.0",
"d3": "^7.9.0",
"datatables.net-bs5": "^2.1.8",
"devbridge-autocomplete": "^1.4.11",
"jquery": "^3.7.1",

View File

@@ -137,6 +137,7 @@ class UserPreferencesForm(forms.ModelForm):
'ro_access',
'num_days_weight_reminder',
'birthdate',
'height',
)
def __init__(self, *args, **kwargs):
@@ -153,6 +154,7 @@ class UserPreferencesForm(forms.ModelForm):
css_class='form-row',
),
'birthdate',
'height',
HTML('<hr>'),
),
Fieldset(

View File

@@ -1,5 +1,7 @@
{
"weight": "Weight",
"height": "Height",
"cm": "cm",
"date": "Date",
"timeOfDay": "Time of day",
"submit": "Submit",
@@ -140,6 +142,14 @@
"valueRemaining": "remaining",
"valueTooMany": "too many"
},
"bmi": {
"calculator": "BMI calculator",
"overweight": "Overweight",
"obese": "Obese",
"normal": "Normal weight",
"underweight": "Underweight",
"result": "Your BMI is {{value}}"
},
"downloadAsPdf": "Download as PDF",
"total": "Total",
"description": "Description",

View File

@@ -1,222 +1,222 @@
{
"weight": "எடை",
"date": "திகதி",
"add": "சேர்",
"days": "நாட்கள்",
"currentWeight": "தற்போதைய எடை",
"workout": "பயிற்சி",
"submit": "சமர்ப்பி",
"delete": "அழி",
"deleteConfirmation": "\"{{name}}\" ஐ நிச்சயமாக நீக்க விரும்புகிறீர்களா?",
"nutritionalPlan": "ஊட்டச்சத்து திட்டம்",
"edit": "தொகு",
"exercises": {
"replacementsInfoText": "விருப்பமாக, இதை மாற்ற வேண்டிய ஒரு பயிற்சியையும் நீங்கள் தேர்ந்தெடுக்கலாம் (எ.கா. இது இரண்டு முறை சமர்ப்பிக்கப்பட்டது அல்லது அதற்கு ஒத்ததாக இருந்தது). இது நடைமுறைகள் மற்றும் பயிற்சி பதிவுகளை நீக்குவதற்கு பதிலாக, நடைமுறைகள் மற்றும் பயிற்சி பதிவுகளை மாற்றும். இந்த மாற்றங்கள் இதிலிருந்து பயிற்சிகளை ஒத்திசைக்கும் எந்த நிகழ்விற்கும் பிரச்சாரம் செய்யும்.",
"replacementsSearch": "ஒரு உடற்பயிற்சியைத் தேடுங்கள் அல்லது அறியப்பட்ட ஐடியை புலத்தில் நகலெடுத்து ஒட்டவும், \"சுமை\" பொத்தானைக் சொடுக்கு செய்யவும்.",
"noReplacementSelected": " மாற்றுவதற்கு எந்த உடற்பயிற்சியும் தேர்ந்தெடுக்கப்படவில்லை",
"notEnoughRightsHeader": "நீங்கள் பயிற்சிகளை பங்களிக்க முடியாது",
"notEnoughRights": "உங்கள் கணக்கு {{நாட்கள்}} நாட்களை விட பழையதாக இருந்தால் மட்டுமே நீங்கள் பயிற்சிகளை பங்களிக்க முடியும், மேலும் உங்கள் மின்னஞ்சலை சரிபார்த்துள்ளீர்கள்",
"muscles": "தசைகள்",
"secondaryMuscles": "இரண்டாம் நிலை தசைகள்",
"whatVariationsExist": "இந்த பயிற்சியின் எந்த மாறுபாடுகள் உள்ளன, ஏதேனும் இருந்தால்?",
"identicalExercise": "நகல் பயிற்சிகளைத் தவிர்க்கவும்",
"identicalExercisePleaseDiscard": "நீங்கள் சேர்ப்பதற்கு ஒத்த ஒரு பயிற்சியை நீங்கள் கவனித்தால், தயவுசெய்து உங்கள் வரைவை நிராகரித்து, அதற்கு பதிலாக அந்த பயிற்சியைத் திருத்தவும்.",
"equipment": "உபகரணங்கள்",
"cacheWarning": "கேச்சிங் காரணமாக விண்ணப்பம் முழுவதும் மாற்றங்கள் தெரியும் வரை சிறிது நேரம் ஆகலாம்.",
"successfullyUpdated": "உடற்பயிற்சி வெற்றிகரமாக புதுப்பிக்கப்பட்டது. கேச்சிங் காரணமாக விண்ணப்பம் முழுவதும் மாற்றங்கள் தெரியும் வரை சிறிது நேரம் ஆகலாம்.",
"deleteTranslation": "மொழிபெயர்ப்பை நீக்கு",
"deleteExerciseFull": "முழு உடற்பயிற்சியை நீக்கு",
"missingExerciseDescription": "சமூகத்தை பங்களிப்பதன் மூலம் உதவுங்கள்!",
"searchExerciseName": "உடற்பயிற்சி பெயரால் தேடுங்கள்",
"imageStylePhoto": "புகைப்படம்",
"imageStyle3D": "ZD",
"imageStyleLine": "வரி",
"imageStyleLowPoly": "குறைந்த பாலி",
"imageStyleOther": "மற்றொன்று",
"imageDetails": "பட விவரங்கள்",
"replacements": "மாற்றீடுகள்",
"description": "விவரம்",
"primaryMuscles": "முதன்மை தசைகள்",
"deleteExerciseReplace": "நீக்கவும் மாற்றவும்",
"alternativeNames": "மாற்று பெயர்கள்",
"exercises": "பயிற்சிகள்",
"changeExerciseLanguage": "இந்த உடற்பயிற்சியின் மொழியை மாற்றவும்",
"noEquipment": "உபகரணங்கள் இல்லை",
"missingExercise": "ஒரு குறிப்பிட்ட உடற்பயிற்சியைக் காணவில்லையா?",
"notesHelpText": "குறிப்புகள் \"உங்கள் உடலை நேராக வைத்திருங்கள்\" போன்ற பயிற்சியை எவ்வாறு செய்வது என்பது குறித்த குறுகிய கருத்துகள்",
"contributeExercise": "ஒரு உடற்பயிற்சியை பங்களிக்கவும்",
"step1HeaderBasics": "ஆங்கிலத்தில் அடிப்படைகள்",
"variations": "மாறுபாடுகள்",
"checkInformationBeforeSubmitting": "பயிற்சியைச் சமர்ப்பிப்பதற்கு முன் நீங்கள் உள்ளிட்ட செய்தி சரியானதா என்பதை சரிபார்க்கவும்",
"submitExercise": "உடற்பயிற்சியை சமர்ப்பிக்கவும்",
"basics": "அடிப்படைகள்",
"exerciseNotTranslatedBody": "இந்த பயிற்சி தற்போது தேர்ந்தெடுக்கப்பட்ட மொழியில் கிடைக்கவில்லை. மொழிபெயர்ப்பை பங்களிக்க விரும்புகிறீர்களா?",
"newNote": "புதிய குறிப்பு",
"filterVariations": "வடிகட்டி மாறுபாடுகளுக்கு உடற்பயிற்சி பெயரை உள்ளிடவும்",
"compatibleImagesCC": "எச்.ஏ. உரிமம் மூலம் சி.சி உடன் படங்கள் இணக்கமாக இருக்க வேண்டும். ஐயம் இருந்தால், நீங்கள் எடுத்த புகைப்படங்களை மட்டுமே பதிவேற்றவும்.",
"exerciseNotTranslated": "மொழிபெயர்ப்பு எதுவும் கிடைக்கவில்லை",
"alsoKnownAs": "மேலும் அழைக்கப்படுகிறது:",
"deleteExerciseBody": "\"{{பெயர்}}\" என்ற பயிற்சியை நீக்க விரும்புகிறீர்களா? நீங்கள் தற்போதைய {{மொழி}} மொழிபெயர்ப்பை அல்லது அனைத்து மொழிபெயர்ப்புகள், படங்கள் போன்றவற்றைக் கொண்ட முழுமையான உடற்பயிற்சியை நீக்கலாம்.",
"translateExerciseNow": "இந்த பயிற்சியை இப்போது மொழிபெயர்க்கவும்",
"notes": "குறிப்புகள்"
},
"nutrition": {
"plans": "ஊட்டச்சத்து திட்டங்கள்",
"onlyLoggingHelpText": "கலோரிகளை மட்டுமே கண்காணிக்கவும். உங்கள் கலோரிகளை மட்டுமே உள்நுழைய விரும்பினால், குறிப்பிட்ட உணவுடன் விரிவான ஊட்டச்சத்து திட்டத்தை அமைக்க விரும்பவில்லை என்றால் பெட்டியை சரிபார்க்கவும்",
"useGoalsHelpText": "இந்த திட்டத்தில் இலக்குகளைச் சேர்க்கவும்",
"useGoalsHelpTextLong": "திட்டத்திற்கான ஆற்றல், புரதம், கார்போஐட்ரேட்டுகள் அல்லது கொழுப்புக்கான பொதுவான இலக்குகளை நிர்ணயிக்க இது உங்களை அனுமதிக்கிறது. நீங்கள் ஒரு விரிவான உணவுத் திட்டத்தை அமைத்தால், இந்த மதிப்புகள் முன்னுரிமை பெறும் என்பதை நினைவில் கொள்க.",
"goalCarbohydrates": "கார்போஐட்ரேட் இலக்கு",
"kcal": "கிலோகலோரி",
"valueEnergyKcalKj": "{{kcal}} kcal / {{kj}} kj",
"searchIngredientName": "மூலப்பொருள் பெயரால் தேடுங்கள்",
"macronutrient": "மேக்ரோனூட்ரியண்ட்",
"percentEnergy": "ஆற்றலின் விழுக்காடு",
"logged": "உள்நுழைந்த",
"loggedToday": "இன்று உள்நுழைந்துள்ளது",
"difference": "வேறுபாடு",
"7dayAvg": "7 நாள் சராசரி",
"protein": "புரதம்",
"pseudoMealTitle": "பிற பதிவுகள்",
"others": "மற்றவர்கள்",
"sodium": "உவர்மம்",
"mealDeleteInfo": "இந்த உணவுக்கான ஊட்டச்சத்து டைரி உள்ளீடுகள் நீக்கப்படாது, மேலும் \"பிற பதிவுகள்\" இன் கீழ் தோன்றும்",
"logThisMeal": "இந்த உணவை ஊட்டச்சத்து நாட்குறிப்புக்கு பதிவுசெய்க",
"logThisMealItem": "இந்த மூலப்பொருளை ஊட்டச்சத்து நாட்குறிப்புக்கு பதிவுசெய்க",
"valueRemaining": "மீதமுள்ள",
"meal": "உணவு",
"addMeal": "உணவு சேர்க்கவும்",
"copyPlan": "இந்த திட்டத்தின் நகலை உருவாக்கவும்",
"goalProtein": "புரத இலக்கு",
"addMealItem": "உணவுக்கு மூலப்பொருள் சேர்க்கவும்",
"nutritionalDiary": "ஊட்டச்சத்து நாட்குறிப்பு",
"gramShort": "g",
"valueEnergyKcal": "{{மதிப்பு}} கிலோகலோரி",
"planDeleteInfo": "இது அனைத்து ஊட்டச்சத்து டைரி உள்ளீடுகளையும் நீக்கிவிடும்",
"goalFiber": "ஃபைபர் இலக்கு",
"today": "இன்று",
"energy": "ஆற்றல்",
"plan": "ஊட்டச்சத்து திட்டம்",
"goalsTitle": "இலக்குகள்",
"goalEnergy": "ஆற்றல் இலக்கு",
"goalFat": "கொழுப்பு இலக்கு",
"addNutritionalDiary": "ஊட்டச்சத்து டைரி நுழைவு சேர்க்கவும்",
"gPerBodyKg": "g க்கு g-kg",
"planned": "திட்டமிடப்பட்டது",
"carbohydrates": "கார்போஐட்ரேட்டுகள்",
"sugar": "சர்க்கரை",
"ofWhichSugars": "அதில் சர்க்கரைகள்",
"fat": "கொழுப்பு",
"ofWhichSaturated": "அதில் நிறைவுற்றது",
"saturatedFat": "பூரிதக் கொழுப்பு",
"fibres": "இழைகள்",
"diaryEntrySaved": "டைரி நுழைவு வெற்றிகரமாக சேமிக்கப்பட்டது",
"valueTooMany": "பல"
},
"weight": "எடை",
"date": "ததி",
"add": "சேர்",
"days": "நாட்கள்",
"currentWeight": "தற்போதைய எடை",
"workout": "பயிற்சி",
"submit": "சமர்ப்பி",
"delete": "நீக்கு",
"deleteConfirmation": "\"{{name}}\" ஐ நிச்சயமாக நீக்க விரும்புகிறீர்களா?",
"nutritionalPlan": "ஊட்டச்சத்து திட்டம்",
"edit": "தொகு",
"exercises": {
"replacementsInfoText": "விருப்பமாக, இதை மாற்ற வேண்டிய ஒரு பயிற்சியையும் நீங்கள் தேர்ந்தெடுக்கலாம் (எ.கா. இது இரண்டு முறை சமர்ப்பிக்கப்பட்டது அல்லது அதற்கு ஒத்ததாக இருந்தது). இது நடைமுறைகள் மற்றும் பயிற்சி பதிவுகளை நீக்குவதற்கு பதிலாக, நடைமுறைகள் மற்றும் பயிற்சி பதிவுகளை மாற்றும். இந்த மாற்றங்கள் இதிலிருந்து பயிற்சிகளை ஒத்திசைக்கும் எந்த நிகழ்விற்கும் பிரச்சாரம் செய்யும்.",
"replacementsSearch": "ஒரு உடற்பயிற்சியைத் தேடுங்கள் அல்லது அறியப்பட்ட ஐடியை புலத்தில் நகலெடுத்து ஒட்டவும், \"சுமை\" பொத்தானைக் சொடுக்கு செய்யவும்.",
"noReplacementSelected": " மாற்றுவதற்கு எந்த உடற்பயிற்சியும் தேர்ந்தெடுக்கப்படவில்லை",
"notEnoughRightsHeader": "நீங்கள் பயிற்சிகளை பங்களிக்க முடியாது",
"notEnoughRights": "உங்கள் கணக்கு {{days}} நாட்களை விட பழையதாக இருந்தால் மட்டுமே நீங்கள் பயிற்சிகளை பங்களிக்க முடியும், மேலும் உங்கள் மின்னஞ்சலை சரிபார்த்துள்ளீர்கள்",
"muscles": "தசைகள்",
"secondaryMuscles": "இரண்டாம் நிலை தசைகள்",
"whatVariationsExist": "இந்த பயிற்சியின் எந்த மாறுபாடுகள் உள்ளன, ஏதேனும் இருந்தால்?",
"identicalExercise": "நகல் பயிற்சிகளைத் தவிர்க்கவும்",
"identicalExercisePleaseDiscard": "நீங்கள் சேர்ப்பதற்கு ஒத்த ஒரு பயிற்சியை நீங்கள் கவனித்தால், தயவுசெய்து உங்கள் வரைவை நிராகரித்து, அதற்கு பதிலாக அந்த பயிற்சியைத் திருத்தவும்.",
"equipment": "உபகரணங்கள்",
"cacheWarning": "கேச்சிங் காரணமாக விண்ணப்பம் முழுவதும் மாற்றங்கள் தெரியும் வரை சிறிது நேரம் ஆகலாம்.",
"successfullyUpdated": "உடற்பயிற்சி வெற்றிகரமாக புதுப்பிக்கப்பட்டது. கேச்சிங் காரணமாக விண்ணப்பம் முழுவதும் மாற்றங்கள் தெரியும் வரை சிறிது நேரம் ஆகலாம்.",
"deleteTranslation": "மொழிபெயர்ப்பை நீக்கு",
"deleteExerciseFull": "முழு உடற்பயிற்சியை நீக்கு",
"missingExerciseDescription": "சமூகத்தை பங்களிப்பதன் மூலம் உதவுங்கள்!",
"searchExerciseName": "உடற்பயிற்சி பெயரால் தேடுங்கள்",
"imageStylePhoto": "புகைப்படம்",
"imageStyle3D": "ZD",
"imageStyleLine": "வரி",
"imageStyleLowPoly": "குறைந்த பாலி",
"imageStyleOther": "மற்றொன்று",
"imageDetails": "பட விவரங்கள்",
"replacements": "மாற்றீடுகள்",
"description": "விவரம்",
"forms": {
"maxLength": "தயவுசெய்து {{எழுத்துக்கள்}} எழுத்துக்களை விட குறைவாக உள்ளிடவும்",
"minLength": "தயவுசெய்து {{எழுத்துக்கள்}} எழுத்துக்களை விட அதிகமாக உள்ளிடவும்",
"supportedImageFormats": "20MB க்குக் கீழே உள்ள JPEG, PNG மற்றும் WEBP கோப்புகள் மட்டுமே ஆதரிக்கப்படுகின்றன",
"valueTooShort": "மதிப்பு மிகக் குறைவு",
"minValue": "இந்த புலத்திற்கான மதிப்பு {{மதிப்பு}} ஐ விட அதிகமாக இருக்க வேண்டும்",
"valueTooLong": "மதிப்பு மிக நீளமானது",
"fieldRequired": "இந்த புலம் தேவை",
"maxValue": "இந்த புலத்திற்கான மதிப்பு {{மதிப்பு} than ஐ விட குறைவாக இருக்க வேண்டும்"
},
"category": "வகை",
"success": "வெற்றி!",
"noResultsDescription": "இந்த வினவலுக்கு எந்த முடிவுகளும் கிடைக்கவில்லை, வடிப்பான்களின் எண்ணிக்கையைக் குறைப்பதைக் கவனியுங்கள்.",
"routines": {
"addWeightLog": "பயிற்சி பதிவைச் சேர்க்கவும்",
"logsFilterNote": "KG அல்லது LB இன் எடை அலகு கொண்ட உள்ளீடுகள் மற்றும் மறுபடியும் மறுபடியும் பட்டியலிடப்பட்டுள்ளன என்பதை நினைவில் கொள்க, நேரம் போன்ற பிற சேர்க்கைகள் அல்லது தோல்வி வரை இங்கே புறக்கணிக்கப்படும்",
"rir": "ஆர்.ஐ.ஆர்",
"routine": "வழக்கமான",
"routines": "நடைமுறைகள்",
"addDay": "பயிற்சி நாள் சேர்க்கவும்",
"logsHeader": "வொர்க்அவுட்டுக்கான பயிற்சி பதிவு",
"addLogToDay": "இன்றுவரை பதிவைச் சேர்க்கவும்"
},
"server": {
"incline_bench": "சாய்வு பெஞ்ச்",
"kettlebell": "கெட்டில் பெல்",
"miles": "மைல்கள்",
"miles_per_hour": "ஒரு மணி நேரத்திற்கு மைல்கள்",
"minutes": "நிமிடங்கள்",
"quads": "குவாட்ச்",
"repetitions": "மறுபடியும் மறுபடியும்",
"triceps": "ட்ரைசெப்ச்",
"kg": "கிலோ",
"kilometers": "கிலோமீட்டர்",
"lats": "லாட்ச்",
"legs": "கால்கள்",
"max_reps": "அதிகபட்ச பிரதிநிதிகள்",
"none__bodyweight_exercise_": "எதுவுமில்லை (உடல் எடை உடற்பயிற்சி)",
"abs": "ஏபிஎச்",
"arms": "ஆயுதங்கள்",
"glutes": "க்ளூட்டுகள்",
"gym_mat": "சிம் பாய்",
"sz_bar": "Szar",
"seconds": "நொடிகள்",
"lb": "எல்.பி.",
"back": "பின்",
"barbell": "பார்பெல்",
"bench": "பென்ச்",
"biceps": "கயிறுகள்",
"body_weight": "உடல் எடை",
"calves": "கன்றுகள்",
"cardio": "கார்டியோ",
"chest": "மார்பு",
"dumbbell": "டம்பல்",
"hamstrings": "தொடை எலும்புகள்",
"kilometers_per_hour": "ஒரு மணி நேரத்திற்கு கிலோமீட்டர்",
"plates": "தட்டுகள்",
"pull_up_bar": "பட்டியை இழுக்கவும்",
"shoulders": "தோள்கள்",
"swiss_ball": "சுவிச் பந்து",
"until_failure": "தோல்வி வரை"
},
"licenses": {
"authors": "ஆசிரியர் (கள்)",
"authorProfile": "கிடைத்தால், ஆசிரியர் வலைத்தளம் அல்லது சுயவிவரத்திற்கான இணைப்பு",
"derivativeSourceUrl": "அசல் மூலத்துடன் இணைக்கவும், இது ஒரு வழித்தோன்றல் வேலை என்றால்",
"derivativeSourceUrlHelper": "ஒரு வழித்தோன்றல் வேலை என்பது முந்தைய படைப்பை அடிப்படையாகக் கொண்ட ஒன்றாகும், ஆனால் அதன் சொந்த பதிப்புரிமைக்கு உரிமை பெற போதுமான புதிய, ஆக்கபூர்வமான உள்ளடக்கத்தையும் கொண்டுள்ளது என்பதை நினைவில் கொள்க.",
"originalObjectUrl": "கிடைத்தால், மூல வலைத்தளத்துடன் இணைக்கவும்",
"originalTitle": "தலைப்பு"
},
"seeDetails": "விவரங்களைக் காண்க",
"actions": "செயல்கள்",
"notes": "குறிப்புகள்",
"unit": "அலகு",
"alsoSearchEnglish": "ஆங்கிலத்தில் பெயர்களையும் தேடுங்கள்",
"copyToClipboard": "கிளிப்போர்டுக்கு நகலெடுக்கவும்",
"images": "படங்கள்",
"overview": "கண்ணோட்டம்",
"goBack": "பின்",
"language": "மொழி",
"save": "சேமி",
"filters": "வடிப்பான்கள்",
"videos": "வீடியோக்கள்",
"noResults": "முடிவுகள் இல்லை",
"translation": "மொழிபெயர்ப்பு",
"English": "ஆங்கிலம்",
"timeOfDay": "நாள் நேரம்",
"close": "மூடு",
"primaryMuscles": "முதன்மை தசைகள்",
"deleteExerciseReplace": "நீக்கவும் மாற்றவும்",
"alternativeNames": "மாற்று பெயர்கள்",
"exercises": "பயிற்சிகள்",
"changeExerciseLanguage": "இந்த உடற்பயிற்சியின் மொழியை மாற்றவும்",
"noEquipment": "உபகரணங்கள் இல்லை",
"missingExercise": "ஒரு குறிப்பிட்ட உடற்பயிற்சியைக் காணவில்லையா?",
"notesHelpText": "குறிப்புகள் \"உங்கள் உடலை நேராக வைத்திருங்கள்\" போன்ற பயிற்சியை எவ்வாறு செய்வது என்பது குறித்த குறுகிய கருத்துகள்",
"contributeExercise": "ஒரு உடற்பயிற்சியை பங்களிக்கவும்",
"step1HeaderBasics": "ஆங்கிலத்தில் அடிப்படைகள்",
"variations": "மாறுபாடுகள்",
"checkInformationBeforeSubmitting": "பயிற்சியைச் சமர்ப்பிப்பதற்கு முன் நீங்கள் உள்ளிட்ட செய்தி சரியானதா என்பதை சரிபார்க்கவும்",
"submitExercise": "உடற்பயிற்சியை சமர்ப்பிக்கவும்",
"basics": "அடிப்படைகள்",
"exerciseNotTranslatedBody": "இந்த பயிற்சி தற்போது தேர்ந்தெடுக்கப்பட்ட மொழியில் கிடைக்கவில்லை. மொழிபெயர்ப்பை பங்களிக்க விரும்புகிறீர்களா?",
"newNote": "புதிய குறிப்பு",
"filterVariations": "வடிகட்டி மாறுபாடுகளுக்கு உடற்பயிற்சி பெயரை உள்ளிடவும்",
"compatibleImagesCC": "எச்.ஏ. உரிமம் மூலம் சி.சி உடன் படங்கள் இணக்கமாக இருக்க வேண்டும். ஐயம் இருந்தால், நீங்கள் எடுத்த புகைப்படங்களை மட்டுமே பதிவேற்றவும்.",
"exerciseNotTranslated": "மொழிபெயர்ப்பு எதுவும் கிடைக்கவில்லை",
"alsoKnownAs": "மேலும் அழைக்கப்படுகிறது:",
"deleteExerciseBody": "\"{{name}}\" என்ற பயிற்சியை நீக்க விரும்புகிறீர்களா? நீங்கள் தற்போதைய {{language}} மொழிபெயர்ப்பை அல்லது அனைத்து மொழிபெயர்ப்புகள், படங்கள் போன்றவற்றைக் கொண்ட முழுமையான உடற்பயிற்சியை நீக்கலாம்.",
"translateExerciseNow": "இந்த பயிற்சியை இப்போது மொழிபெயர்க்கவும்",
"notes": "குறிப்புகள்"
},
"nutrition": {
"plans": "ட்டச்சத்து திட்டங்கள்",
"onlyLoggingHelpText": "கலோரிகளை மட்டுமே கண்காணிக்கவும். உங்கள் கலோரிகளை மட்டுமே உள்நுழைய விரும்பினால், குறிப்பிட்ட உணவுடன் விரிவான ஊட்டச்சத்து திட்டத்தை அமைக்க விரும்பவில்லை என்றால் பெட்டியை சரிபார்க்கவும்",
"useGoalsHelpText": "இந்த திட்டத்தில் இலக்குகளைச் சேர்க்கவும்",
"useGoalsHelpTextLong": "திட்டத்திற்கான ஆற்றல், புரதம், கார்போஐட்ரேட்டுகள் அல்லது கொழுப்புக்கான பொதுவான இலக்குகளை நிர்ணயிக்க இது உங்களை அனுமதிக்கிறது. நீங்கள் ஒரு விரிவான உணவுத் திட்டத்தை அமைத்தால், இந்த மதிப்புகள் முன்னுரிமை பெறும் என்பதை நினைவில் கொள்க.",
"goalCarbohydrates": "கார்போஐட்ரேட் இலக்கு",
"kcal": "கிலோகலோரி",
"valueEnergyKcalKj": "{{kcal}} kcal / {{kj}} kj",
"searchIngredientName": "மூலப்பொருள் பெயரால் தேடுங்கள்",
"macronutrient": "மேக்ரோனூட்ரியண்ட்",
"percentEnergy": "ஆற்றலின் விழுக்காடு",
"logged": "உள்நுழைந்த",
"loggedToday": "இன்று உள்நுழைந்துள்ளது",
"difference": "வேறுபாடு",
"loading": "ஏற்றுகிறது ...",
"addEntry": "உள்ளீட்டைச் சேர்க்கவும்",
"value": "மதிப்பு",
"downloadAsPdf": "PDF ஆக பதிவிறக்கவும்",
"total": "மொத்தம்",
"preferences": "விருப்பத்தேர்வுகள்",
"continue": "தொடரவும்",
"name": "பெயர்",
"cannotBeUndone": "இந்த செயலை செயல்தவிர்க்க முடியாது.",
"cancel": "ரத்துசெய்",
"measurements": {
"measurements": "அளவீடுகள்",
"unitFormHelpText": "சி.எம் அல்லது % போன்ற வகை அளவிடப்படும் அலகு",
"deleteInfo": "இது வகையையும் அதன் அனைத்து உள்ளீடுகளையும் நீக்கும்"
},
"nothingHereYet": "இன்னும் இங்கே எதுவும் இல்லை ...",
"nothingHereYetAction": "தொடங்க செயல் பொத்தானை அழுத்தவும்"
"7dayAvg": "7 நாள் சராசரி",
"protein": "புரதம்",
"pseudoMealTitle": "பிற பதிவுகள்",
"others": "மற்றவர்கள்",
"sodium": "உவர்மம்",
"mealDeleteInfo": "இந்த உணவுக்கான ஊட்டச்சத்து டைரி உள்ளீடுகள் நீக்கப்படாது, மேலும் \"பிற பதிவுகள்\" இன் கீழ் தோன்றும்",
"logThisMeal": "இந்த உணவை ஊட்டச்சத்து நாட்குறிப்புக்கு பதிவுசெய்க",
"logThisMealItem": "இந்த மூலப்பொருளை ஊட்டச்சத்து நாட்குறிப்புக்கு பதிவுசெய்க",
"valueRemaining": "மீதமுள்ள",
"meal": "உணவு",
"addMeal": "உணவு சேர்க்கவும்",
"copyPlan": "இந்த திட்டத்தின் நகலை உருவாக்கவும்",
"goalProtein": "புரத இலக்கு",
"addMealItem": "உணவுக்கு மூலப்பொருள் சேர்க்கும்",
"nutritionalDiary": "ஊட்டச்சத்து நாட்குறிப்பு",
"gramShort": "g",
"valueEnergyKcal": "{{value}} கிலோகலோரி",
"planDeleteInfo": "இது அனைத்து ஊட்டச்சத்து டைரி உள்ளீடுகளையும் நீக்கிவிடும்",
"goalFiber": "ஃபைபர் இலக்கு",
"today": "இன்று",
"energy": "ஆற்றல்",
"plan": "ஊட்டச்சத்து திட்டம்",
"goalsTitle": "இலக்குகள்",
"goalEnergy": "ஆற்றல் இலக்கு",
"goalFat": "கொழுப்பு இலக்கு",
"addNutritionalDiary": "ஊட்டச்சத்து டைரி நுழைவு சேர்க்கவும்",
"gPerBodyKg": "g க்கு g-kg",
"planned": "திட்டமிடப்பட்டது",
"carbohydrates": "கார்போஐட்ரேட்டுகள்",
"sugar": "சர்க்கரை",
"ofWhichSugars": "அதில் சர்க்கரைகள்",
"fat": "கொழுப்பு",
"ofWhichSaturated": "அதில் நிறைவுற்றது",
"saturatedFat": "பூரிதக் கொழுப்பு",
"fibres": "இழைகள்",
"diaryEntrySaved": "டைரி நுழைவு வெற்றிகரமாக சேமிக்கப்பட்டது",
"valueTooMany": "பல"
},
"description": "விவரம்",
"forms": {
"maxLength": "தயவுசெய்து {{chars}} எழுத்துக்களை விட குறைவாக உள்ளிடவும்",
"minLength": "தயவுசெய்து {{chars}} எழுத்துக்களை விட அதிகமாக உள்ளிடவும்",
"supportedImageFormats": "20MB க்குக் கீழே உள்ள JPEG, PNG மற்றும் WEBP கோப்புகள் மட்டுமே ஆதரிக்கப்படுகின்றன",
"valueTooShort": "மதிப்பு மிகக் குறைவு",
"minValue": "இந்த புலத்திற்கான மதிப்பு {{value}} ஐ விட அதிகமாக இருக்க வேண்டும்",
"valueTooLong": "மதிப்பு மிக நீளமானது",
"fieldRequired": "இந்த புலம் தேவை",
"maxValue": "இந்த புலத்திற்கான மதிப்பு {{value}} than ஐ விட குறைவாக இருக்க வேண்டும்"
},
"category": "வகை",
"success": "வெற்றி!",
"noResultsDescription": "இந்த வினவலுக்கு எந்த முடிவுகளும் கிடைக்கவில்லை, வடிப்பான்களின் எண்ணிக்கையைக் குறைப்பதைக் கவனியுங்கள்.",
"routines": {
"addWeightLog": "பயிற்சி பதிவைச் சேர்க்கவும்",
"logsFilterNote": "KG அல்லது LB இன் எடை அலகு கொண்ட உள்ளீடுகள் மற்றும் மறுபடியும் மறுபடியும் பட்டியலிடப்பட்டுள்ளன என்பதை நினைவில் கொள்க, நேரம் போன்ற பிற சேர்க்கைகள் அல்லது தோல்வி வரை இங்கே புறக்கணிக்கப்படும்",
"rir": "ஆர்.ஐ.ஆர்",
"routine": "வழக்கமான",
"routines": "நடைமுறைகள்",
"addDay": "பயிற்சி நாள் சேர்க்கவும்",
"logsHeader": "வொர்க்அவுட்டுக்கான பயிற்சி பதிவு",
"addLogToDay": "இன்றுவரை பதிவைச் சேர்க்கவும்"
},
"server": {
"incline_bench": "சாய்வு பெஞ்ச்",
"kettlebell": "கெட்டில் பெல்",
"miles": "மைல்கள்",
"miles_per_hour": "ஒரு மணி நேரத்திற்கு மைல்கள்",
"minutes": "நிமிடங்கள்",
"quads": "குவாட்ச்",
"repetitions": "மறுபடியும் மறுபடியும்",
"triceps": "ட்ரைசெப்ச்",
"kg": "கிலோ",
"kilometers": "கிலோமீட்டர்",
"lats": "லாட்ச்",
"legs": "கால்கள்",
"max_reps": "அதிகபட்ச பிரதிநிதிகள்",
"none__bodyweight_exercise_": "எதுவுமில்லை (உடல் எடை உடற்பயிற்சி)",
"abs": "ஏபிஎச்",
"arms": "ஆயுதங்கள்",
"glutes": "க்ளூட்டுகள்",
"gym_mat": "சிம் பாய்",
"sz_bar": "Szar",
"seconds": "நொடிகள்",
"lb": "எல்.பி.",
"back": "பின்",
"barbell": "பார்பெல்",
"bench": "பென்ச்",
"biceps": "கயிறுகள்",
"body_weight": "உடல் எடை",
"calves": "கன்றுகள்",
"cardio": "கார்டியோ",
"chest": "மார்பு",
"dumbbell": "டம்பல்",
"hamstrings": "தொடை எலும்புகள்",
"kilometers_per_hour": "ஒரு மணி நேரத்திற்கு கிலோமீட்டர்",
"plates": "தட்டுகள்",
"pull_up_bar": "பட்டியை இழுக்கவும்",
"shoulders": "தோள்கள்",
"swiss_ball": "சுவிச் பந்து",
"until_failure": "தோல்வி வரை"
},
"licenses": {
"authors": "ஆசிரியர் (கள்)",
"authorProfile": "கிடைத்தால், ஆசிரியர் வலைத்தளம் அல்லது சுயவிவரத்திற்கான இணைப்பு",
"derivativeSourceUrl": "அசல் மூலத்துடன் இணைக்கவும், இது ஒரு வழித்தோன்றல் வேலை என்றால்",
"derivativeSourceUrlHelper": "ஒரு வழித்தோன்றல் வேலை என்பது முந்தைய படைப்பை அடிப்படையாகக் கொண்ட ஒன்றாகும், ஆனால் அதன் சொந்த பதிப்புரிமைக்கு உரிமை பெற போதுமான புதிய, ஆக்கபூர்வமான உள்ளடக்கத்தையும் கொண்டுள்ளது என்பதை நினைவில் கொள்க.",
"originalObjectUrl": "கிடைத்தால், மூல வலைத்தளத்துடன் இணைக்கவும்",
"originalTitle": "தலைப்பு"
},
"seeDetails": "விவரங்களைக் காண்க",
"actions": "செயல்கள்",
"notes": "குறிப்புகள்",
"unit": "அலகு",
"alsoSearchEnglish": "ஆங்கிலத்தில் பெயர்களையும் தேடுங்கள்",
"copyToClipboard": "கிளிப்போர்டுக்கு நகலெடுக்கவும்",
"images": "படங்கள்",
"overview": "கண்ணோட்டம்",
"goBack": "பின்",
"language": "மொழி",
"save": "சேமி",
"filters": "வடிப்பான்கள்",
"videos": "வீடியோக்கள்",
"noResults": "முடிவுகள் இல்லை",
"translation": "மொழிபெயர்ப்பு",
"English": "ஆங்கிலம்",
"timeOfDay": "நாள் நேரம்",
"close": "மூடு",
"difference": "வேறுபாடு",
"loading": "ஏற்றுகிறது ...",
"addEntry": "உள்ளீட்டைச் சேர்க்கவும்",
"value": "மதிப்பு",
"downloadAsPdf": "PDF ஆக பதிவிறக்கவும்",
"total": "மொத்தம்",
"preferences": "விருப்பத்தேர்வுகள்",
"continue": "தொடரவும்",
"name": "பெயர்",
"cannotBeUndone": "இந்த செயலை செயல்தவிர்க்க முடியாது.",
"cancel": "ரத்துசெய்",
"measurements": {
"measurements": "அளவீடுகள்",
"unitFormHelpText": "சி.எம் அல்லது % போன்ற வகை அளவிடப்படும் அலகு",
"deleteInfo": "இது வகையையும் அதன் அனைத்து உள்ளீடுகளையும் நீக்கும்"
},
"nothingHereYet": "இன்னும் இங்கே எதுவும் இல்லை ...",
"nothingHereYetAction": "தொடங்க செயல் பொத்தானை அழுத்தவும்"
}

File diff suppressed because one or more lines are too long

View File

@@ -21,7 +21,7 @@
'use strict';
function updateIngredientValue(url) {
var formData = $('#nutritional-values-form').serializeArray();
let formData = $('#nutritional-values-form').serializeArray();
$.get(url, formData, function (data) {
// Show any validation errors
$('#calculator-errors').html('');
@@ -60,158 +60,20 @@ function wgerInitIngredientDetail(url) {
}
/*
* Draw the BMI chart
*/
function wgerRenderBodyMassIndex() {
var svg;
var area;
var nest;
var stack;
var yAxis;
var xAxis;
var z;
var y;
var x;
var margin;
var width;
var height;
var heightFactor;
var widthFactor;
// Delete the other diagrams
d3.selectAll('svg').remove();
// Calculate the size
widthFactor = 600;
heightFactor = (widthFactor / 600) * 300;
margin = {top: 20, right: 80, bottom: 30, left: 50};
width = widthFactor - margin.left - margin.right;
height = heightFactor - margin.top - margin.bottom;
x = d3.scaleLinear()
.range([0, width]);
y = d3.scaleLinear()
.range([height, 0]);
z = d3.scaleOrdinal().range(['#000080',
'#0000ff',
'#00ffff',
'#00ff00',
'#ffff00',
'#ff7f2a',
'#ff0000',
'#800000']);
xAxis = d3.axisBottom(x);
yAxis = d3.axisLeft(y);
stack = d3.stack();
area = d3.area()
.x(function (d) {
return x(d.height);
})
.y1(function (d) {
return y(d.weight);
});
svg = d3.select('#bmi-chart').append('svg')
.attr('width', width + margin.left + margin.right)
.attr('height', height + margin.top + margin.bottom)
.append('g')
.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');
// Clip path, drawings outside are removed
svg.append('defs').append('clipPath')
.attr('id', 'clip')
.append('rect')
.attr('width', width)
.attr('height', height);
d3.json('/nutrition/calculator/bmi/chart-data').then(function (data) {
var $bmiForm;
var url;
var layers;
stack.keys(['filler',
'severe_thinness',
'moderate_thinness',
'mild_thinness',
'normal_range',
'pre_obese',
'obese_class_2',
'obese_class_3']);
layers = stack(d3.group(data, d => d.key));
// Manually set the domains
x.domain(data.map(function (d) {
return d.height;
}));
y.domain([d3.min(data, function (d) {
return d.weight;
}), d3.max(data, function (d) {
return d.weight;
})]);
svg.selectAll('.layer')
.data(layers)
.enter().append('path')
.attr('class', 'layer')
.attr('id', function (d) {
return 'key-' + d.key;
})
.attr('clip-path', 'url(#clip)')
.attr('d', function (d, i) {
return area(d[i].data.values);
})
.style('fill', function (d, i) {
return z(i);
})
.style('opacity', 1);
svg.append('g')
.attr('class', 'x axis')
.attr('transform', 'translate(0,' + height + ')')
.call(xAxis);
svg.append('g')
.attr('class', 'y axis')
.call(yAxis);
$bmiForm = $('#bmi-form');
url = $bmiForm.attr('action');
$.post(url,
$bmiForm.serialize(),
function (postData) {
$('#bmi-result-container').show();
$('#bmi-result-value').html(postData.bmi);
svg.append('circle')
.attr('cx', x(postData.height))
.attr('cy', y(postData.weight))
.attr('fill', 'black')
.attr('r', 5);
});
});
}
/*
* Calories calculator
*/
function wgerInitCaloriesCalculator() {
$('#form-transfer-calories').click(function (e) {
var baseCalories;
let baseCalories;
e.preventDefault();
baseCalories = Number($('#id_base_calories').html());
$('#id_calories').val(baseCalories);
});
$('#add-calories-total').click(function (e) {
var additionalCalories;
var baseCalories;
let additionalCalories;
let baseCalories;
e.preventDefault();
baseCalories = Number($('#id_base_calories').html());
additionalCalories = Number($('#id_additional_calories').val());
@@ -224,7 +86,7 @@ function wgerInitCaloriesCalculator() {
// Get own ID and update the user profile
$.get('/api/v2/userprofile', function () {
}).done(function (userprofile) {
var totalCalories = $('#id_calories')[0].value;
let totalCalories = $('#id_calories')[0].value;
$.ajax({
url: '/api/v2/userprofile/' + userprofile.results[0].user + '/',
type: 'PATCH',
@@ -234,8 +96,8 @@ function wgerInitCaloriesCalculator() {
});
$('.calories-autoform').click(function (e) {
var $bmrForm;
var bmrUrl;
let $bmrForm;
let bmrUrl;
e.preventDefault();
// BMR
@@ -244,8 +106,8 @@ function wgerInitCaloriesCalculator() {
$.post(bmrUrl,
$bmrForm.serialize(),
function (data) {
var $activitiesForm;
var activitiesUrl;
let $activitiesForm;
let activitiesUrl;
$('#bmr-result-container').show();
$('#bmr-result-value').html(data.bmr);

View File

@@ -1,122 +0,0 @@
{% extends "base.html" %}
{% load i18n %}
{% load static %}
{% load crispy_forms_tags %}
{% block header %}
<style>
div.table {
display:table;
margin-top: 1em;
}
div.table > div {
display:table-row;
}
div.table > div > div {
display:table-cell;
padding-left: 1em;
}
div.bmi-legend {
width:1em;
height:1em;
}
</style>
<script>
$(document).ready(function () {
wgerRenderBodyMassIndex();
/*
* Process the form
*/
$("#submit-id-submit").click(function(e){
e.preventDefault();
wgerRenderBodyMassIndex();
});
});
</script>
{% endblock %}
<!--
Title
-->
{% block title %}{% translate "BMI calculator" %}{% endblock %}
<!--
Main Content
-->
{% block content %}
{% crispy form %}
<div id="bmi-result-container" style="display:none;">
<h3>{% translate 'Results' %}</h3>
<p>{% translate 'Your BMI is: ' %} <strong><span id="bmi-result-value">{{user.userprofile.calculate_bmi|floatformat:1}}</span></strong></p>
</div>
<div id="bmi-chart"></div>
<h4>{% translate "Legend" %}</h4>
<div class="table">
<div>
<div><div class="bmi-legend" style="background-color:#800000;">&nbsp;</div></div>
<div>{% translate "Adipositas III" %}</div>
</div>
<div>
<div><div class="bmi-legend" style="background-color:#ff0000;">&nbsp;</div></div>
<div>{% translate "Adipositas II" %}</div>
</div>
<div>
<div><div class="bmi-legend" style="background-color:#ff7f2a;">&nbsp;</div></div>
<div>{% translate "Adipositas I" %}</div>
</div>
<div>
<div><div class="bmi-legend" style="background-color:#ffff00;">&nbsp;</div></div>
<div>{% translate "Overweight" %}</div>
</div>
<div>
<div><div class="bmi-legend" style="background-color:#00ff00;">&nbsp;</div></div>
<div>{% translate "Normal weight" %}</div>
</div>
<div>
<div><div class="bmi-legend" style="background-color:#00ffff;">&nbsp;</div></div>
<div>{% translate "Slight underweight" %}</div>
</div>
<div>
<div><div class="bmi-legend" style="background-color:#0000ff;">&nbsp;</div></div>
<div>{% translate "Moderate underweight" %}</div>
</div>
<div>
<div><div class="bmi-legend" style="background-color:#000080;">&nbsp;</div></div>
<div>{% translate "Strong underweight" %}</div>
</div>
</div>
{% endblock %}
<!--
Side bar
-->
{% block sidebar %}
<h4>Info</h4>
<p>
{% blocktranslate %}Use the form to calculate your BMI (Body Mass Index).
If you have entered data in the weight section, the last entry will
be used automatically. Otherwise the weight you enter here will be saved
in a new entry.{% endblocktranslate %}
</p>
{% endblock %}

View File

@@ -26,7 +26,6 @@ from django.urls import (
# wger
from wger.core.views.react import ReactView
from wger.nutrition.views import (
bmi,
calculator,
ingredient,
plan,
@@ -140,19 +139,9 @@ patterns_unit_ingredient = [
patterns_bmi = [
path(
'',
bmi.view,
ReactView.as_view(),
name='view',
),
path(
'calculate',
bmi.calculate,
name='calculate',
),
path(
'chart-data',
bmi.chart_data,
name='chart-data',
), # JS
]
# sub patterns for calories calculator

View File

@@ -1,159 +0,0 @@
# -*- coding: utf-8 -*-
# This file is part of wger Workout Manager.
#
# wger Workout Manager is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# wger Workout Manager is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with Workout Manager. If not, see <http://www.gnu.org/licenses/>.
# Standard Library
import json
import logging
# Django
from django.contrib.auth.decorators import login_required
from django.http import HttpResponse
from django.shortcuts import render
from django.utils.translation import gettext as _
# wger
from wger.nutrition.forms import BmiForm
from wger.utils import helpers
from wger.utils.units import AbstractHeight
logger = logging.getLogger(__name__)
"""
BMI views
"""
@login_required
def view(request):
"""
The BMI calculator detail page
"""
context = {}
form_data = {
'height': request.user.userprofile.height,
'weight': request.user.userprofile.weight,
'use_metric': request.user.userprofile.use_metric,
}
context['form'] = BmiForm(initial=form_data)
return render(request, 'bmi/form.html', context)
@login_required
def calculate(request):
"""
Calculates the BMI
"""
data = []
form = BmiForm(request.POST, instance=request.user.userprofile)
output_height = request.POST['height']
if not request.user.userprofile.use_metric:
request_copy = request.POST.copy()
output_height = request_copy['height']
request_copy['height'] = AbstractHeight(request_copy['height'], mode='inches').cm
form = BmiForm(request_copy, instance=request.user.userprofile)
if form.is_valid():
form.save()
# Create a new weight entry as needed
request.user.userprofile.user_bodyweight(form.cleaned_data['weight'])
bmi = request.user.userprofile.calculate_bmi()
result = {
'bmi': '{0:.2f}'.format(bmi),
'weight': form.cleaned_data['weight'],
'height': output_height,
}
data = json.dumps(result, cls=helpers.DecimalJsonEncoder)
response = HttpResponse(data, 'application/json')
else:
help_message = {
('error'): _('Please make sure your height is within the appropriate range.'),
}
if request.user.userprofile.use_metric:
help_message['cm_range'] = _('140 to 230')
else:
help_message['in_range'] = _('56 to 90')
data = json.dumps(help_message)
response = HttpResponse(data, 'application/json')
response.status_code = 406
# Return the results to the client
return response
def chart_data(request):
"""
Returns the data to render the BMI chart
The individual values taken from
* http://apps.who.int/bmi/index.jsp?introPage=intro_3.html
* https://de.wikipedia.org/wiki/Body-Mass-Index
"""
if request.user.userprofile.use_metric:
data = json.dumps(
[
{'key': 'filler', 'height': 150, 'weight': 30},
{'key': 'filler', 'height': 200, 'weight': 30},
{'key': 'severe_thinness', 'height': 150, 'weight': 35.978},
{'key': 'severe_thinness', 'height': 200, 'weight': 63.960},
{'key': 'moderate_thinness', 'height': 150, 'weight': 38.228},
{'key': 'moderate_thinness', 'height': 200, 'weight': 67.960},
{'key': 'mild_thinness', 'height': 150, 'weight': 41.603},
{'key': 'mild_thinness', 'height': 200, 'weight': 73.960},
{'key': 'normal_range', 'height': 150, 'weight': 56.228},
{'key': 'normal_range', 'height': 200, 'weight': 99.960},
{'key': 'pre_obese', 'height': 150, 'weight': 67.478},
{'key': 'pre_obese', 'height': 200, 'weight': 119.960},
{'key': 'obese_class_1', 'height': 150, 'weight': 78.728},
{'key': 'obese_class_1', 'height': 200, 'weight': 139.960},
{'key': 'obese_class_2', 'height': 150, 'weight': 89.978},
{'key': 'obese_class_2', 'height': 200, 'weight': 159.960},
{'key': 'obese_class_3', 'height': 150, 'weight': 90},
{'key': 'obese_class_3', 'height': 200, 'weight': 190},
]
)
else:
data = json.dumps(
[
{'key': 'filler', 'height': 150, 'weight': 66.139},
{'key': 'filler', 'height': 200, 'weight': 66.139},
{'key': 'severe_thinness', 'height': 150, 'weight': 79.317},
{'key': 'severe_thinness', 'height': 200, 'weight': 141.008},
{'key': 'moderate_thinness', 'height': 150, 'weight': 84.277},
{'key': 'moderate_thinness', 'height': 200, 'weight': 149.826},
{'key': 'mild_thinness', 'height': 150, 'weight': 91.718},
{'key': 'mild_thinness', 'height': 200, 'weight': 163.054},
{'key': 'normal_range', 'height': 150, 'weight': 123.960},
{'key': 'normal_range', 'height': 200, 'weight': 220.374},
{'key': 'pre_obese', 'height': 150, 'weight': 148.762},
{'key': 'pre_obese', 'height': 200, 'weight': 264.467},
{'key': 'obese_class_1', 'height': 150, 'weight': 173.564},
{'key': 'obese_class_1', 'height': 200, 'weight': 308.559},
{'key': 'obese_class_2', 'height': 150, 'weight': 198.366},
{'key': 'obese_class_2', 'height': 200, 'weight': 352.651},
{'key': 'obese_class_3', 'height': 150, 'weight': 198.416},
{'key': 'obese_class_3', 'height': 200, 'weight': 352.740},
]
)
# Return the results to the client
return HttpResponse(data, 'application/json')

287
yarn.lock
View File

@@ -7,269 +7,16 @@
resolved "https://registry.yarnpkg.com/@types/jquery/-/jquery-2.0.54.tgz#d7999245f77c3fab5d84e7d32b8a6c20bfd1f072"
integrity sha512-D/PomKwNkDfSKD13DEVQT/pq2TUjN54c6uB341fEZanIzkjfGe7UaFuuaLZbpEiS5j7Wk2MUHAZqZIoECw29lg==
Sortable@RubaXa/Sortable#1.15.3:
version "1.15.3"
resolved "https://codeload.github.com/RubaXa/Sortable/tar.gz/dcb8f9e85b972292db1e0cab2ff9d7cd359ff352"
bootstrap@5.3.3:
version "5.3.3"
resolved "https://registry.yarnpkg.com/bootstrap/-/bootstrap-5.3.3.tgz#de35e1a765c897ac940021900fcbb831602bac38"
integrity sha512-8HLCdWgyoMguSO9o+aH+iuZ+aht+mzW0u3HIMzVu7Srrpv7EBBxTnrFlSCskwdY1+EOFQSm7uMJhNQHkdPcmjg==
commander@7:
version "7.2.0"
resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7"
integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==
components-font-awesome@5.9.0:
version "5.9.0"
resolved "https://registry.yarnpkg.com/components-font-awesome/-/components-font-awesome-5.9.0.tgz#02242f85946f0a6ab46870547f4c54d11e94ef75"
integrity sha512-AjY5WwmKripvroQ1oYpCC4eK8efavSKUGN/ATgwcbyz/kRmojslH8l6Mrlxq071bdzBrZvCxi+RKgU5ao3bU+A==
"d3-array@2 - 3", "d3-array@2.10.0 - 3", "d3-array@2.5.0 - 3", d3-array@3, d3-array@^3.2.0:
version "3.2.0"
resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-3.2.0.tgz#15bf96cd9b7333e02eb8de8053d78962eafcff14"
integrity sha512-3yXFQo0oG3QCxbF06rMPFyGRMGJNS7NvsV1+2joOjbBE+9xvWQ8+GcMJAjRCzw06zQ3/arXeJgbPYcjUCuC+3g==
dependencies:
internmap "1 - 2"
d3-axis@3:
version "3.0.0"
resolved "https://registry.yarnpkg.com/d3-axis/-/d3-axis-3.0.0.tgz#c42a4a13e8131d637b745fc2973824cfeaf93322"
integrity sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==
d3-brush@3:
version "3.0.0"
resolved "https://registry.yarnpkg.com/d3-brush/-/d3-brush-3.0.0.tgz#6f767c4ed8dcb79de7ede3e1c0f89e63ef64d31c"
integrity sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==
dependencies:
d3-dispatch "1 - 3"
d3-drag "2 - 3"
d3-interpolate "1 - 3"
d3-selection "3"
d3-transition "3"
d3-chord@3:
version "3.0.1"
resolved "https://registry.yarnpkg.com/d3-chord/-/d3-chord-3.0.1.tgz#d156d61f485fce8327e6abf339cb41d8cbba6966"
integrity sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==
dependencies:
d3-path "1 - 3"
"d3-color@1 - 3", d3-color@3:
version "3.0.1"
resolved "https://registry.yarnpkg.com/d3-color/-/d3-color-3.0.1.tgz#03316e595955d1fcd39d9f3610ad41bb90194d0a"
integrity sha512-6/SlHkDOBLyQSJ1j1Ghs82OIUXpKWlR0hCsw0XrLSQhuUPuCSmLQ1QPH98vpnQxMUQM2/gfAkUEWsupVpd9JGw==
d3-contour@4:
version "4.0.0"
resolved "https://registry.yarnpkg.com/d3-contour/-/d3-contour-4.0.0.tgz#5a1337c6da0d528479acdb5db54bc81a0ff2ec6b"
integrity sha512-7aQo0QHUTu/Ko3cP9YK9yUTxtoDEiDGwnBHyLxG5M4vqlBkO/uixMRele3nfsfj6UXOcuReVpVXzAboGraYIJw==
dependencies:
d3-array "^3.2.0"
d3-delaunay@6:
version "6.0.2"
resolved "https://registry.yarnpkg.com/d3-delaunay/-/d3-delaunay-6.0.2.tgz#7fd3717ad0eade2fc9939f4260acfb503f984e92"
integrity sha512-IMLNldruDQScrcfT+MWnazhHbDJhcRJyOEBAJfwQnHle1RPh6WDuLvxNArUju2VSMSUuKlY5BGHRJ2cYyoFLQQ==
dependencies:
delaunator "5"
"d3-dispatch@1 - 3", d3-dispatch@3:
version "3.0.1"
resolved "https://registry.yarnpkg.com/d3-dispatch/-/d3-dispatch-3.0.1.tgz#5fc75284e9c2375c36c839411a0cf550cbfc4d5e"
integrity sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==
"d3-drag@2 - 3", d3-drag@3:
version "3.0.0"
resolved "https://registry.yarnpkg.com/d3-drag/-/d3-drag-3.0.0.tgz#994aae9cd23c719f53b5e10e3a0a6108c69607ba"
integrity sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==
dependencies:
d3-dispatch "1 - 3"
d3-selection "3"
"d3-dsv@1 - 3", d3-dsv@3:
version "3.0.1"
resolved "https://registry.yarnpkg.com/d3-dsv/-/d3-dsv-3.0.1.tgz#c63af978f4d6a0d084a52a673922be2160789b73"
integrity sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==
dependencies:
commander "7"
iconv-lite "0.6"
rw "1"
"d3-ease@1 - 3", d3-ease@3:
version "3.0.1"
resolved "https://registry.yarnpkg.com/d3-ease/-/d3-ease-3.0.1.tgz#9658ac38a2140d59d346160f1f6c30fda0bd12f4"
integrity sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==
d3-fetch@3:
version "3.0.1"
resolved "https://registry.yarnpkg.com/d3-fetch/-/d3-fetch-3.0.1.tgz#83141bff9856a0edb5e38de89cdcfe63d0a60a22"
integrity sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==
dependencies:
d3-dsv "1 - 3"
d3-force@3:
version "3.0.0"
resolved "https://registry.yarnpkg.com/d3-force/-/d3-force-3.0.0.tgz#3e2ba1a61e70888fe3d9194e30d6d14eece155c4"
integrity sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==
dependencies:
d3-dispatch "1 - 3"
d3-quadtree "1 - 3"
d3-timer "1 - 3"
"d3-format@1 - 3", d3-format@3:
version "3.0.1"
resolved "https://registry.yarnpkg.com/d3-format/-/d3-format-3.0.1.tgz#e41b81b2ab79277141ec1404aa5d05001da64084"
integrity sha512-hdL7+HBIohpgfolhBxr1KX47VMD6+vVD/oEFrxk5yhmzV2prk99EkFKYpXuhVkFpTgHdJ6/4bYcjdLPPXV4tIA==
d3-geo@3:
version "3.0.1"
resolved "https://registry.yarnpkg.com/d3-geo/-/d3-geo-3.0.1.tgz#4f92362fd8685d93e3b1fae0fd97dc8980b1ed7e"
integrity sha512-Wt23xBych5tSy9IYAM1FR2rWIBFWa52B/oF/GYe5zbdHrg08FU8+BuI6X4PvTwPDdqdAdq04fuWJpELtsaEjeA==
dependencies:
d3-array "2.5.0 - 3"
d3-hierarchy@3:
version "3.0.1"
resolved "https://registry.yarnpkg.com/d3-hierarchy/-/d3-hierarchy-3.0.1.tgz#0365342d54972e38ca05e9143e0ab1c60846b3b5"
integrity sha512-RlLTaofEoOrMK1JoXYIGhKTkJFI/6rFrYPgxy6QlZo2BcVc4HGTqEU0rPpzuMq5T/5XcMtAzv1XiLA3zRTfygw==
"d3-interpolate@1 - 3", "d3-interpolate@1.2.0 - 3", d3-interpolate@3:
version "3.0.1"
resolved "https://registry.yarnpkg.com/d3-interpolate/-/d3-interpolate-3.0.1.tgz#3c47aa5b32c5b3dfb56ef3fd4342078a632b400d"
integrity sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==
dependencies:
d3-color "1 - 3"
"d3-path@1 - 3", d3-path@3:
version "3.0.1"
resolved "https://registry.yarnpkg.com/d3-path/-/d3-path-3.0.1.tgz#f09dec0aaffd770b7995f1a399152bf93052321e"
integrity sha512-gq6gZom9AFZby0YLduxT1qmrp4xpBA1YZr19OI717WIdKE2OM5ETq5qrHLb301IgxhLwcuxvGZVLeeWc/k1I6w==
d3-polygon@3:
version "3.0.1"
resolved "https://registry.yarnpkg.com/d3-polygon/-/d3-polygon-3.0.1.tgz#0b45d3dd1c48a29c8e057e6135693ec80bf16398"
integrity sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==
"d3-quadtree@1 - 3", d3-quadtree@3:
version "3.0.1"
resolved "https://registry.yarnpkg.com/d3-quadtree/-/d3-quadtree-3.0.1.tgz#6dca3e8be2b393c9a9d514dabbd80a92deef1a4f"
integrity sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==
d3-random@3:
version "3.0.1"
resolved "https://registry.yarnpkg.com/d3-random/-/d3-random-3.0.1.tgz#d4926378d333d9c0bfd1e6fa0194d30aebaa20f4"
integrity sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==
d3-scale-chromatic@3:
version "3.0.0"
resolved "https://registry.yarnpkg.com/d3-scale-chromatic/-/d3-scale-chromatic-3.0.0.tgz#15b4ceb8ca2bb0dcb6d1a641ee03d59c3b62376a"
integrity sha512-Lx9thtxAKrO2Pq6OO2Ua474opeziKr279P/TKZsMAhYyNDD3EnCffdbgeSYN5O7m2ByQsxtuP2CSDczNUIZ22g==
dependencies:
d3-color "1 - 3"
d3-interpolate "1 - 3"
d3-scale@4:
version "4.0.0"
resolved "https://registry.yarnpkg.com/d3-scale/-/d3-scale-4.0.0.tgz#294377ea1d7e5a31509ee648b98d7916ac0b34e3"
integrity sha512-foHQYKpWQcyndH1CGoHdUC4PECxTxonzwwBXGT8qu+Drb1FIc6ON6dG2P5f4hRRMkLiIKeWK7iFtdznDUrnuPQ==
dependencies:
d3-array "2.10.0 - 3"
d3-format "1 - 3"
d3-interpolate "1.2.0 - 3"
d3-time "2.1.1 - 3"
d3-time-format "2 - 4"
"d3-selection@2 - 3", d3-selection@3:
version "3.0.0"
resolved "https://registry.yarnpkg.com/d3-selection/-/d3-selection-3.0.0.tgz#c25338207efa72cc5b9bd1458a1a41901f1e1b31"
integrity sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==
d3-shape@3:
version "3.0.1"
resolved "https://registry.yarnpkg.com/d3-shape/-/d3-shape-3.0.1.tgz#9ccdfb28fd9b0d12f2d8aec234cd5c4a9ea27931"
integrity sha512-HNZNEQoDhuCrDWEc/BMbF/hKtzMZVoe64TvisFLDp2Iyj0UShB/E6/lBsLlJTfBMbYgftHj90cXJ0SEitlE6Xw==
dependencies:
d3-path "1 - 3"
"d3-time-format@2 - 4", d3-time-format@4:
version "4.0.0"
resolved "https://registry.yarnpkg.com/d3-time-format/-/d3-time-format-4.0.0.tgz#930ded86a9de761702344760d8a25753467f28b7"
integrity sha512-nzaCwlj+ZVBIlFuVOT1RmU+6xb/7D5IcnhHzHQcBgS/aTa5K9fWZNN5LCXA27LgF5WxoSNJqKBbLcGMtM6Ca6A==
dependencies:
d3-time "1 - 3"
"d3-time@1 - 3", "d3-time@2.1.1 - 3", d3-time@3:
version "3.0.0"
resolved "https://registry.yarnpkg.com/d3-time/-/d3-time-3.0.0.tgz#65972cb98ae2d4954ef5c932e8704061335d4975"
integrity sha512-zmV3lRnlaLI08y9IMRXSDshQb5Nj77smnfpnd2LrBa/2K281Jijactokeak14QacHs/kKq0AQ121nidNYlarbQ==
dependencies:
d3-array "2 - 3"
"d3-timer@1 - 3", d3-timer@3:
version "3.0.1"
resolved "https://registry.yarnpkg.com/d3-timer/-/d3-timer-3.0.1.tgz#6284d2a2708285b1abb7e201eda4380af35e63b0"
integrity sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==
"d3-transition@2 - 3", d3-transition@3:
version "3.0.1"
resolved "https://registry.yarnpkg.com/d3-transition/-/d3-transition-3.0.1.tgz#6869fdde1448868077fdd5989200cb61b2a1645f"
integrity sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==
dependencies:
d3-color "1 - 3"
d3-dispatch "1 - 3"
d3-ease "1 - 3"
d3-interpolate "1 - 3"
d3-timer "1 - 3"
d3-zoom@3:
version "3.0.0"
resolved "https://registry.yarnpkg.com/d3-zoom/-/d3-zoom-3.0.0.tgz#d13f4165c73217ffeaa54295cd6969b3e7aee8f3"
integrity sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==
dependencies:
d3-dispatch "1 - 3"
d3-drag "2 - 3"
d3-interpolate "1 - 3"
d3-selection "2 - 3"
d3-transition "2 - 3"
d3@^7.9.0:
version "7.9.0"
resolved "https://registry.yarnpkg.com/d3/-/d3-7.9.0.tgz#579e7acb3d749caf8860bd1741ae8d371070cd5d"
integrity sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA==
dependencies:
d3-array "3"
d3-axis "3"
d3-brush "3"
d3-chord "3"
d3-color "3"
d3-contour "4"
d3-delaunay "6"
d3-dispatch "3"
d3-drag "3"
d3-dsv "3"
d3-ease "3"
d3-fetch "3"
d3-force "3"
d3-format "3"
d3-geo "3"
d3-hierarchy "3"
d3-interpolate "3"
d3-path "3"
d3-polygon "3"
d3-quadtree "3"
d3-random "3"
d3-scale "4"
d3-scale-chromatic "3"
d3-selection "3"
d3-shape "3"
d3-time "3"
d3-time-format "4"
d3-timer "3"
d3-transition "3"
d3-zoom "3"
datatables.net-bs5@^2.1.8:
version "2.1.8"
resolved "https://registry.yarnpkg.com/datatables.net-bs5/-/datatables.net-bs5-2.1.8.tgz#860717c4ee85ecb84812ba9a73fb1204aa2a68b6"
@@ -285,13 +32,6 @@ datatables.net@2.1.8:
dependencies:
jquery ">=1.7"
delaunator@5:
version "5.0.0"
resolved "https://registry.yarnpkg.com/delaunator/-/delaunator-5.0.0.tgz#60f052b28bd91c9b4566850ebf7756efe821d81b"
integrity sha512-AyLvtyJdbv/U1GkiS6gUUzclRoAY4Gs75qkMygJJhU75LW4DNuSF2RMzpxs9jw9Oz1BobHjTdkG3zdP55VxAqw==
dependencies:
robust-predicates "^3.0.0"
desandro-matches-selector@^2.0.0:
version "2.0.2"
resolved "https://registry.yarnpkg.com/desandro-matches-selector/-/desandro-matches-selector-2.0.2.tgz#717beed4dc13e7d8f3762f707a6d58a6774218e1"
@@ -322,18 +62,6 @@ get-size@^2.0.2:
resolved "https://registry.yarnpkg.com/get-size/-/get-size-2.0.3.tgz#54a1d0256b20ea7ac646516756202769941ad2ef"
integrity sha512-lXNzT/h/dTjTxRbm9BXb+SGxxzkm97h/PCIKtlN/CBCxxmkkIVV21udumMS93MuVTDX583gqc94v3RjuHmI+2Q==
iconv-lite@0.6:
version "0.6.3"
resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501"
integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==
dependencies:
safer-buffer ">= 2.1.2 < 3.0.0"
"internmap@1 - 2":
version "2.0.1"
resolved "https://registry.yarnpkg.com/internmap/-/internmap-2.0.1.tgz#33d0fa016185397549fb1a14ea3dbe5a2949d1cd"
integrity sha512-Ujwccrj9FkGqjbY3iVoxD1VV+KdZZeENx0rphrtzmRXbFvkFO88L80BL/zeSIguX/7T+y8k04xqtgWgS5vxwxw==
jquery@>=1.7, jquery@^3.7.1:
version "3.7.1"
resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.7.1.tgz#083ef98927c9a6a74d05a6af02806566d16274de"
@@ -361,21 +89,6 @@ popper.js@^1.16.1:
resolved "https://registry.yarnpkg.com/popper.js/-/popper.js-1.16.1.tgz#2a223cb3dc7b6213d740e40372be40de43e65b1b"
integrity sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==
robust-predicates@^3.0.0:
version "3.0.1"
resolved "https://registry.yarnpkg.com/robust-predicates/-/robust-predicates-3.0.1.tgz#ecde075044f7f30118682bd9fb3f123109577f9a"
integrity sha512-ndEIpszUHiG4HtDsQLeIuMvRsDnn8c8rYStabochtUeCvfuvNptb5TUbVD68LRAILPX7p9nqQGh4xJgn3EHS/g==
rw@1:
version "1.3.3"
resolved "https://registry.yarnpkg.com/rw/-/rw-1.3.3.tgz#3f862dfa91ab766b14885ef4d01124bfda074fb4"
integrity sha1-P4Yt+pGrdmsUiF700BEkv9oHT7Q=
"safer-buffer@>= 2.1.2 < 3.0.0":
version "2.1.2"
resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
yarn@^1.22.22:
version "1.22.22"
resolved "https://registry.yarnpkg.com/yarn/-/yarn-1.22.22.tgz#ac34549e6aa8e7ead463a7407e1c7390f61a6610"