GSMEthesis commited on
Commit
d7ea1ef
·
verified ·
1 Parent(s): c557c3c

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +66 -50
app.py CHANGED
@@ -755,11 +755,27 @@ def custom_likert_slider(question_data):
755
  # اسلایدر پیش‌فرض Streamlit
756
  value = st.slider(question, min_value=1, max_value=points, value=st.session_state[key], step=1)
757
 
758
- # ذخیره‌سازی مقدار انتخاب‌شده در session_state
759
  st.session_state[key] = value
760
 
761
  # نمایش مقدار انتخاب‌شده زیر اسلایدر
762
- st.write(f"پاسخ انتخاب‌شده: {value} ({labels[0]} - {labels[1]})")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
763
 
764
  return value
765
 
@@ -1172,8 +1188,8 @@ def attention_check1():
1172
  st.warning("لطفاً یک گزینه را انتخاب کنید")
1173
 
1174
  def random_likert_questions():
1175
- """نمایش سوالات لیکرت به ترتیب مشخص با اسلایدر سفارشی"""
1176
- # تعریف گروه‌های سوالات با لیبل‌های سفارشی
1177
  question_groups = [
1178
  {
1179
  "title": "عدالت توزیعی",
@@ -1190,48 +1206,22 @@ def random_likert_questions():
1190
  "question": "قیمتی که به شما ارائه شد، چگونه بود؟",
1191
  "scale": 7,
1192
  "labels": ["کاملاً غیرمعقول", "کاملاً معقول"]
1193
- }
1194
- ]
1195
- }
1196
- ]
1197
-
1198
- # دریافت گروه جاری
1199
- current_group = question_groups[0]
1200
- st.markdown(f"<h3>{current_group['title']}</h3>")
1201
-
1202
- for question in current_group["questions"]:
1203
- answer = custom_likert_slider(question)
1204
- # ذخیره مقدار انتخابی با نام output_{key}
1205
- st.session_state[f"output_{question['key']}"] = answer
1206
-
1207
- # دکمه ادامه
1208
- if st.button("ادامه"):
1209
- st.write("مقادیر انتخابی ذخیره شده در session_state:")
1210
- st.write(st.session_state) # نمایش محتویات session_state برای بررسی
1211
-
1212
-
1213
- def random_likert_questions():
1214
- """نمایش سوالات لیکرت به ترتیب مشخص با اسلایدر پیش‌فرض Streamlit"""
1215
- # تعریف گروه‌های سوالات
1216
- question_groups = [
1217
- {
1218
- "title": "عدالت توزیعی",
1219
- "key": "distributive",
1220
- "questions": [
1221
- {
1222
- "key": "distributive_1",
1223
- "question": "قیمتی که به شما ارائه شد، چگونه بود؟",
1224
- "scale": 7,
1225
- "labels": ["کاملاً نامنصفانه", "کاملاً منصفانه"]
1226
  },
1227
  {
1228
- "key": "distributive_2",
1229
  "question": "قیمتی که به شما ارائه شد، چگونه بود؟",
1230
  "scale": 7,
1231
- "labels": ["کاملاً غیرمعقول", "کاملاً معقول"]
1232
  }
1233
  ]
1234
  },
 
 
 
 
 
 
 
1235
  {
1236
  "title": "عدالت رویه‌ای",
1237
  "key": "procedural",
@@ -1240,24 +1230,50 @@ def random_likert_questions():
1240
  {"key": "procedural_2", "question": ".فرآیند و رویه قیمت‌گذاری پلتفرم منصفانه است", "scale": 7, "labels": ["کاملاً مخالفم", "کاملاً موافقم"]},
1241
  {"key": "procedural_3", "question": ".فرآیند و رویه قیمت‌گذاری پلتفرم معقول است", "scale": 7, "labels": ["کاملاً مخالفم", "کاملاً موافقم"]}
1242
  ]
 
 
 
 
 
 
 
 
 
 
 
1243
  }
1244
  ]
 
 
 
 
1245
 
1246
  # دریافت گروه جاری
1247
- current_group = question_groups[0]
 
 
1248
  st.markdown(f"<h3>{current_group['title']}</h3>")
1249
 
1250
- for question in current_group["questions"]:
1251
- # فراخوانی اسلایدر پیش‌فرض برای هر سوال
1252
  answer = custom_likert_slider(question)
1253
- # ذخیره مقدار انتخابی در session_state
1254
- st.session_state[f"output_{question['key']}"] = answer
1255
-
1256
- # دکمه ادامه
1257
- if st.button("ادامه"):
1258
- st.write("مقادیر انتخابی ذخیره شده در session_state:")
1259
- st.write(st.session_state) # نمایش محتویات session_state برای بررسی
1260
-
 
 
 
 
 
 
 
 
 
 
1261
 
1262
  def explanation_questions():
1263
  """نمایش سوالات تکمیلی به صورت مرحله‌ای با دکمه ادامه"""
 
755
  # اسلایدر پیش‌فرض Streamlit
756
  value = st.slider(question, min_value=1, max_value=points, value=st.session_state[key], step=1)
757
 
758
+ # ذخیره‌سازی مقدار انتخابی در session_state
759
  st.session_state[key] = value
760
 
761
  # نمایش مقدار انتخاب‌شده زیر اسلایدر
762
+ st.markdown(f"<p style='text-align:center; color:#6a0dad; font-weight:bold;'>پاسخ انتخاب‌شده: {value}</p>", unsafe_allow_html=True)
763
+
764
+ # شخصی‌سازی لیبل‌ها برای سر و ته اسلایدر
765
+ st.markdown(f"""
766
+ <style>
767
+ div[role='slider'] {{
768
+ color: #6a0dad;
769
+ }}
770
+ .stSlider .st-bf .st-bc {{
771
+ display: flex;
772
+ justify-content: space-between;
773
+ }}
774
+ .stSlider .st-bf .st-bc span {{
775
+ font-size: 12px;
776
+ }}
777
+ </style>
778
+ """, unsafe_allow_html=True)
779
 
780
  return value
781
 
 
1188
  st.warning("لطفاً یک گزینه را انتخاب کنید")
1189
 
1190
  def random_likert_questions():
1191
+ """نمایش سوالات لیکرت به ترتیب مشخص با اسلایدر پیش‌فرض Streamlit"""
1192
+ # تعریف گروه‌های سوالات
1193
  question_groups = [
1194
  {
1195
  "title": "عدالت توزیعی",
 
1206
  "question": "قیمتی که به شما ارائه شد، چگونه بود؟",
1207
  "scale": 7,
1208
  "labels": ["کاملاً غیرمعقول", "کاملاً معقول"]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1209
  },
1210
  {
1211
+ "key": "distributive_3",
1212
  "question": "قیمتی که به شما ارائه شد، چگونه بود؟",
1213
  "scale": 7,
1214
+ "labels": ["کاملاً غیرقابل قبول", "کاملاً قابل قبول"]
1215
  }
1216
  ]
1217
  },
1218
+ {
1219
+ "title": "سوال توجه",
1220
+ "key": "attention_check",
1221
+ "questions": [
1222
+ {"key": "attention_check2", "question": "تا چه مقدار با دقت به سوالات پاسخ می‌دهید؟", "scale": 7, "labels": ["خیلی کم", "خیلی زیاد"]}
1223
+ ]
1224
+ },
1225
  {
1226
  "title": "عدالت رویه‌ای",
1227
  "key": "procedural",
 
1230
  {"key": "procedural_2", "question": ".فرآیند و رویه قیمت‌گذاری پلتفرم منصفانه است", "scale": 7, "labels": ["کاملاً مخالفم", "کاملاً موافقم"]},
1231
  {"key": "procedural_3", "question": ".فرآیند و رویه قیمت‌گذاری پلتفرم معقول است", "scale": 7, "labels": ["کاملاً مخالفم", "کاملاً موافقم"]}
1232
  ]
1233
+ },
1234
+ {
1235
+ "title": "عدالت اطلاعاتی",
1236
+ "key": "informational",
1237
+ "questions": [
1238
+ {"key": "informational_1", "question": "تا چه حد رهیار دلایل تعیین قیمت را به صورت صادقانه توضیح داد؟", "scale": 7, "labels": ["هیچ", "خیلی زیاد"]},
1239
+ {"key": "informational_2", "question": "تا چه حد رهیار عوامل مؤثر بر تعیین قیمت را به طور کامل شرح داد؟", "scale": 7, "labels": ["هیچ", "خیلی زیاد"]},
1240
+ {"key": "informational_3", "question": "تا چه حد دلایل ارائه‌شده توسط رهیار برای تعیین قیمت منطقی و قابل قبول بود؟", "scale": 7, "labels": ["هیچ", "خیلی زیاد"]},
1241
+ {"key": "informational_4", "question": "تا چه حد توضیحات درباره تعیین قیمت بلافاصله و در زمان مناسب نمایش داده شد؟", "scale": 7, "labels": ["هیچ", "خیلی زیاد"]},
1242
+ {"key": "informational_5", "question": "تا چه حد توضیحات رهیار درباره تعیین قیمت، متناسب با شرایط سفر شما بود؟", "scale": 7, "labels": ["هیچ", "خیلی زیاد"]}
1243
+ ]
1244
  }
1245
  ]
1246
+
1247
+ # مقداردهی اولیه
1248
+ if 'current_likert_group' not in st.session_state:
1249
+ st.session_state.current_likert_group = 0
1250
 
1251
  # دریافت گروه جاری
1252
+ current_group = question_groups[st.session_state.current_likert_group]
1253
+
1254
+ # نمایش عنوان گروه
1255
  st.markdown(f"<h3>{current_group['title']}</h3>")
1256
 
1257
+ for question in current_group['questions']:
 
1258
  answer = custom_likert_slider(question)
1259
+ st.session_state.answers[question["key"]] = answer
1260
+
1261
+ # دکمه ادامه/اتمام
1262
+ button_label = "ادامه به گروه بعدی" if st.session_state.current_likert_group < len(question_groups)-1 else "اتمام پرسشنامه"
1263
+
1264
+ if st.button(button_label):
1265
+ # ذخیره پاسخ‌ها قبل از رفتن به گروه بعدی
1266
+ for question in current_group['questions']:
1267
+ if question["key"] in st.session_state:
1268
+ st.session_state.answers[question["key"]] = st.session_state[question["key"]]
1269
+
1270
+ # رفتن به گروه بعدی یا صفحه پایانی
1271
+ if st.session_state.current_likert_group < len(question_groups) - 1:
1272
+ st.session_state.current_likert_group += 1
1273
+ st.rerun()
1274
+ else:
1275
+ st.session_state.current_page = "explanation_questions"
1276
+ st.rerun()
1277
 
1278
  def explanation_questions():
1279
  """نمایش سوالات تکمیلی به صورت مرحله‌ای با دکمه ادامه"""