'use client' import { useState } from 'react' import Link from 'next/link' export interface DisplayRow { key: string responseId: string submissionNum: number isFirstInGroup: boolean date: string code: string prompt: string rendered: string | null zone: string sector: string } export function ResponsesTable({ rows, surveyId, page, }: { rows: DisplayRow[] surveyId?: string page: number }) { const [expanded, setExpanded] = useState>(new Set()) function toggle(submissionNum: number) { setExpanded((prev) => { const next = new Set(prev) if (next.has(submissionNum)) next.delete(submissionNum) else next.add(submissionNum) return next }) } function detailHref(responseId: string): string { const params = new URLSearchParams() if (surveyId) params.set('survey_id', surveyId) params.set('page', String(page)) return `/admin/responses/${responseId}?${params.toString()}` } return ( {rows .filter((row) => row.isFirstInGroup || expanded.has(row.submissionNum)) .map((row) => { const groupClass = row.submissionNum % 2 === 0 ? 'admin-group-even' : 'admin-group-odd' const isExpanded = expanded.has(row.submissionNum) const trClass = row.isFirstInGroup ? `${groupClass} admin-group-start admin-row-toggle` : groupClass return ( de abajo. onClick={row.isFirstInGroup ? () => toggle(row.submissionNum) : undefined} > ) })}
# Fecha Código Pregunta Valor Departamento Sector Ver
{row.isFirstInGroup ? ( ) : ( row.submissionNum )} {row.date} {row.code} {row.prompt} {row.rendered === null ? ( sin dato ) : ( row.rendered )} {row.zone} {row.sector} e.stopPropagation()}> {row.isFirstInGroup && ( Ver )}
) }