From df9961f27d6f8c85ab48d836b8fef537550ceff4 Mon Sep 17 00:00:00 2001 From: Janet Cobb Date: Mon, 5 Aug 2024 10:15:18 -0400 Subject: [PATCH 1/2] Allow sorting learning resources with a priority --- src/hooks/useQuickStarts.ts | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/src/hooks/useQuickStarts.ts b/src/hooks/useQuickStarts.ts index 69e1e03e..fd756c3f 100644 --- a/src/hooks/useQuickStarts.ts +++ b/src/hooks/useQuickStarts.ts @@ -7,6 +7,7 @@ import { filterQuickStarts, } from '@patternfly/quickstarts'; import useChrome from '@redhat-cloud-services/frontend-components/useChrome'; +import { tagsFilterReducer } from '@redhat-cloud-services/frontend-components'; export const API_BASE = '/api/quickstarts/v1'; export const QUICKSTARTS = '/quickstarts'; @@ -17,8 +18,20 @@ export type FavoriteQuickStart = { quickstartName: string; }; -const sortFnc = (q1: QuickStart, q2: QuickStart) => - q1.spec.displayName.localeCompare(q2.spec.displayName); +const DEFAULT_PRIORITY = 1000; + +const makeSortFn = (targetBundle?: string) => (q1: QuickStart, q2: QuickStart) => { + if (targetBundle !== undefined) { + const priority1 = q1.metadata.bundle_priority?.[targetBundle] ?? DEFAULT_PRIORITY; + const priority2 = q2.metadata.bundle_priority?.[targetBundle] ?? DEFAULT_PRIORITY; + + // A lower priority value makes the quickstart appear earlier in the list. + if (priority1 < priority2) return -1; + if (priority1 > priority2) return 1; + } + + return q1.spec.displayName.localeCompare(q2.spec.displayName); +} function isFavorite(quickStart: QuickStart, favorites: FavoriteQuickStart[]) { return !!favorites.find((f) => f.quickstartName === quickStart.metadata.name); @@ -41,7 +54,7 @@ const useQuickStarts = (targetBundle?: string) => { filter?.keyword || '', filter?.status?.statusFilters, allQuickStartStates || {} - ).sort(sortFnc); + ).sort(makeSortFn(targetBundle)); return filteredQuickStarts.reduce<{ bookmarks: QuickStart[]; documentation: QuickStart[]; From 2fd76081989106516ea4c8a0882cf6d2c2d5c7e5 Mon Sep 17 00:00:00 2001 From: Janet Cobb Date: Mon, 5 Aug 2024 10:23:31 -0400 Subject: [PATCH 2/2] Fix style and lint errors --- src/hooks/useQuickStarts.ts | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/src/hooks/useQuickStarts.ts b/src/hooks/useQuickStarts.ts index fd756c3f..b336a42a 100644 --- a/src/hooks/useQuickStarts.ts +++ b/src/hooks/useQuickStarts.ts @@ -7,7 +7,6 @@ import { filterQuickStarts, } from '@patternfly/quickstarts'; import useChrome from '@redhat-cloud-services/frontend-components/useChrome'; -import { tagsFilterReducer } from '@redhat-cloud-services/frontend-components'; export const API_BASE = '/api/quickstarts/v1'; export const QUICKSTARTS = '/quickstarts'; @@ -20,18 +19,21 @@ export type FavoriteQuickStart = { const DEFAULT_PRIORITY = 1000; -const makeSortFn = (targetBundle?: string) => (q1: QuickStart, q2: QuickStart) => { - if (targetBundle !== undefined) { - const priority1 = q1.metadata.bundle_priority?.[targetBundle] ?? DEFAULT_PRIORITY; - const priority2 = q2.metadata.bundle_priority?.[targetBundle] ?? DEFAULT_PRIORITY; - - // A lower priority value makes the quickstart appear earlier in the list. - if (priority1 < priority2) return -1; - if (priority1 > priority2) return 1; - } +const makeSortFn = + (targetBundle?: string) => (q1: QuickStart, q2: QuickStart) => { + if (targetBundle !== undefined) { + const priority1 = + q1.metadata.bundle_priority?.[targetBundle] ?? DEFAULT_PRIORITY; + const priority2 = + q2.metadata.bundle_priority?.[targetBundle] ?? DEFAULT_PRIORITY; + + // A lower priority value makes the quickstart appear earlier in the list. + if (priority1 < priority2) return -1; + if (priority1 > priority2) return 1; + } - return q1.spec.displayName.localeCompare(q2.spec.displayName); -} + return q1.spec.displayName.localeCompare(q2.spec.displayName); + }; function isFavorite(quickStart: QuickStart, favorites: FavoriteQuickStart[]) { return !!favorites.find((f) => f.quickstartName === quickStart.metadata.name);