{"version":3,"sources":["components/ErrorPage.tsx","utils/Constants.ts","utils/AtomConfig.ts","utils/MdiService.ts","components/QuickFilter.tsx","components/SearchBox.tsx","components/FilePreview.tsx","utils/VideoJS.tsx","components/VideoPreview.tsx","components/SearchResult.tsx","components/LoadingSpinner.tsx","components/FilterFlag.tsx","components/Refiner.tsx","components/Refiners.tsx","components/Home.tsx","components/Location.tsx","components/NavMenu.tsx","components/Layout.tsx","components/Login.tsx","components/ResetPassword.tsx","App.tsx","index.tsx"],"names":["ErrorPage","location","useLocation","severity","state","message","Box","sx","padding","Alert","marginTop","Constants","Object","freeze","DEFAULT_ID","QUERY_KEYS","FILES","LOCATIONS","SITES","REFINERS","BASE_STYLES","FILTER_ITEM_PROPS","size","FORM_CONTROL_LABEL_PROPS","marginBottom","ACCORDION_SUMMARY","minHeight","margin","ACCORDION_DETAILS","paddingLeft","paddingTop","paddingBottom","maxHeight","overflow","marginRight","BASE_DISABLE_REFETCH_SETTINGS","refetchOnWindowFocus","refetchOnMount","refetchOnReconnect","cacheTime","authTokenAtom","atomWithStorage","locationsAtom","atom","selectedLocationIdAtom","sitesAtom","selectedSitesAtom","currentKQLQueryAtom","currentSortQueryAtom","hitHighlightingEnabledAtom","useRefinerOverridesAtom","refinersExpandedAtom","refinersAtom","refinerItemsAtom","selectedRefinerItemsAtom","searchKeywordAtom","pageSizeAtom","isInitializingAtom","startRowAtom","currentPageIndexAtom","currentUserAtom","MdiService","_baseUrl","process","sites","map","site","join","currentKQLQuery","selectedRefinerItems","keyword","query","push","i","length","refinerItem","property","value","params","axios","method","url","this","result","data","item","title","Title","Property","siteId","SiteId","locationIds","rowLimit","startRow","selectedRefiners","sortQuery","kqlQuery","buildKqlQuery","siteQuery","buildKqlQueryForSites","selectedLocation","email","password","headers","_instance","QuickFilter","props","mdiService","Instance","theme","useTheme","useAtom","locations","selectedLocationId","selectedSites","setSelectedSites","setSites","setIsInitializing","setSelectedRefinerItems","setRefinersExpanded","sitesQuery","useQuery","find","id","GetSites","enabled","onSuccess","updateSelectedSite","setCurrentKQLQuery","setCurrentSortQuery","setHitHighlightingEnabled","setUseRefinerOverrides","isSiteSelected","indexOf","KQLQuery","Sort","UseRefinerOverrides","HitHighliting","isLocationSelected","mainStyle","position","top","bottom","left","backgroundColor","width","overflowY","boxShadow","zIndex","overflowX","borderRadius","spacing","textAlign","display","xs","md","navBarStyle","borderBottomLeftRadius","borderBottomRightRadius","Stack","direction","insideNavBar","Typography","marginLeft","isLoading","CircularProgress","align","color","index","Button","key","Id","className","onClick","SearchBox","setSearchKeyword","pageSize","setPageSize","setCurrentPageIndex","setStartRow","useState","setKeyword","flexGrow","FormControl","maxWidth","paddingRight","variant","InputLabel","htmlFor","FilledInput","type","onKeyUp","event","target","endAdornment","InputAdornment","IconButton","aria-label","edge","Search","Select","label","onChange","MenuItem","useStyles","makeStyles","container","justifyContent","alignItems","frameContainer","height","border","threeDScanFrameContainer","classes","Dialog","onClose","open","show","style","fontSize","fontWeight","fileSource","is3dScan","src","VideoJS","videoRef","React","useRef","playerRef","options","onReady","useEffect","current","videoElement","player","videojs","dispose","data-vjs-player","ref","videoJsOptions","autoplay","controls","responsive","fluid","sources","table","verticalAlign","icon","SearchResult","currentSortQuery","hitHighlightingEnabled","searchKeyword","isInitializing","currentPageIndex","setRefinerItems","selectedFile","setSelectedFile","showPreview","setShowPreview","showVideoPreview","setShowVideoPreview","setIsLoading","isShowMessage","setIsShowMessage","previewFile","file","window","matchMedia","breakpoints","down","replace","matches","preview","fileType","downloadFile","a","document","createElement","href","download","split","pop","body","appendChild","click","removeChild","downloadAction","downloadUrl","setTimeout","itemsQuery","GetListOfFiles","toString","refiners","getViewIconElement","fr","openPageResult","nextPage","_startRow","hidePreview","TableContainer","component","Paper","elevation","Table","minWidth","TableHead","TableRow","palette","primary","main","TableCell","TableBody","cursor","colSpan","files","fileId","onDoubleClick","isDownloadOnly","dangerouslySetInnerHTML","__html","hitHightlights","Tooltip","disabled","getDownloadIconElement","FilePreview","VideoPreview","ButtonGroup","startIcon","endIcon","lastPage","Backdrop","Snackbar","anchorOrigin","vertical","horizontal","autoHideDuration","LoadingSpinner","isHideLabel","FilterFlag","grey","checkbox","Refiner","isExpanded","setIsExpanded","refinerItems","setSelectedRefiners","Boolean","isAnySiteSelected","hasSelectedRefiners","filter","refiner","items","sortBy","Accordion","expanded","_","AccordionSummary","expandIcon","aria-controls","AccordionDetails","FormGroup","FormControlLabel","refinerValue","refinerLabel","control","Checkbox","checked","some","updatedSelectedRefiners","updateCheckedItem","Refiners","useRefinerOverrides","setselectedRefinerItems","setRefiners","refinerQuery","GetRefiners","isAnyFiltersSelected","textDecoration","Home","authToken","setLocations","setSelectedLocationId","hasNoAccess","setHasNoAccess","GetLocations","to","pathname","sm","Location","locationId","NavMenu","history","useHistory","usernameEl","setAuthToken","currentUser","setCurrentUser","isShowMenu","setIsShowMenu","isShowDrawer","setIsShowDrawer","AppBar","Toolbar","borderColor","alt","displayName","anchorEl","Drawer","Layout","children","sop","flexDirection","logo","textContainer","Login","setEmail","setPassword","showToast","setShowToast","toastMessage","setToastMessage","isFetch","setIsFetch","submit","then","res","Error","_authToken","catch","err","console","error","response","finally","Card","CardContent","gutterBottom","TextField","e","placeholder","fullWidth","InputProps","startAdornment","Email","Lock","ResetPassword","oldPassword","setOldPassword","confirmPassword","setConfirmPassword","newPassword","App","createTheme","defaults","common","Authorization","VerifyToken","isVerified","GetUser","user","ThemeProvider","exact","path","queryClient","QueryClient","baseUrl","getElementsByTagName","getAttribute","rootElement","getElementById","ReactDOM","render","client","basename","initialIsOpen"],"mappings":"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","file":"static/js/main.701f9df0.chunk.js","sourcesContent":["import React, { FunctionComponent } from 'react';\r\nimport { useLocation } from 'react-router-dom';\r\n\r\nimport { Alert, Box } from '@mui/material';\r\n\r\nexport const ErrorPage: FunctionComponent = () => {\r\n const location: any = useLocation();\r\n const severity = location.state?.severity || 'error';\r\n const message =\r\n location.state?.message ||\r\n 'Something went wrong. Please try again and contact administrator if ther problem still persists.';\r\n\r\n return (\r\n \r\n \r\n {message}\r\n \r\n \r\n );\r\n};\r\n","import { CheckboxProps } from '@mui/material';\r\nimport { RadioProps } from '@mui/material/Radio';\r\n\r\nconst Constants = Object.freeze({\r\n DEFAULT_ID: -1,\r\n QUERY_KEYS: {\r\n FILES: 'files',\r\n LOCATIONS: 'locations',\r\n SITES: 'sites',\r\n REFINERS: 'refiners'\r\n },\r\n BASE_STYLES: {\r\n FILTER_ITEM_PROPS: {\r\n size: 'small',\r\n } as Partial,\r\n FORM_CONTROL_LABEL_PROPS: {\r\n sx: {\r\n marginBottom: 0,\r\n },\r\n },\r\n ACCORDION_SUMMARY: {\r\n sx: {\r\n '&.Mui-expanded': {\r\n minHeight: '48px'\r\n },\r\n '& .MuiAccordionSummary-content.Mui-expanded': {\r\n margin: '12px 0'\r\n }\r\n }\r\n },\r\n ACCORDION_DETAILS: {\r\n sx: {\r\n paddingLeft: 4,\r\n paddingTop: 0,\r\n paddingBottom: 1.5,\r\n maxHeight: 300,\r\n overflow: 'auto',\r\n marginRight: 2.4,\r\n marginBottom: 2.4\r\n },\r\n },\r\n },\r\n BASE_DISABLE_REFETCH_SETTINGS: {\r\n refetchOnWindowFocus: false,\r\n refetchOnMount: false,\r\n refetchOnReconnect: false,\r\n cacheTime: 1000 * 60 * 60,\r\n },\r\n});\r\n\r\nexport default Constants;\r\n","import { atom } from 'jotai';\r\nimport { atomWithStorage } from 'jotai/utils';\r\nimport { IGetRefinerResponse } from '../models/IGetRefinerResponse';\r\n\r\nimport { IGetUserResponse } from '../models/IGetUserResponse';\r\nimport { ILocation } from '../models/ILocation';\r\nimport { IRefinerItems } from '../models/IRefinerItems';\r\nimport { ISelectedRefinerItem } from '../models/ISelectedRefinerItem';\r\nimport { ISite } from '../models/ISite';\r\nimport Constants from './Constants';\r\n\r\nexport const authTokenAtom = atomWithStorage('authToken', '');\r\nexport const locationsAtom = atom>([]);\r\nexport const selectedLocationIdAtom = atom(Constants.DEFAULT_ID);\r\nexport const sitesAtom = atom>([]);\r\nexport const selectedSitesAtom = atom>([]);\r\nexport const currentKQLQueryAtom = atom('');\r\nexport const currentSortQueryAtom = atom('');\r\nexport const hitHighlightingEnabledAtom = atom(false);\r\nexport const useRefinerOverridesAtom = atom(false);\r\nexport const refinersExpandedAtom = atom(true);\r\nexport const refinersAtom = atom>([]);\r\nexport const refinerItemsAtom = atom({});\r\nexport const selectedRefinerItemsAtom = atom>([]);\r\nexport const searchKeywordAtom = atom('');\r\nexport const pageSizeAtom = atom(10);\r\nexport const isInitializingAtom = atom(false);\r\nexport const startRowAtom = atom(0);\r\nexport const currentPageIndexAtom = atom(1);\r\nexport const currentUserAtom = atom(null);\r\n","import axios, { AxiosResponse } from 'axios';\r\n\r\nimport { IGetListOfFilesResponse } from '../models/IGetListOfFilesResponse';\r\nimport { IGetRefinerResponse } from '../models/IGetRefinerResponse';\r\nimport { IGetUserResponse } from '../models/IGetUserResponse';\r\nimport { ILocation } from '../models/ILocation';\r\nimport { ISelectedRefinerItem } from '../models/ISelectedRefinerItem';\r\nimport { ISite } from '../models/ISite';\r\n\r\nexport class MdiService {\r\n private static _instance: MdiService;\r\n private _baseUrl = process.env.REACT_APP_BASE_API_URL + '/api/WHCPortal';\r\n\r\n public static get Instance() {\r\n return this._instance || (this._instance = new this());\r\n }\r\n\r\n private buildKqlQueryForSites(sites: Array): string {\r\n return sites.map(site => `${site}`).join('');\r\n }\r\n\r\n private buildKqlQuery(currentKQLQuery: string, selectedRefinerItems: ISelectedRefinerItem[], keyword: string): string {\r\n let query = [];\r\n\r\n // Site KQL query\r\n query.push(currentKQLQuery);\r\n\r\n // Keyword KQL query\r\n if (keyword) {\r\n query.push(keyword);\r\n }\r\n\r\n // Refiner KQL query\r\n for (let i = 0; i < selectedRefinerItems.length; i++) {\r\n const refinerItem = selectedRefinerItems[i];\r\n query.push(`${refinerItem.property}:\"${refinerItem.value}\"`);\r\n }\r\n \r\n return query.join(' ');\r\n }\r\n\r\n public async GetRefiners(location: string): Promise {\r\n const params: any = {\r\n location\r\n };\r\n const result: AxiosResponse = await axios({\r\n method: 'get',\r\n url: `${this._baseUrl}/GetRefiners`,\r\n params: params,\r\n });\r\n\r\n return result.data.map((item: any) => ({\r\n title: item.Title,\r\n property: item.Property,\r\n siteId: item.SiteId\r\n } as IGetRefinerResponse));\r\n }\r\n\r\n public async GetListOfFiles(\r\n locationIds: string,\r\n sites: Array,\r\n keyword: string,\r\n rowLimit: number,\r\n startRow: number,\r\n currentKQLQuery: string,\r\n selectedRefiners: Array,\r\n sortQuery?: string\r\n ): Promise {\r\n let params: any = {\r\n locationIds,\r\n rowLimit,\r\n startRow\r\n }\r\n const kqlQuery = this.buildKqlQuery(currentKQLQuery, selectedRefiners, keyword);\r\n\r\n // if kqlQuery is exist\r\n if (kqlQuery) {\r\n params.kqlQuery = kqlQuery;\r\n }\r\n\r\n params.siteQuery = this.buildKqlQueryForSites(sites);\r\n const result: AxiosResponse = await axios({\r\n method: 'get',\r\n url: `${this._baseUrl}/GetListOfFiles`,\r\n params: params,\r\n });\r\n\r\n return result.data;\r\n }\r\n\r\n public async VerifyToken(): Promise {\r\n const result: AxiosResponse = await axios({\r\n method: 'get',\r\n url: `${this._baseUrl}/VerifyToken`,\r\n });\r\n return result.data;\r\n }\r\n\r\n public async GetUser(): Promise {\r\n const result: AxiosResponse = await axios({\r\n method: 'get',\r\n url: `${this._baseUrl}/GetUser`,\r\n });\r\n return result.data;\r\n }\r\n\r\n public async GetLocations(): Promise> {\r\n const result: AxiosResponse = await axios({\r\n method: 'get',\r\n url: `${this._baseUrl}/GetLocations`,\r\n });\r\n return result.data;\r\n }\r\n\r\n public async GetSites(selectedLocation: string): Promise> {\r\n const result: AxiosResponse = await axios({\r\n method: 'get',\r\n url: `${this._baseUrl}/GetSites`,\r\n params: {\r\n location: selectedLocation\r\n }\r\n });\r\n return result.data;\r\n }\r\n\r\n public async Login(email: string, password: string): Promise {\r\n const result: AxiosResponse = await axios({\r\n url: `${process.env.REACT_APP_BASE_API_URL}/api/WHCPortal/GetToken`,\r\n method: 'GET',\r\n headers: {\r\n email: email,\r\n password: password,\r\n },\r\n });\r\n return result;\r\n }\r\n}\r\n","import { useAtom } from 'jotai';\r\nimport React, { FunctionComponent } from 'react';\r\n\r\nimport {\r\n Stack,\r\n Button,\r\n useTheme,\r\n Typography,\r\n Box,\r\n CircularProgress,\r\n} from '@mui/material';\r\n\r\nimport {\r\n isInitializingAtom,\r\n locationsAtom,\r\n selectedLocationIdAtom,\r\n selectedRefinerItemsAtom,\r\n sitesAtom,\r\n selectedSitesAtom,\r\n currentKQLQueryAtom,\r\n currentSortQueryAtom,\r\n hitHighlightingEnabledAtom,\r\n useRefinerOverridesAtom,\r\n refinersExpandedAtom\r\n} from '../utils/AtomConfig';\r\nimport { ISite } from '../models/ISite';\r\nimport Constants from '../utils/Constants';\r\nimport { useQuery } from 'react-query';\r\nimport { MdiService } from '../utils/MdiService';\r\n\r\ninterface IQuickFilterProps {\r\n insideNavBar?: boolean;\r\n}\r\n\r\nexport const QuickFilter: FunctionComponent = (\r\n props: IQuickFilterProps\r\n) => {\r\n const mdiService = MdiService.Instance;\r\n const theme = useTheme();\r\n const [locations] = useAtom(locationsAtom);\r\n const [selectedLocationId] = useAtom(selectedLocationIdAtom);\r\n const [selectedSites, setSelectedSites] = useAtom(selectedSitesAtom);\r\n const [, setSites] = useAtom(sitesAtom);\r\n const [, setIsInitializing] = useAtom(isInitializingAtom);\r\n const [, setSelectedRefinerItems] = useAtom(selectedRefinerItemsAtom);\r\n\r\n const [refinersExpanded, setRefinersExpanded] = useAtom(\r\n refinersExpandedAtom\r\n );\r\n\r\n const sitesQuery = useQuery(\r\n [Constants.QUERY_KEYS.SITES, selectedLocationId],\r\n () => {\r\n const selectedLocation = locations.find(\r\n (location) => location.id === selectedLocationId\r\n );\r\n\r\n return mdiService.GetSites(selectedLocation?.title || '');\r\n },\r\n {\r\n ...Constants.BASE_DISABLE_REFETCH_SETTINGS,\r\n enabled: selectedLocationId !== Constants.DEFAULT_ID,\r\n onSuccess: (data) => {\r\n setSites(data); \r\n updateSelectedSite(data[0]);\r\n },\r\n }\r\n );\r\n\r\n const [currentKQLQuery, setCurrentKQLQuery] = useAtom(\r\n currentKQLQueryAtom\r\n );\r\n\r\n const [currentSortQuery, setCurrentSortQuery] = useAtom(\r\n currentSortQueryAtom\r\n );\r\n\r\n const [hitHighlightingEnabled, setHitHighlightingEnabled] = useAtom(\r\n hitHighlightingEnabledAtom\r\n );\r\n\r\n const [useRefinerOverrides, setUseRefinerOverrides] = useAtom(\r\n useRefinerOverridesAtom\r\n );\r\n\r\n function isSiteSelected(site: string) {\r\n return selectedSites.indexOf(site) !== Constants.DEFAULT_ID;\r\n }\r\n\r\n function updateSelectedSite(site: ISite) {\r\n if (site.Title === \"Home\") {\r\n setRefinersExpanded(false);\r\n } else {\r\n setRefinersExpanded(true);\r\n }\r\n\r\n setSelectedRefinerItems([]);\r\n setIsInitializing(true);\r\n setSelectedSites([site.Title]);\r\n setCurrentKQLQuery(site.KQLQuery);\r\n setCurrentSortQuery(site.Sort);\r\n\r\n if (site.UseRefinerOverrides !== null) {\r\n setUseRefinerOverrides(site.UseRefinerOverrides);\r\n } else {\r\n setUseRefinerOverrides(false);\r\n }\r\n\r\n if (site.HitHighliting !== null) {\r\n setHitHighlightingEnabled(site.HitHighliting);\r\n } else {\r\n setHitHighlightingEnabled(false);\r\n }\r\n }\r\n\r\n const isLocationSelected = selectedLocationId !== Constants.DEFAULT_ID;\r\n const mainStyle : any = {\r\n position: 'fixed',\r\n top: 64,\r\n bottom: 0,\r\n left: 0,\r\n backgroundColor: '#FFFFFF',\r\n width: '240px',\r\n overflowY: 'auto',\r\n boxShadow: '0px 0px 10px rgb(0 0 0 / 30%)',\r\n zIndex: 1,\r\n overflowX: 'hidden',\r\n '& button': {\r\n borderRadius: 0,\r\n paddingTop: theme.spacing(2),\r\n paddingBottom: theme.spacing(1),\r\n paddingLeft: theme.spacing(3),\r\n textAlign: 'left',\r\n display: 'block',\r\n '&.active, &.active:hover': {\r\n backgroundColor: 'rgba(0,0,0,0.15)',\r\n },\r\n '&:not(.active):hover': {\r\n backgroundColor: 'rgba(0,0,0,0.08)',\r\n },\r\n },\r\n display: {\r\n xs: 'none',\r\n md: 'flex',\r\n },\r\n }\r\n\r\n const navBarStyle : any = {\r\n position: 'relative',\r\n backgroundColor: '#FFFFFF',\r\n overflowY: 'auto',\r\n boxShadow: '0px 2px 1px -1px rgb(0 0 0 / 20%), 0px 1px 1px 0px rgb(0 0 0 / 14%), 0px 1px 3px 0px rgb(0 0 0 / 12%)',\r\n marginTop: '20px',\r\n zIndex: 1,\r\n minHeight: '250px',\r\n overflowX: 'hidden',\r\n borderBottomLeftRadius: '4px',\r\n borderBottomRightRadius: '4px',\r\n '& button': {\r\n borderRadius: 0,\r\n paddingTop: theme.spacing(2),\r\n paddingBottom: theme.spacing(1),\r\n paddingLeft: theme.spacing(3),\r\n textAlign: 'left',\r\n display: 'block',\r\n '&.active, &.active:hover': {\r\n backgroundColor: 'rgba(0,0,0,0.15)',\r\n },\r\n '&:not(.active):hover': {\r\n backgroundColor: 'rgba(0,0,0,0.08)',\r\n },\r\n },\r\n display: {\r\n xs: 'flex',\r\n md: 'none',\r\n },\r\n }\r\n\r\n const headerNavBarStyle : any = {\r\n marginLeft: '16px',\r\n marginTop: '16px'\r\n }\r\n\r\n const headerMainStyle : any = {\r\n display: 'none',\r\n }\r\n\r\n return (\r\n \r\n \r\n Site\r\n \r\n {/* Show loading spinner */}\r\n {sitesQuery.isLoading && (\r\n \r\n \r\n \r\n )}\r\n\r\n {/* Show message if location is not selected */}\r\n {!isLocationSelected && (\r\n \r\n Please select location first\r\n \r\n )}\r\n\r\n {sitesQuery.data?.map((site, index) => (\r\n updateSelectedSite(site)}\r\n >\r\n {site.Title}\r\n \r\n ))}\r\n \r\n );\r\n};\r\n","import { useAtom } from 'jotai';\r\nimport React, { FunctionComponent, useState } from 'react';\r\n\r\nimport { Search } from '@mui/icons-material';\r\nimport {\r\n FilledInput,\r\n FormControl,\r\n IconButton,\r\n InputAdornment,\r\n InputLabel,\r\n Box,\r\n MenuItem,\r\n Select,\r\n} from '@mui/material';\r\n\r\nimport {\r\n currentPageIndexAtom,\r\n pageSizeAtom,\r\n searchKeywordAtom,\r\n startRowAtom,\r\n} from '../utils/AtomConfig';\r\n\r\nexport const SearchBox: FunctionComponent = () => {\r\n const [, setSearchKeyword] = useAtom(searchKeywordAtom);\r\n const [pageSize, setPageSize] = useAtom(pageSizeAtom);\r\n const [, setCurrentPageIndex] = useAtom(currentPageIndexAtom);\r\n const [, setStartRow] = useAtom(startRowAtom);\r\n const [keyword, setKeyword] = useState('');\r\n\r\n function handleKeyUp(event: any) {\r\n setKeyword(event.target.value);\r\n if (event.key === 'Enter') {\r\n setSearchKeyword(event.target.value);\r\n }\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n Search\r\n \r\n setSearchKeyword(keyword)}\r\n edge='end'\r\n >\r\n \r\n \r\n \r\n }\r\n />\r\n \r\n \r\n \r\n \r\n Page Size\r\n {\r\n setCurrentPageIndex(1);\r\n setStartRow(0);\r\n setPageSize(event.target.value as number);\r\n }}\r\n >\r\n 5\r\n 10\r\n 20\r\n 50\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n","import React from 'react';\r\n\r\nimport CloseIcon from '@mui/icons-material/Close';\r\nimport { IconButton } from '@mui/material';\r\nimport CircularProgress from '@mui/material/CircularProgress';\r\nimport Dialog from '@mui/material/Dialog';\r\nimport { makeStyles } from '@mui/styles';\r\nimport { Box } from '@mui/system';\r\n\r\ninterface FilePreview {\r\n title: string;\r\n show: boolean;\r\n fileSource?: string;\r\n is3dScan?: boolean;\r\n onClose: Function;\r\n}\r\nconst useStyles = makeStyles({\r\n container: {\r\n display: 'flex',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n padding: 50,\r\n },\r\n frameContainer: {\r\n width: 1024,\r\n height: 768,\r\n border: 'none',\r\n },\r\n threeDScanFrameContainer: {\r\n width: 'calc(100vw - 65px)',\r\n height: 'calc(100vh - 40px)',\r\n }\r\n});\r\n\r\nexport default function (props: FilePreview) {\r\n const classes = useStyles();\r\n\r\n return (\r\n props.onClose()}\r\n open={props.show}\r\n sx={{ '& .MuiPaper-root': { maxWidth: 'none' } }}\r\n >\r\n \r\n \r\n {props.title}\r\n \r\n props.onClose()}>\r\n \r\n \r\n \r\n {props.fileSource ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n );\r\n}\r\n","import 'video.js/dist/video-js.css';\r\n\r\nimport React from 'react';\r\nimport videojs, { VideoJsPlayer, VideoJsPlayerOptions } from 'video.js';\r\n\r\ntype VideoJSProps = {\r\n options?: VideoJsPlayerOptions;\r\n onReady?: (player: VideoJsPlayer) => void;\r\n};\r\n\r\nexport const VideoJS: React.FunctionComponent = (\r\n props: VideoJSProps\r\n) => {\r\n const videoRef = React.useRef(null);\r\n const playerRef = React.useRef(null);\r\n const { options, onReady } = props;\r\n\r\n React.useEffect(() => {\r\n // make sure Video.js player is only initialized once\r\n if (!playerRef.current) {\r\n const videoElement = videoRef.current;\r\n if (!videoElement) return;\r\n\r\n const player = (playerRef.current = videojs(videoElement, options, () => {\r\n // console.log('player is ready');\r\n onReady && onReady(player);\r\n }));\r\n } else {\r\n // you can update player here [update player through props]\r\n // const player = playerRef.current;\r\n // player.autoplay(options.autoplay);\r\n // player.src(options.sources);\r\n }\r\n }, [options, onReady]);\r\n\r\n // Dispose the Video.js player when the functional component unmounts\r\n React.useEffect(() => {\r\n return () => {\r\n if (playerRef.current) {\r\n (playerRef.current as any).dispose();\r\n playerRef.current = null;\r\n }\r\n };\r\n }, []);\r\n\r\n return (\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default VideoJS;\r\n","import React from 'react';\r\nimport { VideoJsPlayerOptions } from 'video.js';\r\n\r\nimport CloseIcon from '@mui/icons-material/Close';\r\nimport { IconButton } from '@mui/material';\r\nimport CircularProgress from '@mui/material/CircularProgress';\r\nimport Dialog from '@mui/material/Dialog';\r\nimport { makeStyles } from '@mui/styles';\r\nimport { Box } from '@mui/system';\r\n\r\nimport VideoJS from '../utils/VideoJS';\r\n\r\ninterface IVideoPreviewProps {\r\n title: string;\r\n show: boolean;\r\n fileSource?: string;\r\n onClose: Function;\r\n}\r\n\r\nconst useStyles = makeStyles({\r\n container: {\r\n display: 'flex',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n padding: 50,\r\n },\r\n frameContainer: {\r\n width: 1024,\r\n border: 'none',\r\n },\r\n});\r\n\r\nexport default function (props: IVideoPreviewProps) {\r\n const classes = useStyles();\r\n\r\n const videoJsOptions: VideoJsPlayerOptions = {\r\n autoplay: true,\r\n controls: true,\r\n responsive: true,\r\n fluid: true,\r\n sources: [\r\n {\r\n type: 'application/x-mpegUrl',\r\n src: props.fileSource || '',\r\n },\r\n ],\r\n };\r\n\r\n return (\r\n props.onClose()}\r\n open={props.show}\r\n sx={{ '& .MuiPaper-root': { maxWidth: '1024px' } }}\r\n >\r\n \r\n {props.title}\r\n props.onClose()}>\r\n \r\n \r\n \r\n {props.fileSource ? (\r\n
\r\n \r\n
\r\n ) : (\r\n \r\n )}\r\n \r\n );\r\n}\r\n","import { useAtom } from 'jotai';\r\nimport React, { FunctionComponent, useState } from 'react';\r\nimport { useQuery } from 'react-query';\r\n\r\nimport { Icon } from '@iconify/react';\r\nimport ArrowBackIosNewIcon from '@mui/icons-material/ArrowBackIosNew';\r\nimport ArrowForwardIosIcon from '@mui/icons-material/ArrowForwardIos';\r\nimport Description from '@mui/icons-material/Description';\r\nimport DownloadIcon from '@mui/icons-material/Download';\r\nimport {\r\n Backdrop,\r\n Box,\r\n Button,\r\n ButtonGroup,\r\n CircularProgress,\r\n IconButton,\r\n Paper,\r\n Snackbar,\r\n Table,\r\n TableBody,\r\n TableCell,\r\n TableContainer,\r\n TableHead,\r\n TableRow,\r\n Typography,\r\n useTheme,\r\n Tooltip\r\n} from '@mui/material';\r\nimport { makeStyles } from '@mui/styles';\r\n\r\nimport { IFile } from '../models/IFile';\r\nimport {\r\n currentPageIndexAtom,\r\n isInitializingAtom,\r\n pageSizeAtom,\r\n refinerItemsAtom,\r\n searchKeywordAtom,\r\n selectedLocationIdAtom,\r\n selectedRefinerItemsAtom,\r\n selectedSitesAtom,\r\n startRowAtom,\r\n currentKQLQueryAtom,\r\n hitHighlightingEnabledAtom,\r\n currentSortQueryAtom,\r\n} from '../utils/AtomConfig';\r\nimport Constants from '../utils/Constants';\r\nimport { MdiService } from '../utils/MdiService';\r\nimport FilePreview from './FilePreview';\r\nimport VideoPreview from './VideoPreview';\r\nimport ReportGmailerrorredIcon from '@mui/icons-material/ReportGmailerrorred';\r\n\r\nconst useStyles = makeStyles({\r\n table: {\r\n '& td': {\r\n verticalAlign: 'top',\r\n },\r\n '& strong': {\r\n color: '#626262',\r\n },\r\n },\r\n icon: {\r\n fontSize: '1.9rem',\r\n },\r\n});\r\n\r\nexport const SearchResult: FunctionComponent = () => {\r\n const mdiService = MdiService.Instance;\r\n const classes = useStyles();\r\n\r\n const [selectedLocationId] = useAtom(selectedLocationIdAtom);\r\n const [currentKQLQuery] = useAtom(currentKQLQueryAtom);\r\n const [currentSortQuery] = useAtom(currentSortQueryAtom);\r\n const [hitHighlightingEnabled] = useAtom(hitHighlightingEnabledAtom);\r\n const [selectedSites] = useAtom(selectedSitesAtom);\r\n const [searchKeyword] = useAtom(searchKeywordAtom);\r\n const [pageSize] = useAtom(pageSizeAtom);\r\n const [isInitializing, setIsInitializing] = useAtom(isInitializingAtom);\r\n const [currentPageIndex, setCurrentPageIndex] = useAtom(currentPageIndexAtom);\r\n const [startRow, setStartRow] = useAtom(startRowAtom);\r\n const [, setRefinerItems] = useAtom(refinerItemsAtom);\r\n const [selectedRefinerItems] = useAtom(selectedRefinerItemsAtom);\r\n const [selectedFile, setSelectedFile] = useState(null);\r\n const [showPreview, setShowPreview] = useState(false);\r\n const [showVideoPreview, setShowVideoPreview] = useState(false);\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [isShowMessage, setIsShowMessage] = useState(false);\r\n const theme = useTheme();\r\n\r\n function previewFile(file: IFile) {\r\n // Always open preview in new tab for mobile resolution\r\n if (\r\n window.matchMedia(theme.breakpoints.down('sm').replace('@media ', ''))\r\n .matches\r\n ) {\r\n window.open(file.preview);\r\n return;\r\n }\r\n\r\n // Set selected file\r\n setSelectedFile(file);\r\n\r\n // Check if file is video\r\n /*\r\n if (file.resourceType === 'Videos') {\r\n setShowVideoPreview(true);\r\n return;\r\n }*/\r\n\r\n switch (true) {\r\n case ['000', 'doc', 'docx', 'xls', 'xlsx', 'ppt', 'pptx', 'pdf'].indexOf(\r\n file.fileType\r\n ) > -1:\r\n setShowPreview(true);\r\n break;\r\n default:\r\n window.open(file.preview);\r\n break;\r\n }\r\n }\r\n\r\n function downloadAction(url: string) {\r\n const a = document.createElement('a');\r\n a.href = url;\r\n a.download = url.split('/').pop() || '';\r\n document.body.appendChild(a);\r\n a.click();\r\n document.body.removeChild(a);\r\n }\r\n\r\n function downloadFile(file: IFile) {\r\n // Check if file is 3D screen\r\n if (file.fileType === '000') {\r\n window.open(file.preview);\r\n return;\r\n }\r\n\r\n setIsLoading(true);\r\n downloadAction(file.downloadUrl);\r\n setTimeout(() => {\r\n setIsLoading(false);\r\n setIsShowMessage(true);\r\n }, 1000);\r\n return;\r\n }\r\n\r\n const itemsQuery = useQuery(\r\n [\r\n Constants.QUERY_KEYS.FILES,\r\n selectedLocationId,\r\n selectedSites,\r\n searchKeyword,\r\n pageSize,\r\n startRow,\r\n currentKQLQuery,\r\n selectedRefinerItems,\r\n startRow,\r\n ],\r\n () =>\r\n mdiService.GetListOfFiles(\r\n selectedLocationId.toString(),\r\n selectedSites,\r\n searchKeyword,\r\n pageSize,\r\n startRow,\r\n currentKQLQuery,\r\n selectedRefinerItems,\r\n currentSortQuery\r\n ),\r\n {\r\n ...Constants.BASE_DISABLE_REFETCH_SETTINGS,\r\n enabled:\r\n selectedLocationId !== Constants.DEFAULT_ID && selectedSites.length > 0,\r\n onSuccess: (result) => {\r\n // Update refiner items\r\n setRefinerItems(result.refiners);\r\n\r\n setIsInitializing(false);\r\n },\r\n }\r\n );\r\n\r\n function getViewIconElement(fileType: string) {\r\n switch (true) {\r\n case ['doc', 'docx'].indexOf(fileType) > -1:\r\n return (\r\n \r\n );\r\n case ['xls', 'xlsx'].indexOf(fileType) > -1:\r\n return (\r\n \r\n );\r\n case ['ppt', 'pptx'].indexOf(fileType) > -1:\r\n return (\r\n \r\n );\r\n case fileType === 'pdf':\r\n return (\r\n \r\n );\r\n case ['000'].indexOf(fileType) > -1:\r\n return ;\r\n default:\r\n return ;\r\n }\r\n }\r\n\r\n function getDownloadIconElement(fileType: string) {\r\n switch (true) {\r\n case ['000'].indexOf(fileType) > -1:\r\n return null;\r\n default:\r\n return ;\r\n }\r\n }\r\n\r\n function openPageResult(nextPage: number) {\r\n const _startRow = (nextPage - 1) * pageSize;\r\n setCurrentPageIndex(nextPage);\r\n setStartRow(_startRow);\r\n }\r\n\r\n function hidePreview() {\r\n setShowPreview(false);\r\n setShowVideoPreview(false);\r\n setSelectedFile(null);\r\n }\r\n\r\n const isLocationSelected = selectedLocationId !== Constants.DEFAULT_ID;\r\n const isSiteSelected = selectedSites.length > 0;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n {(isLocationSelected && isSiteSelected) && (\r\n \r\n \r\n Title\r\n View\r\n Download\r\n \r\n \r\n )}\r\n \r\n \r\n {/* Show loading spinner */}\r\n {itemsQuery.isLoading && (\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n\r\n {/* Show message if location is not selected */}\r\n {(!isLocationSelected || !isSiteSelected) && (\r\n \r\n \r\n \r\n Please select a site from the left panel to display results.\r\n \r\n You can also change your location with any of the options on the top of the page.\r\n \r\n \r\n \r\n )}\r\n\r\n {/* Show no items result */}\r\n {itemsQuery.data?.files.length === 0 && (\r\n \r\n \r\n 0 matching results. Please try a different search query.\r\n \r\n \r\n )}\r\n\r\n {/* Show items */}\r\n {itemsQuery.data?.files.map((file, index) => (\r\n \r\n file.isDownloadOnly || !file.preview\r\n ? downloadFile(file)\r\n : previewFile(file)\r\n }\r\n >\r\n \r\n
\r\n {file.title}\r\n
\r\n {/* Show hithighlighting if enabled */}\r\n {hitHighlightingEnabled && (\r\n \r\n )}\r\n
\r\n \r\n {(file.isDownloadOnly) && (\r\n \r\n \r\n previewFile(file)}\r\n disabled={file.isDownloadOnly || !file.preview}\r\n >\r\n {getViewIconElement(file.fileType)}\r\n \r\n \r\n \r\n )}\r\n {(!file.isDownloadOnly) && (\r\n previewFile(file)}\r\n disabled={file.isDownloadOnly || !file.preview}\r\n >\r\n {getViewIconElement(file.fileType)}\r\n \r\n )}\r\n \r\n \r\n downloadFile(file)}\r\n disabled={!file.downloadUrl}\r\n >\r\n {getDownloadIconElement(file.fileType)}\r\n \r\n \r\n \r\n ))}\r\n \r\n \r\n
\r\n {selectedFile && (\r\n <>\r\n \r\n \r\n \r\n )}\r\n {/* Pagination */}\r\n \r\n \r\n }\r\n disabled={itemsQuery.isLoading || currentPageIndex === 1}\r\n onClick={() => openPageResult(currentPageIndex - 1)}\r\n >\r\n Prev\r\n \r\n }\r\n disabled={\r\n isInitializing ||\r\n itemsQuery.isLoading ||\r\n itemsQuery.data?.lastPage\r\n }\r\n onClick={() => openPageResult(currentPageIndex + 1)}\r\n >\r\n Next\r\n \r\n \r\n \r\n {/* Dropbox */}\r\n \r\n \r\n \r\n {/* Download message */}\r\n setIsShowMessage(false)}\r\n message={'File has been requested. Please wait for a few seconds.'}\r\n />\r\n
\r\n );\r\n};\r\n","import React, { FunctionComponent } from 'react';\r\n\r\nimport { CircularProgress, Typography } from '@mui/material';\r\nimport { Box } from '@mui/system';\r\n\r\nexport interface ILoadingSpinnerProps {\r\n isHideLabel?: boolean;\r\n label?: string;\r\n}\r\n\r\nexport const LoadingSpinner: FunctionComponent = (\r\n props: ILoadingSpinnerProps\r\n) => {\r\n return (\r\n \r\n \r\n {!props.isHideLabel && (\r\n \r\n {props.label || 'Loading data...'}\r\n \r\n )}\r\n \r\n );\r\n};\r\n","import React, { FunctionComponent } from 'react';\r\n\r\nimport FilterAltIcon from '@mui/icons-material/FilterAlt';\r\nimport { useTheme } from '@mui/material';\r\n\r\nexport const FilterFlag: FunctionComponent = () => {\r\n const theme = useTheme();\r\n return (\r\n \r\n );\r\n};\r\n","import { useAtom } from 'jotai';\r\nimport sortBy from 'just-sort-by';\r\nimport React, { FunctionComponent, useState } from 'react';\r\n\r\nimport ExpandMoreIcon from '@mui/icons-material/ExpandMore';\r\nimport {\r\n Accordion,\r\n AccordionDetails,\r\n AccordionSummary,\r\n Box,\r\n Checkbox,\r\n CircularProgress,\r\n FormControlLabel,\r\n FormGroup,\r\n Typography,\r\n} from '@mui/material';\r\nimport { makeStyles } from '@mui/styles';\r\n\r\nimport {\r\n isInitializingAtom,\r\n refinerItemsAtom,\r\n selectedLocationIdAtom,\r\n selectedRefinerItemsAtom,\r\n selectedSitesAtom,\r\n refinersExpandedAtom\r\n} from '../utils/AtomConfig';\r\nimport Constants from '../utils/Constants';\r\nimport { FilterFlag } from './FilterFlag';\r\n\r\ninterface IRefinerProps {\r\n title: string;\r\n property: string;\r\n}\r\n\r\nconst useStyles = makeStyles({\r\n checkbox: {\r\n display: 'flex',\r\n alignItems: 'flex-start',\r\n '& .MuiFormControlLabel-label': {\r\n marginTop: 8,\r\n },\r\n },\r\n});\r\n\r\nexport const Refiner: FunctionComponent = (\r\n props: IRefinerProps\r\n) => {\r\n const classes = useStyles();\r\n const [refinersExpanded] = useAtom(refinersExpandedAtom);\r\n const [isExpanded, setIsExpanded] = useState(true);\r\n const [selectedLocationId] = useAtom(selectedLocationIdAtom);\r\n const [isInitializing] = useAtom(isInitializingAtom);\r\n const [refinerItems] = useAtom(refinerItemsAtom);\r\n const [selectedRefiners, setSelectedRefiners] = useAtom(\r\n selectedRefinerItemsAtom\r\n );\r\n const [selectedSites] = useAtom(selectedSitesAtom);\r\n\r\n function updateCheckedItem(value: string, checked: boolean) {\r\n let updatedSelectedRefiners = [...selectedRefiners];\r\n if (checked) {\r\n // Add selected refiner to the array\r\n updatedSelectedRefiners.push({ property: props.property, value });\r\n } else {\r\n // remove selected refiner from the array\r\n updatedSelectedRefiners = updatedSelectedRefiners.filter(\r\n (refiner) =>\r\n refiner.property !== props.property || refiner.value !== value\r\n );\r\n }\r\n setSelectedRefiners(updatedSelectedRefiners);\r\n }\r\n\r\n function isItemChecked(property: string, value: string) {\r\n return selectedRefiners.some(\r\n (refiner) => refiner.property === property && refiner.value === value\r\n );\r\n }\r\n\r\n const isLocationSelected = Boolean(selectedLocationId);\r\n const isAnySiteSelected = Boolean(selectedSites.length);\r\n const hasSelectedRefiners = Boolean(\r\n selectedRefiners.filter((refiner) => refiner.property === props.property)\r\n .length\r\n );\r\n\r\n const items =\r\n refinerItems &&\r\n refinerItems[props.property] &&\r\n sortBy(refinerItems[props.property], (item) => item.index);\r\n\r\n return (\r\n setIsExpanded(expanded)}\r\n >\r\n }\r\n aria-controls='panel-function-content'\r\n id='panel-function-header'\r\n {...Constants.BASE_STYLES.ACCORDION_SUMMARY}\r\n >\r\n {props.title}\r\n {hasSelectedRefiners && }\r\n \r\n\r\n {/* Show loading spinnner if it is on initializing */}\r\n {isInitializing && isAnySiteSelected && (\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n\r\n {/* Show message if site is not selected */}\r\n {!isAnySiteSelected && (\r\n \r\n ...\r\n \r\n )}\r\n\r\n {/* Show message if empty */}\r\n {isLocationSelected &&\r\n isAnySiteSelected &&\r\n !isInitializing &&\r\n (!items || items.length === 0) && (\r\n \r\n No filter options available\r\n \r\n )}\r\n\r\n {/* Show items if it's not initializing */}\r\n {!isInitializing && isAnySiteSelected && isLocationSelected && items && (\r\n \r\n \r\n {items.map((item) => (\r\n \r\n updateCheckedItem(item.refinerValue, checked)\r\n }\r\n />\r\n }\r\n />\r\n ))}\r\n \r\n \r\n )}\r\n \r\n );\r\n};\r\n","import { useAtom } from 'jotai';\r\nimport React, { FunctionComponent } from 'react';\r\n\r\nimport { CircularProgress, Typography } from '@mui/material';\r\nimport { Box } from '@mui/system';\r\n\r\nimport {\r\n currentPageIndexAtom,\r\n locationsAtom,\r\n refinersAtom,\r\n selectedLocationIdAtom,\r\n selectedRefinerItemsAtom,\r\n selectedSitesAtom,\r\n startRowAtom,\r\n useRefinerOverridesAtom,\r\n refinersExpandedAtom\r\n} from '../utils/AtomConfig';\r\nimport Constants from '../utils/Constants';\r\nimport { useQuery } from 'react-query';\r\nimport { MdiService } from '../utils/MdiService';\r\nimport { Refiner } from './Refiner';\r\n\r\nexport const Refiners: FunctionComponent = () => {\r\n const mdiService = MdiService.Instance;\r\n const [selectedLocationId] = useAtom(selectedLocationIdAtom);\r\n const [locations] = useAtom(locationsAtom);\r\n const [selectedSites] = useAtom(selectedSitesAtom);\r\n const [useRefinerOverrides] = useAtom(useRefinerOverridesAtom);\r\n const [selectedRefinerItems, setselectedRefinerItems] = useAtom(selectedRefinerItemsAtom);\r\n const [, setRefiners] = useAtom(refinersAtom);\r\n const [, setCurrentPageIndex] = useAtom(currentPageIndexAtom);\r\n const [, setStartRow] = useAtom(startRowAtom);\r\n\r\n const refinerQuery = useQuery(\r\n [Constants.QUERY_KEYS.REFINERS, selectedLocationId],\r\n () => {\r\n const selectedLocation = locations.find(\r\n (location) => location.id === selectedLocationId\r\n );\r\n return mdiService.GetRefiners(selectedLocation?.title || '');\r\n },\r\n {\r\n ...Constants.BASE_DISABLE_REFETCH_SETTINGS,\r\n enabled: !!selectedLocationId,\r\n onSuccess: (data) => {\r\n setRefiners(data);\r\n },\r\n }\r\n );\r\n\r\n function handleClickClearFilters() {\r\n setCurrentPageIndex(1);\r\n setStartRow(0);\r\n setselectedRefinerItems([]);\r\n }\r\n\r\n const isAnyFiltersSelected = selectedRefinerItems.length > 0;\r\n const isLocationSelected = selectedLocationId !== Constants.DEFAULT_ID;\r\n\r\n return (\r\n \r\n \r\n \r\n Filter\r\n \r\n\r\n {/* Only shows if there are any resources or item groups selected */}\r\n {isAnyFiltersSelected && (\r\n \r\n Clear filter\r\n \r\n )}\r\n \r\n\r\n {/* Show message if location is not selected */}\r\n {!isLocationSelected && (\r\n \r\n Please select location first\r\n \r\n )}\r\n\r\n {/* Show loading spinner */}\r\n {isLocationSelected && refinerQuery.isLoading && (\r\n \r\n \r\n \r\n )}\r\n\r\n {/* Dynamic refiners */}\r\n {refinerQuery.data &&\r\n refinerQuery.data.map((refiner) => (\r\n ((useRefinerOverrides && selectedSites[0] === refiner.siteId) || (!useRefinerOverrides && \"All\" === refiner.siteId)) && (\r\n \r\n )\r\n ))}\r\n\r\n {/* Show message if there are no refiners */}\r\n {isLocationSelected &&\r\n refinerQuery.data &&\r\n refinerQuery.data.length === 0 && (\r\n \r\n No refiners available for this location\r\n \r\n )}\r\n \r\n );\r\n};\r\n","import { useAtom } from 'jotai';\r\nimport React, { useState } from 'react';\r\nimport { useQuery } from 'react-query';\r\nimport { Redirect } from 'react-router-dom';\r\n\r\nimport Stack from '@mui/material/Stack';\r\nimport Box from '@mui/system/Box';\r\n\r\nimport {\r\n authTokenAtom,\r\n locationsAtom,\r\n selectedLocationIdAtom,\r\n} from '../utils/AtomConfig';\r\nimport Constants from '../utils/Constants';\r\nimport { MdiService } from '../utils/MdiService';\r\nimport { QuickFilter } from './QuickFilter';\r\nimport { SearchBox } from './SearchBox';\r\nimport { SearchResult } from './SearchResult';\r\nimport { LoadingSpinner } from './LoadingSpinner';\r\nimport { Refiners } from './Refiners';\r\n\r\nexport const Home = () => {\r\n const [authToken] = useAtom(authTokenAtom);\r\n const [, setLocations] = useAtom(locationsAtom);\r\n const [, setSelectedLocationId] = useAtom(selectedLocationIdAtom);\r\n const [hasNoAccess, setHasNoAccess] = useState(false);\r\n\r\n const mdiService = MdiService.Instance;\r\n\r\n // Get locations when auth token is available\r\n const locationsQuery = useQuery(\r\n Constants.QUERY_KEYS.LOCATIONS,\r\n () => mdiService.GetLocations(),\r\n {\r\n ...Constants.BASE_DISABLE_REFETCH_SETTINGS,\r\n enabled: !!authToken,\r\n onSuccess: (result) => {\r\n if (result.length === 0) {\r\n setHasNoAccess(true);\r\n return;\r\n }\r\n\r\n setLocations(result);\r\n setSelectedLocationId(result[0].id);\r\n },\r\n }\r\n );\r\n\r\n // Show loading spinner on initial load\r\n if (locationsQuery.isLoading) {\r\n return (\r\n \r\n ;\r\n \r\n );\r\n }\r\n\r\n if (hasNoAccess) {\r\n return (\r\n \r\n );\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n","import { useAtom } from 'jotai';\r\nimport React, { FunctionComponent } from 'react';\r\n\r\nimport { Box, Button } from '@mui/material';\r\n\r\nimport {\r\n currentPageIndexAtom,\r\n isInitializingAtom,\r\n locationsAtom,\r\n selectedLocationIdAtom,\r\n selectedRefinerItemsAtom,\r\n selectedSitesAtom,\r\n startRowAtom,\r\n} from '../utils/AtomConfig';\r\n\r\nexport const Location: FunctionComponent = () => {\r\n const [locations] = useAtom(locationsAtom);\r\n const [, setIsInitializing] = useAtom(isInitializingAtom);\r\n const [, setCurrentPageIndex] = useAtom(currentPageIndexAtom);\r\n const [, setStartRow] = useAtom(startRowAtom);\r\n const [, setSelectedSites] = useAtom(selectedSitesAtom);\r\n const [, setSelectedRefinerItems] = useAtom(selectedRefinerItemsAtom);\r\n const [selectedLocationId, setSelectedLocationId] = useAtom(\r\n selectedLocationIdAtom\r\n );\r\n\r\n function onLocationChange(id: number, title: string) {\r\n // Reset all data\r\n setIsInitializing(true);\r\n setCurrentPageIndex(1);\r\n setStartRow(0);\r\n setSelectedLocationId(id);\r\n setSelectedSites([]);\r\n setSelectedRefinerItems([]);\r\n }\r\n\r\n function isLocationSelected(locationId: number) {\r\n return selectedLocationId === locationId;\r\n }\r\n\r\n return (\r\n \r\n {locations.map((location) => (\r\n onLocationChange(location.id, location.title)}\r\n sx={{\r\n color: 'white',\r\n marginLeft: '20px',\r\n boxShadow: 'none',\r\n height: '62px',\r\n borderRadius: 0,\r\n backgroundColor: isLocationSelected(location.id)\r\n ? 'rgba(0,0,0,0.4)'\r\n : 'rgba(0,0,0,0)',\r\n ':hover': {\r\n backgroundColor: 'rgba(0,0,0,0.2)'\r\n },\r\n }}\r\n >\r\n {location.title}\r\n \r\n ))}\r\n \r\n );\r\n};\r\n","import './NavMenu.css';\r\n\r\nimport { useAtom } from 'jotai';\r\nimport React, { useRef, useState } from 'react';\r\nimport { Link, useHistory } from 'react-router-dom';\r\n\r\nimport CloseIcon from '@mui/icons-material/Close';\r\nimport MenuIcon from '@mui/icons-material/Menu';\r\nimport { Button, Drawer, IconButton, Menu, MenuItem } from '@mui/material';\r\nimport AppBar from '@mui/material/AppBar';\r\nimport Box from '@mui/material/Box';\r\nimport Toolbar from '@mui/material/Toolbar';\r\nimport Typography from '@mui/material/Typography';\r\n\r\nimport {\r\n authTokenAtom,\r\n currentUserAtom,\r\n locationsAtom,\r\n} from '../utils/AtomConfig';\r\nimport { Location } from './Location';\r\nimport { Refiners } from './Refiners';\r\nimport { QuickFilter } from './QuickFilter';\r\n\r\nexport function NavMenu() {\r\n const history = useHistory();\r\n const usernameEl = useRef(null);\r\n const [, setAuthToken] = useAtom(authTokenAtom);\r\n const [, setLocations] = useAtom(locationsAtom);\r\n const [currentUser, setCurrentUser] = useAtom(currentUserAtom);\r\n const [isShowMenu, setIsShowMenu] = useState(false);\r\n const [isShowDrawer, setIsShowDrawer] = useState(false);\r\n\r\n function logout() {\r\n setIsShowMenu(false);\r\n setAuthToken('');\r\n setCurrentUser(null);\r\n setLocations([]);\r\n history.replace('/login');\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n setIsShowDrawer(true)} />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n WHITEHAVEN DOCUMENT PORTAL\r\n \r\n \r\n \r\n \r\n setIsShowMenu(true)}\r\n sx={{\r\n '&:hover': {\r\n cursor: 'pointer',\r\n textDecoration: 'underline',\r\n },\r\n }}\r\n >\r\n {currentUser && currentUser.displayName}\r\n \r\n setIsShowMenu(false)}\r\n >\r\n logout()}>Logout\r\n \r\n \r\n \r\n setIsShowDrawer(false)}\r\n sx={{\r\n '& .MuiDrawer-paper': {\r\n padding: 2,\r\n backgroundColor: '#ECECF7',\r\n minWidth: '280px',\r\n },\r\n }}\r\n >\r\n \r\n setIsShowDrawer(false)}>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}","import React from 'react';\r\n\r\nimport Box from '@mui/system/Box';\r\n\r\nimport { NavMenu } from './NavMenu';\r\n\r\nexport const Layout: React.FunctionComponent = ({ children }) => {\r\n return (\r\n
\r\n \r\n {children}\r\n
\r\n );\r\n};\r\n","import { useAtom } from 'jotai';\r\nimport React, { useState } from 'react';\r\nimport { useHistory } from 'react-router';\r\nimport { Link } from 'react-router-dom';\r\n\r\nimport { Email, Lock } from '@mui/icons-material';\r\nimport {\r\n Button,\r\n Card,\r\n CardContent,\r\n InputAdornment,\r\n Stack,\r\n TextField,\r\n Typography,\r\n} from '@mui/material';\r\nimport CircularProgress from '@mui/material/CircularProgress';\r\nimport Snackbar from '@mui/material/Snackbar';\r\nimport { makeStyles } from '@mui/styles';\r\nimport { MdiService } from '../utils/MdiService';\r\n\r\nimport { authTokenAtom } from '../utils/AtomConfig';\r\n\r\nconst LOGO_PATH = './full-logo.svg';\r\n\r\nconst useStyles = makeStyles({\r\n sop: {\r\n height: '100vh',\r\n display: 'flex',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n flexDirection: 'column',\r\n backgroundColor: '#e8ecf1',\r\n },\r\n logo: {\r\n width: 300\r\n },\r\n textContainer: {\r\n display: 'flex',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n flexDirection: 'column',\r\n },\r\n});\r\n\r\nexport function Login() {\r\n const classes = useStyles();\r\n const history = useHistory();\r\n const mdiService = MdiService.Instance;\r\n const [email, setEmail] = useState();\r\n const [password, setPassword] = useState();\r\n const [showToast, setShowToast] = useState(false);\r\n const [toastMessage, setToastMessage] = useState();\r\n const [isFetch, setIsFetch] = useState(false);\r\n const [, setAuthToken] = useAtom(authTokenAtom);\r\n\r\n function submit() {\r\n if (email && password) {\r\n setIsFetch(true);\r\n mdiService\r\n .Login(email, password)\r\n .then((res) => {\r\n if (!res || !res.data) throw new Error('Authentication token blank.');\r\n const _authToken = 'Bearer ' + res.data;\r\n setAuthToken(_authToken);\r\n history.push('/');\r\n })\r\n .catch((err) => {\r\n setToastMessage('Login failed. Please check again your email and password.');\r\n console.error('Login failed', err)\r\n setShowToast(true);\r\n if (\r\n err.response.data ===\r\n 'Your password needs to be changed before you can log-in.'\r\n ) {\r\n history.push('/reset/password');\r\n }\r\n })\r\n .finally(() => {\r\n setIsFetch(false);\r\n });\r\n } else {\r\n setToastMessage('Please Input Your Email And Password');\r\n setShowToast(true);\r\n }\r\n }\r\n\r\n return (\r\n \r\n
\r\n
\r\n Logo\r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n Welcome Back\r\n \r\n \r\n Enter your credentials to access your account\r\n \r\n
\r\n
\r\n setEmail(e.target.value)}\r\n label='Email'\r\n placeholder='Enter Your Email'\r\n variant='outlined'\r\n size='small'\r\n fullWidth\r\n InputProps={{\r\n startAdornment: (\r\n \r\n \r\n \r\n ),\r\n }}\r\n />\r\n setPassword(e.target.value)}\r\n onKeyUp={(event) => {\r\n if (event.key === 'Enter') {\r\n submit()\r\n }\r\n }}\r\n type='password'\r\n label='Password'\r\n placeholder='Enter your password'\r\n size='small'\r\n fullWidth\r\n variant='outlined'\r\n style={{ marginTop: 20 }}\r\n InputProps={{\r\n startAdornment: (\r\n \r\n \r\n \r\n ),\r\n }}\r\n />\r\n submit()}\r\n fullWidth\r\n style={{ marginTop: 20 }}\r\n variant='contained'\r\n >\r\n {isFetch ? (\r\n \r\n ) : (\r\n 'Sign In'\r\n )}\r\n \r\n
\r\n
\r\n
\r\n
\r\n Change Password\r\n \r\n .\r\n \r\n Forgot Password\r\n \r\n .\r\n \r\n Register\r\n
\r\n
\r\n
\r\n setShowToast(false)}\r\n message={toastMessage}\r\n />\r\n
\r\n );\r\n}\r\n","import React, { useState } from 'react';\r\nimport {\r\n Button,\r\n Card,\r\n CardContent,\r\n InputAdornment,\r\n Stack,\r\n TextField,\r\n Typography,\r\n} from '@mui/material';\r\nimport { makeStyles } from '@mui/styles';\r\nimport { Email, Lock } from '@mui/icons-material';\r\nimport Snackbar from '@mui/material/Snackbar';\r\nimport CircularProgress from '@mui/material/CircularProgress';\r\nimport { Link } from 'react-router-dom'\r\nimport axios from 'axios';\r\n\r\nconst LOGO_PATH = './full-logo.svg';\r\n\r\nconst useStyles = makeStyles({\r\n sop: {\r\n height: '100vh',\r\n display: 'flex',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n flexDirection: 'column',\r\n backgroundColor: '#e8ecf1',\r\n },\r\n logo: {\r\n width: 300,\r\n },\r\n textContainer: {\r\n display: 'flex',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n flexDirection: 'column',\r\n },\r\n});\r\n\r\nexport function ResetPassword() {\r\n const classes = useStyles();\r\n const [email, setEmail] = useState();\r\n const [oldPassword, setOldPassword] = useState();\r\n const [password, setPassword] = useState();\r\n const [confirmPassword, setConfirmPassword] = useState();\r\n const [showToast, setShowToast] = useState(false);\r\n const [toastMessage, setToastMessage] = useState();\r\n const [isFetch, setIsFetch] = useState(false);\r\n\r\n function submit() {\r\n if (password !== confirmPassword) {\r\n setToastMessage('Confirm password does not match new password');\r\n setShowToast(true);\r\n return;\r\n }\r\n\r\n if (password === oldPassword) {\r\n setToastMessage('New password should be different from the old one');\r\n setShowToast(true);\r\n return;\r\n }\r\n \r\n if (email && password && oldPassword) {\r\n setIsFetch(true);\r\n axios({\r\n url: `${process.env.REACT_APP_BASE_API_URL}/api/WHCPortal/ResetPassword`,\r\n method: 'GET',\r\n headers: {\r\n email: email,\r\n password: oldPassword,\r\n newPassword: password,\r\n },\r\n })\r\n .then((res) => {\r\n setToastMessage('Success');\r\n setShowToast(true);\r\n })\r\n .catch((err) => {\r\n setToastMessage(err.response.data);\r\n setShowToast(true);\r\n })\r\n .finally(() => {\r\n setIsFetch(false);\r\n });\r\n\r\n return;\r\n } else {\r\n setToastMessage('Please Fill All Form Data');\r\n setShowToast(true);\r\n }\r\n }\r\n\r\n return (\r\n \r\n
\r\n
\r\n Logo\r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n Change Your Password\r\n \r\n \r\n Enter your credentials to change your password\r\n \r\n
\r\n
\r\n setEmail(e.target.value)}\r\n label='Email'\r\n placeholder='Enter Your Email'\r\n variant='outlined'\r\n size='small'\r\n fullWidth\r\n InputProps={{\r\n startAdornment: (\r\n \r\n \r\n \r\n ),\r\n }}\r\n />\r\n setOldPassword(e.target.value)}\r\n type='password'\r\n label='Old Password'\r\n placeholder='Enter your old password'\r\n size='small'\r\n fullWidth\r\n variant='outlined'\r\n style={{ marginTop: 20 }}\r\n InputProps={{\r\n startAdornment: (\r\n \r\n \r\n \r\n ),\r\n }}\r\n />\r\n setPassword(e.target.value)}\r\n type='password'\r\n label='New Password'\r\n placeholder='Enter your new password'\r\n size='small'\r\n fullWidth\r\n variant='outlined'\r\n style={{ marginTop: 20 }}\r\n InputProps={{\r\n startAdornment: (\r\n \r\n \r\n \r\n ),\r\n }}\r\n />\r\n setConfirmPassword(e.target.value)}\r\n type='password'\r\n label='Confirm New Password'\r\n placeholder='Enter your new password'\r\n size='small'\r\n fullWidth\r\n variant='outlined'\r\n style={{ marginTop: 20 }}\r\n InputProps={{\r\n startAdornment: (\r\n \r\n \r\n \r\n ),\r\n }}\r\n />\r\n submit()}\r\n fullWidth\r\n style={{ marginTop: 20 }}\r\n variant='contained'\r\n >\r\n {isFetch ? : 'Submit'}\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n Back to Login Page\r\n \r\n
\r\n
\r\n
\r\n setShowToast(false)}\r\n message={toastMessage}\r\n />\r\n
\r\n );\r\n}\r\n","import './custom.css';\r\n\r\nimport axios from 'axios';\r\nimport { useAtom } from 'jotai';\r\nimport React, { FunctionComponent } from 'react';\r\nimport { Redirect, Route } from 'react-router';\r\n\r\nimport { createTheme, ThemeProvider } from '@mui/material/styles';\r\n\r\nimport { ErrorPage } from './components/ErrorPage';\r\nimport { Home } from './components/Home';\r\nimport { Layout } from './components/Layout';\r\nimport { Login } from './components/Login';\r\nimport { ResetPassword } from './components/ResetPassword';\r\nimport { authTokenAtom, currentUserAtom } from './utils/AtomConfig';\r\nimport { MdiService } from './utils/MdiService';\r\n\r\nexport const App: FunctionComponent = () => {\r\n const theme = createTheme({\r\n palette: {\r\n primary: {\r\n main: '#003591',\r\n },\r\n },\r\n });\r\n\r\n const mdiService = MdiService.Instance;\r\n const [authToken, setAuthToken] = useAtom(authTokenAtom);\r\n const [currentUser, setCurrentUser] = useAtom(currentUserAtom);\r\n\r\n // Setup auth bearer for axios if current user is authenticated\r\n if (authToken) {\r\n axios.defaults.headers.common = { Authorization: authToken };\r\n\r\n // Verify auth token\r\n mdiService\r\n .VerifyToken()\r\n .then((isVerified) => {\r\n if (!isVerified) {\r\n // Reset token cache\r\n setAuthToken('');\r\n return;\r\n }\r\n\r\n // Get current user data if it's empty\r\n if (currentUser === null) {\r\n // Get user data\r\n mdiService.GetUser().then(user => {\r\n setCurrentUser(user);\r\n });\r\n }\r\n })\r\n .catch(() => {\r\n // Reset token cache\r\n setAuthToken('');\r\n });\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n {authToken && }\r\n {!authToken && }\r\n \r\n \r\n {authToken && }\r\n {!authToken && }\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n","import 'bootstrap/dist/css/bootstrap.css';\r\n\r\nimport React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport { QueryClient, QueryClientProvider } from 'react-query';\r\nimport { ReactQueryDevtools } from 'react-query/devtools';\r\nimport { BrowserRouter } from 'react-router-dom';\r\n\r\nimport { App } from './App';\r\n\r\nconst queryClient = new QueryClient();\r\n\r\nconst baseUrl =\r\n document.getElementsByTagName('base')[0].getAttribute('href') || '';\r\nconst rootElement = document.getElementById('root');\r\n\r\nReactDOM.render(\r\n \r\n \r\n \r\n \r\n \r\n ,\r\n rootElement\r\n);\r\n"],"sourceRoot":""}