vue-cesium-jyt
Version:
Vue 3.x components for CesiumJS.
1 lines • 10.9 kB
Source Map (JSON)
{"version":3,"file":"index.mjs","sources":["../../../../../../packages/components/analyses/flood/index.ts"],"sourcesContent":["/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-12-31 10:30:21\n * @LastEditTime: 2022-02-17 17:40:47\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\analyses\\flood\\index.ts\n */\nimport { defineComponent, getCurrentInstance, PropType, ref, h, createCommentVNode, WatchStopHandle, onUnmounted, watch } from 'vue'\nimport { polygonHierarchy } from '@vue-cesium/utils/cesium-props'\nimport { VcColor, VcComponentInternalInstance, VcComponentPublicInstance, VcPolygonHierarchy, VcReadyObject } from '@vue-cesium/utils/types'\nimport { makeColor } from '@vue-cesium/utils/cesium-helpers'\nimport { VcPrimitiveClassification } from '@vue-cesium/components/primitives'\nimport { VcGeometryInstance } from '@vue-cesium/components/geometry-instance'\nimport { VcGeometryPolygon } from '@vue-cesium/components/geometries'\nimport { getInstanceListener, getVcParentInstance } from '@vue-cesium/utils/private/vm'\nimport { useCommon } from '@vue-cesium/composables'\nimport { commonEmits } from '@vue-cesium/utils/emits'\n\nconst emits = {\n ...commonEmits,\n stop: (evt: Cesium.ClassificationPrimitive) => true\n}\nexport default defineComponent({\n name: 'VcAnalysisFlood',\n props: {\n minHeight: {\n type: Number,\n default: -1\n },\n maxHeight: {\n type: Number,\n default: 8888\n },\n speed: {\n type: Number,\n default: 10\n },\n loop: {\n type: Boolean,\n default: false\n },\n color: {\n type: [Object, Array, String] as PropType<VcColor>,\n default: 'rgba(40,150,200,0.6)'\n },\n ...polygonHierarchy\n },\n emits: emits,\n setup(props, ctx) {\n const instance = getCurrentInstance() as VcComponentInternalInstance\n instance.cesiumClass = 'VcAnalysisFlood'\n instance.cesiumEvents = []\n\n const commonState = useCommon(props, ctx, instance)\n if (commonState === void 0) {\n return\n }\n\n const { emit } = ctx\n\n const canRender = ref(false)\n\n const vcParent = getVcParentInstance(instance)\n ;(vcParent.proxy as VcComponentPublicInstance).createPromise?.then(() => {\n canRender.value = true\n })\n\n const flooding = ref(false)\n const attributes = ref<any>(null)\n const extrudedHeight = ref(-1)\n const childRef = ref<Cesium.ClassificationPrimitive>(null)\n let stoped = false\n\n // watcch\n let unwatchFns: Array<WatchStopHandle> = []\n unwatchFns.push(\n watch(\n () => props.minHeight,\n val => {\n extrudedHeight.value = val\n }\n )\n )\n\n // methods\n instance.createCesiumObject = async () => {\n const { ColorGeometryInstanceAttribute } = Cesium\n\n attributes.value = {\n color: ColorGeometryInstanceAttribute.fromColor(makeColor(props.color) as Cesium.Color)\n }\n\n return childRef.value\n }\n\n instance.mount = async () => {\n const { viewer } = commonState.$services\n viewer.clock.onTick.addEventListener(onClockTick)\n return true\n }\n\n instance.unmount = async () => {\n const { viewer } = commonState.$services\n viewer.clock.onTick.removeEventListener(onClockTick)\n extrudedHeight.value = -1\n flooding.value = false\n return true\n }\n\n const onClockTick = () => {\n if (flooding.value) {\n if (extrudedHeight.value <= props.maxHeight) {\n extrudedHeight.value += props.speed\n stoped = false\n } else {\n const listener = getInstanceListener(instance, 'stop')\n listener && emit('stop', childRef.value)\n stoped = true\n if (props.loop) {\n extrudedHeight.value = props.minHeight\n } else {\n flooding.value = false\n }\n }\n }\n }\n\n const start = () => {\n extrudedHeight.value = props.minHeight\n flooding.value = true\n }\n\n const pause = () => {\n flooding.value = !flooding.value\n if (stoped) {\n extrudedHeight.value = props.minHeight\n }\n }\n\n const stop = () => {\n extrudedHeight.value = -1\n flooding.value = false\n }\n\n // life cycle\n onUnmounted(() => {\n unwatchFns.forEach(item => item())\n unwatchFns = []\n })\n\n // expose public methods\n Object.assign(instance.proxy, {\n childRef,\n start,\n pause,\n stop\n })\n\n return () => {\n if (canRender.value) {\n const { createGuid } = Cesium\n\n return h(\n VcPrimitiveClassification,\n {\n asynchronous: false,\n ref: childRef\n },\n () =>\n h(\n VcGeometryInstance,\n {\n id: createGuid(),\n attributes: attributes.value\n },\n () =>\n h(VcGeometryPolygon, {\n extrudedHeight: extrudedHeight.value,\n polygonHierarchy: props.polygonHierarchy\n })\n )\n )\n } else {\n return createCommentVNode('v-if')\n }\n }\n }\n})\n\nexport type VcAnalysisFloodProps = {\n /**\n * Specify the minimum elevation.\n * Default value: -1\n */\n minHeight?: number\n /**\n * Specify the maximum elevation.\n * Default value: 8888\n */\n maxHeight?: number\n /**\n * Specify the height to increase each frame.\n * Default value: 10\n */\n speed?: number\n /**\n * Specify whether to restart after reaching the maximum height.\n * Default value: false\n */\n loop?: boolean\n /**\n * Specify the VcColor of water.\n * Default value: rgba(40,150,200,0.6)\n */\n color?: VcColor\n /**\n * Specify ths VcPolygonHierarchy of polygon.\n */\n polygonHierarchy: VcPolygonHierarchy\n /**\n * Triggers before the VcCompass is loaded.\n */\n onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n /**\n * Triggers when the VcCompass is successfully loaded.\n */\n onReady?: (readyObject: VcReadyObject) => void\n /**\n * Triggers when the VcCompass is destroyed.\n */\n onDestroyed?: (instance: VcComponentInternalInstance) => void\n /**\n * Triggers when the maxHeight is reached.\n */\n onStop?: (evt: Cesium.ClassificationPrimitive) => void\n}\n"],"names":[],"mappings":"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"}