mirror of
https://github.com/pacnpal/thrilltrack-explorer.git
synced 2025-12-28 19:46:59 -05:00
Compare commits
1 Commits
edit/edt-2
...
aed16f688a
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
aed16f688a |
@@ -1,4 +1,4 @@
|
|||||||
import { Filter, MessageSquare, FileText, Image, X, ChevronDown, Calendar, Maximize2, Minimize2 } from 'lucide-react';
|
import { Filter, MessageSquare, FileText, Image, X, ChevronDown, Calendar } from 'lucide-react';
|
||||||
import { Label } from '@/components/ui/label';
|
import { Label } from '@/components/ui/label';
|
||||||
import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select';
|
import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select';
|
||||||
import { Button } from '@/components/ui/button';
|
import { Button } from '@/components/ui/button';
|
||||||
@@ -7,7 +7,6 @@ import { Collapsible, CollapsibleContent, CollapsibleTrigger } from '@/component
|
|||||||
import { RefreshButton } from '@/components/ui/refresh-button';
|
import { RefreshButton } from '@/components/ui/refresh-button';
|
||||||
import { QueueSortControls } from './QueueSortControls';
|
import { QueueSortControls } from './QueueSortControls';
|
||||||
import { useFilterPanelState } from '@/hooks/useFilterPanelState';
|
import { useFilterPanelState } from '@/hooks/useFilterPanelState';
|
||||||
import { useDetailedViewState } from '@/hooks/useDetailedViewState';
|
|
||||||
import { FilterDateRangePicker } from '@/components/filters/FilterDateRangePicker';
|
import { FilterDateRangePicker } from '@/components/filters/FilterDateRangePicker';
|
||||||
import type { EntityFilter, StatusFilter, SortConfig, QueueTab, ApprovalDateRangeFilter } from '@/types/moderation';
|
import type { EntityFilter, StatusFilter, SortConfig, QueueTab, ApprovalDateRangeFilter } from '@/types/moderation';
|
||||||
|
|
||||||
@@ -56,7 +55,6 @@ export const QueueFilters = ({
|
|||||||
isRefreshing = false
|
isRefreshing = false
|
||||||
}: QueueFiltersProps) => {
|
}: QueueFiltersProps) => {
|
||||||
const { isCollapsed, toggle } = useFilterPanelState();
|
const { isCollapsed, toggle } = useFilterPanelState();
|
||||||
const { isCollapsed: detailsCollapsed, toggle: toggleDetails } = useDetailedViewState();
|
|
||||||
|
|
||||||
// Count active filters
|
// Count active filters
|
||||||
const activeFilterCount = [
|
const activeFilterCount = [
|
||||||
@@ -78,27 +76,6 @@ export const QueueFilters = ({
|
|||||||
</Badge>
|
</Badge>
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
<div className="flex items-center gap-2">
|
|
||||||
{/* Global toggle for detailed views */}
|
|
||||||
<Button
|
|
||||||
variant="ghost"
|
|
||||||
size="sm"
|
|
||||||
onClick={toggleDetails}
|
|
||||||
className="h-8 gap-2 text-xs text-muted-foreground hover:text-foreground transition-colors"
|
|
||||||
title={detailsCollapsed ? "Expand all detailed views" : "Collapse all detailed views"}
|
|
||||||
>
|
|
||||||
{detailsCollapsed ? (
|
|
||||||
<>
|
|
||||||
<Maximize2 className="h-3.5 w-3.5" />
|
|
||||||
{!isMobile && <span>Expand All</span>}
|
|
||||||
</>
|
|
||||||
) : (
|
|
||||||
<>
|
|
||||||
<Minimize2 className="h-3.5 w-3.5" />
|
|
||||||
{!isMobile && <span>Collapse All</span>}
|
|
||||||
</>
|
|
||||||
)}
|
|
||||||
</Button>
|
|
||||||
{isMobile && (
|
{isMobile && (
|
||||||
<CollapsibleTrigger asChild>
|
<CollapsibleTrigger asChild>
|
||||||
<Button variant="ghost" size="sm" className="h-8 w-8 p-0">
|
<Button variant="ghost" size="sm" className="h-8 w-8 p-0">
|
||||||
@@ -108,7 +85,6 @@ export const QueueFilters = ({
|
|||||||
</CollapsibleTrigger>
|
</CollapsibleTrigger>
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
|
|
||||||
<CollapsibleContent className="space-y-4">
|
<CollapsibleContent className="space-y-4">
|
||||||
<div className={`flex gap-4 flex-1 ${isMobile ? 'flex-col' : 'flex-col sm:flex-row'}`}>
|
<div className={`flex gap-4 flex-1 ${isMobile ? 'flex-col' : 'flex-col sm:flex-row'}`}>
|
||||||
|
|||||||
@@ -42,12 +42,6 @@ export const SubmissionItemsList = memo(function SubmissionItemsList({
|
|||||||
fetchSubmissionItems();
|
fetchSubmissionItems();
|
||||||
}, [submissionId]);
|
}, [submissionId]);
|
||||||
|
|
||||||
// Helper function to count non-null fields in entity data
|
|
||||||
const countFields = (data: any): number => {
|
|
||||||
if (!data || typeof data !== 'object') return 0;
|
|
||||||
return Object.values(data).filter(value => value !== null && value !== undefined).length;
|
|
||||||
};
|
|
||||||
|
|
||||||
const fetchSubmissionItems = async () => {
|
const fetchSubmissionItems = async () => {
|
||||||
try {
|
try {
|
||||||
// Only show skeleton on initial load, show refreshing indicator on refresh
|
// Only show skeleton on initial load, show refreshing indicator on refresh
|
||||||
@@ -197,11 +191,7 @@ export const SubmissionItemsList = memo(function SubmissionItemsList({
|
|||||||
data={entityData as unknown as ParkSubmissionData}
|
data={entityData as unknown as ParkSubmissionData}
|
||||||
actionType={actionType}
|
actionType={actionType}
|
||||||
/>
|
/>
|
||||||
<DetailedViewCollapsible
|
<DetailedViewCollapsible isCollapsed={isCollapsed} onToggle={toggle}>
|
||||||
isCollapsed={isCollapsed}
|
|
||||||
onToggle={toggle}
|
|
||||||
fieldCount={countFields(entityData)}
|
|
||||||
>
|
|
||||||
<SubmissionChangesDisplay
|
<SubmissionChangesDisplay
|
||||||
item={item}
|
item={item}
|
||||||
view="detailed"
|
view="detailed"
|
||||||
@@ -221,11 +211,7 @@ export const SubmissionItemsList = memo(function SubmissionItemsList({
|
|||||||
data={entityData as unknown as RideSubmissionData}
|
data={entityData as unknown as RideSubmissionData}
|
||||||
actionType={actionType}
|
actionType={actionType}
|
||||||
/>
|
/>
|
||||||
<DetailedViewCollapsible
|
<DetailedViewCollapsible isCollapsed={isCollapsed} onToggle={toggle}>
|
||||||
isCollapsed={isCollapsed}
|
|
||||||
onToggle={toggle}
|
|
||||||
fieldCount={countFields(entityData)}
|
|
||||||
>
|
|
||||||
<SubmissionChangesDisplay
|
<SubmissionChangesDisplay
|
||||||
item={item}
|
item={item}
|
||||||
view="detailed"
|
view="detailed"
|
||||||
@@ -245,11 +231,7 @@ export const SubmissionItemsList = memo(function SubmissionItemsList({
|
|||||||
data={entityData as unknown as CompanySubmissionData}
|
data={entityData as unknown as CompanySubmissionData}
|
||||||
actionType={actionType}
|
actionType={actionType}
|
||||||
/>
|
/>
|
||||||
<DetailedViewCollapsible
|
<DetailedViewCollapsible isCollapsed={isCollapsed} onToggle={toggle}>
|
||||||
isCollapsed={isCollapsed}
|
|
||||||
onToggle={toggle}
|
|
||||||
fieldCount={countFields(entityData)}
|
|
||||||
>
|
|
||||||
<SubmissionChangesDisplay
|
<SubmissionChangesDisplay
|
||||||
item={item}
|
item={item}
|
||||||
view="detailed"
|
view="detailed"
|
||||||
@@ -269,11 +251,7 @@ export const SubmissionItemsList = memo(function SubmissionItemsList({
|
|||||||
data={entityData as unknown as RideModelSubmissionData}
|
data={entityData as unknown as RideModelSubmissionData}
|
||||||
actionType={actionType}
|
actionType={actionType}
|
||||||
/>
|
/>
|
||||||
<DetailedViewCollapsible
|
<DetailedViewCollapsible isCollapsed={isCollapsed} onToggle={toggle}>
|
||||||
isCollapsed={isCollapsed}
|
|
||||||
onToggle={toggle}
|
|
||||||
fieldCount={countFields(entityData)}
|
|
||||||
>
|
|
||||||
<SubmissionChangesDisplay
|
<SubmissionChangesDisplay
|
||||||
item={item}
|
item={item}
|
||||||
view="detailed"
|
view="detailed"
|
||||||
@@ -293,11 +271,7 @@ export const SubmissionItemsList = memo(function SubmissionItemsList({
|
|||||||
data={entityData as unknown as TimelineSubmissionData}
|
data={entityData as unknown as TimelineSubmissionData}
|
||||||
actionType={actionType}
|
actionType={actionType}
|
||||||
/>
|
/>
|
||||||
<DetailedViewCollapsible
|
<DetailedViewCollapsible isCollapsed={isCollapsed} onToggle={toggle}>
|
||||||
isCollapsed={isCollapsed}
|
|
||||||
onToggle={toggle}
|
|
||||||
fieldCount={countFields(entityData)}
|
|
||||||
>
|
|
||||||
<SubmissionChangesDisplay
|
<SubmissionChangesDisplay
|
||||||
item={item}
|
item={item}
|
||||||
view="detailed"
|
view="detailed"
|
||||||
|
|||||||
Reference in New Issue
Block a user