bucketing

by azeq

HTML

<!DOCTYPE html>
<html lang="en">

  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>SquashQL</title>
  </head>

  <body>
    <div id="container" />
  </body>
  <script src="https://unpkg.com/@antv/s2/dist/s2.min.js"></script>

</html>

JavaScript

const squashQLResponse = {
  "cells": [{
      "_contributors_count_": 8
    },
    {
      "_contributors_count_": 3,
      "ageRange.label": "30 - 50"
    },
    {
      "_contributors_count_": 3,
      "ageRange.label": "< 30"
    },
    {
      "_contributors_count_": 2,
      "ageRange.label": "> 50"
    },
    {
      "_contributors_count_": 2,
      "salaryRange.label": "40k-50k"
    },
    {
      "_contributors_count_": 2,
      "ageRange.label": "< 30",
      "salaryRange.label": "40k-50k"
    },
    {
      "_contributors_count_": 1,
      "salaryRange.label": "50k-60k"
    },
    {
      "_contributors_count_": 1,
      "ageRange.label": "> 50",
      "salaryRange.label": "50k-60k"
    },
    {
      "_contributors_count_": 2,
      "salaryRange.label": "60k-70k"
    },
    {
      "_contributors_count_": 1,
      "ageRange.label": "30 - 50",
      "salaryRange.label": "60k-70k"
    },
    {
      "_contributors_count_": 1,
      "ageRange.label": "> 50",
      "salaryRange.label": "60k-70k"
    },
    {
      "_contributors_count_": 2,
      "salaryRange.label": "70k-80k"
    },
    {
      "_contributors_count_": 1,
      "ageRange.label": "30 - 50",
      "salaryRange.label": "70k-80k"
    },
    {
      "_contributors_count_": 1,
      "ageRange.label": "< 30",
      "salaryRange.label": "70k-80k"
    },
    {
      "_contributors_count_": 1,
      "salaryRange.label": "80k+"
    },
    {
      "_contributors_count_": 1,
      "ageRange.label": "30 - 50",
      "salaryRange.label": "80k+"
    }
  ],
  "rows": [
    "salaryRange.label"
  ],
  "columns": [
    "ageRange.label"
  ],
  "values": [
    "_contributors_count_"
  ]
}

function transformData(rawData) {
  return {
    fields: {
      rows: rawData["rows"],
      columns: rawData["columns"],
      values: rawData["values"],
      valueInCols: true,
    },
    data: rawData["cells"]
  }
}

const...