Compare commits

...

13 Commits

Author SHA1 Message Date
victorAnumudu b7b09fca66 button style changed 2023-05-29 20:36:42 +01:00
victorAnumudu d1e9c21dbb Button display name changed 2023-05-29 20:03:13 +01:00
CHIEFSOFT\ameye 6ceb771005 Merge branch 'master' of https://gitlab.chiefsoft.net/WrenchBoard/Users-Wrench 2023-05-29 14:57:40 -04:00
CHIEFSOFT\ameye 7d3d5eb8c2 Hx page 2023-05-29 14:56:56 -04:00
ameye 6c39686ee2 Merge branch 'cancel-btn-bug' of WrenchBoard/Users-Wrench into master 2023-05-29 18:52:47 +00:00
victorAnumudu 02d29023d9 made cancel btn to close the popout modal 2023-05-29 19:50:49 +01:00
CHIEFSOFT\ameye da24c8a535 History tabnles 2023-05-29 14:47:08 -04:00
ameye 6dbd080f29 Merge branch 'enable-and-active-jobs' of WrenchBoard/Users-Wrench into master 2023-05-29 18:25:27 +00:00
Ebube 97501c6f59 . 2023-05-29 19:11:10 +01:00
Ebube 4a95dec4b8 Merge branch 'master' of https://gitlab.chiefsoft.net/WrenchBoard/Users-Wrench into enable-and-active-jobs 2023-05-29 18:36:43 +01:00
Ebube fe0cd191bc . 2023-05-29 18:36:01 +01:00
ameye 708e9f601a Merge branch 'btn-center' of WrenchBoard/Users-Wrench into master 2023-05-29 17:05:01 +00:00
CHIEFSOFT\ameye 9f01a8e5e4 fix family resouce menu 2023-05-29 12:33:33 -04:00
7 changed files with 135 additions and 93 deletions
+43 -15
View File
@@ -6,7 +6,7 @@ import usersService from "../../services/UsersService";
import { useSelector } from "react-redux";
import { Form, Formik } from "formik";
import { Field, Form, Formik } from "formik";
import * as Yup from "yup";
const validationSchema = Yup.object().shape({
@@ -50,7 +50,7 @@ function AddJob() {
const ApiCall = new usersService();
const navigate = useNavigate();
let {userDetails} = useSelector((state)=> state.userDetails)
let { userDetails } = useSelector((state) => state.userDetails);
let [pageLoading, setPageLoading] = useState(true); // State used for knowing when the page is mounting
@@ -199,7 +199,7 @@ function AddJob() {
Select...
</option>
{country.data.map((item, index) => {
if(item[0] == userDetails.country){
if (item[0] == userDetails.country) {
return (
<option
key={index}
@@ -208,7 +208,7 @@ function AddJob() {
>
{item[1]}
</option>
)
);
}
})}
</>
@@ -316,19 +316,34 @@ function AddJob() {
</div>
<div className="field w-full mb-6">
<InputCom
fieldClass="px-6"
label="Timeline"
labelClass="tracking-wide"
inputBg="bg-slate-100"
type="text"
<div className={`flex items-center justify-between mb-2.5`}>
<label
className="input-label text-[#181c32] dark:text-white text-[13.975px] leading-[20.9625px] font-semibold block"
htmlFor="timeline_days"
>
Timeline
<span className="text-green-700 text-sm tracking-wide">
- Expected duration of this task
</span>
</label>
</div>
<Field
component="select"
name="timeline_days"
spanTag=" - Expected duration of this task"
// placeholder="Please Enter Detail Description of Job"
className="input-field p-2 mt-3 rounded-md placeholder:text-base text-dark-gray dark:text-white w-full h-10 bg-slate-100 dark:bg-[#11131F] focus:ring-0 focus:outline-none"
value={props.values.timeline_days}
inputHandler={props.handleChange}
blurHandler={props.handleBlur}
/>
>
<option value="">Select Duration</option>
{publicArray.map(({ name, duration }, idx) => (
<option
className="text-slate-500 text-lg"
value={duration}
>
{name}
</option>
))}
</Field>
{props.errors.timeline_days &&
props.touched.timeline_days && (
<p className="text-sm text-red-500">
@@ -396,3 +411,16 @@ function AddJob() {
}
export default AddJob;
const publicArray = [
{ duration: 1, name: "1 day" },
{ duration: 2, name: "2 days" },
{ duration: 3, name: "3 days" },
{ duration: 4, name: "4 days" },
{ duration: 5, name: "5 days" },
{ duration: 6, name: "6 days" },
{ duration: 7, name: "1 week" },
{ duration: 14, name: "2 weeks" },
{ duration: 21, name: "3 weeks" },
{ duration: 28, name: "4 weeks" },
];
@@ -19,8 +19,7 @@ function PurchasesTable({purchase}) {
<table className="wallet-activity w-full table-auto border-collapse text-left">
<thead className='border-b-2'>
<tr className='text-slate-600'>
<th className="p-2">Date</th>
<th className="p-2">Description</th>
<th className="p-4">Trx.</th>
<th className="p-2">Amount</th>
<th className="p-2">Fee</th>
</tr>
@@ -30,8 +29,9 @@ function PurchasesTable({purchase}) {
<tbody>
{currentPurchase.map((item, index) => (
<tr key={index} className='text-slate-500'>
<td className="p-2">{item.added_date}</td>
<td className="p-2">{item.confirmation}</td>
<td className="p-4">{item.added_date}<br />
<b>{item.confirmation} </b>
</td>
<td className="p-2">{item.amount}</td>
<td className="p-2">{item.fee}</td>
</tr>
@@ -20,9 +20,9 @@ function RecentActivityTable({payment}) {
<thead className='border-b-2'>
<tr className='text-slate-600'>
<th className="p-2">Date</th>
<th className="p-2">Recipient</th>
<th className="p-2">Amount/Fee</th>
<th className="p-2">Conf/Status</th>
<th className="p-4">Trx.</th>
<th className="p-2">Amnt./Fee</th>
<th className="p-2">Status</th>
</tr>
</thead>
{payment.data.length ?
@@ -31,8 +31,8 @@ function RecentActivityTable({payment}) {
{currentActivity.map((item, index) => (
<tr key={index} className='text-slate-500'>
<td className="p-2">{item.trx_date}</td>
<td className="p-2" dangerouslySetInnerHTML={{__html:item.recipient}}></td>
<td className="p-2">{item.amount}/{item.fee}</td>
<td className="p-4" dangerouslySetInnerHTML={{__html:item.recipient}}></td>
<td className="p-2">{item.amount}<br />{item.fee}</td>
<td className="p-2">{item.status}</td>
</tr>
))}
+8 -4
View File
@@ -46,6 +46,8 @@ export default function RightSideBar() {
</div>
<div className="platform-list">
{userDetails && userDetails?.account_type !== "FAMILY" && (
<>
<div className="item flex space-x-3 items-center mb-4">
{/* image */}
<div className="w-8 h-8 rounded-full">
@@ -77,8 +79,7 @@ export default function RightSideBar() {
</div>
{/* action */}
</div>
{userDetails && userDetails?.account_type !== "FAMILY" && (
<>
<div className="item flex space-x-3 items-center mb-4">
{/* image */}
<div className="w-8 h-8 rounded-full">
@@ -122,6 +123,10 @@ export default function RightSideBar() {
</p>
</div>
</div>
</>
)}
<div className="item flex space-x-3 items-center mb-4">
{/* image */}
<div className="w-8 h-8 rounded-full">
@@ -156,8 +161,7 @@ export default function RightSideBar() {
</p>
</div>
</div>
</>
)}
</div>
</div>
{/*<SideStatistics />*/}
+32 -13
View File
@@ -3,12 +3,12 @@ import Detail from "./popoutcomponent/Detail";
import ModalCom from "../Helpers/ModalCom";
import InputCom from "../Helpers/Inputs/InputCom/index";
import SiteService from "../../services/SiteService";
import { Form, Formik, Field } from "formik";
import { Form, Formik, Field, ErrorMessage } from "formik";
import * as Yup from "yup";
import LoadingSpinner from "../Spinners/LoadingSpinner";
const validationSchema = Yup.object().shape({
family: Yup.string().required("THis is required "),
family: Yup.string().required("This is required "),
public: Yup.string(),
individual: Yup.string()
.email("Invalid email format")
@@ -68,18 +68,29 @@ function JobListPopout({ details, onClose, situation }) {
group: "",
};
let [inputs, setInputs] = useState({});
let [textArea, setTextArea] = useState(details?.job_detail);
const [errMsg, setErrMsg] = useState("")
const handleInputChange = ({ target: { name, value } }) => {
setInputs((prev) => ({ ...prev, [name]: value }));
const handleInputChange = ({ target: { value } }) => {
setTextArea(value);
};
const errorHandler = ({target: {name}}) => {
}
const jobFieldHandler = async (values, helpers) => {
let { job_id, job_uid, job_detail } = details;
let { job_id, job_uid } = details;
if(!textArea) {
setErrMsg("delivery detail is required!")
return
}
let jobReq = {
job_id,
job_uid,
job_description: job_detail
job_description: textArea
};
let reqData;
@@ -119,16 +130,19 @@ function JobListPopout({ details, onClose, situation }) {
assign_mode: 110033,
};
setLoader({ jobFields: { group: true } });
} else {
setErrMsg("err herre")
return
}
try {
const res = await apiCall.assignJobTask(reqData);
let { data } = await res;
setLoader({ member: false, jobFields: false });
setLoader({ jobFields: false });
onClose();
throw new Response(data);
} catch (error) {
setLoader({ member: false, jobFields: false });
setLoader({ jobFields: false });
throw new Error(error);
}
};
@@ -200,11 +214,11 @@ function JobListPopout({ details, onClose, situation }) {
<textarea
className={`p-1 w-full text-sm text-slate-900 outline-none border border-slate-300 rounded-md`}
rows="5"
name="details"
style={{ resize: "none" }}
value={details.job_detail}
value={textArea}
onChange={handleInputChange}
/>
{/* <p>{errMsg}</p> */}
</div>
</div>
@@ -226,9 +240,10 @@ function JobListPopout({ details, onClose, situation }) {
value={props?.values.family}
data={familyList}
btnText="Assign to family"
optionText="select family"
optionText="Select Family"
loader={loader?.jobFields.family}
/>
{/* <p>{errMsg}</p> */}
</Form>
);
}}
@@ -250,9 +265,10 @@ function JobListPopout({ details, onClose, situation }) {
value={props?.values.public}
data={publicArray}
btnText="Show Task to Public"
optionText="select duration"
optionText="Select Duration"
loader={loader?.jobFields.public}
/>
{/* <p>{errMsg}</p> */}
</Form>
);
}}
@@ -277,6 +293,7 @@ function JobListPopout({ details, onClose, situation }) {
btnText="Send Offer to Individual"
loader={loader?.jobFields.individual}
/>
{/* <p>{errMsg}</p> */}
</Form>
);
}}
@@ -300,10 +317,12 @@ function JobListPopout({ details, onClose, situation }) {
optionText="Group"
loader={loader?.jobFields.group}
/>
{/* <p>{errMsg}</p> */}
</Form>
);
}}
</Formik>
</div>
{/* END OF ACTION SECTION */}
</div>
+6 -15
View File
@@ -33,10 +33,6 @@ function OfferJobPopout({details, onClose, situation}) {
setRequestStatus({loading: true, status: false, message: '', trigger: 'reject'})
reqData.offer_result = 333
}
if(name == 'cancel'){
setRequestStatus({loading: true, status: false, message: '', trigger: 'cancel'})
reqData.offer_result = 222
}
// API CALL
apiUrl.offersResponse(reqData).then(response => {
@@ -95,7 +91,7 @@ function OfferJobPopout({details, onClose, situation}) {
</div>
<div className='md:flex bg-white rounded-lg shadow-lg'>
<div className='p-4 w-full md:w-3/4 md:border-r-2'>
<p className='text-lg my-5 font-semibold text-slate-900 tracking-wide'>Opportunity to make some money by introducing 10 of our recent stories from our</p>
<p className='text-lg my-5 font-semibold text-slate-900 tracking-wide'>{details.title}</p>
{/* INPUT SECTION */}
<div className='my-2 md:flex'>
@@ -152,7 +148,7 @@ function OfferJobPopout({details, onClose, situation}) {
name='accept'
onClick={handleOffer}
disabled={requestStatus.loading}
className='px-2 py-1 text-sm text-white btn-gradient tracking-wide rounded-md'>
className='px-2 h-11 flex justify-center items-center btn-gradient text-base rounded-full text-white'>
Accept Offer
</button>
}
@@ -166,7 +162,7 @@ function OfferJobPopout({details, onClose, situation}) {
name='reject'
onClick={handleOffer}
disabled={requestStatus.loading}
className='px-2 py-1 text-sm text-white bg-red-500 hover:opacity-90 rounded-md'>
className='px-2 h-11 flex justify-center items-center btn-gradient text-base rounded-full text-white'>
Reject Offer
</button>
}
@@ -191,19 +187,14 @@ function OfferJobPopout({details, onClose, situation}) {
{/* close button */}
<div className="p-6 flex justify-end">
{requestStatus.loading && requestStatus.trigger == 'cancel' ?
<LoadingSpinner size={8} color='sky-blue' />
:
<button
onClick={handleOffer}
onClick={onClose}
disabled={requestStatus.loading}
type="button"
name='cancel'
className="border border-red-500 text-red-500 text-18 tracking-wide px-2 py-2 rounded-full"
className="border-gradient text-18 tracking-wide px-2 py-2 rounded-full"
>
Cancel
<span className="text-gradient">Cancel</span>
</button>
}
</div>
{/* end of close button */}
</div>
@@ -39,7 +39,7 @@ function PendingJobsPopout({details, onClose, situation}) {
</div>
<div className='md:flex bg-white rounded-lg shadow-lg'>
<div className='p-4 w-full md:w-3/4 md:border-r-2'>
<p className='text-base font-semibold text-slate-900 tracking-wide'>Opportunity to make some money by introducing 10 of our recent stories from our</p>
<p className='text-base font-semibold text-slate-900 tracking-wide'>{details.title}</p>
<div className='my-2 p-2 flex justify-start items-center space-x-2 bg-red-100 border-2 border-red-300'>
<span className='w-8 h-8 text-center text-sm rounded-full flex justify-center items-center text-red-300 bg-yellow-100'>!</span>
<div className=''>
@@ -110,15 +110,15 @@ function PendingJobsPopout({details, onClose, situation}) {
</div>
<div className='my-3'>
<button className='px-2 py-1 text-sm text-white btn-gradient tracking-wide rounded-md'>Extend by a week</button>
<button className='px-2 h-11 flex justify-center items-center btn-gradient text-base rounded-full text-white'>Extend by a week</button>
</div>
<div className='my-3'>
<button className='px-2 py-1 text-sm text-white btn-gradient tracking-wide rounded-md'>Send to me</button>
<button className='px-2 h-11 flex justify-center items-center btn-gradient text-base rounded-full text-white'>Send to me</button>
</div>
<div className='mt-10 md:mt-32 md:flex md:justify-center'>
<button className='px-2 py-1 text-sm text-white bg-red-500 hover:opacity-90 rounded-md'>Cancel Offer</button>
<button className='px-2 h-11 flex justify-center items-center btn-gradient text-base rounded-full text-white'>Cancel Offer</button>
</div>
</div>
</div>