getters.js 806 Bytes
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
export const showChart = state => Boolean(!state.loading && state.chartData);

export const parsedData = state => {
  const byAuthor = {};
  const total = {};

  state.chartData.forEach(({ date, author_name, author_email }) => {
    total[date] = total[date] ? total[date] + 1 : 1;

    const authorData = byAuthor[author_name];

    if (!authorData) {
      byAuthor[author_name] = {
        email: author_email.toLowerCase(),
        commits: 1,
        dates: {
          [date]: 1,
        },
      };
    } else {
      authorData.commits += 1;
      authorData.dates[date] = authorData.dates[date] ? authorData.dates[date] + 1 : 1;
    }
  });

  return {
    total,
    byAuthor,
  };
};

// prevent babel-plugin-rewire from generating an invalid default during karma tests
export default () => {};