GSMEthesis commited on
Commit
12f1532
·
verified ·
1 Parent(s): 521ef9a

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +23 -38
app.py CHANGED
@@ -739,52 +739,36 @@ h3 {
739
 
740
 
741
 
742
- def custom_likert_slider(question_data):
743
- """نمایش سوال لیکرت با اسلایدر نقطه‌ای و لیبل‌های سفارشی"""
744
  question = question_data["question"]
745
  key = question_data["key"]
746
- points = question_data["scale"]
747
  labels = question_data.get("labels", ["کمترین", "بیشترین"]) # لیبل‌های پیش‌فرض
748
 
749
  # مقدار پیش‌فرض (وسط طیف)
750
  default_value = st.session_state.get(key, (points + 1) // 2)
751
 
752
- # HTML و JavaScript
753
- html = f"""
754
- <div id="container_{key}" style="direction: ltr; font-family: 'B Nazanin'; margin-bottom: 30px;">
755
- <label style="font-size: 16px; font-weight: bold; display: block; text-align: right;">{question}</label>
756
- <div style="display: flex; justify-content: space-between; font-size: 12px; margin-bottom: 5px;">
757
- <span>{labels[0]}</span>
758
- <span>{labels[1]}</span>
759
- </div>
760
- <input type="range" id="{key}" min="1" max="{points}" step="1" value="{default_value}"
761
- style="width: 100%; height: 10px; accent-color: #6a0dad; margin-bottom: 15px;"
762
- oninput="updateSlider('{key}')">
763
- <div style="text-align: center; margin-top: 10px; direction: rtl;">
764
- پاسخ انتخاب‌شده: <strong><span id="output_{key}">{default_value}</span></strong>
765
- </div>
766
- </div>
767
-
768
- <script>
769
- function updateSlider(key) {{
770
- const value = parseInt(document.getElementById(key).value);
771
- document.getElementById('output_' + key).innerText = value;
772
-
773
- // ارسال مقدار به Streamlit
774
- window.parent.postMessage({{
775
- type: 'streamlit:setComponentValue',
776
- key: key,
777
- value: value
778
- }}, '*');
779
- }}
780
- </script>
781
- """
782
 
783
- # نمایش کامپوننت
784
- components.html(html, height=150)
 
 
 
 
 
 
 
785
 
786
- # مقدار نهایی را به صورت موقت در session_state ذخیره کن
787
- return default_value
 
 
 
 
 
788
 
789
 
790
  def save_likert_answers():
@@ -793,6 +777,7 @@ def save_likert_answers():
793
  if "distributive" in key or "procedural" in key or "informational" in key: # انتخاب کلیدهای مربوط به سوالات
794
  st.session_state[key] = st.session_state.get(key, None)
795
 
 
796
  def create_ride_map():
797
  """ایجاد نقشه سفر با Folium - نسخه اصلاح شده با مناطق عمومی"""
798
  # نقاط تقریبی برای مناطق عمومی جنوب و غرب تهران
@@ -1346,7 +1331,7 @@ def random_likert_questions():
1346
  # نمایش تمام سوالات این گروه در یک صفحه
1347
  for question in current_group['questions']:
1348
  # دریافت مقدار اسلایدر و ذخیره آن
1349
- answer = custom_likert_slider(question)
1350
  st.session_state[question["key"]] = answer # ذخیره مقدار اسلایدر در session_state
1351
 
1352
  # دکمه ادامه/اتمام
 
739
 
740
 
741
 
742
+ def likert_slider(question_data):
743
+ """نمایش سوال لیکرت با اسلایدر در 7 نقطه (یا 5 نقطه)"""
744
  question = question_data["question"]
745
  key = question_data["key"]
746
+ points = question_data["scale"] # 7 یا 5 نقطه
747
  labels = question_data.get("labels", ["کمترین", "بیشترین"]) # لیبل‌های پیش‌فرض
748
 
749
  # مقدار پیش‌فرض (وسط طیف)
750
  default_value = st.session_state.get(key, (points + 1) // 2)
751
 
752
+ # نمایش سوال و اسلایدر
753
+ st.markdown(f"<p style='font-size:16px; margin-bottom:5px;'>{question}</p>", unsafe_allow_html=True)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
754
 
755
+ value = st.slider(
756
+ "",
757
+ min_value=1,
758
+ max_value=points,
759
+ value=default_value,
760
+ step=1,
761
+ key=f"slider_{key}",
762
+ format="%d"
763
+ )
764
 
765
+ # نمایش پاسخ انتخاب‌شده
766
+ st.markdown(f"<p style='text-align:center; color:#6a0dad; font-weight:bold;'>پاسخ شما: {value}</p>", unsafe_allow_html=True)
767
+
768
+ # ذخیره مقادیر اسلایدر در session_state
769
+ st.session_state[key] = value
770
+
771
+ return value
772
 
773
 
774
  def save_likert_answers():
 
777
  if "distributive" in key or "procedural" in key or "informational" in key: # انتخاب کلیدهای مربوط به سوالات
778
  st.session_state[key] = st.session_state.get(key, None)
779
 
780
+
781
  def create_ride_map():
782
  """ایجاد نقشه سفر با Folium - نسخه اصلاح شده با مناطق عمومی"""
783
  # نقاط تقریبی برای مناطق عمومی جنوب و غرب تهران
 
1331
  # نمایش تمام سوالات این گروه در یک صفحه
1332
  for question in current_group['questions']:
1333
  # دریافت مقدار اسلایدر و ذخیره آن
1334
+ answer = likert_slider(question)
1335
  st.session_state[question["key"]] = answer # ذخیره مقدار اسلایدر در session_state
1336
 
1337
  # دکمه ادامه/اتمام