diff --git a/assets/style.css b/assets/style.css new file mode 100644 index 0000000..fbf6fc6 --- /dev/null +++ b/assets/style.css @@ -0,0 +1,32 @@ +body { + background-color: #242829; +} + +.Select { + background-color: rgb(27, 29, 30); + color: #fff; +} + +.Select-input > input { + color: #fff; +} + +.Select .Select-value { + background-color: rgb(27, 29, 30); +} + +.Select-control { + background-color: rgb(25, 25, 25) !important; + color: #fff; +} + +.Select-menu-outer { + background-color: rgb(27, 29, 30); + color: #fff; + border-radius: 10; +} + + +.has-value.Select--single>.Select-control .Select-value .Select-value-label, .has-value.is-pseudo-focused.Select--single>.Select-control .Select-value .Select-value-label{ + color: white +} diff --git a/calc.py b/calc.py index d1856c1..0976458 100644 --- a/calc.py +++ b/calc.py @@ -6,18 +6,60 @@ db = read_db() # Составные recipe = {} -# Функция для спец. округления -# 16.666...8 => 15 -def sround(num): +''' +def sround(num, parts): + acc = [1,2,3,4,5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95, 100] + amount = num*parts + + # Ловим частые повторения + tries = 0 + + # Пока не вывели хорошее число + good = False + while not good: + num = floor(num) + print(good, ' ', num) + st = 1 ; good = True + # Перебираем различное количество частей + while st < parts: + # Если в допустимых значениях + if num*st in acc: + st += 1 + continue + + good = False + # Перебираем допустимые значения + for i in acc: + if abs(i - num*st) <= 2: + num = i + break + st += 1 + + # Ловим частые повторения + tries += 1 + if tries > 500: + return sround1(num, parts) + + if num*parts > amount: + return sround1(num, parts) + + return num +''' + + +def sround(num, parts): + acc = [1,2,3,4,5] num = floor(num) - # Подмены - rep = [[16,15], [33,30], [21,20], [12,10], [8,5], [6,5]] - - for i in rep: - if num == i[0]: - num = i[1] + if num == 0: + return 1 + if num in acc: + return num + elif num%5 == 0: + return num + while num%5 != 0: + num -= 1 return num def calc(el, amount, main = False): @@ -36,8 +78,8 @@ def calc(el, amount, main = False): # Делаем поправку на выход while out < parts: # Предварительная часть - part = sround(amount/parts) - print(el, ': ',out,' < ', parts) + part = sround(amount/parts, parts) + #print(el, ': ',out,' < ', parts) # Если итоговый объём <= входного объёма if (parts+1)*part <= amount: parts += 1 @@ -47,7 +89,7 @@ def calc(el, amount, main = False): # parts = out # Считаем 1 часть - part = sround(amount/parts) + part = sround(amount/parts, parts) # Перебираем составные и делаем рекурсию for i in comps: @@ -57,6 +99,7 @@ def calc(el, amount, main = False): # 50/3, часть = 16, ИТОГ: 16*3=48 < try: if lpart < part: + print("LPART: ",lpart) part = lpart except: pass @@ -80,3 +123,6 @@ def calc(el, amount, main = False): return part*parts #print( calc("Лексорин", 100, True)) +#print( calc("Бикаридин", 100, True)) +#print( calc("Диловен", 100, True)) +#print( calc("Эфедрин", 100, True)) diff --git a/site.py b/site.py index ace08b4..5bad8d6 100644 --- a/site.py +++ b/site.py @@ -7,7 +7,7 @@ els = list(db.keys()) ###### ОФОРМЛЕНИЕ ####### from dash import Dash, dcc, html, Input, Output,callback -app = Dash(__name__, title="SS14 Tools") +app = Dash(__name__, title="SS14 Tools", update_title=None) # Форматируем список для красоты @@ -19,14 +19,20 @@ def list_form(ll): 'chemicals': '🧪'} for i in ll: + if type(i) == int: + formatted.append(i) #print(db[i][1]) - if db[i][1] in imgs: + elif db[i][1] in imgs: +# formatted.append({"label": html.Span(f"{imgs[db[i][1]]} {i}", style={'background-color': 'rgb(27, 29, 30)', 'color': 'rgb(0,0,0)'}), +# 'value': f"{imgs[db[i][1]]} {i}"}) +# formatted.append(html.P(f"{imgs[db[i][1]]} {i}", style={'background-color': 'rgb(27, 29, 30)', 'color': 'rgb(0,0,0)'})) formatted.append(imgs[db[i][1]] + ' ' + i) else: formatted.append(i) return formatted +# 'background-color': 'rgb(27, 29, 30)', 'color': 'rgb(255,255,255)' app.layout = html.Div([ @@ -34,14 +40,15 @@ app.layout = html.Div([ html.Div([ # Реакция html.Div([ - dcc.Dropdown(list_form(els), id='reaction', placeholder="Реакция", maxHeight=500, style={'font-size': '120%'}) + dcc.Dropdown(list_form(els), id='reaction', placeholder="Реакция", maxHeight=500, + style={'font-size': '120%'}) #, 'background-color': 'rgb(27, 29, 30)'}) ], 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}) + dcc.Dropdown(list_form([30, 50, 100, 300, 1000]), 100, id='amount', clearable=False, searchable=False + , style={'font-family': '"Source Sans Pro", sans-serif', 'font-size': '120%'}) #, 'background-color': 'rgb(27, 29, 30)'}) + ], style={'flex': 1, 'padding-left': 25}) #, 'background-color': 'rgb(27, 29, 30)'}) ], style={'display': 'flex', 'flexDirection': 'row'}), @@ -50,6 +57,9 @@ html.Div([ ], style={'padding': '5%', 'margin-left': '30%', 'margin-right': '30%'}) +# vh - высота окна, vw - ширина окна +# +# 'background-color': '#242829', # padding - отступ # [#####] # margin - сужение @@ -78,11 +88,11 @@ def update_output(reaction, amount): 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%'}) ) +, style={'background-color': 'rgb(213, 193, 86)', 'color': '#ffffff', '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%'}) ) +, style={'background-color': 'rgb(61, 164, 113)', 'color': '#ffffff', 'margin-top': 10, 'border-radius': 10, 'padding': 15, 'font-family': '"Source Sans Pro", sans-serif', 'font-size': '120%'}) ) return result