Skip to content

Commit b900c41

Browse files
tsibleyvictorlin
authored andcommitted
static-site[list-resources]: Enable customization of sorting by "groupName"
I'll be using this shortly to statically sort one set of resource groups after another.
1 parent 22bf7fb commit b900c41

File tree

5 files changed

+11
-2
lines changed

5 files changed

+11
-2
lines changed

static-site/app/groups/[group]/page.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,7 @@ export default function IndividualGroupPage({
123123
return [{
124124
groupName: group,
125125
groupDisplayName: group,
126+
sortingGroupName: group,
126127
resources,
127128
nResources: resources.length,
128129
nVersions: undefined,

static-site/app/groups/available.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,7 @@ export default function Available(): React.ReactElement {
9999
return {
100100
groupName,
101101
groupDisplayName: groupName,
102+
sortingGroupName: groupName,
102103
groupUrl: `/groups/${groupName}`,
103104
groupUrlTooltip: `Click to view the page for ${groupName}`,
104105
resources: filteredResources,

static-site/components/list-resources/listResourcesApi.tsx

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ export async function listResourcesAPI(
3434
versioned,
3535
groupNameBuilder = (name: string) => name.split("/")[0]!, // eslint-disable-line @typescript-eslint/no-non-null-assertion
3636
groupDisplayNames,
37+
groupSortableName,
3738
groupUrl,
3839
groupUrlTooltip
3940
}: {
@@ -43,6 +44,7 @@ export async function listResourcesAPI(
4344
versioned: boolean,
4445
groupNameBuilder?: (name: string) => string,
4546
groupDisplayNames?: Record<string, string>,
47+
groupSortableName?: (group: Group) => string,
4648
groupUrl?: (groupName: string) => string,
4749
groupUrlTooltip?: (groupName: string) => string
4850
}
@@ -66,6 +68,9 @@ export async function listResourcesAPI(
6668
if (groupDisplayNames && groupName in groupDisplayNames) {
6769
group.groupDisplayName = groupDisplayNames[groupName];
6870
}
71+
if (groupSortableName) {
72+
group.sortingGroupName = groupSortableName(group);
73+
}
6974
if (groupUrl) {
7075
group.groupUrl = groupUrl(groupName);
7176
}
@@ -94,6 +99,7 @@ function resourceGroup(groupName: string, resources: Resource[]): Group {
9499

95100
const groupInfo: Group = {
96101
groupName,
102+
sortingGroupName: groupName,
97103
groupImgSrc: nextstrainLogoSmall.src,
98104
groupImgAlt: "nextstrain logo",
99105
resources,

static-site/components/list-resources/types.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ export type SortMethod = "lastUpdated" | "alphabetical";
1010

1111
export type Group = {
1212
groupName: string;
13+
sortingGroupName: string;
1314
groupImgSrc?: string;
1415
groupImgAlt?: string;
1516
nResources: number;

static-site/components/list-resources/use-sort-and-filter.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -96,8 +96,8 @@ export default function useSortAndFilter(
9696
const groups = originalData;
9797
const _sortGroups = (groupA: Group, groupB: Group) =>
9898
_lexicographicSort(
99-
groupA.groupName.toLowerCase(),
100-
groupB.groupName.toLowerCase(),
99+
groupA.sortingGroupName.toLowerCase(),
100+
groupB.sortingGroupName.toLowerCase(),
101101
);
102102
const _sortResources = (a: Resource, b: Resource) =>
103103
_lexicographicSort(a.sortingName, b.sortingName);

0 commit comments

Comments
 (0)