diff options
author | Valerij Fredriksen <valerijf@yahooinc.com> | 2022-08-12 16:02:43 +0200 |
---|---|---|
committer | Valerij Fredriksen <valerijf@yahooinc.com> | 2022-08-12 16:08:10 +0200 |
commit | 0ffba6ea05ed7ef60234ab7f8c5863057c18b45b (patch) | |
tree | 4b7cc71dc3d39529420b7758739ca7bb25af6b0a /client/js | |
parent | fddb5fff5fecf4265177ca380f3316f2397e9d2f (diff) |
Show notification error if format to jeagar fails
Diffstat (limited to 'client/js')
3 files changed, 33 insertions, 21 deletions
diff --git a/client/js/app/src/app/assets/index.js b/client/js/app/src/app/assets/index.js index a62869fa71b..bf132dd86a7 100644 --- a/client/js/app/src/app/assets/index.js +++ b/client/js/app/src/app/assets/index.js @@ -1,2 +1 @@ export { default as VespaLogo } from 'app/assets/img/vespa-logo.svg'; -export { default as VespaIcon } from 'app/assets/img/vespa-icon.svg'; diff --git a/client/js/app/src/app/pages/querybuilder/context/query-builder-provider.jsx b/client/js/app/src/app/pages/querybuilder/context/query-builder-provider.jsx index cfe39aaf5ee..622641e8cb6 100644 --- a/client/js/app/src/app/pages/querybuilder/context/query-builder-provider.jsx +++ b/client/js/app/src/app/pages/querybuilder/context/query-builder-provider.jsx @@ -109,7 +109,6 @@ function preReducer(state, { action, data }) { const children = jsonToInputs(JSON.parse(data)); return { ...state, query: { ...root, children } }; } catch (error) { - alert(`Failed to parse query: ${error}`); // TODO: Change to toast return state; } } diff --git a/client/js/app/src/app/pages/querybuilder/query-response/download-jeager.jsx b/client/js/app/src/app/pages/querybuilder/query-response/download-jeager.jsx index 8c60c5b058c..4130172a329 100644 --- a/client/js/app/src/app/pages/querybuilder/query-response/download-jeager.jsx +++ b/client/js/app/src/app/pages/querybuilder/query-response/download-jeager.jsx @@ -1,32 +1,45 @@ import { Button } from '@mantine/core'; import React from 'react'; +import { errorMessage } from 'app/libs/notification'; import { Icon } from 'app/components'; import transform from 'app/pages/querybuilder/TransformVespaTrace'; +// copied from safakeskin´s answer on SO, link: https://stackoverflow.com/questions/55613438/reactwrite-to-json-file-or-export-download-no-server +function downloadFile(filename, blob) { + const href = URL.createObjectURL(blob); + + // create "a" HTML element with href to file + const link = document.createElement('a'); + link.href = href; + link.download = filename; + document.body.appendChild(link); + link.click(); + + // clean up "a" element & remove ObjectURL + document.body.removeChild(link); + URL.revokeObjectURL(href); +} + export function DownloadJeager({ response, ...props }) { const handleClick = () => { - let content; try { - content = JSON.stringify(transform(JSON.parse(response), null, 4)); + const json = JSON.parse(response); + + try { + const content = JSON.stringify(transform(json), null, 4); + downloadFile( + 'vespa-response.json', + new Blob([content], { type: 'application/json' }) + ); + } catch (error) { + errorMessage( + 'Request must be made with tracelevel ≥ 4', + 'Failed to transform response to Jaeger format' + ); + } } catch (error) { - alert(`Failed to transform response to Jaeger format: ${error}`); // TODO: Change to toast - return; + errorMessage(error.message); } - - // copied from safakeskin´s answer on SO, link: https://stackoverflow.com/questions/55613438/reactwrite-to-json-file-or-export-download-no-server - const blob = new Blob([content], { type: 'application/json' }); - const href = URL.createObjectURL(blob); - - // create "a" HTML element with href to file - const link = document.createElement('a'); - link.href = href; - link.download = 'vespa-response.json'; - document.body.appendChild(link); - link.click(); - - // clean up "a" element & remove ObjectURL - document.body.removeChild(link); - URL.revokeObjectURL(href); }; return ( @@ -34,6 +47,7 @@ export function DownloadJeager({ response, ...props }) { {...props} leftIcon={<Icon name="download" />} onClick={handleClick} + disabled={!(response?.length > 0)} > Jaeger Format </Button> |