{"version":3,"sources":["book/Settings.ts","action/ToggleDrawerSizeAction.ts","book/FetchService.ts","action/SearchUsersAction.ts","action/SearchMetadataAction.ts","book/services/SearchMetadataService.ts","action/SearchMetadataCategoryAction.ts","book/services/SearchMetadataCategoryService.ts","action/SearchProductsAction.ts","book/services/SearchProductsService.ts","action/SearchProductPropertyFiltersAction.ts","book/services/SearchProductPropertyFiltersService.ts","action/GetProductAction.ts","book/services/GetProductService.ts","action/EvaluateErrorAction.ts","action/MonitoringProductPropertyCategoryChartAction.ts","book/services/MonitoringProductPropertyCategoryChartService.ts","action/MonitoringProductMonthChartAction.ts","book/services/MonitoringProductMonthChartService.ts","component/common/appbarusermenu/AppbarUserMenuContainer.tsx","component/common/appbarusermenu/AppbarUserMenu.tsx","component/common/language-menu/Flag.ts","component/common/language-menu/EnFlag.tsx","component/common/language-menu/ItFlag.tsx","component/common/language-menu/LanguageMenu.tsx","component/common/c-appbar/EnvironmentSticker.css.ts","component/common/c-appbar/EnvironmentSticker.tsx","component/common/c-appbar/CAppBar.css.ts","component/common/c-appbar/CAppBar.tsx","component/common/pagetemplate/PageTemplate.css.ts","component/common/c-drawer/DrawerListItem.tsx","component/common/c-drawer/ResponsiveDrawer.tsx","component/common/c-drawer/CDrawer.css.ts","component/common/c-drawer/CDrawer.tsx","component/common/pagetemplate/PageTemplate.tsx","action/SetSearchProductsPaginationAction.ts","action/SetSearchProductsFiltersAction.ts","book/services/SearchUsersService.ts","action/DeleteMetadataAction.ts","book/services/DeleteMetadataService.ts","action/UpdateMetadataAction.ts","book/services/UpdateMetadataService.ts","action/DeleteProductAction.ts","book/services/DeleteProductService.ts","action/ExportProductsAction.ts","book/services/ExportProductsService.ts","action/DeleteUserAction.ts","book/services/DeleteUserService.ts","action/UpdateUserAction.ts","book/services/UpdateUserService.ts","action/UpdateMeAction.ts","book/services/UpdateMeService.ts","action/UpdateAppConfigurationsAction.ts","book/services/UpdateAppConfigurationsService.ts","entity/Page.ts","action/MeAction.ts","book/services/MeService.ts","action/LoginAction.ts","book/services/LoginService.ts","component/page/login/Login.css.ts","component/page/login/Login.tsx","component/page/login/LoginContainer.ts","component/common/loading/LoadingPage.tsx","component/page/page-not-found/PageNotFound.tsx","action/SearchAppConfigurationsAction.ts","book/services/SearchAppConfigurationService.ts","component/routing/RoutingContainer.ts","component/routing/Routing.tsx","store/InitialUserState.ts","store/InitialMetadataManagementState.ts","store/InitialAppState.ts","store/InitialSearchProductsState.ts","store/InitialUsersManagementState.ts","store/InitialProductDetailsState.ts","store/InitialProfileState.ts","store/InitialMonitoringState.ts","store/InitialAppConfigurationsState.ts","reducer/AppReducer.ts","reducer/UserReducer.ts","reducer/SearchProductsReducer.ts","reducer/UsersManagementReducer.ts","reducer/MetadataManagementReducer.ts","reducer/ProductDetailsReducer.ts","reducer/ProfileReducer.ts","reducer/MonitoringReducer.ts","reducer/AppConfigurationsReducer.ts","store/AppStore.ts","book/i18n.ts","image/CarelLogo.svg","component/common/carellogo/CarelImage.tsx","component/common/loading/SplashScreen.tsx","index.tsx","entity/ProcessStatus.ts","action/ResetUserStateAction.ts","book/SessionStorage.ts","book/SessionStorageKey.ts","entity/AppError.ts","entity/UserRole.ts","component/common/loading/Loading.tsx"],"names":["Settings","beUrl","process","ToggleDrawerSizeActionName","toggleDrawerSizeActionBuilder","type","fetchService","input","init","fetch","then","res","status","AppError","UNAUTHORIZED","error","json","fetchBlobService","Error","blob","callSearchUsers","search","page","pageSize","dispatch","getState","updateUserStatusActionBuilder","ProcessStatus","InProgress","searchUsersService","user","token","evaluateErrorAction","console","payload","updateUserStateBuilder","users","count","catch","err","UpdateUsersStatusActionName","UpdateUsersStateActionName","Success","callSearchMetadata","category","authenticationToken","request","setMetadataStatusActionBuilder","backEndBaseUrl","method","headers","body","JSON","stringify","setMetadataStateBuilder","metadata","SetMetadataStatusActionName","SetMetadataStateActionName","callSearchMetadataCategory","setMetadataCategoryStatusActionBuilder","setMetadataCategoryStateBuilder","metadataCategories","SetMetadataCategoryStatusActionName","SetMetadataCategoryStateActionName","callSearchProducts","productPropertyFilterIds","categories","releaseType","updateSearchProductsStatusActionBuilder","start","window","performance","now","response","end","executionTime","searchProductsService","searchProducts","pagination","currentPage","updateSearchProductsStateBuilder","products","UpdateSearchProductsStatusActionName","UpdateSearchProductsStateActionName","foundProducts","searchFilters","updateFiltersStatusActionBuilder","updateFiltersStateBuilder","productPropertyFilters","UpdateFiltersStatusActionName","UpdateFiltersStateActionName","filters","callGetProduct","productId","updateGetProductStatusActionBuilder","updateGetProductStateBuilder","product","UpdateGetProductStatusActionName","UpdateGetProductStateActionName","InvalidToken","ExpiredToken","resetUserStateBuilder","callMonitoringProductPropertyCategoryChart","setMonitoringProductPropertyCategoryChartStatusActionBuilder","setMonitoringProductPropertyCategoryChartStateBuilder","items","SetMonitoringProductPropertyCategoryChartStatusActionName","SetMonitoringProductPropertyCategoryChartStateActionName","callMonitoringProductMonthChartChart","setMonitoringProductMonthChartStatusActionBuilder","setMonitoringProductMonthChartStateBuilder","SetMonitoringProductMonthChartStatusActionName","SetMonitoringProductMonthChartStateActionName","AppbarUserMenuContainer","connect","appState","username","meStatus","onSignOutClick","props","t","useTranslation","React","useState","anchorEl","setAnchorEl","isMenuOpen","Boolean","renderMenu","anchorOrigin","vertical","horizontal","id","keepMounted","transformOrigin","open","onClose","component","Link","to","Page","Profile","variant","onClick","location","replace","ProductsSearch","buttonProps","title","event","currentTarget","Fragment","smDown","startIcon","color","mdUp","style","marginRight","defaultFlagProps","width","height","EnFlag","xmlns","viewBox","className","d","clipPath","fill","stroke","strokeWidth","defaultProps","ItFlag","x","LanguageCodes","IT","EN","FlagImage","classname","language","useStyles","makeStyles","createStyles","currentLanguageName","languageName","paddingLeft","LanguageMenu","classes","i18n","currentLanguage","langMenuAnchorEl","setLangMenuAnchorEl","langMenuHandleClose","languageCode","lang","changeLanguage","isLangMenuOpen","aria-owns","undefined","aria-haspopup","toUpperCase","substring","PaperProps","maxHeight","map","selected","theme","environmentSticker","position","zIndex","left","right","top","padding","textAlign","borderBottomRightRadius","borderBottomLeftRadius","fontWeight","fontSize","border","boxShadow","backdropFilter","local","backgroundColor","alpha","qa","prod","dev","EnvironmentSticker","url","href","environment","indexOf","appBar","drawer","palette","primary","main","menuButton","spacing","breakpoints","up","display","icon","verticalAlign","grow","flexGrow","pageName","whiteSpace","overflow","textOverflow","pageSubName","actions","InternalCAppBar","history","useHistory","showBackButton","backLabel","size","aria-label","goBack","hideDrawerButton","edge","handleDrawerToggle","src","alt","appName","pageActions","CAppBar","memo","prev","next","paddingBottom","down","content","paddingTop","paddingRight","toolbar","mixins","children","marginBottom","marginLeft","float","divider","margin","DrawerListItem","useLocation","button","pathname","ResponsiveDrawer","userRole","useSelector","state","role","UserRole","User","Dev","UsersManagement","MetadataManagement","AppConfigurations","Credits","appTitle","drawerPaper","flexShrink","drawerOpen","transition","transitions","create","easing","sharp","duration","enteringScreen","drawerClose","leavingScreen","overflowX","InternalCDrawer","useTheme","container","document","expandedMenu","useDispatch","xsUp","implementation","anchor","direction","isMobileDrawerOpen","paper","ModalProps","clsx","CDrawer","PageTemplate","mobileOpen","eeCounter","setState","Typography","Divider","Container","maxWidth","pageMaxWidth","disableGutters","Paper","Dialog","aria-labelledby","aria-describedby","DialogTitle","DialogContent","DialogContentText","DialogActions","SetSearchProductsPaginationActionName","setSearchProductsPaginationActionBuilder","SetSearchProductsFiltersActionName","setSearchProductsFiltersActionBuilder","selectedFilterValues","abortController","signal","callDeleteMetadata","metadataId","SetDeleteMetadataStatusActionBuilder","SetDeleteMetadataStatusActionName","callUpdateMetadata","value","setUpdateMetadataStatusActionBuilder","SetUpdateMetadataStatusActionName","callDeleteProduct","updateDeleteProductStatusActionBuilder","UpdateDeleteProductStatusActionName","callExportProductsAction","updateExportProductStatusActionBuilder","exportProductsService","URL","createObjectURL","hiddenHypertextLink","createElement","download","appendChild","click","remove","UpdateExportProductStatusActionName","callDeleteUser","userId","updateDeleteUserStatusActionBuilder","UpdateDeleteUserStatusActionName","callUpdateUser","password","setUpdateUserStatusActionBuilder","SetUpdateUserStatusActionName","callUpdateMe","setUpdateMeStatusActionBuilder","SetUpdateMeStatusActionName","updateAppConfigurationsAction","configurations","setUpdateAppConfigurationStatusActionBuilder","SetUpdateAppConfigurationStatusActionName","Login","ProductDetails","Monitoring","callMe","updateMeStatusActionBuilder","updateMeStateBuilder","reload","UpdateMeStatusActionName","UpdateMeStateActionName","email","callLogin","updateLoginStatusActionBuilder","updateLoginStateBuilder","expiredAt","UpdateLoginStatusActionName","loginStatus","UpdateLoginStateActionName","background","backgroundSize","login","companyLogo","marginTop","subtitle","loginButton","LoginContainer","isLogged","onLoginClick","query","useMemo","URLSearchParams","useQuery","showPassword","redirectTo","get","elevation","Loading","message","onSubmit","required","onChange","e","target","label","fullWidth","FormControl","InputLabel","htmlFor","Input","endAdornment","InputAdornment","onMouseDown","preventDefault","disabled","loading","LoadingPage","circularProgressSize","notFound","borderRadius","goHomeButton","minWidth","boxSizing","fontFamily","lineHeight","letterSpacing","textTransform","cursor","outline","alignItems","userSelect","mozAppearance","justifyContent","textDecoration","webkitAppearance","webkitTapHighlightColor","PageNotFound","callSearchAppConfiguration","setAppConfigurationStatusActionBuilder","setAppConfigurationStateBuilder","SetAppConfigurationStatusActionName","SetAppConfigurationStateActionName","RoutingContainer","Date","getUTCDate","isUser","None","loadUserInfo","loadAppConfigurations","useEffect","ProtectedRoute","p","render","SearchProducts","lazy","fallback","exact","path","initialUserState","Unknown","SessionStorage","getInt","SessionStorageKey","getString","initialMetadataManagementState","metadataCategoriesStatus","metadataStatus","updateStatus","deleteStatus","initialAppState","selectedMetadata","filterValues","filterValuesStatus","productsFound","exportStatus","usersManagement","metadataManagement","productDetails","profile","updateMeStatus","monitoringState","productPropertyCategoryData","productPropertyCategoryStatus","productMonthData","productMonthStatus","appConfigurationsState","Array","updateAppConfigurationStatus","appConfigurationsStatus","appReducer","combineReducers","a","updateMeStatusAction","updateMeStateAction","ToUserRole","updateLoginStatusAction","updateLoginStateAction","setInt","setString","ResetUserStateActionName","removeItem","updateSearchProductMetadataStatusAction","newMetadataStatus","updateSearchProductMetadataStateAction","newMetadata","newMetadataStatus01","updateSearchProductsStateAction","updateSearchProductsPaginationAction","setSearchProductsFiltersAction","updateUsersStatusAction","updateUsersManagementStateAction","updateMetadataManagementCategoryStatusAction","updateMetadataCategoryStateAction","updateMetadataStatusAction","updateMetadataManagementStateAction","newCount","setUpdateMetadataStatusAction","newState01","setDeleteMetadataStatusAction","newState02","setUpdateMeStatusAction","setMonitoringStatusAction","setMonitoringStateAction","setMonitoringProductMonthChartStatusAction","setMonitoringProductMonthChartStateAction","devToolsExtension","__REDUX_DEVTOOLS_EXTENSION__","appStore","createStore","compose","applyMiddleware","thunk","f","use","Backend","LanguageDetector","initReactI18next","fallbackLng","debug","backend","loadPath","uuidv4","_","logo","CarelImage","CarelLogo","loader","SplashScreen","createTheme","secondary","ReactDOM","store","ThemeProvider","I18nextProvider","getElementById","getBoolean","key","defaultValue","sessionStorage","getItem","toString","parseInt","getFloat","parseFloat","setItem","setFloat","setBoolean","clear","expandedFilter","SuperUser","Admin","UserRoleMap","UserRoleAdmin","ToUserRoleName"],"mappings":"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","file":"static/js/main.73d4f976.chunk.js","sourcesContent":["export class Settings {\r\n private static beUrl: string = process.env.REACT_APP_BACKEND_BASE_URL as string;\r\n\r\n public static backEndBaseUrl(): string {\r\n return Settings.beUrl as string;\r\n }\r\n}","import {Action} from \"redux\";\n\nexport const ToggleDrawerSizeActionName = 'ToggleDrawerSizeAction';\n\nexport interface ToggleDrawerSizeAction extends Action {\n}\n\nexport const toggleDrawerSizeActionBuilder = (): ToggleDrawerSizeAction => ({\n type: ToggleDrawerSizeActionName\n});","import {ServiceResponse} from \"../entity/ServiceResponse\";\nimport {AppError} from \"../entity/AppError\";\n\nexport function fetchService(input: RequestInfo, init?: RequestInit): Promise>{\n return fetch(input, init)\n .then(res => {\n if (res.status === AppError.UNAUTHORIZED) {\n return {error: AppError.UNAUTHORIZED};\n }\n\n return res.json();\n });\n}\n\nexport function fetchBlobService(input: RequestInfo, init?: RequestInit): Promise {\n return fetch(input, init)\n .then(res => {\n if (res.status === AppError.UNAUTHORIZED) {\n throw new Error('Unauthorized request');\n }\n\n return res.blob();\n });\n}","import {Action, Dispatch} from \"redux\";\r\nimport {SearchUsersRequest, SearchUsersResponse, searchUsersService} from \"../book/services/SearchUsersService\";\r\nimport {AppState} from \"../entity/state/AppState\";\r\nimport {ProcessStatus} from \"../entity/ProcessStatus\";\r\nimport {ServiceResponse} from \"../entity/ServiceResponse\";\r\nimport {User} from '../entity/User';\r\nimport {evaluateErrorAction} from \"./EvaluateErrorAction\";\r\n\r\nexport const callSearchUsers = (search: string, page?: number | null, pageSize?: number | null) => {\r\n return (dispatch: Dispatch, getState: () => AppState) => {\r\n dispatch(updateUserStatusActionBuilder(ProcessStatus.InProgress));\r\n\r\n searchUsersService(getState().user.token as string, {search, page, pageSize} as SearchUsersRequest)\r\n .then((json: ServiceResponse) => {\r\n if (json.error) {\r\n evaluateErrorAction(json.error, dispatch);\r\n\r\n console.error(\"UserManagement error code:\", json.error);\r\n dispatch(updateUserStatusActionBuilder(ProcessStatus.Error));\r\n return;\r\n }\r\n\r\n if (!json.payload) {\r\n console.error(\"UserManagement error: empty payload\");\r\n dispatch(updateUserStatusActionBuilder(ProcessStatus.Error));\r\n return;\r\n }\r\n\r\n dispatch(updateUserStateBuilder(\r\n json.payload.users,\r\n json.payload.count\r\n ));\r\n })\r\n .catch((err: any) => {\r\n console.error(\"Generic error:\", err);\r\n dispatch(updateUserStatusActionBuilder(ProcessStatus.Error));\r\n });\r\n }\r\n}\r\n\r\n// Update status\r\nexport const UpdateUsersStatusActionName = 'UpdateUsersStatusAction';\r\n\r\nexport interface UpdateUsersStatusAction extends Action {\r\n status: ProcessStatus;\r\n}\r\n\r\nconst updateUserStatusActionBuilder = (status: ProcessStatus): UpdateUsersStatusAction => ({\r\n type: UpdateUsersStatusActionName,\r\n status,\r\n});\r\n\r\n// Update state\r\nexport const UpdateUsersStateActionName = 'UpdateUsersStateAction';\r\n\r\nexport interface UpdateUsersStateAction extends Action {\r\n users: User[];\r\n count: number;\r\n status: ProcessStatus;\r\n}\r\n\r\nexport const updateUserStateBuilder = (users: User[], count: number, status: ProcessStatus = ProcessStatus.Success): UpdateUsersStateAction => ({\r\n type: UpdateUsersStateActionName,\r\n users,\r\n count,\r\n status\r\n});","import {Action, Dispatch} from \"redux\";\r\nimport {SearchMetadataResponse, searchMetadataService} from \"../book/services/SearchMetadataService\";\r\nimport {AppState} from \"../entity/state/AppState\";\r\nimport {ProcessStatus} from \"../entity/ProcessStatus\";\r\nimport {ServiceResponse} from \"../entity/ServiceResponse\";\r\nimport {Metadata} from '../entity/Metadata';\r\nimport {evaluateErrorAction} from \"./EvaluateErrorAction\";\r\n\r\nexport const callSearchMetadata = (category: string, search?: string, page?: number | null, pageSize?: number | null) => {\r\n return (dispatch: Dispatch, getState: () => AppState) => {\r\n dispatch(setMetadataStatusActionBuilder(ProcessStatus.InProgress, category));\r\n\r\n searchMetadataService(getState().user.token as string, { category, search, page, pageSize })\r\n .then((json: ServiceResponse) => {\r\n if (json.error) {\r\n evaluateErrorAction(json.error, dispatch);\r\n\r\n console.error(\"MetadataManagement error code:\", json.error);\r\n dispatch(setMetadataStatusActionBuilder(ProcessStatus.Error, category));\r\n return;\r\n }\r\n\r\n if (!json.payload) {\r\n console.error(\"MetadataManagement error: empty payload\");\r\n dispatch(setMetadataStatusActionBuilder(ProcessStatus.Error, category));\r\n return;\r\n }\r\n\r\n dispatch(setMetadataStateBuilder(\r\n json.payload.metadata,\r\n category,\r\n json.payload.count,\r\n ));\r\n })\r\n .catch((err: any) => {\r\n console.error(\"Generic error:\", err);\r\n dispatch(setMetadataStatusActionBuilder(ProcessStatus.Error, category));\r\n });\r\n }\r\n}\r\n\r\n// Update status\r\nexport const SetMetadataStatusActionName = 'SetMetadataStatusAction';\r\n\r\nexport interface SetMetadataStatusAction extends Action {\r\n status: ProcessStatus;\r\n category: string;\r\n}\r\n\r\nconst setMetadataStatusActionBuilder = (status: ProcessStatus, category: string): SetMetadataStatusAction => ({\r\n type: SetMetadataStatusActionName,\r\n status,\r\n category\r\n});\r\n\r\n// Update state\r\nexport const SetMetadataStateActionName = 'SetMetadataStateAction';\r\n\r\nexport interface SetMetadataStateAction extends Action {\r\n metadata: Metadata[];\r\n category: string;\r\n count: number;\r\n status: ProcessStatus;\r\n}\r\n\r\nexport const setMetadataStateBuilder = (metadata: Metadata[], category: string, count: number, status: ProcessStatus=ProcessStatus.Success): SetMetadataStateAction => ({\r\n type: SetMetadataStateActionName,\r\n metadata,\r\n category,\r\n count,\r\n status\r\n});","import { ServiceResponse } from \"../../entity/ServiceResponse\";\r\nimport { Metadata } from '../../entity/Metadata';\r\nimport { Settings } from \"../Settings\";\r\nimport { PaginatedRequest } from '../../entity/PaginatedRequest';\r\nimport {fetchService} from \"../FetchService\";\r\n\r\nexport const searchMetadataService = (authenticationToken: string, request: SearchMetadataRequest): Promise> => {\r\n return fetchService(Settings.backEndBaseUrl() + '/api/v1/metadata', {\r\n method: 'POST',\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json',\r\n 'Authorization': 'Bearer ' + authenticationToken\r\n },\r\n body: JSON.stringify(request)\r\n });\r\n};\r\n\r\nexport interface SearchMetadataResponse {\r\n metadata: Metadata[];\r\n count: number;\r\n}\r\n\r\nexport interface SearchMetadataRequest extends PaginatedRequest {\r\n category: string;\r\n search?: string;\r\n}","import {Action, Dispatch} from \"redux\";\r\nimport {AppState} from \"../entity/state/AppState\";\r\nimport {ProcessStatus} from \"../entity/ProcessStatus\";\r\nimport {ServiceResponse} from \"../entity/ServiceResponse\";\r\nimport {\r\n SearchMetadataCategoryResponse,\r\n searchMetadataCategoryService\r\n} from '../book/services/SearchMetadataCategoryService';\r\nimport {MetadataCategory} from '../entity/MetadataCategory';\r\nimport {evaluateErrorAction} from \"./EvaluateErrorAction\";\r\n\r\nexport const callSearchMetadataCategory = () => {\r\n return (dispatch: Dispatch, getState: () => AppState) => {\r\n dispatch(setMetadataCategoryStatusActionBuilder(ProcessStatus.InProgress));\r\n\r\n searchMetadataCategoryService(getState().user.token as string)\r\n .then((json: ServiceResponse) => {\r\n if (json.error) {\r\n evaluateErrorAction(json.error, dispatch);\r\n\r\n console.error(\"SearchMetadataCategory error code:\", json.error);\r\n dispatch(setMetadataCategoryStatusActionBuilder(ProcessStatus.Error));\r\n return;\r\n }\r\n\r\n if (!json.payload) {\r\n console.error(\"SearchMetadataCategory error: empty payload\");\r\n dispatch(setMetadataCategoryStatusActionBuilder(ProcessStatus.Error));\r\n return;\r\n }\r\n\r\n dispatch(setMetadataCategoryStateBuilder(json.payload.metadataCategories));\r\n })\r\n .catch((err: any) => {\r\n console.error(\"Generic error:\", err);\r\n dispatch(setMetadataCategoryStatusActionBuilder(ProcessStatus.Error));\r\n });\r\n }\r\n}\r\n\r\n// Update status\r\nexport const SetMetadataCategoryStatusActionName = 'SetMetadataCategoryStatusAction';\r\n\r\nexport interface SetMetadataCategoryStatusAction extends Action {\r\n status: ProcessStatus;\r\n}\r\n\r\nconst setMetadataCategoryStatusActionBuilder = (status: ProcessStatus): SetMetadataCategoryStatusAction => ({\r\n type: SetMetadataCategoryStatusActionName,\r\n status,\r\n});\r\n\r\n// Update state\r\nexport const SetMetadataCategoryStateActionName = 'SetMetadataCategoryStateAction';\r\n\r\nexport interface SetMetadataCategoryStateAction extends Action {\r\n metadataCategories: MetadataCategory[];\r\n status: ProcessStatus;\r\n}\r\n\r\nexport const setMetadataCategoryStateBuilder = (metadataCategories: MetadataCategory[], status: ProcessStatus = ProcessStatus.Success): SetMetadataCategoryStateAction => ({\r\n type: SetMetadataCategoryStateActionName,\r\n metadataCategories,\r\n status\r\n});","import { MetadataCategory } from \"../../entity/MetadataCategory\";\r\nimport { ServiceResponse } from \"../../entity/ServiceResponse\";\r\nimport { Settings } from \"../Settings\";\r\nimport {fetchService} from \"../FetchService\";\r\n\r\nexport const searchMetadataCategoryService = (authenticationToken: string): Promise> => {\r\n return fetchService(Settings.backEndBaseUrl() + '/api/v1/metadata/category', {\r\n method: 'POST',\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json',\r\n 'Authorization': 'Bearer ' + authenticationToken\r\n },\r\n body: JSON.stringify({})\r\n });\r\n};\r\n\r\nexport interface SearchMetadataCategoryResponse {\r\n metadataCategories: MetadataCategory[];\r\n}","import {Action, Dispatch} from \"redux\";\r\nimport {searchProductsService} from \"../book/services/SearchProductsService\";\r\nimport {AppState} from \"../entity/state/AppState\";\r\nimport {ProcessStatus} from \"../entity/ProcessStatus\";\r\nimport {evaluateErrorAction} from \"./EvaluateErrorAction\";\r\nimport {Product} from \"../entity/Product\";\r\n\r\nexport const callSearchProducts = (search: string | undefined, productPropertyFilterIds: string[] | undefined, categories: string[] | undefined, releaseType: number | undefined) => {\r\n return (dispatch: Dispatch, getState: () => AppState) => {\r\n dispatch(updateSearchProductsStatusActionBuilder(ProcessStatus.InProgress));\r\n\r\n searchProductsService(getState().user.token as string, {\r\n search,\r\n productPropertyFilterIds,\r\n categories,\r\n releaseType,\r\n page: getState().searchProducts.pagination.currentPage,\r\n pageSize: getState().searchProducts.pagination.pageSize\r\n })\r\n .then((json) => {\r\n if (json.error) {\r\n evaluateErrorAction(json.error, dispatch);\r\n\r\n console.error(\"SearchProducts error code:\", json.error);\r\n dispatch(updateSearchProductsStatusActionBuilder(ProcessStatus.Error));\r\n return;\r\n }\r\n\r\n if (!json.payload) {\r\n console.error(\"SearchProducts error: empty payload\");\r\n dispatch(updateSearchProductsStatusActionBuilder(ProcessStatus.Error));\r\n return;\r\n }\r\n\r\n dispatch(updateSearchProductsStateBuilder(\r\n json.payload.products,\r\n json.payload.count,\r\n json.executionTime\r\n ));\r\n })\r\n .catch((err: any) => {\r\n console.error(\"Generic searchProducts error:\", err);\r\n dispatch(updateSearchProductsStatusActionBuilder(ProcessStatus.Error));\r\n });\r\n }\r\n}\r\n\r\n// Update status\r\nexport const UpdateSearchProductsStatusActionName = 'UpdateSearchProductsStatusAction';\r\n\r\nexport interface UpdateSearchProductsStatusAction extends Action {\r\n status: ProcessStatus;\r\n}\r\n\r\nexport const updateSearchProductsStatusActionBuilder = (status: ProcessStatus): UpdateSearchProductsStatusAction => ({\r\n type: UpdateSearchProductsStatusActionName,\r\n status\r\n});\r\n\r\n// Update state\r\nexport const UpdateSearchProductsStateActionName = 'UpdateSearchProductsStateAction';\r\n\r\nexport interface UpdateSearchProductsStateAction extends Action {\r\n foundProducts: Product[];\r\n count: number;\r\n executionTime: number;\r\n status: ProcessStatus;\r\n}\r\n\r\nexport const updateSearchProductsStateBuilder = (foundProducts: Product[], count: number, executionTime: number, status: ProcessStatus=ProcessStatus.Success): UpdateSearchProductsStateAction => ({\r\n type: UpdateSearchProductsStateActionName,\r\n foundProducts: foundProducts,\r\n count,\r\n executionTime,\r\n status\r\n});","import {PaginatedRequest} from \"../../entity/PaginatedRequest\";\r\nimport {TimedServiceResponse} from \"../../entity/ServiceResponse\";\r\nimport {Settings} from \"../Settings\";\r\nimport {Product} from \"../../entity/Product\";\r\nimport {fetchService} from \"../FetchService\";\r\n\r\nexport const searchProductsService = (authenticationToken: string, request: SearchProductsRequest): Promise> => {\r\n const start = window.performance.now();\r\n return fetchService(Settings.backEndBaseUrl() + '/api/v1/product', {\r\n method: 'POST',\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json',\r\n 'Authorization': 'Bearer ' + authenticationToken\r\n },\r\n body: JSON.stringify(request)\r\n }).then(response=>{\r\n const end = window.performance.now();\r\n return {...response, executionTime: end - start}\r\n });\r\n};\r\n\r\nexport interface SearchProductsRequest extends PaginatedRequest {\r\n search?: string;\r\n productPropertyFilterIds?: string[];\r\n categories?: string[];\r\n releaseType?: number;\r\n}\r\n\r\nexport interface SearchProductsResponse {\r\n products: Product[];\r\n count: number;\r\n}","import {Action, Dispatch} from \"redux\";\nimport {AppState} from \"../entity/state/AppState\";\nimport {ProcessStatus} from \"../entity/ProcessStatus\";\nimport {ServiceResponse} from \"../entity/ServiceResponse\";\nimport {evaluateErrorAction} from \"./EvaluateErrorAction\";\nimport {\n SearchProductPropertyFiltersResponse,\n searchProductPropertyFiltersService\n} from \"../book/services/SearchProductPropertyFiltersService\";\nimport {ProductProperty} from \"../entity/ProductProperty\";\n\nexport const searchFilters = (category: string) => {\n return (dispatch: Dispatch, getState: () => AppState) => {\n dispatch(updateFiltersStatusActionBuilder(ProcessStatus.InProgress, category));\n\n searchProductPropertyFiltersService(getState().user.token as string, {category})\n .then((json: ServiceResponse) => {\n if (json.error) {\n evaluateErrorAction(json.error, dispatch);\n\n console.error(\"Search product property filters error code:\", json.error);\n dispatch(updateFiltersStatusActionBuilder(ProcessStatus.Error, category));\n return;\n }\n\n if (!json.payload) {\n console.error(\"Search product property filters error: empty payload\");\n dispatch(updateFiltersStatusActionBuilder(ProcessStatus.Error, category));\n return;\n }\n\n dispatch(updateFiltersStateBuilder(json.payload.productPropertyFilters, category));\n })\n .catch((err: any) => {\n console.error(\"Search product property filters - Generic error:\", err);\n dispatch(updateFiltersStatusActionBuilder(ProcessStatus.Error, category));\n });\n }\n}\n\n// Update status\nexport const UpdateFiltersStatusActionName = 'UpdateFiltersStatusAction';\n\nexport interface UpdateFiltersStatusAction extends Action {\n status: ProcessStatus;\n category: string;\n}\n\nconst updateFiltersStatusActionBuilder = (status: ProcessStatus, category: string): UpdateFiltersStatusAction => ({\n type: UpdateFiltersStatusActionName,\n status,\n category\n});\n\n// Update state\nexport const UpdateFiltersStateActionName = 'UpdateFiltersStateAction';\n\nexport interface UpdateFiltersStateAction extends Action {\n filters: ProductProperty[];\n category: string;\n status: ProcessStatus;\n}\n\nexport const updateFiltersStateBuilder = (filters: ProductProperty[], category: string, status: ProcessStatus = ProcessStatus.Success): UpdateFiltersStateAction => ({\n type: UpdateFiltersStateActionName,\n filters,\n category,\n status\n});","import {ServiceResponse} from \"../../entity/ServiceResponse\";\nimport {Settings} from \"../Settings\";\nimport {ProductProperty} from \"../../entity/ProductProperty\";\nimport {fetchService} from \"../FetchService\";\n\nexport const searchProductPropertyFiltersService = (authenticationToken: string, request: SearchProductPropertyFiltersRequest): Promise> => {\n return fetchService(Settings.backEndBaseUrl() + '/api/v1/product/property/filter', {\n method: 'POST',\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json',\n 'Authorization': 'Bearer ' + authenticationToken\n },\n body: JSON.stringify(request)\n });\n};\n\nexport interface SearchProductPropertyFiltersRequest {\n category: string;\n}\n\nexport interface SearchProductPropertyFiltersResponse {\n productPropertyFilters: ProductProperty[];\n}","import {Action, Dispatch} from \"redux\";\r\nimport {GetProductResponse, getProductService} from \"../book/services/GetProductService\";\r\nimport {AppState} from \"../entity/state/AppState\";\r\nimport {ProcessStatus} from \"../entity/ProcessStatus\";\r\nimport {ServiceResponse} from \"../entity/ServiceResponse\";\r\nimport {evaluateErrorAction} from \"./EvaluateErrorAction\";\r\nimport {Product} from \"../entity/Product\";\r\n\r\nexport const callGetProduct = (productId: string) => {\r\n return (dispatch: Dispatch, getState: () => AppState) => {\r\n dispatch(updateGetProductStatusActionBuilder(ProcessStatus.InProgress));\r\n\r\n getProductService(getState().user.token as string, {productId})\r\n .then((json: ServiceResponse) => {\r\n if (json.error) {\r\n evaluateErrorAction(json.error, dispatch);\r\n\r\n console.error(\"GetProduct error code:\", json.error);\r\n dispatch(updateGetProductStatusActionBuilder(ProcessStatus.Error));\r\n return;\r\n }\r\n\r\n if (!json.payload) {\r\n console.error(\"GetProduct error: empty payload\");\r\n dispatch(updateGetProductStatusActionBuilder(ProcessStatus.Error));\r\n return;\r\n }\r\n\r\n dispatch(updateGetProductStateBuilder(json.payload.product));\r\n })\r\n .catch((err: any) => {\r\n console.error(\"Generic getProduct error:\", err);\r\n dispatch(updateGetProductStatusActionBuilder(ProcessStatus.Error));\r\n });\r\n }\r\n}\r\n\r\n// Update status\r\nexport const UpdateGetProductStatusActionName = 'UpdateGetProductStatusAction';\r\n\r\nexport interface UpdateGetProductStatusAction extends Action {\r\n status: ProcessStatus;\r\n}\r\n\r\nexport const updateGetProductStatusActionBuilder = (status: ProcessStatus): UpdateGetProductStatusAction => ({\r\n type: UpdateGetProductStatusActionName,\r\n status\r\n});\r\n\r\n// Update state\r\nexport const UpdateGetProductStateActionName = 'UpdateGetProductStateAction';\r\n\r\nexport interface UpdateGetProductStateAction extends Action {\r\n product: Product;\r\n status: ProcessStatus;\r\n}\r\n\r\nexport const updateGetProductStateBuilder = (product: Product, status: ProcessStatus = ProcessStatus.Success): UpdateGetProductStateAction => ({\r\n type: UpdateGetProductStateActionName,\r\n product,\r\n status\r\n});","import {PaginatedRequest} from \"../../entity/PaginatedRequest\";\r\nimport {ServiceResponse} from \"../../entity/ServiceResponse\";\r\nimport {Settings} from \"../Settings\";\r\nimport {Product} from \"../../entity/Product\";\r\nimport {fetchService} from \"../FetchService\";\r\n\r\nexport const getProductService = (authenticationToken: string, request: GetProductRequest): Promise> => {\r\n return fetchService(`${Settings.backEndBaseUrl()}/api/v1/product?productId=${request.productId}`, {\r\n method: 'GET',\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json',\r\n 'Authorization': 'Bearer ' + authenticationToken\r\n },\r\n });\r\n};\r\n\r\nexport interface GetProductRequest extends PaginatedRequest {\r\n productId: string;\r\n}\r\n\r\nexport interface GetProductResponse {\r\n product: Product;\r\n}\r\n","import {Dispatch} from \"redux\";\r\nimport {AppError} from \"../entity/AppError\";\r\nimport {resetUserStateBuilder} from \"./ResetUserStateAction\";\r\n\r\nexport const evaluateErrorAction = (error: number, dispatch: Dispatch) => {\r\n if (error === AppError.InvalidToken || error === AppError.ExpiredToken || error === AppError.UNAUTHORIZED) {\r\n dispatch(resetUserStateBuilder());\r\n }\r\n}","import {Action, Dispatch} from \"redux\";\nimport {AppState} from \"../entity/state/AppState\";\nimport {ProcessStatus} from \"../entity/ProcessStatus\";\nimport {ServiceResponse} from \"../entity/ServiceResponse\";\nimport {evaluateErrorAction} from \"./EvaluateErrorAction\";\nimport {\n MonitoringProductPropertyCategoryChartResponse,\n monitoringProductPropertyCategoryChartService\n} from \"../book/services/MonitoringProductPropertyCategoryChartService\";\nimport {ValueCount} from \"../entity/ValueCount\";\n\nexport const callMonitoringProductPropertyCategoryChart = (category: string) => {\n return (dispatch: Dispatch, getState: () => AppState) => {\n dispatch(setMonitoringProductPropertyCategoryChartStatusActionBuilder(ProcessStatus.InProgress, category));\n\n monitoringProductPropertyCategoryChartService(getState().user.token as string, {category})\n .then((json: ServiceResponse) => {\n if (json.error) {\n evaluateErrorAction(json.error, dispatch);\n\n console.error(\"MonitoringManagement error code:\", json.error);\n dispatch(setMonitoringProductPropertyCategoryChartStatusActionBuilder(ProcessStatus.Error, category));\n return;\n }\n\n if (!json.payload) {\n console.error(\"MonitoringManagement error: empty payload\");\n dispatch(setMonitoringProductPropertyCategoryChartStatusActionBuilder(ProcessStatus.Error, category));\n return;\n }\n\n dispatch(setMonitoringProductPropertyCategoryChartStatusActionBuilder(ProcessStatus.Success, category));\n dispatch(setMonitoringProductPropertyCategoryChartStateBuilder(\n json.payload.items,\n category,\n ));\n })\n .catch((err: any) => {\n console.error(\"Generic error:\", err);\n dispatch(setMonitoringProductPropertyCategoryChartStatusActionBuilder(ProcessStatus.Error, category));\n });\n }\n}\n\n// Update status\nexport const SetMonitoringProductPropertyCategoryChartStatusActionName = 'SetMonitoringProductPropertyCategoryChartStatusAction';\n\nexport interface SetMonitoringProductPropertyCategoryChartStatusAction extends Action {\n status: ProcessStatus;\n category: string;\n}\n\nconst setMonitoringProductPropertyCategoryChartStatusActionBuilder = (status: ProcessStatus, category: string): SetMonitoringProductPropertyCategoryChartStatusAction => ({\n type: SetMonitoringProductPropertyCategoryChartStatusActionName,\n status,\n category\n});\n\n// Update state\nexport const SetMonitoringProductPropertyCategoryChartStateActionName = 'SetMonitoringProductPropertyCategoryChartStateAction';\n\nexport interface SetMonitoringProductPropertyCategoryChartStateAction extends Action {\n items: ValueCount[];\n category: string;\n status: ProcessStatus;\n}\n\nexport const setMonitoringProductPropertyCategoryChartStateBuilder = (items: ValueCount[], category: string, status: ProcessStatus = ProcessStatus.Success): SetMonitoringProductPropertyCategoryChartStateAction => ({\n type: SetMonitoringProductPropertyCategoryChartStateActionName,\n items,\n category,\n status\n});","import {ServiceResponse} from \"../../entity/ServiceResponse\";\nimport {Settings} from \"../Settings\";\nimport {fetchService} from \"../FetchService\";\nimport {ValueCount} from \"../../entity/ValueCount\";\n\nexport const monitoringProductPropertyCategoryChartService = (authenticationToken: string, request: MonitoringProductPropertyCategoryChartRequest): Promise> => {\n return fetchService(Settings.backEndBaseUrl() + '/api/v1/monitoring/product-property-by-category', {\n method: 'POST',\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json',\n 'Authorization': 'Bearer ' + authenticationToken\n },\n body: JSON.stringify(request)\n });\n};\n\nexport interface MonitoringProductPropertyCategoryChartRequest {\n category: string;\n}\n\nexport interface MonitoringProductPropertyCategoryChartResponse {\n items: ValueCount[];\n}\n\n","import {Action, Dispatch} from \"redux\";\nimport {AppState} from \"../entity/state/AppState\";\nimport {ProcessStatus} from \"../entity/ProcessStatus\";\nimport {ServiceResponse} from \"../entity/ServiceResponse\";\nimport {evaluateErrorAction} from \"./EvaluateErrorAction\";\nimport {\n MonitoringProductPropertyCategoryChartResponse\n} from \"../book/services/MonitoringProductPropertyCategoryChartService\";\nimport {ValueCount} from \"../entity/ValueCount\";\nimport {monitoringProductMonthChartService} from \"../book/services/MonitoringProductMonthChartService\";\n\nexport const callMonitoringProductMonthChartChart = () => {\n return (dispatch: Dispatch, getState: () => AppState) => {\n dispatch(setMonitoringProductMonthChartStatusActionBuilder(ProcessStatus.InProgress));\n\n monitoringProductMonthChartService(getState().user.token as string, {})\n .then((json: ServiceResponse) => {\n if (json.error) {\n evaluateErrorAction(json.error, dispatch);\n\n console.error(\"MonitoringManagement error code:\", json.error);\n dispatch(setMonitoringProductMonthChartStatusActionBuilder(ProcessStatus.Error));\n return;\n }\n\n if (!json.payload) {\n console.error(\"MonitoringManagement error: empty payload\");\n dispatch(setMonitoringProductMonthChartStatusActionBuilder(ProcessStatus.Error));\n return;\n }\n\n dispatch(setMonitoringProductMonthChartStateBuilder(json.payload.items));\n })\n .catch((err: any) => {\n console.error(\"Generic error:\", err);\n dispatch(setMonitoringProductMonthChartStatusActionBuilder(ProcessStatus.Error));\n });\n }\n}\n\n// Update status\nexport const SetMonitoringProductMonthChartStatusActionName = 'SetMonitoringProductMonthChartStatusAction';\n\nexport interface SetMonitoringProductMonthChartStatusAction extends Action {\n status: ProcessStatus;\n}\n\nconst setMonitoringProductMonthChartStatusActionBuilder = (status: ProcessStatus): SetMonitoringProductMonthChartStatusAction => ({\n type: SetMonitoringProductMonthChartStatusActionName,\n status\n});\n\n// Update state\nexport const SetMonitoringProductMonthChartStateActionName = 'SetMonitoringProductMonthChartStateAction';\n\nexport interface SetMonitoringProductMonthChartStateAction extends Action {\n items: ValueCount[];\n status: ProcessStatus;\n}\n\nexport const setMonitoringProductMonthChartStateBuilder = (items: ValueCount[], status: ProcessStatus = ProcessStatus.Success): SetMonitoringProductMonthChartStateAction => ({\n type: SetMonitoringProductMonthChartStateActionName,\n items,\n status\n});","import {ServiceResponse} from \"../../entity/ServiceResponse\";\nimport {Settings} from \"../Settings\";\nimport {fetchService} from \"../FetchService\";\nimport {ValueCount} from \"../../entity/ValueCount\";\n\nexport const monitoringProductMonthChartService = (authenticationToken: string, request: MonitoringProductMonthChartRequest): Promise> => {\n return fetchService(Settings.backEndBaseUrl() + '/api/v1/monitoring/product-by-month', {\n method: 'POST',\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json',\n 'Authorization': 'Bearer ' + authenticationToken\n },\n body: JSON.stringify(request)\n });\n};\n\nexport interface MonitoringProductMonthChartRequest {\n}\n\nexport interface MonitoringProductMonthChartResponse {\n items: ValueCount[];\n}\n\n","import {connect} from \"react-redux\";\nimport {Action} from \"redux\";\nimport {ThunkDispatch} from \"redux-thunk\";\nimport {AppState} from \"../../../entity/state/AppState\";\nimport {AppbarUserMenu, AppbarUserMenuProps} from \"./AppbarUserMenu\";\nimport {resetUserStateBuilder} from \"../../../action/ResetUserStateAction\";\n\nexport const AppbarUserMenuContainer = connect(\n (appState: AppState) => {\n return {\n username: appState.user.username,\n meStatus: appState.user.meStatus\n } as AppbarUserMenuProps;\n },\n (dispatch: ThunkDispatch) => {\n return {\n onSignOutClick: () => {\n dispatch(resetUserStateBuilder());\n }\n } as AppbarUserMenuProps;\n },\n)(AppbarUserMenu);","import ListItemIcon from \"@material-ui/core/ListItemIcon/ListItemIcon\";\nimport Menu from \"@material-ui/core/Menu/Menu\";\nimport MenuItem from \"@material-ui/core/MenuItem/MenuItem\";\nimport Typography from \"@material-ui/core/Typography/Typography\";\nimport AccountCircle from '@material-ui/icons/AccountCircle';\nimport ExitToAppIcon from '@material-ui/icons/ExitToApp';\nimport React, {FunctionComponent} from \"react\";\nimport {ProcessStatus} from \"../../../entity/ProcessStatus\";\nimport Hidden from \"@material-ui/core/Hidden/Hidden\";\nimport Button from \"@material-ui/core/Button/Button\";\nimport {useTranslation} from \"react-i18next\";\nimport IconButton from \"@material-ui/core/IconButton/IconButton\";\nimport PersonIcon from '@material-ui/icons/Person';\nimport {Link} from \"react-router-dom\";\nimport {Page} from \"../../../entity/Page\";\n\nexport const AppbarUserMenu: FunctionComponent = props => {\n const {t} = useTranslation();\n const [anchorEl, setAnchorEl] = React.useState(null);\n const isMenuOpen = Boolean(anchorEl);\n const handleProfileMenuOpen = (event: React.MouseEvent) => {\n setAnchorEl(event.currentTarget);\n };\n const handleMenuClose = () => {\n setAnchorEl(null);\n };\n const menuId = 'primary-search-account-menu';\n const renderMenu = (\n \n \n \n \n \n {t(\"Profile\")}\n \n {\n props.onSignOutClick();\n window.location.replace(Page.ProductsSearch);\n // window.location.reload();\n }}>\n \n \n \n {t(\"Sign out\")}\n \n \n );\n const buttonProps = {\n title: props.meStatus !== ProcessStatus.Success ? t(\"Loading…\") : props.username as string,\n onClick: handleProfileMenuOpen,\n };\n\n return \n \n \n \n\n \n \n \n \n \n\n {renderMenu}\n ;\n}\n\nexport interface AppbarUserMenuProps {\n username: string | null;\n meStatus: ProcessStatus;\n onSignOutClick: () => void;\n}","import {FunctionComponent} from \"react\";\n\nexport interface Flag extends FunctionComponent { }\n\nexport const defaultFlagProps: FlagProps = {\n width: 150,\n height: 100\n};\n\nexport interface FlagProps {\n width?: number;\n height?: number;\n className?: string;\n}","import {defaultFlagProps, Flag} from \"./Flag\";\n\nexport const EnFlag: Flag = (props) => (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n);\n\nEnFlag.defaultProps = defaultFlagProps;","import {defaultFlagProps, Flag} from \"./Flag\";\n\nexport const ItFlag: Flag = (props) => (\n \n \n \n \n \n);\n\nItFlag.defaultProps = defaultFlagProps;","import React, {Fragment, FunctionComponent, useState} from \"react\";\nimport Menu from '@material-ui/core/Menu';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport {useTranslation} from \"react-i18next\";\nimport makeStyles from \"@material-ui/core/styles/makeStyles\";\nimport createStyles from \"@material-ui/core/styles/createStyles\";\nimport Button from \"@material-ui/core/Button/Button\";\nimport {EnFlag} from \"./EnFlag\";\nimport {ItFlag} from \"./ItFlag\";\n\nclass LanguageCodes {\n static IT = \"it\";\n static EN = \"en\";\n}\n\nconst FlagImage: FunctionComponent = props => {\n const width = 37;\n const height = 25;\n const classname = 'lang-flag';\n\n switch (props.language) {\n case LanguageCodes.EN:\n return ;\n case LanguageCodes.IT:\n return ;\n default:\n return null;\n }\n};\n\ninterface FlagImageProps {\n language: string;\n}\n\nconst useStyles = makeStyles(() => createStyles({\n currentLanguageName:{\n },\n languageName: {\n paddingLeft: '10px'\n }\n}));\n\nexport const LanguageMenu: FunctionComponent = () => {\n const classes = useStyles();\n const {i18n} = useTranslation()\n const currentLanguage = i18n.language;\n const supportedLanguages = ['it', 'en'];\n const changeLanguage = (lang: string) => {\n i18n.changeLanguage(lang)\n }\n\n const [langMenuAnchorEl, setLangMenuAnchorEl] = useState(null);\n const langMenuHandleClick = (event: React.MouseEvent) => setLangMenuAnchorEl(event.currentTarget);\n const langMenuHandleClose = (languageCode?: string) => {\n if (languageCode) {\n changeLanguage(languageCode);\n }\n setLangMenuAnchorEl(null);\n };\n\n const isLangMenuOpen = Boolean(langMenuAnchorEl);\n\n return \n \n {\n langMenuHandleClose();\n }}\n PaperProps={{\n style: {\n maxHeight: 48 * 4.5,\n width: 200,\n },\n }}>\n {supportedLanguages.map(language => {\n langMenuHandleClose(language);\n }} selected={language === currentLanguage.substring(0, 2)}>\n \n {language.toUpperCase()}\n )}\n \n ;\n}","import createStyles from \"@material-ui/core/styles/createStyles\";\nimport makeStyles from \"@material-ui/core/styles/makeStyles\";\nimport {alpha} from \"@material-ui/core/styles/colorManipulator\";\n\nexport const useStyles = makeStyles((theme) => createStyles({\n environmentSticker: {\n position: 'fixed',\n zIndex: 5000,\n left: 'calc(50% - 75px)',\n right: 'calc(50% - 75px)',\n top: 0,\n padding: 4,\n width: 150,\n textAlign: 'center',\n borderBottomRightRadius: '6px',\n borderBottomLeftRadius: '6px',\n // Text\n fontWeight: 500,\n color: 'white',\n fontSize: '.95em',\n // Glass effect\n border: '1px solid rgba(255, 255, 255, 0.3)',\n boxShadow: '0 4px 30px rgba(0, 0, 0, 0.1)',\n backdropFilter: 'blur(8px)'\n },\n local: {\n backgroundColor: alpha('#ffa500', 0.2)\n },\n qa: {\n backgroundColor: alpha('#9F2B68', 0.2)\n },\n prod: {},\n dev: {\n backgroundColor: alpha('#7FFF00', 0.2)\n },\n}));","import {FunctionComponent} from \"react\";\nimport {useStyles} from \"./EnvironmentSticker.css\";\n\nexport const EnvironmentSticker:FunctionComponent=()=>{\n const classes = useStyles();\n const url=window.location.href;\n const environment=((()=>{\n if(url.indexOf(\"-qa\")!==-1){\n return [\"QA\", classes.qa];\n }\n\n if(url.indexOf(\"windows.net\")!==-1){\n return [\"DEV\", classes.dev];\n }\n\n if(url.indexOf(\"localhost\")!==-1 || url.indexOf(\"127.0.0.1\")!==-1){\n return [\"LOCAL\", classes.local];\n }\n\n return undefined; //[\"PROD\", classes.prod];\n })());\n\n if(environment) {\n return
{environment[0]}
;\n }\n\n return null;\n}","import makeStyles from \"@material-ui/core/styles/makeStyles\";\nimport createStyles from \"@material-ui/core/styles/createStyles\";\nimport {alpha} from \"@material-ui/core/styles/colorManipulator\";\nimport {Theme} from \"@material-ui/core/styles/createTheme\";\n\nexport const useStyles = makeStyles((theme: Theme) =>\n createStyles({\n appBar: {\n zIndex: theme.zIndex.drawer + 1,\n backgroundColor: alpha(theme.palette.primary.main, 0.9),\n backdropFilter: 'blur(20px)',\n },\n menuButton: {\n marginRight: theme.spacing(2),\n [theme.breakpoints.up('md')]: {\n display: 'none',\n },\n },\n icon: {\n verticalAlign: 'middle',\n marginRight: '20px'\n },\n grow: {\n flexGrow: 1,\n },\n pageName:{\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n },\n pageSubName:{},\n actions: {\n display: 'flex',\n },\n })\n);","import AppBar from '@material-ui/core/AppBar/AppBar';\nimport IconButton from '@material-ui/core/IconButton/IconButton';\nimport Toolbar from '@material-ui/core/Toolbar/Toolbar';\nimport Typography from '@material-ui/core/Typography/Typography';\nimport ArrowBackIosIcon from '@material-ui/icons/ArrowBackIos';\nimport React, {Fragment, FunctionComponent, memo} from 'react';\nimport {useHistory} from 'react-router-dom';\nimport {AppbarUserMenuContainer} from '../appbarusermenu/AppbarUserMenuContainer';\nimport MenuIcon from '@material-ui/icons/Menu';\nimport Hidden from \"@material-ui/core/Hidden/Hidden\";\nimport {LanguageMenu} from \"../language-menu/LanguageMenu\";\nimport {EnvironmentSticker} from \"./EnvironmentSticker\";\nimport {useStyles} from \"./CAppBar.css\";\n\nconst InternalCAppBar: FunctionComponent = props => {\n const classes = useStyles();\n const history = useHistory();\n\n return \n \n \n {props.showBackButton && {\n history.goBack();\n }}>\n \n }\n\n {(!props.showBackButton && !props.hideDrawerButton) && \n \n }\n\n \n {props.appName}\n \n {props.appName}\n \n \n\n \n \n {props.pageName}\n \n  \n \n {props.pageSubName}\n \n \n\n
\n
\n \n {!!props.pageActions && \n {props.pageActions}\n }\n \n
\n \n \n\n \n ;\n}\n\nexport const CAppBar = memo(InternalCAppBar, (prev, next) => {\n return !!prev &&\n prev.appName === next.appName &&\n prev.pageName === next.pageName &&\n prev.pageSubName === next.pageSubName &&\n prev.hideDrawerButton === next.hideDrawerButton &&\n prev.showBackButton === next.showBackButton &&\n prev.backLabel === next.backLabel;\n});\n\nexport interface ApplicationAppBarProps {\n appName: string;\n pageName?: string;\n pageSubName?: string;\n\n hideDrawerButton?: boolean;\n\n showBackButton?: boolean;\n backLabel?: string;\n\n handleDrawerToggle: () => void;\n\n pageActions?: React.ReactNode;\n}\n\n","import makeStyles from \"@material-ui/core/styles/makeStyles\";\nimport {Theme} from \"@material-ui/core/styles/createTheme\";\nimport createStyles from \"@material-ui/core/styles/createStyles\";\n\nexport const useStyles = makeStyles((theme: Theme) =>\n createStyles({\n page: {\n display: 'flex',\n paddingBottom: '100px',\n [theme.breakpoints.down('sm')]: {\n backgroundColor: '#fff',\n },\n },\n content: {\n flexGrow: 1,\n padding: theme.spacing(2),\n overflow: 'hidden',\n [theme.breakpoints.down('sm')]: {\n paddingTop: 0,\n paddingLeft: 0,\n paddingRight: 0,\n },\n },\n toolbar: theme.mixins.toolbar,\n children: {\n padding: '30px 20px',\n overflow: 'hidden',\n [theme.breakpoints.down('sm')]: {\n padding: '15px 10px',\n boxShadow: 'none'\n },\n },\n title: {\n marginBottom: '20px',\n marginLeft: '5px',\n display: 'inline-block',\n },\n actions: {\n float: 'right'\n },\n divider: {\n margin: '0px 0 30px!important'\n }\n })\n);","import React, {FunctionComponent} from \"react\";\nimport {Link, useLocation} from \"react-router-dom\";\nimport ListItem from \"@material-ui/core/ListItem/ListItem\";\n\nexport const DrawerListItem: FunctionComponent = (props) => {\n const location = useLocation();\n return \n {props.children}\n \n}\n\ninterface DrawerListItemProps {\n to: string;\n title?: string;\n selected?: boolean;\n}","import React, {Fragment, FunctionComponent} from \"react\";\nimport Divider from \"@material-ui/core/Divider/Divider\";\nimport List from \"@material-ui/core/List/List\";\nimport {UserRole} from \"../../../entity/UserRole\";\nimport {Page} from \"../../../entity/Page\";\nimport ListItemIcon from \"@material-ui/core/ListItemIcon/ListItemIcon\";\nimport SearchIcon from \"@material-ui/icons/Search\";\nimport ListItemText from \"@material-ui/core/ListItemText/ListItemText\";\nimport PersonIcon from \"@material-ui/icons/Person\";\nimport AppsIcon from \"@material-ui/icons/Apps\";\nimport FormatListBulletedIcon from \"@material-ui/icons/FormatListBulleted\";\nimport {useTranslation} from \"react-i18next\";\n// import {useStyles} from \"./ResponsiveDrawer.css\";\nimport {DrawerListItem} from \"./DrawerListItem\";\nimport {useSelector} from \"react-redux\";\nimport {AppState} from \"../../../entity/state/AppState\";\nimport SettingsIcon from '@material-ui/icons/Settings';\n\nexport const ResponsiveDrawer: FunctionComponent = () => {\n //const classes = useStyles();\n const {t} = useTranslation();\n const userRole = useSelector((state: AppState) => state.user.role);\n\n return
\n \n {userRole >= UserRole.User &&\n \n \n \n \n {/**/}\n {/* */}\n {/* */}\n {/**/}\n }\n {userRole > UserRole.Dev && \n \n \n \n \n \n \n \n \n \n \n \n \n }\n \n \n \n \n \n \n \n \n
;\n};","import makeStyles from \"@material-ui/core/styles/makeStyles\";\nimport {Theme} from \"@material-ui/core/styles/createTheme\";\nimport createStyles from \"@material-ui/core/styles/createStyles\";\n\nexport const drawerWidth = 270;\n\nexport const useStyles = makeStyles((theme: Theme) =>\n createStyles({\n toolbar: theme.mixins.toolbar,\n appTitle: {\n display: 'inline-block',\n paddingLeft: theme.spacing(2),\n paddingTop: theme.spacing(2),\n fontSize: '1.3em',\n fontWeight: 700,\n color: 'rgba(0, 0, 0, 0.54)'\n },\n drawerPaper: {\n width: drawerWidth,\n },\n drawer: {\n flexShrink: 0,\n whiteSpace: 'nowrap',\n },\n drawerOpen: {\n width: drawerWidth,\n transition: theme.transitions.create('width', {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.enteringScreen,\n }),\n },\n drawerClose: {\n transition: theme.transitions.create('width', {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.leavingScreen,\n }),\n overflowX: 'hidden',\n width: theme.spacing(7) + 1,\n [theme.breakpoints.up('sm')]: {\n width: theme.spacing(7) + 1,\n },\n },\n }),\n);","import Divider from '@material-ui/core/Divider/Divider';\nimport Drawer from '@material-ui/core/Drawer/Drawer';\nimport Hidden from '@material-ui/core/Hidden/Hidden';\nimport List from '@material-ui/core/List/List';\nimport ListItem from '@material-ui/core/ListItem/ListItem';\nimport ListItemIcon from '@material-ui/core/ListItemIcon/ListItemIcon';\nimport ListItemText from '@material-ui/core/ListItemText/ListItemText';\nimport useTheme from '@material-ui/core/styles/useTheme';\nimport React, {Fragment, FunctionComponent, memo} from 'react';\nimport {useTranslation} from \"react-i18next\";\nimport clsx from \"clsx\";\nimport KeyboardArrowRightIcon from '@material-ui/icons/KeyboardArrowRight';\nimport KeyboardArrowLeftIcon from '@material-ui/icons/KeyboardArrowLeft';\nimport {ResponsiveDrawer} from \"./ResponsiveDrawer\";\nimport {useStyles} from \"./CDrawer.css\";\nimport {useDispatch, useSelector} from \"react-redux\";\nimport {AppState} from \"../../../entity/state/AppState\";\nimport {toggleDrawerSizeActionBuilder} from \"../../../action/ToggleDrawerSizeAction\";\n\nconst InternalCDrawer: FunctionComponent = props => {\n const {t} = useTranslation();\n const {window} = props;\n const classes = useStyles();\n const theme = useTheme();\n const container = window !== undefined ? () => window().document.body : undefined;\n const expandedMenu = useSelector((state: AppState) => state.user.expandedMenu);\n const dispatch = useDispatch();\n const toggleDrawerSize = () => {\n dispatch(toggleDrawerSizeActionBuilder());\n }\n\n return \n}\n\nexport const CDrawer = memo(InternalCDrawer, (prev, next) => {\n return !!prev && prev.isMobileDrawerOpen === next.isMobileDrawerOpen;\n});\n\nexport interface CDrawerProps {\n window?: () => Window;\n handleDrawerToggle: () => void;\n isMobileDrawerOpen: boolean;\n}","import Container from \"@material-ui/core/Container\";\nimport Divider from \"@material-ui/core/Divider\";\nimport Typography from \"@material-ui/core/Typography\";\nimport React, {FunctionComponent} from \"react\";\nimport {CAppBar} from \"../c-appbar/CAppBar\";\nimport {useStyles} from \"./PageTemplate.css\";\nimport Hidden from \"@material-ui/core/Hidden\";\nimport {useSelector} from \"react-redux\";\nimport {AppState} from \"../../../entity/state/AppState\";\nimport {useTranslation} from \"react-i18next\";\nimport {CDrawer} from \"../c-drawer/CDrawer\";\nimport Paper from \"@material-ui/core/Paper\";\nimport Dialog from \"@material-ui/core/Dialog\";\nimport DialogTitle from \"@material-ui/core/DialogTitle\";\nimport DialogContent from \"@material-ui/core/DialogContent\";\nimport DialogActions from \"@material-ui/core/DialogActions\";\nimport Button from \"@material-ui/core/Button\";\nimport DialogContentText from \"@material-ui/core/DialogContentText\";\n\nexport const PageTemplate: FunctionComponent = props => {\n const {t} = useTranslation();\n const classes = useStyles();\n const [state, setState] = React.useState({mobileOpen: false, eeCounter: 0});\n const appName = t(useSelector((state: AppState) => state.appName));\n\n const handleDrawerToggle = () => {\n setState(state => ({...state, mobileOpen: !state.mobileOpen}));\n };\n\n const handleClose = () => {\n setState(state => ({...state, eeCounter: 0}));\n };\n\n return
\n \n\n \n\n
\n
\n\n \n setState(state => ({\n ...state,\n eeCounter: (state.eeCounter + 1) * (props.pageName === 'Credits' ? 1 : 0)\n }))}>\n {props.pageName}\n \n  \n \n {props.pageSubName}\n \n\n
\n {props.pageActions}\n
\n\n \n
\n \n \n {props.children}\n \n \n
\n\n = 15}\n aria-labelledby=\"ssd-dialog-title\"\n aria-describedby=\"ssd-dialog-description\">\n \n Is Governance Tool an useful application?\n \n \n \n Don't use a software to teach a working method, you have to plan a training program based on company values and needs.\n \n \n \n \n \n \n
;\n}\n\nexport interface PageTemplateProps {\n pageName: string;\n pageSubName?: string;\n userRole: number;\n\n hideDrawerButton?: boolean;\n\n showBackButton?: boolean;\n\n pageMaxWidth?: 'xs' | 'sm' | 'md' | 'lg' | 'xl' | false;\n\n pageActions?: React.ReactNode;\n}\n\ninterface PageTemplateState {\n mobileOpen: boolean;\n eeCounter: number;\n}","import {Action} from \"redux\";\n\nexport const SetSearchProductsPaginationActionName = \"SetSearchProductsPaginationActionName\";\n\nexport interface SetSearchProductsPaginationAction extends Action {\n currentPage: number,\n pageSize: number,\n}\n\nexport const setSearchProductsPaginationActionBuilder = (currentPage: number, pageSize: number): SetSearchProductsPaginationAction => {\n return {\n type: SetSearchProductsPaginationActionName,\n currentPage,\n pageSize\n }\n}","import {Action} from \"redux\";\n\nexport const SetSearchProductsFiltersActionName = \"SetSearchProductsFiltersAction\";\n\nexport interface SetSearchProductsFiltersAction extends Action {\n selectedFilterValues: { [category: string]: string };\n search: string | undefined;\n releaseType: number|undefined;\n}\n\nexport const setSearchProductsFiltersActionBuilder = (selectedFilterValues: { [category: string]: string }, search: string | undefined, releaseType: number|undefined): SetSearchProductsFiltersAction => {\n return {\n type: SetSearchProductsFiltersActionName,\n selectedFilterValues,\n search,\n releaseType\n }\n}","import {PaginatedRequest} from \"../../entity/PaginatedRequest\";\r\nimport {ServiceResponse} from \"../../entity/ServiceResponse\";\r\nimport {User} from '../../entity/User';\r\nimport {Settings} from \"../Settings\";\r\nimport {fetchService} from \"../FetchService\";\r\n\r\nexport const searchUsersService = (authenticationToken: string, request: SearchUsersRequest, abortController?: AbortController): Promise> => {\r\n return fetchService(Settings.backEndBaseUrl() + '/api/v1/user', {\r\n method: 'POST',\r\n signal: abortController?.signal,\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json',\r\n 'Authorization': 'Bearer ' + authenticationToken\r\n },\r\n body: JSON.stringify(request)\r\n });\r\n};\r\n\r\nexport interface SearchUsersResponse {\r\n users: User[];\r\n count: number;\r\n}\r\n\r\nexport interface SearchUsersRequest extends PaginatedRequest {\r\n search: string;\r\n}","import { Action, Dispatch } from \"redux\";\r\nimport { deleteMetadataService } from \"../book/services/DeleteMetadataService\";\r\nimport { AppState } from \"../entity/state/AppState\";\r\nimport { ProcessStatus } from \"../entity/ProcessStatus\";\r\nimport { ServiceResponse } from \"../entity/ServiceResponse\";\r\nimport { evaluateErrorAction } from \"./EvaluateErrorAction\";\r\n\r\nexport const callDeleteMetadata = (metadataId: string) => {\r\n return (dispatch: Dispatch, getState: () => AppState): Promise => {\r\n dispatch(SetDeleteMetadataStatusActionBuilder(ProcessStatus.InProgress));\r\n\r\n return deleteMetadataService(getState().user.token as string, { metadataId })\r\n .then((json: ServiceResponse<{}>) => {\r\n if (json.error) {\r\n evaluateErrorAction(json.error, dispatch);\r\n\r\n console.error(\"MetadataManagement error code:\", json.error);\r\n dispatch(SetDeleteMetadataStatusActionBuilder(ProcessStatus.Error));\r\n return;\r\n }\r\n\r\n dispatch(SetDeleteMetadataStatusActionBuilder(ProcessStatus.Success));\r\n })\r\n .catch((err: any) => {\r\n console.error(\"Generic error:\", err);\r\n dispatch(SetDeleteMetadataStatusActionBuilder(ProcessStatus.Error));\r\n });\r\n }\r\n}\r\n\r\n// Delete status\r\nexport const SetDeleteMetadataStatusActionName = 'SetDeleteMetadataStatusAction';\r\n\r\nexport interface SetDeleteMetadataStatusAction extends Action {\r\n status: ProcessStatus;\r\n}\r\n\r\nexport const SetDeleteMetadataStatusActionBuilder = (status: ProcessStatus): SetDeleteMetadataStatusAction => ({\r\n type: SetDeleteMetadataStatusActionName,\r\n status,\r\n});","import { Settings } from \"../Settings\";\r\nimport {fetchService} from \"../FetchService\";\r\n\r\nexport const deleteMetadataService = (authenticationToken: string, request: DeleteMetadataRequest) => {\r\n return fetchService(Settings.backEndBaseUrl() + '/api/v1/metadata', {\r\n method: 'DELETE',\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json',\r\n 'Authorization': 'Bearer ' + authenticationToken\r\n },\r\n body: JSON.stringify(request)\r\n });\r\n}\r\n\r\nexport interface DeleteMetadataRequest {\r\n metadataId: string;\r\n}","import { Action, Dispatch } from \"redux\";\r\nimport { updateMetadataService } from \"../book/services/UpdateMetadataService\";\r\nimport { AppState } from \"../entity/state/AppState\";\r\nimport { ProcessStatus } from \"../entity/ProcessStatus\";\r\nimport { ServiceResponse } from \"../entity/ServiceResponse\";\r\nimport { evaluateErrorAction } from \"./EvaluateErrorAction\";\r\n\r\nexport const callUpdateMetadata = (metadataId: string, category: string, value: string) => {\r\n return (dispatch: Dispatch, getState: () => AppState) => {\r\n dispatch(setUpdateMetadataStatusActionBuilder(ProcessStatus.InProgress));\r\n\r\n updateMetadataService(getState().user.token as string, { metadataId, category, value })\r\n .then((json: ServiceResponse<{}>) => {\r\n if (json.error) {\r\n evaluateErrorAction(json.error, dispatch);\r\n\r\n console.error(\"MetadataManagement error code:\", json.error);\r\n dispatch(setUpdateMetadataStatusActionBuilder(ProcessStatus.Error));\r\n return;\r\n }\r\n\r\n dispatch(setUpdateMetadataStatusActionBuilder(ProcessStatus.Success));\r\n })\r\n .catch((err: any) => {\r\n console.error(\"Generic error:\", err);\r\n dispatch(setUpdateMetadataStatusActionBuilder(ProcessStatus.Error));\r\n });\r\n }\r\n}\r\n\r\n// Update status\r\nexport const SetUpdateMetadataStatusActionName = 'SetUpdateMetadataStatusAction';\r\n\r\nexport interface SetUpdateMetadataStatusAction extends Action {\r\n status: ProcessStatus;\r\n}\r\n\r\nexport const setUpdateMetadataStatusActionBuilder = (status: ProcessStatus): SetUpdateMetadataStatusAction => ({\r\n type: SetUpdateMetadataStatusActionName,\r\n status,\r\n});","import { Settings } from \"../Settings\";\r\nimport {fetchService} from \"../FetchService\";\r\n\r\nexport const updateMetadataService = (authenticationToken: string, request: UpdateMetadataRequest) => {\r\n return fetchService(Settings.backEndBaseUrl() + '/api/v1/metadata', {\r\n method: 'PUT',\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json',\r\n 'Authorization': 'Bearer ' + authenticationToken\r\n },\r\n body: JSON.stringify(request)\r\n });\r\n}\r\n\r\nexport interface UpdateMetadataRequest {\r\n metadataId: string;\r\n category: string;\r\n value: string;\r\n}","import {Action, Dispatch} from \"redux\";\nimport {GetProductResponse} from \"../book/services/GetProductService\";\nimport {AppState} from \"../entity/state/AppState\";\nimport {ProcessStatus} from \"../entity/ProcessStatus\";\nimport {ServiceResponse} from \"../entity/ServiceResponse\";\nimport {evaluateErrorAction} from \"./EvaluateErrorAction\";\nimport {deleteProductService} from \"../book/services/DeleteProductService\";\n\nexport const callDeleteProduct = (productId: string) => {\n return (dispatch: Dispatch, getState: () => AppState) => {\n dispatch(updateDeleteProductStatusActionBuilder(ProcessStatus.InProgress));\n\n deleteProductService(getState().user.token as string, { productId })\n .then((json: ServiceResponse) => {\n if (json.error) {\n evaluateErrorAction(json.error, dispatch);\n\n console.error(\"DeleteProduct error code:\", json.error);\n dispatch(updateDeleteProductStatusActionBuilder(ProcessStatus.Error));\n return;\n }\n\n if (!json.payload) {\n console.error(\"DeleteProduct error: empty payload\");\n dispatch(updateDeleteProductStatusActionBuilder(ProcessStatus.Error));\n return;\n }\n\n dispatch(updateDeleteProductStatusActionBuilder(ProcessStatus.Success));\n })\n .catch((err: any) => {\n console.error(\"Generic DeleteProduct error:\", err);\n dispatch(updateDeleteProductStatusActionBuilder(ProcessStatus.Error));\n });\n }\n}\n\n// Update status\nexport const UpdateDeleteProductStatusActionName = 'UpdateDeleteProductStatusAction';\n\nexport interface UpdateDeleteProductStatusAction extends Action {\n status: ProcessStatus;\n}\n\nexport const updateDeleteProductStatusActionBuilder = (status: ProcessStatus): UpdateDeleteProductStatusAction => ({\n type: UpdateDeleteProductStatusActionName,\n status\n});","import {PaginatedRequest} from \"../../entity/PaginatedRequest\";\nimport {ServiceResponse} from \"../../entity/ServiceResponse\";\nimport {Settings} from \"../Settings\";\nimport {Product} from \"../../entity/Product\";\nimport {fetchService} from \"../FetchService\";\n\nexport const deleteProductService = (authenticationToken: string, request: DeleteProductRequest): Promise> => {\n return fetchService(`${Settings.backEndBaseUrl()}/api/v1/product`, {\n method: 'DELETE',\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json',\n 'Authorization': 'Bearer ' + authenticationToken\n },\n body: JSON.stringify(request)\n });\n};\n\nexport interface DeleteProductRequest extends PaginatedRequest {\n productId: string;\n}\n\nexport interface DeleteProductResponse {\n product: Product;\n}\n","import {Action, Dispatch} from \"redux\";\nimport {AppState} from \"../entity/state/AppState\";\nimport {ProcessStatus} from \"../entity/ProcessStatus\";\nimport {exportProductsService} from \"../book/services/ExportProductsService\";\nimport {resetUserStateBuilder} from \"./ResetUserStateAction\";\n\nexport const callExportProductsAction = (search?: string, productPropertyFilterIds?: string[], releaseType?: number | undefined) => {\n return (dispatch: Dispatch, getState: () => AppState) => {\n dispatch(updateExportProductStatusActionBuilder(ProcessStatus.InProgress));\n\n const authenticationToken = getState().user.token;\n\n if (!authenticationToken) {\n dispatch(resetUserStateBuilder());\n return;\n }\n\n return exportProductsService(authenticationToken, {\n search,\n productPropertyFilterIds,\n releaseType\n }).then(response => {\n const url = window.URL.createObjectURL(response);\n const hiddenHypertextLink = document.createElement('a');\n hiddenHypertextLink.href = url;\n hiddenHypertextLink.download = \"export.csv\";\n document.body.appendChild(hiddenHypertextLink);\n hiddenHypertextLink.click();\n hiddenHypertextLink.remove();\n dispatch(updateExportProductStatusActionBuilder(ProcessStatus.Success));\n }).catch((err: any) => {\n console.error(\"Generic login error:\", err);\n dispatch(updateExportProductStatusActionBuilder(ProcessStatus.Error));\n });\n };\n};\n\nexport const UpdateExportProductStatusActionName = 'UpdateExportProductStatusAction';\n\nexport interface UpdateExportProductStatusAction extends Action {\n status: ProcessStatus;\n}\n\nexport const updateExportProductStatusActionBuilder = (status: ProcessStatus): UpdateExportProductStatusAction => ({\n type: UpdateExportProductStatusActionName,\n status\n});","import {Settings} from \"../Settings\";\nimport {fetchBlobService} from \"../FetchService\";\n\nexport const exportProductsService = (authenticationToken: string, request: ExportProductsRequest): Promise => {\n return fetchBlobService(Settings.backEndBaseUrl() + '/api/v1/product/export', {\n method: 'POST',\n headers: {\n 'Accept': 'text/plain',\n 'Content-Type': 'application/json',\n 'Authorization': 'Bearer ' + authenticationToken\n },\n body: JSON.stringify(request)\n });\n};\n\nexport interface ExportProductsRequest {\n search?: string;\n productPropertyFilterIds?: string[];\n releaseType?: number\n}\n","import { Action, Dispatch } from \"redux\";\r\nimport { deleteUserService } from \"../book/services/DeleteUserService\";\r\nimport { AppState } from \"../entity/state/AppState\";\r\nimport { ProcessStatus } from \"../entity/ProcessStatus\";\r\nimport { ServiceResponse } from \"../entity/ServiceResponse\";\r\nimport { evaluateErrorAction } from \"./EvaluateErrorAction\";\r\n\r\nexport const callDeleteUser = (userId: string) => {\r\n return (dispatch: Dispatch, getState: () => AppState) => {\r\n dispatch(updateDeleteUserStatusActionBuilder(ProcessStatus.InProgress));\r\n\r\n deleteUserService(getState().user.token as string, { userId })\r\n .then((json: ServiceResponse<{}>) => {\r\n if (json.error) {\r\n evaluateErrorAction(json.error, dispatch);\r\n\r\n console.error(\"UserManagement error code:\", json.error);\r\n dispatch(updateDeleteUserStatusActionBuilder(ProcessStatus.Error));\r\n return;\r\n }\r\n\r\n dispatch(updateDeleteUserStatusActionBuilder(ProcessStatus.Success));\r\n })\r\n .catch((err: any) => {\r\n console.error(\"Generic error:\", err);\r\n dispatch(updateDeleteUserStatusActionBuilder(ProcessStatus.Error));\r\n });\r\n }\r\n}\r\n\r\n// Delete status\r\nexport const UpdateDeleteUserStatusActionName = 'UpdateDeleteUserStatusAction';\r\n\r\nexport interface UpdateDeleteUserStatusAction extends Action {\r\n status: ProcessStatus;\r\n}\r\n\r\nexport const updateDeleteUserStatusActionBuilder = (status: ProcessStatus): UpdateDeleteUserStatusAction => ({\r\n type: UpdateDeleteUserStatusActionName,\r\n status,\r\n});","import {Settings} from \"../Settings\";\r\nimport {ServiceResponse} from \"../../entity/ServiceResponse\";\r\nimport {fetchService} from \"../FetchService\";\r\n\r\nexport const deleteUserService = (authenticationToken: string, request: DeleteUserRequest): Promise> => {\r\n return fetchService(Settings.backEndBaseUrl() + '/api/v1/user', {\r\n method: 'DELETE',\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json',\r\n 'Authorization': 'Bearer ' + authenticationToken\r\n },\r\n body: JSON.stringify(request)\r\n });\r\n}\r\n\r\nexport interface DeleteUserRequest {\r\n userId: string;\r\n}\r\n\r\nexport interface DeleteUserResponse {\r\n}","import { Action, Dispatch } from \"redux\";\r\nimport { updateUserService } from \"../book/services/UpdateUserService\";\r\nimport { AppState } from \"../entity/state/AppState\";\r\nimport { ProcessStatus } from \"../entity/ProcessStatus\";\r\nimport { ServiceResponse } from \"../entity/ServiceResponse\";\r\nimport { evaluateErrorAction } from \"./EvaluateErrorAction\";\r\n\r\nexport const callUpdateUser = (userId: string, username: string, password: string, role: string) => {\r\n return (dispatch: Dispatch, getState: () => AppState) => {\r\n dispatch(setUpdateUserStatusActionBuilder(ProcessStatus.InProgress));\r\n\r\n updateUserService(getState().user.token as string, { userId, role, password, username })\r\n .then((json: ServiceResponse<{}>) => {\r\n if (json.error) {\r\n evaluateErrorAction(json.error, dispatch);\r\n\r\n console.error(\"MetadataManagement error code:\", json.error);\r\n dispatch(setUpdateUserStatusActionBuilder(ProcessStatus.Error));\r\n return;\r\n }\r\n\r\n dispatch(setUpdateUserStatusActionBuilder(ProcessStatus.Success));\r\n })\r\n .catch((err: any) => {\r\n console.error(\"Generic error:\", err);\r\n dispatch(setUpdateUserStatusActionBuilder(ProcessStatus.Error));\r\n });\r\n }\r\n}\r\n\r\n// Update status\r\nexport const SetUpdateUserStatusActionName = 'SetUpdateUserStatusAction';\r\n\r\nexport interface SetUpdateUserStatusAction extends Action {\r\n status: ProcessStatus;\r\n}\r\n\r\nexport const setUpdateUserStatusActionBuilder = (status: ProcessStatus): SetUpdateUserStatusAction => ({\r\n type: SetUpdateUserStatusActionName,\r\n status,\r\n});","import { Settings } from \"../Settings\";\r\nimport {fetchService} from \"../FetchService\";\r\n\r\nexport const updateUserService = (authenticationToken: string, request: UpdateUserRequest) => {\r\n return fetchService(Settings.backEndBaseUrl() + '/api/v1/user', {\r\n method: 'PUT',\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json',\r\n 'Authorization': 'Bearer ' + authenticationToken\r\n },\r\n body: JSON.stringify(request)\r\n });\r\n}\r\n\r\nexport interface UpdateUserRequest {\r\n userId: string;\r\n password: string;\r\n role: string;\r\n username: string;\r\n}","import {Action, Dispatch} from \"redux\";\nimport {AppState} from \"../entity/state/AppState\";\nimport {ProcessStatus} from \"../entity/ProcessStatus\";\nimport {ServiceResponse} from \"../entity/ServiceResponse\";\nimport {evaluateErrorAction} from \"./EvaluateErrorAction\";\nimport {updateMeService} from \"../book/services/UpdateMeService\";\n\nexport const callUpdateMe = (password: string) => {\n return (dispatch: Dispatch, getState: () => AppState) => {\n dispatch(setUpdateMeStatusActionBuilder(ProcessStatus.InProgress));\n\n updateMeService(getState().user.token as string, {password})\n .then((json: ServiceResponse<{}>) => {\n if (json.error) {\n evaluateErrorAction(json.error, dispatch);\n\n console.error(\"Update me error code:\", json.error);\n dispatch(setUpdateMeStatusActionBuilder(ProcessStatus.Error));\n return;\n }\n\n dispatch(setUpdateMeStatusActionBuilder(ProcessStatus.Success));\n })\n .catch((err: any) => {\n console.error(\"Update me generic error:\", err);\n dispatch(setUpdateMeStatusActionBuilder(ProcessStatus.Error));\n });\n }\n}\n\n// Update status\nexport const SetUpdateMeStatusActionName = 'SetUpdateMeStatusAction';\n\nexport interface SetUpdateMeStatusAction extends Action {\n status: ProcessStatus;\n}\n\nexport const setUpdateMeStatusActionBuilder = (status: ProcessStatus): SetUpdateMeStatusAction => ({\n type: SetUpdateMeStatusActionName,\n status,\n});","import {Settings} from \"../Settings\";\nimport {fetchService} from \"../FetchService\";\n\nexport const updateMeService = (authenticationToken: string, request: UpdateMeRequest) => {\n return fetchService(Settings.backEndBaseUrl() + '/api/v1/user/me', {\n method: 'PUT',\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json',\n 'Authorization': 'Bearer ' + authenticationToken\n },\n body: JSON.stringify(request)\n });\n}\n\nexport interface UpdateMeRequest {\n password: string;\n}","import {Action, Dispatch} from \"redux\";\nimport {AppState} from \"../entity/state/AppState\";\nimport {ProcessStatus} from \"../entity/ProcessStatus\";\nimport {ServiceResponse} from \"../entity/ServiceResponse\";\nimport {evaluateErrorAction} from \"./EvaluateErrorAction\";\nimport {AppConfiguration} from \"../entity/AppConfiguration\";\nimport {updateAppConfigurationsService} from \"../book/services/UpdateAppConfigurationsService\";\n\nexport const updateAppConfigurationsAction = (configurations:AppConfiguration[]) => {\n return (dispatch: Dispatch, getState: () => AppState) => {\n dispatch(setUpdateAppConfigurationStatusActionBuilder(ProcessStatus.InProgress));\n\n updateAppConfigurationsService(getState().user.token as string, { configurations })\n .then((json: ServiceResponse<{}>) => {\n if (json.error) {\n evaluateErrorAction(json.error, dispatch);\n\n console.error(\"AppConfigurationManagement error code:\", json.error);\n dispatch(setUpdateAppConfigurationStatusActionBuilder(ProcessStatus.Error));\n return;\n }\n\n dispatch(setUpdateAppConfigurationStatusActionBuilder(ProcessStatus.Success));\n })\n .catch((err: any) => {\n console.error(\"Generic error:\", err);\n dispatch(setUpdateAppConfigurationStatusActionBuilder(ProcessStatus.Error));\n });\n }\n}\n\n// Update status\nexport const SetUpdateAppConfigurationStatusActionName = 'SetUpdateAppConfigurationStatusAction';\n\nexport interface SetUpdateAppConfigurationStatusAction extends Action {\n status: ProcessStatus;\n}\n\nexport const setUpdateAppConfigurationStatusActionBuilder = (status: ProcessStatus): SetUpdateAppConfigurationStatusAction => ({\n type: SetUpdateAppConfigurationStatusActionName,\n status,\n});","import {Settings} from \"../Settings\";\nimport {fetchService} from \"../FetchService\";\nimport {AppConfiguration} from \"../../entity/AppConfiguration\";\n\nexport const updateAppConfigurationsService = (authenticationToken: string, request: UpdateAppConfigurationRequest) => {\n return fetchService(Settings.backEndBaseUrl() + '/api/v1/appConfiguration', {\n method: 'PUT',\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json',\n 'Authorization': 'Bearer ' + authenticationToken\n },\n body: JSON.stringify(request)\n });\n}\n\nexport interface UpdateAppConfigurationRequest {\n configurations: AppConfiguration[];\n}","export const Page = {\r\n Login: '/login',\r\n MetadataManagement: '/metadata-management',\r\n UsersManagement: '/users-management',\r\n ProductsSearch: '/',\r\n Profile: '/profile',\r\n ProductDetails: '/product/:productId',\r\n Monitoring: '/monitoring',\r\n Credits: '/credits',\r\n AppConfigurations: '/app-configurations'\r\n}","import {Action, Dispatch} from \"redux\";\nimport {MeResponse, meService} from \"../book/services/MeService\";\nimport {AppState} from \"../entity/state/AppState\";\nimport {ProcessStatus} from \"../entity/ProcessStatus\";\nimport {ServiceResponse} from \"../entity/ServiceResponse\";\nimport {evaluateErrorAction} from \"./EvaluateErrorAction\";\nimport {resetUserStateBuilder} from \"./ResetUserStateAction\";\n\nexport const callMe = () => {\n return (dispatch: Dispatch, getState: () => AppState) => {\n dispatch(updateMeStatusActionBuilder(ProcessStatus.InProgress));\n\n meService(getState().user.token as string)\n .then((json: ServiceResponse) => {\n if (json.error) {\n evaluateErrorAction(json.error, dispatch);\n\n console.error(\"Me error code:\", json.error);\n dispatch(updateMeStatusActionBuilder(ProcessStatus.Error));\n return;\n }\n\n if (!json.payload) {\n console.error(\"Me error: empty payload\");\n dispatch(updateMeStatusActionBuilder(ProcessStatus.Error));\n return;\n }\n\n dispatch(updateMeStateBuilder(\n json.payload.username,\n json.payload.role,\n ));\n })\n .catch((err: any) => {\n console.error(\"Generic login error:\", err);\n dispatch(updateMeStatusActionBuilder(ProcessStatus.Error));\n dispatch(resetUserStateBuilder());\n window.location.reload();\n });\n }\n}\n\n// Update status\nexport const UpdateMeStatusActionName = 'UpdateMeStatusAction';\n\nexport interface UpdateMeStatusAction extends Action {\n status: ProcessStatus;\n}\n\nconst updateMeStatusActionBuilder = (status: ProcessStatus): UpdateMeStatusAction => ({\n type: UpdateMeStatusActionName,\n status\n});\n\n// Update state\nexport const UpdateMeStateActionName = 'UpdateMeStateAction';\n\nexport interface UpdateMeStateAction extends Action {\n username: string;\n role: string;\n status: ProcessStatus;\n}\n\nexport const updateMeStateBuilder = (email: string, role: string, status: ProcessStatus = ProcessStatus.Success): UpdateMeStateAction => ({\n type: UpdateMeStateActionName,\n username: email,\n role,\n status\n});","import { ServiceResponse } from \"../../entity/ServiceResponse\";\r\nimport { Settings } from \"../Settings\";\r\nimport {fetchService} from \"../FetchService\";\r\n\r\nexport const meService = (authenticationToken: string): Promise> => {\r\n return fetchService(Settings.backEndBaseUrl() + '/api/v1/user/me', {\r\n method: 'GET',\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Authorization': 'Bearer ' + authenticationToken\r\n }\r\n });\r\n};\r\n\r\nexport interface MeResponse {\r\n username: string;\r\n role: string;\r\n}","import {Action, Dispatch} from \"redux\";\r\nimport {LoginResponse, loginService} from \"../book/services/LoginService\";\r\nimport {ProcessStatus} from \"../entity/ProcessStatus\";\r\nimport {ServiceResponse} from \"../entity/ServiceResponse\";\r\nimport {evaluateErrorAction} from \"./EvaluateErrorAction\";\r\n\r\nexport const callLogin = (email: string, password: string) => {\r\n return (dispatch: Dispatch) => {\r\n dispatch(updateLoginStatusActionBuilder(ProcessStatus.InProgress));\r\n\r\n loginService({username: email, password})\r\n .then((json: ServiceResponse) => {\r\n if (json.error) {\r\n evaluateErrorAction(json.error, dispatch);\r\n\r\n console.error(\"Login error code:\", json.error);\r\n dispatch(updateLoginStatusActionBuilder(ProcessStatus.Error));\r\n return;\r\n }\r\n\r\n if (!json.payload) {\r\n console.error(\"Login error: empty payload\");\r\n dispatch(updateLoginStatusActionBuilder(ProcessStatus.Error));\r\n return;\r\n }\r\n\r\n dispatch(updateLoginStatusActionBuilder(ProcessStatus.Success));\r\n dispatch(updateLoginStateBuilder(\r\n json.payload.token,\r\n json.payload.expiredAt,\r\n ));\r\n })\r\n .catch((err: any) => {\r\n console.error(\"Generic login error:\", err);\r\n dispatch(updateLoginStatusActionBuilder(ProcessStatus.Error));\r\n });\r\n }\r\n}\r\n\r\n// Update status\r\nexport const UpdateLoginStatusActionName = 'UpdateLoginStatusAction';\r\n\r\nexport interface UpdateLoginStatusAction extends Action {\r\n loginStatus: ProcessStatus;\r\n}\r\n\r\nconst updateLoginStatusActionBuilder = (status: ProcessStatus): UpdateLoginStatusAction => ({\r\n type: UpdateLoginStatusActionName,\r\n loginStatus: status\r\n});\r\n\r\n// Update state\r\nexport const UpdateLoginStateActionName = 'UpdateLoginStateAction';\r\n\r\nexport interface UpdateLoginStateAction extends Action {\r\n token: string;\r\n expiredAt: number;\r\n loginStatus: ProcessStatus;\r\n}\r\n\r\nexport const updateLoginStateBuilder = (token: string, expiredAt: number, status: ProcessStatus = ProcessStatus.Success): UpdateLoginStateAction => ({\r\n type: UpdateLoginStateActionName,\r\n token,\r\n expiredAt,\r\n loginStatus: status\r\n});","import { ServiceResponse } from \"../../entity/ServiceResponse\";\r\nimport { Settings } from \"../Settings\";\r\n\r\nexport const loginService = (request: LoginRequest): Promise> => {\r\n return fetch(Settings.backEndBaseUrl() + '/api/v1/login', {\r\n method: 'POST',\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(request)\r\n }).then(res => res.json());\r\n};\r\n\r\nexport interface LoginResponse {\r\n token: string;\r\n expiredAt: number;\r\n}\r\n\r\nexport interface LoginRequest {\r\n username: string;\r\n password: string;\r\n}","import makeStyles from \"@material-ui/core/styles/makeStyles\";\nimport createStyles from \"@material-ui/core/styles/createStyles\";\n\nexport const useStyles = makeStyles(theme => createStyles({\n '@global': {\n body: {\n background: 'url(login-background.jpg) no-repeat left bottom fixed',\n backgroundSize: 'cover',\n }\n },\n login: {\n flexGrow: 1,\n width: '100%',\n paddingTop: \"80px\",\n },\n main: {\n paddingLeft: theme.spacing(2),\n paddingRight: theme.spacing(2),\n [theme.breakpoints.up('sm')]: {\n paddingLeft: theme.spacing(3),\n paddingRight: theme.spacing(3),\n },\n margin: \"0px auto\",\n paddingTop: theme.spacing() * 2,\n paddingBottom: theme.spacing() * 2,\n width: \"90%\",\n maxWidth: \"450px\",\n overflow: \"hidden\"\n },\n companyLogo: {\n textAlign: 'center',\n marginTop: '20px',\n marginBottom: '35px'\n },\n title: {\n textAlign: 'center'\n },\n subtitle: {\n textAlign: 'center',\n marginTop: 8\n },\n loginButton: {\n display: \"block\",\n marginTop: \"1em\",\n float: \"right\"\n },\n error: {\n display: \"block\",\n marginTop: \"2em\"\n }\n}));","import Box from \"@material-ui/core/Box/Box\";\nimport Button from \"@material-ui/core/Button/Button\";\nimport Paper from \"@material-ui/core/Paper/Paper\";\nimport TextField from \"@material-ui/core/TextField/TextField\";\nimport Typography from \"@material-ui/core/Typography/Typography\";\nimport React, {FunctionComponent, useState} from \"react\";\nimport {Redirect, useLocation} from \"react-router-dom\";\nimport {ProcessStatus} from \"../../../entity/ProcessStatus\";\nimport {Loading} from \"../../common/loading/Loading\";\nimport {useStyles} from \"./Login.css\";\nimport {useTranslation} from \"react-i18next\";\nimport FormControl from \"@material-ui/core/FormControl\";\nimport {Input, InputAdornment, InputLabel} from \"@material-ui/core\";\nimport IconButton from \"@material-ui/core/IconButton/IconButton\";\nimport Visibility from '@material-ui/icons/Visibility';\nimport VisibilityOff from '@material-ui/icons/VisibilityOff';\n\nfunction useQuery() {\n const {search} = useLocation();\n\n return React.useMemo(() => new URLSearchParams(search), [search]);\n}\n\nexport const Login: FunctionComponent = props => {\n const {t} = useTranslation();\n const classes = useStyles();\n const query = useQuery();\n const [state, setState] = useState({\n showPassword: false,\n password: '',\n username: ''\n });\n\n if (props.isLogged) {\n const redirectTo = query.get(\"redirect-to\");\n if (redirectTo) {\n return ;\n }\n\n return ;\n }\n\n const handleClickShowPassword = () => {\n setState(state => ({...state, showPassword: !state.showPassword}));\n };\n\n const handleMouseDownPassword = (event: React.MouseEvent) => {\n event.preventDefault();\n };\n\n return
\n \n {props.status === ProcessStatus.InProgress && }\n\n {props.status !== ProcessStatus.InProgress && \n
\n {t(props.appName)}/\n
\n\n \n {t(props.appName)}\n \n \n {t(\"Login\")}\n \n\n
props.onLoginClick(state.username, state.password)}>\n setState(state => ({...state, username: e.target.value}))}\n label=\"Email\"\n margin=\"normal\"\n fullWidth/>\n\n \n Password\n setState(state => ({...state, password: e.target.value}))}\n endAdornment={\n \n \n {state.showPassword ? : }\n \n \n }/>\n \n\n \n Login\n \n \n\n {props.status === ProcessStatus.Error &&\n {t(\"Error while login, please check email and password and retry.\")}}\n
}\n
\n
;\n}\n\nexport interface LoginProps {\n isLogged: boolean;\n onLoginClick: (username: string, password: string) => void;\n status: ProcessStatus;\n appName: string;\n}\n\ninterface LoginState {\n username: string;\n password: string;\n showPassword: boolean;\n}","import { connect } from \"react-redux\";\nimport { Action } from \"redux\";\nimport { ThunkDispatch } from \"redux-thunk\";\nimport { callLogin } from \"../../../action/LoginAction\";\nimport { Login, LoginProps } from \"./Login\";\nimport { AppState } from '../../../entity/state/AppState';\n\nexport const LoginContainer = connect(\n (appState: AppState): LoginProps => {\n return {\n status: appState.user.loginStatus,\n isLogged: !!appState.user.token,\n appName: appState.appName\n } as LoginProps;\n },\n (dispatch: ThunkDispatch): LoginProps => {\n return {\n onLoginClick: (email, password) => {\n dispatch(callLogin(email, password));\n }\n } as LoginProps;\n }\n)(Login);","import React, {FunctionComponent} from \"react\";\nimport makeStyles from \"@material-ui/core/styles/makeStyles\";\nimport {Theme} from \"@material-ui/core/styles/createTheme\";\nimport createStyles from \"@material-ui/core/styles/createStyles\";\nimport {useSelector} from \"react-redux\";\nimport {AppState} from \"../../../entity/state/AppState\";\nimport {PageTemplate} from \"../pagetemplate/PageTemplate\";\nimport {Loading} from \"./Loading\";\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n page: {\n display: 'flex',\n },\n content: {\n flexGrow: 1,\n padding: theme.spacing(1),\n overflow: 'hidden',\n textAlign: 'center',\n },\n loading: {\n '& .message': {\n display: 'block',\n marginTop: '20px',\n fontSize: '1.5em',\n fontWeight: 200\n }\n }\n })\n);\n\nexport const LoadingPage: FunctionComponent = () => {\n const classes = useStyles();\n const userRole = useSelector((appState: AppState) => appState.user.role);\n\n return \n
\n \n
\n
;\n}","import {FunctionComponent} from \"react\";\nimport makeStyles from \"@material-ui/core/styles/makeStyles\";\nimport createStyles from \"@material-ui/core/styles/createStyles\";\n\nexport const useStyles = makeStyles(() =>\n createStyles({\n notFound: {\n flexGrow: 1,\n \"height\": \"100%\",\n \"width\": \"100%\",\n \"backgroundSize\": \"cover\",\n \"paddingTop\": \"80px\"\n },\n main: {\n \"maxWidth\": \"1600px\",\n \"overflow\": \"hidden\",\n \"width\": \"90%\",\n \"margin\": \"0px auto\",\n \"fallbacks\": [\n {\n \"maxWidth\": \"750px\"\n },\n {\n \"overflow\": \"hidden\"\n }\n ],\n marginTop: \"80px\",\n paddingTop: \"16px\",\n paddingLeft: \"16px\",\n marginBottom: \"80px\",\n paddingRight: \"16px\",\n paddingBottom: \"16px\",\n boxShadow: \"0px 2px 1px -1px rgb(0 0 0 / 20%), 0px 1px 1px 0px rgb(0 0 0 / 14%), 0px 1px 3px 0px rgb(0 0 0 / 12%)\",\n borderRadius: \"4px\",\n color: \"rgba(0, 0, 0, 0.87)\",\n transition: \"box-shadow 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms\",\n backgroundColor: \"#fff\"\n },\n title: {\n \"textAlign\": \"center\",\n \"fontSize\": \"6rem\",\n \"fontFamily\": \"\\\"Roboto\\\", \\\"Helvetica\\\", \\\"Arial\\\", sans-serif\",\n fontWeight: 300,\n \"lineHeight\": \"1.167\",\n \"letterSpacing\": \"-0.01562em\",\n \"margin\": \"0\"\n },\n subtitle: {\n \"textAlign\": \"center\",\n \"fontSize\": \"3rem\",\n \"fontFamily\": \"\\\"Roboto\\\", \\\"Helvetica\\\", \\\"Arial\\\", sans-serif\",\n fontWeight: 400,\n \"lineHeight\": \"1.167\",\n \"letterSpacing\": \"0em\",\n \"margin\": \"0\"\n },\n content: {\n \"textAlign\": \"center\",\n \"marginTop\": \"30px\"\n },\n goHomeButton: {\n display: \"inline-block\",\n marginTop: \"30px\",\n marginBottom: \"20px\",\n color: \"#fff\",\n backgroundColor: \"#ed1c24\",\n boxShadow: \"0px 3px 1px -2px rgb(0 0 0 / 20%), 0px 2px 2px 0px rgb(0 0 0 / 14%), 0px 1px 5px 0px rgb(0 0 0 / 12%)\",\n padding: \"6px 16px\",\n fontSize: \"0.875rem\",\n minWidth: \"64px\",\n boxSizing: \"border-box\",\n transition: \"background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms\",\n fontFamily: \"\\\"Roboto\\\", \\\"Helvetica\\\", \\\"Arial\\\", sans-serif\",\n fontWeight: 500,\n lineHeight: \"1.75\",\n borderRadius: \"4px\",\n letterSpacing: \"0.02857em\",\n textTransform: \"uppercase\",\n border: \"0\",\n cursor: \"pointer\",\n outline: \"0\",\n position: \"relative\",\n alignItems: \"center\",\n userSelect: \"none\",\n verticalAlign: \"middle\",\n mozAppearance: \"none\",\n justifyContent: \"center\",\n textDecoration: \"none\",\n webkitAppearance: \"none\",\n webkitTapHighlightColor: \"transparent\"\n }\n })\n);\n\nexport const PageNotFound: FunctionComponent = () => {\n const classes = useStyles();\n\n return
\n
\n

\n 404\n

\n

\n Page not found\n

\n\n
\n
\n The page you are looking for was moved, removed, renamed or might never existed.\n
\n\n \n go home\n \n
\n\n
\n
\n}","import {Action, Dispatch} from \"redux\";\nimport {AppState} from \"../entity/state/AppState\";\nimport {ProcessStatus} from \"../entity/ProcessStatus\";\nimport {ServiceResponse} from \"../entity/ServiceResponse\";\nimport {AppConfiguration} from '../entity/AppConfiguration';\nimport {evaluateErrorAction} from \"./EvaluateErrorAction\";\nimport {\n searchAppConfigurationService,\n SearchAppConfigurationsResponse\n} from \"../book/services/SearchAppConfigurationService\";\n\nexport const callSearchAppConfiguration = () => {\n return (dispatch: Dispatch, getState: () => AppState) => {\n dispatch(setAppConfigurationStatusActionBuilder(ProcessStatus.InProgress));\n\n searchAppConfigurationService(getState().user.token as string, { })\n .then((json: ServiceResponse) => {\n if (json.error) {\n evaluateErrorAction(json.error, dispatch);\n\n console.error(\"AppConfigurationManagement error code:\", json.error);\n dispatch(setAppConfigurationStatusActionBuilder(ProcessStatus.Error));\n return;\n }\n\n if (!json.payload) {\n console.error(\"AppConfigurationManagement error: empty payload\");\n dispatch(setAppConfigurationStatusActionBuilder(ProcessStatus.Error));\n return;\n }\n\n dispatch(setAppConfigurationStateBuilder(\n json.payload.configurations,\n ));\n })\n .catch((err: any) => {\n console.error(\"Generic error:\", err);\n dispatch(setAppConfigurationStatusActionBuilder(ProcessStatus.Error));\n });\n }\n}\n\n// Update status\nexport const SetAppConfigurationStatusActionName = 'SetAppConfigurationStatusAction';\n\nexport interface SetAppConfigurationStatusAction extends Action {\n status: ProcessStatus;\n}\n\nconst setAppConfigurationStatusActionBuilder = (status: ProcessStatus): SetAppConfigurationStatusAction => ({\n type: SetAppConfigurationStatusActionName,\n status,\n});\n\n// Update state\nexport const SetAppConfigurationStateActionName = 'SetAppConfigurationStateAction';\n\nexport interface SetAppConfigurationStateAction extends Action {\n configurations: AppConfiguration[];\n status: ProcessStatus;\n}\n\nexport const setAppConfigurationStateBuilder = (configurations: AppConfiguration[], status: ProcessStatus=ProcessStatus.Success): SetAppConfigurationStateAction => ({\n type: SetAppConfigurationStateActionName,\n configurations,\n status\n});","import {ServiceResponse} from \"../../entity/ServiceResponse\";\nimport {Settings} from \"../Settings\";\nimport {fetchService} from \"../FetchService\";\nimport {AppConfiguration} from \"../../entity/AppConfiguration\";\n\nexport const searchAppConfigurationService = (authenticationToken: string, request: SearchAppConfigurationsRequest): Promise> => {\n return fetchService(Settings.backEndBaseUrl() + '/api/v1/appConfiguration', {\n method: 'POST',\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json',\n 'Authorization': 'Bearer ' + authenticationToken\n },\n body: JSON.stringify(request)\n });\n};\n\nexport interface SearchAppConfigurationsRequest {\n}\n\nexport interface SearchAppConfigurationsResponse {\n configurations: AppConfiguration[];\n}","import { connect } from \"react-redux\";\r\nimport { Action } from \"redux\";\r\nimport { ThunkDispatch } from \"redux-thunk\";\r\nimport { callMe } from \"../../action/MeAction\";\r\nimport { ProcessStatus } from \"../../entity/ProcessStatus\";\r\nimport { AppState } from '../../entity/state/AppState';\r\nimport { Routing, RoutingProps } from \"./Routing\";\r\nimport {callSearchAppConfiguration} from \"../../action/SearchAppConfigurationsAction\";\r\n\r\nexport const RoutingContainer = connect(\r\n (appState: AppState) => {\r\n return {\r\n isLogged: appState.user.expiredAt && appState.user.expiredAt > new Date().getUTCDate(),\r\n isUser: appState.user.meStatus !== ProcessStatus.None\r\n } as RoutingProps;\r\n },\r\n (dispatch: ThunkDispatch): RoutingProps => {\r\n return {\r\n loadUserInfo: () => dispatch(callMe()),\r\n loadAppConfigurations: ()=>dispatch(callSearchAppConfiguration())\r\n } as RoutingProps;\r\n }\r\n)(Routing);","import CssBaseline from \"@material-ui/core/CssBaseline/CssBaseline\";\r\nimport React, {Fragment, FunctionComponent, lazy, Suspense, useEffect} from \"react\";\r\nimport {Route} from 'react-router';\r\nimport {HashRouter, Redirect, RouteProps, Switch} from 'react-router-dom';\r\nimport {LoginContainer} from '../page/login/LoginContainer';\r\nimport {Page} from '../../entity/Page';\r\nimport {LoadingPage} from \"../common/loading/LoadingPage\";\r\nimport {PageNotFound} from \"../page/page-not-found/PageNotFound\";\r\n\r\nexport const Routing: FunctionComponent = props => {\r\n const {isUser, isLogged, loadUserInfo, loadAppConfigurations} = props;\r\n useEffect(() => {\r\n if (!isUser && isLogged) {\r\n loadUserInfo();\r\n loadAppConfigurations();\r\n }\r\n }, [isUser, isLogged, loadUserInfo, loadAppConfigurations]);\r\n\r\n const ProtectedRoute = (p: RouteProps) => {\r\n if (!props.isLogged) {\r\n const renderComponent = () => ();\r\n return ;\r\n }\r\n\r\n return ;\r\n }\r\n\r\n const SearchProducts = lazy(() => import(\"../page/searchproducts/SearchProductsContainer\"));\r\n const UsersManagement = lazy(() => import(\"../page/usersmanagement/UsersManagementContainer\"));\r\n const AppConfigurations = lazy(() => import(\"../page/app-configurations/AppConfigurations\"));\r\n const MetadataManagement = lazy(() => import(\"../page/metadatamanagement/MetadataManagementContainer\"));\r\n const ProductDetails = lazy(() => import(\"../page/productdetails/ProductDetailsContainer\"));\r\n const Credits = lazy(() => import('../page/credits/CreditsContainer'));\r\n const Profile = lazy(() => import('../page/profile/ProfileContainer'));\r\n const Monitoring = lazy(() => import('../page/monitoring/MonitoringContainer'));\r\n\r\n return \r\n \r\n \r\n }>\r\n \r\n }/>\r\n }/>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ;\r\n};\r\n\r\nexport interface RoutingProps {\r\n isLogged: boolean;\r\n isUser: boolean;\r\n loadUserInfo: () => void;\r\n loadAppConfigurations: () => void;\r\n}","import { ProcessStatus } from '../entity/ProcessStatus';\nimport { UserRole } from '../entity/UserRole';\nimport { UserState } from '../entity/state/UserState';\nimport {SessionStorage} from \"../book/SessionStorage\";\nimport {SessionStorageKey} from \"../book/SessionStorageKey\";\n\nexport const initialUserState: UserState = {\n meStatus: ProcessStatus.None,\n username: null,\n role: UserRole.Unknown,\n expandedMenu: true,\n expiredAt: SessionStorage.getInt(SessionStorageKey.expiredAt),\n loginStatus: ProcessStatus.None,\n token: SessionStorage.getString(SessionStorageKey.token)\n};","import { MetadataManagementState } from \"../entity/state/MetadataManagementState\";\r\nimport { ProcessStatus } from \"../entity/ProcessStatus\";\r\n\r\nexport const initialMetadataManagementState = {\r\n metadataCategories: [],\r\n metadataCategoriesStatus: ProcessStatus.None,\r\n\r\n metadata: {},\r\n metadataStatus: {},\r\n count: {},\r\n\r\n updateStatus: ProcessStatus.None,\r\n deleteStatus: ProcessStatus.None\r\n} as MetadataManagementState","import {AppState} from \"../entity/state/AppState\";\r\nimport {initialUserState} from './InitialUserState';\r\nimport {initialMetadataManagementState} from \"./InitialMetadataManagementState\";\r\nimport {initialSearchProductsState} from \"./InitialSearchProductsState\";\r\nimport {initialUsersManagementState} from './InitialUsersManagementState';\r\nimport {initialProductDetailsState} from './InitialProductDetailsState';\r\nimport {initialProfileState} from \"./InitialProfileState\";\r\nimport {initialMonitoringState} from \"./InitialMonitoringState\";\r\nimport {initialAppConfigurationsState} from \"./InitialAppConfigurationsState\";\r\n\r\nexport const initialAppState: AppState = {\r\n appName: \"Governance Tool\",\r\n user: initialUserState,\r\n searchProducts: initialSearchProductsState,\r\n usersManagement: initialUsersManagementState,\r\n metadataManagement: initialMetadataManagementState,\r\n productDetails: initialProductDetailsState,\r\n profile: initialProfileState,\r\n monitoringState: initialMonitoringState,\r\n appConfigurationsState: initialAppConfigurationsState\r\n};","import { ProcessStatus } from \"../entity/ProcessStatus\";\r\nimport { SearchProductsState } from \"../entity/state/SearchProductsState\";\r\n\r\nexport const initialSearchProductsState: SearchProductsState = {\r\n selectedMetadata: [],\r\n filterValues: {},\r\n filterValuesStatus: {},\r\n count: 0,\r\n executionTime: 0,\r\n productsFound: [],\r\n status: ProcessStatus.None,\r\n deleteStatus: ProcessStatus.None,\r\n exportStatus: ProcessStatus.None,\r\n pagination: {\r\n currentPage: 0,\r\n pageSize: 50\r\n },\r\n filters:{\r\n selectedFilterValues: {}\r\n }\r\n}","import { ProcessStatus } from \"../entity/ProcessStatus\";\r\nimport { UsersManagementState } from \"../entity/state/UsersManagementState\";\r\n\r\nexport const initialUsersManagementState = {\r\n users: [],\r\n count: 0,\r\n status: ProcessStatus.None,\r\n\r\n updateStatus: ProcessStatus.None,\r\n deleteStatus: ProcessStatus.None\r\n} as UsersManagementState","import { ProcessStatus } from \"../entity/ProcessStatus\";\r\nimport { ProductDetailsState } from \"../entity/state/ProductDetailsState\";\r\n\r\nexport const initialProductDetailsState: ProductDetailsState = {\r\n product: null,\r\n status: ProcessStatus.None\r\n};","import {ProcessStatus} from \"../entity/ProcessStatus\";\nimport {ProfileState} from \"../entity/state/ProfileState\";\n\nexport const initialProfileState: ProfileState = {\n updateMeStatus: ProcessStatus.None\n};","import {MonitoringState} from \"../entity/state/MonitoringState\";\nimport {ProcessStatus} from \"../entity/ProcessStatus\";\n\nexport const initialMonitoringState: MonitoringState = {\n productPropertyCategoryData: {},\n productPropertyCategoryStatus: {},\n productMonthData: [],\n productMonthStatus: ProcessStatus.None,\n};","import {AppConfiguration} from \"../entity/AppConfiguration\";\nimport {AppConfigurationsState} from \"../entity/state/AppConfigurationsState\";\nimport {ProcessStatus} from \"../entity/ProcessStatus\";\n\nexport const initialAppConfigurationsState = {\n configurations: new Array(),\n updateAppConfigurationStatus: ProcessStatus.None,\n appConfigurationsStatus: ProcessStatus.None\n} as AppConfigurationsState;","import {combineReducers} from \"redux\";\r\nimport {AppState} from \"../entity/state/AppState\";\r\nimport {initialAppState} from '../store/InitialAppState';\r\nimport {userReducer} from \"./UserReducer\";\r\nimport {metadataManagementReducer} from \"./MetadataManagementReducer\";\r\nimport {searchProductsReducer} from \"./SearchProductsReducer\";\r\nimport {usersManagementReducer} from './UsersManagementReducer';\r\nimport {productDetailsReducer} from './ProductDetailsReducer';\r\nimport {profileReducer} from \"./ProfileReducer\";\r\nimport {monitoringReducer} from \"./MonitoringReducer\";\r\nimport {appConfigurationsReducer} from \"./AppConfigurationsReducer\";\r\n\r\nexport const appReducer = combineReducers({\r\n appName: (state: string = initialAppState.appName) => (state),\r\n user: userReducer,\r\n searchProducts: searchProductsReducer,\r\n usersManagement: usersManagementReducer,\r\n metadataManagement: metadataManagementReducer,\r\n productDetails: productDetailsReducer,\r\n profile: profileReducer,\r\n monitoringState: monitoringReducer,\r\n appConfigurationsState: appConfigurationsReducer\r\n});","import {Action} from \"redux\";\nimport {\n UpdateMeStateAction,\n UpdateMeStateActionName,\n UpdateMeStatusAction,\n UpdateMeStatusActionName\n} from \"../action/MeAction\";\nimport {UserState} from \"../entity/state/UserState\";\nimport {initialAppState} from '../store/InitialAppState';\nimport {ToUserRole} from '../entity/UserRole';\nimport {ToggleDrawerSizeActionName} from \"../action/ToggleDrawerSizeAction\";\nimport {\n UpdateLoginStateAction,\n UpdateLoginStateActionName,\n UpdateLoginStatusAction,\n UpdateLoginStatusActionName\n} from \"../action/LoginAction\";\nimport {SessionStorage} from \"../book/SessionStorage\";\nimport {SessionStorageKey} from \"../book/SessionStorageKey\";\nimport {ResetUserStateActionName} from \"../action/ResetUserStateAction\";\n\nexport const userReducer = (state: UserState = initialAppState.user, a: Action): UserState => {\n switch (a.type) {\n case UpdateMeStatusActionName:\n const updateMeStatusAction = a as UpdateMeStatusAction;\n return {\n ...state,\n meStatus: updateMeStatusAction.status\n };\n case UpdateMeStateActionName:\n const updateMeStateAction = a as UpdateMeStateAction;\n return {\n ...state,\n username: updateMeStateAction.username,\n role: ToUserRole(updateMeStateAction.role),\n meStatus: updateMeStateAction.status\n };\n case ToggleDrawerSizeActionName:\n return {\n ...state,\n expandedMenu: !state.expandedMenu\n };\n case UpdateLoginStatusActionName:\n const updateLoginStatusAction = a as UpdateLoginStatusAction;\n return {...state, loginStatus: updateLoginStatusAction.loginStatus};\n case UpdateLoginStateActionName:\n const updateLoginStateAction = a as UpdateLoginStateAction;\n\n SessionStorage.setInt(SessionStorageKey.expiredAt, updateLoginStateAction.expiredAt);\n SessionStorage.setString(SessionStorageKey.token, updateLoginStateAction.token);\n\n return {\n ...state,\n expiredAt: updateLoginStateAction.expiredAt,\n token: updateLoginStateAction.token,\n loginStatus:updateLoginStateAction.loginStatus\n };\n case ResetUserStateActionName:\n SessionStorage.removeItem(SessionStorageKey.expiredAt);\n SessionStorage.removeItem(SessionStorageKey.token);\n\n return initialAppState.user;\n }\n\n return state;\n}","import {Action} from \"redux\";\r\nimport {SearchProductsState} from \"../entity/state/SearchProductsState\";\r\nimport {initialAppState} from \"../store/InitialAppState\";\r\nimport {\r\n UpdateSearchProductsStateAction,\r\n UpdateSearchProductsStateActionName,\r\n UpdateSearchProductsStatusAction,\r\n UpdateSearchProductsStatusActionName\r\n} from \"../action/SearchProductsAction\";\r\nimport {\r\n UpdateFiltersStateAction,\r\n UpdateFiltersStateActionName, UpdateFiltersStatusAction,\r\n UpdateFiltersStatusActionName\r\n} from \"../action/SearchProductPropertyFiltersAction\";\r\nimport {UpdateDeleteProductStatusAction, UpdateDeleteProductStatusActionName} from \"../action/DeleteProductAction\";\r\nimport {UpdateExportProductStatusAction, UpdateExportProductStatusActionName} from \"../action/ExportProductsAction\";\r\nimport {\r\n SetSearchProductsPaginationAction,\r\n SetSearchProductsPaginationActionName\r\n} from \"../action/SetSearchProductsPaginationAction\";\r\nimport {\r\n SetSearchProductsFiltersAction,\r\n SetSearchProductsFiltersActionName\r\n} from \"../action/SetSearchProductsFiltersAction\";\r\n\r\nexport const searchProductsReducer = (state: SearchProductsState = initialAppState.searchProducts, a: Action): SearchProductsState => {\r\n switch (a.type) {\r\n case UpdateFiltersStatusActionName:\r\n const updateSearchProductMetadataStatusAction = a as UpdateFiltersStatusAction;\r\n const newMetadataStatus = {...state.filterValuesStatus};\r\n\r\n newMetadataStatus[updateSearchProductMetadataStatusAction.category] = updateSearchProductMetadataStatusAction.status\r\n return {\r\n ...state,\r\n filterValuesStatus: newMetadataStatus\r\n } as SearchProductsState;\r\n case UpdateFiltersStateActionName:\r\n const updateSearchProductMetadataStateAction = a as UpdateFiltersStateAction;\r\n const newMetadata = {...state.filterValues};\r\n const newMetadataStatus01 = {...state.filterValuesStatus};\r\n\r\n newMetadata[updateSearchProductMetadataStateAction.category] = updateSearchProductMetadataStateAction.filters\r\n newMetadataStatus01[updateSearchProductMetadataStateAction.category] = updateSearchProductMetadataStateAction.status\r\n\r\n return {\r\n ...state,\r\n filterValues: newMetadata,\r\n filterValuesStatus: newMetadataStatus01\r\n } as SearchProductsState;\r\n case UpdateSearchProductsStatusActionName:\r\n return {\r\n ...state,\r\n status: (a as UpdateSearchProductsStatusAction).status\r\n };\r\n case UpdateSearchProductsStateActionName:\r\n const updateSearchProductsStateAction = a as UpdateSearchProductsStateAction;\r\n return {\r\n ...state,\r\n count: updateSearchProductsStateAction.count,\r\n productsFound: updateSearchProductsStateAction.foundProducts,\r\n executionTime: updateSearchProductsStateAction.executionTime,\r\n status: updateSearchProductsStateAction.status\r\n };\r\n case UpdateDeleteProductStatusActionName:\r\n return {\r\n ...state,\r\n deleteStatus: (a as UpdateDeleteProductStatusAction).status\r\n };\r\n case UpdateExportProductStatusActionName:\r\n return {\r\n ...state,\r\n exportStatus: (a as UpdateExportProductStatusAction).status\r\n };\r\n case SetSearchProductsPaginationActionName:\r\n const updateSearchProductsPaginationAction = a as SetSearchProductsPaginationAction;\r\n return {\r\n ...state,\r\n pagination: {\r\n pageSize: updateSearchProductsPaginationAction.pageSize,\r\n currentPage: updateSearchProductsPaginationAction.currentPage\r\n }\r\n }\r\n case SetSearchProductsFiltersActionName:\r\n const setSearchProductsFiltersAction = a as SetSearchProductsFiltersAction;\r\n return {\r\n ...state,\r\n filters: {\r\n search: setSearchProductsFiltersAction.search,\r\n selectedFilterValues: setSearchProductsFiltersAction.selectedFilterValues,\r\n releaseType: setSearchProductsFiltersAction.releaseType\r\n }\r\n };\r\n }\r\n\r\n return state;\r\n}","import { Action } from \"redux\";\r\nimport { UpdateDeleteUserStatusAction, UpdateDeleteUserStatusActionName } from \"../action/DeleteUserAction\";\r\nimport { UpdateUsersStateAction, UpdateUsersStateActionName, UpdateUsersStatusAction, UpdateUsersStatusActionName } from \"../action/SearchUsersAction\";\r\nimport { SetUpdateUserStatusAction, SetUpdateUserStatusActionName } from \"../action/UpdateUserAction\";\r\nimport { UsersManagementState } from \"../entity/state/UsersManagementState\";\r\nimport { initialAppState } from \"../store/InitialAppState\";\r\n\r\nexport const usersManagementReducer = (state: UsersManagementState = initialAppState.usersManagement, a: Action): UsersManagementState => {\r\n switch (a.type) {\r\n case UpdateUsersStatusActionName:\r\n const updateUsersStatusAction = a as UpdateUsersStatusAction;\r\n return {\r\n ...state,\r\n status: updateUsersStatusAction.status\r\n } as UsersManagementState;\r\n case UpdateUsersStateActionName:\r\n const updateUsersManagementStateAction = a as UpdateUsersStateAction;\r\n return {\r\n ...state,\r\n users: updateUsersManagementStateAction.users,\r\n count: updateUsersManagementStateAction.count,\r\n status: updateUsersManagementStateAction.status\r\n } as UsersManagementState;\r\n case SetUpdateUserStatusActionName:\r\n return {\r\n ...state,\r\n updateStatus: (a as SetUpdateUserStatusAction).status\r\n };\r\n case UpdateDeleteUserStatusActionName:\r\n return {\r\n ...state,\r\n deleteStatus: (a as UpdateDeleteUserStatusAction).status\r\n };\r\n }\r\n\r\n return state;\r\n}","import {Action} from \"redux\";\r\nimport {SetDeleteMetadataStatusAction, SetDeleteMetadataStatusActionName} from \"../action/DeleteMetadataAction\";\r\nimport {\r\n SetMetadataStateAction,\r\n SetMetadataStateActionName,\r\n SetMetadataStatusAction,\r\n SetMetadataStatusActionName\r\n} from \"../action/SearchMetadataAction\";\r\nimport {\r\n SetMetadataCategoryStateAction,\r\n SetMetadataCategoryStateActionName,\r\n SetMetadataCategoryStatusAction,\r\n SetMetadataCategoryStatusActionName\r\n} from \"../action/SearchMetadataCategoryAction\";\r\nimport {SetUpdateMetadataStatusAction, SetUpdateMetadataStatusActionName} from \"../action/UpdateMetadataAction\";\r\nimport {MetadataManagementState} from \"../entity/state/MetadataManagementState\";\r\nimport {initialAppState} from \"../store/InitialAppState\";\r\nimport {ProcessStatus} from \"../entity/ProcessStatus\";\r\n\r\nexport const metadataManagementReducer = (state: MetadataManagementState = initialAppState.metadataManagement, a: Action): MetadataManagementState => {\r\n switch (a.type) {\r\n case SetMetadataCategoryStatusActionName:\r\n const updateMetadataManagementCategoryStatusAction = a as SetMetadataCategoryStatusAction;\r\n\r\n return {\r\n ...state,\r\n metadataCategoriesStatus: updateMetadataManagementCategoryStatusAction.status\r\n } as MetadataManagementState;\r\n case SetMetadataCategoryStateActionName:\r\n const updateMetadataCategoryStateAction = a as SetMetadataCategoryStateAction;\r\n\r\n return {\r\n ...state,\r\n metadataCategories: updateMetadataCategoryStateAction.metadataCategories,\r\n metadataCategoriesStatus: updateMetadataCategoryStateAction.status\r\n } as MetadataManagementState;\r\n case SetMetadataStatusActionName:\r\n const updateMetadataStatusAction = a as SetMetadataStatusAction;\r\n const newMetadataStatus = {...state.metadataStatus};\r\n\r\n newMetadataStatus[updateMetadataStatusAction.category] = updateMetadataStatusAction.status\r\n return {\r\n ...state,\r\n metadataStatus: newMetadataStatus\r\n } as MetadataManagementState;\r\n case SetMetadataStateActionName:\r\n const updateMetadataManagementStateAction = a as SetMetadataStateAction;\r\n const newMetadata = {...state.metadata};\r\n const newCount = {...state.count};\r\n const newMetadataStatus01 = {...state.metadataStatus};\r\n\r\n newMetadata[updateMetadataManagementStateAction.category] = updateMetadataManagementStateAction.metadata\r\n newCount[updateMetadataManagementStateAction.category] = updateMetadataManagementStateAction.count\r\n newMetadataStatus01[updateMetadataManagementStateAction.category] = updateMetadataManagementStateAction.status\r\n\r\n return {\r\n ...state,\r\n metadata: newMetadata,\r\n count: newCount,\r\n metadataStatus: newMetadataStatus01\r\n } as MetadataManagementState;\r\n case SetUpdateMetadataStatusActionName:\r\n const setUpdateMetadataStatusAction = a as SetUpdateMetadataStatusAction;\r\n const newState01 = setUpdateMetadataStatusAction.status === ProcessStatus.Success ? initialAppState.metadataManagement : state;\r\n return {\r\n ...newState01,\r\n updateStatus: setUpdateMetadataStatusAction.status,\r\n };\r\n case SetDeleteMetadataStatusActionName:\r\n const setDeleteMetadataStatusAction = a as SetDeleteMetadataStatusAction;\r\n const newState02 = setDeleteMetadataStatusAction.status === ProcessStatus.Success ? initialAppState.metadataManagement : state;\r\n return {\r\n ...newState02,\r\n deleteStatus: setDeleteMetadataStatusAction.status\r\n };\r\n }\r\n\r\n return state;\r\n}","import {Action} from \"redux\";\r\nimport {\r\n UpdateGetProductStateAction,\r\n UpdateGetProductStateActionName,\r\n UpdateGetProductStatusAction,\r\n UpdateGetProductStatusActionName\r\n} from \"../action/GetProductAction\";\r\nimport {initialAppState} from \"../store/InitialAppState\";\r\nimport {ProductDetailsState} from '../entity/state/ProductDetailsState';\r\n\r\nexport const productDetailsReducer = (state: ProductDetailsState = initialAppState.productDetails, a: Action): ProductDetailsState => {\r\n switch (a.type) {\r\n case UpdateGetProductStatusActionName:\r\n return {\r\n ...state,\r\n status: (a as UpdateGetProductStatusAction).status\r\n };\r\n case UpdateGetProductStateActionName:\r\n const updateSearchProductsStateAction = a as UpdateGetProductStateAction;\r\n return {\r\n ...state,\r\n product: updateSearchProductsStateAction.product,\r\n status: updateSearchProductsStateAction.status\r\n };\r\n }\r\n\r\n return state;\r\n}","import {Action} from \"redux\";\nimport {initialAppState} from '../store/InitialAppState';\nimport {SetUpdateMeStatusAction, SetUpdateMeStatusActionName} from \"../action/UpdateMeAction\";\nimport {ProfileState} from \"../entity/state/ProfileState\";\n\nexport const profileReducer = (state: ProfileState = initialAppState.profile, a: Action): ProfileState => {\n switch (a.type) {\n case SetUpdateMeStatusActionName:\n const setUpdateMeStatusAction = a as SetUpdateMeStatusAction;\n return {\n ...state,\n updateMeStatus: setUpdateMeStatusAction.status\n };\n }\n\n return state;\n}","import {initialAppState} from \"../store/InitialAppState\";\nimport {Action} from \"redux\";\nimport {MonitoringState} from \"../entity/state/MonitoringState\";\nimport {\n SetMonitoringProductPropertyCategoryChartStateAction,\n SetMonitoringProductPropertyCategoryChartStateActionName,\n SetMonitoringProductPropertyCategoryChartStatusAction,\n SetMonitoringProductPropertyCategoryChartStatusActionName\n} from \"../action/MonitoringProductPropertyCategoryChartAction\";\nimport {\n SetMonitoringProductMonthChartStateAction,\n SetMonitoringProductMonthChartStateActionName,\n SetMonitoringProductMonthChartStatusAction,\n SetMonitoringProductMonthChartStatusActionName\n} from \"../action/MonitoringProductMonthChartAction\";\n\nexport const monitoringReducer = (state: MonitoringState = initialAppState.monitoringState, a: Action): MonitoringState => {\n switch (a.type) {\n case SetMonitoringProductPropertyCategoryChartStatusActionName:\n const setMonitoringStatusAction = a as SetMonitoringProductPropertyCategoryChartStatusAction;\n const newMetadataStatus = {...state.productPropertyCategoryStatus};\n\n newMetadataStatus[setMonitoringStatusAction.category] = setMonitoringStatusAction.status\n return {\n ...state,\n productPropertyCategoryStatus: newMetadataStatus\n } as MonitoringState;\n case SetMonitoringProductPropertyCategoryChartStateActionName:\n const setMonitoringStateAction = a as SetMonitoringProductPropertyCategoryChartStateAction;\n const newMetadata = {...state.productPropertyCategoryData};\n const newMetadataStatus01 = {...state.productPropertyCategoryStatus};\n\n newMetadata[setMonitoringStateAction.category] = setMonitoringStateAction.items;\n newMetadataStatus01[setMonitoringStateAction.category] = setMonitoringStateAction.status\n\n return {\n ...state,\n productPropertyCategoryData: newMetadata,\n productPropertyCategoryStatus: newMetadataStatus01\n } as MonitoringState;\n\n case SetMonitoringProductMonthChartStatusActionName:\n const setMonitoringProductMonthChartStatusAction = a as SetMonitoringProductMonthChartStatusAction;\n\n return {\n ...state,\n productMonthStatus: setMonitoringProductMonthChartStatusAction.status\n } as MonitoringState;\n case SetMonitoringProductMonthChartStateActionName:\n const setMonitoringProductMonthChartStateAction = a as SetMonitoringProductMonthChartStateAction;\n\n return {\n ...state,\n productMonthData: setMonitoringProductMonthChartStateAction.items,\n productMonthStatus: setMonitoringProductMonthChartStateAction.status\n } as MonitoringState;\n\n }\n\n return state;\n}","import {initialAppState} from \"../store/InitialAppState\";\nimport {Action} from \"redux\";\nimport {AppConfigurationsState} from \"../entity/state/AppConfigurationsState\";\nimport {\n SetUpdateAppConfigurationStatusAction,\n SetUpdateAppConfigurationStatusActionName\n} from \"../action/UpdateAppConfigurationsAction\";\nimport {\n SetAppConfigurationStateAction,\n SetAppConfigurationStateActionName, SetAppConfigurationStatusAction, SetAppConfigurationStatusActionName\n} from \"../action/SearchAppConfigurationsAction\";\n\nexport const appConfigurationsReducer = (state: AppConfigurationsState = initialAppState.appConfigurationsState, a: Action): AppConfigurationsState => {\n switch (a.type) {\n case SetUpdateAppConfigurationStatusActionName:\n return {\n ...state,\n updateAppConfigurationStatus: (a as SetUpdateAppConfigurationStatusAction).status\n }\n case SetAppConfigurationStateActionName:\n return {\n ...state,\n configurations: (a as SetAppConfigurationStateAction).configurations,\n appConfigurationsStatus: (a as SetAppConfigurationStateAction).status\n }\n case SetAppConfigurationStatusActionName:\n return {\n ...state,\n appConfigurationsStatus: (a as SetAppConfigurationStatusAction).status\n }\n }\n\n return state;\n}","import { applyMiddleware, compose, createStore, Store } from \"redux\";\r\nimport { AppState } from \"../entity/state/AppState\";\r\nimport { appReducer } from \"../reducer/AppReducer\";\r\nimport { initialAppState } from \"./InitialAppState\";\r\nimport thunk from 'redux-thunk';\r\n\r\nconst devToolsExtension = (window as any).__REDUX_DEVTOOLS_EXTENSION__ as any;\r\n\r\nexport const appStore: Store = createStore(\r\n appReducer,\r\n initialAppState,\r\n compose(\r\n applyMiddleware(thunk),\r\n devToolsExtension ? devToolsExtension() : (f: any) => f\r\n )\r\n);","import i18n from \"i18next\";\nimport Backend from \"i18next-http-backend\";\nimport LanguageDetector from \"i18next-browser-languagedetector\";\nimport { initReactI18next } from \"react-i18next\";\nimport { v4 as uuidv4 } from 'uuid';\n\ni18n\n .use(Backend)\n .use(LanguageDetector)\n .use(initReactI18next)\n .init({\n fallbackLng: 'en',\n debug: false,\n\n backend: {\n loadPath: `./{{lng}}.json?dc=${uuidv4()}`\n },\n });\n\nexport default i18n;\n","export default __webpack_public_path__ + \"static/media/CarelLogo.510685c7.svg\";","import createStyles from '@material-ui/core/styles/createStyles';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\nimport {FunctionComponent} from 'react';\nimport CarelLogo from \"../../../image/CarelLogo.svg\";\n\nconst useStyles = makeStyles(_ => createStyles({\n logo: {\n marginRight: '13px'\n }\n}));\n\nexport const CarelImage: FunctionComponent = _ => {\n const classes = useStyles();\n\n return \"CAREL;\n};\n\nexport interface CarelLogoProps {\n}\n","import React, {FunctionComponent} from \"react\";\nimport Paper from \"@material-ui/core/Paper\";\nimport {Loading} from \"./Loading\";\nimport makeStyles from \"@material-ui/core/styles/makeStyles\";\nimport createStyles from \"@material-ui/core/styles/createStyles\";\nimport Toolbar from \"@material-ui/core/Toolbar/Toolbar\";\nimport AppBar from \"@material-ui/core/AppBar/AppBar\";\nimport {CarelImage} from \"../carellogo/CarelImage\";\n\nexport const useStyles = makeStyles(theme => createStyles({\n loader: {\n margin: \"0px auto\",\n marginTop: \"80px\",\n paddingTop: theme.spacing() * 2,\n paddingBottom: theme.spacing() * 2,\n width: \"90%\",\n maxWidth: \"600px\",\n overflow: \"hidden\",\n textAlign: 'center'\n },\n loading: {\n marginTop: '20px'\n }\n}));\n\nexport const SplashScreen: FunctionComponent = () => {\n const classes = useStyles();\n\n return
\n \n \n \n \n \n \n \"Carel\n \n \n
;\n};","import {createTheme, ThemeProvider} from '@material-ui/core/styles';\nimport ReactDOM from 'react-dom';\nimport {Provider} from 'react-redux';\nimport {RoutingContainer} from './component/routing/RoutingContainer';\nimport './index.css';\nimport {appStore} from './store/AppStore';\nimport {I18nextProvider} from \"react-i18next\";\nimport i18n from \"./book/i18n\";\nimport React from 'react';\nimport {Suspense} from 'react';\nimport {SplashScreen} from \"./component/common/loading/SplashScreen\";\n\nconst theme = createTheme({\n palette: {\n primary: {\n main: '#FE0000',\n },\n secondary: {\n main: '#FE0000',\n },\n },\n});\n\nReactDOM.render(\n \n \n }>\n \n \n \n \n \n ,\n document.getElementById('root')\n);","export enum ProcessStatus {\r\n InProgress, // 0\r\n None, // 1\r\n Error, // 2\r\n Success, // 3\r\n}","import {Action} from \"redux\";\n\nexport const ResetUserStateActionName = 'ResetUserStateAction';\n\nexport interface ResetUserStateAction extends Action { }\n\nexport const resetUserStateBuilder = (): ResetUserStateAction => ({\n type: ResetUserStateActionName\n});","export class SessionStorage {\n public static getBoolean = (key: string, defaultValue: boolean | null = null): boolean | null => {\n const value = sessionStorage.getItem(key);\n if (value === null) {\n return defaultValue;\n }\n\n return value === true.toString();\n }\n\n public static getInt = (key: string, defaultValue: number | null = null): number | null => {\n const value = sessionStorage.getItem(key);\n if (value === null) {\n return defaultValue;\n }\n\n return parseInt(value);\n }\n\n public static getFloat = (key: string, defaultValue: number | null = null): number | null => {\n const value = sessionStorage.getItem(key);\n if (value === null) {\n return defaultValue;\n }\n\n return parseFloat(value);\n }\n\n public static getString = (key: string, defaultValue: string | null = null): string | null => sessionStorage.getItem(key) ?? defaultValue;\n\n public static setInt = (key: string, value: number) => sessionStorage.setItem(key, value.toString());\n\n public static setFloat = (key: string, value: number) => sessionStorage.setItem(key, value.toString());\n\n public static setBoolean = (key: string, value: boolean) => sessionStorage.setItem(key, value.toString());\n\n public static setString = (key: string, value: string) => sessionStorage.setItem(key, value);\n\n public static clear = () => sessionStorage.clear();\n\n public static removeItem = (key: string) => sessionStorage.removeItem(key);\n}","export const SessionStorageKey = {\n expiredAt: 'gt-expiredAt',\n token: 'gt-token',\n expandedFilter: 'gt-expandedFilter'\n};","export const AppError = {\r\n InvalidToken: 1020,\r\n ExpiredToken: 1036,\r\n UNAUTHORIZED: 401\r\n};","export const UserRole = {\r\n Unknown: -1,\r\n User: 10,\r\n Dev: 20,\r\n SuperUser: 30,\r\n Admin: 40,\r\n};\r\n\r\nconst UserRoleMap: { [key: string]: number } = {\r\n 'User': UserRole.User,\r\n 'Dev': UserRole.Dev,\r\n 'SuperUser': UserRole.SuperUser,\r\n 'Admin': UserRole.Admin,\r\n};\r\n\r\nexport const UserRoleAdmin = 'Admin';\r\n\r\nexport const ToUserRole = (role: string | null): number => {\r\n return role ? UserRoleMap[role] as number : UserRole.Unknown;\r\n}\r\n\r\nexport const ToUserRoleName = (role: number): string => {\r\n switch(role){\r\n case UserRole.User: return \"User\";\r\n case UserRole.Dev: return \"Dev\";\r\n case UserRole.SuperUser: return \"Super user\";\r\n case UserRole.Admin: return \"Admin\";\r\n default: return \"Boh!\";\r\n }\r\n}","import CircularProgress from \"@material-ui/core/CircularProgress/CircularProgress\";\r\nimport createStyles from \"@material-ui/core/styles/createStyles\";\r\nimport makeStyles from \"@material-ui/core/styles/makeStyles\";\r\nimport React, { FunctionComponent } from \"react\";\r\n\r\nconst useStyles = makeStyles(() => createStyles({\r\n loading: {\r\n margin: '0 auto',\r\n textAlign: 'center',\r\n maxWidth: '300px',\r\n\r\n '& .progress': {\r\n verticalAlign: 'middle',\r\n display: 'inline-block',\r\n marginRight: '15px'\r\n }\r\n },\r\n}));\r\n\r\nexport const Loading: FunctionComponent = props => {\r\n const classes = useStyles();\r\n\r\n return
\r\n \r\n {props.message}\r\n
;\r\n}\r\n\r\nLoading.defaultProps = {\r\n message: 'Loading…'\r\n};\r\n\r\nexport interface LoadingProps {\r\n message?: string;\r\n className?: string;\r\n circularProgressSize?: string | number;\r\n}"],"sourceRoot":""}