GSMEthesis commited on
Commit
889692c
·
verified ·
1 Parent(s): 214b5e6

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +36 -47
app.py CHANGED
@@ -1118,75 +1118,55 @@ def attention_check1():
1118
 
1119
  def random_likert_questions():
1120
  """نمایش تصادفی سوالات لیکرت با اسلایدر جدید"""
1121
- if 'all_questions' not in st.session_state:
1122
- # تعریف تمام سوالات با نوع مقیاس و لیبل مربوطه
1123
  st.session_state.all_questions = [
1124
- # سوالات informational (5 گزینه‌ای)
1125
- {"key": "informational_1", "question": "پلتفرم به صورت صادقانه دلایل تعیین قیمت را توضیح داد.", "scale": "5point", "label": "informational_1"},
1126
- {"key": "informational_2", "question": "پلتفرم به طور کامل عوامل مؤثر بر تعیین قیمت را شرح داد.", "scale": "5point", "label": "informational_2"},
1127
- {"key": "informational_3", "question": "دلایل ارائه‌شده برای تعیین قیمت منطقی و قابل قبول بود.", "scale": "5point", "label": "informational_3"},
1128
- {"key": "informational_4", "question": "توضیحات درباره تعیین قیمت بلافاصله و در زمان مناسب نمایش داده شد.", "scale": "5point", "label": "informational_4"},
1129
- {"key": "informational_5", "question": "توضیحات پلتفرم درباره تعیین قیمت، متناسب با شرایط سفر من بود.", "scale": "5point", "label": "informational_5"},
1130
-
1131
- # سوالات distributive (7 گزینه‌ای)
1132
- {"key": "distributive_1", "question": "قیمتی که به شما ارائه شد، منصفانه است.", "scale": "7point", "label": "distributive_1"},
1133
- {"key": "distributive_2", "question": "قیمتی که به شما ارائه شد، معقول است.", "scale": "7point", "label": "distributive_2"},
1134
- {"key": "distributive_3", "question": "قیمتی که به شما ارائه شد، قابل قبول است.", "scale": "7point", "label": "distributive_3"},
1135
-
1136
- # سوالات procedural (7 گزینه‌ای)
1137
- {"key": "procedural_1", "question": "فرآیند و رویه قیمت‌گذاری پلتفرم قابل قبول است.", "scale": "7point", "label": "procedural_1"},
1138
- {"key": "procedural_2", "question": "فرآیند و رویه قیمت‌گذاری پلتفرم منصفانه است.", "scale": "7point", "label": "procedural_2"},
1139
- {"key": "procedural_3", "question": "فرآیند و رویه قیمت‌گذاری پلتفرم معقول است.", "scale": "7point", "label": "procedural_3"},
1140
-
1141
- # سوال attention_check2 به صورت رندوم در میان سوالات دیگر
1142
- {"key": "attention_check2", "question": "حاصل ۵ × ۳ به اضافه ۲ چقدر می‌شود؟", "scale": "attention", "label": "attention_check2"}
1143
  ]
1144
-
1145
- # تصادفی‌سازی ترتیب سوالات
1146
  random.shuffle(st.session_state.all_questions)
1147
  st.session_state.current_question_index = 0
1148
-
1149
- # نمایش توضیحات بالای سوالات (فقط برای سوالات لیکرت)
1150
- if (st.session_state.current_question_index < len(st.session_state.all_questions)) and \
1151
- (st.session_state.all_questions[st.session_state.current_question_index]["scale"] != "attention"):
1152
- st.markdown("""
1153
- <div style="background-color: #f8f9fa; padding: 15px; border-radius: 10px; margin-bottom: 20px;">
1154
- <p style="font-weight: bold;">راهنمای پاسخگویی:</p>
1155
- <p>لطفا موافقت خود را با سوالات زیر با حرکت دادن اسلایدر نقطه‌ای اعلام کنید.</p>
1156
- <p>سمت چپ: کمترین میزان موافقت | سمت راست: بیشترین میزان موافقت</p>
1157
- </div>
1158
- """, unsafe_allow_html=True)
1159
-
1160
  if st.session_state.current_question_index < len(st.session_state.all_questions):
1161
  q = st.session_state.all_questions[st.session_state.current_question_index]
1162
 
1163
- # نمایش سوال attention_check2 به صورت خاص
1164
  if q["scale"] == "attention":
1165
  st.markdown("### سوال")
1166
  answer = st.radio(
1167
- "حاصل ۵ × ۳ به اضافه ۲ چقدر می‌شود؟",
1168
  ["1", "13", "15", "17", "دیگر"],
1169
  index=None,
1170
- key="att2_radio"
1171
  )
1172
 
1173
- if st.button("ادامه", key="att2_btn"):
1174
  if answer:
1175
  st.session_state.attention_check2 = answer
1176
  st.session_state.current_question_index += 1
1177
- time.sleep(0.5)
1178
  st.rerun()
1179
  else:
1180
  st.warning("لطفاً یک گزینه را انتخاب کنید")
1181
  else:
1182
- # نمایش سوالات لیکرت با اسلایدر جدید
 
 
1183
  answer = create_likert_question(q["question"], q["key"], q["scale"])
1184
 
1185
- if st.button("ادامه", key=f"continue_{q['key']}"):
1186
  if answer:
1187
  st.session_state[q["key"]] = answer
1188
  st.session_state.current_question_index += 1
1189
- time.sleep(0.5)
1190
  st.rerun()
1191
  else:
1192
  st.warning("لطفاً پاسخ خود را با حرکت دادن اسلایدر مشخص کنید")
@@ -1402,6 +1382,7 @@ def main():
1402
  user_agent = st.query_params.get("user_agent", [""])[0]
1403
  st.session_state.is_desktop = "mobile" not in user_agent.lower()
1404
 
 
1405
  if 'current_page' not in st.session_state:
1406
  st.session_state.current_page = "welcome"
1407
  st.session_state.scenario_type = random.choice(["control", "input", "counterfactual"])
@@ -1411,11 +1392,17 @@ def main():
1411
  st.session_state.price_accepted = 0
1412
  st.session_state.attention_check1 = None
1413
  st.session_state.attention_check2 = None
1414
-
1415
- # اضافه کردن متغیرهای جدید برای سوالات لیکرت
1416
- if 'all_questions' not in st.session_state:
1417
  st.session_state.all_questions = []
1418
  st.session_state.current_question_index = 0
 
 
 
 
 
 
 
 
 
1419
 
1420
  pages = {
1421
  "welcome": welcome_page,
@@ -1429,7 +1416,9 @@ def main():
1429
  "thank_you": thank_you_page
1430
  }
1431
 
1432
- pages[st.session_state.current_page]()
 
 
1433
 
1434
  if __name__ == "__main__":
1435
  main()
 
1118
 
1119
  def random_likert_questions():
1120
  """نمایش تصادفی سوالات لیکرت با اسلایدر جدید"""
1121
+ if not st.session_state.all_questions:
1122
+ # تعریف تمام سوالات فقط اگر خالی باشند
1123
  st.session_state.all_questions = [
1124
+ {"key": "informational_1", "question": "پلتفرم به صورت صادقانه دلایل تعیین قیمت را توضیح داد.", "scale": "5point"},
1125
+ {"key": "informational_2", "question": "پلتفرم به طور کامل عوامل مؤثر بر تعیین قیمت را شرح داد.", "scale": "5point"},
1126
+ {"key": "informational_3", "question": "دلایل ارائه‌شده برای تعیین قیمت منطقی و قابل قبول بود.", "scale": "5point"},
1127
+ {"key": "informational_4", "question": "توضیحات درباره تعیین قیمت بلافاصله و در زمان مناسب نمایش داده شد.", "scale": "5point"},
1128
+ {"key": "informational_5", "question": "توضیحات پلتفرم درباره تعیین قیمت، متناسب با شرایط سفر من بود.", "scale": "5point"},
1129
+ {"key": "distributive_1", "question": "قیمتی که به شما ارائه شد، منصفانه است.", "scale": "7point"},
1130
+ {"key": "distributive_2", "question": "قیمتی که به شما ارائه شد، معقول است.", "scale": "7point"},
1131
+ {"key": "distributive_3", "question": "قیمتی که به شما ارائه شد، قابل قبول است.", "scale": "7point"},
1132
+ {"key": "procedural_1", "question": "فرآیند و رویه قیمت‌گذاری پلتفرم قابل قبول است.", "scale": "7point"},
1133
+ {"key": "procedural_2", "question": "فرآیند و رویه قیمت‌گذاری پلتفرم منصفانه است.", "scale": "7point"},
1134
+ {"key": "procedural_3", "question": "فرآیند و رویه قیمت‌گذاری پلتفرم معقول است.", "scale": "7point"},
1135
+ {"key": "attention_check2", "question": "حاصل ۵ × ۳ به اضافه ۲ چقدر می‌شود؟", "scale": "attention"}
 
 
 
 
 
 
 
1136
  ]
 
 
1137
  random.shuffle(st.session_state.all_questions)
1138
  st.session_state.current_question_index = 0
1139
+
1140
+ # نمایش سوال جاری
 
 
 
 
 
 
 
 
 
 
1141
  if st.session_state.current_question_index < len(st.session_state.all_questions):
1142
  q = st.session_state.all_questions[st.session_state.current_question_index]
1143
 
 
1144
  if q["scale"] == "attention":
1145
  st.markdown("### سوال")
1146
  answer = st.radio(
1147
+ q["question"],
1148
  ["1", "13", "15", "17", "دیگر"],
1149
  index=None,
1150
+ key=f"att2_{st.session_state.current_question_index}"
1151
  )
1152
 
1153
+ if st.button("ادامه", key=f"att2_btn_{st.session_state.current_question_index}"):
1154
  if answer:
1155
  st.session_state.attention_check2 = answer
1156
  st.session_state.current_question_index += 1
 
1157
  st.rerun()
1158
  else:
1159
  st.warning("لطفاً یک گزینه را انتخاب کنید")
1160
  else:
1161
+ st.markdown(f"<h3>سوال {st.session_state.current_question_index+1} از {len(st.session_state.all_questions)}</h3>",
1162
+ unsafe_allow_html=True)
1163
+
1164
  answer = create_likert_question(q["question"], q["key"], q["scale"])
1165
 
1166
+ if st.button("ادامه", key=f"continue_{st.session_state.current_question_index}"):
1167
  if answer:
1168
  st.session_state[q["key"]] = answer
1169
  st.session_state.current_question_index += 1
 
1170
  st.rerun()
1171
  else:
1172
  st.warning("لطفاً پاسخ خود را با حرکت دادن اسلایدر مشخص کنید")
 
1382
  user_agent = st.query_params.get("user_agent", [""])[0]
1383
  st.session_state.is_desktop = "mobile" not in user_agent.lower()
1384
 
1385
+ # مقداردهی اولیه تمام متغیرهای مورد نیاز
1386
  if 'current_page' not in st.session_state:
1387
  st.session_state.current_page = "welcome"
1388
  st.session_state.scenario_type = random.choice(["control", "input", "counterfactual"])
 
1392
  st.session_state.price_accepted = 0
1393
  st.session_state.attention_check1 = None
1394
  st.session_state.attention_check2 = None
 
 
 
1395
  st.session_state.all_questions = []
1396
  st.session_state.current_question_index = 0
1397
+
1398
+ # مقداردهی اولیه برای تمام سوالات لیکرت
1399
+ likert_questions = [
1400
+ "informational_1", "informational_2", "informational_3", "informational_4", "informational_5",
1401
+ "distributive_1", "distributive_2", "distributive_3",
1402
+ "procedural_1", "procedural_2", "procedural_3"
1403
+ ]
1404
+ for q in likert_questions:
1405
+ st.session_state[q] = None
1406
 
1407
  pages = {
1408
  "welcome": welcome_page,
 
1416
  "thank_you": thank_you_page
1417
  }
1418
 
1419
+ # نمایش صفحه جاری
1420
+ current_page = pages.get(st.session_state.current_page, welcome_page)
1421
+ current_page()
1422
 
1423
  if __name__ == "__main__":
1424
  main()