Merge branch 'home-banners-dashboard' of WrenchBoard/Users-Wrench into master
This commit is contained in:
@@ -1,5 +1,4 @@
|
|||||||
import React from "react";
|
import React from "react";
|
||||||
import CountDown from "../Helpers/CountDown";
|
|
||||||
// import HomeSliders from "./HomeSliders";
|
// import HomeSliders from "./HomeSliders";
|
||||||
import { useSelector } from "react-redux";
|
import { useSelector } from "react-redux";
|
||||||
|
|
||||||
@@ -41,39 +40,6 @@ export default function FamilyParentDashboard({
|
|||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{/* countdown */}
|
|
||||||
{nextDueTask?.next_due &&
|
|
||||||
Object.keys(nextDueTask.next_due)?.length != 0 && (
|
|
||||||
<div className="w-full h-32 flex justify-evenly items-center sm:p-6 p-1 rounded-2xl border back-dark1 border-white-opacity">
|
|
||||||
<div className="flex flex-col justify-between">
|
|
||||||
<p className="text-base text-white tracking-wide">
|
|
||||||
Current Task
|
|
||||||
</p>
|
|
||||||
<p className="lg:text-2xl text-lg font-bold tracking-wide text-white">
|
|
||||||
{nextDueTask.next_due.item_code.substr(0, 4) + "..."}
|
|
||||||
</p>
|
|
||||||
<p className="text-base text-white tracking-wide">
|
|
||||||
{nextDueTask.next_due.price * 0.01} Naira
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
<div className="w-[1px] h-full bg-white-opacity"></div>
|
|
||||||
<div className="flex flex-col justify-between">
|
|
||||||
<p className="text-base text-white tracking-wide">
|
|
||||||
Next due in
|
|
||||||
</p>
|
|
||||||
<p className="lg:text-2xl text-lg font-bold tracking-wide text-white">
|
|
||||||
{/* <CountDown lastDate="2023-04-26 4:00:00" /> */}
|
|
||||||
<CountDown lastDate={nextDueTask.next_due.due_date} />
|
|
||||||
</p>
|
|
||||||
<div className="text-base text-white tracking-wide flex gap-[23px]">
|
|
||||||
<span>Hrs</span>
|
|
||||||
<span>Min</span>
|
|
||||||
<span>Sec</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
)}
|
|
||||||
<span className="text-base font-thin tracking-wide text-white flex items-end">
|
<span className="text-base font-thin tracking-wide text-white flex items-end">
|
||||||
Last Login : {loginDate}
|
Last Login : {loginDate}
|
||||||
</span>
|
</span>
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
import React from "react";
|
import React from "react";
|
||||||
import CountDown from "../Helpers/CountDown";
|
|
||||||
// import HomeSliders from "./HomeSliders";
|
// import HomeSliders from "./HomeSliders";
|
||||||
import { useSelector } from "react-redux";
|
import { useSelector } from "react-redux";
|
||||||
|
|
||||||
@@ -38,38 +37,6 @@ export default function HomeDashboard({ className, bannerList, nextDueTask }) {
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{/* countdown */}
|
|
||||||
{nextDueTask?.next_due &&
|
|
||||||
Object.keys(nextDueTask.next_due)?.length != 0 && (
|
|
||||||
<div className="w-full h-32 flex justify-evenly items-center sm:p-6 p-1 rounded-2xl border back-dark1 border-white-opacity">
|
|
||||||
<div className="flex flex-col justify-between">
|
|
||||||
<p className="text-base text-white tracking-wide">
|
|
||||||
Current Task
|
|
||||||
</p>
|
|
||||||
<p className="lg:text-2xl text-lg font-bold tracking-wide text-white">
|
|
||||||
{nextDueTask.next_due.item_code.substr(0, 4) + "..."}
|
|
||||||
</p>
|
|
||||||
<p className="text-base text-white tracking-wide">
|
|
||||||
{nextDueTask.next_due.price * 0.01} Naira
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
<div className="w-[1px] h-full bg-white-opacity"></div>
|
|
||||||
<div className="flex flex-col justify-between">
|
|
||||||
<p className="text-base text-white tracking-wide">
|
|
||||||
Next due in
|
|
||||||
</p>
|
|
||||||
<p className="lg:text-2xl text-lg font-bold tracking-wide text-white">
|
|
||||||
{/* <CountDown lastDate="2023-04-26 4:00:00" /> */}
|
|
||||||
<CountDown lastDate={nextDueTask.next_due.due_date} />
|
|
||||||
</p>
|
|
||||||
<div className="text-base text-white tracking-wide flex gap-[23px]">
|
|
||||||
<span>Hrs</span>
|
|
||||||
<span>Min</span>
|
|
||||||
<span>Sec</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
)}
|
|
||||||
<span className="text-base font-thin tracking-wide text-white flex items-end">
|
<span className="text-base font-thin tracking-wide text-white flex items-end">
|
||||||
Last Login : {loginDate}
|
Last Login : {loginDate}
|
||||||
</span>
|
</span>
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
import React from "react";
|
import React from "react";
|
||||||
import CountDown from "../Helpers/CountDown";
|
|
||||||
// import HomeSliders from "./HomeSliders";
|
// import HomeSliders from "./HomeSliders";
|
||||||
import { useSelector } from "react-redux";
|
import { useSelector } from "react-redux";
|
||||||
|
|
||||||
@@ -42,38 +41,6 @@ export default function JobOwnerDashboard({
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{/* countdown */}
|
|
||||||
{nextDueTask?.next_due &&
|
|
||||||
Object.keys(nextDueTask.next_due)?.length != 0 && (
|
|
||||||
<div className="w-full h-32 flex justify-evenly items-center sm:p-6 p-1 rounded-2xl border back-dark1 border-white-opacity">
|
|
||||||
<div className="flex flex-col justify-between">
|
|
||||||
<p className="text-base text-white tracking-wide">
|
|
||||||
Current Task
|
|
||||||
</p>
|
|
||||||
<p className="lg:text-2xl text-lg font-bold tracking-wide text-white">
|
|
||||||
{nextDueTask.next_due.item_code.substr(0, 4) + "..."}
|
|
||||||
</p>
|
|
||||||
<p className="text-base text-white tracking-wide">
|
|
||||||
{nextDueTask.next_due.price * 0.01} Naira
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
<div className="w-[1px] h-full bg-white-opacity"></div>
|
|
||||||
<div className="flex flex-col justify-between">
|
|
||||||
<p className="text-base text-white tracking-wide">
|
|
||||||
Next due in
|
|
||||||
</p>
|
|
||||||
<p className="lg:text-2xl text-lg font-bold tracking-wide text-white">
|
|
||||||
{/* <CountDown lastDate="2023-04-26 4:00:00" /> */}
|
|
||||||
<CountDown lastDate={nextDueTask.next_due.due_date} />
|
|
||||||
</p>
|
|
||||||
<div className="text-base text-white tracking-wide flex gap-[23px]">
|
|
||||||
<span>Hrs</span>
|
|
||||||
<span>Min</span>
|
|
||||||
<span>Sec</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
)}
|
|
||||||
<span className="text-base font-thin tracking-wide text-white flex items-end">
|
<span className="text-base font-thin tracking-wide text-white flex items-end">
|
||||||
Last Login : {loginDate}
|
Last Login : {loginDate}
|
||||||
</span>
|
</span>
|
||||||
|
|||||||
@@ -1,14 +1,16 @@
|
|||||||
import React, { useState } from "react";
|
import React from "react";
|
||||||
import { Link } from "react-router-dom";
|
import { Link } from "react-router-dom";
|
||||||
import { toast } from "react-toastify";
|
|
||||||
import heroBg from "../../assets/images/bg-sky-blue.jpg"; //hero-bg.svg";
|
|
||||||
import heroUser from "../../assets/images/hero-user.png";
|
import heroUser from "../../assets/images/hero-user.png";
|
||||||
import CountDown from "../Helpers/CountDown";
|
import CountDown from "../Helpers/CountDown";
|
||||||
// import HomeSliders from "./HomeSliders";
|
// import HomeSliders from "./HomeSliders";
|
||||||
import { useSelector } from "react-redux";
|
import { useSelector } from "react-redux";
|
||||||
import HomeSliders from "../Home/HomeSliders";
|
import HomeSliders from "../Home/HomeSliders";
|
||||||
|
|
||||||
export default function WorkerDashboard({ className, bannerList, nextDueTask }) {
|
export default function WorkerDashboard({
|
||||||
|
className,
|
||||||
|
bannerList,
|
||||||
|
nextDueTask,
|
||||||
|
}) {
|
||||||
const settings = {
|
const settings = {
|
||||||
autoplay: true,
|
autoplay: true,
|
||||||
dots: true,
|
dots: true,
|
||||||
@@ -57,32 +59,37 @@ export default function WorkerDashboard({ className, bannerList, nextDueTask })
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{/* countdown */}
|
{/* countdown */}
|
||||||
{nextDueTask?.next_due && Object.keys(nextDueTask.next_due)?.length != 0 && (
|
{nextDueTask?.next_due &&
|
||||||
<div className="w-full h-32 flex justify-evenly items-center sm:p-6 p-1 rounded-2xl border back-dark1 border-white-opacity">
|
Object.keys(nextDueTask.next_due)?.length != 0 && (
|
||||||
<div className="flex flex-col justify-between">
|
<div className="w-full h-32 flex justify-evenly items-center sm:p-6 p-1 rounded-2xl border back-dark1 border-white-opacity">
|
||||||
<p className="text-base text-white tracking-wide">Current Task</p>
|
<div className="flex flex-col justify-between">
|
||||||
<p className="lg:text-2xl text-lg font-bold tracking-wide text-white">
|
<p className="text-base text-white tracking-wide">
|
||||||
{(nextDueTask.next_due.item_code).substr(0,4)+'...'}
|
Current Task
|
||||||
</p>
|
</p>
|
||||||
<p className="text-base text-white tracking-wide">
|
<p className="lg:text-2xl text-lg font-bold tracking-wide text-white">
|
||||||
{nextDueTask.next_due.price * 0.01} Naira
|
{nextDueTask.next_due.item_code.substr(0, 4) + "..."}
|
||||||
</p>
|
</p>
|
||||||
</div>
|
<p className="text-base text-white tracking-wide">
|
||||||
<div className="w-[1px] h-full bg-white-opacity"></div>
|
{nextDueTask.next_due.price * 0.01} Naira
|
||||||
<div className="flex flex-col justify-between">
|
</p>
|
||||||
<p className="text-base text-white tracking-wide">Next due in</p>
|
</div>
|
||||||
<p className="lg:text-2xl text-lg font-bold tracking-wide text-white">
|
<div className="w-[1px] h-full bg-white-opacity"></div>
|
||||||
{/* <CountDown lastDate="2023-04-26 4:00:00" /> */}
|
<div className="flex flex-col justify-between">
|
||||||
<CountDown lastDate={nextDueTask.next_due.due_date} />
|
<p className="text-base text-white tracking-wide">
|
||||||
</p>
|
Next due in
|
||||||
<div className="text-base text-white tracking-wide flex gap-[23px]">
|
</p>
|
||||||
<span>Hrs</span>
|
<p className="lg:text-2xl text-lg font-bold tracking-wide text-white">
|
||||||
<span>Min</span>
|
{/* <CountDown lastDate="2023-04-26 4:00:00" /> */}
|
||||||
<span>Sec</span>
|
<CountDown lastDate={nextDueTask.next_due.due_date} />
|
||||||
|
</p>
|
||||||
|
<div className="text-base text-white tracking-wide flex gap-[23px]">
|
||||||
|
<span>Hrs</span>
|
||||||
|
<span>Min</span>
|
||||||
|
<span>Sec</span>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
)}
|
||||||
)}
|
|
||||||
{/* action */}
|
{/* action */}
|
||||||
<div className="flex lg:space-x-3 space-x-1 items-center">
|
<div className="flex lg:space-x-3 space-x-1 items-center">
|
||||||
<Link to="/mytask" className="text-white text-base">
|
<Link to="/mytask" className="text-white text-base">
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
import React from "react";
|
import React from "react";
|
||||||
import CountDown from "../Helpers/CountDown";
|
|
||||||
// import HomeSliders from "./HomeSliders";
|
// import HomeSliders from "./HomeSliders";
|
||||||
import { useSelector } from "react-redux";
|
import { useSelector } from "react-redux";
|
||||||
|
|
||||||
@@ -41,39 +40,6 @@ export default function WorkerDashboard({
|
|||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{/* countdown */}
|
|
||||||
{nextDueTask?.next_due &&
|
|
||||||
Object.keys(nextDueTask.next_due)?.length != 0 && (
|
|
||||||
<div className="w-full h-32 flex justify-evenly items-center sm:p-6 p-1 rounded-2xl border back-dark1 border-white-opacity">
|
|
||||||
<div className="flex flex-col justify-between">
|
|
||||||
<p className="text-base text-white tracking-wide">
|
|
||||||
Current Task
|
|
||||||
</p>
|
|
||||||
<p className="lg:text-2xl text-lg font-bold tracking-wide text-white">
|
|
||||||
{nextDueTask.next_due.item_code.substr(0, 4) + "..."}
|
|
||||||
</p>
|
|
||||||
<p className="text-base text-white tracking-wide">
|
|
||||||
{nextDueTask.next_due.price * 0.01} Naira
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
<div className="w-[1px] h-full bg-white-opacity"></div>
|
|
||||||
<div className="flex flex-col justify-between">
|
|
||||||
<p className="text-base text-white tracking-wide">
|
|
||||||
Next due in
|
|
||||||
</p>
|
|
||||||
<p className="lg:text-2xl text-lg font-bold tracking-wide text-white">
|
|
||||||
{/* <CountDown lastDate="2023-04-26 4:00:00" /> */}
|
|
||||||
<CountDown lastDate={nextDueTask.next_due.due_date} />
|
|
||||||
</p>
|
|
||||||
<div className="text-base text-white tracking-wide flex gap-[23px]">
|
|
||||||
<span>Hrs</span>
|
|
||||||
<span>Min</span>
|
|
||||||
<span>Sec</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
)}
|
|
||||||
<span className="text-base font-thin tracking-wide text-white flex items-end">
|
<span className="text-base font-thin tracking-wide text-white flex items-end">
|
||||||
Last Login : {loginDate}
|
Last Login : {loginDate}
|
||||||
</span>
|
</span>
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ export default function InputCom({
|
|||||||
forgotPassword,
|
forgotPassword,
|
||||||
parentClass,
|
parentClass,
|
||||||
labelClass,
|
labelClass,
|
||||||
|
labalClass,
|
||||||
inputClass,
|
inputClass,
|
||||||
fieldClass,
|
fieldClass,
|
||||||
onClick,
|
onClick,
|
||||||
@@ -53,7 +54,7 @@ export default function InputCom({
|
|||||||
<div className={`flex items-center justify-between mb-2.5 ${labelClass}`}>
|
<div className={`flex items-center justify-between mb-2.5 ${labelClass}`}>
|
||||||
{label && (
|
{label && (
|
||||||
<label
|
<label
|
||||||
className="input-label text-[#181c32] text-[13.975px] leading-[20.9625px] font-semibold flex items-center gap-1"
|
className={`input-label text-[#181c32] text-[13.975px] leading-[20.9625px] font-semibold flex items-center gap-1 ${labalClass}`}
|
||||||
htmlFor={name}
|
htmlFor={name}
|
||||||
>
|
>
|
||||||
{label}
|
{label}
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ const LoadedPage = ({reloader}) => {
|
|||||||
const { loading, data, error } = GetMyPageLoad(reloader);
|
const { loading, data, error } = GetMyPageLoad(reloader);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="w-full border border-gray-400 rounded-md p-4 flex flex-col h-72 gap-2 overflow-y-auto">
|
<div className="w-full border border-gray-400 rounded-md p-4 flex flex-col h-72 gap-2 overflow-y-auto dark:text-white">
|
||||||
{loading ? (
|
{loading ? (
|
||||||
<>
|
<>
|
||||||
<h1 className="text-xl font-bold tracking-wide">...</h1>
|
<h1 className="text-xl font-bold tracking-wide">...</h1>
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ const YourPageForm = ({ values, onChange, onSubmit, loading, msg }) => (
|
|||||||
fieldClass="px-4"
|
fieldClass="px-4"
|
||||||
parentClass="flex items-center gap-1 justify-between"
|
parentClass="flex items-center gap-1 justify-between"
|
||||||
labelClass="flex-[0.2] mb-0 font-semibold"
|
labelClass="flex-[0.2] mb-0 font-semibold"
|
||||||
|
labalClass="dark:text-white"
|
||||||
inputClass="flex-[0.8]"
|
inputClass="flex-[0.8]"
|
||||||
inputBg="bg-slate-100"
|
inputBg="bg-slate-100"
|
||||||
label="Introduction: "
|
label="Introduction: "
|
||||||
@@ -24,7 +25,7 @@ const YourPageForm = ({ values, onChange, onSubmit, loading, msg }) => (
|
|||||||
</label>
|
</label>
|
||||||
<textarea
|
<textarea
|
||||||
style={{ resize: "none" }}
|
style={{ resize: "none" }}
|
||||||
className="text-base px-4 py-2 rounded-md min-h-[100px] text-dark-gray dark:text-white w-full bg-slate-100 dark:bg-[#11131F] focus:ring-0 focus:outline-none flex-[0.8]"
|
className="text-base px-4 py-2 rounded-[36px] min-h-[100px] text-dark-gray dark:text-white w-full bg-slate-100 focus:ring-0 focus:outline-none flex-[0.8]"
|
||||||
name="description"
|
name="description"
|
||||||
cols="30"
|
cols="30"
|
||||||
rows="2"
|
rows="2"
|
||||||
|
|||||||
@@ -13,12 +13,39 @@ const YourPage = () => {
|
|||||||
const handleChange = ({ target: { name, value } }) =>
|
const handleChange = ({ target: { name, value } }) =>
|
||||||
setPageValues((prev) => ({ ...prev, [name]: value }));
|
setPageValues((prev) => ({ ...prev, [name]: value }));
|
||||||
|
|
||||||
const updateYourPageDetails = updateYourPage(
|
const updateYourPageDetails = async () => {
|
||||||
pageValues,
|
if (!pageValues.intro || !pageValues.description) return;
|
||||||
setResponse,
|
|
||||||
setPageValues,
|
try {
|
||||||
setReloader
|
setResponse({ loading: true, error: "", msg: "" });
|
||||||
);
|
|
||||||
|
let api = new usersService();
|
||||||
|
const res = await api.MyPageIntro(pageValues);
|
||||||
|
|
||||||
|
setTimeout(() => {
|
||||||
|
setResponse({
|
||||||
|
loading: false,
|
||||||
|
data: res.data,
|
||||||
|
msg: "Update Complete",
|
||||||
|
});
|
||||||
|
|
||||||
|
setReloader((prev) => !prev);
|
||||||
|
}, 1000);
|
||||||
|
|
||||||
|
setTimeout(() => {
|
||||||
|
setResponse({ msg: "" });
|
||||||
|
// Clear form after successful update
|
||||||
|
setPageValues({ intro: "", description: "" });
|
||||||
|
}, 3000);
|
||||||
|
} catch (error) {
|
||||||
|
return setResponse({
|
||||||
|
loading: false,
|
||||||
|
data: {},
|
||||||
|
error: "Error updating page",
|
||||||
|
msg: "",
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Layout>
|
<Layout>
|
||||||
@@ -57,39 +84,3 @@ const responseInitialValues = {
|
|||||||
error: "",
|
error: "",
|
||||||
msg: "",
|
msg: "",
|
||||||
};
|
};
|
||||||
|
|
||||||
function updateYourPage(pageValues, setResponse, setPageValues, setReloader) {
|
|
||||||
return async () => {
|
|
||||||
if (!pageValues.intro || !pageValues.description) return;
|
|
||||||
|
|
||||||
try {
|
|
||||||
setResponse({ loading: true, error: "", msg: "" });
|
|
||||||
|
|
||||||
let api = new usersService();
|
|
||||||
const res = await api.MyPageIntro(pageValues);
|
|
||||||
|
|
||||||
setTimeout(() => {
|
|
||||||
setResponse({
|
|
||||||
loading: false,
|
|
||||||
data: res.data,
|
|
||||||
msg: "Update Complete",
|
|
||||||
});
|
|
||||||
|
|
||||||
setReloader((prev) => !prev);
|
|
||||||
}, 1000);
|
|
||||||
|
|
||||||
setTimeout(() => {
|
|
||||||
setResponse({ msg: "" });
|
|
||||||
// Clear form after successful update
|
|
||||||
setPageValues({ intro: "", description: "" });
|
|
||||||
}, 3000);
|
|
||||||
} catch (error) {
|
|
||||||
return setResponse({
|
|
||||||
loading: false,
|
|
||||||
data: {},
|
|
||||||
error: "Error updating page",
|
|
||||||
msg: "",
|
|
||||||
});
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|||||||
Reference in New Issue
Block a user