• Edit
  • Download
  • <!DOCTYPE html>
    <html>
    
    <head>
      <meta charset="utf-8">
      <title>ZingSoft Demo</title>
      <style>
        #table {
          margin-top: 20px;
          padding: 10px;
          background-color: #F7F7F7;
          visibility: hidden;
        }
    
        #table h3 {
          margin: 0px 10px;
          border-bottom: 1px solid black;
        }
    
        .row {
          margin: 5px 0px;
        }
    
        .column {
          background-color: #2196F3;
          border-radius: 4px;
          display: inline-block;
          font-size: 16px;
          color: #FFF;
          padding: 2px 8px;
          margin: 0px 5px;
          width: 28%;
          text-align: center;
        }
      </style>
    
      <script nonce="undefined" src="https://cdn.zingchart.com/zingchart.min.js"></script>
      <style></style>
    </head>
    
    <body>
      <div id='myChart'></div>
      <div id="table"></div>
      <script>
        ZC.LICENSE = ["569d52cefae586f634c54f86dc99e6a9", "b55b025e438fa8a98e32482b5f768ff5"];
        var myConfig = {
          type: "bubble",
          backgroundColor: '#F7F7F7',
          title: {
            text: 'Points Along A Sin Wave'
          },
          plot: {
            selectionMode: "none", // turn off normal selection
            marker: {
              size: 5,
              borderWidth: 0,
              alpha: .85,
            },
            selectedMarker: {
              size: 8,
              borderWidth: 1,
              borderColor: '#000',
            },
            hoverMarker: {
              size: 7
            },
            tooltip: {
              backgroundColor: '#FFF',
              fontColor: '#000',
              fontSize: 14,
              borderRadius: 4,
              borderWidth: 1,
              borderColor: '#000',
              text: '%t: %v',
              selectedState: {
                borderWidth: 2,
                fontSize: 16
              }
            }
          },
          plotarea: {
            margin: 'dynamic'
          },
          scaleX: {
            visible: false,
          },
          scaleY: {
            minValue: -2,
            maxValue: 2,
            step: 1,
            guide: {
              visible: false
            },
            lineColor: '#90CAF9',
            lineWidth: 2,
            refLine: {
              lineColor: '#90CAF9',
              lineWidth: 2
            },
            item: {
              fontColor: '#90CAF9',
              fontSize: 14
            },
            tick: {
              lineColor: '#90CAF9'
            }
          },
          // This styling will be pushed during the next build.
          // You can style the mask background, border and line color
          selectionTool: {
            mask: {
              borderWidth: 2,
              borderColor: 'red',
              backgroundColor: 'yellow',
              alpha: .5
            }
          },
          series: [{
              // Lets create some random values that look cool
              values: (function() {
                var aV = [];
                var len = 500;
                var x = 0;
                while (len--) {
                  x = (Math.random() * 10).toFixed(3) - 0;
                  aV.push([
                    x,
                    (Math.sin(x) - x * (len % 2 ? 0.1 : -0.1) * Math.random()).toFixed(3) - 0
                  ]);
                }
                return aV.sort();
              })(),
              backgroundColor: '#F48FB1',
              text: 'Sin Wave One',
              marker: {
                backgroundColor: '#F48FB1'
              }
            },
            {
              // Lets create some random values that look cool
              values: (function() {
                var aV = [];
                var len = 600;
                var x = 0;
                while (len--) {
                  x = (Math.random() * 10).toFixed(3) - 0;
                  aV.push([
                    x,
                    (Math.cos(x) - x * (len % 2 ? 0.1 : -0.1) * Math.random()).toFixed(3) - 0
                  ]);
                }
                return aV.sort();
              })(),
              backgroundColor: '#F48FB1',
              text: 'Sin Wave Two',
              marker: {
                backgroundColor: '#CE93D8'
              }
            }
          ]
        };
    
        /* Special callback function for this dragging module.
         * You can use this information to display selected data.
         * You can use this information to update the chart etc...
         */
        zingchart.bind(null, 'zingchart.plugins.selection-tool.selection', function(e) {
          var table = document.getElementById('table');
          var header = document.createElement('h3');
          var Column = function() {
            var column = document.createElement('div');
            column.classList.add('column');
            return column;
          }
    
          var Row = function() {
            var row = document.createElement('div');
            row.classList.add('row');
            return row;
          }
    
          // clear table and set header
          table.innerHTML = '';
          header.innerHTML = 'Selected State Logistics';
          table.appendChild(header);
    
          // define variables for creating grid
          var totalMinValue = 10000;
          var totalMaxValue = 0;
          var sumValues = 0;
          var row;
          var column1;
          var column2;
          var column3;
    
          // loop through plots and grab information
          for (var key in e.nodes) {
    
            // Get global min and max values from plots
            if (e.nodes[key].value < totalMinValue)
              totalMinValue = e.nodes[key].value;
    
            if (e.nodes[key].value > totalMaxValue)
              totalMaxValue = e.nodes[key].value;
    
            sumValues += e.nodes[key].value;
          }
    
          // append a new total value row
          row = Row();
          column1 = Column();
          column2 = Column();
          column3 = Column();
          column1.innerHTML = 'SumValues: ' + sumValues.toFixed(3);
          column2.innerHTML = 'MinValue: ' + totalMinValue.toFixed(3);
          column3.innerHTML = 'MaxValue: ' + totalMaxValue.toFixed(3);
          row.appendChild(column1);
          row.appendChild(column2);
          row.appendChild(column3);
          table.appendChild(row);
    
          // render the table visible
          table.style.visibility = 'visible';
        });
    
    
        /* Lets create a place to store our function. Typically it is not recomended
         * to modify the zingchart object. This is for advanced users. It is good
         * practice to keep all your charting stuff together, in this case your 
         * custom functions within the zingchart object! This will also help with
         * name collisions within the window object.
         *
         * BE WARNED: you can overwrite stuff in the zingchart object if you are
         * not careful. This will mess stuff up.
         */
        zingchart.insert_company_name_customFncs = {};
        zingchart.insert_company_name_customFncs.clearSelection = function(e) {
          zingchart.exec(e.id, 'clearselection');
        }
    
        // Load the selection-tool and render the chart once the module is loaded
        zingchart.loadModules('selection-tool', function() {
          zingchart.render({
            id: 'myChart',
            // defined data this way since context menu needs to be defined in root (above graphset)
            data: {
              gui: {
                contextMenu: {
                  customItems: [{
                    text: 'Clear Selection',
                    function: 'zingchart.insert_company_name_customFncs.clearSelection()',
                    id: 'clearSelection'
                  }]
                }
              },
              graphset: [myConfig]
            },
            height: 400,
            width: '100%',
            modules: 'selection-tool'
          });
        });
      </script>
    </body>
    
    </html>
    <!DOCTYPE html>
    <html>
    
    <head>
      <meta charset="utf-8">
      <title>ZingSoft Demo</title>
      <style>
        #table {
          margin-top: 20px;
          padding: 10px;
          background-color: #F7F7F7;
          visibility: hidden;
        }
    
        #table h3 {
          margin: 0px 10px;
          border-bottom: 1px solid black;
        }
    
        .row {
          margin: 5px 0px;
        }
    
        .column {
          background-color: #2196F3;
          border-radius: 4px;
          display: inline-block;
          font-size: 16px;
          color: #FFF;
          padding: 2px 8px;
          margin: 0px 5px;
          width: 28%;
          text-align: center;
        }
      </style>
    
      <script src="https://cdn.zingchart.com/zingchart.min.js"></script>
    </head>
    
    <body>
      <div id='myChart'></div>
      <div id="table"></div>
    </body>
    
    </html>
    
          
    var myConfig = {
      type: "bubble",
      backgroundColor: '#F7F7F7',
      title: {
        text: 'Points Along A Sin Wave'
      },
      plot: {
        selectionMode: "none", // turn off normal selection
        marker: {
          size: 5,
          borderWidth: 0,
          alpha: .85,
        },
        selectedMarker: {
          size: 8,
          borderWidth: 1,
          borderColor: '#000',
        },
        hoverMarker: {
          size: 7
        },
        tooltip: {
          backgroundColor: '#FFF',
          fontColor: '#000',
          fontSize: 14,
          borderRadius: 4,
          borderWidth: 1,
          borderColor: '#000',
          text: '%t: %v',
          selectedState: {
            borderWidth: 2,
            fontSize: 16
          }
        }
      },
      plotarea: {
        margin: 'dynamic'
      },
      scaleX: {
        visible: false,
      },
      scaleY: {
        minValue: -2,
        maxValue: 2,
        step: 1,
        guide: {
          visible: false
        },
        lineColor: '#90CAF9',
        lineWidth: 2,
        refLine: {
          lineColor: '#90CAF9',
          lineWidth: 2
        },
        item: {
          fontColor: '#90CAF9',
          fontSize: 14
        },
        tick: {
          lineColor: '#90CAF9'
        }
      },
      // This styling will be pushed during the next build.
      // You can style the mask background, border and line color
      selectionTool: {
        mask: {
          borderWidth: 2,
          borderColor: 'red',
          backgroundColor: 'yellow',
          alpha: .5
        }
      },
      series: [{
          // Lets create some random values that look cool
          values: (function() {
            var aV = [];
            var len = 500;
            var x = 0;
            while (len--) {
              x = (Math.random() * 10).toFixed(3) - 0;
              aV.push([
                x,
                (Math.sin(x) - x * (len % 2 ? 0.1 : -0.1) * Math.random()).toFixed(3) - 0
              ]);
            }
            return aV.sort();
          })(),
          backgroundColor: '#F48FB1',
          text: 'Sin Wave One',
          marker: {
            backgroundColor: '#F48FB1'
          }
        },
        {
          // Lets create some random values that look cool
          values: (function() {
            var aV = [];
            var len = 600;
            var x = 0;
            while (len--) {
              x = (Math.random() * 10).toFixed(3) - 0;
              aV.push([
                x,
                (Math.cos(x) - x * (len % 2 ? 0.1 : -0.1) * Math.random()).toFixed(3) - 0
              ]);
            }
            return aV.sort();
          })(),
          backgroundColor: '#F48FB1',
          text: 'Sin Wave Two',
          marker: {
            backgroundColor: '#CE93D8'
          }
        }
      ]
    };
    
    /* Special callback function for this dragging module.
     * You can use this information to display selected data.
     * You can use this information to update the chart etc...
     */
    zingchart.bind(null, 'zingchart.plugins.selection-tool.selection', function(e) {
      var table = document.getElementById('table');
      var header = document.createElement('h3');
      var Column = function() {
        var column = document.createElement('div');
        column.classList.add('column');
        return column;
      }
    
      var Row = function() {
        var row = document.createElement('div');
        row.classList.add('row');
        return row;
      }
    
      // clear table and set header
      table.innerHTML = '';
      header.innerHTML = 'Selected State Logistics';
      table.appendChild(header);
    
      // define variables for creating grid
      var totalMinValue = 10000;
      var totalMaxValue = 0;
      var sumValues = 0;
      var row;
      var column1;
      var column2;
      var column3;
    
      // loop through plots and grab information
      for (var key in e.nodes) {
    
        // Get global min and max values from plots
        if (e.nodes[key].value < totalMinValue)
          totalMinValue = e.nodes[key].value;
    
        if (e.nodes[key].value > totalMaxValue)
          totalMaxValue = e.nodes[key].value;
    
        sumValues += e.nodes[key].value;
      }
    
      // append a new total value row
      row = Row();
      column1 = Column();
      column2 = Column();
      column3 = Column();
      column1.innerHTML = 'SumValues: ' + sumValues.toFixed(3);
      column2.innerHTML = 'MinValue: ' + totalMinValue.toFixed(3);
      column3.innerHTML = 'MaxValue: ' + totalMaxValue.toFixed(3);
      row.appendChild(column1);
      row.appendChild(column2);
      row.appendChild(column3);
      table.appendChild(row);
    
      // render the table visible
      table.style.visibility = 'visible';
    });
    
    
    /* Lets create a place to store our function. Typically it is not recomended
     * to modify the zingchart object. This is for advanced users. It is good
     * practice to keep all your charting stuff together, in this case your 
     * custom functions within the zingchart object! This will also help with
     * name collisions within the window object.
     *
     * BE WARNED: you can overwrite stuff in the zingchart object if you are
     * not careful. This will mess stuff up.
     */
    zingchart.insert_company_name_customFncs = {};
    zingchart.insert_company_name_customFncs.clearSelection = function(e) {
      zingchart.exec(e.id, 'clearselection');
    }
    
    // Load the selection-tool and render the chart once the module is loaded
    zingchart.loadModules('selection-tool', function() {
      zingchart.render({
        id: 'myChart',
        // defined data this way since context menu needs to be defined in root (above graphset)
        data: {
          gui: {
            contextMenu: {
              customItems: [{
                text: 'Clear Selection',
                function: 'zingchart.insert_company_name_customFncs.clearSelection()',
                id: 'clearSelection'
              }]
            }
          },
          graphset: [myConfig]
        },
        height: 400,
        width: '100%',
        modules: 'selection-tool'
      });
    });