Maryam Ilka commited on
Commit
a3fc044
·
verified ·
1 Parent(s): 27790d3

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +64 -59
app.py CHANGED
@@ -609,62 +609,19 @@ def map_view():
609
  st.session_state.current_page = "attention_check1"
610
  st.rerun()
611
 
612
-
613
- def random_likert_questions():
614
- """نمایش تصادفی سوالات لیکرت"""
615
- if 'all_questions' not in st.session_state:
616
- # تعریف تمام سوالات
617
- dp_questions = [
618
- {"key": "distributive_1", "question": "قیمتی که به شما ارائه شد، منصفانه است.", "scale": "7point"},
619
- {"key": "distributive_2", "question": "قیمتی که به شما ارائه شد، معقول است.", "scale": "7point"},
620
- {"key": "distributive_3", "question": "قیمتی که به شما ارائه شد، قابل قبول است.", "scale": "7point"},
621
- {"key": "procedural_1", "question": "فرآیند و رویه قیمت‌گذاری پلتفرم قابل قبول است.", "scale": "7point"},
622
- {"key": "procedural_2", "question": "فرآیند و رویه قیمت‌گذاری پلتفرم منصفانه است.", "scale": "7point"},
623
- {"key": "procedural_3", "question": "فرآیند و رویه قیمت‌گذاری پلتفرم معقول است.", "scale": "7point"}
624
- ]
625
-
626
- info_questions = [
627
- {"key": "informational_1", "question": "پلتفرم به صورت صادقانه دلایل تغییر قیمت (مثل افزایش تقاضا یا شرایط جوی) را توضیح داد.", "scale": "5point"},
628
- {"key": "informational_2", "question": "پلتفرم به طور کامل عوامل مؤثر بر قیمت (مثل ترافیک، تعداد رانندگان) را شرح داد.", "scale": "5point"},
629
- {"key": "informational_3", "question": "دلایل ارائه‌شده برای تغییر قیمت منطقی و قابل قبول بود.", "scale": "5point"},
630
- {"key": "informational_4", "question": "توضیحات درباره قیمت بلافاصله و در زمان مناسب نمایش داده شد.", "scale": "5point"},
631
- {"key": "informational_5", "question": "توضیحات پلتفرم متناسب با شرایط سفر من (مثل مسیر یا ساعت درخواست) بود.", "scale": "5point"}
632
- ]
633
-
634
- # تصادفی‌سازی سوالات
635
- random.shuffle(dp_questions)
636
- random.shuffle(info_questions)
637
-
638
- # ذخیره در session
639
- st.session_state.dp_questions = dp_questions
640
- st.session_state.info_questions = info_questions
641
- st.session_state.current_phase = 'dp' # distributive/procedural phase
642
- st.session_state.current_q_index = 0
643
-
644
- # انتخاب سوالات جاری
645
- current_questions = st.session_state.dp_questions if st.session_state.current_phase == 'dp' else st.session_state.info_questions
646
-
647
- if st.session_state.current_q_index < len(current_questions):
648
- q = current_questions[st.session_state.current_q_index]
649
- selected = create_likert_question(q["question"], q["key"], q["scale"])
650
-
651
- if selected:
652
- st.session_state[q["key"]] = selected
653
- st.session_state.current_q_index += 1
654
- time.sleep(0.3) # تاخیر کوتاه برای UX بهتر
655
- st.rerun()
656
- else:
657
- if st.session_state.current_phase == 'dp':
658
- # بعد از اتمام سوالات distributive/procedural
659
- st.session_state.current_page = "attention_check2"
660
- else:
661
- # بعد از اتمام سوالات informational
662
- st.session_state.current_page = "explanation_questions"
663
- st.rerun()
664
-
665
  def attention_check1():
666
- """سوال توجه اول"""
 
 
 
 
 
 
 
 
667
  st.markdown("### سوال توجه")
 
 
668
  answer = st.radio(
669
  "رنگ سازمانی اپلیکیشن رهیار چه رنگی بود؟",
670
  ["قرمز", "سبز", "بنفش", "آبی", "زرد"],
@@ -674,15 +631,24 @@ def attention_check1():
674
 
675
  if st.button("ادامه", key="att1_btn"):
676
  if answer:
677
- st.session_state.attention_check1 = answer
678
  st.session_state.current_page = "random_likert_questions"
679
  st.rerun()
680
  else:
681
  st.warning("لطفاً یک گزینه را انتخاب کنید")
682
 
683
  def attention_check2():
684
- """سوال توجه دوم"""
 
 
 
 
 
 
 
 
685
  st.markdown("### سوال توجه")
 
686
  answer = st.radio(
687
  "نام اپلیکیشنی که در این تحقیق بررسی می‌شود چیست؟",
688
  ["اسنپ", "تپسی", "راهیار", "ماکسیم", "دیگر"],
@@ -693,12 +659,51 @@ def attention_check2():
693
  if st.button("ادامه", key="att2_btn"):
694
  if answer:
695
  st.session_state.attention_check2 = answer
696
- # تغییر فاز به سوالات informational
697
- st.session_state.current_phase = 'info'
698
- st.session_state.current_q_index = 0
699
  st.rerun()
700
  else:
701
  st.warning("لطفاً یک گزینه را انتخاب کنید")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
702
 
703
  def explanation_questions():
704
  """سوالات درباره توضیحات قیمت"""
 
609
  st.session_state.current_page = "attention_check1"
610
  st.rerun()
611
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
612
  def attention_check1():
613
+ """سوال توجه اول (بدون بررسی پاسخ صحیح)"""
614
+ st.markdown("""
615
+ <style>
616
+ /* تضمین رنگ متن برای تمام سطوح */
617
+ .st-ec, .st-ed, .st-ee, .st-ef, .st-eg, .st-eh, .st-ei, .st-ej {
618
+ color: black !important;
619
+ }
620
+ </style>
621
+ """, unsafe_allow_html=True)
622
  st.markdown("### سوال توجه")
623
+
624
+ # استفاده از st.radio با key منحصر به فرد
625
  answer = st.radio(
626
  "رنگ سازمانی اپلیکیشن رهیار چه رنگی بود؟",
627
  ["قرمز", "سبز", "بنفش", "آبی", "زرد"],
 
631
 
632
  if st.button("ادامه", key="att1_btn"):
633
  if answer:
634
+ st.session_state.attention_check1 = answer # ذخیره پاسخ در session_state
635
  st.session_state.current_page = "random_likert_questions"
636
  st.rerun()
637
  else:
638
  st.warning("لطفاً یک گزینه را انتخاب کنید")
639
 
640
  def attention_check2():
641
+ """سوال توجه دوم (بدون بررسی پاسخ صحیح)"""
642
+ st.markdown("""
643
+ <style>
644
+ /* تضمین رنگ متن برای تمام سطوح */
645
+ .st-ec, .st-ed, .st-ee, .st-ef, .st-eg, .st-eh, .st-ei, .st-ej {
646
+ color: black !important;
647
+ }
648
+ </style>
649
+ """, unsafe_allow_html=True)
650
  st.markdown("### سوال توجه")
651
+
652
  answer = st.radio(
653
  "نام اپلیکیشنی که در این تحقیق بررسی می‌شود چیست؟",
654
  ["اسنپ", "تپسی", "راهیار", "ماکسیم", "دیگر"],
 
659
  if st.button("ادامه", key="att2_btn"):
660
  if answer:
661
  st.session_state.attention_check2 = answer
662
+ st.session_state.current_page = "explanation_questions"
 
 
663
  st.rerun()
664
  else:
665
  st.warning("لطفاً یک گزینه را انتخاب کنید")
666
+
667
+ def random_likert_questions():
668
+ """نمایش تصادفی سوالات لیکرت"""
669
+ if 'all_questions' not in st.session_state:
670
+ # تعریف تمام سوالات با نوع مقیاس و لیبل مربوطه
671
+ st.session_state.all_questions = [
672
+ # سوالات informational (5 گزینه‌ای)
673
+ {"key": "informational_1", "question": "پلتفرم به صورت صادقانه دلایل تغییر قیمت (مثل افزایش تقاضا یا شرایط جوی) را توضیح داد.", "scale": "5point", "label": "informational_1"},
674
+ {"key": "informational_2", "question": "پلتفرم به طور کامل عوامل مؤثر بر قیمت (مثل ترافیک، تعداد رانندگان) را شرح داد.", "scale": "5point", "label": "informational_2"},
675
+ {"key": "informational_3", "question": "دلایل ارائه‌شده برای تغییر قیمت منطقی و قابل قبول بود.", "scale": "5point", "label": "informational_3"},
676
+ {"key": "informational_4", "question": "توضیحات درباره قیمت بلافاصله و در زمان مناسب نمایش داده شد.", "scale": "5point", "label": "informational_4"},
677
+ {"key": "informational_5", "question": "توضیحات پلتفرم متناسب با شرایط سفر من (مثل مسیر یا ساعت درخواست) بود.", "scale": "5point", "label": "informational_5"},
678
+
679
+ # سوالات distributive (7 گزینه‌ای)
680
+ {"key": "distributive_1", "question": "قیمتی که به شما ارائه شد، منصفانه است.", "scale": "7point", "label": "distributive_1"},
681
+ {"key": "distributive_2", "question": "قیمتی که به شما ارائه شد، معقول است.", "scale": "7point", "label": "distributive_2"},
682
+ {"key": "distributive_3", "question": "قیمتی که به شما ارائه شد، قابل قبول است.", "scale": "7point", "label": "distributive_3"},
683
+
684
+ # سوالات procedural (7 گزینه‌ای)
685
+ {"key": "procedural_1", "question": "فرآیند و رویه قیمت‌گذاری پلتفرم قابل قبول است.", "scale": "7point", "label": "procedural_1"},
686
+ {"key": "procedural_2", "question": "فرآیند و رویه قیمت‌گذاری پلتفرم منصفانه است.", "scale": "7point", "label": "procedural_2"},
687
+ {"key": "procedural_3", "question": "فرآیند و رویه قیمت‌گذاری پلتفرم معقول است.", "scale": "7point", "label": "procedural_3"}
688
+ ]
689
+
690
+ # تصادفی‌سازی ترتیب سوالات
691
+ random.shuffle(st.session_state.all_questions)
692
+ st.session_state.current_question_index = 0
693
+
694
+ if st.session_state.current_question_index < len(st.session_state.all_questions):
695
+ q = st.session_state.all_questions[st.session_state.current_question_index]
696
+
697
+ # نمایش سوال بدون شماره
698
+ answer = create_likert_question(q["question"], q["key"], q["scale"])
699
+
700
+ if answer:
701
+ st.session_state.current_question_index += 1
702
+ time.sleep(0.5)
703
+ st.rerun()
704
+ else:
705
+ st.session_state.current_page = "attention_check2"
706
+ st.rerun()
707
 
708
  def explanation_questions():
709
  """سوالات درباره توضیحات قیمت"""