{"version":3,"sources":["models/Catalog.ts","i18n.js","components/layout/XPaper.tsx","models/Organization.ts","components/layout/XRow.tsx","store/layout/actions.ts","components/layout/XActionButton.tsx","helpers/actionHelpers.ts","helpers/apiClient.ts","helpers/errorMap.ts","components/layout/XContainer.tsx","store/organizations/actions.ts","components/layout/XPageContent.tsx","components/shared/XCounter.tsx","components/layout/XPaperHeader.tsx","helpers/formatHelpers.ts","store/catalogs/actions.ts","components/shared/ErrorBoundary.tsx","pages/myltx/AccountPage.tsx","components/layout/XImage.tsx","components/layout/XTable.tsx","store/organizations/types.ts","components/layout/XScrollView.tsx","components/domain/XNoContent.tsx","store/catalogs/api.ts","components/layout/XButton.tsx","helpers/avatarGenerator.ts","store/catalogs/types.ts","components/layout/XForm.tsx","store/organizations/api.ts","store/accounts/types.ts","components/layout/XPagination.tsx","store/accounts/api.ts","store/accounts/actions.ts","components/layout/XSearchBar.tsx","components/layout/XFilterBar.tsx","components/layout/XActionStrip.tsx","components/layout/XFormButtons.tsx","components/shared/XPageRouter.tsx","components/layout/XField.tsx","constants/ApiRoutes.ts","store/layout/types.ts","store/stocks/types.ts","store/requests/api.ts","store/requests/actions.ts","store/requests/types.ts","components/layout/XPopup.tsx","style/images/logos/main.svg","components/layout/XGrid.tsx","store/software/api.ts","store/software/actions.ts","constants/Catalog.ts","store/messages/types.ts","style/MediaQueries.ts","constants/OrganizationInterface/OrganizationInterfaces.ts","style/images/empty.svg","components/shared/XGoBack.tsx","components/domain/XErrorContent.tsx","components/domain/XCatalogLarge.tsx","components/domain/XCatalogSmall.tsx","components/domain/XCatalog.tsx","components/layout/XPanel.tsx","components/layout/XSideBar.tsx","style/images/empty-canvas.svg","constants/Countries.ts","components/layout/XImageEditor.tsx","components/layout/XNavigation.tsx","store/requests/selectors.ts","components/domain/XOrganizationTitle.tsx","components/domain/XCatalogRow.tsx","pages/system/NotFoundCard.tsx","store/authentication/types.ts","components/layout/XCheckbox.tsx","store/messages/api.ts","store/messages/actions.ts","components/layout/XDatePicker.tsx","constants/OrganizationInterface/InterfaceSetting.ts","pages/index/pages/images/svg/arxisdef.svg","pages/myltx/software/InterfaceCard.tsx","components/layout/XBadge.tsx","store/software/types.ts","store/organizationgroups/types.ts","store/data/types.ts","store/language/types.ts","store/purchase-order/types.ts","style/images/empty-clipboard.svg","pages/myltx/account/AccountDetails.tsx","store/authentication/api.ts","store/authentication/actions.ts","components/layout/XToast.tsx","store/data/api.ts","components/domain/XOrganizationDetail.tsx","pages/shared/ShowCatalogPage.tsx","style/Style.ts","pages/index/pages/AppLoadingPage.tsx","style/images/background.jpg","constants/OrganizationReadinessStatus.ts","store/subscriptions/types.ts","constants/OrganizationIdentifierType.ts","pages/system/NotFoundPage.tsx","components/layout/XFooter.tsx","components/layout/XConfirmation.tsx","components/layout/XList.tsx","pages/index/pages/images/svg/illustration/informatief_verticaal_en.svg","pages/index/pages/images/svg/illustration/informatief_verticaal_nl.svg","pages/index/pages/images/svg/add.svg","pages/index/pages/images/svg/check.svg","pages/index/pages/images/svg/1_word lid.svg","pages/index/pages/images/svg/2_maak connectie.svg","store/language/actions.ts","store/catalogs/selectors.ts","components/shared/XNavigationBar.tsx","containers/PortalLayout.tsx","containers/PublicLayout.tsx","components/layout/XSmallButton.tsx","pages/catalogs/CatalogsPage.tsx","pages/catalogs/CatalogsRouter.tsx","components/layout/XSelectItem.tsx","components/domain/XOrganizationAddress.tsx","components/domain/XRetailerDetails.tsx","components/domain/XSupplierDetails.tsx","pages/shared/ShowOrganizationPage.tsx","components/layout/XSubscriptionUpgradeModal.tsx","pages/connections/OrganizationsPage.tsx","pages/connections/ConnectionsRouter.tsx","pages/shared/ShowStockPage.tsx","components/domain/XStockLarge.tsx","components/domain/XStockSmall.tsx","components/domain/XStock.tsx","store/stocks/api.ts","store/stocks/actions.ts","pages/stock/StocksPage.tsx","pages/stock/StocksRouter.tsx","pages/explore/ExploreRouter.tsx","pages/index/pages/ContactPage.tsx","pages/index/components/LTXUsers.tsx","pages/index/components/LTXfaq.tsx","pages/index/pages/HomePage.tsx","pages/index/pages/DomainRedirectPage.tsx","pages/index/IndexPage.tsx","pages/index/leadinfo.js","pages/login/LoginPage.style.tsx","components/domain/XLTXInformation.tsx","pages/login/LoginPage.tsx","pages/login/LogoutPage.tsx","components/domain/XOrganizationRow.tsx","components/layout/XDragAndDropFileUpload.tsx","components/domain/XOrganizationSelectPopup.tsx","components/domain/XMappingRow.tsx","components/domain/XCSVMapping.tsx","components/domain/XCatalogCSVModel.tsx","models/Stock.ts","pages/myltx/catalogs/CatalogPage.tsx","components/domain/XStockCSVMapping.tsx","components/domain/XStockCSVModel.tsx","pages/myltx/stock/StockPage.tsx","pages/myltx/catalogs/CatalogsPageRetailer.tsx","pages/myltx/catalogs/CatalogsPageSupplier.tsx","pages/myltx/stock/StockPageRetailer.tsx","components/domain/XStockRow.tsx","pages/myltx/stock/StockPageSupplier.tsx","pages/myltx/connections/ConnectionPage.tsx","store/organizationgroups/api.ts","store/organizationgroups/actions.ts","store/data/actions.ts","pages/myltx/connections/ConnectionsPage.tsx","components/domain/XRequestRow.tsx","components/layout/XInboxOutboxButtons.tsx","pages/myltx/connections/ConnectRequestsPage.tsx","pages/myltx/addCatalogWizard/WizardAccessPage.tsx","components/layout/XFileSelectButton.tsx","pages/myltx/addCatalogWizard/WizardBasicPage.tsx","pages/myltx/addCatalogWizard/WizardFilePage.tsx","pages/myltx/addCatalogWizard/WizardResultPage.tsx","components/domain/XTableViewerPopup.tsx","pages/myltx/addCatalogWizard/WizardValidationPage.tsx","pages/myltx/addCatalogWizard/WizardRouter.tsx","pages/myltx/addCatalogWizard/WizardValidationRouter.tsx","pages/myltx/addNewCatalog/uploadTypes/SpecificInterfaceMethod.tsx","pages/myltx/addNewCatalog/CatalogInterface.tsx","components/domain/XFileFormatSelect.tsx","pages/myltx/addNewCatalog/AddNewCatalogPage.tsx","pages/myltx/addNewCatalog/uploadTypes/FTPInterfaceMethod.tsx","pages/myltx/addNewCatalog/uploadTypes/SFTPInterfaceMethod.tsx","pages/myltx/addNewCatalog/uploadTypes/ManualInterfaceMethod.tsx","pages/myltx/addNewCatalog/uploadTypes/ApiInterfaceMethod.tsx","pages/myltx/addNewCatalog/uploadTypes/DeEekhoornApiInterfaceMethod.tsx","pages/myltx/addNewCatalog/uploadTypes/ItsPerfectApiInterfaceMethod.tsx","pages/myltx/addNewCatalog/uploadTypes/VertilinQInterfaceMethod.tsx","pages/myltx/addNewCatalog/uploadTypes/IMSInterfaceMethod.tsx","pages/myltx/addNewCatalog/uploadTypes/LighAndLivingInterfaceMethod.tsx","pages/myltx/addNewCatalog/uploadTypes/CustomInterfaceMethod.tsx","pages/myltx/addNewCatalog/EditInterfacePage.tsx","pages/myltx/convertCatalogWizard/WizardConvertInputPage.tsx","pages/myltx/convertCatalogWizard/WizardConvertOutputPage.tsx","pages/myltx/convertCatalogWizard/WizardConvertRouter.tsx","pages/myltx/software/SoftwareInterfacePage.tsx","pages/myltx/stock/addStock/uploadStockTypes/SpecificInterfaceMethod.tsx","pages/myltx/stock/addStock/StockInterface.tsx","pages/myltx/stock/addStock/AddStockPage.tsx","pages/myltx/stock/addStock/uploadStockTypes/FTPInterfaceMethod.tsx","pages/myltx/stock/addStock/uploadStockTypes/ApiInterfaceMethod.tsx","pages/myltx/stock/addStock/uploadStockTypes/DeEekhoornApiInterfaceMethod.tsx","pages/myltx/stock/addStock/uploadStockTypes/ItsPerfectApiInterfaceMethod.tsx","pages/myltx/stock/addStock/uploadStockTypes/VertilinQApiInterfaceMethod.tsx","pages/myltx/stock/addStock/uploadStockTypes/LightAndLivingInterfaceMethod.tsx","pages/myltx/stock/addStock/uploadStockTypes/DtpApiInterfaceMethod.tsx","pages/myltx/stock/addStock/uploadStockTypes/CustomInterfaceMethod.tsx","pages/myltx/stock/addStock/EditStockInterfacePage.tsx","pages/myltx/catalogs/CatalogsTrafficPage.tsx","pages/myltx/orders/OrdersTrafficPage.tsx","pages/myltx/catalogs/CatalogsSettingsPage.tsx","pages/myltx/orders/OrdersSettingsPage.tsx","pages/myltx/stock/StockTrafficPage.tsx","pages/myltx/orders/SentOrderPreviewPage.tsx","pages/myltx/MyLtxRouter.tsx","pages/myltx/MyLtxSideBar.tsx","pages/myltx/account/OrganizationDetails.tsx","pages/myltx/OrganizationPage.tsx","components/layout/XRadioButton.tsx","components/layout/XSwitch.tsx","pages/myltx/account/AccountSettings.tsx","pages/myltx/SettingsPage.tsx","components/domain/XSoftwareSelect.tsx","pages/myltx/software/SoftwarePage.tsx","pages/myltx/subscriptions/SubscriptionCard.tsx","pages/myltx/SubscriptionsPage.tsx","pages/myltx/MyAccountRouter.tsx","pages/myltx/MyAccountSideBar.tsx","pages/register/ConfirmationPage.tsx","components/layout/XPage.tsx","pages/register/RegisterAccountPage.tsx","store/accounts/selectors.ts","pages/register/RegisterAdditionalInformationPage.tsx","pages/register/RegisterOrganizationPage.tsx","pages/register/RegisterRouter.tsx","pages/register/ConfirmationEmailSentPage.tsx","pages/register/PasswordForgottenPage.tsx","pages/register/ResetPasswordPage.tsx","pages/system/ErrorPage.tsx","store/messages/selectors.ts","pages/validation/ValidationPage.tsx","pages/validation/ValidationRouter.tsx","pages/validation/ValidationSideBar.tsx","purchase-order-module/OrdersApp.tsx","purchase-order-module/OrdersSideBar.tsx","pages/Routes.tsx","style/images/icons/Search.svg","style/images/icons/User.svg","style/images/icons/Share.svg","style/images/icons/PO.svg","style/images/error-broken.svg","style/images/error.svg","pages/index/pages/images/svg/ltx-logo.svg","style/images/icons/setting.svg","style/images/icons/user-plus.svg","style/images/icons/message.svg","style/images/icons/clipboard-notes.svg","style/images/success.svg","style/images/envelope.svg","style/images/404.svg","pages/index/locales/icons/en.svg","pages/index/locales/icons/nl.svg","pages/index/pages/images/location.svg","pages/index/pages/images/email.svg","pages/index/pages/images/phone.svg","pages/index/pages/images/users/DeEekhoorn.jpg","pages/index/pages/images/users/Artex.png","pages/index/pages/images/users/cotap.png","pages/index/pages/images/users/VanDyck.png","pages/index/pages/images/users/logo-eijerkamp.jpg","pages/index/pages/images/users/Maxfurn.png","pages/index/pages/images/users/Bopita.png","pages/index/pages/images/users/Gero wonen.jpg","pages/index/pages/images/users/Livingfurn.jpg","pages/index/pages/images/users/Feelings.png","pages/index/pages/images/users/LS bedding.png","pages/index/pages/images/users/Groterinwonen.png","pages/index/pages/images/users/HjortKnudsen.jpg","pages/index/pages/images/users/LABEL51.png","pages/index/pages/images/users/TMCwonen.png","pages/index/pages/images/users/HKLiving.png","pages/index/pages/images/users/Woonland.png","pages/index/pages/images/users/odrada.png","pages/index/pages/images/users/presenttime.png","pages/index/pages/images/users/Jansentotaalwonen.png","pages/index/pages/images/users/perfecta-01.png","pages/index/pages/images/users/DTPInteriors.png","pages/index/pages/images/users/Lucide.png","pages/index/pages/images/users/veldeman.png","pages/index/pages/images/users/Light-living.jpg","pages/index/pages/images/users/verberckmoes.png","pages/index/pages/images/users/Bodilson.png","pages/index/pages/images/users/denouden.jpg","pages/index/pages/images/users/IMSBenelux.png","pages/index/pages/images/users/itsaboutromi.png","pages/index/pages/images/users/Kayori.png","pages/index/pages/images/users/bronsnijder.jpg","pages/index/pages/images/users/vinke_beilen.jpg","pages/index/pages/images/users/linde_wonen_slapen.jpg","pages/index/pages/images/users/korte_woonsfeer.jpg","pages/index/pages/images/users/hasker_kroon.jpg","pages/index/pages/images/users/jacobs_thuis_interieur.jpg","pages/index/pages/images/LTX-def.gif","pages/index/pages/images/svg/illustration sync /^/informatief_.*/.svg$","pages/index/pages/images/svg/illustration/informatief_en.svg","pages/index/pages/images/svg/illustration/informatief_nl.svg","pages/index/pages/images/svg/illustration sync /^/informatief_verticaal_.*/.svg$","pages/index/pages/images/Scherm-Imac.png","pages/index/pages/images/svg/verified.svg","pages/index/pages/images/svg/3_digitaal orderen.svg","pages/index/pages/images/svg/3_deel data.svg","pages/index/pages/images/kosten-LTX.png","pages/index/locales/icons sync /^/.*$","pages/index/pages/images/svg/arxis-text-white.svg","pages/login/access_denied.svg","style/images/software sync /^/.*$","style/images/software/emeubel.png","style/images/software/furncube.png","style/images/software/iONE.png","style/images/software/logictrade.svg","style/images/software/meubisol.png","style/images/software/uniliving.jpg","history.ts","helpers/baseReducer.ts","store/accounts/reducer.ts","store/authentication/reducer.ts","store/catalogs/reducer.ts","store/data/reducer.ts","store/layout/reducer.ts","store/messages/reducer.ts","store/organizationgroups/reducer.ts","store/organizations/reducer.ts","store/requests/reducer.ts","store/software/reducer.ts","store/subscriptions/reducer.ts","store/language/reducer.ts","store/stocks/reducer.ts","store/purchase-order/reducer.ts","store/index.ts","index.tsx"],"names":["InterfaceAuthentication","InterfaceUpdateInterval","InterfaceType","InterfaceMethod","InterfaceSettingsKey","PublicationStatus","ProcessingStatus","CSVMappingTypes","i18n","use","initReactI18next","LanguageDetector","init","resources","en","translation","translationEN","nl","translationNL","lng","fallbackLng","interpolation","escapeValue","XPaper","styled","backgroundColor","width","height","maxHeight","overflow","borderRadius","display","flexDirection","padding","XPaperTitle","marginLeft","marginRight","fontWeight","XPaperSubtitle","div","XPaperTitleLarge","fontSize","XPaperContent","flex","overflowY","XPaperText","XPaperLabel","marginBottom","XPaperContainer","borderTopLeftRadius","borderBottomLeftRadius","XPaperCenter","props","PaperCenterWrapper","PaperCenter","style","undefined","goBack","GoBackButton","onClick","className","verticalAlign","t","children","margin","color","paddingLeft","paddingBottom","cursor","opacity","ConnectionIdentifierKey","OrganizationType","ConnectStatus","OrganizationReadinessStatus","EmptyOrganization","id","email","name","houseNumber","street","postalCode","city","country","telephoneNumber","organizationType","Retailer","isAdmin","imageURL","image","description","website","softwareId","maturityStatus","connectStatus","creationDate","Date","subscriptionId","subscriptionName","numberOfLiveConnections","supportsCatalogData","Announced","supportsOrderData","supportsStockData","accountStatus","ordersTrafficCounter","EmptyOrganizationModel","organization","catalogs","stocks","identifiers","EmptyMyOrganizationModel","catalogConnections","stockConnections","organizationConnections","interfaces","settings","XRow","scale","space","vertical","XRowCell","showSnackbar","message","type","ActionTypes","SHOW_SNACKBAR","payload","show","changeView","screen","CHANGE_VIEW","showNotification","SHOW_NOTIFICATION","showConfirmation","title","onConfirm","SHOW_CONFIRMATION","hideNotification","HIDE_NOTIFICATION","hideConfirmation","HIDE_CONFIRMATION","ActionButton","XActionButton","XSecActionButton","XActionSelect","Select","XDisabledButton","XSubmitButton","Button","requestApiThunk","action","apiCall","continueWith","dispatch","a","apiResult","IsSuccess","Data","Errors","commandAction","status","errors","dontCountLoading","delayExecution","startTime","minimalTime","delegate","dif","getTime","window","setTimeout","config","onTokenExpired","postCommandAsync","command","file","postDataAsync","API_URL_COMMAND","postQueryAsync","queryName","parameters","query","QueryName","API_URL_QUERY","url","data","files","console","log","token","sessionStorage","getItem","formData","FormData","append","JSON","stringify","fetch","method","headers","Authorization","body","response","json","StatusCode","Response","JsonResponse","tokenResult","jwtDecode","time","exp","apiClient","setConfig","newConfig","mapError","error","defaultMapping","errorMappings","find","e","errorCode","errorMessage","errorMapping","XContainer","getUnconfiguredFtpOrganizationsAction","GET_UNCONFIGURED_FTP_ORGANIZATIONS","organizations","getMyOrganizationAction","GET_MY_ORGANIZATION","myOrganization","getOrganizationIdentifiersAction","GET_ORGANIZATION_IDENTIFIERS","getOrganizationAction","GET_ORGANIZATION","getOrganizationAccessTokenAction","GET_ORGANIZATION_ACCESS_TOKEN","accessToken","getManageOrganizationAction","GET_MANAGE_ORGANIZATION","getOrganizationsAction","GET_ORGANIZATIONS","getOrganizationConnectionsAction","GET_ORGANIZATION_CONNECTIONS","getConnectionIdentifiersAction","connectionIdentifiers","GET_CONNECTION_IDENTIFIERS","storeFormAction","STORE_FORM","getMyOrganizationThunk","getMyOrganization","getOrganizationIdentifiersThunk","getOrganizationIdentifiers","getOrganizationThunk","organizationId","getOrganization","getOrganizationAccessTokenThunk","generateNew","getOrganizationAccessToken","deleteOrganizationAccessTokenThunk","DELETE_ORGANIZATION_ACCESS_TOKEN","deleteOrganizationAccessToken","getManageOrganizationThunk","getManageOrganization","deleteOrganizationThunk","DELETE_ORGANIZATION","deleteOrganization","downloadCatalogThunk","catalogId","catalogVersionId","fileFormat","fileFormatVersion","CONSUME_DATA_CONNECTION","downloadCatalog","getOrganizationsThunk","listOrganizations","getOrganizationConnectionsThunk","listOrganizationConnections","getUnconfiguredFtpOrganizationsThunk","listUnconfiguredFtpOrganizations","editOrganizationThunk","editData","OrganizationId","Name","CompanyEmail","Description","Image","Street","HouseNumber","PostalCode","City","Country","TelephoneNumber","Website","MaturityStatus","SoftwareId","SupportsCatalogData","SupportsOrderData","SupportsStockData","AccountStatus","EDIT_ORGANIZATION","editOrganization","addOrganizationThunk","ADD_ORGANIZATION","addOrganization","saveOrderInterfaceSettingsThunk","SAVE_ORDER_INTERFACE_SETTINGS","saveOrderInterfaceSettings","deleteOrderInterfaceThunk","interfaceId","DELETE_ORDER_INTERFACE","deleteOrderInterface","deleteConnectionThunk","DELETE_ORGANIZATION_CONNECTION","deleteConnection","deleteOrganizationIdentifierThunk","identifierId","DELETE_ORGANIZATION_IDENTIFIER","deleteOrganizationIdentifier","addOrganizationIdentifierThunk","value","ADD_ORGANIZATION_IDENTIFIER","addOrganizationIdentifier","addOrganizationConnectionThunk","sourceOrganizationId","targetOrganizationId","addOrganizationConnection","validateFtpAccessThunk","user","pass","VALIDATE_FTP_ACCESS","validateFtpAccess","validateSftpAccessThunk","VALIDATE_SFTP_ACCESS","validateSftpAccess","getConnectionIdentifiersThunk","getConnectionIdentifiers","addConnectionIdentifierThunk","organizationConnectionId","ADD_CONNECTION_IDENTIFIER","addConnectionIdentifier","deleteConnectionIdentifierThunk","DELETE_CONNECTION_IDENTIFIER","deleteConnectionIdentifier","StyledPageContent","XPageContent","XCounter","Counter","count","background","transform","XPaperHeader","this","customContent","position","Row","history","marginTop","paddingRight","XGoBack","XTitle","header","XSubTitle","subheader","ContentRight","customContentLeft","search","StyledField","Translation","XField","placeholder","onChange","onSearch","target","ActionButtons","icons","length","map","icon","IconComponent","Tooltip","toolTip","key","link","to","Icon","active","getCustomContent","React","Component","h6","formatDateToString","date","includeTime","utcToLocalTime","momentDate","moment","utc","local","format","getImageUrl","primary","secondary","isNullOrEmpty","getFileFormatOptions","fileFormats","includeNotElectronicInterchangable","options","formats","filter","f","electronicInterchangeable","versions","formatVersion","push","storeCatalogAction","STORE_CATALOG","getCatalogsAction","sort","GET_CATALOGS","getSubscribedCatalogsAction","GET_SUBSCRIBED_CATALOGS","validateCatalogFileAction","VALIDATE_CATALOG_FILE","validateResult","convertCatalogFileAction","CONVERT_CATALOG_FILE","convertResult","getCatalogAction","GET_CATALOG","catalog","getFileFormatsAction","GET_FILE_FORMATS","publishCatalogAction","PUBLISH_CATALOG","addCatalogAction","ADD_CATALOG","addCatalogHeaderAction","ADD_CATALOG_HEADER","getCatalogsThunk","listCatalogs","getSubscribedCatalogsThunk","listSubscribedCatalogs","editCatalogAvailableThunk","organizationIds","available","EDIT_CATALOG_AVAILABLE","editCatalogAvailable","editCatalogThunk","editCatalog","catalogResult","getCatalogThunk","validateCatalogFileThunk","validateCatalogFile","convertCatalogFileThunk","fromFileFormat","fromFileFormatVersion","toFileFormat","toFileFormatVersion","convertCatalogFile","getCatalog","deleteCatalogThunk","DELETE_CATALOG","deleteCatalog","getFileFormatsThunk","getFileFormats","publishCatalogThunk","publishCatalog","result","addCatalogThunk","catalogFormData","addCatalog","EmptyCatalogFormData","addCatalogHeaderThunk","catalogHeaderFormData","addCatalogHeader","ErrorBoundary","state","hasError","errorInfo","StyledPaper","size","ErrorImage","_","MyAccountPage","handleAccountChange","accountData","setState","storeAccount","inputErrors","accountInputErrors","valid","password","passwordValid","editAccount","then","editing","cancelEdit","authAccount","accountId","getMyAccount","maxWidth","registration","account","callback","XFieldDisplay","XKey","XValue","firstName","lastName","organizationName","XA","connect","authentication","my","accountActions","XImageContainer","XImageOverlay","top","bottom","left","right","justifyContent","alignContent","alignSelf","XImage","XTable","onSort","TableOuter","TableHeader","Sort","XList","TableRow","XScrollView","listView","overflowing","clientHeight","current","scrollTop","scrollHeight","prevProps","prevState","onScrollBottom","ref","onScroll","handleScroll","OverflowFade","XNoContent","NoItems","src","Id","getCatalogMapping","MappingId","saveCatalogMapping","Mapping","catalogMappingId","CommandName","CatalogId","CatalogMappingId","CatalogVersionId","FileFormat","FileFormatVersion","FromFileFormat","FromFileFormatVersion","ToFileFormat","ToFileFormatVersion","OrganizationIds","Available","Title","VersionName","version","StartDate","startDate","EndDate","endDate","getCatalogs","params","param","versionName","Accessibility","accessibility","Retailers","retailers","FileFormatId","FileFormatVersionId","fileFormatId","fileFormatVersionId","interfaceType","interfaceMethod","interfaceAuthentication","Settings","saveCatalogInterface","catalogInterface","CatalogInterfaceId","fetchCatalogFile","XButtonStyle","XButton","NonActiveButton","disabled","loading","ActiveButton","shouldForwardProp","prop","applyPadding","colorscheme","textcolor","Primary","staticcolor","theme","pStartColor","pEndColor","Secondary","sStartColor","sEndColor","gradientSwitch","fontFamily","textTransform","letterSpacing","transition","colors","cache","hashCode","str","hash","i","charCodeAt","generateAvatar","rounded","existing","c","Math","abs","parametersWithBackground","fullUrl","slice","CatalogAccessibility","AllConnections","uploaded","XForm","handleFormChange","Object","assign","handleKeyPress","submitHandler","inField","nextProps","obj","fields","forEach","indexOf","FormContainer","FormContent","item","InputContainer","fullWidth","readonly","getOptionLabel","option","getOptionSelected","o","v","autoComplete","autoHighlight","autoSelect","renderInput","inputProps","label","required","maxLength","multiline","rows","rowsMax","onKeyPress","flexWrap","parmeters","GenerateNew","Method","OrderEmailAddress","emailAddress","OrderFtpUsername","ftpUsername","OrderFtpPassword","ftpPassword","InterfaceId","saveOrganizationInterface","organizationInterface","OrganizationInterfaceId","companyEmail","IdentifierId","IdentifierType","Value","SourceOrganizationId","TargetOrganizationId","Url","Username","Password","OrganizationConnectionId","Key","SupplierAssignedNumber","XPagination","currentOffset","itemCount","changePage","itemsPerPage","canGoUp","newOffset","canGoDown","numberOfPages","ceil","currentPage","round","from","offset","PaginationOuter","PaginationFromToItems","PaginationInner","PaginationButton","changePageDown","PaginationCurrent","max","changePageUp","createAccount","API_URL_ACCOUNT","createAccountForOrganization","saveSettings","getSettings","checkEmailAvailable","Email","verifyEmailCode","emailCode","Code","sendPasswordReset","resetPassword","code","listAccounts","getAccount","deleteAccount","editManageAccount","FirstName","LastName","EmailConfirmed","emailConfirmed","Enabled","enabled","storeNewData","STORE_REGISTER_DATA","getSettingsAction","GET_SETTINGS","listAccountsAction","LIST_ACCOUNTS","accounts","getAccountAction","GET_ACCOUNT","getMyAccountAction","GET_MY_ACCOUNT","createAccountForOrganizationThunk","CREATE_ACCOUNT_FOR_ORGANIZATION","createAccountThunk","CompanyName","CompanyDescription","Postal","Language","language","CREATE_ACCOUNT","EditAccountThunk","accountForm","EDIT_ACCOUNT","SaveSettingsThunk","settingsData","SAVE_SETTINGS","GetSettingsThunk","checkEmailAvailableThunk","CHECK_EMAIL_AVAILABLE","verifyEmailCodeThunk","VERIFY_EMAIL_CODE","sendPasswordResetThunk","SEND_PASSWORD_RESET","resetPasswordThunk","listAccountsThunk","getAccountThunk","getMyAccountThunk","deleteAccountThunk","DELETE_ACCOUNT","editManageAccountThunk","editModel","EDIT_MANAGE_ACCOUNT","Container","IconWrapper","Input","XSearchBar","XFilterBar","XActionStrip","pointerEvents","XFormButtons","saveState","enabledSave","onCancel","cancelText","onSave","saveText","XPageRouter","match","routes","prependMatchPath","location","shouldRedirectToConnections","path","exact","component","route","index","defaultProps","Field","TextField","API_URL","process","API_URL_AUTH","API_URL_AUTH_IMPERSONATED","StockAccessibility","EmptyStockFormData","listRequests","listManageRequests","sendRequest","catalogIds","AvailableCatalogs","cancelRequest","RequestId","updateRequest","catalogRequestId","Status","getRequestsAction","GET_REQUESTS","requests","getManageRequestsAction","GET_MANAGE_REQUESTS","createRequestThunk","SEND_REQUEST","getRequestsThunk","getManageRequestsThunk","cancelRequestThunk","CANCEL_REQUEST","updateRequestThunk","request","requestStatus","UPDATE_REQUEST","connectRequest","RequestState","XPopup","open","PopupOuter","PopupBackground","cancelOnPagClick","PopupWrapper","PopupInner","PopupTitle","PopupContent","buttonCancelText","buttonSaveText","bottomContent","saveAvailable","module","exports","XGrid","Grid","columns","minWidth","listSoftware","getSoftwareAction","GET_SOFTWARE","software","getSoftwareThunk","sortSoftware","b","creator","localeCompare","getProcessingStatusText","Uploading","Uploaded","Validating","ValidationFailed","WaitingForMapping","Converted","Converting","ConvertingFailed","Fetched","Fetching","FetchingFailed","None","Promoted","Promoting","PromotingFailed","UploadFailed","Validated","ValidatedWithWarnings","ValidatingFailed","MappingFailed","getPublicationStatusText","Published","Unpublished","breakpoints","mediaQuery","bp","getInterfaceTypes","CatalogReceive","OrderSend","Supplier","CatalogSend","OrderReceive","getInterfaceTypesOrder","getInterfaceTypesCatalog","getInterfaceText","getInterfaceFormats","getInterfaceMethods","manual","Manual","ltxFtp","LtxFtp","ftp","Ftp","sftp","Sftp","XErrorContent","Error","XCatalogLarge","CatalogContent","ImageContainer","organizationImageURL","alt","onError","CatalogText","CatalogTitle","CatalogLabel","downloads","lastCreationDate","boxShadow","whiteSpace","textOverflow","paddingTop","textDecoration","XCatalogSmall","downloaded","CloudDownload","DownloadCheck","DownloadedIcon","withRouter","cRoute","XPanel","XFailPanel","XSuccessPanel","XSideBar","borderTop","textAlign","WebkitOverflowScrolling","alignItems","XSideBarHeader","XAdminSideBar","Countries","XImageEditor","setEditorRef","setFileSelectRef","editor","fileSelect","fresh","prev","editable","rotate","pica","Pica","img","getImage","offScreenCanvas","document","createElement","promise","resize","alpha","toBlob","blob","createDataURL","click","URL","webkitURL","createObjectURL","backupImage","Blob","changeFile","ImageCropperWrapper","border","crossOrigin","ImageCropperWrapperControls","ImageControl","CommitControl","cancel","save","ImageWrapper","EditOverlay","toEdit","EditText","activeRoute","pathname","startsWith","subRoutes","subRoute","r","defaultActive","NavigationContainer","NavigationContent","dividerTop","NavigationBar","badge","place","XSideArrow","subIndex","NavigationSubBarContainer","ClipBoaardIcon","MessageIcon","SettingsIcon","UserPlusIcon","getIcon","NavigationSubBar","Link","withTheme","ArrowLeftIcon","mask","catalogViewRequestBetweenOrganizations","requestOrganization","targetOrganization","requestDate","activeIncommingRequest","approvedDate","disapprovedDate","XOrganizationTitle","OrganizationTitle","bold","TitleIcons","FlagIcon","XCatalogRow","published","publicationStatus","processingStatus","invalid","waitingLine","content","StyledCell","showDownloads","showUploadDate","showProcessingStatus","showPublicationStatus","showPublicationDate","publicationDate","showProcessingIcon","NotFoundCard","XCheckbox","readOnly","checked","Label","StyledCheckbox","userSelect","Checkbox","listMessages","listCatalogMessages","listOrganizationCatalogMessages","listSentOrderMessages","listOrderMessages","getMessages","GET_MESSAGES","messages","getCatalogMessages","GET_CATALOG_MESSAGES","catalogMessages","getOrganizationCatalogMessages","GET_ORGANIZATION_CATALOG_MESSAGES","getSentOrderMessages","GET_SENT_ORDER_MESSAGES","orderMessages","getOrderMessages","GET_ORDER_MESSAGES","getMessagesThunk","getCatalogMessagesThunk","getOrganizationCatalogMessagesThunk","getSentOrderMessagesThunk","getOrderMessagesThunk","XDatePicker","StyledDatePicker","DatePicker","getFtpForm","getSftpForm","getEmailForm","interfaceMethods","configure","interface","editPath","viewSettings","s","includes","desc","subTitle","deleteVisible","onDelete","Wrapper","x","renderSettings","XBadge","Badger","BadgeNumber","zIndex","AccountDetails","authenticate","authenticateImpersonated","impersonatedEmail","Token","ImpersonatedEmail","login","LOGIN","loginRequestThunk","setItem","errorDescription","loginImpersonatedRequestThunk","toString","logoutThunk","logout","LOGOUT","XToast","Alert","aria-label","close","getOrderView","OrderId","OrganizationButtonContainerSmall","XOrganizationDetail","organizationModel","requestButton","showCatalogsButton","requestState","NOT_REQUESTED","onRequestCatalogs","onOfferCatalogs","REQUEST_PENDING","DISAPPROVED","APPROVED","TitleWrapper","EllipseText","borderBottom","ShowPDF","lazy","ShowCatalogPage","setDocumentRef","doc","fileFormatData","fileFormatSelection","softwareSelection","showDownloadPopup","fileFormatSelectionError","processing","showOther","showPdf","pdfUrl","pdfPage","pdfTotalPages","getCatalogById","getSoftware","event","fileName","blobFile","href","download","catalogName","extension","XMLHttpRequest","responseType","onload","handleOnLoad","send","forPdf","sourceFileFormat","validateUrl","fileFromatVersion","downloadFile","defaultExtension","myAccount","newData","split","parseInt","clientWidth","RegExp","test","availableFormats","avaiableFileFormats","minHeight","validCatalogs","loadingCatalog","loadingOrganization","Skeleton","variant","XCatalog","pdfFileFormat","lastVersion","currentVersionId","fileFormatInputs","StatsLine","getFile","bottomPager","n","fallback","onLoadSuccess","pdf","numPages","pageNumber","getPDFWidth","LinearProgress","PaperSubTitle","showCatalogs","borderLeftColor","borderLeftWidth","borderLeftStyle","detail","all","messageType","catalogActions","organizationActions","AppLoadingPage","XFallBackPage","require","pulse","keyframes","OrganizationReadinessStatusList","OrganizationIdentifierType","NotFoundPage","useHistory","XFourOFour","XCard","NotFoundImage","XFooter","FooterContainer","absolute","FooterConent","XConfirmation","text","listview","componentDidMount","updateFitState","addEventListener","updateDimensions","componentWillUnmount","removeEventListener","updateOffset","scroll","direction","pos","animateScrollTo","elementToScroll","cancelOnUserAction","scrollLeft","contentFits","scrollWidth","atEnd","List","horizontal","Paddles","LeftPaddle","css","PaddleIcon","RightPaddle","Paddle","wrap","overflowX","changeLanguage","CHANGE_LANGUAGE","newCatalogState","createSelector","getMyCatalogsRequiringAction","XNavigationBar","getRequests","SearchIcon","Account","UserIcon","PurchaseOrder","PurchaseOrderIcon","totalCount","catalogRequiringAction","Exchange","ShareIcon","pages","NavPortalPages","p","shouldShowCallback","NavBarContainer","NavBarContent","NavLink","NavBarButtonContent","NavLabel","getName","DataIcon","Inbox","InboxIcon","Search","LayoutContainer","MainContainer","backgroundImage","backgroundSize","backgroundPosition","backgroundRepeat","Navbar","SubNavbar","NavbarHandle","borderTopRightRadius","borderBottomRightRadius","OffIcon","PowerSettingsNewIcon","impersonated","HelperIcon","HelpIcon","PortalLayout","handleCloseNotification","handleConfirm","confirmation","expanded","accountPopoverShow","anchorEl","helpPopoverShow","replace","encodeURIComponent","preventDefault","currentTarget","portalPages","PortalPages","shouldMapCallback","avatarImgUrl","XLogo","Logo","navbar","handleHelpPopover","bind","Popover","onClose","handleHelpPopoverClose","anchorOrigin","transformOrigin","FooterWrapper","handleAccountPopover","handleAccountPopoverClose","sidebar","main","Snackbar","notification","autoHideDuration","snackbar","IconButton","layout","BusinessIcon","animationDuration","PublicLayout","PublicPages","render","isAuthenticated","XSmallButton","SmallButton","CatalogsPage","view","some","toLowerCase","paged","switchView","EmptyImage","handleScrollBottom","Array","idx","XCatalogSmallSkeletton","dp","CatalogRow","CatalogImage","CatalogCell","viewCatalogs","CatalogsRoute","CatalogRoute","Routes","BrowseRouter","XSelectItem","newValue","onToggle","toggleInput","XOrganizationAddress","XRetailerDetails","showConnectPopup","availableCatalogs","splice","catalogViewOffer","organizationConnection","dc","showAvailableCatalogs","incommingRequest","requestOrganizationId","buttonState","getButtonState","offerViewCatalogs","toggleCatalog","EmailOutlined","loadingRequest","editViewCatalogRequest","StyledCatalogsDiv","span","XCenter","XSpan","XSupplierDetails","catalogViewRequest","requestViewCatalogs","editCatalogOffer","Ready","ShowOrganizationPage","loadingCommand","organizationById","createRequest","viewRequest","editCatalogViewRequest","requestCatalogs","editCatalogRequest","offerCatalogs","requestActions","catalogRequest","XSubscriptionUpgradeModal","XSubUpgradeModal","XSubUpgradeGrid","Divider","OrganizationsPage","subUpgradeModal","getOrganizations","getConnections","Hidden","scrollPaged","orgsName","connections","XAccordion","Accordion","AccordionSummary","expandIcon","aria-controls","XOrgImage","AccordionDetails","XBadgeSpan","viewOrganizations","OrganizationActions","ConnectionsRoute","BrowseOrganizationsRoute","BrowseOrganizationRoute","StartRouter","ShowStockPage","StockContent","stock","StockText","StockTitle","StockLabel","XStockLarge","XStockSmall","getStock","listStocks","getStocks","listSubscribedStocks","deleteStock","addStock","editStockAvailable","stockId","StockId","saveStockInterface","stockInterface","StockInterfaceId","editStock","fileReaderCSV","saveStockMapping","stockMappingId","StockMappingId","MappingItems","mappingItems","Delimiter","delimiter","getStockMapping","getStockAction","GET_STOCK","addStockAction","ADD_STOCK","getStockThunk","getStocksAction","GET_STOCKS","getSubscribedStocksAction","GET_SUBSCRIBED_STOCKS","getStocksThunk","StocksPage","XStock","StockRow","StockImage","StockCell","StocksRoute","StockRoute","StocksRouter","ExploreRouter","ContactPage","phone","success","tried","submit","every","Phone","Message","onSubmit","htmlFor","tabIndex","aria-invalid","cols","defaultValue","data-link","renderForm","useState","activeItemIndex","setActiveItemIndex","cards","useMediaQuery","requestToChangeActive","numberOfCards","gutter","rightChevron","Bttn","leftChevron","outsideChevron","chevronWidth","users","u","Img","Question","opened","setOpen","Card","question","isOpened","dangerouslySetInnerHTML","__html","answer","H6","borderLeft","ScrollLink","Scroll","HomePage","infoTab","priceTabe","tab","suppliers","prices","retailer","price","items","supplier","duration","smooth","openPopUp","preserveAspectRatio","viewBox","fill","d","LTXUsers","x1","y1","x2","y2","stopColor","stopOpacity","data-tab","Number","isInteger","wordWrap","LTXfaq","DomainRedirectPage","useEffect","redirect","clearTimeout","XRedirectPage","XRedirectHeaderContainer","XRedirectSection","XRedirectLogo","LTXLogo","XRedirectArrow","xmlns","fill-rule","ArxisLogo","IndexPage","documentElement","pageYOffset","clientTop","scrolled","whitePaperPopUp","closePopUp","sendEmailDowloadNotification","nav","l","GlobalLeadinfoNamespace","q","arguments","getElementsByTagName","async","parentNode","insertBefore","initLeadInfo","emailValid","validateEmail","scrollPages","role","data-toggle","data-target","aria-expanded","aria-hidden","data-prefix","data-icon","spy","itemType","activeClass","data-sr-id","getFullYear","handleEmailChange","bounce","animationName","LoginContainer","LoginButtonContainer","Paper","fadeIn","FormControl","InformationPaper","lineHeight","InformationContent","LeftSide","ArrowRight","LeftSideInner","RightSide","XLTXInformation","ContactInfo","ContactLink","LoginPage","handleLoginClick","loginAccount","handleRegisterClick","showForm","redirectURL","decodeURIComponent","authenticationError","FooterLine","MobileDevice","LogoutPage","LogoutLayout","LogoutInner","XOrganizationRow","TitleCell","showConnectionDate","connectionDate","toOrganizationId","lastDownloadedDate","showLiveConnection","liveConnection","showDelete","XDragAndDropFilesUpload","setFiles","onDrop","useCallback","acceptedFiles","useDropzone","maxFiles","getRootProps","getInputProps","isDragActive","isDragAccept","isDragReject","handleFileChange","XDragAndDropFileUpload","setFile","getColor","XOrganizationSelectPopup","selected","clearOnClose","allowEmpty","org","toggleOrganization","XMappingRow","memo","XSelectionRow","XCell","Column","substr","ToolTipText","SampleData","XSelect","native","MappingType","keys","visibility","borderWidth","borderStyle","borderColor","XCSVMapping","mappingData","setDelimiter","onDelimiterChange","setMappingItems","persist","saveCSVMapping","XCatalogModal","XModalContainer","XCatalogModalModel","XModalHeader","XButtonsContainer","CatalogPage","fetchNewCatalogVersion","fetchLoading","getCatalogMappingById","versionId","mappingId","mapping","parse","openMappingModel","dateLimit","mapEditModel","showAddAvailablePopup","loaded","editErrors","val","editAvailableCatalog","getResult","imgResult","formChange","showConfirm","validationFileUrl","trim","conversionFileUrl","latestVersion","makeAvailableOrganizations","dataConnection","catalogIsPublished","fileUploadMethod","catalogVersions","saveEdit","toggleDateLimit","toDate","VersionRow","WarningVersionRow","getFileFormat","CircularProgress","StyledTableRow","Chip","clickable","avatar","Avatar","XPulseDots","XSuccessChip","downloadValidation","downloadConversionFile","toggleAvailability","AddCircleIcon","messageAction","targetOrganizationIds","XStockCSVMapping","column","sampleData","mappingType","StockPage","fileReaderCSVHandler","getStockMappingById","getStockById","editAvailableStock","loadingStock","stockActions","DELETE_STOCK","EDIT_STOCK_AVAILABLE","CatalogsPageRetailer","viewDownloaded","searchNewCatalogs","getSubscribedCatalogs","filtered","subscribedCatalogs","subscribed","CatalogsPageSupplier","asc","property","itemA","itemB","sortDate","editRequest","StockPageRetailer","searchNewStocks","getSubscribedStocks","subscribedStocks","XStockRow","showCreationDate","StockPageSupplier","ConnectionPage","toggleAvailableCatalog","handleNewConnectionIdentifierChange","identifierData","newConnectionIdentifier","showAddConnectionIdentifier","getConnectionId","identifier","catalogMessage","StyledPaperTitle","LinkContent","cId","removeConnectionIdentifier","messageActions","listOrganizationGroups","groups","getOrganizationGroupsAction","GET_ORGANIZATION_GROUPS","organizationGroups","getOrderMessagesAction","GET_ORDERMESSAGES","ConnectionsPage","removeConnection","lastTrafficDate","getOrganizationGroups","XRequestRow","ownRequest","requestModel","ownOrganizationId","needsAnswer","color2","statusSwitch","RequestCell","onDisapprove","onApprove","StatusText","createMuiTheme","palette","blue","grey","useStyles","makeStyles","createStyles","root","XInboxOutboxButtons","classes","ThemeProvider","ButtonGroup","disableElevation","XSwitchButton","in","out","ConnectRequestsPage","currentOffsetDenied","requestsType","loadingRequests","allRequests","filterRequests","pagedRequests","orgName","SelectWrapper","MenuItem","TransitionGroup","CSSTransition","classNames","timeout","unmountOnExit","requestsLoading","WizardAccessPage","previousPage","handleDateFormChange","inputData","storeForm","showDateInput","validForm","ResultRoute","publishResult","availableAllConnections","datePickers","SelectedConnections","toggleRetailers","catalogSelects","storeInformation","WizardBasicPage","addingAsAdmin","orgId","catalogData","FileRoute","InputLabel","LogoLabel","XFileSelectButton","hiddenFileSelectRef","hiddenFileSelect","input","onSelect","WizardFilePage","handleFormFileSelectChange","next","AccessRoute","validating","uploading","WizardResultPage","validationSummary","validation","XTableViewerPopup","pageSize","maxResults","colIndex","WizardValidationPage","violationsOffset","showPopup","validationError","violations","downloadValidationSummary","level","wizardPath","BasicRoute","BasicPage","FilePage","AccessPage","ResultPage","BasicRouteFromOrganization","WizardRouter","Stepper","activeStep","alternativeLabel","Step","StepButton","completed","StepLabel","ValidationPage","SpecificInterfaceMethod","customType","setCustomType","typeSelectHandler","customTypeHandler","DeEekhoorn","XAuthInputs","userName","setUserName","setPassword","VertilinQ","setUrl","setToken","ItsPerfect","setFilter","RadioGroup","aria-labelledby","setFilterType","FormControlLabel","control","Radio","IMS","LightAndLiving","CatalogInterface","useMultipleFiles","setUseMultipleFiles","autoUpdate","setUpdateTimeInterval","uploadType","setAutoUpdate","XContent","XTypeContainer","XTextInput","checkBoxHandler","url2","setUrl2","userName2","setUserName2","password2","setPassword2","ArxisApi","Api","setInterfaceAuthentication","UsernamePassword","BasicAuth","JWTAuth","setPortalName","portalName","filterType","XSelectTypeContainer","XFileFormatSelect","XFileFormatContainer","onChangeType","XSelectFileFormatVersion","onChangeVersion","setFileFormatId","setFileFormatVersionId","setTitle","setDescription","setInterfaceMethod","updateTimeInterval","setUploadType","ar","rm","saveCatalogHeader","Url2","Username2","Password2","PortalName","AutoUpdate","UpdateTimeInterval","FilterType","Filter","entityId","XCatalogInputs","XNewCatalog","specType","UseMultipleFiles","saveInterface","handleUseMultipleFilesChange","handleOnChange","XSaveManualInterface","setAuthentication","XSelectAuth","CustomInterfaceMethod","onClickHandler","XCatalogInterface","WizardConvertInputPage","fromFileFormatSelection","toFileFormatSelection","converting","WizardConvertOutputPage","downloadConversionSummary","transformResult","dataLink","conversion","InputPage","OutputPage","WizardConvertRouter","generatePassword","charset","retVal","charAt","floor","random","SoftwareInterfacePage","setMethod","setFormat","setSetting","getLtxUserName","getLtxPassword","generatedPassword","getLtxFtpAddress","arxisId","addhttp","orgInterface","validateMyFtp","ftpSuccess","validateMySftp","sftpSuccess","validate","loadingFtpAccess","loadingSftpAccess","ftpTested","sftpTested","queryParams","URLSearchParams","typeString","get","defaultMethod","newInterface","validateSftp","address","username","validateFtp","methods","Option","StatusCard","SubOption","myIdentifiers","DTP","StockInterface","addStockFormData","StockSend","XStockInputs","XNewStock","XStockInterface","CatalogsTrafficPage","subtitle","organizationTitle","predicate","fromOrganizationId","dm","SmallStyledCell","blobUri","OrdersTrafficPage","sourceType","targetType","outgoingDate","CatalogsSettingsPage","InterfaceCard","getInterface","OrdersSettingsPage","getInterfaces","isOrderReceive","onOrderInterfaceDelete","StockTrafficPage","SentOrderPreviewPage","orderNumber","setOrderNumber","recipient","setРecipient","sender","setSender","deliveryAddress","setDeliveryAddress","invoiceAddress","setInvoiceAddress","orderLines","setOrderLines","res","line","quantity","basePartPrice","comment","reference","MyLtxRouter","catalogPage","stockPage","AddStockPage","EditStockInterfacePage","AddNewCatalogPage","EditInterfacePage","WizardValidationRouter","MyLtxSideBar","XNavigation","OrganizationDetails","fieldsNextToImage","fieldsRight","FormWrapper","MyOrganizationPage","handleOrganizationChange","organizationData","handleNewIdentifierChange","newIdentifier","storeOrganization","organizationInputErrors","showAddIdentifier","oldProps","availableAddTypes","addIdentifier","removeIdentifier","XRadioButton","labelPlacement","XSwitch","Switch","AccountSettings","changedSettings","createForm","old","updateNeeded","oldSetting","changed","setting","newSettings","el","StyledSwitch","getValue","changeSetting","StyledLanguage","row","MySettingsPage","handleSettingsChange","logos","LogicTrade","iOne","eMeubel","Furncube","XSoftwareSelect","emptyGuid","selectSoftware","SoftwarePage","getAccessToken","deleteAccessToken","navigator","clipboard","writeText","updateSoftwareId","Copy","copyAccessToken","FileCopyIcon","range","min","limit","XCurrentSubHeader","XCurrentSubFooter","setOrganizationType","XCardsContainer","toLocaleLowerCase","XSubProgressBar","MyAccoutRouter","SubscriptionsPage","MyAccountSideBar","ConfirmationPage","confirmResult","MailImage","XPage","RegisterAccountPage","waitingEmailCheck","getEmailAvailable","OrganizationRoute","accountFormData","getRegisterState","AdditionalInfoPage","waitingRegistration","accountSelects","RegisterOrganizationPage","AdditionalInfoRoute","AccountRoute","RegisterRouter","ConfirmationEmailSentPage","SuccesImage","PasswordForgottenPage","sent","StyledDiv","ResetPasswordPage","password1","error1","error2","reset","changeForm1","changeForm2","StyledButton","StyledLink","ErrorPage","getMessageState","ValidationRoute","messageSelects","ValidationRouter","ValidationSideBar","OrdersRouter","OrdersApp","StartSideBar","portalPageDefaults","MyAccountRouter","OrdersSideBar","ValidationPages","publicPageDefaults","LoginPageRoute","IndexPageRoute","DomainRedirectPageRoute","NotFoundPageRoute","webpackContext","req","webpackContextResolve","__webpack_require__","resolve","createBrowserHistory","BaseReducer","actionTypes","initialState","outstandingRequests","newState","changedState","doHandle","details","AccountReducer","values","fullName","AuthenticationReducer","new","popular","special","CatalogReducer","GET_CATALOGS_ORGANIZATION","DataReducer","headerText","loader","prompt","LayoutReducer","newMessages","MessageReducer","OrganizationGroupReducer","emptyFormData","acceptTermsAndConditions","unconfiguredFtp","manageDetails","OrganizationReducer","manageRequests","RequestReducer","SoftwareReducer","subscriptions","SubscriptionReducer","GET_SUBSCRIPTIONS","LanguageReducer","StockReducer","listNotSendOrders","listOfSentOrders","catalogView","PurchaseOrderReducer","GET_NOT_SEND_ORDERS","GET_LIST_OF_SENT_ORDERS","GET_CATALOG_VIEW","uiVersion","REACT_APP_UI_VERSION","persistVersion","localStorage","localStorageState","_persist","clear","persistConfig","storage","storageSession","blacklist","accountPersistConfig","authenticationPersistConfig","organizationPersistConfig","organizationReducer","catalogReducer","dataReducer","requestReducer","messageReducer","softwareReducer","accountReducer","organizationGroupReducer","authenticationReducer","layoutReducer","subscriptionsReducer","languageReducer","stockReducer","purchaseOrderReducer","appReducer","combineReducers","handleState","persistReducer","router","routerReducer","purchaseOrder","rootReducer","protocol","host","persistedReducer","middleWare","thunk","routerMiddleware","store","createStore","applyMiddleware","persistor","persistStore","generateClassName","createGenerateClassName","jss","create","jssPreset","insertionPoint","getElementById","App","locale","ReactDOM","libInstance","utils","MomentUtils","StylesProvider"],"mappings":"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","file":"static/js/main.08f1fc9f.chunk.js","sourcesContent":["export enum InterfaceAuthentication {\r\n None = \"None\",\r\n UsernamePassword = \"UsernamePassword\",\r\n BasicAuth = \"BasicAuth\",\r\n JWTAuth = \"JWTAuth\"\r\n}\r\n\r\nexport enum InterfaceUpdateInterval {\r\n Day = \"0 0 6 * * ?\",\r\n Week = \"0 0 6 ? * 1\",\r\n Month = \"0 0 6 1 * ?\"\r\n}\r\n\r\nexport enum InterfaceType {\r\n CatalogSend = \"CatalogSend\",\r\n}\r\n\r\nexport enum InterfaceMethod {\r\n Ftp = \"Ftp\",\r\n Sftp = \"Sftp\",\r\n Manual = \"Manual\",\r\n Api = \"Api\",\r\n DeEekhoorn = \"DeEekhoorn\",\r\n ItsPerfect = 'ItsPerfect',\r\n VertilinQ = 'VertilinQ',\r\n ArxisApi = 'ArxisApi',\r\n IMS = 'IMS',\r\n LightAndLiving = 'LightAndLiving'\r\n}\r\n\r\nexport enum InterfaceSettingsKey {\r\n Url = \"Url\",\r\n Username = \"Username\",\r\n Password = \"Password\",\r\n Url2 = \"Url2\",\r\n Username2 = \"Username2\",\r\n Password2 = \"Password2\",\r\n Token = \"Token\",\r\n PortalName = \"PortalName\",\r\n AutoUpdate = \"AutoUpdate\",\r\n UpdateTimeInterval = \"UpdateTimeInterval\",\r\n FileFormatId = \"FileFormatId\",\r\n FileFormatVersionId = \"FileFormatVersionId\",\r\n FilterType = \"FilterType\",\r\n UseMultipleFiles = \"UseMultipleFiles\",\r\n Filter = \"Filter\"\r\n}\r\n\r\nexport interface Catalog {\r\n id: string;\r\n currentVersionId?: string;\r\n organizationId: string;\r\n organizationName: string;\r\n organizationImageURL: string;\r\n title: string;\r\n description: string;\r\n imageURL: string;\r\n downloads: number;\r\n downloaded: boolean;\r\n lastCreationDate: Date;\r\n connectionDate: Date;\r\n publicationStatus: PublicationStatus;\r\n publicationDate: Date;\r\n processingStatus: ProcessingStatus;\r\n validationFileUrl: string;\r\n mappingId: string;\r\n fileFormatId: string;\r\n fileFormatVersionId: string;\r\n}\r\n\r\nexport interface CatalogVersion {\r\n id: string;\r\n version: string;\r\n startDate: Date;\r\n endDate: Date;\r\n fileFormat: string;\r\n fileFormatVersion: string;\r\n creationDate: Date;\r\n additionalSettings: string;\r\n publicationStatus: PublicationStatus;\r\n publicationDate: Date;\r\n processingStatus: ProcessingStatus;\r\n validationFileUrl: string;\r\n conversionFileUrl: string;\r\n}\r\n\r\nexport interface CatalogModel {\r\n catalog: Catalog;\r\n versions: CatalogVersion[];\r\n downloads?: CatalogDownloads[];\r\n interfaces: CatalogInterface[];\r\n}\r\n\r\nexport interface CatalogValidationSummary {\r\n violations: CatalogFileViolation[];\r\n}\r\n\r\nexport interface CatalogFileViolation {\r\n type: string;\r\n level: string;\r\n objectId: string;\r\n message: string;\r\n lineNumber?: number;\r\n}\r\n\r\nexport interface CatalogDownloads {\r\n organizationId: string;\r\n organizationName: string;\r\n downloads: number;\r\n lastDownloadDate?: Date;\r\n}\r\n\r\nexport interface CatalogInterface {\r\n id: string,\r\n method: InterfaceMethod;\r\n type: InterfaceType;\r\n settings: CatalogInterfaceSetting;\r\n authentication: string;\r\n catalogId?: string;\r\n}\r\n\r\nexport interface CatalogInterfaceSetting {\r\n Url: string;\r\n Username: string;\r\n Password: string;\r\n Url2: string;\r\n Username2: string;\r\n Password2: string;\r\n PortalName: string;\r\n UseMultipleFiles: string;\r\n Token: string;\r\n AutoUpdate: string;\r\n UpdateTimeInterval: string;\r\n FilterType: string;\r\n Filter: string;\r\n}\r\n\r\nexport enum PublicationStatus {\r\n Unpublished = 'Unpublished',\r\n Published = 'Published'\r\n}\r\n\r\nexport enum ProcessingStatus {\r\n Uploading = 'Uploading',\r\n Uploaded = 'Uploaded',\r\n UploadFailed = 'UploadFailed',\r\n Validating = 'Validating',\r\n Validated = 'Validated',\r\n ValidatedWithWarnings = 'ValidatedWithWarnings',\r\n ValidationFailed = 'ValidationFailed',\r\n None = 'None',\r\n Fetching = 'Fetching',\r\n FetchingFailed = 'FetchingFailed',\r\n Fetched = 'Fetched',\r\n WaitingForMapping = 'WaitingForMapping',\r\n Converting = 'Converting',\r\n ConvertingFailed = 'ConvertingFailed',\r\n Converted = 'Converted',\r\n ConvertingSkipped = 'ConvertingSkipped',\r\n ValidatingFailed = 'ValidatingFailed',\r\n Promoting = 'Promoting',\r\n PromotingFailed = 'PromotingFailed',\r\n Promoted = 'Promoted',\r\n MappingFailed = 'MappingFailed',\r\n Sending = 'Sending',\r\n SendingFailed = 'SendingFailed',\r\n Sent = 'Sent',\r\n FileDetected = 'FileDetected',\r\n SavingOriginal = 'SavingOriginal',\r\n SavingOriginalFailed = 'SavingOriginalFailed',\r\n SavedOriginal = 'SavedOriginal',\r\n SavingConverted = 'SavingConverted',\r\n SavingConvertedFailed = 'SavingConvertedFailed',\r\n SavedConverted = 'SavedConverted',\r\n RequestDetected = 'RequestDetected'\r\n}\r\n\r\nexport enum CSVMappingTypes {\r\n\r\n IdentifierEanNumber = 'IdentifierEanNumber',\r\n IdentifierGTIN = 'IdentifierGTIN',\r\n IdentifierSalesNumber = 'IdentifierSalesNumber',\r\n IdentifierOther = 'IdentifierOther',\r\n IdentifierFile2 = 'IdentifierFile2',\r\n IdentifierFile3 = 'IdentifierFile3',\r\n\r\n // Can be assigned to multiple columns in combination with LanguageIdentifier (e.g. 'NL', 'DE')\r\n NameNL = 'NameNL',\r\n NameEN = 'NameEN',\r\n NameDE = 'NameDE',\r\n NameFR = 'NameFR',\r\n NameOther = 'NameOther',\r\n\r\n AdditionalDescriptionTypeWEB = 'AdditionalDescriptionTypeWEB',\r\n\r\n ArticleGroup = 'ArticleGroup',\r\n ArticleSubGroup = 'ArticleSubGroup',\r\n ArticleSubSubGroup = 'ArticleSubSubGroup',\r\n\r\n Order = 'Order',\r\n\r\n // Prices\r\n SalesPrice = 'SalesPrice',\r\n RetailPrice = 'RetailPrice',\r\n\r\n // Promo prices\r\n PromoPrice = 'PromoPrice',\r\n PromoQuantity = 'PromoQuantity',\r\n PromoValidFrom = 'PromoValidFrom',\r\n PromoValidTo = 'PromoValidTo',\r\n\r\n // Vat\r\n VatId = 'VatId',\r\n Vat = 'Vat',\r\n\r\n // Supplier\r\n SupplierId = 'SupplierId',\r\n SupplierName = 'SupplierName',\r\n\r\n // Media\r\n MediaImage = 'MediaImage',\r\n MediaDocument = 'MediaDocument',\r\n MediaOther = 'MediaOther',\r\n\r\n // Properties\r\n ItemPropertyWidth = 'ItemPropertyWidth',\r\n ItemPropertyHeight = 'ItemPropertyHeight',\r\n ItemPropertyLength = 'ItemPropertyLength',\r\n ItemPropertyDepth = 'ItemPropertyDepth',\r\n ItemPropertySittingHeight = 'ItemPropertySittingHeight',\r\n ItemPropertySittingDepth = 'ItemPropertySittingDepth',\r\n ItemPropertyWeightPackaging = 'ItemPropertyWeightPackaging',\r\n ItemPropertyNumberOfPackages = 'ItemPropertyNumberOfPackages',\r\n ItemPropertyAssemblyTime = 'ItemPropertyAssemblyTime',\r\n ItemPropertyVolume = 'ItemPropertyVolume',\r\n ItemPropertyWeight = 'ItemPropertyWeight',\r\n ItemPropertyEcoMobilier = 'ItemPropertyEcoMobilier',\r\n ItemPropertyIntrastat = 'ItemPropertyIntrastat',\r\n ItemPropertyVivCode = 'ItemPropertyVivCode',\r\n ItemPropertyReference = 'ItemPropertyReference',\r\n ItemPropertyOriginCountry = 'ItemPropertyOriginCountry',\r\n\r\n // Attributes\r\n AttributeText = 'AttributeText',\r\n AttributeSelect = 'AttributeSelect',\r\n AttributeMultiSelect = 'AttributeMultiSelect',\r\n AttributeYesOrNoSelect = 'AttributeYesOrNoSelect',\r\n AttributeUnknown = 'AttributeUnknown',\r\n\r\n None = 'None'\r\n}\r\n\r\n\r\n","import i18n from 'i18next';\r\nimport { initReactI18next } from 'react-i18next';\r\nimport translationEN from './pages/index/locales/en.json';\r\nimport translationNL from './pages/index/locales/nl.json';\r\nimport LanguageDetector from 'i18next-browser-languagedetector';\r\n\r\ni18n\r\n .use(initReactI18next) // passes i18n down to react-i18next\r\n .use(LanguageDetector)\r\n .init({\r\n resources: {\r\n en: {\r\n translation: translationEN\r\n },\r\n nl: {\r\n translation: translationNL\r\n }\r\n },\r\n lng: 'nl',\r\n fallbackLng: 'en',\r\n interpolation: {\r\n escapeValue: false\r\n }\r\n });\r\n\r\nexport default i18n;\r\n","import { css } from '@emotion/core';\r\nimport styled from '@emotion/styled';\r\nimport * as React from 'react';\r\nimport ArrowBack from '@material-ui/icons/ArrowBack';\r\nimport { Translation } from 'react-i18next';\r\n\r\nexport const XPaper = styled('div')({\r\n backgroundColor: '#fff',\r\n width: 'auto',\r\n height: 'auto',\r\n maxHeight: 'calc(100vh - 80px)',\r\n overflow: 'hidden',\r\n borderRadius: '6px',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n padding: '30px 15px'\r\n});\r\n\r\nexport const XPaperTitle = styled('header')({\r\n marginLeft: '15px',\r\n marginRight: '15px',\r\n fontWeight: 'bold',\r\n '& a': {\r\n fontWeight: 'normal'\r\n }\r\n});\r\n\r\nexport const XPaperSubtitle = styled.div`\r\n margin: 10px 15px 0;\r\n color: #aaa;\r\n font-size: 14px;\r\n`;\r\n\r\nexport const XPaperTitleLarge = styled(XPaperTitle)({\r\n fontSize: '21px'\r\n});\r\n\r\nexport const XPaperContent = styled('div')({\r\n flex: 1,\r\n overflowY: 'auto'\r\n});\r\n\r\nexport const XPaperText = styled('p')({\r\n marginLeft: '15px',\r\n marginRight: '15px',\r\n fontSize: '13px'\r\n});\r\n\r\nexport const XPaperLabel = styled('label')({\r\n marginLeft: '15px',\r\n marginRight: '15px',\r\n marginBottom: 0,\r\n fontSize: '14px',\r\n fontWeight: 'bold'\r\n});\r\n\r\nexport const XPaperContainer = styled('div')({\r\n borderTopLeftRadius: '6px',\r\n borderBottomLeftRadius: '6px',\r\n backgroundColor: '#f2f4f7'\r\n});\r\n\r\nexport const XPaperCenter: React.SFC<{\r\n style?: any;\r\n width?: string;\r\n goBack?: () => any;\r\n goBackText?: string;\r\n}> = props => {\r\n return (\r\n \r\n \r\n {props.goBack !== undefined && (\r\n \r\n \r\n \r\n {t => {t('tooltip.back')}}\r\n \r\n \r\n )}\r\n {props.children}\r\n \r\n \r\n );\r\n};\r\n\r\nconst PaperCenter = styled('div')({\r\n width: '600px',\r\n margin: 'auto',\r\n padding: '20px'\r\n});\r\n\r\nconst PaperCenterWrapper = styled('div')({\r\n width: '100%',\r\n height: '100vh',\r\n display: 'flex'\r\n});\r\n\r\nconst GoBackButton = styled('div')({\r\n color: 'white',\r\n paddingLeft: '15px',\r\n paddingBottom: '5px',\r\n cursor: 'pointer',\r\n opacity: 0.8\r\n});\r\n","import { Catalog } from 'src/models/Catalog';\r\nimport { Stock } from 'src/models/Stock';\r\nimport { AccountModel } from 'src/store/accounts/types';\r\n\r\nexport enum ConnectionIdentifierKey {\r\n SupplierAssignedNumber = 'SupplierAssignedNumber'\r\n}\r\n\r\nexport enum OrganizationType {\r\n Supplier = 'Supplier',\r\n Retailer = 'Retailer'\r\n}\r\n\r\nexport enum ConnectStatus {\r\n Approved = 'Approved',\r\n Disapproved = 'Disapproved',\r\n Processing = 'Processing'\r\n}\r\n\r\nexport enum InterfaceMethod {\r\n Sftp = 'Sftp',\r\n Ftp = 'Ftp',\r\n LtxFtp = 'LtxFtp',\r\n Email = 'Email',\r\n Manual = 'Manual'\r\n}\r\n\r\nexport enum InterfaceType {\r\n CatalogReceive = 'CatalogReceive',\r\n CatalogSend = 'CatalogSend',\r\n OrderReceive = 'OrderReceive',\r\n OrderSend = 'OrderSend'\r\n}\r\n\r\nexport enum OrganizationReadinessStatus {\r\n Announced = 'Announced',\r\n ComingSoon = 'ComingSoon',\r\n Ready = 'Ready',\r\n Hidden = 'Hidden'\r\n}\r\n\r\nexport interface Organization {\r\n id: string;\r\n name: string;\r\n email: string;\r\n // iban: string;\r\n // btwNumber: string;\r\n houseNumber: string;\r\n street: string;\r\n postalCode: string;\r\n city: string;\r\n country: string;\r\n telephoneNumber: string;\r\n organizationType: OrganizationType;\r\n isAdmin: boolean;\r\n imageURL: string;\r\n image: any;\r\n description: string;\r\n website: string;\r\n softwareId: string;\r\n maturityStatus: number;\r\n connectStatus?: ConnectStatus;\r\n connectionDate?: Date;\r\n creationDate: Date;\r\n subscriptionId: string;\r\n subscriptionName?: string;\r\n numberOfLiveConnections: number;\r\n lastTrafficDate?: Date;\r\n supportsCatalogData: OrganizationReadinessStatus;\r\n supportsOrderData: OrganizationReadinessStatus;\r\n supportsStockData: OrganizationReadinessStatus;\r\n accountStatus: OrganizationReadinessStatus;\r\n ordersTrafficCounter: number;\r\n}\r\n\r\nexport const EmptyOrganization: Organization = {\r\n id: '',\r\n email: '',\r\n name: '',\r\n // iban: '',\r\n // btwNumber: '',\r\n houseNumber: '',\r\n street: '',\r\n postalCode: '',\r\n city: '',\r\n country: '',\r\n telephoneNumber: '',\r\n organizationType: OrganizationType.Retailer,\r\n isAdmin: false,\r\n imageURL: '',\r\n image: undefined,\r\n description: '',\r\n website: '',\r\n softwareId: '',\r\n maturityStatus: 100,\r\n connectStatus: undefined,\r\n creationDate: new Date(),\r\n subscriptionId: '',\r\n subscriptionName: '',\r\n numberOfLiveConnections: 0,\r\n supportsCatalogData: OrganizationReadinessStatus.Announced,\r\n supportsOrderData: OrganizationReadinessStatus.Announced,\r\n supportsStockData: OrganizationReadinessStatus.Announced,\r\n accountStatus: OrganizationReadinessStatus.Announced,\r\n ordersTrafficCounter: 0\r\n};\r\n\r\nexport type OrganizationModel = {\r\n organization: Organization;\r\n catalogs: Catalog[];\r\n stocks: Stock[];\r\n identifiers: OrganizationIdentifier[];\r\n};\r\n\r\nexport type OrganizationAccessTokenModel = { \r\n accessToken: string\r\n}\r\n\r\nexport type OrganizationManageModel = {\r\n organization: Organization;\r\n accounts: AccountModel[];\r\n catalogs: Catalog[];\r\n stocks: Stock[];\r\n connections: OrganizationConnectionModel[];\r\n identifiers: OrganizationIdentifier[];\r\n interfaces: OrganizationInterface[];\r\n settings: OrganizationInterfaceSetting[];\r\n};\r\n\r\nexport type OrganizationConnectionModel = {\r\n organizationId: string;\r\n organizationName: string;\r\n creationDate: Date;\r\n};\r\n\r\nexport type DataConnection = {\r\n id: string;\r\n sourceOrganizationId: string;\r\n targetOrganizationId: string;\r\n creationDate: Date;\r\n catalogId: string;\r\n stockId: string;\r\n downloads: number;\r\n lastDownloadDate?: Date;\r\n active: boolean;\r\n};\r\n\r\nexport type OrganizationConnection = {\r\n id: string;\r\n sourceOrganizationId: string;\r\n targetOrganizationId: string;\r\n creationDate: Date;\r\n lastTrafficDate?: Date;\r\n deleted: boolean;\r\n};\r\n\r\nexport type OrganizationInterface = {\r\n id: string;\r\n method: InterfaceMethod;\r\n type: InterfaceType;\r\n settings: Object;\r\n};\r\n\r\nexport type OrganizationInterfaceSetting = {\r\n organizationInterfaceId: string;\r\n key: string;\r\n value: string;\r\n};\r\n\r\nexport type MyOrganizationModel = {\r\n organization: Organization;\r\n catalogs: Catalog[];\r\n stocks: Stock[];\r\n catalogConnections: DataConnection[];\r\n stockConnections: DataConnection[];\r\n organizationConnections: OrganizationConnection[];\r\n interfaces: OrganizationInterface[];\r\n settings: OrganizationInterfaceSetting[];\r\n identifiers: OrganizationIdentifier[];\r\n};\r\n\r\nexport const EmptyOrganizationModel: OrganizationModel = {\r\n organization: EmptyOrganization,\r\n catalogs: [],\r\n stocks: [],\r\n identifiers: [],\r\n};\r\n\r\nexport const EmptyMyOrganizationModel: MyOrganizationModel = {\r\n organization: EmptyOrganization,\r\n catalogs: [],\r\n stocks: [],\r\n catalogConnections: [],\r\n stockConnections: [],\r\n organizationConnections: [],\r\n interfaces: [],\r\n settings: [],\r\n identifiers: [],\r\n};\r\n\r\nexport type OrganizationIdentifier = {\r\n id: string;\r\n type: string;\r\n value: string;\r\n};\r\n\r\nexport type OrderInterfaceSettingsModel = {\r\n method: InterfaceMethod;\r\n ftpUsername?: string;\r\n ftpPassword?: string;\r\n emailAddress?: string;\r\n};\r\n\r\nexport type ConnectionIdentifier = {\r\n id: string;\r\n organizationConnectionId: string;\r\n value: string;\r\n softwareId?: string;\r\n creationDate: Date;\r\n};\r\n","import { css } from '@emotion/core';\r\nimport styled from '@emotion/styled';\r\n\r\ntype OwnProps = {\r\n scale?: boolean;\r\n space?: boolean;\r\n vertical?: boolean;\r\n};\r\n\r\ntype AllProps = OwnProps;\r\n\r\nexport const XRow = styled('div')`\r\n display: flex;\r\n width: ${props => (props.scale ? '200px' : '100%')};\r\n justify-content: ${props => (props.space ? 'space-between' : '')};\r\n flex-direction: ${props => (!props.vertical ? 'row' : 'column')};\r\n`;\r\n\r\nexport const XRowCell = styled('div')({\r\n flex: '1'\r\n});\r\n","import {\r\n ActionTypes,\r\n ConfirmationState,\r\n MessageType,\r\n NotificationState,\r\n SnackbarState,\r\n ViewType\r\n} from './types';\r\n\r\n// action creator types\r\nexport type ShowDataForm = {\r\n type: ActionTypes.SHOW_DATAFORM;\r\n};\r\n\r\nexport type ShowSnackbar = {\r\n type: ActionTypes.SHOW_SNACKBAR;\r\n payload: SnackbarState;\r\n};\r\n\r\nexport type ShowNotification = {\r\n type: ActionTypes.SHOW_NOTIFICATION;\r\n payload: NotificationState;\r\n};\r\n\r\nexport type ShowConfirmation = {\r\n type: ActionTypes.SHOW_CONFIRMATION;\r\n payload: ConfirmationState;\r\n};\r\n\r\nexport type HideNotification = {\r\n type: ActionTypes.HIDE_NOTIFICATION;\r\n};\r\n\r\nexport type HideConfirmation = {\r\n type: ActionTypes.HIDE_CONFIRMATION;\r\n};\r\n\r\nexport type ChangeView = {\r\n type: ActionTypes.CHANGE_VIEW;\r\n screen: string;\r\n payload: ViewType;\r\n};\r\n\r\n// action creators\r\nexport const showSnackbar = (message: string, type: MessageType = 'info'): ShowSnackbar => ({\r\n type: ActionTypes.SHOW_SNACKBAR,\r\n payload: {\r\n show: true,\r\n message,\r\n type\r\n }\r\n});\r\n\r\nexport const changeView = (screen: string, type: ViewType): ChangeView => ({\r\n type: ActionTypes.CHANGE_VIEW,\r\n screen,\r\n payload: type\r\n});\r\n\r\nexport const showNotification = (\r\n message: string,\r\n type: MessageType = 'info'\r\n): ShowNotification => ({\r\n type: ActionTypes.SHOW_NOTIFICATION,\r\n payload: {\r\n show: true,\r\n message,\r\n type\r\n }\r\n});\r\n\r\nexport const showConfirmation = (\r\n title: string,\r\n message: string,\r\n onConfirm: () => void\r\n): ShowConfirmation => ({\r\n type: ActionTypes.SHOW_CONFIRMATION,\r\n payload: {\r\n show: true,\r\n message,\r\n title,\r\n onConfirm\r\n }\r\n});\r\n\r\nexport const hideNotification = (): HideNotification => ({\r\n type: ActionTypes.HIDE_NOTIFICATION\r\n});\r\n\r\nexport const hideConfirmation = () => ({\r\n type: ActionTypes.HIDE_CONFIRMATION\r\n});\r\n\r\nexport const showDataForm = (): ShowDataForm => ({\r\n type: ActionTypes.SHOW_DATAFORM\r\n});\r\n\r\nexport type Action =\r\n | ShowDataForm\r\n | ShowSnackbar\r\n | ShowNotification\r\n | ShowConfirmation\r\n | HideConfirmation\r\n | HideNotification\r\n | ChangeView;\r\n","import styled from '@emotion/styled';\r\nimport { Select, Button } from '@material-ui/core';\r\n\r\nconst ActionButton = styled('a')(`\r\nposition: relative;\r\ndisplay: inline-flex;\r\nalign-items: center;\r\njustify-content: center;\r\nmin-width: 3.6rem;\r\nmargin: 0;\r\npadding: 4px 18px;\r\nbackground: linear-gradient(180deg,#fff,#f9fafb);\r\nborder: .1rem solid var(--p-border,#c4cdd5);\r\nbox-shadow: 0 1px 0 0 rgba(22,29,37,.05);\r\nborder-radius: 3px;\r\ncolor: #212b36;\r\ntext-align: center;\r\ncursor: pointer;\r\nline-height: 20px;\r\n-webkit-user-select: none;\r\nfont-weight: 600!important;\r\nuser-select: none;\r\ntext-decoration: none;\r\ntransition-property: background,border,box-shadow;\r\ntransition-duration: var(--p-override-none,.2s);\r\ntransition-timing-function: var(--p-override-none,cubic-bezier(.64,0,.35,1));\r\n-webkit-tap-highlight-color: transparent;\r\nfont-size: 13px;\r\nheight: 32px;\r\n`);\r\n\r\nexport const XActionButton = styled(ActionButton)(`\r\nposition: relative;\r\nbackground: rgb(231, 33, 123);\r\nborder-width: 0;\r\nborder-color: transparent;\r\nbox-shadow: rgba(0, 0, 0, 0.05) 0px 1px 0px 0px, rgba(0, 0, 0, 0.2) 0px -1px 0px 0px inset;\r\ncolor: white!important;\r\n\r\n&:hover {\r\n background: rgb(193, 31, 105);\r\n border-color: transparent;\r\n}\r\n`);\r\n\r\nexport const XSecActionButton = styled(ActionButton)(`\r\nposition: relative;\r\nborder-width: 1;\r\nborder-color: rgb(186, 191, 196);\r\ncolor: rgb(32, 34, 35)!important;\r\n`);\r\n\r\nexport const XActionSelect = styled(Select)(`\r\nborder-radius: 3px;\r\nheight: 32px!important;\r\nborder: .1rem solid rgb(186, 191, 196);\r\nfont-weight: 600!important;\r\ncolor: #212b36!important;\r\nwidth: inherit!important;\r\n\r\n&::before, \r\n&::after {\r\n display: none\r\n}\r\n\r\n& .MuiSelect-select.MuiSelect-select {\r\n padding: 4px 18px;\r\n padding-right: 40px;\r\n}\r\n\r\n& .MuiSelect-icon {\r\n right: 10px;\r\n}\r\n`);\r\n\r\nexport const XDisabledButton = styled(ActionButton)(`\r\nbackground-color: lightgray;\r\npointer-events: none;\r\n`);\r\n\r\nexport const XSubmitButton = styled(Button)(`\r\nposition: relative;\r\ndisplay: inline-flex;\r\nalign-items: center;\r\njustify-content: center;\r\nmin-width: 3.6rem;\r\nmargin: 0;\r\npadding: 4px 18px;\r\nborder: .1rem solid var(--p-border,#c4cdd5);\r\nborder-radius: 3px;\r\ntext-align: center;\r\ncursor: pointer;\r\nline-height: 20px;\r\n-webkit-user-select: none;\r\nfont-weight: 600!important;\r\nuser-select: none;\r\ntext-decoration: none;\r\ntransition-property: background,border,box-shadow;\r\ntransition-duration: var(--p-override-none,.2s);\r\ntransition-timing-function: var(--p-override-none,cubic-bezier(.64,0,.35,1));\r\n-webkit-tap-highlight-color: transparent;\r\nfont-size: 13px;\r\nheight: 32px;\r\nbackground: rgb(231, 33, 123);\r\nborder-width: 0;\r\nborder-color: transparent;\r\nbox-shadow: rgba(0, 0, 0, 0.05) 0px 1px 0px 0px, rgba(0, 0, 0, 0.2) 0px -1px 0px 0px inset;\r\ncolor: white!important;\r\ntext-transform: unset !important;\r\n&:hover {\r\n background: rgb(193, 31, 105);\r\n border-color: transparent;\r\n}\r\n`);\r\n","import { Dispatch } from 'react';\r\nimport { AnyAction } from 'redux';\r\nimport { FetchStatus } from 'src/store/catalogs/actions';\r\nimport { ApiError, ApiResult } from './apiClient';\r\n\r\nexport const requestApiThunk = (\r\n action: (status: FetchStatus, data?: any, errors?: ApiError[]) => AnyAction,\r\n apiCall: () => Promise,\r\n continueWith?: (dispatch: Dispatch) => Promise\r\n) => {\r\n return async (dispatch: Dispatch) => {\r\n dispatch(action('request'));\r\n\r\n const apiResult = await apiCall();\r\n if (apiResult.IsSuccess) {\r\n dispatch(action('success', apiResult.Data));\r\n\r\n if (continueWith) continueWith(dispatch);\r\n } else {\r\n dispatch(action('failure', undefined, apiResult.Errors));\r\n }\r\n return apiResult;\r\n };\r\n};\r\n\r\nexport const commandAction = (\r\n status: FetchStatus,\r\n type: any,\r\n errors?: ApiError[],\r\n dontCountLoading: boolean = true\r\n): CommandAction => ({\r\n type,\r\n status,\r\n errors,\r\n dontCountLoading\r\n});\r\n\r\nexport type CommandAction = {\r\n type: any;\r\n status: FetchStatus;\r\n errors?: ApiError[];\r\n dontCountLoading: boolean;\r\n};\r\n\r\nexport const delayExecution = (startTime: number, minimalTime: number, delegate: any) => {\r\n const dif = new Date().getTime() - startTime;\r\n if (dif > minimalTime) delegate();\r\n else window.setTimeout(() => delegate(), minimalTime - dif);\r\n};\r\n","import * as jwtDecode from 'jwt-decode';\r\nimport { API_URL_COMMAND, API_URL_QUERY } from 'src/constants/ApiRoutes';\r\n\r\nexport type ApiError = {\r\n errorCode: any;\r\n errorDescription: string;\r\n};\r\n\r\nexport type ApiResult = {\r\n IsSuccess: boolean;\r\n StatusCode: number;\r\n\r\n Response?: Response;\r\n JsonResponse?: any;\r\n Errors?: ApiError[];\r\n\r\n Data?: T;\r\n};\r\n\r\nexport type ApiClientConfig = {\r\n onTokenExpired: any;\r\n};\r\n\r\nlet config: ApiClientConfig = {\r\n onTokenExpired: undefined\r\n};\r\n\r\nconst setConfig = (newConfig: ApiClientConfig) => {\r\n config = newConfig;\r\n};\r\n\r\nconst postCommandAsync = async (command: any, file?: any[]): Promise => {\r\n return postDataAsync(API_URL_COMMAND, command, file);\r\n};\r\n\r\nconst postQueryAsync = async (queryName: string, parameters?: any): Promise => {\r\n const query = {\r\n QueryName: queryName,\r\n ...parameters\r\n };\r\n\r\n return postDataAsync(API_URL_QUERY, query);\r\n};\r\n\r\nconst postDataAsync = async (url: string, data: any, files?: any[]): Promise => {\r\n console.log('Posting data to api...');\r\n const token = sessionStorage.getItem('auth_token') || '';\r\n \r\n try {\r\n const formData = new FormData();\r\n if (files) {\r\n for (const file of files) formData.append('file', file);\r\n }\r\n formData.append('data', JSON.stringify(data));\r\n\r\n const response = await fetch(url, {\r\n method: 'POST',\r\n headers: {\r\n Authorization: 'Bearer ' + token\r\n },\r\n body: formData\r\n });\r\n\r\n if (response.status === 200) {\r\n const json = await response.json();\r\n return {\r\n IsSuccess: true,\r\n StatusCode: response.status,\r\n Response: response,\r\n JsonResponse: json,\r\n Data: json.data,\r\n Errors: json.errors\r\n };\r\n } else {\r\n console.log('Api request status code: ' + response.status);\r\n\r\n if (response.status === 401) {\r\n if (token) {\r\n const tokenResult = jwtDecode(token);\r\n const time = new Date().getTime() / 1000;\r\n if (tokenResult.exp < time) {\r\n // Token expired\r\n console.log('token expired');\r\n config.onTokenExpired();\r\n }\r\n }\r\n }\r\n\r\n const json = await response.json();\r\n return {\r\n IsSuccess: false,\r\n StatusCode: response.status,\r\n Response: response,\r\n JsonResponse: json,\r\n Data: json.data,\r\n Errors: json.errors\r\n };\r\n }\r\n } catch (err) {\r\n console.log('[ERROR] Api not available', err);\r\n\r\n return {\r\n IsSuccess: false,\r\n StatusCode: 0\r\n };\r\n }\r\n};\r\n\r\nexport const apiClient = {\r\n setConfig,\r\n postDataAsync,\r\n postCommandAsync,\r\n postQueryAsync\r\n};\r\n","import errorMappings from './../constants/ErrorMessages.NL.json'; // TODO dynamic load for other languages\r\nimport { ApiError } from './apiClient';\r\n\r\nexport const mapError = (error?: ApiError[]) => {\r\n if (!error) {\r\n // Call was unsuccessful but we didn't get an error?\r\n // Shouldn't happen.\r\n const defaultMapping = errorMappings.find(e => e.errorCode === 'default');\r\n return defaultMapping?.errorMessage;\r\n }\r\n\r\n const errorCode = error[0].errorCode;\r\n let errorMapping = errorMappings.find(e => e.errorCode === errorCode);\r\n if (!errorMapping) {\r\n errorMapping = errorMappings.find(e => e.errorCode === 'default');\r\n }\r\n\r\n return errorMapping?.errorMessage;\r\n};\r\n","import { css } from '@emotion/core';\r\nimport styled from '@emotion/styled';\r\n\r\nexport const XContainer = styled('div')({\r\n padding: '15px'\r\n});\r\n","import { AnyAction, Dispatch } from 'redux';\r\nimport { commandAction, requestApiThunk } from 'src/helpers/actionHelpers';\r\nimport { ApiError, ApiResult } from 'src/helpers/apiClient';\r\nimport { EditOrganizationData } from 'src/models/domain/EditOrganization';\r\nimport { MyOrganizationModel, OrderInterfaceSettingsModel, Organization, ConnectionIdentifier, OrganizationAccessTokenModel, OrganizationIdentifier, OrganizationManageModel, OrganizationModel } from 'src/models/Organization';\r\nimport { OrganizationFormData, RegisterAccountFormData } from '../accounts/types';\r\nimport { addOrganization,\r\n addOrganizationConnection,\r\n addConnectionIdentifier,\r\n addOrganizationIdentifier,\r\n deleteConnection, \r\n deleteOrganization, \r\n deleteConnectionIdentifier, \r\n deleteOrganizationIdentifier, \r\n downloadCatalog, \r\n editOrganization, \r\n getManageOrganization, \r\n getMyOrganization, \r\n getOrganization, \r\n getOrganizationAccessToken,\r\n getConnectionIdentifiers, \r\n getOrganizationIdentifiers, \r\n listOrganizationConnections, \r\n listOrganizations, \r\n listUnconfiguredFtpOrganizations, \r\n saveOrderInterfaceSettings,\r\n validateFtpAccess,\r\n validateSftpAccess,\r\n deleteOrderInterface,\r\n deleteOrganizationAccessToken\r\n} from './api';\r\nimport { ActionTypes } from './types';\r\n\r\ntype FetchStatus = 'request' | 'success' | 'failure';\r\n\r\nexport type GetOrganizationAction = {\r\n type: ActionTypes.GET_ORGANIZATION;\r\n status: FetchStatus;\r\n errors?: ApiError[];\r\n payload: { organization?: OrganizationModel };\r\n};\r\n\r\nexport type GetOrganizationAccessTokenAction = {\r\n type: ActionTypes.GET_ORGANIZATION_ACCESS_TOKEN;\r\n status: FetchStatus;\r\n errors?: ApiError[];\r\n payload: {accessToken?: OrganizationAccessTokenModel};\r\n};\r\n\r\nexport type DeleteOrganizationAccessTokenAction = { \r\n type: ActionTypes.DELETE_ORGANIZATION_ACCESS_TOKEN;\r\n status: FetchStatus;\r\n errors?: ApiError[];\r\n}\r\n\r\nexport type GetManageOrganizationAction = {\r\n type: ActionTypes.GET_MANAGE_ORGANIZATION;\r\n status: FetchStatus;\r\n errors?: ApiError[];\r\n payload: { organization?: OrganizationManageModel };\r\n};\r\n\r\nexport type GetMyOrganizationAction = {\r\n type: ActionTypes.GET_MY_ORGANIZATION;\r\n status: FetchStatus;\r\n errors?: ApiError[];\r\n payload: { myOrganization?: MyOrganizationModel };\r\n};\r\n\r\nexport type GetOrganizationIdentifiersAction = {\r\n type: ActionTypes.GET_ORGANIZATION_IDENTIFIERS;\r\n status: FetchStatus;\r\n errors?: ApiError[];\r\n payload: { identifiers?: OrganizationIdentifier[] };\r\n};\r\n\r\nexport type GetOrganizationsAction = {\r\n type: ActionTypes.GET_ORGANIZATIONS;\r\n status: FetchStatus;\r\n errors?: ApiError[];\r\n payload: { organizations?: Organization[] };\r\n};\r\n\r\nexport type GetOrganizationConnectionsAction = {\r\n type: ActionTypes.GET_ORGANIZATION_CONNECTIONS;\r\n status: FetchStatus;\r\n errors?: ApiError[];\r\n payload: { organizations?: Organization[] };\r\n};\r\n\r\nexport type GetUnconfiguredFtpOrganizationsAction = {\r\n type: ActionTypes.GET_UNCONFIGURED_FTP_ORGANIZATIONS;\r\n status: FetchStatus;\r\n errors?: ApiError[];\r\n payload: { organizations?: Organization[] };\r\n};\r\n\r\nexport type AddOrganizationAction = {\r\n type: ActionTypes.ADD_ORGANIZATION;\r\n status: FetchStatus;\r\n errors?: ApiError[];\r\n payload: { formData?: RegisterAccountFormData };\r\n};\r\n\r\n\r\nexport type SaveOrderInterfaceSettings = {\r\n type: ActionTypes.SAVE_ORDER_INTERFACE_SETTINGS;\r\n status: FetchStatus;\r\n errors?: ApiError[];\r\n payload: { data?: OrderInterfaceSettingsModel };\r\n};\r\n\r\nexport type DeleteOrderInterface = {\r\n type: ActionTypes.DELETE_ORDER_INTERFACE;\r\n status: FetchStatus;\r\n errors?: ApiError[];\r\n payload: { data?: boolean };\r\n};\r\n\r\nexport type StoreFormAction = {\r\n type: ActionTypes.STORE_FORM;\r\n status: FetchStatus;\r\n errors?: ApiError[];\r\n payload: { data: RegisterAccountFormData };\r\n};\r\n\r\nexport type GetConnectionIdentifiersAction = {\r\n type: ActionTypes.GET_CONNECTION_IDENTIFIERS;\r\n status: FetchStatus;\r\n errors?: ApiError[];\r\n payload: { connectionIdentifiers?: ConnectionIdentifier[] };\r\n};\r\n\r\nconst getUnconfiguredFtpOrganizationsAction = (\r\n status: FetchStatus,\r\n data?: Organization[],\r\n errors?: ApiError[]\r\n): GetUnconfiguredFtpOrganizationsAction => ({\r\n type: ActionTypes.GET_UNCONFIGURED_FTP_ORGANIZATIONS,\r\n status,\r\n errors,\r\n payload: {\r\n organizations: data\r\n }\r\n});\r\n\r\nconst getMyOrganizationAction = (\r\n status: FetchStatus,\r\n data?: MyOrganizationModel,\r\n errors?: ApiError[]\r\n): GetMyOrganizationAction => ({\r\n type: ActionTypes.GET_MY_ORGANIZATION,\r\n status,\r\n errors,\r\n payload: {\r\n myOrganization: data\r\n }\r\n});\r\n\r\nconst getOrganizationIdentifiersAction = (\r\n status: FetchStatus,\r\n identifiers?: OrganizationIdentifier[],\r\n errors?: ApiError[]\r\n): GetOrganizationIdentifiersAction => ({\r\n type: ActionTypes.GET_ORGANIZATION_IDENTIFIERS,\r\n status,\r\n errors,\r\n payload: {\r\n identifiers\r\n }\r\n});\r\n\r\nconst getOrganizationAction = (\r\n status: FetchStatus,\r\n data?: OrganizationModel,\r\n errors?: ApiError[]\r\n): GetOrganizationAction => ({\r\n type: ActionTypes.GET_ORGANIZATION,\r\n status,\r\n errors,\r\n payload: {\r\n organization: data\r\n }\r\n});\r\n\r\nconst getOrganizationAccessTokenAction = (\r\n status: FetchStatus,\r\n data?: OrganizationAccessTokenModel,\r\n errors?: ApiError[]\r\n): GetOrganizationAccessTokenAction => ({\r\n type: ActionTypes.GET_ORGANIZATION_ACCESS_TOKEN,\r\n status,\r\n errors,\r\n payload: {accessToken: data}\r\n});\r\n\r\nconst getManageOrganizationAction = (\r\n status: FetchStatus,\r\n data?: OrganizationManageModel,\r\n errors?: ApiError[]\r\n): GetManageOrganizationAction => ({\r\n type: ActionTypes.GET_MANAGE_ORGANIZATION,\r\n status,\r\n errors,\r\n payload: {\r\n organization: data\r\n }\r\n});\r\n\r\nconst getOrganizationsAction = (\r\n status: FetchStatus,\r\n data?: Organization[],\r\n errors?: ApiError[]\r\n): GetOrganizationsAction => ({\r\n type: ActionTypes.GET_ORGANIZATIONS,\r\n status,\r\n errors,\r\n payload: {\r\n organizations: data\r\n }\r\n});\r\n\r\nconst getOrganizationConnectionsAction = (\r\n status: FetchStatus,\r\n data?: Organization[],\r\n errors?: ApiError[]\r\n): GetOrganizationConnectionsAction => ({\r\n type: ActionTypes.GET_ORGANIZATION_CONNECTIONS,\r\n status,\r\n errors,\r\n payload: {\r\n organizations: data\r\n }\r\n});\r\n\r\nconst getConnectionIdentifiersAction = (\r\n status: FetchStatus,\r\n connectionIdentifiers?: ConnectionIdentifier[],\r\n errors?: ApiError[]\r\n): GetConnectionIdentifiersAction => ({\r\n type: ActionTypes.GET_CONNECTION_IDENTIFIERS,\r\n status,\r\n errors,\r\n payload: {\r\n connectionIdentifiers\r\n }\r\n});\r\n\r\nexport const addOrganizationAction = (\r\n status: FetchStatus,\r\n data?: RegisterAccountFormData,\r\n errors?: ApiError[]\r\n): AddOrganizationAction => ({\r\n type: ActionTypes.ADD_ORGANIZATION,\r\n status,\r\n errors,\r\n payload: {\r\n formData: data\r\n }\r\n});\r\n\r\nexport const storeFormAction = (data: RegisterAccountFormData) => ({\r\n type: ActionTypes.STORE_FORM,\r\n errors: [],\r\n status: 'success',\r\n payload: { data }\r\n});\r\n\r\nexport const getMyOrganizationThunk = () => {\r\n return requestApiThunk(getMyOrganizationAction, getMyOrganization);\r\n};\r\n\r\nexport const getOrganizationIdentifiersThunk = () => {\r\n return requestApiThunk(getOrganizationIdentifiersAction, getOrganizationIdentifiers);\r\n};\r\n\r\nexport const getOrganizationThunk = (organizationId: string) => {\r\n return requestApiThunk(getOrganizationAction, () => getOrganization(organizationId));\r\n};\r\n\r\nexport const getOrganizationAccessTokenThunk = (organizationId: string, generateNew: boolean) => { \r\n return requestApiThunk(getOrganizationAccessTokenAction, () => getOrganizationAccessToken(organizationId, generateNew));\r\n}\r\n\r\nexport const deleteOrganizationAccessTokenThunk = (organizationId: string) => { \r\n return requestApiThunk(\r\n (status: FetchStatus, data?: any, errors?: ApiError[]) =>\r\n commandAction(status, ActionTypes.DELETE_ORGANIZATION_ACCESS_TOKEN, errors),\r\n () => deleteOrganizationAccessToken(organizationId)\r\n );\r\n}\r\n\r\nexport const getManageOrganizationThunk = (organizationId: string) => {\r\n return requestApiThunk(getManageOrganizationAction, () => getManageOrganization(organizationId));\r\n};\r\n\r\nexport const deleteOrganizationThunk = (id: string) => {\r\n return requestApiThunk(\r\n (status: FetchStatus, data?: any, errors?: ApiError[]) =>\r\n commandAction(status, ActionTypes.DELETE_ORGANIZATION, errors),\r\n () => deleteOrganization(id)\r\n );\r\n};\r\n\r\nexport const downloadCatalogThunk = (\r\n catalogId: string,\r\n catalogVersionId: string,\r\n fileFormat: string,\r\n fileFormatVersion: string\r\n) => {\r\n return requestApiThunk(\r\n (status: FetchStatus, data?: any, errors?: ApiError[]) =>\r\n commandAction(status, ActionTypes.CONSUME_DATA_CONNECTION, errors),\r\n () => downloadCatalog(catalogId, catalogVersionId, fileFormat, fileFormatVersion)\r\n );\r\n};\r\n\r\nexport const getOrganizationsThunk = () => {\r\n return requestApiThunk(getOrganizationsAction, listOrganizations);\r\n};\r\n\r\nexport const getOrganizationConnectionsThunk = (id?: string) => {\r\n return requestApiThunk(getOrganizationConnectionsAction, () => listOrganizationConnections(id));\r\n};\r\n\r\nexport const getUnconfiguredFtpOrganizationsThunk = () => {\r\n return requestApiThunk(getUnconfiguredFtpOrganizationsAction, () => listUnconfiguredFtpOrganizations());\r\n};\r\n\r\nexport const editOrganizationThunk = (organization: Organization) => {\r\n const editData: EditOrganizationData = {\r\n OrganizationId: organization.id,\r\n Name: organization.name,\r\n CompanyEmail: organization.email,\r\n Description: organization.description,\r\n Image: organization.image,\r\n Street: organization.street,\r\n HouseNumber: organization.houseNumber,\r\n PostalCode: organization.postalCode,\r\n City: organization.city,\r\n Country: organization.country,\r\n TelephoneNumber: organization.telephoneNumber,\r\n Website: organization.website,\r\n MaturityStatus: organization.maturityStatus,\r\n SoftwareId: organization.softwareId,\r\n subscriptionId: organization.subscriptionId,\r\n SupportsCatalogData: organization.supportsCatalogData,\r\n SupportsOrderData: organization.supportsOrderData,\r\n SupportsStockData: organization.supportsStockData,\r\n AccountStatus: organization.accountStatus\r\n // IBAN: organization.iban,\r\n // BtwNumber: organization.btwNumber\r\n };\r\n\r\n return requestApiThunk(\r\n (status: FetchStatus, data?: any, errors?: ApiError[]) =>\r\n commandAction(status, ActionTypes.EDIT_ORGANIZATION, errors),\r\n () => editOrganization(editData)\r\n );\r\n};\r\n\r\nexport const addOrganizationThunk = (formData: RegisterAccountFormData) => {\r\n return requestApiThunk(\r\n (status: FetchStatus, data?: any, errors?: ApiError[]) =>\r\n commandAction(status, ActionTypes.ADD_ORGANIZATION, errors),\r\n () => addOrganization(formData)\r\n );\r\n};\r\n\r\nexport const saveOrderInterfaceSettingsThunk = (organizationId: string, settings: OrderInterfaceSettingsModel) => {\r\n return requestApiThunk((status: FetchStatus, data?: any, errors?: ApiError[]) => commandAction(status, ActionTypes.SAVE_ORDER_INTERFACE_SETTINGS, errors), \r\n () => saveOrderInterfaceSettings(organizationId, settings),\r\n getMyOrganizationThunk());\r\n}\r\n\r\nexport const deleteOrderInterfaceThunk = (interfaceId: string) => {\r\n return requestApiThunk((status: FetchStatus, data?: any, errors?: ApiError[]) => commandAction(status, ActionTypes.DELETE_ORDER_INTERFACE, errors),\r\n () => deleteOrderInterface(interfaceId));\r\n}\r\n\r\nexport const deleteConnectionThunk = (organizationId: string) => {\r\n return requestApiThunk(\r\n (status: FetchStatus, data?: any, errors?: ApiError[]) =>\r\n commandAction(status, ActionTypes.DELETE_ORGANIZATION_CONNECTION, errors),\r\n () => deleteConnection(organizationId),\r\n getOrganizationConnectionsThunk()\r\n );\r\n};\r\n\r\nexport const deleteOrganizationIdentifierThunk = (identifierId: string) => {\r\n return requestApiThunk(\r\n (status: FetchStatus, data?: any, errors?: ApiError[]) =>\r\n commandAction(status, ActionTypes.DELETE_ORGANIZATION_IDENTIFIER, errors),\r\n () => deleteOrganizationIdentifier(identifierId),\r\n getOrganizationIdentifiersThunk()\r\n );\r\n};\r\n\r\nexport const addOrganizationIdentifierThunk = (\r\n type: string,\r\n value: string,\r\n organizationId?: string\r\n) => {\r\n return requestApiThunk(\r\n (status: FetchStatus, data?: any, errors?: ApiError[]) =>\r\n commandAction(status, ActionTypes.ADD_ORGANIZATION_IDENTIFIER, errors),\r\n () => addOrganizationIdentifier(type, value, organizationId),\r\n getOrganizationIdentifiersThunk()\r\n );\r\n};\r\n\r\n\r\nexport const addOrganizationConnectionThunk = (\r\n sourceOrganizationId: string,\r\n targetOrganizationId: string\r\n) => {\r\n return requestApiThunk(\r\n (status: FetchStatus, data?: any, errors?: ApiError[]) =>\r\n commandAction(status, ActionTypes.ADD_ORGANIZATION_IDENTIFIER, errors),\r\n () => addOrganizationConnection(sourceOrganizationId , targetOrganizationId)\r\n );\r\n};\r\n\r\n\r\nexport const validateFtpAccessThunk = (\r\n url: string,\r\n user: string,\r\n pass: string\r\n) => {\r\n return requestApiThunk(\r\n (status: FetchStatus, data?: any, errors?: ApiError[]) =>\r\n commandAction(status, ActionTypes.VALIDATE_FTP_ACCESS, errors),\r\n () => validateFtpAccess(url, user, pass)\r\n );\r\n};\r\n\r\nexport const validateSftpAccessThunk = (\r\n url: string,\r\n user: string,\r\n pass: string) => {\r\n return requestApiThunk(\r\n (status: FetchStatus, data?: any, errors?: ApiError[]) =>\r\n commandAction(status, ActionTypes.VALIDATE_SFTP_ACCESS, errors),\r\n () => validateSftpAccess(url, user, pass)\r\n );\r\n};\r\n\r\nexport const getConnectionIdentifiersThunk = (organizationId: string) => {\r\n return requestApiThunk(getConnectionIdentifiersAction, () => getConnectionIdentifiers(organizationId));\r\n};\r\n\r\nexport const addConnectionIdentifierThunk = (\r\n organizationConnectionId: string,\r\n value: string,\r\n softwareId?: string\r\n) => {\r\n return requestApiThunk(\r\n (status: FetchStatus, data?: any, errors?: ApiError[]) =>\r\n commandAction(status, ActionTypes.ADD_CONNECTION_IDENTIFIER, errors),\r\n () => addConnectionIdentifier(organizationConnectionId, value, softwareId)\r\n );\r\n};\r\n\r\nexport const deleteConnectionIdentifierThunk = (identifierId: string) => {\r\n return requestApiThunk(\r\n (status: FetchStatus, data?: any, errors?: ApiError[]) =>\r\n commandAction(status, ActionTypes.DELETE_CONNECTION_IDENTIFIER, errors),\r\n () => deleteConnectionIdentifier(identifierId)\r\n )\r\n};\r\n\r\nexport type Action = GetMyOrganizationAction | GetOrganizationAction | GetManageOrganizationAction | GetUnconfiguredFtpOrganizationsAction |\r\n GetOrganizationsAction | GetOrganizationConnectionsAction | StoreFormAction | AddOrganizationAction | GetOrganizationIdentifiersAction |\r\n GetConnectionIdentifiersAction | DeleteOrderInterface | GetOrganizationAccessTokenAction | DeleteOrganizationAccessTokenAction;\r\n","import { css } from '@emotion/core';\r\nimport styled from '@emotion/styled';\r\nimport * as React from 'react';\r\n\r\ntype MyProps = {\r\n style?: any;\r\n};\r\n\r\nconst XPageContent: React.SFC = props => {\r\n return {props.children};\r\n};\r\n\r\nconst StyledPageContent = styled.div`\r\n margin: 40px auto;\r\n border-radius: 5px;\r\n max-width: 1200px;\r\n width: calc(100% - 80px);\r\n`;\r\n\r\nexport default XPageContent;\r\n","import styled from '@emotion/styled';\r\nimport * as React from 'react';\r\n\r\ntype OwnProps = {\r\n count: number | string;\r\n};\r\n\r\ntype AllProps = OwnProps;\r\n\r\nconst XCounter: React.SFC = props => {\r\n return {props.count};\r\n};\r\n\r\nexport default XCounter;\r\n\r\nconst Counter = styled('label')({\r\n // withTheme(\r\n background: '#dedede',\r\n color: '#353535',\r\n display: 'inline-block',\r\n borderRadius: '25px',\r\n fontSize: '12px',\r\n marginLeft: '4px',\r\n padding: '2px 8px',\r\n marginRight: 'auto',\r\n transform: 'translateY(-1px)'\r\n});\r\n// );\r\n","import styled from '@emotion/styled';\r\nimport { SvgIconTypeMap, Tooltip } from '@material-ui/core';\r\nimport { OverridableComponent } from '@material-ui/core/OverridableComponent';\r\nimport React from 'react';\r\nimport { Link } from 'react-router-dom';\r\nimport XField from './XField';\r\nimport XCounter from '../shared/XCounter';\r\nimport { XPaperTitle } from './XPaper';\r\nimport * as H from 'history';\r\nimport XGoBack from '../shared/XGoBack';\r\nimport { Translation } from 'react-i18next';\r\n\r\nexport interface HeaderIcon {\r\n icon: OverridableComponent>;\r\n name: string;\r\n toolTip: string;\r\n action?: () => void;\r\n link?: string;\r\n tooltip?: string;\r\n style?: React.CSSProperties;\r\n active?: boolean;\r\n}\r\n\r\ntype OwnProps = {\r\n header: string;\r\n history?: H.History;\r\n count?: string | number;\r\n subheader?: string | React.ReactNode;\r\n search?: boolean;\r\n icons?: HeaderIcon[];\r\n customContent?: any;\r\n customContentLeft?: any;\r\n onSearch?: (text: string) => void;\r\n};\r\n\r\ntype AllProps = OwnProps;\r\n\r\nclass XPaperHeader extends React.Component {\r\n private getCustomContent() {\r\n const CustomContent = this.props.customContent;\r\n return CustomContent;\r\n }\r\n\r\n public render() {\r\n return (\r\n \r\n \r\n {this.props.history !== undefined && (\r\n
\r\n \r\n
\r\n )}\r\n
\r\n \r\n {this.props.header}{' '}\r\n {this.props.count !== undefined && }\r\n \r\n {this.props.subheader}\r\n
\r\n \r\n {this.props.customContentLeft}\r\n {this.props.search && (\r\n \r\n \r\n {t => (\r\n {\r\n if (!this.props.onSearch) return;\r\n this.props.onSearch(e.target.value);\r\n }}\r\n />\r\n )}\r\n \r\n \r\n )}\r\n \r\n {this.props.icons?.length\r\n ? this.props.icons?.map(icon => {\r\n const IconComponent = icon.icon;\r\n return (\r\n \r\n {icon.link ? (\r\n \r\n \r\n \r\n \r\n \r\n ) : (\r\n {\r\n if (icon.action) icon.action();\r\n }}>\r\n \r\n \r\n )}\r\n \r\n );\r\n })\r\n : this.props.customContent &&
{this.getCustomContent()}
}\r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default XPaperHeader;\r\n\r\nconst Row = styled.div`\r\n display: flex;\r\n`;\r\n\r\nexport const XTitle = styled.h6`\r\n font-weight: bold;\r\n color: black;\r\n margin-bottom: 0;\r\n`;\r\n\r\nexport const XSubTitle = styled.div`\r\n font-weight: 600;\r\n color: #7b7b7b;\r\n white-space: pre;\r\n\r\n & a {\r\n color: rgb(231, 33, 123);\r\n font-weight: 600;\r\n }\r\n\r\n & a:hover {\r\n color: rgb(231, 33, 123);\r\n text-decoration: underline;\r\n }\r\n`;\r\n\r\nconst ContentRight = styled.div``;\r\n\r\nconst StyledField = styled.div`\r\n display: inline-block;\r\n vertical-align: top;\r\n width: 200px;\r\n margin-right: 15px;\r\n & input {\r\n padding: 3px 0 !important;\r\n }\r\n`;\r\n\r\nconst ActionButtons = styled.div`\r\n display: inline-block;\r\n vertical-align: top;\r\n`;\r\n\r\nconst Icon = styled.div<{ active?: boolean }>`\r\n display: inline-block;\r\n cursor: pointer;\r\n margin-right: 10px;\r\n vertical-align: top;\r\n color: ${props => (props.active === false ? '#222' : 'rgb(245, 0, 87)')};\r\n\r\n &:last-of-type {\r\n margin-right: 0;\r\n }\r\n`;\r\n","import moment from 'moment';\r\nimport { FileFormat } from 'src/models/FileFormat';\r\nimport { ConnectStatus } from 'src/models/Organization';\r\n\r\nexport const formatDateToString = (\r\n date?: Date,\r\n includeTime?: boolean,\r\n utcToLocalTime?: boolean\r\n) => {\r\n if (!date) return '-';\r\n\r\n let momentDate = moment(date);\r\n if (utcToLocalTime === true) momentDate = moment.utc(date).local();\r\n\r\n let format = 'DD MMM YYYY';\r\n if (includeTime) format += ' HH:mm:ss';\r\n\r\n return momentDate.format(format);\r\n};\r\n\r\nexport const formatConnectionStatusToString = (connectionStatus?: ConnectStatus) => {\r\n return connectionStatus === ConnectStatus.Approved\r\n ? 'connected'\r\n : connectionStatus === ConnectStatus.Disapproved\r\n ? 'connectie afgewezen'\r\n : connectionStatus === ConnectStatus.Processing\r\n ? 'connectie in behandeling'\r\n : '';\r\n};\r\n\r\nexport const getImageUrl = (primary: string, secondary?: string) => {\r\n if (isNullOrEmpty(primary) && isNullOrEmpty(secondary)) return '1'; // return random value to trigger error and use backup image\r\n\r\n return isNullOrEmpty(primary) ? secondary : primary;\r\n};\r\n\r\nconst isNullOrEmpty = (url?: string) => {\r\n return !url || url.length === 0;\r\n};\r\n\r\nexport const getFileFormatOptions = (\r\n fileFormats: FileFormat[],\r\n includeNotElectronicInterchangable: boolean\r\n) => {\r\n const options: { name: string; value: any }[] = [];\r\n let formats = fileFormats;\r\n if (!includeNotElectronicInterchangable)\r\n formats = formats.filter(f => f.electronicInterchangeable);\r\n\r\n for (const format of formats) {\r\n for (const formatVersion of format.versions) {\r\n if (format.versions.length > 1) {\r\n options.push({ name: format.name + '.' + formatVersion.name , value: format.id + '|' + formatVersion.id });\r\n } else {\r\n options.push({ name: format.name , value: format.id + '|' + formatVersion.id })\r\n }\r\n }\r\n\r\n }\r\n\r\n return options;\r\n};\r\n","import { AnyAction, Dispatch } from 'redux';\r\n\r\nimport { commandAction, requestApiThunk } from 'src/helpers/actionHelpers';\r\nimport { ApiError, ApiResult } from 'src/helpers/apiClient';\r\nimport { FileFormat } from 'src/models/FileFormat';\r\nimport { Catalog, CatalogModel, CatalogValidationSummary } from '../../models/Catalog';\r\nimport { getMyOrganizationThunk } from '../organizations/actions';\r\nimport {\r\n convertCatalogFile,\r\n deleteCatalog,\r\n editCatalog,\r\n editCatalogAvailable,\r\n getCatalog,\r\n getFileFormats,\r\n listCatalogs,\r\n listSubscribedCatalogs,\r\n publishCatalog,\r\n validateCatalogFile,\r\n addCatalog,\r\n addCatalogHeader\r\n} from './api';\r\nimport { ActionTypes, CatalogFormData, EditCatalogFormData, EmptyCatalogFormData, CatalogHeaderFormData } from './types';\r\n\r\nexport type FetchStatus = 'request' | 'success' | 'failure';\r\nexport type CatalogSort = 'all' | 'new' | 'special' | 'popular' | 'top';\r\n\r\n// Action creator types\r\nexport type GetCatalogsAction = {\r\n type: ActionTypes.GET_CATALOGS;\r\n status: FetchStatus;\r\n sort: CatalogSort;\r\n errors?: ApiError[];\r\n payload: {\r\n catalogs?: Catalog[];\r\n };\r\n};\r\n\r\nexport type GetSubscribedCatalogsAction = {\r\n type: ActionTypes.GET_SUBSCRIBED_CATALOGS;\r\n status: FetchStatus;\r\n errors?: ApiError[];\r\n payload: {\r\n catalogs?: Catalog[];\r\n };\r\n};\r\n\r\nexport type ValidateCatalogFileAction = {\r\n type: ActionTypes.VALIDATE_CATALOG_FILE;\r\n status: FetchStatus;\r\n errors?: ApiError[];\r\n payload: {\r\n validateResult?: CatalogValidationSummary;\r\n };\r\n};\r\n\r\nexport type ConvertCatalogFileAction = {\r\n type: ActionTypes.CONVERT_CATALOG_FILE;\r\n status: FetchStatus;\r\n errors?: ApiError[];\r\n payload: {\r\n convertResult: any;\r\n };\r\n};\r\n\r\nexport type GetCatalogAction = {\r\n type: ActionTypes.GET_CATALOG;\r\n status: FetchStatus;\r\n errors?: ApiError[];\r\n payload: {\r\n catalog?: CatalogModel;\r\n };\r\n};\r\n\r\nexport type GetFileFormatsAction = {\r\n type: ActionTypes.GET_FILE_FORMATS;\r\n status: FetchStatus;\r\n errors?: ApiError[];\r\n payload: {\r\n fileFormats?: FileFormat[];\r\n };\r\n};\r\n\r\nexport type GetCatalogsByOrganizationAction = {\r\n type: ActionTypes.GET_CATALOGS_ORGANIZATION;\r\n status: FetchStatus;\r\n errors?: ApiError[];\r\n payload: { catalogs?: Catalog[] };\r\n};\r\n\r\nexport type GetReceivingCatalogsByOrganizationAction = {\r\n type: ActionTypes.GET_RECEIVING_CATALOGS_ORGANIZATION;\r\n status: FetchStatus;\r\n errors?: ApiError[];\r\n payload: { catalogs?: Catalog[] };\r\n};\r\n\r\nexport type PublishCatalogAction = {\r\n type: ActionTypes.PUBLISH_CATALOG;\r\n errors?: ApiError[];\r\n status: FetchStatus;\r\n};\r\n\r\nexport type StoreCatalog = {\r\n type: ActionTypes.STORE_CATALOG;\r\n status: FetchStatus;\r\n errors?: ApiError[];\r\n payload: { data: CatalogFormData };\r\n};\r\n\r\nexport type AddCatalogAction = {\r\n type: ActionTypes.ADD_CATALOG;\r\n errors?: ApiError[];\r\n status: FetchStatus;\r\n}\r\n\r\nexport type AddCatalogHeaderAction = {\r\n type: ActionTypes.ADD_CATALOG_HEADER;\r\n errors?: ApiError[];\r\n status: FetchStatus;\r\n}\r\n// Action creators\r\nexport const storeCatalogAction = (data: CatalogFormData): StoreCatalog => ({\r\n type: ActionTypes.STORE_CATALOG,\r\n errors: [],\r\n status: 'success',\r\n payload: { data }\r\n});\r\n\r\nexport const getCatalogsAction = (\r\n status: FetchStatus,\r\n sort: CatalogSort,\r\n data?: Catalog[],\r\n errors?: ApiError[]\r\n): GetCatalogsAction => ({\r\n type: ActionTypes.GET_CATALOGS,\r\n status,\r\n sort,\r\n errors,\r\n payload: {\r\n catalogs: data\r\n }\r\n});\r\n\r\nexport const getSubscribedCatalogsAction = (\r\n status: FetchStatus,\r\n data?: Catalog[],\r\n errors?: ApiError[]\r\n): GetSubscribedCatalogsAction => ({\r\n type: ActionTypes.GET_SUBSCRIBED_CATALOGS,\r\n status,\r\n errors,\r\n payload: {\r\n catalogs: data\r\n }\r\n});\r\n\r\nexport const validateCatalogFileAction = (\r\n status: FetchStatus,\r\n data?: CatalogValidationSummary,\r\n errors?: ApiError[]\r\n): ValidateCatalogFileAction => ({\r\n type: ActionTypes.VALIDATE_CATALOG_FILE,\r\n status,\r\n errors,\r\n payload: {\r\n validateResult: data\r\n }\r\n});\r\n\r\nexport const convertCatalogFileAction = (\r\n status: FetchStatus,\r\n data?: any,\r\n errors?: ApiError[]\r\n): ConvertCatalogFileAction => ({\r\n type: ActionTypes.CONVERT_CATALOG_FILE,\r\n status,\r\n errors,\r\n payload: {\r\n convertResult: data\r\n }\r\n});\r\n\r\nexport const getCatalogAction = (\r\n status: FetchStatus,\r\n data?: CatalogModel,\r\n errors?: ApiError[]\r\n): GetCatalogAction => ({\r\n type: ActionTypes.GET_CATALOG,\r\n status,\r\n errors,\r\n payload: {\r\n catalog: data\r\n }\r\n});\r\n\r\nexport const getFileFormatsAction = (\r\n status: FetchStatus,\r\n data?: FileFormat[],\r\n errors?: ApiError[]\r\n): GetFileFormatsAction => ({\r\n type: ActionTypes.GET_FILE_FORMATS,\r\n status,\r\n errors,\r\n payload: {\r\n fileFormats: data\r\n }\r\n});\r\n\r\nexport const publishCatalogAction = (\r\n status: FetchStatus,\r\n errors?: ApiError[]\r\n): PublishCatalogAction => ({\r\n type: ActionTypes.PUBLISH_CATALOG,\r\n errors,\r\n status\r\n});\r\n\r\nexport const addCatalogAction = (\r\n status: FetchStatus,\r\n errors?: ApiError[]\r\n): AddCatalogAction => ({\r\n type: ActionTypes.ADD_CATALOG,\r\n errors,\r\n status\r\n});\r\n\r\nexport const addCatalogHeaderAction = (\r\n status: FetchStatus,\r\n errors?: ApiError[]\r\n): AddCatalogHeaderAction => ({\r\n type: ActionTypes.ADD_CATALOG_HEADER,\r\n errors,\r\n status\r\n});\r\n\r\nexport const getCatalogsByOrganizationAction = (\r\n status: FetchStatus,\r\n data?: Catalog[]\r\n): GetCatalogsByOrganizationAction => ({\r\n type: ActionTypes.GET_CATALOGS_ORGANIZATION,\r\n status,\r\n payload: {\r\n catalogs: data\r\n }\r\n});\r\n\r\n// Action thunks\r\nexport const getCatalogsThunk = (sort: CatalogSort) => {\r\n return async (dispatch: Dispatch) => {\r\n dispatch(getCatalogsAction('request', sort));\r\n\r\n const apiResult = await listCatalogs(sort);\r\n if (apiResult.IsSuccess) {\r\n dispatch(getCatalogsAction('success', sort, apiResult.Data));\r\n } else {\r\n dispatch(getCatalogsAction('failure', sort, undefined, apiResult.Errors));\r\n }\r\n return apiResult;\r\n };\r\n};\r\n\r\nexport const getSubscribedCatalogsThunk = () => {\r\n return requestApiThunk(getSubscribedCatalogsAction, listSubscribedCatalogs);\r\n};\r\n\r\nexport const editCatalogAvailableThunk = (\r\n organizationIds: string[],\r\n catalogId: string,\r\n available: boolean\r\n) => {\r\n return requestApiThunk(\r\n (status: FetchStatus, data?: any, errors?: ApiError[]) =>\r\n commandAction(status, ActionTypes.EDIT_CATALOG_AVAILABLE, errors),\r\n () => editCatalogAvailable(organizationIds, catalogId, available),\r\n getMyOrganizationThunk()\r\n );\r\n};\r\n\r\nexport const editCatalogThunk = (id: string, formData: EditCatalogFormData) => {\r\n return async (dispatch: any) => {\r\n const catalogResult = await editCatalog(id, formData);\r\n if (catalogResult.IsSuccess) dispatch(getCatalogThunk(id));\r\n return catalogResult;\r\n };\r\n};\r\n\r\nexport const validateCatalogFileThunk = (\r\n fileFormat: string,\r\n fileFormatVersion: string,\r\n file: File\r\n) => {\r\n return requestApiThunk(validateCatalogFileAction, () =>\r\n validateCatalogFile(fileFormat, fileFormatVersion, file)\r\n );\r\n};\r\n\r\nexport const convertCatalogFileThunk = (\r\n fromFileFormat: string,\r\n fromFileFormatVersion: string,\r\n toFileFormat: string,\r\n toFileFormatVersion: string,\r\n file: File\r\n) => {\r\n return requestApiThunk(convertCatalogFileAction, () =>\r\n convertCatalogFile(\r\n fromFileFormat,\r\n fromFileFormatVersion,\r\n toFileFormat,\r\n toFileFormatVersion,\r\n file\r\n )\r\n );\r\n};\r\n\r\nexport const getCatalogThunk = (id: string) => {\r\n return requestApiThunk(getCatalogAction, () => getCatalog(id));\r\n};\r\n\r\nexport const deleteCatalogThunk = (id: string) => {\r\n return requestApiThunk(\r\n (status: FetchStatus, data?: any, errors?: ApiError[]) =>\r\n commandAction(status, ActionTypes.DELETE_CATALOG, errors),\r\n () => deleteCatalog(id)\r\n );\r\n};\r\n\r\nexport const getFileFormatsThunk = () => {\r\n return requestApiThunk(getFileFormatsAction, getFileFormats);\r\n};\r\n\r\nexport const publishCatalogThunk = (catalogId: string) => {\r\n return async (dispatch: any) => {\r\n dispatch(publishCatalogAction('request'));\r\n\r\n const result = await publishCatalog(catalogId);\r\n if (result.IsSuccess) {\r\n dispatch(publishCatalogAction('success'));\r\n dispatch(getCatalogThunk(catalogId));\r\n } else {\r\n dispatch(publishCatalogAction('failure'));\r\n }\r\n return result;\r\n };\r\n};\r\n\r\nexport const addCatalogThunk = (catalogFormData: CatalogFormData) => {\r\n return async (dispatch: Dispatch) => {\r\n dispatch(addCatalogAction('request'));\r\n const result = await addCatalog(catalogFormData);\r\n if (result.IsSuccess) {\r\n dispatch(addCatalogAction('success'));\r\n dispatch(storeCatalogAction(EmptyCatalogFormData));\r\n } else {\r\n dispatch(addCatalogAction('failure'));\r\n }\r\n\r\n return result;\r\n }\r\n}\r\n\r\nexport const addCatalogHeaderThunk = (catalogHeaderFormData: CatalogHeaderFormData) => {\r\n return async (dispatch: Dispatch) => {\r\n dispatch(addCatalogHeaderAction('request'));\r\n const result = await addCatalogHeader(catalogHeaderFormData);\r\n if (result.IsSuccess) {\r\n dispatch(addCatalogHeaderAction('success'));\r\n } else {\r\n dispatch(addCatalogHeaderAction('failure'));\r\n }\r\n\r\n return result;\r\n }\r\n}\r\n\r\n// Export Action creator types\r\nexport type Action =\r\n | PublishCatalogAction\r\n | ValidateCatalogFileAction\r\n | ConvertCatalogFileAction\r\n | GetSubscribedCatalogsAction\r\n | GetCatalogsAction\r\n | GetCatalogAction\r\n | GetCatalogsByOrganizationAction\r\n | GetFileFormatsAction\r\n | StoreCatalog\r\n | AddCatalogAction\r\n | AddCatalogHeaderAction;\r\n","import React, { Component, ErrorInfo, ReactNode } from 'react';\r\nimport XNoContent from 'src/components/domain/XNoContent';\r\nimport ErrorImage from 'src/style/images/error-broken.svg';\r\nimport XPageContent from 'src/components/layout/XPageContent';\r\nimport { XPaper } from 'src/components/layout/XPaper';\r\nimport styled from '@emotion/styled';\r\n\r\ninterface Props {\r\n children: ReactNode;\r\n}\r\n\r\ninterface State {\r\n hasError: boolean;\r\n}\r\n\r\nclass ErrorBoundary extends Component {\r\n public state: State = {\r\n hasError: false\r\n };\r\n\r\n public static getDerivedStateFromError(_: Error): State {\r\n return { hasError: true };\r\n }\r\n\r\n public componentDidCatch(error: Error, errorInfo: ErrorInfo) {\r\n console.error('Uncaught error:', error, errorInfo);\r\n }\r\n\r\n public render() {\r\n if (this.state.hasError) {\r\n return (\r\n \r\n \r\n \r\n
\r\n Sorry.. there was an error! This page is broken!\r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n\r\n return this.props.children;\r\n }\r\n}\r\n\r\nexport default ErrorBoundary;\r\n\r\nconst StyledPaper = styled(XPaper)`\r\n min-height: 300px;\r\n max-height: calc(100% - 40px);\r\n overflow-y: auto;\r\n`;\r\n","import * as React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { XPaper, XPaperTitle } from 'src/components/layout/XPaper';\r\nimport { XTitle } from 'src/components/layout/XPaperHeader';\r\nimport * as accountActions from 'src/store/accounts/actions';\r\nimport { AuthenticationAccount } from 'src/store/authentication/types';\r\n\r\nimport styled from '@emotion/styled';\r\nimport SaveIcon from '@material-ui/icons/Save';\r\nimport XPageContent from 'src/components/layout/XPageContent';\r\nimport XScrollView from 'src/components/layout/XScrollView';\r\nimport { ApiResult } from 'src/helpers/apiClient';\r\nimport { mapError } from 'src/helpers/errorMap';\r\nimport { showNotification } from 'src/store/layout/actions';\r\nimport { MessageType } from 'src/store/layout/types';\r\nimport { ApplicationState } from '../../store';\r\nimport AccountDetails from './account/AccountDetails';\r\nimport { Clear, Edit } from '@material-ui/icons';\r\nimport { AccountModel } from 'src/store/accounts/types';\r\nimport { Link } from 'react-router-dom';\r\nimport { XActionButton, XSecActionButton } from 'src/components/layout/XActionButton';\r\nimport { XActionStrip } from 'src/components/layout/XActionStrip';\r\nimport { XRowCell } from 'src/components/layout/XRow';\r\nimport { Translation } from 'react-i18next';\r\nimport i18n from 'src/i18n';\r\nimport ErrorBoundary from 'src/components/shared/ErrorBoundary';\r\n\r\ntype StateProps = {\r\n authAccount: AuthenticationAccount;\r\n account?: AccountModel;\r\n};\r\ntype State = {\r\n accountData: EditAccountForm;\r\n accountInputErrors: any;\r\n editing: boolean;\r\n};\r\n\r\nexport type EditAccountForm = {\r\n id: string;\r\n email: string;\r\n password: string;\r\n passwordValid: string;\r\n};\r\n\r\ntype DispatchProps = {\r\n showNotification: (message: string, type?: MessageType) => void;\r\n getMyAccount: () => void;\r\n editAccount: (account: EditAccountForm) => Promise;\r\n};\r\n\r\ntype AllProps = StateProps & DispatchProps;\r\n\r\nclass MyAccountPage extends React.Component {\r\n constructor(props: AllProps) {\r\n super(props);\r\n this.state = {\r\n accountData: {\r\n id: this.props.authAccount.accountId,\r\n email: this.props.authAccount.email,\r\n password: '',\r\n passwordValid: ''\r\n },\r\n editing: false,\r\n accountInputErrors: {\r\n password: false,\r\n passwordValid: false\r\n }\r\n };\r\n this.props.getMyAccount();\r\n }\r\n\r\n public handleAccountChange = (name: string, value: string) => {\r\n const accountData = { ...this.state.accountData };\r\n accountData[name] = value;\r\n this.setState({ accountData });\r\n };\r\n\r\n public storeAccount = () => {\r\n const inputErrors = { ...this.state.accountInputErrors };\r\n let valid = true;\r\n\r\n if (\r\n this.state.accountData.password !== this.state.accountData.passwordValid ||\r\n this.state.accountData.password === ''\r\n ) {\r\n valid = false;\r\n inputErrors.password = true;\r\n inputErrors.passwordValid = true;\r\n }\r\n\r\n this.setState({ accountInputErrors: inputErrors });\r\n if (valid) {\r\n this.props.editAccount(this.state.accountData).then(result => {\r\n if (result.IsSuccess) {\r\n this.props.showNotification(i18n.t('notification.accountModified'), 'success');\r\n this.setState({ editing: false });\r\n } else\r\n this.props.showNotification(\r\n i18n.t('notification.errAdjustingAccount') + mapError(result.Errors),\r\n 'error'\r\n );\r\n });\r\n }\r\n };\r\n\r\n public cancelEdit = () => {\r\n this.setState({ editing: false });\r\n };\r\n\r\n public render() {\r\n const props = this.props;\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {t => {t('account.myAccount')}}\r\n \r\n {this.state.editing && (\r\n \r\n {t => (\r\n \r\n this.cancelEdit()}>\r\n {t('tooltip.Cancel')}\r\n \r\n this.storeAccount()}>\r\n {t('tooltip.Save')}\r\n \r\n \r\n )}\r\n \r\n )}\r\n \r\n\r\n \r\n {this.state.editing && (\r\n
\r\n \r\n
\r\n )}\r\n {!this.state.editing && (\r\n \r\n {t => (\r\n
\r\n \r\n {t('contact.name')}\r\n \r\n {props.account?.firstName} {props.account?.lastName}\r\n \r\n \r\n \r\n Email\r\n {props.account?.email}\r\n \r\n \r\n {t('myArxis.Organization')} \r\n \r\n {props.account?.organizationName}\r\n \r\n {t('account.myOrganization')} >\r\n \r\n \r\n \r\n \r\n {t('account.password')}\r\n \r\n ••••••••••\r\n this.setState({ editing: true })}>\r\n {t('account.changePass')} >\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\nconst mapStateToProps = (state: ApplicationState) => {\r\n return {\r\n authAccount: state.authentication.account,\r\n account: state.account.my,\r\n organization: state.organizations.myOrganization,\r\n settings: state.account.settings\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch: any): DispatchProps => ({\r\n showNotification: (message: string, type?: MessageType) =>\r\n dispatch(showNotification(message, type)),\r\n getMyAccount: () => dispatch(accountActions.getMyAccountThunk()),\r\n editAccount: (account: EditAccountForm) => dispatch(accountActions.EditAccountThunk(account))\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(MyAccountPage);\r\n\r\nexport const XFieldDisplay = styled.div`\r\n padding: 10px;\r\n border-top: 1px solid #e4e4e4;\r\n`;\r\n\r\nexport const XKey = styled.div`\r\n font-weight: bold;\r\n color: #7b7b7b;\r\n`;\r\nexport const XA = styled.div`\r\n cursor: pointer;\r\n color: #e7247b;\r\n font-weight: 600;\r\n font-size: 12.5px;\r\n`;\r\n\r\nexport const XValue = styled.div`\r\n font-size: 1.2em;\r\n display: flex;\r\n justify-content: space-between;\r\n`;\r\n\r\nconst ActionButtons = styled.div`\r\n position: absolute;\r\n color: rgb(245, 0, 87);\r\n cursor: pointer;\r\n right: -15px;\r\n top: -15px;\r\n`;\r\n","import { css } from '@emotion/core';\r\nimport styled from '@emotion/styled';\r\nimport * as React from 'react';\r\n\r\ntype OwnProps = {\r\n width?: number;\r\n height?: number;\r\n background?: string;\r\n};\r\n\r\nexport const XImageContainer = styled.div`\r\n border: 2px solid rgb(245, 245, 245);\r\n text-align: center;\r\n vertical-align: middle;\r\n position: relative;\r\n padding: 3px;\r\n height: ${props => (props.height ? props.height + 'px' : '145px')};\r\n width: ${props => (props.width ? props.width + 'px' : '145px')};\r\n background: ${props => (props.background ? props.background : 'rgb(245,245,245)')};\r\n`;\r\n\r\nexport const XImageOverlay = styled('div')({\r\n position: 'absolute',\r\n top: '0',\r\n bottom: '0',\r\n left: '0',\r\n right: '0',\r\n background: 'rgba(1,1,1,.4)',\r\n color: 'white',\r\n display: 'flex',\r\n justifyContent: 'center',\r\n alignContent: 'center',\r\n '& svg': {\r\n alignSelf: 'center',\r\n width: '32px',\r\n height: '32px',\r\n filter: 'drop-shadow( 1px 1px 2px rgba(0, 0, 0, .7))'\r\n }\r\n});\r\n\r\nexport const XImage = styled('img')({\r\n maxHeight: '100%',\r\n maxWidth: '100%',\r\n width: 'auto',\r\n height: 'auto',\r\n position: 'absolute',\r\n top: '0',\r\n bottom: '0',\r\n left: '0',\r\n right: '0',\r\n margin: 'auto'\r\n});\r\n","import styled from '@emotion/styled';\r\nimport * as React from 'react';\r\nimport XList from './XList';\r\nimport { XRow, XRowCell } from './XRow';\r\n\r\ntype OwnProps = {\r\n headers?: (string | { title: string; width: number })[];\r\n onSort?: (property: string) => void;\r\n style?: any;\r\n};\r\n\r\ntype AllProps = OwnProps;\r\n\r\ntype State = {};\r\n\r\nclass XTable extends React.Component {\r\n constructor(props: AllProps) {\r\n super(props);\r\n this.state = {};\r\n }\r\n\r\n private Sort(header: string | { title: string }) {\r\n if (this.props.onSort) {\r\n if (typeof header === 'object') this.props.onSort(header.title);\r\n else this.props.onSort(header);\r\n }\r\n }\r\n\r\n public render() {\r\n return (\r\n \r\n {this.props.headers ? (\r\n \r\n {this.props.headers.map(header => (\r\n this.Sort(header)}\r\n style={{ maxWidth: typeof header === 'object' ? header.width + 'px' : undefined }}>\r\n {typeof header === 'object' ? header.title : header}\r\n \r\n ))}\r\n \r\n ) : (\r\n undefined\r\n )}\r\n {this.props.children}\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default XTable;\r\n\r\nconst TableHeader = styled(XRowCell)`\r\n font-size: 12px;\r\n color: #888;\r\n`;\r\n\r\nconst TableOuter = styled(XList)`\r\n padding: 0 15px;\r\n\r\n > * {\r\n margin-top: 5px;\r\n padding-top: 5px;\r\n border-top: 1px solid #eee;\r\n &:first-of-type {\r\n border: none;\r\n }\r\n }\r\n`;\r\n\r\nexport const TableRow = styled(XRow)`\r\n font-size: 14px;\r\n padding: 4px 0;\r\n`;\r\n","import {\r\n MyOrganizationModel,\r\n Organization,\r\n ConnectionIdentifier,\r\n OrganizationIdentifier,\r\n OrganizationManageModel,\r\n OrganizationModel,\r\n OrganizationAccessTokenModel\r\n} from '../../models/Organization';\r\nimport { OrganizationFormData, RegisterAccountFormData } from '../accounts/types';\r\n\r\nexport enum ActionTypes {\r\n GET_ORGANIZATION = '[organization] GET_ORGANIZATION',\r\n GET_MANAGE_ORGANIZATION = '[organization] GET_MANAGE_ORGANIZATION',\r\n GET_MY_ORGANIZATION = '[organization] GET_MY_ORGANIZATION',\r\n GET_ORGANIZATION_IDENTIFIERS = '[organization] GET_ORGANIZATION_IDENTIFIERS',\r\n GET_ORGANIZATIONS = '[organization] GET_ORGANIZATIONS',\r\n GET_ORGANIZATION_CONNECTIONS = '[organization] GET_ORGANIZATION_CONNECTIONS',\r\n GET_CONNECTION_IDENTIFIERS = '[organization] GET_CONNECTION_IDENTIFIERS',\r\n CONSUME_DATA_CONNECTION = '[organization] CONSUME_DATA_CONNECTION',\r\n EDIT_ORGANIZATION = '[organization] EDIT_ORGANIZATION',\r\n STORE_FORM = '[organization] STORE_FORM',\r\n ADD_ORGANIZATION = '[organization] ADD_ORGANIZATION',\r\n ADD_ORGANIZATION_IDENTIFIER = '[organization] ADD_ORGANIZATION_IDENTIFIER',\r\n ADD_CONNECTION_IDENTIFIER = '[organization] ADD_CONNECTION_IDENTIFIER',\r\n DELETE_ORGANIZATION = '[organization] DELETE_ORGANIZATION',\r\n DELETE_ORGANIZATION_CONNECTION = '[organization] DELETE_ORGANIZATION_CONNECTION',\r\n DELETE_ORGANIZATION_IDENTIFIER = '[organization] DELETE_ORGANIZATION_IDENTIFIER',\r\n DELETE_CONNECTION_IDENTIFIER = '[organization] DELETE_CONNECTION_IDENTIFIER',\r\n SAVE_ORDER_INTERFACE_SETTINGS = '[organization] SAVE_ORDER_INTERFACE_SETTINGS',\r\n SAVE_ORDER_FTP_SETTINGS = '[organization] SAVE_ORDER_FTP_SETTINGS',\r\n GET_UNCONFIGURED_FTP_ORGANIZATIONS = '[organization] GET_UNCONFIGURED_FTP_ORGANIZATIONS',\r\n VALIDATE_FTP_ACCESS = '[organization] VALIDATE_FTP_ACCESS',\r\n VALIDATE_SFTP_ACCESS = '[organization] VALIDATE_SFTP_ACCESS',\r\n DELETE_ORDER_INTERFACE = '[organization] DELETE_ORDER_INTERFACE',\r\n GET_ORGANIZATION_ACCESS_TOKEN = '[organization] GET_ORGANIZATION_ACCESS_TOKEN',\r\n DELETE_ORGANIZATION_ACCESS_TOKEN = '[organization] DELETE_ORGANIZATION_ACCESS_TOKEN'\r\n}\r\n\r\nexport interface OrganizationState {\r\n loading: boolean;\r\n errors?: string;\r\n myOrganization?: MyOrganizationModel;\r\n myIdentifiers: OrganizationIdentifier[];\r\n all: Organization[] | undefined;\r\n detail?: OrganizationModel;\r\n manageDetails?: OrganizationManageModel;\r\n connections: Organization[];\r\n connectionIdentifiers: ConnectionIdentifier[];\r\n unconfiguredFtp: Organization[];\r\n formData: RegisterAccountFormData;\r\n accessToken?: OrganizationAccessTokenModel;\r\n}\r\n","import styled from '@emotion/styled';\r\nimport * as React from 'react';\r\n\r\ntype OwnProps = {\r\n style?: any;\r\n onScrollBottom?: () => void;\r\n};\r\n\r\ntype AllProps = OwnProps;\r\n\r\ntype State = {\r\n overflowing: boolean;\r\n clientHeight: number;\r\n};\r\n\r\nclass XScrollView extends React.Component {\r\n private listView: React.RefObject;\r\n\r\n constructor(props: AllProps) {\r\n super(props);\r\n this.listView = React.createRef();\r\n this.state = {\r\n overflowing: false,\r\n clientHeight: 0\r\n };\r\n }\r\n\r\n public componentDidMount() {\r\n if (!this.listView.current) return;\r\n\r\n this.setState({\r\n overflowing:\r\n this.listView.current.scrollTop + this.listView.current.clientHeight <\r\n this.listView.current.scrollHeight,\r\n clientHeight: this.listView.current.clientHeight\r\n });\r\n }\r\n\r\n public componentDidUpdate(prevProps, prevState) {\r\n if (!this.listView.current) return;\r\n\r\n const clientHeight = this.listView.current.clientHeight;\r\n if (clientHeight === prevState.clientHeight) return;\r\n\r\n this.setState({\r\n overflowing:\r\n this.listView.current.scrollTop + this.listView.current.clientHeight <\r\n this.listView.current.scrollHeight,\r\n clientHeight\r\n });\r\n }\r\n\r\n public handleScroll(e: any) {\r\n if (!this.listView.current) return;\r\n\r\n if (\r\n this.props.onScrollBottom &&\r\n this.listView.current.scrollTop + this.listView.current.clientHeight >\r\n this.listView.current.scrollHeight - 30\r\n )\r\n this.props.onScrollBottom();\r\n\r\n this.setState({\r\n overflowing:\r\n this.listView.current.scrollTop + this.listView.current.clientHeight <\r\n this.listView.current.scrollHeight\r\n });\r\n }\r\n\r\n public render() {\r\n return (\r\n \r\n this.handleScroll(e)}>\r\n {this.props.children}\r\n \r\n {this.state.overflowing && }\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default XScrollView;\r\n\r\nconst OverflowFade = styled.div`\r\n position: absolute;\r\n bottom: 0;\r\n right: 11px;\r\n left: 0;\r\n flex: 0;\r\n height: 40px;\r\n background: linear-gradient(rgba(255, 255, 255, 0), rgba(255, 255, 255, 1));\r\n pointer-events: none;\r\n`;\r\n","import styled from '@emotion/styled';\r\nimport * as React from 'react';\r\n\r\ntype OwnProps = {\r\n message?: string;\r\n size?: number;\r\n image?: any;\r\n};\r\n\r\ntype AllProps = OwnProps;\r\n\r\nconst XNoContent: React.SFC = props => {\r\n return (\r\n \r\n
\r\n {props.image && }\r\n { props.message &&

{ props.message}

}\r\n
{props.children}
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default XNoContent;\r\n\r\nconst NoItems = styled.div`\r\n text-align: center;\r\n height: 100%;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n\r\n color: #888;\r\n & img {\r\n width: ${props => (props.size ? props.size + 'px' : '150px')};\r\n height: ${props => (props.size ? props.size + 'px' : '150px')};\r\n }\r\n & b {\r\n color: #666666\r\n }\r\n \r\n & h3 {\r\n font-size: 15px;\r\n font-weight: 600;\r\n color: #222222;\r\n }\r\n\r\n & a {\r\n text-decoration: underline;\r\n cursor: pointer;\r\n }\r\n`;\r\n","import { apiClient, ApiResult } from 'src/helpers/apiClient';\r\nimport { Catalog } from 'src/models/Catalog';\r\n\r\nimport { CatalogSort } from './actions';\r\nimport { CatalogFormData, EditCatalogFormData, CatalogHeaderFormData, Mapping } from './types';\r\nimport { CatalogInterface } from '../../models/Catalog'\r\n\r\nexport const getCatalog = async (id: string): Promise => {\r\n const parameters = {\r\n Id: id\r\n };\r\n return await apiClient.postQueryAsync('GetCatalog', parameters);\r\n};\r\n\r\nexport const getCatalogMapping = async (id: string | undefined): Promise => {\r\n const parameters = {\r\n MappingId: id\r\n };\r\n return await apiClient.postQueryAsync('GetCatalogMapping', parameters);\r\n};\r\n\r\nexport const saveCatalogMapping = async (Mapping: Mapping, catalogId: string, catalogMappingId: string, catalogVersionId: string ): Promise => {\r\n const command = {\r\n CommandName: 'SaveCatalogMapping',\r\n CatalogId: catalogId,\r\n CatalogMappingId: catalogMappingId,\r\n CatalogVersionId: catalogVersionId,\r\n Mapping\r\n };\r\n return await apiClient.postCommandAsync(command);\r\n}\r\n\r\nexport const validateCatalogFile = async (\r\n fileFormat: string,\r\n fileFormatVersion: string,\r\n file: File\r\n): Promise => {\r\n const command = {\r\n CommandName: 'ValidateCatalogFile',\r\n FileFormat: fileFormat,\r\n FileFormatVersion: fileFormatVersion\r\n };\r\n return await apiClient.postCommandAsync(command, [file]);\r\n};\r\n\r\nexport const convertCatalogFile = async (\r\n fromFileFormat: string,\r\n fromFileFormatVersion: string,\r\n toFileFormat: string,\r\n toFileFormatVersion: string,\r\n file: File\r\n): Promise => {\r\n const command = {\r\n CommandName: 'ConvertCatalogFile',\r\n FromFileFormat: fromFileFormat,\r\n FromFileFormatVersion: fromFileFormatVersion,\r\n ToFileFormat: toFileFormat,\r\n ToFileFormatVersion: toFileFormatVersion\r\n };\r\n return await apiClient.postCommandAsync(command, [file]);\r\n};\r\n\r\nexport const deleteCatalog = async (id: string): Promise => {\r\n const command = {\r\n CommandName: 'DeleteCatalog',\r\n Id: id\r\n };\r\n return await apiClient.postCommandAsync(command);\r\n};\r\n\r\nexport const editCatalogAvailable = async (\r\n organizationIds: string[],\r\n catalogId: string,\r\n available: boolean\r\n): Promise => {\r\n const command = {\r\n CommandName: 'EditCatalogAvailable',\r\n OrganizationIds: organizationIds,\r\n CatalogId: catalogId,\r\n Available: available\r\n };\r\n return await apiClient.postCommandAsync(command);\r\n};\r\n\r\nexport const editCatalog = async (\r\n id: string,\r\n formData: EditCatalogFormData\r\n): Promise => {\r\n const command = {\r\n CommandName: 'EditCatalog',\r\n CatalogId: id,\r\n Title: formData.title,\r\n VersionName: formData.version,\r\n Description: formData.description,\r\n StartDate: formData.startDate,\r\n EndDate: formData.endDate\r\n };\r\n return await apiClient.postCommandAsync(command, [formData.image]);\r\n};\r\n\r\nexport const saveCatalog = async (): Promise => {\r\n const command = {\r\n CommandName: 'SaveCatalog'\r\n };\r\n return await apiClient.postCommandAsync(command);\r\n};\r\n\r\nexport const listCatalogs = async (sort: CatalogSort): Promise => {\r\n return getCatalogs('ListCatalogs', {\r\n Sort: sort\r\n });\r\n};\r\n\r\nexport const listSubscribedCatalogs = async (): Promise => {\r\n return getCatalogs('ListSubscribedCatalogs', {});\r\n};\r\n\r\nconst getCatalogs = async (queryName: string, params?: any): Promise => {\r\n return await apiClient.postQueryAsync(queryName, params);\r\n};\r\n\r\nexport const getFileFormats = async (): Promise => {\r\n return await apiClient.postQueryAsync('ListFileFormats', {});\r\n};\r\n\r\nexport async function publishCatalog(catalogId: string): Promise {\r\n const command = {\r\n CommandName: 'PublishCatalog',\r\n CatalogId: catalogId\r\n };\r\n\r\n return await apiClient.postCommandAsync(command);\r\n}\r\n\r\nexport async function addCatalog(param: CatalogFormData): Promise {\r\n const command = {\r\n CommandName: 'AddCatalog',\r\n OrganizationId: param.organizationId,\r\n Title: param.title,\r\n Description: param.description,\r\n VersionName: param.versionName,\r\n Accessibility: param.accessibility,\r\n Retailers: param.retailers,\r\n FileFormatId: param.fileFormat,\r\n FileFormatVersionId: param.fileFormatVersion,\r\n StartDate: param.startDate,\r\n EndDate: param.endDate\r\n };\r\n\r\n return await apiClient.postCommandAsync(command, [param.file, param.image]);\r\n}\r\n\r\n\r\nexport async function addCatalogHeader(param: CatalogHeaderFormData): Promise {\r\n const command = {\r\n CommandName: 'AddCatalogHeader',\r\n OrganizationId: param.organizationId,\r\n Title: param.title,\r\n Description: param.description,\r\n FileFormatId: param.fileFormatId,\r\n FileFormatVersionId: param.fileFormatVersionId,\r\n InterfaceType: param.interfaceType,\r\n InterfaceMethod: param.interfaceMethod,\r\n InterfaceAuthentication: param.interfaceAuthentication,\r\n Settings: param.settings\r\n };\r\n\r\n return await apiClient.postCommandAsync(command);\r\n}\r\n\r\n\r\nexport const saveCatalogInterface = async (catalogInterface: CatalogInterface, catalogId?: string | undefined): Promise> => {\r\n const command = {\r\n CommandName: \"SaveCatalogInterface\",\r\n CatalogId: catalogId,\r\n CatalogInterfaceId: catalogInterface.id,\r\n InterfaceType: catalogInterface.type,\r\n InterfaceMethod: catalogInterface.method,\r\n InterfaceAuthentication: catalogInterface.authentication,\r\n Settings: catalogInterface.settings\r\n };\r\n\r\n return await apiClient.postCommandAsync(command);\r\n};\r\n\r\nexport const fetchCatalogFile = async (catalogId: string | undefined, file?: File[]): Promise => {\r\n const command = {\r\n CommandName: \"FetchCatalogFile\",\r\n CatalogId: catalogId,\r\n };\r\n\r\n return await apiClient.postCommandAsync(command, file);\r\n};\r\n","import { css } from '@emotion/core';\r\nimport styled from '@emotion/styled';\r\nimport { CircularProgress } from '@material-ui/core';\r\nimport Button from '@material-ui/core/Button';\r\nimport * as React from 'react';\r\n\r\nexport enum XButtonStyle {\r\n Primary,\r\n Secondary\r\n}\r\n\r\ntype OwnProps = {\r\n onClick?: any;\r\n active?: boolean;\r\n colorscheme?: XButtonStyle;\r\n staticcolor?: string;\r\n textcolor?: string;\r\n width?: string;\r\n maxWidth?: string;\r\n height?: string;\r\n applyPadding?: boolean;\r\n loading?: boolean;\r\n};\r\n\r\ntype AllProps = OwnProps;\r\n\r\nconst gradientSwitch = (style: XButtonStyle | undefined, props: any) => {\r\n switch (style) {\r\n case XButtonStyle.Primary:\r\n return (\r\n 'linear-gradient(to right,' + props.theme.pStartColor + ',' + props.theme.pEndColor + ')'\r\n );\r\n case XButtonStyle.Secondary:\r\n return (\r\n 'linear-gradient(to right,' + props.theme.sStartColor + ',' + props.theme.sEndColor + ')'\r\n );\r\n default:\r\n return '';\r\n }\r\n};\r\n\r\nconst XButton: React.SFC = props => {\r\n return props.active === false ? (\r\n \r\n {props.children}\r\n {props.loading === true ? (\r\n \r\n ) : (\r\n undefined\r\n )}\r\n \r\n ) : (\r\n \r\n {props.children}\r\n {props.loading === true ? (\r\n \r\n ) : (\r\n undefined\r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default XButton;\r\n\r\nconst ActiveButton = styled(Button, { shouldForwardProp: prop => prop !== 'applyPadding' })<\r\n AllProps\r\n>` \r\n border-radius: 2px;\r\n text-transform: uppercase;\r\n font-weight: bold;\r\n letter-spacing: 2px;\r\n font-size: 11px;\r\n position: relative;\r\n transition: all 0.2s ease-in-out;\r\n padding: ${props =>\r\n props.applyPadding === false\r\n ? undefined\r\n : props.colorscheme !== undefined\r\n ? '13px 46px 13px 30px'\r\n : '13px 30px'};\r\n color: ${props => props.textcolor || '#fff'};\r\n width: ${props => props.width || ''};\r\n max-width: ${props => props.maxWidth || ''};\r\n box-shadow: ${props =>\r\n props.colorscheme === XButtonStyle.Primary\r\n ? '0 15px 30px 0 rgba(0,0,0,.11), 0 5px 15px 0 rgba(0,0,0,.08)'\r\n : ''};\r\n background: ${props =>\r\n props.staticcolor ? props.staticcolor : gradientSwitch(props.colorscheme, props)};\r\n &::after ${props =>\r\n props.colorscheme !== undefined\r\n ? '{ content: \"▶\"; display: inline-block; position: absolute; opacity: 1; right: 22px; transition: all 0.2s ease-in-out }'\r\n : ''};\r\n &:hover::after {opacity: 0; right: 50px;};\r\n &:hover ${props =>\r\n props.colorscheme !== undefined ? '{padding: 13px 38px 13px 38px}' : undefined};\r\n `;\r\n\r\nconst NonActiveButton = styled(Button)(\r\n {\r\n backgroundColor: 'lightgrey',\r\n borderRadius: '0px',\r\n fontFamily: 'Montserrat-Bold',\r\n textTransform: 'uppercase',\r\n padding: '13px 30px',\r\n fontWeight: 'bold',\r\n letterSpacing: '2px',\r\n fontSize: '11px',\r\n position: 'relative',\r\n transition: 'all 0.2s ease-in-out'\r\n },\r\n (props: AllProps) => ({\r\n color: props.textcolor\r\n })\r\n);\r\n","const avatarApiUrl = 'https://eu.ui-avatars.com/api/?';\r\nconst colors = [\r\n 'f0e9e9',\r\n 'dbd1cc',\r\n 'f2e7bd',\r\n 'd2ebab',\r\n '94f7b9',\r\n '80cfcd',\r\n '9cc2ff',\r\n 'dfc7ff',\r\n 'ffd9fe',\r\n 'ffd4df',\r\n 'ffc9c9'\r\n];\r\n\r\nlet cache: any[] = [];\r\n\r\nconst hashCode = (str: string) => {\r\n var hash = 0;\r\n if (str.length === 0) return hash;\r\n for (let i = 0; i < str.length; i++) {\r\n const char = str.charCodeAt(i);\r\n hash = ((hash<<5)-hash)+char;\r\n hash = hash & hash; // Convert to 32bit integer\r\n }\r\n return hash;\r\n}\r\n\r\nexport const generateAvatar = (\r\n name: string,\r\n size: number,\r\n rounded: boolean = false,\r\n length: number = 2\r\n) => {\r\n let parameters = 'name=' + name + '&size=' + size + '&length=' + length;\r\n if (rounded !== undefined) parameters += '&rounded=' + rounded;\r\n\r\n const existing = cache.find(c => c[0] === parameters);\r\n if (existing) return existing[1];\r\n\r\n const color = colors[(Math.abs(hashCode(name))) % colors.length];\r\n const parametersWithBackground = parameters + '&background=' + color;\r\n const fullUrl = avatarApiUrl + parametersWithBackground;\r\n\r\n cache.push([parameters, fullUrl]);\r\n if (cache.length > 30) cache = cache.slice(cache.length - 30, cache.length);\r\n\r\n return fullUrl;\r\n};\r\n","import { ApiError } from 'src/helpers/apiClient';\r\nimport {\r\n Catalog,\r\n CatalogFileViolation,\r\n CatalogModel,\r\n CatalogValidationSummary\r\n} from 'src/models/Catalog';\r\nimport { FileFormat } from 'src/models/FileFormat';\r\n\r\nexport enum ActionTypes {\r\n GET_CATALOGS = '[catalogs] GET_CATALOGS',\r\n GET_SUBSCRIBED_CATALOGS = '[catalogs] GET_SUBSCRIBED_CATALOGS',\r\n GET_CATALOG = '[catalogs] GET_CATALOG',\r\n VALIDATE_CATALOG_FILE = '[catalogs] VALIDATE_CATALOG_FILE',\r\n CONVERT_CATALOG_FILE = '[catalogs] CONVERT_CATALOG_FILE',\r\n SAVE_CATALOG = '[catalogs] SAVE_CATALOG',\r\n PUBLISH_CATALOG = '[catalogs] PUBLISH_CATALOG',\r\n ADD_CATALOG = '[catalogs] ADD_CATALOG',\r\n ADD_CATALOG_HEADER = '[catalogs] ADD_CATALOG_HEADER',\r\n GET_CATALOGS_ORGANIZATION = '[catalogs] GET_CATALOGS_ORGANIZATION',\r\n GET_RECEIVING_CATALOGS_ORGANIZATION = '[catalogs] GET_RECEIVING_CATALOGS_ORGANIZATION',\r\n GET_FILE_FORMATS = '[catalogs] GET_FILE_FORMATS',\r\n STORE_CATALOG = '[catalogs] STORE_CATALOG',\r\n DELETE_CATALOG = '[catalogs] DELETE_CATALOG',\r\n EDIT_CATALOG_AVAILABLE = '[catalogs] EDIT_CATALOG_AVAILABLE'\r\n}\r\n\r\nexport enum CatalogAccessibility {\r\n SelectedConnections = 'SelectedConnections',\r\n AllConnections = 'AllConnections',\r\n Public = 'Public'\r\n}\r\n\r\nexport type EditCatalogFormData = {\r\n title: string;\r\n description: string;\r\n imageURL: string;\r\n image: any;\r\n version: string;\r\n startDate?: Date;\r\n endDate?: Date;\r\n};\r\n\r\nexport type ConvertCatalogFormData = {\r\n fromFileFormat: string;\r\n fromFileFormatVersion: string;\r\n toFileFormat: string;\r\n toFileFormatVersion: string;\r\n file: any;\r\n};\r\n\r\nexport type CatalogFormData = {\r\n organizationId: string;\r\n title: string;\r\n description: string;\r\n image: any;\r\n versionName: string;\r\n startDate?: Date;\r\n endDate?: Date;\r\n fileFormat: string;\r\n fileFormatVersion: string;\r\n accessibility: CatalogAccessibility;\r\n retailers: string[];\r\n file: any;\r\n uploaded: boolean;\r\n};\r\n\r\nexport type MappingItem = {\r\n Column: string;\r\n MappingType: string;\r\n SampleData: any;\r\n}\r\n\r\nexport type Mapping = {\r\n Delimiter: string;\r\n MappingItems: MappingItem[];\r\n}\r\n\r\nexport type CatalogHeaderFormData = {\r\n organizationId: string;\r\n title: string;\r\n description: string;\r\n fileFormatId: string;\r\n fileFormatVersionId: string;\r\n interfaceType: string;\r\n interfaceMethod: string;\r\n interfaceAuthentication: string;\r\n settings: object;\r\n};\r\n\r\nexport const EmptyCatalogFormData = {\r\n title: '',\r\n description: '',\r\n image: undefined,\r\n organizationId: '',\r\n versionName: '',\r\n fileFormat: '',\r\n fileFormatVersion: '',\r\n accessibility: CatalogAccessibility.AllConnections,\r\n retailers: [],\r\n startDate: undefined,\r\n endDate: undefined,\r\n file: null,\r\n uploaded: false\r\n};\r\n\r\nexport type CatalogState = {\r\n loading: boolean;\r\n data: {\r\n all: Catalog[] | undefined;\r\n new: Catalog[];\r\n popular: Catalog[];\r\n special: Catalog[];\r\n top: Catalog[];\r\n my: Catalog[];\r\n subscribed: Catalog[];\r\n detail?: CatalogModel;\r\n };\r\n addCatalog: CatalogFormData;\r\n validation: {\r\n validationSummary?: CatalogValidationSummary;\r\n error?: ApiError;\r\n };\r\n conversion: {\r\n transformResult?: any;\r\n error?: ApiError;\r\n };\r\n fileFormats: FileFormat[];\r\n errors?: string;\r\n};\r\n\r\nexport type ConversionResult = {\r\n from: string;\r\n to: string;\r\n writeDuration: number;\r\n readDuraction: number;\r\n errors: CatalogFileViolation[];\r\n url: string;\r\n};\r\n\r\nexport type CommandResult = {\r\n data: any;\r\n};\r\n","import styled from '@emotion/styled';\r\nimport * as React from 'react';\r\n\r\nimport { Autocomplete } from '@material-ui/lab';\r\nimport XField from './XField';\r\n\r\nexport interface SelectOption {\r\n name: string;\r\n value: any;\r\n}\r\n\r\nexport interface IField {\r\n name: string;\r\n title?: string;\r\n value?: any;\r\n type?: string;\r\n options?: SelectOption[];\r\n required?: boolean;\r\n readonly?: boolean;\r\n fullWidth?: boolean;\r\n multiline?: boolean;\r\n maxLength?: number;\r\n}\r\n\r\ntype OwnProps = {\r\n fields: IField[];\r\n margin?: boolean;\r\n data?: any;\r\n inputErrors?: any;\r\n validate?: boolean;\r\n verticalAlign?: boolean;\r\n submitHandler?: () => void;\r\n callback: (name: string, value: string) => any;\r\n};\r\n\r\ntype AllProps = OwnProps;\r\n\r\ntype State = {\r\n formData: {};\r\n inField: boolean;\r\n};\r\n\r\nclass XForm extends React.Component {\r\n constructor(props: AllProps) {\r\n super(props);\r\n\r\n this.state = {\r\n formData: {},\r\n inField: false\r\n };\r\n }\r\n\r\n public componentWillReceiveProps(nextProps: any) {\r\n const obj = {};\r\n\r\n nextProps.fields.forEach((c: any) => {\r\n const name = nextProps.fields[nextProps.fields.indexOf(c).name];\r\n obj[name] = this.props.fields.indexOf(c) > -1;\r\n });\r\n\r\n this.setState(obj);\r\n }\r\n\r\n public handleFormChange = (name: string, value: any) => {\r\n const formData = Object.assign({}, this.state.formData);\r\n formData[name] = value;\r\n this.setState({ formData });\r\n this.props.callback(name, value);\r\n };\r\n\r\n public handleKeyPress = (e: any) => {\r\n if (e.key === 'Enter' && this.props.submitHandler) {\r\n this.props.callback(e.target.name, e.target.value);\r\n this.props.submitHandler();\r\n }\r\n };\r\n\r\n public render() {\r\n return (\r\n \r\n \r\n {this.props.fields.map(item => (\r\n \r\n {item.type === 'select' ? (\r\n item.options == null ? (\r\n
\r\n ) : (\r\n option.name ?? option}\r\n getOptionSelected={(option, value) => {\r\n if (!option || !value) return false;\r\n return option.value === value.value;\r\n }}\r\n value={\r\n !this.props.data[item.name]\r\n ? null\r\n : item.options?.find(o => {\r\n if (!o) return false;\r\n return o.value === this.props.data[item.name];\r\n })\r\n }\r\n onChange={(e, v) => this.handleFormChange(item.name, v?.value)}\r\n autoComplete={false}\r\n autoHighlight={true}\r\n autoSelect={true}\r\n renderInput={params => {\r\n // Override the browser autoComplete to stop it overlapping with the component\r\n const inputProps = Object.assign({}, params.inputProps);\r\n params.inputProps = {\r\n ...inputProps,\r\n autoComplete: 'new-password'\r\n };\r\n return (\r\n \r\n );\r\n }}\r\n />\r\n )\r\n ) : (\r\n this.handleFormChange(item.name, e.target.value)}\r\n {...(this.props.data !== undefined ? { value: this.props.data[item.name] } : {})}\r\n />\r\n )}\r\n \r\n ))}\r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default XForm;\r\n\r\nconst FormContainer = styled('div')({});\r\nconst FormContent = styled('div')({\r\n display: 'flex',\r\n flexDirection: 'row',\r\n flexWrap: 'wrap',\r\n justifyContent: 'space-between'\r\n});\r\n\r\nconst InputContainer = styled.div<{ margin?: boolean }>`\r\n height: auto\r\n display: flex;\r\n flex-direction: column;\r\n margin: ${props => (props.margin === undefined || props.margin === true ? '0 15px' : '0')};\r\n`;\r\n","import { ConnectionIdentifierKey, OrderInterfaceSettingsModel, OrganizationInterface } from 'src/models/Organization';\r\nimport { OrganizationFormData, RegisterAccountFormData } from '../accounts/types';\r\nimport { apiClient, ApiResult } from './../../helpers/apiClient';\r\nimport { EditOrganizationData } from './../../models/domain/EditOrganization';\r\n\r\nexport const getOrganization = async (organizationId: string): Promise => {\r\n const parameters = {\r\n OrganizationId: organizationId\r\n };\r\n return await apiClient.postQueryAsync('GetOrganization', parameters);\r\n};\r\n\r\nexport const getManageOrganization = async (organizationId: string): Promise => {\r\n const parameters = {\r\n OrganizationId: organizationId\r\n };\r\n return await apiClient.postQueryAsync('GetManageOrganization', parameters);\r\n};\r\n\r\nexport const getMyOrganization = async (): Promise => {\r\n return await apiClient.postQueryAsync('GetMyOrganization', {});\r\n};\r\n\r\nexport const getOrganizationAccessToken = async (organizationId: string, generateNew: boolean):Promise => { \r\n \r\n const parmeters = { \r\n OrganizationId: organizationId,\r\n GenerateNew: generateNew\r\n };\r\n\r\n return await apiClient.postQueryAsync('GetOrganizationAccessToken', parmeters);\r\n}\r\n\r\nexport const getOrganizationIdentifiers = async (): Promise => {\r\n return await apiClient.postQueryAsync('GetOrganizationIdentifiers', {});\r\n};\r\n\r\nexport const getOrganizationInterface = async (organizationInterfaceId: string): Promise> => {\r\n return await apiClient.postQueryAsync('GetOrganizationInterface', {});\r\n};\r\n\r\nexport const listOrganizations = async (): Promise => {\r\n return await apiClient.postQueryAsync('ListOrganizations', {});\r\n};\r\n\r\nexport const listOrganizationConnections = async (id?: string): Promise => {\r\n const parameters = {\r\n OrganizationId: id\r\n };\r\n return await apiClient.postQueryAsync('ListOrganizationConnections', parameters);\r\n};\r\n\r\nexport const saveOrderInterfaceSettings = async (organizationId: string, data: OrderInterfaceSettingsModel): Promise => {\r\n const command = {\r\n CommandName: \"SaveOrderInterfaceSettings\",\r\n OrganizationId: organizationId,\r\n Method: data.method,\r\n OrderEmailAddress: data.emailAddress,\r\n OrderFtpUsername: data.ftpUsername,\r\n OrderFtpPassword: data.ftpPassword,\r\n }\r\n return await apiClient.postCommandAsync(command);\r\n};\r\n\r\nexport const deleteOrderInterface = async (interfaceId: string): Promise => {\r\n const command = {\r\n CommandName: \"DeleteOrderInterface\",\r\n InterfaceId: interfaceId\r\n }\r\n return await apiClient.postCommandAsync(command);\r\n};\r\n\r\nexport const deleteOrganizationAccessToken = async (organizationId: string): Promise => {\r\n const command = {\r\n CommandName: \"DeleteOrganizationAccessToken\",\r\n OrganizationId: organizationId\r\n }\r\n return await apiClient.postCommandAsync(command);\r\n}; \r\n\r\n\r\nexport const saveOrganizationInterface = async (organizationInterface: OrganizationInterface, organizationId?: string | undefined): Promise> => {\r\n const command = {\r\n CommandName: \"SaveOrganizationInterface\",\r\n OrganizationInterfaceId: organizationInterface.id,\r\n InterfaceType: organizationInterface.type,\r\n InterfaceMethod: organizationInterface.method,\r\n Settings: organizationInterface.settings,\r\n OrganizationId: organizationId\r\n };\r\n\r\n return await apiClient.postCommandAsync(command);\r\n};\r\n\r\nexport const addOrganization = async (data: RegisterAccountFormData): Promise => {\r\n const command = {\r\n CommandName: 'CreateOrganization',\r\n Name: data.name,\r\n OrganizationType: data.organizationType,\r\n Description: data.description,\r\n CompanyEmail: data.companyEmail,\r\n Street: data.street,\r\n HouseNumber: data.houseNumber,\r\n PostalCode: data.postalCode,\r\n City: data.city,\r\n TelephoneNumber: data.telephoneNumber,\r\n Website: data.website,\r\n MaturityStatus: data.maturityStatus,\r\n // IBAN: data.iban,\r\n // BtwNumber: data.btwNumber,\r\n Country: data.country,\r\n\r\n email: data.email,\r\n password: data.password,\r\n firstName: data.firstName,\r\n lastName: data.lastName\r\n };\r\n\r\n return await apiClient.postCommandAsync(command, [data.image]);\r\n};\r\n\r\nexport const editOrganization = async (data: EditOrganizationData): Promise => {\r\n const command = {\r\n CommandName: 'EditOrganization',\r\n ...data\r\n };\r\n\r\n command.Image = undefined;\r\n return await apiClient.postCommandAsync(command, [data.Image]);\r\n};\r\n\r\nexport const downloadCatalog = async (\r\n catalogId: string,\r\n catalogVersionId: string,\r\n fileFormat: string,\r\n fileFormatVersion: string\r\n): Promise => {\r\n const command = {\r\n CommandName: 'DownloadCatalog',\r\n CatalogId: catalogId,\r\n CatalogVersionId: catalogVersionId,\r\n FileFormatId: fileFormat,\r\n FileFormatVersionId: fileFormatVersion\r\n };\r\n\r\n return await apiClient.postCommandAsync(command);\r\n};\r\n\r\nexport const deleteOrganization = async (id: string): Promise => {\r\n const command = {\r\n CommandName: 'DeleteOrganization',\r\n Id: id\r\n };\r\n\r\n return await apiClient.postCommandAsync(command);\r\n};\r\n\r\nexport const deleteConnection = async (organizationId: string): Promise => {\r\n const command = {\r\n CommandName: 'DeleteConnection',\r\n OrganizationId: organizationId\r\n };\r\n\r\n return await apiClient.postCommandAsync(command);\r\n};\r\n\r\nexport const deleteOrganizationIdentifier = async (identifierId: string): Promise => {\r\n const command = {\r\n CommandName: 'DeleteOrganizationIdentifier',\r\n IdentifierId: identifierId\r\n };\r\n\r\n return await apiClient.postCommandAsync(command);\r\n};\r\n\r\nexport const addOrganizationIdentifier = async (\r\n type: string,\r\n value: string,\r\n organizationId?: string\r\n): Promise => {\r\n const command = {\r\n CommandName: 'AddOrganizationIdentifier',\r\n IdentifierType: type,\r\n Value: value,\r\n OrganizationId: organizationId\r\n };\r\n\r\n return await apiClient.postCommandAsync(command);\r\n};\r\n\r\nexport const listUnconfiguredFtpOrganizations = async (): Promise => {\r\n return await apiClient.postQueryAsync('ListOrganizationsUnconfiguredFtp');\r\n};\r\n\r\n\r\nexport const addOrganizationConnection = async (\r\n sourceOrganizationId: string,\r\n targetOrganizationId: string\r\n): Promise => {\r\n const command = {\r\n CommandName: 'AddOrganizationConnection',\r\n SourceOrganizationId: sourceOrganizationId,\r\n TargetOrganizationId: targetOrganizationId\r\n };\r\n\r\n return await apiClient.postCommandAsync(command);\r\n};\r\n\r\n\r\nexport const validateFtpAccess = async (\r\n url: string,\r\n user: string,\r\n pass: string\r\n): Promise => {\r\n const command = {\r\n CommandName: 'ValidateFtpAccess',\r\n Url: url,\r\n Username: user,\r\n Password: pass\r\n };\r\n\r\n return await apiClient.postCommandAsync(command);\r\n};\r\n\r\nexport const validateSftpAccess = async (\r\n url: string,\r\n user: string,\r\n pass: string\r\n): Promise => {\r\n const command = {\r\n CommandName: 'ValidateSftpAccess',\r\n Url: url,\r\n Username: user,\r\n Password: pass\r\n };\r\n\r\n return await apiClient.postCommandAsync(command);\r\n};\r\n\r\nexport const addConnectionIdentifier = async (\r\n organizationConnectionId: string,\r\n value: string,\r\n softwareId?: string\r\n): Promise => {\r\n const command = {\r\n CommandName: 'AddConnectionIdentifier',\r\n OrganizationConnectionId: organizationConnectionId,\r\n Value: value,\r\n SoftwareId: softwareId,\r\n Key: ConnectionIdentifierKey.SupplierAssignedNumber\r\n };\r\n\r\n return await apiClient.postCommandAsync(command);\r\n};\r\n\r\nexport const deleteConnectionIdentifier = async (identifierId: string): Promise => {\r\n const command = {\r\n CommandName: 'DeleteConnectionIdentifier',\r\n Id: identifierId\r\n };\r\n\r\n return await apiClient.postCommandAsync(command);\r\n};\r\n\r\n\r\nexport const getConnectionIdentifiers = async (organizationId?: string): Promise => {\r\n const parameters = {\r\n OrganizationId: organizationId\r\n };\r\n \r\n return await apiClient.postQueryAsync('GetConnectionIdentifiers', parameters);\r\n};\r\n","import { OrganizationType } from 'src/models/Organization';\r\nimport { AccountSetting } from '../authentication/types';\r\n\r\nexport enum ActionTypes {\r\n CREATE_ACCOUNT = '[account] CREATE_ACCOUNT',\r\n EDIT_ACCOUNT = '[account] EDIT_ACCOUNT',\r\n GET_ORGANIZATION = '[account] GET_ORGANIZATION',\r\n STORE_REGISTER_DATA = '[account] STORE_REGISTER_DATA',\r\n GET_SETTINGS = '[account] GET_SETTINGS',\r\n SAVE_SETTINGS = '[account] SAVE_SETTINGS',\r\n VERIFY_EMAIL_CODE = '[account] VERIFY_EMAIL_CODE',\r\n SEND_PASSWORD_RESET = '[account] SEND_PASSWORD_RESET',\r\n RESET_PASSWORD = '[account] RESET_PASSWORD',\r\n CHECK_EMAIL_AVAILABLE = '[account] CHECK_EMAIL_AVAILABLE',\r\n LIST_ACCOUNTS = '[account] LIST_ACCOUNTS',\r\n GET_ACCOUNT = '[account] GET_ACCOUNT',\r\n GET_MY_ACCOUNT = '[account] GET_MY_ACCOUNT',\r\n EDIT_MANAGE_ACCOUNT = '[account] EDIT_MANAGE_ACCOUNT',\r\n DELETE_ACCOUNT = '[account] DELETE_ACCOUNT',\r\n CREATE_ACCOUNT_FOR_ORGANIZATION = '[account] CREATE_ACCOUNT_FOR_ORGANIZATION'\r\n}\r\n\r\nexport interface UserFormData {\r\n email: string;\r\n password: string;\r\n passwordValid: string;\r\n firstName: string;\r\n lastName: string;\r\n language: string;\r\n}\r\n\r\nexport interface CreateAccountFormData extends UserFormData {\r\n organization: string;\r\n}\r\n\r\nexport interface OrganizationFormData {\r\n name: string;\r\n description: string;\r\n companyEmail: string;\r\n image: any;\r\n organizationType: OrganizationType;\r\n maturityStatus: number;\r\n street: string;\r\n houseNumber: string;\r\n postalCode: string;\r\n city: string;\r\n country: string;\r\n telephoneNumber: string;\r\n website: string;\r\n // iban: string;\r\n // btwNumber: string;\r\n}\r\n\r\nexport interface RegisterAccountFormData extends UserFormData, OrganizationFormData {}\r\n\r\nexport interface AccountState {\r\n loading: boolean;\r\n errors?: string;\r\n accountFormData: RegisterAccountFormData;\r\n all: AccountListModel[];\r\n details?: AccountDetails;\r\n my?: AccountModel;\r\n settings: AccountSetting[];\r\n}\r\n\r\nexport type AccountModel = {\r\n id: string;\r\n email: string;\r\n firstName: string;\r\n lastName: string;\r\n organizationName: string;\r\n active: boolean;\r\n};\r\n\r\nexport type AccountListModel = {\r\n id: string;\r\n name: string;\r\n organizationId: string;\r\n organizationName: string;\r\n organizationType: OrganizationType;\r\n registerDate: Date;\r\n lastLoginDate?: Date;\r\n};\r\n\r\nexport type AccountDetails = {\r\n account: {\r\n id: string;\r\n email: string;\r\n firstName: string;\r\n lastName: string;\r\n creationDate: Date;\r\n enabled: boolean;\r\n emailConfirmed: boolean;\r\n defaultOrganizationId: string;\r\n };\r\n activities: AccountActivity[];\r\n};\r\n\r\ntype AccountActivity = {\r\n id: string;\r\n activityCode: number;\r\n timestamp: Date;\r\n};\r\n\r\nexport type AccountEditModel = {\r\n id: string;\r\n email: string;\r\n firstName: string;\r\n lastName: string;\r\n enabled: boolean;\r\n emailConfirmed: boolean;\r\n};\r\n","import { css } from '@emotion/core';\r\nimport styled from '@emotion/styled';\r\nimport ChevronLeftRoundedIcon from '@material-ui/icons/ChevronLeftRounded';\r\nimport ChevronRightRoundedIcon from '@material-ui/icons/ChevronRightRounded';\r\nimport animateScrollTo from 'animated-scroll-to';\r\nimport * as React from 'react';\r\n\r\ntype OwnProps = {\r\n itemCount: number;\r\n itemsPerPage: number;\r\n changePage: (newStartIndex: number) => void;\r\n};\r\n\r\ntype AllProps = OwnProps;\r\n\r\ntype State = {\r\n currentOffset: number;\r\n};\r\n\r\nclass XPagination extends React.Component {\r\n constructor(props: AllProps) {\r\n super(props);\r\n this.state = {\r\n currentOffset: 0\r\n };\r\n }\r\n\r\n public componentDidUpdate(prevProps) {\r\n if (prevProps.itemCount !== this.props.itemCount) {\r\n this.setState({ currentOffset: 0 });\r\n this.props.changePage(0);\r\n }\r\n }\r\n\r\n public canGoDown() {\r\n return this.state.currentOffset > 0;\r\n }\r\n\r\n public canGoUp() {\r\n return this.state.currentOffset + this.props.itemsPerPage < this.props.itemCount;\r\n }\r\n\r\n public changePageUp() {\r\n if (!this.canGoUp()) return;\r\n\r\n const newOffset = this.state.currentOffset + this.props.itemsPerPage;\r\n this.setState({ currentOffset: newOffset });\r\n this.props.changePage(newOffset);\r\n }\r\n\r\n public changePageDown() {\r\n if (!this.canGoDown()) return;\r\n\r\n const newOffset = this.state.currentOffset - this.props.itemsPerPage;\r\n this.setState({ currentOffset: newOffset });\r\n this.props.changePage(newOffset);\r\n }\r\n\r\n public render() {\r\n const numberOfPages = Math.ceil(this.props.itemCount / this.props.itemsPerPage);\r\n const currentPage = Math.round(this.state.currentOffset / this.props.itemsPerPage) + 1;\r\n const from = (currentPage - 1) * this.props.itemsPerPage + 1;\r\n const offset = this.props.itemCount % this.props.itemsPerPage;\r\n const to =\r\n currentPage * this.props.itemsPerPage -\r\n (currentPage === numberOfPages && offset !== 0 ? this.props.itemsPerPage - offset : 0);\r\n\r\n return (\r\n \r\n \r\n {from} - {to} of {this.props.itemCount}\r\n \r\n \r\n this.changePageDown()}\r\n className={`${!this.canGoDown() ? 'disabled' : ''}`}>\r\n <\r\n \r\n \r\n {Math.round(this.state.currentOffset / this.props.itemsPerPage) + 1} /{' '}\r\n {Math.max(Math.ceil(this.props.itemCount / this.props.itemsPerPage), 1)}\r\n \r\n this.changePageUp()}\r\n className={`${!this.canGoUp() ? 'disabled' : ''}`}>\r\n >\r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default XPagination;\r\n\r\nconst PaginationOuter = styled.div`\r\n display: flex;\r\n flex: 0;\r\n align-items: center;\r\n justify-content: center;\r\n padding-top: 10px;\r\n position: relative;\r\n`;\r\n\r\nconst PaginationInner = styled.div`\r\n display: flex;\r\n background: #f7f7f7;\r\n`;\r\n\r\nconst PaginationButton = styled.div`\r\n width: 40px;\r\n padding: 10px;\r\n line-height: 20px;\r\n text-align: center;\r\n border-radius: 4px;\r\n color: white;\r\n flex: 1;\r\n cursor: pointer;\r\n background: #2e7fc1;\r\n box-shadow: 0 8px 15px 0 rgba(0, 0, 0, 0.09), 0 2px 8px 0 rgba(0, 0, 0, 0.08);\r\n &.disabled {\r\n opacity: 0.6;\r\n }\r\n`;\r\n\r\nconst PaginationCurrent = styled.div`\r\n flex: 1;\r\n text-align: center;\r\n line-height: 40px;\r\n white-space: nowrap;\r\n padding-left: 15px;\r\n padding-right: 15px;\r\n`;\r\n\r\nconst PaginationFromToItems = styled.div`\r\n margin-left: 1rem;\r\n position: absolute;\r\n left: 0;\r\n`;\r\n","import { apiClient } from 'src/helpers/apiClient';\r\nimport { EditAccountData } from 'src/models/domain/EditAccount';\r\n\r\nimport { API_URL_ACCOUNT } from 'src/constants/ApiRoutes';\r\nimport { AccountSettingForm } from '../authentication/types';\r\nimport { ApiResult } from './../../helpers/apiClient';\r\nimport { AccountEditModel } from './types';\r\n\r\nexport async function saveAccount(command: {}) {\r\n return await apiClient.postCommandAsync(command);\r\n}\r\n\r\nexport const createAccount = async (accountData: any, image: any): Promise => {\r\n const command = {\r\n CommandName: 'CreateAccount',\r\n ...accountData\r\n };\r\n\r\n return await apiClient.postDataAsync(API_URL_ACCOUNT, command, [image]);\r\n};\r\n\r\nexport const createAccountForOrganization = async (data: any): Promise => {\r\n const command = {\r\n CommandName: 'CreateAccountForOrganization',\r\n ...data\r\n };\r\n\r\n return await apiClient.postCommandAsync(command);\r\n};\r\n\r\nexport const editAccount = async (data: EditAccountData): Promise => {\r\n const command = {\r\n CommandName: 'EditAccount',\r\n ...data\r\n };\r\n\r\n return await apiClient.postCommandAsync(command);\r\n};\r\n\r\nexport const saveSettings = async (data: AccountSettingForm[]): Promise => {\r\n const command = {\r\n CommandName: 'SaveSettings',\r\n Settings: data\r\n };\r\n\r\n return await apiClient.postCommandAsync(command);\r\n};\r\n\r\nexport const getSettings = async (): Promise => {\r\n return await apiClient.postQueryAsync('GetSettings', {});\r\n};\r\n\r\nexport const checkEmailAvailable = async (email: string): Promise => {\r\n const command = {\r\n CommandName: 'CheckEmailAvailable',\r\n Email: email\r\n };\r\n\r\n return await apiClient.postDataAsync(API_URL_ACCOUNT, command);\r\n};\r\n\r\nexport const verifyEmailCode = async (emailCode: string): Promise => {\r\n const command = {\r\n CommandName: 'VerifyEmailCode',\r\n Code: emailCode\r\n };\r\n return await apiClient.postDataAsync(API_URL_ACCOUNT, command);\r\n};\r\n\r\nexport const sendPasswordReset = async (email: string): Promise => {\r\n const command = {\r\n CommandName: 'ForgottenPassword',\r\n Email: email\r\n };\r\n return await apiClient.postDataAsync(API_URL_ACCOUNT, command);\r\n};\r\n\r\nexport const resetPassword = async (code: string, password: string): Promise => {\r\n const command = {\r\n CommandName: 'ResetPassword',\r\n Code: code,\r\n Password: password\r\n };\r\n return await apiClient.postDataAsync(API_URL_ACCOUNT, command);\r\n};\r\n\r\nexport const listAccounts = async (): Promise => {\r\n return await apiClient.postQueryAsync('ListAccounts', {});\r\n};\r\n\r\nexport const getAccount = async (id: string): Promise => {\r\n return await apiClient.postQueryAsync('GetAccount', { Id: id });\r\n};\r\n\r\nexport const deleteAccount = async (id: string) => {\r\n const command = {\r\n CommandName: 'DeleteAccount',\r\n Id: id\r\n };\r\n return await apiClient.postCommandAsync(command);\r\n};\r\n\r\nexport const editManageAccount = async (data: AccountEditModel) => {\r\n const command = {\r\n CommandName: 'EditManageAccount',\r\n Id: data.id,\r\n FirstName: data.firstName,\r\n LastName: data.lastName,\r\n Email: data.email,\r\n EmailConfirmed: data.emailConfirmed,\r\n Enabled: data.enabled\r\n };\r\n return await apiClient.postCommandAsync(command);\r\n};\r\n\r\nexport const getMyAccount = async () => {\r\n return await apiClient.postQueryAsync('GetMyAccount', {});\r\n};\r\n","import { Dispatch } from 'redux';\r\nimport { EditAccountForm } from 'src/pages/myltx/AccountPage';\r\n\r\nimport { commandAction, requestApiThunk } from 'src/helpers/actionHelpers';\r\nimport { ApiError } from 'src/helpers/apiClient';\r\nimport { AccountSetting, AccountSettingForm } from '../authentication/types';\r\nimport { FetchStatus } from '../catalogs/actions';\r\nimport { EditAccountData } from './../../models/domain/EditAccount';\r\nimport {\r\n checkEmailAvailable,\r\n createAccount,\r\n createAccountForOrganization,\r\n deleteAccount,\r\n editAccount,\r\n editManageAccount,\r\n getAccount,\r\n getMyAccount,\r\n getSettings,\r\n listAccounts,\r\n resetPassword,\r\n saveSettings,\r\n sendPasswordReset,\r\n verifyEmailCode\r\n} from './api';\r\nimport {\r\n AccountDetails,\r\n AccountEditModel,\r\n AccountListModel,\r\n AccountModel,\r\n ActionTypes,\r\n CreateAccountFormData,\r\n RegisterAccountFormData\r\n} from './types';\r\n\r\nexport type EditAccountSuccess = {\r\n type: ActionTypes.EDIT_ACCOUNT;\r\n payload: {};\r\n};\r\n\r\nexport type SaveSettingsSuccess = {\r\n type: ActionTypes.SAVE_SETTINGS;\r\n payload: {};\r\n};\r\n\r\nexport type StoreRegisterDataSuccess = {\r\n type: ActionTypes.STORE_REGISTER_DATA;\r\n status: FetchStatus;\r\n payload: { data: RegisterAccountFormData };\r\n};\r\n\r\nexport type GetSettingsAction = {\r\n type: ActionTypes.GET_SETTINGS;\r\n status: FetchStatus;\r\n errors?: ApiError[];\r\n payload: {\r\n settings?: AccountSetting[];\r\n };\r\n};\r\n\r\nexport type ListAccountsAction = {\r\n type: ActionTypes.LIST_ACCOUNTS;\r\n status: FetchStatus;\r\n errors?: ApiError[];\r\n payload: {\r\n accounts?: AccountListModel[];\r\n };\r\n};\r\n\r\nexport type GetAccountAction = {\r\n type: ActionTypes.GET_ACCOUNT;\r\n status: FetchStatus;\r\n errors?: ApiError[];\r\n payload: {\r\n account?: AccountDetails;\r\n };\r\n};\r\n\r\nexport type GetMyAccountAction = {\r\n type: ActionTypes.GET_MY_ACCOUNT;\r\n status: FetchStatus;\r\n errors?: ApiError[];\r\n payload: {\r\n account?: AccountModel;\r\n };\r\n};\r\n\r\nexport const storeNewData = (data: RegisterAccountFormData): StoreRegisterDataSuccess => ({\r\n type: ActionTypes.STORE_REGISTER_DATA,\r\n status: 'success',\r\n payload: { data }\r\n});\r\n\r\nexport const getSettingsAction = (\r\n status: FetchStatus,\r\n data?: AccountSetting[],\r\n errors?: ApiError[]\r\n): GetSettingsAction => ({\r\n type: ActionTypes.GET_SETTINGS,\r\n status,\r\n errors,\r\n payload: {\r\n settings: data\r\n }\r\n});\r\n\r\nexport const listAccountsAction = (\r\n status: FetchStatus,\r\n data?: AccountListModel[],\r\n errors?: ApiError[]\r\n): ListAccountsAction => ({\r\n type: ActionTypes.LIST_ACCOUNTS,\r\n status,\r\n errors,\r\n payload: {\r\n accounts: data\r\n }\r\n});\r\n\r\nexport const getAccountAction = (\r\n status: FetchStatus,\r\n data?: AccountDetails,\r\n errors?: ApiError[]\r\n): GetAccountAction => ({\r\n type: ActionTypes.GET_ACCOUNT,\r\n status,\r\n errors,\r\n payload: {\r\n account: data\r\n }\r\n});\r\n\r\nexport const getMyAccountAction = (\r\n status: FetchStatus,\r\n data?: AccountModel,\r\n errors?: ApiError[]\r\n): GetMyAccountAction => ({\r\n type: ActionTypes.GET_MY_ACCOUNT,\r\n status,\r\n errors,\r\n payload: {\r\n account: data\r\n }\r\n});\r\n\r\nexport const createAccountForOrganizationThunk = (formData: CreateAccountFormData) => {\r\n const command = {\r\n CommandName: 'CreateAccountForOrganization',\r\n Email: formData.email,\r\n FirstName: formData.firstName,\r\n LastName: formData.lastName,\r\n Password: formData.password,\r\n OrganizationId: formData.organization\r\n };\r\n\r\n return requestApiThunk(\r\n (status: FetchStatus, data?: any, errors?: ApiError[]) =>\r\n commandAction(status, ActionTypes.CREATE_ACCOUNT_FOR_ORGANIZATION, errors),\r\n () => createAccountForOrganization(command)\r\n );\r\n};\r\n\r\nexport const createAccountThunk = (formData: RegisterAccountFormData) => {\r\n const command = {\r\n CommandName: 'CreateAccount',\r\n Email: formData.email,\r\n FirstName: formData.firstName,\r\n LastName: formData.lastName,\r\n Password: formData.password,\r\n CompanyName: formData.name,\r\n CompanyDescription: formData.description,\r\n CompanyEmail: formData.companyEmail,\r\n OrganizationType: formData.organizationType,\r\n Street: formData.street,\r\n HouseNumber: formData.houseNumber,\r\n Postal: formData.postalCode,\r\n City: formData.city,\r\n Country: formData.country,\r\n TelephoneNumber: formData.telephoneNumber,\r\n Website: formData.website,\r\n Language: formData.language\r\n // Iban: formData.iban,\r\n // Btw: formData.btwNumber\r\n };\r\n\r\n return requestApiThunk(\r\n (status: FetchStatus, data?: any, errors?: ApiError[]) =>\r\n commandAction(status, ActionTypes.CREATE_ACCOUNT, errors),\r\n () => createAccount(command, formData.image)\r\n );\r\n};\r\n\r\nexport const EditAccountThunk = (accountForm: EditAccountForm) => {\r\n const accountData: EditAccountData = {\r\n Id: accountForm.id,\r\n Password: accountForm.password\r\n };\r\n\r\n return requestApiThunk(\r\n (status: FetchStatus, data?: any, errors?: ApiError[]) =>\r\n commandAction(status, ActionTypes.EDIT_ACCOUNT, errors),\r\n () => editAccount(accountData)\r\n );\r\n};\r\n\r\nexport const SaveSettingsThunk = (settingsData: AccountSettingForm[]) => {\r\n return requestApiThunk(\r\n (status: FetchStatus, data?: any, errors?: ApiError[]) =>\r\n commandAction(status, ActionTypes.SAVE_SETTINGS, errors),\r\n () => saveSettings(settingsData)\r\n );\r\n};\r\n\r\nexport const GetSettingsThunk = () => {\r\n return requestApiThunk(getSettingsAction, () => getSettings());\r\n};\r\n\r\nexport const checkEmailAvailableThunk = (email: string) => {\r\n return requestApiThunk(\r\n (status: FetchStatus, data?: any, errors?: ApiError[]) =>\r\n commandAction(status, ActionTypes.CHECK_EMAIL_AVAILABLE, errors),\r\n () => checkEmailAvailable(email)\r\n );\r\n};\r\n\r\nexport const verifyEmailCodeThunk = (code: string) => {\r\n return requestApiThunk(\r\n (status: FetchStatus, data?: any, errors?: ApiError[]) =>\r\n commandAction(status, ActionTypes.VERIFY_EMAIL_CODE, errors),\r\n () => verifyEmailCode(code)\r\n );\r\n};\r\n\r\nexport const sendPasswordResetThunk = (email: string) => {\r\n return requestApiThunk(\r\n (status: FetchStatus, data?: any, errors?: ApiError[]) =>\r\n commandAction(status, ActionTypes.SEND_PASSWORD_RESET, errors),\r\n () => sendPasswordReset(email)\r\n );\r\n};\r\n\r\nexport const resetPasswordThunk = (code: string, password: string) => {\r\n return requestApiThunk(\r\n (status: FetchStatus, data?: any, errors?: ApiError[]) =>\r\n commandAction(status, ActionTypes.SEND_PASSWORD_RESET, errors),\r\n () => resetPassword(code, password)\r\n );\r\n};\r\n\r\nexport const listAccountsThunk = () => {\r\n return requestApiThunk(listAccountsAction, () => listAccounts());\r\n};\r\n\r\nexport const getAccountThunk = (id: string) => {\r\n return requestApiThunk(getAccountAction, () => getAccount(id));\r\n};\r\n\r\nexport const getMyAccountThunk = () => {\r\n return requestApiThunk(getMyAccountAction, () => getMyAccount());\r\n};\r\n\r\nexport const deleteAccountThunk = (id: string) => {\r\n return requestApiThunk(\r\n (status: FetchStatus, data?: any, errors?: ApiError[]) =>\r\n commandAction(status, ActionTypes.DELETE_ACCOUNT, errors),\r\n () => deleteAccount(id),\r\n listAccountsThunk()\r\n );\r\n};\r\n\r\nexport const editManageAccountThunk = (editModel: AccountEditModel) => {\r\n return requestApiThunk(\r\n (status: FetchStatus, data?: any, errors?: ApiError[]) =>\r\n commandAction(status, ActionTypes.EDIT_MANAGE_ACCOUNT, errors),\r\n () => editManageAccount(editModel),\r\n getAccountThunk(editModel.id)\r\n );\r\n};\r\n\r\nexport type Action =\r\n | StoreRegisterDataSuccess\r\n | GetSettingsAction\r\n | ListAccountsAction\r\n | GetAccountAction\r\n | GetMyAccountAction;\r\n","import * as React from 'react';\r\n\r\nimport Search from '@material-ui/icons/Search';\r\nimport styled from '@emotion/styled';\r\n\r\ntype OwnProps = {\r\n placeholder?: string;\r\n onChange?: (event: React.ChangeEvent) => void;\r\n};\r\n\r\ntype AllProps = OwnProps;\r\n\r\nconst XSearchBar: React.SFC = props => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nconst Container = styled('div')`\r\n display: flex;\r\n border-radius: 4px;\r\n border-color: rgba(0, 0, 0, 0.23);\r\n border-style: solid;\r\n border-width: 1px;\r\n height: 34px;\r\n`;\r\n\r\nconst IconWrapper = styled('div')`\r\n position: relative;\r\n width: 34px;\r\n & svg {\r\n position: absolute;\r\n top: 50%;\r\n left: 50%;\r\n transform: translate(-50%, -50%);\r\n }\r\n`;\r\n\r\nconst Input = styled('input')`\r\n flex: 1;\r\n border: none;\r\n outline: none;\r\n font-size: 14px;\r\n`;\r\n\r\nexport default XSearchBar;\r\n","import styled from '@emotion/styled';\r\n\r\nexport const XFilterBar = styled('div')(`\r\ndisplay: flex;\r\npadding: 15px; \r\npadding-bottom: 0; \r\nborder-top: 1px solid #ececec;\r\n`);\r\n","import styled from '@emotion/styled';\r\n\r\nexport const XActionStrip = styled('div')({\r\n display: 'flex',\r\n '& > *': {\r\n marginLeft: '5px!important'\r\n },\r\n '&.disabled': {\r\n opacity: '.5',\r\n '& *': {\r\n pointerEvents: 'none'\r\n }\r\n }\r\n});\r\n","import { css } from '@emotion/core';\r\nimport styled from '@emotion/styled';\r\nimport { CircularProgress } from '@material-ui/core';\r\nimport * as React from 'react';\r\nimport XButton, { XButtonStyle } from './XButton';\r\nimport { XContainer } from './XContainer';\r\nimport { XRow } from './XRow';\r\nimport { Translation } from 'react-i18next';\r\n\r\ntype OwnProps = {\r\n onSave?: any;\r\n onCancel?: any;\r\n saveText?: string;\r\n cancelText?: string;\r\n enabled?: boolean;\r\n enabledSave?: boolean;\r\n loading?: boolean;\r\n style?: any;\r\n};\r\n\r\ntype AllProps = OwnProps;\r\n\r\nconst XFormButtons: React.SFC = props => {\r\n let saveState = true;\r\n if (props.enabledSave !== undefined || props.loading !== undefined) {\r\n if (props.enabledSave !== undefined) saveState = props.enabledSave === true;\r\n else if (props.loading !== undefined) saveState = props.loading === false;\r\n } else if (props.enabled !== undefined) saveState = props.enabled === true;\r\n\r\n return (\r\n \r\n \r\n \r\n {t => (\r\n \r\n {props.cancelText ? props.cancelText : t('tooltip.cancel')}\r\n \r\n )}\r\n \r\n \r\n {t => (\r\n (saveState ? props.onSave() : undefined)}\r\n active={saveState}\r\n loading={props.loading}>\r\n {props.saveText ? props.saveText : t('tooltip.save')}\r\n \r\n )}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default XFormButtons;\r\n","import React from 'react';\r\nimport { Redirect, Route, RouteComponentProps, Switch } from 'react-router';\r\nimport { PageRoute } from 'src/models/Route';\r\n\r\ntype OwnProps = {\r\n routes: PageRoute[];\r\n prependMatchPath?: boolean;\r\n shouldRedirectToConnections?: boolean;\r\n};\r\n\r\ntype AllProps = OwnProps & RouteComponentProps;\r\n\r\nclass XPageRouter extends React.Component {\r\n private static defaultProps: Partial = {\r\n prependMatchPath: false\r\n };\r\n\r\n public render() {\r\n const { match } = this.props;\r\n const { routes } = this.props;\r\n const { prependMatchPath } = this.props;\r\n\r\n return (\r\n \r\n {this.props.shouldRedirectToConnections && (\r\n }\r\n />\r\n )}\r\n {routes.map((route, index) => {\r\n return (\r\n \r\n );\r\n })}\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default XPageRouter;\r\n","import { css } from '@emotion/core';\r\nimport styled from '@emotion/styled';\r\nimport { TextField } from '@material-ui/core';\r\nimport { TextFieldProps } from '@material-ui/core/TextField';\r\nimport * as React from 'react';\r\n\r\ntype OwnProps = { placeholder?: string };\r\n\r\ntype AllProps = OwnProps & TextFieldProps;\r\n\r\nconst XField: React.SFC = props => {\r\n return ;\r\n};\r\n\r\nconst Field = styled(TextField)({\r\n marginBottom: '15px',\r\n width: '100%'\r\n});\r\n\r\nexport default XField;\r\n","let apiUrl = process.env.REACT_APP_API_URL;\r\n\r\nif (process.env.NODE_ENV === 'development') {\r\n apiUrl = 'https://localhost:44336/';\r\n}\r\n\r\nexport const API_URL = apiUrl;\r\n\r\nexport const API_URL_COMMAND = `${API_URL}command`;\r\nexport const API_URL_QUERY = `${API_URL}query`;\r\nexport const API_URL_LOGIN = `${API_URL}login`;\r\n\r\nexport const API_URL_AUTH = `${API_URL}authenticate`;\r\nexport const API_URL_AUTH_IMPERSONATED = `${API_URL}authenticateimpersonated`;\r\nexport const API_URL_ACCOUNT = `${API_URL}command/account`;\r\n\r\n// https://localhost:44336/\r\n","export enum ActionTypes {\r\n SHOW_DATAFORM = '[UI] SHOW_DATAFORM',\r\n SHOW_SNACKBAR = '[UI] SHOW_SNACKBAR',\r\n SHOW_NOTIFICATION = '[UI] SHOW_NOTIFICATION',\r\n SHOW_CONFIRMATION = '[UI] SHOW_CONFIRMATION',\r\n HIDE_NOTIFICATION = '[UI] HIDE_NOTIFICATION',\r\n HIDE_CONFIRMATION = '[UI] HIDE_CONFIRMATION',\r\n CHANGE_VIEW = '[UI] CHANGE_VIEW'\r\n}\r\n\r\nexport type MessageType = 'info' | 'warning' | 'success' | 'error';\r\nexport type ViewType = 'grid' | 'list';\r\n\r\nexport interface NotificationState {\r\n show: boolean;\r\n message?: string;\r\n type?: MessageType;\r\n}\r\n\r\nexport interface ConfirmationState {\r\n show: boolean;\r\n title: string;\r\n message: string;\r\n onConfirm: () => void;\r\n}\r\n\r\nexport interface SnackbarState extends NotificationState {\r\n actions?: 'undo';\r\n}\r\n\r\nexport interface LayoutState {\r\n headerText: string;\r\n loader: {\r\n show: boolean;\r\n };\r\n snackbar: SnackbarState; // ActionBar\r\n notification: NotificationState; // Toast\r\n confirmation: ConfirmationState;\r\n viewCatalogs: ViewType;\r\n viewOrganizations: ViewType;\r\n\r\n prompt: {};\r\n // dataForm: { show: boolean };\r\n}\r\n","import { ApiError } from 'src/helpers/apiClient';\r\nimport { StockValidationSummary, StockFileViolation, Stock, StockModel } from 'src/models/Stock';\r\nimport { FileFormat } from 'src/models/FileFormat';\r\n\r\nexport enum ActionTypes {\r\n ADD_STOCK = '[stock] ADD_STOCK',\r\n DELETE_STOCK = '[stock] DELETE_STOCK',\r\n GET_STOCK = '[stock] GET_STOCK',\r\n GET_FILE_FORMATS = '[stock] GET_FILE_FORMATS',\r\n GET_STOCKS = '[stock] GET_STOCKS',\r\n GET_SUBSCRIBED_STOCKS = '[stock] GET_SUBSCRIBED_STOCKS',\r\n GET_STOCK_ORGANIZATION = '[stock] GET_STOCK_ORGANIZATION',\r\n GET_RECEIVING_STOCK_ORGANIZATION = '[stock] GET_RECEIVING_STOCK_ORGANIZATION',\r\n EDIT_STOCK_AVAILABLE = '[stock] EDIT_STOCK_AVAILABLE'\r\n}\r\n\r\nexport type AddStockFormData = {\r\n organizationId: string;\r\n title: string;\r\n description: string;\r\n fileFormatId: string;\r\n fileFormatVersionId: string;\r\n interfaceType: string;\r\n interfaceMethod: string;\r\n interfaceAuthentication: string;\r\n settings: object;\r\n};\r\n\r\nexport enum StockAccessibility {\r\n SelectedConnections = 'SelectedConnections',\r\n AllConnections = 'AllConnections',\r\n Public = 'Public'\r\n}\r\n\r\nexport type EditStockFormData = {\r\n title: string;\r\n description: string;\r\n};\r\n\r\nexport type StockState = {\r\n loading: boolean;\r\n data: {\r\n all: Stock[] | undefined;\r\n new: Stock[];\r\n popular: Stock[];\r\n special: Stock[];\r\n top: Stock[];\r\n my: Stock[];\r\n subscribed: Stock[];\r\n detail?: StockModel;\r\n };\r\n addStock: StockFormData;\r\n validation: {\r\n validationSummary?: StockValidationSummary;\r\n error?: ApiError;\r\n };\r\n conversion: {\r\n transformResult?: any;\r\n error?: ApiError;\r\n };\r\n fileFormats: FileFormat[];\r\n errors?: string;\r\n};\r\n\r\nexport type ConversionResult = {\r\n from: string;\r\n to: string;\r\n writeDuration: number;\r\n readDuraction: number;\r\n errors: StockFileViolation[];\r\n url: string;\r\n};\r\n\r\nexport type StockFormData = {\r\n organizationId: string;\r\n title: string;\r\n description: string;\r\n image: any;\r\n versionName: string;\r\n startDate?: Date;\r\n endDate?: Date;\r\n fileFormat: string;\r\n fileFormatVersion: string;\r\n accessibility: StockAccessibility;\r\n retailers: string[];\r\n file: any;\r\n uploaded: boolean;\r\n};\r\n\r\nexport const EmptyStockFormData = {\r\n title: '',\r\n description: '',\r\n image: undefined,\r\n organizationId: '',\r\n versionName: '',\r\n fileFormat: '',\r\n fileFormatVersion: '',\r\n accessibility: StockAccessibility.AllConnections,\r\n retailers: [],\r\n startDate: undefined,\r\n endDate: undefined,\r\n file: null,\r\n uploaded: false\r\n};\r\n\r\nexport type MappingItem = {\r\n column: string;\r\n mappingType: string;\r\n sampleData: any;\r\n}\r\n\r\nexport type Mapping = {\r\n mappingItems: MappingItem[];\r\n delimiter: string;\r\n}\r\n\r\n","import { apiClient, ApiResult } from '../../helpers/apiClient';\r\n\r\nexport type CatalogRequestStatus = 'approve' | 'disapprove';\r\n\r\nexport const listRequests = async (): Promise => {\r\n return await apiClient.postQueryAsync('ListRequests', {});\r\n};\r\n\r\nexport const listManageRequests = async (): Promise => {\r\n return await apiClient.postQueryAsync('ListManageRequests', {});\r\n};\r\n\r\nexport const sendRequest = async (\r\n targetOrganizationId: string,\r\n catalogIds?: string[]\r\n): Promise => {\r\n const command = {\r\n CommandName: 'CreateRequest',\r\n TargetOrganizationId: targetOrganizationId,\r\n AvailableCatalogs: catalogIds ?? []\r\n };\r\n\r\n return await apiClient.postCommandAsync(command);\r\n};\r\n\r\nexport const cancelRequest = async (id: string): Promise => {\r\n const command = {\r\n CommandName: 'CancelRequest',\r\n RequestId: id\r\n };\r\n\r\n return await apiClient.postCommandAsync(command);\r\n};\r\n\r\nexport const updateRequest = async (\r\n catalogRequestId: string,\r\n status: CatalogRequestStatus\r\n): Promise => {\r\n const command = {\r\n CommandName: 'EditRequest',\r\n Id: catalogRequestId,\r\n Status: status\r\n };\r\n\r\n return await apiClient.postCommandAsync(command);\r\n};\r\n","import { AnyAction, Dispatch } from 'redux';\r\nimport { RequestManageModel, RequestModel } from '../../models/Request';\r\n\r\nimport { commandAction, requestApiThunk } from 'src/helpers/actionHelpers';\r\nimport { ApiError, ApiResult } from 'src/helpers/apiClient';\r\nimport {\r\n cancelRequest,\r\n CatalogRequestStatus,\r\n listManageRequests,\r\n listRequests,\r\n sendRequest,\r\n updateRequest\r\n} from './api';\r\nimport { ActionTypes } from './types';\r\n\r\nexport type FetchStatus = 'request' | 'success' | 'failure';\r\n\r\n// Action creator types\r\nexport type GetRequestsAction = {\r\n type: ActionTypes.GET_REQUESTS;\r\n status: FetchStatus;\r\n errors?: ApiError[];\r\n payload: {\r\n requests?: RequestModel[];\r\n };\r\n};\r\n\r\nexport type GetManageRequestsAction = {\r\n type: ActionTypes.GET_MANAGE_REQUESTS;\r\n status: FetchStatus;\r\n errors?: ApiError[];\r\n payload: {\r\n requests?: RequestManageModel[];\r\n };\r\n};\r\n\r\nexport type UpdateCatalogRequestSuccessAction = {\r\n type: ActionTypes.UPDATE_REQUEST;\r\n status: FetchStatus;\r\n errors?: ApiError[];\r\n payload: {};\r\n};\r\n\r\n// Action creators\r\nexport const getRequestsAction = (\r\n status: FetchStatus,\r\n data?: RequestModel[],\r\n errors?: ApiError[]\r\n): GetRequestsAction => ({\r\n type: ActionTypes.GET_REQUESTS,\r\n status,\r\n errors,\r\n payload: {\r\n requests: data\r\n }\r\n});\r\n\r\nexport const getManageRequestsAction = (\r\n status: FetchStatus,\r\n data?: RequestManageModel[],\r\n errors?: ApiError[]\r\n): GetManageRequestsAction => ({\r\n type: ActionTypes.GET_MANAGE_REQUESTS,\r\n status,\r\n errors,\r\n payload: {\r\n requests: data\r\n }\r\n});\r\n\r\n// Action thunk\r\nexport const createRequestThunk = (targetOrganizationId: string, catalogIds?: string[]) => {\r\n return requestApiThunk(\r\n (status: FetchStatus, data?: any, errors?: ApiError[]) =>\r\n commandAction(status, ActionTypes.SEND_REQUEST, errors),\r\n () => sendRequest(targetOrganizationId, catalogIds),\r\n getRequestsThunk()\r\n );\r\n};\r\n\r\nexport const getRequestsThunk = () => {\r\n return requestApiThunk(getRequestsAction, listRequests);\r\n};\r\n\r\nexport const getManageRequestsThunk = () => {\r\n return requestApiThunk(getManageRequestsAction, listManageRequests);\r\n};\r\n\r\nexport const cancelRequestThunk = (id: string) => {\r\n return requestApiThunk(\r\n (status: FetchStatus, data?: any, errors?: ApiError[]) =>\r\n commandAction(status, ActionTypes.CANCEL_REQUEST, errors),\r\n () => cancelRequest(id),\r\n getRequestsThunk()\r\n );\r\n};\r\n\r\nexport const updateRequestThunk = (request: RequestModel, requestStatus: CatalogRequestStatus) => {\r\n return requestApiThunk(\r\n (status: FetchStatus, data?: any, errors?: ApiError[]) =>\r\n commandAction(status, ActionTypes.UPDATE_REQUEST, errors),\r\n () => updateRequest(request.connectRequest.id, requestStatus),\r\n getRequestsThunk()\r\n );\r\n};\r\n\r\nexport type Action =\r\n | GetRequestsAction\r\n | UpdateCatalogRequestSuccessAction\r\n | GetManageRequestsAction;\r\n","import { RequestManageModel, RequestModel } from '../../models/Request';\r\nexport enum ActionTypes {\r\n SEND_REQUEST = '[requests] SEND_REQUEST',\r\n CANCEL_REQUEST = '[requests] CANCEL_REQUEST',\r\n GET_REQUESTS = '[requests] GET_REQUESTS',\r\n GET_MANAGE_REQUESTS = '[requests] GET_MANAGE_REQUESTS',\r\n UPDATE_REQUEST = '[requests] UPDATE_REQUEST'\r\n}\r\n\r\nexport enum RequestState {\r\n NOT_REQUESTED,\r\n REQUEST_PENDING,\r\n APPROVED,\r\n DISAPPROVED\r\n}\r\n\r\nexport interface RequestStateModel {\r\n loading: boolean;\r\n requests: RequestModel[];\r\n manageRequests: RequestManageModel[];\r\n errors?: string;\r\n}\r\n","import styled from '@emotion/styled';\r\nimport * as React from 'react';\r\nimport XButton, { XButtonStyle } from './XButton';\r\nimport { XPaper } from './XPaper';\r\nimport { XRow } from './XRow';\r\n\r\ntype OwnProps = {\r\n title: string;\r\n buttonSaveText?: string;\r\n buttonCancelText?: string;\r\n open: boolean;\r\n saveAvailable?: boolean;\r\n cancelOnPagClick?: boolean;\r\n bottomContent?: any;\r\n\r\n onSave?: () => void;\r\n onCancel?: () => void;\r\n};\r\n\r\ntype State = {\r\n open: boolean;\r\n};\r\n\r\nclass XPopup extends React.Component {\r\n constructor(props: OwnProps) {\r\n super(props);\r\n\r\n this.state = { open: this.props.open };\r\n }\r\n\r\n public componentDidUpdate(prevProps) {\r\n if (prevProps.open !== this.props.open) {\r\n this.setState({ open: this.props.open });\r\n }\r\n }\r\n\r\n public render() {\r\n return (\r\n this.state.open && (\r\n \r\n {\r\n if (this.props.cancelOnPagClick && this.props.onCancel) this.props.onCancel();\r\n }}\r\n />\r\n \r\n \r\n {this.props.title}\r\n {this.props.children}\r\n {(this.props.buttonCancelText ||\r\n this.props.buttonSaveText ||\r\n this.props.bottomContent) && (\r\n
\r\n {(this.props.buttonCancelText || this.props.buttonSaveText) && (\r\n
\r\n \r\n {this.props.buttonCancelText && (\r\n \r\n {this.props.buttonCancelText}\r\n \r\n )}\r\n {this.props.buttonSaveText && (\r\n \r\n {this.props.buttonSaveText}\r\n \r\n )}\r\n \r\n
\r\n )}\r\n {this.props.bottomContent && this.props.bottomContent}\r\n
\r\n )}\r\n
\r\n
\r\n
\r\n )\r\n );\r\n }\r\n}\r\n\r\nexport default XPopup;\r\n\r\nconst PopupOuter = styled.div`\r\n position: fixed;\r\n left: 0;\r\n right: 0;\r\n top: 0;\r\n bottom: 0;\r\n z-index: 2;\r\n`;\r\n\r\nconst PopupBackground = styled.div`\r\n opacity: 0.4;\r\n width: 100%;\r\n height: 100%;\r\n background: #000;\r\n`;\r\n\r\nconst PopupWrapper = styled.div`\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n position: absolute;\r\n left: 0;\r\n right: 0;\r\n top: 0;\r\n bottom: 0;\r\n pointer-events: none;\r\n`;\r\n\r\nconst PopupInner = styled(XPaper)`\r\n flex: 1;\r\n max-width: 800px;\r\n margin: 40px;\r\n pointer-events: all;\r\n`;\r\n\r\nconst PopupTitle = styled.div`\r\n font-weight: bold;\r\n padding: 0 20px;\r\n`;\r\n\r\nconst PopupContent = styled.div`\r\n margin: 20px;\r\n min-height: 50px;\r\n overflow-y: auto;\r\n position: relative;\r\n`;\r\n\r\nconst PopupButtons = styled.div``;\r\n","module.exports = __webpack_public_path__ + \"static/media/main.348bccec.svg\";","import { css } from '@emotion/core';\r\nimport styled from '@emotion/styled';\r\nimport * as React from 'react';\r\n\r\nimport { XContainer } from './XContainer';\r\n\r\ntype OwnProps = { columns?: number; style?: any; width?: number };\r\n\r\ntype AllProps = OwnProps;\r\n\r\nconst XGrid: React.SFC = props => {\r\n return {props.children};\r\n};\r\n\r\nexport default XGrid;\r\n\r\nconst Grid = styled(XContainer)(\r\n {\r\n flexWrap: 'wrap',\r\n display: 'flex',\r\n width: '100%',\r\n justifyContent: 'end'\r\n },\r\n (props: OwnProps) => ({\r\n '> *': {\r\n width: props.columns ? ((100 / props.columns) as number) + '%' : '50%',\r\n minWidth: props.width ? props.width + 'px' : ''\r\n }\r\n })\r\n);\r\n","import { API_URL_COMMAND, API_URL_QUERY } from 'src/constants/ApiRoutes';\r\nimport { apiClient } from 'src/helpers/apiClient';\r\nimport { Software } from 'src/models/Software';\r\nimport { ApiResult } from './../../helpers/apiClient';\r\n\r\nexport async function listSoftware(): Promise {\r\n return await apiClient.postQueryAsync('ListSoftware');\r\n}\r\n","import { Dispatch } from 'redux';\r\nimport { requestApiThunk } from 'src/helpers/actionHelpers';\r\nimport { ApiError } from 'src/helpers/apiClient';\r\n\r\nimport { Software } from '../../models/Software';\r\nimport { listSoftware } from './api';\r\nimport { ActionTypes } from './types';\r\n\r\ntype FetchStatus = 'request' | 'success' | 'failure';\r\n\r\nexport type GetSoftwareAction = {\r\n type: ActionTypes.GET_SOFTWARE;\r\n status: FetchStatus;\r\n errors?: ApiError[];\r\n payload: { software?: Software[] };\r\n};\r\n\r\nconst getSoftwareAction = (\r\n status: FetchStatus,\r\n data?: Software[],\r\n errors?: ApiError[]\r\n): GetSoftwareAction => ({\r\n type: ActionTypes.GET_SOFTWARE,\r\n status,\r\n errors,\r\n payload: {\r\n software: data\r\n }\r\n});\r\n\r\nexport const getSoftwareThunk = () => {\r\n return requestApiThunk(getSoftwareAction, listSoftware);\r\n};\r\n\r\nexport const sortSoftware = (a: Software, b: Software) => {\r\n if (a.creator === 'Bloemert') return 1;\r\n return a.creator.localeCompare(b.creator);\r\n};\r\n\r\nexport type Action = GetSoftwareAction;\r\n","import { ProcessingStatus, PublicationStatus } from 'src/models/Catalog';\r\n\r\nexport const getProcessingStatusText = (t: ProcessingStatus | undefined) : string => {\r\n switch (t) {\r\n case ProcessingStatus.Uploading:\r\n return \"Aan het uploaden\";\r\n case ProcessingStatus.Uploaded:\r\n return \"In wachtrij\";\r\n case ProcessingStatus.Validating: \r\n return \"3/4 Bezig met valideren\";\r\n // case ProcessingStatus.Validated:\r\n // case ProcessingStatus.ValidatedWithWarnings:\r\n // return \"Gevalideerd\";\r\n case ProcessingStatus.ValidationFailed:\r\n return \"3/4 Validatie mislukt\";\r\n case ProcessingStatus.WaitingForMapping:\r\n return \"Voltooi bestands mapping\"\r\n case ProcessingStatus.Converted:\r\n return \"2/4 Converteren geslaagd\"\r\n case ProcessingStatus.Converting:\r\n return \"2/4 Bezig met converteren\"\r\n case ProcessingStatus.ConvertingFailed:\r\n return \"2/4 Converteren mislukt\"\r\n case ProcessingStatus.Fetched: \r\n return \"1/4 Ophalen bestand geslaagd\"\r\n case ProcessingStatus.Fetching:\r\n return \"1/4 Ophalen nieuw bestand\"\r\n case ProcessingStatus.FetchingFailed:\r\n return \"1/4 Ophalen nieuw bestand mislukt\"\r\n case ProcessingStatus.None:\r\n return \"Wachten op verwerking\"\r\n case ProcessingStatus.Promoted:\r\n return \"4/4 Promoveren geslaagd\"\r\n case ProcessingStatus.Promoting:\r\n return \"4/4 Bezig met promoveren\"\r\n case ProcessingStatus.PromotingFailed:\r\n return \"4/4 Promoveren mislukt\"\r\n case ProcessingStatus.UploadFailed:\r\n return \"Upload failed\"\r\n case ProcessingStatus.Uploading:\r\n return \"Uploading\"\r\n case ProcessingStatus.Validated: \r\n return \"3/4 Valideren geslaagd\"\r\n case ProcessingStatus.ValidatedWithWarnings:\r\n return \"3/4 Gevalideerd (waarschuwingen)\"\r\n case ProcessingStatus.Validating:\r\n return \"3/4 Bezig met valideren\"\r\n case ProcessingStatus.ValidatingFailed:\r\n case ProcessingStatus.ValidationFailed:\r\n return \"3/4 Valideren mislukt\"\r\n case ProcessingStatus.MappingFailed:\r\n return \"Bestandsmapping mislukt\"\r\n }\r\n\r\n return \"\";\r\n} \r\n\r\nexport const getPublicationStatusText = (t: PublicationStatus | undefined) : string => {\r\n switch (t) {\r\n case PublicationStatus.Published:\r\n return \"Gepubliceerd\";\r\n case PublicationStatus.Unpublished:\r\n return \"Niet gepubliceerd\"\r\n }\r\n\r\n return \"\";\r\n}\r\n","import { Message } from 'src/models/Message';\r\nimport { CatalogMessageModel } from 'src/models/Message'\r\nimport { OrderMessage } from 'src/models/OrderMessage';\r\n\r\nexport enum ActionTypes {\r\n GET_MESSAGES = '[messages] GET_MESSAGES',\r\n GET_NEW_MESSAGES = '[newMessages] GET_NEW_MESSAGES',\r\n SEND_MESSAGE = '[messages] SEND_MESSAGE',\r\n UPDATE_MESSAGE = '[messages] UPDATE_MESSAGE',\r\n GET_CATALOG_MESSAGES = '[messages] GET_CATALOG_MESSAGES',\r\n GET_ORGANIZATION_CATALOG_MESSAGES = '[messages] GET_ORGANIZATION_CATALOG_MESSAGES',\r\n GET_SENT_ORDER_MESSAGES = '[messages] GET_SENT_ORDER_MESSAGES',\r\n GET_ORDER_MESSAGES = '[messages] GET_ORDER_MESSAGES'\r\n}\r\n\r\nexport interface MessageState {\r\n loading: boolean;\r\n readonly newMessages: Message[];\r\n messages: Message[];\r\n readonly errors?: string;\r\n catalogMessages?: CatalogMessageModel[];\r\n orderMessages?: OrderMessage[];\r\n}\r\n\r\n","\r\n\r\nexport const breakpoints = [576, 768, 992, 1200];\r\nexport const mediaQuery = breakpoints.map(bp => `@media (min-width: ${bp}px)`);\r\n","import { InterfaceMethod, InterfaceType, OrganizationType } from 'src/models/Organization';\r\nimport i18n from '../../i18n'\r\n\r\nexport const getInterfaceTypes = (type: OrganizationType | undefined) => {\r\n switch (type) {\r\n case OrganizationType.Retailer:\r\n return [InterfaceType.CatalogReceive, InterfaceType.OrderSend];\r\n case OrganizationType.Supplier:\r\n return [InterfaceType.CatalogSend, InterfaceType.OrderReceive];\r\n }\r\n return []\r\n};\r\n\r\nexport const getInterfaceTypesOrder = (type: OrganizationType | undefined) => {\r\n switch (type) {\r\n case OrganizationType.Retailer:\r\n return [InterfaceType.OrderSend];\r\n case OrganizationType.Supplier:\r\n return [InterfaceType.OrderReceive];\r\n }\r\n return []\r\n};\r\n\r\nexport const getInterfaceTypesCatalog = (type: OrganizationType | undefined) => {\r\n switch (type) {\r\n case OrganizationType.Retailer:\r\n return [InterfaceType.CatalogReceive];\r\n case OrganizationType.Supplier:\r\n return [InterfaceType.CatalogSend];\r\n }\r\n return []\r\n};\r\n\r\nexport const getInterfaceText = (t: InterfaceType | undefined) : {title: string, description: string} => {\r\n switch (t) {\r\n case InterfaceType.CatalogSend: \r\n return {title: i18n.t('adminOrganizations.sendCatalog'), description: i18n.t('adminOrganizations.howDoYouSendCatalogsToArxis')} \r\n case InterfaceType.CatalogReceive: \r\n return {title: i18n.t('adminOrganizations.receiveCatalog'), description: i18n.t('adminOrganizations.howDoYouReceiveCatalogsFromArxis')} \r\n case InterfaceType.OrderSend: \r\n return {title: i18n.t('adminOrganizations.sendingOrders'), description: i18n.t('adminOrganizations.howDoYouSendOrdersToArxis')} \r\n case InterfaceType.OrderReceive: \r\n return {title: i18n.t('adminOrganizations.receivingOrders'), description: i18n.t('adminOrganizations.howDoYouReceiveOrdersFromArxis')} \r\n }\r\n\r\n return {title: '', description: ''}\r\n} \r\n\r\nexport const getInterfaceFormats = (t: InterfaceType | undefined) : Array => {\r\n switch (t) {\r\n case InterfaceType.CatalogSend:\r\n return ['CSV', 'ECAT', 'IDM', 'LTX'];\r\n case InterfaceType.CatalogReceive: \r\n return ['ECAT', 'LTX'];\r\n case InterfaceType.OrderSend: \r\n return ['EANCOM', 'LTX', 'UBL'];\r\n case InterfaceType.OrderReceive: \r\n return ['EANCOM', 'LTX', 'UBL','LivingFurn', 'PDF', 'HTML'];\r\n }\r\n return [];\r\n}\r\n\r\nexport const getInterfaceMethods = (t: InterfaceType | undefined) : {key: InterfaceMethod, description: string}[] => {\r\n const manual = {key: InterfaceMethod.Manual, description: i18n.t('tooltip.Manual')};\r\n const ltxFtp = {key: InterfaceMethod.LtxFtp, description: 'Arxis FTP'};\r\n const ftp = { key: InterfaceMethod.Ftp, description: 'Jouw FTP' };\r\n const sftp = { key: InterfaceMethod.Sftp, description: 'Jouw SFTP' };\r\n const email = { key: InterfaceMethod.Email, description: 'E-mail' };\r\n \r\n\r\n switch (t) {\r\n case InterfaceType.CatalogSend:\r\n return [manual];\r\n case InterfaceType.CatalogReceive:\r\n return [manual, email];\r\n case InterfaceType.OrderSend:\r\n return [ltxFtp];\r\n case InterfaceType.OrderReceive:\r\n return [ltxFtp, ftp, sftp, email];\r\n }\r\n return [];\r\n}\r\n","module.exports = __webpack_public_path__ + \"static/media/empty.dadb2df5.svg\";","import { ArrowBack } from '@material-ui/icons';\r\nimport * as H from 'history';\r\nimport React from 'react';\r\n\r\ninterface AllProps {\r\n history: H.History;\r\n}\r\n\r\nclass XGoBack extends React.Component {\r\n public render() {\r\n return (\r\n this.props.history.goBack()}\r\n className=\"goBack\">\r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default XGoBack;\r\n","import styled from '@emotion/styled';\r\nimport * as React from 'react';\r\nimport { Translation } from 'react-i18next';\r\n\r\nimport ErrorImage from '../../style/images/error.svg';\r\n\r\ntype OwnProps = {\r\n message?: string;\r\n size?: number;\r\n image?: any;\r\n};\r\n\r\ntype AllProps = OwnProps;\r\n\r\nconst XErrorContent: React.SFC = props => {\r\n return (\r\n \r\n
\r\n \r\n \r\n {t =>
{props.message ?? t('notification.errWhileLoading')}
}\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default XErrorContent;\r\n\r\nconst Error = styled.div`\r\n text-align: center;\r\n height: 100%;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n\r\n color: #aaa;\r\n & img {\r\n width: ${props => (props.size ? props.size + 'px' : '150px')};\r\n height: ${props => (props.size ? props.size + 'px' : '150px')};\r\n }\r\n & a {\r\n text-decoration: underline;\r\n cursor: pointer;\r\n }\r\n`;\r\n","import { css } from '@emotion/core';\r\nimport styled from '@emotion/styled';\r\nimport * as React from 'react';\r\n\r\nimport { Catalog } from 'src/models/Catalog';\r\nimport { XImage, XImageContainer } from '../layout/XImage';\r\n\r\nimport { generateAvatar } from 'src/helpers/avatarGenerator';\r\nimport { formatDateToString, getImageUrl } from 'src/helpers/formatHelpers';\r\nimport Logo from '../../style/images/ltxLogos/ltxdefOpaque.svg';\r\n\r\ntype OwnProps = {\r\n catalog: Catalog;\r\n};\r\n\r\ntype AllProps = OwnProps;\r\n\r\nconst XCatalogLarge: React.SFC = props => {\r\n return (\r\n \r\n \r\n {\r\n e.target.onError = null;\r\n e.target.src = generateAvatar(props.catalog.title, 145);\r\n }}\r\n />\r\n \r\n \r\n {props.catalog.title}\r\n {props.catalog.organizationName}\r\n {props.catalog.downloads} downloads\r\n {formatDateToString(props.catalog.lastCreationDate)}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default XCatalogLarge;\r\n\r\nconst ImageContainer = styled(XImageContainer)({\r\n boxShadow: '0px 3px 20px rgba(0,0,0,0.1)',\r\n transition: 'box-shadow ease-in-out .1s',\r\n ':hover': {\r\n boxShadow: '0px 5px 25px rgba(0,0,0,0.15)'\r\n }\r\n});\r\nconst CatalogContent = styled('div')({\r\n display: 'flex',\r\n flexDirection: 'column',\r\n width: 'auto',\r\n marginRight: '10px'\r\n});\r\n\r\nconst CatalogText = styled('div')({\r\n display: 'flex',\r\n flexDirection: 'column',\r\n marginTop: '10px',\r\n padding: '3px',\r\n cursor: 'pointer'\r\n});\r\n\r\nconst CatalogTitle = styled('label')({\r\n fontSize: '14px',\r\n fontFamily: 'Montserrat-Bold', // TODO: get font from theme\r\n color: 'black',\r\n cursor: 'pointer',\r\n width: '145px',\r\n whiteSpace: 'nowrap',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis'\r\n});\r\n\r\nconst CatalogLabel = styled('label')({\r\n fontSize: '10px',\r\n color: 'black',\r\n paddingTop: '6px',\r\n textDecoration: 'none',\r\n cursor: 'pointer'\r\n});\r\n","import { css } from '@emotion/core';\r\nimport styled from '@emotion/styled';\r\nimport * as React from 'react';\r\n\r\nimport { Catalog } from 'src/models/Catalog';\r\nimport { XImage, XImageContainer, XImageOverlay } from '../layout/XImage';\r\n\r\nimport { Tooltip } from '@material-ui/core';\r\nimport DownloadIcon from '@material-ui/icons/Check';\r\nimport DownloadedIcon from '@material-ui/icons/CheckCircle';\r\nimport { generateAvatar } from 'src/helpers/avatarGenerator';\r\nimport { formatDateToString, getImageUrl } from 'src/helpers/formatHelpers';\r\nimport Logo from '../../style/images/ltxLogos/ltxdefOpaque.svg';\r\nimport { CloudDownload } from '@material-ui/icons';\r\nimport { Translation } from 'react-i18next';\r\n\r\ntype OwnProps = {\r\n catalog: Catalog;\r\n};\r\n\r\ntype AllProps = OwnProps;\r\n\r\nconst XCatalogSmall: React.SFC = props => {\r\n return (\r\n \r\n \r\n {\r\n e.target.onError = null;\r\n e.target.src = generateAvatar(props.catalog.title, 75);\r\n }}\r\n />\r\n {props.catalog.downloaded && (\r\n // eslint-disable-next-line react/jsx-no-undef\r\n \r\n {t => (\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n )}\r\n \r\n \r\n \r\n {props.catalog.title}{' '}\r\n {props.catalog.downloaded && (\r\n \r\n {t => (\r\n \r\n \r\n \r\n )}\r\n \r\n )}\r\n \r\n {props.catalog.organizationName}\r\n \r\n {formatDateToString(props.catalog.lastCreationDate)} • {props.catalog.downloads} downloads\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default XCatalogSmall;\r\n\r\nconst CatalogContent = styled('div')({\r\n display: 'flex',\r\n flexDirection: 'row',\r\n width: 'auto'\r\n});\r\n\r\nexport const CatalogTitle = styled('div')({\r\n fontSize: '14px',\r\n fontFamily: 'Montserrat-Bold' // TODO: get font from theme\r\n});\r\n\r\nexport const CatalogLabel = styled('div')({\r\n fontSize: '10px',\r\n cursor: 'pointer'\r\n});\r\n\r\nconst CatalogText = styled('div')({\r\n display: 'flex',\r\n flexDirection: 'column',\r\n paddingLeft: '7px',\r\n marginLeft: '8px',\r\n color: 'black'\r\n});\r\n\r\nconst DownloadCheck = styled(DownloadedIcon)`\r\n color: green;\r\n font-size: 15px;\r\n vertical-align: top;\r\n margin-top: 3px;\r\n`;\r\n","import * as React from 'react';\r\nimport { Link, RouteComponentProps, withRouter } from 'react-router-dom';\r\nimport { Catalog } from 'src/models/Catalog';\r\n\r\nimport { XContainer } from '../layout/XContainer';\r\nimport XCatalogLarge from './XCatalogLarge';\r\nimport XCatalogSmall from './XCatalogSmall';\r\n\r\ntype OwnProps = {\r\n catalog: Catalog;\r\n size: 'small' | 'large';\r\n onClick?: (param: string) => void;\r\n cRoute?: string;\r\n};\r\n\r\ntype AllProps = OwnProps & RouteComponentProps;\r\n\r\nconst XCatalog: React.FC = props => {\r\n const route = !!props.cRoute\r\n ? props.cRoute + props.catalog.id\r\n : '/app/explore/catalogs/' + props.catalog.id;\r\n return (\r\n \r\n \r\n {props.size === 'large' ? : }\r\n \r\n \r\n );\r\n};\r\n\r\nexport default withRouter(XCatalog);\r\n","import styled from '@emotion/styled';\r\n\r\nexport const XPanel = styled('div')`\r\n padding: 6px;\r\n border-radius: 4px;\r\n background: #2d80c226;\r\n color: #2d80c2;\r\n display: flex;\r\n padding-top: 12px;\r\n`;\r\n\r\nexport const XFailPanel = styled(XPanel)`\r\n background: #e91e6326;\r\n color: #e91e63;\r\n`;\r\n\r\nexport const XSuccessPanel = styled(XPanel)`\r\n background: #4caf5026;\r\n color: #4caf50;\r\n`;\r\n","import { css } from '@emotion/core';\r\nimport styled from '@emotion/styled';\r\n\r\nexport const XSideBar = styled('div')({\r\n width: '245px',\r\n height: '100%',\r\n backgroundColor: 'rgb(245, 245, 245)',\r\n borderTop: '1px solid lightgrey',\r\n textAlign: 'center',\r\n overflowY: 'auto',\r\n WebkitOverflowScrolling: 'touch',\r\n display: 'flex',\r\n justifyContent: 'center',\r\n alignItems: 'center'\r\n});\r\n\r\nexport const XSideBarHeader = styled('header')({\r\n padding: '20px'\r\n});\r\n\r\nexport const XSideBarText = styled('label')({\r\n fontSize: '12px'\r\n});\r\n\r\nexport const XAdminSideBar = styled('div')({\r\n width: '280px',\r\n height: '100%',\r\n backgroundColor: 'rgb(245, 245, 245)',\r\n borderTop: '1px solid lightgrey',\r\n textAlign: 'center',\r\n overflowY: 'auto',\r\n WebkitOverflowScrolling: 'touch',\r\n paddingBottom: '80px',\r\n paddingTop: '60px'\r\n});\r\n","module.exports = __webpack_public_path__ + \"static/media/empty-canvas.1407c357.svg\";","export const Countries = [\r\n { name: 'Albanië', value: 'Albania' },\r\n { name: 'Andorra', value: 'Andorra' },\r\n { name: 'Armenië', value: 'Armenia' },\r\n { name: 'Azerbeidzjan', value: 'Azerbaijan' },\r\n { name: 'Belgie', value: 'Belgium' },\r\n { name: 'Bosnië en Herzegovina', value: 'Bosnia and Herzegovina' },\r\n { name: 'Bulgarije', value: 'Bulgaria' },\r\n { name: 'Cyprus', value: 'Cyprus' },\r\n { name: 'Denemarken', value: 'Denmark' },\r\n { name: 'Duitsland', value: 'Germany' },\r\n { name: 'Estland', value: 'Estonia' },\r\n { name: 'Finland', value: 'Findland' },\r\n { name: 'Frankrijk', value: 'France' },\r\n { name: 'Georgië', value: 'Georgia' },\r\n { name: 'Griekenland', value: 'Greece' },\r\n { name: 'Hongarije', value: 'Hungary' },\r\n { name: 'Ierland', value: 'Ireland' },\r\n { name: 'Ijsland', value: 'Iceland' },\r\n { name: 'Italië', value: 'Italy' },\r\n { name: 'Kroatië', value: 'Croatia' },\r\n { name: 'Letland', value: 'Latvia' },\r\n { name: 'Liechtenstein', value: 'Liechtenstein' },\r\n { name: 'Litouwen', value: 'Lithuania' },\r\n { name: 'Luxemburg', value: 'Luxembourg' },\r\n { name: 'Malta', value: 'Malta' },\r\n { name: 'Moldavië', value: 'Moldova' },\r\n { name: 'Monaco', value: 'Monaco' },\r\n { name: 'Montenegro', value: 'Montenegro' },\r\n { name: 'Nederland', value: 'Netherlands' },\r\n { name: 'Noord-Macedonië', value: 'North Macedonia' },\r\n { name: 'Noorwegen', value: 'Norway' },\r\n { name: 'Oostenrijk', value: 'Austria' },\r\n { name: 'Oekraïne', value: 'Ukraine' },\r\n { name: 'Polen', value: 'Poland' },\r\n { name: 'Portugal', value: 'Portugal' },\r\n { name: 'Roemenië', value: 'Romania' },\r\n { name: 'Rusland', value: 'Russia' },\r\n { name: 'San Marino', value: 'San Marino' },\r\n { name: 'Servië', value: 'Serbia' },\r\n { name: 'Slovenië', value: 'Slovenia' },\r\n { name: 'Slowakije', value: 'Slovakia' },\r\n { name: 'Spanje', value: 'Spain' },\r\n { name: 'Tsjechië', value: 'Czechia' },\r\n { name: 'Turkije', value: 'Turkey' },\r\n { name: 'Verenigd koninkrijk', value: 'United Kingdom' },\r\n { name: 'Wit-Rusland', value: 'Belarus' },\r\n { name: 'Zweden', value: 'Sweden' },\r\n { name: 'Zwitserland', value: 'Switzerland' }\r\n];\r\n","import { css } from '@emotion/core';\r\nimport styled from '@emotion/styled';\r\nimport ChevronLeftRoundedIcon from '@material-ui/icons/ChevronLeftRounded';\r\nimport ChevronRightRoundedIcon from '@material-ui/icons/ChevronRightRounded';\r\nimport animateScrollTo from 'animated-scroll-to';\r\nimport * as React from 'react';\r\nimport AvatarEditor from 'react-avatar-editor';\r\n\r\nimport Pica from 'pica/dist/pica';\r\n\r\nimport { Tooltip } from '@material-ui/core';\r\nimport CheckIcon from '@material-ui/icons/Check';\r\nimport CancelIcon from '@material-ui/icons/Clear';\r\nimport EditIcon from '@material-ui/icons/Edit';\r\nimport RotateLeftIcon from '@material-ui/icons/RotateLeft';\r\nimport RotateRightIcon from '@material-ui/icons/RotateRight';\r\nimport ZoomInIcon from '@material-ui/icons/ZoomIn';\r\nimport ZoomOutIcon from '@material-ui/icons/ZoomOut';\r\nimport { XImage } from './XImage';\r\n\r\nimport { generateAvatar } from 'src/helpers/avatarGenerator';\r\nimport Logo from '../../style/images/ltxLogos/ltxdefOpaque.svg';\r\nimport { Translation } from 'react-i18next';\r\n\r\ntype OwnProps = {\r\n image?: any;\r\n width?: number;\r\n height?: number;\r\n style?: any;\r\n editable?: boolean;\r\n onChange: (blob?: Blob) => void;\r\n};\r\n\r\ntype AllProps = OwnProps;\r\n\r\ntype State = {\r\n width: number;\r\n height: number;\r\n scale: number;\r\n rotate: number;\r\n editing: boolean;\r\n editable: boolean;\r\n image: any;\r\n};\r\n\r\nclass XImageEditor extends React.Component {\r\n setEditorRef: (editor: any) => any;\r\n setFileSelectRef: (fileSelect: any) => any;\r\n editor: any;\r\n fileSelect: any;\r\n\r\n constructor(props: AllProps) {\r\n super(props);\r\n\r\n this.setEditorRef = editor => (this.editor = editor);\r\n this.setFileSelectRef = fileSelect => (this.fileSelect = fileSelect);\r\n\r\n this.state = {\r\n ...this.fresh(),\r\n image: undefined\r\n };\r\n }\r\n\r\n public componentDidUpdate(prev) {\r\n if (this.props.image !== prev.image || this.props.editable !== prev.editable) {\r\n this.setState({\r\n ...this.fresh(),\r\n image: undefined\r\n });\r\n }\r\n }\r\n\r\n public fresh() {\r\n return {\r\n height: this.props.height ?? 150,\r\n width: this.props.width ?? 150,\r\n scale: 1.0,\r\n rotate: 0,\r\n editing: false,\r\n editable: this.props.editable ?? true\r\n };\r\n }\r\n\r\n public cancel() {\r\n this.setState({ ...this.fresh(), image: undefined });\r\n }\r\n\r\n public async save() {\r\n const pica = Pica();\r\n const img = this.editor.getImage();\r\n const offScreenCanvas = document.createElement('canvas');\r\n\r\n offScreenCanvas.width = 1500;\r\n offScreenCanvas.height = 1500;\r\n\r\n const promise = pica\r\n .resize(img, offScreenCanvas, {\r\n alpha: true\r\n })\r\n .then(result => pica.toBlob(result, 'image/png', 0.9))\r\n .then(blob => {\r\n this.props.onChange(blob ?? undefined);\r\n this.setState({ image: this.createDataURL(blob) });\r\n });\r\n\r\n await promise;\r\n this.setState({ ...this.fresh() });\r\n }\r\n\r\n public async getResult() {\r\n if (!this.state.editing) return undefined;\r\n\r\n const pica = Pica();\r\n const img = this.editor.getImage();\r\n const offScreenCanvas = document.createElement('canvas');\r\n\r\n offScreenCanvas.width = 1500;\r\n offScreenCanvas.height = 1500;\r\n\r\n const result = await pica.resize(img, offScreenCanvas, {\r\n alpha: true\r\n });\r\n const blob = await pica.toBlob(result, 'image/png', 0.9);\r\n this.setState({ ...this.fresh() });\r\n return blob;\r\n }\r\n\r\n public toEdit() {\r\n this.setState({ editing: true });\r\n\r\n if (!this.props.image) this.fileSelect.click();\r\n }\r\n\r\n public changeFile(e) {\r\n if (e.target.files.length === 0) {\r\n this.setState({ editing: false });\r\n return;\r\n }\r\n\r\n this.setState({ image: this.createDataURL(e.target.files[0]) });\r\n e.target.value = '';\r\n }\r\n\r\n public createDataURL(file) {\r\n const urlCreator = window.URL || window.webkitURL;\r\n return urlCreator.createObjectURL(file);\r\n }\r\n\r\n public render() {\r\n const backupImage = generateAvatar('ltx', this.state.width, true, 3);\r\n\r\n let image = this.state.image ?? this.props.image;\r\n if (image instanceof Blob) image = this.createDataURL(image);\r\n\r\n return (\r\n
\r\n this.changeFile(e)}\r\n />\r\n {this.state.editing && image ? (\r\n \r\n \r\n \r\n {t => (\r\n \r\n \r\n \r\n this.setState({ scale: this.state.scale * 0.9 })}\r\n />\r\n \r\n \r\n this.setState({ scale: this.state.scale * 1.1 })} />\r\n \r\n \r\n \r\n \r\n this.setState({ rotate: this.state.rotate - 15 })}\r\n />\r\n \r\n \r\n this.setState({ rotate: this.state.rotate + 15 })}\r\n />\r\n \r\n \r\n \r\n \r\n this.fileSelect.click()} />\r\n \r\n \r\n \r\n \r\n this.cancel()} />\r\n \r\n \r\n await this.save()}\r\n />\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n ) : (\r\n \r\n {\r\n e.target.onError = null;\r\n e.target.src = backupImage;\r\n }}\r\n />\r\n {this.state.editable && (\r\n this.toEdit()}>\r\n {t => {t('tooltip.edit')}}\r\n \r\n )}\r\n \r\n )}\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default XImageEditor;\r\n\r\nconst ImageCropperWrapperControls = styled.div`\r\n display: flex;\r\n flex-wrap: wrap;\r\n`;\r\n\r\nconst ImageCropperWrapper = styled.div``;\r\n\r\nconst ImageControl = styled.div`\r\n flex: 1;\r\n text-align: center;\r\n min-width: 72px;\r\n & > svg {\r\n margin: 4px;\r\n cursor: pointer;\r\n }\r\n`;\r\n\r\nconst CommitControl = styled(ImageControl)``;\r\n\r\nconst EditOverlay = styled.div`\r\n position: absolute;\r\n right: 0;\r\n left: 0;\r\n top: 0;\r\n bottom: 0;\r\n z-index: 2;\r\n opacity: 0;\r\n background: #000000;\r\n transition: opacity 0.2s ease;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n cursor: pointer;\r\n`;\r\n\r\nconst EditText = styled.div`\r\n flex: 1;\r\n text-align: center;\r\n color: #fff;\r\n`;\r\n\r\nconst ImageWrapper = styled.div`\r\n position: relative;\r\n & > img {\r\n width: 100%;\r\n height: 100%;\r\n }\r\n\r\n &:hover > div {\r\n opacity: 0.8;\r\n }\r\n`;\r\n","import { css } from '@emotion/core';\r\nimport styled from '@emotion/styled';\r\nimport { withTheme } from 'emotion-theming';\r\nimport * as React from 'react';\r\nimport { Link, RouteComponentProps, withRouter } from 'react-router-dom';\r\nimport XBadge from './XBadge';\r\nimport ArrowLeftIcon from '@material-ui/icons/ArrowLeft';\r\nimport i18n from 'src/i18n';\r\nimport SettingsIcon from 'src/style/images/icons/setting.svg';\r\nimport UserPlusIcon from 'src/style/images/icons/user-plus.svg';\r\nimport MessageIcon from 'src/style/images/icons/message.svg';\r\nimport ClipBoaardIcon from 'src/style/images/icons/clipboard-notes.svg';\r\n\r\nexport interface ILink {\r\n name: string;\r\n route: string;\r\n subRoutes?: ILink[];\r\n style?: any;\r\n badge?: number;\r\n defaultActive?: boolean;\r\n dividerTop?: boolean;\r\n}\r\n\r\ntype OwnProps = {\r\n routes: ILink[];\r\n callback: any;\r\n};\r\n\r\ntype AllProps = OwnProps & RouteComponentProps;\r\n\r\nconst XNavigation: React.FC = props => {\r\n const getIcon = (path: string, active: boolean) => {\r\n switch (path) {\r\n case i18n.t('myArxis.Overview'):\r\n return ;\r\n case i18n.t('myArxis.Traffic'):\r\n return ;\r\n case i18n.t('myArxis.Settings'):\r\n return ;\r\n case i18n.t('myArxis.Requests'):\r\n return ;\r\n }\r\n return null;\r\n };\r\n\r\n let activeRoute: ILink | undefined;\r\n props.routes.forEach(route => {\r\n if (props.location.pathname.startsWith(route.route)) {\r\n activeRoute = route;\r\n }\r\n if (route.subRoutes) {\r\n route.subRoutes.forEach(subRoute => {\r\n if (props.location.pathname.startsWith(subRoute.route)) activeRoute = subRoute;\r\n });\r\n }\r\n });\r\n\r\n if (!activeRoute) activeRoute = props.routes.find(r => r.defaultActive);\r\n\r\n return (\r\n \r\n \r\n {props.routes.map((route, index) => (\r\n
\r\n {route.dividerTop &&
}\r\n \r\n {route.name}\r\n {route.badge !== undefined && route.badge > 0 && (\r\n \r\n )}\r\n {route.name === activeRoute?.name && }\r\n \r\n {route.subRoutes &&\r\n route.subRoutes.map((subRoute, subIndex) => (\r\n \r\n {getIcon(subRoute.name, subRoute.route === activeRoute?.route)}\r\n\r\n \r\n {subRoute.name}\r\n {subRoute.badge !== undefined && subRoute.badge > 0 && (\r\n \r\n )}\r\n \r\n {subRoute.route === activeRoute?.route && }\r\n \r\n ))}\r\n
\r\n ))}\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default withRouter(XNavigation);\r\n\r\nconst NavigationContainer = styled('div')({\r\n width: '100%',\r\n margin: 'auto',\r\n '& a': {\r\n textDecoration: 'none'\r\n }\r\n});\r\n\r\nconst NavigationContent = styled('div')({\r\n display: 'flex',\r\n flexDirection: 'column'\r\n});\r\n\r\ntype NavigationBarProps = {\r\n activeRoute?: boolean;\r\n};\r\n\r\nconst NavigationSubBarContainer = styled(Link)({\r\n display: 'flex',\r\n alignContent: 'center',\r\n padding: '10px 50px',\r\n position: 'relative'\r\n});\r\n\r\nexport const NavigationSubBar = withTheme(\r\n styled(Link, { shouldForwardProp: prop => prop !== 'activeRoute' })`\r\n display: block;\r\n text-align: left;\r\n font-weight: bold;\r\n font-size: 13px;\r\n margin-left: 4px;\r\n text-transform: none;\r\n border-radius: 4px;\r\n position: relative;\r\n transition: all 0.1s ease-in-out;\r\n cursor: pointer;\r\n color: ${props => (props.activeRoute ? 'rgb(45, 128, 194)' : '#737373')};\r\n `\r\n);\r\n\r\nexport const NavigationBar = withTheme(\r\n styled(Link, { shouldForwardProp: prop => prop !== 'activeRoute' })`\r\n display: block;\r\n text-align: left;\r\n font-weight: bold;\r\n font-size: 14px;\r\n padding: 14px 35px;\r\n text-transform: none;\r\n border-radius: 4px;\r\n position: relative;\r\n transition: all 0.1s ease-in-out;\r\n cursor: pointer;\r\n color: ${props => (props.activeRoute ? 'rgb(45, 128, 194)' : '#737373')};\r\n `\r\n);\r\n\r\nconst XSideArrow = styled(ArrowLeftIcon)({\r\n color: '#2d80c2',\r\n position: 'absolute',\r\n transform: 'translate(-50%, -50%)',\r\n top: '50%',\r\n right: '-5px'\r\n});\r\n\r\nconst Icon = styled('div')({}, (props: any) => ({\r\n backgroundColor: props.active ? '#2d80c2' : '#737373',\r\n mask: 'url(' + props.image + ') no-repeat center',\r\n width: '15px',\r\n height: '15px',\r\n margin: 'auto 0'\r\n}));\r\n","import { ApplicationState } from '..';\r\nimport { RequestStateModel } from './types';\r\n\r\nexport const catalogViewRequestBetweenOrganizations = (\r\n state: RequestStateModel,\r\n organizationId: string\r\n) =>\r\n state.requests\r\n .filter(\r\n c => c.requestOrganization.id === organizationId || c.targetOrganization.id === organizationId\r\n )\r\n .sort(\r\n (a, b) =>\r\n new Date(b.connectRequest.requestDate).getTime() -\r\n new Date(a.connectRequest.requestDate).getTime()\r\n )\r\n .find(a => true);\r\n\r\nexport const activeRequests = (state: RequestStateModel) =>\r\n state.requests.filter(c => !c.connectRequest.approvedDate && !c.connectRequest.disapprovedDate);\r\n\r\nexport const inactiveRequests = (state: RequestStateModel) =>\r\n state.requests.filter(c => c.connectRequest.approvedDate || c.connectRequest.disapprovedDate);\r\n\r\nexport const activeIncommingRequest = (state: ApplicationState) =>\r\n state.requests.requests.filter(\r\n r =>\r\n r.requestOrganization.id !== state.authentication.account.organizationId &&\r\n !r.connectRequest.approvedDate &&\r\n !r.connectRequest.disapprovedDate\r\n ); \r\n","import styled from '@emotion/styled';\r\nimport { Tooltip } from '@material-ui/core';\r\nimport DownloadedIcon from '@material-ui/icons/CheckCircle';\r\nimport FlagIcon from '@material-ui/icons/Flag';\r\nimport * as React from 'react';\r\nimport { MaturityStatus } from 'src/constants/MaturityStatus';\r\nimport { Organization } from 'src/models/Organization';\r\n\r\ntype OwnProps = {\r\n organization: Organization;\r\n bold: boolean;\r\n fontSize?: string;\r\n};\r\n\r\ntype AllProps = OwnProps;\r\n\r\nconst XOrganizationTitle: React.SFC = props => {\r\n return (\r\n \r\n
{props.organization.name}
\r\n {props.organization.connectStatus === 'Approved' && }\r\n
\r\n );\r\n};\r\n\r\nexport default XOrganizationTitle;\r\n\r\nconst TitleIcons = styled.div`\r\n display: inline-block;\r\n vertical-align: top;\r\n margin-left: 8px;\r\n\r\n svg {\r\n margin-right: 4px;\r\n font-size: 15px;\r\n }\r\n`;\r\n\r\nconst Flag = styled(FlagIcon)<{ status: number }>`\r\n color: ${props => (props.status < 200 ? '#ff5b4f' : props.status < 300 ? '#ffc94d' : '#24bf3c')};\r\n`;\r\n\r\nconst DownloadCheck = styled(DownloadedIcon)`\r\n color: #24bf3c;\r\n`;\r\n\r\nconst OrganizationTitle = styled.div<{ bold: boolean; fontSize?: string }>`\r\n flex: 1;\r\n font-size: ${props => (props.fontSize ? props.fontSize : '14px')};\r\n padding-top: 4px;\r\n font-weight: ${props => (props.bold ? 'bold' : 'normal')};\r\n`;\r\n","import { css } from '@emotion/core';\r\nimport styled from '@emotion/styled';\r\nimport * as React from 'react';\r\n\r\nimport { Link } from 'react-router-dom';\r\nimport { formatDateToString } from 'src/helpers/formatHelpers';\r\nimport { Catalog, ProcessingStatus, PublicationStatus } from 'src/models/Catalog';\r\nimport { XRow, XRowCell } from '../layout/XRow';\r\nimport { TableRow } from '../layout/XTable';\r\nimport { getProcessingStatusText, getPublicationStatusText } from 'src/constants/Catalog';\r\nimport PublishIcon from '@material-ui/icons/Publish';\r\nimport WarningIcon from '@material-ui/icons/Warning';\r\nimport HourglassEmptyIcon from '@material-ui/icons/HourglassEmpty';\r\nimport { Translation } from 'react-i18next';\r\n\r\ntype OwnProps = {\r\n catalog: Catalog;\r\n link?: string;\r\n showDownloads?: boolean;\r\n showUploadDate?: boolean;\r\n showPublicationStatus?: boolean;\r\n showPublicationDate?: boolean;\r\n showProcessingStatus?: boolean;\r\n showProcessingIcon?: boolean;\r\n downloads?: number;\r\n};\r\n\r\ntype AllProps = OwnProps;\r\n\r\nconst XCatalogRow: React.SFC = props => {\r\n const published = props.catalog.publicationStatus === PublicationStatus.Published;\r\n const valid =\r\n props.catalog.processingStatus === ProcessingStatus.Validated ||\r\n props.catalog.processingStatus === ProcessingStatus.ValidatedWithWarnings;\r\n const invalid = props.catalog.processingStatus === ProcessingStatus.ValidationFailed;\r\n const waitingLine = props.catalog.processingStatus === ProcessingStatus.Uploaded;\r\n\r\n const content = (\r\n \r\n {props.catalog.title}\r\n {props.showDownloads ? (\r\n \r\n {t => {props.downloads ?? props.catalog.downloads}x}\r\n \r\n ) : (\r\n {props.catalog.organizationName}\r\n )}\r\n {props.showUploadDate ? (\r\n {formatDateToString(props.catalog.lastCreationDate)}\r\n ) : null}\r\n {props.showProcessingStatus ? (\r\n {getProcessingStatusText(props.catalog.processingStatus)}\r\n ) : null}\r\n {props.showPublicationStatus ? (\r\n {getPublicationStatusText(props.catalog.publicationStatus)}\r\n ) : null}\r\n {props.showPublicationDate ? (\r\n \r\n {props.catalog.publicationDate !== undefined\r\n ? formatDateToString(props.catalog.publicationDate)\r\n : '-'}\r\n \r\n ) : null}\r\n {props.showProcessingIcon ? (\r\n \r\n {/* {waitingLine && }\r\n {(valid && !published && )}\r\n {(invalid && )} */}\r\n {waitingLine && }\r\n {valid && !published && }\r\n {invalid && }\r\n \r\n ) : null}\r\n \r\n );\r\n\r\n return props.link ? {content} : content;\r\n};\r\n\r\nexport default XCatalogRow;\r\n\r\nconst StyledCell = styled(XRowCell)`\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n`;\r\n","import * as React from 'react';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport XPageContent from 'src/components/layout/XPageContent';\r\nimport { XPaper, XPaperTitle } from 'src/components/layout/XPaper';\r\nimport { XTitle, XSubTitle } from 'src/components/layout/XPaperHeader';\r\nimport { XA } from '../myltx/AccountPage';\r\n\r\ninterface ErrorProps {\r\n title?: string;\r\n description?: string;\r\n}\r\n\r\nconst NotFoundCard: React.SFC = props => {\r\n return (\r\n \r\n \r\n \r\n Deze pagina bestaat niet (meer).\r\n \r\n props.history.goBack()}>Ga terug {'>'} \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default NotFoundCard;\r\n","import { OrganizationType } from \"src/models/Organization\";\r\n\r\nexport enum ActionTypes {\r\n LOGIN = '[auth] LOGIN',\r\n LOGOUT = '[auth] LOGOUT'\r\n}\r\n\r\nexport type AuthenticationAccount = {\r\n accountId: string;\r\n email: string;\r\n organizationId: string;\r\n organizationType: OrganizationType;\r\n isAdmin: boolean;\r\n settings: AccountSetting[];\r\n token: string;\r\n organizationName: string;\r\n fullName: string\r\n};\r\n\r\nexport type AccountSetting = {\r\n id: string;\r\n accountId: string;\r\n name: string;\r\n value: any;\r\n changed: boolean;\r\n};\r\n\r\nexport type AccountSettingForm = {\r\n name: string;\r\n value: any;\r\n};\r\n\r\nexport interface AuthenticationState {\r\n isAuthenticated: boolean;\r\n loading: boolean;\r\n authenticationError?: string;\r\n account: AuthenticationAccount;\r\n}\r\n","import { css } from '@emotion/core';\r\nimport styled from '@emotion/styled';\r\nimport { Checkbox } from '@material-ui/core';\r\nimport { CheckboxProps } from '@material-ui/core/Checkbox';\r\nimport Check from '@material-ui/icons/Check';\r\nimport Clear from '@material-ui/icons/Clear';\r\nimport * as React from 'react';\r\n\r\ntype OwnProps = {\r\n label?: string;\r\n placeholder?: string;\r\n};\r\n\r\ntype AllProps = OwnProps & CheckboxProps;\r\n\r\nconst XCheckbox: React.SFC = props => {\r\n return (\r\n
\r\n {props.readOnly ? (\r\n props.checked ? (\r\n \r\n ) : (\r\n \r\n )\r\n ) : (\r\n \r\n )}\r\n
\r\n );\r\n};\r\n\r\nexport default XCheckbox;\r\n\r\nconst Label = styled('label')({\r\n marginTop: '4px',\r\n cursor: 'pointer',\r\n userSelect: 'none'\r\n});\r\n\r\nconst StyledCheckbox = styled(Checkbox)({\r\n marginRight: '5px',\r\n width: '28px',\r\n height: '28px'\r\n});\r\n","import { apiClient, ApiResult } from 'src/helpers/apiClient';\r\n\r\nexport const listMessages = async (organizationId: string): Promise => {\r\n return await apiClient.postQueryAsync('ListOrganizationMessages', {\r\n OrganizationId: organizationId\r\n });\r\n};\r\n\r\nexport const listCatalogMessages = async (catalogId: string): Promise => {\r\n return await apiClient.postQueryAsync('ListCatalogMessages', {\r\n catalogId: catalogId\r\n });\r\n};\r\n\r\nexport const listOrganizationCatalogMessages = async (): Promise => {\r\n return await apiClient.postQueryAsync('ListOrganizationCatalogMessages', {});\r\n};\r\n\r\nexport const listSentOrderMessages = async (): Promise => {\r\n return await apiClient.postQueryAsync('ListSentOrderMessages', {});\r\n};\r\n\r\nexport const listOrderMessages = async (): Promise => {\r\n return await apiClient.postQueryAsync('ListOrderMessages', {});\r\n};\r\n\r\n","import { Dispatch } from 'redux';\r\nimport { CatalogMessageModel, Message } from 'src/models/Message';\r\nimport { OrderMessage } from 'src/models/OrderMessage';\r\n\r\nimport { requestApiThunk } from 'src/helpers/actionHelpers';\r\nimport { ApiError } from 'src/helpers/apiClient';\r\nimport { listCatalogMessages, listMessages, listOrderMessages, listOrganizationCatalogMessages, listSentOrderMessages } from './api';\r\nimport { ActionTypes } from './types';\r\n\r\nexport type FetchStatus = 'request' | 'success' | 'failure';\r\n\r\nexport interface GetMessagesAction {\r\n type: ActionTypes.GET_MESSAGES;\r\n status: FetchStatus;\r\n errors?: ApiError[];\r\n payload: { messages?: Message[] };\r\n}\r\n\r\nexport interface GetCatalogMessagesAction {\r\n type: ActionTypes.GET_CATALOG_MESSAGES;\r\n status: FetchStatus;\r\n errors?: ApiError[];\r\n payload: { catalogMessages?: CatalogMessageModel[] };\r\n}\r\n\r\nexport interface GetOrganizationCatalogMessagesAction {\r\n type: ActionTypes.GET_ORGANIZATION_CATALOG_MESSAGES;\r\n status: FetchStatus;\r\n errors?: ApiError[];\r\n payload: { catalogMessages?: CatalogMessageModel[] };\r\n}\r\n\r\nexport interface GetSentOrderMessagesAction {\r\n type: ActionTypes.GET_SENT_ORDER_MESSAGES;\r\n status: FetchStatus;\r\n errors?: ApiError[];\r\n payload: { orderMessages?: OrderMessage[] };\r\n}\r\n\r\nexport interface GetOrderMessagesAction {\r\n type: ActionTypes.GET_ORDER_MESSAGES;\r\n status: FetchStatus;\r\n errors?: ApiError[];\r\n payload: { orderMessages?: OrderMessage[] };\r\n}\r\n\r\nconst getMessages = (\r\n status: FetchStatus,\r\n data?: Message[],\r\n errors?: ApiError[]\r\n): GetMessagesAction => ({\r\n type: ActionTypes.GET_MESSAGES,\r\n status,\r\n errors,\r\n payload: {\r\n messages: data\r\n }\r\n});\r\n\r\nconst getCatalogMessages = (\r\n status: FetchStatus,\r\n data?: CatalogMessageModel[],\r\n errors?: ApiError[]\r\n): GetCatalogMessagesAction => ({\r\n type: ActionTypes.GET_CATALOG_MESSAGES,\r\n status,\r\n errors,\r\n payload: {\r\n catalogMessages: data\r\n }\r\n});\r\n\r\nconst getOrganizationCatalogMessages = (\r\n status: FetchStatus,\r\n data?: CatalogMessageModel[],\r\n errors?: ApiError[]\r\n): GetOrganizationCatalogMessagesAction => ({\r\n type: ActionTypes.GET_ORGANIZATION_CATALOG_MESSAGES,\r\n status,\r\n errors,\r\n payload: {\r\n catalogMessages: data\r\n }\r\n});\r\n\r\nconst getSentOrderMessages = (\r\n status: FetchStatus,\r\n data?: OrderMessage[],\r\n errors?: ApiError[]\r\n): GetSentOrderMessagesAction => ({\r\n type: ActionTypes.GET_SENT_ORDER_MESSAGES,\r\n status,\r\n errors,\r\n payload: {\r\n orderMessages: data\r\n }\r\n});\r\n\r\nconst getOrderMessages = (\r\n status: FetchStatus,\r\n data?: OrderMessage[],\r\n errors?: ApiError[]\r\n): GetOrderMessagesAction => ({\r\n type: ActionTypes.GET_ORDER_MESSAGES,\r\n status,\r\n errors,\r\n payload: {\r\n orderMessages: data\r\n }\r\n});\r\n\r\n\r\nexport const getMessagesThunk = (organizationId: string) => {\r\n return requestApiThunk(getMessages, () => listMessages(organizationId));\r\n};\r\n\r\nexport const getCatalogMessagesThunk = (catalogId: string) => {\r\n return requestApiThunk(getCatalogMessages, () => listCatalogMessages( catalogId));\r\n};\r\n\r\nexport const getOrganizationCatalogMessagesThunk = () => {\r\n return requestApiThunk(getOrganizationCatalogMessages, () => listOrganizationCatalogMessages());\r\n};\r\n\r\nexport const getSentOrderMessagesThunk = () => {\r\n return requestApiThunk(getSentOrderMessages, () => listSentOrderMessages());\r\n};\r\n\r\nexport const getOrderMessagesThunk = () => {\r\n return requestApiThunk(getOrderMessages, () => listOrderMessages());\r\n};\r\n\r\nexport type Action =\r\n | GetMessagesAction\r\n | GetCatalogMessagesAction\r\n | GetOrganizationCatalogMessagesAction\r\n | GetSentOrderMessagesAction\r\n | GetOrderMessagesAction;\r\n","import styled from '@emotion/styled';\r\nimport { DatePicker, DatePickerProps } from '@material-ui/pickers';\r\nimport * as React from 'react';\r\n\r\ntype OwnProps = {\r\n label?: string;\r\n name?: string;\r\n value: Date;\r\n onChange: any;\r\n};\r\n\r\ntype AllProps = OwnProps & DatePickerProps;\r\n\r\nconst XDatePicker: React.SFC = props => {\r\n return (\r\n
\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default XDatePicker;\r\n\r\nconst StyledDatePicker = styled(DatePicker)({\r\n marginBottom: '10px'\r\n});\r\n","import { IField } from 'src/components/layout/XForm';\r\nimport { InterfaceMethod, InterfaceType } from 'src/models/Organization';\r\nimport i18n from '../../i18n'\r\n\r\n\r\nexport function getFtpForm(): IField[] {\r\n return [\r\n { title: 'Ftp Url', name: 'FtpAddress', readonly: false, required: true, maxLength: 255 },\r\n { title: 'Ftp Gebruikersnaam', name: 'FtpUsername', fullWidth: false, required: true, maxLength: 255 },\r\n { title: 'Ftp Wachtwoord', name: 'FtpPassword', type: 'password', fullWidth: false, required: true, maxLength: 255 }\r\n ];\r\n}\r\n\r\nexport function getSftpForm(): IField[] {\r\n return [\r\n { title: 'Sftp Url', name: 'SftpAddress', readonly: false, required: true, maxLength: 255 },\r\n { title: 'Sftp Gebruikersnaam', name: 'SftpUsername', fullWidth: false, required: true, maxLength: 255 },\r\n { title: 'Sftp Wachtwoord', name: 'SftpPassword', type: 'password', fullWidth: false, required: true, maxLength: 255 }\r\n ];\r\n}\r\n\r\nexport function getEmailForm(): IField[] {\r\n return [\r\n { title: 'Emailadres', name: 'EmailAddress', required: true, maxLength: 255 }\r\n ];\r\n}\r\n\r\nexport const interfaceMethods = [\r\n { key: InterfaceMethod.LtxFtp, description: 'Arxis FTP' },\r\n { key: InterfaceMethod.Ftp, description: 'Jouw FTP' },\r\n { key: InterfaceMethod.Sftp, description: 'Jouw SFTP' },\r\n { key: InterfaceMethod.Email, description: 'E-mail' },\r\n { key: InterfaceMethod.Manual, description: i18n.t('tooltip.Manual')}\r\n];\r\n\r\n","module.exports = __webpack_public_path__ + \"static/media/arxisdef.348bccec.svg\";","import styled from '@emotion/styled';\r\nimport * as React from 'react';\r\nimport { RouteComponentProps, withRouter } from 'react-router';\r\nimport { XActionButton, XSecActionButton } from 'src/components/layout/XActionButton';\r\nimport { XActionStrip } from 'src/components/layout/XActionStrip';\r\nimport { XFailPanel, XPanel, XSuccessPanel } from 'src/components/layout/XPanel';\r\nimport { XPaper, XPaperTitle } from 'src/components/layout/XPaper';\r\nimport { XSubTitle, XTitle } from 'src/components/layout/XPaperHeader';\r\nimport { XRow, XRowCell } from 'src/components/layout/XRow';\r\nimport { interfaceMethods } from 'src/constants/OrganizationInterface/InterfaceSetting';\r\nimport { InterfaceMethod, InterfaceType, OrganizationInterface } from 'src/models/Organization';\r\nimport ErrorIcon from '@material-ui/icons/Warning';\r\nimport SuccessIcon from '@material-ui/icons/Check';\r\nimport { Translation } from 'react-i18next';\r\nimport i18n from '../../../i18n';\r\n\r\ntype OwnProps = {\r\n title: string;\r\n subTitle: string;\r\n interface?: OrganizationInterface;\r\n type: InterfaceType;\r\n editPath?: string;\r\n deleteVisible: boolean;\r\n onDelete: (id: string) => void;\r\n};\r\n\r\ntype AllProps = OwnProps & RouteComponentProps;\r\n\r\nconst InterfaceCard: React.SFC = props => {\r\n const configure = () => {\r\n if (props.interface === undefined) {\r\n props.history.push(props.editPath + '?type=' + props.type);\r\n } else {\r\n // /my/software/interface\r\n props.history.push(props.editPath + '/' + props.interface.id);\r\n }\r\n };\r\n\r\n const viewSettings = (settings: Array<{ key: string; desc: string }>) => {\r\n return settings.map(s => {\r\n if (s.key.includes(\"Password\")){\r\n return (\r\n
\r\n {s.desc}: •••••••••\r\n
\r\n );\r\n }\r\n return (\r\n
\r\n {s.desc}: {props.interface?.settings[s.key]}\r\n
\r\n );\r\n });\r\n };\r\n\r\n const onInterfaceDelete = () => {\r\n if (props.interface != null) {\r\n props.onDelete(props.interface.id);\r\n } \r\n };\r\n\r\n const renderSettings = () => {\r\n switch (props.interface?.method) {\r\n case InterfaceMethod.Ftp:\r\n return viewSettings([\r\n { key: 'FtpAddress', desc: i18n.t('software.FtpLocation') },\r\n { key: 'FtpUsername', desc: i18n.t('account.userName') },\r\n { key: 'LtxPassword', desc: i18n.t('account.password') }\r\n ]);\r\n case InterfaceMethod.Sftp:\r\n return viewSettings([\r\n { key: 'SftpAddress', desc: i18n.t('software.SftpLocation') },\r\n { key: 'SftpUsername', desc: i18n.t('account.userName') },\r\n { key: 'SftpPassword', desc: i18n.t('account.password') }\r\n ]);\r\n case InterfaceMethod.LtxFtp:\r\n return viewSettings([\r\n { key: 'LtxFtpAddress', desc: i18n.t('software.FtpLocation') },\r\n { key: 'LtxFtpUsername', desc: i18n.t('account.userName') },\r\n { key: 'LtxFtpPassword', desc: i18n.t('account.password') }\r\n ]);\r\n case InterfaceMethod.Email:\r\n return viewSettings([{ key: 'EmailAddress', desc: 'E-mailadres' }]);\r\n case InterfaceMethod.Manual:\r\n return viewSettings([]);\r\n }\r\n return null;\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n {props.title}\r\n {props.subTitle}\r\n \r\n {props.editPath !== undefined && (\r\n \r\n {props.interface === undefined ? (\r\n \r\n {t => (\r\n configure()}>\r\n {t('adminOrganizations.install')}\r\n \r\n )}\r\n \r\n ) : (\r\n \r\n {t => (\r\n
\r\n configure()}>\r\n {t('adminOrganizations.Edit')}\r\n \r\n {props.deleteVisible == true && ( onInterfaceDelete()}>\r\n {'Delete'}\r\n \r\n )}\r\n
\r\n )}\r\n
\r\n )}\r\n
\r\n )}\r\n
\r\n \r\n {props.interface === undefined ? (\r\n
\r\n {t =>
{t('adminOrganizations.notSetUpYet')}
}
\r\n
\r\n ) : (\r\n
\r\n \r\n \r\n \r\n {t => (\r\n \r\n {interfaceMethods.map(x =>\r\n x.key === props.interface?.method\r\n ? x.key === InterfaceMethod.Manual\r\n ? t('tooltip.Manual')\r\n : x.description\r\n : ''\r\n )}\r\n \r\n )}\r\n \r\n {renderSettings()}\r\n \r\n \r\n \r\n {t => (\r\n \r\n {props.interface?.settings?.['FileFormat']} {t('software.Format')}\r\n \r\n )}\r\n \r\n \r\n \r\n\r\n {props.interface?.method === InterfaceMethod.LtxFtp ? (\r\n props.interface?.settings?.['LtxFtpIsActive'] ? (\r\n \r\n
\r\n \r\n
\r\n \r\n {t =>
{t('adminOrganizations.thisFTPHasBeenPreparedByArxis')}
}\r\n
\r\n
\r\n ) : (\r\n \r\n
\r\n \r\n
\r\n \r\n {t =>
{t('adminOrganizations.thisFTPWillSoonBePreparedByArxis')}
}\r\n
\r\n
\r\n )\r\n ) : null}\r\n
\r\n )}\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default withRouter(InterfaceCard);\r\n\r\nconst Wrapper = styled('div')`\r\n background: #f5f5f5;\r\n border-radius: 6px;\r\n border-width-left: 3px;\r\n border-color: #38b9ec;\r\n padding: 20px;\r\n`;\r\n","import styled from '@emotion/styled';\r\nimport * as React from 'react';\r\nimport { theme } from 'src/style/Style';\r\n\r\ntype OwnProps = {\r\n count: number;\r\n color?: string;\r\n place?: {\r\n top?: number;\r\n right?: number;\r\n left?: number;\r\n bottom?: number;\r\n };\r\n};\r\n\r\ntype AllProps = OwnProps;\r\n\r\nconst XBadge: React.SFC = props => {\r\n return (\r\n \r\n \r\n {props.count > 9 ? '9+' : props.count}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default XBadge;\r\n\r\nconst Badger = styled('div')({ zIndex: 10, position: 'absolute', top: 10, right: 10 });\r\nconst BadgeNumber = styled('label')({\r\n // withTheme(\r\n background: theme.pStartColor,\r\n borderRadius: '25px',\r\n fontSize: '12px',\r\n marginLeft: 'auto',\r\n padding: '0px 5px',\r\n minWidth: '19px',\r\n display: 'block',\r\n marginRight: 'auto',\r\n color: '#fff',\r\n textAlign: 'center'\r\n});\r\n// );\r\n","import { Software } from '../../models/Software';\r\n\r\nexport enum ActionTypes {\r\n GET_SOFTWARE = '[software] GET_SOFTWARE',\r\n POST_ORGANIZATION_SOFTWARE = '[software] POST_ORGANIZATION_SOFTWARE',\r\n GET_ORGANIZATION_SOFTWARE = '[software] GET_ORGANIZATION_SOFTWARE'\r\n}\r\n\r\nexport interface SoftwareState {\r\n loading: boolean;\r\n all: Software[];\r\n readonly errors?: string;\r\n}\r\n","import { OrganizationGroup } from 'src/models/OrganizationGroup';\r\n\r\nexport enum ActionTypes {\r\n GET_ORGANIZATION_GROUPS = '[organization group] GET_ORGANIZATION_GROUPS'\r\n}\r\n\r\nexport interface OrganizationGroupsState {\r\n loading: boolean;\r\n errors?: string;\r\n all: OrganizationGroup[];\r\n}\r\n","import { OrderMessage } from 'src/models/OrderMessage';\r\n\r\nexport enum ActionTypes {\r\n GET_ORDERMESSAGES = '[data] GET_ORDERMESSAGES'\r\n}\r\n\r\nexport interface DataState {\r\n loading: boolean;\r\n errors?: string;\r\n orderMessages: OrderMessage[];\r\n}\r\n","export enum ActionTypes {\r\n CHANGE_LANGUAGE = '[UI] CHANGE_LANGUAGE'\r\n}\r\n\r\n\r\nexport interface LanguageState {\r\n language: string;\r\n}\r\n","export enum ActionTypes {\r\n SAVE_ORDER = '[purchase-order] SAVE_ORDER',\r\n DELETE_ORDER = '[purchase-order] DELETE_ORDER',\r\n GET_NOT_SEND_ORDERS = '[purchase-order] GET_NOT_SEND_ORDERS',\r\n GET_LIST_OF_SENT_ORDERS = '[purchase-order] GET_LIST_OF_SENT_ORDERS',\r\n GET_CATALOG_VIEW = '[purchase-order] GET_CATALOG_VIEW',\r\n SEND_ORDER = '[purchase-order] SEND_ORDER'\r\n}\r\n\r\nexport type Artical = {\r\n gtin: string;\r\n name: string;\r\n price: number;\r\n qty: number;\r\n};\r\n\r\nexport type Order = {\r\n retailerOrganizationId: string;\r\n supplierOrganizationId: string;\r\n catalogId: string;\r\n lines: Artical[];\r\n deliveryDate: Date;\r\n creationDate: Date;\r\n id: string;\r\n reference: string;\r\n orderNumber: string;\r\n supplierName: string;\r\n isChecked: boolean;\r\n};\r\n\r\nexport type OrderFormData = {\r\n targetOrganizationId: string;\r\n deliveryDate: Date;\r\n catalogId: string;\r\n orderLines: Artical[];\r\n deliveryAddress: string;\r\n deliveryPostcode: string;\r\n deliveryPhone: string;\r\n deliveryEmail: string;\r\n reference: string;\r\n comment: string;\r\n};\r\n\r\nexport interface OrdersState {\r\n loading: boolean;\r\n listNotSendOrders: Order[];\r\n listOfSentOrders: Order[];\r\n catalogView: any\r\n errors?: string;\r\n}\r\n\r\n\r\n\r\n","module.exports = __webpack_public_path__ + \"static/media/empty-clipboard.c0e2824b.svg\";","import styled from '@emotion/styled';\r\nimport * as React from 'react';\r\nimport XForm, { IField } from 'src/components/layout/XForm';\r\nimport { AuthenticationAccount } from 'src/store/authentication/types';\r\nimport { EditAccountForm } from '../AccountPage';\r\nimport i18n from '../../../i18n';\r\n\r\ntype OwnProps = {\r\n account?: AuthenticationAccount | EditAccountForm;\r\n registration: boolean;\r\n data?: any;\r\n margin?: boolean;\r\n inputErrors?: any;\r\n submitHandler?: () => void;\r\n callback: (name: string, value: string) => any;\r\n};\r\n\r\ntype AllProps = OwnProps;\r\n\r\nclass AccountDetails extends React.Component {\r\n public render() {\r\n let fields: IField[] = [\r\n {\r\n title: i18n.t('account.emailAdress'),\r\n name: 'email',\r\n readonly: true,\r\n required: true,\r\n maxLength: 255\r\n },\r\n {\r\n title: i18n.t('account.password'),\r\n type: 'password',\r\n name: 'password',\r\n required: true,\r\n maxLength: 255\r\n },\r\n {\r\n title: i18n.t('account.confirmPass'),\r\n type: 'password',\r\n name: 'passwordValid',\r\n required: true,\r\n maxLength: 255\r\n }\r\n ];\r\n\r\n if (this.props.registration) {\r\n // registration\r\n fields = [\r\n {\r\n title: i18n.t('account.emailAdress'),\r\n name: 'email',\r\n readonly: false,\r\n required: true,\r\n maxLength: 255\r\n },\r\n {\r\n title: i18n.t('account.firstName'),\r\n name: 'firstName',\r\n fullWidth: false,\r\n required: true,\r\n maxLength: 255\r\n },\r\n {\r\n title: i18n.t('account.lastName'),\r\n name: 'lastName',\r\n fullWidth: false,\r\n required: true,\r\n maxLength: 255\r\n },\r\n {\r\n title: i18n.t('account.password'),\r\n type: 'password',\r\n name: 'password',\r\n required: true,\r\n maxLength: 255\r\n },\r\n {\r\n title: i18n.t('account.confirmPass'),\r\n type: 'password',\r\n name: 'passwordValid',\r\n required: true,\r\n maxLength: 255\r\n }\r\n ];\r\n }\r\n\r\n return (\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default AccountDetails;\r\n","import { API_URL_ACCOUNT, API_URL_AUTH, API_URL_AUTH_IMPERSONATED } from 'src/constants/ApiRoutes';\r\nimport { apiClient, ApiResult } from 'src/helpers/apiClient';\r\nimport { AuthenticationAccount } from './types';\r\n\r\nexport const authenticate = async (email: string, password: string): Promise => {\r\n const data = {\r\n Email: email,\r\n Password: password\r\n };\r\n\r\n return await apiClient.postDataAsync(API_URL_AUTH, data);\r\n};\r\n\r\nexport const authenticateImpersonated = async (token: string, impersonatedEmail: string): Promise => {\r\n const data = {\r\n Token: token,\r\n ImpersonatedEmail: impersonatedEmail\r\n };\r\n\r\n return await apiClient.postDataAsync(API_URL_AUTH_IMPERSONATED, data);\r\n};\r\n","import { Action, Dispatch } from 'redux';\r\nimport { ThunkDispatch } from 'redux-thunk';\r\nimport { requestApiThunk } from 'src/helpers/actionHelpers';\r\nimport { ApiError } from 'src/helpers/apiClient';\r\nimport { authenticate, authenticateImpersonated } from './api';\r\nimport { ActionTypes, AuthenticationAccount, AuthenticationState } from './types';\r\n\r\nexport type FetchStatus = 'request' | 'success' | 'failure';\r\n\r\nexport type LoginAction = {\r\n type: ActionTypes.LOGIN;\r\n status: FetchStatus;\r\n errors?: ApiError[];\r\n payload: {\r\n data?: AuthenticationAccount;\r\n };\r\n};\r\n\r\nconst login = (\r\n status: FetchStatus,\r\n data?: AuthenticationAccount,\r\n errors?: ApiError[]\r\n): LoginAction => ({\r\n type: ActionTypes.LOGIN,\r\n status,\r\n errors,\r\n payload: {\r\n data\r\n }\r\n});\r\n\r\nexport const loginRequestThunk = (email: string, password: string) => {\r\n return async (dispatch: Dispatch) => {\r\n dispatch(login('request'));\r\n\r\n const result = await authenticate(email, password);\r\n\r\n if (result.IsSuccess) {\r\n sessionStorage.setItem('auth_token', result.JsonResponse.token);\r\n dispatch(login('success', result.JsonResponse));\r\n } else {\r\n dispatch(\r\n login('failure', undefined, [\r\n {\r\n errorCode: result.StatusCode,\r\n errorDescription: ''\r\n }\r\n ])\r\n );\r\n }\r\n };\r\n};\r\n\r\nexport const loginImpersonatedRequestThunk = (token: string, impersonatedEmail: string) => {\r\n return async (dispatch: Dispatch) => {\r\n dispatch(login('request'));\r\n\r\n const result = await authenticateImpersonated(token, impersonatedEmail);\r\n\r\n if (result.IsSuccess) {\r\n sessionStorage.setItem('auth_token', result.JsonResponse.token);\r\n sessionStorage.setItem('impersonated', true.toString());\r\n dispatch(login('success', result.JsonResponse));\r\n } else {\r\n dispatch(\r\n login('failure', undefined, [\r\n {\r\n errorCode: result.StatusCode,\r\n errorDescription: ''\r\n }\r\n ])\r\n );\r\n }\r\n };\r\n};\r\n\r\nexport const logoutThunk = () => {\r\n return async (dispatch: Dispatch) => {\r\n dispatch(logout());\r\n };\r\n};\r\n\r\ntype Logout = {\r\n type: ActionTypes.LOGOUT;\r\n};\r\n\r\nexport const logout = (): Logout => ({\r\n type: ActionTypes.LOGOUT\r\n});\r\n\r\nexport type AuthenticationAction = LoginAction | Logout;\r\n","import styled from '@emotion/styled';\r\nimport { IconButton } from '@material-ui/core';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport React from 'react';\r\nimport { MessageType } from 'src/store/layout/types';\r\n\r\ntype OwnProps = {\r\n type?: MessageType;\r\n message?: string;\r\n close: () => void;\r\n};\r\n\r\ntype AlertProps = {\r\n type?: MessageType;\r\n};\r\n\r\ntype AllProps = OwnProps;\r\n\r\ntype State = {};\r\n\r\nclass XToast extends React.Component {\r\n constructor(props: AllProps) {\r\n super(props);\r\n this.state = {};\r\n }\r\n\r\n public render() {\r\n return (\r\n \r\n {this.props.message}\r\n this.props.close()}>\r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default XToast;\r\n\r\nconst Alert = styled('span')`\r\n padding: 10px 16px;\r\n border-radius: 4px;\r\n font-weight: bold;\r\n font-size: 13px;\r\n white-space: pre;\r\n background-color: ${props =>\r\n props.type === 'error'\r\n ? '#f44336'\r\n : props.type === 'warning'\r\n ? '#ff9800'\r\n : props.type === 'success'\r\n ? '#4caf50'\r\n : '#3280c3'};\r\n color: #fff;\r\n box-shadow: 0px 3px 5px -1px rgba(0, 0, 0, 0.2);\r\n`;\r\n","import { apiClient, ApiResult } from 'src/helpers/apiClient';\r\n\r\nexport const getOrderMessages = async (): Promise => {\r\n return await apiClient.postQueryAsync('ListOrderMessages');\r\n};\r\n\r\nexport const getOrderView = async (id: string, token: string): Promise => {\r\n const params = {\r\n OrderId: id,\r\n Token: token\r\n }\r\n return await apiClient.postQueryAsync('GetOrderView', params);\r\n};\r\n","import { css } from '@emotion/core';\r\nimport styled from '@emotion/styled';\r\nimport * as React from 'react';\r\n\r\nimport MediaQuery from 'react-responsive';\r\nimport { Link } from 'react-router-dom';\r\nimport { Catalog } from 'src/models/Catalog';\r\nimport { Organization, OrganizationModel, OrganizationType } from 'src/models/Organization';\r\nimport { AuthenticationAccount } from 'src/store/authentication/types';\r\nimport { RequestState } from 'src/store/requests/types';\r\nimport XButton from '../layout/XButton';\r\nimport { XContainer } from '../layout/XContainer';\r\nimport XGrid from '../layout/XGrid';\r\nimport { XImage, XImageContainer } from '../layout/XImage';\r\nimport { XPaperContainer, XPaperLabel, XPaperText, XPaperTitle } from '../layout/XPaper';\r\nimport { XRow } from '../layout/XRow';\r\nimport XCatalog from './XCatalog';\r\n\r\nimport { generateAvatar } from 'src/helpers/avatarGenerator';\r\nimport { getImageUrl } from 'src/helpers/formatHelpers';\r\nimport Logo from '../../style/images/ltxLogos/ltxdefOpaque.svg';\r\nimport XOrganizationTitle from './XOrganizationTitle';\r\n\r\ntype OwnProps = {\r\n showCatalogs: boolean;\r\n showCatalogsButton: boolean;\r\n organizationModel: OrganizationModel;\r\n isAdmin: boolean;\r\n requestState?: RequestState;\r\n onRequestCatalogs?: (id: string) => void;\r\n onOfferCatalogs?: (id: string) => void;\r\n};\r\n\r\ntype AllProps = OwnProps;\r\n\r\nconst XOrganizationDetail: React.SFC = props => {\r\n const organizationType = props.organizationModel.organization.organizationType;\r\n let requestButton =
;\r\n\r\n if (props.showCatalogsButton) {\r\n if (props.requestState === RequestState.NOT_REQUESTED) {\r\n requestButton = (\r\n {\r\n if (\r\n props.organizationModel.organization.organizationType === OrganizationType.Supplier\r\n ) {\r\n if (props.onRequestCatalogs) {\r\n props.onRequestCatalogs(props.organizationModel.organization.id);\r\n }\r\n } else {\r\n if (props.onOfferCatalogs) {\r\n props.onOfferCatalogs(props.organizationModel.organization.id);\r\n }\r\n }\r\n }}>\r\n CATALOGI {organizationType === OrganizationType.Supplier ? 'AANVRAGEN' : 'AANBIEDEN'}\r\n \r\n );\r\n } else if (props.requestState === RequestState.REQUEST_PENDING) {\r\n requestButton = (\r\n \r\n CATALOGI {organizationType === OrganizationType.Supplier ? 'AANGEVRAAGD' : 'AANGEBODEN'}\r\n \r\n );\r\n } else if (props.requestState === RequestState.DISAPPROVED) {\r\n requestButton = (\r\n \r\n CATALOGI {organizationType === OrganizationType.Supplier ? 'AANVRAAG' : 'AANBOD'}{' '}\r\n AFGEWEZEN\r\n \r\n );\r\n } else if (props.requestState === RequestState.APPROVED) {\r\n requestButton =
; // Should we show anything here?\r\n }\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n {\r\n e.target.onError = null;\r\n e.target.src = generateAvatar(props.organizationModel.organization.name, 100);\r\n }}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n {props.organizationModel.organization.description}\r\n \r\n \r\n\r\n {requestButton}\r\n \r\n );\r\n};\r\n\r\nconst OrganizationButtonContainerSmall = styled('div')`\r\n position: absolute;\r\n top: 20px;\r\n right: 10px;\r\n`;\r\n\r\nconst OrganizationButtonContainer = styled('div')({\r\n marginTop: '38px',\r\n marginBottom: '30px',\r\n maxWidth: '400px'\r\n});\r\n\r\nexport default XOrganizationDetail;\r\n\r\nconst EllipseText = styled(XPaperText)`\r\n display: -webkit-box;\r\n -webkit-line-clamp: 3;\r\n -webkit-box-orient: vertical;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n`;\r\n\r\nexport const CatalogTitle = styled('label')({\r\n fontSize: '14px',\r\n fontFamily: 'Montserrat-Bold', // TODO: get font from theme\r\n paddingBottom: '4px'\r\n});\r\n\r\nconst CatalogLabel = styled('label')({\r\n fontSize: '10px',\r\n cursor: 'pointer',\r\n marginTop: '3px'\r\n});\r\n\r\nconst CatalogText = styled('div')({\r\n display: 'flex',\r\n flexDirection: 'column',\r\n borderBottom: '1px solid #e0e0e0',\r\n paddingLeft: '7px',\r\n marginLeft: '8px',\r\n width: '100%',\r\n color: 'black'\r\n});\r\n\r\nconst TitleWrapper = styled.div`\r\n margin: 0 15px;\r\n`;\r\n","import React, { Suspense } from 'react';\r\nimport styled from '@emotion/styled';\r\nimport { LinearProgress } from '@material-ui/core';\r\nimport { connect } from 'react-redux';\r\nimport MediaQuery from 'react-responsive';\r\nimport { Link, RouteComponentProps } from 'react-router-dom';\r\nimport XCatalog from 'src/components/domain/XCatalog';\r\nimport XOrganizationDetail from 'src/components/domain/XOrganizationDetail';\r\nimport { XContainer } from 'src/components/layout/XContainer';\r\nimport XGrid from 'src/components/layout/XGrid';\r\nimport { XImage, XImageContainer } from 'src/components/layout/XImage';\r\nimport XPageContent from 'src/components/layout/XPageContent';\r\nimport {\r\n XPaper,\r\n XPaperContainer,\r\n XPaperLabel,\r\n XPaperText,\r\n XPaperTitle\r\n} from 'src/components/layout/XPaper';\r\nimport { XRow, XRowCell } from 'src/components/layout/XRow';\r\nimport { ApiResult } from 'src/helpers/apiClient';\r\nimport { formatDateToString, getFileFormatOptions, getImageUrl } from 'src/helpers/formatHelpers';\r\nimport { CatalogModel, PublicationStatus } from 'src/models/Catalog';\r\nimport { MyOrganizationModel, OrganizationModel, OrganizationType } from 'src/models/Organization';\r\nimport { ApplicationState } from 'src/store';\r\nimport { AuthenticationAccount } from 'src/store/authentication/types';\r\nimport * as catalogActions from 'src/store/catalogs/actions';\r\nimport { showNotification } from 'src/store/layout/actions';\r\nimport { MessageType } from 'src/store/layout/types';\r\nimport * as organizationActions from 'src/store/organizations/actions';\r\n\r\nimport XErrorContent from 'src/components/domain/XErrorContent';\r\nimport XForm from 'src/components/layout/XForm';\r\nimport XPagination from 'src/components/layout/XPagination';\r\nimport XPopup from 'src/components/layout/XPopup';\r\nimport XScrollView from 'src/components/layout/XScrollView';\r\nimport XGoBack from 'src/components/shared/XGoBack';\r\nimport { delayExecution } from 'src/helpers/actionHelpers';\r\nimport { generateAvatar } from 'src/helpers/avatarGenerator';\r\nimport { mapError } from 'src/helpers/errorMap';\r\nimport { FileFormat } from 'src/models/FileFormat';\r\nimport { Software } from 'src/models/Software';\r\nimport { getSoftwareThunk, sortSoftware } from 'src/store/software/actions';\r\nimport { XActionStrip } from 'src/components/layout/XActionStrip';\r\nimport { XSecActionButton, XActionButton } from 'src/components/layout/XActionButton';\r\nimport { Skeleton } from '@material-ui/lab';\r\nimport ErrorBoundary from 'src/components/shared/ErrorBoundary';\r\nconst ShowPDF = React.lazy(() => import('../../components/shared/ShowPDF'));\r\n\r\ntype StateProps = {\r\n catalog?: CatalogModel;\r\n myOrganization?: MyOrganizationModel;\r\n myAccount: AuthenticationAccount;\r\n organizationModel?: OrganizationModel;\r\n loadingCatalog: boolean;\r\n loadingOrganization: boolean;\r\n fileFormats: FileFormat[];\r\n software: Software[];\r\n};\r\n\r\ntype DispatchProps = {\r\n showNotification: (message: string, messageType?: MessageType) => void;\r\n getCatalogById: (id: string) => Promise;\r\n getMyOrganization: () => void;\r\n getOrganization: (organizationId: string) => void;\r\n downloadCatalog: (\r\n catalogId: string,\r\n versionId: string,\r\n fileFormat: string,\r\n fileFormatVersion: string\r\n ) => Promise;\r\n getFileFormats: () => Promise;\r\n getSoftware: () => Promise;\r\n};\r\n\r\ntype OwnProps = {};\r\n\r\ntype AllProps = StateProps & DispatchProps & OwnProps & RouteComponentProps<{ id: string }>;\r\n\r\ntype State = {\r\n showDownloadPopup: boolean;\r\n fileFormatData: {\r\n fileFormat: string | null;\r\n fileFormatVersion: string | null;\r\n fileFormatSelection: string | null;\r\n softwareSelection: string | null;\r\n };\r\n showOther: boolean;\r\n fileFormatSelectionError: boolean;\r\n processing: boolean;\r\n errorMessage: string;\r\n showPdf: boolean;\r\n pdfUrl: string;\r\n pdfPage: number;\r\n pdfTotalPages: number;\r\n};\r\n\r\nclass ShowCatalogPage extends React.Component {\r\n setDocumentRef: (document: any) => any;\r\n document: any;\r\n\r\n public constructor(props: AllProps) {\r\n super(props);\r\n this.setDocumentRef = doc => (this.document = doc);\r\n\r\n this.state = {\r\n fileFormatData: {\r\n fileFormat: null,\r\n fileFormatVersion: null,\r\n fileFormatSelection: null,\r\n softwareSelection: null\r\n },\r\n showDownloadPopup: false,\r\n fileFormatSelectionError: false,\r\n processing: false,\r\n showOther: false,\r\n errorMessage: '',\r\n showPdf: false,\r\n pdfUrl: '',\r\n pdfPage: 1,\r\n pdfTotalPages: 1\r\n };\r\n }\r\n\r\n public componentDidUpdate(prev) {\r\n if (this.props.catalog?.catalog.id !== prev.catalog?.catalog.id) {\r\n this.setState({\r\n showDownloadPopup: false,\r\n fileFormatData: {\r\n fileFormat: null,\r\n fileFormatVersion: null,\r\n fileFormatSelection: null,\r\n softwareSelection: null\r\n },\r\n fileFormatSelectionError: false,\r\n processing: false,\r\n errorMessage: ''\r\n });\r\n }\r\n if (this.props.match.params.id !== prev.match.params.id) {\r\n this.props.getCatalogById(this.props.match.params.id).then(result => {\r\n if (!result.IsSuccess) {\r\n if (result.StatusCode === 401)\r\n // Not authorized for this catalog\r\n this.props.history.push('/app/start');\r\n } else {\r\n if (this.props.catalog)\r\n this.props.getOrganization(this.props.catalog.catalog.organizationId);\r\n }\r\n });\r\n\r\n this.props.getFileFormats();\r\n this.props.getSoftware();\r\n const softwareId = this.props.myOrganization?.organization.softwareId;\r\n if (softwareId !== null && softwareId !== '00000000-0000-0000-0000-000000000000')\r\n this.handleFormChange('softwareSelection', softwareId);\r\n }\r\n }\r\n\r\n public handleOnLoad(event, request: any, fileName: string) {\r\n var blobFile = request.response;\r\n var link = document.createElement('a');\r\n link.href = window.URL.createObjectURL(blobFile);\r\n link.download = fileName;\r\n link.click();\r\n }\r\n\r\n public downloadFile(\r\n url,\r\n catalogName,\r\n organizationName,\r\n catalogId,\r\n version,\r\n fileFormat,\r\n extension\r\n ) {\r\n var request = new XMLHttpRequest();\r\n request.open('GET', url, true);\r\n request.responseType = 'blob';\r\n var fileName =\r\n catalogName +\r\n '_v' +\r\n version +\r\n '_' +\r\n organizationName +\r\n '_' +\r\n catalogId +\r\n '-' +\r\n fileFormat +\r\n '.' +\r\n version +\r\n '.' +\r\n extension;\r\n request.onload = e => this.handleOnLoad(e, request, fileName);\r\n request.send();\r\n }\r\n\r\n public getFile(forPdf: boolean) {\r\n if (!this.props.catalog) {\r\n return;\r\n }\r\n\r\n const version = this.props.catalog.versions[0];\r\n const sourceFileFormat = this.props.fileFormats.find(f => f.id === version.fileFormat);\r\n if (!sourceFileFormat) return;\r\n\r\n let fileFormatId: string;\r\n let fileFormatVersionId: string;\r\n if (sourceFileFormat.electronicInterchangeable) {\r\n // File format/version should be selected if it is an interchangable source\r\n this.setState({ fileFormatSelectionError: !this.state.fileFormatData.fileFormatSelection });\r\n if (!this.state.fileFormatData.fileFormat || !this.state.fileFormatData.fileFormatVersion)\r\n return;\r\n\r\n fileFormatId = this.state.fileFormatData.fileFormat;\r\n fileFormatVersionId = this.state.fileFormatData.fileFormatVersion;\r\n } else {\r\n fileFormatId = version.fileFormat;\r\n fileFormatVersionId = version.fileFormatVersion;\r\n }\r\n\r\n this.setState({ processing: true });\r\n const startTime = new Date().getTime();\r\n this.props\r\n .downloadCatalog(\r\n this.props.catalog.catalog.id,\r\n this.props.catalog.versions[0].id,\r\n fileFormatId,\r\n fileFormatVersionId\r\n )\r\n .then(apiResult => {\r\n if (forPdf) {\r\n this.setState({ showPdf: true, pdfUrl: apiResult.Data, processing: false });\r\n } else {\r\n delayExecution(startTime, 500, () => {\r\n this.setState({\r\n processing: false,\r\n showDownloadPopup: !apiResult.IsSuccess,\r\n errorMessage: ''\r\n });\r\n\r\n if (apiResult.IsSuccess) {\r\n if (this.validateUrl(apiResult.Data)) {\r\n // Selected format available for download\r\n let fileFormat = this.props.fileFormats.find(x => x.id === fileFormatId);\r\n let fileFromatVersion =\r\n fileFormat === undefined\r\n ? '1'\r\n : fileFormat.versions.find(x => x.id === fileFormatVersionId)?.name;\r\n this.downloadFile(\r\n apiResult.Data,\r\n this.props.catalog?.catalog.title,\r\n this.props.catalog?.catalog.organizationName,\r\n this.props.catalog?.catalog.id,\r\n fileFromatVersion,\r\n this.props.fileFormats.find(x => x.id === fileFormatId)?.name,\r\n this.props.fileFormats.find(x => x.id === fileFormatId)?.defaultExtension\r\n );\r\n } else if (!apiResult.Data) {\r\n // Selected format unavailable for download. Added to queue of catalog conversions\r\n this.props.showNotification(\r\n 'De catalogus wordt klaargemaakt voor de gekozen software. \\r\\n' +\r\n 'Je zult per email (' +\r\n this.props.myAccount.email +\r\n ') op de hoogte gesteld worden van de voortgang',\r\n 'success'\r\n );\r\n }\r\n } else {\r\n if (apiResult.Errors && apiResult.Errors[0].errorCode === 'LTX4001')\r\n this.setState({\r\n errorMessage:\r\n 'Deze catalogus is helaas (nog) niet beschikbaar in dit bestandsformaat'\r\n });\r\n else\r\n this.props.showNotification(\r\n 'Er ging iets mis bij het downloaden van de catalogus: ' +\r\n mapError(apiResult.Errors),\r\n 'error'\r\n );\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n public componentDidMount() {\r\n this.props.getCatalogById(this.props.match.params.id).then(result => {\r\n if (!result.IsSuccess) {\r\n if (result.StatusCode === 401)\r\n // Not authorized for this catalog\r\n this.props.history.push('/app/start');\r\n } else {\r\n if (this.props.catalog)\r\n this.props.getOrganization(this.props.catalog.catalog.organizationId);\r\n }\r\n });\r\n\r\n this.props.getFileFormats();\r\n this.props.getSoftware();\r\n const softwareId = this.props.myOrganization?.organization.softwareId;\r\n if (softwareId !== null && softwareId !== '00000000-0000-0000-0000-000000000000')\r\n this.handleFormChange('softwareSelection', softwareId);\r\n }\r\n\r\n public handleFormChange(name: string, value: any) {\r\n const newData = Object.assign({}, this.state.fileFormatData);\r\n if (name === 'fileFormatSelection') {\r\n const split = value?.split('|') ?? [undefined, undefined];\r\n newData.fileFormat = split[0];\r\n newData.fileFormatVersion = split[1];\r\n newData.fileFormatSelection = value;\r\n } else if (name === 'softwareSelection') {\r\n console.log(name, value);\r\n if (value === 'Other') {\r\n this.setState({ showOther: true });\r\n } else {\r\n this.setState({ showOther: false });\r\n const software = this.props.software.find(s => s.id === value);\r\n if (!software) return;\r\n\r\n newData.fileFormat = software.fileFormat;\r\n newData.fileFormatVersion = software.fileFormatVersion;\r\n }\r\n newData.softwareSelection = value;\r\n } else newData[name] = value;\r\n this.setState({ fileFormatData: newData });\r\n }\r\n\r\n private getPDFWidth() {\r\n if (!this.document) return '';\r\n\r\n const width = parseInt(this.document.clientWidth, 10);\r\n return width - 20;\r\n }\r\n\r\n private validateUrl(value) {\r\n var expression = /[-a-zA-Z0-9@:%_\\+.~#?&//=]{2,256}\\.[a-z]{2,4}\\b(\\/[-a-zA-Z0-9@:%_\\+.~#?&//=]*)?/gi;\r\n var regexp = new RegExp(expression);\r\n return regexp.test(value);\r\n }\r\n\r\n public render() {\r\n const props = this.props;\r\n\r\n const availableFormats = ['eCat', 'LTX', 'CSV', 'VME', 'eCatVeldeman', 'eCat.iOne'];\r\n const avaiableFileFormats = props.fileFormats.filter(file =>\r\n availableFormats.find(available => available === file.name)\r\n );\r\n\r\n if (!props.catalog || !props.myOrganization || !props.organizationModel)\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n\r\n const validCatalogs = props.organizationModel.catalogs\r\n .filter(c => c.id !== props.catalog?.catalog.id)\r\n .filter(c => c.publicationStatus == PublicationStatus.Published);\r\n\r\n let bottomContent;\r\n if (this.props.myAccount.organizationType !== OrganizationType.Supplier) {\r\n bottomContent = (\r\n
\r\n {validCatalogs.length ? (\r\n
\r\n \r\n \r\n Meer van deze leverancier\r\n \r\n \r\n \r\n {props.loadingCatalog || props.loadingOrganization ? (\r\n \r\n ) : (\r\n <>\r\n {' '}\r\n {validCatalogs\r\n .slice(0, 16)\r\n .map(obj =>\r\n obj.id !== props.catalog?.catalog.id ? (\r\n \r\n ) : null\r\n )}{' '}\r\n \r\n )}\r\n \r\n
\r\n ) : (\r\n undefined\r\n )}\r\n
\r\n );\r\n }\r\n\r\n const pdfFileFormat = this.props.fileFormats.find(f => f.name === 'PDF');\r\n\r\n const lastVersion = props.catalog.versions.find(\r\n version => version.id === props.catalog?.catalog.currentVersionId\r\n );\r\n\r\n if (!lastVersion) {\r\n return null;\r\n }\r\n\r\n const StatsLine = (\r\n \r\n \r\n \r\n \r\n {props.loadingCatalog || props.loadingOrganization ? (\r\n \r\n ) : (\r\n \r\n {lastVersion.fileFormat === pdfFileFormat?.id && (\r\n this.getFile(true)}>Bekijk\r\n )}\r\n this.setState({ showDownloadPopup: true })}>\r\n Download\r\n \r\n \r\n )}\r\n \r\n );\r\n\r\n let fileFormatInputs;\r\n const sourceFileFormat = this.props.fileFormats.find(f => f.id === lastVersion.fileFormat);\r\n if (!sourceFileFormat || sourceFileFormat.electronicInterchangeable) {\r\n fileFormatInputs = [\r\n {\r\n name: 'softwareSelection',\r\n title: 'Welk software pakket heb je?',\r\n required: true,\r\n type: 'select',\r\n value: this.props.myOrganization?.organization.softwareId,\r\n options: [\r\n ...this.props.software.map(s => ({ name: s.name, value: s.id })),\r\n { name: 'Anders', value: 'Other' }\r\n ]\r\n }\r\n ];\r\n if (this.state.showOther) {\r\n const options = getFileFormatOptions(avaiableFileFormats, false);\r\n fileFormatInputs = [\r\n ...fileFormatInputs,\r\n {\r\n name: 'fileFormatSelection',\r\n title: 'Welk formaat?',\r\n required: true,\r\n type: 'select',\r\n options\r\n }\r\n ];\r\n }\r\n } else {\r\n if (!this.state.fileFormatData.fileFormat)\r\n this.setState({\r\n fileFormatData: {\r\n fileFormat: lastVersion.fileFormat,\r\n fileFormatVersion: lastVersion.fileFormatVersion,\r\n fileFormatSelection: lastVersion.fileFormat + '|' + lastVersion.fileFormatVersion,\r\n softwareSelection: null\r\n }\r\n });\r\n\r\n fileFormatInputs = [\r\n {\r\n name: 'fileFormatSelection',\r\n title: 'Bestands formaat',\r\n readonly: true,\r\n required: true,\r\n type: 'select',\r\n options: [\r\n {\r\n name: sourceFileFormat.name,\r\n value: lastVersion.fileFormat + '|' + lastVersion.fileFormatVersion\r\n }\r\n ]\r\n }\r\n ];\r\n }\r\n\r\n const bottomPager = (\r\n this.setState({ pdfPage: n + 1 })}\r\n />\r\n );\r\n\r\n return (\r\n \r\n \r\n Loading PDF...
}>\r\n {this.state.showPdf && (\r\n this.setState({ showPdf: false })}\r\n ref={this.setDocumentRef}\r\n onLoadSuccess={pdf => this.setState({ pdfTotalPages: pdf.numPages })}\r\n file={this.state.pdfUrl}\r\n pageNumber={this.state.pdfPage}\r\n width={this.getPDFWidth()}\r\n />\r\n )}\r\n \r\n this.setState({ showDownloadPopup: false })}\r\n onSave={() => this.getFile(false)}\r\n buttonSaveText=\"Download\"\r\n buttonCancelText=\"Annuleren\">\r\n
\r\n {this.state.processing ? (\r\n
\r\n
\r\n Download verzoek aan het verwerken\r\n
\r\n \r\n
\r\n ) : (\r\n
\r\n this.handleFormChange(name, value)}\r\n />\r\n {this.state.errorMessage && (\r\n
\r\n {this.state.errorMessage}\r\n
\r\n )}\r\n
\r\n )}\r\n
\r\n \r\n\r\n \r\n \r\n
\r\n {StatsLine}\r\n \r\n \r\n \r\n \r\n {props.loadingCatalog || props.loadingOrganization ? (\r\n \r\n ) : (\r\n \r\n {\r\n e.target.onError = null;\r\n e.target.src = generateAvatar(\r\n props.catalog?.catalog.title ?? '',\r\n 145\r\n );\r\n }}\r\n />\r\n \r\n )}\r\n \r\n \r\n \r\n
\r\n \r\n {props.loadingCatalog || props.loadingOrganization ? (\r\n \r\n ) : (\r\n props.catalog?.catalog.title\r\n )}\r\n \r\n \r\n {props.loadingCatalog || props.loadingOrganization ? (\r\n \r\n ) : (\r\n props.catalog?.catalog.downloads + ' downloads'\r\n )}\r\n \r\n {lastVersion.endDate !== undefined && (\r\n \r\n {props.loadingCatalog || props.loadingOrganization ? (\r\n \r\n ) : (\r\n `beschikbaar tot ${formatDateToString(lastVersion.endDate)}`\r\n )}\r\n \r\n )}\r\n \r\n {props.loadingCatalog || props.loadingOrganization ? (\r\n \r\n ) : (\r\n props.catalog?.catalog.description\r\n )}\r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n {props.loadingCatalog || props.loadingOrganization ? (\r\n \r\n ) : (\r\n \r\n \r\n \r\n
\r\n \r\n )}\r\n \r\n\r\n {bottomContent}\r\n \r\n \r\n {props.loadingCatalog || props.loadingOrganization ? (\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\nconst mapStateToProps = (state: ApplicationState): StateProps => {\r\n return {\r\n myAccount: state.authentication.account,\r\n myOrganization: state.organizations.myOrganization,\r\n catalog: state.catalogs.data.detail,\r\n organizationModel: state.organizations.detail,\r\n loadingCatalog: state.catalogs.loading,\r\n loadingOrganization: state.organizations.loading,\r\n fileFormats: state.catalogs.fileFormats,\r\n software: state.software.all.sort((a, b) => sortSoftware(a, b))\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch: any): DispatchProps => ({\r\n showNotification: (message: string, messageType?: MessageType) => {\r\n dispatch(showNotification(message, messageType));\r\n },\r\n getCatalogById: (id: string) => dispatch(catalogActions.getCatalogThunk(id)),\r\n getMyOrganization: () => dispatch(organizationActions.getMyOrganizationThunk()),\r\n getOrganization: (organizationId: string) =>\r\n dispatch(organizationActions.getOrganizationThunk(organizationId)),\r\n downloadCatalog: (\r\n catalogId: string,\r\n catalogVersionId: string,\r\n fileFormat: string,\r\n fileFormatVersion: string\r\n ) =>\r\n dispatch(\r\n organizationActions.downloadCatalogThunk(\r\n catalogId,\r\n catalogVersionId,\r\n fileFormat,\r\n fileFormatVersion\r\n )\r\n ),\r\n getFileFormats: () => dispatch(catalogActions.getFileFormatsThunk()),\r\n getSoftware: () => dispatch(getSoftwareThunk())\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(ShowCatalogPage);\r\n\r\nconst StatsLineItem = styled(XRowCell)`\r\n line-height: 24px;\r\n\r\n & > button {\r\n max-width: 200px;\r\n }\r\n`;\r\n\r\nconst PaperSubTitle = styled.div`\r\n font-size: 13px;\r\n margin: 2px 15px;\r\n`;\r\n","import { Color } from '@material-ui/core';\r\nimport { ColorsObject } from 'redux-logger';\r\n\r\nexport const dataFormStyle = {\r\n overlay: {\r\n backgroundColor: 'rgba(0,0,0,0.4)'\r\n },\r\n content: {\r\n width: '30%',\r\n height: '30%',\r\n display: 'flex',\r\n justifyContent: 'center',\r\n position: 'fixed',\r\n top: '50%',\r\n left: '50%',\r\n transform: 'translate(-50%, -50%)',\r\n alignItems: 'center'\r\n }\r\n};\r\n\r\nexport type XTheme = {\r\n pStartColor: string;\r\n pEndColor: string;\r\n sStartColor: string;\r\n sEndColor: string;\r\n};\r\n\r\nexport const theme: XTheme = {\r\n pStartColor: '#E7217B',\r\n pEndColor: '#F29223',\r\n sStartColor: '#79CCFF',\r\n sEndColor: '#6170FF'\r\n};\r\n","import React from 'react';\r\nimport { keyframes } from '@emotion/core';\r\nimport styled from '@emotion/styled';\r\n\r\nconst AppLoadingPage: React.FC = () => {\r\n return (\r\n \r\n
\r\n \"Arxis\"\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default AppLoadingPage;\r\n\r\nconst pulse = keyframes`{\r\n\t0% {\t\r\n transform: scale(1);}\r\n\t\r\n\t}\r\n\t\r\n\t50% {\r\n\t\ttransform: scale(1.05);\r\n\t\r\n\t}\r\n\t\r\n\t100% {\r\n\t\ttransform: scale(1);\r\n\t\r\n\t}\r\n}\r\n`;\r\n\r\nconst XFallBackPage = styled.div`\r\n align-items: center;\r\n display: flex;\r\n flex-direction: column;\r\n height: 100vh;\r\n justify-content: center;\r\n text-align: center;\r\n background-color: #2d80c2;\r\n\r\n & .logo {\r\n width: 12rem;\r\n animation: ${pulse} 2s infinite;\r\n @media (min-width: 768) {\r\n width: 6rem;\r\n }\r\n }\r\n`;\r\n","module.exports = __webpack_public_path__ + \"static/media/background.f3b8b4bd.jpg\";","export const OrganizationReadinessStatusList = [\r\n { name: 'Verborgen', value: 'Hidden', color: '' },\r\n { name: 'Aangekondigd', value: 'Announced', color: '#e5247b' },\r\n { name: 'Binnenkort', value: 'ComingSoon', color: '#f08e20' },\r\n { name: 'Gereed', value: 'Ready', color: '#3380c2' }\r\n];\r\n","import { Subscription } from '../../models/Subscription';\r\nimport { OrganizationType } from 'src/models/Organization';\r\n\r\nexport enum ActionTypes { \r\nGET_SUBSCRIPTIONS = '[subscriptions] GET_SUBSCRIPTIONS'\r\n}\r\n\r\nexport interface SubscriptionState {\r\n loading: boolean;\r\n errors?: string;\r\n subscriptions: Subscription[];\r\n}\r\n\r\nexport type SubscriptionsListModel = {\r\n id: string;\r\n name: string;\r\n connectionLimit: number;\r\n organizationType: OrganizationType;\r\n};\r\n\r\n\r\n\r\n\r\n\r\n","export const OrganizationIdentifierType = ['ArxisId', 'GLN'];\r\n","import * as React from 'react';\r\nimport { useHistory } from 'react-router-dom';\r\nimport styled from '@emotion/styled';\r\nimport XNoContent from 'src/components/domain/XNoContent';\r\nimport NotFoundImage from 'src/style/images/404.svg';\r\nimport XGoBack from 'src/components/shared/XGoBack';\r\ninterface ErrorProps {\r\n title?: string;\r\n description?: string;\r\n}\r\n\r\nconst NotFoundPage: React.FC = props => {\r\n const history = useHistory();\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n
Oooooooooops page not found!
\r\n \r\n history.goBack()}>\r\n Go back\r\n {' '}\r\n \r\n
\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default NotFoundPage;\r\n\r\nconst XFourOFour = styled.div`\r\n height: 100vw;\r\n width: 100vw;\r\n`;\r\n\r\nconst XContainer = styled.div`\r\n padding-top: 6em;\r\n display: flex;\r\n justify-content: center;\r\n`;\r\n\r\nconst XCard = styled.div`\r\n background: #fff;\r\n border-radius: 6px;\r\n height: fit-content;\r\n width: 50%;\r\n`;\r\n","import { css } from '@emotion/core';\r\nimport styled from '@emotion/styled';\r\nimport * as React from 'react';\r\nimport { mediaQuery } from 'src/style/MediaQueries';\r\n\r\ntype OwnProps = {\r\n absolute?: boolean;\r\n};\r\n\r\ntype AllProps = OwnProps;\r\n\r\nconst XFooter: React.SFC = props => {\r\n return (\r\n \r\n {props.children}\r\n \r\n );\r\n};\r\n\r\nexport default XFooter;\r\n\r\nconst FooterContainer = styled('div')({}, (props: any) => ({\r\n borderTop: '1px solid #C7C8C8',\r\n // background: 'rgb(245,245,245)',\r\n width: '100%',\r\n height: 'auto',\r\n position: props.absolute && 'absolute',\r\n bottom: '0',\r\n display: 'none',\r\n [mediaQuery[0]]: {\r\n display: 'inherit'\r\n }\r\n}));\r\n\r\nconst FooterConent = styled('div')({\r\n display: 'flex',\r\n flexDirection: 'row',\r\n fontSize: '11px',\r\n color: '#525252',\r\n fontWeight: 'bold',\r\n margin: '15px 25px'\r\n});\r\n\r\nconst FooterLabel = styled('label')({\r\n marginLeft: '5px'\r\n});\r\n","import * as React from 'react';\r\nimport XPopup from './XPopup';\r\nimport { Translation } from 'react-i18next';\r\n\r\ntype OwnProps = {\r\n title: string;\r\n text: string;\r\n open: boolean;\r\n onConfirm: () => void;\r\n onCancel: () => void;\r\n};\r\n\r\ntype AllProps = OwnProps;\r\n\r\nconst XConfirmation: React.FC = props => {\r\n return (\r\n \r\n {t => (\r\n \r\n {props.text}\r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default XConfirmation;\r\n","import { css } from '@emotion/core';\r\nimport styled from '@emotion/styled';\r\nimport ChevronLeftRoundedIcon from '@material-ui/icons/ChevronLeftRounded';\r\nimport ChevronRightRoundedIcon from '@material-ui/icons/ChevronRightRounded';\r\nimport animateScrollTo from 'animated-scroll-to';\r\nimport * as React from 'react';\r\nimport { mediaQuery } from 'src/style/MediaQueries';\r\n\r\ntype OwnProps = {\r\n horizontal?: boolean;\r\n minwidth?: boolean;\r\n wrap?: boolean;\r\n style?: any;\r\n};\r\n\r\ntype AllProps = OwnProps;\r\n\r\ntype State = {\r\n currentOffset: number;\r\n atEnd: boolean;\r\n contentFits: boolean;\r\n};\r\n\r\nclass XList extends React.Component {\r\n private listview: React.RefObject;\r\n\r\n constructor(props: AllProps) {\r\n super(props);\r\n this.listview = React.createRef();\r\n this.state = {\r\n currentOffset: 0,\r\n atEnd: true,\r\n contentFits: true\r\n };\r\n }\r\n\r\n public componentDidMount = () => {\r\n this.updateFitState();\r\n window.addEventListener('resize', this.updateDimensions);\r\n };\r\n\r\n public componentWillUnmount = () => {\r\n window.removeEventListener('resize', this.updateDimensions);\r\n };\r\n\r\n public updateDimensions = () => {\r\n this.updateOffset();\r\n };\r\n\r\n public scroll = (direction: number) => {\r\n if (this.listview.current) {\r\n let pos = this.state.currentOffset;\r\n pos += (direction > 0 ? 1 : -1) * this.listview.current.clientWidth - 30;\r\n animateScrollTo(pos, {\r\n elementToScroll: this.listview.current,\r\n cancelOnUserAction: true\r\n }).then(this.updateOffset);\r\n this.setState({ currentOffset: pos });\r\n }\r\n };\r\n\r\n public updateOffset = () => {\r\n if (this.listview.current) {\r\n this.setState({ currentOffset: this.listview.current.scrollLeft }, this.updateFitState);\r\n }\r\n };\r\n\r\n public updateFitState = () => {\r\n if (this.listview.current) {\r\n this.setState({\r\n contentFits: this.listview.current.clientWidth > this.listview.current.scrollWidth,\r\n atEnd:\r\n this.state.currentOffset >\r\n this.listview.current.scrollWidth - this.listview.current.clientWidth - 10\r\n });\r\n }\r\n };\r\n\r\n public render() {\r\n const content = (\r\n
\r\n {' '}\r\n \r\n {this.props.children}\r\n \r\n {this.props.horizontal ? (\r\n \r\n {this.state.currentOffset > 0 ? (\r\n this.scroll(-1)}>\r\n \r\n \r\n ) : null}\r\n {!this.state.contentFits && !this.state.atEnd ? (\r\n this.scroll(1)}>\r\n \r\n \r\n ) : null}\r\n \r\n ) : null}\r\n
\r\n );\r\n if (this.props.horizontal) {\r\n return {content};\r\n } else {\r\n return content;\r\n }\r\n }\r\n}\r\n\r\nexport default XList;\r\n\r\nconst Wrapper = styled('div')({\r\n position: 'relative',\r\n ':hover .paddles': {\r\n opacity: 1\r\n }\r\n});\r\n\r\nconst Paddles = styled('div')({\r\n opacity: 0,\r\n transition: 'opacity .2s ease-in-out'\r\n});\r\n\r\nconst Paddle = styled('div')({\r\n position: 'absolute',\r\n top: 0,\r\n bottom: 0,\r\n width: 'calc(3em + 3%)',\r\n background: '#fff',\r\n cursor: 'pointer'\r\n});\r\n\r\nconst PaddleIcon = css({\r\n left: 'calc(50% - .5em)',\r\n top: 'calc(50% - 60px)',\r\n position: 'absolute'\r\n});\r\n\r\nconst LeftPaddle = styled(Paddle)({\r\n left: 0,\r\n background: 'linear-gradient(to right, rgba(255,255,255,1) , rgba(255,255,255,0) )'\r\n});\r\n\r\nconst RightPaddle = styled(Paddle)({\r\n right: 0,\r\n background: 'linear-gradient(to left, rgba(255,255,255,1) , rgba(255,255,255,0))'\r\n});\r\n\r\nconst List = styled('div')(\r\n {\r\n display: 'flex',\r\n width: '100%',\r\n WebkitOverflowScrolling: 'touch'\r\n },\r\n (props: AllProps) => ({\r\n flexDirection: props.horizontal ? 'row' : 'column',\r\n flexWrap: props.wrap ? 'wrap' : 'nowrap',\r\n overflowX: props.horizontal ? 'scroll' : 'hidden',\r\n overflowY: !props.horizontal ? 'scroll' : 'hidden',\r\n [mediaQuery[2]]: {\r\n overflowX: props.horizontal ? 'auto' : 'hidden',\r\n overflowY: !props.horizontal ? 'auto' : 'hidden'\r\n }\r\n })\r\n);\r\n","module.exports = __webpack_public_path__ + \"static/media/informatief_verticaal_en.9fe96e51.svg\";","module.exports = __webpack_public_path__ + \"static/media/informatief_verticaal_nl.2c04d83f.svg\";","module.exports = __webpack_public_path__ + \"static/media/add.64a9fa85.svg\";","module.exports = __webpack_public_path__ + \"static/media/check.16525157.svg\";","module.exports = __webpack_public_path__ + \"static/media/1_word lid.2df5438d.svg\";","module.exports = __webpack_public_path__ + \"static/media/2_maak connectie.a19a30b6.svg\";","import { ActionTypes } from './types'\r\n\r\nexport type ChangeLanguage = {\r\n type: ActionTypes.CHANGE_LANGUAGE;\r\n payload: string;\r\n};\r\n\r\nexport const changeLanguage = (language: string,): ChangeLanguage => ({\r\n type: ActionTypes.CHANGE_LANGUAGE,\r\n payload: language\r\n});\r\n","import { createSelector } from 'reselect';\r\nimport { ProcessingStatus, PublicationStatus } from 'src/models/Catalog';\r\nimport { ApplicationState } from '..';\r\nimport { CatalogState } from './types';\r\n\r\nexport const getCatalogs = (state: CatalogState) => state;\r\nexport const getNewCatalog = (state: CatalogState) => state.addCatalog;\r\nexport const catalogs = (state: CatalogState) => state.data;\r\nexport const getId = (state: CatalogState, id: string) => (state.data.all || []).filter(x => x.id === id);\r\n\r\nexport const getCatalogState = createSelector(getCatalogs, s => s.data);\r\nexport const newCatalogState = createSelector(getNewCatalog, s => s);\r\nexport const getCatalogById = createSelector(getId, s => s[0]);\r\nexport const getMyCatalogs = createSelector(getCatalogs, s => s.data.my);\r\n\r\nexport const getMyCatalogsRequiringAction = (state: ApplicationState) => \r\n (state.organizations.myOrganization?.catalogs || []).filter(c => \r\n c.processingStatus === ProcessingStatus.ValidationFailed ||\r\n ((c.processingStatus === ProcessingStatus.Validated || \r\n c.processingStatus === ProcessingStatus.ValidatedWithWarnings) && \r\n c.publicationStatus === PublicationStatus.Unpublished)\r\n )\r\n\r\n","import styled from '@emotion/styled';\r\nimport InboxIcon from '@material-ui/icons/Inbox';\r\nimport DataIcon from '@material-ui/icons/SettingsEthernet';\r\nimport ArrowLeftIcon from '@material-ui/icons/ArrowLeft';\r\nimport * as React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { Link, RouteComponentProps } from 'react-router-dom';\r\nimport { Catalog } from 'src/models/Catalog';\r\nimport { Message } from 'src/models/Message';\r\nimport { OrganizationModel } from 'src/models/Organization';\r\nimport { RequestModel } from 'src/models/Request';\r\nimport { NavPortalPages } from 'src/pages/Routes';\r\nimport { ApplicationState } from 'src/store';\r\nimport { AuthenticationAccount } from 'src/store/authentication/types';\r\nimport { getMyCatalogsRequiringAction } from 'src/store/catalogs/selectors';\r\nimport { getMyOrganizationThunk } from 'src/store/organizations/actions';\r\nimport { getRequestsThunk } from 'src/store/requests/actions';\r\nimport { activeIncommingRequest } from 'src/store/requests/selectors';\r\n\r\nimport Logo from 'src/style/images/logos/main.svg';\r\nimport { mediaQuery } from 'src/style/MediaQueries';\r\nimport XBadge from '../layout/XBadge';\r\nimport XButton from '../layout/XButton';\r\n\r\nimport SearchIcon from '../../style/images/icons/Search.svg';\r\nimport UserIcon from '../../style/images/icons/User.svg';\r\nimport ShareIcon from '../../style/images/icons/Share.svg';\r\nimport PurchaseOrderIcon from '../../style/images/icons/PO.svg';\r\n\r\nimport i18n from 'src/i18n';\r\n\r\ntype StateProps = {\r\n messages: Message[];\r\n account: AuthenticationAccount;\r\n activeIncommingRequest: RequestModel[];\r\n catalogRequiringAction: Catalog[];\r\n};\r\n\r\ntype DispatchProps = {\r\n getRequests: () => void;\r\n getMyOrganization: () => void;\r\n};\r\n\r\ntype AllProps = StateProps & DispatchProps & RouteComponentProps;\r\n\r\nclass XNavigationBar extends React.Component {\r\n public async componentDidMount() {\r\n this.props.getRequests();\r\n this.props.getMyOrganization();\r\n }\r\n\r\n public getName(name: string) {\r\n switch (name) {\r\n case 'Organization':\r\n return i18n.t('nav.myArxis');\r\n case 'Account':\r\n return i18n.t('nav.myProfile');\r\n case 'Explore':\r\n return i18n.t('nav.explore');\r\n }\r\n return name;\r\n }\r\n\r\n public getIcon(path: string, active: boolean) {\r\n switch (path) {\r\n case '/app/explore':\r\n return ;\r\n case '/app/profile':\r\n return ;\r\n case '/app/dealer-portal':\r\n return ;\r\n case '/app/manage':\r\n return ;\r\n case '/app/my':\r\n const requestCount = this.props.activeIncommingRequest.length;\r\n const catalogCount = this.props.catalogRequiringAction.length;\r\n const totalCount = requestCount + catalogCount;\r\n return (\r\n
\r\n {totalCount > 0 && }\r\n \r\n
\r\n );\r\n case '/app/inbox':\r\n return (\r\n
\r\n \r\n
\r\n );\r\n }\r\n return null;\r\n }\r\n\r\n public render() {\r\n const pages = NavPortalPages.filter(\r\n p =>\r\n p.shouldShowCallback === undefined ||\r\n p.shouldShowCallback(this.props.account.isAdmin, this.props.account.organizationType)\r\n );\r\n\r\n return (\r\n \r\n \r\n {pages.map(route => {\r\n const active = this.props.location.pathname.startsWith(route.path);\r\n return route.path === '/app/dealer-portal' &&\r\n window.location.href.match(/(arxis.io)/) ? null : (\r\n \r\n
\r\n \r\n \r\n {this.getIcon(route.path, active)}\r\n {route.title && this.getName(route.title)}\r\n \r\n \r\n {active && (\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\nconst mapStateToProps = (state: ApplicationState): StateProps => {\r\n return {\r\n messages: state.messages.messages,\r\n account: state.authentication.account,\r\n activeIncommingRequest: activeIncommingRequest(state),\r\n catalogRequiringAction: getMyCatalogsRequiringAction(state)\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch: any): DispatchProps => ({\r\n getRequests: () => dispatch(getRequestsThunk()),\r\n getMyOrganization: () => dispatch(getMyOrganizationThunk())\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(XNavigationBar);\r\n\r\nconst NavBarContainer = styled('div')({\r\n backgroundColor: '#fff',\r\n width: '100%',\r\n position: 'relative'\r\n});\r\nconst NavLabel = styled('label')({\r\n letterSpacing: 'normal'\r\n});\r\n\r\nconst NavBarContent = styled('div')({\r\n display: 'flex',\r\n flexDirection: 'row',\r\n justifyContent: 'center',\r\n [mediaQuery[0]]: {\r\n flexDirection: 'column'\r\n }\r\n});\r\n\r\nconst NavBarButtonContent = styled('div')({\r\n display: 'flex',\r\n flexDirection: 'column',\r\n justifyContent: 'center',\r\n paddingTop: '8px',\r\n '& #navLabel': {\r\n textTransform: 'none',\r\n textDecoration: 'none',\r\n\r\n fontSize: '10px',\r\n alignSelf: 'center'\r\n }\r\n});\r\n\r\nconst NavLink = styled(Link)({\r\n flex: 1,\r\n textAlign: 'center',\r\n textTransform: 'none',\r\n textDecoration: 'none'\r\n});\r\n\r\nconst Data = styled(DataIcon)({}, (props: any) => ({\r\n width: '30px',\r\n height: '30px',\r\n alignSelf: 'center'\r\n}));\r\n\r\nconst Inbox = styled(InboxIcon)({\r\n width: '35px',\r\n height: '35px',\r\n alignSelf: 'center'\r\n});\r\n\r\nconst Exchange = styled('div')({}, (props: any) => ({\r\n backgroundColor: props.active ? '#E7217B' : '#737373',\r\n mask: 'url(' + props.image + ') no-repeat center',\r\n width: '30px',\r\n height: '30px',\r\n margin: 'auto'\r\n}));\r\n\r\nconst Search = styled('div')({}, (props: any) => ({\r\n backgroundColor: props.active ? '#E7217B' : '#737373',\r\n mask: 'url(' + props.image + ') no-repeat center',\r\n width: '30px',\r\n height: '30px',\r\n margin: 'auto'\r\n}));\r\n\r\nconst Account = styled('div')({}, (props: any) => ({\r\n backgroundColor: props.active ? '#E7217B' : '#737373',\r\n mask: 'url(' + props.image + ') no-repeat center',\r\n width: '30px',\r\n height: '30px',\r\n margin: 'auto'\r\n}));\r\n\r\nconst PurchaseOrder = styled('div')({}, (props: any) => ({\r\n backgroundColor: props.active ? '#E7217B' : '#737373',\r\n mask: 'url(' + props.image + ') no-repeat center',\r\n width: '30px',\r\n height: '30px',\r\n margin: 'auto'\r\n}));\r\n","import styled from '@emotion/styled';\r\nimport { IconButton, Snackbar, Tooltip } from '@material-ui/core';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport Popover from '@material-ui/core/Popover';\r\nimport LogoutIcon from '@material-ui/icons/ExitToApp';\r\nimport * as React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { Link, Route, RouteComponentProps, Switch, withRouter } from 'react-router-dom';\r\nimport BusinessIcon from '@material-ui/icons/AccountCircle';\r\nimport XFooter from 'src/components/layout/XFooter';\r\nimport { mediaQuery } from 'src/style/MediaQueries';\r\nimport HelpIcon from '@material-ui/icons/ContactSupportOutlined';\r\nimport { ApplicationState } from 'src/store';\r\nimport {\r\n hideConfirmation,\r\n hideNotification,\r\n showNotification,\r\n showSnackbar\r\n} from 'src/store/layout/actions';\r\nimport { ConfirmationState, NotificationState, SnackbarState } from 'src/store/layout/types';\r\n\r\nimport XConfirmation from 'src/components/layout/XConfirmation';\r\nimport XToast from 'src/components/layout/XToast';\r\nimport { ApiResult } from 'src/helpers/apiClient';\r\nimport { getMyAccountThunk } from 'src/store/accounts/actions';\r\nimport { AccountModel } from 'src/store/accounts/types';\r\nimport { AuthenticationAccount } from 'src/store/authentication/types';\r\nimport { PortalPages } from '../pages/Routes';\r\nimport { MyOrganizationModel, Organization } from 'src/models/Organization';\r\nimport { getMyOrganizationThunk } from 'src/store/organizations/actions';\r\nimport { generateAvatar } from 'src/helpers/avatarGenerator';\r\nimport NotFoundPage from 'src/pages/system/NotFoundPage';\r\nimport NotFoundCard from 'src/pages/system/NotFoundCard';\r\nimport { Translation } from 'react-i18next';\r\nimport PowerSettingsNewIcon from '@material-ui/icons/PowerSettingsNew';\r\nimport Logo from 'src/style/images/logos/main.svg';\r\n\r\n// Props\r\ntype State = {\r\n expanded: boolean;\r\n accountPopoverShow: boolean;\r\n anchorEl: HTMLElement | null;\r\n helpPopoverShow: boolean;\r\n};\r\n\r\ntype StateProps = {\r\n snackbar: SnackbarState;\r\n notification: NotificationState;\r\n confirmation: ConfirmationState;\r\n account: AuthenticationAccount;\r\n myAccount?: AccountModel;\r\n myOrganization?: MyOrganizationModel;\r\n};\r\n\r\ntype OwnProps = {\r\n collapsed: boolean;\r\n};\r\n\r\ntype DispatchProps = {\r\n showSnackbar: (message: string) => void;\r\n showNotification: (message: string) => void;\r\n hideNotification: () => void;\r\n hideConfirmation: () => void;\r\n getMyAccount: () => Promise;\r\n getMyOrganization: () => void;\r\n};\r\n\r\ntype AllProps = StateProps & DispatchProps & OwnProps & RouteComponentProps;\r\n\r\n// Styles\r\n\r\nconst LayoutContainer = styled('div')({\r\n display: 'flex'\r\n});\r\n\r\nconst MainContainer = styled('div')({\r\n backgroundImage: 'url(' + require('../style/images/background.jpg') + ')',\r\n backgroundSize: 'cover',\r\n backgroundPosition: 'center',\r\n backgroundRepeat: 'no-repeat',\r\n overflowY: 'auto',\r\n overflowX: 'hidden',\r\n position: 'fixed',\r\n top: '80px',\r\n left: '0',\r\n right: '0',\r\n bottom: '0',\r\n [mediaQuery[0]]: {\r\n position: 'relative',\r\n height: '100vh',\r\n flex: '1',\r\n top: 'inherit'\r\n }\r\n});\r\n\r\nconst Navbar = styled('div')({\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n flexDirection: 'column',\r\n background: '#fff',\r\n width: '100vw',\r\n height: '80px',\r\n position: 'relative',\r\n overflow: 'hidden',\r\n [mediaQuery[0]]: {\r\n width: '110px',\r\n height: '100vh'\r\n }\r\n});\r\n\r\nconst SubNavbar = styled('div')({\r\n height: '100vh',\r\n position: 'fixed',\r\n top: '80px',\r\n zIndex: 1,\r\n transform: 'translateX(-100%)',\r\n transition: '.2s ease-in-out all',\r\n [mediaQuery[0]]: {\r\n top: 'unset',\r\n transform: 'unset',\r\n position: 'relative'\r\n }\r\n});\r\nconst NavbarHandle = styled('span')({\r\n display: 'block',\r\n position: 'absolute',\r\n padding: '15px',\r\n background: 'white',\r\n right: 0,\r\n transform: 'translateX(100%)',\r\n bottom: '20%',\r\n zIndex: 1,\r\n cursor: 'pointer',\r\n borderTopRightRadius: '5px',\r\n borderBottomRightRadius: '5px',\r\n [mediaQuery[0]]: {\r\n display: 'none'\r\n }\r\n});\r\n\r\nconst UserIcon = styled('div')({\r\n width: '32px',\r\n height: '32px',\r\n backgroundSize: 'cover',\r\n backgroundPosition: '50%',\r\n border: 'solid 2px white',\r\n borderRadius: '50%',\r\n cursor: 'pointer'\r\n});\r\n\r\nconst OffIcon = styled(PowerSettingsNewIcon)({}, (props: any) => ({\r\n color: props.impersonated ? '#E7217B' : '#737373',\r\n width: '30px',\r\n height: '30px',\r\n cursor: 'pointer'\r\n}));\r\n\r\nconst HelperIcon = styled(HelpIcon)({}, (props: any) => ({\r\n color: props.impersonated ? '#E7217B' : '#737373',\r\n width: '32px',\r\n height: '32px',\r\n cursor: 'pointer'\r\n}));\r\n\r\n// Layout, or Shell, or Skeleton for Main App (authenticated)\r\nclass PortalLayout extends React.Component {\r\n constructor(props: AllProps) {\r\n super(props);\r\n this.state = {\r\n expanded: false,\r\n accountPopoverShow: false,\r\n anchorEl: null,\r\n helpPopoverShow: false\r\n };\r\n }\r\n public handleCloseNotification = (): void => {\r\n this.props.hideNotification();\r\n };\r\n\r\n public handleConfirm = () => {\r\n this.props.hideConfirmation();\r\n this.props.confirmation.onConfirm();\r\n };\r\n\r\n public componentDidMount() {\r\n if (!this.props.account.accountId) {\r\n this.props.history.replace('/login/' + encodeURIComponent(this.props.location.pathname));\r\n return;\r\n }\r\n\r\n this.props.getMyAccount();\r\n this.props.getMyOrganization();\r\n }\r\n\r\n public componentWillReceiveProps(props: AllProps) {\r\n if (!props.account.accountId) {\r\n this.props.history.replace('/login/' + encodeURIComponent(this.props.location.pathname));\r\n }\r\n }\r\n\r\n public handleAccountPopover(e: React.MouseEvent) {\r\n e.preventDefault();\r\n this.setState({\r\n accountPopoverShow: !this.state.accountPopoverShow,\r\n anchorEl: e.currentTarget\r\n });\r\n }\r\n\r\n public handleAccountPopoverClose() {\r\n this.setState({\r\n accountPopoverShow: false\r\n });\r\n }\r\n\r\n public handleHelpPopover(e: React.MouseEvent) {\r\n e.preventDefault();\r\n this.setState({\r\n helpPopoverShow: !this.state.helpPopoverShow,\r\n anchorEl: e.currentTarget\r\n });\r\n }\r\n\r\n public handleHelpPopoverClose() {\r\n this.setState({\r\n helpPopoverShow: false\r\n });\r\n }\r\n\r\n public render() {\r\n if (!this.props.account.accountId) {\r\n return null;\r\n }\r\n\r\n const portalPages = PortalPages.filter(\r\n p => p.shouldMapCallback === undefined || p.shouldMapCallback(this.props.account.isAdmin)\r\n );\r\n\r\n const impersonated = sessionStorage.getItem('impersonated') || false;\r\n\r\n let avatarImgUrl = this.props.myOrganization?.organization.imageURL;\r\n if (avatarImgUrl === undefined || avatarImgUrl === null)\r\n avatarImgUrl = generateAvatar(\r\n this.props.myOrganization?.organization.name || this.props.myAccount?.firstName || '',\r\n 100\r\n );\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n {portalPages.map((route, index) => {\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 {t => (\r\n
{t('help.contact')}: 
\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 {this.props.myAccount?.firstName} {this.props.myAccount?.lastName}\r\n \r\n
\r\n {this.props.myAccount?.organizationName}\r\n
\r\n \r\n {t => (\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 {portalPages.length > 1 && (\r\n \r\n
\r\n \r\n {portalPages.map((route, index) => {\r\n return (\r\n \r\n );\r\n })}\r\n \r\n \r\n
\r\n this.setState({ expanded: !this.state.expanded })}>\r\n {'||'}\r\n \r\n
\r\n )}\r\n \r\n \r\n {portalPages.map((route, index) => {\r\n return (\r\n \r\n );\r\n })}\r\n \r\n \r\n \r\n this.handleConfirm()}\r\n onCancel={() => this.props.hideConfirmation()}\r\n />\r\n this.handleCloseNotification()}\r\n autoHideDuration={200000}>\r\n this.handleCloseNotification()}\r\n type={this.props.notification.type}\r\n message={this.props.notification.message}\r\n />\r\n \r\n {this.props.snackbar.message}}\r\n action={[\r\n \r\n \r\n \r\n ]}\r\n />\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state: ApplicationState): StateProps => {\r\n return {\r\n snackbar: state.layout.snackbar,\r\n notification: state.layout.notification,\r\n confirmation: state.layout.confirmation,\r\n account: state.authentication.account,\r\n myAccount: state.account.my,\r\n myOrganization: state.organizations.myOrganization\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch: any): DispatchProps => ({\r\n showSnackbar: (message: string) => {\r\n dispatch(showSnackbar(message));\r\n },\r\n showNotification: (message: string) => {\r\n dispatch(showNotification(message));\r\n },\r\n hideConfirmation: () => dispatch(hideConfirmation()),\r\n hideNotification: () => {\r\n dispatch(hideNotification());\r\n },\r\n getMyAccount: () => dispatch(getMyAccountThunk()),\r\n getMyOrganization: () => dispatch(getMyOrganizationThunk())\r\n});\r\n\r\nexport default withRouter(connect(mapStateToProps, mapDispatchToProps)(PortalLayout) as any);\r\n\r\nconst Connections = styled(BusinessIcon)({\r\n width: '35px',\r\n height: '35px',\r\n alignSelf: 'center'\r\n});\r\n\r\nconst FooterWrapper = styled.div`\r\n display: flex;\r\n flex: 1 1 345px;\r\n align-items: space-between;\r\n justify-content: center;\r\n`;\r\n\r\nexport const XLogo = styled('img')({\r\n left: '10px',\r\n right: '10px',\r\n top: 'calc(50% - 100px)',\r\n marginLeft: 'auto',\r\n marginRight: 'auto',\r\n maxHeight: '62.5px',\r\n maxWidth: '62.5px',\r\n animationDuration: '.6s',\r\n marginBottom: '10px',\r\n marginTop: '20px',\r\n display: 'none',\r\n [mediaQuery[0]]: {\r\n display: 'inherit'\r\n },\r\n filter: `drop-shadow(4px 4px 8px #58585883)`\r\n});\r\n\r\nconst NavLink = styled(Link)({\r\n flex: 1,\r\n textAlign: 'center',\r\n textTransform: 'none',\r\n textDecoration: 'none'\r\n});\r\n","import { Snackbar } from '@material-ui/core';\r\nimport * as React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { Redirect, Route, Switch, withRouter } from 'react-router';\r\nimport { Dispatch } from 'redux';\r\nimport XToast from 'src/components/layout/XToast';\r\nimport { PublicPages } from 'src/pages/Routes';\r\nimport { ApplicationState } from 'src/store';\r\nimport { hideNotification, showNotification, showSnackbar } from 'src/store/layout/actions';\r\nimport { NotificationState, SnackbarState } from 'src/store/layout/types';\r\n\r\ntype StateProps = {\r\n snackbar: SnackbarState;\r\n notification: NotificationState;\r\n isAuthenticated: boolean;\r\n};\r\n\r\ntype DispatchProps = {\r\n showSnackbar: (message: string) => void;\r\n showNotification: (message: string) => void;\r\n hideNotification: () => void;\r\n};\r\n\r\ntype OwnProps = {};\r\n\r\ntype AllProps = StateProps & DispatchProps & OwnProps;\r\n\r\n// Layout, or Shell, or Skeleton for login and register (unauthenticated)\r\nclass PublicLayout extends React.Component {\r\n public render() {\r\n return (\r\n
\r\n \r\n {PublicPages.map((route, index) => {\r\n return (\r\n \r\n );\r\n })}\r\n\r\n } />\r\n \r\n \r\n this.props.hideNotification()}\r\n type={this.props.notification.type}\r\n message={this.props.notification.message}\r\n />\r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state: ApplicationState): StateProps => {\r\n return {\r\n snackbar: state.layout.snackbar,\r\n notification: state.layout.notification,\r\n isAuthenticated: state.authentication.isAuthenticated\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch: Dispatch): DispatchProps => ({\r\n showSnackbar: (message: string) => {\r\n dispatch(showSnackbar(message));\r\n },\r\n showNotification: (message: string) => {\r\n dispatch(showNotification(message));\r\n },\r\n hideNotification: () => {\r\n dispatch(hideNotification());\r\n }\r\n});\r\n\r\nexport default withRouter(connect(mapStateToProps, mapDispatchToProps)(PublicLayout) as any);\r\n","import styled from '@emotion/styled';\r\nimport * as React from 'react';\r\n\r\ntype OwnProps = {\r\n onClick?: any;\r\n text?: string;\r\n};\r\n\r\ntype AllProps = OwnProps;\r\n\r\nconst XSmallButton: React.SFC = props => {\r\n return (\r\n
\r\n \r\n {props.text}\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default XSmallButton;\r\n\r\nconst SmallButton = styled('button')`\r\n width: 100%;\r\n cursor: pointer;\r\n border: none;\r\n background: #3280c3;\r\n border-radius: 4px;\r\n padding: 2px 10px;\r\n font-weight: 600;\r\n color: #ffffff;\r\n`;\r\n","import * as React from 'react';\r\nimport { connect } from 'react-redux';\r\n\r\nimport styled from '@emotion/styled';\r\nimport { Link } from 'react-router-dom';\r\nimport XCatalog from 'src/components/domain/XCatalog';\r\nimport XNoContent from 'src/components/domain/XNoContent';\r\nimport XGrid from 'src/components/layout/XGrid';\r\nimport XSmallButton from 'src/components/layout/XSmallButton';\r\nimport XPageContent from 'src/components/layout/XPageContent';\r\nimport { XPaper } from 'src/components/layout/XPaper';\r\nimport { Catalog, PublicationStatus } from 'src/models/Catalog';\r\nimport { ApplicationState } from 'src/store';\r\nimport { AuthenticationAccount } from 'src/store/authentication/types';\r\nimport { CatalogSort, getCatalogsThunk } from 'src/store/catalogs/actions';\r\n\r\nimport GridIcon from '@material-ui/icons/Apps';\r\nimport ListIcon from '@material-ui/icons/FormatListBulleted';\r\nimport { XImage, XImageContainer, XImageOverlay } from 'src/components/layout/XImage';\r\nimport XPaperHeader from 'src/components/layout/XPaperHeader';\r\nimport XScrollView from 'src/components/layout/XScrollView';\r\nimport { generateAvatar } from 'src/helpers/avatarGenerator';\r\nimport { formatDateToString, getImageUrl } from 'src/helpers/formatHelpers';\r\nimport { changeView } from 'src/store/layout/actions';\r\nimport { ViewType } from 'src/store/layout/types';\r\nimport EmptyImage from '../../style/images/empty.svg';\r\nimport { LinearProgress, Switch, Tooltip } from '@material-ui/core';\r\nimport { CloudDownload } from '@material-ui/icons';\r\nimport { XSecActionButton } from 'src/components/layout/XActionButton';\r\nimport { XFilterBar } from 'src/components/layout/XFilterBar';\r\nimport XSearchBar from 'src/components/layout/XSearchBar';\r\nimport { Translation } from 'react-i18next';\r\nimport { Skeleton } from '@material-ui/lab';\r\nimport ErrorBoundary from 'src/components/shared/ErrorBoundary';\r\n\r\ntype StateProps = {\r\n catalogs: Catalog[];\r\n account: AuthenticationAccount;\r\n loading: boolean;\r\n view: ViewType;\r\n};\r\n\r\ntype DispatchProps = {\r\n getCatalogs(sort: CatalogSort): () => void;\r\n changeView(type: ViewType): () => void;\r\n};\r\n\r\ntype OwnProps = {};\r\n\r\ntype State = {\r\n currentOffset: number;\r\n search: string;\r\n};\r\n\r\ntype AllProps = StateProps & DispatchProps & OwnProps;\r\n\r\nclass CatalogsPage extends React.Component {\r\n constructor(props: AllProps) {\r\n super(props);\r\n this.state = {\r\n currentOffset: 0,\r\n search: ''\r\n };\r\n }\r\n\r\n public componentDidMount() {\r\n this.props.getCatalogs('all');\r\n }\r\n\r\n public switchView(view) {\r\n this.props.changeView(view);\r\n }\r\n\r\n public handleScrollBottom() {\r\n if (this.state.currentOffset >= this.props.catalogs.length) return;\r\n this.setState({ currentOffset: this.state.currentOffset + 30 });\r\n }\r\n\r\n public render() {\r\n const pageSize = 1000;\r\n const hasDownloadedCatalogs = this.props.catalogs.some(x => x.downloaded);\r\n const catalogs = this.props.catalogs\r\n .filter(\r\n c =>\r\n this.state.search.length === 0 ||\r\n c.title.toLowerCase().indexOf(this.state.search.toLowerCase()) !== -1\r\n )\r\n // Only show the actual published catalogs of suppliers\r\n .filter(c => c.publicationStatus == PublicationStatus.Published);\r\n const paged = catalogs.slice(0, this.state.currentOffset + pageSize);\r\n return (\r\n \r\n \r\n \r\n \r\n {t => (\r\n \r\n )}\r\n \r\n {this.props.catalogs.length !== 0 && (\r\n \r\n
\r\n \r\n {t => (\r\n \r\n this.setState({ search: e.target.value.toLowerCase() })\r\n }>\r\n )}\r\n \r\n
\r\n \r\n {t => (\r\n this.switchView(this.props.view === 'list' ? 'grid' : 'list')}>\r\n {this.props.view === 'list' ? (\r\n \r\n ) : (\r\n \r\n )}\r\n {this.props.view === 'list' ? 'Grid' : t('organizations.List')}\r\n \r\n )}\r\n \r\n
\r\n )}\r\n\r\n {this.props.catalogs.length !== 0 && paged.length === 0 && (\r\n \r\n {t => }\r\n \r\n )}\r\n {!this.state.search.length && this.props.catalogs.length === 0 && (\r\n \r\n
\r\n

\r\n Je hebt nog geen beschikbare catalogi\r\n

\r\n
\r\n
\r\n
\r\n Waarom zie ik geen catalogi?\r\n
\r\n
1. Je hebt nog geen connectie met 1 of meerdere leveranciers
\r\n
2. Je levanciers hebben nog geen catalogi gepubliceerd
\r\n
3. Je hebt nog geen toegang gekregen tot 1 of meerdere catalogi
\r\n
\r\n Wat kan ik doen?\r\n
\r\n
\r\n
\r\n \r\n \r\n {t => }\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n )}\r\n this.handleScrollBottom()}>\r\n {this.props.view === 'grid' ? (\r\n \r\n {this.props.loading ? (\r\n Array.from({ length: 9 }).map((_, idx) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ))\r\n ) : (\r\n <>\r\n {paged.map(dp => (\r\n \r\n ))}\r\n \r\n )}\r\n \r\n ) : (\r\n
\r\n {this.props.loading ? (\r\n Array.from({ length: 6 }).map((_, idx) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ))\r\n ) : (\r\n <>\r\n {paged.map(c => (\r\n \r\n \r\n \r\n {\r\n e.target.onError = null;\r\n e.target.src = generateAvatar(c.title, 60);\r\n }}\r\n />\r\n {c.downloaded && (\r\n \r\n {t => (\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n )}\r\n \r\n \r\n \r\n {c.title}\r\n \r\n \r\n \r\n {c.organizationName}\r\n \r\n \r\n {c.downloads} downloads\r\n {formatDateToString(c.lastCreationDate)}\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\nconst mapStateToProps = (state: ApplicationState): StateProps => {\r\n return {\r\n catalogs: (state.catalogs.data.all || []),\r\n loading: state.catalogs.loading,\r\n account: state.authentication.account,\r\n view: state.layout.viewCatalogs\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch: any): DispatchProps => ({\r\n getCatalogs: (sort: CatalogSort) => dispatch(getCatalogsThunk(sort)),\r\n changeView: (type: ViewType) => dispatch(changeView('catalogs', type))\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(CatalogsPage);\r\n\r\nconst StyledPaper = styled(XPaper)`\r\n min-height: 300px;\r\n`;\r\n\r\nconst CatalogRow = styled.div`\r\n display: flex;\r\n margin: 4px 0;\r\n`;\r\n\r\nconst CatalogImage = styled.div`\r\n max-width: 75px;\r\n flex: 1;\r\n`;\r\n\r\nconst CatalogCell = styled.div`\r\n flex: 1;\r\n font-size: 14px;\r\n padding-top: 4px;\r\n`;\r\n\r\nconst CatalogTitle = styled(CatalogCell)`\r\n padding-left: 15px;\r\n font-weight: bold;\r\n`;\r\n\r\nconst XCatalogSmallSkeletton = styled.div`\r\n width: 33.333333333333336%;\r\n padding: 15px;\r\n display: flex;\r\n align-items: start;\r\n`;\r\n","import * as React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { RouteComponentProps } from 'react-router-dom';\r\n\r\nimport XPageRouter from 'src/components/shared/XPageRouter';\r\nimport { PageRoute } from 'src/models/Route';\r\nimport ShowCatalogPage from '../shared/ShowCatalogPage';\r\nimport CatalogsPage from './CatalogsPage';\r\n\r\ntype StateProps = {};\r\n\r\ntype DispatchProps = {};\r\n\r\ntype AllProps = StateProps & DispatchProps & RouteComponentProps;\r\n\r\nexport const CatalogsRoute: PageRoute = {\r\n path: `/app/explore/catalogs`,\r\n exact: true,\r\n component: CatalogsPage\r\n};\r\n\r\n// catalog\r\nexport const CatalogRoute: PageRoute = {\r\n path: `/app/explore/catalogs/:id`,\r\n exact: true,\r\n component: ShowCatalogPage\r\n};\r\n\r\nconst Routes: PageRoute[] = [CatalogsRoute, CatalogRoute];\r\n\r\nclass BrowseRouter extends React.Component {\r\n public render() {\r\n return ;\r\n }\r\n}\r\n\r\nconst mapStateToProps = (): StateProps => {\r\n return {};\r\n};\r\n\r\nconst mapDispatchToProps = (): DispatchProps => ({});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(BrowseRouter);\r\n","import styled from '@emotion/styled';\r\nimport * as React from 'react';\r\nimport XCheckbox from './XCheckbox';\r\nimport { XRowCell } from './XRow';\r\n\r\ntype OwnProps = {\r\n onToggle: (selected: boolean) => void;\r\n value?: boolean;\r\n};\r\n\r\ntype State = {\r\n value: boolean;\r\n};\r\n\r\nclass XSelectItem extends React.Component {\r\n constructor(props: OwnProps) {\r\n super(props);\r\n this.state = { value: this.props.value === undefined ? false : this.props.value === true };\r\n }\r\n\r\n public componentDidUpdate(prevProps: OwnProps) {\r\n if (prevProps.value !== this.props.value)\r\n this.setState({ value: this.props.value === undefined ? false : this.props.value === true });\r\n }\r\n\r\n public toggleInput() {\r\n const newValue = !this.state.value;\r\n this.setState({ value: newValue });\r\n this.props.onToggle(newValue);\r\n }\r\n\r\n public render() {\r\n return (\r\n \r\n this.toggleInput()}>\r\n
\r\n \r\n
\r\n \r\n {this.props.children}\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default XSelectItem;\r\n\r\nconst Row = styled.div`\r\n display: flex;\r\n`;\r\n","import * as React from 'react';\r\nimport { Countries } from 'src/constants/Countries';\r\nimport { Organization } from 'src/models/Organization';\r\nimport { XPaperLabel, XPaperText } from '../layout/XPaper';\r\n\r\ntype OwnProps = {\r\n organization: Organization;\r\n};\r\n\r\ntype AllProps = OwnProps;\r\n\r\nconst XOrganizationAddress: React.SFC = props => {\r\n return (\r\n
\r\n \r\n {props.organization.street} {props.organization.houseNumber}\r\n
\r\n {props.organization.postalCode},{props.organization.city}\r\n
\r\n {Countries.find(c => c.value === props.organization.country)?.name}\r\n
\r\n \r\n {props.organization.telephoneNumber}\r\n
\r\n {props.organization.website}\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default XOrganizationAddress;\r\n","import styled from '@emotion/styled';\r\nimport React from 'react';\r\nimport MediaQuery from 'react-responsive';\r\nimport { Link } from 'react-router-dom';\r\nimport { Catalog, PublicationStatus } from 'src/models/Catalog';\r\nimport { MyOrganizationModel, OrganizationModel } from 'src/models/Organization';\r\nimport { RequestModel } from 'src/models/Request';\r\nimport { CatalogRequestStatus } from 'src/store/requests/api';\r\nimport XButton from '../layout/XButton';\r\nimport { XContainer } from '../layout/XContainer';\r\nimport XFormButtons from '../layout/XFormButtons';\r\nimport XGrid from '../layout/XGrid';\r\nimport { XImageContainer } from '../layout/XImage';\r\nimport { XImage } from '../layout/XImage';\r\nimport { XPaperContainer, XPaperLabel, XPaperText } from '../layout/XPaper';\r\nimport { XRow, XRowCell } from '../layout/XRow';\r\nimport XSelectItem from '../layout/XSelectItem';\r\nimport XCatalog from './XCatalog';\r\nimport XOrganizationAddress from './XOrganizationAddress';\r\n\r\nimport EditIcon from '@material-ui/icons/Edit';\r\nimport { generateAvatar } from 'src/helpers/avatarGenerator';\r\nimport { getImageUrl } from 'src/helpers/formatHelpers';\r\nimport XPopup from '../layout/XPopup';\r\nimport XCatalogRow from './XCatalogRow';\r\nimport XOrganizationTitle from './XOrganizationTitle';\r\nimport XGoBack from '../shared/XGoBack';\r\nimport { EmailOutlined } from '@material-ui/icons';\r\nimport { XActionButton, XSecActionButton } from '../layout/XActionButton';\r\nimport { XActionStrip } from '../layout/XActionStrip';\r\nimport Skeleton from '@material-ui/lab/Skeleton';\r\nimport { Translation } from 'react-i18next';\r\nimport i18n from 'src/i18n';\r\n\r\ntype OwnProps = {\r\n loadingOrganization: boolean;\r\n loadingRequest: boolean;\r\n organization: OrganizationModel;\r\n myOrganization: MyOrganizationModel;\r\n catalogViewOffer?: RequestModel;\r\n history?: any;\r\n offerViewCatalogs: (catalogIds: string[]) => void;\r\n editViewCatalogRequest: (state: CatalogRequestStatus) => void;\r\n cancelRequest: () => void;\r\n};\r\n\r\ntype AllProps = OwnProps;\r\ntype State = {\r\n showConnectPopup: boolean;\r\n availableCatalogs: string[];\r\n};\r\n\r\nclass XRetailerDetails extends React.Component {\r\n constructor(props: AllProps) {\r\n super(props);\r\n this.state = {\r\n showConnectPopup: false,\r\n availableCatalogs: []\r\n };\r\n }\r\n\r\n public toggleCatalog(catalog: Catalog, checked: boolean) {\r\n const current = this.state.availableCatalogs;\r\n if (checked) {\r\n current.push(catalog.id);\r\n this.setState({ availableCatalogs: current });\r\n } else this.setState({ availableCatalogs: current.splice(current.indexOf(catalog.id), 1) });\r\n }\r\n\r\n public getButtonState(props: OwnProps) {\r\n const isAdmin = props.myOrganization.organization.isAdmin;\r\n const connectRequest = props.catalogViewOffer?.connectRequest;\r\n const organizationConnection = props.myOrganization.organizationConnections.find(\r\n dc =>\r\n (dc.sourceOrganizationId === props.myOrganization.organization.id &&\r\n dc.targetOrganizationId === props.organization.organization.id) ||\r\n (dc.targetOrganizationId === props.myOrganization.organization.id &&\r\n dc.sourceOrganizationId === props.organization.organization.id)\r\n );\r\n\r\n if (isAdmin)\r\n return {\r\n show: false,\r\n showAvailableCatalogs: false\r\n };\r\n\r\n if (organizationConnection)\r\n return {\r\n show: false,\r\n showAvailableCatalogs: true\r\n }; \r\n else if (!connectRequest)\r\n return {\r\n show: true,\r\n active: true,\r\n text: i18n.t('connections.createRelationship'),\r\n color: 'primary',\r\n showAvailableCatalogs: false,\r\n onClick: () => this.setState({ showConnectPopup: true })\r\n };\r\n else if (connectRequest.approvedDate) {\r\n if (organizationConnection)\r\n return {\r\n show: false,\r\n showAvailableCatalogs: true\r\n };\r\n else\r\n return {\r\n show: true,\r\n active: true,\r\n text: i18n.t('connections.createRelationship'),\r\n color: 'primary',\r\n onClick: () => this.setState({ showConnectPopup: true }),\r\n showAvailableCatalogs: false\r\n };\r\n } else if (connectRequest.disapprovedDate)\r\n return {\r\n show: true,\r\n active: false,\r\n text: i18n.t('connections.connRejected'),\r\n showAvailableCatalogs: false\r\n };\r\n else\r\n return {\r\n show: true,\r\n active: true,\r\n text: i18n.t('connections.cancelRequest'),\r\n color: '#ff5b4f',\r\n onClick: () => this.props.cancelRequest(),\r\n showAvailableCatalogs: false\r\n };\r\n }\r\n\r\n public render() {\r\n const otherRequested =\r\n this.props.catalogViewOffer?.connectRequest.requestOrganizationId ===\r\n this.props.organization.organization.id;\r\n const incommingRequest =\r\n otherRequested &&\r\n this.props.catalogViewOffer &&\r\n !this.props.catalogViewOffer.connectRequest.approvedDate &&\r\n !this.props.catalogViewOffer.connectRequest.disapprovedDate;\r\n const buttonState = this.getButtonState(this.props);\r\n\r\n return (\r\n \r\n this.setState({ showConnectPopup: false })}\r\n onSave={() => {\r\n this.props.offerViewCatalogs(this.state.availableCatalogs);\r\n this.setState({ showConnectPopup: false });\r\n }}\r\n open={this.state.showConnectPopup}>\r\n
\r\n Selecteer catalogi die deze retailer meteen mag inzien na connectie\r\n
\r\n {this.props.myOrganization.catalogs\r\n .filter(catalog => catalog.publicationStatus == PublicationStatus.Published)\r\n .map(catalog => (\r\n
\r\n this.toggleCatalog(catalog, e)}>\r\n \r\n \r\n
\r\n ))}\r\n \r\n \r\n
\r\n \r\n
\r\n {this.props.loadingOrganization ? (\r\n \r\n ) : (\r\n <>\r\n {!!this.props.organization.organization.email && (\r\n \r\n {this.props.organization.organization.email.length > 0 && !incommingRequest && (\r\n
\r\n \r\n \r\n {t => t('connections.sendEmail')}\r\n \r\n
\r\n )}\r\n
\r\n )}\r\n {buttonState.show && !incommingRequest && (\r\n
\r\n {\r\n if (buttonState.onClick) buttonState.onClick();\r\n }}>\r\n {buttonState.text} {this.props.loadingRequest ? '...' : ''}\r\n \r\n
\r\n )}{' '}\r\n {incommingRequest && (\r\n \r\n
\r\n {this.props.organization.organization.name} heeft een connectie verzoek\r\n verstuurd\r\n
\r\n
\r\n {\r\n this.props.editViewCatalogRequest('disapprove');\r\n }}>\r\n Afwijzen{this.props.loadingRequest ? '...' : ''}\r\n \r\n
\r\n {\r\n this.props.editViewCatalogRequest('approve');\r\n }}>\r\n Accepteren{this.props.loadingRequest ? '...' : ''}\r\n \r\n
\r\n )}\r\n \r\n )}\r\n
\r\n\r\n \r\n {this.props.loadingOrganization ? (\r\n \r\n ) : (\r\n \r\n {\r\n e.target.onError = null;\r\n e.target.src = generateAvatar(this.props.organization.organization.name, 100);\r\n }}\r\n />\r\n \r\n )}\r\n
\r\n \r\n {this.props.loadingOrganization ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n\r\n \r\n {this.props.loadingOrganization ? (\r\n \r\n ) : (\r\n this.props.organization.organization.description\r\n )}\r\n \r\n\r\n \r\n {this.props.loadingOrganization ? (\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 GLN:\r\n \r\n {this.props.loadingOrganization ? (\r\n \r\n ) : (\r\n <>\r\n {this.props.organization?.identifiers?.find(x => x.type === 'GLN')?.value}\r\n \r\n )}\r\n \r\n
\r\n
\r\n Arxis ID:\r\n \r\n {this.props.loadingOrganization ? (\r\n \r\n ) : (\r\n <>\r\n {this.props.organization?.identifiers?.find(x => x.type === 'ArxisId')?.value}\r\n \r\n )}\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n\r\n \r\n {this.props.loadingOrganization ? (\r\n \r\n ) : (\r\n
\r\n \r\n
\r\n )}\r\n
\r\n\r\n {buttonState.showAvailableCatalogs ? (\r\n \r\n \r\n \r\n Beschikbare catalogi voor deze retailer\r\n \r\n {!this.props.loadingOrganization && (\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n )}\r\n
\r\n \r\n {this.props.loadingOrganization ? (\r\n \r\n ) : (\r\n <>\r\n {this.props.myOrganization?.catalogs?.length === 0 ? (\r\n \r\n U heeft nog geen catalogi om beschikbaar te stellen.{' '}\r\n publiceer nu een catalogus\r\n \r\n ) : (\r\n undefined\r\n )}\r\n {this.props.myOrganization.catalogs\r\n .filter(c =>\r\n this.props.myOrganization.catalogConnections.find(\r\n dc =>\r\n dc.targetOrganizationId === this.props.organization.organization.id &&\r\n dc.catalogId === c.id &&\r\n dc.active\r\n )\r\n )\r\n .slice(0, 12)\r\n .map(obj => (\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\nconst StatsLineItem = styled(XRowCell)`\r\n line-height: 24px;\r\n text-align: right;\r\n max-width: 250px;\r\n & > button {\r\n max-width: 200px;\r\n }\r\n`;\r\n\r\nconst TitleWrapper = styled.div`\r\n margin: 0 15px;\r\n`;\r\n\r\nconst StyledCatalogsDiv = styled.div({\r\n marginTop: '10px'\r\n});\r\n\r\nconst StyledChoiceTextDiv = styled.div({\r\n padding: '10px'\r\n});\r\n\r\nconst StyledChoiceDiv = styled.div({\r\n display: 'flex',\r\n paddingLeft: '10px',\r\n paddingRight: '10px',\r\n fontSize: '13px'\r\n});\r\n\r\nconst NoItems = styled.span`\r\n padding: 15px;\r\n & a {\r\n text-decoration: underline;\r\n cursor: pointer;\r\n }\r\n`;\r\n\r\nconst ActionButtons = styled.div`\r\n position: absolute;\r\n right: 15px;\r\n top: 12px;\r\n cursor: pointer;\r\n & svg {\r\n color: rgb(245, 0, 87);\r\n }\r\n`;\r\n\r\nexport default XRetailerDetails;\r\n","import styled from '@emotion/styled';\r\nimport * as React from 'react';\r\nimport MediaQuery from 'react-responsive';\r\nimport {\r\n MyOrganizationModel,\r\n OrganizationModel,\r\n OrganizationType,\r\n OrganizationReadinessStatus\r\n} from 'src/models/Organization';\r\nimport { ConnectRequest, RequestModel } from 'src/models/Request';\r\nimport { CatalogRequestStatus } from 'src/store/requests/api';\r\nimport XButton, { XButtonStyle } from '../layout/XButton';\r\nimport { XContainer } from '../layout/XContainer';\r\nimport XFormButtons from '../layout/XFormButtons';\r\nimport XGrid from '../layout/XGrid';\r\nimport { XImageContainer } from '../layout/XImage';\r\nimport { XImage } from '../layout/XImage';\r\nimport { XPaperContainer, XPaperLabel, XPaperText, XPaperTitle } from '../layout/XPaper';\r\nimport { XRow, XRowCell } from '../layout/XRow';\r\nimport XCatalog from './XCatalog';\r\nimport XOrganizationAddress from './XOrganizationAddress';\r\n\r\nimport { generateAvatar } from 'src/helpers/avatarGenerator';\r\nimport { getImageUrl } from 'src/helpers/formatHelpers';\r\nimport Logo from '../../style/images/ltxLogos/ltxdefOpaque.svg';\r\nimport XOrganizationTitle from './XOrganizationTitle';\r\nimport XGoBack from '../shared/XGoBack';\r\nimport { Email, EmailOutlined } from '@material-ui/icons';\r\nimport { XSecActionButton, XActionButton } from '../layout/XActionButton';\r\nimport { XActionStrip } from '../layout/XActionStrip';\r\nimport { PublicationStatus } from 'src/models/Catalog';\r\nimport Skeleton from '@material-ui/lab/Skeleton';\r\nimport CheckCircleOutlineOutlinedIcon from '@material-ui/icons/CheckCircleOutlineOutlined';\r\nimport RemoveCircleOutlineOutlinedIcon from '@material-ui/icons/RemoveCircleOutlineOutlined';\r\nimport { InterfaceType } from 'src/models/Organization';\r\nimport { Translation } from 'react-i18next';\r\nimport i18n from 'src/i18n';\r\n\r\ntype OwnProps = {\r\n loadingOrganization: boolean;\r\n loadingRequest: boolean;\r\n organization: OrganizationModel;\r\n catalogViewRequest?: RequestModel;\r\n myOrganization: MyOrganizationModel;\r\n history?: any;\r\n editCatalogOffer: (status: CatalogRequestStatus) => void;\r\n requestViewCatalogs: () => void;\r\n cancelRequest: () => void;\r\n};\r\n\r\ntype AllProps = OwnProps;\r\n\r\nconst getButtonState = (props: AllProps) => {\r\n const isAdmin = props.myOrganization.organization.isAdmin;\r\n const connectRequest = props.catalogViewRequest?.connectRequest;\r\n const organizationConnection = props.myOrganization.organizationConnections.find(\r\n dc =>\r\n (dc.sourceOrganizationId === props.myOrganization.organization.id &&\r\n dc.targetOrganizationId === props.organization.organization.id) ||\r\n (dc.targetOrganizationId === props.myOrganization.organization.id &&\r\n dc.sourceOrganizationId === props.organization.organization.id)\r\n );\r\n\r\n if (isAdmin)\r\n return {\r\n show: false,\r\n showAvailableCatalogs: false\r\n };\r\n\r\n if (organizationConnection)\r\n return {\r\n show: false,\r\n showAvailableCatalogs: false\r\n };\r\n\r\n else if (!connectRequest)\r\n return {\r\n show: true,\r\n active: true,\r\n color: 'primary',\r\n text: i18n.t('connections.createRelationship'),\r\n onClick: () => props.requestViewCatalogs(),\r\n showAvailableCatalogs: false\r\n };\r\n else if (connectRequest.approvedDate) {\r\n if (organizationConnection)\r\n return {\r\n show: false,\r\n showAvailableCatalogs: true\r\n };\r\n else\r\n return {\r\n show: true,\r\n active: true,\r\n color: 'primary',\r\n text: i18n.t('connections.createRelationship'),\r\n onClick: () => props.requestViewCatalogs(),\r\n showAvailableCatalogs: false\r\n };\r\n } else if (connectRequest.disapprovedDate)\r\n return {\r\n show: true,\r\n active: false,\r\n text: i18n.t('connections.rejected'),\r\n showAvailableCatalogs: false\r\n };\r\n else\r\n return {\r\n show: true,\r\n active: true,\r\n color: '#ff5b4f',\r\n text: i18n.t('connections.cRequest'),\r\n onClick: () => props.cancelRequest(),\r\n showAvailableCatalogs: false\r\n };\r\n};\r\n\r\nconst XSupplierDetails: React.FC = props => {\r\n const otherRequested =\r\n props.catalogViewRequest?.connectRequest.requestOrganizationId ===\r\n props.organization.organization.id;\r\n const incommingRequest =\r\n otherRequested &&\r\n props.catalogViewRequest &&\r\n !props.catalogViewRequest.connectRequest.approvedDate &&\r\n !props.catalogViewRequest.connectRequest.disapprovedDate;\r\n const buttonState = getButtonState(props);\r\n\r\n return (\r\n \r\n \r\n
\r\n \r\n
\r\n {props.loadingOrganization ? (\r\n \r\n ) : (\r\n <>\r\n \r\n {props.organization?.organization?.email?.length > 0 && !incommingRequest && (\r\n
\r\n \r\n \r\n {t => t('connections.sendEmail')}\r\n \r\n
\r\n )}\r\n
\r\n {buttonState.show && !incommingRequest && !props.myOrganization.organization.isAdmin && (\r\n
\r\n {\r\n if (buttonState.onClick) buttonState.onClick();\r\n }}>\r\n {buttonState.text}\r\n {props.loadingRequest ? '...' : ''}\r\n \r\n
\r\n )}\r\n {incommingRequest && (\r\n \r\n
\r\n {props.organization.organization.name} heeft een connectie verzoek verstuurd\r\n
\r\n
\r\n {\r\n props.editCatalogOffer('disapprove');\r\n }}>\r\n Afwijzen{props.loadingRequest ? '...' : ''}\r\n \r\n
\r\n {\r\n props.editCatalogOffer('approve');\r\n }}>\r\n Accepteren{props.loadingRequest ? '...' : ''}\r\n \r\n
\r\n )}\r\n \r\n )}\r\n
\r\n \r\n {props.loadingOrganization ? (\r\n \r\n ) : (\r\n \r\n {\r\n e.target.onError = null;\r\n e.target.src = generateAvatar(props.organization.organization.name, 100);\r\n }}\r\n />\r\n \r\n )}\r\n
\r\n \r\n {props.loadingOrganization ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n \r\n {props.loadingOrganization ? (\r\n \r\n ) : (\r\n props.organization.organization.description\r\n )}\r\n \r\n\r\n \r\n {props.loadingOrganization ? (\r\n
\r\n \r\n
\r\n ) : (\r\n \r\n )}\r\n
\r\n
\r\n \r\n \r\n Account status: {props.organization?.organization?.accountStatus}\r\n \r\n Supported data: \r\n \r\n \r\n \r\n {props.organization?.organization?.supportsCatalogData ===\r\n OrganizationReadinessStatus.Ready ? (\r\n \r\n ) : (\r\n \r\n )}\r\n Catalog\r\n \r\n \r\n \r\n \r\n {props.organization?.organization?.supportsStockData ===\r\n OrganizationReadinessStatus.Ready ? (\r\n \r\n ) : (\r\n \r\n )}\r\n Stock\r\n \r\n \r\n \r\n \r\n {props.organization?.organization?.supportsOrderData ===\r\n OrganizationReadinessStatus.Ready ? (\r\n \r\n ) : (\r\n \r\n )}\r\n Orders\r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n GLN:\r\n \r\n {props.loadingOrganization ? (\r\n \r\n ) : (\r\n <> {props.organization?.identifiers?.find(x => x.type === 'GLN')?.value} \r\n )}\r\n \r\n
\r\n
\r\n Arxis ID:\r\n \r\n {props.loadingOrganization ? (\r\n \r\n ) : (\r\n <> {props.organization?.identifiers?.find(x => x.type === 'ArxisId')?.value} \r\n )}\r\n \r\n
\r\n \r\n
\r\n \r\n \r\n\r\n \r\n {props.loadingOrganization ? (\r\n \r\n ) : (\r\n
\r\n \r\n
\r\n )}\r\n
\r\n\r\n {buttonState.showAvailableCatalogs ? (\r\n \r\n \r\n \r\n \r\n {t => {t('catalogs.availableCatalogsFromThisSupplier')}}\r\n \r\n \r\n \r\n \r\n {props.loadingOrganization ? (\r\n \r\n ) : (\r\n <>\r\n {props.organization?.catalogs?.length === 0 ? (\r\n \r\n {t => {t('catalogs.supplierHasNotMadeAnyCatalogs')}}\r\n \r\n ) : (\r\n undefined\r\n )}\r\n {props.organization.catalogs.slice(0, 16).map(obj => (\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\nconst StatsLineItem = styled(XRowCell)`\r\n line-height: 24px;\r\n flex: 0;\r\n text-align: right;\r\n min-width: 250px;\r\n & > button {\r\n min-width: 200px;\r\n }\r\n`;\r\n\r\nconst StyledRequestButton = styled(XButton)({\r\n maxWidth: '400px'\r\n});\r\n\r\nconst StyledCatalogsDiv = styled.div({\r\n marginTop: '10px'\r\n});\r\n\r\nconst StyledChoiceTextDiv = styled.div({\r\n padding: '15px'\r\n});\r\n\r\nconst StyledChoiceDiv = styled.div({\r\n marginTop: '10px',\r\n paddingTop: '10px',\r\n paddingLeft: '10px',\r\n paddingRight: '10px',\r\n borderTop: '1px solid #ccc',\r\n fontSize: '13px'\r\n});\r\n\r\nconst NoItems = styled.span`\r\n padding: 15px;\r\n & a {\r\n text-decoration: underline;\r\n cursor: pointer;\r\n }\r\n`;\r\n\r\nconst TitleWrapper = styled.div`\r\n margin: 0 15px;\r\n`;\r\n\r\nconst XCenter = styled.div`\r\n display: flex;\r\n align-items: center;\r\n`;\r\n\r\nconst XSpan = styled.div`\r\n margin-left: 0.5em;\r\n`;\r\n\r\nexport default XSupplierDetails;\r\n","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport XErrorContent from 'src/components/domain/XErrorContent';\r\nimport XRetailerDetails from 'src/components/domain/XRetailerDetails';\r\nimport XSupplierDetails from 'src/components/domain/XSupplierDetails';\r\nimport XButton from 'src/components/layout/XButton';\r\nimport XPageContent from 'src/components/layout/XPageContent';\r\nimport { XPaper } from 'src/components/layout/XPaper';\r\nimport XScrollView from 'src/components/layout/XScrollView';\r\nimport XGoBack from 'src/components/shared/XGoBack';\r\nimport { ApiResult } from 'src/helpers/apiClient';\r\nimport { mapError } from 'src/helpers/errorMap';\r\nimport { MyOrganizationModel, OrganizationModel, OrganizationType } from 'src/models/Organization';\r\nimport { RequestModel } from 'src/models/Request';\r\nimport { ApplicationState } from 'src/store';\r\nimport { AuthenticationAccount } from 'src/store/authentication/types';\r\nimport { showNotification } from 'src/store/layout/actions';\r\nimport { MessageType } from 'src/store/layout/types';\r\nimport { getMyOrganizationThunk, getOrganizationThunk } from 'src/store/organizations/actions';\r\nimport { createRequestThunk, updateRequestThunk } from 'src/store/requests/actions';\r\nimport * as requestActions from 'src/store/requests/actions';\r\nimport { CatalogRequestStatus } from 'src/store/requests/api';\r\nimport { catalogViewRequestBetweenOrganizations } from 'src/store/requests/selectors';\r\nimport i18n from 'src/i18n';\r\nimport ErrorBoundary from 'src/components/shared/ErrorBoundary';\r\n\r\ntype OwnProps = {};\r\n\r\ntype StateProps = {\r\n organization?: OrganizationModel;\r\n myOrganization?: MyOrganizationModel;\r\n viewRequest?: RequestModel;\r\n myAccount: AuthenticationAccount;\r\n loadingOrganization: boolean;\r\n};\r\n\r\ntype DispatchProps = {\r\n showNotification: (message: string, type: MessageType) => void;\r\n getRequests: () => void;\r\n getMyOrganization: () => void;\r\n organizationById: (id: string) => Promise;\r\n createRequest: (targetOrganizationId: string, catalogIds?: string[]) => Promise;\r\n cancelRequest: (id: string) => Promise;\r\n editCatalogViewRequest: (\r\n catalogRequest: RequestModel,\r\n state: CatalogRequestStatus\r\n ) => Promise;\r\n};\r\n\r\ntype AllProps = StateProps & DispatchProps & OwnProps & RouteComponentProps<{ id: string }>;\r\n\r\ntype State = {\r\n loadingCommand: boolean;\r\n};\r\n\r\nclass ShowOrganizationPage extends React.Component {\r\n constructor(props: AllProps) {\r\n super(props);\r\n\r\n this.state = {\r\n loadingCommand: false\r\n };\r\n }\r\n\r\n public componentDidMount() {\r\n this.props.organizationById(this.props.match.params.id).then(result => {\r\n if (!result.IsSuccess) {\r\n if (result.StatusCode === 401)\r\n // Not authorized for this organization\r\n this.props.history.push('/app/start');\r\n }\r\n });\r\n\r\n this.props.getMyOrganization();\r\n this.props.getRequests();\r\n }\r\n\r\n public requestCatalogs() {\r\n if (!this.props.organization) return;\r\n\r\n this.setState({ loadingCommand: true });\r\n this.props.createRequest(this.props.organization.organization.id).then(result => {\r\n this.setState({ loadingCommand: false });\r\n if (result.IsSuccess)\r\n this.props.showNotification(i18n.t('notification.connectionRequestSent'), 'success');\r\n else\r\n this.props.showNotification(\r\n i18n.t('notification.wentWrongSendingConnectionRequest') + mapError(result.Errors),\r\n 'error'\r\n );\r\n });\r\n }\r\n\r\n public offerCatalogs(catalogIds: string[]) {\r\n if (!this.props.organization) return;\r\n\r\n this.setState({ loadingCommand: true });\r\n this.props.createRequest(this.props.organization.organization.id, catalogIds).then(result => {\r\n this.setState({ loadingCommand: false });\r\n if (result.IsSuccess)\r\n this.props.showNotification(i18n.t('notification.catalogsOffered'), 'success');\r\n else\r\n this.props.showNotification(\r\n i18n.t('notification.wentWrongWhenOfferingCatalog') + mapError(result.Errors),\r\n 'error'\r\n );\r\n });\r\n }\r\n\r\n public editCatalogRequest(state: CatalogRequestStatus) {\r\n if (!this.props.viewRequest) return;\r\n\r\n this.setState({ loadingCommand: true });\r\n this.props.editCatalogViewRequest(this.props.viewRequest, state).then(result => {\r\n this.setState({ loadingCommand: false });\r\n if (result.IsSuccess) {\r\n this.props.showNotification(\r\n i18n.t('organizations.Application') +\r\n ' ' +\r\n (state === 'approve'\r\n ? i18n.t('organizations.approved')\r\n : i18n.t('organizations.turnedD')),\r\n 'success'\r\n );\r\n this.props.getMyOrganization();\r\n } else\r\n this.props.showNotification(\r\n i18n.t('notification.wentWrongRespondingRequest') + mapError(result.Errors),\r\n 'error'\r\n );\r\n });\r\n }\r\n\r\n public cancelRequest() {\r\n this.setState({ loadingCommand: true });\r\n this.props.cancelRequest(this.props.viewRequest?.connectRequest.id as string).then(result => {\r\n this.setState({ loadingCommand: false });\r\n if (result.IsSuccess)\r\n this.props.showNotification(i18n.t('notification.requestCanceled'), 'success');\r\n else\r\n this.props.showNotification(\r\n i18n.t('notification.errWhileCancelingRequest') + mapError(result.Errors),\r\n 'error'\r\n );\r\n });\r\n }\r\n\r\n public render() {\r\n if (!this.props.organization || !this.props.myOrganization)\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n {this.props.organization.organization.organizationType ===\r\n OrganizationType.Supplier ? (\r\n this.requestCatalogs()}\r\n cancelRequest={() => this.cancelRequest()}\r\n editCatalogOffer={state => this.editCatalogRequest(state)}\r\n loadingRequest={this.state.loadingCommand}\r\n history={this.props.history}\r\n loadingOrganization={this.props.loadingOrganization}\r\n />\r\n ) : (\r\n this.offerCatalogs(catalogIds)}\r\n cancelRequest={() => this.cancelRequest()}\r\n editViewCatalogRequest={state => this.editCatalogRequest(state)}\r\n loadingRequest={this.state.loadingCommand}\r\n history={this.props.history}\r\n loadingOrganization={this.props.loadingOrganization}\r\n />\r\n )}\r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state: ApplicationState): StateProps => {\r\n return {\r\n myAccount: state.authentication.account,\r\n myOrganization: state.organizations.myOrganization,\r\n viewRequest: catalogViewRequestBetweenOrganizations(\r\n state.requests,\r\n state.organizations.detail?.organization.id ?? ''\r\n ),\r\n organization: state.organizations.detail,\r\n loadingOrganization: state.organizations.loading\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch: any): DispatchProps => ({\r\n showNotification: (message: string) => {\r\n dispatch(showNotification(message));\r\n },\r\n getRequests: () => dispatch(requestActions.getRequestsThunk()),\r\n organizationById: (id: string) => dispatch(getOrganizationThunk(id)),\r\n getMyOrganization: () => dispatch(getMyOrganizationThunk()),\r\n createRequest: (targetOrganizationId: string, catalogIds?: string[]) =>\r\n dispatch(createRequestThunk(targetOrganizationId, catalogIds)),\r\n cancelRequest: (id: string) => dispatch(requestActions.cancelRequestThunk(id)),\r\n editCatalogViewRequest: (catalogRequest: RequestModel, state: CatalogRequestStatus) =>\r\n dispatch(updateRequestThunk(catalogRequest, state))\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(ShowOrganizationPage);\r\n","import React from 'react';\r\nimport { Link } from 'react-router-dom';\r\nimport styled from '@emotion/styled';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport { Divider } from '@material-ui/core';\r\nimport { XActionButton } from 'src/components/layout/XActionButton';\r\n\r\ntype OwnProps = {\r\n close: () => void;\r\n};\r\n\r\nconst XSubscriptionUpgradeModal: React.FC = ({ close }) => {\r\n return (\r\n \r\n \r\n
Upgrade
\r\n \r\n
\r\n You need more connections?
\r\n Uprade your subsription from Free to\r\n Premium\r\n
\r\n \r\n \r\n Subscriptions\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default XSubscriptionUpgradeModal;\r\n\r\nconst XSubUpgradeModal = styled.div`\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n right: 0;\r\n bottom: 0;\r\n background-color: rgba(0, 0, 0, 0.5);\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n z-index: 9999999 !important;\r\n`;\r\n\r\nconst XSubUpgradeGrid = styled.div`\r\n position: relative;\r\n display: flex;\r\n flex-direction: column;\r\n justify-content: space-between;\r\n padding: 2rem;\r\n width: 28rem;\r\n background-color: white;\r\n box-shadow: 0px 11px 15px -7px rgba(0, 0, 0, 0.2), 0px 24px 38px 3px rgba(0, 0, 0, 0.14),\r\n 0px 9px 46px 8px rgba(0, 0, 0, 0.12);\r\n\r\n & h5 {\r\n margin: 1rem 0;\r\n font-weight: bold;\r\n }\r\n\r\n & h6 {\r\n margin: 2rem 0;\r\n line-height: 2rem;\r\n }\r\n\r\n & div {\r\n cursor: pointer;\r\n position: absolute;\r\n right: 1rem;\r\n top: 1rem;\r\n }\r\n`;\r\n","import styled from '@emotion/styled';\r\nimport React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport XNoContent from 'src/components/domain/XNoContent';\r\nimport XOrganizationSmall from 'src/components/domain/XOrganizationSmall';\r\nimport XGrid from 'src/components/layout/XGrid';\r\nimport XPageContent from 'src/components/layout/XPageContent';\r\nimport { XPaper } from 'src/components/layout/XPaper';\r\nimport {\r\n Organization,\r\n OrganizationType,\r\n OrganizationReadinessStatus\r\n} from 'src/models/Organization';\r\nimport { OrganizationReadinessStatusList } from 'src/constants/OrganizationReadinessStatus';\r\nimport { ApplicationState } from 'src/store';\r\nimport { AuthenticationAccount } from 'src/store/authentication/types';\r\nimport { getOrganizationsThunk } from 'src/store/organizations/actions';\r\nimport * as OrganizationActions from 'src/store/organizations/actions';\r\nimport FormGroup from '@material-ui/core/FormGroup';\r\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\r\nimport Switch from '@material-ui/core/Switch';\r\n\r\nimport GridIcon from '@material-ui/icons/Apps';\r\nimport ListIcon from '@material-ui/icons/FormatListBulleted';\r\nimport CheckIcon from '@material-ui/icons/Check';\r\nimport ConnectionsIcon from '@material-ui/icons/Link';\r\nimport CheckBoxOutlinedIcon from '@material-ui/icons/CheckBoxOutlined';\r\nimport IndeterminateCheckBoxOutlinedIcon from '@material-ui/icons/IndeterminateCheckBoxOutlined';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { Link } from 'react-router-dom';\r\nimport XOrganizationTitle from 'src/components/domain/XOrganizationTitle';\r\nimport { XImage, XImageContainer, XImageOverlay } from 'src/components/layout/XImage';\r\nimport XPaperHeader from 'src/components/layout/XPaperHeader';\r\nimport XScrollView from 'src/components/layout/XScrollView';\r\nimport { generateAvatar } from 'src/helpers/avatarGenerator';\r\nimport { getImageUrl } from 'src/helpers/formatHelpers';\r\nimport { changeView } from 'src/store/layout/actions';\r\nimport { ViewType } from 'src/store/layout/types';\r\nimport EmptyImage from '../../style/images/empty.svg';\r\nimport { XFilterBar } from 'src/components/layout/XFilterBar';\r\nimport XSearchBar from 'src/components/layout/XSearchBar';\r\nimport XSubscriptionUpgradeModal from 'src/components/layout/XSubscriptionUpgradeModal';\r\nimport { Translation } from 'react-i18next';\r\nimport i18n from '../../i18n';\r\nimport { Skeleton } from '@material-ui/lab';\r\nimport ErrorBoundary from 'src/components/shared/ErrorBoundary';\r\nimport Accordion from '@material-ui/core/Accordion';\r\nimport AccordionSummary from '@material-ui/core/AccordionSummary';\r\nimport AccordionDetails from '@material-ui/core/AccordionDetails';\r\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\r\nimport XButton, { XButtonStyle } from 'src/components/layout/XButton';\r\n\r\ntype OwnProps = {};\r\n\r\ntype StateProps = {\r\n account: AuthenticationAccount;\r\n organizations: Organization[];\r\n connections: Organization[];\r\n view: ViewType;\r\n loading: boolean;\r\n};\r\n\r\ntype DispatchProps = {\r\n getOrganizations: () => void;\r\n getConnections: () => any;\r\n changeView(type: ViewType): () => void;\r\n};\r\n\r\ntype State = {\r\n currentOffset: number;\r\n organizationType: OrganizationType;\r\n search: string;\r\n subUpgradeModal: boolean;\r\n};\r\n\r\ntype AllProps = StateProps & DispatchProps & OwnProps & RouteComponentProps<{ type?: string }>;\r\n\r\nclass OrganizationsPage extends React.Component {\r\n constructor(props: AllProps) {\r\n super(props);\r\n\r\n this.state = {\r\n currentOffset: 30,\r\n search: '',\r\n organizationType:\r\n this.props.match.params.type === undefined\r\n ? this.props.account.organizationType === OrganizationType.Retailer\r\n ? OrganizationType.Supplier\r\n : OrganizationType.Retailer\r\n : this.props.match.params.type === 'suppliers'\r\n ? OrganizationType.Supplier\r\n : OrganizationType.Retailer,\r\n subUpgradeModal: false\r\n };\r\n }\r\n\r\n public componentDidMount() {\r\n this.props.getOrganizations();\r\n this.props.getConnections();\r\n }\r\n\r\n public handleScrollBottom() {\r\n if (this.state.currentOffset >= this.props.organizations.length) return;\r\n\r\n this.setState({ currentOffset: this.state.currentOffset + 30 });\r\n }\r\n\r\n public render() {\r\n const organizations = this.props.organizations\r\n .filter(\r\n c =>\r\n this.state.search.length === 0 ||\r\n c.name.toLowerCase().indexOf(this.state.search.toLowerCase()) !== -1\r\n )\r\n .filter(o => o.organizationType === this.state.organizationType)\r\n .filter(o => o.accountStatus !== OrganizationReadinessStatus.Hidden);\r\n\r\n const haveConnections = this.props.organizations.some(x => x.connectStatus === 'Approved');\r\n const scrollPaged = organizations.slice(0, this.state.currentOffset);\r\n\r\n const type = this.state.organizationType;\r\n const orgsName = type === OrganizationType.Supplier ? i18n.t('common.Suppliers') : 'Retailers';\r\n return (\r\n \r\n \r\n \r\n {this.props.connections.length === 0 && (\r\n
\r\n

\r\n Welkom bij Arxis!\r\n

\r\n
\r\n
\r\n )}\r\n \r\n {t => (\r\n \r\n )}\r\n \r\n \r\n
\r\n \r\n this.setState({ search: e.target.value.toLowerCase() })\r\n }> \r\n
\r\n
\r\n\r\n {!!this.state.search.length && scrollPaged.length === 0 && (\r\n \r\n {t => }\r\n \r\n )}\r\n\r\n {!this.state.search.length && scrollPaged.length === 0 && !this.props.loading && (\r\n \r\n {t => }\r\n \r\n )}\r\n\r\n {this.props.loading &&\r\n Array.from({ length: 5 }).map((_, idx) => (\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n ))}\r\n\r\n {!this.props.loading && (\r\n this.handleScrollBottom()}>\r\n {scrollPaged.map(organization => (\r\n \r\n \r\n }\r\n aria-controls=\"panel1a-content\"\r\n id=\"panel1a-header\">\r\n\r\n {\r\n e.target.onError = null;\r\n e.target.src = generateAvatar(organization.name, 60);\r\n }}\r\n />\r\n
\r\n
{organization.name}
\r\n
\r\n {organization.city} - {organization.country}\r\n
\r\n
\r\n {this.state.organizationType === OrganizationType.Supplier ? (\r\n
\r\n
c.value === organization.accountStatus)?.color,\r\n minWidth: '115px',\r\n height: '25px',\r\n textAlign: 'center',\r\n margin: '5px',\r\n borderRadius: '10px',\r\n color: '#fff',\r\n fontWeight: 'bold',\r\n fontSize: '12px',\r\n alignSelf: 'center'\r\n }}>\r\n {OrganizationReadinessStatusList.find(c => c.value === organization.accountStatus)?.name}\r\n
\r\n
) : (
)}\r\n \r\n \r\n \r\n {t => (\r\n
\r\n {this.state.organizationType === OrganizationType.Supplier ? (\r\n
\r\n
\r\n {t('orgAcc.youCanDoBusinessWith')} {organization.name}{' '}\r\n {t('orgAcc.viaArxis')} {t('orgAcc.erpOrCashRegister')}\r\n
\r\n\r\n
\r\n {organization.name} {t('orgAcc.supportsThroughArxis')}\r\n
\r\n
\r\n ) : (
)\r\n }\r\n\r\n
\r\n {organization.supportsCatalogData ===\r\n OrganizationReadinessStatus.Ready || this.state.organizationType === OrganizationType.Retailer ? (\r\n \r\n \r\n {t('common.catalog')}\r\n \r\n ) : (\r\n \r\n \r\n {t('common.catalog')}\r\n \r\n )}\r\n {organization.supportsOrderData ===\r\n OrganizationReadinessStatus.Ready || this.state.organizationType === OrganizationType.Retailer ? (\r\n \r\n \r\n Order\r\n \r\n ) : (\r\n \r\n \r\n Order\r\n \r\n )}\r\n {organization.supportsStockData ===\r\n OrganizationReadinessStatus.Ready || this.state.organizationType === OrganizationType.Retailer ? (\r\n \r\n \r\n Stock\r\n \r\n ) : (\r\n \r\n \r\n Stock\r\n \r\n )}\r\n
\r\n\r\n \r\n \r\n this.props.history.push(\r\n `/app/explore/connections/organization/${organization.id}`\r\n )\r\n }>\r\n Connect\r\n \r\n
\r\n \r\n )}\r\n
\r\n
\r\n
\r\n
\r\n ))}\r\n
\r\n )}\r\n \r\n {this.state.subUpgradeModal && (\r\n this.setState({ subUpgradeModal: false })} />\r\n )}\r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state: ApplicationState): StateProps => {\r\n return {\r\n organizations: (state.organizations.all || []).sort((a, b) => a.name.localeCompare(b.name)),\r\n loading: state.organizations.loading,\r\n connections: state.organizations.connections.sort((a, b) => a.name.localeCompare(b.name)),\r\n account: state.authentication.account,\r\n view: state.layout.viewOrganizations\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch: any): DispatchProps => ({\r\n getConnections: () => dispatch(OrganizationActions.getOrganizationConnectionsThunk()),\r\n getOrganizations: () => dispatch(getOrganizationsThunk()),\r\n changeView: (type: ViewType) => dispatch(changeView('organizations', type))\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(OrganizationsPage);\r\n\r\nconst StyledPaper = styled(XPaper)`\r\n min-height: 300px;\r\n`;\r\n\r\nexport const XOrgImage = styled('img')({\r\n maxHeight: '100%',\r\n maxWidth: '100%',\r\n width: 'auto',\r\n height: 'auto',\r\n transition: 'all 0.25s ease'\r\n});\r\n\r\nconst XAccordion = styled.div`\r\n .MuiPaper-elevation1 {\r\n box-shadow: 0 8px 15px 0 rgba(0, 0, 0, 0.09), 0 2px 8px 0 rgba(0, 0, 0, 0.08);\r\n }\r\n\r\n .MuiAccordionSummary-content {\r\n img {\r\n width: 55px;\r\n height: 55px;\r\n border-radius: 100%;\r\n }\r\n }\r\n\r\n .MuiAccordionSummary-content.Mui-expanded {\r\n img {\r\n width: 75px;\r\n height: 75px;\r\n border-radius: 0;\r\n border-right: none;\r\n }\r\n }\r\n\r\n .MuiAccordionDetails-root {\r\n padding: 16px 16px;\r\n border-top: 1px solid rgba(0, 0, 0, 0.09);\r\n }\r\n`;\r\n\r\nconst XBadgeSpan = styled.span`\r\n display: flex;\r\n align-items: center;\r\n width: fit-content;\r\n white-space: nowrap;\r\n vertical-align: middle;\r\n padding-inline-start: 0.25rem;\r\n padding-inline-end: 0.25rem;\r\n text-transform: uppercase;\r\n font-size: 0.75rem;\r\n border-radius: 0.125rem;\r\n font-weight: 700;\r\n margin-top: 0px;\r\n margin-inline: 0.5rem 0px;\r\n margin-bottom: 0.5rem;\r\n`;\r\n","import * as React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { RouteComponentProps } from 'react-router-dom';\r\nimport XPageRouter from 'src/components/shared/XPageRouter';\r\nimport { PageRoute } from 'src/models/Route';\r\n\r\nimport ShowOrganizationPage from '../shared/ShowOrganizationPage';\r\nimport OrganizationsPage from './OrganizationsPage';\r\n\r\nexport const ConnectionsRoute: PageRoute = {\r\n path: `/app/explore/connections`,\r\n exact: true,\r\n component: OrganizationsPage\r\n};\r\n\r\nexport const BrowseOrganizationsRoute: PageRoute = {\r\n path: `/app/explore/connections/organizations/:type`,\r\n exact: true,\r\n component: OrganizationsPage\r\n};\r\n\r\n// organization\r\nexport const BrowseOrganizationRoute: PageRoute = {\r\n path: `/app/explore/connections/organization/:id`,\r\n exact: true,\r\n component: ShowOrganizationPage\r\n};\r\n\r\nexport const Routes: PageRoute[] = [\r\n ConnectionsRoute,\r\n BrowseOrganizationsRoute,\r\n BrowseOrganizationRoute\r\n];\r\n\r\ntype StateProps = {};\r\n\r\ntype DispatchProps = {};\r\n\r\ntype AllProps = StateProps & DispatchProps & RouteComponentProps;\r\n\r\nclass StartRouter extends React.Component {\r\n public render() {\r\n return ;\r\n }\r\n}\r\n\r\nconst mapStateToProps = () => {\r\n return {};\r\n};\r\n\r\nconst mapDispatchToProps = {};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(StartRouter);\r\n","import React, { FC } from 'react';\r\n\r\nconst ShowStockPage: FC = () => {\r\n return
;\r\n};\r\n\r\nexport default ShowStockPage;\r\n","import React from 'react';\r\nimport styled from '@emotion/styled';\r\nimport { XImage, XImageContainer } from '../layout/XImage';\r\nimport { generateAvatar } from 'src/helpers/avatarGenerator';\r\nimport { formatDateToString, getImageUrl } from 'src/helpers/formatHelpers';\r\n\r\ntype OwnProps = {\r\n stock: any;\r\n};\r\n\r\ntype AllProps = OwnProps;\r\n\r\nconst XCatalogLarge: React.FC = props => {\r\n return (\r\n \r\n \r\n {\r\n e.target.onError = null;\r\n e.target.src = generateAvatar(props.stock.title, 145);\r\n }}\r\n />\r\n \r\n \r\n {props.stock.title}\r\n {props.stock.organizationName}\r\n {props.stock.downloads} downloads\r\n {formatDateToString(props.stock.creationDate)}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default XCatalogLarge;\r\n\r\nconst ImageContainer = styled(XImageContainer)({\r\n boxShadow: '0px 3px 20px rgba(0,0,0,0.1)',\r\n transition: 'box-shadow ease-in-out .1s',\r\n ':hover': {\r\n boxShadow: '0px 5px 25px rgba(0,0,0,0.15)'\r\n }\r\n});\r\nconst StockContent = styled('div')({\r\n display: 'flex',\r\n flexDirection: 'column',\r\n width: 'auto',\r\n marginRight: '10px'\r\n});\r\n\r\nconst StockText = styled('div')({\r\n display: 'flex',\r\n flexDirection: 'column',\r\n marginTop: '10px',\r\n padding: '3px'\r\n // cursor: 'pointer'\r\n});\r\n\r\nconst StockTitle = styled('label')({\r\n fontSize: '14px',\r\n fontFamily: 'Montserrat-Bold', // TODO: get font from theme\r\n color: 'black',\r\n // cursor: 'pointer',\r\n width: '145px',\r\n whiteSpace: 'nowrap',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis'\r\n});\r\n\r\nconst StockLabel = styled('label')({\r\n fontSize: '10px',\r\n color: 'black',\r\n paddingTop: '6px',\r\n textDecoration: 'none'\r\n // cursor: 'pointer'\r\n});\r\n","import React from 'react';\r\nimport styled from '@emotion/styled';\r\nimport { XImage, XImageContainer, XImageOverlay } from '../layout/XImage';\r\nimport { Tooltip } from '@material-ui/core';\r\nimport DownloadedIcon from '@material-ui/icons/CheckCircle';\r\nimport { generateAvatar } from 'src/helpers/avatarGenerator';\r\nimport { formatDateToString, getImageUrl } from 'src/helpers/formatHelpers';\r\nimport { CloudDownload } from '@material-ui/icons';\r\nimport { Translation } from 'react-i18next';\r\n\r\ntype OwnProps = {\r\n stock: any;\r\n};\r\n\r\ntype AllProps = OwnProps;\r\n\r\nconst XCatalogSmall: React.SFC = props => {\r\n return (\r\n \r\n \r\n {\r\n e.target.onError = null;\r\n e.target.src = generateAvatar(props.stock.title, 75);\r\n }}\r\n />\r\n {props.stock.downloaded && (\r\n // eslint-disable-next-line react/jsx-no-undef\r\n \r\n {t => (\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n )}\r\n \r\n \r\n \r\n {props.stock.title}{' '}\r\n {props.stock.downloaded && (\r\n \r\n {t => (\r\n \r\n \r\n \r\n )}\r\n \r\n )}\r\n \r\n {props.stock.organizationName}\r\n \r\n {formatDateToString(props.stock.creationDate)} • {props.stock.downloads} downloads\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default XCatalogSmall;\r\n\r\nconst StockContent = styled('div')({\r\n display: 'flex',\r\n flexDirection: 'row',\r\n width: 'auto'\r\n});\r\n\r\nexport const StockTitle = styled('div')({\r\n fontSize: '14px',\r\n fontFamily: 'Montserrat-Bold' // TODO: get font from theme\r\n});\r\n\r\nexport const StockLabel = styled('div')({\r\n fontSize: '10px'\r\n // cursor: 'pointer'\r\n});\r\n\r\nconst StockText = styled('div')({\r\n display: 'flex',\r\n flexDirection: 'column',\r\n paddingLeft: '7px',\r\n marginLeft: '8px',\r\n color: 'black'\r\n});\r\n\r\nconst DownloadCheck = styled(DownloadedIcon)`\r\n color: green;\r\n font-size: 15px;\r\n vertical-align: top;\r\n margin-top: 3px;\r\n`;\r\n","import React from 'react';\r\nimport { Link, RouteComponentProps, withRouter } from 'react-router-dom';\r\nimport { XContainer } from '../layout/XContainer';\r\nimport XStockLarge from './XStockLarge';\r\nimport XStockSmall from './XStockSmall';\r\n\r\ntype OwnProps = {\r\n stock: any;\r\n size: 'small' | 'large';\r\n onClick?: (param: string) => void;\r\n};\r\n\r\ntype AllProps = OwnProps & RouteComponentProps;\r\n\r\nconst XCatalog: React.FC = props => {\r\n const route = '/app/stock/' + props.stock.id;\r\n return (\r\n // \r\n \r\n {props.size === 'large' ? : }\r\n \r\n // \r\n );\r\n};\r\n\r\nexport default withRouter(XCatalog);\r\n","import { apiClient, ApiResult } from 'src/helpers/apiClient';\r\nimport { AddStockFormData, EditStockFormData, Mapping } from './types';\r\nimport { StockInterface } from 'src/models/Stock';\r\n\r\n\r\nexport const getStock = async (id: string): Promise => {\r\n const parameters = {\r\n Id: id\r\n };\r\n return await apiClient.postQueryAsync('GetStock', parameters);\r\n};\r\n\r\nexport const listStocks = async (): Promise => {\r\n return getStocks('ListStocks', {});\r\n};\r\n\r\nexport const listSubscribedStocks = async (): Promise => {\r\n return getStocks('ListSubscribedStocks', {});\r\n};\r\n\r\nconst getStocks = async (queryName: string, params?: any): Promise => {\r\n return await apiClient.postQueryAsync(queryName, params);\r\n};\r\n\r\nexport const deleteStock = async (id: string): Promise => {\r\n const command = {\r\n CommandName: 'DeleteStock',\r\n Id: id\r\n };\r\n return await apiClient.postCommandAsync(command);\r\n};\r\n\r\nexport async function addStock(param: AddStockFormData): Promise {\r\n const command = {\r\n CommandName: 'AddStock',\r\n OrganizationId: param.organizationId,\r\n Title: param.title,\r\n Description: param.description,\r\n FileFormatId: param.fileFormatId,\r\n FileFormatVersionId: param.fileFormatVersionId,\r\n InterfaceType: param.interfaceType,\r\n InterfaceMethod: param.interfaceMethod,\r\n InterfaceAuthentication: param.interfaceAuthentication,\r\n Settings: param.settings\r\n };\r\n\r\n return await apiClient.postCommandAsync(command);\r\n}\r\n\r\nexport const editStockAvailable = async (\r\n organizationIds: string[],\r\n stockId: string,\r\n available: boolean\r\n): Promise => {\r\n const command = {\r\n CommandName: 'EditStockAvailability',\r\n OrganizationIds: organizationIds,\r\n StockId: stockId,\r\n Available: available\r\n };\r\n return await apiClient.postCommandAsync(command);\r\n};\r\n\r\n\r\nexport const saveStockInterface = async (\r\n stockInterface: StockInterface,\r\n stockId?: string | undefined\r\n): Promise> => {\r\n const command = {\r\n CommandName: 'SaveStockInterface',\r\n StockId: stockId,\r\n StockInterfaceId: stockInterface.id,\r\n InterfaceType: stockInterface.type,\r\n InterfaceMethod: stockInterface.method,\r\n InterfaceAuthentication: stockInterface.authentication,\r\n Settings: stockInterface.settings\r\n };\r\n\r\n return await apiClient.postCommandAsync(command);\r\n};\r\n\r\nexport const editStock = async (id: string, formData: EditStockFormData): Promise => {\r\n const command = {\r\n CommandName: 'EditStock',\r\n StockId: id,\r\n Title: formData.title,\r\n Description: formData.description\r\n };\r\n return await apiClient.postCommandAsync(command);\r\n};\r\n\r\nexport const getFileFormats = async (): Promise => {\r\n return await apiClient.postQueryAsync('ListFileFormats', {});\r\n};\r\n\r\nexport const fileReaderCSV = async (file: File): Promise => {\r\n const command = {\r\n CommandName: 'StockFileReaderCSV',\r\n };\r\n\r\n return await apiClient.postCommandAsync(command, [file]);\r\n};\r\n\r\nexport const saveStockMapping = async (Mapping: Mapping, stockId: string, stockMappingId: string ): Promise => {\r\n const command = {\r\n CommandName: 'SaveStockMapping',\r\n StockId: stockId,\r\n StockMappingId: stockMappingId,\r\n Mapping: {\r\n MappingItems: Mapping.mappingItems,\r\n Delimiter: Mapping.delimiter\r\n }\r\n };\r\n return await apiClient.postCommandAsync(command);\r\n};\r\n\r\nexport const getStockMapping = async (id: string | undefined): Promise => {\r\n const parameters = {\r\n MappingId: id\r\n };\r\n return await apiClient.postQueryAsync('GetStockMapping', parameters);\r\n};\r\n","import { AnyAction, Dispatch } from 'redux';\r\nimport { commandAction, requestApiThunk } from 'src/helpers/actionHelpers';\r\nimport { ApiError, ApiResult } from 'src/helpers/apiClient';\r\nimport { FileFormat } from 'src/models/FileFormat';\r\nimport { Stock, StockModel, StockValidationSummary } from '../../models/Stock';\r\nimport { getMyOrganizationThunk } from '../organizations/actions';\r\nimport {\r\n deleteStock,\r\n editStock,\r\n editStockAvailable,\r\n getStock,\r\n getFileFormats,\r\n addStock,\r\n listStocks,\r\n listSubscribedStocks,\r\n} from './api';\r\nimport {\r\n ActionTypes,\r\n EditStockFormData,\r\n AddStockFormData\r\n} from './types';\r\n\r\nexport type FetchStatus = 'request' | 'success' | 'failure';\r\n\r\nexport type GetStocksAction = {\r\n type: ActionTypes.GET_STOCKS;\r\n status: FetchStatus;\r\n errors?: ApiError[];\r\n payload: {\r\n stocks?: Stock[];\r\n };\r\n};\r\n\r\nexport type GetSubscribedStocksAction = {\r\n type: ActionTypes.GET_SUBSCRIBED_STOCKS;\r\n status: FetchStatus;\r\n errors?: ApiError[];\r\n payload: {\r\n stocks?: Stock[];\r\n };\r\n};\r\n\r\nexport type GetStockAction = {\r\n type: ActionTypes.GET_STOCK;\r\n status: FetchStatus;\r\n errors?: ApiError[];\r\n payload: {\r\n stock?: StockModel;\r\n };\r\n};\r\n\r\nexport type GetFileFormatsAction = {\r\n type: ActionTypes.GET_FILE_FORMATS;\r\n status: FetchStatus;\r\n errors?: ApiError[];\r\n payload: {\r\n fileFormats?: FileFormat[];\r\n };\r\n};\r\n\r\nexport type AddStockAction = {\r\n type: ActionTypes.ADD_STOCK;\r\n errors?: ApiError[];\r\n status: FetchStatus;\r\n};\r\n\r\n// Action creators\r\nexport const getStockAction = (\r\n status: FetchStatus,\r\n data?: StockModel,\r\n errors?: ApiError[]\r\n): GetStockAction => ({\r\n type: ActionTypes.GET_STOCK,\r\n status,\r\n errors,\r\n payload: {\r\n stock: data\r\n }\r\n});\r\n\r\nexport const getFileFormatsAction = (\r\n status: FetchStatus,\r\n data?: FileFormat[],\r\n errors?: ApiError[]\r\n): GetFileFormatsAction => ({\r\n type: ActionTypes.GET_FILE_FORMATS,\r\n status,\r\n errors,\r\n payload: {\r\n fileFormats: data\r\n }\r\n});\r\n\r\nexport const addStockAction = (status: FetchStatus, errors?: ApiError[]): AddStockAction => ({\r\n type: ActionTypes.ADD_STOCK,\r\n errors,\r\n status\r\n});\r\n\r\n// Action thunks\r\nexport const getStockThunk = (id: string) => {\r\n return requestApiThunk(getStockAction, () => getStock(id));\r\n};\r\n\r\nexport const getStocksAction = (\r\n status: FetchStatus,\r\n data?: Stock[],\r\n errors?: ApiError[]\r\n): GetStocksAction => ({\r\n type: ActionTypes.GET_STOCKS,\r\n status,\r\n errors,\r\n payload: {\r\n stocks: data\r\n }\r\n});\r\n\r\nexport const getSubscribedStocksAction = (\r\n status: FetchStatus,\r\n data?: Stock[],\r\n errors?: ApiError[]\r\n): GetSubscribedStocksAction => ({\r\n type: ActionTypes.GET_SUBSCRIBED_STOCKS,\r\n status,\r\n errors,\r\n payload: {\r\n stocks: data\r\n }\r\n});\r\n\r\nexport const deleteStockThunk = (id: string) => {\r\n return requestApiThunk(\r\n (status: FetchStatus, data?: any, errors?: ApiError[]) =>\r\n commandAction(status, ActionTypes.DELETE_STOCK, errors),\r\n () => deleteStock(id)\r\n );\r\n};\r\n\r\nexport const getFileFormatsThunk = () => {\r\n return requestApiThunk(getFileFormatsAction, getFileFormats);\r\n};\r\n\r\nexport const editStockThunk = (id: string, formData: EditStockFormData) => {\r\n return async (dispatch: any) => {\r\n const catalogResult = await editStock(id, formData);\r\n if (catalogResult.IsSuccess) dispatch(getStockThunk(id));\r\n return catalogResult;\r\n };\r\n};\r\n\r\nexport const addStockThunk = (addStockFormData: AddStockFormData) => {\r\n return async (dispatch: Dispatch) => {\r\n dispatch(addStockAction('request'));\r\n const result = await addStock(addStockFormData);\r\n if (result.IsSuccess) {\r\n dispatch(addStockAction('success'));\r\n } else {\r\n dispatch(addStockAction('failure'));\r\n }\r\n\r\n return result;\r\n };\r\n};\r\n\r\nexport const editStockAvailableThunk = (\r\n organizationIds: string[],\r\n stockId: string,\r\n available: boolean\r\n) => {\r\n return requestApiThunk(\r\n (status: FetchStatus, data?: any, errors?: ApiError[]) =>\r\n commandAction(status, ActionTypes.EDIT_STOCK_AVAILABLE, errors),\r\n () => editStockAvailable(organizationIds, stockId, available),\r\n getMyOrganizationThunk()\r\n );\r\n};\r\n\r\n// Action thunks\r\nexport const getStocksThunk = () => {\r\n return async (dispatch: Dispatch) => {\r\n dispatch(getStocksAction('request'));\r\n\r\n const apiResult = await listStocks();\r\n if (apiResult.IsSuccess) {\r\n dispatch(getStocksAction('success', apiResult.Data));\r\n } else {\r\n dispatch(getStocksAction('failure', undefined, apiResult.Errors));\r\n }\r\n return apiResult;\r\n };\r\n};\r\n\r\nexport const getSubscribedStocksThunk = () => {\r\n return requestApiThunk(getSubscribedStocksAction, listSubscribedStocks);\r\n};\r\n\r\n// Export Action creator types\r\nexport type Action = GetStockAction | AddStockAction | GetFileFormatsAction | GetStocksAction | GetSubscribedStocksAction;\r\n","import * as React from 'react';\r\nimport { connect } from 'react-redux';\r\n\r\nimport styled from '@emotion/styled';\r\nimport { Link } from 'react-router-dom';\r\nimport XStock from 'src/components/domain/XStock';\r\nimport XNoContent from 'src/components/domain/XNoContent';\r\nimport XGrid from 'src/components/layout/XGrid';\r\nimport XPageContent from 'src/components/layout/XPageContent';\r\nimport { XPaper } from 'src/components/layout/XPaper';\r\nimport { ApplicationState } from 'src/store';\r\nimport { AuthenticationAccount } from 'src/store/authentication/types';\r\nimport { Stock, PublicationStatus } from 'src/models/Stock';\r\nimport { getStocksThunk } from 'src/store/stocks/actions';\r\n\r\nimport GridIcon from '@material-ui/icons/Apps';\r\nimport ListIcon from '@material-ui/icons/FormatListBulleted';\r\nimport { XImage, XImageContainer, XImageOverlay } from 'src/components/layout/XImage';\r\nimport XPaperHeader from 'src/components/layout/XPaperHeader';\r\nimport XScrollView from 'src/components/layout/XScrollView';\r\nimport { generateAvatar } from 'src/helpers/avatarGenerator';\r\nimport { formatDateToString, getImageUrl } from 'src/helpers/formatHelpers';\r\nimport { changeView } from 'src/store/layout/actions';\r\nimport { ViewType } from 'src/store/layout/types';\r\nimport EmptyImage from '../../style/images/empty.svg';\r\nimport { LinearProgress } from '@material-ui/core';\r\nimport { XSecActionButton } from 'src/components/layout/XActionButton';\r\nimport { XFilterBar } from 'src/components/layout/XFilterBar';\r\nimport XSearchBar from 'src/components/layout/XSearchBar';\r\nimport { Translation } from 'react-i18next';\r\nimport ErrorBoundary from 'src/components/shared/ErrorBoundary';\r\n\r\ntype StateProps = {\r\n account: AuthenticationAccount;\r\n stocks: Stock[];\r\n loading: boolean;\r\n view: ViewType;\r\n};\r\n\r\ntype DispatchProps = {\r\n changeView(type: ViewType): () => void;\r\n getStocks(): () => void;\r\n};\r\n\r\ntype OwnProps = {};\r\n\r\ntype State = {\r\n currentOffset: number;\r\n search: string;\r\n};\r\n\r\ntype AllProps = StateProps & DispatchProps & OwnProps;\r\n\r\nclass StocksPage extends React.Component {\r\n constructor(props: AllProps) {\r\n super(props);\r\n this.state = {\r\n currentOffset: 0,\r\n search: ''\r\n };\r\n }\r\n\r\n public componentDidMount() {\r\n this.props.getStocks();\r\n }\r\n\r\n public switchView(view) {\r\n this.props.changeView(view);\r\n }\r\n\r\n public handleScrollBottom() {\r\n if (this.state.currentOffset >= this.props.stocks.length) return;\r\n this.setState({ currentOffset: this.state.currentOffset + 30 });\r\n }\r\n\r\n public render() {\r\n const stocks = this.props.stocks.filter(\r\n c =>\r\n this.state.search.length === 0 ||\r\n c.title.toLowerCase().indexOf(this.state.search.toLowerCase()) !== -1\r\n );\r\n\r\n if (this.props.loading)\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n\r\n const pageSize = 1000;\r\n\r\n const paged = stocks.slice(0, this.state.currentOffset + pageSize);\r\n return (\r\n \r\n \r\n \r\n \r\n {t => (\r\n \r\n )}\r\n \r\n {stocks.length !== 0 && (\r\n \r\n
\r\n \r\n {t => (\r\n \r\n this.setState({ search: e.target.value.toLowerCase() })\r\n }>\r\n )}\r\n \r\n
\r\n
\r\n \r\n {t => (\r\n this.switchView(this.props.view === 'list' ? 'grid' : 'list')}>\r\n {this.props.view === 'list' ? (\r\n \r\n ) : (\r\n \r\n )}\r\n {this.props.view === 'list' ? 'Grid' : t('organizations.List')}\r\n \r\n )}\r\n \r\n
\r\n )}\r\n\r\n {stocks.length !== 0 && paged.length === 0 && (\r\n {t => }\r\n )}\r\n {!this.state.search.length && stocks.length === 0 && (\r\n \r\n
\r\n
\r\n )}\r\n this.handleScrollBottom()}>\r\n {this.props.view === 'grid' ? (\r\n \r\n {paged.map(dp => (\r\n \r\n ))}\r\n \r\n ) : (\r\n
\r\n {paged.map(c => (\r\n \r\n \r\n \r\n {\r\n e.target.onError = null;\r\n e.target.src = generateAvatar(c.title, 60);\r\n }}\r\n />\r\n \r\n \r\n \r\n {/* {c.title} */}\r\n {c.title}\r\n \r\n \r\n {/* \r\n {c.organizationName}\r\n */}\r\n {c.organizationName}\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\nconst mapStateToProps = (state: ApplicationState): StateProps => {\r\n return {\r\n loading: state.catalogs.data.all === undefined,\r\n account: state.authentication.account,\r\n view: state.layout.viewCatalogs,\r\n stocks: state.stocks.data.all || []\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch: any): DispatchProps => ({\r\n changeView: (type: ViewType) => dispatch(changeView('catalogs', type)),\r\n getStocks: () => dispatch(getStocksThunk())\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(StocksPage);\r\n\r\nconst StyledPaper = styled(XPaper)`\r\n min-height: 300px;\r\n`;\r\n\r\nconst StockRow = styled.div`\r\n display: flex;\r\n margin: 4px 0;\r\n`;\r\n\r\nconst StockImage = styled.div`\r\n max-width: 75px;\r\n flex: 1;\r\n`;\r\n\r\nconst StockCell = styled.div`\r\n flex: 1;\r\n font-size: 14px;\r\n padding-top: 4px;\r\n`;\r\n\r\nconst StockTitle = styled(StockCell)`\r\n padding-left: 15px;\r\n font-weight: bold;\r\n`;\r\n","import * as React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { RouteComponentProps } from 'react-router-dom';\r\n\r\nimport XPageRouter from 'src/components/shared/XPageRouter';\r\nimport { PageRoute } from 'src/models/Route';\r\nimport ShowStockPage from '../shared/ShowStockPage';\r\nimport StocksPage from './StocksPage';\r\n\r\ntype StateProps = {};\r\n\r\ntype DispatchProps = {};\r\n\r\ntype AllProps = StateProps & DispatchProps & RouteComponentProps;\r\n\r\nexport const StocksRoute: PageRoute = {\r\n path: `/app/explore/stocks`,\r\n exact: true,\r\n component: StocksPage\r\n};\r\n\r\n// stock\r\nexport const StockRoute: PageRoute = {\r\n path: `/app/explore/stock/:id`,\r\n exact: true,\r\n component: ShowStockPage\r\n};\r\n\r\nconst Routes: PageRoute[] = [StocksRoute, StockRoute];\r\n\r\nclass StocksRouter extends React.Component {\r\n public render() {\r\n return ;\r\n }\r\n}\r\n\r\nconst mapStateToProps = (): StateProps => {\r\n return {};\r\n};\r\n\r\nconst mapDispatchToProps = (): DispatchProps => ({});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(StocksRouter);\r\n","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { RouteComponentProps } from 'react-router-dom';\r\nimport XPageRouter from 'src/components/shared/XPageRouter';\r\nimport { PageRoute } from 'src/models/Route';\r\nimport { CatalogsRoute, CatalogRoute } from 'src/pages/catalogs/CatalogsRouter';\r\nimport {\r\n ConnectionsRoute,\r\n BrowseOrganizationsRoute,\r\n BrowseOrganizationRoute\r\n} from 'src/pages/connections/ConnectionsRouter';\r\nimport { StocksRoute, StockRoute } from 'src/pages/stock/StocksRouter';\r\n\r\ntype StateProps = {};\r\n\r\ntype DispatchProps = {};\r\n\r\ntype AllProps = StateProps & DispatchProps & RouteComponentProps;\r\n\r\nconst Routes: PageRoute[] = [\r\n ConnectionsRoute,\r\n BrowseOrganizationsRoute,\r\n BrowseOrganizationRoute,\r\n CatalogsRoute,\r\n StocksRoute,\r\n StockRoute,\r\n CatalogRoute\r\n];\r\n\r\nclass ExploreRouter extends React.Component {\r\n public render() {\r\n return ;\r\n }\r\n}\r\n\r\nconst mapStateToProps = (): StateProps => {\r\n return {};\r\n};\r\n\r\nconst mapDispatchToProps = (): DispatchProps => ({});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(ExploreRouter);\r\n","import React from 'react';\r\nimport { Translation } from 'react-i18next';\r\nimport { API_URL } from 'src/constants/ApiRoutes';\r\nimport { apiClient } from 'src/helpers/apiClient';\r\nimport './css/formsmain.css';\r\nimport i18n from 'i18next';\r\n\r\ntype State = {\r\n name: string;\r\n email: string;\r\n phone: string;\r\n message: string;\r\n loading: boolean;\r\n success: boolean;\r\n tried: boolean;\r\n};\r\n\r\nclass ContactPage extends React.Component<{}, State> {\r\n componentDidMount() {\r\n document.title = 'Arxis | Contact';\r\n }\r\n\r\n constructor(props: any) {\r\n super(props);\r\n this.state = {\r\n name: '',\r\n email: '',\r\n phone: '',\r\n message: '',\r\n loading: false,\r\n success: false,\r\n tried: false\r\n };\r\n\r\n this.submit = this.submit.bind(this);\r\n }\r\n\r\n public async submit(e) {\r\n e.preventDefault();\r\n this.setState({ loading: true, tried: true });\r\n if (this.state.loading || this.state.success) {\r\n return;\r\n }\r\n\r\n const required = ['name', 'email', 'message'];\r\n\r\n if (required.every(x => this.state[x].length > 0)) {\r\n const formData = {\r\n Name: this.state.name,\r\n Email: this.state.email,\r\n Phone: this.state.phone,\r\n Message: this.state.message\r\n };\r\n\r\n const response = await apiClient.postDataAsync(`${API_URL}contact`, formData);\r\n this.setState({ success: true });\r\n }\r\n this.setState({ loading: false });\r\n }\r\n\r\n public renderForm() {\r\n return (\r\n \r\n {t => {\r\n if (this.state.success)\r\n return (\r\n
\r\n \r\n {t('contact.success')}\r\n
\r\n \r\n );\r\n else\r\n return (\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n this.setState({ name: e.target.value })}\r\n />\r\n
\r\n \r\n \r\n \r\n
\r\n this.setState({ email: e.target.value })}\r\n />\r\n
\r\n \r\n \r\n \r\n
\r\n this.setState({ phone: e.target.value })}\r\n />\r\n
\r\n \r\n \r\n \r\n
\r\n this.setState({ message: e.target.value })}\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 public render() {\r\n return (\r\n \r\n {t => (\r\n
\r\n
\r\n
\r\n
\r\n
\r\n

\r\n

 

\r\n

{t('contact.contactUs')}

\r\n

 

\r\n \r\n

\r\n

\r\n
\r\n \r\n

\r\n \r\n {this.renderForm()}\r\n

\r\n

\r\n

\r\n
{' '}\r\n
\r\n
\r\n
\r\n )}\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default ContactPage;\r\n","import styled from '@emotion/styled';\r\nimport React, { Component, useState } from 'react';\r\nimport ItemsCarousel from 'react-items-carousel';\r\nimport { useMediaQuery } from 'react-responsive';\r\n\r\nconst handleDragStart = e => e.preventDefault();\r\nexport default () => {\r\n const [activeItemIndex, setActiveItemIndex] = useState(0);\r\n const chevronWidth = 40;\r\n\r\n let cards = 2;\r\n if (useMediaQuery({ minWidth: 767 })) cards = 4;\r\n if (useMediaQuery({ minWidth: 1267 })) cards = 6;\r\n\r\n return (\r\n
\r\n {'>'}}\r\n leftChevron={{'<'}}\r\n outsideChevron\r\n chevronWidth={chevronWidth}>\r\n {users.map(u => (\r\n
\r\n
\r\n {u.title}\r\n
\r\n
\r\n ))}\r\n \r\n
\r\n );\r\n};\r\n\r\nconst Bttn = styled('span')({\r\n display: 'inline-block',\r\n padding: '7px 14px',\r\n borderRadius: '50%',\r\n boxShadow: '0 15px 30px 0 rgba(0, 0, 0, .11), 0 5px 15px 0 rgba(0, 0, 0, .08)',\r\n fontSize: '20px'\r\n});\r\n\r\nconst Img = styled('img')({\r\n position: 'absolute',\r\n top: '50%',\r\n left: '50%',\r\n transform: 'translate(-50%, -50%)',\r\n maxHeight: '100%',\r\n maxWidth: '100%'\r\n});\r\n\r\nconst users = [\r\n {\r\n title: 'DeEekhoorn',\r\n img: require('../pages/images/users/DeEekhoorn.jpg')\r\n },\r\n {\r\n title: 'Artex',\r\n img: require('../pages/images/users/Artex.png')\r\n },\r\n {\r\n title: 'Cotap',\r\n img: require('../pages/images/users/cotap.png')\r\n },\r\n {\r\n title: 'Van Dyck',\r\n img: require('../pages/images/users/VanDyck.png')\r\n },\r\n {\r\n title: 'Eijerkamp',\r\n img: require('../pages/images/users/logo-eijerkamp.jpg')\r\n },\r\n {\r\n title: 'Maxfurn',\r\n img: require('../pages/images/users/Maxfurn.png')\r\n },\r\n {\r\n title: 'Bopita',\r\n img: require('../pages/images/users/Bopita.png')\r\n },\r\n {\r\n title: 'Gero Wonen',\r\n img: require('../pages/images/users/Gero wonen.jpg')\r\n },\r\n {\r\n title: 'Livingfurn',\r\n img: require('../pages/images/users/Livingfurn.jpg')\r\n },\r\n {\r\n title: 'Feelings',\r\n img: require('../pages/images/users/Feelings.png')\r\n },\r\n {\r\n title: 'LS Bedding',\r\n img: require('../pages/images/users/LS bedding.png')\r\n },\r\n {\r\n title: 'Groter in Wonen',\r\n img: require('../pages/images/users/Groterinwonen.png')\r\n },\r\n {\r\n title: 'Hjort Knudsen',\r\n img: require('../pages/images/users/HjortKnudsen.jpg')\r\n },\r\n {\r\n title: 'LABEL51',\r\n img: require('../pages/images/users/LABEL51.png')\r\n },\r\n {\r\n title: 'TMC Wonen',\r\n img: require('../pages/images/users/TMCwonen.png')\r\n },\r\n {\r\n title: 'HK Living',\r\n img: require('../pages/images/users/HKLiving.png')\r\n },\r\n {\r\n title: 'Woonland',\r\n img: require('../pages/images/users/Woonland.png')\r\n },\r\n {\r\n title: 'Odrada',\r\n img: require('../pages/images/users/odrada.png')\r\n },\r\n {\r\n title: 'Presenttime',\r\n img: require('../pages/images/users/presenttime.png')\r\n },\r\n {\r\n title: 'Jansen Totaal Wonen',\r\n img: require('../pages/images/users/Jansentotaalwonen.png')\r\n },\r\n {\r\n title: 'Perfecta',\r\n img: require('../pages/images/users/perfecta-01.png')\r\n },\r\n {\r\n title: 'DTP Interiors',\r\n img: require('../pages/images/users/DTPInteriors.png')\r\n },\r\n {\r\n title: 'Lucide',\r\n img: require('../pages/images/users/Lucide.png')\r\n },\r\n {\r\n title: 'Veldeman',\r\n img: require('../pages/images/users/veldeman.png')\r\n },\r\n {\r\n title: 'Light - Living',\r\n img: require('../pages/images/users/Light-living.jpg')\r\n },\r\n {\r\n title: 'Verberckmoes',\r\n img: require('../pages/images/users/verberckmoes.png')\r\n },\r\n {\r\n title: 'Bodilson',\r\n img: require('../pages/images/users/Bodilson.png')\r\n },\r\n {\r\n title: 'Den Ouden Wonen',\r\n img: require('../pages/images/users/denouden.jpg')\r\n },\r\n {\r\n title: 'IMS Benelux',\r\n img: require('../pages/images/users/IMSBenelux.png')\r\n },\r\n {\r\n title: 'Its about RoMi',\r\n img: require('../pages/images/users/itsaboutromi.png')\r\n },\r\n {\r\n title: 'Kayori',\r\n img: require('../pages/images/users/Kayori.png')\r\n },\r\n {\r\n title: 'Bonsnijder',\r\n img: require('../pages/images/users/bronsnijder.jpg')\r\n },\r\n {\r\n title: 'Vinke Beilen',\r\n img: require('../pages/images/users/vinke_beilen.jpg')\r\n },\r\n {\r\n title: 'Van der Linde voor Wonen en Slapen',\r\n img: require('../pages/images/users/linde_wonen_slapen.jpg')\r\n },\r\n {\r\n title: 'De Korte Woonsfeer',\r\n img: require('../pages/images/users/korte_woonsfeer.jpg')\r\n },\r\n {\r\n title: 'Hasker Kroon',\r\n img: require('../pages/images/users/hasker_kroon.jpg')\r\n },\r\n {\r\n title: 'Jacbos thuis en interieur',\r\n img: require('../pages/images/users/jacobs_thuis_interieur.jpg')\r\n }\r\n];\r\n\r\n//export default LTXUsers;\r\n","import styled from '@emotion/styled';\r\nimport React from 'react';\r\nimport { useState } from 'react';\r\nimport { Collapse } from 'react-collapse';\r\nimport { Translation } from 'react-i18next';\r\nfunction Question(props) {\r\n const [opened, setOpen] = useState(false);\r\n return (\r\n
\r\n setOpen(!opened)}>\r\n
\r\n {opened ? '- ' : '+ '}\r\n {props.question}\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n );\r\n}\r\n\r\nexport default () => {\r\n return (\r\n \r\n {t => (\r\n
\r\n
\r\n
\r\n
\r\n
{t('faq.general')}
\r\n \r\n \r\n
\r\n
\r\n
{t('faq.operation')}
\r\n \r\n \r\n
\r\n
\r\n
{t('faq.safety')}
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
{t('faq.formats')}
\r\n \r\n \r\n
\r\n
\r\n
{t('faq.customService')}
\r\n \r\n \r\n
\r\n
\r\n
{t('faq.pricing')}
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n )}\r\n
\r\n );\r\n};\r\n\r\nconst H6 = styled('h6')({\r\n fontWeight: 'bold',\r\n marginTop: '20px',\r\n marginBottom: '5px'\r\n});\r\n\r\nconst Card = styled('div')({\r\n borderRadius: '2px',\r\n padding: '5px',\r\n cursor: 'pointer',\r\n fontSize: '1.1em',\r\n '& .question': {\r\n fontWeight: 500\r\n },\r\n '& p': {\r\n marginTop: '5px',\r\n paddingLeft: '15px',\r\n borderLeft: '1px solid #eaeaea'\r\n },\r\n '& a': {\r\n fontWeight: 600\r\n }\r\n});\r\n//export default LTXUsers;\r\n","import React from 'react';\r\nimport { NavLink } from 'react-router-dom';\r\nimport LTXUsers from '../components/LTXUsers';\r\nimport LTXfaq from '../components/LTXfaq';\r\nimport { Element } from 'react-scroll';\r\nimport Scroll from 'react-scroll';\r\nimport { Translation } from 'react-i18next';\r\nimport i18n from 'i18next';\r\nconst ScrollLink = Scroll.Link;\r\n\r\ntype State = {\r\n infoTab: string;\r\n priceTabe: string;\r\n};\r\n\r\ntype Props = {\r\n openPopUp: () => void;\r\n};\r\n\r\nclass HomePage extends React.Component {\r\n componentDidMount() {\r\n document.title = 'Arxis | Het platform voor de woonbranche';\r\n }\r\n\r\n constructor(props: any) {\r\n super(props);\r\n\r\n this.state = {\r\n infoTab: 'catalog',\r\n priceTabe: 'retailer'\r\n };\r\n }\r\n\r\n changeInfoTab(tab: string) {\r\n this.setState({ infoTab: tab });\r\n }\r\n public language = () => {\r\n return i18n.language;\r\n };\r\n\r\n public render() {\r\n return (\r\n \r\n {t => {\r\n const retailers = [\r\n t('pricing.receiveUnlimitedCatalogs'),\r\n t('pricing.unlimitedOrderHistory')\r\n ];\r\n const suppliers = [\r\n t('pricing.publishUnlimitedCatalogs'),\r\n t('pricing.unlimitedOrderHistory')\r\n ];\r\n\r\n const prices = {\r\n retailer: [\r\n {\r\n name: 'Free',\r\n price: 0,\r\n items: [...retailers, 'Max. 1 ' + t('common.1supplier')]\r\n },\r\n {\r\n name: 'Premium I',\r\n price: 99,\r\n items: [...retailers, 'Max. 20 ' + t('common.suppliers')]\r\n },\r\n {\r\n name: 'Premium II',\r\n price: 199,\r\n items: [...retailers, 'Max. 50 ' + t('common.suppliers')]\r\n },\r\n {\r\n name: 'Premium III',\r\n price: 349,\r\n items: [...retailers, 'Max. 100 ' + t('common.suppliers')]\r\n },\r\n {\r\n name: 'Unlimited',\r\n price: t('pricing.priceCustom'),\r\n items: [...retailers, t('pricing.moreThan') + ' 100 ' + t('common.suppliers')]\r\n }\r\n ],\r\n supplier: [\r\n {\r\n name: 'Free',\r\n price: 0,\r\n items: [...suppliers, 'Max. 1 ' + t('common.1retailer')]\r\n },\r\n {\r\n name: 'Premium I',\r\n price: 199,\r\n items: [...suppliers, 'Max. 50 ' + t('common.retailers')]\r\n },\r\n {\r\n name: 'Premium II',\r\n price: 299,\r\n items: [...suppliers, 'Max. 100 ' + t('common.retailers')]\r\n },\r\n {\r\n name: 'Premium III',\r\n price: 499,\r\n items: [...suppliers, 'Max. 200 ' + t('common.retailers')]\r\n },\r\n {\r\n name: 'Unlimited',\r\n price: t('pricing.priceCustom'),\r\n items: [...suppliers, t('pricing.moreThan') + ' 100 ' + t('common.retailers')]\r\n }\r\n ]\r\n };\r\n return (\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n

\r\n {t('header.headline1')}\r\n
\r\n {t('header.headline2')}\r\n

\r\n

\r\n

{t('header.text')}

\r\n

 

\r\n
\r\n
\r\n \r\n
{t('common.tryNow')}
\r\n
\r\n {t('common.tryFree')}\r\n \r\n Whitepaper\r\n
\r\n \r\n {t('catalogs.downloadCatalogForMoreInfo')}\r\n \r\n \r\n
\r\n {t('common.wantDemo')}\r\n
\r\n \r\n {t('common.scheduleDemo')}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n {' '}\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n

{t('benefits.title')}

\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n {t('common.retailer')}\r\n
\r\n

\r\n {['retailer1', 'retailer2', 'retailer3'].map(key => (\r\n

\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n {t('benefits.' + key)}\r\n
\r\n
\r\n ))}\r\n

\r\n

\r\n
\r\n
\r\n {t('common.supplier')}\r\n
\r\n

\r\n {['supplier1', 'supplier2', 'supplier3'].map(key => (\r\n

\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n {t('benefits.' + key)}\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

{t('safety.title')}

\r\n

\r\n {['controlConnections', 'protectedCatalogs', 'exclusiveCatalogs'].map(key => (\r\n

\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n {t('safety.' + key)}\r\n
\r\n
\r\n ))}\r\n

\r\n

\r\n
\r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n {' '}\r\n
\r\n
\r\n \r\n
\r\n
\r\n

\r\n {t('pricing.headline')}\r\n {t('pricing.title')}\r\n

\r\n
\r\n
\r\n
    \r\n this.setState({ priceTabe: 'retailer' })}>\r\n {t('common.retailer')}\r\n \r\n   /  \r\n this.setState({ priceTabe: 'supplier' })}>\r\n {t('common.supplier')}\r\n \r\n
\r\n
\r\n
\r\n {prices[this.state.priceTabe].map(p => (\r\n
\r\n
{p.name}
\r\n {Number.isInteger(p.price) && (\r\n
\r\n
€{p.price},-
\r\n
{t('pricing.perMonth')}
\r\n
\r\n )}\r\n {!Number.isInteger(p.price) && (\r\n
\r\n
{p.price}
\r\n
 
\r\n
\r\n )}\r\n \r\n \r\n {t('common.tryNow')}\r\n
\r\n \r\n
\r\n
\r\n {p.items.map(i => (\r\n \r\n \r\n \r\n
\r\n \r\n {i}\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 {t('join.headline')}\r\n {t('join.forRetailer.title')}\r\n

\r\n

\r\n

\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n   1.    {t('join.createAccount')}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n   2.    {t('join.connect')}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n \r\n   3.    {t('join.forRetailer.receive')}\r\n \r\n
\r\n
\r\n \r\n

\r\n
\r\n

{t('join.forSupplier.title')}

\r\n

\r\n

\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n   1.    {t('join.createAccount')}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n   2.    {t('join.connect')}\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n \r\n   3.   {t('join.forSupplier.publish')}\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n \r\n window.location.assign(`${window.location.href}register`)\r\n }\r\n to={'/register'}\r\n title=\"Maak een account\"\r\n className=\"button start try\">\r\n {t('join.startNow')}\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n {this.language() == 'nl' && (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n {' '}\r\n \r\n
\r\n

{t('faq.title')}

\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n {' '}\r\n \r\n )}\r\n \r\n );\r\n }}\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default HomePage;\r\n","import React, { useEffect } from 'react';\r\nimport styled from '@emotion/styled';\r\nimport { keyframes } from '@emotion/core';\r\nimport ArxisLogo from './images/svg/arxisdef.svg';\r\nimport LTXLogo from './images/svg/ltx-logo.svg';\r\n\r\nfunction DomainRedirectPage() {\r\n useEffect(() => {\r\n let redirect = setTimeout(() => window.location.replace('https://arxis.io/'), 6000);\r\n\r\n return () => {\r\n clearTimeout(redirect);\r\n };\r\n }, []);\r\n\r\n return (\r\n \r\n \r\n

LTX is nu Arxis

\r\n

U wordt over enkele seconden doorgestuurd

\r\n
\r\n \r\n \r\n \"LTX\"\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \"Arxis\"\r\n \r\n \r\n
\r\n );\r\n}\r\n\r\nexport default DomainRedirectPage;\r\n\r\nconst pulse = keyframes`{\r\n\t0% {\t\r\n transform: scale(1);}\r\n\t\r\n\t}\r\n\t\r\n\t50% {\r\n\t\ttransform: scale(1.05);\r\n\t\r\n\t}\r\n\t\r\n\t100% {\r\n\t\ttransform: scale(1);\r\n\t\r\n\t}\r\n}\r\n`;\r\n\r\nconst XRedirectPage = styled.div`\r\n position: fixed;\r\n height: 100vh;\r\n width: 100vw;\r\n background: linear-gradient(90deg, #371a90, #2f4cce);\r\n display: flex;\r\n flex-direction: column;\r\n justify-content: center;\r\n align-items: center;\r\n @media (max-width: 768px) {\r\n position: relative;\r\n justify-content: start;\r\n }\r\n`;\r\n\r\nconst XRedirectHeaderContainer = styled.div`\r\n color: white;\r\n display: flex;\r\n flex-direction: column;\r\n justify-content: center;\r\n align-items: center;\r\n margin-bottom: 2rem;\r\n @media (max-width: 768px) {\r\n margin-top: 2rem;\r\n & h2 {\r\n font-size: 2rem;\r\n }\r\n\r\n & h3 {\r\n font-size: 1rem;\r\n padding: 0 2rem;\r\n }\r\n }\r\n`;\r\n\r\nconst XRedirectSection = styled.div`\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n width: 50rem;\r\n\r\n @media (max-width: 768px) {\r\n flex-direction: column;\r\n width: fit-content;\r\n height: 70vh;\r\n }\r\n`;\r\n\r\nconst XRedirectArrow = styled.div`\r\n animation: ${pulse} 2s infinite;\r\n\r\n & svg {\r\n height: 10em;\r\n }\r\n\r\n @media (max-width: 768px) {\r\n & svg {\r\n height: 4em;\r\n transform: rotate(90deg);\r\n }\r\n }\r\n`;\r\n\r\nconst XRedirectLogo = styled.div`\r\n animation: ${pulse} 2s infinite;\r\n\r\n & img {\r\n height: 20em;\r\n }\r\n @media (max-width: 768px) {\r\n & img {\r\n height: 15em;\r\n }\r\n }\r\n`;\r\n","import React from 'react';\r\nimport { NavLink, Route, RouteComponentProps, Switch } from 'react-router-dom';\r\nimport './bootstrap.css';\r\nimport './index.css';\r\nimport ContactPage from './pages/ContactPage';\r\nimport HomePage from './pages/HomePage';\r\nimport DomainRedirectPage from './pages/DomainRedirectPage';\r\nimport Scroll from 'react-scroll';\r\nimport i18n from 'i18next';\r\nimport { initReactI18next, Translation } from 'react-i18next';\r\nimport { initLeadInfo } from './leadinfo';\r\nimport translationEN from './locales/en.json';\r\nimport translationNL from './locales/nl.json';\r\nimport LanguageDetector from 'i18next-browser-languagedetector';\r\nimport { apiClient } from '../../helpers/apiClient';\r\nimport { API_URL_ACCOUNT } from 'src/constants/ApiRoutes';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\n\r\nconst ScrollLink = Scroll.Link;\r\n\r\ntype State = {\r\n nav: boolean;\r\n scrolled: boolean;\r\n whitePaperPopUp: boolean;\r\n email: string;\r\n valid: boolean;\r\n};\r\n\r\nclass IndexPage extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n\r\n this.state = {\r\n nav: false,\r\n scrolled: false,\r\n whitePaperPopUp: false,\r\n email: '',\r\n valid: true\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n window.addEventListener('scroll', this.handleScroll);\r\n initLeadInfo();\r\n }\r\n\r\n componentWillUnmount() {\r\n window.removeEventListener('scroll', this.handleScroll);\r\n }\r\n public handleScroll = () => {\r\n var doc = document.documentElement;\r\n var top = (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0);\r\n this.setState({ scrolled: top > 100 });\r\n };\r\n\r\n public changeLanguage = lng => {\r\n i18n.changeLanguage(lng);\r\n };\r\n\r\n public language = () => {\r\n return i18n.language;\r\n };\r\n\r\n openPopUp = () => {\r\n this.setState({ whitePaperPopUp: true });\r\n };\r\n\r\n closePopUp = () => {\r\n this.setState({ whitePaperPopUp: false });\r\n };\r\n\r\n sendEmailDowloadNotification = async () => {\r\n if (this.state.email.length > 0 && this.state.valid) {\r\n const command = {\r\n CommandName: 'SendWhitePaperDownloadedNotification',\r\n Email: this.state.email\r\n };\r\n return await apiClient.postDataAsync(API_URL_ACCOUNT, command);\r\n } else return;\r\n };\r\n\r\n validateEmail(email) {\r\n const re = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\r\n return re.test(email);\r\n }\r\n\r\n handleEmailChange(e) {\r\n const email = e.target.value;\r\n const emailValid = this.validateEmail(email);\r\n\r\n this.setState({\r\n email: e.target.value,\r\n valid: emailValid\r\n });\r\n }\r\n\r\n public render() {\r\n const scrollPages = [\r\n {\r\n title: 'benefits',\r\n to: 'features'\r\n },\r\n {\r\n title: 'references',\r\n to: 'users'\r\n },\r\n {\r\n title: 'pricing',\r\n to: 'pricing'\r\n }\r\n ];\r\n\r\n if (this.language() === 'nl')\r\n scrollPages.push({\r\n title: 'faq',\r\n to: 'faq'\r\n });\r\n return (\r\n \r\n {t => (\r\n
\r\n \r\n
\r\n {' '}\r\n {/* Brand and toggle get grouped for better mobile display */}\r\n this.setState({ nav: !this.state.nav })}\r\n data-toggle=\"collapse\"\r\n data-target=\"#bs-example-navbar-collapse-1\"\r\n aria-controls=\"bs-example-navbar-collapse-1\"\r\n aria-expanded=\"false\"\r\n aria-label=\"Toggle navigation\">\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 Home\r\n \r\n \r\n \r\n {this.props.location.pathname === '/' &&\r\n scrollPages.map(x => (\r\n \r\n \r\n {t('menu.' + x.title)}\r\n \r\n \r\n ))}\r\n\r\n \r\n \r\n Contact\r\n \r\n \r\n\r\n this.changeLanguage(this.language() === 'en' ? 'nl' : 'en')}>\r\n {this.language() === 'en'}\r\n \r\n \r\n
\r\n
{' '}\r\n
\r\n \r\n window.location.assign(`${window.location.href}login`)}\r\n to={'/login'}\r\n title={t('menu.goToAppButton')}\r\n className=\"button my-ltx d-none d-md-inline-block\">\r\n {t('menu.goToAppButton')}\r\n \r\n
\r\n
\r\n
\r\n \r\n
    \r\n \r\n \r\n Home\r\n \r\n \r\n {this.props.location.pathname === '/' &&\r\n scrollPages.map(x => (\r\n \r\n this.setState({ nav: false })}\r\n activeClass=\"some-active-class\">\r\n {t('menu.' + x.title)}\r\n \r\n \r\n ))}\r\n \r\n \r\n Contact\r\n \r\n \r\n
\r\n
{' '}\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n

\r\n

\r\n
\r\n
\r\n
\r\n

Contact

\r\n
\r\n
\r\n
\r\n

\r\n E-mail\r\n
\r\n info@arxis.io\r\n

\r\n
\r\n
\r\n
\r\n
\r\n

\r\n Telefoon\r\n
\r\n +31 (0) 88 2400 110\r\n

\r\n
\r\n
\r\n
\r\n
\r\n

\r\n {t('footer.address')}\r\n
\r\n \r\n Piet Heinkade 55\r\n
\r\n 1019 GM Amsterdam\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     © {new Date().getFullYear()} | All rights reserved.\r\n

\r\n
\r\n
\r\n
\r\n
\r\n
\r\n {this.state.whitePaperPopUp && (\r\n
\r\n
\r\n \r\n
Whitepaper
\r\n
\r\n \r\n
\r\n
\r\n
\r\n {t('whitepaper.enterEmailToDownloadWhitepaper')}\r\n
\r\n
\r\n \r\n\r\n {this.state.email.length > 0 && !this.state.valid && (\r\n Invalid e-mail address\r\n )}\r\n
\r\n {this.state.email.length > 0 && this.state.valid ? (\r\n \r\n 0 && this.state.valid\r\n ? 'button'\r\n : 'button disable'\r\n }\r\n onClick={this.sendEmailDowloadNotification}>\r\n Download\r\n
\r\n \r\n ) : (\r\n
\r\n Download\r\n
\r\n )}\r\n
\r\n \r\n )}\r\n \r\n )}\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default IndexPage;\r\n","\r\n\r\nexport const initLeadInfo = () => {\r\n (function(l,e,a,d,i,n,f,o){if(!l[i]){l.GlobalLeadinfoNamespace=l.GlobalLeadinfoNamespace||[]; l.GlobalLeadinfoNamespace.push(i);l[i]=function(){(l[i].q=l[i].q||[]).push(arguments)};l[i].t=l[i].t||n; l[i].q=l[i].q||[];o=e.createElement(a);f=e.getElementsByTagName(a)[0];o.async=1;o.src=d;f.parentNode.insertBefore(o,f);} }(window,document,\"script\",\"https://cdn.leadinfo.net/ping.js\",\"leadinfo\",\"LI-5FAAA46FBC041\"))\r\n} \r\n","import { css, keyframes } from '@emotion/core';\r\nimport styled from '@emotion/styled';\r\nimport { FormControl } from '@material-ui/core';\r\nimport Button from '@material-ui/core/Button';\r\nimport Input from '@material-ui/core/Input';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport ArrowRight from '@material-ui/icons/KeyboardArrowRight';\r\n\r\nconst bounce = keyframes`\r\n 0% { transform: scale(0); opacity:0;}\r\n 50% { transform: scale(1.2); opacity:0.4;}\r\n 75% { transform: scale(0.95); opacity:0.7;}\r\n 100% { transform: scale(1); opacity:1}\r\n `;\r\n\r\nexport const LTXLogo = styled('img')({\r\n position: 'absolute',\r\n left: '0',\r\n right: '0',\r\n top: 'calc(50% - 100px)',\r\n marginLeft: 'auto',\r\n marginRight: 'auto',\r\n maxHeight: '200px',\r\n maxWidth: '200px',\r\n animationName: bounce,\r\n animationDuration: '.6s'\r\n});\r\n\r\nexport const LoginContainer = styled('div')({\r\n width: '100%',\r\n height: '100vh',\r\n display: 'flex',\r\n overflow: 'hidden'\r\n});\r\n\r\nexport const LoginPaper = styled(Paper)({\r\n position: 'relative',\r\n top: '15%',\r\n backgroundColor: '#fff',\r\n marginLeft: 'auto',\r\n marginRight: 'auto',\r\n width: '550px',\r\n paddingBottom: '100px',\r\n borderRadius: '0px',\r\n boxShadow: '2px 2px 6px 0 rgba(0,0,0,0.15)',\r\n '& header': {\r\n fontWeight: 'bold',\r\n fontSize: '20px',\r\n marginBottom: '15px',\r\n marginTop: '55px',\r\n marginLeft: '15px'\r\n }\r\n});\r\n\r\nexport const LoginContent = styled('div')({\r\n margin: '25px',\r\n display: 'flex',\r\n flexDirection: 'column'\r\n});\r\n\r\nexport const LoginInput = styled(Input)({\r\n margin: '15px',\r\n marginLeft: '35px',\r\n width: '75%'\r\n});\r\n\r\nexport const LoginButtonContainer = styled('div')({\r\n margin: '15px 15px 30px 15px',\r\n display: 'flex',\r\n justifyContent: 'space-between'\r\n});\r\n\r\nexport const Form = styled(FormControl)({\r\n width: '100%'\r\n});\r\n\r\nexport const LoginButton = styled(Button)({\r\n backgroundColor: '#81cd96',\r\n width: '115px',\r\n textTransform: 'none',\r\n fontFamily: 'Montserrat-Bold'\r\n});\r\n\r\nexport const LoginPaperFooter = styled('div')({\r\n position: 'absolute',\r\n bottom: 0,\r\n height: '15%',\r\n width: '100%'\r\n});\r\n\r\nexport const FooterText = styled('div')({\r\n display: 'flex',\r\n 'align-content': 'space-between',\r\n '& div': '6px',\r\n '& a': { fontWeight: 'bold', fontSize: '13px' }\r\n});\r\n\r\nconst fadeIn = keyframes`\r\n 0% { transform: translateX(100px); opacity:0;}\r\n 25% { transform: translateX(100px); opacity:0;}\r\n 60% { transform: translateX(-20px); opacity:0.4;}\r\n 83% { transform: translateX(5px); opacity:0.7;}\r\n 100% { transform: translateX(0); opacity:1}\r\n `;\r\n\r\nexport const InformationPaper = styled('div')({\r\n position: 'relative',\r\n top: 'calc(50% - 50px)',\r\n marginLeft: 'auto',\r\n marginRight: 'auto',\r\n width: '550px',\r\n height: '100px',\r\n backgroundColor: 'rgba(0,0,0,0)',\r\n\r\n '& #topHeader': {\r\n marginTop: '12px',\r\n fontWeight: 'bold',\r\n fontSize: '34px',\r\n lineHeight: '45px',\r\n color: '#fff',\r\n animationName: fadeIn,\r\n animationDuration: '.9s'\r\n }\r\n});\r\n\r\nexport const InformationContent = styled('div')({\r\n width: '100%',\r\n height: '100vh',\r\n\r\n '& #topLabel': {\r\n lineHeight: '22px'\r\n }\r\n});\r\n\r\nexport const InformationBlock = styled('div')({\r\n display: 'flex',\r\n flexDirection: 'row',\r\n marginBottom: '20px',\r\n\r\n '& #blockHeader': {\r\n fontWeight: 'bold',\r\n fontSize: '15px',\r\n color: '#fff'\r\n },\r\n\r\n '& #blockLabel': {\r\n fontSize: '12px',\r\n color: '#fff'\r\n }\r\n});\r\n\r\nexport const InformationButtonContainer = styled('div')({\r\n display: 'inline-block',\r\n marginTop: '30px',\r\n\r\n '& a': {\r\n textDecoration: 'none'\r\n }\r\n});\r\n\r\nexport const ArrowIcon = styled(ArrowRight)({\r\n color: '#fff',\r\n height: '40px',\r\n width: '40px'\r\n});\r\n\r\nexport const LeftSide = styled('div')({\r\n backgroundColor: '#2D80C2',\r\n width: '50%',\r\n borderRadius: '0px'\r\n});\r\n\r\nexport const LeftSideInner = styled.div`\r\n margin-left: calc(50% - 250px);\r\n height: 100vh;\r\n display: flex;\r\n width: 500px;\r\n align-items: center;\r\n`;\r\n\r\nexport const RightSide = styled('div')({\r\n width: '50%',\r\n height: 'auto',\r\n borderRadius: '0px',\r\n backgroundImage: 'url(' + require('../../style/images/background.jpg') + ')',\r\n backgroundSize: 'cover',\r\n backgroundPosition: 'center',\r\n backgroundRepeat: 'no-repeat'\r\n});\r\n","import * as React from 'react';\r\n\r\nimport styled from '@emotion/styled';\r\nimport { InformationContent, InformationPaper } from 'src/pages/login/LoginPage.style';\r\nimport { Translation } from 'react-i18next';\r\n\r\ntype OwnProps = {};\r\n\r\ntype AllProps = OwnProps;\r\n\r\nconst XLTXInformation: React.SFC = () => {\r\n return (\r\n \r\n \r\n \r\n {t =>
{t('header.arxisPlatform')}
}\r\n
\r\n\r\n \r\n
\r\n \r\n Piet Heinkade 55\r\n \r\n
\r\n
\r\n \r\n 1019 GM Amsterdam, Nederland\r\n \r\n
\r\n
\r\n info@arxis.io\r\n
\r\n
\r\n +31 (0) 88 2400 110\r\n
\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default XLTXInformation;\r\n\r\nconst ContactLink = styled.a`\r\n color: #ccc;\r\n text-decoration: none;\r\n\r\n &:hover {\r\n color: #ccc;\r\n }\r\n`;\r\n\r\nconst ContactInfo = styled.div`\r\n color: #ccc;\r\n position: fixed;\r\n right: 50px;\r\n bottom: 50px;\r\n text-align: right;\r\n`;\r\n","import * as React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { Link, Redirect, RouteComponentProps } from 'react-router-dom';\r\nimport { Action } from 'redux';\r\n\r\nimport styled from '@emotion/styled';\r\nimport { ThunkDispatch } from 'redux-thunk';\r\nimport XLTXInformation from 'src/components/domain/XLTXInformation';\r\nimport XButton, { XButtonStyle } from 'src/components/layout/XButton';\r\nimport { XContainer } from 'src/components/layout/XContainer';\r\nimport XForm from 'src/components/layout/XForm';\r\nimport { XPaperCenter, XPaperTitleLarge } from 'src/components/layout/XPaper';\r\nimport { PublicPages } from 'src/pages/Routes';\r\nimport { loginRequestThunk } from 'src/store/authentication/actions';\r\nimport { AuthenticationState } from 'src/store/authentication/types';\r\nimport { showNotification } from 'src/store/layout/actions';\r\nimport { MessageType } from 'src/store/layout/types';\r\nimport { ApplicationState } from '../../store/index';\r\nimport Logo from '../../style/images/logos/main.svg';\r\nimport {\r\n FooterText,\r\n LeftSide,\r\n LoginButtonContainer,\r\n LoginContainer,\r\n LTXLogo,\r\n RightSide\r\n} from './LoginPage.style';\r\nimport { Translation } from 'react-i18next';\r\n\r\ntype StateProps = {\r\n authentication: AuthenticationState;\r\n loading: boolean;\r\n};\r\n\r\ntype DispatchProps = {\r\n loginAccount: (username: string, password: string) => void;\r\n showNotification: (text: string, type: MessageType) => void;\r\n};\r\n\r\ntype OwnProps = {};\r\n\r\ntype AllProps = StateProps &\r\n DispatchProps &\r\n OwnProps &\r\n RouteComponentProps<{ redirectURL?: string }>;\r\n\r\ntype State = {\r\n showForm: boolean;\r\n formData: { email: string; password: string };\r\n};\r\n\r\nclass LoginPage extends React.Component {\r\n constructor(props: AllProps) {\r\n super(props);\r\n\r\n this.state = {\r\n showForm: true,\r\n formData: { email: '', password: '' }\r\n };\r\n\r\n if (window.location.href.indexOf('sessionExpired=1') !== -1)\r\n this.props.showNotification('Sessie verlopen, log opnieuw in om door te gaan', 'info');\r\n }\r\n\r\n public handleLoginClick = (): void => {\r\n const { email, password } = this.state.formData;\r\n this.props.loginAccount(email, password);\r\n };\r\n\r\n public handleRegisterClick = (): void => {\r\n this.props.history.push(PublicPages[3].path);\r\n };\r\n\r\n public handleFormChange = (name: string, value: string) => {\r\n const formData = Object.assign({}, this.state.formData);\r\n formData[name] = value;\r\n this.setState({ formData });\r\n };\r\n\r\n public render() {\r\n if (this.props.authentication.isAuthenticated) {\r\n if (this.props.match.params.redirectURL && this.props.match.params.redirectURL.length > 3)\r\n return ;\r\n else\r\n return (\r\n \r\n );\r\n }\r\n\r\n return (\r\n \r\n \r\n {\r\n window.location.replace('https://arxis.io/');\r\n }}>\r\n \r\n
\r\n \r\n {t => {t('login.login')} }\r\n \r\n
\r\n \r\n {t => (\r\n \r\n )}\r\n \r\n
\r\n
\r\n {this.props.authentication.authenticationError !== undefined && (\r\n
\r\n {this.props.authentication.authenticationError}\r\n
\r\n )}\r\n \r\n \r\n \r\n \r\n {t => (\r\n \r\n {t('login.forgotPassword')}\r\n \r\n )}\r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n {t => {t('join.createAccount')}}\r\n \r\n \r\n \r\n {t => (\r\n \r\n {t('login.LOGIN')}\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 {t => {t('login.notAvailableForMobile')} }\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state: ApplicationState): StateProps => {\r\n return {\r\n authentication: state.authentication,\r\n loading: state.authentication.loading\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (\r\n dispatch: ThunkDispatch\r\n): DispatchProps => ({\r\n loginAccount: (email: string, password: string) => dispatch(loginRequestThunk(email, password)),\r\n showNotification: (text: string, type: MessageType) => dispatch(showNotification(text, type))\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(LoginPage);\r\n\r\nconst FooterLine = styled.div`\r\n text-align: right;\r\n & a {\r\n color: #666;\r\n }\r\n`;\r\n\r\nconst MobileDevice = styled.div`\r\n z-index: 5;\r\n text-align: center;\r\n background: white;\r\n position: fixed;\r\n top: 0;\r\n left: 0\r\n width: 100%;\r\n height: 100%;\r\n padding: 50px;\r\n display: flex;\r\n @media (min-width: 718px) {\r\n display: none;\r\n }\r\n`;\r\n","import * as React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { Redirect, RouteComponentProps } from 'react-router-dom';\r\n\r\nimport styled from '@emotion/styled';\r\nimport Cookies from 'js-cookie';\r\nimport { Action } from 'redux';\r\nimport { ThunkDispatch } from 'redux-thunk';\r\nimport XLTXInformation from 'src/components/domain/XLTXInformation';\r\nimport { XPaper } from 'src/components/layout/XPaper';\r\nimport { ApplicationState } from 'src/store';\r\nimport { logoutThunk } from 'src/store/authentication/actions';\r\nimport { AuthenticationState } from 'src/store/authentication/types';\r\nimport Logo from '../../style/images/logos/main.svg';\r\nimport { LeftSide, LeftSideInner, LTXLogo, RightSide } from './LoginPage.style';\r\nimport { Translation } from 'react-i18next';\r\n\r\ntype OwnProps = {};\r\n\r\ntype DispatchProps = {\r\n logout: () => Promise;\r\n};\r\n\r\ntype AllProps = OwnProps & DispatchProps & RouteComponentProps;\r\n\r\nclass LogoutPage extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n }\r\n\r\n public componentDidMount() {\r\n this.props.logout();\r\n this.props.history.push('/login');\r\n }\r\n\r\n public render() {\r\n return (\r\n \r\n \r\n \r\n \r\n {t =>
{t('login.loggedOutS')}
}
\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\nconst mapStateToProps = (state: ApplicationState) => {\r\n return {};\r\n};\r\n\r\nconst mapDispatchToProps = (\r\n dispatch: ThunkDispatch\r\n): DispatchProps => ({\r\n logout: () => dispatch(logoutThunk())\r\n});\r\nexport default connect(mapStateToProps, mapDispatchToProps)(LogoutPage);\r\n\r\nconst LogoutLayout = styled.div`\r\n height: 100vh;\r\n overflow: hidden;\r\n background: rgb(45, 128, 194);\r\n display: flex;\r\n`;\r\n\r\nconst LogoutInner = styled(XPaper)`\r\n padding: 30px;\r\n text-align: center;\r\n width: 500px;\r\n height: 120px;\r\n top: calc(50% - 60px);\r\n left: calc(50% - 250px);\r\n position: absolute;\r\n`;\r\n","import styled from '@emotion/styled';\r\nimport * as React from 'react';\r\n\r\nimport { Tooltip } from '@material-ui/core';\r\nimport DeleteIcon from '@material-ui/icons/Clear';\r\nimport CheckCircleIcon from '@material-ui/icons/CheckCircle';\r\nimport NotInterestedIcon from '@material-ui/icons/NotInterested';\r\nimport { Link } from 'react-router-dom';\r\nimport { Countries } from 'src/constants/Countries';\r\nimport { DataConnection, Organization } from 'src/models/Organization';\r\nimport { OrganizationGroup } from 'src/models/OrganizationGroup';\r\nimport { XRowCell } from '../layout/XRow';\r\nimport { TableRow } from '../layout/XTable';\r\nimport { formatDateToString } from 'src/helpers/formatHelpers';\r\nimport { Translation } from 'react-i18next';\r\nimport { CatalogMessageModel } from '../../models/Message';\r\n\r\ntype OwnProps = {\r\n catalogMessages?: CatalogMessageModel[];\r\n organization: Organization;\r\n dataConnection?: DataConnection;\r\n link?: string;\r\n showDelete?: boolean;\r\n showConnectionDate?: boolean;\r\n showLiveConnection?: boolean;\r\n liveConnection?: boolean;\r\n onDelete?: () => void;\r\n organizationGroups?: OrganizationGroup[];\r\n onGroupChanged?: (val: string) => void;\r\n showDownloads?: boolean;\r\n};\r\n\r\ntype AllProps = OwnProps;\r\n\r\nconst XOrganizationRow: React.SFC = props => {\r\n const content = (\r\n \r\n {props.organization.name}\r\n \r\n {props.organization.city},{' '}\r\n {Countries.find(c => c.value === props.organization.country)?.name}\r\n \r\n {props.showConnectionDate && (\r\n {formatDateToString(props.organization.connectionDate)}\r\n )}\r\n {(props.showDownloads === true && (\r\n \r\n {t => (\r\n \r\n {props.catalogMessages === undefined ? '0' : props.catalogMessages?.find(x => x.toOrganizationId === props.organization.id)?.downloads}x {t('catalogs.downloaded')}\r\n \r\n )}\r\n \r\n ))}\r\n {props.catalogMessages !== undefined && (\r\n \r\n {props.catalogMessages?.find(x => x.toOrganizationId === props.organization.id)?.lastDownloadedDate\r\n ? formatDateToString(props.catalogMessages?.find(x => x.toOrganizationId === props.organization.id)?.lastDownloadedDate)\r\n : ''}\r\n \r\n )}\r\n {props.showLiveConnection && (\r\n \r\n {props.liveConnection ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n )}\r\n\r\n {props.showDelete && (\r\n \r\n \r\n {t => (\r\n \r\n {\r\n if (props.onDelete) props.onDelete();\r\n e.preventDefault();\r\n }}\r\n />\r\n \r\n )}\r\n \r\n \r\n )}\r\n \r\n );\r\n\r\n return props.link ? {content} : content;\r\n};\r\n\r\nexport default XOrganizationRow;\r\n\r\nconst TitleCell = styled(XRowCell)``;\r\n","import React, { FC, useCallback, useEffect, useState } from 'react';\r\nimport { useDropzone } from 'react-dropzone';\r\nimport styled from '@emotion/styled';\r\n\r\ntype OwnProps = {\r\n handleFileChange: (file: any) => void;\r\n};\r\n\r\nconst getColor = props => {\r\n if (props.isDragAccept) {\r\n return '#4caf50';\r\n }\r\n if (props.isDragReject) {\r\n return '#f44336';\r\n }\r\n if (props.isDragActive) {\r\n return '#3280c3';\r\n }\r\n return '#eeeeee';\r\n};\r\n\r\nexport const XDragAndDropFilesUpload: FC = props => {\r\n const [files, setFiles] = useState(null);\r\n const onDrop = useCallback(acceptedFiles => {\r\n setFiles(acceptedFiles);\r\n }, []);\r\n const { acceptedFiles, getRootProps, getInputProps, isDragActive, isDragAccept, isDragReject } = useDropzone({\r\n maxFiles: 3,\r\n onDrop\r\n });\r\n\r\n useEffect(() => {\r\n props.handleFileChange(acceptedFiles);\r\n }, [acceptedFiles]);\r\n\r\n return (\r\n
\r\n \r\n \r\n

You can add a new version by dragging your files(max 3) here

\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport const XDragAndDropFileUpload: FC = props => {\r\n const [files, setFile] = useState(null);\r\n const onDrop = useCallback(acceptedFiles => {\r\n setFile(acceptedFiles);\r\n }, []);\r\n const {acceptedFiles, getRootProps, getInputProps, isDragActive, isDragAccept, isDragReject } = useDropzone({\r\n maxFiles: 1,\r\n onDrop\r\n });\r\n\r\n useEffect(() => {\r\n props.handleFileChange(acceptedFiles);\r\n }, [acceptedFiles]);\r\n\r\n return (\r\n
\r\n \r\n \r\n

You can add a new version by dragging a file here

\r\n
\r\n
\r\n );\r\n};\r\n\r\nconst Container = styled.div`\r\n flex: 1;\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n padding: 20px;\r\n border-width: 2px;\r\n border-radius: 2px;\r\n border-color: ${props => getColor(props)};\r\n border-style: dashed;\r\n background-color: #fafafa;\r\n color: #bdbdbd;\r\n outline: none;\r\n transition: border 0.24s ease-in-out;\r\n\r\n & p {\r\n cursor: pointer;\r\n }\r\n`;\r\n","import styled from '@emotion/styled';\r\nimport React from 'react';\r\nimport { Translation } from 'react-i18next';\r\nimport { Organization } from 'src/models/Organization';\r\nimport { XContainer } from '../layout/XContainer';\r\nimport XField from '../layout/XField';\r\nimport XPopup from '../layout/XPopup';\r\nimport XSelectItem from '../layout/XSelectItem';\r\nimport XOrganizationRow from './XOrganizationRow';\r\n\r\ntype OwnProps = {\r\n organizations: Organization[];\r\n title: string;\r\n open: boolean;\r\n saveText?: string;\r\n allowEmpty?: boolean;\r\n onSave: (selectedOrganizations: Organization[]) => void;\r\n onCancel: () => void;\r\n clearOnClose: boolean;\r\n};\r\n\r\ntype AllProps = OwnProps;\r\ntype State = {\r\n selected: Organization[];\r\n search: string;\r\n};\r\n\r\nclass XOrganizationSelectPopup extends React.Component {\r\n constructor(props: AllProps) {\r\n super(props);\r\n this.state = {\r\n selected: [],\r\n search: ''\r\n };\r\n }\r\n\r\n public toggleOrganization(organization: Organization, state: boolean) {\r\n if (state) this.setState({ selected: [...this.state.selected, organization] });\r\n else {\r\n const selected = [...this.state.selected];\r\n selected.splice(selected.indexOf(organization), 1);\r\n this.setState({ selected });\r\n }\r\n }\r\n\r\n public save() {\r\n const selected = this.state.selected;\r\n if (this.props.clearOnClose) this.setState({ selected: [] });\r\n\r\n this.setState({ search: '' });\r\n this.props.onSave(selected);\r\n }\r\n\r\n public cancel() {\r\n if (this.props.clearOnClose) this.setState({ selected: [] });\r\n this.setState({ search: '' });\r\n this.props.onCancel();\r\n }\r\n\r\n public render() {\r\n const organizations = this.props.organizations.filter(\r\n o => o.name.toLowerCase().indexOf(this.state.search.toLowerCase()) !== -1\r\n );\r\n return (\r\n \r\n {t => (\r\n this.cancel()}\r\n onSave={() => this.save()}\r\n saveAvailable={this.props.allowEmpty ? true : this.state.selected.length > 0}>\r\n \r\n this.setState({ search: e.target.value })}\r\n />\r\n \r\n {organizations.length === 0 && (\r\n {t =>
{t('organizations.noOrgAvailable')}
}
\r\n )}\r\n
\r\n {organizations.map(org => (\r\n
\r\n o.id === org.id) !== undefined}\r\n onToggle={state => this.toggleOrganization(org, state)}>\r\n \r\n \r\n
\r\n ))}\r\n
\r\n \r\n )}\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default XOrganizationSelectPopup;\r\n\r\nconst StyledField = styled.div`\r\n position: absolute;\r\n right: -10px;\r\n top: -56px;\r\n display: inline-block;\r\n vertical-align: top;\r\n width: 200px;\r\n z-index: 11;\r\n & input {\r\n padding: 3px 0 !important;\r\n }\r\n`;\r\n","import React, { FC } from 'react';\r\nimport styled from '@emotion/styled';\r\nimport { MappingItem } from '../../store/catalogs/types';\r\nimport { FormControl, Select, Divider } from '@material-ui/core';\r\nimport { CSVMappingTypes } from '../../models/Catalog';\r\n\r\ntype OwnProps = {\r\n c: MappingItem;\r\n onChange: (e: any) => void;\r\n};\r\n\r\nconst XMappingRow: FC = React.memo(({ onChange, c }) => {\r\n return (\r\n <>\r\n \r\n \r\n {`${c.Column}`.substr(0, 20)}\r\n {`${c.Column}`.length > 20 && '...'}\r\n {`${c.Column}`.length > 20 && {c.Column}}\r\n \r\n\r\n {c.SampleData ? (\r\n \r\n {`${c.SampleData[0]}`.substr(0, 20)}\r\n {`${c.SampleData[0]}`.length > 20 && '...'}\r\n {`${c.SampleData[0]}`.length > 20 && {c.SampleData[0]}}\r\n \r\n ) : (\r\n \r\n )}\r\n\r\n \r\n \r\n {Object.keys(CSVMappingTypes).map(t => (\r\n \r\n ))}\r\n \r\n \r\n \r\n \r\n \r\n );\r\n});\r\n\r\nexport default XMappingRow;\r\n\r\nconst XSelectionRow = styled.div`\r\n display: flex;\r\n align-items: center;\r\n`;\r\n\r\nconst XSelect = styled(Select)`\r\n margin: 1.5rem 0.5rem 1rem 0;\r\n width: 14rem;\r\n height: 2rem;\r\n`;\r\n\r\nconst ToolTipText = styled('span')({\r\n visibility: 'hidden',\r\n backgroundColor: '#333333',\r\n color: '#fff',\r\n textAlign: 'center',\r\n borderRadius: '6px',\r\n padding: '5px 0',\r\n position: 'absolute',\r\n zIndex: 1,\r\n bottom: '150%',\r\n left: '50%',\r\n marginLeft: '-60px',\r\n ':after': {\r\n content: '\"\"',\r\n position: 'absolute',\r\n top: '100%',\r\n left: '50%',\r\n marginLeft: '-5px',\r\n borderWidth: '5px',\r\n borderStyle: 'solid',\r\n borderColor: 'black transparent transparent transparent'\r\n }\r\n});\r\n\r\nconst XCell = styled('div')({\r\n position: 'relative',\r\n display: 'inline-block',\r\n width: '14rem',\r\n ':hover span': {\r\n visibility: 'visible'\r\n }\r\n});\r\n","import React, { FC, useState } from 'react';\r\nimport { Mapping } from '../../store/catalogs/types';\r\nimport XMappingRow from './XMappingRow';\r\nimport styled from '@emotion/styled';\r\nimport { XContainer } from '../layout/XContainer';\r\nimport { FormControl, Select } from '@material-ui/core';\r\n\r\ntype OwnProps = {\r\n mappingData: Mapping;\r\n onChange: (e: any) => void;\r\n setDelimiter: (delimiter: string) => void;\r\n delimiter: string;\r\n}; \r\n\r\nconst XCSVMapping: FC = React.memo(({ mappingData, onChange, setDelimiter, delimiter }) => {\r\n const onDelimiterChange = (e: any) => {\r\n setDelimiter(e.target.value);\r\n };\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n {'Delimiter'}\r\n \r\n \r\n \r\n onDelimiterChange(e)} value={delimiter} >\r\n \r\n ))\r\n \r\n \r\n \r\n \r\n {mappingData?.MappingItems.map(c => (\r\n \r\n ))}\r\n \r\n \r\n );\r\n});\r\n\r\nconst XSelect = styled(Select)`\r\n margin: 1.5rem 0.5rem 1rem 0;\r\n width: 14rem;\r\n height: 2rem;\r\n`;\r\n\r\nconst XSelectionRow = styled.div`\r\n display: flex;\r\n align-items: center;\r\n`;\r\n\r\nconst XCell = styled('div')({\r\n position: 'relative',\r\n display: 'inline-block',\r\n width: '14rem',\r\n ':hover span': {\r\n visibility: 'visible'\r\n }\r\n});\r\n\r\nexport default XCSVMapping;\r\n","import React, { FC, useState, useCallback } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { useHistory } from 'react-router-dom';\r\nimport styled from '@emotion/styled';\r\nimport XScrollView from '../layout/XScrollView';\r\nimport { XActionButton, XSecActionButton } from '../layout/XActionButton';\r\nimport { saveCatalogMapping } from '../../store/catalogs/api';\r\nimport { Mapping } from '../../store/catalogs/types';\r\nimport { ApplicationState } from 'src/store';\r\nimport { showNotification } from 'src/store/layout/actions';\r\nimport { MessageType } from 'src/store/layout/types';\r\nimport { mapError } from 'src/helpers/errorMap';\r\nimport XCSVMapping from './XCSVMapping';\r\nimport i18n from 'src/i18n';\r\n\r\ntype OwnProps = {\r\n mappingData: Mapping;\r\n catalogId: string;\r\n catalogMappingId: string;\r\n catalogVersionId: string;\r\n close: () => void;\r\n};\r\n\r\ntype DispatchProps = {\r\n showNotification: (message: string, type?: MessageType) => void;\r\n};\r\n\r\ntype AllProps = OwnProps & DispatchProps;\r\n\r\nconst XCatalogCSVModel: FC = ({\r\n mappingData,\r\n catalogId,\r\n catalogMappingId,\r\n catalogVersionId,\r\n ...props\r\n}) => {\r\n const [mappingItems, setMappingItems] = useState(Array());\r\n const [delimiter, setDelimiter] = useState(mappingData.Delimiter || \";\");\r\n\r\n const history = useHistory();\r\n\r\n const onChange = useCallback(\r\n (e: any) => {\r\n e.persist();\r\n setMappingItems(prevState =>\r\n prevState.some(o => o.Column === e.target.id)\r\n ? prevState.map(o =>\r\n o.Column === e.target.id ? { ...o, MappingType: e.target.value } : o\r\n )\r\n : [...prevState, { Column: e.target.id, MappingType: e.target.value }]\r\n );\r\n },\r\n [setMappingItems]\r\n );\r\n\r\n const Mapping = {\r\n Delimiter: delimiter,\r\n MappingItems: mappingItems\r\n };\r\n\r\n const saveCSVMapping = async () => {\r\n const apiResult = await saveCatalogMapping(\r\n Mapping,\r\n catalogId,\r\n catalogMappingId,\r\n catalogVersionId\r\n );\r\n\r\n if (apiResult.IsSuccess) {\r\n props.close();\r\n props.showNotification('Mapping is succesfully saved', 'success');\r\n history.push(`/app/my/catalogs/edit/${catalogId}`);\r\n } else {\r\n props.showNotification(\r\n 'Something whent wrong while saving mapping' + mapError(apiResult.Errors),\r\n 'error'\r\n );\r\n }\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n
Column Header
\r\n
Sample data
\r\n
Type
\r\n
\r\n \r\n \r\n \r\n \r\n {i18n.t('tooltip.Cancel')}\r\n {i18n.t('tooltip.Save')}\r\n \r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nconst mapStateToProps = (state: ApplicationState) => ({});\r\n\r\nconst mapDispatchToProps = (dispatch: any): DispatchProps => ({\r\n showNotification: (message: string, type?: MessageType) =>\r\n dispatch(showNotification(message, type))\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(XCatalogCSVModel);\r\n\r\nconst XCatalogModal = styled.div`\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n right: 0;\r\n bottom: 0;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n z-index: 9999999 !important;\r\n\r\n & .MuiOutlinedInput-input {\r\n padding: 7px 14px;\r\n }\r\n`;\r\n\r\nconst XCatalogModalModel = styled.div`\r\n position: relative;\r\n display: flex;\r\n flex-direction: column;\r\n padding: 2rem;\r\n height: 40rem;\r\n width: 50rem;\r\n`;\r\n\r\nconst XModalContainer = styled.div`\r\n background-color: white;\r\n box-shadow: 0px 11px 15px -7px rgba(0, 0, 0, 0.2), 0px 24px 38px 3px rgba(0, 0, 0, 0.14),\r\n 0px 9px 46px 8px rgba(0, 0, 0, 0.12);\r\n`;\r\n\r\nconst XModalHeader = styled.div`\r\n display: flex;\r\n\r\n & h5 {\r\n width: 14rem;\r\n margin: 0;\r\n }\r\n`;\r\n\r\nconst XButtonsContainer = styled.div`\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n margin-top: 1rem;\r\n`;\r\n","export enum InterfaceAuthentication {\r\n None = 'None',\r\n UsernamePassword = 'UsernamePassword',\r\n BasicAuth = 'BasicAuth',\r\n JWTAuth = 'JWTAuth'\r\n}\r\n\r\nexport enum InterfaceType {\r\n StockSend = 'StockSend'\r\n}\r\n\r\nexport enum InterfaceMethod {\r\n Ftp = 'Ftp',\r\n Api = 'Api',\r\n VertilinQ = 'VertilinQ',\r\n ItsPerfect = 'ItsPerfect',\r\n DeEekhoorn = 'DeEekhoorn',\r\n LightAndLiving = 'LightAndLiving',\r\n DTP = 'DTP'\r\n}\r\n\r\nexport enum InterfaceSettingsKey {\r\n Url = 'Url',\r\n Username = 'Username',\r\n Password = 'Password',\r\n PortalName = 'PortalName',\r\n Token = 'Token'\r\n}\r\n\r\nexport interface Stock {\r\n id: string;\r\n currentVersionId?: string;\r\n organizationId: string;\r\n organizationName: string;\r\n organizationImageURL: string;\r\n title: string;\r\n description: string;\r\n imageURL: string;\r\n downloads: number;\r\n downloaded: boolean;\r\n lastCreationDate: Date;\r\n connectionDate: Date;\r\n publicationStatus: PublicationStatus;\r\n publicationDate: Date;\r\n validationFileUrl: string;\r\n mappingId: string;\r\n fileFormatId: string;\r\n fileFormatVersionId: string;\r\n creationDate: Date;\r\n}\r\n\r\nexport interface StockModel {\r\n stock: Stock;\r\n downloads?: StockDownloads[];\r\n interfaces: StockInterface[];\r\n}\r\n\r\nexport interface StockDownloads {\r\n organizationId: string;\r\n organizationName: string;\r\n downloads: number;\r\n lastDownloadDate?: Date;\r\n}\r\n\r\nexport interface StockInterface {\r\n id: string;\r\n method: InterfaceMethod;\r\n type: InterfaceType;\r\n settings: StockInterfaceSetting;\r\n authentication: string;\r\n stockId?: string;\r\n}\r\n\r\nexport interface StockInterfaceSetting {\r\n Url: string;\r\n Username: string;\r\n Password: string;\r\n Token: string;\r\n PortalName: string;\r\n}\r\n\r\nexport interface StockFileViolation {\r\n type: string;\r\n level: string;\r\n objectId: string;\r\n message: string;\r\n lineNumber?: number;\r\n}\r\n\r\nexport interface StockValidationSummary {\r\n violations: StockFileViolation[];\r\n}\r\n\r\nexport enum PublicationStatus {\r\n Unpublished = 'Unpublished',\r\n Published = 'Published'\r\n}\r\n\r\nexport enum CSVMappingTypes {\r\n IdentifierEanNumber = 'IdentifierEanNumber',\r\n Stock = 'Stock', \r\n StockAvailabilityDate = 'StockAvailabilityDate' \r\n}\r\n\r\n","import styled from '@emotion/styled';\r\nimport { TextField, Tooltip, Chip, Avatar, CircularProgress } from '@material-ui/core';\r\nimport ErrorOutlineIcon from '@material-ui/icons/ErrorOutline';\r\nimport GetAppIcon from '@material-ui/icons/GetApp';\r\nimport CheckIcon from '@material-ui/icons/Check';\r\nimport * as React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { Link, RouteComponentProps } from 'react-router-dom';\r\nimport XOrganizationRow from 'src/components/domain/XOrganizationRow';\r\nimport XCheckbox from 'src/components/layout/XCheckbox';\r\nimport { XContainer } from 'src/components/layout/XContainer';\r\nimport XDatePicker from 'src/components/layout/XDatePicker';\r\nimport XPageContent from 'src/components/layout/XPageContent';\r\nimport {XDragAndDropFileUpload, XDragAndDropFilesUpload} from 'src/components/layout/XDragAndDropFileUpload';\r\nimport { XPaper, XPaperLabel, XPaperText, XPaperTitle } from 'src/components/layout/XPaper';\r\nimport { XRow, XRowCell } from 'src/components/layout/XRow';\r\nimport XTable, { TableRow } from 'src/components/layout/XTable';\r\nimport { ApiResult } from 'src/helpers/apiClient';\r\nimport { formatDateToString } from 'src/helpers/formatHelpers';\r\nimport {\r\n CatalogModel,\r\n ProcessingStatus,\r\n PublicationStatus,\r\n InterfaceMethod\r\n} from 'src/models/Catalog';\r\nimport {\r\n InterfaceType,\r\n MyOrganizationModel,\r\n Organization,\r\n OrganizationInterface,\r\n OrganizationType\r\n} from 'src/models/Organization';\r\nimport { ApplicationState } from 'src/store';\r\nimport { AuthenticationAccount } from 'src/store/authentication/types';\r\nimport * as catalogActions from 'src/store/catalogs/actions';\r\nimport { EditCatalogFormData, Mapping } from 'src/store/catalogs/types';\r\nimport { fetchCatalogFile } from 'src/store/catalogs/api';\r\nimport { showConfirmation, showNotification } from 'src/store/layout/actions';\r\nimport { MessageType } from 'src/store/layout/types';\r\nimport * as organizationActions from 'src/store/organizations/actions';\r\nimport * as messageAction from 'src/store/messages/actions';\r\n\r\nimport HourglassEmptyIcon from '@material-ui/icons/HourglassEmpty';\r\nimport CancelIcon from '@material-ui/icons/Cancel';\r\nimport DownloadedIcon from '@material-ui/icons/CheckCircle';\r\nimport AccessIcon from '@material-ui/icons/AccessTime';\r\nimport AddCircleIcon from '@material-ui/icons/AddCircle';\r\nimport ClearIcon from '@material-ui/icons/Clear';\r\nimport DeleteIcon from '@material-ui/icons/Delete';\r\nimport EditIcon from '@material-ui/icons/Edit';\r\nimport SaveIcon from '@material-ui/icons/Save';\r\nimport ViewIcon from '@material-ui/icons/Visibility';\r\nimport HighlightOffIcon from '@material-ui/icons/HighlightOff';\r\nimport PublishIcon from '@material-ui/icons/Publish';\r\nimport XErrorContent from 'src/components/domain/XErrorContent';\r\nimport XNoContent from 'src/components/domain/XNoContent';\r\nimport XOrganizationSelectPopup from 'src/components/domain/XOrganizationSelectPopup';\r\nimport XImageEditor from 'src/components/layout/XImageEditor';\r\nimport XPagination from 'src/components/layout/XPagination';\r\nimport XPaperHeader from 'src/components/layout/XPaperHeader';\r\nimport { mapError } from 'src/helpers/errorMap';\r\nimport {\r\n XActionButton,\r\n XSecActionButton,\r\n XDisabledButton\r\n} from 'src/components/layout/XActionButton';\r\nimport { XActionStrip } from 'src/components/layout/XActionStrip';\r\nimport { getProcessingStatusText, getPublicationStatusText } from 'src/constants/Catalog';\r\nimport XField from 'src/components/layout/XField';\r\nimport { FileFormat } from 'src/models/FileFormat';\r\nimport { getFileFormatsThunk } from 'src/store/catalogs/actions';\r\nimport { getCatalogMapping } from 'src/store/catalogs/api';\r\nimport { Translation } from 'react-i18next';\r\nimport i18n from '../../../i18n';\r\nimport { getInterfaceTypes } from 'src/constants/OrganizationInterface/OrganizationInterfaces';\r\nimport { Skeleton } from '@material-ui/lab';\r\nimport XCatalogCSVModel from '../../../components/domain/XCatalogCSVModel';\r\nimport ErrorBoundary from 'src/components/shared/ErrorBoundary';\r\nimport { CatalogMessageModel } from '../../../models/Message';\r\nimport { string } from 'prop-types';\r\n\r\ntype StateProps = {\r\n catalogMessages?: CatalogMessageModel[];\r\n catalog?: CatalogModel;\r\n myOrganization?: MyOrganizationModel;\r\n connections: Organization[];\r\n myAccount: AuthenticationAccount;\r\n loadingCatalog: boolean;\r\n loadingOrganization: boolean;\r\n fileFormats: FileFormat[];\r\n};\r\n\r\ntype DispatchProps = {\r\n getCatalogMessages: (catalogId: string) => void;\r\n showNotification: (message: string, type: MessageType) => void;\r\n getCatalogById: (id: string) => Promise;\r\n getConnections: () => void;\r\n getMyOrganization: () => void;\r\n editCatalog: (id: string, formData: EditCatalogFormData) => Promise;\r\n editAvailableCatalog: (\r\n targetOrganizationIds: string[],\r\n catalogId: string,\r\n available: boolean\r\n ) => Promise;\r\n showConfirm: (title: string, message: string, onConfirm: () => void) => void;\r\n deleteCatalog: (id: string) => Promise;\r\n publishCatalog: (id: string) => Promise;\r\n getFileFormats: () => Promise;\r\n};\r\n\r\ntype OwnProps = {};\r\n\r\ntype AllProps = StateProps & DispatchProps & OwnProps & RouteComponentProps<{ id: string }>;\r\n\r\ntype State = {\r\n mapping: Mapping;\r\n catalogVersionId: string;\r\n openMappingModel: boolean;\r\n files: any;\r\n fetchLoading: boolean;\r\n editing: boolean;\r\n dateLimit: boolean;\r\n editModel: EditCatalogFormData;\r\n search: string;\r\n currentOffset: number;\r\n showAddAvailablePopup: boolean;\r\n loaded: boolean;\r\n editErrors: {\r\n title: boolean;\r\n startDate: boolean;\r\n endDate: boolean;\r\n };\r\n};\r\n\r\nclass CatalogPage extends React.Component {\r\n editor: any;\r\n setEditorRef: (editor: any) => any;\r\n\r\n constructor(props: AllProps) {\r\n super(props);\r\n this.setEditorRef = editor => (this.editor = editor);\r\n\r\n this.state = {\r\n mapping: {\r\n Delimiter: '',\r\n MappingItems: []\r\n },\r\n catalogVersionId: '',\r\n openMappingModel: false,\r\n files: null,\r\n fetchLoading: false,\r\n editing: false,\r\n dateLimit:\r\n this.props.catalog?.versions[0]?.startDate !== undefined ||\r\n this.props.catalog?.versions[0]?.endDate !== undefined,\r\n editModel: this.mapEditModel(),\r\n search: '',\r\n showAddAvailablePopup: false,\r\n currentOffset: 0,\r\n loaded: false,\r\n editErrors: {\r\n title: false,\r\n startDate: false,\r\n endDate: false\r\n }\r\n };\r\n }\r\n\r\n public mapEditModel() {\r\n if (!this.props.catalog)\r\n return { title: '', description: '', imageURL: '', image: undefined, version: '' };\r\n\r\n return {\r\n title: this.props.catalog.catalog.title,\r\n description: this.props.catalog.catalog.description,\r\n imageURL: this.props.catalog.catalog.imageURL,\r\n image: undefined,\r\n version: this.props.catalog.versions[0]?.version,\r\n startDate:\r\n this.props.catalog.versions[0]?.endDate === undefined\r\n ? undefined\r\n : new Date(this.props.catalog.versions[0]?.startDate),\r\n endDate:\r\n this.props.catalog.versions[0]?.endDate === undefined\r\n ? undefined\r\n : new Date(this.props.catalog.versions[0]?.endDate)\r\n };\r\n }\r\n\r\n public componentDidUpdate(prevProps) {\r\n if (prevProps.catalog !== this.props.catalog) this.setState({ editModel: this.mapEditModel() });\r\n }\r\n\r\n public componentDidMount() {\r\n if (this.props.myAccount.organizationType === OrganizationType.Retailer) {\r\n this.props.history.push('/app/start');\r\n }\r\n\r\n this.props.getCatalogById(this.props.match.params.id).then(apiResult => {\r\n if (!apiResult.IsSuccess) {\r\n if (apiResult.StatusCode === 401)\r\n // Not authorized for this catalog\r\n this.props.history.push('/app/start');\r\n }\r\n this.setState({ loaded: true });\r\n });\r\n\r\n this.props.getConnections();\r\n this.props.getMyOrganization();\r\n this.props.getFileFormats();\r\n this.props.getCatalogMessages(this.props.match.params.id);\r\n }\r\n\r\n public formChange(name, val) {\r\n const editModel = Object.assign({}, this.state.editModel);\r\n editModel[name] = val;\r\n\r\n this.setState({ editModel });\r\n }\r\n\r\n public toggleAvailability(organizations: Organization[], state: boolean) {\r\n if (!this.props.catalog) return;\r\n\r\n this.setState({ showAddAvailablePopup: false });\r\n this.props.showNotification('Beschikbaarheid wordt aangepast...', 'warning');\r\n this.props\r\n .editAvailableCatalog(\r\n organizations.map(o => o.id),\r\n this.props.catalog.catalog.id,\r\n state\r\n )\r\n .then(result => {\r\n if (result.IsSuccess)\r\n this.props.showNotification(i18n.t('notification.availabilityAdjusted'), 'success');\r\n else\r\n this.props.showNotification(\r\n i18n.t('notification.catalogDeleteError') + mapError(result.Errors),\r\n 'error'\r\n );\r\n });\r\n }\r\n\r\n public toggleDateLimit(value) {\r\n const editModel = Object.assign({}, this.state.editModel);\r\n if (!value) {\r\n editModel.startDate = undefined;\r\n editModel.endDate = undefined;\r\n } else {\r\n editModel.startDate = this.props.catalog?.versions[0]?.startDate || new Date();\r\n editModel.endDate = this.props.catalog?.versions[0]?.endDate || new Date();\r\n }\r\n\r\n this.setState({ dateLimit: value, editModel });\r\n }\r\n\r\n public async saveEdit() {\r\n if (!this.props.catalog) return;\r\n\r\n const editErrors = Object.assign({}, this.state.editErrors);\r\n\r\n editErrors.title = this.state.editModel.title.length === 0;\r\n editErrors.endDate =\r\n this.state.dateLimit &&\r\n (this.state.editModel.startDate ?? new Date()) > (this.state.editModel.endDate ?? new Date());\r\n\r\n this.setState({ editErrors });\r\n\r\n let valid = true;\r\n Object.keys(editErrors).map(item => {\r\n if (editErrors[item] === true) {\r\n valid = false;\r\n }\r\n });\r\n\r\n const data = this.state.editModel;\r\n const imgResult = await this.editor.getResult();\r\n if (imgResult) {\r\n data.image = imgResult;\r\n this.formChange('image', imgResult);\r\n }\r\n\r\n if (!valid) return;\r\n\r\n this.props.editCatalog(this.props.catalog.catalog.id, data).then(result => {\r\n if (result.IsSuccess) {\r\n this.props.showNotification(i18n.t('notification.catalogAdjusted'), 'success');\r\n this.setState({ editing: false });\r\n } else\r\n this.props.showNotification(\r\n i18n.t('notification.catalogAdjustingError') + mapError(result.Errors),\r\n 'error'\r\n );\r\n });\r\n }\r\n\r\n public publishCatalog() {\r\n this.props.showConfirm(\r\n 'Catalogus publiceren',\r\n 'Weet je zeker dat je deze catalogus wilt publiceren? Alle connecties zullen per mail op de hoogte worden gesteld van deze publicatie.',\r\n () => {\r\n this.props.publishCatalog(this.props.match.params.id).then(apiResult => {\r\n if (apiResult.IsSuccess) {\r\n this.props.showNotification('Catalogus gepubliceerd!', 'success');\r\n this.props.history.push(this.props.location);\r\n } else\r\n this.props.showNotification(\r\n 'Er ging iets mis tijdens het publiceren van de catalogus: ' +\r\n mapError(apiResult.Errors),\r\n 'error'\r\n );\r\n });\r\n }\r\n );\r\n }\r\n\r\n public deleteCatalog() {\r\n this.props.showConfirm(\r\n i18n.t('confirmation.catalogDelete'),\r\n i18n.t('confirmation.catalogDeleteDiscoverDesc'),\r\n () => {\r\n this.props.deleteCatalog(this.props.match.params.id).then(apiResult => {\r\n if (apiResult.IsSuccess) {\r\n this.props.showNotification(i18n.t('notification.catalogDeleted'), 'success');\r\n this.props.history.push('/app/my/catalogs');\r\n } else\r\n this.props.showNotification(\r\n i18n.t('notification.catalogDeleteError') + mapError(apiResult.Errors),\r\n 'error'\r\n );\r\n });\r\n }\r\n );\r\n }\r\n\r\n public cancelEdit() {\r\n this.formChange('image', undefined);\r\n this.setState({ editing: false });\r\n }\r\n\r\n public downloadValidationFile() {\r\n const link = document.createElement('a');\r\n link.href = this.props.catalog?.catalog.validationFileUrl ?? '';\r\n link.click();\r\n }\r\n\r\n public downloadValidation(validationFileUrl: string) {\r\n if (validationFileUrl && validationFileUrl?.trim() != '') {\r\n const link = document.createElement('a');\r\n link.href = validationFileUrl;\r\n link.click();\r\n }\r\n }\r\n\r\n public downloadConversionFile(conversionFileUrl: string) {\r\n if (conversionFileUrl && conversionFileUrl?.trim() != '') {\r\n const link = document.createElement('a');\r\n link.href = conversionFileUrl;\r\n link.click();\r\n }\r\n }\r\n\r\n private getFileFormat(fileFormat: string, fileFormatVersion: string) {\r\n const format = this.props.fileFormats.find(f => f.id === fileFormat);\r\n if (!format) return '';\r\n\r\n const version = format.versions.find(v => v.id === fileFormatVersion);\r\n return format.name + '.' + version?.name;\r\n }\r\n\r\n public getInterface(t: InterfaceType): OrganizationInterface | undefined {\r\n return this.props.myOrganization?.interfaces.find(x => x.type === t);\r\n }\r\n\r\n public handleFileChange = (files: any) => {\r\n this.setState({ files });\r\n };\r\n\r\n public fetchNewCatalogVersion = async () => {\r\n this.setState({ fetchLoading: true });\r\n console.log(\"fetch catalog\");\r\n console.log(this.state.files);\r\n const apiResult = await fetchCatalogFile(this.props.catalog?.catalog.id, this.state.files);\r\n if (apiResult.IsSuccess) {\r\n this.setState({ files: null });\r\n this.props.showNotification('Catalog uploaded', 'success');\r\n this.props.getCatalogById(this.props.match.params.id);\r\n } else\r\n this.props.showNotification(\r\n 'Something went wrong while uploading the catalog: ' + mapError(apiResult.Errors),\r\n 'error'\r\n );\r\n this.setState({ fetchLoading: false });\r\n };\r\n\r\n public getCatalogMappingById = async (versionId: string) => {\r\n const apiResult = await getCatalogMapping(this.props.catalog?.catalog.mappingId);\r\n if (apiResult.IsSuccess) {\r\n this.setState({ mapping: JSON.parse(apiResult.Data.mapping) });\r\n this.setState({ catalogVersionId: versionId });\r\n this.setState({ openMappingModel: true });\r\n }\r\n };\r\n\r\n public render() {\r\n const props = this.props;\r\n if (props.loadingCatalog || props.loadingOrganization || !this.state.loaded)\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \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 else if (!props.catalog || !props.myOrganization)\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n\r\n const latestVersion = props.catalog.versions?.sort(v => new Date(v.creationDate).getTime())[\r\n props.catalog.versions.length - 1\r\n ];\r\n const makeAvailableOrganizations = props.connections.filter(\r\n c =>\r\n props.myOrganization?.catalogConnections.find(\r\n dc => dc.targetOrganizationId === c.id && dc.catalogId === this.props.catalog?.catalog.id\r\n )?.active !== true\r\n );\r\n\r\n let data: any = [];\r\n const connections = props.myOrganization.catalogConnections.filter(\r\n dc => dc.catalogId === this.props.catalog?.catalog.id && dc.active\r\n );\r\n console.log('dataConnections', connections);\r\n console.log('connections', props.connections);\r\n\r\n for (const dc of connections)\r\n data.push({\r\n dataConnection: dc,\r\n organization: props.connections.find(c => c.id === dc.targetOrganizationId)\r\n });\r\n \r\n data = data.sort((a, b) => a.organization.name.localeCompare(b.organization.name));\r\n data = data.filter(\r\n d => d.organization.name.toLowerCase().indexOf(this.state.search.toLowerCase()) !== -1\r\n );\r\n const pageSize = 10;\r\n const paged = data.slice(this.state.currentOffset, this.state.currentOffset + pageSize);\r\n\r\n // Show publish button if catalog is currently unpublished but validated\r\n const publicationStatus = this.props.catalog?.catalog.publicationStatus;\r\n const processingStatus = this.props.catalog?.catalog.processingStatus;\r\n\r\n const catalogIsPublished = publicationStatus === PublicationStatus.Published;\r\n const catalogIsValid =\r\n processingStatus === ProcessingStatus.ValidatedWithWarnings ||\r\n processingStatus === ProcessingStatus.Validated;\r\n\r\n const showPublishButton = !catalogIsPublished && catalogIsValid;\r\n\r\n // Show download validation summary button if url is not empty\r\n const showDownloadValidationFileButton =\r\n this.props.catalog?.catalog.validationFileUrl &&\r\n this.props.catalog?.catalog.validationFileUrl?.trim() != '';\r\n\r\n const interfaces = getInterfaceTypes(this.props.myOrganization?.organization.organizationType);\r\n console.log(`Interfaces: ${interfaces}`);\r\n\r\n const fileUploadMethod = props.catalog?.interfaces.filter(\r\n i => i.catalogId === props.catalog?.catalog.id\r\n )[0];\r\n\r\n const catalogVersions = this.props.catalog?.versions.sort(\r\n (a, b) => new Date(b.creationDate).getTime() - new Date(a.creationDate).getTime()\r\n ).slice(0, 2);\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n {!catalogIsPublished && (\r\n
\r\n this.publishCatalog()}>Publiceer\r\n
\r\n )}\r\n \r\n {this.state.editing ? (\r\n \r\n {t => (\r\n
\r\n \r\n this.cancelEdit()}\r\n style={{ marginRight: '10px', verticalAlign: 'middle' }}\r\n />\r\n \r\n \r\n await this.saveEdit()}\r\n style={{ verticalAlign: 'middle' }}\r\n />\r\n \r\n
\r\n )}\r\n
\r\n ) : (\r\n \r\n {t => (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n this.setState({ editing: true })}\r\n style={{ marginRight: '10px', verticalAlign: 'middle' }}\r\n />\r\n \r\n \r\n this.deleteCatalog()}\r\n style={{ verticalAlign: 'middle' }}\r\n />\r\n \r\n
\r\n )}\r\n
\r\n )}\r\n
\r\n \r\n }\r\n />\r\n \r\n \r\n \r\n \r\n \r\n {\r\n this.formChange('image', blob);\r\n }}\r\n />\r\n \r\n \r\n \r\n \r\n {this.state.editing ? (\r\n \r\n {t => (\r\n this.formChange(e.target.name, e.target.value)}\r\n />\r\n )}\r\n \r\n ) : (\r\n props.catalog.catalog.title\r\n )}\r\n \r\n \r\n {this.state.editing ? (\r\n \r\n {t => (\r\n this.formChange(e.target.name, e.target.value)}\r\n />\r\n )}\r\n \r\n ) : (\r\n
\r\n {props.catalog.catalog.description}\r\n
\r\n )}\r\n
\r\n
\r\n
\r\n \r\n \r\n Publicatiestatus:\r\n \r\n {getPublicationStatusText(props.catalog.catalog.publicationStatus)}\r\n \r\n {catalogIsPublished && (\r\n <>\r\n Publicatie datum:\r\n \r\n {props.catalog.catalog.publicationDate === undefined\r\n ? '-'\r\n : formatDateToString(props.catalog.catalog.publicationDate)}\r\n {' '}\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n {/* \r\n {this.state.editing \r\n ? this.formChange(e.target.name, e.target.value)} /> \r\n : latestVersion.version}\r\n */}\r\n {this.state.editing ? (\r\n
\r\n \r\n {t => (\r\n this.toggleDateLimit(e.target.checked)}\r\n />\r\n )}\r\n \r\n {this.state.dateLimit && (\r\n \r\n van\r\n this.formChange('startDate', e.toDate())}\r\n />\r\n tot\r\n this.formChange('endDate', e.toDate())}\r\n />\r\n \r\n )}\r\n
\r\n ) : (\r\n
\r\n {(latestVersion?.startDate !== undefined ||\r\n latestVersion?.endDate !== undefined) && (\r\n \r\n \r\n \r\n van {formatDateToString(latestVersion?.startDate)} tot{' '}\r\n {formatDateToString(latestVersion?.endDate)}\r\n \r\n \r\n )}\r\n {latestVersion?.endDate !== undefined &&\r\n new Date(latestVersion?.endDate).getTime() < new Date().getTime() && (\r\n \r\n Let op; deze catalogi is niet meer beschikbaar\r\n \r\n )}\r\n
\r\n )}\r\n \r\n \r\n {props.catalog?.catalog.downloads} downloads\r\n \r\n
Format:
\r\n
\r\n {this.getFileFormat(\r\n this.props.catalog?.catalog.fileFormatId || '',\r\n this.props.catalog?.catalog.fileFormatVersionId || ''\r\n )}\r\n
\r\n {this.props.catalog?.catalog?.mappingId &&\r\n !!this.props.catalog?.interfaces.length &&\r\n !!this.props.catalog?.catalog.currentVersionId &&\r\n this.props.fileFormats.find(\r\n f => f.id === this.props.catalog?.catalog.fileFormatId\r\n )?.name === 'CSV' && (\r\n <>\r\n
Mapping
\r\n this.getCatalogMappingById('')}>\r\n Edit catalog mapping\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 Load new version\r\n \r\n ) : (\r\n \r\n Loading..{' '}\r\n \r\n \r\n ))\r\n }\r\n />\r\n {/* Make editing of this version friendly */}\r\n \r\n {!!catalogVersions?.length &&\r\n catalogVersions.map(v => (\r\n \r\n {v.version}\r\n {formatDateToString(v.creationDate)}\r\n \r\n {v.processingStatus === ProcessingStatus.WaitingForMapping && (\r\n this.getCatalogMappingById(v.id)}\r\n />\r\n )}\r\n {[\r\n ProcessingStatus.Fetching,\r\n ProcessingStatus.Converting,\r\n ProcessingStatus.Validating,\r\n ProcessingStatus.Promoting\r\n ].includes(v.processingStatus) && (\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n }\r\n label={getProcessingStatusText(v.processingStatus)}\r\n />\r\n )}\r\n {[\r\n ProcessingStatus.Fetched,\r\n ProcessingStatus.Converted,\r\n ProcessingStatus.Validated,\r\n ProcessingStatus.Promoted\r\n ].includes(v.processingStatus) && (\r\n \r\n \r\n \r\n \r\n }\r\n label={getProcessingStatusText(v.processingStatus)}\r\n />\r\n \r\n )}\r\n {v.processingStatus === ProcessingStatus.ValidatedWithWarnings && (\r\n \r\n \r\n \r\n \r\n }\r\n clickable\r\n label={getProcessingStatusText(v.processingStatus)}\r\n color=\"secondary\"\r\n onClick={() => this.downloadValidation(v.validationFileUrl)}\r\n />\r\n \r\n )}\r\n {[ProcessingStatus.FetchingFailed, ProcessingStatus.PromotingFailed].includes(\r\n v.processingStatus\r\n ) && (\r\n \r\n \r\n \r\n }\r\n label={getProcessingStatusText(v.processingStatus)}\r\n color=\"secondary\"\r\n />\r\n )}\r\n {v.processingStatus === ProcessingStatus.ConvertingFailed && (\r\n \r\n \r\n \r\n }\r\n clickable\r\n label={getProcessingStatusText(v.processingStatus)}\r\n color=\"secondary\"\r\n onClick={() => this.downloadConversionFile(v.conversionFileUrl)}\r\n />\r\n )}\r\n {v.processingStatus === ProcessingStatus.ValidatingFailed && (\r\n \r\n \r\n \r\n }\r\n clickable\r\n label={getProcessingStatusText(v.processingStatus)}\r\n color=\"secondary\"\r\n onClick={() => this.downloadValidation(v.validationFileUrl)}\r\n />\r\n )}\r\n {v.processingStatus === ProcessingStatus.MappingFailed && (\r\n \r\n \r\n \r\n }\r\n label={getProcessingStatusText(v.processingStatus)}\r\n color=\"secondary\"\r\n />\r\n )}\r\n {v.processingStatus === ProcessingStatus.None && (\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n }\r\n label={getProcessingStatusText(v.processingStatus)}\r\n />\r\n )}\r\n
\r\n \r\n
\r\n ))}\r\n
\r\n\r\n {props.catalog?.interfaces[0]?.method === 'Manual' &&\r\n this.props.fileFormats.find(f => f.id === this.props.catalog?.catalog.fileFormatId)?.name === 'CSV' &&(\r\n
\r\n \r\n
\r\n )}\r\n\r\n {props.catalog?.interfaces[0]?.method === 'Manual' &&\r\n this.props.fileFormats.find(f => f.id === this.props.catalog?.catalog.fileFormatId)?.name !== 'CSV' &&(\r\n
\r\n \r\n
\r\n )}\r\n\r\n {this.state.files?.length !== 0 && this.state.files && (\r\n
\r\n
\r\n
{this.state.files?.map((files) => {return `${files.name} \\n`})}
\r\n this.setState({ files: null })}\r\n />\r\n
\r\n {!this.state.fetchLoading ? (\r\n Upload\r\n ) : (\r\n \r\n Uploading..{' '}\r\n \r\n \r\n )}\r\n
\r\n )}\r\n
\r\n\r\n \r\n \r\n
\r\n
Beheer instellingen omtrent het aanbieden van deze catalogs
\r\n \r\n props.history.push(\r\n `/app/my/catalogs/catalog-interface/${props.catalog?.catalog.id}`\r\n )\r\n }>\r\n Instellingen\r\n \r\n
\r\n
\r\n\r\n \r\n \r\n {t => (\r\n this.setState({ showAddAvailablePopup: false })}\r\n open={this.state.showAddAvailablePopup}\r\n clearOnClose={true}\r\n organizations={makeAvailableOrganizations}\r\n onSave={organizations => this.toggleAvailability(organizations, true)}\r\n />\r\n )}\r\n \r\n
\r\n \r\n {t => (\r\n this.setState({ search: e.toLowerCase() })}\r\n icons={[\r\n {\r\n icon: AddCircleIcon,\r\n toolTip: t('tooltip.add'),\r\n name: 'add',\r\n action: () => this.setState({ showAddAvailablePopup: true })\r\n }\r\n ]}\r\n />\r\n )}\r\n \r\n {props.connections.length === 0 ? (\r\n \r\n {t => (\r\n \r\n
\r\n {t('catalogs.youDontHaveAnyRetailers')}\r\n
\r\n
\r\n \r\n {t('catalogs.findInterestingRetailers')}\r\n \r\n
\r\n
\r\n )}\r\n
\r\n ) : (\r\n
\r\n {paged.length === 0 ? (\r\n
\r\n Deze catalog is niet beschikbaar voor retailers\r\n
\r\n ) : (\r\n \r\n {t => (\r\n \r\n {paged.map(obj => {\r\n return (\r\n this.toggleAvailability([obj.organization], false)}\r\n dataConnection={obj.dataConnection}\r\n catalogMessages={this.props.catalogMessages}\r\n link={'/app/my/connections/' + obj.organization.id}\r\n organization={obj.organization}\r\n />\r\n );\r\n })}\r\n \r\n )}\r\n \r\n )}\r\n {data.length > pageSize && (\r\n this.setState({ currentOffset: i })}\r\n />\r\n )}\r\n
\r\n )}\r\n
\r\n
\r\n\r\n {this.state.openMappingModel && (\r\n this.setState({ openMappingModel: false })}\r\n />\r\n )}\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state: ApplicationState): StateProps => {\r\n return {\r\n catalogMessages: state.messages.catalogMessages,\r\n myAccount: state.authentication.account,\r\n connections: state.organizations.connections,\r\n myOrganization: state.organizations.myOrganization,\r\n catalog: state.catalogs.data.detail,\r\n loadingCatalog: state.catalogs.loading,\r\n loadingOrganization: state.organizations.loading,\r\n fileFormats: state.catalogs.fileFormats\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch: any): DispatchProps => ({\r\n showNotification: (message: string, type: MessageType) => {\r\n dispatch(showNotification(message, type));\r\n },\r\n getCatalogMessages: (catalogId: string) => dispatch(messageAction.getCatalogMessagesThunk(catalogId)),\r\n getConnections: () => dispatch(organizationActions.getOrganizationConnectionsThunk()),\r\n getCatalogById: (id: string) => dispatch(catalogActions.getCatalogThunk(id)),\r\n getMyOrganization: () => dispatch(organizationActions.getMyOrganizationThunk()),\r\n editCatalog: (id: string, formData: EditCatalogFormData) =>\r\n dispatch(catalogActions.editCatalogThunk(id, formData)),\r\n showConfirm: (title: string, message: string, onConfirm: () => void) =>\r\n dispatch(showConfirmation(title, message, onConfirm)),\r\n deleteCatalog: (id: string) => dispatch(catalogActions.deleteCatalogThunk(id)),\r\n editAvailableCatalog: (targetOrganizationIds: string[], catalogId: string, available: boolean) =>\r\n dispatch(catalogActions.editCatalogAvailableThunk(targetOrganizationIds, catalogId, available)),\r\n publishCatalog: (id: string) => dispatch(catalogActions.publishCatalogThunk(id)),\r\n getFileFormats: () => dispatch(getFileFormatsThunk())\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(CatalogPage);\r\n\r\nconst VersionRow = styled.div`\r\n padding: 4px 0;\r\n font-size: 14px;\r\n`;\r\n\r\nconst WarningVersionRow = styled(VersionRow)`\r\n font-size: 12px;\r\n color: #ff9800;\r\n`;\r\n\r\nconst ActionButtons = styled.div`\r\n cursor: pointer;\r\n\r\n & svg {\r\n color: rgb(245, 0, 87);\r\n font-weight: bold;\r\n }\r\n`;\r\n\r\nconst StyledTable = styled.div`\r\n flex: 1;\r\n`;\r\n\r\nconst StyledTableRow = styled(TableRow)`\r\n line-height: 28px;\r\n`;\r\n\r\nconst XPulseDots = styled.div`\r\n margin-bottom: 2px;\r\n\r\n & div {\r\n width: 5px;\r\n height: 5px;\r\n background-color: white;\r\n\r\n border-radius: 2.5px;\r\n display: inline-block;\r\n animation: sk-bouncedelay 1.4s infinite ease-in-out both;\r\n }\r\n\r\n & .bounce1 {\r\n animation-delay: -0.32s;\r\n }\r\n\r\n & .bounce2 {\r\n animation-delay: -0.16s;\r\n }\r\n\r\n @-webkit-keyframes sk-bouncedelay {\r\n 0%,\r\n 80%,\r\n 100% {\r\n transform: scale(0);\r\n }\r\n 40% {\r\n transform: scale(1);\r\n }\r\n }\r\n\r\n @keyframes sk-bouncedelay {\r\n 0%,\r\n 80%,\r\n 100% {\r\n transform: scale(0);\r\n }\r\n 40% {\r\n transform: scale(1);\r\n }\r\n }\r\n`;\r\n\r\nconst XSuccessChip = styled.div`\r\n .MuiChip-root {\r\n color: rgb(76, 175, 80, 0.87) !important;\r\n background-color: #4caf50 !important;\r\n }\r\n\r\n .MuiChip-root .MuiChip-avatar {\r\n color: white !important;\r\n background-color: #46a149 !important;\r\n }\r\n\r\n .MuiChip-label {\r\n color: white !important;\r\n }\r\n`;\r\n","import React, { FC } from 'react';\r\nimport styled from '@emotion/styled';\r\nimport { MappingItem } from '../../store/stocks/types';\r\nimport { CSVMappingTypes } from '../../models/Stock';\r\nimport { FormControl, Select, Divider } from '@material-ui/core';\r\n\r\ntype OwnProps = {\r\n mappingData: MappingItem[];\r\n onChange: (e: any) => void;\r\n};\r\n\r\nconst XStockCSVMapping: FC = React.memo(({ mappingData, onChange }) => {\r\n return (\r\n <>\r\n {mappingData.map(c => (\r\n
\r\n \r\n \r\n {`${c.column}`.substr(0, 20)}\r\n {`${c.column}`.length > 20 && '...'}\r\n {`${c.column}`.length > 20 && {c.column}}\r\n \r\n\r\n {!!c.sampleData.length ? (\r\n \r\n {`${c.sampleData[0]}`.substr(0, 20)}\r\n {`${c.sampleData[0]}`.length > 20 && '...'}\r\n {`${c.sampleData[0]}`.length > 20 && {c.sampleData[0]}}\r\n \r\n ) : (\r\n \r\n )}\r\n\r\n \r\n \r\n \r\n {Object.keys(CSVMappingTypes).map(t => (\r\n \r\n ))}\r\n \r\n \r\n \r\n \r\n
\r\n ))}\r\n \r\n );\r\n});\r\n\r\nexport default XStockCSVMapping;\r\n\r\nconst XSelectionRow = styled.div`\r\n display: flex;\r\n align-items: center;\r\n`;\r\n\r\nconst XSelect = styled(Select)`\r\n margin: 1.5rem 0.5rem 1rem 0;\r\n width: 14rem;\r\n height: 2rem;\r\n`;\r\n\r\nconst ToolTipText = styled('span')({\r\n visibility: 'hidden',\r\n backgroundColor: '#333333',\r\n color: '#fff',\r\n textAlign: 'center',\r\n borderRadius: '6px',\r\n padding: '5px 0',\r\n position: 'absolute',\r\n zIndex: 1,\r\n bottom: '150%',\r\n left: '50%',\r\n marginLeft: '-60px',\r\n ':after': {\r\n content: '\"\"',\r\n position: 'absolute',\r\n top: '100%',\r\n left: '50%',\r\n marginLeft: '-5px',\r\n borderWidth: '5px',\r\n borderStyle: 'solid',\r\n borderColor: 'black transparent transparent transparent'\r\n }\r\n});\r\n\r\nconst XCell = styled('div')({\r\n position: 'relative',\r\n display: 'inline-block',\r\n width: '14rem',\r\n ':hover span': {\r\n visibility: 'visible'\r\n }\r\n});\r\n","import React, { FC, useState, useCallback } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport styled from '@emotion/styled';\r\nimport XScrollView from 'src/components/layout/XScrollView';\r\nimport { XActionButton, XSecActionButton } from '../layout/XActionButton';\r\nimport { saveStockMapping } from 'src/store/stocks/api';\r\nimport { Mapping } from 'src/store/stocks/types';\r\nimport { ApplicationState } from 'src/store';\r\nimport { showNotification } from 'src/store/layout/actions';\r\nimport { MessageType } from 'src/store/layout/types';\r\nimport { mapError } from 'src/helpers/errorMap';\r\nimport XStockCSVMapping from './XStockCSVMapping';\r\nimport i18n from 'src/i18n';\r\n\r\ntype OwnProps = {\r\n mappingData: Mapping;\r\n stockId: string;\r\n stockMappingId: string;\r\n close: () => void;\r\n};\r\n\r\ntype DispatchProps = {\r\n showNotification: (message: string, type?: MessageType) => void;\r\n};\r\n\r\ntype AllProps = OwnProps & DispatchProps;\r\n\r\nconst XStockCSVModel: FC = ({ mappingData, stockId, stockMappingId, ...props }) => {\r\n const [mappingItems, setMappingItems] = useState(mappingData.mappingItems);\r\n const [delimiter, setDelimiter] = useState(mappingData.delimiter);\r\n\r\n const onChange = useCallback(\r\n (e: any) => {\r\n e.persist();\r\n setMappingItems(prevState =>\r\n prevState.map(o => (o.column === e.target.id ? { ...o, mappingType: e.target.value } : o))\r\n );\r\n },\r\n [setMappingItems]\r\n );\r\n\r\n const Mapping = {\r\n mappingItems,\r\n delimiter\r\n };\r\n\r\n const saveCSVMapping = async () => {\r\n const apiResult = await saveStockMapping(Mapping, stockId, stockMappingId);\r\n apiResult && props.close();\r\n if (apiResult.IsSuccess) {\r\n props.showNotification('Mapping is succesfully saved', 'success');\r\n } else {\r\n props.showNotification(\r\n 'Something whent wrong while saving mapping' + mapError(apiResult.Errors),\r\n 'error'\r\n );\r\n }\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n
Column Header
\r\n
Sample data
\r\n
Type
\r\n
\r\n \r\n \r\n \r\n \r\n {i18n.t('tooltip.Cancel')}\r\n {i18n.t('tooltip.Save')}\r\n \r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nconst mapStateToProps = (state: ApplicationState) => ({});\r\n\r\nconst mapDispatchToProps = (dispatch: any): DispatchProps => ({\r\n showNotification: (message: string, type?: MessageType) =>\r\n dispatch(showNotification(message, type))\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(XStockCSVModel);\r\n\r\nconst XCatalogModal = styled.div`\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n right: 0;\r\n bottom: 0;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n z-index: 9999999 !important;\r\n\r\n & .MuiOutlinedInput-input {\r\n padding: 7px 14px;\r\n }\r\n`;\r\n\r\nconst XCatalogModalModel = styled.div`\r\n position: relative;\r\n display: flex;\r\n flex-direction: column;\r\n padding: 2rem;\r\n height: 40rem;\r\n width: 50rem;\r\n`;\r\n\r\nconst XModalContainer = styled.div`\r\n display: flex;\r\n background-color: white;\r\n box-shadow: 0px 11px 15px -7px rgba(0, 0, 0, 0.2), 0px 24px 38px 3px rgba(0, 0, 0, 0.14),\r\n 0px 9px 46px 8px rgba(0, 0, 0, 0.12);\r\n`;\r\n\r\nconst XModalHeader = styled.div`\r\n display: flex;\r\n\r\n & h5 {\r\n width: 14rem;\r\n margin: 0;\r\n }\r\n`;\r\n\r\nconst XButtonsContainer = styled.div`\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n margin-top: 1rem;\r\n`;\r\n","import styled from '@emotion/styled';\r\nimport { TextField, Tooltip, CircularProgress } from '@material-ui/core';\r\nimport * as React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { Link, RouteComponentProps } from 'react-router-dom';\r\nimport { XContainer } from 'src/components/layout/XContainer';\r\nimport XPageContent from 'src/components/layout/XPageContent';\r\nimport { XPaper, XPaperText, XPaperTitle } from 'src/components/layout/XPaper';\r\nimport { XRow, XRowCell } from 'src/components/layout/XRow';\r\nimport XTable, { TableRow } from 'src/components/layout/XTable';\r\nimport { ApiResult } from 'src/helpers/apiClient';\r\nimport { StockModel } from 'src/models/Stock';\r\nimport { MyOrganizationModel, Organization, OrganizationType } from 'src/models/Organization';\r\nimport { ApplicationState } from 'src/store';\r\nimport { AuthenticationAccount } from 'src/store/authentication/types';\r\nimport * as stockActions from 'src/store/stocks/actions';\r\nimport { showConfirmation, showNotification } from 'src/store/layout/actions';\r\nimport { MessageType } from 'src/store/layout/types';\r\nimport * as organizationActions from 'src/store/organizations/actions';\r\nimport { EditStockFormData, Mapping } from 'src/store/stocks/types';\r\nimport ClearIcon from '@material-ui/icons/Clear';\r\nimport DeleteIcon from '@material-ui/icons/Delete';\r\nimport EditIcon from '@material-ui/icons/Edit';\r\nimport SaveIcon from '@material-ui/icons/Save';\r\nimport AddCircleIcon from '@material-ui/icons/AddCircle';\r\nimport XErrorContent from 'src/components/domain/XErrorContent';\r\nimport XPaperHeader from 'src/components/layout/XPaperHeader';\r\nimport { mapError } from 'src/helpers/errorMap';\r\nimport { FileFormat } from 'src/models/FileFormat';\r\nimport { getFileFormatsThunk } from 'src/store/catalogs/actions';\r\nimport { Translation } from 'react-i18next';\r\nimport { Skeleton } from '@material-ui/lab';\r\nimport XOrganizationSelectPopup from 'src/components/domain/XOrganizationSelectPopup';\r\nimport XOrganizationRow from 'src/components/domain/XOrganizationRow';\r\nimport i18n from 'src/i18n';\r\nimport XNoContent from 'src/components/domain/XNoContent';\r\nimport XPagination from 'src/components/layout/XPagination';\r\nimport {XDragAndDropFileUpload} from 'src/components/layout/XDragAndDropFileUpload';\r\nimport HighlightOffIcon from '@material-ui/icons/HighlightOff';\r\nimport { XActionButton, XDisabledButton } from 'src/components/layout/XActionButton';\r\nimport { fileReaderCSV, getStockMapping } from 'src/store/stocks/api';\r\nimport XStockCSVModel from 'src/components/domain/XStockCSVModel';\r\nimport ErrorBoundary from 'src/components/shared/ErrorBoundary';\r\nimport { XSecActionButton } from 'src/components/layout/XActionButton';\r\n\r\ntype StateProps = {\r\n stock?: StockModel;\r\n myOrganization?: MyOrganizationModel;\r\n connections: Organization[];\r\n myAccount: AuthenticationAccount;\r\n loadingStock: boolean;\r\n loadingOrganization: boolean;\r\n fileFormats: FileFormat[];\r\n};\r\n\r\ntype DispatchProps = {\r\n showNotification: (message: string, type: MessageType) => void;\r\n getStockById: (id: string) => Promise;\r\n getConnections: () => void;\r\n getMyOrganization: () => void;\r\n editStock: (id: string, formData: EditStockFormData) => Promise;\r\n showConfirm: (title: string, message: string, onConfirm: () => void) => void;\r\n deleteStock: (id: string) => Promise;\r\n editAvailableStock: (\r\n targetOrganizationIds: string[],\r\n stockId: string,\r\n available: boolean\r\n ) => Promise;\r\n getFileFormats: () => Promise;\r\n};\r\n\r\ntype OwnProps = {};\r\n\r\ntype AllProps = StateProps & DispatchProps & OwnProps & RouteComponentProps<{ id: string }>;\r\n\r\ntype State = {\r\n files: any;\r\n fetchLoading: boolean;\r\n editing: boolean;\r\n dateLimit: boolean;\r\n editModel: EditStockFormData;\r\n search: string;\r\n currentOffset: number;\r\n showAddAvailablePopup: boolean;\r\n loaded: boolean;\r\n editErrors: {\r\n title: boolean;\r\n startDate: boolean;\r\n endDate: boolean;\r\n };\r\n mapping: Mapping;\r\n openMappingModel: boolean;\r\n};\r\n\r\nclass StockPage extends React.Component {\r\n editor: any;\r\n setEditorRef: (editor: any) => any;\r\n\r\n constructor(props: AllProps) {\r\n super(props);\r\n this.setEditorRef = editor => (this.editor = editor);\r\n\r\n this.state = {\r\n files: null,\r\n fetchLoading: false,\r\n editing: false,\r\n dateLimit: false,\r\n editModel: this.mapEditModel(),\r\n search: '',\r\n showAddAvailablePopup: false,\r\n currentOffset: 0,\r\n loaded: false,\r\n editErrors: {\r\n title: false,\r\n startDate: false,\r\n endDate: false\r\n },\r\n mapping: {\r\n delimiter: '',\r\n mappingItems: []\r\n },\r\n openMappingModel: false\r\n };\r\n }\r\n\r\n public mapEditModel() {\r\n if (!this.props.stock) return { title: '', description: '' };\r\n\r\n return {\r\n title: this.props.stock.stock.title,\r\n description: this.props.stock.stock.description\r\n };\r\n }\r\n\r\n public componentDidUpdate(prevProps) {\r\n if (prevProps.stock !== this.props.stock) this.setState({ editModel: this.mapEditModel() });\r\n }\r\n\r\n public componentDidMount() {\r\n if (this.props.myAccount.organizationType === OrganizationType.Retailer) {\r\n this.props.history.push('/app/start');\r\n }\r\n\r\n this.props.getStockById(this.props.match.params.id).then(apiResult => {\r\n if (!apiResult.IsSuccess) {\r\n if (apiResult.StatusCode === 401) this.props.history.push('/app/start');\r\n }\r\n this.setState({ loaded: true });\r\n });\r\n\r\n this.props.getConnections();\r\n this.props.getMyOrganization();\r\n this.props.getFileFormats();\r\n }\r\n\r\n public formChange(name, val) {\r\n const editModel = Object.assign({}, this.state.editModel);\r\n editModel[name] = val;\r\n\r\n this.setState({ editModel });\r\n }\r\n\r\n public async saveEdit() {\r\n if (!this.props.stock) return;\r\n\r\n const editErrors = Object.assign({}, this.state.editErrors);\r\n\r\n editErrors.title = this.state.editModel.title.length === 0;\r\n\r\n this.setState({ editErrors });\r\n\r\n let valid = true;\r\n Object.keys(editErrors).map(item => {\r\n if (editErrors[item] === true) {\r\n valid = false;\r\n }\r\n });\r\n\r\n const data = this.state.editModel;\r\n\r\n if (!valid) return;\r\n\r\n this.props.editStock(this.props.stock.stock.id, data).then(result => {\r\n console.log(result);\r\n if (result.IsSuccess) {\r\n this.props.showNotification('Stock adjusted', 'success');\r\n this.setState({ editing: false });\r\n } else this.props.showNotification('Error' + mapError(result.Errors), 'error');\r\n });\r\n }\r\n\r\n public deleteStock() {\r\n this.props.showConfirm('Delete stock', 'Are you sure you want to delete this stock?', () => {\r\n this.props.deleteStock(this.props.match.params.id).then(apiResult => {\r\n if (apiResult.IsSuccess) {\r\n this.props.showNotification('Stock deleted', 'success');\r\n this.props.history.push('/app/my/stock');\r\n } else\r\n this.props.showNotification('Stock Delete Error' + mapError(apiResult.Errors), 'error');\r\n });\r\n });\r\n }\r\n\r\n public cancelEdit() {\r\n this.setState({ editing: false });\r\n }\r\n\r\n private getFileFormat(fileFormat: string, fileFormatVersion: string) {\r\n const format = this.props.fileFormats.find(f => f.id === fileFormat);\r\n if (!format) return '';\r\n\r\n const version = format.versions.find(v => v.id === fileFormatVersion);\r\n return format.name + '.' + version?.name;\r\n }\r\n\r\n public toggleAvailability(organizations: Organization[], state: boolean) {\r\n if (!this.props.stock) return;\r\n\r\n this.setState({ showAddAvailablePopup: false });\r\n this.props.showNotification('Beschikbaarheid wordt aangepast...', 'warning');\r\n console.log(organizations);\r\n this.props\r\n .editAvailableStock(\r\n organizations.map(o => o.id),\r\n this.props.stock.stock.id,\r\n state\r\n )\r\n .then(result => {\r\n console.log(result);\r\n if (result.IsSuccess)\r\n this.props.showNotification(i18n.t('notification.availabilityAdjusted'), 'success');\r\n else this.props.showNotification('Error' + mapError(result.Errors), 'error');\r\n });\r\n }\r\n\r\n public handleFileChange = (files: any) => {\r\n this.setState({ files });\r\n };\r\n\r\n public fileReaderCSVHandler = async () => {\r\n this.setState({ fetchLoading: true });\r\n const apiResult = await fileReaderCSV(this.state.files[0]);\r\n if (apiResult.IsSuccess) {\r\n this.setState({ files: null });\r\n this.props.showNotification('File uploaded', 'success');\r\n this.setState({ mapping: apiResult.Data });\r\n this.setState({ openMappingModel: true });\r\n } else {\r\n this.props.showNotification('Error', 'error');\r\n }\r\n this.setState({ fetchLoading: false });\r\n };\r\n\r\n public getStockMappingById = async () => {\r\n const apiResult = await getStockMapping(this.props.stock?.stock.mappingId);\r\n if (apiResult.IsSuccess) {\r\n this.setState({ mapping: apiResult.Data });\r\n this.setState({ openMappingModel: true });\r\n }\r\n };\r\n\r\n public render() {\r\n const props = this.props;\r\n if (props.loadingStock || props.loadingOrganization || !this.state.loaded)\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n else if (!props.stock || !props.myOrganization)\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n\r\n const makeAvailableOrganizations = props.connections.filter(\r\n c =>\r\n props.myOrganization?.stockConnections.find(\r\n dc => dc.targetOrganizationId === c.id && dc.stockId === this.props.stock?.stock.id\r\n )?.active !== true\r\n );\r\n\r\n let data: any = [];\r\n const connections = props.myOrganization.stockConnections.filter(\r\n dc => dc.stockId === this.props.stock?.stock.id && dc.active\r\n );\r\n\r\n console.log('dataConnections', connections);\r\n console.log('connections', props.connections);\r\n for (const dc of connections)\r\n data.push({\r\n dataConnection: dc,\r\n organization: props.connections.find(c => c.id === dc.targetOrganizationId)\r\n });\r\n\r\n data = data.sort((a, b) => a.organization.name.localeCompare(b.organization.name));\r\n data = data.filter(\r\n d => d.organization.name.toLowerCase().indexOf(this.state.search.toLowerCase()) !== -1\r\n );\r\n const pageSize = 10;\r\n const paged = data.slice(this.state.currentOffset, this.state.currentOffset + pageSize);\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {this.state.editing ? (\r\n \r\n {t => (\r\n
\r\n \r\n this.cancelEdit()}\r\n style={{ marginRight: '10px', verticalAlign: 'middle' }}\r\n />\r\n \r\n \r\n await this.saveEdit()}\r\n style={{ verticalAlign: 'middle' }}\r\n />\r\n \r\n
\r\n )}\r\n
\r\n ) : (\r\n \r\n {t => (\r\n
\r\n {/* \r\n \r\n \r\n \r\n */}\r\n \r\n this.setState({ editing: true })}\r\n style={{ marginRight: '10px', verticalAlign: 'middle' }}\r\n />\r\n \r\n \r\n this.deleteStock()}\r\n style={{ verticalAlign: 'middle' }}\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 {this.state.editing ? (\r\n this.formChange(e.target.name, e.target.value)}\r\n />\r\n ) : (\r\n props.stock.stock.title\r\n )}\r\n \r\n \r\n {this.state.editing ? (\r\n this.formChange(e.target.name, e.target.value)}\r\n />\r\n ) : (\r\n \r\n {props.stock.stock.description}\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n
Format:
\r\n
\r\n {this.getFileFormat(\r\n this.props.stock?.stock.fileFormatId || '',\r\n this.props.stock?.stock.fileFormatVersionId || ''\r\n )}\r\n
\r\n {!!this.props.stock?.stock?.mappingId && (\r\n <>\r\n
Mapping
\r\n this.getStockMappingById()}>\r\n Edit stock mapping\r\n \r\n \r\n )}\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n {props.fileFormats.find(f => f.id === this.props.stock?.stock.fileFormatId)?.name ===\r\n 'CSV' && (\r\n \r\n \r\n \r\n {this.state.files?.length !== 0 && this.state.files && (\r\n
\r\n
\r\n
{this.state.files?.map((files) => {return `${files.name} \\n`})}
\r\n this.setState({ files: null })}\r\n />\r\n
\r\n {!this.state.fetchLoading ? (\r\n Upload\r\n ) : (\r\n \r\n Uploading..{' '}\r\n \r\n \r\n )}\r\n
\r\n )}\r\n
\r\n )}\r\n\r\n \r\n \r\n {t => (\r\n this.setState({ showAddAvailablePopup: false })}\r\n open={this.state.showAddAvailablePopup}\r\n clearOnClose={true}\r\n organizations={makeAvailableOrganizations}\r\n onSave={organizations => this.toggleAvailability(organizations, true)}\r\n />\r\n )}\r\n \r\n
\r\n \r\n {t => (\r\n this.setState({ search: e.toLowerCase() })}\r\n icons={[\r\n {\r\n icon: AddCircleIcon,\r\n toolTip: t('tooltip.add'),\r\n name: 'add',\r\n action: () => this.setState({ showAddAvailablePopup: true })\r\n }\r\n ]}\r\n />\r\n )}\r\n \r\n {props.connections.length === 0 ? (\r\n \r\n {t => (\r\n \r\n
\r\n \r\n Find Retailers\r\n \r\n
\r\n
\r\n )}\r\n
\r\n ) : (\r\n
\r\n {paged.length === 0 ? (\r\n
\r\n Deze stock is niet beschikbaar voor retailers\r\n
\r\n ) : (\r\n \r\n {t => (\r\n \r\n {paged.map(obj => {\r\n return (\r\n this.toggleAvailability([obj.organization], false)}\r\n dataConnection={obj.dataConnection}\r\n link={'/app/my/connections/' + obj.organization.id}\r\n organization={obj.organization}\r\n />\r\n );\r\n })}\r\n \r\n )}\r\n \r\n )}\r\n {data.length > pageSize && (\r\n this.setState({ currentOffset: i })}\r\n />\r\n )}\r\n
\r\n )}\r\n
\r\n
\r\n \r\n {t => (\r\n \r\n \r\n
\r\n
Beheer instellingen omtrent het aanbieden van deze voorraad
\r\n \r\n props.history.push(`/app/my/stocks/stock-interface/${props.stock?.stock?.id}`)\r\n }>\r\n {t('myArxis.Settings')}\r\n \r\n
\r\n
\r\n )}\r\n
\r\n {this.state.openMappingModel && (\r\n this.setState({ openMappingModel: false })}\r\n />\r\n )}\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state: ApplicationState): StateProps => {\r\n return {\r\n myAccount: state.authentication.account,\r\n connections: state.organizations.connections,\r\n myOrganization: state.organizations.myOrganization,\r\n stock: state.stocks.data.detail,\r\n loadingStock: state.stocks.loading,\r\n loadingOrganization: state.organizations.loading,\r\n fileFormats: state.catalogs.fileFormats\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch: any): DispatchProps => ({\r\n showNotification: (message: string, type: MessageType) => {\r\n dispatch(showNotification(message, type));\r\n },\r\n getConnections: () => dispatch(organizationActions.getOrganizationConnectionsThunk()),\r\n getStockById: (id: string) => dispatch(stockActions.getStockThunk(id)),\r\n getMyOrganization: () => dispatch(organizationActions.getMyOrganizationThunk()),\r\n editStock: (id: string, formData: EditStockFormData) =>\r\n dispatch(stockActions.editStockThunk(id, formData)),\r\n showConfirm: (title: string, message: string, onConfirm: () => void) =>\r\n dispatch(showConfirmation(title, message, onConfirm)),\r\n deleteStock: (id: string) => dispatch(stockActions.deleteStockThunk(id)),\r\n editAvailableStock: (targetOrganizationIds: string[], stockId: string, available: boolean) =>\r\n dispatch(stockActions.editStockAvailableThunk(targetOrganizationIds, stockId, available)),\r\n getFileFormats: () => dispatch(getFileFormatsThunk())\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(StockPage);\r\n\r\nconst ActionButtons = styled.div`\r\n cursor: pointer;\r\n\r\n & svg {\r\n color: rgb(245, 0, 87);\r\n font-weight: bold;\r\n }\r\n`;\r\n","import * as React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport styled from '@emotion/styled';\r\nimport XCatalogRow from 'src/components/domain/XCatalogRow';\r\nimport XNoContent from 'src/components/domain/XNoContent';\r\nimport XPageContent from 'src/components/layout/XPageContent';\r\nimport { XPaper } from 'src/components/layout/XPaper';\r\nimport XTable from 'src/components/layout/XTable';\r\nimport { Catalog, PublicationStatus } from 'src/models/Catalog';\r\nimport { AuthenticationAccount } from 'src/store/authentication/types';\r\nimport { ApplicationState } from '../../../store';\r\nimport * as catalogActions from '../../../store/catalogs/actions';\r\nimport { CatalogSort, getCatalogsThunk } from 'src/store/catalogs/actions';\r\nimport XPaperHeader from 'src/components/layout/XPaperHeader';\r\nimport XScrollView from 'src/components/layout/XScrollView';\r\nimport EmptyImage from '../../../style/images/empty-canvas.svg';\r\nimport { Link, RouteComponentProps } from 'react-router-dom';\r\nimport { XFilterBar } from 'src/components/layout/XFilterBar';\r\nimport XSearchBar from 'src/components/layout/XSearchBar';\r\nimport { XSecActionButton } from 'src/components/layout/XActionButton';\r\nimport { XRowCell } from 'src/components/layout/XRow';\r\nimport { ViewType } from 'src/store/layout/types';\r\nimport { LinearProgress } from '@material-ui/core';\r\nimport { Translation } from 'react-i18next';\r\nimport XCatalog from 'src/components/domain/XCatalog';\r\nimport XGrid from 'src/components/layout/XGrid';\r\nimport GridIcon from '@material-ui/icons/Apps';\r\nimport ListIcon from '@material-ui/icons/FormatListBulleted';\r\nimport { XImage, XImageContainer } from 'src/components/layout/XImage';\r\nimport { generateAvatar } from 'src/helpers/avatarGenerator';\r\nimport { formatDateToString, getImageUrl } from 'src/helpers/formatHelpers';\r\nimport { changeView } from 'src/store/layout/actions';\r\nimport ErrorBoundary from 'src/components/shared/ErrorBoundary';\r\n\r\ntype StateProps = {\r\n subscribedCatalogs: Catalog[];\r\n account: AuthenticationAccount;\r\n catalogs: Catalog[];\r\n loading: boolean;\r\n view: ViewType;\r\n};\r\n\r\ntype DispatchProps = {\r\n getSubscribedCatalogs: () => void;\r\n getCatalogs(sort: CatalogSort): () => void;\r\n changeView(type: ViewType): () => void;\r\n};\r\n\r\ntype State = {\r\n search: string;\r\n currentOffset: number;\r\n viewDownloaded: boolean;\r\n searchNewCatalogs: string;\r\n};\r\n\r\ntype AllProps = StateProps & DispatchProps & RouteComponentProps<{}>;\r\n\r\nclass CatalogsPageRetailer extends React.Component {\r\n constructor(props: AllProps) {\r\n super(props);\r\n\r\n this.state = {\r\n search: '',\r\n currentOffset: 0,\r\n viewDownloaded: false,\r\n searchNewCatalogs: ''\r\n };\r\n }\r\n\r\n public componentWillMount() {\r\n this.props.getSubscribedCatalogs();\r\n this.props.getCatalogs('all');\r\n }\r\n\r\n public switchView(view) {\r\n this.props.changeView(view);\r\n }\r\n\r\n public handleScrollBottom() {\r\n if (this.state.currentOffset >= this.props.catalogs.length) return;\r\n this.setState({ currentOffset: this.state.currentOffset + 30 });\r\n }\r\n\r\n public render() {\r\n if (this.props.loading)\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n\r\n const filtered = this.props.subscribedCatalogs.filter(\r\n c =>\r\n c.title.toLowerCase().indexOf(this.state.search) !== -1 ||\r\n c.organizationName.toLowerCase().indexOf(this.state.search) !== -1\r\n );\r\n\r\n const pageSize = 1000;\r\n const catalogs = this.props.catalogs\r\n .filter(\r\n c =>\r\n this.state.searchNewCatalogs.length === 0 ||\r\n c.title.toLowerCase().indexOf(this.state.searchNewCatalogs.toLowerCase()) !== -1\r\n )\r\n .filter(c => this.state.viewDownloaded || !c.downloaded)\r\n // Only show the actual published catalogs of suppliers\r\n .filter(c => c.publicationStatus == PublicationStatus.Published);\r\n const paged = catalogs.slice(0, this.state.currentOffset + pageSize);\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n {t => (\r\n \r\n )}\r\n \r\n {this.props.catalogs.length !== 0 && (\r\n \r\n
\r\n \r\n {t => (\r\n \r\n this.setState({ searchNewCatalogs: e.target.value.toLowerCase() })\r\n }>\r\n )}\r\n \r\n
\r\n
\r\n \r\n {t => (\r\n this.switchView(this.props.view === 'list' ? 'grid' : 'list')}>\r\n {this.props.view === 'list' ? (\r\n \r\n ) : (\r\n \r\n )}\r\n {this.props.view === 'list' ? 'Grid' : t('organizations.List')}\r\n \r\n )}\r\n \r\n
\r\n )}\r\n\r\n {this.props.catalogs.length !== 0 && paged.length === 0 && (\r\n \r\n {t => }\r\n \r\n )}\r\n {!this.state.search.length && this.props.catalogs.length === 0 && (\r\n \r\n {t => (\r\n \r\n )}\r\n \r\n )}\r\n this.handleScrollBottom()}>\r\n {this.props.view === 'grid' ? (\r\n \r\n {paged.map(dp => (\r\n \r\n ))}\r\n \r\n ) : (\r\n
\r\n {paged.map(c => (\r\n \r\n \r\n \r\n {\r\n e.target.onError = null;\r\n e.target.src = generateAvatar(c.title, 60);\r\n }}\r\n />\r\n \r\n \r\n \r\n {c.title}\r\n \r\n \r\n \r\n {c.organizationName}\r\n \r\n \r\n {c.downloads} downloads\r\n {formatDateToString(c.lastCreationDate)}\r\n \r\n ))}\r\n
\r\n )}\r\n
\r\n \r\n \r\n \r\n {t => (\r\n \r\n )}\r\n \r\n {this.props.subscribedCatalogs && (\r\n <>\r\n \r\n \r\n \r\n {t => (\r\n \r\n this.setState({ search: e.target.value.toLowerCase() })\r\n }>\r\n )}\r\n \r\n \r\n \r\n \r\n \r\n {t => (\r\n \r\n {filtered.map(obj => (\r\n \r\n ))}\r\n \r\n )}\r\n \r\n \r\n \r\n )}\r\n\r\n {filtered.length === 0 && (\r\n \r\n {this.state.search.length === 0 && (\r\n \r\n {t => (\r\n
\r\n

{t('catalogs.dnthSubscriptions')}

\r\n
\r\n
\r\n )}\r\n
\r\n )}\r\n {this.state.search.length !== 0 && (\r\n
\r\n {t =>

{t('catalogs.noCatalogsSub')}

}
\r\n
\r\n )}\r\n
\r\n )}\r\n \r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state: ApplicationState): StateProps => {\r\n return {\r\n account: state.authentication.account,\r\n subscribedCatalogs: state.catalogs.data.subscribed.sort((a, b) =>\r\n a.organizationName.localeCompare(b.organizationName)\r\n ),\r\n catalogs: (state.catalogs.data.all || []),\r\n loading: state.catalogs.data.all === undefined,\r\n view: state.layout.viewCatalogs\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch: any): DispatchProps => ({\r\n getSubscribedCatalogs: () => dispatch(catalogActions.getSubscribedCatalogsThunk()),\r\n getCatalogs: (sort: CatalogSort) => dispatch(getCatalogsThunk(sort)),\r\n changeView: (type: ViewType) => dispatch(changeView('catalogs', type))\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(CatalogsPageRetailer);\r\n\r\nconst StyledPaper = styled(XPaper)`\r\n min-height: 300px;\r\n`;\r\n\r\nconst CatalogRow = styled.div`\r\n display: flex;\r\n margin: 4px 0;\r\n`;\r\n\r\nconst CatalogImage = styled.div`\r\n max-width: 75px;\r\n flex: 1;\r\n`;\r\n\r\nconst CatalogCell = styled.div`\r\n flex: 1;\r\n font-size: 14px;\r\n padding-top: 4px;\r\n`;\r\n\r\nconst CatalogTitle = styled(CatalogCell)`\r\n padding-left: 15px;\r\n font-weight: bold;\r\n`;\r\n","import styled from '@emotion/styled';\r\nimport * as React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { Link, RouteComponentProps } from 'react-router-dom';\r\n\r\nimport XCatalogRow from 'src/components/domain/XCatalogRow';\r\nimport XNoContent from 'src/components/domain/XNoContent';\r\nimport XPageContent from 'src/components/layout/XPageContent';\r\nimport { XPaper } from 'src/components/layout/XPaper';\r\nimport XTable from 'src/components/layout/XTable';\r\nimport { OrganizationModel } from 'src/models/Organization';\r\nimport { RequestModel } from 'src/models/Request';\r\nimport { AuthenticationAccount } from 'src/store/authentication/types';\r\nimport { showNotification } from 'src/store/layout/actions';\r\nimport { updateRequestThunk } from 'src/store/requests/actions';\r\nimport { CatalogRequestStatus } from 'src/store/requests/api';\r\nimport { ApplicationState } from '../../../store';\r\nimport * as organizationActions from '../../../store/organizations/actions';\r\n\r\nimport { LinearProgress } from '@material-ui/core';\r\nimport Skeleton from '@material-ui/lab/Skeleton';\r\nimport XPagination from 'src/components/layout/XPagination';\r\nimport XPaperHeader from 'src/components/layout/XPaperHeader';\r\nimport XScrollView from 'src/components/layout/XScrollView';\r\nimport EmptyImage from '../../../style/images/empty-canvas.svg';\r\nimport XSmallButton from 'src/components/layout/XSmallButton';\r\nimport { XActionStrip } from 'src/components/layout/XActionStrip';\r\nimport { XActionButton, XSecActionButton } from 'src/components/layout/XActionButton';\r\nimport XSearchBar from 'src/components/layout/XSearchBar';\r\nimport XActionDropdown from 'src/components/layout/XActionDropdown';\r\nimport { XFilterBar } from 'src/components/layout/XFilterBar';\r\nimport { XRowCell } from 'src/components/layout/XRow';\r\nimport { Translation } from 'react-i18next';\r\nimport ErrorBoundary from 'src/components/shared/ErrorBoundary';\r\n\r\ntype StateProps = {\r\n myOrganization?: OrganizationModel;\r\n account: AuthenticationAccount;\r\n loading: boolean;\r\n};\r\n\r\ntype DispatchProps = {\r\n showNotification: (message: string) => void;\r\n getMyOrganization: () => void;\r\n editRequest: (catalogRequest: RequestModel, status: CatalogRequestStatus) => void;\r\n};\r\n\r\ntype State = {\r\n currentOffset: number;\r\n search: string;\r\n sort: string;\r\n asc: boolean;\r\n};\r\n\r\ntype AllProps = StateProps & DispatchProps & RouteComponentProps<{}>;\r\n\r\nclass CatalogsPageSupplier extends React.Component {\r\n constructor(props: AllProps) {\r\n super(props);\r\n\r\n this.state = {\r\n currentOffset: 0,\r\n search: '',\r\n sort: 'lastCreationDate',\r\n asc: false\r\n };\r\n }\r\n\r\n public componentDidMount() {\r\n this.props.getMyOrganization();\r\n }\r\n\r\n private Sort(property: string) {\r\n console.log(property);\r\n if (property === 'Publicatiedatum') {\r\n if (this.state.sort === 'publicationDate') this.setState({ asc: !this.state.asc });\r\n this.setState({ sort: 'publicationDate' });\r\n } else if (property === 'Toegevoegd') {\r\n if (this.state.sort === 'lastCreationDate') this.setState({ asc: !this.state.asc });\r\n this.setState({ sort: 'lastCreationDate' });\r\n }\r\n }\r\n\r\n private sortDate(a, b) {\r\n let itemA = a;\r\n let itemB = b;\r\n if (this.state.asc) {\r\n itemA = b;\r\n itemB = a;\r\n }\r\n\r\n if (!itemA[this.state.sort] && !itemB[this.state.sort]) return 0;\r\n if (!itemA[this.state.sort]) return 1;\r\n if (!itemB[this.state.sort]) return -1;\r\n return new Date(itemB[this.state.sort]).getTime() - new Date(itemA[this.state.sort]).getTime();\r\n }\r\n\r\n public render() {\r\n if (this.props.loading || !this.props.myOrganization)\r\n return (\r\n \r\n \r\n \r\n {t => } />}\r\n \r\n \r\n \r\n \r\n {t => (\r\n \r\n this.setState({ search: e.target.value.toLowerCase() })\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 const pageSize = 50;\r\n const catalogs = this.props.myOrganization.catalogs.filter(\r\n c => c.title.toLowerCase().indexOf(this.state.search) !== -1\r\n );\r\n const sorted = catalogs.sort((a, b) => this.sortDate(a, b));\r\n const paged = sorted.slice(this.state.currentOffset, this.state.currentOffset + pageSize);\r\n return (\r\n \r\n \r\n \r\n \r\n {t => (\r\n \r\n this.props.history.push('/app/my/catalogs/new-empty')}>\r\n {t('catalogs.createCatalog')}\r\n \r\n this.props.history.push('/app/my/catalogs/new')}>\r\n {t('catalogs.uploadCatalog')}\r\n \r\n \r\n }\r\n />\r\n )}\r\n \r\n \r\n \r\n \r\n {t => (\r\n \r\n this.setState({ search: e.target.value.toLowerCase() })\r\n }>\r\n )}\r\n \r\n \r\n \r\n {catalogs.length === 0 && (\r\n \r\n {t => (\r\n \r\n {this.state.search.length > 0 ? (\r\n
{t('catalogs.noCatalogsFound')}
\r\n ) : (\r\n
\r\n

{t('catalogs.notPublishedAnyCatalogs')}

\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n )}\r\n
\r\n )}\r\n
\r\n )}\r\n\r\n \r\n this.Sort(p)}>\r\n {paged.map(obj => (\r\n \r\n ))}\r\n \r\n \r\n\r\n {catalogs.length > pageSize && (\r\n this.setState({ currentOffset: i })}\r\n />\r\n )}\r\n \r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state: ApplicationState): StateProps => {\r\n return {\r\n account: state.authentication.account,\r\n myOrganization: state.organizations.myOrganization,\r\n loading: state.organizations.loading\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch: any): DispatchProps => ({\r\n showNotification: (message: string) => {\r\n dispatch(showNotification(message));\r\n },\r\n editRequest: (catalogRequest: RequestModel, status: CatalogRequestStatus) =>\r\n dispatch(updateRequestThunk(catalogRequest, status)),\r\n getMyOrganization: () => dispatch(organizationActions.getMyOrganizationThunk())\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(CatalogsPageSupplier);\r\n","import * as React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport styled from '@emotion/styled';\r\nimport XStockRow from 'src/components/domain/XStockRow';\r\nimport XNoContent from 'src/components/domain/XNoContent';\r\nimport XPageContent from 'src/components/layout/XPageContent';\r\nimport { XPaper } from 'src/components/layout/XPaper';\r\nimport XTable from 'src/components/layout/XTable';\r\nimport { Stock } from 'src/models/Stock';\r\nimport { AuthenticationAccount } from 'src/store/authentication/types';\r\nimport { ApplicationState } from '../../../store';\r\nimport * as stockActions from '../../../store/stocks/actions';\r\nimport { getStocksThunk } from 'src/store/stocks/actions';\r\nimport XPaperHeader from 'src/components/layout/XPaperHeader';\r\nimport XScrollView from 'src/components/layout/XScrollView';\r\nimport EmptyImage from '../../../style/images/empty-canvas.svg';\r\nimport { Link, RouteComponentProps } from 'react-router-dom';\r\nimport { XFilterBar } from 'src/components/layout/XFilterBar';\r\nimport XSearchBar from 'src/components/layout/XSearchBar';\r\nimport { XSecActionButton } from 'src/components/layout/XActionButton';\r\nimport { XRowCell } from 'src/components/layout/XRow';\r\nimport { ViewType } from 'src/store/layout/types';\r\nimport { LinearProgress } from '@material-ui/core';\r\nimport { Translation } from 'react-i18next';\r\nimport XStock from 'src/components/domain/XStock';\r\nimport XGrid from 'src/components/layout/XGrid';\r\nimport GridIcon from '@material-ui/icons/Apps';\r\nimport ListIcon from '@material-ui/icons/FormatListBulleted';\r\nimport { XImage, XImageContainer } from 'src/components/layout/XImage';\r\nimport { generateAvatar } from 'src/helpers/avatarGenerator';\r\nimport { formatDateToString, getImageUrl } from 'src/helpers/formatHelpers';\r\nimport { changeView } from 'src/store/layout/actions';\r\n\r\ntype StateProps = {\r\n subscribedStocks: Stock[];\r\n account: AuthenticationAccount;\r\n stocks: Stock[];\r\n loading: boolean;\r\n view: ViewType;\r\n};\r\n\r\ntype DispatchProps = {\r\n getSubscribedStocks: () => void;\r\n getStocks(): () => void;\r\n changeView(type: ViewType): () => void;\r\n};\r\n\r\ntype State = {\r\n search: string;\r\n currentOffset: number;\r\n viewDownloaded: boolean;\r\n searchNewStocks: string;\r\n};\r\n\r\ntype AllProps = StateProps & DispatchProps & RouteComponentProps<{}>;\r\n\r\nclass StockPageRetailer extends React.Component {\r\n constructor(props: AllProps) {\r\n super(props);\r\n\r\n this.state = {\r\n search: '',\r\n currentOffset: 0,\r\n viewDownloaded: false,\r\n searchNewStocks: ''\r\n };\r\n }\r\n\r\n public componentWillMount() {\r\n this.props.getSubscribedStocks();\r\n this.props.getStocks();\r\n }\r\n\r\n public switchView(view) {\r\n this.props.changeView(view);\r\n }\r\n\r\n public handleScrollBottom() {\r\n if (this.state.currentOffset >= this.props.stocks?.length) return;\r\n this.setState({ currentOffset: this.state.currentOffset + 30 });\r\n }\r\n\r\n public render() {\r\n if (this.props.loading)\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n\r\n const filtered = this.props.subscribedStocks.filter(\r\n c =>\r\n c.title.toLowerCase().indexOf(this.state.search) !== -1 ||\r\n c.organizationName.toLowerCase().indexOf(this.state.search) !== -1\r\n );\r\n\r\n const pageSize = 1000;\r\n const stocks = this.props.stocks.filter(\r\n c =>\r\n this.state.search.length === 0 ||\r\n c.title.toLowerCase().indexOf(this.state.search.toLowerCase()) !== -1\r\n );\r\n const paged = stocks.slice(0, this.state.currentOffset + pageSize);\r\n\r\n return (\r\n \r\n \r\n \r\n {t => (\r\n \r\n )}\r\n \r\n {this.props.stocks?.length !== 0 && (\r\n \r\n
\r\n \r\n {t => (\r\n \r\n this.setState({ searchNewStocks: e.target.value.toLowerCase() })\r\n }>\r\n )}\r\n \r\n
\r\n
\r\n \r\n {t => (\r\n this.switchView(this.props.view === 'list' ? 'grid' : 'list')}>\r\n {this.props.view === 'list' ? (\r\n \r\n ) : (\r\n \r\n )}\r\n {this.props.view === 'list' ? 'Grid' : t('organizations.List')}\r\n \r\n )}\r\n \r\n
\r\n )}\r\n\r\n {this.props.stocks?.length !== 0 && paged?.length === 0 && (\r\n {t => }\r\n )}\r\n {!this.state.search.length && this.props.stocks?.length === 0 && (\r\n \r\n {t => (\r\n \r\n )}\r\n \r\n )}\r\n this.handleScrollBottom()}>\r\n {this.props.view === 'grid' ? (\r\n \r\n {paged.map(dp => (\r\n \r\n ))}\r\n \r\n ) : (\r\n
\r\n {paged.map(c => (\r\n \r\n \r\n \r\n {\r\n e.target.onError = null;\r\n e.target.src = generateAvatar(c.title, 60);\r\n }}\r\n />\r\n \r\n \r\n \r\n {/* {c.title} */}\r\n {c.title}\r\n \r\n \r\n {/* \r\n {c.organizationName}\r\n */}\r\n {c.organizationName}\r\n \r\n {c.downloads} downloads\r\n {formatDateToString(c.creationDate)}\r\n \r\n ))}\r\n
\r\n )}\r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state: ApplicationState): StateProps => {\r\n return {\r\n account: state.authentication.account,\r\n subscribedStocks: state.stocks.data.subscribed.sort(\r\n (a, b) => new Date(b.creationDate).getTime() - new Date(a.creationDate).getTime()\r\n ),\r\n stocks: state.stocks.data.all || [],\r\n loading: state.stocks.loading,\r\n view: state.layout.viewCatalogs\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch: any): DispatchProps => ({\r\n getSubscribedStocks: () => dispatch(stockActions.getSubscribedStocksThunk()),\r\n getStocks: () => dispatch(getStocksThunk()),\r\n changeView: (type: ViewType) => dispatch(changeView('catalogs', type))\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(StockPageRetailer);\r\n\r\nconst StyledPaper = styled(XPaper)`\r\n min-height: 300px;\r\n`;\r\n\r\nconst StockRow = styled.div`\r\n display: flex;\r\n margin: 4px 0;\r\n`;\r\n\r\nconst StockImage = styled.div`\r\n max-width: 75px;\r\n flex: 1;\r\n`;\r\n\r\nconst StockCell = styled.div`\r\n flex: 1;\r\n font-size: 14px;\r\n padding-top: 4px;\r\n`;\r\n\r\nconst StockTitle = styled(StockCell)`\r\n padding-left: 15px;\r\n font-weight: bold;\r\n`;\r\n","import styled from '@emotion/styled';\r\nimport * as React from 'react';\r\nimport { Link } from 'react-router-dom';\r\nimport { formatDateToString } from 'src/helpers/formatHelpers';\r\nimport { XRowCell } from '../layout/XRow';\r\nimport { TableRow } from '../layout/XTable';\r\n\r\ntype OwnProps = {\r\n stock: any;\r\n link?: string;\r\n showCreationDate?: boolean;\r\n};\r\n\r\ntype AllProps = OwnProps;\r\n\r\nconst XStockRow: React.FC = props => {\r\n const content = (\r\n \r\n {props.stock.title}\r\n {props.stock.description}\r\n {props.showCreationDate ? (\r\n {formatDateToString(props.stock.creationDate)}\r\n ) : null}\r\n \r\n );\r\n\r\n return props.link ? {content} : content;\r\n};\r\n\r\nexport default XStockRow;\r\n\r\nconst TitleCell = styled(XRowCell)``;\r\n","import * as React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { RouteComponentProps } from 'react-router-dom';\r\nimport XStockRow from 'src/components/domain/XStockRow';\r\nimport XNoContent from 'src/components/domain/XNoContent';\r\nimport XPageContent from 'src/components/layout/XPageContent';\r\nimport { XPaper } from 'src/components/layout/XPaper';\r\nimport XTable from 'src/components/layout/XTable';\r\nimport { OrganizationModel } from 'src/models/Organization';\r\nimport { RequestModel } from 'src/models/Request';\r\nimport { AuthenticationAccount } from 'src/store/authentication/types';\r\nimport { showNotification } from 'src/store/layout/actions';\r\nimport { updateRequestThunk } from 'src/store/requests/actions';\r\nimport { CatalogRequestStatus } from 'src/store/requests/api';\r\nimport { ApplicationState } from '../../../store';\r\nimport * as organizationActions from '../../../store/organizations/actions';\r\nimport XPagination from 'src/components/layout/XPagination';\r\nimport XPaperHeader from 'src/components/layout/XPaperHeader';\r\nimport XScrollView from 'src/components/layout/XScrollView';\r\nimport EmptyImage from '../../../style/images/empty-canvas.svg';\r\nimport { XActionStrip } from 'src/components/layout/XActionStrip';\r\nimport { XActionButton } from 'src/components/layout/XActionButton';\r\nimport XSearchBar from 'src/components/layout/XSearchBar';\r\nimport { XFilterBar } from 'src/components/layout/XFilterBar';\r\nimport { XRowCell } from 'src/components/layout/XRow';\r\nimport { Translation } from 'react-i18next';\r\nimport { Skeleton } from '@material-ui/lab';\r\nimport ErrorBoundary from 'src/components/shared/ErrorBoundary';\r\n\r\ntype StateProps = {\r\n myOrganization?: OrganizationModel;\r\n account: AuthenticationAccount;\r\n loading: boolean;\r\n};\r\n\r\ntype DispatchProps = {\r\n showNotification: (message: string) => void;\r\n getMyOrganization: () => void;\r\n editRequest: (catalogRequest: RequestModel, status: CatalogRequestStatus) => void;\r\n};\r\n\r\ntype State = {\r\n currentOffset: number;\r\n search: string;\r\n};\r\n\r\ntype AllProps = StateProps & DispatchProps & RouteComponentProps<{}>;\r\n\r\nclass StockPageSupplier extends React.Component {\r\n constructor(props: AllProps) {\r\n super(props);\r\n\r\n this.state = {\r\n currentOffset: 0,\r\n search: ''\r\n };\r\n }\r\n\r\n public componentDidMount() {\r\n this.props.getMyOrganization();\r\n }\r\n\r\n public render() {\r\n if (this.props.loading || !this.props.myOrganization)\r\n return (\r\n \r\n \r\n \r\n {t => } />}\r\n \r\n \r\n \r\n \r\n {t => (\r\n \r\n this.setState({ search: e.target.value.toLowerCase() })\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 const pageSize = 20;\r\n const stocks = this.props.myOrganization.stocks.filter(\r\n c => c.title.toLowerCase().indexOf(this.state.search) !== -1\r\n );\r\n const paged = stocks.slice(this.state.currentOffset, this.state.currentOffset + pageSize);\r\n return (\r\n \r\n \r\n \r\n \r\n {t => (\r\n \r\n this.props.history.push('/app/my/stocks/add-stock')}>\r\n Add stock\r\n \r\n \r\n }\r\n />\r\n )}\r\n \r\n \r\n \r\n \r\n {t => (\r\n \r\n this.setState({ search: e.target.value.toLowerCase() })\r\n }>\r\n )}\r\n \r\n \r\n \r\n {stocks.length === 0 ? (\r\n \r\n {t => (\r\n \r\n {this.state.search.length > 0 ? (\r\n
Stock not found
\r\n ) : (\r\n
\r\n

You have not published any stock yet

\r\n
\r\n )}\r\n
\r\n )}\r\n
\r\n ) : (\r\n \r\n \r\n {paged.map(obj => (\r\n \r\n ))}\r\n \r\n \r\n )}\r\n\r\n {stocks.length > pageSize && (\r\n this.setState({ currentOffset: i })}\r\n />\r\n )}\r\n \r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state: ApplicationState): StateProps => {\r\n return {\r\n account: state.authentication.account,\r\n myOrganization: state.organizations.myOrganization,\r\n loading: state.organizations.loading\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch: any): DispatchProps => ({\r\n showNotification: (message: string) => {\r\n dispatch(showNotification(message));\r\n },\r\n editRequest: (catalogRequest: RequestModel, status: CatalogRequestStatus) =>\r\n dispatch(updateRequestThunk(catalogRequest, status)),\r\n getMyOrganization: () => dispatch(organizationActions.getMyOrganizationThunk())\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(StockPageSupplier);\r\n","import styled from '@emotion/styled';\r\nimport { LinearProgress } from '@material-ui/core';\r\nimport AddCircleIcon from '@material-ui/icons/AddCircle';\r\nimport DeleteIcon from '@material-ui/icons/Clear';\r\nimport * as React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { Link, RouteComponentProps } from 'react-router-dom';\r\nimport XCatalogRow from 'src/components/domain/XCatalogRow';\r\nimport { XContainer } from 'src/components/layout/XContainer';\r\nimport { XImage, XImageContainer } from 'src/components/layout/XImage';\r\nimport XPageContent from 'src/components/layout/XPageContent';\r\nimport XForm from 'src/components/layout/XForm';\r\nimport XPopup from 'src/components/layout/XPopup';\r\nimport { XPaper, XPaperText, XPaperTitle } from 'src/components/layout/XPaper';\r\nimport { XRow, XRowCell } from 'src/components/layout/XRow';\r\nimport XSelectItem from 'src/components/layout/XSelectItem';\r\nimport XTable, { TableRow } from 'src/components/layout/XTable';\r\nimport { ApiResult } from 'src/helpers/apiClient';\r\nimport { Catalog, PublicationStatus } from 'src/models/Catalog';\r\nimport {\r\n MyOrganizationModel,\r\n OrganizationModel,\r\n ConnectionIdentifier,\r\n OrganizationConnection\r\n} from 'src/models/Organization';\r\nimport { ApplicationState } from 'src/store';\r\nimport * as catalogActions from 'src/store/catalogs/actions';\r\nimport * as messageActions from 'src/store/messages/actions';\r\nimport { showConfirmation, showNotification } from 'src/store/layout/actions';\r\nimport * as organizationActions from 'src/store/organizations/actions';\r\n\r\nimport XErrorContent from 'src/components/domain/XErrorContent';\r\nimport XOrganizationTitle from 'src/components/domain/XOrganizationTitle';\r\nimport XScrollView from 'src/components/layout/XScrollView';\r\nimport { generateAvatar } from 'src/helpers/avatarGenerator';\r\nimport { mapError } from 'src/helpers/errorMap';\r\nimport { getImageUrl } from 'src/helpers/formatHelpers';\r\nimport { MessageType } from 'src/store/layout/types';\r\nimport { Software } from 'src/models/Software';\r\nimport {\r\n deleteConnectionIdentifierThunk,\r\n getConnectionIdentifiersThunk\r\n} from 'src/store/organizations/actions';\r\nimport { getSoftwareThunk } from 'src/store/software/actions';\r\nimport { Translation } from 'react-i18next';\r\nimport i18n from '../../../i18n';\r\nimport ErrorBoundary from 'src/components/shared/ErrorBoundary';\r\nimport { CatalogMessageModel } from '../../../models/Message';\r\n\r\ntype StateProps = {\r\n catalogMessages?: CatalogMessageModel[];\r\n myOrganization?: MyOrganizationModel;\r\n organizationModel?: OrganizationModel;\r\n connectionIdentifiers: ConnectionIdentifier[];\r\n software: Software[];\r\n loading: boolean;\r\n};\r\n\r\ntype DispatchProps = {\r\n getOrganizationCatalogMessages: () => void;\r\n showNotification: (message: string, type: MessageType) => void;\r\n getOrganization: (organizationId: string) => Promise;\r\n getMyOrganization: () => void;\r\n editAvailableCatalog: (\r\n targetOrganizationId: string,\r\n catalogId: string,\r\n available: boolean\r\n ) => Promise;\r\n getConnectionIdentifiers: (organizationId: string) => void;\r\n addConnectionIdentifier: (\r\n organizationConnetionId: string,\r\n value: string,\r\n softwareId: string\r\n ) => Promise;\r\n deleteConnectionIdentifier: (id: string) => Promise;\r\n showConfirm: (title: string, message: string, onConfirm: () => void) => void;\r\n getSoftware(): () => void;\r\n};\r\n\r\ntype OwnProps = {};\r\n\r\ntype AllProps = StateProps & DispatchProps & OwnProps & RouteComponentProps<{ id: string }>;\r\n\r\ntype State = {\r\n showAddConnectionIdentifier: boolean;\r\n newConnectionIdentifier: {\r\n value: string;\r\n softwareId: string;\r\n };\r\n editing: boolean;\r\n};\r\n\r\nclass ConnectionPage extends React.Component {\r\n public constructor(props: AllProps) {\r\n super(props);\r\n this.state = {\r\n showAddConnectionIdentifier: false,\r\n newConnectionIdentifier: {\r\n value: '',\r\n softwareId: ''\r\n },\r\n editing: false\r\n };\r\n }\r\n\r\n public componentDidMount() {\r\n this.props.getOrganization(this.props.match.params.id).then(result => {\r\n if (!result.IsSuccess && result.StatusCode === 401) this.props.history.push('/app/start');\r\n });\r\n\r\n this.props.getMyOrganization();\r\n this.props.getConnectionIdentifiers(this.props.match.params.id);\r\n this.props.getSoftware();\r\n this.props.getOrganizationCatalogMessages();\r\n }\r\n\r\n public toggleAvailableCatalog = (catalog: Catalog, state: boolean) => {\r\n if (!this.props.organizationModel) return;\r\n\r\n this.props\r\n .editAvailableCatalog(this.props.organizationModel.organization.id, catalog.id, state)\r\n .then(result => {\r\n if (result.IsSuccess) {\r\n this.props.showNotification(i18n.t('notification.availabilityAdjusted'), 'success');\r\n this.setState({ editing: false });\r\n } else\r\n this.props.showNotification(\r\n i18n.t('notification.adjustingAvailabilityError') + mapError(result.Errors),\r\n 'error'\r\n );\r\n });\r\n };\r\n\r\n public showAddConnectionIdentifier() {\r\n this.setState({ showAddConnectionIdentifier: true });\r\n }\r\n\r\n public addConnectionIdentifier() {\r\n if (!this.state.newConnectionIdentifier.value) return;\r\n\r\n // set button to loading\r\n this.props\r\n .addConnectionIdentifier(\r\n this.getConnectionId(),\r\n this.state.newConnectionIdentifier.value,\r\n this.state.newConnectionIdentifier.softwareId\r\n )\r\n .then(result => {\r\n if (result.IsSuccess) {\r\n // reload identifiers\r\n this.props.getConnectionIdentifiers(this.props.match.params.id);\r\n // show notification\r\n this.setState({\r\n showAddConnectionIdentifier: false,\r\n newConnectionIdentifier: { value: '', softwareId: '' }\r\n });\r\n this.props.showNotification(i18n.t('notification.idNumAdded'), 'success');\r\n } else\r\n this.props.showNotification(\r\n i18n.t('notification.idNumAddingError') + mapError(result.Errors),\r\n 'error'\r\n );\r\n });\r\n }\r\n\r\n public removeConnectionIdentifier(identifier: ConnectionIdentifier) {\r\n this.props.showConfirm(\r\n i18n.t('confirmation.deleteIdentificationNumber'),\r\n i18n.t('confirmation.sureToDeleteIdNum'),\r\n () => {\r\n this.props.deleteConnectionIdentifier(identifier.id).then(apiResult => {\r\n if (apiResult.IsSuccess) {\r\n // reload identifiers\r\n this.props.getConnectionIdentifiers(this.props.match.params.id);\r\n this.props.showNotification(i18n.t('notification.idNumRemoved'), 'success');\r\n } else {\r\n this.props.showNotification(\r\n i18n.t('notification.somethingWentWrongWhileRemovingIdNum') +\r\n mapError(apiResult.Errors),\r\n 'error'\r\n );\r\n }\r\n });\r\n }\r\n );\r\n }\r\n\r\n public handleNewConnectionIdentifierChange = (name: any, value: any) => {\r\n const identifierData = { ...this.state.newConnectionIdentifier };\r\n identifierData[name] = value;\r\n this.setState({ newConnectionIdentifier: identifierData });\r\n };\r\n\r\n public getConnectionId(): string {\r\n const connection =\r\n this.props.myOrganization?.organizationConnections?.find(\r\n dc =>\r\n dc.sourceOrganizationId === this.props.organizationModel?.organization.id ||\r\n dc.targetOrganizationId === this.props.organizationModel?.organization.id\r\n )?.id || '';\r\n\r\n return connection;\r\n }\r\n\r\n public render() {\r\n const props = this.props;\r\n\r\n if (props.loading)\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n else if (!props.organizationModel || !props.myOrganization)\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n\r\n return (\r\n \r\n \r\n \r\n {t => (\r\n this.addConnectionIdentifier()}\r\n onCancel={() => this.setState({ showAddConnectionIdentifier: false })}\r\n title={t('account.addIdNum')}\r\n open={this.state.showAddConnectionIdentifier}>\r\n
\r\n \r\n this.handleNewConnectionIdentifierChange(name, value)\r\n }\r\n fields={[\r\n // {\r\n // title: 'Software',\r\n // name: 'softwareId',\r\n // required: false,\r\n // type: 'select',\r\n // options: props.software.map(t => {\r\n // return { name: t.name, value: t.id };\r\n // })\r\n // },\r\n { title: t('tooltip.number'), name: 'value', required: true, maxLength: 255 }\r\n ]}\r\n />\r\n
\r\n \r\n )}\r\n
\r\n \r\n \r\n \r\n \r\n {props.loading ? (\r\n
\r\n ) : (\r\n {\r\n e.target.onError = null;\r\n e.target.src = generateAvatar(\r\n props.organizationModel?.organization.name ?? '',\r\n 120\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 {props.organizationModel.organization.description}\r\n
\r\n
\r\n \r\n
\r\n\r\n
\r\n \r\n {t => {t('catalogs.catalogsAvailability')}}\r\n \r\n {props.myOrganization.catalogs.length === 0 ? (\r\n \r\n {t => (\r\n \r\n {t('catalogs.dontHaveAnyCatalogsToMakeAvailable')}{' '}\r\n {t('catalogs.publishCatalogNow')}\r\n \r\n )}\r\n \r\n ) : (\r\n undefined\r\n )}\r\n \r\n \r\n {props.myOrganization.catalogs\r\n .filter(c => c.publicationStatus == PublicationStatus.Published)\r\n .map(obj => {\r\n const dataConnection = props.myOrganization?.catalogConnections.find(\r\n c =>\r\n c.targetOrganizationId === props.organizationModel?.organization.id &&\r\n c.catalogId === obj.id\r\n );\r\n const catalogMessage = props.catalogMessages?.find(\r\n x =>\r\n x.catalogVersionId === obj.currentVersionId &&\r\n x.toOrganizationId === props.organizationModel?.organization.id\r\n );\r\n return (\r\n {\r\n this.toggleAvailableCatalog(obj, c);\r\n }}>\r\n \r\n \r\n );\r\n })}\r\n \r\n \r\n
\r\n
\r\n \r\n {t => (\r\n \r\n \r\n {t('catalogs.idNumber')}\r\n this.showAddConnectionIdentifier()}>\r\n \r\n \r\n \r\n \r\n {this.props.connectionIdentifiers.map(cId => (\r\n \r\n
{cId.value}
\r\n
\r\n this.removeConnectionIdentifier(cId)}\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\nconst mapStateToProps = (state: ApplicationState): StateProps => {\r\n return {\r\n catalogMessages: state.messages.catalogMessages,\r\n myOrganization: state.organizations.myOrganization,\r\n organizationModel: state.organizations.detail,\r\n connectionIdentifiers: state.organizations.connectionIdentifiers,\r\n software: state.software.all,\r\n loading: state.catalogs.loading\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch: any): DispatchProps => ({\r\n getOrganizationCatalogMessages: () => dispatch(messageActions.getOrganizationCatalogMessagesThunk()),\r\n showNotification: (message: string, type: MessageType) =>\r\n dispatch(showNotification(message, type)),\r\n getOrganization: (organizationId: string) =>\r\n dispatch(organizationActions.getOrganizationThunk(organizationId)),\r\n getMyOrganization: () => dispatch(organizationActions.getMyOrganizationThunk()),\r\n editAvailableCatalog: (targetOrganizationId: string, catalogId: string, available: boolean) =>\r\n dispatch(\r\n catalogActions.editCatalogAvailableThunk([targetOrganizationId], catalogId, available)\r\n ),\r\n getConnectionIdentifiers: (organizationId: string) =>\r\n dispatch(organizationActions.getConnectionIdentifiersThunk(organizationId)),\r\n addConnectionIdentifier: (organizationConnectionId: string, value: string, softwareId: string) =>\r\n dispatch(\r\n organizationActions.addConnectionIdentifierThunk(organizationConnectionId, value, softwareId)\r\n ),\r\n deleteConnectionIdentifier: (id: string) => dispatch(deleteConnectionIdentifierThunk(id)),\r\n showConfirm: (title: string, message: string, onConfirm: () => void) =>\r\n dispatch(showConfirmation(title, message, onConfirm)),\r\n getSoftware: () => dispatch(getSoftwareThunk())\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(ConnectionPage);\r\n\r\nconst NoItems = styled.div`\r\n padding: 15px;\r\n & a {\r\n text-decoration: underline;\r\n cursor: pointer;\r\n }\r\n`;\r\n\r\nconst StyledPaper = styled(XPaper)`\r\n min-height: 300px;\r\n max-height: calc(100% - 40px);\r\n overflow-y: auto;\r\n`;\r\n\r\nconst StyledPaperTitle = styled(XPaperTitle)`\r\n margin-bottom: 20px;\r\n position: relative;\r\n`;\r\n\r\nconst TitleWrapper = styled.div`\r\n margin: 0 15px;\r\n`;\r\n\r\nconst LinkContent = styled.div({\r\n right: '-15px',\r\n position: 'absolute',\r\n cursor: 'pointer',\r\n top: '-15px',\r\n color: 'rgb(245, 0, 87)'\r\n});\r\n","import { OrganizationGroup } from 'src/models/OrganizationGroup';\r\nimport { apiClient, ApiResult } from '../../helpers/apiClient';\r\n\r\nexport const listOrganizationGroups = async (): Promise => {\r\n const result = await apiClient.postQueryAsync('ListOrganizationGroups', {});\r\n\r\n if (result.IsSuccess) {\r\n const groups = result.JsonResponse as OrganizationGroup[];\r\n return groups;\r\n } else {\r\n return null;\r\n }\r\n};\r\n","import { Dispatch } from 'redux';\r\nimport { OrganizationGroup } from 'src/models/OrganizationGroup';\r\nimport { listOrganizationGroups } from './api';\r\nimport { ActionTypes } from './types';\r\n\r\ntype FetchStatus = 'request' | 'success' | 'failure';\r\n\r\nexport type GetOrganizationGroupsAction = {\r\n type: ActionTypes.GET_ORGANIZATION_GROUPS;\r\n status: FetchStatus;\r\n payload: { organizationGroups?: OrganizationGroup[] };\r\n};\r\n\r\nconst getOrganizationGroupsAction = (\r\n status: FetchStatus,\r\n data?: OrganizationGroup[]\r\n): GetOrganizationGroupsAction => ({\r\n type: ActionTypes.GET_ORGANIZATION_GROUPS,\r\n status,\r\n payload: {\r\n organizationGroups: data\r\n }\r\n});\r\n\r\nexport const getOrganizationGroupsThunk = () => {\r\n return async (dispatch: Dispatch) => {\r\n dispatch(getOrganizationGroupsAction('request'));\r\n const groups = await listOrganizationGroups();\r\n\r\n if (groups) {\r\n dispatch(getOrganizationGroupsAction('success', groups));\r\n } else {\r\n dispatch(getOrganizationGroupsAction('failure'));\r\n }\r\n };\r\n};\r\n\r\nexport type Action = GetOrganizationGroupsAction;\r\n","import { AnyAction, Dispatch } from 'redux';\r\n\r\nimport { commandAction, requestApiThunk } from 'src/helpers/actionHelpers';\r\nimport { ApiError, ApiResult } from 'src/helpers/apiClient';\r\nimport { OrderMessage } from 'src/models/OrderMessage';\r\nimport { getOrderMessages } from './api';\r\nimport { ActionTypes } from './types';\r\n\r\nexport type FetchStatus = 'request' | 'success' | 'failure';\r\n\r\n// Action creator types\r\nexport type GetOrderMessagesAction = {\r\n type: ActionTypes.GET_ORDERMESSAGES;\r\n status: FetchStatus;\r\n errors?: ApiError[];\r\n payload: {\r\n orderMessages?: OrderMessage[];\r\n };\r\n};\r\n\r\nexport const getOrderMessagesAction = (\r\n status: FetchStatus,\r\n data?: OrderMessage[],\r\n errors?: ApiError[]\r\n): GetOrderMessagesAction => ({\r\n type: ActionTypes.GET_ORDERMESSAGES,\r\n status,\r\n errors,\r\n payload: {\r\n orderMessages: data\r\n }\r\n});\r\n\r\n// Action thunks\r\nexport const getOrderMessagesThunk = () => {\r\n return requestApiThunk(getOrderMessagesAction, getOrderMessages);\r\n};\r\n\r\n// Export Action creator types\r\nexport type Action = GetOrderMessagesAction;\r\n","import styled from '@emotion/styled';\r\nimport * as React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { XPaper } from 'src/components/layout/XPaper';\r\nimport { AuthenticationAccount } from 'src/store/authentication/types';\r\nimport * as OrganizationGroupActions from 'src/store/organizationgroups/actions';\r\nimport * as OrganizationActions from 'src/store/organizations/actions';\r\n\r\nimport { TextField } from '@material-ui/core';\r\nimport XNoContent from 'src/components/domain/XNoContent';\r\nimport XOrganizationRow from 'src/components/domain/XOrganizationRow';\r\nimport XPageContent from 'src/components/layout/XPageContent';\r\nimport XTable from 'src/components/layout/XTable';\r\nimport { Organization, OrganizationType } from 'src/models/Organization';\r\nimport { OrganizationGroup } from 'src/models/OrganizationGroup';\r\nimport { ApplicationState } from '../../../store';\r\nimport { getMyOrganizationThunk } from 'src/store/organizations/actions';\r\nimport { Link, RouteComponentProps } from 'react-router-dom';\r\nimport XPagination from 'src/components/layout/XPagination';\r\nimport XPaperHeader from 'src/components/layout/XPaperHeader';\r\nimport XScrollView from 'src/components/layout/XScrollView';\r\nimport { ApiResult } from 'src/helpers/apiClient';\r\nimport { mapError } from 'src/helpers/errorMap';\r\nimport { showConfirmation, showNotification } from 'src/store/layout/actions';\r\nimport { MessageType } from 'src/store/layout/types';\r\nimport { OrderMessage } from 'src/models/OrderMessage';\r\nimport { getOrderMessagesThunk } from 'src/store/data/actions';\r\nimport { MyOrganizationModel } from 'src/models/Organization';\r\nimport EmptyImage from '../../../style/images/empty-clipboard.svg';\r\nimport XSmallButton from 'src/components/layout/XSmallButton';\r\nimport { XA } from '../AccountPage';\r\nimport { XFilterBar } from 'src/components/layout/XFilterBar';\r\nimport { XRowCell } from 'src/components/layout/XRow';\r\nimport XSearchBar from 'src/components/layout/XSearchBar';\r\nimport { XActionButton, XSecActionButton } from 'src/components/layout/XActionButton';\r\nimport { XActionStrip } from 'src/components/layout/XActionStrip';\r\nimport { Translation } from 'react-i18next';\r\nimport i18n from '../../../i18n';\r\nimport { Skeleton } from '@material-ui/lab';\r\nimport ErrorBoundary from 'src/components/shared/ErrorBoundary';\r\n\r\ntype StateProps = {\r\n account: AuthenticationAccount;\r\n connections: Organization[];\r\n organizationGroups: OrganizationGroup[];\r\n orderMessages: OrderMessage[];\r\n myOrganization?: MyOrganizationModel;\r\n loading: boolean;\r\n};\r\n\r\ntype DispatchProps = {\r\n getConnections: () => any;\r\n getOrganizationGroups: () => any;\r\n deleteConnection: (organizationId: string) => Promise;\r\n showConfirm: (title: string, message: string, onConfirm: () => void) => void;\r\n showNotification: (text: string, type?: MessageType) => void;\r\n getOrderMessages(): () => void;\r\n getMyOrganization: () => void;\r\n};\r\n\r\ntype AllProps = StateProps & DispatchProps & RouteComponentProps<{}>;\r\n\r\ntype State = {\r\n search: string;\r\n currentOffset: number;\r\n};\r\n\r\nclass ConnectionsPage extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n this.state = {\r\n search: '',\r\n currentOffset: 0\r\n };\r\n }\r\n\r\n public componentDidMount() {\r\n this.props.getConnections();\r\n this.props.getOrderMessages();\r\n this.props.getMyOrganization();\r\n }\r\n\r\n public removeConnection(organization: Organization) {\r\n this.props.showConfirm(\r\n i18n.t('confirmation.disconnect'),\r\n i18n.t('confirmation.sureWantToEndConnection'),\r\n () => {\r\n this.props.deleteConnection(organization.id).then(result => {\r\n if (result.IsSuccess)\r\n this.props.showNotification(i18n.t('notification.connectionRemoved'));\r\n else\r\n this.props.showNotification(\r\n i18n.t('notification.errWhileRemovingConnection') + mapError(result.Errors),\r\n 'error'\r\n );\r\n });\r\n }\r\n );\r\n }\r\n\r\n public render() {\r\n const pageSize = 20;\r\n const connections = this.props.connections.filter(\r\n r => r.name.toLowerCase().indexOf(this.state.search) !== -1\r\n );\r\n const paged = connections.slice(this.state.currentOffset, this.state.currentOffset + pageSize);\r\n const type = this.props.account.organizationType;\r\n const orgsName = type === OrganizationType.Retailer ? i18n.t('common.suppliers') : 'retailers';\r\n return (\r\n \r\n \r\n \r\n \r\n {t => (\r\n \r\n {t('organizations.belowAreAll') +\r\n orgsName.toLowerCase() +\r\n t('organizations.yourRel')}\r\n
\r\n \r\n {t('connections.findRelationships')} {'>'}\r\n \r\n \r\n }\r\n />\r\n )}\r\n
\r\n {!!this.props.connections.length && (\r\n \r\n \r\n \r\n {t => (\r\n \r\n this.setState({ search: e.target.value.toLowerCase() })\r\n }>\r\n )}\r\n \r\n \r\n \r\n )}\r\n {connections.length === 0 && (\r\n \r\n {this.state.search.length > 0 ? (\r\n {t =>

{t('connections.noRelFound')}

}
\r\n ) : (\r\n \r\n {t => (\r\n
\r\n
\r\n

\r\n {t('connections.dontHaveRel')}\r\n

\r\n
\r\n
\r\n
\r\n Wat kan ik doen?\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 {connections.length !== 0 && (\r\n \r\n \r\n {t => (\r\n \r\n {this.props.loading ? (\r\n Array.from({ length: 6 }).map((_, idx) => )\r\n ) : (\r\n <>\r\n {paged.map(obj => (\r\n this.removeConnection(obj)}\r\n showConnectionDate\r\n showLiveConnection\r\n liveConnection={\r\n this.props.myOrganization &&\r\n this.props.myOrganization.organizationConnections.find(org =>\r\n org.sourceOrganizationId === obj.id\r\n || org.targetOrganizationId === obj.id\r\n )?.lastTrafficDate != null\r\n }\r\n showDelete\r\n />\r\n ))}\r\n \r\n )}\r\n \r\n )}\r\n \r\n \r\n )}\r\n {connections.length > pageSize && (\r\n this.setState({ currentOffset: i })}\r\n />\r\n )}\r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state: ApplicationState): StateProps => {\r\n return {\r\n account: state.authentication.account,\r\n connections: state.organizations.connections.sort((a, b) => a.name.localeCompare(b.name)),\r\n organizationGroups: state.organizationGroups.all,\r\n orderMessages: state.data.orderMessages,\r\n myOrganization: state.organizations.myOrganization,\r\n loading: state.organizations.loading\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch: any): DispatchProps => ({\r\n getConnections: () => dispatch(OrganizationActions.getOrganizationConnectionsThunk()),\r\n getOrganizationGroups: () => dispatch(OrganizationGroupActions.getOrganizationGroupsThunk()),\r\n deleteConnection: (organizationId: string) =>\r\n dispatch(OrganizationActions.deleteConnectionThunk(organizationId)),\r\n showConfirm: (title: string, message: string, onConfirm: () => void) =>\r\n dispatch(showConfirmation(title, message, onConfirm)),\r\n showNotification: (text: string, type?: MessageType) => dispatch(showNotification(text, type)),\r\n getOrderMessages: () => dispatch(getOrderMessagesThunk()),\r\n getMyOrganization: () => dispatch(getMyOrganizationThunk())\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(ConnectionsPage);\r\n\r\nconst StyledPaper = styled(XPaper)`\r\n min-height: 300px;\r\n max-height: calc(100% - 40px);\r\n overflow-y: auto;\r\n`;\r\n","import styled from '@emotion/styled';\r\nimport * as React from 'react';\r\n\r\nimport { Link } from 'react-router-dom';\r\nimport { formatDateToString } from 'src/helpers/formatHelpers';\r\nimport { ConnectRequest, RequestModel } from 'src/models/Request';\r\nimport { XSecActionButton, XActionButton } from '../layout/XActionButton';\r\nimport { XActionStrip } from '../layout/XActionStrip';\r\nimport XButton, { XButtonStyle } from '../layout/XButton';\r\nimport { XRowCell } from '../layout/XRow';\r\nimport { TableRow } from '../layout/XTable';\r\nimport i18n from '../../i18n';\r\nimport { Translation } from 'react-i18next';\r\n\r\ntype OwnProps = {\r\n requestModel: RequestModel;\r\n ownOrganizationId: string;\r\n loadingRequest: boolean;\r\n onApprove: () => void;\r\n onDisapprove: () => void;\r\n};\r\n\r\ntype AllProps = OwnProps;\r\n\r\nconst statusSwitch = (request: ConnectRequest) => {\r\n let state = 100;\r\n\r\n if (request.approvedDate !== undefined) {\r\n state = 200;\r\n }\r\n if (request.disapprovedDate !== undefined) {\r\n state = 300;\r\n }\r\n\r\n switch (state) {\r\n case 100:\r\n return { text: i18n.t('traffic.Pending'), color: 'gray', color2: '#4AC0D7' };\r\n case 200:\r\n return { text: i18n.t('traffic.Accepted'), color: '#52bfd4', color2: '#808080' };\r\n case 300:\r\n return { text: i18n.t('traffic.turnedDown'), color: '#e7237b', color2: '#808080' };\r\n default:\r\n return { text: i18n.t('traffic.notFound'), color: '#000', color2: '#808080' };\r\n }\r\n};\r\n\r\nconst XRequestRow: React.FC = props => {\r\n const ownRequest = props.requestModel.requestOrganization.id === props.ownOrganizationId;\r\n const needsAnswer =\r\n !props.requestModel.connectRequest.approvedDate &&\r\n !props.requestModel.connectRequest.disapprovedDate &&\r\n !ownRequest;\r\n const status = statusSwitch(props.requestModel.connectRequest);\r\n\r\n return (\r\n \r\n \r\n \r\n {ownRequest\r\n ? props.requestModel.targetOrganization.name\r\n : props.requestModel.requestOrganization.name}\r\n \r\n \r\n \r\n {formatDateToString(new Date(props.requestModel.connectRequest.requestDate))}\r\n \r\n \r\n {needsAnswer ? (\r\n
\r\n \r\n {t => (\r\n \r\n props.onDisapprove()}>\r\n {t('traffic.Reject')}\r\n \r\n props.onApprove()}>\r\n {t('traffic.Approve')}\r\n \r\n \r\n )}\r\n \r\n
\r\n ) : (\r\n {status.text}\r\n )}\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default XRequestRow;\r\n\r\nconst TitleCell = styled(XRowCell)`\r\n line-height: 30px;\r\n`;\r\n\r\nconst RequestCell = styled(XRowCell)`\r\n line-height: 30px;\r\n`;\r\n\r\nconst StatusText = styled.div`\r\n padding: 0 15px;\r\n line-height: 24px;\r\n display: inline-block;\r\n margin: 5px;\r\n color: ${props => props.color};\r\n position: relative;\r\n font-size: 12px;\r\n border-radius: 20px;\r\n border: 1px solid ${props => props.color};\r\n letter-spacing: 0.6px;\r\n font-weight: bold;\r\n text-transform: uppercase;\r\n`;\r\n","import React, { FC } from 'react';\r\nimport { useHistory } from 'react-router-dom';\r\nimport { Button, ButtonGroup, createMuiTheme, ThemeProvider } from '@material-ui/core';\r\nimport { blue, grey } from '@material-ui/core/colors';\r\nimport styled from '@emotion/styled';\r\nimport { makeStyles, createStyles } from '@material-ui/core/styles';\r\nimport { Translation } from 'react-i18next';\r\n\r\nconst theme = createMuiTheme({\r\n palette: {\r\n primary: blue,\r\n secondary: {\r\n main: grey[400]\r\n }\r\n }\r\n});\r\n\r\nconst useStyles = makeStyles(() =>\r\n createStyles({\r\n root: {\r\n borderRadius: '20px'\r\n }\r\n })\r\n);\r\n\r\ntype OwnProps = { in: string; out: string };\r\n\r\ntype AllProps = OwnProps;\r\n\r\nconst XInboxOutboxButtons: FC = props => {\r\n const history = useHistory();\r\n const classes = useStyles();\r\n return (\r\n \r\n \r\n \r\n history.push(props.in)}>\r\n {t => t('traffic.Receive')}\r\n \r\n history.push(props.out)}>\r\n {t => t('traffic.Sent')}\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default XInboxOutboxButtons;\r\n\r\nconst XSwitchButton = styled(Button)`\r\n width: 180px;\r\n`;\r\n","import styled from '@emotion/styled';\r\nimport * as React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport XGridLayout from 'src/components/layout/XGridLayout';\r\nimport { XPaper, XPaperTitle } from 'src/components/layout/XPaper';\r\nimport { AuthenticationAccount } from 'src/store/authentication/types';\r\n\r\nimport { RequestModel } from 'src/models/Request';\r\nimport { getRequestsThunk, updateRequestThunk } from 'src/store/requests/actions';\r\nimport { ApplicationState } from '../../../store';\r\n\r\nimport { CSSTransition, TransitionGroup } from 'react-transition-group';\r\nimport XNoContent from 'src/components/domain/XNoContent';\r\nimport XRequestRow from 'src/components/domain/XRequestRow';\r\nimport XPageContent from 'src/components/layout/XPageContent';\r\nimport XTable from 'src/components/layout/XTable';\r\nimport { CatalogRequestStatus } from 'src/store/requests/api';\r\nimport { activeRequests, inactiveRequests } from 'src/store/requests/selectors';\r\n\r\nimport { InputLabel, MenuItem, Select } from '@material-ui/core';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport XPagination from 'src/components/layout/XPagination';\r\nimport XPaperHeader from 'src/components/layout/XPaperHeader';\r\nimport { delayExecution } from 'src/helpers/actionHelpers';\r\nimport { ApiResult } from 'src/helpers/apiClient';\r\nimport EmptyImage from '../../../style/images/empty-clipboard.svg';\r\nimport { OrganizationType } from 'src/models/Organization';\r\nimport { XFilterBar } from 'src/components/layout/XFilterBar';\r\nimport { XRowCell } from 'src/components/layout/XRow';\r\nimport XSearchBar from 'src/components/layout/XSearchBar';\r\nimport { XActionSelect } from 'src/components/layout/XActionButton';\r\nimport { Translation } from 'react-i18next';\r\nimport i18n from '../../../i18n';\r\nimport XInboxOutboxButtons from 'src/components/layout/XInboxOutboxButtons';\r\nimport ErrorBoundary from 'src/components/shared/ErrorBoundary';\r\n\r\ntype StateProps = {\r\n allRequests: RequestModel[];\r\n account: AuthenticationAccount;\r\n requestsLoading: boolean;\r\n};\r\n\r\ntype DispatchProps = {\r\n getRequests: () => void;\r\n editRequest: (request: RequestModel, state: CatalogRequestStatus) => Promise;\r\n};\r\n\r\ntype AllProps = StateProps & DispatchProps & RouteComponentProps<{ type: string }>;\r\n\r\ntype State = {\r\n currentOffset: number;\r\n currentOffsetDenied: number;\r\n requestsType: string;\r\n loadingRequests: boolean;\r\n search: string;\r\n filter: string;\r\n};\r\n\r\nclass ConnectRequestsPage extends React.Component {\r\n constructor(props: AllProps) {\r\n super(props);\r\n this.state = {\r\n currentOffset: 0,\r\n search: '',\r\n currentOffsetDenied: 0,\r\n requestsType: props.match.params.type,\r\n loadingRequests: false,\r\n filter: 'all'\r\n };\r\n }\r\n\r\n public componentDidMount() {\r\n this.props.getRequests();\r\n }\r\n\r\n public componentDidUpdate(prevProps) {\r\n if (this.props.match.params.type !== prevProps.match.params.type) {\r\n this.setState({ requestsType: this.props.match.params.type });\r\n }\r\n }\r\n\r\n public editRequest(requestModel: RequestModel, status: CatalogRequestStatus) {\r\n this.setState({ loadingRequests: true });\r\n this.props.editRequest(requestModel, status).then(result => {\r\n this.setState({ loadingRequests: false });\r\n });\r\n }\r\n\r\n public filterRequests(request: RequestModel) {\r\n if (\r\n this.state.filter === 'processing' &&\r\n (request.connectRequest.approvedDate || request.connectRequest.disapprovedDate)\r\n )\r\n return false;\r\n if (this.state.filter === 'approved' && !request.connectRequest.approvedDate) return false;\r\n if (this.state.filter === 'disapproved' && !request.connectRequest.disapprovedDate)\r\n return false;\r\n\r\n if (this.state.requestsType === 'in') {\r\n return (\r\n request.requestOrganization.id !== this.props.account.organizationId &&\r\n request.requestOrganization.name.toLowerCase().indexOf(this.state.search) !== -1\r\n );\r\n } else {\r\n return (\r\n request.requestOrganization.id === this.props.account.organizationId &&\r\n request.targetOrganization.name.toLowerCase().indexOf(this.state.search) !== -1\r\n );\r\n }\r\n }\r\n\r\n public render() {\r\n const pageSize = 10;\r\n const allRequests = this.props.allRequests.filter(r => this.filterRequests(r));\r\n const pagedRequests = allRequests.slice(\r\n this.state.currentOffset,\r\n this.state.currentOffset + pageSize\r\n );\r\n\r\n const type = this.props.account.organizationType;\r\n const orgName = type === OrganizationType.Retailer ? i18n.t('common.supplier') : 'Retailer';\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n\r\n {this.props.allRequests && (\r\n \r\n \r\n \r\n {t => (\r\n \r\n this.setState({ search: e.target.value.toLowerCase() })\r\n }>\r\n )}\r\n \r\n \r\n\r\n \r\n \r\n {t => (\r\n this.setState({ filter: e.target.value as string })}>\r\n {t('traffic.All')}\r\n {t('traffic.Processing')}\r\n {t('traffic.Accepted')}\r\n {t('traffic.turnedDown')}\r\n \r\n )}\r\n \r\n \r\n \r\n )}\r\n\r\n {(this.state.filter !== 'all' || !!this.state.search.length) &&\r\n allRequests.length === 0 && (\r\n \r\n )}\r\n\r\n {!(this.state.filter !== 'all' || !!this.state.search.length) &&\r\n allRequests.length === 0 && (\r\n \r\n )}\r\n\r\n {!!pagedRequests.length && (\r\n \r\n {t => (\r\n \r\n \r\n {pagedRequests.map(obj => (\r\n \r\n this.editRequest(obj, 'approve')}\r\n onDisapprove={() => this.editRequest(obj, 'disapprove')}\r\n />\r\n \r\n ))}\r\n \r\n \r\n )}\r\n \r\n )}\r\n {allRequests.length > pageSize && (\r\n this.setState({ currentOffset: i })}\r\n />\r\n )}\r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state: ApplicationState): StateProps => {\r\n return {\r\n account: state.authentication.account,\r\n allRequests: state.requests.requests.sort(\r\n (a, b) =>\r\n new Date(b.connectRequest.requestDate).getTime() -\r\n new Date(a.connectRequest.requestDate).getTime()\r\n ),\r\n requestsLoading: state.requests.loading\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch: any): DispatchProps => ({\r\n getRequests: () => dispatch(getRequestsThunk()),\r\n editRequest: (request: RequestModel, state: CatalogRequestStatus) =>\r\n dispatch(updateRequestThunk(request, state))\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(ConnectRequestsPage);\r\n\r\nconst SelectWrapper = styled.div`\r\n margin-left: 10px;\r\n .MuiInput-root {\r\n height: 25px;\r\n font-size: 14px;\r\n width: 140px;\r\n }\r\n`;\r\n\r\nconst StyledPaper = styled(XPaper)`\r\n min-height: 200px;\r\n margin-top: 15px;\r\n max-height: calc(50% - 10px);\r\n overflow-y: auto;\r\n transition: all 0.5s ease;\r\n &:first-of-type {\r\n margin-top: 0;\r\n }\r\n`;\r\n","import styled from '@emotion/styled';\r\nimport { CircularProgress } from '@material-ui/core';\r\nimport AddCircleIcon from '@material-ui/icons/AddCircle';\r\nimport * as React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { RouteComponentProps } from 'react-router-dom';\r\nimport { Dispatch } from 'redux';\r\nimport XOrganizationRow from 'src/components/domain/XOrganizationRow';\r\nimport XOrganizationSelectPopup from 'src/components/domain/XOrganizationSelectPopup';\r\nimport XButton, { XButtonStyle } from 'src/components/layout/XButton';\r\nimport XCheckbox from 'src/components/layout/XCheckbox';\r\nimport { XContainer } from 'src/components/layout/XContainer';\r\nimport XDatePicker from 'src/components/layout/XDatePicker';\r\nimport XForm from 'src/components/layout/XForm';\r\nimport XFormButtons from 'src/components/layout/XFormButtons';\r\nimport XSelectItem from 'src/components/layout/XSelectItem';\r\nimport { ApiResult } from 'src/helpers/apiClient';\r\nimport { mapError } from 'src/helpers/errorMap';\r\nimport { Organization, OrganizationType } from 'src/models/Organization';\r\nimport { AuthenticationAccount } from 'src/store/authentication/types';\r\nimport { showNotification } from 'src/store/layout/actions';\r\nimport { MessageType } from 'src/store/layout/types';\r\nimport { ApplicationState } from '../../../store';\r\nimport * as catalogActions from '../../../store/catalogs/actions';\r\nimport * as catalogSelects from '../../../store/catalogs/selectors';\r\nimport { CatalogAccessibility, CatalogFormData } from '../../../store/catalogs/types';\r\nimport * as organizationActions from '../../../store/organizations/actions';\r\nimport { ResultRoute } from './WizardRouter';\r\n\r\ntype StateProps = {\r\n data: CatalogFormData;\r\n account: AuthenticationAccount;\r\n connections: Organization[];\r\n};\r\n\r\ntype DispatchProps = {\r\n storeInformation: (data: CatalogFormData) => void;\r\n addCatalog: (data: CatalogFormData) => Promise;\r\n getConnections: (id?: string) => void;\r\n showNotification: (text: string, type?: MessageType) => void;\r\n};\r\n\r\ntype AllProps = StateProps & DispatchProps & RouteComponentProps;\r\n\r\ntype State = {\r\n inputData: CatalogFormData;\r\n showDateInput: boolean;\r\n availableAllConnections: boolean;\r\n showAddAvailablePopup: boolean;\r\n inputErrors: {\r\n startDate: boolean;\r\n endDate: boolean;\r\n };\r\n validForm: boolean;\r\n loading: boolean;\r\n publishResult?: boolean;\r\n};\r\n\r\nclass WizardAccessPage extends React.Component {\r\n constructor(props: AllProps) {\r\n super(props);\r\n\r\n this.state = {\r\n inputData: this.props.data,\r\n showAddAvailablePopup: false,\r\n availableAllConnections: false,\r\n loading: false,\r\n publishResult: undefined,\r\n showDateInput: false,\r\n inputErrors: {\r\n startDate: false,\r\n endDate: false\r\n },\r\n validForm: false\r\n };\r\n }\r\n\r\n public componentDidMount() {\r\n if (this.props.account.organizationType === OrganizationType.Retailer) {\r\n this.props.history.push('/app/start');\r\n return;\r\n }\r\n\r\n if (this.props.data.uploaded) {\r\n this.props.history.push('/app/my/catalogs/new');\r\n return;\r\n }\r\n\r\n if (this.props.account.isAdmin) this.props.getConnections(this.props.data.organizationId);\r\n else this.props.getConnections();\r\n }\r\n\r\n public previousPage = () => {\r\n this.props.history.goBack();\r\n };\r\n\r\n public handleDateFormChange = (e: any, target) => {\r\n const inputData = Object.assign({}, this.state.inputData);\r\n inputData[target] = e.toDate();\r\n\r\n this.setState({ inputData });\r\n };\r\n\r\n public handleFormChange = (key: string, value: any) => {\r\n const inputData = Object.assign({}, this.state.inputData);\r\n inputData[key] = value;\r\n\r\n this.setState({ inputData });\r\n };\r\n\r\n public storeForm = () => {\r\n const inputErrors = Object.assign({}, this.state.inputErrors);\r\n let valid = true;\r\n\r\n Object.keys(this.state.inputData).map(key => {\r\n if (key in this.state.inputErrors) {\r\n if (this.state.inputData[key] === '' || this.state.inputData[key] === 0) {\r\n inputErrors[key] = true;\r\n valid = false;\r\n } else {\r\n inputErrors[key] = false;\r\n }\r\n }\r\n });\r\n\r\n this.setState({ inputErrors });\r\n\r\n if (valid) {\r\n if (!this.state.showDateInput) {\r\n this.state.inputData.startDate = undefined;\r\n this.state.inputData.endDate = undefined;\r\n } else {\r\n if (!this.state.inputData.startDate) this.state.inputData.startDate = new Date();\r\n if (!this.state.inputData.endDate) this.state.inputData.endDate = new Date();\r\n }\r\n\r\n this.setState({ validForm: true, loading: true });\r\n this.props.addCatalog(this.state.inputData).then(result => {\r\n if (result.IsSuccess) this.props.history.push(ResultRoute.path);\r\n else {\r\n this.setState({ loading: false, publishResult: false });\r\n this.props.showNotification(\r\n 'Er ging iets mis bij het publiceren van de catalogus: ' + mapError(result.Errors),\r\n 'error'\r\n );\r\n }\r\n });\r\n }\r\n };\r\n\r\n public toggleRetailers(organizations: Organization[]) {\r\n this.handleFormChange('retailers', [...organizations.map(o => o.id)]);\r\n this.setState({ showAddAvailablePopup: false });\r\n }\r\n\r\n public render() {\r\n const datePickers = (\r\n
\r\n this.handleDateFormChange(val, 'startDate')}\r\n />\r\n\r\n this.handleDateFormChange(val, 'endDate')}\r\n />\r\n
\r\n );\r\n\r\n return (\r\n \r\n this.setState({ showDateInput: e.target.checked })}\r\n />\r\n\r\n {this.state.showDateInput ? datePickers : ''}\r\n\r\n
\r\n this.handleFormChange(e, v)}\r\n />\r\n\r\n {this.state.inputData.accessibility === CatalogAccessibility.SelectedConnections && (\r\n
\r\n this.setState({ showAddAvailablePopup: true })}\r\n colorscheme={XButtonStyle.Secondary}>\r\n {this.state.inputData.retailers.length === 0\r\n ? 'Selecteer retailers'\r\n : this.state.inputData.retailers.length + ' geselecteerd'}\r\n \r\n\r\n this.setState({ showAddAvailablePopup: false })}\r\n saveText=\"selecteren\"\r\n open={this.state.showAddAvailablePopup}\r\n clearOnClose={false}\r\n organizations={this.props.connections}\r\n onSave={organizations => this.toggleRetailers(organizations)}\r\n />\r\n
\r\n )}\r\n
\r\n\r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state: ApplicationState): StateProps => {\r\n return {\r\n data: catalogSelects.newCatalogState(state.catalogs),\r\n account: state.authentication.account,\r\n connections: state.organizations.connections\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch: any): DispatchProps => ({\r\n storeInformation: (data: CatalogFormData) => dispatch(catalogActions.storeCatalogAction(data)),\r\n getConnections: (id?: string) =>\r\n dispatch(organizationActions.getOrganizationConnectionsThunk(id)),\r\n addCatalog: (data: CatalogFormData) => dispatch(catalogActions.addCatalogThunk(data)),\r\n showNotification: (text: string, type?: MessageType) => dispatch(showNotification(text, type))\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(WizardAccessPage);\r\n\r\nconst RetailerName = styled.div`\r\n line-height: 28px;\r\n`;\r\n\r\nconst RetailerSelection = styled.div`\r\n margin-top: 10px;\r\n`;\r\n\r\nconst PublishResult = styled('div')`\r\n margin-top: 10px;\r\n padding: 10px;\r\n color: #9c1006;\r\n border: 1px solid #ed677a;\r\n`;\r\n","import { css } from '@emotion/core';\r\nimport styled from '@emotion/styled';\r\nimport { CircularProgress } from '@material-ui/core';\r\nimport Button from '@material-ui/core/Button';\r\nimport * as React from 'react';\r\n\r\nexport enum XButtonStyle {\r\n Primary,\r\n Secondary\r\n}\r\n\r\ntype OwnProps = {\r\n onSelect?: any;\r\n name?: string;\r\n active?: boolean;\r\n colorscheme?: XButtonStyle;\r\n staticcolor?: string;\r\n textcolor?: string;\r\n width?: string;\r\n height?: string;\r\n padding?: boolean;\r\n loading?: boolean;\r\n};\r\n\r\ntype AllProps = OwnProps;\r\n\r\nconst gradientSwitch = (style: XButtonStyle | undefined, props: any) => {\r\n switch (style) {\r\n case XButtonStyle.Primary:\r\n return (\r\n 'linear-gradient(to right,' + props.theme.pStartColor + ',' + props.theme.pEndColor + ')'\r\n );\r\n case XButtonStyle.Secondary:\r\n return (\r\n 'linear-gradient(to right,' + props.theme.sStartColor + ',' + props.theme.sEndColor + ')'\r\n );\r\n default:\r\n return '';\r\n }\r\n};\r\n\r\nconst XFileSelectButton: React.SFC = props => {\r\n let hiddenFileSelectRef;\r\n const hiddenFileSelect = (\r\n (hiddenFileSelectRef = input)}\r\n name={props.name}\r\n type=\"file\"\r\n style={{ display: 'none' }}\r\n onChange={props.onSelect}\r\n />\r\n );\r\n\r\n return props.active === false ? (\r\n \r\n {props.children}\r\n {props.loading === true ? (\r\n \r\n ) : (\r\n undefined\r\n )}\r\n \r\n ) : (\r\n
\r\n hiddenFileSelectRef.click()} {...props}>\r\n {props.children}\r\n {props.loading === true ? (\r\n \r\n ) : (\r\n undefined\r\n )}\r\n \r\n {hiddenFileSelect}\r\n
\r\n );\r\n};\r\n\r\nexport default XFileSelectButton;\r\n\r\nconst ActiveButton = styled(Button)(\r\n {\r\n borderRadius: '0px',\r\n textTransform: 'uppercase',\r\n fontWeight: 'bold',\r\n letterSpacing: '2px',\r\n fontSize: '11px',\r\n position: 'relative',\r\n transition: 'all 0.2s ease-in-out'\r\n },\r\n (props: AllProps) => ({\r\n padding:\r\n props.padding === false\r\n ? undefined\r\n : props.colorscheme !== undefined\r\n ? '13px 46px 13px 30px'\r\n : '13px 30px',\r\n color: props.textcolor || '#fff',\r\n width: props.width || '',\r\n boxShadow:\r\n props.colorscheme === XButtonStyle.Primary\r\n ? '0 15px 30px 0 rgba(0,0,0,.11), 0 5px 15px 0 rgba(0,0,0,.08)'\r\n : '',\r\n background: props.staticcolor ? props.staticcolor : gradientSwitch(props.colorscheme, props),\r\n '&::after':\r\n props.colorscheme !== undefined\r\n ? {\r\n content: '\"▶\"',\r\n position: 'absolute',\r\n opacity: 1,\r\n right: '22px',\r\n transition: 'all 0.2s ease-in-out'\r\n }\r\n : {},\r\n\r\n '&:hover::after': {\r\n opacity: 0,\r\n right: '50px'\r\n },\r\n '&:hover': {\r\n padding: props.colorscheme !== undefined ? '13px 38px 13px 38px' : undefined\r\n }\r\n })\r\n);\r\n\r\nconst NonActiveButton = styled(Button)(\r\n {\r\n backgroundColor: 'lightgrey',\r\n borderRadius: '0px',\r\n textTransform: 'none',\r\n padding: '13px 46px 13px 30px',\r\n fontFamily: 'Montserrat-Bold'\r\n },\r\n (props: AllProps) => ({\r\n color: props.textcolor\r\n })\r\n);\r\n","import * as React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { RouteComponentProps } from 'react-router-dom';\r\n\r\nimport styled from '@emotion/styled';\r\nimport { FormControl, InputLabel, MenuItem, Select } from '@material-ui/core';\r\nimport { XButtonStyle } from 'src/components/layout/XButton';\r\nimport { XContainer } from 'src/components/layout/XContainer';\r\nimport XField from 'src/components/layout/XField';\r\nimport XFileSelectButton from 'src/components/layout/XFileSelectButton';\r\nimport XFormButtons from 'src/components/layout/XFormButtons';\r\nimport XImageEditor from 'src/components/layout/XImageEditor';\r\nimport { ApiResult } from 'src/helpers/apiClient';\r\nimport { Organization, OrganizationModel, OrganizationType } from 'src/models/Organization';\r\nimport { AuthenticationAccount } from 'src/store/authentication/types';\r\nimport * as catalogActions from 'src/store/catalogs/actions';\r\nimport * as organizationActions from 'src/store/organizations/actions';\r\nimport { ApplicationState } from '../../../store';\r\nimport * as catalogSelects from '../../../store/catalogs/selectors';\r\nimport { CatalogFormData, EmptyCatalogFormData } from '../../../store/catalogs/types';\r\nimport { FileRoute } from './WizardRouter';\r\nimport { Translation } from 'react-i18next';\r\n\r\ntype StateProps = {\r\n data: CatalogFormData;\r\n myOrganization?: OrganizationModel;\r\n targetOrganization?: OrganizationModel;\r\n account: AuthenticationAccount;\r\n};\r\n\r\ntype DispatchProps = {\r\n storeInformation: (data: CatalogFormData) => void;\r\n getMyOrganization: () => void;\r\n getOrganization: (id: string) => Promise;\r\n};\r\n\r\ntype AllProps = StateProps & DispatchProps & RouteComponentProps<{ organizationId?: string }>;\r\n\r\ntype State = {\r\n inputData: CatalogFormData;\r\n inputErrors: {\r\n title: boolean;\r\n };\r\n validForm: boolean;\r\n};\r\n\r\nclass WizardBasicPage extends React.Component {\r\n addingAsAdmin = false;\r\n editor: any;\r\n setEditorRef: (editor: any) => any;\r\n\r\n constructor(props: AllProps) {\r\n super(props);\r\n this.setEditorRef = editor => (this.editor = editor);\r\n\r\n this.state = {\r\n inputData: this.props.data,\r\n inputErrors: {\r\n title: false\r\n },\r\n validForm: false\r\n };\r\n }\r\n\r\n public componentDidMount() {\r\n let orgId = '';\r\n if (this.props.account.isAdmin) {\r\n const organizationId = this.props.match.params.organizationId;\r\n if (!organizationId) return;\r\n\r\n this.addingAsAdmin = true;\r\n orgId = organizationId;\r\n this.props.getOrganization(organizationId);\r\n } else {\r\n if (this.props.account.organizationType === OrganizationType.Retailer) {\r\n this.props.history.push('/app/start');\r\n return;\r\n }\r\n\r\n orgId = this.props.account.organizationId;\r\n this.props.getMyOrganization();\r\n }\r\n\r\n let catalogData = this.state.inputData;\r\n if (this.props.data?.uploaded) catalogData = EmptyCatalogFormData;\r\n\r\n const inputData = Object.assign({}, catalogData);\r\n inputData.organizationId = orgId;\r\n this.setState({ inputData });\r\n }\r\n\r\n public previousPage = () => {\r\n this.props.history.goBack();\r\n };\r\n\r\n public handleFormChange = (e: any) => {\r\n const inputData = Object.assign({}, this.state.inputData);\r\n inputData[e.target.name] = e.target.value;\r\n\r\n this.setState({ inputData });\r\n };\r\n\r\n public handleFileChange = file => {\r\n const inputData = Object.assign({}, this.state.inputData);\r\n inputData.image = file;\r\n\r\n this.setState({ inputData });\r\n };\r\n\r\n public async storeForm() {\r\n const inputErrors = Object.assign({}, this.state.inputErrors);\r\n let valid = true;\r\n\r\n Object.keys(this.state.inputData).map(key => {\r\n if (key in this.state.inputErrors) {\r\n if (this.state.inputData[key] === '' || this.state.inputData[key] === 0) {\r\n inputErrors[key] = true;\r\n valid = false;\r\n } else {\r\n inputErrors[key] = false;\r\n }\r\n }\r\n });\r\n\r\n this.setState({ inputErrors });\r\n\r\n if (!valid) return;\r\n\r\n const data = this.state.inputData;\r\n const imgResult = await this.editor.getResult();\r\n if (imgResult) {\r\n data.image = imgResult;\r\n this.handleFileChange(imgResult);\r\n }\r\n\r\n this.setState({ validForm: true });\r\n this.props.storeInformation(this.state.inputData);\r\n this.props.history.push(FileRoute.path);\r\n }\r\n\r\n public render() {\r\n return (\r\n \r\n {this.addingAsAdmin && (\r\n \r\n \r\n {t => (\r\n {t('myArxis.Organization')}\r\n )}\r\n \r\n \r\n \r\n {this.props.targetOrganization?.organization.name}\r\n \r\n \r\n \r\n )}\r\n \r\n {/* */}\r\n \r\n Catalogus afbeelding\r\n {\r\n this.handleFileChange(blob);\r\n }}\r\n />\r\n\r\n await this.storeForm()}\r\n onCancel={this.previousPage}\r\n saveText=\"Volgende\"\r\n />\r\n \r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state: ApplicationState): StateProps => {\r\n return {\r\n data: catalogSelects.newCatalogState(state.catalogs),\r\n myOrganization: state.organizations.myOrganization,\r\n targetOrganization: state.organizations.detail,\r\n account: state.authentication.account\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch: any): DispatchProps => ({\r\n storeInformation: (data: CatalogFormData) => dispatch(catalogActions.storeCatalogAction(data)),\r\n getMyOrganization: () => dispatch(organizationActions.getMyOrganizationThunk()),\r\n getOrganization: (id: string) => dispatch(organizationActions.getOrganizationThunk(id))\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(WizardBasicPage);\r\n\r\nconst LogoLabel = styled.div`\r\n color: #aaa;\r\n`;\r\n","import styled from '@emotion/styled';\r\nimport { LinearProgress, Select } from '@material-ui/core';\r\nimport * as React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { RouteComponentProps } from 'react-router-dom';\r\n\r\nimport { XContainer } from 'src/components/layout/XContainer';\r\nimport XFileSelectButton, { XButtonStyle } from 'src/components/layout/XFileSelectButton';\r\nimport XForm from 'src/components/layout/XForm';\r\nimport XFormButtons from 'src/components/layout/XFormButtons';\r\nimport { ApiResult } from 'src/helpers/apiClient';\r\nimport { getFileFormatOptions } from 'src/helpers/formatHelpers';\r\nimport { FileFormat } from 'src/models/FileFormat';\r\nimport { OrganizationType } from 'src/models/Organization';\r\nimport { AuthenticationAccount } from 'src/store/authentication/types';\r\nimport { showNotification } from 'src/store/layout/actions';\r\nimport { MessageType } from 'src/store/layout/types';\r\nimport { ApplicationState } from '../../../store';\r\nimport * as catalogActions from '../../../store/catalogs/actions';\r\nimport * as catalogSelects from '../../../store/catalogs/selectors';\r\nimport { CatalogFormData } from '../../../store/catalogs/types';\r\nimport { AccessRoute } from './WizardRouter';\r\n\r\ntype StateProps = {\r\n data: CatalogFormData;\r\n account: AuthenticationAccount;\r\n fileFormats: FileFormat[];\r\n};\r\n\r\ntype DispatchProps = {\r\n storeInformation: (data: CatalogFormData) => void;\r\n validateCatalogFile: (\r\n fileFormat: string,\r\n fileFormatVersion: string,\r\n file: File\r\n ) => Promise;\r\n getFileFormats: () => void;\r\n showNotification: (text: string, type: MessageType) => void;\r\n};\r\n\r\ntype AllProps = StateProps & DispatchProps & RouteComponentProps;\r\n\r\ntype State = {\r\n newData: CatalogFormData;\r\n validating: boolean;\r\n inputErrors: { fileFormatSelection: boolean };\r\n fileFormatSelection: string | null;\r\n uploading: boolean;\r\n};\r\n\r\nclass WizardFilePage extends React.Component {\r\n constructor(props: AllProps) {\r\n super(props);\r\n\r\n this.state = {\r\n validating: false,\r\n fileFormatSelection: props.data.fileFormat\r\n ? props.data.fileFormat + '|' + props.data.fileFormatVersion\r\n : null,\r\n inputErrors: { fileFormatSelection: false },\r\n newData: props.data,\r\n uploading: window.location.href.indexOf('/new/') !== -1\r\n };\r\n }\r\n\r\n public componentDidMount() {\r\n if (this.props.account.organizationType === OrganizationType.Retailer) {\r\n this.props.history.push('/app/start');\r\n return;\r\n }\r\n\r\n if (this.state.uploading && this.props.data.uploaded) {\r\n this.props.history.push('/app/my/catalogs/new');\r\n return;\r\n }\r\n\r\n this.props.getFileFormats();\r\n }\r\n\r\n public handleFormFileSelectChange = (e: any) => {\r\n const newData = Object.assign({}, this.state.newData);\r\n if (e.target.files.length === 0) return;\r\n\r\n newData[e.target.name] = e.target.files[0];\r\n this.setState({ newData });\r\n };\r\n\r\n public handleFormChange(name: string, value: any) {\r\n const newData = Object.assign({}, this.state.newData);\r\n if (name === 'fileFormatSelection') {\r\n const split = value?.split('|') ?? [undefined, undefined];\r\n newData.fileFormat = split[0];\r\n newData.fileFormatVersion = split[1];\r\n this.setState({ fileFormatSelection: value });\r\n } else newData[name] = value;\r\n this.setState({ newData });\r\n }\r\n\r\n public previousPage = () => {\r\n this.props.history.goBack();\r\n };\r\n\r\n public next = () => {\r\n if (!this.state.newData.fileFormat || !this.state.newData.fileFormatVersion) {\r\n const inputErrors = Object.assign({}, this.state.inputErrors);\r\n inputErrors.fileFormatSelection = !this.state.fileFormatSelection;\r\n this.setState({ inputErrors });\r\n return;\r\n }\r\n\r\n if (!this.state.newData.file?.size) return;\r\n\r\n this.props.storeInformation(this.state.newData);\r\n this.props.history.push(AccessRoute.path);\r\n };\r\n\r\n public render() {\r\n return (\r\n \r\n {!this.props.fileFormats ? (\r\n \r\n ) : (\r\n
\r\n this.handleFormChange(e, v)}\r\n />\r\n\r\n
\r\n 0 &&\r\n this.state.newData.fileFormatVersion?.length > 0\r\n }\r\n colorscheme={XButtonStyle.Secondary}>\r\n Selecteer bestand\r\n \r\n
\r\n\r\n 0}\r\n />\r\n
\r\n )}\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state: ApplicationState): StateProps => {\r\n return {\r\n account: state.authentication.account,\r\n data: catalogSelects.newCatalogState(state.catalogs),\r\n fileFormats: state.catalogs.fileFormats.sort((a, b) => a.name.localeCompare(b.name))\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch: any): DispatchProps => ({\r\n getFileFormats: () => dispatch(catalogActions.getFileFormatsThunk()),\r\n storeInformation: (data: CatalogFormData) => dispatch(catalogActions.storeCatalogAction(data)),\r\n validateCatalogFile: (fileFormat: string, fileFormatVersion: string, file: File) =>\r\n dispatch(catalogActions.validateCatalogFileThunk(fileFormat, fileFormatVersion, file)),\r\n showNotification: (text: string, type: MessageType) => dispatch(showNotification(text, type))\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(WizardFilePage);\r\n","import styled from '@emotion/styled';\r\nimport CheckCircleIcon from '@material-ui/icons/CheckCircleOutline';\r\nimport * as React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { Link, RouteComponentProps } from 'react-router-dom';\r\nimport { Dispatch } from 'redux';\r\nimport XButton, { XButtonStyle } from 'src/components/layout/XButton';\r\nimport XCheckbox from 'src/components/layout/XCheckbox';\r\nimport { XContainer } from 'src/components/layout/XContainer';\r\nimport XDatePicker from 'src/components/layout/XDatePicker';\r\nimport XFormButtons from 'src/components/layout/XFormButtons';\r\nimport { XRow } from 'src/components/layout/XRow';\r\nimport { CatalogValidationSummary } from 'src/models/Catalog';\r\nimport { AuthenticationAccount } from 'src/store/authentication/types';\r\nimport { ApplicationState } from '../../../store';\r\nimport * as catalogActions from '../../../store/catalogs/actions';\r\nimport * as catalogSelects from '../../../store/catalogs/selectors';\r\nimport { CatalogFormData } from '../../../store/catalogs/types';\r\n\r\ntype StateProps = {\r\n data: CatalogFormData;\r\n validationSummary?: CatalogValidationSummary;\r\n account: AuthenticationAccount;\r\n};\r\n\r\ntype DispatchProps = {\r\n storeInformation: (data: CatalogFormData) => void;\r\n};\r\n\r\ntype AllProps = StateProps & DispatchProps & RouteComponentProps;\r\n\r\ntype State = {\r\n inputData: CatalogFormData;\r\n};\r\n\r\nclass WizardResultPage extends React.Component {\r\n constructor(props: AllProps) {\r\n super(props);\r\n\r\n this.state = {\r\n inputData: this.props.data\r\n };\r\n }\r\n\r\n public downloadValidationSummary() {\r\n const data =\r\n 'data:text/json;charset=utf-8,' +\r\n encodeURIComponent(JSON.stringify(this.props.validationSummary, null, 2));\r\n const link = document.createElement('a');\r\n link.download = 'validatie-rapport.json';\r\n link.href = data;\r\n link.click();\r\n }\r\n\r\n public render() {\r\n return (\r\n \r\n
\r\n
\r\n \r\n
\r\n
Catalogus toegevoegd!
\r\n
\r\n\r\n \r\n \r\n Sluiten\r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state: ApplicationState): StateProps => {\r\n return {\r\n data: catalogSelects.newCatalogState(state.catalogs),\r\n validationSummary: state.catalogs.validation.validationSummary,\r\n account: state.authentication.account\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch: Dispatch): DispatchProps => ({\r\n storeInformation: (data: CatalogFormData) => dispatch(catalogActions.storeCatalogAction(data))\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(WizardResultPage);\r\n","import styled from '@emotion/styled';\r\nimport React from 'react';\r\nimport { Organization } from 'src/models/Organization';\r\nimport { XContainer } from '../layout/XContainer';\r\nimport XField from '../layout/XField';\r\nimport XPagination from '../layout/XPagination';\r\nimport XPopup from '../layout/XPopup';\r\nimport { XRowCell } from '../layout/XRow';\r\nimport XSelectItem from '../layout/XSelectItem';\r\nimport XTable, { TableRow } from '../layout/XTable';\r\nimport XOrganizationRow from './XOrganizationRow';\r\n\r\ntype TableColumnDefinition = {\r\n name: string;\r\n width?: string;\r\n interpolation?: any;\r\n};\r\n\r\ntype OwnProps = {\r\n data: any[];\r\n paged: boolean;\r\n pageSize: number;\r\n maxResults: number;\r\n columns: TableColumnDefinition[];\r\n title: string;\r\n open: boolean;\r\n onCancel: () => void;\r\n};\r\n\r\ntype AllProps = OwnProps;\r\ntype State = {\r\n search: string;\r\n currentOffset: number;\r\n};\r\n\r\nclass XTableViewerPopup extends React.Component {\r\n constructor(props: AllProps) {\r\n super(props);\r\n this.state = {\r\n search: '',\r\n currentOffset: 0\r\n };\r\n }\r\n\r\n public cancel() {\r\n this.props.onCancel();\r\n }\r\n\r\n public render() {\r\n const rows = this.props.paged\r\n ? this.props.data.slice(\r\n this.state.currentOffset,\r\n this.state.currentOffset + this.props.pageSize\r\n )\r\n : this.props.data.slice(0, this.props.maxResults);\r\n\r\n const bottomContent = this.props.paged ? (\r\n this.setState({ currentOffset: i })}\r\n itemsPerPage={this.props.pageSize}\r\n itemCount={this.props.data.length}\r\n />\r\n ) : (\r\n undefined\r\n );\r\n\r\n return (\r\n this.cancel()}\r\n cancelOnPagClick={true}\r\n bottomContent={this.props.data.length <= this.props.pageSize ? undefined : bottomContent}>\r\n {!this.props.paged && this.props.data.length > this.props.maxResults && (\r\n
\r\n Eerste {this.props.maxResults} items:\r\n
\r\n )}\r\n \r\n {rows.map((d, index) => (\r\n \r\n {this.props.columns.map((c, colIndex) => (\r\n \r\n {c.interpolation ? c.interpolation(d[c.name]) : d[c.name]}\r\n \r\n ))}\r\n \r\n ))}\r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default XTableViewerPopup;\r\n\r\nconst StyledField = styled.div`\r\n position: absolute;\r\n right: -10px;\r\n top: -56px;\r\n display: inline-block;\r\n vertical-align: top;\r\n width: 200px;\r\n z-index: 11;\r\n & input {\r\n padding: 3px 0 !important;\r\n }\r\n`;\r\n","import * as React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { RouteComponentProps } from 'react-router-dom';\r\n\r\nimport CheckCircleIcon from '@material-ui/icons/CheckCircleOutline';\r\nimport HighlightOffIcon from '@material-ui/icons/HighlightOff';\r\nimport XTableViewerPopup from 'src/components/domain/XTableViewerPopup';\r\nimport XButton from 'src/components/layout/XButton';\r\nimport { XContainer } from 'src/components/layout/XContainer';\r\nimport { XButtonStyle } from 'src/components/layout/XFileSelectButton';\r\nimport XFormButtons from 'src/components/layout/XFormButtons';\r\nimport XPagination from 'src/components/layout/XPagination';\r\nimport { XRowCell } from 'src/components/layout/XRow';\r\nimport XTable, { TableRow } from 'src/components/layout/XTable';\r\nimport { ApiError } from 'src/helpers/apiClient';\r\nimport { mapError } from 'src/helpers/errorMap';\r\nimport { CatalogValidationSummary } from 'src/models/Catalog';\r\nimport { OrganizationType } from 'src/models/Organization';\r\nimport { AuthenticationAccount } from 'src/store/authentication/types';\r\nimport { showNotification } from 'src/store/layout/actions';\r\nimport { MessageType } from 'src/store/layout/types';\r\nimport { ApplicationState } from '../../../store';\r\nimport * as catalogActions from '../../../store/catalogs/actions';\r\nimport * as catalogSelects from '../../../store/catalogs/selectors';\r\nimport { CatalogFormData } from '../../../store/catalogs/types';\r\nimport { AccessRoute } from './WizardRouter';\r\n\r\ntype StateProps = {\r\n data: CatalogFormData;\r\n validationSummary?: CatalogValidationSummary;\r\n validationError?: ApiError;\r\n account: AuthenticationAccount;\r\n};\r\n\r\ntype DispatchProps = {\r\n storeInformation: (data: CatalogFormData) => void;\r\n showNotification: (text: string, type: MessageType) => void;\r\n};\r\n\r\ntype AllProps = StateProps & DispatchProps & RouteComponentProps;\r\n\r\ntype State = {\r\n newData: CatalogFormData;\r\n violationsOffset: number;\r\n showPopup: boolean;\r\n uploading: boolean;\r\n};\r\n\r\nclass WizardValidationPage extends React.Component {\r\n constructor(props: AllProps) {\r\n super(props);\r\n\r\n this.state = {\r\n newData: props.data,\r\n violationsOffset: 0,\r\n showPopup: false,\r\n uploading: window.location.href.indexOf('/new/') !== -1\r\n };\r\n }\r\n\r\n public componentDidMount() {\r\n if (this.props.account.organizationType === OrganizationType.Retailer) {\r\n this.props.history.push('/app/start');\r\n return;\r\n }\r\n\r\n if (this.state.uploading && this.props.data.uploaded) {\r\n this.props.history.push('/app/my/catalogs/new');\r\n return;\r\n }\r\n\r\n if (!this.props.validationSummary && !this.props.validationError) {\r\n this.props.history.push('/app/my/catalogs/new/file');\r\n }\r\n }\r\n\r\n public previousPage = () => {\r\n this.props.history.goBack();\r\n };\r\n\r\n public next = () => {\r\n if (this.state.uploading) this.props.history.push(AccessRoute.path);\r\n else this.props.history.push('/app/my/catalogs');\r\n };\r\n\r\n public downloadValidationSummary() {\r\n const data =\r\n 'data:text/json;charset=utf-8,' +\r\n encodeURIComponent(JSON.stringify(this.props.validationSummary, null, 2));\r\n const link = document.createElement('a');\r\n link.download = 'validatie-rapport.json';\r\n link.href = data;\r\n link.click();\r\n }\r\n\r\n public render() {\r\n return (\r\n \r\n {this.props.validationSummary && (\r\n (str === 0 ? '-' : '#' + str)\r\n },\r\n { name: 'message' }\r\n ]}\r\n open={this.state.showPopup}\r\n onCancel={() => this.setState({ showPopup: false })}\r\n data={this.props.validationSummary.violations}\r\n />\r\n )}\r\n\r\n
\r\n {this.props.validationError ? (\r\n
\r\n
\r\n \r\n
\r\n
\r\n {this.props.validationError.errorCode === 'LTX4001'\r\n ? 'Validatie is nog niet beschikbaar voor dit bestandsformaat'\r\n : mapError([this.props.validationError])}\r\n
\r\n
\r\n ) : this.props.validationSummary?.violations.length === 0 ? (\r\n
\r\n
\r\n \r\n
\r\n
Validatie compleet, geen bevindingen
\r\n
\r\n ) : (\r\n
\r\n
\r\n \r\n
\r\n
\r\n Validatie compleet, {this.props.validationSummary?.violations.length} bevindingen\r\n
\r\n this.setState({ showPopup: true })}>\r\n Rapport inzien\r\n
\r\n this.downloadValidationSummary()}>\r\n Rapport downloaden\r\n
\r\n \r\n )}\r\n\r\n v.level === 'Error') ===\r\n undefined\r\n : true\r\n }\r\n />\r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state: ApplicationState): StateProps => {\r\n return {\r\n account: state.authentication.account,\r\n validationSummary: state.catalogs.validation.validationSummary,\r\n validationError: state.catalogs.validation.error,\r\n data: catalogSelects.newCatalogState(state.catalogs)\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch: any): DispatchProps => ({\r\n storeInformation: (data: CatalogFormData) => dispatch(catalogActions.storeCatalogAction(data)),\r\n showNotification: (text: string, type: MessageType) => dispatch(showNotification(text, type))\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(WizardValidationPage);\r\n","import { Step, StepButton, StepLabel, Stepper } from '@material-ui/core';\r\nimport * as React from 'react';\r\nimport { RouteComponentProps } from 'react-router-dom';\r\nimport { XContainer } from 'src/components/layout/XContainer';\r\nimport {\r\n XPaperCenter,\r\n XPaperContainer,\r\n XPaperSubtitle,\r\n XPaperTitle\r\n} from 'src/components/layout/XPaper';\r\nimport XPageRouter from 'src/components/shared/XPageRouter';\r\nimport { PageRoute } from 'src/models/Route';\r\n\r\nimport { CatalogFormData } from '../../../store/catalogs/types';\r\nimport AccessPage from './WizardAccessPage';\r\nimport BasicPage from './WizardBasicPage';\r\nimport FilePage from './WizardFilePage';\r\nimport ResultPage from './WizardResultPage';\r\nimport ValidationPage from './WizardValidationPage';\r\n\r\nconst wizardPath = '/app/my/catalogs/new';\r\n\r\nexport const BasicRoute: PageRoute = {\r\n path: `${wizardPath}`,\r\n exact: true,\r\n component: BasicPage,\r\n title: 'Informatie'\r\n};\r\n\r\nexport const FileRoute: PageRoute = {\r\n path: `${wizardPath}/file`,\r\n exact: true,\r\n component: FilePage,\r\n title: 'Bestand'\r\n};\r\n\r\nexport const ValidationRoute: PageRoute = {\r\n path: `${wizardPath}/validation`,\r\n exact: true,\r\n component: ValidationPage,\r\n title: 'Validatie'\r\n};\r\n\r\nexport const AccessRoute: PageRoute = {\r\n path: `${wizardPath}/access`,\r\n exact: true,\r\n component: AccessPage,\r\n title: 'Beschikbaarheid'\r\n};\r\n\r\nexport const ResultRoute: PageRoute = {\r\n path: `${wizardPath}/result`,\r\n exact: true,\r\n component: ResultPage,\r\n title: 'Resultaat'\r\n};\r\n\r\nexport const BasicRouteFromOrganization: PageRoute = {\r\n path: `${wizardPath}/:organizationId`,\r\n exact: true,\r\n component: BasicPage,\r\n title: 'Informatie'\r\n};\r\n\r\nconst Routes: PageRoute[] = [BasicRoute, FileRoute, AccessRoute, ResultRoute];\r\n\r\ntype State = {};\r\ntype StateProps = { data: CatalogFormData };\r\ntype AllProps = RouteComponentProps & StateProps;\r\n\r\nclass WizardRouter extends React.Component {\r\n constructor(props: AllProps) {\r\n super(props);\r\n }\r\n\r\n public render() {\r\n let active = 0;\r\n for (let i = 0; i < Routes.length; i++) {\r\n if (this.props.location.pathname === Routes[i].path) {\r\n active = i;\r\n }\r\n }\r\n\r\n return (\r\n \r\n \r\n Catalogus toevoegen \r\n Een nieuwe catalogus toevoegen op het Arxis platform\r\n \r\n \r\n \r\n {Routes.map((route, index) => {\r\n let title: any = route.title;\r\n if (index === active) {\r\n title = {route.title};\r\n }\r\n return (\r\n \r\n {\r\n this.props.history.push(route.path);\r\n }}>\r\n {title}\r\n \r\n \r\n );\r\n })}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default WizardRouter;\r\n","import { Step, StepButton, StepLabel, Stepper } from '@material-ui/core';\r\nimport * as React from 'react';\r\nimport { RouteComponentProps } from 'react-router-dom';\r\nimport { XContainer } from 'src/components/layout/XContainer';\r\nimport {\r\n XPaperCenter,\r\n XPaperContainer,\r\n XPaperSubtitle,\r\n XPaperTitle\r\n} from 'src/components/layout/XPaper';\r\nimport XPageRouter from 'src/components/shared/XPageRouter';\r\nimport { PageRoute } from 'src/models/Route';\r\n\r\nimport { CatalogFormData } from '../../../store/catalogs/types';\r\nimport AccessPage from './WizardAccessPage';\r\nimport BasicPage from './WizardBasicPage';\r\nimport FilePage from './WizardFilePage';\r\nimport ResultPage from './WizardResultPage';\r\nimport ValidationPage from './WizardValidationPage';\r\n\r\nconst wizardPath = '/app/my/catalogs/validate';\r\n\r\nexport const ValidateFileRoute: PageRoute = {\r\n path: `${wizardPath}`,\r\n exact: true,\r\n component: FilePage,\r\n title: 'Bestand'\r\n};\r\n\r\nexport const ValidateValidationRoute: PageRoute = {\r\n path: `${wizardPath}/validation`,\r\n exact: true,\r\n component: ValidationPage,\r\n title: 'Validatie'\r\n};\r\n\r\nconst Routes: PageRoute[] = [ValidateFileRoute, ValidateValidationRoute];\r\n\r\ntype State = {};\r\ntype StateProps = { data: CatalogFormData };\r\ntype AllProps = RouteComponentProps & StateProps;\r\n\r\nclass WizardRouter extends React.Component {\r\n constructor(props: AllProps) {\r\n super(props);\r\n }\r\n\r\n public render() {\r\n let active = 0;\r\n for (let i = 0; i < Routes.length; i++) {\r\n if (this.props.location.pathname === Routes[i].path) {\r\n active = i;\r\n }\r\n }\r\n\r\n return (\r\n \r\n \r\n Catalogus valideren \r\n \r\n Valideer of een catalogus bestand valide is op basis van opbouw en inhoud\r\n \r\n \r\n \r\n \r\n {Routes.map((route, index) => {\r\n let title: any = route.title;\r\n if (index === active) {\r\n title = {route.title};\r\n }\r\n return (\r\n \r\n {\r\n this.props.history.push(route.path);\r\n }}>\r\n {title}\r\n \r\n \r\n );\r\n })}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default WizardRouter;\r\n","import React, { FC, useEffect, useState } from 'react';\r\nimport styled from '@emotion/styled';\r\nimport { InterfaceMethod } from 'src/models/Catalog';\r\nimport { Chip, MenuItem, FormControl, Select, TextField, RadioGroup, FormControlLabel, Radio} from '@material-ui/core';\r\nimport i18n from 'src/i18n';\r\n\r\ntype OwnProps = {\r\n typeSelectHandler: (type: string, specType?: string) => void;\r\n setPassword: (password: string) => void;\r\n setUserName: (userName: string) => void;\r\n setToken: (token: string) => void;\r\n setUrl: (url: string) => void;\r\n setPortalName: (portalName: string) => void; \r\n setFilterType: (portalName: string) => void;\r\n setFilter: (filter: string) => void;\r\n token: string;\r\n portalName: string;\r\n password: string;\r\n userName: string;\r\n url: string;\r\n filterType: string;\r\n filter: string;\r\n};\r\n\r\ntype AllProps = OwnProps;\r\n\r\nconst SpecificInterfaceMethod: FC = props => {\r\n const [customType, setCustomType] = useState('');\r\n\r\n const specificMethods = ['DeEekhoorn', 'VertilinQ', 'ItsPerfect', 'IMS', 'LightAndLiving'];\r\n\r\n const customTypeHandler = (method: string) => {\r\n setCustomType(method);\r\n props.typeSelectHandler('Specific', method);\r\n };\r\n\r\n return (\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n {customType === InterfaceMethod.DeEekhoorn && (\r\n
\r\n \r\n props.setUserName(e.target.value)}\r\n label=\"User name\"\r\n />\r\n props.setPassword(e.target.value)}\r\n label=\"Password\"\r\n style={{ marginTop: '1rem' }}\r\n />\r\n \r\n
\r\n )}\r\n {customType === InterfaceMethod.VertilinQ && (\r\n \r\n props.setUrl(e.target.value)}\r\n label=\"Url\"\r\n placeholder=\"(RPC endpoint)\"\r\n fullWidth\r\n />\r\n props.setToken(e.target.value)}\r\n label=\"Token\"\r\n fullWidth\r\n />\r\n \r\n )}\r\n {customType === InterfaceMethod.ItsPerfect && (\r\n \r\n props.setUrl(e.target.value)}\r\n label=\"Url\"\r\n placeholder={`(${i18n.t('tooltip.companyname')}.itsperfect.it)`}\r\n fullWidth\r\n />\r\n props.setToken(e.target.value)}\r\n label=\"Token\"\r\n fullWidth\r\n />\r\n props.setFilter(e.target.value)}\r\n label=\"Filter\"\r\n fullWidth\r\n />\r\n
Filter type:
\r\n props.setFilterType(e.target.value)}\r\n >\r\n } label=\"complete\" />\r\n } label=\"action prices\" />\r\n } label=\"without action prices\" />\r\n \r\n
\r\n )}\r\n {customType === InterfaceMethod.IMS && (\r\n \r\n props.setUrl(e.target.value)}\r\n label=\"Url\"\r\n placeholder=\"(Directory Url)\"\r\n fullWidth\r\n />\r\n props.setUserName(e.target.value)}\r\n label=\"User name\"\r\n fullWidth\r\n />\r\n props.setPassword(e.target.value)}\r\n label=\"Password\"\r\n fullWidth\r\n type='password'\r\n />\r\n \r\n )}\r\n {customType === InterfaceMethod.LightAndLiving && (\r\n \r\n props.setToken(e.target.value)}\r\n label=\"Service License\"\r\n placeholder=\"License key\"\r\n fullWidth\r\n />\r\n props.setUserName(e.target.value)}\r\n label=\"User name\"\r\n fullWidth\r\n />\r\n props.setPassword(e.target.value)}\r\n label=\"Password\"\r\n fullWidth\r\n />\r\n \r\n )}\r\n
\r\n );\r\n};\r\n\r\nexport default SpecificInterfaceMethod;\r\n\r\nconst XSelectTypeContainer = styled.div`\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-evenly;\r\n & h6 {\r\n margin-bottom: 1rem;\r\n }\r\n`;\r\n\r\nconst XAuthInputs = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n margin-top: 1rem;\r\n width: 100%;\r\n`;\r\n","import React, { FC, useEffect, useState } from 'react';\r\nimport styled from '@emotion/styled';\r\nimport {\r\n InterfaceMethod,\r\n InterfaceUpdateInterval,\r\n InterfaceAuthentication\r\n} from 'src/models/Catalog';\r\nimport { TextField, Checkbox, FormControl, Select, MenuItem } from '@material-ui/core';\r\nimport Chip from '@material-ui/core/Chip';\r\nimport SpecificInterfaceMethod from './uploadTypes/SpecificInterfaceMethod';\r\n\r\ntype StateProps = {\r\n useMultipleFiles: boolean;\r\n setUseMultipleFiles: (useMultipleFiles: boolean) => void;\r\n};\r\n\r\ntype OwnProps = {\r\n setInterfaceMethod: (interfaceMethod: string) => void;\r\n setInterfaceAuthentication: (interfaceAuthentication: string) => void;\r\n typeSelectHandler: (type: string, specType?: string) => void;\r\n setUrl: (url: string) => void;\r\n setPassword: (password: string) => void;\r\n setUserName: (userName: string) => void;\r\n setUrl2: (url2: string) => void;\r\n setPassword2: (password2: string) => void;\r\n setUserName2: (userName2: string) => void;\r\n setPortalName: (portalName: string) => void;\r\n setAutoUpdate: (autoUpdate: boolean) => void;\r\n setUpdateTimeInterval: (updateTimeInterval: string) => void;\r\n setToken: (token: string) => void;\r\n setFilterType: (filter: string) => void;\r\n uploadType: string;\r\n url: string;\r\n password: string;\r\n userName: string;\r\n url2: string;\r\n password2: string;\r\n userName2: string;\r\n portalName: string;\r\n token: string;\r\n autoUpdate: boolean;\r\n updateTimeInterval: string;\r\n interfaceAuthentication: string;\r\n filterType: string;\r\n filter: string;\r\n setFilter: (filter: string) => void;\r\n};\r\n\r\ntype AllProps = StateProps & OwnProps;\r\n\r\nconst CatalogInterface: FC = props => {\r\n const selectUploadMethod = ['Sftp', 'Ftp', 'Manual', 'ArxisApi', 'Api', 'Specific'];\r\n const [useMultipleFiles, setUseMultipleFiles] = useState(false);\r\n\r\n useEffect(() => {\r\n !props.autoUpdate && props.setUpdateTimeInterval('');\r\n }, [props.autoUpdate]);\r\n\r\n useEffect(() => {\r\n if (props.uploadType === 'Manual') {\r\n props.setUpdateTimeInterval('');\r\n props.setAutoUpdate(false);\r\n }\r\n }, [props.uploadType]);\r\n\r\n const checkBoxHandler = (e: any) => {\r\n if (e.key === 'Enter') {\r\n console.log(e.value);\r\n setUseMultipleFiles(prevState => !prevState);\r\n } else return;\r\n };\r\n\r\n return (\r\n \r\n
\r\n \r\n
Hoe bied jij de catalogus aan op Arxis?
\r\n \r\n {selectUploadMethod.map(method => (\r\n props.typeSelectHandler(method)}\r\n />\r\n ))}\r\n \r\n\r\n \r\n {props.uploadType === InterfaceMethod.Ftp && (\r\n
\r\n \r\n props.setUrl(e.target.value)}\r\n label=\"FTP Url\"\r\n fullWidth\r\n />\r\n \r\n \r\n \r\n props.setUserName(e.target.value)}\r\n label=\"FTP Username\"\r\n />\r\n \r\n \r\n props.setPassword(e.target.value)}\r\n label=\"FTP Password\"\r\n type='password'\r\n />\r\n \r\n \r\n \r\n setUseMultipleFiles(e.target.checked)}\r\n onKeyPress={e => checkBoxHandler(e)}\r\n />\r\n Use multiple files as input\r\n \r\n {useMultipleFiles == true && (\r\n <>\r\n \r\n props.setUrl2(e.target.value)}\r\n label=\"FTP2 Url\"\r\n fullWidth\r\n />\r\n \r\n \r\n \r\n props.setUserName2(e.target.value)}\r\n label=\"FTP2 Username\"\r\n />\r\n \r\n \r\n props.setPassword2(e.target.value)}\r\n label=\"FTP2 Password\"\r\n type='password'\r\n />\r\n \r\n \r\n \r\n )}\r\n
\r\n )}\r\n {props.uploadType === InterfaceMethod.Sftp && (\r\n
\r\n \r\n props.setUrl(e.target.value)}\r\n label=\"SFTP Url\"\r\n fullWidth\r\n />\r\n \r\n \r\n \r\n props.setUserName(e.target.value)}\r\n label=\"SFTP Username\"\r\n />\r\n \r\n \r\n props.setPassword(e.target.value)}\r\n label=\"SFTP Password\"\r\n type='password'\r\n />\r\n \r\n \r\n
\r\n )}\r\n {props.uploadType === InterfaceMethod.Manual &&
}\r\n {props.uploadType === InterfaceMethod.ArxisApi &&
}\r\n {props.uploadType === InterfaceMethod.Api && (\r\n
\r\n props.setUrl(e.target.value)}\r\n label=\"Full Url\"\r\n fullWidth\r\n />\r\n \r\n Select type of authentication:\r\n \r\n props.setInterfaceAuthentication(e.target.value)}>\r\n {Object.keys(InterfaceAuthentication).map(key => (\r\n \r\n {InterfaceAuthentication[key]}\r\n \r\n ))}\r\n \r\n \r\n \r\n {props.interfaceAuthentication === InterfaceAuthentication.UsernamePassword && (\r\n \r\n props.setUserName(e.target.value)}\r\n label=\"User name\"\r\n />\r\n props.setPassword(e.target.value)}\r\n label=\"Password\"\r\n type='password'\r\n style={{ marginTop: '1rem' }}\r\n />\r\n \r\n )}\r\n {props.interfaceAuthentication === InterfaceAuthentication.BasicAuth && (\r\n \r\n props.setUserName(e.target.value)}\r\n label=\"User name\"\r\n />\r\n props.setPassword(e.target.value)}\r\n type='password'\r\n label=\"Password\"\r\n style={{ marginTop: '1rem' }}\r\n />\r\n \r\n )}\r\n {props.interfaceAuthentication === InterfaceAuthentication.JWTAuth && (\r\n props.setToken(e.target.value)}\r\n label=\"Token\"\r\n fullWidth\r\n style={{ marginTop: '1rem' }}\r\n />\r\n )}\r\n
\r\n )}\r\n {props.uploadType === 'Specific' && (\r\n \r\n )}\r\n
\r\n
\r\n
\r\n \r\n );\r\n};\r\n\r\nexport default CatalogInterface;\r\n\r\nconst XContent = styled.div`\r\n padding: 0 2rem;\r\n display: flex;\r\n flex-direction: column;\r\n justify-content: start;\r\n margin-bottom: 1rem;\r\n background-color: white;\r\n border-radius: 6px;\r\n`;\r\n\r\nconst XSelectTypeContainer = styled.div`\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-evenly;\r\n & h6 {\r\n margin-bottom: 1rem;\r\n }\r\n`;\r\n\r\nconst XSelectTypeBtn = styled.div`\r\n width: 7rem;\r\n border: 1px solid black;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n cursor: pointer;\r\n\r\n & h6 {\r\n margin: 0.5rem;\r\n }\r\n\r\n & .selected {\r\n font-weight: bold;\r\n }\r\n`;\r\n\r\nconst XTypeContainer = styled.div`\r\n margin-top: 2rem;\r\n`;\r\n\r\nconst XTextInput = styled.div`\r\n margin-bottom: 1rem;\r\n`;\r\n\r\nconst XAuthInputs = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n margin-top: 1rem;\r\n width: 75%;\r\n`;\r\n","import React, { FC } from 'react';\r\nimport styled from '@emotion/styled';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport FormControl from '@material-ui/core/FormControl';\r\nimport Select from '@material-ui/core/Select';\r\nimport { Translation } from 'react-i18next';\r\nimport { FileFormat } from 'src/models/FileFormat';\r\n\r\ntype OwnProps = {\r\n onChangeType: (event: any) => void;\r\n onChangeVersion: (event: any) => void;\r\n fileFormatId: string;\r\n fileFormatVersionId: any;\r\n formats: FileFormat[];\r\n};\r\n\r\ntype AllProps = OwnProps;\r\n\r\nconst XFileFormatSelect: FC = props => {\r\n return (\r\n \r\n \r\n {t =>

{t('catalogs.selectFileFormat')}:

}\r\n
\r\n \r\n \r\n \r\n {props.formats.map(\r\n f =>\r\n f.versions.length > 1 &&\r\n f.id === props.fileFormatId && (\r\n \r\n

Select format version:

\r\n \r\n \r\n \r\n
\r\n )\r\n )}\r\n
\r\n );\r\n};\r\n\r\nexport default XFileFormatSelect;\r\n\r\nconst XFileFormatContainer = styled.div`\r\n margin-bottom: 2rem;\r\n\r\n & p {\r\n margin: 0;\r\n }\r\n`;\r\n\r\nconst XSelectFileFormatVersion = styled.div`\r\n margin-top: 1rem;\r\n`;\r\n","import React, { FC, useEffect, useState } from 'react';\r\nimport { RouteComponentProps } from 'react-router-dom';\r\nimport { connect } from 'react-redux';\r\nimport styled from '@emotion/styled';\r\nimport { TextField, FormControl, Select, MenuItem, Checkbox } from '@material-ui/core';\r\nimport { InterfaceType, InterfaceUpdateInterval } from 'src/models/Catalog';\r\nimport { ApplicationState } from '../../../store';\r\nimport { FileFormat } from 'src/models/FileFormat';\r\nimport { OrganizationModel } from 'src/models/Organization';\r\nimport * as catalogActions from '../../../store/catalogs/actions';\r\nimport * as organizationActions from 'src/store/organizations/actions';\r\nimport { CatalogHeaderFormData } from '../../../store/catalogs/types';\r\nimport { ApiResult } from 'src/helpers/apiClient';\r\nimport { XSecActionButton, XSubmitButton } from 'src/components/layout/XActionButton';\r\nimport { showNotification } from 'src/store/layout/actions';\r\nimport { MessageType } from 'src/store/layout/types';\r\nimport { mapError } from 'src/helpers/errorMap';\r\nimport i18n from '../../../i18n';\r\nimport { Translation } from 'react-i18next';\r\nimport ErrorBoundary from 'src/components/shared/ErrorBoundary';\r\nimport CatalogInterface from './CatalogInterface';\r\nimport XFileFormatSelect from 'src/components/domain/XFileFormatSelect';\r\nimport XPaperHeader from 'src/components/layout/XPaperHeader';\r\nimport { XPaper } from 'src/components/layout/XPaper';\r\nimport XPageContent from 'src/components/layout/XPageContent';\r\n\r\ntype StateProps = {\r\n fileFormats: FileFormat[];\r\n myOrganization?: OrganizationModel;\r\n};\r\n\r\ntype DispatchProps = {\r\n getFileFormats: () => void;\r\n getMyOrganization: () => void;\r\n addCatalogHeader: (data: CatalogHeaderFormData) => Promise;\r\n showNotification: (message: string, type?: MessageType) => void;\r\n};\r\n\r\ntype AllProps = StateProps & DispatchProps & RouteComponentProps;\r\n\r\nconst AddNewCatalogPage: FC = props => {\r\n const [fileFormatId, setFileFormatId] = useState('');\r\n const [fileFormatVersionId, setFileFormatVersionId] = useState('');\r\n const [title, setTitle] = useState('');\r\n const [description, setDescription] = useState('');\r\n const [organizationId] = useState(`${props.myOrganization?.organization.id}`);\r\n const [interfaceType, setInterfaceType] = useState(InterfaceType.CatalogSend);\r\n const [interfaceMethod, setInterfaceMethod] = useState('');\r\n const [interfaceAuthentication, setInterfaceAuthentication] = useState('None');\r\n const [url, setUrl] = useState('');\r\n const [userName, setUserName] = useState('');\r\n const [password, setPassword] = useState('');\r\n const [url2, setUrl2] = useState('');\r\n const [userName2, setUserName2] = useState('');\r\n const [password2, setPassword2] = useState('');\r\n const [useMultipleFiles, setUseMultipleFiles] = useState (false);\r\n const [portalName, setPortalName] = useState('');\r\n const [token, setToken] = useState('');\r\n const [autoUpdate, setAutoUpdate] = useState(false);\r\n const [updateTimeInterval, setUpdateTimeInterval] = useState('');\r\n const [uploadType, setUploadType] = useState('');\r\n const [filterType, setFilterType] = useState('');\r\n const [filter, setFilter] = useState('');\r\n\r\n const availableFormats = ['IDM', 'CSV', 'ECAT', 'LTX', 'Artex', 'eCatVeldeman', 'Cr8tif', 'IMS'];\r\n\r\n const formats = props.fileFormats.filter(ar => availableFormats.find(rm => rm === ar.name));\r\n\r\n useEffect(() => {\r\n props.getFileFormats();\r\n props.getMyOrganization();\r\n }, []);\r\n\r\n useEffect(() => {\r\n props.fileFormats.map(\r\n f =>\r\n f.versions.length <= 1 &&\r\n f.versions.map(v => v.fileFormatId === fileFormatId && setFileFormatVersionId(v.id))\r\n );\r\n }, [fileFormatId]);\r\n\r\n const onChangeType = (event: any) => {\r\n setFileFormatId(event.target.value);\r\n };\r\n\r\n const onChangeVersion = (event: any) => {\r\n setFileFormatVersionId(event.target.value);\r\n };\r\n\r\n const typeSelectHandler = (type: string, specType?: string) => {\r\n if (type !== 'Specific') {\r\n setUploadType(type);\r\n setInterfaceMethod(type);\r\n } else {\r\n setUploadType('Specific');\r\n specType && setInterfaceMethod(specType);\r\n }\r\n };\r\n\r\n const saveCatalogHeader = async (e: any) => {\r\n e.preventDefault();\r\n const apiResult = await props.addCatalogHeader({\r\n organizationId,\r\n title,\r\n description,\r\n fileFormatId,\r\n fileFormatVersionId,\r\n interfaceType,\r\n interfaceMethod,\r\n interfaceAuthentication,\r\n settings: {\r\n Url: url,\r\n Username: userName,\r\n Password: password,\r\n Url2: url2,\r\n Username2: userName2,\r\n Password2: password2,\r\n PortalName: portalName,\r\n Token: token,\r\n AutoUpdate: autoUpdate,\r\n UpdateTimeInterval: updateTimeInterval,\r\n FilterType: filterType,\r\n Filter: filter\r\n }\r\n });\r\n if (apiResult.IsSuccess) {\r\n props.history.push(`/app/my/catalogs/edit/${apiResult.JsonResponse.entityId}`);\r\n } else {\r\n props.showNotification(\r\n i18n.t('notification.savingCatalogHeader') + mapError(apiResult.Errors),\r\n 'error'\r\n );\r\n }\r\n };\r\n\r\n const onChangeUpdateIntervalHandler = (e: any) => {\r\n setUpdateTimeInterval(e.target.value);\r\n };\r\n\r\n const checkBoxHandler = (e: any) => {\r\n if (e.key === 'Enter') {\r\n setAutoUpdate(prevState => !prevState);\r\n } else return;\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n {t => (\r\n \r\n setTitle(e.target.value)}\r\n style={{ marginBottom: '1rem' }}\r\n label={t('tooltip.Title')}>\r\n setDescription(e.target.value)}\r\n label={t('tooltip.Description')}\r\n style={{ marginBottom: '1rem' }}\r\n multiline\r\n rows={1}\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 {!!uploadType && uploadType !== 'Specific' && (\r\n \r\n )}\r\n {!!uploadType && uploadType !== 'Manual' && uploadType !== 'ArxisApi' && (\r\n <>\r\n \r\n setAutoUpdate(e.target.checked)}\r\n onKeyPress={e => checkBoxHandler(e)}\r\n />\r\n Catalog auto update\r\n \r\n {autoUpdate && (\r\n \r\n
Select update interval:
\r\n \r\n \r\n {Object.keys(InterfaceUpdateInterval).map(key => (\r\n \r\n {key}\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 {t => (\r\n \r\n props.history.goBack()}>\r\n {t('tooltip.Cancel')}\r\n \r\n \r\n {t('catalogs.saveCatalog')}\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\nconst mapStateToProps = (state: ApplicationState): StateProps => {\r\n return {\r\n fileFormats: state.catalogs.fileFormats.sort((a, b) => a.name.localeCompare(b.name)),\r\n myOrganization: state.organizations.myOrganization\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch: any): DispatchProps => ({\r\n getFileFormats: () => dispatch(catalogActions.getFileFormatsThunk()),\r\n addCatalogHeader: (data: CatalogHeaderFormData) =>\r\n dispatch(catalogActions.addCatalogHeaderThunk(data)),\r\n getMyOrganization: () => dispatch(organizationActions.getMyOrganizationThunk()),\r\n showNotification: (message: string, type?: MessageType) =>\r\n dispatch(showNotification(message, type))\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(AddNewCatalogPage);\r\n\r\nconst XNewCatalog = styled.div`\r\n height: fit-content;\r\n border-radius: 6px;\r\n background-color: white;\r\n`;\r\n\r\nconst XContent = styled.div`\r\n padding: 0 2rem;\r\n height: 100%;\r\n display: flex;\r\n flex-direction: column;\r\n justify-content: start;\r\n\r\n & p {\r\n margin: 0.25rem 0;\r\n }\r\n`;\r\n\r\nconst XCatalogInputs = styled.div`\r\n margin-bottom: 2rem;\r\n display: flex;\r\n flex-direction: column;\r\n`;\r\n\r\nconst XButtonsContainer = styled.div`\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n margin-top: auto;\r\n`;\r\n\r\nconst XTextInput = styled.div`\r\n margin-bottom: 1rem;\r\n`;\r\n","import React, { FC, useEffect, useState } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { useHistory } from 'react-router-dom';\r\nimport styled from '@emotion/styled';\r\nimport { TextField, Checkbox, FormControl, Select, MenuItem } from '@material-ui/core';\r\nimport { XActionButton } from 'src/components/layout/XActionButton';\r\nimport {\r\n InterfaceType,\r\n InterfaceMethod,\r\n InterfaceSettingsKey,\r\n InterfaceAuthentication,\r\n CatalogModel,\r\n InterfaceUpdateInterval\r\n} from '../../../../models/Catalog';\r\nimport { saveCatalogInterface } from '../../../../store/catalogs/api';\r\nimport { ApplicationState } from 'src/store';\r\nimport { showNotification } from 'src/store/layout/actions';\r\nimport * as catalogActions from 'src/store/catalogs/actions';\r\nimport { ApiResult } from 'src/helpers/apiClient';\r\nimport { MessageType } from 'src/store/layout/types';\r\nimport { mapError } from 'src/helpers/errorMap';\r\nimport i18n from '../../../../i18n';\r\n\r\ntype OwnProps = {\r\n catalogId?: string;\r\n};\r\n\r\ntype StateProps = {\r\n catalog?: CatalogModel;\r\n};\r\n\r\ntype DispatchProps = {\r\n showNotification: (message: string, type?: MessageType) => void;\r\n getCatalogById: (id: string) => Promise;\r\n};\r\n\r\ntype AllProps = OwnProps & DispatchProps & StateProps;\r\n\r\nconst FTPInterfaceMethod: FC = props => {\r\n const [userName, setUserName] = useState('');\r\n const [password, setPassword] = useState('');\r\n const [url, setUrl] = useState('');\r\n const [autoUpdate, setAutoUpdate] = useState('');\r\n const [updateTimeInterval, setUpdateTimeInterval] = useState('');\r\n const [userName2, setUserName2] = useState('');\r\n const [password2, setPassword2] = useState('');\r\n const [url2, setUrl2] = useState('');\r\n const [useMultipleFiles, setUseMultipleFiles] = useState('');\r\n const history = useHistory();\r\n\r\n useEffect(() => {\r\n props.catalogId &&\r\n props.getCatalogById(props.catalogId).then(() => {\r\n if (!!props.catalog?.interfaces.length) {\r\n if (props.catalog?.interfaces[0].method === InterfaceMethod.Ftp) {\r\n setUrl(`${props.catalog?.interfaces[0].settings.Url}`);\r\n setUserName(`${props.catalog?.interfaces[0].settings.Username}`);\r\n setPassword(`${props.catalog?.interfaces[0].settings.Password}`);\r\n setUrl2(`${props.catalog?.interfaces[0].settings.Url2}`);\r\n setUserName2(`${props.catalog?.interfaces[0].settings.Username2}`);\r\n setPassword2(`${props.catalog?.interfaces[0].settings.Password2}`);\r\n setAutoUpdate(`${props.catalog?.interfaces[0].settings.AutoUpdate}`);\r\n setUpdateTimeInterval(`${props.catalog?.interfaces[0].settings.UpdateTimeInterval}`);\r\n setUseMultipleFiles(`${props.catalog?.interfaces[0].settings.UseMultipleFiles}`);\r\n }\r\n }\r\n });\r\n }, []);\r\n\r\n const catalogInterface = {\r\n method: InterfaceMethod.Ftp,\r\n type: InterfaceType.CatalogSend,\r\n authentication: InterfaceAuthentication.None,\r\n id: props.catalog\r\n ? props.catalog.interfaces.length > 0\r\n ? props.catalog.interfaces[0].id\r\n : ''\r\n : '',\r\n settings: {\r\n [InterfaceSettingsKey.Url]: url,\r\n [InterfaceSettingsKey.Username]: userName,\r\n [InterfaceSettingsKey.Password]: password,\r\n [InterfaceSettingsKey.Token]: '',\r\n [InterfaceSettingsKey.AutoUpdate]: autoUpdate,\r\n [InterfaceSettingsKey.UpdateTimeInterval]: updateTimeInterval,\r\n [InterfaceSettingsKey.PortalName]: '',\r\n [InterfaceSettingsKey.FilterType]: '',\r\n [InterfaceSettingsKey.UseMultipleFiles]: useMultipleFiles,\r\n [InterfaceSettingsKey.Url2]: url2,\r\n [InterfaceSettingsKey.Username2]: userName2,\r\n [InterfaceSettingsKey.Password2]: password2,\r\n [InterfaceSettingsKey.Filter]: ''\r\n }\r\n };\r\n\r\n const saveInterface = async () => {\r\n const apiResult = await saveCatalogInterface(catalogInterface, props.catalogId);\r\n if (apiResult.IsSuccess) {\r\n history.push(`/app/my/catalogs/edit/${props.catalogId}`);\r\n } else {\r\n props.showNotification(\r\n i18n.t('notification.savingCatalogInterface') + mapError(apiResult.Errors),\r\n 'error'\r\n );\r\n }\r\n };\r\n\r\n const onChangeUpdateIntervalHandler = (e: any) => {\r\n setUpdateTimeInterval(e.target.value);\r\n };\r\n\r\n const checkBoxHandler = (e: any) => {\r\n if (e.key === 'Enter') {\r\n if (autoUpdate === 'True')\r\n setAutoUpdate('False');\r\n else\r\n setAutoUpdate('True');\r\n } else return;\r\n };\r\n\r\n const handleUseMultipleFilesChange = (e: any) => {\r\n if (e.target.checked === true)\r\n setUseMultipleFiles('True')\r\n else\r\n setUseMultipleFiles('False')\r\n }\r\n\r\n const handleOnChange = (e: any) => {\r\n if (e.target.checked === true)\r\n setAutoUpdate('True')\r\n else\r\n setAutoUpdate('False')\r\n }\r\n\r\n return (\r\n
\r\n \r\n setUrl(e.target.value)} label=\"FTP Url\" fullWidth />\r\n \r\n
\r\n \r\n setUserName(e.target.value)}\r\n label=\"FTP Username\"\r\n />\r\n \r\n \r\n setPassword(e.target.value)}\r\n label=\"FTP Password\"\r\n type='password'\r\n />\r\n \r\n \r\n handleUseMultipleFilesChange(e)}\r\n onKeyPress={e => checkBoxHandler(e)}\r\n />\r\n Use multiple files as input\r\n \r\n {useMultipleFiles === 'True' && (\r\n <>\r\n \r\n setUrl2(e.target.value)}\r\n label=\"FTP2 Url\"\r\n fullWidth\r\n />\r\n \r\n \r\n setUserName2(e.target.value)}\r\n label=\"FTP2 Username\"\r\n />\r\n \r\n \r\n setPassword2(e.target.value)}\r\n label=\"FTP2 Password\"\r\n type='password'\r\n />\r\n \r\n \r\n )}\r\n \r\n handleOnChange(e)}\r\n onKeyPress={e => checkBoxHandler(e)}\r\n />\r\n Catalog auto update\r\n \r\n \r\n
Select update interval:
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n Save\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nconst mapStateToProps = (state: ApplicationState): StateProps => {\r\n return {\r\n catalog: state.catalogs.data.detail\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch: any): DispatchProps => ({\r\n showNotification: (message: string, type?: MessageType) =>\r\n dispatch(showNotification(message, type)),\r\n getCatalogById: (id: string) => dispatch(catalogActions.getCatalogThunk(id))\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(FTPInterfaceMethod);\r\n\r\nconst XTextInput = styled.div`\r\n margin-bottom: 1rem;\r\n`;\r\n","import React, { FC, useEffect, useState } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { useHistory } from 'react-router-dom';\r\nimport styled from '@emotion/styled';\r\nimport { TextField, Checkbox, FormControl, Select, MenuItem } from '@material-ui/core';\r\nimport { XActionButton } from 'src/components/layout/XActionButton';\r\nimport {\r\n InterfaceType,\r\n InterfaceMethod,\r\n InterfaceSettingsKey,\r\n InterfaceAuthentication,\r\n CatalogModel,\r\n InterfaceUpdateInterval\r\n} from '../../../../models/Catalog';\r\nimport { saveCatalogInterface } from '../../../../store/catalogs/api';\r\nimport { ApplicationState } from 'src/store';\r\nimport { showNotification } from 'src/store/layout/actions';\r\nimport * as catalogActions from 'src/store/catalogs/actions';\r\nimport { ApiResult } from 'src/helpers/apiClient';\r\nimport { MessageType } from 'src/store/layout/types';\r\nimport { mapError } from 'src/helpers/errorMap';\r\nimport i18n from '../../../../i18n';\r\n\r\ntype OwnProps = {\r\n catalogId?: string;\r\n};\r\n\r\ntype StateProps = {\r\n catalog?: CatalogModel;\r\n};\r\n\r\ntype DispatchProps = {\r\n showNotification: (message: string, type?: MessageType) => void;\r\n getCatalogById: (id: string) => Promise;\r\n};\r\n\r\ntype AllProps = OwnProps & DispatchProps & StateProps;\r\n\r\nconst SFTPInterfaceMethod: FC = props => {\r\n const [userName, setUserName] = useState('');\r\n const [password, setPassword] = useState('');\r\n const [url, setUrl] = useState('');\r\n const [autoUpdate, setAutoUpdate] = useState('');\r\n const [updateTimeInterval, setUpdateTimeInterval] = useState('');\r\n\r\n const history = useHistory();\r\n\r\n useEffect(() => {\r\n props.catalogId &&\r\n props.getCatalogById(props.catalogId).then(() => {\r\n if (!!props.catalog?.interfaces.length) {\r\n if (props.catalog?.interfaces[0].method === InterfaceMethod.Sftp) {\r\n setUrl(`${props.catalog?.interfaces[0].settings.Url}`);\r\n setUserName(`${props.catalog?.interfaces[0].settings.Username}`);\r\n setPassword(`${props.catalog?.interfaces[0].settings.Password}`);\r\n setAutoUpdate(`${props.catalog?.interfaces[0].settings.AutoUpdate}`);\r\n setUpdateTimeInterval(`${props.catalog?.interfaces[0].settings.UpdateTimeInterval}`);\r\n }\r\n }\r\n });\r\n }, []);\r\n\r\n const catalogInterface = {\r\n method: InterfaceMethod.Sftp,\r\n type: InterfaceType.CatalogSend,\r\n authentication: InterfaceAuthentication.None,\r\n id: props.catalog\r\n ? props.catalog.interfaces.length > 0\r\n ? props.catalog.interfaces[0].id\r\n : ''\r\n : '',\r\n settings: {\r\n [InterfaceSettingsKey.Url]: url,\r\n [InterfaceSettingsKey.Username]: userName,\r\n [InterfaceSettingsKey.Password]: password,\r\n [InterfaceSettingsKey.Token]: '',\r\n [InterfaceSettingsKey.PortalName]: '',\r\n [InterfaceSettingsKey.AutoUpdate]: autoUpdate,\r\n [InterfaceSettingsKey.UpdateTimeInterval]: updateTimeInterval,\r\n [InterfaceSettingsKey.FilterType]: '',\r\n [InterfaceSettingsKey.UseMultipleFiles]: '',\r\n [InterfaceSettingsKey.Url2]: '',\r\n [InterfaceSettingsKey.Username2]: '',\r\n [InterfaceSettingsKey.Password2]: '',\r\n [InterfaceSettingsKey.Filter]: ''\r\n }\r\n };\r\n\r\n const saveInterface = async () => {\r\n const apiResult = await saveCatalogInterface(catalogInterface, props.catalogId);\r\n if (apiResult.IsSuccess) {\r\n history.push(`/app/my/catalogs/edit/${props.catalogId}`);\r\n } else {\r\n props.showNotification(\r\n i18n.t('notification.savingCatalogInterface') + mapError(apiResult.Errors),\r\n 'error'\r\n );\r\n }\r\n };\r\n\r\n const onChangeUpdateIntervalHandler = (e: any) => {\r\n setUpdateTimeInterval(e.target.value);\r\n };\r\n\r\n const checkBoxHandler = (e: any) => {\r\n if (e.key === 'Enter') {\r\n if (autoUpdate === 'True')\r\n setAutoUpdate('False');\r\n else\r\n setAutoUpdate('True');\r\n } else return;\r\n };\r\n\r\n const handleOnChange = (e: any) => {\r\n if (e.target.checked === true)\r\n setAutoUpdate('True')\r\n else\r\n setAutoUpdate('False')\r\n }\r\n\r\n return (\r\n
\r\n \r\n setUrl(e.target.value)} label=\"SFTP Url\" fullWidth />\r\n \r\n
\r\n \r\n setUserName(e.target.value)}\r\n label=\"SFTP Username\"\r\n />\r\n \r\n \r\n setPassword(e.target.value)}\r\n label=\"SFTP Password\"\r\n type='password'\r\n />\r\n \r\n \r\n handleOnChange(e)}\r\n onKeyPress={e => checkBoxHandler(e)}\r\n />\r\n Catalog auto update\r\n \r\n \r\n
Select update interval:
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n Save\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nconst mapStateToProps = (state: ApplicationState): StateProps => {\r\n return {\r\n catalog: state.catalogs.data.detail\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch: any): DispatchProps => ({\r\n showNotification: (message: string, type?: MessageType) =>\r\n dispatch(showNotification(message, type)),\r\n getCatalogById: (id: string) => dispatch(catalogActions.getCatalogThunk(id))\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(SFTPInterfaceMethod);\r\n\r\nconst XTextInput = styled.div`\r\n margin-bottom: 1rem;\r\n`;\r\n","import React, { FC, useState } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { useHistory } from 'react-router-dom';\r\nimport styled from '@emotion/styled';\r\nimport { XActionButton } from 'src/components/layout/XActionButton';\r\nimport {\r\n InterfaceType,\r\n InterfaceMethod,\r\n InterfaceAuthentication,\r\n CatalogModel,\r\n InterfaceSettingsKey\r\n} from '../../../../models/Catalog';\r\nimport { saveCatalogInterface } from '../../../../store/catalogs/api';\r\nimport { ApplicationState } from 'src/store';\r\nimport { showNotification } from 'src/store/layout/actions';\r\nimport * as catalogActions from 'src/store/catalogs/actions';\r\nimport { ApiResult } from 'src/helpers/apiClient';\r\nimport { MessageType } from 'src/store/layout/types';\r\nimport { mapError } from 'src/helpers/errorMap';\r\nimport i18n from '../../../../i18n';\r\n\r\ntype OwnProps = {\r\n catalogId?: string;\r\n};\r\n\r\ntype StateProps = {\r\n catalog?: CatalogModel;\r\n};\r\n\r\ntype DispatchProps = {\r\n showNotification: (message: string, type?: MessageType) => void;\r\n getCatalogById: (id: string) => Promise;\r\n};\r\n\r\ntype AllProps = OwnProps & DispatchProps & StateProps;\r\n\r\nconst ManualInterfaceMethod: FC = props => {\r\n const history = useHistory();\r\n\r\n const catalogInterface = {\r\n method: InterfaceMethod.Manual,\r\n type: InterfaceType.CatalogSend,\r\n authentication: InterfaceAuthentication.None,\r\n id: props.catalog\r\n ? props.catalog.interfaces.length > 0\r\n ? props.catalog.interfaces[0].id\r\n : ''\r\n : '',\r\n settings: {\r\n [InterfaceSettingsKey.Url]: '',\r\n [InterfaceSettingsKey.Username]: '',\r\n [InterfaceSettingsKey.Password]: '',\r\n [InterfaceSettingsKey.PortalName]: '',\r\n [InterfaceSettingsKey.Token]: '',\r\n [InterfaceSettingsKey.AutoUpdate]: '',\r\n [InterfaceSettingsKey.UpdateTimeInterval]: '',\r\n [InterfaceSettingsKey.FilterType]: '',\r\n [InterfaceSettingsKey.UseMultipleFiles]: '',\r\n [InterfaceSettingsKey.Url2]: '',\r\n [InterfaceSettingsKey.Username2]: '',\r\n [InterfaceSettingsKey.Password2]: '',\r\n [InterfaceSettingsKey.Filter]: ''\r\n }\r\n };\r\n\r\n const saveInterface = async () => {\r\n const apiResult = await saveCatalogInterface(catalogInterface, props.catalogId);\r\n if (apiResult.IsSuccess) {\r\n history.push(`/app/my/catalogs/edit/${props.catalogId}`);\r\n } else {\r\n props.showNotification(\r\n i18n.t('notification.savingCatalogInterface') + mapError(apiResult.Errors),\r\n 'error'\r\n );\r\n }\r\n };\r\n\r\n return (\r\n
\r\n \r\n \r\n Save\r\n \r\n \r\n
\r\n );\r\n};\r\n\r\nconst mapStateToProps = (state: ApplicationState): StateProps => {\r\n return {\r\n catalog: state.catalogs.data.detail\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch: any): DispatchProps => ({\r\n showNotification: (message: string, type?: MessageType) =>\r\n dispatch(showNotification(message, type)),\r\n getCatalogById: (id: string) => dispatch(catalogActions.getCatalogThunk(id))\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(ManualInterfaceMethod);\r\n\r\nconst XSaveManualInterface = styled.div`\r\n display: flex;\r\n align-items: center;\r\n margin: 1rem 0;\r\n`;\r\n","import React, { FC, useEffect, useState } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { useHistory } from 'react-router-dom';\r\nimport styled from '@emotion/styled';\r\nimport { Checkbox, FormControl, MenuItem, Select, TextField } from '@material-ui/core';\r\nimport { XActionButton } from 'src/components/layout/XActionButton';\r\nimport {\r\n InterfaceAuthentication,\r\n InterfaceType,\r\n InterfaceMethod,\r\n InterfaceSettingsKey,\r\n CatalogModel,\r\n InterfaceUpdateInterval\r\n} from '../../../../models/Catalog';\r\nimport { saveCatalogInterface } from '../../../../store/catalogs/api';\r\nimport { ApplicationState } from 'src/store';\r\nimport { showNotification } from 'src/store/layout/actions';\r\nimport * as catalogActions from 'src/store/catalogs/actions';\r\nimport { ApiResult } from 'src/helpers/apiClient';\r\nimport { MessageType } from 'src/store/layout/types';\r\nimport { mapError } from 'src/helpers/errorMap';\r\nimport i18n from '../../../../i18n';\r\n\r\ntype StateProps = {\r\n catalog?: CatalogModel;\r\n};\r\n\r\ntype OwnProps = {\r\n catalogId?: string;\r\n};\r\n\r\ntype DispatchProps = {\r\n showNotification: (message: string, type?: MessageType) => void;\r\n getCatalogById: (id: string) => Promise;\r\n};\r\n\r\ntype AllProps = OwnProps & DispatchProps & StateProps;\r\n\r\nconst ApiInterfaceMethod: FC = props => {\r\n const [url, setUrl] = useState('');\r\n const [authentication, setAuthentication] = useState(`${InterfaceAuthentication.None}`);\r\n const [userName, setUserName] = useState('');\r\n const [password, setPassword] = useState('');\r\n const [token, setToken] = useState('');\r\n const [autoUpdate, setAutoUpdate] = useState('');\r\n const [updateTimeInterval, setUpdateTimeInterval] = useState('');\r\n\r\n const history = useHistory();\r\n\r\n useEffect(() => {\r\n props.catalogId &&\r\n props.getCatalogById(props.catalogId).then(() => {\r\n if (!!props.catalog?.interfaces.length) {\r\n if (props.catalog?.interfaces[0].method === InterfaceMethod.Api) {\r\n setUrl(`${props.catalog?.interfaces[0].settings.Url}`);\r\n setAuthentication(`${props.catalog?.interfaces[0].authentication}`);\r\n setUserName(`${props.catalog?.interfaces[0].settings.Username}`);\r\n setPassword(`${props.catalog?.interfaces[0].settings.Password}`);\r\n setToken(`${props.catalog?.interfaces[0].settings.Token}`);\r\n setAutoUpdate(`${props.catalog?.interfaces[0].settings.AutoUpdate}`);\r\n setUpdateTimeInterval(`${props.catalog?.interfaces[0].settings.UpdateTimeInterval}`);\r\n }\r\n }\r\n });\r\n }, []);\r\n\r\n const onChangeHanlder = (e: any) => {\r\n setAuthentication(e.target.value);\r\n };\r\n\r\n const onChangeUpdateIntervalHandler = (e: any) => {\r\n setUpdateTimeInterval(e.target.value);\r\n };\r\n\r\n const catalogInterface = {\r\n method: InterfaceMethod.Api,\r\n type: InterfaceType.CatalogSend,\r\n authentication: authentication,\r\n id: props.catalog\r\n ? props.catalog.interfaces.length > 0\r\n ? props.catalog.interfaces[0].id\r\n : ''\r\n : '',\r\n settings: {\r\n [InterfaceSettingsKey.Url]: url,\r\n [InterfaceSettingsKey.Username]: userName,\r\n [InterfaceSettingsKey.Password]: password,\r\n [InterfaceSettingsKey.PortalName]: '',\r\n [InterfaceSettingsKey.FilterType]: '',\r\n [InterfaceSettingsKey.Token]: token,\r\n [InterfaceSettingsKey.AutoUpdate]: autoUpdate,\r\n [InterfaceSettingsKey.UpdateTimeInterval]: updateTimeInterval,\r\n [InterfaceSettingsKey.UseMultipleFiles]: '',\r\n [InterfaceSettingsKey.Url2]: '',\r\n [InterfaceSettingsKey.Username2]: '',\r\n [InterfaceSettingsKey.Password2]: '',\r\n [InterfaceSettingsKey.Filter]: ''\r\n }\r\n };\r\n\r\n const saveInterface = async () => {\r\n const apiResult = await saveCatalogInterface(catalogInterface, props.catalogId);\r\n if (apiResult.IsSuccess) {\r\n history.push(`/app/my/catalogs/edit/${props.catalogId}`);\r\n } else {\r\n props.showNotification(\r\n i18n.t('notification.savingCatalogInterface') + mapError(apiResult.Errors),\r\n 'error'\r\n );\r\n }\r\n };\r\n\r\n const checkBoxHandler = (e: any) => {\r\n if (e.key === 'Enter') {\r\n if (autoUpdate === 'True')\r\n setAutoUpdate('False');\r\n else\r\n setAutoUpdate('True');\r\n } else return;\r\n };\r\n\r\n const handleOnChange = (e: any) => {\r\n if (e.target.checked === true)\r\n setAutoUpdate('True')\r\n else\r\n setAutoUpdate('False')\r\n }\r\n\r\n return (\r\n
\r\n setUrl(e.target.value)} label=\"Full Url\" fullWidth />\r\n \r\n Select type of authentication:\r\n \r\n \r\n \r\n \r\n {authentication === InterfaceAuthentication.UsernamePassword && (\r\n \r\n setUserName(e.target.value)}\r\n label=\"User name\"\r\n />\r\n setPassword(e.target.value)}\r\n label=\"Password\"\r\n type='password'\r\n style={{ marginTop: '1rem' }}\r\n />\r\n \r\n )}\r\n {authentication === InterfaceAuthentication.BasicAuth && (\r\n \r\n setUserName(e.target.value)}\r\n label=\"User name\"\r\n />\r\n setPassword(e.target.value)}\r\n label=\"Password\"\r\n type='password'\r\n style={{ marginTop: '1rem' }}\r\n />\r\n \r\n )}\r\n {authentication === InterfaceAuthentication.JWTAuth && (\r\n setToken(e.target.value)}\r\n label=\"Token\"\r\n fullWidth\r\n style={{ marginTop: '1rem' }}\r\n />\r\n )}\r\n \r\n
\r\n handleOnChange(e)}\r\n onKeyPress={e => checkBoxHandler(e)}\r\n />\r\n Catalog auto update\r\n
\r\n
Select update interval:
\r\n \r\n \r\n \r\n
\r\n\r\n
\r\n \r\n Save\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nconst mapStateToProps = (state: ApplicationState): StateProps => {\r\n return {\r\n catalog: state.catalogs.data.detail\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch: any): DispatchProps => ({\r\n showNotification: (message: string, type?: MessageType) =>\r\n dispatch(showNotification(message, type)),\r\n getCatalogById: (id: string) => dispatch(catalogActions.getCatalogThunk(id))\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(ApiInterfaceMethod);\r\n\r\nconst XSelectAuth = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n margin-top: 1rem;\r\n`;\r\n\r\nconst XAuthInputs = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n margin-top: 1rem;\r\n width: 50%;\r\n`;\r\n","import React, { FC, useEffect, useState } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { useHistory } from 'react-router-dom';\r\nimport styled from '@emotion/styled';\r\nimport { Checkbox, FormControl, MenuItem, Select, TextField } from '@material-ui/core';\r\nimport { XActionButton } from 'src/components/layout/XActionButton';\r\nimport {\r\n InterfaceAuthentication,\r\n InterfaceType,\r\n InterfaceMethod,\r\n InterfaceSettingsKey,\r\n CatalogModel,\r\n InterfaceUpdateInterval\r\n} from '../../../../models/Catalog';\r\nimport { saveCatalogInterface } from '../../../../store/catalogs/api';\r\nimport { ApplicationState } from 'src/store';\r\nimport { showNotification } from 'src/store/layout/actions';\r\nimport * as catalogActions from 'src/store/catalogs/actions';\r\nimport { ApiResult } from 'src/helpers/apiClient';\r\nimport { MessageType } from 'src/store/layout/types';\r\nimport { mapError } from 'src/helpers/errorMap';\r\nimport i18n from '../../../../i18n';\r\n\r\ntype StateProps = {\r\n catalog?: CatalogModel;\r\n};\r\n\r\ntype OwnProps = {\r\n catalogId?: string;\r\n};\r\n\r\ntype DispatchProps = {\r\n showNotification: (message: string, type?: MessageType) => void;\r\n getCatalogById: (id: string) => Promise;\r\n};\r\n\r\ntype AllProps = OwnProps & DispatchProps & StateProps;\r\n\r\nconst DeEekhoornApiInterfaceMethod: FC = props => {\r\n const [authentication, setAuthentication] = useState(`${InterfaceAuthentication.BasicAuth}`);\r\n const [userName, setUserName] = useState('');\r\n const [password, setPassword] = useState('');\r\n const [autoUpdate, setAutoUpdate] = useState('');\r\n const [updateTimeInterval, setUpdateTimeInterval] = useState('');\r\n\r\n const history = useHistory();\r\n\r\n useEffect(() => {\r\n props.catalogId &&\r\n props.getCatalogById(props.catalogId).then(() => {\r\n if (!!props.catalog?.interfaces.length) {\r\n if (props.catalog?.interfaces[0].method === InterfaceMethod.DeEekhoorn) {\r\n setAuthentication(`${props.catalog?.interfaces[0].authentication}`);\r\n setUserName(`${props.catalog?.interfaces[0].settings.Username}`);\r\n setPassword(`${props.catalog?.interfaces[0].settings.Password}`);\r\n setAutoUpdate(`${props.catalog?.interfaces[0].settings.AutoUpdate}`);\r\n setUpdateTimeInterval(`${props.catalog?.interfaces[0].settings.UpdateTimeInterval}`);\r\n }\r\n }\r\n });\r\n }, []);\r\n\r\n const onChangeUpdateIntervalHandler = (e: any) => {\r\n setUpdateTimeInterval(e.target.value);\r\n };\r\n\r\n const catalogInterface = {\r\n method: InterfaceMethod.DeEekhoorn,\r\n type: InterfaceType.CatalogSend,\r\n authentication: authentication,\r\n id: props.catalog\r\n ? props.catalog.interfaces.length > 0\r\n ? props.catalog.interfaces[0].id\r\n : ''\r\n : '',\r\n settings: {\r\n [InterfaceSettingsKey.Url]: '',\r\n [InterfaceSettingsKey.Username]: userName,\r\n [InterfaceSettingsKey.Password]: password,\r\n [InterfaceSettingsKey.PortalName]: '',\r\n [InterfaceSettingsKey.FilterType]: '',\r\n [InterfaceSettingsKey.Token]: '',\r\n [InterfaceSettingsKey.AutoUpdate]: autoUpdate,\r\n [InterfaceSettingsKey.UpdateTimeInterval]: updateTimeInterval,\r\n [InterfaceSettingsKey.UseMultipleFiles]: '',\r\n [InterfaceSettingsKey.Url2]: '',\r\n [InterfaceSettingsKey.Username2]: '',\r\n [InterfaceSettingsKey.Password2]: '',\r\n [InterfaceSettingsKey.Filter]: ''\r\n }\r\n };\r\n\r\n const saveInterface = async () => {\r\n const apiResult = await saveCatalogInterface(catalogInterface, props.catalogId);\r\n if (apiResult.IsSuccess) {\r\n history.push(`/app/my/catalogs/edit/${props.catalogId}`);\r\n } else {\r\n props.showNotification(\r\n i18n.t('notification.savingCatalogInterface') + mapError(apiResult.Errors),\r\n 'error'\r\n );\r\n }\r\n };\r\n\r\n const checkBoxHandler = (e: any) => {\r\n if (e.key === 'Enter') {\r\n if (autoUpdate === 'True')\r\n setAutoUpdate('False');\r\n else\r\n setAutoUpdate('True');\r\n } else return;\r\n };\r\n\r\n const handleOnChange = (e: any) => {\r\n if (e.target.checked === true)\r\n setAutoUpdate('True')\r\n else\r\n setAutoUpdate('False')\r\n }\r\n\r\n return (\r\n
\r\n \r\n setUserName(e.target.value)} label=\"User name\" />\r\n setPassword(e.target.value)}\r\n label=\"Password\"\r\n type='password'\r\n style={{ marginTop: '1rem' }}\r\n />\r\n \r\n {\r\n \r\n
\r\n handleOnChange(e)}\r\n onKeyPress={e => checkBoxHandler(e)}\r\n />\r\n Catalog auto update\r\n
\r\n
Select update interval:
\r\n \r\n \r\n \r\n
\r\n }\r\n
\r\n \r\n Save\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nconst mapStateToProps = (state: ApplicationState): StateProps => {\r\n return {\r\n catalog: state.catalogs.data.detail\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch: any): DispatchProps => ({\r\n showNotification: (message: string, type?: MessageType) =>\r\n dispatch(showNotification(message, type)),\r\n getCatalogById: (id: string) => dispatch(catalogActions.getCatalogThunk(id))\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(DeEekhoornApiInterfaceMethod);\r\n\r\nconst XAuthInputs = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n margin-top: 1rem;\r\n width: 50%;\r\n`;\r\n","import React, { FC, useEffect, useState } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { useHistory } from 'react-router-dom';\r\nimport styled from '@emotion/styled';\r\nimport { Checkbox, FormControl, MenuItem, Select, TextField } from '@material-ui/core';\r\nimport { XActionButton } from 'src/components/layout/XActionButton';\r\nimport {\r\n InterfaceAuthentication,\r\n InterfaceType,\r\n InterfaceMethod,\r\n InterfaceSettingsKey,\r\n CatalogModel,\r\n InterfaceUpdateInterval\r\n} from '../../../../models/Catalog';\r\n\r\nimport { saveCatalogInterface } from '../../../../store/catalogs/api';\r\nimport { ApplicationState } from 'src/store';\r\nimport { showNotification } from 'src/store/layout/actions';\r\nimport * as catalogActions from 'src/store/catalogs/actions';\r\nimport { ApiResult } from 'src/helpers/apiClient';\r\nimport { MessageType } from 'src/store/layout/types';\r\nimport { mapError } from 'src/helpers/errorMap';\r\nimport i18n from '../../../../i18n';\r\n\r\ntype StateProps = {\r\n catalog?: CatalogModel;\r\n};\r\n\r\ntype OwnProps = {\r\n catalogId?: string;\r\n};\r\n\r\ntype DispatchProps = {\r\n showNotification: (message: string, type?: MessageType) => void;\r\n getCatalogById: (id: string) => Promise;\r\n};\r\n\r\ntype AllProps = OwnProps & DispatchProps & StateProps;\r\n\r\nconst ItsPerfectApiInterfaceMethod: FC = props => {\r\n const [url, setUrl] = useState('');\r\n const [authentication, setAuthentication] = useState(`${InterfaceAuthentication.None}`);\r\n const [userName, setUserName] = useState('');\r\n const [password, setPassword] = useState('');\r\n const [token, setToken] = useState('');\r\n const [autoUpdate, setAutoUpdate] = useState('');\r\n const [updateTimeInterval, setUpdateTimeInterval] = useState('');\r\n const [filterType, setFilterType] = useState('');\r\n const [filter, setFilter] = useState('');\r\n const history = useHistory();\r\n\r\n const onChangeUpdateIntervalHandler = (e: any) => {\r\n setUpdateTimeInterval(e.target.value);\r\n };\r\n\r\n useEffect(() => {\r\n props.catalogId &&\r\n props.getCatalogById(props.catalogId).then(() => {\r\n if (!!props.catalog?.interfaces.length) {\r\n if (props.catalog?.interfaces[0].method === InterfaceMethod.ItsPerfect) {\r\n setUrl(`${props.catalog?.interfaces[0].settings.Url}`);\r\n setAuthentication(`${props.catalog?.interfaces[0].authentication}`);\r\n setUserName(`${props.catalog?.interfaces[0].settings.Username}`);\r\n setPassword(`${props.catalog?.interfaces[0].settings.Password}`);\r\n setToken(`${props.catalog?.interfaces[0].settings.Token}`);\r\n setAutoUpdate(`${props.catalog?.interfaces[0].settings.AutoUpdate}`);\r\n setUpdateTimeInterval(`${props.catalog?.interfaces[0].settings.UpdateTimeInterval}`);\r\n setFilterType(`${props.catalog?.interfaces[0].settings.FilterType}`);\r\n setFilter(`${props.catalog?.interfaces[0].settings.Filter}`);\r\n }\r\n }\r\n });\r\n }, []);\r\n\r\n const catalogInterface = {\r\n method: InterfaceMethod.ItsPerfect,\r\n type: InterfaceType.CatalogSend,\r\n authentication: authentication,\r\n id: props.catalog\r\n ? props.catalog.interfaces.length > 0\r\n ? props.catalog.interfaces[0].id\r\n : ''\r\n : '',\r\n settings: {\r\n [InterfaceSettingsKey.Url]: url,\r\n [InterfaceSettingsKey.Username]: userName,\r\n [InterfaceSettingsKey.Password]: password,\r\n [InterfaceSettingsKey.PortalName]: '',\r\n [InterfaceSettingsKey.Token]: token,\r\n [InterfaceSettingsKey.AutoUpdate]: autoUpdate,\r\n [InterfaceSettingsKey.UpdateTimeInterval]: updateTimeInterval,\r\n [InterfaceSettingsKey.FilterType]: filterType,\r\n [InterfaceSettingsKey.UseMultipleFiles]: '',\r\n [InterfaceSettingsKey.Url2]: '',\r\n [InterfaceSettingsKey.Username2]: '',\r\n [InterfaceSettingsKey.Password2]: '',\r\n [InterfaceSettingsKey.Filter]: filter\r\n }\r\n };\r\n\r\n const saveInterface = async () => {\r\n const apiResult = await saveCatalogInterface(catalogInterface, props.catalogId);\r\n if (apiResult.IsSuccess) {\r\n history.push(`/app/my/catalogs/edit/${props.catalogId}`);\r\n } else {\r\n props.showNotification(\r\n i18n.t('notification.savingCatalogInterface') + mapError(apiResult.Errors),\r\n 'error'\r\n );\r\n }\r\n };\r\n\r\n const checkBoxHandler = (e: any) => {\r\n if (e.key === 'Enter') {\r\n if (autoUpdate === 'True')\r\n setAutoUpdate('False');\r\n else\r\n setAutoUpdate('True');\r\n } else return;\r\n };\r\n\r\n const handleOnChange = (e: any) => {\r\n if (e.target.checked === true)\r\n setAutoUpdate('True')\r\n else\r\n setAutoUpdate('False')\r\n }\r\n\r\n return (\r\n
\r\n setUrl(e.target.value)}\r\n label=\"Url\"\r\n placeholder={`(${i18n.t('tooltip.companyname')}.itsperfect.it)`}\r\n fullWidth\r\n style={{ marginTop: '1rem' }}\r\n />\r\n setToken(e.target.value)} label=\"Token\" fullWidth style={{ marginTop: '1rem' }} />\r\n setFilter(e.target.value)} label=\"Filter\" fullWidth style={{ marginTop: '1rem' }} />\r\n setUserName(e.target.value)}\r\n label=\"User name\"\r\n style={{ marginTop: '1rem' }}\r\n fullWidth\r\n />\r\n setPassword(e.target.value)}\r\n label=\"Password\"\r\n type='password'\r\n style={{ marginTop: '1rem' }}\r\n fullWidth\r\n />\r\n\r\n {\r\n \r\n
\r\n handleOnChange(e)}\r\n onKeyPress={e => checkBoxHandler(e)}\r\n />\r\n Catalog auto update\r\n
\r\n
Select update interval:
\r\n \r\n \r\n \r\n
\r\n }\r\n
\r\n \r\n Save\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nconst mapStateToProps = (state: ApplicationState): StateProps => {\r\n return {\r\n catalog: state.catalogs.data.detail\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch: any): DispatchProps => ({\r\n showNotification: (message: string, type?: MessageType) =>\r\n dispatch(showNotification(message, type)),\r\n getCatalogById: (id: string) => dispatch(catalogActions.getCatalogThunk(id))\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(ItsPerfectApiInterfaceMethod);\r\n\r\nconst XAuthInputs = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n margin-top: 1rem;\r\n width: 50%;\r\n`;\r\n","import React, { FC, useState, useEffect } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { useHistory } from 'react-router-dom';\r\nimport {\r\n InterfaceSettingsKey,\r\n InterfaceMethod,\r\n InterfaceAuthentication,\r\n InterfaceType,\r\n CatalogModel,\r\n InterfaceUpdateInterval\r\n} from '../../../../models/Catalog';\r\nimport { ApiResult } from 'src/helpers/apiClient';\r\nimport { MessageType } from 'src/store/layout/types';\r\nimport { mapError } from 'src/helpers/errorMap';\r\nimport { saveCatalogInterface } from '../../../../store/catalogs/api';\r\nimport { ApplicationState } from 'src/store';\r\nimport { showNotification } from 'src/store/layout/actions';\r\nimport * as catalogActions from 'src/store/catalogs/actions';\r\nimport { XActionButton } from 'src/components/layout/XActionButton';\r\nimport { Checkbox, FormControl, MenuItem, Select, TextField } from '@material-ui/core';\r\nimport styled from '@emotion/styled';\r\nimport i18n from '../../../../i18n';\r\n\r\ntype StateProps = {\r\n catalog?: CatalogModel;\r\n};\r\n\r\ntype OwnProps = {\r\n catalogId?: string;\r\n};\r\n\r\ntype DispatchProps = {\r\n showNotification: (message: string, type?: MessageType) => void;\r\n getCatalogById: (id: string) => Promise;\r\n};\r\n\r\ntype AllProps = OwnProps & DispatchProps & StateProps;\r\n\r\nconst VertilinQInterfaceMethod: FC = props => {\r\n const [url, setUrl] = useState('');\r\n const [token, setToken] = useState('');\r\n const [autoUpdate, setAutoUpdate] = useState('');\r\n const [updateTimeInterval, setUpdateTimeInterval] = useState('');\r\n\r\n const history = useHistory();\r\n\r\n const onChangeUpdateIntervalHandler = (e: any) => {\r\n setUpdateTimeInterval(e.target.value);\r\n };\r\n\r\n useEffect(() => {\r\n props.catalogId &&\r\n props.getCatalogById(props.catalogId).then(() => {\r\n if (!!props.catalog?.interfaces.length) {\r\n if (props.catalog?.interfaces[0].method === InterfaceMethod.VertilinQ) {\r\n setUrl(`${props.catalog?.interfaces[0].settings.Url}`);\r\n setToken(`${props.catalog?.interfaces[0].settings.Token}`);\r\n setAutoUpdate(`${props.catalog?.interfaces[0].settings.AutoUpdate}`);\r\n setUpdateTimeInterval(\r\n `${props.catalog?.interfaces[0].settings.UpdateTimeInterval || ''}`\r\n );\r\n }\r\n }\r\n });\r\n }, []);\r\n\r\n const catalogInterface = {\r\n method: InterfaceMethod.VertilinQ,\r\n type: InterfaceType.CatalogSend,\r\n authentication: InterfaceAuthentication.None,\r\n id: props.catalog\r\n ? props.catalog.interfaces.length > 0\r\n ? props.catalog.interfaces[0].id\r\n : ''\r\n : '',\r\n settings: {\r\n [InterfaceSettingsKey.Url]: url,\r\n [InterfaceSettingsKey.Username]: '',\r\n [InterfaceSettingsKey.Password]: '',\r\n [InterfaceSettingsKey.PortalName]: '',\r\n [InterfaceSettingsKey.Token]: token,\r\n [InterfaceSettingsKey.AutoUpdate]: autoUpdate,\r\n [InterfaceSettingsKey.UpdateTimeInterval]: updateTimeInterval,\r\n [InterfaceSettingsKey.FilterType]: '',\r\n [InterfaceSettingsKey.UseMultipleFiles]: '',\r\n [InterfaceSettingsKey.Url2]: '',\r\n [InterfaceSettingsKey.Username2]: '',\r\n [InterfaceSettingsKey.Password2]: '',\r\n [InterfaceSettingsKey.Filter]: ''\r\n }\r\n };\r\n\r\n const saveInterface = async () => {\r\n const apiResult = await saveCatalogInterface(catalogInterface, props.catalogId);\r\n if (apiResult.IsSuccess) {\r\n history.push(`/app/my/catalogs/edit/${props.catalogId}`);\r\n } else {\r\n props.showNotification(\r\n i18n.t('notification.savingCatalogInterface') + mapError(apiResult.Errors),\r\n 'error'\r\n );\r\n }\r\n };\r\n\r\n const checkBoxHandler = (e: any) => {\r\n if (e.key === 'Enter') {\r\n if (autoUpdate === 'True')\r\n setAutoUpdate('False');\r\n else\r\n setAutoUpdate('True');\r\n } else return;\r\n };\r\n\r\n const handleOnChange = (e: any) => {\r\n if (e.target.checked === true)\r\n setAutoUpdate('True')\r\n else\r\n setAutoUpdate('False')\r\n }\r\n\r\n return (\r\n
\r\n setUrl(e.target.value)}\r\n label=\"Url\"\r\n placeholder=\"(RPC endpoint)\"\r\n fullWidth\r\n />\r\n setToken(e.target.value)} label=\"Token\" fullWidth />\r\n {\r\n \r\n
\r\n handleOnChange(e)}\r\n onKeyPress={e => checkBoxHandler(e)}\r\n />\r\n Catalog auto update\r\n
\r\n
Select update interval:
\r\n \r\n \r\n \r\n
\r\n }\r\n
\r\n \r\n Save\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nconst mapStateToProps = (state: ApplicationState): StateProps => {\r\n return {\r\n catalog: state.catalogs.data.detail\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch: any): DispatchProps => ({\r\n showNotification: (message: string, type?: MessageType) =>\r\n dispatch(showNotification(message, type)),\r\n getCatalogById: (id: string) => dispatch(catalogActions.getCatalogThunk(id))\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(VertilinQInterfaceMethod);\r\n\r\nconst XInput = styled.div`\r\n margin-bottom: 1rem;\r\n`;\r\n\r\nconst XAuthInputs = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n margin-top: 1rem;\r\n width: 50%;\r\n`;\r\n","import React, { FC, useEffect, useState } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { useHistory } from 'react-router-dom';\r\nimport styled from '@emotion/styled';\r\nimport { TextField, Checkbox, FormControl, Select, MenuItem } from '@material-ui/core';\r\nimport { XActionButton } from 'src/components/layout/XActionButton';\r\nimport {\r\n InterfaceType,\r\n InterfaceMethod,\r\n InterfaceSettingsKey,\r\n InterfaceAuthentication,\r\n CatalogModel,\r\n InterfaceUpdateInterval\r\n} from '../../../../models/Catalog';\r\nimport { saveCatalogInterface } from '../../../../store/catalogs/api';\r\nimport { ApplicationState } from 'src/store';\r\nimport { showNotification } from 'src/store/layout/actions';\r\nimport * as catalogActions from 'src/store/catalogs/actions';\r\nimport { ApiResult } from 'src/helpers/apiClient';\r\nimport { MessageType } from 'src/store/layout/types';\r\nimport { mapError } from 'src/helpers/errorMap';\r\nimport i18n from '../../../../i18n';\r\n\r\ntype OwnProps = {\r\n catalogId?: string;\r\n};\r\n\r\ntype StateProps = {\r\n catalog?: CatalogModel;\r\n};\r\n\r\ntype DispatchProps = {\r\n showNotification: (message: string, type?: MessageType) => void;\r\n getCatalogById: (id: string) => Promise;\r\n};\r\n\r\ntype AllProps = OwnProps & DispatchProps & StateProps;\r\n\r\nconst IMSInterfaceMethod: FC = props => {\r\n const [userName, setUserName] = useState('');\r\n const [password, setPassword] = useState('');\r\n const [url, setUrl] = useState('');\r\n const [autoUpdate, setAutoUpdate] = useState('');\r\n const [updateTimeInterval, setUpdateTimeInterval] = useState('');\r\n\r\n const history = useHistory();\r\n\r\n useEffect(() => {\r\n props.catalogId &&\r\n props.getCatalogById(props.catalogId).then(() => {\r\n if (!!props.catalog?.interfaces.length) {\r\n if (props.catalog?.interfaces[0].method === InterfaceMethod.IMS) {\r\n setUrl(`${props.catalog?.interfaces[0].settings.Url}`);\r\n setUserName(`${props.catalog?.interfaces[0].settings.Username}`);\r\n setPassword(`${props.catalog?.interfaces[0].settings.Password}`);\r\n setAutoUpdate(`${props.catalog?.interfaces[0].settings.AutoUpdate}`);\r\n setUpdateTimeInterval(`${props.catalog?.interfaces[0].settings.UpdateTimeInterval}`);\r\n }\r\n }\r\n });\r\n }, []);\r\n\r\n const catalogInterface = {\r\n method: InterfaceMethod.IMS,\r\n type: InterfaceType.CatalogSend,\r\n authentication: InterfaceAuthentication.None,\r\n id: props.catalog\r\n ? props.catalog.interfaces.length > 0\r\n ? props.catalog.interfaces[0].id\r\n : ''\r\n : '',\r\n settings: {\r\n [InterfaceSettingsKey.Url]: url,\r\n [InterfaceSettingsKey.Username]: userName,\r\n [InterfaceSettingsKey.Password]: password,\r\n [InterfaceSettingsKey.PortalName]: '',\r\n [InterfaceSettingsKey.Token]: '',\r\n [InterfaceSettingsKey.AutoUpdate]: autoUpdate,\r\n [InterfaceSettingsKey.UpdateTimeInterval]: updateTimeInterval,\r\n [InterfaceSettingsKey.FilterType]: '',\r\n [InterfaceSettingsKey.UseMultipleFiles]: '',\r\n [InterfaceSettingsKey.Url2]: '',\r\n [InterfaceSettingsKey.Username2]: '',\r\n [InterfaceSettingsKey.Password2]: '',\r\n [InterfaceSettingsKey.Filter]: ''\r\n }\r\n };\r\n\r\n const saveInterface = async () => {\r\n const apiResult = await saveCatalogInterface(catalogInterface, props.catalogId);\r\n if (apiResult.IsSuccess) {\r\n history.push(`/app/my/catalogs/edit/${props.catalogId}`);\r\n } else {\r\n props.showNotification(\r\n i18n.t('notification.savingCatalogInterface') + mapError(apiResult.Errors),\r\n 'error'\r\n );\r\n }\r\n };\r\n\r\n const onChangeUpdateIntervalHandler = (e: any) => {\r\n setUpdateTimeInterval(e.target.value);\r\n };\r\n\r\n const checkBoxHandler = (e: any) => {\r\n if (e.key === 'Enter') {\r\n if (autoUpdate === 'True')\r\n setAutoUpdate('False');\r\n else\r\n setAutoUpdate('True');\r\n } else return;\r\n };\r\n\r\n const handleOnChange = (e: any) => {\r\n if (e.target.checked === true)\r\n setAutoUpdate('True')\r\n else\r\n setAutoUpdate('False')\r\n }\r\n\r\n return (\r\n
\r\n \r\n setUrl(e.target.value)} label=\"Url\" fullWidth />\r\n \r\n
\r\n \r\n setUserName(e.target.value)}\r\n label=\"Username\"\r\n />\r\n \r\n \r\n setPassword(e.target.value)}\r\n label=\"Password\"\r\n type='password'\r\n />\r\n \r\n \r\n handleOnChange(e)}\r\n onKeyPress={e => checkBoxHandler(e)}\r\n />\r\n Catalog auto update\r\n \r\n \r\n
Select update interval:
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n Save\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nconst mapStateToProps = (state: ApplicationState): StateProps => {\r\n return {\r\n catalog: state.catalogs.data.detail\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch: any): DispatchProps => ({\r\n showNotification: (message: string, type?: MessageType) =>\r\n dispatch(showNotification(message, type)),\r\n getCatalogById: (id: string) => dispatch(catalogActions.getCatalogThunk(id))\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(IMSInterfaceMethod);\r\n\r\nconst XTextInput = styled.div`\r\n margin-bottom: 1rem;\r\n`;\r\n","import React, { FC, useEffect, useState } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { useHistory } from 'react-router-dom';\r\nimport styled from '@emotion/styled';\r\nimport { Checkbox, FormControl, MenuItem, Select, TextField } from '@material-ui/core';\r\nimport { XActionButton } from 'src/components/layout/XActionButton';\r\nimport {\r\n InterfaceAuthentication,\r\n InterfaceType,\r\n InterfaceMethod,\r\n InterfaceSettingsKey,\r\n CatalogModel,\r\n InterfaceUpdateInterval\r\n} from '../../../../models/Catalog';\r\nimport { saveCatalogInterface } from '../../../../store/catalogs/api';\r\nimport { ApplicationState } from 'src/store';\r\nimport { showNotification } from 'src/store/layout/actions';\r\nimport * as catalogActions from 'src/store/catalogs/actions';\r\nimport { ApiResult } from 'src/helpers/apiClient';\r\nimport { MessageType } from 'src/store/layout/types';\r\nimport { mapError } from 'src/helpers/errorMap';\r\nimport i18n from '../../../../i18n';\r\n\r\ntype StateProps = {\r\n catalog?: CatalogModel;\r\n};\r\n\r\ntype OwnProps = {\r\n catalogId?: string;\r\n};\r\n\r\ntype DispatchProps = {\r\n showNotification: (message: string, type?: MessageType) => void;\r\n getCatalogById: (id: string) => Promise;\r\n};\r\n\r\ntype AllProps = OwnProps & DispatchProps & StateProps;\r\n\r\nconst LightAndLivingInterfaceMethod: FC = props => {\r\n const [userName, setUserName] = useState('');\r\n const [password, setPassword] = useState('');\r\n const [token, setToken] = useState('');\r\n const [portalName, setPortalName] = useState('');\r\n const [autoUpdate, setAutoUpdate] = useState('');\r\n const [updateTimeInterval, setUpdateTimeInterval] = useState('');\r\n\r\n const history = useHistory();\r\n\r\n const onChangeUpdateIntervalHandler = (e: any) => {\r\n setUpdateTimeInterval(e.target.value);\r\n };\r\n\r\n useEffect(() => {\r\n props.catalogId &&\r\n props.getCatalogById(props.catalogId).then(() => {\r\n if (!!props.catalog?.interfaces.length) {\r\n if (props.catalog?.interfaces[0].method === InterfaceMethod.LightAndLiving) {\r\n setUserName(`${props.catalog?.interfaces[0].settings.Username}`);\r\n setPassword(`${props.catalog?.interfaces[0].settings.Password}`);\r\n setToken(`${props.catalog?.interfaces[0].settings.Token}`);\r\n setPortalName(`${props.catalog?.interfaces[0].settings.PortalName}`);\r\n setAutoUpdate(`${props.catalog?.interfaces[0].settings.AutoUpdate}`);\r\n setUpdateTimeInterval(\r\n `${props.catalog?.interfaces[0].settings.UpdateTimeInterval || ''}`\r\n );\r\n }\r\n }\r\n });\r\n }, []);\r\n\r\n const catalogInterface = {\r\n method: InterfaceMethod.LightAndLiving,\r\n type: InterfaceType.CatalogSend,\r\n authentication: InterfaceAuthentication.None,\r\n id: props.catalog\r\n ? props.catalog.interfaces.length > 0\r\n ? props.catalog.interfaces[0].id\r\n : ''\r\n : '',\r\n settings: {\r\n [InterfaceSettingsKey.Url]: '',\r\n [InterfaceSettingsKey.AutoUpdate]: autoUpdate,\r\n [InterfaceSettingsKey.UpdateTimeInterval]: updateTimeInterval,\r\n [InterfaceSettingsKey.Token]: token,\r\n [InterfaceSettingsKey.Username]: userName,\r\n [InterfaceSettingsKey.Password]: password,\r\n [InterfaceSettingsKey.PortalName]: portalName,\r\n [InterfaceSettingsKey.FilterType]: '',\r\n [InterfaceSettingsKey.UseMultipleFiles]: '',\r\n [InterfaceSettingsKey.Url2]: '',\r\n [InterfaceSettingsKey.Username2]: '',\r\n [InterfaceSettingsKey.Password2]: '',\r\n [InterfaceSettingsKey.Filter]: ''\r\n }\r\n };\r\n\r\n const saveInterface = async () => {\r\n const apiResult = await saveCatalogInterface(catalogInterface, props.catalogId);\r\n if (apiResult.IsSuccess) {\r\n history.push(`/app/my/catalogs/edit/${props.catalogId}`);\r\n } else {\r\n props.showNotification(\r\n i18n.t('notification.savingCatalogInterface') + mapError(apiResult.Errors),\r\n 'error'\r\n );\r\n }\r\n };\r\n\r\n return (\r\n
\r\n setUserName(e.target.value)}\r\n label=\"User name\"\r\n fullWidth\r\n />\r\n setPassword(e.target.value)}\r\n label=\"Password\"\r\n type='password'\r\n style={{ marginTop: '1rem' }}\r\n fullWidth\r\n />\r\n setToken(e.target.value)}\r\n label=\"Service License\"\r\n style={{ marginTop: '1rem' }}\r\n fullWidth\r\n />\r\n {\r\n \r\n
\r\n setAutoUpdate(`${e.target.checked}`)}\r\n />\r\n Catalog auto update\r\n
\r\n
Select update interval:
\r\n \r\n \r\n \r\n
\r\n }\r\n\r\n
\r\n \r\n Save\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nconst mapStateToProps = (state: ApplicationState): StateProps => {\r\n return {\r\n catalog: state.catalogs.data.detail\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch: any): DispatchProps => ({\r\n showNotification: (message: string, type?: MessageType) =>\r\n dispatch(showNotification(message, type)),\r\n getCatalogById: (id: string) => dispatch(catalogActions.getCatalogThunk(id))\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(LightAndLivingInterfaceMethod);\r\n\r\nconst XAuthInputs = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n margin-top: 1rem;\r\n width: 50%;\r\n`;\r\n","import React, { FC, useEffect, useState } from 'react';\r\nimport styled from '@emotion/styled';\r\nimport { InterfaceMethod } from 'src/models/Catalog';\r\nimport DeEekhoornApiInterfaceMethod from './DeEekhoornApiInterfaceMethod';\r\nimport ItsPerfectApiInterfaceMethod from './ItsPerfectApiInterfaceMethod';\r\nimport VertilinQInterfaceMethod from './VertilinQInterfaceMethod';\r\nimport IMSInterfaceMethod from './IMSInterfaceMethod';\r\nimport LightAndLivingInterfaceMethod from './LighAndLivingInterfaceMethod';\r\nimport Chip from '@material-ui/core/Chip';\r\n\r\ntype OwnProps = {\r\n catalogId?: string;\r\n method?: string;\r\n};\r\n\r\ntype AllProps = OwnProps;\r\n\r\nconst CustomInterfaceMethod: FC = ({ catalogId, method }) => {\r\n const [customType, setCustomType] = useState('');\r\n\r\n useEffect(() => {\r\n method && setCustomType(method);\r\n }, []);\r\n\r\n const onClickHandler = (type: string) => {\r\n setCustomType(type);\r\n };\r\n\r\n return (\r\n
\r\n
\r\n \r\n onClickHandler('DeEekhoorn')}\r\n />\r\n onClickHandler('VertilinQ')}\r\n />\r\n onClickHandler('ItsPerfect')}\r\n />\r\n onClickHandler('IMS')}\r\n />\r\n onClickHandler('LightAndLiving')}\r\n />\r\n \r\n
\r\n {customType === InterfaceMethod.DeEekhoorn && (\r\n \r\n )}\r\n {customType === InterfaceMethod.VertilinQ && (\r\n \r\n )}\r\n {customType === InterfaceMethod.ItsPerfect && (\r\n \r\n )}\r\n {customType === InterfaceMethod.IMS && (\r\n \r\n )}\r\n {customType === InterfaceMethod.LightAndLiving && (\r\n \r\n )}\r\n
\r\n );\r\n};\r\n\r\nexport default CustomInterfaceMethod;\r\n\r\nconst XSelectTypeContainer = styled.div`\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-evenly;\r\n & h6 {\r\n margin-bottom: 1rem;\r\n }\r\n`;\r\n\r\nconst XSelectTypeBtn = styled.div`\r\n width: 7rem;\r\n border: 1px solid black;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n cursor: pointer;\r\n\r\n & h6 {\r\n margin: 0.5rem;\r\n }\r\n\r\n & .selected {\r\n font-weight: bold;\r\n }\r\n`;\r\n","import React, { FC, useEffect, useState } from 'react';\r\nimport { RouteComponentProps } from 'react-router-dom';\r\nimport styled from '@emotion/styled';\r\nimport { connect } from 'react-redux';\r\nimport * as catalogActions from 'src/store/catalogs/actions';\r\nimport { ApiResult } from 'src/helpers/apiClient';\r\nimport { ApplicationState } from '../../../store';\r\nimport { XContainer } from '../../../components/layout/XContainer';\r\nimport { InterfaceMethod, CatalogModel } from 'src/models/Catalog';\r\nimport FTPInterfaceMethod from './uploadTypes/FTPInterfaceMethod';\r\nimport SFTPInterfaceMethod from './uploadTypes/SFTPInterfaceMethod';\r\nimport ManualInterfaceMethod from './uploadTypes/ManualInterfaceMethod';\r\nimport ApiInterfaceMethod from './uploadTypes/ApiInterfaceMethod';\r\nimport CustomInterfaceMethod from './uploadTypes/CustomInterfaceMethod';\r\nimport Chip from '@material-ui/core/Chip';\r\n\r\ntype StateProps = {\r\n catalog?: CatalogModel;\r\n};\r\n\r\ntype DispatchProps = {\r\n getCatalogById: (id: string) => Promise;\r\n};\r\n\r\ntype AllProps = StateProps & DispatchProps & RouteComponentProps<{ id?: string }>;\r\n\r\nconst EditInterfacePage: FC = props => {\r\n const [uploadType, setUploadType] = useState('');\r\n\r\n useEffect(() => {\r\n props.match.params.id &&\r\n props.getCatalogById(props.match.params.id).then(() => {\r\n if (!!props.catalog?.interfaces.length) {\r\n if (props.catalog?.interfaces[0].method === InterfaceMethod.DeEekhoorn) {\r\n setUploadType('Specific');\r\n } else if (props.catalog?.interfaces[0].method === InterfaceMethod.VertilinQ) {\r\n setUploadType('Specific');\r\n } else if (props.catalog?.interfaces[0].method === InterfaceMethod.ItsPerfect) {\r\n setUploadType('Specific');\r\n } else {\r\n setUploadType(`${props.catalog?.interfaces[0].method}`);\r\n }\r\n }\r\n });\r\n }, []);\r\n\r\n const onClickHandler = (type: string) => {\r\n setUploadType(type);\r\n };\r\n\r\n const catalogId = props.match.params.id;\r\n\r\n const selectUploadMethod = ['Sftp','Ftp', 'Manual', 'Api', 'Specific'];\r\n\r\n return (\r\n \r\n \r\n \r\n
Hoe bied jij de catalogus aan op Arxis?
\r\n
\r\n Via\r\n
\r\n \r\n {selectUploadMethod.map(method => (\r\n onClickHandler(method)}\r\n />\r\n ))}\r\n \r\n \r\n {uploadType === InterfaceMethod.Ftp && }\r\n {uploadType === InterfaceMethod.Manual && ()}\r\n {uploadType === InterfaceMethod.Sftp && }\r\n {uploadType === InterfaceMethod.Api && }\r\n {uploadType === 'Specific' && (\r\n \r\n )}\r\n \r\n
\r\n
\r\n \r\n );\r\n};\r\n\r\nconst mapStateToProps = (state: ApplicationState): StateProps => {\r\n return {\r\n catalog: state.catalogs.data.detail\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch: any): DispatchProps => ({\r\n getCatalogById: (id: string) => dispatch(catalogActions.getCatalogThunk(id))\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(EditInterfacePage);\r\n\r\nconst XCatalogInterface = styled.div`\r\n width: 32rem;\r\n height: 32rem;\r\n`;\r\n\r\nconst XContent = styled.div`\r\n padding: 2rem;\r\n display: flex;\r\n flex-direction: column;\r\n justify-content: start;\r\n margin-bottom: 1rem;\r\n background-color: white;\r\n border-radius: 6px;\r\n`;\r\n\r\nconst XSelectTypeContainer = styled.div`\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-evenly;\r\n & h6 {\r\n margin-bottom: 1rem;\r\n }\r\n`;\r\n\r\nconst XSelectTypeBtn = styled.div`\r\n width: 7rem;\r\n border: 1px solid black;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n cursor: pointer;\r\n\r\n & h6 {\r\n margin: 0.5rem;\r\n }\r\n\r\n & .selected {\r\n font-weight: bold;\r\n }\r\n`;\r\n\r\nconst XTypeContainer = styled.div`\r\n margin-top: 2rem;\r\n`;\r\n","import styled from '@emotion/styled';\r\nimport { LinearProgress, Select } from '@material-ui/core';\r\nimport * as React from 'react';\r\nimport { Translation } from 'react-i18next';\r\nimport { connect } from 'react-redux';\r\nimport { RouteComponentProps } from 'react-router-dom';\r\n\r\nimport { XContainer } from 'src/components/layout/XContainer';\r\nimport XFileSelectButton, { XButtonStyle } from 'src/components/layout/XFileSelectButton';\r\nimport XForm from 'src/components/layout/XForm';\r\nimport XFormButtons from 'src/components/layout/XFormButtons';\r\nimport { ApiResult } from 'src/helpers/apiClient';\r\nimport { getFileFormatOptions } from 'src/helpers/formatHelpers';\r\nimport { FileFormat } from 'src/models/FileFormat';\r\nimport { OrganizationType } from 'src/models/Organization';\r\nimport { AuthenticationAccount } from 'src/store/authentication/types';\r\nimport { showNotification } from 'src/store/layout/actions';\r\nimport { MessageType } from 'src/store/layout/types';\r\nimport { ApplicationState } from '../../../store';\r\nimport * as catalogActions from '../../../store/catalogs/actions';\r\nimport { ConvertCatalogFormData } from '../../../store/catalogs/types';\r\n\r\ntype StateProps = {\r\n data: ConvertCatalogFormData;\r\n account: AuthenticationAccount;\r\n fileFormats: FileFormat[];\r\n};\r\n\r\ntype DispatchProps = {\r\n convertCatalogFile: (\r\n fromFileFormat: string,\r\n fromFileFormatVersion: string,\r\n toFileFormat: string,\r\n toFileFormatVersion: string,\r\n file: File\r\n ) => Promise;\r\n getFileFormats: () => void;\r\n showNotification: (text: string, type: MessageType) => void;\r\n};\r\n\r\ntype AllProps = StateProps & DispatchProps & RouteComponentProps;\r\n\r\ntype State = {\r\n newData: ConvertCatalogFormData;\r\n converting: boolean;\r\n inputErrors: { fromFileFormatSelection: boolean; toFileFormatSelection: boolean };\r\n toFileFormatSelection: string | null;\r\n fromFileFormatSelection: string | null;\r\n};\r\n\r\nclass WizardConvertInputPage extends React.Component {\r\n constructor(props: AllProps) {\r\n super(props);\r\n\r\n this.state = {\r\n converting: false,\r\n toFileFormatSelection: props.data.toFileFormat\r\n ? props.data.toFileFormat + '|' + props.data.toFileFormatVersion\r\n : null,\r\n fromFileFormatSelection: props.data.fromFileFormat\r\n ? props.data.fromFileFormat + '|' + props.data.fromFileFormatVersion\r\n : null,\r\n inputErrors: { fromFileFormatSelection: false, toFileFormatSelection: false },\r\n newData: props.data\r\n };\r\n }\r\n\r\n public componentDidMount() {\r\n if (this.props.account.organizationType === OrganizationType.Retailer) {\r\n this.props.history.push('/app/start');\r\n return;\r\n }\r\n\r\n this.props.getFileFormats();\r\n }\r\n\r\n public handleFormFileSelectChange = (e: any) => {\r\n const newData = Object.assign({}, this.state.newData);\r\n if (e.target.files.length === 0) return;\r\n\r\n newData[e.target.name] = e.target.files[0];\r\n this.setState({ newData });\r\n };\r\n\r\n public handleFormChange(name: string, value: any) {\r\n const newData = Object.assign({}, this.state.newData);\r\n if (name === 'fromFileFormatSelection') {\r\n const split = value?.split('|') ?? [undefined, undefined];\r\n newData.fromFileFormat = split[0];\r\n newData.fromFileFormatVersion = split[1];\r\n this.setState({ fromFileFormatSelection: value });\r\n } else if (name === 'toFileFormatSelection') {\r\n const split = value?.split('|') ?? [undefined, undefined];\r\n newData.toFileFormat = split[0];\r\n newData.toFileFormatVersion = split[1];\r\n this.setState({ toFileFormatSelection: value });\r\n } else newData[name] = value;\r\n this.setState({ newData });\r\n }\r\n\r\n public previousPage = () => {\r\n this.props.history.goBack();\r\n };\r\n\r\n public next = () => {\r\n if (!this.state.newData.fromFileFormat || !this.state.newData.fromFileFormatVersion) {\r\n const inputErrors = Object.assign({}, this.state.inputErrors);\r\n inputErrors.fromFileFormatSelection = !this.state.fromFileFormatSelection;\r\n this.setState({ inputErrors });\r\n return;\r\n }\r\n\r\n if (!this.state.newData.toFileFormat || !this.state.newData.toFileFormatVersion) {\r\n const inputErrors = Object.assign({}, this.state.inputErrors);\r\n inputErrors.toFileFormatSelection = !this.state.toFileFormatSelection;\r\n this.setState({ inputErrors });\r\n return;\r\n }\r\n\r\n if (!this.state.newData.file?.size) return;\r\n\r\n this.setState({ converting: true });\r\n this.props\r\n .convertCatalogFile(\r\n this.state.newData.fromFileFormat,\r\n this.state.newData.fromFileFormatVersion,\r\n this.state.newData.toFileFormat,\r\n this.state.newData.toFileFormatVersion,\r\n this.state.newData.file\r\n )\r\n .then(() => {\r\n this.props.history.push('/app/my/catalogs/convert/result');\r\n });\r\n };\r\n\r\n public render() {\r\n return (\r\n \r\n {t => (\r\n \r\n {!this.props.fileFormats ? (\r\n \r\n ) : (\r\n
\r\n i.name.toLowerCase().indexOf('csv') == -1)\r\n },\r\n {\r\n title: t('wizard.outputFileFormat'),\r\n name: 'toFileFormatSelection',\r\n required: true,\r\n type: 'select',\r\n options: getFileFormatOptions(this.props.fileFormats, false)\r\n // We currently don't support conversion of csv files on the fly\r\n .filter(i => i.name.toLowerCase().indexOf('csv') == -1)\r\n .filter(\r\n i =>\r\n i.value !==\r\n this.state.newData.fromFileFormat +\r\n '|' +\r\n this.state.newData.fromFileFormatVersion\r\n )\r\n }\r\n ]}\r\n callback={(e, v) => this.handleFormChange(e, v)}\r\n />\r\n\r\n
\r\n 0 &&\r\n this.state.newData.toFileFormatVersion?.length > 0 &&\r\n this.state.newData.fromFileFormat?.length > 0 &&\r\n this.state.newData.fromFileFormatVersion?.length > 0\r\n }\r\n colorscheme={XButtonStyle.Secondary}>\r\n {t('tooltip.selectFile')}\r\n \r\n
\r\n\r\n 0}\r\n />\r\n
\r\n )}\r\n
\r\n )}\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state: ApplicationState): StateProps => {\r\n return {\r\n account: state.authentication.account,\r\n data: {\r\n file: null,\r\n fromFileFormat: '',\r\n fromFileFormatVersion: '',\r\n toFileFormat: '',\r\n toFileFormatVersion: ''\r\n },\r\n fileFormats: state.catalogs.fileFormats.sort((a, b) => a.name.localeCompare(b.name))\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch: any): DispatchProps => ({\r\n getFileFormats: () => dispatch(catalogActions.getFileFormatsThunk()),\r\n convertCatalogFile: (\r\n fromFileFormat: string,\r\n fromFileFormatVersion: string,\r\n toFileFormat: string,\r\n toFileFormatVersion: string,\r\n file: File\r\n ) =>\r\n dispatch(\r\n catalogActions.convertCatalogFileThunk(\r\n fromFileFormat,\r\n fromFileFormatVersion,\r\n toFileFormat,\r\n toFileFormatVersion,\r\n file\r\n )\r\n ),\r\n showNotification: (text: string, type: MessageType) => dispatch(showNotification(text, type))\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(WizardConvertInputPage);\r\n","import styled from '@emotion/styled';\r\nimport {\r\n CircularProgress,\r\n FormControl,\r\n InputLabel,\r\n LinearProgress,\r\n MenuItem,\r\n Select\r\n} from '@material-ui/core';\r\nimport * as React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { RouteComponentProps } from 'react-router-dom';\r\n\r\nimport { XContainer } from 'src/components/layout/XContainer';\r\nimport XFormButtons from 'src/components/layout/XFormButtons';\r\nimport { ApiError, ApiResult } from 'src/helpers/apiClient';\r\nimport { mapError } from 'src/helpers/errorMap';\r\nimport { OrganizationType } from 'src/models/Organization';\r\nimport { AuthenticationAccount } from 'src/store/authentication/types';\r\nimport { ApplicationState } from '../../../store';\r\nimport { ConversionResult, ConvertCatalogFormData } from '../../../store/catalogs/types';\r\n\r\nimport CheckCircleIcon from '@material-ui/icons/CheckCircleOutline';\r\nimport HighlightOffIcon from '@material-ui/icons/HighlightOff';\r\nimport XTableViewerPopup from 'src/components/domain/XTableViewerPopup';\r\nimport { Translation } from 'react-i18next';\r\nimport i18n from 'src/i18n';\r\n\r\ntype StateProps = {\r\n account: AuthenticationAccount;\r\n result: {\r\n transformResult?: ConversionResult;\r\n error?: ApiError;\r\n };\r\n};\r\n\r\ntype DispatchProps = {};\r\n\r\ntype AllProps = StateProps & DispatchProps & RouteComponentProps;\r\n\r\ntype State = {\r\n showPopup: boolean;\r\n};\r\n\r\nclass WizardConvertOutputPage extends React.Component {\r\n constructor(props: AllProps) {\r\n super(props);\r\n\r\n this.state = {\r\n showPopup: false\r\n };\r\n }\r\n\r\n public componentDidMount() {\r\n if (this.props.account.organizationType === OrganizationType.Retailer) {\r\n this.props.history.push('/app/start');\r\n return;\r\n }\r\n\r\n console.log(this.props.result);\r\n }\r\n\r\n public previousPage = () => {\r\n this.props.history.goBack();\r\n };\r\n\r\n public next = () => {\r\n this.props.history.push('/app/my/catalogs/');\r\n };\r\n\r\n public downloadConversionSummary = () => {\r\n const data = Object.assign({}, this.props.result.transformResult);\r\n data.url = '';\r\n\r\n const dataLink =\r\n 'data:text/json;charset=utf-8,' + encodeURIComponent(JSON.stringify(data, null, 2));\r\n const link = document.createElement('a');\r\n link.download = 'validatie-rapport.json';\r\n link.href = dataLink;\r\n link.click();\r\n };\r\n\r\n public downloadFile = () => {\r\n const link = document.createElement('a');\r\n link.download = this.props.result.transformResult?.to + '.xml';\r\n link.href = this.props.result.transformResult?.url ?? '';\r\n console.log(link.download);\r\n link.click();\r\n };\r\n\r\n public render() {\r\n return (\r\n \r\n {this.props.result.transformResult && (\r\n (str === 0 ? '-' : '#' + str)\r\n },\r\n { name: 'message' }\r\n ]}\r\n open={this.state.showPopup}\r\n onCancel={() => this.setState({ showPopup: false })}\r\n data={this.props.result.transformResult.errors}\r\n />\r\n )}\r\n
\r\n {this.props.result.error ? (\r\n
\r\n
\r\n \r\n
\r\n
\r\n {this.props.result.error.errorCode === 'LTX4001'\r\n ? i18n.t('wizard.conversionNotYetAvailableForThisFormat')\r\n : mapError([this.props.result.error])}\r\n
\r\n
\r\n ) : this.props.result?.transformResult?.errors.length === 0 ? (\r\n \r\n {t => (\r\n
\r\n
\r\n \r\n
\r\n
\r\n {t('wizard.conversionCompleteNoFindings')}\r\n
\r\n this.downloadFile()}>\r\n {t('wizard.downloadFile')}\r\n
\r\n
\r\n )}\r\n \r\n ) : (\r\n \r\n {t => (\r\n
\r\n
\r\n \r\n
\r\n
\r\n {t('wizard.validationComplete')},{' '}\r\n {this.props.result.transformResult?.errors.length} {t('wizard.findings')}\r\n
\r\n this.setState({ showPopup: true })}>\r\n {t('wizard.viewReport')}\r\n
\r\n this.downloadConversionSummary()}>\r\n {t('wizard.downloadReport')}\r\n \r\n \r\n )}\r\n
\r\n )}\r\n \r\n {t => (\r\n \r\n )}\r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state: ApplicationState): StateProps => {\r\n return {\r\n account: state.authentication.account,\r\n result: state.catalogs.conversion\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch: any): DispatchProps => ({\r\n //\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(WizardConvertOutputPage);\r\n\r\nconst ValidationSuccessResult = styled('div')`\r\n margin-top: 10px;\r\n padding: 10px;\r\n color: #0d8416;\r\n border: 1px solid #b7d167;\r\n`;\r\n\r\nconst ValidationErrorResult = styled('div')`\r\n margin-top: 10px;\r\n padding: 10px;\r\n color: #9c1006;\r\n border: 1px solid #ed677a;\r\n`;\r\n\r\nconst StyledSelect = styled(Select)`\r\n margin-bottom: 15px;\r\n width: 100%;\r\n`;\r\n","import { Step, StepButton, StepLabel, Stepper } from '@material-ui/core';\r\nimport * as React from 'react';\r\nimport { RouteComponentProps } from 'react-router-dom';\r\nimport { XContainer } from 'src/components/layout/XContainer';\r\nimport {\r\n XPaperCenter,\r\n XPaperContainer,\r\n XPaperSubtitle,\r\n XPaperTitle\r\n} from 'src/components/layout/XPaper';\r\nimport XPageRouter from 'src/components/shared/XPageRouter';\r\nimport { PageRoute } from 'src/models/Route';\r\n\r\nimport { CatalogFormData } from '../../../store/catalogs/types';\r\nimport InputPage from './WizardConvertInputPage';\r\nimport OutputPage from './WizardConvertOutputPage';\r\n\r\nconst wizardPath = '/app/my/catalogs/convert';\r\n\r\nexport const InputRoute: PageRoute = {\r\n path: `${wizardPath}`,\r\n exact: true,\r\n component: InputPage,\r\n title: 'Bestand'\r\n};\r\n\r\nexport const OutputRoute: PageRoute = {\r\n path: `${wizardPath}/result`,\r\n exact: true,\r\n component: OutputPage,\r\n title: 'Resultaat'\r\n};\r\n\r\nconst Routes: PageRoute[] = [InputRoute, OutputRoute];\r\n\r\ntype State = {};\r\ntype StateProps = { data: CatalogFormData };\r\ntype AllProps = RouteComponentProps & StateProps;\r\n\r\nclass WizardConvertRouter extends React.Component {\r\n constructor(props: AllProps) {\r\n super(props);\r\n }\r\n\r\n public render() {\r\n let active = 0;\r\n for (let i = 0; i < Routes.length; i++) {\r\n if (this.props.location.pathname === Routes[i].path) {\r\n active = i;\r\n }\r\n }\r\n\r\n return (\r\n \r\n \r\n Catalogus converteren \r\n \r\n Converteer een catalogus bestand naar een ander bestandsformaat\r\n \r\n \r\n \r\n \r\n {Routes.map((route, index) => {\r\n let title: any = route.title;\r\n if (index === active) {\r\n title = {route.title};\r\n }\r\n return (\r\n \r\n {\r\n this.props.history.push(route.path);\r\n }}>\r\n {title}\r\n \r\n \r\n );\r\n })}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default WizardConvertRouter;\r\n","import styled from '@emotion/styled';\r\nimport { CircularProgress } from '@material-ui/core';\r\nimport React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { RouteComponentProps, withRouter } from 'react-router';\r\nimport { XSecActionButton, XActionButton } from 'src/components/layout/XActionButton';\r\nimport { XActionStrip } from 'src/components/layout/XActionStrip';\r\nimport { XContainer } from 'src/components/layout/XContainer';\r\nimport XForm from 'src/components/layout/XForm';\r\nimport XPageContent from 'src/components/layout/XPageContent';\r\nimport { XPaper, XPaperTitle } from 'src/components/layout/XPaper';\r\nimport { XTitle } from 'src/components/layout/XPaperHeader';\r\nimport { XRow, XRowCell } from 'src/components/layout/XRow';\r\nimport { getEmailForm, getFtpForm, getSftpForm } from 'src/constants/OrganizationInterface/InterfaceSetting';\r\nimport {\r\n getInterfaceFormats,\r\n getInterfaceMethods,\r\n getInterfaceText\r\n} from 'src/constants/OrganizationInterface/OrganizationInterfaces';\r\nimport { mapError } from 'src/helpers/errorMap';\r\nimport { InterfaceMethod, InterfaceType, OrganizationInterface } from 'src/models/Organization';\r\nimport { ApplicationState } from 'src/store';\r\nimport { showNotification } from 'src/store/layout/actions';\r\nimport { MessageType } from 'src/store/layout/types';\r\nimport { validateFtpAccessThunk, validateSftpAccessThunk } from 'src/store/organizations/actions';\r\nimport { saveOrganizationInterface } from 'src/store/organizations/api';\r\nimport ErrorIcon from '@material-ui/icons/Warning';\r\nimport SuccessIcon from '@material-ui/icons/Check';\r\nimport { XPanel, XFailPanel, XSuccessPanel } from 'src/components/layout/XPanel';\r\nimport { Translation } from 'react-i18next';\r\nimport i18n from '../../../i18n';\r\nimport ErrorBoundary from 'src/components/shared/ErrorBoundary';\r\n\r\ntype OwnProps = {};\r\n\r\ntype AllProps = StateProps &\r\n DispatchProps &\r\n OwnProps &\r\n RouteComponentProps<{ interfaceId: string }>;\r\n\r\ntype State = {\r\n interface?: OrganizationInterface;\r\n loading: boolean;\r\n generatedPassword: string;\r\n inputErrors: any;\r\n loadingFtpAccess: boolean;\r\n loadingSftpAccess: boolean;\r\n ftpTested: boolean;\r\n sftpTested: boolean;\r\n ftpSuccess: boolean;\r\n sftpSuccess: boolean;\r\n};\r\n\r\nfunction generatePassword() {\r\n var length = 10,\r\n charset = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789',\r\n retVal = '';\r\n for (var i = 0, n = charset.length; i < length; ++i) {\r\n retVal += charset.charAt(Math.floor(Math.random() * n));\r\n }\r\n return retVal;\r\n}\r\n\r\nclass SoftwareInterfacePage extends React.Component {\r\n constructor(props: AllProps) {\r\n super(props);\r\n this.state = {\r\n inputErrors: [],\r\n generatedPassword: generatePassword(),\r\n loading: true,\r\n loadingFtpAccess: false,\r\n loadingSftpAccess: false,\r\n ftpTested: false,\r\n sftpTested: false,\r\n ftpSuccess: false,\r\n sftpSuccess: false\r\n };\r\n }\r\n\r\n async componentDidMount() {\r\n var interfaceId = this.props.match.params.interfaceId;\r\n if (interfaceId) {\r\n const result = this.props.organization?.interfaces.find(x => x.id === interfaceId);\r\n this.setState({ interface: result });\r\n } else {\r\n const queryParams = new URLSearchParams(this.props.location.search);\r\n const typeString = queryParams.get('type');\r\n if (typeString === null) return;\r\n\r\n const type = InterfaceType[typeString];\r\n let defaultMethod = InterfaceMethod.Manual;\r\n if (type === InterfaceType.OrderSend || type === InterfaceType.OrderReceive) {\r\n defaultMethod = InterfaceMethod.LtxFtp;\r\n }\r\n\r\n const newInterface = { id: '', type, method: defaultMethod, settings: {} };\r\n this.setState({ interface: newInterface });\r\n }\r\n\r\n this.setState({ loading: false });\r\n }\r\n\r\n setMethod = (method: InterfaceMethod) => {\r\n if (this.state.interface) this.setState({ interface: { ...this.state.interface, method } });\r\n };\r\n\r\n setFormat = (format: string) => {\r\n this.setSetting('FileFormat', format);\r\n };\r\n\r\n setSetting(key: string, value: string) {\r\n if (!this.state.interface) return;\r\n let settings = this.state.interface.settings;\r\n if (!settings) return;\r\n settings[key] = value;\r\n this.setState({\r\n interface: { ...this.state.interface, settings: settings }\r\n });\r\n }\r\n\r\n getLtxUserName = (): string => {\r\n let result =\r\n this.state.interface?.settings?.['LtxFtpUsername'] ??\r\n this.props.organization?.organization.email ??\r\n '';\r\n if (!result.length) result = this.props.account.email;\r\n return result;\r\n };\r\n\r\n getLtxPassword = (): string => {\r\n return this.state.interface?.settings?.['LtxFtpPassword'] ?? this.state.generatedPassword;\r\n };\r\n\r\n getLtxFtpAddress = (): string => {\r\n const arxisId = this.props.identifiers.filter(x => x.type === 'ArxisId')[0].value;\r\n return this.state.interface?.settings?.['LtxFtpAddress'] ?? 'ftp://ftp.arxis.io//'+ this.props.organization?.organization.organizationType +\r\n '/' + arxisId + '/Order/';\r\n };\r\n\r\n cancelEdit = () => {\r\n this.props.history.goBack();\r\n };\r\n\r\n addhttp = url => {\r\n if (url !== undefined && !/^(?:f|ht)tps?\\:\\/\\//.test(url)) {\r\n url = 'http://' + url;\r\n }\r\n return url;\r\n };\r\n\r\n public async validateMySftp() {\r\n if (this.state.interface === undefined) return;\r\n const orgInterface = this.state.interface;\r\n const url = this.addhttp(orgInterface.settings['SftpAddress']);\r\n this.setSetting('SftpAddress', url);\r\n if (orgInterface.settings['SftpAddress'])\r\n return await this.validateSftp({\r\n address: orgInterface.settings['SftpAddress'],\r\n username: orgInterface.settings['SftpUsername'],\r\n password: orgInterface.settings['SftpPassword']\r\n });\r\n }\r\n\r\n public async validateMyFtp() {\r\n if (this.state.interface === undefined) return;\r\n const orgInterface = this.state.interface;\r\n const url = this.addhttp(orgInterface.settings['FtpAddress']);\r\n this.setSetting('FtpAddress', url);\r\n if (orgInterface.settings['FtpAddress'])\r\n return await this.validateFtp({\r\n address: orgInterface.settings['FtpAddress'],\r\n username: orgInterface.settings['FtpUsername'],\r\n password: orgInterface.settings['FtpPassword']\r\n });\r\n }\r\n\r\n public async validateFtp(ftp: { address: string; username: string; password: string }) {\r\n if (!ftp.address || !ftp.username || !ftp.password) return;\r\n\r\n this.setState({ loadingFtpAccess: true, ftpTested: false });\r\n const result = await this.props.validateFtpAccess(ftp.address, ftp.username, ftp.password);\r\n this.setState({ loadingFtpAccess: false });\r\n\r\n this.setState({ ftpTested: true, ftpSuccess: result.IsSuccess });\r\n if (result.IsSuccess)\r\n this.props.showNotification(i18n.t('notification.FTPfolderExists'), 'success');\r\n else\r\n this.props.showNotification(\r\n i18n.t('notification.FTPfoldercouldNotBeReached') + mapError(result.Errors),\r\n 'error'\r\n );\r\n }\r\n\r\n public async validateSftp(sftp: { address: string; username: string; password: string }) {\r\n if (!sftp.address || !sftp.username || !sftp.password) return;\r\n\r\n this.setState({ loadingSftpAccess: true, sftpTested: false });\r\n const result = await this.props.validateSftpAccess(sftp.address, sftp.username, sftp.password);\r\n this.setState({ loadingSftpAccess: false });\r\n\r\n this.setState({ sftpTested: true, sftpSuccess: result.IsSuccess });\r\n if (result.IsSuccess)\r\n this.props.showNotification(i18n.t('notification.SFTPfolderExists'), 'success');\r\n else\r\n this.props.showNotification(\r\n i18n.t('notification.SFTPfolderCouldNotBeReached') + mapError(result.Errors),\r\n 'error'\r\n );\r\n }\r\n\r\n save = async () => {\r\n this.setSetting('LtxFtpUsername', this.getLtxUserName());\r\n this.setSetting('LtxFtpPassword', this.getLtxPassword());\r\n this.setSetting('LtxFtpAddress', this.getLtxFtpAddress());\r\n if (this.state.interface === undefined) return;\r\n const orgInterface = this.state.interface;\r\n console.log('Settings: ', orgInterface.settings);\r\n\r\n if (orgInterface.method === InterfaceMethod.Ftp) {\r\n await this.validateMyFtp();\r\n if (!this.state.ftpSuccess) {\r\n return;\r\n }\r\n }\r\n\r\n if (orgInterface.method === InterfaceMethod.Sftp) {\r\n await this.validateMySftp();\r\n if (!this.state.sftpSuccess) {\r\n return;\r\n }\r\n }\r\n\r\n this.setState({ loading: true });\r\n const result = await saveOrganizationInterface(orgInterface);\r\n this.setState({ loading: false });\r\n\r\n if (result.IsSuccess) {\r\n this.props.showNotification(\r\n i18n.t('notification.digiMessageFor') +\r\n this.text().title.toLowerCase() +\r\n i18n.t('notification.saved'),\r\n 'success'\r\n );\r\n this.props.history.goBack();\r\n } else\r\n this.props.showNotification(\r\n i18n.t('notification.somethingWentWrongWhileSaving') + mapError(result.Errors),\r\n 'error'\r\n );\r\n };\r\n\r\n validate = () => {};\r\n\r\n text = () => getInterfaceText(this.state.interface?.type);\r\n\r\n public render() {\r\n const methods = getInterfaceMethods(this.state.interface?.type);\r\n const formats = getInterfaceFormats(this.state.interface?.type);\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {this.text().title}\r\n \r\n \r\n {t => (\r\n \r\n this.cancelEdit()}>\r\n {t('tooltip.Cancel')}\r\n \r\n this.save()}>{t('tooltip.Save')}\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n {methods.map(method => (\r\n \r\n this.setMethod(method.key)}>\r\n {method.description}\r\n \r\n \r\n ))}\r\n \r\n\r\n
\r\n {this.state.interface?.method === InterfaceMethod.LtxFtp && (\r\n \r\n {t => (\r\n \r\n {t('software.useFollowingInfoToEnter')}\r\n
\r\n {t('account.userName')}: {this.getLtxUserName()}\r\n
\r\n
\r\n {t('account.password')}: \r\n •••••••••\r\n
\r\n
\r\n )}\r\n
\r\n )}\r\n {this.state.interface?.method === InterfaceMethod.Sftp && (\r\n
\r\n this.setSetting(name, value)}\r\n />\r\n
\r\n {this.state.loadingSftpAccess && (\r\n \r\n
\r\n \r\n
\r\n \r\n {t =>
{t('software.triesToConnToSFTP')}
}\r\n
\r\n
\r\n )}\r\n {this.state.sftpTested && !this.state.sftpSuccess && (\r\n \r\n
\r\n \r\n
\r\n \r\n {t =>
{t('software.cannotReachYourSFTP')}
}\r\n
\r\n
\r\n )}\r\n {this.state.sftpTested && this.state.sftpSuccess && (\r\n \r\n
\r\n \r\n
\r\n \r\n {t =>
{t('software.canReachYourSFTP')}
}\r\n
\r\n
\r\n )}\r\n
\r\n
\r\n this.validateMySftp()}>\r\n Valideren\r\n \r\n
\r\n
\r\n )}\r\n {this.state.interface?.method === InterfaceMethod.Ftp && (\r\n
\r\n this.setSetting(name, value)}\r\n />\r\n
\r\n {this.state.loadingFtpAccess && (\r\n \r\n
\r\n \r\n
\r\n \r\n {t =>
{t('software.triesToConnToFTP')}
}\r\n
\r\n
\r\n )}\r\n {this.state.ftpTested && !this.state.ftpSuccess && (\r\n \r\n
\r\n \r\n
\r\n \r\n {t =>
{t('software.cannotReachYourFTP')}
}\r\n
\r\n
\r\n )}\r\n {this.state.ftpTested && this.state.ftpSuccess && (\r\n \r\n
\r\n \r\n
\r\n \r\n {t =>
{t('software.canReachYourFTP')}
}\r\n
\r\n
\r\n )}\r\n
\r\n
\r\n this.validateMyFtp()}>\r\n Valideren\r\n \r\n
\r\n
\r\n )}\r\n {this.state.interface?.method === InterfaceMethod.Email && (\r\n
\r\n this.setSetting(name, value)}\r\n />\r\n
\r\n )}\r\n
\r\n {t => }\r\n \r\n {formats.map(format => (\r\n \r\n this.setFormat(format)}>\r\n {format}\r\n \r\n \r\n ))}\r\n \r\n {this.state.interface?.type == InterfaceType.OrderReceive && (\r\n \r\n {formats.map(format => (\r\n \r\n \r\n {(format === 'LTX' || format === 'EANCOM') && '(zonder conversie)'}\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\nconst Label = styled('div')`\r\n font-weight: bold;\r\n margin: 6px;\r\n font-size: 1.15em;\r\n margin-top: 12px;\r\n`;\r\n\r\nconst Option = styled('div')`\r\n padding: 2px;\r\n border: 1px solid #d8d8d8;\r\n cursor: pointer;\r\n text-align: center;\r\n &.selected {\r\n font-weight: bold;\r\n }\r\n`;\r\n\r\nconst SubOption = styled('div')`\r\n padding: 0px;\r\n text-align: center;\r\n font-size: 0.85em;\r\n`;\r\n\r\nconst StatusCard = styled('div')`\r\n padding: 6px;\r\n`;\r\n\r\ntype StateProps = ReturnType;\r\nconst mapStateToProps = (state: ApplicationState) => ({\r\n organization: state.organizations.myOrganization,\r\n account: state.authentication.account,\r\n identifiers: state.organizations.myIdentifiers\r\n});\r\n\r\ntype DispatchProps = ReturnType;\r\nconst mapDispatchToProps = (dispatch: any) => ({\r\n showNotification: (message: string, type?: MessageType) =>\r\n dispatch(showNotification(message, type)),\r\n validateFtpAccess: (url: string, user: string, pass: string) =>\r\n dispatch(validateFtpAccessThunk(url, user, pass)),\r\n validateSftpAccess: (url: string, user: string, pass: string) => dispatch(validateSftpAccessThunk(url, user, pass))\r\n});\r\n\r\nexport default withRouter(connect(mapStateToProps, mapDispatchToProps)(SoftwareInterfacePage));\r\n","import React, { FC, useState } from 'react';\r\nimport styled from '@emotion/styled';\r\nimport { InterfaceMethod } from 'src/models/Stock';\r\nimport Chip from '@material-ui/core/Chip';\r\nimport { TextField } from '@material-ui/core';\r\nimport i18n from 'src/i18n';\r\n\r\ntype OwnProps = {\r\n typeSelectHandler: (type: string, specType?: string) => void;\r\n setPassword: (password: string) => void;\r\n setUserName: (userName: string) => void;\r\n setPortalName: (portalName: string) => void;\r\n setToken: (token: string) => void;\r\n setUrl: (url: string) => void;\r\n token: string;\r\n password: string;\r\n userName: string;\r\n portalName: string;\r\n url: string;\r\n};\r\n\r\ntype AllProps = OwnProps;\r\n\r\nconst SpecificInterfaceMethod: FC = props => {\r\n const [customType, setCustomType] = useState('');\r\n\r\n const specificMethods = ['DeEekhoorn', 'VertilinQ', 'ItsPerfect', 'LightAndLiving', 'DTP'];\r\n\r\n const customTypeHandler = (method: string) => {\r\n setCustomType(method);\r\n props.typeSelectHandler('Specific', method);\r\n };\r\n\r\n return (\r\n
\r\n
\r\n \r\n {specificMethods.map(method => (\r\n customTypeHandler(method)}\r\n />\r\n ))}\r\n \r\n
\r\n {customType === InterfaceMethod.DeEekhoorn && (\r\n
\r\n \r\n props.setUserName(e.target.value)}\r\n label=\"User name\"\r\n />\r\n props.setPassword(e.target.value)}\r\n label=\"Password\"\r\n style={{ marginTop: '1rem' }}\r\n type='password'\r\n />\r\n \r\n
\r\n )}\r\n {customType === InterfaceMethod.VertilinQ && (\r\n \r\n props.setUrl(e.target.value)}\r\n label=\"Url\"\r\n placeholder=\"(RPC endpoint)\"\r\n fullWidth\r\n />\r\n props.setToken(e.target.value)}\r\n label=\"Token\"\r\n fullWidth\r\n />\r\n \r\n )}\r\n {customType === InterfaceMethod.ItsPerfect && (\r\n \r\n props.setUrl(e.target.value)}\r\n label=\"Url\"\r\n placeholder={`(${i18n.t('tooltip.companyname')}.itsperfect.it)`}\r\n fullWidth\r\n />\r\n props.setToken(e.target.value)}\r\n label=\"Token\"\r\n fullWidth\r\n />\r\n \r\n )}\r\n {customType === InterfaceMethod.LightAndLiving && (\r\n \r\n props.setPortalName(e.target.value)}\r\n label=\"Portal Name\"\r\n fullWidth\r\n />\r\n props.setToken(e.target.value)}\r\n label=\"Service Licencse\"\r\n fullWidth\r\n />\r\n props.setUserName(e.target.value)}\r\n label=\"Username\"\r\n fullWidth\r\n />\r\n props.setPassword(e.target.value)}\r\n label=\"Password\"\r\n type='password'\r\n fullWidth\r\n />\r\n \r\n )}\r\n {customType === InterfaceMethod.DTP && (\r\n \r\n props.setUrl(e.target.value)}\r\n label=\"FTP Url\"\r\n fullWidth\r\n />\r\n props.setUserName(e.target.value)}\r\n label=\"FTP Username\"\r\n fullWidth\r\n />\r\n props.setPassword(e.target.value)}\r\n label=\"FTP Password\"\r\n type='password'\r\n fullWidth\r\n />\r\n \r\n )}\r\n
\r\n );\r\n};\r\n\r\nexport default SpecificInterfaceMethod;\r\n\r\nconst XSelectTypeContainer = styled.div`\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-evenly;\r\n & h6 {\r\n margin-bottom: 1rem;\r\n }\r\n`;\r\n\r\nconst XAuthInputs = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n margin-top: 1rem;\r\n width: 100%;\r\n`;\r\n","import React, { FC, useEffect } from 'react';\r\nimport styled from '@emotion/styled';\r\nimport { InterfaceMethod, InterfaceAuthentication } from 'src/models/Stock';\r\nimport { TextField, FormControl, Select, MenuItem } from '@material-ui/core';\r\nimport Chip from '@material-ui/core/Chip';\r\nimport SpecificInterfaceMethod from './uploadStockTypes/SpecificInterfaceMethod';\r\n\r\ntype OwnProps = {\r\n setInterfaceMethod: (interfaceMethod: string) => void;\r\n setInterfaceAuthentication: (interfaceAuthentication: string) => void;\r\n typeSelectHandler: (type: string, specType?: string) => void;\r\n setUrl: (url: string) => void;\r\n setPassword: (password: string) => void;\r\n setUserName: (userName: string) => void;\r\n setPortalName: (portalName: string) => void;\r\n setAutoUpdate: (autoUpdate: boolean) => void;\r\n setUpdateTimeInterval: (updateTimeInterval: string) => void;\r\n setToken: (token: string) => void;\r\n uploadType: string;\r\n url: string;\r\n password: string;\r\n userName: string;\r\n portalName: string;\r\n token: string;\r\n autoUpdate: boolean;\r\n updateTimeInterval: string;\r\n interfaceAuthentication: string;\r\n};\r\n\r\nconst StockInterface: FC = props => {\r\n const selectUploadMethod = ['Ftp', 'Api', 'Specific'];\r\n\r\n useEffect(() => {\r\n !props.autoUpdate && props.setUpdateTimeInterval('');\r\n }, [props.autoUpdate]);\r\n\r\n return (\r\n \r\n
\r\n \r\n
Hoe bied jij de voorraad aan op Arxis?
\r\n \r\n {selectUploadMethod.map(method => (\r\n props.typeSelectHandler(method)}\r\n />\r\n ))}\r\n \r\n\r\n \r\n {props.uploadType === InterfaceMethod.Ftp && (\r\n
\r\n \r\n props.setUrl(e.target.value)}\r\n label=\"FTP Url\"\r\n fullWidth\r\n />\r\n \r\n \r\n \r\n props.setUserName(e.target.value)}\r\n label=\"FTP Username\"\r\n />\r\n \r\n \r\n props.setPassword(e.target.value)}\r\n label=\"FTP Password\"\r\n type='password'\r\n />\r\n \r\n \r\n
\r\n )}\r\n {props.uploadType === InterfaceMethod.Api && (\r\n
\r\n props.setUrl(e.target.value)}\r\n label=\"Full Url\"\r\n fullWidth\r\n />\r\n \r\n Select type of authentication:\r\n \r\n props.setInterfaceAuthentication(e.target.value)}>\r\n {Object.keys(InterfaceAuthentication).map(key => (\r\n \r\n {InterfaceAuthentication[key]}\r\n \r\n ))}\r\n \r\n \r\n \r\n {props.interfaceAuthentication === InterfaceAuthentication.UsernamePassword && (\r\n \r\n props.setUserName(e.target.value)}\r\n label=\"User name\"\r\n />\r\n props.setPassword(e.target.value)}\r\n label=\"Password\"\r\n style={{ marginTop: '1rem' }}\r\n type='password'\r\n />\r\n \r\n )}\r\n {props.interfaceAuthentication === InterfaceAuthentication.BasicAuth && (\r\n \r\n props.setUserName(e.target.value)}\r\n label=\"User name\"\r\n />\r\n props.setPassword(e.target.value)}\r\n label=\"Password\"\r\n style={{ marginTop: '1rem' }}\r\n type='password'\r\n />\r\n \r\n )}\r\n {props.interfaceAuthentication === InterfaceAuthentication.JWTAuth && (\r\n props.setToken(e.target.value)}\r\n label=\"Token\"\r\n fullWidth\r\n style={{ marginTop: '1rem' }}\r\n />\r\n )}\r\n
\r\n )}\r\n {props.uploadType === 'Specific' && (\r\n \r\n )}\r\n
\r\n
\r\n
\r\n \r\n );\r\n};\r\n\r\nexport default StockInterface;\r\n\r\nconst XContent = styled.div`\r\n padding: 0 2rem;\r\n display: flex;\r\n flex-direction: column;\r\n justify-content: start;\r\n margin-bottom: 1rem;\r\n background-color: white;\r\n border-radius: 6px;\r\n`;\r\n\r\nconst XSelectTypeContainer = styled.div`\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-evenly;\r\n & h6 {\r\n margin-bottom: 1rem;\r\n }\r\n`;\r\n\r\nconst XSelectTypeBtn = styled.div`\r\n width: 7rem;\r\n border: 1px solid black;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n cursor: pointer;\r\n\r\n & h6 {\r\n margin: 0.5rem;\r\n }\r\n\r\n & .selected {\r\n font-weight: bold;\r\n }\r\n`;\r\n\r\nconst XTypeContainer = styled.div`\r\n margin-top: 2rem;\r\n`;\r\n\r\nconst XTextInput = styled.div`\r\n margin-bottom: 1rem;\r\n`;\r\n\r\nconst XAuthInputs = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n margin-top: 1rem;\r\n width: 75%;\r\n`;\r\n","import React, { FC, useEffect, useState } from 'react';\r\nimport { RouteComponentProps } from 'react-router-dom';\r\nimport { connect } from 'react-redux';\r\nimport styled from '@emotion/styled';\r\nimport { TextField } from '@material-ui/core';\r\nimport { ApplicationState } from 'src/store';\r\nimport { FileFormat } from 'src/models/FileFormat';\r\nimport { OrganizationModel } from 'src/models/Organization';\r\nimport * as stockActions from 'src/store/stocks/actions';\r\nimport * as organizationActions from 'src/store/organizations/actions';\r\nimport { AddStockFormData } from 'src/store/stocks/types';\r\nimport { InterfaceType } from 'src/models/Stock';\r\nimport { ApiResult } from 'src/helpers/apiClient';\r\nimport { XSecActionButton, XSubmitButton } from 'src/components/layout/XActionButton';\r\nimport { showNotification } from 'src/store/layout/actions';\r\nimport { MessageType } from 'src/store/layout/types';\r\nimport { mapError } from 'src/helpers/errorMap';\r\nimport i18n from 'src/i18n';\r\nimport { Translation } from 'react-i18next';\r\nimport ErrorBoundary from 'src/components/shared/ErrorBoundary';\r\nimport XFileFormatSelect from 'src/components/domain/XFileFormatSelect';\r\nimport XPaperHeader from 'src/components/layout/XPaperHeader';\r\nimport { XPaper } from 'src/components/layout/XPaper';\r\nimport XPageContent from 'src/components/layout/XPageContent';\r\nimport StockInterface from './StockInterface';\r\n\r\ntype StateProps = {\r\n fileFormats: FileFormat[];\r\n myOrganization?: OrganizationModel;\r\n};\r\n\r\ntype DispatchProps = {\r\n getFileFormats: () => void;\r\n getMyOrganization: () => void;\r\n addStock: (data: AddStockFormData) => Promise;\r\n showNotification: (message: string, type?: MessageType) => void;\r\n};\r\n\r\ntype AllProps = StateProps & DispatchProps & RouteComponentProps;\r\n\r\nconst AddStockPage: FC = props => {\r\n const [fileFormatId, setFileFormatId] = useState('');\r\n const [fileFormatVersionId, setFileFormatVersionId] = useState('');\r\n const [title, setTitle] = useState('');\r\n const [description, setDescription] = useState('');\r\n const [organizationId] = useState(`${props.myOrganization?.organization.id}`);\r\n const [interfaceType] = useState(InterfaceType.StockSend);\r\n const [interfaceMethod, setInterfaceMethod] = useState('');\r\n const [interfaceAuthentication, setInterfaceAuthentication] = useState('None');\r\n const [url, setUrl] = useState('');\r\n const [userName, setUserName] = useState('');\r\n const [portalName, setPortalName] = useState('');\r\n const [password, setPassword] = useState('');\r\n const [token, setToken] = useState('');\r\n const [autoUpdate, setAutoUpdate] = useState(false);\r\n const [updateTimeInterval, setUpdateTimeInterval] = useState('');\r\n const [uploadType, setUploadType] = useState('');\r\n\r\n const availableFormats = ['IDM', 'CSV', 'eCat', 'LTX', 'Artex'];\r\n\r\n const formats = props.fileFormats.filter(ar => availableFormats.find(rm => rm === ar.name));\r\n\r\n useEffect(() => {\r\n props.getFileFormats();\r\n props.getMyOrganization();\r\n }, []);\r\n\r\n useEffect(() => {\r\n props.fileFormats.map(\r\n f =>\r\n f.versions.length <= 1 &&\r\n f.versions.map(v => v.fileFormatId === fileFormatId && setFileFormatVersionId(v.id))\r\n );\r\n }, [fileFormatId]);\r\n\r\n const onChangeType = (event: any) => {\r\n setFileFormatId(event.target.value);\r\n };\r\n\r\n const onChangeVersion = (event: any) => {\r\n setFileFormatVersionId(event.target.value);\r\n };\r\n\r\n const typeSelectHandler = (type: string, specType?: string) => {\r\n if (type !== 'Specific') {\r\n setUploadType(type);\r\n setInterfaceMethod(type);\r\n } else {\r\n setUploadType('Specific');\r\n specType && setInterfaceMethod(specType);\r\n }\r\n };\r\n\r\n const addStock = async (e: any) => {\r\n e.preventDefault();\r\n const apiResult = await props.addStock({\r\n organizationId,\r\n title,\r\n description,\r\n fileFormatId,\r\n fileFormatVersionId,\r\n interfaceType,\r\n interfaceMethod,\r\n interfaceAuthentication,\r\n settings: {\r\n Url: url,\r\n Username: userName,\r\n Password: password,\r\n PortalName: portalName,\r\n Token: token,\r\n AutoUpdate: autoUpdate,\r\n UpdateTimeInterval: updateTimeInterval\r\n }\r\n });\r\n if (apiResult.IsSuccess) {\r\n props.history.push(`/app/my/stocks/edit/${apiResult.JsonResponse.entityId}`);\r\n } else {\r\n props.showNotification('Error' + mapError(apiResult.Errors), 'error');\r\n }\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n {t => (\r\n \r\n setTitle(e.target.value)}\r\n style={{ marginBottom: '1rem' }}\r\n label={t('tooltip.Title')}>\r\n setDescription(e.target.value)}\r\n label={t('tooltip.Description')}\r\n style={{ marginBottom: '1rem' }}\r\n multiline\r\n rows={1}\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 {!!uploadType && uploadType !== 'Specific' && (\r\n \r\n )}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n {t => (\r\n \r\n props.history.goBack()}>\r\n {t('tooltip.Cancel')}\r\n \r\n \r\n {t('stock.saveStock')}\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\nconst mapStateToProps = (state: ApplicationState): StateProps => {\r\n return {\r\n fileFormats: state.stocks.fileFormats.sort((a, b) => a.name.localeCompare(b.name)),\r\n myOrganization: state.organizations.myOrganization\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch: any): DispatchProps => ({\r\n getFileFormats: () => dispatch(stockActions.getFileFormatsThunk()),\r\n addStock: (data: AddStockFormData) => dispatch(stockActions.addStockThunk(data)),\r\n getMyOrganization: () => dispatch(organizationActions.getMyOrganizationThunk()),\r\n showNotification: (message: string, type?: MessageType) =>\r\n dispatch(showNotification(message, type))\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(AddStockPage);\r\n\r\nconst XNewStock = styled.div`\r\n height: fit-content;\r\n border-radius: 6px;\r\n background-color: white;\r\n`;\r\n\r\nconst XContent = styled.div`\r\n padding: 0 2rem;\r\n height: 100%;\r\n display: flex;\r\n flex-direction: column;\r\n justify-content: start;\r\n\r\n & p {\r\n margin: 0.25rem 0;\r\n }\r\n`;\r\n\r\nconst XStockInputs = styled.div`\r\n margin-bottom: 2rem;\r\n display: flex;\r\n flex-direction: column;\r\n`;\r\n\r\nconst XButtonsContainer = styled.div`\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n margin-top: auto;\r\n`;\r\n","import React, { FC, useEffect, useState } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { useHistory } from 'react-router-dom';\r\nimport styled from '@emotion/styled';\r\nimport { TextField } from '@material-ui/core';\r\nimport { XActionButton } from 'src/components/layout/XActionButton';\r\nimport {\r\n InterfaceAuthentication,\r\n InterfaceType,\r\n InterfaceMethod,\r\n InterfaceSettingsKey,\r\n StockModel\r\n} from 'src/models/Stock';\r\nimport { saveStockInterface } from 'src/store/stocks/api';\r\nimport { ApplicationState } from 'src/store';\r\nimport { showNotification } from 'src/store/layout/actions';\r\nimport * as stockActions from 'src/store/stocks/actions';\r\nimport { ApiResult } from 'src/helpers/apiClient';\r\nimport { MessageType } from 'src/store/layout/types';\r\nimport { mapError } from 'src/helpers/errorMap';\r\n\r\ntype StateProps = {\r\n stock?: StockModel;\r\n};\r\n\r\ntype OwnProps = {\r\n stockId?: string;\r\n};\r\n\r\ntype DispatchProps = {\r\n showNotification: (message: string, type?: MessageType) => void;\r\n getStockById: (id: string) => Promise;\r\n};\r\n\r\ntype AllProps = OwnProps & DispatchProps & StateProps;\r\n\r\nconst FTPInterfaceMethod: FC = props => {\r\n const [userName, setUserName] = useState('');\r\n const [password, setPassword] = useState('');\r\n const [url, setUrl] = useState('');\r\n\r\n const history = useHistory();\r\n\r\n useEffect(() => {\r\n props.stockId &&\r\n props.getStockById(props.stockId).then(() => {\r\n if (!!props.stock?.interfaces.length) {\r\n if (props.stock?.interfaces[0].method === InterfaceMethod.Ftp) {\r\n setUrl(`${props.stock?.interfaces[0].settings.Url}`);\r\n setUserName(`${props.stock?.interfaces[0].settings.Username}`);\r\n setPassword(`${props.stock?.interfaces[0].settings.Password}`);\r\n }\r\n }\r\n });\r\n }, []);\r\n\r\n const stockInterface = {\r\n method: InterfaceMethod.Ftp,\r\n type: InterfaceType.StockSend,\r\n authentication: InterfaceAuthentication.None,\r\n id: props.stock ? (props.stock.interfaces.length > 0 ? props.stock.interfaces[0].id : '') : '',\r\n settings: {\r\n [InterfaceSettingsKey.Url]: url,\r\n [InterfaceSettingsKey.Username]: userName,\r\n [InterfaceSettingsKey.Password]: password,\r\n [InterfaceSettingsKey.Token]: '',\r\n [InterfaceSettingsKey.PortalName]: ''\r\n }\r\n };\r\n\r\n const saveInterface = async () => {\r\n const apiResult = await saveStockInterface(stockInterface, props.stockId);\r\n if (apiResult.IsSuccess) {\r\n history.push(`/app/my/stocks/edit/${props.stockId}`);\r\n } else {\r\n props.showNotification('Error' + mapError(apiResult.Errors), 'error');\r\n }\r\n };\r\n\r\n return (\r\n
\r\n \r\n setUrl(e.target.value)} label=\"FTP Url\" fullWidth />\r\n \r\n
\r\n \r\n setUserName(e.target.value)}\r\n label=\"FTP Username\"\r\n />\r\n \r\n \r\n setPassword(e.target.value)}\r\n label=\"FTP Password\"\r\n type='password'\r\n />\r\n \r\n
\r\n
\r\n \r\n Save\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nconst mapStateToProps = (state: ApplicationState): StateProps => {\r\n return {\r\n stock: state.stocks.data.detail\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch: any): DispatchProps => ({\r\n showNotification: (message: string, type?: MessageType) =>\r\n dispatch(showNotification(message, type)),\r\n getStockById: (id: string) => dispatch(stockActions.getStockThunk(id))\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(FTPInterfaceMethod);\r\n\r\nconst XTextInput = styled.div`\r\n margin-bottom: 1rem;\r\n`;\r\n","import React, { FC, useEffect, useState } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { useHistory } from 'react-router-dom';\r\nimport styled from '@emotion/styled';\r\nimport { FormControl, MenuItem, Select, TextField } from '@material-ui/core';\r\nimport { XActionButton } from 'src/components/layout/XActionButton';\r\nimport {\r\n InterfaceAuthentication,\r\n InterfaceType,\r\n InterfaceMethod,\r\n InterfaceSettingsKey,\r\n StockModel\r\n} from 'src/models/Stock';\r\nimport { saveStockInterface } from 'src/store/stocks/api';\r\nimport { ApplicationState } from 'src/store';\r\nimport { showNotification } from 'src/store/layout/actions';\r\nimport * as stockActions from 'src/store/stocks/actions';\r\nimport { ApiResult } from 'src/helpers/apiClient';\r\nimport { MessageType } from 'src/store/layout/types';\r\nimport { mapError } from 'src/helpers/errorMap';\r\n\r\ntype StateProps = {\r\n stock?: StockModel;\r\n};\r\n\r\ntype OwnProps = {\r\n stockId?: string;\r\n};\r\n\r\ntype DispatchProps = {\r\n showNotification: (message: string, type?: MessageType) => void;\r\n getStockById: (id: string) => Promise;\r\n};\r\n\r\ntype AllProps = OwnProps & DispatchProps & StateProps;\r\n\r\nconst ApiInterfaceMethod: FC = props => {\r\n const [url, setUrl] = useState('');\r\n const [authentication, setAuthentication] = useState(`${InterfaceAuthentication.None}`);\r\n const [userName, setUserName] = useState('');\r\n const [password, setPassword] = useState('');\r\n const [token, setToken] = useState('');\r\n\r\n const history = useHistory();\r\n\r\n useEffect(() => {\r\n props.stockId &&\r\n props.getStockById(props.stockId).then(() => {\r\n if (!!props.stock?.interfaces.length) {\r\n if (props.stock?.interfaces[0].method === InterfaceMethod.Api) {\r\n setUrl(`${props.stock?.interfaces[0].settings.Url}`);\r\n setAuthentication(`${props.stock?.interfaces[0].authentication}`);\r\n setUserName(`${props.stock?.interfaces[0].settings.Username}`);\r\n setPassword(`${props.stock?.interfaces[0].settings.Password}`);\r\n setToken(`${props.stock?.interfaces[0].settings.Token}`);\r\n }\r\n }\r\n });\r\n }, []);\r\n\r\n const onChangeHanlder = (e: any) => {\r\n setAuthentication(e.target.value);\r\n };\r\n\r\n const stockInterface = {\r\n method: InterfaceMethod.Api,\r\n type: InterfaceType.StockSend,\r\n authentication: authentication,\r\n id: props.stock ? (props.stock.interfaces.length > 0 ? props.stock.interfaces[0].id : '') : '',\r\n settings: {\r\n [InterfaceSettingsKey.Url]: url,\r\n [InterfaceSettingsKey.Username]: userName,\r\n [InterfaceSettingsKey.Password]: password,\r\n [InterfaceSettingsKey.Token]: token,\r\n [InterfaceSettingsKey.PortalName]: ''\r\n }\r\n };\r\n\r\n const saveInterface = async () => {\r\n const apiResult = await saveStockInterface(stockInterface, props.stockId);\r\n if (apiResult.IsSuccess) {\r\n history.push(`/app/my/stocks/edit/${props.stockId}`);\r\n } else {\r\n props.showNotification('Error' + mapError(apiResult.Errors), 'error');\r\n }\r\n };\r\n\r\n return (\r\n
\r\n setUrl(e.target.value)} label=\"Full Url\" fullWidth />\r\n \r\n Select type of authentication:\r\n \r\n \r\n \r\n \r\n {authentication === InterfaceAuthentication.UsernamePassword && (\r\n \r\n setUserName(e.target.value)}\r\n label=\"User name\"\r\n />\r\n setPassword(e.target.value)}\r\n label=\"Password\"\r\n type='password'\r\n style={{ marginTop: '1rem' }}\r\n />\r\n \r\n )}\r\n {authentication === InterfaceAuthentication.BasicAuth && (\r\n \r\n setUserName(e.target.value)}\r\n label=\"User name\"\r\n />\r\n setPassword(e.target.value)}\r\n label=\"Password\"\r\n style={{ marginTop: '1rem' }}\r\n type='password'\r\n />\r\n \r\n )}\r\n {authentication === InterfaceAuthentication.JWTAuth && (\r\n setToken(e.target.value)}\r\n label=\"Token\"\r\n fullWidth\r\n style={{ marginTop: '1rem' }}\r\n />\r\n )}\r\n
\r\n \r\n Save\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nconst mapStateToProps = (state: ApplicationState): StateProps => {\r\n return {\r\n stock: state.stocks.data.detail\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch: any): DispatchProps => ({\r\n showNotification: (message: string, type?: MessageType) =>\r\n dispatch(showNotification(message, type)),\r\n getStockById: (id: string) => dispatch(stockActions.getStockThunk(id))\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(ApiInterfaceMethod);\r\n\r\nconst XSelectAuth = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n margin-top: 1rem;\r\n`;\r\n\r\nconst XAuthInputs = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n margin-top: 1rem;\r\n width: 50%;\r\n`;\r\n","import React, { FC, useEffect, useState } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { useHistory } from 'react-router-dom';\r\nimport styled from '@emotion/styled';\r\nimport { TextField } from '@material-ui/core';\r\nimport { XActionButton } from 'src/components/layout/XActionButton';\r\nimport {\r\n InterfaceAuthentication,\r\n InterfaceType,\r\n InterfaceMethod,\r\n InterfaceSettingsKey,\r\n StockModel\r\n} from 'src/models/Stock';\r\nimport { saveStockInterface } from 'src/store/stocks/api';\r\nimport { ApplicationState } from 'src/store';\r\nimport { showNotification } from 'src/store/layout/actions';\r\nimport * as stockActions from 'src/store/stocks/actions';\r\nimport { ApiResult } from 'src/helpers/apiClient';\r\nimport { MessageType } from 'src/store/layout/types';\r\nimport { mapError } from 'src/helpers/errorMap';\r\nimport i18n from 'src/i18n';\r\n\r\ntype StateProps = {\r\n stock?: StockModel;\r\n};\r\n\r\ntype OwnProps = {\r\n stockId?: string;\r\n};\r\n\r\ntype DispatchProps = {\r\n showNotification: (message: string, type?: MessageType) => void;\r\n getStockById: (id: string) => Promise;\r\n};\r\n\r\ntype AllProps = OwnProps & DispatchProps & StateProps;\r\n\r\nconst DeEekhoornApiInterfaceMethod: FC = props => {\r\n const [authentication, setAuthentication] = useState(`${InterfaceAuthentication.BasicAuth}`);\r\n const [userName, setUserName] = useState('');\r\n const [password, setPassword] = useState('');\r\n\r\n const history = useHistory();\r\n\r\n useEffect(() => {\r\n props.stockId &&\r\n props.getStockById(props.stockId).then(() => {\r\n if (!!props.stock?.interfaces.length) {\r\n if (props.stock?.interfaces[0].method === InterfaceMethod.DeEekhoorn) {\r\n setAuthentication(`${props.stock?.interfaces[0].authentication}`);\r\n setUserName(`${props.stock?.interfaces[0].settings.Username}`);\r\n setPassword(`${props.stock?.interfaces[0].settings.Password}`);\r\n }\r\n }\r\n });\r\n }, []);\r\n\r\n const stockInterface = {\r\n method: InterfaceMethod.DeEekhoorn,\r\n type: InterfaceType.StockSend,\r\n authentication: authentication,\r\n id: props.stock ? (props.stock.interfaces.length > 0 ? props.stock.interfaces[0].id : '') : '',\r\n settings: {\r\n [InterfaceSettingsKey.Url]: '',\r\n [InterfaceSettingsKey.Username]: userName,\r\n [InterfaceSettingsKey.Password]: password,\r\n [InterfaceSettingsKey.Token]: '',\r\n [InterfaceSettingsKey.PortalName]: ''\r\n }\r\n };\r\n\r\n const saveInterface = async () => {\r\n const apiResult = await saveStockInterface(stockInterface, props.stockId);\r\n if (apiResult.IsSuccess) {\r\n history.push(`/app/my/stocks/edit/${props.stockId}`);\r\n } else {\r\n props.showNotification('Error' + mapError(apiResult.Errors), 'error');\r\n }\r\n };\r\n\r\n return (\r\n
\r\n \r\n setUserName(e.target.value)} label=\"User name\" />\r\n setPassword(e.target.value)}\r\n label=\"Password\"\r\n style={{ marginTop: '1rem' }}\r\n type='password'\r\n />\r\n \r\n
\r\n \r\n Save\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nconst mapStateToProps = (state: ApplicationState): StateProps => {\r\n return {\r\n stock: state.stocks.data.detail\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch: any): DispatchProps => ({\r\n showNotification: (message: string, type?: MessageType) =>\r\n dispatch(showNotification(message, type)),\r\n getStockById: (id: string) => dispatch(stockActions.getStockThunk(id))\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(DeEekhoornApiInterfaceMethod);\r\n\r\nconst XAuthInputs = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n margin-top: 1rem;\r\n width: 50%;\r\n`;\r\n","import React, { FC, useEffect, useState } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { useHistory } from 'react-router-dom';\r\nimport styled from '@emotion/styled';\r\nimport { TextField } from '@material-ui/core';\r\nimport { XActionButton } from 'src/components/layout/XActionButton';\r\nimport {\r\n InterfaceAuthentication,\r\n InterfaceType,\r\n InterfaceMethod,\r\n InterfaceSettingsKey,\r\n StockModel\r\n} from 'src/models/Stock';\r\nimport * as stockActions from 'src/store/stocks/actions';\r\nimport { saveStockInterface } from 'src/store/stocks/api';\r\nimport { ApplicationState } from 'src/store';\r\nimport { showNotification } from 'src/store/layout/actions';\r\nimport { ApiResult } from 'src/helpers/apiClient';\r\nimport { MessageType } from 'src/store/layout/types';\r\nimport { mapError } from 'src/helpers/errorMap';\r\nimport i18n from 'src/i18n';\r\n\r\ntype StateProps = {\r\n stock?: StockModel;\r\n};\r\n\r\ntype OwnProps = {\r\n stockId?: string;\r\n};\r\n\r\ntype DispatchProps = {\r\n showNotification: (message: string, type?: MessageType) => void;\r\n getStockById: (id: string) => Promise;\r\n};\r\n\r\ntype AllProps = OwnProps & DispatchProps & StateProps;\r\n\r\nconst DeEekhoornApiInterfaceMethod: FC = props => {\r\n const [url, setUrl] = useState('');\r\n const [authentication, setAuthentication] = useState(`${InterfaceAuthentication.None}`);\r\n const [token, setToken] = useState('');\r\n const history = useHistory();\r\n\r\n useEffect(() => {\r\n props.stockId &&\r\n props.getStockById(props.stockId).then(() => {\r\n if (!!props.stock?.interfaces.length) {\r\n if (props.stock?.interfaces[0].method === InterfaceMethod.ItsPerfect) {\r\n setUrl(`${props.stock?.interfaces[0].settings.Url}`);\r\n setAuthentication(`${props.stock?.interfaces[0].authentication}`);\r\n setToken(`${props.stock?.interfaces[0].settings.Token}`);\r\n }\r\n }\r\n });\r\n }, []);\r\n\r\n const stockInterface = {\r\n method: InterfaceMethod.ItsPerfect,\r\n type: InterfaceType.StockSend,\r\n authentication: authentication,\r\n id: props.stock ? (props.stock.interfaces.length > 0 ? props.stock.interfaces[0].id : '') : '',\r\n settings: {\r\n [InterfaceSettingsKey.Url]: url,\r\n [InterfaceSettingsKey.Username]: '',\r\n [InterfaceSettingsKey.Password]: '',\r\n [InterfaceSettingsKey.Token]: token,\r\n [InterfaceSettingsKey.PortalName]: ''\r\n }\r\n };\r\n\r\n const saveInterface = async () => {\r\n const apiResult = await saveStockInterface(stockInterface, props.stockId);\r\n if (apiResult.IsSuccess) {\r\n history.push(`/app/my/stocks/edit/${props.stockId}`);\r\n } else {\r\n props.showNotification('Error' + mapError(apiResult.Errors), 'error');\r\n }\r\n };\r\n\r\n return (\r\n
\r\n setUrl(e.target.value)}\r\n label=\"Url\"\r\n placeholder={`(${i18n.t('tooltip.companyname')}.itsperfect.it)`}\r\n fullWidth\r\n />\r\n setToken(e.target.value)} label=\"Token\" fullWidth />\r\n
\r\n \r\n Save\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nconst mapStateToProps = (state: ApplicationState): StateProps => {\r\n return {\r\n stock: state.stocks.data.detail\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch: any): DispatchProps => ({\r\n showNotification: (message: string, type?: MessageType) =>\r\n dispatch(showNotification(message, type)),\r\n getStockById: (id: string) => dispatch(stockActions.getStockThunk(id))\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(DeEekhoornApiInterfaceMethod);\r\n\r\nconst XAuthInputs = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n margin-top: 1rem;\r\n width: 50%;\r\n`;\r\n","import React, { FC, useEffect, useState } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { useHistory } from 'react-router-dom';\r\nimport styled from '@emotion/styled';\r\nimport { FormControl, MenuItem, Select, TextField } from '@material-ui/core';\r\nimport { XActionButton } from 'src/components/layout/XActionButton';\r\nimport {\r\n InterfaceAuthentication,\r\n InterfaceType,\r\n InterfaceMethod,\r\n InterfaceSettingsKey,\r\n StockModel\r\n} from 'src/models/Stock';\r\nimport { saveStockInterface } from 'src/store/stocks/api';\r\nimport { ApplicationState } from 'src/store';\r\nimport { showNotification } from 'src/store/layout/actions';\r\nimport * as stockActions from 'src/store/stocks/actions';\r\nimport { ApiResult } from 'src/helpers/apiClient';\r\nimport { MessageType } from 'src/store/layout/types';\r\nimport { mapError } from 'src/helpers/errorMap';\r\n\r\ntype StateProps = {\r\n stock?: StockModel;\r\n};\r\n\r\ntype OwnProps = {\r\n stockId?: string;\r\n};\r\n\r\ntype DispatchProps = {\r\n showNotification: (message: string, type?: MessageType) => void;\r\n getStockById: (id: string) => Promise;\r\n};\r\n\r\ntype AllProps = OwnProps & DispatchProps & StateProps;\r\n\r\nconst VertilinQApiInterfaceMethod: FC = props => {\r\n const [url, setUrl] = useState('');\r\n const [authentication, setAuthentication] = useState(`${InterfaceAuthentication.JWTAuth}`);\r\n const [token, setToken] = useState('');\r\n\r\n const history = useHistory();\r\n\r\n useEffect(() => {\r\n props.stockId &&\r\n props.getStockById(props.stockId).then(() => {\r\n if (!!props.stock?.interfaces.length) {\r\n if (props.stock?.interfaces[0].method === InterfaceMethod.VertilinQ) {\r\n setUrl(`${props.stock?.interfaces[0].settings.Url}`);\r\n setAuthentication(`${props.stock?.interfaces[0].authentication}`);\r\n setToken(`${props.stock?.interfaces[0].settings.Token}`);\r\n }\r\n }\r\n });\r\n }, []);\r\n\r\n const onChangeHanlder = (e: any) => {\r\n setAuthentication(e.target.value);\r\n };\r\n\r\n const stockInterface = {\r\n method: InterfaceMethod.VertilinQ,\r\n type: InterfaceType.StockSend,\r\n authentication: authentication,\r\n id: props.stock ? (props.stock.interfaces.length > 0 ? props.stock.interfaces[0].id : '') : '',\r\n settings: {\r\n [InterfaceSettingsKey.Url]: url,\r\n [InterfaceSettingsKey.Username]: '',\r\n [InterfaceSettingsKey.Password]: '',\r\n [InterfaceSettingsKey.Token]: token,\r\n [InterfaceSettingsKey.PortalName]: ''\r\n }\r\n };\r\n\r\n const saveInterface = async () => {\r\n const apiResult = await saveStockInterface(stockInterface, props.stockId);\r\n if (apiResult.IsSuccess) {\r\n history.push(`/app/my/stocks/edit/${props.stockId}`);\r\n } else {\r\n props.showNotification('Error' + mapError(apiResult.Errors), 'error');\r\n }\r\n };\r\n\r\n return (\r\n
\r\n setUrl(e.target.value)}\r\n label=\"Url\"\r\n placeholder=\"(RPC endpoint)\"\r\n fullWidth\r\n />\r\n setToken(e.target.value)}\r\n label=\"Token\"\r\n fullWidth\r\n style={{ marginTop: '1rem' }}\r\n />\r\n
\r\n \r\n Save\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nconst mapStateToProps = (state: ApplicationState): StateProps => {\r\n return {\r\n stock: state.stocks.data.detail\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch: any): DispatchProps => ({\r\n showNotification: (message: string, type?: MessageType) =>\r\n dispatch(showNotification(message, type)),\r\n getStockById: (id: string) => dispatch(stockActions.getStockThunk(id))\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(VertilinQApiInterfaceMethod);\r\n\r\nconst XSelectAuth = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n margin-top: 1rem;\r\n`;\r\n\r\nconst XAuthInputs = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n margin-top: 1rem;\r\n width: 50%;\r\n`;\r\n","import React, { FC, useEffect, useState } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { useHistory } from 'react-router-dom';\r\nimport styled from '@emotion/styled';\r\nimport { TextField } from '@material-ui/core';\r\nimport { XActionButton } from 'src/components/layout/XActionButton';\r\nimport {\r\n InterfaceAuthentication,\r\n InterfaceType,\r\n InterfaceMethod,\r\n InterfaceSettingsKey,\r\n StockModel\r\n} from 'src/models/Stock';\r\nimport { saveStockInterface } from 'src/store/stocks/api';\r\nimport { ApplicationState } from 'src/store';\r\nimport { showNotification } from 'src/store/layout/actions';\r\nimport * as stockActions from 'src/store/stocks/actions';\r\nimport { ApiResult } from 'src/helpers/apiClient';\r\nimport { MessageType } from 'src/store/layout/types';\r\nimport { mapError } from 'src/helpers/errorMap';\r\nimport i18n from 'src/i18n';\r\n\r\ntype StateProps = {\r\n stock?: StockModel;\r\n};\r\n\r\ntype OwnProps = {\r\n stockId?: string;\r\n};\r\n\r\ntype DispatchProps = {\r\n showNotification: (message: string, type?: MessageType) => void;\r\n getStockById: (id: string) => Promise;\r\n};\r\n\r\ntype AllProps = OwnProps & DispatchProps & StateProps;\r\n\r\nconst LightAndLivingInterfaceMethod: FC = props => {\r\n const [authentication, setAuthentication] = useState(`${InterfaceAuthentication.None}`);\r\n const [userName, setUserName] = useState('');\r\n const [password, setPassword] = useState('');\r\n const [token, setToken] = useState('');\r\n const [portalName, setPortalName] = useState('');\r\n\r\n const history = useHistory();\r\n\r\n useEffect(() => {\r\n props.stockId &&\r\n props.getStockById(props.stockId).then(() => {\r\n if (!!props.stock?.interfaces.length) {\r\n if (props.stock?.interfaces[0].method === InterfaceMethod.LightAndLiving) {\r\n setUserName(`${props.stock?.interfaces[0].settings.Username}`);\r\n setPassword(`${props.stock?.interfaces[0].settings.Password}`);\r\n setPortalName(`${props.stock?.interfaces[0].settings.PortalName}`);\r\n setToken(`${props.stock?.interfaces[0].settings.Token}`);\r\n }\r\n }\r\n });\r\n }, []);\r\n\r\n const stockInterface = {\r\n method: InterfaceMethod.LightAndLiving,\r\n type: InterfaceType.StockSend,\r\n authentication: authentication,\r\n id: props.stock ? (props.stock.interfaces.length > 0 ? props.stock.interfaces[0].id : '') : '',\r\n settings: {\r\n [InterfaceSettingsKey.Url]: '',\r\n [InterfaceSettingsKey.Username]: userName,\r\n [InterfaceSettingsKey.Password]: password,\r\n [InterfaceSettingsKey.Token]: token,\r\n [InterfaceSettingsKey.PortalName]: portalName\r\n }\r\n };\r\n\r\n const saveInterface = async () => {\r\n const apiResult = await saveStockInterface(stockInterface, props.stockId);\r\n if (apiResult.IsSuccess) {\r\n history.push(`/app/my/stocks/edit/${props.stockId}`);\r\n } else {\r\n props.showNotification('Error' + mapError(apiResult.Errors), 'error');\r\n }\r\n };\r\n\r\n return (\r\n
\r\n setPortalName(e.target.value)}\r\n label=\"Portal Name\"\r\n placeholder=\"Name\"\r\n fullWidth\r\n />\r\n setToken(e.target.value)}\r\n label=\"Service license\"\r\n fullWidth\r\n />\r\n setUserName(e.target.value)}\r\n label=\"Username\"\r\n placeholder=\"Name\"\r\n fullWidth\r\n />\r\n setPassword(e.target.value)}\r\n label=\"Password\"\r\n fullWidth\r\n type='password'\r\n />\r\n
\r\n \r\n Save\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nconst mapStateToProps = (state: ApplicationState): StateProps => {\r\n return {\r\n stock: state.stocks.data.detail\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch: any): DispatchProps => ({\r\n showNotification: (message: string, type?: MessageType) =>\r\n dispatch(showNotification(message, type)),\r\n getStockById: (id: string) => dispatch(stockActions.getStockThunk(id))\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(LightAndLivingInterfaceMethod);\r\n\r\nconst XAuthInputs = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n margin-top: 1rem;\r\n width: 50%;\r\n`;\r\n","import React, { FC, useEffect, useState } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { useHistory } from 'react-router-dom';\r\nimport styled from '@emotion/styled';\r\nimport { TextField } from '@material-ui/core';\r\nimport { XActionButton } from 'src/components/layout/XActionButton';\r\nimport {\r\n InterfaceAuthentication,\r\n InterfaceType,\r\n InterfaceMethod,\r\n InterfaceSettingsKey,\r\n StockModel\r\n} from 'src/models/Stock';\r\nimport { saveStockInterface } from 'src/store/stocks/api';\r\nimport { ApplicationState } from 'src/store';\r\nimport { showNotification } from 'src/store/layout/actions';\r\nimport * as stockActions from 'src/store/stocks/actions';\r\nimport { ApiResult } from 'src/helpers/apiClient';\r\nimport { MessageType } from 'src/store/layout/types';\r\nimport { mapError } from 'src/helpers/errorMap';\r\n\r\ntype StateProps = {\r\n stock?: StockModel;\r\n};\r\n\r\ntype OwnProps = {\r\n stockId?: string;\r\n};\r\n\r\ntype DispatchProps = {\r\n showNotification: (message: string, type?: MessageType) => void;\r\n getStockById: (id: string) => Promise;\r\n};\r\n\r\ntype AllProps = OwnProps & DispatchProps & StateProps;\r\n\r\nconst DtpApiInterfaceMethod: FC = props => {\r\n const [userName, setUserName] = useState('');\r\n const [password, setPassword] = useState('');\r\n const [url, setUrl] = useState('');\r\n\r\n const history = useHistory();\r\n\r\n useEffect(() => {\r\n props.stockId &&\r\n props.getStockById(props.stockId).then(() => {\r\n if (!!props.stock?.interfaces.length) {\r\n if (props.stock?.interfaces[0].method === InterfaceMethod.DTP) {\r\n setUrl(`${props.stock?.interfaces[0].settings.Url}`);\r\n setUserName(`${props.stock?.interfaces[0].settings.Username}`);\r\n setPassword(`${props.stock?.interfaces[0].settings.Password}`);\r\n }\r\n }\r\n });\r\n }, []);\r\n\r\n const stockInterface = {\r\n method: InterfaceMethod.DTP,\r\n type: InterfaceType.StockSend,\r\n authentication: InterfaceAuthentication.None,\r\n id: props.stock ? (props.stock.interfaces.length > 0 ? props.stock.interfaces[0].id : '') : '',\r\n settings: {\r\n [InterfaceSettingsKey.Url]: url,\r\n [InterfaceSettingsKey.Username]: userName,\r\n [InterfaceSettingsKey.Password]: password,\r\n [InterfaceSettingsKey.Token]: '',\r\n [InterfaceSettingsKey.PortalName]: ''\r\n }\r\n };\r\n\r\n const saveInterface = async () => {\r\n const apiResult = await saveStockInterface(stockInterface, props.stockId);\r\n if (apiResult.IsSuccess) {\r\n history.push(`/app/my/stocks/edit/${props.stockId}`);\r\n } else {\r\n props.showNotification('Error' + mapError(apiResult.Errors), 'error');\r\n }\r\n };\r\n\r\n return (\r\n
\r\n \r\n setUrl(e.target.value)} label=\"FTP Url\" fullWidth />\r\n \r\n
\r\n \r\n setUserName(e.target.value)}\r\n label=\"FTP Username\"\r\n />\r\n \r\n \r\n setPassword(e.target.value)}\r\n label=\"FTP Password\"\r\n type='password'\r\n />\r\n \r\n
\r\n
\r\n \r\n Save\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nconst mapStateToProps = (state: ApplicationState): StateProps => {\r\n return {\r\n stock: state.stocks.data.detail\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch: any): DispatchProps => ({\r\n showNotification: (message: string, type?: MessageType) =>\r\n dispatch(showNotification(message, type)),\r\n getStockById: (id: string) => dispatch(stockActions.getStockThunk(id))\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(DtpApiInterfaceMethod);\r\n\r\nconst XTextInput = styled.div`\r\n margin-bottom: 1rem;\r\n`;\r\n","import React, { FC, useEffect, useState } from 'react';\r\nimport styled from '@emotion/styled';\r\nimport { InterfaceMethod } from 'src/models/Stock';\r\nimport DeEekhoornApiInterfaceMethod from './DeEekhoornApiInterfaceMethod';\r\nimport ItsPerfectApiInterfaceMethod from './ItsPerfectApiInterfaceMethod';\r\nimport VertilinQInterfaceMethod from './VertilinQApiInterfaceMethod';\r\nimport LightAndLivingInterfaceMethod from './LightAndLivingInterfaceMethod';\r\nimport Chip from '@material-ui/core/Chip';\r\nimport DtpApiInterfaceMethod from './DtpApiInterfaceMethod';\r\n\r\ntype OwnProps = {\r\n stockId?: string;\r\n method?: string;\r\n};\r\n\r\ntype AllProps = OwnProps;\r\n\r\nconst CustomInterfaceMethod: FC = ({ stockId, method }) => {\r\n const [customType, setCustomType] = useState('');\r\n\r\n useEffect(() => {\r\n method && setCustomType(method);\r\n }, []);\r\n\r\n const onClickHandler = (type: string) => {\r\n setCustomType(type);\r\n };\r\n\r\n return (\r\n
\r\n
\r\n \r\n onClickHandler('DeEekhoorn')}\r\n />\r\n onClickHandler('VertilinQ')}\r\n />\r\n onClickHandler('ItsPerfect')}\r\n />\r\n onClickHandler('LightAndLiving')}\r\n />\r\n onClickHandler('DTP')}\r\n />\r\n\r\n \r\n
\r\n {customType === InterfaceMethod.DeEekhoorn && ()}\r\n {customType === InterfaceMethod.VertilinQ && }\r\n {customType === InterfaceMethod.ItsPerfect && ()}\r\n {customType === InterfaceMethod.LightAndLiving && }\r\n {customType === InterfaceMethod.DTP && }\r\n
\r\n );\r\n};\r\n\r\nexport default CustomInterfaceMethod;\r\n\r\nconst XSelectTypeContainer = styled.div`\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-evenly;\r\n & h6 {\r\n margin-bottom: 1rem;\r\n }\r\n`;\r\n\r\nconst XSelectTypeBtn = styled.div`\r\n width: 7rem;\r\n border: 1px solid black;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n cursor: pointer;\r\n\r\n & h6 {\r\n margin: 0.5rem;\r\n }\r\n\r\n & .selected {\r\n font-weight: bold;\r\n }\r\n`;\r\n","import React, { FC, useEffect, useState } from 'react';\r\nimport { RouteComponentProps } from 'react-router-dom';\r\nimport styled from '@emotion/styled';\r\nimport { connect } from 'react-redux';\r\nimport * as stockActions from 'src/store/stocks/actions';\r\nimport { ApiResult } from 'src/helpers/apiClient';\r\nimport { ApplicationState } from 'src/store';\r\nimport { XContainer } from 'src/components/layout/XContainer';\r\nimport { InterfaceMethod, StockModel } from 'src/models/Stock';\r\nimport FTPInterfaceMethod from './uploadStockTypes/FTPInterfaceMethod';\r\nimport ApiInterfaceMethod from './uploadStockTypes/ApiInterfaceMethod';\r\nimport CustomInterfaceMethod from './uploadStockTypes/CustomInterfaceMethod';\r\nimport ErrorBoundary from 'src/components/shared/ErrorBoundary';\r\nimport Chip from '@material-ui/core/Chip';\r\n\r\ntype StateProps = {\r\n stock?: StockModel;\r\n};\r\n\r\ntype DispatchProps = {\r\n getStockById: (id: string) => Promise;\r\n};\r\n\r\ntype AllProps = StateProps & DispatchProps & RouteComponentProps<{ id?: string }>;\r\n\r\nconst EditStockInterfacePage: FC = props => {\r\n const [uploadType, setUploadType] = useState('');\r\n\r\n useEffect(() => {\r\n props.match.params.id &&\r\n props.getStockById(props.match.params.id).then(() => {\r\n if (!!props.stock?.interfaces.length) {\r\n if (props.stock?.interfaces[0].method === InterfaceMethod.DeEekhoorn) {\r\n setUploadType('Specific');\r\n } else if (props.stock?.interfaces[0].method === InterfaceMethod.VertilinQ) {\r\n setUploadType('Specific');\r\n } else if (props.stock?.interfaces[0].method === InterfaceMethod.ItsPerfect) {\r\n setUploadType('Specific');\r\n } else if (props.stock?.interfaces[0].method === InterfaceMethod.DTP) {\r\n setUploadType('Specific');\r\n } else {\r\n setUploadType(`${props.stock?.interfaces[0].method}`);\r\n }\r\n }\r\n });\r\n }, []);\r\n\r\n const onClickHandler = (type: string) => {\r\n setUploadType(type);\r\n };\r\n\r\n const stockId = props.match.params.id;\r\n\r\n const selectUploadMethod = ['Ftp', 'Api', 'Specific'];\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n
Hoe bied jij de voorraad aan op Arxis?
\r\n
\r\n Via\r\n
\r\n \r\n {selectUploadMethod.map(method => (\r\n onClickHandler(method)}\r\n />\r\n ))}\r\n \r\n \r\n {uploadType === InterfaceMethod.Ftp && }\r\n {uploadType === InterfaceMethod.Api && }\r\n {uploadType === 'Specific' && (\r\n \r\n )}\r\n \r\n
\r\n
\r\n \r\n
\r\n );\r\n};\r\n\r\nconst mapStateToProps = (state: ApplicationState): StateProps => {\r\n return {\r\n stock: state.stocks.data.detail\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch: any): DispatchProps => ({\r\n getStockById: (id: string) => dispatch(stockActions.getStockThunk(id))\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(EditStockInterfacePage);\r\n\r\nconst XStockInterface = styled.div`\r\n width: 32rem;\r\n height: 32rem;\r\n`;\r\n\r\nconst XContent = styled.div`\r\n padding: 2rem;\r\n display: flex;\r\n flex-direction: column;\r\n justify-content: start;\r\n margin-bottom: 1rem;\r\n background-color: white;\r\n border-radius: 6px;\r\n`;\r\n\r\nconst XSelectTypeContainer = styled.div`\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-evenly;\r\n & h6 {\r\n margin-bottom: 1rem;\r\n }\r\n`;\r\n\r\nconst XSelectTypeBtn = styled.div`\r\n width: 7rem;\r\n border: 1px solid black;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n cursor: pointer;\r\n\r\n & h6 {\r\n margin: 0.5rem;\r\n }\r\n\r\n & .selected {\r\n font-weight: bold;\r\n }\r\n`;\r\n\r\nconst XTypeContainer = styled.div`\r\n margin-top: 2rem;\r\n`;\r\n","import React from 'react';\r\nimport styled from '@emotion/styled';\r\nimport DownloadIcon from '@material-ui/icons/CloudDownloadOutlined';\r\nimport { Translation } from 'react-i18next';\r\nimport { connect } from 'react-redux';\r\nimport { RouteComponentProps } from 'react-router-dom';\r\nimport XNoContent from 'src/components/domain/XNoContent';\r\nimport XPageContent from 'src/components/layout/XPageContent';\r\nimport XPagination from 'src/components/layout/XPagination';\r\nimport { XPaper } from 'src/components/layout/XPaper';\r\nimport XPaperHeader from 'src/components/layout/XPaperHeader';\r\nimport { XRowCell } from 'src/components/layout/XRow';\r\nimport XScrollView from 'src/components/layout/XScrollView';\r\nimport XTable, { TableRow } from 'src/components/layout/XTable';\r\nimport { formatDateToString } from 'src/helpers/formatHelpers';\r\nimport i18n from 'src/i18n';\r\nimport { OrderMessage } from 'src/models/OrderMessage';\r\nimport { OrganizationType } from 'src/models/Organization';\r\nimport { ApplicationState } from 'src/store';\r\nimport { AuthenticationAccount } from 'src/store/authentication/types';\r\nimport { getOrderMessagesThunk } from 'src/store/data/actions';\r\nimport EmptyImage from 'src/style/images/empty.svg';\r\nimport ErrorBoundary from 'src/components/shared/ErrorBoundary';\r\n\r\ntype StateProps = {\r\n orderMessages: OrderMessage[];\r\n account: AuthenticationAccount;\r\n};\r\n\r\ntype DispatchProps = {\r\n getOrderMessages(): () => void;\r\n};\r\n\r\ntype OwnProps = {};\r\n\r\ntype State = {\r\n currentOffset: number;\r\n};\r\n\r\ntype AllProps = StateProps & DispatchProps & OwnProps & RouteComponentProps<{ direction?: string }>;\r\n\r\nclass CatalogsTrafficPage extends React.Component {\r\n constructor(props: AllProps) {\r\n super(props);\r\n this.state = {\r\n currentOffset: 0\r\n };\r\n }\r\n\r\n public componentDidMount() {\r\n this.props.getOrderMessages();\r\n }\r\n\r\n public render() {\r\n const pageSize = 20;\r\n const direction = this.props.match.params.direction;\r\n\r\n let title = i18n.t('traffic.rcvdCatalogs');\r\n let subtitle = i18n.t('traffic.receivedMessages');\r\n let organizationTitle = i18n.t('traffic.Sender');\r\n let predicate = x => x.fromOrganizationId !== this.props.account.organizationId;\r\n\r\n if (direction === 'out') {\r\n title = i18n.t('traffic.sentCatalogs');\r\n subtitle = i18n.t('traffic.allMessages');\r\n organizationTitle = i18n.t('traffic.Receiver');\r\n predicate = x => x.fromOrganizationId === this.props.account.organizationId;\r\n }\r\n\r\n const orderMessages = this.props.orderMessages.filter(predicate);\r\n\r\n const paged = orderMessages.slice(\r\n this.state.currentOffset,\r\n this.state.currentOffset + pageSize\r\n );\r\n\r\n if (this.props.account.organizationType === OrganizationType.Retailer) {\r\n if (direction === 'out') {\r\n return null;\r\n }\r\n }\r\n\r\n if (this.props.account.organizationType === OrganizationType.Supplier) {\r\n if (direction === 'in') {\r\n return null;\r\n }\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n\r\n {orderMessages.length === 0 ? (\r\n \r\n {t =>

{t('traffic.noMessageTraffic')}

}
\r\n
\r\n ) : (\r\n \r\n \r\n {t => (\r\n \r\n {paged.map(dm => (\r\n \r\n Arxis\r\n {dm.organizationName}\r\n {dm.type}\r\n {dm.fileName}\r\n\r\n \r\n {formatDateToString(dm.creationDate, true, true)}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ))}\r\n \r\n )}\r\n \r\n \r\n )}\r\n\r\n {orderMessages.length > pageSize && (\r\n this.setState({ currentOffset: i })}\r\n />\r\n )}\r\n \r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state: ApplicationState): StateProps => {\r\n return {\r\n orderMessages: state.data.orderMessages,\r\n account: state.authentication.account\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch: any): DispatchProps => ({\r\n getOrderMessages: () => dispatch(getOrderMessagesThunk())\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(CatalogsTrafficPage);\r\n\r\nconst StyledPaper = styled(XPaper)`\r\n min-height: 300px;\r\n`;\r\n\r\nconst StyledCell = styled(XRowCell)`\r\n padding-top: 5px;\r\n margin: 0 2px;\r\n white-space: nowrap;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n`;\r\n\r\nconst SmallStyledCell = styled(StyledCell)`\r\n font-size: 12px;\r\n`;\r\n","import React from 'react';\r\nimport styled from '@emotion/styled';\r\nimport DownloadIcon from '@material-ui/icons/CloudDownloadOutlined';\r\nimport PreviewIcon from '@material-ui/icons/VisibilityOutlined';\r\nimport { Tooltip } from '@material-ui/core';\r\nimport { Translation } from 'react-i18next';\r\nimport { connect } from 'react-redux';\r\nimport { RouteComponentProps } from 'react-router-dom';\r\nimport XNoContent from 'src/components/domain/XNoContent';\r\nimport XPageContent from 'src/components/layout/XPageContent';\r\nimport XPagination from 'src/components/layout/XPagination';\r\nimport { XPaper } from 'src/components/layout/XPaper';\r\nimport XPaperHeader from 'src/components/layout/XPaperHeader';\r\nimport { XRowCell } from 'src/components/layout/XRow';\r\nimport XScrollView from 'src/components/layout/XScrollView';\r\nimport XTable, { TableRow } from 'src/components/layout/XTable';\r\nimport { formatDateToString } from 'src/helpers/formatHelpers';\r\nimport i18n from 'src/i18n';\r\nimport { OrderMessage } from 'src/models/OrderMessage';\r\nimport { OrganizationType } from 'src/models/Organization';\r\nimport { ApplicationState } from 'src/store';\r\nimport { AuthenticationAccount } from 'src/store/authentication/types';\r\nimport { getOrderMessagesThunk } from 'src/store/data/actions';\r\nimport EmptyImage from 'src/style/images/empty.svg';\r\nimport ErrorBoundary from 'src/components/shared/ErrorBoundary';\r\n\r\ntype StateProps = {\r\n orderMessages: OrderMessage[];\r\n account: AuthenticationAccount;\r\n};\r\n\r\ntype DispatchProps = {\r\n getOrderMessages(): () => void;\r\n};\r\n\r\ntype OwnProps = {};\r\n\r\ntype State = {\r\n currentOffset: number;\r\n};\r\n\r\ntype AllProps = StateProps & DispatchProps & OwnProps & RouteComponentProps<{ direction?: string }>;\r\n\r\nclass OrdersTrafficPage extends React.Component {\r\n constructor(props: AllProps) {\r\n super(props);\r\n this.state = {\r\n currentOffset: 0\r\n };\r\n }\r\n\r\n public componentDidMount() {\r\n this.props.getOrderMessages();\r\n }\r\n\r\n public render() {\r\n const pageSize = 20;\r\n const direction = this.props.match.params.direction;\r\n\r\n let title = i18n.t('traffic.rcvdOrders');\r\n let subtitle = i18n.t('traffic.receivedMessages');\r\n let organizationTitle = i18n.t('traffic.Sender');\r\n let predicate = x => x.fromOrganizationId !== this.props.account.organizationId;\r\n\r\n if (direction === 'out') {\r\n title = i18n.t('traffic.sentOrders');\r\n subtitle = i18n.t('traffic.allMessages');\r\n organizationTitle = i18n.t('traffic.Receiver');\r\n predicate = x => x.fromOrganizationId === this.props.account.organizationId;\r\n }\r\n const orderMessages = this.props.orderMessages.filter(predicate);\r\n\r\n const paged = orderMessages.slice(\r\n this.state.currentOffset,\r\n this.state.currentOffset + pageSize\r\n );\r\n\r\n if (this.props.account.organizationType === OrganizationType.Retailer) {\r\n if (direction === 'in') {\r\n return null;\r\n }\r\n }\r\n\r\n if (this.props.account.organizationType === OrganizationType.Supplier) {\r\n if (direction === 'out') {\r\n return null;\r\n }\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n\r\n {orderMessages.length === 0 ? (\r\n \r\n {t =>

{t('traffic.noMessageTraffic')}

}
\r\n
\r\n ) : (\r\n \r\n \r\n {t => (\r\n \r\n {paged.map(dm => (\r\n \r\n {dm.organizationName}\r\n {dm.fileName}\r\n {dm.processingStatus}\r\n \r\n {dm.fromOrganizationId === this.props.account.organizationId\r\n ? dm.sourceType\r\n : dm.targetType}\r\n \r\n \r\n {formatDateToString(dm.outgoingDate, true, true)}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ))}\r\n \r\n )}\r\n \r\n \r\n )}\r\n\r\n {orderMessages.length > pageSize && (\r\n this.setState({ currentOffset: i })}\r\n />\r\n )}\r\n \r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state: ApplicationState): StateProps => {\r\n return {\r\n orderMessages: state.data.orderMessages,\r\n account: state.authentication.account\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch: any): DispatchProps => ({\r\n getOrderMessages: () => dispatch(getOrderMessagesThunk())\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(OrdersTrafficPage);\r\n\r\nconst StyledPaper = styled(XPaper)`\r\n min-height: 300px;\r\n`;\r\n\r\nconst StyledCell = styled(XRowCell)`\r\n padding-top: 5px;\r\n margin: 0 2px;\r\n white-space: nowrap;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n`;\r\n\r\nconst SmallStyledCell = styled(StyledCell)`\r\n font-size: 12px;\r\n`;\r\n","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { RouteComponentProps } from 'react-router-dom';\r\nimport XPageContent from 'src/components/layout/XPageContent';\r\nimport {\r\n getInterfaceText,\r\n getInterfaceTypesCatalog\r\n} from 'src/constants/OrganizationInterface/OrganizationInterfaces';\r\nimport { ApiResult } from 'src/helpers/apiClient';\r\nimport {\r\n InterfaceType,\r\n MyOrganizationModel,\r\n OrderInterfaceSettingsModel,\r\n Organization,\r\n OrganizationInterface\r\n} from 'src/models/Organization';\r\nimport { Software } from 'src/models/Software';\r\nimport { ApplicationState } from 'src/store';\r\nimport { showNotification } from 'src/store/layout/actions';\r\nimport { MessageType } from 'src/store/layout/types';\r\nimport {\r\n deleteOrderInterfaceThunk,\r\n editOrganizationThunk,\r\n getMyOrganizationThunk,\r\n saveOrderInterfaceSettingsThunk\r\n} from 'src/store/organizations/actions';\r\nimport { sortSoftware } from 'src/store/software/actions';\r\nimport InterfaceCard from 'src/pages/myltx/software/InterfaceCard';\r\nimport ErrorBoundary from 'src/components/shared/ErrorBoundary';\r\n\r\ntype StateProps = {\r\n organization?: MyOrganizationModel;\r\n software: Software[];\r\n};\r\n\r\ntype DispatchProps = {\r\n showNotification: (message: string, type: MessageType) => void;\r\n getOrganization: () => void;\r\n saveOrderInterfaceSettings: (\r\n organizationId: string,\r\n data: OrderInterfaceSettingsModel\r\n ) => Promise;\r\n editOrganization: (organization: Organization) => Promise;\r\n deleteOrderInterface: (id: string) => void;\r\n};\r\n\r\ntype AllProps = StateProps & DispatchProps & RouteComponentProps<{ id: string }>;\r\n\r\nclass CatalogsSettingsPage extends React.Component {\r\n constructor(props: AllProps) {\r\n super(props);\r\n this.state = {};\r\n }\r\n\r\n public componentDidMount() {\r\n this.props.getOrganization();\r\n }\r\n\r\n public getInterface(t: InterfaceType): OrganizationInterface | undefined {\r\n return this.props.organization?.interfaces.find(x => x.type === t);\r\n }\r\n\r\n public render() {\r\n const interfaces = getInterfaceTypesCatalog(\r\n this.props.organization?.organization.organizationType\r\n );\r\n return (\r\n \r\n \r\n {interfaces.map((i, idx) => {\r\n const text = getInterfaceText(i);\r\n\r\n return (\r\n this.props.deleteOrderInterface(this.getInterface(i)?.id!)}\r\n deleteVisible={false}\r\n key={idx}\r\n title={text.title}\r\n subTitle={text.description}\r\n interface={this.getInterface(i)}\r\n type={i}\r\n editPath=\"/app/my/catalogs/settings/interface\"\r\n />\r\n );\r\n })}\r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state: ApplicationState): StateProps => {\r\n return {\r\n organization: state.organizations.myOrganization,\r\n software: state.software.all.sort((a, b) => sortSoftware(a, b))\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch: any): DispatchProps => ({\r\n showNotification: (message: string, type: MessageType) => {\r\n dispatch(showNotification(message, type));\r\n },\r\n getOrganization: () => dispatch(getMyOrganizationThunk()),\r\n saveOrderInterfaceSettings: (id, data) => dispatch(saveOrderInterfaceSettingsThunk(id, data)),\r\n editOrganization: (organization: Organization) => dispatch(editOrganizationThunk(organization)),\r\n deleteOrderInterface: (id: string) => dispatch(deleteOrderInterfaceThunk(id))\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(CatalogsSettingsPage);\r\n","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { RouteComponentProps } from 'react-router-dom';\r\nimport XPageContent from 'src/components/layout/XPageContent';\r\nimport {\r\n getInterfaceText,\r\n getInterfaceTypesOrder\r\n} from 'src/constants/OrganizationInterface/OrganizationInterfaces';\r\nimport { ApiResult } from 'src/helpers/apiClient';\r\nimport {\r\n InterfaceType,\r\n MyOrganizationModel,\r\n OrderInterfaceSettingsModel,\r\n Organization,\r\n OrganizationInterface\r\n} from 'src/models/Organization';\r\nimport { Software } from 'src/models/Software';\r\nimport { ApplicationState } from 'src/store';\r\nimport { showNotification } from 'src/store/layout/actions';\r\nimport { MessageType } from 'src/store/layout/types';\r\nimport {\r\n editOrganizationThunk,\r\n getMyOrganizationThunk,\r\n saveOrderInterfaceSettingsThunk,\r\n deleteOrderInterfaceThunk,\r\n getOrganizationIdentifiersThunk\r\n} from 'src/store/organizations/actions';\r\nimport { sortSoftware } from 'src/store/software/actions';\r\nimport InterfaceCard from 'src/pages/myltx/software/InterfaceCard';\r\nimport { XPaper } from '../../../components/layout/XPaper';\r\nimport XPaperHeader from '../../../components/layout/XPaperHeader';\r\nimport AddCircleIcon from '@material-ui/icons/AddCircle';\r\n\r\ntype StateProps = {\r\n organization?: MyOrganizationModel;\r\n software: Software[];\r\n};\r\n\r\ntype DispatchProps = {\r\n showNotification: (message: string, type: MessageType) => void;\r\n getOrganization: () => void;\r\n getOrganizationIdentifiers: () => void;\r\n saveOrderInterfaceSettings: (\r\n organizationId: string,\r\n data: OrderInterfaceSettingsModel\r\n ) => Promise;\r\n editOrganization: (organization: Organization) => Promise;\r\n deleteOrderInterface: (id: string) => void;\r\n};\r\n\r\ntype AllProps = StateProps & DispatchProps & RouteComponentProps<{ id: string }>;\r\n\r\nclass OrdersSettingsPage extends React.Component {\r\n constructor(props: AllProps) {\r\n super(props);\r\n this.state = {};\r\n }\r\n\r\n public async onOrderInterfaceDelete(id: string) {\r\n await this.props.deleteOrderInterface(id);\r\n this.props.getOrganization();\r\n }\r\n\r\n public componentDidMount() {\r\n this.props.getOrganization();\r\n this.props.getOrganizationIdentifiers();\r\n }\r\n\r\n public getInterfaces(t: InterfaceType): OrganizationInterface[] | undefined {\r\n if (t === InterfaceType.OrderReceive) {\r\n const interfaces = this.props.organization?.interfaces.filter(x => x.type === t);\r\n if (interfaces?.length === 0)\r\n return undefined;\r\n\r\n return interfaces;\r\n }\r\n else {\r\n const interfaces = this.props.organization?.interfaces.filter(x => x.type === t).slice(0, 1);\r\n if (interfaces?.length === 0)\r\n return undefined;\r\n\r\n return interfaces;\r\n }\r\n }\r\n\r\n public render() {\r\n const interfaceType = getInterfaceTypesOrder(\r\n this.props.organization?.organization.organizationType\r\n )[0];\r\n const header = getInterfaceText(interfaceType);\r\n const interfaces = this.getInterfaces(interfaceType);\r\n const isOrderReceive = interfaceType === InterfaceType.OrderReceive ? true : false;\r\n\r\n const config = () => {\r\n this.props.history.push('/app/my/orders/settings/interface?type=' + interfaceType);\r\n }\r\n\r\n return (\r\n \r\n \r\n config()\r\n }\r\n ] : []}\r\n />\r\n {interfaces ? interfaces?.map((i, idx) => {\r\n return (\r\n this.onOrderInterfaceDelete(i.id)}\r\n deleteVisible={isOrderReceive}\r\n key={idx}\r\n title={''}\r\n subTitle={''}\r\n interface={i}\r\n type={interfaceType}\r\n editPath=\"/app/my/orders/settings/interface\"\r\n />\r\n );\r\n }) : this.onOrderInterfaceDelete('')}\r\n deleteVisible={isOrderReceive}\r\n key={0}\r\n title={''}\r\n subTitle={''}\r\n interface={undefined}\r\n type={interfaceType}\r\n editPath=\"/app/my/orders/settings/interface\"\r\n />\r\n }\r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state: ApplicationState): StateProps => {\r\n return {\r\n organization: state.organizations.myOrganization,\r\n software: state.software.all.sort((a, b) => sortSoftware(a, b))\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch: any): DispatchProps => ({\r\n showNotification: (message: string, type: MessageType) => {\r\n dispatch(showNotification(message, type));\r\n },\r\n getOrganization: () => dispatch(getMyOrganizationThunk()),\r\n getOrganizationIdentifiers: () => dispatch(getOrganizationIdentifiersThunk()),\r\n saveOrderInterfaceSettings: (id, data) => dispatch(saveOrderInterfaceSettingsThunk(id, data)),\r\n editOrganization: (organization: Organization) => dispatch(editOrganizationThunk(organization)),\r\n deleteOrderInterface: (id: string) => dispatch(deleteOrderInterfaceThunk(id))\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(OrdersSettingsPage);\r\n","import React from 'react';\r\nimport styled from '@emotion/styled';\r\nimport DownloadIcon from '@material-ui/icons/CloudDownloadOutlined';\r\nimport { Translation } from 'react-i18next';\r\nimport { connect } from 'react-redux';\r\nimport { RouteComponentProps } from 'react-router-dom';\r\nimport XNoContent from 'src/components/domain/XNoContent';\r\nimport XPageContent from 'src/components/layout/XPageContent';\r\nimport XPagination from 'src/components/layout/XPagination';\r\nimport { XPaper } from 'src/components/layout/XPaper';\r\nimport XPaperHeader from 'src/components/layout/XPaperHeader';\r\nimport { XRowCell } from 'src/components/layout/XRow';\r\nimport XScrollView from 'src/components/layout/XScrollView';\r\nimport XTable, { TableRow } from 'src/components/layout/XTable';\r\nimport { formatDateToString } from 'src/helpers/formatHelpers';\r\nimport i18n from 'src/i18n';\r\nimport { OrderMessage } from 'src/models/OrderMessage';\r\nimport { OrganizationType } from 'src/models/Organization';\r\nimport { ApplicationState } from 'src/store';\r\nimport { AuthenticationAccount } from 'src/store/authentication/types';\r\nimport { getOrderMessagesThunk } from 'src/store/data/actions';\r\nimport EmptyImage from 'src/style/images/empty.svg';\r\nimport ErrorBoundary from 'src/components/shared/ErrorBoundary';\r\n\r\ntype StateProps = {\r\n orderMessages: OrderMessage[];\r\n account: AuthenticationAccount;\r\n};\r\n\r\ntype DispatchProps = {\r\n getOrderMessages(): () => void;\r\n};\r\n\r\ntype OwnProps = {};\r\n\r\ntype State = {\r\n currentOffset: number;\r\n};\r\n\r\ntype AllProps = StateProps & DispatchProps & OwnProps & RouteComponentProps<{ direction?: string }>;\r\n\r\nclass StockTrafficPage extends React.Component {\r\n constructor(props: AllProps) {\r\n super(props);\r\n this.state = {\r\n currentOffset: 0\r\n };\r\n }\r\n\r\n public componentDidMount() {\r\n this.props.getOrderMessages();\r\n }\r\n\r\n public render() {\r\n const pageSize = 20;\r\n const direction = this.props.match.params.direction;\r\n\r\n let title = i18n.t('traffic.rcvdStock');\r\n let subtitle = i18n.t('traffic.receivedMessages');\r\n let organizationTitle = i18n.t('traffic.Sender');\r\n let predicate = x => x.fromOrganizationId !== this.props.account.organizationId;\r\n\r\n if (direction === 'out') {\r\n title = i18n.t('traffic.sentStock');\r\n subtitle = i18n.t('traffic.allMessages');\r\n organizationTitle = i18n.t('traffic.Receiver');\r\n predicate = x => x.fromOrganizationId === this.props.account.organizationId;\r\n }\r\n\r\n const messages = this.props.orderMessages.filter(o => o.type === 'Stock');\r\n const orderMessages = messages.filter(predicate);\r\n\r\n const paged = orderMessages.slice(\r\n this.state.currentOffset,\r\n this.state.currentOffset + pageSize\r\n );\r\n\r\n if (this.props.account.organizationType === OrganizationType.Retailer) {\r\n if (direction === 'out') {\r\n return null;\r\n }\r\n }\r\n\r\n if (this.props.account.organizationType === OrganizationType.Supplier) {\r\n if (direction === 'in') {\r\n return null;\r\n }\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n\r\n {orderMessages.length === 0 ? (\r\n \r\n {t =>

{t('traffic.noMessageTraffic')}

}
\r\n
\r\n ) : (\r\n \r\n \r\n {t => (\r\n \r\n {paged.map(dm => (\r\n \r\n Arxis\r\n {dm.organizationName}\r\n {dm.type}\r\n {dm.fileName}\r\n\r\n \r\n {formatDateToString(dm.creationDate, true, true)}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ))}\r\n \r\n )}\r\n \r\n \r\n )}\r\n\r\n {orderMessages.length > pageSize && (\r\n this.setState({ currentOffset: i })}\r\n />\r\n )}\r\n \r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state: ApplicationState): StateProps => {\r\n return {\r\n orderMessages: state.data.orderMessages,\r\n account: state.authentication.account\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch: any): DispatchProps => ({\r\n getOrderMessages: () => dispatch(getOrderMessagesThunk())\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(StockTrafficPage);\r\n\r\nconst StyledPaper = styled(XPaper)`\r\n min-height: 300px;\r\n`;\r\n\r\nconst StyledCell = styled(XRowCell)`\r\n padding-top: 5px;\r\n margin: 0 2px;\r\n white-space: nowrap;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n`;\r\n\r\nconst SmallStyledCell = styled(StyledCell)`\r\n font-size: 12px;\r\n`;\r\n","import React, { FC, useEffect, useState } from 'react';\r\nimport styled from '@emotion/styled';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport XPageContent from 'src/components/layout/XPageContent';\r\nimport { XPaper, XPaperLabel, XPaperContainer } from 'src/components/layout/XPaper';\r\nimport XPaperHeader from 'src/components/layout/XPaperHeader';\r\nimport { XContainer } from 'src/components/layout/XContainer';\r\nimport XTable, { TableRow } from 'src/components/layout/XTable';\r\nimport { XRowCell, XRow } from 'src/components/layout/XRow';\r\nimport ErrorBoundary from 'src/components/shared/ErrorBoundary';\r\nimport { XFieldDisplay, XKey, XValue } from 'src/pages/myltx/AccountPage';\r\nimport { Tooltip } from '@material-ui/core';\r\nimport { getOrderView } from 'src/store/data/api';\r\n\r\ntype OrderLine = {\r\n value: string;\r\n description: string;\r\n quantity: string;\r\n priceAmount: string;\r\n basePartPrice: string;\r\n partPrice: string;\r\n comment: string;\r\n reference: string;\r\n};\r\n\r\nconst SentOrderPreviewPage: FC> = props => {\r\n const [orderNumber, setOrderNumber] = useState('');\r\n const [recipient, setРecipient] = useState('');\r\n const [sender, setSender] = useState('');\r\n const [deliveryAddress, setDeliveryAddress] = useState('');\r\n const [invoiceAddress, setInvoiceAddress] = useState('');\r\n const [orderLines, setOrderLines] = useState([]);\r\n\r\n useEffect(() => {\r\n var token = sessionStorage.getItem('auth_token');\r\n getOrderView(props.match.params.id, token!).then(res => {\r\n if (res.IsSuccess) {\r\n setOrderNumber(res.Data.orderNumber);\r\n setРecipient(res.Data.recipient);\r\n setSender(res.Data.sender);\r\n setDeliveryAddress(res.Data.deliveryAddress);\r\n setInvoiceAddress(res.Data.invoiceAddress);\r\n setOrderLines(res.Data.orderLines);\r\n }\r\n });\r\n }, []);\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Order number:\r\n {orderNumber}\r\n \r\n \r\n Recipient:\r\n {recipient}\r\n \r\n \r\n Sender:\r\n {sender}\r\n \r\n \r\n\r\n \r\n \r\n Delivery Address:\r\n {deliveryAddress}\r\n \r\n \r\n Invoice Address:\r\n {invoiceAddress}\r\n \r\n \r\n Order date:\r\n {}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Orderlines:\r\n \r\n \r\n \r\n \r\n \r\n {orderLines.map((line, idx) => (\r\n \r\n {}\r\n {}\r\n {line.description}\r\n {line.quantity} pieces\r\n {line.basePartPrice}\r\n \r\n \r\n {line.comment}\r\n \r\n \r\n {line.reference}\r\n \r\n ))}\r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default SentOrderPreviewPage;\r\n\r\nconst StyledCell = styled(XRowCell)`\r\n padding-top: 5px;\r\n margin: 0 2px;\r\n white-space: nowrap;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n`;\r\n","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { Redirect, Route, RouteComponentProps, Switch } from 'react-router-dom';\r\nimport { OrganizationType } from 'src/models/Organization';\r\nimport { ApplicationState } from 'src/store';\r\nimport { AuthenticationAccount } from 'src/store/authentication/types';\r\nimport CatalogPage from '../myltx/catalogs/CatalogPage';\r\nimport StockPage from '../myltx/stock/StockPage';\r\nimport CatalogsPageRetailer from '../myltx/catalogs/CatalogsPageRetailer';\r\nimport CatalogsPageSupplier from '../myltx/catalogs/CatalogsPageSupplier';\r\nimport StockPageRetailer from '../myltx/stock/StockPageRetailer';\r\nimport StockPageSupplier from '../myltx/stock/StockPageSupplier';\r\nimport ConnectionPage from '../myltx/connections/ConnectionPage';\r\nimport ConnectionsPage from '../myltx/connections/ConnectionsPage';\r\nimport ConnectRequestsPage from '../myltx/connections/ConnectRequestsPage';\r\nimport ShowCatalogPage from '../shared/ShowCatalogPage';\r\nimport ShowOrganizationPage from '../shared/ShowOrganizationPage';\r\nimport NotFoundCard from '../system/NotFoundCard';\r\nimport WizardRouter from './addCatalogWizard/WizardRouter';\r\nimport WizardValidationRouter from './addCatalogWizard/WizardValidationRouter';\r\nimport AddNewCatalogPage from './addNewCatalog/AddNewCatalogPage';\r\nimport EditInterfacePage from './addNewCatalog/EditInterfacePage';\r\nimport WizardConvertRouter from './convertCatalogWizard/WizardConvertRouter';\r\nimport SoftwareInterfacePage from './software/SoftwareInterfacePage';\r\nimport AddStockPage from './stock/addStock/AddStockPage';\r\nimport EditStockInterfacePage from './stock/addStock/EditStockInterfacePage';\r\nimport CatalogsTrafficPage from 'src/pages/myltx/catalogs/CatalogsTrafficPage';\r\nimport OrdersTrafficPage from 'src/pages/myltx/orders/OrdersTrafficPage';\r\nimport CatalogsSettingsPage from 'src/pages/myltx/catalogs/CatalogsSettingsPage';\r\nimport OrdersSettingsPage from 'src/pages/myltx/orders/OrdersSettingsPage';\r\nimport StockTrafficPage from 'src/pages/myltx/stock/StockTrafficPage';\r\nimport SentOrderPreviewPage from 'src/pages/myltx/orders/SentOrderPreviewPage';\r\n\r\ntype StateProps = {\r\n account: AuthenticationAccount;\r\n};\r\n\r\ntype DispatchProps = {};\r\n\r\ntype AllProps = StateProps & DispatchProps & RouteComponentProps;\r\n\r\nclass MyLtxRouter extends React.Component {\r\n public render() {\r\n const { match } = this.props;\r\n\r\n const catalogPage =\r\n this.props.account.organizationType === OrganizationType.Retailer\r\n ? CatalogsPageRetailer\r\n : CatalogsPageSupplier;\r\n\r\n const stockPage =\r\n this.props.account.organizationType === OrganizationType.Retailer\r\n ? StockPageRetailer\r\n : StockPageSupplier;\r\n\r\n return (\r\n \r\n }\r\n />\r\n }\r\n />\r\n (\r\n \r\n )}\r\n />\r\n (\r\n \r\n )}\r\n />\r\n (\r\n \r\n )}\r\n />\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \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\nconst mapStateToProps = (state: ApplicationState): StateProps => {\r\n return {\r\n account: state.authentication.account\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = {};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(MyLtxRouter);\r\n","import * as React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport XNavigation from 'src/components/layout/XNavigation';\r\nimport { XSideBar } from 'src/components/layout/XSideBar';\r\nimport { Catalog } from 'src/models/Catalog';\r\nimport { RequestModel } from 'src/models/Request';\r\nimport { ApplicationState } from 'src/store';\r\nimport { getMyCatalogsRequiringAction } from 'src/store/catalogs/selectors';\r\nimport { activeIncommingRequest } from 'src/store/requests/selectors';\r\nimport { AuthenticationAccount } from 'src/store/authentication/types';\r\nimport { Translation } from 'react-i18next';\r\n\r\ntype StateProps = {\r\n activeIncommingRequest: RequestModel[];\r\n catalogRequiringAction: Catalog[];\r\n account: AuthenticationAccount;\r\n};\r\n\r\ntype State = {};\r\n\r\ntype DispatchProps = {};\r\n\r\ntype AllProps = StateProps & DispatchProps;\r\n\r\nclass MyLtxSideBar extends React.Component {\r\n public render() {\r\n return (\r\n \r\n \r\n {t => (\r\n \r\n )}\r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state: ApplicationState) => {\r\n return {\r\n activeIncommingRequest: activeIncommingRequest(state),\r\n catalogRequiringAction: getMyCatalogsRequiringAction(state),\r\n account: state.authentication.account\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (): DispatchProps => ({\r\n //\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(MyLtxSideBar);\r\n","import styled from '@emotion/styled';\r\nimport * as React from 'react';\r\nimport XField from 'src/components/layout/XField';\r\nimport XForm from 'src/components/layout/XForm';\r\nimport XImageEditor from 'src/components/layout/XImageEditor';\r\nimport { Countries } from 'src/constants/Countries';\r\nimport { Organization, OrganizationType } from 'src/models/Organization';\r\nimport { Translation } from 'react-i18next';\r\nimport i18n from '../../../i18n';\r\n\r\ntype OwnProps = {\r\n organization?: Organization;\r\n data?: any;\r\n inputErrors?: any;\r\n callback: (name: string, value: any) => any;\r\n};\r\n\r\ntype AllProps = OwnProps;\r\n\r\nclass OrganizationDetails extends React.Component {\r\n public render() {\r\n const data = this.props.organization ? this.props.organization : this.props.data;\r\n if (!data) return
;\r\n\r\n const fieldsNextToImage = [\r\n { title: i18n.t('account.companyName'), name: 'name', required: true, maxLength: 255 },\r\n {\r\n title: i18n.t('address.street'),\r\n name: 'street',\r\n fullWidth: false,\r\n required: true,\r\n maxLength: 255\r\n },\r\n {\r\n title: i18n.t('address.houseNumber'),\r\n name: 'houseNumber',\r\n fullWidth: false,\r\n required: true,\r\n maxLength: 255\r\n },\r\n { title: 'Postcode', name: 'postalCode', fullWidth: false, required: true, maxLength: 255 },\r\n {\r\n title: i18n.t('address.place'),\r\n name: 'city',\r\n fullWidth: false,\r\n required: true,\r\n maxLength: 255\r\n },\r\n {\r\n title: i18n.t('address.country'),\r\n name: 'country',\r\n required: true,\r\n type: 'select',\r\n options: Countries\r\n }\r\n ];\r\n\r\n const fieldsRight = [\r\n {\r\n title: i18n.t('account.orgType'),\r\n name: 'organizationType',\r\n required: true,\r\n type: 'select',\r\n readonly: true,\r\n options: [\r\n { name: i18n.t('common.supplier'), value: OrganizationType.Supplier },\r\n { name: 'Retailer', value: OrganizationType.Retailer }\r\n ]\r\n },\r\n { title: i18n.t('contact.phone'), name: 'telephoneNumber', required: false, maxLength: 255 },\r\n { title: 'Email', name: 'email', required: false, maxLength: 255 },\r\n { title: 'Website', name: 'website', required: false, maxLength: 255 }\r\n // { title: 'IBAN-nummer', name: 'iban', required: false },\r\n // { title: 'Btw-nummer', name: 'btwNumber', required: false },\r\n ];\r\n\r\n return (\r\n \r\n
\r\n
\r\n
\r\n {\r\n this.props.callback('image', blob);\r\n }}\r\n />\r\n\r\n
\r\n \r\n {t => (\r\n this.props.callback(e.target.name, e.target.value)}\r\n />\r\n )}\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default OrganizationDetails;\r\n\r\nconst FormWrapper = styled.div`\r\n display: flex;\r\n`;\r\n","import * as React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { XPaper, XPaperTitle } from 'src/components/layout/XPaper';\r\nimport { MyOrganizationModel, Organization, OrganizationIdentifier } from 'src/models/Organization';\r\nimport {\r\n addOrganizationIdentifierThunk,\r\n deleteOrganizationIdentifierThunk,\r\n editOrganizationThunk,\r\n getMyOrganizationThunk,\r\n getOrganizationIdentifiersThunk\r\n} from 'src/store/organizations/actions';\r\n\r\nimport styled from '@emotion/styled';\r\nimport AddCircleIcon from '@material-ui/icons/AddCircle';\r\nimport DeleteIcon from '@material-ui/icons/Clear';\r\nimport SaveIcon from '@material-ui/icons/Save';\r\nimport Skeleton from '@material-ui/lab/Skeleton';\r\nimport XForm from 'src/components/layout/XForm';\r\nimport XPageContent from 'src/components/layout/XPageContent';\r\nimport XPopup from 'src/components/layout/XPopup';\r\nimport XTable, { TableRow } from 'src/components/layout/XTable';\r\nimport { OrganizationIdentifierType } from 'src/constants/OrganizationIdentifierType';\r\nimport { ApiResult } from 'src/helpers/apiClient';\r\nimport { mapError } from 'src/helpers/errorMap';\r\nimport { showConfirmation, showNotification } from 'src/store/layout/actions';\r\nimport { MessageType } from 'src/store/layout/types';\r\nimport { ApplicationState } from '../../store';\r\nimport OrganizationDetails from './account/OrganizationDetails';\r\nimport { XRow, XRowCell } from 'src/components/layout/XRow';\r\nimport { getImageUrl } from 'src/helpers/formatHelpers';\r\nimport { generateAvatar } from 'src/helpers/avatarGenerator';\r\nimport { XTitle } from 'src/components/layout/XPaperHeader';\r\nimport { XFieldDisplay, XKey, XValue } from './AccountPage';\r\nimport { Clear, Edit } from '@material-ui/icons';\r\nimport { ActionButtons } from 'src/admin/pages/accounts/AccountPage';\r\nimport { XActionButton, XSecActionButton } from 'src/components/layout/XActionButton';\r\nimport { XActionStrip } from 'src/components/layout/XActionStrip';\r\nimport { Translation } from 'react-i18next';\r\nimport i18n from '../../i18n';\r\nimport ErrorBoundary from 'src/components/shared/ErrorBoundary';\r\n\r\ntype StateProps = {\r\n organization?: MyOrganizationModel;\r\n identifiers: OrganizationIdentifier[];\r\n loading: boolean;\r\n};\r\n\r\ntype State = {\r\n organizationData?: Organization;\r\n organizationInputErrors: any;\r\n showAddIdentifier: boolean;\r\n newIdentifier: {\r\n type: string;\r\n value: string;\r\n };\r\n editing: boolean;\r\n};\r\n\r\ntype DispatchProps = {\r\n showNotification: (message: string, type?: MessageType) => void;\r\n getOrganization: () => void;\r\n showConfirm: (title: string, message: string, onConfirm: () => void) => void;\r\n getOrganizationIdentifiers: () => Promise;\r\n editOrganization: (organization: Organization) => Promise;\r\n addOrganizationIdentifier: (type: string, value: string) => Promise;\r\n deleteOrganizationIdentifier: (id: string) => Promise;\r\n};\r\n\r\ntype AllProps = StateProps & DispatchProps;\r\n\r\nclass MyOrganizationPage extends React.Component {\r\n constructor(props: AllProps) {\r\n super(props);\r\n this.state = {\r\n organizationData: this.props.organization?.organization,\r\n showAddIdentifier: false,\r\n newIdentifier: {\r\n type: '',\r\n value: ''\r\n },\r\n editing: false,\r\n organizationInputErrors: {\r\n name: false,\r\n street: false,\r\n houseNumber: false,\r\n postalCode: false,\r\n city: false,\r\n country: false\r\n }\r\n };\r\n }\r\n\r\n public componentDidMount() {\r\n this.props.getOrganization();\r\n this.props.getOrganizationIdentifiers();\r\n }\r\n\r\n public componentDidUpdate(oldProps: AllProps) {\r\n if (oldProps.organization?.organization !== this.props.organization?.organization) {\r\n this.setState({ organizationData: this.props.organization?.organization });\r\n }\r\n }\r\n\r\n public handleOrganizationChange = (name: string, value: any) => {\r\n if (!this.state.organizationData) return;\r\n\r\n const organizationData = { ...this.state.organizationData };\r\n organizationData[name] = value;\r\n this.setState({ organizationData });\r\n };\r\n\r\n public handleNewIdentifierChange = (name: string, value: any) => {\r\n const identifierData = { ...this.state.newIdentifier };\r\n identifierData[name] = value;\r\n this.setState({ newIdentifier: identifierData });\r\n };\r\n\r\n public storeOrganization = () => {\r\n const state = this.state;\r\n if (!state.organizationData) return;\r\n\r\n const inputErrors = { ...this.state.organizationInputErrors };\r\n let valid = true;\r\n Object.keys(state.organizationData).map(key => {\r\n if (!state.organizationData) return;\r\n\r\n if (key in this.state.organizationInputErrors) {\r\n if (\r\n !state.organizationData[key] ||\r\n state.organizationData[key] === '' ||\r\n state.organizationData[key] === 0\r\n ) {\r\n inputErrors[key] = true;\r\n valid = false;\r\n } else {\r\n inputErrors[key] = false;\r\n }\r\n }\r\n });\r\n\r\n this.setState({ organizationInputErrors: inputErrors });\r\n if (valid) {\r\n this.props.editOrganization(state.organizationData).then(result => {\r\n if (result.IsSuccess) {\r\n this.props.showNotification(i18n.t('notification.yourOrgHasBeenAdjusted'), 'success');\r\n this.setState({ editing: false });\r\n } else\r\n this.props.showNotification(\r\n i18n.t('notification.errAdjustingOrg') + mapError(result.Errors),\r\n 'error'\r\n );\r\n });\r\n }\r\n };\r\n\r\n public showAddIdentifier() {\r\n this.setState({ showAddIdentifier: true });\r\n }\r\n\r\n public addIdentifier() {\r\n if (!this.state.newIdentifier.type || !this.state.newIdentifier.value) return;\r\n\r\n // set button to loading\r\n this.props\r\n .addOrganizationIdentifier(this.state.newIdentifier.type, this.state.newIdentifier.value)\r\n .then(result => {\r\n if (result.IsSuccess) {\r\n // show notification\r\n this.setState({ showAddIdentifier: false, newIdentifier: { type: '', value: '' } });\r\n this.props.showNotification(i18n.t('notification.idNumAdded'), 'success');\r\n } else\r\n this.props.showNotification(\r\n i18n.t('notification.idNumAddingError') + mapError(result.Errors),\r\n 'error'\r\n );\r\n });\r\n }\r\n\r\n public removeIdentifier(identifier: OrganizationIdentifier) {\r\n this.props.showConfirm(\r\n i18n.t('confirmation.deleteIdentificationNumber'),\r\n i18n.t('confirmation.sureToDeleteIdNum'),\r\n () => {\r\n this.props.deleteOrganizationIdentifier(identifier.id).then(apiResult => {\r\n if (apiResult.IsSuccess)\r\n this.props.showNotification(i18n.t('notification.idNumRemoved'), 'success');\r\n else\r\n this.props.showNotification(\r\n i18n.t('notification.somethingWentWrongWhileRemovingIdNum') +\r\n mapError(apiResult.Errors),\r\n 'error'\r\n );\r\n });\r\n }\r\n );\r\n }\r\n\r\n public render() {\r\n const availableAddTypes = OrganizationIdentifierType.filter(\r\n t => this.props.identifiers.map(i => i.type.toLowerCase()).indexOf(t.toLowerCase()) === -1\r\n );\r\n\r\n const organization = this.state.organizationData;\r\n return (\r\n \r\n \r\n \r\n {t => (\r\n 0 ? t('tooltip.Save') : undefined}\r\n buttonCancelText={t('tooltip.Cancel')}\r\n cancelOnPagClick={true}\r\n onSave={() => this.addIdentifier()}\r\n onCancel={() => this.setState({ showAddIdentifier: false })}\r\n title={t('account.addIdNum')}\r\n open={this.state.showAddIdentifier}>\r\n
\r\n {availableAddTypes.length === 0 ? (\r\n {'account.noAdditionalIdTypesAvailable'}\r\n ) : (\r\n this.handleNewIdentifierChange(name, value)}\r\n fields={[\r\n {\r\n title: t('account.idType'),\r\n name: 'type',\r\n required: true,\r\n type: 'select',\r\n options: availableAddTypes.map(t => {\r\n return { name: t, value: t };\r\n })\r\n },\r\n {\r\n title: t('tooltip.number'),\r\n name: 'value',\r\n required: true,\r\n maxLength: 255\r\n }\r\n ]}\r\n />\r\n )}\r\n
\r\n \r\n )}\r\n
\r\n \r\n \r\n \r\n {t => {t('account.myOrganization')}}\r\n \r\n {!this.props.loading ? (\r\n <>\r\n {this.state.editing ? (\r\n \r\n {t => (\r\n \r\n \r\n this.setState({\r\n editing: false,\r\n organizationData: this.props.organization?.organization\r\n })\r\n }>\r\n {t('tooltip.Cancel')}\r\n \r\n this.storeOrganization()}>\r\n {t('tooltip.Save')}\r\n \r\n \r\n )}\r\n \r\n ) : (\r\n \r\n {t => (\r\n this.setState({ editing: true })}>\r\n {t('tooltip.Edit')}\r\n \r\n )}\r\n \r\n )}\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n {this.state.editing && organization !== undefined && (\r\n \r\n )}\r\n {!this.state.editing && organization !== undefined && (\r\n \r\n \r\n {this.props.loading ? (\r\n \r\n ) : (\r\n {\r\n e.target.onError = null;\r\n e.target.src = generateAvatar(organization.name, 75);\r\n }}\r\n />\r\n )}\r\n\r\n \r\n {t => {t('account.desc')}}\r\n \r\n {this.props.loading ? : organization.description}\r\n \r\n \r\n \r\n \r\n {t => (\r\n \r\n \r\n {t('account.companyName')}\r\n \r\n {this.props.loading ? : organization.name}\r\n \r\n \r\n \r\n {t('account.address')}\r\n \r\n {this.props.loading ? (\r\n \r\n ) : (\r\n `${organization.street} ${organization.houseNumber}`\r\n )}\r\n \r\n \r\n \r\n {t('address.place')}\r\n \r\n {this.props.loading ? (\r\n \r\n ) : (\r\n `${organization.postalCode}, ${organization.city}`\r\n )}\r\n \r\n \r\n \r\n {t('address.country')}\r\n \r\n {this.props.loading ? : organization.country}\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n {t => (\r\n \r\n \r\n {t('account.orgType')}\r\n \r\n {this.props.loading ? (\r\n \r\n ) : (\r\n organization.organizationType\r\n )}\r\n \r\n \r\n \r\n {t('contact.phone')}\r\n \r\n {this.props.loading ? (\r\n \r\n ) : (\r\n organization.telephoneNumber || '-'\r\n )}\r\n \r\n \r\n \r\n Email\r\n \r\n {this.props.loading ? (\r\n \r\n ) : (\r\n organization.email || '-'\r\n )}\r\n \r\n \r\n \r\n Website\r\n \r\n {this.props.loading ? (\r\n \r\n ) : (\r\n organization.website || '-'\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 {t => (\r\n \r\n \r\n {t('account.idNumbers')}\r\n \r\n {!this.props.loading ? (\r\n this.showAddIdentifier()}>\r\n {t('account.addIdNum')}\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n )}\r\n \r\n \r\n {t => (\r\n \r\n {this.props.identifiers.map(id => (\r\n \r\n
\r\n {this.props.loading ? : id.type}\r\n
\r\n
\r\n {this.props.loading ? : id.value}\r\n
\r\n
\r\n {!this.props.loading && (\r\n this.removeIdentifier(id)}\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\nconst mapStateToProps = (state: ApplicationState) => {\r\n return {\r\n organization: state.organizations.myOrganization,\r\n loading: state.organizations.loading,\r\n identifiers: state.organizations.myIdentifiers\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch: any): DispatchProps => ({\r\n showNotification: (message: string, type?: MessageType) =>\r\n dispatch(showNotification(message, type)),\r\n getOrganization: () => dispatch(getMyOrganizationThunk()),\r\n editOrganization: (organization: Organization) => dispatch(editOrganizationThunk(organization)),\r\n getOrganizationIdentifiers: () => dispatch(getOrganizationIdentifiersThunk()),\r\n showConfirm: (title: string, message: string, onConfirm: () => void) =>\r\n dispatch(showConfirmation(title, message, onConfirm)),\r\n addOrganizationIdentifier: (type, value) => dispatch(addOrganizationIdentifierThunk(type, value)),\r\n deleteOrganizationIdentifier: id => dispatch(deleteOrganizationIdentifierThunk(id))\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(MyOrganizationPage);\r\n\r\nconst StyledPaperTitle = styled(XPaperTitle)`\r\n margin-bottom: 20px;\r\n position: relative;\r\n`;\r\n","import * as React from 'react';\r\nimport styled from '@emotion/styled';\r\nimport { FormControlLabel, Radio, RadioProps } from '@material-ui/core';\r\n\r\ntype OwnProps = {\r\n value?: string;\r\n label?: string;\r\n placeholder?: string;\r\n};\r\n\r\ntype AllProps = OwnProps & RadioProps;\r\n\r\nconst XRadioButton: React.FC = props => {\r\n return (\r\n
\r\n }\r\n label={props.label}\r\n labelPlacement=\"start\"\r\n value={props.value}\r\n />\r\n
\r\n );\r\n};\r\n\r\nexport default XRadioButton;\r\n","import { css } from '@emotion/core';\r\nimport styled from '@emotion/styled';\r\nimport { Checkbox, FormControlLabel, Switch, SwitchProps } from '@material-ui/core';\r\nimport { CheckboxProps } from '@material-ui/core/Checkbox';\r\nimport * as React from 'react';\r\n\r\ntype OwnProps = {\r\n label?: string;\r\n placeholder?: string;\r\n};\r\n\r\ntype AllProps = OwnProps & SwitchProps;\r\n\r\nconst XSwitch: React.SFC = props => {\r\n return (\r\n
\r\n }\r\n label={props.label}\r\n labelPlacement=\"start\"\r\n />\r\n
\r\n );\r\n};\r\n\r\nexport default XSwitch;\r\n\r\nconst Label = styled(FormControlLabel)`\r\n width: calc(100% - 20px);\r\n & .MuiFormControlLabel-label {\r\n width: 100%;\r\n }\r\n`;\r\n","import styled from '@emotion/styled';\r\nimport { RadioGroup } from '@material-ui/core';\r\nimport * as React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { Translation } from 'react-i18next';\r\nimport XRadioButton from 'src/components/layout/XRadioButton';\r\nimport XSwitch from 'src/components/layout/XSwitch';\r\nimport { AccountSetting, AccountSettingForm } from 'src/store/authentication/types';\r\nimport { ApplicationState } from 'src/store';\r\nimport { changeLanguage } from 'src/store/language/actions';\r\n\r\ntype StateProps = {\r\n language: string;\r\n};\r\n\r\ntype DispatchProps = {\r\n changeLanguage: (language: string) => void;\r\n};\r\n\r\ntype OwnProps = {\r\n settings: AccountSetting[];\r\n onChange: (data: AccountSettingForm[]) => void;\r\n};\r\n\r\ntype State = {\r\n changedSettings: AccountSettingForm[];\r\n};\r\n\r\ntype AllProps = OwnProps & StateProps & DispatchProps;\r\n\r\nclass AccountSettings extends React.Component {\r\n constructor(props: AllProps) {\r\n super(props);\r\n\r\n this.state = {\r\n changedSettings: this.props.settings.map(p => this.createForm(p.name, p.value))\r\n };\r\n }\r\n\r\n public componentDidUpdate(old: any) {\r\n let updateNeeded = false;\r\n for (const oldSetting of old.settings) {\r\n const existing = this.props.settings.find(c => c.name === oldSetting.name);\r\n if (existing === undefined) updateNeeded = true;\r\n else if (existing.value !== oldSetting.value) updateNeeded = true;\r\n }\r\n\r\n if (updateNeeded)\r\n this.setState({\r\n changedSettings: this.props.settings.map(p => this.createForm(p.name, p.value))\r\n });\r\n }\r\n\r\n public createForm(name: string, value: any): any {\r\n return { name, value };\r\n }\r\n\r\n public getValue(name: string): any {\r\n const changed = this.state.changedSettings.find(s => s.name === name);\r\n if (changed !== undefined) {\r\n return changed.value;\r\n }\r\n return this.props.settings.find(s => s.name === name)?.value;\r\n }\r\n\r\n public changeSetting(name: string, value: any) {\r\n const setting = this.state.changedSettings.find(s => s.name === name);\r\n if (setting !== undefined) {\r\n this.setState(\r\n {\r\n changedSettings: this.state.changedSettings.map(el =>\r\n el.name === name ? { ...setting, value: value + '' } : el\r\n )\r\n },\r\n () => this.props.onChange(this.state.changedSettings)\r\n );\r\n return;\r\n }\r\n\r\n const newSettings = this.state.changedSettings;\r\n newSettings.push({ name, value: value + '' });\r\n this.setState({ changedSettings: newSettings }, () =>\r\n this.props.onChange(this.state.changedSettings)\r\n );\r\n }\r\n\r\n public render() {\r\n const languageHanlder = (e: React.ChangeEvent): void => {\r\n this.changeSetting('Language', (e.target as HTMLInputElement).value);\r\n this.props.changeLanguage((e.target as HTMLInputElement).value);\r\n };\r\n\r\n return (\r\n
\r\n {this.state.changedSettings && (\r\n \r\n {t => (\r\n this.changeSetting('MailEnabled', e.target.checked ? '1' : '0')}\r\n />\r\n )}\r\n \r\n )}\r\n \r\n {t =>
{t('account.sLanguage')}
}
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state: ApplicationState): StateProps => {\r\n return {\r\n language: state.language.language\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch: any): DispatchProps => ({\r\n changeLanguage: (language: string) => dispatch(changeLanguage(language))\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(AccountSettings);\r\n\r\nconst StyledSwitch = styled(XSwitch)`\r\n margin: 0 10px;\r\n`;\r\n\r\nconst StyledLanguage = styled.div`\r\n border-top: 1px solid grey;\r\n margin: 0 16px;\r\n & h6 {\r\n margin-top: 21px;\r\n }\r\n`;\r\n","import * as React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { XPaper, XPaperTitle } from 'src/components/layout/XPaper';\r\nimport { XRowCell } from 'src/components/layout/XRow';\r\nimport * as accountActions from 'src/store/accounts/actions';\r\nimport { AccountSetting, AccountSettingForm } from 'src/store/authentication/types';\r\n\r\nimport styled from '@emotion/styled';\r\nimport XPageContent from 'src/components/layout/XPageContent';\r\nimport XScrollView from 'src/components/layout/XScrollView';\r\nimport { ApiResult } from 'src/helpers/apiClient';\r\nimport { mapError } from 'src/helpers/errorMap';\r\nimport { showNotification } from 'src/store/layout/actions';\r\nimport { MessageType } from 'src/store/layout/types';\r\nimport { ApplicationState } from '../../store';\r\nimport AccountSettings from './account/AccountSettings';\r\nimport { XActionButton } from 'src/components/layout/XActionButton';\r\nimport { XTitle } from 'src/components/layout/XPaperHeader';\r\nimport { Translation } from 'react-i18next';\r\nimport i18n from '../../i18n';\r\nimport ErrorBoundary from 'src/components/shared/ErrorBoundary';\r\n\r\ntype StateProps = {\r\n settings: AccountSetting[];\r\n};\r\ntype State = {\r\n settingsData: AccountSettingForm[];\r\n};\r\n\r\ntype DispatchProps = {\r\n showNotification: (message: string, type?: MessageType) => void;\r\n getSettings: () => Promise;\r\n saveSettings: (data: AccountSettingForm[]) => Promise;\r\n};\r\n\r\ntype AllProps = StateProps & DispatchProps;\r\n\r\nclass MySettingsPage extends React.Component {\r\n constructor(props: AllProps) {\r\n super(props);\r\n this.state = {\r\n settingsData: []\r\n };\r\n }\r\n\r\n public componentDidMount() {\r\n this.props.getSettings();\r\n }\r\n\r\n public handleSettingsChange = (data: AccountSettingForm[]) => {\r\n this.setState({ settingsData: data });\r\n };\r\n\r\n public saveSettings = () => {\r\n this.props.saveSettings(this.state.settingsData).then(result => {\r\n if (result.IsSuccess)\r\n this.props.showNotification(i18n.t('notification.settingsSaved'), 'success');\r\n else\r\n this.props.showNotification(\r\n i18n.t('notification.settingsSavingError') + mapError(result.Errors),\r\n 'error'\r\n );\r\n });\r\n };\r\n\r\n public render() {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {t => {t('account.myPreferences')}}\r\n \r\n \r\n {t => (\r\n this.saveSettings()}>\r\n {t('tooltip.Save')}\r\n \r\n )}\r\n \r\n \r\n \r\n this.handleSettingsChange(data)}\r\n />\r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state: ApplicationState) => {\r\n return {\r\n settings: state.account.settings\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch: any): DispatchProps => ({\r\n showNotification: (message: string, type?: MessageType) =>\r\n dispatch(showNotification(message, type)),\r\n getSettings: () => dispatch(accountActions.GetSettingsThunk()),\r\n saveSettings: (data: AccountSettingForm[]) => dispatch(accountActions.SaveSettingsThunk(data))\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(MySettingsPage);\r\n\r\nconst StyledPaperTitle = styled(XPaperTitle)`\r\n margin-bottom: 20px;\r\n position: relative;\r\n`;\r\n","import { styled } from '@material-ui/core';\r\nimport React from 'react';\r\nimport { Translation } from 'react-i18next';\r\nimport { connect } from 'react-redux';\r\nimport { ApplicationState } from 'src/store';\r\nimport { getSoftwareThunk, sortSoftware } from 'src/store/software/actions';\r\nimport { XImage, XImageContainer } from '../layout/XImage';\r\nimport { XRow, XRowCell } from '../layout/XRow';\r\n\r\ntype OwnProps = {\r\n softwareId: string;\r\n onChange: (_: string) => void;\r\n};\r\n\r\ntype AllProps = StateProps & DispatchProps & OwnProps;\r\n\r\ntype State = {\r\n softwareId: string;\r\n};\r\n\r\nconst logos = {\r\n LogicTrade: 'logictrade.svg',\r\n iOne: 'iONE.png',\r\n eMeubel: 'emeubel.png',\r\n Furncube: 'furncube.png',\r\n 'Uni-Living': 'uniliving.jpg',\r\n 'JVM Meubi-sol': 'meubisol.png'\r\n};\r\n\r\nclass XSoftwareSelect extends React.Component {\r\n constructor(props: AllProps) {\r\n super(props);\r\n this.state = {\r\n softwareId: props.softwareId\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n if (!this.props.software.length) {\r\n this.props.getSoftware();\r\n }\r\n }\r\n\r\n public selectSoftware(softwareId) {\r\n this.setState({ softwareId });\r\n this.props.onChange(softwareId);\r\n }\r\n\r\n public render() {\r\n const emptyGuid = '00000000-0000-0000-0000-000000000000';\r\n return (\r\n \r\n {this.props.software.map(software => (\r\n \r\n this.selectSoftware(software.id)}>\r\n {logos[software.name] && (\r\n \r\n \r\n \r\n )}\r\n
\r\n \r\n
\r\n ))}\r\n \r\n this.selectSoftware(emptyGuid)}>\r\n
\r\n {t => {t('tooltip.different')} }\r\n
\r\n
\r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\ntype StateProps = ReturnType;\r\nconst mapStateToProps = (state: ApplicationState) => ({\r\n software: state.software.all.sort((a, b) => sortSoftware(a, b))\r\n});\r\n\r\ntype DispatchProps = ReturnType;\r\nconst mapDispatchToProps = (dispatch: any) => ({\r\n getSoftware: () => dispatch(getSoftwareThunk())\r\n});\r\n\r\nconst Card = styled('div')({\r\n padding: '15px',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n alignItems: 'center',\r\n cursor: 'pointer',\r\n '&.selected': {\r\n background: '#f5f5f5',\r\n color: 'black!important',\r\n border: '2px solid #cccccc'\r\n }\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(XSoftwareSelect);\r\n","import React from 'react';\r\nimport { Translation } from 'react-i18next';\r\nimport { connect } from 'react-redux';\r\nimport { RouteComponentProps } from 'react-router-dom';\r\nimport XSoftwareSelect from 'src/components/domain/XSoftwareSelect';\r\nimport XPageContent from 'src/components/layout/XPageContent';\r\nimport { XPaper, XPaperLabel } from 'src/components/layout/XPaper';\r\nimport XPaperHeader from 'src/components/layout/XPaperHeader';\r\nimport FileCopyIcon from '@material-ui/icons/FileCopyOutlined';\r\nimport { XFieldDisplay, XKey, XValue } from '../AccountPage';\r\nimport styled from '@emotion/styled';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport { XActionButton, XSecActionButton } from 'src/components/layout/XActionButton';\r\nimport { ApiResult } from 'src/helpers/apiClient';\r\nimport i18n from '../../../i18n';\r\nimport {\r\n InterfaceType,\r\n MyOrganizationModel,\r\n OrderInterfaceSettingsModel,\r\n Organization,\r\n OrganizationAccessTokenModel,\r\n OrganizationInterface,\r\n OrganizationType\r\n} from 'src/models/Organization';\r\nimport { Software } from 'src/models/Software';\r\nimport { ApplicationState } from 'src/store';\r\nimport { showNotification } from 'src/store/layout/actions';\r\nimport { MessageType } from 'src/store/layout/types';\r\nimport {\r\n editOrganizationThunk,\r\n getMyOrganizationThunk,\r\n saveOrderInterfaceSettingsThunk,\r\n getOrganizationAccessTokenThunk,\r\n deleteOrganizationAccessTokenThunk\r\n} from 'src/store/organizations/actions';\r\nimport { sortSoftware } from 'src/store/software/actions';\r\nimport ErrorBoundary from 'src/components/shared/ErrorBoundary';\r\n\r\ntype StateProps = {\r\n organization?: MyOrganizationModel;\r\n software: Software[];\r\n accessToken?: OrganizationAccessTokenModel;\r\n};\r\n\r\ntype DispatchProps = {\r\n showNotification: (message: string, type: MessageType) => void;\r\n getOrganization: () => void;\r\n getOrganizationAccessToken: (organizationId: string, generateNew: boolean) => Promise;\r\n deleteOrganizationAccessToken: (organizationId: string) => void;\r\n saveOrderInterfaceSettings: (\r\n organizationId: string,\r\n data: OrderInterfaceSettingsModel\r\n ) => Promise;\r\n editOrganization: (organization: Organization) => Promise;\r\n};\r\n\r\ntype OwnProps = {};\r\n\r\ntype AllProps = StateProps & DispatchProps & OwnProps & RouteComponentProps<{ id: string }>;\r\n\r\ntype State = {};\r\n\r\nclass SoftwarePage extends React.Component {\r\n constructor(props: AllProps) {\r\n super(props);\r\n this.state = {};\r\n }\r\n\r\n public componentDidMount() {\r\n this.props.getOrganization();\r\n }\r\n\r\n public async updateSoftwareId(softwareId: string) {\r\n const organization = this.props.organization?.organization;\r\n if (organization === undefined) return;\r\n organization.softwareId = softwareId;\r\n await this.props.editOrganization(organization);\r\n this.props.getOrganization();\r\n\r\n if(softwareId === \"00000000-0000-0000-0000-000000000000\")\r\n {\r\n this.getAccessToken(false);\r\n }\r\n else { \r\n this.deleteAccessToken();\r\n }\r\n }\r\n\r\n public async copyAccessToken() {\r\n var token = this.props.accessToken?.accessToken; \r\n navigator.clipboard.writeText(token!);\r\n\r\n this.props.showNotification(i18n.t('notification.copiedToClibboard'), 'success');\r\n }\r\n\r\n public async getAccessToken(generateNew) { \r\n var organizationId = this.props.organization?.organization?.id;\r\n this.props.getOrganizationAccessToken(organizationId!, generateNew);\r\n\r\n if(generateNew){\r\n this.props.showNotification(i18n.t('notification.generatedNewToken'), 'success');\r\n }\r\n }\r\n\r\n public async deleteAccessToken() { \r\n var organizationId = this.props.organization?.organization?.id;\r\n this.props.deleteOrganizationAccessToken(organizationId!);\r\n }\r\n\r\n public render() {\r\n return (\r\n \r\n \r\n {this.props.organization?.organization.organizationType === OrganizationType.Supplier &&\r\n null}\r\n\r\n {this.props.organization?.organization.organizationType === OrganizationType.Retailer && (\r\n
\r\n \r\n \r\n {t => (\r\n \r\n )}\r\n \r\n this.updateSoftwareId(softwareId)}\r\n />\r\n \r\n {this.props.organization?.organization.softwareId === '00000000-0000-0000-0000-000000000000' && (\r\n
\r\n \r\n \r\n {t => (\r\n \r\n )}\r\n \r\n\r\n \r\n {t => (\r\n \r\n Token\r\n \r\n this.copyAccessToken()} /> \r\n \r\n this.getAccessToken(true)}>\r\n {t('organizations.generateNewAccessToken')}\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\nconst mapStateToProps = (state: ApplicationState): StateProps => {\r\n return {\r\n organization: state.organizations.myOrganization,\r\n accessToken: state.organizations.accessToken,\r\n software: state.software.all.sort((a, b) => sortSoftware(a, b))\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch: any): DispatchProps => ({\r\n showNotification: (message: string, type: MessageType) => {\r\n dispatch(showNotification(message, type));\r\n },\r\n getOrganization: () => dispatch(getMyOrganizationThunk()),\r\n getOrganizationAccessToken: (id, generateNew) => dispatch(getOrganizationAccessTokenThunk(id, generateNew)),\r\n deleteOrganizationAccessToken: (id) => dispatch(deleteOrganizationAccessTokenThunk(id)),\r\n saveOrderInterfaceSettings: (id, data) => dispatch(saveOrderInterfaceSettingsThunk(id, data)),\r\n editOrganization: (organization: Organization) => dispatch(editOrganizationThunk(organization))\r\n});\r\n\r\nconst XButtonsContainer = styled.div`\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: right;\r\n margin-top: 1rem;\r\n`;\r\n\r\nconst Copy = styled(FileCopyIcon)({\r\n width: '25px',\r\n height: '25px',\r\n alignSelf: 'center',\r\n color: '#E7217B',\r\n marginTop: '5px',\r\n marginLeft: '10px'\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(SoftwarePage);\r\n","import React, { useEffect } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { ApplicationState } from 'src/store';\r\nimport { getMyOrganizationThunk } from 'src/store/organizations/actions';\r\nimport { OrganizationModel } from 'src/models/Organization';\r\nimport styled from '@emotion/styled';\r\nimport { Translation } from 'react-i18next';\r\n\r\ntype OwnProps = {\r\n p: { name: string; price: string; items: []; limit: number };\r\n organizationType: string;\r\n};\r\n\r\ntype StateProps = {\r\n myOrganization?: OrganizationModel;\r\n};\r\n\r\ntype DispatchProps = {\r\n getMyOrganization: () => void;\r\n};\r\n\r\ntype AllProps = StateProps & OwnProps & DispatchProps;\r\n\r\nconst SubscriptionCard: React.FC = ({\r\n p,\r\n organizationType,\r\n getMyOrganization,\r\n myOrganization\r\n}) => {\r\n useEffect(() => {\r\n getMyOrganization();\r\n }, []);\r\n\r\n const range = (min: number, max: number) => {\r\n if (\r\n myOrganization &&\r\n myOrganization.organization.numberOfLiveConnections >= min &&\r\n myOrganization.organization.numberOfLiveConnections <= max &&\r\n p.limit === max\r\n ) {\r\n return (\r\n \r\n {t => (\r\n <>\r\n {t('organizations.yourCurrentSubscription')}\r\n \r\n {t('organizations.youAreMakingUseOf')}{' '}\r\n {myOrganization.organization.numberOfLiveConnections}\r\n {t('organizations.liveConnectionsWith')}{' '}\r\n {organizationType === 'Supplier' ? t('common.retailers') : t('common.suppliers')}\r\n \r\n \r\n )}\r\n \r\n );\r\n } else return;\r\n };\r\n\r\n return (\r\n \r\n {organizationType === 'Supplier'\r\n ? range(0, 1) || range(2, 50) || range(51, 100) || range(101, 200) || range(201, 999999)\r\n : range(0, 1) || range(2, 20) || range(21, 50) || range(51, 100) || range(101, 999999)}\r\n
{p.name}
\r\n {Number.isInteger(p.price) && (\r\n
\r\n
€{p.price},-
\r\n
per month
\r\n
\r\n )}\r\n
\r\n
\r\n {p.items.map((i, idx) => (\r\n \r\n \r\n \r\n
\r\n \r\n {i}\r\n
\r\n \r\n ))}\r\n \r\n \r\n );\r\n};\r\n\r\nconst mapStateToProps = (state: ApplicationState): StateProps => {\r\n return {\r\n myOrganization: state.organizations.myOrganization\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch: any): DispatchProps => ({\r\n getMyOrganization: () => dispatch(getMyOrganizationThunk())\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(SubscriptionCard);\r\n\r\nconst XCurrentSubHeader = styled.div`\r\n position: absolute;\r\n top: -47px;\r\n left: 50%;\r\n transform: translateX(-50%);\r\n width: fit-content;\r\n height: 40px;\r\n padding: 0 16px;\r\n min-width: 40px;\r\n min-height: auto;\r\n border-radius: 24px;\r\n background-color: #4caf4fe1;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n color: white;\r\n &:after {\r\n content: '';\r\n position: absolute;\r\n top: 100%;\r\n left: 50%;\r\n margin-left: -7.5px;\r\n border-width: 7.5px;\r\n border-style: solid;\r\n border-color: #4caf4fe1 transparent transparent transparent;\r\n }\r\n`;\r\n\r\nconst XCurrentSubFooter = styled.div`\r\n position: absolute;\r\n bottom: -100px;\r\n left: 0;\r\n width: 85%;\r\n border-width: 3px;\r\n border-style: solid;\r\n border-image: linear-gradient(to bottom, #606cfe, rgba(0, 0, 0, 0)) 1 100%;\r\n border-right: 0px;\r\n padding-left: 7px;\r\n`;\r\n","import React, { useEffect, useState } from 'react';\r\nimport { RouteComponentProps, withRouter } from 'react-router-dom';\r\nimport styled from '@emotion/styled';\r\nimport SubscriptionCard from './subscriptions/SubscriptionCard';\r\nimport XPageContent from '../../components/layout/XPageContent';\r\nimport { XPaper } from '../../components/layout/XPaper';\r\nimport XPaperHeader from 'src/components/layout/XPaperHeader';\r\nimport { connect } from 'react-redux';\r\nimport { ApplicationState } from '../../store';\r\nimport { AuthenticationAccount } from '../../store/authentication/types';\r\nimport i18n from 'src/i18n';\r\nimport ErrorBoundary from 'src/components/shared/ErrorBoundary';\r\n\r\ntype StateProps = {\r\n account: AuthenticationAccount;\r\n};\r\n\r\ntype OwnState = {\r\n organizationType: string;\r\n};\r\n\r\ntype AllProps = StateProps & RouteComponentProps & OwnState;\r\n\r\nconst SubscriptionsPage: React.FC = props => {\r\n const [organizationType, setOrganizationType] = useState('');\r\n\r\n useEffect(() => {\r\n setOrganizationType(props.account.organizationType);\r\n }, []);\r\n\r\n const retailers = [\r\n i18n.t('pricing.receiveUnlimitedCatalogs'),\r\n i18n.t('pricing.unlimitedOrderHistory')\r\n ];\r\n const suppliers = [\r\n i18n.t('pricing.publishUnlimitedCatalogs'),\r\n i18n.t('pricing.unlimitedOrderHistory')\r\n ];\r\n\r\n const prices = {\r\n retailer: [\r\n {\r\n name: 'Free',\r\n price: 0,\r\n items: [...retailers, 'Max. 1 ' + i18n.t('common.suppliers')],\r\n limit: 1\r\n },\r\n {\r\n name: 'Premium I',\r\n price: 99,\r\n items: [...retailers, 'Max. 20 ' + i18n.t('common.suppliers')],\r\n limit: 20\r\n },\r\n {\r\n name: 'Premium II',\r\n price: 199,\r\n items: [...retailers, 'Max. 50 ' + i18n.t('common.suppliers')],\r\n limit: 50\r\n },\r\n {\r\n name: 'Premium III',\r\n price: 349,\r\n items: [...retailers, 'Max. 100 ' + i18n.t('common.suppliers')],\r\n limit: 100\r\n },\r\n {\r\n name: 'Unlimited',\r\n price: 999,\r\n items: [...retailers, 'Meer dan 100 ' + i18n.t('common.suppliers')],\r\n limit: 999999\r\n }\r\n ],\r\n supplier: [\r\n {\r\n name: 'Free',\r\n price: 0,\r\n items: [...suppliers, 'Max. 1 ' + i18n.t('common.retailers')],\r\n limit: 1\r\n },\r\n {\r\n name: 'Premium I',\r\n price: 199,\r\n items: [...suppliers, 'Max. 50 ' + i18n.t('common.retailers')],\r\n limit: 50\r\n },\r\n {\r\n name: 'Premium II',\r\n price: 299,\r\n items: [...suppliers, 'Max. 100 ' + i18n.t('common.retailers')],\r\n limit: 100\r\n },\r\n {\r\n name: 'Premium III',\r\n price: 499,\r\n items: [...suppliers, 'Max. 200 ' + i18n.t('common.retailers')],\r\n limit: 200\r\n },\r\n {\r\n name: 'Unlimited',\r\n price: 999,\r\n items: [...suppliers, 'Meer dan 200 ' + i18n.t('common.retailers')],\r\n limit: 999999\r\n }\r\n ]\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {organizationType &&\r\n prices[organizationType.toLocaleLowerCase()].map(p => (\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\nconst mapStateToProps = (state: ApplicationState): StateProps => {\r\n return {\r\n account: state.authentication.account\r\n };\r\n};\r\n\r\nexport default withRouter(connect(mapStateToProps, {})(SubscriptionsPage));\r\n\r\nconst XCardsContainer = styled.div`\r\n margin-top: 2rem;\r\n padding: 2rem;\r\n display: flex;\r\n`;\r\n\r\nconst XSubProgressBar = styled.div`\r\n width: 100%;\r\n border-radius: 5px;\r\n height: 65px;\r\n`;\r\n","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { Redirect, Route, RouteComponentProps, Switch } from 'react-router-dom';\r\nimport { ApplicationState } from 'src/store';\r\nimport { AuthenticationAccount } from 'src/store/authentication/types';\r\nimport MyAccountPage from '../myltx/AccountPage';\r\nimport MyOrganizationPage from '../myltx/OrganizationPage';\r\nimport MySettingsPage from '../myltx/SettingsPage';\r\nimport NotFoundCard from '../system/NotFoundCard';\r\nimport SoftwarePage from './software/SoftwarePage';\r\nimport SubscriptionsPage from './SubscriptionsPage';\r\nimport SoftwareInterfacePage from './software/SoftwareInterfacePage';\r\n\r\ntype StateProps = {\r\n account: AuthenticationAccount;\r\n};\r\n\r\ntype DispatchProps = {};\r\n\r\ntype AllProps = StateProps & DispatchProps & RouteComponentProps;\r\n\r\nclass MyAccoutRouter extends React.Component {\r\n public render() {\r\n const { match } = this.props;\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\nconst mapStateToProps = (state: ApplicationState): StateProps => {\r\n return {\r\n account: state.authentication.account\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = {};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(MyAccoutRouter);\r\n","import React from 'react';\r\nimport { Translation } from 'react-i18next';\r\nimport { connect } from 'react-redux';\r\nimport XNavigation from 'src/components/layout/XNavigation';\r\nimport { XSideBar } from 'src/components/layout/XSideBar';\r\nimport { Catalog } from 'src/models/Catalog';\r\nimport { RequestModel } from 'src/models/Request';\r\nimport { ApplicationState } from 'src/store';\r\nimport { getMyCatalogsRequiringAction } from 'src/store/catalogs/selectors';\r\nimport { activeIncommingRequest } from 'src/store/requests/selectors';\r\nimport { AuthenticationAccount } from 'src/store/authentication/types';\r\nimport { OrganizationType } from 'src/models/Organization';\r\n\r\ntype StateProps = {\r\n activeIncommingRequest: RequestModel[];\r\n catalogRequiringAction: Catalog[];\r\n account: AuthenticationAccount;\r\n};\r\n\r\ntype State = {};\r\n\r\ntype DispatchProps = {};\r\n\r\ntype AllProps = StateProps & DispatchProps;\r\n\r\nclass MyAccountSideBar extends React.Component {\r\n public render() {\r\n return (\r\n \r\n \r\n {t => (\r\n \r\n )}\r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state: ApplicationState) => {\r\n return {\r\n activeIncommingRequest: activeIncommingRequest(state),\r\n catalogRequiringAction: getMyCatalogsRequiringAction(state),\r\n account: state.authentication.account\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (): DispatchProps => ({\r\n //\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(MyAccountSideBar);\r\n","import * as React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { Link, RouteComponentProps } from 'react-router-dom';\r\n\r\nimport styled from '@emotion/styled';\r\nimport { LinearProgress } from '@material-ui/core';\r\nimport XLTXInformation from 'src/components/domain/XLTXInformation';\r\nimport { XPaper } from 'src/components/layout/XPaper';\r\nimport { ApiResult } from 'src/helpers/apiClient';\r\nimport { ApplicationState } from 'src/store';\r\nimport { verifyEmailCodeThunk } from 'src/store/accounts/actions';\r\nimport Logo from '../../style/images/logos/main.svg';\r\nimport { LeftSide, LeftSideInner, LTXLogo, RightSide } from '../login/LoginPage.style';\r\n\r\nimport XButton, { XButtonStyle } from 'src/components/layout/XButton';\r\nimport MailImage from 'src/style/images/success.svg';\r\nimport { Translation } from 'react-i18next';\r\n\r\ntype OwnProps = {};\r\n\r\ntype State = { confirmResult?: boolean };\r\n\r\ntype DispatchProps = {\r\n verifyEmailCode: (code: string) => Promise;\r\n};\r\n\r\ntype AllProps = OwnProps & DispatchProps & RouteComponentProps<{ emailCode: string }>;\r\n\r\nclass ConfirmationPage extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n this.state = { confirmResult: undefined };\r\n }\r\n\r\n public componentDidMount() {\r\n const emailCode = this.props.match.params.emailCode;\r\n this.props.verifyEmailCode(emailCode).then(result => {\r\n this.setState({ confirmResult: result.IsSuccess });\r\n if (emailCode === 'success') this.setState({ confirmResult: true });\r\n });\r\n }\r\n\r\n public render() {\r\n return (\r\n \r\n \r\n \r\n \r\n {this.state.confirmResult === undefined ? (\r\n
\r\n \r\n
\r\n ) : this.state.confirmResult === false ? (\r\n {t =>
{t('register.noAccountFoundToActiv')}
}
\r\n ) : (\r\n \r\n {t => (\r\n
\r\n
\r\n \r\n
\r\n {t('register.accActivated')}\r\n this.props.history.push('/login')}\r\n width=\"100%\">\r\n {t('login.login')}\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\nconst mapStateToProps = () => {\r\n return {};\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch: any): DispatchProps => ({\r\n verifyEmailCode: (code: string) => dispatch(verifyEmailCodeThunk(code))\r\n});\r\nexport default connect(mapStateToProps, mapDispatchToProps)(ConfirmationPage);\r\n\r\nconst LogoutLayout = styled.div`\r\n height: 100vh;\r\n overflow: hidden;\r\n background: rgb(45, 128, 194);\r\n display: flex;\r\n`;\r\n\r\nconst LogoutInner = styled(XPaper)`\r\n padding: 30px;\r\n text-align: center;\r\n width: 500px;\r\n min-height: 40px;\r\n`;\r\n\r\nconst StyledLink = styled(Link)`\r\n font-weight: bold;\r\n text-decoration: underline;\r\n`;\r\n","import { css } from '@emotion/core';\r\nimport styled from '@emotion/styled';\r\n\r\nexport const XPage = styled('div')({\r\n backgroundImage: 'url(' + require('../../style/images/background.jpg') + ')',\r\n backgroundSize: 'cover',\r\n width: '100%',\r\n height: '100vh',\r\n backgroundPosition: 'center',\r\n backgroundRepeat: 'no-repeat',\r\n overflowY: 'auto',\r\n WebkitOverflowScrolling: 'touch'\r\n});\r\n\r\nexport const XPageContainer = styled('div')({\r\n width: '100%',\r\n height: '100vh',\r\n display: 'flex'\r\n});\r\n\r\nexport const LTXLogo = styled('img')({\r\n position: 'fixed',\r\n right: '30px',\r\n bottom: '20px',\r\n maxWidth: '75px',\r\n maxHeight: '75px'\r\n});\r\n","import styled from '@emotion/styled';\r\nimport { CompareArrowsOutlined } from '@material-ui/icons';\r\nimport * as React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { RouteComponentProps } from 'react-router-dom';\r\nimport XFormButtons from 'src/components/layout/XFormButtons';\r\nimport { ApiResult } from 'src/helpers/apiClient';\r\nimport { mapError } from 'src/helpers/errorMap';\r\nimport { showNotification } from 'src/store/layout/actions';\r\nimport { MessageType } from 'src/store/layout/types';\r\nimport { ApplicationState } from '../../store';\r\nimport * as accountActions from '../../store/accounts/actions';\r\nimport { RegisterAccountFormData } from '../../store/accounts/types';\r\nimport AccountDetails from '../myltx/account/AccountDetails';\r\nimport { OrganizationRoute } from './RegisterRouter';\r\nimport { RadioGroup } from '@material-ui/core';\r\nimport XRadioButton from '../../components/layout/XRadioButton';\r\nimport { Translation } from 'react-i18next';\r\nimport i18n from '../../i18n';\r\n\r\ntype StateProps = { data: RegisterAccountFormData };\r\n\r\ntype DispatchProps = {\r\n storeInformation: (data: RegisterAccountFormData) => void;\r\n getEmailAvailable: (email: string) => Promise;\r\n showNotification: (message: string, type: MessageType) => void;\r\n};\r\n\r\ntype OwnProps = {};\r\n\r\ntype AllProps = StateProps & DispatchProps & OwnProps & RouteComponentProps;\r\n\r\ntype State = {\r\n formData: RegisterAccountFormData;\r\n waitingEmailCheck: boolean;\r\n inputErrors: {\r\n email: boolean;\r\n password: boolean;\r\n passwordValid: boolean;\r\n };\r\n validForm: boolean;\r\n};\r\n\r\nclass RegisterAccountPage extends React.Component {\r\n constructor(props: AllProps) {\r\n super(props);\r\n\r\n this.state = {\r\n formData: { ...props.data, language: i18n.language },\r\n waitingEmailCheck: false,\r\n inputErrors: {\r\n email: false,\r\n password: false,\r\n passwordValid: false\r\n },\r\n validForm: false\r\n };\r\n }\r\n\r\n public handleFormChange = (name: string, value: any) => {\r\n const formData = Object.assign({}, this.state.formData);\r\n formData[name] = value;\r\n this.setState({ formData });\r\n };\r\n\r\n public previousPage = () => {\r\n window.location.replace('https://arxis.io/');\r\n };\r\n\r\n public storeForm = () => {\r\n const inputErrors = Object.assign({}, this.state.inputErrors);\r\n let valid = true;\r\n\r\n Object.keys(this.state.formData).map(key => {\r\n if (key in this.state.inputErrors) {\r\n if (\r\n this.state.formData[key] === false ||\r\n this.state.formData[key] === '' ||\r\n this.state.formData[key] === 0\r\n ) {\r\n inputErrors[key] = true;\r\n valid = false;\r\n } else {\r\n inputErrors[key] = false;\r\n }\r\n }\r\n });\r\n if (this.state.formData.password !== this.state.formData.passwordValid) {\r\n inputErrors.passwordValid = true;\r\n valid = false;\r\n }\r\n\r\n this.setState({ inputErrors });\r\n\r\n this.props.storeInformation(this.state.formData);\r\n if (valid) {\r\n this.setState({ waitingEmailCheck: true });\r\n this.props.getEmailAvailable(this.state.formData.email).then(result => {\r\n if (result.IsSuccess) this.props.history.push(OrganizationRoute.path);\r\n else {\r\n if (result.Errors && result.Errors[0].errorCode === 'LTX3020') {\r\n const errors = Object.assign({}, this.state.inputErrors);\r\n errors.email = true;\r\n this.setState({ inputErrors: errors });\r\n\r\n this.props.showNotification(i18n.t('register.emailAlreadyInUse'), 'error');\r\n } else\r\n this.props.showNotification(\r\n i18n.t('notification.errCheckingEmail') + mapError(result.Errors),\r\n 'error'\r\n );\r\n }\r\n\r\n this.setState({ waitingEmailCheck: false });\r\n });\r\n }\r\n };\r\n\r\n public render() {\r\n const languageHanlder = (e: React.ChangeEvent): void => {\r\n this.setState({\r\n formData: { ...this.state.formData, language: (e.target as HTMLInputElement).value }\r\n });\r\n i18n.changeLanguage((e.target as HTMLInputElement).value);\r\n };\r\n return (\r\n
\r\n \r\n
\r\n {t =>
{t('account.sLanguage')}
}
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n {t => (\r\n \r\n )}\r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state: ApplicationState): StateProps => ({\r\n data: state.account.accountFormData\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch: any): DispatchProps => ({\r\n getEmailAvailable: (email: string) => dispatch(accountActions.checkEmailAvailableThunk(email)),\r\n showNotification: (message: string, type: MessageType) =>\r\n dispatch(showNotification(message, type)),\r\n storeInformation: (data: RegisterAccountFormData) => dispatch(accountActions.storeNewData(data))\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(RegisterAccountPage);\r\n","import { createSelector } from 'reselect';\r\nimport { AccountState } from './types';\r\n\r\nexport const getState = (state: AccountState) => state;\r\nexport const getRegisterState = (state: AccountState) => state.accountFormData;\r\n\r\n// export const getLoggedin = createSelector(getState, s => s.loggedin);\r\n// export const getOrganization = createSelector(getState, s => s.organizations);\r\n\r\nexport const registerState = createSelector(getRegisterState, s => s);\r\n","import { css } from '@emotion/core';\r\nimport styled from '@emotion/styled';\r\nimport { timingSafeEqual } from 'crypto';\r\nimport * as React from 'react';\r\nimport { Translation } from 'react-i18next';\r\nimport i18n from 'src/i18n';\r\nimport { connect } from 'react-redux';\r\nimport { RouteComponentProps } from 'react-router-dom';\r\nimport { Dispatch } from 'redux';\r\nimport { XContainer } from 'src/components/layout/XContainer';\r\nimport XForm from 'src/components/layout/XForm';\r\nimport XFormButtons from 'src/components/layout/XFormButtons';\r\nimport XImageEditor from 'src/components/layout/XImageEditor';\r\nimport { ApiResult } from 'src/helpers/apiClient';\r\nimport { mapError } from 'src/helpers/errorMap';\r\nimport { showNotification } from 'src/store/layout/actions';\r\nimport { MessageType } from 'src/store/layout/types';\r\nimport { ApplicationState } from '../../store';\r\nimport * as accountActions from '../../store/accounts/actions';\r\nimport * as accountSelects from '../../store/accounts/selectors';\r\nimport { RegisterAccountFormData } from '../../store/accounts/types';\r\nimport OrganizationDetails from '../myltx/account/OrganizationDetails';\r\n\r\ntype StateProps = { data: RegisterAccountFormData };\r\n\r\ntype DispatchProps = {\r\n storeInformation: (data: RegisterAccountFormData) => void;\r\n createAccount: (param: RegisterAccountFormData) => Promise;\r\n showNotification: (message: string, type: MessageType) => void;\r\n};\r\n\r\ntype OwnProps = {};\r\n\r\ntype AllProps = StateProps & DispatchProps & OwnProps & RouteComponentProps;\r\n\r\ntype State = {\r\n formData: RegisterAccountFormData;\r\n inputErrors: any;\r\n waitingRegistration: boolean;\r\n};\r\n\r\nclass AdditionalInfoPage extends React.Component {\r\n editor: any;\r\n setEditorRef: (editor: any) => any;\r\n\r\n constructor(props: AllProps) {\r\n super(props);\r\n this.setEditorRef = editor => (this.editor = editor);\r\n\r\n this.state = {\r\n waitingRegistration: false,\r\n formData: props.data,\r\n inputErrors: {\r\n imageURL: false,\r\n description: false,\r\n website: false\r\n // iban: false,\r\n // btwNumber: false\r\n }\r\n };\r\n }\r\n\r\n public componentDidMount() {\r\n if (!this.state.formData.email || this.state.formData.email === '')\r\n this.props.history.push('/register');\r\n }\r\n\r\n public handleFormChange = (name: string, value: any) => {\r\n const formData = Object.assign({}, this.state.formData);\r\n formData[name] = value;\r\n this.setState({ formData });\r\n };\r\n\r\n public previousPage = () => {\r\n this.props.history.goBack();\r\n };\r\n\r\n public async storeForm() {\r\n const inputErrors = Object.assign({}, this.state.inputErrors);\r\n const valid = true;\r\n // any error checks here?\r\n this.setState({ inputErrors });\r\n\r\n const data = this.state.formData;\r\n const imgResult = await this.editor.getResult();\r\n if (imgResult) {\r\n data.image = imgResult;\r\n this.handleFormChange('image', imgResult);\r\n }\r\n\r\n if (valid) {\r\n this.setState({ waitingRegistration: true });\r\n this.props.storeInformation(data);\r\n this.props.createAccount(data).then(result => {\r\n this.setState({ waitingRegistration: false });\r\n if (result.IsSuccess) {\r\n this.props.history.push('/confirmationemailsent');\r\n } else {\r\n if (result.Errors && result.Errors[0].errorCode === 'LTX3020')\r\n this.props.showNotification(i18n.t('register.emailAlreadyInUse'), 'error');\r\n else\r\n this.props.showNotification(\r\n i18n.t('register.error') + mapError(result.Errors),\r\n 'error'\r\n );\r\n }\r\n });\r\n }\r\n }\r\n\r\n public render() {\r\n return (\r\n \r\n {t => (\r\n
\r\n {t('register.companyLogo')} \r\n {\r\n this.handleFormChange('image', blob);\r\n }}\r\n />\r\n\r\n await this.storeForm()}\r\n callback={this.handleFormChange}\r\n margin={false}\r\n fields={[\r\n { title: t('account.desc'), name: 'description', multiline: true, maxLength: 5000 },\r\n { title: 'Website', name: 'website', maxLength: 255 }\r\n // { title: 'IBAN-nummer', name: 'iban' },\r\n // { title: 'Btw-nummer', name: 'btwNumber' }\r\n ]}\r\n />\r\n await this.storeForm()}\r\n cancelText={t('tooltip.PREVIOUS')}\r\n style={{ padding: '15px 0 0 0' }}\r\n saveText={t('register.Register')}\r\n enabled={!this.state.waitingRegistration}\r\n loading={this.state.waitingRegistration}\r\n />\r\n
\r\n )}\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state: ApplicationState): StateProps => ({\r\n data: accountSelects.getRegisterState(state.account)\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch: any): DispatchProps => ({\r\n showNotification: (message: string, type: MessageType) =>\r\n dispatch(showNotification(message, type)),\r\n storeInformation: (data: RegisterAccountFormData) => dispatch(accountActions.storeNewData(data)),\r\n createAccount: (param: RegisterAccountFormData) =>\r\n dispatch(accountActions.createAccountThunk(param))\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(AdditionalInfoPage);\r\n\r\nexport const RegisterLoginContent = styled('div')({\r\n margin: '25px',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n height: '75%'\r\n});\r\n\r\nconst LogoLabel = styled.div`\r\n padding: 0 15px;\r\n color: #aaa;\r\n`;\r\n","import styled from '@emotion/styled';\r\nimport * as React from 'react';\r\nimport { Translation } from 'react-i18next';\r\nimport { connect } from 'react-redux';\r\nimport { RouteComponentProps } from 'react-router-dom';\r\nimport XForm from 'src/components/layout/XForm';\r\nimport XFormButtons from 'src/components/layout/XFormButtons';\r\nimport { Countries } from 'src/constants/Countries';\r\nimport { OrganizationType } from 'src/models/Organization';\r\nimport { showNotification } from 'src/store/layout/actions';\r\nimport { MessageType } from 'src/store/layout/types';\r\nimport { ApplicationState } from '../../store';\r\nimport * as accountActions from '../../store/accounts/actions';\r\nimport * as accountSelects from '../../store/accounts/selectors';\r\nimport { RegisterAccountFormData } from '../../store/accounts/types';\r\nimport { AdditionalInfoRoute } from './RegisterRouter';\r\n\r\ntype StateProps = { data: RegisterAccountFormData };\r\n\r\ntype DispatchProps = {\r\n storeInformation: (data: RegisterAccountFormData) => void;\r\n showNotification: (message: string, type: MessageType) => void;\r\n};\r\n\r\ntype OwnProps = {};\r\n\r\ntype AllProps = StateProps & DispatchProps & OwnProps & RouteComponentProps;\r\n\r\ntype State = {\r\n formData: RegisterAccountFormData;\r\n inputErrors: any;\r\n waitingRegistration: boolean;\r\n};\r\n\r\nclass RegisterOrganizationPage extends React.Component {\r\n constructor(props: AllProps) {\r\n super(props);\r\n\r\n this.state = {\r\n waitingRegistration: false,\r\n formData: props.data,\r\n inputErrors: {\r\n organizationType: false,\r\n name: false,\r\n street: false,\r\n houseNumber: false,\r\n postalCode: false,\r\n city: false,\r\n country: false\r\n }\r\n };\r\n }\r\n\r\n public componentDidMount() {\r\n if (!this.state.formData.email || this.state.formData.email === '')\r\n this.props.history.push('/register');\r\n }\r\n\r\n public handleFormChange = (name: string, value: string) => {\r\n const formData = Object.assign({}, this.state.formData);\r\n formData[name] = value;\r\n this.setState({ formData });\r\n };\r\n\r\n public previousPage = () => {\r\n this.props.history.goBack();\r\n };\r\n\r\n public storeForm = () => {\r\n const inputErrors = Object.assign({}, this.state.inputErrors);\r\n let valid = true;\r\n Object.keys(this.state.formData).map(key => {\r\n if (key in this.state.inputErrors) {\r\n if (\r\n !this.state.formData[key] ||\r\n this.state.formData[key] === '' ||\r\n this.state.formData[key] === 0\r\n ) {\r\n inputErrors[key] = true;\r\n valid = false;\r\n } else {\r\n inputErrors[key] = false;\r\n }\r\n }\r\n });\r\n\r\n this.setState({ inputErrors });\r\n this.props.storeInformation(this.state.formData);\r\n\r\n if (valid) {\r\n this.props.history.push(AdditionalInfoRoute.path);\r\n }\r\n };\r\n\r\n public render() {\r\n return (\r\n \r\n {t => (\r\n
\r\n \r\n \r\n
\r\n )}\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state: ApplicationState): StateProps => ({\r\n data: accountSelects.getRegisterState(state.account)\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch: any): DispatchProps => ({\r\n showNotification: (message: string, type: MessageType) =>\r\n dispatch(showNotification(message, type)),\r\n storeInformation: (data: RegisterAccountFormData) => dispatch(accountActions.storeNewData(data))\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(RegisterOrganizationPage);\r\n\r\nexport const RegisterLoginContent = styled('div')({\r\n margin: '25px',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n height: '75%'\r\n});\r\n","import * as React from 'react';\r\nimport { Route, RouteComponentProps, Switch } from 'react-router-dom';\r\nimport { CSSTransition, TransitionGroup } from 'react-transition-group';\r\n\r\nimport { Step, StepButton, StepLabel, Stepper } from '@material-ui/core';\r\nimport { XContainer } from 'src/components/layout/XContainer';\r\nimport { XPage } from 'src/components/layout/XPage';\r\nimport {\r\n XPaper,\r\n XPaperCenter,\r\n XPaperContainer,\r\n XPaperLabel,\r\n XPaperTitle,\r\n XPaperTitleLarge\r\n} from 'src/components/layout/XPaper';\r\nimport XPageRouter from 'src/components/shared/XPageRouter';\r\nimport { PageRoute } from 'src/models/Route';\r\nimport { RegisterAccountFormData } from '../../store/accounts/types';\r\nimport RegisterAccountPage from './RegisterAccountPage';\r\nimport AdditionalInfoPage from './RegisterAdditionalInformationPage';\r\nimport RegisterOrganizationPage from './RegisterOrganizationPage';\r\nimport { Translation } from 'react-i18next';\r\nimport i18n from 'src/i18n';\r\n\r\nconst registerPath = '/register';\r\n\r\nexport const AccountRoute: PageRoute = {\r\n path: `${registerPath}`,\r\n exact: true,\r\n component: RegisterAccountPage,\r\n title: 'Account'\r\n};\r\n\r\nexport const OrganizationRoute: PageRoute = {\r\n path: `${registerPath}/organization`,\r\n exact: true,\r\n component: RegisterOrganizationPage,\r\n title: i18n.t('myArxis.Organization')\r\n};\r\n\r\nexport const AdditionalInfoRoute: PageRoute = {\r\n path: `${registerPath}/additional`,\r\n exact: true,\r\n component: AdditionalInfoPage,\r\n title: 'Extra'\r\n};\r\n\r\nconst Routes: PageRoute[] = [AccountRoute, OrganizationRoute, AdditionalInfoRoute];\r\n\r\ntype State = {};\r\ntype StateProps = { data: RegisterAccountFormData };\r\ntype AllProps = RouteComponentProps & StateProps;\r\n\r\nclass RegisterRouter extends React.Component {\r\n constructor(props: AllProps) {\r\n super(props);\r\n }\r\n\r\n public render() {\r\n let active = 0;\r\n for (let i = 0; i < Routes.length; i++) {\r\n if (this.props.location.pathname === Routes[i].path) {\r\n active = i;\r\n }\r\n }\r\n return (\r\n \r\n \r\n \r\n {t => {t('register.register')}}\r\n\r\n \r\n \r\n \r\n {Routes.map((route, index) => {\r\n let title: any = route.title;\r\n if (index === active) {\r\n title = {route.title};\r\n }\r\n return (\r\n \r\n {\r\n this.props.history.push(route.path);\r\n }}>\r\n {title}\r\n \r\n \r\n );\r\n })}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default RegisterRouter;\r\n","import * as React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { RouteComponentProps } from 'react-router-dom';\r\n\r\nimport styled from '@emotion/styled';\r\nimport XLTXInformation from 'src/components/domain/XLTXInformation';\r\nimport { XPaper } from 'src/components/layout/XPaper';\r\nimport { ApplicationState } from 'src/store';\r\nimport Logo from '../../style/images/logos/main.svg';\r\nimport { LeftSide, LeftSideInner, LTXLogo, RightSide } from '../login/LoginPage.style';\r\n\r\nimport SuccesImage from 'src/style/images/envelope.svg';\r\nimport { Translation } from 'react-i18next';\r\n\r\ntype OwnProps = {};\r\n\r\ntype State = {};\r\n\r\ntype DispatchProps = {};\r\n\r\ntype AllProps = OwnProps & DispatchProps & RouteComponentProps<{ emailCode: string }>;\r\n\r\nclass ConfirmationEmailSentPage extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n }\r\n\r\n public render() {\r\n return (\r\n \r\n \r\n \r\n \r\n {t => (\r\n \r\n
\r\n \r\n
\r\n {t('register.confirmationEmailSent')}\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\nconst mapStateToProps = () => {\r\n return {};\r\n};\r\n\r\nconst mapDispatchToProps = (): DispatchProps => ({});\r\nexport default connect(mapStateToProps, mapDispatchToProps)(ConfirmationEmailSentPage);\r\n\r\nconst LogoutLayout = styled.div`\r\n height: 100vh;\r\n overflow: hidden;\r\n background: rgb(45, 128, 194);\r\n display: flex;\r\n`;\r\n\r\nconst LogoutInner = styled(XPaper)`\r\n padding: 30px;\r\n text-align: center;\r\n width: 500px;\r\n min-height: 40px;\r\n`;\r\n","import * as React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { Link, Redirect, RouteComponentProps } from 'react-router-dom';\r\n\r\nimport styled from '@emotion/styled';\r\nimport { LinearProgress } from '@material-ui/core';\r\nimport Cookies from 'js-cookie';\r\nimport { Action } from 'redux';\r\nimport { ThunkDispatch } from 'redux-thunk';\r\nimport XLTXInformation from 'src/components/domain/XLTXInformation';\r\nimport XField from 'src/components/layout/XField';\r\nimport XFormButtons from 'src/components/layout/XFormButtons';\r\nimport { XPaper } from 'src/components/layout/XPaper';\r\nimport { ApiResult } from 'src/helpers/apiClient';\r\nimport { mapError } from 'src/helpers/errorMap';\r\nimport { ApplicationState } from 'src/store';\r\nimport { sendPasswordResetThunk } from 'src/store/accounts/actions';\r\nimport { AuthenticationState } from 'src/store/authentication/types';\r\nimport { showNotification } from 'src/store/layout/actions';\r\nimport { MessageType } from 'src/store/layout/types';\r\nimport Logo from '../../style/images/logos/main.svg';\r\nimport { LeftSide, LeftSideInner, LTXLogo, RightSide } from '../login/LoginPage.style';\r\n\r\ntype OwnProps = {};\r\n\r\ntype State = { email: string; sent: boolean; loading: boolean };\r\n\r\ntype DispatchProps = {\r\n sendPasswordReset: (email: string) => Promise;\r\n showNotification: (text: string, type?: MessageType) => void;\r\n};\r\n\r\ntype AllProps = OwnProps & DispatchProps & RouteComponentProps;\r\n\r\nclass PasswordForgottenPage extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n this.state = { email: '', sent: false, loading: false };\r\n }\r\n\r\n public sent() {\r\n this.setState({ loading: true });\r\n this.props.sendPasswordReset(this.state.email).then(apiResult => {\r\n if (!apiResult.IsSuccess) {\r\n this.props.showNotification(\r\n 'Er ging iets mis bij het versturen van de email: ' + mapError(apiResult.Errors),\r\n 'error'\r\n );\r\n this.setState({ loading: false });\r\n } else {\r\n this.setState({ sent: true });\r\n }\r\n });\r\n }\r\n\r\n public handleKeyPress = (e: any) => {\r\n if (e.key === 'Enter') {\r\n this.setState({ email: e.target.value });\r\n this.sent();\r\n }\r\n };\r\n\r\n public render() {\r\n return (\r\n \r\n \r\n \r\n {!this.state.sent ? (\r\n \r\n \r\n Wachtwoord vergeten? Vul hieronder je email adres in om je wachtwoord the\r\n resetten.\r\n \r\n this.setState({ email: e.target.value })}\r\n onKeyPress={this.handleKeyPress}\r\n placeholder=\"Email adres\"\r\n />\r\n this.props.history.goBack()}\r\n onSave={e => this.sent()}\r\n saveText=\"verstuur\"\r\n cancelText=\"terug\"\r\n enabled={!this.state.loading}\r\n loading={this.state.loading}\r\n />\r\n \r\n ) : (\r\n \r\n Er is een bevestiging verzonden naar je email adres, check je inbox om je wachtwoord\r\n opnieuw in te stellen.\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\nconst mapStateToProps = (state: ApplicationState) => {\r\n return {};\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch: any): DispatchProps => ({\r\n showNotification: (text: string, type?: MessageType) => dispatch(showNotification(text, type)),\r\n sendPasswordReset: (email: string) => dispatch(sendPasswordResetThunk(email))\r\n});\r\nexport default connect(mapStateToProps, mapDispatchToProps)(PasswordForgottenPage);\r\n\r\nconst LogoutLayout = styled.div`\r\n height: 100vh;\r\n overflow: hidden;\r\n background: rgb(45, 128, 194);\r\n display: flex;\r\n`;\r\n\r\nconst LogoutInner = styled(XPaper)`\r\n padding: 30px;\r\n text-align: center;\r\n width: 500px;\r\n flex: 1;\r\n`;\r\n\r\nconst StyledDiv = styled.div`\r\n text-align: left;\r\n margin-bottom: 20px;\r\n`;\r\n","import * as React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { Link, Redirect, RouteComponentProps } from 'react-router-dom';\r\n\r\nimport styled from '@emotion/styled';\r\nimport { LinearProgress } from '@material-ui/core';\r\nimport Cookies from 'js-cookie';\r\nimport { Action } from 'redux';\r\nimport { ThunkDispatch } from 'redux-thunk';\r\nimport XLTXInformation from 'src/components/domain/XLTXInformation';\r\nimport XButton, { XButtonStyle } from 'src/components/layout/XButton';\r\nimport XField from 'src/components/layout/XField';\r\nimport XFormButtons from 'src/components/layout/XFormButtons';\r\nimport { XPaper } from 'src/components/layout/XPaper';\r\nimport { XRow, XRowCell } from 'src/components/layout/XRow';\r\nimport { ApiResult } from 'src/helpers/apiClient';\r\nimport { mapError } from 'src/helpers/errorMap';\r\nimport { ApplicationState } from 'src/store';\r\nimport { resetPasswordThunk } from 'src/store/accounts/actions';\r\nimport { AuthenticationState } from 'src/store/authentication/types';\r\nimport { showNotification } from 'src/store/layout/actions';\r\nimport { MessageType } from 'src/store/layout/types';\r\nimport Logo from '../../style/images/logos/main.svg';\r\nimport { LeftSide, LeftSideInner, LTXLogo, RightSide } from '../login/LoginPage.style';\r\nimport i18n from 'src/i18n';\r\nimport { Translation } from 'react-i18next';\r\n\r\ntype OwnProps = {};\r\n\r\ntype State = {\r\n password1: string;\r\n password2: string;\r\n error1: boolean;\r\n error2: boolean;\r\n reset: boolean;\r\n loading: boolean;\r\n};\r\n\r\ntype DispatchProps = {\r\n resetPassword: (code: string, password: string) => Promise;\r\n showNotification: (text: string, type?: MessageType) => void;\r\n};\r\n\r\ntype AllProps = OwnProps & DispatchProps & RouteComponentProps<{ code: string }>;\r\n\r\nclass ResetPasswordPage extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n this.state = {\r\n password1: '',\r\n password2: '',\r\n error1: false,\r\n error2: false,\r\n reset: false,\r\n loading: false\r\n };\r\n }\r\n\r\n public changeForm1(val: string) {\r\n this.setState({ password1: val, error1: val.length < 3 });\r\n }\r\n public changeForm2(val: string) {\r\n this.setState({ password2: val, error2: val !== this.state.password1 });\r\n }\r\n\r\n public resetPassword() {\r\n if (this.state.error1 || this.state.error2 || this.state.password1.length === 0) return;\r\n\r\n const code = this.props.match.params.code;\r\n this.setState({ loading: true });\r\n this.props.resetPassword(code, this.state.password1).then(result => {\r\n if (result.IsSuccess) {\r\n this.setState({ reset: true });\r\n } else {\r\n this.props.showNotification(\r\n i18n.t('register.resetPassError') + mapError(result.Errors),\r\n 'error'\r\n );\r\n this.setState({ loading: false });\r\n }\r\n });\r\n }\r\n\r\n public render() {\r\n return (\r\n \r\n \r\n \r\n {t => (\r\n \r\n {!this.state.reset ? (\r\n \r\n {t('register.enterNewPass')}\r\n this.changeForm1(e.target.value)}\r\n />\r\n this.changeForm2(e.target.value)}\r\n />\r\n \r\n \r\n \r\n this.resetPassword()}\r\n active={!this.state.loading}\r\n loading={this.state.loading}>\r\n {t('tooltip.edit')}\r\n \r\n \r\n \r\n \r\n ) : (\r\n \r\n
\r\n {t('register.passwordHasBeenReset')}{' '}\r\n {t('login.login')}{' '}\r\n {t('register.withYourNewPass')}\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\nconst mapStateToProps = (state: ApplicationState) => {\r\n return {};\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch: any): DispatchProps => ({\r\n showNotification: (text: string, type?: MessageType) => dispatch(showNotification(text, type)),\r\n resetPassword: (code: string, password: string) => dispatch(resetPasswordThunk(code, password))\r\n});\r\nexport default connect(mapStateToProps, mapDispatchToProps)(ResetPasswordPage);\r\n\r\nconst LogoutLayout = styled.div`\r\n height: 100vh;\r\n background: rgb(45, 128, 194);\r\n overflow: hidden;\r\n display: flex;\r\n`;\r\n\r\nconst LogoutInner = styled(XPaper)`\r\n padding: 30px;\r\n text-align: center;\r\n width: 500px;\r\n`;\r\n\r\nconst StyledDiv = styled.div`\r\n text-align: left;\r\n margin-bottom: 20px;\r\n`;\r\n\r\nconst StyledLink = styled(Link)`\r\n font-weight: bold;\r\n text-decoration: underline;\r\n`;\r\n\r\nconst StyledButton = styled(XButton)`\r\n margin-top: 10px;\r\n width: 100%;\r\n`;\r\n","import * as React from 'react';\r\n\r\ninterface ErrorProps {\r\n title?: string;\r\n description?: string;\r\n}\r\n\r\nconst ErrorPage: React.SFC = props => {\r\n return (\r\n \r\n

Error: {props.title}

\r\n

{props.description}

\r\n
\r\n );\r\n};\r\n\r\nexport default ErrorPage;\r\n","import { createSelector } from 'reselect';\r\nimport { MessageState } from './types';\r\n\r\nexport const getMessages = (state: MessageState) => state;\r\n\r\nexport const getMessageState = createSelector(getMessages, s => s.messages);\r\n\r\nexport const getCatalogMessageState = createSelector(getMessages, s => s.catalogMessages);\r\n\r\nexport const getOrganizationCatalogMessageState = createSelector(getMessages, s => s.catalogMessages);\r\n\r\nexport const getOrderMessageState = createSelector(getMessages, s => s.orderMessages);\r\n","import * as React from 'react';\r\nimport { Translation } from 'react-i18next';\r\nimport { connect } from 'react-redux';\r\nimport XMessage from 'src/components/domain/XMessage';\r\nimport { XPaperCenter, XPaperContent, XPaperTitle } from 'src/components/layout/XPaper';\r\nimport { Message, MessageType } from 'src/models/Message';\r\nimport { ApplicationState } from 'src/store';\r\nimport { AuthenticationAccount } from 'src/store/authentication/types';\r\nimport { getMessagesThunk } from 'src/store/messages/actions';\r\n\r\nimport * as messageSelects from '../../store/messages/selectors';\r\n\r\n// Props\r\ntype StateProps = {\r\n messages: Message[];\r\n account: AuthenticationAccount;\r\n};\r\n\r\ntype DispatchProps = {\r\n getMessages: (id: string) => any;\r\n};\r\n\r\ntype OwnProps = {\r\n title: string;\r\n type?: MessageType;\r\n};\r\n\r\ntype AllProps = StateProps & DispatchProps & OwnProps;\r\n\r\n// State\r\ntype State = {\r\n sort: number;\r\n};\r\n\r\nclass ValidationPage extends React.Component {\r\n constructor(props: AllProps) {\r\n super(props);\r\n this.state = {\r\n sort: 0\r\n };\r\n }\r\n\r\n public componentDidMount() {\r\n this.props.getMessages(this.props.account.organizationId);\r\n }\r\n\r\n public render() {\r\n return (\r\n \r\n {this.props.title}\r\n \r\n {t => {t('validation.Validation')}}\r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state: ApplicationState): StateProps => {\r\n return {\r\n account: state.authentication.account,\r\n messages: messageSelects.getMessageState(state.messages)\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch: any): DispatchProps => ({\r\n getMessages: (organizationId: string) => dispatch(getMessagesThunk(organizationId))\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(ValidationPage);\r\n","import * as React from 'react';\r\nimport { RouteComponentProps } from 'react-router-dom';\r\nimport XPageRouter from 'src/components/shared/XPageRouter';\r\nimport { PageRoute } from 'src/models/Route';\r\n\r\nimport ValidationPage from './ValidationPage';\r\n\r\nexport const ValidationRoute: PageRoute = {\r\n path: `/validation`,\r\n exact: true,\r\n component: ValidationPage\r\n};\r\n\r\nconst Routes: PageRoute[] = [ValidationRoute];\r\n\r\ntype State = {};\r\ntype AllProps = RouteComponentProps;\r\n\r\nclass ValidationRouter extends React.Component {\r\n constructor(props: AllProps) {\r\n super(props);\r\n }\r\n\r\n public render() {\r\n return ;\r\n }\r\n}\r\n\r\nexport default ValidationRouter;\r\n","import * as React from 'react';\r\nimport XNavigation from 'src/components/layout/XNavigation';\r\nimport { XSideBar, XSideBarHeader } from 'src/components/layout/XSideBar';\r\n\r\nimport { ValidationRoute } from './ValidationRouter';\r\n\r\ntype OwnProps = {};\r\n\r\ntype AllProps = OwnProps;\r\n\r\nconst ValidationSideBar: React.SFC = props => (\r\n \r\n Validatie\r\n \r\n \r\n);\r\n\r\nexport default ValidationSideBar;\r\n","import React, { FC, Suspense } from 'react';\r\nimport { RouteComponentProps } from 'react-router-dom';\r\nimport AppLoadingPage from 'src/pages/index/pages/AppLoadingPage';\r\nimport ErrorBoundary from 'src/components/shared/ErrorBoundary';\r\n\r\nconst OrdersRouter = React.lazy(() => import('./OrdersRouter'));\r\n\r\ntype AllProps = RouteComponentProps;\r\n\r\nconst OrdersApp: FC = props => {\r\n return (\r\n \r\n }>\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default OrdersApp;\r\n","import * as React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport XNavigation, { ILink } from 'src/components/layout/XNavigation';\r\nimport { XSideBar } from 'src/components/layout/XSideBar';\r\nimport { OrganizationType } from 'src/models/Organization';\r\nimport { ApplicationState } from 'src/store';\r\nimport { AuthenticationAccount } from 'src/store/authentication/types';\r\nimport i18n from 'src/i18n';\r\n\r\ntype StateProps = {\r\n account: AuthenticationAccount;\r\n};\r\n\r\ntype AllProps = StateProps;\r\n\r\nclass StartSideBar extends React.Component {\r\n public render() {\r\n const routes: ILink[] = [];\r\n if (this.props.account.organizationType === OrganizationType.Retailer) {\r\n routes.push(\r\n {\r\n name: i18n.t('orders.actual'),\r\n route: '/app/dealer-portal',\r\n defaultActive: true\r\n },\r\n {\r\n name: i18n.t('orders.history'),\r\n route: '/app/dealer-portal/order-history',\r\n defaultActive: false\r\n }\r\n );\r\n }\r\n return (\r\n routes.length > 1 && (\r\n \r\n \r\n \r\n )\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state: ApplicationState): StateProps => {\r\n return {\r\n account: state.authentication.account\r\n };\r\n};\r\n\r\nexport default connect(mapStateToProps, {})(StartSideBar);\r\n","import { PortalPageRoute, PublicPageRoute } from 'src/models/Route';\r\n\r\nimport XNavigationBar from '../components/shared/XNavigationBar';\r\n\r\nimport PortalLayout from '../containers/PortalLayout';\r\nimport PublicLayout from '../containers/PublicLayout';\r\n\r\nimport BrowseRouter from './catalogs/CatalogsRouter';\r\nimport BrowseSideBar from './catalogs/CatalogsSideBar';\r\n\r\nimport StocksRouter from './stock/StocksRouter';\r\n\r\nimport ConnectionsRouter from './connections/ConnectionsRouter';\r\nimport ConnectionsSideBar from './connections/ConnectionsSideBar';\r\n\r\nimport ExploreSideBar from './explore/ExploreSideBar';\r\nimport ExploreRouter from './explore/ExploreRouter';\r\n\r\nimport IndexPage from './index/IndexPage';\r\nimport LoginPage from './login/LoginPage';\r\nimport LogoutPage from './login/LogoutPage';\r\n\r\nimport MyLtxRouter from './myltx/MyLtxRouter';\r\nimport MyLtxSideBar from './myltx/MyLtxSideBar';\r\n\r\nimport MyAccountRouter from './myltx/MyAccountRouter';\r\nimport MyAccountSideBar from './myltx/MyAccountSideBar';\r\n\r\nimport ConfirmationPage from './register/ConfirmationPage';\r\nimport RegisterRouter from './register/RegisterRouter';\r\n\r\nimport ConfirmationEmailSentPage from './register/ConfirmationEmailSentPage';\r\nimport PasswordForgottenPage from './register/PasswordForgottenPage';\r\nimport ResetPasswordPage from './register/ResetPasswordPage';\r\nimport ErrorPage from './system/ErrorPage';\r\nimport NotFoundPage from './system/NotFoundPage';\r\nimport ValidationRouter from './validation/ValidationRouter';\r\nimport ValidationSideBar from './validation/ValidationSideBar';\r\nimport DomainRedirectPage from './index/pages/DomainRedirectPage';\r\n\r\nimport OrdersApp from 'src/purchase-order-module/OrdersApp';\r\nimport OrdersSideBar from 'src/purchase-order-module/OrdersSideBar';\r\n\r\nimport { OrganizationType } from 'src/models/Organization';\r\n\r\nconst portalPageDefaults = {\r\n exact: false,\r\n layout: PortalLayout,\r\n navbar: XNavigationBar\r\n};\r\n\r\nexport const HomePageRoute: PortalPageRoute = {\r\n ...portalPageDefaults,\r\n path: '/app/explore',\r\n main: ExploreRouter,\r\n title: 'Explore',\r\n shouldShowCallback: (isAdmin: boolean) => !isAdmin,\r\n shouldMapCallback: (isAdmin: boolean) => !isAdmin\r\n};\r\n\r\nexport const NavPortalPages: PortalPageRoute[] = [\r\n HomePageRoute,\r\n {\r\n ...portalPageDefaults,\r\n path: '/app/my',\r\n main: MyLtxRouter,\r\n sidebar: MyLtxSideBar,\r\n title: 'Organization',\r\n shouldShowCallback: (isAdmin: boolean) => !isAdmin,\r\n shouldMapCallback: (isAdmin: boolean) => !isAdmin\r\n },\r\n {\r\n ...portalPageDefaults,\r\n path: '/app/profile',\r\n main: MyAccountRouter,\r\n sidebar: MyAccountSideBar,\r\n title: 'Account',\r\n shouldShowCallback: (isAdmin: boolean) => !isAdmin,\r\n shouldMapCallback: (isAdmin: boolean) => !isAdmin\r\n },\r\n {\r\n ...portalPageDefaults,\r\n path: '/app/dealer-portal',\r\n main: OrdersApp,\r\n sidebar: OrdersSideBar,\r\n title: 'Purchase',\r\n shouldShowCallback: (isAdmin: boolean, organizationType: OrganizationType) =>\r\n organizationType !== OrganizationType.Supplier || isAdmin\r\n }\r\n];\r\n\r\nexport const ValidationPages: PortalPageRoute[] = [\r\n ...NavPortalPages,\r\n {\r\n ...portalPageDefaults,\r\n path: '/validation',\r\n main: ValidationRouter,\r\n sidebar: ValidationSideBar,\r\n title: 'Validation'\r\n }\r\n];\r\n\r\nexport const PortalPages: PortalPageRoute[] = [...ValidationPages];\r\n\r\nconst publicPageDefaults = {\r\n exact: false,\r\n layout: PublicLayout\r\n};\r\n\r\nexport const LoginPageRoute: PublicPageRoute = {\r\n ...publicPageDefaults,\r\n path: '/login/:redirectURL?',\r\n component: LoginPage\r\n};\r\n\r\nexport const IndexPageRoute: PublicPageRoute = {\r\n ...publicPageDefaults,\r\n path: '/',\r\n exact: true,\r\n component: IndexPage\r\n};\r\n\r\nexport const DomainRedirectPageRoute: PublicPageRoute = {\r\n ...publicPageDefaults,\r\n path: '/ltx',\r\n exact: true,\r\n component: DomainRedirectPage\r\n};\r\n\r\nexport const NotFoundPageRoute: PublicPageRoute = {\r\n ...publicPageDefaults,\r\n path: '/404',\r\n component: NotFoundPage\r\n};\r\n\r\nexport const PublicPages: PublicPageRoute[] = [\r\n IndexPageRoute,\r\n DomainRedirectPageRoute,\r\n {\r\n ...publicPageDefaults,\r\n path: '/contact',\r\n exact: true,\r\n component: IndexPage\r\n },\r\n LoginPageRoute,\r\n {\r\n ...publicPageDefaults,\r\n path: '/ltx',\r\n exact: true,\r\n component: DomainRedirectPage\r\n },\r\n NotFoundPageRoute,\r\n {\r\n ...publicPageDefaults,\r\n path: '/logout',\r\n component: LogoutPage\r\n },\r\n {\r\n ...publicPageDefaults,\r\n path: '/register',\r\n component: RegisterRouter\r\n },\r\n {\r\n ...publicPageDefaults,\r\n path: '/confirm/:emailCode',\r\n component: ConfirmationPage\r\n },\r\n {\r\n ...publicPageDefaults,\r\n path: '/confirmationemailsent',\r\n component: ConfirmationEmailSentPage\r\n },\r\n {\r\n ...publicPageDefaults,\r\n path: '/resetPassword/:code',\r\n component: ResetPasswordPage\r\n },\r\n {\r\n ...publicPageDefaults,\r\n path: '/passwordForgotten',\r\n component: PasswordForgottenPage\r\n },\r\n {\r\n ...publicPageDefaults,\r\n path: '/500',\r\n component: ErrorPage\r\n },\r\n\r\n // Alias urls\r\n {\r\n ...publicPageDefaults,\r\n path: '/signin',\r\n component: LoginPage\r\n },\r\n {\r\n ...publicPageDefaults,\r\n path: '/signup',\r\n component: RegisterRouter\r\n },\r\n {\r\n ...publicPageDefaults,\r\n path: '/error',\r\n component: ErrorPage\r\n }\r\n];\r\n","module.exports = __webpack_public_path__ + \"static/media/Search.7ad806c0.svg\";","module.exports = __webpack_public_path__ + \"static/media/User.137f34e6.svg\";","module.exports = __webpack_public_path__ + \"static/media/Share.597020de.svg\";","module.exports = __webpack_public_path__ + \"static/media/PO.f45d02d0.svg\";","module.exports = __webpack_public_path__ + \"static/media/error-broken.c765fb76.svg\";","module.exports = __webpack_public_path__ + \"static/media/error.a9b23a7c.svg\";","module.exports = __webpack_public_path__ + \"static/media/ltx-logo.6a3841fa.svg\";","module.exports = __webpack_public_path__ + \"static/media/setting.4120f1a7.svg\";","module.exports = __webpack_public_path__ + \"static/media/user-plus.ff9c53ae.svg\";","module.exports = __webpack_public_path__ + \"static/media/message.fe00e513.svg\";","module.exports = __webpack_public_path__ + \"static/media/clipboard-notes.7a6e2ac8.svg\";","module.exports = __webpack_public_path__ + \"static/media/success.ceadcce4.svg\";","module.exports = __webpack_public_path__ + \"static/media/envelope.f3bb18d5.svg\";","module.exports = __webpack_public_path__ + \"static/media/404.d5eb37b3.svg\";","module.exports = __webpack_public_path__ + \"static/media/en.0b2080d0.svg\";","module.exports = __webpack_public_path__ + \"static/media/nl.e53fc83f.svg\";","module.exports = __webpack_public_path__ + \"static/media/location.4929e72b.svg\";","module.exports = __webpack_public_path__ + \"static/media/email.55b5e09e.svg\";","module.exports = __webpack_public_path__ + \"static/media/phone.8a0d7c30.svg\";","module.exports = \"data:image/jpeg;base64,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RaLc8N134A7ANfRQ4FdYWx4G7yGz6Ii4zAcrSDRHaGkWqMqF0+1QUkVTyTlSQFRoySK1TnShDEmcPUDhnSmiyACcthxjTo8j6R7KgAzNAGm55XdzN3QKnzliDb8jPt62Ky8KAVoXr/qKy21MwuLUoSmxvS4aaAuNSbTBe1WGGvMX0kYojarKOZgTh/x0eR9JsoJNkoNCGLyJOGIHUehxTYwjYns7TtSTXrqHwLjejF5Pmr/yr4cEogcJCBNhfR9/eifgD+PR5H0jv8iAk4UEaSYIOB7k08StXIa39vQZ75FYRJFINqxCMglmjaqNlDkuamSnalz0YKQqCwBig5DCP1UrWlx2aRSOZKlXArdcbfNqSZrsaRmtofkUnRIJKE5Hy6PI+muvZ8AMKSjTKCxJL9DhfQcfzXrzFCsSkvCyVnd5PRE74/8AFQBu1uC7axOgnSp0UFDMnfI6PI+mu/gb6/u7VNBnBpFQxjCr+3g5KBOcqTVr+0pDX9irUOp99lXBV7sEpguTtNLpvtyYvDiocqwNCY5/fo3Nld7Jh3z7vR8j6Qc9MoCHBgiZ4mp3m9MIm5GSRvQci28XiY3MvNLASBwjLKjVC2tFEIQiMV7sCJKfE6XBAGS41/RQfJcgMTnF6WER9OQIzDq1vQMXcoA2BhM3oMHRTdmM7F2feljQFWUmW7AijdtLQgm8sC7EwX6PI+lEObkY+J0YX+1rRU116BdjCxasTKixtd6Qe7FQQgFCwC6OsaZpSYJfYflfnT4GEzyf91pHOiqILbsDMRpNF1myNGf4vSwBJCckt/dKnSu/qZARdCky1HCJhLyYN2mhSUZQhCDclxNnJ4j18j7nyPufI+58iuRXIrkVyK5FciuRXIrkVyK5FciuRXIrkVyK5FciuRXIrkVyK5FcisiZr//aAAwDAQACAAMAAAAQ8888888888888888888888888884EcU8884w0888gY0888gk4888888sw08wcMc888888sU8cEo08888888Uc0Q408888888k8IsEU8888884oEsoU0888888sI0IQwU8888888sss8sc8888888888888888888888888888//EABQRAQAAAAAAAAAAAAAAAAAAAHD/2gAIAQMBAT8QKf/EABQRAQAAAAAAAAAAAAAAAAAAAHD/2gAIAQIBAT8QKf/EACcQ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\"","module.exports = \"data:image/png;base64,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\"","module.exports = __webpack_public_path__ + \"static/media/cotap.3003f9b2.png\";","module.exports = __webpack_public_path__ + \"static/media/VanDyck.cfad3400.png\";","module.exports = __webpack_public_path__ + \"static/media/logo-eijerkamp.298573ff.jpg\";","module.exports = __webpack_public_path__ + \"static/media/Maxfurn.5c96cf62.png\";","module.exports = __webpack_public_path__ + \"static/media/Bopita.61aa4610.png\";","module.exports = __webpack_public_path__ + \"static/media/Gero wonen.db555dfa.jpg\";","module.exports = __webpack_public_path__ + \"static/media/Livingfurn.6a9c4ec2.jpg\";","module.exports = \"data:image/png;base64,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\"","module.exports = __webpack_public_path__ + \"static/media/LS bedding.725e56a1.png\";","module.exports = __webpack_public_path__ + \"static/media/Groterinwonen.0475820e.png\";","module.exports = __webpack_public_path__ + \"static/media/HjortKnudsen.553b38ef.jpg\";","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAASYAAACrCAMAAAD8Q8FaAAAAflBMVEUSExP///8AAAANDg5DREQ7PDz6+vqJiYnGxsbBwcHNzc1zc3Po6Ojg4ODk5OQFBwfV1dVISUnz8/OkpKSqqqqQkZE3Nzft7e2ysrK5ubnS0tJsbGwwMTFgYGCFhYUoKSkfICCampp9fX1fX19UVVUkJSVGR0caGxtPUFCFhoaer/s5AAANM0lEQVR4nO2da0PiPBOGYQIVUCmCHAQUQVx5//8ffOkpx5lk6tLafcz9aV1Cm1xNk8nMJPT+DKKC+tMbpiIqoHTYG4peVEAiYuIoYmIpYmIpYmIpYmIpYmIpYmIpYmIpYmIpYmIpYmIpYmIpYmIpYmIpYmIpYmIpYmIpYmIpYmIpYmIpYmIpYmIpYmIpYmLp12ASoJTW//YvwJRmaFb3y+PzZvyyOC5Pq9qs2Jjge0rZF8EqV684Ve/LcbLum1pvl5caF2Fjgsd+8g31n3ROsCEv0l+6dRZ7+sJzVhOvnF9f5n1c8/EOgPkmsTE9EDcLyMQ0owvO3HbDm+fC+3CtBXwu7G5kar1gXKYWpuktMFEP9qrk3akGTDwX3oW6k4D3Tbh+D7wXr01M4t1X8t6pMPiK3wXaB7Dg1G/aPUzw6iv5YlcY7n3FN972Cbj39FxNXcR09JV0BmV48RXf+toHYsSsXxcxedttDmNZh/D2h7WnfXDhdaV+NzH5r3E0awxn/5Xp9vnfVlPdwyR6/mdsmQTw7L/yH8qM9toRtrqHKR0Gyn4ZFQlZam9EA2tR6iAm2AXKnvQqp4NA6QXeQDjVql8HMR0DZcd6lWEZKD1BG+g3Olx1ENM4UNYwCXwLG7qB6SqpV78OYgouCy+qzkKECidfbr1F7aVn5zAJCD5obbhhDDFDd6oDxirOVOcwpU/Bwo8aprAZ7S5+Q6YWos5h4hh9n1VVGF0Pmeq+UcnuYWKs2KVJwJmw3LVyLYupUPcw+bxHpUYSE2OQsVsYWATyLvLzmBiTUAI1CtsuhaClhal7mDjFz0WtgyZ4Lmuq+05n6hym4Iou13NR66DBnuvVaGJwLVTImhpujelvQwa8tVZZ66AJnsv084ZNiOnifnB4fz+cl2PZ8W6NaTzTtH0k6zLf6gVn8uI813QRMBE9Vlljqgt+Z3TOwobZxt0szPc6agSTFYmkO/jELCivDVtW03P3CPP9Mfy8gd6anM3gJcCfWROYTGa0qYgv3Nlvbe4lYK45EgOTd2H92HOqleZRhY5h8geflPJZnjsQCq3m4AtcTlPM1Qm9WdcwMVZ0ha5jvmDZDn1pPuTX95oQK+LZwcYXefgBTPA/ZtOvgxPb5a/5eb3fQfITqq+dOoYpEACQug5O7LK648XzncSDgpmU0homfKJz/QDXwQIcc4Owr7Wpzmc1EV7zOmoNE97SR9cAu9oQDjxi5tPGXxet0qV+dpytljCJPe4/mrjT+Ae4oz11O80so/1TvFQov1rCBB946bG7qr+DO/u/1tR6cMhZWFOWXB21hYnwmL247reNa1zOqPiBTPbxLVX8uSs8tYWJyLJYuM2bucPMM9VX5ODsC8T8S5iIJf/SHVPW7mh/olxJKgDqeen+JUzECHuPuH7d0X5PrV6m/y1M4pMo/Yp4Zh33wBqo6X7ek34aGtP4n8FEekbOcHH+z+lMYyDddHKq8xgEj/8OJsqbP0wZHuwTkF4S6ef1OaG5yd8etYSJmOiSLxFMwOj33wW5YpOLWl94K5gbHVZLmIiX5mogh2OQD0CHEKSf15fX6R2cbps+bzW7LiZi5LgSEPsQpo2HpUxEdE13TZ9kC1PgbTNoBRPpuswKB0Nb13eGjJWr+CexGso1oroT7B95DqdWMJETXWbShLxLWR4T3eUOZeXFwZeb4e5gyJTCW8IcuNrBdCQKZ4sNbz/ol04l0ixiTXV25LNoOQy3+Cc/homazd68CArlQUvSLJJ+3kCnPFk7+1I4FIP+uUOYqCf9kSPwh2tXwncFuRIJpYBNBipomAKsKjfEE8tn1wYmOm8+N6L9gchi2UaaRep23ghUpu2pirEOl8pAQVITfwgTnWWRz9T+EF7hKyFfWxVA4gQa1tvRaGLacN0xCMiJbp3mt/YmVhQvBZ2iIm/HS3lxRNtUrWOisiyq/BOSgXRk0y+m5udlpbHY4pnhrWCi3phZOOmrXGjQyRfKPAxZFrh46+JWMFGDa7Ui8+QMlIYhHVvXtpd9qzt1JuorBGX0VE30ZKAUo1dPfFLX0BYiiO8qrM5gSsnaV+ludHqzjOuS9qXudGM4ZRx1BhNduFoo0MnyMm+QfHHn2hjMSbq35MsvaBkTmU64kp5syhBXTlzS7bbSqs9Ms9PEDAm3gYlsoZqkCH+SFjkh3W7G2rX23p7u5DfRqwhZlAraPjNsbGMntag723UnW470AEyDc7nKJaHTyMytK3V31DHDLs1jok0ePT3piBWYaxkn5GRoNTT9rLXZADnB5mcw0TEBzZWPGw16ARK2s3VlX6c/eQ/HaBUTOdHpWWzoAKb5Zj2RhZVVfxA1No4ws3pawETmzesnCaBTlLbeEoJ8lz6c15yzJ60UGU1oHRP5DujeemzsMXcRkJdxz20QvK1BmZgJBo1jEl9kUT0nEkm4NPOU6ZkeyziBM3Mg7womekVnesQQQ9zwv9L2JR5AZRqazk5YXI1josOx5nLKnRDN88zomQBfbwgYckaozmAin6q5TnAN8WcTE71FNcUbkMI5DOr5hzDZhgidsG0fRGQXNCNonlXtmTyiCAYbr89gzAtmfheTGCzvCNnBZnhjloQP8+M365YH6pbLAd2AFGA3xteUDy/3/ANCv3nYrOd8U7sou2TgY/qW/vpfCwzuNrO56lbJert5W9U5RPVXnMlbHMr7Nfj4eN29ni+D9zBbW78CUy6RFn0vJUZ8/5d/Daa/UsTEUsTEUsTEUsTEUsTEUouYcvvwO7NxB1T/8I/iz9T8M2gRZ3l859397vLu/bEFxwYnjfsebd8jrXQ+810XEfsomeNklKvwPKRPxZ+TInoNd+WnY/cM+aJSl025skoejysSJiyKy4wm5ZoU7ssLI7432IwwTdxTB8R+Un0K5ncneCq0IzYm6cfIXxv5Z7HMl65FPDoIZ3P1/0Jt/1cuytLZJO+DXJgKk7oOSS2BqmQov0uf5GCIi0lFNors28qXWOQFyhQHbMu/QDxqxEPUPLmFh1tiQsKOlHccwaTyDZMiM0N+98aY1IXzYLRyDmUpnuJQ/YWkDws0zoH/FIGGqQhl3hxT6TlvDlPVf7LXW9uBnHmNZGYk5m8lko7Q/qTHBYrHcXNM/VXaaxJT5bDMRg3tZc/3U1RvFRL1In3hK2TC0zHlZ+42gKk4IaopTKoDHYTe9oyMbB0SMtOjtY8zrWVYWNqIMuX7fm6PqT9IG8SkhqMz6HGANfREWgXFkJ+UUXGjl8PVTLmoOQ/ZLWIG44YpD9N88azL3fplYsom5wYxVW/W0TgTJ9mLdFX+2521tXjJohiT1VexN9TAdC3AwvQQMi+tzPqrTdYgpirtegzGJpQPkMOWG81RIZiqnamcFZGUbCu0+wRMTIGqW5imTWKSr9YajCyaJchMNifpQXs7ZRxFzXzISdYmphkP0zS0VrH3aZygOUwyhzL5LA2A4lbqlIDE0z3m8qx41cHcKtqJAjveED7XlCDbLW1M80YxVVX+KPvIsXqWZTfDNhhUb6d6MZQx4QambUzTb8x0DEzX4bU5THKkXpatKUcZqNqNWNYy71JN/2pXLpKmWWGq8i5OleXxd5jkk6mu2yAmWa9x2fhy/fhUvUWIwSgxKSRq/HfzHiWmY2lHzG+DSfam6piaRTXfNoGprPv0UNa8eDancgTHJhyJSSER7xUm18CUmOS5TtVK/ka96VC+xElVhyYwVUu3IuthXFpSi3JoR9OxkLFJPlrXcFKYbK/CjXrTyva+NIBJnm66Le9Q4NomZP1UuxOZ86VSS5DfbFCYrO0nPkzJo6YHJMlEx2Tl0jSAycqteYU/xh3RJT9iN8nlC/IzkBomMy2Mb4UjK2oNU2pNpo1gMt6EVWpk16IZ1urhVYOTtgHa/dkdDZO1p/5GVvhKWMdFNoJJT7edW8ed4jdU786yXNPJp4lwNTAZub111nROe3RMlv+rCUzG5r9r9zDSRvGf1dO25CyyhJkn1eeRQUTHZO6c8noIXgy5YQsDk3K1NodJq/kGjHxIYmOafsRLYvibsN0iBiZpzoYw2Tp4MZlDRzOYNC5Xm1s/cINKiSW3rAx83st8EtSzW2+Iydiw0AgmfSv8JTUOICQP+CESutFzk0xMekr9DTEZT64RTHpsLKuMqmni1E19B9u0Qgz4Bia9894Skz6JNoRJdo18FlbTlmf7nkBSw4nfB7UwCfVUbotJTaINYTLtIDWPHX23s6O+4z01kFWYql/vkberEfVFMMmxotxUph5vM5jE12ica1T+IEr1p/98H4CzzM6eLlZksgUsiuuNqpELnovrj5HdALAZoxo5BoHYV9Usz9dJB9V/MA97rJu4Y+V2+JYIZpsADpfdaXc58DJSyP/ACofMS1Vr7aCrRjJSbqA84/i/nt/0uxUxsRQxsRQxsRQxsRQxsRQxsRQxsRQxsRQxsRQxsRQxsRQxsRQxsRQxsRQxsRQxsRQxsRQxsRQxsRQxsRQxsRQxsRQxsRQxsRQxsSSG/wfCGs18H0dZRAAAAABJRU5ErkJggg==\"","module.exports = __webpack_public_path__ + \"static/media/HKLiving.5a71e766.png\";","module.exports = __webpack_public_path__ + \"static/media/Woonland.bb0c67d1.png\";","module.exports = __webpack_public_path__ + \"static/media/odrada.e927d621.png\";","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAYgAAACBCAMAAADt5d1oAAAAulBMVEX///8AAAAAi9LVExfzkgBPS0hmJIPv7++vr6/Nzc15eXno6Oi51e4AhdDvurv617nKvNPTAADyjAAyMjLFxMNCPjpcBXwNDQ3g4OBsbGwXFxf19fVhYWGZmZm6urpAQECjo6OOjo5ycnLi4uLS0tKpqalTU1OHh4c6OjpdXV0qKiqcnJyJiYkcHBx3d3c3NzckJCT43d51Q0KFZkCGR4RXYqnOwsLTysHUw9PHyd9tNTN/XTGAOn1LWKRDH4dmAAATlklEQVR4nO1daaOrMG4N7aRA6A4tEMIaIPtN2s50ptv//1vFJJblFZKQu7yX8ymLMcbHlmRJNrPZc/CyZtHu95YV7vOqcJ+s7Y2HYDuxJWLuJF/drN8NTiuxcMXG/uqm/UbwjhoWepRf3bzfBd6HiYYO+7ey+AQkmwEaCIqvbuWvD2cEDURTfHU7f3F4OhX9ZuJToZoO+3y36BDP928mPglJJZJwroIIFg5JvfHxn81XtvVXxjrnWbhsarFI0pxQAenvN6ZAveRoyB3lws1Gs+b82U38LRDwNGTaggdWKv3E9v0usLHMsQpTUaTR396OydEgGlaeuWz6tpxeh8U91lD8nhIvA4zyfTRc2AO9fnh9y34zRFRLj4o3gCBbvrpdvx+KvmPjcYUTWNm91xKTI6j8WG+0CgBJZrRg125AwAu7OsvWYsEoCPjf7JpcWo9UQd71PvWAkSHU7g4I4ToIePHQ38atv1WMck2JuOhK2NnuQgudVozhSqYv6T2NC/jubvzwemHobwZDH8GClu4U3MqRSBaQZPGeqrhTW2jJiPpJ78D3rKKPs8z1V6kqOmyaF9o04KXV3F0Md5+K6x/l9auDC9/qOl6/OT5/5d40TZOS9wd08BvDkI2kmNc8UBa0b/W66tvk6qsUcKwwt6yxc/V+FLRJqhbZctaBZZ17dUJ7C5WuMaeRL1+51yqiVC5MoIvleqp2Wbmqevp8c/IlU1y1GjHK264hJ9KY3Wq48IOA3ivk/1TtvhW1bx9DNGrBBHM5/8lwz9q5unQH5SxqdKUV69IV/Q9/5jE8Kbyu5tDre2Sw7KOwqcSspL/0odYjI8JWlHfxspKHakRFusIEC7n8Tl96KxWGiZnMtrqrhhdRnrW9kPXxRztY9GHMb63JxT+koAZCldw+YCKg9yNDtFy2qz3DfSyZiUTbnz1EQQNE2IbrnNkgOp3ULnzrHu1+J2B8Cb+beOiYoOaQighjmFayky+m0pYknfYDxQUNT4kI9eKvwxgvRFO15Ss9QdB9/M/coF45QR25WSo/jJIIiry4Xsbr7Uh/oypzPc+rs02IfuTFDW7CIqttz4uCBv8oBFckm2HluKRRfGP92dcD1Cr3K9bTBfvZEzvbQMSGmXqcETznboQEE54rAevbJR7j7B5nrGNxuz64+nkiQuQIzfDcGuFrczerzeusV2S/4h9tZm6v+LleC0+mI8LnBz4OV3FWCqQihsJMAdPohH5k40OUcBGLw3CyjGtuzD9Lyf45DS6zD9a2W9kOLTOfABCB2WYK4iiWTzgNoCNCsi68UP0faAhp5e2db73HfmLjQzZrmduMm0KYCEk9oXlvjBm0ncUQFt2H6oVWk4oIWFwoI0bY/NAQcZEHGJJB6E5gus6lC26zpUVVwR1Upj9jAg8eRITCEoaHl0cOhh1WyavXEUrRBJaUqnvw4NYRoVrjssgsshYzxW/oTkGAJwo4xtQBRUY1YpoRsVddw6a3UejY+X5J5tPqdStrZrWwn6KB1qGVrZoItRMelCN6GiBijM+HNvWk+R/GFFrAMyKUi3TP/DdDubT8OHxlJFNhvi4UD8SBPZ2aCLVZDlNiq/htxJoKNIS2z2iBPRNn0FQNezD5FYKLv3twrF66u4dOThajS0Al6vhnSk5JhG7EwkVMdEBNSiHIA0gbLsHml1JxqB5lN9yA1yKXegLaph8kYCsqidBdpwgHMrN2eErQIWPYX0MrY7IR7qmRfdRpJrt4MKI4z+PspZEkcPqx3oMO1cdyoIiSCF2fQgFGBPVZjWDCk6+WQBeOPvQZEKFbi9H/fYP4j6ydU15eu68HFDMY0gmdI6F+BLhGInSKF/vJpYu6oWDWhDBRDWVANgFZ/tBV1BhfGlbNKzLD6uXRKowtfAogG0ADwmQ1JCDAQFYSoRs4jqIA9r0uUxMVtHqTNoHaYHoNEgE60kAECQx1/dKNv9HJAHcDrFdoB1Bj8r/QcfQ0EWhN1eG00ftBR6gIJmjA4TRIBJVmJiLSsE68Y1dF/bp1hByzhrClSSLSTn+eCDH+tNPoRFBmhelxqMEHNtAkRHSFToMrjecAj8eW+NAxJjlB+3QCIqRI4F45LWBZbVTqVL+BDTQNEbOoyF6blQpal8khcPiZrDWqOacgQhGDzuVpAVZFvwFNB2pXg9k0EREvB4ozU1BhtTcRQQmchIjZWo7pncRomDGyLWFaIpqYotAXeg653M5RRFD/7DREdDNMETDlqQjkAgacaLdOQsRqv7uifdX+BRC8yAv8JUR0fyqC0Y3q4lE4Tzoj2pdvqQILqUB3/RoiullBE0oYcla9LslKjWmtpuzlKdogmVArKBH+5+kIilrOh4IuuE9HjF9ZfwtlDQ+HgyajrCYqsacloluyH7g9gKjsHUSEFbN/P5eIJHIzp3GOYMUVjZMF7mDV0HV4Ef3p6wgBgZC0c+tUIOK+ddWnERE5Gyl1B2EbHxyt18CGmCduBOgNk2CccGUto+aUxS2MBAHawnyxgE8hInEMaaAYy6pQ9SospDg/2ihfE3hoX0FEp4KwCXVdSkOq5X3b/SYmQiWuM2MSoYx5Krqnz/yj3gDeV1PwkJZ5ERGc3+PmrqC53CN3pd0wCRHQ/QupmqS8j4UbVgW6HTMI+aopP9pNREPxiCmIwH6Pq2ylT3zfvstJiNjRdZwnCJYHaejhp1RnwIwSHMuwGUfvkob7v44Ido9bcUi2uivbbpqVtWZBrd2oMRL7knQxmxBCE+APTbx9xrzNrySCBcavdpJHv9+1zJ2GiLw8XoGFuHenblAiT9fQxA/htqAktLHSgSyOiYgA8+329Hjzz2hMQkQc5tseZ6Q3dT6X08U/n+ftFfnZv4SaghKkqQ6yqdA0jA2FVxIhJp+BOTeQZmArc191pR8VTaXUj/t2k7l1ZAvDN/EiNzgs2vMQIbJxxFJf1VMCjYVniYgOhVbki8VZcqvRCzbnhNe0yppB3MfTFoP7ttd1VuXS5lkGRUdAeEDeWDfDJ3g8TUSv7WJNF8CmCmo0gKwyZAxft3uw1fckRKz7PvbQjn/eKbbVjyYRnlu2mqnRykecMd9/oagLR3GeI4K6LZReC3DRw3YelpWvW+IkO5GpSYiwy+Q6aOh9ueiu4XAyNTy3OlsqLBeiocp2+Mg34fY4P0dESX+IFX4tUERMLrBNw6KBcUVADSu2f2sSIjZ5v8V3Hdy6A+vpy4isXRlJfVTbXC2fX7tms0cwFoWo5nNEMEHbbwPBsJm/CS2iWOMVu9vRBjGWPzkJEXOHDILuw6GPc2BH8MfjOQXRUQ7AdNhzDhDEOT4lwU4FZfMcETinKceLfrtBe8dQDTW64IObxomLZyobpdMQUcxmF7KqynqGc9WNHoFmQciNMayN8tKNPM+Lshgiy7lpe+9oIoQt1rvuPtE6ipwYByW4/uaaPt/07fKiuog5FzTibhIiHOuw6o2aeIEfw1o+lwyLhxUGnw8tnJewXGJdv6ea9EmrSbEoEk2Kgq+jFIsvl5JFiDPsp/G+lqFPtEPSD1Y2SkafqKKEfqc/VywxudjXqiMgHllHaE5DYZAs+HLoCt6kmsgNnlxV6HUfHcVzcoltQ7FC4Z03Qkn92QOu8iyOh1bWA8kZCnfXgKct5O28SYj4aMhJPTNy2BM7M2Nwj5EZCRKmXZM9dCyA5OjXdNIpUp9OA6Nb57VVujjWppmntNBr06ERYm4/Ndi1zvNRK+uUmEpkLZGzRPjTUzmYmIfbrA9uTQnliteqg3WuBxzdvuCsA1gG6m4OZp+wGV5pxVn6c2sTrUBbSFfQaa1N46ZrE9OOod2BNL774MyZZHoq1wnzwFafXnrWPbUrUnG+DdLb2rJQVK7PhrvZfdJ2tXqhWPVXhpNKbPnAM2IAK8YotUy09g1VmSaBv/pw3cYKXHczH573Y+ChSc2nLSVaj5V9QEu4ismKldzn0cU49rq6eqq2KsrrElO+Xwxu4Aw2nJtgddBMn6s8NBwsEAyMnhm2IGNw8Bj33A3AxS2/J2nBy5qiKDLhlMuDfDZhcDiYB0qWpnrPTFJnWXebbPRYi5zDoUwPTWAS10lzMB+KaDflYXwqH6Vf6Q8dB87ceOEJUL82aH7J4zYTZ42+33v2KCgRarfjMKL9m4dJQB1ND55TU2Ia3udPPwEaRw7vUbIULr8EeuHpT78+YFV6/wtGheNqly89yeCXBwQO75Urtrh99jXt+33ATkq/R7Ksxb2z75fYPAvkgRvtBg8kX9FzHvQ3CJA7ZuD4kCuiVNx8Y+2e3bQdjEtYiIon7zNbF99Xk3G7+Y5m4ympS3n7Svj0uzC9kVMqfPrNdvvvLEN546dNI+WgSeygVJ7qr8vjugPRSOfv0yaBvTT5Dr8a0vHk4WqTBrXn2T08z3XSxUpzdvb4N1YYMJ6IJ7uxI+K+/SifC2/ogHIt9tO8ofdNxA2GN16Y4B8m0nxvIigS7Rsy9Nia3tVzH7yRWwlVROhDT4odgt+eCPXpISbEwVQ0JIeyGwZtmeJQRn1crVYf3KE+Tpla1jktsYfX/WjzfEdMUm/H+2iSLJ6TEyS7j0HLjrNTE2HHFbqTt6qQOe7tcMaH11SrVSxErpKYnDgflV2TS0U8Jkrj1apqeJtmob1EGa7VoNXFDx9BSWtlFhFsiL4wHQQpBCF7QhpevAQkVo89Axm1sltvtmPhRw0RARdaXnCOtw3aNpGAP4FLTQ2If4jKFDFGz17wfURk18Rg115yUCd1C9BGcR9EHVfdQj2vYrC/yGI/3xxSYi1D5DCpqu6R9hU72ohEaMOPNP3olqRBwwUHSSR+uziQeLXvrVgcXUNExIUBQi5wvGcZM+Sc/WWVHsgxWid0t669JBliXlVkZCw5VxGJ1+wXaR85R68XJdRX5Kn7S6S4ZlJvjFyEu40xjPsoeB1BOvg6QKOcDx1yOiIKqSsgia1li5+GMHnVYNHW2vqDRJDkLugkl+uZmk0Pcl7q7YbdzFiyjuhu51tt7zRdV3jKXtMa0r7qOsf8dkTsb5nn5GUh+BJ6N8/ZqNYMeXxsolcdP8dbTRZbZ5MlTob/QUS0yNMYc51HTnWgVyXkWQaJaJBsOlr+iY2LA3NLb1Ac84jz5gjvu4SVQs/ywSomPILII4IWXpxQao3GxPbcrEnLDkXTOK5nG2yTCcARkeJZUHNiAhOR4X8SjoiNUMMwEWtU88nKPpik2sKJ5GvuqKktihs4XD7fBY3vGsegScSBVhBw8mj/Xd5yzBFhcefX7LAbChOx4+bKAT2YfeKSenYjiCARY9YWLwPNH7FRXHJpbxlSXw6XVrpBd19wJsSC1RBwkzu9b2vx64CJcPmzVDI8ulHrifhBs9RGRAS8S8oZQ0QDtJbdRLNBoDRs4J+4TiU51+gO+GVPLIci4VtSs1TSgLPMsu9IxIFPn1ujc/QwEa6Q3OwzIjb88jAZQ8Qa+N6S269oB85hy6MnvDCtZRQ5XPpKxuawK2zDsKDDA/H9L8pWfTowES3vEieJryCpEBEHIShYMSLEGpYjiADZ5PX1FDeh7zHHeyYs6zdswGiJSIUAtA/ffwARF6HxrZqIUhhsJSNiLtjl+Rgimlv3Nf0U8G6SymHiqBA2VThs3mmJ6BpVOgzZFgr+ACJOwllzGiIqIxGcjbcbQ8T6NsPya0vaa7kd24xdCP6wbAQRiner/pwZsRTG80MzgiOiHUMEsUdnvULp+zS1LnZfHNpVCBlHI4nY5xhbKk5/ABFzQcJv1USkQr8sOB2BHYPJZRQRV/vIuVn0Uf8tQIaSI1gHaCSYRJMmSekHELHg93asceYaIiIQ0nVzRsQHb3eNspp6tVASc2lB61uQBTszlGph60LL1jFaIhztkvkHEJHxtreLjRX0ec2/pjFB64iMd1AF44jopuKJ3OHWiZuu25M973lZYuWFdJmWCE8bZP8BRNgW16oK60hMSstNewcRsZZqGEVEV4UXwJXdBIhqbgm34pbyATqYQ0sEnqc8fgARxCXBvpBOZe4KTIQjHQQAjxxjRe6N8TX1/3USbQF1duuXw4YTRpxzi4wDkH96Igp+ctoV7f2fQATZIwoDccfpZK7vt+hZSs7px9XQjiWik02XkA36hbW/8BI+R61s8OsJ9USQAcKmUfSjVta90Xe5Sp2k4qIpPBE1hC26ZXbIxSMKVkNsnc8jieiTT+FugRSwITcsWFEXX6gjwmXXcAcz/Qgi+uhC5bhB2SlEH8e7eC8D6apd47qHbqhmfISOzJC46WoIu5+HI3RXEIXPAnXkLUnCDk+SE5kXrtuQWYYMMwMR12hjUUdBfwIA3Pz7ElHg7+wgqxW3yhb2XNbwrjeHXIKHL7zvPo9wzHpmzOKYc71TybZnDWlH3MsUMwMRM5fFPC9MSrlcoeC7EJHszvyeAK9oz74/3wjLocVF2KTnbtr5fEc2pK99fl9sEsTz+bzP4shQGlzqG7b5RT42NtfzVo6GBXHu+9sV/86oZBdjS3ou5Pxkq+0p3Od83ku8w5fkL3zD+9NQBQW/Qyr3I8FKb/0dWv7GG2+88cYbb7zxxhtvvPHGG2+8DsnfP4D/DO7Hn//hAfzlH+/Hf/3tA/hqGmazf/unB/Df/3I3tv/zh3++H//7r/fj//7uAXw1DYSIv74f/z6/H//xhwfwx7+5H3/6qwfw1TS8iXgT8b2I+H9PR6LNKN/1NAAAAABJRU5ErkJggg==\"","module.exports = __webpack_public_path__ + \"static/media/perfecta-01.3f03e854.png\";","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = __webpack_public_path__ + \"static/media/veldeman.033d5e34.png\";","module.exports = __webpack_public_path__ + \"static/media/Light-living.40c56aea.jpg\";","module.exports = __webpack_public_path__ + \"static/media/verberckmoes.c2ab3b43.png\";","module.exports = __webpack_public_path__ + \"static/media/Bodilson.03d8a9d3.png\";","module.exports = __webpack_public_path__ + \"static/media/denouden.db0e59ed.jpg\";","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAATEAAAClCAMAAAADOzq7AAAAZlBMVEX///9tbnBmZ2lqa21kZWf39/f09PS6uruCgoTp6elhYmR9foDMzM2QkJL8/PyhoqNxcnSXmJl2d3mJiot+f4Hk5OWlpabCwsOys7TT09Tm5ufd3d7JycqsrK3Z2drv7+9OT1JZWl3dp7LlAAAL40lEQVR4nO1d6YKivBKVSliMrEFZGpDvvv9L3gooQgClW5bgeP70DEQIh9pSqYTD4Ysvvvjiiy+++OKLz4O7dQd2AdfIbDMKwhPn3Of8ZDlBYeaZ/mVvCEe7cDhjFGRQRv3Qi3+27qBSKGOHUFrTQ7gVBp4XFZEXOKHFiSCR4BkI4uPWHVUDP8m54go0y4vTo9FVQVcvr7F3IhQIAXoqso16qQyOCWdCsk6R/VSA3IsZEIayxrTislbn1IOeWyg6lDhxOan9JQ6FgtJTrC/cMzWhJxpFmQlz4xc/Ks0TShrVot/86DNgFChejJvTpKuNY+ILpqPf/3LP0AuCkhJe//Zr17aQMyj+Id00kS8WvGPBs5DhNczZeqQ2bLRfNHg3tro4jFA/naVHasMQTxrOESFcUTdZ8PEuIMbwwLfnuxgh8UwXUxOGgwrpzTew1gNGmPPBYpbiSMf/o4McgY1Spn2sNStQIIK5MzeVmCUzX1QN6KiRZAlpyAmhzgem0EoOcFomTv/xAc4fF85mGAl4i10dxVf7sJRjioOiJY1NxAj5qNRZitZ5riBsGCbGxcveYVUgYXTeoKKPnC79UlbEFeP8pQmr5fhDArMMJWwNG5OudJ/F8QPLq2QNGwO+D5huMvz17EvMiL/7uMxFwtbLLiSUWKvdbCE4QIsVb+cBLBcnr4KEgrPqDcM1RXoBoPvi646RXU7YjqeAdY3QtZ3Xha79kuZEABuoSMz2a8pyBsEGtw13G/vrhGhbREclIf4+9RJ1cpt3ne9UL9NtdFLA2ecA80TIVtNiJSPnjW79BkxKtwslky2c9JtwgfAN7873Z/wLoFu6+JzRnRX+oIcPN+3AicC+hKwAtq23sinsSsh02FjEhJDtypKZsFKiehw2pfnGXfgN/C0d5Q18TzGZzRR4vzHsKPB3VJig0BnZapT2axwBoq37gAgI24vtN4GpMG143Y/tV8Tmuj5Zd1bmzzgyRYLHCGAfRcUJgApKKQo+dlIgFSoQjFVAtdyFtzQoPK9GdN27CzPSIjhxn1ueKdVkXhLP4n51Znz2UU8Lh2tM005OFA8184DswVvaVBqE68T3W6NMk/ikUparU61lJhoRC5rDR3JIN3l9oj7jJ4PB3Y+niVaadm/WXz+II6U9BLEeSDNIOtPa9SMmaMK8iPVJt6et/zal/rkGzZnqH6D1zZHr0erco5UGTF6NUqrig56Dyz5dpwOMXQVfhFJuOY5FGIgn9ishCZjgARg/h6HFoWKPydUuGRG/IJT5FoKLJeQVtZJu9vqiIkoim7EBxlKbiucN03rnAf1S4NNq1fR/CNWZvKzOuGVsYVNNKtTOBEEEHPvWSj/GTnWIdCmLQJv/CedGSuVET58xUoin6yyORC1DGQkOEf6RFhPaQpw65SeuYIdJSzRLIZyEdCxCDkz9xdE4RJIMdZ8xDR8Y5IUxieAqgUEVxF+0M5RoKjXoj4DymvQWfvYQkXmESEcGGJMYqBEKHnsKKJCj9LSKhAzRasikC7470bPuv4h0VEDf2A4z1o8Yfmh1YshWn4jW8nooS+Q0eHMfGetQdN5sXn46WO+tDjE2mFWwhL8jQ4YnhrZQFqCNRA3CRnYGHAEMU6sQMASSZ6OH7NjgOKo6M1hjUgqWm/8FRBuZRhBiStvSm4ACuc3nyHqucoixHqsVruJ5B6lw/bYeO6OM6diOtgdcOQXVnaVNe4mLAcbYYBamRAM/kjY9oyFrHt0jY1rpckJYm8wrVb4qNoaeIRqIx4aL7o2O7nWAfvTxJmI6otYofuczbzN2ZJsWM0zBgOEYYGx4GsAgYz5QKOKDsbIXd43CYFLcFlshwvJaI/SwhtV0yruTnDQKHlh1o+au8lZLyb13zQYcyf3G5vOxrQe9t99nbESnBGMj+e4OY3UEa01SN3ksnuSGQMYflpSXRo37gVC7qUnU8HrS5TYSY96dXKdRMasWdvtFdcCAOx9gbHjGYqqMHVwxaCAsnLBNoDzKTW7yYzxebO+WTnbTkxZjvTavGdOrzEL2Kr06ibGRoctkGTsc/Sp1AaCFRX4xnqQNfeiOue6MHZ4wFrp23Y33GDuUXMeevopu3mVskow9smuCNQYnp7BHggguFREnN7+QPIjsvaRQPxTVr54wNkErD4eLpfsv1WAlxkQGt86J1VlFscmnNxSjWZKLSEJPwG/x6Hs1mgPI2MER5u/B2LluEjXSPEXGDof0v9c54NUYw+ax4xMGD94o71/XklaSJXFlwy/eQ8b4pUZzQDDm8rQjY8eqySM4nsZYELwuk5/kK+dhTKDM4sLx2U3c0BnIobE8FG98vtMw1Nc4YXpKWv7GjkWXgROeeQhe5k5WZqyGe8k9vzJsRI6fe3bszljc+Othxg4Z+Q1jjUdptTRFhBe+StBFWzAm4F7Fxip4ga7jHGXslYwhp0ExnbHsFnWlj+grre0BfxE3FlNi/rcYy6KiGI7nrj7pJSQ1ObowS8QxDR+BLddvuB+wbv+K/tc8LD9IbcJLWV2oOZA4WWkcY7+R8cvNBxv8eS5g0rjyLcZyBnTEnupcpHE7h+SYP62dXtES2OjmKxuqm/nRxwxocWvTjKTM+v+t7TMvSRBErVcZ3a/y89yUTcpdvMWYjZcbG1RmIp/dduhGP12nGgbSK3NrJR0dGdQ5jrZQXdTPXfz0uzgzYzpDzRsbehSkm+hP1c+Puf2J+7l9pcizjgmOPAUwYFaVA+nVwM7NWATDE063dp1JFwx2lK/usUDOB83NWEYl8965QjfP74D6e6xEANKR2SPYE7YbXkLjyXlvOYBVEXGv1GF2xjJRYDG0i2UhpK8dTZSgfHBRTb9JZnn+UZJghhBTErOjIw6f20ev/blA9WDI45IlxpWBKDgAGuQ/t+FdmZlhVZHWdY39shkVcZaLUJYYiRd1poIC8f0T933xL1GccO7qaqjGyoIXiECqQlkkd5Fx9sjA3v4Ck0NBNZb7vAKG2V3boTPSYWx0U02DkHHGensmpdXngJoCY2AnU9bAvk1VEjr0DFkrSyJKMPWxD7mNn3E7l7g3v5peyEUR+8mJ8oH0WQLKV11UWHsFhDsa1VtjIqsYTAA19pjeSXG6Qh3F2EKNV/cSXBFlOO8ithBQ5N0eYQdlwzXKnrfcBMkeivlvcJTYnWPrjXB+g1SFhQc2VaATk+ErsFlySPytu/ALmFtvdCSSaIrEONOgw+bL9EKyk2X1NxSw8axXRpXw19NhkI2FzCF0VyJW7Qq4pSVDK7aHzFgb+rbfFrC221r1z0B3uV04lL/aQUJFuP52gb+7z52t7e1MibfVjtpvItxqd+mMbR4N/g0l22gDH96rH94LzG2iyAjYXnZq6yFc62tcbVzZjrI8MkogA3sOLAtD22Eo9oDNVo9jrd1+ZaRGQVcOMbx9FA48QUh6xRBLwtyzEashvpS3nvW3KeE7KH96jiMQWCtVdmHrfwNsAWSUrLR352W1b4sujJSt8+nSH43sN3TtImZEW54ylLD9fcBmDOjBFrdlV0I2/NzQ7EjY0t/HTukHSZgAKuaiNkZcf0cz4FOAkRJbLpFcoD/e9dhoCBnamYV26NNDKm9r+hEozwD+Es+FNh9OO05XPEGAujP/ILNgjw2ePw5on2k4b0L5eKYfFVXIOJ5wIDOnmJkotqcPGEqOw0UdotZcU0wXFLDeDsUfh4zjUwZzqObRQfbPH+gjezABnVv0bhqr9FAhtQ+2YG2UAQ6aSPEOZ2UEOPAOdp89nAyhUMCiv5rsLGDIl/MvKOQDF4zTAZz094GUm1sY4tN/jC+BWlC06HeOM4s0pJoF/x5fAmWCfhMo8dJp9si4RuLzNYwnnzkmmgI3ddCCA9XCJHuun/o1CZEu5Nf5iFT+GzByhyITwNjZM9NjX9rc49UMTgyFCxgJ7H/HPT6Be42s6mNTIPYWsAKvMM04jk2z8BzL16A6xYhVfFwK7B0YaRICraStjWrNPB61kuu/a7uewMjyBMWK+2JHXAT4PAw887rT+rkV4bputc3j+Jr5L7744osvvvjiiy+++GI9/B93NYwg5q51+wAAAABJRU5ErkJggg==\"","module.exports = __webpack_public_path__ + \"static/media/itsaboutromi.d29f99f0.png\";","module.exports = \"data:image/png;base64,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\"","module.exports = __webpack_public_path__ + \"static/media/bronsnijder.a47a0d43.jpg\";","module.exports = __webpack_public_path__ + \"static/media/vinke_beilen.5647db2a.jpg\";","module.exports = __webpack_public_path__ + \"static/media/linde_wonen_slapen.0261dbf6.jpg\";","module.exports = __webpack_public_path__ + \"static/media/korte_woonsfeer.6369c7d2.jpg\";","module.exports = __webpack_public_path__ + \"static/media/hasker_kroon.66d9a29a.jpg\";","module.exports = __webpack_public_path__ + \"static/media/jacobs_thuis_interieur.78e410b1.jpg\";","module.exports = __webpack_public_path__ + \"static/media/LTX-def.29be7373.gif\";","var map = {\n\t\"./informatief_en.svg\": 462,\n\t\"./informatief_nl.svg\": 463,\n\t\"./informatief_verticaal_en.svg\": 288,\n\t\"./informatief_verticaal_nl.svg\": 289\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 461;","module.exports = __webpack_public_path__ + \"static/media/informatief_en.975e0f58.svg\";","module.exports = __webpack_public_path__ + \"static/media/informatief_nl.6fa022ac.svg\";","var map = {\n\t\"./informatief_verticaal_en.svg\": 288,\n\t\"./informatief_verticaal_nl.svg\": 289\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 464;","module.exports = __webpack_public_path__ + \"static/media/Scherm-Imac.baa31fb1.png\";","module.exports = __webpack_public_path__ + \"static/media/verified.cbef8a1a.svg\";","module.exports = __webpack_public_path__ + \"static/media/3_digitaal orderen.58998949.svg\";","module.exports = __webpack_public_path__ + \"static/media/3_deel data.3d84e3a1.svg\";","module.exports = __webpack_public_path__ + \"static/media/kosten-LTX.6c5c315a.png\";","var map = {\n\t\"./en.svg\": 362,\n\t\"./nl.svg\": 363\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 470;","module.exports = __webpack_public_path__ + \"static/media/arxis-text-white.6cee0e29.svg\";","module.exports = __webpack_public_path__ + \"static/media/access_denied.2f21cbc4.svg\";","var map = {\n\t\"./emeubel.png\": 474,\n\t\"./furncube.png\": 475,\n\t\"./iONE.png\": 476,\n\t\"./logictrade.svg\": 477,\n\t\"./meubisol.png\": 478,\n\t\"./uniliving.jpg\": 479\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 473;","module.exports = __webpack_public_path__ + \"static/media/emeubel.b22b1690.png\";","module.exports = \"data:image/png;base64,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\"","module.exports = __webpack_public_path__ + \"static/media/iONE.92c6823a.png\";","module.exports = __webpack_public_path__ + \"static/media/logictrade.167a9eac.svg\";","module.exports = __webpack_public_path__ + \"static/media/meubisol.1d856b1f.png\";","module.exports = __webpack_public_path__ + \"static/media/uniliving.5090f063.jpg\";","import { createBrowserHistory } from 'history';\r\n\r\nexport const history = createBrowserHistory();\r\n","export abstract class BaseReducer {\r\n outstandingRequests = 0;\r\n actionTypes: string[] = [];\r\n initialState: TState;\r\n\r\n constructor(actionTypes: string[], initialState: TState) {\r\n this.actionTypes = actionTypes;\r\n this.initialState = initialState;\r\n }\r\n\r\n public handleState(state: any, action: any): TState {\r\n if (!state) {\r\n return this.initialState;\r\n }\r\n\r\n if (!this.actionTypes.includes(action.type)) {\r\n return state;\r\n }\r\n\r\n const newState = {\r\n ...state\r\n };\r\n\r\n let changedState = false;\r\n if (action.status === 'request') {\r\n if (!action.dontCountLoading) {\r\n this.outstandingRequests += 1;\r\n newState.loading = true;\r\n changedState = true;\r\n }\r\n return newState;\r\n } else {\r\n if (!action.dontCountLoading) {\r\n this.outstandingRequests -= 1;\r\n changedState = true;\r\n newState.loading = this.outstandingRequests > 0;\r\n }\r\n }\r\n const result = this.doHandle(newState, action);\r\n if (!result && !changedState) return state;\r\n return result ?? newState;\r\n }\r\n\r\n protected abstract doHandle(state: TState, action: TAction): TState | undefined;\r\n}\r\n","import { push } from 'react-router-redux';\r\n\r\nimport { BaseReducer } from 'src/helpers/baseReducer';\r\nimport { OrganizationType } from 'src/models/Organization';\r\nimport { Action } from './actions';\r\nimport { AccountState, ActionTypes } from './types';\r\n\r\nexport const initialState: AccountState = {\r\n accountFormData: {\r\n email: '',\r\n password: '',\r\n passwordValid: '',\r\n firstName: '',\r\n lastName: '',\r\n name: '',\r\n companyEmail: '',\r\n description: '',\r\n image: undefined,\r\n maturityStatus: 100,\r\n organizationType: OrganizationType.Retailer,\r\n street: '',\r\n houseNumber: '',\r\n postalCode: '',\r\n city: '',\r\n country: '',\r\n telephoneNumber: '',\r\n website: '',\r\n language: '',\r\n // iban: '',\r\n // btwNumber: ''\r\n },\r\n all: [],\r\n my: undefined,\r\n settings: [],\r\n details: undefined,\r\n errors: undefined,\r\n loading: false\r\n};\r\n\r\nexport class AccountReducer extends BaseReducer {\r\n constructor() {\r\n super(Object.values(ActionTypes), initialState);\r\n }\r\n\r\n protected doHandle(newState: AccountState = initialState, action: Action) {\r\n switch (action.type) {\r\n case ActionTypes.GET_SETTINGS: {\r\n if (action.status === 'success' && action.payload.settings)\r\n newState.settings = action.payload.settings;\r\n else newState.settings = [];\r\n return newState;\r\n }\r\n case ActionTypes.LIST_ACCOUNTS: {\r\n if (action.status === 'success' && action.payload.accounts)\r\n newState.all = action.payload.accounts;\r\n else newState.all = [];\r\n return newState;\r\n }\r\n case ActionTypes.GET_ACCOUNT: {\r\n if (action.status === 'success' && action.payload.account)\r\n newState.details = action.payload.account;\r\n else newState.details = undefined;\r\n return newState;\r\n }\r\n case ActionTypes.GET_MY_ACCOUNT: {\r\n if (action.status === 'success' && action.payload.account)\r\n newState.my = action.payload.account;\r\n else newState.my = undefined;\r\n return newState;\r\n }\r\n case ActionTypes.STORE_REGISTER_DATA: {\r\n newState.accountFormData = action.payload.data;\r\n return newState;\r\n }\r\n default:\r\n return undefined;\r\n }\r\n }\r\n}\r\n","import { BaseReducer } from 'src/helpers/baseReducer';\r\nimport { OrganizationType } from 'src/models/Organization';\r\nimport { AuthenticationAction } from './actions';\r\nimport { ActionTypes, AuthenticationAccount, AuthenticationState } from './types';\r\n\r\nexport const initialState: AuthenticationState = {\r\n isAuthenticated: false,\r\n loading: false,\r\n authenticationError: undefined,\r\n account: {\r\n email: '',\r\n organizationType: OrganizationType.Retailer,\r\n isAdmin: false,\r\n accountId: '',\r\n settings: [],\r\n organizationId: '',\r\n token: '',\r\n fullName: '',\r\n organizationName: ''\r\n }\r\n};\r\n\r\nexport class AuthenticationReducer extends BaseReducer {\r\n constructor() {\r\n super(Object.values(ActionTypes), initialState);\r\n }\r\n\r\n protected doHandle(newState: AuthenticationState = initialState, action: AuthenticationAction) {\r\n switch (action.type) {\r\n case ActionTypes.LOGIN: {\r\n if (action.status === 'success') {\r\n newState.isAuthenticated = true;\r\n newState.authenticationError = undefined;\r\n newState.account = action.payload.data as AuthenticationAccount;\r\n return newState;\r\n }\r\n\r\n if (action.status === 'failure') {\r\n newState.isAuthenticated = false;\r\n newState.authenticationError =\r\n !action.errors || action.errors[0].errorCode !== 401\r\n ? 'Onverwachte fout bij het inloggen'\r\n : 'Email of wachtwoord onjuist';\r\n\r\n return newState;\r\n }\r\n }\r\n case ActionTypes.LOGOUT: {\r\n return initialState;\r\n }\r\n default:\r\n return undefined;\r\n }\r\n }\r\n}\r\n","import { BaseReducer } from 'src/helpers/baseReducer';\r\nimport { Action } from './actions';\r\nimport { ActionTypes, CatalogState, EmptyCatalogFormData } from './types';\r\n\r\nexport const initialState: CatalogState = {\r\n data: {\r\n all: undefined,\r\n new: [],\r\n popular: [],\r\n special: [],\r\n top: [],\r\n my: [],\r\n subscribed: []\r\n },\r\n addCatalog: EmptyCatalogFormData,\r\n validation: {\r\n validationSummary: undefined,\r\n error: undefined\r\n },\r\n conversion: {\r\n transformResult: undefined,\r\n error: undefined\r\n },\r\n fileFormats: [],\r\n errors: undefined,\r\n loading: false\r\n};\r\n\r\nexport class CatalogReducer extends BaseReducer {\r\n constructor() {\r\n super(Object.values(ActionTypes), initialState);\r\n }\r\n\r\n protected doHandle(newState: CatalogState = initialState, action: Action) {\r\n switch (action.type) {\r\n case ActionTypes.GET_CATALOG: {\r\n newState.data.detail = action.payload.catalog;\r\n return newState;\r\n }\r\n case ActionTypes.GET_SUBSCRIBED_CATALOGS: {\r\n if (action.status === 'success' && action.payload.catalogs)\r\n newState.data.subscribed = action.payload.catalogs;\r\n else newState.data.subscribed = [];\r\n return newState;\r\n }\r\n\r\n case ActionTypes.GET_CATALOGS: {\r\n if (action.status === 'success' && action.payload.catalogs)\r\n newState.data.all = action.payload.catalogs;\r\n else newState.data.all = undefined;\r\n return newState;\r\n }\r\n case ActionTypes.GET_CATALOGS_ORGANIZATION: {\r\n if (action.status === 'success' && action.payload.catalogs)\r\n newState.data.my = action.payload.catalogs;\r\n else newState.data.my = [];\r\n return newState;\r\n }\r\n case ActionTypes.CONVERT_CATALOG_FILE: {\r\n if (action.errors) {\r\n newState.conversion.transformResult = undefined;\r\n newState.conversion.error = action.errors[0];\r\n } else {\r\n newState.conversion.transformResult = action.payload.convertResult;\r\n newState.conversion.error = undefined;\r\n }\r\n return newState;\r\n }\r\n case ActionTypes.VALIDATE_CATALOG_FILE:\r\n console.log(newState);\r\n newState.validation = newState.validation || {};\r\n if (action.errors) {\r\n newState.validation.validationSummary = undefined;\r\n newState.validation.error = action.errors[0];\r\n } else {\r\n newState.validation.validationSummary = action.payload.validateResult;\r\n newState.validation.error = undefined;\r\n }\r\n return newState;\r\n case ActionTypes.PUBLISH_CATALOG: {\r\n newState.addCatalog.uploaded = true;\r\n return newState;\r\n }\r\n case ActionTypes.STORE_CATALOG: {\r\n newState.addCatalog = action.payload.data;\r\n return newState;\r\n }\r\n case ActionTypes.ADD_CATALOG: {\r\n newState.addCatalog.uploaded = true;\r\n return newState;\r\n }\r\n case ActionTypes.GET_FILE_FORMATS: {\r\n if (action.status === 'success' && action.payload.fileFormats)\r\n newState.fileFormats = action.payload.fileFormats;\r\n else newState.fileFormats = [];\r\n return newState;\r\n }\r\n default:\r\n return undefined;\r\n }\r\n }\r\n}\r\n","import { BaseReducer } from 'src/helpers/baseReducer';\r\nimport { Action } from './actions';\r\nimport { ActionTypes, DataState } from './types';\r\n\r\nexport const initialState: DataState = {\r\n orderMessages: [],\r\n errors: undefined,\r\n loading: false\r\n};\r\n\r\nexport class DataReducer extends BaseReducer {\r\n constructor() {\r\n super(Object.values(ActionTypes), initialState);\r\n }\r\n\r\n protected doHandle(newState: DataState = initialState, action: Action) {\r\n switch (action.type) {\r\n case ActionTypes.GET_ORDERMESSAGES: {\r\n newState.orderMessages = action.payload.orderMessages || [];\r\n return newState;\r\n }\r\n default:\r\n return undefined;\r\n }\r\n }\r\n}\r\n","import { BaseReducer } from 'src/helpers/baseReducer';\r\nimport { Action } from './actions';\r\nimport { ActionTypes, LayoutState } from './types';\r\n\r\nexport const initialState: LayoutState = {\r\n headerText: 'Hallo Arxis',\r\n loader: {\r\n show: false\r\n },\r\n snackbar: {\r\n show: false\r\n },\r\n notification: {\r\n show: false\r\n },\r\n confirmation: {\r\n message: '',\r\n onConfirm: () => {\r\n /* */\r\n },\r\n show: false,\r\n title: ''\r\n },\r\n viewCatalogs: 'grid',\r\n viewOrganizations: 'grid',\r\n prompt: {}\r\n};\r\n\r\nexport class LayoutReducer extends BaseReducer {\r\n constructor() {\r\n super(Object.values(ActionTypes), initialState);\r\n }\r\n\r\n protected doHandle(newState: LayoutState = initialState, action: Action) {\r\n switch (action.type) {\r\n case ActionTypes.SHOW_SNACKBAR: {\r\n newState.snackbar = action.payload;\r\n return newState;\r\n }\r\n case ActionTypes.SHOW_NOTIFICATION: {\r\n newState.notification = action.payload;\r\n return newState;\r\n }\r\n case ActionTypes.HIDE_NOTIFICATION: {\r\n newState.notification = { show: false };\r\n return newState;\r\n }\r\n case ActionTypes.SHOW_CONFIRMATION: {\r\n newState.confirmation = action.payload;\r\n return newState;\r\n }\r\n case ActionTypes.HIDE_CONFIRMATION: {\r\n newState.confirmation = { ...newState.confirmation, show: false };\r\n return newState;\r\n }\r\n case ActionTypes.CHANGE_VIEW: {\r\n if (action.screen === 'catalogs') newState.viewCatalogs = action.payload;\r\n else newState.viewOrganizations = action.payload;\r\n return newState;\r\n }\r\n default:\r\n return undefined;\r\n }\r\n }\r\n}\r\n","import { BaseReducer } from 'src/helpers/baseReducer';\r\nimport { Action } from './actions';\r\nimport { ActionTypes, MessageState } from './types';\r\n\r\nexport const initialState: MessageState = {\r\n newMessages: [],\r\n messages: [],\r\n errors: undefined,\r\n loading: false,\r\n catalogMessages: [],\r\n orderMessages: []\r\n};\r\n\r\nexport class MessageReducer extends BaseReducer {\r\n constructor() {\r\n super(Object.values(ActionTypes), initialState);\r\n }\r\n\r\n protected doHandle(newState: MessageState = initialState, action: Action) {\r\n switch (action.type) {\r\n case ActionTypes.GET_MESSAGES: {\r\n newState.messages = action.payload.messages || [];\r\n return newState;\r\n }\r\n case ActionTypes.GET_CATALOG_MESSAGES: {\r\n newState.catalogMessages = action.payload.catalogMessages || [];\r\n return newState;\r\n }\r\n case ActionTypes.GET_ORGANIZATION_CATALOG_MESSAGES: {\r\n newState.catalogMessages = action.payload.catalogMessages || [];\r\n return newState;\r\n }\r\n case ActionTypes.GET_SENT_ORDER_MESSAGES: {\r\n newState.orderMessages = action.payload.orderMessages || [];\r\n return newState;\r\n }\r\n case ActionTypes.GET_ORDER_MESSAGES: {\r\n newState.orderMessages = action.payload.orderMessages || [];\r\n return newState;\r\n }\r\n default:\r\n return undefined;\r\n }\r\n }\r\n}\r\n","import { BaseReducer } from 'src/helpers/baseReducer';\r\nimport { EmptyOrganization, Organization } from 'src/models/Organization';\r\nimport { EmptyOrganizationModel, OrganizationModel } from '../../models/Organization';\r\nimport { Action } from './actions';\r\nimport { ActionTypes, OrganizationGroupsState } from './types';\r\n\r\nexport const initialState: OrganizationGroupsState = {\r\n all: [],\r\n errors: undefined,\r\n loading: false\r\n};\r\n\r\nexport class OrganizationGroupReducer extends BaseReducer {\r\n constructor() {\r\n super(Object.values(ActionTypes), initialState);\r\n }\r\n\r\n protected doHandle(newState: OrganizationGroupsState = initialState, action: Action) {\r\n switch (action.type) {\r\n case ActionTypes.GET_ORGANIZATION_GROUPS: {\r\n newState.all = action.payload.organizationGroups || [];\r\n return newState;\r\n }\r\n default:\r\n return undefined;\r\n }\r\n }\r\n}\r\n","import { BaseReducer } from 'src/helpers/baseReducer';\r\nimport {\r\n EmptyMyOrganizationModel,\r\n EmptyOrganization,\r\n InterfaceMethod,\r\n Organization,\r\n OrganizationType\r\n} from 'src/models/Organization';\r\nimport { EmptyOrganizationModel, OrganizationModel } from '../../models/Organization';\r\nimport { Action } from './actions';\r\nimport { ActionTypes, OrganizationState } from './types';\r\n\r\nexport const emptyFormData = {\r\n // btwNumber: '',\r\n // iban: '',\r\n city: '',\r\n telephoneNumber: '',\r\n companyEmail: '',\r\n description: '',\r\n houseNumber: '',\r\n image: undefined,\r\n country: '',\r\n name: '',\r\n organizationType: OrganizationType.Retailer,\r\n postalCode: '',\r\n street: '',\r\n website: '',\r\n email: '',\r\n firstName: '',\r\n lastName: '',\r\n password: '',\r\n maturityStatus: 100,\r\n passwordValid: '',\r\n acceptTermsAndConditions: false,\r\n language: '',\r\n numberOfLiveConnections: 0\r\n};\r\n\r\nexport const initialState: OrganizationState = {\r\n myOrganization: EmptyMyOrganizationModel,\r\n detail: EmptyOrganizationModel,\r\n myIdentifiers: [],\r\n unconfiguredFtp: [],\r\n manageDetails: {\r\n identifiers: [],\r\n accounts: [],\r\n organization: EmptyOrganization,\r\n catalogs: [],\r\n stocks: [],\r\n connections: [],\r\n interfaces: [],\r\n settings: []\r\n },\r\n all: undefined,\r\n connections: [],\r\n connectionIdentifiers: [],\r\n errors: undefined,\r\n loading: false,\r\n formData: emptyFormData,\r\n accessToken: undefined\r\n};\r\n\r\nexport class OrganizationReducer extends BaseReducer {\r\n constructor() {\r\n super(Object.values(ActionTypes), initialState);\r\n }\r\n\r\n protected doHandle(newState: OrganizationState = initialState, action: Action) {\r\n switch (action.type) {\r\n case ActionTypes.ADD_ORGANIZATION: {\r\n newState.formData = emptyFormData;\r\n return newState;\r\n }\r\n case ActionTypes.STORE_FORM: {\r\n newState.formData = action.payload.data;\r\n return newState;\r\n }\r\n case ActionTypes.GET_MY_ORGANIZATION: {\r\n if (action.status === 'success' && action.payload.myOrganization) {\r\n action.payload.myOrganization.catalogs = action.payload.myOrganization.catalogs.sort(\r\n (a, b) => a.title.localeCompare(b.title)\r\n );\r\n newState.myOrganization = action.payload.myOrganization;\r\n } else newState.myOrganization = undefined;\r\n return newState;\r\n }\r\n case ActionTypes.GET_ORGANIZATION_IDENTIFIERS: {\r\n if (action.status === 'success' && action.payload.identifiers)\r\n newState.myIdentifiers = action.payload.identifiers;\r\n else newState.myIdentifiers = [];\r\n return newState;\r\n }\r\n case ActionTypes.GET_ORGANIZATION: {\r\n if (action.status === 'success' && action.payload.organization)\r\n newState.detail = action.payload.organization;\r\n else newState.detail = undefined;\r\n return newState;\r\n }\r\n case ActionTypes.GET_MANAGE_ORGANIZATION: {\r\n if (action.status === 'success' && action.payload.organization)\r\n newState.manageDetails = action.payload.organization;\r\n else newState.manageDetails = undefined;\r\n return newState;\r\n }\r\n case ActionTypes.GET_ORGANIZATIONS: {\r\n if (action.status === 'success' && action.payload.organizations)\r\n newState.all = action.payload.organizations;\r\n else newState.all = undefined;\r\n return newState;\r\n }\r\n case ActionTypes.GET_ORGANIZATION_CONNECTIONS: {\r\n if (action.status === 'success' && action.payload.organizations)\r\n newState.connections = action.payload.organizations;\r\n else newState.connections = [];\r\n return newState;\r\n }\r\n case ActionTypes.GET_UNCONFIGURED_FTP_ORGANIZATIONS: {\r\n if (action.status === 'success' && action.payload.organizations)\r\n newState.unconfiguredFtp = action.payload.organizations;\r\n else newState.unconfiguredFtp = [];\r\n return newState;\r\n }\r\n case ActionTypes.GET_CONNECTION_IDENTIFIERS: {\r\n if (action.status === 'success' && action.payload.connectionIdentifiers)\r\n newState.connectionIdentifiers = action.payload.connectionIdentifiers;\r\n else newState.connectionIdentifiers = [];\r\n return newState;\r\n }\r\n case ActionTypes.GET_ORGANIZATION_ACCESS_TOKEN: { \r\n if(action.status === 'success' && action.payload.accessToken)\r\n newState.accessToken = action.payload.accessToken;\r\n else newState.accessToken = undefined;\r\n\r\n return newState;\r\n }\r\n case ActionTypes.DELETE_ORGANIZATION_ACCESS_TOKEN: { \r\n if(action.status === 'success')\r\n newState.accessToken = undefined;\r\n\r\n return newState;\r\n }\r\n default:\r\n return undefined;\r\n }\r\n }\r\n}\r\n","import { BaseReducer } from 'src/helpers/baseReducer';\r\nimport { Action } from './actions';\r\nimport { ActionTypes, RequestStateModel } from './types';\r\n\r\nexport const initialState: RequestStateModel = {\r\n requests: [],\r\n manageRequests: [],\r\n errors: undefined,\r\n loading: false\r\n};\r\n\r\nexport class RequestReducer extends BaseReducer {\r\n constructor() {\r\n super(Object.values(ActionTypes), initialState);\r\n }\r\n\r\n protected doHandle(newState: RequestStateModel = initialState, action: Action) {\r\n switch (action.type) {\r\n case ActionTypes.GET_REQUESTS: {\r\n if (action.status === 'success' && action.payload.requests)\r\n newState.requests = action.payload.requests;\r\n else newState.requests = [];\r\n return newState;\r\n }\r\n case ActionTypes.GET_MANAGE_REQUESTS: {\r\n if (action.status === 'success' && action.payload.requests)\r\n newState.manageRequests = action.payload.requests;\r\n else newState.manageRequests = [];\r\n return newState;\r\n }\r\n default: {\r\n return undefined;\r\n }\r\n }\r\n }\r\n}\r\n","import { BaseReducer } from 'src/helpers/baseReducer';\r\nimport { Action } from './actions';\r\nimport { ActionTypes, SoftwareState } from './types';\r\n\r\nexport const initialState: SoftwareState = {\r\n all: [],\r\n errors: undefined,\r\n loading: false\r\n};\r\n\r\nexport class SoftwareReducer extends BaseReducer {\r\n constructor() {\r\n super(Object.values(ActionTypes), initialState);\r\n }\r\n\r\n protected doHandle(newState: SoftwareState = initialState, action: Action) {\r\n switch (action.type) {\r\n case ActionTypes.GET_SOFTWARE: {\r\n if (action.payload.software) newState.all = action.payload.software;\r\n return newState;\r\n }\r\n default:\r\n return newState;\r\n }\r\n }\r\n}\r\n","import { BaseReducer } from '../../helpers/baseReducer';\r\nimport { ActionTypes, SubscriptionState } from './types';\r\nimport { Action } from './actions';\r\n\r\n\r\nexport const initialState: SubscriptionState = {\r\n subscriptions: [],\r\n errors: undefined,\r\n loading: false,\r\n};\r\n\r\n\r\nexport class SubscriptionReducer extends BaseReducer {\r\n constructor() {\r\n super(Object.values(ActionTypes), initialState);\r\n }\r\n\r\n protected doHandle(newState: SubscriptionState = initialState, action: Action) {\r\n switch (action.type) {\r\n case ActionTypes.GET_SUBSCRIPTIONS: {\r\n if (action.status === 'success' && action.payload.subscriptions)\r\n newState.subscriptions = action.payload.subscriptions;\r\n else newState.subscriptions = [];\r\n return newState;\r\n }\r\n\r\n default:\r\n return undefined;\r\n }\r\n }\r\n}\r\n","import { BaseReducer } from '../../helpers/baseReducer';\r\nimport { LanguageState, ActionTypes } from './types';\r\nimport { ChangeLanguage } from './actions';\r\n\r\n\r\nexport const initialState: LanguageState = {\r\n language: '',\r\n};\r\n\r\nexport class LanguageReducer extends BaseReducer {\r\n constructor() {\r\n super(Object.values(ActionTypes), initialState);\r\n }\r\n\r\n protected doHandle(initialState: LanguageState, action: ChangeLanguage) {\r\n switch (action.type) {\r\n case ActionTypes.CHANGE_LANGUAGE: {\r\n initialState.language = action.payload;\r\n return initialState;\r\n }\r\n default:\r\n return undefined;\r\n }\r\n }\r\n}\r\n","import { BaseReducer } from 'src/helpers/baseReducer';\r\nimport { Action } from './actions';\r\nimport { ActionTypes, StockState, EmptyStockFormData } from './types';\r\n\r\nexport const initialState: StockState = {\r\n data: {\r\n all: undefined,\r\n new: [],\r\n popular: [],\r\n special: [],\r\n top: [],\r\n my: [],\r\n subscribed: []\r\n },\r\n addStock: EmptyStockFormData,\r\n validation: {\r\n validationSummary: undefined,\r\n error: undefined\r\n },\r\n conversion: {\r\n transformResult: undefined,\r\n error: undefined\r\n },\r\n fileFormats: [],\r\n errors: undefined,\r\n loading: false\r\n};\r\n\r\nexport class StockReducer extends BaseReducer {\r\n constructor() {\r\n super(Object.values(ActionTypes), initialState);\r\n }\r\n\r\n protected doHandle(newState: StockState = initialState, action: Action) {\r\n switch (action.type) {\r\n case ActionTypes.GET_STOCK: {\r\n newState.data.detail = action.payload.stock;\r\n return newState;\r\n }\r\n case ActionTypes.GET_SUBSCRIBED_STOCKS: {\r\n if (action.status === 'success' && action.payload.stocks)\r\n newState.data.subscribed = action.payload.stocks;\r\n else newState.data.subscribed = [];\r\n return newState;\r\n }\r\n case ActionTypes.GET_STOCKS: {\r\n if (action.status === 'success' && action.payload.stocks)\r\n newState.data.all = action.payload.stocks;\r\n else newState.data.all = undefined;\r\n return newState;\r\n }\r\n case ActionTypes.ADD_STOCK: {\r\n newState.addStock.uploaded = true;\r\n return newState;\r\n }\r\n case ActionTypes.GET_FILE_FORMATS: {\r\n if (action.status === 'success' && action.payload.fileFormats)\r\n newState.fileFormats = action.payload.fileFormats;\r\n else newState.fileFormats = [];\r\n return newState;\r\n }\r\n default:\r\n return undefined;\r\n }\r\n }\r\n}\r\n","import { BaseReducer } from 'src/helpers/baseReducer';\r\nimport { Action } from './actions';\r\nimport { ActionTypes, OrdersState } from './types';\r\n\r\nexport const initialState: OrdersState = {\r\n listNotSendOrders: [],\r\n listOfSentOrders: [],\r\n catalogView: [],\r\n errors: undefined,\r\n loading: false\r\n};\r\n\r\nexport class PurchaseOrderReducer extends BaseReducer {\r\n constructor() {\r\n super(Object.values(ActionTypes), initialState);\r\n }\r\n\r\n protected doHandle(newState: OrdersState = initialState, action: Action) {\r\n switch (action.type) {\r\n case ActionTypes.GET_NOT_SEND_ORDERS: {\r\n newState.listNotSendOrders = action.payload.listNotSendOrders || [];\r\n return newState;\r\n }\r\n case ActionTypes.GET_LIST_OF_SENT_ORDERS: {\r\n newState.listOfSentOrders = action.payload.listOfSentOrders || [];\r\n return newState;\r\n }\r\n case ActionTypes.GET_CATALOG_VIEW: {\r\n newState.catalogView = action.payload.catalogView || [];\r\n return newState;\r\n }\r\n default:\r\n return undefined;\r\n }\r\n }\r\n}\r\n","import { routerMiddleware, routerReducer, RouterState } from 'react-router-redux';\r\nimport { Action, AnyAction, applyMiddleware, combineReducers, createStore, Dispatch } from 'redux';\r\nimport logger from 'redux-logger';\r\nimport { persistReducer, persistStore } from 'redux-persist';\r\nimport storage from 'redux-persist/lib/storage';\r\nimport storageSession from 'redux-persist/lib/storage/session';\r\nimport thunk from 'redux-thunk';\r\n\r\nimport { history } from '../history';\r\nimport { apiClient } from 'src/helpers/apiClient';\r\nimport { AccountReducer } from './accounts/reducer';\r\nimport { AccountState } from './accounts/types';\r\nimport { AuthenticationReducer } from './authentication/reducer';\r\nimport { AuthenticationState } from './authentication/types';\r\nimport { CatalogReducer } from './catalogs/reducer';\r\nimport { CatalogState } from './catalogs/types';\r\nimport { DataReducer } from './data/reducer';\r\nimport { DataState } from './data/types';\r\nimport { LayoutReducer } from './layout/reducer';\r\nimport { LayoutState } from './layout/types';\r\nimport { MessageReducer } from './messages/reducer';\r\nimport { MessageState } from './messages/types';\r\nimport { OrganizationGroupReducer } from './organizationgroups/reducer';\r\nimport { OrganizationGroupsState } from './organizationgroups/types';\r\nimport { OrganizationReducer } from './organizations/reducer';\r\nimport { OrganizationState } from './organizations/types';\r\nimport { RequestReducer } from './requests/reducer';\r\nimport { RequestStateModel } from './requests/types';\r\nimport { SoftwareReducer } from './software/reducer';\r\nimport { SoftwareState } from './software/types';\r\nimport { SubscriptionState } from './subscriptions/types';\r\nimport { SubscriptionReducer } from './subscriptions/reducer';\r\nimport { LanguageState } from './language/types';\r\nimport { LanguageReducer } from './language/reducer';\r\nimport { StockState } from './stocks/types';\r\nimport { StockReducer } from './stocks/reducer';\r\nimport { OrdersState } from './purchase-order/types'\r\nimport { PurchaseOrderReducer } from './purchase-order/reducer'\r\n\r\nexport interface ConnectedReduxProps {\r\n dispatch: Dispatch;\r\n}\r\n\r\nexport interface ApplicationState {\r\n catalogs: CatalogState;\r\n requests: RequestStateModel;\r\n data: DataState;\r\n\r\n messages: MessageState;\r\n software: SoftwareState;\r\n\r\n account: AccountState;\r\n organizations: OrganizationState;\r\n\r\n organizationGroups: OrganizationGroupsState;\r\n\r\n layout: LayoutState;\r\n\r\n authentication: AuthenticationState;\r\n router: RouterState;\r\n\r\n subscriptions: SubscriptionState;\r\n language: LanguageState;\r\n stocks: StockState;\r\n purchaseOrder: OrdersState;\r\n}\r\n\r\nconst uiVersion = process.env.REACT_APP_UI_VERSION ?? '1';\r\nconst persistVersion = parseInt(uiVersion, 10);\r\n\r\nif (localStorage) {\r\n const localStorageState = localStorage.getItem('persist:root');\r\n const state = JSON.parse(localStorageState as string);\r\n if (state) {\r\n const parsedInner = JSON.parse(state._persist);\r\n if (parsedInner.version !== persistVersion) {\r\n console.log('New release, clearing persisted state. New version: ' + persistVersion);\r\n localStorage.clear();\r\n }\r\n }\r\n}\r\n\r\nconst persistConfig = {\r\n key: 'root',\r\n storage: storageSession,\r\n version: persistVersion,\r\n blacklist: ['account', 'authentication', 'organizations']\r\n};\r\n\r\nconst accountPersistConfig = {\r\n key: 'account',\r\n storage: storageSession,\r\n version: persistVersion,\r\n blacklist: ['accountFormData']\r\n};\r\n\r\nconst authenticationPersistConfig = {\r\n key: 'authentication',\r\n storage: storageSession,\r\n version: persistVersion,\r\n blacklist: ['authenticationError']\r\n};\r\n\r\nconst organizationPersistConfig = {\r\n key: 'organizations',\r\n storage: storageSession,\r\n version: persistVersion,\r\n blacklist: ['formData']\r\n};\r\n\r\nconst organizationReducer = new OrganizationReducer();\r\nconst catalogReducer = new CatalogReducer();\r\nconst dataReducer = new DataReducer();\r\nconst requestReducer = new RequestReducer();\r\nconst messageReducer = new MessageReducer();\r\nconst softwareReducer = new SoftwareReducer();\r\nconst accountReducer = new AccountReducer();\r\nconst organizationGroupReducer = new OrganizationGroupReducer();\r\nconst authenticationReducer = new AuthenticationReducer();\r\nconst layoutReducer = new LayoutReducer();\r\nconst subscriptionsReducer = new SubscriptionReducer();\r\nconst languageReducer = new LanguageReducer();\r\nconst stockReducer = new StockReducer();\r\nconst purchaseOrderReducer = new PurchaseOrderReducer();\r\n\r\nexport const appReducer = combineReducers({\r\n messages: (state, action) => messageReducer.handleState(state, action),\r\n software: (state, action) => softwareReducer.handleState(state, action),\r\n data: (state, action) => dataReducer.handleState(state, action),\r\n\r\n organizations: persistReducer(organizationPersistConfig, (state, action) =>\r\n organizationReducer.handleState(state, action)\r\n ),\r\n organizationGroups: (state, action) => organizationGroupReducer.handleState(state, action),\r\n catalogs: (state, action) => catalogReducer.handleState(state, action),\r\n requests: (state, action) => requestReducer.handleState(state, action),\r\n\r\n account: persistReducer(accountPersistConfig, (state, action) =>\r\n accountReducer.handleState(state, action)\r\n ),\r\n authentication: persistReducer(authenticationPersistConfig, (state, action) =>\r\n authenticationReducer.handleState(state, action)\r\n ),\r\n\r\n router: routerReducer,\r\n layout: (state, action) => layoutReducer.handleState(state, action),\r\n subscriptions: (state, action) => subscriptionsReducer.handleState(state, action),\r\n language: (state, action) => languageReducer.handleState(state, action),\r\n stocks: (state, action) => stockReducer.handleState(state, action),\r\n purchaseOrder: (state, action) => purchaseOrderReducer.handleState(state, action)\r\n});\r\n\r\nconst rootReducer = (state, action) => {\r\n if (action.type === '[auth] LOGOUT') {\r\n sessionStorage.clear();\r\n\r\n // Clear local storage also, just to be sure\r\n localStorage.clear();\r\n }\r\n\r\n return appReducer(state, action);\r\n};\r\n\r\napiClient.setConfig({\r\n onTokenExpired: () => {\r\n rootReducer(undefined, { type: '[auth] LOGOUT' });\r\n window.location.href =\r\n window.location.protocol + '//' + window.location.host + '/login?sessionExpired=1';\r\n }\r\n});\r\n\r\nconst persistedReducer = persistReducer(persistConfig, rootReducer);\r\n\r\nconst middleWare: any[] = [thunk, routerMiddleware(history)];\r\n\r\nif (process.env.NODE_ENV === 'development') middleWare.push(logger);\r\n\r\nexport const store = createStore(persistedReducer, undefined, applyMiddleware(...middleWare));\r\n\r\nexport const persistor = persistStore(store);\r\n","import * as React from 'react';\r\nimport * as ReactDOM from 'react-dom';\r\n\r\nimport { ThemeProvider } from 'emotion-theming';\r\nimport { Provider } from 'react-redux';\r\nimport { BrowserRouter as Router, Switch, Route } from 'react-router-dom';\r\n\r\nimport { theme } from './style/Style';\r\n\r\nimport { PublicPages } from './pages/Routes';\r\n// Below is needed to get styled components (react emotion) working with material UI\r\n// The order of stylesheet injection is important and we will/can manually do it here\r\nimport { createGenerateClassName, jssPreset, StylesProvider } from '@material-ui/core/styles';\r\nimport { create } from 'jss';\r\nimport { JssProvider } from 'react-jss';\r\n\r\nconst generateClassName = createGenerateClassName();\r\nconst jss = create({\r\n ...jssPreset(),\r\n insertionPoint: document.getElementById('jss-insertion-point')!\r\n});\r\n// End\r\n/* eslint-disable import/first */\r\nimport MomentUtils from '@date-io/moment';\r\nimport { MuiPickersUtilsProvider } from '@material-ui/pickers';\r\nimport moment from 'moment';\r\nimport 'moment/locale/nl';\r\nimport { PersistGate } from 'redux-persist/integration/react';\r\n\r\nimport { persistor, store } from './store/index';\r\nimport './i18n';\r\n\r\nimport AppLoadingPage from './pages/index/pages/AppLoadingPage';\r\nconst App = React.lazy(() => import('./App'));\r\n\r\nmoment.locale('nl');\r\n\r\nReactDOM.render(\r\n \r\n \r\n \r\n \r\n \r\n \r\n {window.location.href.match(/([/]app)/) ? null : (\r\n
\r\n \r\n {PublicPages.slice(0, 3).map((route, index) => {\r\n return (\r\n \r\n );\r\n })}\r\n \r\n
\r\n )}\r\n }>\r\n {window.location.href.match(\r\n /(login|register|[/]app|confirm|error|signup|resetPassword|passwordForgotten|logout)/\r\n ) && }\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
,\r\n document.getElementById('root') as HTMLElement\r\n);\r\n"],"sourceRoot":""}