UNPKG

10.5 kBSource Map (JSON)View Raw
1{"version":3,"file":"chart.js","sourceRoot":"","sources":["../../src/chart/chart.ts"],"names":[],"mappings":"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","sourcesContent":["import { debounce, each, isString } from '@antv/util';\nimport { ChartCfg } from '../interface';\nimport { GROUP_Z_INDEX, VIEW_LIFE_CIRCLE } from '../constant';\nimport { getEngine } from '../engine';\nimport { createDom, getChartSize, removeDom, modifyCSS } from '../util/dom';\nimport View from './view';\nimport { AriaOption } from '../interface';\n\n/**\n * Chart 类,是使用 G2 进行绘图的入口。\n */\nexport default class Chart extends View {\n /** Chart 的 DOM 容器 */\n public ele: HTMLElement;\n\n /** 图表宽度 */\n public width: number;\n /** 图表高度 */\n public height: number;\n /** 是否开启局部刷新 */\n public localRefresh: boolean;\n /** 是否自适应 DOM 容器宽高,默认为 false,需要用户手动指定宽高 */\n public autoFit: boolean;\n /** 图表渲染引擎 */\n public renderer: 'canvas' | 'svg';\n\n private wrapperElement: HTMLElement;\n\n // @ts-ignore\n constructor(props: ChartCfg) {\n const {\n container,\n width,\n height,\n autoFit = false,\n padding,\n appendPadding,\n renderer = 'canvas',\n pixelRatio,\n localRefresh = true,\n visible = true,\n supportCSSTransform = false,\n defaultInteractions = ['tooltip', 'legend-filter', 'legend-active', 'continuous-filter', 'ellipsis-text', 'axis-description'],\n options,\n limitInPlot,\n theme,\n syncViewPadding,\n } = props;\n\n const ele: HTMLElement = isString(container) ? document.getElementById(container) : container;\n\n // 生成内部正式绘制的 div 元素\n const wrapperElement = createDom('<div style=\"position:relative;\"></div>');\n ele.appendChild(wrapperElement);\n\n // if autoFit, use the container size, to avoid the graph render twice.\n const size = getChartSize(ele, autoFit, width, height);\n\n const G = getEngine(renderer);\n\n const canvas = new G.Canvas({\n container: wrapperElement,\n pixelRatio,\n localRefresh,\n supportCSSTransform,\n ...size,\n });\n\n // 调用 view 的创建\n super({\n parent: null,\n canvas,\n // create 3 group layers for views.\n backgroundGroup: canvas.addGroup({ zIndex: GROUP_Z_INDEX.BG }),\n middleGroup: canvas.addGroup({ zIndex: GROUP_Z_INDEX.MID }),\n foregroundGroup: canvas.addGroup({ zIndex: GROUP_Z_INDEX.FORE }),\n padding,\n appendPadding,\n visible,\n options,\n limitInPlot,\n theme,\n syncViewPadding,\n });\n\n this.ele = ele;\n this.canvas = canvas;\n this.width = size.width;\n this.height = size.height;\n this.autoFit = autoFit;\n this.localRefresh = localRefresh;\n this.renderer = renderer;\n this.wrapperElement = wrapperElement;\n\n // 自适应大小\n this.updateCanvasStyle();\n this.bindAutoFit();\n this.initDefaultInteractions(defaultInteractions);\n }\n\n private initDefaultInteractions(interactions) {\n each(interactions, (interaction) => {\n this.interaction(interaction);\n });\n }\n\n /**\n * 设置 WAI-ARIA 无障碍标签。如何根据图形语法自动生成 arial 内容?\n * @param ariaOption\n */\n public aria(ariaOption: AriaOption) {\n const ATTR = 'aria-label';\n if (ariaOption === false) {\n this.ele.removeAttribute(ATTR);\n } else {\n this.ele.setAttribute(ATTR, ariaOption.label);\n }\n }\n\n /**\n * 改变图表大小,同时重新渲染。\n * @param width 图表宽度\n * @param height 图表高度\n * @returns\n */\n public changeSize(width: number, height: number) {\n // 如果宽高一致,那么 changeSize 不执行任何操作\n if (this.width === width && this.height === height) {\n return this;\n }\n\n this.emit(VIEW_LIFE_CIRCLE.BEFORE_CHANGE_SIZE);\n\n this.width = width;\n this.height = height;\n this.canvas.changeSize(width, height);\n\n // 重新渲染\n this.render(true);\n\n this.emit(VIEW_LIFE_CIRCLE.AFTER_CHANGE_SIZE);\n\n return this;\n }\n\n /**\n * 清空图表,同时清除掉 aria 配置\n */\n public clear() {\n super.clear();\n\n this.aria(false);\n }\n\n /**\n * 销毁图表,同时解绑事件,销毁创建的 G.Canvas 实例。\n * @returns void\n */\n public destroy() {\n super.destroy();\n\n this.unbindAutoFit();\n this.canvas.destroy();\n\n removeDom(this.wrapperElement);\n this.wrapperElement = null;\n }\n\n /**\n * 显示或隐藏图表\n * @param visible 是否可见,true 表示显示,false 表示隐藏\n * @returns\n */\n public changeVisible(visible: boolean) {\n super.changeVisible(visible); // 需要更新 visible 变量\n this.wrapperElement.style.display = visible ? '' : 'none';\n\n return this;\n }\n\n /**\n * 自动根据容器大小 resize 画布\n */\n public forceFit() {\n // skip if already destroyed\n if (!this.destroyed) {\n // 注意第二参数用 true,意思是即时 autoFit = false,forceFit() 调用之后一样是适配容器\n const { width, height } = getChartSize(this.ele, true, this.width, this.height);\n this.changeSize(width, height);\n }\n }\n\n private updateCanvasStyle() {\n modifyCSS(this.canvas.get('el'), {\n display: 'inline-block',\n verticalAlign: 'middle',\n });\n }\n\n private bindAutoFit() {\n if (this.autoFit) {\n window.addEventListener('resize', this.onResize);\n }\n }\n\n private unbindAutoFit() {\n if (this.autoFit) {\n window.removeEventListener('resize', this.onResize);\n }\n }\n\n /**\n * when container size changed, change chart size props, and re-render.\n */\n private onResize = debounce(() => {\n this.forceFit();\n }, 300);\n}\n"]}
\No newline at end of file