events generator

by Vladymyr Shevchuk

JavaScript

const dataItems = [
    { 'ON'  : '9:00'  },
    { 'OFF' : '10:00' },

    { 'ON'  : '9:00'  },
    { 'OFF' : '10:00' },

    { 'ON'  : '9:00'  },
    { 'OFF' : '10:00' },
    
    { 'ON'  : '9:00'  },
    { 'OFF' : '10:00' },

    { 'ON'  : '9:00'  },
    { 'OFF' : '10:00' },
    
    { 'ON'  : '9:00'  },
    { 'OFF' : '10:00' },

    { 'ON'  : '5:59'  }
];

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.updateStatusTest(item)
   });
window.onUpdateStatusFinished();