import { useQePrompts, } from "@/api/qePrompts/hooks"; import { QePrompt } from "@/api/qePrompts/types"; import React, { useState } from 'react'; import { GoStar, GoStarFill, GoTrash } from 'react-icons/go'; import Modal from 'react-modal'; import './QePromptList.scss'; import QePromptModal from './QePromptModal'; Modal.setAppElement('#root'); const QePromptList: React.FC = () => { const { prompts, isLoading, error, createPrompt, updatePrompt, setAsDefaultPrompt, deletePrompt } = useQePrompts(); const [sortField, setSortField] = useState('id'); const [sortDirection, setSortDirection] = useState<'asc' | 'desc'>('asc'); const [selectedPrompt, setSelectedPrompt] = useState(null); const [isModalOpen, setIsModalOpen] = useState(false); const [isEditMode, setIsEditMode] = useState(false); const handleSort = (field: keyof QePrompt | 'created_at') => { const newDirection = sortField === field && sortDirection === 'asc' ? 'desc' : 'asc'; setSortField(field); setSortDirection(newDirection); const sortedPrompts = [...prompts].sort((a, b) => { const aValue = field === 'created_at' ? a.created_at || '' : a[field]; const bValue = field === 'created_at' ? b.created_at || '' : b[field]; return newDirection === 'asc' ? (aValue > bValue ? 1 : -1) : (aValue < bValue ? 1 : -1); }); prompts.splice(0, prompts.length, ...sortedPrompts); }; const openEditModal = (prompt: QePrompt) => { setSelectedPrompt(prompt); setIsEditMode(true); setIsModalOpen(true); }; const openCreateModal = () => { setSelectedPrompt(null); // Ничего не передаем, запрос будет в модалке setIsEditMode(false); setIsModalOpen(true); }; const closeModal = () => { setSelectedPrompt(null); setIsModalOpen(false); }; const handleSave = async (prompt: QePrompt | Omit) => { if (isEditMode && 'id' in prompt) { await updatePrompt(prompt as QePrompt); } else { await createPrompt(prompt as Omit); } }; const handleDelete = async (id: number) => { if (window.confirm('Удаляем версию промпта?')) { await deletePrompt(id); } }; const handleSetDefault = async (id: number) => { await setAsDefaultPrompt(id); }; if (isLoading) return
Loading...
; if (error) return
Error: {error}
; return (

Промпты Query Expansion

handleSort('created_at')}> Промпты
{prompts.map(prompt => (
openEditModal(prompt)}> {prompt.name}
{/*
openEditModal(prompt)}> {prompt.created_at || 'N/A'}
*/}
))}
); }; export default QePromptList;