{"version":3,"sources":["components/api-authorization/ApiAuthorizationConstants.js","components/api-authorization/AuthorizeService.js","components/api-authorization/LoginMenu.js","components/NavMenu.js","components/Layout.js","components/Home.js","components/FetchData.js","components/general/FileUploader.js","components/general/GroupBySelector.js","components/general/MaterialSourceSelector.js","components/IfcElementsTable/MyTable.js","components/IfcElementsTable/EcoinventTableViewer.js","components/IfcElementsTable/EcoinventModal.js","components/IfcElementsTable/IfcElementInfoTable.js","components/IfcElementsTable/IfcElementsTableViewer.js","components/Lca.js","components/api-authorization/AuthorizeRoute.js","components/api-authorization/Login.js","components/api-authorization/Logout.js","components/api-authorization/ApiAuthorizationRoutes.js","App.js","index.js"],"names":["QueryParameterNames","LogoutActions","LoginActions","prefix","ApplicationPaths","DefaultLoginRedirectPath","ApiAuthorizationClientConfigurationUrl","ApiAuthorizationPrefix","Login","LoginFailed","LoginCallback","Register","Profile","LogOut","LoggedOut","LogOutCallback","IdentityRegisterPath","IdentityManagePath","authService","_callbacks","_nextSubscriptionId","_user","_isAuthenticated","_popUpDisabled","this","getUser","user","profile","ensureUserManagerInitialized","userManager","access_token","state","signinSilent","createArguments","silentUser","updateState","success","console","log","Error","signinPopup","popUpUser","message","error","signinRedirect","redirect","url","signinCallback","signoutPopup","undefined","signoutRedirect","signoutCallback","response","data","notifySubscribers","callback","push","subscription","subscriptionId","subscriptionIndex","map","element","index","found","filter","length","splice","i","useReplaceToNavigate","status","AuthenticationResultStatus","Fail","Success","Redirect","fetch","ok","json","settings","automaticSilentRenew","includeIdTokenInSilentRenew","userStore","WebStorageStateStore","UserManager","events","addUserSignedOut","removeUser","LoginMenu","props","isAuthenticated","userName","_subscription","subscribe","populateState","unsubscribe","Promise","all","setState","name","profilePath","logoutPath","pathname","local","authenticatedView","registerPath","loginPath","anonymousView","NavItem","NavLink","tag","Link","className","to","Component","NavMenu","toggleNavbar","bind","collapsed","Navbar","light","Container","NavbarBrand","NavbarToggler","onClick","Collapse","isOpen","navbar","displayName","Layout","children","Home","FetchData","forecasts","loading","populateWeatherData","contents","renderForecastsTable","id","getAccessToken","token","headers","aria-labelledby","forecast","key","date","temperatureC","temperatureF","summary","FileUploader","uploading","uploaded","file","onUploaded","onChange","fileUpload","e","preventDefault","target","files","formData","FormData","append","method","body","then","res","catch","err","fileTitle","label","BallTriangle","noValidate","onSubmit","type","htmlFor","disabled","color","React","GroupBySelector","ToggleButtonGroup","defaultValue","ToggleButton","variant","value","MaterialSourceSelector","defaultPropGetter","MyTable","columns","selectedRows","setSelectedRows","getHeaderProps","getColumnProps","getRowProps","getCellProps","useTable","useExpanded","useRowSelect","getTableProps","getTableBodyProps","headerGroups","rows","prepareRow","selectedFlatRows","useEffect","bordered","size","headerGroup","getHeaderGroupProps","column","style","render","row","cells","cell","loadEcoinventData","materialSource","Headers","JSON","stringify","resJson","EcoinventTableViewer","onSelect","useState","ecoinventData","setEcoinventData","selected","setSelected","searchValue","setSearchValue","result","activities","loadEcoinvent","tableData","elm","toLowerCase","includes","useMemo","Header","accessor","originalRow","rowIndex","location","FormControl","autoFocus","placeholder","background","original","cellInfo","EcoinventModal","show","onHide","Modal","centered","closeButton","Title","Body","Footer","Button","IfcElementInfoTable","properties","striped","IndeterminateCheckbox","forwardRef","ref","indeterminate","rest","defaultRef","useRef","resolvedRef","current","AgregateMaterials","subRows","agregatedMaterial","r","rMat","ecoMaterial","IfcElementsTableViewer","showPicker","setShowPicker","showElementProperties","setShowElementProperties","elementProperties","setElementProperties","isSelected","getToggleAllRowsSelectedProps","Cell","getToggleRowSelectedProps","canExpand","getToggleRowExpandedProps","paddingLeft","depth","isExpanded","item1","title","parseFloat","toFixed","sort","a","b","forEach","mgroup","count","quantities","item2","elm2","TransformData","MaterialSelected","iteration","Lca","isUploaded","isMapped","groupBy","ifcData","isLoading","isCalculating","lcaOutpput","onIfcUploaded","onGenerateClick","onCalculateClick","onLoadElementsClick","onDownloadClick","onDownloadCsvClick","materialData","getMaterialsData","elementsData","getElementsData","inputData","output","family","materials","sourceData","record","elements","j","k","addElementData","addMaterialData","number","str","toExponential","indexOf","substring","exponent","replace","table","calcButtonLabel","downloadButtonLabel","downloadCsvButtonLabel","elmButtonLabel","calcInput","materialDataKeys","Object","keys","materialKey","material","numberToFormat","calcOutput","lcaOutput","methodKey","tuple","methodName","name1","methodName2","name2","methodUnit","valueUnit","methodValue","Form","Group","Label","onMaterialSourceChange","onGroupByChange","href","AuthorizeRoute","ready","authenticated","authenticationChanged","populateAuthenticationState","link","document","createElement","path","returnUrl","protocol","host","search","hash","redirectUrl","encodeURI","component","action","login","getReturnUrl","processLoginCallback","URLSearchParams","window","get","redirectToProfile","redirectToRegister","signIn","navigateToReturnUrl","completeSignIn","fromQuery","startsWith","origin","redirectToApiAuthorizationPath","apiAuthorizationPath","Logout","isReady","history","logout","processLogoutCallback","signOut","completeSignOut","ApiAuthorizationRoutes","loginAction","logoutAction","App","exact","baseUrl","getElementsByTagName","getAttribute","rootElement","getElementById","ReactDOM","basename"],"mappings":"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","file":"static/js/main.26f6a72f.chunk.js","sourcesContent":["export const ApplicationName = 'Envi4BIM';\n\nexport const QueryParameterNames = {\n ReturnUrl: 'returnUrl',\n Message: 'message'\n};\n\nexport const LogoutActions = {\n LogoutCallback: 'logout-callback',\n Logout: 'logout',\n LoggedOut: 'logged-out'\n};\n\nexport const LoginActions = {\n Login: 'login',\n LoginCallback: 'login-callback',\n LoginFailed: 'login-failed',\n Profile: 'profile',\n Register: 'register'\n};\n\nconst prefix = '/authentication';\n\nexport const ApplicationPaths = {\n DefaultLoginRedirectPath: '/',\n ApiAuthorizationClientConfigurationUrl: `/_configuration/${ApplicationName}`,\n ApiAuthorizationPrefix: prefix,\n Login: `${prefix}/${LoginActions.Login}`,\n LoginFailed: `${prefix}/${LoginActions.LoginFailed}`,\n LoginCallback: `${prefix}/${LoginActions.LoginCallback}`,\n Register: `${prefix}/${LoginActions.Register}`,\n Profile: `${prefix}/${LoginActions.Profile}`,\n LogOut: `${prefix}/${LogoutActions.Logout}`,\n LoggedOut: `${prefix}/${LogoutActions.LoggedOut}`,\n LogOutCallback: `${prefix}/${LogoutActions.LogoutCallback}`,\n IdentityRegisterPath: '/Identity/Account/Register',\n IdentityManagePath: '/Identity/Account/Manage'\n};\n","import { UserManager, WebStorageStateStore } from 'oidc-client';\nimport { ApplicationPaths, ApplicationName } from './ApiAuthorizationConstants';\n\nexport class AuthorizeService {\n _callbacks = [];\n _nextSubscriptionId = 0;\n _user = null;\n _isAuthenticated = false;\n\n // By default pop ups are disabled because they don't work properly on Edge.\n // If you want to enable pop up authentication simply set this flag to false.\n _popUpDisabled = true;\n\n async isAuthenticated() {\n const user = await this.getUser();\n return !!user;\n }\n\n async getUser() {\n if (this._user && this._user.profile) {\n return this._user.profile;\n }\n\n await this.ensureUserManagerInitialized();\n const user = await this.userManager.getUser();\n return user && user.profile;\n }\n\n async getAccessToken() {\n await this.ensureUserManagerInitialized();\n const user = await this.userManager.getUser();\n return user && user.access_token;\n }\n\n // We try to authenticate the user in three different ways:\n // 1) We try to see if we can authenticate the user silently. This happens\n // when the user is already logged in on the IdP and is done using a hidden iframe\n // on the client.\n // 2) We try to authenticate the user using a PopUp Window. This might fail if there is a\n // Pop-Up blocker or the user has disabled PopUps.\n // 3) If the two methods above fail, we redirect the browser to the IdP to perform a traditional\n // redirect flow.\n async signIn(state) {\n await this.ensureUserManagerInitialized();\n try {\n const silentUser = await this.userManager.signinSilent(this.createArguments());\n this.updateState(silentUser);\n return this.success(state);\n } catch (silentError) {\n // User might not be authenticated, fallback to popup authentication\n console.log(\"Silent authentication error: \", silentError);\n\n try {\n if (this._popUpDisabled) {\n throw new Error('Popup disabled. Change \\'AuthorizeService.js:AuthorizeService._popupDisabled\\' to false to enable it.')\n }\n\n const popUpUser = await this.userManager.signinPopup(this.createArguments());\n this.updateState(popUpUser);\n return this.success(state);\n } catch (popUpError) {\n if (popUpError.message === \"Popup window closed\") {\n // The user explicitly cancelled the login action by closing an opened popup.\n return this.error(\"The user closed the window.\");\n } else if (!this._popUpDisabled) {\n console.log(\"Popup authentication error: \", popUpError);\n }\n\n // PopUps might be blocked by the user, fallback to redirect\n try {\n await this.userManager.signinRedirect(this.createArguments(state));\n return this.redirect();\n } catch (redirectError) {\n console.log(\"Redirect authentication error: \", redirectError);\n return this.error(redirectError);\n }\n }\n }\n }\n\n async completeSignIn(url) {\n try {\n await this.ensureUserManagerInitialized();\n const user = await this.userManager.signinCallback(url);\n this.updateState(user);\n return this.success(user && user.state);\n } catch (error) {\n console.log('There was an error signing in: ', error);\n return this.error('There was an error signing in.');\n }\n }\n\n // We try to sign out the user in two different ways:\n // 1) We try to do a sign-out using a PopUp Window. This might fail if there is a\n // Pop-Up blocker or the user has disabled PopUps.\n // 2) If the method above fails, we redirect the browser to the IdP to perform a traditional\n // post logout redirect flow.\n async signOut(state) {\n await this.ensureUserManagerInitialized();\n try {\n if (this._popUpDisabled) {\n throw new Error('Popup disabled. Change \\'AuthorizeService.js:AuthorizeService._popupDisabled\\' to false to enable it.')\n }\n\n await this.userManager.signoutPopup(this.createArguments());\n this.updateState(undefined);\n return this.success(state);\n } catch (popupSignOutError) {\n console.log(\"Popup signout error: \", popupSignOutError);\n try {\n await this.userManager.signoutRedirect(this.createArguments(state));\n return this.redirect();\n } catch (redirectSignOutError) {\n console.log(\"Redirect signout error: \", redirectSignOutError);\n return this.error(redirectSignOutError);\n }\n }\n }\n\n async completeSignOut(url) {\n await this.ensureUserManagerInitialized();\n try {\n const response = await this.userManager.signoutCallback(url);\n this.updateState(null);\n return this.success(response && response.data);\n } catch (error) {\n console.log(`There was an error trying to log out '${error}'.`);\n return this.error(error);\n }\n }\n\n updateState(user) {\n this._user = user;\n this._isAuthenticated = !!this._user;\n this.notifySubscribers();\n }\n\n subscribe(callback) {\n this._callbacks.push({ callback, subscription: this._nextSubscriptionId++ });\n return this._nextSubscriptionId - 1;\n }\n\n unsubscribe(subscriptionId) {\n const subscriptionIndex = this._callbacks\n .map((element, index) => element.subscription === subscriptionId ? { found: true, index } : { found: false })\n .filter(element => element.found === true);\n if (subscriptionIndex.length !== 1) {\n throw new Error(`Found an invalid number of subscriptions ${subscriptionIndex.length}`);\n }\n\n this._callbacks.splice(subscriptionIndex[0].index, 1);\n }\n\n notifySubscribers() {\n for (let i = 0; i < this._callbacks.length; i++) {\n const callback = this._callbacks[i].callback;\n callback();\n }\n }\n\n createArguments(state) {\n return { useReplaceToNavigate: true, data: state };\n }\n\n error(message) {\n return { status: AuthenticationResultStatus.Fail, message };\n }\n\n success(state) {\n return { status: AuthenticationResultStatus.Success, state };\n }\n\n redirect() {\n return { status: AuthenticationResultStatus.Redirect };\n }\n\n async ensureUserManagerInitialized() {\n if (this.userManager !== undefined) {\n return;\n }\n\n let response = await fetch(ApplicationPaths.ApiAuthorizationClientConfigurationUrl);\n if (!response.ok) {\n throw new Error(`Could not load settings for '${ApplicationName}'`);\n }\n\n let settings = await response.json();\n settings.automaticSilentRenew = true;\n settings.includeIdTokenInSilentRenew = true;\n settings.userStore = new WebStorageStateStore({\n prefix: ApplicationName\n });\n\n this.userManager = new UserManager(settings);\n\n this.userManager.events.addUserSignedOut(async () => {\n await this.userManager.removeUser();\n this.updateState(undefined);\n });\n }\n\n static get instance() { return authService }\n}\n\nconst authService = new AuthorizeService();\n\nexport default authService;\n\nexport const AuthenticationResultStatus = {\n Redirect: 'redirect',\n Success: 'success',\n Fail: 'fail'\n};\n","import React, { Component, Fragment } from 'react';\nimport { NavItem, NavLink } from 'reactstrap';\nimport { Link } from 'react-router-dom';\nimport authService from './AuthorizeService';\nimport { ApplicationPaths } from './ApiAuthorizationConstants';\n\nexport class LoginMenu extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n isAuthenticated: false,\n userName: null\n };\n }\n\n componentDidMount() {\n this._subscription = authService.subscribe(() => this.populateState());\n this.populateState();\n }\n\n componentWillUnmount() {\n authService.unsubscribe(this._subscription);\n }\n\n async populateState() {\n const [isAuthenticated, user] = await Promise.all([authService.isAuthenticated(), authService.getUser()])\n this.setState({\n isAuthenticated,\n userName: user && user.name\n });\n }\n\n render() {\n const { isAuthenticated, userName } = this.state;\n if (!isAuthenticated) {\n const registerPath = `${ApplicationPaths.Register}`;\n const loginPath = `${ApplicationPaths.Login}`;\n return this.anonymousView(registerPath, loginPath);\n } else {\n const profilePath = `${ApplicationPaths.Profile}`;\n const logoutPath = { pathname: `${ApplicationPaths.LogOut}`, state: { local: true } };\n return this.authenticatedView(userName, profilePath, logoutPath);\n }\n }\n\n authenticatedView(userName, profilePath, logoutPath) {\n return (\n \n Hello {userName}\n \n \n Logout\n \n );\n\n }\n\n anonymousView(registerPath, loginPath) {\n return (\n \n Registrace\n \n \n Přihlášení\n \n );\n }\n}\n","import React, { Component } from 'react';\nimport { Collapse, Container, Navbar, NavbarBrand, NavbarToggler, NavItem, NavLink } from 'reactstrap';\nimport { Link } from 'react-router-dom';\nimport { LoginMenu } from './api-authorization/LoginMenu';\nimport './NavMenu.css';\n\nexport class NavMenu extends Component {\n static displayName = NavMenu.name;\n\n constructor (props) {\n super(props);\n\n this.toggleNavbar = this.toggleNavbar.bind(this);\n this.state = {\n collapsed: true\n };\n }\n\n toggleNavbar () {\n this.setState({\n collapsed: !this.state.collapsed\n });\n }\n\n render () {\n return (\n
\n \n \n Envi4BIM\n \n \n
    \n \n LCA\n \n \n \n
\n
\n
\n
\n
\n );\n }\n}\n","import React, { Component } from 'react';\nimport { Container } from 'reactstrap';\nimport { NavMenu } from './NavMenu';\n\nexport class Layout extends Component {\n static displayName = Layout.name;\n\n render () {\n return (\n
\n \n \n {this.props.children}\n \n
\n );\n }\n}\n","import React, { Component } from 'react';\n\nexport class Home extends Component {\n static displayName = Home.name;\n\n render () {\n return (\n
\n

TODO: popis aplikace

\n
\n );\n }\n}\n","import React, { Component } from 'react';\nimport authService from './api-authorization/AuthorizeService'\n\nexport class FetchData extends Component {\n static displayName = FetchData.name;\n\n constructor(props) {\n super(props);\n this.state = { forecasts: [], loading: true };\n }\n\n componentDidMount() {\n this.populateWeatherData();\n }\n\n static renderForecastsTable(forecasts) {\n return (\n \n \n \n \n \n \n \n \n \n \n {forecasts.map(forecast =>\n \n \n \n \n \n \n )}\n \n
DateTemp. (C)Temp. (F)Summary
{forecast.date}{forecast.temperatureC}{forecast.temperatureF}{forecast.summary}
\n );\n }\n\n render() {\n let contents = this.state.loading\n ?

Loading...

\n : FetchData.renderForecastsTable(this.state.forecasts);\n\n return (\n
\n

Weather forecast

\n

This component demonstrates fetching data from the server.

\n {contents}\n
\n );\n }\n\n async populateWeatherData() {\n const token = await authService.getAccessToken();\n const response = await fetch('weatherforecast', {\n headers: !token ? {} : { 'Authorization': `Bearer ${token}` }\n });\n const data = await response.json();\n this.setState({ forecasts: data, loading: false });\n }\n}\n","import React from 'react'\nimport LoadingIcons from 'react-loading-icons';\n\nconst targetUrl = 'ifc/upload';\n\nexport class FileUploader extends React.Component {\n // Props\n // - label\n // - onUploaded\n\n constructor(props) {\n super(props);\n this.state = {\n uploading: false,\n uploaded: false,\n file: null\n }\n this.onUploaded = this.onUploaded.bind(this)\n this.onChange = this.onChange.bind(this)\n this.fileUpload = this.fileUpload.bind(this)\n }\n\n onUploaded(e) {\n e.preventDefault(); // Stop form submit\n this.fileUpload(this.state.file);\n }\n\n onChange(e) {\n console.log(e);\n if (e.target.files.length > 0) {\n this.setState({ file: e.target.files[0] });\n } else {\n this.setState({ file: null });\n }\n }\n\n fileUpload(file) {\n this.setState({ uploading: true });\n\n const formData = new FormData();\n formData.append(\"formFile\", file);\n\n fetch(targetUrl, {\n method: 'POST',\n // headers: !token ? {} : { 'Authorization': `Bearer ${token}` },\n body: formData\n })\n .then(res => {\n this.setState({ uploading: false, uploaded: true });\n this.props.onUploaded(res);\n })\n .catch(err => {\n console.log(err);\n this.setState({ uploading: false });\n });\n }\n\n render() {\n var fileTitle = 'Vyberte IFC soubor';\n if (this.state.file)\n fileTitle = this.state.file.name;\n\n var state = null;\n //if (this.state.uploading)\n // state =
Loading...
;\n //else if (this.state.uploaded)\n // state = ;\n\n var label =
{this.props.label || \"Nahrát soubor \"}
;\n if (this.state.uploading)\n label =
Nahrávání souboru
;\n\n return (\n
\n
\n
\n
\n
\n \n \n
\n
\n
\n\n \n
\n \n {state}\n\n
\n
\n )\n }\n}\n","import React from 'react'\nimport ToggleButtonGroup from 'react-bootstrap/ToggleButtonGroup'\nimport ToggleButton from 'react-bootstrap/ToggleButton'\n\n\nexport class GroupBySelector extends React.Component {\n // Props\n // - onChange\n\n render() {\n return (\n \n \n Materiálu\n \n \n Ifc typu\n \n \n Objektu\n \n \n Materiálu>Objektu\n \n \n )\n }\n}\n","import React from 'react'\nimport ToggleButtonGroup from 'react-bootstrap/ToggleButtonGroup'\nimport ToggleButton from 'react-bootstrap/ToggleButton'\n\n\nexport class MaterialSourceSelector extends React.Component {\n // Props\n // - onChange\n\n render() {\n return (\n \n \n Simapro XLS\n \n \n Simapro XLS (normalizované)\n \n \n Ecoinvent\n \n \n )\n }\n}\n","import React, { useEffect, useState } from \"react\";\nimport { useTable, useExpanded, useRowSelect, selectedFlatRows } from 'react-table'\nimport BTable from 'react-bootstrap/Table';\n\n\nconst defaultPropGetter = () => ({})\n\n\nexport function MyTable({\n columns,\n data,\n selectedRows,\n setSelectedRows,\n getHeaderProps = defaultPropGetter,\n getColumnProps = defaultPropGetter,\n getRowProps = defaultPropGetter,\n getCellProps = defaultPropGetter,\n}) {\n // Use the state and functions returned from useTable to build your UI\n const {\n getTableProps,\n getTableBodyProps,\n headerGroups,\n rows,\n prepareRow,\n selectedFlatRows\n } = useTable({\n columns,\n data,\n },\n useExpanded,\n useRowSelect,\n );\n\n useEffect(() => {\n //const selected = selectedFlatRows.map((row) => row.original);\n // TODO: takto to nemuze byt\n if (selectedRows && selectedFlatRows && selectedRows.length != selectedFlatRows.length) {\n setSelectedRows(selectedFlatRows);\n }\n }, [selectedFlatRows]);\n\n // Render the UI for your table\n return (\n \n \n {headerGroups.map(headerGroup => (\n \n {headerGroup.headers.map(column => (\n \n {column.render('Header')}\n \n ))}\n \n ))}\n \n \n {rows.map((row, i) => {\n prepareRow(row)\n return (\n // Merge user row props in\n \n {row.cells.map(cell => {\n return (\n \n {cell.render('Cell')}\n \n )\n })}\n \n )\n })}\n \n \n )\n}","import React, { useEffect, useState } from \"react\";\nimport FormControl from 'react-bootstrap/FormControl'\nimport { MyTable } from './MyTable';\n\n\nconst maximumRows = 20;\n\n\nfunction loadEcoinventData(materialSource) {\n var target = 'ecoinvent/activities';\n return fetch(target, {\n method: 'POST',\n headers: new Headers({ 'content-type': 'application/json' }),\n body: JSON.stringify({\n materialSource: materialSource\n })\n })\n .then(res => {\n return res.json();\n })\n .then(resJson => {\n return resJson;\n });\n}\n\n\nexport function EcoinventTableViewer({ materialSource, onSelect }) {\n const [ecoinventData, setEcoinventData] = useState([]);\n const [selected, setSelected] = useState(null);\n // const [searchValue, setSearchValue] = useState('market for concrete');\n const [searchValue, setSearchValue] = useState('');\n\n\n async function loadEcoinvent() {\n const result = await loadEcoinventData(materialSource);\n //const result = {\n // \"activities\": [{ \"name\": \"market group for waste polyethylene terephthalate\", \"id\": \"e429c8b9-0eb3-4b9c-b211-43f853428319\" }, { \"name\": \"aircraft production, dedicated freight aircraft, short haul\", \"id\": \"967db386-968e-402e-a38f-1ffe7452cb5c\" }]\n //};\n setEcoinventData(result.activities);\n }\n useEffect(() => {\n loadEcoinvent();\n }, []);\n\n\n let filtered = ecoinventData.filter((elm) => !searchValue || elm.name.toLowerCase().includes(searchValue.toLowerCase()));\n\n //let filterendLength = filtered.length;\n //if (filterendLength > maximumRows) {\n // filtered = filtered.slice(0, maximumRows - 1);\n // filtered.push({ name: '(není zobrazeno dalších ' + (filterendLength - (maximumRows - 1)) +' řádků)'})\n //}\n\n const tableData = filtered;\n\n const columns = React.useMemo(() => [\n {\n Header: 'Materiál',\n accessor: (originalRow, rowIndex) => originalRow.name + \" (\" + originalRow.location + \")\",\n },\n ]);\n\n return (\n
\n setSearchValue(e.target.value)}\n value={searchValue}\n />\n\n
\n ({\n //onClick: () => alert('Header!'),\n })}\n getColumnProps={column => ({\n //onClick: () => alert('Column!'),\n })}\n getRowProps={row => ({\n //style: {\n // background: row.canExpand ? 'rgba(0,0,0,.05)' : 'white',\n //},\n style: {\n background: selected && selected.id == row.original.id ? '#17a2b840' : '',\n },\n //className: !row.canExpand ? 'table-active' : '',\n\n onClick: () => {\n setSelected(row.original);\n onSelect(row.original);\n }\n })}\n getCellProps={cellInfo => ({\n //style: {\n // backgroundColor: `hsl(${120 * ((120 - cellInfo.value) / 120) * -1 +\n // 120}, 100%, 67%)`,\n //},\n })} />\n
\n
\n )\n}\n","import React, { useEffect, useState } from \"react\";\nimport Modal from 'react-bootstrap/Modal'\nimport Button from 'react-bootstrap/Button'\nimport FormControl from 'react-bootstrap/FormControl'\nimport { EcoinventTableViewer } from \"./EcoinventTableViewer\";\n\n\nexport function EcoinventModal({ show, materialSource, onHide, onSelect }) {\n const [selected, setSelected] = useState(null);\n\n return (\n \n \n \n Vyberte materiál\n \n \n \n setSelected(id)}\n />\n \n \n \n \n \n \n );\n}","import React, { useEffect, useState } from \"react\";\nimport { MyTable } from './MyTable';\n\n\nexport function IfcElementInfoTable({ element }) {\n var data = [];\n if (element != null)\n data = element.properties;\n\n const columns = React.useMemo(() => [\n {\n Header: 'Vlastnost',\n accessor: 'title',\n },\n {\n Header: 'Hodnota',\n accessor: 'value',\n },\n ]);\n\n return (\n
\n ({\n striped: true\n })}\n />\n
\n )\n}\n","import React, { useEffect, useState } from \"react\";\nimport BButton from 'react-bootstrap/Button';\nimport Modal from 'react-bootstrap/Modal';\nimport { MyTable } from './MyTable';\nimport { EcoinventModal } from './EcoinventModal';\nimport { IfcElementInfoTable } from './IfcElementInfoTable';\n\n\nconst IndeterminateCheckbox = React.forwardRef(\n ({ indeterminate, ...rest }, ref) => {\n const defaultRef = React.useRef()\n const resolvedRef = ref || defaultRef\n\n React.useEffect(() => {\n resolvedRef.current.indeterminate = indeterminate\n }, [resolvedRef, indeterminate])\n\n return (\n <>\n \n \n )\n }\n)\n\n\nfunction TransformData(data) {\n \n data = data.sort((a, b) => a.item1.title < b.item1.title ? -1 : 1);\n\n data.forEach((mgroup) => {\n if (!mgroup.item1.title)\n mgroup.item1.title = '(nedefinováno)';\n \n mgroup.count = mgroup.item1.count;\n mgroup.quantities = mgroup.item1.quantities;\n\n mgroup.subRows = mgroup.item2;\n mgroup.subRows.forEach((elm) => {\n if (\"item1\" in elm) {\n if (!elm.item1.title)\n elm.item1.title = '(nedefinováno)';\n elm.count = elm.item1.count;\n elm.quantities = elm.item1.quantities;\n\n elm.subRows = elm.item2;\n elm.subRows.forEach((elm2) => {\n elm2.title = elm2.type + ': ' + elm2.name;\n })\n } else {\n elm.title = elm.type + ': ' + elm.name;\n }\n })\n })\n\n return data;\n}\n\nfunction AgregateMaterials(tableData) {\n let data = tableData.subRows;\n let agregatedMaterial = null;\n for (var i = 0; i < data.length; i++) {\n var r = data[i];\n \n if ('subRows' in r) {\n AgregateMaterials(r);\n }\n\n let rMat = r.ecoMaterial || '';\n //rMat = rMat.name || rMat;\n\n if (agregatedMaterial == null) {\n agregatedMaterial = rMat;\n }\n if (agregatedMaterial.name != rMat.name) {\n agregatedMaterial = { name: '', location: 'různé' };\n }\n }\n // jedna se o skupinu elementu\n if ('count' in tableData)\n tableData.ecoMaterial = agregatedMaterial;\n}\n\nfunction MaterialSelected(selectedRows, ecoMaterial, tableData, iteration = 1) {\n for (var i = 0; i < selectedRows.length; i++) {\n var r = selectedRows[i];\n if (r.canExpand) {\n MaterialSelected(r.subRows, ecoMaterial, tableData, iteration + 1);\n } else {\n r.original.ecoMaterial = ecoMaterial;\n }\n }\n //alert('selected: ' + selectedRows + id);\n\n // prenastavit material u skupin (pokud je stejny v cele skupine)\n if (iteration === 1) {\n //console.log(tableData);\n AgregateMaterials({ subRows: tableData});\n }\n}\n\n// function showElementInfo(element) {\n// alert('showElementInfo' + JSON.stringify(element));\n// //setShowElementProperties(element);\n \n// setElementProperties(row.original);\n// setShowElementProperties(true)\n// }\n\nexport function IfcElementsTableViewer({ data, materialSource }) {\n const [selectedRows, setSelectedRows] = useState([]);\n const [showPicker, setShowPicker] = useState(false);\n const [showElementProperties, setShowElementProperties] = useState(false);\n const [elementProperties, setElementProperties] = useState([]);\n\n const isSelected = selectedRows.length > 0;\n\n const columns = React.useMemo(\n () => [\n {\n id: 'selection',\n Header: ({ getToggleAllRowsSelectedProps }) => (\n
\n \n
\n ),\n Cell: ({ row }) => (\n
\n \n
\n ),\n },\n {\n Header: 'IFC Element',\n Cell: ({ row }) =>\n row.canExpand ? (\n \n {row.isExpanded ? : }\n {row.original.item1.title}\n \n ) : (\n { setElementProperties(row.original.properties); setShowElementProperties(true) }\n })}\n >\n {row.original.name}\n \n ),\n },\n {\n Header: 'ID',\n accessor: 'id',\n },\n {\n Header: 'Objem [m3]',\n accessor: 'quantities',\n Cell: props => {props.value ? parseFloat(props.value).toFixed(3) : ''}\n },\n {\n Header: 'Počet',\n accessor: 'count',\n Cell: props => {props.value ? props.value : '1'}\n },\n {\n id: 'ecoinvent',\n Header: 'Ecoinvent',\n // accessor: 'ecoMaterial.name'\n accessor: (originalRow, rowIndex) => {\n if (originalRow.ecoMaterial)\n return originalRow.ecoMaterial.name + \" (\" + originalRow.ecoMaterial.location + \")\";\n },\n }\n ]);\n\n const tableData = TransformData(data)\n\n return (\n
\n ({\n //onClick: () => alert('Header!'),\n })}\n getColumnProps={column => ({\n //onClick: () => alert('Column!'),\n })}\n getRowProps={row => ({\n //style: {\n // background: row.canExpand ? 'rgba(0,0,0,.05)' : 'white',\n //},\n style: {\n background: row.isSelected ? '#17a2b820' : (row.canExpand ? 'rgba(0,0,0,.05)' : 'white'),\n },\n //className: !row.canExpand ? 'table-active' : '',\n })}\n getCellProps={cellInfo => ({\n //onClick: () => showElementInfo(cellInfo.row.value)\n //style: {\n // backgroundColor: `hsl(${120 * ((120 - cellInfo.value) / 120) * -1 +\n // 120}, 100%, 67%)`,\n //},\n })} />\n\n setShowPicker(true)}>Nastavit materiál\n\n {/* Výběr materiálu */}\n setShowPicker(false)} \n onSelect={(ecoMaterial) => { setShowPicker(false); MaterialSelected(selectedRows, ecoMaterial, tableData) }}\n />\n\n {/* Zobrazení vlastností elementu */}\n setShowElementProperties(false)}\n >\n \n \n Vlastnosti elementu\n \n \n \n \n \n \n setShowElementProperties(false)}>Zavřít\n \n \n \n
\n )\n}\n","import React, { Component } from 'react';\nimport { FileUploader } from './general/FileUploader';\nimport { GroupBySelector } from './general/GroupBySelector';\nimport { MaterialSourceSelector } from './general/MaterialSourceSelector';\nimport { IfcElementsTableViewer } from './IfcElementsTable/IfcElementsTableViewer';\nimport BButton from 'react-bootstrap/Button';\nimport BTable from 'react-bootstrap/Table';\nimport Form from 'react-bootstrap/Form';\nimport LoadingIcons from 'react-loading-icons';\n\n\nexport class Lca extends Component {\n static displayName = Lca.name;\n\n constructor(props) {\n super(props);\n\n this.state = {\n isUploaded: false,\n isMapped: false,\n\n materialSource: 1,\n groupBy: 1,\n filter: null,\n\n ifcData: null,\n isLoading: false,\n isCalculating: false,\n lcaOutpput: null\n };\n\n this.onIfcUploaded = this.onIfcUploaded.bind(this);\n this.onGenerateClick = this.onGenerateClick.bind(this);\n this.onCalculateClick = this.onCalculateClick.bind(this);\n this.onLoadElementsClick = this.onLoadElementsClick.bind(this);\n this.onDownloadClick = this.onDownloadClick.bind(this);\n this.onDownloadCsvClick = this.onDownloadCsvClick.bind(this);\n }\n\n onIfcUploaded(data) {\n this.setState({ isUploaded: true });\n }\n\n onGenerateClick() {\n console.log('Generate CSV: ', this.state.ifcData);\n }\n\n onGroupByChange(e) {\n console.log('onGroupByChange', e);\n this.setState({ groupBy: e });\n }\n\n onMaterialSourceChange(e) {\n console.log('onMaterialSourceChange', e);\n this.setState({ materialSource: e });\n }\n\n onFilterChange(e) {\n var value = e.target.value;\n console.log('onFilterChange', value);\n this.setState({ filter: value });\n }\n\n onLoadElementsClick() {\n this.setState({ isLoading: true });\n\n fetch('ifc/getelements', {\n method: 'POST',\n // headers: !token ? {} : { 'Authorization': `Bearer ${token}` },\n headers: new Headers({ 'content-type': 'application/json' }),\n body: JSON.stringify({\n groupBy: this.state.groupBy,\n filter: this.state.filter\n })\n })\n .then(res => {\n return res.json();\n })\n .then(resJson => {\n this.setState({ ifcData: resJson, isLoading: false });\n })\n .catch(err => {\n console.log(err);\n this.setState({ isLoading: false });\n });\n }\n\n onCalculateClick() {\n console.log('Calculate LCA', this.state.ifcData)\n\n this.setState({ isCalculating: true, lcaOutpput: null });\n var materialData = this.getMaterialsData();\n var elementsData = this.getElementsData();\n\n fetch('lca/calculate', {\n method: 'POST',\n headers: new Headers({ 'content-type': 'application/json' }),\n body: JSON.stringify({\n materialSource: this.state.materialSource,\n inputData: materialData,\n elementsData: elementsData\n })\n })\n .then(res => {\n return res.json();\n })\n .then(resJson => {\n this.setState({ isCalculating: false, lcaOutpput: resJson });\n return resJson;\n })\n .catch(err => {\n this.setState({ isCalculating: false, lcaOutpput: null });\n console.log(err)\n });\n }\n\n onDownloadClick() {\n console.log('Download Ifc')\n fetch('ifc/download', {\n method: 'GET'\n });\n }\n\n onDownloadCsvClick() {\n console.log('Download Csv')\n fetch('ifc/downloadcsv', {\n method: 'GET'\n });\n }\n\n addElementData(output, elm) {\n if (elm.ecoMaterial) {\n var key = elm.id;\n output[key] = {\n name: elm.name,\n family: elm.family,\n type: elm.type,\n materials: elm.materials,\n ecoMaterial: elm.ecoMaterial,\n quantities: elm.quantities\n };\n }\n }\n\n getElementsData() {\n var sourceData = this.state.ifcData;\n var data = {};\n if (!sourceData)\n return data;\n for (var i = 0; i < sourceData.length; i++) {\n var record = sourceData[i];\n var title = record.item1.title;\n var elements = record.item2;\n for (var j = 0; j < elements.length; j++) {\n var element = elements[j];\n if ('item1' in element) {\n for (var k = 0; k < element.item2.length; k++) {\n var elm2 = element.item2[k];\n this.addElementData(data, elm2);\n }\n } else {\n this.addElementData(data, element);\n }\n }\n }\n return data;\n\n }\n\n addMaterialData(output, elm) {\n if (elm.ecoMaterial) {\n var key = elm.ecoMaterial.name + \" (\" + elm.ecoMaterial.location + \")\";\n if (!output[key]) {\n output[key] = {\n ecoMaterial: elm.ecoMaterial,\n quantities: 0\n };\n }\n output[key].quantities += elm.quantities;\n }\n }\n\n getMaterialsData() {\n var sourceData = this.state.ifcData;\n var data = {};\n if (!sourceData)\n return data;\n for (var i = 0; i < sourceData.length; i++) {\n var record = sourceData[i];\n var title = record.item1.title;\n var elements = record.item2;\n for (var j = 0; j < elements.length; j++) {\n var element = elements[j];\n if ('item1' in element) {\n for (var k = 0; k < element.item2.length; k++) {\n var elm2 = element.item2[k];\n this.addMaterialData(data, elm2);\n }\n } else {\n this.addMaterialData(data, element);\n }\n }\n }\n return data;\n }\n\n numberToFormat(number) {\n let str = number.toExponential(3); //1.234e-9\n let i = str.indexOf('e');\n let value = str.substring(0, i);\n let exponent = str.substring(i + 1);\n exponent = exponent.replace('+', '');\n return {value} × 10 {exponent};\n }\n\n render() {\n const tableData = this.state.ifcData;\n\n let table = null;\n if (tableData) {\n table = ;\n }\n\n var calcButtonLabel =
Spustit výpočet
;\n if (this.state.isCalculating)\n calcButtonLabel =
Probíhá výpočet
\n\n var downloadButtonLabel =
Stáhnout IFC
;\n var downloadCsvButtonLabel =
Stáhnout CSV
;\n\n var elmButtonLabel =
Načíst elementy
;\n if (this.state.isLoading)\n elmButtonLabel =
Načítání elementů
\n\n var calcInput = null;\n var materialData = this.getMaterialsData();\n var materialDataKeys = Object.keys(materialData);\n if (materialDataKeys.length > 0) {\n calcInput = materialDataKeys.map((materialKey) => {\n var material = materialData[materialKey];\n return {material.ecoMaterial.name} ({material.ecoMaterial.location}){this.numberToFormat(material.quantities)} m3;\n });\n calcInput =
\n

Vstupní data

\n \n MateriálMnožství\n {calcInput}\n \n
;\n };\n\n var calcOutput = null;\n var lcaOutput = this.state.lcaOutpput\n if (lcaOutput) {\n calcOutput = Object.keys(lcaOutput).map((methodKey) => {\n var tuple = lcaOutput[methodKey];\n var methodName = tuple.key.name1;\n var methodName2 = tuple.key.name2;\n var methodUnit = tuple.key.valueUnit;\n var methodValue = tuple.value;\n\n var mLi = {methodName} {methodName2}{this.numberToFormat(methodValue)} {methodUnit};\n return mLi;\n });\n calcOutput =

Výstupní data

\n Kategorie dopaduCelkové množství\n {calcOutput}\n
;\n }\n\n return (\n
\n

Vložení BIM modelu

\n

Vyberte a nahrejte IFC soubor.

\n \n
\n\n\n

Mapování materiálů

\n\n \n Zdroj materiálů:\n
\n this.onMaterialSourceChange(e)} />\n
\n\n
\n\n \n Seskupovat elementy podle:\n
\n this.onGroupByChange(e)} />\n
\n\n {/* \n Filtr elementů:\n this.onFilterChange(e)}\n />\n */}\n\n
\n\n \n {elmButtonLabel}\n \n\n
\n\n
\n
\n {table}\n
\n
\n
\n\n

Celkový výpočtový protokol

\n

Součtová data z analýzy LCA dle EN 15804+A2

\n {calcButtonLabel}\n
{calcInput}
\n
{calcOutput}
\n\n

Stažení výsledného IFC s daty

\n {downloadButtonLabel}\n

Stažení dat ve formátu CSV

\n {downloadCsvButtonLabel}\n
\n );\n }\n}\n","import React from 'react'\nimport { Component } from 'react'\nimport { Route, Redirect } from 'react-router-dom'\nimport { ApplicationPaths, QueryParameterNames } from './ApiAuthorizationConstants'\nimport authService from './AuthorizeService'\n\nexport default class AuthorizeRoute extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n ready: false,\n authenticated: false\n };\n }\n\n componentDidMount() {\n this._subscription = authService.subscribe(() => this.authenticationChanged());\n this.populateAuthenticationState();\n }\n\n componentWillUnmount() {\n authService.unsubscribe(this._subscription);\n }\n\n render() {\n const { ready, authenticated } = this.state;\n var link = document.createElement(\"a\");\n link.href = this.props.path;\n const returnUrl = `${link.protocol}//${link.host}${link.pathname}${link.search}${link.hash}`;\n const redirectUrl = `${ApplicationPaths.Login}?${QueryParameterNames.ReturnUrl}=${encodeURI(returnUrl)}`\n if (!ready) {\n return
;\n } else {\n const { component: Component, ...rest } = this.props;\n return {\n if (authenticated) {\n return \n } else {\n return \n }\n }} />\n }\n }\n\n async populateAuthenticationState() {\n const authenticated = await authService.isAuthenticated();\n this.setState({ ready: true, authenticated });\n }\n\n async authenticationChanged() {\n this.setState({ ready: false, authenticated: false });\n await this.populateAuthenticationState();\n }\n}\n","import React from 'react'\nimport { Component } from 'react';\nimport authService from './AuthorizeService';\nimport { AuthenticationResultStatus } from './AuthorizeService';\nimport { LoginActions, QueryParameterNames, ApplicationPaths } from './ApiAuthorizationConstants';\n\n// The main responsibility of this component is to handle the user's login process.\n// This is the starting point for the login process. Any component that needs to authenticate\n// a user can simply perform a redirect to this component with a returnUrl query parameter and\n// let the component perform the login and return back to the return url.\nexport class Login extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n message: undefined\n };\n }\n\n componentDidMount() {\n const action = this.props.action;\n switch (action) {\n case LoginActions.Login:\n this.login(this.getReturnUrl());\n break;\n case LoginActions.LoginCallback:\n this.processLoginCallback();\n break;\n case LoginActions.LoginFailed:\n const params = new URLSearchParams(window.location.search);\n const error = params.get(QueryParameterNames.Message);\n this.setState({ message: error });\n break;\n case LoginActions.Profile:\n this.redirectToProfile();\n break;\n case LoginActions.Register:\n this.redirectToRegister();\n break;\n default:\n throw new Error(`Invalid action '${action}'`);\n }\n }\n\n render() {\n const action = this.props.action;\n const { message } = this.state;\n\n if (!!message) {\n return
{message}
\n } else {\n switch (action) {\n case LoginActions.Login:\n return (
Processing login
);\n case LoginActions.LoginCallback:\n return (
Processing login callback
);\n case LoginActions.Profile:\n case LoginActions.Register:\n return (
);\n default:\n throw new Error(`Invalid action '${action}'`);\n }\n }\n }\n\n async login(returnUrl) {\n const state = { returnUrl };\n const result = await authService.signIn(state);\n switch (result.status) {\n case AuthenticationResultStatus.Redirect:\n break;\n case AuthenticationResultStatus.Success:\n await this.navigateToReturnUrl(returnUrl);\n break;\n case AuthenticationResultStatus.Fail:\n this.setState({ message: result.message });\n break;\n default:\n throw new Error(`Invalid status result ${result.status}.`);\n }\n }\n\n async processLoginCallback() {\n const url = window.location.href;\n const result = await authService.completeSignIn(url);\n switch (result.status) {\n case AuthenticationResultStatus.Redirect:\n // There should not be any redirects as the only time completeSignIn finishes\n // is when we are doing a redirect sign in flow.\n throw new Error('Should not redirect.');\n case AuthenticationResultStatus.Success:\n await this.navigateToReturnUrl(this.getReturnUrl(result.state));\n break;\n case AuthenticationResultStatus.Fail:\n this.setState({ message: result.message });\n break;\n default:\n throw new Error(`Invalid authentication result status '${result.status}'.`);\n }\n }\n\n getReturnUrl(state) {\n const params = new URLSearchParams(window.location.search);\n const fromQuery = params.get(QueryParameterNames.ReturnUrl);\n if (fromQuery && !fromQuery.startsWith(`${window.location.origin}/`)) {\n // This is an extra check to prevent open redirects.\n throw new Error(\"Invalid return url. The return url needs to have the same origin as the current page.\")\n }\n return (state && state.returnUrl) || fromQuery || `${window.location.origin}/`;\n }\n\n redirectToRegister() {\n this.redirectToApiAuthorizationPath(`${ApplicationPaths.IdentityRegisterPath}?${QueryParameterNames.ReturnUrl}=${encodeURI(ApplicationPaths.Login)}`);\n }\n\n redirectToProfile() {\n this.redirectToApiAuthorizationPath(ApplicationPaths.IdentityManagePath);\n }\n\n redirectToApiAuthorizationPath(apiAuthorizationPath) {\n const redirectUrl = `${window.location.origin}${apiAuthorizationPath}`;\n // It's important that we do a replace here so that when the user hits the back arrow on the\n // browser he gets sent back to where it was on the app instead of to an endpoint on this\n // component.\n window.location.replace(redirectUrl);\n }\n\n navigateToReturnUrl(returnUrl) {\n // It's important that we do a replace here so that we remove the callback uri with the\n // fragment containing the tokens from the browser history.\n window.location.replace(returnUrl);\n }\n}\n","import React from 'react'\nimport { Component } from 'react';\nimport authService from './AuthorizeService';\nimport { AuthenticationResultStatus } from './AuthorizeService';\nimport { QueryParameterNames, LogoutActions, ApplicationPaths } from './ApiAuthorizationConstants';\n\n// The main responsibility of this component is to handle the user's logout process.\n// This is the starting point for the logout process, which is usually initiated when a\n// user clicks on the logout button on the LoginMenu component.\nexport class Logout extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n message: undefined,\n isReady: false,\n authenticated: false\n };\n }\n\n componentDidMount() {\n const action = this.props.action;\n switch (action) {\n case LogoutActions.Logout:\n if (!!window.history.state.state.local) {\n this.logout(this.getReturnUrl());\n } else {\n // This prevents regular links to /authentication/logout from triggering a logout\n this.setState({ isReady: true, message: \"The logout was not initiated from within the page.\" });\n }\n break;\n case LogoutActions.LogoutCallback:\n this.processLogoutCallback();\n break;\n case LogoutActions.LoggedOut:\n this.setState({ isReady: true, message: \"You successfully logged out!\" });\n break;\n default:\n throw new Error(`Invalid action '${action}'`);\n }\n\n this.populateAuthenticationState();\n }\n\n render() {\n const { isReady, message } = this.state;\n if (!isReady) {\n return
\n }\n if (!!message) {\n return (
{message}
);\n } else {\n const action = this.props.action;\n switch (action) {\n case LogoutActions.Logout:\n return (
Processing logout
);\n case LogoutActions.LogoutCallback:\n return (
Processing logout callback
);\n case LogoutActions.LoggedOut:\n return (
{message}
);\n default:\n throw new Error(`Invalid action '${action}'`);\n }\n }\n }\n\n async logout(returnUrl) {\n const state = { returnUrl };\n const isauthenticated = await authService.isAuthenticated();\n if (isauthenticated) {\n const result = await authService.signOut(state);\n switch (result.status) {\n case AuthenticationResultStatus.Redirect:\n break;\n case AuthenticationResultStatus.Success:\n await this.navigateToReturnUrl(returnUrl);\n break;\n case AuthenticationResultStatus.Fail:\n this.setState({ message: result.message });\n break;\n default:\n throw new Error(\"Invalid authentication result status.\");\n }\n } else {\n this.setState({ message: \"You successfully logged out!\" });\n }\n }\n\n async processLogoutCallback() {\n const url = window.location.href;\n const result = await authService.completeSignOut(url);\n switch (result.status) {\n case AuthenticationResultStatus.Redirect:\n // There should not be any redirects as the only time completeAuthentication finishes\n // is when we are doing a redirect sign in flow.\n throw new Error('Should not redirect.');\n case AuthenticationResultStatus.Success:\n await this.navigateToReturnUrl(this.getReturnUrl(result.state));\n break;\n case AuthenticationResultStatus.Fail:\n this.setState({ message: result.message });\n break;\n default:\n throw new Error(\"Invalid authentication result status.\");\n }\n }\n\n async populateAuthenticationState() {\n const authenticated = await authService.isAuthenticated();\n this.setState({ isReady: true, authenticated });\n }\n\n getReturnUrl(state) {\n const params = new URLSearchParams(window.location.search);\n const fromQuery = params.get(QueryParameterNames.ReturnUrl);\n if (fromQuery && !fromQuery.startsWith(`${window.location.origin}/`)) {\n // This is an extra check to prevent open redirects.\n throw new Error(\"Invalid return url. The return url needs to have the same origin as the current page.\")\n }\n return (state && state.returnUrl) ||\n fromQuery ||\n `${window.location.origin}${ApplicationPaths.LoggedOut}`;\n }\n\n navigateToReturnUrl(returnUrl) {\n return window.location.replace(returnUrl);\n }\n}\n","import React, { Component, Fragment } from 'react';\nimport { Route } from 'react-router';\nimport { Login } from './Login'\nimport { Logout } from './Logout'\nimport { ApplicationPaths, LoginActions, LogoutActions } from './ApiAuthorizationConstants';\n\nexport default class ApiAuthorizationRoutes extends Component {\n\n render () {\n return(\n \n loginAction(LoginActions.Login)} />\n loginAction(LoginActions.LoginFailed)} />\n loginAction(LoginActions.LoginCallback)} />\n loginAction(LoginActions.Profile)} />\n loginAction(LoginActions.Register)} />\n logoutAction(LogoutActions.Logout)} />\n logoutAction(LogoutActions.LogoutCallback)} />\n logoutAction(LogoutActions.LoggedOut)} />\n );\n }\n}\n\nfunction loginAction(name){\n return ();\n}\n\nfunction logoutAction(name) {\n return ();\n}\n","import React, { Component } from 'react';\nimport { Route } from 'react-router';\nimport { Layout } from './components/Layout';\nimport { Home } from './components/Home';\nimport { FetchData } from './components/FetchData';\nimport { Lca } from './components/Lca';\nimport AuthorizeRoute from './components/api-authorization/AuthorizeRoute';\nimport ApiAuthorizationRoutes from './components/api-authorization/ApiAuthorizationRoutes';\nimport { ApplicationPaths } from './components/api-authorization/ApiAuthorizationConstants';\n\nimport './custom.css'\n//import './bootstrap-icons.css'\n\nexport default class App extends Component {\n static displayName = App.name;\n\n render () {\n return (\n \n \n \n \n \n \n );\n }\n}\n","import 'bootstrap/dist/css/bootstrap.css';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport { BrowserRouter } from 'react-router-dom';\nimport App from './App';\n//import registerServiceWorker from './registerServiceWorker';\n\nconst baseUrl = document.getElementsByTagName('base')[0].getAttribute('href');\nconst rootElement = document.getElementById('root');\n\nReactDOM.render(\n \n \n ,\n rootElement);\n\n// Uncomment the line above that imports the registerServiceWorker function\n// and the line below to register the generated service worker.\n// By default create-react-app includes a service worker to improve the\n// performance of the application by caching static assets. This service\n// worker can interfere with the Identity UI, so it is\n// disabled by default when Identity is being used.\n//\n//registerServiceWorker();\n\n"],"sourceRoot":""}