Container Copy Job implementation for SQL accounts (#2241)

* 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>
This commit is contained in:
BChoudhury-ms
2025-11-05 22:54:00 +05:30
committed by GitHub
parent 3718f5a16a
commit 2417da152d
78 changed files with 4152 additions and 36 deletions

View File

@@ -0,0 +1,160 @@
@import "../../../less/Common/Constants.less";
#containerCopyWrapper {
.centerContent {
justify-content: center;
align-items: center;
}
.notFoundContainer {
.noCopyJobsMessage {
font-weight: 600;
margin: 0 auto;
color: @FocusColor;
}
button.createCopyJobButton {
color: @LinkColor;
}
}
}
.createCopyJobScreensContainer {
height: 100%;
padding: 1em 1.5em;
label {
padding: 0;
}
.flex-row {
display: flex;
flex-direction: row;
label.field-label {
font-weight: 600;
}
.flex-fixed-width {
flex: 0 0 auto;
width: 150px;
}
.flex-grow-col {
flex: 1 1 auto;
}
}
.databaseContainerSection {
label.subHeading {
font: inherit;
padding: unset;
font-weight: 600;
}
}
.accordionHeader {
button {
display: flex;
align-items: center;
.accordionHeaderText {
margin-left: 5px;
font-weight: 600;
}
.statusIcon {
margin-left: auto;
}
}
}
.popover-container {
button[disabled] {
cursor: not-allowed;
opacity: 0.8;
}
}
.foreground {
z-index: 10;
background-color: white;
padding: 20px;
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
transform: translate(0%, -9%);
position: absolute;
}
.createCopyJobErrorMessageBar {
margin-bottom: 2em;
}
}
.monitorCopyJobs {
padding: 0;
width: 100%;
max-width: 100%;
margin: 0 auto;
.ms-DetailsList {
width: 100%;
.ms-DetailsHeader {
.ms-DetailsHeader-cell {
padding: @DefaultSpace 20px;
font-weight: 600;
font-size: @DefaultFontSize;
color: @BaseHigh;
background-color: @BaseLow;
border-bottom: @ButtonBorderWidth solid @BaseMedium;
&:hover {
background-color: @BaseMediumLow;
}
}
}
.ms-DetailsRow {
border-bottom: @ButtonBorderWidth solid @BaseMedium;
&:hover {
background-color: @BaseMediumLow;
}
.ms-DetailsRow-cell {
padding: @MediumSpace 20px;
font-size: @DefaultFontSize;
color: @BaseHigh;
min-height: 48px;
display: flex;
align-items: center;
.jobNameLink {
color: @LinkColor;
text-decoration: underline;
cursor: pointer;
}
}
}
}
button[role="button"] {
&.ms-Button--icon {
i.ms-Icon {
font-size: @LargeSpace;
}
}
}
}
.copyJobDetailsContainer {
padding: 1em 0 0 2em;
.ms-DetailsList {
width: 100%;
.ms-DetailsHeader-cellTitle, .ms-DetailsRow-cell {
padding-left: 0;
}
.ms-DetailsRow-cell {
font-size: @DefaultFontSize;
color: @BaseHigh;
}
}
}
.bold {
font-weight: 600;
}
.fullWidth {
width: 100%;
display: flex;
justify-content: center;
}