From d41340334603eb7ce7c08824c27978bb6234d3a3 Mon Sep 17 00:00:00 2001 From: RaymondDashWu Date: Mon, 4 Jan 2021 16:51:30 -0800 Subject: [PATCH] [ADD] Render Loading Spinner put into separate component. Minor code cleanup --- .../src/components/export-video/constants.js | 5 ++ .../export-video-panel-preview.js | 87 ++++++++----------- .../export-video/rendering-spinner.js | 24 +++++ 3 files changed, 64 insertions(+), 52 deletions(-) create mode 100644 modules/react/src/components/export-video/rendering-spinner.js diff --git a/modules/react/src/components/export-video/constants.js b/modules/react/src/components/export-video/constants.js index 922fcbbd..1f97ca6a 100644 --- a/modules/react/src/components/export-video/constants.js +++ b/modules/react/src/components/export-video/constants.js @@ -92,3 +92,8 @@ export const isResolution = value => option => option.value === value; export function getResolutionSetting(value) { return RESOLUTIONS.find(isResolution(value)) || RESOLUTIONS[0]; } + +export const deckStyle = { + width: '100%', + height: '100%' +}; diff --git a/modules/react/src/components/export-video/export-video-panel-preview.js b/modules/react/src/components/export-video/export-video-panel-preview.js index c642df41..14ef5c32 100644 --- a/modules/react/src/components/export-video/export-video-panel-preview.js +++ b/modules/react/src/components/export-video/export-video-panel-preview.js @@ -23,7 +23,8 @@ import DeckGL from '@deck.gl/react'; import {StaticMap} from 'react-map-gl'; import {MapboxLayer} from '@deck.gl/mapbox'; -import {WithKeplerUI} from '../inject-kepler'; +import {deckStyle} from './constants'; +import {RenderingSpinner} from './rendering-spinner'; export class ExportVideoPanelPreview extends Component { constructor(props) { @@ -177,72 +178,54 @@ export class ExportVideoPanelPreview extends Component { } render() { - const deckStyle = { - width: '100%', - height: '100%' - }; + const {exportVideoWidth, rendering, viewState, setViewState, adapter, durationMs} = this.props; + const {glContext, mapStyle} = this.state; const containerStyle = { - width: `${this.props.exportVideoWidth}px`, + width: `${exportVideoWidth}px`, height: `${this._getContainerHeight()}px`, position: 'relative' }; const loaderStyle = { - display: this.props.rendering === false ? 'none' : 'flex', + display: rendering === false ? 'none' : 'flex', position: 'absolute', background: 'rgba(0, 0, 0, 0.5)', - width: `${this.props.exportVideoWidth}px`, + width: `${exportVideoWidth}px`, height: `${this._getContainerHeight()}px`, alignItems: 'center', justifyContent: 'center' }; return ( - - {({LoadingSpinner}) => ( - <> -
- this.setState({glContext: gl})} - onViewStateChange={this.props.setViewState} - // onClick={visStateActions.onLayerClick} - {...this.props.adapter.getProps(this.deckRef, () => {})} - > - {this.state.glContext && ( - - )} - -
-
- - {/* TODO change text styling to match Kepler's */} -
- {Math.floor( - (this.props.adapter.videoCapture.timeMs / this.props.durationMs) * 100 - ).toFixed(0)}{' '} - % -
-
- - )} -
+ <> +
+ this.setState({glContext: gl})} + onViewStateChange={setViewState} + // onClick={visStateActions.onLayerClick} + {...adapter.getProps(this.deckRef, () => {})} + > + {glContext && ( + + )} + +
+ + ); } } diff --git a/modules/react/src/components/export-video/rendering-spinner.js b/modules/react/src/components/export-video/rendering-spinner.js new file mode 100644 index 00000000..f5195468 --- /dev/null +++ b/modules/react/src/components/export-video/rendering-spinner.js @@ -0,0 +1,24 @@ +import {WithKeplerUI} from '../inject-kepler'; +import React from 'react'; + +export function RenderingSpinner(props) { + return ( + + {({LoadingSpinner}) => ( +
+ + {/* TODO change text styling to match Kepler's */} +
+ {/* TODO make conditional 100% and fix video-capture */} + {Math.floor((props.adapter.videoCapture.timeMs / props.durationMs) * 100).toFixed(0)} % + {/* TODO conditional "Saving..." message after rendering done */} + {/* TODO conditional "Saving...Hang Tight" message after 10s */} +
+
+ )} +
+ ); +}