// // 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() } }