file progress implemented

This commit is contained in:
VividTruthKeeper 2022-04-27 12:28:31 +05:00
parent 524f72c796
commit 413ca24792
10 changed files with 127 additions and 13 deletions

View File

@ -6,7 +6,8 @@ export const sendRequest = (
data,
setState,
setLoader,
setError
setError,
setProgress
) => {
const form = new FormData();
@ -37,7 +38,12 @@ export const sendRequest = (
form.append("work_experience", data.exp);
form.append("date", `${dd}.${mm}.${yyyy}`);
axios
.post(`${url}?token=${token}`, form)
.post(`${url}?token=${token}`, form, {
onUploadProgress: (progressEvent) => {
const progress = progressEvent.loaded / progressEvent.total;
setProgress(progress);
},
})
.then((res) => {
setState(res);
if (setLoader) {

View File

@ -1,6 +1,6 @@
import axios from "axios";
export const sendRequestCard = (url, token, data) => {
export const sendRequestCard = (url, token, data, setProgress) => {
let today = new Date();
let dd = String(today.getDate()).padStart(2, "0");
let mm = String(today.getMonth() + 1).padStart(2, "0");
@ -30,7 +30,12 @@ export const sendRequestCard = (url, token, data) => {
form.append("price", data.price);
axios
.post(`${url}?token=${token}`, form)
.post(`${url}?token=${token}`, form, {
onUploadProgress: (progressEvent) => {
const progress = progressEvent.loaded / progressEvent.total;
setProgress(progress);
},
})
.then((res) => {
window.open(res.data, "_self").focus();
})

View File

@ -14,7 +14,13 @@ import { reformatDate } from "../../helpers/reformatDate";
// URL
import { destination } from "../../destinationUrl";
const CardStage6 = ({ setStage, data, setLoader, setModalOpen }) => {
const CardStage6 = ({
setStage,
data,
setLoader,
setModalOpen,
setProgress,
}) => {
const { locale } = useContext(LanguageContext);
const token = localStorage.getItem("userToken");
const postUrl = destination + "/online_card";
@ -143,7 +149,7 @@ const CardStage6 = ({ setStage, data, setLoader, setModalOpen }) => {
onClick={() => {
setLoader(true);
setModalOpen(false);
sendRequestCard(postUrl, token, data);
sendRequestCard(postUrl, token, data, setProgress);
}}
>
<div>

View File

@ -22,6 +22,7 @@ const CreditStage6 = ({
setLoader,
setSuccess,
setError,
setProgress,
}) => {
const { locale } = useContext(LanguageContext);
const { setUser } = useContext(UserContext);
@ -148,7 +149,8 @@ const CreditStage6 = ({
}, 2000);
},
setLoader,
setError
setError,
setProgress
);
}}
>

View File

@ -31,6 +31,7 @@ const ModalForm = ({
setLoader,
setSuccess,
setError,
setProgress,
}) => {
const window = useRef();
const { locale } = useContext(LanguageContext);
@ -228,6 +229,7 @@ const ModalForm = ({
setModalOpen={setModalOpen}
setSuccess={setSuccess}
setError={setError}
setProgress={setProgress}
/>
) : (
""

View File

@ -29,11 +29,11 @@ const CreditModal = ({
setSuccess,
setError,
creditData,
setProgress,
}) => {
const { locale } = useContext(LanguageContext);
const window = useRef();
const [data, setData] = useState({});
const [id, setId] = useState(1);
return (
<section
@ -228,6 +228,7 @@ const CreditModal = ({
setLoader={setLoader}
setSuccess={setSuccess}
setError={setError}
setProgress={setProgress}
/>
) : (
""

View File

@ -0,0 +1,36 @@
// IMPORT MODULES
import React, { useContext } from "react";
import { LanguageContext } from "../../backend/LanguageContext";
import useMediaQuery from "../../hooks/useMediaQuery";
// IMPORT IMAGES
import { ReactComponent as Spinner } from "../../icons/loader.svg";
const ProgressLoader = ({ progress }) => {
const { locale } = useContext(LanguageContext);
const mobile = useMediaQuery("max-width: 340px");
return (
<div className="loader">
<Spinner className="spinner" />
<div className="splitter">
<h1 className="progress-not">
{locale === "TKM"
? "Siziň faýllaryňyz ýüklenilýär"
: "Загрузка ваших файлов"}
</h1>
<h1 className="progress-percentage">{Math.floor(progress * 100)}%</h1>
<div className="linear-progress">
<div
className="bar"
style={{
left: `${mobile ? -25 + 25 * progress : -30 + 30 * progress}rem`,
transition: "1s ease all",
}}
></div>
</div>
</div>
</div>
);
};
export default ProgressLoader;

View File

@ -6,15 +6,14 @@ import { LanguageContext } from "../backend/LanguageContext";
// IMPORT COMPONENTS
import Breadcrumb from "../components/global/Breadcrumb";
import ModalForm from "../components/cards/ModalForm";
import Loader from "../components/global/Loader";
import Success from "../components/global/Success";
import ProgressLoader from "../components/global/ProgressLoader";
import Error from "../components/global/Error";
// IMPORT IMAGES
import card from "../icons/card-black.svg";
import add from "../icons/add.svg";
import allert from "../icons/info-circle.svg";
import nul from "../icons/null.svg";
const Cards = () => {
const { locale } = useContext(LanguageContext);
@ -23,6 +22,7 @@ const Cards = () => {
const { user } = useContext(UserContext);
const [loader, setLoader] = useState(false);
const [modalOpen, setModalOpen] = useState(false);
const [progress, setProgress] = useState(0);
const [stage, setStage] = useState(1);
useEffect(() => {
if (modalOpen) {
@ -67,8 +67,10 @@ const Cards = () => {
setLoader={setLoader}
setSuccess={setSuccess}
setError={setError}
setProgress={setProgress}
/>
{loader ? <Loader /> : null}
{/* {loader ? <Loader /> : null} */}
{loader ? <ProgressLoader progress={progress} /> : null}
<div className="container">
<div className="cards-inner">
<div className="card-title">

View File

@ -7,7 +7,8 @@ import axios from "axios";
// IMPORT COMPONENTS
import Breadcrumb from "../components/global/Breadcrumb";
import CreditModal from "../components/credits/CreditModal";
import Loader from "../components/global/Loader";
// import Loader from "../components/global/Loader";
import ProgressLoader from "../components/global/ProgressLoader";
import Success from "../components/global/Success";
import Error from "../components/global/Error";
@ -29,6 +30,7 @@ const Credits = () => {
const [stage, setStage] = useState(1);
const [loader, setLoader] = useState(false);
const [creditData, setCreditData] = useState();
const [progress, setProgress] = useState(0);
useEffect(() => {
if (modalOpen) {
document.body.style.overflowY = "hidden";
@ -89,8 +91,9 @@ const Credits = () => {
setSuccess={setSuccess}
setError={setError}
creditData={creditData}
setProgress={setProgress}
/>
{loader ? <Loader /> : null}
{loader ? <ProgressLoader progress={progress} /> : null}
<div className="container">
<div className="cards-inner">
<div className="card-title">

View File

@ -79,8 +79,14 @@ input::placeholder {
width: 100%;
height: 100%;
display: flex;
flex-direction: column;
gap: 7rem;
align-items: center;
justify-content: center;
svg {
margin: 0 auto !important;
}
}
.spinner {
@ -88,6 +94,41 @@ input::placeholder {
height: 6rem;
}
}
.splitter {
display: flex;
flex-direction: column;
gap: 2rem;
align-items: center;
justify-content: center;
}
.progress-not {
margin-top: 2rem;
font-size: 3rem;
text-align: center;
}
.progress-percentage {
font-size: 2rem;
color: $base-green;
}
.linear-progress {
width: 30rem;
height: 1rem;
position: relative;
background: lightgrey;
overflow: hidden;
border-radius: 2rem;
.bar {
width: 100%;
height: 100%;
position: absolute;
top: 0;
background-color: $base-green;
}
}
input[type="range"] {
-webkit-appearance: none; /* Hides the slider so that custom slider can be made */
@ -239,6 +280,16 @@ input[type="range"]:focus::-ms-fill-upper {
}
}
@media screen and (max-width: 340px) {
.linear-progress {
width: 25rem;
}
.progress-not {
font-size: 2.5rem;
}
}
@media screen and (max-width: 330px) {
.captcha {
transform: scaleX(0.71) scaleY(0.8) translateX(-3rem);