changeset 235:68be81b7d02e

Rename file
author Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
date Wed, 03 Mar 2021 15:16:52 +0000
parents 8240a874e35f
children 0036618c7989
files LazyBear/UI/ChartView.swift LazyBear/UI/CompanyView.swift LazyBear/UI/HistoricalPriceView.swift LazyBear/UI/LanguagePicker.swift LazyBear/UI/NewsLanguagePicker.swift LazyBear/UI/PriceView.swift LazyBear/UI/Settings.swift
diffstat 7 files changed, 119 insertions(+), 120 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/LazyBear/UI/ChartView.swift	Wed Mar 03 15:16:52 2021 +0000
@@ -0,0 +1,74 @@
+//
+//  HistoricalPriceView.swift
+//  LazyBear
+//
+//  Created by Dennis Concepción Martín on 21/2/21.
+//
+
+import SwiftUI
+import Charts
+
+struct ChartView: View {
+    var symbol: String
+    var chartHeight: CGFloat
+    @State private var historicalPrices = [HistoricalPriceModel]()
+   
+    // Date picker
+    var period = ["1W", "1M", "3M", "6M", "1Y", "2Y", "5Y"]
+    @State var selectedPeriod = 2
+    
+    var body: some View {
+        VStack {
+            DateSelection(period: period, selectedperiod: $selectedPeriod)
+                .padding(.horizontal)
+                .onChange(of: selectedPeriod, perform: { (value) in
+                    request(url: getUrl(range: period[value]), model: [HistoricalPriceModel].self) { self.historicalPrices = $0 }
+                })
+            
+            let (colour, prices) = prepareChart()
+            Chart(data: prices)
+                .frame(height: chartHeight)
+                .chartStyle(AreaChartStyle(.quadCurve, fill:
+                                            LinearGradient(gradient: .init(colors: [colour.opacity(0.5), colour.opacity(0.2)]),
+                                                           startPoint: .top,
+                                                           endPoint: .bottom)))
+        }
+        .onAppear {
+            request(url: getUrl(range: "3m"), model: [HistoricalPriceModel].self) { self.historicalPrices = $0 }
+        }
+    }
+    
+    private func getUrl(range: String) -> String {
+        let baseUrl = Bundle.main.infoDictionary?["IEX_URL"] as? String ?? "Empty url"
+        let apiKey = Bundle.main.infoDictionary?["IEX_API"] as? String ?? "Empty key"
+        let url = "\(baseUrl)/stock/\(symbol)/chart/\(range)?chartCloseOnly=true&token=\(apiKey)"
+
+        return url
+    }
+    
+    private func prepareChart() -> (Color, [Double]) {
+        if !historicalPrices.isEmpty {
+            // Historical is been requested and successfully received
+            let prices = historicalPrices.map { $0.close } // Close prices array (for chart)
+            // Modify chart colour depending on % change over time
+            // If it's < 0 -> lost value -> red
+            var colour: Color = .red
+            let changeOverTime = historicalPrices.map { $0.changeOverTime }.last
+            if changeOverTime! >= 0 {
+                colour = .green
+            }
+            
+            return (colour, normalize(prices))
+        }
+        
+        // Handle error here after x seconds of requesting.
+        
+        return (.blue, [Double]())
+    }
+}
+
+struct HistoricalPriceView_Previews: PreviewProvider {
+    static var previews: some View {
+        ChartView(symbol: "aapl", chartHeight: 200)
+    }
+}
--- a/LazyBear/UI/CompanyView.swift	Wed Mar 03 15:16:41 2021 +0000
+++ b/LazyBear/UI/CompanyView.swift	Wed Mar 03 15:16:52 2021 +0000
@@ -19,7 +19,7 @@
         GeometryReader { geo in
             ScrollView {
                 PriceView(symbol: symbol)
-                HistoricalPriceView(symbol: symbol, chartHeight: geo.size.width / 2)
+                ChartView(symbol: symbol, chartHeight: geo.size.width / 2)
                 NewsView(symbol: symbol)
             }
         }
--- a/LazyBear/UI/HistoricalPriceView.swift	Wed Mar 03 15:16:41 2021 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,74 +0,0 @@
-//
-//  HistoricalPriceView.swift
-//  LazyBear
-//
-//  Created by Dennis Concepción Martín on 21/2/21.
-//
-
-import SwiftUI
-import Charts
-
-struct HistoricalPriceView: View {
-    var symbol: String
-    var chartHeight: CGFloat
-    @State private var historicalPrices = [HistoricalPriceModel]()
-   
-    // Date picker
-    var period = ["1W", "1M", "3M", "6M", "1Y", "2Y", "5Y"]
-    @State var selectedPeriod = 2
-    
-    var body: some View {
-        VStack {
-            DateSelection(period: period, selectedperiod: $selectedPeriod)
-                .padding(.horizontal)
-                .onChange(of: selectedPeriod, perform: { (value) in
-                    request(url: getUrl(range: period[value]), model: [HistoricalPriceModel].self) { self.historicalPrices = $0 }
-                })
-            
-            let (colour, prices) = prepareChart()
-            Chart(data: prices)
-                .frame(height: chartHeight)
-                .chartStyle(AreaChartStyle(.quadCurve, fill:
-                                            LinearGradient(gradient: .init(colors: [colour.opacity(0.5), colour.opacity(0.2)]),
-                                                           startPoint: .top,
-                                                           endPoint: .bottom)))
-        }
-        .onAppear {
-            request(url: getUrl(range: "3m"), model: [HistoricalPriceModel].self) { self.historicalPrices = $0 }
-        }
-    }
-    
-    private func getUrl(range: String) -> String {
-        let baseUrl = Bundle.main.infoDictionary?["IEX_URL"] as? String ?? "Empty url"
-        let apiKey = Bundle.main.infoDictionary?["IEX_API"] as? String ?? "Empty key"
-        let url = "\(baseUrl)/stock/\(symbol)/chart/\(range)?chartCloseOnly=true&token=\(apiKey)"
-
-        return url
-    }
-    
-    private func prepareChart() -> (Color, [Double]) {
-        if !historicalPrices.isEmpty {
-            // Historical is been requested and successfully received
-            let prices = historicalPrices.map { $0.close } // Close prices array (for chart)
-            // Modify chart colour depending on % change over time
-            // If it's < 0 -> lost value -> red
-            var colour: Color = .red
-            let changeOverTime = historicalPrices.map { $0.changeOverTime }.last
-            if changeOverTime! >= 0 {
-                colour = .green
-            }
-            
-            return (colour, normalize(prices))
-        }
-        
-        // Handle error here after x seconds of requesting.
-        
-        return (.blue, [Double]())
-    }
-}
-
-struct HistoricalPriceView_Previews: PreviewProvider {
-    static var previews: some View {
-        HistoricalPriceView(symbol: "aapl", chartHeight: 200)
-    }
-}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/LazyBear/UI/LanguagePicker.swift	Wed Mar 03 15:16:52 2021 +0000
@@ -0,0 +1,43 @@
+//
+//  NewsLanguagePicker.swift
+//  LazyBear
+//
+//  Created by Dennis Concepción Martín on 26/2/21.
+//
+
+import SwiftUI
+
+struct LanguagePicker: View {
+    @Environment(\.managedObjectContext) private var moc
+    @State var language: String
+    
+    var body: some View {
+        Picker("News language", selection: $language) {
+            ForEach(newsLanguages, id: \.code) { language in
+                Text("\(language.flag) \(language.name)")
+                    .tag(language.code)
+            }
+        }
+        .onChange(of: language, perform: { language in
+            save(change: language)
+        })
+    }
+    
+    private func save(change: Any) {
+        let userSettings = UserSettings(context: moc)
+        userSettings.changedAt = Date()
+        userSettings.newsLanguage = change as? String
+        do {
+            try moc.save()
+            print("Settings saved")
+        } catch {
+            print(error.localizedDescription)
+        }
+    }
+}
+
+struct NewsLanguagePicker_Previews: PreviewProvider {
+    static var previews: some View {
+        LanguagePicker(language: "en")
+    }
+}
--- a/LazyBear/UI/NewsLanguagePicker.swift	Wed Mar 03 15:16:41 2021 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,43 +0,0 @@
-//
-//  NewsLanguagePicker.swift
-//  LazyBear
-//
-//  Created by Dennis Concepción Martín on 26/2/21.
-//
-
-import SwiftUI
-
-struct NewsLanguagePicker: View {
-    @Environment(\.managedObjectContext) private var moc
-    @State var language: String
-    
-    var body: some View {
-        Picker("News language", selection: $language) {
-            ForEach(newsLanguages, id: \.code) { language in
-                Text("\(language.flag) \(language.name)")
-                    .tag(language.code)
-            }
-        }
-        .onChange(of: language, perform: { language in
-            save(change: language)
-        })
-    }
-    
-    private func save(change: Any) {
-        let userSettings = UserSettings(context: moc)
-        userSettings.changedAt = Date()
-        userSettings.newsLanguage = change as? String
-        do {
-            try moc.save()
-            print("Settings saved")
-        } catch {
-            print(error.localizedDescription)
-        }
-    }
-}
-
-struct NewsLanguagePicker_Previews: PreviewProvider {
-    static var previews: some View {
-        NewsLanguagePicker(language: "en")
-    }
-}
--- a/LazyBear/UI/PriceView.swift	Wed Mar 03 15:16:41 2021 +0000
+++ b/LazyBear/UI/PriceView.swift	Wed Mar 03 15:16:52 2021 +0000
@@ -28,7 +28,6 @@
                     .foregroundColor(negativeChange ? Color(.systemRed) : Color(.systemGreen))
                     .padding(.trailing)
                 
-                IexAttribution(text: "IEX Cloud")
                 Spacer()
             
             }
--- a/LazyBear/UI/Settings.swift	Wed Mar 03 15:16:41 2021 +0000
+++ b/LazyBear/UI/Settings.swift	Wed Mar 03 15:16:52 2021 +0000
@@ -21,7 +21,7 @@
                 let theme = userSettings.first?.theme ?? "Default"
                 let language = userSettings.first?.newsLanguage ?? "English"
                 ThemePicker(theme: theme)
-                NewsLanguagePicker(language: language)
+                LanguagePicker(language: language)
                 NavigationLink(destination: IconPicker()) {
                     Text("App icon")
                 }