DrDomedag commited on
Commit
15b54ea
·
1 Parent(s): 772b736

Basic functionality in place.

Browse files
pages/dish_planning.py CHANGED
@@ -6,35 +6,64 @@ from utils.variables import *
6
  st.title("Dish planning")
7
  st.write("Welcome to the dish planning page!")
8
 
9
- for u in user_list.keys():
10
- for i in user_list[u].keys():
11
- st.write(f"u: {u}, i: {i}")
12
- for i in user_list[u][i]:
13
- st.write(i)
14
-
15
- st.write("Dish ingredients:")
16
- for i in ingredient_list:
17
- allergic_people_count = 0
18
- for u in user_list.values():
19
- if i in u.keys():
20
- allergic_people_count += 1
21
- else:
22
- found = False
23
- for s in synonyms[i]:
24
- if found:
25
- break
26
- else:
27
- if s in u.keys():
28
- allergic_people_count += 1
29
- found = True
30
  break
 
 
 
 
 
31
 
32
- if allergic_people_count > 0:
33
- st.write(f"{i} - {allergic_people_count} are sensitive to this ingredient")
34
- else:
35
- st.write(f"{i}")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
36
 
 
 
 
 
 
37
 
 
38
 
39
 
40
  # Text input for the search query
 
6
  st.title("Dish planning")
7
  st.write("Welcome to the dish planning page!")
8
 
9
+
10
+ #for u in user_list.keys():
11
+ # for i in user_list[u].keys():
12
+ # st.write(f"user id: {u}, i: {i}")
13
+ # for i in user_list[u][i]:
14
+ # st.write(i)
15
+
16
+
17
+ col1, col2 = st.columns(2)
18
+ with col1:
19
+ st.header("Ingredients:")
20
+ for i in ingredient_list:
21
+ allergic_people_count = 0
22
+ for u in user_list.values():
23
+ if i in u.keys():
24
+ allergic_people_count += 1
25
+ else:
26
+ found = False
27
+ for s in synonyms[i]:
28
+ if found:
 
29
  break
30
+ else:
31
+ if s in u.keys():
32
+ allergic_people_count += 1
33
+ found = True
34
+ break
35
 
36
+ if allergic_people_count > 0:
37
+ st.write(f"{i} - {allergic_people_count} are sensitive to this ingredient")
38
+ else:
39
+ st.write(f"{i}")
40
+
41
+ with col2:
42
+ st.header("Aggregate:")
43
+ user_pools = defaultdict(lambda: False)
44
+
45
+ # Summary of allergies
46
+ for user_id in user_list.keys():
47
+ relevant_allergy_list = ""
48
+ for ingredient in ingredient_list:
49
+ if ingredient in user_list[user_id].keys():
50
+ if relevant_allergy_list == "":
51
+ relevant_allergy_list = relevant_allergy_list + ingredient
52
+ else:
53
+ relevant_allergy_list = relevant_allergy_list + ", " + ingredient
54
+ if not relevant_allergy_list == "":
55
+ if not user_pools[relevant_allergy_list]:
56
+ user_pools[relevant_allergy_list] = 1
57
+ else:
58
+ user_pools[relevant_allergy_list] += 1
59
 
60
+ total_affected_guests = 0
61
+ for pool in user_pools.keys():
62
+ #relevant_allergies = pool.split(",")
63
+ st.write(f"{user_pools[pool]} users cannot eat {pool}")
64
+ total_affected_guests += user_pools[pool]
65
 
66
+ st.write(f"In total, {total_affected_guests} are unable to eat this dish.")
67
 
68
 
69
  # Text input for the search query
pages/user_0_event_participation.py ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ from utils.allergens import *
3
+ from utils.variables import *
4
+ from utils.event_participation import *
5
+
6
+
7
+ user_id = 0
8
+
9
+ show_event_participation(user_id)
pages/user_3_profile.py CHANGED
@@ -10,3 +10,4 @@ st.write("You can edit your profile below.")
10
 
11
  create_allergy_input(3)
12
 
 
 
10
 
11
  create_allergy_input(3)
12
 
13
+
utils/allergy_input.py CHANGED
@@ -1,5 +1,5 @@
1
  import streamlit as st
2
- from utils.allergens import * #Vill uppdatera denna till en dict med allergenen och sen ett värde mellan 0-3? #Hur hantera tillagad?
3
  from utils.variables import *
4
 
5
 
@@ -13,8 +13,17 @@ sensitivity_options = {
13
  "Slightly sensitive": "Can eat food that has touched this ingredient"
14
  }
15
 
16
- def create_allergy_input(user_id, st=st):
17
- st.write(user_id)
 
 
 
 
 
 
 
 
 
18
  st.write("Your allergies:")
19
  for i in user_list[user_id].keys():
20
  st.write(f"{i}, allergy degree: {user_list[user_id][i][0]}, can eat if cooked: {user_list[user_id][i][1]}")
@@ -33,8 +42,8 @@ def create_allergy_input(user_id, st=st):
33
  import streamlit as st
34
 
35
  # Sample data
36
- #filtered_items = ["apple", "banana", "orange", "pear"]
37
- #user_allergen_list = ["apple", "pear"] # Example of items in the user's allergen list
38
 
39
  # Sensitivity options
40
  sensitivity_options = {
@@ -50,64 +59,62 @@ def create_allergy_input(user_id, st=st):
50
  none = []
51
 
52
  # Initialize session state to store titles and selections for each expander
53
- if "expander_titles" not in st.session_state:
54
- st.session_state.expander_titles = {item: item.capitalize() for item in filtered_items}
55
- if "expander_selections" not in st.session_state:
56
- st.session_state.expander_selections = {}
57
- if "expanded_state" not in st.session_state:
58
- st.session_state.expanded_state = {item: True for item in filtered_items} # Keep all expanders open initially
59
 
60
  # Function to update expander title based on selection
61
  def update_title(item):
62
- selections = st.session_state.get(f"{item}_radio", "None")
63
  selection = "None"
64
  if selections == "Extremely sensitive - " + sensitivity_options["Extremely sensitive"]:
65
  selection = "Extremely sensitive🛑🚫"
66
- user_list[user_id][item] = (3, st.session_state[f"{item}_checkbox"])
67
  elif selections == "Sensitive - " + sensitivity_options["Sensitive"]:
68
  selection = "Sensitive‼️"
69
- user_list[user_id][item] = (2, st.session_state[f"{item}_checkbox"])
70
  elif selections == "Slightly sensitive - " + sensitivity_options["Slightly sensitive"]:
71
  selection = "Slightly sensitive❗"
72
- user_list[user_id][item] = (1, st.session_state[f"{item}_checkbox"])
73
  else:
74
  user_list[user_id].pop(item)
75
 
76
-
77
  if selection != "None":
78
- st.session_state.expander_titles[item] = f"{item.capitalize()} - {selection}"
79
  else:
80
- st.session_state.expander_titles[item] = item.capitalize() # Reset to default if "None" is selected
81
 
82
  """option = selection.split(" - ")
83
  selection = option[1]"""
84
 
85
  # Keep the expander open
86
- st.session_state.expanded_state[item] = True
87
-
88
 
89
  # Loop through each item
90
  for item in filtered_items:
91
  # Check if the item is in the user's allergen list
92
- #if item in user_allergen_list:
93
- #key=f"{item}_radio"
94
- title = st.session_state.expander_titles[item]
95
  with st.expander(title):
96
  # Radio buttons for sensitivity level with a "None" option
97
  sensitivity = st.radio(
98
  f"Sensitivity level for {item.capitalize()}",
99
  options=["None"] + [f"{level} - {description}" for level, description in sensitivity_options.items()],
100
- key=f"{item}_radio",
101
  on_change=lambda item=item: update_title(item) # Call update_title with the item argument
102
 
103
  )
104
  # Store the current selection in session_state for later access
105
- st.session_state.expander_selections[item] = sensitivity
106
 
107
  # Checkbox to indicate if they can eat the ingredient if it's cooked
108
  can_eat_if_cooked = st.checkbox(
109
  "Can eat the ingredient if it is cooked",
110
- key=f"{item}_checkbox"
111
  )
112
 
113
  """else:
@@ -118,19 +125,19 @@ def create_allergy_input(user_id, st=st):
118
  options=["None"] + [f"{level} - {description}" for level, description in sensitivity_options.items()],
119
  key=f"{item}_radio"
120
  )
121
-
122
  # Checkbox to indicate if they can eat the ingredient if it's cooked
123
  can_eat_if_cooked = st.checkbox(
124
  "Can eat the ingredient if it is cooked",
125
  key=f"{item}_checkbox"
126
  )
127
-
128
  # If a sensitivity other than "None" is selected, mark the item for addition to the allergen list
129
  if sensitivity != "None":
130
  to_add.append(item)"""
131
 
132
  # Update user_allergen_list based on selections
133
- #user_allergen_list = [item for item in user_allergen_list if item not in to_remove] + to_add
134
 
135
  # Display updated allergen list
136
- #st.write("Updated allergen list:", to_remove)
 
1
  import streamlit as st
2
+ from utils.allergens import *
3
  from utils.variables import *
4
 
5
 
 
13
  "Slightly sensitive": "Can eat food that has touched this ingredient"
14
  }
15
 
16
+
17
+ def create_allergy_input(user_id):
18
+ import streamlit as st
19
+
20
+ #details_link = f"[Go to this user's event participation page {user_id}](?page=event%5Fparticipation&user_id={user_id})"
21
+ #details_link = f"[Go to this user's event participation page {user_id}](?page=event%5Fparticipation)"
22
+ #st.markdown(details_link, unsafe_allow_html=True)
23
+
24
+ page_1_link = "[Go to Page 1](?page=test)"
25
+ st.markdown(page_1_link, unsafe_allow_html=True)
26
+
27
  st.write("Your allergies:")
28
  for i in user_list[user_id].keys():
29
  st.write(f"{i}, allergy degree: {user_list[user_id][i][0]}, can eat if cooked: {user_list[user_id][i][1]}")
 
42
  import streamlit as st
43
 
44
  # Sample data
45
+ # filtered_items = ["apple", "banana", "orange", "pear"]
46
+ # user_allergen_list = ["apple", "pear"] # Example of items in the user's allergen list
47
 
48
  # Sensitivity options
49
  sensitivity_options = {
 
59
  none = []
60
 
61
  # Initialize session state to store titles and selections for each expander
62
+ if f"{user_id}_expander_titles" not in st.session_state:
63
+ st.session_state[f"{user_id}_expander_titles"] = {item: item.capitalize() for item in filtered_items}
64
+ if "{user_id}_expander_selections" not in st.session_state:
65
+ st.session_state[f"{user_id}_expander_selections"] = {}
66
+ if "{user_id}_expanded_state" not in st.session_state:
67
+ st.session_state[f"{user_id}_expanded_state"] = {item: True for item in filtered_items} # Keep all expanders open initially
68
 
69
  # Function to update expander title based on selection
70
  def update_title(item):
71
+ selections = st.session_state.get(f"{user_id}_{item}_radio", "None")
72
  selection = "None"
73
  if selections == "Extremely sensitive - " + sensitivity_options["Extremely sensitive"]:
74
  selection = "Extremely sensitive🛑🚫"
75
+ user_list[user_id][item] = (3, st.session_state[f"{user_id}_{item}_checkbox"])
76
  elif selections == "Sensitive - " + sensitivity_options["Sensitive"]:
77
  selection = "Sensitive‼️"
78
+ user_list[user_id][item] = (2, st.session_state[f"{user_id}_{item}_checkbox"])
79
  elif selections == "Slightly sensitive - " + sensitivity_options["Slightly sensitive"]:
80
  selection = "Slightly sensitive❗"
81
+ user_list[user_id][item] = (1, st.session_state[f"{user_id}_{item}_checkbox"])
82
  else:
83
  user_list[user_id].pop(item)
84
 
 
85
  if selection != "None":
86
+ st.session_state[f"{user_id}_expander_titles"][item] = f"{item.capitalize()} - {selection}"
87
  else:
88
+ st.session_state[f"{user_id}_expander_titles"][item] = item.capitalize() # Reset to default if "None" is selected
89
 
90
  """option = selection.split(" - ")
91
  selection = option[1]"""
92
 
93
  # Keep the expander open
94
+ st.session_state[f"{user_id}_expanded_state"][item] = True
 
95
 
96
  # Loop through each item
97
  for item in filtered_items:
98
  # Check if the item is in the user's allergen list
99
+ # if item in user_allergen_list:
100
+ # key=f"{item}_radio"
101
+ title = st.session_state[f"{user_id}_expander_titles"][item]
102
  with st.expander(title):
103
  # Radio buttons for sensitivity level with a "None" option
104
  sensitivity = st.radio(
105
  f"Sensitivity level for {item.capitalize()}",
106
  options=["None"] + [f"{level} - {description}" for level, description in sensitivity_options.items()],
107
+ key=f"{user_id}_{item}_radio",
108
  on_change=lambda item=item: update_title(item) # Call update_title with the item argument
109
 
110
  )
111
  # Store the current selection in session_state for later access
112
+ st.session_state[f"{user_id}_expander_selections"][item] = sensitivity
113
 
114
  # Checkbox to indicate if they can eat the ingredient if it's cooked
115
  can_eat_if_cooked = st.checkbox(
116
  "Can eat the ingredient if it is cooked",
117
+ key=f"{user_id}_{item}_checkbox"
118
  )
119
 
120
  """else:
 
125
  options=["None"] + [f"{level} - {description}" for level, description in sensitivity_options.items()],
126
  key=f"{item}_radio"
127
  )
128
+
129
  # Checkbox to indicate if they can eat the ingredient if it's cooked
130
  can_eat_if_cooked = st.checkbox(
131
  "Can eat the ingredient if it is cooked",
132
  key=f"{item}_checkbox"
133
  )
134
+
135
  # If a sensitivity other than "None" is selected, mark the item for addition to the allergen list
136
  if sensitivity != "None":
137
  to_add.append(item)"""
138
 
139
  # Update user_allergen_list based on selections
140
+ # user_allergen_list = [item for item in user_allergen_list if item not in to_remove] + to_add
141
 
142
  # Display updated allergen list
143
+ # st.write("Updated allergen list:", to_remove)
utils/event_participation.py ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ from utils.allergens import *
3
+ from utils.variables import *
4
+ from utils.event_participation import *
5
+
6
+ def show_event_participation(user_id):
7
+ st.title("Event participation")
8
+ st.write("Welcome to the event!")
9
+
10
+ relevant_allergies = []
11
+ st.write("The dish served at the event will contain the following ingredients:")
12
+ for ingredient in ingredient_list:
13
+ st.write(ingredient)
14
+ for allergen in user_list[user_id].keys():
15
+ if allergen == ingredient:
16
+ relevant_allergies.append(ingredient)
17
+ #st.write(f"The dish will contain {ingredient}. You are allergic to {ingredient}.")
18
+ if len(relevant_allergies) == 0:
19
+ st.write("You can eat this dish!")
20
+ else:
21
+ st.write("You cannot eat this dish because it contains:")
22
+ for a in relevant_allergies:
23
+ st.write(a)