File size: 8,265 Bytes
ecd4749
1d25bea
 
ecd4749
72b261e
bc44682
 
 
15b54ea
 
 
 
 
 
0e5d426
15b54ea
 
 
a0f6dae
15b54ea
 
 
 
 
 
 
 
 
 
0f6f0b9
15b54ea
 
 
 
 
0f6f0b9
0e5d426
 
 
 
 
a0f6dae
08a27ba
a0f6dae
0e5d426
 
 
a0f6dae
 
 
0e5d426
 
 
 
 
 
 
 
a0f6dae
0e5d426
 
 
 
 
 
 
 
15b54ea
3207e42
15b54ea
 
 
 
a0f6dae
15b54ea
 
 
 
 
 
 
 
 
 
 
 
56da4fc
 
 
 
 
 
 
 
 
 
 
 
 
15b54ea
 
 
 
 
bc44682
15b54ea
 
 
3207e42
15b54ea
426453a
3207e42
a0f6dae
426453a
08a27ba
0e5d426
 
 
 
 
a0f6dae
0e5d426
a0f6dae
 
 
 
 
 
0e5d426
 
 
 
 
 
a0f6dae
 
 
 
0e5d426
a0f6dae
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
0e5d426
 
 
 
 
 
 
 
 
 
 
 
 
 
426453a
ecd4749
bc44682
ecd4749
 
 
 
 
 
 
a0f6dae
 
 
0e5d426
a0f6dae
0e5d426
ecd4749
 
 
bc44682
87bbb43
a0f6dae
 
bc44682
0e5d426
 
 
a0f6dae
 
0e5d426
bc44682
 
a0f6dae
 
f045140
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
import streamlit as st
from utils.allergens import *
from utils.variables import *


st.title("Dish planning")
st.write("Welcome to the dish planning page!")


#for u in user_list.keys():
#    for i in user_list[u].keys():
#        st.write(f"user id: {u}, i: {i}")
#        for i in user_list[u][i]:
#            st.write(i)
#Behöver lägga till om den tillagas eller ej?

col1, col2 = st.columns(2)
with col1:
    c = '''
    st.header("Ingredients:")
    for i in ingredient_list:
        allergic_people_count = 0
        for u in user_list.values():
            if i in u.keys():
                allergic_people_count += 1
            else:
                found = False
                for s in synonyms[i]:
                    if found:
                        break
                    else:
                        if s in u.keys():
                            allergic_people_count += 1
                            found = True
                            break

        if allergic_people_count > 0:
            st.write(f"{i} - {allergic_people_count} guest{'s are' if allergic_people_count > 1 else ' is'} sensitive to this ingredient")

        else:
            st.write(f"{i}")
    '''
    st.header("Ingredients:")
    for i in ingredient_list.keys():
        allergic_people_count = 0
        for u in user_list.values():
            if i in u.keys():
                if ingredient_list[i] == False: # Raw, does not matter if the guest can eat it cooked
                    allergic_people_count += 1
                elif u[i][1] == False: # The ingredient is cooked but the guest can still not eat it
                    allergic_people_count += 1
            else:
                found = False
                for s in synonyms[i]:
                    if found:
                        break
                    else:
                        if s in u.keys():
                            if ingredient_list[i] == False: #Raw, does not matter if the guest can eat it cooked
                                allergic_people_count += 1
                            else:
                                if u[s][1] == False: #The ingredient is cooked but the guest can still not eat it
                                    allergic_people_count += 1
                            #allergic_people_count += 1
                            found = True
                            break

        if allergic_people_count > 0:
            st.write(f"{i} - {allergic_people_count} guest{'s are' if allergic_people_count > 1 else ' is'} sensitive to this ingredient")
        else:
            st.write(f"{i}")

with col2:
    c = '''
    st.header("Aggregate:")
    user_pools = defaultdict(lambda: False)

    # Summary of allergies
    for user_id in user_list.keys():
        relevant_allergy_list = ""
        for ingredient in ingredient_list:
            if ingredient in user_list[user_id].keys():
                if relevant_allergy_list == "":
                    relevant_allergy_list = relevant_allergy_list + ingredient
                else:
                    relevant_allergy_list = relevant_allergy_list + ", " + ingredient
            else:
                for s in synonyms[i]:
                    found = False
                    if found:
                        break
                    else:
                        if s in user_list[user_id].keys():
                            if relevant_allergy_list == "":
                                relevant_allergy_list = relevant_allergy_list + ingredient
                            else:
                                relevant_allergy_list = relevant_allergy_list + ", " + ingredient
                            found = True
                            break
        if not relevant_allergy_list == "":
            if not user_pools[relevant_allergy_list]:
                user_pools[relevant_allergy_list] = 1
            else:
                user_pools[relevant_allergy_list] += 1

    total_affected_guests = 0
    for pool in user_pools.keys():
        #relevant_allergies = pool.split(",")
        st.write(f"{user_pools[pool]} user{'s' if user_pools[pool] == 1 else ''} cannot eat {pool}")
        total_affected_guests += user_pools[pool]

    st.write(f"In total, {total_affected_guests} {'is' if total_affected_guests == 1 else 'are'} unable to eat this dish.")
    '''

    st.header("Aggregate:")
    user_pools = defaultdict(lambda: False)

    # Summary of allergies
    for user_id in user_list.keys():
        relevant_allergy_list = ""
        for ingredient in ingredient_list.keys():
            if ingredient in user_list[user_id].keys():
                if not ingredient_list[ingredient]: #Raw
                    if relevant_allergy_list == "":
                        relevant_allergy_list = relevant_allergy_list + ingredient
                    else:
                        relevant_allergy_list = relevant_allergy_list + ", " + ingredient
                elif not user_list[user_id][ingredient][1]: #cooked, but can still not eat
                    if relevant_allergy_list == "":
                        relevant_allergy_list = relevant_allergy_list + ingredient
                    else:
                        relevant_allergy_list = relevant_allergy_list + ", " + ingredient

            else:
                for s in synonyms[ingredient]:
                    #if found:
                        #break
                    #else:
                        if s in user_list[user_id].keys():
                            if ingredient_list[ingredient] == False:  # Raw, does not matter if the guest can eat it cooked
                                if relevant_allergy_list == "":
                                    relevant_allergy_list = relevant_allergy_list + ingredient
                                else:
                                    relevant_allergy_list = relevant_allergy_list + ", " + ingredient
                                #found = True
                                #break
                            elif user_list[user_id][s][1] == False:  # The ingredient is cooked but the guest can still not eat it
                                if relevant_allergy_list == "":
                                    relevant_allergy_list = relevant_allergy_list + ingredient
                                else:
                                    relevant_allergy_list = relevant_allergy_list + ", " + ingredient
                                #found = True
                                #break


        if not relevant_allergy_list == "":
            if not user_pools[relevant_allergy_list]:
                user_pools[relevant_allergy_list] = 1
            else:
                user_pools[relevant_allergy_list] += 1

    total_affected_guests = 0
    for pool in user_pools.keys():
        #relevant_allergies = pool.split(",")
        st.write(f"{user_pools[pool]} user{'s' if user_pools[pool] == 1 else ''} cannot eat {pool}")
        total_affected_guests += user_pools[pool]

    st.write(f"In total, {total_affected_guests} {'is' if total_affected_guests == 1 else 'are'} unable to eat this dish.")


# Text input for the search query
query = st.text_input("Search for an ingredient:")

# Filter the list based on the search query
if query:
    filtered_items = [allergen for allergen in allergens if query.lower() in allergen.lower()]
else:
    filtered_items = allergens

#def update_cook(item):
#    prev = ingredient_list[item]
#    ingredient_list[item] = not prev
def update_cook(item):
    ingredient_list[item] = (st.session_state[f"{item}_cooked"])

# Display the filtered list
st.write("Results:")
for item in filtered_items:
    if item in ingredient_list:
        if st.button(f"- {item} (this is in your food)"):
            #ingredient_list.remove(item)
            ingredient_list.pop(item)
            st.rerun()
        if_cooked = st.checkbox(
                "The ingredient will be cooked",
                key=f"{item}_cooked",
                on_change=lambda item=item: update_cook(item),
                value=ingredient_list[item]
            )
    else:
        if st.button(f"- {item}"):
            #ingredient_list.append(item)
            ingredient_list[item] = False
            st.rerun()