From 94a70f4fbeaa0d366642341c8eb1a49696fd4815 Mon Sep 17 00:00:00 2001 From: c9s Date: Mon, 27 Jun 2022 13:49:05 +0800 Subject: [PATCH] add time range slider --- .../TimeRangeSlider/components/Handle.js | 44 +++ .../components/KeyboardHandle.js | 32 +++ .../TimeRangeSlider/components/SliderRail.js | 13 + .../TimeRangeSlider/components/Tick.js | 41 +++ .../TimeRangeSlider/components/Track.js | 52 ++++ .../components/TimeRangeSlider/index.jsx | 256 ++++++++++++++++++ .../components/TimeRangeSlider/index.scss | 126 +++++++++ .../components/TradingViewChart.tsx | 46 +++- apps/backtest-report/package.json | 4 + apps/backtest-report/pages/_app.tsx | 2 + apps/backtest-report/pages/_document.tsx | 2 +- apps/backtest-report/yarn.lock | 142 +++++++++- 12 files changed, 744 insertions(+), 16 deletions(-) create mode 100644 apps/backtest-report/components/TimeRangeSlider/components/Handle.js create mode 100644 apps/backtest-report/components/TimeRangeSlider/components/KeyboardHandle.js create mode 100644 apps/backtest-report/components/TimeRangeSlider/components/SliderRail.js create mode 100644 apps/backtest-report/components/TimeRangeSlider/components/Tick.js create mode 100644 apps/backtest-report/components/TimeRangeSlider/components/Track.js create mode 100644 apps/backtest-report/components/TimeRangeSlider/index.jsx create mode 100644 apps/backtest-report/components/TimeRangeSlider/index.scss diff --git a/apps/backtest-report/components/TimeRangeSlider/components/Handle.js b/apps/backtest-report/components/TimeRangeSlider/components/Handle.js new file mode 100644 index 000000000..338fb0133 --- /dev/null +++ b/apps/backtest-report/components/TimeRangeSlider/components/Handle.js @@ -0,0 +1,44 @@ +import PropTypes from 'prop-types' +import React from 'react' + +const Handle = ({ + error, + domain: [min, max], + handle: { id, value, percent = 0 }, + disabled, + getHandleProps, + }) => { + const leftPosition = `${percent}%` + + return ( + <> +
+
+
+
+ + ) +} + +Handle.propTypes = { + domain: PropTypes.array.isRequired, + handle: PropTypes.shape({ + id: PropTypes.string.isRequired, + value: PropTypes.number.isRequired, + percent: PropTypes.number.isRequired + }).isRequired, + getHandleProps: PropTypes.func.isRequired, + disabled: PropTypes.bool, + style: PropTypes.object, +} + +Handle.defaultProps = { disabled: false } + +export default Handle diff --git a/apps/backtest-report/components/TimeRangeSlider/components/KeyboardHandle.js b/apps/backtest-report/components/TimeRangeSlider/components/KeyboardHandle.js new file mode 100644 index 000000000..077312bda --- /dev/null +++ b/apps/backtest-report/components/TimeRangeSlider/components/KeyboardHandle.js @@ -0,0 +1,32 @@ +import PropTypes from 'prop-types' +import React from 'react' + +const KeyboardHandle = ({ domain: [min, max], handle: { id, value, percent = 0 }, disabled, getHandleProps }) => ( +