<!doctype html>
<html>
<head>
  <meta charset="utf-8">
  <title>ZingSoft Demo</title>
  <script nonce="undefined" src="https://cdn.zingchart.com/zingchart.min.js"></script>
  <style>
    .bubble {
      padding: 1rem;
      display: flex;
      flex-direction: column;
      align-items: center;
      background: #fff;
      box-sizing: border-box;
    }
    .control-bar {
      margin: 0 auto;
      padding: 0 0 2rem;
      display: flex;
      align-items: center;
      justify-content: center;
      opacity: 0;
      transition: opacity .3s;
    }
    .control-bar.loaded {
      display: flex !important;
      opacity: 1;
    }
    .control-bar>div {
      display: flex;
      align-items: center;
    }
    .control-bar>*+* {
      margin-left: 10px;
    }
    .control-bar span {
      margin-left: 7px;
      display: inline-block;
    }
    .control-bar .sep {
      padding: 0 10px;
      color: #ebebeb;
    }
    .control-bar select {
      min-width: 45px;
      height: 40px;
      background: #fff;
      border: 1px solid #ebebeb;
      border-radius: 4px;
    }
    .control-bar button {
      padding: 0 10px;
      height: 40px;
      cursor: pointer;
      color: #fff;
      background: #074361;
      border: 1px solid #074361;
      border-radius: 4px;
    }
    .zc-chart {
      margin: 0 auto;
    }
    .zc-ref {
      display: none;
    }
  </style>
</head>
<body class="zc-body">
  <div class="bubble">
    <div data-jsref="control-bar" class="control-bar" hidden>
      <span>View BubbleLegend component in</span>
      <select data-jsref="layout">
        <option value="vertical">vertical</option>
        <option value="horizontal">horizontal</option>
      </select>
      <span>layout</span>
      <span class="sep">|</span>
      <button data-jsref="renderBtn">Render Chart</button>
    </div>
    <div id="myChart">
      <a href="https://www.zingchart.com/" rel="noopener" class="zc-ref">Powered by ZingChart</a>
    </div>
  </div>
  <script>
    ZC.LICENSE = ["569d52cefae586f634c54f86dc99e6a9", "b55b025e438fa8a98e32482b5f768ff5"]; // INIT
    // -----------------------------
    // Define Module Location
    zingchart.MODULESDIR = 'https://cdn.zingchart.com/modules/';
    // Load module(s)
    zingchart.loadModules('bubble-legend');
    // DEFINE CHART LOCATIONS (IDS)
    // -----------------------------
    // Main chart render location(s)
    let chartId = 'myChart';
    // DOM ELEMENTS
    // -----------------------------
    let controlBar = document.querySelector('[data-jsref="control-bar"]');
    let renderBtn = document.querySelector('[data-jsref="renderBtn"]');
    let layoutEl = document.querySelector('[data-jsref="layout"]');
    // CHART EVENTS
    // -----------------------------
    function load(p) {
      controlBar.classList.add('loaded');
    }
    // RENDER CHART
    // -----------------------------
    function renderChart() {
      // VARS
      // -----------------------------
      let layout = layoutEl.value;
      let min = ZC._r_(1, 100);
      let max = ZC._r_(100, 10000);
      let factor1 = ZC._r_(-10, 4);
      let factor2 = ZC._r_(-8, 6);
      let factor3 = ZC._r_(-6, 8);
      let factor4 = ZC._r_(-4, 10);
      let data1 = [],
        data2 = [],
        data3 = [],
        data4 = [];
      // ADD DATA
      // -----------------------------
      for (let i = 0; i < 9; i++) {
        let rv1 = ZC._r_(min, max) * Math.pow(10, factor1);
        let rv2 = ZC._r_(min, max) * Math.pow(10, factor2);
        let rv3 = ZC._r_(min, max) * Math.pow(10, factor3);
        let rv4 = ZC._r_(min, max) * Math.pow(10, factor4);
        data1.push([ZC._r_(0, 99), ZC._r_(0, 99), rv1]);
        data2.push([ZC._r_(0, 99), ZC._r_(0, 99), rv2]);
        data3.push([ZC._r_(0, 99), ZC._r_(0, 99), rv3]);
        data4.push([ZC._r_(0, 99), ZC._r_(0, 99), rv4]);
      }
      // CHART CONFIG
      // -----------------------------
      let chartConfig = {
        type: 'bubble',
        title: {
          text: 'BubbleLegend Component (' + layout + ' layout)',
          align: 'left',
          fontSize: '11px',
        },
        bubbleLegend: {
          topState: {
            backgroundColor: 'red',
            offsetX: 10,
            offsetY: 10,
          },
          connector: {},
          item: {},
          layout: layout === 'horizontal' ? 'h' : 'v',
          marker: {},
        },
        plot: {
          decimalsSeparator: '.',
          hoverMarker: {
            visible: false,
          },
          minSize: 5,
          scaling: 'area',
          thousandsSeparator: ',',
        },
        plotarea: {
          margin: layout === 'horizontal' ? '30 30 140 30' : '30 140 30 30',
        },
        scaleX: {
          backgroundColor: '#55154D',
          height: '200px',
          width: '200px',
          x: '30px',
          y: '30px',
        },
        scaleY: {
          height: '200px',
          width: '200px',
          x: '30px',
          y: '30px',
        },
        scaleXN: {
          alpha: 0.4,
          blended: true,
          item: {
            fontSize: '10px',
          },
          maxItems: 10,
          offset: '25px',
          placement: 'default',
          values: '0:100:10',
        },
        scaleYN: {
          alpha: 0.4,
          blended: true,
          item: {
            fontSize: 10,
          },
          maxItems: 10,
          offset: '25px',
          placement: 'default',
          values: '0:100:10',
        },
        scaleX2: {
          backgroundColor: '#014358',
          height: '200px',
          width: '200px',
          x: '260px',
          y: '30px',
        },
        scaleY2: {
          height: '200px',
          width: '200px',
          x: '260px',
          y: '30px',
        },
        scaleX3: {
          backgroundColor: '#264F14',
          height: '200px',
          width: '200px',
          x: '30px',
          y: '260px',
        },
        scaleY3: {
          height: '200px',
          width: '200px',
          x: '30px',
          y: '260px',
        },
        scaleX4: {
          backgroundColor: '#704F00',
          height: '200px',
          width: '200px',
          x: '260px',
          y: '260px',
        },
        scaleY4: {
          height: '200px',
          width: '200px',
          x: '260px',
          y: '260px',
        },
        series: [{
            values: data1,
            decimals: factor1 < 0 ? -factor1 : 0,
            marker: {
              fillType: 'radial',
              backgroundColor: '#55154D #21081d',
            },
            sizingGroup: 1,
          },
          {
            values: data2,
            decimals: factor2 < 0 ? -factor2 : 0,
            marker: {
              fillType: 'radial',
              backgroundColor: '#014358 #001b23',
            },
            scales: 'scale-x-2,scale-y-2',
            sizingGroup: 2,
          },
          {
            values: data3,
            decimals: factor3 < 0 ? -factor3 : 0,
            marker: {
              fillType: 'radial',
              backgroundColor: '#264F14 #19330d',
            },
            scales: 'scale-x-3,scale-y-3',
            sizingGroup: 3,
          },
          {
            values: data4,
            decimals: factor4 < 0 ? -factor4 : 0,
            marker: {
              fillType: 'radial',
              backgroundColor: '#704F00 #3a2900',
            },
            scales: 'scale-x-4,scale-y-4',
            sizingGroup: 4,
          },
        ],
      };
      // RENDER CHART
      // -----------------------------
      zingchart.render({
        id: chartId,
        width: layout === 'horizontal' ? '500px' : '600px',
        height: layout === 'horizontal' ? '600px' : '500px',
        output: 'svg',
        data: chartConfig,
        modules: 'bubble-legend',
        events: {
          load: load,
        },
      });
    }
    // DOM EVENTS
    // -----------------------------
    renderBtn.addEventListener('click', renderChart);
    // RENDER CHART ON LOAD
    // -----------------------------
    renderChart();
  </script>
</body>
</html>
       
      
        
        <!doctype html>
<html>
<head>
  <meta charset="utf-8">
  <title>ZingSoft Demo</title>
  <script src="https://cdn.zingchart.com/zingchart.min.js"></script>
</head>
<body class="zc-body">
  <div class="bubble">
    <div data-jsref="control-bar" class="control-bar" hidden>
      <span>View BubbleLegend component in</span>
      <select data-jsref="layout">
        <option value="vertical">vertical</option>
        <option value="horizontal">horizontal</option>
      </select>
      <span>layout</span>
      <span class="sep">|</span>
      <button data-jsref="renderBtn">Render Chart</button>
    </div>
    <div id="myChart">
      <a href="https://www.zingchart.com/" rel="noopener" class="zc-ref">Powered by ZingChart</a>
    </div>
  </div>
</body>
</html>
       
      
        .bubble {
  padding: 1rem;
  display: flex;
  flex-direction: column;
  align-items: center;
  background: #fff;
  box-sizing: border-box;
}
.control-bar {
  margin: 0 auto;
  padding: 0 0 2rem;
  display: flex;
  align-items: center;
  justify-content: center;
  opacity: 0;
  transition: opacity .3s;
}
.control-bar.loaded {
  display: flex !important;
  opacity: 1;
}
.control-bar>div {
  display: flex;
  align-items: center;
}
.control-bar>*+* {
  margin-left: 10px;
}
.control-bar span {
  margin-left: 7px;
  display: inline-block;
}
.control-bar .sep {
  padding: 0 10px;
  color: #ebebeb;
}
.control-bar select {
  min-width: 45px;
  height: 40px;
  background: #fff;
  border: 1px solid #ebebeb;
  border-radius: 4px;
}
.control-bar button {
  padding: 0 10px;
  height: 40px;
  cursor: pointer;
  color: #fff;
  background: #074361;
  border: 1px solid #074361;
  border-radius: 4px;
}
.zc-chart {
  margin: 0 auto;
}
.zc-ref {
  display: none;
}
       
      
        // INIT
// -----------------------------
// Define Module Location
zingchart.MODULESDIR = 'https://cdn.zingchart.com/modules/';
// Load module(s)
zingchart.loadModules('bubble-legend');
// DEFINE CHART LOCATIONS (IDS)
// -----------------------------
// Main chart render location(s)
let chartId = 'myChart';
// DOM ELEMENTS
// -----------------------------
let controlBar = document.querySelector('[data-jsref="control-bar"]');
let renderBtn = document.querySelector('[data-jsref="renderBtn"]');
let layoutEl = document.querySelector('[data-jsref="layout"]');
// CHART EVENTS
// -----------------------------
function load(p) {
  controlBar.classList.add('loaded');
}
// RENDER CHART
// -----------------------------
function renderChart() {
  // VARS
  // -----------------------------
  let layout = layoutEl.value;
  let min = ZC._r_(1, 100);
  let max = ZC._r_(100, 10000);
  let factor1 = ZC._r_(-10, 4);
  let factor2 = ZC._r_(-8, 6);
  let factor3 = ZC._r_(-6, 8);
  let factor4 = ZC._r_(-4, 10);
  let data1 = [],
    data2 = [],
    data3 = [],
    data4 = [];
  // ADD DATA
  // -----------------------------
  for (let i = 0; i < 9; i++) {
    let rv1 = ZC._r_(min, max) * Math.pow(10, factor1);
    let rv2 = ZC._r_(min, max) * Math.pow(10, factor2);
    let rv3 = ZC._r_(min, max) * Math.pow(10, factor3);
    let rv4 = ZC._r_(min, max) * Math.pow(10, factor4);
    data1.push([ZC._r_(0, 99), ZC._r_(0, 99), rv1]);
    data2.push([ZC._r_(0, 99), ZC._r_(0, 99), rv2]);
    data3.push([ZC._r_(0, 99), ZC._r_(0, 99), rv3]);
    data4.push([ZC._r_(0, 99), ZC._r_(0, 99), rv4]);
  }
  // CHART CONFIG
  // -----------------------------
  let chartConfig = {
    type: 'bubble',
    title: {
      text: 'BubbleLegend Component (' + layout + ' layout)',
      align: 'left',
      fontSize: '11px',
    },
    bubbleLegend: {
      topState: {
        backgroundColor: 'red',
        offsetX: 10,
        offsetY: 10,
      },
      connector: {},
      item: {},
      layout: layout === 'horizontal' ? 'h' : 'v',
      marker: {},
    },
    plot: {
      decimalsSeparator: '.',
      hoverMarker: {
        visible: false,
      },
      minSize: 5,
      scaling: 'area',
      thousandsSeparator: ',',
    },
    plotarea: {
      margin: layout === 'horizontal' ? '30 30 140 30' : '30 140 30 30',
    },
    scaleX: {
      backgroundColor: '#55154D',
      height: '200px',
      width: '200px',
      x: '30px',
      y: '30px',
    },
    scaleY: {
      height: '200px',
      width: '200px',
      x: '30px',
      y: '30px',
    },
    scaleXN: {
      alpha: 0.4,
      blended: true,
      item: {
        fontSize: '10px',
      },
      maxItems: 10,
      offset: '25px',
      placement: 'default',
      values: '0:100:10',
    },
    scaleYN: {
      alpha: 0.4,
      blended: true,
      item: {
        fontSize: 10,
      },
      maxItems: 10,
      offset: '25px',
      placement: 'default',
      values: '0:100:10',
    },
    scaleX2: {
      backgroundColor: '#014358',
      height: '200px',
      width: '200px',
      x: '260px',
      y: '30px',
    },
    scaleY2: {
      height: '200px',
      width: '200px',
      x: '260px',
      y: '30px',
    },
    scaleX3: {
      backgroundColor: '#264F14',
      height: '200px',
      width: '200px',
      x: '30px',
      y: '260px',
    },
    scaleY3: {
      height: '200px',
      width: '200px',
      x: '30px',
      y: '260px',
    },
    scaleX4: {
      backgroundColor: '#704F00',
      height: '200px',
      width: '200px',
      x: '260px',
      y: '260px',
    },
    scaleY4: {
      height: '200px',
      width: '200px',
      x: '260px',
      y: '260px',
    },
    series: [{
        values: data1,
        decimals: factor1 < 0 ? -factor1 : 0,
        marker: {
          fillType: 'radial',
          backgroundColor: '#55154D #21081d',
        },
        sizingGroup: 1,
      },
      {
        values: data2,
        decimals: factor2 < 0 ? -factor2 : 0,
        marker: {
          fillType: 'radial',
          backgroundColor: '#014358 #001b23',
        },
        scales: 'scale-x-2,scale-y-2',
        sizingGroup: 2,
      },
      {
        values: data3,
        decimals: factor3 < 0 ? -factor3 : 0,
        marker: {
          fillType: 'radial',
          backgroundColor: '#264F14 #19330d',
        },
        scales: 'scale-x-3,scale-y-3',
        sizingGroup: 3,
      },
      {
        values: data4,
        decimals: factor4 < 0 ? -factor4 : 0,
        marker: {
          fillType: 'radial',
          backgroundColor: '#704F00 #3a2900',
        },
        scales: 'scale-x-4,scale-y-4',
        sizingGroup: 4,
      },
    ],
  };
  // RENDER CHART
  // -----------------------------
  zingchart.render({
    id: chartId,
    width: layout === 'horizontal' ? '500px' : '600px',
    height: layout === 'horizontal' ? '600px' : '500px',
    output: 'svg',
    data: chartConfig,
    modules: 'bubble-legend',
    events: {
      load: load,
    },
  });
}
// DOM EVENTS
// -----------------------------
renderBtn.addEventListener('click', renderChart);
// RENDER CHART ON LOAD
// -----------------------------
renderChart();