//
//  PriceTrendChartView.swift
//  Gas Man
//
//  Created by Kameron Kenny on 3/19/25.
//


import SwiftUI
import Charts
import CoreData

struct PricePerGallonTrendChartView: View {
    let fuelLogs: [FuelLog]
    
    // Compute trend data by sorting logs by date ascending,
    // then mapping each log's date and pricePerGalon.
    var trendData: [(date: Date, price: Double)] {
        let sortedLogs = fuelLogs.sorted { ($0.date ?? Date()) < ($1.date ?? Date()) }
        return sortedLogs.compactMap { log in
            if let date = log.date {
                return (date, log.pricePerGalon)
            } else {
                return nil
            }
        }
    }
    
    var body: some View {
        VStack {
            if trendData.isEmpty {
                Text("No price trend data available.")
                    .foregroundColor(.secondary)
            } else {
                Chart {
                    ForEach(trendData, id: \.date) { point in
                        LineMark(
                            x: .value("Date", point.date),
                            y: .value("Price", point.price)
                        )
                        PointMark(
                            x: .value("Date", point.date),
                            y: .value("Price", point.price)
                        )
                        .annotation(position: .top) {
                            // This annotation displays the data point number and the MPG value.
                            Text("\(point.price, specifier: "%.3f")")
                                .font(.caption2)
                                .foregroundColor(.blue)
                        }
                    }
                }
                .chartXAxis {
                    AxisMarks(values: .automatic(desiredCount: 4))
                }
                .chartYAxis {
                    AxisMarks(values: .automatic(desiredCount: 5))
                }
            }
        }
        .padding()
        .navigationTitle("Price/Gallon Trend")
    }
}
