Commit 66b63af6 by 饶艳婷

合并分支 'develop' 到 'master'

Develop

查看合并请求 !33
parents 65f48332 5df9659d
......@@ -3,7 +3,8 @@ ENV = 'development'
EDITOR=code
# base api
# VUE_APP_BASE_API = '/dev-api'
VUE_APP_BASE_API = 'http://192.168.1.100:8081/'
VUE_APP_BASE_API = 'http://222.212.91.59:6191/'
VUE_APP_BASE = 'http://222.212.91.59:6192'
# vue-cli uses the VUE_CLI_BABEL_TRANSPILE_MODULES environment variable,
# to control whether the babel-plugin-dynamic-import-node plugin is enabled.
# It only does one thing by converting all import() to require().
......
......@@ -3,5 +3,6 @@ ENV = 'production'
# base api
# VUE_APP_BASE_API = 'http://localhost:8081/'
VUE_APP_BASE_API = '/'
VUE_APP_BASE_API = 'http://222.212.91.59:6191/'
VUE_APP_BASE = 'http://222.212.91.59:6192'
......@@ -7,19 +7,19 @@ module.exports = {
env: {
browser: true,
node: true,
es6: true,
es6: true
},
extends: ['plugin:vue/recommended', 'eslint:recommended'],
// add your custom rules here
//it is base on https://github.com/vuejs/eslint-config-vue
// it is base on https://github.com/vuejs/eslint-config-vue
rules: {
"vue/singleline-html-element-content-newline": "off",
"vue/multiline-html-element-content-newline": "off",
"vue/no-mutating-props": "off",
"vue/multi-word-component-names": "off",
"vue/require-default-prop": "off",
"vue/no-v-html": "off",
'vue/singleline-html-element-content-newline': 'off',
'vue/multiline-html-element-content-newline': 'off',
'vue/no-mutating-props': 'off',
'vue/multi-word-component-names': 'off',
'vue/require-default-prop': 'off',
'vue/no-v-html': 'off',
'accessor-pairs': 2,
'arrow-spacing': [2, {
'before': true,
......@@ -42,8 +42,8 @@ module.exports = {
'curly': [2, 'multi-line'],
'dot-location': [2, 'property'],
'eol-last': 2,
'eqeqeq': ["error", "always", {
"null": "ignore"
'eqeqeq': ['error', 'always', {
'null': 'ignore'
}],
'generator-star-spacing': [2, {
'before': true,
......@@ -191,8 +191,8 @@ module.exports = {
objectsInObjects: false
}],
'array-bracket-spacing': [2, 'never'],
"vue/no-use-v-if-with-v-for": ["error", {
"allowUsingIterationVar": true
'vue/no-use-v-if-with-v-for': ['error', {
'allowUsingIterationVar': true
}]
}
}
.DS_Store
node_modules/
dist/
dist.zip
npm-debug.log*
yarn-debug.log*
yarn-error.log*
......@@ -14,3 +15,4 @@ tests/**/coverage/
*.ntvs*
*.njsproj
*.sln
yarn.lock
{
"name": "dataease",
"version": "1.18.9",
"version": "1.18.11",
"description": "dataease front",
"private": true,
"scripts": {
......@@ -34,6 +34,7 @@
"@antv/l7-renderer": "2.15.0",
"@antv/l7-scene": "2.15.0",
"@antv/l7-source": "2.15.0",
"@antv/l7-three": "2.15.0",
"@antv/l7-utils": "2.15.0",
"@antv/s2": "1.35.0",
"@antv/util": "^2.0.17",
......@@ -65,14 +66,17 @@
"lodash.isstring": "^4.0.1",
"normalize.css": "7.0.0",
"nprogress": "0.2.0",
"popmotion": "^11.0.5",
"screenfull": "4.2.0",
"sockjs-client": "^1.6.0",
"stompjs": "^2.3.3",
"svg-sprite-loader": "4.1.3",
"svgo": "1.2.2",
"three": "^0.115.0",
"tinymce": "^5.8.2",
"umy-ui": "^1.1.6",
"vue": "2.6.10",
"vue-amap": "^0.5.10",
"vue-clipboard2": "0.3.1",
"vue-codemirror": "^4.0.6",
"vue-friendly-iframe": "^0.20.0",
......@@ -88,7 +92,7 @@
"vuedraggable": "^2.24.3",
"vuex": "3.1.0",
"webpack": "^4.46.0",
"xlsx": "^0.17.0",
"xlsx": "https://cdn.sheetjs.com/xlsx-0.19.3/xlsx-0.19.3.tgz",
"xss": "^1.0.14"
},
"devDependencies": {
......
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>dataease-server</artifactId>
<groupId>io.dataease</groupId>
<version>${dataease.version}</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>frontend</artifactId>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<frontend-maven-plugin.version>1.9.1</frontend-maven-plugin.version>
</properties>
<build>
<plugins>
<plugin>
<groupId>com.github.eirslett</groupId>
<artifactId>frontend-maven-plugin</artifactId>
<version>${frontend-maven-plugin.version}</version>
<executions>
<execution>
<id>install node and npm</id>
<goals>
<goal>install-node-and-npm</goal>
</goals>
<configuration>
<!-- See https://nodejs.org/en/download/ for latest node and npm (lts) versions -->
<nodeVersion>v15.12.0</nodeVersion>
<npmVersion>7.6.3</npmVersion>
</configuration>
</execution>
<execution>
<id>npm install</id>
<goals>
<goal>npm</goal>
</goals>
<!-- Optional configuration which provides for running any npm command -->
<configuration>
<arguments>install</arguments>
</configuration>
</execution>
<execution>
<id>npm run build</id>
<goals>
<goal>npm</goal>
</goals>
<configuration>
<arguments>run build</arguments>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
No preview for this file type
<template>
<div id="app">
<router-view />
<plugin-com v-show="false" ref="de-theme" component-name="ThemeSetting" />
<plugin-com
v-show="false"
ref="de-theme"
component-name="ThemeSetting"
/>
<el-dialog
v-if="$route.path !== '/login'"
:visible.sync="showPasswordModifiedDialog"
......@@ -9,42 +13,42 @@
:title="$t('user.change_password')"
:show-close="false"
>
<PasswordUpdateForm oldPwd="dataease" />
<PasswordUpdateForm old-pwd="dataease" />
</el-dialog>
</div>
</template>
<script>
import PluginCom from "@/views/system/plugin/PluginCom";
import { mapState } from "vuex";
import PasswordUpdateForm from "@/views/system/user/PasswordUpdateForm.vue";
import PluginCom from '@/views/system/plugin/PluginCom'
import { mapState } from 'vuex'
import PasswordUpdateForm from '@/views/system/user/PasswordUpdateForm.vue'
export default {
name: "App",
name: 'App',
components: { PluginCom, PasswordUpdateForm },
computed: {
...mapState("user", ["passwordModified"]),
...mapState('user', [
'passwordModified'
])
},
data() {
return {
showPasswordModifiedDialog: false,
};
},
mounted() {
const passwordModified = JSON.parse(
localStorage.getItem("passwordModified")
);
if (typeof passwordModified === "boolean") {
this.$store.commit("user/SET_PASSWORD_MODIFIED", passwordModified);
showPasswordModifiedDialog: false
}
},
watch: {
passwordModified: {
handler(val) {
this.showPasswordModifiedDialog = !val;
this.showPasswordModifiedDialog = !val
},
immediate: true,
},
immediate: true
}
},
};
mounted() {
const passwordModified = JSON.parse(localStorage.getItem('passwordModified'))
if (typeof passwordModified === 'boolean') {
this.$store.commit('user/SET_PASSWORD_MODIFIED', passwordModified)
}
}
}
</script>
......@@ -153,7 +153,6 @@ export const viewOptions = panelId => {
})
}
export function getDatasourceRelationship(id) {
return request({
url: `/api/relation/datasource/${id}`,
......@@ -162,7 +161,6 @@ export function getDatasourceRelationship(id) {
})
}
export function getDatasetRelationship(id) {
return request({
url: `/api/relation/dataset/${id}`,
......@@ -171,7 +169,6 @@ export function getDatasetRelationship(id) {
})
}
export function getPanelRelationship(id) {
return request({
url: `/api/relation/panel/${id}`,
......
......@@ -138,7 +138,7 @@ export function fieldList(id, showLoading = true) {
}
export function fieldListWithPermission(id, showLoading = true) {
//初始模板中的过滤组件无需走后台
// 初始模板中的过滤组件无需走后台
if (id.indexOf('no_auth') > -1) {
return new Promise(function(resolve) {
resolve({
......@@ -258,15 +258,6 @@ export function datasetTaskList(page, size, data, loading) {
})
}
export function datasetRowPermissionsList(datasetId, page, size, data, loading) {
return request({
url: 'plugin/dataset/rowPermissions/pageList/' + datasetId + '/' + page + '/' + size,
method: 'post',
data,
loading: loading
})
}
export function checkCustomDs() {
return request({
url: '/system/checkCustomDs',
......
......@@ -66,9 +66,9 @@ export function loadGenerate(resourceId) {
})
}
export function loadResource(resourceId,userId) {
export function loadResource(resourceId, userId) {
return request({
url: 'api/link/resourceDetail/' + resourceId+'/'+ userId,
url: 'api/link/resourceDetail/' + resourceId + '/' + userId,
method: 'get'
})
}
......
......@@ -192,7 +192,7 @@ export function initPanelData(panelId, useCache = false, callback) {
watermarkOpen: response.data.watermarkOpen,
watermarkInfo: watermarkInfo
})
const targetPanelId = response.data.panelType==='system'?response.data.source:panelId
const targetPanelId = response.data.panelType === 'system' ? response.data.source : panelId
// 刷新联动信息
getPanelAllLinkageInfo(targetPanelId).then(rsp => {
store.commit('setNowPanelTrackInfo', rsp.data)
......
......@@ -53,12 +53,4 @@ export function treeByMenuId(menuId) {
})
}
export function queryCondition(data) {
return request({
url: '/api/menu/search',
method: 'post',
data
})
}
export default { addMenu, editMenu, delMenu, getMenusTree, getChild, treeByMenuId, queryCondition }
export default { addMenu, editMenu, delMenu, getMenusTree, getChild, treeByMenuId }

272 KB | W: | H:

251 KB | W: | H:

src/assets/login-desc.png
src/assets/login-desc.png
src/assets/login-desc.png
src/assets/login-desc.png
  • 2-up
  • Swipe
  • Onion skin
......@@ -3,6 +3,8 @@
:is="mode"
:ref="refId"
:obj="obj"
:bus="bus"
:axios-request="request"
v-bind="$attrs"
v-on="$listeners"
/>
......@@ -11,6 +13,9 @@
<script>
import { uuid } from 'vue-uuid'
import { get } from '@/api/system/dynamic'
import bus from '@/utils/bus'
import request from '@/utils/request'
export default {
name: 'AsyncComponent',
inheritAttrs: true,
......@@ -29,7 +34,9 @@ export default {
return {
resData: '',
mode: '',
refId: null
refId: null,
bus: bus,
request: request
}
},
watch: {
......@@ -47,15 +54,13 @@ export default {
// window.SyncComponentCache[this.url] = Axios.get(this.url)
res = await window.SyncComponentCache[this.url]
} else {
this.mode = await window.SyncComponentCache[this.url]
return
res = await window.SyncComponentCache[this.url]
}
if (res) {
const Fn = Function
const dynamicCode = res.data || res
const component = new Fn(`return ${dynamicCode}`)()
this.mode = component.default || component
window.SyncComponentCache[this.url] = this.mode
}
}
}
......
......@@ -24,7 +24,7 @@
>
<el-tooltip :content="item.tooltip">
<span style="float: left;">
<i :class="item.icon"/>
<i :class="item.icon" />
</span>
</el-tooltip>
</el-radio-button>
......@@ -47,7 +47,7 @@
:value="item.value"
>
<span style="float: left;">
<i :class="item.icon"/>
<i :class="item.icon" />
</span>
<span style="float: right; color: #8492a6; font-size: 12px">{{ item.label }}</span>
</el-option>
......@@ -257,7 +257,7 @@
@click="goColor"
/>
</el-tooltip>
<div :style="letterDivColor"/>
<div :style="letterDivColor" />
<el-color-picker
ref="colorPicker"
v-model="styleInfo.color"
......@@ -279,7 +279,7 @@
@click="goBoardColor"
/>
</el-tooltip>
<div :style="boardDivColor"/>
<div :style="boardDivColor" />
<el-color-picker
ref="boardColorPicker"
v-model="styleInfo.borderColor"
......@@ -302,7 +302,7 @@
@click="goBackgroundColor"
/>
</el-tooltip>
<div :style="backgroundDivColor"/>
<div :style="backgroundDivColor" />
<el-color-picker
ref="backgroundColorPicker"
v-model="styleInfo.backgroundColor"
......@@ -318,7 +318,7 @@
style="width: 20px;float: left;margin-top: 2px;margin-left: 2px;"
>
<el-tooltip :content="$t('panel.video_info')">
<VideoLinks :link-info="curComponent.videoLinks"/>
<VideoLinks :link-info="curComponent.videoLinks" />
</el-tooltip>
</div>
......@@ -327,7 +327,7 @@
style="width: 20px;float: left;margin-top: 2px;margin-left: 2px;"
>
<el-tooltip :content="$t('panel.stream_media_info')">
<StreamMediaLinks :link-info="curComponent.streamMediaLinks"/>
<StreamMediaLinks :link-info="curComponent.streamMediaLinks" />
</el-tooltip>
</div>
......@@ -336,7 +336,7 @@
style="width: 20px;float: left;margin-top: 2px;margin-left: 2px;"
>
<el-tooltip :content="$t('panel.web_addr')">
<FrameLinks :link-info="curComponent.frameLinks"/>
<FrameLinks :link-info="curComponent.frameLinks" />
</el-tooltip>
</div>
<div
......@@ -356,7 +356,7 @@
style="width: 20px;float: left;margin-top: 2px;margin-left: 10px;"
>
<el-tooltip :content="$t('panel.tab_inner_style')">
<tab-style :style-info="styleInfo"/>
<tab-style :style-info="styleInfo" />
</el-tooltip>
</div>
......
......@@ -34,6 +34,7 @@
{{ $t('commons.confirm') }}
</el-button>
<el-button
style="margin-right: 24px"
size="mini"
@click="editCancel"
>
......@@ -328,6 +329,7 @@ export default {
eventBus.$on('preview', this.preview)
eventBus.$on('checkAndSave', this.checkAndSave)
eventBus.$on('clearCanvas', this.clearCanvas)
bus.$on('onSubjectChange', this.editPanelInit)
this.scale = this.canvasStyleData.scale
this.mobileLayoutInitStatus = this.mobileLayoutStatus
this.showGridSwitch = this.canvasStyleData.aidedDesign.showGrid
......@@ -339,6 +341,7 @@ export default {
eventBus.$off('checkAndSave', this.checkAndSave)
eventBus.$off('clearCanvas', this.clearCanvas)
eventBus.$off('editPanelInitReady', this.editPanelInit)
bus.$off('onSubjectChange', this.editPanelInit)
clearInterval(this.timer)
this.timer = null
},
......@@ -541,6 +544,8 @@ export default {
clearCanvas() {
this.$store.commit('setComponentData', [])
this.$store.commit('recordSnapshot', 'clearCanvas')
bus.$emit('change_panel_right_draw', false)
this.$store.commit('setCurComponent', { component: null, index: null })
},
handlePreviewChange() {
......@@ -560,6 +565,7 @@ export default {
this.close()
},
saveLinkage() {
this.$store.commit('canvasChange')
// 字段检查
for (const key in this.targetLinkageInfo) {
let subCheckCount = 0
......
......@@ -2,6 +2,7 @@
<div
:style="getOutStyleDefault(config.style)"
class="component component-outer"
:class="{'component-active': filterActive}"
@click="handleClick"
@mousedown="elementMouseDown"
>
......@@ -157,10 +158,13 @@ export default {
}
},
computed: {
filterActive() {
return this.curComponent && this.config.id === this.curComponent.id && this.config.type === 'custom'
},
chart() {
if (this.config.propValue?.viewId) {
const viewInfo = this.panelViewDetailsInfo[this.config.propValue.viewId];
return viewInfo?JSON.parse(viewInfo):null
const viewInfo = this.panelViewDetailsInfo[this.config.propValue.viewId]
return viewInfo ? JSON.parse(viewInfo) : null
}
return null
},
......@@ -354,12 +358,6 @@ export default {
.component {
position: absolute;
}
.component-outer {
transform: translate(0);
}
.component-outer:hover {
box-shadow: 0px 0px 3px #0a7be0;
}
.gap_class {
padding: 5px;
......@@ -374,7 +372,6 @@ export default {
.main_view {
position: relative;
background-size: 100% 100% !important;
z-index: 1;
}
.component {
......@@ -388,4 +385,12 @@ export default {
width: 100% !important;
height: 100% !important;
}
.component-outer {
transform: translate(0);
}
.component-active {
z-index: 1;
}
</style>
......@@ -126,7 +126,7 @@
:canvas-id="canvasId"
/>
<!-- 右击菜单 -->
<ContextMenu/>
<ContextMenu />
<!-- 对齐标线 -->
<span
......@@ -176,6 +176,7 @@ import _ from 'lodash'
import _jq from 'jquery'
import Background from '@/views/background/index'
import PointShadow from '@/components/deDrag/PointShadow'
import {hexColorToRGBA} from "@/views/chart/chart/util";
// let positionBox = []
// let coordinates = [] // 坐标点集合
......@@ -984,8 +985,9 @@ export default {
...style
}
} else if (this.canvasStyleData.panel.backgroundType === 'color') {
const colorRGBA = hexColorToRGBA(this.canvasStyleData.panel.color, this.canvasStyleData.panel.alpha === undefined ? 100 : this.canvasStyleData.panel.alpha)
style = {
background: this.canvasStyleData.panel.color,
background: colorRGBA,
...style
}
}
......@@ -1142,7 +1144,7 @@ export default {
return this.$refs['wrapperChild']
},
getAllWrapperChildRefs() {
let allChildRefs = []
const allChildRefs = []
const currentChildRefs = this.getWrapperChildRefs()
if (currentChildRefs && currentChildRefs.length > 0) {
allChildRefs.push.apply(allChildRefs, currentChildRefs)
......
......@@ -82,10 +82,10 @@
/>
</span>
<span :title="$t('route.exportExcel')">
<svg-icon
<i
v-if="exportExcelShow"
style="color: white"
icon-class="file-excel"
style="line-height: 24px"
class="el-icon-document-delete"
@click.stop="exportExcelDownload()"
/>
</span>
......@@ -145,7 +145,7 @@
:target="curComponent.hyperlinks.openMode "
:href="curComponent.hyperlinks.content "
>
<i class="icon iconfont icon-com-jump"/>
<i class="icon iconfont icon-com-jump" />
</a>
</span>
......@@ -469,7 +469,7 @@ export default {
this.$emit('showViewDetails', { openType: openType })
},
exportExcelDownload() {
exportExcelDownload(this.chart, null, null, null, null, null)
exportExcelDownload(this.chart)
},
auxiliaryMatrixChange() {
if (this.curComponent.auxiliaryMatrix) {
......@@ -575,7 +575,7 @@ export default {
.bar-main {
position: absolute;
float: right;
z-index: 2;
z-index: 10;
border-radius: 2px;
padding-left: 3px;
padding-right: 0px;
......
<template>
<div @mousedown="fieldsAreaDown" class="field-main">
<div
class="field-main"
@mousedown="fieldsAreaDown"
>
<el-button
v-for="(field) in fields"
:key="field.id"
......
......@@ -120,7 +120,8 @@
icon="el-icon-plus"
round
@click="addLinkageField(null,null)"
>追加联动依赖字段</el-button>
>追加联动依赖字段
</el-button>
</el-row>
<!-- <el-button slot="reference">T</el-button>-->
......@@ -132,8 +133,9 @@
</template>
<script>
import { mapState } from 'vuex'
import { checkSameDataSet } from '@/api/chart/chart'
import {mapState} from 'vuex'
import {checkSameDataSet} from '@/api/chart/chart'
export default {
props: {
......@@ -171,23 +173,25 @@ export default {
return this.targetLinkageInfo[this.curLinkageView.propValue.viewId]
},
...mapState([
'menuTop',
'menuLeft',
'menuShow',
'curComponent',
'componentData',
'canvasStyleData',
'linkageSettingStatus',
'targetLinkageInfo',
'curLinkageView'
'curLinkageView',
'panelViewDetailsInfo'
])
},
mounted() {
const _this = this
// 初始化映射关系 如果当前是相同的数据集且没有关联关系,则自动补充映射关系
checkSameDataSet(this.curLinkageView.propValue.viewId, this.element.propValue.viewId).then(res => {
const chartDetails = JSON.parse(this.panelViewDetailsInfo[this.curLinkageView.propValue.viewId])
const curCheckAllAxisStr = chartDetails.xaxis + chartDetails.xaxisExt + chartDetails.yaxis + chartDetails.yaxisExt
const targetChartDetails = JSON.parse(this.panelViewDetailsInfo[this.element.propValue.viewId])
const targetCheckAllAxisStr = targetChartDetails.xaxis + targetChartDetails.xaxisExt + targetChartDetails.yaxis + targetChartDetails.yaxisExt
if (res.data === 'YES' && this.linkageInfo.linkageFields.length === 0) {
this.sourceLinkageInfo.targetViewFields.forEach(item => {
this.addLinkageField(item.id, item.id)
if (curCheckAllAxisStr.includes(item.id)&&targetCheckAllAxisStr.includes(item.id)) {
this.addLinkageField(item.id, item.id)
}
})
}
})
......@@ -217,46 +221,48 @@ export default {
</script>
<style lang="scss" scoped>
.slot-class{
color: white;
}
.slot-class {
color: white;
}
.bottom {
margin-top: 20px;
text-align: center;
.bottom {
margin-top: 20px;
text-align: center;
}
.ellip{
/*width: 100%;*/
margin-left: 10px;
margin-right: 10px;
overflow: hidden;/*超出部分隐藏*/
white-space: nowrap;/*不换行*/
text-overflow:ellipsis;/*超出部分文字以...显示*/
background-color: #f7f8fa;
color: #3d4d66;
font-size: 12px;
line-height: 24px;
height: 24px;
border-radius: 3px;
}
}
.select-filed{
/*width: 100%;*/
margin-left: 10px;
margin-right: 10px;
overflow: hidden;/*超出部分隐藏*/
white-space: nowrap;/*不换行*/
text-overflow:ellipsis;/*超出部分文字以...显示*/
color: #3d4d66;
font-size: 12px;
line-height: 35px;
height: 35px;
border-radius: 3px;
}
::v-deep .el-popover{
height: 200px;
overflow: auto;
}
.ellip {
/*width: 100%;*/
margin-left: 10px;
margin-right: 10px;
overflow: hidden; /*超出部分隐藏*/
white-space: nowrap; /*不换行*/
text-overflow: ellipsis; /*超出部分文字以...显示*/
background-color: #f7f8fa;
color: #3d4d66;
font-size: 12px;
line-height: 24px;
height: 24px;
border-radius: 3px;
}
.select-filed {
/*width: 100%;*/
margin-left: 10px;
margin-right: 10px;
overflow: hidden; /*超出部分隐藏*/
white-space: nowrap; /*不换行*/
text-overflow: ellipsis; /*超出部分文字以...显示*/
color: #3d4d66;
font-size: 12px;
line-height: 35px;
height: 35px;
border-radius: 3px;
}
::v-deep .el-popover {
height: 200px;
overflow: auto;
}
</style>
......@@ -145,29 +145,32 @@
</template>
<script>
import { getStyle } from '@/components/canvas/utils/style'
import { mapState } from 'vuex'
import {getStyle} from '@/components/canvas/utils/style'
import {mapState} from 'vuex'
import ComponentWrapper from './ComponentWrapper'
import { changeStyleWithScale } from '@/components/canvas/utils/translate'
import { uuid } from 'vue-uuid'
import { deepCopy, imgUrlTrans } from '@/components/canvas/utils/utils'
import {changeStyleWithScale} from '@/components/canvas/utils/translate'
import {uuid} from 'vue-uuid'
import {deepCopy, imgUrlTrans} from '@/components/canvas/utils/utils'
import eventBus from '@/components/canvas/utils/eventBus'
import elementResizeDetectorMaker from 'element-resize-detector'
import CanvasOptBar from '@/components/canvas/components/editor/CanvasOptBar'
import bus from '@/utils/bus'
import { buildFilterMap, buildViewKeyMap, formatCondition, valueValid, viewIdMatch } from '@/utils/conditionUtil'
import { hasDataPermission } from '@/utils/permission'
import { activeWatermark } from '@/components/canvas/tools/watermark'
import { proxyUserLoginInfo, userLoginInfo } from '@/api/systemInfo/userLogin'
import {buildFilterMap, buildViewKeyMap, formatCondition, valueValid, viewIdMatch} from '@/utils/conditionUtil'
import {hasDataPermission} from '@/utils/permission'
import {activeWatermark} from '@/components/canvas/tools/watermark'
import {proxyUserLoginInfo, userLoginInfo} from '@/api/systemInfo/userLogin'
import html2canvas from 'html2canvasde'
import { queryAll } from '@/api/panel/pdfTemplate'
import {queryAll} from '@/api/panel/pdfTemplate'
import PDFPreExport from '@/views/panel/export/PDFPreExport'
import { listenGlobalKeyDownPreview } from '@/components/canvas/utils/shortcutKey'
import {listenGlobalKeyDownPreview} from '@/components/canvas/utils/shortcutKey'
import UserViewDialog from '@/components/canvas/customComponent/UserViewDialog'
import {hexColorToRGBA} from "@/views/chart/chart/util";
import {isMobile} from '@/utils/index'
const erd = elementResizeDetectorMaker()
export default {
components: { UserViewDialog, ComponentWrapper, CanvasOptBar, PDFPreExport },
components: {UserViewDialog, ComponentWrapper, CanvasOptBar, PDFPreExport},
model: {
prop: 'show',
event: 'change'
......@@ -204,14 +207,14 @@ export default {
componentData: {
type: Array,
required: false,
default: function() {
default: function () {
return []
}
},
canvasStyleData: {
type: Object,
required: false,
default: function() {
default: function () {
return {}
}
},
......@@ -343,8 +346,9 @@ export default {
background: `url(${imgUrlTrans(styleInfo.imageUrl)}) no-repeat`
}
} else if (styleInfo.backgroundType === 'color') {
const colorRGBA = hexColorToRGBA(styleInfo.color, styleInfo.alpha === undefined ? 100 : styleInfo.alpha)
style = {
background: styleInfo.color
background: colorRGBA
}
} else {
style = {
......@@ -459,7 +463,7 @@ export default {
return this.$refs['viewWrapperChild']
},
getAllWrapperChildRefs() {
let allChildRefs = []
const allChildRefs = []
const currentChildRefs = this.getWrapperChildRefs()
if (currentChildRefs && currentChildRefs.length > 0) {
allChildRefs.push.apply(allChildRefs, currentChildRefs)
......@@ -621,9 +625,8 @@ export default {
return -1
},
_isMobile() {
const flag = navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i)
const flag = isMobile()
this.terminal = flag ? 'mobile' : 'pc'
// this.terminal = 'mobile'
},
canvasStyleDataInit() {
// 数据刷新计时器
......@@ -646,7 +649,7 @@ export default {
},
clearAllLinkage() {
this.$store.commit('clearPanelLinkageInfo')
bus.$emit('clear_panel_linkage', { viewId: 'all' })
bus.$emit('clear_panel_linkage', {viewId: 'all'})
},
changeStyleWithScale,
getStyle,
......@@ -705,13 +708,13 @@ export default {
},
exportViewImg() {
this.imageDownloading = true
this.$refs['userViewDialog-canvas-main'].exportViewImg(()=>{
this.$refs['userViewDialog-canvas-main'].exportViewImg(() => {
this.imageDownloading = false
})
},
deselectCurComponent(e) {
if (!this.isClickComponent) {
this.$store.commit('setCurComponent', { component: null, index: null })
this.$store.commit('setCurComponent', {component: null, index: null})
if (this.$refs?.['canvas-opt-bar']) {
this.$refs['canvas-opt-bar'].setWidgetStatus()
}
......
......@@ -5,7 +5,7 @@
trigger="click"
@mouseup="handleMouseUp"
>
<slot name="icon"/>
<slot name="icon" />
<el-dropdown-menu v-if="curComponent">
<el-dropdown-item
v-if="editFilter.includes(curComponent.type)"
......@@ -17,8 +17,7 @@
v-if="curComponent.type != 'custom-button'"
icon="el-icon-document-copy"
@click.native="copy"
><span>{{ $t('panel.copy') }}&nbsp(<span v-show="systemOS==='Mac'"><i class="icon iconfont icon-command"
/>+ D</span> <span v-show="systemOS!=='Mac'">Control + D</span>)</span>
><span>{{ $t('panel.copy') }}&nbsp;(<span v-show="systemOS==='Mac'"><i class="icon iconfont icon-command" />+ D</span> <span v-show="systemOS!=='Mac'">Control + D</span>)</span>
</el-dropdown-item>
<el-dropdown-item
icon="el-icon-delete"
......@@ -34,7 +33,7 @@
<el-dropdown-item v-if="!curComponent.auxiliaryMatrix">
<el-dropdown placement="right-start">
<span class="el-icon-copy-document">
{{ $t('panel.level') }} <i class="el-icon-arrow-right el-icon--right"/>
{{ $t('panel.level') }} <i class="el-icon-arrow-right el-icon--right" />
</span>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item
......@@ -93,13 +92,13 @@
<el-dropdown-item
v-if="curComponent.type != 'custom-button'"
@click.native="hyperlinksSet"
><i class="icon iconfont icon-chaolianjie1"/>{{ $t('panel.hyperlinks') }}
><i class="icon iconfont icon-chaolianjie1" />{{ $t('panel.hyperlinks') }}
</el-dropdown-item>
<el-dropdown-item
v-if="curComponent.type !== 'view' && !curComponent.auxiliaryMatrix"
@click.native="positionAdjust"
>
<i class="el-icon-map-location"/>
<i class="el-icon-map-location" />
{{ $t('panel.position_adjust') }}
</el-dropdown-item>
</el-dropdown-menu>
......@@ -180,7 +179,7 @@ import TabCarouselDialog from '@/components/canvas/components/editor/TabCarousel
import CustomTabsSort from '@/components/widget/deWidget/CustomTabsSort'
export default {
components: { CustomTabsSort, HyperlinksDialog,TabCarouselDialog },
components: { CustomTabsSort, HyperlinksDialog, TabCarouselDialog },
data() {
return {
tabCarouselVisible: false,
......@@ -193,7 +192,8 @@ export default {
'text',
'label',
'flow-map',
'bidirectional-bar'
'bidirectional-bar',
'race-bar'
],
linkageExcludeViewType: [
'richTextView',
......@@ -202,7 +202,8 @@ export default {
'text',
'label',
'flow-map',
'bidirectional-bar'
'bidirectional-bar',
'race-bar'
],
copyData: null,
hyperlinksSetVisible: false,
......
......@@ -66,8 +66,8 @@ export default {
}
},
onSubmit() {
this.curComponent.style.carouselEnable = this.carouselEnable
this.curComponent.style.switchTime = this.switchTime
this.curComponent.style.carouselEnable = this.carouselEnable
this.curComponent.style.switchTime = this.switchTime
this.$store.commit('canvasChange')
this.onClose()
},
......
<template>
<div>
<el-dropdown
trigger="click">
trigger="click"
>
<input
id="input"
ref="trackButton"
......
......@@ -45,7 +45,7 @@
class="info-class"
>
<span>{{ $t('panel.link_add_tips_pre') }}</span>
<i class="icon iconfont icon-chaolianjie"/>
<i class="icon iconfont icon-chaolianjie" />
<span>{{ $t('panel.web_add_tips_suf') }}</span>
</div>
</el-row>
......
......@@ -156,11 +156,11 @@ export default {
bus.$off('fieldSelect-' + this.element.propValue.viewId)
},
methods: {
changeRightDrawOpen(param){
if(param){
changeRightDrawOpen(param) {
if (param) {
this.drawLeft = 'auto!important'
this.drawRight = '380px'
}else{
} else {
this.drawLeft = 'none'
this.drawRight = 'auto'
}
......@@ -302,4 +302,3 @@ export default {
}
</style>
......@@ -33,7 +33,7 @@
class="info-stream-class"
>
<span>{{ $t('panel.link_add_tips_pre') }}</span>
<i class="icon iconfont icon-chaolianjie"/>
<i class="icon iconfont icon-chaolianjie" />
<span>{{ $t('panel.stream_media_add_tips') }}</span>
</div>
</el-row>
......
......@@ -27,7 +27,7 @@
class="info-class"
>
<span>{{ $t('panel.link_add_tips_pre') }}</span>
<i class="icon iconfont icon-chaolianjie"/>
<i class="icon iconfont icon-chaolianjie" />
<span>{{ $t('panel.video_add_tips') }}</span>
</div>
</el-row>
......
......@@ -35,6 +35,7 @@
:obj="{active, chart, trackMenu, searchCount, terminalType: scaleCoefficientType}"
:chart="chart"
:track-menu="trackMenu"
:in-screen="inScreen"
:search-count="searchCount"
:terminal-type="scaleCoefficientType"
:scale="scale"
......@@ -67,6 +68,7 @@
:scale="scale"
:theme-style="element.commonBackground"
:active="active"
:in-screen="inScreen"
@onChartClick="chartClick"
@onJumpClick="jumpClick"
/>
......@@ -431,18 +433,30 @@ export default {
const trackMenuInfo = []
let linkageCount = 0
let jumpCount = 0
this.chart.data && this.chart.data.fields && this.chart.data.fields.forEach(item => {
const sourceInfo = this.chart.id + '#' + item.id
if (this.drillFilters.length && !this.chart.type.includes('table')) {
const checkItem = this.drillFields[this.drillFilters.length]
const sourceInfo = this.chart.id + '#' + checkItem.id
if (this.nowPanelTrackInfo[sourceInfo]) {
linkageCount++
}
})
this.chart.data && this.chart.data.fields && this.chart.data.fields.forEach(item => {
const sourceInfo = this.chart.id + '#' + item.id
if (this.nowPanelJumpInfo[sourceInfo]) {
jumpCount++
}
})
} else {
this.chart.data && this.chart.data.fields && this.chart.data.fields.forEach(item => {
const sourceInfo = this.chart.id + '#' + item.id
if (this.nowPanelTrackInfo[sourceInfo]) {
linkageCount++
}
})
this.chart.data && this.chart.data.fields && this.chart.data.fields.forEach(item => {
const sourceInfo = this.chart.id + '#' + item.id
if (this.nowPanelJumpInfo[sourceInfo]) {
jumpCount++
}
})
}
jumpCount && trackMenuInfo.push('jump')
linkageCount && trackMenuInfo.push('linkage')
this.drillFields.length && trackMenuInfo.push('drill')
......@@ -620,7 +634,7 @@ export default {
},
exportViewImg() {
this.imageDownloading = true
this.$refs['userViewDialog'].exportViewImg(()=>{
this.$refs['userViewDialog'].exportViewImg(() => {
this.imageDownloading = false
})
},
......
......@@ -144,8 +144,9 @@ export default {
...style
}
} else if (this.canvasStyleData.panel.backgroundType === 'color') {
const colorRGBA = hexColorToRGBA(this.canvasStyleData.panel.color, this.canvasStyleData.panel.alpha === undefined ? 100 : this.canvasStyleData.panel.alpha)
style = {
background: this.canvasStyleData.panel.color,
background: colorRGBA,
...style
}
}
......@@ -224,7 +225,7 @@ export default {
}
})
}
const result = { ...temp, ...{ DetailAreaCode: DetailAreaCode } }
const result = { ...temp, ...{ DetailAreaCode: DetailAreaCode }}
this.setLastMapChart(result)
return result
}
......
......@@ -102,8 +102,9 @@ export default {
...style
}
} else if (this.canvasStyleData.panel.backgroundType === 'color') {
const colorRGBA = hexColorToRGBA(this.canvasStyleData.panel.color, this.canvasStyleData.panel.alpha === undefined ? 100 : this.canvasStyleData.panel.alpha)
style = {
background: this.canvasStyleData.panel.color,
background: colorRGBA,
...style
}
}
......
......@@ -123,7 +123,7 @@ export default {
if (data.type === 'view') {
chartCopy(data.propValue.viewId, state.panel.panelInfo.id).then(res => {
const newView = deepCopy(data)
Vue.set(newView, 'needAdaptor', needAdaptor)
Vue.set(newView, 'needAdaptor', store.state.multiplexingStyleAdapt ? needAdaptor : false)
newView.id = uuid.v1()
newView.propValue.viewId = res.data
newView['canvasId'] = data.canvasId
......@@ -131,7 +131,9 @@ export default {
if (newView.filters && newView.filters.length) {
newView.filters = []
}
needAdaptor && adaptCurThemeCommonStyle(newView)
if (needAdaptor && store.state.multiplexingStyleAdapt) {
adaptCurThemeCommonStyle(newView)
}
store.commit('addComponent', { component: newView })
})
} else if (data.type === 'de-tabs') {
......@@ -143,20 +145,24 @@ export default {
const newViewId = uuid.v1()
sourceAndTargetIds[item.content.propValue.viewId] = newViewId
item.content.propValue.viewId = newViewId
Vue.set(item.content, 'needAdaptor', needAdaptor)
Vue.set(item.content, 'needAdaptor', store.state.multiplexingStyleAdapt ? needAdaptor : false)
if (item.content.filters && item.content.filters.length) {
item.content.filters = []
}
}
})
chartBatchCopy({ 'sourceAndTargetIds': sourceAndTargetIds }, state.panel.panelInfo.id).then((rsp) => {
needAdaptor && adaptCurThemeCommonStyle(newCop,'copy')
if (needAdaptor && store.state.multiplexingStyleAdapt) {
adaptCurThemeCommonStyle(newCop, 'copy')
}
store.commit('addComponent', { component: newCop })
})
} else {
const newCop = deepCopy(data)
newCop.id = uuid.v1()
needAdaptor && adaptCurThemeCommonStyle(newCop,'copy')
if (needAdaptor && store.state.multiplexingStyleAdapt) {
adaptCurThemeCommonStyle(newCop, 'copy')
}
store.commit('addComponent', { component: newCop })
}
if (state.isCut) {
......
......@@ -32,8 +32,8 @@ const ignoreComponent = ['de-button', 'de-reset-button']
// 与组件状态无关的操作
const basemap = {
[vKey]: paste,
[yKey]: redo,
[zKey]: undo
[gKey]: redo,
[bKey]: undo,
}
// 组件未锁定状态下可以执行的操作
......@@ -41,8 +41,6 @@ const unlockMap = {
...basemap,
[cKey]: copy,
[xKey]: cut,
[gKey]: compose,
[bKey]: decompose,
[dKey]: copyAndPast,
[deleteKey]: deleteComponent,
[lKey]: lock,
......@@ -60,7 +58,7 @@ export function listenGlobalKeyDown() {
if (keyCode === ctrlKey || keyCode === commandKey) {
isCtrlOrCommandDown = true
} else if (isCtrlOrCommandDown) {
if (keyCode === zKey || keyCode === yKey || keyCode === dKey || keyCode === sKey || keyCode === enlargeKey) {
if (keyCode === bKey || keyCode === gKey || keyCode === dKey || keyCode === sKey || keyCode === enlargeKey) {
e.preventDefault()
e.stopPropagation()
unlockMap[keyCode]()
......
......@@ -127,7 +127,13 @@ export const customAttrTrans = {
],
'tooltip': {
'textStyle': ['fontSize']
}
},
'slider': [
'fontSize'
],
'graphic': [
'fontSize'
]
}
export const customStyleTrans = {
'text': ['fontSize'],
......@@ -375,7 +381,7 @@ export function adaptCurTheme(customStyle, customAttr, chartType) {
}
}
export function adaptCurThemeCommonStyle(component,adaptFrom = 'them') {
export function adaptCurThemeCommonStyle(component, adaptFrom = 'them') {
const commonStyle = store.state.canvasStyleData.chartInfo.chartCommonStyle
for (const key in commonStyle) {
Vue.set(component.commonBackground, key, commonStyle[key])
......@@ -383,9 +389,9 @@ export function adaptCurThemeCommonStyle(component,adaptFrom = 'them') {
if (isFilterComponent(component.component)) {
const filterStyle = store.state.canvasStyleData.chartInfo.filterStyle
for (const styleKey in filterStyle) {
if(adaptFrom === 'copy'){
if (adaptFrom === 'copy') {
Vue.set(component.style, styleKey, filterStyle[styleKey])
}else if (adaptFrom === 'them' && styleKey !== 'horizontal' && styleKey !== 'vertical') {
} else if (adaptFrom === 'them' && styleKey !== 'horizontal' && styleKey !== 'vertical') {
// 主题变化位置属性不修改
Vue.set(component.style, styleKey, filterStyle[styleKey])
}
......
......@@ -97,6 +97,8 @@ export function panelDataPrepare(componentData, componentStyle, callback) {
componentStyle.themeId = (componentStyle.themeId || 'NO_THEME')
componentStyle.panel.themeColor = (componentStyle.panel.themeColor || 'light')
componentStyle.panel.mobileSetting = (componentStyle.panel.mobileSetting || deepCopy(MOBILE_SETTING))
componentStyle.panel.mobileSetting.alpha = (componentStyle.panel.mobileSetting.alpha === undefined ? 100 : componentStyle.panel.mobileSetting.alpha)
componentStyle.panel.alpha = (componentStyle.panel.alpha === undefined ? 100 : componentStyle.panel.alpha)
// 主题增加组件背景设置
if (componentStyle.chartCommonStyle) {
......@@ -219,7 +221,7 @@ export function checkViewTitle(opt, id, tile) {
}
}
export function exportImg(imgName,callback) {
export function exportImg(imgName, callback) {
const canvasID = document.getElementById('chartCanvas')
const a = document.createElement('a')
html2canvas(canvasID).then(canvas => {
......@@ -385,12 +387,12 @@ export function insertBatchTreeNode(nodeInfoArray, tree) {
export function updateCacheTree(opt, treeName, nodeInfoFull, tree) {
const nodeInfo = deepCopy(nodeInfoFull)
if( nodeInfo instanceof Array){
nodeInfo.forEach(item=>{
if (nodeInfo instanceof Array) {
nodeInfo.forEach(item => {
delete item.panelData
delete item.panelStyle
})
}else{
} else {
delete nodeInfo.panelData
delete nodeInfo.panelStyle
}
......@@ -429,7 +431,10 @@ export function getCacheTree(treeName) {
}
export function exportExcelDownload(chart, snapshot, width, height, loadingWrapper, callBack) {
if (!chart.data?.data?.length) {
if (chart.render === 'antv' && !chart.data?.data?.length) {
return
}
if (chart.type === 'echarts' && !(chart.data?.series?.length && chart.data?.series[0].data?.length)) {
return
}
const fields = JSON.parse(JSON.stringify(chart.data.fields))
......
......@@ -47,7 +47,7 @@ export default {
data() {
return {
asideHidden: false,
currentWidth: '',
currentWidth: ''
}
},
computed: {
......
......@@ -66,7 +66,7 @@
@mousedown.stop.prevent="handleDown(handlei, $event)"
@touchstart.stop.prevent="handleTouchDown(handlei, $event)"
>
<slot :name="handlei"/>
<slot :name="handlei" />
</div>
<div
:id="componentCanvasId"
......@@ -74,22 +74,22 @@
class="main-background"
>
<div
v-show="!this.element.editing"
v-show="!element.editing"
class="de-drag-area de-drag-top"
@mousedown="elementMouseDown"
/>
<div
v-show="!this.element.editing && this.element.type !=='de-tabs'"
v-show="!element.editing && element.type !=='de-tabs'"
class="de-drag-area de-drag-right"
@mousedown="elementMouseDown"
/>
<div
v-show="!this.element.editing && this.element.type !=='de-tabs'"
v-show="!element.editing && element.type !=='de-tabs'"
class="de-drag-area de-drag-bottom"
@mousedown="elementMouseDown"
/>
<div
v-show="!this.element.editing && this.element.type !=='de-tabs'"
v-show="!element.editing && element.type !=='de-tabs'"
class="de-drag-area de-drag-left"
@mousedown="elementMouseDown"
/>
......@@ -99,7 +99,7 @@
class="svg-background"
:icon-class="mainSlotSvgInner"
/>
<slot/>
<slot />
</div>
</div>
</div>
......
......@@ -6,7 +6,16 @@
class="item-axis"
@close="removeItem"
>
{{ item.name }}
<el-tooltip
v-if="toolTip"
class="item"
effect="dark"
:content="toolTip || item.name"
placement="top"
>
<span>{{ item.name }}</span>
</el-tooltip>
<span v-else>{{ item.name }}</span>
</el-tag>
</span>
</template>
......@@ -22,6 +31,11 @@ export default {
index: {
type: Number,
required: true
},
toolTip: {
type: String,
required: false,
default: ''
}
},
......
......@@ -410,7 +410,7 @@ export default {
},
_filterFun(value, data, node) {
if (!value) return true
return data[this.propsLabel].indexOf(value) !== -1
return data[this.propsLabel?.toLocaleUpperCase()].indexOf(value.toLocaleUpperCase()) !== -1
},
_treeNodeClickFun(data, node, vm) {
const { multiple } = this.selectParams
......
......@@ -121,7 +121,7 @@ export default {
},
keyWord(val, old) {
if (val === old) return
const results = val ? this.list.filter(item => item.text.includes(val)) : null
const results = val ? this.vagueFilter(val, this.list) : null
this.resetList(results)
this.reCacularHeight()
this.$nextTick(() => {
......@@ -136,6 +136,11 @@ export default {
})
},
methods: {
vagueFilter(val, nodes) {
if (!val || !val.trim()) return nodes
const results = nodes.filter(item => item.text?.toLocaleUpperCase().includes(val.toLocaleUpperCase()))
return results
},
resetSelectAll() {
this.selectAll = false
},
......@@ -148,7 +153,7 @@ export default {
selectAllChange(val) {
let vals = val ? [...this.list.map(ele => ele.id)] : []
if (this.keyWord.trim() && val) {
vals = this.list.filter(item => item.text.includes(this.keyWord.trim())).map(ele => ele.id)
vals = this.vagueFilter(this.keyWord.trim(), this.list).map(ele => ele.id)
}
this.visualChange(vals)
this.selectValue = vals
......@@ -233,14 +238,14 @@ export default {
isAllSelect() {
let vals = this.list.length
if (this.keyWord.trim()) {
vals = this.list.filter(item => item.text.includes(this.keyWord.trim())).map(ele => ele.id).filter(ele => this.selectValue.includes(ele)).length
vals = this.vagueFilter(this.keyWord.trim(), this.list).map(ele => ele.id).filter(ele => this.selectValue.includes(ele)).length
}
return vals
},
halfSelect() {
let vals = this.list.length
if (this.keyWord.trim()) {
vals = this.list.filter(item => item.text.includes(this.keyWord.trim())).map(ele => ele.id).length
vals = this.vagueFilter(this.keyWord.trim(), this.list).map(ele => ele.id).length
}
return vals
},
......
......@@ -42,7 +42,7 @@ export default {
})
},
withLink(options, confirmButtonTextInfo) {
const h = this.$createElement;
const h = this.$createElement
const that = this
const { title, content, type = 'danger', cb, confirmButtonText = confirmButtonTextInfo || this.$t('commons.delete'), showCancelButton = true, cancelButtonText = this.$t('commons.cancel'), cancelCb = () => {}, finallyCb = () => {}, link = '', templateDel, linkTo } = options
const customClass = `de-confirm de-confirm-fail de-use-html`
......@@ -55,14 +55,14 @@ export default {
title,
content,
link
},
}
},
on: {
change: () => {
linkTo()
}
}
}),
})
]),
duration: 0,
confirmButtonText,
......@@ -71,18 +71,18 @@ export default {
cancelButtonClass: 'de-confirm-btn de-confirm-plain-cancel',
confirmButtonClass,
customClass,
iconClass: 'el-icon-warning',
iconClass: 'el-icon-warning'
}).then(action => {
if ('confirm' === action) {
if (action === 'confirm') {
cb()
}
})
.catch((action) => {
cancelCb(action)
})
.finally(() => {
finallyCb()
})
.catch((action) => {
cancelCb(action)
})
.finally(() => {
finallyCb()
})
}
}
}
......@@ -27,6 +27,10 @@ export default {
type: Boolean,
default: true
},
canvasStyleData:{
type: Object,
default: {}
},
size: String
},
......@@ -45,10 +49,7 @@ export default {
}
}
return false
},
...mapState([
'canvasStyleData'
])
}
},
created() {
......
......@@ -60,7 +60,8 @@ export default {
values: null,
onFocus: false,
show: true,
timer: null
outTimer: null,
innerTimer: null
}
},
computed: {
......@@ -134,12 +135,7 @@ export default {
},
watch: {
canvasStyleData: {
handler(newVal, oldVla) {
this.canvasStyleDataInit()
},
deep: true
},
'viewIds': function(value, old) {
if (typeof value === 'undefined' || value === old) return
this.setCondition()
......@@ -174,7 +170,9 @@ export default {
},
created() {
this.loadInit()
this.canvasStyleDataInit()
this.$nextTick(() => {
this.dynamicRefresh()
})
},
mounted() {
bus.$on('onScroll', this.onScroll)
......@@ -183,18 +181,14 @@ export default {
}
},
beforeDestroy() {
this.timer && clearInterval(this.timer)
this.clearTime()
bus.$off('onScroll', this.onScroll)
bus.$off('reset-default-value', this.resetDefaultValue)
},
methods: {
loadInit() {
if (this.element.options.attrs.default && this.element.options.attrs.default.isDynamic) {
if (this.element.options.attrs.default) {
const widget = ApplicationContext.getService(this.element.serviceName)
this.values = widget.dynamicDateFormNow(this.element)
this.dateChange(this.values)
}
this.clearTime()
if (this.refreshHandler()) {
return
}
if (this.element.options.value) {
......@@ -202,22 +196,42 @@ export default {
this.dateChange(this.values)
}
},
canvasStyleDataInit() {
if (this.inDraw && this.canvasStyleData.refreshViewEnable && this.element.options.attrs.default && this.element.options.attrs.default.isDynamic) {
this.searchCount = 0
this.timer && clearInterval(this.timer)
let refreshTime = 300000
if (this.canvasStyleData.refreshTime && this.canvasStyleData.refreshTime > 0) {
if (this.canvasStyleData.refreshUnit === 'second') {
refreshTime = this.canvasStyleData.refreshTime * 1000
} else {
refreshTime = this.canvasStyleData.refreshTime * 60000
refreshHandler() {
if (this.element.options.attrs.default?.isDynamic) {
const widget = ApplicationContext.getService(this.element.serviceName)
this.values = widget.dynamicDateFormNow(this.element)
this.dateChange(this.values)
return true
}
return false
},
clearTime() {
if (this.outTimer) {
clearTimeout(this.outTimer)
this.outTimer = null
}
if (this.innerTimer) {
clearInterval(this.innerTimer)
this.innerTimer = null
}
},
dynamicRefresh() {
if (this.inDraw && this.element.options.attrs.default?.isDynamic) {
const nowDate = new Date()
const nowTime = nowDate.getTime()
const tomorrow = new Date(`${nowDate.getFullYear()}-${nowDate.getMonth() + 1}-${nowDate.getDate() + 1} 00:00:01`)
const tomorrowTime = tomorrow.getTime()
this.clearTime()
this.outTimer = setTimeout(() => {
if (this.inDraw) {
this.refreshHandler()
}
}
this.timer = setInterval(() => {
this.loadInit()
this.searchCount++
}, refreshTime)
this.innerTimer = setInterval(() => {
if (this.inDraw) {
this.refreshHandler()
}
}, 24 * 3600 * 1000)
}, tomorrowTime - nowTime)
}
},
clearHandler() {
......
......@@ -27,6 +27,10 @@ export default {
type: Boolean,
default: true
},
canvasStyleData:{
type: Object,
default: {}
},
size: String
},
data() {
......@@ -44,11 +48,7 @@ export default {
}
}
return false
},
...mapState([
'canvasStyleData'
])
}
},
created() {
},
......
......@@ -16,8 +16,8 @@
:key-word="keyWord"
popper-class="coustom-de-select"
:list="data"
@resetKeyWords="filterMethod"
:custom-style="customStyle"
@resetKeyWords="filterMethod"
@change="changeValue"
@focus="setOptionWidth"
@blur="onBlur"
......
......@@ -31,7 +31,7 @@
v-model="value"
@change="handleCheckedChange"
>
<template v-for="item in data.filter(node => !keyWord || (node.id && node.id.includes(keyWord)))">
<template v-for="item in data.filter(node => !keyWord || (node.id && node.id.toLocaleUpperCase().includes(keyWord.toLocaleUpperCase())))">
<el-checkbox
:key="item.id"
:label="item.id"
......@@ -51,7 +51,7 @@
@change="changeRadioBox"
>
<el-radio
v-for="(item, index) in data.filter(node => !keyWord || (node.id && node.id.includes(keyWord)))"
v-for="(item, index) in data.filter(node => !keyWord || (node.id && node.id.toLocaleUpperCase().includes(keyWord.toLocaleUpperCase())))"
:key="index"
:label="item.id"
@click.native.prevent="testChange(item)"
......
......@@ -381,7 +381,7 @@ export default {
_filterFun(value, data, node) {
if (!value) return true
return data.id.toString().indexOf(value.toString()) !== -1
return data.id.toString().toLocaleUpperCase().indexOf(value.toString().toLocaleUpperCase()) !== -1
},
// 树点击
_nodeClickFun(data, node, vm) {
......
......@@ -75,8 +75,8 @@
style="width: 100%;height:100%"
>
<Preview
:component-data="tabCanvasComponentData(item.name)"
:ref="'canvasTabRef-'+item.name"
:component-data="tabCanvasComponentData(item.name)"
:canvas-style-data="canvasStyleData"
:canvas-id="element.id+'-'+item.name"
:panel-info="panelInfo"
......@@ -313,9 +313,9 @@ export default {
return Boolean(this.$store.state.dragComponentInfo)
},
headClass() {
if(this.tabsAreaScroll){
if (this.tabsAreaScroll) {
return 'tab-head-left'
}else{
} else {
return 'tab-head-' + this.element.style.headPosition
}
},
......@@ -464,7 +464,7 @@ export default {
bus.$on('add-new-tab', this.addNewTab)
this.$nextTick(() => {
this.activeTabName = this.element.options.tabList[0].name
});
})
this.$store.commit('setTabActiveTabNameMap', { tabId: this.element.id, activeTabName: this.activeTabName })
this.setContentThemeStyle()
},
......@@ -476,12 +476,12 @@ export default {
bus.$off('add-new-tab', this.addNewTab)
},
methods: {
calcTabLength(){
this.$nextTick(()=>{
if(this.element.options.tabList.length>1){
const containerDom = document.getElementById("tab-"+this.element.options.tabList[this.element.options.tabList.length -1].name)
calcTabLength() {
this.$nextTick(() => {
if (this.element.options.tabList.length > 1) {
const containerDom = document.getElementById('tab-' + this.element.options.tabList[this.element.options.tabList.length - 1].name)
this.tabsAreaScroll = containerDom.parentNode.scrollWidth > containerDom.parentNode.parentNode.scrollWidth
}else{
} else {
this.tabsAreaScroll = false
}
})
......@@ -490,7 +490,7 @@ export default {
return this.element.type
},
getWrapperChildRefs() {
let refsSubAll = []
const refsSubAll = []
const _this = this
this.element.options.tabList.forEach(tabItem => {
const refsSub = _this.$refs['canvasTabRef-' + tabItem.name]
......@@ -530,7 +530,7 @@ export default {
if (targetRef) {
targetRef[0]?.restore()
}
});
})
}, switchTime)
}
},
......
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1692694613325" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1741" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M470.896845 960.26624L491.172045 495.616h33.50528c0.32768 2.37568 1.06496 5.12 1.14688 7.82336 2.33472 54.23104 4.5056 108.50304 6.92224 162.77504 3.2768 74.62912 6.67648 149.25824 9.99424 223.88736 1.024 23.3472 2.12992 46.6944 2.6624 70.12352h260.096a21.2992 21.2992 0 0 1 0 42.63936H208.220365a21.2992 21.2992 0 0 1 0-42.63936h262.71744zM919.941325 385.024c9.4208 87.2448-6.9632 169.3696-49.11104 246.29248a415.00672 415.00672 0 0 1-95.51872 116.08064c-1.18784 0.98304-2.41664 1.8432-4.42368 3.31776-78.06976-86.58944-156.13952-173.056-233.34912-258.62144l28.4672-28.18048c7.04512 7.7824 15.19616 16.384 22.85568 25.3952 4.5056 5.36576 9.17504 7.41376 16.42496 6.06208 16.22016-2.94912 32.64512-4.5056 48.90624-7.33184 5.07904-0.90112 7.24992 0.4096 9.58464 4.7104a25050.3168 25050.3168 0 0 0 70.8608 129.8432c0.90112 1.76128 2.048 3.56352 4.17792 7.168 10.32192-15.11424 20.56192-28.59008 29.16352-43.008 32.07168-53.8624 45.09696-112.35328 41.24672-174.73536-0.32768-4.99712-1.024-9.95328-1.18784-14.9504-0.2048-4.5056 2.08896-7.45472 6.79936-7.90528 4.5056-0.49152 7.90528 1.31072 8.64256 5.89824 1.10592 6.84032 1.92512 13.76256 2.21184 20.6848 3.72736 84.62336-21.25824 159.58016-75.776 224.58368-1.47456 1.67936-2.4576 5.40672-1.55648 7.04512 11.6736 22.1184 23.7568 43.95008 35.75808 65.82272 0.24576 0.53248 0.8192 0.98304 2.70336 3.19488 13.68064-16.09728 27.60704-31.00672 39.85408-47.18592a389.12 389.12 0 0 0 76.3904-187.10528 380.3136 380.3136 0 0 0 0.6144-95.51872c-0.77824-6.30784 1.88416-10.77248 6.79936-11.4688 5.12-0.73728 8.68352 3.15392 9.46176 9.91232zM344.740045 811.95008a173.21984 173.21984 0 0 1-23.63392-10.81344C205.680845 740.18816 133.755085 645.81632 104.386765 518.84032c-0.98304-4.21888-1.35168-8.56064-2.4576-12.77952-1.10592-3.97312 0.28672-5.24288 4.13696-6.02112 40.5504-8.51968 81.01888-17.2032 121.52832-25.92768 69.79584-14.90944 139.55072-29.85984 209.34656-44.72832 2.08896-0.4096 4.17792-0.69632 5.5296-0.94208 3.2768 12.94336 6.30784 25.3952 9.58464 38.58432-9.37984 2.048-19.98848 4.79232-30.80192 6.47168-8.6016 1.39264-13.76256 5.07904-16.71168 13.7216-4.9152 14.58176-11.4688 28.672-16.67072 43.08992-2.12992 5.85728-5.07904 7.12704-10.97728 6.9632-48.00512-1.39264-96.01024-2.4576-143.9744-3.60448H224.809165c2.21184 5.77536 3.85024 10.6496 5.89824 15.36 31.3344 73.60512 83.47648 127.01696 156.30336 160.19456a18.35008 18.35008 0 0 1 7.9872 7.70048c0.8192 1.51552-1.06496 6.22592-2.82624 7.04512-2.8672 1.31072-7.3728 1.88416-10.07616 0.53248-16.54784-8.51968-33.5872-16.50688-49.07008-26.74688-58.9824-39.07584-100.02432-92.44672-123.65824-159.1296-1.10592-3.15392-2.00704-5.85728-6.38976-5.9392-24.9856-0.36864-49.9712-1.024-74.9568-1.51552-1.024 0-2.048 0.32768-4.25984 0.73728 4.38272 13.5168 8.02816 26.86976 12.98432 39.77216 39.936 103.75168 110.71488 178.5856 211.92704 224.62464 2.4576 1.14688 5.7344 2.58048 6.63552 4.66944 1.10592 2.58048 1.26976 7.5776-0.28672 8.76544-2.58048 2.048-7.33184 3.2768-10.24 2.21184zM273.141965 114.0736c-4.25984 2.74432-8.192 4.13696-12.288 0.2048-4.01408-3.80928-2.70336-9.4208 2.99008-13.59872A404.76672 404.76672 0 0 1 379.637965 40.79616c88.6784-28.83584 177.11104-27.648 265.33888 2.17088 2.4576 0.8192 4.7104 1.92512 7.49568 3.072l-107.43808 331.85792c-13.02528-3.6864-25.31328-7.29088-38.42048-11.0592 3.072-9.70752 6.06208-20.56192 10.07616-31.00672 3.072-7.86432 1.67936-13.76256-3.6864-20.15232-11.4688-13.59872-22.28224-27.8528-33.5872-42.1888l82.90304-136.15104c-10.15808-1.31072-19.0464-2.99008-28.0576-3.64544-71.8848-5.3248-137.74848 12.04224-197.26336 52.92032-3.23584 2.17088-6.144 5.3248-9.70752 6.38976a12.65664 12.65664 0 0 1-9.74848-1.55648c-3.4816-2.6624-3.03104-6.9632-0.12288-10.4448 1.06496-1.31072 2.62144-2.33472 3.97312-3.2768 62.464-45.056 132.21888-65.08544 208.97792-60.57984 11.8784 0.69632 23.63392 3.19488 35.47136 4.42368 2.4576 0.2048 6.3488-0.8192 7.45472-2.6624 13.63968-21.7088 26.86976-43.6224 40.18176-65.536 0.28672-0.49152 0.28672-1.2288 0.65536-2.99008-9.6256-2.2528-19.16928-4.9152-28.79488-6.7584C489.697485 25.8048 399.175885 40.1408 314.183885 87.6544c-14.17216 7.86432-27.4432 17.44896-41.04192 26.46016zM508.457165 387.072a45.38368 45.38368 0 0 1 45.056 45.8752 44.8512 44.8512 0 0 1-45.75232 44.97408 45.2608 45.2608 0 0 1-44.97408-45.30176c0.08192-25.02656 21.01248-45.8752 45.6704-45.54752z" fill="#999999" p-id="1742"></path></svg>
\ No newline at end of file
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1692694566282" class="icon" viewBox="0 0 1445 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5461" xmlns:xlink="http://www.w3.org/1999/xlink" width="282.2265625" height="200"><path d="M418.635294 231.062588c3.132235 11.023059 5.782588 21.504 8.914824 32.527059-13.673412 12.528941-27.708235 25.660235-41.381647 38.791529l-207.510589 1.566118-64.993882-39.875765-6.264471-34.575058c54.994824 0 108.423529 0.542118 160.828236 0.542117 50.838588 0.481882 101.195294 0.481882 150.407529 1.024z m-17.287529-66.078117c5.240471 18.371765 9.938824 37.225412 14.637176 56.139294-48.730353-0.542118-99.026824-0.542118-150.347294-1.084236-52.404706-0.542118-105.291294-1.024-159.804235-1.024-3.614118-20.48-7.348706-40.357647-11.023059-59.753411l158.298353 3.132235c50.236235 0.542118 99.990588 1.566118 148.239059 2.590118zM134.625882 81.136941c67.584 2.650353 133.662118 4.698353 198.053647 6.806588 19.395765 12.589176 38.791529 24.696471 58.187295 36.74353 2.590118 10.420706 5.240471 20.419765 7.830588 30.900706-48.188235-1.084235-97.400471-2.108235-148.239059-3.132236-51.380706-1.084235-103.725176-2.108235-157.696-3.674353-2.168471-10.480941-3.734588-21.504-5.782588-32.527058l47.585882-35.117177z m581.632 151.491765c3.132235 10.480941 6.806588 20.48 9.999059 30.900706-10.541176 11.565176-22.046118 23.672471-33.008941 35.719529l-180.826353 1.566118c-19.877647-12.047059-39.815529-24.696471-59.753412-37.285647-2.590118-10.962824-5.722353-21.443765-8.432941-32.466824 47.766588 0.542118 94.388706 0.542118 139.986824 1.084236 44.574118 0 89.088 0.481882 132.035764 0.481882z m-20.961882-61.861647c5.782588 17.829647 12.047059 35.117176 17.829647 53.007059-43.008-0.602353-86.979765-1.084235-132.035765-1.084236L441.705412 221.063529c-5.240471-18.371765-9.938824-37.225412-15.23953-55.597176 47.164235 1.084235 93.304471 2.108235 138.360471 2.590118 44.574118 1.084235 88.064 2.168471 130.469647 2.650353zM454.174118 92.641882l174.019764 6.324706c18.311529 11.023059 36.141176 22.528 54.452706 34.032941 3.132235 9.456941 6.324706 19.456 9.999059 28.912942-43.008-0.602353-86.497882-1.626353-130.529882-2.650353L423.875765 156.009412c-2.590118-9.938824-5.240471-20.419765-8.432941-30.358588 13.131294-11.565176 26.262588-22.588235 38.791529-33.069177z m524.047058 142.095059c3.614118 9.456941 7.830588 19.395765 11.444706 28.792471-8.854588 11.023059-17.227294 22.588235-26.142117 33.611294l-159.322353 1.566118c-18.311529-12.047059-36.623059-23.612235-55.536941-35.177412-3.614118-10.420706-6.806588-20.419765-10.480942-30.358588 41.923765 0 83.365647 0.542118 123.181177 0.542117 39.755294 0.481882 78.546824 0.481882 116.85647 1.024z m-23.130352-58.187294c6.324706 16.263529 13.131294 33.008941 19.395764 49.272471-37.707294 0-76.980706-0.542118-116.254117-1.024-40.357647 0-81.257412-0.542118-123.181177-1.084236-5.782588-17.287529-11.504941-35.117176-17.829647-52.404706 41.381647 1.024 82.281412 1.566118 122.096941 2.590118 39.333647 1.084235 77.583059 1.626353 115.772236 2.650353z m-219.497412-73.908706c52.404706 2.048 103.725176 3.614118 154.081882 5.722353l50.778353 32.045177c3.674353 9.396706 7.348706 18.311529 11.023059 27.226353-37.767529-0.542118-76.016941-1.566118-115.290353-2.650353-39.815529-0.481882-80.715294-1.566118-121.554824-2.590118-3.614118-9.456941-6.806588-19.395765-9.938823-28.852706l30.900706-30.900706z m78.607059 349.665883H813.176471a2767.932235 2767.932235 0 0 1-19.877647-58.729412l72.884705-2.108236a357.376 357.376 0 0 0-51.922823 60.837648z m-4.216471-137.336471c54.512941-0.602353 107.399529-1.626353 159.322353-2.108235l9.938823 6.26447c-37.225412 15.239529-71.800471 36.141176-102.159058 62.403765l-87.521883 2.590118c-3.614118-10.962824-7.348706-21.985882-10.480941-32.527059 10.480941-12.528941 20.961882-24.576 30.900706-36.683294zM793.298824 463.811765l4.698352 14.155294c-11.023059 19.937882-20.48 40.96-27.76847 62.945882-60.777412 3.614118-123.120941 7.830588-187.572706 12.047059-20.961882-13.131294-41.923765-26.202353-63.427765-39.333647a3015.619765 3015.619765 0 0 0-9.396706-36.743529c49.754353-2.590118 98.484706-4.638118 146.130824-6.806589 46.682353-2.048 92.762353-4.156235 137.336471-6.26447z m-23.070118-69.210353c6.806588 19.456 13.071059 38.791529 19.877647 58.729412-45.056 2.108235-90.593882 3.674353-137.216 5.782588-47.706353 2.108235-96.436706 4.698353-146.251294 6.806588-5.722353-20.961882-11.023059-41.923765-16.745412-62.885647l144.624941-4.758588c46.140235-1.024 91.738353-2.590118 135.710118-3.614118z m-252.566588-76.498824c61.861647-0.542118 122.096941-1.084235 181.308235-2.108235 18.853647 12.047059 38.249412 24.094118 57.103059 36.141176 3.674353 10.541176 7.348706 21.504 11.023059 32.527059-44.574118 1.084235-89.630118 2.108235-135.710118 3.614118-47.164235 1.084235-95.412706 2.710588-144.143059 4.21647l-9.396706-34.575058 39.755294-39.81553zM483.087059 477.967059c3.132235 12.047059 6.264471 24.696471 9.456941 36.743529-13.673412 15.661176-28.310588 30.900706-42.465882 46.622118-70.776471 4.698353-143.540706 9.456941-218.533647 14.155294-22.528-14.155294-45.537882-28.310588-68.668236-42.465882a1056.105412 1056.105412 0 0 0-7.228235-39.333647 55901.967059 55901.967059 0 0 0 327.499294-15.721412z m-19.395765-73.908706c5.782588 20.48 11.023059 41.441882 16.745412 62.885647-51.802353 2.108235-104.207059 4.758588-158.177882 7.348706-55.055059 2.108235-111.134118 4.758588-168.719059 7.348706-4.216471-22.528-8.432941-45.056-12.047059-67.584 56.560941-1.626353 112.037647-3.734588 166.068706-5.300706a82444.047059 82444.047059 0 0 0 156.129882-4.698353zM182.332235 322.861176c71.258353-1.024 140.348235-2.108235 207.992471-2.650352l61.861647 38.309647c3.132235 11.504941 5.782588 23.070118 8.914823 34.575058l-155.648 4.758589-166.068705 4.698353c-2.650353-12.589176-4.818824-24.696471-6.806589-37.225412 16.745412-14.155294 33.008941-28.310588 49.754353-42.465883z m373.037177 435.139765c3.674353 14.155294 7.348706 28.310588 11.023059 41.923765-14.637176 18.371765-28.852706 37.225412-43.971765 56.079059-74.450824 9.999059-150.949647 19.395765-230.098824 29.876706-24.094118-14.637176-48.730353-29.876706-73.306353-44.574118a1340.837647 1340.837647 0 0 0-8.432941-45.598118c61.319529-6.806588 120.530824-13.071059 178.718118-19.335529 56.560941-6.324706 112.097882-12.047059 166.068706-18.371765z m-21.443765-84.449882c6.264471 24.154353 12.047059 47.766588 18.311529 71.860706-53.970824 5.782588-109.507765 11.504941-166.068705 17.829647-57.645176 6.264471-116.856471 12.047059-177.694118 18.853647a2248.824471 2248.824471 0 0 1-14.095059-77.583059c59.753412-5.782588 118.362353-11.023059 175.525647-16.263529 56.018824-4.698353 110.531765-9.396706 164.020706-14.697412z m-298.164706-76.498824c75.474824-5.240471 148.299294-10.480941 219.01553-15.239529 22.046118 13.673412 43.971765 26.744471 65.536 40.357647 3.614118 13.131294 6.806588 26.262588 10.420705 39.333647-53.428706 4.758588-107.881412 9.456941-163.478588 14.155294-57.103059 5.300706-115.772235 10.480941-175.525647 15.721412l-7.830588-42.465882 51.802353-51.862589z m555.429647 224.376471c-42.465882 5.782588-85.413647 10.962824-129.445647 16.745412-22.528-13.613176-45.056-27.768471-67.584-41.381647l-11.023059-41.441883c52.404706-5.782588 103.785412-11.504941 153.6-16.745412l23.491765-2.650352c6.324706 30.418824 16.805647 58.729412 30.960941 85.473882z m-33.551059-97.581177l-24.576 2.710589c-49.814588 5.240471-100.592941 10.420706-152.997647 16.263529-6.324706-24.154353-12.649412-47.766588-18.913882-71.318588 51.922824-4.758588 102.159059-9.456941 151.431529-13.673412l38.79153-3.614118v2.048c0 23.070118 2.108235 45.598118 6.26447 67.644236z m-169.261176-151.431529c60.235294-4.216471 118.482824-7.830588 175.525647-12.047059a420.080941 420.080941 0 0 0-12.528941 81.739294l-42.465883 3.734589c-49.212235 4.638118-99.568941 8.854588-150.889411 13.613176-3.132235-13.131294-6.806588-26.262588-10.480941-39.333647 13.613176-16.263529 27.226353-31.984941 40.839529-47.706353zM961.475765 72.282353l92.762353 225.942588c-8.432941 1.566118-16.745412 3.132235-25.720471 5.240471-29.334588-72.884706-57.584941-143.119059-85.353412-210.763294-127.337412-5.180235-262.505412-10.480941-406.106353-16.26353C383.518118 70.113882 219.497412 63.849412 43.971765 56.500706c21.022118 122.699294 43.971765 253.229176 68.126117 392.673882 26.202353 148.841412 53.970824 309.248 83.84753 481.761883 207.510588-27.768471 398.757647-54.031059 574.825412-77.583059l35.599058-4.758588c6.806588 11.023059 14.155294 21.504 22.528 31.984941l-47.646117 6.806588c-190.765176 27.286588-398.757647 57.223529-626.206118 89.690353-30.900706-189.259294-59.632941-364.423529-85.895529-526.336L0 29.214118l529.709176 23.612235c153.6 6.806588 297.080471 13.131294 431.766589 19.395765z" fill="#999999" p-id="5462"></path><path d="M1113.991529 324.909176a331.715765 331.715765 0 0 1 331.65553 331.294118 331.836235 331.836235 0 0 1-331.65553 331.896471 331.836235 331.836235 0 0 1-331.715764-331.896471c0-182.934588 148.781176-331.294118 331.715764-331.294118z m-26.202353 75.474824l-110.592 299.369412h143.058824l-67.584 212.811294h10.420706l187.632941-294.068706-119.506823-0.542118 83.847529-217.569882h-127.277177z" fill="#999999" p-id="5463"></path></svg>
\ No newline at end of file
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1692788432953" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="21304" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M730.453333 151.466667a85.333333 85.333333 0 0 0-81.92 59.733333l-34.133333 108.8a127.914667 127.914667 0 0 0-45.653333 10.24L490.666667 246.186667l-56.746667-63.146667a85.333333 85.333333 0 0 0-5.12 120.746667l77.226667 84.053333a128.213333 128.213333 0 0 0-9.386667 21.76c-2.261333 7.424-3.84 14.976-4.693333 22.613333l-111.36 24.746667-83.626667 18.773333a85.333333 85.333333 0 0 0 101.973333 64.853334l111.36-25.173334c8.32 13.397333 19.029333 25.130667 31.573334 34.56l-34.133334 108.8-25.6 81.493334a85.333333 85.333333 0 0 0 106.666667-55.893334l34.56-108.373333a128.170667 128.170667 0 0 0 45.653333-10.24l77.653334 84.053333 56.746666 62.72a85.333333 85.333333 0 0 0 5.546667-120.32l-77.226667-84.053333c3.626667-6.912 6.656-14.208 8.96-21.76 2.688-7.424 4.693333-15.146667 5.973334-23.04l110.506666-24.746667 83.2-18.346666a85.333333 85.333333 0 0 0-101.546666-64.853334l-111.36 24.746667a128 128 0 0 0-31.573334-34.133333l34.133334-109.226667 25.6-81.066667a85.290667 85.290667 0 0 0-25.173334-4.266666zM621.226667 384a64 64 0 1 1-21.76 125.013333 64 64 0 0 1 21.333333-125.013333h0.426667zM341.333333 583.253333C289.28 619.946667 229.973333 640 170.666667 640H85.333333v85.333333h85.333334c58.453333 0 116.906667-14.933333 170.666666-42.666666 32.853333 17.066667 67.413333 28.16 102.826667 34.56l22.613333-71.253334 3.84-11.093333c-45.226667-6.4-89.6-23.893333-129.28-51.626667zM872.533333 640c2.133333 29.866667-5.12 60.16-23.04 85.333333H938.666667v-85.333333h-66.133334zM341.333333 753.92C289.28 790.613333 229.973333 810.666667 170.666667 810.666667H85.333333v85.333333h85.333334c58.453333 0 116.906667-14.933333 170.666666-42.666667 106.666667 55.466667 234.666667 55.466667 341.333334 0 53.76 27.733333 111.786667 42.666667 170.666666 42.666667h85.333334v-85.333333h-85.333334c-59.306667 0-118.613333-20.053333-170.666666-56.746667-104.106667 72.96-237.226667 72.96-341.333334 0z" p-id="21305"></path></svg>
\ No newline at end of file
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1692788339927" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="16861" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M554.666667 661.333333a42.666667 42.666667 0 0 1-42.666667 42.666667 42.666667 42.666667 0 0 1-42.666667-42.666667 42.666667 42.666667 0 0 1 42.666667-42.666666 42.666667 42.666667 0 0 1 42.666667 42.666666z m-42.666667-181.333333a181.226667 181.226667 0 0 0-131.242667 56.213333 32 32 0 0 0 1.066667 45.226667 32 32 0 0 0 45.269333-1.066667A116.565333 116.565333 0 0 1 512 544c33.6 0 63.509333 13.930667 84.906667 36.373333a32 32 0 0 0 45.269333 1.066667 32 32 0 0 0 1.066667-45.226667A181.226667 181.226667 0 0 0 512 480z m149.333333 149.333333a32 32 0 0 0-32 32 116.48 116.48 0 0 1-32.384 80.96 117.76 117.76 0 0 1-39.253333 27.114667 32 32 0 0 0-16.938667 41.962667 32 32 0 0 0 41.92 17.002666 181.653333 181.653333 0 0 0 60.586667-41.92A181.162667 181.162667 0 0 0 693.333333 661.333333a32 32 0 0 0-32-32z m-298.666666 0a32 32 0 0 0-32 32c0 48.32 19.093333 92.629333 50.090666 125.12a181.653333 181.653333 0 0 0 60.586667 41.92 32 32 0 0 0 41.898667-17.002666 32 32 0 0 0-16.96-41.962667 117.589333 117.589333 0 0 1-39.189334-27.114667A116.522667 116.522667 0 0 1 394.666667 661.333333a32 32 0 0 0-32-32zM660.053333 62.72l-17.685333 17.664c-10.005333 10.005333-23.552 15.616-37.696 15.616h-14.677333c-31.104 0-60.949333 12.373333-82.944 34.368l-17.685334 17.664a32 32 0 0 0 0 45.269333 32 32 0 0 0 45.269334 0l17.664-17.685333a53.290667 53.290667 0 0 1 37.696-15.616h14.677333c31.104 0 60.949333-12.373333 82.944-34.368l17.685333-17.664a32 32 0 0 0 0-45.269333 32 32 0 0 0-45.269333 0zM298.666667 266.666667a32 32 0 0 0-31.744 28.032l-18.709334 149.717333a181.248 181.248 0 0 1-7.914666 34.837333L169.173333 692.672a245.333333 245.333333 0 0 0-11.392 53.162667l-18.944 189.653333A32 32 0 0 0 170.666667 970.666667h682.666666a32 32 0 0 0 31.829334-35.157334l-18.944-189.674666a245.290667 245.290667 0 0 0-11.392-53.162667l-71.125334-213.418667a181.269333 181.269333 0 0 1-7.893333-34.837333l-18.730667-149.717333A32 32 0 0 0 725.333333 266.666667H512z m28.245333 64h370.176l15.210667 121.664c2.005333 16.021333 5.589333 31.850667 10.709333 47.168l71.125333 213.376c4.245333 12.757333 7.082667 25.92 8.405334 39.296l15.466666 154.496H205.994667l15.466666-154.496a181.290667 181.290667 0 0 1 8.405334-39.296l71.125333-213.376c5.12-15.317333 8.704-31.146667 10.709333-47.146667zM256 266.666667a32 32 0 0 0-32 32 32 32 0 0 0 32 32h512a32 32 0 0 0 32-32 32 32 0 0 0-32-32z m-170.666667 640A32 32 0 0 0 53.333333 938.666667 32 32 0 0 0 85.333333 970.666667h853.333334a32 32 0 0 0 32-32 32 32 0 0 0-32-32z" p-id="16862"></path></svg>
\ No newline at end of file
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1692788505847" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="22434" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M818.384953 1023.989761c-14.498825 0-25.587969-12.338336-25.587969-28.465208 0-16.126871 11.089144-28.465207 25.587969-28.465207h104.522603c-49.988181-124.059156-77.726399-259.770616-81.13608-395.625426H697.274711c-14.498825 0-25.587969-12.328097-25.587969-28.465208 0-16.116632 11.089144-28.454968 25.598208-28.454968h144.117912v-59.766696H664.877619c-14.498825 0-25.587969-12.338336-25.587969-28.465208 0-16.126871 11.089144-28.465207 25.587969-28.465207h202.123451c14.509064 0 25.598208 12.338336 25.598208 28.465207v109.171238a33.308388 33.308388 0 0 1 0.030718 14.71385l-0.030718-7.187977c0 146.165768 30.042057 292.331537 86.327397 424.090634h18.57406c14.498825 0 25.587969 12.328097 25.587969 28.465208 0 16.116632-11.089144 28.454968-25.598208 28.454968H818.395192z m-665.246233-659.379124c14.498825 0 25.587969 12.338336 25.587969 28.465208 0 212.516324-45.206436 425.032648-130.489426 615.729059-4.269781 9.491816-13.648965 15.184857-23.038387 15.184857-4.259542 0-7.669223-0.952253-11.078904-2.846521-12.799104-6.645295-17.918746-23.71418-11.089144-37.946784C84.064515 800.087354 127.550751 596.110592 127.550751 393.075845c0-16.126871 11.089144-28.465207 25.587969-28.465208zM229.902627 1023.989761c-14.498825 0-25.598208-12.338336-25.598208-28.465208 0-16.126871 11.099383-28.465207 25.598208-28.465207h437.012609c-70.241483-170.381673-108.966452-357.873189-112.632116-545.518294H323.71494c-14.498825 0-25.587969-12.338336-25.587969-28.465207 0-16.126871 11.089144-28.465207 25.587969-28.465208h230.271241v-99.617986H153.14896c-14.498825 0-25.587969-12.328097-25.587969-28.465208 0-16.116632 11.089144-28.454968 25.587969-28.454968h426.435429c14.498825 0 25.598208 12.338336 25.598208 28.465207v156.538163c0 202.727569 42.953793 405.444899 123.85437 586.751887 2.600778 4.443849 4.064995 9.829712 4.064996 15.696821 0 3.890928-0.645075 7.56683-1.822593 10.894598-2.180967 6.276681-6.256202 11.631826-11.816132 14.724089-2.436949 1.085364-4.607677 1.86355-6.798885 2.324317l-0.450528 0.071675a15.973282 15.973282 0 0 1-1.361825 0.235504l-0.153589 0.010239a17.939224 17.939224 0 0 1-1.42326 0.14335h-0.102393l-1.648525 0.061436H229.902627z m146.841561-453.876709l-21.369384 93.382263 54.718729 13.72064L334.00542 798.418351l19.249852-83.900687-45.779835-11.43728 69.268751-132.967332z m476.607917-352.548762c13.648965 15.174618 35.817013 15.174618 49.465978 0 10.239283-11.386083 26.437829-11.386083 35.827252 0 10.239283 11.375844 10.239283 29.407221 0 39.841052-16.208785 18.021139-38.387073 27.512954-60.555121 27.512954-22.178288 0-44.356575-9.481576-60.555121-27.512954-13.648965-15.174618-35.827252-15.174618-49.465978 0-10.239283 11.386083-26.448069 11.386083-35.827252 0-10.239283-11.386083-10.239283-29.407221 0-39.841052 33.267431-37.00477 87.85305-37.00477 121.110242 0z m-367.590268-199.235973c14.498825 0 25.587969 12.328097 25.587969 28.465207 0 16.126871-11.089144 28.465207-25.587969 28.465208h-76.763907c-51.165698 0-99.781815 31.301489-125.369784 80.634355-5.119642 9.481576-13.648965 14.232604-22.178287 14.232604a22.219245 22.219245 0 0 1-12.788865-3.788535c-11.939004-7.597548-16.208785-25.628926-9.379184-38.909276 34.967152-67.354005 99.781815-109.099563 169.71612-109.099563h76.763907z m359.060945 9.481576c13.648965 15.184857 35.817013 15.184857 49.465978 0 10.239283-11.386083 26.437829-11.386083 35.827252 0 10.239283 11.386083 10.239283 29.417461 0 39.851291-16.208785 18.021139-38.387073 27.512954-60.555121 27.512954-22.178288 0-44.356575-9.491816-60.555121-27.512954-13.648965-15.184857-35.827252-15.184857-49.465978 0-33.267431 36.99453-87.85305 36.99453-121.110242 0-13.648965-15.184857-35.827252-15.184857-49.465977 0-10.239283 11.386083-26.437829 11.386083-35.827253 0-10.239283-11.386083-10.239283-29.417461 0-39.851291 33.267431-36.99453 87.85305-36.99453 121.110243 0 13.648965 15.184857 35.827252 15.184857 49.465977 0 33.267431-36.99453 87.85305-36.99453 121.110242 0z m170.586459-2.84652l3.399442 3.788534c0.8601 1.904507 1.70996 2.85676 2.559821 4.751028 0.849861 1.894267 0.849861 3.788535 1.709961 5.693041 0 1.894267 0.849861 3.788535 0.84986 5.693042 0 7.587309-2.559821 15.184857-7.679462 19.925645-5.119642 7.587309-11.939004 10.444069-18.758367 10.444069-1.70996 0-3.409681 0-5.119642-0.962493-1.699721 0-3.409681-0.942014-5.119642-1.894267-1.699721-0.952253-2.559821-1.894267-4.259541-2.846521-1.70996-0.952253-2.559821-1.894267-4.269782-3.788535l-3.409681-3.798774c-0.849861-1.894267-1.699721-2.846521-2.559821-4.740788-0.849861-1.904507-0.849861-3.798774-1.699721-5.693041 0-1.904507-0.8601-3.798774-0.860099-5.693042 0-1.904507 0-3.788535 0.860099-5.693041 0-1.904507 0.849861-3.788535 1.699721-5.693042 0.8601-1.894267 1.70996-2.846521 2.559821-4.740788a7.075345 7.075345 0 0 1 3.409681-3.798774c1.70996-0.952253 2.559821-2.846521 4.269782-3.788535 1.699721-0.952253 2.559821-1.904507 4.259541-2.85676 1.70996-0.942014 3.419921-0.942014 5.119642-1.894267 8.529323-1.894267 17.058646 0.952253 23.038387 7.587309z" fill="#333333" p-id="22435"></path></svg>
\ No newline at end of file
<svg width="881" height="225" viewBox="0 0 881 225" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M97.24 3.0199L191.9 57.6599V166.94L97.24 221.59L2.59 166.94V57.6399L97.24 3V3.0199ZM97.24 0L0 56.1399V168.42L97.24 224.56L194.48 168.42V56.1699L97.24 0.0299072V0Z" fill="#426DF2"/>
<path d="M599.14 100.66H629.87L625.87 122.06H599.14V147.27H635.82L637.46 170.42H568.96V53.0599H637.5L635.86 75.7599H599.14V100.66Z" fill="#426DF2"/>
<path d="M409.65 118.75V170.25H387.14L387.04 165.04C379.167 169.133 371.477 171.177 363.97 171.17H361.74C354.027 171.17 347.897 168.207 343.35 162.28C340.339 157.654 338.766 152.239 338.83 146.72V146.11C338.83 135.99 342.38 129.27 349.48 125.95C352.387 124.01 359.77 123.04 371.63 123.04H383.74V120.21C383.74 114.383 382.897 111.05 381.21 110.21C379.37 108.83 376.127 108.14 371.48 108.14H347.34L347.75 87.5L375.54 86.75C392.04 86.75 402.26 90.8399 406.2 99.0199C408.5 103.747 409.65 110.323 409.65 118.75ZM366.31 140.14C365.54 141.05 364.73 144.02 364.73 146.14C364.73 150.74 367.063 153.04 371.73 153.04C374.537 153.04 378.537 151.89 383.73 149.59V138.34C383.73 138.34 369.1 136.81 366.31 140.14Z" fill="#426DF2"/>
<path d="M559.82 118.75V170.25H537.32L537.21 165.04C529.344 169.133 521.654 171.177 514.14 171.17H511.92C504.2 171.17 498.067 168.207 493.52 162.28C490.513 157.652 488.94 152.239 489 146.72V146.11C489 135.99 492.55 129.27 499.65 125.95C502.57 124.01 509.954 123.04 521.8 123.04H533.91V120.21C533.91 114.383 533.067 111.05 531.38 110.21C529.54 108.83 526.297 108.14 521.65 108.14H497.55L497.96 87.5L525.75 86.75C542.264 86.75 552.484 90.8399 556.41 99.0199C558.684 103.747 559.82 110.323 559.82 118.75ZM516.52 140.14C515.75 141.05 514.95 144.02 514.95 146.14C514.95 150.74 517.284 153.04 521.95 153.04C524.764 153.04 528.764 151.89 533.95 149.59V138.34C533.95 138.34 519.32 136.81 516.52 140.14Z" fill="#426DF2"/>
<path d="M716.951 118.75V170.25H694.451L694.341 165.04C686.467 169.133 678.777 171.177 671.271 171.17H669.051C661.331 171.17 655.197 168.207 650.651 162.28C647.643 157.652 646.071 152.239 646.131 146.72V146.11C646.131 135.99 649.684 129.27 656.791 125.95C659.704 124.01 667.087 123.04 678.941 123.04H691.041V120.21C691.041 114.383 690.201 111.05 688.521 110.21C686.681 108.83 683.434 108.14 678.781 108.14H654.641L655.051 87.5L682.841 86.75C699.347 86.75 709.567 90.8399 713.501 99.0199C715.801 103.747 716.951 110.323 716.951 118.75ZM673.611 140.14C672.841 141.05 672.041 144.02 672.041 146.14C672.041 150.74 674.374 153.04 679.041 153.04C681.854 153.04 685.854 151.89 691.041 149.59V138.34C691.041 138.34 676.411 136.81 673.611 140.14Z" fill="#426DF2"/>
<path d="M477.43 170.42H464.43C461.79 170.42 459.53 170.35 457.65 170.19C453.394 170.023 449.206 169.067 445.3 167.37C441.463 165.56 438.331 162.533 436.39 158.76C434.097 154.393 432.953 148.55 432.96 141.23L432.81 108.31H420.31V86.9399H432.82V60.34L458.42 65.2699V86.9399H477.93L475.26 108.35H458.38V139.83C458.38 140.54 458.38 141.15 458.46 141.66C458.518 142.772 458.723 143.872 459.07 144.93C459.478 145.99 460.133 146.937 460.979 147.693C461.826 148.45 462.841 148.994 463.94 149.28C466.57 150.273 469.309 150.944 472.1 151.28C472.71 151.38 473.34 151.46 474 151.51L475.6 151.66L477.43 151.74V170.42Z" fill="#426DF2"/>
<path d="M878.59 121.25V136.05H831.47L831.37 138.74C831.37 144.38 833.62 147.65 837.08 148.87C840.067 149.667 843.149 150.05 846.24 150.01H848.3C857.46 150.01 870.84 147.95 880.45 146.01H880.6L876.73 166.92C876.73 167.18 872.23 169.09 863.48 170.51C857.195 171.161 850.879 171.469 844.56 171.43C826.247 171.43 814.42 165.247 809.08 152.88C807.08 148 805.26 142.88 805.26 137.57V117.57C805.26 102.92 812.26 93.1599 824.57 88.3199C830.215 86.5087 836.112 85.6074 842.04 85.6499C859.294 85.6499 870.487 91.2732 875.62 102.52C877.6 106.913 878.59 113.157 878.59 121.25ZM853.9 117.35C853.9 111.56 852.17 107.68 849.68 106.61C847.8 105.34 844.89 105.15 842.19 105.15C835.33 105.15 831.897 108.38 831.89 114.84L831.47 118.73H853.9V117.35Z" fill="#426DF2"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M276.98 51.8799H231.71V170.42H276.98C305.82 170.42 329.21 150.88 329.21 126.79V95.5199C329.21 71.4299 305.82 51.9399 276.98 51.8799ZM300.12 127.81C300.12 138.5 289.77 147.16 276.98 147.17H261.87V75.1699H276.98C289.77 75.1699 300.12 83.8499 300.12 94.5299V127.81Z" fill="#426DF2"/>
<path d="M758.75 172.74C753.95 172.74 748.683 172.463 742.95 171.91C740.75 171.69 738.49 171.44 736.17 171.14L730.74 170.37L727.74 147.75L733.57 150L740.76 151.82C743.61 152.22 746.29 152.53 748.82 152.75C751.827 153.01 754.55 153.14 756.99 153.14C765.86 153.14 770.99 152.93 772.37 149.3C773.14 147.79 773.1 143.68 772.25 142.3C771.4 140.92 769.58 139.36 766.82 138.23C765.64 137.75 764.15 137.23 762.36 136.74L757.11 135.31C754.8 134.8 752.72 134.31 750.89 133.77C748.53 133.103 746.373 132.407 744.42 131.68C740.3 130.257 736.475 128.095 733.13 125.3C730.595 122.881 728.87 119.737 728.19 116.3C727.652 113.45 727.591 110.53 728.01 107.66C729.11 98.3266 733.523 91.9266 741.25 88.46C744.558 86.9462 748.073 85.9351 751.68 85.46C753.27 85.24 755.08 85.0599 757.11 84.9099L762.36 84.58H765.9C769.9 84.58 774.333 84.8 779.2 85.24L785.12 85.84L790.12 86.5L792.2 106.83C788.91 106.065 785.568 105.55 782.2 105.29C777.517 104.798 772.807 104.618 768.1 104.75C758.82 104.75 753.37 104.24 751.74 108.02C751.436 108.737 751.29 109.511 751.313 110.289C751.335 111.068 751.525 111.832 751.87 112.53C752.763 114.183 754.713 115.633 757.72 116.88C758.98 117.4 760.567 117.95 762.48 118.53L774.56 121.78C776.88 122.447 778.957 123.113 780.79 123.78C784.479 125.024 787.887 126.981 790.82 129.54C793.484 131.926 795.302 135.112 796 138.62C796.532 142.304 796.596 146.04 796.19 149.74C795.09 158.98 790.673 165.38 782.94 168.94C779.643 170.483 776.123 171.496 772.51 171.94C770.92 172.16 769.11 172.35 767.08 172.49L762.38 172.77L758.75 172.74Z" fill="#426DF2"/>
<path d="M97.2405 36.2899L163.08 74.2899V150.29L97.2405 188.29L31.4105 150.29V74.2899L97.2405 36.2899ZM97.2405 15.8799L13.7305 64.09V160.53L97.2405 208.74L180.76 160.53V64.09L97.2405 15.8799Z" fill="#426DF2"/>
<path d="M56.82 113.31C55.1193 113.318 53.464 112.762 52.1135 111.729C50.7631 110.695 49.7939 109.242 49.3581 107.598C48.9222 105.954 49.0443 104.212 49.7052 102.645C50.3662 101.078 51.5285 99.7752 53.01 98.94L80.22 83.24C81.9814 82.2591 84.0579 82.0102 86.0013 82.547C87.9447 83.0839 89.599 84.3633 90.6072 86.1093C91.6154 87.8553 91.8966 89.9277 91.3901 91.8792C90.8836 93.8307 89.63 95.5047 87.9 96.5399L60.68 112.24C59.5115 112.934 58.179 113.303 56.82 113.31Z" fill="#00BFFF"/>
<path d="M104.99 85.5399C103.3 85.5395 101.657 84.9815 100.316 83.9524C98.9752 82.9233 98.0113 81.4805 97.5737 79.8478C97.1362 78.2151 97.2496 76.4837 97.8962 74.922C98.5428 73.3603 99.6866 72.0555 101.15 71.21L111.15 65.47C112.025 64.9301 112.999 64.5713 114.015 64.4148C115.031 64.2583 116.068 64.3074 117.064 64.5591C118.061 64.8108 118.997 65.2599 119.817 65.8799C120.636 66.4999 121.323 67.2782 121.837 68.1686C122.35 69.059 122.68 70.0434 122.806 71.0635C122.932 72.0836 122.852 73.1187 122.571 74.1073C122.289 75.0959 121.812 76.0181 121.168 76.819C120.524 77.6199 119.726 78.2833 118.82 78.7699L108.82 84.5099C107.657 85.1848 106.335 85.5402 104.99 85.5399Z" fill="#00BFFF"/>
<path d="M68.2004 136.75C66.5092 136.752 64.8648 136.195 63.5222 135.167C62.1796 134.139 61.214 132.696 60.7752 131.063C60.3364 129.429 60.449 127.697 61.0954 126.134C61.7418 124.572 62.886 123.266 64.3504 122.42L64.6104 122.27C66.3687 121.314 68.4306 121.083 70.3571 121.625C72.2835 122.167 73.9223 123.44 74.9246 125.172C75.9269 126.904 76.2135 128.959 75.7233 130.899C75.2332 132.839 74.005 134.512 72.3004 135.56L72.0404 135.71C70.8745 136.389 69.5497 136.748 68.2004 136.75Z" fill="#00BFFF"/>
<path d="M89.1303 124.94C87.4407 124.942 85.7974 124.387 84.455 123.361C83.1127 122.335 82.1463 120.895 81.7054 119.264C81.2646 117.632 81.374 115.901 82.0167 114.339C82.6594 112.776 83.7995 111.469 85.2604 110.62L122.43 88.94C123.303 88.4097 124.272 88.0586 125.281 87.9071C126.291 87.7557 127.32 87.807 128.309 88.058C129.299 88.3091 130.228 88.7549 131.043 89.3693C131.858 89.9837 132.543 90.7544 133.057 91.6364C133.57 92.5184 133.903 93.494 134.036 94.5061C134.168 95.5183 134.097 96.5466 133.828 97.531C133.558 98.5155 133.095 99.4364 132.465 100.24C131.835 101.043 131.052 101.713 130.16 102.21L92.9903 123.86C91.8223 124.556 90.4901 124.929 89.1303 124.94Z" fill="#00BFFF"/>
<path d="M79.5502 160.18C77.8599 160.18 76.217 159.622 74.8761 158.592C73.5352 157.563 72.5713 156.121 72.1338 154.488C71.6963 152.855 71.8096 151.124 72.4562 149.562C73.1028 148 74.2466 146.696 75.7102 145.85L133.82 112.34C135.585 111.323 137.682 111.049 139.649 111.577C141.617 112.106 143.293 113.395 144.31 115.16C145.327 116.925 145.602 119.022 145.073 120.989C144.544 122.956 143.255 124.633 141.49 125.65L83.3902 159.15C82.2237 159.827 80.8987 160.182 79.5502 160.18Z" fill="#426DF2"/>
</svg>
<svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><g id="SVGRepo_bgCarrier" stroke-width="0"></g><g id="SVGRepo_tracerCarrier" stroke-linecap="round" stroke-linejoin="round"></g><g id="SVGRepo_iconCarrier"> <g clip-path="url(#clip0_15_90)"> <rect width="24" height="24" fill="white"></rect> <path d="M20 12C20 16.4183 16.4183 20 12 20C10.5937 20 9.27223 19.6372 8.12398 19C7.53267 18.6719 4.48731 20.4615 3.99998 20C3.44096 19.4706 5.4583 16.6708 5.07024 16C4.38956 14.8233 3.99999 13.4571 3.99999 12C3.99999 7.58172 7.58171 4 12 4C16.4183 4 20 7.58172 20 12Z" stroke="#000000" stroke-linejoin="round"></path> </g> <defs> <clipPath id="clip0_15_90"> <rect width="24" height="24" fill="white"></rect> </clipPath> </defs> </g></svg>
\ No newline at end of file
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1690265919057" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="14240" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M491.52 76.8h37.888v111.616l53.76 66.56 74.24 91.648h-296.96l74.24-91.648 56.32-69.632V76.8h0.512zM289.792 886.272h59.392V382.464h323.072v504.32h57.856V486.4H870.4v399.872h93.184V957.44H83.456V353.792l206.336 118.272v414.208z m231.936-143.36V798.72h44.544v-55.808h-44.544z m-409.6-84.992v33.792h27.136v-33.792h-27.136z m130.048 59.392v33.792h27.136v-33.792h-27.136z m0-119.808v33.792h27.136v-33.792h-27.136z m0-59.392v33.792h27.136v-33.792h-27.136z m-43.008 119.808v33.792h27.136v-33.792h-27.136z m0-119.808v33.792h27.136v-33.792h-27.136z m-44.544 119.808v33.792h27.136v-33.792h-27.136z m0 59.392v33.792h27.136v-33.792h-27.136z m0-119.808v33.792h27.136v-33.792h-27.136z m-42.496-59.392v33.792h27.136v-33.792h-27.136z m642.048 130.048v41.984h33.792v-41.984h-33.792z m0 73.216v41.984h33.792v-41.984h-33.792z m0-222.208v41.984h33.792v-41.984h-33.792z m52.736 73.216v41.984h33.28v-41.984h-33.28z m0-73.216v41.984h33.28v-41.984h-33.28z m-421.376 223.744V798.72H430.08v-55.808h-44.544z m0-198.656v55.808H430.08v-55.808h-44.544z m203.264 0v55.808h44.544v-55.808H588.8z m-67.072 0v55.808h44.544v-55.808h-44.544z m-67.072 0v55.808h44.544v-55.808h-44.544zM385.536 446.464v55.808H430.08V446.464h-44.544z m203.264 0v55.808h44.544V446.464H588.8z m-67.072 0v55.808h44.544V446.464h-44.544zM385.536 645.12v55.808H430.08V645.12h-44.544z m203.264 0v55.808h44.544V645.12H588.8z" fill="#2c2c2c" p-id="14241"></path></svg>
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1690265990298" class="icon" viewBox="0 0 1038 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="16350" xmlns:xlink="http://www.w3.org/1999/xlink" width="202.734375" height="200"><path d="M522.666667 0c282.766222 0 512 229.233778 512 512s-229.233778 512-512 512-512-229.233778-512-512 229.233778-512 512-512z m-35.029334 213.333333h-126.791111a14.222222 14.222222 0 0 0-14.222222 14.222223v47.018666H312.888889a28.444444 28.444444 0 0 0-28.444445 28.444445V782.222222a28.444444 28.444444 0 0 0 28.444445 28.444445h426.666667a28.444444 28.444444 0 0 0 28.444444-28.444445V471.893333a28.444444 28.444444 0 0 0-19.555556-27.022222l-125.013333-41.173333a14.222222 14.222222 0 0 0-18.673778 13.511111v299.52a13.240889 13.240889 0 1 1-26.481777 0V303.004444a28.444444 28.444444 0 0 0-28.444445-28.444444h-33.749333V241.777778a28.444444 28.444444 0 0 0-28.444445-28.444445z m232.945778 407.352889v60.373334h-68.408889v-60.373334h68.408889z m-230.926222 0v60.373334h-116.593778v-60.373334h116.593778z m230.926222-126.663111v60.387556h-68.408889v-60.387556h68.408889z m-230.926222 0v60.387556h-116.593778v-60.387556h116.593778z m0-126.663111v60.387556h-116.593778V367.36h116.593778z" fill="#2c2c2c" p-id="16351"></path></svg>
<svg t="1692175494268" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="13238" width="200" height="200"><path d="M926.6 422.9C895 277.9 802 166.5 657.9 100.8c-8.4-3.8-17.5-4.1-25.6-0.7-16 6.6-22.5 24.2-28.3 39.6-1.7 4.5-4.4 11.8-6.2 14.8-18.2 12-26.4 37.1-19.1 59.9 4.4 13.7 13.9 23.9 26.2 29.4-0.3 10.7 1.2 24.2 5.9 41.4 5 18.2 13.6 40.4 34.8 50.9 24.5 12.1 55.6 2.7 82.9-8.1 5.4-1.9 9.3-2.7 11.8-2.9v0.6c-1.9 14.3-6.7 23.2-12.3 33.5-15.1 28.2-24.2 52.8-2.9 113.5 11.9 34.2 33.2 55.7 52 74.7 13.7 13.8 25.5 25.7 32.2 40.7 11.9 29 48.4 48.5 80.5 65.7l6.1 3.3c3.3 1.8 6.9 2.7 10.6 2.7 3.2 0 6.5-0.7 9.5-2.1 6.4-3 11-8.9 12.4-15.8l0.1-0.7c5.5-25.2 20.7-114.7-1.9-218.3z m-36.5 179.9c-17.7-10.2-35.4-21.9-39.4-31.9-0.1-0.3-0.2-0.5-0.3-0.8-10-22.5-26-38.7-41.4-54.2-17-17.1-33-33.3-41.6-58v-0.1c-16.5-46.8-9.9-59.1 0.1-77.7 6.4-11.9 14.3-26.6 17.3-49.3 0-0.3 0.1-0.6 0.1-0.9 2.1-22.6-7.2-34.8-15.3-41-5.8-4.5-14.6-8.6-27.4-8.6-8 0-17.6 1.6-28.9 5.7-0.2 0.1-0.4 0.2-0.7 0.3-32.1 12.8-43.2 11.6-47 9.7-2.8-1.4-7.1-6.5-11.7-22.9-6.3-22.7-4.1-32.3-3.5-34.4 4.8-6.6 5.7-15.3 2-22.8-4.1-8.5-13.2-13.5-22.6-12.4-7.1 0.8-8-1.3-8.4-2.2-1.6-3.5-0.3-8.7 0.9-9.7l1.5-0.9c11.6-7.7 16.9-21.9 21.9-35.5 1-2.6 2.3-6.1 3.6-9.3C906.8 269.4 902.8 509 890.1 602.8zM610.8 597.1c-12.2-10.5-20.8-19.3-28.4-27.1-24.7-25.4-40-38.7-93.1-38.7-33.9 0-71.6 3.6-93.9 30.3-18 21.6-22.5 52.8-14.1 98.3 10 54.4 32.3 70.2 47.1 80.6 10 7.1 12.1 8.6 10.8 27.7-4.3 59.6 7.3 83.7 20.7 105.1 1.1 1.8 2.2 3.5 3.2 5.2 9.4 16.4 28.1 42.6 52.4 42.6 1.9 0 3.9-0.2 5.8-0.5 28.2-4.9 34.4-40 36.5-51.5 11.5-64.4 32.6-98.2 53.7-125 18.8-24 68.7-87.5-0.7-147z m-34.3 119.4C553 746.4 527.2 787 514 861.2c-0.7 4-1.5 7.2-2.2 9.7-3.1-3.6-6.7-8.6-10.1-14.5-1.2-2.2-2.6-4.4-4-6.7-8.3-13.3-17.6-28.3-14-78.4 2.9-40.8-11.6-54.6-29.4-67.2-11.5-8.1-22.3-15.8-29-52.4-5.6-30.6-4.1-51.4 4.5-61.7 8.2-9.9 26.6-14.3 59.6-14.3 36.7 0 41.4 4.8 61.1 25.2 7.8 8.1 17.6 18.1 31.3 29.9 28 24.1 26.7 44.9-5.3 85.7zM306.5 485.2c0.4-0.5 1.6-1.5 3.8-2.7l0.9-0.5c11.1-5.9 27.5-14.7 34.5-15.6 0.6 1.1 1.4 3.1 2.2 6.5 5.9 23.4 23.5 38.5 46 39.4 26.8 1 54.3-19 63.5-46.6 5.1-15.3 9-16.2 27.5-20.2 9.9-2.2 22.2-4.9 36-10.9 34.1-14.9 69.9-34.8 62-81.9l-0.5-3.2c-4.5-27.4-11.2-68.8-83.8-68.8-31.5 0-48.4 13.7-58.6 21.9-1.2 0.9-2.6 2.1-3.8 3-2.2-1.4-6.6-4.5-13.8-11.7-2.2-2.2-4-4.1-5.5-5.8 2.2-0.5 4.5-1 6.3-1.4 9.3-2 18.9-4.1 27.4-8.3 23.8-11.9 47.7-51.4 41.7-80.6-3.9-19.2-19-31.4-40.3-32.6-24.3-1.4-36.7 4.6-44.9 8.5-5.2 2.5-5.6 2.7-14-0.3-34.1-12.2-56.2 20.3-69.5 39.8-1.9 2.7-4.2 6.1-6.4 9.1-1.5-1.8-3-3.7-4.3-5.3-15.7-19.6-39.5-49.2-74.3-48.2-7.9 0.2-26.5 0.8-71.4 62.3-24.3 33.2-47.3 72.5-60 102.5-1.4 3.4-2 7-1.7 10.6 6.6 74.7 41.9 118.1 52.7 129.7 8.6 15.6 43.3 64.6 162.3 121 2.4 1.1 4.9 1.8 7.5 2.1 1.1 0.1 2.2 0.1 3.3 0.1 10.2 0 22.8-4.2 28.5-16.5 9.8-21-10.2-41-18.7-49.5-31-31.3-34.7-42.4-34.6-45.9z m-17.1-42c-19.5 10.4-25.4 24.8-26.9 35.1-2 13.4 2.4 26.8 10.1 39.8-58.7-36.8-73.9-63.4-75.5-66.3-1.1-3.1-2.7-5-5.1-7.4-1.4-1.4-34.1-33.9-41.5-99 24.4-54.6 74.6-121.9 91.8-132.3 12.2 1.7 26.4 19.4 36 31.4 9.4 11.7 16.9 21.1 27.3 25.1 25.9 10.8 43.3-14.7 54.9-31.6 4.8-7.1 13.6-20 18.5-22.6 23.6 8.2 36 3.8 47.7-1.9 5.5-2.7 9.9-4.8 22.2-4.2-1 8.5-10.4 25.2-18 29-3.4 1.7-10.6 3.2-16.9 4.6-16.7 3.6-39.6 8.6-45.8 29.6-6 20.3 9.1 38.8 22.9 52.6 34.1 34.1 54.8 29.9 77 11.9 8.3-6.7 14.8-12 30.6-12 34.7 0 35.8 6.7 39.8 31.5l0.6 3.4c1.6 9.4 2.8 16.9-35.9 33.8-9.8 4.3-18.9 6.3-27.7 8.2-21 4.6-47.1 10.3-60.2 49.6-3.5 10.6-13.5 16.2-19.3 16.2h-0.3c-1.4-0.1-3.1-0.1-4.5-5.7-4.6-18.5-13.6-30.9-26.8-36.7-22.7-10.1-46.5 2.6-74.1 17.4l-0.9 0.5z" fill="#231815" p-id="13239"></path><path d="M512 0C229.7 0 0 229.7 0 512s229.7 512 512 512 512-229.7 512-512S794.3 0 512 0z m0 979.5C254.2 979.5 44.5 769.8 44.5 512S254.2 44.5 512 44.5 979.5 254.2 979.5 512 769.8 979.5 512 979.5z" fill="#231815" p-id="13240"></path></svg>
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1689841504633" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1855" xmlns:xlink="http://www.w3.org/1999/xlink" width="48" height="48"><path d="M781.981888 1014.033538C649.277769 945.497049 431.312619 990.61918 298.608501 972.93895 165.904382 955.25872 80.23377 832.725854 35.111639 706.301971-80.32183 383.00634 113.136746 295.287826 270.483965 302.387223 427.899447 309.691411 362.093496 148.180122 582.720919 27.558632 803.348343-93.062859 862.874059 217.126192 838.367485 287.574057 813.792648 358.021923 796.863316 425.32967 963.357836 601.858915 1129.852355 778.456422 914.686006 1082.706555 781.981888 1014.033538ZM891.408175 606.432565C745.66574 458.778754 743.413046 396.044657 768.397464 329.692597 789.900446 272.214785 777.886081 13.22331 589.478999 113.229243 401.071917 213.30344 457.730569 374.746465 324.207289 370.650659 190.615746 366.554852 7.601475 440.279363 102.28286 701.250477 139.281642 803.236049 225.976205 884.810855 338.474347 897.644381 450.972489 910.54617 634.259813 878.735409 746.211847 932.868314 858.163882 987.069481 1031.0069 747.874403 891.408175 606.432565ZM650.09693 792.51869C581.014333 766.646848 565.723324 679.337914 586.270618 607.388253 606.886175 535.302065 543.947288 435.773976 514.730537 379.866222 485.58205 323.753678 553.708959 197.671113 626.068201 178.352561 743.549573 146.95138 684.365175 331.7405 689.280142 455.092528 694.331636 578.444556 870.314773 658.79062 868.47166 734.28998 866.628548 809.789339 719.111263 818.458796 650.09693 792.51869ZM471.997627 693.058865C411.379696 748.01093 334.105487 776.886363 255.943853 750.604941 177.918747 724.255255 125.902009 596.124786 186.519939 541.991882 310.076758 431.541643 323.04681 547.179903 423.803641 498.098493 524.492209 449.085346 532.547294 638.106799 471.997627 693.058865Z" p-id="1856"></path></svg>
\ No newline at end of file
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1689905026346" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1736" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M955 99h-32c-2.8 0-5 2.2-5 5v62c-173-7.8-345 33.2-494.3 118.4-36.4 22.1-74.2 42-113.2 59.6-57.6-53.2-127.9-91.5-204.4-112.1V104c0-2.8-2.2-5-5-5H69c-2.8 0-5 2.2-5 5v816c0 2.8 2.2 5 5 5h32c2.8 0 5-2.2 5-5v-64.3c146.4-13.8 288.5-55.9 417.7-123.8 39.1-20.8 79.4-39.5 120.7-56 85.9 41.2 178.4 68.2 273.5 79.9V920c0 2.8 2.2 5 5 5H955c2.8 0 5-2.2 5-5V104c0-2.8-2.2-5-5-5zM106 294.4c51 16.2 98.5 41.9 139.4 75.9C200.1 387 153.5 399.9 106 409V294.4z m327 282c-101.5 52.9-212.5 86.7-327 99.7v-206c66.3-11.7 131.1-30.3 193.2-55.7 20 17.9 40.7 37.5 62.5 59.6 29.6 32.3 61.8 62.4 96.3 90l-25 12.4z m86.4-42.3c-40.2-29.4-77.5-62.3-111.3-98.3-16.3-17.3-31.9-33.4-47.5-47.7 33-15.5 65.1-32.6 96.3-51.3C596.4 258.1 756.7 220.1 918 226.7v208.2c-138.5 6-274.4 39.7-398.6 99.2z m208.8 113.8c61.6-18.9 125.3-30.3 189.7-34v82.5c-65.1-8-128.9-24.3-189.7-48.5z" p-id="1737"></path></svg>
\ No newline at end of file
......@@ -626,7 +626,8 @@ export default {
status: 'Authorization status',
valid: 'Valid',
invalid: 'Invalid',
expired: 'Expired'
expired: 'Expired',
expired_msg: 'license has expired since {0}. It is recommended to update the license, which does not affect the use of enterprise version functions'
},
member: {
create: 'Add members',
......@@ -668,7 +669,7 @@ export default {
input_phone: 'Please enter the phone number',
input_roles: 'Please select role',
select_users: 'Please select user',
user_name_pattern_error: 'IDs can only contain alphanumeric and ._- and start with a letter!',
user_name_pattern_error: 'IDs can only contain alphanumeric and ._- and start with a letter or number!',
special_characters_are_not_supported: 'Special characters are not supported',
mobile_number_format_is_incorrect: 'Incorrect format of mobile phone number',
email_format_is_incorrect: 'The mailbox format is incorrect',
......@@ -932,7 +933,8 @@ export default {
edit_classification: 'Edit classification',
classification_name: 'Classification Name:',
by_event_details: 'Search by event details',
password_input_error: 'Original password input error'
password_input_error: 'Original password input error',
home_link: 'Home Link'
},
chart: {
empty_hide: 'hide empty',
......@@ -943,6 +945,7 @@ export default {
'3-rank': 'Rank',
'4-location': 'Location',
'5-weather': 'Weather',
'6-power': 'Power',
chinese: 'Chinese',
mark_field: 'Field',
mark_value: 'Value',
......@@ -1179,6 +1182,7 @@ export default {
chart_pie_rose: 'Rose Pie',
chart_pie_donut_rose: 'Rose Donut Pie',
chart_funnel: 'Funnel',
chart_sankey: 'Sankey',
chart_radar: 'Radar',
chart_gauge: 'Gauge',
chart_map: 'Map',
......@@ -1190,6 +1194,7 @@ export default {
y_W: 'Year Week',
y_M_d: 'Year Month Day',
H_m_s: 'Hour Minute Second',
y_M_d_H: 'Year Month Day Hour',
y_M_d_H_m: 'Year Month Day Hour Minute',
y_M_d_H_m_s: 'Year Month Day Hour Minute Second',
date_sub: 'yyyy-MM-dd',
......@@ -1369,6 +1374,8 @@ export default {
table_column_adapt: 'Adapt',
table_column_custom: 'Custom',
chart_table_pivot: 'Pivot Table',
chart_heat_map: 'Heat Map',
chart_3d_column_chart_map: '3D Column Chart Map',
table_pivot_row: 'Data Row',
field_error_tips: 'This field is changed(Include dimension、quota,field type,deleted),please edit again.',
mark_field_error: 'The current field does not exist, please select again',
......@@ -1464,6 +1471,7 @@ export default {
dimension_text_style: 'Name Style',
dimension_letter_space: 'Name Letter Space',
font_family: 'Font Family',
font_family_tip: 'The font will only take effect if it is installed on the operating system',
letter_space: 'Letter Space',
font_shadow: 'Font Shadow',
chart_area: 'Area',
......@@ -1485,6 +1493,8 @@ export default {
label_content: 'Label Content',
percent: 'Percent',
table_index_desc: 'Index Header Name',
table_row_tooltip: 'Row Tooltip',
table_col_tooltip: 'Column Tooltip',
total_sort: 'Total Sort',
total_sort_none: 'None',
total_sort_asc: 'ASC',
......@@ -1528,6 +1538,9 @@ export default {
step: 'Step(px)',
no_function: 'Function not enter,please input.',
chart_flow_map: 'Flow Map',
chart_city_brightness_map: 'City Brightness Map',
chart_float_map: 'Float Map Module',
chart_city_sweep_map: 'City Sweep Map',
start_point: 'Start point(Lat/Long)',
end_point: 'End point(Lat/Long)',
line: 'Line',
......@@ -1544,7 +1557,26 @@ export default {
map_style_macaron: 'Macaron',
map_style_blue: 'Blue',
map_style_darkblue: 'Dark Blue',
map_style_wine: 'Wine'
map_style_wine: 'Wine',
chart_bubble_map: 'bubble map',
map_line_type: 'Line Type',
map_line_width: 'Line Width',
map_line_height: 'Line Height',
map_line_linear: 'Gradient',
map_line_animate: 'Animation',
map_line_animate_duration: 'Animation Duration',
map_line_animate_interval: 'Animation Interval',
map_line_animate_trail_length: 'Animation Trail Length',
map_line_type_line: 'Straight Line',
map_line_type_arc: 'Arc Line',
map_line_type_arc_3d: 'Arc Line 3D',
map_line_type_great_circle: 'Circle',
map_line_color_source_color: 'Starting Color',
map_line_color_target_color: 'End Color',
map_line_theta_offset: 'Radian',
gauge_axis_label: 'Axis Label',
word_size_range: 'Word Size Range',
word_spacing: 'Word Spacing'
},
dataset: {
scope_edit: 'Effective only when editing',
......@@ -1930,8 +1962,8 @@ export default {
jsonpath_info: 'Please fill in JsonPath',
req_param: 'Request parameters',
headers: 'Request header',
query_param: "QUERY param",
query_info: "Follow in the address bar? The following parameters, such as: updateAPI? id=112",
query_param: 'QUERY param',
query_info: 'Follow in the address bar? The following parameters, such as: updateAPI? id=112',
key: 'Key',
value: 'Value',
data_path: 'Extract data',
......@@ -2392,6 +2424,7 @@ export default {
themeDark: 'Dark',
themeCustom: 'Custom',
openHomePage: 'Show Home Page',
auto_identify_mobile_devices: 'Automatically identify mobile devices',
openMarketPage: 'Show Market Page',
mobileBG: 'Mobile Login page BG',
helpLink: 'Help Document Link',
......@@ -2833,7 +2866,8 @@ export default {
geo_json: 'Geo Json',
fileplaceholder: 'Please upload the JSON format coordinate file',
delete_confirm: 'And child nodes will be deleted. Confirm to execute ?',
cur_node: 'Current node'
cur_node: 'Current node',
prohibit_prompts: '000 and 156 are the global village and China area code prefixes respectively. Removal is prohibited. Please use other code prefixes!'
},
map_mapping: {
map: 'Map',
......
......@@ -626,7 +626,8 @@ export default {
status: '授權狀態',
valid: '有效',
invalid: '無效',
expired: '已過期'
expired: '已過期',
expired_msg: 'License已過期,過期時間:{0},為了不影響企業版功能的使用,建議您更新License'
},
member: {
create: '添加成員',
......@@ -668,7 +669,7 @@ export default {
input_roles: '請選擇角色',
select_users: '請選擇用戶',
select_gender: '請選擇性別',
user_name_pattern_error: 'ID只能包含字母数字以及._-并以字母开头!',
user_name_pattern_error: 'ID只能包含字母數字以及._-並以字母或數字開頭!',
special_characters_are_not_supported: '不支持特殊字符',
mobile_number_format_is_incorrect: '手機號碼格式不正確',
email_format_is_incorrect: '郵箱格式不正確',
......@@ -942,6 +943,7 @@ export default {
'3-rank': '排名',
'4-location': '位置',
'5-weather': '天氣',
'6-power': '能源',
chinese: '中文',
mark_field: '字段',
mark_value: '值',
......@@ -1178,6 +1180,7 @@ export default {
chart_pie_rose: '南丁格爾玫瑰圖',
chart_pie_donut_rose: '南丁格爾玫瑰環形圖',
chart_funnel: '漏鬥圖',
chart_sankey: '桑基圖',
chart_radar: '雷達圖',
chart_gauge: '儀表盤',
chart_map: '地圖',
......@@ -1189,6 +1192,7 @@ export default {
y_W: '年周',
y_M_d: '年月日',
H_m_s: '時分秒',
y_M_d_H: '年月日時',
y_M_d_H_m: '年月日時分',
y_M_d_H_m_s: '年月日時分秒',
date_sub: 'yyyy-MM-dd',
......@@ -1368,6 +1372,8 @@ export default {
table_column_adapt: '自適應',
table_column_custom: '自定義',
chart_table_pivot: '透視表',
chart_heat_map: '热力图',
chart_3d_column_chart_map: '3D柱图',
table_pivot_row: '數據行',
field_error_tips: '該字段所對應的數據集原始字段發生變更(包括維度、指標,字段類型,字段被刪除等),建議重新編輯',
mark_field_error: '數據集變更,當前字段不存在,請重新選擇',
......@@ -1463,6 +1469,7 @@ export default {
dimension_text_style: '名稱樣式',
dimension_letter_space: '名稱字間距',
font_family: '字體',
font_family_tip: '只有操作系統上已安裝該字體才能生效',
letter_space: '字間距',
font_shadow: '字體陰影',
chart_area: '面積圖',
......@@ -1484,6 +1491,8 @@ export default {
label_content: '標籤展示',
percent: '占比',
table_index_desc: '表頭名稱',
table_row_tooltip: '行頭提示',
table_col_tooltip: '列頭提示',
total_sort: '總計排序',
total_sort_none: '無',
total_sort_asc: '升序',
......@@ -1522,6 +1531,9 @@ export default {
step: '步長(px)',
no_function: '函數尚未支持直接引用,請在字段表達式中手動輸入。',
chart_flow_map: '流向地圖',
chart_city_brightness_map: '城市亮度圖',
chart_float_map: '漂浮地圖模塊',
chart_city_sweep_map: '圓形掃光城市',
start_point: '起點經緯度',
end_point: '終點經緯度',
line: '線條',
......@@ -1538,7 +1550,25 @@ export default {
map_style_macaron: '馬卡龍',
map_style_blue: '靛青藍',
map_style_darkblue: '極夜藍',
map_style_wine: '醬籽'
map_style_wine: '醬籽',
map_line_type: '類型',
map_line_width: '線條寬度',
map_line_height: '線條高度',
map_line_linear: '漸變',
map_line_animate: '動畫',
map_line_animate_duration: '動畫間隔',
map_line_animate_interval: '軌跡間隔',
map_line_animate_trail_length: '軌跡長度',
map_line_type_line: '直線',
map_line_type_arc: '弧線',
map_line_type_arc_3d: '3D 弧線',
map_line_type_great_circle: '大圓弧',
map_line_color_source_color: '起始顏色',
map_line_color_target_color: '結束顏色',
map_line_theta_offset: '弧度',
gauge_axis_label: '刻度標籤',
word_size_range: '字號區間',
word_spacing: '文字間隔'
},
dataset: {
scope_edit: '僅編輯時生效',
......@@ -1924,8 +1954,8 @@ export default {
jsonpath_info: '請輸入JsonPath',
req_param: '請求參數',
headers: '請求頭',
query_param: "QUERY參數",
query_info: "地址欄中跟在?後面的參數,如:updateapi? id=112",
query_param: 'QUERY參數',
query_info: '地址欄中跟在?後面的參數,如:updateapi? id=112',
key: '鍵',
value: '值',
data_path: '提取數據',
......@@ -2386,6 +2416,7 @@ export default {
themeDark: '深色',
themeCustom: '自定義',
openHomePage: '顯示首頁',
auto_identify_mobile_devices: '自動識別移動設備',
openMarketPage: '顯示模板市場',
mobileBG: '移動端登錄頁背景',
helpLink: '幫助文檔鏈接',
......@@ -2827,7 +2858,8 @@ export default {
geo_json: '坐標文件',
fileplaceholder: '請上傳json格式坐標文件',
delete_confirm: '及子節點都會被刪除,確認執行?',
cur_node: '當前節點'
cur_node: '當前節點',
prohibit_prompts: '000、156分別是地球村和中華人民共和國區域代碼前綴,禁止移除,請使用其他代碼前綴!'
},
map_mapping: {
map: '圖形',
......
......@@ -625,7 +625,8 @@ export default {
status: '授权状态',
valid: '有效',
invalid: '无效',
expired: '已过期'
expired: '已过期',
expired_msg: 'License已过期,过期时间:{0},为了不影响企业版功能的使用,建议您更新License'
},
member: {
create: '添加成员',
......@@ -667,7 +668,7 @@ export default {
input_roles: '请选择角色',
select_users: '请选择用户',
select_gender: '请选择性别',
user_name_pattern_error: 'ID只能包含字母数字以及._-并以字母开头!',
user_name_pattern_error: 'ID只能包含字母数字以及._-并以字母或数字开头!',
special_characters_are_not_supported: '不支持特殊字符',
mobile_number_format_is_incorrect: '手机号码格式不正确',
email_format_is_incorrect: '邮箱格式不正确',
......@@ -930,7 +931,8 @@ export default {
edit_classification: '编辑分类',
classification_name: '分类名称',
by_event_details: '通过事件详情搜索',
password_input_error: '原始密码输入错误'
password_input_error: '原始密码输入错误',
home_link: '首页链接'
},
chart: {
empty_hide: '隐藏空值',
......@@ -941,6 +943,7 @@ export default {
'3-rank': '排名',
'4-location': '位置',
'5-weather': '天气',
'6-power': '能源',
chinese: '中文',
mark_field: '字段',
mark_value: '值',
......@@ -1177,6 +1180,7 @@ export default {
chart_pie_rose: '南丁格尔玫瑰图',
chart_pie_donut_rose: '南丁格尔玫瑰环形图',
chart_funnel: '漏斗图',
chart_sankey: '桑基图',
chart_radar: '雷达图',
chart_gauge: '仪表盘',
chart_map: '地图',
......@@ -1188,6 +1192,7 @@ export default {
y_W: '年周',
y_M_d: '年月日',
H_m_s: '时分秒',
y_M_d_H: '年月日时',
y_M_d_H_m: '年月日时分',
y_M_d_H_m_s: '年月日时分秒',
date_sub: 'yyyy-MM-dd',
......@@ -1367,6 +1372,9 @@ export default {
table_column_adapt: '自适应',
table_column_custom: '自定义',
chart_table_pivot: '透视表',
chart_heat_map: '热力图',
chart_building: '点击建筑',
chart_3d_column_chart_map: '3D柱图',
table_pivot_row: '数据行',
field_error_tips: '该字段所对应的数据集原始字段发生变更(包括维度、指标,字段类型,字段被删除等),建议重新编辑',
mark_field_error: '数据集变更,当前字段不存在,请重新选择',
......@@ -1462,6 +1470,7 @@ export default {
dimension_text_style: '名称样式',
dimension_letter_space: '名称字间距',
font_family: '字体',
font_family_tip: '只有操作系统上已安装该字体才能生效',
letter_space: '字间距',
font_shadow: '字体阴影',
chart_area: '面积图',
......@@ -1483,6 +1492,8 @@ export default {
label_content: '标签展示',
percent: '占比',
table_index_desc: '表头名称',
table_row_tooltip: '行头提示',
table_col_tooltip: '列头提示',
total_sort: '总计排序',
total_sort_none: '无',
total_sort_asc: '升序',
......@@ -1552,7 +1563,14 @@ export default {
map_line_type_great_circle: '大圆弧',
map_line_color_source_color: '起始颜色',
map_line_color_target_color: '结束颜色',
map_line_theta_offset: '弧度'
map_line_theta_offset: '弧度',
chart_bubble_map: '气泡地图',
chart_city_brightness_map: '城市亮度图',
chart_float_map: '漂浮地图模块',
chart_city_sweep_map: '圆形扫光城市',
gauge_axis_label: '刻度标签',
word_size_range: '字号区间',
word_spacing: '文字间隔'
},
dataset: {
scope_edit: '仅编辑时生效',
......@@ -1938,8 +1956,8 @@ export default {
jsonpath_info: '请填入JsonPath',
req_param: '请求参数',
headers: '请求头',
query_param: "QUERY參數",
query_info: "地址栏中跟在?后面的参数,如: updateapi?id=112",
query_param: 'QUERY参数',
query_info: '地址栏中跟在?后面的参数,如: updateapi?id=112',
key: '键',
value: '值',
data_path: '提取数据',
......@@ -2401,6 +2419,7 @@ export default {
themeDark: '深色',
themeCustom: '自定义',
openHomePage: '显示首页',
auto_identify_mobile_devices: '自动识别移动设备',
openMarketPage: '显示模板市场',
mobileBG: '移动端登录页背景',
helpLink: '帮助文档链接',
......@@ -2842,7 +2861,8 @@ export default {
geo_json: '坐标文件',
fileplaceholder: '请上传json格式坐标文件',
delete_confirm: '及子节点都会被删除,确认执行?',
cur_node: '当前节点'
cur_node: '当前节点',
prohibit_prompts: '000、156分别是地球村和中华人民共和国区域代码前缀,禁止移除,请使用其他代码前缀!'
},
map_mapping: {
map: '图形',
......
<template>
<div
v-if="!licValidate && licStatus !== 'no_record'"
class="lic"
v-if="!licValidate && licStatus !== 'no_record' && !tipClosed"
class="lic_tips"
>
<strong>{{ $t(licMsg) }}</strong>
<el-alert
class="lic_alert"
:title="$t(licMsg)"
type="warning"
show-icon
center
@close="closeTip"
/>
</div>
</template>
......@@ -20,9 +29,7 @@ export default {
}
},
computed: {
/* theme() {
return this.$store.state.settings.theme
}, */
licValidate() {
return this.$store.state.lic.validate
},
......@@ -30,40 +37,40 @@ export default {
return this.$store.state.lic.licStatus || ''
},
licMsg() {
if (this.$store.state.lic?.licMsg?.includes('expired')) {
const message = this.$store.state.lic.licMsg
const exp = message.substring(message.indexOf('since ') + 6, message.indexOf(','))
return this.$t('license.expired_msg').replace('{0}', exp)
}
return this.$store.state.lic.licMsg ? ('license.' + this.$store.state.lic.licMsg) : null
},
tipClosed() {
return localStorage.getItem('lic_closed')
}
},
mounted() {
// this.validate()
},
methods: {
// validate() {
// validateLic().then(res => {
// this.lic = true
// this.$store.dispatch('lic/setValidate', true)
// }).catch((e) => {
// this.msg = e.response.data.message
// this.lic = false
// this.$store.dispatch('lic/setValidate', false)
// })
// }
closeTip() {
localStorage.setItem('lic_closed', true)
}
}
}
</script>
<style lang="scss" scoped>
.lic {
height: 24px;
background-color: #c92100;
color: #fff;
text-align: center;
/* padding: 6px 11px; */
position: fixed;
z-index: 1002;
top: 0;
width: 100%;
}
.lic_tips {
position: absolute;
z-index: 2000;
position:absolute;
top: 0;left:0;right:0;
margin: auto;
}
.lic_alert ::v-deep .el-icon-close{
top: 16px !important;
right: 10px !important;
}
</style>
......@@ -47,7 +47,7 @@
>
<notification class="right-menu-item hover-effect" />
<lang-select class="right-menu-item hover-effect" />
<div
<!-- <div
style="height: 100%;padding: 0 8px;"
class="right-menu-item hover-effect"
>
......@@ -58,7 +58,7 @@
>
<svg-icon icon-class="docs" />
</a>
</div>
</div> -->
<el-dropdown
ref="my-drop"
......@@ -281,7 +281,7 @@ export default {
unloadHandler(e) {
this.gap_time = new Date().getTime() - this.beforeUnload_time
if (this.gap_time <= 5) {
this.logout().then(res => {})
// this.logout().then(res => {})
}
},
......
import Vue from "vue";
import Cookies from "js-cookie";
import "@/styles/index.scss"; // global css
import ElementUI from "element-ui";
import Vuetify from "vuetify";
import Fit2CloudUI from "fit2cloud-ui";
import i18n from "./lang"; // internationalization
import App from "./App";
import store from "./store";
import router from "./router";
import message from "./utils/message";
import "@/icons"; // icon
import "@/permission"; // permission control
import api from "@/api/index.js";
import filter from "@/filter/filter";
import directives from "./directive";
import VueClipboard from "vue-clipboard2";
import widgets from "@/components/widget";
import Treeselect from "@riophae/vue-treeselect";
import "@riophae/vue-treeselect/dist/vue-treeselect.css";
import "./utils/dialog";
import DeComplexInput from "@/components/business/conditionTable/DeComplexInput";
import DeComplexSelect from "@/components/business/conditionTable/DeComplexSelect";
import DeViewSelect from "@/components/deViewSelect";
import RemarkEditor from "@/views/chart/components/componentStyle/dialog/RemarkEditor";
import TitleRemark from "@/views/chart/view/TitleRemark";
import "@/components/canvas/customComponent"; // 注册自定义组件
import deBtn from "@/components/deCustomCm/DeBtn.vue";
import "@/utils/DateUtil";
import draggable from "vuedraggable";
import deWebsocket from "@/websocket";
import { GaodeMap } from "@antv/l7-maps";
import * as echarts from "echarts";
import UmyUi from "umy-ui";
import Vue from 'vue'
import Cookies from 'js-cookie'
import '@/styles/index.scss' // global css
import ElementUI from 'element-ui'
import Vuetify from 'vuetify'
import Fit2CloudUI from 'fit2cloud-ui'
import i18n from './lang' // internationalization
import App from './App'
import store from './store'
import router from './router'
import message from './utils/message'
import '@/icons' // icon
import '@/permission' // permission control
import api from '@/api/index.js'
import filter from '@/filter/filter'
import directives from './directive'
import VueClipboard from 'vue-clipboard2'
import widgets from '@/components/widget'
import Treeselect from '@riophae/vue-treeselect'
import '@riophae/vue-treeselect/dist/vue-treeselect.css'
import './utils/dialog'
import DeComplexInput from '@/components/business/conditionTable/DeComplexInput'
import DeComplexSelect from '@/components/business/conditionTable/DeComplexSelect'
import DeViewSelect from '@/components/deViewSelect'
import RemarkEditor from '@/views/chart/components/componentStyle/dialog/RemarkEditor'
import TitleRemark from '@/views/chart/view/TitleRemark'
import '@/components/canvas/customComponent' // 注册自定义组件
import deBtn from '@/components/deCustomCm/DeBtn.vue'
import '@/utils/DateUtil'
import draggable from 'vuedraggable'
import deWebsocket from '@/websocket'
import { GaodeMap } from '@antv/l7-maps'
import * as echarts from 'echarts'
import UmyUi from 'umy-ui'
// 全屏插件
import fullscreen from "vue-fullscreen";
import VueFriendlyIframe from "vue-friendly-iframe";
import vueToPdf from "vue-to-pdf";
import VueVideoPlayer from "vue-video-player";
import "video.js/dist/video-js.css";
import fullscreen from 'vue-fullscreen'
import VueFriendlyIframe from 'vue-friendly-iframe'
import vueToPdf from 'vue-to-pdf'
import VueVideoPlayer from 'vue-video-player'
import 'video.js/dist/video-js.css'
import '@antv/s2/dist/style.min.css'
// 控制标签宽高成比例的指令
import proportion from "vue-proportion-directive";
import proportion from 'vue-proportion-directive'
import xss from "xss";
import xss from 'xss'
// 定义全局XSS解决方法
Object.defineProperty(Vue.prototype, "$xss", {
value: xss,
});
Object.defineProperty(Vue.prototype, '$xss', {
value: xss
})
Vue.config.productionTip = false;
Vue.use(VueClipboard);
Vue.use(widgets);
Vue.component("Draggable", draggable);
Vue.prototype.$api = api;
Vue.config.productionTip = false
Vue.use(VueClipboard)
Vue.use(widgets)
Vue.component('Draggable', draggable)
Vue.prototype.$api = api
Vue.prototype.$echarts = echarts;
Vue.prototype.$gaodeMap = GaodeMap;
Vue.prototype.$echarts = echarts
Vue.prototype.$gaodeMap = GaodeMap
Vue.use(UmyUi);
Vue.use(UmyUi)
Vue.use(fullscreen);
Vue.use(fullscreen)
Vue.use(VueFriendlyIframe);
Vue.use(Vuetify);
Vue.use(VueFriendlyIframe)
Vue.use(Vuetify)
// import TEditor from '@/components/Tinymce/index.vue'
// Vue.component('TEditor', TEditor)
......@@ -75,83 +76,80 @@ Vue.use(Vuetify);
* Currently MockJs will be used in the production environment,
* please remove it before going online ! ! !
*/
if (process.env.NODE_ENV === "production") {
// const { mockXHR } = require('../mock')
// mockXHR()
if (process.env.NODE_ENV === 'production') {
// const { mockXHR } = require('../mock')
// mockXHR()
}
// set ElementUI lang to EN
// Vue.use(ElementUI, { locale })
// 如果想要中文版 element-ui,按如下方式声明
ElementUI.Dialog.props.closeOnClickModal.default = false;
ElementUI.Dialog.props.closeOnPressEscape.default = false;
ElementUI.Dialog.props.closeOnClickModal.default = false
ElementUI.Dialog.props.closeOnPressEscape.default = false
Vue.use(ElementUI, {
size: Cookies.get("size") || "medium", // set element-ui default size
i18n: (key, value) => i18n.t(key, value),
});
size: Cookies.get('size') || 'medium', // set element-ui default size
i18n: (key, value) => i18n.t(key, value)
})
Vue.use(Fit2CloudUI, {
i18n: (key, value) => i18n.t(key, value),
});
i18n: (key, value) => i18n.t(key, value)
})
// Vue.use(VueAxios, axios)
Vue.use(filter);
Vue.use(directives);
Vue.use(message);
Vue.component("Treeselect", Treeselect);
Vue.component("DeComplexInput", DeComplexInput);
Vue.component("DeComplexSelect", DeComplexSelect);
Vue.component("DeViewSelect", DeViewSelect);
Vue.component("RemarkEditor", RemarkEditor);
Vue.component("TitleRemark", TitleRemark);
Vue.component("DeBtn", deBtn);
Vue.use(filter)
Vue.use(directives)
Vue.use(message)
Vue.component('Treeselect', Treeselect)
Vue.component('DeComplexInput', DeComplexInput)
Vue.component('DeComplexSelect', DeComplexSelect)
Vue.component('DeViewSelect', DeViewSelect)
Vue.component('RemarkEditor', RemarkEditor)
Vue.component('TitleRemark', TitleRemark)
Vue.component('DeBtn', deBtn)
Vue.config.productionTip = false;
Vue.config.productionTip = false
Vue.use(vueToPdf);
Vue.use(vueToPdf)
Vue.use(VueVideoPlayer);
Vue.use(VueVideoPlayer)
Vue.use(proportion);
Vue.use(proportion)
Vue.prototype.hasDataPermission = function (pTarget, pSource) {
if (this.$store.state.user.user.isAdmin || pSource === "ignore") {
return true;
Vue.prototype.hasDataPermission = function(pTarget, pSource) {
if (this.$store.state.user.user.isAdmin || pSource === 'ignore') {
return true
}
if (pSource && pTarget) {
return pSource.indexOf(pTarget) > -1;
return pSource.indexOf(pTarget) > -1
}
return false;
};
Vue.prototype.checkPermission = function (pers) {
const permissions = store.getters.permissions;
const hasPermission = pers.every((needP) => {
const result = permissions.includes(needP);
return result;
});
return hasPermission;
};
Vue.use(deWebsocket);
Vue.prototype.$currentHttpRequestList = new Map();
Vue.prototype.$cancelRequest = function (cancelkey) {
return false
}
Vue.prototype.checkPermission = function(pers) {
const permissions = store.getters.permissions
const hasPermission = pers.every(needP => {
const result = permissions.includes(needP)
return result
})
return hasPermission
}
Vue.use(deWebsocket)
Vue.prototype.$currentHttpRequestList = new Map()
Vue.prototype.$cancelRequest = function(cancelkey) {
if (cancelkey) {
if (cancelkey.indexOf("/**") > -1) {
if (cancelkey.indexOf('/**') > -1) {
Vue.prototype.$currentHttpRequestList.forEach((item, key) => {
key.indexOf(cancelkey.split("/**")[0]) > -1 &&
item("Operation canceled by the user.");
});
key.indexOf(cancelkey.split('/**')[0]) > -1 && item('Operation canceled by the user.')
})
} else {
Vue.prototype.$currentHttpRequestList.get(cancelkey) &&
Vue.prototype.$currentHttpRequestList.get(cancelkey)(
"Operation canceled by the user."
);
Vue.prototype.$currentHttpRequestList.get(cancelkey) && Vue.prototype.$currentHttpRequestList.get(cancelkey)('Operation canceled by the user.')
}
}
};
}
new Vue({
router,
store,
i18n,
render: (h) => h(App),
}).$mount("#app");
render: h => h(App)
}).$mount('#app')
import Vue from "vue";
import Router from "vue-router";
import Vue from 'vue'
import Router from 'vue-router'
Vue.use(Router);
Vue.use(Router)
/* Layout */
import Layout from "@/layout";
import Layout from '@/layout'
/**
* Note: sub-menu only appear when route children.length >= 1
......@@ -32,74 +32,71 @@ import Layout from "@/layout";
*/
export const constantRoutes = [
{
path: "/redirect",
path: '/redirect',
component: Layout,
hidden: true,
children: [
{
path: "/redirect/:path(.*)",
component: () => import("@/views/redirect/index"),
},
],
path: '/redirect/:path(.*)',
component: () => import('@/views/redirect/index')
}
]
},
{
path: "/login",
component: () => import("@/views/login/index"),
hidden: true,
path: '/login',
component: () => import('@/views/login/index'),
hidden: true
},
{
path: "/404",
component: () => import("@/views/404"),
hidden: true,
path: '/404',
component: () => import('@/views/404'),
hidden: true
},
{
path: "/401",
component: (resolve) => require(["@/views/401"], resolve),
hidden: true,
path: '/401',
component: (resolve) => require(['@/views/401'], resolve),
hidden: true
},
{
path: "/panelEdit",
path: '/panelEdit',
component: Layout,
redirect: "/panelEdit/edit",
redirect: '/panelEdit/edit',
hidden: true,
children: [
{
path: "edit",
component: () => import("@/views/panel/edit"),
},
],
path: 'edit',
component: () => import('@/views/panel/edit')
}
]
},
{
path: "/delink",
component: () => import("@/views/link"),
hidden: true,
path: '/delink',
component: () => import('@/views/link'),
hidden: true
},
{
path: "/preview/:reportId",
component: () =>
import("@/components/canvas/components/editor/PreviewEject"),
hidden: true,
path: '/preview/:reportId',
component: () => import('@/components/canvas/components/editor/PreviewEject'),
hidden: true
},
{
path: "/previewScreenShot/:reportId/:backScreenShot",
component: () =>
import("@/components/canvas/components/editor/PreviewEject"),
hidden: true,
path: '/previewScreenShot/:reportId/:backScreenShot',
component: () => import('@/components/canvas/components/editor/PreviewEject'),
hidden: true
},
{
path: "/previewFullScreen",
component: () =>
import("@/components/canvas/components/editor/PreviewFullScreen"),
hidden: true,
path: '/previewFullScreen',
component: () => import('@/components/canvas/components/editor/PreviewFullScreen'),
hidden: true
},
{
path: "/de-auto-login",
component: () => import("@/views/DeAutoLogin"),
hidden: true,
},
path: '/de-auto-login',
component: () => import('@/views/DeAutoLogin'),
hidden: true
}
// {
// path: '/',
......@@ -217,22 +214,21 @@ export const constantRoutes = [
// },
// 404 page must be placed at the end !!!
// { path: '*', redirect: '/404', hidden: true }
];
]
const createRouter = () =>
new Router({
// mode: 'history', // require service support
mode: "hash",
scrollBehavior: () => ({ y: 0 }),
routes: [],
});
const createRouter = () => new Router({
// mode: 'history', // require service support
mode: 'hash',
scrollBehavior: () => ({ y: 0 }),
routes: constantRoutes
})
const router = createRouter();
const router = createRouter()
// Detail see: https://github.com/vuejs/vue-router/issues/1234#issuecomment-357941465
export function resetRouter() {
const newRouter = createRouter();
router.matcher = newRouter.matcher; // reset router
const newRouter = createRouter()
router.matcher = newRouter.matcher // reset router
}
export default router;
export default router
......@@ -2,7 +2,8 @@ module.exports = {
TokenKey: 'Authorization',
RefreshTokenKey: 'refreshauthorization',
LinkTokenKey: 'LINK-PWD-TOKEN',
title: 'DataEase',
// title: 'DataEase',
title: 'DataGalaxy',
/* for sso */
IdTokenKey: 'IdToken',
AccessTokenKey: 'AccessToken',
......
......@@ -22,14 +22,14 @@ import layer from '@/components/canvas/store/layer'
import snapshot from '@/components/canvas/store/snapshot'
import lock from '@/components/canvas/store/lock'
import task from './modules/task'
import { formatCondition, valueValid } from '@/utils/conditionUtil'
import { Condition } from '@/components/widget/bean/Condition'
import {formatCondition, valueValid} from '@/utils/conditionUtil'
import {Condition} from '@/components/widget/bean/Condition'
import { DEFAULT_COMMON_CANVAS_STYLE_STRING } from '@/views/panel/panel'
import {DEFAULT_COMMON_CANVAS_STYLE_STRING} from '@/views/panel/panel'
import bus from '@/utils/bus'
import { BASE_MOBILE_STYLE } from '@/components/canvas/customComponent/component-list'
import { TYPE_CONFIGS } from '@/views/chart/chart/util'
import { deepCopy } from '@/components/canvas/utils/utils'
import {BASE_MOBILE_STYLE} from '@/components/canvas/customComponent/component-list'
import {TYPE_CONFIGS} from '@/views/chart/chart/util'
import {deepCopy} from '@/components/canvas/utils/utils'
Vue.use(Vuex)
......@@ -153,7 +153,8 @@ const data = {
previewVisible: false,
previewComponentData: [],
currentCanvasNewId: [],
lastViewRequestInfo: {}
lastViewRequestInfo: {},
multiplexingStyleAdapt: true //复用样式跟随主题
},
mutations: {
...animation.mutations,
......@@ -198,7 +199,7 @@ const data = {
})
},
setCurComponent(state, { component, index }) {
setCurComponent(state, {component, index}) {
if (!component && state.curComponent) {
Vue.set(state.curComponent, 'editing', false)
}
......@@ -236,7 +237,7 @@ const data = {
state.previewCanvasScale.scalePointHeight = scale.scaleHeight
}
},
setShapeStyle({ curComponent, canvasStyleData, curCanvasScaleMap }, { top, left, width, height, rotate }) {
setShapeStyle({curComponent, canvasStyleData, curCanvasScaleMap}, {top, left, width, height, rotate}) {
if (curComponent) {
const curCanvasScaleSelf = curCanvasScaleMap[curComponent.canvasId]
if (top || top === 0) curComponent.style.top = Math.round((top / curCanvasScaleSelf.scalePointHeight))
......@@ -247,7 +248,7 @@ const data = {
}
},
setShapeSingleStyle({ curComponent }, { key, value }) {
setShapeSingleStyle({curComponent}, {key, value}) {
curComponent.style[key] = value
},
......@@ -271,14 +272,14 @@ const data = {
setMobileComponentData(state, mobileComponentData = []) {
Vue.set(state, 'mobileComponentData', mobileComponentData)
},
addComponent(state, { component, index }) {
addComponent(state, {component, index}) {
if (index !== undefined) {
state.componentData.splice(index, 0, component)
} else {
state.componentData.push(component)
state.currentCanvasNewId.push(component.id)
}
this.commit('setCurComponent', { component: component, index: index || state.componentData.length - 1 })
this.commit('setCurComponent', {component: component, index: index || state.componentData.length - 1})
},
removeViewFilter(state, componentId) {
state.componentData = state.componentData.map(item => {
......@@ -362,10 +363,18 @@ const data = {
// 添加联动 下钻 等过滤组件
addViewTrackFilter(state, data) {
const dimensionSort = deepCopy(data.dimensionList)
const viewId = data.viewId
let trackInfo
if (data.option === 'linkage') {
trackInfo = state.nowPanelTrackInfo
// 兼容情况,当源视图多个字段匹配目标视图一个字段的时候,默认只保留当前点击的维度,将改维度排序到组件结尾,去重时即可保留
const activeDimensionIndex = data.dimensionList.findIndex(dimension => dimension.id === data.name)
if (activeDimensionIndex > -1 && activeDimensionIndex != dimensionSort.length - 1) {
const dimensionLast = dimensionSort[dimensionSort.length - 1]
dimensionSort[dimensionSort.length - 1] = dimensionSort[activeDimensionIndex]
dimensionSort[activeDimensionIndex] = dimensionLast
}
} else {
trackInfo = state.nowPanelJumpInfoTargetPanel
}
......@@ -378,7 +387,7 @@ const data = {
const currentFilters = element.linkageFilters || [] // 当前联动filter
data.dimensionList.forEach(dimension => {
dimensionSort.forEach(dimension => {
const sourceInfo = viewId + '#' + dimension.id
// 获取所有目标联动信息
const targetInfoList = trackInfo[sourceInfo] || []
......@@ -393,7 +402,7 @@ const data = {
while (j--) {
const filter = currentFilters[j]
// 兼容性准备 viewIds 只会存放一个值
if (targetFieldId === filter.fieldId && filter.viewIds.includes(targetViewId)) {
if (targetFieldId === filter.fieldId && filter.viewIds.includes(targetViewId) && filter.value[0] !== data.value) {
currentFilters.splice(j, 1)
}
}
......@@ -413,7 +422,7 @@ const data = {
// 联动的视图情况历史条件
// const currentFilters = []
data.dimensionList.forEach(dimension => {
dimensionSort.forEach(dimension => {
const sourceInfo = viewId + '#' + dimension.id
// 获取所有目标联动信息
const targetInfoList = trackInfo[sourceInfo] || []
......@@ -455,7 +464,7 @@ const data = {
const currentFilters = element.outerParamsFilters || [] // 外部参数信息
// 外部参数 可能会包含多个参数
Object.keys(params).forEach(function(sourceInfo) {
Object.keys(params).forEach(function (sourceInfo) {
// 获取外部参数的值 sourceInfo 是外部参数名称 支持数组传入
let paramValue = params[sourceInfo]
let operator = 'in'
......@@ -654,13 +663,13 @@ const data = {
}
}
},
updateComponentViewsData(state, { viewId, propertyKey, propertyValue }) {
updateComponentViewsData(state, {viewId, propertyKey, propertyValue}) {
state.componentViewsData[viewId][propertyKey] = propertyValue
},
removeCurMultiplexingComponentWithId(state, id) {
delete state.curMultiplexingComponents[id]
},
addCurMultiplexingComponent(state, { component, componentId }) {
addCurMultiplexingComponent(state, {component, componentId}) {
if (componentId) {
if (component.type === 'custom-button' && component.serviceName === 'buttonSureWidget') {
const copyComponent = deepCopy(component)
......@@ -757,7 +766,7 @@ const data = {
state.changeProperties[propertyInfo.custom][propertyInfo.property] = propertyInfo.value
},
initCanvasBase(state) {
this.commit('setCurComponent', { component: null, index: null })
this.commit('setCurComponent', {component: null, index: null})
this.commit('clearLinkageSettingInfo', false)
this.commit('resetViewEditInfo')
this.commit('initCurMultiplexingComponents')
......@@ -847,7 +856,10 @@ const data = {
}
})
bus.$emit('clear_panel_linkage', { viewId: viewId })
bus.$emit('clear_panel_linkage', {viewId: viewId})
},
setMultiplexingStyleAdapt(state, value) {
state.multiplexingStyleAdapt = value
}
},
modules: {
......
......@@ -70,7 +70,7 @@ const mutations = {
},
SET_PASSWORD_MODIFIED: (state, passwordModified) => {
state.passwordModified = passwordModified
},
}
}
const actions = {
......@@ -110,8 +110,8 @@ const actions = {
reject('Verification failed, please Login again.')
}
const historyUserId = localStorage.getItem('userId')
if(historyUserId && historyUserId !== data.userId+''){
const clearLocalStorage = [ 'panel-main-tree', 'panel-default-tree','chart-tree','dataset-tree']
if (historyUserId && historyUserId !== data.userId + '') {
const clearLocalStorage = ['panel-main-tree', 'panel-default-tree', 'chart-tree', 'dataset-tree']
clearLocalStorage.forEach((item) => {
localStorage.removeItem(item)
})
......
......@@ -800,6 +800,9 @@ div:focus {
.amap-container {
// position: inherit !important;
right: 0px;
.amap-copyright{
opacity: 0;
}
}
.l7-scene {
......@@ -1760,4 +1763,8 @@ div:focus {
.el-table__fixed-right::before {
display: none;
}
.l7-control-logo {
display: none;
}
\ No newline at end of file
export const buildParam = (conditions, keyword) => {
const result = {}
conditions.forEach(condition => {
const key = condition.field
const val = condition.value
const keyArray = key.split('.')
const len = keyArray.length
const fieldKey = keyArray[len - 1]
result[formatField(fieldKey)] = val
})
if (keyword === 0 || !!keyword) {
result['keyword'] = keyword
}
return result
}
const formatField = fieldText => {
const array = fieldText.split('_')
let result = ''
for (let index = 0; index < array.length; index++) {
let temp = array[index]
if (index) {
temp = temp.substr(0, 1).toLocaleUpperCase() + temp.substr(1)
}
result += temp
}
return result
}
......@@ -109,6 +109,7 @@ service.interceptors.response.use(response => {
config.loading && tryHideLoading(store.getters.currentPath)
let msg = ''
if (error.response) {
checkAuth(error.response)
msg = error.response.data.message || error.response.data
......@@ -118,7 +119,7 @@ service.interceptors.response.use(response => {
if (msg.length > 600) {
msg = msg.slice(0, 600)
}
!config.hideMsg && (!headers['authentication-status']) && !msg?.startsWith("MultiLoginError") && $error(msg)
!config.hideMsg && (!headers['authentication-status']) && !msg?.startsWith('MultiLoginError') && $error(msg)
return Promise.reject(config.url === '/dataset/table/sqlPreview' ? msg : error)
})
const checkDownError = response => {
......
......@@ -110,7 +110,7 @@
<el-col style="width: 130px!important;">
<el-upload
action=""
accept=".jpeg,.jpg,.png,.gif,.svg"
accept=".jpeg,.jpg,.png,.gif"
class="avatar-uploader"
list-type="picture-card"
:class="{disabled:uploadDisabled}"
......@@ -228,8 +228,9 @@ export default {
...style
}
} else if (this.canvasStyleData.panel.backgroundType === 'color') {
const colorRGBA = hexColorToRGBA(this.canvasStyleData.panel.color, this.canvasStyleData.panel.alpha === undefined ? 100 : this.canvasStyleData.panel.alpha)
style = {
background: this.canvasStyleData.panel.color,
background: colorRGBA,
...style
}
}
......
......@@ -51,12 +51,12 @@
>
<el-color-picker
ref="colorPicker"
@change="colorChange"
v-model="curComponent.commonBackground.color"
:disabled="!curComponent.commonBackground.backgroundColorSelect"
size="mini"
class="color-picker-style"
:predefine="predefineColors"
@change="colorChange"
/>
</el-col>
<el-col :span="3">
......@@ -263,6 +263,7 @@ import { deepCopy, imgUrlTrans } from '@/components/canvas/utils/utils'
import { COLOR_PANEL } from '@/views/chart/chart/chart'
import { uploadFileResult } from '@/api/staticResource/staticResource'
import { COMMON_BACKGROUND_NONE } from '@/components/canvas/customComponent/component-list'
import {hexColorToRGBA} from "@/views/chart/chart/util";
export default {
name: 'Background',
......@@ -290,8 +291,9 @@ export default {
...style
}
} else if (this.canvasStyleData.panel.backgroundType === 'color') {
const colorRGBA = hexColorToRGBA(this.canvasStyleData.panel.color, this.canvasStyleData.panel.alpha === undefined ? 100 : this.canvasStyleData.panel.alpha)
style = {
background: this.canvasStyleData.panel.color,
background: colorRGBA,
...style
}
}
......
......@@ -45,6 +45,16 @@ export function baseBarOptionAntV(plot, container, chart, action, isGroup, isSta
yAxis: yAxis,
slider: slider,
annotations: analyse,
brush: {
enabled: true,
isStartEnable: (context) => {
// 按住 shift 键,才能开启交互
if (context.event.gEvent.originalEvent?.shiftKey) {
return true
}
return false
}
},
interactions: [
{
type: 'legend-active', cfg: {
......@@ -162,6 +172,16 @@ export function hBaseBarOptionAntV(plot, container, chart, action, isGroup, isSt
yAxis: yAxis,
slider: slider,
annotations: analyse,
brush: {
enabled: true,
isStartEnable: (context) => {
// 按住 shift 键,才能开启交互
if (context.event.gEvent.originalEvent?.shiftKey) {
return true
}
return false
}
},
interactions: [
{
type: 'legend-active', cfg: {
......
import { Scene, PointLayer } from '@antv/l7'
import { GaodeMap } from '@antv/l7-maps'
import { getLanguage } from '@/lang'
export function baseBubbleMapOption(chartDom, chartId, chart, action) {
const xAxis = JSON.parse(chart.xaxis)
const yAxis = JSON.parse(chart.yaxis)
let customAttr
if (chart.customAttr) {
customAttr = JSON.parse(chart.customAttr)
}
const size = customAttr.size
const color = customAttr.color
const mapStyle = `amap://styles/${color.mapStyle ? color.mapStyle : 'normal'}`
const lang = getLanguage().includes('zh') ? 'zh' : 'en'
let init = false
if (!chartDom?.map) {
try {
chartDom.destroy()
} catch (e) {
// ignore
}
chartDom = new Scene({
id: chartId,
map: new GaodeMap({
lang: lang,
// pitch: size.mapPitch,
style: mapStyle,
// style: 'dark',
center: [104.58631, 30.71882], // 成阿中心经纬度
zoom: 2.194613775109773,
maxZoom: 10
}),
logoVisible: false
})
init = true
} else {
if (chartDom.map) {
chartDom.setPitch(size.mapPitch)
chartDom.setMapStyle(mapStyle)
}
}
if (xAxis?.length < 2 || yAxis?.lang < 1) {
chartDom.removeAllLayer()
return chartDom
}
const newTableRow = chart.data.tableRow.map((item, index) => {
return {
type: 'Feature',
geometry: {
type: 'Point',
coordinates: [item[xAxis[0].dataeaseName], item[xAxis[1].dataeaseName]]
},
properties: {
capacity: item[yAxis[0].dataeaseName]
}
}
})
const mapData = { type: 'FeatureCollection', features: newTableRow }
chartDom.removeAllLayer()
.then(() => {
const pointLayer = new PointLayer({})
.source(mapData)
.shape('circle')
.size('capacity', [0, 16])
.color('capacity', color?.colors)
.active(true)
.style({
opacity: 0.5,
strokeWidth: 0
})
if (!init) {
chartDom.addLayer(pointLayer)
}
chartDom.on('loaded', () => {
chartDom.addLayer(pointLayer)
})
})
return chartDom
}
import { Scene } from '@antv/l7'
import { GaodeMap } from '@antv/l7-maps'
import { ThreeLayer, ThreeRender } from '@antv/l7-three'
import * as THREE from 'three'
import { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader'
export function baseBuildingOptionAntV(scene, container, chart, action) {
scene = new Scene({
id: container,
map: new GaodeMap({
center: [111.4453125, 32.84267363195431],
pitch: 45,
rotation: 30,
zoom: 12
})
})
scene.on('loaded', () => {
scene.registerRenderService(ThreeRender)
const threeJSLayer = new ThreeLayer({
enableMultiPassRenderer: false,
onAddMeshes: (threeScene, layer) => {
threeScene.add(new THREE.AmbientLight(0xffffff))
const sunlight = new THREE.DirectionalLight(0xffffff, 0.25)
sunlight.position.set(0, 80000000, 100000000)
sunlight.matrixWorldNeedsUpdate = true
threeScene.add(sunlight)
const center = scene.getCenter()
const cubeGeometry = new THREE.BoxBufferGeometry(10000, 10000, 10000)
const cubeMaterial = new THREE.MeshNormalMaterial({ side: THREE.DoubleSide })
const cube = new THREE.Mesh(cubeGeometry, cubeMaterial)
layer.setObjectLngLat(cube, [center.lng + 0.05, center.lat], 0)
threeScene.add(cube)
// 使用 Three.js glTFLoader 加载模型
const loader = new GLTFLoader()
loader.load(
`${process.env.VUE_APP_BASE}/gift/dujiangyan.gltf`,
gltf => {
debugger
const gltfScene = gltf.scene
setDouble(gltfScene)
layer.adjustMeshToMap(gltfScene)
// gltfScene.scale.set(1000, 1000, 1000)
layer.setMeshScale(gltfScene, 1000, 1000, 1000)
layer.setObjectLngLat(
gltfScene,
[center.lng, center.lat],
0
)
const animations = gltf.animations
if (animations && animations.length) {
const mixer = new THREE.AnimationMixer(gltfScene)
const animation = animations[2]
const action = mixer.clipAction(animation)
action.play()
layer.addAnimateMixer(mixer)
}
// layer.setObjectLngLat(gltfScene, [center.lng + 0.05, center.lat] as ILngLat, 0)
let t = 0
setInterval(() => {
t += 0.01
layer.setObjectLngLat(
gltfScene,
[center.lng, center.lat + Math.sin(t) * 0.1],
0
)
}, 16)
// 向场景中添加模型
threeScene.add(gltfScene)
// 重绘图层
layer.render()
}
)
}
}).animate(true)
scene.addLayer(threeJSLayer)
})
function setDouble(object) {
if (object.children && object.children.length && object.children.length > 0) {
object.children.map(child => setDouble(child))
} else if (object.material) {
object.material.side = THREE.DoubleSide
}
}
// 开始渲染
if (scene) {
scene.destroy()
}
return scene
}
......@@ -35,7 +35,7 @@ export const DEFAULT_COLOR_CASE = {
mapStyle: 'normal',
mapLineGradient: false,
mapLineSourceColor: '#146C94',
mapLineTargetColor: '#576CBC',
mapLineTargetColor: '#576CBC'
}
export const DEFAULT_COLOR_CASE_DARK = {
......@@ -57,7 +57,7 @@ export const DEFAULT_COLOR_CASE_DARK = {
mapStyle: 'darkblue',
mapLineGradient: false,
mapLineSourceColor: '#2F58CD',
mapLineTargetColor: '#3795BD',
mapLineTargetColor: '#3795BD'
}
export const DEFAULT_SIZE = {
barDefault: true,
......@@ -86,6 +86,12 @@ export const DEFAULT_SIZE = {
tableHeaderAlign: 'left',
tableItemAlign: 'right',
tableAutoBreakLine: false,
tableRowTooltip: {
show: false
},
tableColTooltip: {
show: false
},
gaugeMinType: 'fix', // fix or dynamic
gaugeMinField: {
id: '',
......@@ -100,6 +106,7 @@ export const DEFAULT_SIZE = {
gaugeMax: 100,
gaugeStartAngle: 225,
gaugeEndAngle: -45,
gaugeAxisLine: true,
gaugeTickCount: 5,
dimensionFontSize: 18,
quotaFontSize: 18,
......@@ -145,7 +152,9 @@ export const DEFAULT_SIZE = {
mapLineAnimate: true,
mapLineAnimateDuration: 3,
mapLineAnimateInterval: 1,
mapLineAnimateTrailLength: 1
mapLineAnimateTrailLength: 1,
wordSizeRange: [8, 32],
wordSpacing: 6
}
export const DEFAULT_SUSPENSION = {
show: true
......@@ -1143,6 +1152,13 @@ export const CHART_FONT_FAMILY = [
{ name: '楷体', value: 'KaiTi' }
]
export const CHART_CONT_FAMILY_MAP = {
'Microsoft YaHei': 'Microsoft YaHei',
'SimSun': 'SimSun, "Songti SC", STSong',
'SimHei': 'SimHei, Helvetica',
'KaiTi': 'KaiTi, "Kaiti SC", STKaiti'
}
export const CHART_FONT_LETTER_SPACE = [
{ name: '0px', value: '0' },
{ name: '1px', value: '1' },
......
import { Scene, PointLayer } from '@antv/l7'
import { GaodeMap } from '@antv/l7-maps'
import { getLanguage } from '@/lang'
export function baseCityBrightnessMapOptionAntV(chartDom, chartId, chart, action) {
// console.log('亮度===', chart)
const xAxis = JSON.parse(chart.xaxis)
const yAxis = JSON.parse(chart.yaxis)
// console.log('chart==chart.data.tableRow==', chart, chart.data.tableRow)
// console.log('xAxis,yAxis', xAxis, yAxis)
let customAttr
if (chart.customAttr) {
customAttr = JSON.parse(chart.customAttr)
}
const size = customAttr.size
const color = customAttr.color
const mapStyle = `amap://styles/${color.mapStyle ? color.mapStyle : 'normal'}`
const lang = getLanguage().includes('zh') ? 'zh' : 'en'
let init = false
if (!chartDom?.map) {
try {
chartDom.destroy()
} catch (e) {
// ignore
}
chartDom = new Scene({
id: chartId,
map: new GaodeMap({
lang: lang,
pitch: size.mapPitch,
// pitch: 64.88, // 地图倾角
style: mapStyle,
// style: 'dark'
// center: [116.41667, 39.91667], // 地图中心经纬度-北京
zoom: 12,
// maxZoom: 20
center: [114.060288, 22.53684] // 数据集是深圳市区的点,中心先设为深圳
// center: [104.58631, 30.71882] // 成阿中心经纬度
}),
logoVisible: false
})
init = true
} else {
if (chartDom.map) {
chartDom.setPitch(size.mapPitch)
chartDom.setMapStyle(mapStyle)
}
}
if (xAxis?.length < 2 || yAxis?.length < 1) {
chartDom.removeAllLayer()
return chartDom
}
const newTableRow = chart.data.tableRow.map((item, index) => {
return {
type: 'Feature',
properties: {
h8: item[yAxis[0].dataeaseName]// 0到6
},
geometry: {
type: 'Point',
coordinates: [item[xAxis[0].dataeaseName], item[xAxis[1].dataeaseName]]
},
// bbox 参数: 使用边界框(bbox)指定静态图像的整个视口
bbox: [item[xAxis[0].dataeaseName], item[xAxis[1].dataeaseName], item[xAxis[0].dataeaseName], item[xAxis[1].dataeaseName]]
}
})
const mapData = { type: 'FeatureCollection', features: newTableRow }
// console.log('mapData', mapData)
chartDom.removeAllLayer()
.then(() => {
const pointLayer = new PointLayer({})
.source(mapData)
.size(2)
.color('h8', color?.colors)
// .color('h8', [
// '#0A3663',
// '#1558AC',
// '#3771D9',
// '#4D89E5',
// '#64A5D3',
// '#72BED6',
// '#83CED6',
// '#A6E1E0',
// '#B8EFE2',
// '#D7F9F0'
// ])
if (!init) {
chartDom.addLayer(pointLayer)
}
chartDom.on('loaded', () => {
chartDom.addLayer(pointLayer)
})
})
return chartDom
}
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -141,6 +141,11 @@ export function getLabel(chart) {
if (l.position === 'inner') {
label.offset = -10
}
} else if (chart.type.includes('bar')) {
label = {
layout: [{ type: 'limit-in-canvas' }],
position: l.position
}
} else {
label = {
position: l.position
......@@ -588,9 +593,11 @@ export function getXAxis(chart) {
stroke: axisCfg.lineStyle.color
}
} : null
const rotate = parseInt(a.axisLabel.rotate)
const label = a.axisLabel.show ? {
rotate: parseInt(a.axisLabel.rotate) * Math.PI / 180,
rotate: rotate * Math.PI / 180,
style: {
textAlign: rotate > 20 ? 'start' : rotate < -20 ? 'end' : 'center',
fill: a.axisLabel.color,
fontSize: parseInt(a.axisLabel.fontSize)
},
......@@ -623,8 +630,31 @@ export function getXAxis(chart) {
const axisValue = a.axisValue
if (chart.type.includes('horizontal')) {
if (axisValue && !axisValue.auto) {
axisValue.min && (axis.minLimit = parseFloat(axisValue.min))
axisValue.max && (axis.maxLimit = parseFloat(axisValue.max))
const yAxisSeriesMaxList = []
const maxList = []
chart.data.data.forEach(ele => {
maxList.push(ele.value)
})
yAxisSeriesMaxList.push(Math.max.apply(null, maxList))
if (yAxisSeriesMaxList.length > 0 && !isNaN(axisValue.max)) {
const max = Math.max.apply(null, yAxisSeriesMaxList)
if (max <= parseFloat(axisValue.max)) {
axisValue.max && (axis.maxLimit = axis.max = parseFloat(axisValue.max))
}
}
const yAxisSeriesMinList = []
const minList = []
chart.data.data.forEach(ele => {
minList.push(ele.value)
})
yAxisSeriesMinList.push(Math.min.apply(null, minList))
if (yAxisSeriesMinList.length > 0 && !isNaN(axisValue.min)) {
const min = Math.min.apply(null, yAxisSeriesMinList)
if (min >= parseFloat(axisValue.min)) {
axisValue.min && (axis.minLimit = axis.min = parseFloat(axisValue.min))
}
}
axisValue.splitCount && (axis.tickCount = parseFloat(axisValue.splitCount))
}
}
......@@ -712,8 +742,31 @@ export function getYAxis(chart) {
const axisValue = a.axisValue
if (!chart.type.includes('horizontal')) {
if (axisValue && !axisValue.auto) {
axisValue.min && (axis.minLimit = axis.min = parseFloat(axisValue.min))
axisValue.max && (axis.maxLimit = axis.max = parseFloat(axisValue.max))
const yAxisSeriesMaxList = []
const maxList = []
chart.data.data.forEach(ele => {
maxList.push(ele.value)
})
yAxisSeriesMaxList.push(Math.max.apply(null, maxList))
if (yAxisSeriesMaxList.length > 0 && !isNaN(axisValue.max)) {
const max = Math.max.apply(null, yAxisSeriesMaxList)
if (max <= parseFloat(axisValue.max)) {
axisValue.max && (axis.maxLimit = axis.max = parseFloat(axisValue.max))
}
}
const yAxisSeriesMinList = []
const minList = []
chart.data.data.forEach(ele => {
minList.push(ele.value)
})
yAxisSeriesMinList.push(Math.min.apply(null, minList))
if (yAxisSeriesMinList.length > 0 && !isNaN(axisValue.min)) {
const min = Math.min.apply(null, yAxisSeriesMinList)
if (min >= parseFloat(axisValue.min)) {
axisValue.min && (axis.minLimit = axis.min = parseFloat(axisValue.min))
}
}
axisValue.splitCount && (axis.tickCount = parseFloat(axisValue.splitCount))
}
}
......
import { Scene, PointLayer, PolygonLayer, LineLayer } from '@antv/l7'
import { GaodeMap } from '@antv/l7-maps'
import { getLanguage } from '@/lang'
export function baseFloatMapOption(chartDom, chartId, chart, action) {
const xAxis = JSON.parse(chart.xaxis)
let customAttr
if (chart.customAttr) {
customAttr = JSON.parse(chart.customAttr)
}
const size = customAttr.size
const color = customAttr.color
const mapStyle = `amap://styles/${color.mapStyle ? color.mapStyle : 'normal'}`
const lang = getLanguage().includes('zh') ? 'zh' : 'en'
let init = false
if (!chartDom?.map) {
try {
chartDom.destroy()
} catch (e) {
// ignore
}
chartDom = new Scene({
id: chartId,
map: new GaodeMap({
lang: lang,
pitch: size.mapPitch,
// style: mapStyle,
style: 'dark',
// pitch: 60,
// center: [104.58631, 30.71882], // 成阿中心经纬度
zoom: 6.2,
maxZoom: 10
}),
logoVisible: false
})
init = true
} else {
if (chartDom.map) {
chartDom.setPitch(size.mapPitch)
// chartDom.setMapStyle(mapStyle)
}
}
if (xAxis?.length < 3) {
chartDom.removeAllLayer()
return chartDom
}
const texts = []
const newTableRow = chart.data.tableRow.map((item, index) => {
const name = item[xAxis[0].dataeaseName]
const center = JSON.parse(item[xAxis[1].dataeaseName])
const [lng, lat] = center
texts.push({ name, lng, lat })
return {
type: 'Feature',
geometry: {
type: 'MultiPolygon',
coordinates: JSON.parse(item[xAxis[2].dataeaseName])
},
properties: {
name: item[xAxis[0].dataeaseName],
center: JSON.parse(item[xAxis[1].dataeaseName])
}
}
})
const mapData = { type: 'FeatureCollection', features: newTableRow }
const proData = { type: 'FeatureCollection', features: [newTableRow[0]] }
console.log(mapData, proData, texts)
chartDom.removeAllLayer()
.then(() => {
const textLayer = new PointLayer({ zIndex: 2 })
.source(texts, {
parser: {
type: 'json',
x: 'lng',
y: 'lat'
}
})
.shape('name', 'text')
.size(14)
.color('#0ff')
.style({
textAnchor: 'center', // 文本相对锚点的位置 center|left|right|top|bottom|top-left
spacing: 2, // 字符间距
padding: [1, 1], // 文本包围盒 padding [水平,垂直],影响碰撞检测结果,避免相邻文本靠的太近
stroke: '#0ff', // 描边颜色
strokeWidth: 0.2, // 描边宽度
raisingHeight: 200000 + 150000 + 10000,
textAllowOverlap: true
})
const lineDown = new LineLayer()
.source(mapData)
.shape('line')
.color('#0DCCFF')
.size(1)
.style({
raisingHeight: 200000
})
const lineUp = new LineLayer({ zIndex: 1 })
.source(mapData)
.shape('line')
.color('#0DCCFF')
.size(1)
.style({
raisingHeight: 200000 + 150000
})
const lineLayer = new LineLayer()
.source(proData)
.shape('wall')
.size(150000)
.style({
heightfixed: true,
opacity: 0.6,
sourceColor: '#0DCCFF',
targetColor: 'rbga(255,255,255, 0)'
})
const provincelayer = new PolygonLayer({})
.source(proData)
.size(150000)
.shape('extrude')// shape 为 extrude 几何图层用于绘制 3D 的几何体
.color('#0DCCFF')
.active({
color: 'rgb(100,230,255)'
})
.style({
heightfixed: true, // heightFixed 设置 3D 填充图的高度时候固定
pickLight: true, // pickLight 设置 3D 填充图的拾取高亮色是否计算光照。
raisingHeight: 200000,
opacity: 0.8
})
provincelayer.on('mousemove', () => {
provincelayer.style({
raisingHeight: 200000 + 100000
})
lineDown.style({
raisingHeight: 200000 + 100000
})
lineUp.style({
raisingHeight: 200000 + 150000 + 100000
})
textLayer.style({
raisingHeight: 200000 + 150000 + 10000 + 100000
})
})
provincelayer.on('unmousemove', () => {
provincelayer.style({
raisingHeight: 200000
})
lineDown.style({
raisingHeight: 200000
})
lineUp.style({
raisingHeight: 200000 + 150000
})
textLayer.style({
raisingHeight: 200000 + 150000 + 10000
})
})
if (!init) {
chartDom.addLayer(textLayer)// 地图文字
chartDom.addLayer(lineDown)// 漂浮块底部
chartDom.addLayer(lineUp)// 漂浮块顶部线
chartDom.addLayer(lineLayer)
chartDom.addLayer(provincelayer)
}
chartDom.on('loaded', () => {
chartDom.addLayer(textLayer)// 地图文字
chartDom.addLayer(lineDown)// 漂浮块底部
chartDom.addLayer(lineUp)// 漂浮块顶部线
chartDom.addLayer(lineLayer)
chartDom.addLayer(provincelayer)
})
})
return chartDom
}
......@@ -67,7 +67,12 @@ export function baseGaugeOption(chart_option, chart, scale = 1) {
width: getScaleValue(2, scale) // 刻度线宽度
}
}
let showAxisLine = customAttr.size.gaugeAxisLine
if (showAxisLine === null || showAxisLine === undefined) {
showAxisLine = true
}
chart_option.series[0].axisLabel = {
show: showAxisLine,
distance: getScaleValue(20, scale), // 刻度值文字里刻度线距离
fontSize: getScaleValue(20, scale)// 刻度值字体大小
}
......
......@@ -14,6 +14,14 @@ export function baseGaugeOptionAntV(plot, container, chart, action, scale = 1) {
const data = chart.data.series[0].data[0]
// size
let customAttr = {}
let axisLabel = {
style: {
fontSize: getScaleValue(14, scale) // 刻度值字体大小
},
formatter: function(v) {
return v === '0' ? v : (v * 100 + '%')
}
}
if (chart.customAttr) {
customAttr = JSON.parse(chart.customAttr)
if (customAttr.size) {
......@@ -33,6 +41,9 @@ export function baseGaugeOptionAntV(plot, container, chart, action, scale = 1) {
}
startAngel = parseInt(size.gaugeStartAngle) * Math.PI / 180
endAngel = parseInt(size.gaugeEndAngle) * Math.PI / 180
if (customAttr.size.gaugeAxisLine === false) {
axisLabel = false
}
}
}
const per = (parseFloat(data) - parseFloat(min)) / (parseFloat(max) - parseFloat(min))
......@@ -101,14 +112,7 @@ export function baseGaugeOptionAntV(plot, container, chart, action, scale = 1) {
},
axis: {
tickInterval: 0.2,
label: {
style: {
fontSize: getScaleValue(14, scale) // 刻度值字体大小
},
formatter: function(v) {
return v === '0' ? v : (v * 100 + '%')
}
},
label: axisLabel,
tickLine: {
length: getScaleValue(12, scale) * -1, // 刻度线长度
style: {
......
import { Scene, HeatmapLayer } from '@antv/l7'
import { GaodeMap } from '@antv/l7-maps'
import { getLanguage } from '@/lang'
export function baseHeatMapOptionAntV(chartDom, chartId, chart, action) {
console.log('baseHeatMapOptionAntV', chart)
const xAxis = JSON.parse(chart.xaxis)
const yAxis = JSON.parse(chart.yaxis)
let customAttr
if (chart.customAttr) {
customAttr = JSON.parse(chart.customAttr)
}
const size = customAttr.size
const color = customAttr.color
const mapStyle = `amap://styles/${color.mapStyle ? color.mapStyle : 'normal'}`
const lang = getLanguage().includes('zh') ? 'zh' : 'en'
let init = false
if (!chartDom?.map) {
try {
chartDom.destroy()
} catch (e) {
// ignore
}
chartDom = new Scene({
id: chartId,
map: new GaodeMap({
lang: lang,
pitch: size.mapPitch,
style: mapStyle,
zoom: 3
}),
logoVisible: false
})
init = true
} else {
if (chartDom.map) {
chartDom.setPitch(size.mapPitch)
chartDom.setMapStyle(mapStyle)
}
}
if (xAxis?.length < 1 || yAxis?.length < 1) {
chartDom.removeAllLayer()
return chartDom
}
chartDom.removeAllLayer()
.then(() => {
const layer = new HeatmapLayer({})
.source(chart.data.tableRow, {
parser: {
type: 'json',
x: xAxis[0].dataeaseName,
y: xAxis[1].dataeaseName
}
})
.shape('heatmap')
.style({
intensity: 2,
radius: 20,
rampColors: {
colors: [
'#206C7C',
'#2EA9A1',
'#91EABC',
'#FFF598',
'#F7B74A',
'#FF4818'
],
positions: [0, 0.2, 0.4, 0.6, 0.8, 1.0]
}
})
.size('mag', [1, 80])
.scale('mag', {
type: 'linear',
domain: [1, 50]
})
if (!init) {
chartDom.addLayer(layer)
}
chartDom.on('loaded', () => {
chartDom.addLayer(layer)
})
})
return chartDom
}
......@@ -61,8 +61,8 @@ export function baseFlowMapOption(chartDom, chartId, chart, action) {
.animate({
enable: size.mapLineAnimate,
duration: size.mapLineAnimateDuration,
interval: 1,
trailLength: 1
interval: size.mapLineAnimateInterval,
trailLength: size.mapLineAnimateTrailLength
})
if (color.mapLineGradient) {
lineLayer.style({
......
import { getLabel, getLegend, getPadding, getTheme, getTooltip, getXAxis } from '@/views/chart/chart/common/common_antv'
import { Sankey } from '@antv/g2plot'
import { antVCustomColor } from '@/views/chart/chart/util'
export function baseSankeyOptionAntV(plot, container, chart, action) {
// theme
const theme = getTheme(chart)
// data
const data = chart.data.tableRow
const sankeyData = []
const valueName = chart.data.fields.find((item) => { return item.originName === 'value' })
const keys = chart.data.fields.map((v) => {
if (v.originName !== 'value') {
return v.dataeaseName
}
}).filter((i) => i)
if (data && keys.length > 0) {
data.forEach((d) => {
keys.reduce((a, b) => {
if (a && b) {
sankeyData.push({
source: d[a],
target: d[b],
value: d[valueName.dataeaseName],
path: keys.map((item) => {
const num = []
num.push(d[item])
return num
}).join('->')
})
}
return b
})
}
)
}
// options
const options = {
theme: theme,
data: sankeyData,
sourceField: 'source',
targetField: 'target',
weightField: 'value',
nodeWidthRatio: 0.01,
nodePaddingRatio: 0.03,
nodeDraggable: true,
rawFields: ['path'],
tooltip: {
fields: ['path', 'value'],
formatter: ({ path, value }) => {
return {
name: path,
value: value
}
}
}
}
// custom color
options.color = antVCustomColor(chart)
// 开始渲染
if (plot) {
plot.destroy()
}
plot = new Sankey(container, options)
// plot.off('interval:click')
// plot.on('interval:click', action)
return plot
}
import { TableSheet, S2Event, PivotSheet, DataCell, EXTRA_FIELD, TOTAL_VALUE } from '@antv/s2'
import { TableSheet, S2Event, PivotSheet, DataCell, EXTRA_FIELD, TOTAL_VALUE, BaseEvent } from '@antv/s2'
import { getCustomTheme, getSize } from '@/views/chart/chart/common/common_table'
import { DEFAULT_COLOR_CASE, DEFAULT_TOTAL } from '@/views/chart/chart/chart'
import { formatterItem, valueFormatter } from '@/views/chart/chart/formatter'
......@@ -7,7 +7,7 @@ export function baseTableInfo(s2, container, chart, action, tableData, pageInfo)
const containerDom = document.getElementById(container)
// fields
const fields = chart.data.fields
let fields = chart.data.fields
if (!fields || fields.length === 0) {
if (s2) {
s2.destroy()
......@@ -17,8 +17,17 @@ export function baseTableInfo(s2, container, chart, action, tableData, pageInfo)
const columns = []
const meta = []
// add drill list
// 记录下钻起始字段的index
let xAxis = []
try {
xAxis = JSON.parse(chart.xaxis)
} catch (err) {
xAxis = JSON.parse(JSON.stringify(chart.xaxis))
}
const nameMap = xAxis.reduce((pre, next) => {
pre[next.dataeaseName] = next
return pre
}, {})
if (chart.drill) {
let drillFields = []
try {
......@@ -26,107 +35,44 @@ export function baseTableInfo(s2, container, chart, action, tableData, pageInfo)
} catch (err) {
drillFields = JSON.parse(JSON.stringify(chart.drillFields))
}
const drillField = drillFields[chart.drillFilters.length]
const drillFilters = JSON.parse(JSON.stringify(chart.drillFilters))
const drillExp = drillFilters[drillFilters.length - 1].datasetTableField
// 记录下钻起始字段的index
let xAxis = []
try {
xAxis = JSON.parse(chart.xaxis)
} catch (err) {
xAxis = JSON.parse(JSON.stringify(chart.xaxis))
}
let index = 0
for (let i = 0; i < xAxis.length; i++) {
if (xAxis[i].id === drillFilters[0].fieldId) {
index = i
break
}
}
// 移除所有下钻字段
const removeField = []
for (let i = 0; i < chart.drillFilters.length; i++) {
const ele = chart.drillFilters[i].datasetTableField
removeField.push(ele.dataeaseName)
}
// build field
fields.forEach(ele => {
if (removeField.indexOf(ele.dataeaseName) < 0) {
// 用下钻字段替换当前字段
if (drillExp.dataeaseName === ele.dataeaseName) {
columns.push(drillField.dataeaseName)
meta.push({
field: drillField.dataeaseName,
name: drillField.name
})
} else {
const f = getCurrentField(chart.xaxis, ele)
columns.push(ele.dataeaseName)
meta.push({
field: ele.dataeaseName,
name: ele.name,
formatter: function(value) {
if (!f) {
return value
}
if (value === null || value === undefined) {
return value
}
if (f.groupType === 'd') {
return value
} else {
if (f.formatterCfg) {
const v = valueFormatter(value, f.formatterCfg)
return v.includes('NaN') ? value : v
} else {
const v = valueFormatter(value, formatterItem)
return v.includes('NaN') ? value : v
}
}
}
})
// 总下钻过滤字段
const drillFilters = JSON.parse(JSON.stringify(chart.drillFilters)).map(i => i.fieldId)
// 当前下钻字段
const curDrillField = drillFields[chart.drillFilters.length]
drillFilters.push(curDrillField.id)
// 下钻入口字段的下标
const drillEnterFieldIndex = xAxis.findIndex(item => item.id === drillFilters[0])
// 移除所有下钻字段,调整当前下钻字段到下钻入口位置
fields = fields.filter(item => !drillFilters.includes(item.id))
fields.splice(drillEnterFieldIndex, 0, curDrillField)
}
fields.forEach(ele => {
const f = nameMap[ele.dataeaseName]
columns.push(ele.dataeaseName)
meta.push({
field: ele.dataeaseName,
name: ele.name,
formatter: function(value) {
if (!f) {
return value
}
}
})
// 修正下钻字段的index,获取下钻位置元素添加到index位置,并删除
const ele = columns[columns.length - 1]
columns.splice(index, 0, ele)
columns.splice(columns.length - 1, 1)
} else {
fields.forEach(ele => {
const f = getCurrentField(chart.xaxis, ele)
columns.push(ele.dataeaseName)
meta.push({
field: ele.dataeaseName,
name: ele.name,
formatter: function(value) {
if (!f) {
return value
}
if (value === null || value === undefined) {
return value
}
if (f.groupType === 'd') {
return value
if (value === null || value === undefined) {
return value
}
if (f.groupType === 'd') {
return value
} else {
if (f.formatterCfg) {
const v = valueFormatter(value, f.formatterCfg)
return v.includes('NaN') ? value : v
} else {
if (f.formatterCfg) {
const v = valueFormatter(value, f.formatterCfg)
return v.includes('NaN') ? value : v
} else {
const v = valueFormatter(value, formatterItem)
return v.includes('NaN') ? value : v
}
const v = valueFormatter(value, formatterItem)
return v.includes('NaN') ? value : v
}
}
})
}
})
}
})
// 空值处理
const newData = handleTableEmptyStrategy(tableData, chart)
// data config
......@@ -174,6 +120,11 @@ export function baseTableInfo(s2, container, chart, action, tableData, pageInfo)
// click
s2.on(S2Event.DATA_CELL_CLICK, action)
// hover
const size = customAttr.size
if (size.tableColTooltip?.show) {
s2.on(S2Event.COL_CELL_HOVER, event => showTooltip(s2, event))
}
// theme
const customTheme = getCustomTheme(chart)
......@@ -342,7 +293,11 @@ export function baseTableNormal(s2, container, chart, action, tableData) {
// click
s2.on(S2Event.DATA_CELL_CLICK, action)
// hover
const size = customAttr.size
if (size.tableColTooltip?.show) {
s2.on(S2Event.COL_CELL_HOVER, event => showTooltip(s2, event))
}
// theme
const customTheme = getCustomTheme(chart)
s2.setThemeCfg({ theme: customTheme })
......@@ -379,6 +334,10 @@ export function baseTablePivot(s2, container, chart, action, headerAction, table
const columns = []
const meta = []
const fieldMap = fields.reduce((pre, next) => {
pre[next['dataeaseName']] = next['name']
return pre
}, {})
// add drill list
if (chart.drill) {
......@@ -455,8 +414,8 @@ export function baseTablePivot(s2, container, chart, action, headerAction, table
// total config
let totalCfg = {}
const chartObj = JSON.parse(JSON.stringify(chart))
let customAttr
if (chartObj.customAttr) {
let customAttr = null
if (Object.prototype.toString.call(chartObj.customAttr) === '[object Object]') {
customAttr = JSON.parse(JSON.stringify(chartObj.customAttr))
} else {
......@@ -528,7 +487,14 @@ export function baseTablePivot(s2, container, chart, action, headerAction, table
s2.on(S2Event.DATA_CELL_CLICK, action)
s2.on(S2Event.ROW_CELL_CLICK, headerAction)
s2.on(S2Event.COL_CELL_CLICK, headerAction)
// hover
const size = customAttr?.size
if (size?.tableRowTooltip?.show) {
s2.on(S2Event.ROW_CELL_HOVER, event => showTooltip(s2, event, fieldMap))
}
if (size?.tableColTooltip?.show) {
s2.on(S2Event.COL_CELL_HOVER, event => showTooltip(s2, event, fieldMap))
}
// theme
const customTheme = getCustomTheme(chart)
s2.setThemeCfg({ theme: customTheme })
......@@ -740,3 +706,19 @@ function mappingColor(value, defaultColor, field, type) {
}
return color
}
function showTooltip(s2Instance, event, fieldMap) {
const cell = s2Instance.getCell(event.target)
const meta = cell.getMeta()
let content = meta.value
if (fieldMap?.[content]) {
content = fieldMap?.[content]
}
s2Instance.showTooltip({
position: {
x: event.clientX,
y: event.clientY
},
content
})
}
import { Scene, PointLayer } from '@antv/l7'
import { GaodeMap } from '@antv/l7-maps'
import { getLanguage } from '@/lang'
export function base3DColumnOptionAntV(chartDom, chartId, chart, action) {
console.log('base3DColumnOptionAntV', chart)
const xAxis = JSON.parse(chart.xaxis)
const yAxis = JSON.parse(chart.yaxis)
let customAttr
if (chart.customAttr) {
customAttr = JSON.parse(chart.customAttr)
}
const size = customAttr.size
const color = customAttr.color
const mapStyle = `amap://styles/${color.mapStyle ? color.mapStyle : 'normal'}`
const lang = getLanguage().includes('zh') ? 'zh' : 'en'
let init = false
if (!chartDom?.map) {
try {
chartDom.destroy()
} catch (e) {
// ignore
}
chartDom = new Scene({
id: chartId,
map: new GaodeMap({
lang: lang,
pitch: size.mapPitch,
center: [104.288144, 31.239692],
style: mapStyle,
zoom: 4
}),
logoVisible: false
})
init = true
} else {
if (chartDom.map) {
chartDom.setPitch(size.mapPitch)
chartDom.setMapStyle(mapStyle)
}
}
// if (xAxis?.length < 1 || yAxis?.length < 1) {
// chartDom.removeAllLayer()
// return chartDom
// }
chartDom.removeAllLayer()
.then(() => {
const layer = new PointLayer({})
.source(chart.data.tableRow, {
parser: {
type: 'json',
x: xAxis[0].dataeaseName, // 经度
y: xAxis[1].dataeaseName // 纬度
}
})
.shape('cylinder')
.size(yAxis[0].dataeaseName, function(level) {
return [2, 2, level]
})
.animate(true)
.active(true)
.color(yAxis[0].dataeaseName, color?.colors)
if (!init) {
chartDom.addLayer(layer)
}
chartDom.on('loaded', () => {
chartDom.addLayer(layer)
})
})
return chartDom
}
This source diff could not be displayed because it is too large. You can view the blob instead.
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论