mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
* kinda working * return to selected parents * feature toggle everything * fix toggling of annotations * use Trans instead of Text * kick drone
65 lines
1.9 KiB
TypeScript
65 lines
1.9 KiB
TypeScript
import React, { useState } from 'react';
|
|
|
|
import { NavModelItem } from '@grafana/data';
|
|
import { config, locationService } from '@grafana/runtime';
|
|
import { Page } from 'app/core/components/Page/Page';
|
|
|
|
import { LinkSettingsEdit, LinkSettingsList } from '../LinksSettings';
|
|
import { newLink } from '../LinksSettings/LinkSettingsEdit';
|
|
|
|
import { SettingsPageProps } from './types';
|
|
|
|
export type LinkSettingsMode = 'list' | 'new' | 'edit';
|
|
|
|
export function LinksSettings({ dashboard, sectionNav, editIndex }: SettingsPageProps) {
|
|
const [isNew, setIsNew] = useState<boolean>(false);
|
|
|
|
const onGoBack = () => {
|
|
setIsNew(false);
|
|
locationService.partial({ editIndex: undefined });
|
|
};
|
|
|
|
const onNew = () => {
|
|
dashboard.links = [...dashboard.links, { ...newLink }];
|
|
setIsNew(true);
|
|
locationService.partial({ editIndex: dashboard.links.length - 1 });
|
|
};
|
|
|
|
const onEdit = (idx: number) => {
|
|
setIsNew(false);
|
|
locationService.partial({ editIndex: idx });
|
|
};
|
|
|
|
const isEditing = editIndex !== undefined;
|
|
|
|
let pageNav: NavModelItem | undefined;
|
|
|
|
if (config.featureToggles.dockedMegaMenu) {
|
|
pageNav = sectionNav.node.parentItem;
|
|
}
|
|
|
|
if (isEditing) {
|
|
const title = isNew ? 'New link' : 'Edit link';
|
|
const description = isNew ? 'Create a new link on your dashboard' : 'Edit a specific link of your dashboard';
|
|
pageNav = {
|
|
text: title,
|
|
subTitle: description,
|
|
};
|
|
|
|
if (config.featureToggles.dockedMegaMenu) {
|
|
const parentUrl = sectionNav.node.url;
|
|
pageNav.parentItem = sectionNav.node.parentItem && {
|
|
...sectionNav.node.parentItem,
|
|
url: parentUrl,
|
|
};
|
|
}
|
|
}
|
|
|
|
return (
|
|
<Page navModel={sectionNav} pageNav={pageNav}>
|
|
{!isEditing && <LinkSettingsList dashboard={dashboard} onNew={onNew} onEdit={onEdit} />}
|
|
{isEditing && <LinkSettingsEdit dashboard={dashboard} editLinkIdx={editIndex} onGoBack={onGoBack} />}
|
|
</Page>
|
|
);
|
|
}
|