master
ts: bug squash
test: Add visual test marks for v6.1.0.
fix: test/webkit-dep.html can not be opened. close #21507
fix regression: Fix appendData broken by previous commits.
fix: aria throws error in SSR (#19191)
chore(deps): bump ip-address and socks in /test/runTest
chore: Fix `addHeader` tool and add missing license headers.
fix(data): detect sparse object keys. close #11322
add licenses.
fix: Fix min/max label show in category axis. Previously, axisLabel.showMinLabel/showMaxLabel did not control label and ticks on axis edges, but controls the filtered labels by axisLabel.interval settings. This impl did not align with the intent of that option.
resolve the remove node problem in the tree view
test: use simpleRequire to replace esl
An example of origin Updated
test(visual): optimize cases. ignore stream case in SVG
fix(logScale): (1) Thoroughly resolve a long-standing issue of non-positive data on LogScale - exclude non-positive series data items when calculate dataExtent on LogScale. (2) Include `Infinite` into `connectNulls` handling on line series; the `Infinite` value may be generated by `log(0)` and previously the corresponding effect in unpredictable on line series (sometimes display as connected but sometimes not).
test(theme): fix test cases of v6
fix(aria): fix aria label with dataset #15734
feat(alignTicks): (1) Fix LogScale precision. (2) Tweak align ticks layout. (3) Remove unreasonable clamp in Interval calcNiceExtent, and clarify the definition of `_niceExtent`.
feat(label): support align for min/max labels
fix(alignTicks): Change alignTick strategy: (1) Previously some series data may be out of the calculated extent and can not be displayed. (2) Previously the precision is incorrect for small float number (fixed at 10 rather than based on the magnitude of the value). (3) Make the tick precision more acceptable when min/max of axis is fixed, and remove console warning, because whey can be specified when dataZoom dragging. (4) Clarify the related code for LogScale.
refactor(scale): For readability and maintainability (1) Migrate `calcNiceTicks` and `calcNiceExtent` from Scale class override member functions to plain functions, similar to `axisAlignTicks`. Previously it's hard to modify and error-prone. (2) Remove unnecessary override on Scale class hierarchy and limit override usage, which is difficult to understand and error-prone. (3) Simplify the inheritance - shift `LogScale` and `TimeScale` inheritance from `IntervalScale` to `Scale`. (4) Clarify the impl of `IntervalScale` - uniform the parameters setting entry for both "nice ticks" and "align ticks".
fix(axis): fix axis symbol is not reverted when axis is reverse.
feat(grid layout): (1) deprecate grid.containLabel. (2) support contain axisName (3) refactor: use the same logic to measure axisLabel/axisName contain and view build. (3) support auto avoid axisLabel and axisName overflow even containLabel is not specified, while also considered axis line alignment between different grids. Introduce `grid.outerBounds` and `grid.outerBoundsContain`.
(test) Fix axis break test cases.
test(visual): fix test cases, add marks
test: add customValues with formatter test case to axis-customTicks.html
refactor&feature: (1) Uniform series data union logic; previous they are implemented in several inconsistent ways and error-prone. And also strict the extent calculation with uniformed utilities. (2) Refactor Scale - uniform the implementation of the numeric transformations (such as axis breaks, logarithm, ordinal related handling) with a decorator pattern and decouple them from Scale class hierarchy. This brings consistent handling for details and enables further extension. (3) Refactor Scale - decouple "axis nice" logic from Scale and make the "axis nice" and "axis align" implemented in the same code style. This removes override (hard to read and maintain), and uniforms the parameters of IntervalScale (previous its parameters can be generated by itself or outside, which is confusing), and reduce scale-type-specified handling (e.g., if (isLogScale) ...) in calculation. (4) Enable "value" axis and "log" axis to render "bar" and "pictorialBar" series without overflowing the axis. Previously only "time" axis enables that on only "bar" series. Introduce "SCALE_EXTENT_KIND_MAPPING" to cover this generalized behavior and use strict "clip" for bar series without extra margin (a previous compromise). And clarify `barGrid` code accordingly, which removes duplicated time-consuming calculation in "bandWidth" calculation. Close #19972. Close #17858. Close #12720. Close #13321. Close #20718. Close #20421. Close #20503.
fix(axis):null value item on category axis should be able to show tooltip
fix(theme): update v5 theme
fix: (1) Fix time axis reach safeLimit when value scale is milisecond. (2) Fix regression - containShape should be word properly in single value case. And simply the code.
fix: when toolbox declared but dataZoom not declared, should not dataZoom filter performed.
Fix and add test cases (introduced by preceding commits)
Fix category axis min/max ticks/labels show hide when interval > 0. Remove unnecessary code. Fix relevant TS.
fix regression: (1) User specified `interval` show be backward compatible. (2) Default IntervalScale extent on single data item case show not be broken. (3) LogScale filter non-positive value.
fix: (1) Fix: fix bar overflow issue on category axis with boundaryGap: false - use the newly added containShape handler. (2) Fix regression: Drop the previous containShape strategy on bar series, use a simple strategy for better compatibility. (3) Fix regression: Fix new added bar clip feature on single data item case. (4) Fix regression: Clarify code.
chore: add license headers and a script of pre-commit
feat(grid layout): add outerBoundsClamp to limit shrink.
feature(axis): add feature to remove SplitLine on specified tick
test: added a test case
fix(bar): prevent bar chart overflowing the graph when using dataZoom filterMode none with time axis. close #19972
fix: Fix and clarify the definition of axis.`startValue`.
fix(bar): merge logic of layout large and normal bars
fix&feature: (1) feature: Add option boxplot.clip (2) feature: Enable boxplot and candlestick containShape for "value"/"time"/"log" axis, enable proper shadow axisPointer. (candlestick-case.html, boxplot-multi.html) (3) fix: Fix candlestick ends shapes can not be displayed on "value"/"time" axis. (candlestick-case.html) (4) fix: candlestick shape width is inappropriate when datazoom filterMode is 'none'/'empty'. (candlestick-case.html) (5) fix: In polar coordinate system, support "value"/"time" axis as angle/radius axis, enable propere bandWidth for bar series, enable proper shadow axisPointer. (bar-polar-multi-series-radial.html, bar-polar-multi-series.html)
fix(polar): polar bar animation should start from r0 rather than 0
feat: support bar background borderRadius
test(polar): update test case
fix(bar): optimize label distance when using round cap
fix: (1) Clarify and uniform terminology and add comments to explain EC_CYCLE. (2) Fix dataZoom in `appendData`, introduced by recent commits.
feat(axis): set subPixelOptimize to be false during animation
fix: Simplify and clarify the code about axis ticks regarding ordinal scale sorting. Fix axis label and sorting bug introduced by preceding commits.
fix: Temporarily fix incorrect stack base dimension selection when both axes are value axes.
test: Add test util for canvas layer debug.
fix: Fix issues in regression test.
test(visual): start vst without simpleRequire. optimize cases
fix(bar): wrong data label position when bar width/height is 0
fix: Fix candlestick clip path on category axis.
fix(axis): axis label width when overflow is set
test: fix test cases
fix(boxplot) correctly handle series.encode with category axis close #20319
test: optimize loader
chore: add .js extension in the import statement
test(map): replace test cases with new map
test: use require to replace original jquery loading
fix(heatmap): fix labels that are not in calendar range are unexpectedly displayed (resolves #20690)
(test): Fix some buggy test cases.
feat(calendar): add `silent` option for `dayLabel`/`monthLabel`/yearLabel`.
fix(calendar-i18n): remove `dayOfWeekShort` configuration from `en` locale.
fix regression: bandWidth and containShape should properly handle single item and empty.
feature: dataZoom 'inside' supports to set cursorGrab and cursorGrabbing.
feat(candlestick): provide borderColorDoji option for custom doji color
fix: (1) priority of defaults by layout and axis types. (2) init animation.
fix(appendData): Fix that the dataZoom inside is disabled when appendData is executed. And clarify the usage of appendData in comments.
test regression: fix recent broken.
test: revert incorrect modification introduced in c448109 , which disable this svn checker.
fix(chord): padAngle takes rest space of minAngle
fix(custom): grid area clipping in custom series #19993 (#20043)
fix(clip): add extra clip to prevent unexpected clip on certain scenario. close #19051
fix regression: onZero should be backward compatibility. And clarify comments.
test: add two new test cases for scatter clip on Cartesian 2D coordinate system.
test: add coarse-pointer in test env
fix(colorBy): revert chagnes in sunburst
(feat): Support `refineEvent` in `registerAction`, and refactor 'selectchange' event to it. Different from the previous event generation mechanism, `refineEvent` is intented to create a user-friend event that differs from the original payload, while enabling feature `connect`, and being called at the last step of the "update" procedure to ensure the complete update of all models. If mutiple actions need to share one event name, `refineEvent` must be used. e.g., actions 'doxxx' 'undoxxx' 'togglexxx' share one event name 'xxxchanged'.
fix: add missing test cases.
test(graphic): add vrt recordings.
fix(custom): remove incremental el when switched back to normal.
Merge pull request #21006 from apache/master
feat(ut): remove the old transition code in custom series
fix(custom): rename to itemPayload
fix: add license and fix addHeader script.
feat(transition): support transition to be configured all.
test(custom): update test case for custom update
fix(custom): fix potential NPE when applying leave transition.
chore: fix test case.
test: add test.
fix: fitler -> filter typo
fix(dataZoom): fix the dataZoom was unexpectedly displayed at the top when data contains null values.
fix(dataZoom): use handleLabel.show
test: add visual test case
fix(dataZoom): fix dataZoom for single data relates #16978
fix: fix and add test cases.
fix(dataset): object source contains `length` breaks render
fix(test): fix map test case
test: update dataset-layout.html (#19373)
**There are these issues existing before this commit:** (1). If no dimensions specified on dataset, series can not really share one storage instance. (Because the each series will create its own dimension name (like ['x', 'y', 'value'], ['x', 'value', 'y'], and the storage hash is based on those names. So the hash can not match). (2). Each time `setOption` update series (but not change `dataset`), new data stack dimensions (and corresponding chunks) will be keep added to the shared data storage, and then the chunks will be more and more. (3). When "unused dimension omit" happen, the index of SeriesData['dimensions'] and SeriesData['getDimension'] is not the dimensionIndex that users known. But there are someplace still use dimensionIndex to visit them. (especially in visualMap and other similar cases that user can input dimension index via option). (4). If user only specify type but no name in dimensions, their will be some bug when "unused dimension omit" happen. (Because unused dimensions will not auto-generate dimension name by `createDimensions` and so that it has no dimension name in storage, and can not be queried by dimension name). (5). If different series option specify its own `dimensions` but share one `dataset`, the `source` get by `sourceManager` is different `source` instances in each series. Those `source` instances contain different `dimensionDefine` but reference the same data. And then a data storage created by based on s
fix(source): fix multi typed array detect error
fix(core): mark echarts instance object as raw in Vue (resolves #21267 and more similar issues)
fix(map): update test cases
feat(state): add emphasis.disabled
feat(pie):emphasis color inherit support
fix(emphasis): fix focus self not work when item emphasis by other component
move map data to test folder. not included in the npm package.
test(visual): fix cases that using async loading
test(gauge): add reproduce of #17663
upload example
test(visual): optimize test cases
fix(gauge): apply correct color to progress when set to 'auto'
fix: map/geo label move when hover. fix #14796
feat: (1) Support `preserveAspect` `preserveAspectAlign` `preserveAspectVerticalAlign` for series.map/geo/series.graph in box layout (lay out by left/right/top/bottom/width/height). (2) Support `clip` on geo/series.map (3) Support `roamTigger: 'global' | 'selfRect'` to switch roam area to global on only self bounding rect. (4) Support cursor style change when hovering the roaming enabled area to hint users. (5) Fix that center and zoom option does not work in series.sankey, and no relevant test case. (the roam is introduced in impl in #20321, due v6). (6) Fix the percent base of `center` (such as `center: ['40%', '50%']`) for all View coord sys based components/series (geo/series.map/series.graph/series.tree/series.sankey). #16904 introcuded percentage string here, such as '33%'. But it was based on canvas width/height, which is not reasonable - the unit may incorrect, and it is unpredictable if the `View['_rect']` is not calculated based on the current canvas rect. Therefore the percentage value is changed to based on `View['_rect'].width/height` since v6. Under this definition, users can use '0%' to map the top-left of `View['_rect']` to the center of `View['_viewRect']`. (7) Enhance the behavior for roaming area overlapping - the upper one has higher precedence. (8) Fix some `scaleLimit` missing. (9) Some refactor and clarification of `RoamController` and `roamHelper`.
test(visual): fix puppeteer@9 screenshot resize bug.
fix: (1) Fix geo roam (pan and zoom) causes visual artifacts -- geo coord sys and its content (e.g., scatter) should visually align during roaming animation and manual roam. (2) Refactor to uniform roaming impl (via RoamController and ViewCoordSys) and clarify `updateTransform` and related code. (3) Enable scatter and effectScatter clip in geo. (4) Fix aria: palette is modified to ec instance local rather than global, which is more reasonable. (5) Fix map series roaming bug: roam and then click legend hide the first series and then roam and then click legend to restore the first series, the map should not jump.
fix(map): fix linestring decode. add test
fix(series): add non-null check for `seriesData.getLinkedData`.
style(chord): remove unused imports
test(graph): add graph draggable test case
Support using dataType param to specify edge highlighting (#16243)
feat(thumbnail): (1) Refactor thumbnail to a component for further extension, and add test cases. (2) Fix RoamController cursor style.
feat(View): `View` center supports `string` (#16904)
fix(graph): user cursor has higher priority (#16867)
feat(animation): restore props after keyframe animation is stopped
fix(graphic): 1) fix some options may be unexpectedly reset when calling setOption. 2) fix group children can't be updated when calling setOption with no `type` option.
[Feature] add borderRadius option to heatmap (#16493)
fix(heatmap): add 0.5px to avoid the gaps in Cartesian 2D coordinate system when dpr is not an integer.
fix(progressive): (1) Fix that candlestick large data progressive rendering was broken by Doji feature. (2) Fix bar large and progressive might throw NPE. (3) Follow the fixing of progressive rendering in zrender#1151 (3) Fix parallels did not clear previous rendered content when switching between progressive and normal mode. (4) Fix that chart.on('finished') event might not be called in some edge case (when multiple iterations are executed in one frame at the end).
fix(heatmap): fix heatmap label may overlap when the dataZoom is enabled
Add license header comment on each source file
fix regression: fix test cases.
fix: focus=self hightlight issue
refactor: move hightlight multiple series testcase to hoverFocus2.html
Supplement tests and fix boxplot (broken by preceding commits)
fix(label): ellipsis was not working
feat(i18n): add Greek locale. Closes #21118
fix(ut): fix some null access issue
feat(legend): legend support triggerEvent (#18144)
add test case
misc: fix spelling
fix(line): fix animation is not stopped when direct update points.
test: optimize test cases for visual regression test
chore: Add missing headers.
fix(line): set default z/zlevel for temporary symbol to avoid warnings.
test(endLabel): add test case
feat(sampler): add min-max sampler function
fix(line): step areaStyle bug #20021
fix(line): fix visual gradient when coords are between two stops.
test(lines): add test case for clearing lines.
fix(lines): fix NPE issue when lines series has no coordinate system, resolves #14991.
Merge pull request #21320 from mynk2611/fix-20216
fix(lines): symbolSize should be updated #18350
fix(geo): add back two missing arguments to `projectedToPoint` called in Geo `dataToPoint` function.
[test] Add test case for https://github.com/apache/echarts/issues/19093
fix(map): fix projection return null point
refactor(geo): apply `echartsStyle` in Model instead of View.
test: change cdn to unpkg
fix(map): use centroid as label position
fix(markArea): fix markArea position when axis is with alignWithLabel
fix(marker): overwrite value only if type is not defined
fix(marker): fix marker label formatter can't get series information.
test: add test case for markers
test(marker): marker support z option
fix: code review
test(matrix): add matrix mbti
test(matrix): (1) Migrate (split) test case from `matrix2.html` to `matrix4.html`, as the previous is too long to visual test regression. (2) Fix test case for coordClamp.
fix(matrix): fix test case and typo
test(visual): naming tweak
feat: change to default ESM package. For developer testing and node usage in customization module scenario.
test(parallel): add parallel series max min test case
fix regression: Fix category axis backward compatibility and axis stat travel.
fix(pictorialBar): ignore clipping label
test: tweak test case
fix(visual): fix legend modify alpha on transparent color
test(pie-coord-sys): migrate test cases: "pie on amap" and "pie on bmap" to separate file, to avoid affect other case if the external links are unavailable or disabled.
fix(pie-on-cartesian): Previously when pie is located on Cartesian, axes extent can not union pie center automatically. Commit 18a23a8 has supported it. This commit updates test cases.
feat(pie): the sector supports arbitrary corner radius.
fix(pie): fix `endAngle` is not applied on the empty circle
fix(pie): extreme cases
fix(pie): simplify code
style(pie):fix unnecessary formatting in pie-label-rotate.html
chore: merge v6
Merge pull request #21425 from fanwww/fix-pie-labelLine-smooth
feat: make emptyCircle's visibility and style configurable
feat(pie): add padAngle for pie
fix(pie): fix percent isn't updated when the legend is changed
test(pie): add a test case to cover #18412
test(pie): fix test case pie3.html
cleanup
test(bar): add test case for #20567
test(line): add VRT test case
test(radar): add radar chart direction test case
fix(radar): improve logic and add test cases of #21081
test(visualMap): Remove the deprecated option.
test(radar): update test for #15915
fix(radar): lineStyle.join default round #13201
fix(rich-inherit-plain): fix and add test case.
fix(label): fix label rich style does not inherit the plain label style & add new option `richInheritPlainLabel` to control this behavior.
test(labelLine): add test for #19180
test(visual): proper error handling in action replay
feat(sankey): Add sankey chart itemStyle.borderRadius support.
feat(sankey): `edgeLabel` only supports `inside`
fix(sankey): fix other state color is 'target/source/gradient'
fix(sankey): fix browser crash when `emphasis.focus` is `'trajectory'` with large data
fix(sankey): prevent `edgeLabel` formatter from inheriting `label.formatter`.
fix(sankey): implemented suggested change by @Ovilia to follow sunburst.sort method. Only null and `desc` implemented as suggested
test: not throw error in sankey-ringed
test(sankey): add test case for sankey chart
feat(sankey): added dedicated test file
fix regression: Fix NPE and simplify code.
test(scatter)L fix test case
fix&ts(singleAxis): (1) Fix singleAxis.axisLabel.rotate does not work. (2) Fix label related TS type.
fix regression: (1) Revert the recent change to zlevelKey for backward compatibility. (2) Add guard to progressive block.
feat(scatter): `scale` support number
seriesData: supplementarily fix omit unused and clarify the code.
test: tweak test case title and add VRT action.
fix(splitLine): fix chart throws errors when `radiusAxis.splitLine` is enabled.
feat(ssr): add useViewBox opts in renderToSVGString
[fix] tweak ssr ts type, impl, exports and eslint
test(sunburst): sunburst emphasis focus enable relative #20397
fix(sunburst): label rotation flipping
feat(sunburst): align root node label to center
fix(sunburst): normalize label rotation when decompress from matrix
fix(ssr): remove redundant SVG attributes with `undefined` value.
test(symbol): add test case for `emphasis.scale`
test: add expected diffs
feat(theme): dynamically register and set chart theme
fix(time): add `axisLabel.hideOverlap`
fix(timeline): fix chart can't work when axis line is not shown.
refact(data): fix marker
fix(toolbox): fix toolbox title may be outside of the chart.
<fix>(tooltip): fix alwaysShowContent doesn't work after leaving the tooltip . close #18111
feat(tooltip): add `appendTo` option to allow customizing tooltip container (#18436)
feat(axisPointer): add option to disable emphasis. close #18495
fix: make component tooltip.formatter do not inherit the global tooltip.formatter, but has component specific default tooltip.formatter.
test(tooltip): add test case for `displayTransition` option
fix(tooltip): fix tooltip arrow may cover the content when border is wide.
fix(tooltip): only throttle `updatePosition` function when transition is enabled, resolves #16101.
chore: only output warning once when `setOption` is called, no matter how many tooltips are provided.
fix(tooltip): Changing tooltip config doesn't refresh the displayed tooltip
fix(tooltip): set content tooltip.enterable along with render tooltip.enterable. close #16440
test: Tooltip textStyle lineHeight does not work in default
tweak test case
fix(lines): fix potential tooltip XSS vulnerability in lines series
test(tooltip): update test case for tooltip xss
fix: root node related edge not removed when update data
feat(tree): `tree` focus supports `relative`
fix(tree): radial tree with single root doesn't work
fix(treemap): error when running setOption twice with diff data
feature(treemap): add custom cursor properties for treemap (#20113)
test(treemap): update test case for #18304
fix(treemap): remove old nodes on disabled animation
feat(treemap.breadcrumb): add `emphasis` state (#17242)
feat(animation): support multi-level drill-down for universal transition #17611
test: fix some type issues. add test case
fix: incorrect dataGroupId for old data items in universalTransition (#17559)
test: add violin demo
fixRegression: Fix #21586. (1). Remove some verbose and unnecessary code. (2). Remove the breaking change to `visualMap[type='continuous'].formatter: function () {}` - not necessary, and that breaking change can cause the existing lables display incorrectly when labels touch. (3). Switch to a more comprehensive implementation - adjust the positions of the two labels to avoid overlap. The previous approach (merging two labels) may occupy extra horizontal space and may unexpectedly cause overlap with other content. (4). Add visual test for `visualMap[type='continuous']`
fix(visualMap): handle label collides with horizontal size visualMap
fix(visualMap): fix continuous visualMap mouseover event not register except first countinous visualMap (#19097)
feat(visualMap): Support option `unboundedRange` to disable unbounded range behavior in continuous visual map component.
fix(visualMap): fix some text style can't work on visualMap
fix(visualMap): tweak #20551 & add VRT test