{"version":3,"sources":["TelemetryService.js","telemetry-provider.jsx","authConfig.js","graph.js","profilePic.js","UserStore.js","components/AppHeader/AppHeader.js","components/SearchBar/Suggestions/Suggestions.js","components/Errorlog/ErrorBoundary.js","components/SearchBar/SearchBar.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","addTelemetryInitializer","envelope","data","userMail","localStorage","getItem","console","log","getAppInsights","TelemetryProvider","state","initialized","this","props","AppInsightsInstrumentationKey","Boolean","setState","after","children","Component","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","callMsGraph","accessToken","a","headers","Headers","bearer","append","options","method","fetch","then","response","blob","profilePic","myStore","loggedInUser","initialQ","regexData","isSelectedcheckbob","makeObservable","observable","setLoggedInUser","action","setInitialQ","setRegexData","setisSelectedcheckbox","user","q","AppHeader","graphData","theImage","useHistory","useMsal","instance","accounts","accountsValue","timeout","useState","remaining","setRemaining","setElapsed","Date","setLastActive","show","setShow","APIEndpoint","handleLogout","acquireTokenSilent","account","Authorization","axios","post","removeItem","logoutRedirect","postLogoutRedirectUri","useIdleTimer","onIdle","getRemainingTime","reset","pause","resume","getLastActiveTime","getElapsedTime","useEffect","setInterval","setItem","username","apigraph","UserStore","name","validateSession","setTime","interval","clearInterval","handleClose","res","myuuid","uuidv4","reader","FileReader","preview","document","querySelector","ok","addEventListener","src","result","readAsDataURL","className","Tooltip","title","arrow","onClick","push","alt","id","style","nextPage","borderRight","href","download","class","focusable","aria-hidden","viewBox","data-testid","d","Modal","onHide","backdrop","keyboard","dialogClassName","size","centered","Body","font","IconButton","padding","position","top","right","background","borderRadius","color","width","height","Suggestions","suggestionClickHandler","e","currentTarget","suggestions","map","s","index","queryPlusText","onMouseDown","boxShadow","boxSizing","ErrorBoundary","hasError","msg","error","info","setTimeout","match","path","includes","window","location","reload","React","SearchBar","suggestionDiv","setQ","setSuggestions","showSuggestions","setShowSuggestions","setisSelectedcheckbob","API_endpoint","onSearchHandler","setFilters","postSearchHandler","getElementById","value","get","results","_","timer","suggestionsCall","clearTimeout","onKeyDown","keyCode","FormGroup","FormControlLabel","control","Checkbox","checked","onChange","chaneValue","replace","searchTerm","searchChangeHandler","label","left","zIndex","marginTop","autoComplete","type","placeholder","undefined","length","defaultValue","onBlur","InputProps","disableUnderline","xmlns","data-name","fill","Home","globalAdmin","setGlobalAdmin","checkGlobalAdmin","Login","loginRedirect","catch","space","split","display","Button","SearchTranscript","trim","initalSearchTag","searchtext","setSearchtext","searchTags","setSearchTags","isActive","setActive","isActiveTranscript","setActiveTranscript","selectedTab","renderTranscript","startsWith","endsWith","search","valueOfAndOr","RegExp","toLowerCase","filter","obj","valueOfNot","searchWord","substring","searchChange","findChunksSearch","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","fontFamily","para","key","highlightClassName","unhighlightClassName","findChunks","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","XMLparse","metadata_storage_path","encodeURIComponent","uri","docType","generateSasToken","viewer","useRef","WebViewer","current","webviewerServerURL","initialDoc","Core","annotationManager","documentViewer","Annotations","DocumentViewer","searchListener","Search","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","createData","isCAD","docID","document_id","trackEvent","properties","SearchServiceName","ClickedDocId","Action","Userid","language","metadata_businessunit","metadata_creation_date","metadata_discipline","metadata_location","metadata_project","metadata_storage_file_extension","metadata_storage_name","previous_md5_content","link","fileName","url","responseType","Blob","saveAs","ref","documents","pluginRenderers","DocViewerRenderers","showKeyphrasesAsString","join","rows","moment","format","TableContainer","component","Paper","Table","aria-label","TableBody","row","scope","align","paddingRight","getLanguage","lang","Result","discipline","project","fileType","getDocIcon","content","searchQ","part1","lengthArray","oneWord","twoWord","threeWord","fourWord","fiveWord","sixWord","sevenWord","eightWord","nineWord","tenWord","moreWord","sort","f","dateTime","datestring","ExpandMore","ExpandLess","Header","closeButton","Title","Results","beginDocNumber","Math","min","skip","count","endDocNumber","toLocaleString","Pager","currentPage","selectedPage","setSelectedPage","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","marginLeft","FacetListItem","disableRipple","button","borderBottom","paddingLeft","marginBottom","ListItemText","primary","mapFacetName","Collapse","in","FacetValuesList","FormControl","styled","ListItem","List","overflowY","marginRight","Facets","facetName","string","toUpperCase","newFilters","filters","concat","item","facets","Object","keys","border","textTransform","applayFilters","FacetList","paddingTop","useLocation","setResults","setResultCount","setCurrentPage","URLSearchParams","setSkip","setFacets","setSort","apiFilters","filterList","filterExpressions","facetsGroup","reduce","acc","cval","myAttribute","input","createFilterExpression","toString","searchResultsCall","totalCount","variant","Select","labelId","MenuItem","newPageNumber","active","spinner","text","muiTheme","erroredLabel","InputLabelProps","Regex","regexValue","setregexValue","regexValueErrorMessage","setRegexValueErrorMessage","regexValueError","setRegexValueError","products","setProducts","showAddPopup","setShowAddPopup","deleteLOC","setDeleteLOC","deleteId","setDeleteId","dataField","columns","clickCount","setclickCount","editRowData","setEditRowData","editRowid","setEditRowid","GetKmAssetTagRules","formatRegexData","updatedValue","assetTagRuleId","regularExpression","status","handleclose","editRow","indexValue","toJS","allData","processedData","finalData","more","classname","cursor","handleCloseDialog","go","keyField","Dialog","open","onClose","aria-labelledby","DialogTitle","DialogContent","flexDirection","TextareaAutosize","margin","fullWidth","minRows","helperText","DialogActions","paddingright","float","handleLOCPurge","App","exact","Details","msalInstance","PublicClientApplication","ReactDOM","render","Fragment"],"mappings":"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","file":"static/js/main.de8126c6.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 const telemetryInitializer = (envelope) => {\r\n envelope.data.userMail = localStorage.getItem('userEmail');\r\n };\r\n\r\n appInsights.addTelemetryInitializer(telemetryInitializer);\r\n\r\n console.log('Ok!');\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 { 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 { 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 { 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, { 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\nexport default function AppHeader(props) {\r\n const history = useHistory();\r\n const { instance, accounts } = useMsal();\r\n let [accountsValue] = accounts;\r\n let graphData, theImage, accessToken = \"\",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 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\r\n \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 \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 }\r\n else\r\n setTime(10000);\r\n\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\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 \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\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(\"load\", function () {\r\n // convert image file to base64 string\r\n preview.src = reader.result;\r\n }, false);\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 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 className='ExactLabel'\r\n label=\"Exact\"\r\n style={{ position: \"fixed\", left: \"73vw\", top: \"unset\", zIndex: '10', marginTop: '1vw'}}\r\n />\r\n \r\n
\r\n \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 \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 { 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\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","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 \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\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 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 language: documented.language,\r\n metadata_businessunit: documented.metadata_businessunit,\r\n metadata_creation_date: documented.metadata_creation_date,\r\n metadata_discipline: documented.metadata_discipline,\r\n metadata_location: documented.metadata_location,\r\n metadata_project: documented.metadata_project,\r\n metadata_storage_file_extension: documented.metadata_storage_file_extension,\r\n metadata_storage_file_extension_lower: documented.metadata_storage_file_extension_lower,\r\n metadata_storage_name: documented.metadata_storage_name,\r\n metadata_storage_path: documented.metadata_storage_path,\r\n previous_md5_content: documented.previous_md5_content,\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 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: \"\"\r\n },\r\n viewer.current,\r\n ).then((instance) => {\r\n const { annotationManager, documentViewer, Annotations, DocumentViewer,Search } = instance.Core;\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 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 \"downloadFile\"\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 {detailsBody}\r\n
\r\n \r\n
\r\n
\r\n );\r\n}\r\n\r\nexport default observer(Details);\r\n","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\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 = (fileType === '.dwg' || fileType === '.dgn' || fileType === '.DWG' || fileType === '.DGN');\r\n let content = isCAD ? props.document.dwg_dgn_content : 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(searchQ.search(/\\bAND\\b/) > 0 || searchQ.search(/\\bOR\\b/) > 0 || searchQ.search(/\\bNOT\\b/) > 0){\r\n if(searchQ.search(/\\bAND\\b/) > 0 || searchQ.search(/\\bOR\\b/) > 0){\r\n searchTag = searchQ.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 = searchQ.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 = searchQ.substring(1, searchQ.length-1).trim();\r\n searchTag.push(searchWord + \"\");\r\n }\r\n\r\n } else {\r\n // eslint-disable-next-line\r\n searchTag = searchQ.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 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 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\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(/[^a-zA-Z0-9~`!@#$%^&*()-_+=\\s\\{\\}\\[\\]|\\\\:;\"'<,>.?/]/gi, '');\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)\r\n return f;\r\n })\r\n return lengthArray;\r\n });\r\n }\r\n\r\n\r\n let tagList = lengthArray.map(function(name, i){\r\n return
\r\n {name.toLowerCase()}\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({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 language: props.document.language,\r\n metadata_businessunit: props.document.metadata_businessunit,\r\n metadata_creation_date: props.document.metadata_creation_date,\r\n metadata_discipline: props.document.metadata_discipline,\r\n metadata_location: props.document.metadata_location,\r\n metadata_project: props.document.metadata_project,\r\n metadata_storage_file_extension: props.document.metadata_storage_file_extension,\r\n metadata_storage_file_extension_lower: props.document.metadata_storage_file_extension_lower,\r\n metadata_storage_name: props.document.metadata_storage_name,\r\n metadata_storage_path: props.document.metadata_storage_path,\r\n previous_md5_content: props.document.previous_md5_content,\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.5vw\",\r\n \"marginLeft\": \"1%\"\r\n }\r\n\r\n let taglistStyle1 = {\r\n \"height\": \"7.8vw\",\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\r\n return chunks;\r\n };\r\n\r\n async function downloadFile () {\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\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 + `/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 console.log(props);\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 language: props.document.language,\r\n metadata_businessunit: props.document.metadata_businessunit,\r\n metadata_creation_date: props.document.metadata_creation_date,\r\n metadata_discipline: props.document.metadata_discipline,\r\n metadata_location: props.document.metadata_location,\r\n metadata_project: props.document.metadata_project,\r\n metadata_storage_file_extension: props.document.metadata_storage_file_extension,\r\n metadata_storage_file_extension_lower: props.document.metadata_storage_file_extension_lower,\r\n metadata_storage_name: props.document.metadata_storage_name,\r\n metadata_storage_path: props.document.metadata_storage_path,\r\n previous_md5_content: props.document.previous_md5_content,\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
{props.document.metadata_storage_name}
\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}` : ''} {project ? `| ${project}` : ''}\r\n
\r\n
\r\n {newContent ?\r\n \r\n : ({content})}\r\n\r\n
\r\n
\r\n \r\n
\r\n
{tagList}
\r\n
{isActive ? : }
\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","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 {results}\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\", marginTop: \"0.2vw\", marginBottom: \"0.2vw\" }}\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 \r\n APPLY\r\n \r\n \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\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

    Sort by:

    \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
    \r\n {body}\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 \r\n \r\n \r\n \r\n \r\n \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":""}