瀏覽代碼

setted countdown based on the timeslot input

develop
Ajay_S 3 年之前
父節點
當前提交
6848954a15
共有 5 個檔案被更改,包括 49 行新增31 行删除
  1. +3
    -2
      src/components/CountDownTimer/useCountdown.tsx
  2. +11
    -2
      src/components/timeSlot/TimeSlot.tsx
  3. +15
    -16
      src/pages/finalInterview/FinalInterview.tsx
  4. +3
    -2
      src/pages/quiz/Options.tsx
  5. +17
    -9
      src/pages/technicalInterview/TechnicalInterview.tsx

+ 3
- 2
src/components/CountDownTimer/useCountdown.tsx 查看文件

@@ -1,7 +1,7 @@
import { useEffect, useState } from 'react'; import { useEffect, useState } from 'react';


const useCountdown = (targetDate: Date) => { const useCountdown = (targetDate: Date) => {
console.log(targetDate);
const countDownDate = new Date(targetDate).getTime(); const countDownDate = new Date(targetDate).getTime();


const [countDown, setCountDown] = useState( const [countDown, setCountDown] = useState(
@@ -14,13 +14,14 @@ const useCountdown = (targetDate: Date) => {
}, 1000); }, 1000);


return () => clearInterval(interval); return () => clearInterval(interval);
}, []);
}, [targetDate]);


const days = Math.floor(countDown / (1000 * 60 * 60 * 24)); const days = Math.floor(countDown / (1000 * 60 * 60 * 24));
const hours = Math.floor((countDown % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60)); const hours = Math.floor((countDown % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
const minutes = Math.floor((countDown % (1000 * 60 * 60)) / (1000 * 60)); const minutes = Math.floor((countDown % (1000 * 60 * 60)) / (1000 * 60));
const seconds = Math.floor((countDown % (1000 * 60)) / 1000); const seconds = Math.floor((countDown % (1000 * 60)) / 1000);



return [days, hours, minutes, seconds]; return [days, hours, minutes, seconds];
}; };



+ 11
- 2
src/components/timeSlot/TimeSlot.tsx 查看文件

@@ -9,6 +9,7 @@ interface OwnProps {
month: string; month: string;
getDate: () => void; getDate: () => void;
HideTimeSlot: () => void; HideTimeSlot: () => void;
getTimeSlot: (date: any, time: string) => void;
} }


const TimeSlot: React.FC<OwnProps> = (props) => { const TimeSlot: React.FC<OwnProps> = (props) => {
@@ -16,6 +17,14 @@ const TimeSlot: React.FC<OwnProps> = (props) => {
const [highlightedDate, setHighlightedDate] = useState<Date>(); const [highlightedDate, setHighlightedDate] = useState<Date>();
const [highlightedTime, setHighlightedTime] = useState<string>(""); const [highlightedTime, setHighlightedTime] = useState<string>("");


const setTimeSlot = () => {
if (highlightedDate && highlightedTime !== "") {
props.getDate();
props.getTimeSlot(highlightedDate, highlightedTime);
} else {
return undefined;
}
}
const dates = Dates.map((date, key) => { const dates = Dates.map((date, key) => {
return ( return (
<div <div
@@ -27,7 +36,7 @@ const TimeSlot: React.FC<OwnProps> = (props) => {
{format(date, 'eee')} {format(date, 'eee')}
</div> </div>
<div> <div>
{format(date, 'e')}
{format(date, 'd')}
</div> </div>


</div> </div>
@@ -68,7 +77,7 @@ const TimeSlot: React.FC<OwnProps> = (props) => {
</div> </div>
</div> </div>


<div onClick={(highlightedDate && highlightedTime !== "") ? () => props.getDate() : undefined}
<div onClick={setTimeSlot}
className={styles.timeSlotButton + " " + (highlightedDate && highlightedTime !== "" ? styles.buttonActive : "")}> className={styles.timeSlotButton + " " + (highlightedDate && highlightedTime !== "" ? styles.buttonActive : "")}>
<IonButton shape="round" expand='block' >Confirm slot</IonButton> <IonButton shape="round" expand='block' >Confirm slot</IonButton>
</div> </div>


+ 15
- 16
src/pages/finalInterview/FinalInterview.tsx 查看文件

@@ -8,23 +8,28 @@ import { Link } from "react-router-dom";
import { useState } from "react"; import { useState } from "react";
import TimeSlot from "../../components/timeSlot/TimeSlot"; import TimeSlot from "../../components/timeSlot/TimeSlot";
import { useCountdown } from "../../components/CountDownTimer/useCountdown"; import { useCountdown } from "../../components/CountDownTimer/useCountdown";
import { addDays } from "date-fns";
import CountdownTimer from "../../components/CountDownTimer/CountdownTimer"; import CountdownTimer from "../../components/CountDownTimer/CountdownTimer";
import { format } from "date-fns";


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


const [isDateSet, setDate] = useState<boolean>(false);
const [isTimeSlot, setTimeSlot] = useState<boolean>(false);
const [isDateSet, setIsDate] = useState<boolean>(false);
const [isTimeSlot, setIsTimeSlot] = useState<boolean>(false);
const [date, setDate] = useState<Date>(new Date());


const [days, hours, minutes, seconds] = useCountdown(new Date('may 6, 2022 07:00:00'));
const [days, hours, minutes, seconds] = useCountdown(date);


const getDate = () => { const getDate = () => {
setTimeSlot(false);
setDate(true);
setIsTimeSlot(false);
setIsDate(true);
} }


const HideTimeSlot = () => { const HideTimeSlot = () => {
setTimeSlot(false);
setIsTimeSlot(false);
}

const getTimeSlot = (date: any, time: string) => {
setDate(new Date(`${format(date, "LLL")} ${format(date, "d")} ${format(date, "y")} ${time.substring(0, 8)}`));
} }


return ( return (
@@ -46,13 +51,6 @@ const FinalInterview: React.FC = () => {


<h4>Let's Meet in:</h4> <h4>Let's Meet in:</h4>
<div className={styles.timeLeft}> <div className={styles.timeLeft}>
{/* <h4 className={styles.time}>02 : 04 : 25 : 53</h4>
<div className={styles.days}>
<div>Days</div>
<div>Hrs</div>
<div>Mins</div>
<div>Secs</div>
</div> */}
<CountdownTimer <CountdownTimer
days={days} days={days}
hours={hours} hours={hours}
@@ -68,7 +66,7 @@ const FinalInterview: React.FC = () => {
</div> </div>
{ {
!isDateSet ? !isDateSet ?
<div className={styles.techinicalInterviewBtn} onClick={() => setTimeSlot(true)}>
<div className={styles.techinicalInterviewBtn} onClick={() => setIsTimeSlot(true)}>
<IonButton shape="round" expand='block'>Find a slot</IonButton> <IonButton shape="round" expand='block'>Find a slot</IonButton>
</div> </div>
: :
@@ -87,7 +85,8 @@ const FinalInterview: React.FC = () => {
<TimeSlot <TimeSlot
month="April-May" month="April-May"
getDate={getDate} getDate={getDate}
HideTimeSlot={HideTimeSlot} />
HideTimeSlot={HideTimeSlot}
getTimeSlot={getTimeSlot} />
} }


</IonContent> </IonContent>


+ 3
- 2
src/pages/quiz/Options.tsx 查看文件

@@ -58,11 +58,12 @@ const Options: React.FC<OwnProps> = (props) => {
setTextInput(inputRef.current?.value!) setTextInput(inputRef.current?.value!)
} }


if (props.lastQuestion) {
const setAnswer = () => {
localStorage.setItem("answer", answers.toString()); localStorage.setItem("answer", answers.toString());
} }





const options = props.options!.map((option, key) => { const options = props.options!.map((option, key) => {
return ( return (
<IonItem lines='none' key={key} className={(option === selected) ? styles.highlighted : ""}> <IonItem lines='none' key={key} className={(option === selected) ? styles.highlighted : ""}>
@@ -122,7 +123,7 @@ const Options: React.FC<OwnProps> = (props) => {
} }


{props.lastQuestion && {props.lastQuestion &&
< Link to="/preliminaryRoundResults" className={styles.button + " " + ((selected || selectedOptions.length > 0 || textInput) ? styles.active : "")}>
< Link to="/preliminaryRoundResults" onClick={setAnswer} className={styles.button + " " + ((selected || selectedOptions.length > 0 || textInput) ? styles.active : "")}>
<IonButton shape="round" expand='block'>Next Step</IonButton> <IonButton shape="round" expand='block'>Next Step</IonButton>
</Link> </Link>
} }


+ 17
- 9
src/pages/technicalInterview/TechnicalInterview.tsx 查看文件

@@ -5,27 +5,34 @@ import StepHeader from "../../components/stepsHeader/StepHeader";
import techinicalInterview from "../../assets/icons/Technical_Interview.svg"; import techinicalInterview from "../../assets/icons/Technical_Interview.svg";
import linkIcon from "../../assets/icons/link.svg"; import linkIcon from "../../assets/icons/link.svg";
import { Link } from "react-router-dom"; import { Link } from "react-router-dom";
import { useState } from "react";
import { useEffect, useState } from "react";
import TimeSlot from "../../components/timeSlot/TimeSlot"; import TimeSlot from "../../components/timeSlot/TimeSlot";
import { useCountdown } from "../../components/CountDownTimer/useCountdown"; import { useCountdown } from "../../components/CountDownTimer/useCountdown";
import CountdownTimer from "../../components/CountDownTimer/CountdownTimer"; import CountdownTimer from "../../components/CountDownTimer/CountdownTimer";
import { format } from "date-fns";


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


const [isDateSet, setDate] = useState<boolean>(false);
const [isTimeSlot, setTimeSlot] = useState<boolean>(false);
const [isDateSet, setIsDate] = useState<boolean>(false);
const [isTimeSlot, setIsTimeSlot] = useState<boolean>(false);
const [date, setDate] = useState<Date>(new Date());


const [days, hours, minutes, seconds] = useCountdown(new Date('may 7, 2022 07:00:00'));
const [days, hours, minutes, seconds] = useCountdown(date);


const getDate = () => { const getDate = () => {
setTimeSlot(false);
setDate(true);
setIsTimeSlot(false);
setIsDate(true);
} }


const HideTimeSlot = () => { const HideTimeSlot = () => {
setTimeSlot(false);
setIsTimeSlot(false);
} }


const getTimeSlot = (date: any, time: string) => {
setDate(new Date(`${format(date, "LLL")} ${format(date, "d")} ${format(date, "y")} ${time.substring(0, 8)}`));
}


return ( return (
<IonPage> <IonPage>
<StepHeader stepNumber={3} roundName="Technical Interview" /> <StepHeader stepNumber={3} roundName="Technical Interview" />
@@ -60,7 +67,7 @@ const TechnicalInterview: React.FC = () => {
</div> </div>
{ {
!isDateSet ? !isDateSet ?
<div className={styles.techinicalInterviewBtn} onClick={() => setTimeSlot(true)}>
<div className={styles.techinicalInterviewBtn} onClick={() => setIsTimeSlot(true)}>
<IonButton shape="round" expand='block'>Find a slot</IonButton> <IonButton shape="round" expand='block'>Find a slot</IonButton>
</div> </div>
: :
@@ -79,7 +86,8 @@ const TechnicalInterview: React.FC = () => {
<TimeSlot <TimeSlot
month="April-May" month="April-May"
getDate={getDate} getDate={getDate}
HideTimeSlot={HideTimeSlot} />
HideTimeSlot={HideTimeSlot}
getTimeSlot={getTimeSlot} />
} }


</IonContent> </IonContent>


Loading…
取消
儲存