Compare commits
11 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| a674688dce | |||
| ef339b163d | |||
| 1ce154cc06 | |||
| 67eb142ae2 | |||
| e784d84699 | |||
| cd6d540c4b | |||
| b0db896f6b | |||
| fafea8b1ad | |||
| bbb099d51f | |||
| bfc0521e54 | |||
| 6870c145d7 |
|
After Width: | Height: | Size: 25 KiB |
|
After Width: | Height: | Size: 20 KiB |
|
After Width: | Height: | Size: 19 KiB |
|
After Width: | Height: | Size: 18 KiB |
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 28 KiB |
|
After Width: | Height: | Size: 24 KiB |
|
After Width: | Height: | Size: 14 KiB |
@@ -168,7 +168,7 @@ export default function Login() {
|
||||
}
|
||||
let loginValue = readCookie('loginType')
|
||||
setLoginType(loginValue)
|
||||
},[loginType])
|
||||
},[])
|
||||
|
||||
|
||||
useEffect(() => {
|
||||
|
||||
@@ -0,0 +1,120 @@
|
||||
import { useState } from "react";
|
||||
import { Link, useLocation } from "react-router-dom";
|
||||
import { toast } from "react-toastify";
|
||||
import localImgLoad from "../../lib/localImgLoad";
|
||||
import CountDown from "../Helpers/CountDown";
|
||||
import Icons from "../Helpers/Icons";
|
||||
|
||||
export default function FamilyActiveJobsCard({ datas, hidden = false }) {
|
||||
|
||||
let { pathname } = useLocation();
|
||||
console.log('TESTING11111',datas)
|
||||
|
||||
const [imageUrl, setImageUrl] = useState("");
|
||||
const [addFavorite, setValue] = useState(false);
|
||||
const [options, setOption] = useState(false);
|
||||
const favoriteHandler = () => {
|
||||
if (!addFavorite) {
|
||||
setValue(true);
|
||||
toast.success("Added to Favorite List");
|
||||
} else {
|
||||
setValue(false);
|
||||
toast.warn("Remove to Favorite List");
|
||||
}
|
||||
};
|
||||
|
||||
return (
|
||||
<div className="card-style-one flex flex-col justify-between w-full h-[387px] bg-white dark:bg-dark-white p-3 pb rounded-2xl">
|
||||
<div className="content">
|
||||
{/* thumbnail */}
|
||||
<div className="w-full h-40">
|
||||
{/* thumbnail image */}
|
||||
<div
|
||||
className="thumbnail w-full h-full rounded-xl overflow-hidden px-4 pt-4"
|
||||
style={{
|
||||
background: `url(${localImgLoad(
|
||||
`images/taskbanners/${datas.banner}`
|
||||
)}) center / contain no-repeat`,
|
||||
}}
|
||||
>
|
||||
{/* <div className="product-options flex justify-between relative">*/}
|
||||
{/*<span*/}
|
||||
{/* onClick={favoriteHandler}*/}
|
||||
{/* className={`w-7 h-7 bg-white rounded-full flex justify-center items-center cursor-pointer ${*/}
|
||||
{/* addFavorite ? "text-pink" : " text-dark-gray"*/}
|
||||
{/* }`}*/}
|
||||
{/*>*/}
|
||||
{/* <Icons name="love" />*/}
|
||||
{/*</span>*/}
|
||||
{/* <span*/}
|
||||
{/* onClick={() => setOption(!options)}*/}
|
||||
{/* className="w-7 h-7 flex justify-center items-center bg-white rounded-full cursor-pointer"*/}
|
||||
{/* >*/}
|
||||
{/* <Icons name="dots" />*/}
|
||||
{/*</span>*/}
|
||||
{/* {options && (*/}
|
||||
{/* <div*/}
|
||||
{/* onClick={() => setOption(!options)}*/}
|
||||
{/* className="w-full h-screen fixed top-0 left-0 z-10"*/}
|
||||
{/* ></div>*/}
|
||||
{/* )}*/}
|
||||
{/* <div*/}
|
||||
{/* style={{ boxShadow: "0px 4px 87px 0px #0000002B" }}*/}
|
||||
{/* className={`drop-down-content w-[80px] bg-white dark:bg-dark-white rounded-[4px] p-2.5 absolute right-0 top-[100%] z-20 ${*/}
|
||||
{/* options ? "active" : ""*/}
|
||||
{/* }`}*/}
|
||||
{/* >*/}
|
||||
|
||||
{/* </div>*/}
|
||||
{/* </div>*/}
|
||||
{hidden && (
|
||||
<div className="flex justify-center">
|
||||
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
{/* details */}
|
||||
<div className="details">
|
||||
{/* product title */}
|
||||
<Link
|
||||
to="/manage-active-job"
|
||||
state={{ ...datas, pathname }}
|
||||
className="text-xl font-bold text-dark-gray dark:text-white mb-2 capitalize line-clamp-1"
|
||||
>
|
||||
{datas.title}
|
||||
</Link>
|
||||
{/* countdown */}
|
||||
<div className="w-full h-[54px] flex justify-evenly items-center p-2 rounded-lg border border-[#E3E4FE] dark:border-[#a7a9b533] ">
|
||||
<div className="flex flex-col justify-between">
|
||||
<p className="text-sm text-thin-light-gray dark:text-white tracking-wide">
|
||||
Task Code
|
||||
</p>
|
||||
<p className="text-base font-bold tracking-wide text-dark-gray dark:text-white">
|
||||
{datas.contract}
|
||||
</p>
|
||||
</div>
|
||||
<div className="w-[1px] h-full bg-[#E3E4FE] dark:bg-[#a7a9b533] "></div>
|
||||
<div className="flex flex-col justify-between">
|
||||
<p className="text-sm text-thin-light-gray dark:text-white tracking-wide">
|
||||
Remaining Time
|
||||
</p>
|
||||
<p className="text-base font-bold tracking-wide text-dark-gray dark:text-white">
|
||||
<CountDown lastDate={datas.delivery_date} />
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div className="card-buttons flex justify-end items-center space-x-2">
|
||||
<Link
|
||||
to="/manage-active-job"
|
||||
state={{ ...datas, pathname }}
|
||||
className="btn-shine w-[98px] h-[33px] text-white rounded-full text-sm bg-pink flex justify-center items-center"
|
||||
>
|
||||
View
|
||||
</Link>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
@@ -68,7 +68,7 @@ const FamilyWaitlist = ({ familyData, className, loader }) => {
|
||||
{addedDate}
|
||||
</p>
|
||||
<p className="text-sm text-dark-gray dark:text-white">
|
||||
Status: {value.status}
|
||||
Status: {value.status_text}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -16,6 +16,7 @@ const SuggestTask = ({ details, onClose, situation }) => {
|
||||
const initialValues = {
|
||||
title: details?.title || "",
|
||||
description: details?.description || "",
|
||||
banner: details?.banner
|
||||
};
|
||||
|
||||
const apiCall = new usersService();
|
||||
@@ -24,7 +25,7 @@ const SuggestTask = ({ details, onClose, situation }) => {
|
||||
if(!values.title && !values.description) return;
|
||||
try {
|
||||
setSubmitTask({ loading: true });
|
||||
const reqData = { ...values };
|
||||
const reqData = { ...values, };
|
||||
const res = await apiCall.sendFamilySuggestedTasks(reqData);
|
||||
if (res.internal_return < 0) {
|
||||
setSubmitTask({ loading: false, msg: res.status, state: "bad" });
|
||||
|
||||
@@ -1,20 +1,22 @@
|
||||
import React, { useRef } from "react";
|
||||
import ProductCardStyleOne from "../Cards/ProductCardStyleOne";
|
||||
//import ProductCardStyleOne from "../Cards/ProductCardStyleOne";
|
||||
import Icons from "../Helpers/Icons";
|
||||
import SliderCom from "../Helpers/SliderCom";
|
||||
import FamilyActiveJobsCard from "../Cards/FamilyActiveJobsCard";
|
||||
|
||||
export default function FamilyActiveLSlde({ className, trending }) {
|
||||
const settings = {
|
||||
arrows: false,
|
||||
slidesToShow: 3,
|
||||
slidesToScroll: 3,
|
||||
infinite: true,
|
||||
infinite: trending?.length > 3,
|
||||
responsive: [
|
||||
{
|
||||
breakpoint: 1025,
|
||||
settings: {
|
||||
slidesToShow: 3,
|
||||
slidesToScroll: 3,
|
||||
infinite: trending?.length > 3,
|
||||
},
|
||||
},
|
||||
{
|
||||
@@ -22,6 +24,7 @@ export default function FamilyActiveLSlde({ className, trending }) {
|
||||
settings: {
|
||||
slidesToShow: 2,
|
||||
slidesToScroll: 2,
|
||||
infinite: trending?.length > 2,
|
||||
},
|
||||
},
|
||||
{
|
||||
@@ -29,6 +32,7 @@ export default function FamilyActiveLSlde({ className, trending }) {
|
||||
settings: {
|
||||
slidesToShow: 1,
|
||||
slidesToScroll: 1,
|
||||
infinite: trending?.length > 1,
|
||||
},
|
||||
},
|
||||
],
|
||||
@@ -94,7 +98,7 @@ export default function FamilyActiveLSlde({ className, trending }) {
|
||||
{trending &&
|
||||
trending.length > 0 &&
|
||||
trending.map((item) => (
|
||||
<ProductCardStyleOne key={item.id} datas={item} />
|
||||
<FamilyActiveJobsCard key={item.id} datas={item} />
|
||||
))}
|
||||
</SliderCom>
|
||||
</div>
|
||||
|
||||
@@ -6,16 +6,20 @@ import FamilyActiveLSlde from "./FamilyActiveLSlde";
|
||||
import ParentWaiting from "../MyPendingJobs/ParentWaiting";
|
||||
import MyOffersFamilyTable from "../MyTasks/MyOffersFamilyTable";
|
||||
|
||||
export default function FamilyDash({familyOffers}) {
|
||||
export default function FamilyDash({familyOffers, MyActiveJobList}) {
|
||||
console.log("PROPS IN FAMILY DASH->", familyOffers);
|
||||
|
||||
const trending = datas.datas;
|
||||
const trending = MyActiveJobList;
|
||||
return (
|
||||
<div>
|
||||
<div className="home-page-wrapper">
|
||||
{/* <CommonHead commonHeadData={props.commonHeadData} /> */}
|
||||
<MyOffersFamilyTable familyOffers={familyOffers} className="mb-10" />
|
||||
|
||||
{trending && trending.length > 0 &&
|
||||
<FamilyActiveLSlde trending={trending} className="mb-10" />
|
||||
}
|
||||
|
||||
{/*<TopSellerTopBuyerSliderSection className="mb-10" />*/}
|
||||
<ParentWaiting className="mb-10" />
|
||||
</div>
|
||||
|
||||
@@ -8,15 +8,26 @@ import FullAccountDash from "./FullAccountDash";
|
||||
|
||||
export default function Home(props) {
|
||||
console.log("PROPS IN HOME->", props);
|
||||
const userApi = new usersService();
|
||||
const { commonHeadBanner } = useSelector((state) => state.commonHeadBanner);
|
||||
|
||||
let [nextDueTask, setNextDueTask] = useState({});
|
||||
const [MyOffersList, setMyOffersList] = useState([]);
|
||||
|
||||
const userApi = new usersService();
|
||||
|
||||
const { userDetails } = useSelector((state) => state?.userDetails);
|
||||
|
||||
const { commonHeadBanner } = useSelector((state) => state.commonHeadBanner);
|
||||
const [MyActiveJobList, setMyActiveJobList] = useState([]); // STATE TO HOLD ACTIVE/CURRENT TASKS
|
||||
|
||||
const getMyActiveJobList = async () => { // FUNCTION TO POPULATE ACTIVE/CURRENT TASK LIST
|
||||
try {
|
||||
const res = await userApi.getMyActiveTaskList();
|
||||
setMyActiveJobList(res?.data?.result_list);
|
||||
} catch (error) {
|
||||
setMyActiveJobList([]);
|
||||
console.log("Error getting tasks");
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
// FUNCTION TO GET DASH DATA TO DETERMINE CURRENT TASK DUE TIME
|
||||
const getHomeDate = () => {
|
||||
@@ -50,6 +61,10 @@ export default function Home(props) {
|
||||
fetchData();
|
||||
}, []);
|
||||
|
||||
useEffect(() => {
|
||||
getMyActiveJobList();
|
||||
}, []);
|
||||
|
||||
return (
|
||||
<Layout>
|
||||
<div className="home-page-wrapper">
|
||||
@@ -58,6 +73,7 @@ export default function Home(props) {
|
||||
account={userDetails}
|
||||
commonHeadData={props.bannerList}
|
||||
familyOffers={MyOffersList}
|
||||
MyActiveJobList={MyActiveJobList}
|
||||
/>
|
||||
) : userDetails && userDetails?.account_type == "FULL" ? (
|
||||
<FullAccountDash
|
||||
|
||||
@@ -5,6 +5,7 @@ import { handlePagingFunc } from "../Pagination/HandlePagination";
|
||||
import LoadingSpinner from "../Spinners/LoadingSpinner";
|
||||
import { useNavigate, useLocation } from "react-router-dom";
|
||||
import { PriceFormatter } from "../Helpers/PriceFormatter";
|
||||
import localImgLoad from "../../lib/localImgLoad";
|
||||
|
||||
const noTasksBg = require("../../assets/images/no-task-background.jpg");
|
||||
const noFamilyTasksBg = require("../../assets/images/family-no-task-background.jpg");
|
||||
@@ -80,7 +81,7 @@ export default function MyJobTable({ className, ActiveJobList, Account }) {
|
||||
<div className="flex space-x-2 items-center">
|
||||
<div className="w-full min-w-[60px] max-w-[60px] flex-[0.1] h-[60px] rounded-full overflow-hidden flex justify-center items-center">
|
||||
<img
|
||||
src={dataImage1}
|
||||
src={localImgLoad(`images/taskbanners/${task?.banner}`)}
|
||||
alt="data"
|
||||
className="w-full h-full"
|
||||
/>
|
||||
|
||||
@@ -6,8 +6,8 @@
|
||||
"profile_img": "profile.png",
|
||||
"price": "75,320 ETH",
|
||||
"thumbnil": "tranding-1.jpg",
|
||||
"remaing": "2023-03-04 4:00:00",
|
||||
"title": "laborum cupidatat sit"
|
||||
"remaing": "2023-08-04 4:00:00",
|
||||
"title": "Wash Dishes"
|
||||
},
|
||||
{
|
||||
"id": 1,
|
||||
@@ -15,8 +15,8 @@
|
||||
"profile_img": "profile.png",
|
||||
"price": "75,320 ETH",
|
||||
"thumbnil": "tranding-2.jpg",
|
||||
"remaing": "2023-03-04 4:00:00",
|
||||
"title": "velit occaecat voluptate"
|
||||
"remaing": "2023-07-24 4:00:00",
|
||||
"title": "Wash Planes"
|
||||
},
|
||||
{
|
||||
"id": 2,
|
||||
@@ -24,7 +24,7 @@
|
||||
"profile_img": "profile.png",
|
||||
"price": "75,320 ETH",
|
||||
"thumbnil": "tranding-3.jpg",
|
||||
"remaing": "2023-03-04 4:00:00",
|
||||
"remaing": "2023-07-17 4:00:00",
|
||||
"title": "est reprehenderit amet"
|
||||
},
|
||||
{
|
||||
@@ -33,7 +33,7 @@
|
||||
"profile_img": "profile.png",
|
||||
"price": "75,320 ETH",
|
||||
"thumbnil": "tranding-4.jpg",
|
||||
"remaing": "2023-03-04 4:00:00",
|
||||
"remaing": "2023-08-04 4:00:00",
|
||||
"title": "velit tempor nostrud"
|
||||
},
|
||||
{
|
||||
@@ -42,7 +42,7 @@
|
||||
"profile_img": "profile.png",
|
||||
"price": "75,320 ETH",
|
||||
"thumbnil": "tranding-4.jpg",
|
||||
"remaing": "2023-03-04 4:00:00",
|
||||
"remaing": "2023-09-04 4:00:00",
|
||||
"title": "adipisicing sit nostrud"
|
||||
},
|
||||
{
|
||||
|
||||