You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
79 lines
1.9 KiB
79 lines
1.9 KiB
from db import *
|
|
# Загружаем элементы БД
|
|
db = read_db()
|
|
els = list(db.keys())
|
|
|
|
|
|
###### ОФОРМЛЕНИЕ #######
|
|
|
|
from dash import Dash, dcc, html, Input, Output,callback
|
|
|
|
app = Dash(__name__)
|
|
|
|
app.layout = html.Div([
|
|
|
|
# Название + объём
|
|
html.Div([
|
|
# Реакция
|
|
html.Div([
|
|
dcc.Dropdown(els, id='reaction', placeholder="Реакция", maxHeight=500, style={'font-size': '120%'})
|
|
], style={'flex': 4}),
|
|
|
|
# Объём
|
|
html.Div([
|
|
dcc.Dropdown([30, 50, 100, 300, 1000], 100, id='amount', clearable=False, searchable=False
|
|
, style={'font-family': '"Source Sans Pro", sans-serif', 'font-size': '120%'})
|
|
], style={'flex': 1, 'padding-left': 25})
|
|
|
|
], style={'display': 'flex', 'flexDirection': 'row'}),
|
|
|
|
# Вывод
|
|
html.Div(id='output', style={'text-align': 'center', 'padding-left': '15%', 'padding-right': '15%'})
|
|
|
|
], style={'padding': '5%', 'margin-left': '30%', 'margin-right': '30%'})
|
|
|
|
# padding - отступ
|
|
# [#####]
|
|
# margin - сужение
|
|
# [###]
|
|
#########################
|
|
|
|
|
|
|
|
|
|
|
|
####### ЛОГИКА ##########
|
|
|
|
from calc import *
|
|
|
|
@callback(
|
|
Output('output', 'children'),
|
|
Input('reaction', 'value'),
|
|
Input('amount', 'value')
|
|
)
|
|
def update_output(reaction, amount):
|
|
if reaction:
|
|
comps, res = calc(reaction, amount, main = True)
|
|
|
|
# Форматирование для HTML
|
|
result = []
|
|
for i in comps:
|
|
result.append( html.Div(i + ': ' + str(comps[i])
|
|
, style={'background-color': '#3f3b17', 'margin-top': 10, 'border-radius': 10, 'padding': 15, 'font-family': '"Source Sans Pro", sans-serif', 'font-size': '120%'}) )
|
|
|
|
# Выходное вещество
|
|
result.append( html.Div(f'{reaction}: {res}'
|
|
, style={'background-color': '#183929', 'margin-top': 10, 'border-radius': 10, 'padding': 15, 'font-family': '"Source Sans Pro", sans-serif', 'font-size': '120%'}) )
|
|
|
|
|
|
return result
|
|
|
|
|
|
#########################
|
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
app.run(debug=True)
|
|
# app.run(debug=False)
|