Maryam Ilka commited on
Commit
35fb670
·
verified ·
1 Parent(s): eed3d4c

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +53 -73
app.py CHANGED
@@ -609,79 +609,50 @@ def map_view():
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
- ["قرمز", "سبز", "بنفش", "آبی", "زرد"],
628
- index=None,
629
- key="att1_radio"
630
- )
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 random_likert_questions():
641
  """نمایش تصادفی سوالات لیکرت"""
642
  if 'all_questions' not in st.session_state:
643
- # تعریف تمام سوالات با نوع مقیاس و لیبل مربوطه
644
- informational_questions = [
645
- {"key": "informational_1", "question": "پلتفرم به صورت صادقانه دلایل تغییر قیمت (مثل افزایش تقاضا یا شرایط جوی) را توضیح داد.", "scale": "5point", "label": "informational_1"},
646
- {"key": "informational_2", "question": "پلتفرم به طور کامل عوامل مؤثر بر قیمت (مثل ترافیک، تعداد رانندگان) را شرح داد.", "scale": "5point", "label": "informational_2"},
647
- {"key": "informational_3", "question": "دلایل ارائه‌شده برای تغییر قیمت منطقی و قابل قبول بود.", "scale": "5point", "label": "informational_3"},
648
- {"key": "informational_4", "question": "توضیحات درباره قیمت بلافاصله و در زمان مناسب نمایش داده شد.", "scale": "5point", "label": "informational_4"},
649
- {"key": "informational_5", "question": "توضیحات پلتفرم متناسب با شرایط سفر من (مثل مسیر یا ساعت درخواست) بود.", "scale": "5point", "label": "informational_5"}
650
- ]
651
-
652
- distributive_procedural_questions = [
653
  # سوالات distributive (7 گزینه‌ای)
654
- {"key": "distributive_1", "question": "قیمتی که به شما ارائه شد، منصفانه است.", "scale": "7point", "label": "distributive_1"},
655
- {"key": "distributive_2", "question": "قیمتی که به شما ارائه شد، معقول است.", "scale": "7point", "label": "distributive_2"},
656
- {"key": "distributive_3", "question": "قیمتی که به شما ارائه شد، قابل قبول است.", "scale": "7point", "label": "distributive_3"},
657
 
658
  # سوالات procedural (7 گزینه‌ای)
659
- {"key": "procedural_1", "question": "فرآیند و رویه قیمت‌گذاری پلتفرم قابل قبول است.", "scale": "7point", "label": "procedural_1"},
660
- {"key": "procedural_2", "question": "فرآیند و رویه قیمت‌گذاری پلتفرم منصفانه است.", "scale": "7point", "label": "procedural_2"},
661
- {"key": "procedural_3", "question": "فرآیند و رویه قیمت‌گذاری پلتفرم معقول است.", "scale": "7point", "label": "procedural_3"}
 
 
 
 
 
 
 
662
  ]
663
 
664
- # تصادفی‌سازی ترتیب سوالات
665
- random.shuffle(distributive_procedural_questions)
666
- random.shuffle(informational_questions)
667
 
668
- # ذخیره سوالات در session_state به صورت جداگانه
669
- st.session_state.distributive_procedural_questions = distributive_procedural_questions
670
- st.session_state.informational_questions = informational_questions
671
 
672
- # شروع با سوالات distributive/procedural
673
- st.session_state.current_question_phase = "distributive_procedural"
674
  st.session_state.current_question_index = 0
675
-
676
- if st.session_state.current_question_phase == "distributive_procedural":
677
- questions = st.session_state.distributive_procedural_questions
678
- else: # informational
679
- questions = st.session_state.informational_questions
680
-
681
- if st.session_state.current_question_index < len(questions):
682
- q = questions[st.session_state.current_question_index]
683
-
684
- # نمایش سوال بدون شماره
685
  answer = create_likert_question(q["question"], q["key"], q["scale"])
686
 
687
  if answer:
@@ -689,7 +660,7 @@ def random_likert_questions():
689
  time.sleep(0.5)
690
  st.rerun()
691
  else:
692
- if st.session_state.current_question_phase == "distributive_procedural":
693
  # بعد از اتمام سوالات distributive/procedural، برو به اتنشن چک دوم
694
  st.session_state.current_page = "attention_check2"
695
  else:
@@ -697,18 +668,27 @@ def random_likert_questions():
697
  st.session_state.current_page = "explanation_questions"
698
  st.rerun()
699
 
700
- def attention_check2():
701
- """سوال توجه دوم (بدون بررسی پاسخ صحیح)"""
702
- st.markdown("""
703
- <style>
704
- /* تضمین رنگ متن برای تمام سطوح */
705
- .st-ec, .st-ed, .st-ee, .st-ef, .st-eg, .st-eh, .st-ei, .st-ej {
706
- color: black !important;
707
- }
708
- </style>
709
- """, unsafe_allow_html=True)
710
  st.markdown("### سوال توجه")
 
 
 
 
 
 
711
 
 
 
 
 
 
 
 
 
 
 
 
712
  answer = st.radio(
713
  "نام اپلیکیشنی که در این تحقیق بررسی می‌شود چیست؟",
714
  ["اسنپ", "تپسی", "راهیار", "ماکسیم", "دیگر"],
@@ -720,7 +700,7 @@ def attention_check2():
720
  if answer:
721
  st.session_state.attention_check2 = answer
722
  # تغییر فاز به سوالات informational
723
- st.session_state.current_question_phase = "informational"
724
  st.session_state.current_question_index = 0
725
  st.rerun()
726
  else:
 
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
+ questions = [
 
 
 
 
 
 
 
 
618
  # سوالات distributive (7 گزینه‌ای)
619
+ {"key": "distributive_1", "question": "قیمتی که به شما ارائه شد، منصفانه است.", "scale": "7point"},
620
+ {"key": "distributive_2", "question": "قیمتی که به شما ارائه شد، معقول است.", "scale": "7point"},
621
+ {"key": "distributive_3", "question": "قیمتی که به شما ارائه شد، قابل قبول است.", "scale": "7point"},
622
 
623
  # سوالات procedural (7 گزینه‌ای)
624
+ {"key": "procedural_1", "question": "فرآیند و رویه قیمت‌گذاری پلتفرم قابل قبول است.", "scale": "7point"},
625
+ {"key": "procedural_2", "question": "فرآیند و رویه قیمت‌گذاری پلتفرم منصفانه است.", "scale": "7point"},
626
+ {"key": "procedural_3", "question": "فرآیند و رویه قیمت‌گذاری پلتفرم معقول است.", "scale": "7point"},
627
+
628
+ # سوالات informational (5 گزینه‌ای)
629
+ {"key": "informational_1", "question": "پلتفرم به صورت صادقانه دلایل تغییر قیمت (مثل افزایش تقاضا یا شرایط جوی) را ��وضیح داد.", "scale": "5point"},
630
+ {"key": "informational_2", "question": "پلتفرم به طور کامل عوامل مؤثر بر قیمت (مثل ترافیک، تعداد رانندگان) را شرح داد.", "scale": "5point"},
631
+ {"key": "informational_3", "question": "دلایل ارائه‌شده برای تغییر قیمت منطقی و قابل قبول بود.", "scale": "5point"},
632
+ {"key": "informational_4", "question": "توضیحات درباره قیمت بلافاصله و در زمان مناسب نمایش داده شد.", "scale": "5point"},
633
+ {"key": "informational_5", "question": "توضیحات پلتفرم متناسب با شرایط سفر من (مثل مسیر یا ساعت درخواست) بود.", "scale": "5point"}
634
  ]
635
 
636
+ # تقسیم سوالات به دو گروه
637
+ st.session_state.distributive_procedural = [q for q in questions if q['key'].startswith(('distributive', 'procedural'))]
638
+ st.session_state.informational = [q for q in questions if q['key'].startswith('informational')]
639
 
640
+ # تصادفیسازی ترتیب سوالات
641
+ random.shuffle(st.session_state.distributive_procedural)
642
+ random.shuffle(st.session_state.informational)
643
 
644
+ st.session_state.current_phase = 'distributive_procedural'
 
645
  st.session_state.current_question_index = 0
646
+
647
+ # انتخاب سوالات جاری بر اساس فاز
648
+ current_questions = (
649
+ st.session_state.distributive_procedural
650
+ if st.session_state.current_phase == 'distributive_procedural'
651
+ else st.session_state.informational
652
+ )
653
+
654
+ if st.session_state.current_question_index < len(current_questions):
655
+ q = current_questions[st.session_state.current_question_index]
656
  answer = create_likert_question(q["question"], q["key"], q["scale"])
657
 
658
  if answer:
 
660
  time.sleep(0.5)
661
  st.rerun()
662
  else:
663
+ if st.session_state.current_phase == 'distributive_procedural':
664
  # بعد از اتمام سوالات distributive/procedural، برو به اتنشن چک دوم
665
  st.session_state.current_page = "attention_check2"
666
  else:
 
668
  st.session_state.current_page = "explanation_questions"
669
  st.rerun()
670
 
671
+ def attention_check1():
672
+ """سوال توجه اول"""
 
 
 
 
 
 
 
 
673
  st.markdown("### سوال توجه")
674
+ answer = st.radio(
675
+ "رنگ سازمانی اپلیکیشن رهیار چه رنگی بود؟",
676
+ ["قرمز", "سبز", "بنفش", "آبی", "زرد"],
677
+ index=None,
678
+ key="att1_radio"
679
+ )
680
 
681
+ if st.button("ادامه", key="att1_btn"):
682
+ if answer:
683
+ st.session_state.attention_check1 = answer
684
+ st.session_state.current_page = "random_likert_questions"
685
+ st.rerun()
686
+ else:
687
+ st.warning("لطفاً یک گزینه را انتخاب کنید")
688
+
689
+ def attention_check2():
690
+ """سوال توجه دوم"""
691
+ st.markdown("### سوال توجه")
692
  answer = st.radio(
693
  "نام اپلیکیشنی که در این تحقیق بررسی می‌شود چیست؟",
694
  ["اسنپ", "تپسی", "راهیار", "ماکسیم", "دیگر"],
 
700
  if answer:
701
  st.session_state.attention_check2 = answer
702
  # تغییر فاز به سوالات informational
703
+ st.session_state.current_phase = 'informational'
704
  st.session_state.current_question_index = 0
705
  st.rerun()
706
  else: