<!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');
}