diff --git a/src/Blocks/EmbedEEATableauBlock/Edit.jsx b/src/Blocks/EmbedEEATableauBlock/Edit.jsx index 1f1ffc0..63d95b8 100644 --- a/src/Blocks/EmbedEEATableauBlock/Edit.jsx +++ b/src/Blocks/EmbedEEATableauBlock/Edit.jsx @@ -8,7 +8,7 @@ import { connect } from 'react-redux'; import { compose } from 'redux'; const Edit = (props) => { - const { data, block, onChangeBlock } = props; + const { data, block, onChangeBlock, id } = props; const schema = React.useMemo(() => Schema(props), [props]); React.useEffect(() => { @@ -20,9 +20,14 @@ const Edit = (props) => { } }, [block, data, onChangeBlock]); + React.useEffect(() => { + props.getContent(data.vis_url, null, id); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [data.vis_url]); + return ( <> - + { const { data } = props || {}; @@ -11,7 +15,8 @@ const View = (props) => { if (vis_url) { props.getContent(vis_url, null); } - }, [vis_url, props]); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [vis_url]); return ( <> @@ -22,4 +27,16 @@ const View = (props) => { ); }; -export default View; +export default compose( + connect( + (state, props) => ({ + data_provenance: + state.content.subrequests?.[props.id]?.data?.data_provenance, + tableau_visualization: + state.content.subrequests?.[props.id]?.data?.tableau_visualization_data, + }), + { + getContent, + }, + ), +)(View); diff --git a/src/TableauBlock/View.jsx b/src/TableauBlock/View.jsx index f82e264..f9d4326 100644 --- a/src/TableauBlock/View.jsx +++ b/src/TableauBlock/View.jsx @@ -47,6 +47,11 @@ const View = (props) => { /* eslint-disable-next-line */ }, []); + React.useEffect(() => { + if (props.setTableauError) props.setTableauError(error); + /* eslint-disable-next-line */ + }, [error]); + React.useEffect(() => { const newExtraFilters = { ...extraFilters }; urlParameters.forEach((element) => { diff --git a/src/Views/VisualizationView.jsx b/src/Views/VisualizationView.jsx index e443768..89de17c 100644 --- a/src/Views/VisualizationView.jsx +++ b/src/Views/VisualizationView.jsx @@ -2,12 +2,34 @@ import React from 'react'; import TableauView from '../TableauBlock/View'; const VisualizationView = (props) => { + const [tableauError, setTableauError] = React.useState(''); const { content = {} } = props; const { tableau_visualization_data = {} } = content; + const TableauNotDisplayed = () => { + return ( +
+
+ {!tableau_visualization_data.general.url ? ( +

URL required

+ ) : tableauError ? ( +

{tableauError}

+ ) : ( + '' + )} +
+
+ ); + }; return (
+ {!tableau_visualization_data.general.url || tableauError ? ( + + ) : ( + '' + )} { const value = React.useMemo(() => props.value, [props.value]); const [intValue, setIntValue] = React.useState(value); + const [tableauError, setTableauError] = React.useState(''); const dataForm = { tableau_data: intValue }; + const handleApplyChanges = () => { onChange(id, intValue); setOpen(false); @@ -31,6 +34,22 @@ const VisualizationWidget = (props) => { setIntValue(val); }; + const TableauNotDisplayed = () => { + return ( +
+
+ {!intValue.general.url ? ( +

URL required

+ ) : tableauError ? ( +

{tableauError}

+ ) : ( + '' + )} +
+
+ ); + }; + let schema = Schema(config); React.useEffect(() => { @@ -88,8 +107,14 @@ const VisualizationWidget = (props) => { /> -
+ {!intValue.general.url || tableauError ? ( + + ) : ( + '' + )} +
{ )} + {!intValue.general.url || tableauError ? : ''} + diff --git a/src/less/tableau.less b/src/less/tableau.less index 75dde48..0126611 100644 --- a/src/less/tableau.less +++ b/src/less/tableau.less @@ -49,4 +49,20 @@ } } +.not_displayed_tableau { + background-color: #ebebeb; + height: 100%; + width: 100%; + min-width: 633px; + min-height: 200px; +} + +.tableau-block { + .tableau-info { + p.tableau-error { + padding: 10px; + } + } +} + .loadAddonOverrides();