{"version":3,"sources":["shared/auth/auth.ts","shared/logging/logging.ts","shared/config/config.ts","shared/api/api.ts","app/components/CustomRoutes/RouteLink.tsx","shared/api/applications/applications.ts","shared/components/LoadingPanel/LoadingPanel.tsx","shared/util/delay.ts","shared/components/LoadingPanel/work-tracker.ts","shared/util/details-list-util.ts","app/components/AdminAppList/AdminAppList.tsx","shared/eventbus/eventbus.ts","shared/api/categories/categories.ts","app/components/Categories/AdminCategoryList.tsx","shared/components/NumberTextField/NumberTextField.tsx","app/components/SaveButton/SaveButton.tsx","shared/api/configuration/configuration.ts","app/components/AdminConfiguration/AdminConfiguration.tsx","shared/api/default-apps/default-apps.ts","shared/api/profiles/profiles.ts","app/components/AdminDefaultProfileApps/ApplicationPicker.tsx","app/components/AdminDefaultProfileApps/AdminDefaultProfileApps.tsx","app/components/Admin/Admin.tsx","app/components/LazyTextField/LazyTextField.tsx","app/components/ApplicationLocationSpecificUrls/ApplicationLocationSpecificUrls.tsx","app/components/ApplicationUrls/ApplicationUrls.tsx","app/components/ApplicationForm/ApplicationTagPicker.tsx","shared/api/tags/tags.ts","app/components/ApplicationForm/ApplicationForm.tsx","shared/api/locations/locations.ts","shared/api/applications/userPreferences.ts","shared/analytics/analytics.ts","app/components/Apps/Application.tsx","app/components/Apps/CategoryWithApps.tsx","app/components/Apps/AppsByCategory.tsx","app/components/Apps/AppsSorted.tsx","app/components/Apps/Apps.tsx","app/components/CustomRoutes/CustomRoutes.tsx","app/routes/NotFound/NotFound.tsx","app/components/Categories/CategoryForm.tsx","app/components/SearchAllSites/SearchAllSites.tsx","app/components/HelpButton/HelpButton.tsx","shared/api/models.ts","widget/routes/AppList/AppSearchResult.tsx","widget/routes/AppList/AppEditList.tsx","widget/routes/AppList/AppNavList.tsx","widget/routes/WidgetApp/WidgetApp.tsx","shared/components/ProfileInfo/ProfileInfo.tsx","app/components/TopBar/TopBar.tsx","shared/api/tour/tour.ts","app/components/AppTour/IFeatureToShow.tsx","app/components/AppTour/Features/AppSearchFeature.tsx","app/components/AppTour/Features/ByCategoryTabFeature.tsx","app/routes/MainApp/MainApp.tsx","app/components/AppTour/Features/AppDescriptionIconFeature.tsx","app/components/AppTour/Features/SearchAllSitesFeature.tsx","app/components/AppTour/Features/HelpFeature.tsx","app/components/AppTour/Features/SideDrawButtonFeature.tsx","app/components/AppTour/Features/SideDrawEditButtonFeature.tsx","app/components/AppTour/Features/AddRemoveAppButtonFeature.tsx","app/components/AppTour/FeaturesToShow.tsx","app/components/AppTour/AppTour.tsx","serviceWorker.js","index.tsx"],"names":["receiveMessageHandler","logInfo","info","getConfig","environment","concat","getLogPrefix","console","log","logWarning","warning","warn","logError","error","windowName","window","parent","frameElement","id","config","isWidget","apiBaseUrl","aadTenantId","aadAppId","mainAppUrl","loginHint","searchAllSitesUrlTemplate","applicationInsightsInstrumentationKey","loginReturnUrl","configPath","process","REACT_APP_WIDGET","fetchConfig","_ref","Object","asyncToGenerator","regenerator_default","a","mark","_callee","json","jsonLocal","configLocal","wrap","_context","prev","next","abrupt","loadTextFileAjax","sent","JSON","parse","objectSpread","t0","stop","apply","this","arguments","Error","makeSearchAllSitesUrl","searchPhrase","replace","encodeURIComponent","filePath","mimeType","Promise","resolve","reject","xhr","XMLHttpRequest","open","overrideMimeType","onload","status","response","statusText","onerror","send","loggerCallback","logLevel","message","LogLevel","Warning","StatusCode","getAuthDetails","authDetails","init","authorityObj","loggerObj","Logger","level","Verbose","msalConfig","auth","clientId","navigateToLoginRequestUrl","authority","cache","cacheLocation","storeAuthStateInCookie","system","logger","loadFrameTimeout","framework","redirectUri","app","UserAgentApplication","isHiddenLoginFrame","location","href","indexOf","top","postMessage","authParams","scopes","getApplicationScopes","extraQueryParameters","domain_hint","loginRedirect","isLoggedIn","getAccount","login","loginHidden","promise","hiddenLoginPromise","receiveMessage","addEventListener","ifr","document","createElement","setAttribute","style","position","width","height","border","frame","getElementsByTagName","appendChild","targetUrl","split","src","event","data","getElementById","removeChild","removeEventListener","undefined","getAccessTokenInternal","_ref2","_callee2","loginHintDetails","tokenAuthParams","tokenResponse","_context2","acquireTokenSilent","accessToken","acquireTokenRedirect","_x2","isCallbackRoute","isCallback","hash","ensureWidgetAuthenticated","_ref3","_callee3","_context3","_x3","_x4","ensureAppAuthenticated","_ref4","_callee4","_context4","getUserProfile","user","idToken","displayName","name","isAdmin","roles","some","r","getAccessToken","then","err","_x","RouteLinkType","defaultHeaders","makeUri","path","makeHeaders","customHeaders","isItMultipartForm","headers","formatData","files","form","stringify","formData","FormData","map","file","append","readJsonData","text","readBinaryData","blob","sendRequest","params","sendRequestWithAccessToken","token","_x5","raiseErrorOnFailure","errorId","toast","toastId","success","_ref5","_callee5","_formatData","obj","responseOK","_context5","authorization","fetch","body","method","readData","isResponseOk","result","_x6","_x7","sendApiRequest","Api","get","_get","_callee6","_context6","_x8","_x9","post","_post","_callee7","_context7","_x10","_x11","_x12","_x13","put","_put","_callee8","_context8","_x14","_x15","_x16","_x17","delete","_delete2","_callee9","_context9","_x18","_x19","_x20","GraphApi","getUserPhoto","_getUserPhoto","_callee10","_context10","CategoryViewModel","category","classCallCheck","collapsed","createClass","key","value","generateCategoryViewModels","applications","reduce","categoryVmById","item","categories","filter","c","newCategory","getCategoryViews","categoryViewModels","getMine","all","getMineFlat","myApplications","forEach","urls","url","locationCode","appId","appName","length","locationName","description","moreInformationUrl","isDescriptionVisible","iconUrl","isArchived","tags","push","categoriesById","getMany","getManyFlat","locationApplications","list","add","application","iconFile","update","filterApplications","searchTermLowerCase","toLowerCase","t","sort","c1","c2","localeCompare","LoadingPanel","props","_this","possibleConstructorReturn","getPrototypeOf","call","state","isLoadingComplete","workTracker","isComplete","updateIsLoadingComplete","bind","assertThisInitialized","subscribe","unsubscribe","loaded","react","className","react_transition_group","enter","exit","appear","classNames","timeout","Spinner","size","SpinnerSize","large","children","setState","React","delay","ms","setTimeout","WorkTracker","options","minDelayInMs","startCompleted","subscribers","queueTrackingAndChain","track","beginTrack","endTrack","finish","updateCompleteStatus","promiseCountChange","activePromises","Math","max","s","callback","sortByColumn","rows","columns","sortColumnKey","isSortedDescending","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_iterator","Symbol","iterator","done","column","isSorted","return","copyAndSort","field","orderBy","slice","row","getSort","prop","getNested","toUpperCase","xs","x","AdminAppList","onColumnClick","_","appSummaries","getColumns","loadApplications","_this$state","react_default","components_LoadingPanel_LoadingPanel","DetailsList","items","compact","selectionMode","SelectionMode","none","Applications","hasMultipleUrls","join","locationSpecific","isLocationSpecific","fieldName","minWidth","maxWidth","onRender","Image","imageFit","ImageFit","cover","isResizable","Link","to","columnKey","sortResult","Component","EventNames","RouteLinkClass","clickHandler","_this$props","disabled","linkType","LinkTag","link","defaultButton","DefaultButton","primaryButton","PrimaryButton","onClick","ev","_this2","route","currentTarget","getAttribute","preventDefault","actionResult","action","history","RouteLink","withRouter","getAll","remove","AdminCategoryList","openDeleteDialog","categoryToDelete","isDeleteDialogHidden","closeDeleteDialog","deleteCategory","categorySummaries","indexToDelete","Categories","splice","getDeleteCallback","loadCategories","Dialog","hidden","onDismiss","dialogContentProps","type","DialogType","normal","title","subText","modalProps","titleAriaId","subtitleAriaId","isBlocking","containerClassName","Button","Fragment","marginLeft","NumberTextField","_React$Component","textFieldRef","render","TextField","componentRef","readOnly","getDisplayValue","onChange","autoComplete","onGetErrorMessage","validateNumber","focus","current","reset","toString","isNaN","Number","numericValue","inherits","SaveButton","CustomRoutes_RouteLink","submitForm","isFormValid","isSubmitting","small","configuration","AdminConfiguration","sideDrawAppCountLimitRef","createRef","enterEditMode","isInEditMode","marginTop","Label","required","htmlFor","NumberTextField_NumberTextField","ref","sideDrawAppCountLimit","onSideDrawAppCountLimitChanged","components_SaveButton_SaveButton","leaveEditMode","componentDidMount","loadData","componentDidUpdate","prevProps","prevState","Configuration","parseInt","updateMany","profileDefaultApps","ApplicationPicker","_Component","tagPickerReference","Pickers","selectedItems","applicationIds","getAppName","onResolveSuggestions","getTextFromItem","onGetTextFromItem","onApplicationListChange","pickerSuggestionsProps","suggestionsHeaderText","noResultsFoundText","canAddApplication","inputProps","aria-label","focusInput","applicationCountLimit","availableApplications","filterText","existingApplications","getAppSuggestions","appList","filterTextTrimmed","trim","isApplicationAlreadyOnTheList","compareTag","AdminDefaultProfileApps","applicationPickerReference","defaultProfileApps","apps","index","profileCode","availableProfiles","p","ApplicationPicker_ApplicationPicker","defaultAppIds","listOfApplicationsChanged","defaultProfileAppsResponse","profilesResponse","applicationsResponse","configurationResult","filteredDefaultAppsByAvailableProfiles","DefaultProfileApps","Profiles","slicedToArray","every","Admin","Pivot","linkText","components_AdminAppList_AdminAppList","Categories_AdminCategoryList","components_AdminDefaultProfileApps_AdminDefaultProfileApps","components_AdminConfiguration_AdminConfiguration","LazyTextField","inputValue","triggerDeferredTextChangeEvent","debounce","onTextChange","onBlur","assign","ApplicationLocationSpecificUrls","onLocationEnableHandlerCreator","isChecked","newUrls","urlToReplace","isActive","onUrlChangeHandlerCreator","getKey","getRowKey","Checkbox","checked","suburb","components_LazyTextField_LazyTextField","ApplicationUrls","onIsLocationSpecificChanged","onIsLocationSpecificChange","label","components_ApplicationLocationSpecificUrls_ApplicationLocationSpecificUrls","locationSpecificUrls","onLocationSpecificUrlChange","ApplicationUrls_GlobalUrl","detailedUrl","globalUrl","onGlobalUrlChange","GlobalUrl","maxLength","ApplicationTagPicker","onTagListChange","existingTags","getTagSuggestions","availableTags","tagList","loadTags","_loadTags","t1","t2","filteredTags","tag","isTagAlreadyOnTheList","ApplicationForm","urlsToSave","l","u","isNew","match","hasValidUrl","categoryIds","profileCodes","onIconFileSelected","target","onCategorySelectionChanged","categoryId","onProfileSelectionChanged","listOfTagsChanged","onAppNameChanged","onAppDescriptionChanged","onAppMoreInfoUrlChanged","onGlobalUrlChanged","onLocationSpecificUrlsChanged","onIsArchivedChanged","availableCategories","availableLocations","currentIconUrl","linkFormat","PivotLinkFormat","links","autoFocus","ApplicationTagPicker_ApplicationTagPicker","accept","MessageBar","messageBarType","MessageBarType","ApplicationForm_CurrentIcon","ApplicationForm_Archive","find","profile","components_ApplicationUrls_ApplicationUrls","scrollTo","loadProfiles","loadLocations","loadApplication","initNewApplication","CurrentIcon","Archive","userPreferences","reportAppUsage","userProfiles","source","__webpack_require__","e","AppInsights","trackEvent","applicationName","initialiseAnalyticsEngine","downloadAndSetup","instrumentationKey","ToggleDescriptionButton","Tooltip","content","calloutProps","gapSpace","iconProps","iconName","toggleDescription","AppDescription","lib_commonjs_Link","RemoveAppFromFavouritesButton","TooltipDelay","long","toggleBelongingnessToFavorites","AddAppToFavouritesButton","applicationOperations","canAddToFavorites","Application","onAppClick","Application_ToggleDescriptionButton","isFavorite","Application_RemoveAppFromFavouritesButton","Application_AddAppToFavouritesButton","Application_AppDescription","onToggleDescription","onToggleBelongingnessToFavorites","CategoryWithApps","isCollapsed","Category","categoryWithApps","isCollapsingAllowed","onToggleCategory","Application_Application","ApplicationCategoryColumn","categoriesWithApps","AppsByCategory_Category","AppsByCategory","getCategoriesWithApps","threeColumn","getThreeColumnConfiguration","openAllCategories","closeAllCategories","AppsByCategory_ApplicationCategoryColumn","toggleCategory","col","i","onOpenAllCategories","onCloseAllCategories","appendApp","keys","columnPermutations","col2Start","col3Start","getBestColumnConfiguration","idealAppCount","getColumnSize","toConsumableArray","bestConfig","maxDeviation","permutation","columnConfig","getColumnConfiguration","colStarts","idealLength","start","end","appCount","b","AppsSorted","getAppListChunks","appChunk","numberOfChunks","chunks","appsPerChunk","ceil","EventBus","eventName","eventHandler","eventHandlers","existingHandler","AppsClass","pathname","AppTabKeys","AZ","onSetActiveTab","loadFavouriteApps","loadFavouriteAppsLimit","loadMyProfiles","emit","MainApplicationLoaded","FavouriteAppListModified","onFavouriteAppsModified","componentWillUnmount","dir","float","backgroundColor","paddingLeft","paddingRight","SearchBox","placeholder","onSearchPhraseChanged","onLinkClick","viewChanged","selectedKey","activeTab","headerButtonProps","data-tab-button-id","itemKey","components_Apps_AppsSorted","getFilteredApplications","components_Apps_AppsByCategory","foundApp","appKey","makeFavoriteAppKey","favoriteAppsByKey","favoriteApps","favoriteAppsLimit","newFavAppsList","newFavApp","_newFavAppsList","favApp","updateFavoriteApps","sendToastNotification","UserPreferences","progressClassName","foundCategory","toggle","switchToView","sortBy","tabKey","Apps","AdminRoute","Comp","component","rest","objectWithoutProperties","es_Route","Redirect","UserRoute","NotFound","CategoryForm","isCategoryNameTaken","blocked","SearchAllSites","onSearch","searchAllSites","HelpButton","helpButtonId","ariaLabel","showCallout","Icon","Callout","directionalHint","DirectionalHint","bottomCenter","dismissCallout","setInitialFocus","isCalloutVisible","startAppTour","StartApplicationTour","instanceCounter","AppTourNewStates","AppSearchResult","filteredApps","availableApps","fa","onItemSelected","AppEditList","react_beautiful_dnd_esm","onDragEnd","droppableId","provided","droppableProps","innerRef","draggableId","provided2","draggableProps","dragHandleProps","renderApplication","hasFavouriteAppCountReachedTheLimit","AppSearchResult_AppSearchResult","onNewApplicationSelected","isSaving","saveFavoriteApps","revertFavoriteApps","openResetFavouriteAppsDialog","Dialog_default","isResetFavouriteAppsDialogHidden","closeResetFavouriteAppsDialog","resetFavouriteApps","destination","reorder","resetFavoriteApps","startIndex","endIndex","Array","from","_result$splice","removed","onAppListChange","favoriteAppsListLimit","onSearchPhraseChange","removeApp","appToRemove","reducedItems","isDragging","MoreAppLinks","display","alignItems","color","ApplicationIconStyles","verticalAlign","marginRight","padding","AppNavList","AppNavList_MoreAppLinks","whiteSpace","overflow","textOverflow","styles","root","WidgetApp","isWidgetButtonWorkingAsHyperlinkToMainApp","ensureAuthenticated","HideSideDraw","hidePanel","OpenSideDraw","showPanel","onGlobalKeyUp","loadMyApplications","favAppDtosToViewModel","favAppDtos","fav","preEditFavouriteApps","favouriteApps","favApps","notifyAboutFavouriteAppListBeingModified","resetListResult","loadDefaultAppsResult","allRequestsSucceeded","newFavAppDtos","onAppListChanged","changedListOfApps","isOpen","keyCode","handleWidgetButtonClick","UserOpenedSideDraw","linkOnlyMode","favouriteAppsListLimit","Panel","isLightDismiss","overlay","background","minHeight","routes_AppList_AppEditList","routes_AppList_AppNavList","myAppsResponse","favouriteAppsListLimitResponse","appsResponse","userPrefsResponse","ProfileInfo","loadUserProfilePhoto","Persona","imageUrl","photoUrl","PersonaSize","size28","presence","PersonaPresence","online","hidePersonaDetails","photoResponse","URL","webkitURL","createObjectURL","TopBarHeader","TopBar","MakeSureGlobalSearchIsVisible","showGlobalSearch","MakeSureHelpIsVisible","showMoreOptions","TopBar_TopBarHeader","SearchAllSites_SearchAllSites","HelpButton_HelpButton_HelpButton","routes_WidgetApp_WidgetApp","ProfileInfo_ProfileInfo","toggleSearch","areOptionsExpanded","hideOptions","isSearchExpanded","requestedState","AppTourEventNames","AppSearchFeature","getSelector","rightCenter","featureDidShowUp","element","querySelector","scrollIntoView","block","behavior","ByCategoryTabFeature","showNextFeature","ShowNextFeature","getElement","host","elementSelector","matchMedia","matches","AppDescriptionIconFeature","topCenter","SearchAllSitesFeature","HelpFeature","SideDrawButtonFeature","unblockInteractionWithTheAppAfterCoachmarkOpens","hideNextButton","featureWillHide","SideDrawEditButtonFeature","featuresToShow","AppTour","onMainAppLoaded","showApplicationTourDialog","dismountCurrentFeature","isInitialDialogVisible","fontSize","hideDialogAndShowFirstFeature","hideDialogAndShowNextTime","hideDialogAndDismissTheTour","isTourOn","isCoachMarkVisible","Coachmark","beaconColorOne","beaconColorTwo","delayBeforeMouseOpen","isPositionForced","getCurrentFeature","positioningContainerProps","onAnimationOpenEnd","animationEnd","TeachingBubble","headline","currentFeatureIndex","hasCloseIcon","closeButtonAriaLabel","primaryButtonProps","isNextFeatureAvailable","stopTheTour","navigator","vendor","timerCallbackCount","timer","setInterval","clearInterval","margin","mountCurrentFeature","Tour","ShowNextTime","Dismiss","showAppTour","currentFeature","MainApp","renderApps","components_Apps_Apps","activeAppTab","setActiveAppTab","BrowserRouter","basename","react_toastify_lib","AppTour_AppTour","TopBar_TopBar_TopBar","Switch","CustomRoutes_UserRoute","exact","CustomRoutes_AdminRoute","Route","Boolean","hostname","WebFont","load","google","families","initialiseApp","ReactDOM","routes_MainApp_MainApp","initializeIcons","serviceWorker","ready","registration","unregister"],"mappings":"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","file":"static/js/main.74cb08b7.chunk.js","sourcesContent":["import { UserAgentApplication, Logger, LogLevel, Configuration, AuthenticationParameters, AuthResponse } from 'msal';\r\nimport { StringDict } from 'msal/lib-commonjs/MsalTypes';\r\nimport { getCombinedModifierFlags } from 'typescript';\r\nimport { fetchConfig, getConfig } from '../config/config';\r\nimport { logError, logInfo, logWarning } from '../logging/logging';\r\n\r\nconst hiddenLoginFrameId = 'applauncher-hidden-login-frame';\r\nconst loginCompleteMessage = 'loginComplete';\r\n\r\ninterface IUserProfile {\r\n displayName: string;\r\n isAdmin: boolean;\r\n}\r\n\r\ninterface IAuthDetails {\r\n app: UserAgentApplication;\r\n loginHint: string;\r\n loginReturnUrl?: string;\r\n isWidget: boolean;\r\n authority: string;\r\n hiddenLoginPromise?: Promise;\r\n}\r\n\r\nlet receiveMessageHandler: any;\r\n\r\nfunction loggerCallback(logLevel: LogLevel, message: any) {\r\n if (logLevel === LogLevel.Error) {\r\n logError(message);\r\n } else if (logLevel === LogLevel.Warning) {\r\n logWarning(message);\r\n } else {\r\n logInfo(message);\r\n }\r\n}\r\n\r\nconst getAuthDetails = (): IAuthDetails => {\r\n return (window as any).authDetails;\r\n};\r\n\r\nconst init = (loginHint?: string, loginReturnUrl?: string) => {\r\n logInfo('Initializing MSAL User Agent');\r\n\r\n const config = getConfig();\r\n const authorityObj = `https://login.microsoftonline.com/${config.aadTenantId}`;\r\n const loggerObj = new Logger(loggerCallback, { level: LogLevel.Verbose });\r\n const msalConfig: Configuration = {\r\n auth: {\r\n clientId: config.aadAppId,\r\n // redirectUri: loginReturnUrl,\r\n navigateToLoginRequestUrl: false,\r\n authority: authorityObj\r\n },\r\n cache: {\r\n cacheLocation: 'localStorage',\r\n storeAuthStateInCookie: true\r\n },\r\n system: {\r\n 'logger': loggerObj,\r\n loadFrameTimeout: 20000,\r\n },\r\n framework: {\r\n\r\n }\r\n }\r\n\r\n if (!!loginReturnUrl) {\r\n msalConfig.auth.navigateToLoginRequestUrl = true;\r\n msalConfig.auth.redirectUri = loginReturnUrl;\r\n }\r\n\r\n const app = new UserAgentApplication(msalConfig);\r\n\r\n (window as any).authDetails = {\r\n app,\r\n loginHint,\r\n loginReturnUrl,\r\n isWidget: config.isWidget,\r\n authorityObj\r\n };\r\n\r\n if (isHiddenLoginFrame()) {\r\n if (window.location.href.indexOf('#id_token') !== -1) {\r\n logInfo('Received id token in hidden login frame. Messaging the top window');\r\n if (top) {\r\n top.postMessage(loginCompleteMessage, '*');\r\n }\r\n } else {\r\n logInfo('Calling MSAL loginRedirect() inside hidden login frame');\r\n\r\n const responseScopes: string[] = getApplicationScopes();\r\n\r\n const extraQueryParams: StringDict = {\r\n 'domain_hint': 'organizations'\r\n }\r\n\r\n const authParams: AuthenticationParameters = {\r\n scopes: responseScopes,\r\n extraQueryParameters: extraQueryParams,\r\n loginHint: `${loginHint}`\r\n }\r\n\r\n app.loginRedirect(authParams);\r\n }\r\n }\r\n};\r\n\r\nconst loginCallback = (errorDesc: string, token: string, error: string, tokenType: string, userState: string) => {\r\n if (error) {\r\n logError(`${error}: ${errorDesc}`);\r\n }\r\n};\r\n\r\nconst getApplicationScopes = () => [`api://${getConfig().aadAppId}/AppLauncher`];\r\n\r\nconst isLoggedIn = (): boolean => {\r\n const authDetails = getAuthDetails();\r\n const app = authDetails ? authDetails.app : null;\r\n return app != null && app.getAccount() != null;\r\n};\r\n\r\nconst login = () => {\r\n const responseScopes: string[] = getApplicationScopes();\r\n const authParams: AuthenticationParameters = {\r\n scopes: responseScopes\r\n }\r\n getAuthDetails().app.loginRedirect(authParams);\r\n};\r\n\r\n// loginHidden just does a normal msal.loginRedirect(), except it does\r\n// this in a hidden iframe. The idea is that the host app should already\r\n// be authenticated with F5 which means no user interaction is necessary.\r\nconst loginHidden = (): Promise => {\r\n let promise = getAuthDetails().hiddenLoginPromise;\r\n\r\n // Because multiple API requests could ultimately trigger a loginHidden() we don't want\r\n // to open a bunch of hidden iframes. More importantly all incoming requests must wait\r\n // for the login to finish before an access token can be acquired. So everyone just\r\n // waits on the same promise until the login is complete.\r\n if (promise) {\r\n logInfo('A hidden login is already in progress. Waiting for it complete...');\r\n return promise;\r\n }\r\n\r\n promise = new Promise((resolve, reject) => {\r\n // loginHidden should only ever be called from the top window. It's\r\n // an expensive operation and we don't want to call it in every frame\r\n // that loads the widget.\r\n if (window.parent !== window) {\r\n resolve();\r\n return;\r\n }\r\n\r\n receiveMessageHandler = receiveMessage(resolve);\r\n window.addEventListener('message', receiveMessageHandler, false);\r\n\r\n const ifr = document.createElement('iframe');\r\n ifr.setAttribute('sandbox', 'allow-forms allow-modals allow-popups allow-popups-to-escape-sandbox allow-same-origin allow-scripts allow-top-navigation');\r\n ifr.setAttribute('id', hiddenLoginFrameId);\r\n ifr.style.position = 'absolute';\r\n ifr.style.width = ifr.style.height = '0';\r\n ifr.style.border = 'none';\r\n const frame = document.getElementsByTagName('body')[0].appendChild(ifr);\r\n\r\n const authDetails = getAuthDetails();\r\n if (!authDetails.loginHint) {\r\n logError('Tried to perform a hidden login, but login hint was not set');\r\n reject();\r\n }\r\n\r\n const targetUrl = authDetails.loginReturnUrl || window.location.href.split('?')[0];\r\n logInfo(`Setting hidden login frame src to ${targetUrl}`);\r\n\r\n // in IE the iframe does not actually load if the URL is the same as the top page!\r\n // Force it by adding some parameter\r\n frame.src = `${targetUrl}?applauncher=true`;\r\n });\r\n\r\n getAuthDetails().hiddenLoginPromise = promise;\r\n return promise;\r\n};\r\n\r\nconst isHiddenLoginFrame = (): boolean => {\r\n return window.frameElement && window.frameElement.id === hiddenLoginFrameId;\r\n};\r\n\r\nconst receiveMessage = (resolve: () => void) => {\r\n return (event: any) => {\r\n if (event.data === loginCompleteMessage) {\r\n logInfo('Received LoginComplete message. Tearing down hidden frame and resolving request');\r\n const ifr = document.getElementById(hiddenLoginFrameId);\r\n if (ifr) {\r\n document.getElementsByTagName('body')[0].removeChild(ifr);\r\n }\r\n\r\n window.removeEventListener('message', receiveMessageHandler);\r\n getAuthDetails().hiddenLoginPromise = undefined;\r\n resolve();\r\n }\r\n };\r\n};\r\n\r\nconst getAccessToken = (scopes: string[]): Promise => {\r\n return getAccessTokenInternal(scopes).then(\r\n (accessToken: string) => accessToken,\r\n async err => {\r\n logWarning('Acquiring access token failed. Attempting to login...');\r\n\r\n if (getAuthDetails().isWidget) {\r\n await loginHidden();\r\n return await getAccessTokenInternal(scopes);\r\n } else {\r\n await login();\r\n }\r\n\r\n return 'Could not get access token. Logging in again';\r\n }\r\n );\r\n};\r\n\r\nconst getAccessTokenInternal = async (scopes: string[]): Promise => {\r\n const authDetails = getAuthDetails();\r\n const loginHintDetails = authDetails.isWidget ? `${authDetails.loginHint}` : '';\r\n\r\n\r\n\r\n const tokenAuthParams: AuthenticationParameters = {\r\n 'scopes': scopes,\r\n authority: authDetails.authority,\r\n loginHint: loginHintDetails\r\n }\r\n\r\n try {\r\n const tokenResponse: AuthResponse = await authDetails.app.acquireTokenSilent(tokenAuthParams);\r\n return tokenResponse.accessToken\r\n } catch (e) {\r\n logWarning(e);\r\n // acquireTokenSilent can fail in some situations, for example Safari 12+ ITP stops sending cookies\r\n // when there is no user interaction. For now in the Main App use acquireTokenRedirect as\r\n // a fallback. We may extend this to the Side Draw too.\r\n\r\n const authParams: AuthenticationParameters = {\r\n 'scopes': scopes,\r\n authority: authDetails.authority\r\n }\r\n\r\n if (!authDetails.isWidget) {\r\n logWarning('acquireTokenSilent() failed. Trying to get the access token with a redirect...');\r\n authDetails.app.acquireTokenRedirect(authParams);\r\n return '';\r\n } else {\r\n throw e;\r\n }\r\n }\r\n};\r\n\r\nconst getUserProfile = (): IUserProfile | null => {\r\n if (!isLoggedIn()) {\r\n return null;\r\n }\r\n\r\n const user = getAuthDetails().app.getAccount().idToken as any;\r\n return {\r\n displayName: user.name,\r\n isAdmin: ((user.roles as []) || []).some(r => r === 'Admin')\r\n };\r\n};\r\n\r\nconst isCallbackRoute = (): boolean => {\r\n return getAuthDetails().app.isCallback(window.location.hash);\r\n};\r\n\r\nconst ensureWidgetAuthenticated = async (loginHint: string, loginReturnUrl?: string): Promise => {\r\n await fetchConfig();\r\n if (!loginHint) {\r\n const config = getConfig();\r\n loginHint = config.loginHint || '';\r\n }\r\n\r\n console.log('Widget logging in for ' + loginHint)\r\n\r\n await init(loginHint, loginReturnUrl);\r\n // when we are on an #id_token route return false and don't try to login again\r\n if (isCallbackRoute()) {\r\n return true;\r\n }\r\n if (!isLoggedIn()) {\r\n await loginHidden();\r\n }\r\n\r\n return true;\r\n};\r\n\r\nconst ensureAppAuthenticated = async (): Promise => {\r\n await fetchConfig();\r\n await init();\r\n // when we are on an #id_token route return false and don't try to login again\r\n if (isCallbackRoute()) {\r\n return true;\r\n }\r\n if (!isLoggedIn()) {\r\n await login();\r\n return false;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nexport const auth = {\r\n ensureWidgetAuthenticated,\r\n ensureAppAuthenticated,\r\n isLoggedIn,\r\n getApplicationScopes,\r\n getUserProfile,\r\n getAccessToken\r\n};\r\n","import { getConfig } from '../config/config';\r\nimport { toast } from 'react-toastify';\r\n\r\nconst logInfo = (info: any) => {\r\n if (getConfig().environment === 'local' || getConfig().environment === 'Dev') {\r\n info = typeof info === 'string' ? `${getLogPrefix()}${info}` : info;\r\n console.log(info);\r\n }\r\n};\r\n\r\nconst logWarning = (warning: any) => {\r\n warning = typeof warning === 'string' ? `${getLogPrefix()}${warning}` : warning;\r\n console.warn(warning);\r\n};\r\n\r\nconst logError = (error: any) => {\r\n error = typeof error === 'string' ? `${getLogPrefix()}${error}` : error;\r\n console.error(error);\r\n};\r\n\r\nconst reportUserError = (message: string, errorId: number | string) => {\r\n logError('Error: ' + message);\r\n if (!getConfig().isWidget) {\r\n toast.error(message, { toastId: errorId });\r\n }\r\n};\r\n\r\nconst getLogPrefix = () => {\r\n const windowName = window === window.parent ? 'top' : window.frameElement && window.frameElement.id;\r\n return `${windowName || 'unknown frame'}: `;\r\n};\r\n\r\nexport { logInfo, logWarning, logError, reportUserError };\r\n","import { logInfo } from '../logging/logging';\r\n\r\nexport interface IConfig {\r\n environment: string;\r\n isWidget: boolean;\r\n apiBaseUrl: string;\r\n aadTenantId: string;\r\n aadAppId: string;\r\n mainAppUrl: string;\r\n loginHint: string;\r\n searchAllSitesUrlTemplate: string;\r\n applicationInsightsInstrumentationKey: string;\r\n loginReturnUrl: string;\r\n}\r\n\r\nlet config: IConfig = {\r\n environment: '',\r\n isWidget: false,\r\n apiBaseUrl: '',\r\n aadTenantId: '',\r\n aadAppId: '',\r\n mainAppUrl: '',\r\n loginHint: '',\r\n searchAllSitesUrlTemplate: '',\r\n applicationInsightsInstrumentationKey: '',\r\n loginReturnUrl:''\r\n};\r\n\r\n// In the widget, we can't refer to a relative file because we are being embedded in another app's html. Instead\r\n// we use an absolute URL to configuration, which is setup in Azure DevOps.\r\nconst configPath = process.env.REACT_APP_WIDGET && process.env.NODE_ENV !== 'development' ? '#{Client.ConfigUrl}#' : '/config.json';\r\n\r\nconst fetchConfig = async (): Promise => {\r\n if (config.environment) {\r\n return config;\r\n }\r\n\r\n if (process.env.NODE_ENV === 'test') {\r\n config.environment = 'test';\r\n return config;\r\n }\r\n\r\n const json = await loadTextFileAjax(configPath, 'application/json');\r\n\r\n config = JSON.parse(json);\r\n\r\n // if in DEV mode, try loading a local file with specific settings\r\n if (process.env.NODE_ENV === 'development') {\r\n try {\r\n const jsonLocal = await loadTextFileAjax('/config.local.json', 'application/json');\r\n const configLocal: IConfig = JSON.parse(jsonLocal);\r\n config = { ...config, ...configLocal };\r\n } catch (e) {\r\n logInfo('config.local.json is missing but this is fine.');\r\n }\r\n }\r\n\r\n config.isWidget = !!process.env.REACT_APP_WIDGET;\r\n return config;\r\n};\r\n\r\nconst getConfig = (): IConfig => {\r\n if (!config.environment) {\r\n throw new Error('Tried to get config, but it was not fetched. Make sure fetchConfig() is called before any other code.');\r\n }\r\n\r\n return config;\r\n};\r\n\r\nconst makeSearchAllSitesUrl = (searchPhrase: string) => getConfig().searchAllSitesUrlTemplate.replace('%QUERY%', encodeURIComponent(searchPhrase));\r\n\r\nconst loadTextFileAjax = (filePath: string, mimeType: string): Promise => {\r\n return new Promise((resolve, reject) => {\r\n const xhr = new XMLHttpRequest();\r\n xhr.open('GET', filePath);\r\n if (xhr.overrideMimeType) {\r\n xhr.overrideMimeType(mimeType);\r\n }\r\n xhr.onload = function() {\r\n if (this.status >= 200 && this.status < 300) {\r\n resolve(xhr.response);\r\n } else {\r\n reject({\r\n status: this.status,\r\n statusText: xhr.statusText\r\n });\r\n }\r\n };\r\n xhr.onerror = function() {\r\n reject({\r\n status: this.status,\r\n statusText: xhr.statusText\r\n });\r\n };\r\n xhr.send();\r\n });\r\n};\r\n\r\nexport { fetchConfig, getConfig, makeSearchAllSitesUrl };\r\n","import { auth } from '../auth/auth';\r\nimport { getConfig } from '../config/config';\r\nimport { logError,logInfo, reportUserError } from '../logging/logging';\r\n\r\nenum StatusCode {\r\n Ok = 200,\r\n BadRequest = 400,\r\n Unauthorized = 401,\r\n InternalServerError = 500\r\n}\r\n\r\nexport interface IApiResponse {\r\n success: boolean;\r\n result?: TResult;\r\n}\r\n\r\nconst ContentTypeKey = 'content-type';\r\nconst defaultHeaders: { [key: string]: string } = {};\r\ndefaultHeaders[ContentTypeKey] = 'application/json';\r\nconst GenericErrorMessage = 'An unknown error occurred. Please try again or contact your administrator.';\r\n\r\nconst makeUri = (apiBaseUrl: string, path: string) => `${apiBaseUrl}/${path}`;\r\n\r\nconst makeHeaders = (customHeaders: any, isItMultipartForm: boolean): { [key: string]: string } => {\r\n const headers = {\r\n ...defaultHeaders,\r\n ...customHeaders\r\n };\r\n if (isItMultipartForm) {\r\n delete headers[ContentTypeKey];\r\n }\r\n return headers;\r\n};\r\n\r\nconst formatData = (data: any, files: File[] | undefined) => {\r\n const form = data ? JSON.stringify(data) : undefined;\r\n const isItMultipartForm = !!files;\r\n if (!isItMultipartForm) {\r\n return { form, isItMultipartForm };\r\n }\r\n\r\n const formData = new FormData();\r\n files!.map(file => formData.append('files', file));\r\n if (form) {\r\n formData.append('form', form);\r\n }\r\n return { form: formData, isItMultipartForm };\r\n};\r\n\r\ninterface IRequestParams {\r\n path: string;\r\n scopes: string[];\r\n method: string;\r\n data?: any;\r\n files?: File[];\r\n raiseErrorOnFailure: boolean;\r\n readData: (response: Response) => any;\r\n}\r\n\r\nconst readJsonData = async (response: Response) => {\r\n const json = await response.text();\r\n return json ? JSON.parse(json) : undefined;\r\n};\r\n\r\nconst readBinaryData = async (response: Response) => await response.blob();\r\n\r\nconst sendRequest = async (params: IRequestParams, accessToken?:string): Promise> => {\r\n try {\r\n if (accessToken) {\r\n logInfo('Access Token available from API - ' + accessToken);\r\n return sendRequestWithAccessToken(accessToken, params);\r\n }\r\n else {\r\n logInfo('Getting Access Token from API for scope - ' + params.scopes);\r\n return auth.getAccessToken(params.scopes).then(async token => {\r\n logInfo('Generated Access Token from API is - ' + token);\r\n return sendRequestWithAccessToken(token, params);\r\n });\r\n }\r\n } catch (e) {\r\n logError(e);\r\n if (params.raiseErrorOnFailure) {\r\n reportUserError(GenericErrorMessage, params.path);\r\n }\r\n return { success: false };\r\n }\r\n};\r\n\r\nconst sendRequestWithAccessToken = async (accessToken: string, params: IRequestParams): Promise> => {\r\n const { form, isItMultipartForm } = formatData(params.data, params.files);\r\n const headers = makeHeaders(\r\n {\r\n authorization: `Bearer ${accessToken}`\r\n },\r\n isItMultipartForm\r\n );\r\n const response = await fetch(params.path, {\r\n body: form,\r\n method: params.method,\r\n cache: 'no-cache',\r\n headers\r\n });\r\n\r\n const obj = await params.readData(response);\r\n const responseOK = isResponseOk(response);\r\n\r\n return {\r\n success: responseOK,\r\n result: obj\r\n };\r\n}\r\n\r\n// Some sites like ServiceNow have their own polyfill for fetch which does\r\n// not include the OK property, so use the status code instead as it's more\r\n// reliable.\r\nconst isResponseOk = (response: Response) => {\r\n return response.status >= 200 && response.status <= 299;\r\n};\r\n\r\nconst sendApiRequest = (path: string, method: string, data?: any, files?: File[], accessToken?: string): Promise> =>\r\n sendRequest({\r\n path: makeUri(getConfig().apiBaseUrl, path),\r\n scopes: auth.getApplicationScopes(),\r\n method,\r\n data,\r\n files,\r\n raiseErrorOnFailure: true,\r\n readData: readJsonData\r\n },accessToken);\r\n\r\nexport const Api = {\r\n get: async (path: string, accessToken?: string): Promise> => sendApiRequest(path, 'GET',undefined,undefined,accessToken),\r\n post: async (path: string, data?: any, files?: File[], accessToken?: string): Promise> => sendApiRequest(path, 'POST', data, files,accessToken),\r\n put: async (path: string, data?: any, files?: File[], accessToken?: string): Promise> => sendApiRequest(path, 'PUT', data, files,accessToken),\r\n delete: async (path: string, data?: any, accessToken?: string): Promise> => sendApiRequest(path, 'DELETE', data,undefined,accessToken)\r\n};\r\n\r\nconst graphApiUrlBase = 'https://graph.microsoft.com/v1.0';\r\n\r\nexport const GraphApi = {\r\n getUserPhoto: async (): Promise => {\r\n return sendRequest({\r\n path: makeUri(graphApiUrlBase, 'me/photos/48x48/$value'),\r\n scopes: ['user.read'],\r\n method: 'GET',\r\n raiseErrorOnFailure: false,\r\n readData: readBinaryData\r\n });\r\n }\r\n};\r\n","import { DefaultButton, PrimaryButton } from 'office-ui-fabric-react/lib-commonjs/Button';\r\nimport { Link } from 'office-ui-fabric-react/lib-commonjs/Link';\r\nimport React, { Component } from 'react';\r\nimport { RouteComponentProps, withRouter } from 'react-router';\r\n\r\nexport enum RouteLinkType {\r\n Link = 'link',\r\n DefaultButton = 'defaultButton',\r\n PrimaryButton = 'primaryButton'\r\n}\r\n\r\ninterface IRouteLinkProps {\r\n to: string;\r\n action?: (() => boolean) | (() => Promise);\r\n disabled?: boolean;\r\n linkType: RouteLinkType;\r\n style?: {};\r\n}\r\n\r\nclass RouteLinkClass extends Component & IRouteLinkProps, any> {\r\n constructor(props: RouteComponentProps & IRouteLinkProps) {\r\n super(props);\r\n this.clickHandler = this.clickHandler.bind(this);\r\n }\r\n\r\n public render() {\r\n const { to, disabled, linkType, style } = this.props;\r\n const linkTags = {\r\n link: Link,\r\n defaultButton: DefaultButton,\r\n primaryButton: PrimaryButton\r\n };\r\n\r\n const LinkTag = linkTags[linkType] as any;\r\n return (\r\n \r\n {this.props.children}\r\n \r\n );\r\n }\r\n\r\n private clickHandler(ev: React.MouseEvent) {\r\n const route = ev.currentTarget.getAttribute('href') || '#';\r\n ev.preventDefault();\r\n\r\n const actionResult = this.props.action ? this.props.action() : true;\r\n if (actionResult instanceof Promise) {\r\n actionResult.then(success => {\r\n if (success) {\r\n this.props.history.push(route);\r\n }\r\n });\r\n } else if (actionResult) {\r\n this.props.history.push(route);\r\n }\r\n }\r\n}\r\n\r\nconst RouteLink = withRouter(RouteLinkClass);\r\n\r\nexport default RouteLink;\r\n","import { Api, IApiResponse } from '../api';\r\nimport { ApplicationDto, ApplicationEntryDto, ApplicationUrlDto, CategoryDto } from '../models';\r\n\r\nexport interface ILocationApplication {\r\n id: string;\r\n appId: string;\r\n appName: string;\r\n description: string;\r\n moreInformationUrl: string;\r\n isDescriptionVisible: boolean;\r\n locationCode?: string | null;\r\n url: string;\r\n iconUrl: string;\r\n isArchived: boolean;\r\n tags: string[];\r\n categories: CategoryViewModel[];\r\n}\r\n\r\nexport interface IApplicationLocationsAndCategories {\r\n applications: ILocationApplication[];\r\n categoriesById: { [categoryId: string]: CategoryViewModel };\r\n}\r\n\r\nexport class CategoryViewModel {\r\n private collapsed = false;\r\n constructor(private category: CategoryDto) {}\r\n\r\n public get name() {\r\n return this.category.name;\r\n }\r\n\r\n public get id() {\r\n return this.category.id;\r\n }\r\n\r\n public get isCollapsed() {\r\n return this.collapsed;\r\n }\r\n\r\n public toggle() {\r\n this.collapsed = !this.collapsed;\r\n }\r\n}\r\n\r\nconst generateCategoryViewModels = (applications:ApplicationDto[]) => {\r\n return applications.reduce((categoryVmById: { [categoryId: string]: CategoryViewModel }, item) => {\r\n item.categories.filter(c => !categoryVmById[c.id]).map(newCategory => (categoryVmById[newCategory.id] = new CategoryViewModel(newCategory)));\r\n return categoryVmById;\r\n }, {});\r\n};\r\n\r\n\r\nconst getCategoryViews = (categories: CategoryDto[], categoryViewModels : {[categoryId: string]: CategoryViewModel }) : CategoryViewModel[] => {\r\n return categories.map(category => categoryViewModels[category.id]);\r\n }\r\n\r\nconst getMine = async (all?: boolean, accessToken?:string): Promise> => Api.get(`apps/myapps`,accessToken);\r\n\r\nconst getMineFlat = async (accessToken?:string): Promise> => {\r\n const response = await getMine(false,accessToken);\r\n if (!response.success || !response.result) {\r\n return { success: false };\r\n }\r\n const applications = response.result;\r\n const categoryViewModels = generateCategoryViewModels(applications);\r\n const myApplications: ILocationApplication [] = [];\r\n applications.forEach((item) =>{\r\n const app = item.urls.map(\r\n (url: ApplicationUrlDto): ILocationApplication => ({\r\n id: `${item.id}-${url.locationCode ? url.locationCode : 'global'}`,\r\n appId: item.id,\r\n appName: item.urls.length > 1 ? `${item.name} (${url.locationName})` : item.name,\r\n description: item.description,\r\n moreInformationUrl: item.moreInformationUrl,\r\n isDescriptionVisible: false,\r\n url: url.url,\r\n locationCode: url.locationCode,\r\n iconUrl: item.iconUrl,\r\n isArchived: item.isArchived,\r\n tags: item.tags,\r\n categories: getCategoryViews(item.categories, categoryViewModels)\r\n })\r\n )\r\n myApplications.push(app[0]);\r\n });\r\n\r\n return { success: true, result: { applications: myApplications, categoriesById: categoryViewModels } };\r\n }\r\n\r\nconst getMany = (all?: boolean, accessToken?:string): Promise> => Api.get(`Apps?all=${all || false}`,accessToken);\r\n\r\nconst getManyFlat = async (accessToken?:string): Promise> => {\r\n const response = await getMany(false,accessToken);\r\n if (!response.success || !response.result) {\r\n return { success: false };\r\n }\r\n\r\n const applications = response.result;\r\n\r\n const categoryViewModels = generateCategoryViewModels(applications);\r\n\r\n const locationApplications = applications.reduce(\r\n (list: ILocationApplication[], item: ApplicationDto) =>\r\n list.concat(\r\n item.urls.map(\r\n (url: ApplicationUrlDto): ILocationApplication => ({\r\n id: `${item.id}-${url.locationCode ? url.locationCode : 'global'}`,\r\n appId: item.id,\r\n appName: item.urls.length > 1 ? `${item.name} (${url.locationName})` : item.name,\r\n description: item.description,\r\n moreInformationUrl: item.moreInformationUrl,\r\n isDescriptionVisible: false,\r\n url: url.url,\r\n locationCode: url.locationCode,\r\n iconUrl: item.iconUrl,\r\n isArchived: item.isArchived,\r\n tags: item.tags,\r\n categories: getCategoryViews(item.categories, categoryViewModels)\r\n })\r\n )\r\n ),\r\n []\r\n );\r\n\r\n return { success: true, result: { applications: locationApplications, categoriesById: categoryViewModels } };\r\n};\r\n\r\nconst get = (id: string): Promise> => Api.get(`Apps/${id}`);\r\n\r\nconst add = (application: ApplicationEntryDto, iconFile: File | undefined) => Api.post('Apps', application, iconFile ? [iconFile] : []);\r\n\r\nconst update = (id: string, application: ApplicationEntryDto, iconFile: File | undefined) =>\r\n Api.put(`Apps/${id}`, application, iconFile ? [iconFile] : []);\r\n\r\nconst filterApplications = (applications: ILocationApplication[] | null, searchPhrase: string | null): ILocationApplication[] => {\r\n if (!applications || !searchPhrase) {\r\n return applications || [];\r\n }\r\n\r\n const searchTermLowerCase = searchPhrase.toLowerCase();\r\n return applications\r\n .filter(\r\n a =>\r\n a.appName.toLowerCase().indexOf(searchTermLowerCase) >= 0 ||\r\n a.tags.some(t => t.toLowerCase().indexOf(searchTermLowerCase) >= 0) ||\r\n a.categories.some(c => c.name.toLowerCase().indexOf(searchTermLowerCase) >= 0)\r\n )\r\n .sort((c1, c2) => c1.appName.toLowerCase().localeCompare(c2.appName.toLowerCase()));\r\n};\r\n\r\nexport { getMany, getManyFlat, getMineFlat, get, add, update, filterApplications };\r\n","import * as React from 'react';\r\nimport './LoadingPanel.scss';\r\nimport { WorkTracker } from './work-tracker';\r\nimport { Spinner, SpinnerSize } from 'office-ui-fabric-react/lib-commonjs/Spinner';\r\nimport { TransitionGroup, CSSTransition } from 'react-transition-group';\r\n\r\ninterface ILoadingPanelProps {\r\n workTracker: WorkTracker;\r\n style?: React.CSSProperties;\r\n}\r\n\r\ninterface ILoadingPanelState {\r\n isLoadingComplete: boolean;\r\n}\r\n\r\nclass LoadingPanel extends React.Component {\r\n constructor(props: ILoadingPanelProps) {\r\n super(props);\r\n this.state = {\r\n isLoadingComplete: this.props.workTracker.isComplete\r\n };\r\n this.updateIsLoadingComplete = this.updateIsLoadingComplete.bind(this);\r\n }\r\n\r\n public componentDidMount() {\r\n this.props.workTracker.subscribe(this.updateIsLoadingComplete);\r\n }\r\n\r\n public componentWillUnmount() {\r\n this.props.workTracker.unsubscribe(this.updateIsLoadingComplete);\r\n }\r\n\r\n public render() {\r\n const loaded = this.state.isLoadingComplete;\r\n return (\r\n
\r\n \r\n {loaded ? null : (\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n )}\r\n \r\n
{this.props.children}
\r\n
\r\n );\r\n }\r\n\r\n private updateIsLoadingComplete(isComplete: boolean) {\r\n this.setState({ isLoadingComplete: isComplete });\r\n }\r\n}\r\n\r\nexport default LoadingPanel;\r\n","export const delay = (ms: number) => {\r\n return new Promise(resolve => setTimeout(resolve, ms));\r\n};\r\n","import { delay } from '../../util/delay';\r\n\r\nexport interface IWorkTrackerOptions {\r\n minDelayInMs?: number;\r\n startCompleted: boolean;\r\n}\r\n\r\nexport class WorkTracker {\r\n public isComplete: boolean;\r\n private activePromises: number;\r\n private subscribers: Array<(isComplete: boolean) => void> = [];\r\n\r\n constructor(private options: IWorkTrackerOptions = { minDelayInMs: 200, startCompleted: false }) {\r\n this.isComplete = options.startCompleted;\r\n this.activePromises = 0;\r\n }\r\n\r\n public subscribe(callback: (isComplete: boolean) => void) {\r\n this.subscribers.push(callback);\r\n }\r\n\r\n public unsubscribe(callback: (isComplete: boolean) => void) {\r\n this.subscribers = this.subscribers.filter(s => s !== callback);\r\n }\r\n\r\n public readonly queueTrackingAndChain = (promise: Promise) => {\r\n this.track(promise);\r\n return promise;\r\n };\r\n\r\n public readonly track = async (promise: Promise) => {\r\n this.beginTrack();\r\n\r\n try {\r\n await (this.options.minDelayInMs ? Promise.all([promise, delay(this.options.minDelayInMs)]) : promise);\r\n } finally {\r\n // Errors should not cause a loss of accurate completion status tracking\r\n this.endTrack();\r\n }\r\n };\r\n\r\n private readonly beginTrack = () => {\r\n this.updateCompleteStatus(1);\r\n };\r\n\r\n private readonly endTrack = () => {\r\n this.updateCompleteStatus(-1);\r\n };\r\n\r\n private readonly updateCompleteStatus = (promiseCountChange: number) => {\r\n this.activePromises = Math.max(0, this.activePromises + promiseCountChange);\r\n this.isComplete = this.activePromises === 0;\r\n this.subscribers.forEach(s => s(this.isComplete));\r\n };\r\n}\r\n","import { IColumn } from 'office-ui-fabric-react/lib-commonjs/DetailsList';\r\nimport { orderBy } from 'lodash';\r\n\r\ninterface IColumnSortResult {\r\n columns: IColumn[];\r\n rows: T[];\r\n}\r\n\r\nconst sortByColumn = (rows: T[], columns: IColumn[], sortColumnKey: string): IColumnSortResult => {\r\n let isSortedDescending = false;\r\n for (const column of columns) {\r\n if (column.key === sortColumnKey) {\r\n column.isSorted = true;\r\n column.isSortedDescending = !column.isSortedDescending;\r\n isSortedDescending = column.isSortedDescending;\r\n } else {\r\n column.isSorted = false;\r\n column.isSortedDescending = true;\r\n }\r\n }\r\n\r\n const sortedRows = copyAndSort(rows, sortColumnKey, isSortedDescending);\r\n\r\n return { columns, rows: sortedRows };\r\n};\r\n\r\nconst copyAndSort = (rows: T[], field: string, isSortedDescending: boolean): T[] => {\r\n return orderBy(rows.slice(0), [row => getSort(row, field)], [isSortedDescending ? 'desc' : 'asc']) as T[];\r\n};\r\n\r\nconst getSort = (item: T, field: string) => {\r\n const prop = getNested(field, item);\r\n if (prop && typeof prop === 'string') {\r\n return prop.toUpperCase();\r\n }\r\n\r\n return prop;\r\n};\r\n\r\nconst getNested = (prop: string, obj: any): any => {\r\n const props = prop.split('.');\r\n return props.reduce((xs, x) => (xs && xs[x] ? xs[x] : null), obj);\r\n};\r\n\r\nexport { sortByColumn };\r\n","import { DetailsList, IColumn, SelectionMode } from 'office-ui-fabric-react/lib-commonjs/DetailsList';\r\nimport { Image, ImageFit } from 'office-ui-fabric-react/lib-commonjs/Image';\r\nimport React, { Component } from 'react';\r\nimport { Link } from 'react-router-dom';\r\nimport * as Applications from '../../../shared/api/applications/applications';\r\nimport { ApplicationDto } from '../../../shared/api/models';\r\nimport LoadingPanel from '../../../shared/components/LoadingPanel/LoadingPanel';\r\nimport { WorkTracker } from '../../../shared/components/LoadingPanel/work-tracker';\r\nimport { sortByColumn } from '../../../shared/util/details-list-util';\r\n\r\ninterface IAppSummary {\r\n id: string;\r\n name: string;\r\n categories: string;\r\n iconUrl: string;\r\n url: string;\r\n locationSpecific: string;\r\n hasMultipleUrls: boolean;\r\n isArchived: string;\r\n}\r\n\r\ninterface IAdminAppListState {\r\n appSummaries: IAppSummary[];\r\n columns: IColumn[];\r\n workTracker: WorkTracker;\r\n}\r\n\r\nclass AdminAppList extends Component {\r\n constructor(props: any) {\r\n super(props);\r\n this.state = {\r\n appSummaries: [],\r\n columns: this.getColumns(),\r\n workTracker: new WorkTracker()\r\n };\r\n }\r\n\r\n public componentDidMount() {\r\n this.state.workTracker.track(this.loadApplications());\r\n }\r\n\r\n public render() {\r\n const { appSummaries: applications, columns } = this.state;\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n\r\n private async loadApplications() {\r\n const response = await Applications.getMany(true);\r\n if (response.success) {\r\n const appSummaries = (response.result || []).map(\r\n (app: ApplicationDto): IAppSummary => {\r\n const hasMultipleUrls = app.urls.length > 1;\r\n return {\r\n id: app.id,\r\n name: app.name,\r\n categories: app.categories.map(c => c.name).join(', '),\r\n iconUrl: app.iconUrl,\r\n url: hasMultipleUrls ? '' : app.urls[0].url,\r\n hasMultipleUrls,\r\n locationSpecific: app.isLocationSpecific ? 'Yes' : 'No',\r\n isArchived: app.isArchived === true ? 'Yes' : 'No'\r\n };\r\n }\r\n );\r\n this.setState({ appSummaries });\r\n this.sort('name');\r\n }\r\n }\r\n\r\n private getColumns(): IColumn[] {\r\n return [\r\n {\r\n key: 'iconUrl',\r\n name: 'Icon',\r\n fieldName: 'iconUrl',\r\n minWidth: 40,\r\n maxWidth: 40,\r\n onColumnClick: this.onColumnClick,\r\n onRender: (app: ApplicationDto) => {\r\n return ;\r\n }\r\n },\r\n {\r\n key: 'name',\r\n name: 'Name',\r\n fieldName: 'name',\r\n minWidth: 100,\r\n maxWidth: 500,\r\n isResizable: true,\r\n onColumnClick: this.onColumnClick,\r\n isSortedDescending: true\r\n },\r\n {\r\n key: 'categories',\r\n name: 'Categories',\r\n fieldName: 'categories',\r\n minWidth: 100,\r\n maxWidth: 500,\r\n isResizable: true,\r\n onColumnClick: this.onColumnClick\r\n },\r\n {\r\n key: 'locationSpecific',\r\n name: 'Location Specific?',\r\n fieldName: 'locationSpecific',\r\n minWidth: 100,\r\n maxWidth: 200,\r\n isResizable: true,\r\n onColumnClick: this.onColumnClick\r\n },\r\n {\r\n key: 'url',\r\n name: 'URL',\r\n fieldName: 'url',\r\n minWidth: 300,\r\n maxWidth: 800,\r\n isResizable: true,\r\n onColumnClick: this.onColumnClick,\r\n onRender: (app: IAppSummary) => {\r\n return app.hasMultipleUrls ? Multiple URLs : {app.url};\r\n }\r\n },\r\n {\r\n key: 'isArchived',\r\n name: 'Archived?',\r\n fieldName: 'isArchived',\r\n minWidth: 100,\r\n maxWidth: 200,\r\n isResizable: true,\r\n onColumnClick: this.onColumnClick\r\n },\r\n {\r\n key: 'actions',\r\n name: 'Actions',\r\n fieldName: 'url',\r\n minWidth: 100,\r\n maxWidth: 100,\r\n isResizable: false,\r\n onRender: (app: IAppSummary) => {\r\n return Edit;\r\n }\r\n }\r\n ];\r\n }\r\n\r\n private onColumnClick = (_: React.MouseEvent, column: IColumn) => {\r\n this.sort(column.key);\r\n };\r\n\r\n private sort(columnKey: string) {\r\n const sortResult = sortByColumn(this.state.appSummaries, this.state.columns, columnKey);\r\n this.setState({ appSummaries: sortResult.rows, columns: sortResult.columns });\r\n }\r\n}\r\n\r\nexport default AdminAppList;\r\n","export enum EventNames {\r\n FavouriteAppListModified = 'FavouriteAppListModified',\r\n MainApplicationLoaded = 'MainApplicationLoaded',\r\n StartApplicationTour = 'StartApplicationTour',\r\n UserOpenedSideDraw = 'UserOpenedSideDraw',\r\n HideSideDraw = 'HideSideDraw',\r\n OpenSideDraw = 'OpenSideDraw',\r\n MakeSureGlobalSearchIsVisible = 'MakeSureGlobalSearchIsVisible',\r\n MakeSureHelpIsVisible = 'MakeSureHelpIsVisible'\r\n}\r\n\r\ntype EventHandler = (data: any) => void;\r\n\r\nexport class EventBus {\r\n public static subscribe(eventName: string, eventHandler: EventHandler) {\r\n EventBus.eventHandlers[eventName] = EventBus.eventHandlers[eventName] || [];\r\n EventBus.eventHandlers[eventName].push(eventHandler);\r\n }\r\n\r\n public static unsubscribe(eventName: string, eventHandler: EventHandler) {\r\n if (EventBus.eventHandlers[eventName]) {\r\n EventBus.eventHandlers[eventName] = EventBus.eventHandlers[eventName].filter(existingHandler => existingHandler !== eventHandler);\r\n }\r\n }\r\n\r\n public static emit(eventName: string, data?: any) {\r\n if (EventBus.eventHandlers[eventName]) {\r\n EventBus.eventHandlers[eventName].forEach(eventHandler => eventHandler(data));\r\n }\r\n }\r\n\r\n private static eventHandlers: { [eventName: string]: EventHandler[] } = {};\r\n}\r\n","import { Api, IApiResponse } from '../api';\r\nimport { CategoryDto, CategoryEntryDto } from '../models';\r\n\r\nexport const getAll = (): Promise> => Api.get('Categories');\r\n\r\nexport const add = (category: CategoryEntryDto) => Api.post('Categories', category);\r\n\r\nexport const update = (id: string, category: CategoryEntryDto) => Api.put(`Categories/${id}`, category);\r\n\r\nexport const remove = (id: string) => Api.delete(`Categories/${id}`);\r\n","import { orderBy } from 'lodash';\r\nimport { DefaultButton, PrimaryButton } from 'office-ui-fabric-react/lib-commonjs/Button';\r\nimport { DetailsList, IColumn, SelectionMode } from 'office-ui-fabric-react/lib-commonjs/DetailsList';\r\nimport { Dialog, DialogFooter, DialogType } from 'office-ui-fabric-react/lib-commonjs/Dialog';\r\nimport React, { Component } from 'react';\r\nimport { Link } from 'react-router-dom';\r\nimport { toast } from 'react-toastify';\r\nimport * as Categories from '../../../shared/api/categories/categories';\r\nimport LoadingPanel from '../../../shared/components/LoadingPanel/LoadingPanel';\r\nimport { WorkTracker } from '../../../shared/components/LoadingPanel/work-tracker';\r\n\r\ninterface ICategorySummary {\r\n id: string;\r\n name: string;\r\n}\r\n\r\ninterface IAdminCategoryListState {\r\n categorySummaries: ICategorySummary[];\r\n columns: IColumn[];\r\n isDeleteDialogHidden: boolean;\r\n categoryToDelete?: ICategorySummary;\r\n workTracker: WorkTracker;\r\n}\r\n\r\nclass AdminCategoryList extends Component {\r\n constructor(props: any) {\r\n super(props);\r\n this.state = {\r\n categorySummaries: [],\r\n columns: this.getColumns(),\r\n isDeleteDialogHidden: true,\r\n workTracker: new WorkTracker()\r\n };\r\n }\r\n\r\n public componentDidMount() {\r\n this.state.workTracker.track(this.loadCategories());\r\n }\r\n\r\n public render() {\r\n const { categorySummaries, columns } = this.state;\r\n return (\r\n \r\n \r\n );\r\n }\r\n\r\n private openDeleteDialog = (categoryToDelete: ICategorySummary) => {\r\n this.setState({ isDeleteDialogHidden: false, categoryToDelete });\r\n };\r\n\r\n private closeDeleteDialog = () => {\r\n this.setState({ isDeleteDialogHidden: true, categoryToDelete: undefined });\r\n };\r\n\r\n private deleteCategory = async () => {\r\n const result = await Categories.remove(this.state.categoryToDelete!.id);\r\n if (result.success) {\r\n const categorySummaries = this.state.categorySummaries.slice(0);\r\n const indexToDelete = categorySummaries.indexOf(this.state.categoryToDelete!);\r\n categorySummaries.splice(indexToDelete, 1);\r\n this.setState({ categorySummaries });\r\n toast.success('Category was successfully deleted');\r\n }\r\n\r\n this.closeDeleteDialog();\r\n };\r\n\r\n private async loadCategories() {\r\n const response = await Categories.getAll();\r\n if (response.success) {\r\n const categorySummaries = (response.result || []).map(category => ({\r\n id: category.id,\r\n name: category.name\r\n }));\r\n this.setState({ categorySummaries });\r\n this.sortByColumn('name');\r\n }\r\n }\r\n\r\n private getColumns(): IColumn[] {\r\n return [\r\n {\r\n key: 'name',\r\n name: 'Name',\r\n fieldName: 'name',\r\n minWidth: 100,\r\n maxWidth: 500,\r\n isResizable: true,\r\n onColumnClick: this.onColumnClick,\r\n isSortedDescending: true\r\n },\r\n {\r\n key: 'actions',\r\n name: 'Actions',\r\n minWidth: 100,\r\n maxWidth: 100,\r\n isResizable: false,\r\n onRender: (category: ICategorySummary) => {\r\n return (\r\n <>\r\n Edit\r\n \r\n Delete\r\n \r\n \r\n );\r\n }\r\n }\r\n ];\r\n }\r\n\r\n private getDeleteCallback = (category: ICategorySummary) => (event: React.MouseEvent) => {\r\n event.preventDefault();\r\n this.openDeleteDialog(category);\r\n };\r\n\r\n private onColumnClick = (_: React.MouseEvent, column: IColumn) => {\r\n this.sortByColumn(column.key);\r\n };\r\n\r\n private sortByColumn(sortColumnKey: string) {\r\n const { columns } = this.state;\r\n let isSortedDescending = false;\r\n for (const column of columns) {\r\n if (column.key === sortColumnKey) {\r\n column.isSorted = true;\r\n column.isSortedDescending = !column.isSortedDescending;\r\n isSortedDescending = column.isSortedDescending;\r\n } else {\r\n column.isSorted = false;\r\n column.isSortedDescending = true;\r\n }\r\n }\r\n\r\n const categorySummaries = this.copyAndSort(this.state.categorySummaries, sortColumnKey, isSortedDescending);\r\n\r\n this.setState({ categorySummaries, columns });\r\n }\r\n\r\n private copyAndSort(categories: ICategorySummary[], field: string, isSortedDescending: boolean): ICategorySummary[] {\r\n const key = field as keyof ICategorySummary;\r\n return orderBy(\r\n categories.slice(0),\r\n [category => (category[key] ? category[key].toUpperCase() : category[key])],\r\n [isSortedDescending ? 'desc' : 'asc']\r\n );\r\n }\r\n}\r\n\r\nexport default AdminCategoryList;\r\n","import * as React from 'react';\r\nimport { TextField, ITextField } from 'office-ui-fabric-react/lib-commonjs/TextField';\r\n\r\ninterface INumberTextFieldProps {\r\n id?: string;\r\n value: number | undefined;\r\n readOnly?: boolean;\r\n onChange: (newValue: number | undefined) => void;\r\n}\r\n\r\ninterface INumberTextFieldState {\r\n value?: string;\r\n}\r\n\r\nexport class NumberTextField extends React.Component {\r\n private textFieldRef = React.createRef();\r\n\r\n constructor(props: INumberTextFieldProps) {\r\n super(props);\r\n this.state = {\r\n value: props.value === undefined ? '' : props.value.toString()\r\n };\r\n }\r\n\r\n public render = () => (\r\n
\r\n \r\n
\r\n );\r\n\r\n public focus = () => this.textFieldRef.current!.focus();\r\n\r\n public reset = () => this.setState({ value: undefined });\r\n\r\n private getDisplayValue = () => (this.state.value || this.props.value || '').toString();\r\n\r\n private validateNumber = (value: string) => (isNaN(Number(value)) ? 'The value should be a number.' : '');\r\n\r\n private onChange = (ev: React.FormEvent, value?: string) => {\r\n this.setState({\r\n value\r\n });\r\n const numericValue = Number(value);\r\n this.props.onChange(isNaN(numericValue) ? undefined : numericValue);\r\n };\r\n}\r\n","import React from 'react';\r\nimport RouteLink, { RouteLinkType } from '../CustomRoutes/RouteLink';\r\nimport { Spinner, SpinnerSize } from 'office-ui-fabric-react/lib-commonjs/Spinner';\r\n\r\nconst SaveButton = (props: { isFormValid: boolean; isSubmitting: boolean; submitForm: () => Promise }) => (\r\n \r\n {props.isSubmitting && }\r\n Save\r\n \r\n);\r\n\r\nexport default SaveButton;\r\n","import { Api, IApiResponse } from '../api';\r\nimport { ConfigurationDto } from '../models';\r\n\r\nexport const get = (accessToken?:string): Promise> => Api.get('Configuration', accessToken);\r\n\r\nexport const update = (configuration: ConfigurationDto) => Api.put('Configuration', configuration);\r\n","import React, { Component, createRef } from 'react';\r\nimport LoadingPanel from '../../../shared/components/LoadingPanel/LoadingPanel';\r\nimport { Label } from 'office-ui-fabric-react/lib-commonjs/Label';\r\nimport { WorkTracker } from '../../../shared/components/LoadingPanel/work-tracker';\r\nimport { NumberTextField } from '../../../shared/components/NumberTextField/NumberTextField';\r\nimport SaveButton from '../SaveButton/SaveButton';\r\nimport { DefaultButton } from 'office-ui-fabric-react/lib-commonjs/Button';\r\nimport * as Configuration from '../../../shared/api/configuration/configuration';\r\nimport { toast } from 'react-toastify';\r\n\r\ninterface IConfigurationFormDto {\r\n sideDrawAppCountLimit: number | undefined;\r\n}\r\n\r\ninterface IAdminConfigurationState {\r\n form: IConfigurationFormDto;\r\n isSubmitting: boolean;\r\n isInEditMode: boolean;\r\n workTracker: WorkTracker;\r\n}\r\n\r\nclass AdminConfiguration extends Component {\r\n private readonly sideDrawAppCountLimitRef = createRef();\r\n\r\n constructor(props: any) {\r\n super(props);\r\n this.state = {\r\n form: { sideDrawAppCountLimit: undefined },\r\n isSubmitting: false,\r\n isInEditMode: false,\r\n workTracker: new WorkTracker()\r\n };\r\n }\r\n\r\n public render = () => (\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n {this.state.isInEditMode && (\r\n <>\r\n \r\n \r\n \r\n )}\r\n
\r\n
\r\n
\r\n );\r\n\r\n public componentDidMount = async () => {\r\n this.state.workTracker.track(this.loadData());\r\n };\r\n\r\n public componentDidUpdate = (prevProps: any, prevState: IAdminConfigurationState) => {\r\n if (!prevState.isInEditMode && this.state.isInEditMode) {\r\n if (this.sideDrawAppCountLimitRef.current !== null) {\r\n this.sideDrawAppCountLimitRef.current!.focus();\r\n }\r\n }\r\n };\r\n\r\n private leaveEditMode = () => {\r\n this.setState({ isInEditMode: false });\r\n this.sideDrawAppCountLimitRef.current!.reset();\r\n this.state.workTracker.track(this.loadData());\r\n };\r\n\r\n private enterEditMode = () => {\r\n this.setState({ isInEditMode: true });\r\n };\r\n\r\n private loadData = async () => {\r\n const response = await Configuration.get();\r\n if (response.success) {\r\n this.setState({ form: { sideDrawAppCountLimit: response.result!.sideDrawAppCountLimit } });\r\n }\r\n };\r\n\r\n private isFormValid = () =>\r\n this.state.form.sideDrawAppCountLimit !== undefined &&\r\n this.state.form.sideDrawAppCountLimit > 0 &&\r\n this.state.form.sideDrawAppCountLimit === parseInt(this.state.form.sideDrawAppCountLimit.toString(), 10);\r\n\r\n private submitForm = async (): Promise => {\r\n this.setState({ isSubmitting: true });\r\n const response = await Configuration.update({ sideDrawAppCountLimit: this.state.form.sideDrawAppCountLimit! });\r\n this.setState({ isSubmitting: false });\r\n if (response.success) {\r\n toast.success('Configuration was successfully saved');\r\n this.setState({ isInEditMode: false });\r\n }\r\n return response.success;\r\n };\r\n\r\n private onSideDrawAppCountLimitChanged = (sideDrawAppCountLimit: number | undefined) =>\r\n this.setState({ form: { ...this.state.form, sideDrawAppCountLimit } });\r\n}\r\n\r\nexport default AdminConfiguration;\r\n","import { Api, IApiResponse } from '../api';\r\nimport { ProfileDefaultAppsDto } from '../models';\r\n\r\nexport const getMany = (): Promise> => Api.get('profile-default-apps');\r\n\r\nexport const updateMany = (profileDefaultApps: ProfileDefaultAppsDto[]) => Api.put('profile-default-apps', profileDefaultApps);\r\n","import { Api, IApiResponse } from '../api';\r\nimport { ProfileDto } from '../models';\r\n\r\nconst getAll = (): Promise> => Api.get('Profiles');\r\n\r\nconst getMine = (accessToken?:string): Promise> => Api.get('Profiles/me', accessToken);\r\n\r\nexport { getAll, getMine };\r\n","import React, { Component } from 'react';\r\nimport { TagPicker, ITag, IBasePicker } from 'office-ui-fabric-react/lib-commonjs/Pickers';\r\nimport { NumericDictionary } from 'lodash';\r\n\r\ninterface IApplicationPickerProps {\r\n id?: string;\r\n disabled?: boolean;\r\n applicationIds: string[] | undefined;\r\n onChange?: (applicationIds: string[]) => void;\r\n availableApplications: ITag[];\r\n applicationCountLimit: number;\r\n}\r\n\r\nexport class ApplicationPicker extends Component {\r\n private tagPickerReference = React.createRef>();\r\n\r\n constructor(props: IApplicationPickerProps) {\r\n super(props);\r\n }\r\n\r\n public render = () => (\r\n ({ key: appId, name: this.getAppName(appId) }))}\r\n onResolveSuggestions={this.onResolveSuggestions}\r\n getTextFromItem={this.onGetTextFromItem}\r\n onChange={this.onApplicationListChange}\r\n pickerSuggestionsProps={{\r\n suggestionsHeaderText: 'Suggested Applications',\r\n noResultsFoundText: this.canAddApplication() ? 'No Applications Found' : 'You have reached the application count limit'\r\n }}\r\n inputProps={{\r\n 'aria-label': 'Application Picker',\r\n id: this.props.id\r\n }}\r\n />\r\n );\r\n\r\n public focus = () => this.tagPickerReference.current!.focusInput();\r\n\r\n private canAddApplication = () => this.props.applicationIds !== undefined && this.props.applicationIds.length < this.props.applicationCountLimit;\r\n\r\n private getAppName = (appId: string) => this.props.availableApplications.filter(app => app.key === appId)[0].name;\r\n\r\n private onGetTextFromItem = (item: ITag) => item.name;\r\n\r\n private onResolveSuggestions = (filterText: string, existingApplications?: ITag[]): ITag[] =>\r\n this.getAppSuggestions(filterText, existingApplications || [], this.props.availableApplications);\r\n\r\n private onApplicationListChange = (items?: ITag[] | undefined) => {\r\n const appList = items ? items!.map(t => t.key) : [];\r\n if (this.props.onChange) {\r\n this.props.onChange(appList);\r\n }\r\n };\r\n\r\n private getAppSuggestions = (filterText: string, existingApplications: ITag[], availableApplications: ITag[]): ITag[] => {\r\n const filterTextTrimmed = (filterText || '').trim();\r\n if (!filterTextTrimmed || !this.canAddApplication()) {\r\n return [];\r\n }\r\n const filteredApplications = availableApplications.filter(app => app.name.toLowerCase().indexOf(filterTextTrimmed.toLowerCase()) >= 0);\r\n const andRemovedDuplicates = filteredApplications.filter(app => !this.isApplicationAlreadyOnTheList(app, existingApplications));\r\n return andRemovedDuplicates;\r\n };\r\n\r\n private isApplicationAlreadyOnTheList = (application: ITag, existingApplications: ITag[]) =>\r\n existingApplications.some(compareTag => compareTag.key.toLowerCase() === application.key.toLowerCase());\r\n}\r\n","import React, { Component } from 'react';\r\nimport LoadingPanel from '../../../shared/components/LoadingPanel/LoadingPanel';\r\nimport { Label } from 'office-ui-fabric-react/lib-commonjs/Label';\r\nimport { WorkTracker } from '../../../shared/components/LoadingPanel/work-tracker';\r\nimport SaveButton from '../SaveButton/SaveButton';\r\nimport { DefaultButton } from 'office-ui-fabric-react/lib-commonjs/Button';\r\nimport * as DefaultProfileApps from '../../../shared/api/default-apps/default-apps';\r\nimport { toast } from 'react-toastify';\r\nimport { ProfileDefaultAppsDto, ProfileDto, ApplicationDto } from '../../../shared/api/models';\r\nimport * as Profiles from '../../../shared/api/profiles/profiles';\r\nimport * as Applications from '../../../shared/api/applications/applications';\r\nimport * as Configuration from '../../../shared/api/configuration/configuration';\r\nimport { orderBy } from 'lodash';\r\nimport { ApplicationPicker } from './ApplicationPicker';\r\n\r\ninterface IAdminDefaultProfileAppsState {\r\n isSubmitting: boolean;\r\n isInEditMode: boolean;\r\n defaultProfileApps: ProfileDefaultAppsDto[];\r\n availableProfiles: ProfileDto[];\r\n availableApplications: ApplicationDto[];\r\n sideDrawAppCountLimit: number;\r\n workTracker: WorkTracker;\r\n}\r\n\r\nclass AdminDefaultProfileApps extends Component {\r\n private applicationPickerReference = React.createRef();\r\n\r\n constructor(props: any) {\r\n super(props);\r\n this.state = {\r\n isSubmitting: false,\r\n isInEditMode: false,\r\n defaultProfileApps: [],\r\n availableProfiles: [],\r\n availableApplications: [],\r\n sideDrawAppCountLimit: 0,\r\n workTracker: new WorkTracker()\r\n };\r\n }\r\n\r\n public render = () => (\r\n \r\n \r\n
\r\n {this.state.defaultProfileApps &&\r\n this.state.defaultProfileApps.map((apps, index) => (\r\n
\r\n \r\n ({ key: app.id, name: app.name }))}\r\n onChange={this.listOfApplicationsChanged(apps.profileCode)}\r\n />\r\n
\r\n ))}\r\n
\r\n {this.state.isInEditMode && (\r\n <>\r\n \r\n \r\n \r\n )}\r\n
\r\n
\r\n
\r\n );\r\n\r\n public componentDidMount = async () => {\r\n this.state.workTracker.track(this.loadData());\r\n };\r\n\r\n public componentDidUpdate = (prevProps: any, prevState: IAdminDefaultProfileAppsState) => {\r\n if (!prevState.isInEditMode && this.state.isInEditMode) {\r\n if (this.applicationPickerReference.current !== null) {\r\n this.applicationPickerReference.current!.focus();\r\n }\r\n }\r\n };\r\n\r\n private leaveEditMode = () => {\r\n this.setState({ isInEditMode: false });\r\n this.state.workTracker.track(this.loadData());\r\n };\r\n\r\n private enterEditMode = () => {\r\n this.setState({ isInEditMode: true });\r\n };\r\n\r\n private loadData = async () => {\r\n const [defaultProfileAppsResponse, profilesResponse, applicationsResponse, configurationResult] = await Promise.all([\r\n DefaultProfileApps.getMany(),\r\n Profiles.getAll(),\r\n Applications.getMany(true),\r\n Configuration.get()\r\n ]);\r\n\r\n if (defaultProfileAppsResponse.success && profilesResponse.success && applicationsResponse.success && configurationResult.success) {\r\n const defaultProfileApps = defaultProfileAppsResponse.result!;\r\n const availableProfiles = orderBy(profilesResponse.result!, 'displayName', 'asc');\r\n const availableApplications = orderBy(applicationsResponse.result!, 'name', 'asc');\r\n const filteredDefaultAppsByAvailableProfiles = defaultProfileApps.filter(\r\n apps => availableProfiles.map(p => p.profileCode).indexOf(apps.profileCode) >= 0\r\n );\r\n const sideDrawAppCountLimit = configurationResult.result!.sideDrawAppCountLimit;\r\n this.setState({ availableProfiles, availableApplications, defaultProfileApps: filteredDefaultAppsByAvailableProfiles, sideDrawAppCountLimit });\r\n }\r\n };\r\n\r\n private isFormValid = () => this.state.defaultProfileApps.every(p => !!p.defaultAppIds && !!p.defaultAppIds.length);\r\n\r\n private submitForm = async (): Promise => {\r\n this.setState({ isSubmitting: true });\r\n const response = await DefaultProfileApps.updateMany(this.state.defaultProfileApps);\r\n this.setState({ isSubmitting: false });\r\n if (response.success) {\r\n toast.success('Default profile apps were successfully saved');\r\n this.setState({ isInEditMode: false });\r\n }\r\n return response.success;\r\n };\r\n\r\n private listOfApplicationsChanged = (profileCode: string) => (applicationIds: string[]) => {\r\n const defaultProfileApps = this.state.defaultProfileApps.map(apps => {\r\n if (apps.profileCode === profileCode) {\r\n return { profileCode, defaultAppIds: applicationIds };\r\n }\r\n return apps;\r\n });\r\n this.setState({ defaultProfileApps });\r\n };\r\n}\r\n\r\nexport default AdminDefaultProfileApps;\r\n","import React, { Component } from 'react';\r\nimport AdminAppList from '../AdminAppList/AdminAppList';\r\nimport RouteLink, { RouteLinkType } from '../CustomRoutes/RouteLink';\r\nimport { Pivot, PivotItem } from 'office-ui-fabric-react/lib-commonjs/Pivot';\r\nimport AdminCategoryList from '../Categories/AdminCategoryList';\r\nimport AdminConfiguration from '../AdminConfiguration/AdminConfiguration';\r\nimport AdminDefaultProfileApps from '../AdminDefaultProfileApps/AdminDefaultProfileApps';\r\n\r\nclass Admin extends Component {\r\n public render() {\r\n return (\r\n
\r\n \r\n \r\n \r\n Add a New Application\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n Add a New Category\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\nexport default Admin;\r\n","import { TextField, ITextFieldProps } from 'office-ui-fabric-react/lib-commonjs/TextField';\r\nimport React, { Component } from 'react';\r\nimport { debounce } from 'lodash';\r\n\r\ninterface ILazyTextFieldProps extends ITextFieldProps {\r\n onTextChange: (text: string | undefined) => void;\r\n}\r\n\r\ninterface ILazyTextFieldState {\r\n inputValue?: string;\r\n}\r\n\r\nclass LazyTextField extends Component {\r\n constructor(props: ILazyTextFieldProps) {\r\n super(props);\r\n\r\n this.state = {\r\n inputValue: this.props.value\r\n };\r\n }\r\n\r\n public render() {\r\n return ;\r\n }\r\n\r\n private onChange = (_?: React.FormEvent, value?: string) => {\r\n this.setState({ inputValue: value });\r\n this.triggerDeferredTextChangeEvent();\r\n };\r\n\r\n /* tslint:disable-next-line */\r\n private triggerDeferredTextChangeEvent = debounce(() => {\r\n this.props.onTextChange(this.state.inputValue);\r\n }, 200);\r\n\r\n private onBlur = (_?: React.FormEvent) => {\r\n this.props.onTextChange(this.state.inputValue);\r\n };\r\n}\r\n\r\nexport default LazyTextField;\r\n","import React, { Component } from 'react';\r\nimport { DetailsList, IColumn, SelectionMode } from 'office-ui-fabric-react/lib-commonjs/DetailsList';\r\nimport { Checkbox } from 'office-ui-fabric-react/lib-commonjs/Checkbox';\r\nimport { IDetailedApplicationUrl } from '../ApplicationUrls/ApplicationUrls';\r\nimport LazyTextField from '../LazyTextField/LazyTextField';\r\nimport { sortByColumn } from '../../../shared/util/details-list-util';\r\n\r\ninterface IApplicationLocationSpecificUrlsProps {\r\n urls: IDetailedApplicationUrl[];\r\n onChange: (newUrls: IDetailedApplicationUrl[]) => void;\r\n}\r\n\r\ninterface IApplicationLocationSpecificUrlsState {\r\n columns: IColumn[];\r\n}\r\n\r\nclass ApplicationLocationSpecificUrls extends Component {\r\n constructor(props: IApplicationLocationSpecificUrlsProps) {\r\n super(props);\r\n this.state = {\r\n columns: this.getColumns()\r\n };\r\n }\r\n\r\n public render() {\r\n return (\r\n
\r\n \r\n
\r\n );\r\n }\r\n\r\n private getColumns(): IColumn[] {\r\n return [\r\n {\r\n key: 'isActive',\r\n name: 'Active',\r\n fieldName: 'isActive',\r\n minWidth: 80,\r\n maxWidth: 80,\r\n isResizable: false,\r\n onColumnClick: this.onColumnClick,\r\n onRender: (url: IDetailedApplicationUrl, index?: number) => (\r\n \r\n )\r\n },\r\n {\r\n key: 'location.locationCode',\r\n name: 'Code',\r\n fieldName: 'location.locationCode',\r\n minWidth: 80,\r\n maxWidth: 100,\r\n isResizable: true,\r\n onColumnClick: this.onColumnClick,\r\n onRender: (url: IDetailedApplicationUrl) =>
{url.location ? url.location.locationCode : ''}
\r\n },\r\n {\r\n key: 'location.suburb',\r\n name: 'Suburb',\r\n fieldName: 'location.suburb',\r\n minWidth: 100,\r\n maxWidth: 200,\r\n isResizable: true,\r\n onColumnClick: this.onColumnClick,\r\n onRender: (url: IDetailedApplicationUrl) =>
{url.location ? url.location.suburb : ''}
\r\n },\r\n {\r\n key: 'location.displayName',\r\n name: 'Location',\r\n fieldName: 'location.displayName',\r\n minWidth: 150,\r\n maxWidth: 400,\r\n isResizable: true,\r\n onColumnClick: this.onColumnClick,\r\n onRender: (url: IDetailedApplicationUrl) =>
{url.location ? url.location.displayName : ''}
\r\n },\r\n {\r\n key: 'url',\r\n name: 'URL',\r\n fieldName: 'url',\r\n minWidth: 300,\r\n maxWidth: 800,\r\n isResizable: true,\r\n onColumnClick: this.onColumnClick,\r\n onRender: (url: IDetailedApplicationUrl, index?: number) => {\r\n return ;\r\n }\r\n }\r\n ];\r\n }\r\n\r\n private onLocationEnableHandlerCreator = (index?: number) => (_?: React.FormEvent, isChecked?: boolean) => {\r\n if (!index && index !== 0) {\r\n return;\r\n }\r\n\r\n const newUrls = this.props.urls.slice();\r\n const urlToReplace = newUrls[index];\r\n newUrls.splice(index, 1, { ...urlToReplace, isActive: isChecked || false });\r\n this.props.onChange(newUrls);\r\n };\r\n\r\n private onUrlChangeHandlerCreator = (index?: number) => (url?: string) => {\r\n if (!index && index !== 0) {\r\n return;\r\n }\r\n\r\n const newUrls = this.props.urls.slice();\r\n const urlToReplace = newUrls[index];\r\n newUrls.splice(index, 1, { ...urlToReplace, url: url || '' });\r\n this.props.onChange(newUrls);\r\n };\r\n\r\n private onColumnClick = (_: React.MouseEvent, column: IColumn) => {\r\n this.sort(column.key);\r\n };\r\n\r\n private sort(columnKey: string) {\r\n const sortResult = sortByColumn(this.props.urls, this.state.columns, columnKey);\r\n this.setState({ columns: sortResult.columns });\r\n this.props.onChange(sortResult.rows);\r\n }\r\n\r\n private getRowKey(item: IDetailedApplicationUrl): string {\r\n return item.location!.locationCode;\r\n }\r\n}\r\n\r\nexport default ApplicationLocationSpecificUrls;\r\n","import { Checkbox } from 'office-ui-fabric-react/lib-commonjs/Checkbox';\r\nimport { Label } from 'office-ui-fabric-react/lib-commonjs/Label';\r\nimport { TextField } from 'office-ui-fabric-react/lib-commonjs/TextField';\r\nimport React, { Component } from 'react';\r\nimport { UserLocation } from '../../../shared/api/models';\r\nimport ApplicationLocationSpecificUrls from '../ApplicationLocationSpecificUrls/ApplicationLocationSpecificUrls';\r\n\r\nexport interface IDetailedApplicationUrl {\r\n isActive: boolean;\r\n location?: UserLocation;\r\n url?: string;\r\n}\r\n\r\ninterface IApplicationUrlsProps {\r\n isLocationSpecific: boolean;\r\n locationSpecificUrls: IDetailedApplicationUrl[];\r\n globalUrl: IDetailedApplicationUrl;\r\n onIsLocationSpecificChange: (isLocationSpecific: boolean) => void;\r\n onGlobalUrlChange: (url: IDetailedApplicationUrl) => void;\r\n onLocationSpecificUrlChange: (url: IDetailedApplicationUrl[]) => void;\r\n}\r\n\r\nclass ApplicationUrls extends Component {\r\n public render() {\r\n return (\r\n
\r\n
\r\n \r\n
\r\n {this.props.isLocationSpecific ? (\r\n \r\n ) : (\r\n \r\n )}\r\n
\r\n );\r\n }\r\n\r\n private readonly onIsLocationSpecificChanged = (_?: React.FormEvent, isChecked?: boolean) => {\r\n this.props.onIsLocationSpecificChange(isChecked || false);\r\n };\r\n}\r\n\r\nconst GlobalUrl = (props: { detailedUrl: IDetailedApplicationUrl; onChange: (url: IDetailedApplicationUrl) => void }) => {\r\n const onChangeHandler = (_?: React.FormEvent, url?: string) => {\r\n props.onChange({ ...props.detailedUrl, url: url || '' });\r\n };\r\n\r\n return (\r\n
\r\n \r\n \r\n
\r\n );\r\n};\r\n\r\nexport default ApplicationUrls;\r\n","import React, { Component } from 'react';\r\nimport { TagPicker, ITag } from 'office-ui-fabric-react/lib-commonjs/Pickers';\r\nimport * as Tags from '../../../shared/api/tags/tags';\r\n\r\ninterface IApplicationTagPickerProps {\r\n id?: string;\r\n tags: string[] | undefined;\r\n onChange?: (tags: string[]) => void;\r\n}\r\n\r\ninterface IApplicationTagPickerState {\r\n availableTags: ITag[];\r\n}\r\n\r\nexport class ApplicationTagPicker extends Component {\r\n constructor(props: IApplicationTagPickerProps) {\r\n super(props);\r\n\r\n this.state = {\r\n availableTags: []\r\n };\r\n }\r\n\r\n public componentDidMount() {\r\n this.loadTags();\r\n }\r\n\r\n public render = () => (\r\n ({ key: t, name: t }))}\r\n onResolveSuggestions={this.onResolveSuggestions}\r\n getTextFromItem={this.onGetTextFromItem}\r\n onChange={this.onTagListChange}\r\n pickerSuggestionsProps={{\r\n suggestionsHeaderText: 'Suggested Tags',\r\n noResultsFoundText: 'No Tags Found'\r\n }}\r\n inputProps={{\r\n 'aria-label': 'Tag Picker',\r\n id: this.props.id\r\n }}\r\n />\r\n );\r\n\r\n private async loadTags() {\r\n const response = await Tags.getAll();\r\n if (response.success && response.result) {\r\n this.setState({\r\n availableTags: response.result.sort((t1, t2) => t1.toLowerCase().localeCompare(t2.toLowerCase())).map(item => ({ key: item, name: item }))\r\n });\r\n }\r\n }\r\n private onGetTextFromItem = (item: ITag) => item.name;\r\n\r\n private onResolveSuggestions = (filterText: string, existingTags?: ITag[]): ITag[] =>\r\n getTagSuggestions(filterText, existingTags || [], this.state.availableTags);\r\n\r\n private onTagListChange = (items?: ITag[] | undefined) => {\r\n const tagList = items ? items!.map(t => t.name) : [];\r\n if (this.props.onChange) {\r\n this.props.onChange(tagList);\r\n }\r\n };\r\n}\r\n\r\nexport const getTagSuggestions = (filterText: string, existingTags: ITag[], availableTags: ITag[]): ITag[] => {\r\n const filterTextTrimmed = (filterText || '').trim();\r\n if (!filterTextTrimmed) {\r\n return [];\r\n }\r\n const filteredTags = availableTags.filter(tag => tag.name.toLowerCase().indexOf(filterTextTrimmed.toLowerCase()) >= 0);\r\n const withTheCurrentItemOnTop =\r\n filteredTags.map(t => t.name).indexOf(filterTextTrimmed.toLowerCase()) >= 0\r\n ? filteredTags\r\n : [{ key: filterTextTrimmed, name: filterTextTrimmed }].concat(filteredTags);\r\n const andRemovedDuplicates = withTheCurrentItemOnTop.filter(tag => !isTagAlreadyOnTheList(tag, existingTags));\r\n return andRemovedDuplicates;\r\n};\r\n\r\nconst isTagAlreadyOnTheList = (tag: ITag, existingTags: ITag[]) =>\r\n existingTags.some(compareTag => compareTag.key.toLowerCase() === tag.key.toLowerCase());\r\n","import { Api, IApiResponse } from '../api';\r\n\r\nexport const getAll = (): Promise> => Api.get('Tags');\r\n","import { orderBy } from 'lodash';\r\nimport { Checkbox } from 'office-ui-fabric-react/lib-commonjs/Checkbox';\r\nimport { Image } from 'office-ui-fabric-react/lib-commonjs/Image';\r\nimport { Label } from 'office-ui-fabric-react/lib-commonjs/Label';\r\nimport { MessageBar, MessageBarType } from 'office-ui-fabric-react/lib-commonjs/MessageBar';\r\nimport { Pivot, PivotItem, PivotLinkFormat } from 'office-ui-fabric-react/lib-commonjs/Pivot';\r\nimport { TextField } from 'office-ui-fabric-react/lib-commonjs/TextField';\r\nimport React, { ChangeEvent, Component } from 'react';\r\nimport { toast } from 'react-toastify';\r\nimport * as Applications from '../../../shared/api/applications/applications';\r\nimport * as Categories from '../../../shared/api/categories/categories';\r\nimport * as Locations from '../../../shared/api/locations/locations';\r\nimport * as Profiles from '../../../shared/api/profiles/profiles';\r\nimport { ApplicationEntryDto, CategoryDto, UserLocation, ApplicationUrlEntryDto, ProfileDto } from '../../../shared/api/models';\r\nimport LoadingPanel from '../../../shared/components/LoadingPanel/LoadingPanel';\r\nimport { WorkTracker } from '../../../shared/components/LoadingPanel/work-tracker';\r\nimport ApplicationUrls, { IDetailedApplicationUrl } from '../ApplicationUrls/ApplicationUrls';\r\nimport RouteLink, { RouteLinkType } from '../CustomRoutes/RouteLink';\r\nimport SaveButton from '../SaveButton/SaveButton';\r\nimport { ApplicationTagPicker } from './ApplicationTagPicker';\r\n\r\ninterface IApplicationFormState {\r\n isNew: boolean;\r\n isSubmitting: boolean;\r\n availableCategories: CategoryDto[];\r\n availableProfiles: ProfileDto[];\r\n availableLocations: UserLocation[];\r\n isLocationSpecific: boolean;\r\n locationSpecificUrls: IDetailedApplicationUrl[];\r\n globalUrl: IDetailedApplicationUrl;\r\n currentIconUrl: string | undefined;\r\n form: ApplicationEntryDto;\r\n iconFile: File | undefined;\r\n workTracker: WorkTracker;\r\n}\r\n\r\nclass ApplicationForm extends Component {\r\n constructor(props: any) {\r\n super(props);\r\n this.state = {\r\n isNew: props.match.params.id === 'new',\r\n isSubmitting: false,\r\n availableCategories: [],\r\n availableProfiles: [],\r\n availableLocations: [],\r\n isLocationSpecific: false,\r\n locationSpecificUrls: [],\r\n globalUrl: { isActive: true, location: undefined, url: '' },\r\n currentIconUrl: undefined,\r\n iconFile: undefined,\r\n form: {\r\n name: '',\r\n description: '',\r\n moreInformationUrl: '',\r\n urls: [],\r\n categoryIds: [],\r\n profileCodes: [],\r\n tags: [],\r\n isArchived: false\r\n },\r\n workTracker: new WorkTracker()\r\n };\r\n }\r\n\r\n public render() {\r\n return (\r\n \r\n
\r\n

{`Application${this.state.form.name ? ' - ' + this.state.form.name : ''}`}

\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n \r\n Please make sure the selected image is fairly small (preferably up to 64x64 pixels) and square.\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 {this.state.availableCategories.map(c => (\r\n id === c.id) !== undefined}\r\n onChange={this.onCategorySelectionChanged(c.id)}\r\n />\r\n ))}\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n {this.state.availableProfiles.map(profile => (\r\n id === profile.profileCode) !== undefined}\r\n onChange={this.onProfileSelectionChanged(profile.profileCode)}\r\n />\r\n ))}\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n Cancel\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n Cancel\r\n \r\n
\r\n
\r\n
\r\n );\r\n }\r\n\r\n public async componentDidMount() {\r\n window.scrollTo(0, 0);\r\n this.state.workTracker.track(this.loadData());\r\n }\r\n\r\n private async loadData() {\r\n await Promise.all([this.loadCategories(), this.loadProfiles(), this.loadLocations()]);\r\n\r\n if (!this.state.isNew) {\r\n await this.loadApplication();\r\n } else {\r\n this.initNewApplication();\r\n }\r\n }\r\n\r\n private async loadCategories() {\r\n const response = await Categories.getAll();\r\n if (response.success) {\r\n this.setState({ availableCategories: orderBy(response.result, 'name', 'asc') });\r\n }\r\n }\r\n\r\n private async loadProfiles() {\r\n const response = await Profiles.getAll();\r\n if (response.success) {\r\n this.setState({ availableProfiles: orderBy(response.result, 'displayName', 'asc') });\r\n if (this.state.isNew) {\r\n this.setState({ form: { ...this.state.form, profileCodes: this.state.availableProfiles.map(p => p.profileCode) } });\r\n }\r\n }\r\n }\r\n\r\n private async loadLocations() {\r\n const response = await Locations.getAll();\r\n if (response.success && response.result) {\r\n this.setState({ availableLocations: response.result });\r\n }\r\n }\r\n\r\n private async loadApplication() {\r\n const response = await Applications.get(this.props.match.params.id);\r\n if (response.success && response.result) {\r\n const app = response.result;\r\n this.setState({\r\n isLocationSpecific: app.isLocationSpecific,\r\n locationSpecificUrls: this.state.availableLocations.map(l => {\r\n const match = app.urls.find(u => u.locationCode === l.locationCode);\r\n return (match ? { isActive: true, location: l, url: match.url } : { isActive: false, location: l }) as IDetailedApplicationUrl;\r\n }),\r\n globalUrl: app.urls ? { isActive: true, url: app.urls[0].url } : this.state.globalUrl,\r\n currentIconUrl: app.iconUrl,\r\n form: {\r\n name: app.name,\r\n description: app.description,\r\n moreInformationUrl: app.moreInformationUrl,\r\n urls: app.urls,\r\n categoryIds: app.categories.map(c => c.id),\r\n profileCodes: app.profileCodes,\r\n tags: app.tags,\r\n isArchived: app.isArchived\r\n }\r\n });\r\n }\r\n }\r\n\r\n private initNewApplication() {\r\n this.setState({ locationSpecificUrls: this.state.availableLocations.map(l => ({ isActive: false, location: l })) });\r\n }\r\n\r\n private readonly submitForm = async (): Promise => {\r\n this.setState({ isSubmitting: true });\r\n\r\n const urlsToSave = this.state.isLocationSpecific\r\n ? this.state.locationSpecificUrls.filter(l => l.isActive && l.url && l.url.trim())\r\n : [this.state.globalUrl];\r\n const form: ApplicationEntryDto = {\r\n ...this.state.form,\r\n urls: urlsToSave.map((u): ApplicationUrlEntryDto => ({ locationCode: u.location ? u.location.locationCode : null, url: u.url || '' }))\r\n };\r\n\r\n const response = this.state.isNew\r\n ? await Applications.add(form, this.state.iconFile)\r\n : await Applications.update(this.props.match.params.id, form, this.state.iconFile);\r\n\r\n this.setState({ isSubmitting: false });\r\n if (response.success) {\r\n toast.success('Application was successfully saved');\r\n }\r\n\r\n return response.success;\r\n };\r\n\r\n private readonly isFormValid = (): boolean => {\r\n const hasValidUrl =\r\n (this.state.isLocationSpecific && this.state.locationSpecificUrls.every(l => !l.isActive || (l.isActive && !!l.url))) ||\r\n (!this.state.isLocationSpecific && !!this.state.globalUrl.url);\r\n\r\n return (\r\n !!this.state.form.name &&\r\n !!this.state.form.description &&\r\n hasValidUrl &&\r\n this.state.form.categoryIds.length > 0 &&\r\n this.state.form.profileCodes.length > 0\r\n );\r\n };\r\n\r\n private readonly onIconFileSelected = (event: ChangeEvent) => {\r\n if (event.target.files && event.target.files[0]) {\r\n const file = event.target.files[0];\r\n this.setState({ iconFile: file });\r\n }\r\n };\r\n\r\n private readonly onCategorySelectionChanged = (categoryId: string) => (_?: React.FormEvent, isChecked?: boolean) =>\r\n this.setState({\r\n form: {\r\n ...this.state.form,\r\n categoryIds: isChecked ? this.state.form.categoryIds.concat([categoryId]) : this.state.form.categoryIds.filter(id => id !== categoryId)\r\n }\r\n });\r\n\r\n private readonly onProfileSelectionChanged = (profileCode: string) => (_?: React.FormEvent, isChecked?: boolean) =>\r\n this.setState({\r\n form: {\r\n ...this.state.form,\r\n profileCodes: isChecked ? this.state.form.profileCodes.concat([profileCode]) : this.state.form.profileCodes.filter(id => id !== profileCode)\r\n }\r\n });\r\n\r\n private readonly listOfTagsChanged = (tags: string[]) => {\r\n this.setState({ form: { ...this.state.form, tags } });\r\n };\r\n\r\n private readonly onAppNameChanged = (_?: React.FormEvent, name?: string) => {\r\n this.setState({ form: { ...this.state.form, name: name || '' } });\r\n };\r\n\r\n private readonly onAppDescriptionChanged = (_?: React.FormEvent, description?: string) => {\r\n this.setState({ form: { ...this.state.form, description: description || '' } });\r\n };\r\n\r\n private readonly onAppMoreInfoUrlChanged = (_?: React.FormEvent, moreInformationUrl?: string) => {\r\n this.setState({ form: { ...this.state.form, moreInformationUrl: moreInformationUrl || '' } });\r\n };\r\n\r\n private readonly onIsLocationSpecificChanged = (isLocationSpecific: boolean) => {\r\n this.setState({ isLocationSpecific, globalUrl: { ...this.state.globalUrl, url: '' } });\r\n };\r\n\r\n private readonly onGlobalUrlChanged = (url: IDetailedApplicationUrl) => {\r\n this.setState({ globalUrl: url });\r\n };\r\n\r\n private readonly onLocationSpecificUrlsChanged = (urls: IDetailedApplicationUrl[]) => {\r\n this.setState({ locationSpecificUrls: urls });\r\n };\r\n\r\n private readonly onIsArchivedChanged = (_?: React.FormEvent, isChecked?: boolean) => {\r\n this.setState({ form: { ...this.state.form, isArchived: isChecked || false } });\r\n };\r\n}\r\n\r\nconst CurrentIcon = (props: { isNew: boolean; url: string | undefined }) => {\r\n if (props.isNew) {\r\n return null;\r\n }\r\n\r\n return (\r\n
\r\n \r\n {props.url ? : Not set}\r\n
\r\n );\r\n};\r\n\r\nconst Archive = (props: {\r\n isNew: boolean;\r\n isArchived: boolean;\r\n onChange: (ev?: React.FormEvent, checked?: boolean) => void;\r\n}) => {\r\n if (props.isNew) {\r\n return null;\r\n }\r\n return (\r\n <>\r\n
\r\n \r\n
\r\n\r\n
\r\n \r\n Warning: archiving an application will hide it from the app launcher application as well as the side draw for all users. Unarchiving an\r\n application will cause it to reappear for any user that had previously added it to their side draw. If this is not intended, consider\r\n creating a new application.\r\n \r\n
\r\n \r\n );\r\n};\r\n\r\nexport default ApplicationForm;\r\n","import { Api, IApiResponse } from '../api';\r\nimport { UserLocation } from '../models';\r\n\r\nconst getAll = (): Promise> => Api.get('Locations');\r\n\r\nexport { getAll };\r\n","import { Api, IApiResponse } from '../api';\r\nimport { UserPreferencesDto } from '../models';\r\n\r\nexport const get = (accessToken?:string): Promise> => Api.get('user-preferences/me', accessToken);\r\n\r\nexport const update = (userPreferences: UserPreferencesDto, accessToken?:string) => Api.put('user-preferences/me', userPreferences,undefined, accessToken);\r\n\r\nexport const reset = (accessToken?:string) => Api.delete('user-preferences/me', accessToken);\r\n","import { ILocationApplication } from '../api/applications/applications';\r\nimport { getConfig } from '../config/config';\r\n\r\n/* NOTE:\r\n * The module 'applicationinsights-js' is causing the following issue during unit testing:\r\n * \"ReferenceError: define is not defined\"\r\n * It's a know issue and authors are working on this. Once it's fixed please change the work-around\r\n * of (await import('applicationinsights-js')).AppInsights to a regular import at the top of the file.\r\n */\r\n\r\nconst reportAppUsage = async (app: ILocationApplication, userProfiles: string[], source: 'SideDraw' | 'MainApp') => {\r\n const AppInsights = (await import('applicationinsights-js')).AppInsights;\r\n AppInsights.trackEvent('Application Usage', {\r\n applicationName: app.appName,\r\n locationCode: app.locationCode || '',\r\n userProfiles: userProfiles.join(', '),\r\n source\r\n });\r\n};\r\n\r\nconst initialiseAnalyticsEngine = async () => {\r\n const AppInsights = (await import('applicationinsights-js')).AppInsights;\r\n AppInsights.downloadAndSetup!({ instrumentationKey: getConfig().applicationInsightsInstrumentationKey });\r\n};\r\n\r\nexport { reportAppUsage, initialiseAnalyticsEngine };\r\n","import { Image, ImageFit } from 'office-ui-fabric-react/lib-commonjs/Image';\r\nimport { Link } from 'office-ui-fabric-react/lib-commonjs/Link';\r\nimport { Component, default as React } from 'react';\r\nimport './Application.scss';\r\nimport { ILocationApplication } from '../../../shared/api/applications/applications';\r\nimport { IconButton } from 'office-ui-fabric-react/lib-commonjs/Button';\r\nimport { reportAppUsage } from '../../../shared/analytics/analytics';\r\nimport { IApplicationOperations } from './Apps';\r\nimport { TooltipHost, TooltipDelay } from 'office-ui-fabric-react/lib-commonjs/Tooltip';\r\n\r\ninterface IApplicationProps {\r\n applicationOperations: IApplicationOperations;\r\n application: ILocationApplication;\r\n userProfiles: string[];\r\n}\r\n\r\nconst ToggleDescriptionButton = (props: { appName: string; toggleDescription: () => void }) => (\r\n \r\n \r\n \r\n);\r\n\r\nconst AppDescription = (props: { application: ILocationApplication }) => (\r\n
\r\n
{props.application.description}
\r\n {props.application.moreInformationUrl && (\r\n
\r\n More information\r\n
\r\n )}\r\n
\r\n);\r\n\r\nconst RemoveAppFromFavouritesButton = (props: { appName: string; toggleBelongingnessToFavorites: () => void }) => (\r\n \r\n \r\n \r\n);\r\n\r\nconst AddAppToFavouritesButton = (props: {\r\n appName: string;\r\n applicationOperations: IApplicationOperations;\r\n toggleBelongingnessToFavorites: () => void;\r\n}) => (\r\n \r\n \r\n \r\n);\r\n\r\nexport class Application extends Component {\r\n constructor(props: IApplicationProps) {\r\n super(props);\r\n }\r\n\r\n public render = () => (\r\n <>\r\n
\r\n \r\n \r\n {this.props.application.appName}\r\n \r\n {this.props.application.description && (\r\n \r\n )}\r\n {this.props.applicationOperations.isFavorite(this.props.application) && (\r\n \r\n )}\r\n {!this.props.applicationOperations.isFavorite(this.props.application) && (\r\n \r\n )}\r\n
\r\n {this.props.application.isDescriptionVisible && }\r\n \r\n );\r\n\r\n private toggleDescription = () => this.props.applicationOperations.onToggleDescription(this.props.application);\r\n\r\n private toggleBelongingnessToFavorites = () => this.props.applicationOperations.onToggleBelongingnessToFavorites(this.props.application);\r\n\r\n private readonly onAppClick = (app: ILocationApplication) => async () => {\r\n await reportAppUsage(app, this.props.userProfiles, 'MainApp');\r\n return true;\r\n };\r\n}\r\n","import { ILocationApplication, CategoryViewModel } from '../../../shared/api/applications/applications';\r\n\r\nexport class CategoryWithApps {\r\n private category: CategoryViewModel;\r\n private apps: ILocationApplication[] = [];\r\n\r\n constructor(category: CategoryViewModel) {\r\n this.category = category;\r\n }\r\n\r\n public get id() {\r\n return this.category.id;\r\n }\r\n\r\n public get name() {\r\n return this.category.name;\r\n }\r\n\r\n public get applications() {\r\n return this.apps;\r\n }\r\n\r\n public get appCount() {\r\n return this.apps.length;\r\n }\r\n\r\n public get isCollapsed() {\r\n return this.category.isCollapsed;\r\n }\r\n\r\n public appendApp(application: ILocationApplication) {\r\n this.applications.push(application);\r\n }\r\n}\r\n","import { Component, default as React } from 'react';\r\nimport { CSSTransition, TransitionGroup } from 'react-transition-group';\r\nimport { Application } from './Application';\r\nimport './AppsByCategory.scss';\r\nimport { CategoryWithApps } from './CategoryWithApps';\r\nimport { ILocationApplication } from '../../../shared/api/applications/applications';\r\nimport { IconButton, ActionButton } from 'office-ui-fabric-react/lib-commonjs/Button';\r\nimport { IApplicationOperations } from './Apps';\r\n\r\ninterface ICategoryProps {\r\n applicationOperations: IApplicationOperations;\r\n categoryWithApps: CategoryWithApps;\r\n isCollapsingAllowed: boolean;\r\n onToggleCategory: () => void;\r\n userProfiles: string[];\r\n}\r\n\r\nconst Category = (props: ICategoryProps) => (\r\n
\r\n

\r\n {props.isCollapsingAllowed && (\r\n \r\n )}\r\n {props.categoryWithApps.name}\r\n

\r\n {!(props.isCollapsingAllowed && props.categoryWithApps.isCollapsed) && (\r\n \r\n {props.categoryWithApps.applications.map(a => (\r\n \r\n \r\n \r\n ))}\r\n \r\n )}\r\n
\r\n);\r\n\r\ninterface IApplicationCategoryColumnProps {\r\n applicationOperations: IApplicationOperations;\r\n categoriesWithApps: CategoryWithApps[];\r\n isCollapsingAllowed: boolean;\r\n onToggleCategory: (category: CategoryWithApps) => void;\r\n userProfiles: string[];\r\n}\r\n\r\nconst ApplicationCategoryColumn = (props: IApplicationCategoryColumnProps) => {\r\n const toggleCategory = (category: CategoryWithApps) => () => {\r\n props.onToggleCategory(category);\r\n };\r\n return (\r\n
\r\n {props.categoriesWithApps.map(c => (\r\n \r\n ))}\r\n
\r\n );\r\n};\r\n\r\ninterface IAppsByCategoryProps {\r\n applicationOperations: IApplicationOperations;\r\n applications: ILocationApplication[] | null;\r\n onToggleCategory: (categoryId: string) => void;\r\n onOpenAllCategories: () => void;\r\n onCloseAllCategories: () => void;\r\n userProfiles: string[];\r\n}\r\n\r\nclass AppsByCategory extends Component {\r\n constructor(props: IAppsByCategoryProps) {\r\n super(props);\r\n }\r\n\r\n public render = () => {\r\n const categoriesWithApps = this.getCategoriesWithApps();\r\n const threeColumn = this.getThreeColumnConfiguration(categoriesWithApps);\r\n return (\r\n
\r\n
\r\n
\r\n Open All\r\n Close All\r\n
\r\n \r\n
\r\n
\r\n {threeColumn.map((col, i) => (\r\n \r\n ))}\r\n
\r\n
\r\n );\r\n };\r\n\r\n private openAllCategories = () => {\r\n this.props.onOpenAllCategories();\r\n };\r\n\r\n private closeAllCategories = () => {\r\n this.props.onCloseAllCategories();\r\n };\r\n\r\n private toggleCategory = (categoryWithApps: CategoryWithApps) => {\r\n this.props.onToggleCategory(categoryWithApps.id);\r\n };\r\n\r\n private readonly getCategoriesWithApps = (): CategoryWithApps[] => {\r\n if (this.props.applications) {\r\n const categories: { [id: string]: CategoryWithApps } = {};\r\n this.props.applications.map(a =>\r\n a.categories.map(c => (categories[c.id] ? categories[c.id].appendApp(a) : (categories[c.id] = new CategoryWithApps(c)).appendApp(a)))\r\n );\r\n return Object.keys(categories)\r\n .map(id => categories[id])\r\n .sort((c1, c2) => c1.name.toUpperCase().localeCompare(c2.name.toUpperCase()));\r\n }\r\n return [];\r\n };\r\n\r\n private getThreeColumnConfiguration = (categories: CategoryWithApps[]): CategoryWithApps[][] => {\r\n const columnPermutations: number[][] = [];\r\n\r\n for (let col2Start = 1; col2Start < categories.length; col2Start++) {\r\n for (let col3Start = col2Start + 1; col3Start < categories.length; col3Start++) {\r\n columnPermutations.push([0, col2Start, col3Start]);\r\n }\r\n }\r\n\r\n return this.getBestColumnConfiguration(categories, columnPermutations);\r\n };\r\n\r\n private getBestColumnConfiguration = (categories: CategoryWithApps[], columnPermutations: number[][]): CategoryWithApps[][] => {\r\n const totalAppCount = this.getColumnSize([...categories]);\r\n const idealAppCount = totalAppCount / (columnPermutations[0] ? columnPermutations[0].length : 1);\r\n\r\n let bestConfig: IColumnConfiguration = {\r\n maxDeviation: 99999,\r\n columns: [categories]\r\n };\r\n\r\n for (const permutation of columnPermutations) {\r\n const columnConfig = this.getColumnConfiguration(categories, permutation, idealAppCount);\r\n if (columnConfig.maxDeviation < bestConfig.maxDeviation) {\r\n bestConfig = columnConfig;\r\n }\r\n }\r\n\r\n return bestConfig.columns;\r\n };\r\n\r\n private getColumnConfiguration(categories: CategoryWithApps[], colStarts: number[], idealLength: number): IColumnConfiguration {\r\n const columns = colStarts.map((start, i) => {\r\n const end = i < colStarts.length - 1 ? colStarts[i + 1] : categories.length;\r\n return categories.slice(start, end);\r\n });\r\n\r\n const maxDeviation = Math.max(...columns.map(col => this.getColumnSize(col) - idealLength));\r\n\r\n return {\r\n maxDeviation,\r\n columns\r\n };\r\n }\r\n\r\n private getColumnSize(column: CategoryWithApps[]): number {\r\n // headers take up as much space as 2 apps\r\n return column.map(c => c.appCount).reduce((a, b) => a + b, 0) + column.length * 2;\r\n }\r\n}\r\n\r\ninterface IColumnConfiguration {\r\n maxDeviation: number;\r\n columns: CategoryWithApps[][];\r\n}\r\n\r\nexport default AppsByCategory;\r\n","import { Component, default as React } from 'react';\r\nimport { Application } from './Application';\r\nimport './AppsSorted.scss';\r\nimport { ILocationApplication } from '../../../shared/api/applications/applications';\r\nimport { IApplicationOperations } from './Apps';\r\n\r\ninterface IAppsSortedProps {\r\n applicationOperations: IApplicationOperations;\r\n applications: ILocationApplication[] | null;\r\n userProfiles: string[];\r\n}\r\n\r\nclass AppsSorted extends Component {\r\n constructor(props: IAppsSortedProps) {\r\n super(props);\r\n }\r\n\r\n public render = () => (\r\n
\r\n {this.props.applications &&\r\n this.getAppListChunks(3).map((appChunk: ILocationApplication[], index: number) => (\r\n
\r\n {appChunk.map(a => (\r\n \r\n ))}\r\n
\r\n ))}\r\n
\r\n );\r\n\r\n private getAppListChunks = (numberOfChunks: number): ILocationApplication[][] => {\r\n const chunks: ILocationApplication[][] = [];\r\n const appsPerChunk = Math.ceil(this.props.applications!.length / numberOfChunks);\r\n for (let i = 0; i < numberOfChunks - 1; i++) {\r\n chunks.push(this.props.applications!.slice(i * appsPerChunk, (i + 1) * appsPerChunk));\r\n }\r\n chunks.push(this.props.applications!.slice((numberOfChunks - 1) * appsPerChunk));\r\n return chunks;\r\n };\r\n}\r\n\r\nexport default AppsSorted;\r\n","import { debounce, sortBy } from 'lodash';\r\nimport { Pivot, PivotItem } from 'office-ui-fabric-react/lib-commonjs/Pivot';\r\nimport { SearchBox } from 'office-ui-fabric-react/lib-commonjs/SearchBox';\r\nimport React, { Component } from 'react';\r\nimport { ILocationApplication } from '../../../shared/api/applications/applications';\r\nimport * as Applications from '../../../shared/api/applications/applications';\r\nimport * as UserPreferences from '../../../shared/api/applications/userPreferences';\r\nimport * as Configuration from '../../../shared/api/configuration/configuration';\r\nimport { filterApplications } from '../../../shared/api/applications/applications';\r\nimport * as Profiles from '../../../shared/api/profiles/profiles';\r\nimport AppsByCategory from './AppsByCategory';\r\nimport AppsSorted from './AppsSorted';\r\nimport { WorkTracker } from '../../../shared/components/LoadingPanel/work-tracker';\r\nimport LoadingPanel from '../../../shared/components/LoadingPanel/LoadingPanel';\r\nimport { RouteComponentProps, withRouter } from 'react-router';\r\nimport './Apps.scss';\r\nimport { UserFavoriteAppDto } from '../../../shared/api/models';\r\nimport { EventBus, EventNames } from '../../../shared/eventbus/eventbus';\r\nimport { toast } from 'react-toastify';\r\nimport { AppTabKeys } from '../../routes/MainApp/MainApp';\r\n\r\ninterface IAppProps {\r\n activeTab: AppTabKeys;\r\n onSetActiveTab: (activeTab: AppTabKeys) => void;\r\n}\r\n\r\ninterface IAppsState {\r\n searchPhrase: string | null;\r\n applications: ILocationApplication[] | null;\r\n favoriteApps: UserFavoriteAppDto[];\r\n favoriteAppsByKey: { [uniqueKey: string]: UserFavoriteAppDto };\r\n favoriteAppsLimit: number;\r\n categoriesById: { [categoryId: string]: Applications.CategoryViewModel };\r\n userProfiles: string[];\r\n workTracker: WorkTracker;\r\n}\r\n\r\nexport interface IApplicationOperations {\r\n onToggleDescription: (app: ILocationApplication) => void;\r\n isFavorite: (app: ILocationApplication) => boolean;\r\n canAddToFavorites: () => boolean;\r\n onToggleBelongingnessToFavorites: (app: ILocationApplication) => void;\r\n}\r\n\r\nclass AppsClass extends Component & IAppProps, IAppsState> implements IApplicationOperations {\r\n constructor(props: RouteComponentProps & IAppProps) {\r\n super(props);\r\n this.state = {\r\n searchPhrase: null,\r\n categoriesById: {},\r\n applications: null,\r\n favoriteApps: [],\r\n favoriteAppsByKey: {},\r\n favoriteAppsLimit: 0,\r\n userProfiles: [],\r\n workTracker: new WorkTracker()\r\n };\r\n }\r\n\r\n public componentDidMount = async () => {\r\n if (this.props.location.pathname === `/${AppTabKeys.AZ}`) {\r\n this.props.onSetActiveTab(AppTabKeys.AZ);\r\n }\r\n await this.state.workTracker.track(\r\n Promise.all([this.loadApplications(), this.loadFavouriteApps(), this.loadFavouriteAppsLimit(), this.loadMyProfiles()])\r\n );\r\n EventBus.emit(EventNames.MainApplicationLoaded);\r\n EventBus.subscribe(EventNames.FavouriteAppListModified, this.onFavouriteAppsModified);\r\n };\r\n\r\n public componentWillUnmount = () => EventBus.unsubscribe(EventNames.FavouriteAppListModified, this.onFavouriteAppsModified);\r\n\r\n public render = () => (\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 {this.props.activeTab === AppTabKeys.AZ && (\r\n \r\n )}\r\n {this.props.activeTab === AppTabKeys.Category && (\r\n \r\n )}\r\n\r\n
\r\n

Need help?

\r\n
For all other Online Services help go to ServiceNow
\r\n
or contact the service desk on (07) 3033 7777
\r\n
\r\n
\r\n
\r\n );\r\n\r\n public onToggleDescription = (app: ILocationApplication) => {\r\n const foundApp = this.state.applications!.find(a => a.id === app.id);\r\n if (foundApp) {\r\n foundApp.isDescriptionVisible = !foundApp.isDescriptionVisible;\r\n this.setState({ applications: this.state.applications });\r\n }\r\n };\r\n\r\n public isFavorite = (app: ILocationApplication) => {\r\n const appKey = this.makeFavoriteAppKey(app);\r\n return !!this.state.favoriteAppsByKey[appKey];\r\n };\r\n\r\n public canAddToFavorites = () => this.state.favoriteApps.length < this.state.favoriteAppsLimit;\r\n\r\n public onToggleBelongingnessToFavorites = async (app: ILocationApplication) => {\r\n if (this.isFavorite(app)) {\r\n const newFavAppsList = this.state.favoriteApps.filter(favApp => this.makeFavoriteAppKey(favApp) !== this.makeFavoriteAppKey(app));\r\n await this.updateFavoriteApps(newFavAppsList);\r\n this.sendToastNotification(`${app.appName} has been removed from your app launcher`);\r\n } else {\r\n const newFavApp: UserFavoriteAppDto = {\r\n appId: app.appId,\r\n locationCode: app.locationCode\r\n };\r\n const newFavAppsList = [...this.state.favoriteApps, newFavApp];\r\n await this.updateFavoriteApps(newFavAppsList);\r\n this.sendToastNotification(`${app.appName} has been added to your app launcher`);\r\n }\r\n };\r\n\r\n private updateFavoriteApps = async (newFavAppsList: UserFavoriteAppDto[]) => {\r\n const result = await this.state.workTracker.queueTrackingAndChain(UserPreferences.update({ favoriteApps: newFavAppsList }));\r\n if (result.success) {\r\n EventBus.emit(EventNames.FavouriteAppListModified, newFavAppsList);\r\n }\r\n };\r\n\r\n private onFavouriteAppsModified = (newFavAppsList: UserFavoriteAppDto[]) => {\r\n this.setState({\r\n favoriteApps: newFavAppsList,\r\n favoriteAppsByKey: newFavAppsList.reduce((map: { [idAndLocationKey: string]: UserFavoriteAppDto }, favApp) => {\r\n map[this.makeFavoriteAppKey(favApp)] = favApp;\r\n return map;\r\n }, {})\r\n });\r\n };\r\n\r\n private sendToastNotification = (message: string) =>\r\n toast(message, {\r\n className: 'ToggleAppToast',\r\n progressClassName: 'ToggleAppToastProgressBar'\r\n });\r\n\r\n private async loadMyProfiles() {\r\n const profilesResponse = await Profiles.getMine();\r\n if (profilesResponse.success) {\r\n this.setState({ userProfiles: profilesResponse.result!.map(p => p.profileCode) });\r\n }\r\n }\r\n\r\n private toggleCategory = (categoryId: string) => {\r\n const foundCategory = this.state.categoriesById[categoryId];\r\n if (foundCategory) {\r\n foundCategory!.toggle();\r\n }\r\n this.setState({\r\n categoriesById: this.state.categoriesById\r\n });\r\n };\r\n\r\n private openAllCategories = () => {\r\n Object.keys(this.state.categoriesById)\r\n .map(id => this.state.categoriesById[id])\r\n .forEach(category => {\r\n if (category.isCollapsed) {\r\n category.toggle();\r\n }\r\n });\r\n this.setState({\r\n categoriesById: this.state.categoriesById\r\n });\r\n };\r\n\r\n private closeAllCategories = () => {\r\n Object.keys(this.state.categoriesById)\r\n .map(id => this.state.categoriesById[id])\r\n .forEach(category => {\r\n if (!category.isCollapsed) {\r\n category.toggle();\r\n }\r\n });\r\n this.setState({\r\n categoriesById: this.state.categoriesById\r\n });\r\n };\r\n\r\n private async loadApplications() {\r\n const response = await Applications.getManyFlat();\r\n if (response.success) {\r\n this.setState({\r\n applications: sortBy(response.result!.applications, (a: ILocationApplication) => a.appName.toUpperCase()),\r\n categoriesById: response.result!.categoriesById\r\n });\r\n }\r\n }\r\n\r\n private makeFavoriteAppKey = (favApp: UserFavoriteAppDto) => `${favApp.appId}|${favApp.locationCode}`;\r\n\r\n private loadFavouriteApps = async () => {\r\n const response = await UserPreferences.get();\r\n if (response.success) {\r\n this.onFavouriteAppsModified(response.result!.favoriteApps);\r\n }\r\n };\r\n\r\n private loadFavouriteAppsLimit = async () => {\r\n const response = await Configuration.get();\r\n if (response.success) {\r\n this.setState({\r\n favoriteAppsLimit: response.result!.sideDrawAppCountLimit\r\n });\r\n }\r\n };\r\n\r\n private getFilteredApplications(): ILocationApplication[] {\r\n return filterApplications(this.state.applications, this.state.searchPhrase);\r\n }\r\n\r\n private readonly viewChanged = (item?: PivotItem) => {\r\n if (item) {\r\n this.switchToView(item.props.itemKey!);\r\n }\r\n };\r\n\r\n private switchToView(tabKey: string) {\r\n if (tabKey === AppTabKeys.AZ) {\r\n this.props.onSetActiveTab(AppTabKeys.AZ);\r\n this.props.history.replace(`/${AppTabKeys.AZ}`);\r\n } else {\r\n this.props.onSetActiveTab(AppTabKeys.Category);\r\n this.props.history.replace(`/${AppTabKeys.Category}`);\r\n }\r\n }\r\n\r\n /* tslint:disable-next-line */\r\n private onSearchPhraseChanged = debounce((searchPhrase: string) => {\r\n Object.keys(this.state.categoriesById).forEach(id => {\r\n const category = this.state.categoriesById[id];\r\n if (category.isCollapsed) {\r\n category.toggle();\r\n }\r\n });\r\n this.setState({ searchPhrase, categoriesById: this.state.categoriesById });\r\n }, 100);\r\n}\r\n\r\nconst Apps = withRouter(AppsClass);\r\n\r\nexport default Apps;\r\n","import React from 'react';\r\nimport { Redirect, Route, RouteProps } from 'react-router';\r\nimport { auth } from '../../../shared/auth/auth';\r\n\r\ninterface IPrivateRouteProps extends RouteProps {\r\n component: any;\r\n}\r\n\r\nexport const AdminRoute = (props: IPrivateRouteProps) => {\r\n const { component: Comp, ...rest } = props;\r\n return (\r\n
\r\n {\r\n const profile = auth.getUserProfile();\r\n // tslint:disable-next-line jsx-no-lambda\r\n return profile && profile.isAdmin ? : ;\r\n }}\r\n />\r\n
\r\n );\r\n};\r\n\r\nexport const UserRoute = (props: RouteProps) => (\r\n
\r\n \r\n
\r\n);\r\n","import React, { Component } from 'react';\r\nimport './NotFound.scss';\r\n\r\nclass NotFound extends Component {\r\n public render() {\r\n return (\r\n
\r\n

404 - Page not Found

\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default NotFound;\r\n","import { Label } from 'office-ui-fabric-react/lib-commonjs/Label';\r\nimport { MessageBar, MessageBarType } from 'office-ui-fabric-react/lib-commonjs/MessageBar';\r\nimport { TextField } from 'office-ui-fabric-react/lib-commonjs/TextField';\r\nimport React, { Component } from 'react';\r\nimport { CategoryDto, CategoryEntryDto } from '../../../shared/api/models';\r\nimport * as Categories from '../../../shared/api/categories/categories';\r\nimport RouteLink, { RouteLinkType } from '../CustomRoutes/RouteLink';\r\nimport SaveButton from '../SaveButton/SaveButton';\r\nimport { toast } from 'react-toastify';\r\nimport { WorkTracker } from '../../../shared/components/LoadingPanel/work-tracker';\r\nimport LoadingPanel from '../../../shared/components/LoadingPanel/LoadingPanel';\r\n\r\ninterface IAddEditCategoryState {\r\n isNew: boolean;\r\n isSubmitting: boolean;\r\n availableCategories: CategoryDto[];\r\n form: CategoryEntryDto;\r\n workTracker: WorkTracker;\r\n}\r\n\r\nclass CategoryForm extends Component {\r\n constructor(props: any) {\r\n super(props);\r\n this.state = {\r\n isNew: props.match.params.id === 'new',\r\n isSubmitting: false,\r\n availableCategories: [],\r\n form: {\r\n name: ''\r\n },\r\n workTracker: new WorkTracker()\r\n };\r\n }\r\n\r\n public render() {\r\n return (\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n\r\n {this.isCategoryNameTaken() && (\r\n
\r\n Sorry, this category name is already taken. Please choose another name.\r\n
\r\n )}\r\n\r\n
\r\n \r\n \r\n Cancel\r\n \r\n
\r\n
\r\n
\r\n );\r\n }\r\n\r\n public componentDidMount() {\r\n this.state.workTracker.track(this.loadCategories());\r\n }\r\n\r\n private async loadCategories() {\r\n const response = await Categories.getAll();\r\n if (response.success) {\r\n this.setState({ availableCategories: response.result! });\r\n if (!this.state.isNew) {\r\n const category = this.state.availableCategories.find(c => c.id === this.props.match.params.id);\r\n if (!category) {\r\n toast.error('Sorry, the selected category could not be loaded');\r\n } else {\r\n this.setState({ form: { ...this.state.form, name: category!.name } });\r\n }\r\n }\r\n }\r\n }\r\n\r\n private readonly submitForm = async (): Promise => {\r\n this.setState({ isSubmitting: true });\r\n\r\n const response = this.state.isNew ? await Categories.add(this.state.form) : await Categories.update(this.props.match.params.id, this.state.form);\r\n\r\n this.setState({ isSubmitting: false });\r\n if (response.success) {\r\n toast.success('Category was successfully saved');\r\n }\r\n\r\n return response.success;\r\n };\r\n\r\n private readonly isFormValid = () => !!this.state.form.name && !this.isCategoryNameTaken();\r\n\r\n private readonly isCategoryNameTaken = () =>\r\n this.state.availableCategories.some(\r\n c => c.name.toLowerCase() === this.state.form.name.trim().toLowerCase() && c.id !== this.props.match.params.id\r\n );\r\n\r\n private readonly onAppNameChanged = (_?: React.FormEvent, name?: string) => {\r\n this.setState({ form: { ...this.state.form, name: name || '' } });\r\n };\r\n}\r\n\r\nexport default CategoryForm;\r\n","import React, { Component } from 'react';\r\nimport { SearchBox } from 'office-ui-fabric-react/lib-commonjs/SearchBox';\r\nimport { makeSearchAllSitesUrl } from '../../../shared/config/config';\r\n\r\ninterface ISearchAllSitesProps {\r\n className: string;\r\n}\r\n\r\ninterface ISearchAllSitesState {\r\n searchPhrase: string;\r\n}\r\n\r\nexport default class SearchAllSites extends Component {\r\n constructor(props: ISearchAllSitesProps) {\r\n super(props);\r\n this.state = {\r\n searchPhrase: ''\r\n };\r\n }\r\n\r\n public render = () => (\r\n \r\n );\r\n\r\n private searchAllSites = (searchPhrase: string) => {\r\n const url = makeSearchAllSitesUrl(searchPhrase);\r\n window.location.href = url;\r\n };\r\n\r\n private onSearchPhraseChanged = (searchPhrase: string) => {\r\n this.setState({ searchPhrase });\r\n };\r\n}\r\n","import React, { Component } from 'react';\r\nimport { IconButton, DefaultButton, ActionButton } from 'office-ui-fabric-react/lib-commonjs/Button';\r\nimport { Icon } from 'office-ui-fabric-react/lib-commonjs/Icon';\r\nimport './HelpButton.scss';\r\nimport { Callout, DirectionalHint } from 'office-ui-fabric-react/lib-commonjs/Callout';\r\nimport { Link } from 'office-ui-fabric-react/lib-commonjs/Link';\r\nimport { IPoint } from 'office-ui-fabric-react/lib-commonjs/Utilities';\r\nimport { EventBus, EventNames } from '../../../shared/eventbus/eventbus';\r\n\r\ninterface IHelpButtonProps {\r\n className?: string;\r\n}\r\n\r\ninterface IHelpButtonState {\r\n isCalloutVisible: boolean;\r\n helpButtonId: string;\r\n}\r\n\r\nexport default class HelpButton extends Component {\r\n private static instanceCounter = 0;\r\n\r\n constructor(props: IHelpButtonProps) {\r\n super(props);\r\n HelpButton.instanceCounter++;\r\n this.state = {\r\n helpButtonId: `HelpButton${HelpButton.instanceCounter}`,\r\n isCalloutVisible: false\r\n };\r\n }\r\n\r\n public render = () => (\r\n <>\r\n \r\n \r\n \r\n