Merge branch 'home-banners-dashboard' of WrenchBoard/Users-Wrench into master
This commit is contained in:
@@ -1,12 +1,13 @@
|
|||||||
import React, { useState } from "react";
|
import React, { useState } from "react";
|
||||||
|
import { useDispatch } from "react-redux";
|
||||||
|
import { useLocation } from "react-router-dom";
|
||||||
import usersService from "../../../services/UsersService";
|
import usersService from "../../../services/UsersService";
|
||||||
|
import { tableReload } from "../../../store/TableReloads";
|
||||||
import ModalCom from "../../Helpers/ModalCom";
|
import ModalCom from "../../Helpers/ModalCom";
|
||||||
import { PriceFormatter } from "../../Helpers/PriceFormatter";
|
import { PriceFormatter } from "../../Helpers/PriceFormatter";
|
||||||
import LoadingSpinner from "../../Spinners/LoadingSpinner";
|
import LoadingSpinner from "../../Spinners/LoadingSpinner";
|
||||||
import Detail from "../../jobPopout/popoutcomponent/Detail";
|
import Detail from "../../jobPopout/popoutcomponent/Detail";
|
||||||
import { NewTasks } from "./forms";
|
import { NewTasks } from "./forms";
|
||||||
import { tableReload } from "../../../store/TableReloads";
|
|
||||||
import { useDispatch } from "react-redux";
|
|
||||||
|
|
||||||
const AssignTaskPopout = React.memo(
|
const AssignTaskPopout = React.memo(
|
||||||
({
|
({
|
||||||
@@ -17,11 +18,27 @@ const AssignTaskPopout = React.memo(
|
|||||||
familyTask,
|
familyTask,
|
||||||
activeTask,
|
activeTask,
|
||||||
setActiveTask,
|
setActiveTask,
|
||||||
setUpdatePage
|
setUpdatePage,
|
||||||
|
assignTaskChecker,
|
||||||
}) => {
|
}) => {
|
||||||
const apiCall = new usersService();
|
const apiCall = new usersService();
|
||||||
|
let { pathname, state } = useLocation();
|
||||||
|
|
||||||
const dispatch = useDispatch()
|
const [selectedFamilyUid, setSelectedFamilyUid] = useState(null);
|
||||||
|
|
||||||
|
const handleFamChange = (event) => {
|
||||||
|
setSelectedFamilyUid(event.target.value);
|
||||||
|
};
|
||||||
|
|
||||||
|
const dispatch = useDispatch();
|
||||||
|
|
||||||
|
const getFamilySession = JSON.parse(sessionStorage.getItem("family_list"));
|
||||||
|
|
||||||
|
const familyList = getFamilySession?.map((member) => (
|
||||||
|
<option key={member?.family_uid} value={member?.family_uid}>
|
||||||
|
{member?.firstname} {member?.lastname}
|
||||||
|
</option>
|
||||||
|
));
|
||||||
|
|
||||||
let [requestStatus, setRequestStatus] = useState({
|
let [requestStatus, setRequestStatus] = useState({
|
||||||
loading: false,
|
loading: false,
|
||||||
@@ -73,7 +90,9 @@ const AssignTaskPopout = React.memo(
|
|||||||
// API PAYLOADS
|
// API PAYLOADS
|
||||||
job_id: activeTask.data?.job_id,
|
job_id: activeTask.data?.job_id,
|
||||||
job_uid: activeTask.data?.job_uid,
|
job_uid: activeTask.data?.job_uid,
|
||||||
family_uid: familyDetailsData?.uid || details?.family_uid,
|
family_uid: selectedFamilyUid
|
||||||
|
? selectedFamilyUid
|
||||||
|
: familyDetailsData?.uid || details?.family_uid,
|
||||||
job_description: activeTask.data?.description,
|
job_description: activeTask.data?.description,
|
||||||
assign_mode: 110011,
|
assign_mode: 110011,
|
||||||
};
|
};
|
||||||
@@ -94,11 +113,11 @@ const AssignTaskPopout = React.memo(
|
|||||||
const requiredFields = {
|
const requiredFields = {
|
||||||
banner,
|
banner,
|
||||||
// category,
|
// category,
|
||||||
currency:country,
|
currency: country,
|
||||||
description,
|
description,
|
||||||
'job detail':job_detail,
|
"job detail": job_detail,
|
||||||
price,
|
price,
|
||||||
timeline:timeline_days,
|
timeline: timeline_days,
|
||||||
title,
|
title,
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -108,7 +127,9 @@ const AssignTaskPopout = React.memo(
|
|||||||
setRequestStatus({
|
setRequestStatus({
|
||||||
loading: false,
|
loading: false,
|
||||||
status: false,
|
status: false,
|
||||||
message: `${field[0].toUpperCase()+field.slice(1).toLowerCase()} is empty`,
|
message: `${
|
||||||
|
field[0].toUpperCase() + field.slice(1).toLowerCase()
|
||||||
|
} is empty`,
|
||||||
});
|
});
|
||||||
return setTimeout(() => {
|
return setTimeout(() => {
|
||||||
setRequestStatus({ loading: false, status: false, message: "" });
|
setRequestStatus({ loading: false, status: false, message: "" });
|
||||||
@@ -148,7 +169,7 @@ const AssignTaskPopout = React.memo(
|
|||||||
status: true,
|
status: true,
|
||||||
message: "action successful",
|
message: "action successful",
|
||||||
});
|
});
|
||||||
setUpdatePage(prev => !prev) // Updates family task page by calling the useeffect hook
|
setUpdatePage((prev) => !prev); // Updates family task page by calling the useeffect hook
|
||||||
dispatch(tableReload({ type: "WALLETTABLE" })); // RELOADS USER WALLET
|
dispatch(tableReload({ type: "WALLETTABLE" })); // RELOADS USER WALLET
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
setRequestStatus({ loading: false, status: false, message: "" });
|
setRequestStatus({ loading: false, status: false, message: "" });
|
||||||
@@ -169,15 +190,29 @@ const AssignTaskPopout = React.memo(
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<ModalCom
|
<ModalCom action={action} situation={situation}>
|
||||||
action={action}
|
|
||||||
situation={situation}
|
|
||||||
>
|
|
||||||
<div className="w-11/12 lg:w-[700px] bg-white dark:bg-dark-white lg:rounded-2xl overflow-y-auto">
|
<div className="w-11/12 lg:w-[700px] bg-white dark:bg-dark-white lg:rounded-2xl overflow-y-auto">
|
||||||
<div className="w-full flex items-center justify-between lg:px-10 lg:py-8 px-[30px] py-[23px] border-b dark:border-[#5356fb29] border-light-purple">
|
<div className="w-full flex items-center justify-between lg:px-10 lg:py-8 px-[30px] py-[23px] border-b dark:border-[#5356fb29] border-light-purple">
|
||||||
<h1 className="text-26 font-bold text-dark-gray dark:text-white tracking-wide">
|
<h1 className="text-26 font-bold text-dark-gray dark:text-white tracking-wide flex items-center">
|
||||||
Assign task to{" "}
|
Assign task to{" "}
|
||||||
{familyDetailsData?.firstname || details?.firstName}
|
{pathname === "/acc-family/activities" ? (
|
||||||
|
<div className="w-[200px] h-[30px] ml-2">
|
||||||
|
<select
|
||||||
|
name=""
|
||||||
|
id=""
|
||||||
|
className="text-black/70 bg-transparent px-2 transition-all cursor-pointer focus:outline-none border border-gray-200 rounded-lg w-full h-full text-[1.2rem]"
|
||||||
|
onChange={handleFamChange}
|
||||||
|
value={selectedFamilyUid}
|
||||||
|
>
|
||||||
|
<option value="" disabled selected>
|
||||||
|
Select a member
|
||||||
|
</option>
|
||||||
|
{familyList}
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
) : (
|
||||||
|
<>{familyDetailsData?.firstname || details?.firstName}</>
|
||||||
|
)}
|
||||||
</h1>
|
</h1>
|
||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ import { apiConst } from "../../lib/apiConst";
|
|||||||
import usersService from "../../services/UsersService";
|
import usersService from "../../services/UsersService";
|
||||||
import LoadingSpinner from "../Spinners/LoadingSpinner";
|
import LoadingSpinner from "../Spinners/LoadingSpinner";
|
||||||
import AssignTaskPopout from "./FamilyPopout/AssignTaskPopout";
|
import AssignTaskPopout from "./FamilyPopout/AssignTaskPopout";
|
||||||
|
import { useLocation } from "react-router-dom";
|
||||||
|
|
||||||
// Lazy Imports for components
|
// Lazy Imports for components
|
||||||
const FamilyWaitlist = lazy(() => import("./Tabs/FamilyNewWaitlist"));
|
const FamilyWaitlist = lazy(() => import("./Tabs/FamilyNewWaitlist"));
|
||||||
@@ -10,12 +11,17 @@ const FamilyTasks = lazy(() => import("./Tabs/FamilyNewTasks"));
|
|||||||
const FamilyPending = lazy(() => import("./Tabs/FamilyNewPending"));
|
const FamilyPending = lazy(() => import("./Tabs/FamilyNewPending"));
|
||||||
|
|
||||||
export default function FamilyTableNew() {
|
export default function FamilyTableNew() {
|
||||||
|
let { pathname } = useLocation();
|
||||||
|
|
||||||
// Initial state for family details
|
// Initial state for family details
|
||||||
const initialDetailState = {
|
const initialDetailState = {
|
||||||
loading: false,
|
loading: false,
|
||||||
data: null,
|
data: null,
|
||||||
link: "",
|
link: "",
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const [assignTaskChecker, setAssignTaskChecker] = useState(false);
|
||||||
|
|
||||||
// console.log('accountDetails',accountDetails)
|
// console.log('accountDetails',accountDetails)
|
||||||
// State for family details, tasks, waitlist, and pending
|
// State for family details, tasks, waitlist, and pending
|
||||||
const [details, setDetails] = useState({
|
const [details, setDetails] = useState({
|
||||||
@@ -80,6 +86,7 @@ export default function FamilyTableNew() {
|
|||||||
loader={details.familyTasks.loading}
|
loader={details.familyTasks.loading}
|
||||||
familyData={details.familyTasks.data}
|
familyData={details.familyTasks.data}
|
||||||
action={familyPopUpHandler}
|
action={familyPopUpHandler}
|
||||||
|
setAssignTaskChecker={setAssignTaskChecker}
|
||||||
/>
|
/>
|
||||||
),
|
),
|
||||||
Waiting: (
|
Waiting: (
|
||||||
@@ -120,7 +127,7 @@ export default function FamilyTableNew() {
|
|||||||
|
|
||||||
const [familyTasksData, familyWaitingRes, familyPendingRes] =
|
const [familyTasksData, familyWaitingRes, familyPendingRes] =
|
||||||
await Promise.all([
|
await Promise.all([
|
||||||
apiCall.getMyActiveTaskList(),
|
apiCall.getMyActiveJobList(),
|
||||||
apiCall.ManageFamilyNewWaitlist(),
|
apiCall.ManageFamilyNewWaitlist(),
|
||||||
apiCall.ManageFamilyPending(),
|
apiCall.ManageFamilyPending(),
|
||||||
]);
|
]);
|
||||||
@@ -269,8 +276,9 @@ export default function FamilyTableNew() {
|
|||||||
setFamilyTask={setFamilyTask}
|
setFamilyTask={setFamilyTask}
|
||||||
setActiveTask={setActiveTask}
|
setActiveTask={setActiveTask}
|
||||||
activeTask={activeTask}
|
activeTask={activeTask}
|
||||||
// familyDetailsData={details.familyDetails.data}
|
|
||||||
setUpdatePage={setUpdatePage}
|
setUpdatePage={setUpdatePage}
|
||||||
|
pathname={pathname}
|
||||||
|
assignTaskChecker={assignTaskChecker}
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ export default function FamilyPending({ familyData, image_link, loader }) {
|
|||||||
handlePagingFunc(e, setCurrentPage);
|
handlePagingFunc(e, setCurrentPage);
|
||||||
};
|
};
|
||||||
|
|
||||||
console.log(image_link)
|
console.log(image_link);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div
|
<div
|
||||||
|
|||||||
@@ -10,33 +10,33 @@ export default function FamilyNewTasks({
|
|||||||
familyData,
|
familyData,
|
||||||
className,
|
className,
|
||||||
loader,
|
loader,
|
||||||
accountDetails,
|
|
||||||
action,
|
action,
|
||||||
|
image_link,
|
||||||
}) {
|
}) {
|
||||||
let navigate = useNavigate();
|
let navigate = useNavigate();
|
||||||
let { pathname } = useLocation();
|
let { pathname } = useLocation();
|
||||||
|
|
||||||
// ...
|
// ...
|
||||||
const filteredFamilyData = useMemo(
|
let filteredFamilyData = useMemo(
|
||||||
() =>
|
() => familyData?.filter((data) => data.family_uid !== ""),
|
||||||
familyData?.result_list?.filter(
|
[familyData]
|
||||||
(data) => data?.family_uid === accountDetails?.family_uid
|
|
||||||
),
|
|
||||||
[familyData, accountDetails]
|
|
||||||
);
|
);
|
||||||
|
|
||||||
const [currentPage, setCurrentPage] = useState(0);
|
const [currentPage, setCurrentPage] = useState(0);
|
||||||
const indexOfFirstItem = Number(currentPage);
|
const indexOfFirstItem = Number(currentPage);
|
||||||
const indexOfLastItem =
|
const indexOfLastItem =
|
||||||
Number(indexOfFirstItem) + Number(process.env.REACT_APP_ITEM_PER_PAGE);
|
Number(indexOfFirstItem) + Number(process.env.REACT_APP_ITEM_PER_PAGE);
|
||||||
const currentTasks = familyData?.slice(indexOfFirstItem, indexOfLastItem);
|
const currentTasks = filteredFamilyData?.slice(
|
||||||
|
indexOfFirstItem,
|
||||||
|
indexOfLastItem
|
||||||
|
);
|
||||||
|
|
||||||
const handlePagination = (e) => handlePagingFunc(e, setCurrentPage);
|
const handlePagination = (e) => handlePagingFunc(e, setCurrentPage);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div
|
<div
|
||||||
className={`update-table w-full bg-white dark:bg-dark-white h-full lg:min-h-[538px] overflow-hidden rounded-2xl section-shadow p-3 ${
|
className={`update-table w-full bg-white dark:bg-dark-white h-full lg:min-h-[538px] overflow-hidden rounded-2xl section-shadow p-3 ${
|
||||||
familyData && "flex items-center justify-center"
|
familyData?.length <= 0 && "flex items-center justify-center"
|
||||||
}`}
|
}`}
|
||||||
>
|
>
|
||||||
{loader ? (
|
{loader ? (
|
||||||
@@ -76,11 +76,9 @@ export default function FamilyNewTasks({
|
|||||||
value?.currency_code,
|
value?.currency_code,
|
||||||
value?.currency
|
value?.currency
|
||||||
);
|
);
|
||||||
let image = `${
|
let image = `${image_link}${localStorage.getItem(
|
||||||
familyData.session_image_server
|
"session_token"
|
||||||
}${localStorage.getItem("session_token")}/job/${
|
)}/job/${value.job_uid}`;
|
||||||
value.job_uid
|
|
||||||
}`;
|
|
||||||
return (
|
return (
|
||||||
<tr
|
<tr
|
||||||
key={index}
|
key={index}
|
||||||
@@ -133,7 +131,6 @@ export default function FamilyNewTasks({
|
|||||||
state: {
|
state: {
|
||||||
...value,
|
...value,
|
||||||
pathname,
|
pathname,
|
||||||
accountDetails,
|
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
}}
|
}}
|
||||||
@@ -156,11 +153,11 @@ export default function FamilyNewTasks({
|
|||||||
prev={currentPage == 0 ? true : false}
|
prev={currentPage == 0 ? true : false}
|
||||||
next={
|
next={
|
||||||
currentPage + Number(process.env.REACT_APP_ITEM_PER_PAGE) >=
|
currentPage + Number(process.env.REACT_APP_ITEM_PER_PAGE) >=
|
||||||
familyData?.result_list?.length
|
filteredFamilyData?.length
|
||||||
? true
|
? true
|
||||||
: false
|
: false
|
||||||
}
|
}
|
||||||
data={familyData?.result_list}
|
data={filteredFamilyData}
|
||||||
start={indexOfFirstItem}
|
start={indexOfFirstItem}
|
||||||
stop={indexOfLastItem}
|
stop={indexOfLastItem}
|
||||||
/>
|
/>
|
||||||
|
|||||||
@@ -109,6 +109,7 @@ export default function FamilyAcc() {
|
|||||||
if (data?.internal_return >= 0 && data?.status === "OK") {
|
if (data?.internal_return >= 0 && data?.status === "OK") {
|
||||||
const { result_list, session_image_server } = data;
|
const { result_list, session_image_server } = data;
|
||||||
setFamilyList({ result_list, session_image_server });
|
setFamilyList({ result_list, session_image_server });
|
||||||
|
sessionStorage.setItem("family_list", JSON.stringify(result_list))
|
||||||
setLoader(false);
|
setLoader(false);
|
||||||
} else {
|
} else {
|
||||||
return;
|
return;
|
||||||
@@ -165,7 +166,7 @@ export default function FamilyAcc() {
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className="flex gap-4 items-center">
|
<div className="flex gap-4 items-center">
|
||||||
<Link to="/acc-family/activities" className={`nav-item flex items-center rounded-md shadow-sm justify-center cursor-pointer dark:bg-[linear-gradient(134.38deg,#f539f8_0%,#c342f9_43.55%,#5356fb_104.51%)] bg-[#76a5df] text-white px-2 gap-2`}>
|
<Link state={familyList} to="/acc-family/activities" className={`nav-item flex items-center rounded-md shadow-sm justify-center cursor-pointer dark:bg-[linear-gradient(134.38deg,#f539f8_0%,#c342f9_43.55%,#5356fb_104.51%)] bg-[#76a5df] text-white px-2 gap-2`}>
|
||||||
<span className="item-icon group-hover:bg-purple group-hover:text-white w-8 h-8 flex justify-center items-center transition-all duration-300 ease-in-out bg-light-purple dark:bg-dark-light-purple rounded-full text-dark-gray dark:text-white dark:text-lighter-gray">
|
<span className="item-icon group-hover:bg-purple group-hover:text-white w-8 h-8 flex justify-center items-center transition-all duration-300 ease-in-out bg-light-purple dark:bg-dark-light-purple rounded-full text-dark-gray dark:text-white dark:text-lighter-gray">
|
||||||
<Icons name="pending-job" />
|
<Icons name="pending-job" />
|
||||||
</span>
|
</span>
|
||||||
|
|||||||
@@ -254,10 +254,17 @@ const SuggestTask = ({ details, onClose, situation, continuePopupData }) => {
|
|||||||
>
|
>
|
||||||
{pathname === "/acc-family/activities" ? (
|
{pathname === "/acc-family/activities" ? (
|
||||||
<>
|
<>
|
||||||
{" "}
|
{submitTask.loading ? (
|
||||||
<>
|
"Sending..."
|
||||||
Continue <Icons name="chevron-right" />
|
) : submitTask.state === "success" ? (
|
||||||
</>
|
"Completed"
|
||||||
|
) : submitTask.state === "bad" ? (
|
||||||
|
"An Error Occurred"
|
||||||
|
) : (
|
||||||
|
<>
|
||||||
|
Continue <Icons name="chevron-right" />
|
||||||
|
</>
|
||||||
|
)}
|
||||||
</>
|
</>
|
||||||
) : (
|
) : (
|
||||||
<>
|
<>
|
||||||
|
|||||||
Reference in New Issue
Block a user