Skip to content

Commit

Permalink
v1.13
Browse files Browse the repository at this point in the history
  • Loading branch information
ronan18 committed Feb 9, 2020
1 parent 4aa9f33 commit 035ace9
Show file tree
Hide file tree
Showing 13 changed files with 228 additions and 23 deletions.
12 changes: 10 additions & 2 deletions Arrival-iOS2.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,8 @@
C58F24A723CC14D1003882F3 /* TrainView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C58F24A623CC14D1003882F3 /* TrainView.swift */; };
C592370923E151AD00AFCD6C /* HostingController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C592370823E151AD00AFCD6C /* HostingController.swift */; };
C5A517A523CCED0F003E616E /* TrainComponent.swift in Sources */ = {isa = PBXBuildFile; fileRef = C5A517A423CCED0F003E616E /* TrainComponent.swift */; };
C5E5768C23EFB9E300A3A7BD /* Trip.swift in Sources */ = {isa = PBXBuildFile; fileRef = C5E5768B23EFB9E300A3A7BD /* Trip.swift */; };
C5E5768E23EFBB0A00A3A7BD /* Leg.swift in Sources */ = {isa = PBXBuildFile; fileRef = C5E5768D23EFBB0A00A3A7BD /* Leg.swift */; };
CADDD6B3BE3BA43021E02366 /* Pods_Arrival_iOS2Tests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FD5EABF0B8A45DB86870B80A /* Pods_Arrival_iOS2Tests.framework */; };
/* End PBXBuildFile section */

Expand Down Expand Up @@ -76,6 +78,8 @@
C58F24A623CC14D1003882F3 /* TrainView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TrainView.swift; sourceTree = "<group>"; };
C592370823E151AD00AFCD6C /* HostingController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HostingController.swift; sourceTree = "<group>"; };
C5A517A423CCED0F003E616E /* TrainComponent.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TrainComponent.swift; sourceTree = "<group>"; };
C5E5768B23EFB9E300A3A7BD /* Trip.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Trip.swift; sourceTree = "<group>"; };
C5E5768D23EFBB0A00A3A7BD /* Leg.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Leg.swift; sourceTree = "<group>"; };
C82760030A0921AD836D9E8B /* Pods-Arrival-iOS2.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Arrival-iOS2.release.xcconfig"; path = "Target Support Files/Pods-Arrival-iOS2/Pods-Arrival-iOS2.release.xcconfig"; sourceTree = "<group>"; };
F0A9A7194655A9A4C5A07CDE /* Pods-Arrival-iOS2.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Arrival-iOS2.debug.xcconfig"; path = "Target Support Files/Pods-Arrival-iOS2/Pods-Arrival-iOS2.debug.xcconfig"; sourceTree = "<group>"; };
FD5EABF0B8A45DB86870B80A /* Pods_Arrival_iOS2Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Arrival_iOS2Tests.framework; sourceTree = BUILT_PRODUCTS_DIR; };
Expand Down Expand Up @@ -126,6 +130,8 @@
children = (
C568C3FF23D8B99400AB9E67 /* Station.swift */,
34AF24A723DFD00400E66C34 /* Train.swift */,
C5E5768B23EFB9E300A3A7BD /* Trip.swift */,
C5E5768D23EFBB0A00A3A7BD /* Leg.swift */,
);
path = Models;
sourceTree = "<group>";
Expand Down Expand Up @@ -397,6 +403,8 @@
C58F248223CC1438003882F3 /* AppDelegate.swift in Sources */,
C5A517A523CCED0F003E616E /* TrainComponent.swift in Sources */,
C58F248923CC1438003882F3 /* ContentView.swift in Sources */,
C5E5768E23EFBB0A00A3A7BD /* Leg.swift in Sources */,
C5E5768C23EFB9E300A3A7BD /* Trip.swift in Sources */,
C568C40023D8B99400AB9E67 /* Station.swift in Sources */,
C568C40623D95FA800AB9E67 /* LoginView.swift in Sources */,
C58F248423CC1438003882F3 /* SceneDelegate.swift in Sources */,
Expand Down Expand Up @@ -563,7 +571,7 @@
"$(inherited)",
"@executable_path/Frameworks",
);
MARKETING_VERSION = 1.12;
MARKETING_VERSION = 1.13;
PRODUCT_BUNDLE_IDENTIFIER = com.ronanfuruta.arrival;
PRODUCT_NAME = Arrival;
SWIFT_VERSION = 5.0;
Expand All @@ -585,7 +593,7 @@
"$(inherited)",
"@executable_path/Frameworks",
);
MARKETING_VERSION = 1.12;
MARKETING_VERSION = 1.13;
PRODUCT_BUNDLE_IDENTIFIER = com.ronanfuruta.arrival;
PRODUCT_NAME = Arrival;
SWIFT_VERSION = 5.0;
Expand Down
3 changes: 0 additions & 3 deletions Arrival-iOS2.xcworkspace/contents.xcworkspacedata

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

75 changes: 73 additions & 2 deletions Arrival-iOS2/AppData.swift
Original file line number Diff line number Diff line change
Expand Up @@ -34,11 +34,13 @@ class AppData: NSObject, ObservableObject,CLLocationManagerDelegate {
@Published var stations = [Station]()
@Published var network = true
@Published var sortTrainsByTime = false
@Published var prioritizeLine = true
@Published var goingOffClosestStation: Bool = true
@Published var closestStations = [Station]()
@Published var fromStationSuggestions = [Station]()
@Published var toStationSuggestions = [Station]()
@Published var loginError = ""
@Published var trips: Array = [TripInfo]()
@Published var fromStation: Station = Station(id: "loading", name: "loading", lat: 0.0, long: 0.0, abbr: "load", version: 0)
@Published var toStation: Station = Station(id: "none", name: "none", lat: 0.0, long: 0.0, abbr: "none", version: 0)
private let locationManager = CLLocationManager()
Expand All @@ -50,6 +52,7 @@ class AppData: NSObject, ObservableObject,CLLocationManagerDelegate {
private var netJSON: [String: Any?] = [:]
private var settingsSuscriber: Any?
private var authSubscriber: Any?
private var prioritizeLineSubscriber: Any?
private var closestStationsSuscriber: Any?
override init() {
super.init()
Expand Down Expand Up @@ -396,24 +399,35 @@ class AppData: NSObject, ObservableObject,CLLocationManagerDelegate {
if (estimates.count > 0) {
// print(estimates.count)
var results: Array = [Train]()
var trips: Array = [TripInfo]()

for x in 0...estimates.count - 1 {
let thisTrain = estimates[x]
let etd = thisTrain["@origTimeMin"].stringValue
let eta = thisTrain["@destTimeMin"].stringValue
let direction = thisTrain["leg"][0]["@trainHeadStation"].stringValue

var legs: Array = [Leg]()
for i in 0...thisTrain["leg"].count - 1 {
let leg = thisTrain["leg"][i]
let originIndex = self.stations.firstIndex(where: { $0.abbr == leg["@origin"].stringValue})
let destinationIndex = self.stations.firstIndex(where: { $0.abbr == leg["@destination"].stringValue})
let origin = self.stations[originIndex as! Int].name
let destination = self.stations[destinationIndex as! Int].name
legs.append(Leg(order: leg["order"].intValue, origin: origin, destination: destination, originTime: leg["@origTimeMin"].stringValue, destinationTime: leg["@destTimeMin"].stringValue, line: leg["@line"].stringValue, trainDestination: leg["@trainHeadStation"].stringValue))
}
//let color = thisTrain["color"].stringValue
let color = "none"
print(eta)
results.append(Train(id: UUID(), direction: direction, time: etd, unit: "", color: "none", cars: 0, hex: "0", eta: eta))
trips.append(TripInfo(origin: self.fromStation.abbr, destination: direction, legs: legs, originTime: thisTrain["@origTimeMin"].stringValue, destinatonTime: thisTrain["@destTimeMin"].stringValue, tripTIme: thisTrain["@tripTime"].doubleValue))
}

results.sort {
$0.time < $1.time
}
self.noTrains = false
self.trains = results
self.trips = trips
self.loaded = true
} else {
self.loaded = true
Expand Down Expand Up @@ -462,10 +476,20 @@ class AppData: NSObject, ObservableObject,CLLocationManagerDelegate {
for data in result as! [NSManagedObject] {
let user = data.value(forKey: "user") as! String
let sortTrainsByTimeSetting = data.value(forKey: "sortTrainsByTime") as! Bool
print(data.value(forKey: "prioritizeTrain"), "setting")
let prioritizeTrainSettingValue = data.value(forKey: "prioritizeTrain")

print(user, value, "user settings from auth")
print(sortTrainsByTimeSetting, "sort t b t settings from auth")
print(sortTrainsByTimeSetting, prioritizeTrainSettingValue, "sort t b t settings from auth")
if (user == value) {
self.sortTrainsByTime = sortTrainsByTimeSetting
if (prioritizeTrainSettingValue == nil) {
self.prioritizeLine = false
} else {
self.prioritizeLine = prioritizeTrainSettingValue as! Bool
}


print("set stbt settings from auth to", sortTrainsByTimeSetting)
}

Expand All @@ -479,6 +503,53 @@ class AppData: NSObject, ObservableObject,CLLocationManagerDelegate {
}
}
}
prioritizeLineSubscriber = $prioritizeLine.sink {value in
print(value, "settings change")
if (self.auth){

let fetchRequest = NSFetchRequest<NSFetchRequestResult>(entityName: "Preferences")
do {

let result = try context.fetch(fetchRequest)
if (!result.isEmpty) {
print("fetching old settings")
for data in result as! [NSManagedObject] {
let user = data.value(forKey: "user") as! String
// let prioritizeLineSetting = data.value(forKey: "prioritizeTrain") as! Bool
print(user, "user setting")
// print(prioritizeLineSetting, "sort t b t setting")
if (user == self.passphrase) {
data.setValue(value, forKey: "prioritizeTrain")
do {
try context.save()
print("saved updated settings")
} catch {
print("Failed saving")
}
}

}
} else {
print("creating new settings")
let entity = NSEntityDescription.entity(forEntityName: "Preferences", in: context)
let newPreference = NSManagedObject(entity: entity!, insertInto: context)
newPreference.setValue(self.passphrase, forKey: "user")
newPreference.setValue(value, forKey: "sortTrainsByTime")
do {
try context.save()
print("saved new settings")
} catch {
print("Failed saving")
}
}


} catch {
print("failed to get settings")

}
}
}
settingsSuscriber = $sortTrainsByTime.sink {value in
print(value, "settings change")
if (self.auth){
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<model type="com.apple.IDECoreDataModeler.DataModel" documentVersion="1.0" lastSavedToolsVersion="15702" systemVersion="19C57" minimumToolsVersion="Automatic" sourceLanguage="Swift" userDefinedModelVersionIdentifier="">
<entity name="Preferences" representedClassName="Preferences" syncable="YES" codeGenerationType="class">
<attribute name="prioritizeTrain" optional="YES" attributeType="Boolean" usesScalarValueType="YES"/>
<attribute name="sortTrainsByTime" optional="YES" attributeType="Boolean" usesScalarValueType="YES"/>
<attribute name="user" optional="YES" attributeType="String"/>
</entity>
Expand All @@ -23,7 +24,7 @@
<attribute name="pass" optional="YES" attributeType="String"/>
</entity>
<elements>
<element name="Preferences" positionX="-45" positionY="45" width="128" height="73"/>
<element name="Preferences" positionX="-45" positionY="45" width="128" height="88"/>
<element name="StationModel" positionX="-36" positionY="18" width="128" height="133"/>
<element name="Trip" positionX="-45" positionY="45" width="128" height="118"/>
<element name="User" positionX="-63" positionY="-18" width="128" height="58"/>
Expand Down
8 changes: 4 additions & 4 deletions Arrival-iOS2/HomeView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ struct HomeView: View {
VStack(alignment: .leading) {
Text("from").font(.caption)
Text("Station").font(.headline)
}
}.lineLimit(1)
}

}.sheet(isPresented: self.$fromModalDisplayed) {
Expand All @@ -79,7 +79,7 @@ struct HomeView: View {
.cornerRadius(10)
Spacer().frame(height: 10)
Text("suggested")
.font(.caption)
.font(.subheadline)
List { ForEach(self.appData.fromStationSuggestions.filter {
if self.fromStationSearch.count > 0 {
return $0.name.lowercased().contains(self.fromStationSearch.lowercased())
Expand Down Expand Up @@ -112,7 +112,7 @@ struct HomeView: View {
VStack(alignment: .trailing) {
Text("to").font(.caption)
Text(self.appData.toStation.name).font(.headline)
}
}.lineLimit(1)
}.sheet(isPresented: self.$toModalDisplayed) {
VStack(alignment: .leading) {
HStack(alignment: .center) {
Expand All @@ -134,7 +134,7 @@ struct HomeView: View {
.cornerRadius(10)
Spacer().frame(height: 10)
Text("suggested")
.font(.caption)
.font(.subheadline)
List { ForEach(self.appData.toStationSuggestions.filter {
if ($0.name == self.appData.fromStation.name) {
return false
Expand Down
19 changes: 19 additions & 0 deletions Arrival-iOS2/Models/Leg.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
//
// Leg.swift
// Arrival-iOS2
//
// Created by Ronan Furuta on 2/8/20.
// Copyright © 2020 Stomp Rocket. All rights reserved.
//

import Foundation
struct Leg: Identifiable, Codable {
var id = UUID()
var order: Int
var origin: String
var destination: String
var originTime: String
var destinationTime: String
var line: String
var trainDestination: String
}
19 changes: 19 additions & 0 deletions Arrival-iOS2/Models/Trip.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
//
// Trip.swift
// Arrival-iOS2
//
// Created by Ronan Furuta on 2/8/20.
// Copyright © 2020 Stomp Rocket. All rights reserved.
//

import Foundation
struct TripInfo: Identifiable, Codable {
var id = UUID()
var origin: String
var destination: String
var legs: [Leg]
var originTime: String
var destinatonTime: String
var tripTIme: Double

}
9 changes: 8 additions & 1 deletion Arrival-iOS2/SettingsView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,12 @@ struct SettingsView: View {
Text("Sort trains by time")
}
}
HStack {

Toggle(isOn: self.$appData.prioritizeLine) {
Text("Prioritize trip details for train information")
}
}
Spacer()

HStack {
Expand All @@ -64,9 +70,10 @@ struct SettingsView: View {
.fontWeight(.bold)
.multilineTextAlignment(.center)
.lineLimit(nil)
.foregroundColor(.red)
Spacer()
}.padding(/*@START_MENU_TOKEN@*/.all/*@END_MENU_TOKEN@*/)
}.background(Color.red).cornerRadius(/*@START_MENU_TOKEN@*/10.0/*@END_MENU_TOKEN@*/).foregroundColor(/*@START_MENU_TOKEN@*/.white/*@END_MENU_TOKEN@*/)
}
Spacer()
}

Expand Down
Loading

0 comments on commit 035ace9

Please sign in to comment.