@easyv/charts 1.5.29 → 1.6.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -78,6 +78,7 @@ var Chart = /*#__PURE__*/(0, _react.memo)(function (_ref2) {
78
78
  active = _useState2[0],
79
79
  setActive = _useState2[1];
80
80
 
81
+ var scaleRef = (0, _react.useRef)([1, 1]);
81
82
  var triggerOnRelative = (0, _react.useCallback)(function (action, data) {
82
83
  if (!interaction) return;
83
84
  var callbacks = interaction.callbacks,
@@ -108,6 +109,9 @@ var Chart = /*#__PURE__*/(0, _react.memo)(function (_ref2) {
108
109
  return {
109
110
  id: id,
110
111
  isIOS: isIOS.current,
112
+ //是否为IOS设备
113
+ scale: scaleRef,
114
+ //大屏的缩放比
111
115
  width: chartWidth,
112
116
  height: chartHeight,
113
117
  triggerOnRelative: triggerOnRelative,
@@ -127,9 +131,12 @@ var Chart = /*#__PURE__*/(0, _react.memo)(function (_ref2) {
127
131
  isAnimation && setActive(dynamicData);
128
132
  };
129
133
 
134
+ getScreenScale();
130
135
  document.addEventListener("switchActive_".concat(id), activeHandler);
136
+ document.addEventListener("resize", getScreenScale);
131
137
  return function () {
132
138
  document.removeEventListener("switchActive_".concat(id), activeHandler);
139
+ document.removeEventListener("resize", getScreenScale);
133
140
  };
134
141
  }, []);
135
142
  var data = originData; //对轴类图表进行自动排序
@@ -158,7 +165,21 @@ var Chart = /*#__PURE__*/(0, _react.memo)(function (_ref2) {
158
165
  config: config,
159
166
  data: data,
160
167
  active: active
161
- }, props)));
168
+ }, props))); //获取大屏缩放系数
169
+
170
+ function getScreenScale() {
171
+ setTimeout(function () {
172
+ //获取大屏缩放系数
173
+ var dom = document.getElementById("bigscreen-container") || document.getElementById("m-simulator");
174
+
175
+ if (dom) {
176
+ var transform = dom.style.transform;
177
+ var scale = transform ? transform.match(/^scale\((.+)\)$/)[1] : "1,1";
178
+ var arr = scale.split(",");
179
+ scaleRef.current = [1 / arr[0], 1 / (arr.length === 1 ? arr[0] : arr[1])]; //这里做一次除法,后面就可以用乘法计算值了
180
+ }
181
+ }, 50);
182
+ }
162
183
  });
163
184
  var _default = Chart;
164
185
  exports["default"] = _default;
@@ -17,6 +17,8 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/de
17
17
 
18
18
  var _react = _interopRequireWildcard(require("react"));
19
19
 
20
+ var _context = require("../context");
21
+
20
22
  var _d3Scale = require("d3-scale");
21
23
 
22
24
  var _utils = require("../utils");
@@ -50,6 +52,8 @@ var _default = /*#__PURE__*/(0, _react.memo)( /*#__PURE__*/(0, _react.forwardRef
50
52
  series = _props$props.series,
51
53
  top = _props$props.top,
52
54
  bandLength = _props$props.bandLength;
55
+ var context = (0, _react.useContext)(_context.chartContext);
56
+ var scale = context.scale;
53
57
  var xAxis = axes.get("x");
54
58
  var barRef = (0, _react.useRef)();
55
59
  var barStyle = {
@@ -82,7 +86,8 @@ var _default = /*#__PURE__*/(0, _react.memo)( /*#__PURE__*/(0, _react.forwardRef
82
86
  var rightX = rawTranslateX + cBarWidth;
83
87
 
84
88
  var move = function move(e) {
85
- var movementX = e.movementX;
89
+ var ex = e.movementX;
90
+ var movementX = ex * scale.current[0];
86
91
  initX = (0, _utils.mathR)(initX + movementX, [-rawTranslateX, rightX - rawTranslateX]);
87
92
  setControlWidth(function (pre) {
88
93
  var cWidth = pre.cWidth,
@@ -152,7 +157,7 @@ var _default = /*#__PURE__*/(0, _react.memo)( /*#__PURE__*/(0, _react.forwardRef
152
157
 
153
158
  var mouseMoveHandle = function mouseMoveHandle(e) {
154
159
  //当前位移的距离
155
- movementX += e.movementX;
160
+ movementX += e.movementX * scale.current[0];
156
161
  setX(movementX + rawTranslateX, true);
157
162
  };
158
163
 
@@ -202,7 +207,8 @@ var _default = /*#__PURE__*/(0, _react.memo)( /*#__PURE__*/(0, _react.forwardRef
202
207
  var rawTranslateX = parseFloat(transform ? transform.match(/\d+\.*\d*/)[0] : 0);
203
208
 
204
209
  var move = function move(e) {
205
- var movementX = e.movementX;
210
+ var ex = e.movementX;
211
+ var movementX = ex * scale.current[0];
206
212
  setControlWidth(function (pre) {
207
213
  var cWidth = pre.cWidth,
208
214
  cBarWidth = pre.cBarWidth;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@easyv/charts",
3
- "version": "1.5.29",
3
+ "version": "1.6.2",
4
4
  "description": "",
5
5
  "main": "lib/index.js",
6
6
  "scripts": {
@@ -44,6 +44,7 @@ const Chart = memo(
44
44
  const chartWidth = width - marginLeft - marginRight;
45
45
  const chartHeight = height - marginTop - marginBottom;
46
46
  const [active, setActive] = useState(true);
47
+ const scaleRef = useRef([1,1]);
47
48
 
48
49
  const triggerOnRelative = useCallback(
49
50
  (action,data) => {
@@ -81,7 +82,8 @@ const Chart = memo(
81
82
  const context = useMemo(
82
83
  () => ({
83
84
  id,
84
- isIOS:isIOS.current,
85
+ isIOS:isIOS.current, //是否为IOS设备
86
+ scale:scaleRef, //大屏的缩放比
85
87
  width: chartWidth,
86
88
  height: chartHeight,
87
89
  triggerOnRelative,
@@ -99,9 +101,12 @@ const Chart = memo(
99
101
  // console.log("当前组件(id="+id+")状态:",dynamicData?"唤醒":"休眠");
100
102
  isAnimation && setActive(dynamicData);
101
103
  }
104
+ getScreenScale();
102
105
  document.addEventListener(`switchActive_${id}`,activeHandler);
106
+ document.addEventListener("resize",getScreenScale);
103
107
  return ()=>{
104
108
  document.removeEventListener(`switchActive_${id}`,activeHandler);
109
+ document.removeEventListener("resize",getScreenScale);
105
110
  }
106
111
  },[]);
107
112
 
@@ -128,7 +133,21 @@ const Chart = memo(
128
133
  <CartesianChart id={id} config={config} data={data} active={active} {...props} />
129
134
  )}
130
135
  </chartContext.Provider>
136
+
131
137
  );
138
+ //获取大屏缩放系数
139
+ function getScreenScale(){
140
+ setTimeout(()=>{
141
+ //获取大屏缩放系数
142
+ let dom = document.getElementById("bigscreen-container") || document.getElementById("m-simulator");
143
+ if(dom){
144
+ const transform = dom.style.transform;
145
+ const scale = transform?transform.match(/^scale\((.+)\)$/)[1]:"1,1";
146
+ const arr = scale.split(",");
147
+ scaleRef.current = [1/arr[0],1/(arr.length===1?arr[0]:arr[1])]; //这里做一次除法,后面就可以用乘法计算值了
148
+ }
149
+ },50);
150
+ }
132
151
  }
133
152
  );
134
153
 
@@ -1,4 +1,5 @@
1
- import React, { forwardRef, memo, useRef } from "react";
1
+ import React, { forwardRef, memo, useRef, useContext } from "react";
2
+ import { chartContext } from "../context";
2
3
  import { scaleLinear } from "d3-scale";
3
4
  import { mathR } from "../utils";
4
5
 
@@ -11,6 +12,8 @@ export default memo(forwardRef((props, ref) => {
11
12
  axes, series, top, bandLength
12
13
  }
13
14
  } = props;
15
+ const context = useContext(chartContext);
16
+ const scale = context.scale;
14
17
  const xAxis = axes.get("x");
15
18
  const barRef = useRef();
16
19
 
@@ -44,7 +47,8 @@ export default memo(forwardRef((props, ref) => {
44
47
  let rawTranslateX = parseFloat(transform?transform.match(/\d+\.*\d*/)[0]:0);
45
48
  const rightX = rawTranslateX+cBarWidth;
46
49
  const move=(e)=>{
47
- const { movementX } = e;
50
+ const { movementX:ex } = e;
51
+ const movementX = ex * scale.current[0];
48
52
  initX = mathR(initX+movementX,[-rawTranslateX, rightX-rawTranslateX]);
49
53
  setControlWidth((pre)=>{
50
54
  const { cWidth, cBarWidth } = pre;
@@ -104,7 +108,7 @@ export default memo(forwardRef((props, ref) => {
104
108
  let rawTranslateX = parseFloat(transform?transform.match(/\d+\.*\d*/)[0]:0);
105
109
  const mouseMoveHandle = (e) => {
106
110
  //当前位移的距离
107
- movementX += e.movementX;
111
+ movementX += e.movementX * scale.current[0];
108
112
  setX(movementX + rawTranslateX,true);
109
113
  };
110
114
  const mouseUpHandle = (e) => {
@@ -144,7 +148,8 @@ export default memo(forwardRef((props, ref) => {
144
148
  const transform = ref.current.style.transform;
145
149
  let rawTranslateX = parseFloat(transform?transform.match(/\d+\.*\d*/)[0]:0);
146
150
  const move=(e)=>{
147
- const { movementX } = e;
151
+ const { movementX:ex } = e;
152
+ const movementX = ex * scale.current[0];
148
153
  setControlWidth((pre)=>{
149
154
  const { cWidth, cBarWidth } = pre;
150
155
  const maxWidth = cWidth-rawTranslateX;