Process 1 build 0803262038
This commit is contained in:
@@ -28,6 +28,18 @@ type PortalItem = {
|
||||
updated_at: string
|
||||
last_activity_at: string
|
||||
permissions?: PortalPermissions
|
||||
workflow?: {
|
||||
request_status?: string
|
||||
media_status?: string
|
||||
stage_label?: string
|
||||
is_terminal?: boolean
|
||||
}
|
||||
issue?: {
|
||||
issue_type?: string
|
||||
related_item_id?: number | null
|
||||
is_resolved?: boolean
|
||||
resolved_at?: string | null
|
||||
}
|
||||
}
|
||||
|
||||
type PortalComment = {
|
||||
@@ -68,10 +80,31 @@ const STATUS_OPTIONS = [
|
||||
{ value: 'in_progress', label: 'In progress' },
|
||||
{ value: 'blocked', label: 'Blocked' },
|
||||
{ value: 'done', label: 'Done' },
|
||||
{ value: 'pending', label: 'Pending approval' },
|
||||
{ value: 'approved', label: 'Approved' },
|
||||
{ value: 'processing', label: 'Processing' },
|
||||
{ value: 'partially_available', label: 'Partially available' },
|
||||
{ value: 'available', label: 'Available' },
|
||||
{ value: 'failed', label: 'Failed' },
|
||||
{ value: 'declined', label: 'Declined' },
|
||||
{ value: 'closed', label: 'Closed' },
|
||||
] as const
|
||||
|
||||
const REQUEST_STATUS_OPTIONS = [
|
||||
{ value: 'pending', label: 'Pending approval' },
|
||||
{ value: 'approved', label: 'Approved' },
|
||||
{ value: 'declined', label: 'Declined' },
|
||||
] as const
|
||||
|
||||
const MEDIA_STATUS_OPTIONS = [
|
||||
{ value: 'pending', label: 'Pending' },
|
||||
{ value: 'processing', label: 'Processing' },
|
||||
{ value: 'partially_available', label: 'Partially available' },
|
||||
{ value: 'available', label: 'Available' },
|
||||
{ value: 'failed', label: 'Failed' },
|
||||
{ value: 'unknown', label: 'Unknown' },
|
||||
] as const
|
||||
|
||||
const PRIORITY_OPTIONS = [
|
||||
{ value: 'low', label: 'Low' },
|
||||
{ value: 'normal', label: 'Normal' },
|
||||
@@ -135,6 +168,8 @@ export default function PortalPage() {
|
||||
const [editYear, setEditYear] = useState('')
|
||||
const [editExternalRef, setEditExternalRef] = useState('')
|
||||
const [editStatus, setEditStatus] = useState('new')
|
||||
const [editRequestStatus, setEditRequestStatus] = useState('pending')
|
||||
const [editMediaStatus, setEditMediaStatus] = useState('pending')
|
||||
const [editPriority, setEditPriority] = useState('normal')
|
||||
const [editAssignee, setEditAssignee] = useState('')
|
||||
|
||||
@@ -312,6 +347,8 @@ export default function PortalPage() {
|
||||
setEditYear(selectedItem.year == null ? '' : String(selectedItem.year))
|
||||
setEditExternalRef(selectedItem.external_ref ?? '')
|
||||
setEditStatus(selectedItem.status ?? 'new')
|
||||
setEditRequestStatus(selectedItem.workflow?.request_status ?? 'pending')
|
||||
setEditMediaStatus(selectedItem.workflow?.media_status ?? 'pending')
|
||||
setEditPriority(selectedItem.priority ?? 'normal')
|
||||
setEditAssignee(selectedItem.assignee_username ?? '')
|
||||
}, [selectedItem])
|
||||
@@ -382,7 +419,12 @@ export default function PortalPage() {
|
||||
external_ref: editExternalRef || null,
|
||||
}
|
||||
if (selectedItem.permissions?.can_moderate) {
|
||||
payload.status = editStatus
|
||||
if (selectedItem.kind === 'request') {
|
||||
payload.request_status = editRequestStatus
|
||||
payload.media_status = editMediaStatus
|
||||
} else {
|
||||
payload.status = editStatus
|
||||
}
|
||||
payload.priority = editPriority
|
||||
payload.assignee_username = editAssignee || null
|
||||
}
|
||||
@@ -661,7 +703,12 @@ export default function PortalPage() {
|
||||
<p>{item.description}</p>
|
||||
<div className="portal-item-row-meta">
|
||||
<span>#{item.id}</span>
|
||||
<span>Status: {item.status}</span>
|
||||
<span>
|
||||
Status:{' '}
|
||||
{item.kind === 'request'
|
||||
? item.workflow?.stage_label ?? item.status
|
||||
: item.status}
|
||||
</span>
|
||||
<span>By: {item.created_by_username}</span>
|
||||
<span>Updated: {formatDate(item.last_activity_at)}</span>
|
||||
</div>
|
||||
@@ -687,6 +734,16 @@ export default function PortalPage() {
|
||||
<p className="lede">
|
||||
Created by {selectedItem.created_by_username} on {formatDate(selectedItem.created_at)}
|
||||
</p>
|
||||
{selectedItem.kind === 'request' && (
|
||||
<p className="lede">
|
||||
Pipeline:{' '}
|
||||
<strong>
|
||||
{selectedItem.workflow?.request_status ?? 'pending'} /{' '}
|
||||
{selectedItem.workflow?.media_status ?? 'pending'}
|
||||
</strong>{' '}
|
||||
({selectedItem.workflow?.stage_label ?? 'Pending'})
|
||||
</p>
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -741,16 +798,47 @@ export default function PortalPage() {
|
||||
</label>
|
||||
{selectedItem.permissions?.can_moderate && (
|
||||
<>
|
||||
<label>
|
||||
<span>Status</span>
|
||||
<select value={editStatus} onChange={(event) => setEditStatus(event.target.value)}>
|
||||
{STATUS_OPTIONS.map((option) => (
|
||||
<option key={option.value} value={option.value}>
|
||||
{option.label}
|
||||
</option>
|
||||
))}
|
||||
</select>
|
||||
</label>
|
||||
{selectedItem.kind === 'request' ? (
|
||||
<>
|
||||
<label>
|
||||
<span>Request status</span>
|
||||
<select
|
||||
value={editRequestStatus}
|
||||
onChange={(event) => setEditRequestStatus(event.target.value)}
|
||||
>
|
||||
{REQUEST_STATUS_OPTIONS.map((option) => (
|
||||
<option key={option.value} value={option.value}>
|
||||
{option.label}
|
||||
</option>
|
||||
))}
|
||||
</select>
|
||||
</label>
|
||||
<label>
|
||||
<span>Media status</span>
|
||||
<select
|
||||
value={editMediaStatus}
|
||||
onChange={(event) => setEditMediaStatus(event.target.value)}
|
||||
>
|
||||
{MEDIA_STATUS_OPTIONS.map((option) => (
|
||||
<option key={option.value} value={option.value}>
|
||||
{option.label}
|
||||
</option>
|
||||
))}
|
||||
</select>
|
||||
</label>
|
||||
</>
|
||||
) : (
|
||||
<label>
|
||||
<span>Status</span>
|
||||
<select value={editStatus} onChange={(event) => setEditStatus(event.target.value)}>
|
||||
{STATUS_OPTIONS.map((option) => (
|
||||
<option key={option.value} value={option.value}>
|
||||
{option.label}
|
||||
</option>
|
||||
))}
|
||||
</select>
|
||||
</label>
|
||||
)}
|
||||
<label>
|
||||
<span>Priority</span>
|
||||
<select
|
||||
|
||||
4
frontend/package-lock.json
generated
4
frontend/package-lock.json
generated
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "magent-frontend",
|
||||
"version": "0703261729",
|
||||
"version": "0803262038",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "magent-frontend",
|
||||
"version": "0703261729",
|
||||
"version": "0803262038",
|
||||
"dependencies": {
|
||||
"next": "16.1.6",
|
||||
"react": "19.2.4",
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "magent-frontend",
|
||||
"private": true,
|
||||
"version": "0703261729",
|
||||
"version": "0803262038",
|
||||
"scripts": {
|
||||
"dev": "next dev",
|
||||
"build": "next build",
|
||||
|
||||
Reference in New Issue
Block a user