Sfoglia il codice sorgente

Merge branch 'feature/update_applicant-fe' of Neca/HRCenter into FE_dev

pull/163/head
safet.purkovic 3 anni fa
parent
commit
2e77f7c102

+ 48
- 0
src/assets/styles/components/_ads.scss Vedi File

height: 10.5px !important; height: 10.5px !important;
} }


.uploadCV-input {
width: 100%;
height: 140px;
border: 1px solid #e4e4e4;
border-radius: 6px;
margin-top: 6px;
display: flex;
justify-content: center;
align-items: center;
}

.uploadCV-content-sub-container {
display: flex;
flex-direction: column;
}

.uploadCV-content-sub-container > p {
font-family: Source Sans Pro;
font-size: 14px;
font-weight: 400;
line-height: 18px;
letter-spacing: 0em;
text-align: left;
}

.uploadCV-input-sub-container {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
}

.uploadCV-input-sub-container img {
width: 22px;
height: 22px;
}

.uploadCV-input-sub-container p {
width: 332px;
height: 40px;
font-family: Source Sans Pro;
font-size: 16px;
font-weight: 400;
line-height: 20.11px;
letter-spacing: 0em;
text-align: center;
}

.apply-for-ad-modal-form-control { .apply-for-ad-modal-form-control {
display: flex; display: flex;
flex-direction: column; flex-direction: column;

+ 0
- 181
src/assets/styles/components/_uploadCVPage.scss Vedi File

.uploadCV-main-container {
display: flex;
width: 100%;
height: 100%;
background-color: gray;
justify-content: center;
align-items: center;
}

.uploadCV-container {
display: flex;
width: 512px;
height: 591px;
background-color: #fff;
border-radius: 18px;
padding: 36px;
flex-direction: column;
}

.uploadCV-top-container {
display: flex;
align-items: center;
height: fit-content;
justify-content: space-between;
}

.uploadCV-top-container-image1 {
width: 18px;
height: 16.88px;
}

.uploadCV-top-container-image2 {
width: 9px;
height: 10.5px;
margin-left: 54px;
}

.uploadCV-top-container-text {
margin-left: 9px;
}

.uploadCV-top-container-text > p:first-child {
font-family: Source Sans Pro;
font-size: 24px;
font-weight: 600;
line-height: 32px;
letter-spacing: 0.02em;
text-align: left;
}

.uploadCV-top-container-text > p:last-child {
font-family: Source Sans Pro;
font-size: 16px;
font-weight: 600;
line-height: 20px;
letter-spacing: 0em;
text-align: left;
color: #226cb0;
}

.uploadCV-content-container {
display: flex;
flex-direction: column;
margin-top: 36px;
}

.uploadCV-input {
width: 100%;
height: 140px;
border: 1px solid #e4e4e4;
border-radius: 6px;
margin-top: 6px;
display: flex;
justify-content: center;
align-items: center;
}

.uploadCV-content-sub-container {
display: flex;
flex-direction: column;
}

.uploadCV-content-sub-container > p {
font-family: Source Sans Pro;
font-size: 14px;
font-weight: 400;
line-height: 18px;
letter-spacing: 0em;
text-align: left;
}

.uploadCV-input-sub-container {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
}

.uploadCV-input-sub-container img {
width: 22px;
height: 22px;
}

.uploadCV-input-sub-container p {
width: 332px;
height: 40px;
font-family: Source Sans Pro;
font-size: 16px;
font-weight: 400;
line-height: 20.11px;
letter-spacing: 0em;
text-align: center;
}

.uploadCV-input2 {
width: 100%;
height: 140px;
border: 1px solid #e4e4e4;
border-radius: 6px;
margin-top: 6px;
padding: 15px;
resize: none;
}

.uploadCV-input2::placeholder {
color: #9d9d9d;
font-family: Source Sans Pro;
font-size: 14px;
font-style: italic;
font-weight: 400;
line-height: 18px;
letter-spacing: 0em;
text-align: left;
word-break: break-all;
white-space: normal;
}

.uploadCV-buttons-container {
display: flex;
margin-top: 35px;
justify-content: space-between;
flex-direction: row;
}

.uploadCV-button {
width: 202px;
height: 51px;
display: flex;
flex-direction: row;
justify-content: center;
align-items: center;

gap: 10;
border-radius: 9px;
border: none;
font-family: "Source Sans Pro";
font-style: normal;
font-size: 12px;
line-height: 15px;
letter-spacing: 0.04em;
text-transform: uppercase;
color: #ffffff;
cursor: pointer;
}

.uploadCV-buttons-container > button:first-child {
@extend .uploadCV-button;
background: #ffffff;
color: #226cb0;
border: 1px solid #226cb0;
padding: 18px 72px;
font-weight: 600;
}

.uploadCV-buttons-container > button:last-child {
@extend .uploadCV-button;
background: #226cb0;
color: #ffffff;
padding: 18px 22px;
border: 1px solid #226cb0;
}

+ 8
- 0
src/components/Ads/ApplyForAd.js Vedi File

const [stage, setStage] = useState(1); const [stage, setStage] = useState(1);
const [firstName, setFirstName] = useState(""); const [firstName, setFirstName] = useState("");
const [lastName, setLastName] = useState(""); const [lastName, setLastName] = useState("");
const [gender, setGender] = useState("");
const [dateOfBirth, setDateOfBirth] = useState(""); const [dateOfBirth, setDateOfBirth] = useState("");
const [phoneNumber, setPhoneNumber] = useState(""); const [phoneNumber, setPhoneNumber] = useState("");
const [mappedTechnologies, setMappedTechnologies] = useState([]); const [mappedTechnologies, setMappedTechnologies] = useState([]);
const [experience, setExperience] = useState(0); const [experience, setExperience] = useState(0);
const [professionalQualification, setProfessionalQualification] = useState("");
const [linkedinLink, setLinkedinLink] = useState(""); const [linkedinLink, setLinkedinLink] = useState("");
const [githubLink, setGithubLink] = useState(""); const [githubLink, setGithubLink] = useState("");
const [email, setEmail] = useState(""); const [email, setEmail] = useState("");
adId, adId,
firstName, firstName,
lastName, lastName,
gender,
dateOfBirth, dateOfBirth,
phoneNumber, phoneNumber,
technologiesIds, technologiesIds,
experience, experience,
professionalQualification,
linkedinLink, linkedinLink,
githubLink, githubLink,
bitBucketLink, bitBucketLink,
setFirstName={setFirstName} setFirstName={setFirstName}
lastName={lastName} lastName={lastName}
setLastName={setLastName} setLastName={setLastName}
gender={gender}
setGender={setGender}
dateOfBirth={dateOfBirth} dateOfBirth={dateOfBirth}
setDateOfBirth={setDateOfBirth} setDateOfBirth={setDateOfBirth}
phoneNumber={phoneNumber} phoneNumber={phoneNumber}
technologies={mappedTechnologies} technologies={mappedTechnologies}
setTechnologies={setMappedTechnologies} setTechnologies={setMappedTechnologies}
experience={experience} experience={experience}
professionalQualification={professionalQualification}
setProfessionalQualification={setProfessionalQualification}
setExperience={setExperience} setExperience={setExperience}
onIncreaseStage={increaseStageHandler} onIncreaseStage={increaseStageHandler}
onDecreaseStage={decreaseStageHandler} onDecreaseStage={decreaseStageHandler}

+ 31
- 1
src/components/Ads/ApplyForAdFirstStage.js Vedi File

firstName, firstName,
setFirstName, setFirstName,
lastName, lastName,
gender,
setGender,
setLastName, setLastName,
dateOfBirth, dateOfBirth,
setDateOfBirth, setDateOfBirth,
firstName.length === 0 || firstName.length === 0 ||
lastName.length === 0 || lastName.length === 0 ||
dateOfBirth === "" || dateOfBirth === "" ||
phoneNumber.length === 0;
phoneNumber.length === 0 ||
gender.length === 0;


return ( return (
<div> <div>
onChange={(e) => setLastName(e.target.value)} onChange={(e) => setLastName(e.target.value)}
/> />
</div> </div>
<div className="apply-for-ad-modal-form-control">
<label>Pol</label>
<div style={{ display: "flex" }}>
<div style={{ display: "flex" }}>
<input
type="radio"
name="gender"
value="Muski"
checked={gender === "Muski"}
onChange={(e) => setGender(e.target.value)}
/>
<p style={{ marginLeft: "5px" }}>Muski</p>
</div>
<div style={{ display: "flex", marginLeft: "50px" }}>
<input
type="radio"
name="gender"
value="Zenski"
checked={gender === "Zenski"}
onChange={(e) => setGender(e.target.value)}
/>
<p style={{ marginLeft: "5px" }}>Zenski</p>
</div>
</div>
</div>
<div className="apply-for-ad-modal-form-control"> <div className="apply-for-ad-modal-form-control">
<label>Datum Rodjenja</label> <label>Datum Rodjenja</label>
<input <input
firstName: PropTypes.string, firstName: PropTypes.string,
setFirstName: PropTypes.any, setFirstName: PropTypes.any,
lastName: PropTypes.string, lastName: PropTypes.string,
gender: PropTypes.string,
setGender: PropTypes.func,
setLastName: PropTypes.any, setLastName: PropTypes.any,
dateOfBirth: PropTypes.any, dateOfBirth: PropTypes.any,
setDateOfBirth: PropTypes.any, setDateOfBirth: PropTypes.any,

+ 23
- 3
src/components/Ads/ApplyForAdSecondStage.js Vedi File

import { Checkbox, FormControlLabel } from "@mui/material"; import { Checkbox, FormControlLabel } from "@mui/material";


const ApplyForAdSecondStage = ({ const ApplyForAdSecondStage = ({
professionalQualification,
setProfessionalQualification,
technologies, technologies,
setTechnologies, setTechnologies,
experience, experience,
onDecreaseStage, onDecreaseStage,
}) => { }) => {
let disabled = true; let disabled = true;
let isTechnologySelected = false;
if (technologies.length > 0) { if (technologies.length > 0) {
disabled = technologies.some((x) => x.isChecked === true);
isTechnologySelected = technologies.some((x) => x.isChecked === true);
}
if (isTechnologySelected) {
if (professionalQualification.length > 0) {
disabled = false;
}
} }


const handleCheckboxes = (technologyId) => { const handleCheckboxes = (technologyId) => {


return ( return (
<div> <div>
<div className="apply-for-ad-header-title">
<p>Strucna sprema</p>
</div>
<div className="apply-for-ad-modal-form-control">
<input
type="text"
placeholder="ex. Elektrotehnicki fakultet"
value={professionalQualification}
onChange={(e) => setProfessionalQualification(e.target.value)}
/>
</div>
<div className="apply-for-ad-header-title"> <div className="apply-for-ad-header-title">
<p>Tehnologije koje znaš</p> <p>Tehnologije koje znaš</p>
</div> </div>

<div className="apply-for-ad-header-sub"> <div className="apply-for-ad-header-sub">
<div className="apply-for-ad-header-sub-group"> <div className="apply-for-ad-header-sub-group">
<label>Back-End</label> <label>Back-End</label>
</div> </div>
<div className="apply-for-ad-buttons"> <div className="apply-for-ad-buttons">
<button onClick={onDecreaseStage}>NAZAD</button> <button onClick={onDecreaseStage}>NAZAD</button>
<button onClick={onIncreaseStage} disabled={!disabled}>
<button onClick={onIncreaseStage} disabled={disabled}>
NASTAVI NASTAVI
</button> </button>
</div> </div>
}; };


ApplyForAdSecondStage.propTypes = { ApplyForAdSecondStage.propTypes = {
professionalQualification: PropTypes.string,
setProfessionalQualification: PropTypes.func,
technologies: PropTypes.any, technologies: PropTypes.any,
setTechnologies: PropTypes.any, setTechnologies: PropTypes.any,
experience: PropTypes.number, experience: PropTypes.number,

+ 20
- 0
src/pages/CandidatesPage/CandidateDetailsPage.js Vedi File

))} ))}
</div> </div>
<div className="candidate-informations-container"> <div className="candidate-informations-container">
<div className="candidate-informations-sub-container">
<div className="candidate-property-container">
<p className="informations-candidate-header">Informacije</p>
<p className="candidate-property">Pol:</p>
<p className="candidate-property">Strucna sprema:</p>
</div>
<div
style={{ alignSelf: "flex-end", marginLeft: 42 }}
className="candidate-property-container"
>
<p className="candidate-property-value">
{candidate.gender === "M" ? "Muski" : "Zenski"}
</p>
<p className="candidate-property-value">
{candidate.professionalQualification === ""
? "/"
: candidate.professionalQualification}
</p>
</div>
</div>
<div className="candidate-informations-sub-container"> <div className="candidate-informations-sub-container">
<div className="candidate-property-container"> <div className="candidate-property-container">
<p className="informations-candidate-header">Kontakt</p> <p className="informations-candidate-header">Kontakt</p>

+ 2
- 0
src/store/saga/applicantsSaga.js Vedi File

formData.append("adId", payload.adId); formData.append("adId", payload.adId);
formData.append("firstName", payload.firstName); formData.append("firstName", payload.firstName);
formData.append("lastName", payload.lastName); formData.append("lastName", payload.lastName);
formData.append("gender", payload.gender);
formData.append("dateOfBirth", payload.dateOfBirth); formData.append("dateOfBirth", payload.dateOfBirth);
formData.append("phoneNumber", payload.phoneNumber); formData.append("phoneNumber", payload.phoneNumber);
formData.append("professionalQualification", payload.professionalQualification);
formData.append("technologiesIds", payload.technologiesIds); formData.append("technologiesIds", payload.technologiesIds);
formData.append("experience", payload.experience); formData.append("experience", payload.experience);
formData.append("linkedinLink", payload.linkedinLink); formData.append("linkedinLink", payload.linkedinLink);

Loading…
Annulla
Salva