<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Growth rates</title>
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bulma@0.8.0/css/bulma.min.css">
    <link href="https://fonts.googleapis.com/css?family=Roboto:300,400,700&display=swap" rel="stylesheet">
    <script src="https://cdn.jsdelivr.net/npm/vega@5.27.0"></script>
    <script src="https://cdn.jsdelivr.net/npm/vega-lite@5.17.0"></script>
    <script src="https://cdn.jsdelivr.net/npm/vega-embed@6.24.0"></script>

    <style>
    #vis {
        width: 100%;
        margin: 1em;
    }
    </style>
  </head>
  <body>
  <section class="section">
    <div class="container">
      <h1 class="title">
        Growth rates
      </h1>
      <p class="subtitle">
        Each point denotes a single taxon in a single sample. Shown are the
        predicted growth rates only if growth was observed (growth rate larger
        than numerical tolerance of the solver).<br>
        Click a point to select points from only that sample. Click on an
        empty region of the plot to reset the selection.<br>
        Hover over each point to see its annotations. Use the "..." menu in the
        upper right hand side to export the plot into various formats.
      </p>
    </div>
    <!-- Container for the visualization -->
    <div class="container">
    <div id="vis"></div>
    <a href="#" class="button is-primary" onclick="download_data('growth_rates')">Download as CSV...</a>

    </div>
    <script>
      // Assign the specification to a local variable vlSpec.
      var vlSpec = {
        $schema: "https://vega.github.io/schema/vega-lite/v5.json",
        width: 300,
        height: {{18 * n_taxa}},
        data: {
            values: {{data | safe}}
        },
        selection: {
          pts: {type: "single", fields: ["sample_id"]}
        },
        transform: [{
          calculate: "random()-0.5",
          as: "jitter"
        }],
        mark: {
            type: "point",
            filled: true,
            size: 40,
            tooltip: {content: "data"}
        },
        encoding: {
          x: {
            field: "growth_rate",
            type: "quantitative",
            scale: {type: "log"},
            axis: {title: "growth rate [1/h]", grid: false}
          },
          y: {
            field: "taxon",
            type: "nominal",
            sort: {op: "median", field: "growth_rate", order: "descending"},
            axis: {title: null, grid: true}
          },
          yOffset: {
            field: "jitter",
            type: "quantitative",
            scale: {domain: [-1, 1]}
          },
          color: {
            condition: {
              selection: "pts",
              field: "taxon",
              type: "nominal",
              legend: null
            },
            value: "lightgrey"
          },
          opacity: {
            condition: {
                selection: "pts",
                value: 0.8
            },
            value: 0.2
          }
        }
      };

      // Embed the visualization in the container with id `vis`
      vegaEmbed("#vis", vlSpec, {renderer: "svg"}).then(function(r) {
        svg = document.querySelector("#vis svg");
        svg.setAttribute("width", "100%");
        svg.setAttribute("height", "auto");
      });

      {% include "blobify.js" %}
    </script>
  </section>
  </body>
</html>
