Wt examples: Charts example

Wt examples 3.3.0

- Main Page
- Modules
- Namespaces
- Classes
- Files

Classes | Functions
Charts example

## Classes
class | ChartConfig
| A class that allows configuration of a cartesian chart. More...
class | TimeSeriesExample
| A widget that demonstrates a times series chart. More...
class | CategoryExample
| A Widget that demonstrates a category chart. More...
class | ScatterPlotExample
| A Widget that demonstrates a scatter plot. More...
class | PieExample
| A Widget that demonstrates a Pie chart. More...
class | ChartsExample
| A widget that demonstrates various aspects of the charting lib. More...
## Functions
void | readFromCsv (std::istream &f, Wt::WAbstractItemModel *model, int numRows=-1, bool firstLineIsHeaders=true)
| Utility function that reads a model from a CSV file.

## Function Documentation

void readFromCsv | ( | std::istream & | f,
|  | Wt::WAbstractItemModel * | model,
|  | int | numRows = `-1`,
|  | bool | firstLineIsHeaders = `true`
| ) |  |

Utility function that reads a model from a CSV file.

Definition at line 25 of file CsvUtil.C.

    {
      int csvRow = 0;

      while (f) {
        std::string line;
        getline(f, line);

        if (f) {
          typedef boost::tokenizer<boost::escaped_list_separator<char> >
            CsvTokenizer;
          CsvTokenizer tok(line);

          int col = 0;
          for (CsvTokenizer::iterator i = tok.begin();
               i != tok.end(); ++i, ++col) {

            if (col >= model->columnCount())
              model->insertColumns(model->columnCount(),
                                   col + 1 - model->columnCount());

            if (firstLineIsHeaders && csvRow == 0)
              model->setHeaderData(col, boost::any(Wt::WString::fromUTF8(*i)));
            else {
              int dataRow = firstLineIsHeaders ? csvRow - 1 : csvRow;

              if (numRows != -1 && dataRow >= numRows)
                return;

              if (dataRow >= model->rowCount())
                model->insertRows(model->rowCount(),
                                  dataRow + 1 - model->rowCount());

              std::string s = *i;

              boost::any data;

              char *end;
              int i = std::strtol(s.c_str(), &end, 10);
              if (*end == 0)
                data = boost::any(i);
              else {
                double d = std::strtod(s.c_str(), &end);
                if (*end == 0)
                  data = boost::any(d);
                else
                  data = boost::any(Wt::WString::fromUTF8(s));
              }

              model->setData(dataRow, col, data);
            }
          }
        }

        ++csvRow;
      }
    }