Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/nutrinoweb/controllers/eating.py
diff options
context:
space:
mode:
Diffstat (limited to 'nutrinoweb/controllers/eating.py')
-rw-r--r--nutrinoweb/controllers/eating.py278
1 files changed, 166 insertions, 112 deletions
diff --git a/nutrinoweb/controllers/eating.py b/nutrinoweb/controllers/eating.py
index b8a9b31..a950852 100644
--- a/nutrinoweb/controllers/eating.py
+++ b/nutrinoweb/controllers/eating.py
@@ -12,15 +12,17 @@ import Avatar
from flask import redirect, url_for
-IM_PATH = ['../static/images/journal/jauge-energie.png']
-
@app.route('/eating', methods=['GET', 'POST'])
def eating():
- database_manager.init_db('nutrition')
- database_manager.load_inputfilenutrition()
+ #database_manager.init_db('nutrition')
+ #database_manager.load_inputfilenutrition()
+ #database_manager.init_db3()
+
+ #init
entries = database_manager.entries()
- IM_PATH = None
+ _aliments = database_manager.aliments()
path = '../../static/images/journal/backgroundeating.png'
+ pathi = '../../static/images/journal/default.png'
_entry = None
_result = None
_text = 'Hi, how can I help you?'
@@ -28,60 +30,148 @@ def eating():
_visibilitybutton = 'hidden'
_visibilitytextbox2 = 'hidden'
_link = 'hidden'
- _scenario = 'rack'
- content = [ ]
- position = [70, 0]
+ #4 different scenarios: fruits, meatcounter, rack and fridge
+ _scenario = None
+ name = None
+ progressbar = [ ]
+ tablealiment = None
+
+ i = Avatar.Character(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, None)
+ i.load_status()
+
+ #prepare position for the sun
+ position = i.Position
+ positionX = position[0]
+ positionY = position[1]
+
+ #calculate time
+ daytime = "am"
+ hours = int(round(i.Time//60)) + 8
+ minutes = int((i.Time % 60))
+ if (minutes == 0):
+ minutes = "00"
+ else:
+ minutes = str(minutes)
+ if (hours > 11):
+ daytime = "pm"
+ if (hours > 12):
+ hours = hours - 12
+ time = str(hours) + ":" + minutes + " " + daytime
+
+ #Sun should not move, so start- and endposition have the same coordinates
+ positionSun = {
+ 'positionX': positionX,
+ 'positionstartX': positionX,
+ 'positionY': positionY,
+ 'positionstartY': positionY,
+ 'timeString': time
+ }
+
# POST
if request.method == 'POST':
- _aliments = database_manager.aliments()
if 'send' in request.form:
+ #collect information about the scenario, the backgroundimage and the text in the bubble
_scenario = request.form['send']
path = '../../static/images/journal/background' + _scenario + '.png'
- _text = 'What are you searching for?'
+ _text = 'Hi, how can I help you? What are you searching for?'
_visibilitytextbox = 'visible'
+
+ #gives all aliments who should appears in the stand
+ tablealiment = database_manager.return_tablealiments(_scenario)
+
elif 'cooking' in request.form:
+
+ #this part calculates the progress for each aliment the user has choosen
for aliment in _aliments:
- _result = calculateDimension(aliment, entries)
- pathi = '../../static/images/journal/aliments/' + aliment['title'] + '.png'
- cont = {
+ if aliment['title'] != "":
+ waterstart = i.Water
+ energiestart = i.Energie
+ vitaminestart = i.Vit_total
+ constructionstart = i.Construction
+ calculateDimension(aliment, entries, i)
+ pathi = '../../static/images/journal/aliments/' + aliment['title'] + '.png'
+
+ #contents for main.html
+ contents = {
+ 'title': _(aliment['title']),
+ 'water': calculateHeight(i.Water),
+ 'energie': calculateHeight(i.Energie),
+ 'vitamine': calculateHeight(i.Vit_total),
+ 'construction': calculateHeight(i.Construction),
+ 'waterstart': calculateHeight(waterstart),
+ 'energiestart': calculateHeight(energiestart),
+ 'vitaminestart': calculateHeight(vitaminestart),
+ 'constructionstart': calculateHeight(constructionstart),
+ 'pathimg': pathi,
+ }
+ progressbar.append(contents)
+
+ else:
+ #contents for main.html
+ contents = {
'title': _(aliment['title']),
- 'image': IM_PATH,
- 'water': _result[0],
- 'energie': _result[1],
- 'vitamine': _result[2],
- 'construction': _result[3],
- 'waterstart': _result[4],
- 'energiestart': _result[5],
- 'vitaminestart': _result[6],
- 'constructionstart': _result[7],
+ 'water': calculateHeight(i.Water),
+ 'energie': calculateHeight(i.Energie),
+ 'vitamine': calculateHeight(i.Vit_total),
+ 'construction': calculateHeight(i.Construction),
+ 'waterstart': calculateHeight(i.Water),
+ 'energiestart': calculateHeight(i.Energie),
+ 'vitaminestart': calculateHeight(i.Vit_total),
+ 'constructionstart': calculateHeight(i.Construction),
'pathimg': pathi,
}
- content.append(cont)
- _content = { 'content': content, 'position': position}
+ progressbar.append(contents)
+
+ #log aliments
+ database_manager.write_log(_aliments, 'a')
+
+ #save status
+ i.save_status()
+
+ _content = { 'progressbar': progressbar, 'positionSun': positionSun }
# render result
return render('nutrinoweb/main.html', **_content)
+
elif 'askforaliment' in request.form:
_scenario = request.form['info1']
- path = '../../static/images/journal/background' + _scenario + '.png'
- _entry = database_manager.show_entry('nutrition')
+ path = '../../static/images/journal/background' + request.form['info1'] + '.png'
+ tablealiment = database_manager.return_tablealiments(_scenario)
+ name = request.form['title']
+ _entry = database_manager.show_entry('nutrition', name)
if (_entry != None):
if _entry[23] == _scenario or _entry[23] == None:
_text = 'How much do you want?'
_visibilitytextbox2 = 'visible'
else:
_text = 'Sorry, I do not have ' + request.form['title'] + '. Maybe you should ask somewhere else!'
+ _visibilitytextbox = 'visible'
else:
_text = 'Sorry, I do not have ' + request.form['title'] + '. Do you want something else?'
_visibilitytextbox = 'visible'
_link = 'visible'
+
+ elif 'standaliment' in request.form:
+ _scenario = request.form['info1']
+ path = '../../static/images/journal/background' + _scenario + '.png'
+ tablealiment = database_manager.return_tablealiments(_scenario)
+ name = request.form['standaliment']
+ _entry = database_manager.show_entry('nutrition', name)
+ if (_entry != None):
+ _text = 'How much do you want?'
+ _visibilitytextbox2 = 'visible'
+ else:
+ pass
+
elif 'orderaliment' in request.form:
- _scenario = request.form['info3']
+ _scenario = request.form['info1']
path = '../../static/images/journal/background' + _scenario + '.png'
+ tablealiment = database_manager.return_tablealiments(_scenario)
_text = 'What else do you want?'
_visibilitytextbox = 'visible'
pathtoimage = '../static/images/journal/aliments/' + request.form['info2'] + '.png'
database_manager.add_entry_tolist(request.form['info2'], pathtoimage, request.form['quantity'], request.form['unit'])
_aliments = database_manager.aliments()
+
else:
pass
# GET
@@ -91,7 +181,10 @@ def eating():
database_manager.init_db3()
_aliments = database_manager.aliments()
- #
+ #save status
+ i.save_status()
+
+ #content for eating.html
_content = {
'title': _('What do you want to eat?'),
'entries': entries,
@@ -104,114 +197,75 @@ def eating():
'visibilitybutton': _visibilitybutton,
'aliments': _aliments,
'scenario': _scenario,
- 'linkvisiblity': _link
+ 'linkvisiblity': _link,
+ 'tablealiment': tablealiment,
+ 'name': name,
}
# render result
return render('nutrinoweb/eating.html', **_content)
-
-def calculateDimension(result, entries):
+def calculateDimension(result, entries, i):
water = None
energie = None
vitamine = None
construction = None
vitstart = None
- instance = Avatar.Character()
- eng = instance.load_status()
+ factor = 1
if result != None and entries != None:
- eng = instance.load_status()
for entry in entries:
if result['title'].upper() in entry['title']:
- factor = result['quantity'] / 100.0
+ #calculate the factor (in the database every value based on 100ml/g)
+ #serving means a dish of something, each value is determined in the database, f.e. a applepiece has about 50g
+ if result['unit'] == 'serving':
+ fac = result['quantity'] * float(entry['serving'])
+ factor = fac / 100.0
+ else:
+ factor = result['quantity'] / 100.0
+
+ #calculate the value in ml/g multiplie with the statusvalue
+
#part water
- _water = controllValue(((factor*calculateWater(float(entry['water']))) / 2) + float(eng['water']))
- water = calculateHeight(_water)
+ i.Water = controllValue(((factor*calculateWater(float(entry['water']))) / 2) + i.Water)
- #part energie
- _energie = controllValue((factor*calculateEnergie(float(entry['energie']))) + float(eng['energie']))
- energie = calculateHeight(_energie)
+ #part energie
+ i.Energie = controllValue((factor*calculateEnergie(float(entry['energie']))) + i.Energie)
#part vitamine
- _vitamine = calculateVitamine(factor, entry, eng)
- vitamine = calculateHeight(_vitamine[0])
+ i.Vit_total = calculateVitamine(factor, entry, i)
#part construction
- _construction = controllValue((factor*calculateConstruction(float(entry['protein']))) + float(eng['construction']))
- construction = calculateHeight(_construction)
-
- status = {
- "water": _water,
- "energie": _energie,
- "calcium": _vitamine[1],
- "iron" : _vitamine[2],
- "magnesium": _vitamine[3],
- "phosphorus": _vitamine[4],
- "potassium": _vitamine[5],
- "sodium": _vitamine[6],
- "zinc": _vitamine[7],
- "copper": _vitamine[8],
- "vit_c": _vitamine[9],
- "thiamin": _vitamine[10],
- "riboflavin": _vitamine[11],
- "niacin": _vitamine[12],
- "panto_acid": _vitamine[13],
- "vit_b6": _vitamine[14],
- "folate_tot": _vitamine[15],
- "vit_b12": _vitamine[16],
- "vit_a": _vitamine[17],
- "vit_e": _vitamine[18],
- "vit_d": _vitamine[19],
- "vit_total": _vitamine[0],
- "construction": _construction
- }
-
- instance.save_status(status)
+ i.Construction = controllValue((factor*calculateConstruction(float(entry['protein']))) + i.Construction)
+
else:
pass
- else:
- #part water
- water = 100.0 - float(eng['water'])
-
- #part energie
- energie = 100.0 - float(eng['energie'])
-
- #part vitamine
- vitamine = 100.0 - float(eng['vit_total'])
-
- #part construction
- construction = 100.0 - float(eng['construction'])
-
- _result = [water, energie, vitamine, construction, calculateHeight(float(eng['water'])), calculateHeight(float(eng['energie'])), calculateHeight(float(eng['vit_total'])), calculateHeight(float(eng['construction']))]
- return _result
def calculateEnergie(energie):
height = energie/4.0
return height
-def calculateVitamine(f, entry, status):
- calcium = controllValue(float(status['calcium']) + (f*(float(entry['calcium']) / 9.0)))
- iron = controllValue(float(status['iron']) + (f*(float(entry['iron']) / 0.125)))
- magnesium = controllValue(float(status['magnesium']) + (f*(float(entry['magnesium']) / 2.1)))
- phosphorus = controllValue(float(status['phosphorus']) + (f*(float(entry['phosphorus']) / 10)))
- potassium = controllValue(float(status['potassium']) + (f*(float(entry['potassium']) / 15.5)))
- sodium = controllValue(float(status['sodium']) + (f*(float(entry['sodium']) / 4.85)))
- zinc = controllValue(float(status['zinc']) + (f*(float(entry['zinc']) / 0.08)))
- copper = controllValue(float(status['copper']) + (f*(float(entry['copper']) / 0.0115)))
- vit_c = controllValue(float(status['vit_c']) + (f*(float(entry['vit_c']) / 0.85)))
- thiamin = controllValue(float(status['thiamin']) + (f*(float(entry['thiamin']) / 0.012)))
- riboflavin = controllValue(float(status['riboflavin']) + (f*(float(entry['riboflavin']) / 0.011)))
- niacin = controllValue(float(status['niacin']) + (f*(float(entry['niacin']) / 0.13)))
- panto_acid = controllValue(float(status['panto_acid']) + (f*(float(entry['panto_acid']) / 0.05)))
- vit_b6 = controllValue(float(status['vit_b6']) + (f*(float(entry['vit_b6']) / 0.0085)))
- folate_tot = controllValue(float(status['folate_tot']) + (f*(float(entry['folate_tot']) / 3.5)))
- vit_b12 = controllValue(float(status['vit_b12']) + (f*(float(entry['vit_b12']) / 0.019)))
- vit_a = controllValue(float(status['vit_a']) + (f*(float(entry['vit_a']) / 0.11)))
- vit_e = controllValue(float(status['vit_e']) + (f*(float(entry['vit_e']) / 0.05)))
- vit_d = controllValue(float(status['vit_d']) + (f*(float(entry['vit_d']) / 0.315)))
-
- height = (calcium + iron + magnesium + phosphorus + potassium + sodium + zinc + copper + vit_c + thiamin + riboflavin + niacin + panto_acid + vit_b6 + folate_tot + vit_b12 + vit_a + vit_e + vit_d)/19.0
- height = [height, calcium, iron, magnesium, phosphorus, potassium, sodium, zinc, copper, vit_c, thiamin, riboflavin, niacin, panto_acid, vit_b6, folate_tot, vit_b12, vit_a, vit_e, vit_d]
+def calculateVitamine(f, entry, i):
+ i.Calcium = controllValue(i.Calcium + (f*(float(entry['calcium']) / 9.0)))
+ i.Iron = controllValue(i.Iron + (f*(float(entry['iron']) / 0.125)))
+ i.Magnesium = controllValue(i.Magnesium + (f*(float(entry['magnesium']) / 2.1)))
+ i.Phosphorus = controllValue(i.Phosphorus + (f*(float(entry['phosphorus']) / 10)))
+ i.Potassium = controllValue(i.Potassium + (f*(float(entry['potassium']) / 15.5)))
+ i.Sodium = controllValue(i.Sodium + (f*(float(entry['sodium']) / 4.85)))
+ i.Zinc = controllValue(i.Zinc + (f*(float(entry['zinc']) / 0.08)))
+ i.Copper = controllValue(i.Copper + (f*(float(entry['copper']) / 0.0115)))
+ i.Vit_c = controllValue(i.Vit_c + (f*(float(entry['vit_c']) / 0.85)))
+ i.Thiamin = controllValue(i.Thiamin + (f*(float(entry['thiamin']) / 0.012)))
+ i.Riboflavin = controllValue(i.Riboflavin + (f*(float(entry['riboflavin']) / 0.011)))
+ i.Niacin = controllValue(i.Niacin + (f*(float(entry['niacin']) / 0.13)))
+ i.Panto_acid = controllValue(i.Panto_acid + (f*(float(entry['panto_acid']) / 0.05)))
+ i.Vit_b6 = controllValue(i.Vit_b6 + (f*(float(entry['vit_b6']) / 0.0085)))
+ i.Folate_tot = controllValue(i.Folate_tot + (f*(float(entry['folate_tot']) / 3.5)))
+ i.Vit_b12 = controllValue(i.Vit_b12 + (f*(float(entry['vit_b12']) / 0.019)))
+ i.Vit_a = controllValue(i.Vit_a + (f*(float(entry['vit_a']) / 0.11)))
+ i.Vit_e = controllValue(i.Vit_e + (f*(float(entry['vit_e']) / 0.05)))
+ i.Vit_d = controllValue(i.Vit_d + (f*(float(entry['vit_d']) / 0.315)))
+
+ height = (i.Calcium + i.Iron + i.Magnesium + i.Phosphorus + i.Potassium + i.Sodium + i.Zinc + i.Copper + i.Vit_c + i.Thiamin + i.Riboflavin + i.Niacin + i.Panto_acid + i.Vit_b6 + i.Folate_tot + i.Vit_b12 + i.Vit_a + i.Vit_e + i.Vit_d) / 19.0
return height
def controllValue(value):
@@ -221,11 +275,11 @@ def controllValue(value):
def calculateWater(water):
- height = water/17.5
+ height = water/1.5
return height
def calculateConstruction(construction):
- height = construction/0.215 #daily value 0.9g/kg weight, a child of 35kg needs 21.5g
+ height = construction/0.252 #daily value 0.9g/kg weight, a child of 35kg needs 21.5g
return height
def calculateHeight(height):