Просмотр исходного кода

added validation for description, fixed style

master
Dunja Djokic 4 лет назад
Родитель
Сommit
eb1e6a8062

+ 13
- 3
src/components/CreateScrapeRequest/CreateScrapeRequest.js Просмотреть файл

const CreateScrapeRequest = ({ handleRequest }) => { const CreateScrapeRequest = ({ handleRequest }) => {


const [requestObject, setRequestObject] = useState({ location: '' }) const [requestObject, setRequestObject] = useState({ location: '' })
const [showError, setShowError] = useState(false)
const { t } = useTranslation(); const { t } = useTranslation();




// setRequestObject(s => ({ ...s, lifestyle: selectedOption.value })) // setRequestObject(s => ({ ...s, lifestyle: selectedOption.value }))
// }; // };


const handleOnClick = () => {
if (requestObject.description) {
handleRequest(requestObject);
setRequestObject({ location: '', description: '' })
}
setShowError(true)
}

console.log("requestObject", requestObject) console.log("requestObject", requestObject)
return ( return (
<div className="card card-primary"> <div className="card card-primary">
<div className="card-header"> <div className="card-header">
<h3 className="card-title">{t('createScrapeRequest.Title')}</h3> <h3 className="card-title">{t('createScrapeRequest.Title')}</h3>
</div> </div>
<form >
<form>
<div className="card-body"> <div className="card-body">
<div className="row"> <div className="row">
<div className="col-md-12"> <div className="col-md-12">
<div className="form-group"> <div className="form-group">
<input type="text" className="form-control input-field" value={requestObject.description} placeholder={t('createScrapeRequest.DescriptionPlaceholder')} onChange={e => setRequestObject(s => ({ ...s, description: e.target.value }))} /> <input type="text" className="form-control input-field" value={requestObject.description} placeholder={t('createScrapeRequest.DescriptionPlaceholder')} onChange={e => setRequestObject(s => ({ ...s, description: e.target.value }))} />
{showError && !requestObject.description && <span style={{ color: "red" }}>This field is required!</span>}
</div> </div>
</div> </div>
</div> </div>
<div className="row"> <div className="row">
<div className="col-md-3">
<div className="col-md-5">
<div className="form-group"> <div className="form-group">
<Autocomplete <Autocomplete
wrapperProps={{ style: {} }} wrapperProps={{ style: {} }}
<Select className="cursor-pointer" options={lifeStyles} onChange={handleChangeLifeStyleType} placeholder={t('createScrapeRequest.LifestylePlaceholder')} /> <Select className="cursor-pointer" options={lifeStyles} onChange={handleChangeLifeStyleType} placeholder={t('createScrapeRequest.LifestylePlaceholder')} />
</div> */} </div> */}
<div className="col-md-1"> <div className="col-md-1">
<button type="button" onClick={() => { handleRequest(requestObject); setRequestObject({ location: '', description: '' }) }} className="btn btn-outline-primary cursor-pointer">Request</button>
<button type="button" onClick={handleOnClick} className="btn btn-outline-primary cursor-pointer">Request</button>
</div> </div>
</div> </div>
</div> </div>

+ 4
- 4
src/components/ScrapeRequest/ScrapeRequest.js Просмотреть файл

<tr> <tr>
<td> <td>
<p> <p>
</p><h3><Link to={{
</p> <div className='row'><h3><Link to={{
pathname: SCRAPE_RESULTS_PAGE.replace(':id', scrape._id), pathname: SCRAPE_RESULTS_PAGE.replace(':id', scrape._id),
id: scrape._id id: scrape._id
}} }}
target="_blank" rel="noopener noreferrer">{scrape.description || 'No name given'}</Link></h3>
<div className='row'>
target="_blank" rel="noopener noreferrer">{scrape.description || 'No name given'}</Link></h3></div>
<div className='row mb-2'>
{scrape.location && <span className="mr-2">Location: <span className='text-info'>{scrape.location}</span></span>} {scrape.location && <span className="mr-2">Location: <span className='text-info'>{scrape.location}</span></span>}
<a className='mr-1' href={scrape.sourceUrl} target="_blank" rel="noopener noreferrer"><i className="fas fa-external-link-square-alt"></i> https://www.apartments.com</a> <a className='mr-1' href={scrape.sourceUrl} target="_blank" rel="noopener noreferrer"><i className="fas fa-external-link-square-alt"></i> https://www.apartments.com</a>
{/* <span className="text-lg">Id: {scrape._id}</span> */} {/* <span className="text-lg">Id: {scrape._id}</span> */}
</td> </td>
<td> <td>
{scrape.filters.map(element => ( {scrape.filters.map(element => (
element.value && <span key={element.value} className="badge bg-primary m-1"><span>{element.name}:</span> <br></br> <span>{element.name === 'baths' ? element.value + '+' : element.value}</span></span>
element.value && <span key={element.name} className="badge bg-primary m-1"><span>{element.name}:</span> <br></br> <span>{element.name === 'baths' ? element.value + '+' : element.value}</span></span>
))} ))}
</td> </td>
<td> <td>

+ 1
- 1
src/components/ScrapeRequest/ScrappeStatus.jsx Просмотреть файл

const { t } = useTranslation(); const { t } = useTranslation();
console.log("id", id) console.log("id", id)
if (status === 'requested') if (status === 'requested')
return <button type="submit" className="btn btn-sm btn-block btn-primary" onClick={() => handleExecute(id)}><i className="fa fa-bell"></i>{t('common.execute')}</button>
return <button type="submit" className="btn btn-sm btn-block btn-primary" onClick={() => handleExecute(id)}><i className="fa fa-bell mr-2"></i>{t('common.execute')}</button>
else if (status === 'done') else if (status === 'done')
return <span className='badge bg-success text-lg'>Done</span> return <span className='badge bg-success text-lg'>Done</span>
else else

Загрузка…
Отмена
Сохранить