Merge pull request !75 from 何朝晖/develop
This commit is contained in:
@@ -198,7 +198,7 @@ func (s *ProjectService) GetTasks(ctx context.Context, userID uint, projectID ui
|
|||||||
response := make([]model.TaskResponse, len(tasks))
|
response := make([]model.TaskResponse, len(tasks))
|
||||||
for i, t := range tasks {
|
for i, t := range tasks {
|
||||||
response[i] = model.TaskResponse{
|
response[i] = model.TaskResponse{
|
||||||
ID: fmt.Sprintf("%d", t.ID),
|
ID: t.ExternalID,
|
||||||
ProjectID: fmt.Sprintf("%d", t.ProjectID),
|
ProjectID: fmt.Sprintf("%d", t.ProjectID),
|
||||||
Prompt: t.Prompt,
|
Prompt: t.Prompt,
|
||||||
AssetType: t.AssetType,
|
AssetType: t.AssetType,
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { useEffect, useState, useCallback } from 'react'
|
import { useEffect, useState, useCallback } from 'react'
|
||||||
import { useParams } from 'react-router-dom'
|
import { Link, useParams } from 'react-router-dom'
|
||||||
import { getTasks } from '../api/project'
|
import { getTasks } from '../api/project'
|
||||||
import type { Task } from '../api/types'
|
import type { Task } from '../api/types'
|
||||||
import StatusBadge from './StatusBadge'
|
import StatusBadge from './StatusBadge'
|
||||||
@@ -67,9 +67,9 @@ export default function TaskListPanel() {
|
|||||||
</p>
|
</p>
|
||||||
) : (
|
) : (
|
||||||
tasks.map(task => (
|
tasks.map(task => (
|
||||||
<a
|
<Link
|
||||||
key={task.id}
|
key={task.id}
|
||||||
href={task.status === 'completed' ? `/projects/${projectId}/tasks/${task.id}` : undefined}
|
to={task.status === 'completed' ? `/projects/${projectId}/tasks/${task.id}` : '#'}
|
||||||
style={{
|
style={{
|
||||||
display: 'block',
|
display: 'block',
|
||||||
padding: '12px 16px',
|
padding: '12px 16px',
|
||||||
@@ -77,8 +77,12 @@ export default function TaskListPanel() {
|
|||||||
textDecoration: 'none',
|
textDecoration: 'none',
|
||||||
color: 'inherit',
|
color: 'inherit',
|
||||||
cursor: task.status === 'completed' ? 'pointer' : 'default',
|
cursor: task.status === 'completed' ? 'pointer' : 'default',
|
||||||
|
pointerEvents: task.status === 'completed' ? 'auto' : 'none',
|
||||||
transition: 'background 0.15s',
|
transition: 'background 0.15s',
|
||||||
}}
|
}}
|
||||||
|
onClick={e => {
|
||||||
|
if (task.status !== 'completed') e.preventDefault()
|
||||||
|
}}
|
||||||
onMouseEnter={e => {
|
onMouseEnter={e => {
|
||||||
if (task.status === 'completed')
|
if (task.status === 'completed')
|
||||||
(e.currentTarget as HTMLElement).style.background = 'var(--accent-dim)'
|
(e.currentTarget as HTMLElement).style.background = 'var(--accent-dim)'
|
||||||
@@ -115,7 +119,7 @@ export default function TaskListPanel() {
|
|||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
<PipelineStages currentStage={task.stage ?? null} status={task.status} />
|
<PipelineStages currentStage={task.stage ?? null} status={task.status} />
|
||||||
</a>
|
</Link>
|
||||||
))
|
))
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ interface AuthState {
|
|||||||
|
|
||||||
export const useAuthStore = create<AuthState>((set) => ({
|
export const useAuthStore = create<AuthState>((set) => ({
|
||||||
user: null,
|
user: null,
|
||||||
isAuthenticated: false,
|
isAuthenticated: getToken() !== null,
|
||||||
loading: false,
|
loading: false,
|
||||||
error: null,
|
error: null,
|
||||||
|
|
||||||
|
|||||||
@@ -28,6 +28,13 @@ interface TaskState {
|
|||||||
reset: () => void
|
reset: () => void
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const DEFAULT_FORMAT: Record<AssetType, 'spritesheet' | 'individual'> = {
|
||||||
|
sprite: 'spritesheet',
|
||||||
|
background: 'individual',
|
||||||
|
ui: 'individual',
|
||||||
|
animation: 'spritesheet',
|
||||||
|
}
|
||||||
|
|
||||||
const DEFAULT_PARAMS: TaskParams = {
|
const DEFAULT_PARAMS: TaskParams = {
|
||||||
resolution: 1024,
|
resolution: 1024,
|
||||||
format: 'spritesheet',
|
format: 'spritesheet',
|
||||||
@@ -44,7 +51,12 @@ export const useTaskStore = create<TaskState>((set, get) => ({
|
|||||||
|
|
||||||
setPrompt: (text) => set({ prompt: text, optimizedPrompt: null }),
|
setPrompt: (text) => set({ prompt: text, optimizedPrompt: null }),
|
||||||
|
|
||||||
setAssetType: (type) => set({ assetType: type, optimizedPrompt: null }),
|
setAssetType: (type) =>
|
||||||
|
set({
|
||||||
|
assetType: type,
|
||||||
|
params: { ...get().params, format: DEFAULT_FORMAT[type] },
|
||||||
|
optimizedPrompt: null,
|
||||||
|
}),
|
||||||
|
|
||||||
toggleTaskStyle: (key, value) =>
|
toggleTaskStyle: (key, value) =>
|
||||||
set(state => {
|
set(state => {
|
||||||
|
|||||||
Reference in New Issue
Block a user