Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
|
@@ -1118,75 +1118,55 @@ def attention_check1():
|
|
| 1118 |
|
| 1119 |
def random_likert_questions():
|
| 1120 |
"""نمایش تصادفی سوالات لیکرت با اسلایدر جدید"""
|
| 1121 |
-
if
|
| 1122 |
-
# تعریف تمام سوالات
|
| 1123 |
st.session_state.all_questions = [
|
| 1124 |
-
|
| 1125 |
-
{"key": "
|
| 1126 |
-
{"key": "
|
| 1127 |
-
{"key": "
|
| 1128 |
-
{"key": "
|
| 1129 |
-
{"key": "
|
| 1130 |
-
|
| 1131 |
-
|
| 1132 |
-
{"key": "
|
| 1133 |
-
{"key": "
|
| 1134 |
-
{"key": "
|
| 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="
|
| 1171 |
)
|
| 1172 |
|
| 1173 |
-
if st.button("ادامه", key="
|
| 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_{
|
| 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 |
-
|
|
|
|
|
|
|
| 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()
|