Skip to content

Commit

Permalink
feat: add functionality to export dashboard as json from listing page
Browse files Browse the repository at this point in the history
  • Loading branch information
amlannandy committed Dec 4, 2024
1 parent a383c70 commit 2374997
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 1 deletion.
28 changes: 28 additions & 0 deletions frontend/src/container/ListOfDashboard/DashboardsList.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,8 @@ import { AxiosError } from 'axios';
import cx from 'classnames';
import { ENTITY_VERSION_V4 } from 'constants/app';
import ROUTES from 'constants/routes';
import { sanitizeDashboardData } from 'container/NewDashboard/DashboardDescription';
import { downloadObjectAsJson } from 'container/NewDashboard/DashboardDescription/utils';
import { Base64Icons } from 'container/NewDashboard/DashboardSettings/General/utils';
import dayjs from 'dayjs';
import { useGetAllDashboard } from 'hooks/dashboard/useGetAllDashboard';
Expand All @@ -44,6 +46,7 @@ import {
EllipsisVertical,
Expand,
ExternalLink,
FileJson,
Github,
HdmiPort,
LayoutGrid,
Expand Down Expand Up @@ -450,6 +453,23 @@ function DashboardsList(): JSX.Element {
});
};

const handleJsonExport = (event: React.MouseEvent<HTMLElement>): void => {
event.stopPropagation();
event.preventDefault();
const selectedDashboardData = dashboards?.find(
(d) => d.uuid === dashboard.id,
);
if (selectedDashboardData) {
downloadObjectAsJson(
sanitizeDashboardData({
...selectedDashboardData.data,
uuid: selectedDashboardData.uuid,
}),
dashboard.name,
);
}
};

return (
<div className="dashboard-list-item" onClick={onClickHandler}>
<div className="title-with-action">
Expand Down Expand Up @@ -523,6 +543,14 @@ function DashboardsList(): JSX.Element {
>
Copy Link
</Button>
<Button
type="text"
className="action-btn"
icon={<FileJson size={12} />}
onClick={handleJsonExport}
>
Export JSON
</Button>
</section>
<section className="section-2">
<DeleteButton
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ interface DashboardDescriptionProps {
handle: FullScreenHandle;
}

function sanitizeDashboardData(
export function sanitizeDashboardData(
selectedData: DashboardData,
): Omit<DashboardData, 'uuid'> {
if (!selectedData?.variables) {
Expand Down

0 comments on commit 2374997

Please sign in to comment.