Skip to content

Commit

Permalink
Merge pull request covidwatchorg#72 from covid19risk/confirmPositive
Browse files Browse the repository at this point in the history
Confirm positive
  • Loading branch information
therealnikhil authored Apr 16, 2020
2 parents 4975ff2 + 09fca8e commit dfac664
Show file tree
Hide file tree
Showing 11 changed files with 374 additions and 142 deletions.
23 changes: 23 additions & 0 deletions COVIDWatch iOS/Assets.xcassets/arrow.imageset/Contents.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
{
"images" : [
{
"filename" : "arrow.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "[email protected]",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "[email protected]",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
193 changes: 193 additions & 0 deletions COVIDWatch iOS/Confirm.storyboard

Large diffs are not rendered by default.

6 changes: 3 additions & 3 deletions COVIDWatch iOS/Test.storyboard
Original file line number Diff line number Diff line change
Expand Up @@ -380,18 +380,18 @@
<outlet property="showOnNegativeView" destination="uRK-Ag-ZRW" id="FHb-Ws-zja"/>
<outlet property="showOnPositiveView" destination="YY3-NH-PMz" id="gJU-0S-skQ"/>
<outlet property="titleTopSpace" destination="43V-XL-Air" id="QVb-m1-yoR"/>
<segue destination="jwJ-fK-v8e" kind="presentation" identifier="thanks" modalPresentationStyle="fullScreen" id="jNo-oj-FAp"/>
<segue destination="jwJ-fK-v8e" kind="presentation" identifier="confirmTest" modalPresentationStyle="fullScreen" modalTransitionStyle="crossDissolve" id="jNo-oj-FAp"/>
<segue destination="1bH-ks-gge" kind="presentation" identifier="testToHome" modalPresentationStyle="fullScreen" modalTransitionStyle="crossDissolve" id="j8C-A6-hgC"/>
</connections>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="BfP-XJ-r3R" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="182.60869565217394" y="108.48214285714285"/>
</scene>
<!--Thankyou-->
<!--Confirm-->
<scene sceneID="jsa-Yh-v41">
<objects>
<viewControllerPlaceholder storyboardName="Thankyou" id="jwJ-fK-v8e" sceneMemberID="viewController"/>
<viewControllerPlaceholder storyboardName="Confirm" id="jwJ-fK-v8e" sceneMemberID="viewController"/>
<placeholder placeholderIdentifier="IBFirstResponder" id="zqe-bf-dho" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="787" y="-33"/>
Expand Down
38 changes: 0 additions & 38 deletions COVIDWatch iOS/Thankyou.storyboard

This file was deleted.

122 changes: 122 additions & 0 deletions COVIDWatch iOS/ViewControllers/Confirm.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,122 @@
//
// Confirm.swift
// COVIDWatch iOS
//
// Created by Nikhil Kumar on 4/14/20.
// Copyright © 2020 IZE. All rights reserved.
//

import UIKit

class Confirm: UIViewController {
@IBOutlet var boxView: UIView!
@IBOutlet var slideButton: UIView!
@IBOutlet var slideView: UIView!
@IBOutlet var slideToConfirmText: UILabel!
@IBOutlet var cancelButton: UIButton!
@IBOutlet var cancelTopSpace: NSLayoutConstraint!
@IBOutlet var detailTopSpace: NSLayoutConstraint!
@IBOutlet var topSpace: NSLayoutConstraint!
@IBOutlet var boxTopSpace: NSLayoutConstraint!
@IBOutlet var testTopSpace: NSLayoutConstraint!
@IBOutlet var slideTopSpace: NSLayoutConstraint!

public var testedDate: Date = Date()
var ogSlideButtonPosition: CGPoint = CGPoint.zero
var slideStartPosition: CGFloat = 0.0
var slideEndPosition: CGFloat = 0.0
var slideCurrentPosition: CGFloat = 0.0
var btnWidth: CGFloat = 0.0

override func viewDidLoad() {
super.viewDidLoad()

slideButton.layer.cornerRadius = 4
slideButton.layer.borderWidth = 4
slideButton.layer.borderColor = UIColor.Primary.White.cgColor
slideButton.addGestureRecognizer(UIPanGestureRecognizer(target: self, action: #selector(onSlide)))
btnWidth = slideButton.bounds.width

slideView.layer.cornerRadius = 10
slideStartPosition = slideView.bounds.minX + 8
let sliderWidth = slideView.bounds.width - 16
slideEndPosition = slideStartPosition + sliderWidth

boxView.layer.cornerRadius = 10
boxView.layer.borderWidth = 1
boxView.layer.borderColor = UIColor.Secondary.LightGray.cgColor

cancelButton.layer.cornerRadius = 10
cancelButton.layer.borderWidth = 2
cancelButton.layer.borderColor = UIColor.Secondary.LightGray.cgColor
}

@objc func onSlide(gesture: UIPanGestureRecognizer) {
if let gView = gesture.view,
let xPos = gesture.view?.center.x,
let yPos = gesture.view?.center.y {

if gesture.state == .began {
ogSlideButtonPosition = gView.center
}
if gesture.state == .began || gesture.state == .changed {
let translation = gesture.translation(in: slideView)
let viewFrame = slideView.convert(gView.frame, from: slideButton)
let currentLeftPos = viewFrame.minX + translation.x
slideCurrentPosition = xPos + translation.x + (btnWidth / 2.0)
let slideDistance = (slideCurrentPosition - ogSlideButtonPosition.x)
let totalSlideDistance = screenWidth - btnWidth - 94
slideToConfirmText.alpha = 1.0 - 2 * (slideDistance / totalSlideDistance)
if currentLeftPos > slideStartPosition && slideDistance < totalSlideDistance {
gesture.view?.center = CGPoint(x: xPos + translation.x, y: yPos)
gesture.setTranslation(CGPoint.zero, in: slideView)
} else if slideDistance >= totalSlideDistance {
onConfirm()
}
}
if gesture.state == .ended {
gesture.view?.center = ogSlideButtonPosition
gesture.setTranslation(CGPoint.zero, in: slideView)
slideToConfirmText.alpha = 1.0
}
}
}

func onConfirm() {
UserDefaults.shared.isUserSick = true
UserDefaults.shared.lastTestedDate = Date()
performSegue(withIdentifier: "confirmToHome", sender: self)
}
}

extension Confirm {
override func updateViewConstraints() {
topSpace.constant = (30.0/321.0) * contentMaxWidth
boxTopSpace.constant = (15.0/321.0) * contentMaxWidth
testTopSpace.constant = (15.0/321.0) * contentMaxWidth
slideTopSpace.constant = (15.0/321.0) * contentMaxWidth
cancelTopSpace.constant = (15.0/321.0) * contentMaxWidth
detailTopSpace.constant = (5.0/321.0) * contentMaxWidth

if let slideView = self.slideView {
slideView.addConstraint(getButtonHeight(view: slideView))
}
if let cancelButton = self.cancelButton {
cancelButton.addConstraint(getButtonHeight(view: cancelButton))
}

super.updateViewConstraints()
}

func getButtonHeight(view: Any) -> NSLayoutConstraint {
return NSLayoutConstraint(
item: view,
attribute: .height,
relatedBy: .equal,
toItem: nil,
attribute: .notAnAttribute,
multiplier: 1,
constant: (58.0/321.0) * contentMaxWidth
)
}
}
21 changes: 17 additions & 4 deletions COVIDWatch iOS/ViewControllers/Test.swift
Original file line number Diff line number Diff line change
Expand Up @@ -111,9 +111,7 @@ class Test: UIViewController, UIPickerViewDataSource, UIPickerViewDelegate {
}

@objc func submitPositive() {
UserDefaults.shared.isUserSick = true
UserDefaults.shared.lastTestedDate = Date()
performSegue(withIdentifier: "testToHome", sender: self)
performSegue(withIdentifier: "confirmTest", sender: self)
}

@objc func pickDate() {
Expand All @@ -130,7 +128,7 @@ class Test: UIViewController, UIPickerViewDataSource, UIPickerViewDelegate {
let calendar = Calendar.current
var endDate = Date()

guard let startDate = calendar.date(byAdding: .day, value: -13, to: endDate) else {
guard let startDate = calendar.date(byAdding: .day, value: -30, to: endDate) else {
print("\(#function): Error Creating date")
return
}
Expand Down Expand Up @@ -175,6 +173,21 @@ class Test: UIViewController, UIPickerViewDataSource, UIPickerViewDelegate {
showOnNegativeView.isHidden = true
}

// MARK: - Pass testedDate to Confirm
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "confirmTest" {
if let confirmVC = segue.destination as? Confirm {
if let dateString = dateLabel.text {
let df = DateFormatter()
if let date = df.date(from: dateString) {
confirmVC.testedDate = date
}
}
}
}
}

// MARK: - PickerView functions
func numberOfComponents(in pickerView: UIPickerView) -> Int {
return 1
}
Expand Down
89 changes: 0 additions & 89 deletions COVIDWatch iOS/ViewControllers/ThankYou.swift

This file was deleted.

Loading

0 comments on commit dfac664

Please sign in to comment.