Legend:
- Unmodified
- Added
- Removed
-
jobvista-frontend/src/views/applications/ApplicationsByJobSeeker.js
r0f0add0 r4d97b63 22 22 23 23 24 25 24 useEffect(() => { 26 if (!dispatched && (applicationsByJobSeekerState.length === 0 || applicationsByJobSeekerState.length === 1)) {25 if (!dispatched && (applicationsByJobSeekerState.length === 0 || applicationsByJobSeekerState.length === 1)) { 27 26 dispatch(ApplicationActions.fetchApplicationsByJobSeeker(auth.id, (success, response) => { 28 if (success && response.data.length > 0) {27 if (success && response.data.length > 0) { 29 28 setApplicationsByJobSeeker(sortElementsBy(response.data, "submittedOn")); 30 29 } … … 41 40 useEffect(() => { 42 41 43 if (dispatched && !logoDispatched) {42 if (dispatched && !logoDispatched) { 44 43 applicationsByJobSeeker.forEach(jobAd => { 45 if (jobAd.recruiterId && !logos[jobAd.recruiterId]) {44 if (jobAd.recruiterId && !logos[jobAd.recruiterId]) { 46 45 fetchLogo(jobAd.recruiterId); 47 46 } … … 49 48 setLogoDispatched(true) 50 49 console.log("Fetch all logos GET") 51 } else if (logoDispatched) {50 } else if (logoDispatched) { 52 51 setLogos(logosState) 53 52 console.log("Fetch all logos STATE") … … 58 57 59 58 60 61 59 const fetchLogo = (recruiterId) => { 62 60 dispatch(RecruiterActions.downloadLogo(recruiterId, (success, response) => { 63 if (success) {61 if (success) { 64 62 setLogos(prevLogos => ({...prevLogos, [recruiterId]: response})) 65 63 } … … 67 65 }; 68 66 69 const options = [ 70 {value: 'PROPOSED', label: <span className="status" style={{backgroundColor: '#4A90E2'}}><i className="fa-solid fa-paper-plane"></i> Proposed</span>}, 71 {value: 'UNDER_REVIEW', label: <span className="status" style={{backgroundColor: '#F5A623'}}><i className="fa-solid fa-file-pen"></i> Under Review</span>}, 72 {value: 'ACCEPTED', label: <span className="status" style={{backgroundColor: '#7ED321'}}><i className="fa-solid fa-user-check"></i> Accepted</span>}, 73 {value: 'DENIED', label: <span className="status" style={{backgroundColor: '#D0021B'}}><i className="fa-solid fa-user-slash"></i> Denied</span>} 67 const options = [{ 68 value: 'PROPOSED', label: <span className="status" style={{backgroundColor: '#4A90E2'}}><i 69 className="fa-solid fa-paper-plane"></i> Proposed</span> 70 }, { 71 value: 'UNDER_REVIEW', label: <span className="status" style={{backgroundColor: '#F5A623'}}><i 72 className="fa-solid fa-file-pen"></i> Under Review</span> 73 }, { 74 value: 'ACCEPTED', label: <span className="status" style={{backgroundColor: '#7ED321'}}><i 75 className="fa-solid fa-user-check"></i> Accepted</span> 76 }, { 77 value: 'DENIED', label: <span className="status" style={{backgroundColor: '#D0021B'}}><i 78 className="fa-solid fa-user-slash"></i> Denied</span> 79 }]; 80 81 const [selectedFilter, setSelectedFilter] = useState('All'); 82 83 const filters = [ 84 { value: 'ALL', label: 'All', icon: 'fa-folder-open' }, 85 { value: 'PROPOSED', label: 'Proposed', icon: 'fa-paper-plane' }, 86 { value: 'UNDER_REVIEW', label: 'Under Review', icon: 'fa-file-pen' }, 87 { value: 'ACCEPTED', label: 'Accepted', icon: 'fa-user-check' }, 88 { value: 'DENIED', label: 'Denied', icon: 'fa-user-slash' }, 74 89 ]; 90 91 const filterApplicationsByJobSeeker= (filter) => { 92 dispatch(ApplicationActions.filterApplicationsByJobSeeker(auth.id, filter, (success, response) => { 93 if(success) { 94 //notify 95 } 96 })) 97 } 75 98 76 99 let handleDefaultValue = (status) => { … … 79 102 80 103 81 82 return ( 83 <div className="custom-container"> 104 return (<div className="custom-container"> 84 105 85 106 <div className="application-title"> 86 107 <h3>Application history</h3> 87 108 </div> 109 110 <div className="application-filters d-inline-flex flex-row justify-content-start"> 111 { 112 filters.map(filter => ( 113 <span 114 key={filter.label} 115 className={selectedFilter === filter.label ? "selected" : ""} 116 onClick={() => { 117 setSelectedFilter(filter.label) 118 filterApplicationsByJobSeeker(filter.value) 119 }} 120 ><i className={`fa-solid ${filter.icon}`}></i> {filter.label}</span> 121 )) 122 } 123 </div> 124 88 125 {applicationsByJobSeeker && applicationsByJobSeeker.map((application, index) => ( 89 <div key={index} className="application-card"> 90 <div className="app-company-logo"> 91 <img 92 // loading gif 93 src={logosState[application.recruiterId]} 94 alt="" 95 width={75} height={75} 96 /> 97 </div> 126 <div className="application-card-wrapper"> 127 <div key={index} className="application-card"> 128 <div className="app-company-logo"> 129 <img 130 // loading gif 131 src={logosState[application.recruiterId]} 132 alt="" 133 width={75} height={75} 134 /> 135 </div> 98 136 99 <div className="app-info"> 100 <Link to={`/job-advertisements/${application.jobAdId}`} className="jobAd-title">{application.jobAdTitle}</Link> 101 {/*<h5 className="jobAd-title"></h5>*/} 102 <div className="contact-info"> 103 <div className="contact-item"> 104 <i className="fa-solid fa-building"></i> <span>{application.recruiterName}</span> 137 <div className="app-info"> 138 <Link to={`/job-advertisements/${application.jobAdId}`} 139 className="jobAd-title">{application.jobAdTitle}</Link> 140 {/*<h5 className="jobAd-title"></h5>*/} 141 <div className="contact-info"> 142 <div className="contact-item"> 143 <i className="fa-solid fa-building"></i> <span>{application.recruiterName}</span> 144 </div> 145 <div className="contact-item"> 146 <i className="fa-solid fa-envelope"></i> <span>{application.recruiterEmail}</span> 147 </div> 148 <div className="contact-item"> 149 <i className="fa-solid fa-phone"></i> 150 <span>{application.recruiterPhoneNumber}</span> 151 </div> 152 <span> • Submitted on <b>{new Date(application.submittedOn).toLocaleString('default', { 153 day: 'numeric', month: 'long', year: 'numeric' 154 })}</b></span> 105 155 </div> 106 <div className="contact-item"> 107 <i className="fa-solid fa-envelope"></i> <span>{application.recruiterEmail}</span> 108 </div> 109 <div className="contact-item"> 110 <i className="fa-solid fa-phone"></i> <span>{application.recruiterPhoneNumber}</span> 111 </div> 112 <span> • Submitted on <b>{new Date(application.submittedOn).toLocaleString('default', { 113 day: 'numeric', 114 month: 'long', 115 year: 'numeric' 116 })}</b></span> 156 </div> 157 158 <div className="app-status"> 159 <ApplicationDetailsModal application={application}/> 160 <> {handleDefaultValue(application.status).label}</> 161 {/*<div className="select">*/} 162 {/* <Select isDisabled={true} options={options} />*/} 163 {/*</div>*/} 164 117 165 </div> 118 166 </div> 167 {application.response && 168 <div className="response-message"> 169 {application.response} 170 </div> 171 } 119 172 120 <div className="app-status"> 121 <ApplicationDetailsModal application={application}/> 122 <> {handleDefaultValue(application.status).label}</> 123 {/*<div className="select">*/} 124 {/* <Select isDisabled={true} options={options} />*/} 125 {/*</div>*/} 173 </div> 126 174 127 </div>128 </div>129 175 ))} 130 176 131 </div> 132 ) 177 </div>) 133 178 }
Note:
See TracChangeset
for help on using the changeset viewer.