Skip to content

Commit

Permalink
Add available fields, remove default version, manage no version selected
Browse files Browse the repository at this point in the history
  • Loading branch information
dana-cfc4 committed Jan 18, 2023
1 parent e557a05 commit 66e510e
Show file tree
Hide file tree
Showing 10 changed files with 146 additions and 67 deletions.
59 changes: 33 additions & 26 deletions src/Blocks/EmbedEEATableauBlock/View.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -36,34 +36,41 @@ const View = (props) => {
<PrivacyProtection data={data} {...props}>
{data?.vis_url ? (
<>
<div className="tableau-block">
{props.mode === 'edit' ? (
<div className="tableau-info">
<h3 className="tableau-version">
== Tableau{' '}
{tableau_visualization?.general?.version || '2.8.0'} loaded
==
</h3>
{tableau_visualization?.general?.url &&
tableau_visualization?.general?.version ? (
<>
<div className="tableau-block">
{props.mode === 'edit' ? (
<div className="tableau-info">
<h3 className="tableau-version">
== Tableau {tableau_visualization?.general?.version}{' '}
loaded ==
</h3>
</div>
) : (
''
)}
<ConnectedTableau
{...props.tableau_visualization}
id={props.id}
{...props}
/>
</div>
) : (
''
)}
<ConnectedTableau
{...props.tableau_visualization}
id={props.id}
{...props}
/>
</div>

{show_sources &&
data_provenance &&
data_provenance?.data?.data_provenance &&
tableau_visualization ? (
<Sources sources={data_provenance.data.data_provenance} />
) : show_sources ? (
<div>Data provenance is not set in the visualization</div>
{show_sources &&
data_provenance &&
data_provenance?.data?.data_provenance &&
tableau_visualization ? (
<Sources sources={data_provenance.data.data_provenance} />
) : show_sources ? (
<div>Data provenance is not set in the visualization</div>
) : (
''
)}
</>
) : !tableau_visualization?.general?.url ? (
<div>Url is not set in the visualization</div>
) : (
''
<div>Version is not set in the visualization</div>
)}
</>
) : (
Expand Down
29 changes: 29 additions & 0 deletions src/CustomWidgets/UrlParamsWidget.jsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
import React from 'react';
import '@eeacms/volto-tableau/less/tableau.less';

const UrlParamsWidget = () => {
const fields = [
'embed',
'isGuestRedirectFromVizportal',
'showShareOptions',
'jsdebug',
'sheetname',
'display_count',
'showVizHome',
'origin',
'device',
];

return (
<div className="availableFieldsContainer">
<p className="availableFieldsTitle">Available Fields:</p>
{fields.map((field) => (
<p className="availableFields">
<strong>{field}</strong>
</p>
))}
</div>
);
};

export default UrlParamsWidget;
2 changes: 1 addition & 1 deletion src/Tableau/View.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ const Tableau = (props) => {
screen = {},
setError = () => {},
setLoaded = () => {},
version = '2.8.0',
version = '',
} = props;
const {
autoScale = false,
Expand Down
51 changes: 29 additions & 22 deletions src/TableauBlock/View.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -34,14 +34,15 @@ const View = (props) => {
description = null,
autoScale = false,
} = data;
const version =
props.data.version || config.settings.tableauVersion || '2.8.0';
const version = props.data.version || config.settings.tableauVersion;
const device = getDevice(config, screen.page?.width || Infinity);
const breakpointUrl = breakpointUrls.filter(
(breakpoint) => breakpoint.device === device,
)[0]?.url;
const url = breakpointUrl || data.url;

const displayCondition = url && version;

React.useEffect(() => {
setMounted(true);
/* eslint-disable-next-line */
Expand All @@ -67,33 +68,39 @@ const View = (props) => {

return mounted ? (
<div className="tableau-block">
{props.mode === 'edit' ? (
<div className="tableau-info">
<div className="tableau-info">
{displayCondition && props.mode === 'edit' ? (
<h3 className="tableau-version">== Tableau {version} loaded ==</h3>
{!props.data.url ? <p className="tableau-error">URL required</p> : ''}
{error ? <p className="tableau-error">{error}</p> : ''}
</div>
) : (
''
)}
) : null}
{!url ? <p className="tableau-error">URL required</p> : ''}
{url && !version ? (
<p className="tableau-error">Version required</p>
) : (
''
)}
{error ? <p className="tableau-error">{error}</p> : ''}
</div>

{loaded && title ? <h3 className="tableau-title">{title}</h3> : ''}
{loaded && description ? (
<p className="tableau-description">{description}</p>
) : (
''
)}
<Tableau
{...props}
canUpdateUrl={!breakpointUrl}
extraFilters={extraFilters}
extraOptions={{ device: autoScale ? 'desktop' : device }}
error={error}
loaded={loaded}
setError={setError}
setLoaded={setLoaded}
version={version}
url={url}
/>
{displayCondition ? (
<Tableau
{...props}
canUpdateUrl={!breakpointUrl}
extraFilters={extraFilters}
extraOptions={{ device: autoScale ? 'desktop' : device }}
error={error}
loaded={loaded}
setError={setError}
setLoaded={setLoaded}
version={version}
url={url}
/>
) : null}
</div>
) : (
''
Expand Down
2 changes: 1 addition & 1 deletion src/TableauBlock/schema.js
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ export default (config) => ({
'2.0.3',
].map((version) => [version, `tableau-${version}`]),
],
default: config.settings.tableauVersion || '2.8.0',
default: config.settings.tableauVersion,
},
url: {
title: 'Url',
Expand Down
23 changes: 13 additions & 10 deletions src/Views/VisualizationView.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@ const VisualizationView = (props) => {
<div className="tableau-info">
{!tableau_visualization_data.general?.url ? (
<p className="tableau-error">URL required</p>
) : !tableau_visualization_data.general?.version ? (
<p className="tableau-error">Version required</p>
) : tableauError ? (
<p className="tableau-error">{tableauError}</p>
) : (
Expand All @@ -23,19 +25,20 @@ const VisualizationView = (props) => {
};
return (
<div>
{!tableau_visualization_data.general?.url || tableauError ? (
{!tableau_visualization_data?.general?.url ||
!tableau_visualization_data?.general?.version ||
tableauError ? (
<TableauNotDisplayed />
) : (
''
<TableauView
setTableauError={setTableauError}
data={{
...tableau_visualization_data.general,
...tableau_visualization_data.options,
...tableau_visualization_data.extraOptions,
}}
/>
)}
<TableauView
setTableauError={setTableauError}
data={{
...tableau_visualization_data.general,
...tableau_visualization_data.options,
...tableau_visualization_data.extraOptions,
}}
/>
</div>
);
};
Expand Down
15 changes: 11 additions & 4 deletions src/Widgets/VisualizationWidget.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,8 @@ const VisualizationWidget = (props) => {
<div className="tableau-info">
{intValue && intValue.general && !intValue.general.url ? (
<p className="tableau-error">URL required</p>
) : intValue && intValue.general && !intValue.general.version ? (
<p className="tableau-error">Version required</p>
) : tableauError ? (
<p className="tableau-error">{tableauError}</p>
) : (
Expand All @@ -57,7 +59,8 @@ const VisualizationWidget = (props) => {
setIntValue({
...intValue,
general: {
version: '2.8.0',
url: intValue?.general?.url,
version: '',
},
});
}
Expand All @@ -73,7 +76,7 @@ const VisualizationWidget = (props) => {
});
}
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [intValue]);
}, []);

return (
<FormFieldWrapper {...props}>
Expand Down Expand Up @@ -115,7 +118,9 @@ const VisualizationWidget = (props) => {
/>
</Grid.Column>
<Grid.Column mobile={12} tablet={12} computer={7}>
{(intValue && intValue.general && !intValue.general.url) ||
{(intValue &&
intValue.general &&
(!intValue.general.url || !intValue.general.version)) ||
tableauError ? (
<TableauNotDisplayed />
) : (
Expand Down Expand Up @@ -147,7 +152,9 @@ const VisualizationWidget = (props) => {
</Modal.Actions>
</Modal>
)}
{(intValue && intValue.general && !intValue.general.url) ||
{(intValue &&
intValue.general &&
(!intValue.general.url || !intValue.general.version)) ||
tableauError ? (
<TableauNotDisplayed />
) : (
Expand Down
14 changes: 11 additions & 3 deletions src/Widgets/schema.js
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ const generalSchema = (config) => {
'2.0.3',
].map((version) => [version, `tableau-${version}`]),
],
default: config.settings.tableauVersion || '2.8.0',
default: config.settings.tableauVersion,
},
url: {
title: 'Url',
Expand Down Expand Up @@ -92,7 +92,11 @@ const optionsSchema = {
const urlParametersSchema = {
title: 'Parameter',
fieldsets: [
{ id: 'default', title: 'Default', fields: ['field', 'urlParam'] },
{
id: 'default',
title: 'Default',
fields: ['field', 'urlParam'],
},
],
properties: {
field: {
Expand Down Expand Up @@ -139,7 +143,7 @@ const extraOptionsSchema = (config) => {
{
id: 'default',
title: 'Extra Options Data',
fields: ['urlParameters', 'breakpointUrls'],
fields: ['urlParameters', 'availableFields', 'breakpointUrls'],
},
],

Expand All @@ -150,6 +154,10 @@ const extraOptionsSchema = (config) => {
schema: urlParametersSchema,
description: 'Set a list of url parameters to filter the tableau',
},
availableFields: {
title: 'Available Fields:',
widget: 'url_params_widget',
},
breakpointUrls: {
title: 'Breakpoint urls',
widget: 'object_list',
Expand Down
2 changes: 2 additions & 0 deletions src/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import EmbedTableauView from './Blocks/EmbedEEATableauBlock/View';
import EmbedTableauEdit from './Blocks/EmbedEEATableauBlock/Edit';
import { VisualizationView } from './Views';
import { VisualizationWidget } from './Widgets';
import UrlParamsWidget from './CustomWidgets/UrlParamsWidget';

import tableauStore from './store';

Expand Down Expand Up @@ -72,6 +73,7 @@ const applyConfig = (config) => {

config.views.contentTypesViews.tableau_visualization = VisualizationView;
config.widgets.id.tableau_visualization_data = VisualizationWidget;
config.widgets.widget.url_params_widget = UrlParamsWidget;

return config;
};
Expand Down
16 changes: 16 additions & 0 deletions src/less/tableau.less
Original file line number Diff line number Diff line change
Expand Up @@ -108,4 +108,20 @@
}
}

.availableFieldsContainer {
padding: 0 5px 5px 0;
border-bottom: 1px solid #d9d9d9;
}

.availableFieldsTitle {
font-size: 13px;
font-weight: bold;
color: darkgray;
}

.availableFields {
font-size: 12px;
padding: 0 5px;
}

.loadAddonOverrides();

0 comments on commit 66e510e

Please sign in to comment.