JSFiddle - React, Tailwind, and code Playground

by Vladymyr Shevchuk

JavaScript

const intervals = [
  { D:   1 },
  { SB:  2 },
  { OFF: 3 },
  { D:   4 },
  { ON:  1 },
  { D:   2 }
]

generateFixtures(intervals);

function generateFixtures(intervals, options) {
  const result = [];

  intervals.forEach((interval, index) => {
    const key = Object.keys(interval);
    const value = interval[key];
    
    const nextInterval = intervals[index + 1];
    const nextMode = nextInterval ? Object.keys(nextInterval) : 'UNKNOWN';
    const nextDuration = nextInterval ? nextInterval[Object.keys(nextInterval)] : Infinity;
    const nextTimestamp = nextInterval ? Date.now() - interval[key] * 60 * 60 * 1000 : Date.now();  
    
    const obj = {
      timestamp: nextTimestamp,
      mode: key,
      previousMode: nextMode,
      previousDuration: nextDuration * 60 * 60 * 1000
    };
      
    result.push(obj);
  });
  
  console.log(result);
}