- Timestamp:
- 06/09/24 14:24:03 (2 weeks ago)
- Branches:
- main
- Children:
- b248810
- Parents:
- 19398ad
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
jobvista-frontend/src/views/job_advertisements/JobAdvertisements.js
r19398ad r28b3398 6 6 import {JobAdvertisementActions} from "../../redux/actions/jobAdvertisementActions"; 7 7 import {formatRelativeTime, sortElementsByDateCreated} from "../../utils/utils"; 8 import {dataRangeOptions, industryOptions, sortOptions} from "../selectOptions";8 import {dataRangeOptions, industryOptions, industryOptionsFilter, sortOptions} from "../selectOptions"; 9 9 import Select from "react-select"; 10 10 import {DeleteJobAdModal} from "./DeleteJobAdModal"; … … 13 13 import JobType from "../../enumerations/JobType"; 14 14 15 export const JobAdvertisements = ( ) => {15 export const JobAdvertisements = (props) => { 16 16 17 17 const dispatch = useDispatch(); … … 21 21 22 22 const [role, setRole] = useState(""); 23 const [s ortOrder, setSortOrder] = useState("newest");24 const [selected DateRange, setSelectedDateRange] = useState("all");23 const [selectedSortOrder, setSelectedSortOrder] = useState("date_newest"); 24 const [selectedIndustry, setSelectedIndustry] = useState("all"); 25 25 const [searchTerm, setSearchTerm] = useState(""); 26 26 const [dispatched, setDispatched] = useState(false) … … 35 35 useEffect(() => { 36 36 if (!dispatched && jobAdvertisementsByRecruiterState.length === 0) { 37 dispatch(JobAdvertisementActions.fetchJobAdvertisementsByRecruiter( "deleteThis",(success, response) => {37 dispatch(JobAdvertisementActions.fetchJobAdvertisementsByRecruiter((success, response) => { 38 38 if (success && response.data.length > 0) { 39 39 setJobAdvertisementsByRecruiter(sortElementsByDateCreated(response.data)) … … 49 49 }, [jobAdvertisementsByRecruiterState]) 50 50 51 let filterJobAdvertisements = () => { 52 JobAdvertisementActions.filterJobAdvertisementsByRecruiter( 53 { 54 searchTerm: searchTerm, 55 industry: selectedIndustry, 56 sortOrder: selectedSortOrder 57 }, (success, response) => { 58 if (success) { 59 setJobAdvertisementsByRecruiter(response.data); 60 } 61 } 62 ) 63 } 64 51 65 return ( 52 66 <div className="container"> 53 <div className="head- job-advertisements-box">67 <div className="head-dashboard-box"> 54 68 <div className="row"> 55 <div className="col-md- 3">56 <div className="search-container head-component">57 <i className="fa-solid fa-magnifying-glass blue-colored"></i>69 <div className="col-md-12 filter-container"> 70 <div className="search-container"> 71 <i className="fa-solid fa-magnifying-glass search-icon"></i> 58 72 <input 59 73 className="search-input" 60 74 type="text" 61 75 placeholder="Search job advertisement by title..." 62 //value={searchTerm}63 //onChange={event => setSearchTerm(event.target.value)}76 value={searchTerm} 77 onChange={event => setSearchTerm(event.target.value)} 64 78 /> 65 79 </div> 66 </div> 67 <div className="col-md-9"> 68 69 <AddJobAdModal/> 80 <div className="sort-section item"> 81 <Select 82 defaultValue={{value: "all", label: "All industries"}} 83 value={selectedIndustry.value} 84 onChange={option => setSelectedIndustry(option.value)} 85 options={industryOptionsFilter} 86 className="sort-range sort" 87 /> 88 </div> 70 89 <div className="sort-section item"> 71 90 <Select 72 91 defaultValue={{value: "newest", label: "Date (Newest First)"}} 73 //value={sortOrder.value}74 //onChange ={option => setSortOrder(option.value)}92 value={selectedSortOrder.value} 93 onChange={option => setSelectedSortOrder(option.value)} 75 94 options={sortOptions} 76 95 className="sort-range sort" 77 96 /> 78 97 </div> 79 <div className="date-range-section item"> 80 <Select 81 defaultValue={{value: "all", label: "Lifetime"}} 82 //value={selectedDateRange.value} 83 //onChange={option => setSelectedDateRange(option.value)} 84 options={dataRangeOptions} 85 className="date-range sort" 86 /> 87 </div> 98 <button onClick={filterJobAdvertisements} className="btn-open-modal">Find jobs</button> 88 99 </div> 89 100 </div> 90 101 </div> 91 102 <div className="row row-cols-1 row-cols-md-4 g-4"> 103 <AddJobAdModal/> 92 104 93 105 {jobAdvertisementsByRecruiter && … … 97 109 <div className="card-head"> 98 110 <span className="hourly-salary"><b>${jobAd.startingSalary}/hr</b></span> 99 <span className="job-type"> {jobAd.jobType===JobType.JOB ? "Job" : "Internship"}</span> 111 <span 112 className="job-type"> {jobAd.jobType === JobType.JOB ? "Job" : "Internship"}</span> 100 113 {!jobAd.active && <span className="expired">Expired</span>} 101 114 <div className="card-management-btns"> … … 106 119 <div className="card-body"> 107 120 <h5 className="card-title">{jobAd.title}</h5> 108 <span>{jobAd.industry} • <span style={{color: "black", fontWeight: "bold"}}>{formatRelativeTime(jobAd.postedOn)}</span></span> 121 <span>{jobAd.industry} • <span style={{ 122 color: "black", 123 fontWeight: "bold" 124 }}>{formatRelativeTime(jobAd.postedOn)}</span></span> 109 125 <div className="card-info"> 110 <span><i className="fa-solid fa-building" style={{color: "#000000"}}></i> Company: <span style={{color: "black", fontWeight: "bold"}}>{jobAd.recruiterName}</span></span> <br/> 126 <span><i className="fa-solid fa-building" 127 style={{color: "#000000"}}></i> Company: <span style={{ 128 color: "black", 129 fontWeight: "bold" 130 }}>{jobAd.recruiterName}</span></span> <br/> 111 131 </div> 112 132 113 133 <div className="aligned"> 114 <Link to={`/my-job-advertisements/view/${jobAd.id}`} className="card-button solo">View applications</Link> 134 <Link to={`/my-job-advertisements/${jobAd.id}/applications`} 135 className="card-button solo">View applications</Link> 115 136 </div> 116 137
Note:
See TracChangeset
for help on using the changeset viewer.