Constructor.
74 sizeValidator->setMandatory(
true);
77 anyNumberValidator->setMandatory(
true);
80 angleValidator->setMandatory(
true);
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);
133 chartConfig->
elementAt(row, 0)->addWidget(
new WText(
"Orientation:"));
139 chartConfig->
elementAt(row, 0)->addWidget(
new WText(
"Legend location:"));
145 chartConfig->
elementAt(row, 0)->addWidget(
new WText(
"Legend side:"));
152 chartConfig->
elementAt(row, 0)->addWidget(
new WText(
"Legend alignment:"));
159 for (
int i = 0; i < chartConfig->
rowCount(); ++i) {
165 p->
setMargin(WLength::Auto, Left | Right);
166 p->
resize(880, WLength::Auto);
172 addEntry(types,
"Points");
173 addEntry(types,
"Line");
174 addEntry(types,
"Curve");
175 addEntry(types,
"Bar");
176 addEntry(types,
"Line Area");
177 addEntry(types,
"Curve Area");
178 addEntry(types,
"Stacked Bar");
179 addEntry(types,
"Stacked Line Area");
180 addEntry(types,
"Stacked Curve Area");
183 addEntry(markers,
"None");
184 addEntry(markers,
"Square");
185 addEntry(markers,
"Circle");
186 addEntry(markers,
"Cross");
187 addEntry(markers,
"X cross");
188 addEntry(markers,
"Triangle");
189 addEntry(markers,
"Diamond");
192 addEntry(axes,
"1st Y axis");
193 addEntry(axes,
"2nd Y axis");
196 addEntry(labels,
"None");
197 addEntry(labels,
"X");
198 addEntry(labels,
"Y");
199 addEntry(labels,
"X: Y");
202 seriesConfig->
setMargin(WLength::Auto, Left | Right);
204 ::addHeader(seriesConfig,
"Name");
205 ::addHeader(seriesConfig,
"Enabled");
206 ::addHeader(seriesConfig,
"Type");
207 ::addHeader(seriesConfig,
"Marker");
208 ::addHeader(seriesConfig,
"Y axis");
209 ::addHeader(seriesConfig,
"Legend");
210 ::addHeader(seriesConfig,
"Shadow");
211 ::addHeader(seriesConfig,
"Value labels");
246 int si = seriesIndexOf(chart, j);
249 sc.enabledEdit->setChecked();
253 sc.typeEdit->setCurrentIndex(0);
break;
261 sc.typeEdit->setCurrentIndex(s.
isStacked() ? 6 : 3);
264 sc.markerEdit->setCurrentIndex((
int)s.
marker());
274 p = list->
addWidget(
"Series properties", seriesConfig);
276 p->
setMargin(WLength::Auto, Left | Right);
277 p->
resize(880, WLength::Auto);
283 addEntry(yScales,
"Linear scale");
284 addEntry(yScales,
"Log scale");
287 addEntry(xScales,
"Categories");
288 addEntry(xScales,
"Linear scale");
289 addEntry(xScales,
"Log scale");
290 addEntry(xScales,
"Date scale");
293 axisConfig->
setMargin(WLength::Auto, Left | Right);
295 ::addHeader(axisConfig,
"Axis");
296 ::addHeader(axisConfig,
"Visible");
297 ::addHeader(axisConfig,
"Scale");
298 ::addHeader(axisConfig,
"Automatic");
299 ::addHeader(axisConfig,
"Minimum");
300 ::addHeader(axisConfig,
"Maximum");
301 ::addHeader(axisConfig,
"Gridlines");
302 ::addHeader(axisConfig,
"Label angle");
306 for (
int i = 0; i < 3; ++i) {
307 const char *axisName[] = {
"X axis",
"1st Y axis",
"2nd Y axis" };
321 sc.scaleEdit->
addItem(
"Category scale");
324 sc.scaleEdit->setModel(xScales);
325 sc.scaleEdit->setCurrentIndex(axis.
scale());
327 sc.scaleEdit->setModel(yScales);
328 sc.scaleEdit->setCurrentIndex(axis.
scale() - 1);
336 sc.minimumEdit->setText(WLocale::currentLocale()
338 sc.minimumEdit->setValidator(anyNumberValidator);
339 sc.minimumEdit->setEnabled(!autoValues);
343 sc.maximumEdit->setText(WLocale::currentLocale()
345 sc.maximumEdit->setValidator(anyNumberValidator);
346 sc.maximumEdit->setEnabled(!autoValues);
352 sc.autoEdit->checked().connect(sc.maximumEdit, &WLineEdit::disable);
353 sc.autoEdit->unChecked().connect(sc.maximumEdit, &WLineEdit::enable);
354 sc.autoEdit->checked().connect(sc.minimumEdit, &WLineEdit::disable);
355 sc.autoEdit->unChecked().connect(sc.minimumEdit, &WLineEdit::enable);
361 sc.labelAngleEdit->setText(
"0");
362 sc.labelAngleEdit->setValidator(angleValidator);
370 p = list->
addWidget(
"Axis properties", axisConfig);
371 p->
setMargin(WLength::Auto, Left | Right);
372 p->
resize(880, WLength::Auto);
379 if (!WApplication::instance()->environment().javaScript()) {
383 b->
setMargin(WLength::Auto, Left | Right);
virtual boost::any headerData(int section, Orientation orientation=Horizontal, int role=DisplayRole) const
MarkerType marker() const
WString asString(const boost::any &v, const WString &formatString=WString())
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)
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.
WAbstractItemModel * model() const
void setCurrentIndex(int index)
void setStyleClass(const WString &style)
WDataSeries & series(int modelColumn)
WFlags< AxisValue > autoLimits() const
FillRangeType fillRange() const
Wt::WComboBox * legendSideEdit_
std::vector< AxisControl > axisControls_
Controls for axes.
void setModel(WAbstractItemModel *model)
virtual int columnCount(const WModelIndex &parent=WModelIndex()) const =0
Wt::WComboBox * legendAlignmentEdit_
WTableRow * rowAt(int row)
Wt::WLineEdit * chartHeightEdit_
const WShadow & shadow() const