<!--
  文件描述:工具条
  创建时间:2024/4/16 10:54
  创建人:Zhaipeixiu
-->
<script setup>
import { DuplicateSharp,Layers,ChevronBack,ChevronForward,CreateOutline} from '@vicons/ionicons5'
import { RulerAlt} from '@vicons/carbon'
import { TerrainSharp} from '@vicons/material'
import { DrawPolygon} from '@vicons/fa'
import { useMessage } from 'naive-ui'
import {ref} from "vue";
const message = useMessage();
let file;

let options = [
    {
      label: 'Drive My Car',
      value: 'Drive My Car'
    }
];

let layerValue = ref('test');
let barIsOpen = ref(true);
let MeasureOptions = [
  {
    label: '距离测量',
    key: 'distance'
  },
  {
    label: '面积测量',
    key: 'area'
  },
  {
    label: '清除',
    key: 'clear'
  },
]

let DrawOptions = [
  {
    label: '多边形',
    key: 'polygon'
  },
  {
    label: '矩形',
    key: 'rec'
  },{
    label: '圆形',
    key: 'circle'
  },
  {
    label: '清除',
    key: 'clear'
  },
]

function handleDrawSelect(key) {
  if(key === 'clear') {
    if(window.measureViewer.clearDraw()){
      message.warning('无可清除图形')
    }
  }
  else{
    window.measureViewer.drawGraphics(key)
  }
}

// 测量菜单选中事件
function handleSelect(key) {
  if(key === 'distance') {
    measure();
  }
  else if(key === 'area') {
    measureArea()
  }else if(key === 'clear') {
    measureEnd()
  }
}

function handleFile(event) {
  file = event.target.files[0]
  console.log(file)
  let kmlDataPromise = window.Cesium.KmlDataSource.load(file, {
    camera: window.viewer.scene.camera,
    canvas: window.viewer.scene.canvas,
    screenOverlayContainer: window.viewer.container,
    clampToGround: true,
  });
  console.log(kmlDataPromise);
  kmlDataPromise.then(function (dataSource) {
    // console.log(dataSource);
    window.viewer.dataSources.add(dataSource);
    window.viewer.flyTo(dataSource);
  });
}

/**
 * 多点距离测量
 */
function measure(){
  window.measureViewer.clearDisEntity()
  window.measureViewer.activate()
}

/**
 * 清除面积测量和多点距离测量
 */
function measureEnd(){
  if(window.measureViewer.vertexEntities.length>0 || window.measureViewer.activeShapePoints.length>0){
    window.measureViewer.deactivate()
    window.measureViewer.stopAreaMeasure()
    window.measureViewer.clearDisEntity()
    window.measureViewer.clearAreaEntity()
    window.measureViewer.viewer.scene.requestRender()
  }else{
    message.warning('无可清除元素')
  }
}

/**
 * 面积测量
 */
function measureArea() {
  window.measureViewer.clearAreaEntity()
  window.measureViewer.activateAreaMeasure();
}

</script>

<template>
  <n-flex id="panel">
    <n-popselect v-model:value="layerValue" :options="options" size="medium">
      <n-button tertiary circle type="warning">
        <template #icon>
          <n-icon><Layers/></n-icon>
        </template>
      </n-button>
    </n-popselect>
    <n-tooltip placement="bottom" trigger="hover">
      <template #trigger>
        <n-button tertiary circle type="warning">
          <template #icon>
            <n-icon><DuplicateSharp /></n-icon>
          </template>
        </n-button>
      </template>
      <span> 添加数据 </span>
    </n-tooltip>
    <n-tooltip placement="bottom" trigger="hover">
      <template #trigger>
      <n-button tertiary circle type="warning">
        <template #icon>
          <n-icon><TerrainSharp/></n-icon>
        </template>
      </n-button>
        </template>
    <span> 地形分析 </span>
    </n-tooltip>
    <n-button tertiary circle type="warning">
      <template #icon>
        <n-icon><CreateOutline/></n-icon>
      </template>
    </n-button>
    <n-dropdown :options="MeasureOptions" @select="handleSelect">
    <n-button tertiary circle type="warning">
      <template #icon>
      <n-icon><RulerAlt/></n-icon>
      </template>
    </n-button>
    </n-dropdown>
    <n-dropdown :options="DrawOptions" @select="handleDrawSelect">
    <n-button tertiary circle type="warning">
      <template #icon>
        <n-icon><DrawPolygon/></n-icon>
      </template>
    </n-button>
    </n-dropdown>
    <n-button tertiary circle type="warning">
      <template #icon>
<!--        ChevronBack,ChevronForward,-->
        <n-icon><ChevronBack/></n-icon>
      </template>
    </n-button>
  </n-flex>
</template>

<style scoped>
#panel{
  position: absolute;
  top: 10px;
  left: 2px;
  background: rgba(21, 21, 21, 0.73);
  border-radius: 7px;
}
</style>