from otree.api import Currency as c, currency_range from otree.api import models from ._builtin import Page, WaitPage from .models import Constants class RequirementPage(Page): form_model = 'player' form_fields = ['age','active','mobilephone'] def active_choices(self): return [" Yes, mostly outdoors", "Yes, mostly in a gym (including running on a treadmill, or exercising on an elliptical trainer or stepper)", "Yes, when commuting", "No"] class TelephonePage(Page): def is_displayed(self): return self.player.age == "yes" and self.player.mobilephone == "yes" and "No" not in self.player.active form_model ='player' form_fields=['kind',"yearofmakephone","apps","personaldataphone"] def kind_choices(self): return [" iPhone(iOs)","Android","Other"] def apps_choices(self): return ["Walkmeter", "Runmeter","Pedometer", "Pacer", "Strava", "Nike Run Club", "MyFitnessPal" ,"Others please specify", "None"] class DataFromApps(Page): def is_displayed(self): return self.player.age == "yes" and self.player.mobilephone == "yes" and "No" not in self.player.active and "None" not in self.player.apps def datafromapps_choices(self): return ["Step count", "Average pace", "Fastest pace", "Ascent", "Descent", "Floors", "Calories", "Others please specify"] form_model = 'player' form_fields=["datafromapps"] class OtherApps(Page): def is_displayed(self): return self.player.age == "yes" and self.player.mobilephone == "yes" and "No" not in self.player.active and "Others please specify" in self.player.apps form_model ='player' form_fields=["otherapps"] class OtherDataFromApps(Page): def is_displayed(self): return self.player.age == "yes" and self.player.mobilephone == "yes" and "No" not in self.player.active and"None" not in self.player.apps and "Others please specify" in self.player.datafromapps form_model ='player' form_fields=["otherdatafromapps"] class HasFitDev(Page): def is_displayed(self): return self.player.age == "yes" and self.player.mobilephone == "yes" and "No" not in self.player.active form_model ='player' form_fields=["hasfitdev"] class OnFitDev(Page): form_model ='player' form_fields=["dev","yearofmakedev","personaldatadev","baselinetest","devdata"] def dev_choices(self): return ["Apple","Fitbit","Garmin","Huawei","Jawbone","Misfit", "Nokia","Polar","Samsung","Xiaomi","Others"] def baselinetest_choices(self): return ["Yes, to determine my resting pulse.","Yes, to determine my optimal training intensity zone.","Yes, to determine my sleep quality.","Yes, to determine other features","No fitness tests were required"] def devdata_choices(self): return ["Average heart rate (heart beat, pulse)","Average heart rate variability","Duration of activity","Distance","Step count","Average pace","Fastest pace","Ascent","Descent","Floors","Calories","Time of intense activity","Time spent in peek zone","Time spent in cardio zone", "Time spent in fat burn zone","Other measures"] def is_displayed(self): return self.player.age == "yes" and self.player.mobilephone == "yes" and "No" not in self.player.active and self.player.hasfitdev =="yes" class OtherDevice(Page): def is_displayed(self): return self.player.age == "yes" and self.player.mobilephone == "yes" and "No" not in self.player.active and self.player.hasfitdev =="yes" and "Others" in self.player.dev form_model ='player' form_fields=["otherdev"] class OtherBaselineTest(Page): def is_displayed(self): return self.player.age == "yes" and self.player.mobilephone == "yes" and "No" not in self.player.active and self.player.hasfitdev =="yes" and "Yes, to determine other features" in self.player.baselinetest form_model ='player' form_fields=["otherbaselinetest"] class OtherDevData(Page): def is_displayed(self): return self.player.age == "yes" and self.player.mobilephone == "yes" and "No" not in self.player.active and self.player.hasfitdev =="yes" and "Other measures" in self.player.devdata form_model ='player' form_fields=["otherdevdata"] class Willingness(Page): def is_displayed(self): return self.player.age == "yes" and self.player.mobilephone == "yes" and "No" not in self.player.active form_model ='player' form_fields=["willingreport","exercisetype"] def exercisetype_choices(self): return ["Light activity: slow walking","Moderate activity (noticeably accelerates the heart rate): brisk walking or light running","Vigorous activity (causes rapid breathing and substantial increase in heart rate): brisk running"] class Rewards(Page): form_model ='player' form_fields=["fixedreward","rewardphone","rewarddev","timecomplete","interest"] def is_displayed(self): return self.player.age == "yes" and self.player.mobilephone == "yes" and "No" not in self.player.active class FixedMore(Page): def is_displayed(self): return self.player.age == "yes" and self.player.mobilephone == "yes" and "No" not in self.player.active and "More" in self.player.fixedreward form_model ='player' form_fields=["fixedmore"] class PhoneMore(Page): def is_displayed(self): return self.player.age == "yes" and self.player.mobilephone == "yes" and "No" not in self.player.active and "More" in self.player.rewardphone form_model ='player' form_fields=["phonemore"] class DevMore(Page): def is_displayed(self): return self.player.age == "yes" and self.player.mobilephone == "yes" and "No" not in self.player.active and "More" in self.player.rewarddev form_model ='player' form_fields=["devmore"] class Demographic(Page): def is_displayed(self): return self.player.age == "yes" and self.player.mobilephone == "yes" and "No" not in self.player.active form_model ='player' form_fields=["gender","agerange"] class Code(Page): form_model='player' form_fields= ['code'] def is_displayed(self): return self.player.age == "yes" and self.player.mobilephone == "yes" and "No" not in self.player.active class Results(Page): def is_displayed(self): return self.player.age == "yes" and self.player.mobilephone == "yes" and "No" not in self.player.active page_sequence =[ RequirementPage, TelephonePage, DataFromApps, OtherApps, OtherDataFromApps, HasFitDev, OnFitDev, OtherDevice, OtherBaselineTest, OtherDevData, Willingness, Rewards, FixedMore, PhoneMore, DevMore, Code ]