GSMEthesis commited on
Commit
24b4786
·
verified ·
1 Parent(s): 139db0a

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +46 -13
app.py CHANGED
@@ -783,11 +783,17 @@ def enhanced_likert_scale(question_data):
783
  st.markdown(f"<div style='text-align:right; font-weight:bold; margin-bottom:15px; direction: rtl;'>{question}</div>",
784
  unsafe_allow_html=True)
785
 
786
- # نمایش برچسب‌ها
 
 
 
 
 
787
  st.markdown(
788
  f"""
789
  <div style='display: flex; justify-content: space-between; max-width: 475px; margin: 0 auto 10px; direction: rtl;'>
790
  <span style='font-size: 14px; font-weight: bold; color: #6a0dad;'>{labels[0]}</span>
 
791
  <span style='font-size: 14px; font-weight: bold; color: #6a0dad;'>{labels[1]}</span>
792
  </div>
793
  """,
@@ -804,7 +810,7 @@ def enhanced_likert_scale(question_data):
804
  key=f"{key}_radio"
805
  )
806
 
807
- # بعد از تعریف st.radio، این کد را اضافه کنید:
808
  st.markdown(
809
  """
810
  <style>
@@ -820,7 +826,7 @@ def enhanced_likert_scale(question_data):
820
  if selected_value is not None:
821
  st.session_state[key] = selected_value
822
 
823
- # ایجاد JavaScript جداگانه برای جلوگیری از مشکل بک‌اسلش
824
  js_code = """
825
  <script>
826
  function handleLikertClick(index) {
@@ -831,7 +837,8 @@ def enhanced_likert_scale(question_data):
831
  }
832
  </script>
833
  """
834
- # ایجاد دکمه‌های سفارشی
 
835
  options_html = "".join([
836
  f'<div class="likert-option {"selected" if st.session_state.get(key) == i+1 else ""}" '
837
  f'onclick="handleLikertClick({i})">'
@@ -840,7 +847,7 @@ def enhanced_likert_scale(question_data):
840
  for i in range(scale)
841
  ])
842
 
843
- # ترکیب تمام بخش‌ها
844
  components.html(
845
  f"""
846
  {js_code}
@@ -865,6 +872,7 @@ def enhanced_likert_scale(question_data):
865
  cursor: pointer;
866
  margin: 0 3px;
867
  transition: all 0.2s;
 
868
  }}
869
  .likert-option:hover {{
870
  transform: scale(1.1);
@@ -878,25 +886,50 @@ def enhanced_likert_scale(question_data):
878
  font-weight: bold;
879
  font-size: 16px;
880
  user-select: none;
 
881
  }}
882
  .likert-option.selected .likert-number {{
883
  color: white;
884
  }}
 
 
 
 
 
 
 
 
 
 
885
  </style>
886
  <div class="likert-container">
887
  {options_html}
888
  </div>
889
  """,
890
- height=50
891
  )
892
 
893
- # نمایش وضعیت انتخاب
894
  status = f"پاسخ شما: {st.session_state[key]}" if st.session_state.get(key) else "پاسخ شما: هنوز انتخاب نشده"
895
- st.markdown(f"<p style='text-align:right; color:#6a0dad; direction: rtl; margin-top:10px;'>{status}</p>",
896
- unsafe_allow_html=True)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
897
 
898
  return st.session_state.get(key)
899
-
900
 
901
  def create_ride_map():
902
  """ایجاد نقشه سفر با Folium - نسخه اصلاح شده با مناطق عمومی"""
@@ -968,7 +1001,7 @@ def show_explanation(exp_type):
968
  st.markdown(f"<p class='explanation-item'>• {item}</p>", unsafe_allow_html=True)
969
 
970
  elif exp_type == "counterfactual":
971
- st.markdown("<p class='explanation-title'>علت قیمت گذاری:</p>", unsafe_allow_html=True)
972
  for item in explanations.get(exp_type, []):
973
  st.markdown(f"<p class='explanation-item'>• {item}</p>", unsafe_allow_html=True)
974
 
@@ -1244,7 +1277,7 @@ def random_likert_questions():
1244
  در این بخش، با یک سری سؤال درمورد قیمتی که در صفحه اطلاعات سفر و در زیر نقشه دیدید، مواجه خواهید شد. در زیر سوالات طیفی قرار دارد: <br>
1245
  - سمت راست (۱): کاملاً نامنصفانه، غیرمعقول یا غیرقابل قبول<br>
1246
  - سمت چپ (۷): کاملاً منصفانه، معقول یا قابل قبول<br>
1247
- لطفاً با دقت عدد مناسب را بین ۱ تا ۷ را با زدن دکمه + و – جعبه زیر طیف انتخاب نمایید. بدین گونه شما انتخاب خواهید کرد که چقدر قیمت به نظرتان منصفانه بوده. چقدر با توجه به شرایط منطقی بوده و چقدر قابل قبول بوده.
1248
  </p>
1249
  """),
1250
  "questions": [
@@ -1302,7 +1335,7 @@ def random_likert_questions():
1302
  در این بخش، با یک سری سؤال درمورد توضیحاتی که در صفحه اطلاعات سفر و در زیر نقشه درمورد قیمت به شما ارائه شد، مواجه خواهید شد. در زیر سوالات طیفی قرار دارد: <br>
1303
  - سمت راست (۱): به هیچ وجه<br>
1304
  - سمت چپ (۷): خیلی زیاد<br>
1305
- لطفاً با دقت عدد مناسب را بین ۱ تا ۷ را با زدن دکمه + و – جعبه زیر طیف انتخاب نمایید. بدین گونه شما انتخاب خواهید کرد که از هیچ مقدار تا خیلی زیاد به چه مقدار به شما توضیح با ویژگی‌های سوال ارائه شده است.
1306
  </p>
1307
  """),
1308
  "questions": [
 
783
  st.markdown(f"<div style='text-align:right; font-weight:bold; margin-bottom:15px; direction: rtl;'>{question}</div>",
784
  unsafe_allow_html=True)
785
 
786
+ # نمایش برچسب‌ها (با برچسب وسط اگر مقیاس فرد باشد)
787
+ middle_label = ""
788
+ if scale % 2 == 1: # اگر مقیاس فرد باشد
789
+ middle_value = (scale // 2) + 1
790
+ middle_label = "<span style='font-size: 14px; font-weight: bold; color: #6a0dad;'>متوسط</span>"
791
+
792
  st.markdown(
793
  f"""
794
  <div style='display: flex; justify-content: space-between; max-width: 475px; margin: 0 auto 10px; direction: rtl;'>
795
  <span style='font-size: 14px; font-weight: bold; color: #6a0dad;'>{labels[0]}</span>
796
+ {middle_label}
797
  <span style='font-size: 14px; font-weight: bold; color: #6a0dad;'>{labels[1]}</span>
798
  </div>
799
  """,
 
810
  key=f"{key}_radio"
811
  )
812
 
813
+ # مخفی کردن رادیو باتن
814
  st.markdown(
815
  """
816
  <style>
 
826
  if selected_value is not None:
827
  st.session_state[key] = selected_value
828
 
829
+ # ایجاد JavaScript
830
  js_code = """
831
  <script>
832
  function handleLikertClick(index) {
 
837
  }
838
  </script>
839
  """
840
+
841
+ # ایجاد دکمه‌های سفارشی با استایل بهبود یافته
842
  options_html = "".join([
843
  f'<div class="likert-option {"selected" if st.session_state.get(key) == i+1 else ""}" '
844
  f'onclick="handleLikertClick({i})">'
 
847
  for i in range(scale)
848
  ])
849
 
850
+ # ترکیب تمام بخش‌ها با استایل بهبود یافته
851
  components.html(
852
  f"""
853
  {js_code}
 
872
  cursor: pointer;
873
  margin: 0 3px;
874
  transition: all 0.2s;
875
+ position: relative;
876
  }}
877
  .likert-option:hover {{
878
  transform: scale(1.1);
 
886
  font-weight: bold;
887
  font-size: 16px;
888
  user-select: none;
889
+ transition: all 0.2s;
890
  }}
891
  .likert-option.selected .likert-number {{
892
  color: white;
893
  }}
894
+ /* برچسب وسط برای گزینه میانی */
895
+ .likert-option.middle-option::after {{
896
+ content: "متوسط";
897
+ position: absolute;
898
+ bottom: -25px;
899
+ font-size: 12px;
900
+ color: #6a0dad;
901
+ white-space: nowrap;
902
+ font-weight: bold;
903
+ }}
904
  </style>
905
  <div class="likert-container">
906
  {options_html}
907
  </div>
908
  """,
909
+ height=70 # افزایش ارتفاع برای جا دادن برچسب وسط
910
  )
911
 
912
+ # نمایش وضعیت انتخاب با استایل بهبود یافته
913
  status = f"پاسخ شما: {st.session_state[key]}" if st.session_state.get(key) else "پاسخ شما: هنوز انتخاب نشده"
914
+ st.markdown(
915
+ f"""
916
+ <p style='
917
+ text-align: right;
918
+ color: #6a0dad;
919
+ direction: rtl;
920
+ margin-top: 20px;
921
+ padding: 10px;
922
+ background-color: #f8f0ff;
923
+ border-radius: 8px;
924
+ border-right: 3px solid #6a0dad;
925
+ '>
926
+ {status}
927
+ </p>
928
+ """,
929
+ unsafe_allow_html=True
930
+ )
931
 
932
  return st.session_state.get(key)
 
933
 
934
  def create_ride_map():
935
  """ایجاد نقشه سفر با Folium - نسخه اصلاح شده با مناطق عمومی"""
 
1001
  st.markdown(f"<p class='explanation-item'>• {item}</p>", unsafe_allow_html=True)
1002
 
1003
  elif exp_type == "counterfactual":
1004
+ st.markdown("<p class='explanation-title'>توضیح رهیار درمورد علت قیمت گذاری:</p>", unsafe_allow_html=True)
1005
  for item in explanations.get(exp_type, []):
1006
  st.markdown(f"<p class='explanation-item'>• {item}</p>", unsafe_allow_html=True)
1007
 
 
1277
  در این بخش، با یک سری سؤال درمورد قیمتی که در صفحه اطلاعات سفر و در زیر نقشه دیدید، مواجه خواهید شد. در زیر سوالات طیفی قرار دارد: <br>
1278
  - سمت راست (۱): کاملاً نامنصفانه، غیرمعقول یا غیرقابل قبول<br>
1279
  - سمت چپ (۷): کاملاً منصفانه، معقول یا قابل قبول<br>
1280
+ لطفاً با دقت عدد مناسب را بین ۱ تا ۷ را انتخاب نمایید. بدین گونه شما انتخاب خواهید کرد که چقدر قیمت به نظرتان منصفانه بوده. چقدر با توجه به شرایط منطقی بوده و چقدر قابل قبول بوده.
1281
  </p>
1282
  """),
1283
  "questions": [
 
1335
  در این بخش، با یک سری سؤال درمورد توضیحاتی که در صفحه اطلاعات سفر و در زیر نقشه درمورد قیمت به شما ارائه شد، مواجه خواهید شد. در زیر سوالات طیفی قرار دارد: <br>
1336
  - سمت راست (۱): به هیچ وجه<br>
1337
  - سمت چپ (۷): خیلی زیاد<br>
1338
+ لطفاً با دقت عدد مناسب را بین ۱ تا ۷ را انتخاب نمایید. بدین گونه شما انتخاب خواهید کرد که از هیچ مقدار تا خیلی زیاد به چه مقدار به شما توضیح با ویژگی‌های سوال ارائه شده است.
1339
  </p>
1340
  """),
1341
  "questions": [