GSMEthesis commited on
Commit
9a5cb6d
·
verified ·
1 Parent(s): ff63995

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +9 -14
app.py CHANGED
@@ -745,22 +745,23 @@ def custom_likert_slider(question_data):
745
  scale = question_data["scale"]
746
  labels = question_data.get("labels", ["کمترین", "بیشترین"])
747
 
748
- # مقدار پیش‌فرض از session_state یا وسط مقیاس
749
  default_value = st.session_state.get(key, (scale + 1) // 2)
750
 
751
- # HTML و JavaScript برای اسلایدر سفارشی
 
 
 
 
 
 
 
752
  html = f"""
753
  <div style="direction: ltr; font-family: 'B Nazanin'; margin-bottom: 30px;">
754
  <label style="font-size: 16px; font-weight: bold; display: block; text-align: center;">{question}</label>
755
  <div style="display: flex; justify-content: center; align-items: center; gap: 10px; margin: 10px 0;">
756
  <span>{labels[0]}</span>
757
  <div style="display: flex; gap: 10px;">
758
- {"".join([
759
- f'<input type="radio" id="radio_{key}_{i}" name="{key}" value="{i}" style="width: 30px; height: 30px;" '
760
- f'{"checked" if st.session_state.get(f"radio_{key}", default_value) == i else ""} '
761
- f'onclick="updateSlider({i}, \'{key}\')">'
762
- for i in range(1, scale + 1)
763
- ])}
764
  </div>
765
  <span>{labels[1]}</span>
766
  </div>
@@ -771,17 +772,14 @@ def custom_likert_slider(question_data):
771
 
772
  <script>
773
  function updateSlider(value, key) {{
774
- // به روزرسانی نمایش مقدار انتخاب شده
775
  document.getElementById("selected_value_" + key).innerHTML = "پاسخ شما: " + value;
776
 
777
- // ارسال مقدار به Streamlit
778
  window.parent.postMessage({{
779
  type: 'streamlit:setComponentValue',
780
  key: key,
781
  value: value
782
  }}, '*');
783
 
784
- // ذخیره مقدار در session
785
  window.parent.postMessage({{
786
  type: 'streamlit:setSessionState',
787
  key: "radio_" + key,
@@ -791,10 +789,7 @@ def custom_likert_slider(question_data):
791
  </script>
792
  """
793
 
794
- # رندر HTML و JavaScript
795
  components.html(html, height=200)
796
-
797
- # بازگرداندن مقدار انتخاب شده کاربر (یا پیش‌فرض اگر هنوز انتخابی نکرده)
798
  return st.session_state.get(f"radio_{key}", default_value)
799
 
800
  def create_ride_map():
 
745
  scale = question_data["scale"]
746
  labels = question_data.get("labels", ["کمترین", "بیشترین"])
747
 
 
748
  default_value = st.session_state.get(key, (scale + 1) // 2)
749
 
750
+ # ایجاد رادیو باتن‌ها با حلقه
751
+ radio_buttons = "".join([
752
+ f'<input type="radio" id="radio_{key}_{i}" name="{key}" value="{i}" style="width: 30px; height: 30px;" '
753
+ f'{"checked" if st.session_state.get(f"radio_{key}", default_value) == i else ""} '
754
+ f'onclick="updateSlider({i}, \'{key}\')">'
755
+ for i in range(1, scale + 1)
756
+ ])
757
+
758
  html = f"""
759
  <div style="direction: ltr; font-family: 'B Nazanin'; margin-bottom: 30px;">
760
  <label style="font-size: 16px; font-weight: bold; display: block; text-align: center;">{question}</label>
761
  <div style="display: flex; justify-content: center; align-items: center; gap: 10px; margin: 10px 0;">
762
  <span>{labels[0]}</span>
763
  <div style="display: flex; gap: 10px;">
764
+ {radio_buttons}
 
 
 
 
 
765
  </div>
766
  <span>{labels[1]}</span>
767
  </div>
 
772
 
773
  <script>
774
  function updateSlider(value, key) {{
 
775
  document.getElementById("selected_value_" + key).innerHTML = "پاسخ شما: " + value;
776
 
 
777
  window.parent.postMessage({{
778
  type: 'streamlit:setComponentValue',
779
  key: key,
780
  value: value
781
  }}, '*');
782
 
 
783
  window.parent.postMessage({{
784
  type: 'streamlit:setSessionState',
785
  key: "radio_" + key,
 
789
  </script>
790
  """
791
 
 
792
  components.html(html, height=200)
 
 
793
  return st.session_state.get(f"radio_{key}", default_value)
794
 
795
  def create_ride_map():