Did some major reformatting of the Change Log tab (now Docs) and will hopefully get to adding some more actual features soon

This commit is contained in:
Isaac Greene 2022-06-04 23:05:37 -04:00
parent 5578d86ccf
commit 7b421a0a73
9 changed files with 294 additions and 45 deletions

View file

@ -9,6 +9,9 @@
/* Begin PBXBuildFile section */ /* Begin PBXBuildFile section */
850062C92802328F0095F121 /* TabViewData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 850062C82802328F0095F121 /* TabViewData.swift */; }; 850062C92802328F0095F121 /* TabViewData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 850062C82802328F0095F121 /* TabViewData.swift */; };
8502250E27FA5D0800FE8E95 /* ChangeLogData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8502250D27FA5D0800FE8E95 /* ChangeLogData.swift */; }; 8502250E27FA5D0800FE8E95 /* ChangeLogData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8502250D27FA5D0800FE8E95 /* ChangeLogData.swift */; };
850F8014284A7F6A0094580D /* DocsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 850F8013284A7F6A0094580D /* DocsView.swift */; };
850F8016284A815C0094580D /* KnownIssues.swift in Sources */ = {isa = PBXBuildFile; fileRef = 850F8015284A815C0094580D /* KnownIssues.swift */; };
850F8018284A83400094580D /* FeaturesView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 850F8017284A83400094580D /* FeaturesView.swift */; };
85AAA0D627FA2DD600F4B9A1 /* SplitsApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 85AAA0D527FA2DD600F4B9A1 /* SplitsApp.swift */; }; 85AAA0D627FA2DD600F4B9A1 /* SplitsApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 85AAA0D527FA2DD600F4B9A1 /* SplitsApp.swift */; };
85AAA0D827FA2DD600F4B9A1 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 85AAA0D727FA2DD600F4B9A1 /* ContentView.swift */; }; 85AAA0D827FA2DD600F4B9A1 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 85AAA0D727FA2DD600F4B9A1 /* ContentView.swift */; };
85AAA0DA27FA2DDA00F4B9A1 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 85AAA0D927FA2DDA00F4B9A1 /* Assets.xcassets */; }; 85AAA0DA27FA2DDA00F4B9A1 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 85AAA0D927FA2DDA00F4B9A1 /* Assets.xcassets */; };
@ -21,6 +24,9 @@
/* Begin PBXFileReference section */ /* Begin PBXFileReference section */
850062C82802328F0095F121 /* TabViewData.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TabViewData.swift; sourceTree = "<group>"; }; 850062C82802328F0095F121 /* TabViewData.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TabViewData.swift; sourceTree = "<group>"; };
8502250D27FA5D0800FE8E95 /* ChangeLogData.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChangeLogData.swift; sourceTree = "<group>"; }; 8502250D27FA5D0800FE8E95 /* ChangeLogData.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChangeLogData.swift; sourceTree = "<group>"; };
850F8013284A7F6A0094580D /* DocsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DocsView.swift; sourceTree = "<group>"; };
850F8015284A815C0094580D /* KnownIssues.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KnownIssues.swift; sourceTree = "<group>"; };
850F8017284A83400094580D /* FeaturesView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeaturesView.swift; sourceTree = "<group>"; };
85AAA0D227FA2DD600F4B9A1 /* Splits.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Splits.app; sourceTree = BUILT_PRODUCTS_DIR; }; 85AAA0D227FA2DD600F4B9A1 /* Splits.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Splits.app; sourceTree = BUILT_PRODUCTS_DIR; };
85AAA0D527FA2DD600F4B9A1 /* SplitsApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SplitsApp.swift; sourceTree = "<group>"; }; 85AAA0D527FA2DD600F4B9A1 /* SplitsApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SplitsApp.swift; sourceTree = "<group>"; };
85AAA0D727FA2DD600F4B9A1 /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = "<group>"; }; 85AAA0D727FA2DD600F4B9A1 /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = "<group>"; };
@ -65,6 +71,9 @@
8502250D27FA5D0800FE8E95 /* ChangeLogData.swift */, 8502250D27FA5D0800FE8E95 /* ChangeLogData.swift */,
85AAA0D727FA2DD600F4B9A1 /* ContentView.swift */, 85AAA0D727FA2DD600F4B9A1 /* ContentView.swift */,
850062C82802328F0095F121 /* TabViewData.swift */, 850062C82802328F0095F121 /* TabViewData.swift */,
850F8017284A83400094580D /* FeaturesView.swift */,
850F8013284A7F6A0094580D /* DocsView.swift */,
850F8015284A815C0094580D /* KnownIssues.swift */,
85AAA0E727FA2F1600F4B9A1 /* ChangeLogView.swift */, 85AAA0E727FA2F1600F4B9A1 /* ChangeLogView.swift */,
85AAA0E527FA2EB100F4B9A1 /* ModalView.swift */, 85AAA0E527FA2EB100F4B9A1 /* ModalView.swift */,
85AAA0D927FA2DDA00F4B9A1 /* Assets.xcassets */, 85AAA0D927FA2DDA00F4B9A1 /* Assets.xcassets */,
@ -161,8 +170,11 @@
85AAA0D627FA2DD600F4B9A1 /* SplitsApp.swift in Sources */, 85AAA0D627FA2DD600F4B9A1 /* SplitsApp.swift in Sources */,
850062C92802328F0095F121 /* TabViewData.swift in Sources */, 850062C92802328F0095F121 /* TabViewData.swift in Sources */,
8502250E27FA5D0800FE8E95 /* ChangeLogData.swift in Sources */, 8502250E27FA5D0800FE8E95 /* ChangeLogData.swift in Sources */,
850F8014284A7F6A0094580D /* DocsView.swift in Sources */,
850F8016284A815C0094580D /* KnownIssues.swift in Sources */,
85AAA0E827FA2F1600F4B9A1 /* ChangeLogView.swift in Sources */, 85AAA0E827FA2F1600F4B9A1 /* ChangeLogView.swift in Sources */,
85AAA0E627FA2EB100F4B9A1 /* ModalView.swift in Sources */, 85AAA0E627FA2EB100F4B9A1 /* ModalView.swift in Sources */,
850F8018284A83400094580D /* FeaturesView.swift in Sources */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };

View file

@ -10,6 +10,32 @@ import SwiftUI
struct June2022: View { struct June2022: View {
var body: some View { var body: some View {
ScrollView { ScrollView {
//2022-06-04
HStack {
VStack (alignment: .leading) {
Text("2022-06-04")
.font(.title2)
Text("Version Prerelease Build LVSXT10d.2\n")
.font(.footnote)
Text("\u{2022} Reformatted some tabs, and added the Recently Resolved issues tab\n\u{2022} Moved the Help tab into Docs")
}
Spacer()
}
.padding(30)
//2022-06-03
HStack {
VStack (alignment: .leading) {
Text("2022-06-03")
.font(.title2)
Text("Version Prerelease Build LVSXT10d\n")
.font(.footnote)
Text("\u{2022} Finished hours input.\n\u{2022} Moved some things around and the \"Change log\" tab is now \"Docs\" which holds info on features, the change log, and known issues, with a few other things.")
}
Spacer()
}
.padding(30)
//2022-06-01 //2022-06-01
//gay //gay
HStack { HStack {

View file

@ -9,16 +9,23 @@ import SwiftUI
struct ChangeLog: View { struct ChangeLog: View {
var body: some View { var body: some View {
NavigationView { HStack {
List { VStack (alignment: .leading) {
Section(header: Text("2022")) { Text("Change Log")
NavigationLink("May", destination: May2022()) .font(.largeTitle)
NavigationLink("April", destination: April2022()) .bold()
} }
} Spacer()
.listStyle(.insetGrouped)
.navigationTitle("Change log")
} }
.padding()
List {
Section(header: Text("2022")) {
NavigationLink("June", destination: June2022())
NavigationLink("May", destination: May2022())
NavigationLink("April", destination: April2022())
}
}
.listStyle(.insetGrouped)
} }
} }
struct ChangeLog_Previews: PreviewProvider { struct ChangeLog_Previews: PreviewProvider {

View file

@ -37,25 +37,26 @@ struct ContentView: View {
.frame(minWidth: 60, maxWidth: 300) .frame(minWidth: 60, maxWidth: 300)
HStack { HStack {
VStack { VStack {
Text("Total hours") Text("Hours")
TextField("Enter hours here", text: $timeHours) TextField("Enter hours here", text: $timeHours)
.keyboardType(.numberPad) .keyboardType(.numberPad)
.textFieldStyle(.roundedBorder) .textFieldStyle(.roundedBorder)
} }
.frame(minWidth: 100) .frame(minWidth: 100)
.padding(.leading, -15) .padding(.trailing, -15)
.padding() .padding()
VStack { VStack {
Text("Total Minutes") Text("Minutes")
TextField("Enter minutes here", text: $timeMinutes) TextField("Enter minutes here", text: $timeMinutes)
.keyboardType(.numberPad) .keyboardType(.numberPad)
.textFieldStyle(.roundedBorder) .textFieldStyle(.roundedBorder)
} }
.frame(minWidth: 100) .frame(minWidth: 100)
.padding(.trailing, -15) .padding(.trailing, -15)
.padding(.leading, -15)
.padding() .padding()
VStack { VStack {
Text("Total Seconds") Text("Seconds")
TextField("Enter seconds here", text: $timeSeconds) TextField("Enter seconds here", text: $timeSeconds)
.keyboardType(.numberPad) .keyboardType(.numberPad)
.textFieldStyle(.roundedBorder) .textFieldStyle(.roundedBorder)
@ -96,13 +97,14 @@ struct PaceResults: View {
let leadingZeros:String = String(format: "%02d:%02d", timeMinutesUnderSixty, timeSecondsUnderSixty) let leadingZeros:String = String(format: "%02d:%02d", timeMinutesUnderSixty, timeSecondsUnderSixty)
let actualTime:Double = timeMinutesDouble + (convertedSeconds / 100) + (totalHours * 60) let actualTime:Double = timeMinutesDouble + (convertedSeconds / 100) + ((Double(timeHours) ?? 0) * 60)
let pace:Double = actualTime / distanceDub let pace:Double = actualTime / distanceDub
let paceString:String = String(format: "%.2f", pace) let paceString:String = String(format: "%.2f", pace)
let hoursFormatted:String = String(format: "%.0f", totalHours)
VStack { VStack {
Text("Distance: \(distance)\(selectedSystem)") Text("Distance: \(distance)\(selectedSystem)")
Text("Total time: \(totalHours):\(leadingZeros)") Text("Total time: \(hoursFormatted):\(leadingZeros)")
Text("\(paceString) minutes per \(selectedSystem)") Text("\(paceString) minutes per \(selectedSystem)")
} }
} }
@ -113,3 +115,36 @@ struct ContentView_Previews: PreviewProvider {
ContentView() ContentView()
} }
} }
/*
struct AllTheMath {
@Binding var timeHours: String
@Binding var timeMinutes: String
@Binding var timeSeconds: String
@Binding var selectedSystem: String
@Binding var distance: String
let distanceDub = Double(distance) ?? 1.0
let convertedSeconds:Double = (Double(timeSeconds) ?? 0) * (1.666666666666666666666666)
let timeSecondsInt:Int = Int(timeSeconds) ?? 0
let timeSecondsUnderSixty:Int = (timeSecondsInt % 60)
let timeSecondsToMinutes:Int = (timeSecondsInt - timeSecondsUnderSixty) / 60
let timeMinutesDouble:Double = Double(timeMinutes) ?? 0.0
let timeMinutesInt:Int = (Int(timeMinutes) ?? 0) + (timeSecondsToMinutes)
let timeMinutesUnderSixty:Int = timeMinutesInt % 60
let timeMinutesToHours:Int = (timeMinutesInt - timeMinutesUnderSixty) / 60
let totalHours:Double = Double(timeMinutesToHours) + (Double(timeHours) ?? 0)
let leadingZeros:String = String(format: "%02d:%02d", timeMinutesUnderSixty, timeSecondsUnderSixty)
let actualTime:Double = timeMinutesDouble + (convertedSeconds / 100) + ((Double(timeHours) ?? 0) * 60)
let pace:Double = actualTime / distanceDub
let paceString:String = String(format: "%.2f", pace)
let hoursFormatted:String = String(format: "%.0f", totalHours)
}
*/

44
Splits/DocsView.swift Normal file
View file

@ -0,0 +1,44 @@
//
// DocsView.swift
// Splits
//
// Created by Isaac Greene on 6/3/22.
//
import SwiftUI
struct DocsView: View {
var body: some View {
NavigationView {
List {
NavigationLink("Help", destination: HelpView())
NavigationLink("Change Log", destination: ChangeLog())
Section(header: Text("Features")) {
NavigationLink("New", destination: NewFeatures())
NavigationLink("In Progress", destination: InProgressFeatures())
NavigationLink("Deprecated", destination: DeprecatedFeatures())
}
Section(header: Text("Known Issues")) {
NavigationLink("Recently Resolved", destination: RecentlyResolved())
NavigationLink("High Priority", destination: HighPriority())
NavigationLink("Medium Priority", destination: MediumPriority())
NavigationLink("Low Priority", destination: LowPriority())
}
Section(header: Text("App Information")) {
Text("Version: Prerelease LVSXT10d.2")
Text("Release date: 2022-06-04")
Text("Start date: 2022-03-25")
Text("App files: 9")
}
}
.navigationTitle("Docs")
}
}
}
struct DocsView_Previews: PreviewProvider {
static var previews: some View {
DocsView()
}
}

76
Splits/FeaturesView.swift Normal file
View file

@ -0,0 +1,76 @@
//
// FeaturesView.swift
// Splits
//
// Created by Isaac Greene on 6/3/22.
//
import SwiftUI
struct NewFeatures: View {
var body: some View {
ScrollView {
Text("New Features\n")
.font(.largeTitle)
.bold()
.padding(.top, 40)
VStack(alignment: .leading) {
Text("\u{2022} Reformatted the Docs tabs and made the common things up at the top")
Text("Implemented in Version Prerelease LVSXT10d.2 (current version)\n")
.font(.footnote)
.italic()
Text("\u{2022} Added the Features, Known Issues, and moved the Change Log for better navigation")
Text("Implemented in Version Prerelease LVSXT10d\n")
.font(.footnote)
.italic()
Text("\u{2022} Total time now shows the time in a way we humans can understand")
Text("Implemented in Version Prerelease LVSXT10k\n")
.font(.footnote)
.italic()
}
.padding(30)
}
}
}
struct InProgressFeatures: View {
var body: some View {
ScrollView {
Text("Features In Progress")
.font(.largeTitle)
.bold()
.padding(.top, 40)
Text("Note: this does not include things I have to fix\n")
.font(.footnote)
.italic()
VStack(alignment: .leading) {
Text("\u{2022} Working on a conversion between measurements for pace and distance\n")
}
.padding(30)
}
}
}
struct DeprecatedFeatures: View {
var body: some View {
ScrollView {
Text("Deprecated Features")
.font(.largeTitle)
.bold()
.padding(.top, 40)
VStack(alignment: .leading) {
Text("\n\u{2022} Removed the picker wheel to enter total time (a truly horrible system)")
Text("Stricken before recorded history\n")
.font(.footnote)
.italic()
}
.padding(30)
}
}
}
struct FeaturesView_Previews: PreviewProvider {
static var previews: some View {
NewFeatures()
}
}

75
Splits/KnownIssues.swift Normal file
View file

@ -0,0 +1,75 @@
//
// KnownIssues.swift
// Splits
//
// Created by Isaac Greene on 6/3/22.
//
import SwiftUI
struct RecentlyResolved: View {
var body: some View {
ScrollView {
Text("Recently Resolved Issues")
.font(.largeTitle)
.bold()
.padding(.top, 40)
VStack(alignment: .leading) {
Text("\n\u{2022} None since the addition of this tab")
}
.padding(30)
}
}
}
struct HighPriority: View {
var body: some View {
ScrollView {
Text("High Priority Issues")
.font(.largeTitle)
.bold()
.padding(.top, 40)
VStack(alignment: .leading) {
Text("\n\u{2022} You can not dismiss the keyboard on iPhone\n\t\u{2022} This hides the tab bar at the bottom so you can't navigate the app after bringing it up")
}
.padding(30)
}
}
}
struct MediumPriority: View {
var body: some View {
ScrollView {
Text("Medium Priority Issues")
.font(.largeTitle)
.bold()
.padding(.top, 40)
VStack(alignment: .leading) {
Text("Wow. Such Empty.")
.italic()
}
.padding(30)
}
}
}
struct LowPriority: View {
var body: some View {
ScrollView {
Text("Low Priority Issues")
.font(.largeTitle)
.bold()
.padding(.top, 40)
VStack(alignment: .leading) {
Text("\n\u{2022} Space between the equation and explanation in the \"Help\" tab is too large\n\u{2022} App has no custom icon")
}
.padding(30)
}
}
}
struct KnownIssues_Previews: PreviewProvider {
static var previews: some View {
HighPriority()
}
}

View file

@ -8,7 +8,7 @@
import SwiftUI import SwiftUI
import RichTextView import RichTextView
struct ModalView: View { struct HelpView: View {
@State var mathSheet = false @State var mathSheet = false
@State var problemSheet = false @State var problemSheet = false
@ -19,7 +19,7 @@ struct ModalView: View {
.bold() .bold()
.padding(.top, 40) .padding(.top, 40)
Text("Due to limitations in our system, you can only use kilometers and miles at this time. \nSmaller units like meters and feet are not supported. \nYou can, however, use decimals, such as .2km or .8mi.\n\nWe apologize for any inconvenience. In the future, we hope to make our app easier to use.") Text("Due to limitations in the system, you can only use kilometers and miles at this time. \nSmaller units like meters and feet are not supported. \nYou can, however, use decimals, such as .2km or .8mi.\n\nI apologize for any inconvenience. In the future, I hope to make our app easier to use.\n\nI'm currently looking to add help articles about running to this page and it'll have loads of stuff about running and pace and all that stuff to actually help you with running. If I do, the purpose of this app might change.")
.padding() .padding()
Button("See our math", action: { Button("See our math", action: {
@ -29,15 +29,6 @@ struct ModalView: View {
.sheet(isPresented: self.$mathSheet, content: { .sheet(isPresented: self.$mathSheet, content: {
algorithmView() algorithmView()
}) })
Button("Known issues", action: {
self.problemSheet.toggle()
})
.padding(30)
.padding(.top, -30)
.sheet(isPresented: self.$problemSheet, content: {
problemView()
})
} }
} }
} }
@ -109,16 +100,3 @@ struct mathLaTeX_inator: UIViewRepresentable {
) )
} }
} }
struct problemView: View {
var body: some View {
VStack {
Text("Known issues")
.font(.largeTitle)
.bold()
.padding(.top, 40)
Text("\n\u{2022} You can not dismiss the keyboard\n\t\u{2022} This hides the tab bar at the bottom so you can't navigate the app")
.padding()
}
}
}

View file

@ -14,13 +14,9 @@ struct TabViewData: View {
.tabItem { .tabItem {
Label("Calculator", systemImage: "candybarphone") Label("Calculator", systemImage: "candybarphone")
} }
ModalView() DocsView()
.tabItem { .tabItem {
Label("Help", systemImage: "info.circle") Label("Docs", systemImage: "doc.text.fill")
}
ChangeLog()
.tabItem {
Label("Change log", systemImage: "doc.text.fill")
} }
} }
} }