{"version":3,"sources":["assets/images/home-img.svg","App.js","components/Logo/Logo.js","components/AppBar/AppBar.js","components/Layout/Layout.js","theme.js","containers/Home/Home.js","containers/CategorySelector/CategorySelector.js","containers/ModelSelector/ModelSelector.js","containers/LoginModal/LoginModal.js","containers/ReviewForm/ReviewForm.js","components/ReviewCard/ReviewCard.js","containers/ReviewForm/Success.js","containers/ReviewsList/ReviewsList.js","routes.js","serviceWorker.js","index.js"],"names":["module","exports","App","route","CssBaseline","maxSnack","renderRoutes","routes","Logo","color","logoWidth","version","xmlns","x","y","viewBox","style","width","height","xmlSpace","fill","d","useStyles","makeStyles","theme","Toolbar","flexGrow","CustomLinearProgress","position","bottom","left","menuButton","marginRight","spacing","breakpoints","down","useSDStyles","list","fullList","link","textDecoration","palette","text","primary","SideDrawer","props","React","useState","open","setOpen","classes","useEffect","isOpen","Fragment","key","Drawer","onClose","className","List","map","elem","index","ListItem","button","ListItemText","variant","href","CustomAppBar","sideDrawerOpen","setSideDrawerOpen","AppBar","Root","IconButton","onClick","prevState","edge","aria-label","Box","MenuCenterBox","to","loading","LinearProgress","root","Layout","children","themeGreen","createMuiTheme","typography","fontFamily","common","black","white","background","paper","default","lightGray","light","main","dark","secondary","terceary","sponsored","error","contrastText","icon","disabled","hint","MainWrapper","CategorySelector","marginTop","CenterWrapper","display","justifyContent","alignItems","flexDirection","IllustrationWrapper","maxWidth","alignSelf","FormWrapper","padding","margin","order","title","fontSize","lineHeight","fontWeight","marginBottom","subtitle","ActionsWrapper","withWidth","categories","setCategories","value","setValue","setShowForm","inForIllustration","inForTitle","inForSubtitle","inForButton","transitionsHandler","setTransitionHandler","a","fetch","response","json","categoriesAux","aggregations","rubro2","buckets","r","id","rubro2_id","isWidthUp","setTimeout","window","scrollTo","top","behavior","Container","Fade","in","timeout","Typography","Autocomplete","onOpen","getOptionSelected","option","getOptionLabel","options","renderInput","params","TextField","placeholder","InputProps","endAdornment","CircularProgress","size","fullWidth","onChange","event","newValue","Button","SubmitBtn","history","push","Grow","src","HomeImage","alt","Title","length","console","log","active","ModelSelector","setOptions","match","rubro2_param","optionsAux","optAux","marcas","marca_bucket","marca_id","modelos","model_bucket","marca","modelo","modelo_id","flat","groupBy","modal","backgroundColor","outline","boxShadow","shadows","textAlign","form","fieldWrapper","cursor","btnSuccess","iconClose","right","linearProgress","backdrop","backdropFilter","TransitionsModal","callback","email","setEmail","pass","setPass","sending","setSending","setError","useCookies","ck","emailInputRef","useRef","passInputRef","handleChange","target","name","usuario","current","focus","Modal","aria-labelledby","aria-describedby","closeAfterTransition","disableBackdropClick","disableEscapeKeyDown","BackdropComponent","Backdrop","BackdropProps","inputRef","type","FormHelperText","ErrorWrapper","Link","method","credentials","body","headers","Headers","then","res","respuesta","dl","dataLayer","dlObj","user_id","tag","ubicacion","catch","finally","registerPlugin","FilePondPluginImageExifOrientation","FilePondPluginImagePreview","FilePondPluginFileValidateType","FilePondPluginFileValidateSize","FilePondPluginImageValidateSize","ProductWrapper","ProductAvatar","flexShrink","borderRadius","overflow","ProductInfo","marginLeft","LightText","QuestionText","QuestionTextExtra","RatingWidget","RatingWrapper","gap","Form","previewChip","minWidth","FileAreaText","FileAreaIcon","ReviewForm","enqueueSnackbar","useSnackbar","useForm","register","getValues","handleSubmit","errors","watch","G_USER_ID","setUserId","hover","setHover","setLoading","loginOpen","setLoginOpen","rubroImg","setRubroImg","reviewImages","setReviewImages","imagesToUpload","setImagesToUpload","setMarcaNombre","setModeloNombre","gen","nombre","rubro","setRubroNombre","param_r2","param_mod","loginResult","setLoginResult","refForForm","onSubmit","minLength","message","maxLength","max","Date","getFullYear","min","required","data","info","hits","rubros","sexo","rubro_singular","detalle","userId","parseInt","img_url","pictures","variants","jpg","i_urls","imgPromises","subirImagen","Promise","all","uploaded_imgs","forEach","img","estado","ext","rating","encodeURI","positive","negative","comment","year","JSON","parse","join","rjson","replace","err","e","guid","counter","prefix","i","getTime","toString","Math","floor","random","temp_filename","split","pop","formData","FormData","append","resolve","reject","Skeleton","autoComplete","ref","mb","Rating","precision","onChangeActive","newHover","Chip","ChipLabel","label","1","2","3","4","5","mt","multiline","rows","helperText","toLowerCase","inputProps","files","allowMultiple","onupdatefiles","fileItems","f","file","arr","filter","status","f2","credits","acceptedFileTypes","labelFileTypeNotAllowed","maxFileSize","labelMaxFileSizeExceeded","labelIdle","imageValidateSizeMinWidth","imageValidateSizeMinHeight","imageValidateSizeMaxWidth","imageValidateSizeMaxHeight","imageValidateSizeLabelExpectedMinSize","imageValidateSizeLabelExpectedMaxSize","imageValidateSizeLabelImageSizeTooSmall","imageValidateSizeLabelImageSizeTooBig","avatar","CustomCardAction","Content","paddingTop","GalleryContainer","clear","ReviewCard","images","username","p_comment","n_comment","date_created","p","v","picture","find","format","th","image","thumbnail","Card","elementClass","CardHeader","Avatar","substring","toUpperCase","subheader","readOnly","action","toLocaleDateString","month","day","CardContent","component","enableImageSelection","thumbnailStyle","tileViewportStyle","rowHeight","Success","surname","pComment","nComment","date","CustomCard","ContentWrapper","ResumeCard","PercentWrapper","Slider","StarResume","CustomSliderRoot","CustomSliderRail","CustomSliderTrack","CustomSliderThumb","TextWrapper","sellNowText","MetricNumber","ReviewsList","path","exact","Home","setImg","reviews","setReviews","grand_count","grand_sum","prom","rated1","rated2","rated3","rated4","rated5","stats","setStats","results","cantidad","rating_sum","ratings","review","valuation","Metric","toFixed","step","rail","track","thumb","ReviewsWrapper","reviewer_username","positive_comment","negative_comment","Boolean","location","hostname","Main","mainTheme","StrictMode","basename","ThemeProvider","Routes","ReactDOM","render","document","getElementById","navigator","serviceWorker","ready","registration","unregister"],"mappings":"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","file":"static/js/main.b9b1dc0c.chunk.js","sourcesContent":["module.exports = __webpack_public_path__ + \"static/media/home-img.f9e488c7.svg\";","import React from 'react';\nimport CssBaseline from '@material-ui/core/CssBaseline';\nimport { renderRoutes } from 'react-router-config';\nimport { SnackbarProvider } from 'notistack';\n\nfunction App({ route }) {\n return (\n \n {/* here we need to render App's routes */}\n \n { renderRoutes(route.routes) }\n \n \n );\n}\n\nexport default App;\n","import React from 'react';\n\nconst Logo = ({ color = '#fff', logoWidth = '140px' }) => {\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n )\n}\n\nexport default Logo;","import React from 'react';\nimport AppBar from '@material-ui/core/AppBar';\nimport Toolbar from '@material-ui/core/Toolbar';\nimport Drawer from '@material-ui/core/Drawer';\nimport ListItem from '@material-ui/core/ListItem';\nimport ListItemText from '@material-ui/core/ListItemText';\nimport List from '@material-ui/core/List';\nimport IconButton from '@material-ui/core/IconButton';\nimport MenuIcon from '@material-ui/icons/Menu';\nimport Box from '@material-ui/core/Box';\nimport { LinearProgress } from '@material-ui/core';\nimport { makeStyles } from '@material-ui/core';\nimport { Link } from 'react-router-dom';\nimport { Link as MUILink } from '@material-ui/core';\nimport { useEffect } from 'react';\nimport Logo from '../Logo/Logo';\n\nconst useStyles = makeStyles(theme => ({\n Toolbar: {\n flexGrow: 1 \n },\n CustomLinearProgress: {\n position: \"absolute\",\n bottom: \"-2px\",\n width: \"100%\",\n left: 0\n }, \n menuButton: {\n marginRight: theme.spacing(2),\n },\n Logo : {\n [theme.breakpoints.down('md')] : {\n width: '180px'\n }\n }\n}));\n\nconst useSDStyles = makeStyles(theme => ({\n list: {\n width: 250,\n },\n fullList: {\n width: 'auto',\n },\n link: {\n textDecoration: 'none !important',\n color: theme.palette.text.primary, \n }\n}));\n\nfunction SideDrawer(props) {\n\n const [open, setOpen] = React.useState(false); \n const classes = useSDStyles();\n\n useEffect(()=> {\n setOpen(props.isOpen || false)\n },[props.isOpen])\n\n return (\n \n setOpen(false)}>\n
\n \n {[['Agroads', 'https://www.agroads.com.ar'], ['Agroads Analytics', 'https://www.agroads.com.ar/analytics/']].map((elem, index) => (\n \n \n \n {elem[0]}\n \n \n \n ))} \n \n
\n
\n
\n )\n}\n\nexport default function CustomAppBar(props){\n const classes = useStyles();\n const [sideDrawerOpen, setSideDrawerOpen] = React.useState(false);\n \n const toggleSideDrawerOpen = () => {\n setSideDrawerOpen(prevState => (prevState) => !prevState)\n }\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n {props.loading\n ? \n : null\n } \n \n \n \n \n )\n}","import React from 'react';\nimport AppBar from '../AppBar/AppBar';\n\nexport default function Layout(props) {\n\n return (\n
\n \n { props.children }\n
\n )\n\n}","import { createMuiTheme } from '@material-ui/core/styles';\n\n\nexport const themeGreen = createMuiTheme({\n typography: {\n fontFamily: 'Roboto, Arial',\n },\n palette: {\n common: {\n black: \"#000\",\n white: \"#fff\"\n },\n background: {\n paper: \"#fff\",\n default: \"#ededed\",\n lightGray: \"#fafafa\"\n //default: \"rgba(250, 250, 250, 1)\"\n },\n primary: {\n light: \"#4bad3a\",\n main: \"#007d00\", \n dark: \"#004f00\", \n },\n secondary: {\n light: \"rgba(82, 111, 214, 1)\",\n main: \"rgba(5, 73, 164, 1)\", \n dark: \"rgba(60, 132, 247, 1)\",\n }, \n terceary: {\n light: \"#9be7ff\",\n main: \"#64b5f6\",\n dark: \"#bb002f\",\n },\n sponsored: {\n main: \"#3483fa\"\n },\n error: {\n light: \"#e57373\",\n main: \"#f44336\",\n dark: \"#d32f2f\",\n contrastText: \"#fff\"\n },\n text: {\n primary: \"rgba(66, 66, 66, 1)\",\n icon: \"rgba(204, 204, 204, 1)\",\n secondary: \"#757575\",\n disabled: \"rgba(189, 189, 189, 1)\",\n hint: \"rgba(0, 0, 0, 0.38)\"\n }\n }\n});","import React, { useState, useEffect } from 'react';\nimport { Button, makeStyles, Typography, Box, Container, TextField } from '@material-ui/core';\nimport withWidth, { isWidthUp } from '@material-ui/core/withWidth';\nimport Fade from '@material-ui/core/Fade';\nimport Grow from '@material-ui/core/Grow';\nimport Layout from '../../components/Layout/Layout';\nimport HomeImage from '../../assets/images/home-img.svg';\nimport { themeGreen } from '../../theme';\nimport { Link } from 'react-router-dom';\nimport Autocomplete from '@material-ui/lab/Autocomplete';\nimport CircularProgress from '@material-ui/core/CircularProgress';\n\n\nconst useStyles = makeStyles(theme => ({\n MainWrapper: { },\n CategorySelector: {\n marginTop: theme.spacing(5)\n },\n CenterWrapper: {\n display: 'flex',\n justifyContent: 'space-evenly',\n alignItems: 'center',\n width: '100%',\n height: 'calc(100vh - 66px)',\n [theme.breakpoints.down('sm')]: {\n flexDirection: 'column',\n justifyContent: 'flex-start'\n }\n },\n\n IllustrationWrapper: {\n maxWidth: '50%',\n '& img': {\n width: '100%',\n maxWidth: '500px'\n },\n alignSelf: 'center', \n [theme.breakpoints.down('sm')]: {\n display: 'none'\n }\n },\n\n FormWrapper: {\n width: '500px',\n maxWidth: '500px',\n display: 'flex',\n flexDirection: 'column',\n // margin: `${theme.spacing(5)}px auto 0`\n [theme.breakpoints.down('sm')]: {\n width: '100%',\n padding: '0 15px',\n margin: '0 auto',\n order: 0,\n height: '100%',\n justifyContent: 'center' \n }\n },\n title: {\n width: '100%',\n //color: theme.palette.common.white,\n fontSize: '55px',\n lineHeight: 1.2,\n fontWeight: 500,\n marginBottom: theme.spacing(3),\n [theme.breakpoints.down('sm')]: {\n fontSize: '45px', \n }\n },\n subtitle: {\n width: '100%',\n //color: theme.palette.common.white,\n fontSize: '28px',\n fontWeight: 100,\n marginBottom: theme.spacing(3),\n [theme.breakpoints.down('sm')]: {\n fontSize: '24px' \n },\n '& span' : {\n fontWeight: 500, \n }\n },\n ActionsWrapper: {\n display: 'flex',\n justifyContent: 'flex-end',\n marginTop: theme.spacing(3)\n }\n}))\n\nexport default withWidth()(function Home(props) {\n const classes = useStyles(themeGreen);\n const [open, setOpen] = React.useState(false);\n const [categories, setCategories] = React.useState([]); \n const [loading, setLoading] = useState(false); \n const [value, setValue] = React.useState();\n const [showForm, setShowForm] = React.useState(false); \n const [transitionsHandler, setTransitionHandler] = React.useState(\n {\n inForIllustration: false,\n inForTitle: false,\n inForSubtitle: false,\n inForButton: false\n }\n )\n\n\n useEffect(() => { \n\n let active = true;\n\n (async () => {\n const response = await fetch(`https://www.agroads.com.ar/reviews/api/es.asp?action=categories`);\n const categoriesAux = await response.json();\n if (active) {\n setCategories(categoriesAux.aggregations.rubro2.buckets.map(r => ({\n id: r.rubro2_id.buckets[0].key,\n title: r.key\n })))\n }\n })();\n\n\n if (!isWidthUp('sm', props.width)) {\n setTimeout(() => {\n setShowForm(true);\n }, 1400)\n\n setTimeout(() => {\n window.scrollTo({ top: 360, left: 0, behavior: 'smooth' })\n }, 1400)\n }\n\n setTimeout(() => {\n setTransitionHandler(prevState => ({...prevState, inForTitle : true }))\n }, 200);\n \n setTimeout(() => {\n setTransitionHandler(prevState => ({ ...prevState, inForIllustration: true }))\n }, 300);\n \n setTimeout(() => {\n setTransitionHandler(prevState => ({ ...prevState, inForSubtitle: true }))\n }, 1000);\n\n setTimeout(() => {\n setTransitionHandler(prevState => ({ ...prevState, inForButton: true }))\n }, 1500);\n\n }, []);\n\n const handleNext = () => {\n if (value && value !== 0)\n props.history.push(`/r/${value}/modelo/`);\n }\n \n\n return (\n \n \n \n \n
\n \n
\n Opiniones de Equipos Agrícolas.\n
\n
\n \n
\n \n ¿Tenés o tuviste maquinaria agrícola? ¡Queremos saber tu experiencia! \n \n
\n
\n \n
\n {\n setOpen(true);\n }}\n onClose={() => {\n setOpen(false);\n }} \n getOptionSelected={(option, value) => option.title === value.title}\n getOptionLabel={(option) => option.title}\n options={categories}\n loading={loading}\n renderInput={(params) =>\n \n {loading ? : null}\n {params.InputProps.endAdornment}\n \n ),\n }} />\n }\n fullWidth\n onChange={(event, newValue) => {\n setValue(newValue ? newValue.id : 0);\n }}\n />\n
\n \n
\n
\n
\n
\n
\n \n
\n \n {/* \"Portada */}\n \"Agroads\n \n
\n
\n
\n
\n
\n \n
\n )\n});","import React from 'react';\nimport Layout from '../../components/Layout/Layout';\nimport Fade from '@material-ui/core/Fade';\nimport { Button, makeStyles, Typography, Box, Container, TextField } from '@material-ui/core';\nimport { themeGreen } from '../../theme';\nimport Autocomplete from '@material-ui/lab/Autocomplete';\nimport CircularProgress from '@material-ui/core/CircularProgress';\n\n\nconst useStyles = makeStyles(theme => ({\n MainWrapper: {\n height: 'calc(100vh - 66px)'\n }, \n Title: {\n width: '100%', \n fontSize: '55px',\n fontWeight: 500,\n marginBottom: theme.spacing(5),\n [theme.breakpoints.down('sm')]: {\n fontSize: '45px',\n lineHeight: 1.2,\n marginBottom: theme.spacing(8),\n }\n },\n SubmitBtn: {\n marginTop: theme.spacing(8)\n },\n \n ActionsWrapper : {\n display: 'flex',\n justifyContent: 'flex-end'\n }\n}));\n\nfunction CategorySelector(props) {\n const [open, setOpen] = React.useState(false);\n const classes = useStyles(themeGreen);\n const [categories, setCategories] = React.useState([]); \n const [value, setValue] = React.useState();\n const loading = open && categories.length === 0;\n\n\n React.useEffect(() => {\n console.log(\"querying rubros\");\n let active = true;\n\n (async () => {\n const response = await fetch(`https://www.agroads.com.ar/reviews/api/es.asp?action=categories`);\n const categoriesAux = await response.json();\n if (active) {\n setCategories(categoriesAux.aggregations.rubro2.buckets.map(r => ({\n id: r.rubro2_id.buckets[0].key,\n title: r.key\n })))\n }\n })();\n\n return () => {\n active = false;\n };\n }, [])\n \n\n const handleNext = () => {\n if (value && value !== 0)\n props.history.push(`/r/${value}/modelo/`);\n }\n\n return (\n \n {/* autocomplete de todos los rubros que tengan marca - modelo */}\n \n \n \n
\n Elegí una categoría. \n {\n setOpen(true);\n }}\n onClose={() => {\n setOpen(false);\n }}\n getOptionSelected={(option, value) => option.title === value.title}\n getOptionLabel={(option) => option.title}\n options={categories}\n loading={loading} \n renderInput={(params) => \n \n {loading ? : null}\n {params.InputProps.endAdornment}\n \n ),\n }} />\n }\n fullWidth\n onChange={(event, newValue) => {\n setValue(newValue ? newValue.id : 0);\n }}\n />\n
\n \n
\n
\n
\n
\n
\n
\n )\n}\n\nexport default CategorySelector;","import React from 'react';\nimport Layout from '../../components/Layout/Layout';\nimport Fade from '@material-ui/core/Fade';\nimport { Button, makeStyles, Typography, Box, Container, TextField } from '@material-ui/core';\nimport { themeGreen } from '../../theme';\nimport Autocomplete from '@material-ui/lab/Autocomplete';\nimport CircularProgress from '@material-ui/core/CircularProgress';\n\n\nconst useStyles = makeStyles(theme => ({\n MainWrapper: {\n height: 'calc(100vh - 66px)'\n },\n FormWrapper: {\n },\n Title: {\n width: '100%',\n fontSize: '55px',\n fontWeight: 500,\n marginBottom: theme.spacing(5),\n [theme.breakpoints.down('sm')]: {\n fontSize: '45px',\n lineHeight: 1.2,\n marginBottom: theme.spacing(8),\n }\n },\n SubmitBtn: {\n marginTop: theme.spacing(8)\n },\n ActionsWrapper: {\n display: 'flex',\n justifyContent: 'flex-end'\n }\n}));\n\nfunction ModelSelector(props) {\n const [open, setOpen] = React.useState(false);\n const classes = useStyles(themeGreen);\n const [options, setOptions] = React.useState([]);\n const [value, setValue] = React.useState();\n const loading = open && options.length === 0;\n const [rubro2_param, setRubro2] = React.useState(props.match.params['rubro2']);\n\n React.useEffect(() => { \n let active = true; \n\n (async () => {\n const response = await fetch(`https://www.agroads.com.ar/reviews/api/es.asp?action=models&r2=${rubro2_param}`);\n const optionsAux = await response.json();\n if (active) {\n let optAux;\n optAux = optionsAux.aggregations.marcas.buckets.map(marca_bucket => {\n return marca_bucket.marca_id.buckets[0].modelos.buckets.map(model_bucket => ({\n marca: marca_bucket.key,\n modelo: marca_bucket.key + ' ' + model_bucket.key,\n modelo_id: model_bucket.modelo_id.buckets[0].key\n }))\n })\n \n setOptions(optAux.flat(2));\n }\n })();\n\n return () => {\n active = false;\n };\n }, [rubro2_param])\n\n\n const handleNext = () => {\n if (value && value != 0)\n props.history.push(`/r/${rubro2_param}/modelo/${value}/new`);\n }\n\n\n return (\n \n {/* autocomplete de todos los rubros que tengan marca - modelo */}\n \n \n \n
\n Seleccioná un modelo.\n {\n setOpen(true);\n }}\n onClose={() => {\n setOpen(false);\n }}\n groupBy={(option) => option.marca }\n getOptionSelected={(option, value) => option.modelo === value.modelo}\n getOptionLabel={(option) => option.modelo}\n options={options}\n loading={loading}\n renderInput={(params) =>\n \n {loading ? : null}\n {params.InputProps.endAdornment}\n \n ),\n }} />\n }\n fullWidth\n onChange={(event, newValue) => {\n setValue(newValue ? newValue.modelo_id : 0);\n }}\n />\n
\n \n
\n
\n
\n
\n
\n
\n )\n}\n\nexport default ModelSelector;","import React, { useEffect, useRef } from 'react';\nimport { makeStyles } from '@material-ui/core/styles';\nimport Modal from '@material-ui/core/Modal';\nimport Backdrop from '@material-ui/core/Backdrop';\nimport Fade from '@material-ui/core/Fade';\nimport LinearProgress from '@material-ui/core/LinearProgress';\nimport { Button, TextField, Link, FormHelperText } from '@material-ui/core';\nimport { useCookies } from 'react-cookie';\nimport { PropTypes } from 'prop-types';\n\nconst useStyles = makeStyles(theme => ({\n modal: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center' \n },\n paper: {\n backgroundColor: theme.palette.background.paper,\n outline: 0, \n boxShadow: theme.shadows[5],\n padding: theme.spacing(2, 4, 3),\n textAlign: 'center',\n width: '500px',\n position: 'relative'\n },\n title: {\n fontWeight: 300,\n fontSize: '24px',\n textAlign: 'center',\n marginTop: theme.spacing(9),\n marginBottom: theme.spacing(.5) \n },\n subtitle: {\n marginBottom: '36px',\n marginTop: '5px',\n color: '#757575',\n fontWeight: 100\n },\n form : {\n width: '340px',\n margin: '0 auto',\n '& *' : {\n width: '100%'\n },\n '& $fieldWrapper' : {\n margin: 0\n }\n },\n fieldWrapper: {},\n link: {\n marginTop: theme.spacing(2),\n marginBottom: theme.spacing(2),\n '& a' : { cursor: 'pointer'}\n },\n btnSuccess : {\n height: '48px'\n },\n iconClose: {\n position: 'absolute',\n top: theme.spacing(3),\n right: theme.spacing(3)\n },\n linearProgress: {\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%'\n },\n backdrop: {\n backdropFilter: 'blur(5px)'\n }\n}));\n\nexport default function TransitionsModal(props) {\n const classes = useStyles();\n const { callback } = props;\n const [open, setOpen] = React.useState(false); \n const [email, setEmail] = React.useState('');\n const [pass, setPass] = React.useState('');\n const [sending, setSending] = React.useState(false); \n const [error, setError] = React.useState(false); \n const [ck, setCk] = useCookies([]);\n\n let emailInputRef = useRef(null);\n let passInputRef = useRef(null);\n\n \n const handleChange = event => { \n if (error)\n setError(false); \n\n if (event.target.name === 'email')\n setEmail(event.target.value)\n if (event.target.name === 'pass')\n setPass(event.target.value)\n } \n\n const handleClose = () => {\n setOpen(false);\n };\n\n const sendForm = () => { \n\n if (email !== '' && pass!== '' && !sending) {\n setSending(true);\n fetch('https://www.agroads.com.ar/miembros/login_valida.asp', {\n method: 'POST',\n credentials: 'same-origin',\n body: `login-email=${email}&login-pass=${pass}&get_data=y`, \n headers: new Headers({\n 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'\n })\n })\n .then(res => res.json())\n .then(res => { \n if (res.respuesta && res.respuesta !== \"false\") { \n setOpen(false);\n let dl = window.dataLayer;\n let dlObj = {\n 'ruta': '/login/exito',\n 'titulo': 'AgroadsReviews-Miembros-Acceso-Exito',\n 'userId': res.user_id,\n 'categoriaPagina': 'LoginExitoso',\n 'usuarioTipo': res.tag,\n 'usuarioUbicacion': res.ubicacion,\n 'event': 'pvvLoginExito'\n }\n dl.push(dlObj);\n callback(res);\n }\n else {\n setError(\"Error de autenticación\")\n }\n })\n .catch(error => {\n setError(true); \n })\n .finally((res)=> {\n setSending(false); \n })\n }\n }\n\n useEffect(() => {\n if (ck.usuario && ck.usuario !== '') {\n setEmail(ck.usuario) \n }\n }, []);\n\n useEffect(() => { \n if (email === '' && emailInputRef.current) {\n emailInputRef.current.focus();\n } else {\n if (pass === '' && passInputRef.current) {\n passInputRef.current.focus();\n }\n }\n }, [emailInputRef.current, passInputRef.current]);\n\n useEffect(() => { \n setOpen(props.isOpen); \n },[props.isOpen]);\n \n\n return ( \n \n \n
\n { sending ? : null }\n

Ingresar a Agroads

\n

Calificá y aportá tu conocimiento a la comunidad.

\n
\n
\n \n
\n
\n \n
\n {error ? Los datos ingresados son incorrectos. : null }\n
\n
\n Recordar contraseña\n
\n \n
\n ¿No estás registrado? Registrate ahora!\n
\n
\n
\n
\n \n );\n}\n\nTransitionsModal.propTypes = {\n callback: PropTypes.func.isRequired\n}\n","import React from 'react';\nimport { themeGreen } from '../../theme';\nimport Layout from '../../components/Layout/Layout';\nimport Fade from '@material-ui/core/Fade';\nimport Rating from '@material-ui/lab/Rating';\nimport LoginModal from '../../containers/LoginModal/LoginModal';\nimport { Button, makeStyles, Typography, Box, Container, TextField, Chip, FormHelperText } from '@material-ui/core';\nimport Skeleton from '@material-ui/lab/Skeleton';\nimport { useForm } from \"react-hook-form\";\nimport { useSnackbar } from 'notistack';\n\n// filepond\nimport { FilePond, registerPlugin } from \"react-filepond\";\nimport \"filepond/dist/filepond.min.css\";\nimport FilePondPluginImageExifOrientation from \"filepond-plugin-image-exif-orientation\";\nimport FilePondPluginImagePreview from \"filepond-plugin-image-preview\";\nimport \"filepond-plugin-image-preview/dist/filepond-plugin-image-preview.css\";\n// type\nimport FilePondPluginFileValidateType from 'filepond-plugin-file-validate-type';\nimport FilePondPluginFileValidateSize from 'filepond-plugin-file-validate-size';\nimport FilePondPluginImageValidateSize from 'filepond-plugin-image-validate-size';\n\n\n\n// Register the plugins\nregisterPlugin(FilePondPluginImageExifOrientation, FilePondPluginImagePreview, FilePondPluginFileValidateType, FilePondPluginFileValidateSize, FilePondPluginImageValidateSize);\n\n\n\nconst useStyles = makeStyles(theme => ({\n Container: {\n alignItems: 'center',\n display: 'flex',\n justifyContent: 'center'\n },\n MainWrapper: {\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n width: '100%',\n maxWidth: '600px',\n marginTop: theme.spacing(6),\n marginBottom: theme.spacing(10),\n [theme.breakpoints.down('md')]: {\n maxWidth: 'initial'\n }\n },\n ProductWrapper: {\n marginTop: theme.spacing(3),\n display: 'flex',\n alignItems: 'center'\n },\n ProductAvatar: {\n width: '80px',\n height: '80px',\n flexShrink: 0,\n borderRadius: '100%',\n overflow: 'hidden',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n '& img' : {\n width: 'auto',\n height: '100%'\n }\n }, \n ProductInfo: {\n marginLeft: theme.spacing(2)\n },\n LightText : {\n fontWeight: 100\n },\n QuestionText : {\n fontSize: '18px',\n fontWeight: 500,\n marginBottom: theme.spacing(2),\n },\n QuestionTextExtra : {\n marginLeft: theme.spacing(1),\n color: theme.palette.text,\n fontSize: '12px'\n },\n FormWrapper: {\n },\n RatingWidget: { \n fontSize: '2.5rem'\n },\n RatingWrapper : {\n display: 'flex',\n alignItems: 'center',\n gap: '15px'\n },\n Form : {\n marginTop: theme.spacing(8),\n width: '100%'\n },\n Title: {\n width: '100%',\n fontSize: '30px',\n fontWeight: 500, \n [theme.breakpoints.down('sm')]: {\n fontSize: '24px' \n }\n },\n SubmitBtn: {\n marginTop: '40px'\n },\n ActionsWrapper: {\n display: 'flex',\n justifyContent: 'flex-end'\n },\n previewChip: {\n minWidth: 160,\n maxWidth: 210\n },\n FileAreaText : {\n fontSize: '16px'\n },\n FileAreaIcon: {\n width: '40px'\n }\n}));\n\nfunction ReviewForm(props) { \n const STATIC_URL_1 = 'https://static.aastatic.com.ar/';\n const STATIC_URL_2 = 'https://static2.aastatic.com.ar/';\n const LABELS = { \n 1: 'Muy Malo',\n 2: 'Malo',\n 3: 'Bueno',\n 4: 'Muy Bueno',\n 5: 'Excelente' \n };\n const classes = useStyles(themeGreen);\n const { enqueueSnackbar } = useSnackbar();\n const { register, getValues, handleSubmit, watch, errors, setValue } = useForm();\n const [G_USER_ID, setUserId] = React.useState(0);\n const [hover, setHover] = React.useState(-1); \n const [loading, setLoading] = React.useState(false); \n const [loginOpen, setLoginOpen] = React.useState(false);\n const [rubroImg, setRubroImg] = React.useState(null); \n const [reviewImages, setReviewImages] = React.useState([]); \n const [imagesToUpload, setImagesToUpload] = React.useState([]); \n const [marca, setMarcaNombre] = React.useState('');\n const [modelo, setModeloNombre] = React.useState(''); \n const [rubro, setRubroNombre] = React.useState({\n gen: '',\n nombre: ''\n });\n const [param_r2, setParamR2] = React.useState(props.match.params['rubro2']);\n const [param_mod, setParamMod] = React.useState(props.match.params['model']);\n const [loginResult, setLoginResult] = React.useState(null);\n const refForForm = React.useRef(null);\n \n React.useEffect(() => {\n if (loginResult && loginResult.user_id) {\n handleSubmit(onSubmit)()\n }\n }, [loginResult])\n \n\n React.useEffect(() => {\n window.scrollTo(0, 0);\n register({ name: \"year\" }, \n { \n minLength: { value: 4, message: 'El año debe estar en formato yyyy' }, \n maxLength: { value: 4, message: 'El año debe estar en formato yyyy'},\n max: { value: new Date().getFullYear(), message: `El año no puede ser superior a ${new Date().getFullYear()}` },\n min: { value: 1900, message: 'El año no puede ser menor a 1900' }\n });\n register({ name: \"rating\" }, { required: 'El puntaje es lo más representativo de tu reseña.' });\n register({ name: \"comment\" }, { required: 'Este campo es obligatorio' });\n register({ name: \"positive\" }, { required: 'Este campo es obligatorio' } );\n register({ name: \"negative\" }, { required: 'Este campo es obligatorio' } );\n \n \n if (param_r2 && param_mod) {\n fetch(`https://www.agroads.com.ar/reviews/api/es.asp?action=info&mo=${param_mod}&r2=${param_r2}`)\n .then(res => res.json())\n .then(data => { \n let info = data.hits.hits[0][\"_source\"]; \n setRubroNombre({\n gen: info.rubros.rubro2.sexo,\n nombre: info.rubros.rubro2.rubro_singular\n });\n setMarcaNombre(info.marca.detalle);\n setModeloNombre(info.modelo.detalle);\n \n if (data.userId && parseInt(data.userId) > 0) { \n setUserId(parseInt(data.userId));\n } else {\n // setLoginOpen(true);\n // dl.push({\n // 'ruta': '/login/formulario',\n // 'titulo': 'AgroadsPrecios-Miembros-Acceso-Formulario',\n // 'categoriaPagina': 'LoginFormulario',\n // 'event': 'pvvLogin'\n // })\n }\n })\n .catch(console.log)\n\n fetch(`https://www.agroads.com.ar/reviews/api/es.asp?action=getimg&mo=${param_mod}&r2=${param_r2}`)\n .then(res => res.json())\n .then(data => {\n let img_url = `${ STATIC_URL_1 }img/no-fotos-225x180.png`;\n if (data.hits.hits && data.hits.hits[0])\n img_url = `${STATIC_URL_2 }${data.hits.hits[0][\"_source\"].pictures[0].variants[\"100\"].jpg}` \n \n setTimeout(() => {\n setRubroImg(img_url); \n }, 500);\n })\n .catch(console.log)\n }\n }, [])\n\n \n\n const handleLoginResult = (data) => { \n setLoginResult(data); \n } \n\n const onSubmit = data => { \n if (G_USER_ID === 0 && !loginResult) {\n setLoginOpen(true); \n let dl = window.dataLayer; \n dl.push({\n 'ruta': '/login/formulario',\n 'titulo': 'AgroadsReviews-Miembros-Acceso-Formulario',\n 'categoriaPagina': 'LoginFormulario',\n 'event': 'pvvLogin'\n })\n return false;\n }\n\n let i_urls = []\n setLoading(true);\n console.log(\"[Sending images...]\"); \n\n\n let imgPromises = [];\n for (let index = 0; index < imagesToUpload.length; index++) { \n imgPromises.push(subirImagen(imagesToUpload[index]));\n }\n \n Promise.all(imgPromises)\n .then(uploaded_imgs => {\n console.log(uploaded_imgs);\n if (uploaded_imgs.length > 0) {\n uploaded_imgs.forEach(img => {\n if (img.estado===\"ok\")\n i_urls.push(`${img.nombre}${img.ext}`);\n });\n } \n console.log(\"[Images uploaded]\");\n \n // crear review.\n fetch('https://www.agroads.com.ar/reviews/api/es.asp', {\n method: 'POST', \n credentials: 'same-origin',\n body: `action=create&item_id=${param_mod}&valuation=${data.rating}&positive_comment=${encodeURI(data.positive)}&negative_comment=${encodeURI(data.negative)}&comment=${encodeURI(data.comment)}&year=${data.year}`,\n headers: new Headers({\n 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'\n })\n })\n .then(res => res.json())\n .then(res => {\n // si se cargaron imágenes, asociarlas. \n // console.log(\"[imgs]\", i_urls);\n let respuesta = JSON.parse(res);\n\n if (respuesta.id) {\n if (i_urls.length > 0) {\n fetch('https://www.agroads.com.ar/reviews/api/es.asp', {\n method: 'POST',\n credentials: 'same-origin',\n body: `action=upload&review_id=${respuesta.id}&images=${encodeURI(i_urls.join(\",\"))}`,\n headers: new Headers({\n 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'\n })\n })\n .then(r => r.json())\n .then(rjson => {\n props.history.replace(`/r/${param_r2}/modelo/${param_mod}/success`);\n setLoading(false);\n })\n .catch(err => {\n props.history.replace(`/r/${param_r2}/modelo/${param_mod}/success`);\n setLoading(false);\n })\n }\n else {\n props.history.replace(`/r/${param_r2}/modelo/${param_mod}/success`);\n setLoading(false);\n }\n }\n })\n .catch(e => {\n console.log(\"Error\", e);\n enqueueSnackbar(`Error al cargar reseña`, { variant: 'error' })\n setLoading(false);\n }); \n }).catch(e => {\n enqueueSnackbar(`Error al cargar imágenes`, { variant: 'error' })\n setLoading(false);\n }); \n }\n \n var guid = (function () {\n var counter = 0;\n\n return function (prefix) {\n var guid = new Date().getTime().toString(32), i;\n\n for (i = 0; i < 5; i++) {\n guid += Math.floor(Math.random() * 65535).toString(32);\n }\n\n return (prefix || 'o_') + guid + (counter++).toString(32);\n };\n }());\n \n const subirImagen = (img) => { \n // return a Promise\n console.log(\"subirImagen img:\", img);\n let temp_name = guid();\n let ext = img.name.split('.').pop();\n let temp_filename = temp_name + '.' + ext;\n\n if (img) {\n let formData = new FormData(); \n formData.append(\"accion\", \"subirtemp\"); \n formData.append(\"Filedata\", img, temp_filename)\n formData.append(\"name\", temp_filename);\n return new Promise((resolve,reject) => {\n fetch('https://django.agroads.com.ar/v1/files/clasificados/subir_temp/', {\n method: 'POST',\n body: formData\n })\n .then(res => res.json())\n .then(res => { \n resolve(res);\n })\n .catch(e => {\n reject(e)\n })\n })\n } else {\n return new Promise((resolve, reject) => reject(\"Falta imagen\"))\n }\n }\n\n return (\n \n \n \n \n \n
\n Calificar\n \n
\n
\n {\n rubroImg !== null ? \"Imagen : \n }\n
\n
\n {/* { rubro.nombre.toLowerCase() } { marca } { modelo} */}\n modelo {marca} {modelo}\n
\n
\n
\n \n\n
\n \n ¿Qué puntaje le das? \n \n {\n setValue('rating', newValue)\n }}\n size=\"large\"\n precision={1}\n onChangeActive={(event, newHover) => {\n setHover(newHover);\n }}\n />\n {\n hover!== -1 || getValues(\"rating\") > 0\n ? \n : null \n } \n \n \n \n {\n errors.rating \n ? \n \n { errors.rating.message }\n \n \n : null\n } \n \n \n \n \n Contanos lo que sabés de este modelo\n setValue('comment', e.target.value)} \n error={errors.comment} \n helperText={errors.comment?.message}\n placeholder='Detallá todo lo que te gustaría que las personas conozcan sobre este modelo'\n /> \n \n \n \n { rubro.gen !== '' \n ? Lo mejor\n : \n } \n setValue('positive', e.target.value)}\n error={errors.positive}\n helperText={errors.positive?.message}\n placeholder='¿Qué puntos destacarías de este modelo?'\n />\n \n \n Contras\n setValue('negative', e.target.value)}\n error={errors.negative}\n helperText={errors.negative?.message}\n placeholder='¿Tuviste algún problema recurrente? ¿En qué casos no lo recomendarías?'\n />\n \n \n {rubro.gen !== ''\n ? Año {rubro.gen === 0 ? 'de la ' : 'del '}{rubro.nombre.toLowerCase()}\n : \n }\n setValue('year', e.target.value)}\n fullWidth\n helperText={errors.year?.message}\n placeholder='Ej. 2005'\n />\n \n \n \n \n Fotos\n (Opcional)\n \n {\n setReviewImages(fileItems.map(f => f.file))\n let arr = fileItems.filter(f => f.status ===2).map(f2 => f2.file);\n setImagesToUpload(arr);\n }}\n credits={false}\n acceptedFileTypes={['image/png', 'image/jpeg']}\n labelFileTypeNotAllowed='Tipo de archivo no permitido.'\n maxFileSize='3000000'\n labelMaxFileSizeExceeded='Tamaño de archivo muy grande.'\n labelIdle='Agregar fotos de mi equipo'\n imageValidateSizeMinWidth='360'\n imageValidateSizeMinHeight='288'\n imageValidateSizeMaxWidth='1920'\n imageValidateSizeMaxHeight='1080'\n imageValidateSizeLabelExpectedMinSize={`Tamaño mínimo: {minWidth}x{minHeight}px`}\n imageValidateSizeLabelExpectedMaxSize={`Tamaño máximo: {minWidth}x{minHeight}px`}\n imageValidateSizeLabelImageSizeTooSmall='Imagen muy chica'\n imageValidateSizeLabelImageSizeTooBig='Imagen muy grande'\n /> \n \n \n\n
\n {\n G_USER_ID > 0\n ? \n : \n } \n
\n
\n
\n
\n
\n
\n \n
\n )\n}\n\nexport default ReviewForm;","import React from 'react';\nimport { Card, CardHeader, CardContent, CardActions, Button, Typography, Box, Avatar, makeStyles } from '@material-ui/core'\nimport { Rating } from '@material-ui/lab';\nimport { themeGreen } from '../../theme';\nimport Gallery from 'react-grid-gallery';\n\nconst useStyles = makeStyles(theme => ({ \n avatar : {},\n CustomCardAction: { margin: 0},\n Content: { paddingTop: 0 },\n RatingWidget: {},\n GalleryContainer: {\n clear: 'both',\n margin: '20px 0 30px',\n overflow: 'hidden'\n }\n \n}))\n\nfunction ReviewCard(props) {\n\n const classes = useStyles(themeGreen);\n const dateOptions = { year: 'numeric', month: 'short', day: 'numeric' };\n\n const styleSmall = () => {\n return { \n width: '100%',\n height: 'auto'\n }\n }\n\n const tileViewport = () => {\n return { \n width: '150px',\n background: 'none' \n }\n }\n let { username, rating, comment, p_comment, n_comment, date_created, pictures } = props; \n\n let images;\n if (pictures) {\n console.log(pictures)\n images = pictures.map(p => {\n \n let v = p.picture.variants.find(v => v.size === \"650\" && v.format === \"jpg\")\n let th = p.picture.variants.find(v => v.size === \"360\" && v.format === \"jpg\")\n\n if (v)\n return {\n src: v && v.image,\n thumbnail: th && th.image \n }\n })\n }\n return (\n \n \n {username.substring(0,1).toUpperCase() }\n \n }\n title={`${username}`}\n subheader={\n \n }\n action={\n {date_created && new Date(date_created).toLocaleDateString(\"es-AR\", dateOptions)}\n }\n classes={{ action: classes.CustomCardAction }}\n />\n \n {\n comment && \n \n \n {comment}\n \n \n }\n { \n p_comment && \n
Lo mejor
\n {p_comment}\n
\n }\n {\n n_comment && \n
Lo peor
\n {n_comment}\n
\n }\n {\n images \n ? \n
\n \n
\n : null\n }\n
\n
\n )\n}\n\nexport default ReviewCard;","import React, { useEffect, useState } from 'react';\nimport { themeGreen } from '../../theme';\nimport Layout from '../../components/Layout/Layout';\nimport { Fade, Box, Container, makeStyles, Typography, Button } from '@material-ui/core';\nimport ReviewCard from '../../components/ReviewCard/ReviewCard';\n\nconst useStyles = makeStyles(theme => ({\n MainWrapper: { margin: 'auto', height: '100%', marginTop: '80px'},\n}))\n\n\nfunction Success(props) {\n const [loading, setLoading] = useState(false)\n const classes = useStyles(themeGreen);\n const [reviewData, setReviewData] = useState({\n name: null,\n surname: null,\n username: null,\n pComment: null,\n nComment: null,\n date: null,\n rating: 0\n })\n \n const [param_r2, setParamR2] = React.useState(props.match.params['rubro2']);\n const [param_mod, setParamMod] = React.useState(props.match.params['model']);\n // useEffect(() => {\n // fetch('https://www.agroads.com.ar/reviews/api/es.asp?action=get&pKey=777CF658-1807-4C22-9D52-1E451A7B4606')\n // .then(res => res.json())\n // .then(data => {\n // console.log(\"data\", data)\n // setReviewData({ ...reviewData, name: data.reviewer_name, username: data.reviewer_username, surname: data.reviewer_surname, pComment: data.positive, nComment: data.negative, date: data.date_created, rating: data.rating })\n // })\n // .catch(console.log)\n // }, [])\n\n return (\n \n \n \n \n ¡Gracias por tu colaboración! \n \n Miles de personas confían en reseñas como la tuya para decidir qué comprar. \n \n \n \n \n \n \n \n \n )\n} \n\nexport default Success;","import React, { useState, useEffect } from 'react';\nimport { \n Box, \n Button,\n Card, \n Container, \n Fade, \n makeStyles, \n Typography,\n Slider\n} from '@material-ui/core';\nimport { Skeleton, Rating } from '@material-ui/lab'\nimport Layout from '../../components/Layout/Layout';\nimport ReviewCard from '../../components/ReviewCard/ReviewCard';\nimport { themeGreen } from '../../theme';\nimport GradeIcon from '@material-ui/icons/Grade';\n\nconst useStyles = makeStyles(theme => ({ \n CustomCard : { marginBottom: '20px', maxWidth: '360px', margin: 'auto' },\n Container: {\n alignItems: 'center',\n display: 'flex',\n justifyContent: 'center'\n },\n MainWrapper: {\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n width: '100%',\n maxWidth: '600px',\n marginTop: theme.spacing(6),\n marginBottom: theme.spacing(10),\n [theme.breakpoints.down('md')]: {\n maxWidth: 'initial'\n }\n },\n ContentWrapper: { width : '100%' }, \n ProductWrapper: {\n marginTop: theme.spacing(3),\n display: 'flex',\n alignItems: 'center'\n },\n ProductAvatar: {\n width: '80px',\n height: '80px',\n flexShrink: 0,\n borderRadius: '100%',\n overflow: 'hidden',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n '& img': {\n width: 'auto',\n height: '100%'\n }\n },\n ProductInfo: {\n marginLeft: theme.spacing(2)\n },\n LightText: {\n fontWeight: 100\n },\n QuestionText: {\n fontSize: '18px',\n fontWeight: 500,\n marginBottom: theme.spacing(2)\n },\n Title: {\n width: '100%',\n fontSize: '30px',\n fontWeight: 500,\n [theme.breakpoints.down('sm')]: {\n fontSize: '24px',\n lineHeight: 1.3\n }\n }, \n ResumeCard: { padding: theme.spacing(2), width: '100%'}, \n PercentWrapper: { minWidth: '35px'},\n Slider: { width: '75%', flexShrink: 0},\n StarResume: { gap: '15px'},\n CustomSliderRoot: { color: '#fab401', padding: '20px 0', flexGrow: 1, width: \"initial\"},\n CustomSliderRail: { height: '20px', top: '10px', background: \"#bdbdbd\" },\n CustomSliderTrack: { height: '20px', top: '10px' },\n CustomSliderThumb: { display: 'none' },\n RatingWidget: { marginLeft: '-3px'},\n TextWrapper: {\n width: '100%', \n marginTop: theme.spacing(5),\n marginBottom: theme.spacing(5) \n },\n sellNowText: {\n fontSize: '22px',\n lineHeight: '26px',\n fontWeight: 300,\n color: theme.palette.text.secondary,\n marginTop: theme.spacing(1),\n marginBottom: theme.spacing(2)\n },\n MetricNumber : {\n fontSize: '65px',\n marginRight: theme.spacing(3)\n }\n}));\n\n\nfunction ReviewsList(props) {\n const classes = useStyles(themeGreen);\n const STATIC_URL_1 = 'https://static.aastatic.com.ar/';\n const STATIC_URL_2 = 'https://static2.aastatic.com.ar/';\n const [loading, setLoading] = useState(false);\n const [img, setImg] = React.useState(null);\n const [marca, setMarcaNombre] = React.useState('');\n const [modelo, setModeloNombre] = React.useState('');\n const [rubro, setRubroNombre] = React.useState({\n gen: '',\n nombre: ''\n });\n const [param_r2, setParamR2] = useState(props.match.params['rubro2']);\n const [param_mod, setParamMod] = useState(props.match.params['model']);\n const [reviews, setReviews] = useState([])\n const [stats, setStats] = useState({\n grand_count: 0,\n grand_sum: 0,\n prom: 0,\n rated1: 0,\n rated2: 0,\n rated3: 0,\n rated4: 0,\n rated5: 0\n })\n \n useEffect(() => {\n setLoading(true);\n fetch(`https://django.agroads.com.ar/v1/reviews/?entity_id=1&item_id=${param_mod}`)\n .then(res => res.json())\n .then(data => {\n setReviews(data.results);\n })\n .then(console.log)\n .finally(()=>{\n setLoading(false);\n })\n }, [param_r2, param_mod])\n\n useEffect(() => {\n window.scrollTo(0, 0);\n\n if (param_r2 && param_mod) {\n fetch(`https://www.agroads.com.ar/reviews/api/es.asp?action=info&mo=${param_mod}&r2=${param_r2}`)\n .then(res => res.json())\n .then(data => {\n let info = data.hits.hits[0][\"_source\"];\n setRubroNombre({\n gen: info.rubros.rubro2.sexo,\n nombre: info.rubros.rubro2.rubro_singular\n });\n setMarcaNombre(info.marca.detalle);\n setModeloNombre(info.modelo.detalle); \n })\n .catch(console.log)\n\n fetch(`https://www.agroads.com.ar/reviews/api/es.asp?action=getimg&mo=${param_mod}&r2=${param_r2}`)\n .then(res => res.json())\n .then(data => {\n let img_url = `${STATIC_URL_1}img/no-fotos-225x180.png`;\n if (data.hits.hits && data.hits.hits[0])\n img_url = `${STATIC_URL_2}${data.hits.hits[0][\"_source\"].pictures[0].variants[\"100\"].jpg}` \n\n setTimeout(() => {\n setImg(img_url);\n }, 500);\n })\n .catch(console.log)\n }\n }, [])\n\n useEffect(() => {\n let cantidad = reviews.length;\n let rating_sum = 0;\n let ratings = {\n rated1: 0, rated2: 0, rated3: 0, rated4: 0, rated5: 0\n } \n reviews.forEach(review => { \n ratings[`rated${review.valuation.toString()}`] ++; \n rating_sum += review.valuation;\n });\n\n setStats({ grand_count : cantidad, grand_sum: rating_sum, ...ratings }) \n }, [reviews])\n\n \n return (\n \n \n \n \n
\n Reseñas\n \n
\n
\n {\n img !== null ? \"Imagen : \n }\n\n
\n
\n {rubro.nombre.toLowerCase()} {marca} {modelo}\n {/*
\n \n
*/}\n
\n
\n
\n \n \n Resumen\n \n \n \n \n \n {stats.grand_sum && (stats.grand_sum / stats.grand_count).toFixed(1)}\n \n \n
\n \n
\n \n { stats.grand_count \n ? stats.grand_count > 1 ? 'Promedio entre ' + stats.grand_count + ' opiniones' : 'Basado en 1 opinión'\n : null\n }\n \n
\n
\n \n \n \n 5\n \n \n \n \n {stats.rated5 ? (stats.rated5 * 100 / stats.grand_count).toFixed(0) + '%': 0 }\n \n \n \n \n 4\n \n \n \n \n {stats.rated4 ? (stats.rated4 * 100 / stats.grand_count).toFixed(0) + '%' : 0}\n \n\n \n \n \n 3\n \n \n \n \n {stats.rated3 ? (stats.rated3 * 100 / stats.grand_count).toFixed(0) + '%' : 0}\n \n\n \n \n \n 2\n \n \n \n \n {stats.rated2 ? (stats.rated2 * 100 / stats.grand_count).toFixed(0) + '%' : 0}\n \n\n \n \n \n 1\n \n \n \n \n {stats.rated1 ? (stats.rated1 * 100 / stats.grand_count).toFixed(0) + '%' : 0}\n \n \n\n \n \n
\n
\n
\n\n \n
\n ¿Tenés o tuviste este modelo?\n
\n \n
\n \n {\n reviews.length > 0 \n ? \n \n Comentarios\n \n {\n reviews.map((r,index) => {\n return (\n \n \n \n )\n }) \n } \n \n : null\n }\n \n
\n
\n
\n
\n
\n )\n}\n\nexport default ReviewsList;","import App from './App';\nimport Home from './containers/Home/Home';\nimport CategorySelector from './containers/CategorySelector/CategorySelector';\nimport ModelSelector from './containers/ModelSelector/ModelSelector';\nimport ReviewForm from './containers/ReviewForm/ReviewForm';\nimport Success from './containers/ReviewForm/Success';\nimport ReviewsList from './containers/ReviewsList/ReviewsList.js';\n\n// import Detalle from './containers/Detalle/Detalle';\n\nconst routes = [\n {\n component: App,\n routes: [\n { path: '/', exact: true, component: Home },\n { path: '/r', exact: true, component: CategorySelector },\n { path: '/r/:rubro2/modelo/', exact: true, component: ModelSelector },\n { path: '/r/:rubro2/modelo/:model/', exact: true, component: ReviewsList },\n { path: '/r/:rubro2/modelo/:model/new/', exact: true, component: ReviewForm },\n { path: '/r/:rubro2/modelo/:model/success/', exact: true, component: Success }\n // { path: '/r/:rubro2/modelos/:modelosParams/(clasificado)?/:clasificadoid?', exact: false, component: Detalle }\n ]\n }\n];\n\nexport default routes;","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.0/8 are considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\nexport function register(config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl, {\n headers: { 'Service-Worker': 'script' },\n })\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready\n .then(registration => {\n registration.unregister();\n })\n .catch(error => {\n console.error(error.message);\n });\n }\n}\n","import React, { useEffect } from 'react';\nimport ReactDOM from 'react-dom';\nimport { BrowserRouter } from 'react-router-dom';\nimport Routes from './routes';\nimport { renderRoutes } from 'react-router-config';\nimport { ThemeProvider } from '@material-ui/styles';\nimport { themeGreen } from './theme';\nimport * as serviceWorker from './serviceWorker';\n\n\nexport default function Main() {\n const [mainTheme, setMainTheme] = React.useState(themeGreen);\n\n\n return (\n \n \n \n
{renderRoutes(Routes)}
\n
\n
\n
\n )\n}\n\nReactDOM.render(\n
,\n document.getElementById('root')\n);\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://bit.ly/CRA-PWA\nserviceWorker.unregister();\n"],"sourceRoot":""}