//
// Created by mark on 8/17/25.
//

#ifndef INSIGHTS_BARLINELINECHART_H
#define INSIGHTS_BARLINELINECHART_H

#include <ReportsAndCharts/WChartJSDataSeries.h>
#include <ReportsAndCharts/WChartJSOptions.h>
#include <Wt/WContainerWidget.h>
#include <Wt/WStandardItemModel.h>

class BarLineLineChart : public Wt::WContainerWidget
{
public:
	// pass an array of pointers to three arrays, the first of which is a bar
	// and the next two are lines.
	// barLineLineData is composed of:
	//		Row 0: Actual
	//		Row 1: Simulated
	//		Row 2: Optimized
	explicit BarLineLineChart(const std::shared_ptr<Wt::WStandardItemModel>& barLineLineData, std::string &chartTitle);
	~BarLineLineChart() override;

private:
	const std::shared_ptr<Wt::WStandardItemModel> barLineLineData_{};
	WChartJSLibrary *barLineLineChart_{};
    std::unique_ptr<WChartJSDataSeries> barDataSeries_{};
    std::unique_ptr<WChartJSDataSeries> lineDataSeries1_{};
    std::unique_ptr<WChartJSDataSeries> lineDataSeries2_{};
	WChartJSOptions::PluginOptions pluginOptions_{};
	WChartJSOptions::ScalesOptions xScalesOptions_{};
	WChartJSOptions::ScalesOptions yScalesOptions_{};
	std::unique_ptr<WChartJSOptions> chartOptions_{};
};


#endif //INSIGHTS_BARLINELINECHART_H