export function asFlattenProjectTree()

in src/app/teamcity/teamcity-convert.js [95:122]


export function asFlattenProjectTree(projectResponse) {
  const projects = filterNotArchivedAndNotRoot(projectResponse.project || []);
  const projectMap = associateBy(projects, project => project.id);
  const roots = asProjectTree(projects, projectMap);

  const flattenProjects = [];
  let currentLevel = 0;

  /**
   * Flattens project tree
   *
   * @param {TeamcityProject} node - project to flatten
   * @returns {undefined}
   */
  function flattenTree(node) {
    node.level = currentLevel;
    flattenProjects.push(node);
    if (node.children) {
      currentLevel++;
      node.children.forEach(flattenTree);
      currentLevel--;
    }
  }

  roots.forEach(flattenTree);

  return flattenProjects;
}