echarts 3.7.1 → 3.7.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.
- package/dist/echarts-en.js +77756 -0
- package/dist/echarts-en.min.js +38 -0
- package/dist/echarts.common-en.js +50169 -0
- package/dist/echarts.common-en.min.js +30 -0
- package/dist/echarts.common.js +1408 -1186
- package/dist/echarts.common.min.js +14 -14
- package/dist/echarts.js +1572 -1278
- package/dist/echarts.min.js +22 -22
- package/dist/echarts.simple-en.js +34988 -0
- package/dist/echarts.simple-en.min.js +27 -0
- package/dist/echarts.simple.js +1152 -994
- package/dist/echarts.simple.min.js +11 -11
- package/index.blank.js +4 -0
- package/lib/chart/bar/BaseBarSeries.js +3 -3
- package/lib/chart/candlestick/candlestickLayout.js +26 -1
- package/lib/chart/graph/forceHelper.js +5 -0
- package/lib/chart/graph/forceLayout.js +0 -1
- package/lib/chart/helper/whiskerBoxCommon.js +6 -1
- package/lib/chart/line/LineView.js +14 -2
- package/lib/chart/lines/LinesView.js +22 -7
- package/lib/chart/pie/PieSeries.js +3 -1
- package/lib/chart/pie/PieView.js +1 -1
- package/lib/chart/treemap/TreemapView.js +5 -28
- package/lib/component/axis/AxisBuilder.js +249 -178
- package/lib/component/axis/CartesianAxisView.js +15 -3
- package/lib/component/axis/ParallelAxisView.js +1 -1
- package/lib/component/axis/RadiusAxisView.js +1 -1
- package/lib/component/axis/SingleAxisView.js +8 -2
- package/lib/component/helper/RoamController.js +12 -11
- package/lib/component/marker/MarkAreaView.js +1 -1
- package/lib/component/radar/RadarView.js +1 -1
- package/lib/component/toolbox/feature/Brush.js +3 -8
- package/lib/component/toolbox/feature/DataView.js +3 -3
- package/lib/component/toolbox/feature/DataZoom.js +3 -4
- package/lib/component/toolbox/feature/MagicType.js +3 -6
- package/lib/component/toolbox/feature/Restore.js +2 -1
- package/lib/component/toolbox/feature/SaveAsImage.js +23 -9
- package/lib/component/visualMap/ContinuousModel.js +2 -2
- package/lib/component/visualMap/ContinuousView.js +3 -3
- package/lib/component/visualMap/PiecewiseModel.js +0 -1
- package/lib/component/visualMap/VisualMapModel.js +17 -11
- package/lib/coord/calendar/Calendar.js +64 -20
- package/lib/echarts.js +5 -4
- package/lib/lang/cn.js +4 -0
- package/lib/lang/default.js +42 -0
- package/lib/lang/en.js +42 -0
- package/lib/lang.js +42 -0
- package/lib/langEN.js +42 -0
- package/lib/preprocessor/helper/compatStyle.js +24 -23
- package/lib/scale/Time.js +4 -4
- package/lib/util/graphic.js +5 -5
- package/lib/util/number.js +42 -21
- package/lib/visual/VisualMapping.js +3 -3
- package/package.json +3 -3
- package/rollup.config.js +49 -0
- package/src/chart/bar/BaseBarSeries.js +3 -3
- package/src/chart/candlestick/candlestickLayout.js +26 -1
- package/src/chart/graph/forceHelper.js +5 -0
- package/src/chart/graph/forceLayout.js +0 -1
- package/src/chart/helper/whiskerBoxCommon.js +6 -2
- package/src/chart/line/LineView.js +14 -2
- package/src/chart/lines/LinesView.js +22 -7
- package/src/chart/pie/PieSeries.js +3 -1
- package/src/chart/pie/PieView.js +1 -1
- package/src/chart/treemap/TreemapView.js +5 -28
- package/src/component/axis/AxisBuilder.js +249 -178
- package/src/component/axis/CartesianAxisView.js +15 -3
- package/src/component/axis/ParallelAxisView.js +1 -1
- package/src/component/axis/RadiusAxisView.js +1 -1
- package/src/component/axis/SingleAxisView.js +8 -2
- package/src/component/helper/RoamController.js +12 -11
- package/src/component/marker/MarkAreaView.js +1 -1
- package/src/component/radar/RadarView.js +1 -1
- package/src/component/toolbox/feature/Brush.js +3 -8
- package/src/component/toolbox/feature/DataView.js +3 -3
- package/src/component/toolbox/feature/DataZoom.js +3 -4
- package/src/component/toolbox/feature/MagicType.js +3 -6
- package/src/component/toolbox/feature/Restore.js +2 -1
- package/src/component/toolbox/feature/SaveAsImage.js +23 -10
- package/src/component/visualMap/ContinuousModel.js +2 -2
- package/src/component/visualMap/ContinuousView.js +3 -3
- package/src/component/visualMap/PiecewiseModel.js +0 -1
- package/src/component/visualMap/VisualMapModel.js +17 -11
- package/src/coord/calendar/Calendar.js +64 -20
- package/src/echarts.js +5 -4
- package/src/lang.js +43 -0
- package/src/langEN.js +43 -0
- package/src/preprocessor/helper/compatStyle.js +24 -23
- package/src/scale/Time.js +4 -4
- package/src/util/graphic.js +5 -5
- package/src/util/number.js +42 -21
- package/src/visual/VisualMapping.js +3 -3
- package/webpack.config.js +21 -7
- package/.npmignore +0 -10
|
@@ -49,7 +49,7 @@ define(function (require) {
|
|
|
49
49
|
* @param {Object} opt Standard axis parameters.
|
|
50
50
|
* @param {Array.<number>} opt.position [x, y]
|
|
51
51
|
* @param {number} opt.rotation by radian
|
|
52
|
-
* @param {number} [opt.nameDirection=1] 1 or -1 Used when nameLocation is 'middle'.
|
|
52
|
+
* @param {number} [opt.nameDirection=1] 1 or -1 Used when nameLocation is 'middle' or 'center'.
|
|
53
53
|
* @param {number} [opt.tickDirection=1] 1 or -1
|
|
54
54
|
* @param {number} [opt.labelDirection=1] 1 or -1
|
|
55
55
|
* @param {number} [opt.labelOffset=0] Usefull when onZero.
|
|
@@ -171,173 +171,14 @@ define(function (require) {
|
|
|
171
171
|
/**
|
|
172
172
|
* @private
|
|
173
173
|
*/
|
|
174
|
-
|
|
174
|
+
axisTickLabel: function () {
|
|
175
175
|
var axisModel = this.axisModel;
|
|
176
|
-
var axis = axisModel.axis;
|
|
177
|
-
|
|
178
|
-
if (!axisModel.get('axisTick.show') || axis.scale.isBlank()) {
|
|
179
|
-
return;
|
|
180
|
-
}
|
|
181
|
-
|
|
182
|
-
var tickModel = axisModel.getModel('axisTick');
|
|
183
176
|
var opt = this.opt;
|
|
184
177
|
|
|
185
|
-
var
|
|
186
|
-
var
|
|
187
|
-
|
|
188
|
-
var tickInterval = getInterval(tickModel, opt.labelInterval);
|
|
189
|
-
var ticksCoords = axis.getTicksCoords(tickModel.get('alignWithLabel'));
|
|
190
|
-
var ticks = axis.scale.getTicks();
|
|
191
|
-
|
|
192
|
-
var pt1 = [];
|
|
193
|
-
var pt2 = [];
|
|
194
|
-
var matrix = this._transform;
|
|
195
|
-
|
|
196
|
-
for (var i = 0; i < ticksCoords.length; i++) {
|
|
197
|
-
// Only ordinal scale support tick interval
|
|
198
|
-
if (ifIgnoreOnTick(axis, i, tickInterval)) {
|
|
199
|
-
continue;
|
|
200
|
-
}
|
|
201
|
-
|
|
202
|
-
var tickCoord = ticksCoords[i];
|
|
203
|
-
|
|
204
|
-
pt1[0] = tickCoord;
|
|
205
|
-
pt1[1] = 0;
|
|
206
|
-
pt2[0] = tickCoord;
|
|
207
|
-
pt2[1] = opt.tickDirection * tickLen;
|
|
208
|
-
|
|
209
|
-
if (matrix) {
|
|
210
|
-
v2ApplyTransform(pt1, pt1, matrix);
|
|
211
|
-
v2ApplyTransform(pt2, pt2, matrix);
|
|
212
|
-
}
|
|
213
|
-
// Tick line, Not use group transform to have better line draw
|
|
214
|
-
this.group.add(new graphic.Line(graphic.subPixelOptimizeLine({
|
|
215
|
-
|
|
216
|
-
// Id for animation
|
|
217
|
-
anid: 'tick_' + ticks[i],
|
|
218
|
-
|
|
219
|
-
shape: {
|
|
220
|
-
x1: pt1[0],
|
|
221
|
-
y1: pt1[1],
|
|
222
|
-
x2: pt2[0],
|
|
223
|
-
y2: pt2[1]
|
|
224
|
-
},
|
|
225
|
-
style: zrUtil.defaults(
|
|
226
|
-
lineStyleModel.getLineStyle(),
|
|
227
|
-
{
|
|
228
|
-
stroke: axisModel.get('axisLine.lineStyle.color')
|
|
229
|
-
}
|
|
230
|
-
),
|
|
231
|
-
z2: 2,
|
|
232
|
-
silent: true
|
|
233
|
-
})));
|
|
234
|
-
}
|
|
235
|
-
},
|
|
236
|
-
|
|
237
|
-
/**
|
|
238
|
-
* @param {module:echarts/coord/cartesian/AxisModel} axisModel
|
|
239
|
-
* @param {module:echarts/coord/cartesian/GridModel} gridModel
|
|
240
|
-
* @private
|
|
241
|
-
*/
|
|
242
|
-
axisLabel: function () {
|
|
243
|
-
var opt = this.opt;
|
|
244
|
-
var axisModel = this.axisModel;
|
|
245
|
-
var axis = axisModel.axis;
|
|
246
|
-
var show = retrieve(opt.axisLabelShow, axisModel.get('axisLabel.show'));
|
|
247
|
-
|
|
248
|
-
if (!show || axis.scale.isBlank()) {
|
|
249
|
-
return;
|
|
250
|
-
}
|
|
251
|
-
|
|
252
|
-
var labelModel = axisModel.getModel('axisLabel');
|
|
253
|
-
var labelMargin = labelModel.get('margin');
|
|
254
|
-
var ticks = axis.scale.getTicks();
|
|
255
|
-
var labels = axisModel.getFormattedLabels();
|
|
256
|
-
|
|
257
|
-
// Special label rotate.
|
|
258
|
-
var labelRotation = (
|
|
259
|
-
retrieve(opt.labelRotate, labelModel.get('rotate')) || 0
|
|
260
|
-
) * PI / 180;
|
|
261
|
-
|
|
262
|
-
var labelLayout = innerTextLayout(opt.rotation, labelRotation, opt.labelDirection);
|
|
263
|
-
var categoryData = axisModel.get('data');
|
|
264
|
-
|
|
265
|
-
var textEls = [];
|
|
266
|
-
var silent = isSilent(axisModel);
|
|
267
|
-
var triggerEvent = axisModel.get('triggerEvent');
|
|
268
|
-
|
|
269
|
-
zrUtil.each(ticks, function (tickVal, index) {
|
|
270
|
-
if (ifIgnoreOnTick(axis, index, opt.labelInterval)) {
|
|
271
|
-
return;
|
|
272
|
-
}
|
|
273
|
-
|
|
274
|
-
var itemLabelModel = labelModel;
|
|
275
|
-
if (categoryData && categoryData[tickVal] && categoryData[tickVal].textStyle) {
|
|
276
|
-
itemLabelModel = new Model(
|
|
277
|
-
categoryData[tickVal].textStyle, labelModel, axisModel.ecModel
|
|
278
|
-
);
|
|
279
|
-
}
|
|
280
|
-
|
|
281
|
-
var textColor = itemLabelModel.getTextColor()
|
|
282
|
-
|| axisModel.get('axisLine.lineStyle.color');
|
|
283
|
-
|
|
284
|
-
var tickCoord = axis.dataToCoord(tickVal);
|
|
285
|
-
var pos = [
|
|
286
|
-
tickCoord,
|
|
287
|
-
opt.labelOffset + opt.labelDirection * labelMargin
|
|
288
|
-
];
|
|
289
|
-
var labelStr = axis.scale.getLabel(tickVal);
|
|
290
|
-
|
|
291
|
-
var textEl = new graphic.Text({
|
|
292
|
-
// Id for animation
|
|
293
|
-
anid: 'label_' + tickVal,
|
|
294
|
-
position: pos,
|
|
295
|
-
rotation: labelLayout.rotation,
|
|
296
|
-
silent: silent,
|
|
297
|
-
z2: 10
|
|
298
|
-
});
|
|
299
|
-
|
|
300
|
-
graphic.setTextStyle(textEl.style, itemLabelModel, {
|
|
301
|
-
text: labels[index],
|
|
302
|
-
textAlign: itemLabelModel.getShallow('align', true)
|
|
303
|
-
|| labelLayout.textAlign,
|
|
304
|
-
textVerticalAlign: itemLabelModel.getShallow('verticalAlign', true)
|
|
305
|
-
|| itemLabelModel.getShallow('baseline', true)
|
|
306
|
-
|| labelLayout.textVerticalAlign,
|
|
307
|
-
textFill: typeof textColor === 'function'
|
|
308
|
-
? textColor(
|
|
309
|
-
// (1) In category axis with data zoom, tick is not the original
|
|
310
|
-
// index of axis.data. So tick should not be exposed to user
|
|
311
|
-
// in category axis.
|
|
312
|
-
// (2) Compatible with previous version, which always returns labelStr.
|
|
313
|
-
// But in interval scale labelStr is like '223,445', which maked
|
|
314
|
-
// user repalce ','. So we modify it to return original val but remain
|
|
315
|
-
// it as 'string' to avoid error in replacing.
|
|
316
|
-
axis.type === 'category' ? labelStr : axis.type === 'value' ? tickVal + '' : tickVal,
|
|
317
|
-
index
|
|
318
|
-
)
|
|
319
|
-
: textColor
|
|
320
|
-
});
|
|
321
|
-
|
|
322
|
-
// Pack data for mouse event
|
|
323
|
-
if (triggerEvent) {
|
|
324
|
-
textEl.eventData = makeAxisEventDataBase(axisModel);
|
|
325
|
-
textEl.eventData.targetType = 'axisLabel';
|
|
326
|
-
textEl.eventData.value = labelStr;
|
|
327
|
-
}
|
|
328
|
-
|
|
329
|
-
// FIXME
|
|
330
|
-
this._dumbGroup.add(textEl);
|
|
331
|
-
textEl.updateTransform();
|
|
332
|
-
|
|
333
|
-
textEls.push(textEl);
|
|
334
|
-
this.group.add(textEl);
|
|
335
|
-
|
|
336
|
-
textEl.decomposeTransform();
|
|
178
|
+
var tickEls = buildAxisTick(this, axisModel, opt);
|
|
179
|
+
var labelEls = buildAxisLabel(this, axisModel, opt);
|
|
337
180
|
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
fixMinMaxLabelShow(axisModel, textEls);
|
|
181
|
+
fixMinMaxLabelShow(axisModel, labelEls, tickEls);
|
|
341
182
|
},
|
|
342
183
|
|
|
343
184
|
/**
|
|
@@ -366,7 +207,7 @@ define(function (require) {
|
|
|
366
207
|
? extent[1] + gapSignal * gap
|
|
367
208
|
: (extent[0] + extent[1]) / 2, // 'middle'
|
|
368
209
|
// Reuse labelOffset.
|
|
369
|
-
nameLocation
|
|
210
|
+
isNameLocationCenter(nameLocation) ? opt.labelOffset + nameDirection * gap : 0
|
|
370
211
|
];
|
|
371
212
|
|
|
372
213
|
var labelLayout;
|
|
@@ -378,7 +219,7 @@ define(function (require) {
|
|
|
378
219
|
|
|
379
220
|
var axisNameAvailableWidth;
|
|
380
221
|
|
|
381
|
-
if (nameLocation
|
|
222
|
+
if (isNameLocationCenter(nameLocation)) {
|
|
382
223
|
labelLayout = innerTextLayout(
|
|
383
224
|
opt.rotation,
|
|
384
225
|
nameRotation != null ? nameRotation : opt.rotation, // Adapt to axis.
|
|
@@ -559,32 +400,64 @@ define(function (require) {
|
|
|
559
400
|
);
|
|
560
401
|
}
|
|
561
402
|
|
|
562
|
-
function fixMinMaxLabelShow(axisModel,
|
|
403
|
+
function fixMinMaxLabelShow(axisModel, labelEls, tickEls) {
|
|
563
404
|
// If min or max are user set, we need to check
|
|
564
405
|
// If the tick on min(max) are overlap on their neighbour tick
|
|
565
406
|
// If they are overlapped, we need to hide the min(max) tick label
|
|
566
407
|
var showMinLabel = axisModel.get('axisLabel.showMinLabel');
|
|
567
408
|
var showMaxLabel = axisModel.get('axisLabel.showMaxLabel');
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
409
|
+
|
|
410
|
+
// FIXME
|
|
411
|
+
// Have not consider onBand yet, where tick els is more than label els.
|
|
412
|
+
|
|
413
|
+
labelEls = labelEls || [];
|
|
414
|
+
tickEls = tickEls || [];
|
|
415
|
+
|
|
416
|
+
var firstLabel = labelEls[0];
|
|
417
|
+
var nextLabel = labelEls[1];
|
|
418
|
+
var lastLabel = labelEls[labelEls.length - 1];
|
|
419
|
+
var prevLabel = labelEls[labelEls.length - 2];
|
|
420
|
+
|
|
421
|
+
var firstTick = tickEls[0];
|
|
422
|
+
var nextTick = tickEls[1];
|
|
423
|
+
var lastTick = tickEls[tickEls.length - 1];
|
|
424
|
+
var prevTick = tickEls[tickEls.length - 2];
|
|
572
425
|
|
|
573
426
|
if (showMinLabel === false) {
|
|
574
|
-
firstLabel
|
|
427
|
+
ignoreEl(firstLabel);
|
|
428
|
+
ignoreEl(firstTick);
|
|
575
429
|
}
|
|
576
|
-
else if (
|
|
577
|
-
|
|
430
|
+
else if (isTwoLabelOverlapped(firstLabel, nextLabel)) {
|
|
431
|
+
if (showMinLabel) {
|
|
432
|
+
ignoreEl(nextLabel);
|
|
433
|
+
ignoreEl(nextTick);
|
|
434
|
+
}
|
|
435
|
+
else {
|
|
436
|
+
ignoreEl(firstLabel);
|
|
437
|
+
ignoreEl(firstTick);
|
|
438
|
+
}
|
|
578
439
|
}
|
|
579
440
|
|
|
580
441
|
if (showMaxLabel === false) {
|
|
581
|
-
lastLabel
|
|
442
|
+
ignoreEl(lastLabel);
|
|
443
|
+
ignoreEl(lastTick);
|
|
582
444
|
}
|
|
583
|
-
else if (
|
|
584
|
-
|
|
445
|
+
else if (isTwoLabelOverlapped(prevLabel, lastLabel)) {
|
|
446
|
+
if (showMaxLabel) {
|
|
447
|
+
ignoreEl(prevLabel);
|
|
448
|
+
ignoreEl(prevTick);
|
|
449
|
+
}
|
|
450
|
+
else {
|
|
451
|
+
ignoreEl(lastLabel);
|
|
452
|
+
ignoreEl(lastTick);
|
|
453
|
+
}
|
|
585
454
|
}
|
|
586
455
|
}
|
|
587
456
|
|
|
457
|
+
function ignoreEl(el) {
|
|
458
|
+
el && (el.ignore = true);
|
|
459
|
+
}
|
|
460
|
+
|
|
588
461
|
function isTwoLabelOverlapped(current, next, labelLayout) {
|
|
589
462
|
// current and next has the same rotation.
|
|
590
463
|
var firstRect = current && current.getBoundingRect().clone();
|
|
@@ -605,11 +478,28 @@ define(function (require) {
|
|
|
605
478
|
return firstRect.intersect(nextRect);
|
|
606
479
|
}
|
|
607
480
|
|
|
481
|
+
function isNameLocationCenter(nameLocation) {
|
|
482
|
+
return nameLocation === 'middle' || nameLocation === 'center';
|
|
483
|
+
}
|
|
608
484
|
|
|
609
485
|
/**
|
|
610
486
|
* @static
|
|
611
487
|
*/
|
|
612
|
-
var ifIgnoreOnTick = AxisBuilder.ifIgnoreOnTick = function (
|
|
488
|
+
var ifIgnoreOnTick = AxisBuilder.ifIgnoreOnTick = function (
|
|
489
|
+
axis,
|
|
490
|
+
i,
|
|
491
|
+
interval,
|
|
492
|
+
ticksCnt,
|
|
493
|
+
showMinLabel,
|
|
494
|
+
showMaxLabel
|
|
495
|
+
) {
|
|
496
|
+
if (i === 0 && showMinLabel || i === ticksCnt - 1 && showMaxLabel) {
|
|
497
|
+
return false;
|
|
498
|
+
}
|
|
499
|
+
|
|
500
|
+
// FIXME
|
|
501
|
+
// Have not consider label overlap (if label is too long) yet.
|
|
502
|
+
|
|
613
503
|
var rawTick;
|
|
614
504
|
var scale = axis.scale;
|
|
615
505
|
return scale.type === 'ordinal'
|
|
@@ -634,6 +524,187 @@ define(function (require) {
|
|
|
634
524
|
return interval;
|
|
635
525
|
};
|
|
636
526
|
|
|
527
|
+
function buildAxisTick(axisBuilder, axisModel, opt) {
|
|
528
|
+
var axis = axisModel.axis;
|
|
529
|
+
|
|
530
|
+
if (!axisModel.get('axisTick.show') || axis.scale.isBlank()) {
|
|
531
|
+
return;
|
|
532
|
+
}
|
|
533
|
+
|
|
534
|
+
var tickModel = axisModel.getModel('axisTick');
|
|
535
|
+
|
|
536
|
+
var lineStyleModel = tickModel.getModel('lineStyle');
|
|
537
|
+
var tickLen = tickModel.get('length');
|
|
538
|
+
|
|
539
|
+
var tickInterval = getInterval(tickModel, opt.labelInterval);
|
|
540
|
+
var ticksCoords = axis.getTicksCoords(tickModel.get('alignWithLabel'));
|
|
541
|
+
// FIXME
|
|
542
|
+
// Corresponds to ticksCoords ?
|
|
543
|
+
var ticks = axis.scale.getTicks();
|
|
544
|
+
|
|
545
|
+
var showMinLabel = axisModel.get('axisLabel.showMinLabel');
|
|
546
|
+
var showMaxLabel = axisModel.get('axisLabel.showMaxLabel');
|
|
547
|
+
|
|
548
|
+
var pt1 = [];
|
|
549
|
+
var pt2 = [];
|
|
550
|
+
var matrix = axisBuilder._transform;
|
|
551
|
+
|
|
552
|
+
var tickEls = [];
|
|
553
|
+
|
|
554
|
+
var ticksCnt = ticksCoords.length;
|
|
555
|
+
for (var i = 0; i < ticksCnt; i++) {
|
|
556
|
+
// Only ordinal scale support tick interval
|
|
557
|
+
if (ifIgnoreOnTick(
|
|
558
|
+
axis, i, tickInterval, ticksCnt,
|
|
559
|
+
showMinLabel, showMaxLabel
|
|
560
|
+
)) {
|
|
561
|
+
continue;
|
|
562
|
+
}
|
|
563
|
+
|
|
564
|
+
var tickCoord = ticksCoords[i];
|
|
565
|
+
|
|
566
|
+
pt1[0] = tickCoord;
|
|
567
|
+
pt1[1] = 0;
|
|
568
|
+
pt2[0] = tickCoord;
|
|
569
|
+
pt2[1] = opt.tickDirection * tickLen;
|
|
570
|
+
|
|
571
|
+
if (matrix) {
|
|
572
|
+
v2ApplyTransform(pt1, pt1, matrix);
|
|
573
|
+
v2ApplyTransform(pt2, pt2, matrix);
|
|
574
|
+
}
|
|
575
|
+
// Tick line, Not use group transform to have better line draw
|
|
576
|
+
var tickEl = new graphic.Line(graphic.subPixelOptimizeLine({
|
|
577
|
+
// Id for animation
|
|
578
|
+
anid: 'tick_' + ticks[i],
|
|
579
|
+
|
|
580
|
+
shape: {
|
|
581
|
+
x1: pt1[0],
|
|
582
|
+
y1: pt1[1],
|
|
583
|
+
x2: pt2[0],
|
|
584
|
+
y2: pt2[1]
|
|
585
|
+
},
|
|
586
|
+
style: zrUtil.defaults(
|
|
587
|
+
lineStyleModel.getLineStyle(),
|
|
588
|
+
{
|
|
589
|
+
stroke: axisModel.get('axisLine.lineStyle.color')
|
|
590
|
+
}
|
|
591
|
+
),
|
|
592
|
+
z2: 2,
|
|
593
|
+
silent: true
|
|
594
|
+
}));
|
|
595
|
+
axisBuilder.group.add(tickEl);
|
|
596
|
+
tickEls.push(tickEl);
|
|
597
|
+
}
|
|
598
|
+
|
|
599
|
+
return tickEls;
|
|
600
|
+
}
|
|
601
|
+
|
|
602
|
+
function buildAxisLabel(axisBuilder, axisModel, opt) {
|
|
603
|
+
var axis = axisModel.axis;
|
|
604
|
+
var show = retrieve(opt.axisLabelShow, axisModel.get('axisLabel.show'));
|
|
605
|
+
|
|
606
|
+
if (!show || axis.scale.isBlank()) {
|
|
607
|
+
return;
|
|
608
|
+
}
|
|
609
|
+
|
|
610
|
+
var labelModel = axisModel.getModel('axisLabel');
|
|
611
|
+
var labelMargin = labelModel.get('margin');
|
|
612
|
+
var ticks = axis.scale.getTicks();
|
|
613
|
+
var labels = axisModel.getFormattedLabels();
|
|
614
|
+
|
|
615
|
+
// Special label rotate.
|
|
616
|
+
var labelRotation = (
|
|
617
|
+
retrieve(opt.labelRotate, labelModel.get('rotate')) || 0
|
|
618
|
+
) * PI / 180;
|
|
619
|
+
|
|
620
|
+
var labelLayout = innerTextLayout(opt.rotation, labelRotation, opt.labelDirection);
|
|
621
|
+
var categoryData = axisModel.get('data');
|
|
622
|
+
|
|
623
|
+
var labelEls = [];
|
|
624
|
+
var silent = isSilent(axisModel);
|
|
625
|
+
var triggerEvent = axisModel.get('triggerEvent');
|
|
626
|
+
|
|
627
|
+
var showMinLabel = axisModel.get('axisLabel.showMinLabel');
|
|
628
|
+
var showMaxLabel = axisModel.get('axisLabel.showMaxLabel');
|
|
629
|
+
|
|
630
|
+
zrUtil.each(ticks, function (tickVal, index) {
|
|
631
|
+
if (ifIgnoreOnTick(
|
|
632
|
+
axis, index, opt.labelInterval, ticks.length,
|
|
633
|
+
showMinLabel, showMaxLabel
|
|
634
|
+
)) {
|
|
635
|
+
return;
|
|
636
|
+
}
|
|
637
|
+
|
|
638
|
+
var itemLabelModel = labelModel;
|
|
639
|
+
if (categoryData && categoryData[tickVal] && categoryData[tickVal].textStyle) {
|
|
640
|
+
itemLabelModel = new Model(
|
|
641
|
+
categoryData[tickVal].textStyle, labelModel, axisModel.ecModel
|
|
642
|
+
);
|
|
643
|
+
}
|
|
644
|
+
|
|
645
|
+
var textColor = itemLabelModel.getTextColor()
|
|
646
|
+
|| axisModel.get('axisLine.lineStyle.color');
|
|
647
|
+
|
|
648
|
+
var tickCoord = axis.dataToCoord(tickVal);
|
|
649
|
+
var pos = [
|
|
650
|
+
tickCoord,
|
|
651
|
+
opt.labelOffset + opt.labelDirection * labelMargin
|
|
652
|
+
];
|
|
653
|
+
var labelStr = axis.scale.getLabel(tickVal);
|
|
654
|
+
|
|
655
|
+
var textEl = new graphic.Text({
|
|
656
|
+
// Id for animation
|
|
657
|
+
anid: 'label_' + tickVal,
|
|
658
|
+
position: pos,
|
|
659
|
+
rotation: labelLayout.rotation,
|
|
660
|
+
silent: silent,
|
|
661
|
+
z2: 10
|
|
662
|
+
});
|
|
663
|
+
|
|
664
|
+
graphic.setTextStyle(textEl.style, itemLabelModel, {
|
|
665
|
+
text: labels[index],
|
|
666
|
+
textAlign: itemLabelModel.getShallow('align', true)
|
|
667
|
+
|| labelLayout.textAlign,
|
|
668
|
+
textVerticalAlign: itemLabelModel.getShallow('verticalAlign', true)
|
|
669
|
+
|| itemLabelModel.getShallow('baseline', true)
|
|
670
|
+
|| labelLayout.textVerticalAlign,
|
|
671
|
+
textFill: typeof textColor === 'function'
|
|
672
|
+
? textColor(
|
|
673
|
+
// (1) In category axis with data zoom, tick is not the original
|
|
674
|
+
// index of axis.data. So tick should not be exposed to user
|
|
675
|
+
// in category axis.
|
|
676
|
+
// (2) Compatible with previous version, which always returns labelStr.
|
|
677
|
+
// But in interval scale labelStr is like '223,445', which maked
|
|
678
|
+
// user repalce ','. So we modify it to return original val but remain
|
|
679
|
+
// it as 'string' to avoid error in replacing.
|
|
680
|
+
axis.type === 'category' ? labelStr : axis.type === 'value' ? tickVal + '' : tickVal,
|
|
681
|
+
index
|
|
682
|
+
)
|
|
683
|
+
: textColor
|
|
684
|
+
});
|
|
685
|
+
|
|
686
|
+
// Pack data for mouse event
|
|
687
|
+
if (triggerEvent) {
|
|
688
|
+
textEl.eventData = makeAxisEventDataBase(axisModel);
|
|
689
|
+
textEl.eventData.targetType = 'axisLabel';
|
|
690
|
+
textEl.eventData.value = labelStr;
|
|
691
|
+
}
|
|
692
|
+
|
|
693
|
+
// FIXME
|
|
694
|
+
axisBuilder._dumbGroup.add(textEl);
|
|
695
|
+
textEl.updateTransform();
|
|
696
|
+
|
|
697
|
+
labelEls.push(textEl);
|
|
698
|
+
axisBuilder.group.add(textEl);
|
|
699
|
+
|
|
700
|
+
textEl.decomposeTransform();
|
|
701
|
+
|
|
702
|
+
});
|
|
703
|
+
|
|
704
|
+
return labelEls;
|
|
705
|
+
}
|
|
706
|
+
|
|
707
|
+
|
|
637
708
|
return AxisBuilder;
|
|
638
709
|
|
|
639
710
|
});
|
|
@@ -9,7 +9,7 @@ define(function (require) {
|
|
|
9
9
|
var getInterval = AxisBuilder.getInterval;
|
|
10
10
|
|
|
11
11
|
var axisBuilderAttrs = [
|
|
12
|
-
'axisLine', '
|
|
12
|
+
'axisLine', 'axisTickLabel', 'axisName'
|
|
13
13
|
];
|
|
14
14
|
var selfBuilderAttrs = [
|
|
15
15
|
'splitArea', 'splitLine'
|
|
@@ -97,13 +97,19 @@ define(function (require) {
|
|
|
97
97
|
);
|
|
98
98
|
var ticks = axis.scale.getTicks();
|
|
99
99
|
|
|
100
|
+
var showMinLabel = axisModel.get('axisLabel.showMinLabel');
|
|
101
|
+
var showMaxLabel = axisModel.get('axisLabel.showMaxLabel');
|
|
102
|
+
|
|
100
103
|
var p1 = [];
|
|
101
104
|
var p2 = [];
|
|
102
105
|
// Simple optimization
|
|
103
106
|
// Batching the lines if color are the same
|
|
104
107
|
var lineStyle = lineStyleModel.getLineStyle();
|
|
105
108
|
for (var i = 0; i < ticksCoords.length; i++) {
|
|
106
|
-
if (ifIgnoreOnTick(
|
|
109
|
+
if (ifIgnoreOnTick(
|
|
110
|
+
axis, i, lineInterval, ticksCoords.length,
|
|
111
|
+
showMinLabel, showMaxLabel
|
|
112
|
+
)) {
|
|
107
113
|
continue;
|
|
108
114
|
}
|
|
109
115
|
|
|
@@ -174,8 +180,14 @@ define(function (require) {
|
|
|
174
180
|
var areaStyle = areaStyleModel.getAreaStyle();
|
|
175
181
|
areaColors = zrUtil.isArray(areaColors) ? areaColors : [areaColors];
|
|
176
182
|
|
|
183
|
+
var showMinLabel = axisModel.get('axisLabel.showMinLabel');
|
|
184
|
+
var showMaxLabel = axisModel.get('axisLabel.showMaxLabel');
|
|
185
|
+
|
|
177
186
|
for (var i = 1; i < ticksCoords.length; i++) {
|
|
178
|
-
if (ifIgnoreOnTick(
|
|
187
|
+
if (ifIgnoreOnTick(
|
|
188
|
+
axis, i, areaInterval, ticksCoords.length,
|
|
189
|
+
showMinLabel, showMaxLabel
|
|
190
|
+
)) {
|
|
179
191
|
continue;
|
|
180
192
|
}
|
|
181
193
|
|
|
@@ -6,7 +6,7 @@ define(function (require) {
|
|
|
6
6
|
var brushHelper = require('../helper/brushHelper');
|
|
7
7
|
var graphic = require('../../util/graphic');
|
|
8
8
|
|
|
9
|
-
var elementList = ['axisLine', '
|
|
9
|
+
var elementList = ['axisLine', 'axisTickLabel', 'axisName'];
|
|
10
10
|
|
|
11
11
|
var AxisView = require('../../echarts').extendComponentView({
|
|
12
12
|
|
|
@@ -8,7 +8,7 @@ define(function (require) {
|
|
|
8
8
|
var ifIgnoreOnTick = AxisBuilder.ifIgnoreOnTick;
|
|
9
9
|
|
|
10
10
|
var axisBuilderAttrs = [
|
|
11
|
-
'axisLine', '
|
|
11
|
+
'axisLine', 'axisTickLabel', 'axisName'
|
|
12
12
|
];
|
|
13
13
|
|
|
14
14
|
var selfBuilderAttr = 'splitLine';
|
|
@@ -66,8 +66,14 @@ define(function (require) {
|
|
|
66
66
|
var p1 = [];
|
|
67
67
|
var p2 = [];
|
|
68
68
|
|
|
69
|
+
var showMinLabel = axisModel.get('axisLabel.showMinLabel');
|
|
70
|
+
var showMaxLabel = axisModel.get('axisLabel.showMaxLabel');
|
|
71
|
+
|
|
69
72
|
for (var i = 0; i < ticksCoords.length; ++i) {
|
|
70
|
-
if (ifIgnoreOnTick(
|
|
73
|
+
if (ifIgnoreOnTick(
|
|
74
|
+
axis, i, lineInterval, ticksCoords.length,
|
|
75
|
+
showMinLabel, showMaxLabel
|
|
76
|
+
)) {
|
|
71
77
|
continue;
|
|
72
78
|
}
|
|
73
79
|
var tickCoord = axis.toGlobalCoord(ticksCoords[i]);
|
|
@@ -113,7 +113,9 @@ define(function (require) {
|
|
|
113
113
|
|
|
114
114
|
|
|
115
115
|
function mousedown(e) {
|
|
116
|
-
if (
|
|
116
|
+
if (eventTool.notLeftMouse(e)
|
|
117
|
+
|| (e.target && e.target.draggable)
|
|
118
|
+
) {
|
|
117
119
|
return;
|
|
118
120
|
}
|
|
119
121
|
|
|
@@ -130,15 +132,12 @@ define(function (require) {
|
|
|
130
132
|
}
|
|
131
133
|
|
|
132
134
|
function mousemove(e) {
|
|
133
|
-
if (
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
if (interactionMutex.isTaken(this._zr, 'globalPan')) {
|
|
135
|
+
if (eventTool.notLeftMouse(e)
|
|
136
|
+
|| !checkKeyBinding(this, 'moveOnMouseMove', e)
|
|
137
|
+
|| !this._dragging
|
|
138
|
+
|| e.gestureEvent === 'pinch'
|
|
139
|
+
|| interactionMutex.isTaken(this._zr, 'globalPan')
|
|
140
|
+
) {
|
|
142
141
|
return;
|
|
143
142
|
}
|
|
144
143
|
|
|
@@ -160,7 +159,9 @@ define(function (require) {
|
|
|
160
159
|
}
|
|
161
160
|
|
|
162
161
|
function mouseup(e) {
|
|
163
|
-
|
|
162
|
+
if (!eventTool.notLeftMouse(e)) {
|
|
163
|
+
this._dragging = false;
|
|
164
|
+
}
|
|
164
165
|
}
|
|
165
166
|
|
|
166
167
|
function mousewheel(e) {
|
|
@@ -221,7 +221,7 @@ define(function (require) {
|
|
|
221
221
|
)
|
|
222
222
|
);
|
|
223
223
|
|
|
224
|
-
polygon.hoverStyle = itemModel.getModel('itemStyle.
|
|
224
|
+
polygon.hoverStyle = itemModel.getModel('itemStyle.emphasis').getItemStyle();
|
|
225
225
|
|
|
226
226
|
graphic.setLabelStyle(
|
|
227
227
|
polygon.style, polygon.hoverStyle, labelModel, labelHoverModel,
|
|
@@ -3,6 +3,7 @@ define(function(require) {
|
|
|
3
3
|
|
|
4
4
|
var featureManager = require('../featureManager');
|
|
5
5
|
var zrUtil = require('zrender/core/util');
|
|
6
|
+
var lang = require('../../../lang').toolbox.brush;
|
|
6
7
|
|
|
7
8
|
function Brush(model, ecModel, api) {
|
|
8
9
|
this.model = model;
|
|
@@ -33,14 +34,8 @@ define(function(require) {
|
|
|
33
34
|
keep: 'M4,10.5V1h10.3 M20.7,1h6.1 M33,1h6.1 M55.4,10.5V1H45.2 M4,17.3v6.6 M55.6,17.3v6.6 M4,30.5V40h10.3 M20.7,40 h6.1 M33,40h6.1 M55.4,30.5V40H45.2 M21,18.9h62.9v48.6H21V18.9z', // jshint ignore:line
|
|
34
35
|
clear: 'M22,14.7l30.9,31 M52.9,14.7L22,45.7 M4.7,16.8V4.2h13.1 M26,4.2h7.8 M41.6,4.2h7.8 M70.3,16.8V4.2H57.2 M4.7,25.9v8.6 M70.3,25.9v8.6 M4.7,43.2v12.6h13.1 M26,55.8h7.8 M41.6,55.8h7.8 M70.3,43.2v12.6H57.2' // jshint ignore:line
|
|
35
36
|
},
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
polygon: '圈选',
|
|
39
|
-
lineX: '横向选择',
|
|
40
|
-
lineY: '纵向选择',
|
|
41
|
-
keep: '保持选择',
|
|
42
|
-
clear: '清除选择'
|
|
43
|
-
}
|
|
37
|
+
// `rect`, `polygon`, `lineX`, `lineY`, `keep`, `clear`
|
|
38
|
+
title: zrUtil.clone(lang.title)
|
|
44
39
|
};
|
|
45
40
|
|
|
46
41
|
var proto = Brush.prototype;
|