90 lines
2.2 KiB
TypeScript
Raw Normal View History

import { shallowReactive, ref } from 'vue'
2022-01-14 16:17:14 +08:00
import { icon } from '@/plugins'
import { renderLang, renderIcon } from '@/utils'
2022-01-24 16:25:43 +08:00
import { themeColor, setItem, getCharts } from './useLayout.hook'
import { PackagesCategoryEnum, PackagesCategoryName, PackagesType } from '@/packages/index.d'
2022-01-14 16:17:14 +08:00
// 图表
import { usePackagesStore } from '@/store/modules/packagesStore/packagesStore'
2022-01-20 21:25:35 +08:00
import { ChartLayoutStoreEnum } from '@/store/modules/chartLayoutStore/chartLayoutStore.d'
2022-01-14 16:17:14 +08:00
// 图标
const { BarChartIcon } = icon.ionicons5
const {
TableSplitIcon,
RoadmapIcon,
SpellCheckIcon,
2022-01-15 21:54:04 +08:00
GraphicalDataFlowIcon,
2022-01-14 16:17:14 +08:00
} = icon.carbon
// 图表
2022-01-14 22:07:02 +08:00
const { getPackagesList } = usePackagesStore()
2022-02-26 17:38:24 +08:00
const menuOptions:{
key: string
icon: ReturnType<typeof renderIcon>
label: ReturnType<typeof renderLang>
list: PackagesType
2022-02-26 17:38:24 +08:00
}[] = []
2022-01-14 16:17:14 +08:00
2022-01-14 22:07:02 +08:00
const packagesListObj = {
[PackagesCategoryEnum.CHARTS]: {
icon: renderIcon(RoadmapIcon),
label: PackagesCategoryName.CHARTS,
2022-01-14 22:07:02 +08:00
},
2022-04-01 16:36:22 +08:00
[PackagesCategoryEnum.INFORMATIONS]: {
2022-01-14 22:10:59 +08:00
icon: renderIcon(SpellCheckIcon),
label: PackagesCategoryName.INFORMATIONS,
2022-01-14 22:10:59 +08:00
},
[PackagesCategoryEnum.TABLES]: {
2022-01-15 21:05:11 +08:00
icon: renderIcon(TableSplitIcon),
label: PackagesCategoryName.TABLES,
2022-01-14 22:10:59 +08:00
},
2022-01-14 22:07:02 +08:00
[PackagesCategoryEnum.DECORATES]: {
icon: renderIcon(GraphicalDataFlowIcon),
label: PackagesCategoryName.DECORATES,
2022-01-15 21:54:04 +08:00
},
2022-01-14 22:07:02 +08:00
}
2022-01-14 16:17:14 +08:00
2022-01-14 22:07:02 +08:00
// 处理列表
const handlePackagesList = () => {
for (const val in getPackagesList) {
menuOptions.push({
key: val,
// @ts-ignore
icon: packagesListObj[val].icon,
// @ts-ignore
label: packagesListObj[val].label,
// @ts-ignore
2022-01-15 21:54:04 +08:00
list: getPackagesList[val],
2022-01-14 22:07:02 +08:00
})
}
}
handlePackagesList()
2022-01-14 16:17:14 +08:00
// 记录选中值
let beforeSelect: string = menuOptions[0]['key']
const selectValue = ref<string>(menuOptions[0]['key'])
2022-01-14 22:07:02 +08:00
2022-01-14 16:17:14 +08:00
// 选中的对象值
2022-01-14 22:07:02 +08:00
const selectOptions = ref(menuOptions[0])
2022-01-14 16:17:14 +08:00
// 点击 item
2022-01-14 22:07:02 +08:00
const clickItemHandle = (key: string, item: any) => {
selectOptions.value = item
2022-01-14 16:17:14 +08:00
// 处理折叠
if (beforeSelect === key) {
2022-01-20 21:25:35 +08:00
setItem(ChartLayoutStoreEnum.CHARTS, !getCharts.value)
2022-01-14 16:17:14 +08:00
} else {
2022-01-20 21:25:35 +08:00
setItem(ChartLayoutStoreEnum.CHARTS, true)
2022-01-14 16:17:14 +08:00
}
beforeSelect = key
}
export {
getCharts,
BarChartIcon,
themeColor,
2022-01-14 22:07:02 +08:00
selectOptions,
2022-01-14 16:17:14 +08:00
selectValue,
clickItemHandle,
2022-01-15 21:54:04 +08:00
menuOptions,
2022-01-14 16:17:14 +08:00
}