mirror of
https://github.com/Azure/cosmos-explorer.git
synced 2026-01-07 19:46:53 +00:00
show default copy job name
This commit is contained in:
@@ -144,3 +144,27 @@ export function isEqual(prevJobs: CopyJobType[], newJobs: CopyJobType[]): boolea
|
|||||||
return prevJob.Status === newJob.Status;
|
return prevJob.Status === newJob.Status;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const truncateLength = 5;
|
||||||
|
const truncateName = (name: string, length: number = truncateLength): string => {
|
||||||
|
return name.length <= length ? name : name.slice(0, length);
|
||||||
|
};
|
||||||
|
|
||||||
|
export function getDefaultJobName(
|
||||||
|
selectedDatabaseAndContainers: {
|
||||||
|
sourceDatabaseName?: string;
|
||||||
|
sourceContainerName?: string;
|
||||||
|
targetDatabaseName?: string;
|
||||||
|
targetContainerName?: string;
|
||||||
|
}[],
|
||||||
|
): string {
|
||||||
|
if (selectedDatabaseAndContainers.length === 1) {
|
||||||
|
const { sourceDatabaseName, sourceContainerName, targetDatabaseName, targetContainerName } =
|
||||||
|
selectedDatabaseAndContainers[0];
|
||||||
|
const timestamp = new Date().getTime().toString();
|
||||||
|
const sourcePart = `${truncateName(sourceDatabaseName)}.${truncateName(sourceContainerName)}`;
|
||||||
|
const targetPart = `${truncateName(targetDatabaseName)}.${truncateName(targetContainerName)}`;
|
||||||
|
return `${sourcePart}_${targetPart}_${timestamp}`;
|
||||||
|
}
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,8 +1,9 @@
|
|||||||
import { DetailsList, DetailsListLayoutMode, Stack, Text, TextField } from "@fluentui/react";
|
import { DetailsList, DetailsListLayoutMode, Stack, Text, TextField } from "@fluentui/react";
|
||||||
import FieldRow from "Explorer/ContainerCopy/CreateCopyJob/Screens/Components/FieldRow";
|
import React, { useEffect } from "react";
|
||||||
import React from "react";
|
|
||||||
import ContainerCopyMessages from "../../../ContainerCopyMessages";
|
import ContainerCopyMessages from "../../../ContainerCopyMessages";
|
||||||
import { useCopyJobContext } from "../../../Context/CopyJobContext";
|
import { useCopyJobContext } from "../../../Context/CopyJobContext";
|
||||||
|
import { getDefaultJobName } from "../../../CopyJobUtils";
|
||||||
|
import FieldRow from "../Components/FieldRow";
|
||||||
import { getPreviewCopyJobDetailsListColumns } from "./Utils/PreviewCopyJobUtils";
|
import { getPreviewCopyJobDetailsListColumns } from "./Utils/PreviewCopyJobUtils";
|
||||||
|
|
||||||
const PreviewCopyJob: React.FC = () => {
|
const PreviewCopyJob: React.FC = () => {
|
||||||
@@ -16,6 +17,11 @@ const PreviewCopyJob: React.FC = () => {
|
|||||||
targetContainerName: copyJobState.target?.containerId,
|
targetContainerName: copyJobState.target?.containerId,
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
onJobNameChange(undefined, getDefaultJobName(selectedDatabaseAndContainers));
|
||||||
|
}, []);
|
||||||
|
|
||||||
const jobName = copyJobState.jobName;
|
const jobName = copyJobState.jobName;
|
||||||
|
|
||||||
const onJobNameChange = (_ev?: React.FormEvent, newValue?: string) => {
|
const onJobNameChange = (_ev?: React.FormEvent, newValue?: string) => {
|
||||||
|
|||||||
@@ -66,7 +66,7 @@ function useCreateCopyJobScreensList(goBack: () => void): Screen[] {
|
|||||||
validations: [
|
validations: [
|
||||||
{
|
{
|
||||||
validate: (state: CopyJobContextState) =>
|
validate: (state: CopyJobContextState) =>
|
||||||
!!(typeof state?.jobName === "string" && state?.jobName && /^[a-zA-Z0-9-.]+$/.test(state?.jobName)),
|
!!(typeof state?.jobName === "string" && state?.jobName && /^[a-zA-Z0-9-._]+$/.test(state?.jobName)),
|
||||||
message: "Please enter a job name to proceed",
|
message: "Please enter a job name to proceed",
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -141,8 +141,9 @@
|
|||||||
|
|
||||||
.jobNameLink {
|
.jobNameLink {
|
||||||
color: @LinkColor;
|
color: @LinkColor;
|
||||||
text-decoration: underline;
|
text-overflow: ellipsis;
|
||||||
cursor: pointer;
|
white-space: nowrap;
|
||||||
|
overflow: hidden;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user