{"version":3,"sources":["config.js","libs/adal.js","assets/img/logo.svg","assets/img/main-big.jpg","assets/img/arrows.svg","components/shared/LoaderButton.js","components/pages/login/Login.js","components/pages/login/LoginContainer.js","components/pages/workspace/LoadingIndicatorOverlay/LoadingIndicatorOverlay.js","components/pages/workspace/Workspace.js","assets/img/logo-without-text.svg","assets/img/menu.svg","assets/img/work-revert.svg","assets/img/work-update.svg","assets/img/work-full-screen.svg","assets/img/work-profile@3x.svg","assets/img/question-circle-fill.svg","assets/img/mail.svg","assets/img/mail-active.svg","assets/img/phone.svg","assets/img/phone-active.svg","assets/img/mortarboard.svg","assets/img/mortarboard-active.svg","assets/img/work-item2.svg","assets/img/work-item3.svg","assets/img/impersonate.svg","assets/img/impersonate-alt.svg","assets/img/work-item-alt2.svg","assets/img/work-item-alt3.svg","assets/img/toolbar-inactive.svg","assets/img/toolbar-active.svg","components/pages/workspace/PageHeader/PageHeader.js","assets/img/work-logo@2x.png","assets/img/work-pdf-file@2x.svg","assets/img/work-image-file@2x.svg","assets/img/work-data-file@2x.svg","assets/img/work-crosstab-file@2x.svg","components/pages/workspace/Sidebar/Sidebar.js","components/pages/workspace/Error/Error.js","components/pages/workspace/Eula/Eula.js","components/pages/workspace/Impersonation/Impersonation.js","libs/tableau.js","components/pages/workspace/WorkspaceContainer.js","App.js","components/pages/accessdenied/AccessDenied.js","components/apiredirect/ApiRedirect.js","serviceWorkerRegistration.js","index.js"],"names":["config","ADFS_CONFIG","clientID","authority","tenant","redirectUri","postLogoutRedirectUri","APP_CONFIG","apiPath","tableauHost","process","gaTrackingID","gaTestMode","aiInstrumentationKey","_objectSpread","adalConfig","clientId","cacheLocation","instance","extraQueryParameter","concat","authContext","inject","invokeApi","_x","_invokeApi","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee","_ref","path","_ref$method","method","_ref$headers","_ref$queryParams","body","wrap","_context","prev","next","headers","queryParams","getCachedToken","logOut","abrupt","fetch","stop","_logOut","_callee2","id_token_hint","_context2","clearCache","window","location","href","encodeURIComponent","isLoading","text","loadingText","_ref$className","className","_ref$disabled","disabled","customStyles","props","_objectWithoutProperties","_excluded","styles","backgroundColor","color","_jsxs","style","children","_jsx","alt","src","arrows","Login","_Component","_this","_classCallCheck","_callSuper","onClickLangPicker","value","undefined","state","isOpenLangPicker","setState","onClickContactPicker","isOpenContactPicker","_ref2","_inherits","_createClass","key","_this$props","this","activeLanguage","login","onChangeLanguage","_this$state","background","logo","translations","values","LoaderButton","onClick","open","focus","links","top","name","map","_ref3","reduce","accum","lang","idx","_toConsumableArray","_ref4","index","Component","LoginContainer","ai","trackPageView","loginProps","LoadingIndicatorOverlay","Fragment","Lottie","height","animationData","Spinner","Workspace","timeoutHandler","pageHeader","sidebar","toolbarHidden","isMenuOpen","isLoadingResources","content","PageHeader","profileItemsAction","isOpenedProfile","userHasImpersonationRights","showImpersonationModal","redirectToFleetbase","redirectToIrisnet","handleLogout","onClickMenuToggle","handleMenuToggle","isOpenedContact","hoverProfileNumber","_this2","revertAllAsync","toggleToolbar","refreshDataAsync","openFullScreen","user","hoverContactNumber","profileItems","img","linkIcon","imgAlt","linkIconAlt","logoutIcon","logoutIconAlt","unshift","impersonateIcon","impersonateIconAlt","profileIconStyle","currentImpersonation","length","isToolbarHidden","menu","logoWithoutText","margin","loader","toolbarinactive","toolbaractive","revert","update","full","ref","list","languageList","title","helpRound","React","onMouseEnter","onMouseLeave","phoneActive","phone","mailActive","mail","target","mortarboardActive","mortarboard","profile","unique_name","_ref5","Sidebar","handleChange","e","searchPhrase","toLowerCase","trim","results","sites","allSites","nameContains","elementName","input","includes","i","site","push","matchingWorkbooks","j","workbooks","workbook","matchingDashboards","k","dashboards","dashboard","dashboardsOnlyObject","workbooksOnlyObject","openSite","searchQuery","sitesList","active","goToNewPath","activeWorkbookId","activeDashboard","downloadImage","downloadFile","exportToPDF","exportAsCrosstab","toggle","collapse","sitesToDisplay","id","onChange","placeholder","type","order","bind","Collapse","isOpen","contentUrl","pdfFile","imageFile","dataFile","crosstabFile","Error","BrokenStick","textAlign","errorType","left","right","bottom","marginRight","transform","zIndex","padding","width","overflowY","boxShadow","overlay","Eula","Modal","hasUserConsentedToEula","ariaHideApp","contentLabel","marginBottom","listStyleType","paddingLeft","fontWeight","consentToEula","isLoadingEulaConsent","display","flexDirection","Impersonation","filterUsers","allUsers","search","s","filter","el","indexOf","email","samAccountName","fetchUsers","then","response","ok","json","Promise","reject","tableauUsers","filteredUsers","usernameFilter","finally","loading","onRowSelected","confirmImpersonation","usernameFilterOnChange","modalOnClose","stopImpersonation","usernameToImpersonate","prevProps","impersonationModalOpen","userRows","users","_loop","animation","shouldCloseOnEsc","shouldCloseOnOverlayClick","onRequestClose","Button","marginTop","findDashboardSize","innerWidth","innerHeight","resize","workspaceContent","document","querySelector","vizIframe","size","onresize","Viz","_instance","_viz","_options","hideTabs","hideToolbar","toolbarPosition","createViz","dom","pth","trustedTicket","callback","events","resolve","dispose","tableau","onFirstInteractive","removeEventListener","handler","addEventListener","_x2","_x3","_x4","_x5","_x6","_x7","prototype","getViz","domEl","showExportPDFDialog","exportToJSON","showExportDataDialog","exportToImage","showExportImageDialog","showExportCrossTabDialog","eventType","listener","WorkspaceContainer","highlightCurrentWorkbookInMenu","event","viz","getWorkbook","getActiveSheet","getName","handleToggleMenu","refreshSessionTimeout","error","sessionTimeoutHandle","clearTimeout","that","setTimeout","console","log","parseHrefGoToPath","viewsPosition","breadcrumbs","toString","split","match","item","loop1","currentWorkbook","getWorkbooks","url","getTicket","ticket","vizContainer","tableauEvents","catch","trackException","workbookId","isTriggeredFromSidebar","activateSheetAsync","otherwise","isCustomView","getCustomViewsAsync","customViews","getUrl","showCustomViewAsync","getElementById","scrollIntoView","behavior","inline","hasViz","parentNode","requestFullscreen","mozRequestFullScreen","webkitRequestFullscreen","msRequestFullscreen","userSettings","siteName","emailClaim","tokenParts","payload","JSON","parse","atob","getTokenClaim","TableauEventName","PARAMETER_VALUE_CHANGE","FILTER_CHANGE","CUSTOM_VIEW_LOAD","TAB_SWITCH","MARKS_SELECTION","URL_ACTION","STORY_POINT_SWITCH","_this3","pageHeaderProps","toggleToolbarVisibility","sidebarProps","errorProps","eulaProps","pdfPath","impersonationProps","workspaceProps","App","onToggleToolbarVisibility","chosenLanguage","localStorage","setItem","isAuthenticated","isAuthenticating","ReactAI","getItem","navigator","language","substr","userLanguage","sid","getCachedUser","setAuthenticatedUserContext","_createElement","AccessDenied","ApiRedirect","useLocation","navigate","useNavigate","useEffect","forwardGetRequest","apiUrl","pathname","replace","credentials","sent","redirected","origin","statusText","t0","isLocalhost","Boolean","hostname","registerValidSW","swUrl","serviceWorker","register","registration","onupdatefound","installingWorker","installing","onstatechange","controller","onUpdate","onSuccess","init","instrumentationKey","debug","handleWindowCallback","parent","isCallback","hash","router","createBrowserRouter","element","errorElement","ReactDOM","createRoot","render","StrictMode","RouterProvider","URL","contentType","get","status","ready","unregister","reload","checkValidServiceWorker","serviceWorkerRegistration"],"mappings":"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","file":"static/js/main.092bde95.chunk.js","sourcesContent":["const dev = {\r\n ADFS_CONFIG: {\r\n clientID: 'b3447305-1128-4b33-b15e-9ec78e33a5ac',\r\n authority: \"https://login.dataforce.de/\",\r\n tenant: \"adfs\",\r\n redirectUri: \"https://iris-views-dev.dataforce.de/api/auth\",\r\n postLogoutRedirectUri: \"https://iris-views-dev.dataforce.de\",\r\n },\r\n APP_CONFIG: {\r\n apiPath: \"https://iris-views-dev.dataforce.de/api\",\r\n tableauHost: process.env.REACT_APP_TABLEAU_HOST,\r\n gaTrackingID: \"UA-00000000-00\",\r\n gaTestMode: true,\r\n aiInstrumentationKey: '045c4a8a-235d-4ba0-ac39-949b8c1a0c46'\r\n }\r\n};\r\n\r\nconst test = {\r\n ADFS_CONFIG: {\r\n clientID: '00d1af8d-ad5f-4903-b1f2-097d2b4de38d',\r\n authority: \"https://login-test.dataforce.de/\",\r\n tenant: \"adfs\",\r\n redirectUri: \"https://iris-views-test.dataforce.de/api/auth\",\r\n postLogoutRedirectUri: \"https://iris-views-test.dataforce.de\",\r\n },\r\n APP_CONFIG: {\r\n apiPath: \"/api\",\r\n tableauHost: process.env.REACT_APP_TABLEAU_HOST,\r\n gaTrackingID: \"UA-00000000-00\", \r\n gaTestMode: true,\r\n aiInstrumentationKey: '490907e0-19d2-48fb-86bf-43a9fcb56ef0'\r\n }\r\n};\r\n\r\nconst stg = {\r\n ADFS_CONFIG: {\r\n clientID: 'adf8b58d-6cc3-42e4-8f13-4ce2d9db6fdf',\r\n authority: \"https://login.dataforce.de/\",\r\n tenant: \"adfs\",\r\n redirectUri: \"https://iris-views-stg.dataforce.de/api/auth\",\r\n postLogoutRedirectUri: \"https://iris-views-stg.dataforce.de\"\r\n },\r\n APP_CONFIG: {\r\n apiPath: \"/api\",\r\n tableauHost: process.env.REACT_APP_TABLEAU_HOST,\r\n gaTrackingID: \"UA-00000000-00\",\r\n gaTestMode: true,\r\n aiInstrumentationKey: '9dc9116c-58a6-4304-9f5d-2ba1d9e92798'\r\n }\r\n};\r\n\r\nconst prod = {\r\n ADFS_CONFIG: {\r\n clientID: 'adf8b58d-6cc3-42e4-8f13-4ce2d9db6fdf',\r\n authority: \"https://login.dataforce.de/\",\r\n tenant: \"adfs\",\r\n redirectUri: \"https://iris-views.dataforce.de/api/auth\",\r\n postLogoutRedirectUri: \"https://iris-views.dataforce.de\"\r\n },\r\n APP_CONFIG: {\r\n apiPath: \"/api\",\r\n tableauHost: process.env.REACT_APP_TABLEAU_HOST,\r\n gaTrackingID: \"UA-48082753-25\",\r\n gaTestMode: false,\r\n aiInstrumentationKey: '7edbb63c-0d40-46c2-bea4-ca4a5fc7286e'\r\n }\r\n};\r\n\r\nvar config;\r\n\r\n// Default to dev if not set\r\nswitch (process.env.REACT_APP_STAGE) {\r\n case 'prod':\r\n config = prod;\r\n break;\r\n case 'test':\r\n config = test;\r\n break;\r\n case 'stg':\r\n config = stg;\r\n break;\r\n case 'dev':\r\n config = dev;\r\n break;\r\n default:\r\n config = dev; \r\n\r\n}\r\nexport default {\r\n // Add common config values here\r\n ...config\r\n};","import { inject } from 'adal-angular/dist/adal.min.js'\r\nimport config from '../config'\r\n\r\nconst adalConfig = {\r\n tenant: config.ADFS_CONFIG.tenant,\r\n clientId: config.ADFS_CONFIG.clientID,\r\n cacheLocation: 'localStorage',\r\n instance: config.ADFS_CONFIG.authority,\r\n redirectUri: config.ADFS_CONFIG.redirectUri,\r\n extraQueryParameter: `scope=openid%20email%20profile%20${config.ADFS_CONFIG.clientID}&response_mode=form_post`\r\n};\r\n\r\nexport const authContext = inject(adalConfig);\r\n\r\nexport async function invokeApi({\r\n path,\r\n method = \"GET\",\r\n headers = {},\r\n queryParams = {},\r\n body\r\n}) {\r\n if (!authContext.getCachedToken(authContext.config.clientId)) {\r\n logOut();\r\n }\r\n return fetch(`${config.APP_CONFIG.apiPath}${path}`, { method, headers: { \"Authorization\": \"Bearer \" + authContext.getCachedToken(authContext.config.clientId), \"Content-Type\": \"application/json\" }, body })\r\n}\r\n\r\nexport async function logOut() {\r\n const id_token_hint = authContext.getCachedToken(authContext.config.clientId);\r\n authContext.clearCache();\r\n window.location.href = `${config.ADFS_CONFIG.authority}${config.ADFS_CONFIG.tenant}/oauth2/logout?post_logout_redirect_uri=${encodeURIComponent(config.ADFS_CONFIG.postLogoutRedirectUri)}${id_token_hint ? \"&id_token_hint=\" + id_token_hint : \"\"}`\r\n}\r\n\r\n\r\nexport function getTokenClaim(key)\r\n{\r\n const token = authContext.getCachedToken(authContext.config.clientId);\r\n\r\n\tconst tokenParts = token.split('.');\r\n\tif (tokenParts.length < 3) {\r\n\t\treturn null;\r\n\t}\r\n\r\n\tconst payload = tokenParts[1];\r\n\tconst decodedPayload = JSON.parse(window.atob(payload));\r\n\r\n\treturn decodedPayload[key];\r\n}","export default __webpack_public_path__ + \"static/media/logo.fd494b25.svg\";","export default __webpack_public_path__ + \"static/media/main-big.5caf50c9.jpg\";","export default __webpack_public_path__ + \"static/media/arrows.4edfebe3.svg\";","import React from \"react\";\r\nimport arrows from '../../assets/img/arrows.svg';\r\nimport \"./LoaderButton.css\";\r\n\r\nexport default ({\r\n isLoading,\r\n text,\r\n loadingText,\r\n className = \"\",\r\n disabled = false,\r\n customStyles,\r\n ...props\r\n}) => {\r\n\r\n const styles = {\r\n backgroundColor: \"white\",\r\n color: \"#1e3553\",\r\n ...customStyles\r\n }\r\n\r\n return (\r\n
\r\n {isLoading && \"spinner\"}\r\n {!isLoading ? text : loadingText}\r\n
\r\n )\r\n}","import React, { Component } from 'react';\r\nimport translations from '../../../translations.json';\r\nimport links from '../../../links.json';\r\nimport logo from '../../../assets/img/logo.svg';\r\nimport background from '../../../assets/img/main-big.jpg';\r\nimport './Login.css';\r\n\r\nimport LoaderButton from '../../shared/LoaderButton'\r\n\r\nexport default class Login extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n isOpenLangPicker: false,\r\n isOpenContactPicker: false\r\n };\r\n }\r\n\r\n onClickLangPicker = (value) => {\r\n if ((value !== undefined) && this.state.isOpenLangPicker) this.setState({ isOpenLangPicker: !!value });\r\n this.setState(({ isOpenLangPicker }) => ({ isOpenLangPicker: !isOpenLangPicker }));\r\n }\r\n\r\n onClickContactPicker = (value) => {\r\n if ((value !== undefined) && this.state.isOpenContactPicker) this.setState({ isOpenContactPicker: !!value });\r\n this.setState(({ isOpenContactPicker }) => ({ isOpenContactPicker: !isOpenContactPicker }));\r\n }\r\n\r\n render() {\r\n const { activeLanguage, isLoading, login, onChangeLanguage } = this.props;\r\n const { isOpenLangPicker, isOpenContactPicker } = this.state;\r\n const { onClickLangPicker, onClickContactPicker } = this;\r\n\r\n function openProductVideo(product_video_url) {\r\n debugger;\r\n window.open( product_video_url, '_blank' ).focus();\r\n }\r\n\r\n return (\r\n
\r\n \"beautifull\r\n
\r\n
\r\n
\r\n \"IRIS\r\n
\r\n
\r\n
\r\n

\r\n {translations[activeLanguage].values['welcome_1']} DataForce, {translations[activeLanguage].values['welcome_2']}\r\n

\r\n
\r\n login()}\r\n isLoading={isLoading}\r\n text={translations[activeLanguage].values['login']}\r\n loadingText={\"Loading...\"}\r\n />\r\n
\r\n
\r\n window.open(translations[activeLanguage].values['product_video_url'], '_blank' ).focus()}\r\n text={translations[activeLanguage].values['product_video']}\r\n />\r\n
\r\n
\r\n
\r\n
\r\n

{translations[activeLanguage].values['language']}:

\r\n
\r\n
\r\n
onChangeLanguage(activeLanguage)} className=\"login__language\">{translations[activeLanguage].name}
\r\n {\r\n translations.map(({ name }) => name).reduce((accum, lang, idx) => idx !== activeLanguage ? [...accum, { lang, idx }] : accum, [])\r\n .map(({ lang, idx }, index) => (\r\n onChangeLanguage(idx)}\r\n >\r\n {lang}\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, { Component } from 'react';\r\nimport { authContext } from '../../../libs/adal'\r\n\r\nimport Login from './Login'\r\n\r\nexport default class LoginContainer extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n isLoading: false,\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.props.ai.trackPageView(\"login\");\r\n }\r\n\r\n login = () => {\r\n this.setState({\r\n isLoading: true\r\n });\r\n authContext.login();\r\n }\r\n\r\n render() {\r\n\r\n const loginProps = {\r\n login: this.login,\r\n isLoading: this.state.isLoading,\r\n onChangeLanguage: this.props.onChangeLanguage,\r\n activeLanguage: this.props.activeLanguage\r\n }\r\n return (\r\n \r\n )\r\n }\r\n}","import React, { Component, Fragment } from 'react';\r\nimport Lottie from 'lottie-react'\r\nimport Spinner from '../../../../assets/lottie/spinner.json'\r\nimport translations from '../../../../translations.json'\r\n\r\n\r\n\r\nexport default class LoadingIndicatorOverlay extends Component {\r\n\r\n\r\n\r\n render() {\r\n\r\n return (\r\n \r\n
\r\n \r\n
\r\n
\r\n\r\n )\r\n }\r\n}","import React, { Component } from 'react';\r\nimport LoadingIndicatorOverlay from \"./LoadingIndicatorOverlay/LoadingIndicatorOverlay\";\r\n\r\n\r\nexport default class Workspace extends Component {\r\n render() {\r\n if (this.props.timeoutHandler)\r\n {\r\n this.props.timeoutHandler();\r\n }\r\n\r\n return (\r\n
\r\n {this.props.pageHeader}\r\n {this.props.sidebar}\r\n\r\n
\r\n { this.props.isLoadingResources ? :
}\r\n {this.props.content}\r\n\r\n
\r\n\r\n
\r\n )\r\n }\r\n}","export default __webpack_public_path__ + \"static/media/logo-without-text.bd56f947.svg\";","export default __webpack_public_path__ + \"static/media/menu.c644a77e.svg\";","export default __webpack_public_path__ + \"static/media/work-revert.ced69bd2.svg\";","export default __webpack_public_path__ + \"static/media/work-update.bf67ecf7.svg\";","export default __webpack_public_path__ + \"static/media/work-full-screen.ee4d7f1f.svg\";","export default __webpack_public_path__ + \"static/media/work-profile@3x.a2f8ce00.svg\";","export default __webpack_public_path__ + \"static/media/question-circle-fill.70273e65.svg\";","export default __webpack_public_path__ + \"static/media/mail.85c43cc3.svg\";","export default __webpack_public_path__ + \"static/media/mail-active.554523fb.svg\";","export default __webpack_public_path__ + \"static/media/phone.30da13c9.svg\";","export default __webpack_public_path__ + \"static/media/phone-active.3da3ef40.svg\";","export default __webpack_public_path__ + \"static/media/mortarboard.64192e06.svg\";","export default __webpack_public_path__ + \"static/media/mortarboard-active.b2797644.svg\";","export default __webpack_public_path__ + \"static/media/work-item2.6edbc5bc.svg\";","export default __webpack_public_path__ + \"static/media/work-item3.ec3b0d08.svg\";","export default __webpack_public_path__ + \"static/media/impersonate.837887f3.svg\";","export default __webpack_public_path__ + \"static/media/impersonate-alt.7eb451eb.svg\";","export default __webpack_public_path__ + \"static/media/work-item-alt2.f2de979f.svg\";","export default __webpack_public_path__ + \"static/media/work-item-alt3.f9ba773e.svg\";","export default __webpack_public_path__ + \"static/media/toolbar-inactive.87943d5c.svg\";","export default __webpack_public_path__ + \"static/media/toolbar-active.fb12116b.svg\";","import React, { Component } from 'react';\r\nimport translations from '../../../../translations.json'\r\nimport Lottie from 'lottie-react'\r\n\r\nimport logo from '../../../../assets/img/work-logo@2x.png';\r\nimport logoWithoutText from '../../../../assets/img/logo-without-text.svg';\r\nimport menu from '../../../../assets/img/menu.svg';\r\nimport revert from '../../../../assets/img/work-revert.svg';\r\nimport update from '../../../../assets/img/work-update.svg';\r\nimport full from '../../../../assets/img/work-full-screen.svg';\r\nimport profile from '../../../../assets/img/work-profile@3x.svg';\r\nimport helpRound from '../../../../assets/img/question-circle-fill.svg';\r\nimport mail from '../../../../assets/img/mail.svg';\r\nimport mailActive from '../../../../assets/img/mail-active.svg';\r\nimport phone from '../../../../assets/img/phone.svg';\r\nimport phoneActive from '../../../../assets/img/phone-active.svg';\r\nimport mortarboard from '../../../../assets/img/mortarboard.svg';\r\nimport mortarboardActive from '../../../../assets/img/mortarboard-active.svg';\r\nimport linkIcon from '../../../../assets/img/work-item2.svg';\r\nimport logoutIcon from '../../../../assets/img/work-item3.svg';\r\nimport impersonateIcon from '../../../../assets/img/impersonate.svg';\r\nimport impersonateIconAlt from '../../../../assets/img/impersonate-alt.svg';\r\nimport linkIconAlt from '../../../../assets/img/work-item-alt2.svg';\r\nimport logoutIconAlt from '../../../../assets/img/work-item-alt3.svg';\r\nimport toolbarinactive from '../../../../assets/img/toolbar-inactive.svg';\r\nimport toolbaractive from '../../../../assets/img/toolbar-active.svg';\r\nimport loader from '../../../../assets/lottie/loader.json'\r\n\r\nexport default class PageHeader extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n isOpenedProfile: false,\r\n isOpenedContact: false,\r\n isOpenLangPicker: false,\r\n isMenuOpen: true,\r\n hoverProfileNumber: -1,\r\n };\r\n }\r\n\r\n //TODO Load profile items from container\r\n profileItemsAction = idx => {\r\n this.setState({ isOpenedProfile: false })\r\n if(!this.props.userHasImpersonationRights){\r\n idx = idx + 1;\r\n }\r\n switch (idx) {\r\n case 0: this.props.showImpersonationModal(); break;\r\n case 1: this.props.redirectToFleetbase(); break;\r\n case 2: this.props.redirectToIrisnet(); break;\r\n\t\t\tcase 3: this.props.handleLogout(); break;\r\n default: break;\r\n }\r\n }\r\n\r\n\r\n onClickLangPicker = (value) => {\r\n if ((value !== undefined) && this.state.isOpenLangPicker) this.setState({ isOpenLangPicker: !!value });\r\n this.setState(({ isOpenLangPicker }) => ({ isOpenLangPicker: !isOpenLangPicker }));\r\n }\r\n\r\n onClickMenuToggle = () => {\r\n this.props.handleMenuToggle( !this.props.isMenuOpen );\r\n }\r\n\r\n render() {\r\n const { activeLanguage, onChangeLanguage, revertAllAsync, toggleToolbar, refreshDataAsync, openFullScreen, user } = this.props;\r\n const { isOpenedProfile, isOpenedContact, isOpenLangPicker, hoverProfileNumber, hoverContactNumber } = this.state;\r\n const profileItems = [\r\n { name: translations[activeLanguage].values['go_fleetbase'], img: linkIcon, imgAlt: linkIconAlt },\r\n { name: translations[activeLanguage].values['go_irisnet'], img: linkIcon, imgAlt: linkIconAlt },\r\n { name: translations[activeLanguage].values['log_out'], img: logoutIcon, imgAlt: logoutIconAlt }\r\n ];\r\n\r\n if (this.props.userHasImpersonationRights)\r\n {\r\n\t\t\tprofileItems.unshift({ name: \"Impersonate\", img: impersonateIcon, imgAlt: impersonateIconAlt });\r\n }\r\n\r\n let profileIconStyle = {};\r\n if (this.props.currentImpersonation && this.props.currentImpersonation.length)\r\n {\r\n profileIconStyle.backgroundColor = \"red\";\r\n }\r\n\r\n return (\r\n
\r\n
\r\n
\r\n {\r\n this.onClickMenuToggle();\r\n if (isOpenedProfile) this.setState({ isOpenedProfile: false });\r\n if (isOpenedContact) this.setState({ isOpenedContact: false });\r\n if (isOpenLangPicker) this.setState({ isOpenLangPicker: false });\r\n }}\r\n >\r\n\r\n \"Mobile\r\n
\r\n
\r\n \"IRIS\r\n \"IRIS\r\n
\r\n
\r\n {this.props.isLoadingResources ? : null }\r\n
\r\n \r\n
\r\n
\r\n
\r\n \"revert\"\r\n
\r\n
\r\n \"revert\"\r\n
\r\n
\r\n \"update\"\r\n
\r\n\r\n
\r\n \"full\r\n
\r\n
\r\n
\r\n
\r\n {\r\n this.onClickLangPicker();\r\n if (isOpenedProfile) this.setState({ isOpenedProfile: false });\r\n if (isOpenedContact) this.setState({ isOpenedContact: false });\r\n }}\r\n className=\"workspace__language-click-container\"\r\n >\r\n {translations[activeLanguage].values['language']}: \r\n {translations[activeLanguage].name}\r\n \r\n
\r\n {(!translations || !translations.length)\r\n ? null\r\n : this.languageList = list}\r\n >\r\n
\r\n {translations.map(({ name }) => name).map((lang, idx) => (\r\n {\r\n onChangeLanguage(idx);\r\n this.onClickLangPicker();\r\n }}\r\n >\r\n {lang}\r\n
\r\n ))}\r\n \r\n }\r\n \r\n
\r\n\r\n\r\n\r\n
\r\n {\r\n if (isOpenLangPicker) this.onClickLangPicker();\r\n this.setState(({ isOpenedContact }) => ({ isOpenedContact: !isOpenedContact }));\r\n if (isOpenedProfile) this.setState({ isOpenedProfile: false });\r\n }}\r\n className=\"workspace__contact-img\" src={helpRound} alt=\"contact\"\r\n />\r\n this.languageList = list}\r\n >\r\n {(translations[activeLanguage].values['contactPhone'] === \"\")\r\n ? null\r\n : \r\n
\r\n this.setState({hoverContactNumber: 1})}\r\n onMouseLeave={() => this.setState({hoverContactNumber: -1})}\r\n key={1}\r\n >\r\n {name}/\r\n {translations[activeLanguage].values['contactPhone']}\r\n \r\n
\r\n }\r\n\r\n\r\n
\r\n this.setState({hoverContactNumber: 2})}\r\n onMouseLeave={() => this.setState({hoverContactNumber: -1})}\r\n key={2}\r\n >\r\n {name}/\r\n {translations[activeLanguage].values['contactMail']}\r\n \r\n\r\n
\r\n this.setState({hoverContactNumber: 3})}\r\n onMouseLeave={() => this.setState({hoverContactNumber: -1})}\r\n key={3}\r\n >\r\n {name}/\r\n {translations[activeLanguage].values['bookingText']}\r\n \r\n\r\n
\r\n \r\n\r\n\r\n
\r\n {\r\n if (isOpenLangPicker) this.onClickLangPicker();\r\n this.setState(({isOpenedProfile}) => ({isOpenedProfile: !isOpenedProfile}));\r\n if (isOpenedContact) this.setState({isOpenedContact: false});\r\n }}\r\n className=\"workspace__profile-img\" src={profile} alt=\"profile\"\r\n />\r\n this.languageList = list}\r\n >\r\n
\r\n {profileItems.map(({ name, img, imgAlt }, idx) => (\r\n this.setState({ hoverProfileNumber: idx })}\r\n onMouseLeave={() => this.setState({ hoverProfileNumber: -1 })}\r\n key={idx}\r\n onClick={() => this.profileItemsAction(idx)}\r\n >\r\n {name}\r\n {name}\r\n
)\r\n )}\r\n\r\n \r\n\r\n \r\n \r\n
)\r\n }\r\n}","export default \"data:image/png;base64,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\"","export default __webpack_public_path__ + \"static/media/work-pdf-file@2x.8389db6b.svg\";","export default __webpack_public_path__ + \"static/media/work-image-file@2x.054933de.svg\";","export default __webpack_public_path__ + \"static/media/work-data-file@2x.c561a8eb.svg\";","export default __webpack_public_path__ + \"static/media/work-crosstab-file@2x.4ae9fb27.svg\";","import React, { Component } from 'react';\r\nimport translations from '../../../../translations.json'\r\nimport { Collapse } from 'reactstrap';\r\n\r\nimport pdfFile from '../../../../assets/img/work-pdf-file@2x.svg'\r\nimport imageFile from '../../../../assets/img/work-image-file@2x.svg';\r\nimport dataFile from '../../../../assets/img/work-data-file@2x.svg';\r\nimport crosstabFile from '../../../../assets/img/work-crosstab-file@2x.svg';\r\n\r\nexport default class Sidebar extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n active: false,\r\n searchQuery: '',\r\n sitesList: null,\r\n };\r\n }\r\n\r\n handleChange = (e) => {\r\n //Uncollapse currently collapsed site in menu, if any site is collapsed\r\n // this.props.toggle(\"___nosite\");\r\n\r\n const searchPhrase = e.target.value.toLowerCase().trim();\r\n\r\n let results = [];\r\n\r\n if (searchPhrase === \"\") {\r\n results = this.props.sites;\r\n }\r\n else {\r\n const allSites = this.props.sites;\r\n\r\n function nameContains(elementName, input){\r\n return elementName.toLowerCase().includes(input);\r\n }\r\n\r\n for (let i=0;i< allSites.length;i++){\r\n const site = allSites[i];\r\n\r\n //site name matches, take all workbooks\r\n if (nameContains(site.name, searchPhrase)){\r\n results.push(site);\r\n }\r\n //site name does not match, check workbooks and only take workbooks with matching name\r\n else {\r\n let matchingWorkbooks = [];\r\n\r\n for ( let j = 0; j < site.workbooks.length; j++ ) {\r\n const workbook = site.workbooks[j];\r\n\r\n // workbook name matches, take the workbook\r\n if (nameContains(workbook.name, searchPhrase)){\r\n matchingWorkbooks.push(workbook);\r\n }\r\n //workbook name does not match, check dashboards and only take dashboards with matching name\r\n else {\r\n let matchingDashboards = [];\r\n for ( let k = 0; k < workbook.dashboards.length; k++ ) {\r\n const dashboard = workbook.dashboards[k];\r\n\r\n // workbook name matches, take the workbook\r\n if (nameContains(dashboard.name, searchPhrase)){\r\n matchingDashboards.push(dashboard);\r\n }\r\n }\r\n if (matchingDashboards.length)\r\n {\r\n const dashboardsOnlyObject = { dashboards: matchingDashboards };\r\n\r\n matchingWorkbooks.push({ ...workbook, ...dashboardsOnlyObject });\r\n }\r\n }\r\n }\r\n\r\n if (matchingWorkbooks.length)\r\n {\r\n const workbooksOnlyObject = { workbooks: matchingWorkbooks };\r\n\r\n results.push({ ...site, ...workbooksOnlyObject });\r\n }\r\n\r\n\r\n }\r\n }\r\n }\r\n\r\n if (results.length === 1){\r\n this.props.openSite(results[0].name);\r\n }\r\n\r\n this.setState({\r\n searchQuery: e.target.value,\r\n sitesList: results\r\n });\r\n }\r\n\r\n \r\n render() {\r\n const { activeLanguage, sites, goToNewPath, activeWorkbookId, activeDashboard, downloadImage, downloadFile, exportToPDF, exportAsCrosstab, toggle, openSite, collapse } = this.props;\r\n const sitesToDisplay = this.state.sitesList || sites || [];\r\n\r\n return (\r\n \r\n )\r\n }\r\n}\r\n\r\n","import React, { Component, Fragment } from 'react';\r\nimport Lottie from 'lottie-react'\r\nimport BrokenStick from '../../../../assets/lottie/broken_stick_error.json'\r\nimport translations from '../../../../translations.json'\r\n\r\n\r\n\r\nexport default class Error extends Component {\r\n\r\n\r\n\r\n render() {\r\n\r\n return (\r\n \r\n \r\n
{translations[this.props.activeLanguage].values[this.props.errorType]}
\r\n
\r\n\r\n )\r\n }\r\n}","import React, { Component } from 'react';\r\nimport Modal from 'react-modal';\r\nimport LoaderButton from '../../../shared/LoaderButton'\r\nimport translations from '../../../../translations.json';\r\nimport './Eula.css'\r\n\r\nconst customStyles = {\r\n content: {\r\n top: '50%',\r\n left: '50%',\r\n right: '50%',\r\n bottom: 'auto',\r\n marginRight: '-50%',\r\n transform: 'translate(-50%, -50%)',\r\n zIndex: \"100\",\r\n padding: \"80px\",\r\n textAlign: \"justify\",\r\n height: \"80%\",\r\n width: \"50%\",\r\n overflowY: \"scroll\",\r\n boxShadow: \"0 14px 28px rgba(0,0,0,0.25), 0 10px 10px rgba(0,0,0,0.22)\"\r\n\r\n },\r\n overlay: {\r\n zIndex: 100,\r\n backgroundColor: 'rgba(50, 50, 50, 0.75)'\r\n }\r\n};\r\n\r\nexport default class Eula extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n };\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n

{translations[this.props.activeLanguage].values['enduseragreement_title']}

\r\n
\r\n
    \r\n
  1. {translations[this.props.activeLanguage].values['enduseragreement_li1']}\r\n
      \r\n
    1. {translations[this.props.activeLanguage].values['enduseragreement_ol_li1_text1']}{translations[this.props.activeLanguage].values['enduseragreement_ol_li1_highlight1']}{translations[this.props.activeLanguage].values['enduseragreement_ol_li1_text2']}{translations[this.props.activeLanguage].values['enduseragreement_ol_li1_highlight2']}{translations[this.props.activeLanguage].values['enduseragreement_ol_li1_text3']}
    2. \r\n
    3. {translations[this.props.activeLanguage].values['enduseragreement_ol_li2']}
    4. \r\n
    \r\n
  2. \r\n
  3. {translations[this.props.activeLanguage].values['enduseragreement_li2']}
  4. \r\n
  5. \r\n {translations[this.props.activeLanguage].values['enduseragreement_li3_p1']}\r\n

    \r\n {translations[this.props.activeLanguage].values['enduseragreement_li3_p2']}\r\n
  6. \r\n
  7. {translations[this.props.activeLanguage].values['enduseragreement_li4']}
  8. \r\n
  9. {translations[this.props.activeLanguage].values['enduseragreement_li5']}
  10. \r\n
\r\n
\r\n this.props.consentToEula()}\r\n isLoading={this.props.isLoadingEulaConsent}\r\n text={translations[this.props.activeLanguage].values['agree']}\r\n loadingText={\"Loading...\"}\r\n customStyles={{backgroundColor: \"#235a99\", color: \"white\"}}\r\n />\r\n \r\n )\r\n }\r\n}","import React, { Component } from 'react';\r\nimport Modal from 'react-modal';\r\nimport './Impersonation.css';\r\nimport translations from '../../../../translations.json';\r\nimport { invokeApi } from '../../../../libs/adal'\r\nimport {Button} from \"reactstrap\";\r\n\r\nconst customStyles = {\r\n\tcontent: {\r\n\t\tdisplay: 'flex',\r\n\t\tflexDirection: 'column',\r\n\t\ttop: '50%',\r\n\t\tleft: '50%',\r\n\t\tright: '50%',\r\n\t\tbottom: 'auto',\r\n\t\tmarginRight: '-50%',\r\n\t\ttransform: 'translate(-50%, -50%)',\r\n\t\tzIndex: \"100\",\r\n\t\tpadding: \"50px\",\r\n\t\ttextAlign: \"justify\",\r\n\t\theight: \"80%\",\r\n\t\twidth: \"50%\",\r\n\t\tboxShadow: \"0 14px 28px rgba(0,0,0,0.25), 0 10px 10px rgba(0,0,0,0.22)\"\r\n\t},\r\n\toverlay: {\r\n\t\tzIndex: 100,\r\n\t\tbackgroundColor: 'rgba(50, 50, 50, 0.75)'\r\n\t}\r\n};\r\n\r\nexport default class Impersonation extends Component {\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\t\tthis.state = {\r\n\t\t\tusernameToImpersonate: \"\",\r\n\t\t\tallUsers: [],\r\n\t\t\tfilteredUsers: [],\r\n\t\t\tusernameFilter: \"\",\r\n\t\t\tloading: true\r\n\t\t}\r\n\t};\r\n\r\n\tcomponentDidUpdate(prevProps) {\r\n\t\tif (!prevProps.impersonationModalOpen && this.props.impersonationModalOpen) {\r\n\t\t\tthis.fetchUsers();\r\n\t\t}\r\n\t}\r\n\r\n\tfilterUsers = (allUsers, search) => {\r\n\t\tif (!allUsers || !allUsers.length){\r\n\t\t\treturn [];\r\n\t\t}\r\n\r\n\t\tconst s = search.trim().toLowerCase();\r\n\r\n\t\tif (!s){\r\n\t\t\treturn allUsers;\r\n\t\t}\r\n\r\n\t\treturn allUsers.filter((el) => el.name.toLowerCase().indexOf(s) >= 0\r\n\t\t\t\t\t\t\t\t\t\t|| el.email.toLowerCase().indexOf(s) >= 0\r\n\t\t\t\t\t\t\t\t\t\t|| el.samAccountName.toLowerCase().indexOf(s) >= 0);\r\n\t};\r\n\r\n\tfetchUsers = () => {\r\n\t\tinvokeApi({ path: \"/admin/tableauusers\" })\r\n\t\t\t.then((response) => {\r\n\t\t\t\tif (response.ok) {\r\n\t\t\t\t\treturn response.json();\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn Promise.reject(\"Unable to get users\");\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.then((tableauUsers) => {\r\n\t\t\t\tthis.setState({\r\n\t\t\t\t\tallUsers: tableauUsers,\r\n\t\t\t\t\tfilteredUsers: this.filterUsers(tableauUsers, this.state.usernameFilter)\r\n\t\t\t\t});\r\n\t\t\t})\r\n\t\t\t.finally(() => {\r\n\t\t\t\tthis.setState({\r\n\t\t\t\t\tloading: false\r\n\t\t\t\t})\r\n\t\t\t})\r\n\t};\r\n\r\n\tonRowSelected = (samAccountName) => {\r\n\t\tif (samAccountName)\r\n\t\t{\r\n\t\t\tthis.props.confirmImpersonation(samAccountName);\r\n\t\t}\r\n\t};\r\n\r\n\tusernameFilterOnChange = (e) => {\r\n\t\tthis.setState({\r\n\t\t\tusernameFilter: e.target.value,\r\n\t\t\tfilteredUsers: this.filterUsers(this.state.allUsers, e.target.value)\r\n\t\t});\r\n\t};\r\n\r\n\tmodalOnClose = () => {\r\n\t\tthis.props.confirmImpersonation(this.props.currentImpersonation);\r\n\t};\r\n\r\n\tstopImpersonation = () => {\r\n\t\tthis.props.confirmImpersonation(\"\");\r\n\t};\r\n\r\n\trender() {\r\n\t\tconst userRows = [];\r\n\t\tconst users = this.state.filteredUsers || [];\r\n\r\n\t\tfor (let i=0;i < users.length;i++)\r\n\t\t{\r\n\t\t\tconst user = users[i];\r\n\t\t\tuserRows.push(\r\n\t\t\t\t this.onRowSelected(user.samAccountName)} className={\"datarow\"} key={users[i].samAccountName}>\r\n\t\t\t\t\t{users[i].name}\r\n\t\t\t\t\t{users[i].email}\r\n\t\t\t\t\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t\t

Impersonate user

\r\n\t\t\t\t
\r\n\r\n\t\t\t\t{this.props.currentImpersonation && (\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\tCurrently impersonating {this.props.currentImpersonation}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t)}\r\n\r\n\t\t\t\t
\r\n\t\t\t\t\tFilter\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\r\n\t\t\t\t{this.state.loading ? (\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t) : (\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{userRows}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
NameEmail
\r\n\t\t\t\t\t
)\r\n\t\t\t\t}\r\n\t\t\t\r\n\t\t)\r\n\t}\r\n}","import config from '../config'\r\n\r\nfunction findDashboardSize() {\r\n var minHeight = 480;\r\n\tvar minWidth = 300;\r\n var width;\r\n var innerWidth = window.innerWidth;\r\n\t\r\n\t// The minus px here leaves us room for the header and menu. Adjust as needed.\r\n\tvar height = window.innerHeight - 65;\r\n if (innerWidth > 1024){\r\n width = innerWidth - 240;\r\n } else {\r\n width = innerWidth;\r\n }\r\n\r\n\tif (height < minHeight) {\r\n\t\theight = minHeight;\r\n\t}\r\n\r\n if (width < minWidth) {\r\n\t\twidth = minWidth;\r\n\t}\r\n\t\r\n\treturn {\r\n\t\t'width' : width,\r\n\t\t'height' : height\r\n\t}\r\n}\r\n\r\nfunction hasClass(element, className) {\r\n return (' ' + element.className + ' ').indexOf(' ' + className+ ' ') > -1;\r\n}\r\n\r\nfunction resize() {\r\n var workspaceContent = document.querySelector('.workspace__content-inside');\r\n var vizIframe = document.querySelector( '.workspace__content-inside iframe' );\r\n if (workspaceContent !== null && vizIframe !== null) {\r\n var size = findDashboardSize();\r\n var isToolbarOpen = hasClass( workspaceContent, \"toolbar-is-open\" );\r\n if ( isToolbarOpen ) {\r\n size.height += 22;\r\n }\r\n\r\n document.querySelector( '.workspace__content-inside' ).style.width = size.width + \"px\";\r\n document.querySelector( '.workspace__content-inside' ).style.height = size.height + \"px\";\r\n vizIframe.style.width = size.width + \"px\";\r\n vizIframe.style.height = size.height + \"px\";\r\n }\r\n}\r\n\r\nwindow.onresize = resize;\r\n\r\nconst Viz = (function () {\r\n\r\n var _instance;\r\n var _viz;\r\n var size = findDashboardSize();\r\n var _options = {\r\n hideTabs: true,\r\n hideToolbar: false,\r\n width: size.width + \"px\",\r\n height: size.height + \"px\",\r\n toolbarPosition: \"tableauSoftware.ToolbarPosition.TOP\",\r\n };\r\n\r\n const createViz = async (dom, pth, contentUrl, trustedTicket, callback, events, hideToolbar) => {\r\n return new Promise(function (resolve, reject) {\r\n if (dom && pth && trustedTicket) {\r\n _viz && _viz.dispose && _viz.dispose();\r\n var path = `${config.APP_CONFIG.tableauHost}/trusted/${trustedTicket}${contentUrl === \"\" ? \"\" : \"/t/\" + contentUrl}/${pth}`\r\n if (hideToolbar !== null)\r\n {\r\n _options.hideToolbar = hideToolbar;\r\n }\r\n _viz = new window.tableau.Viz(dom, path, {..._options, onFirstInteractive: callback});\r\n if(_viz) {\r\n if (events != null && events.length)\r\n {\r\n for(var i=0;i {\r\n if (!_instance) { \r\n _instance = this;\r\n }\r\n return _instance;\r\n }\r\n\r\n Viz.prototype = {\r\n getViz: () => _viz,\r\n createViz: (domEl, path, contentUrl, trustedTicket, callback, events, hideToolbar) => createViz(domEl, path, contentUrl, trustedTicket, callback, events, hideToolbar),\r\n exportToPDF: () => _viz.showExportPDFDialog(),\r\n exportToJSON: () => _viz.showExportDataDialog(),\r\n exportToImage: () => _viz.showExportImageDialog(),\r\n exportAsCrosstab: () => _viz.showExportCrossTabDialog(),\r\n revertAllAsync: () => _viz.revertAllAsync(),\r\n refreshDataAsync: () => _viz.refreshDataAsync(), \r\n addEventListener: (eventType, listener) => _viz.addEventListener(eventType, listener),\r\n removeEventListener: (eventType, listener) => _viz.removeEventListener(eventType, listener)\r\n }\r\n\r\n return Viz;\r\n}())\r\n\r\nexport default Viz;","import React, { Component } from 'react';\r\nimport Workspace from './Workspace'\r\n\r\nimport PageHeader from './PageHeader/PageHeader'\r\nimport Sidebar from './Sidebar/Sidebar'\r\nimport Error from './Error/Error'\r\nimport Eula from './Eula/Eula'\r\nimport Impersonation from './Impersonation/Impersonation'\r\n\r\nimport {getTokenClaim, invokeApi, logOut} from '../../../libs/adal'\r\nimport Viz from '../../../libs/tableau'\r\n\r\nimport './Workspace.css';\r\n\r\n\r\nexport default class WorkspaceContainer extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.sessionTimeoutHandle = null;\r\n\r\n\t\tconst emailClaim = getTokenClaim(\"email\");\r\n\t\tthis.userHasImpersonationRights = emailClaim && (emailClaim.toLowerCase().indexOf(\"@dataforce.de\") > 0 || emailClaim.toLowerCase().indexOf(\"@dataforce.it\") > 0);\r\n\r\n this.state = {\r\n viz: undefined,\r\n sites: null,\r\n activeDashboard: '',\r\n isLoadingResources: true,\r\n isLoadingEulaConsent: false,\r\n isCustomView: false,\r\n activeWorkbookId: '',\r\n error: false,\r\n errorType: 'error',\r\n userSettings: {hasUserConsentedToEula: true},\r\n hideToolbar: props.hideToolbar,\r\n isMenuOpen: false,\r\n handleToggleMenu : this.handleToggleMenu,\r\n collapse: null,\r\n\t\t\timpersonationModalOpen: false,\r\n currentImpersonation: null\r\n };\r\n this.tableauEvents = [\r\n { \"type\": window.tableau.TableauEventName.PARAMETER_VALUE_CHANGE, \"handler\": this.refreshSessionTimeout.bind(this)},\r\n { \"type\": window.tableau.TableauEventName.FILTER_CHANGE, \"handler\": this.refreshSessionTimeout.bind(this)},\r\n { \"type\": window.tableau.TableauEventName.CUSTOM_VIEW_LOAD, \"handler\": this.refreshSessionTimeout.bind(this)},\r\n { \"type\": window.tableau.TableauEventName.TAB_SWITCH, \"handler\": this.refreshSessionTimeout.bind(this)},\r\n { \"type\": window.tableau.TableauEventName.MARKS_SELECTION, \"handler\": this.refreshSessionTimeout.bind(this)},\r\n { \"type\": window.tableau.TableauEventName.URL_ACTION, \"handler\": this.refreshSessionTimeout.bind(this)},\r\n { \"type\": window.tableau.TableauEventName.STORY_POINT_SWITCH, \"handler\": this.refreshSessionTimeout.bind(this)},\r\n\r\n // needed for updating the sidebar menu, if the user clicks a tab inside the viz element\r\n { \"type\": window.tableau.TableauEventName.CUSTOM_VIEW_LOAD, \"handler\": this.highlightCurrentWorkbookInMenu.bind(this)}\r\n ];\r\n }\r\n\r\n highlightCurrentWorkbookInMenu = (event) => {\r\n let name = this.state.viz.getViz().getWorkbook().getActiveSheet().getName();\r\n this.setState({\r\n activeDashboard: name\r\n })\r\n };\r\n handleToggleMenu = (isMenuOpen) => {\r\n this.setState( {isMenuOpen: isMenuOpen});\r\n this.refreshSessionTimeout();\r\n };\r\n\r\n refreshSessionTimeout = () => {\r\n if (this.state.error) return;\r\n\r\n //console.log(\"Refreshing timer\");\r\n\r\n //var timeoutLimit = 0.75 * 60000;\r\n var timeoutLimit = 59 * 60000;\r\n \r\n if (this.sessionTimeoutHandle != null)\r\n {\r\n clearTimeout(this.sessionTimeoutHandle);\r\n this.sessionTimeoutHandle = null;\r\n }\r\n\r\n var that = this;\r\n\r\n this.sessionTimeoutHandle = setTimeout(() => {\r\n console.log(\"Timeout occured\");\r\n that.setState({ \r\n error: true,\r\n errorType: \"sessionError\"\r\n })\r\n }, timeoutLimit);\r\n\r\n return true;\r\n };\r\n\r\n componentWillUnmount() {\r\n if (this.sessionTimeoutHandle != null)\r\n {\r\n clearTimeout(this.sessionTimeoutHandle);\r\n this.sessionTimeoutHandle = null;\r\n }\r\n }\r\n\r\n parseHrefGoToPath = () => {\r\n let href = window.location.href;\r\n\r\n if ( href.includes( \"/views/\" ) ) {\r\n let breadcrumbs = href.toString().split( \"/\" );\r\n let viewsPosition;\r\n for ( let i = 0; i < breadcrumbs.length; i++ ) {\r\n if(breadcrumbs[i].match(\"views\") !=null){\r\n viewsPosition = i;\r\n }\r\n }\r\n let path = breadcrumbs[viewsPosition] + \"/\" + breadcrumbs[viewsPosition+1] + \"/\" + breadcrumbs[viewsPosition+2];\r\n let contentUrl = breadcrumbs[viewsPosition-1];\r\n let currentSite = this.state.sites.filter(function(item) {\r\n return item.name === contentUrl;\r\n });\r\n\r\n var workbooks = currentSite[0].workbooks;\r\n var id;\r\n var name;\r\n loop1:\r\n for( var i = 0; i < workbooks.length; i++ ) {\r\n var currentWorkbook = workbooks[i];\r\n for( var j = 0; j < currentWorkbook.dashboards.length; j++ ) {\r\n var currentDashboard = currentWorkbook.dashboards[j];\r\n if( currentDashboard.path === path ) {\r\n id = currentWorkbook.id;\r\n name = currentWorkbook.name;\r\n break loop1;\r\n }\r\n }\r\n }\r\n if (id === undefined || name === undefined){\r\n this.setState({\r\n error: true,\r\n isLoadingResources: false,\r\n errorType: \"workBookNotFoundError\"\r\n })\r\n } else {\r\n this.toggle(contentUrl);\r\n this.goToNewPath({path,name}, id, contentUrl, false);\r\n }\r\n }\r\n };\r\n\r\n componentDidMount() {\r\n\t\tthis.props.ai.trackPageView(\"work\");\r\n\r\n this.setState({\r\n isMenuOpen: false\r\n });\r\n\r\n this.getWorkbooks();\r\n\r\n invokeApi({ path: \"/user-settings\" })\r\n .then((response) => {\r\n if (response.ok) {\r\n return response.json();\r\n } else {\r\n return Promise.reject(\"Couldn't get user settings\");\r\n }\r\n })\r\n .then((userSettings) => {\r\n this.setState({userSettings: userSettings} );\r\n })\r\n .catch((error) => {\r\n this.props.ai.trackException(error, null, null, 4)\r\n this.setState({\r\n isLoadingResources: false\r\n })\r\n })\r\n };\r\n\r\n getWorkbooks = () => {\r\n let url = \"/dashboards\";\r\n\r\n if (this.state.currentImpersonation)\r\n {\r\n url += \"/impersonate/\" + this.state.currentImpersonation;\r\n }\r\n\r\n\t\tinvokeApi({ path: url })\r\n\t\t\t.then((response) => {\r\n\t\t\t\tif (response.ok) {\r\n\t\t\t\t\treturn response.json()\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn Promise.reject(\"Couldn't get list of dashboards\");\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.then((sites) => {\r\n\t\t\t\tif (sites[0] && sites[0].workbooks[0] && sites[0].workbooks[0].dashboards[0]) {\r\n\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\t\tsites: sites,\r\n\t\t\t\t\t\t\terror: false,\r\n\t\t\t\t\t\t\tcollapse: sites[0].name\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t//this.parseHrefGoToPath\r\n\t\t\t\t\t);\r\n\r\n\t\t\t\t\treturn this.getTicket(sites[0].contentUrl)\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\t\tsites: [],\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t//this.parseHrefGoToPath\r\n\t\t\t\t\t);\r\n\t\t\t\t\treturn Promise.reject(\"Dashboards list is empty\");\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.then((ticket) => {\r\n\t\t\t\tthis.setState({\r\n\t\t\t\t\tviz: new Viz(true)\r\n\t\t\t\t}, () => {\r\n\t\t\t\t\tthis.parseHrefGoToPath();\r\n\t\t\t\t\tconst callback = () => { this.setState({ isLoadingResources: false, }) }\r\n\t\t\t\t\tthis.state.viz.createViz(this.vizContainer, this.state.sites[0].workbooks[0].dashboards[0].path, this.state.sites[0].contentUrl, ticket, callback, this.tableauEvents, this.props.toolbarHidden).then((viz) => {\r\n\t\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\t\tactiveWorkbookId: this.state.sites[0].workbooks[0].id,\r\n\t\t\t\t\t\t\tactiveDashboard: this.state.sites[0].workbooks[0].dashboards[0].name\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t})\r\n\t\t\t\t})\r\n\r\n\t\t\t})\r\n\t\t\t.catch((error) => {\r\n\t\t\t\tthis.props.ai.trackException(error, null, null, 4);\r\n\t\t\t\tthis.setState({\r\n\t\t\t\t\terror: true,\r\n\t\t\t\t\tisLoadingResources: false\r\n\t\t\t\t});\r\n\t\t\t});\r\n };\r\n\r\n getTicket = async (contentUrl) => {\r\n let url = \"/trusted-ticket\";\r\n\r\n if (this.state.currentImpersonation)\r\n {\r\n\t\t\turl += \"/impersonate/\" + this.state.currentImpersonation;\r\n }\r\n\r\n url += \"?contentUrl=\" + contentUrl;\r\n\r\n return invokeApi({ path: url })\r\n .then((response) => {\r\n if (response.ok) {\r\n return response.text()\r\n } else {\r\n return Promise.reject(\"Coudln't get a ticket\");\r\n }\r\n })\r\n };\r\n\r\n goToNewPath = ({ path, name }, workbookId, contentUrl, isTriggeredFromSidebar) => {\r\n this.refreshSessionTimeout();\r\n if (this.state.activeWorkbookId === workbookId) {\r\n if (!this.state.isLoadingResources) {\r\n this.setState({ isLoadingResources: true, activeDashboard: name });\r\n this.state.viz.getViz().getWorkbook().activateSheetAsync(name)\r\n .then(() => {\r\n this.setState({ isLoadingResources: false });\r\n })\r\n .otherwise((error) => {\r\n this.props.ai.trackException(error, null, null, 4);\r\n this.setState({\r\n error: true,\r\n isLoadingResources: false,\r\n errorType: \"pathError\"\r\n })\r\n })\r\n }\r\n } else {\r\n this.getTicket(contentUrl)\r\n .then((ticket) => {\r\n this.setState({ isLoadingResources: true })\r\n const callback = () => {\r\n // gets called after onFirstInteractive() when the Viz Object has been initialized\r\n let href = window.location.href;\r\n if ( !isTriggeredFromSidebar && href.includes( \"/views/\" ) ) {\r\n\r\n let breadcrumbs = href.toString().split( \"/\" );\r\n let viewsPosition;\r\n for ( let i = 0; i < breadcrumbs.length; i++ ) {\r\n if(breadcrumbs[i].match(\"views\") !=null){\r\n viewsPosition = i;\r\n }\r\n }\r\n let userGuid = breadcrumbs[viewsPosition+3];\r\n\r\n if ( userGuid !== undefined ) {\r\n this.setState({\r\n isCustomView: true\r\n });\r\n let path = breadcrumbs[viewsPosition] + \"/\" + breadcrumbs[viewsPosition+1] + \"/\" + breadcrumbs[viewsPosition+2];\r\n this.state.viz.getViz().getWorkbook().getCustomViewsAsync()\r\n .then( ( customViews ) => {\r\n if (customViews.length) {\r\n // custom views found\r\n for ( var i = 0; i < customViews.length; i++ ) {\r\n if ( customViews[i].getUrl().indexOf( path ) !== -1 ) {\r\n this.state.viz.getViz().getWorkbook().showCustomViewAsync( customViews[i].getName() ).then( () => {\r\n this.setState( {isLoadingResources: false} );\r\n } ).otherwise( ( error ) => {\r\n this.setState( {\r\n error: true,\r\n isLoadingResources: false,\r\n errorType: \"pathError\"\r\n } )\r\n } );\r\n }\r\n }\r\n } else {\r\n // no custom views found, remove the loading indicator\r\n this.setState( {\r\n isLoadingResources: false,\r\n });\r\n }\r\n })\r\n .otherwise((error) => {\r\n this.setState({\r\n error: true,\r\n isLoadingResources: false,\r\n errorType: \"pathError\"\r\n })\r\n });\r\n } else {\r\n this.setState({ isLoadingResources: false });\r\n }\r\n } else {\r\n this.setState({ isLoadingResources: false });\r\n }\r\n }\r\n\r\n this.state.viz.createViz( this.vizContainer, path, contentUrl, ticket, callback, this.tableauEvents, this.props.toolbarHidden ).then( () => {\r\n this.setState( {\r\n activeWorkbookId: workbookId,\r\n activeDashboard: name,\r\n });\r\n // Scroll to active workbook. The timeout is needed because of the collapse animation. If we would trigger the Scroll immediately, the menu wouldn't be open yet.\r\n setTimeout(function() {\r\n document.getElementById(workbookId).scrollIntoView({ behavior: \"smooth\", inline: \"nearest\" });\r\n }, 400);\r\n })\r\n\r\n }).catch((error) => {\r\n this.props.ai.trackException(error, null, null, 4)\r\n this.setState({\r\n error: true,\r\n isLoadingResources: false,\r\n errorType: \"pathError\"\r\n })\r\n })\r\n }\r\n // In case of mobile view, also close the menu after a click.\r\n if (window.innerWidth < 1024){\r\n this.setState( {isMenuOpen: false});\r\n }\r\n };\r\n\r\n injectTimerRefresh(callback)\r\n {\r\n this.refreshSessionTimeout.apply(this);\r\n callback();\r\n }\r\n\r\n hasViz = () => this.state.viz && this.state.viz.getViz();\r\n exportToPDF = () => this.hasViz() && this.refreshSessionTimeout() && this.state.viz.exportToPDF();\r\n downloadFile = () => this.hasViz() && this.refreshSessionTimeout() && this.state.viz.exportToJSON();\r\n downloadImage = () => this.hasViz() && this.refreshSessionTimeout() && this.state.viz.exportToImage();\r\n exportAsCrosstab = () => this.hasViz() && this.refreshSessionTimeout() && this.state.viz.exportAsCrosstab();\r\n revertAllAsync = () => {\r\n if (this.hasViz()) {\r\n this.setState({ isLoadingResources: true });\r\n this.state.viz.revertAllAsync().then(() => { this.setState({ isLoadingResources: false }) })\r\n this.refreshSessionTimeout();\r\n }\r\n };\r\n refreshDataAsync = () => {\r\n if (this.hasViz()) {\r\n this.setState({ isLoadingResources: true });\r\n this.state.viz.refreshDataAsync().then(() => { this.setState({ isLoadingResources: false }) })\r\n this.refreshSessionTimeout();\r\n }\r\n };\r\n \r\n redirectToFleetbase = () => window.open(`https://www.fleetbase.de/index.php`)\r\n redirectToIrisnet = () => window.open(`https://iris-net.dataforce.de`)\r\n\r\n openFullScreen = () => {\r\n if (!this.hasViz()) return;\r\n const el = this.vizContainer.parentNode;\r\n if (el.requestFullscreen) el.requestFullscreen();\r\n else if (el.mozRequestFullScreen) el.mozRequestFullScreen();\r\n else if (el.webkitRequestFullscreen) el.webkitRequestFullscreen();\r\n else if (el.msRequestFullscreen) el.msRequestFullscreen();\r\n this.refreshSessionTimeout();\r\n };\r\n\r\n consentToEula = () => {\r\n this.setState({\r\n isLoadingEulaConsent: true\r\n });\r\n invokeApi({method: \"POST\", path: \"/user-settings/consent\" })\r\n .then((response) => {\r\n if (response.ok) {\r\n this.setState({ userSettings: {...this.state.userSettings, hasUserConsentedToEula: true} });\r\n } else {\r\n return Promise.reject(\"Couldn't register consent to EULA.\");\r\n }\r\n })\r\n .catch((error) => {\r\n this.props.ai.trackException(error, null, null, 4)\r\n this.setState({\r\n isLoadingEulaConsent: false\r\n })\r\n })\r\n\r\n };\r\n\r\n confirmImpersonation = (usernameToImpersonate) => {\r\n if (usernameToImpersonate != this.state.currentImpersonation)\r\n {\r\n\t\t\tthis.setState({\r\n sites: [],\r\n\t\t\t\tisLoadingResources: true,\r\n\t\t\t\timpersonationModalOpen: false,\r\n\t\t\t\tcurrentImpersonation: usernameToImpersonate\r\n\t\t\t},() => {\r\n\t\t\t\tthis.getWorkbooks();\r\n\t\t\t});\r\n }\r\n else\r\n {\r\n\t\t\tthis.setState({\r\n\t\t\t\timpersonationModalOpen: false\r\n });\r\n }\r\n };\r\n\r\n\tshowImpersonationModal = () => {\r\n\t\tthis.setState({\r\n\t\t\timpersonationModalOpen: true\r\n\t\t})\r\n\t};\r\n\r\n toggle = (siteName) => {\r\n if (!this.state.collapse || siteName !== this.state.collapse) {\r\n this.setState({\r\n collapse: siteName\r\n });\r\n } else if (this.state.collapse === siteName) {\r\n this.setState({ collapse: false })\r\n }\r\n this.refreshSessionTimeout();\r\n }\r\n\r\n openSite = (siteName) => {\r\n if (!this.state.collapse || siteName !== this.state.collapse) {\r\n this.setState({\r\n collapse: siteName\r\n });\r\n }\r\n this.refreshSessionTimeout();\r\n };\r\n\r\n\r\n\r\n render() {\r\n const pageHeaderProps = {\r\n handleLogout: logOut,\r\n revertAllAsync: this.revertAllAsync,\r\n openFullScreen: this.openFullScreen,\r\n refreshDataAsync: this.refreshDataAsync,\r\n toggleToolbar: this.props.toggleToolbarVisibility,\r\n isToolbarHidden: this.props.toolbarHidden,\r\n activeLanguage: this.props.activeLanguage,\r\n onClickLangPicker: this.props.onClickLangPicker,\r\n onChangeLanguage: this.props.onChangeLanguage,\r\n isOpenLangPicker: this.props.isOpenLangPicker,\r\n redirectToFleetbase: this.redirectToFleetbase,\r\n redirectToIrisnet: this.redirectToIrisnet,\r\n isLoadingResources: this.state.isLoadingResources,\r\n user: this.props.user,\r\n isMenuOpen: this.state.isMenuOpen,\r\n handleMenuToggle: this.handleToggleMenu,\r\n\t\t\tshowImpersonationModal: this.showImpersonationModal,\r\n currentImpersonation: this.state.currentImpersonation,\r\n\t\t\tuserHasImpersonationRights: this.userHasImpersonationRights\r\n };\r\n\r\n const sidebarProps = {\r\n activeLanguage: this.props.activeLanguage,\r\n sites: this.state.sites,\r\n goToNewPath: this.goToNewPath,\r\n activeWorkbookId: this.state.activeWorkbookId,\r\n activeDashboard: this.state.activeDashboard,\r\n downloadImage: this.downloadImage,\r\n downloadFile: this.downloadFile,\r\n exportToPDF: this.exportToPDF,\r\n exportAsCrosstab : this.exportAsCrosstab,\r\n toolbarHidden: this.props.toolbarHidden,\r\n isMenuOpen: this.state.isMenuOpen,\r\n toggle: this.toggle,\r\n openSite: this.openSite,\r\n collapse: this.state.collapse,\r\n };\r\n\r\n const errorProps = {\r\n activeLanguage: this.props.activeLanguage,\r\n errorType: this.state.errorType\r\n };\r\n\r\n const eulaProps = {\r\n activeLanguage: this.props.activeLanguage,\r\n consentToEula: this.consentToEula,\r\n hasUserConsentedToEula: this.state.userSettings.hasUserConsentedToEula,\r\n isLoadingEulaConsent: this.state.isLoadingEulaConsent,\r\n pdfPath: \"eula.pdf\"\r\n };\r\n\r\n\t\tconst impersonationProps = {\r\n\t\t\tactiveLanguage: this.props.activeLanguage,\r\n currentImpersonation: this.state.currentImpersonation,\r\n\t\t\timpersonationModalOpen: this.state.impersonationModalOpen,\r\n\t\t\tconfirmImpersonation: this.confirmImpersonation\r\n\t\t};\r\n\r\n const workspaceProps = {\r\n toolbarHidden: this.props.toolbarHidden,\r\n isMenuOpen: this.state.isMenuOpen,\r\n isLoadingResources: this.state.isLoadingResources,\r\n isCustomView: this.state.isCustomView,\r\n };\r\n\r\n return (\r\n \r\n \r\n {this.userHasImpersonationRights && (\r\n\t\t\t\t\t\r\n )}\r\n }\r\n content={this.state.error ? :
this.vizContainer = el}>
}\r\n sidebar={}\r\n timeoutHandler={this.refreshSessionTimeout.bind(this)}\r\n />\r\n
\r\n )\r\n }\r\n}","import React, { Component } from \"react\";\r\n\r\nimport { authContext } from './libs/adal'\r\nimport \"./App.css\";\r\nimport LoginContainer from './components/pages/login/LoginContainer'\r\nimport WorkspaceContainer from './components/pages/workspace/WorkspaceContainer';\r\nimport ReactAI from 'react-appinsights';\r\n\r\nclass App extends Component { \r\n constructor(props) {\r\n super(props); \r\n this.state = {\r\n isAuthenticated: false,\r\n isAuthenticating: true,\r\n activeLanguage: 0,\r\n ai: ReactAI.ai(),\r\n user: {},\r\n error: null,\r\n toolbarHidden: false\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n if (localStorage.getItem('activeLanguage') === null) {\r\n const browserLanguage = navigator.language ? navigator.language.substr(0, 2) : navigator.userLanguage.substr(0, 2)\r\n switch (browserLanguage) {\r\n case \"de\":\r\n localStorage.setItem('activeLanguage', 2);\r\n break;\r\n case \"it\":\r\n localStorage.setItem('activeLanguage', 1);\r\n break;\r\n default:\r\n localStorage.setItem('activeLanguage', 0);\r\n }\r\n }\r\n if (+localStorage.getItem('activeLanguage')) this.setState({ activeLanguage: localStorage.activeLanguage });\r\n if (authContext.getCachedToken(authContext.config.clientId)) {\r\n const sid = authContext.getCachedUser().profile.sid;\r\n this.state.ai.setAuthenticatedUserContext(sid,null,true)\r\n this.setState({ isAuthenticated: true, isAuthenticating: false, user: authContext.getCachedUser() });\r\n }\r\n }\r\n\r\n onToggleToolbarVisibility = () => {\r\n this.setState({ toolbarHidden: !this.state.toolbarHidden });\r\n }\r\n\r\n onChangeLanguage = chosenLanguage => {\r\n if (chosenLanguage !== this.state.activeLanguage) {\r\n localStorage.setItem('activeLanguage', chosenLanguage);\r\n this.setState({ activeLanguage: chosenLanguage });\r\n }\r\n }\r\n\r\n\r\n render() {\r\n const props = { \r\n toolbarHidden: this.state.toolbarHidden,\r\n toggleToolbarVisibility: this.onToggleToolbarVisibility,\r\n isAuthenticated: this.state.isAuthenticated,\r\n isAuthenticating: this.state.isAuthenticating,\r\n error: this.state.error,\r\n isOpenLangPicker: this.state.isOpenLangPicker,\r\n activeLanguage: this.state.activeLanguage,\r\n onChangeLanguage: this.onChangeLanguage,\r\n ai: this.state.ai,\r\n user: this.state.user,\r\n }\r\n\r\n return !this.state.isAuthenticated\r\n ? \r\n : \r\n }\r\n}\r\n\r\nexport default App;","import React, { Component } from \"react\";\r\nimport translations from '../../../translations.json';\r\nimport links from '../../../links.json';\r\nimport logo from '../../../assets/img/logo.svg';\r\nimport background from '../../../assets/img/main-big.jpg';\r\nimport '../login/Login.css';\r\n\r\nclass AccessDenied extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n activeLanguage: 0,\r\n isOpenLangPicker: false,\r\n isOpenContactPicker: false\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n if (localStorage.getItem('activeLanguage') === null) {\r\n const browserLanguage = navigator.language ? navigator.language.substr(0, 2) : navigator.userLanguage.substr(0, 2)\r\n switch (browserLanguage) {\r\n case \"de\":\r\n localStorage.setItem('activeLanguage', 2);\r\n break;\r\n case \"it\":\r\n localStorage.setItem('activeLanguage', 1);\r\n break;\r\n default:\r\n localStorage.setItem('activeLanguage', 0);\r\n }\r\n }\r\n if (+localStorage.getItem('activeLanguage')) this.setState({ activeLanguage: localStorage.activeLanguage });\r\n }\r\n\r\n onChangeLanguage = chosenLanguage => {\r\n if (chosenLanguage !== this.state.activeLanguage) {\r\n localStorage.setItem('activeLanguage', chosenLanguage);\r\n this.setState({ activeLanguage: chosenLanguage });\r\n }\r\n }\r\n\r\n onClickLangPicker = (value) => {\r\n if ((value !== undefined) && this.state.isOpenLangPicker) this.setState({ isOpenLangPicker: !!value });\r\n this.setState(({ isOpenLangPicker }) => ({ isOpenLangPicker: !isOpenLangPicker }));\r\n }\r\n\r\n onClickContactPicker = (value) => {\r\n if ((value !== undefined) && this.state.isOpenContactPicker) this.setState({ isOpenContactPicker: !!value });\r\n this.setState(({ isOpenContactPicker }) => ({ isOpenContactPicker: !isOpenContactPicker }));\r\n }\r\n\r\n render() {\r\n const { activeLanguage, isLoading, login, isOpenLangPicker, isOpenContactPicker } = this.state;\r\n const { onChangeLanguage, onClickLangPicker, onClickContactPicker } = this;\r\n\r\n return (\r\n
\r\n \"beautifull\r\n
\r\n
\r\n
\r\n \"IRIS\r\n
\r\n
\r\n
\r\n

\r\n {translations[activeLanguage].values['accessDenied']}

\r\n {translations[activeLanguage].values['pleaseContact']}
\r\n \r\n {translations[activeLanguage].values['contactPhone']}\r\n
\r\n {translations[activeLanguage].values['contactMail']}\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n {translations[activeLanguage].values['contact']}
\r\n\r\n \r\n {translations[activeLanguage].values['contactPhone']}\r\n
\r\n {translations[activeLanguage].values['contactMail']}\r\n
\r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n
\r\n

{translations[activeLanguage].values['language']}:

\r\n
\r\n
\r\n
onChangeLanguage(activeLanguage)}\r\n className=\"login__language\">{translations[activeLanguage].name}
\r\n {\r\n translations.map(({name}) => name).reduce((accum, lang, idx) => idx !== activeLanguage ? [...accum, {\r\n lang,\r\n idx\r\n }] : accum, [])\r\n .map(({lang, idx}, index) => (\r\n onChangeLanguage(idx)}\r\n >\r\n {lang}\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\nexport default AccessDenied;","import { useEffect } from 'react';\r\nimport { useLocation, useNavigate } from 'react-router-dom';\r\n\r\nconst ApiRedirect = () => {\r\n\tconst location = useLocation();\r\n\tconst navigate = useNavigate();\r\n\r\n\tuseEffect(() => {\r\n\t\t// Only forward GET requests to the API\r\n\t\tconst forwardGetRequest = async () => {\r\n\t\t\ttry {\r\n\t\t\t\t// Construct the API URL with current pathname and search parameters (query string)\r\n\t\t\t\tconst apiUrl = `/api${location.pathname.replace(/^\\/api/, '')}${location.search}`;\r\n\r\n\t\t\t\t// Forward the GET request to the backend API\r\n\t\t\t\tconst response = await fetch(apiUrl, {\r\n\t\t\t\t\tmethod: 'GET',\r\n\t\t\t\t\tcredentials: 'include' // include cookies if needed\r\n\t\t\t\t});\r\n\r\n\t\t\t\t// Check if there's a redirect response\r\n\t\t\t\tif (response.redirected) {\r\n\t\t\t\t\t// Redirect to the new URL provided by the API\r\n\t\t\t\t\tnavigate(response.url.replace(window.location.origin, ''));\r\n\t\t\t\t} else if (!response.ok) {\r\n\t\t\t\t\t// Handle error response (e.g., show an error page or log)\r\n\t\t\t\t\tconsole.error('API GET request failed:', response.statusText);\r\n\t\t\t\t\tnavigate(''); // Navigate to a custom error route\r\n\t\t\t\t}\r\n\t\t\t} catch (error) {\r\n\t\t\t\tconsole.error('Failed to forward GET request:', error);\r\n\t\t\t\tnavigate(''); // Handle network errors or exceptions\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t// Trigger only if the request is a GET request (since we are in React, assume GET request for /api path)\r\n\t\tforwardGetRequest();\r\n\t}, [location, navigate]);\r\n\r\n\treturn null; // Render nothing\r\n};\r\n\r\nexport default ApiRedirect;","// This optional code is used to register a service worker.\r\n// register() is not called by default.\r\n\r\n// This lets the app load faster on subsequent visits in production, and gives\r\n// it offline capabilities. However, it also means that developers (and users)\r\n// will only see deployed updates on subsequent visits to a page, after all the\r\n// existing tabs open on the page have been closed, since previously cached\r\n// resources are updated in the background.\r\n\r\n// To learn more about the benefits of this model and instructions on how to\r\n// opt-in, read https://cra.link/PWA\r\n\r\nconst isLocalhost = Boolean(\r\n window.location.hostname === 'localhost' ||\r\n // [::1] is the IPv6 localhost address.\r\n window.location.hostname === '[::1]' ||\r\n // 127.0.0.0/8 are considered localhost for IPv4.\r\n window.location.hostname.match(/^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/)\r\n);\r\n\r\nexport function register(config) {\r\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\r\n // The URL constructor is available in all browsers that support SW.\r\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\r\n if (publicUrl.origin !== window.location.origin) {\r\n // Our service worker won't work if PUBLIC_URL is on a different origin\r\n // from what our page is served on. This might happen if a CDN is used to\r\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\r\n return;\r\n }\r\n\r\n window.addEventListener('load', () => {\r\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\r\n\r\n if (isLocalhost) {\r\n // This is running on localhost. Let's check if a service worker still exists or not.\r\n checkValidServiceWorker(swUrl, config);\r\n\r\n // Add some additional logging to localhost, pointing developers to the\r\n // service worker/PWA documentation.\r\n navigator.serviceWorker.ready.then(() => {\r\n console.log(\r\n 'This web app is being served cache-first by a service ' +\r\n 'worker. To learn more, visit https://cra.link/PWA'\r\n );\r\n });\r\n } else {\r\n // Is not localhost. Just register service worker\r\n registerValidSW(swUrl, config);\r\n }\r\n });\r\n }\r\n}\r\n\r\nfunction registerValidSW(swUrl, config) {\r\n navigator.serviceWorker\r\n .register(swUrl)\r\n .then((registration) => {\r\n registration.onupdatefound = () => {\r\n const installingWorker = registration.installing;\r\n if (installingWorker == null) {\r\n return;\r\n }\r\n installingWorker.onstatechange = () => {\r\n if (installingWorker.state === 'installed') {\r\n if (navigator.serviceWorker.controller) {\r\n // At this point, the updated precached content has been fetched,\r\n // but the previous service worker will still serve the older\r\n // content until all client tabs are closed.\r\n console.log(\r\n 'New content is available and will be used when all ' +\r\n 'tabs for this page are closed. See https://cra.link/PWA.'\r\n );\r\n\r\n // Execute callback\r\n if (config && config.onUpdate) {\r\n config.onUpdate(registration);\r\n }\r\n } else {\r\n // At this point, everything has been precached.\r\n // It's the perfect time to display a\r\n // \"Content is cached for offline use.\" message.\r\n console.log('Content is cached for offline use.');\r\n\r\n // Execute callback\r\n if (config && config.onSuccess) {\r\n config.onSuccess(registration);\r\n }\r\n }\r\n }\r\n };\r\n };\r\n })\r\n .catch((error) => {\r\n console.error('Error during service worker registration:', error);\r\n });\r\n}\r\n\r\nfunction checkValidServiceWorker(swUrl, config) {\r\n // Check if the service worker can be found. If it can't reload the page.\r\n fetch(swUrl, {\r\n headers: { 'Service-Worker': 'script' },\r\n })\r\n .then((response) => {\r\n // Ensure service worker exists, and that we really are getting a JS file.\r\n const contentType = response.headers.get('content-type');\r\n if (\r\n response.status === 404 ||\r\n (contentType != null && contentType.indexOf('javascript') === -1)\r\n ) {\r\n // No service worker found. Probably a different app. Reload the page.\r\n navigator.serviceWorker.ready.then((registration) => {\r\n registration.unregister().then(() => {\r\n window.location.reload();\r\n });\r\n });\r\n } else {\r\n // Service worker found. Proceed as normal.\r\n registerValidSW(swUrl, config);\r\n }\r\n })\r\n .catch(() => {\r\n console.log('No internet connection found. App is running in offline mode.');\r\n });\r\n}\r\n\r\nexport function unregister() {\r\n if ('serviceWorker' in navigator) {\r\n navigator.serviceWorker.ready\r\n .then((registration) => {\r\n registration.unregister();\r\n })\r\n .catch((error) => {\r\n console.error(error.message);\r\n });\r\n }\r\n}\r\n","import 'react-app-polyfill/ie9';\r\nimport 'core-js/es6/map';\r\nimport 'core-js/es6/set';\r\nimport React from \"react\";\r\nimport ReactDOM from \"react-dom/client\";\r\nimport { createBrowserRouter, RouterProvider } from \"react-router-dom\";\r\nimport \"./index.css\";\r\nimport App from \"./App\";\r\nimport AccessDenied from \"./components/pages/accessdenied/AccessDenied\";\r\nimport ApiRedirect from \"./components/apiredirect/ApiRedirect\";\r\nimport { authContext } from './libs/adal'\r\nimport ReactAI from 'react-appinsights';\r\nimport config from './config'\r\nimport * as serviceWorkerRegistration from './serviceWorkerRegistration';\r\n \r\nReactAI.init({instrumentationKey: config.APP_CONFIG.aiInstrumentationKey, debug: true});\r\n\r\nauthContext.handleWindowCallback();\r\n//prevent iframe double app\r\nif (window === window.parent) {\r\n if (!authContext.isCallback(window.location.hash)) {\r\n\r\n const router = createBrowserRouter([\r\n {\r\n path: \"/\",\r\n element: ,\r\n errorElement: ,\r\n },\r\n {\r\n path: \"/accessdenied\",\r\n element: ,\r\n },\r\n {\r\n path: \"/api/*\",\r\n element: ,\r\n },\r\n {\r\n path: \"/*\",\r\n element: ,\r\n },\r\n ]);\r\n\r\n\r\n ReactDOM.createRoot(document.getElementById(\"root\")).render(\r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\n// Service Worker is needed, to turn the app into a Progressive Web App. It provides a local offline cache for the app.\r\nserviceWorkerRegistration.register();"],"sourceRoot":""}