calc overlayed event approach2
by amrendra kumar
HTML
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>
JavaScript
const organigeEvents = events => {
if (!events.length) {
return events
}
// sorting events in ascending order of their timestamp
// events.sort((e1, e2) => moment(e1.timestamp).diff(moment(e2.timestamp)))
let uptime = 0
let organigedEvents = []
for (let i = 0; i < events.length; i++) {
if (
events[i] &&
typeof events[i].connect === 'boolean' &&
events[i + 1] &&
typeof events[i + 1].connect === 'boolean' &&
(events[i].connect && !events[i + 1].connect)
) {
uptime = uptime + moment(events[i + 1].timestamp).diff(events[i].timestamp, 'seconds')
organigedEvents.push(events[i])
organigedEvents.push(events[i + 1])
i = i + 1
} else if (events[i] && events[i].connect) {
for (let j = i + 1; j <= events.length; j++) {
if (events[j] && typeof events[j].connect === 'boolean' && !events[j].connect) {
uptime = uptime + moment(events[j].timestamp).diff(events[i].timestamp, 'seconds')
organigedEvents.push(events[i])
organigedEvents.push(events[j])
i = j
break
}
}
}
}
return { organigedEvents, uptime }
}
//test1
const serviceEvent = [
{
timestamp: "2019-04-30T10:00:00.000+00:00",
connect : true
},
{
timestamp: "2019-04-30T11:00:00.000+00:00",
connect : false
},
{
timestamp: "2019-04-30T13:00:00.000+00:00",
connect : true
},
{
timestamp: "2019-04-30T14:00:00.000+00:00",
connect : false
},
{
timestamp: "2019-04-30T15:00:00.000+00:00",
connect : true
},
{
timestamp: "2019-04-30T16:00:00.000+00:00",
connect : false
},
]
const gateWayEvent = [
{
timestamp: "2019-04-30T10:30:00.000+00:00",
connect : true
},
{
timestamp: "2019-04-30T11:30:00.000+00:00",
connect : false
},
{
timestamp: "2019-04-30T12:00:00.000+00:00",
connect : true
},
{
timestamp: "2019-04-30T12:30:00.000+00:00",
connect : false
},
{
timestamp:...