splits/Splits/ContentView.swift

126 lines
3.4 KiB
Swift

//
// ContentView.swift
// Splits
//
// Created by Isaac Greene on 4/3/22.
//
import SwiftUI
import Foundation
struct ContentView: View {
var SISystem = ["km","mi"]
var minutes = Array(0...300)
var times = Array(0...300).map { String($0) }
@State var timeMinutes: String = ""
@State var timeSeconds: String = ""
@State var selectedSystem: String = "km"
@State var distance: String = ""
var body: some View {
VStack {
VStack {
TextField("Enter distance here", text: $distance)
.padding()
.keyboardType(.decimalPad)
.textFieldStyle(.roundedBorder)
}
VStack {
Text("Unit of measurement:")
Picker("System of measurement", selection: $selectedSystem, content: {
ForEach(SISystem, id: \.self, content: { unit in
Text(unit)
})
})
.pickerStyle(.segmented)
.frame(minWidth: 60, maxWidth: 300)
HStack {
VStack {
Text("Total Minutes")
TextField("Enter minutes here", text: $timeMinutes)
.keyboardType(.numberPad)
.textFieldStyle(.roundedBorder)
}
.frame(minWidth: 100)
.padding(.trailing, -15)
.padding()
VStack {
Text("Total Seconds")
TextField("Enter seconds here", text: $timeSeconds)
.keyboardType(.numberPad)
.textFieldStyle(.roundedBorder)
}
.frame(minWidth: 100)
.padding(.leading, -15)
.padding()
}
PaceResults(timeMinutes: $timeMinutes, timeSeconds: $timeSeconds, selectedSystem: $selectedSystem, distance: $distance)
}
}
}
}
struct PaceResults: View {
@Binding var timeMinutes: String
@Binding var timeSeconds: String
@Binding var selectedSystem: String
@Binding var distance: String
var body: some View {
//var pacePerUnit = 0.0
//var notSelectedSystem = ""
func secondsConversion(timeSeconds: String) -> (timeSecondsInt: Int, timeSecondsUnderSixty: Int) {
let convertedSeconds = (Double(timeSeconds) ?? 0) * (1+(2/3))
let timeSecondsInt = Int(timeSeconds) ?? 0
let timeSecondsUnderSixty = (timeSecondsInt % 60)
return (timeSecondsInt, timeSecondsUnderSixty)
}
func minutesConversion(secondsConversion) {
let timeSecondsToMinutes = (timeSecondsInt - timeSecondsUnderSixty) / 60
let timeMinutesDouble = Double(timeMinutes) ?? 0.0
let timeMinutesInt = (Int(timeMinutes) ?? 0) + (timeSecondsToMinutes)
let timeMinutesUnderSixty = timeMinutesInt % 60
let timeMinutesToHours = (timeMinutesInt - timeMinutesUnderSixty) / 60
return (timeMinutesUnderSixty, timeMinutesDouble, timeMinutesToHours)
}
let leadingZeros = String(format: "%02d:%02d", timeMinutesUnderSixty, timeSecondsUnderSixty)
let actualTime = timeMinutesDouble + (convertedSeconds / 100)
let pace = actualTime / (Double(distance) ?? 1)
let paceString = String(format: "%.2f", pace)
/*
if selectedSystem == "km" {
pacePerUnit = actualTime / (distance * 1.609344)
notSelectedSystem = "mi"
}
else {
pacePerUnit = actualTime / (distance * 0.6213711922)
notSelectedSystem = "km"
}
let pacePerUnitString = String(format: "%.02f", pacePerUnit)
*/
VStack {
Text("Distance: \(distance)\(selectedSystem)")
Text("Total time: \(timeMinutesToHours):\(leadingZeros)")
Text("\(paceString) minutes per \(selectedSystem)")
//Text("\(pacePerUnitString) minutes per \(notSelectedSystem)")
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}