UNPKG

19.8 kBSource Map (JSON)View Raw
1{"version":3,"file":"slider.js","sourceRoot":"","sources":["../../../src/chart/controller/slider.ts"],"names":[],"mappings":"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","sourcesContent":["import { deepMix, get, isObject, size, clamp, isNil, noop, throttle, isEmpty, valuesOfKey } from '@antv/util';\nimport { COMPONENT_TYPE, DIRECTION, LAYER, VIEW_LIFE_CIRCLE } from '../../constant';\nimport { IGroup, Slider as SliderComponent } from '../../dependents';\nimport { ComponentOption, Datum, Padding } from '../../interface';\nimport { BBox } from '../../util/bbox';\nimport { directionToPosition } from '../../util/direction';\nimport { isBetween } from '../../util/helper';\nimport { Writeable } from '../../util/types';\nimport View from '../view';\nimport { Controller } from './base';\nimport { SliderOption, SliderCfg } from '../../interface';\n\n/**\n * @ignore\n * slider Controller\n */\nexport default class Slider extends Controller<SliderOption> {\n private slider: ComponentOption;\n private container: IGroup;\n\n private width: number;\n private start: number;\n private end: number;\n\n private onChangeFn: (evt: {}) => void = noop;\n\n constructor(view: View) {\n super(view);\n\n this.container = this.view.getLayer(LAYER.FORE).addGroup();\n this.onChangeFn = throttle(this.onValueChange, 20, {\n leading: true,\n }) as (evt: {}) => void;\n\n this.width = 0;\n this.view.on(VIEW_LIFE_CIRCLE.BEFORE_CHANGE_DATA, this.resetMeasure);\n this.view.on(VIEW_LIFE_CIRCLE.BEFORE_CHANGE_SIZE, this.resetMeasure);\n }\n\n get name(): string {\n return 'slider';\n }\n\n public destroy() {\n super.destroy();\n this.view.off(VIEW_LIFE_CIRCLE.BEFORE_CHANGE_DATA, this.resetMeasure);\n this.view.off(VIEW_LIFE_CIRCLE.BEFORE_CHANGE_SIZE, this.resetMeasure);\n }\n\n /**\n * 初始化\n */\n public init() {}\n\n /**\n * 渲染\n */\n public render() {\n this.option = this.view.getOptions().slider;\n const { start, end } = this.getSliderCfg();\n if (isNil(this.start)) {\n this.start = start;\n this.end = end;\n }\n\n const { data: viewData } = this.view.getOptions();\n if (this.option && !isEmpty(viewData)) {\n if (this.slider) {\n // exist, update\n this.slider = this.updateSlider();\n } else {\n // not exist, create\n this.slider = this.createSlider();\n // 监听事件,绑定交互\n this.slider.component.on('sliderchange', this.onChangeFn);\n }\n } else {\n if (this.slider) {\n // exist, destroy\n this.slider.component.destroy();\n this.slider = undefined;\n } else {\n // do nothing\n }\n }\n }\n\n /**\n * 布局\n */\n public layout() {\n if (this.option && !this.width) {\n this.measureSlider();\n setTimeout(() => {\n // 初始状态下的 view 数据过滤\n if (!this.view.destroyed) {\n this.changeViewData(this.start, this.end);\n }\n }, 0);\n }\n if (this.slider) {\n const width = this.view.coordinateBBox.width;\n // 获取组件的 layout bbox\n const padding: Padding = this.slider.component.get('padding') as Padding;\n const [paddingTop, paddingRight, paddingBottom, paddingLeft] = padding;\n const bboxObject = this.slider.component.getLayoutBBox();\n const bbox = new BBox(bboxObject.x, bboxObject.y, Math.min(bboxObject.width, width), bboxObject.height).expand(\n padding\n );\n const { minText, maxText } = this.getMinMaxText(this.start, this.end);\n\n const [x1, y1] = directionToPosition(this.view.viewBBox, bbox, DIRECTION.BOTTOM);\n const [x2, y2] = directionToPosition(this.view.coordinateBBox, bbox, DIRECTION.BOTTOM);\n\n // 默认放在 bottom\n this.slider.component.update({\n ...this.getSliderCfg(),\n x: x2 + paddingLeft,\n y: y1 + paddingTop,\n width: this.width,\n start: this.start,\n end: this.end,\n minText,\n maxText,\n });\n\n this.view.viewBBox = this.view.viewBBox.cut(bbox, DIRECTION.BOTTOM);\n }\n }\n\n /**\n * 更新\n */\n public update() {\n // 逻辑和 render 保持一致\n this.render();\n }\n\n /**\n * 创建 slider 组件\n */\n private createSlider(): ComponentOption {\n const cfg: any = this.getSliderCfg();\n // 添加 slider 组件\n const component = new SliderComponent({\n container: this.container,\n ...cfg,\n });\n\n component.init();\n\n return {\n component,\n layer: LAYER.FORE,\n direction: DIRECTION.BOTTOM,\n type: COMPONENT_TYPE.SLIDER,\n };\n }\n\n /**\n * 更新配置\n */\n private updateSlider() {\n let cfg = this.getSliderCfg();\n if (this.width) {\n const { minText, maxText } = this.getMinMaxText(this.start, this.end);\n cfg = { ...cfg, width: this.width, start: this.start, end: this.end, minText, maxText };\n }\n\n this.slider.component.update(cfg);\n\n return this.slider;\n }\n\n /**\n * 进行测量操作\n */\n private measureSlider() {\n const { width } = this.getSliderCfg();\n\n this.width = width;\n }\n\n /**\n * 清除测量\n */\n private resetMeasure = () => {\n this.clear();\n };\n\n /**\n * 生成 slider 配置\n */\n private getSliderCfg() {\n let cfg: Writeable<SliderCfg> & { x: number; y: number; width: number; minText: string; maxText: string } = {\n height: 16,\n start: 0,\n end: 1,\n minText: '',\n maxText: '',\n x: 0,\n y: 0,\n width: this.view.coordinateBBox.width,\n };\n if (isObject(this.option)) {\n // 用户配置的数据,优先级更高\n const trendCfg = {\n data: this.getData(),\n ...get(this.option, 'trendCfg', {}),\n };\n\n // 因为有样式,所以深层覆盖\n cfg = deepMix({}, cfg, this.getThemeOptions(), this.option);\n\n // trendCfg 因为有数据数组,所以使用浅替换\n cfg = { ...cfg, trendCfg };\n }\n\n cfg.start = clamp(Math.min(isNil(cfg.start) ? 0 : cfg.start, isNil(cfg.end) ? 1 : cfg.end), 0, 1);\n cfg.end = clamp(Math.max(isNil(cfg.start) ? 0 : cfg.start, isNil(cfg.end) ? 1 : cfg.end), 0, 1);\n\n return cfg;\n }\n\n /**\n * 从 view 中获取数据,缩略轴使用全量的数据\n */\n private getData(): number[] {\n const data = this.view.getOptions().data;\n const [yScale] = this.view.getYScales();\n const groupScales = this.view.getGroupScales();\n if (groupScales.length) {\n const { field, ticks } = groupScales[0];\n return data.reduce((pre, cur) => {\n if (cur[field] === ticks[0]) {\n pre.push(cur[yScale.field] as number);\n }\n return pre;\n }, []) as number[];\n }\n\n return data.map((datum) => datum[yScale.field] || 0);\n }\n\n /**\n * 获取 slider 的主题配置\n */\n private getThemeOptions() {\n const theme = this.view.getTheme();\n return get(theme, ['components', 'slider', 'common'], {});\n }\n\n /**\n * 滑块滑动的时候出发\n * @param v\n */\n private onValueChange = (v: any) => {\n const [min, max] = v;\n\n this.start = min;\n this.end = max;\n\n this.changeViewData(min, max);\n };\n\n /**\n * 根据 start/end 和当前数据计算出当前的 minText/maxText\n * @param min\n * @param max\n */\n private getMinMaxText(min: number, max: number) {\n const data = this.view.getOptions().data;\n const xScale = this.view.getXScale();\n const isHorizontal = true;\n let values = valuesOfKey(data, xScale.field);\n\n // 如果是 xScale 数值类型,则进行排序\n if (xScale.isLinear) {\n values = values.sort();\n }\n\n const xValues = isHorizontal ? values : values.reverse();\n const dataSize = size(data);\n\n if (!xScale || !dataSize) {\n return {}; // fix: 需要兼容,否则调用方直接取值会报错\n }\n\n const xTickCount = size(xValues);\n\n const minIndex = Math.floor(min * (xTickCount - 1));\n const maxIndex = Math.floor(max * (xTickCount - 1));\n\n let minText = get(xValues, [minIndex]);\n let maxText = get(xValues, [maxIndex]);\n\n const formatter = this.getSliderCfg().formatter as SliderCfg['formatter'];\n if (formatter) {\n minText = formatter(minText, data[minIndex], minIndex);\n maxText = formatter(maxText, data[maxIndex], maxIndex);\n }\n\n return {\n minText,\n maxText,\n };\n }\n\n /**\n * 更新 view 过滤数据\n * @param min\n * @param max\n */\n private changeViewData(min: number, max: number) {\n const data = this.view.getOptions().data;\n const xScale = this.view.getXScale();\n const dataSize = size(data);\n if (!xScale || !dataSize) {\n return;\n }\n const isHorizontal = true;\n const values = valuesOfKey(data, xScale.field);\n\n // 如果是 xScale 数值类型,则进行排序\n const xScaleValues = this.view.getXScale().isLinear ? values.sort((a, b) => Number(a) - Number(b)) : values;\n\n const xValues = isHorizontal ? xScaleValues : xScaleValues.reverse();\n const xTickCount = size(xValues);\n\n const minIndex = Math.floor(min * (xTickCount - 1));\n const maxIndex = Math.floor(max * (xTickCount - 1));\n\n // 增加 x 轴的过滤器\n this.view.filter(xScale.field, (value: any, datum: Datum) => {\n const idx: number = xValues.indexOf(value);\n return idx > -1 ? isBetween(idx, minIndex, maxIndex) : true;\n });\n this.view.render(true);\n }\n\n /**\n * 覆写父类方法\n */\n public getComponents() {\n return this.slider ? [this.slider] : [];\n }\n\n /**\n * 覆盖父类\n */\n public clear() {\n if (this.slider) {\n this.slider.component.destroy();\n this.slider = undefined;\n }\n this.width = 0;\n this.start = undefined;\n this.end = undefined;\n }\n}\n"]}
\No newline at end of file