Skip to content

Commit

Permalink
Create daily survey task
Browse files Browse the repository at this point in the history
  • Loading branch information
vishnuravi committed Apr 5, 2024
1 parent 7faa162 commit 77dd285
Show file tree
Hide file tree
Showing 4 changed files with 95 additions and 12 deletions.
12 changes: 12 additions & 0 deletions StrokeCog.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,7 @@
63497B732BBF855E001F8419 /* OptionsPanel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 63497B722BBF855E001F8419 /* OptionsPanel.swift */; };
63BBF8162BB8993B006890CE /* StudyIDView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 63BBF8152BB8993B006890CE /* StudyIDView.swift */; };
63BBF8192BB89CF7006890CE /* studyIDs.csv in Resources */ = {isa = PBXBuildFile; fileRef = 63BBF8182BB89CF7006890CE /* studyIDs.csv */; };
63EA5F7B2BC04F8400A48590 /* DailySurveyTask.swift in Sources */ = {isa = PBXBuildFile; fileRef = 63EA5F7A2BC04F8400A48590 /* DailySurveyTask.swift */; };
63F4C3992BBCCC300033D985 /* MapboxView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 63F4C3982BBCCC300033D985 /* MapboxView.swift */; };
63F4C39B2BBCCCF80033D985 /* LocationModule.swift in Sources */ = {isa = PBXBuildFile; fileRef = 63F4C39A2BBCCCF80033D985 /* LocationModule.swift */; };
63F4C39D2BBCCD200033D985 /* LocationUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 63F4C39C2BBCCD200033D985 /* LocationUtils.swift */; };
Expand Down Expand Up @@ -156,6 +157,7 @@
63497B722BBF855E001F8419 /* OptionsPanel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OptionsPanel.swift; sourceTree = "<group>"; };
63BBF8152BB8993B006890CE /* StudyIDView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StudyIDView.swift; sourceTree = "<group>"; };
63BBF8182BB89CF7006890CE /* studyIDs.csv */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = studyIDs.csv; sourceTree = "<group>"; };
63EA5F7A2BC04F8400A48590 /* DailySurveyTask.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DailySurveyTask.swift; sourceTree = "<group>"; };
63F4C3982BBCCC300033D985 /* MapboxView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MapboxView.swift; sourceTree = "<group>"; };
63F4C39A2BBCCCF80033D985 /* LocationModule.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocationModule.swift; sourceTree = "<group>"; };
63F4C39C2BBCCD200033D985 /* LocationUtils.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocationUtils.swift; sourceTree = "<group>"; };
Expand Down Expand Up @@ -347,6 +349,14 @@
path = Location;
sourceTree = "<group>";
};
63EA5F792BC04F6E00A48590 /* Survey */ = {
isa = PBXGroup;
children = (
63EA5F7A2BC04F8400A48590 /* DailySurveyTask.swift */,
);
path = Survey;
sourceTree = "<group>";
};
653A2544283387FE005D4D48 = {
isa = PBXGroup;
children = (
Expand All @@ -372,6 +382,7 @@
653A254F283387FE005D4D48 /* StrokeCog */ = {
isa = PBXGroup;
children = (
63EA5F792BC04F6E00A48590 /* Survey */,
653A2550283387FE005D4D48 /* StrokeCog.swift */,
2F5E32BC297E05EA003432F8 /* StrokeCogDelegate.swift */,
2FF53D8C2A8729D600042B76 /* StrokeCogStandard.swift */,
Expand Down Expand Up @@ -672,6 +683,7 @@
56F6F2A02AB441930022FE5A /* ContributionsList.swift in Sources */,
566155292AB8447C00209B80 /* Package+LicenseType.swift in Sources */,
5680DD392AB8983D004E6D4A /* PackageCell.swift in Sources */,
63EA5F7B2BC04F8400A48590 /* DailySurveyTask.swift in Sources */,
2F5E32BD297E05EA003432F8 /* StrokeCogDelegate.swift in Sources */,
2FE5DC5229EDD7FA004B9AB4 /* StrokeCogScheduler.swift in Sources */,
63BBF8162BB8993B006890CE /* StudyIDView.swift in Sources */,
Expand Down
10 changes: 0 additions & 10 deletions StrokeCog/Home.swift
Original file line number Diff line number Diff line change
Expand Up @@ -12,20 +12,10 @@ import SwiftUI


struct HomeView: View {
enum Tabs: String {
case schedule
case contact
case mockUpload
case map
case profile
}

static var accountEnabled: Bool {
!FeatureFlags.disableFirebase && !FeatureFlags.skipOnboarding
}


@AppStorage(StorageKeys.homeTabSelection) private var selectedTab = Tabs.schedule
@State private var presentingAccount = false


Expand Down
12 changes: 10 additions & 2 deletions StrokeCog/Map/OptionsPanel.swift
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@
// Created by Vishnu Ravi on 4/4/24.
//


import ResearchKit
import ResearchKitSwiftUI
import Spezi
import SwiftUI

Expand Down Expand Up @@ -33,7 +34,14 @@ struct OptionsPanel: View {
)
}
.sheet(isPresented: $showingSurvey) {
// TODO: Launch StrokeCog Survey
ORKOrderedTaskView(tasks: DailySurveyTask(identifier: "DailySurveyTask")) { result in
guard case let .completed(taskResult) = result else {
return
}

// TODO: Save result to Firestore
self.showingSurvey.toggle()
}
}
}

Expand Down
73 changes: 73 additions & 0 deletions StrokeCog/Survey/DailySurveyTask.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
//
// DailySurveyTask.swift
// StrokeCog
//
// Created by Vishnu Ravi on 4/5/24.
//

import Foundation
import ResearchKit

class DailySurveyTask: ORKOrderedTask {
convenience init(identifier: String) {
// Initialize the array to hold the steps of the survey
var steps = [ORKStep]()

// Question 1: Close friends or family seen today
let answerFormat1 = ORKAnswerFormat.choiceAnswerFormat(with: .singleChoice, textChoices: [
ORKTextChoice(text: "0", value: 0 as NSNumber),

Check failure on line 18 in StrokeCog/Survey/DailySurveyTask.swift

View workflow job for this annotation

GitHub Actions / SwiftLint / SwiftLint

Legacy Objective-C Reference Type Violation: Prefer Swift value types to bridged Objective-C reference types (legacy_objc_type)
ORKTextChoice(text: "1-4", value: 1 as NSNumber),

Check failure on line 19 in StrokeCog/Survey/DailySurveyTask.swift

View workflow job for this annotation

GitHub Actions / SwiftLint / SwiftLint

Legacy Objective-C Reference Type Violation: Prefer Swift value types to bridged Objective-C reference types (legacy_objc_type)
ORKTextChoice(text: "5-10", value: 2 as NSNumber),

Check failure on line 20 in StrokeCog/Survey/DailySurveyTask.swift

View workflow job for this annotation

GitHub Actions / SwiftLint / SwiftLint

Legacy Objective-C Reference Type Violation: Prefer Swift value types to bridged Objective-C reference types (legacy_objc_type)
ORKTextChoice(text: "10 or more", value: 3 as NSNumber)

Check failure on line 21 in StrokeCog/Survey/DailySurveyTask.swift

View workflow job for this annotation

GitHub Actions / SwiftLint / SwiftLint

Legacy Objective-C Reference Type Violation: Prefer Swift value types to bridged Objective-C reference types (legacy_objc_type)
])
let question1Step = ORKQuestionStep(
identifier: "Question1",
title: "Social Interaction",
question: "How many close friends or family did you see today face to face?",
answer: answerFormat1
)
steps.append(question1Step)

// Question 2: Times left house
let answerFormat2 = ORKAnswerFormat.integerAnswerFormat(withUnit: nil)
answerFormat2.minimum = 0
let question2Step = ORKQuestionStep(
identifier: "Question2",
title: "Leaving the House",
question: "How many times today did you leave your house and engage meaningfully with others?",
answer: answerFormat2
)
steps.append(question2Step)

// Question 3: Happiness
let answerFormat3 = ORKAnswerFormat.booleanAnswerFormat()
let question3Step = ORKQuestionStep(
identifier: "Question3",
title: "Emotional Well-being",
question: "I was happy",
answer: answerFormat3
)
steps.append(question3Step)

// Question 4: Fatigue
let answerFormat4 = ORKAnswerFormat.scale(
withMaximumValue: 4,
minimumValue: 0,
defaultValue: 0,
step: 1,
vertical: false,
maximumValueDescription: "Very much",
minimumValueDescription: "Not at all"
)
let question4Step = ORKQuestionStep(
identifier: "Question4",
title: "Physical Well-being",
question: "I feel fatigued",
answer: answerFormat4
)
steps.append(question4Step)

// Initialize the ORKOrderedTask with the steps array
self.init(identifier: identifier, steps: steps)
}
}

0 comments on commit 77dd285

Please sign in to comment.