From 21fcae824779f3b0becc78b5b8f0f24c17d62045 Mon Sep 17 00:00:00 2001 From: Peter Pan Date: Sat, 5 Sep 2020 17:50:09 +0800 Subject: [PATCH] feat: add smoothed data only option in scalar page (#795) --- .../core/public/locales/en/scalar.json | 1 + .../core/public/locales/zh/scalar.json | 1 + .../src/components/ScalarPage/ScalarChart.tsx | 7 +++- frontend/packages/core/src/pages/scalar.tsx | 23 ++++++++++- .../core/src/resource/scalar/chart.ts | 41 ++++++++++++------- 5 files changed, 55 insertions(+), 18 deletions(-) diff --git a/frontend/packages/core/public/locales/en/scalar.json b/frontend/packages/core/public/locales/en/scalar.json index 04777686..c550a0c6 100644 --- a/frontend/packages/core/public/locales/en/scalar.json +++ b/frontend/packages/core/public/locales/en/scalar.json @@ -7,6 +7,7 @@ "minimize": "Minimize", "restore": "Selection restore", "smoothed": "Smoothed", + "smoothed-data-only": "Smoothed Data Only", "smoothing": "Smoothing", "toggle-log-axis": "Logarithmic axis", "tooltip-sorting": "Tooltip Sorting", diff --git a/frontend/packages/core/public/locales/zh/scalar.json b/frontend/packages/core/public/locales/zh/scalar.json index 06dae890..cb8c154c 100644 --- a/frontend/packages/core/public/locales/zh/scalar.json +++ b/frontend/packages/core/public/locales/zh/scalar.json @@ -7,6 +7,7 @@ "minimize": "最小化", "restore": "还原图表框选", "smoothed": "Smoothed", + "smoothed-data-only": "仅显示平滑后数据", "smoothing": "平滑度", "toggle-log-axis": "切换对数坐标轴", "tooltip-sorting": "详情数据排序", diff --git a/frontend/packages/core/src/components/ScalarPage/ScalarChart.tsx b/frontend/packages/core/src/components/ScalarPage/ScalarChart.tsx index c0363b18..39c3ec46 100644 --- a/frontend/packages/core/src/components/ScalarPage/ScalarChart.tsx +++ b/frontend/packages/core/src/components/ScalarPage/ScalarChart.tsx @@ -86,6 +86,7 @@ type ScalarChartProps = { xAxis: XAxis; sortingMethod: SortingMethod; outlier?: boolean; + smoothedOnly?: boolean; running?: boolean; }; @@ -97,6 +98,7 @@ const ScalarChart: FunctionComponent = ({ xAxis, sortingMethod, outlier, + smoothedOnly, running }) => { const {t, i18n} = useTranslation(['scalar', 'common']); @@ -163,9 +165,10 @@ const ScalarChart: FunctionComponent = ({ chartData({ data: smoothedDatasets.slice(0, runs.length), runs, - xAxis + xAxis, + smoothedOnly }), - [smoothedDatasets, runs, xAxis] + [smoothedDatasets, runs, xAxis, smoothedOnly] ); const maxStepLength = useMemo( diff --git a/frontend/packages/core/src/pages/scalar.tsx b/frontend/packages/core/src/pages/scalar.tsx index 65ba4116..9e770100 100644 --- a/frontend/packages/core/src/pages/scalar.tsx +++ b/frontend/packages/core/src/pages/scalar.tsx @@ -46,6 +46,8 @@ const Scalar: FunctionComponent = () => { const [ignoreOutliers, setIgnoreOutliers] = useState(false); + const [smoothedDataOnly, setSmoothedDataOnly] = useState(false); + const aside = useMemo( () => runs.length ? ( @@ -76,6 +78,11 @@ const Scalar: FunctionComponent = () => { + + + {t('scalar:smoothed-data-only')} + + @@ -84,7 +91,18 @@ const Scalar: FunctionComponent = () => { ) : null, - [t, ignoreOutliers, onChangeRuns, running, runs, selectedRuns, smoothing, tooltipSorting, xAxis] + [ + t, + ignoreOutliers, + smoothedDataOnly, + onChangeRuns, + running, + runs, + selectedRuns, + smoothing, + tooltipSorting, + xAxis + ] ); const withChart = useCallback>( @@ -97,10 +115,11 @@ const Scalar: FunctionComponent = () => { xAxis={xAxis} sortingMethod={tooltipSorting} outlier={ignoreOutliers} + smoothedOnly={smoothedDataOnly} running={running} /> ), - [smoothing, xAxis, tooltipSorting, ignoreOutliers, running] + [smoothing, xAxis, tooltipSorting, ignoreOutliers, smoothedDataOnly, running] ); return ( diff --git a/frontend/packages/core/src/resource/scalar/chart.ts b/frontend/packages/core/src/resource/scalar/chart.ts index d1e60405..a0e5a97f 100644 --- a/frontend/packages/core/src/resource/scalar/chart.ts +++ b/frontend/packages/core/src/resource/scalar/chart.ts @@ -17,7 +17,17 @@ export const options = { } }; -export const chartData = ({data, runs, xAxis}: {data: Dataset[]; runs: Run[]; xAxis: XAxis}) => +export const chartData = ({ + data, + runs, + xAxis, + smoothedOnly +}: { + data: Dataset[]; + runs: Run[]; + xAxis: XAxis; + smoothedOnly?: boolean; +}) => data .map((dataset, i) => { // smoothed data: @@ -29,38 +39,41 @@ export const chartData = ({data, runs, xAxis}: {data: Dataset[]; runs: Run[]; xA const name = runs[i].label; const color = runs[i].colors[0]; const colorAlt = runs[i].colors[1]; - return [ + const result = [ { name, - z: i, + z: runs.length + i, itemStyle: { - color: colorAlt + color }, lineStyle: { - color: colorAlt + color }, data: dataset, encode: { x: [xAxisMap[xAxis]], - y: [2] + y: [3] } - }, - { + } + ]; + if (!smoothedOnly) { + result.push({ name, - z: runs.length + i, + z: i, itemStyle: { - color + color: colorAlt }, lineStyle: { - color + color: colorAlt }, data: dataset, encode: { x: [xAxisMap[xAxis]], - y: [3] + y: [2] } - } - ]; + }); + } + return result; }) .flat(); -- GitLab