Creates the pie chart example.
352 :
353 WContainerWidget()
354{
355 this->addWidget(std::make_unique<WText>(WString::tr("pie chart")));
356
357 std::shared_ptr<WStandardItemModel> model
358 = std::make_shared<WStandardItemModel>();
359 std::unique_ptr<NumericItem> prototype
360 = std::make_unique<NumericItem>();
361 model->setItemPrototype(std::move(prototype));
362
363
364 model->insertColumns(model->columnCount(), 2);
365 model->setHeaderData(0, WString("Item"));
366 model->setHeaderData(1, WString("Sales"));
367
368
369 model->insertRows(model->rowCount(), 6);
370 int row = 0;
371 model->setData(row, 0, WString("Blueberry"));
372 model->setData(row, 1, 120);
373
374 row++;
375 model->setData(row, 0, WString("Cherry"));
376 model->setData(row, 1, 30);
377 row++;
378 model->setData(row, 0, WString("Apple"));
379 model->setData(row, 1, 260);
380 row++;
381 model->setData(row, 0, WString("Boston Cream"));
382 model->setData(row, 1, 160);
383 row++;
384 model->setData(row, 0, WString("Other"));
385 model->setData(row, 1, 40);
386 row++;
387 model->setData(row, 0, WString("Vanilla Cream"));
388 model->setData(row, 1, 120);
389 row++;
390
391
392 for (int row = 0; row < model->rowCount(); ++row)
393 for (int col = 0; col < model->columnCount(); ++col)
394 model->item(row, col)->setFlags(ItemFlag::Selectable | ItemFlag::Editable);
395
396 WContainerWidget *w = this->addWidget(std::make_unique<WContainerWidget>());
397 WTableView* table = w->addWidget(std::make_unique<WTableView>());
398
399 table->setMargin(10, Side::Top | Side::Bottom);
400 table->setMargin(WLength::Auto, Side::Left | Side::Right);
401 table->setSortingEnabled(true);
402 table->setModel(model);
403 table->setColumnWidth(1, 100);
404 table->setRowHeight(22);
405
406 if (WApplication::instance()->environment().ajax()) {
407 table->resize(150 + 100 + 14, 20 + 6 * 22);
408 table->setEditTriggers(EditTrigger::SingleClicked);
409 } else {
410 table->resize(150 + 100 + 14, WLength::Auto);
411 table->setEditTriggers(EditTrigger::None);
412 }
413
414
415
416
417 WPieChart *chart = this->addWidget(std::make_unique<WPieChart>());
418 chart->setModel(model);
419 chart->setLabelsColumn(0);
420 chart->setDataColumn(1);
421
422
423 chart->setDisplayLabels(LabelOption::Outside | LabelOption::TextLabel | LabelOption::TextPercentage);
424
425
426 chart->setPerspectiveEnabled(true, 0.2);
427 chart->setShadowEnabled(true);
428
429
430 chart->setExplode(0, 0.3);
431
432 chart->resize(800, 300);
433
434 chart->setMargin(10, Side::Top | Side::Bottom);
435 chart->setMargin(WLength::Auto, Side::Left | Side::Right);
436}