diff --git a/ts/webui/package.json b/ts/webui/package.json index 950a5fea2b..b9ecb63dc1 100644 --- a/ts/webui/package.json +++ b/ts/webui/package.json @@ -15,8 +15,8 @@ "d3": "^5.16.0", "dotenv": "6.2.0", "dotenv-expand": "4.2.0", - "echarts": "^4.5.0", - "echarts-for-react": "^2.0.15-beta.1", + "echarts": "^5.0", + "echarts-for-react": "3.0.0", "file-loader": "3.0.1", "fs-extra": "7.0.1", "html-webpack-plugin": "4.0.0-beta.5", diff --git a/ts/webui/src/components/modals/Compare.tsx b/ts/webui/src/components/modals/Compare.tsx index fc20bd95da..9199b187b5 100644 --- a/ts/webui/src/components/modals/Compare.tsx +++ b/ts/webui/src/components/modals/Compare.tsx @@ -83,13 +83,7 @@ class Compare extends React.Component { tooltip: { trigger: 'item', enterable: true, - position: (point: number[], data: TooltipForIntermediate): [number, number] => { - if (data.dataIndex < xAxisMax / 2) { - return [point[0], 80]; - } else { - return [point[0] - 300, 80]; - } - }, + confine: true, formatter: (data: TooltipForIntermediate): string => { const item = items.find(k => k.id === data.seriesName) as Item; return this._generateTooltipSummary(item, data.data); @@ -103,7 +97,7 @@ class Compare extends React.Component { legend: { type: 'scroll', right: 40, - left: legend.length > 6 ? 80 : null, + left: legend.length > 6 ? '15%' : null, data: legend }, xAxis: { @@ -119,11 +113,13 @@ class Compare extends React.Component { series: dataForEchart }; return ( - +
+ +
); } @@ -139,7 +135,7 @@ class Compare extends React.Component { {rowName} {items.map(item => ( - {formatter(item)} + {formatter(item) || '--'} ))} @@ -178,6 +174,7 @@ class Compare extends React.Component { } const parameterKeys = this._overlapKeys(items.map(item => item.parameters)); const metricKeys = this._overlapKeys(items.map(item => item.metrics)); + return ( diff --git a/ts/webui/src/components/trial-detail/DefaultMetricPoint.tsx b/ts/webui/src/components/trial-detail/DefaultMetricPoint.tsx index 693162b111..f114734d87 100644 --- a/ts/webui/src/components/trial-detail/DefaultMetricPoint.tsx +++ b/ts/webui/src/components/trial-detail/DefaultMetricPoint.tsx @@ -77,24 +77,14 @@ class DefaultPoint extends React.Component trigger: 'item', enterable: hasBestCurve, confine: true, // confirm always show tooltip box rather than hidden by background - formatter: (data: TooltipForAccuracy): React.ReactNode => { - return ( - '
' + - '
Trial No.: ' + - data.data[0] + - '
' + - '
Trial ID: ' + - data.data[2] + - '
' + - '
Default metric: ' + - data.data[1] + - '
' + - '
Parameters:
' +
-                        JSON.stringify(data.data[3], null, 4) +
-                        '
' + - '
' - ); - } + formatter: (data: TooltipForAccuracy): React.ReactNode => ` +
+
Trial No.: ${data.data[0]}
+
Trial ID: ${data.data[2]}
+
Default metric: ${data.data[1]}
+
Parameters:
${JSON.stringify(data.data[3], null, 4)}
+
+ ` }, dataZoom: [ { @@ -165,7 +155,7 @@ class DefaultPoint extends React.Component )} -
+
{ axisPointer: { type: 'shadow' }, + enterable: true, formatter: (data: any): React.ReactNode => - '
' + - '
Trial No.: ' + - data[0].dataIndex + - '
' + - '
Duration: ' + - convertDuration(data[0].data) + - '
' + - '
' + `
+
Trial No.: ${data[0].dataIndex}
+
Duration: ${convertDuration(data[0].data)}
+
+ ` }, grid: { bottom: '3%', @@ -185,7 +183,7 @@ class Duration extends React.Component { const onEvents = { dataZoom: this.durationDataZoom }; return ( -
+
tooltip: { trigger: 'item', enterable: true, - position: function(point: number[], data: TooltipForIntermediate): number[] { - if (data.dataIndex < length / 2) { - return [point[0], 80]; - } else { - return [point[0] - 300, 80]; - } - }, + confine: true, formatter: function(data: TooltipForIntermediate): React.ReactNode { const trialId = data.seriesName; let parameters = {}; @@ -101,24 +95,15 @@ class Intermediate extends React.Component parameters = temp.hyperPara; trialNum = temp.trialNum; } - return ( - '
' + - '
Trial No.: ' + - trialNum + - '
' + - '
Trial ID: ' + - trialId + - '
' + - '
Intermediate: ' + - data.data + - '
' + - '
Parameters: ' + - '
' +
-                            JSON.stringify(parameters, null, 4) +
-                            '
' + - '
' + - '
' - ); + return ` +
+
Trial No.: ${trialNum}
+
Trial ID: ${trialId}
+
Intermediate: ${data.data}
+
Parameters:
${JSON.stringify(parameters, null, 4)}
+
+
+ `; } }, grid: { @@ -280,7 +265,7 @@ class Intermediate extends React.Component -
+
div > div { + padding: 0 !important; + border: none !important; +} diff --git a/ts/webui/src/static/style/trialsDetail.scss b/ts/webui/src/static/style/trialsDetail.scss index 20ceb977a3..04263bb9de 100644 --- a/ts/webui/src/static/style/trialsDetail.scss +++ b/ts/webui/src/static/style/trialsDetail.scss @@ -85,9 +85,11 @@ min-width: 245px; max-width: 350px; max-height: 350px; - padding: 10px 10px; white-space: normal; + padding: 10px; overflow: auto; + background: #6f6f6f; + color: #fff; pre { overflow: inherit; diff --git a/ts/webui/yarn.lock b/ts/webui/yarn.lock index b4fe194919..b8148df733 100644 --- a/ts/webui/yarn.lock +++ b/ts/webui/yarn.lock @@ -4915,20 +4915,21 @@ ecc-jsbn@~0.1.1: jsbn "~0.1.0" safer-buffer "^2.1.0" -echarts-for-react@^2.0.15-beta.1: - version "2.0.16" - resolved "https://registry.yarnpkg.com/echarts-for-react/-/echarts-for-react-2.0.16.tgz#8134a53dff90882c1e6a95c45ceab21e00f6c9f5" - integrity sha512-VmHCktay2qKt/+wpL/C7thbvIa7dYBEey0/U4Zaqo+qeA4wx+uiCd5NeCsPIhD/0Pv+2qqNswqiNiUCtcgccOw== +echarts-for-react@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/echarts-for-react/-/echarts-for-react-3.0.0.tgz#af6a24e8386aa22c545a9b4ab44c8ecdd2ee491c" + integrity sha512-dYsED80zcMYO3f8LiswdodRybQ1p1Upu5paPB5q9faM8n67Jx7Qkiqubv854GwwCyo1HhA7M8fFCFwJ8ygGqdQ== dependencies: - fast-deep-equal "^2.0.1" - size-sensor "^1.0.0" + fast-deep-equal "^3.1.3" + size-sensor "^1.0.1" -echarts@^4.5.0: - version "4.9.0" - resolved "https://registry.yarnpkg.com/echarts/-/echarts-4.9.0.tgz#a9b9baa03f03a2a731e6340c55befb57a9e1347d" - integrity sha512-+ugizgtJ+KmsJyyDPxaw2Br5FqzuBnyOWwcxPKO6y0gc5caYcfnEUIlNStx02necw8jmKmTafmpHhGo4XDtEIA== +echarts@^5.0: + version "5.0.2" + resolved "https://registry.yarnpkg.com/echarts/-/echarts-5.0.2.tgz#1726d17a57cf05d62cd0567b4325e1201a56baf6" + integrity sha512-En0VYpc96nw2/2AZoBWPHsGi471zMublttj50kfFpYAeR4geup0Tj9iVgEXh7QYZFPnRiruDJEjcB5PXZ+BYzQ== dependencies: - zrender "4.3.2" + tslib "2.0.3" + zrender "5.0.4" editor@~1.0.0: version "1.0.0" @@ -5546,12 +5547,7 @@ extsprintf@^1.2.0: resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= -fast-deep-equal@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" - integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk= - -fast-deep-equal@^3.1.1: +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== @@ -12040,7 +12036,7 @@ sisteransi@^1.0.5: resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== -size-sensor@^1.0.0: +size-sensor@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/size-sensor/-/size-sensor-1.0.1.tgz#f84e46206d3e259faff1d548e4b3beca93219dbb" integrity sha512-QTy7MnuugCFXIedXRpUSk9gUnyNiaxIdxGfUjr8xxXOqIB3QvBUYP9+b51oCg2C4dnhaeNk/h57TxjbvoJrJUA== @@ -12994,6 +12990,11 @@ ts-pnp@^1.0.0: resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.2.0.tgz#a500ad084b0798f1c3071af391e65912c86bca92" integrity sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw== +tslib@2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.0.3.tgz#8e0741ac45fc0c226e58a17bfc3e64b9bc6ca61c" + integrity sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ== + tslib@^1.10.0, tslib@^1.8.1, tslib@^1.9.0: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" @@ -13936,10 +13937,12 @@ yargs@12.0.2, yargs@>=16.0.3, yargs@^11.0.0, yargs@^13.3.0, yargs@^13.3.2, yargs y18n "^5.0.5" yargs-parser "^20.2.2" -zrender@4.3.2: - version "4.3.2" - resolved "https://registry.yarnpkg.com/zrender/-/zrender-4.3.2.tgz#ec7432f9415c82c73584b6b7b8c47e1b016209c6" - integrity sha512-bIusJLS8c4DkIcdiK+s13HiQ/zjQQVgpNohtd8d94Y2DnJqgM1yjh/jpDb8DoL6hd7r8Awagw8e3qK/oLaWr3g== +zrender@5.0.4: + version "5.0.4" + resolved "https://registry.yarnpkg.com/zrender/-/zrender-5.0.4.tgz#89c355af908b9f64a301b38f751b7951f2c8a95a" + integrity sha512-DJpy0yrHYY5CuH6vhb9IINWbjvBUe/56J8aH86Jb7O8rRPAYZ3M2E469Qf5B3EOIfM3o3aUrO5edRQfLJ+l1Qw== + dependencies: + tslib "2.0.3" zwitch@^1.0.0: version "1.0.5"