import streamlit as st import json with open("newdictwithmids_v2.json","r") as f: d = json.load(f) #print(d) with open("routranges_v4.json","r") as f: routranges = json.load(f) import pandas as pd maxdfEN = pd.read_csv("sheet0_agg_max.csv", header=0) mindfEN = pd.read_csv("sheet0_agg_min.csv", header=0) # Define options for the dropdown list maxdictEN = maxdfEN.to_dict("records") mindictEN = mindfEN.to_dict("records") maxrangesEN = {i["criteria"]:i["value"] for i in maxdictEN} minrangesEN = {i["criteria"]:i["value"] for i in mindictEN} maxdfEC = pd.read_csv("sheet1_agg_max.csv", header=0) mindfEC = pd.read_csv("sheet1_agg_min.csv", header=0) # Define options for the dropdown list maxdictEC = maxdfEC.to_dict("records") mindictEC = mindfEC.to_dict("records") maxrangesEC = {i["criteria"]:i["value"] for i in maxdictEC} minrangesEC = {i["criteria"]:i["value"] for i in mindictEC} maxdfSO = pd.read_csv("sheet2_agg_max.csv", header=0) mindfSO = pd.read_csv("sheet2_agg_min.csv", header=0) # Define options for the dropdown list maxdictSO = maxdfSO.to_dict("records") mindictSO = mindfSO.to_dict("records") maxrangesSO = {i["criteria"]:i["value"] for i in maxdictSO} minrangesSO = {i["criteria"]:i["value"] for i in mindictSO} maxdfTR = pd.read_csv("sheet3_agg_max.csv", header=0) mindfTR = pd.read_csv("sheet3_agg_min.csv", header=0) # Define options for the dropdown list maxdictTR = maxdfTR.to_dict("records") mindictTR = mindfTR.to_dict("records") maxrangesTR = {i["criteria"]:i["value"] for i in maxdictTR} minrangesTR = {i["criteria"]:i["value"] for i in mindictTR} mins = {**minrangesEN, **minrangesEC, **minrangesSO, **minrangesTR} maxs = {**maxrangesEN, **maxrangesEC, **maxrangesSO, **maxrangesTR} options = d.keys() ENranges = {key: (int(mins[key]), int(maxs[key])) for key in maxrangesEN} ECranges = {key: (int(mins[key]), int(maxs[key])) for key in maxrangesEC} SOranges = {key: (int(mins[key]), int(maxs[key])) for key in maxrangesSO} TRranges = {key: (int(mins[key]), int(maxs[key])) for key in maxrangesTR} allranges = [ENranges, ECranges, SOranges, TRranges] # selected_option = st.selectbox('Select an option:', options) # scroll_value = st.slider('Select a value:', min_value=ranges[d[selected_option]["tag"]][0], max_value=ranges[d[selected_option]["tag"]][1], value=ranges[d[selected_option]["tag"]][0]) # range = ranges[d[selected_option]["tag"]][1] - ranges[d[selected_option]["tag"]][0] # min = ranges[d[selected_option]["tag"]][0] # max = ranges[d[selected_option]["tag"]][1] # ll = d[selected_option]["route"] import streamlit as st #session_state = {} if 'num' not in st.session_state: st.session_state['num'] = 0 if 'out' not in st.session_state: st.session_state['out'] = [] print(st.session_state) tag_to_name = {d[k]["tag"]:k for k in d} def get_output_text(r,k,minn,maxx): print(r) start = 0 if r=='': return '' if int(r) < minn or int(r)>maxx: return '' print(routranges[k]) for i in routranges[k]: if int(r) <= i[1]: end = i[0] print(start,end+1) print(len(d[tag_to_name[k]]["finalrout"])) print(d[tag_to_name[k]]["finalrout"][start:end+1]) output_text = "\n".join(d[tag_to_name[k]]["finalrout"][start:end+1]) return tag_to_name[k] +"\n"+ f" {maxx} عدد وارد شده {r} در بازه ی {minn} تا" +"\n"+output_text else: start = i[0]+1 output_text = [] lll = ["شاخص های محیط زیستی","شاخص های اقتصادی","شاخص های اجتماعی","شاخص های حمل و نقل"] def main(allranges, tag_to_name): for r in allranges: num = st.session_state['num'] placeholder = st.empty() with placeholder.form(key=str(num)): #print(allranges[num]) st.write(lll[num]) for k in allranges[num]: inputrange = st.text_input('برای {}'.format(tag_to_name[k])+"\n"+ 'عدد مورد نظر خود را در بازه ی {} و {} وارد کنید'.format(allranges[num][k][0],allranges[num][k][1])) #print(inputrange) #inputrange = st.slider('Select a value:', min_value=allranges[num][k][0], max_value=allranges[num][k][1], value=allranges[num][k][0]) if get_output_text(inputrange,k,allranges[num][k][0],allranges[num][k][1])!='': if lll[num] not in st.session_state["out"]: st.session_state['out'].append(lll[num]) st.session_state['out'].append(get_output_text(inputrange,k,allranges[num][k][0],allranges[num][k][1])+"\n") if st.form_submit_button(): st.session_state['num'] += 1 #print(st.session_state['num']) if st.session_state['num'] >= 4: st.session_state['num'] = 0 placeholder.empty() # with open('out.txt', 'w') as f: # for line in st.session_state['out']: # f.write("{}\n".format(line)) # with open('out.txt','r') as f: # st.download_button('دانلود راهکارها',f) out = st.session_state['out'] st.session_state['out'] = [] return out placeholder.empty() else: st.stop() output_text = main(allranges, tag_to_name) #print(output_text) with open('out.txt', 'w') as f: for line in output_text: f.write("{}\n".format(line)) with open('out.txt','r') as f: st.download_button('دانلود راهکارها',f) #st.text(output_text)