Giter VIP home page Giter VIP logo

g2-plugin-slider's Introduction

g2-plugin-slider

npm package NPM downloads Percentage of issues still open

A datazoom slider plugin for G2.

Install

首先,你先要确保 G2 已经加载。

如果你使用 npm,直接 npm i @antv/g2-plugin-slider。否则,直接下载最新脚本

import G2 from '@antv/g2';
import Slider from '@antv/g2-plugin-slider';

const slider = new Slider({
  
});
<script src="http://unpkg.alipay.com/@antv/[email protected]"></script>
<script src="http://unpkg.alipay.com/@antv/[email protected]"></script>

<script>
const slider = new Slider({

});  
</script>

API Reference

Create an instance

new Slider({
  container: {string} | {HTMLElement},
  width?: {number} | {string},
  height?: {number},
  padding?: {object} | {number} | {array},
  xAxis: {string},
  yAxis: {string},
  start: {string} | {number},
  end: {string} | {number},
  startRadio?: {number},
  endRadio?: {number},
  minSpan: {number},
  maxSpan: {number},
  data: {array} | {dataview},
  fillerStyle?: {object},
  backgroundStyle?: {object},
  textStyle?: {object},
  handleStyle?: {object},
  backgroundChart?: {object}
});
  • container

(string | HTMLElement)

对应 slider 的 DOM 容器,可以传入该 DOM 的 id 或者直接传入容器的 html 节点对象。

  • width

(string | number)

设置 slider 组件的宽度,默认为 auto,表示自适应容器的宽度。

  • height

(number)

设置 slider 组件的高度,默认为 26,单位为 'px'。

  • padding

设置 slider 组件所在画布 canvas 的内边距,用于与图表对齐(默认图表的 canvas 容器也是带了内边距),默认值同 G2 默认主题的 padding 相同,[ 20, 20, 95, 80 ]。

  • xAxis

(string)

必须声明,我们的 Slider 是带有背景图表的滑动条组件,该字段用于声明该背景图表的横轴映射字段,同时该字段也是数据过滤字段。

  • yAxis

(string)

必须声明,我们的 Slider 是带有背景图表的滑动条组件,该字段用于声明该背景图表的纵轴轴映射字段。

  • data

(array | dataview)

必须声明,数据源。

  • startRadio

(number)

声明滑动条起始滑块的位置对应的范围边界值,值介于 [0, 1]。

注意:startRadiostart 同时声明时,以 startRadio 为准。

  • endRadio

(number)

声明滑动条结束滑块的位置对应的范围边界值,值介于 [0, 1]。

注意:endRadioend 同时声明时,以 endRadio 为准。

  • start

(number | string)

声明滑动条起始滑块的位置对应的数据值,默认为最小值。

  • end

(number | string)

声明滑动条结束滑块的位置对应的数据值,默认为最大值。

  • minSpan

(number)

筛选的最小范围限制,必须对应原始数据的范围,如果是时间,请使用时间戳。

  • maxSpan

(number)

筛选的最大范围限制,必须对应原始数据的范围,如果是时间,请使用时间戳。

  • scales

(object)

用于对 xAxisyAxis 字段进行列定义,用于同操作的图表中对应的列定义相同。

示例代码:

scales: {
  [`${xAxis}`]: {
    type: 'time',
    mask: 'MM-DD'
  }
}
  • onChange

(function)

当滑动条滑块发生变化时,触发该回调函数,主要用于更新 ds 的状态量。该回调函数会提供一个参数,该参数是一个对象,包含如下属性:

onChange: (obj) => {
  const { startValue, endValue, startText, endText, startRadio, endRadio } = obj;
}
  • startValue 起点滑块当前对应的原始数据值,如果是 time 或者 timeCat 类型是,该值为时间戳,请注意。
  • endValue 终点滑块当前对应的原始数据值,如果是 time 或者 timeCat 类型是,该值为时间戳,请注意。
  • startText 起点滑块当前的显示文本值
  • endText 终点滑块当前的显示文本值
  • startRadio 起点滑块当前对应的范围边界值,值介于 [0, 1]
  • endRadio 终点滑块当前对应的范围边界值,值介于 [0, 1]

说明1:之所以区分 text 和 value,是因为大部分情况下用户会对数值进行格式化,所以在设置状态量和更新状态量时,需要保证前后数值类型的一致。 说明2:若数据并非有序排列,则可以通过 [startRadio, endRadio] 获取到滑块起点和终点选中的范围

  • fillerStyle

(object)

选中区域的样式配置,默认配置如下:

{
  fill: '#BDCCED',
  fillOpacity: 0.3
}

图中红框框选区域:

  • backgroundStyle

(object)

slider 整体背景样式。

  • textStyle

(object)

slider 辅助文本字体样式配置。

  • handleStyle

(object)

slider 滑块的样式配置,可配置的属性如下:

{
  img: 'https://gw.alipayobjects.com/zos/rmsportal/QXtfhORGlDuRvLXFzpsQ.png', // 可以使图片地址也可以是 data urls
  width: 5,
  height: 26
}
  • backgroundChart

(object)

slider 滑块的背景图表配置,可配置其图表类型以及颜色:

{
  type: [ 'area' ], // 图表的类型,可以是字符串也可是是数组
  color: '#CCD6EC'
}

Functions

  • slider.render()

slider.render() 渲染组件,即将其绘制到页面上。

  • slider.changeData()

slider.changeData(data) 更新数据源。

  • slider.repaint()

slider.repaint() 重绘。

  • slider.destroy()

slider.destroy() 销毁。

g2-plugin-slider's People

Contributors

cipchk avatar dxq613 avatar elaine1234 avatar leungwensen avatar simaq avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

g2-plugin-slider's Issues

babel的loose模式会导致此模块在electron下无法加载

Summary

如题,默认构建的 build/g2-plugin-slider.js:502subClass.prototype.constructor = subClass,为只读属性,语句无法操作成功。

Uncaught TypeError: Cannot assign to read only property 'constructor' of object '#<Group>'
    at _inheritsLoose (webpack:///./node_modules/@antv/g2-plugin-slider/build/g2-plugin-slider.js?:497)
    at eval (webpack:///./node_modules/@antv/g2-plugin-slider/build/g2-plugin-slider.js?:513)
    at Object.eval (webpack:///./node_modules/@antv/g2-plugin-slider/build/g2-plugin-slider.js?:909)
    at __webpack_require__ (webpack:///./node_modules/@antv/g2-plugin-slider/build/g2-plugin-slider.js?:25)
    at Object.eval (webpack:///./node_modules/@antv/g2-plugin-slider/build/g2-plugin-slider.js?:91)
    at __webpack_require__ (webpack:///./node_modules/@antv/g2-plugin-slider/build/g2-plugin-slider.js?:25)
    at Object.eval (webpack:///./node_modules/@antv/g2-plugin-slider/build/g2-plugin-slider.js?:75)
    at __webpack_require__ (webpack:///./node_modules/@antv/g2-plugin-slider/build/g2-plugin-slider.js?:25)
    at eval (webpack:///./node_modules/@antv/g2-plugin-slider/build/g2-plugin-slider.js?:68)
    at eval (webpack:///./node_modules/@antv/g2-plugin-slider/build/g2-plugin-slider.js?:71)

Environment

  • 依赖链:
  • electron:
ares: "1.15.0"
brotli: "1.0.7"
chrome: "83.0.4103.122"
electron: "9.3.0"
http_parser: "2.8.0"
icu: "65.1"
llhttp: "2.0.1"
modules: "80"
napi: "5"
nghttp2: "1.40.0"
node: "12.14.1"
openssl: "1.1.0"
unicode: "12.1"
uv: "1.33.1"
v8: "8.3.110.13-electron.0"
zlib: "1.2.11"

设定滑动条text 自动隐藏?

滑动条目前可以通过textAttr 设置提示的样式或隐藏,请问是否可以设置提示默认隐藏,当鼠标移动到滑块或2个滑块之间的时候再显示? 或者是否让text出现在滑块上边,而不是左边?

How to set default position?

When I init the slider it defaults to showing a slice of data from the middle.

How can I decide with which data the slider initializes?

动态更新数据

想动态更新数据,以前的Range插件

$.getJSON('url',
				function(data) {
					flowChart.changeData(data)
					rainChart.changeData(data)
					flowChart.repaint()
					rainChart.repaint()

					range.clear()
					range = new G2.Plugin.range({
						id : 'range', //DOM id
						width : 800,
						height : 26,
						dim : 'time',
					});

					range.source(data);
					range.link([ flowChart, rainChart ]);
					range.render();
				});

重新new了一下。。现在这么写每次下面都会出个移动条。。怎么解决

关于 yAxis 的疑问

yAxis
(string)
必须声明,我们的 Slider 是带有背景图表的滑动条组件,该字段用于声明该背景图表的纵轴轴映射字段。

多个纵坐标的情况下,是否也能联动?

2.1.1 版本在 module 引入初始化时报错

Summary

[email protected] 在 module 引入初始化时报错

Environment

版本 2.1.1

Expected behavior

无报错

Actual behavior

在未进一步引用时便出现报错:

Uncaught (in promise) TypeError: Cannot read property 'Group' of undefined
    at Object.<anonymous> (g2-plugin-slider.js:511)
    at __webpack_require__ (g2-plugin-slider.js:30)
    at Object.<anonymous> (g2-plugin-slider.js:96)
    at __webpack_require__ (g2-plugin-slider.js:30)
    at Object.<anonymous> (g2-plugin-slider.js:80)
    at __webpack_require__ (g2-plugin-slider.js:30)
    at g2-plugin-slider.js:73
    at g2-plugin-slider.js:76
    at webpackUniversalModuleDefinition (g2-plugin-slider.js:3)
    at Object../node_modules/_@[email protected]@@antv/g2-plugin-slider/build/g2-plugin-slider.js (g2-plugin-slider.js:10)

Steps to reproduce the behavior

前向依赖 G2 版本 3.4.5

安装插件:

npm i @antv/g2-plugin-slider --save

然后在项目中任意一个 js 文件中写入如下代码:

import G2Slider from '@antv/g2-plugin-slider';

运行即可。

能提供一个非线性的slider例子吗

先抱歉没按照issue格式写,我看到官网上的slider例子都是基于时间线性的,然后试了下非线性的发现不行,是不支持还是我写的不对,所以能提供一个slider的非线性的例子吗,比如如下数据结构

// 柱图数据
cons data = [
{name: 'item1',   value: 10},
{name: 'item2',   value: 20},
{name: 'item3',   value: 40},
{name: 'item4',   value: 50},
{name: 'item5',   value: 60},
...
]

限制start和end之间的距离

Summary

拖动slider的start,当start等于end时,拖拽对象会自动变成整个区间(因为start和end黏在一起了),而且这种情况下要把start 和 end 拉开相当困难。

Environment

任何

Expected behavior

如果可以限制start和end之间的距离,使得距离不要太小可能能解决。

span设置不生效

当使用非线性数据时,设置了startRadio和endRadio后,设置minSpan,maxSpan为相同数值但是滑块还是可以调整大小。

另外是否有开关可以关闭选区范围调整,我想每次数据分片是固定的数量

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.