GSMEthesis commited on
Commit
5bb851e
·
verified ·
1 Parent(s): 149a9ed

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +17 -76
app.py CHANGED
@@ -757,38 +757,24 @@ def custom_likert_slider(question_data):
757
  <span>{labels[1]}</span>
758
  </div>
759
  <input type="range" id="{key}" min="1" max="{points}" step="1" value="{default_value}"
760
- style="width: 100%; height: 10px; accent-color: #6a0dad; margin-bottom: 15px;"
761
- oninput="updateSlider('{key}')">
762
  <div style="text-align: center; margin-top: 10px; direction: rtl;">
763
  پاسخ انتخاب‌شده: <strong><span id="output_{key}">{default_value}</span></strong>
764
  </div>
765
  </div>
766
-
767
- <script>
768
- function updateSlider(key) {{
769
- const value = parseInt(document.getElementById(key).value);
770
- document.getElementById('output_' + key).innerText = value;
771
-
772
- // ارسال مقدار به Streamlit
773
- window.parent.postMessage({{
774
- type: 'streamlit:setComponentValue',
775
- key: key,
776
- value: value
777
- }}, '*');
778
- }}
779
- </script>
780
  """
781
 
782
  # نمایش کامپوننت
783
  components.html(html, height=150)
784
 
785
  # مقدار نهایی
786
- value = st.session_state.get(key, default_value)
787
-
788
- # ذخیره مقدار جدید در session_state
789
- st.session_state[key] = value
790
-
791
- return value
 
792
 
793
  def create_ride_map():
794
  """ایجاد نقشه سفر با Folium - نسخه اصلاح شده با مناطق عمومی"""
@@ -1226,36 +1212,8 @@ def random_likert_questions():
1226
  }
1227
  ]
1228
  },
1229
- {
1230
- "title": "سوال توجه",
1231
- "key": "attention_check",
1232
- "questions": [
1233
- {"key": "attention_check2", "question": "تا چه مقدار با دقت به سوالات پاسخ می‌دهید؟", "scale": 7,"labels": ["خیلی کم", "خیلی زیاد"]}
1234
- ]
1235
- },
1236
- {
1237
- "title": "عدالت رویه‌ای",
1238
- "key": "procedural",
1239
- "questions": [
1240
- {"key": "procedural_1", "question": ".فرآیند و رویه قیمت‌گذاری پلتفرم قابل قبول است", "scale": 7, "labels": ["کاملاً مخالفم", "کاملاً موافقم"]},
1241
- {"key": "procedural_2", "question": ".فرآیند و رویه قیمت‌گذاری پلتفرم منصفانه است", "scale": 7, "labels": ["کاملاً مخالفم", "کاملاً موافقم"]},
1242
- {"key": "procedural_3", "question": ".فرآیند و رویه قیمت‌گذاری پلتفرم معقول است", "scale": 7, "labels": ["کاملاً مخالفم", "کاملاً موافقم"]}
1243
- ]
1244
- },
1245
- {
1246
- "title": "عدالت اطلاعاتی",
1247
- "key": "informational",
1248
- "questions": [
1249
- {"key": "informational_1", "question": "تا چه حد رهیار دلایل تعیین قیمت را به صورت صادقانه توضیح داد؟", "scale": 7, "labels": ["هیچ", "خیلی زیاد"]},
1250
- {"key": "informational_2", "question": "تا چه حد رهیار عوامل مؤثر بر تعیین قیمت را به طور کامل شرح داد؟", "scale": 7, "labels": ["هیچ", "خیلی زیاد"]},
1251
- {"key": "informational_3", "question": "تا چه حد دلایل ارائه‌شده توسط رهیار برای تعیین قیمت منطقی و قابل قبول بود؟", "scale": 7, "labels": ["هیچ", "خیلی زیاد"]},
1252
- {"key": "informational_4", "question": "تا چه حد توضیحات درباره تعیین قیمت بلافاصله و در زمان مناسب نمایش داده شد؟", "scale": 7, "labels": ["هیچ", "خیلی زیاد"]},
1253
- {"key": "informational_5", "question": "تا چه حد توضیحات رهیار درباره تعیین قیمت، متناسب با شرایط سفر شما بود؟", "scale": 7, "labels": ["هیچ", "خیلی زیاد"]}
1254
- ]
1255
- }
1256
  ]
1257
 
1258
-
1259
  # مقداردهی اولیه
1260
  if 'current_likert_group' not in st.session_state:
1261
  st.session_state.current_likert_group = 0
@@ -1264,45 +1222,28 @@ def random_likert_questions():
1264
  current_group = question_groups[st.session_state.current_likert_group]
1265
 
1266
  # نمایش عنوان گروه
1267
- st.markdown("""
1268
- <style>
1269
- .guide-text p {
1270
- font-size: 14px !important;
1271
- }
1272
- </style>
1273
- """, unsafe_allow_html=True)
1274
- st.markdown("""
1275
- <div class="guide-text" style="display: flex; flex-direction: column; align-items: center; background-color: #f0f2f6; border-radius: 10px; padding: 20px; gap: 15px;">
1276
- <div style="flex: 1;">
1277
- <h3>راهنمای پاسخ:</h3>
1278
- <p>برای پاسخ به سوالات، با یک طیف کشویی مواجه خواهید شد.</p>
1279
- <p>در این طیف 7 نقطه وجود دارد:
1280
- <br>- سمت چپ: کمترین مقدار
1281
- <br>- سمت راست: بیشترین مقدار
1282
- </p>
1283
- <p>نقطه روی کشو را جابجا کنید و در مقداری که پاسخ شماست متوقف شوید.</p>
1284
- <p>پاسخ شما زیر طیف نمایش داده خواهد شد.</p>
1285
- <p>اگر از پاسخ‌هایتان مطمئن هستید، روی دکمه «ادامه» کلیک کنید.</p>
1286
- </div>
1287
- </div>
1288
- """, unsafe_allow_html=True)
1289
-
1290
  # نمایش تمام سوالات این گروه در یک صفحه
1291
  for question in current_group['questions']:
 
1292
  answer = custom_likert_slider(question)
1293
- st.session_state.answers[question["key"]] = answer
1294
 
1295
-
1296
  # دکمه ادامه/اتمام
1297
  button_label = "ادامه به گروه بعدی" if st.session_state.current_likert_group < len(question_groups)-1 else "اتمام پرسشنامه"
1298
 
1299
  if st.button(button_label):
 
 
 
 
1300
  # رفتن به گروه بعدی یا صفحه پایانی
1301
  if st.session_state.current_likert_group < len(question_groups) - 1:
1302
  st.session_state.current_likert_group += 1
1303
  st.rerun()
1304
  else:
1305
- st.session_state.current_page = "explanation_questions"
1306
  st.rerun()
1307
 
1308
  def explanation_questions():
 
757
  <span>{labels[1]}</span>
758
  </div>
759
  <input type="range" id="{key}" min="1" max="{points}" step="1" value="{default_value}"
760
+ style="width: 100%; height: 10px; accent-color: #6a0dad; margin-bottom: 15px;">
 
761
  <div style="text-align: center; margin-top: 10px; direction: rtl;">
762
  پاسخ انتخاب‌شده: <strong><span id="output_{key}">{default_value}</span></strong>
763
  </div>
764
  </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
765
  """
766
 
767
  # نمایش کامپوننت
768
  components.html(html, height=150)
769
 
770
  # مقدار نهایی
771
+ return default_value
772
+
773
+
774
+ def handle_submit(question_key, value):
775
+ """ذخیره مقدار نهایی اسلایدر پس از کلیک روی دکمه 'ادامه'"""
776
+ st.session_state[question_key] = value
777
+ st.write(f"مقدار انتخاب‌شده برای {question_key}: {value}")
778
 
779
  def create_ride_map():
780
  """ایجاد نقشه سفر با Folium - نسخه اصلاح شده با مناطق عمومی"""
 
1212
  }
1213
  ]
1214
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1215
  ]
1216
 
 
1217
  # مقداردهی اولیه
1218
  if 'current_likert_group' not in st.session_state:
1219
  st.session_state.current_likert_group = 0
 
1222
  current_group = question_groups[st.session_state.current_likert_group]
1223
 
1224
  # نمایش عنوان گروه
1225
+ st.markdown(f"<h3>{current_group['title']}</h3>")
1226
+
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1227
  # نمایش تمام سوالات این گروه در یک صفحه
1228
  for question in current_group['questions']:
1229
+ # دریافت مقدار اسلایدر و ذخیره آن
1230
  answer = custom_likert_slider(question)
1231
+ st.session_state[question["key"]] = answer # ذخیره مقدار اسلایدر در session_state
1232
 
 
1233
  # دکمه ادامه/اتمام
1234
  button_label = "ادامه به گروه بعدی" if st.session_state.current_likert_group < len(question_groups)-1 else "اتمام پرسشنامه"
1235
 
1236
  if st.button(button_label):
1237
+ # ذخیره مقدار اسلایدر نهایی پس از کلیک
1238
+ for question in current_group['questions']:
1239
+ handle_submit(question["key"], st.session_state[question["key"]])
1240
+
1241
  # رفتن به گروه بعدی یا صفحه پایانی
1242
  if st.session_state.current_likert_group < len(question_groups) - 1:
1243
  st.session_state.current_likert_group += 1
1244
  st.rerun()
1245
  else:
1246
+ st.session_state.current_page = "thank_you"
1247
  st.rerun()
1248
 
1249
  def explanation_questions():