fpooyan's picture
Edits
8be9315
raw
history blame
5.92 kB
import streamlit as st
import json
with open("/content/drive/MyDrive/safoura/newdictwithmids_v2.json","r") as f:
d = json.load(f)
#print(d)
with open("/content/drive/MyDrive/safoura/routranges_v4.json","r") as f:
routranges = json.load(f)
import pandas as pd
maxdfEN = pd.read_csv("/content/drive/MyDrive/safoura/sheet0_agg_max.csv", header=0)
mindfEN = pd.read_csv("/content/drive/MyDrive/safoura/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("/content/drive/MyDrive/safoura/sheet1_agg_max.csv", header=0)
mindfEC = pd.read_csv("/content/drive/MyDrive/safoura/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("/content/drive/MyDrive/safoura/sheet2_agg_max.csv", header=0)
mindfSO = pd.read_csv("/content/drive/MyDrive/safoura/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("/content/drive/MyDrive/safoura/sheet3_agg_max.csv", header=0)
mindfTR = pd.read_csv("/content/drive/MyDrive/safoura/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]]["route"]))
print(d[tag_to_name[k]]["route"][start:end+1])
output_text = "\n".join(d[tag_to_name[k]]["route"][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)