ff
This commit is contained in:
@@ -464,7 +464,13 @@ public class SolrService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
solrQuery.setRows(limit);
|
solrQuery.setRows(limit);
|
||||||
|
|
||||||
|
// Sort by storyCount if available, otherwise by name
|
||||||
solrQuery.setSort("storyCount", SolrQuery.ORDER.desc);
|
solrQuery.setSort("storyCount", SolrQuery.ORDER.desc);
|
||||||
|
solrQuery.addSort("name", SolrQuery.ORDER.asc);
|
||||||
|
|
||||||
|
// Explicitly disable faceting to avoid range faceting issues
|
||||||
|
solrQuery.setFacet(false);
|
||||||
|
|
||||||
QueryResponse response = solrClient.query(properties.getCores().getAuthors(), solrQuery);
|
QueryResponse response = solrClient.query(properties.getCores().getAuthors(), solrQuery);
|
||||||
|
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ import MinimalLayout from '../../components/library/MinimalLayout';
|
|||||||
import { useLibraryLayout } from '../../hooks/useLibraryLayout';
|
import { useLibraryLayout } from '../../hooks/useLibraryLayout';
|
||||||
|
|
||||||
type ViewMode = 'grid' | 'list';
|
type ViewMode = 'grid' | 'list';
|
||||||
type SortOption = 'createdAt' | 'title' | 'authorName' | 'rating' | 'wordCount' | 'lastRead';
|
type SortOption = 'createdAt' | 'title' | 'authorName' | 'rating' | 'wordCount' | 'lastReadAt';
|
||||||
|
|
||||||
export default function LibraryContent() {
|
export default function LibraryContent() {
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
@@ -29,7 +29,7 @@ export default function LibraryContent() {
|
|||||||
const [searchQuery, setSearchQuery] = useState('');
|
const [searchQuery, setSearchQuery] = useState('');
|
||||||
const [selectedTags, setSelectedTags] = useState<string[]>([]);
|
const [selectedTags, setSelectedTags] = useState<string[]>([]);
|
||||||
const [viewMode, setViewMode] = useState<ViewMode>('list');
|
const [viewMode, setViewMode] = useState<ViewMode>('list');
|
||||||
const [sortOption, setSortOption] = useState<SortOption>('lastRead');
|
const [sortOption, setSortOption] = useState<SortOption>('lastReadAt');
|
||||||
const [sortDirection, setSortDirection] = useState<'asc' | 'desc'>('desc');
|
const [sortDirection, setSortDirection] = useState<'asc' | 'desc'>('desc');
|
||||||
const [page, setPage] = useState(0);
|
const [page, setPage] = useState(0);
|
||||||
const [totalPages, setTotalPages] = useState(1);
|
const [totalPages, setTotalPages] = useState(1);
|
||||||
|
|||||||
@@ -66,7 +66,7 @@ export default function MinimalLayout({
|
|||||||
|
|
||||||
const getSortDisplayText = () => {
|
const getSortDisplayText = () => {
|
||||||
const sortLabels: Record<string, string> = {
|
const sortLabels: Record<string, string> = {
|
||||||
lastRead: 'Last Read',
|
lastReadAt: 'Last Read',
|
||||||
createdAt: 'Date Added',
|
createdAt: 'Date Added',
|
||||||
title: 'Title',
|
title: 'Title',
|
||||||
authorName: 'Author',
|
authorName: 'Author',
|
||||||
|
|||||||
@@ -122,8 +122,8 @@ export default function SidebarLayout({
|
|||||||
}}
|
}}
|
||||||
className="px-2 py-1 border rounded-lg theme-card border-gray-300 dark:border-gray-600 text-xs"
|
className="px-2 py-1 border rounded-lg theme-card border-gray-300 dark:border-gray-600 text-xs"
|
||||||
>
|
>
|
||||||
<option value="lastRead_desc">Last Read ↓</option>
|
<option value="lastReadAt_desc">Last Read ↓</option>
|
||||||
<option value="lastRead_asc">Last Read ↑</option>
|
<option value="lastReadAt_asc">Last Read ↑</option>
|
||||||
<option value="createdAt_desc">Date Added ↓</option>
|
<option value="createdAt_desc">Date Added ↓</option>
|
||||||
<option value="createdAt_asc">Date Added ↑</option>
|
<option value="createdAt_asc">Date Added ↑</option>
|
||||||
<option value="title_asc">Title ↑</option>
|
<option value="title_asc">Title ↑</option>
|
||||||
@@ -226,7 +226,7 @@ export default function SidebarLayout({
|
|||||||
onChange={(e) => onSortChange(e.target.value)}
|
onChange={(e) => onSortChange(e.target.value)}
|
||||||
className="flex-1 px-3 py-2 border rounded-lg theme-card border-gray-300 dark:border-gray-600"
|
className="flex-1 px-3 py-2 border rounded-lg theme-card border-gray-300 dark:border-gray-600"
|
||||||
>
|
>
|
||||||
<option value="lastRead">Last Read</option>
|
<option value="lastReadAt">Last Read</option>
|
||||||
<option value="createdAt">Date Added</option>
|
<option value="createdAt">Date Added</option>
|
||||||
<option value="title">Title</option>
|
<option value="title">Title</option>
|
||||||
<option value="authorName">Author</option>
|
<option value="authorName">Author</option>
|
||||||
|
|||||||
@@ -110,8 +110,8 @@ export default function ToolbarLayout({
|
|||||||
}}
|
}}
|
||||||
className="w-full px-3 py-2 border rounded-lg theme-card border-gray-300 dark:border-gray-600 max-md:text-sm"
|
className="w-full px-3 py-2 border rounded-lg theme-card border-gray-300 dark:border-gray-600 max-md:text-sm"
|
||||||
>
|
>
|
||||||
<option value="lastRead_desc">Sort: Last Read ↓</option>
|
<option value="lastReadAt_desc">Sort: Last Read ↓</option>
|
||||||
<option value="lastRead_asc">Sort: Last Read ↑</option>
|
<option value="lastReadAt_asc">Sort: Last Read ↑</option>
|
||||||
<option value="createdAt_desc">Sort: Date Added ↓</option>
|
<option value="createdAt_desc">Sort: Date Added ↓</option>
|
||||||
<option value="createdAt_asc">Sort: Date Added ↑</option>
|
<option value="createdAt_asc">Sort: Date Added ↑</option>
|
||||||
<option value="title_asc">Sort: Title ↑</option>
|
<option value="title_asc">Sort: Title ↑</option>
|
||||||
|
|||||||
@@ -121,6 +121,9 @@
|
|||||||
<copyField source="seriesName" dest="seriesName_facet"/>
|
<copyField source="seriesName" dest="seriesName_facet"/>
|
||||||
<copyField source="tagNames" dest="tagNames_facet"/>
|
<copyField source="tagNames" dest="tagNames_facet"/>
|
||||||
|
|
||||||
|
<!-- Copy field for lastRead sorting compatibility -->
|
||||||
|
<copyField source="lastReadAt" dest="lastRead"/>
|
||||||
|
|
||||||
<!-- Default Search Field -->
|
<!-- Default Search Field -->
|
||||||
|
|
||||||
<!-- UniqueKey -->
|
<!-- UniqueKey -->
|
||||||
|
|||||||
Reference in New Issue
Block a user