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