|
//
|
|
// Created by mark on 8/17/25.
|
|
//
|
|
|
|
#include <ReportsAndCharts/BarLineLineChart.h>
|
|
|
|
#include <Wt/WFitLayout.h>
|
|
|
|
BarLineLineChart::BarLineLineChart(const std::shared_ptr<Wt::WStandardItemModel>& barLineLineData, std::string &chartTitle) : barLineLineData_(barLineLineData) {
|
|
|
|
auto chartContainerLayout = setLayout(std::make_unique<Wt::WFitLayout>());
|
|
auto chartJS = std::make_unique<WChartJSLibrary>(ChartJSType::LINE);
|
|
barLineLineChart_ = chartContainerLayout->addWidget(std::move(chartJS));
|
|
// barLineLineChart_ = addWidget(std::move(chartJS));
|
|
chartOptions_ = std::make_unique<WChartJSOptions>(ChartJSType::LINE);
|
|
barDataSeries_ = std::make_unique<WChartJSDataSeries>(ChartJSType::BAR);
|
|
lineDataSeries1_ = std::make_unique<WChartJSDataSeries>(ChartJSType::LINE);
|
|
lineDataSeries2_ = std::make_unique<WChartJSDataSeries>(ChartJSType::LINE);
|
|
|
|
barLineLineChart_->setModel(barLineLineData_);
|
|
|
|
yScalesOptions_.axisOptions.axis = "y";
|
|
yScalesOptions_.axisOptions.type = "linear";
|
|
pluginOptions_.zoomAndPan.wheelEnabled = true;
|
|
pluginOptions_.zoomAndPan.pinchEnabled = true;
|
|
WChartJSOptions::TickOptions axisTickOptions;
|
|
axisTickOptions.display = true;
|
|
|
|
lineDataSeries1_->setBorderWidth(3);
|
|
lineDataSeries1_->setTension(0.5);
|
|
lineDataSeries1_->setIndexAxis("x");
|
|
lineDataSeries1_->setPointRadius(0);
|
|
lineDataSeries1_->setLineBarCircleSeriesBorderColor(CURIOUS_CORAL);
|
|
|
|
lineDataSeries2_->setBorderWidth(3);
|
|
lineDataSeries2_->setTension(0.5);
|
|
lineDataSeries2_->setIndexAxis("x");
|
|
lineDataSeries2_->setPointRadius(0);
|
|
lineDataSeries2_->setLineBarCircleSeriesBorderColor(OPTIMISTIC_GOLD);
|
|
|
|
barDataSeries_->setBorderWidth(3);
|
|
barDataSeries_->setLineBarCircleSeriesColor(OPTIMISTIC_GOLD);
|
|
barDataSeries_->setLineBarCircleSeriesBorderColor(INSPIRING_TEAL);
|
|
barDataSeries_->setHeaderTextPosition(HeaderText::VERTICAL);
|
|
|
|
chartOptions_->setResponsive(true);
|
|
chartOptions_->setMaintainAspectRatio(false);
|
|
pluginOptions_.title.display = true;
|
|
pluginOptions_.title.text = chartTitle;
|
|
|
|
pluginOptions_.legend.position = "bottom";
|
|
|
|
chartOptions_->setXScales(xScalesOptions_);
|
|
chartOptions_->setPlugins(pluginOptions_);
|
|
barLineLineChart_->setOptions(chartOptions_->getOptions());
|
|
|
|
barLineLineChart_->addSeries(0,false,barDataSeries_->getJson(), false);
|
|
barLineLineChart_->addSeries(1,true,lineDataSeries1_->getJson(), false);
|
|
barLineLineChart_->addSeries(2,true,lineDataSeries2_->getJson(), false);
|
|
|
|
barLineLineChart_->buildAndShowChart();
|
|
}
|
|
|
|
BarLineLineChart::~BarLineLineChart() = default;
|