import { OPERATOR_LABELS, REQUEST_UPDATE_EVENT_LABELS, TABLE_SERVER_CONFIG } from "../../shared/constants.js"; import { fmtDate, statusLabel } from "../../shared/utils.js"; function renderRequestUpdatesCell(row, role) { const hasServiceRequestUnread = Boolean(row?.has_service_requests_unread); const serviceRequestCount = Number(row?.service_requests_unread_count || 0); const viewerUnreadTotal = Number(row?.viewer_unread_total || 0); const viewerUnreadByEvent = row?.viewer_unread_by_event && typeof row.viewer_unread_by_event === "object" ? row.viewer_unread_by_event : {}; const viewerUnreadLabel = viewerUnreadTotal > 0 ? Object.entries(viewerUnreadByEvent) .map(([eventType, count]) => { const code = String(eventType || "").toUpperCase(); const label = REQUEST_UPDATE_EVENT_LABELS[code] || code.toLowerCase(); return label + ": " + String(count || 0); }) .join(", ") : ""; if (role === "LAWYER") { const has = Boolean(row.lawyer_has_unread_updates); const eventType = String(row.lawyer_unread_event_type || "").toUpperCase(); if (!has && !hasServiceRequestUnread && !viewerUnreadTotal) return нет; return ( {viewerUnreadTotal > 0 ? ( {"Мне: " + String(viewerUnreadTotal)} ) : null} {has ? ( {REQUEST_UPDATE_EVENT_LABELS[eventType] || "обновление"} ) : null} {hasServiceRequestUnread ? ( {"Запросы: " + String(serviceRequestCount || 1)} ) : null} ); } const clientHas = Boolean(row.client_has_unread_updates); const clientType = String(row.client_unread_event_type || "").toUpperCase(); const lawyerHas = Boolean(row.lawyer_has_unread_updates); const lawyerType = String(row.lawyer_unread_event_type || "").toUpperCase(); if (!clientHas && !lawyerHas && !hasServiceRequestUnread && !viewerUnreadTotal) return нет; return ( {viewerUnreadTotal > 0 ? ( {"Мне: " + String(viewerUnreadTotal)} ) : null} {clientHas ? ( {"Клиент: " + (REQUEST_UPDATE_EVENT_LABELS[clientType] || "обновление")} ) : null} {lawyerHas ? ( {"Юрист: " + (REQUEST_UPDATE_EVENT_LABELS[lawyerType] || "обновление")} ) : null} {hasServiceRequestUnread ? ( {"Запросы: " + String(serviceRequestCount || 1)} ) : null} ); } export function RequestsSection({ role, tables, status, getStatus, getFieldDef, getFilterValuePreview, resolveReferenceLabel, onRefresh, onCreate, onOpenFilter, onRemoveFilter, onEditFilter, onSort, onPrev, onNext, onLoadAll, onClaimRequest, onOpenReassign, onOpenRequest, onEditRecord, onDeleteRecord, FilterToolbarComponent, DataTableComponent, TablePagerComponent, StatusLineComponent, IconButtonComponent, }) { const tableState = tables?.requests || { rows: [], filters: [], sort: [] }; const FilterToolbar = FilterToolbarComponent; const DataTable = DataTableComponent; const TablePager = TablePagerComponent; const StatusLine = StatusLineComponent; const IconButton = IconButtonComponent; return ( <>
Серверная фильтрация и просмотр клиентских заявок.