/**
 * 获得给定资源的名称全路径
 * @param res: 资源
 * @param name: 全路径字段
 */
export function getFullName (res, name) {
  let result = ''
  while (res != null) {
    if (result === '') {
      result = res[name]
    } else {
      result = res[name] + '.' + result
    }
    res = res.parent
  }
  return result
}

/**
 * 给拿到的资源添加父关系
 * @param res
 */
export function procParent (reses) {
  for (let value of reses) {
    procInnerParent(value)
  }
}

// 给资源res的所有子，添加父关系
function procInnerParent (res) {
  for (let value of res.children) {
    value.parent = res
    procInnerParent(value)
  }
}

/**
 * 从给定一批资源中，递归找到给定号码的资源
 * @param model：给定的一批资源
 * @param id：要查找的资源id串
 */
export function find (model, id) {
  // 返回最后一个id信息
  let index = id.lastIndexOf('.')
  if (index !== -1) {
    id = id.substr(index + 1)
  }

  // 子中有，返回子里的
  for (let value of model) {
    let ret = getInnerResourceById(value, id)
    if (ret) {
      return ret
    }
  }

  return null
}

// 根据id号取资源，自己不是，递归从子中找
function getInnerResourceById (res, id) {
  if (res.id === id) {
    return res
  }

  // 子中有，返回子里的
  for (let value of res.children) {
    let ret = getInnerResourceById(value, id)
    if (ret) {
      return ret
    }
  }

  return null
}
