2023-03-11 16:58:32 +08:00
|
|
|
import { toRefs } from 'vue'
|
|
|
|
import { CreateComponentType } from '@/packages/index.d'
|
|
|
|
import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore'
|
|
|
|
|
|
|
|
// 获取类型
|
|
|
|
type ChartEditStoreType = typeof useChartEditStore
|
|
|
|
|
|
|
|
// Params 参数修改触发 api 更新图表请求
|
|
|
|
export const useChartInteract = (
|
|
|
|
chartConfig: CreateComponentType,
|
|
|
|
useChartEditStore: ChartEditStoreType,
|
2023-03-14 22:19:55 +08:00
|
|
|
param: { [T: string]: any },
|
|
|
|
interactEventOn: string
|
2023-03-11 16:58:32 +08:00
|
|
|
) => {
|
|
|
|
const chartEditStore = useChartEditStore()
|
|
|
|
const { interactEvents } = chartConfig.events
|
|
|
|
const fnOnEvent = interactEvents.filter(item => {
|
2023-03-14 22:19:55 +08:00
|
|
|
return item.interactOn === interactEventOn
|
2023-03-11 16:58:32 +08:00
|
|
|
})
|
|
|
|
|
2023-03-11 18:19:30 +08:00
|
|
|
if (fnOnEvent.length === 0) return
|
2023-03-11 16:58:32 +08:00
|
|
|
fnOnEvent.forEach(item => {
|
2023-03-11 22:03:35 +08:00
|
|
|
const index = chartEditStore.fetchTargetIndex(item.interactComponentId)
|
|
|
|
if (index === -1) return
|
2023-03-11 16:58:32 +08:00
|
|
|
const { Params, Header } = toRefs(chartEditStore.componentList[index].request.requestParams)
|
|
|
|
Object.keys(item.interactFn).forEach(key => {
|
|
|
|
if (Params.value[key]) {
|
|
|
|
Params.value[key] = param[item.interactFn[key]]
|
|
|
|
}
|
|
|
|
if (Header.value[key]) {
|
|
|
|
Header.value[key] = param[item.interactFn[key]]
|
|
|
|
}
|
|
|
|
})
|
|
|
|
})
|
|
|
|
}
|
2023-03-14 22:19:55 +08:00
|
|
|
|
|
|
|
// 联动事件触发的 type 变更时,清除当前绑定内容
|
|
|
|
export const clearInteractEvent = (chartConfig: CreateComponentType) => {
|
|
|
|
|
|
|
|
}
|