function buildMetaData()

in pages/projects/[year]/[quarter].js [37:79]


function buildMetaData(projectData) {
  const newProjectData = { ...projectData };
  if (projectData.data) {
    const augmentedProjects =
      newProjectData.data.organization.projects.nodes.map((project) => {
        const [meta, updatedHTML] = parseProjectMeta(project.bodyHTML);
        project.bodyHTML = updatedHTML;
        const todoColumn = project.columns.edges.find((column) => {
          return column.node.name === 'To do';
        });
        const inProgressColumn = project.columns.edges.find((column) => {
          return column.node.name === 'In progress';
        });
        const doneColumn = project.columns.edges.find((column) => {
          return column.node.name === 'Done';
        });
        const todoCount =
          (todoColumn && parseInt(todoColumn.node.cards.totalCount, 10)) || 0;
        const inProgressCount =
          (inProgressColumn &&
            parseInt(inProgressColumn.node.cards.totalCount, 10)) ||
          0;
        const doneCount =
          (doneColumn && parseInt(doneColumn.node.cards.totalCount, 10)) || 0;
        const totalCount = todoCount + inProgressCount + doneCount;
        const donePerc = totalCount ? (100 / totalCount) * doneCount : 0;
        const inProgressPerc = totalCount
          ? (100 / totalCount) * inProgressCount
          : 0;
        project.meta = {
          ...meta,
          todoCount,
          inProgressCount,
          doneCount,
          donePerc,
          inProgressPerc,
        };
        return project;
      });
    newProjectData.data.organization.projects.nodes = augmentedProjects;
  }
  return newProjectData;
}