calc overlayed event
by amrendra kumar
HTML
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>
JavaScript
const isOverLapFound = (s1, s2, j1, j2) => {
let event1;
if ( moment(j1.timestamp).isBetween(s1.timestamp, s2.timestamp, null, '[)') ) {
event1 = j1;
}
else if ( moment(s1.timestamp).isBetween(j1.timestamp, j2.timestamp, null, '(]') ) {
event1 = s1;
}
return event1;
}
const getOverlappedEvent = (serviceEvent, gateWayEvent) => {
//debugger
let systemEvent = [];
let uptime = 0;
if (!serviceEvent.length || !gateWayEvent.length) {
return {systemEvent, uptime}
}
let j = 0;
for (let i = 0; i < serviceEvent.length; i++) {
for ( j = i ; j < gateWayEvent.length; j++) {
if ( (serviceEvent[i] && serviceEvent[i+1] && gateWayEvent[j] && gateWayEvent[j+1]) &&
(serviceEvent[i].connect && !serviceEvent[i+1].connect) &&
(gateWayEvent[j].connect && !gateWayEvent[j+1].connect) )
{
const event1 = isOverLapFound(serviceEvent[i], serviceEvent[i+1], gateWayEvent[j], gateWayEvent[j+1])
if (event1) {
let event2;
if (moment(serviceEvent[i+1].timestamp).isSameOrBefore(gateWayEvent[j+1].timestamp)) {
event2 = serviceEvent[i+1];
}
else if (moment(serviceEvent[i+1].timestamp).isAfter(gateWayEvent[j+1].timestamp)) {
event2 = gateWayEvent[j+1];
}
systemEvent.push(event1);
systemEvent.push(event2);
/* if (moment(gateWayEvent[j+1].timestamp).diff(moment(serviceEvent[i+1].timestamp)) > 0 ) {
j = j +1;
} */
//j = j +1;
}
}
/* if (gateWayEvent[j+1] && serviceEvent[i+1] && moment(gateWayEvent[j+1].timestamp).diff(moment(serviceEvent[i+1].timestamp)) > 0 ) {
i = i +1;
break;
} */
}
}
return systemEvent;
}
//test1
const serviceEvent = [
{
timestamp: "2019-04-30T10:00:00.000+00:00",
connect : true
},
{
timestamp:...