mirror of
https://gitlab.com/mbugroup/lti-web-client.git
synced 2026-05-24 07:15:44 +00:00
refactor(FE): Restrict edit and delete actions based on recording status
This commit is contained in:
@@ -104,8 +104,19 @@ const RowOptionsMenu = ({
|
|||||||
return recording.approval?.action === 'REJECTED';
|
return recording.approval?.action === 'REJECTED';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const isRecordingEditable = (recording: Recording) => {
|
||||||
|
if (
|
||||||
|
recording.executed_at &&
|
||||||
|
recording.project_flock?.project_flock_category === 'GROWING'
|
||||||
|
) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
};
|
||||||
|
|
||||||
const isApproved = isRecordingApproved(props.row.original);
|
const isApproved = isRecordingApproved(props.row.original);
|
||||||
const isRejected = isRecordingRejected(props.row.original);
|
const isRejected = isRecordingRejected(props.row.original);
|
||||||
|
const isEditable = isRecordingEditable(props.row.original);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className='relative'>
|
<div className='relative'>
|
||||||
@@ -138,18 +149,20 @@ const RowOptionsMenu = ({
|
|||||||
View Details
|
View Details
|
||||||
</Button>
|
</Button>
|
||||||
</RequirePermission>
|
</RequirePermission>
|
||||||
<RequirePermission permissions='lti.production.recording.update'>
|
{isEditable && (
|
||||||
<Button
|
<RequirePermission permissions='lti.production.recording.update'>
|
||||||
href={`/production/recording/detail/edit/?recordingId=${props.row.original.id}`}
|
<Button
|
||||||
variant='ghost'
|
href={`/production/recording/detail/edit/?recordingId=${props.row.original.id}`}
|
||||||
color='none'
|
variant='ghost'
|
||||||
className='p-3 justify-start text-sm font-semibold w-full'
|
color='none'
|
||||||
onClick={closePopover}
|
className='p-3 justify-start text-sm font-semibold w-full'
|
||||||
>
|
onClick={closePopover}
|
||||||
<Icon icon='mdi:pencil-outline' width={20} height={20} />
|
>
|
||||||
Edit
|
<Icon icon='mdi:pencil-outline' width={20} height={20} />
|
||||||
</Button>
|
Edit
|
||||||
</RequirePermission>
|
</Button>
|
||||||
|
</RequirePermission>
|
||||||
|
)}
|
||||||
{!isApproved && !isRejected && (
|
{!isApproved && !isRejected && (
|
||||||
<RequirePermission permissions='lti.production.recording.approve'>
|
<RequirePermission permissions='lti.production.recording.approve'>
|
||||||
<Button
|
<Button
|
||||||
@@ -182,20 +195,22 @@ const RowOptionsMenu = ({
|
|||||||
</Button>
|
</Button>
|
||||||
</RequirePermission>
|
</RequirePermission>
|
||||||
)}
|
)}
|
||||||
<RequirePermission permissions='lti.production.recording.delete'>
|
{isEditable && (
|
||||||
<Button
|
<RequirePermission permissions='lti.production.recording.delete'>
|
||||||
onClick={() => {
|
<Button
|
||||||
deleteClickHandler();
|
onClick={() => {
|
||||||
closePopover();
|
deleteClickHandler();
|
||||||
}}
|
closePopover();
|
||||||
variant='ghost'
|
}}
|
||||||
color='error'
|
variant='ghost'
|
||||||
className='p-3 justify-start text-sm font-semibold w-full focus-visible:text-error-content hover:text-error-content'
|
color='error'
|
||||||
>
|
className='p-3 justify-start text-sm font-semibold w-full focus-visible:text-error-content hover:text-error-content'
|
||||||
<Icon icon='mdi:delete-outline' width={20} height={20} />
|
>
|
||||||
Delete
|
<Icon icon='mdi:delete-outline' width={20} height={20} />
|
||||||
</Button>
|
Delete
|
||||||
</RequirePermission>
|
</Button>
|
||||||
|
</RequirePermission>
|
||||||
|
)}
|
||||||
</div>
|
</div>
|
||||||
</PopoverContent>
|
</PopoverContent>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
+1
@@ -49,6 +49,7 @@ export type BaseRecording = {
|
|||||||
project_flock: ProjectFlock;
|
project_flock: ProjectFlock;
|
||||||
record_datetime: string;
|
record_datetime: string;
|
||||||
day: number;
|
day: number;
|
||||||
|
executed_at: string;
|
||||||
} & ProductionMetrics;
|
} & ProductionMetrics;
|
||||||
|
|
||||||
export type RecordingDepletion = {
|
export type RecordingDepletion = {
|
||||||
|
|||||||
Reference in New Issue
Block a user