Compare commits

...

22 Commits

Author SHA1 Message Date
CHIEFSOFT\ameye 5900fc7981 Job list 2025-08-02 05:00:46 -04:00
CHIEFSOFT\ameye 9a0e298af7 Icrease jibs on site 2025-08-02 04:30:52 -04:00
ameye f7607d04d4 Merge branch 'footer-update-change' of WrenchBoard/WrenchBoardNigeriaMainSite into master 2025-08-01 22:13:05 +00:00
victorAnumudu b635c7d7b6 updated footer section 2025-08-01 20:56:34 +01:00
CHIEFSOFT\ameye 2c66d3c6d6 footer fix 2025-07-31 07:39:16 -04:00
CHIEFSOFT\ameye 8dce26e924 fixed url 2025-07-31 07:25:44 -04:00
tokslaw 3d8da1af96 Merge branch 'blog-display-adjust' of WrenchBoard/WrenchBoardNigeriaMainSite into master 2024-05-13 17:02:33 +00:00
victorAnumudu 4b6b6b987f adjusted blog display on mobile tab view 2024-05-13 13:00:46 +01:00
ameye 3d8e757fac Merge branch 'slider-adjustment' of WrenchBoard/WrenchBoardNigeriaMainSite into master 2024-04-22 11:39:17 +00:00
victorAnumudu 5b42cc01f7 adjusted slider display 2024-04-19 05:48:26 +01:00
ameye bf00f7ed61 Merge branch 'font-adjustment' of WrenchBoard/WrenchBoardNigeriaMainSite into master 2024-04-02 15:09:48 +00:00
victorAnumudu 345a0d9d25 adjusted font size 2024-04-02 15:58:58 +01:00
ameye 7464ab2bcd Merge branch 'nav-resources' of WrenchBoard/WrenchBoardNigeriaMainSite into master 2024-03-26 10:29:34 +00:00
victorAnumudu ed4227a59b removed resources from nav link and change hero section style 2024-03-25 21:29:19 +01:00
victorAnumudu a3aa6c47de rmoved resources from nav link and change hero section style 2024-03-25 21:19:33 +01:00
ameye 94ed2655d1 Merge branch 'current-jobs-update' of WrenchBoard/WrenchBoardNigeriaMainSite into master 2024-03-18 09:45:09 +00:00
victorAnumudu f2aa7d12b5 updates current job on market job post 2024-03-18 10:28:30 +01:00
ameye 4f4e4c0034 Merge branch 'slider-updated' of WrenchBoard/WrenchBoardNigeriaMainSite into master 2024-03-15 17:41:14 +00:00
victorAnumudu cc5293cd27 update home sliders 2024-03-15 18:01:04 +01:00
ameye bbf8c51217 Merge branch 'socket-bug-fixed' of WrenchBoard/WrenchBoardNigeriaMainSite into master 2024-03-15 13:00:03 +00:00
victorAnumudu 6046401aa2 changed the value of REACT_APP_PRIMARY_SOCKET in env production file 2024-03-15 13:13:11 +01:00
ameye 3f6cb6afba Merge branch 'socket-context' of WrenchBoard/WrenchBoardNigeriaMainSite into master 2024-03-14 10:44:52 +00:00
25 changed files with 332 additions and 293 deletions
+2 -2
View File
@@ -5,8 +5,8 @@ REACT_APP_USERS_ENDPOINT="https://apigate.lotus.g1.wrenchboard.com/en/wrench/api
REACT_APP_SITE_NAME='WrenchBoard' REACT_APP_SITE_NAME='WrenchBoard'
REACT_APP_DASH_URL='https://dev-users.wrenchboard.com' REACT_APP_DASH_URL='https://dev-users.wrenchboard.com'
REACT_APP_DASH_URL_LOGIN="https://dev-users.wrenchboard.com/login?cnt=ng" REACT_APP_DASH_URL_LOGIN="https://qa-users.wrenchboard.com/login?cnt=ng"
REACT_APP_DASH_URL_SIGNUP="https://dev-users.wrenchboard.com/signup?cnt=ng" REACT_APP_DASH_URL_SIGNUP="https://qa-users.wrenchboard.com/signup?cnt=ng"
REACT_APP_ANDROID_APP='https://play.google.com/store/apps/details?id=com.wrenchboard.users' REACT_APP_ANDROID_APP='https://play.google.com/store/apps/details?id=com.wrenchboard.users'
REACT_APP_APPLE_APP='https://itunes.apple.com/us/app/wrenchboard/id1435718367?ls=1&mt=8' REACT_APP_APPLE_APP='https://itunes.apple.com/us/app/wrenchboard/id1435718367?ls=1&mt=8'
REACT_APP_FACEBOOK_LINK='https://www.facebook.com/wrenchboard' REACT_APP_FACEBOOK_LINK='https://www.facebook.com/wrenchboard'
+3 -3
View File
@@ -4,9 +4,9 @@ REACT_APP_AUX_ENDPOINT="https://apigate.lotus.g1.wrenchboard.com/en/wrench/api/v
REACT_APP_USERS_ENDPOINT="https://apigate.lotus.g1.wrenchboard.com/en/wrench/api/v1" REACT_APP_USERS_ENDPOINT="https://apigate.lotus.g1.wrenchboard.com/en/wrench/api/v1"
REACT_APP_SITE_NAME='WrenchBoard' REACT_APP_SITE_NAME='WrenchBoard'
REACT_APP_DASH_URL='https://dev-users.wrenchboard.com' REACT_APP_DASH_URL='https://qa-users.wrenchboard.com'
REACT_APP_DASH_URL_LOGIN="https://dev-users.wrenchboard.com/login?cnt=ng" REACT_APP_DASH_URL_LOGIN="https://qa-users.wrenchboard.com/login?cnt=ng"
REACT_APP_DASH_URL_SIGNUP="https://dev-users.wrenchboard.com/signup?cnt=ng" REACT_APP_DASH_URL_SIGNUP="https://qa-users.wrenchboard.com/signup?cnt=ng"
REACT_APP_ANDROID_APP='https://play.google.com/store/apps/details?id=com.wrenchboard.users' REACT_APP_ANDROID_APP='https://play.google.com/store/apps/details?id=com.wrenchboard.users'
REACT_APP_APPLE_APP='https://itunes.apple.com/us/app/wrenchboard/id1435718367?ls=1&mt=8' REACT_APP_APPLE_APP='https://itunes.apple.com/us/app/wrenchboard/id1435718367?ls=1&mt=8'
REACT_APP_FACEBOOK_LINK='https://www.facebook.com/wrenchboard' REACT_APP_FACEBOOK_LINK='https://www.facebook.com/wrenchboard'
+1 -1
View File
@@ -22,4 +22,4 @@ REACT_APP_SUPPORT_NG_ADDRESS='Saka Tinubu Street, Victoria Island Lagos, Nigeria
REACT_APP_AGENT_LINK='https://agents.wrenchboard.com' REACT_APP_AGENT_LINK='https://agents.wrenchboard.com'
#SOCKETS ENDS #SOCKETS ENDS
REACT_APP_PRIMARY_SOCKET="https://socket.wrenchboard.com" REACT_APP_PRIMARY_SOCKET="https://socket-dev.wrenchboard.com"
-1
View File
@@ -11,7 +11,6 @@ function App() {
useEffect(()=>{ // sends an event to the socket to enable user join a room to be able to receive update when jobs enters the market useEffect(()=>{ // sends an event to the socket to enable user join a room to be able to receive update when jobs enters the market
joinRoom('full-markets-jobs') joinRoom('full-markets-jobs')
console.log('market room joined')
},[]) },[])
return ( return (
+6 -3
View File
@@ -14,7 +14,9 @@ export default function SocketIOContextProvider({children}) {
// // Messages States // // Messages States
// const [message, setMessage] = useState(""); // const [message, setMessage] = useState("");
const [socketMsgReceived, setSocketMsgReceived] = useState({type:'', msg:''}); const [socketMsgReceived, setSocketMsgReceived] = useState('');
const [updateMarket, setUpdateMarket] = useState(false)
const joinRoom = (room) => { const joinRoom = (room) => {
if (room !== "") { if (room !== "") {
@@ -24,8 +26,8 @@ export default function SocketIOContextProvider({children}) {
useEffect(() => { useEffect(() => {
socket.on("received_refreshmarket_jobs", (data) => { socket.on("received_refreshmarket_jobs", (data) => {
setSocketMsgReceived({type: 'market', msg: data?.message}); setSocketMsgReceived(data?.message);
console.log('YES ssss') setUpdateMarket(prev => !prev)
}); });
}, [socket]); }, [socket]);
@@ -34,6 +36,7 @@ export default function SocketIOContextProvider({children}) {
joinRoom, joinRoom,
setSocketMsgReceived, setSocketMsgReceived,
socketMsgReceived, socketMsgReceived,
updateMarket,
} }
return ( return (
+2 -10
View File
@@ -4,18 +4,10 @@ import getConfig from './../Config/config'
async function JobsData() { async function JobsData() {
var site = getConfig()[0]; var site = getConfig()[0];
var callData = [{ var callData = [{
"limit": 10, "limit": 15,
"page": 1 "page": 1
}]; }];
/*
var res = null;
const getWrenchBoardJobs = () => {
Axios.post("https://dashboard.wrenchboard.com/svs/user/startjoblist", callData).then((response) => {
res = response;
return response;
});
}
*/
let response = await Axios.post(process.env.REACT_APP_AUX_ENDPOINT+'/startjoblist', callData); let response = await Axios.post(process.env.REACT_APP_AUX_ENDPOINT+'/startjoblist', callData);
return await response; return await response;
} }
+12 -12
View File
@@ -1782,7 +1782,7 @@ p {
} }
} }
.appie-hero-content ul { .appie-hero-content ul {
margin: 41px 0 0; /* margin: 41px 0 0; */
padding: 0; padding: 0;
list-style-type: none; list-style-type: none;
} }
@@ -1886,25 +1886,25 @@ p {
} }
.appie-hero-content.appie-hero-content-6 .appie-title { .appie-hero-content.appie-hero-content-6 .appie-title {
font-weight: 700; font-weight: 700;
font-size: 70px; font-size: 60px;
line-height: 80px; line-height: 50px;
} }
@media only screen and (min-width: 992px) and (max-width: 1200px) { @media only screen and (min-width: 992px) and (max-width: 1200px) {
.appie-hero-content.appie-hero-content-6 .appie-title { .appie-hero-content.appie-hero-content-6 .appie-title {
font-size: 60px; font-size: 50px;
line-height: 70px; line-height: 50px;
} }
} }
@media only screen and (min-width: 768px) and (max-width: 991px) { @media only screen and (min-width: 768px) and (max-width: 991px) {
.appie-hero-content.appie-hero-content-6 .appie-title { .appie-hero-content.appie-hero-content-6 .appie-title {
font-size: 50px; font-size: 40px;
line-height: 60px; line-height: 40px;
} }
} }
@media (max-width: 767px) { @media (max-width: 767px) {
.appie-hero-content.appie-hero-content-6 .appie-title { .appie-hero-content.appie-hero-content-6 .appie-title {
font-size: 36px; font-size: 30px;
line-height: 46px; line-height: 25px;
} }
} }
.appie-hero-content.appie-hero-content-6 ul li a { .appie-hero-content.appie-hero-content-6 ul li a {
@@ -8381,7 +8381,7 @@ blockquote cite {
/* interface images */ /* interface images */
.interface_section .owl-item .screen_frame_img img { .interface_section .owl-item .screen_frame_img img {
transform: scale(.9); transform: scale(.9);
border: 2px solid #000; /* border: 2px solid #000; */
border-radius: 20px; border-radius: 20px;
transition: 1s all; transition: 1s all;
margin: 0 auto; margin: 0 auto;
@@ -8391,6 +8391,6 @@ blockquote cite {
.interface_section .owl-item.center .screen_frame_img img { .interface_section .owl-item.center .screen_frame_img img {
transform: scale(1); transform: scale(1);
border: 3px solid #000; /* border: 3px solid #000;
padding: 5px; padding: 5px; */
} }
Binary file not shown.

After

Width:  |  Height:  |  Size: 629 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 422 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 600 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 406 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 545 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 547 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 595 KiB

+109 -41
View File
@@ -1,40 +1,92 @@
import React from 'react'; import React, {useState} from 'react';
import getConfig from './../../Config/config' import getConfig from './../../Config/config'
import ContactData from '../../Services/ContactData'; import ContactData from '../../Services/ContactData';
function Forms() { function Forms() {
var site = getConfig()[0]; const [formDetails, setFormDetails] = useState({
first_name: '',
last_name: '',
email: '',
subject: '',
phone_number: '',
action: 1001,
message: '',
channel: 'WEB',
terms_conditions: false
})
function handleSubmit(e) {
e.preventDefault(); const handleChange = ({target:{name, value}}) => {
// console.log('You clicked submit.'); if(name == 'terms_conditions'){
// console.log(e); setFormDetails(prev => ({...prev, [name]:!prev.terms_conditions}))
// debugger; }else{
const firstname = e.target['f-name'].value; setFormDetails(prev => ({...prev, [name]:value}))
const lastname = e.target['l-name'].value; }
const email = e.target['email'].value;
const phone = e.target['phone'].value;
const subject = e.target['subject'].value;
const message = e.target['message'].value;
const terms = e.target['terms-conditions'].checked;
//alert(terms);
var callData = [{
"firstname": firstname,
"lastname": lastname,
"email": email,
"phone": phone,
"subject": subject,
"message": message,
"channel": 'WEB'
}];
const callRet = ContactData(callData);
console.log('You clicked submit========> '+ callRet);
} }
const [requestStatus, setRequestStatus] = useState({loading:false, status:false, msg:''})
const validForm = formDetails.first_name && formDetails.last_name && formDetails.email && formDetails.phone_number && formDetails.subject && formDetails.message
function handleSubmit(e) {
e.preventDefault()
const isChecked = formDetails.terms_conditions
setRequestStatus({loading:true, status:false, msg:''})
if(!validForm){
setRequestStatus({loading:false, status:false, msg:'Please, fill all fields'})
setTimeout(()=>{
setRequestStatus({loading:false, status:false, msg:''})
},3000)
return
}
if(!(/^\d{7,15}$/.test(formDetails.phone_number))){
setRequestStatus({loading:false, status:false, msg:'Please, enter a valid phone number'})
setTimeout(()=>{
setRequestStatus({loading:false, status:false, msg:''})
},3000)
return
}
if(!isChecked){
setRequestStatus({loading:false, status:false, msg:'Please, Accept Terms & Conditions'})
setTimeout(()=>{
setRequestStatus({loading:false, status:false, msg:''})
},3000)
return
}
delete formDetails.terms_conditions
ContactData(formDetails).then(res =>{
if(res?.data?.result != '100'){
setRequestStatus({loading:false, status:false, msg:'failed to send message'})
setTimeout(()=>{
setRequestStatus({loading:false, status:false, msg:''})
},3000)
return
}
setRequestStatus({loading:false, status:true, msg:'message Sent'})
setTimeout(()=>{
setRequestStatus({loading:false, status:false, msg:''})
setFormDetails({
first_name: '',
last_name: '',
email: '',
subject: '',
phone_number: '',
action: 1001,
message: '',
channel: 'WEB',
terms_conditions: false
})
},3000)
}).catch(err => {
setRequestStatus({loading:false, status:false, msg:'failed something went wrong'})
setTimeout(()=>{
setRequestStatus({loading:false, status:false, msg:''})
},3000)
});
}
return ( return (
@@ -46,7 +98,7 @@ function Forms() {
<div className="contact--info-area"> <div className="contact--info-area">
<h3>Get in touch</h3> <h3>Get in touch</h3>
<p>Looking for help? Fill the form and start a new discussion.</p> <p>Looking for help? Fill the form and start a new discussion.</p>
<div className="single-info"> {/* <div className="single-info">
<h5>Headquaters</h5> <h5>Headquaters</h5>
<p> <p>
<i className="fal fa-home"></i> <i className="fal fa-home"></i>
@@ -57,9 +109,8 @@ function Forms() {
<i className="fal fa-home"></i> <i className="fal fa-home"></i>
{process.env.REACT_APP_SUPPORT_US_ADDRESS} {process.env.REACT_APP_SUPPORT_US_ADDRESS}
</p> </p>
</div> */}
</div> {/* <div className="single-info">
<div className="single-info">
<h5>Phone</h5> <h5>Phone</h5>
<p> <p>
<i className="fal fa-phone"></i> <i className="fal fa-phone"></i>
@@ -67,7 +118,7 @@ function Forms() {
<br /> <br />
{process.env.REACT_APP_SUPPORT_PHONE} {process.env.REACT_APP_SUPPORT_PHONE}
</p> </p>
</div> </div> */}
<div className="single-info"> <div className="single-info">
<h5>Support</h5> <h5>Support</h5>
<p> <p>
@@ -98,47 +149,64 @@ function Forms() {
<h4>Lets Connect</h4> <h4>Lets Connect</h4>
<form onSubmit={handleSubmit} className="row"> <form onSubmit={handleSubmit} className="row">
<div className="col-md-6"> <div className="col-md-6">
<input type="text" name="f-name" placeholder="First Name" maxLength={15} /> <input type="text" name="first_name" placeholder="First Name" maxLength={15} onChange={handleChange} value={formDetails.first_name} />
</div> </div>
<div className="col-md-6"> <div className="col-md-6">
<input type="text" name="l-name" placeholder="Last Name" maxLength={15} /> <input type="text" name="last_name" placeholder="Last Name" maxLength={15} onChange={handleChange} value={formDetails.last_name} />
</div> </div>
<div className="col-md-6"> <div className="col-md-6">
<input <input
type="email" type="email"
name="email" name="email"
placeholder="Email Address" placeholder="Email Address"
maxLength={35} maxLength={55}
onChange={handleChange}
value={formDetails.email}
/> />
</div> </div>
<div className="col-md-6"> <div className="col-md-6">
<input <input
type="number" type="text"
name="phone" name="phone_number"
placeholder="Phone Number" placeholder="Phone Number"
maxLength={15} maxLength={15}
onChange={handleChange}
value={formDetails.phone_number}
/> />
</div> </div>
<div className="col-md-12"> <div className="col-md-12">
<input type="text" name="subject" placeholder="Subject" maxLength={35} /> <input type="text" name="subject" placeholder="Subject" maxLength={150} value={formDetails.subject} onChange={handleChange} />
</div> </div>
<div className="col-md-12"> <div className="col-md-12">
<textarea <textarea
name="message" name="message"
placeholder="How can we help?" placeholder="How can we help?"
onChange={handleChange}
value={formDetails.message}
maxLength={350}
></textarea> ></textarea>
</div> </div>
<div className="col-md-6"> <div className="col-md-6">
<div className="condition-check"> <div className="condition-check">
<input id="terms-conditions" name="terms-conditions" type="checkbox" /> <input id="terms-conditions" name="terms_conditions" type="checkbox" value={formDetails.terms_conditions} onChange={handleChange} />
<label htmlFor="terms-conditions"> <label htmlFor="terms-conditions">
I agree to the <a href="#">Terms & Conditions</a> I agree to the <a href="#">Terms & Conditions</a>
</label> </label>
</div> </div>
</div> </div>
<div className="col-md-6 text-right"> <div className="col-md-6 text-right">
<input type="submit" name="submit" value="Send Message" /> <input
type="submit"
value={ requestStatus.loading ? 'Sending...' : 'Send Message'}
disabled={requestStatus.loading}
className={`${!validForm ? 'opacity-25' : 'opacity-100'}`}
/>
</div> </div>
{/* <div className="p-2 col-12">
{requestStatus.msg &&
}
</div> */}
<p className={`p-1 w-100 text-center ${requestStatus.status ? 'text-success' : 'text-danger'}`}>{requestStatus.msg}</p>
</form> </form>
</div> </div>
</div> </div>
+4 -44
View File
@@ -2,37 +2,16 @@ import React, { useState, useEffect } from 'react';
import blogOne from '../../assets/images/blog-1.jpg'; import blogOne from '../../assets/images/blog-1.jpg';
import blogTwo from '../../assets/images/blog-2.jpg'; import blogTwo from '../../assets/images/blog-2.jpg';
import blogThree from '../../assets/images/blog-3.jpg'; import blogThree from '../../assets/images/blog-3.jpg';
import JobsData from '../../Services/JobsData'; // import JobsData from '../../Services/JobsData';
import getConfig from './../../Config/config' import getConfig from './../../Config/config'
import CountDownTimer from '../Helper/CountDownTimer'; import CountDownTimer from '../Helper/CountDownTimer';
import { SocketValues } from '../../Contexts/SocketIOContext';
let CurrentJobsHero = () => {
let {socketMsgReceived} = SocketValues() // destructure FROM SOCKET
let CurrentJobsHero = ({jobs}) => {
var site = getConfig()[0]; var site = getConfig()[0];
var dashUrl = process.env.REACT_APP_DASH_URL; var dashUrl = process.env.REACT_APP_DASH_URL;
let [jobs, setJobs] = useState([])
// constructor() {
// // debugger;
// super();
// this.state = { jobsDataResults: [] };
// }
// async componentDidMount(){
// // debugger;
// JobsData().then(res => {
// this.setState({jobsDataResults:res.data.result_list});
// }).catch(err => {
// console.log('startjoblist error', err)
// })
// }
function titleLen(title){ function titleLen(title){
let maxl = 45; let maxl = 45;
title.replace('/', ' '); title.replace('/', ' ');
@@ -43,25 +22,6 @@ let CurrentJobsHero = () => {
return (title.length > maxl)? title.substring(0,maxl-2)+'...': title; return (title.length > maxl)? title.substring(0,maxl-2)+'...': title;
} }
useEffect(()=>{
if(socketMsgReceived.type == '' || socketMsgReceived.type == 'market'){
JobsData().then(res => {
setJobs(res.data.result_list);
}).catch(err => {
console.log('startjoblist error', err)
})
}
},[socketMsgReceived.type])
// if ( this.state.jobsDataResults== undefined ){
// return null;
// }
// if (this.state.jobsDataResults.length == 0){
// return <></>;
// }
return ( return (
<> <>
{jobs.length < 1 ? {jobs.length < 1 ?
@@ -110,7 +70,7 @@ let CurrentJobsHero = () => {
{/*</div>*/} {/*</div>*/}
<div className='lmoreTxt d-flex justify-content-between align-items-center'> <div className='lmoreTxt d-flex justify-content-between align-items-center'>
<p className='text-danger' style={{fontSize: '12px'}}>{hourRemaining > 24 ? `available in the next ${hourRemaining%24} ${hourRemaining%24 > 1 ? 'days':'day'}` : `available in the next 12hrs 30mins`}</p> <p className='text-danger' style={{fontSize: '12px'}}>{hourRemaining > 24 ? `available in the next ${hourRemaining%24} ${hourRemaining%24 > 1 ? 'days':'day'}` : `available in the next 12hrs 30mins`}</p>
<a href={dashUrl} className=''> <a href={process.env.REACT_APP_DASH_URL_LOGIN} className=''>
Learn More <i className="fal fa-arrow-right" /> Learn More <i className="fal fa-arrow-right" />
</a> </a>
</div> </div>
@@ -140,7 +100,7 @@ let CurrentJobsHero = () => {
Find more opportunities at our marketplace. Find more opportunities at our marketplace.
</a> </a>
</h3> </h3>
<a className='align-self-end' href="https://users.wrenchboard.com/login"> <a className='align-self-end' href="https://dashboard.wrenchboard.com/login">
Login now <i className="fal fa-arrow-right" /> Login now <i className="fal fa-arrow-right" />
</a> </a>
</div> </div>
+22 -9
View File
@@ -17,12 +17,18 @@ export default function FeaturedScreen() {
dots: true, dots: true,
responsive:{ responsive:{
0:{ 0:{
items:2 items:1
}, },
600:{ 600:{
items:2
},
800:{
items:3 items:3
}, },
1000:{ 1200:{
items:4
},
1400:{
items:5 items:5
} }
} }
@@ -39,37 +45,44 @@ export default function FeaturedScreen() {
<OwlCarousel id="screen_slider" {...screen_slider} className="owl-carousel owl-theme owl-loaded owl-drag"> <OwlCarousel id="screen_slider" {...screen_slider} className="owl-carousel owl-theme owl-loaded owl-drag">
<div className="item"> <div className="item">
<div className="screen_frame_img"> <div className="screen_frame_img">
<img src={localImgLoad('images/slider/slider_1.png')} alt="image" /> {/* <img src={localImgLoad('images/slider/slider_1.png')} alt="image" /> */}
<img src={localImgLoad('images/slider/app_sliders/screen_1.png')} alt="image" />
</div> </div>
</div> </div>
<div className="item"> <div className="item">
<div className="screen_frame_img"> <div className="screen_frame_img">
<img src={localImgLoad('images/slider/slider_2.png')} alt="image" /> {/* <img src={localImgLoad('images/slider/slider_2.png')} alt="image" /> */}
<img src={localImgLoad('images/slider/app_sliders/screen_2.png')} alt="image" />
</div> </div>
</div> </div>
<div className="item"> <div className="item">
<div className="screen_frame_img"> <div className="screen_frame_img">
<img src={localImgLoad('images/slider/slider_3.png')} alt="image" /> {/* <img src={localImgLoad('images/slider/slider_3.png')} alt="image" /> */}
<img src={localImgLoad('images/slider/app_sliders/screen_3.png')} alt="image" />
</div> </div>
</div> </div>
<div className="item"> <div className="item">
<div className="screen_frame_img"> <div className="screen_frame_img">
<img src={localImgLoad('images/slider/slider_4.png')} alt="image" /> {/* <img src={localImgLoad('images/slider/slider_4.png')} alt="image" /> */}
<img src={localImgLoad('images/slider/app_sliders/screen_6.png')} alt="image" />
</div> </div>
</div> </div>
<div className="item"> <div className="item">
<div className="screen_frame_img"> <div className="screen_frame_img">
<img src={localImgLoad('images/slider/slider_5.png')} alt="image" /> {/* <img src={localImgLoad('images/slider/slider_5.png')} alt="image" /> */}
<img src={localImgLoad('images/slider/app_sliders/screen_4.png')} alt="image" />
</div> </div>
</div> </div>
<div className="item"> <div className="item">
<div className="screen_frame_img"> <div className="screen_frame_img">
<img src={localImgLoad('images/slider/slider_6.png')} alt="image" /> {/* <img src={localImgLoad('images/slider/slider_7.png')} alt="image" /> */}
<img src={localImgLoad('images/slider/app_sliders/screen_7.png')} alt="image" />
</div> </div>
</div> </div>
<div className="item"> <div className="item">
<div className="screen_frame_img"> <div className="screen_frame_img">
<img src={localImgLoad('images/slider/slider_7.png')} alt="image" /> {/* <img src={localImgLoad('images/slider/slider_7.png')} alt="image" /> */}
<img src={localImgLoad('images/slider/app_sliders/screen_5.png')} alt="image" />
</div> </div>
</div> </div>
</OwlCarousel> </OwlCarousel>
+21 -4
View File
@@ -25,7 +25,7 @@ function FooterHomeOne({ className }) {
<a href="/service"> <a href="/service">
Read More <i className="fal fa-arrow-right" /> Read More <i className="fal fa-arrow-right" />
</a> </a>
<div className="social mt-30"> {/* <div className="social mt-30">
<ul> <ul>
<li> <li>
<a href={site.facebook_link}> <a href={site.facebook_link}>
@@ -38,7 +38,7 @@ function FooterHomeOne({ className }) {
</a> </a>
</li> </li>
</ul> </ul>
</div> </div> */}
</div> </div>
</div> </div>
<div className="col-lg-2 col-md-6"> <div className="col-lg-2 col-md-6">
@@ -95,7 +95,7 @@ function FooterHomeOne({ className }) {
<i className="fal fa-envelope" /> {site.support_email} <i className="fal fa-envelope" /> {site.support_email}
</a> </a>
</li> </li>
<li> {/* <li>
<a href="#"> <a href="#">
<i className="fal fa-phone" /> 404-855-7966 <i className="fal fa-phone" /> 404-855-7966
</a> </a>
@@ -104,11 +104,28 @@ function FooterHomeOne({ className }) {
<a href="#"> <a href="#">
<i className="fal fa-map-marker-alt" />Atlanta, GA 30339 <i className="fal fa-map-marker-alt" />Atlanta, GA 30339
</a> </a>
</li> </li> */}
</ul> </ul>
</div> </div>
<div className='footer-about-widget'>
<div className="social mt-30">
<ul>
<li>
<a href={site.facebook_link}>
<i className="fab fa-facebook-f" />
</a>
</li>
<li>
<a className="twi" href={process.env.REACT_APP_TWITTER_LINK}>
<i className="fab fa-x-twitter"></i>
</a>
</li>
</ul>
</div>
</div>
</div> </div>
</div> </div>
<div className="row"> <div className="row">
<div className="col-lg-12"> <div className="col-lg-12">
<div className="footer-copyright d-flex align-items-center justify-content-between pt-2"> <div className="footer-copyright d-flex align-items-center justify-content-between pt-2">
+29 -37
View File
@@ -2,52 +2,44 @@ import React from 'react';
import heroThumb from '../../assets/images/hero-thumb-7.png'; import heroThumb from '../../assets/images/hero-thumb-7.png';
import CurrentJobsHero from "./CurrentJobsHero"; import CurrentJobsHero from "./CurrentJobsHero";
function HomeNigeria() { function HomeNigeria({jobs}) {
return ( return (
<> <>
<section className="appie-hero-area"> <section className="appie-hero-area pb-0 mt-50">
<div className="container"> <div className="container">
<div className="row align-items-start"> <div className="row align-items-start">
<div className="col-12 col-lg-6"> <div className="col-12">
<div className="appie-hero-content appie-hero-content-6"> <div className="appie-hero-content appie-hero-content-6">
{/*<span>Welcome To Creative App.</span>*/}
<h1 className="appie-title">Pick any task and start earning.</h1> <h1 className="appie-title">Pick any task and start earning.</h1>
<p> <div className='row'>
The Marketplace platform to earn money with your skills, find, buy and sell professional services. <p className='col-12 col-lg-8'>
</p> The Marketplace platform to earn money with your skills, find, buy and sell professional services.
<ul> </p>
<li className=''> <ul className='col-12 col-lg-4 d-flex justify-content-center justify-content-lg-end'>
<a className="item-2" target='_blank' href={process.env.REACT_APP_APPLE_APP}> <li className=''>
<i className="fab fa-apple"></i> <a className="item-2" target='_blank' href={process.env.REACT_APP_APPLE_APP}>
<span> <i className="fab fa-apple"></i>
Available on the <span>App Store</span> <span>
</span> Available on the <span>App Store</span>
</a> </span>
</li> </a>
<li className=''> </li>
<a className="item-2" target='_blank' href={process.env.REACT_APP_ANDROID_APP}> <li className=''>
<i className="fab fa-google-play"></i> <a className="item-2" target='_blank' href={process.env.REACT_APP_ANDROID_APP}>
<span> <i className="fab fa-google-play"></i>
Available on the <span>Google Play</span> <span>
</span> Available on the <span>Google Play</span>
</a> </span>
</li> </a>
</ul> </li>
</ul>
</div>
</div> </div>
</div> </div>
<div className="col-12 col-lg-6"> {/* <div className="col-12 col-lg-6">
{/*<div className="appie-hero-thumb-6">*/} <CurrentJobsHero jobs={jobs} />
{/* <div*/} </div> */}
{/* className="thumb wow animated fadeInUp"*/}
{/* data-wow-duration="1000ms"*/}
{/* data-wow-delay="600ms"*/}
{/* >*/}
{/* <img src={heroThumb} alt="" />*/}
{/* </div>*/}
{/*</div>*/}
<CurrentJobsHero />
</div>
</div> </div>
</div> </div>
</section> </section>
+99 -118
View File
@@ -1,140 +1,121 @@
import React, { Component } from 'react'; import React, { Component, useEffect, useState } from 'react';
import blogOne from '../../assets/images/blog-1.jpg'; import blogOne from '../../assets/images/blog-1.jpg';
import blogTwo from '../../assets/images/blog-2.jpg'; import blogTwo from '../../assets/images/blog-2.jpg';
import blogThree from '../../assets/images/blog-3.jpg'; import blogThree from '../../assets/images/blog-3.jpg';
import JobsData from '../../Services/JobsData'; // import JobsData from '../../Services/JobsData';
import getConfig from './../../Config/config' import getConfig from './../../Config/config'
import CountDownTimer from '../Helper/CountDownTimer'; import CountDownTimer from '../Helper/CountDownTimer';
class RecentJobsOne extends Component { let RecentJobsOne = ({jobs}) => {
constructor() {
// debugger; var site = getConfig()[0];
super();
this.state = { jobsDataResults: [] }; var dashUrl = process.env.REACT_APP_DASH_URL;
function titleLen(title){
let maxl = 45;
title.replace('/', ' ');
title.replace('www.', '');
title.replace('.com', '');
title.replace('http//', '');
return (title.length > maxl)? title.substring(0,maxl-2)+'...': title;
} }
async componentDidMount(){ return (
// debugger; <>
JobsData().then(res => { {jobs.length < 1 ?
this.setState({jobsDataResults:res.data.result_list}); null
}).catch(err => { :
console.log('startjoblist error', err) <section className="appie-blog-area pt-50 pb-50">
}) <div className="container">
} <div className="row">
<div className="col-lg-12">
titleLen(title){ <div className="appie-section-title text-left">
let maxl = 45; <h3 className="appie-title">Current Projects</h3>
title.replace('/', ' ');
title.replace('www.', '');
title.replace('.com', '');
title.replace('http//', '');
return (title.length > maxl)? title.substring(0,maxl-2)+'...': title;
}
// if (jobsDataResults ()== null){
// return null;
// }
render() {
var site = getConfig()[0];
if ( this.state.jobsDataResults== undefined ){
return null;
}
var dashUrl = process.env.REACT_APP_DASH_URL;
if (this.state.jobsDataResults.length == 0){
return <></>;
}
return (
<>
<section className="appie-blog-area pt-90 pb-95">
<div className="container">
<div className="row">
<div className="col-lg-12">
<div className="appie-section-title text-center">
<h3 className="appie-title">Current Projects</h3>
</div>
</div>
</div> </div>
<div className="row"> </div>
</div>
<div className="row">
{ {
this.state.jobsDataResults.map(i => { jobs.map((i, index) => {
var options = { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' }; var options = { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' };
var postDt = new Date(i.expire).toLocaleDateString("en-US", options); var postDt = new Date(i.expire).toLocaleDateString("en-US", options);
if(index < 24){
return (<div className="col-md-6 col-xl-3"> return (
<div <div className="col-md-6 col-xl-3">
className="appie-single-service container-fluid mt-30 wow animated fadeInUp boxBorder d-flex align-items-center" <div
data-wow-duration="3000ms" className="appie-single-service container-fluid mt-30 wow animated fadeInUp boxBorder d-flex align-items-center"
data-wow-delay="200ms" data-wow-duration="3000ms"
> data-wow-delay="200ms"
<div className="content d-flex flex-column justify-content-between" style={{height: '200px', width: '100%'}}> >
<div className="titleBox"> <div className="content d-flex flex-column justify-content-between" style={{height: '180px', width: '100%'}}>
<h3 className="title"> <div className="titleBox">
<a href={dashUrl}> <h3 className="title">
<span className='font_black'>{this.titleLen(i.title)} </span> <a href={dashUrl}>
</a> <span className='font_black'>{titleLen(i.title)} </span>
</h3> </a>
</div> </h3>
<div className='p-0 container-fluid'> </div>
<div><hr /></div> <div className='p-0 container-fluid'>
<div className="blog-meta"> <div><hr /></div>
<ul> {/*<div className="blog-meta">*/}
<li className="expire"> {/* <ul>*/}
<a href={dashUrl} className='d-block'> {/* <li className="expire">*/}
<div className='font_red d-flex align-items-start'> {/* <a href={dashUrl} className='d-block'>*/}
<div className='pr-2'>Expires :</div> {/* <div className='font_red d-flex align-items-start'> */}
<CountDownTimer targetDate={postDt}/> {/* <div className='pr-2'>Expires :</div>*/}
</div> {/* <CountDownTimer targetDate={postDt}/>*/}
</a> {/* </div>*/}
</li> {/* </a>*/}
</ul> {/* </li>*/}
</div> {/* </ul>*/}
<div className='lmoreTxt d-flex justify-content-end align-items-center'> {/*</div>*/}
<a href={dashUrl}> <div className='lmoreTxt d-flex justify-content-end align-items-center'>
Learn More <i className="fal fa-arrow-right" /> <a href={process.env.REACT_APP_DASH_URL_LOGIN}>
</a> Learn More <i className="fal fa-arrow-right" />
</div> </a>
</div> </div>
</div> </div>
</div> </div>
</div>)
})
}
<div className="col-lg-3 col-md-6">
<div
className="appie-blog-item mt-30 wow animated fadeInUp"
data-wow-duration="3000ms"
data-wow-delay="600ms"
>
<div className="content">
<h3 className="title">
<a href={dashUrl}>
Find more opportunities at our marketplace.
</a>
</h3>
<a href="https://dashboard.wrenchboard.com/login">
Login now <i className="fal fa-arrow-right" />
</a>
</div> </div>
</div> </div>
</div> )
}
})
}
<div className="col-lg-3 col-md-6">
<div
className="appie-blog-item mt-30 wow animated fadeInUp"
data-wow-duration="3000ms"
data-wow-delay="600ms"
>
<div className="content">
<h3 className="title">
<a href={dashUrl}>
Find more opportunities at our marketplace.
</a>
</h3>
<a href={process.env.REACT_APP_DASH_URL_LOGIN}>
Login now <i className="fal fa-arrow-right" />
</a>
</div>
</div> </div>
</div> </div>
</section>
</> </div>
); </div>
} </section>
}
</>
);
} }
export default RecentJobsOne; export default RecentJobsOne;
+1 -1
View File
@@ -9,7 +9,7 @@ import IconFour from '../../assets/images/icon/reward.png';
function ServicesHomeOne({ className }) { function ServicesHomeOne({ className }) {
return ( return (
<section className={`appie-service-area pt-90 pb-50 ${className}`} id="service"> <section className={`appie-service-area pt-90 pb-90 ${className}`} id="service">
<div className="container"> <div className="container">
<div className="row justify-content-center"> <div className="row justify-content-center">
<div className="col-lg-8"> <div className="col-lg-8">
+1 -1
View File
@@ -5,7 +5,7 @@ import getConfig from './../../Config/config'
function TrafficHomeOne() { function TrafficHomeOne() {
var site = getConfig()[0]; var site = getConfig()[0];
return ( return (
<section className="appie-traffic-area pt-140 pb-180"> <section className="appie-traffic-area pt-140 pb-180 bg-white">
<div className="container"> <div className="container">
<div className="row"> <div className="row">
<div className="col-lg-7"> <div className="col-lg-7">
+17 -3
View File
@@ -1,4 +1,4 @@
import React from 'react'; import React, { useEffect, useState } from 'react';
import useToggle from '../../Hooks/useToggle'; import useToggle from '../../Hooks/useToggle';
import BackToTop from '../BackToTop'; import BackToTop from '../BackToTop';
import Drawer from '../Mobile/Drawer'; import Drawer from '../Mobile/Drawer';
@@ -19,20 +19,34 @@ import WrenchBoardHome from './WrenchBoardHome';
import RecentJobsOne from './RecentJobsOne'; import RecentJobsOne from './RecentJobsOne';
import HomeNigeria from "./HomeNigeria"; import HomeNigeria from "./HomeNigeria";
import FeaturedScreen from './FeaturedScreen'; import FeaturedScreen from './FeaturedScreen';
import { SocketValues } from '../../Contexts/SocketIOContext';
import JobsData from '../../Services/JobsData';
//import BlogData from './../../Services/BlogData'; //import BlogData from './../../Services/BlogData';
function HomeOne() { function HomeOne() {
let {updateMarket} = SocketValues() // destructure FROM SOCKET
const [drawer, drawerAction] = useToggle(false); const [drawer, drawerAction] = useToggle(false);
let [jobs, setJobs] = useState([])
useEffect(()=>{
JobsData().then(res => {
setJobs(res.data.result_list);
}).catch(err => {
console.log('startjoblist error', err)
})
},[updateMarket])
return ( return (
<> <>
<Drawer drawer={drawer} action={drawerAction.toggle} /> <Drawer drawer={drawer} action={drawerAction.toggle} />
<HomeOneHeader action={drawerAction.toggle} /> <HomeOneHeader action={drawerAction.toggle} />
<HomeNigeria /> <HomeNigeria jobs={jobs} />
{/*<HeroHomeOne />*/} {/*<HeroHomeOne />*/}
<RecentJobsOne jobs={jobs} />
<ServicesHomeOne /> <ServicesHomeOne />
<RecentJobsOne />
<FeaturesHomeOne /> <FeaturesHomeOne />
{/*<FaqHomeOne />*/} {/*<FaqHomeOne />*/}
{/*<TrafficHomeOne />*/} {/*<TrafficHomeOne />*/}
+2 -2
View File
@@ -11,7 +11,7 @@ function Navigation() {
<li> <li>
<Link to="/service">Services</Link> <Link to="/service">Services</Link>
</li> </li>
<li> {/* <li>
<a href="#"> <a href="#">
Resources <i className="fal fa-angle-down" /> Resources <i className="fal fa-angle-down" />
</a> </a>
@@ -26,7 +26,7 @@ function Navigation() {
<Link to="/faq">FAQs</Link> <Link to="/faq">FAQs</Link>
</li> </li>
</ul> </ul>
</li> </li> */}
</ul> </ul>
</> </>
+1 -1
View File
@@ -24,7 +24,7 @@ function News() {
<section className="blogpage-section"> <section className="blogpage-section">
<div className="container"> <div className="container">
<div className="row"> <div className="row">
<div className="col-lg-12 col-md-7"> <div className="col-12">
<Blogs /> <Blogs />
</div> </div>