From 3d3988fe644f321829ee620658b05fbe052480f6 Mon Sep 17 00:00:00 2001 From: none Date: Wed, 24 Jan 2024 15:20:02 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A1=D0=B4=D0=B5=D0=BB=D0=B0=D0=BD=D0=BE:=20?= =?UTF-8?q?=D0=BE=D0=BF=D1=80=D0=B5=D0=B4=D0=B5=D0=BB=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D0=B5=20=D1=87=D0=B0=D1=81=D1=82=D0=B5=D0=B9,=20=D0=BF=D1=80?= =?UTF-8?q?=D0=BE=D0=B2=D0=B5=D1=80=D0=BA=D0=B0=20=D1=87=D1=82=D0=BE=20?= =?UTF-8?q?=D1=87=D0=B0=D1=81=D1=82=D0=B8=20=D0=BE=D0=B4=D0=B8=D0=BD=D0=B0?= =?UTF-8?q?=D0=BA=D0=BE=D0=B2=D1=8B,=20=D1=80=D0=B0=D1=81=D0=BF=D1=80?= =?UTF-8?q?=D0=B5=D0=B4=D0=B5=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5=20=D1=87=D0=B0?= =?UTF-8?q?=D1=81=D1=82=D0=B5=D0=B9.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- site.py | 70 +++++++++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 61 insertions(+), 9 deletions(-) diff --git a/site.py b/site.py index d3b8fbc..54b7d37 100644 --- a/site.py +++ b/site.py @@ -1,10 +1,5 @@ import streamlit as st -df = { - 'first column': [1, 2, 3, 4], - 'second column': [10, 20, 30, 40] -} - ## LOAD DB ## #{ @@ -24,29 +19,86 @@ df = { # # Список составных: ["Кислород", "Сахар", "Углерод"] +from db import * + +db = read_db() +els = list(db.keys()) + ############# +#### UI #### + # Set columns react, star, amount = st.columns([73, 7, 20]) with react: - option = st.selectbox( + option_react = st.selectbox( label = '0', - options = df['first column'], + options = els, index = None, placeholder = 'Реакция', - label_visibility = 'collapsed' + label_visibility = 'collapsed', ) with star: st.button(':orange[:star:]') with amount: - option = st.selectbox( + option_amount = st.selectbox( label = '0', options = [100], index = 0, placeholder = 'Объём', label_visibility = 'collapsed' ) + + +#### CALCULATE RECIPE #### + +if option_react: + parts = 0 + part = 0 + vol = option_amount + + # Определяем 1 часть + for i in db[option_react]: + parts += i[2] + part = vol // parts + + # Название: количество (локальные части) + parted = {} + # Проверяем конфликты с сложными частями: 48 != 50 + lparts = 0 ; lpart = 0 + for i in db[option_react]: + if i[0] == 1: + # Перебираем составные + 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["Инапровалин"] = 16 + + + comps = {} + # Распределяем (пока не учитывает части и глубину) + for i in db[option_react]: + if i[0] == 0: + comps[i[1]] = part + elif i[0] == 1: + # Перебираем составные + for el in db[i[1]]: + if el[1] not in comps: + print("############") + print(part) + print(parted[i[1]]) + comps[el[1]] = parted[i[1]] + else: + comps[el[1]] += parted[i[1]] + +comps