You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

ScrapeRequest.js 2.7KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. import React from 'react';
  2. import { useTranslation } from 'react-i18next';
  3. import PropTypes from 'prop-types';
  4. import ScrappeStatus from './ScrappeStatus';
  5. import { SCRAPE_RESULTS_PAGE } from '../../constants/pages'
  6. import { Link } from 'react-router-dom';
  7. const ScrapeRequest = ({ scrape, handleExecute }) => {
  8. const { t } = useTranslation();
  9. return (
  10. <>
  11. <tr>
  12. <td>
  13. <p>
  14. </p><h3><Link to={{
  15. pathname: SCRAPE_RESULTS_PAGE.replace(':id', scrape._id),
  16. id: scrape._id
  17. }}
  18. target="_blank" rel="noopener noreferrer">{scrape.description || 'No name given'}</Link></h3>
  19. <p>
  20. {scrape.location && <span className="mr-2">Location: <span className='text-info'>{scrape.location}</span></span>}
  21. <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>
  22. {/* <span className="text-lg">Id: {scrape._id}</span> */}
  23. </p>
  24. <p>
  25. <span className="mr-1">Count: <span className='text-info'>{scrape.count}</span></span>
  26. {scrape.createDate && <span className="mr-1">Creation time: <span className='text-info'>{(new Date(scrape.createDate)).toLocaleString()}</span></span>}
  27. {(scrape.startDate !== undefined && scrape.startDate !== null) ?
  28. <span className="mr-1">Time: <span className="text-info">{(new Date(scrape.startDate)).toLocaleString()} - {(scrape.endDate != undefined && scrape.endDate !== null) ? (new Date(scrape.endDate)).toLocaleString() : ''}</span> </span>
  29. : <span className="mr-1">{t('scrapeRequest.EstimatedTime')} <span className='text-info'>{(new Date(scrape.estimate)).toLocaleString()}</span></span>
  30. }
  31. </p>
  32. </td>
  33. <td>
  34. {scrape.filters.map(element => (
  35. 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>
  36. ))}
  37. </td>
  38. <td>
  39. <ScrappeStatus status={scrape.status} id={scrape._id} handleExecute={handleExecute} />
  40. </td>
  41. </tr>
  42. </>
  43. );
  44. }
  45. ScrapeRequest.propTypes = {
  46. scrape: PropTypes.object,
  47. handleExecute: PropTypes.func
  48. };
  49. export default ScrapeRequest;