JSFiddle - React, Tailwind, and code Playground

by Vladymyr Shevchuk

JavaScript

const dataItems = [
    { ['D']  : '2'   },
    { ['ON'] : '3'   },
    { ['D']  : '3'   },
    { ['OFF']: '1'   },
    { ['ON'] : '2'   },
    { ['D']  : '6:30' }
];

const createEvents = startTS => data => {
  let len = data.length;
  const result = [];
  let total = 0;

  while(len--) {
    const item = data[len];
    const [mode] = Object.keys(item);
    const [hours = 0, minutes = 0] = item[mode].split(':');
    const duration = parseInt(hours, 10) * 3600000 + parseInt(minutes, 10) * 60000;

    total += duration;

    result.push({
      ts: startTS - total,
      event: mode
    });
  }

  return result;
};

createEvents(Date.now())(dataItems)
  .reverse()
  .forEach(item => {
    console.log(new Date(item.ts), item.event);
    window.updateStatus(item)
   });
window.onUpdateStatusFinished();