-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsite_old.py
137 lines (110 loc) · 3.63 KB
/
site_old.py
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
import streamlit as st
## LOAD DB ##
#{
# "Бикаридин": [ [0, "Углерод", 1], [1, "Инапровалин"] ],
# "Инапровалин": [ [0, "Кислород", 1], [0, "Сахар", 1], [0, "Углерод", 1] ]
#}
# Тип Название Часть (1 к 1)
#
# 0 - без нагрева и т.п., 1 - зависит от того-то
#
# 100 = 50 углерод + 50 инапровалин =
# = 50 углерод + round(50/3) * составные
# = 50 углерод + 16 кислород + 16 сахар + 16 углерод
# !!! 50 != 48 => делаем 48 !!!
# = 48 углерод + 16 кислород + 16 сахар + 16 углерод
# = 96 бикаридин
#
# Список составных: ["Кислород", "Сахар", "Углерод"]
from db import *
db = read_db()
els = list(db.keys())
#############
#### UI ####
st.subheader('Этот сайт больше не поддерживается, [новый адрес.](https://sstools.404.mn/)', divider='red')
# Set columns
react, star, amount = st.columns([73, 7, 20])
with react:
option_react = st.selectbox(
label = '0',
options = els,
index = None,
placeholder = 'Реакция',
label_visibility = 'collapsed',
)
with star:
st.button(':orange[:star:]')
with amount:
option_amount = st.selectbox(
label = '0',
options = [30, 50, 100, 300, 1000],
index = 2,
placeholder = 'Объём',
label_visibility = 'collapsed'
)
#### CALCULATE RECIPE ####
from calc import *
if option_react:
comps, res = calc(option_react, option_amount, True)
# Выводим результат
for i in comps:
st.warning(f'{i}: {comps[i]}')
st.success(f'{option_react}: {res}')
# parts = 0
# part = 0
# vol = option_amount
# # Определяем 1 часть
# for i in db[option_react]:
# parts += i[2]
# part = vol // parts
# # Делаем около-кратным 10 и 15
# # !!ЭКСПЕРЕМЕНТАЛЬНОЕ!!
# part = round(part/10)*10
# if part%10 != 0:
# part = round(part/15)*15
# # Название: количество (локальные части)
# parted = {}
# # Проверяем конфликты с составными частями: 48 != 50
# lparts = 0 ; lpart = 0
# for i in db[option_react]:
# if i[0] == True:
# # Перебираем составные
# for el in db[i[1]]:
# lparts += el[2]
# # 50//3 ~ 16 16 * 3 = 48
# lpart = (part//lparts) * lparts
# if lpart < part:
# part = lpart
# parted[i[1]] = [part, lparts]
# # part = 48
# # parted["Инапровалин"] = [48, 3]
# # 48 - 1 часть, 3 - кол. частей
# # Фикс для плазмы в составных частях
# # for i in db[option_react]:
# # if i[0] == True:
# # for el in db[i[1]]:
# # if el[1] == "Плазма":
# # parted[i[1]][0]
# # parted[i[1]][1] -= 2
# comps = {}
# # Распределяем (пока не учитывает большую глубину)
# for i in db[option_react]:
# if i[0] == False:
# if i[1] == "Плазма":
# comps[i[1]] = 1
# else:
# comps[i[1]] = part * i[2]
# elif i[0] == True:
# # Перебираем составные
# for el in db[i[1]]:
# if el[1] == "Плазма":
# comps[el[1]] = 1
# else:
# if el[1] not in comps:
# comps[el[1]] = int( parted[i[1]][0]/parted[i[1]][1] * el[2] )
# else:
# comps[el[1]] += int( parted[i[1]][0]/parted[i[1]][1] * el[2] )
# # Выводим результат
# for i in comps:
# st.warning(f'{i}: {comps[i]}')
# st.success(f'{option_react}: {part*parts}')