Constructor.
85 addEntry(orientation,
"Vertical");
86 addEntry(orientation,
"Horizontal");
89 addEntry(legendLocation,
"Outside");
90 addEntry(legendLocation,
"Inside");
93 addEntry(legendSide,
"Top");
94 addEntry(legendSide,
"Right");
95 addEntry(legendSide,
"Bottom");
96 addEntry(legendSide,
"Left");
99 addEntry(legendAlignment,
"AlignLeft");
100 addEntry(legendAlignment,
"AlignCenter");
101 addEntry(legendAlignment,
"AlignRight");
102 addEntry(legendAlignment,
"AlignTop");
103 addEntry(legendAlignment,
"AlignMiddle");
104 addEntry(legendAlignment,
"AlignBottom");
107 chartConfig->
setMargin(WLength::Auto, Left | Right);
167 for (
int i = 0; i < chartConfig->
rowCount(); ++i) {
173 p->
setMargin(WLength::Auto, Left | Right);
174 p->
resize(1080, WLength::Auto);
180 addEntry(types,
"Points");
181 addEntry(types,
"Line");
182 addEntry(types,
"Curve");
183 addEntry(types,
"Bar");
184 addEntry(types,
"Line Area");
185 addEntry(types,
"Curve Area");
186 addEntry(types,
"Stacked Bar");
187 addEntry(types,
"Stacked Line Area");
188 addEntry(types,
"Stacked Curve Area");
191 addEntry(markers,
"None");
192 addEntry(markers,
"Square");
193 addEntry(markers,
"Circle");
194 addEntry(markers,
"Cross");
195 addEntry(markers,
"X cross");
196 addEntry(markers,
"Triangle");
197 addEntry(markers,
"Pipe");
198 addEntry(markers,
"Star");
199 addEntry(markers,
"Inverted triangle");
200 addEntry(markers,
"Asterisk");
201 addEntry(markers,
"Diamond");
204 addEntry(axes,
"1st Y axis");
205 addEntry(axes,
"2nd Y axis");
208 addEntry(labels,
"None");
209 addEntry(labels,
"X");
210 addEntry(labels,
"Y");
211 addEntry(labels,
"X: Y");
214 seriesConfig->
setMargin(WLength::Auto, Left | Right);
216 ::addHeader(seriesConfig,
"Name");
217 ::addHeader(seriesConfig,
"Enabled");
218 ::addHeader(seriesConfig,
"Type");
219 ::addHeader(seriesConfig,
"Marker");
220 ::addHeader(seriesConfig,
"Y axis");
221 ::addHeader(seriesConfig,
"Legend");
222 ::addHeader(seriesConfig,
"Shadow");
223 ::addHeader(seriesConfig,
"Value labels");
238 sc.typeEdit->setCurrentIndex(0);
243 sc.markerEdit->setCurrentIndex(0);
248 sc.axisEdit->setCurrentIndex(0);
259 sc.labelsEdit->setCurrentIndex(0);
262 int si = seriesIndexOf(chart, j);
265 sc.enabledEdit->setChecked();
269 sc.typeEdit->setCurrentIndex(0);
break;
277 sc.typeEdit->setCurrentIndex(s.
isStacked() ? 6 : 3);
280 sc.markerEdit->setCurrentIndex((
int)s.
marker());
290 p = list->
addWidget(
"Series properties", seriesConfig);
292 p->
setMargin(WLength::Auto, Left | Right);
293 p->
resize(1080, WLength::Auto);
299 addEntry(yScales,
"Linear scale");
300 addEntry(yScales,
"Log scale");
303 addEntry(xScales,
"Categories");
304 addEntry(xScales,
"Linear scale");
305 addEntry(xScales,
"Log scale");
306 addEntry(xScales,
"Date scale");
309 axisConfig->
setMargin(WLength::Auto, Left | Right);
311 ::addHeader(axisConfig,
"Axis");
312 ::addHeader(axisConfig,
"Visible");
313 ::addHeader(axisConfig,
"Scale");
314 ::addHeader(axisConfig,
"Automatic");
315 ::addHeader(axisConfig,
"Minimum");
316 ::addHeader(axisConfig,
"Maximum");
317 ::addHeader(axisConfig,
"Gridlines");
318 ::addHeader(axisConfig,
"Label angle");
319 ::addHeader(axisConfig,
"Title");
320 ::addHeader(axisConfig,
"Title orientation");
321 ::addHeader(axisConfig,
"Tick direction");
322 ::addHeader(axisConfig,
"Location");
326 for (
int i = 0; i < 3; ++i) {
327 const char *axisName[] = {
"X axis",
"1st Y axis",
"2nd Y axis" };
341 sc.scaleEdit->
addItem(
"Category scale");
344 sc.scaleEdit->setModel(xScales);
345 sc.scaleEdit->setCurrentIndex(axis.
scale());
347 sc.scaleEdit->setModel(yScales);
348 sc.scaleEdit->setCurrentIndex(axis.
scale() - 1);
356 sc.minimumEdit->
setText(WLocale::currentLocale()
358 sc.minimumEdit->setValidator(anyNumberValidator);
359 sc.minimumEdit->setEnabled(!autoValues);
363 sc.maximumEdit->
setText(WLocale::currentLocale()
365 sc.maximumEdit->setValidator(anyNumberValidator);
366 sc.maximumEdit->setEnabled(!autoValues);
372 sc.autoEdit->checked().connect(sc.maximumEdit, &WLineEdit::disable);
373 sc.autoEdit->unChecked().connect(sc.maximumEdit, &WLineEdit::enable);
374 sc.autoEdit->checked().connect(sc.minimumEdit, &WLineEdit::disable);
375 sc.autoEdit->unChecked().connect(sc.minimumEdit, &WLineEdit::enable);
381 sc.labelAngleEdit->
setText(
"0");
382 sc.labelAngleEdit->setValidator(angleValidator);
390 sc.titleOrientationEdit->
addItem(
"Horizontal");
391 sc.titleOrientationEdit->addItem(
"Vertical");
392 sc.titleOrientationEdit->setCurrentIndex(0);
396 sc.tickDirectionEdit->
addItem(
"Outwards");
397 sc.tickDirectionEdit->addItem(
"Inwards");
398 sc.tickDirectionEdit->setCurrentIndex(0);
402 sc.locationEdit->
addItem(
"Minimum value");
403 sc.locationEdit->addItem(
"Maximum value");
404 sc.locationEdit->addItem(
"Zero value");
405 sc.locationEdit->addItem(
"Both sides");
406 sc.locationEdit->setCurrentIndex(0);
408 sc.locationEdit->setCurrentIndex(2);
417 p = list->
addWidget(
"Axis properties", axisConfig);
418 p->
setMargin(WLength::Auto, Left | Right);
419 p->
resize(1080, WLength::Auto);
426 if (!WApplication::instance()->environment().javaScript()) {
430 b->
setMargin(WLength::Auto, Left | Right);
virtual WString headerData(int column) const
Wt::WCheckBox * borderEdit_
MarkerType marker() const
virtual void setText(const WString &text)
bool isLegendEnabled() const
Wt::Chart::FillRangeType fill_
Wt::WLineEdit * titleEdit_
Wt::Chart::WCartesianChart * chart_
void addItem(const WString &text)
void connectSignals(Wt::WFormWidget *w)
void setLegendStyle(const WFont &font, const WPen &border, const WBrush &background)
AxisValue location() const
Wt::WLineEdit * chartWidthEdit_
WTableCell * elementAt(int row, int column)
Wt::WPanel * addWidget(const Wt::WString &text, Wt::WWidget *w)
Wt::WComboBox * chartOrientationEdit_
Wt::WComboBox * legendLocationEdit_
std::vector< SeriesControl > seriesControls_
Controls for series.
void setCurrentIndex(int index)
void setStyleClass(const WString &style)
WDataSeries & series(int modelColumn)
WFlags< AxisValue > autoLimits() const
void setMaxLength(int length)
FillRangeType fillRange() const
Wt::WComboBox * legendSideEdit_
std::vector< AxisControl > axisControls_
Controls for axes.
virtual int columnCount() const =0
void setModel(WAbstractItemModel *model)
void setMandatory(bool how)
Wt::WComboBox * legendAlignmentEdit_
WTableRow * rowAt(int row)
WAbstractChartModel * model() const
Wt::WLineEdit * chartHeightEdit_
const WShadow & shadow() const