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 9 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;
  }
}


Generated on Mon Nov 29 2010 08:03:14 for Wt by doxygen 1.7.1