mirror of
https://gitee.com/dromara/go-view.git
synced 2025-02-24 00:02:51 +08:00
perf: 优化报错信息捕获,去除setPosition自带函数
This commit is contained in:
parent
e46ee17914
commit
73090a6f1e
1
src/packages/index.d.ts
vendored
1
src/packages/index.d.ts
vendored
@ -115,7 +115,6 @@ export interface PublicConfigType {
|
|||||||
}
|
}
|
||||||
filter?: string
|
filter?: string
|
||||||
status: StatusType
|
status: StatusType
|
||||||
setPosition: Function
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface CreateComponentType extends PublicConfigType, requestConfig {
|
export interface CreateComponentType extends PublicConfigType, requestConfig {
|
||||||
|
@ -81,12 +81,6 @@ export class PublicConfigClass implements PublicConfigType {
|
|||||||
public request = cloneDeep(requestConfig)
|
public request = cloneDeep(requestConfig)
|
||||||
// 数据过滤
|
// 数据过滤
|
||||||
public filter = undefined
|
public filter = undefined
|
||||||
|
|
||||||
// 设置坐标
|
|
||||||
public setPosition(x: number, y: number): void {
|
|
||||||
this.attr.x = x
|
|
||||||
this.attr.y = y
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 多选成组类
|
// 多选成组类
|
||||||
|
@ -4,6 +4,6 @@ export * from '@/utils/router'
|
|||||||
export * from '@/utils/storage'
|
export * from '@/utils/storage'
|
||||||
export * from '@/utils/style'
|
export * from '@/utils/style'
|
||||||
export * from '@/utils/plugin'
|
export * from '@/utils/plugin'
|
||||||
export * from '@/utils/componets'
|
export * from '@/utils/components'
|
||||||
export * from '@/utils/type'
|
export * from '@/utils/type'
|
||||||
export * from '@/utils/file'
|
export * from '@/utils/file'
|
||||||
|
@ -8,6 +8,7 @@ import { downloadByA } from './file'
|
|||||||
import { toString } from './type'
|
import { toString } from './type'
|
||||||
import cloneDeep from 'lodash/cloneDeep'
|
import cloneDeep from 'lodash/cloneDeep'
|
||||||
import { RequestHttpIntervalEnum, RequestParamsObjType } from '@/enums/httpEnum'
|
import { RequestHttpIntervalEnum, RequestParamsObjType } from '@/enums/httpEnum'
|
||||||
|
import { CreateComponentType, CreateComponentGroupType } from '@/packages/index.d'
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* * 判断是否是开发环境
|
* * 判断是否是开发环境
|
||||||
@ -72,6 +73,17 @@ export const screenfullFn = (isFullscreen?: boolean, isEnabled?: boolean) => {
|
|||||||
window['$message'].warning('您的浏览器不支持全屏功能!')
|
window['$message'].warning('您的浏览器不支持全屏功能!')
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改元素位置
|
||||||
|
* @param target 对象
|
||||||
|
* @param x X轴
|
||||||
|
* @param y Y轴
|
||||||
|
*/
|
||||||
|
export const setComponentPosition = (target: CreateComponentType | CreateComponentGroupType, x?: number, y?:number) => {
|
||||||
|
x && (target.attr.x = x)
|
||||||
|
y && (target.attr.y = y)
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* * 设置元素属性
|
* * 设置元素属性
|
||||||
* @param HTMLElement 元素
|
* @param HTMLElement 元素
|
||||||
|
@ -17,6 +17,7 @@ import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore
|
|||||||
import { EditCanvasTypeEnum } from '@/store/modules/chartEditStore/chartEditStore.d'
|
import { EditCanvasTypeEnum } from '@/store/modules/chartEditStore/chartEditStore.d'
|
||||||
import { useSettingStore } from '@/store/modules/settingStore/settingStore'
|
import { useSettingStore } from '@/store/modules/settingStore/settingStore'
|
||||||
import { CreateComponentType, CreateComponentGroupType } from '@/packages/index.d'
|
import { CreateComponentType, CreateComponentGroupType } from '@/packages/index.d'
|
||||||
|
import { setComponentPosition } from '@/utils'
|
||||||
import throttle from 'lodash/throttle'
|
import throttle from 'lodash/throttle'
|
||||||
import cloneDeep from 'lodash/cloneDeep'
|
import cloneDeep from 'lodash/cloneDeep'
|
||||||
// 全局颜色
|
// 全局颜色
|
||||||
@ -96,146 +97,150 @@ const canvasPositionList = computed(() => {
|
|||||||
watch(
|
watch(
|
||||||
() => chartEditStore.getMousePosition,
|
() => chartEditStore.getMousePosition,
|
||||||
throttle(() => {
|
throttle(() => {
|
||||||
if (!isComputedLine.value || selectId.value.length !== 1) return
|
try {
|
||||||
// 获取目标组件数据
|
if (!isComputedLine.value || selectId.value.length !== 1) return
|
||||||
|
// 获取目标组件数据
|
||||||
|
|
||||||
const selectW = selectAttr.value.w
|
const selectW = selectAttr.value.w
|
||||||
const selectH = selectAttr.value.h
|
const selectH = selectAttr.value.h
|
||||||
|
|
||||||
// 距离左侧
|
// 距离左侧
|
||||||
const selectLeftX = selectAttr.value.x
|
const selectLeftX = selectAttr.value.x
|
||||||
const selectHalfX = selectLeftX + selectW / 2
|
const selectHalfX = selectLeftX + selectW / 2
|
||||||
const selectRightX = selectLeftX + selectW
|
const selectRightX = selectLeftX + selectW
|
||||||
const seletX = [selectLeftX, selectHalfX, selectRightX]
|
const seletX = [selectLeftX, selectHalfX, selectRightX]
|
||||||
|
|
||||||
// 距离顶部
|
// 距离顶部
|
||||||
const selectTopY = selectAttr.value.y
|
const selectTopY = selectAttr.value.y
|
||||||
const selectHalfY = selectTopY + selectH / 2
|
const selectHalfY = selectTopY + selectH / 2
|
||||||
const selectBottomY = selectTopY + selectH
|
const selectBottomY = selectTopY + selectH
|
||||||
const selectY = [selectTopY, selectHalfY, selectBottomY]
|
const selectY = [selectTopY, selectHalfY, selectBottomY]
|
||||||
|
|
||||||
line.select.clear()
|
line.select.clear()
|
||||||
line.sorptioned.y = false
|
line.sorptioned.y = false
|
||||||
// 循环查询所有组件数据
|
// 循环查询所有组件数据
|
||||||
const componentList = chartEditStore.getComponentList.map((e: CreateComponentType | CreateComponentGroupType) => {
|
const componentList = chartEditStore.getComponentList.map((e: CreateComponentType | CreateComponentGroupType) => {
|
||||||
return {
|
return {
|
||||||
id: e.id,
|
id: e.id,
|
||||||
attr: e.attr
|
attr: e.attr
|
||||||
}
|
|
||||||
})
|
|
||||||
componentList.push(canvasPositionList.value)
|
|
||||||
// 传入画布数据
|
|
||||||
line.lineArr.forEach(lineItem => {
|
|
||||||
componentList.forEach((component: typeof canvasPositionList.value) => {
|
|
||||||
// 排除自身
|
|
||||||
if (selectId.value[0] === component.id) return
|
|
||||||
const componentW = component.attr.w
|
|
||||||
const componentH = component.attr.h
|
|
||||||
|
|
||||||
// 距离左侧
|
|
||||||
const componentLeftX = component.attr.x
|
|
||||||
const componentHalfX = componentLeftX + componentW / 2
|
|
||||||
const componentRightX = componentLeftX + componentW
|
|
||||||
const componentX = [componentLeftX, componentHalfX, componentRightX]
|
|
||||||
|
|
||||||
// 距离顶部
|
|
||||||
const componentTopY = component.attr.y
|
|
||||||
const componentHalfY = componentTopY + componentH / 2
|
|
||||||
const componentBottomY = componentTopY + componentH
|
|
||||||
const componentY = [componentTopY, componentHalfY, componentBottomY]
|
|
||||||
|
|
||||||
// 横线对比的是 Y
|
|
||||||
if (lineItem.includes('rowt')) {
|
|
||||||
// 顶部
|
|
||||||
if (isSorption(selectTopY, componentTopY)) {
|
|
||||||
line.select.set(lineItem, { y: componentTopY })
|
|
||||||
selectTarget.value.setPosition(selectLeftX, componentTopY)
|
|
||||||
}
|
|
||||||
if (isSorption(selectTopY, componentHalfY)) {
|
|
||||||
line.select.set(lineItem, { y: componentHalfY })
|
|
||||||
selectTarget.value.setPosition(selectLeftX, componentHalfY)
|
|
||||||
}
|
|
||||||
if (isSorption(selectTopY, componentBottomY)) {
|
|
||||||
line.select.set(lineItem, { y: componentBottomY })
|
|
||||||
selectTarget.value.setPosition(selectLeftX, componentBottomY)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (lineItem.includes('rowc')) {
|
|
||||||
// 顶部
|
|
||||||
if (isSorption(selectHalfY, componentTopY)) {
|
|
||||||
line.select.set(lineItem, { y: componentTopY })
|
|
||||||
selectTarget.value.setPosition(selectLeftX, componentTopY - selectH / 2)
|
|
||||||
}
|
|
||||||
if (isSorption(selectHalfY, componentHalfY)) {
|
|
||||||
line.select.set(lineItem, { y: componentHalfY })
|
|
||||||
selectTarget.value.setPosition(selectLeftX, componentHalfY - selectH / 2)
|
|
||||||
}
|
|
||||||
if (isSorption(selectHalfY, componentBottomY)) {
|
|
||||||
line.select.set(lineItem, { y: componentBottomY })
|
|
||||||
selectTarget.value.setPosition(selectLeftX, componentBottomY - selectH / 2)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (lineItem.includes('rowb')) {
|
|
||||||
// 顶部
|
|
||||||
if (isSorption(selectBottomY, componentTopY)) {
|
|
||||||
line.select.set(lineItem, { y: componentTopY })
|
|
||||||
selectTarget.value.setPosition(selectLeftX, componentTopY - selectH)
|
|
||||||
}
|
|
||||||
if (isSorption(selectBottomY, componentHalfY)) {
|
|
||||||
line.select.set(lineItem, { y: componentHalfY })
|
|
||||||
selectTarget.value.setPosition(selectLeftX, componentHalfY - selectH)
|
|
||||||
}
|
|
||||||
if (isSorption(selectBottomY, componentBottomY)) {
|
|
||||||
line.select.set(lineItem, { y: componentBottomY })
|
|
||||||
selectTarget.value.setPosition(selectLeftX, componentBottomY - selectH)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 纵线对比的是 X
|
|
||||||
if (lineItem.includes('coll')) {
|
|
||||||
if (isSorption(selectLeftX, componentLeftX)) {
|
|
||||||
line.select.set(lineItem, { x: componentLeftX })
|
|
||||||
selectTarget.value.setPosition(componentLeftX, selectTopY)
|
|
||||||
}
|
|
||||||
if (isSorption(selectLeftX, componentHalfX)) {
|
|
||||||
line.select.set(lineItem, { x: componentHalfX })
|
|
||||||
selectTarget.value.setPosition(componentHalfX, selectTopY)
|
|
||||||
}
|
|
||||||
if (isSorption(selectLeftX, componentRightX)) {
|
|
||||||
line.select.set(lineItem, { x: componentRightX })
|
|
||||||
selectTarget.value.setPosition(componentRightX, selectTopY)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (lineItem.includes('colc')) {
|
|
||||||
if (isSorption(selectHalfX, componentLeftX)) {
|
|
||||||
line.select.set(lineItem, { x: componentLeftX })
|
|
||||||
selectTarget.value.setPosition(componentLeftX - selectW / 2, selectTopY)
|
|
||||||
}
|
|
||||||
if (isSorption(selectHalfX, componentHalfX)) {
|
|
||||||
line.select.set(lineItem, { x: componentHalfX })
|
|
||||||
selectTarget.value.setPosition(componentHalfX - selectW / 2, selectTopY)
|
|
||||||
}
|
|
||||||
if (isSorption(selectHalfX, componentRightX)) {
|
|
||||||
line.select.set(lineItem, { x: componentRightX })
|
|
||||||
selectTarget.value.setPosition(componentRightX - selectW / 2, selectTopY)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (lineItem.includes('colr')) {
|
|
||||||
if (isSorption(selectRightX, componentLeftX)) {
|
|
||||||
line.select.set(lineItem, { x: componentLeftX })
|
|
||||||
selectTarget.value.setPosition(componentLeftX - selectW, selectTopY)
|
|
||||||
}
|
|
||||||
if (isSorption(selectRightX, componentHalfX)) {
|
|
||||||
line.select.set(lineItem, { x: componentHalfX })
|
|
||||||
selectTarget.value.setPosition(componentHalfX - selectW, selectTopY)
|
|
||||||
}
|
|
||||||
if (isSorption(selectRightX, componentRightX)) {
|
|
||||||
line.select.set(lineItem, { x: componentRightX })
|
|
||||||
selectTarget.value.setPosition(componentRightX - selectW, selectTopY)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
})
|
componentList.push(canvasPositionList.value)
|
||||||
|
// 传入画布数据
|
||||||
|
line.lineArr.forEach(lineItem => {
|
||||||
|
componentList.forEach((component: typeof canvasPositionList.value) => {
|
||||||
|
// 排除自身
|
||||||
|
if (selectId.value[0] === component.id) return
|
||||||
|
const componentW = component.attr.w
|
||||||
|
const componentH = component.attr.h
|
||||||
|
|
||||||
|
// 距离左侧
|
||||||
|
const componentLeftX = component.attr.x
|
||||||
|
const componentHalfX = componentLeftX + componentW / 2
|
||||||
|
const componentRightX = componentLeftX + componentW
|
||||||
|
const componentX = [componentLeftX, componentHalfX, componentRightX]
|
||||||
|
|
||||||
|
// 距离顶部
|
||||||
|
const componentTopY = component.attr.y
|
||||||
|
const componentHalfY = componentTopY + componentH / 2
|
||||||
|
const componentBottomY = componentTopY + componentH
|
||||||
|
const componentY = [componentTopY, componentHalfY, componentBottomY]
|
||||||
|
|
||||||
|
// 横线对比的是 Y
|
||||||
|
if (lineItem.includes('rowt')) {
|
||||||
|
// 顶部
|
||||||
|
if (isSorption(selectTopY, componentTopY)) {
|
||||||
|
line.select.set(lineItem, { y: componentTopY })
|
||||||
|
setComponentPosition(selectTarget.value, selectLeftX, componentTopY)
|
||||||
|
}
|
||||||
|
if (isSorption(selectTopY, componentHalfY)) {
|
||||||
|
line.select.set(lineItem, { y: componentHalfY })
|
||||||
|
setComponentPosition(selectTarget.value, selectLeftX, componentHalfY)
|
||||||
|
}
|
||||||
|
if (isSorption(selectTopY, componentBottomY)) {
|
||||||
|
line.select.set(lineItem, { y: componentBottomY })
|
||||||
|
setComponentPosition(selectTarget.value, selectLeftX, componentBottomY)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (lineItem.includes('rowc')) {
|
||||||
|
// 顶部
|
||||||
|
if (isSorption(selectHalfY, componentTopY)) {
|
||||||
|
line.select.set(lineItem, { y: componentTopY })
|
||||||
|
setComponentPosition(selectTarget.value, selectLeftX, componentTopY - selectH / 2)
|
||||||
|
}
|
||||||
|
if (isSorption(selectHalfY, componentHalfY)) {
|
||||||
|
line.select.set(lineItem, { y: componentHalfY })
|
||||||
|
setComponentPosition(selectTarget.value, selectLeftX, componentHalfY - selectH / 2)
|
||||||
|
}
|
||||||
|
if (isSorption(selectHalfY, componentBottomY)) {
|
||||||
|
line.select.set(lineItem, { y: componentBottomY })
|
||||||
|
setComponentPosition(selectTarget.value, selectLeftX, componentBottomY - selectH / 2)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (lineItem.includes('rowb')) {
|
||||||
|
// 顶部
|
||||||
|
if (isSorption(selectBottomY, componentTopY)) {
|
||||||
|
line.select.set(lineItem, { y: componentTopY })
|
||||||
|
setComponentPosition(selectTarget.value, selectLeftX, componentTopY - selectH)
|
||||||
|
}
|
||||||
|
if (isSorption(selectBottomY, componentHalfY)) {
|
||||||
|
line.select.set(lineItem, { y: componentHalfY })
|
||||||
|
setComponentPosition(selectTarget.value, selectLeftX, componentHalfY - selectH)
|
||||||
|
}
|
||||||
|
if (isSorption(selectBottomY, componentBottomY)) {
|
||||||
|
line.select.set(lineItem, { y: componentBottomY })
|
||||||
|
setComponentPosition(selectTarget.value, selectLeftX, componentBottomY - selectH)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 纵线对比的是 X
|
||||||
|
if (lineItem.includes('coll')) {
|
||||||
|
if (isSorption(selectLeftX, componentLeftX)) {
|
||||||
|
line.select.set(lineItem, { x: componentLeftX })
|
||||||
|
setComponentPosition(selectTarget.value, componentLeftX, selectTopY)
|
||||||
|
}
|
||||||
|
if (isSorption(selectLeftX, componentHalfX)) {
|
||||||
|
line.select.set(lineItem, { x: componentHalfX })
|
||||||
|
setComponentPosition(selectTarget.value, componentHalfX, selectTopY)
|
||||||
|
}
|
||||||
|
if (isSorption(selectLeftX, componentRightX)) {
|
||||||
|
line.select.set(lineItem, { x: componentRightX })
|
||||||
|
setComponentPosition(selectTarget.value, componentRightX, selectTopY)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (lineItem.includes('colc')) {
|
||||||
|
if (isSorption(selectHalfX, componentLeftX)) {
|
||||||
|
line.select.set(lineItem, { x: componentLeftX })
|
||||||
|
setComponentPosition(selectTarget.value, componentLeftX - selectW / 2, selectTopY)
|
||||||
|
}
|
||||||
|
if (isSorption(selectHalfX, componentHalfX)) {
|
||||||
|
line.select.set(lineItem, { x: componentHalfX })
|
||||||
|
setComponentPosition(selectTarget.value, componentHalfX - selectW / 2, selectTopY)
|
||||||
|
}
|
||||||
|
if (isSorption(selectHalfX, componentRightX)) {
|
||||||
|
line.select.set(lineItem, { x: componentRightX })
|
||||||
|
setComponentPosition(selectTarget.value, componentRightX - selectW / 2, selectTopY)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (lineItem.includes('colr')) {
|
||||||
|
if (isSorption(selectRightX, componentLeftX)) {
|
||||||
|
line.select.set(lineItem, { x: componentLeftX })
|
||||||
|
setComponentPosition(selectTarget.value, componentLeftX - selectW, selectTopY)
|
||||||
|
}
|
||||||
|
if (isSorption(selectRightX, componentHalfX)) {
|
||||||
|
line.select.set(lineItem, { x: componentHalfX })
|
||||||
|
setComponentPosition(selectTarget.value, componentHalfX - selectW, selectTopY)
|
||||||
|
}
|
||||||
|
if (isSorption(selectRightX, componentRightX)) {
|
||||||
|
line.select.set(lineItem, { x: componentRightX })
|
||||||
|
setComponentPosition(selectTarget.value, componentRightX - selectW, selectTopY)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
} catch (err) {
|
||||||
|
console.log(err)
|
||||||
|
}
|
||||||
}, 200),
|
}, 200),
|
||||||
{
|
{
|
||||||
deep: true
|
deep: true
|
||||||
|
@ -1,12 +1,12 @@
|
|||||||
import { toRaw } from 'vue'
|
import { toRaw } from 'vue'
|
||||||
import { DragKeyEnum, MouseEventButton, WinKeyboard, MacKeyboard } from '@/enums/editPageEnum'
|
import { DragKeyEnum, MouseEventButton } from '@/enums/editPageEnum'
|
||||||
import { createComponent } from '@/packages'
|
import { createComponent } from '@/packages'
|
||||||
import { ConfigType } from '@/packages/index.d'
|
import { ConfigType } from '@/packages/index.d'
|
||||||
import { CreateComponentType, CreateComponentGroupType, PickCreateComponentType } from '@/packages/index.d'
|
import { CreateComponentType, CreateComponentGroupType, PickCreateComponentType } from '@/packages/index.d'
|
||||||
import { useContextMenu } from '@/views/chart/hooks/useContextMenu.hook'
|
import { useContextMenu } from '@/views/chart/hooks/useContextMenu.hook'
|
||||||
import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore'
|
import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore'
|
||||||
import { EditCanvasTypeEnum } from '@/store/modules/chartEditStore/chartEditStore.d'
|
import { EditCanvasTypeEnum } from '@/store/modules/chartEditStore/chartEditStore.d'
|
||||||
import { loadingStart, loadingFinish, loadingError } from '@/utils'
|
import { loadingStart, loadingFinish, loadingError, setComponentPosition } from '@/utils'
|
||||||
import { throttle, cloneDeep } from 'lodash'
|
import { throttle, cloneDeep } from 'lodash'
|
||||||
|
|
||||||
const chartEditStore = useChartEditStore()
|
const chartEditStore = useChartEditStore()
|
||||||
@ -33,7 +33,7 @@ export const dragHandle = async (e: DragEvent) => {
|
|||||||
// 创建新图表组件
|
// 创建新图表组件
|
||||||
let newComponent: CreateComponentType = await createComponent(dropData)
|
let newComponent: CreateComponentType = await createComponent(dropData)
|
||||||
|
|
||||||
newComponent.setPosition(e.offsetX - newComponent.attr.w / 2, e.offsetY - newComponent.attr.h / 2)
|
setComponentPosition(newComponent, e.offsetX - newComponent.attr.w / 2, e.offsetY - newComponent.attr.h / 2)
|
||||||
chartEditStore.addComponentList(newComponent, false, true)
|
chartEditStore.addComponentList(newComponent, false, true)
|
||||||
chartEditStore.setTargetSelectChart(newComponent.id)
|
chartEditStore.setTargetSelectChart(newComponent.id)
|
||||||
loadingFinish()
|
loadingFinish()
|
||||||
@ -190,8 +190,7 @@ export const useMouseHandle = () => {
|
|||||||
if (item.status.lock) return
|
if (item.status.lock) return
|
||||||
onClickOutSide()
|
onClickOutSide()
|
||||||
// 按下左键 + CTRL
|
// 按下左键 + CTRL
|
||||||
if (e.buttons === MouseEventButton.LEFT && window.$KeyboardActive?.ctrl)
|
if (e.buttons === MouseEventButton.LEFT && window.$KeyboardActive?.ctrl) return
|
||||||
return
|
|
||||||
|
|
||||||
// 按下右键 + 选中多个 + 目标元素是多选子元素
|
// 按下右键 + 选中多个 + 目标元素是多选子元素
|
||||||
const selectId = chartEditStore.getTargetChart.selectId
|
const selectId = chartEditStore.getTargetChart.selectId
|
||||||
@ -264,38 +263,43 @@ export const useMouseHandle = () => {
|
|||||||
// 基于右下角位置检测
|
// 基于右下角位置检测
|
||||||
currX = currX > canvasWidth - distance ? canvasWidth - distance : currX
|
currX = currX > canvasWidth - distance ? canvasWidth - distance : currX
|
||||||
currY = currY > canvasHeight - distance ? canvasHeight - distance : currY
|
currY = currY > canvasHeight - distance ? canvasHeight - distance : currY
|
||||||
|
if (componentInstance) {
|
||||||
componentInstance.attr = Object.assign(componentInstance.attr, {
|
componentInstance.attr = Object.assign(componentInstance.attr, {
|
||||||
x: currX,
|
x: currX,
|
||||||
y: currY
|
y: currY
|
||||||
})
|
})
|
||||||
|
}
|
||||||
})
|
})
|
||||||
return
|
return
|
||||||
}, 20)
|
}, 20)
|
||||||
|
|
||||||
const mouseup = () => {
|
const mouseup = () => {
|
||||||
chartEditStore.setMousePosition(0, 0, 0, 0)
|
try {
|
||||||
chartEditStore.setEditCanvas(EditCanvasTypeEnum.IS_DRAG, false)
|
chartEditStore.setMousePosition(0, 0, 0, 0)
|
||||||
// 加入历史栈
|
chartEditStore.setEditCanvas(EditCanvasTypeEnum.IS_DRAG, false)
|
||||||
if (prevComponentInstance.length) {
|
// 加入历史栈
|
||||||
chartEditStore.getTargetChart.selectId.forEach(id => {
|
if (prevComponentInstance.length) {
|
||||||
if (!targetMap.has(id)) return
|
chartEditStore.getTargetChart.selectId.forEach(id => {
|
||||||
const index = chartEditStore.fetchTargetIndex(id)
|
if (!targetMap.has(id)) return
|
||||||
const curComponentInstance = chartEditStore.getComponentList[index]
|
const index = chartEditStore.fetchTargetIndex(id)
|
||||||
// 找到记录的所选组件
|
const curComponentInstance = chartEditStore.getComponentList[index]
|
||||||
prevComponentInstance.forEach(preItem => {
|
// 找到记录的所选组件
|
||||||
if (preItem.id === id) {
|
prevComponentInstance.forEach(preItem => {
|
||||||
preItem.attr = Object.assign(preItem.attr, {
|
if (preItem.id === id) {
|
||||||
offsetX: curComponentInstance.attr.x - preItem.attr.x,
|
preItem.attr = Object.assign(preItem.attr, {
|
||||||
offsetY: curComponentInstance.attr.y - preItem.attr.y
|
offsetX: curComponentInstance.attr.x - preItem.attr.x,
|
||||||
})
|
offsetY: curComponentInstance.attr.y - preItem.attr.y
|
||||||
}
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
})
|
})
|
||||||
})
|
chartEditStore.moveComponentList(prevComponentInstance)
|
||||||
chartEditStore.moveComponentList(prevComponentInstance)
|
}
|
||||||
|
document.removeEventListener('mousemove', mousemove)
|
||||||
|
document.removeEventListener('mouseup', mouseup)
|
||||||
|
} catch (err) {
|
||||||
|
console.log(err)
|
||||||
}
|
}
|
||||||
document.removeEventListener('mousemove', mousemove)
|
|
||||||
document.removeEventListener('mouseup', mouseup)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
document.addEventListener('mousemove', mousemove)
|
document.addEventListener('mousemove', mousemove)
|
||||||
|
Loading…
Reference in New Issue
Block a user