Project

General

Profile

Improvements #12495 » BarLineLineChart.cpp

Mark Travis, 07/09/2026 07:46 PM

 
//
// 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;
(1-1/9)