Filter jobs in Jobs view
This commit is contained in:
parent
71d27f5ace
commit
e0992e77b2
@ -48,6 +48,7 @@ import * as Types from 'types/types'; // Adjust the import path as necessary
|
|||||||
import { useAuth } from 'hooks/AuthContext';
|
import { useAuth } from 'hooks/AuthContext';
|
||||||
import { StyledMarkdown } from 'components/StyledMarkdown';
|
import { StyledMarkdown } from 'components/StyledMarkdown';
|
||||||
import { Scrollable } from 'components/Scrollable';
|
import { Scrollable } from 'components/Scrollable';
|
||||||
|
import { useLocation } from 'react-router-dom';
|
||||||
|
|
||||||
// async searchJobs(query: string): Promise<Types.PaginatedResponse> {
|
// async searchJobs(query: string): Promise<Types.PaginatedResponse> {
|
||||||
// const results = await this.getJobs();
|
// const results = await this.getJobs();
|
||||||
@ -67,6 +68,7 @@ type SortField = 'updatedAt' | 'createdAt' | 'company' | 'title';
|
|||||||
type SortOrder = 'asc' | 'desc';
|
type SortOrder = 'asc' | 'desc';
|
||||||
|
|
||||||
interface JobsViewProps {
|
interface JobsViewProps {
|
||||||
|
filter?: Record<string, string | number | boolean>;
|
||||||
onJobSelect?: (selectedJobs: Types.Job[]) => void;
|
onJobSelect?: (selectedJobs: Types.Job[]) => void;
|
||||||
onJobView?: (job: Types.Job) => void;
|
onJobView?: (job: Types.Job) => void;
|
||||||
onJobEdit?: (job: Types.Job) => void;
|
onJobEdit?: (job: Types.Job) => void;
|
||||||
@ -172,11 +174,13 @@ const JobsView: React.FC<JobsViewProps> = ({
|
|||||||
selectable = true,
|
selectable = true,
|
||||||
showActions = true,
|
showActions = true,
|
||||||
showDetailsPanel = true,
|
showDetailsPanel = true,
|
||||||
|
filter = {},
|
||||||
}) => {
|
}) => {
|
||||||
const theme = useTheme();
|
const theme = useTheme();
|
||||||
const { apiClient } = useAuth();
|
const { apiClient, user } = useAuth();
|
||||||
const isMobile = useMediaQuery(theme.breakpoints.down('md'));
|
const isMobile = useMediaQuery(theme.breakpoints.down('md'));
|
||||||
const isSmall = useMediaQuery(theme.breakpoints.down('sm'));
|
const isSmall = useMediaQuery(theme.breakpoints.down('sm'));
|
||||||
|
const location = useLocation();
|
||||||
|
|
||||||
const [jobs, setJobs] = React.useState<Types.Job[]>([]);
|
const [jobs, setJobs] = React.useState<Types.Job[]>([]);
|
||||||
const [loading, setLoading] = React.useState<boolean>(true);
|
const [loading, setLoading] = React.useState<boolean>(true);
|
||||||
@ -192,7 +196,9 @@ const JobsView: React.FC<JobsViewProps> = ({
|
|||||||
const [sortOrder, setSortOrder] = React.useState<SortOrder>('desc');
|
const [sortOrder, setSortOrder] = React.useState<SortOrder>('desc');
|
||||||
const [mobileDialogOpen, setMobileDialogOpen] = React.useState(false);
|
const [mobileDialogOpen, setMobileDialogOpen] = React.useState(false);
|
||||||
const [detailsPanelOpen, setDetailsPanelOpen] = React.useState(showDetailsPanel);
|
const [detailsPanelOpen, setDetailsPanelOpen] = React.useState(showDetailsPanel);
|
||||||
|
if (location.pathname.indexOf('/candidate/jobs') === 0) {
|
||||||
|
filter = { ...filter, owner_id: user?.id || '' };
|
||||||
|
}
|
||||||
const fetchJobs = React.useCallback(
|
const fetchJobs = React.useCallback(
|
||||||
async (pageNum = 0, searchTerm = '') => {
|
async (pageNum = 0, searchTerm = '') => {
|
||||||
try {
|
try {
|
||||||
@ -203,6 +209,7 @@ const JobsView: React.FC<JobsViewProps> = ({
|
|||||||
limit: limit,
|
limit: limit,
|
||||||
sortBy: sortField,
|
sortBy: sortField,
|
||||||
sortOrder: sortOrder,
|
sortOrder: sortOrder,
|
||||||
|
filters: filter,
|
||||||
};
|
};
|
||||||
|
|
||||||
let paginationResponse: Types.PaginatedResponse;
|
let paginationResponse: Types.PaginatedResponse;
|
||||||
@ -439,7 +446,7 @@ const JobsView: React.FC<JobsViewProps> = ({
|
|||||||
<TableContainer>
|
<TableContainer>
|
||||||
<Table size="small" aria-label="jobs table">
|
<Table size="small" aria-label="jobs table">
|
||||||
<TableHead>
|
<TableHead>
|
||||||
<TableRow>
|
<TableRow sx={{ '& th': { whiteSpace: 'nowrap' } }}>
|
||||||
{selectable && (
|
{selectable && (
|
||||||
<TableCell padding="checkbox">
|
<TableCell padding="checkbox">
|
||||||
<Checkbox
|
<Checkbox
|
||||||
|
Loading…
x
Reference in New Issue
Block a user