Skip to content

Commit

Permalink
RavenDB-21793 Better context for disabled server-wide backup status d…
Browse files Browse the repository at this point in the history
…ropdown
  • Loading branch information
mateuszbartosik authored and ppekrol committed Dec 13, 2023
1 parent 1c5a5a7 commit 6420da2
Show file tree
Hide file tree
Showing 4 changed files with 18 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -324,7 +324,7 @@ export function BackupsPage(props: NonShardedViewProps) {
</HrHeader>

{isAdminAccessOrAbove(db) && (
<div className="mb-1 flex-shrink-0">
<div className="mb-3 flex-shrink-0">
<Button color="primary" title="Backup the database now" onClick={createManualBackup}>
<Icon icon="backup" /> Create a Backup
</Button>
Expand Down Expand Up @@ -357,7 +357,7 @@ export function BackupsPage(props: NonShardedViewProps) {
</span>
</HrHeader>
{canReadWriteDatabase(db) && (
<div className="mb-1">
<div className="mb-3">
<Button
color="primary"
onClick={createNewPeriodicBackupTask}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,10 +29,11 @@ import notificationCenter from "common/notifications/notificationCenter";
import backupNow = require("viewmodels/database/tasks/backupNow");
import app from "durandal/app";
import backupNowPeriodicCommand from "commands/database/tasks/backupNowPeriodicCommand";
import { Badge, Collapse, Input } from "reactstrap";
import { Badge, Collapse, Input, UncontrolledTooltip } from "reactstrap";
import { Icon } from "components/common/Icon";
import { useAppSelector } from "components/store";
import { clusterSelectors } from "components/common/shell/clusterSlice";
import useId from "hooks/useId";

interface PeriodicBackupPanelProps extends BaseOngoingTaskPanelProps<OngoingTaskPeriodicBackupInfo> {
forceReload: () => void;
Expand Down Expand Up @@ -243,10 +244,13 @@ export function PeriodicBackupPanel(props: PeriodicBackupPanelProps) {
const { forCurrentDatabase } = useAppUrls();

const canEdit = isAdminAccessOrAbove(db) && !data.shared.serverWide;
const isServerWide = data.shared.serverWide;
const editUrl = forCurrentDatabase.editPeriodicBackupTask(sourceView, data.shared.taskId)();

const { detailsVisible, toggleDetails, onEdit } = useTasksOperations(editUrl, props);

const statusDropdownId = useId("statusDropdown");

return (
<RichPanel>
<RichPanelHeader>
Expand All @@ -265,11 +269,17 @@ export function PeriodicBackupPanel(props: PeriodicBackupPanelProps) {
<RichPanelActions>
<OngoingTaskResponsibleNode task={data} />
<BackupEncryption encrypted={data.shared.encrypted} />
{isServerWide && (
<UncontrolledTooltip target={statusDropdownId}>
Status can be managed on the Server-Wide Tasks page
</UncontrolledTooltip>
)}
<OngoingTaskStatus
task={data}
canEdit={canEdit}
onTaskOperation={onTaskOperation}
isTogglingState={isTogglingState(data.shared.taskId)}
id={statusDropdownId}
/>

<OngoingTaskActions
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,7 @@ export function OngoingTaskName(props: { task: OngoingTaskInfo; canEdit: boolean
{task.shared.taskName}
</a>
) : (
<span className="text-primary">{task.shared.taskName}</span>
<span className="text-muted">{task.shared.taskName}</span>
)}
</RichPanelName>
);
Expand All @@ -126,12 +126,13 @@ interface OngoingTaskStatusProps {
canEdit: boolean;
onTaskOperation: (type: OngoingTaskOperationConfirmType, taskSharedInfos: OngoingTaskSharedInfo[]) => void;
isTogglingState: boolean;
id?: string;
}

export function OngoingTaskStatus(props: OngoingTaskStatusProps) {
const { task, canEdit, onTaskOperation, isTogglingState } = props;
const { task, canEdit, onTaskOperation, isTogglingState, id } = props;
return (
<UncontrolledDropdown>
<UncontrolledDropdown id={id}>
<DropdownToggle
caret
disabled={!canEdit || isTogglingState}
Expand Down
2 changes: 1 addition & 1 deletion src/Raven.Studio/wwwroot/Content/scss/bs5variables.scss
Original file line number Diff line number Diff line change
Expand Up @@ -493,7 +493,7 @@ $btn-font-weight: $font-weight-normal !default;
$btn-box-shadow: 0px 1px 0px 0px rgba($well-bg, 0.5) !default;
$btn-focus-width: $input-btn-focus-width !default;
$btn-focus-box-shadow: $input-btn-focus-box-shadow !default;
$btn-disabled-opacity: 0.65 !default;
$btn-disabled-opacity: 0.4 !default;
$btn-active-box-shadow: inset 0 3px 5px rgba($black, 0.125) !default;

$btn-link-color: var(--#{$prefix}link-color) !default;
Expand Down

0 comments on commit 6420da2

Please sign in to comment.