<!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> html, body { height: 100%; width: 100%; margin: 0; padding: 0; } form { text-align: center; } #myChart { min-height: 450px; } #myChart+div { /* center align feed controls */ text-align: center; } .feed-control { z-index: 1000; padding: 10px; background: #29b6f6; border-style: solid; border-width: 0 0 5px 0; border-color: #2196f3; border-radius: 4px; color: white; cursor: pointer; font-size: 16px; transition: .1s; margin-left: 15px; } .feed-control:active { border-width: 0 0 2px 0; transform: translateY(8px); opacity: 0.9; } .feed-control:focus { outline: none !important; /* make sure no css conflicts with this demo */ } </style> </head> <body> <form onSubmit="return window.updateRules(this);"> <label for="min-threshold">Min</label> <input type="number" id="min-threshold" value="55"> <label for="max-threshold">Max</label> <input type="number" id="max-threshold" value="85"> <label for="min-threshold-color">Min Color</label> <input type="color" id="min-threshold-color" value="#F44336"> <label for="max-threshold-color">Max Color</label> <input type="color" id="max-threshold-color" value="#2196F3"> <button type="submit">Submit Changes</button> </form> <div id='myChart'></div> <div> <button id="stop" class="feed-control">Stop</button> <button id="start" class="feed-control">Start</button> </div> <script> ZC.LICENSE = ["569d52cefae586f634c54f86dc99e6a9", "b55b025e438fa8a98e32482b5f768ff5"]; // value for feed var valuesArray = [50, 65, 115, 25, 35, 75, 85, 95, 45, 35, 75, 105, 65]; var globalMin = 55; var globalMax = 85; var globalMinColor = '#F44336'; var globalMaxColor = '#2196F3'; var myConfig = { type: 'bar', shapes: [{ type: 'rectangle', height: 10, width: 25, x: 75, y: 5, backgroundColor: '#C0C0C0', label: { text: 'Values Below Min', offsetX: 65 } }], plot: { rules: getColorData() }, tooltip: { visible: false }, crosshairX: { lineWidth: '100%', alpha: .3, plotLabel: { fontSize: 18, padding: 8, borderRadius: 5, backgroundColor: '#e0e0e0', text: '<span style="color:%color">%v°</span>' } }, plotarea: { margin: 'dynamic' }, scaleX: { label: { text: 'Insert Timestamp' } }, scaleY: { format: '%v°', label: { text: 'Degrees In Celcius' } }, refresh: { type: "feed", transport: "js", url: "feed()", interval: 400, resetTimeout: 1000 }, series: [{ values: [] }] } zingchart.render({ id: 'myChart', data: myConfig, height: '100%', width: '100%' }); /* * Feed function to mimick live data coming in */ window.feed = function(callback) { var tick = {}; tick.plot0 = valuesArray[Math.floor(Math.random() * (valuesArray.length - 1))]; callback(JSON.stringify(tick)); }; function getColorData(min, max, minColor, maxColor) { globalMin = typeof min !== 'undefined' ? min : globalMin; globalMax = typeof max !== 'undefined' ? max : globalMax; globalMinColor = typeof minColor !== 'undefined' ? minColor : globalMinColor; globalMaxColor = typeof maxColor !== 'undefined' ? maxColor : globalMaxColor; return [{ "rule": "%v < " + globalMin, "background-color": '#C0C0C0' }, { "rule": "%v >= " + globalMin + " && %v <= " + globalMax, "background-color": globalMinColor }, { "rule": "%v > " + globalMax, "background-color": globalMaxColor }] } /* * Global function at the window level due to example being used in * an iframe */ window.updateRules = function(form) { try { // grab form values var minValue = form.querySelector('#min-threshold').value; var maxValue = form.querySelector('#max-threshold').value; var minColor = form.querySelector('#min-threshold-color').value; var maxColor = form.querySelector('#max-threshold-color').value; // minimally update the chart by updating the rules only zingchart.exec('myChart', 'modify', { data: { plot: { rules: getColorData(minValue, maxValue, minColor, maxColor) } } }); } catch (e) { // make sure if error form doesn't submit } return false; // return false to prevent default behavior of form submission } /* * assign event listeners for buttons */ document.getElementById('start').addEventListener('click', startGraph); document.getElementById('stop').addEventListener('click', stopGraph); function startGraph() { zingchart.exec('myChart', 'startfeed'); } function stopGraph() { zingchart.exec('myChart', 'stopfeed'); } </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> <form onSubmit="return window.updateRules(this);"> <label for="min-threshold">Min</label> <input type="number" id="min-threshold" value="55"> <label for="max-threshold">Max</label> <input type="number" id="max-threshold" value="85"> <label for="min-threshold-color">Min Color</label> <input type="color" id="min-threshold-color" value="#F44336"> <label for="max-threshold-color">Max Color</label> <input type="color" id="max-threshold-color" value="#2196F3"> <button type="submit">Submit Changes</button> </form> <div id='myChart'></div> <div> <button id="stop" class="feed-control">Stop</button> <button id="start" class="feed-control">Start</button> </div> </body> </html>
html, body { height: 100%; width: 100%; margin: 0; padding: 0; } form { text-align: center; } #myChart { min-height: 450px; } #myChart+div { /* center align feed controls */ text-align: center; } .feed-control { z-index: 1000; padding: 10px; background: #29b6f6; border-style: solid; border-width: 0 0 5px 0; border-color: #2196f3; border-radius: 4px; color: white; cursor: pointer; font-size: 16px; transition: .1s; margin-left: 15px; } .feed-control:active { border-width: 0 0 2px 0; transform: translateY(8px); opacity: 0.9; } .feed-control:focus { outline: none !important; /* make sure no css conflicts with this demo */ }
// value for feed var valuesArray = [50, 65, 115, 25, 35, 75, 85, 95, 45, 35, 75, 105, 65]; var globalMin = 55; var globalMax = 85; var globalMinColor = '#F44336'; var globalMaxColor = '#2196F3'; var myConfig = { type: 'bar', shapes: [{ type: 'rectangle', height: 10, width: 25, x: 75, y: 5, backgroundColor: '#C0C0C0', label: { text: 'Values Below Min', offsetX: 65 } }], plot: { rules: getColorData() }, tooltip: { visible: false }, crosshairX: { lineWidth: '100%', alpha: .3, plotLabel: { fontSize: 18, padding: 8, borderRadius: 5, backgroundColor: '#e0e0e0', text: '<span style="color:%color">%v°</span>' } }, plotarea: { margin: 'dynamic' }, scaleX: { label: { text: 'Insert Timestamp' } }, scaleY: { format: '%v°', label: { text: 'Degrees In Celcius' } }, refresh: { type: "feed", transport: "js", url: "feed()", interval: 400, resetTimeout: 1000 }, series: [{ values: [] }] } zingchart.render({ id: 'myChart', data: myConfig, height: '100%', width: '100%' }); /* * Feed function to mimick live data coming in */ window.feed = function(callback) { var tick = {}; tick.plot0 = valuesArray[Math.floor(Math.random() * (valuesArray.length - 1))]; callback(JSON.stringify(tick)); }; function getColorData(min, max, minColor, maxColor) { globalMin = typeof min !== 'undefined' ? min : globalMin; globalMax = typeof max !== 'undefined' ? max : globalMax; globalMinColor = typeof minColor !== 'undefined' ? minColor : globalMinColor; globalMaxColor = typeof maxColor !== 'undefined' ? maxColor : globalMaxColor; return [{ "rule": "%v < " + globalMin, "background-color": '#C0C0C0' }, { "rule": "%v >= " + globalMin + " && %v <= " + globalMax, "background-color": globalMinColor }, { "rule": "%v > " + globalMax, "background-color": globalMaxColor }] } /* * Global function at the window level due to example being used in * an iframe */ window.updateRules = function(form) { try { // grab form values var minValue = form.querySelector('#min-threshold').value; var maxValue = form.querySelector('#max-threshold').value; var minColor = form.querySelector('#min-threshold-color').value; var maxColor = form.querySelector('#max-threshold-color').value; // minimally update the chart by updating the rules only zingchart.exec('myChart', 'modify', { data: { plot: { rules: getColorData(minValue, maxValue, minColor, maxColor) } } }); } catch (e) { // make sure if error form doesn't submit } return false; // return false to prevent default behavior of form submission } /* * assign event listeners for buttons */ document.getElementById('start').addEventListener('click', startGraph); document.getElementById('stop').addEventListener('click', stopGraph); function startGraph() { zingchart.exec('myChart', 'startfeed'); } function stopGraph() { zingchart.exec('myChart', 'stopfeed'); }