config.ts 2.04 KB
import { echartOptionProfixHandle, PublicConfigClass } from '@/packages/public'
import { GraphConfig } from './index'
import { CreateComponentType } from '@/packages/index.d'
import cloneDeep from 'lodash/cloneDeep'
import dataJson from './data.json'

export const includes = []

// 关系图布局
export const GraphLayout = [
  { label: '无', value: 'none' },
  { label: '环形', value: 'circular' },
  { label: '力引导', value: 'force' }
]

// 标签开关
export const LabelSwitch = [
  { label: '开启', value: 1 },
  { label: '关闭', value: 0 }
]

// 标签位置
export const LabelPosition = [
  { label: '左侧', value: 'left' },
  { label: '右侧', value: 'right' },
  { label: '顶部', value: 'top' },
  { label: '底部', value: 'bottom' },
  { label: '内部', value: 'inside' }
]

// 图-迭代动画
export const LayoutAnimation = [
  { label: '开启', value: 1 },
  { label: '关闭', value: 0 }
]

export const option = {
    dataset: { ...dataJson },
    tooltip: {},
    legend:{
      show:true,
      textStyle:{
        color: '#eee',
        fontSize: 14
      },
      data: dataJson.categories.map(function (a) {
          return a.name
      })
    },
    series: [
      {
        type: 'graph',
        layout: 'none', // none circular环形布局
        data: dataJson.nodes,
        links: dataJson.links,
        categories: dataJson.categories,
        label: {
          show: 1,
          position: 'right',
          formatter: '{b}'
        },
        labelLayout: {
          hideOverlap: true
        },
        lineStyle: {
          color: 'source', // 线条颜色
          curveness: 0.2 // 线条卷曲程度
        },
        force: {
        repulsion: 100,
        gravity: 0.1,
        edgeLength: 30,
        layoutAnimation: 1,
        friction: 0.6
        }
      }
    ]
}

export default class Config extends PublicConfigClass implements CreateComponentType {
  public key = GraphConfig.key
  public chartConfig = cloneDeep(GraphConfig)
  // 图表配置项
  public option = echartOptionProfixHandle(option, includes)
}