{"version":3,"sources":["components/translation.component.tsx","components/input-coordinates.component.tsx","components/progress-bar.component.tsx","components/mobile-progress-bar.component.tsx","components/send-to-processing-button.component.tsx","components/upload-button.component.tsx","components/alert-dialog.component.tsx","components/accordeon.component.tsx","services/ai.service.ts","App.jsx","Header.jsx","index.js"],"names":["theme","createMuiTheme","typography","fontSize","ReturnTranslation","props","useTranslation","t","ThemeProvider","Typography","variant","gutterBottom","gtbt","kei","responsiveFontSizes","factor","breakpoints","InputCoordinates","classes","makeStyles","root","margin","spacing","useStyles","size","Xlabel","i18next","language","Ylabel","className","autoComplete","Grid","container","justify","item","xs","md","lg","TextField","required","id","label","type","disabled","Boolean","isExample","fullReady","onChange","handleUpperLeftXChange","InputLabelProps","shrink","handleUpperLeftYChange","handleLowerRightXChange","handleLowerRightYChange","ProgressBar","width","height","marginTop","pictureProcessingStatus","resultWasDrawn","Box","display","justifyContent","mt","Button","color","startIcon","Save","onClick","base64Data","fileName","linkSource","downloadLink","document","createElement","href","download","click","downloadBase64File","processedPictureBase64","imageTag","LinearProgress","MobileProgressBar","getElementById","offsetWidth","SendToProcessingButton","handlePostButtonClick","endIcon","CloudUpload","fullWidth","UploadButton","input","accept","event","htmlFor","component","mb","Photo","AlertDialog","Dialog","open","errorkey","onClose","handleClose","aria-labelledby","aria-describedby","DialogTitle","DialogActions","autoFocus","rootExpanded","flexGrow","content","borderRadius","border","details","alignItems","column1","flexBasis","column2","examples_descriptions","ControlledAccordions","React","useState","expanded","setExpanded","handleChange","panel","isExpanded","handleAccordeonTabChange","style","flexDirection","Accordion","AccordionSummary","expandIcon","aria-controls","AccordionDetails","ml","m","handleExampleChanging","src","alt","mr","base64picture","p","handleImageLoading","API_URL","process","API_KEY","askPresignedURLtoUpload","body","a","requestOptions","method","headers","JSON","stringify","fetch","getImageProcessingResult","requestId","getRequestOptions","getRequestString","AiService","uploadToBucket","uploadingURL","uploadFields","imageFileItself","key","form_data","FormData","append","uploadOptions","upleftXs","upleftYs","downrightXs","downrightYs","examples_ids","new_scale_coord_to_pix","value","min_coord","max_coord","dim_in_pix","Math","sign","new_x1","new_x2","min","max","relative_coord_value","floor","h3","up","subtitle1","App","createDrawResultImage","imageDescription","arrayOfHouses","func","img","Image","processedImageBase64","canvas","ctx","getContext","onload","drawImage","fillStyle","i","length","house","Points","image_x","Y","upperLeftY","lowerRightY","image_y","X","upperLeftX","lowerRightX","beginPath","moveTo","j","lineTo","fill","toDataURL","setState","drawPreviewResultImage","state","drawChosenImage","redraw","canvas_original","ctx_original","chosen_img_preview","anyError","adaptive_canvas_size","clearRect","wrh","newWidth","newHeight","validateInputs","number","scrollIntoView","behavior","Number","handleCloseError","inputCoordinatesRef","createRef","postButtonRef","imageSectionRef","imgWidth","imgHeight","imageFileExt","lang","bind","tryGetRequest","handleStopTryingGet","getProcessedImage","current","this","target","files","includes","split","reader","FileReader","handleImageReaderLoaded","readAsBinaryString","console","log","readerEvt","binaryString","result","base64","btoa","requestParams","ImageFormat","LeftTopPoint","RightBottomPoint","MustReturnConstructions","MustReturnCars","presignedResponse","status","presignedResponseStatus","json","presignedResponseJson","guid","presigned","url","fields","uploadingResponse","uploadingResponseStatus","processTryingGet","setInterval","postResponseRequestId","getResponse","getResponseJson","getResponsePictureProcessingStatus","Status","clearInterval","housesArray","Result","fallback","marginLeft","marginRight","sm","Paper","elevation","ref","Component","button","borderColor","backgroundColor","boxShadow","SwitchComponent","i18n","languages","count","setCount","ButtonGroup","changeLanguage","Head","float","textAlign","init","interpolation","escapeValue","lng","resources","en","common","common_en","ru","common_ru","ReactDOM","render","I18nextProvider"],"mappings":"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","file":"static/js/main.c82bd215.chunk.js","sourcesContent":["import React from 'react';\nimport Typography from '@material-ui/core/Typography';\nimport { useTranslation } from 'react-i18next';\nimport { createMuiTheme, responsiveFontSizes, ThemeProvider } from '@material-ui/core/styles';\n\nlet theme = createMuiTheme({\n typography: {\n // Tell Material-UI what's the font-size on the html element is.\n fontSize: 14,\n },\n});\ntheme = responsiveFontSizes(theme, { factor: 4, breakpoints: ['xs', 'sm', 'md', 'lg', 'xl'] });\n//theme.typography.fontFamily = 'fontsource-roboto';\n/*\ntheme.typography.h3 = {\n fontSize: '1.2rem',\n '@media (min-width:300px)': {\n fontSize: '1.5rem',\n },\n [theme.breakpoints.up('md')]: {\n fontSize: '2.3rem',\n },\n};\n/*\n\ntheme.typography.subtitle1 = {\n fontSize: '0.8rem',\n '@media (min-width:300px)': {\n fontSize: '1rem',\n },\n [theme.breakpoints.up('md')]: {\n fontSize: '1.1rem',\n },\n};*/\n\nexport function ReturnTranslation(props) {\n const [t, i18n] = useTranslation('common');\n //console.log(props.kei);\n //console.log(t(props.kei));\n\n return (\n \n \n {t(props.kei)}\n \n \n );\n}\n","import {\n Grid,\n makeStyles,\n TextField,\n //Box\n} from '@material-ui/core';\nimport { ReturnTranslation } from './translation.component';\nimport i18next from 'i18next';\nimport { isConditionalExpression } from 'typescript';\n\nexport const InputCoordinates = (props: any) => {\n const useStyles = makeStyles((theme) => ({\n root: {\n '& .MuiTextField-root': {\n margin: theme.spacing(1),\n spacing: 8,\n },\n },\n }));\n const classes = useStyles();\n const size = 'small';\n\n let lang = i18next.language;\n //console.log(lang);\n\n let Xlabel = 'Latitude';\n let Ylabel = 'Longitude';\n /*if (lang === 'en'){\n Xlabel = 'X-coord'\n }\n if (lang === 'ru'){\n Xlabel = 'X-координата'\n }*/\n //console.log(Xlabel);\n\n return (\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n","import { Box, Button, LinearProgress } from '@material-ui/core';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { Save } from '@material-ui/icons';\nimport { ReturnTranslation } from './translation.component';\n\nfunction downloadBase64File(base64Data, fileName) {\n const linkSource = base64Data;\n const downloadLink = document.createElement('a');\n //console.log(linkSource);\n downloadLink.href = linkSource;\n //console.log(\"fileName: \", fileName);\n //console.log(\"result\" + fileName.slice(fileName.indexOf(\".\")));\n downloadLink.download = 'result.png';\n downloadLink.click();\n}\n\nexport const ProgressBar = (props: {\n pictureProcessingStatus: number;\n processedPictureBase64: string | undefined;\n imageTag: string;\n resultWasDrawn: Boolean;\n}) => {\n const useStyles = makeStyles((theme) => ({\n root: {\n width: '100%',\n height: 5,\n '& > * + *': {\n marginTop: theme.spacing(2),\n },\n },\n }));\n const classes = useStyles();\n\n if (props.pictureProcessingStatus === -1) {\n return null;\n } else if (props.pictureProcessingStatus !== -1 && !Boolean(props.resultWasDrawn)) {\n return (\n \n \n \n \n );\n } else\n return (\n \n \n \n \n \n }\n onClick={() => downloadBase64File(props.processedPictureBase64, props.imageTag)}>\n \n \n \n \n );\n};\n","import { Box, LinearProgress } from '@material-ui/core';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { ReturnTranslation } from './translation.component';\n\nexport const MobileProgressBar = (props: {\n pictureProcessingStatus: number;\n processedPictureBase64: string | undefined;\n resultWasDrawn: Boolean;\n}) => {\n const useStyles = makeStyles((theme) => ({\n root: {\n width: '100%',\n height: 5,\n '& > * + *': {\n marginTop: theme.spacing(2),\n },\n },\n }));\n const classes = useStyles();\n\n if (props.pictureProcessingStatus === -1) {\n return null;\n } else if (\n props.pictureProcessingStatus !== -1 &&\n !Boolean(props.resultWasDrawn) &&\n document.getElementById('pictureBox').offsetWidth < 550\n ) {\n return (\n \n \n \n \n );\n } else return null;\n};\n","import Button from '@material-ui/core/Button';\nimport Box from '@material-ui/core/Box';\nimport { CloudUpload } from '@material-ui/icons';\nimport React from 'react';\nimport { ReturnTranslation } from './translation.component';\n\nexport const SendToProcessingButton = (props: any) => {\n //console.log(props.isExample);\n return (\n \n props.handlePostButtonClick()}\n endIcon={}\n size='medium'\n fullWidth={true}>\n \n \n \n );\n};\n","import { Box, Button } from '@material-ui/core';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { Photo } from '@material-ui/icons';\nimport React from 'react';\nimport { ReturnTranslation } from './translation.component';\n\nexport const UploadButton = (props) => {\n const useStyles = makeStyles((theme) => ({\n root: {\n '& > *': {\n //margin: theme.spacing(1),\n spacing: 8,\n width: 500,\n },\n },\n input: {\n display: 'none',\n },\n }));\n const classes = useStyles();\n\n return (\n
\n props.onChange(event)}\n />\n \n
\n );\n};\n","import React from 'react';\nimport Button from '@material-ui/core/Button';\nimport Dialog from '@material-ui/core/Dialog';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport Typography from '@material-ui/core/Typography';\nimport { useTranslation } from 'react-i18next';\nimport { createMuiTheme, responsiveFontSizes, ThemeProvider } from '@material-ui/core/styles';\nimport Box from '@material-ui/core/Box';\n\nlet theme = createMuiTheme({\n typography: {\n // Tell Material-UI what's the font-size on the html element is.\n fontSize: 14,\n },\n});\ntheme = responsiveFontSizes(theme, { factor: 4, breakpoints: ['xs', 'sm', 'md', 'lg', 'xl'] });\n\nfunction ReturnTranslation(props) {\n const [t, i18n] = useTranslation('common');\n //console.log(props.kei);\n //console.log(t(props.kei));\n return (\n \n \n {t(props.kei)}\n \n \n );\n}\n\nexport const AlertDialog = (props: any) => {\n return (\n
\n \n \n \n \n \n \n \n \n \n \n
\n );\n};\n","import React from 'react';\nimport { makeStyles } from '@material-ui/core/styles';\n//import MuiAccordion from '@material-ui/core/Accordion';\n//import Accordion from '@material-ui/core/Accordion';\nimport { Box, Button } from '@material-ui/core';\nimport Accordion from '@material-ui/core/Accordion';\nimport AccordionDetails from '@material-ui/core/AccordionDetails';\nimport AccordionSummary from '@material-ui/core/AccordionSummary';\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\n\nimport { UploadButton, InputCoordinates, SendToProcessingButton, MobileProgressBar } from '.';\n\nimport { ReturnTranslation } from './translation.component';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n //background: 'rgb(0, 255, 0)',\n width: '100%',\n },\n rootExpanded: {\n //background: \"blue\",\n flexGrow: 1,\n },\n content: {\n //background: 'linear-gradient(180deg, rgba(195,195,195,1) 0%, rgba(204,204,204,1) 20%, rgba(196,196,196,1) 80%, rgba(181,181,181,1) 100%)',\n borderRadius: 5,\n border: '1px solid rgba(0, 0, 0, .125)',\n //color: 'rgb(255, 255, 255)',\n },\n details: {\n //background: 'rgb(255, 0, 0)',\n alignItems: 'center',\n },\n column1: {\n flexBasis: '33.33333%',\n },\n column2: {\n flexBasis: '100%',\n },\n}));\n\nconst examples_descriptions = [\n '',\n 'example1.jpg', //пример2\n 'example2.jpg', //пример5\n 'example3.jpg', //пример6\n 'example4.jpg', //пример3\n 'example5.jpg', //пример4\n 'example6.jpg',\n]; //пример1\n\nexport const ControlledAccordions = (props) => {\n const classes = useStyles();\n const [expanded, setExpanded] = React.useState(1);\n\n const handleChange = (panel) => (event, isExpanded) => {\n setExpanded(panel);\n //console.log(\"tab: \", panel);\n props.handleAccordeonTabChange(0);\n };\n\n return (\n
\n \n }\n aria-controls='panel1bh-content'\n id='panel1bh-header'>\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n props.handleExampleChanging(1)}\n disabled={!Boolean(props.fullReady)}>\n \n lorem\n \n \n \n\n \n props.handleExampleChanging(2)}\n disabled={!Boolean(props.fullReady)}>\n \n lorem\n \n \n \n \n \n\n \n \n \n props.handleExampleChanging(3)}\n disabled={!Boolean(props.fullReady)}>\n \n lorem\n \n \n \n \n props.handleExampleChanging(4)}\n disabled={!Boolean(props.fullReady)}>\n \n lorem\n \n \n \n \n \n\n \n \n \n props.handleExampleChanging(5)}\n disabled={!Boolean(props.fullReady)}>\n \n lorem\n \n \n \n \n props.handleExampleChanging(6)}\n disabled={!Boolean(props.fullReady)}>\n \n lorem\n \n \n \n \n \n \n \n \n props.handlePostButtonClick()}\n isExample={props.isExample}\n base64picture={props.base64picture}\n fullReady={props.fullReady}\n />\n \n \n \n \n \n \n\n \n }\n aria-controls='panel6bh-content'\n id='panel6bh-header'>\n \n \n \n \n \n \n \n \n \n props.handleImageLoading(event)}\n fullReady={props.fullReady}\n />\n \n \n \n \n \n props.handlePostButtonClick()}\n isExample={props.isExample}\n base64picture={props.base64picture}\n fullReady={props.fullReady}\n />\n \n \n \n \n
\n );\n};\n","const API_URL = process.env.REACT_APP_API_URL || '';\nconst API_KEY = process.env.REACT_APP_NN_API_KEY;\n\n// TODO : add type for body\nconst askPresignedURLtoUpload = async (body: any) => {\n const requestOptions = {\n method: 'POST',\n headers: { 'Content-Type': 'application/json', 'x-api-key': API_KEY },\n body: JSON.stringify(body),\n };\n const postRequestString = API_URL + 'requests';\n\n return await fetch(postRequestString, requestOptions);\n};\n\nconst getImageProcessingResult = async (requestId: string) => {\n const getRequestOptions = {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json',\n 'x-api-key': API_KEY\n },\n };\n\n const getRequestString = API_URL + 'requests/' + requestId;\n return await fetch(getRequestString, getRequestOptions);\n};\n\nconst uploadToBucket = async (uploadingURL: string, uploadFields: any, imageFileItself: any) => {\n var form_data = new FormData();\n\n for (var key in uploadFields) {\n form_data.append(key, uploadFields[key]);\n }\n form_data.append('file', imageFileItself);\n const uploadOptions = {\n method: 'POST',\n // headers: {\n // 'Content-Type': 'application/json'\n // },\n body: form_data\n };\n\n return await fetch(uploadingURL, uploadOptions)\n};\n\nexport const AiService = {\n askPresignedURLtoUpload,\n uploadToBucket,\n getImageProcessingResult,\n};\n","import React, { Suspense } from 'react';\nimport Box from '@material-ui/core/Box';\nimport Paper from '@material-ui/core/Paper';\nimport Grid from '@material-ui/core/Grid';\nimport { createMuiTheme } from '@material-ui/core/styles';\nimport 'fontsource-roboto';\nimport { ProgressBar, AlertDialog, ControlledAccordions } from './components';\nimport i18next from 'i18next';\n\nimport './index.css';\nimport { AiService } from './services';\n\nconst examples_descriptions = [\n '',\n 'example1.jpg', //пример2\n 'example2.jpg', //пример5\n 'example3.jpg', //пример6\n 'example4.jpg', //пример3\n 'example5.jpg', //пример4\n 'example6.jpg', //пример1\n];\n\nconst upleftXs = [null, 54.945434, 54.945144, 54.939528, 54.963005, 54.957301, 54.957578];\nconst upleftYs = [null, 20.435782, 20.422257, 20.503441, 20.480089, 20.464628, 20.483326];\nconst downrightXs = [null, 54.939263, 54.941069, 54.934866, 54.957637, 54.952026, 54.951837];\nconst downrightYs = [null, 20.447101, 20.4296, 20.511773, 20.489779, 20.474173, 20.493429];\n\n// const examples_ids = [\n// '',\n// 'b280b556-a55e-44b0-89bf-09501666ef78',\n// 'abda246f-ce51-4a25-8b4f-0463f0547265',\n// '1f8c4aca-48f9-464e-a119-1beaf96b5f1b',\n// '52bf57cd-e9da-4257-b3e0-02deab474cb7',\n// 'de7d6e00-e323-4133-b5d0-2da2ab2a1a61',\n// '3c36a0f5-dab4-4ebf-b5be-34f190c9f062',\n// ];\nconst examples_ids = [\n '',\n '85e056b1-e9a1-4185-a9b0-0c3199e3a88d',\n '7f66dee4-1905-4153-9029-27af9d1c47d2',\n 'def9f2af-8522-4e78-8e97-ad957fecb5c0',\n 'd4f8cdcf-cd01-4b51-847f-344ed9d57c3d',\n 'da334a99-64d2-4afd-b117-4c45d2671292',\n '6ebf31ca-91da-40d7-b9e4-28e56aea3333'\n];\n\nconst size_trsh = 7340032;\nconst dim_trsh = 2000;\nconst standart_canvas_size = 600;\n\nlet theme = createMuiTheme();\ntheme.typography.h3 = {\n fontSize: '1.5rem',\n '@media (min-width:600px)': {\n fontSize: '1.5rem',\n },\n [theme.breakpoints.up('md')]: {\n fontSize: '2.4rem',\n },\n};\ntheme.typography.subtitle1 = {\n fontSize: '0.8rem',\n '@media (min-width:600px)': {\n fontSize: '1rem',\n },\n [theme.breakpoints.up('md')]: {\n fontSize: '1.1rem',\n },\n};\n\nfunction scale_coord_to_pix(value, min_coord, max_coord, dim_in_pix) {\n var relative_coord_value = (value - min_coord) / (max_coord - min_coord); // 0 - 1\n var relative_pix_value = Math.floor(relative_coord_value * dim_in_pix + 0.5);\n\n return relative_pix_value;\n}\n\nfunction new_scale_coord_to_pix(value, min_coord, max_coord, dim_in_pix) {\n var longitude_shift_const = 90;\n\n if (max_coord - min_coord > 180 && Math.sign(min_coord) * Math.sign(max_coord) < 0) {\n var new_x1 = 180 + (180 + min_coord) - longitude_shift_const;\n var new_x2 = max_coord - longitude_shift_const;\n min_coord = Math.min(new_x1, new_x2);\n max_coord = Math.max(new_x1, new_x2);\n\n if (value >= 0) {\n value = value - longitude_shift_const;\n } else {\n value = 360 + value - longitude_shift_const;\n }\n }\n\n var relative_coord_value = (value - min_coord) / (max_coord - min_coord); // # 0 - 1\n var relative_pix_value = Math.floor(relative_coord_value * dim_in_pix + 0.5);\n\n return relative_pix_value;\n}\n\nconst style = {\n height: 780,\n};\n\nexport class App extends React.Component {\n componentDidMount() {\n document.getElementById('jsheader').scrollIntoView({ behavior: 'smooth' });\n //console.log(\"lang: \", i18next.language);\n }\n\n /*componentWillUnmount() {\n document.getElementById(\"header\").scrollIntoView({ behavior: 'smooth' });\n }*/\n\n constructor(props) {\n super(props);\n this.inputCoordinatesRef = React.createRef();\n this.postButtonRef = React.createRef();\n this.imageSectionRef = React.createRef();\n this.state = {\n imgWidth: 0,\n imgHeight: 0,\n imageTag: null,\n imageFileItself: null,\n imageFileExt: null,\n base64picture: null,\n upperLeftX: upleftXs[0],\n upperLeftY: upleftYs[0],\n lowerRightX: downrightXs[0],\n lowerRightY: downrightYs[0],\n requestId: null,\n pictureProcessingStatus: -1,\n processedPictureBase64: null,\n fullReady: true,\n resultWasDrawn: false,\n isExample: 0,\n anyError: '',\n lang: i18next.language,\n };\n this.handleImageLoading = this.handleImageLoading.bind(this);\n this.handleUpperLeftXChange = this.handleUpperLeftXChange.bind(this);\n this.handleUpperLeftYChange = this.handleUpperLeftYChange.bind(this);\n this.handleLowerRightXChange = this.handleLowerRightXChange.bind(this);\n this.handleLowerRightYChange = this.handleLowerRightYChange.bind(this);\n this.handlePostButtonClick = this.handlePostButtonClick.bind(this);\n this.tryGetRequest = this.tryGetRequest.bind(this);\n this.handleStopTryingGet = this.handleStopTryingGet.bind(this);\n this.handleExampleChanging = this.handleExampleChanging.bind(this);\n this.getProcessedImage = this.getProcessedImage.bind(this);\n }\n\n createDrawResultImage = (imageDescription, arrayOfHouses, props, func) => {\n var img = new Image();\n let processedImageBase64 = null;\n\n var canvas = document.getElementById('canvas_fake');\n var ctx = canvas.getContext('2d');\n\n img.onload = () => {\n canvas.width = img.width;\n canvas.height = img.height;\n ctx.drawImage(img, 0, 0);\n //console.log(arrayOfHouses.length);\n ctx.fillStyle = 'rgb(255,255,0)';\n for (let i = 0; i < arrayOfHouses.length; i++) {\n const house = arrayOfHouses[i].Points;\n //console.log(house.length);\n\n /*let start_x = scale_coord_to_pix(\n house[0].X,\n Math.min(props.upperLeftX, props.lowerRightX),\n Math.max(props.upperLeftX, props.lowerRightX),\n img.width\n );*/\n let image_x = new_scale_coord_to_pix(\n house[0].Y,\n Math.min(props.upperLeftY, props.lowerRightY),\n Math.max(props.upperLeftY, props.lowerRightY),\n img.width\n );\n /*let start_y = scale_coord_to_pix(\n house[0].Y,\n Math.min(props.upperLeftY, props.lowerRightY),\n Math.max(props.upperLeftY, props.lowerRightY),\n img.height\n );*/\n let image_y = new_scale_coord_to_pix(\n house[0].X,\n props.upperLeftX,\n props.lowerRightX,\n img.height\n );\n ctx.beginPath();\n ctx.moveTo(image_x, image_y);\n\n for (let j = 1; j < house.length; j++) {\n /*let x = scale_coord_to_pix(\n house[j].X,\n Math.min(props.upperLeftX, props.lowerRightX),\n Math.max(props.upperLeftX, props.lowerRightX),\n img.width\n );*/\n let image_x = new_scale_coord_to_pix(\n house[j].Y,\n Math.min(props.upperLeftY, props.lowerRightY),\n Math.max(props.upperLeftY, props.lowerRightY),\n img.width\n );\n /*let y = scale_coord_to_pix(\n house[j].Y,\n Math.min(props.upperLeftY, props.lowerRightY),\n Math.max(props.upperLeftY, props.lowerRightY),\n img.height\n );*/\n let image_y = new_scale_coord_to_pix(\n house[j].X,\n props.upperLeftX,\n props.lowerRightX,\n img.height\n );\n ctx.lineTo(image_x, image_y);\n }\n ctx.fill();\n }\n processedImageBase64 = canvas.toDataURL(props.imageTag);\n canvas.style.display = 'none';\n //console.log(processedImageBase64);\n this.setState({\n processedPictureBase64: processedImageBase64,\n fullReady: true,\n resultWasDrawn: true,\n });\n this.drawPreviewResultImage(this.state.processedPictureBase64);\n };\n img.src = imageDescription;\n };\n\n drawChosenImage = (imageDescription, props, isExample, redraw) => {\n var canvas_original = document.getElementById('canvas_original');\n var ctx_original = canvas_original.getContext('2d');\n var chosen_img_preview = new Image();\n\n chosen_img_preview.onload = () => {\n if (chosen_img_preview.width > dim_trsh || chosen_img_preview.height > dim_trsh) {\n //alert(\"Image width or height mustn't exceed \" + dim_trsh.toString() + \".px\");\n\n this.setState({ anyError: 'error_big_image_dim' });\n return;\n }\n //console.log(redraw);\n if (!Boolean(isExample)) {\n if (!redraw) {\n document.getElementById('up_left_x').value = null;\n document.getElementById('up_left_y').value = null;\n document.getElementById('down_right_x').value = null;\n document.getElementById('down_right_y').value = null;\n }\n }\n\n const adaptive_canvas_size = Math.min(\n standart_canvas_size,\n Math.floor(document.getElementById('pictureBox').offsetWidth * 0.9)\n );\n canvas_original.width = adaptive_canvas_size;\n canvas_original.height = adaptive_canvas_size;\n\n ctx_original.clearRect(0, 0, canvas_original.width, canvas_original.height);\n var wrh = chosen_img_preview.width / chosen_img_preview.height;\n var newWidth = canvas_original.width;\n var newHeight = newWidth / wrh;\n if (newHeight > canvas_original.height) {\n newHeight = canvas_original.height;\n newWidth = newHeight * wrh;\n }\n canvas_original.width = newWidth;\n ctx_original.drawImage(chosen_img_preview, 0, 0, newWidth, newHeight);\n\n if (!redraw) {\n this.setState({\n base64picture: imageDescription,\n isExample: isExample,\n pictureProcessingStatus: -1,\n processedPictureBase64: null,\n resultWasDrawn: false,\n });\n }\n };\n chosen_img_preview.src = imageDescription;\n };\n\n drawPreviewResultImage(imageDescription) {\n var canvas = document.getElementById('canvas_original');\n var ctx = canvas.getContext('2d');\n var img = new Image();\n\n img.onload = () => {\n const adaptive_canvas_size = Math.min(\n standart_canvas_size,\n Math.floor(document.getElementById('pictureBox').offsetWidth * 0.9)\n );\n canvas.width = adaptive_canvas_size;\n canvas.height = adaptive_canvas_size;\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n var wrh = img.width / img.height;\n var newWidth = canvas.width;\n var newHeight = newWidth / wrh;\n if (newHeight > canvas.height) {\n newHeight = canvas.height;\n newWidth = newHeight * wrh;\n }\n canvas.width = newWidth;\n ctx.drawImage(img, 0, 0, newWidth, newHeight);\n this.imageSectionRef.current.scrollIntoView({ behavior: 'smooth' });\n };\n img.src = imageDescription;\n }\n\n handleImageLoading(event) {\n //alert(\"image loading\");\n if (!Boolean(this.state.fullReady)) {\n console.log(!Boolean(this.state.fullReady));\n return;\n }\n\n if (event.target.files.length > 0) {\n //console.log(\"size: \", event.target.files[0].size);\n if (event.target.files[0].size > size_trsh) {\n //alert(\"image size must be less 7Mb\");\n this.setState({ anyError: 'error_big_image_size' });\n return;\n }\n //console.log('ext: ', event.target.files[0].type);\n if (!event.target.files[0].type.includes('image')) {\n this.setState({ anyError: 'error_wrong_file_type' });\n return;\n }\n if (event.target.files[0].type.includes('tiff')) {\n this.setState({ anyError: 'error_tiff' });\n return;\n }\n //this.inputCoordinatesRef.current.scrollIntoView({ behavior: 'smooth' });\n this.setState({\n imageTag: event.target.files[0].type,\n imageFileItself: event.target.files[0],\n imageFileExt: (event.target.files[0].type).split('/')[1]\n });\n //console.log(\"ext: \", event.target.files[0].type.includes(\"image\"));\n\n const reader = new FileReader();\n reader.onload = this.handleImageReaderLoaded.bind(this);\n reader.readAsBinaryString(event.target.files[0]);\n event.target.value = null;\n\n //this.inputCoordinatesRef.current.scrollIntoView({ behavior: 'smooth' });\n }\n }\n\n handleImageReaderLoaded(readerEvt) {\n //alert(\"image reading\");\n\n let binaryString = readerEvt.target.result;\n const base64 = btoa(binaryString);\n //console.log(this.state.base64picture);\n const imageDescription = 'data:' + this.state.imageTag + ';base64,' + base64;\n //console.log(imageDescription);\n this.drawChosenImage(imageDescription, this.state, 0, false);\n }\n\n handleUpperLeftXChange(event) {\n this.setState({ upperLeftX: Number(event.target.value) });\n }\n\n handleUpperLeftYChange(event) {\n this.setState({ upperLeftY: Number(event.target.value) });\n }\n\n handleLowerRightXChange(event) {\n this.setState({ lowerRightX: Number(event.target.value) });\n }\n\n handleLowerRightYChange(event) {\n this.setState({ lowerRightY: Number(event.target.value) });\n }\n\n validateInputs = () => {\n if (!Boolean(this.state.base64picture)) {\n this.setState({ anyError: 'error_no_image' });\n return false;\n }\n if (!Boolean(document.getElementById('up_left_x').value)) {\n this.setState({ anyError: 'error_no_upleft_coord' });\n return false;\n }\n if (!Boolean(document.getElementById('up_left_y').value)) {\n this.setState({ anyError: 'error_no_upleft_coord' });\n return false;\n }\n if (!Boolean(document.getElementById('down_right_x').value)) {\n this.setState({ anyError: 'error_no_lowright_coord' });\n return false;\n }\n if (!Boolean(document.getElementById('down_right_y').value)) {\n this.setState({ anyError: 'error_no_lowright_coord' });\n return false;\n }\n if (\n document.getElementById('up_left_x').value === document.getElementById('down_right_x').value\n ) {\n this.setState({ anyError: 'error_zero_width' });\n return false;\n }\n if (\n document.getElementById('up_left_y').value === document.getElementById('down_right_y').value\n ) {\n this.setState({ anyError: 'error_zero_height' });\n return false;\n }\n return true;\n };\n\n async handlePostButtonClick() {\n if (!Boolean(this.state.fullReady)) {\n //console.log(!Boolean(this.state.fullReady));\n return;\n }\n\n if (!this.validateInputs()) {\n return;\n }\n\n const redraw = true;\n this.drawChosenImage(this.state.base64picture, this.state, this.state.isExample, redraw);\n\n this.setState({\n upperLeftX: Number(document.getElementById('up_left_x').value),\n upperLeftY: Number(document.getElementById('up_left_y').value),\n lowerRightX: Number(document.getElementById('down_right_x').value),\n lowerRightY: Number(document.getElementById('down_right_y').value),\n fullReady: false,\n pictureProcessingStatus: -1,\n resultWasDrawn: false,\n });\n\n //console.log('New upper left {', this.state.upperLeftX, ', ', this.state.upperLeftY, ' }');\n //console.log('New lower right {', this.state.lowerRightX, ', ', this.state.lowerRightY, ' }');\n //console.log(this.state.isExample);\n\n //document.getElementById(\"pictureBox\").scrollIntoView({ behavior: 'smooth' });\n\n await this.imageSectionRef.current.scrollIntoView({ behavior: 'smooth' });\n\n if (this.state.isExample === 0) {\n const requestParams = {\n \"IsForTrain\": false,\n // Image: this.state.base64picture,\n ImageFormat: this.state.imageFileExt,\n LeftTopPoint: {\n X: this.state.upperLeftX,\n Y: this.state.upperLeftY\n },\n RightBottomPoint: {\n X: this.state.lowerRightX,\n Y: this.state.lowerRightY,\n },\n MustReturnConstructions: true,\n MustReturnCars: false,\n };\n\n //console.log(\"postRequestString: \", postRequestString);\n this.setState({\n // requestId: requestId,\n pictureProcessingStatus: 0,\n });\n const presignedResponse = await AiService.askPresignedURLtoUpload(requestParams);\n\n const presignedResponseStatus = await presignedResponse.status;\n console.log('postResponseStatus: ', presignedResponseStatus);\n if (presignedResponseStatus === 200) {\n const presignedResponseJson = await presignedResponse.json();\n // console.log('postResponseJson: ', postResponseJson);\n const requestId = presignedResponseJson.guid;\n // console.log('requestId: ', requestId);\n const uploadingURL = presignedResponseJson.presigned.url;\n const uploadFields = presignedResponseJson.presigned.fields;\n // console.log('Now ready to upload to:\\n', uploadingURL, '\\nwith credentials:\\n', uploadFields);\n this.setState({\n requestId: requestId,\n // pictureProcessingStatus: 0,\n });\n\n const uploadingResponse = await AiService.uploadToBucket(uploadingURL, uploadFields, this.state.imageFileItself);\n const uploadingResponseStatus = await uploadingResponse.status;\n console.log('uploadingResponseStatus: ', uploadingResponseStatus);\n // console.log('postResponseRequestId: ', postResponseRequestId);\n if (uploadingResponseStatus === 204) {\n this.processTryingGet = setInterval(this.tryGetRequest, 5000, requestId);\n }\n else {\n this.setState({\n anyError: 'error_server_request',\n pictureProcessingStatus: -1,\n fullReady: true,\n });\n }\n } else {\n this.setState({\n anyError: 'error_server_request',\n pictureProcessingStatus: -1,\n fullReady: true,\n });\n }\n } else {\n this.setState({ pictureProcessingStatus: 2 });\n const postResponseRequestId = examples_ids[this.state.isExample];\n this.processTryingGet = setInterval(this.tryGetRequest, 5000, postResponseRequestId);\n }\n }\n\n async tryGetRequest(requestId) {\n //console.log(process.env.NODE_ENV);\n\n //console.log(\"getRequestString: \", getRequestString);\n const getResponse = await AiService.getImageProcessingResult(requestId);\n\n const getResponseStatus = await getResponse.status;\n //console.log(\"getResponseStatus: \", getResponseStatus);\n if (getResponseStatus === 200) {\n const getResponseJson = await getResponse.json();\n const getResponsePictureProcessingStatus = getResponseJson.Status;\n this.setState({\n pictureProcessingStatus: getResponsePictureProcessingStatus,\n });\n console.log('get status: ', getResponsePictureProcessingStatus);\n if (this.state.pictureProcessingStatus === 3) {\n console.log('Got result. Stop trying GET');\n clearInterval(this.processTryingGet);\n const imageDescription = this.state.base64picture;\n //console.log(getResponseJson)\n const housesArray = getResponseJson.Result;\n //console.log(\"housesArray: \", housesArray);\n this.createDrawResultImage(\n imageDescription,\n housesArray,\n this.state,\n this.getProcessedImage()\n );\n }\n if (this.state.pictureProcessingStatus === 4) {\n clearInterval(this.processTryingGet);\n this.setState({\n anyError: 'error_status_four',\n pictureProcessingStatus: -1,\n fullReady: true,\n });\n }\n } else {\n this.setState({\n anyError: 'error_server_request',\n pictureProcessingStatus: -1,\n fullReady: true,\n });\n clearInterval(this.processTryingGet);\n }\n }\n\n handleStopTryingGet() {\n console.log('handleStopTryingGet');\n clearInterval(this.processTryingGet);\n }\n\n handleExampleChanging = (number) => {\n this.setState({ isExample: number });\n document.getElementById('up_left_x').value = upleftXs[number];\n document.getElementById('up_left_y').value = upleftYs[number];\n document.getElementById('down_right_x').value = downrightXs[number];\n document.getElementById('down_right_y').value = downrightYs[number];\n\n let imageDescription;\n\n imageDescription = examples_descriptions[number];\n\n document.getElementById('letsgo').scrollIntoView({ behavior: 'smooth' });\n //this.inputCoordinatesRef.current.scrollIntoView({ behavior: 'smooth' });\n //sleep(2000);\n //this.postButtonRef.current.scrollIntoView({ behavior: 'smooth' });\n\n this.setState({\n upperLeftX: Number(document.getElementById('up_left_x').value),\n upperLeftY: Number(document.getElementById('up_left_y').value),\n lowerRightX: Number(document.getElementById('down_right_x').value),\n lowerRightY: Number(document.getElementById('down_right_y').value),\n base64picture: imageDescription,\n imageTag: '.jpg',\n pictureProcessingStatus: -1,\n processedPictureBase64: null,\n });\n\n this.drawChosenImage(imageDescription, this.state, number);\n };\n\n handleAccordeonTabChange = (number) => {\n this.setState({ isExample: number });\n document.getElementById('up_left_x').value = upleftXs[number];\n document.getElementById('up_left_y').value = upleftYs[number];\n document.getElementById('down_right_x').value = downrightXs[number];\n document.getElementById('down_right_y').value = downrightYs[number];\n //console.log(\"tab main: \", number);\n if (number !== 0) {\n //console.log('example: ', this.state.isExample);\n const imageDescription = examples_descriptions[number];\n\n this.setState({\n upperLeftX: Number(document.getElementById('up_left_x').value),\n upperLeftY: Number(document.getElementById('up_left_y').value),\n lowerRightX: Number(document.getElementById('down_right_x').value),\n lowerRightY: Number(document.getElementById('down_right_y').value),\n base64picture: imageDescription,\n imageTag: '.jpg',\n pictureProcessingStatus: -1,\n processedPictureBase64: null,\n });\n this.drawChosenImage(imageDescription, this.state, number);\n } else {\n var canvas_original = document.getElementById('canvas_original');\n var ctx_original = canvas_original.getContext('2d');\n ctx_original.clearRect(0, 0, canvas_original.width, canvas_original.height);\n //console.log('not example');\n this.setState({\n base64picture: null,\n imageTag: null,\n pictureProcessingStatus: -1,\n processedPictureBase64: null,\n });\n }\n };\n\n handleCloseError = () => {\n this.setState({ anyError: '' });\n };\n\n async getProcessedImage(imageDescription) {\n await this.setState({ processedPictureBase64: imageDescription });\n }\n\n render() {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n this.handleCloseError()}\n />\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n }\n}\n","import React, { Suspense, useState } from 'react';\nimport Box from '@material-ui/core/Box';\nimport Button from '@material-ui/core/Button';\nimport ButtonGroup from '@material-ui/core/ButtonGroup';\nimport Grid from '@material-ui/core/Grid';\n\nimport { useTranslation } from 'react-i18next';\nimport { ReturnTranslation } from './components/translation.component';\n\nimport { makeStyles } from '@material-ui/core/styles';\n\nconst useStyles = makeStyles({\n button: {\n color: 'rgb(255,255,255)',\n border: '1px solid',\n borderColor: 'rgba(255,255,255,0.8)',\n '&:hover': {\n backgroundColor: 'rgba(255,255,255,0.2)',\n boxShadow: 'none',\n },\n },\n});\n\nfunction SwitchComponent() {\n const [t, i18n] = useTranslation('common');\n let languages = ['en', 'ru'];\n const [count, setCount] = useState(1);\n const classes = useStyles();\n return (\n
\n \n {\n setCount(count + 1);\n //console.log(count % 2);\n i18n.changeLanguage(languages[count % 2]);\n }}>\n {languages[count % 2]}\n \n \n
\n );\n}\n\nexport class Head extends React.Component {\n componentDidMount() {\n //console.log(document.getElementById('header2').offsetWidth);\n if (document.getElementById('header2').offsetWidth < 400) {\n document.getElementById('our_logo').style.display = 'none';\n }\n }\n\n render() {\n return (\n \n \n \n );\n }\n}\n","import ReactDOM from 'react-dom';\nimport { App } from './App';\nimport { Head } from './Header';\n\nimport { I18nextProvider } from 'react-i18next';\nimport i18next from 'i18next';\nimport common_en from './translations/en/common.json';\nimport common_ru from './translations/ru/common.json';\n\ni18next.init({\n interpolation: { escapeValue: false }, // React already does escaping\n lng: 'en', // language to use\n resources: {\n en: {\n common: common_en, // 'common' is our custom namespace\n },\n ru: {\n common: common_ru,\n },\n },\n});\n\nReactDOM.render(\n \n \n ,\n document.getElementById('jsheader')\n);\nReactDOM.render(\n \n \n ,\n document.getElementById('root')\n);\n"],"sourceRoot":""}