Compare commits
2 Commits
f85346aea9
...
73157520ab
Author | SHA1 | Date | |
---|---|---|---|
73157520ab | |||
f862e4b8da |
@ -46,6 +46,20 @@ class Dashboard extends Component {
|
|||||||
|
|
||||||
static contextType = DevicesContext;
|
static contextType = DevicesContext;
|
||||||
|
|
||||||
|
componentDidMount() {
|
||||||
|
this.context.addHandler(C.update_all_method_name, this.updateSeries);
|
||||||
|
this.context.addHandler(C.update_method_name, this.updateSeries);
|
||||||
|
this.updateSeries();
|
||||||
|
window.setInterval(() => {
|
||||||
|
this.updateDynamic();
|
||||||
|
}, 2000);
|
||||||
|
}
|
||||||
|
|
||||||
|
componentWillUnmount() {
|
||||||
|
this.context.removeHandler(C.update_all_method_name, this.updateSeries);
|
||||||
|
this.context.removeHandler(C.update_method_name, this.updateSeries);
|
||||||
|
}
|
||||||
|
|
||||||
getItemsWithStatus(iterate, status) {
|
getItemsWithStatus(iterate, status) {
|
||||||
const items = [];
|
const items = [];
|
||||||
|
|
||||||
@ -91,65 +105,73 @@ class Dashboard extends Component {
|
|||||||
updateSeries() {
|
updateSeries() {
|
||||||
this.setState({
|
this.setState({
|
||||||
deviceSeries: this.getDeviceSeries(),
|
deviceSeries: this.getDeviceSeries(),
|
||||||
sensorSeries: this.getSensorSeries(),
|
sensorSeries: this.getSensorSeries()
|
||||||
heatmapSecondsSeries: this.getHeatmapSecondsSeries(),
|
|
||||||
heatmapMinutesSeries: this.getHeatmapMinutesSeries(),
|
|
||||||
barSeries: this.getBarSeries(),
|
|
||||||
barCategories: this.getBarCategories(),
|
|
||||||
lineSeries: this.getLineSeries(),
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
this.updateDynamic();
|
||||||
}
|
}
|
||||||
|
|
||||||
updateDynamic() {
|
updateDynamic() {
|
||||||
this.setState({
|
const secondAgo = new Date( Date.now() - 1000 * 1 );
|
||||||
heatmapSecondsSeries: this.getHeatmapSecondsSeries(),
|
|
||||||
heatmapMinutesSeries: this.getHeatmapMinutesSeries(),
|
|
||||||
barSeries: this.getBarSeries(),
|
|
||||||
barCategories: this.getBarCategories(),
|
|
||||||
lineSeries: this.getLineSeries(),
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
componentDidMount() {
|
|
||||||
this.context.addHandler(C.update_all_method_name, this.updateSeries);
|
|
||||||
this.context.addHandler(C.update_method_name, this.updateSeries);
|
|
||||||
this.updateSeries();
|
|
||||||
window.setInterval(() => {
|
|
||||||
this.updateDynamic();
|
|
||||||
}, 1000);
|
|
||||||
}
|
|
||||||
|
|
||||||
componentWillUnmount() {
|
|
||||||
this.context.removeHandler(C.update_all_method_name, this.updateSeries);
|
|
||||||
this.context.removeHandler(C.update_method_name, this.updateSeries);
|
|
||||||
}
|
|
||||||
|
|
||||||
getHeatmapSecondsSeries() {
|
|
||||||
const minuteAgo = new Date( Date.now() - 1000 * 60 );
|
const minuteAgo = new Date( Date.now() - 1000 * 60 );
|
||||||
|
const hourAgo = new Date( Date.now() - 1000 * 60 * 60 );
|
||||||
|
|
||||||
const devicePoints = {};
|
const minuteDevicePoints = {};
|
||||||
|
const hourDevicePoints = {};
|
||||||
|
const barDevicePoints = {};
|
||||||
|
const linePoints = {};
|
||||||
|
|
||||||
for (var d of this.context.devices) {
|
for (var d of this.context.devices) {
|
||||||
devicePoints[d.id] = Array(60).fill(0);
|
minuteDevicePoints[d.id] = Array(60).fill(0);
|
||||||
|
hourDevicePoints[d.id] = Array(60).fill(0);
|
||||||
|
barDevicePoints[d.id] = Array(3).fill(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (var p of this.context.heatmapPoints) {
|
for (var p of this.context.heatmapPoints) {
|
||||||
if (p.date > minuteAgo) {
|
if (p.date > minuteAgo) {
|
||||||
var seconds = Math.floor((p.date.getTime() - minuteAgo.getTime()) / 1000);
|
var seconds = Math.floor((p.date.getTime() - minuteAgo.getTime()) / 1000);
|
||||||
var oldProb = devicePoints[p.deviceId][seconds];
|
var oldProb = minuteDevicePoints[p.deviceId][seconds];
|
||||||
if (oldProb < p.prob) {
|
if (oldProb < p.prob) {
|
||||||
devicePoints[p.deviceId][seconds] = p.prob;
|
minuteDevicePoints[p.deviceId][seconds] = p.prob;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (p.date > hourAgo) {
|
||||||
|
var minutes = Math.floor((p.date.getTime() - hourAgo.getTime()) / (1000 * 60));
|
||||||
|
var oldProb = hourDevicePoints[p.deviceId][minutes];
|
||||||
|
if (oldProb < p.prob) {
|
||||||
|
hourDevicePoints[p.deviceId][minutes] = p.prob;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (p.prob > 0.5 && p.prob <= 0.7) {
|
||||||
|
barDevicePoints[p.deviceId][0] += 1;
|
||||||
|
}
|
||||||
|
if (p.prob > 0.7 && p.prob <= 0.9) {
|
||||||
|
barDevicePoints[p.deviceId][1] += 1;
|
||||||
|
}
|
||||||
|
if (p.prob > 0.9) {
|
||||||
|
barDevicePoints[p.deviceId][2] += 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (p.date < secondAgo) {
|
||||||
|
var shortDate = p.date.toUTCString();
|
||||||
|
var point = linePoints[shortDate];
|
||||||
|
if (point === undefined) {
|
||||||
|
linePoints[shortDate] = 1;
|
||||||
|
} else {
|
||||||
|
linePoints[shortDate] += 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const series = [];
|
const minuteHeatmapSeries = [];
|
||||||
|
|
||||||
var i = 0;
|
var i = 0;
|
||||||
for (var p in devicePoints) {
|
for (var p in minuteDevicePoints) {
|
||||||
series.push({
|
minuteHeatmapSeries.push({
|
||||||
name: "Device " + i,
|
name: "Device " + i,
|
||||||
data: devicePoints[p].map((value, index) => ({
|
data: minuteDevicePoints[p].map((value, index) => ({
|
||||||
x: new Date( Date.now() - (60 - index) * 1000 ).toLocaleTimeString('hu-HU'),
|
x: new Date( Date.now() - (60 - index) * 1000 ).toLocaleTimeString('hu-HU'),
|
||||||
y: value
|
y: value
|
||||||
})),
|
})),
|
||||||
@ -157,35 +179,13 @@ class Dashboard extends Component {
|
|||||||
i++;
|
i++;
|
||||||
};
|
};
|
||||||
|
|
||||||
return series;
|
const hourHeatmapSeries = [];
|
||||||
}
|
|
||||||
|
|
||||||
getHeatmapMinutesSeries() {
|
|
||||||
const hourAgo = new Date( Date.now() - 1000 * 60 * 60 );
|
|
||||||
|
|
||||||
const devicePoints = {};
|
|
||||||
|
|
||||||
for (var d of this.context.devices) {
|
|
||||||
devicePoints[d.id] = Array(60).fill(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
for (var p of this.context.heatmapPoints) {
|
|
||||||
if (p.date > hourAgo) {
|
|
||||||
var minutes = Math.floor((p.date.getTime() - hourAgo.getTime()) / (1000 * 60));
|
|
||||||
var oldProb = devicePoints[p.deviceId][minutes];
|
|
||||||
if (oldProb < p.prob) {
|
|
||||||
devicePoints[p.deviceId][minutes] = p.prob;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const series = [];
|
|
||||||
|
|
||||||
var i = 0;
|
var i = 0;
|
||||||
for (var p in devicePoints) {
|
for (var p in hourDevicePoints) {
|
||||||
series.push({
|
hourHeatmapSeries.push({
|
||||||
name: "Device " + i,
|
name: "Device " + i,
|
||||||
data: devicePoints[p].map((value, index) => ({
|
data: hourDevicePoints[p].map((value, index) => ({
|
||||||
x: new Date( Date.now() - (60 - index) * 1000 * 60 ).toLocaleTimeString('hu-HU').substring(0, 5),
|
x: new Date( Date.now() - (60 - index) * 1000 * 60 ).toLocaleTimeString('hu-HU').substring(0, 5),
|
||||||
y: value
|
y: value
|
||||||
})),
|
})),
|
||||||
@ -193,88 +193,56 @@ class Dashboard extends Component {
|
|||||||
i++;
|
i++;
|
||||||
};
|
};
|
||||||
|
|
||||||
return series;
|
const barSeries = [];
|
||||||
}
|
|
||||||
|
|
||||||
getBarSeries() {
|
|
||||||
const devicePoints = {};
|
|
||||||
for (var d of this.context.devices) {
|
|
||||||
devicePoints[d.id] = Array(3).fill(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
for (var p of this.context.heatmapPoints) {
|
|
||||||
if (p.prob > 0.5 && p.prob <= 0.7) {
|
|
||||||
devicePoints[p.deviceId][0] += 1;
|
|
||||||
}
|
|
||||||
if (p.prob > 0.7 && p.prob <= 0.9) {
|
|
||||||
devicePoints[p.deviceId][1] += 1;
|
|
||||||
}
|
|
||||||
if (p.prob > 0.9) {
|
|
||||||
devicePoints[p.deviceId][2] += 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const series = [];
|
|
||||||
const getCount = column => {
|
const getCount = column => {
|
||||||
var counts = [];
|
var counts = [];
|
||||||
|
|
||||||
for (var p in devicePoints) {
|
for (var p in barDevicePoints) {
|
||||||
counts.unshift(devicePoints[p][column]);
|
counts.unshift(barDevicePoints[p][column]);
|
||||||
}
|
}
|
||||||
|
|
||||||
return counts;
|
return counts;
|
||||||
};
|
};
|
||||||
|
|
||||||
series.push({
|
barSeries.push({
|
||||||
name: "Prob > 0.5",
|
name: "Prob > 0.5",
|
||||||
data: getCount(0),
|
data: getCount(0),
|
||||||
});
|
});
|
||||||
series.push({
|
barSeries.push({
|
||||||
name: "Prob > 0.7",
|
name: "Prob > 0.7",
|
||||||
data: getCount(1),
|
data: getCount(1),
|
||||||
});
|
});
|
||||||
series.push({
|
barSeries.push({
|
||||||
name: "Prob > 0.9",
|
name: "Prob > 0.9",
|
||||||
data: getCount(2),
|
data: getCount(2),
|
||||||
});
|
});
|
||||||
|
|
||||||
return series;
|
const lineSeries = [{name: "message/sec", data: []}];
|
||||||
}
|
for (var m in linePoints) {
|
||||||
|
lineSeries[0].data.push({
|
||||||
getBarCategories() {
|
|
||||||
const categories = [];
|
|
||||||
|
|
||||||
for (var i = this.context.devices.length - 1; i >= 0; i--) {
|
|
||||||
categories.push("Device " + i)
|
|
||||||
}
|
|
||||||
|
|
||||||
return categories;
|
|
||||||
}
|
|
||||||
|
|
||||||
getLineSeries() {
|
|
||||||
const xSecondsAgo = new Date( Date.now() - 1000 * 2 );
|
|
||||||
const aSecondAgo = new Date( Date.now() - 1000 * 1);
|
|
||||||
const messages = {};
|
|
||||||
|
|
||||||
var counter = 0;
|
|
||||||
for (var p of this.context.heatmapPoints) {
|
|
||||||
var shortDate = p.date.toUTCString();
|
|
||||||
var message = messages[shortDate];
|
|
||||||
if (message === undefined) {
|
|
||||||
messages[shortDate] = 1;
|
|
||||||
} else {
|
|
||||||
messages[shortDate] += 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const series = [{data: []}];
|
|
||||||
for (var m in messages) {
|
|
||||||
series[0].data.push({
|
|
||||||
x: new Date(m).getTime(),
|
x: new Date(m).getTime(),
|
||||||
y: messages[m],
|
y: linePoints[m],
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
return series;
|
|
||||||
|
const getBarCategories = () => {
|
||||||
|
const categories = [];
|
||||||
|
|
||||||
|
for (var i = this.context.devices.length - 1; i >= 0; i--) {
|
||||||
|
categories.push("Device " + i)
|
||||||
|
}
|
||||||
|
|
||||||
|
return categories;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.setState({
|
||||||
|
heatmapSecondsSeries: minuteHeatmapSeries,
|
||||||
|
heatmapMinutesSeries: hourHeatmapSeries,
|
||||||
|
barSeries: barSeries,
|
||||||
|
barCategories: getBarCategories(),
|
||||||
|
lineSeries: lineSeries,
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
|
@ -16,18 +16,6 @@ export class BarChart extends Component {
|
|||||||
this.setState({options: {
|
this.setState({options: {
|
||||||
chart: {
|
chart: {
|
||||||
stacked: true,
|
stacked: true,
|
||||||
animations: {
|
|
||||||
enabled: false,
|
|
||||||
easing: 'linear',
|
|
||||||
speed: 1000,
|
|
||||||
animateGradually: {
|
|
||||||
enabled: false,
|
|
||||||
},
|
|
||||||
dynamicAnimation: {
|
|
||||||
enabled: true,
|
|
||||||
speed: 500
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
plotOptions: {
|
plotOptions: {
|
||||||
bar: {
|
bar: {
|
||||||
|
@ -9,20 +9,6 @@ export class DonutChart extends Component {
|
|||||||
|
|
||||||
this.state = {
|
this.state = {
|
||||||
options: {
|
options: {
|
||||||
chart: {
|
|
||||||
animations: {
|
|
||||||
enabled: false,
|
|
||||||
easing: 'linear',
|
|
||||||
speed: 1000,
|
|
||||||
animateGradually: {
|
|
||||||
enabled: false,
|
|
||||||
},
|
|
||||||
dynamicAnimation: {
|
|
||||||
enabled: true,
|
|
||||||
speed: 500
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
legend: {
|
legend: {
|
||||||
fontSize: '18px',
|
fontSize: '18px',
|
||||||
},
|
},
|
||||||
|
@ -8,20 +8,6 @@ export class HeatmapChart extends Component {
|
|||||||
|
|
||||||
this.state = {
|
this.state = {
|
||||||
options: {
|
options: {
|
||||||
chart: {
|
|
||||||
animations: {
|
|
||||||
enabled: false,
|
|
||||||
easing: 'linear',
|
|
||||||
speed: 1000,
|
|
||||||
animateGradually: {
|
|
||||||
enabled: false,
|
|
||||||
},
|
|
||||||
dynamicAnimation: {
|
|
||||||
enabled: true,
|
|
||||||
speed: 500
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
dataLabels: {
|
dataLabels: {
|
||||||
enabled: false
|
enabled: false
|
||||||
},
|
},
|
||||||
|
@ -10,15 +10,15 @@ export class LineChart extends Component {
|
|||||||
options: {
|
options: {
|
||||||
chart: {
|
chart: {
|
||||||
animations: {
|
animations: {
|
||||||
enabled: false,
|
enabled: true,
|
||||||
easing: 'linear',
|
easing: 'linear',
|
||||||
speed: 1000,
|
speed: 1000,
|
||||||
animateGradually: {
|
animateGradually: {
|
||||||
enabled: false,
|
enabled: false,
|
||||||
},
|
},
|
||||||
dynamicAnimation: {
|
dynamicAnimation: {
|
||||||
enabled: true,
|
enabled: false,
|
||||||
speed: 500
|
speed: 1000
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
zoom: {
|
zoom: {
|
||||||
|
Loading…
Reference in New Issue
Block a user