From 8bec74adec6af82afa12b66f264953c47d85415e Mon Sep 17 00:00:00 2001 From: HendrikThePendric Date: Mon, 23 Sep 2024 10:18:36 +0200 Subject: [PATCH] chore: remove logic for differentiating between single value and others --- src/components/ChartProvider.js | 9 +-- src/components/DownloadMenu/useDownload.js | 73 ++++--------------- src/components/Visualization/Visualization.js | 1 - .../VisualizationPlugin/ChartPlugin.js | 5 +- 4 files changed, 17 insertions(+), 71 deletions(-) diff --git a/src/components/ChartProvider.js b/src/components/ChartProvider.js index b3c440c319..da11dc9700 100644 --- a/src/components/ChartProvider.js +++ b/src/components/ChartProvider.js @@ -8,7 +8,6 @@ const throwIfNotInitialized = () => { export const ChartContext = createContext({ getChart: throwIfNotInitialized, setChart: throwIfNotInitialized, - isHighchartsChartInstance: throwIfNotInitialized, }) export const useChartContext = () => useContext(ChartContext) @@ -16,18 +15,12 @@ export const useChartContext = () => useContext(ChartContext) export const ChartProvider = ({ children }) => { const chartRef = useRef(null) const getChart = useCallback(() => chartRef.current, []) - const isHighchartsChartInstance = useCallback( - () => chartRef.current && typeof chartRef.current !== 'string', - [] - ) const setChart = useCallback((chart = null) => { chartRef.current = chart }, []) return ( - + {children} ) diff --git a/src/components/DownloadMenu/useDownload.js b/src/components/DownloadMenu/useDownload.js index c444177634..34e289f56b 100644 --- a/src/components/DownloadMenu/useDownload.js +++ b/src/components/DownloadMenu/useDownload.js @@ -1,5 +1,5 @@ import { Analytics, VIS_TYPE_OUTLIER_TABLE } from '@dhis2/analytics' -import { useConfig, useDataEngine, useDataMutation } from '@dhis2/app-runtime' +import { useConfig, useDataEngine } from '@dhis2/app-runtime' import { useCallback } from 'react' import { useSelector } from 'react-redux' import { getAnalyticsRequestForOutlierTable } from '../../api/analytics.js' @@ -22,18 +22,6 @@ import { FILE_FORMAT_XLS, } from './constants.js' -const downloadPngMutation = { - resource: 'svg.png', - type: 'create', - data: ({ formData }) => formData, -} - -const downloadPdfMutation = { - resource: 'svg.pdf', - type: 'create', - data: ({ formData }) => formData, -} - const addCommonParameters = (req, visualization, options) => { req = req .withSkipRounding(visualization.skipRounding) @@ -66,22 +54,9 @@ const useDownload = (relativePeriodDate) => { const { baseUrl } = useConfig() const { dbLocale } = useUserSettings() const dataEngine = useDataEngine() - const { getChart, isHighchartsChartInstance } = useChartContext() + const { getChart } = useChartContext() const analyticsEngine = Analytics.getAnalytics(dataEngine) - const openDownloadedFileInBlankTab = useCallback((blob) => { - const url = URL.createObjectURL(blob) - window.open(url, '_blank') - }, []) - - const [getPng] = useDataMutation(downloadPngMutation, { - onComplete: openDownloadedFileInBlankTab, - }) - - const [getPdf] = useDataMutation(downloadPdfMutation, { - onComplete: openDownloadedFileInBlankTab, - }) - const doDownloadImage = useCallback( ({ format }) => { const chart = getChart() @@ -92,40 +67,18 @@ const useDownload = (relativePeriodDate) => { const isPng = format === FILE_FORMAT_PNG - if (isHighchartsChartInstance()) { - chart.exportChartLocal({ - sourceHeight: 768, - sourceWidth: 1024, - scale: 1, - fallbackToExportServer: false, - filename: visualization.name, - showExportInProgress: true, - type: isPng ? 'image/png' : 'application/pdf', - pdfFont: getNotoFontVariantsForLocale(dbLocale), - }) - } else { - /* Single value visualizations are not produced via - * Highcharts and they still need to be exported using - * the legacy conversion endpoints */ - const formData = { - filename: visualization.name, - } - - if (chart) { - formData.svg = chart - } - - isPng ? getPng({ formData }) : getPdf({ formData }) - } + chart.exportChartLocal({ + sourceHeight: 768, + sourceWidth: 1024, + scale: 1, + fallbackToExportServer: false, + filename: visualization.name, + showExportInProgress: true, + type: isPng ? 'image/png' : 'application/pdf', + pdfFont: getNotoFontVariantsForLocale(dbLocale), + }) }, - [ - dbLocale, - getChart, - getPdf, - getPng, - visualization, - isHighchartsChartInstance, - ] + [dbLocale, getChart, visualization] ) const doDownloadData = useCallback( diff --git a/src/components/Visualization/Visualization.js b/src/components/Visualization/Visualization.js index 31ac541f8a..8508ccd1ec 100644 --- a/src/components/Visualization/Visualization.js +++ b/src/components/Visualization/Visualization.js @@ -273,7 +273,6 @@ UnconnectedVisualization.contextType = ChartContext UnconnectedVisualization.contextTypes = { getChart: PropTypes.func, setChart: PropTypes.func, - isHighchartsChartInstance: PropTypes.func, } const mapStateToProps = (state) => ({ diff --git a/src/components/VisualizationPlugin/ChartPlugin.js b/src/components/VisualizationPlugin/ChartPlugin.js index 5644d0d1d2..b071ac2498 100644 --- a/src/components/VisualizationPlugin/ChartPlugin.js +++ b/src/components/VisualizationPlugin/ChartPlugin.js @@ -1,4 +1,4 @@ -import { isSingleValue, createVisualization } from '@dhis2/analytics' +import { createVisualization } from '@dhis2/analytics' import PropTypes from 'prop-types' import React, { useRef, useCallback, useEffect } from 'react' @@ -31,8 +31,9 @@ const ChartPlugin = ({ }, undefined, undefined, - isSingleValue(visualization.type) ? 'dhis' : 'highcharts' // output format + 'highcharts' // output format ) + console.log('visualizationConfig', visualizationConfig) onChartGenerated(visualizationConfig.visualization) },