mirror of
https://github.com/Azure/cosmos-explorer.git
synced 2026-01-23 03:34:16 +00:00
* Initial dev for container copy * remove padding from label * Added Copy Job prerequisites screen * Added hooks to evaluate reader role access * added copyjob pre-requsite screen along with it's validations * Added monitor copy job list screen * added copy job list refresh and reset functionality * remove arm token dependency * fetch account details from account id instead of context * Fix lint & typescript checks * show copyjob screen from portal navigation * adding copy job details screen * remove duplicate code & show sql accounts only * ui fixes for list job page * pending icon * copy job details screen ui * reset .vscode/settings.json * Fixed existing UTs * disabling action buttons until it's in progress * fixed formatting * Adding loader on submit button and show job creation errors in the panel itself * updating disabling action menu item logic * added custom pager * fix lint and ts errors * updating file names and removing comments * remove comments * modularize the arom common code * Adding content and removing tooltip * updating job details screen * updating online copy enabled screen * Adding below changes - Don't show permission screen for same account in offline mode - Don't show identity permissions for same account in online mode - Show error message if selected containers are identical - Update abort signal messages * added feedback code from explorer * Add tooltips and long polling - Added tooltips to permission sections - Implemented long polling for PITR and online copy enabled sections - Long polling automatically stops after 15 minutes - After polling ends, a refresh button will be displayed --------- Co-authored-by: nishthaAhujaa <nishtha17354@iiittd.ac.in>
60 lines
2.2 KiB
TypeScript
60 lines
2.2 KiB
TypeScript
import AddIcon from "../../../../images/Add.svg";
|
|
import FeedbackIcon from "../../../../images/Feedback-Command.svg";
|
|
import RefreshIcon from "../../../../images/refresh-cosmos.svg";
|
|
import { configContext, Platform } from "../../../ConfigContext";
|
|
import { CommandButtonComponentProps } from "../../Controls/CommandButton/CommandButtonComponent";
|
|
import Explorer from "../../Explorer";
|
|
import * as Actions from "../Actions/CopyJobActions";
|
|
import ContainerCopyMessages from "../ContainerCopyMessages";
|
|
import { MonitorCopyJobsRefState } from "../MonitorCopyJobs/MonitorCopyJobRefState";
|
|
import { CopyJobCommandBarBtnType } from "../Types/CopyJobTypes";
|
|
|
|
function getCopyJobBtns(container: Explorer): CopyJobCommandBarBtnType[] {
|
|
const monitorCopyJobsRef = MonitorCopyJobsRefState((state) => state.ref);
|
|
const buttons: CopyJobCommandBarBtnType[] = [
|
|
{
|
|
key: "createCopyJob",
|
|
iconSrc: AddIcon,
|
|
label: ContainerCopyMessages.createCopyJobButtonLabel,
|
|
ariaLabel: ContainerCopyMessages.createCopyJobButtonAriaLabel,
|
|
onClick: Actions.openCreateCopyJobPanel,
|
|
},
|
|
{
|
|
key: "refresh",
|
|
iconSrc: RefreshIcon,
|
|
label: ContainerCopyMessages.refreshButtonLabel,
|
|
ariaLabel: ContainerCopyMessages.refreshButtonAriaLabel,
|
|
onClick: () => monitorCopyJobsRef?.refreshJobList(),
|
|
},
|
|
];
|
|
if (configContext.platform === Platform.Portal) {
|
|
buttons.push({
|
|
key: "feedback",
|
|
iconSrc: FeedbackIcon,
|
|
label: ContainerCopyMessages.feedbackButtonLabel,
|
|
ariaLabel: ContainerCopyMessages.feedbackButtonAriaLabel,
|
|
onClick: () => {
|
|
container.openContainerCopyFeedbackBlade();
|
|
},
|
|
});
|
|
}
|
|
return buttons;
|
|
}
|
|
|
|
function btnMapper(config: CopyJobCommandBarBtnType): CommandButtonComponentProps {
|
|
return {
|
|
iconSrc: config.iconSrc,
|
|
iconAlt: config.label,
|
|
onCommandClick: config.onClick,
|
|
commandButtonLabel: undefined as string | undefined,
|
|
ariaLabel: config.ariaLabel,
|
|
tooltipText: config.label,
|
|
hasPopup: false,
|
|
disabled: config.disabled ?? false,
|
|
};
|
|
}
|
|
|
|
export function getCommandBarButtons(container: Explorer): CommandButtonComponentProps[] {
|
|
return getCopyJobBtns(container).map(btnMapper);
|
|
}
|