This is an automated email from the ASF dual-hosted git repository.
yao pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/spark.git
The following commit(s) were added to refs/heads/master by this push:
new 40db51f26b00 [SPARK-55752][UI] Upgrade D3.js to 7.9.0 and vis-timeline
to 7.7.3
40db51f26b00 is described below
commit 40db51f26b004b44e2b4fe2a3843f89651d3070d
Author: Kent Yao <[email protected]>
AuthorDate: Sat Feb 28 22:58:20 2026 +0800
[SPARK-55752][UI] Upgrade D3.js to 7.9.0 and vis-timeline to 7.7.3
### What changes were proposed in this pull request?
Update the Spark Web UI's JavaScript visualization libraries:
- **D3.js**: 7.8.5 → 7.9.0
- **vis-timeline**: 7.7.2 → 7.7.3
### Why are the changes needed?
These are minor version bumps with no breaking API changes, bringing bug
fixes and performance improvements. The current versions are slightly outdated.
### Does this PR introduce _any_ user-facing change?
No. These are internal dependency updates with no visible behavior change.
### How was this patch tested?
- All 12 Jest UI tests pass
- Verified via live Spark Web UI (spark-shell)
### Was this patch authored or co-authored using generative AI tooling?
Yes, GitHub Copilot was used.
Closes #54551 from yaooqinn/ui-upgrade-d3-vis.
Authored-by: Kent Yao <[email protected]>
Signed-off-by: Kent Yao <[email protected]>
---
.../resources/org/apache/spark/ui/static/d3.min.js | 4 ++--
.../spark/ui/static/vis-timeline-graph2d.min.css | 2 +-
.../spark/ui/static/vis-timeline-graph2d.min.js | 24 ++++++++++++----------
3 files changed, 16 insertions(+), 14 deletions(-)
diff --git a/core/src/main/resources/org/apache/spark/ui/static/d3.min.js
b/core/src/main/resources/org/apache/spark/ui/static/d3.min.js
index 8d56002d90f3..33bb880268a5 100644
--- a/core/src/main/resources/org/apache/spark/ui/static/d3.min.js
+++ b/core/src/main/resources/org/apache/spark/ui/static/d3.min.js
@@ -1,2 +1,2 @@
-// https://d3js.org v7.8.5 Copyright 2010-2023 Mike Bostock
-!function(t,n){"object"==typeof exports&&"undefined"!=typeof
module?n(exports):"function"==typeof
define&&define.amd?define(["exports"],n):n((t="undefined"!=typeof
globalThis?globalThis:t||self).d3=t.d3||{})}(this,(function(t){"use
strict";function n(t,n){return
null==t||null==n?NaN:t<n?-1:t>n?1:t>=n?0:NaN}function e(t,n){return
null==t||null==n?NaN:n<t?-1:n>t?1:n>=t?0:NaN}function r(t){let r,o,a;function
u(t,n,e=0,i=t.length){if(e<i){if(0!==r(n,n))return i;do{const
r=e+i>>>1;o(t[r],n)<0 [...]
+// https://d3js.org v7.9.0 Copyright 2010-2023 Mike Bostock
+!function(t,n){"object"==typeof exports&&"undefined"!=typeof
module?n(exports):"function"==typeof
define&&define.amd?define(["exports"],n):n((t="undefined"!=typeof
globalThis?globalThis:t||self).d3=t.d3||{})}(this,(function(t){"use
strict";function n(t,n){return
null==t||null==n?NaN:t<n?-1:t>n?1:t>=n?0:NaN}function e(t,n){return
null==t||null==n?NaN:n<t?-1:n>t?1:n>=t?0:NaN}function r(t){let r,o,a;function
u(t,n,e=0,i=t.length){if(e<i){if(0!==r(n,n))return i;do{const
r=e+i>>>1;o(t[r],n)<0 [...]
diff --git
a/core/src/main/resources/org/apache/spark/ui/static/vis-timeline-graph2d.min.css
b/core/src/main/resources/org/apache/spark/ui/static/vis-timeline-graph2d.min.css
index db496e005db8..a38e795c3130 100644
---
a/core/src/main/resources/org/apache/spark/ui/static/vis-timeline-graph2d.min.css
+++
b/core/src/main/resources/org/apache/spark/ui/static/vis-timeline-graph2d.min.css
@@ -1 +1 @@
-.vis-time-axis{overflow:hidden;position:relative}.vis-time-axis.vis-foreground{left:0;top:0;width:100%}.vis-time-axis.vis-background{height:100%;left:0;position:absolute;top:0;width:100%}.vis-time-axis
.vis-text{box-sizing:border-box;color:#4d4d4d;overflow:hidden;padding:3px;position:absolute;white-space:nowrap}.vis-time-axis
.vis-text.vis-measure{margin-left:0;margin-right:0;padding-left:0;padding-right:0;position:absolute;visibility:hidden}.vis-time-axis
.vis-grid.vis-vertical{border-l [...]
+.vis
[class*=span]{min-height:0;width:auto}.vis-current-time{background-color:#ff7f6e;width:2px;z-index:1;pointer-events:none}.vis-rolling-mode-btn{height:40px;width:40px;position:absolute;top:7px;right:20px;border-radius:50%;font-size:28px;cursor:pointer;opacity:.8;color:#fff;font-weight:700;text-align:center;background:#3876c2}.vis-rolling-mode-btn:before{content:"\26F6"}.vis-rolling-mode-btn:hover{opacity:1}.vis-timeline{position:relative;border:1px
solid #bfbfbf;overflow:hidden;paddi [...]
\ No newline at end of file
diff --git
a/core/src/main/resources/org/apache/spark/ui/static/vis-timeline-graph2d.min.js
b/core/src/main/resources/org/apache/spark/ui/static/vis-timeline-graph2d.min.js
index 8bbf6c7412ca..ed252b6933bf 100644
---
a/core/src/main/resources/org/apache/spark/ui/static/vis-timeline-graph2d.min.js
+++
b/core/src/main/resources/org/apache/spark/ui/static/vis-timeline-graph2d.min.js
@@ -4,8 +4,8 @@
*
* Create a fully customizable, interactive timeline with items and ranges.
*
- * @version 7.7.2
- * @date 2023-03-22T11:14:31.874Z
+ * @version 7.7.3
+ * @date 2023-10-27T17:57:57.604Z
*
* @copyright (c) 2011-2017 Almende B.V, http://almende.com
* @copyright (c) 2017-2019 visjs contributors, https://github.com/visjs
@@ -23,24 +23,26 @@
*
* vis.js may be distributed under either license.
*/
-!function(t,e){"object"==typeof exports&&"undefined"!=typeof
module?e(exports):"function"==typeof
define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof
globalThis?globalThis:t||self).vis=t.vis||{})}(this,(function(t){var
e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof
window?window:"undefined"!=typeof global?global:"undefined"!=typeof
self?self:{};function n(t){return
t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}function
r(t){ [...]
+!function(t,e){"object"==typeof exports&&"undefined"!=typeof
module?e(exports):"function"==typeof
define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof
globalThis?globalThis:t||self).vis=t.vis||{})}(this,(function(t){var
e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof
window?window:"undefined"!=typeof global?global:"undefined"!=typeof
self?self:{};function n(t){return
t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}function
r(t){ [...]
//! moment.js
-n.version="2.29.4",o($i),n.fn=ho,n.min=Qi,n.max=tn,n.now=en,n.utc=m,n.unix=uo,n.months=yo,n.isDate=d,n.locale=mi,n.invalid=b,n.duration=On,n.isMoment=D,n.weekdays=_o,n.parseZone=co,n.localeData=yi,n.isDuration=ln,n.monthsShort=bo,n.weekdaysMin=ko,n.defineLocale=vi,n.updateLocale=gi,n.locales=bi,n.weekdaysShort=wo,n.normalizeUnits=rt,n.relativeTimeRounding=os,n.relativeTimeThreshold=ss,n.calendarFormat=Bn,n.prototype=ho,n.HTML5_FMT={DATETIME_LOCAL:"YYYY-MM-DDTHH:mm",DATETIME_LOCAL_SECONDS
[...]
+n.version="2.29.4",o($i),n.fn=ho,n.min=Qi,n.max=tn,n.now=en,n.utc=m,n.unix=uo,n.months=yo,n.isDate=c,n.locale=mi,n.invalid=b,n.duration=On,n.isMoment=D,n.weekdays=_o,n.parseZone=co,n.localeData=yi,n.isDuration=ln,n.monthsShort=bo,n.weekdaysMin=ko,n.defineLocale=vi,n.updateLocale=gi,n.locales=bi,n.weekdaysShort=wo,n.normalizeUnits=rt,n.relativeTimeRounding=os,n.relativeTimeThreshold=ss,n.calendarFormat=Bn,n.prototype=ho,n.HTML5_FMT={DATETIME_LOCAL:"YYYY-MM-DDTHH:mm",DATETIME_LOCAL_SECONDS
[...]
//! moment.js locale configuration
-function e(t,e,i,n){var r={m:["eine Minute","einer Minute"],h:["eine
Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[t+" Tage",t+"
Tagen"],w:["eine Woche","einer Woche"],M:["ein Monat","einem Monat"],MM:[t+"
Monate",t+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[t+" Jahre",t+"
Jahren"]};return e?r[i][0]:r[i][1]}return
t.defineLocale("de",{months:"Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._März_Apr._Mai_Juni_J
[...]
+function e(t,e,i,n){var r={m:["eine Minute","einer Minute"],h:["eine
Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[t+" Tage",t+"
Tagen"],w:["eine Woche","einer Woche"],M:["ein Monat","einem Monat"],MM:[t+"
Monate",t+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[t+" Jahre",t+"
Jahren"]};return e?r[i][0]:r[i][1]}return
t.defineLocale("de",{months:"Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._März_Apr._Mai_Juni_J
[...]
//! moment.js locale configuration
-var
e="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),i="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),n=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],r=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;return
t.defineLocale("es",{months:"enero_febrero_marzo_abril_mayo_ju [...]
+var
e="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),i="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),n=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],r=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;return
t.defineLocale("es",{months:"enero_febrero_marzo_abril_mayo_ju [...]
//! moment.js locale configuration
-var
e=/(janv\.?|févr\.?|mars|avr\.?|mai|juin|juil\.?|août|sept\.?|oct\.?|nov\.?|déc\.?|janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,i=[/^janv/i,/^févr/i,/^mars/i,/^avr/i,/^mai/i,/^juin/i,/^juil/i,/^août/i,/^sept/i,/^oct/i,/^nov/i,/^déc/i],n=t.defineLocale("fr",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split
[...]
+var
e=/(janv\.?|févr\.?|mars|avr\.?|mai|juin|juil\.?|août|sept\.?|oct\.?|nov\.?|déc\.?|janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,i=[/^janv/i,/^févr/i,/^mars/i,/^avr/i,/^mai/i,/^juin/i,/^juil/i,/^août/i,/^sept/i,/^oct/i,/^nov/i,/^déc/i],n=t.defineLocale("fr",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split
[...]
//! moment.js locale configuration
-var
e=t.defineLocale("ja",{eras:[{since:"2019-05-01",offset:1,name:"令和",narrow:"㋿",abbr:"R"},{since:"1989-01-08",until:"2019-04-30",offset:1,name:"平成",narrow:"㍻",abbr:"H"},{since:"1926-12-25",until:"1989-01-07",offset:1,name:"昭和",narrow:"㍼",abbr:"S"},{since:"1912-07-30",until:"1926-12-24",offset:1,name:"大正",narrow:"㍽",abbr:"T"},{since:"1873-01-01",until:"1912-07-29",offset:6,name:"明治",narrow:"㍾",abbr:"M"},{since:"0001-01-01",until:"1873-12-31",offset:1,name:"西暦",narrow:"AD",abbr:"AD"},{s
[...]
+var
e=t.defineLocale("ja",{eras:[{since:"2019-05-01",offset:1,name:"令和",narrow:"㋿",abbr:"R"},{since:"1989-01-08",until:"2019-04-30",offset:1,name:"平成",narrow:"㍻",abbr:"H"},{since:"1926-12-25",until:"1989-01-07",offset:1,name:"昭和",narrow:"㍼",abbr:"S"},{since:"1912-07-30",until:"1926-12-24",offset:1,name:"大正",narrow:"㍽",abbr:"T"},{since:"1873-01-01",until:"1912-07-29",offset:6,name:"明治",narrow:"㍾",abbr:"M"},{since:"0001-01-01",until:"1873-12-31",offset:1,name:"西暦",narrow:"AD",abbr:"AD"},{s
[...]
//! moment.js locale configuration
-var
e="jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),i="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),n=[/^jan/i,/^feb/i,/^maart|mrt.?$/i,/^apr/i,/^mei$/i,/^jun[i.]?$/i,/^jul[i.]?$/i,/^aug/i,/^sep/i,/^okt/i,/^nov/i,/^dec/i],r=/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,o=t.defineLocale("nl",{months:"januari_februari_maart_april_me
[...]
+var
e="jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),i="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),n=[/^jan/i,/^feb/i,/^maart|mrt.?$/i,/^apr/i,/^mei$/i,/^jun[i.]?$/i,/^jul[i.]?$/i,/^aug/i,/^sep/i,/^okt/i,/^nov/i,/^dec/i],r=/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,o=t.defineLocale("nl",{months:"januari_februari_maart_april_me
[...]
//! moment.js locale configuration
-var
e="styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień".split("_"),i="stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia".split("_"),n=[/^sty/i,/^lut/i,/^mar/i,/^kwi/i,/^maj/i,/^cze/i,/^lip/i,/^sie/i,/^wrz/i,/^paź/i,/^lis/i,/^gru/i];function
r(t){return t%10<5&&t%10>1&&~~(t/10)%10!=1}function o(t,e,i){var n=t+"
";switch(i){case"ss":return n+(r(t)?"sekundy":"sekund");case"m":return
e?"minuta": [...]
"!=="
"[t]()||iy&&ry[t].name!==t}))}("trim")},{trim:function(){return
oy(this)}});var
sy=yp("String").trim,ay=_e,ly=sy,hy=String.prototype,uy=function(t){var
e=t.trim;return"string"==typeof
t||t===hy||ay(hy,t)&&e===hy.trim?ly:e},cy=uy;!function(t){t.exports=cy}(ey);var
dy=n(ty),py={},fy={get exports(){return py},set
exports(t){py=t}};In({target:"Object",stat:!0,sham:!Jt},{create:Ar});var
my=fe.Object,vy=function(t,e){return
my.create(t,e)};!function(t){t.exports=vy}(fy);var gy=n(py),yy={},by={ [...]
+var
e="styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień".split("_"),i="stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia".split("_"),n=[/^sty/i,/^lut/i,/^mar/i,/^kwi/i,/^maj/i,/^cze/i,/^lip/i,/^sie/i,/^wrz/i,/^paź/i,/^lis/i,/^gru/i];function
r(t){return t%10<5&&t%10>1&&~~(t/10)%10!=1}function o(t,e,i){var n=t+"
";switch(i){case"ss":return n+(r(t)?"sekundy":"sekund");case"m":return
e?"minuta": [...]
/*! Hammer.JS - v2.0.17-rc - 2019-12-16
* http://naver.github.io/egjs
*
* Forked By Naver egjs
* Copyright (c) hammerjs
- * Licensed under the MIT license */function ub(){return
ub=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var
i=arguments[e];for(var n in
i)Object.prototype.hasOwnProperty.call(i,n)&&(t[n]=i[n])}return
t},ub.apply(this,arguments)}function
cb(t,e){t.prototype=Object.create(e.prototype),t.prototype.constructor=t,t.__proto__=e}function
db(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised -
super() hasn't been called");return t}lb="function"!=typeof Ob [...]
+ * Licensed under the MIT license */
+function Zv(){return Zv=Object.assign||function(t){for(var
e=1;e<arguments.length;e++){var i=arguments[e];for(var n in
i)Object.prototype.hasOwnProperty.call(i,n)&&(t[n]=i[n])}return
t},Zv.apply(this,arguments)}function
Kv(t,e){t.prototype=Object.create(e.prototype),t.prototype.constructor=t,t.__proto__=e}function
Jv(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised -
super() hasn't been called");return t}qv="function"!=typeof
Object.assign?function(t){if(null==t)th [...]
+//# sourceMappingURL=vis-timeline-graph2d.min.js.map
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]