import { getCesiumLayerIndex } from '../../view/utils/support/utils'

/**
 * 获取图层在map中的上一个图层的index，如果没有上一个图层，则返回0
 * @param {Array} items 图层数组
 * @param {Object} layer 图层对象
 * @return {Number} 图层顺序
 * */
function getLayerIndex(items, layer) {
  let index = 0

  for (let i = 0; i < items.length; i++) {
    if (items[i].id === layer.id) {
      index = i - 1
      break
    }
  }
  if (index < 0) {
    index = 0
  }

  return index
}

/**
 * 修改图层顺序
 * @param {Object} layer 基础图层对象
 * @param {Object} innerLayer 三维上的图层对象
 * @param {Object} innerView cesium的view对象
 * */
function updateLayerIndex(layer, innerLayer, innerView) {
  // 获取图层index
  // eslint-disable-next-line import/no-named-as-default-member
  const moveIndex = getCesiumLayerIndex(layer, innerView)
  const currentIndex = innerView.imageryLayers.indexOf(innerLayer)
  if (currentIndex >= moveIndex) {
    for (let j = 0; j < currentIndex - moveIndex; j++) {
      innerView.imageryLayers.lower(innerLayer)
    }
    innerLayer._realIndex = layer._realIndex + 1
  } else {
    for (let j = 0; j < moveIndex - currentIndex; j++) {
      innerView.imageryLayers.raise(innerLayer)
    }
    innerLayer._realIndex = layer._realIndex + 1
  }
}

export { getLayerIndex, updateLayerIndex }
