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:...