• Edit
  • Download
  • <!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: {
              bottomState: {
                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: {
          bottomState: {
            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();