visual-design
Version:
A Component Library for Vue 3
1 lines • 17.7 kB
Source Map (JSON)
{"version":3,"file":"word-cloud.mjs","sources":["../../../../../../packages/components/demo/src/word-cloud.vue"],"sourcesContent":["<template>\n <section class=\"cloud-bed\">\n <div ref=\"cloudBox\" class=\"cloud-box\">\n <span\n v-for=\"(item, index) in state.dataList\"\n :key=\"index\"\n @click=\"methods.getDataInfo(item)\"\n >\n {{ item.name }}\n </span>\n </div>\n </section>\n</template>\n\n<script setup lang=\"ts\">\nimport { nextTick, onMounted, onUnmounted, reactive, ref } from 'vue'\n\ndefineOptions({\n name: 'VWordCloud',\n})\n\nconst cloudBox = ref<HTMLDivElement>()\nconst tagContent = ref<HTMLSpanElement>()\n\nconst state = reactive({\n timer: 50, // 球体转动速率\n radius: 0, // 词云球体面积大小\n dtr: Math.PI / 180, //鼠标滑过球体转动速度\n active: false, // 默认加载是否开启转动\n lasta: 0, // 上下转动\n lastb: 0.5, // 左右转动\n distr: true,\n tspeed: 0, // 鼠标移动上去时球体转动\n mouseX: 0,\n mouseY: 0,\n tagAttrList: [],\n sinA: 0,\n cosA: 0,\n sinB: 0,\n cosB: 0,\n sinC: 0,\n cosC: 0,\n dataList: [\n { name: '市容环境', value: '8' },\n { name: '生活资源', value: '8' },\n { name: '机动车乱停', value: '0' },\n { name: '供气质量', value: '0' },\n { name: '商业噪音', value: '6' },\n { name: '乱搭乱建', value: '10' },\n { name: '道路垃圾', value: '2' },\n { name: '生活用水管理', value: '5' },\n { name: '路面不洁', value: '7' },\n { name: '烧烤油烟', value: '6' },\n { name: '非法广告', value: '4' },\n { name: '设施破损', value: '6' },\n { name: '病虫害', value: '5' },\n { name: '1111', value: '5' },\n { name: '2222', value: '5' },\n { name: '3333', value: '5' },\n { name: '4444', value: '5' },\n { name: '5555', value: '5' },\n ],\n})\n\nconst methods = {\n // 获取点击文本信息\n getDataInfo(item: any) {},\n initWordCloud() {\n if (!cloudBox.value) {\n return\n }\n tagContent.value = cloudBox.value.querySelectorAll('span')\n if (tagContent.value) {\n for (let i = 0; i < tagContent.value.length; i++) {\n const tagObj = {\n offsetWidth: 0,\n offsetHeight: 0,\n }\n tagObj.offsetWidth = tagContent.value[i].offsetWidth\n tagObj.offsetHeight = tagContent.value[i].offsetHeight\n state.tagAttrList.push(tagObj)\n }\n }\n\n methods.sineCosine(0, 0, 0)\n methods.positionAll()\n cloudBox.value.onmouseover = () => {\n state.active = true\n }\n cloudBox.value.onmouseout = () => {\n state.active = false\n }\n cloudBox.value.onmousemove = (ev) => {\n const oEvent = ev\n state.mouseX =\n oEvent.clientX -\n (cloudBox.value.offsetLeft + cloudBox.value.offsetWidth / 2)\n state.mouseY =\n oEvent.clientY -\n (cloudBox.value.offsetTop + cloudBox.value.offsetHeight / 2)\n state.mouseX /= 5\n state.mouseY /= 5\n }\n // setInterval(state.update, state.timer);\n // state.timer = requestAnimationFrame(state.update)\n },\n positionAll() {\n let phi = 0\n let theta = 0\n const max = state.tagAttrList.length\n const aTmp = []\n const oFragment = document.createDocumentFragment()\n //随机排序\n for (let i = 0; i < tagContent.value.length; i++) {\n aTmp.push(tagContent.value[i])\n }\n aTmp.sort(() => {\n return Math.random() < 0.5 ? 1 : -1\n })\n for (const element of aTmp) {\n oFragment.appendChild(element)\n }\n cloudBox.value.appendChild(oFragment)\n for (let i = 1; i < max + 1; i++) {\n if (state.distr) {\n phi = Math.acos(-1 + (2 * i - 1) / max)\n theta = Math.sqrt(max * Math.PI) * phi\n } else {\n z\n phi = Math.random() * Math.PI\n theta = Math.random() * (2 * Math.PI)\n }\n //坐标变换\n state.tagAttrList[i - 1].cx =\n state.radius * Math.cos(theta) * Math.sin(phi)\n state.tagAttrList[i - 1].cy =\n state.radius * Math.sin(theta) * Math.sin(phi) + 50\n state.tagAttrList[i - 1].cz = state.radius * Math.cos(phi)\n tagContent.value[i - 1].style.left = `${\n state.tagAttrList[i - 1].cx +\n cloudBox.value.offsetWidth / 2 -\n state.tagAttrList[i - 1].offsetWidth / 2\n }px`\n tagContent.value[i - 1].style.top = `${\n state.tagAttrList[i - 1].cy +\n cloudBox.value.offsetHeight / 2 -\n state.tagAttrList[i - 1].offsetHeight\n }px`\n }\n },\n update() {\n let angleBasicA\n let angleBasicB\n\n if (state.active) {\n angleBasicA =\n (-Math.min(Math.max(-state.mouseY, -200), 200) / state.radius) *\n state.tspeed\n angleBasicB =\n (Math.min(Math.max(-state.mouseX, -200), 200) / state.radius) *\n state.tspeed\n } else {\n angleBasicA = state.lasta * 0.98\n angleBasicB = state.lastb * 0.98\n }\n\n //默认转动是后是否需要停下\n // lasta=a;\n // lastb=b;\n\n // if(Math.abs(a)<=0.01 && Math.abs(b)<=0.01)\n // {\n // return;\n // }\n methods.sineCosine(angleBasicA, angleBasicB, 0)\n for (let j = 0; j < state.tagAttrList.length; j++) {\n const rx1 = state.tagAttrList[j].cx\n const ry1 =\n state.tagAttrList[j].cy * state.cosA +\n state.tagAttrList[j].cz * -state.sinA\n const rz1 =\n state.tagAttrList[j].cy * state.sinA +\n state.tagAttrList[j].cz * state.cosA\n\n const rx2 = rx1 * state.cosB + rz1 * state.sinB\n const ry2 = ry1\n const rz2 = rx1 * -state.sinB + rz1 * state.cosB\n\n const rx3 = rx2 * state.cosC + ry2 * -state.sinC\n const ry3 = rx2 * state.sinC + ry2 * state.cosC\n const rz3 = rz2\n state.tagAttrList[j].cx = rx3\n state.tagAttrList[j].cy = ry3\n state.tagAttrList[j].cz = rz3\n\n const per = 350 / (350 + rz3)\n\n state.tagAttrList[j].x = rx3 * per - 2\n state.tagAttrList[j].y = ry3 * per\n state.tagAttrList[j].scale = per\n state.tagAttrList[j].alpha = per\n\n state.tagAttrList[j].alpha = (state.tagAttrList[j].alpha - 0.6) * (10 / 6)\n }\n methods.doPosition()\n methods.depthSort()\n // state.timer = requestAnimationFrame(state.update)\n },\n doPosition() {\n const len = cloudBox.value.offsetWidth / 2\n const height = cloudBox.value.offsetHeight / 2\n for (let i = 0; i < state.tagAttrList.length; i++) {\n tagContent.value[i].style.left = `${\n state.tagAttrList[i].cx + len - state.tagAttrList[i].offsetWidth / 2\n }px`\n tagContent.value[i].style.top = `${\n state.tagAttrList[i].cy + height - state.tagAttrList[i].offsetHeight / 2\n }px`\n // tagContent.value[i].style.fontSize = Math.ceil(12 * state.tagAttrList[i].scale/2) + 8 + 'px';\n tagContent.value[i].style.fontSize = `${\n Math.ceil((12 * state.tagAttrList[i].scale) / 2) + 2\n }px`\n tagContent.value[i].style.filter = `alpha(opacity=${\n 100 * state.tagAttrList[i].alpha\n })`\n tagContent.value[i].style.opacity = state.tagAttrList[i].alpha\n }\n },\n depthSort() {\n const aTmp = []\n for (let i = 0; i < tagContent.value.length; i++) {\n aTmp.push(tagContent.value[i])\n }\n aTmp.sort((item1, item2) => item2.cz - item1.cz)\n for (const i of aTmp) {\n aTmp[i].style.zIndex = i\n }\n },\n sineCosine(a: number, b: number, c: number) {\n state.sinA = Math.sin(a * state.dtr)\n state.cosA = Math.cos(a * state.dtr)\n state.sinB = Math.sin(b * state.dtr)\n state.cosB = Math.cos(b * state.dtr)\n state.sinC = Math.sin(c * state.dtr)\n state.cosC = Math.cos(c * state.dtr)\n },\n}\n\nonMounted(() => {\n nextTick(() => {\n if (cloudBox.value) {\n state.radius = cloudBox.value.offsetWidth / 2.5\n }\n methods.initWordCloud()\n })\n})\n\nonUnmounted(() => {\n // cancelAnimationFrame(state.timer)\n})\n</script>\n"],"names":[],"mappings":"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"}