From 25eac3429b75ab637a36722d510340872172778f Mon Sep 17 00:00:00 2001 From: Kyle Doherty <kyle.l.doherty@gmail.com> Date: Fri, 15 Sep 2017 15:29:28 -0700 Subject: [PATCH] add loading messages --- frontend/src/metabase/xray/containers/CardXRay.jsx | 11 +++++++++-- frontend/src/metabase/xray/containers/FieldXray.jsx | 5 ++++- .../metabase/xray/containers/SegmentComparison.jsx | 12 +++--------- .../xray/containers/SegmentTableComparison.jsx | 5 ++++- frontend/src/metabase/xray/containers/TableXRay.jsx | 5 ++++- frontend/src/metabase/xray/selectors.js | 2 +- frontend/src/metabase/xray/utils.js | 5 +++++ frontend/test/xray/xray.unit.spec.js | 3 ++- 8 files changed, 32 insertions(+), 16 deletions(-) diff --git a/frontend/src/metabase/xray/containers/CardXRay.jsx b/frontend/src/metabase/xray/containers/CardXRay.jsx index 632cac93070..726c39baa36 100644 --- a/frontend/src/metabase/xray/containers/CardXRay.jsx +++ b/frontend/src/metabase/xray/containers/CardXRay.jsx @@ -14,7 +14,8 @@ import Visualization from 'metabase/visualizations/components/Visualization' import { XRayPageWrapper, Heading } from 'metabase/xray/components/XRayLayout' import Periodicity from 'metabase/xray/components/Periodicity' -import { hasXray } from 'metabase/xray/utils' +import { hasXray, loadingMessages } from 'metabase/xray/utils' +import LoadingAnimation from 'metabase/xray/components/LoadingAnimation' type Props = { fetchCardXray: () => void, @@ -64,7 +65,13 @@ class CardXRay extends Component { const { xray, isLoading } = this.props const { error } = this.state return ( - <LoadingAndErrorWrapper loading={isLoading || !hasXray(xray)} error={error}> + <LoadingAndErrorWrapper + loading={isLoading || !hasXray(xray)} + error={error} + noBackground + loadingMessages={loadingMessages} + loadingScenes={[<LoadingAnimation />]} + > { () => <XRayPageWrapper> <div className="mt4 mb2"> diff --git a/frontend/src/metabase/xray/containers/FieldXray.jsx b/frontend/src/metabase/xray/containers/FieldXray.jsx index f805152afc0..1f72c6c7cd9 100644 --- a/frontend/src/metabase/xray/containers/FieldXray.jsx +++ b/frontend/src/metabase/xray/containers/FieldXray.jsx @@ -24,9 +24,10 @@ import StatGroup from 'metabase/xray/components/StatGroup' import Histogram from 'metabase/xray/Histogram' import { Heading, XRayPageWrapper } from 'metabase/xray/components/XRayLayout' -import { hasXray } from 'metabase/xray/utils' +import { hasXray, loadingMessages } from 'metabase/xray/utils' import Periodicity from 'metabase/xray/components/Periodicity' +import LoadingAnimation from 'metabase/xray/components/LoadingAnimation' import type { Field } from 'metabase/meta/types/Field' import type { Table } from 'metabase/meta/types/Table' @@ -97,6 +98,8 @@ class FieldXRay extends Component { loading={isLoading || !hasXray(xray)} error={error} noBackground + loadingMessages={loadingMessages} + loadingScenes={[<LoadingAnimation />]} > { () => <XRayPageWrapper> diff --git a/frontend/src/metabase/xray/containers/SegmentComparison.jsx b/frontend/src/metabase/xray/containers/SegmentComparison.jsx index 4f854ec0510..9323b791c66 100644 --- a/frontend/src/metabase/xray/containers/SegmentComparison.jsx +++ b/frontend/src/metabase/xray/containers/SegmentComparison.jsx @@ -18,7 +18,7 @@ import LoadingAndErrorWrapper from 'metabase/components/LoadingAndErrorWrapper' import XRayComparison from 'metabase/xray/components/XRayComparison' import LoadingAnimation from 'metabase/xray/components/LoadingAnimation' -import { hasComparison } from 'metabase/xray/utils' +import { hasComparison, loadingMessages } from 'metabase/xray/utils' const mapStateToProps = (state) => ({ comparison: getComparison(state), @@ -69,14 +69,8 @@ class SegmentComparison extends Component { loading={isLoading || !hasComparison(comparison)} error={error} noBackground - loadingMessages={[ - 'Generating your comparison...', - 'Teaching robots to love...', - 'Still working...', - ]} - loadingScenes={[ - <LoadingAnimation /> - ]} + loadingMessages={loadingMessages} + loadingScenes={[<LoadingAnimation />]} > { () => diff --git a/frontend/src/metabase/xray/containers/SegmentTableComparison.jsx b/frontend/src/metabase/xray/containers/SegmentTableComparison.jsx index a29058cb045..bf489234838 100644 --- a/frontend/src/metabase/xray/containers/SegmentTableComparison.jsx +++ b/frontend/src/metabase/xray/containers/SegmentTableComparison.jsx @@ -16,7 +16,8 @@ import { import LoadingAndErrorWrapper from 'metabase/components/LoadingAndErrorWrapper' import XRayComparison from 'metabase/xray/components/XRayComparison' -import { hasComparison } from 'metabase/xray/utils' +import { hasComparison, loadingMessages } from 'metabase/xray/utils' +import LoadingAnimation from 'metabase/xray/components/LoadingAnimation' const mapStateToProps = state => ({ comparison: getComparison(state), @@ -55,6 +56,8 @@ class SegmentTableComparison extends Component { loading={isLoading || !hasComparison(comparison)} error={error} noBackground + loadingMessages={loadingMessages} + loadingScenes={[<LoadingAnimation />]} > { () => <XRayComparison diff --git a/frontend/src/metabase/xray/containers/TableXRay.jsx b/frontend/src/metabase/xray/containers/TableXRay.jsx index 90f722fd034..981caf93fab 100644 --- a/frontend/src/metabase/xray/containers/TableXRay.jsx +++ b/frontend/src/metabase/xray/containers/TableXRay.jsx @@ -20,10 +20,11 @@ import { import Icon from 'metabase/components/Icon' import LoadingAndErrorWrapper from 'metabase/components/LoadingAndErrorWrapper' +import LoadingAnimation from 'metabase/xray/components/LoadingAnimation' import type { Table } from 'metabase/meta/types/Table' -import { hasXray } from 'metabase/xray/utils' +import { hasXray, loadingMessages } from 'metabase/xray/utils' type Props = { constituents: [], @@ -88,6 +89,8 @@ class TableXRay extends Component { loading={isLoading || !hasXray(xray)} error={error} noBackground + loadingMessages={loadingMessages} + loadingScenes={[<LoadingAnimation />]} > { () => <div className="full"> diff --git a/frontend/src/metabase/xray/selectors.js b/frontend/src/metabase/xray/selectors.js index 35154b04677..063fc8241f9 100644 --- a/frontend/src/metabase/xray/selectors.js +++ b/frontend/src/metabase/xray/selectors.js @@ -29,7 +29,7 @@ export const getSegmentConstituents = (state) => ) ) -export const getComparison = (state) => state.xray.comparison && state.xray.comparison +export const getComparison = (state) => state.xray.comparison export const getComparisonFields = createSelector( [getComparison], diff --git a/frontend/src/metabase/xray/utils.js b/frontend/src/metabase/xray/utils.js index 74d8b386490..f5257b30935 100644 --- a/frontend/src/metabase/xray/utils.js +++ b/frontend/src/metabase/xray/utils.js @@ -21,3 +21,8 @@ function has (entity) { export const hasXray = has export const hasComparison = has + +export const loadingMessages = [ + 'Generating your comparison...', + 'Still working...', +] diff --git a/frontend/test/xray/xray.unit.spec.js b/frontend/test/xray/xray.unit.spec.js index bab35d45f09..90d9a71a190 100644 --- a/frontend/test/xray/xray.unit.spec.js +++ b/frontend/test/xray/xray.unit.spec.js @@ -15,7 +15,8 @@ describe('xray', () => { const expected = { comparison: { features: {} - } + }, + loading: false } expect(reducer({}, action)).toEqual(expected) -- GitLab