{"version":3,"sources":["TelemetryService.js","telemetry-provider.jsx","authConfig.js","UserStore.js","components/SearchBar/Suggestions/Suggestions.js","components/Errorlog/ErrorBoundary.js","components/SearchBar/SearchBar.js","components/AppHeader/AppHeader.js","profilePic.js","graph.js","pages/Home/Home.js","pages/Details/SearchTranscript/SearchTranscript.js","pages/Details/Details.js","components/Results/Result/getLanguage.js","components/Results/Result/Result.js","components/Results/Result/DocType.js","components/Results/Results.js","components/Pager/Pager.js","components/Facets/CheckboxFacet/CheckboxFacet.js","components/Facets/Facets.js","pages/Search/Search.js","pages/Regex/Regex.js","App/App.js","index.js"],"names":["reactPlugin","appInsights","ai","initialize","instrumentationKey","browserHistory","Error","ReactPlugin","ApplicationInsights","config","maxBatchInterval","disableFetchTracking","extensions","extensionConfig","identifier","history","loadAppInsights","getAppInsights","TelemetryProvider","Component","constructor","arguments","state","initialized","componentDidMount","this","props","AppInsightsInstrumentationKey","Boolean","setState","after","render","children","_jsx","Fragment","withRouter","withAITracking","msalConfig","auth","clientId","process","authority","redirectUri","clientCapabilities","cache","cacheLocation","storeAuthStateInCookie","system","loggerOptions","loggerCallback","level","message","containsPii","LogLevel","Info","Verbose","Warning","loginRequest","scopes","graphConfig","graphMeEndpoint","graphProfiePicEndpoint","graphGetUsersEndpoint","myStore","loggedInUser","initialQ","regexData","isSelectedcheckbob","makeObservable","observable","setLoggedInUser","action","setInitialQ","setRegexData","setisSelectedcheckbox","user","q","data","Suggestions","suggestionClickHandler","e","currentTarget","id","suggestions","map","s","index","className","queryPlusText","onMouseDown","style","boxShadow","boxSizing","ErrorBoundary","React","super","hasError","msg","componentDidCatch","error","info","setTimeout","match","path","includes","push","window","location","reload","_jsxs","AppHeader","nextPage","SearchBar","setQ","useState","setSuggestions","showSuggestions","setShowSuggestions","instance","accounts","useMsal","uriError","setUriError","setisSelectedcheckbob","UserStore","accountsValue","onSearchHandler","href","setFilters","postSearchHandler","document","getElementById","value","suggestionDiv","useEffect","_","timer","async","accessToken","acquireTokenSilent","account","headers","Authorization","concat","res","axios","get","results","suggestionsCall","clearTimeout","onKeyDown","keyCode","FormGroup","Tooltip","title","arrow","TextField","autoComplete","type","placeholder","onChange","onChangeHandler","searchTerm","undefined","length","searchChangeHandler","defaultValue","onBlur","onClick","InputProps","disableUnderline","FormControlLabel","control","Checkbox","checked","handleChange","chaneValue","replace","label","xmlns","width","height","viewBox","d","fill","noWrapCss","paddingTop","flexWrap","wrapCss","useHistory","graphData","theImage","timeout","remaining","setRemaining","elapsed","setElapsed","lastActive","setLastActive","Date","isIdle","setIsIdle","show","setShow","APIEndpoint","handleLogout","options","UserId","localStorage","getItem","UniqueSessionCode","ApplicationName","response","post","removeItem","logoutRedirect","postLogoutRedirectUri","reset","pause","resume","getRemainingTime","getLastActiveTime","getElapsedTime","useIdleTimer","onIdle","setInterval","setItem","username","myuuid","uuidv4","Headers","bearer","append","method","fetch","then","profilePic","blob","callMsGraph","reader","FileReader","preview","querySelector","ok","addEventListener","src","result","readAsDataURL","apigraph","name","interval","setTime","validateSession","clearInterval","time","handleClose","_Fragment","navigateToHome","alt","borderRight","download","class","focusable","isSearchResultPage","ToastProvider","Modal","onHide","backdrop","keyboard","dialogClassName","size","centered","Body","font","IconButton","padding","position","top","right","background","borderRadius","color","CloseIcon","Home","globalAdmin","setGlobalAdmin","API_endpoint","checkGlobalAdmin","Login","loginRedirect","catch","AuthenticatedTemplate","Row","space","split","display","Button","UnauthenticatedTemplate","SearchTranscript","initalSearchTag","setInitalSearchTag","trim","searchtext","setSearchtext","searchTags","setSearchTags","isActive","setActive","isActiveTranscript","setActiveTranscript","selectedTab","renderTranscript","startsWith","endsWith","search","valueOfAndOr","RegExp","toLowerCase","filter","obj","valueOfNot","searchWord","substring","searchChange","findChunksSearch","_ref","autoEscape","caseSensitive","sanitize","searchWords","textToHighlight","chunks","textLow","singleTextWords","fromIndex","singleTextWordsWithPos","indexInWord","indexOf","word","forEach","sw","swLow","start","end","parseInt","sub","remain","test","doc","documented","metadata_storage_file_extension_lower","transcriptContent","dwg_dgn_content","translated_content","highlightContent","newContent","splitedContent","Number","MAX_SAFE_INTEGER","splice","i","decode","transcriptBoxes","lessThan20Words","moreThan20Words","threeMerge","three","showTranscriptLess","slice","showTrancript","showTagsLess","keyphrases","showTagsMore","tagList","tag","array","target","innerHTML","str","searchTagHandler","paraChunkSmall","maxHeight","minHeight","paraChunkBig","expandSeemore","fontFamily","para","key","Highlighter","highlightClassName","unhighlightClassName","findChunks","expandSeemoreTranscript","StyledTableCell","withStyles","theme","head","backgroundColor","palette","common","black","white","body","fontSize","TableCell","StyledTableRow","root","hover","TableRow","useStyles","makeStyles","table","minWidth","observer","classes","setDocument","setTab","isLoading","setIsLoading","sasLink","setSasLink","docs","setDocs","noRenderer","setNoRenderer","XMLData","setXMLData","updateRender","setUpdateRender","CADloader","setCADloader","detailsDoc","docType","XMLparse","metadata_storage_path","console","log","encodeURIComponent","uri","generateSasToken","viewer","useRef","WebViewer","current","webviewerServerURL","initialDoc","licenseKey","annotationManager","documentViewer","Annotations","DocumentViewer","Search","Core","searchListener","searchPattern","newAnnotations","annotation","RedactionAnnotation","PageNumber","pageNum","Quads","quads","quad","getPoints","StrokeColor","Color","addAnnotations","drawAnnotationsFromList","wholeword","searchTag","searchOptions","wholeWord","wildcard","regex","searchUp","ambientString","UI","addSearchListener","pattern","k","searchTextFull","disableElements","overrideSearchExecution","charAt","setSearchHighlightColors","searchResult","activeSearchResult","fitWidth","setFitMode","FitMode","FitWidth","Events","DOCUMENT_LOADED","PAGE_NUMBER_UPDATED","getDisplayModeManager","setDisplayMode","DisplayMode","setHeaderItems","header","items","getItems","newItems","update","err","detailsBody","CircularProgress","FileStyle","metadataStyle","transcriptStyle","isCAD","docID","document_id","trackEvent","properties","SearchServiceName","REACT_APP_SEARCH_SERVICE_NAME","ClickedDocId","Action","Userid","link","fileName","metadata_storage_name","url","responseType","Blob","saveAs","ref","DocViewer","documents","pluginRenderers","DocViewerRenderers","createData","showKeyphrasesAsString","join","rows","metadata_creation_date","moment","format","language","TableContainer","component","Paper","Table","TableBody","row","scope","align","paddingRight","Col","lg","sm","md","getLanguage","lang","Result","discipline","metadata_discipline","project","metadata_project","fileType","getDocIcon","content","searchQ","part1","lengthArray","oneWord","twoWord","threeWord","fourWord","fiveWord","sixWord","sevenWord","eightWord","nineWord","tenWord","moreWord","sort","f","dateTime","datestring","handleShow","marginLeft","ExpandMore","ExpandLess","Header","closeButton","Title","Details","Results","beginDocNumber","Math","min","skip","count","endDocNumber","toLocaleString","Pager","selectedPage","setSelectedPage","currentPage","totalPages","ceil","resultCount","resultsPerPage","setCurrentPageValue","previousButton","nextButton","page_links","minPage","maxPage","CheckboxFacet","isExpanded","setIsExpanded","checkboxes","values","facetValue","checkboxValue","checkboxCount","ISO_8601","isValid","isSelected","selectedFacets","some","facet","addFilter","removeFilter","field","FacetListItem","disableRipple","button","borderBottom","paddingLeft","ListItemText","primary","mapFacetName","Collapse","in","FacetValuesList","FormControl","styled","ListItem","List","overflowY","marginRight","Facets","facetName","string","toUpperCase","newFilters","filters","item","facets","Object","keys","border","textTransform","applayFilters","FacetList","marginTop","_UserStore$initialQ","_URLSearchParams$get","_URLSearchParams$get2","useLocation","setResults","setResultCount","setCurrentPage","URLSearchParams","setSkip","setFacets","setSort","apiFilters","filterList","filterExpressions","facetsGroup","reduce","acc","cval","myAttribute","input","groupBy","createFilterExpression","toString","searchResultsCall","totalCount","updatePagination","newPageNumber","variant","Select","labelId","MenuItem","LoadingOverlay","active","spinner","text","muiTheme","erroredLabel","TextFieldMui","InputLabelProps","Regex","regexValue","setregexValue","regexValueErrorMessage","setRegexValueErrorMessage","regexValueError","setRegexValueError","products","setProducts","showAddPopup","setShowAddPopup","deleteLOC","setDeleteLOC","deleteId","setDeleteId","columns","setColumns","dataField","clickCount","setclickCount","editRowData","setEditRowData","editRowid","setEditRowid","GetKmAssetTagRules","formatRegexData","handleclose","editRow","indexValue","toJS","regularExpression","processedData","finalData","assetTagRuleId","more","classname","cursor","handleCloseDialog","go","BootstrapTable","keyField","Dialog","open","onClose","DialogTitle","DialogContent","flexDirection","TextareaAutosize","margin","fullWidth","minRows","helperText","DialogActions","paddingright","updatedValue","status","float","Cancel","allData","handleLOCPurge","CircleChecked","App","Router","Switch","Route","exact","msalInstance","PublicClientApplication","ReactDOM","MsalProvider"],"mappings":"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","file":"static/js/main.0ff60bd7.chunk.js","sourcesContent":["import {ApplicationInsights} from '@microsoft/applicationinsights-web';\r\nimport {ReactPlugin} from '@microsoft/applicationinsights-react-js';\r\n\r\nlet reactPlugin = null;\r\nlet appInsights = null;\r\n\r\n/**\r\n * Create the App Insights Telemetry Service\r\n * @return {{reactPlugin: ReactPlugin, appInsights: Object, initialize: Function}} - Object\r\n */\r\nconst createTelemetryService = () => {\r\n\r\n /**\r\n * Initialize the Application Insights class\r\n * @param {string} instrumentationKey - Application Insights Instrumentation Key\r\n * @param {Object} browserHistory - client's browser history, supplied by the withRouter HOC\r\n * @return {void}\r\n */\r\n const initialize = (instrumentationKey, browserHistory) => {\r\n if (!browserHistory) {\r\n throw new Error('Could not initialize Telemetry Service');\r\n }\r\n if (!instrumentationKey) {\r\n throw new Error('Instrumentation key not provided in ./src/telemetry-provider.jsx')\r\n }\r\n\r\n reactPlugin = new ReactPlugin();\r\n\r\n appInsights = new ApplicationInsights({\r\n config: {\r\n instrumentationKey: instrumentationKey,\r\n maxBatchInterval: 0,\r\n disableFetchTracking: false,\r\n extensions: [reactPlugin],\r\n extensionConfig: {\r\n [reactPlugin.identifier]: {\r\n history: browserHistory\r\n }\r\n }\r\n }\r\n });\r\n\r\n appInsights.loadAppInsights();\r\n };\r\n\r\n return {reactPlugin, appInsights, initialize};\r\n};\r\n\r\nexport const ai = createTelemetryService();\r\nexport const getAppInsights = () => appInsights;\r\n","import React, {Component, Fragment} from 'react';\r\nimport {withAITracking} from '@microsoft/applicationinsights-react-js';\r\nimport {ai} from './TelemetryService';\r\nimport {withRouter} from 'react-router-dom';\r\n\r\n/**\r\n * This Component provides telemetry with Azure App Insights\r\n *\r\n * NOTE: the package '@microsoft/applicationinsights-react-js' has a HOC withAITracking that requires this to be a Class Component rather than a Functional Component\r\n */\r\nclass TelemetryProvider extends Component {\r\n state = {\r\n initialized: false\r\n };\r\n\r\n componentDidMount() {\r\n const {history} = this.props;\r\n const {initialized} = this.state;\r\n const AppInsightsInstrumentationKey = this.props.instrumentationKey; // PUT YOUR KEY HERE\r\n if (!Boolean(initialized) && Boolean(AppInsightsInstrumentationKey) && Boolean(history)) {\r\n ai.initialize(AppInsightsInstrumentationKey, history);\r\n this.setState({initialized: true});\r\n }\r\n\r\n this.props.after();\r\n }\r\n\r\n render() {\r\n const {children} = this.props;\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default withRouter(withAITracking(ai.reactPlugin, TelemetryProvider));\r\n","import { LogLevel } from \"@azure/msal-browser\";\r\n\r\nconst clientId = process.env.REACT_APP_CLIENT_ID;\r\nconst authority = process.env.REACT_APP_AUTHORITY;\r\nconst redirectUri = process.env.REACT_APP_REDIRECT_URI;\r\n\r\nexport const msalConfig = {\r\n auth: {\r\n clientId: clientId,\r\n authority: authority,\r\n redirectUri: redirectUri,\r\n clientCapabilities: [\"CP1\"]\r\n },\r\n cache: {\r\n cacheLocation: \"sessionStorage\", // This configures where your cache will be stored\r\n storeAuthStateInCookie: false, // Set this to \"true\" if you are having issues on IE11 or Edge\r\n },\r\n system: {\t\r\n loggerOptions: {\t\r\n loggerCallback: (level, message, containsPii) => {\t\r\n if (containsPii) {\t\t\r\n return;\t\t\r\n }\t\t\r\n switch (level) {\t\t\r\n case LogLevel.Error:\t\t\r\n // console.error(message);\t\t\r\n return;\t\t\r\n case LogLevel.Info:\t\t\r\n // console.info(message);\t\t\r\n return;\t\t\r\n case LogLevel.Verbose:\t\t\r\n // console.debug(message);\t\t\r\n return;\t\t\r\n case LogLevel.Warning:\t\t\r\n // console.warn(message);\t\t\r\n return;\t\r\n default: \r\n return;\t\r\n }\t\r\n }\t\r\n }\t\r\n }\r\n};\r\n\r\nexport const loginRequest = {\r\n scopes: [\"User.Read\", \"profile\"]\r\n};\r\n\r\nexport const graphConfig = {\r\n graphMeEndpoint: \"https://graph.microsoft.com/v1.0/me\",\r\n graphProfiePicEndpoint: \"https://graph.microsoft.com/v1.0/me/photo/$value\",\r\n graphGetUsersEndpoint: \"https://graph.microsoft.com/v1.0/users\"\r\n};","import { action, makeObservable, observable } from \"mobx\"\r\n\r\nclass UserStore {\r\n loggedInUser = \"\";\r\n initialQ = \"\";\r\n regexData = [];\r\n isSelectedcheckbob = false;\r\n\r\n constructor() {\r\n makeObservable(this, {\r\n loggedInUser: observable,\r\n initialQ: observable,\r\n regexData: observable,\r\n isSelectedcheckbob: observable,\r\n // all the desired actions\r\n setLoggedInUser: action,\r\n setInitialQ: action,\r\n setRegexData: action,\r\n setisSelectedcheckbox: action,\r\n });\r\n }\r\n\r\n setLoggedInUser(user) {\r\n this.loggedInUser = user;\r\n return this.loggedInUser;\r\n }\r\n\r\n setInitialQ(q) {\r\n this.initialQ = q;\r\n return this.initialQ;\r\n }\r\n\r\n setRegexData(data) {\r\n this.regexData = data;\r\n return this.regexData;\r\n }\r\n\r\n setisSelectedcheckbox(data) {\r\n this.isSelectedcheckbob = data;\r\n return this.isSelectedcheckbob;\r\n }\r\n}\r\n\r\nconst myStore = new UserStore();\r\nexport default myStore;","import React from 'react';\r\n\r\nimport \"./Suggestions.scss\";\r\nimport 'bootstrap/dist/css/bootstrap.min.css';\r\n\r\nexport default function Suggestions(props) {\r\n \r\n const suggestionClickHandler = (e) => {\r\n props.suggestionClickHandler(e.currentTarget.id);\r\n }\r\n\r\n const borders = {\r\n boxShadow: \"0 2px 3px #ccc\",\r\n boxSizing: \"border-box\",\r\n }\r\n\r\n let suggestions = props.suggestions.map((s, index) => {\r\n return (
{s.queryPlusText}
);\r\n });\r\n\r\n return (\r\n
\r\n {suggestions}\r\n
\r\n );\r\n};\r\n","import React from \"react\";\r\nimport { withRouter } from \"react-router-dom\";\r\nimport AppHeader from \"../../components/AppHeader/AppHeader\";\r\nimport './ErrorBoundary.scss';\r\n\r\nclass ErrorBoundary extends React.Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = { \r\n hasError: false,\r\n msg : \"Redirecting to home page in 5 seconds.\"\r\n };\r\n }\r\n\r\n componentDidCatch(error, info) {\r\n // Display fallback UI\r\n this.setState({ hasError: true });\r\n // You can also log the error to an error reporting service\r\n //logErrorToMyService(error, info);\r\n setTimeout(() => {\r\n if(this.props.match.path.includes('/search')) {\r\n this.props.history.push('/'); \r\n } else {\r\n window.location.reload();\r\n }\r\n }, 5000);\r\n }\r\n\r\n render() {\r\n if (this.state.hasError) {\r\n // You can render any custom fallback UI\r\n return (\r\n
\r\n \r\n
\r\n

Something went wrong.

\r\n

{this.state.msg}

\r\n
\r\n
\r\n );\r\n }\r\n return this.props.children;\r\n }\r\n}\r\n\r\nexport default withRouter(ErrorBoundary);","import React, { useState, useEffect } from \"react\";\r\nimport Suggestions from \"./Suggestions/Suggestions\";\r\nimport ErrorBoundary from \"../Errorlog/ErrorBoundary\";\r\nimport axios from \"axios\";\r\nimport { loginRequest } from \"../../authConfig\";\r\nimport { useMsal } from \"@azure/msal-react\";\r\nimport Tooltip from \"@material-ui/core/Tooltip\";\r\nimport UserStore from \"../../UserStore\";\r\nimport {\r\n TextField,\r\n Checkbox,\r\n FormGroup,\r\n FormControlLabel,\r\n} from \"@material-ui/core\";\r\nimport \"./SearchBar.scss\";\r\n\r\nexport default function SearchBar(props) {\r\n let [q, setQ] = useState(\"\");\r\n let [suggestions, setSuggestions] = useState([]);\r\n let [showSuggestions, setShowSuggestions] = useState(false);\r\n const { instance, accounts } = useMsal();\r\n\r\n // eslint-disable-next-line\r\n const [uriError, setUriError] = useState(false);\r\n const [isSelectedcheckbob, setisSelectedcheckbob] = useState(UserStore.isSelectedcheckbob);\r\n let [accountsValue] = accounts;\r\n const API_endpoint = process.env.REACT_APP_API_ENDPOINT;\r\n // eslint-disable-next-line\r\n\r\n const onSearchHandler = () => {\r\n if((window.location.href).includes(\"search?q\")) {\r\n props.setFilters([]);\r\n }\r\n props.postSearchHandler(document.getElementById(\"search-box\").value);\r\n setShowSuggestions(false);\r\n };\r\n\r\n const suggestionClickHandler = (s) => {\r\n document.getElementById(\"search-box\").value = s;\r\n setShowSuggestions(false);\r\n props.postSearchHandler(s);\r\n };\r\n\r\n const onEnterButton = (event) => {\r\n if (event.keyCode === 13) {\r\n onSearchHandler();\r\n }\r\n };\r\n\r\n const onChangeHandler = () => {\r\n var searchTerm = document.getElementById(\"search-box\").value;\r\n setQ(searchTerm);\r\n if(searchTerm === null || searchTerm === undefined ||searchTerm.length === 0) {\r\n setisSelectedcheckbob(false);\r\n UserStore.setisSelectedcheckbox(false);\r\n }\r\n setShowSuggestions(true);\r\n // use this prop if you want to make the search more reactive\r\n if (props.searchChangeHandler) {\r\n props.searchChangeHandler(searchTerm);\r\n }\r\n };\r\n\r\n async function suggestionsCall() {\r\n // Silently acquires an access token which is then attached to a request for MS Graph data\r\n const response = await instance.acquireTokenSilent({\r\n ...loginRequest,\r\n scopes: [process.env.REACT_APP_API_SCOPE],\r\n account: accountsValue,\r\n });\r\n const accessToken = response.accessToken;\r\n\r\n const config = {\r\n headers: { Authorization: `Bearer ${accessToken}` },\r\n };\r\n\r\n const res = await axios.get(\r\n API_endpoint + `/GetKmSuggestions?searchText=${q}`,\r\n config\r\n );\r\n setSuggestions(res.data.value.results);\r\n }\r\n\r\n useEffect(\r\n (_) => {\r\n const timer = setTimeout(() => {\r\n if (q === \"\") {\r\n setSuggestions([]);\r\n } else {\r\n suggestionsCall();\r\n }\r\n }, 300);\r\n return () => clearTimeout(timer);\r\n // eslint-disable-next-line\r\n },\r\n [q, props, accountsValue]\r\n );\r\n\r\n var suggestionDiv;\r\n if (showSuggestions) {\r\n suggestionDiv = (\r\n suggestionClickHandler(s)}\r\n >\r\n );\r\n } else {\r\n suggestionDiv =
;\r\n }\r\n const handleChange = () => {\r\n setisSelectedcheckbob(!isSelectedcheckbob);\r\n UserStore.setisSelectedcheckbox(!isSelectedcheckbob);\r\n const chaneValue = !isSelectedcheckbob;\r\n if(chaneValue) {\r\n document.getElementById(\"search-box\").value = `\"${document.getElementById(\"search-box\").value}\"`\r\n }else{\r\n document.getElementById(\"search-box\").value= document.getElementById(\"search-box\").value.replace(/\"/g,'')\r\n }\r\n\r\n var searchTerm = document.getElementById(\"search-box\").value;\r\n setQ(searchTerm);\r\n // use this prop if you want to make the search more reactive\r\n if (props.searchChangeHandler) {\r\n props.searchChangeHandler(searchTerm);\r\n }\r\n };\r\n return (\r\n \r\n
\r\n
onEnterButton(e)}>\r\n \r\n \r\n \r\n
\r\n Please type to search for documents} arrow>\r\n setShowSuggestions(false)}\r\n onClick={() => {\r\n setShowSuggestions(true);\r\n }}\r\n InputProps={{ disableUnderline: true }}\r\n >\r\n \r\n\r\n \r\n
\r\n \r\n }\r\n className='ExactLabel'\r\n label=\"Exact\"\r\n style={{ 'margin-bottom': \"0em\"}}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n {suggestionDiv}\r\n
\r\n
\r\n
\r\n );\r\n}\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { useMsal } from \"@azure/msal-react\";\r\nimport { callMsGraph } from \"../../graph\";\r\nimport { loginRequest } from \"../../authConfig\";\r\nimport { profilePic } from \"../../profilePic\";\r\nimport UserStore from \"../../UserStore\";\r\nimport Tooltip from \"@material-ui/core/Tooltip\";\r\nimport { useIdleTimer } from \"react-idle-timer\";\r\nimport \"./AppHeader.scss\";\r\nimport { v4 as uuidv4 } from \"uuid\";\r\nimport axios from \"axios\";\r\nimport Modal from \"react-bootstrap/Modal\";\r\nimport IconButton from \"@material-ui/core/IconButton\";\r\nimport CloseIcon from \"@material-ui/icons/Close\";\r\n\r\n//sougata's changes\r\n\r\nimport { ToastProvider } from \"react-toast-notifications\";\r\nimport SearchBar from \"../../components/SearchBar/SearchBar\";\r\n\r\nexport default function AppHeader(props) {\r\n const noWrapCss = {\r\n paddingTop: \"-1%\",\r\n flexWrap:'nowrap'\r\n }\r\n const wrapCss = {\r\n paddingTop: \"-1%\",\r\n flexWrap:'wrap'\r\n }\r\n const history = useHistory();\r\n const { instance, accounts } = useMsal();\r\n let [accountsValue] = accounts;\r\n let graphData,\r\n theImage,\r\n accessToken = \"\",\r\n config = \"\";\r\n const timeout = 1800000; /* 5 minutes in milli seconds - 300000, 1800000 for 30 minutes */\r\n const [remaining, setRemaining] = useState(timeout);\r\n const [elapsed, setElapsed] = useState(0);\r\n const [lastActive, setLastActive] = useState(+new Date());\r\n const [isIdle, setIsIdle] = useState(false);\r\n const [show, setShow] = useState(false);\r\n const APIEndpoint = process.env.REACT_APP_API_ENDPOINT;\r\n\r\n const handleLogout = async () => {\r\n // calling api for concurrent session management;\r\n const options = {\r\n UserId: localStorage.getItem(\"userEmail\"),\r\n UniqueSessionCode: localStorage.getItem(\"uuid\"),\r\n ApplicationName: \"KM\",\r\n };\r\n\r\n \r\n\r\n const response = await instance.acquireTokenSilent({\r\n ...loginRequest,\r\n scopes: [process.env.REACT_APP_API_SCOPE],\r\n account: accountsValue,\r\n });\r\n config = {\r\n headers: { Authorization: `Bearer ${response.accessToken}` },\r\n };\r\n\r\n const res = await axios.post(\r\n APIEndpoint + `/LogoutSessionTable`,\r\n options,\r\n config\r\n );\r\n localStorage.removeItem(\"uuid\");\r\n instance.logoutRedirect({ postLogoutRedirectUri: \"/\" });\r\n };\r\n\r\n const {\r\n reset,\r\n pause,\r\n resume,\r\n getRemainingTime,\r\n getLastActiveTime,\r\n getElapsedTime,\r\n } = useIdleTimer({\r\n timeout,\r\n onIdle: handleLogout,\r\n });\r\n\r\n useEffect(() => {\r\n setRemaining(getRemainingTime());\r\n setLastActive(getLastActiveTime());\r\n setElapsed(getElapsedTime());\r\n\r\n setInterval(() => {\r\n setRemaining(getRemainingTime());\r\n setLastActive(getLastActiveTime());\r\n setElapsed(getElapsedTime());\r\n }, 1000);\r\n }, []);\r\n\r\n const navigateToHome = () => {\r\n history.push(\"/\");\r\n };\r\n\r\n useEffect(() => {\r\n if (accountsValue) {\r\n localStorage.setItem(\"userEmail\", accountsValue.username);\r\n apigraph();\r\n UserStore.setLoggedInUser(accountsValue.name);\r\n }\r\n // eslint-disable-next-line\r\n }, [accountsValue]);\r\n\r\n const validateSession = async (options) => {\r\n const response = await instance.acquireTokenSilent({\r\n ...loginRequest,\r\n scopes: [process.env.REACT_APP_API_SCOPE],\r\n account: accountsValue,\r\n });\r\n config = {\r\n headers: { Authorization: `Bearer ${response.accessToken}` },\r\n };\r\n const res = await axios.post(\r\n APIEndpoint + `/ValidateSessionTable`,\r\n options,\r\n config\r\n );\r\n\r\n if (res.data === false) {\r\n handleLogout();\r\n } else setTime(10000);\r\n };\r\n /* validate if user session is active or not every 20 secs */\r\n\r\n useEffect(() => {\r\n const interval = setInterval(() => {\r\n const options = {\r\n UserId: localStorage.getItem(\"userEmail\"),\r\n UniqueSessionCode: localStorage.getItem(\"uuid\"),\r\n ApplicationName: \"KM\",\r\n };\r\n\r\n validateSession(options);\r\n }, 10000);\r\n return () => clearInterval(interval);\r\n }, []);\r\n\r\n const [time, setTime] = useState(10000);\r\n\r\n const handleClose = () => {\r\n setShow(false);\r\n };\r\n\r\n useEffect(() => {\r\n if (remaining <= 60000 && remaining > 1) {\r\n setShow(true);\r\n }\r\n if (remaining <= 1 || remaining > 60000) {\r\n setShow(false);\r\n // if(remaining <= 1) {\r\n // handleLogout();\r\n // }\r\n }\r\n }, [remaining]);\r\n\r\n async function apigraph() {\r\n // Silently acquires an access token which is then attached to a request for MS Graph data\r\n const res = await instance.acquireTokenSilent({\r\n ...loginRequest,\r\n // scopes: [process.env.REACT_APP_API_SCOPE],\r\n account: accountsValue,\r\n });\r\n accessToken = res.accessToken;\r\n config = {\r\n headers: { Authorization: `Bearer ${accessToken}` },\r\n };\r\n if (localStorage.getItem(\"uuid\") === null) {\r\n let myuuid = uuidv4();\r\n localStorage.setItem(\"uuid\", myuuid);\r\n const res = await instance.acquireTokenSilent({\r\n ...loginRequest,\r\n scopes: [process.env.REACT_APP_API_SCOPE],\r\n account: accountsValue,\r\n });\r\n config = {\r\n headers: { Authorization: `Bearer ${res.accessToken}` },\r\n };\r\n\r\n const options = {\r\n UserId: localStorage.getItem(\"userEmail\"),\r\n UniqueSessionCode: localStorage.getItem(\"uuid\"),\r\n ApplicationName: \"KM\",\r\n };\r\n\r\n // calling api for concurrent session management;\r\n\r\n const result = axios.post(\r\n APIEndpoint + `/LoginSessionTable`,\r\n options,\r\n config\r\n );\r\n }\r\n\r\n theImage = await profilePic(res.accessToken);\r\n graphData = await callMsGraph(res.accessToken);\r\n\r\n const reader = new FileReader();\r\n const preview = document.querySelector(\".navbar-logo\");\r\n if (theImage.ok === true) {\r\n reader.addEventListener(\r\n \"load\",\r\n function () {\r\n // convert image file to base64 string\r\n preview.src = reader.result;\r\n },\r\n false\r\n );\r\n\r\n if (graphData) {\r\n reader.readAsDataURL(graphData);\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 {\"session will be expired in 60 seconds.\"}\r\n \r\n {\" \"}\r\n {\" \"}\r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n","import { graphConfig } from \"./authConfig\";\r\n\r\n/**\r\n * Attaches a given access token to a MS Graph API call. Returns information about the user\r\n * @param accessToken \r\n */\r\nexport async function profilePic(accessToken) {\r\n const headers = new Headers();\r\n const bearer = `Bearer ${accessToken}`;\r\n\r\n headers.append(\"Authorization\", bearer);\r\n headers.append(\"Content-Type\", \"application/json\");\r\n headers.append(\"Accept\", \"application/json\");\r\n\r\n const options = {\r\n method: \"GET\",\r\n headers: headers\r\n };\r\n\r\n //graph profile pic API\r\n return fetch(graphConfig.graphProfiePicEndpoint, options)\r\n .then(response => response);\r\n}\r\n","import { graphConfig } from \"./authConfig\";\r\n\r\n/**\r\n * Attaches a given access token to a MS Graph API call. Returns information about the user\r\n * @param accessToken \r\n */\r\nexport async function callMsGraph(accessToken) {\r\n const headers = new Headers();\r\n const bearer = `Bearer ${accessToken}`;\r\n\r\n headers.append(\"Authorization\", bearer);\r\n headers.append(\"Content-Type\", \"application/json\");\r\n headers.append(\"Accept\", \"application/json\");\r\n\r\n const options = {\r\n method: \"GET\",\r\n headers: headers\r\n };\r\n\r\n //graph me API\r\n // return fetch(graphConfig.graphMeEndpoint, options)\r\n // .then(response => response.json())\r\n // .catch(error => console.log(error));\r\n\r\n //graph profile pic API\r\n return fetch(graphConfig.graphProfiePicEndpoint, options)\r\n .then(response => response.blob());\r\n\r\n //graph get users API\r\n// return fetch(graphConfig.graphGetUsersEndpoint, options)\r\n// .then(response => response.json())\r\n// .catch(error => console.log(error));\r\n}\r\n","import React, { useEffect, useState } from 'react';\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { AuthenticatedTemplate, UnauthenticatedTemplate, useMsal } from \"@azure/msal-react\";\r\nimport AppHeader from '../../components/AppHeader/AppHeader';\r\nimport SearchBar from '../../components/SearchBar/SearchBar';\r\nimport ErrorBoundary from '../../components/Errorlog/ErrorBoundary';\r\nimport { loginRequest } from \"../../authConfig\";\r\nimport { ToastProvider } from 'react-toast-notifications';\r\nimport UserStore from '../../UserStore';\r\n\r\nimport axios from 'axios';\r\n\r\nimport \"./Home.scss\";\r\nimport \"../../pages/Search/Search.scss\";\r\nimport { Button } from \"@material-ui/core\";\r\nimport { Row } from 'react-bootstrap';\r\n\r\nexport default function Home() {\r\n const history = useHistory(); \r\n const { instance, accounts } = useMsal();\r\n let [accountsValue] = accounts;\r\n const [globalAdmin, setGlobalAdmin] = useState(false);\r\n const API_endpoint = process.env.REACT_APP_API_ENDPOINT;\r\n UserStore.setisSelectedcheckbox(false);\r\n const navigateToSearchPage = (q) => {\r\n let space = q.split(\" \");\r\n\r\n if (!q || q === '' || q === ' ' || space.length === q.length) {\r\n q = '*'\r\n }\r\n history.push('/search?q=' + q);\r\n UserStore.setInitialQ(q);\r\n }\r\n\r\n useEffect(() => {\r\n if(accountsValue) { checkGlobalAdmin(); }\r\n //eslint-disable-next-line \r\n }, [accountsValue]);\r\n\r\n const Login = () => {\r\n const { instance } = useMsal();\r\n\r\n instance.loginRedirect(loginRequest).catch(e => {\r\n // console.log(e);\r\n });\r\n }\r\n \r\n function navigateToRegexPage() {\r\n history.push('/regex');\r\n }\r\n\r\n // --------------------------Start:Funtion: check logged in user is global admin------------------\r\n async function checkGlobalAdmin() {\r\n // Silently acquires an access token which is then attached to a request for MS Graph data\r\n const response = await instance.acquireTokenSilent({\r\n ...loginRequest,\r\n scopes: [process.env.REACT_APP_API_SCOPE],\r\n account: accountsValue\r\n });\r\n const accessToken = response.accessToken;\r\n\r\n const config = {\r\n headers: { Authorization: `Bearer ${accessToken}` }\r\n };\r\n\r\n const res = await axios.get(API_endpoint + `/IsUserKmGlobalAdmin`, config);\r\n setGlobalAdmin(res.data);\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 \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
\r\n\r\n \r\n \r\n \r\n
\r\n );\r\n};\r\n","import React, { useState, useEffect } from \"react\";\r\nimport {decode} from 'html-entities';\r\nimport Tooltip from '@material-ui/core/Tooltip';\r\nimport Highlighter from \"react-highlight-words\";\r\nimport {TextField } from \"@material-ui/core\";\r\n\r\nexport default function SearchTranscript(props) {\r\n // eslint-disable-next-line\r\n const [initalSearchTag, setInitalSearchTag] = useState(props.q.trim());\r\n const [searchtext, setSearchtext] = useState('');\r\n const [searchTags, setSearchTags] = useState([]);\r\n const [isActive, setActive] = useState(true);\r\n const [isActiveTranscript, setActiveTranscript] = useState(true);\r\n\r\n if(props.selectedTab === 1) {\r\n props.renderTranscript(searchTags);\r\n }\r\n\r\n useEffect(() => {\r\n if((initalSearchTag.startsWith(\"\\\"\") && initalSearchTag.endsWith(\"\\\"\"))) {\r\n // searchTags.push(initalSearchTag.substring(1, initalSearchTag.length-1));\r\n if(initalSearchTag.search(/\\bAND\\b/) > 0 || initalSearchTag.search(/\\bOR\\b/) > 0 || initalSearchTag.search(/\\bNOT\\b/) > 0){\r\n if(initalSearchTag.search(/\\bAND\\b/) > 0 || initalSearchTag.search(/\\bOR\\b/) > 0){\r\n const valueOfAndOr =initalSearchTag.replace(/\"/g,'regexOperator').replace(new RegExp(\"\\\\bAND\\\\b\"), \"regexOperator\").replace(new RegExp(\"\\\\bOR\\\\b\"), \"regexOperator\").toLowerCase().split(\"regexoperator\");\r\n for(let index in valueOfAndOr) {\r\n valueOfAndOr[index] = valueOfAndOr[index].trim();\r\n }\r\n setSearchTags(valueOfAndOr.filter(function (obj) { \r\n return !['',' ',null, undefined].includes(obj) \r\n }));\r\n }else{\r\n const valueOfNot = initalSearchTag.replace(/\"/g,'regexOperator').split(\"NOT\")[0].toLowerCase().split(\"regexoperator\");\r\n for(let index in valueOfNot) {\r\n valueOfNot[index] = valueOfNot[index].trim();\r\n }\r\n setSearchTags(valueOfNot.filter(function (obj) {\r\n return !['',' ',null, undefined].includes(obj) }));\r\n }\r\n }else {\r\n const searchWord = initalSearchTag.substring(1, initalSearchTag.length-1).trim();\r\n searchTags.push(searchWord);\r\n }\r\n } else {\r\n setSearchTags(initalSearchTag.replace(/[\"']/g, '').split(\" \"));\r\n }\r\n // eslint-disable-next-line\r\n }, []);\r\n\r\n const onEnterButton = (event) => {\r\n if (event.keyCode === 13) {\r\n searchChange();\r\n }\r\n }\r\n\r\n function onChangeHandler () {\r\n setActiveTranscript(true);\r\n var searchTerm = document.getElementById(\"searchbox\").value;\r\n setSearchtext(searchTerm);\r\n }\r\n\r\n const searchChange = (e) => {\r\n if(searchtext.length) {\r\n setSearchTags(searchtext.split(' '));\r\n } \r\n }\r\n\r\n const searchTagHandler = (tag) => {\r\n setActiveTranscript(true);\r\n const searchIndex = searchTags.indexOf(tag);\r\n if(searchIndex === -1) {\r\n let array = decode(tag.target.innerHTML).replace(/[\\n\\t\\s]+/g, \" \").split(\" \");\r\n array = array.filter(function(str) {\r\n return /\\S/.test(str);\r\n });\r\n setSearchTags(array);\r\n }\r\n }\r\n\r\n const findChunksSearch = ({\r\n autoEscape,\r\n caseSensitive,\r\n sanitize,\r\n searchWords,\r\n textToHighlight\r\n }) => {\r\n const chunks = [];\r\n const textLow = textToHighlight.toLowerCase();\r\n const sep = /[\\s~`!@#$%^&*()-_+=\\{\\}\\[\\]|\\\\:;\"'<,\\/>.?]/;\r\n const singleTextWords = textLow.split(sep);\r\n\r\n // It could be possible that there are multiple spaces between words\r\n // Hence we store the index (position) of each single word with textToHighlight\r\n let fromIndex = 0;\r\n const singleTextWordsWithPos = singleTextWords.map(s => {\r\n const indexInWord = textLow.indexOf(s, fromIndex);\r\n fromIndex = indexInWord;\r\n return {\r\n word: s,\r\n index: indexInWord\r\n };\r\n });\r\n\r\n // Add chunks for every searchWord\r\n searchWords.forEach(sw => {\r\n const swLow = sw.toLowerCase();\r\n // Do it for every single text word\r\n singleTextWordsWithPos.forEach(s => {\r\n if (s.word === swLow) {\r\n const start = s.index;\r\n const end = s.index + swLow.length;\r\n chunks.push({\r\n start,\r\n end\r\n });\r\n }\r\n });\r\n\r\n // The complete word including whitespace should also be handled\r\n if(swLow.split(\" \").length > 1) {\r\n for(let index in textLow) {\r\n let start = parseInt(index);\r\n let end = parseInt(index) + swLow.length;\r\n let sub = textLow.substring(start,end);\r\n let remain = textLow.substring(start,end+1);\r\n if(sub === swLow && (/[^a-zA-Z0-9]/.test( remain[remain.length - 1] ))) {\r\n chunks.push({\r\n start,\r\n end\r\n });\r\n }\r\n }\r\n }\r\n });\r\n\r\n\r\n return chunks;\r\n };\r\n\r\n let doc = props.documented.metadata_storage_file_extension_lower;\r\n let isCAD = (doc === '.dwg' || doc === '.dgn' || doc === '.DWG' || doc === '.DGN');\r\n let transcriptContent = isCAD ? props.documented.dwg_dgn_content : props.documented.translated_content;\r\n let highlightContent = transcriptContent ? transcriptContent : \"\";\r\n\r\n let newContent = [];\r\n if(searchTags[0] !== '*') {\r\n if(highlightContent) {\r\n if(searchTags.length === 1) {\r\n let splitedContent = highlightContent.toLowerCase().split(searchTags[0].toLowerCase(), Number.MAX_SAFE_INTEGER);\r\n if(splitedContent.length > 0) {\r\n if(splitedContent[0] === highlightContent.toLowerCase()) {\r\n splitedContent = [];\r\n }\r\n if(splitedContent.length > 1) {\r\n splitedContent.splice(0, 1);\r\n }\r\n for(let i=0; i 0) {\r\n if(splitedContent[0] === highlightContent.toLowerCase()) {\r\n splitedContent = [];\r\n }\r\n if(splitedContent.length > 1) {\r\n splitedContent.splice(0, 1);\r\n }\r\n for(let i=0; i 10) {\r\n three = lessThan20Words[i] + lessThan20Words[i+1] + lessThan20Words[i+2] + lessThan20Words[i+3] + lessThan20Words[i+4] + lessThan20Words[i+5]; \r\n } else {\r\n three = lessThan20Words[i] + lessThan20Words[i+1] + lessThan20Words[i+2];\r\n }\r\n threeMerge.push(three);\r\n }\r\n // eslint-disable-next-line\r\n transcriptBoxes = [...threeMerge, ...moreThan20Words];\r\n }\r\n\r\n let showTranscriptLess = transcriptBoxes.slice(0, 15);\r\n let showTranscriptMore = transcriptBoxes;\r\n let showTrancript = isActiveTranscript ? showTranscriptLess : showTranscriptMore; \r\n\r\n const expandSeemoreTranscript = () => {\r\n setActiveTranscript(!isActiveTranscript);\r\n };\r\n\r\n let showTagsLess = props.keyphrases.slice(0, 15);\r\n let showTagsMore = props.keyphrases;\r\n let showTags = isActive ? showTagsLess : showTagsMore;\r\n\r\n let tagList = showTags.map(function(name){\r\n return
\r\n searchTagHandler(e)}>{name}\r\n
\r\n })\r\n\r\n const expandSeemore = () => {\r\n setActive(!isActive);\r\n };\r\n\r\n const paraChunkSmall = {\r\n maxHeight: \"3vw !important\",\r\n minHeight: \"3vw !important\",\r\n }\r\n\r\n const paraChunkBig = {\r\n maxHeight: \"6vw !important\",\r\n minHeight: \"6vw !important\",\r\n }\r\n\r\n return(\r\n
\r\n
\r\n Please type keywords to search in transcript} arrow>\r\n onEnterButton(e)}\r\n onChange={onChangeHandler}\r\n InputProps={{ disableUnderline: true }}\r\n >\r\n \r\n
\r\n \r\n
\r\n
\r\n {/* Occurences: {occurences} */}\r\n Keyphrases\r\n
\r\n {tagList.length ? tagList : Keyphrases are not available for this document.}\r\n {props.keyphrases.length > 15 && {isActive ? see more... : see less...}}\r\n
\r\n
\r\n {highlightContent ? \r\n showTrancript.map((para, key) => (\r\n \r\n )) :\r\n Transcript is not available for this document.\r\n }\r\n {newContent.length > 15 && {isActiveTranscript ? see more... : see less...}}\r\n
\r\n
\r\n )\r\n}","import React, { useState, useEffect, useRef } from \"react\";\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport axios from 'axios';\r\nimport Highlighter from \"react-highlight-words\";\r\nimport DocViewer, { DocViewerRenderers } from \"react-doc-viewer\";\r\nimport saveAs from \"file-saver\";\r\nimport { withStyles, makeStyles } from '@material-ui/core/styles';\r\nimport Table from '@material-ui/core/Table';\r\nimport TableBody from '@material-ui/core/TableBody';\r\nimport TableCell from '@material-ui/core/TableCell';\r\nimport TableContainer from '@material-ui/core/TableContainer';\r\nimport TableRow from '@material-ui/core/TableRow';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport moment from 'moment';\r\nimport { loginRequest } from \"../../authConfig\";\r\nimport { useMsal } from \"@azure/msal-react\";\r\nimport ErrorBoundary from '../../components/Errorlog/ErrorBoundary';\r\nimport { getAppInsights } from '../../TelemetryService';\r\nimport UserStore from '../../UserStore';\r\nimport Tooltip from '@material-ui/core/Tooltip';\r\nimport SearchTranscript from './SearchTranscript/SearchTranscript';\r\nimport { observer } from \"mobx-react-lite\";\r\nimport WebViewer from '@pdftron/webviewer';\r\nimport \"./Details.scss\";\r\nimport { Col, Row } from \"react-bootstrap\";\r\n\r\nconst StyledTableCell = withStyles((theme) => ({\r\n head: {\r\n backgroundColor: theme.palette.common.black,\r\n color: theme.palette.common.white,\r\n },\r\n body: {\r\n fontSize: 14,\r\n },\r\n}))(TableCell);\r\n\r\nconst StyledTableRow = withStyles((theme) => ({\r\n root: {\r\n '&:nth-of-type(odd)': {\r\n backgroundColor: theme.palette.action.hover,\r\n },\r\n },\r\n}))(TableRow);\r\n\r\nconst useStyles = makeStyles({\r\n table: {\r\n minWidth: 500,\r\n },\r\n});\r\n\r\nfunction Details(props) {\r\n // eslint-disable-next-line\r\n const [initalSearchTag, setInitalSearchTag] = useState(props.q.trim());\r\n const classes = useStyles();\r\n const [documented, setDocument] = useState({});\r\n const [selectedTab, setTab] = useState(0);\r\n const [isLoading, setIsLoading] = useState(true);\r\n const { instance, accounts } = useMsal();\r\n const [sasLink, setSasLink] = useState('');\r\n const [docs, setDocs] = useState([]);\r\n const [noRenderer, setNoRenderer] = useState(false);\r\n const [XMLData, setXMLData] = useState('');\r\n const [updateRender, setUpdateRender] = useState([]);\r\n const [CADloader, setCADloader] = useState(true);\r\n let [accountsValue] = accounts;\r\n const API_endpoint = process.env.REACT_APP_API_ENDPOINT;\r\n\r\n useEffect(() => {\r\n setDocument(props.detailsDoc);\r\n setIsLoading(false);\r\n setTimeout(() => {\r\n if(document.getElementById('no-renderer')) {\r\n setNoRenderer(true);\r\n }\r\n }, 2000);\r\n XMLparse(); \r\n // eslint-disable-next-line\r\n }, [noRenderer, sasLink, XMLData, updateRender]);\r\n\r\n useEffect(() => {\r\n if((initalSearchTag.startsWith(\"\\\"\") && initalSearchTag.endsWith(\"\\\"\"))) {\r\n updateRender.push(initalSearchTag.substring(1, initalSearchTag.length-1));\r\n } else {\r\n setUpdateRender(initalSearchTag.replace(/[\"']/g, '').split(\" \"));\r\n }\r\n // eslint-disable-next-line\r\n }, []);\r\n\r\n let path = documented.metadata_storage_path;\r\n\r\n async function generateSasToken() {\r\n const response = await instance.acquireTokenSilent({\r\n ...loginRequest,\r\n scopes: [process.env.REACT_APP_API_SCOPE],\r\n account: accountsValue\r\n });\r\n\r\n const accessToken = response.accessToken;\r\n console.log(\"access Token:-\",accessToken);\r\n const config = {\r\n headers: { Authorization: `Bearer ${accessToken}` }\r\n };\r\n\r\n if(path) {\r\n let res = await axios.get(\r\n API_endpoint + `/GenerateKmSasToken?fileStoragePath=${encodeURIComponent(path)}`, config\r\n );\r\n setSasLink(res.data);\r\n setDocs([{ uri: res.data }]);\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n generateSasToken();\r\n //eslint-disable-next-line\r\n }, [documented, accountsValue]);\r\n\r\n function downloadFile () {\r\n let docID = documented.document_id;\r\n let loggedInUser = UserStore.loggedInUser;\r\n getAppInsights().trackEvent({name: \"Click\", \r\n properties: {\r\n SearchServiceName: process.env.REACT_APP_SEARCH_SERVICE_NAME,\r\n ClickedDocId: docID,\r\n Action: \"Download\",\r\n Userid: loggedInUser\r\n }\r\n });\r\n\r\n if (path != null) {\r\n let link = sasLink;\r\n let fileName = documented.metadata_storage_name;\r\n axios({\r\n url: link, \r\n method: \"GET\",\r\n responseType: \"blob\"\r\n }).then(response => {\r\n var blob = new Blob([response.data], {\r\n type: \"text/plain;charset=utf-8\"\r\n });\r\n saveAs(blob, fileName);\r\n });\r\n }\r\n }\r\n\r\n async function XMLparse() {\r\n var docType = documented.metadata_storage_file_extension_lower;\r\n\r\n if(docType === '.xml' || docType === '.XML') {\r\n let response = await axios.get(sasLink, {\r\n \"Content-Type\": \"application/xml; charset=utf-8\"\r\n });\r\n setXMLData(response.data);\r\n }\r\n }\r\n\r\n const renderTranscript = (searchTags) => {\r\n setUpdateRender(searchTags);\r\n }\r\n\r\n const viewer = useRef(null);\r\n\r\n const findChunksSearch = ({\r\n autoEscape,\r\n caseSensitive,\r\n sanitize,\r\n searchWords,\r\n textToHighlight\r\n }) => {\r\n const chunks = [];\r\n const textLow = textToHighlight.toLowerCase();\r\n const sep = /[\\s~`!@#$%^&*()-_+=\\{\\}\\[\\]|\\\\:;\"'<,\\/>.?]/;\r\n const singleTextWords = textLow.split(sep);\r\n\r\n // It could be possible that there are multiple spaces between words\r\n // Hence we store the index (position) of each single word with textToHighlight\r\n let fromIndex = 0;\r\n const singleTextWordsWithPos = singleTextWords.map(s => {\r\n const indexInWord = textLow.indexOf(s, fromIndex);\r\n fromIndex = indexInWord;\r\n return {\r\n word: s,\r\n index: indexInWord\r\n };\r\n });\r\n\r\n // Add chunks for every searchWord\r\n searchWords.forEach(sw => {\r\n const swLow = sw.toLowerCase();\r\n // Do it for every single text word\r\n singleTextWordsWithPos.forEach(s => {\r\n if (s.word === swLow) {\r\n const start = s.index;\r\n const end = s.index + swLow.length;\r\n chunks.push({\r\n start,\r\n end\r\n });\r\n }\r\n });\r\n\r\n // The complete word including whitespace should also be handled\r\n if(swLow.split(\" \").length > 1) {\r\n for(let index in textLow) {\r\n let start = parseInt(index);\r\n let end = parseInt(index) + swLow.length;\r\n let sub = textLow.substring(start,end);\r\n let remain = textLow.substring(start,end+1);\r\n if(sub === swLow && (/[^a-zA-Z0-9]/.test( remain[remain.length - 1] ))) {\r\n chunks.push({\r\n start,\r\n end\r\n });\r\n }\r\n }\r\n }\r\n });\r\n\r\n\r\n return chunks;\r\n };\r\n\r\n\r\n // PDFTron useEffect\r\n useEffect(() => {\r\n if (WebViewer && viewer && viewer.current) {\r\n setCADloader(true);\r\n\r\n\r\n WebViewer(\r\n {\r\n path: '/webviewer/lib',\r\n // webviewerServerURL: 'https://cad-previewer.azurewebsites.net',\r\n webviewerServerURL: process.env.REACT_APP_PDFTRON_SERVER_URL,\r\n initialDoc: sasLink,\r\n licenseKey: process.env.REACT_APP_PDFTRON_LICENSE_KEY,\r\n },\r\n viewer.current,\r\n ).then((instance) => {\r\n \r\n const { annotationManager, documentViewer, Annotations, DocumentViewer,Search } = instance.Core;\r\n // const cadOpts = new instance.Core.PDFNet.Convert.CADConvertOptions();\r\n // cadOpts.setZoomToExtents(false);\r\n //instance.loadDocument(sasLink,{ cadOptions: cadOpts });\r\n const searchListener = (searchPattern, options, results) => {\r\n // add redaction annotation for each search result\r\n const newAnnotations = results.map(result => {\r\n const annotation = new Annotations.RedactionAnnotation();\r\n annotation.PageNumber = result.pageNum;\r\n annotation.Quads = result.quads.map(quad => quad.getPoints());\r\n annotation.StrokeColor = new Annotations.Color(\"#0000ffff\");\r\n return annotation;\r\n });\r\n \r\n annotationManager.addAnnotations(newAnnotations);\r\n annotationManager.drawAnnotationsFromList(newAnnotations);\r\n };\r\n let wholeword = false;\r\n let regexOperator = \"\";\r\n \r\n documentViewer.addEventListener('documentLoaded', () => {\r\n \r\n let searchPattern = props.q;\r\n\r\n // searchPattern can be something like \"search*m\" with \"wildcard\" option set to true\r\n // searchPattern can be something like \"search1|search2\" with \"regex\" option set to true\r\n let searchTag = [];\r\n if(searchPattern !== '*') {\r\n // eslint-disable-next-line\r\n searchPattern = searchPattern.trim();\r\n if((searchPattern.startsWith(\"\\\"\") && searchPattern.endsWith(\"\\\"\"))) {\r\n if(searchPattern.search(/\\bAND\\b/) > 0 || searchPattern.search(/\\bOR\\b/) > 0 || searchPattern.search(/\\bNOT\\b/) > 0){\r\n if(searchPattern.search(/\\bAND\\b/) > 0 || searchPattern.search(/\\bOR\\b/) > 0){\r\n searchTag = searchPattern.replace(new RegExp(/\\bAND\\b/), \"regexOperator\").replace(new RegExp(/\\bOR\\b/), \"regexOperator\").replace(/\"/g,'regexOperator').toLowerCase().split(\"regexoperator\");\r\n for(let index in searchTag) {\r\n searchTag[index] = searchTag[index].trim();\r\n }\r\n searchTag = searchTag.filter(function (obj) { \r\n // obj = obj.trim();\r\n return !['',' ',null, undefined].includes(obj)\r\n });\r\n }else{\r\n searchTag = searchPattern.replace(/\"/g,'regexOperator').split(\"NOT\")[0].toLowerCase().split(\"regexoperator\");\r\n for(let index in searchTag) {\r\n searchTag[index] = searchTag[index].trim();\r\n }\r\n searchTag = searchTag.filter(function (obj) { \r\n obj = obj.trim();\r\n return !['',' ',null, undefined].includes(obj) });\r\n }\r\n }else {\r\n const searchWord = searchPattern.substring(1, searchPattern.length-1).trim();\r\n wholeword = true;\r\n searchTag.push(searchWord + \"\");\r\n }\r\n \r\n } else {\r\n // eslint-disable-next-line\r\n searchTag = searchPattern.toLowerCase().replace(/[\\n\\t\\s]+/, \" \").split(\" \");\r\n searchTag = searchTag.filter(function (obj) { return !['',' ',null, undefined].includes(obj) });\r\n \r\n }\r\n } else {\r\n searchTag = '';\r\n }\r\n \r\n\r\n \r\n\r\n if((searchPattern.startsWith(\"\\\"\") && searchPattern.endsWith(\"\\\"\"))) {\r\n searchPattern = searchPattern.slice(1,-1);\r\n }\r\n\r\n // options default values are false\r\n let searchOptions = {\r\n caseSensitive: false, // match case\r\n wholeWord: wholeword, // match whole words only\r\n wildcard: false, // allow using '*' as a wildcard value\r\n regex: true, // string is treated as a regular expression\r\n searchUp: false, // search from the end of the document upwards\r\n ambientString: true, // return ambient string as part of the result\r\n };\r\n \r\n instance.UI.addSearchListener(searchListener);\r\n \r\n // start search after document loads\r\n let pattern = \"\";\r\n if(searchTag.length > 0) {\r\n pattern = searchTag[0];\r\n for(let k in searchTag) {\r\n if(k > 0)\r\n pattern = pattern + \"|\" + searchTag[k];\r\n }\r\n }\r\n\r\n instance.UI.searchTextFull(pattern,searchOptions);\r\n instance.UI.disableElements(['annotationDeleteButton']);\r\n instance.UI.disableElements(['annotationStyleEditButton']);\r\n instance.UI.disableElements(['annotationCommentButton']);\r\n instance.UI.disableElements([\"panToolButton\"]);\r\n instance.UI.disableElements([\"stickyToolButton\"]);\r\n instance.UI.disableElements([\"highlightToolButton\"]);\r\n instance.UI.disableElements([\"freeHandToolButton\"]);\r\n instance.UI.disableElements([\"freeHandHighlightToolButton\"]);\r\n instance.UI.disableElements([\"freeTextToolButton\"]);\r\n instance.UI.overrideSearchExecution((searchTerm, options) => {\r\n if(searchTerm.charAt(searchTerm.length - 1) !== \"|\") {\r\n options.regex = true;\r\n instance.UI.searchTextFull(searchTerm,options)\r\n pattern = searchTerm;\r\n searchOptions = options\r\n }\r\n });\r\n instance.UI.searchTextFull(pattern,searchOptions);\r\n });\r\n\r\n documentViewer.setSearchHighlightColors({\r\n searchResult: 'rgba(255, 255, 0, 0.5)',\r\n activeSearchResult: 'rgba(255, 255, 0, 0.5)'\r\n });\r\n setCADloader(false);\r\n // const { documentViewer, DocumentViewer } = instance.Core;\r\n\r\n const fitWidth = () => {\r\n documentViewer.setFitMode(documentViewer.FitMode.FitWidth);\r\n };\r\n\r\n documentViewer.addEventListener(DocumentViewer.Events.DOCUMENT_LOADED, fitWidth);\r\n documentViewer.addEventListener(DocumentViewer.Events.PAGE_NUMBER_UPDATED, fitWidth);\r\n\r\n /* zoom for each page */\r\n instance.Core.documentViewer.getDisplayModeManager().setDisplayMode(new instance.Core.DisplayMode(instance.Core.documentViewer, 'Single'));\r\n instance.UI.disableElements(['ribbons']);\r\n instance.UI.disableElements(['toolsHeader']);\r\n\r\n instance.UI.setHeaderItems(header => {\r\n const items = header.getItems();\r\n const newItems = [items[0], items[1], items[2], items[3], items[4], items[9], items[11], items[12]];\r\n header.update(newItems);\r\n });\r\n }).catch((err) => {\r\n // console.log(err);\r\n })\r\n }\r\n // eslint-disable-next-line\r\n }, [viewer, sasLink, selectedTab]);\r\n\r\n // View default is loading with no active tab\r\n let detailsBody = (),\r\n FileStyle = \"nav-link\",\r\n metadataStyle = \"nav-link\",\r\n transcriptStyle = \"nav-link\";\r\n\r\n if (!isLoading && documented && path) {\r\n // View preview\r\n let doc = documented.metadata_storage_file_extension_lower;\r\n let isCAD = !(doc === '.xlsm' || doc === '.XLSM' || doc === '.xml' || doc === '.XML');\r\n // let isCAD = true;\r\n if (selectedTab === 0) {\r\n FileStyle += \" active\";\r\n\r\n detailsBody = (\r\n
\r\n
\r\n
\r\n Download the document} arrow>\r\n \"downloadFile\"\r\n \r\n
\r\n
\r\n {(isCAD && CADloader) && }\r\n {\r\n isCAD ?
:\r\n ( doc === '.xml' || doc === '.XML') ? \r\n {XMLData ? XMLData : } :\r\n \r\n \r\n }\r\n { (noRenderer && !isCAD) &&\r\n
Please use the download option to view file.
}\r\n
\r\n
\r\n
\r\n );\r\n }\r\n let transcriptContent = (doc === '.dwg' || doc === '.DWG' || doc === '.dgn' || doc === '.DGN') ? documented.dwg_dgn_content : documented.translated_content;\r\n let highlightContent = transcriptContent ? transcriptContent : \"\";\r\n \r\n // view transcript\r\n if (selectedTab === 1) {\r\n transcriptStyle += \" active\";\r\n detailsBody = (\r\n
\r\n {highlightContent ? \r\n :\r\n Transcript is not available for this document.}\r\n
\r\n )\r\n }\r\n\r\n function createData(name, data) {\r\n return { name, data };\r\n }\r\n\r\n const showKeyphrasesAsString = props.keyphrases.join(', ');\r\n\r\n const rows = [\r\n createData('File name', documented.metadata_storage_name ? documented.metadata_storage_name : \"NA\"),\r\n createData('Extension', documented.metadata_storage_file_extension_lower ? documented.metadata_storage_file_extension_lower : \"NA\"),\r\n createData('Created on', documented.metadata_creation_date ? moment(documented.metadata_creation_date).format('DD-MM-YYYY') : 'NA'),\r\n createData('Language', documented.language ? documented.language : \"NA\"),\r\n createData('Source', documented.metadata_storage_path? documented.metadata_storage_path : \"NA\"),\r\n createData('Keyphrases', documented.keyphrases.length ? showKeyphrasesAsString : \"Keyphrases are not available for this document.\")\r\n ];\r\n \r\n const table = (\r\n \r\n \r\n \r\n \r\n {rows.map((row) => (\r\n \r\n {row.name}\r\n {row.data}\r\n \r\n ))}\r\n \r\n
\r\n
\r\n );\r\n\r\n // View meta data\r\n if (selectedTab === 2) {\r\n metadataStyle += \" active\";\r\n detailsBody = (\r\n
\r\n {table}\r\n
\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 \r\n
\r\n {detailsBody}\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\nexport default observer(Details);","export default function getLanguage(language) {\r\n var lang;\r\n\r\n switch (language) {\r\n case \"ar\":\r\n lang = \"Arabic\";\r\n break;\r\n\r\n case \"af\":\r\n lang = \"Afrikaans\";\r\n break;\r\n\r\n case \"sq\":\r\n lang = \"Albanian\";\r\n break;\r\n\r\n case \"am\":\r\n lang = \"Amharic\";\r\n break;\r\n\r\n case \"hy\":\r\n lang = \"Armenian\";\r\n break;\r\n\r\n case \"as\":\r\n lang = \"Assamese\";\r\n break;\r\n\r\n case \"az\":\r\n lang = \"Azerbaijani\";\r\n break;\r\n\r\n case \"eu\":\r\n lang = \"Basque\";\r\n break;\r\n\r\n case \"be\":\r\n lang = \"Belarusian\";\r\n break;\r\n\r\n case \"bn\":\r\n lang = \"Bengali\";\r\n break;\r\n\r\n case \"bs\":\r\n lang = \"Bosnian\";\r\n break;\r\n\r\n case \"bg\":\r\n lang = \"Bulgarian\";\r\n break;\r\n\r\n case \"my\":\r\n lang = \"Burmese\";\r\n break;\r\n\r\n case \"ca\":\r\n lang = \"Catalan\";\r\n break;\r\n\r\n case \"km\":\r\n lang = \"Central Khmer\";\r\n break;\r\n\r\n case \"zh\":\r\n lang = \"Chinese\";\r\n break;\r\n\r\n case \"zh_chs\":\r\n lang = \"Chinese Simplified\";\r\n break;\r\n\r\n case \"zh_cht\":\r\n lang = \"Chinese Traditional\";\r\n break;\r\n\r\n case \"co\":\r\n lang = \"Corsican\";\r\n break;\r\n\r\n case \"hr\":\r\n lang = \"Croatian\";\r\n break;\r\n\r\n case \"cs\":\r\n lang = \"Czech\";\r\n break;\r\n\r\n case \"da\":\r\n lang = \"Danish\";\r\n break;\r\n\r\n case \"prs\":\r\n lang = \"Dari\";\r\n break;\r\n\r\n case \"dv\":\r\n lang = \"Divehi\";\r\n break;\r\n\r\n case \"nl\":\r\n lang = \"Dutch\";\r\n break;\r\n\r\n case \"en\":\r\n lang = \"English\";\r\n break;\r\n\r\n case \"eo\":\r\n lang = \"Esperanto\";\r\n break;\r\n\r\n case \"et\":\r\n lang = \"Esperanto\";\r\n break;\r\n\r\n case \"fj\":\r\n lang = \"Fijian\";\r\n break;\r\n\r\n case \"fi\":\r\n lang = \"Finnish\";\r\n break;\r\n\r\n case \"fr\":\r\n lang = \"French\";\r\n break;\r\n\r\n case \"gl\":\r\n lang = \"Galician\";\r\n break;\r\n\r\n case \"ka\":\r\n lang = \"Georgian\";\r\n break;\r\n\r\n case \"de\":\r\n lang = \"German\";\r\n break;\r\n\r\n case \"el\":\r\n lang = \"Greek\";\r\n break;\r\n\r\n case \"gu\":\r\n lang = \"Gujarati\";\r\n break;\r\n\r\n case \"ht\":\r\n lang = \"Haitian\";\r\n break;\r\n\r\n case \"ha\":\r\n lang = \"Hausa\";\r\n break;\r\n\r\n case \"he\":\r\n lang = \"Hebrew\";\r\n break;\r\n\r\n case \"hi\":\r\n lang = \"Hindi\";\r\n break;\r\n\r\n case \"mww\":\r\n lang = \"Hmong Daw\";\r\n break;\r\n\r\n case \"hu\":\r\n lang = \"Hungarian\";\r\n break;\r\n\r\n case \"is\":\r\n lang = \"Icelandic\";\r\n break;\r\n\r\n case \"ig\":\r\n lang = \"Igbo\";\r\n break;\r\n\r\n case \"id\":\r\n lang = \"Indonesian\";\r\n break;\r\n\r\n case \"iu\":\r\n lang = \"Inuktitut\";\r\n break;\r\n\r\n case \"ga\":\r\n lang = \"Irish\";\r\n break;\r\n\r\n case \"it\":\r\n lang = \"Italian\";\r\n break;\r\n\r\n case \"ja\":\r\n lang = \"Japanese\";\r\n break;\r\n\r\n case \"jv\":\r\n lang = \"Javanese\";\r\n break;\r\n\r\n case \"kn\":\r\n lang = \"Kannada\";\r\n break;\r\n\r\n case \"kk\":\r\n lang = \"Kazakh\";\r\n break;\r\n\r\n case \"rw\":\r\n lang = \"Kinyarwanda\";\r\n break;\r\n\r\n case \"ky\":\r\n lang = \"Kirghiz\";\r\n break;\r\n\r\n case \"ko\":\r\n lang = \"Korean\";\r\n break;\r\n\r\n case \"ku\":\r\n lang = \"Kurdish\";\r\n break;\r\n\r\n case \"lo\":\r\n lang = \"Lao\";\r\n break;\r\n\r\n case \"la\":\r\n lang = \"Latin\";\r\n break;\r\n\r\n case \"lv\":\r\n lang = \"Latvian\";\r\n break;\r\n\r\n case \"lt\":\r\n lang = \"Lithuanian\";\r\n break;\r\n\r\n case \"lb\":\r\n lang = \"Luxembourgish\";\r\n break;\r\n\r\n case \"mk\":\r\n lang = \"Macedonian\";\r\n break;\r\n\r\n case \"mg\":\r\n lang = \"Malagasy\";\r\n break;\r\n\r\n case \"ms\":\r\n lang = \"Malay\";\r\n break;\r\n\r\n case \"ml\":\r\n lang = \"Malayalam\";\r\n break;\r\n\r\n case \"mt\":\r\n lang = \"Maltese\";\r\n break;\r\n\r\n case \"mi\":\r\n lang = \"Maori\";\r\n break;\r\n\r\n case \"mr\":\r\n lang = \"Marathi\";\r\n break;\r\n\r\n case \"mn\":\r\n lang = \"Mongolian\";\r\n break;\r\n\r\n case \"ne\":\r\n lang = \"Nepali\";\r\n break;\r\n\r\n case \"no\":\r\n lang = \"Norwegian\";\r\n break;\r\n\r\n case \"nn\":\r\n lang = \"Norwegian Nynorsk\";\r\n break;\r\n\r\n case \"or\":\r\n lang = \"Oriya\";\r\n break;\r\n\r\n case \"ps\":\r\n lang = \"Pasht\";\r\n break;\r\n\r\n case \"fa\":\r\n lang = \"Persian\";\r\n break;\r\n\r\n case \"pl\":\r\n lang = \"Polish\";\r\n break;\r\n\r\n case \"pt\":\r\n lang = \"Portuguese\";\r\n break;\r\n\r\n case \"pa\":\r\n lang = \"Punjabi\";\r\n break;\r\n\r\n case \"otq\":\r\n lang = \"Queretaro Otomi\";\r\n break;\r\n\r\n case \"ro\":\r\n lang = \"Romanian\";\r\n break;\r\n\r\n case \"ru\":\r\n lang = \"Russian\";\r\n break;\r\n\r\n case \"sm\":\r\n lang = \"Samoan\";\r\n break;\r\n\r\n case \"sr\":\r\n lang = \"Serbian\";\r\n break;\r\n\r\n case \"sn\":\r\n lang = \"Shona\";\r\n break;\r\n\r\n case \"sd\":\r\n lang = \"Sindhi\";\r\n break;\r\n\r\n case \"si\":\r\n lang = \"Sinhala\";\r\n break;\r\n\r\n case \"sk\":\r\n lang = \"Slovak\";\r\n break;\r\n\r\n case \"sl\":\r\n lang = \"Slovenian\";\r\n break;\r\n\r\n case \"so\":\r\n lang = \"Somali\";\r\n break;\r\n\r\n case \"es\":\r\n lang = \"Spanish\";\r\n break;\r\n\r\n case \"su\":\r\n lang = \"Sundanese\";\r\n break;\r\n\r\n case \"sw\":\r\n lang = \"Swahili\";\r\n break;\r\n\r\n case \"sv\":\r\n lang = \"Swedish\";\r\n break;\r\n\r\n case \"tl\":\r\n lang = \"Tagalog\";\r\n break;\r\n\r\n case \"ty\":\r\n lang = \"Tahitian\";\r\n break;\r\n\r\n case \"tg\":\r\n lang = \"Tajik\";\r\n break;\r\n\r\n case \"ta\":\r\n lang = \"Tamil\";\r\n break;\r\n\r\n case \"tt\":\r\n lang = \"Tatar\";\r\n break;\r\n\r\n case \"te\":\r\n lang = \"Telugu\";\r\n break;\r\n\r\n case \"th\":\r\n lang = \"Thai\";\r\n break;\r\n\r\n case \"bo\":\r\n lang = \"Tibetan\";\r\n break;\r\n\r\n case \"ti\":\r\n lang = \"Tigrinya\";\r\n break;\r\n\r\n case \"to\":\r\n lang = \"Tongan\";\r\n break;\r\n\r\n case \"tr\":\r\n lang = \"Turkish\";\r\n break;\r\n\r\n case \"tk\":\r\n lang = \"Turkmen\";\r\n break;\r\n\r\n case \"uk\":\r\n lang = \"Ukrainian\";\r\n break;\r\n\r\n case \"ur\":\r\n lang = \"Urdu\";\r\n break;\r\n\r\n case \"uz\":\r\n lang = \"Uzbek\";\r\n break;\r\n\r\n case \"vi\":\r\n lang = \"Vietnamese\";\r\n break;\r\n\r\n case \"cy\":\r\n lang = \"Welsh\";\r\n break;\r\n\r\n case \"xh\":\r\n lang = \"Xhosa\";\r\n break;\r\n\r\n case \"yi\":\r\n lang = \"Yiddish\";\r\n break;\r\n\r\n case \"yo\":\r\n lang = \"Yoruba\";\r\n break;\r\n\r\n case \"yua\":\r\n lang = \"Yucatec Maya\";\r\n break;\r\n\r\n case \"zu\":\r\n lang = \"Zulu\";\r\n break;\r\n\r\n case \"\":\r\n lang = \"NA\";\r\n break;\r\n case null:\r\n lang = \"NA\";\r\n break;\r\n default:\r\n lang = language;\r\n break;\r\n }\r\n return lang;\r\n}\r\n","import React, { useState } from \"react\";\r\nimport Modal from \"react-bootstrap/Modal\";\r\nimport Details from \"../../../pages/Details/Details\";\r\nimport getDocIcon from \"./DocType\";\r\nimport getLanguage from \"./getLanguage\";\r\nimport saveAs from \"file-saver\";\r\nimport axios from \"axios\";\r\nimport moment from \"moment\";\r\nimport { loginRequest } from \"../../../authConfig\";\r\nimport { useMsal } from \"@azure/msal-react\";\r\nimport { getAppInsights } from \"../../../TelemetryService\";\r\nimport UserStore from \"../../../UserStore\";\r\nimport Tooltip from \"@material-ui/core/Tooltip\";\r\nimport { ExpandLess, ExpandMore } from \"@material-ui/icons\";\r\nimport Highlighter from \"react-highlight-words\";\r\nimport \"./Result.scss\";\r\nimport { Col, Row } from \"react-bootstrap\";\r\n\r\nexport default function Result(props) {\r\n const API_endpoint = process.env.REACT_APP_API_ENDPOINT;\r\n const [show, setShow] = useState(false);\r\n const [isActive, setActive] = useState(true);\r\n const { instance, accounts } = useMsal();\r\n let [accountsValue] = accounts;\r\n let language = getLanguage(props.document.language);\r\n let discipline = props.document.metadata_discipline;\r\n let project = props.document.metadata_project;\r\n let fileType = props.document.metadata_storage_file_extension_lower;\r\n var docType = getDocIcon(fileType);\r\n\r\n let isCAD =\r\n fileType === \".dwg\" ||\r\n fileType === \".dgn\" ||\r\n fileType === \".DWG\" ||\r\n fileType === \".DGN\";\r\n let content = isCAD\r\n ? props.document.dwg_dgn_content\r\n : props.document.translated_content;\r\n let searchTag = [];\r\n let searchQ = props.q;\r\n\r\n if (searchQ !== \"*\") {\r\n // eslint-disable-next-line\r\n searchQ = searchQ.trim();\r\n if (searchQ.startsWith('\"') && searchQ.endsWith('\"')) {\r\n if (\r\n searchQ.search(/\\bAND\\b/) > 0 ||\r\n searchQ.search(/\\bOR\\b/) > 0 ||\r\n searchQ.search(/\\bNOT\\b/) > 0\r\n ) {\r\n if (searchQ.search(/\\bAND\\b/) > 0 || searchQ.search(/\\bOR\\b/) > 0) {\r\n searchTag = searchQ\r\n .replace(new RegExp(/\\bAND\\b/), \"regexOperator\")\r\n .replace(new RegExp(/\\bOR\\b/), \"regexOperator\")\r\n .replace(/\"/g, \"regexOperator\")\r\n .toLowerCase()\r\n .split(\"regexoperator\");\r\n for (let index in searchTag) {\r\n searchTag[index] = searchTag[index].trim();\r\n }\r\n searchTag = searchTag.filter(function (obj) {\r\n // obj = obj.trim();\r\n return ![\"\", \" \", null, undefined].includes(obj);\r\n });\r\n } else {\r\n searchTag = searchQ\r\n .replace(/\"/g, \"regexOperator\")\r\n .split(\"NOT\")[0]\r\n .toLowerCase()\r\n .split(\"regexoperator\");\r\n for (let index in searchTag) {\r\n searchTag[index] = searchTag[index].trim();\r\n }\r\n searchTag = searchTag.filter(function (obj) {\r\n obj = obj.trim();\r\n return ![\"\", \" \", null, undefined].includes(obj);\r\n });\r\n }\r\n } else {\r\n const searchWord = searchQ.substring(1, searchQ.length - 1).trim();\r\n searchTag.push(searchWord + \"\");\r\n }\r\n } else {\r\n // eslint-disable-next-line\r\n searchTag = searchQ\r\n .toLowerCase()\r\n .replace(/[\\n\\t\\s]+/, \" \")\r\n .split(\" \");\r\n searchTag = searchTag.filter(function (obj) {\r\n return ![\"\", \" \", null, undefined].includes(obj);\r\n });\r\n }\r\n } else {\r\n searchTag = \"\";\r\n }\r\n let newContent;\r\n if (content && searchTag) {\r\n let part1 = content.split(new RegExp(`(${searchTag[0]})`, \"gi\"), 1);\r\n newContent = content.replace(part1, \"\");\r\n for (var i = 1; i < searchTag.length; i++) {\r\n if (newContent === \"\") {\r\n part1 = content.split(new RegExp(`(${searchTag[i]})`, \"gi\"), 1);\r\n newContent = content.replace(part1, \"\");\r\n }\r\n }\r\n }\r\n let lengthArray = [];\r\n let oneWord = [];\r\n let twoWord = [];\r\n let threeWord = [];\r\n let fourWord = [];\r\n let fiveWord = [];\r\n let sixWord = [];\r\n let sevenWord = [];\r\n let eightWord = [];\r\n let nineWord = [];\r\n let tenWord = [];\r\n let moreWord = [];\r\n if (props.document.keyphrases.length) {\r\n props.document.keyphrases.map(function (name) {\r\n if (name.replace(/[\\n\\t\\s]+/g, \" \").split(\" \").length > 10) {\r\n name = name.slice(0, name.length / 2);\r\n }\r\n\r\n name = name.replace(/[\\n\\t\\s]+/g, \" \");\r\n switch (name.replace(/[\\n\\t\\s]+/g, \" \").split(\" \").length) {\r\n case 1:\r\n oneWord.push(name);\r\n break;\r\n case 2:\r\n twoWord.push(name);\r\n break;\r\n case 3:\r\n threeWord.push(name);\r\n break;\r\n case 4:\r\n fourWord.push(name);\r\n break;\r\n case 5:\r\n fiveWord.push(name);\r\n break;\r\n case 6:\r\n sixWord.push(name);\r\n break;\r\n case 7:\r\n sevenWord.push(name);\r\n break;\r\n case 8:\r\n eightWord.push(name);\r\n break;\r\n case 9:\r\n nineWord.push(name);\r\n break;\r\n case 10:\r\n tenWord.push(name);\r\n break;\r\n default:\r\n moreWord.push(name);\r\n break;\r\n }\r\n\r\n lengthArray = [\r\n ...oneWord.sort(),\r\n ...twoWord.sort(),\r\n ...threeWord.sort(),\r\n ...fourWord.sort(),\r\n ...fiveWord.sort(),\r\n ...sixWord.sort(),\r\n ...sevenWord.sort(),\r\n ...eightWord.sort(),\r\n ...nineWord.sort(),\r\n ...tenWord.sort(),\r\n ...moreWord.sort(),\r\n // ...twoWord.sort().reverse(),\r\n // ...threeWord.sort().reverse(),\r\n ];\r\n\r\n /* logic for replacing the unprintable characters from the key phrases*/\r\n for (let i in lengthArray) {\r\n lengthArray[i] = lengthArray[i].replace(\r\n /[^a-zA-Z0-9~`!@#$%^&*()-_+=\\s\\{\\}\\[\\]|\\\\:;\"'<,>.?/]/gi,\r\n \"\"\r\n );\r\n lengthArray[i] = lengthArray[i].trim().replace(/ +/g, \" \");\r\n }\r\n\r\n lengthArray = lengthArray.filter((f) => {\r\n if (f.length !== 0) return f;\r\n });\r\n return lengthArray;\r\n });\r\n }\r\n\r\n let tagList = lengthArray.map(function (name, i) {\r\n return (\r\n
\r\n {name.toLowerCase()}\r\n
\r\n );\r\n });\r\n\r\n let dateTime = props.document.metadata_creation_date;\r\n let datestring = moment(dateTime).format(\"DD MMM YYYY\");\r\n if (dateTime == null) {\r\n datestring = \"NA\";\r\n }\r\n\r\n const handleClose = () => setShow(false);\r\n\r\n const handleShow = () => {\r\n setShow(true);\r\n let docID = props.document.document_id;\r\n let loggedInUser = UserStore.loggedInUser;\r\n getAppInsights().trackEvent({\r\n name: \"Click\",\r\n properties: {\r\n SearchServiceName: process.env.REACT_APP_SEARCH_SERVICE_NAME,\r\n ClickedDocId: docID,\r\n Action: \"Preview\",\r\n Userid: loggedInUser,\r\n },\r\n });\r\n };\r\n\r\n const expandSeemore = () => {\r\n setActive(!isActive);\r\n };\r\n\r\n let taglistStyle = {\r\n height: \"2.5rem\",\r\n marginLeft: \"1%\",\r\n };\r\n\r\n let taglistStyle1 = {\r\n height: \"7.8rem\",\r\n marginLeft: \"1%\",\r\n };\r\n\r\n const findChunksSearch = ({\r\n autoEscape,\r\n caseSensitive,\r\n sanitize,\r\n searchWords,\r\n textToHighlight,\r\n }) => {\r\n const chunks = [];\r\n const textLow = textToHighlight.toLowerCase();\r\n const sep = /[\\s~`!@#$%^&*()-_+=\\{\\}\\[\\]|\\\\:;\"'<,\\/>.?]/;\r\n const singleTextWords = textLow.split(sep);\r\n\r\n // It could be possible that there are multiple spaces between words\r\n // Hence we store the index (position) of each single word with textToHighlight\r\n let fromIndex = 0;\r\n const singleTextWordsWithPos = singleTextWords.map((s) => {\r\n const indexInWord = textLow.indexOf(s, fromIndex);\r\n fromIndex = indexInWord;\r\n return {\r\n word: s,\r\n index: indexInWord,\r\n };\r\n });\r\n\r\n // Add chunks for every searchWord\r\n searchWords.forEach((sw) => {\r\n const swLow = sw.toLowerCase();\r\n // Do it for every single text word\r\n singleTextWordsWithPos.forEach((s) => {\r\n if (s.word === swLow) {\r\n const start = s.index;\r\n const end = s.index + swLow.length;\r\n chunks.push({\r\n start,\r\n end,\r\n });\r\n }\r\n });\r\n\r\n // The complete word including whitespace should also be handled\r\n if (swLow.split(\" \").length > 1) {\r\n for (let index in textLow) {\r\n let start = parseInt(index);\r\n let end = parseInt(index) + swLow.length;\r\n let sub = textLow.substring(start, end);\r\n let remain = textLow.substring(start, end + 1);\r\n if (sub === swLow && /[^a-zA-Z0-9]/.test(remain[remain.length - 1])) {\r\n chunks.push({\r\n start,\r\n end,\r\n });\r\n }\r\n }\r\n }\r\n });\r\n\r\n return chunks;\r\n };\r\n\r\n async function downloadFile() {\r\n const response = await instance.acquireTokenSilent({\r\n ...loginRequest,\r\n scopes: [process.env.REACT_APP_API_SCOPE],\r\n account: accountsValue,\r\n });\r\n\r\n const accessToken = response.accessToken;\r\n\r\n const config = {\r\n headers: { Authorization: `Bearer ${accessToken}` },\r\n };\r\n\r\n let path = props.document.metadata_storage_path;\r\n\r\n let res = await axios.get(\r\n API_endpoint +\r\n `/GenerateKmSasToken?fileStoragePath=${encodeURIComponent(path)}`,\r\n config\r\n );\r\n\r\n let docID = props.document.document_id;\r\n let loggedInUser = UserStore.loggedInUser;\r\n getAppInsights().trackEvent({\r\n name: \"Click\",\r\n properties: {\r\n SearchServiceName: process.env.REACT_APP_SEARCH_SERVICE_NAME,\r\n ClickedDocId: docID,\r\n Action: \"Download\",\r\n Userid: loggedInUser,\r\n },\r\n });\r\n if (path != null) {\r\n let link = res.data;\r\n let fileName = props.document.metadata_storage_name;\r\n axios({\r\n url: link,\r\n method: \"GET\",\r\n responseType: \"blob\",\r\n }).then((response) => {\r\n // const url = window.URL.createObjectURL(new Blob([response.data]));\r\n var blob = new Blob([response.data], {\r\n type: \"text/plain;charset=utf-8\",\r\n });\r\n saveAs(blob, fileName);\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 {props.document.metadata_storage_name}\r\n
\r\n
\r\n
\r\n \r\n \r\n Download the document} arrow>\r\n
\r\n \r\n
\r\n
\r\n\r\n \r\n\r\n
\r\n
\r\n
\r\n
\r\n {datestring} | {language} {discipline ? `| ${discipline}` : \"\"}{\" \"}\r\n {project ? `| ${project}` : \"\"}\r\n
\r\n \r\n {newContent ? (\r\n \r\n ) : (\r\n {content}\r\n )}\r\n
\r\n
\r\n Keyphrases} arrow>\r\n
\r\n \r\n {tagList}\r\n
\r\n
\r\n {isActive ? : }\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n {props.document.metadata_storage_name} - Petrofac\r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n","export default function getDocIcon(fileType) {\r\n var docType;\r\n fileType = fileType.toLowerCase();\r\n switch (fileType) {\r\n case \".pdf\":\r\n docType = \"/images/pdf.svg\";\r\n break;\r\n case \".docx\":\r\n docType = \"/images/icon_docx.svg\";\r\n break;\r\n case \".doc\":\r\n docType = \"/images/icon_docx.svg\";\r\n break;\r\n case \".ppt\":\r\n docType = \"/images/icon_ppt.svg\";\r\n break;\r\n case \".pptx\":\r\n docType = \"/images/icon_ppt.svg\";\r\n break;\r\n case \".png\":\r\n docType = \"/images/icon_png.svg\";\r\n break;\r\n case \".html\":\r\n docType = \"/images/icon_html.svg\";\r\n break;\r\n case \".xls\":\r\n docType = \"/images/icon_xls.svg\";\r\n break;\r\n case \".xlsx\":\r\n docType = \"/images/icon_xls.svg\";\r\n break;\r\n case \".xlsm\":\r\n docType = \"/images/icon_xls.svg\";\r\n break;\r\n case \".dwg\":\r\n docType = \"/images/icon_dwg.svg\";\r\n break;\r\n case \".msg\":\r\n docType = \"/images/icon_msg.svg\";\r\n break;\r\n case \".dgn\":\r\n docType = \"/images/icon_dgn.svg\";\r\n break;\r\n case \".zip\":\r\n docType = \"/images/icon_zip.svg\";\r\n break;\r\n case \".7z\":\r\n docType = \"/images/icon_7z.svg\";\r\n break;\r\n case \".tif\":\r\n docType = \"/images/icon_tif.svg\";\r\n break;\r\n case \".TIF\":\r\n docType = \"/images/icon_tif.svg\";\r\n break;\r\n case \".jpg\":\r\n docType = \"/images/icon_jpg.svg\";\r\n break;\r\n case \".txt\":\r\n docType = \"/images/txt.svg\";\r\n break;\r\n case \".csv\":\r\n docType = \"/images/csv-1471.svg\";\r\n break;\r\n case \".bmp\":\r\n docType = \"/images/bmp-file.svg\";\r\n break;\r\n case \".jpeg\":\r\n docType = \"/images/jpeg-file.svg\";\r\n break;\r\n case \".xml\":\r\n docType = \"/images/xml-file.svg\";\r\n break;\r\n default:\r\n docType = \"\";\r\n break;\r\n }\r\n return docType; \r\n}","import React from 'react';\r\nimport Result from './Result/Result';\r\nimport \"./Results.scss\";\r\n\r\nexport default function Results(props) {\r\n \r\n let results = props.documents.map((result, index) => {\r\n return ;\r\n });\r\n\r\n let beginDocNumber = Math.min(props.skip + 1, props.count);\r\n let endDocNumber = Math.min(props.skip + props.top, props.count);\r\n\r\n\r\n\r\n return (\r\n
\r\n

Showing {beginDocNumber}-{endDocNumber} of {props.count.toLocaleString()} results...

\r\n
\r\n
\r\n {results}\r\n
\r\n
\r\n
\r\n );\r\n};\r\n","import React, {useState, useEffect} from 'react';\r\nimport './Pager.scss';\r\n\r\nexport default function Pager(props) {\r\n\r\n let [selectedPage, setSelectedPage] = useState(props.currentPage);\r\n let totalPages = Math.ceil(props.resultCount / props.resultsPerPage);\r\n\r\n useEffect(_=>{\r\n props.setCurrentPageValue(selectedPage);\r\n }, [selectedPage, props]);\r\n\r\n function goToNextPage() {\r\n setSelectedPage(selectedPage + 1);\r\n }\r\n\r\n function goToPreviousPage() {\r\n setSelectedPage(selectedPage - 1);\r\n }\r\n\r\n var i = 0;\r\n var page_links = [];\r\n\r\n var minPage = 1;\r\n var maxPage = totalPages;\r\n\r\n if (selectedPage - minPage > 2) {\r\n minPage = selectedPage - 2;\r\n }\r\n\r\n if (maxPage - selectedPage > 2) {\r\n maxPage = parseInt(selectedPage) + 2;\r\n }\r\n\r\n\r\n for (i = minPage; i <= maxPage; i++) {\r\n if (i === parseInt(selectedPage)) {\r\n page_links.push(\r\n
  • \r\n \r\n {i}\r\n \r\n
  • \r\n );\r\n } else {\r\n page_links.push(\r\n
  • \r\n \r\n
  • \r\n );\r\n }\r\n }\r\n\r\n var previousButton;\r\n if (parseInt(selectedPage) === 1) {\r\n previousButton = (
  • \r\n Previous\r\n
  • );\r\n } else {\r\n previousButton = (
  • \r\n \r\n
  • );\r\n }\r\n\r\n var nextButton;\r\n if ((parseInt(selectedPage) === totalPages) || (props.resultCount === 0)) {\r\n nextButton = (
  • \r\n Next\r\n
  • );\r\n } else {\r\n nextButton = (
  • \r\n \r\n
  • );\r\n }\r\n\r\n return (\r\n \r\n );\r\n}","import React, { useState } from \"react\";\r\nimport {\r\n Collapse,\r\n List,\r\n ListItem,\r\n ListItemText,\r\n FormControl,\r\n FormControlLabel,\r\n Radio,\r\n RadioGroup,\r\n Checkbox \r\n} from \"@material-ui/core\";\r\nimport { ExpandLess, ExpandMore } from \"@material-ui/icons\";\r\nimport styled from \"styled-components\";\r\nimport moment from \"moment\";\r\nimport \"./CheckboxFacet.scss\";\r\nimport getLanguage from '../../Results/Result/getLanguage';\r\n\r\nexport default function CheckboxFacet(props) {\r\n \r\n let [isExpanded, setIsExpanded] = useState(false);\r\n let new_facetArray = props.values;\r\n\r\n const checkboxes = new_facetArray.map((facetValue, i) => {\r\n let checkboxValue = facetValue.value;\r\n let checkboxCount = facetValue.count;\r\n if (moment(checkboxValue, moment.ISO_8601, true).isValid()) {\r\n checkboxValue = moment(checkboxValue).format(\"YYYY\");\r\n }\r\n\r\n let isSelected = props.selectedFacets.some(\r\n (facet) => facet.value === checkboxValue\r\n );\r\n return (\r\n <>\r\n {checkboxValue && \r\n \r\n ( {\r\n isSelected = !isSelected;\r\n if(!isSelected) {\r\n props.removeFilter({field: props.name,value: checkboxValue});\r\n } else {\r\n props.addFilter(props.name, checkboxValue);\r\n }\r\n }}\r\n checked={isSelected}\r\n />} \r\n value={`${checkboxValue} (${checkboxCount})`}\r\n label={`${getLanguage(checkboxValue)} (${checkboxCount})`}\r\n style={{marginLeft: '1.5vw'}}\r\n />)\r\n }\r\n \r\n );\r\n });\r\n\r\n return (\r\n
    \r\n setIsExpanded(!isExpanded)}\r\n style={{ borderBottom: \"1px solid lightgrey\", paddingLeft: \"1.5vw !important\" }}\r\n >\r\n \r\n {isExpanded ? : }\r\n \r\n \r\n \r\n \r\n {checkboxes}\r\n \r\n \r\n \r\n
    \r\n );\r\n}\r\n\r\nconst FacetListItem = styled(ListItem)({\r\n paddingLeft: \"1.5vw !important\",\r\n});\r\n\r\nconst FacetValuesList = styled(List)({\r\n maxHeight: 340,\r\n overflowY: \"auto !important\",\r\n marginRight: \"18px !important\",\r\n});","import React from \"react\";\r\nimport { List } from \"@material-ui/core\";\r\nimport CheckboxFacet from \"./CheckboxFacet/CheckboxFacet\";\r\nimport styled from \"styled-components\";\r\nimport Button from \"@material-ui/core/Button\";\r\nimport Tooltip from \"@material-ui/core/Tooltip\";\r\nimport \"./Facets.scss\";\r\n\r\nexport default function Facets(props) {\r\n function mapFacetName(facetName) {\r\n const capitalizeFirstLetter = (string) =>\r\n string[0] ? `${string[0].toUpperCase()}${string.substring(1)}` : \"\";\r\n facetName = capitalizeFirstLetter(facetName);\r\n facetName = facetName.replace(/_/g, \" \");\r\n if (facetName === \"Metadata storage file extension lower\") {\r\n facetName = facetName.replace(\r\n /Metadata storage file extension lower/,\r\n \"Document Type\"\r\n );\r\n }\r\n if (facetName === \"Metadata storage file extension\") {\r\n facetName = facetName.replace(\r\n /Metadata storage file extension/,\r\n \"Document Type\"\r\n );\r\n }\r\n if (facetName === \"Metadata creation date\") {\r\n facetName = facetName.replace(/Metadata creation date/, \"Time Period\");\r\n }\r\n if (facetName === \"Metadata project\") {\r\n facetName = facetName.replace(/Metadata project/, \"Project\");\r\n }\r\n if (facetName === \"Metadata discipline\") {\r\n facetName = facetName.replace(/Metadata discipline/, \"Discipline\");\r\n }\r\n if (facetName === \"Metadata businessunit\") {\r\n facetName = facetName.replace(/Metadata businessunit/, \"Business Unit\");\r\n }\r\n if (facetName === \"Metadata location\") {\r\n facetName = facetName.replace(/Metadata location/, \"Location\");\r\n }\r\n return facetName;\r\n }\r\n\r\n function addFilter(name, value) {\r\n const newFilters = props.filters.concat({ field: name, value: value });\r\n props.setFilters(newFilters);\r\n }\r\n\r\n function removeFilter(filter) {\r\n const newFilters = props.filters.filter(\r\n (item) => item.value !== filter.value\r\n );\r\n props.setFilters(newFilters);\r\n }\r\n\r\n function resetFilters() {\r\n props.setFilters([]);\r\n }\r\n\r\n function applayFilters() {\r\n props.applayFilters();\r\n }\r\n\r\n var facets;\r\n try {\r\n facets = Object.keys(props.facets).map((key) => {\r\n return (\r\n f.field === key)}\r\n isLoading={props.isLoading}\r\n />\r\n );\r\n });\r\n } catch (error) {\r\n // console.log(error);\r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    FILTERS
    \r\n
    \r\n apply filter} arrow>\r\n \r\n APPLY\r\n \r\n \r\n Reset Filters} arrow>\r\n \r\n \r\n
    \r\n {/* */}\r\n
    \r\n
    \r\n
    \r\n \r\n {facets}\r\n \r\n
    \r\n
    \r\n );\r\n}\r\n\r\nconst FacetList = styled(List)({\r\n marginTop: \"0 !important\",\r\n paddingTop: \"0 !important\",\r\n});\r\n","import React, { useEffect, useState } from 'react';\r\nimport axios from 'axios';\r\nimport LoadingOverlay from 'react-loading-overlay';\r\nimport { useLocation, useHistory } from \"react-router-dom\";\r\nimport AppHeader from '../../components/AppHeader/AppHeader';\r\nimport Results from '../../components/Results/Results';\r\nimport Pager from '../../components/Pager/Pager';\r\nimport Facets from '../../components/Facets/Facets';\r\nimport SearchBar from '../../components/SearchBar/SearchBar';\r\nimport ErrorBoundary from '../../components/Errorlog/ErrorBoundary';\r\nimport { loginRequest } from \"../../authConfig\";\r\nimport { useMsal } from \"@azure/msal-react\";\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport FormControl from '@material-ui/core/FormControl';\r\nimport Select from '@material-ui/core/Select';\r\nimport { ToastProvider } from 'react-toast-notifications';\r\nimport UserStore from '../../UserStore';\r\n\r\nimport \"./Search.scss\";\r\nimport { Row,Col } from 'react-bootstrap';\r\n\r\nexport default function Search() {\r\n\r\n let location = useLocation();\r\n let history = useHistory();\r\n const { instance, accounts } = useMsal();\r\n let [accountsValue] = accounts;\r\n const [results, setResults] = useState([]);\r\n const [resultCount, setResultCount] = useState(0);\r\n const [currentPage, setCurrentPage] = useState(1);\r\n const [q, setQ] = useState(UserStore.initialQ ?? \"\");\r\n const [top] = useState(new URLSearchParams(location.search).get('top') ?? 10);\r\n const [skip, setSkip] = useState(new URLSearchParams(location.search).get('skip') ?? 0);\r\n const [filters, setFilters] = useState([]);\r\n const [facets, setFacets] = useState({});\r\n const [isLoading, setIsLoading] = useState(true);\r\n const [sort, setSort] = useState('relevance');\r\n\r\n let resultsPerPage = top;\r\n\r\n const API_endpoint = process.env.REACT_APP_API_ENDPOINT;\r\n const groupBy = (arr, key) => {\r\n const initialValue = {};\r\n return arr.reduce((acc, cval) => {\r\n const myAttribute = cval[key];\r\n acc[myAttribute] = [...(acc[myAttribute] || []), cval]\r\n return acc;\r\n }, initialValue);\r\n }; \r\n \r\n // creates filters in odata syntax\r\n const createFilterExpression = (filterList) => {\r\n let filterExpressions = [];\r\n if(filterList.length) {\r\n \r\n const facetsGroup = groupBy(filterList, \"field\");\r\n for(let input in facetsGroup){\r\n if (input === 'metadata_location') {\r\n filterExpressions.push(facetsGroup[input].map(e => `${input} eq '${e.value}'`).join(\" or \"));\r\n }\r\n if (input === 'language') {\r\n filterExpressions.push(facetsGroup[input].map(e => `${input} eq '${e.value}'`).join(\" or \"));\r\n }\r\n if (input === 'metadata_storage_file_extension_lower') {\r\n filterExpressions.push(facetsGroup[input].map(e => `${input} eq '${e.value}'`).join(\" or \"));\r\n }\r\n if (input === 'metadata_creation_date') {\r\n filterExpressions.push(facetsGroup[input].map(e => `(${input} ge ${e.value}-01-01T00:00:00Z and ${input} le ${e.value}-12-31T23:59:59Z)`).join(\" or \"));\r\n }\r\n if (input === 'metadata_project') {\r\n filterExpressions.push(facetsGroup[input].map(e => `${input} eq '${e.value}'`).join(\" or \"));\r\n }\r\n if (input === 'metadata_discipline') {\r\n filterExpressions.push(facetsGroup[input].map(e => `${input} eq '${e.value}'`).join(\" or \"));\r\n }\r\n if (input === 'metadata_businessunit') {\r\n filterExpressions.push(facetsGroup[input].map(e => `${input} eq '${e.value}'`).join(\" or \"));\r\n }\r\n }\r\n const addbraces = `(${ filterExpressions.join(') and (')})`;\r\n return addbraces;\r\n }else {\r\n return filterExpressions.join(' and ');\r\n }\r\n }\r\n\r\n // If search term is empty, search everything\r\n if (!q || q === \"\" || q === \" \" || !q.trim().length) {\r\n setQ('*');\r\n }\r\n\r\n let apiFilters = encodeURIComponent(createFilterExpression(filters, facets).toString());\r\n const handleChange = (e) => {\r\n setSort(e.target.value);\r\n }\r\n\r\n async function searchResultsCall() {\r\n setIsLoading(true);\r\n const response = await instance.acquireTokenSilent({\r\n ...loginRequest,\r\n scopes: [process.env.REACT_APP_API_SCOPE],\r\n account: accountsValue\r\n });\r\n const accessToken = response.accessToken;\r\n const config = {\r\n headers: { Authorization: `Bearer ${accessToken}` }\r\n };\r\n \r\n if (currentPage > 0 && sort === 'recent') {\r\n let res = await axios.get(\r\n API_endpoint + `/GetKmSearch?searchText=${encodeURIComponent(q)}&size=${top}&skip=${skip}&filter=${apiFilters}&orderby=metadata_creation_date desc`,\r\n config\r\n );\r\n setResults(res.data.value);\r\n setFacets(res.data.facets);\r\n setResultCount(res.data.totalCount);\r\n setIsLoading(false);\r\n } else {\r\n let res = await axios.get(\r\n API_endpoint + `/GetKmSearch?searchText=${encodeURIComponent(q)}&size=${top}&skip=${skip}&filter=${apiFilters}`,\r\n config\r\n );\r\n\r\n setResults(res.data.value);\r\n setFacets(res.data.facets);\r\n setResultCount(res.data.totalCount);\r\n setIsLoading(false);\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n if(accountsValue) { searchResultsCall(); }\r\n //eslint-disable-next-line \r\n }, [q, top, skip, currentPage, sort, accountsValue]);\r\n \r\n useEffect(() => {\r\n setCurrentPage(1);\r\n if(filters.length === 0) {\r\n searchResultsCall();\r\n }\r\n \r\n }, [filters]);\r\n \r\n // pushing the new search term to history when q is updated\r\n useEffect(() => {\r\n history.push('/search?q=' + q);\r\n setCurrentPage(1);\r\n setFilters([]);\r\n // eslint-disable-next-line \r\n }, [q]);\r\n\r\n let postSearchHandler = (searchTerm) => {\r\n setQ(searchTerm);\r\n }\r\n\r\n let updatePagination = (newPageNumber) => {\r\n setCurrentPage(newPageNumber);\r\n setSkip((newPageNumber - 1) * top);\r\n }\r\n\r\n var body;\r\n if (isLoading) {\r\n body = (\r\n
    \r\n {/* */}\r\n
    );\r\n } else {\r\n body = (\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 \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 \r\n \r\n
    \r\n {body}\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 React, { useState, useEffect } from \"react\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport AppHeader from \"../../components/AppHeader/AppHeader\";\r\nimport BootstrapTable from \"react-bootstrap-table-next\";\r\nimport Dialog from \"@material-ui/core/Dialog\";\r\nimport IconButton from \"@material-ui/core/IconButton\";\r\nimport Cancel from \"@material-ui/icons/Cancel\";\r\nimport DialogActions from \"@material-ui/core/DialogActions\";\r\nimport CircleChecked from \"@material-ui/icons/CheckCircleRounded\";\r\nimport DialogContent from \"@material-ui/core/DialogContent\";\r\nimport DialogTitle from \"@material-ui/core/DialogTitle\";\r\nimport TextFieldMui from \"@material-ui/core/TextField\";\r\nimport Button from \"@material-ui/core/Button\";\r\nimport Tooltip from \"@material-ui/core/Tooltip\";\r\nimport { withStyles } from \"@material-ui/core/styles\";\r\nimport TextareaAutosize from \"@material-ui/core/TextareaAutosize\";\r\nimport UserStore from \"../../UserStore\";\r\nimport { toJS } from \"mobx\";\r\nimport { useMsal } from \"@azure/msal-react\";\r\nimport { loginRequest } from \"../../authConfig\";\r\nimport axios from \"axios\";\r\nimport \"./Regex.scss\";\r\n\r\nconst styles = (muiTheme) => ({\r\n label: {\r\n \"&$erroredLabel\": {\r\n color: \"black\",\r\n },\r\n },\r\n erroredLabel: {},\r\n});\r\nconst TextField = withStyles(styles)(function TextField({ classes, ...props }) {\r\n return (\r\n \r\n );\r\n});\r\nexport default function Regex() {\r\n const [regexValue, setregexValue] = useState(\"\");\r\n const [regexValueErrorMessage, setRegexValueErrorMessage] = useState(\"\");\r\n const [regexValueError, setRegexValueError] = useState(false);\r\n const [products, setProducts] = useState([]);\r\n const [showAddPopup, setShowAddPopup] = useState(false);\r\n const [deleteLOC, setDeleteLOC] = useState(false);\r\n const [deleteId, setDeleteId] = useState(\"\");\r\n const [columns, setColumns] = useState([\r\n { dataField: \"regularExpression\", text: \"Regular Expression\" },\r\n { dataField: \"more\", text: \"More\" },\r\n ]);\r\n const [clickCount, setclickCount] = useState(0);\r\n const [editRowData, setEditRowData] = useState(false);\r\n const [editRowid, setEditRowid] = useState(\"\");\r\n const { instance, accounts } = useMsal();\r\n let [accountsValue] = accounts;\r\n const history = useHistory();\r\n const API_endpoint = process.env.REACT_APP_API_ENDPOINT;\r\n\r\n useEffect(() => {\r\n if (accountsValue) {\r\n GetKmAssetTagRules();\r\n }\r\n }, [accountsValue]);\r\n\r\n function navigateToHome() {\r\n history.go(-1);\r\n }\r\n\r\n async function GetKmAssetTagRules() {\r\n const response = await instance.acquireTokenSilent({\r\n ...loginRequest,\r\n scopes: [process.env.REACT_APP_API_SCOPE],\r\n account: accountsValue,\r\n });\r\n const accessToken = response.accessToken;\r\n\r\n const config = {\r\n headers: { Authorization: `Bearer ${accessToken}` },\r\n };\r\n let res = await axios.get(API_endpoint + `/GetKmAssetTagRules`, config);\r\n formatRegexData(res.data);\r\n }\r\n\r\n async function handleSave() {\r\n if (regexValue === \"\") {\r\n setRegexValueError(true);\r\n setRegexValueErrorMessage(\"Before save have to enter some text\");\r\n } else {\r\n setRegexValueError(false);\r\n setRegexValueErrorMessage(\"\");\r\n }\r\n if (regexValue !== \"\" && clickCount === 0) {\r\n setclickCount(1);\r\n // Silently acquires an access token which is then attached to a request for MS Graph data\r\n const response = await instance.acquireTokenSilent({\r\n ...loginRequest,\r\n scopes: [process.env.REACT_APP_API_SCOPE],\r\n account: accountsValue,\r\n });\r\n const accessToken = response.accessToken;\r\n\r\n const config = {\r\n headers: { Authorization: `Bearer ${accessToken}` },\r\n };\r\n\r\n let updatedValue;\r\n if (editRowData) {\r\n updatedValue = products;\r\n\r\n const result = await axios.post(\r\n API_endpoint + `/EditKmAssetTagRule`,\r\n {\r\n assetTagRuleId: updatedValue[editRowid].assetTagRuleId,\r\n regularExpression: regexValue,\r\n },\r\n config\r\n );\r\n\r\n if (result.status == 200) {\r\n GetKmAssetTagRules();\r\n updatedValue[editRowid].regularExpression = regexValue;\r\n formatRegexData(updatedValue);\r\n setEditRowid(\"\");\r\n setclickCount(1);\r\n setEditRowData(false);\r\n }\r\n setShowAddPopup(false);\r\n } else {\r\n const result = await axios.post(\r\n API_endpoint + `/AddKmAssetTagRule`,\r\n { regularExpression: regexValue },\r\n config\r\n );\r\n\r\n if (result.status == 200) {\r\n GetKmAssetTagRules();\r\n setclickCount(1);\r\n }\r\n }\r\n setShowAddPopup(false);\r\n }\r\n }\r\n\r\n const handleOpen = (e) => {\r\n setregexValue(\"\");\r\n setRegexValueError(false);\r\n setShowAddPopup(true);\r\n setclickCount(0);\r\n };\r\n\r\n async function reRun() {\r\n const response = await instance.acquireTokenSilent({\r\n ...loginRequest,\r\n scopes: [process.env.REACT_APP_API_SCOPE],\r\n account: accountsValue,\r\n });\r\n const accessToken = response.accessToken;\r\n\r\n const config = {\r\n headers: { Authorization: `Bearer ${accessToken}` },\r\n };\r\n\r\n await axios.post(API_endpoint + `/KmResetSkill`, {}, config);\r\n }\r\n\r\n const handleclose = (e) => {\r\n setShowAddPopup(false);\r\n setEditRowData(false);\r\n };\r\n\r\n const regularExpressionChange = (e) => {\r\n setregexValue(e.target.value);\r\n setRegexValueError(false);\r\n };\r\n\r\n const editRow = (e) => {\r\n const indexValue = Number(e.target.id);\r\n setEditRowid(indexValue);\r\n setregexValue(toJS(UserStore.regexData)[indexValue].regularExpression);\r\n setRegexValueError(false);\r\n setEditRowData(true);\r\n setShowAddPopup(true);\r\n setclickCount(0);\r\n };\r\n\r\n async function handleLOCPurge(e) {\r\n setDeleteLOC(false);\r\n if (clickCount === 0) {\r\n setclickCount(1);\r\n const allData = toJS(UserStore.regexData);\r\n const response = await instance.acquireTokenSilent({\r\n ...loginRequest,\r\n scopes: [process.env.REACT_APP_API_SCOPE],\r\n account: accountsValue,\r\n });\r\n const accessToken = response.accessToken;\r\n\r\n const config = {\r\n headers: { Authorization: `Bearer ${accessToken}` },\r\n };\r\n\r\n let result = await axios.post(\r\n API_endpoint + `/DeleteKmAssetTagRule`,\r\n { assetTagRuleId: allData[Number(deleteId)].assetTagRuleId },\r\n config\r\n );\r\n if (result.status === 200) {\r\n allData.splice(deleteId, 1);\r\n formatRegexData(allData);\r\n setDeleteLOC(false);\r\n setDeleteId(\"\");\r\n setclickCount(0);\r\n }\r\n }\r\n }\r\n\r\n const formatRegexData = (processedData) => {\r\n const finalData = processedData.map((items, index) => ({\r\n assetTagRuleId: items.assetTagRuleId,\r\n regularExpression: items.regularExpression,\r\n more: (\r\n \r\n Edit Expression} arrow>\r\n \r\n \r\n \r\n \r\n Delete Expression} arrow>\r\n {\r\n setDeleteLOC(true);\r\n setclickCount(0);\r\n setDeleteId(e.target.id);\r\n }}\r\n id={index}\r\n >\r\n \"icon_delete\"\r\n \r\n \r\n \r\n ),\r\n }));\r\n setProducts(finalData);\r\n // setProducts(finalData);\r\n UserStore.setRegexData(finalData);\r\n };\r\n\r\n const handleCloseDialog = () => {\r\n setDeleteLOC(false);\r\n setDeleteId(\"\");\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
    Regular Expression
    \r\n \r\n \r\n Reset Skill\r\n \r\n\r\n \r\n Add row\r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n\r\n \r\n {editRowData ? (\r\n Edit Expression\r\n ) : (\r\n Add Expression\r\n )}\r\n \r\n \r\n {editRowData ? (\r\n
    *Edit regular expression will reset the skill.
    \r\n ) : (\r\n
    *Adding new regular expression will reset the skill.
    \r\n )}\r\n {regexValueError ? (\r\n
    \r\n Please enter Regular Expression\r\n
    \r\n ) : (\r\n
    \r\n )}\r\n \r\n \r\n \r\n Save\r\n \r\n \r\n Cancel\r\n \r\n \r\n \r\n \r\n \r\n \r\n
    Are you sure to delete?
    \r\n \r\n {\" \"}\r\n {\" \"}\r\n \r\n handleLOCPurge(e)}\r\n style={{\r\n padding: \"0\",\r\n background: \"#0C629B\",\r\n color: \"white\",\r\n position: \"absolute\",\r\n right: \"2%\",\r\n width: \"2vw\",\r\n height: \"2vw\",\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 React from 'react';\r\nimport { BrowserRouter as Router, Switch, Route } from 'react-router-dom';\r\nimport { getAppInsights } from '../TelemetryService';\r\nimport TelemetryProvider from '../telemetry-provider';\r\n\r\n// React Router page components\r\nimport Home from '../pages/Home/Home';\r\nimport Search from '../pages/Search/Search';\r\nimport Details from '../pages/Details/Details';\r\nimport Regex from '../pages/Regex/Regex';\r\n\r\n// Bootstrap styles, optionally with jQuery and Popper\r\nimport 'bootstrap/dist/css/bootstrap.min.css';\r\n\r\n// Custom app styles\r\nimport './App.scss';\r\n\r\nexport default function App() {\r\n\r\n let appInsights = null;\r\n const instrumentationKey = process.env.REACT_APP_INSTRUMENTATION_KEY;\r\n\r\n return (\r\n
    \r\n \r\n {/* eslint-disable-next-line */}\r\n { appInsights = getAppInsights() }}>\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 React from 'react';\r\nimport ReactDOM from 'react-dom'\r\nimport App from './App/App';\r\nimport { PublicClientApplication } from \"@azure/msal-browser\";\r\nimport { MsalProvider } from \"@azure/msal-react\";\r\nimport { msalConfig } from \"./authConfig\";\r\n\r\n/**\r\n * Initialize a PublicClientApplication instance which is provided to the MsalProvider component\r\n * We recommend initializing this outside of your root component to ensure it is not re-initialized on re-renders\r\n */\r\nconst msalInstance = new PublicClientApplication(msalConfig);\r\n\r\nReactDOM.render(\r\n \r\n \r\n \r\n \r\n ,\r\n document.getElementById('root')\r\n);"],"sourceRoot":""}