ソースを参照

partially created assignment and submit assignment page

develop
Ajay_S 3年前
コミット
995569867c
18個のファイルの変更369行の追加20行の削除
  1. +13
    -0
      src/App.tsx
  2. +2
    -2
      src/components/formInput/Input.module.scss
  3. +3
    -0
      src/components/stepsHeader/StepHeader.tsx
  4. +1
    -1
      src/pages/Quiz/Quiz.tsx
  5. +46
    -0
      src/pages/assignment/Assignment.module.scss
  6. +36
    -0
      src/pages/assignment/Assignment.tsx
  7. +90
    -0
      src/pages/assignment/AssignmentDetails.module.scss
  8. +49
    -0
      src/pages/assignment/AssignmentDetails.tsx
  9. +0
    -0
      src/pages/assignment/ReviewAssignment.module.scss
  10. +9
    -0
      src/pages/assignment/ReviewAssignment.tsx
  11. +45
    -0
      src/pages/assignment/SubmitAssignment.module.scss
  12. +45
    -0
      src/pages/assignment/SubmitAssignment.tsx
  13. +19
    -9
      src/pages/interviewRounds/InterviewRounds.tsx
  14. +1
    -0
      src/pages/interviewRounds/StepDescreption.module.scss
  15. +5
    -3
      src/pages/interviewRounds/StepDescreption.tsx
  16. +3
    -1
      src/pages/interviewRounds/Steps.tsx
  17. +0
    -2
      src/pages/preliminaryRoundResults/PreliminaryRoundResults.tsx
  18. +2
    -2
      src/pages/technicalInterview/TechnicalInterview.tsx

+ 13
- 0
src/App.tsx ファイルの表示

@@ -26,6 +26,9 @@ import Quiz from './pages/Quiz/Quiz';
import PreliminaryRoundResults from './pages/preliminaryRoundResults/PreliminaryRoundResults'; import PreliminaryRoundResults from './pages/preliminaryRoundResults/PreliminaryRoundResults';
import TechnicalInterview from './pages/technicalInterview/TechnicalInterview'; import TechnicalInterview from './pages/technicalInterview/TechnicalInterview';
import TimeSlot from './components/timeSlot/TimeSlot'; import TimeSlot from './components/timeSlot/TimeSlot';
import Assignment from './pages/assignment/Assignment';
import AssignmentDetails from './pages/assignment/AssignmentDetails';
import SubmitAssignment from './pages/assignment/SubmitAssignment';






@@ -53,6 +56,16 @@ const App: React.FC = () => (
<Route exact path="/technicalInterview"> <Route exact path="/technicalInterview">
<TechnicalInterview /> <TechnicalInterview />
</Route> </Route>
<Route exact path="/assignment">
<Assignment />
</Route>
<Route exact path="/assignmentDetails">
<AssignmentDetails />
</Route>
<Route exact path="/SubmitAssignment">
<SubmitAssignment />
</Route>

<Route exact path="/"> <Route exact path="/">
<Redirect to="/interviewRounds" /> <Redirect to="/interviewRounds" />
</Route> </Route>


+ 2
- 2
src/components/formInput/Input.module.scss ファイルの表示

@@ -17,8 +17,8 @@ $dim-grey: #696969;
} }


ion-icon { ion-icon {
width: 1rem;
height: 1rem;
width: 1.5rem;
height: 1.5rem;
} }


ion-input { ion-input {


+ 3
- 0
src/components/stepsHeader/StepHeader.tsx ファイルの表示

@@ -2,6 +2,7 @@ import styles from './StepHeader.module.scss';


import { IonHeader, IonIcon } from '@ionic/react'; import { IonHeader, IonIcon } from '@ionic/react';
import { closeOutline } from 'ionicons/icons' import { closeOutline } from 'ionicons/icons'
import { Link } from 'react-router-dom';


interface Props { interface Props {
stepNumber: number; stepNumber: number;
@@ -15,7 +16,9 @@ const StepHeader: React.FC<Props> = (props) => {
<div className={styles.step}>Step {props.stepNumber}</div> <div className={styles.step}>Step {props.stepNumber}</div>
<h3 className={styles.roundName}>{props.roundName}</h3> <h3 className={styles.roundName}>{props.roundName}</h3>
</div> </div>
{/* <Link to="/interviewRounds"> */}
<IonIcon icon={closeOutline}></IonIcon> <IonIcon icon={closeOutline}></IonIcon>
{/* </Link> */}
</header> </header>
) )
} }


+ 1
- 1
src/pages/Quiz/Quiz.tsx ファイルの表示

@@ -1,6 +1,6 @@
import styles from './Quiz.module.scss'; import styles from './Quiz.module.scss';


import { IonButton, IonCheckbox, IonIcon, IonItem, IonLabel, IonPage, IonRadio } from '@ionic/react';
import { IonButton, IonIcon } from '@ionic/react';
import Options from './Options'; import Options from './Options';
import { closeOutline } from 'ionicons/icons' import { closeOutline } from 'ionicons/icons'
import { Link } from 'react-router-dom'; import { Link } from 'react-router-dom';


+ 46
- 0
src/pages/assignment/Assignment.module.scss ファイルの表示

@@ -0,0 +1,46 @@
.assignment {

.description {
.icon {
margin-top: 4rem;
display: flex;
justify-content: center;
ion-icon {
width: 10rem;
height: 10rem;
}
}

.stepDescription {
h4 {
color: #363636;
text-align: center;
font-size: 2.4rem;
font-weight: 300;
letter-spacing: 0.024rem;
margin-top: 3rem;
}
p {
color: #868686;
font-size: 1.4rem;
text-align: center;
width: 90%;
margin: 0 auto;
margin-top: 2rem;
line-height: 1.8;
}
}
}

.assignmentButton {
text-decoration: none;
ion-button {
width: 95%;
margin: 0 auto;
margin-top: 35vh;
margin-bottom: 0;
--background: var(--primary-button-color);
}
}
}

+ 36
- 0
src/pages/assignment/Assignment.tsx ファイルの表示

@@ -0,0 +1,36 @@
import { IonButton, IonContent, IonIcon, IonPage } from "@ionic/react";
import StepHeader from "../../components/stepsHeader/StepHeader";
import assignmentImage from "../../assets/icons/Assignment.svg";
import styles from "./Assignment.module.scss";
import { Link } from "react-router-dom";

const Assignment: React.FC = () => {

return (
<IonPage>
<StepHeader stepNumber={4} roundName="Assignment" />
<IonContent className={styles.assignment}>

<div className={styles.description}>
<div className={styles.icon}>
<IonIcon src={assignmentImage} />
</div>

<div className={styles.stepDescription}>
<h4>You are one step ahead to the final round</h4>
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
</p>
</div>
</div>

<Link to="/assignmentDetails"
className={styles.assignmentButton}>
<IonButton shape="round" expand='block'>Show Details</IonButton>
</Link>
</IonContent>
</IonPage>
);
}

export default Assignment;

+ 90
- 0
src/pages/assignment/AssignmentDetails.module.scss ファイルの表示

@@ -0,0 +1,90 @@
.assignmentDetails {

.assignmentTask {
display: flex;
flex-direction: column;
align-items: center;
text-align: center;
justify-content: space-around;
height: 44vh;
width: 90%;
margin: 0 auto;

.heading {
color: #363636;
font-weight: 300;
font-size: 2.4rem;
}
.description {
color: #868686;
font-size: 1.4rem;
line-height: 2.8rem;
}
}

.taskDescription {
height: 44vh;
display: flex;
flex-direction: column;
justify-content: space-around;
background-color: #151515;
background-image: url("../../assets/icons/desktop-particles-2.svg");
background-repeat: no-repeat;
background-position: 25% 30%;
border-top-right-radius: 75%;
&::before {
position: absolute;
content:" ";
top: 50%;
right: 0;
left: 0;
bottom: 0;
background-color: #151515;
height: 30vh;
transform: skewY(5deg);
z-index: -1;
}
.heading {
color: #BCBCBC;
font-weight: 300;
letter-spacing: 0.024rem;
font-size: 2.4rem;
margin-left: 2rem;
}
.description {
margin-left: 2rem;
.textHolder {
display: flex;
margin-bottom: 2rem;
.text {
color: #E5E5E5;
font-size: 1.4rem;
font-weight: 600;
margin-left: 2rem;
}
}
}
a {
text-decoration: none;
}
ion-button {
--background: var(--primary-button-color);
font-weight: 500;
font-family: 'Poppins', sans-serif;
width: 90%;
margin: 0 auto;
}
.wish {
color: #E5E5E5;
font-size: 1.8rem;
text-align: center;
}
}
}

+ 49
- 0
src/pages/assignment/AssignmentDetails.tsx ファイルの表示

@@ -0,0 +1,49 @@
import { IonButton, IonContent, IonIcon, IonPage } from "@ionic/react";
import StepHeader from "../../components/stepsHeader/StepHeader";
import questionIcon from '../../assets/icons/question-circle-fill.svg';
import checkIcon from '../../assets/icons/check-circle-fill.svg';
import timeIcon from '../../assets/icons/time.svg';

import styles from "./AssignmentDetails.module.scss";
import { Link } from "react-router-dom";

const AssignmentDetails: React.FC = () => {
return (
<IonPage>
<StepHeader roundName="Assignment" stepNumber={4} />
<IonContent className={styles.assignmentDetails}>
<div className={styles.assignmentTask}>
<h4 className={styles.heading}>Make a text analyser from a text file</h4>
<p className={styles.description}>
Make an api with Node which accepts a text file and I was supposed to return the most repeated words in it. A huge text file (around 7 mb) was given to me as an example. Here is the code if anywants to know how I built it https://github.com/fayazara/text-analyser
</p>
</div>
<div className={styles.taskDescription}>
<h4 className={styles.heading}>Details</h4>
<div className={styles.description}>
<div className={styles.textHolder}>
<IonIcon src={questionIcon}></IonIcon>
<div className={styles.text}>Weekend Project</div>
</div>
<div className={styles.textHolder}>
<IonIcon src={timeIcon}></IonIcon>
<div className={styles.text}>Before Monday, 01 May 2021</div>
</div>
<div className={styles.textHolder}>
<IonIcon src={checkIcon}></IonIcon>
<div className={styles.text}>Note: 85% of results minimum</div>
</div>
</div>

<Link to="./SubmitAssignment">
<IonButton shape="round" expand='block'>Accept</IonButton>
</Link>
<div className={styles.wish}>All the best!</div>

</div>
</IonContent>
</IonPage>
);
};

export default AssignmentDetails;

+ 0
- 0
src/pages/assignment/ReviewAssignment.module.scss ファイルの表示


+ 9
- 0
src/pages/assignment/ReviewAssignment.tsx ファイルの表示

@@ -0,0 +1,9 @@
const ReviewAssignment: React.FC = () => {
return (
<div>

</div>
);
}

export default ReviewAssignment;

+ 45
- 0
src/pages/assignment/SubmitAssignment.module.scss ファイルの表示

@@ -0,0 +1,45 @@
.submitAssignment {
.description {
.icon {
margin-top: 4rem;
display: flex;
justify-content: center;
ion-icon {
width: 10rem;
height: 10rem;
}
}
.stepDescription {
h4 {
color: #363636;
text-align: center;
font-size: 2.4rem;
font-weight: 300;
letter-spacing: 0.024rem;
margin-top: 3rem;
}
p {
color: #868686;
font-size: 1.4rem;
text-align: center;
width: 90%;
margin: 0 auto;
margin-top: 2rem;
line-height: 1.8;
}
}
}
.inputHolder {
margin-top: 5rem;
}
.submitAssigment {
text-decoration: none;
ion-button {
width: 90%;
margin: 0 auto;
margin-top: 12rem;
--background: var(--primary-button-color);
}
}
}

+ 45
- 0
src/pages/assignment/SubmitAssignment.tsx ファイルの表示

@@ -0,0 +1,45 @@
import styles from "./SubmitAssignment.module.scss";
import { IonButton, IonContent, IonIcon, IonPage } from "@ionic/react"
import assignmentImage from "../../assets/icons/Assignment.svg";
import StepHeader from "../../components/stepsHeader/StepHeader";
import Input from "../../components/formInput/Input";
import linkIcon from "../../assets/icons/link.svg";
import time from "../../assets/icons/time.svg";
import { linkOutline } from 'ionicons/icons'
import { Link } from "react-router-dom";


const SubmitAssignment: React.FC = () => {
return (
<IonPage>
<StepHeader roundName="Assignment" stepNumber={4} />

<IonContent className={styles.submitAssignment}>

<div className={styles.description}>
<div className={styles.icon}>
<IonIcon src={assignmentImage} />

</div>

<div className={styles.stepDescription}>
<h4>Submit your Assignment</h4>
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
</p>
</div>
</div>

<div className={styles.inputHolder}>
<Input placeholder="Insert the project Link" icon={linkOutline} />
</div>
<Link to="/assignmentDetails"
className={styles.submitAssigment}>
<IonButton shape="round" expand='block'>Submit</IonButton>
</Link>
</IonContent>
</IonPage>
);
}

export default SubmitAssignment;

+ 19
- 9
src/pages/interviewRounds/InterviewRounds.tsx ファイルの表示

@@ -19,6 +19,7 @@ interface stepDetail {
descriptionImage: string; descriptionImage: string;
buttonText: string; buttonText: string;
isUnlocked: boolean; isUnlocked: boolean;
link: string;
} }


const InterviewRounds: React.FC = () => { const InterviewRounds: React.FC = () => {
@@ -29,56 +30,64 @@ const InterviewRounds: React.FC = () => {
stepName: "Skill Information", stepName: "Skill Information",
descriptionImage: skillInfo, descriptionImage: skillInfo,
buttonText: "Let's start now", buttonText: "Let's start now",
isUnlocked: true
isUnlocked: true,
link: "/skillInformationStep"
}, },
{ {
stepNumber: 2, stepNumber: 2,
stepName: "Preliminary Round", stepName: "Preliminary Round",
descriptionImage: preliminaryRound, descriptionImage: preliminaryRound,
buttonText: "Let's do this", buttonText: "Let's do this",
isUnlocked: false
isUnlocked: false,
link: "/preliminaryRound"
}, },
{ {
stepNumber: 3, stepNumber: 3,
stepName: "Technical Interview", stepName: "Technical Interview",
descriptionImage: technicalInterview, descriptionImage: technicalInterview,
buttonText: "Schedule meeting", buttonText: "Schedule meeting",
isUnlocked: false
isUnlocked: false,
link: "/technicalInterview"
}, },
{ {
stepNumber: 4, stepNumber: 4,
stepName: "Assignment", stepName: "Assignment",
descriptionImage: assignment, descriptionImage: assignment,
buttonText: "Show details", buttonText: "Show details",
isUnlocked: false
isUnlocked: false,
link: "/assignment"
}, },
{ {
stepNumber: 5, stepNumber: 5,
stepName: "Final Interview", stepName: "Final Interview",
descriptionImage: finalInterview, descriptionImage: finalInterview,
buttonText: "Schedule meeting", buttonText: "Schedule meeting",
isUnlocked: false
isUnlocked: false,
link: "/assignment"
}, },
{ {
stepNumber: 6, stepNumber: 6,
stepName: "Closing Docs", stepName: "Closing Docs",
descriptionImage: closingDocs, descriptionImage: closingDocs,
buttonText: "Upload docs", buttonText: "Upload docs",
isUnlocked: false
isUnlocked: false,
link: "/assignment"
}, },
{ {
stepNumber: 7, stepNumber: 7,
stepName: "Joining Letter", stepName: "Joining Letter",
descriptionImage: joiningLetter, descriptionImage: joiningLetter,
buttonText: "Show details", buttonText: "Show details",
isUnlocked: false
isUnlocked: false,
link: "/assignment"
}, },
{ {
stepNumber: 8, stepNumber: 8,
stepName: "Celebrations", stepName: "Celebrations",
descriptionImage: Celebrations, descriptionImage: Celebrations,
buttonText: "Join Workex", buttonText: "Join Workex",
isUnlocked: false
isUnlocked: false,
link: "/assignment"
}, },
]; ];


@@ -98,7 +107,8 @@ const InterviewRounds: React.FC = () => {
descriptionImage={step.descriptionImage} descriptionImage={step.descriptionImage}
buttonText={step.buttonText} buttonText={step.buttonText}
setDescription={setDescription} setDescription={setDescription}
showDescription={(stepNo === step.stepNumber) ? true : false} />
showDescription={(stepNo === step.stepNumber) ? true : false}
link={step.link} />
); );
}); });




+ 1
- 0
src/pages/interviewRounds/StepDescreption.module.scss ファイルの表示

@@ -56,6 +56,7 @@
animation-fill-mode: forwards; animation-fill-mode: forwards;
} }
.button { .button {
text-decoration: none;
animation: fadeInAnimation ease 0.2s; animation: fadeInAnimation ease 0.2s;
animation-iteration-count: 1; animation-iteration-count: 1;
animation-fill-mode: forwards; animation-fill-mode: forwards;


+ 5
- 3
src/pages/interviewRounds/StepDescreption.tsx ファイルの表示

@@ -1,8 +1,9 @@
import styles from './StepDescreption.module.scss'; import styles from './StepDescreption.module.scss';


import { IonButton, IonIcon } from '@ionic/react'; import { IonButton, IonIcon } from '@ionic/react';
import { lockOpen, lockClosed } from 'ionicons/icons'
import { lockOpen, lockClosed } from 'ionicons/icons';
import { useEffect, useRef } from 'react'; import { useEffect, useRef } from 'react';
import { Link } from 'react-router-dom';


interface Props { interface Props {
stepNumber: number; stepNumber: number;
@@ -10,6 +11,7 @@ interface Props {
isUnlocked: boolean; isUnlocked: boolean;
buttonText: string; buttonText: string;
descriptionImage: string; descriptionImage: string;
link: string;
} }


const StepsDescription: React.FC<Props> = (props) => { const StepsDescription: React.FC<Props> = (props) => {
@@ -42,9 +44,9 @@ const StepsDescription: React.FC<Props> = (props) => {
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
</p> </p>


<div className={styles.button}>
<Link to={props.link} className={styles.button}>
<IonButton shape="round" expand='block'>{props.buttonText}</IonButton> <IonButton shape="round" expand='block'>{props.buttonText}</IonButton>
</div>
</Link>


</div> </div>
); );


+ 3
- 1
src/pages/interviewRounds/Steps.tsx ファイルの表示

@@ -10,6 +10,7 @@ interface Props {
showDescription?: boolean; showDescription?: boolean;
buttonText: string; buttonText: string;
descriptionImage: string; descriptionImage: string;
link: string;
setDescription: (stepNumber: number) => void; setDescription: (stepNumber: number) => void;
// rename to select step // rename to select step
} }
@@ -24,7 +25,8 @@ const Steps: React.FC<Props> = (props) => {
roundName={props.roundName} roundName={props.roundName}
isUnlocked={props.isUnlocked} isUnlocked={props.isUnlocked}
buttonText={props.buttonText} buttonText={props.buttonText}
descriptionImage={props.descriptionImage} /> :
descriptionImage={props.descriptionImage}
link={props.link} /> :
<div className={styles.stepHolder}> <div className={styles.stepHolder}>
<IonIcon icon={props.isUnlocked ? lockOpen : lockClosed} color={props.isUnlocked ? '' : "dark"} ></IonIcon> <IonIcon icon={props.isUnlocked ? lockOpen : lockClosed} color={props.isUnlocked ? '' : "dark"} ></IonIcon>




+ 0
- 2
src/pages/preliminaryRoundResults/PreliminaryRoundResults.tsx ファイルの表示

@@ -3,8 +3,6 @@ import styles from "./PreliminaryRoundResults.module.scss"
import { IonButton, IonContent, IonIcon, IonPage } from "@ionic/react"; import { IonButton, IonContent, IonIcon, IonPage } from "@ionic/react";
import StepHeader from "../../components/stepsHeader/StepHeader"; import StepHeader from "../../components/stepsHeader/StepHeader";


import checkIcon from "../../assets/icons/check-circle-fill.svg";
import closeIcon from "../../assets/icons/close-filled.svg";
import goodJobIcon from "../../assets/icons/good_job.svg"; import goodJobIcon from "../../assets/icons/good_job.svg";


import { closeCircle, checkmarkCircle } from "ionicons/icons"; import { closeCircle, checkmarkCircle } from "ionicons/icons";


+ 2
- 2
src/pages/technicalInterview/TechnicalInterview.tsx ファイルの表示

@@ -86,10 +86,10 @@ const TechnicalInterview: React.FC = () => {
</div> </div>
: :
<div className={styles.buttonHolder}> <div className={styles.buttonHolder}>
<Link to="/" className={styles.dashboardButton}>
<Link to="/interviewRounds" className={styles.dashboardButton}>
<IonButton shape="round">Goto Dashboard</IonButton> <IonButton shape="round">Goto Dashboard</IonButton>
</Link> </Link>
<Link to="/" className={styles.nextStepButton}>
<Link to="/assignment" className={styles.nextStepButton}>
<IonButton shape="round">Goto Next Step</IonButton> <IonButton shape="round">Goto Next Step</IonButton>
</Link> </Link>
</div> </div>


読み込み中…
キャンセル
保存