Commit 7e26b44b authored by Paul Asmuth's avatar Paul Asmuth
Browse files

implement hex series colors

parent df817e3d
Loading
Loading
Loading
Loading
+0 −27
Original line number Diff line number Diff line
@@ -45,33 +45,6 @@ void CLI::parseArgs(Environment* env, const std::vector<std::string>& argv) {
      "Write output to a file",
      "<format>");

  // Start a user interface:
  flags->defineFlag(
      "repl",
      FlagParser::T_SWITCH,
      false,
      NULL,
      NULL,
      "Start an interactive readline shell",
      NULL);

  flags->defineFlag(
      "web",
      FlagParser::T_INTEGER,
      false,
      NULL,
      NULL,
      "Start a web interface on this port",
      "<port>");

  flags->defineFlag(
      "cgi",
      FlagParser::T_SWITCH,
      false,
      NULL,
      NULL,
      "Run as CGI script");

  flags->defineFlag(
      "verbose",
      FlagParser::T_SWITCH,
+30 −9
Original line number Diff line number Diff line
@@ -71,19 +71,26 @@ public:
      const std::string& series) override {
    std::string class_str(class_name);
    class_str += " ";

    std::string style_str;
    if (color.size() > 3 && color.size() < 8 && color[0] == '#') {
      style_str += "fill: " + color + ";";
    } else {
      class_str += color;
    }

    // FIXPAUL escape me
    appendLine(
        "<rect x='%f' y='%f' width='%f' height='%f' class='%s' "
            "fm:series='%s' fm:label='%s'></rect>\n",
            "fm:series='%s' fm:label='%s' style='%s'></rect>\n",
        x,
        y,
        width,
        height,
        escapeString(class_str).c_str(),
        escapeString(series).c_str(),
        escapeString(label).c_str());
        escapeString(label).c_str(),
        escapeString(style_str).c_str());
  }

  void drawLine(
@@ -146,19 +153,26 @@ public:
      const std::string& series /* = "" */) override {
    std::string class_str(class_name);
    class_str += " ";

    std::string style_str;
    if (color.size() > 3 && color.size() < 8 && color[0] == '#') {
      style_str += "fill: " + color + ";";
    } else {
      class_str += color;
    }

    /* point_type: circle */
    // FIXPAUL escape label
    appendLine(
        "<circle cx='%f' cy='%f' r='%f' class='%s' fm:label='%s' "
            "fm:series='%s'></circle>\n",
            "fm:series='%s', style='%s'></circle>\n",
        x,
        y,
        point_type == "none" ? 0 : point_size,
        escapeString(class_str).c_str(),
        escapeString(label).c_str(),
        escapeString(series).c_str());
        escapeString(series).c_str(),
        escapeString(style_str).c_str());
  }

   void drawPath(
@@ -170,12 +184,19 @@ public:
      const std::string& class_name = "") override {
    std::string class_str(class_name);
    class_str += " ";

    std::string style_str;
    if (color.size() > 3 && color.size() < 8 && color[0] == '#') {
      style_str += "stroke: " + color + ";";
    } else {
      class_str += color;
    }

    appendLine(
        "<path stroke-width='%f' class='%s' d='",
        "<path stroke-width='%f' class='%s' style='%s' d='",
        line_width,
        escapeString(class_str).c_str());
        escapeString(class_str).c_str(),
        escapeString(style_str).c_str());

    for (int i = 0; i < points.size(); ++i) {
      if (i == 0) {
+1 −3
Original line number Diff line number Diff line
@@ -25,9 +25,7 @@
    - metric preview widget: auto refresh (on/off)

[ SQL ]
    - support hex colors
    - round fn
    - functions: round, mean, max/min, percentile, delta, 
    - functions: round, mean, max/min, percentile, delta

[ release ]
    - svg: escape series names, labels!
+26 −26
Original line number Diff line number Diff line
@@ -224,31 +224,31 @@
    <line x1='50.000000' y1='25.000000' x2='50.000000' y2='295.000000' class='stroke' />
  </g>
  <g class='areas'>
    <circle cx='50.000000' cy='73.798701' r='0.000000' class='point color1' fm:label='10.000000: -34.000000, 34.000000' fm:series='series1'></circle>
    <circle cx='137.500000' cy='62.110390' r='0.000000' class='point color1' fm:label='15.000000: -30.000000, 38.000000' fm:series='series1'></circle>
    <circle cx='225.000000' cy='47.500000' r='0.000000' class='point color1' fm:label='20.000000: -20.000000, 43.000000' fm:series='series1'></circle>
    <circle cx='400.000000' cy='76.720779' r='0.000000' class='point color1' fm:label='30.000000: -24.000000, 33.000000' fm:series='series1'></circle>
    <circle cx='575.000000' cy='111.785714' r='0.000000' class='point color1' fm:label='40.000000: -18.000000, 21.000000' fm:series='series1'></circle>
    <circle cx='750.000000' cy='76.720779' r='0.000000' class='point color1' fm:label='50.000000: -32.000000, 33.000000' fm:series='series1'></circle>
    <circle cx='750.000000' cy='266.655844' r='0.000000' class='point color1' fm:label='50.000000: -32.000000, 33.000000' fm:series='series1'></circle>
    <circle cx='575.000000' cy='225.746753' r='0.000000' class='point color1' fm:label='40.000000: -18.000000, 21.000000' fm:series='series1'></circle>
    <circle cx='400.000000' cy='243.279221' r='0.000000' class='point color1' fm:label='30.000000: -24.000000, 33.000000' fm:series='series1'></circle>
    <circle cx='225.000000' cy='231.590909' r='0.000000' class='point color1' fm:label='20.000000: -20.000000, 43.000000' fm:series='series1'></circle>
    <circle cx='137.500000' cy='260.811688' r='0.000000' class='point color1' fm:label='15.000000: -30.000000, 38.000000' fm:series='series1'></circle>
    <circle cx='50.000000' cy='272.500000' r='0.000000' class='point color1' fm:label='10.000000: -34.000000, 34.000000' fm:series='series1'></circle>
    <path stroke-width='0.000000' class='area color1' d='M50.000000 73.798701 L137.500000 62.110390 L225.000000 47.500000 L400.000000 76.720779 L575.000000 111.785714 L750.000000 76.720779 L750.000000 266.655844 L575.000000 225.746753 L400.000000 243.279221 L225.000000 231.590909 L137.500000 260.811688 L50.000000 272.500000 ' />
    <circle cx='50.000000' cy='82.564935' r='0.000000' class='point color2' fm:label='10.000000: -24.000000, 31.000000' fm:series='series2'></circle>
    <circle cx='137.500000' cy='76.720779' r='0.000000' class='point color2' fm:label='15.000000: -20.000000, 33.000000' fm:series='series2'></circle>
    <circle cx='225.000000' cy='62.110390' r='0.000000' class='point color2' fm:label='20.000000: -15.000000, 38.000000' fm:series='series2'></circle>
    <circle cx='400.000000' cy='94.253247' r='0.000000' class='point color2' fm:label='30.000000: -20.000000, 27.000000' fm:series='series2'></circle>
    <circle cx='575.000000' cy='135.162338' r='0.000000' class='point color2' fm:label='40.000000: -7.000000, 13.000000' fm:series='series2'></circle>
    <circle cx='750.000000' cy='85.487013' r='0.000000' class='point color2' fm:label='50.000000: -18.000000, 30.000000' fm:series='series2'></circle>
    <circle cx='750.000000' cy='225.746753' r='0.000000' class='point color2' fm:label='50.000000: -18.000000, 30.000000' fm:series='series2'></circle>
    <circle cx='575.000000' cy='193.603896' r='0.000000' class='point color2' fm:label='40.000000: -7.000000, 13.000000' fm:series='series2'></circle>
    <circle cx='400.000000' cy='231.590909' r='0.000000' class='point color2' fm:label='30.000000: -20.000000, 27.000000' fm:series='series2'></circle>
    <circle cx='225.000000' cy='216.980519' r='0.000000' class='point color2' fm:label='20.000000: -15.000000, 38.000000' fm:series='series2'></circle>
    <circle cx='137.500000' cy='231.590909' r='0.000000' class='point color2' fm:label='15.000000: -20.000000, 33.000000' fm:series='series2'></circle>
    <circle cx='50.000000' cy='243.279221' r='0.000000' class='point color2' fm:label='10.000000: -24.000000, 31.000000' fm:series='series2'></circle>
    <path stroke-width='0.000000' class='area color2' d='M50.000000 82.564935 L137.500000 76.720779 L225.000000 62.110390 L400.000000 94.253247 L575.000000 135.162338 L750.000000 85.487013 L750.000000 225.746753 L575.000000 193.603896 L400.000000 231.590909 L225.000000 216.980519 L137.500000 231.590909 L50.000000 243.279221 ' />
    <circle cx='50.000000' cy='73.798701' r='0.000000' class='point color1' fm:label='10.000000: -34.000000, 34.000000' fm:series='series1', style=''></circle>
    <circle cx='137.500000' cy='62.110390' r='0.000000' class='point color1' fm:label='15.000000: -30.000000, 38.000000' fm:series='series1', style=''></circle>
    <circle cx='225.000000' cy='47.500000' r='0.000000' class='point color1' fm:label='20.000000: -20.000000, 43.000000' fm:series='series1', style=''></circle>
    <circle cx='400.000000' cy='76.720779' r='0.000000' class='point color1' fm:label='30.000000: -24.000000, 33.000000' fm:series='series1', style=''></circle>
    <circle cx='575.000000' cy='111.785714' r='0.000000' class='point color1' fm:label='40.000000: -18.000000, 21.000000' fm:series='series1', style=''></circle>
    <circle cx='750.000000' cy='76.720779' r='0.000000' class='point color1' fm:label='50.000000: -32.000000, 33.000000' fm:series='series1', style=''></circle>
    <circle cx='750.000000' cy='266.655844' r='0.000000' class='point color1' fm:label='50.000000: -32.000000, 33.000000' fm:series='series1', style=''></circle>
    <circle cx='575.000000' cy='225.746753' r='0.000000' class='point color1' fm:label='40.000000: -18.000000, 21.000000' fm:series='series1', style=''></circle>
    <circle cx='400.000000' cy='243.279221' r='0.000000' class='point color1' fm:label='30.000000: -24.000000, 33.000000' fm:series='series1', style=''></circle>
    <circle cx='225.000000' cy='231.590909' r='0.000000' class='point color1' fm:label='20.000000: -20.000000, 43.000000' fm:series='series1', style=''></circle>
    <circle cx='137.500000' cy='260.811688' r='0.000000' class='point color1' fm:label='15.000000: -30.000000, 38.000000' fm:series='series1', style=''></circle>
    <circle cx='50.000000' cy='272.500000' r='0.000000' class='point color1' fm:label='10.000000: -34.000000, 34.000000' fm:series='series1', style=''></circle>
    <path stroke-width='0.000000' class='area color1' style='' d='M50.000000 73.798701 L137.500000 62.110390 L225.000000 47.500000 L400.000000 76.720779 L575.000000 111.785714 L750.000000 76.720779 L750.000000 266.655844 L575.000000 225.746753 L400.000000 243.279221 L225.000000 231.590909 L137.500000 260.811688 L50.000000 272.500000 ' />
    <circle cx='50.000000' cy='82.564935' r='0.000000' class='point color2' fm:label='10.000000: -24.000000, 31.000000' fm:series='series2', style=''></circle>
    <circle cx='137.500000' cy='76.720779' r='0.000000' class='point color2' fm:label='15.000000: -20.000000, 33.000000' fm:series='series2', style=''></circle>
    <circle cx='225.000000' cy='62.110390' r='0.000000' class='point color2' fm:label='20.000000: -15.000000, 38.000000' fm:series='series2', style=''></circle>
    <circle cx='400.000000' cy='94.253247' r='0.000000' class='point color2' fm:label='30.000000: -20.000000, 27.000000' fm:series='series2', style=''></circle>
    <circle cx='575.000000' cy='135.162338' r='0.000000' class='point color2' fm:label='40.000000: -7.000000, 13.000000' fm:series='series2', style=''></circle>
    <circle cx='750.000000' cy='85.487013' r='0.000000' class='point color2' fm:label='50.000000: -18.000000, 30.000000' fm:series='series2', style=''></circle>
    <circle cx='750.000000' cy='225.746753' r='0.000000' class='point color2' fm:label='50.000000: -18.000000, 30.000000' fm:series='series2', style=''></circle>
    <circle cx='575.000000' cy='193.603896' r='0.000000' class='point color2' fm:label='40.000000: -7.000000, 13.000000' fm:series='series2', style=''></circle>
    <circle cx='400.000000' cy='231.590909' r='0.000000' class='point color2' fm:label='30.000000: -20.000000, 27.000000' fm:series='series2', style=''></circle>
    <circle cx='225.000000' cy='216.980519' r='0.000000' class='point color2' fm:label='20.000000: -15.000000, 38.000000' fm:series='series2', style=''></circle>
    <circle cx='137.500000' cy='231.590909' r='0.000000' class='point color2' fm:label='15.000000: -20.000000, 33.000000' fm:series='series2', style=''></circle>
    <circle cx='50.000000' cy='243.279221' r='0.000000' class='point color2' fm:label='10.000000: -24.000000, 31.000000' fm:series='series2', style=''></circle>
    <path stroke-width='0.000000' class='area color2' style='' d='M50.000000 82.564935 L137.500000 76.720779 L225.000000 62.110390 L400.000000 94.253247 L575.000000 135.162338 L750.000000 85.487013 L750.000000 225.746753 L575.000000 193.603896 L400.000000 231.590909 L225.000000 216.980519 L137.500000 231.590909 L50.000000 243.279221 ' />
  </g>
</svg>
+8 −8
Original line number Diff line number Diff line
@@ -224,13 +224,13 @@
    <line x1='50.000000' y1='25.000000' x2='50.000000' y2='295.000000' class='stroke' />
  </g>
  <g class='areas'>
    <circle cx='50.000000' cy='111.400000' r='3.000000' class='point color1' fm:label='10.000000: 34.000000' fm:series='unnamed'></circle>
    <circle cx='137.500000' cy='89.800000' r='3.000000' class='point color1' fm:label='15.000000: 38.000000' fm:series='unnamed'></circle>
    <circle cx='225.000000' cy='62.800000' r='3.000000' class='point color1' fm:label='20.000000: 43.000000' fm:series='unnamed'></circle>
    <circle cx='400.000000' cy='116.800000' r='3.000000' class='point color1' fm:label='30.000000: 33.000000' fm:series='unnamed'></circle>
    <circle cx='575.000000' cy='181.600000' r='3.000000' class='point color1' fm:label='40.000000: 21.000000' fm:series='unnamed'></circle>
    <circle cx='750.000000' cy='116.800000' r='3.000000' class='point color1' fm:label='50.000000: 33.000000' fm:series='unnamed'></circle>
    <path stroke-width='2.000000' class='area color1' d='M50.000000 111.400000 L137.500000 89.800000 L225.000000 62.800000 L400.000000 116.800000 L575.000000 181.600000 L750.000000 116.800000 L750.000000 295.000000 L575.000000 295.000000 L400.000000 295.000000 L225.000000 295.000000 L137.500000 295.000000 L50.000000 295.000000 ' />
    <path stroke-width='2.000000' class='line color1' d='M50.000000 111.400000 L137.500000 89.800000 L225.000000 62.800000 L400.000000 116.800000 L575.000000 181.600000 L750.000000 116.800000 ' />
    <circle cx='50.000000' cy='111.400000' r='3.000000' class='point color1' fm:label='10.000000: 34.000000' fm:series='unnamed', style=''></circle>
    <circle cx='137.500000' cy='89.800000' r='3.000000' class='point color1' fm:label='15.000000: 38.000000' fm:series='unnamed', style=''></circle>
    <circle cx='225.000000' cy='62.800000' r='3.000000' class='point color1' fm:label='20.000000: 43.000000' fm:series='unnamed', style=''></circle>
    <circle cx='400.000000' cy='116.800000' r='3.000000' class='point color1' fm:label='30.000000: 33.000000' fm:series='unnamed', style=''></circle>
    <circle cx='575.000000' cy='181.600000' r='3.000000' class='point color1' fm:label='40.000000: 21.000000' fm:series='unnamed', style=''></circle>
    <circle cx='750.000000' cy='116.800000' r='3.000000' class='point color1' fm:label='50.000000: 33.000000' fm:series='unnamed', style=''></circle>
    <path stroke-width='2.000000' class='area color1' style='' d='M50.000000 111.400000 L137.500000 89.800000 L225.000000 62.800000 L400.000000 116.800000 L575.000000 181.600000 L750.000000 116.800000 L750.000000 295.000000 L575.000000 295.000000 L400.000000 295.000000 L225.000000 295.000000 L137.500000 295.000000 L50.000000 295.000000 ' />
    <path stroke-width='2.000000' class='line color1' style='' d='M50.000000 111.400000 L137.500000 89.800000 L225.000000 62.800000 L400.000000 116.800000 L575.000000 181.600000 L750.000000 116.800000 ' />
  </g>
</svg>
Loading