GSMEthesis commited on
Commit
68e51be
·
verified ·
1 Parent(s): 69fae5d

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +38 -8
app.py CHANGED
@@ -17,6 +17,20 @@ st.set_page_config(layout="wide", page_title="راهیار - تحلیل انصا
17
  SHEET_ID = "1mmdWAyOCYq4yXMgP53Duq712AnlqZWLkfIo76JqM7wM"
18
  SHEET_NAME = "Condition1"
19
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
20
  # ========== استایل‌های سفارشی یکپارچه ==========
21
  st.markdown("""
22
  <style>
@@ -743,7 +757,7 @@ def custom_likert_slider(question_data):
743
  question = question_data["question"]
744
  key = question_data["key"]
745
  points = question_data["scale"]
746
- labels = question_data.get("labels", ["کمترین", "بیشترین"]) # لیبل‌های پیش‌فرض
747
 
748
  # مقدار پیش‌فرض (وسط طیف)
749
  default_value = st.session_state.get(key, (points + 1) // 2)
@@ -776,14 +790,21 @@ def custom_likert_slider(question_data):
776
  value: value
777
  }}, '*');
778
  }}
 
 
 
 
 
779
  </script>
780
  """
781
 
782
  # نمایش کامپوننت
783
  components.html(html, height=150)
784
 
785
- # مقدار نهایی
786
- return st.session_state.get(key, default_value)
 
 
787
 
788
  def create_ride_map():
789
  """ایجاد نقشه سفر با Folium - نسخه اصلاح شده با مناطق عمومی"""
@@ -1282,10 +1303,11 @@ def random_likert_questions():
1282
  </div>
1283
  """, unsafe_allow_html=True)
1284
 
1285
- # نمایش تمام سوالات این گروه در یک صفحه
1286
  for question in current_group['questions']:
1287
  answer = custom_likert_slider(question)
1288
- st.session_state.answers[question["key"]] = answer
 
 
1289
 
1290
 
1291
  # دکمه ادامه/اتمام
@@ -1497,13 +1519,21 @@ def main():
1497
  user_agent = st.query_params.get("user_agent", [""])[0]
1498
  st.session_state.is_desktop = "mobile" not in user_agent.lower()
1499
 
1500
-
1501
  if st.session_state.is_desktop:
1502
  # اطمینان از نمایش همان حالت موبایل برای همه دستگاه‌ها
1503
  st.session_state.is_desktop = False
1504
 
1505
- if 'answers' not in st.session_state:
1506
- st.session_state.answers = {}
 
 
 
 
 
 
 
 
1507
 
1508
  if 'current_page' not in st.session_state:
1509
  st.session_state.current_page = "welcome"
 
17
  SHEET_ID = "1mmdWAyOCYq4yXMgP53Duq712AnlqZWLkfIo76JqM7wM"
18
  SHEET_NAME = "Condition1"
19
 
20
+
21
+ if 'component_values' not in st.session_state:
22
+ st.session_state.component_values = {}
23
+
24
+ def handle_component_message():
25
+ messages = st.session_state.get('_component_messages', [])
26
+ for message in messages:
27
+ if message['type'] == 'streamlit:setComponentValue':
28
+ st.session_state.component_values[message['key']] = message['value']
29
+ st.session_state[message['key']] = message['value']
30
+ st.rerun()
31
+
32
+ handle_component_message()
33
+
34
  # ========== استایل‌های سفارشی یکپارچه ==========
35
  st.markdown("""
36
  <style>
 
757
  question = question_data["question"]
758
  key = question_data["key"]
759
  points = question_data["scale"]
760
+ labels = question_data.get("labels", ["کمترین", "بیشترین"])
761
 
762
  # مقدار پیش‌فرض (وسط طیف)
763
  default_value = st.session_state.get(key, (points + 1) // 2)
 
790
  value: value
791
  }}, '*');
792
  }}
793
+
794
+ // اضافه کردن event listener برای ذخیره مقدار هنگام تغییر
795
+ document.getElementById("{key}").addEventListener("change", function() {{
796
+ updateSlider("{key}");
797
+ }});
798
  </script>
799
  """
800
 
801
  # نمایش کامپوننت
802
  components.html(html, height=150)
803
 
804
+ # بررسی اگر مقدار در session_state وجود دارد
805
+ if key in st.session_state:
806
+ return st.session_state[key]
807
+ return default_value
808
 
809
  def create_ride_map():
810
  """ایجاد نقشه سفر با Folium - نسخه اصلاح شده با مناطق عمومی"""
 
1303
  </div>
1304
  """, unsafe_allow_html=True)
1305
 
 
1306
  for question in current_group['questions']:
1307
  answer = custom_likert_slider(question)
1308
+ # ذخیره پاسخ در session_state
1309
+ st.session_state[question["key"]] = answer
1310
+ st.session_state.answers[question["key"]] = answer
1311
 
1312
 
1313
  # دکمه ادامه/اتمام
 
1519
  user_agent = st.query_params.get("user_agent", [""])[0]
1520
  st.session_state.is_desktop = "mobile" not in user_agent.lower()
1521
 
1522
+
1523
  if st.session_state.is_desktop:
1524
  # اطمینان از نمایش همان حالت موبایل برای همه دستگاه‌ها
1525
  st.session_state.is_desktop = False
1526
 
1527
+ # مدیریت وضعیت اسلایدرها
1528
+ if 'component_values' not in st.session_state:
1529
+ st.session_state.component_values = {}
1530
+
1531
+ # دریافت مقادیر از کامپوننت‌های HTML
1532
+ component_values = st.session_state.get('component_values', {})
1533
+ for key, value in component_values.items():
1534
+ st.session_state[key] = value
1535
+ if 'answers' in st.session_state:
1536
+ st.session_state.answers[key] = value
1537
 
1538
  if 'current_page' not in st.session_state:
1539
  st.session_state.current_page = "welcome"