[resumes][chore] add uni years to labels

pull/434/head
peirong.wu 3 years ago
parent 03dc0c8c1b
commit 9834637b9c

@ -35,7 +35,7 @@ export default function ResumePdf({ url }: Props) {
}, [pageWidth]); }, [pageWidth]);
return ( return (
<div id="pdfView"> <div className="w-full" id="pdfView">
<div className="group relative"> <div className="group relative">
<Document <Document
className="flex h-[calc(100vh-16rem)] flex-row justify-center overflow-auto" className="flex h-[calc(100vh-16rem)] flex-row justify-center overflow-auto"
@ -79,17 +79,15 @@ export default function ResumePdf({ url }: Props) {
</div> </div>
</Document> </Document>
</div> </div>
{numPages > 1 && ( <div className="flex justify-center p-4">
<div className="flex justify-center p-4"> <Pagination
<Pagination current={pageNumber}
current={pageNumber} end={numPages}
end={numPages} label="pagination"
label="pagination" start={1}
start={1} onSelect={(page) => setPageNumber(page)}
onSelect={(page) => setPageNumber(page)} />
/> </div>
</div>
)}
</div> </div>
); );
} }

@ -9,6 +9,18 @@ import {
} from '@heroicons/react/20/solid'; } from '@heroicons/react/20/solid';
import { ChatBubbleLeftIcon, StarIcon } from '@heroicons/react/24/outline'; import { ChatBubbleLeftIcon, StarIcon } from '@heroicons/react/24/outline';
import type {
ExperienceFilter,
LocationFilter,
RoleFilter,
} from '~/utils/resumes/resumeFilters';
import {
EXPERIENCES,
getFilterLabel,
LOCATIONS,
ROLES,
} from '~/utils/resumes/resumeFilters';
import type { Resume } from '~/types/resume'; import type { Resume } from '~/types/resume';
type Props = Readonly<{ type Props = Readonly<{
@ -29,14 +41,17 @@ export default function ResumeListItem({ href, resumeInfo }: Props) {
aria-hidden="true" aria-hidden="true"
className="mr-1.5 h-4 w-4 flex-shrink-0" className="mr-1.5 h-4 w-4 flex-shrink-0"
/> />
{resumeInfo.role} {getFilterLabel(ROLES, resumeInfo.role as RoleFilter)}
</div> </div>
<div className="ml-4 flex"> <div className="ml-4 flex">
<AcademicCapIcon <AcademicCapIcon
aria-hidden="true" aria-hidden="true"
className="mr-1.5 h-4 w-4 flex-shrink-0" className="mr-1.5 h-4 w-4 flex-shrink-0"
/> />
{resumeInfo.experience} {getFilterLabel(
EXPERIENCES,
resumeInfo.experience as ExperienceFilter,
)}
</div> </div>
</div> </div>
<div className="mt-4 flex justify-start text-xs text-slate-500"> <div className="mt-4 flex justify-start text-xs text-slate-500">
@ -64,7 +79,9 @@ export default function ResumeListItem({ href, resumeInfo }: Props) {
addSuffix: true, addSuffix: true,
})} by ${resumeInfo.user}`} })} by ${resumeInfo.user}`}
</div> </div>
<div className="mt-2 text-slate-400">{resumeInfo.location}</div> <div className="mt-2 text-slate-400">
{getFilterLabel(LOCATIONS, resumeInfo.location as LocationFilter)}
</div>
</div> </div>
</div> </div>
<ChevronRightIcon className="col-span-1 w-8 self-center justify-self-center text-slate-400" /> <ChevronRightIcon className="col-span-1 w-8 self-center justify-self-center text-slate-400" />

@ -23,12 +23,15 @@ import ResumePdf from '~/components/resumes/ResumePdf';
import ResumeExpandableText from '~/components/resumes/shared/ResumeExpandableText'; import ResumeExpandableText from '~/components/resumes/shared/ResumeExpandableText';
import type { import type {
ExperienceFilter,
FilterOption, FilterOption,
LocationFilter, LocationFilter,
RoleFilter,
} from '~/utils/resumes/resumeFilters'; } from '~/utils/resumes/resumeFilters';
import { import {
BROWSE_TABS_VALUES, BROWSE_TABS_VALUES,
EXPERIENCES, EXPERIENCES,
getFilterLabel,
INITIAL_FILTER_STATE, INITIAL_FILTER_STATE,
LOCATIONS, LOCATIONS,
ROLES, ROLES,
@ -36,10 +39,6 @@ import {
import { trpc } from '~/utils/trpc'; import { trpc } from '~/utils/trpc';
import SubmitResumeForm from './submit'; import SubmitResumeForm from './submit';
import type {
ExperienceFilter,
RoleFilter,
} from '../../utils/resumes/resumeFilters';
export default function ResumeReviewPage() { export default function ResumeReviewPage() {
const ErrorPage = ( const ErrorPage = (
@ -293,7 +292,7 @@ export default function ResumeReviewPage() {
roleLabel: detailsQuery.data?.role, roleLabel: detailsQuery.data?.role,
}) })
}> }>
{detailsQuery.data.role} {getFilterLabel(ROLES, detailsQuery.data.role as RoleFilter)}
</button> </button>
</div> </div>
<div className="flex items-center pt-2 text-sm text-slate-600 xl:pt-1"> <div className="flex items-center pt-2 text-sm text-slate-600 xl:pt-1">
@ -309,7 +308,10 @@ export default function ResumeReviewPage() {
locationLabel: detailsQuery.data?.location, locationLabel: detailsQuery.data?.location,
}) })
}> }>
{detailsQuery.data.location} {getFilterLabel(
LOCATIONS,
detailsQuery.data.location as LocationFilter,
)}
</button> </button>
</div> </div>
<div className="flex items-center pt-2 text-sm text-slate-600 xl:pt-1"> <div className="flex items-center pt-2 text-sm text-slate-600 xl:pt-1">
@ -325,7 +327,10 @@ export default function ResumeReviewPage() {
experienceLabel: detailsQuery.data?.experience, experienceLabel: detailsQuery.data?.experience,
}) })
}> }>
{detailsQuery.data.experience} {getFilterLabel(
EXPERIENCES,
detailsQuery.data.experience as ExperienceFilter,
)}
</button> </button>
</div> </div>
<div className="flex items-center pt-2 text-sm text-slate-600 xl:pt-1"> <div className="flex items-center pt-2 text-sm text-slate-600 xl:pt-1">

@ -27,6 +27,7 @@ import type { Filter, FilterId, Shortcut } from '~/utils/resumes/resumeFilters';
import { import {
BROWSE_TABS_VALUES, BROWSE_TABS_VALUES,
EXPERIENCES, EXPERIENCES,
getFilterLabel,
INITIAL_FILTER_STATE, INITIAL_FILTER_STATE,
isInitialFilterState, isInitialFilterState,
LOCATIONS, LOCATIONS,
@ -557,10 +558,7 @@ export default function ResumeHomePage() {
<div> <div>
<DropdownMenu <DropdownMenu
align="end" align="end"
label={ label={getFilterLabel(SORT_OPTIONS, sortOrder)}>
SORT_OPTIONS.find(({ value }) => value === sortOrder)
?.label
}>
{SORT_OPTIONS.map(({ label, value }) => ( {SORT_OPTIONS.map(({ label, value }) => (
<DropdownMenu.Item <DropdownMenu.Item
key={value} key={value}

@ -51,12 +51,6 @@ export const BROWSE_TABS_VALUES = {
STARRED: 'starred', STARRED: 'starred',
}; };
// Export const SORT_OPTIONS: Record<string, SortOrder> = {
// LATEST: 'latest',
// POPULAR: 'popular',
// TOPCOMMENTS: 'topComments',
// };
export const SORT_OPTIONS: Array<FilterOption<SortOrder>> = [ export const SORT_OPTIONS: Array<FilterOption<SortOrder>> = [
{ label: 'Latest', value: 'latest' }, { label: 'Latest', value: 'latest' },
{ label: 'Popular', value: 'popular' }, { label: 'Popular', value: 'popular' },
@ -149,3 +143,10 @@ export const isInitialFilterState = (filters: FilterState) =>
filters[filter as FilterId].includes(value), filters[filter as FilterId].includes(value),
); );
}); });
export const getFilterLabel = (
filters: Array<
FilterOption<ExperienceFilter | LocationFilter | RoleFilter | SortOrder>
>,
filterValue: ExperienceFilter | LocationFilter | RoleFilter | SortOrder,
) => filters.find(({ value }) => value === filterValue)?.label ?? filterValue;

Loading…
Cancel
Save