import React, { useState } from 'react'; import { Card, Typography, Tag, Button, Modal, Row, Col, Space } from 'antd'; import { EyeOutlined, DeleteOutlined, CheckOutlined } from '@ant-design/icons'; import dayjs from 'dayjs'; const { Text, Title } = Typography; const CustomSparepartCard = ({ sparepart, isSelected = false, isReadOnly = false, showPreview = true, showDelete = false, onPreview, onDelete, onCardClick, loading = false, size = 'small', style = {}, }) => { const [previewModalVisible, setPreviewModalVisible] = useState(false); const getImageSrc = () => { if (sparepart.sparepart_foto) { if (sparepart.sparepart_foto.startsWith('http')) { return sparepart.sparepart_foto; } else { const fileName = sparepart.sparepart_foto.split('/').pop(); if (fileName === 'defaultSparepartImg.jpg') { return `/assets/defaultSparepartImg.jpg`; } else { const token = localStorage.getItem('token'); const baseURL = import.meta.env.VITE_API_SERVER || ''; return `${baseURL}/file-uploads/images/${encodeURIComponent(fileName)}${token ? `?token=${encodeURIComponent(token)}` : ''}`; } } } return 'https://via.placeholder.com/150'; }; const handlePreview = () => { if (onPreview) { onPreview(sparepart); } else { setPreviewModalVisible(true); } }; const truncateText = (text, maxLength = 15) => { if (!text) return 'Unnamed'; return text.length > maxLength ? `${text.substring(0, maxLength)}...` : text; }; const handleCardClick = () => { if (!isReadOnly && onCardClick) { onCardClick(sparepart); } }; const getCardActions = () => { const actions = []; if (showPreview) { actions.push( ]} width={800} centered styles={{ body: { padding: '24px' } }} >
{sparepart.sparepart_name { e.target.src = 'https://via.placeholder.com/220x220/d9d9d9/666666?text=No+Image'; }} />
{sparepart.sparepart_item_type && (
{sparepart.sparepart_item_type}
)}
Stock Status: {sparepart.sparepart_stok || 'Not Available'}
Quantity: {sparepart.sparepart_qty || 0} {sparepart.sparepart_unit || ''}
{sparepart.sparepart_name || 'Unnamed'}
Code
{sparepart.sparepart_code || 'N/A'}
Brand
{sparepart.sparepart_merk || '-'}
Unit
{sparepart.sparepart_unit || '-'}
{sparepart.sparepart_model && (
Model
{sparepart.sparepart_model}
)} {sparepart.sparepart_description && (
Description
{sparepart.sparepart_description}
)}
{sparepart.created_at && (
Created
{dayjs(sparepart.created_at).format('DD MMM YYYY, HH:mm')}
Last Updated
{dayjs(sparepart.updated_at).format('DD MMM YYYY, HH:mm')}
)}
); }; export default CustomSparepartCard;