import React from 'react'; import { css, cx } from '@emotion/css'; import { Button, ModalsController, CollapsableSection, HorizontalGroup, useStyles } from '@grafana/ui'; import { DecoratedRevisionModel } from '../DashboardSettings/VersionsSettings'; import { RevertDashboardModal } from './RevertDashboardModal'; import { DiffGroup } from './DiffGroup'; import { DiffViewer } from './DiffViewer'; import { jsonDiff } from './utils'; import { GrafanaTheme } from '@grafana/data'; type DiffViewProps = { isNewLatest: boolean; newInfo: DecoratedRevisionModel; baseInfo: DecoratedRevisionModel; diffData: { lhs: any; rhs: any }; }; export const VersionHistoryComparison: React.FC = ({ baseInfo, newInfo, diffData, isNewLatest }) => { const diff = jsonDiff(diffData.lhs, diffData.rhs); const styles = useStyles(getStyles); return (

Version {newInfo.version} updated by {newInfo.createdBy} {newInfo.ageString} -{' '} {newInfo.message}

Version {baseInfo.version} updated by {baseInfo.createdBy} {baseInfo.ageString} -{' '} {baseInfo.message}

{isNewLatest && ( {({ showModal, hideModal }) => ( )} )}
{Object.entries(diff).map(([key, diffs]) => ( ))}
); }; const getStyles = (theme: GrafanaTheme) => ({ spacer: css` margin-bottom: ${theme.spacing.xl}; `, versionInfo: css` color: ${theme.colors.textWeak}; font-size: ${theme.typography.size.sm}; `, noMarginBottom: css` margin-bottom: 0; `, });