Skip to content

Commit

Permalink
Merge pull request #683 from Shayokh144/navigation-ui-update
Browse files Browse the repository at this point in the history
[Feature] Navigation system update, Line chart added
  • Loading branch information
Shayokh144 committed Aug 19, 2024
2 parents fff4843 + 364873c commit 23a0fe6
Show file tree
Hide file tree
Showing 15 changed files with 400 additions and 132 deletions.
51 changes: 51 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
# General
.DS_Store
.AppleDouble
.LSOverride

# Icon must end with two \r
Icon


# Thumbnails
._*

# Files that might appear in the root of a volume
.DocumentRevisions-V100
.fseventsd
.Spotlight-V100
.TemporaryItems
.Trashes
.VolumeIcon.icns
.com.apple.timemachine.donotpresent

# Directories potentially created on remote AFP share
.AppleDB
.AppleDesktop
Network Trash Folder
Temporary Items
.apdisk

# Cookie cutter
# to ignore any cookie cutter generated files and directories

cookiecutter.json
{{ cookiecutter.*

# Xcode
#
# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore

## User settings
xcuserdata/

## compatibility with Xcode 8 and earlier (ignoring not required starting Xcode 9)
*.xcscmblueprint
*.xccheckout

# Extra
visualization/app/VisualReport/VisualReport.xcodeproj/project.xcworkspace/xcuserdata/nimble.xcuserdatad/UserInterfaceState.xcuserstate

# Extra2
visualization/app/VisualReport/VisualReport.xcodeproj/xcuserdata/nimble.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist

Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,17 @@
043E74DE2BABF81700B9AF91 /* BarChartView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 043E74DD2BABF81700B9AF91 /* BarChartView.swift */; };
043E74E02BABF81F00B9AF91 /* BarChartViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 043E74DF2BABF81F00B9AF91 /* BarChartViewModel.swift */; };
043E74E32BAC210E00B9AF91 /* SwiftCSV in Frameworks */ = {isa = PBXBuildFile; productRef = 043E74E22BAC210E00B9AF91 /* SwiftCSV */; };
043EE2FE2C6F5E0B00F60278 /* LineChartScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 043EE2FD2C6F5E0B00F60278 /* LineChartScreen.swift */; };
048B86C12C67D6CB008036D4 /* ProductSelectionScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 048B86C02C67D6CB008036D4 /* ProductSelectionScreen.swift */; };
048B86C32C67D6D8008036D4 /* ProductSelectionViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 048B86C22C67D6D8008036D4 /* ProductSelectionViewModel.swift */; };
048B86C62C67E6D0008036D4 /* CSVDataModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 048B86C52C67E6D0008036D4 /* CSVDataModel.swift */; };
048B86C92C67E75C008036D4 /* CSVFileReader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 048B86C82C67E75C008036D4 /* CSVFileReader.swift */; };
048B86CC2C67E9CB008036D4 /* DateFormatter+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 048B86CB2C67E9CB008036D4 /* DateFormatter+Extension.swift */; };
048B86D02C6B58D6008036D4 /* SingleBarScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 048B86CF2C6B58D6008036D4 /* SingleBarScreen.swift */; };
048B86D22C6B58E9008036D4 /* SingleBarViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 048B86D12C6B58E9008036D4 /* SingleBarViewModel.swift */; };
04DB73752C725FDF0038AEFD /* LineChartDataModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04DB73742C725FDF0038AEFD /* LineChartDataModel.swift */; };
04DB73772C7265300038AEFD /* LineChartViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04DB73762C7265300038AEFD /* LineChartViewModel.swift */; };
04DB73792C7346140038AEFD /* Double+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04DB73782C7346140038AEFD /* Double+Extension.swift */; };
/* End PBXBuildFile section */

/* Begin PBXFileReference section */
Expand All @@ -32,13 +36,17 @@
043E74D62BABF77800B9AF91 /* VisualReport.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = VisualReport.entitlements; sourceTree = "<group>"; };
043E74DD2BABF81700B9AF91 /* BarChartView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BarChartView.swift; sourceTree = "<group>"; };
043E74DF2BABF81F00B9AF91 /* BarChartViewModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BarChartViewModel.swift; sourceTree = "<group>"; };
043EE2FD2C6F5E0B00F60278 /* LineChartScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LineChartScreen.swift; sourceTree = "<group>"; };
048B86C02C67D6CB008036D4 /* ProductSelectionScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProductSelectionScreen.swift; sourceTree = "<group>"; };
048B86C22C67D6D8008036D4 /* ProductSelectionViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProductSelectionViewModel.swift; sourceTree = "<group>"; };
048B86C52C67E6D0008036D4 /* CSVDataModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CSVDataModel.swift; sourceTree = "<group>"; };
048B86C82C67E75C008036D4 /* CSVFileReader.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CSVFileReader.swift; sourceTree = "<group>"; };
048B86CB2C67E9CB008036D4 /* DateFormatter+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "DateFormatter+Extension.swift"; sourceTree = "<group>"; };
048B86CF2C6B58D6008036D4 /* SingleBarScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SingleBarScreen.swift; sourceTree = "<group>"; };
048B86D12C6B58E9008036D4 /* SingleBarViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SingleBarViewModel.swift; sourceTree = "<group>"; };
04DB73742C725FDF0038AEFD /* LineChartDataModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LineChartDataModel.swift; sourceTree = "<group>"; };
04DB73762C7265300038AEFD /* LineChartViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LineChartViewModel.swift; sourceTree = "<group>"; };
04DB73782C7346140038AEFD /* Double+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Double+Extension.swift"; sourceTree = "<group>"; };
/* End PBXFileReference section */

/* Begin PBXFrameworksBuildPhase section */
Expand Down Expand Up @@ -104,6 +112,15 @@
path = BarChart;
sourceTree = "<group>";
};
043EE2FC2C6F5DF600F60278 /* LineChart */ = {
isa = PBXGroup;
children = (
043EE2FD2C6F5E0B00F60278 /* LineChartScreen.swift */,
04DB73762C7265300038AEFD /* LineChartViewModel.swift */,
);
path = LineChart;
sourceTree = "<group>";
};
048B86BF2C67D630008036D4 /* ProductSelection */ = {
isa = PBXGroup;
children = (
Expand All @@ -117,6 +134,7 @@
isa = PBXGroup;
children = (
048B86C52C67E6D0008036D4 /* CSVDataModel.swift */,
04DB73742C725FDF0038AEFD /* LineChartDataModel.swift */,
);
path = DataModel;
sourceTree = "<group>";
Expand All @@ -133,13 +151,15 @@
isa = PBXGroup;
children = (
048B86CB2C67E9CB008036D4 /* DateFormatter+Extension.swift */,
04DB73782C7346140038AEFD /* Double+Extension.swift */,
);
path = Extension;
sourceTree = "<group>";
};
048B86CD2C6B58B7008036D4 /* Graph */ = {
isa = PBXGroup;
children = (
043EE2FC2C6F5DF600F60278 /* LineChart */,
048B86CE2C6B58BE008036D4 /* SingleBar */,
);
path = Graph;
Expand Down Expand Up @@ -233,14 +253,18 @@
048B86C32C67D6D8008036D4 /* ProductSelectionViewModel.swift in Sources */,
043E74D02BABF77700B9AF91 /* ContentView.swift in Sources */,
048B86C12C67D6CB008036D4 /* ProductSelectionScreen.swift in Sources */,
04DB73752C725FDF0038AEFD /* LineChartDataModel.swift in Sources */,
048B86D22C6B58E9008036D4 /* SingleBarViewModel.swift in Sources */,
048B86D02C6B58D6008036D4 /* SingleBarScreen.swift in Sources */,
048B86C62C67E6D0008036D4 /* CSVDataModel.swift in Sources */,
043EE2FE2C6F5E0B00F60278 /* LineChartScreen.swift in Sources */,
04DB73792C7346140038AEFD /* Double+Extension.swift in Sources */,
043E74E02BABF81F00B9AF91 /* BarChartViewModel.swift in Sources */,
048B86CC2C67E9CB008036D4 /* DateFormatter+Extension.swift in Sources */,
048B86C92C67E75C008036D4 /* CSVFileReader.swift in Sources */,
043E74CE2BABF77700B9AF91 /* VisualReportApp.swift in Sources */,
043E74DE2BABF81700B9AF91 /* BarChartView.swift in Sources */,
04DB73772C7265300038AEFD /* LineChartViewModel.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
Expand Down
Binary file not shown.

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -140,23 +140,3 @@ struct BarChartData: Identifiable {
self.calculatedValue = calculatedValue
}
}

extension BarChartData {

static var dummyList: [BarChartData] {
[
.init(name: "January", value: 160),
.init(name: "February", value: 140),
.init(name: "March", value: 130),
.init(name: "April", value: 180),
.init(name: "May", value: 160),
.init(name: "June", value: 190),
.init(name: "July", value: 260),
.init(name: "August", value: 460),
.init(name: "September", value: 177),
.init(name: "October", value: 199),
.init(name: "November", value: 160),
.init(name: "December", value: 80)
]
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,13 @@ final class BarChartViewModel: ObservableObject {
var avg = 0.0
barChartUIModel = barChartData.map { barChartData in
let paddedName = String(repeating: " ", count: maxValueLength - barChartData.name.count + 1) + barChartData.name
let mappedValue = (barChartData.value - minValue) / (maxValue - minValue) * 90 + 10
var mappedValue = (barChartData.value - minValue) / (maxValue - minValue) * 90 + 10
if mappedValue < 0 {
mappedValue = 0
}
if maxValue == minValue {
mappedValue = 100.0
}
avg += barChartData.value
return BarChartData(
name: paddedName,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,10 @@ struct ContentView: View {
nameView
}
.navigationDestination(for: CSVDataModel.self) { data in
ProductSelectionScreen(viewModel: ProductSelectionViewModel(csvData: data))
ProductSelectionScreen(viewModel: ProductSelectionViewModel(csvData: data), navigationPath: $navigationPath)
}
.navigationDestination(for: SingleBarViewModelData.self) { data in
SingleBarScreen(viewModel: SingleBarViewModel(singleBarViewModelData: data))
}
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
//
// LineChartDataModel.swift
// VisualReport
//
// Created by Taher's nimble macbook on 18/8/24.
//

import Foundation

struct LineChartDataSeries: Identifiable {

let id = UUID()
let type: String
var firstDate: Date
var lastDate: Date
var lineChartDataList: [LineChartDataModel]
var ruleMarkDataList: [RuleMarkDataModel]
}


struct LineChartDataModel: Identifiable {

var id: Int
let xTimeValue: Date
let yValue: Double
}

struct RuleMarkDataModel: Identifiable {

let id: Int
let yValue: Double
let yName: String
let ruleMarkName: String
}
Original file line number Diff line number Diff line change
Expand Up @@ -29,4 +29,11 @@ extension DateFormatter {
dateFormatter.dateFormat = "yyyy-MM"
return dateFormatter
}()

public static let monthYearShort: DateFormatter = {
let dateFormatter = DateFormatter()
dateFormatter.calendar = Calendar(identifier: .gregorian)
dateFormatter.dateFormat = "yy-MM"
return dateFormatter
}()
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
//
// Double+Extension.swift
// VisualReport
//
// Created by Taher's nimble macbook on 19/8/24.
//

extension Double {

var fractionTwoDigitString:String {
return String(format: "%.2f", self)
}

var fractionOneDigitString:String {
return String(format: "%.1f", self)
}
}
Loading

0 comments on commit 23a0fe6

Please sign in to comment.