{"version":3,"sources":["Pages/Customer/InstanceDetails/NotificationsHistory/style.module.css","resources/graph_arrow_left_dark.svg","resources/graph_arrow_right_dark.svg","resources/maps-cursor.png","resources/logo-inverted.svg","resources/camp-manfred_v2.jpg","resources/ic_warning_16px.svg","resources/ic_calendar.svg","themes/bwtColors.ts","themes/theme.ts","serviceWorker.ts","commonQueries/userLanguage.ts","components/common/Localization.tsx","redux/types/Auth.ts","types/ToolboxEntities.ts","types/CampGuideTypes.ts","util/GraphQL.ts","redux/types/AccountShortcuts/ChangeLogin.ts","redux/types/AccountShortcuts/ChangePearls.ts","redux/types/AccountShortcuts/ChangeActive.ts","redux/types/AccountShortcuts/SendReset.ts","redux/types/AccountShortcuts/DeleteAccount.ts","redux/types/DeviceActions/RequestLog.ts","redux/types/DeviceActions/ResetActivation.ts","redux/types/DeviceActions/SetOutOfService.ts","redux/types/DeviceActions/ResetInstaller.ts","redux/types/ProductOverview.ts","redux/types/AgGrid.ts","redux/actions/AuthActions.ts","redux/initialState.ts","redux/actions/appShellActions.ts","redux/reducers/AgGridReducerHelper.ts","redux/types/PartnerOverview.ts","redux/reducers/productOverviewReducer.ts","redux/reducers/partnerOverviewReducer.ts","redux/types/DeviceOverview.ts","redux/reducers/deviceOverviewReducer.ts","redux/types/PoolOverview.ts","redux/reducers/poolOverviewReducer.ts","redux/types/CustomerOverview.ts","redux/reducers/customerOverviewReducer.ts","redux/types/PartnerDetails.ts","redux/types/PromotionOverview.ts","redux/reducers/promotionOverviewReducer.ts","redux/types/PromotionDetails.ts","redux/reducers/promotionDetailsReducer.ts","redux/types/CouponCode.ts","redux/types/MultiSelect.ts","redux/types/InputToChip.ts","redux/types/LinkedUsers.ts","redux/reducers/linkedUsersReducer.ts","redux/types/BonusAccount.ts","redux/reducers/bonusAccountReducer.ts","redux/types/ProductRegistrations.ts","redux/reducers/productRegistrationsReducer.ts","redux/types/ChangeOrganizationActiveState.ts","redux/types/AccountShortcuts/ChangePosition.ts","redux/types/AccountShortcuts/RemoveFromCompany.ts","redux/types/PearlsGrid.ts","redux/reducers/pearlsGridReducer.ts","redux/types/ConsumableGrid.ts","redux/reducers/consumableGridReducer.ts","redux/types/EmployeesOverview.ts","redux/reducers/employeesOverviewReducer.ts","redux/types/RegistrationGrid.ts","redux/reducers/registrationGridReducer.ts","redux/types/CreateRequestOverview.ts","redux/reducers/createRequestOverviewReducer.ts","redux/types/JoinRequestOverview.ts","redux/reducers/joinRequestOverviewReducer.ts","redux/types/SendgridTemplatesOverview.ts","redux/reducers/sendgridTemplatesOverviewReducer.ts","redux/types/SendgridTemplatesDelete.ts","redux/types/SendgridTemplatesCreate.ts","redux/store.ts","util/ability.ts","redux/reducers/authReducer.ts","redux/reducers/appShellReducer.ts","redux/reducers/partnerDetailsReducer.ts","redux/reducers/changeOrganizationActiveStateReducer.ts","redux/reducers/couponCodeReducer.ts","redux/reducers/multiSelectReducer.ts","redux/reducers/inputToChipReducer.ts","redux/reducers/sendgridTemplatesDeleteReducer.ts","redux/reducers/sendgridTemplatesCreateReducer.ts","redux/reducers/AccountShortcuts/changeLoginReducer.ts","redux/reducers/AccountShortcuts/changePearlsReducer.ts","redux/reducers/AccountShortcuts/changeActiveReducer.ts","redux/reducers/AccountShortcuts/sendResetReducer.ts","redux/reducers/AccountShortcuts/changePositionReducer.ts","redux/reducers/AccountShortcuts/deleteAccountReducer.ts","redux/reducers/AccountShortcuts/removeFromCompanyReducer.ts","redux/reducers/DeviceActions/requestLogReducer.ts","redux/reducers/DeviceActions/resetActivationReducer.ts","redux/reducers/DeviceActions/resetInstallerReducer.ts","redux/reducers/DeviceActions/setOutOfServiceReducer.ts","components/common/ProfileMenu.tsx","components/common/Navigation.tsx","redux/actions/AccountShortcuts/ChangeActiveActions.ts","components/common/Error.tsx","commonQueries/employee.ts","commonQueries/customer.ts","components/common/AccShortcuts/ChangeActive.tsx","redux/actions/DeviceActions/RequestLogActions.ts","components/common/DeviceActions/RequestLog.tsx","redux/actions/DeviceActions/ResetActivationActions.ts","components/common/DeviceActions/ResetActivation.tsx","redux/actions/DeviceActions/SetOutOfServiceActions.ts","components/common/DeviceActions/SetOutOfService.tsx","redux/actions/DeviceActions/ResetInstallerActions.ts","components/common/DeviceActions/ResetInstaller.tsx","redux/actions/ChangeOrganizationActiveStateActions.ts","components/common/ChangeOrganisationActiveState.tsx","redux/actions/AccountShortcuts/ChangeLoginActions.ts","components/common/AccShortcuts/ChangeLogin.tsx","redux/actions/AccountShortcuts/SendResetActions.ts","components/common/AccShortcuts/SendPasswordResetEmail.tsx","redux/actions/AccountShortcuts/ChangePositionActions.ts","commonQueries/partner.ts","components/common/AccShortcuts/ChangePosition.tsx","redux/actions/AccountShortcuts/RemoveFromCompanyActions.ts","components/common/AccShortcuts/RemoveFromCompany.tsx","redux/actions/SendgridTemplatesDeleteActions.ts","commonQueries/sendgridSupportedLanguages.ts","Pages/Sendgrid/TemplateGroupsOverview/EditLanguageDialog.tsx","types/apolloGenerated/globalTypes.ts","redux/actions/AgGridActionHelper.ts","redux/actions/SendgridTemplatesOverviewActions.ts","components/common/PageHeader.tsx","components/common/Grid/GridFilterHeader.tsx","util/AgGridUtils.ts","components/common/PageDialog.tsx","commonQueries/recordAuditLog.ts","components/common/Grid/AgGrid.tsx","commonQueries/sendgridIds.ts","Pages/Sendgrid/TemplateGroupsOverview/TemplatesGrid.tsx","redux/actions/SendgridTemplatesCreateActions.ts","Pages/Sendgrid/TemplateGroupsOverview/index.tsx","components/common/SendgridTemplatesDelete.tsx","components/common/DropDown.tsx","components/common/SendgridTemplatesCreate.tsx","components/PhoenixWarningIcon.tsx","components/common/PhoenixWarningBanner.tsx","components/common/PhoenixWarningDialog.tsx","redux/actions/AccountShortcuts/DeleteAccountActions.ts","components/common/AccShortcuts/DeleteAccount.tsx","components/common/AppShell.tsx","Pages/Home/index.tsx","components/common/AccessAppRoute.tsx","Pages/PageNotFound.tsx","redux/actions/ProductOverviewActions.ts","util/CampUtils.ts","Pages/Product/ProductsGrid.tsx","Pages/Product/index.tsx","redux/actions/ConsumableGridActions.ts","Pages/Promotion/Details/GridConfig.tsx","Pages/Consumable/ConsumableGrid.tsx","Pages/Consumable/index.tsx","commonQueries/pollGeneratedCodes.ts","Pages/Production/RegistrationCodes/GenerateCodes.tsx","Pages/Production/RegistrationCodes/index.tsx","redux/actions/PartnerOverviewActions.ts","redux/actions/PartnerOverviewWithPearlsActions.ts","Pages/PartnerManager/Companies/GridConfig.tsx","commonQueries/deleteOrganisation.ts","components/common/CountryFilter.tsx","Pages/PartnerManager/Companies/index.tsx","redux/actions/PartnerDetailsActions.ts","Pages/PartnerManager/Companies/Detail/GoogleMapsMap.tsx","components/common/MultiSelect.tsx","Pages/PartnerManager/Companies/Detail/PartnerInformation.tsx","Pages/PartnerManager/Companies/Detail/ImageUpload.tsx","Pages/PartnerManager/Companies/Detail/PartnerMedia.tsx","redux/actions/LinkedUsersAction.ts","Pages/PartnerManager/Companies/Detail/Employees/EmployeesGrid.tsx","Pages/PartnerManager/Companies/Detail/Employees/index.tsx","redux/actions/AccountShortcuts/ChangePearlsActions.ts","redux/actions/BonusAccountActions.ts","Pages/PartnerManager/Companies/Detail/BonusAccount/GridConfig.tsx","Pages/PartnerManager/Companies/Detail/BonusAccount/index.tsx","redux/actions/ProductRegistrationsActions.ts","Pages/PartnerManager/Companies/Detail/ProductRegistrations/GridConfig.tsx","Pages/PartnerManager/Companies/Detail/ProductRegistrations/index.tsx","components/common/AccShortcuts/ChangePearls.tsx","commonQueries/getAuditLogs.ts","Pages/Customer/InstanceDetails/AuditLog.tsx","Pages/PartnerManager/Companies/Detail/PartnerDetail.tsx","commonQueries/userRole.ts","Pages/PartnerManager/Companies/Detail/index.tsx","redux/actions/EmployeesOverviewActions.ts","Pages/PartnerManager/Employees/GridConfig.tsx","Pages/PartnerManager/Employees/index.tsx","Pages/PartnerManager/Employees/Detail/EmployeeInformation.tsx","components/common/ShowAccountInfo.tsx","Pages/PartnerManager/Employees/Detail/Organization.tsx","components/common/PageHeaderMessage.tsx","Pages/PartnerManager/Employees/Detail/index.tsx","Pages/PartnerManager/Pearls/MonthPicker.tsx","redux/actions/PearlsGridActions.ts","Pages/PartnerManager/Pearls/PearlsGrid.tsx","Pages/PartnerManager/Pearls/index.tsx","redux/actions/CustomerOverviewActions.ts","Pages/Customer/Customer/GridConfig.tsx","Pages/Customer/Customer/index.tsx","redux/actions/DeviceOverviewActions.ts","commonQueries/customerProductInstances.ts","Pages/Customer/CustomerDetails/GridConfig.tsx","Pages/Customer/Device/ErrorStatesFilter.tsx","Pages/Customer/Device/GridConfig.tsx","Pages/Customer/Device/DeviceSearchPreview.tsx","Pages/Customer/Device/index.tsx","Pages/Customer/InstanceDetails/GoogleMap.tsx","Pages/Customer/InstanceDetails/DeviceLocationModal.tsx","commonQueries/updateTestFlag.ts","Pages/Customer/InstanceDetails/DeviceData.tsx","Pages/Customer/InstanceDetails/DisplayStatus.tsx","Pages/Customer/InstanceDetails/SilkDeviceData.tsx","resources/signalStrength/GsmFairIcon.tsx","resources/signalStrength/GsmGoodIcon.tsx","resources/signalStrength/GsmWeakIcon.tsx","resources/signalStrength/GsmExcellentIcon.tsx","resources/signalStrength/GsmOfflineIcon.tsx","resources/signalStrength/WifiFairIcon.tsx","resources/signalStrength/WifiGoodIcon.tsx","resources/signalStrength/WifiWeakIcon.tsx","resources/signalStrength/WifiExcellentIcon.tsx","resources/signalStrength/WifiUnknownIcon.tsx","components/common/SignalStrength.tsx","Pages/Customer/InstanceDetails/SilkTelemetry.tsx","commonQueries/userCountryQuery.ts","Pages/Customer/InstanceDetails/CustomerDetails.tsx","Pages/Customer/InstanceDetails/Telemetry.tsx","Pages/Customer/InstanceDetails/NotificationsHistory/types.ts","Pages/Customer/InstanceDetails/NotificationsHistory/Notification.tsx","Pages/Customer/InstanceDetails/NotificationsHistory/DayGroup.tsx","Pages/Customer/InstanceDetails/NotificationsHistory/data.ts","Pages/Customer/InstanceDetails/NotificationsHistory/index.tsx","Pages/Customer/InstanceDetails/SilkNotifications/types.ts","Pages/Customer/InstanceDetails/SilkNotifications/Notification.tsx","Pages/Customer/InstanceDetails/SilkNotifications/DayGroup.tsx","Pages/Customer/InstanceDetails/SilkNotifications/index.tsx","Pages/Customer/InstanceDetails/DeviceStatus.tsx","Pages/Customer/InstanceDetails/CircleSegment.tsx","Pages/Customer/InstanceDetails/DeviceSummary.tsx","Pages/Customer/InstanceDetails/SilkSummary.tsx","Pages/Customer/InstanceDetails/BarChart/AnimatedBarChart.tsx","Pages/Customer/InstanceDetails/BarChart/Stats.tsx","Pages/Customer/InstanceDetails/BarChart/WeeklyChart.tsx","Pages/Customer/InstanceDetails/BarChart/MonthlyChart.tsx","Pages/Customer/InstanceDetails/BarChart/DailyChart.tsx","Pages/Customer/InstanceDetails/BarChart/Chart.tsx","Pages/Customer/InstanceDetails/BarChart/index.tsx","Pages/Customer/InstanceDetails/CurveGraph.tsx","Pages/Customer/InstanceDetails/Regeneration.tsx","Pages/Customer/InstanceDetails/SilkRegeneration.tsx","Pages/Customer/InstanceDetails/ParametersRnD.tsx","Pages/Customer/InstanceDetails/Connectivity.tsx","Pages/Customer/InstanceDetails/index.tsx","Pages/Customer/ServicePartner/index.tsx","Pages/Customer/CustomerDetails/EditCustomerDetails.tsx","redux/types/ServiceOverview.ts","Pages/Customer/CustomerDetails/RegisteredDevices.tsx","redux/actions/ServiceOverviewActions.ts","Pages/Customer/CustomerDetails/ServiceGrid.tsx","Pages/Customer/CustomerDetails/ServiceContract.tsx","redux/actions/PoolOverviewActions.ts","Pages/Customer/CustomerDetails/PoolGridConfig.tsx","Pages/Customer/CustomerDetails/RegisteredPools.tsx","Pages/Customer/CustomerDetails/index.tsx","components/common/CountrySelect.tsx","components/common/InputToChip.tsx","redux/actions/MultiSelect.ts","redux/actions/InputToChip.ts","Pages/Admin/index.tsx","Pages/Sendgrid/TemplateGroupDetails/index.tsx","redux/actions/PromotionOverviewActions.ts","Pages/Promotion/GridConfig.tsx","Pages/Promotion/index.tsx","redux/actions/PromotionDetailsActions.ts","Pages/Promotion/Details/PromotionInformation.tsx","Pages/Promotion/Details/PromotionToolbar.tsx","Pages/Promotion/Details/Queries.ts","Pages/Promotion/Details/PromotionInformationModels.ts","Pages/Promotion/Details/index.tsx","Pages/Promotion/CouponCode.tsx","redux/actions/CouponCodeActions.ts","Pages/Promotion/Details/CouponCode/index.tsx","components/common/Expander.tsx","Pages/Product/Detail/PartnerRegistration.tsx","commonQueries/mailTemplate.ts","Pages/Product/Detail/CustomerRegistration.tsx","Pages/Product/Detail/Consumable/index.tsx","Pages/Product/Detail/Notifications/Translation.tsx","Pages/Product/Detail/Notifications/Notification.tsx","commonQueries/product.ts","Pages/Product/Detail/Notifications/NotifcationGroup.tsx","Pages/Product/Detail/Notifications/NotificationGroups.tsx","Pages/Product/Detail/ProductInfo.tsx","Pages/Product/Detail/index.tsx","Pages/PartnerManager/Companies/OrgCreationApprovalPage/ApprovalForm.tsx","Pages/PartnerManager/Companies/OrgCreationApprovalPage/ApprovalPage.tsx","Pages/PartnerManager/Companies/OrgJoinApprovalPage/SetRequestId.tsx","Pages/PartnerManager/Companies/OrgJoinApprovalPage/ApprovalForm.tsx","Pages/PartnerManager/Companies/OrgJoinApprovalPage/ApprovalPage.tsx","Pages/Request/Join/GridConfig.tsx","redux/actions/JoinRequestOverviewActions.ts","Pages/Request/Join/index.tsx","Pages/Request/Create/GridConfig.tsx","redux/actions/CreateRequestOverviewActions.ts","Pages/Request/Create/index.tsx","App.tsx","index.tsx"],"names":["module","exports","bwtColors","pink","pink80","pink50","blue","arctic","arctic80","arctic50","arctic15","grey","grey80","grey50","grey35","grey20","grey10","grey5","turquoise","turquoise80","turquoise50","pinkButton","magenta","white","errorRed","warnYellow","campColours","theme","createMuiTheme","palette","primary","main","secondary","error","common","black","background","default","text","typography","fontFamily","body1","fontSize","Boolean","window","location","hostname","match","USER_LANGUAGE","gql","fallbackTo","fallback","options","defaultTranslation","I18nConfig","withLocalize","children","language","initialize","addTranslationForLanguage","setActiveLanguage","useState","languages","name","code","renderToStaticMarkup","onMissingTranslation","langEN","langDE","langFR","langCountryEN","langCountryDE","langCountryFR","langTranslationsEN","langTranslationsDE","langTranslationsFR","ActionType","Position","PartnerType","OrganizationVisibility","OrganizationFilterOption","PromotionType","Country","FilterOperator","ErrorCodes","Localization","store","useQuery","data","loading","userLang","setLanguage","countryCheck","user","userInformation","preferredLanguage","GridActionType","mapQlError","gqlError","mapper","extensions","message","Array","isArray","idx","length","console","log","Unknown","singleQlError","qraphQlErrorsToString","translate","undefined","GraphQL","query","Promise","resolve","reject","fetch","method","headers","body","JSON","stringify","credentials","then","res","json","hasOwnProperty","errors","setTimeout","catch","InvalideResponse","ConnectionError","queryUser","queryOrganization","id","organization","fakeData","logoBase64","partnerImageBase64","queryPromotions","queryPromotionDetails","org","articleCategory","partnerType","emailTemplate","email","crDate","Math","random","type","round","Types","Assignable","DedicatedUsage","queryCouponcode","products","results","productInformation","csDate","validFrom","validTo","assignedProductCode","active","changeOrganizationActiveState","organizationId","rnd","Authorization","savePromotions","promotion","savePromotionDetails","promotionDetails","saveCouponcode","couponcode","savePearlsTransaction","PearlsTransaction","sendPasswordResetEmail","userId","deleteAccount","avaiableCountries","load","enabledCountries","countries","save","tmp","avaiableEmployeeRoles","login","LOGIN","payload","logout","LOGOUT","loadUser","dispatch","a","LOADING","includes","UNAUTHORISED","document","cookie","appShell","drawerShown","auth","isLoading","hasUnauthorisedLogin","authHasExpired","multiSelect","countryCodes","pending","isLoaded","inputToChip","chips","accountShortcuts","changeLogin","isLocked","changeData","changeActive","sendReset","changePearls","pearlsObj","changePosition","removeFromCompany","sendgridTemplatesCreate","sendgridTemplatesDelete","deviceActions","requestLog","openWithProductCode","resetActivation","resetInstaller","setOutOfService","partnerDetails","isDirty","partner","globalErrors","propertyErrors","couponCode","openDrawer","closeDrawer","toggleDrawer","defaultInitialState","sortModel","filterModel","page","columnStates","actionType","initialState","state","action","grid","GRID","COLUMN","GridState","filterType","values","combineReducers","generateGridReducer","search","SEARCH","middleware","applyMiddleware","thunk","rootReducer","localize","localizeReducer","EXPIRE","productOverview","productOverviewReducer","partnerOverview","partnerOverviewReducer","DIRTY","ERROR","LOADED","SAVING","linkedUsers","linkedUsersReducer","bonusAccount","bonusAccountReducer","productRegistrations","productRegistrationsReducer","OPEN","CLOSE","pearlsGrid","pearlsGridReducer","employeesOverview","employeesOverviewReducer","joinRequestOverview","joinRequestOverviewReducer","createRequestOverview","createRequestOverviewReducer","promotionOverview","promotionOverviewReducer","promotionDetailsReducer","CODES","PENDING","SAVE","CHIPS","deviceOverview","deviceOverviewReducer","customerOverview","customerOverviewReducer","poolOverview","poolOverviewReducer","sendgridTemplatesOverview","sendgridTemplatesOverviewReducer","consumableGrid","consumableGridReducer","registrationGrid","registrationGridReducer","createStore","ability","AbilityBuilder","define","can","subscribe","prevUserId","newUser","getState","newUserId","setAbilityFromUser","extract","rules","roles","forEach","item","roleName","update","Can","createCanBoundTo","connect","React","anchorEl","setAnchorEl","open","CircularProgress","color","IconButton","edge","aria-controls","aria-haspopup","onClick","event","currentTarget","Menu","keepMounted","TransitionComponent","Fade","onClose","getContentAnchorEl","anchorOrigin","vertical","horizontal","MenuItem","href","sessionStorage","setItem","pathname","useStyles","makeStyles","drawerButton","display","textDecoration","drawerButtonActive","subNav","paddingTop","paddingLeft","NavItem","to","label","access","className","icon","props","classes","linkClass","iconWrapper","ListItemIcon","activeClassName","isActive","locationMatch","matchMatch","url","lastSegmentIsNumber","isNaN","parseFloat","substring","lastIndexOf","lastSegmentIsProductCode","split","slice","arrVars","splice","join","ListItem","button","ListItemText","I","NavigationList","salesRep","List","close","backgroundColor","dark","marginBottom","spacing","iconVariant","opacity","marginRight","alignItems","TranslateError","CustomError","output","Icon","SnackbarContent","aria-describedby","Error","map","errorItem","key","QUERY_EMPLOYEE_ORGANIZATION","QUERY_EMPLOYEE_DETAIL","FRAGMENT_EMPLOYEE_SINGLE","QUERY_EMPLOYEE_LIST","QUERY_CUSTOMER_DETAIL","CLOSE_ACCOUNT","REOPEN_ACCOUNT","updateCache","userKey","isAccountLocked","cache","employeeVariables","employeeCache","cloneDeep","readQuery","variables","employee","accountLocked","writeQuery","e","customerVariables","customerCache","customers","actions","bindActionCreators","useMutation","onCompleted","onError","doCloseAccount","closeAccountLoading","closeError","doReopenAccount","reopenAccountLoading","reopenError","langKeyEnableDisable","progress","errorElement","graphQLErrors","OkButtonOrProgress","Box","width","Button","Dialog","aria-labelledby","disableBackdropClick","disableEscapeKeyDown","DialogTitle","DialogContent","DialogContentText","DialogActions","disabled","productCode","REQUEST_LOG","RESETACTIVATION","SET_INACTIVE","setInactive","RESETINSTALLER","setActiveFlagTo","website","change","errorData","password","changeDate","input","ChangeLogin","setEmail","pass1","setPass1","pass2","setPass2","emailError","setEmailError","pass1Error","setPass1Error","pass2Error","setPass2Error","mutationError","setMutationError","useEffect","value","CHANGE_LOGIN","changePassword","test","changeEmail","mutate","eroorObj","TextField","fullWidth","onChange","helperText","autoFocus","addTranslation","defaultLanguage","activeLanguage","position","partnerId","FRAGMENT_PARTNER_GROUPS","FRAGMENT_PARTNER_ADDRESS","FRAGMENT_PARTNER_DETAIL","QUERY_PARTNER_DETAIL","QUERY_PARTNER_GROUPS","QUERY_PARTNER_EMPLOYEES","MUTATION_PARTNER_ADD_EMPLOYEE","CHANGE_POSITION","queryCache","employees","toLocaleLowerCase","REMOVE_FROM_COMPANY","remFrmCmpny","filter","variablesOrgOfEmployee","cachedOrgOfEmployee","warn","template","templateId","QUERY_SENDGRID_SUPPORTED_LANGUAGES","AuditLogObject","BonusAccountPermission","CouponCodeFilterOption","CustomerFilterOption","DateAggregationType","DeviceAccessLevel","DeviceActionState","DeviceActionType","DisinfectionType","EmployeeFilterOption","Language","MessageTranslation","NotificationType","OrganizationCreationRequestFilterOption","OrganizationJoinRequestFilterOption","OrganizationRequestStatus","PoolLocationType","PoolMaterial","PoolShape","PoolType","ProductFilterOption","ProductInstanceFilterOption","ProductInstanceState","ProductType","SendGridTemplateFilterOption","SendGridTemplateType","SortingDirection","UserActionClass","UserActionState","UserInformationFilterOption","DELETE_SENDGRID_SUPPORTED_LANGUAGE","CREATE_SENDGRID_SUPPORTED_LANGUAGE","createStyles","tableHeader","border","padding","tableRow","textAlign","tableCell","spinner","height","justifyContent","EditLanguageDialog","supportedLanguages","loadingLanguages","setSelectedRow","refetchQueries","awaitRefetchQueries","deleteSendgridSupportedLanguage","deleteLoading","setCreateObject","languageCode","countryCode","createSendgridSupportedLanguage","createLoading","selectedRow","createObject","sendGridSupportedLanguages","countryLanguagePair","style","margin","inputProps","maxLength","target","toLowerCase","toUpperCase","variant","insert","borderCollapse","cursor","row","setGridState","setColumnStates","ColumnStates","AgGridActionHelper","searchTerm","pageHeader","borderBottom","title","lineHeight","fontWeight","subTitle","controllGroup","controllGroupNav","zIndex","top","left","right","iconMenu","marginLeft","iconSvg","transform","whiteSpace","subNavItem","pendingSave","leftSeg","createIcon","isPending","pendingClass","Function","PageHeader","onAdd","onSettings","onSave","nav","isSavePending","showBack","colour","history","useHistory","getBack","goBack","add","settings","navigation","navItem","on","preventDefault","createNavLink","gridFilterHeader","flex","minWidth","maxWidth","GridFilterHeader","getFilterValues","defaultColDef","resizable","sortable","filterParams","filterOptions","suppressAndOrCondition","menuTabs","sideBar","defaultToolPanel","toolPanels","labelDefault","labelKey","iconKey","toolPanel","toolPanelParams","suppressRowGroups","suppressValues","suppressPivots","suppressPivotMode","suppressSideButtons","suppressColumnFilter","suppressColumnSelectAll","suppressColumnExpandAll","varsQueriedByGrids","getVarSetsQueriedByGrids","queryName","definitions","factoryApolloConnector","QUERY","dataHandler","colMapping","watcher","unRegisterWatcher","unsubscribe","doQueryData","client","request","defaultSort","queryArguments","apolloArguments","eqFilterOption","containsFilterOption","sortingArr","sortingOrder","filterArr","agc","addAgGridFilterModel","mapping","filterMapping","filterOption","field","selectedFilterOperator","STARTSWITH","toString","EQ","CONTAINSPLURAL","push","operator","addAgGridSortModel","sortField","element","colId","sortingCriterionOrder","sortingDirection","sort","ASCENDING","DESCENDING","setPagingFromAgGridStartEnd","startRow","endRow","pageSize","floor","setPaging","addSearch","searchTerms","fields","addfilters","filters","concat","getArguments","sorting","apolloArgumentsCreator","searchCols","customArguments","actualQuerry","varSets","ks1","Object","keys","vars","ks2","found","k","markVarsQueriedByGrids","queryData","onDataChangedFromOutside","newCallback","updateGridFromState","api","gridState","equal","column","getColumnState","setColumnState","getFilterModel","setFilterModel","getSortModel","setSortModel","paginationGetCurrentPage","paginationGoToPage","PageDialog","buttons","Alert","severity","alignSelf","click","AUDIT_LOG","gridDefault","flexFlow","overflow","exportToExcel","bottom","debouncedSetGridState","debounce","gridActions","debouncedSetColumnStates","columnsStates","getGridEventListener","eventType","columnApi","isGridStateEqual","folterModel","newFilter","ReduxAgGrid","excelExportParams","setApi","recordLog","listener","addGlobalListener","removeGlobalListener","excelExport","exportDataAsExcel","auditLog","interaction","detail","pIILevel","groupMultiAutoColumn","animateRows","modules","AllEnterpriseModules","ClientSideRowModelModule","pagination","paginationPageSize","onGridReady","AgGrid","apolloConnector","cellCallbackOnExport","gridLoadError","setGridLoadError","setLoading","setOpen","blockSize","setBlockSize","waitingToExport","setWaitingToExport","setUpdate","unregister","setServerSideDatasource","getRows","params","errorHandler","loadingError","arguments","short","long","showDetail","failCallback","resultData","totalResults","successCallback","finally","destroy","getDataSource","downloadAndExport","getDisplayedRowCount","totalRows","getCacheBlockState","block","pageStatus","checkAllDataLoaded","processCellCallback","alert","AlertTitle","cacheBlockSize","rowModelType","onPaginationChanged","keepRenderedRows","ApolloGrid","GET_SENDGRID_USERS","customGrid","UPDATE_SENDGRID_TEMPLATE","editable","suppressHorizontalScroll","templates","updateSendgridTemplateFunc","sendGridUserIds","sgIds","sendGridUsers","supLanguages","onRowEditingStoppedFunc","newValue","oldValue","templateRow","node","setSelected","sendGridId","sendGridUserId","templateName","sendgridId","isDefault","trim","templateType","columnDefs","getColumnDefs","aggFuncs","combineVals","combineValsFunc","suppressAggFuncInHeader","groupUseEntireRow","onCellValueChanged","onRowEditingStopped","components","countryCellRenderer","languageCellRenderer","sendgridUserCellRenderer","sendgridUserEditCellRenderer","getContextMenuItems","deleteOpen","groupRowInnerRenderer","groupRowRendererParams","suppressCount","quickFilterText","autoGroupColumnDef","headerName","cellRendererParams","enableGroupEdit","rowData","removeFilterSort","rowGroup","hide","aggFunc","pinned","cellRenderer","checkBox","cellEditor","cellEditorParams","sendgrid","sendResetOpen","menuItems","getExpandedMenuItems","nodes","flagsArr","userObject","languageVal","countryVal","fontStyle","cellParams","flags","allChildrenCount","allLeafChildren","leafChild","countryObj","handledLanguages","languageObj","find","overflowX","innerHeader","innerHeaderRight","borderRadius","filterList","QUERY_SENDGRID_TEMPLATE_LIST","debouncedSearch","oldSearchTerm","searchAction","appState","templatesOverviewState","createOpen","setSearch","openLanguage","setOpenLanguage","useLazyQuery","fetchPolicy","getSendgridTemplates","templatesData","changeSearch","sendgridTemplatesGrid","size","filteredTemplateData","sendGridTemplates","x","TemplatesGrid","DELETE_SENDGRID_TEMPLATE","deleteTemplate","deleteSendgridTemplateFunc","DropDown","selectedVal","isDisabled","disabledMenuItem","valueList","valueLabelList","fieldName","onChangeFunc","evt","noneValue","selectedValExists","setState","inputLabel","useRef","labelWidth","setLabelWidth","current","offsetWidth","propName","selectValues","FormControl","InputLabel","ref","htmlFor","Select","alignRight","toggleGroup","container","paddingRight","CREATE_SENDGRID_TEMPLATE","defaultValues","EN","sendGridUserName","NOT_SPECIFIED","createTemplate","templateData","setTemplateData","setChangedIsDefault","setError","newTemplateId","sendGridTemplate","create","createSendgridTemplateFunc","createTemplateLoading","submit","useCallback","ToggleButton","countryState","setCountryState","tempAddress","replace","languageCountryCodes","sendGridUserNames","Grid","xs","ToggleButtonGroup","exclusive","newAlignment","SvgComponent","xmlns","fill","d","data-name","fillRule","phoenixBanner","warningIcon","warningText","showMoreText","PhoenixWarningBanner","findOutMoreOnClick","styles","PhoenixWarningIcon","banner","flexDirection","okButton","PhoenixWarningDialog","onSuccess","useApolloClient","resetStore","app","appBar","drawer","flexShrink","logo","logoImage","maxHeight","drawerPaper","toolbar","mixins","marginTop","contentWrapper","flexGrow","overflowY","appVersion","showLogin","setShowLogin","warningDialogOpen","setWarningDialogOpen","CssBaseline","AppBar","Toolbar","src","alt","Typography","component","noWrap","Drawer","paper","Navigation","process","ChangePosition","card","content","heroImage","Card","campManfred","AppRoute","Component","render","matchProps","contentClass","cannot","i","redirect","HomePage","PageNotFound","CampUtils","getEnumAsArray","enumType","retArray","n","filterSparseArray","toFilter","strict","QUERY_PRODUCTS_GRID","CellRenderer","ProductLink","IoTCheck","productType","BoolCheck","FormatDate","format","Date","productOverviewState","gridData","frameworkComponents","filterWarning","useDebouncedCallback","newSearchTerm","changeFilter","filterName","newFilterValues","assign","selectedTypes","regFilterType","regFilter","defaultValue","indexOf","aria-label","renderInnerHtml","COUPON_CODE_GRID","ID","NAME","PARTNER_TYPE","EMAIL","CITY","COUNTRY","CODE","apolloConnectorByPromotion","COUPON_PRODUCT_ID","couponCodes","Close","CONSUMABLES","pointerEvents","valueParser","numberParser","valueGetter","exportProducts","index","itemNumber","asNumber","parseInt","Number","ProductsCell","product","arr","prodInfo","gridValue","consumableProducts","consumableOverview","loadingSpinner","createConsumablebutton","reactiveBoxesRight","CREATE_CONSUMABLE_PRODUCT","pearlsRewarded","newConsumable","setNewConsumable","__typename","consumableProduct","POLL_GENERATE_CODES","tempArticle","GENERATE_CODES","EXPORT_BONUS_LABELS","DISABLE_BATCH","fieldContainer","generateCodesGrid","gridContainer","pdfContainer","articleName","totalResult","suppressMenu","rowIndex","productList","exportOverwrite","setExportOverwrite","batchError","setBatchError","showGrid","setShowGrid","deactivateBatchDialog","setDeactivateBatchDialog","generateCodesDialog","setGenerateCodesDialog","setTemplate","show","productNeeded","setProductNeeded","productId","amount","batchNumber","erpBatchNumber","generateData","setGenerateData","setGridData","exportError","setExportError","startPolling","batchAlreadyExists","generateCodesFunc","genCodesLoading","pollGenCodes","compare","b","codeA","codeB","comparison","pollInterval","setPollInterval","notifyOnNetworkStatusChange","pollGenerateProductCodesJob","isFinished","result","total","pollGenCodesLoading","pollGenerateData","exportBonusLabels","alreadyDownloaded","alreadyExported","exportLoading","deactivateBatch","deactivateLoading","notRegisterable","productArray","valueToDisplay","canGenerate","isProductRegistrationEnabled","CodeGrid","ActionButtons","productDescription","useTemplate","overwrite","batchDeactivated","Autocomplete","blurOnSelect","getOptionLabel","option","getOptionDisabled","renderOption","renderInput","registrationOverview","QUERY_PRODUCT","RegistrationCodes","searchWithPearls","QUERY_PARTNER_LIST","QUERY_PARTNER_LIST_WITH_PEARLS","POSTAL_CODE","creationTimeStamp","CREATION_TIME_STAMP","vatNumber","VAT_NUMBER","employeeCount","EMPLOYEE_COUNT","hasEmployees","HAS_EMPLOYEES","searchColumns","apolloConnectorBySearch","organizations","apolloConnectorBySearchWithPearls","getColumnDefsWithPearls","columnDef","allowedCountries","gridOptions","getRowStyle","PartnerLink","PearlsCount","PartnerTypeCell","HasEmployees","DELETE_ORGANISATION","formControl","MenuProps","PaperProps","ITEM_HEIGHT","selected","allowMultipleSelection","showSelectAll","isSelectedAll","realSelected","child","myKey","keyIncludesAll","arraysEqual","eventTargetVal","shift","multiple","Input","renderValue","divider","Checkbox","checked","country","backgroundError","withApollo","partnerOverviewState","partnerOverviewWithPearlsState","setGridWithPearlsState","setColumnWithPearlsStates","orgId","setOrgId","delOrgError","setDelOrgError","gridWithPearls","setGridWithPearls","confirmDialog","setConfirmDialog","deleteOrganization","allQueryVariables","allQueryVariablesWithPearls","cacheGroups","fromJS","groupBy","remove","cacheGroupsWithPearls","groupByRange","reduce","acc","last","updateIn","groupedRanges","group","get","groupedRangesWithPearls","entrySeq","flatMap","pair","pageGroup","toJS","toArray","pageGroups","otherVars","allCaches","pagesToUpdate","list","chunkSize","Range","count","chunkStart","splitIntoChunks","pageCache","nextData","deleteOrganisation","orgLoad","setApolloConnector","apolloConnectorWithPearls","setApolloConnectorWithPearls","gridStateWithPearls","newFilterWithPearls","changeTypeFilter","changeCountryFilter","selectedCountries","CountryFilter","onFirstDataRendered","dirty","globalError","propertyError","loaded","groupsDiff","paddingBottom","bwtBtn","getLatLngFromAddress","address","execotor","hasCanceled_","innerPromise","val","cancelablePromise","doCancel","func","Symbol","toStringTag","prototype","call","google","geocoder","maps","Geocoder","latLng","geocode","status","GeocoderStatus","OK","lat","lng","geometry","toFixed","GoogleApiWrapper","apiKey","isNewMode","positionDB","locationInfo","latitude","longitude","convertLatLong","positionGeoCode","setPositionGeoCode","positionCurrent","setPositionCurrent","newPosition","convertGoogleLatLng","zoom","addressSearchString","street","postalCode","city","isMapSynchrone","deepEqual","newGeoPosition","isDifferent","center","initialCenter","streetViewControl","gestureHandling","root","valueContainer","flexWrap","chip","chipFocused","emphasize","inputComponent","inputRef","Control","innerProps","innerRef","selectProps","TextFieldProps","InputProps","MultiValue","Chip","tabIndex","clsx","isFocused","onDelete","removeProps","deleteIcon","Cancel","Option","isSelected","ValueContainer","MultiSelect","headline","isClearable","placeholder","isMulti","FormHelperText","mapReduceToOptionType","reduced","mapReduceToGroup","optionType","nulllAddress","selectedGroups","setSelectedGroups","selectableGroups","addressRef","setAddress","isError","onChangePosition","selectableGroupsOT","useMemo","selectedGroupsOT","setCountryCode","autoComplete","telephone","externalId","visibility","formContainer","imgTitle","imgField","imgUploadButton","errorBox","btnContained","idGen","getUniqueId","ImageUpload","imageTitle","imageSize","defaultImage","defaultImageLink","imgPropName","supportedFileTypes","maxFileSize","urlPropName","setErrors","currentLocalImage","setCurrentLocalIMage","actualImage","setActualImage","getRootProps","getInputProps","Delete","History","PartnerMedia","logoUrl","logoLinkUrl","partnerImageUrl","partnerImageLinkUrl","EmployeesGrid","changePositionOpen","changeLoginOpen","removeFromCompanyOpen","onCellClicked","rowRenderer","rowCompsByIndex","getRenderedCellForColumn","beans","contextMenuFactory","showMenu","FullNameCell","firstName","lastName","MenuCell","LinkedUserLink","Employees","employeeData","employeeGrid","pearls","QUERY_BONUS_ACCOUNT","TransactionNoteGetter","EditorNameGetter","details","editor","bwtDescription","migrationDescription","legacyDescription","note","orderId","entries","entry","quantity","articleTitle","CREATE_BONUS_ACCOUNT","DISABLE_BONUS_ACCOUNT","CHANGE_BONUS_ACCOUNT_RIGHTS","link","editPearlsBtn","disableButton","tooltipText","bonusAccountState","newPearlsState","bonusAccountRightsDialog","setBonusAccountRightsDialog","bonusAccountRightsError","setBonusAccountRightsError","ChangePearlsButton","changePearlsOpen","accountId","createBonusAccount","setBonusAccountPermission","tempPermission","updateBonusAccountRights","updateRightsLoading","getPermission","WRITE","READ","DEACTIVATED","permission","bonusAccountPermission","setTempPermission","radioGroupRef","handleCancel","handleOk","bonusAccountUpdate","bonusAccountId","bonusAccountInsert","bonusaccount","transactions","fetchBonusAccountType","Link","underline","dividers","RadioGroup","FormControlLabel","control","Radio","OutlinedInput","endAdornment","InputAdornment","Tooltip","htmlColor","shopLoginLink","apolloConnectorById","productInstances","FullNameGetter","headerTooltip","owner","DateCell","StateCell","productRegistrationsState","enableBrowserTooltips","MUTATION_CREATE_TRANSACTION","changedPearls","setChangedPearls","pearlsNote","setPearlsNote","isNegative","setIsNegative","pearlsNow","pearlsThen","pearlsChanged","createTr","createTrLoading","createTrError","newChanged","abs","transactionInsert","description","GET_AUDIT_LOGS","arrow","textField","customTooltip","useRowStyles","PaginationActions","useTheme","rowsPerPage","onChangePage","direction","LastPage","FirstPage","KeyboardArrowRight","KeyboardArrowLeft","ceil","max","Row","audit","canViewLogDetail","openRawDetails","setOpenRawDetails","Fragment","TableRow","TableCell","operation","timestamp","scope","colSpan","Collapse","in","timeout","unmountOnExit","gutterBottom","TableHead","align","AuditLog","deviceData","organizationData","customerData","customerDataLoading","deviceDataLoading","organizationLoading","productInstance","partnerDetail","customerId","gridSize","instanceInformation","devId","setPage","setRowsPerPage","deviceId","shouldSkipDeviceQuery","shouldSkipOrganizationQuery","shouldSkipProductInstanceQuery","shouldSkipCustomerQuery","shouldSkipProductQuery","objectType","PRODUCT_INSTANCE_CODE","objectId","pageNumber","skip","productInstanceData","productInstanceLoading","organizationResult","ORGANIZATION","String","deviceResult","DEVICE","customerResult","USER_ACCOUNT","PRODUCT","productData","productLoading","objectAudit","logs","instance","logA","logB","TableContainer","Paper","Table","TableBody","auditDetails","TableFooter","TablePagination","rowsPerPageOptions","newPage","onChangeRowsPerPage","ActionsComponent","REACTIVATE_ORGANIZATION","userInfo","errorContainer","newPartnerBean","onChangeSetData","isDeleted","deleted","setDeleted","reactivateOrganization","reactivateOrganisation","reactivateLoading","when","USER_ROLES","MUTATE_PARTNER","MUTATE_PARTNER_LOGO","MUTATE_PARTNER_IMAGE","MUTATE_ADDPARTNERGROUP","MUTATE_REMOVEPARTNERGROUP","MUTATE_CHANGEPARTNERADDRESS","MUTATE_ADD_NEW_ORGANIZATION","getFilteredGroups","actualGroups","filterGroups","findIndex","filterGroup","changeNestedProp","object","changeOrganizationActiveStateOpen","useParams","idNum","roleData","roleLoading","userRoles","canViewLogs","hasChanged","setHasChanged","ownerId","ownerIdNum","partnerRef","persistPartner","persistPartnerLoading","persistPartnerError","persistPartnerImage","persistPartnerImageLoading","persistPartnerImageError","persistPartnerLogo","persistPartnerLogoLoading","persistPartnerLogoError","groups","organizationGroup","addOrganization","addToPartnerGroups","addPartnerGroupsLoading","addPartnerGroupsError","removeOrganization","removeFromPartnerGroups","removePartnerGroupsLoading","removePartnerGroupsError","changePartnerAddress","changePartnerAddressLoading","changePartnerAddressError","some","graphQLError","startsWith","OrganizationId","addNewOrganization","addNewOrganizationLoading","addNewOrganizationError","persistedPartner","persistedAvailableGroups","pgLoaging","pgError","organizationGroups","BUILDER","VISIBLE","clonePartner","selectedGroupsRef","partnerSessionRef","image","onbeforeunload","newCreatedPartnerId","errorObj","PartnerDetail","selectedFilter","currentGroups","partnerGroupsDiff","partnerDataGroups","groupsToAdd","selectedGroup","partnerGroup","groupsToRemove","savedAll","savedAllNewPartner","ownerUserId","errorString","elementToAdd","organizationGroupId","elementToRemove","updateImageInput","pop","partnerImage","all","reset","partnerAddress","FIRST_NAME","LAST_NAME","POSITION","ORGANIZATION_NAME","isPendingOrganizationAssignment","IS_PENDING","LAST_LOGIN","IS_LOCKED","stateStyle","cellStyle","lockVisible","CombineFieldsWithLink","TestVerifiedAccount","allowedToLogin","verifiedAccount","FilterNone","employeesOverviewState","changeDeletedAccountFilter","deletedFilterType","deletedFilter","cell","contentDisplay","reactiveBoxes","reactiveBoxesSmall","employeeInfoObj","setEmployeeInfoObj","validation","currentCC","setCountry","handleChange","latestValue","validationFields","greyColor","ShowAccountInfo","accountState","lang","userLanguage","account","registeredOn","lastLogin","lastPasswordReset","incorrectLogins","lastIncorrectLogin","dataUpdate","acceptedTerms","acceptedMarketingUsage","verticalAlign","Organization","idNUm","addEmployeeLoading","CurrentOrganization","Address","OrganizationWrap","pageHeaderMessage","PageHeaderMessage","infoSeg","MUTATION","ConnectedEmployeeDetailsView","changeActiveOpen","errorMessage","canUsePerlaUpdater","isTestUser","lastFailedPasswordReset","employeeInformation","setEmployeeInformation","pageNav","EmployeeDetails","langLocalMapping","en","enGB","de","fr","langMonthArray","MonthBox","years","mvalue","setMvalue","pickerRef","createRef","locale","idxMonth","currentStr","year","month","pickerPreSet","getYear","getMonth","getQuickFilterText","cellClass","valueFormatter","numberFormatter","currencyFormatter","from","toJSON","errorPolicy","summary","pearlTrans","transaction","creditEuros","creditPearls","debitEuros","debitPearls","conversionRate","suppressExcelExport","fromToString","monthYearMaster","setMonthYearMaster","now","yearMonth","setYearMonth","startDate","setDate","getDate","endDate","endOfMonth","selectedStartDateInputValue","setSelectedStartDateInputValue","selectedEndDateInputValue","setSelectedEndDateInputValue","startQueryDate","setStartQueryDate","endQueryDate","setEndQueryDate","startingDay","endingDay","selectedStartingDayString","getUTCFullYear","selectedEndingDayString","querySelectorAll","addFunction","eventTarget","removeEventListener","addEventListener","setSelectedStartDateInput","setSelectedEndDateInput","REGISTERED_ON","TELEPHONE","getRowStyleScheduled","CustomerLink","NumberOfPools","registeredPools","customerOverviewState","QUERY_CUSTOMER_PRODUCT_INSTANCES","registeredProducts","FirmwareIndicator","recentFirmwareVersion","isOutOfDate","registeredPerlaInstanceInformation","firmware","ProductInstanceLink","SubIndicator","Clear","customStyles","provided","menu","QUERY_DEVICE_NOTIFICATIONS","TodoPrivateListQuery","onChangeFilter","selectedDeviceVersion","setSelectedDeviceVersion","selectedCodeType","setSelectedCodeType","selectedMessage","setSelectedMessage","nestedFilterLists","deviceNotificationCodeDefinitions","plainRecord","deviceVersion","newDevice","newCodeType","newMessage","device","displayName","version","childs","codeType","mappedCodeType","messageTitle","notificationTexts","msgLang","setDeviceVersion","deviceVersionFilter","setCodeType","codeTypeFilter","setMessage","messageFilter","hideErrorStatesFilter","querySelector","classList","selDevice","selCode","menuContainerStyle","PartialMatchFilter","bind","this","model","filterChangedCallback","prodInstanceDataFragment","QUERY_WITHOUT_TR","PRODUCT_CODE","hiddenstate","STATE","deviceVersionId","DEVICE_VERSION_ID","deviceState","DEVICE_STATE","deviceCode","DEVICE_STATE_CODE","CUSTOMER_FIRST_NAME","CUSTOMER_LAST_NAME","CUSTOMER_EMAIL","STREET","PRODUCT_NAME","TYPE","ITEM_NUMBER","serialNumber","SERIAL_NUMBER","registrationDate","REGISTRATION_DATE","installationDate","INSTALLATION_DATE","FIRMWARE_VERSION","DEVICE_ID","queryWithoutTotalResult","apolloFilter","WARNING","SERVICE","NOT_CONNECTED","NOT_SYNCHED","silk","NOT_SET","ServiceDateValueGetter","StateValueGetter","FirmwareValueGetter","HolidayModeValueGetter","stateTitle","firmwareValue","holidayModeActive","nextServiceDate","errorStatesFilter","ErrorStatesFilter","PREVIEW_BY_CODE","deviceSearchPreview","showProduct","showOwner","rel","showPartner","DeviceSearchPreview","isProdCodeFormat","servicePartner","backgroundWarn","backgroundDiscon","deviceOverviewState","statesFilter","setStatesFilter","changeStateFilter","buttonCnt","parentElement","childNodes","selectedStates","hidden","innerWidth","latlng","setPosition","positionText","setPositionText","setZoom","showCursor","setShowCursor","fullscreenControl","onDragend","newLocation","getCenter","getZoom","mapChangeFunc","onMouseover","onMouseout","toPrecision","closeButton","colours","uppercase","textTransform","overlay","withStyles","MuiDialogTitle","MuiDialogContent","deeplyEqual","DeviceLocationModal","existingAddress","handleClose","addressUpdateInput","setAddressUpdateInput","locationUpdate","callback","ZERO_RESULTS","getLocationFromAddress","newState","existing","updateAddress","addressInputUpdater","applyValue","newInput","onBlur","str","UPDATE_TEST_FLAG_MUTATION","DOWNLOAD_RAW_IOT","RESET_STATE","appSymbol","dataItem","dataItemInst","inactiveIcon","inactiveLink","popper","boxShadow","testDeviceFormControl","warrantyContainer","reformat","dateStr","warrantyLength","articleNumber","DataItem","DeviceData","rndPermission","campRnd","openState","setOpenState","itemNumberObj","penguin","e1","nonIotPerla","resetState","dataSharedWithPartner","customerSelectedInstaller","isTestDevice","installerId","installerName","partnerName","instanceType","wPA2Key","lastTelemetryDateStr","ballValveOpen","nextCustomerMaintainance","accessCodes","isIot","userActions","telemetry","date","userActionClass","FIXED_INTERVAL_HALF_YEAR","end","FIXED_INTERVAL_MONTHLY","FIXED_INTERVAL_THREE_YEARS","CONSUMABLE_REFILLMENT","placement","setPlacement","getAccessCode","ac","accessLevel","RequestLogButton","requestLogOpen","ResetActivationButton","resetActivationOpen","ResetInstaller","resetInstallerOpen","closePopper","rawDownloadAble","setRawDownloadAble","fromDate","getRaw","rawIotError","rawIot","rawIotLoading","dateTimeLastReceivedData","fromDate30","toISOString","fromDate180","downloadRawIot","JSONString","write","perlaTimedRawData","newPlacement","Done","addYears","toDateString","isTest","setIsTest","updateTestDevice","labelId","onOpen","isTestFlag","disableUnderline","readOnly","RegisteredPerlaOrDumbDeviceRight","FlashOn","DeleteForever","ErrorRounded","RotateLeft","ClickAwayListener","onClickAway","CloudDownload","anchorTarget","prev","Popper","notificationPanelInnerContainer","notifContainer","Status","getIcon","INTERNAL_ERROR","HighlightOff","ErrorOutline","CheckCircleOutlineRounded","DeviceStatus","START_REGEN","START_FAST_REGEN","SilkDeviceData","handleClickOpen","startFastCycleRegeneration","startRegeneration","lastUpdate","deviceActive","warrantyExpires","silkDetailsInstance","deviceActivated","ServiceCalc","silkDataInstance","daysToService","WarrantyCalc","daysWarrantyExpires","setTime","getTime","viewBox","colorfading","QUALITY_THRESHOLDS","gsm","good","fair","weak","wifi","SignalStrength","rssi","usingGsmOnly","signalQuality","ranges","getSignalQuality","quality","GsmOfflineIcon","GsmWeakIcon","GsmFairIcon","GsmGoodIcon","GsmExcellentIcon","getGsmSignalQualityIconComponent","WifiWeakIcon","WifiFairIcon","WifiGoodIcon","WifiExcellentIcon","getWifiSignalQualityIconComponent","dataContainer","titleContainer","SilkTelemetry","silkData","indexToShow","setIndexToShow","silkTelemetryNotifs","notifications","notif","messageType","telemData","silkRegenNotifs","numberOfTelemetryResults","parse","notFound","counter","Data","isBefore","Timestamp","toLocaleString","regenData","timeStamp","wifiConnection","wifiCon","remainingCapacity","remCap","remainingSalt","remSalt","currentActivity","currAct","waterConsumption","waterCons","waterFlow","isDisconnected","lastRegen","substr","ArrowBackIosRounded","ArrowForwardIosRounded","isWithinInterval","parseISO","start","subHours","GET_USER_COUNTRIES_QUERY","serviceContractFormControl","activity","acceptedContractDate","lastAppActivity","clientName","lastAction","UPDATE_CONTRACT_DATE_MUTATION","convertFlagToState","contractDate","diff","selectedDate","handleDateChange","hasAcceptedTerms","setTerms","updateContractDate","updateUserAcceptedContractDate","newDate","renderContractDateLabel","resetContractDate","getFullYear","renderContractDateValue","isDenmark","MuiPickersUtilsProvider","utils","DateFnsUtils","DateTimePicker","inputVariant","Level","sample","initialDate","selectedDateTelem","setSelectedDateTelem","loadNewDate","setLoadNewDate","info","previous","next","stateBody","setter","wlanQuality","gsmQuality","lastRegenerationS1","lastRegenerationS2","capacityRemainingS1","capacityRemainingS2","motor1Position","motor2Position","sampleDate","pickerDate","setSelectedDateStr","connectedToClientLan","placeContent","telemetryRawData","notificationTelemetry","logDate","tooltip","borderRight","iconStyle","errorIcon","warnIcon","infoIcon","Notifcation","notification","untranslatedSubTitle","untranslatedTitle","level","E","W","getLevel","DayGroup","dayMs","temporalHeight","isLast","notifsRef","notifsHeight","setNotifsHeight","offsetHeight","userExpanded","setUserExpanded","defaultExpanded","expanded","arrowIcon","toList","dayGroup","leftCol","timePoint","timeLine","rightCol","dateHeader","expandableFrame","min","expandableContent","usePaginatedNotifications","notificationJSON","fetchMore","events","eventsRawData","messages","loadMore","updateQuery","fetchMoreResult","instanceInfo","perlaInfo","moreEvents","newPrev","existingInfo","existingPerlaInfo","newEvents","perlaNotificationsArr","r","notifTitle","notifIcon","HOLIDAY_MODE","DISABELING","GET_LATEST_LOG","MANUAL_RINSE","MANUAL_REGENERATION","FIRMWARE_UPDATE","START","FINISHED","PARAMETER_UPDATE","PING","SHUTDOWN","ENABLED","LID_CHANGE","getTitle","information","TIMEOUT","notifDate","baseInformation","receivedAt","perlaNotification","handleScroll","elem","getBoundingClientRect","innerHeight","documentElement","clientHeight","byDayPairs","startOfDay","RootRef","rootRef","zipAll","day","notifs","nextPair","differenceInCalendarDays","notifData","typeAsString","headerAsString","header","getMessage","require","silkNotifications","Notification","sentAt","unconfirmedNotifs","deviceDisconnected","disconnectCodeType","circle","strokeDasharray","CircleSegment","lineWidth","percentage","stroke","strokeWidth","vertAlign","bigNumbers","bigNumbersWithDoubleCircle","measurement","measurementText","bottomInformationTitle","bottomInformation","circleInformation","borderColor","borderWidth","borderStyle","perlaDivider","statsContainer","middleContainer","singleCircleContainer","doubleCircleContainer","circlePercentageText","warning","backgroundSize","backgroundPosition","backgroundRepeat","backgroundImage","warningTriangle","DeviceSummary","setSelectedDate","availableResource","firmwareVersion","availableAmountOfResource","brineCounter","electrolysisCurrent","waterHardnessIn","waterHardnessOut","waterTreatedCurrentMonth","waterTreatedCurrentYear","waterTreatedDaily","saltAvailabilityInDay","consumptionOfResourceSinceRefillMineral","isPerlaHybrid","mineralLeft","getMineralValue","summaryRawData","notificationSummary","m","SilkSummary","silkSummaryNotifs","summaryData","numberOfSummaryResults","summaryTimestamp","matchingTelemetry","telemetryData","totalDays","daysInServ","totalL","totalServWater","totalRech","totalRecharg","waterHardness","hardness","hardnessUnit","waterHardUnit","currentSalt","maxSalt","maxSaltCapacityKg","GetConvertedHardness","upperRegion","xAxis","borderTop","labelSeg","tick","barRegion","gridLine","bars","barSeg","transition","bar","borderTopLeftRadius","borderTopRightRadius","barBlue","barHighBlue","barHighPink","barPink","yAxis","roundToTwoDecimalPlaces","Bars","numberOfValues","topLabel","maxIdx","focusedBar","setFocusedBar","barWidth","onMouseEnter","onMouseLeave","cx","outline","formatNumber","AnimatedBarChart","labels","leftButtonEnabled","rightButtonEnabled","useLitres","useSalt","midLabel","Stats","average","unit","weekSwitcher","weekStatsSeg","animationFrame","selectedWeek","dash","enter","enterActive","enterDone","exit","exitActive","WeeklyChart","until","goToPreviousWeek","goToFollowingWeek","salt","water","numberOfWeeks","eachWeekOfInterval","weekStartsOn","getLabels","aggregatedConsumptions","consumptions","removedConsumptions","weekBuckets","week","startOfISOWeek","loggedAt","weekConsumptionValue","dayValue","consumption","getConsumptionAsWeek","fillEmptySaltConsumptionDataWithZeros","fillEmptyWaterConsumptionDataWithZeros","monthCrossover","yearCrossover","differentYear","s","LeftArrow","TransitionGroup","CSSTransition","appear","RightArrow","MonthlyChart","numberOfMonths","eachMonthOfInterval","addMonths","monthBuckets","monthConsumptionValue","getConsumptionsAsMonth","crossFade","DailyChart","numberOfDays","eachDayOfInterval","addDays","DailyWaterConsumptions","daysBetween","consumptionsArr","targetDate","isSameDay","ChartPager","days","setDates","pages","dayDifference","differenceInDays","aggregationType","subMinutes","endOfDay","getTimezoneOffset","headerLeft","headerRight","monthPicker","chartWrap","alignContent","selectRoot","toggleContainer","dateDialog","SILK_QUERY","removeTimezone","addMinutes","BarChart","isSilk","setUnit","showTreatedWater","setShowTreatedWater","once","setOnce","pickDate","setPickDate","dateError","setDateError","subDays","dates","pickedButNotSet","setPickedButNotSet","setPages","getPages","startx","untilx","range","oldestRecord","aggregate","DAY","getSaltAndWater","getWaterForSilk","newPages","silkInfo","perlaWaterConsumption","statistics","totalWaterTreated","calculatedWaterConsumption","silkWaterConsumption","waterStatistics","totalWaterConsumedLiter","saltConsumption","totalUsedSalt","BlueSwitch","switchBase","track","Switch","validateSelectedDate","intervalToDuration","CalendarIcon","InputLabelProps","shrink","currentPage","Chart","CurveGraphContent","lines","yAxisTopPoint","yAxisValues","xCount","paddedPoints","unitX","unitY","topBottomThreshold","scaledLines","line","y","x1","y1","x2","y2","gradientUnits","offset","stopColor","stopOpacity","linePath","scaledPaddedPoints","grads","scaledHandleWidth","path","xEnd","yEnd","calcPath","fillPath","idx1","idx2","cy","YAxis","XAxis","samplePoints","xAxisValues","findHighestPoint","linesIn","highest","pointArray","highestInArray","CurveGraph","highestPoint","graphTop","getYAxisPoints","setSize","useLayoutEffect","updateSize","legend","Regeneration","monthsSelected","setMonth","first","startOfMonth","subMonths","monthsInHalfYear","points","aggregation","MONTH","graphParameters","setGraphParameters","queryFirst","queryTo","check","WEEK","regenArrays","dateFound","startOfWeekAsDate","hasFound","regen1","totalRegenerationCountColumn1","regen2","totalRegenerationCountColumn2","noData","point","float","startOfWeek","subWeeks","weeksInThreeMonths","monthsInYear","SilkRegeneration","setFirst","setPoints","setAggregation","silkRegenerationNotifs","byAggregate","finishedDates","messageData","buckets","milli","reverse","groupByAggregate","mockLines","dateArray","addWeeks","daysInMonth","paramInfo","deviceParameter","paramConv","paramNames","getOwnPropertyNames","paramValues","paramArray","Connectivity","timeZoneOffset","firstTz","lanArray","averageConnectedToClientLan","wlanArray","averageConnectedToClientWlan","gsmArray","averageGsmQuality","unshift","NewProductCode","PerlaViews","unconfirmedNotifications","SilkViews","DisplayStatus","UnregisteredPerlaViews","ProductViews","Col","CustomerPage","roleError","views","resolveInstanceInfo","TextBox","translateId","ServicePartner","customerDetailsObj","setCustomerDetailsObj","updateTestFlag","rights","FormatStatus","Volume","volume","poolOverviewState","numberOfPools","ConnectedCustomerDetailsView","deleteAccountOpen","updateCustomerDetails","updateLoading","customerDetailsUpdateInput","setCustomerDetailsUpdateInput","fullName","setValidation","validationArr","validationCheck","RegisteredDevices","ServiceContract","RegisteredPools","CustomerDetails","mapStringArrToOptTypeArr","trConfig","prefix","selectable","translateConfig","selectableOpt","enabledselectableLowercase","selectedOpt","inputId","mapOptTypeToStringArr","employeeRoles","handleAddChip","newEmpl","handleDeleteChip","setCountries","setChips","pendingChips","errorChips","loadChips","saveChips","ChangeLoginButton","ChangeActiveButton","SendResetButton","mapStateToProps","csStore","iTcStore","ReduxUserInfo","csActions","iTcActions","countriesError","setCountriesError","setEmployeeRoles","employeeError","setEmployeeError","errorCounter","gql_property_required","CountrySelect","allCountryCodes","PROMOTION_GRID","promoGrid","Count","availableCount","overallCount","ProductCount","productLength","assignedProducts","firstProduct","promotions","innerContent","promotionOverviewState","innerContainer","textFields","PromotionInformation","availableCountryCodes","obj","isArchived","promotionType","creationDate","creationUser","usageCountLimit","errorFields","assignedProductArray","selectedCountryCodeIds","assignedCountryCodes","slicedDate","_","buttonContainer","buttonInnerContainer","spinnerContainer","DEACTIVATION","DELETE_ALL","DELETE_PROMOTION","PromotionToolbar","promotionId","changeUpdate","deactivation","deactivationLoading","deleteAll","deleteAllLoading","deletePromotion","deletePromotionLoading","PRODUCT_QUERY","COUNTRY_CODE_QUERY","DEACTIVATE_SINGLE_CODE","ACTIVATE_SINGLE_CODE","UPDATE_PROMOTION","CREATE_PROMOTION","overviewStyles","PromotionDetailView","promoOverviewState","setCode","fieldError","setFieldError","promotionInfo","setPromotionInfo","createUpdateError","setCreateUpdateError","newPromotionId","createPromotion","updatePromotion","deactivateCouponCode","activateCouponCode","activateLoading","convertToIds","productIdArray","savePromotion","getInputValidationErrors","createPromotionInsertInput","createPromotionUpdateInput","productIds","countryCodeIds","cssClasses","couponCodeId","promotionData","productsData","productsLoading","countryCodesData","countryCodesLoading","ASSIGNABLE","CouponCode","saving","newCouponCode","couponCodeData","setCouponCodeData","newCouponCodeData","Expander","classnames","contentHeight","setContentHeight","currentHeight","hideButton","titleOuterContainer","titleInnerContainer","removeButtonContainer","PartnerRegistration","productInfoObj","setProductInfoObj","serviceFeePearls","setHidden","openClose","invoiceUploadAllowed","bonus","KeyboardArrowDown","KeyboardArrowUp","MAIL_QUERY","CustomerRegistration","promotionsData","isNew","mailData","regBonus","registrationBonus","mailTemplateValues","uniqueMailTemplateValues","Set","bonusId","promotionsList","bonusIncentiveValue","FormGroup","isCodelessProductRegistrationEnabled","registrationMailTemplateName","freeSolo","CONSUMABLE_LIST","addSpinner","consumable","Consumable","consumables","selectedConsumables","selectableConsumables","languageContainer","bodyContainer","updateSpinner","removeButton","addButton","REMOVE_TRANSLATION","ADD_TRANSLATION","UPDATE_TRANSLATION","translationObject","notificationId","addOnly","allTranslations","languageAlert","setLanguageAlert","titleAlert","setTitleAlert","bodyAlert","setBodyAlert","langsLowercase","langTranslations","removeTranslationMutation","removeTranslationLoading","userAction","createProductUserActionNotificationTranslation","addTranslationMutation","addTranslationLoading","updateTranslationMutation","updateTranslationLoading","errorFound","productTranslation","productUserActionNotificationId","productTranslationId","mailContainer","thresholdContainer","stateContainer","editButton","removeSpinner","translateTitle","doneButtonContainer","REMOVE_NOTIFICATION","UPDATE_NOTIFICATION","ADD_NOTIFICATION","notificationObject","userActionId","dummyTranslation","mailAlert","translations","setTranslations","dummyTranslat","setDummyTranslation","translateError","setTranslateError","userActionStateArray","userActionState","removeNotificationMutation","createProductUserActionNotification","threshold","mailTemplateName","addNotificationLoading","updateNotificationMutation","newTranslat","translatToAdd","updateTranslation","translation","currentObj","removeTranslation","getSeverity","returnValue","updateProductByIdCache","modify","cachedProduct","QUERY_PRODUCT_BY_ID","mousePointer","REMOVE_USER_ACTION","currentNotifs","dummyNotification","setNotifications","notifError","setNotifError","dummyNotif","setDummyNotif","p","productUserAction","removeUserAction","removeActionLoading","addNotification","newNotif","notifToAdd","updateNotification","removeNotification","productUserActionId","ADD_USER_ACTION","NotificationGroups","selectedNotifGroup","listOfUserActions","createProductUserAction","addActionLoading","outerContainer","flexContainer","innerFlexContainer","textField2","selectField","ProductInfo","productGroup","productGroupData","deviceVersionData","allowEditArtNr","deviceType","articleNumberState","lastEdited","productGroupArr","productGroups","deviceVersionArr","deviceVersions","productGroupList","deviceTypesList","deviceTypesNameList","deviceTypeList","v","deviceTypeNameList","deviceVersionList","deviceVersionNameList","prodObjDeviceT","prodObjDeviceType","prodObjDeviceV","prodObjDeviceVersion","currentGroup","currentTypeName","currentVersionName","dropDowns","productTypes","deviceVersionNames","deviceTypes","deviceTypeNames","checkDropdownTwo","dropDownValues","valueIn","gTIN","businessUnit","checkDropdown","productOwnerEmail","PRODUCT_GROUP_LIST","DEVICE_VERSION_LIST","PRODUCT_ARTICLE_NUMBER","PROMOTIONS","prodInformation","groupId","DEFAULT","setProdDetails","productError","promotionsLoading","groupData","versionData","articleNumberWarning","prodDetails","jsxNotifications","SILK_IOT","PERLA_IOT","jsxConsumable","minHeight","loadingSymbol","errorLink","QUERY_ORGANIZATION_CREATION_REQUEST","MUTATE_ORGANIZATION_CREATION_APPROVAL","ApprovalForm","requestId","queryLoading","queryError","organizationRef","mutationData","mutationLoading","organizationCreationRequest","tmpObj","organizationCreationRequestApproval","mutationErrorElement","alreadyHandled","completionTimestamp","jxGrid","organizationName","actionsBox","resultBox","listLink","nobreak","resultTable","borderSpacing","MUTATE_ORGANIZATION_CREATION_REASSIGNMENT","SearchPartner","searchterm","maxSearchResult","onSelect","loadingVariables","ApprovalPage","setSearchTrem","organizationToAddVat","setOrganizationToAddVat","tempOrganizationData","updatePartnerVat","getPersistedPartner","organizationCreationRequestApprovalReassignment","mutateOrganizationReassignment","debouncedCallback","SetRequestId","textFieldValue","setTextFieldValue","redirectToRequestId","onKeyPress","QUERY_ORGANIZATION_JOIN_REQUEST","MUTATE_ORGANIZATION_JOIN_APPROVAL","declined","organizationJoinRequest","organizationJoinRequestApproval","creationTimestamp","CREATION_DATE","COMPLETION_DATE","STATUS","COUNTRY_CODE","organizationJoinRequests","FormatName","RequestLink","joinRequestOverviewState","organizationCreationRequests","createRequestOverviewState","useStylesTmpPages","RND","WrappedApp","loadAccount","exact","redirectUrl","removeItem","PamPartnerDetails","PamPartnerList","PamEmployeeDetail","PamEmployeeList","PamPearls","OrgCreationApprovalPage","OrgJoinApprovalPage","JoinRequestGrid","CreateRequestGrid","ProductsList","ProductDetails","ConsumableList","DevicesOverview","InstanceDetails","CustomerOverview","Admin","SendgridOverview","SendgridDetail","Promotion","PromotionDetails","CouponCodeDetails","LicenseManager","setLicenseKey","logoutErrorHandler","errorResponse","handled","ApolloClient","createHttpLink","uri","InMemoryCache","fragmentMatcher","IntrospectionFragmentMatcher","introspectionQueryResultData","ReactDOM","basename","ThemeProvider","getElementById","navigator","serviceWorker","ready","registration"],"mappings":"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QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,SAAAA,Q,cA4PAsc,K,YAAAA,E,oCAAAA,E,sCAAAA,E,8BAAAA,E,8BAAAA,E,0BAAAA,E,QAAAA,E,sBAAAA,E,4BAAAA,E,wBAAAA,E,qBAAAA,Q,cAcAC,K,YAAAA,E,kBAAAA,E,cAAAA,E,wBAAAA,E,QAAAA,E,sBAAAA,E,UAAAA,E,sBAAAA,E,0BAAAA,E,8BAAAA,E,uBAAAA,Q,cAcAC,K,UAAAA,E,cAAAA,E,YAAAA,E,aAAAA,Q,cAOAC,K,cAAAA,E,oBAAAA,E,kBAAAA,E,YAAAA,E,mBAAAA,Q,cAQAC,K,sBAAAA,E,wBAAAA,E,oBAAAA,E,kBAAAA,E,cAAAA,E,oBAAAA,E,kBAAAA,E,cAAAA,E,mBAAAA,Q,cAYAC,K,kCAAAA,E,gCAAAA,E,4BAAAA,E,wBAAAA,E,0CAAAA,E,4BAAAA,E,kBAAAA,E,oCAAAA,E,YAAAA,E,qBAAAA,Q,cAaAC,K,kBAAAA,E,oBAAAA,E,aAAAA,Q,cAMAC,K,YAAAA,E,kBAAAA,E,cAAAA,E,wBAAAA,E,QAAAA,E,sBAAAA,E,wBAAAA,E,wBAAAA,E,sBAAAA,E,sCAAAA,E,oBAAAA,E,2BAAAA,Q,cAeA5c,K,oBAAAA,E,gCAAAA,E,QAAAA,E,QAAAA,E,gBAAAA,E,QAAAA,E,UAAAA,E,yBAAAA,Q,cAWA6c,K,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,SAAAA,Q,cA2LAC,K,0CAAAA,E,8DAAAA,E,sDAAAA,E,wDAAAA,E,oDAAAA,E,cAAAA,E,8CAAAA,E,oEAAAA,E,kDAAAA,E,oDAAAA,E,0BAAAA,E,4BAAAA,E,8BAAAA,E,8CAAAA,E,8BAAAA,E,gCAAAA,E,4CAAAA,E,8BAAAA,E,0BAAAA,E,8CAAAA,E,gDAAAA,E,oCAAAA,E,sCAAAA,E,8DAAAA,E,wCAAAA,E,kBAAAA,E,sBAAAA,E,0BAAAA,E,mBAAAA,Q,cAgCAC,K,4BAAAA,E,cAAAA,E,0BAAAA,E,gCAAAA,E,kBAAAA,E,0BAAAA,E,QAAAA,E,kBAAAA,E,mBAAAA,Q,cAYAC,K,kCAAAA,E,4BAAAA,E,8BAAAA,E,QAAAA,E,sCAAAA,E,iBAAAA,Q,cASAnd,K,YAAAA,E,kBAAAA,E,0CAAAA,E,cAAAA,E,gCAAAA,E,0BAAAA,E,8BAAAA,E,QAAAA,E,wBAAAA,E,YAAAA,E,4BAAAA,E,0BAAAA,E,yBAAAA,Q,cAgBAod,K,kCAAAA,E,4BAAAA,E,8BAAAA,E,QAAAA,E,iBAAAA,Q,cAQAC,K,oBAAAA,E,oBAAAA,E,mBAAAA,Q,cAMAtd,K,4BAAAA,E,gBAAAA,E,oBAAAA,E,mBAAAA,Q,cAOAD,K,kBAAAA,E,oBAAAA,E,kBAAAA,E,4BAAAA,E,UAAAA,E,yBAAAA,Q,cASAwd,K,gBAAAA,E,mBAAAA,Q,cAKAC,K,oBAAAA,E,YAAAA,E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","file":"static/js/main.9285b769.chunk.js","sourcesContent":["// extracted by mini-css-extract-plugin\nmodule.exports = {\"dayGroup\":\"style_dayGroup__Ggd0L\",\"leftCol\":\"style_leftCol__1-jMV\",\"timePoint\":\"style_timePoint__2oOgg\",\"timeLine\":\"style_timeLine__3U5m8\",\"rightCol\":\"style_rightCol___U6M4\",\"dateHeader\":\"style_dateHeader__1ke7F\",\"levelSummary\":\"style_levelSummary__3cHL2\",\"expandableFrame\":\"style_expandableFrame__G0res\",\"expandableContent\":\"style_expandableContent__GLfPt\"};","module.exports = __webpack_public_path__ + \"static/media/graph_arrow_left_dark.5fae6c90.svg\";","module.exports = __webpack_public_path__ + \"static/media/graph_arrow_right_dark.fba40d9d.svg\";","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAOEAAADhCAYAAAA+s9J6AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOwgAADsIBFShKgAAAABh0RVh0U29mdHdhcmUAcGFpbnQubmV0IDQuMS4xYyqcSwAAEPJJREFUeF7tncGN40YThScQJzFHA5vGf58UfNokjI3DcCA+bBo+OQGfFti/XrtKU2w9SaRESl3kK+ADzNecGalflbvZTXLffv78KQbB4nfnD+PfDpywlP534Pe2v8H+vngNVBTbYfHhxfCPcW9xrQ0+Bz4PPtcH+9xiO6go1gEJ7Yk9t9j+TPyv4xf2Ny5h8Wv6WfCbkX9//7cZMXqqMDeEiuI+LL4at0a4vw0UAYoCxfEr+13PAn/fP0cUKT5f/5kDfK/vhopyRago5mHxblwb6aLgXl5sS8Hn9c99rTBjpHxnv0PMg4riMkg4A6PBDyMnJECyfjOQvIumj6OD7+PfC9+PFSX6A/2iglwIFcUUJJYnGCu8mFruquhuge/r3xvfv+8TFeQCqCj+wwLXeGyq2aaY7GeOCvrD+6XvK/TfV/Yz4j+oeGQsYtTLiQRUeDNBP3l/9X2o0ZFAxSNi8cXAymZOGlz7HG6quRboN++//hoS/fyF/cwRoeKRsMCUs7/Ww//FS61mjg760/s19zP6/fBTVSoeAZjvSZCTAit/GvU2BP3r/Zz7/dDFSMU9A7Pd9EgATTlfAPrb+z1PVQ9ZjFTcIzDXTQ7DW/Gxc8VzgQ/uR3hzqGKk4p6w6BdcVHyDAl/cn/DqEAs4VNwLFv1Wwzd2nhgL+JQ8A9/ZeXuBitWxwP2M2USsyumarxDwy33LPu5yikrFqlhg6pnvcPnL0FZDYeCf+xiewt9dTVGpWBGLfvTTdd+OgJ/JW/AHO68iVKyEBRv9NPXcIfDV/Q2vdzEqUrEKFnn0w6qa7u08APDZ/Q7vS4+KVKyARd520Oh3MOC3kRdu/mHnVYCKI2OB6Wd0PNC134GB/ykXQLnpKRVHxaKffmr0E5YGbVQsOz2l4ohY5Onnn+wccWyQFylHykxPqTgSFv3qpxZfxEWQHylXSqyeUnEU0IHemQDTDW28i5sgTzxfIneGLkQqjoAFnnqITtTqp1gE8sXzJnJo2FveqPhqLPICjK7/xN0gf1IuDblgQ8VXgo5KnaYCFA+DPEo5NVwhUvFVWORHj7QAI1YD+ZRya6hHo6j4Ciy0Aio2BXmVcuxfds4roOKzQYekzlEBis1AfqVcG6IQqfhM0BGpU1SAYnOQZynnXl6IVHwW6IDUGSpA8TSQbyn3XlqIVHwGFlqEES8FeZdy8GWLNVTcGou8DaECFC8D+Zdy8SXbF1TcEnzR9KVVgOLlIA9TTj69EKm4FRb5VjQVoBgG5GPKzafe4kbFLbDIN2PrThgxHMjLlKNPu+mbimuDL5S+nApQDAvyM+XqUwqRimtjEVsRf7F2IUYCeer5+pStCyquiUU8Ea/XUYgSIE89X3Gw+RP6VFwLi7wSqgdyRRmQryl3N10xpeIaWOTrQK2EinIgb1MOb3Z9SMU1SB9eCzGiLMjfyOW+bS2o+CgWp+tA1i5EJZDHns+bXB9S8REs8nWgFmJEeZDHKadXvz6k4r1Y5OtAvRlb7Abkc8rtVa8PqXgvFtoPFLsFee35ver+IRXvwSKmodoPFLsEee35jYPVpqVUXIqFtiPEIUB+p1xfZVpKxaVYaBoqDgPy3PN9lWkpFZdgkR9P0jRU7B7kecr5h6elVFxC+jBaDRWHAfkeud+3LYWKc7GI98RoGioOB/Le8/+h99NQcQ4WeTFGN2eLw4G8TzVw9yINFedgEbem6d5QcViQ/14Hd9/SRsVbWGgxRggD+Z9q4a5301DxFhY//I9+Y+1CHAnUgdfDD9Z+CypewyJGQT0hIYSDevC6WDwaUvEaFjEKaktCCAf14HWxeDSk4iUsNAoKcQHUhdfHotGQipew0CgoxAVQF14fi0ZDKjIsNAoKcQPUh9fJ7NGQigwLjYJC3AD14XUyezSkYo9FvjtG+4JCXAD1kWpl1l00VOyxiLtjtC8oxA1QJ14vs+6ioWLG4t1/IdAoKMQNUCepZt7ZORkqZiziSQndIyrETFAvXjc3n7CgYsZ/EdCTEkLMBPUStdO39VAxsNC2hBB3grrx+rm6XUHFwCLeHaNtCSEWgrrx+rn6LhoqAgstyAjxAKibVEMXF2ioCCy0ICPEg6B+vI4uLtBQEVjEHTJ6j+iguD+Nvk2MgUW8p/TiHTRcTFPRvk2MQ3gkn8Ym+USnpGdCEzUVLYF71OjbxDhYXJ2SnglN1FS0BO5Ro28T42BxdUp6LmgqWobwSV6NT/LqbEo6OWjC57+upKno4LhPjb5NjIVFTEnPXps/OWiCNujL4D41+jYxFhYXN+4nB034NFYb9IOTvLJDfo4YA4vTxv1Z2+Tg7e3DT9S9ogVwrxp9mxgPi7iX9GOiTw4+tyb08G4B3KtG3ybGwyIe9p1sVfQnxfWgtiYK4F41+jYxHhaxVTG5LuxPaoYauh4sQPLLDvk5Yhws6HVhPkHXg8Vwvxp9mxgTi7Prwtyo/cFiuF+Nvk2MicXZfmFu1PVgMdyvRt8mxsTi7LowNzYzDb1LpgjJMzvk54ixsDh790xulJnFCM/kWy16z0LUokxB3LNG3ybGxWKyOBOiFmUK4p41+jYxLhaTxZkQ4zX3umm7EO5Zo28T42IRN3O31+SHqJXRgrhnjb5NjIvFZIU0xGakoZXRQiTf7JCfI8bDYrJCGqKMLEj4Ju/qkX07E0Qdwjd5V4/sG+J3F7QyWgz37WSmqINFrJCi/lSEVXHfGn2bGBuLSRFqj7Ao7lujbxNjY3HaK8SBXuxUFPet0beJsbE4vfgJB9ojLIr71ujbxNhYnPYKcaAiLIr71ujbxNhYqAj3gPvW6NvE2FhMijCM1N0yxUje2SE/R4yJxemuGRzIxKKEd/KvJsk/mViV8E7+1ST5JxOrEt7Jv5ok/2RiVcI7+VeT5J9MnEv0lbhN33finNRf6rS5RF+J2/R9J85J/aVOm0v0lbhN33finNRf6rSqhHfyrybJP5lYlfBO/tUk+ScTqxLeyb+aJP9kYlXCO/lXk+Tf6T/0bxIWI3lnh/wcMSYWk3tH9RRFUdy3Rt8mxsZCjzLtAfet0beJsbFQEe4B963Rt4mxsVAR7gH3rdG3ibGxmLxjRm9bK4r71ujbxNhYTN62pveOFsV9a/RtYmws9PLfPeC+Nfo2MTYWn0XogowsSPgm7+qRfTsTRB3CN3lXj+zbRDD0xrVCJN/skJ8jxsOC/vuE2qYoiHvW6NvEuFic9gjbsYv6N+sL4p41+jYxLhb036zXXmFB3LNG3ybGxeK0R9iOXfxw8e98shgb96zRt4lxsfjbfftox6lBZhYjPJNvteg9O2swtEJahOSZHfJzxFhYTFZGm5YatUJaDPer0beJMbGYrIw2LTVqcaYY7lejbxNjYjFZlGlaatTiTDHcr0bfJsbEYrIo07TuhGaooffNFCD5ZYf8HDEOFr8wv07/0Q50XVgK96rRt4nxsDi7Hmz65ODzzplvWRdj4l41+jYxHhbf3K/vE31y8Pb21U/SdWEB3KtG3ybGw+LserDp+aAJn8bqunBwkld2yM8RY2BBrwdb25nweV2om7kHx31q9G1iLCxOL3Y6azsTtF9YBvep0beJsbA42x88tZ0Jb2/vfrIdTtvEWIRP8mp8klfvZ2290MS3tx/+A9qqGBj3qNG3iXGwiK2JH7Sdim9v3/2HNCUdGPeo0beJcbCIqehka+LUTkVNSUsQHsmnsUk+nU1FWzsTgYWmpIPj/jT6NjEGFlenooCKwEJTUiEeBPXjdUSnooCKwOI0JTW0cS/EQlA3qYboVBRQMbDQxr0Qd4K68fo526DPUDGw0L2kQtwJ6sbr5ytrD6iY8V8C9O4ZIWaCeona6dt6qJix0AKNEAtBvXjdXFyQCaiYsdACjRALQJ2kmrm4IBNQscdCD/sKMRPUiddLe839LajYY/HFfynQaCjEBVAfqVa+sHN6qMiwiDtotF0hxAVQH14nF++Q6aEiw0LbFULcAPXhdXJ1WyJDxUtYaDQU4gKoC6+P2aMgoOIlLDQaCnEB1IXXx+xREFDxGhYaDYXoQD14XSwaBQEVr2Gh0VCIDtSD18WiURBQ8RYWMRpq31AcHtSB18PiURBQ8RYWMRoC7RuKw4L8T7WweBQEVJyDRdxFo3tKxWFB/nsdzLo7hkHFOVjku2j0hIU4HMj7VAOz7o5hUHEuFvGExV+sXYg9g7z3/L/5pMQ1qLgE/xBAWxbiMCDfI/f7tqVQcQkW8dp8oEUasXuQ5ynnz15rvxQqLsUi3kWjaanYPchzz/er746ZCxWXYpEXafSeUrFbkN8p1+9ejMlQ8R4sYlqKOwc0LRW7A3nt+Y2Dh6ehARXvxSKmpdo7FLsDee35vco0NKDivVjkaalWS8VuQD6n3F5lGhpQ8REstFoqdgXyOOX0atPQgIqPYhG3tOlJC1Ee5LHn8923pl2DimvgHxro+lCUBfkbudy3rQUV18BC2xaiNMjblMOrXgdmqLgWFvn6UDd5izIgX1Purn4dmKHimlicrg8NLdSI4UGeer7iYJPrwAwV18ZCt7WJMiBPPV/velJ+KVRcG4t8faiFGjEsyM+Uq5tdB2aouAX4QunLqRDFcCAvU44+pQABFbfCIr+bRiumYhiQjyk3N12I6aHiluALpi+rQhQvB3mYcvKpBQiouDX4oulLqxDFy0D+pVx8egECKj4Di3g/DVAhiqeDvEs5+NB7Yh6Bis/CIrYugApRPA3kW8q9VR9NWgoVnwk6IHWGClFsDvIs5dxLCxBQ8dmgI1KnqBDFZiC/Uq69vAABFV8BOiR1jgpRrA7yKuXYEAUIqPgqLLRYIzYB+ZRy62WLMAwqvhKLvH2hO2vEwyCPUk69ZBviGlR8Neio1GkqRHE3yJ+US8MVIKDiCFjkW9xwV7segxKzQb543kQODVmAgIqjYJFv+sbzXXowWNwEeeL5ErnztJux74GKI4EONLRyKmaB/Ei5gn9ReugCBFQcEYt4Qh/oOlGcgbxIObL5E/FrQcVRscgLNnpdhmggDzwfIjeGvf5jUHFkLPJ1ItCbvg8M/E+5AIaffvZQsQIWeXqq1dODAb+NktPPHipWwaKfnmrR5gDAZ/c7vC81/eyhYiUs+tVTjYo7Bb66v+E1fC83/eyhYkUs8qgIdK24I+Bn8haUHv0yVKyKBRsVtcFfGPjnPoanuxj9MlSsjkU/KuICXlPUQsAv9y37uJvRL0PFvWCRH40C39h5YizgU/IMDPXo0dpQcU9YYIqatzOwqqbrxQGBL+5PeAXfdjX1ZFBxj1jgqQzcSxgGqxgHAT64H+ENfPrKzt0jVNwzMNdNDsNbMRq6Znwi6G/v98MWX0DFIwCz3fRIAIBrERXjhqB/vZ9zvx+y+AIqHgmY70mQkwKrctraWBH0p/dr7udDF19AxSNi0S/gAE1VHwD95v2Xp5zgEAsuc6HikbF4N/qtDYD/i+ve1Bmgn7y/+j5Ev76znzkyVBT/YYGpar4DJ1BBdqA/vF/6vkL/HX7KeQ0qiikWMTr2144AiXe4KSu+r39vVnjoJ416M6GiuAwSyxOMFSSufbDyh1FhV0WJ7+PfC9+vv8YDKrw7oaKYBxLOwH2qbMoKkKxt6mqUWm3F5/XPjc/Pig7ge+P7q/AegIriPiw+DIwGl4oSRGFiKvfy4sTf988RU8tLBQfwvfD9PtjvEvdBRbEOSFbj2kjZgyIIokiDRcWK89PPgiiyoP/bjBjpVHQbQkWxHUhoT2zslc0tzq3B58DnUcG9ACqK12DxuxOjZyYXzVz634Hf2/4G+/viFfx8+z8fNnSU2ZnJ3AAAAABJRU5ErkJggg==\"","module.exports = __webpack_public_path__ + \"static/media/logo-inverted.a756bd43.svg\";","module.exports = __webpack_public_path__ + \"static/media/camp-manfred_v2.01427e5d.jpg\";","module.exports = __webpack_public_path__ + \"static/media/ic_warning_16px.92099eec.svg\";","module.exports = __webpack_public_path__ + \"static/media/ic_calendar.37542b37.svg\";","/*\r\n * CI/CD Colors\r\n */\r\nconst bwtColors = {\r\n pink: \"#F5B5C9\",\r\n\r\n pink80: \"#F7C5D5\",\r\n pink50: \"#FADCE6\",\r\n\r\n blue: \"#005D8F\",\r\n\r\n arctic: \"#6286A4\",\r\n arctic80: \"#819BB4\",\r\n arctic50: \"#B0BECF\",\r\n arctic15: \"#E6EAF1\",\r\n\r\n grey: \"#666B6E\",\r\n grey80: \"#878C8F\",\r\n grey50: \"#B5B9BB\",\r\n grey35: \"#CFD1D1\",\r\n grey20: \"#E1E3E4\",\r\n grey10: \"#F0F1F2\",\r\n grey5: \"#F7F8F8\",\r\n\r\n turquoise: \"#5FC3E1\",\r\n turquoise80: \"#8AD1E8\",\r\n turquoise50: \"#B6E5F5\",\r\n\r\n /* Special Colors */\r\n pinkButton: \"#F5B5C9\",\r\n magenta: \"#F5B5C9\",\r\n white: \"#fff\",\r\n errorRed: \"#CA3336\",\r\n warnYellow: \"#DDB868\",\r\n};\r\n\r\nexport default bwtColors;\r\n\r\n/*\r\nExtra colours that can be reused in C.A.M.P. Guide \r\n*/\r\nexport const campColours = {\r\n backgroundWarn: \"#FEF9E5\",\r\n backgroundError: \"#FFE8EC\",\r\n backgroundDiscon: \"#cff\",\r\n bgWarnHover: \"#FEF9E566\",\r\n bgErrorHover: \"#FFE8EC66\",\r\n bgDisconHover: \"#cff6\",\r\n};\r\n","import { createMuiTheme } from \"@material-ui/core/styles\";\r\n\r\nimport bwtColors from \"./bwtColors\";\r\n\r\nimport \"./index.css\";\r\n\r\nconst theme = createMuiTheme({\r\n palette: {\r\n primary: { main: bwtColors.blue },\r\n secondary: { main: bwtColors.pink },\r\n error: { main: bwtColors.errorRed },\r\n\r\n common: {\r\n black: bwtColors.grey,\r\n },\r\n\r\n background: {\r\n default: \"#ffffff\",\r\n },\r\n\r\n text: {\r\n primary: bwtColors.grey,\r\n },\r\n },\r\n\r\n typography: {\r\n fontFamily: \"CeraPRO, Roboto, Arial, sans-serif\",\r\n body1: {\r\n fontSize: 14,\r\n },\r\n },\r\n});\r\n\r\nexport default theme;\r\n","// This optional code is used to register a service worker.\r\n// register() is not called by default.\r\n\r\n// This lets the app load faster on subsequent visits in production, and gives\r\n// it offline capabilities. However, it also means that developers (and users)\r\n// will only see deployed updates on subsequent visits to a page, after all the\r\n// existing tabs open on the page have been closed, since previously cached\r\n// resources are updated in the background.\r\n\r\n// To learn more about the benefits of this model and instructions on how to\r\n// opt-in, read https://bit.ly/CRA-PWA\r\n\r\nconst isLocalhost = Boolean(\r\n window.location.hostname === 'localhost' ||\r\n // [::1] is the IPv6 localhost address.\r\n window.location.hostname === '[::1]' ||\r\n // 127.0.0.1/8 is considered localhost for IPv4.\r\n window.location.hostname.match(\r\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\r\n )\r\n);\r\n\r\ntype Config = {\r\n onSuccess?: (registration: ServiceWorkerRegistration) => void;\r\n onUpdate?: (registration: ServiceWorkerRegistration) => void;\r\n};\r\n\r\nexport function register(config?: Config) {\r\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\r\n // The URL constructor is available in all browsers that support SW.\r\n const publicUrl = new URL(\r\n (process as { env: { [key: string]: string } }).env.PUBLIC_URL,\r\n window.location.href\r\n );\r\n if (publicUrl.origin !== window.location.origin) {\r\n // Our service worker won't work if PUBLIC_URL is on a different origin\r\n // from what our page is served on. This might happen if a CDN is used to\r\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\r\n return;\r\n }\r\n\r\n window.addEventListener('load', () => {\r\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\r\n\r\n if (isLocalhost) {\r\n // This is running on localhost. Let's check if a service worker still exists or not.\r\n checkValidServiceWorker(swUrl, config);\r\n\r\n // Add some additional logging to localhost, pointing developers to the\r\n // service worker/PWA documentation.\r\n navigator.serviceWorker.ready.then(() => {\r\n console.log(\r\n 'This web app is being served cache-first by a service ' +\r\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\r\n );\r\n });\r\n } else {\r\n // Is not localhost. Just register service worker\r\n registerValidSW(swUrl, config);\r\n }\r\n });\r\n }\r\n}\r\n\r\nfunction registerValidSW(swUrl: string, config?: Config) {\r\n navigator.serviceWorker\r\n .register(swUrl)\r\n .then(registration => {\r\n registration.onupdatefound = () => {\r\n const installingWorker = registration.installing;\r\n if (installingWorker == null) {\r\n return;\r\n }\r\n installingWorker.onstatechange = () => {\r\n if (installingWorker.state === 'installed') {\r\n if (navigator.serviceWorker.controller) {\r\n // At this point, the updated precached content has been fetched,\r\n // but the previous service worker will still serve the older\r\n // content until all client tabs are closed.\r\n console.log(\r\n 'New content is available and will be used when all ' +\r\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\r\n );\r\n\r\n // Execute callback\r\n if (config && config.onUpdate) {\r\n config.onUpdate(registration);\r\n }\r\n } else {\r\n // At this point, everything has been precached.\r\n // It's the perfect time to display a\r\n // \"Content is cached for offline use.\" message.\r\n console.log('Content is cached for offline use.');\r\n\r\n // Execute callback\r\n if (config && config.onSuccess) {\r\n config.onSuccess(registration);\r\n }\r\n }\r\n }\r\n };\r\n };\r\n })\r\n .catch(error => {\r\n console.error('Error during service worker registration:', error);\r\n });\r\n}\r\n\r\nfunction checkValidServiceWorker(swUrl: string, config?: Config) {\r\n // Check if the service worker can be found. If it can't reload the page.\r\n fetch(swUrl)\r\n .then(response => {\r\n // Ensure service worker exists, and that we really are getting a JS file.\r\n const contentType = response.headers.get('content-type');\r\n if (\r\n response.status === 404 ||\r\n (contentType != null && contentType.indexOf('javascript') === -1)\r\n ) {\r\n // No service worker found. Probably a different app. Reload the page.\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister().then(() => {\r\n window.location.reload();\r\n });\r\n });\r\n } else {\r\n // Service worker found. Proceed as normal.\r\n registerValidSW(swUrl, config);\r\n }\r\n })\r\n .catch(() => {\r\n console.log(\r\n 'No internet connection found. App is running in offline mode.'\r\n );\r\n });\r\n}\r\n\r\nexport function unregister() {\r\n if ('serviceWorker' in navigator) {\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister();\r\n });\r\n }\r\n}\r\n","import gql from \"graphql-tag\";\r\n\r\nconst USER_LANGUAGE = gql`\r\nquery userLanguage {\r\n user {\r\n userInformation {\r\n preferredLanguage\r\n }\r\n }\r\n}\r\n`;\r\n\r\nexport default USER_LANGUAGE;","import React, { ReactElement, useState } from \"react\";\r\nimport { renderToStaticMarkup } from \"react-dom/server\";\r\n\r\nimport { useQuery } from \"@apollo/react-hooks\";\r\nimport USER_LANGUAGE from \"commonQueries/userLanguage\";\r\n\r\nimport {\r\n LocalizeProvider,\r\n withLocalize,\r\n LocalizeContextProps,\r\n onMissingTranslationFunction,\r\n MissingTranslationOptions,\r\n} from \"react-localize-redux\";\r\n\r\nimport langEN from \"resources/i18n/en.translations.json\";\r\nimport langDE from \"resources/i18n/de.translations.json\";\r\nimport langFR from \"resources/i18n/fr.translations.json\";\r\n\r\nimport langTranslationsEN from \"resources/i18n/en.languages.json\";\r\nimport langTranslationsDE from \"resources/i18n/de.languages.json\";\r\nimport langTranslationsFR from \"resources/i18n/fr.languages.json\";\r\n\r\nimport langCountryEN from \"resources/i18n/en.country_translations.json\";\r\nimport langCountryDE from \"resources/i18n/de.country_translations.json\";\r\nimport langCountryFR from \"resources/i18n/fr.country_translations.json\";\r\n\r\nexport const fallbackTo = (fallback: string): onMissingTranslationFunction => {\r\n return (options: MissingTranslationOptions) => {\r\n if (\r\n options.defaultTranslation ===\r\n \"No default translation found! Ensure you've added translations for your default langauge.\"\r\n ) {\r\n return fallback;\r\n }\r\n return options.defaultTranslation;\r\n };\r\n};\r\n\r\ninterface I18nConfigProps extends LocalizeContextProps {\r\n children: ReactElement;\r\n language: string;\r\n}\r\n\r\nconst I18nConfig = withLocalize(\r\n ({\r\n children,\r\n language,\r\n initialize,\r\n addTranslationForLanguage,\r\n setActiveLanguage,\r\n }: I18nConfigProps) => {\r\n useState(() => {\r\n initialize({\r\n languages: [\r\n { name: \"English\", code: \"en\" },\r\n { name: \"German\", code: \"de\" },\r\n { name: \"French\", code: \"fr\" },\r\n ],\r\n options: {\r\n renderToStaticMarkup,\r\n onMissingTranslation: ({ defaultTranslation }) => {\r\n if (typeof defaultTranslation == \"string\") {\r\n return defaultTranslation;\r\n } else {\r\n return renderToStaticMarkup(defaultTranslation);\r\n }\r\n },\r\n },\r\n });\r\n\r\n setActiveLanguage(language);\r\n\r\n addTranslationForLanguage(langEN, \"en\");\r\n addTranslationForLanguage(langDE, \"de\");\r\n addTranslationForLanguage(langFR, \"fr\");\r\n addTranslationForLanguage(langCountryEN, \"en\");\r\n addTranslationForLanguage(langCountryDE, \"de\");\r\n addTranslationForLanguage(langCountryFR, \"fr\");\r\n addTranslationForLanguage(langTranslationsEN, \"en\");\r\n addTranslationForLanguage(langTranslationsDE, \"de\");\r\n addTranslationForLanguage(langTranslationsFR, \"fr\");\r\n\r\n return true;\r\n });\r\n return children;\r\n }\r\n);\r\n\r\nfunction countryCheck(language: string) {\r\n let setLanguage = \"en\";\r\n switch (language) {\r\n case \"en\":\r\n setLanguage = \"en\";\r\n break;\r\n case \"fr\":\r\n setLanguage = \"fr\";\r\n break;\r\n case \"de\":\r\n setLanguage = \"de\";\r\n break;\r\n default:\r\n setLanguage = \"en\";\r\n break;\r\n }\r\n return setLanguage;\r\n}\r\n\r\ninterface LocalizationProps {\r\n children: ReactElement;\r\n store: any;\r\n}\r\n\r\nconst Localization: React.FC = ({ children, store }) => {\r\n const { data, loading } = useQuery(USER_LANGUAGE);\r\n const lang = data?.user?.userInformation?.preferredLanguage;\r\n const userLang = countryCheck(lang);\r\n return (\r\n \r\n {!loading ? (\r\n {children}\r\n ) : (\r\n
\r\n )}\r\n
\r\n );\r\n};\r\n\r\nexport default Localization;\r\n","import * as Types from 'types/ToolboxEntities';\r\n\r\nexport enum ActionType {\r\n LOGIN = 'AUTH_LOGIN',\r\n LOGOUT = 'AUTH_LOGOUT',\r\n UNAUTHORISED = 'AUTH_UNAUTHORISED',\r\n LOADING = 'AUTH_LOADING',\r\n EXPIRE = 'AUTH_EXPIRE'\r\n}\r\n\r\nexport interface AuthStore {\r\n isLoading: boolean\r\n hasUnauthorisedLogin: boolean,\r\n user: Types.UserProfile | null,\r\n authHasExpired: boolean\r\n}\r\n\r\nexport interface Action {\r\n type: ActionType\r\n payload: Types.UserProfile | null\r\n}\r\n","/*\r\n * CampQueries\r\n * Entities which can be loaded with GraphQL\r\n */\r\nexport interface EnabledCountries {\r\n countries: Country[]\r\n}\r\n\r\nexport interface UserProfile {\r\n userInformation: UserInformation\r\n roles: Role[]\r\n allowedCountries: Country[]\r\n}\r\n\r\n// ToDo: Missing - Avaialable ProductGroups \r\nexport interface ProductGroups {\r\n productGroups: ProductGroup[]\r\n}\r\n\r\n\r\n\r\n\r\n/*\r\n * Partner\r\n */\r\nexport interface Organization {\r\n id: number\r\n name: string\r\n email: string\r\n telephone: string\r\n website: string\r\n address: Address\r\n logoBase64: string\r\n logoUrl: string\r\n partnerImageBase64: string\r\n partnerImageUrl: string\r\n partnerType: PartnerType\r\n visibility: OrganizationVisibility\r\n employees: Paging\r\n groups: partnerGroup[]\r\n bonusaccount: Bonusaccount\r\n pearlTransactions: Paging\r\n productInstances: Paging\r\n}\r\n\r\n\r\nexport interface partnerGroup {\r\n id?: number\r\n name?: string\r\n}\r\n\r\nexport interface Employee {\r\n userInformation: UserInformation\r\n organization: Organization\r\n position: Position\r\n}\r\n\r\nexport interface PearlTransaction {\r\n id: number\r\n date: number\r\n amount: number\r\n note: string\r\n organization: Organization\r\n}\r\n\r\nexport interface Bonusaccount {\r\n pearls: number\r\n}\r\n\r\n\r\nexport enum Position {\r\n ASSISTANT = \"ASSISTANT\",\r\n ENGINEER = \"ENGINEER\",\r\n NONE = \"NONE\",\r\n OWNER = \"OWNER\",\r\n}\r\n\r\nexport enum PartnerType {\r\n TWP = 'TWP',\r\n BUILDER = 'BUILDER',\r\n OPERATOR = 'OPERATOR',\r\n PLANNER = \"PLANNER\",\r\n WHOLESALER = \"WHOLESALER\",\r\n PROFESSIONAL = \"PROFESSIONAL\"\r\n}\r\n\r\nexport enum OrganizationVisibility {\r\n CONTACT_ONLY = \"CONTACT_ONLY\",\r\n HIDDEN = \"HIDDEN\",\r\n PROMOTED = \"PROMOTED\",\r\n VISIBLE = \"VISIBLE\",\r\n}\r\n\r\nexport enum OrganizationFilterOption {\r\n ID = 'ID',\r\n NAME = 'NAME',\r\n PARTNER_TYPE = 'PARTNER_TYPE',\r\n CITY = 'CITY',\r\n COUNTRY = 'COUNTRY',\r\n EMAIL = 'EMAIL',\r\n VAT_NUMBER = 'VAT_NUMBER'\r\n}\r\n\r\n\r\n\r\n/*\r\n * Product\r\n */\r\nexport interface Product {\r\n productInformation: ProductInformation\r\n consumables: Consumable[]\r\n notifications: Notification[]\r\n}\r\n\r\nexport interface ProductInformation {\r\n itemNumber: number\r\n gTIN: string\r\n name: string\r\n pearls: number\r\n productType: string // ToDo: ENUM\r\n productGroup: ProductGroup\r\n availableCountries: Country[]\r\n}\r\n\r\nexport interface ProductGroup {\r\n name: string\r\n}\r\n\r\nexport interface Consumable {\r\n isFreeConsumable: boolean\r\n mailTemplate: MailTemplate\r\n maxShipments: number\r\n numberOfMonths: number\r\n productInformation: ProductInformation\r\n threshold: number\r\n}\r\n\r\nexport interface Notification {\r\n mailTemplate: MailTemplate\r\n trigger: string\r\n}\r\n\r\n\r\n/*\r\n * Promotion\r\n */\r\nexport enum PromotionType {\r\n Assignable = \"Assignable\",\r\n DedicatedUsage = \"DedicatedUsage\"\r\n\r\n};\r\n\r\nexport interface Promotion {\r\n id: number\r\n articleCategory: string\r\n name: string\r\n emailTemplate: string\r\n crDate: number\r\n type: PromotionType\r\n}\r\n\r\nexport interface PromotionDetails {\r\n id: number\r\n articleCategory: string\r\n name: string\r\n emailTemplate: string\r\n crDate: number\r\n type: PromotionType\r\n}\r\n\r\nexport interface Couponcode {\r\n itemNumber: number\r\n name: string\r\n crDate: number\r\n assignedProductCode: number\r\n csDate: number\r\n validFrom: number\r\n validTo: number\r\n active: boolean\r\n}\r\n\r\nexport interface PearlsTransaction {\r\n id: string\r\n pearls: number\r\n note: string\r\n orgId: number\r\n}\r\n\r\n\r\n/*\r\n * Product - Instances\r\n */\r\nexport interface ProductInstance {\r\n productCode: string\r\n productName: string\r\n serialNumber: string\r\n owner: UserInformation\r\n address: Address\r\n instanceInformation: ProductInstanceInformation | DeviceInstanceInformation // ToDo: ProductInstInfo | PerlaSmartInfo | PerlaSilkInfo\r\n dataSharedWithPartner: boolean\r\n servicePartner: Organization\r\n customerSelectedInstaller: Organization\r\n}\r\n\r\nexport interface DeviceInstanceInformation {\r\n firmware: string\r\n installationDate: number\r\n nextCustomerMaintainance: number\r\n nextServiceDate: number\r\n registrationDate: number\r\n wPA2Key: string\r\n}\r\n\r\nexport interface ProductInstanceInformation {\r\n placeholder: string\r\n}\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n/*\r\n * User / Account\r\n */\r\nexport interface UserInformation { //status = kombination aus locked, verified\r\n id: string\r\n firstName: string\r\n lastName: string\r\n address: Address\r\n email: string\r\n key: number\r\n preferredLanguage: string\r\n acceptedTerms: boolean\r\n accountLocked: boolean\r\n allowedToLogin: boolean\r\n dataUpdate: number\r\n generatedAccount: boolean // ToDo: Missing in GraphQL\r\n incorrectLogins: number\r\n lastIncorrectLogin: number\r\n lastLogin: number\r\n lastPasswordReset: number // ToDo: Missing in GraphQL\r\n registeredOn: number\r\n verifiedAccount: boolean\r\n userRoles: string[]\r\n acceptedMarketingUsage: false\r\n}\r\n\r\nexport interface Role {\r\n permissions: string[]\r\n roleName: string\r\n}\r\n\r\n\r\n\r\n/*\r\n * Admin\r\n */\r\n\r\n\r\n\r\n/*\r\n * Generics\r\n */\r\nexport interface Address {\r\n id: number\r\n street: string\r\n postalCode: string\r\n city: string\r\n countryCode: Country\r\n location?: GeoLocation\r\n}\r\n\r\nexport enum Country {\r\n AT = 'AT',\r\n DE = 'DE',\r\n FR = 'FR',\r\n BE = 'BE'\r\n}\r\n\r\nexport interface GeoLocation {\r\n latitude: number\r\n longitude: number\r\n}\r\n\r\nexport interface CountryAccess {\r\n allowedCountries: Country[]\r\n}\r\n\r\nexport interface MailTemplate {\r\n id: string\r\n name: string\r\n}\r\n\r\nexport interface Paging {\r\n page: number\r\n pageSize: number\r\n totalResults: number\r\n results: DataType[]\r\n}\r\n\r\nexport interface DefaultGqlArguments {\r\n page: number\r\n pageSize: number\r\n filter?: FieldFilter[]\r\n sorting?: Sorting[]\r\n}\r\n\r\nexport interface FieldFilter {\r\n field: Fields\r\n operator: FilterOperator\r\n value: string\r\n}\r\n\r\nexport enum FilterOperator {\r\n LT = 'LT',\r\n GT = 'GT',\r\n EQ = 'EQ',\r\n NEQ = 'NEQ',\r\n LIKE = 'LIKE'\r\n}\r\n\r\nexport interface Sorting {\r\n field: Fields\r\n direction: \"asc\" | \"desc\"\r\n}\r\n","export enum ErrorCodes {\r\n ConnectionError = 'net_connection',\r\n Authorization = 'gql_authorization',\r\n InvalideResponse = 'gql_invalide_response',\r\n Unknown = 'gql_unknown',\r\n API = 'api',\r\n gql_invalid_linkUrl = 'gql_invalid_linkUrl',\r\n gql_password_policy = 'gql_password_policy',\r\n gql_property_required = 'gql_property_required'\r\n};\r\n\r\nexport interface Error {\r\n code: ErrorCodes,\r\n message: string\r\n}\r\n","import * as Types from 'types/ToolboxEntities';\r\n\r\nimport { Error, ErrorCodes } from 'types/CampGuideTypes';\r\nimport { TranslateFunction } from 'react-localize-redux';\r\nimport { GraphQLError } from 'graphql';\r\n\r\n// Simulate slow Responstime/internet - Delay in ms\r\nconst DELAY_RESPONSE = 500;\r\n\r\n\r\nexport const mapQlError = (gqlError: GraphQLError | readonly GraphQLError[]): Error => {\r\n\r\n const mapper = (gqlError: GraphQLError): Error | undefined => {\r\n if (gqlError?.extensions?.code) {\r\n return {\r\n code: gqlError.extensions.code,\r\n message: gqlError.message\r\n }\r\n }\r\n };\r\n\r\n if (Array.isArray(gqlError)) {\r\n for (let idx = 0; idx < gqlError.length; idx++) {\r\n let error;\r\n if ((error = mapper(gqlError[idx]))) {\r\n return error;\r\n }\r\n }\r\n\r\n console.log(gqlError);\r\n\r\n return mapper(gqlError[0]) || {\r\n code: ErrorCodes.Unknown,\r\n message: gqlError[0]?.message || ''\r\n } as Error;\r\n }\r\n\r\n\r\n const singleQlError = gqlError as GraphQLError;\r\n return mapper(singleQlError) || {\r\n code: ErrorCodes.Unknown,\r\n message: singleQlError?.message || ''\r\n } as Error;\r\n\r\n}\r\n\r\nexport const qraphQlErrorsToString = (gqlError: GraphQLError | readonly GraphQLError[], translate: TranslateFunction): string | undefined => {\r\n\r\n const mapper = (gqlError: GraphQLError): string | undefined => {\r\n return (translate('message.error.' + gqlError?.extensions?.code, undefined, { onMissingTranslation: () => gqlError.message }) as string);\r\n };\r\n\r\n if (Array.isArray(gqlError)) {\r\n for (let idx = 0; idx < gqlError.length; idx++) {\r\n let error;\r\n if ((error = mapper(gqlError[idx]))) {\r\n return error;\r\n }\r\n }\r\n\r\n return mapper(gqlError[0]);\r\n }\r\n\r\n const singleQlError = gqlError as GraphQLError;\r\n return mapper(singleQlError);\r\n}\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\ninterface IGraphQL {\r\n query: (query: string) => Promise\r\n queryUser: () => Promise\r\n\r\n sendPasswordResetEmail: (userId: string) => Promise\r\n\r\n deleteAccount: (userId: string) => Promise\r\n\r\n queryOrganization: (id: number) => Promise\r\n\r\n queryPromotions: (id: number) => Promise\r\n savePromotions: (couponcode: Types.Promotion) => Promise\r\n\r\n queryPromotionDetails: (id: number) => Promise\r\n savePromotionDetails: (couponcode: Types.PromotionDetails) => Promise\r\n\r\n queryCouponcode: (id: number) => Promise\r\n saveCouponcode: (couponcode: Types.Couponcode) => Promise\r\n\r\n savePearlsTransaction: (PearlsTransaction: Types.PearlsTransaction) => Promise\r\n\r\n changeOrganizationActiveState: (organizationId: number, active: boolean) => Promise\r\n\r\n\r\n\r\n avaiableEmployeeRoles: {\r\n save: (chips: string[]) => Promise\r\n load: () => Promise\r\n }\r\n avaiableCountries: {\r\n save: (countries: string[]) => Promise\r\n load: () => Promise\r\n }\r\n}\r\n\r\n\r\nconst GraphQL: IGraphQL = {\r\n\r\n query: (query: string): Promise => {\r\n return new Promise((resolve, reject: (error: Error) => void) => {\r\n fetch('/graphql', {\r\n method: 'POST',\r\n headers: { 'Content-Type': 'application/json', 'Accept': 'application/json' },\r\n body: JSON.stringify({ query: query }),\r\n credentials: 'include',\r\n }).then((res: Response) => {\r\n res.json().then((data) => {\r\n if (data.hasOwnProperty('errors')) {\r\n console.error('ERROR gQL', data);\r\n reject(mapQlError(data.errors));\r\n } else if (DELAY_RESPONSE) {\r\n setTimeout(() => {\r\n resolve(data);\r\n }, DELAY_RESPONSE);\r\n } else {\r\n resolve(data);\r\n }\r\n }).catch((error) => { console.error('ERROR gQL', error); reject({ code: ErrorCodes.InvalideResponse, message: error }) });\r\n }).catch((error) => { console.error('ERROR gQL', error); reject({ code: ErrorCodes.ConnectionError, message: error }) });\r\n });\r\n },\r\n\r\n\r\n queryUser: () => {\r\n return GraphQL.query(`\r\n {\r\n user {\r\n allowedCountries\r\n roles {\r\n permissions\r\n roleName\r\n }\r\n userInformation {\r\n id\r\n firstName\r\n lastName\r\n email\r\n acceptedTerms\r\n accountLocked\r\n allowedToLogin\r\n dataUpdate\r\n incorrectLogins\r\n lastIncorrectLogin\r\n key\r\n lastLogin\r\n registeredOn\r\n verifiedAccount\r\n address {\r\n street\r\n postalCode\r\n city\r\n countryCode\r\n }\r\n }\r\n }\r\n }\r\n `).then((data) => {\r\n return data.data.user;\r\n });\r\n },\r\n\r\n queryOrganization: (id: number): Promise => {\r\n return GraphQL.query(`\r\n {\r\n organization(id: ${id}){\r\n name\r\n address {\r\n street\r\n postalCode\r\n city\r\n countryCode\r\n }\r\n email\r\n \t\t\temployees{\r\n results{\r\n position\r\n userInformation{\r\n id\r\n firstName\r\n lastName\r\n email\r\n key\r\n }\r\n }\r\n }\r\n telephone\r\n partnerType\r\n id\r\n logoUrl\r\n logoLinkUrl\r\n partnerImageUrl\r\n partnerImageLinkUrl\r\n bonusaccount {\r\n pearls\r\n }\r\n groups{\r\n id\r\n name\r\n }\r\n }\r\n }\r\n `)\r\n .then((data: any) => data.data.organization)\r\n .then((fakeData: Types.Organization) => {\r\n // ToDo: Remove when Mockup-API fully implemented\r\n fakeData.logoBase64 = \"\";\r\n fakeData.partnerImageBase64 = \"\";\r\n return fakeData;\r\n });\r\n },\r\n\r\n queryPromotions: (id: number): Promise => {\r\n return GraphQL.query(`\r\n {\r\n organization(id: ${id}){\r\n name\r\n address{\r\n street\r\n postalCode\r\n city\r\n countryCode\r\n }\r\n email\r\n telephone\r\n partnerType\r\n id\r\n }\r\n }\r\n `).then((data: any) => data.data.organization);\r\n },\r\n\r\n queryPromotionDetails: (id: number): Promise => {\r\n return GraphQL.query(`\r\n {\r\n organization(id: ${id}){\r\n name\r\n address{\r\n street\r\n postalCode\r\n city\r\n countryCode\r\n }\r\n email\r\n telephone\r\n partnerType\r\n id\r\n }\r\n }\r\n `).then((data: any) => data.data.organization)\r\n .then((org: Types.Organization) => {\r\n const promo: Types.PromotionDetails = {\r\n id: org.id,\r\n articleCategory: org.partnerType,\r\n name: org.name,\r\n emailTemplate: org.email,\r\n\r\n crDate: (Math.random() * 10000) + 1575898311,\r\n type: Math.round(Math.random()) ? Types.PromotionType.Assignable : Types.PromotionType.DedicatedUsage,\r\n };\r\n return promo;\r\n });\r\n },\r\n\r\n\r\n queryCouponcode: (id: number): Promise => {\r\n return GraphQL.query(`\r\n {\r\n products(filter: {\r\n filterOption: ITEM_NUMBER\r\n operator: EQ\r\n values: [\"${id}\"]\r\n }){\r\n results{\r\n productInformation{\r\n name\r\n itemNumber\r\n gTIN\r\n }\r\n }\r\n }\r\n }\r\n `).then((data) => {\r\n // ToDo: Remove when Mockup-API fixed\r\n\r\n data.data.products.results[0].productInformation.crDate = \"2019-01-07T11:11:22+00:00\";\r\n data.data.products.results[0].productInformation.csDate = \"2019-05-22T21:10:22+00:00\";\r\n data.data.products.results[0].productInformation.validFrom = \"2019-11-18T19:33:22+00:00\";\r\n data.data.products.results[0].productInformation.validTo = \"2020-11-18T19:11:22+00:00\";\r\n data.data.products.results[0].productInformation.assignedProductCode = \"50188934\";\r\n data.data.products.results[0].productInformation.active = true;\r\n return data;\r\n }).then((data) => {\r\n return data.data.products.results[0].productInformation;\r\n });\r\n },\r\n\r\n\r\n changeOrganizationActiveState: (organizationId, active) => {\r\n return new Promise((resolve, reject: (error: Error) => void) => {\r\n setTimeout(() => {\r\n const rnd = Math.random();\r\n if (rnd < 0.5) {\r\n resolve();\r\n } else if (rnd < 0.8) {\r\n reject({ code: ErrorCodes.Authorization, message: \"You do not have permission to change the Login for this User.\" });\r\n }\r\n reject({ code: ErrorCodes.ConnectionError, message: \"404\" });\r\n }, DELAY_RESPONSE);\r\n });\r\n },\r\n\r\n\r\n savePromotions: (promotion: Types.Promotion) => {\r\n console.log('save promotions', promotion);\r\n return new Promise((resolve, reject: (error: Error) => void) => {\r\n setTimeout(() => {\r\n const rnd = Math.random();\r\n\r\n if (rnd < 0.8) {\r\n resolve(promotion);\r\n }\r\n\r\n reject({ code: ErrorCodes.ConnectionError, message: \"404\" });\r\n }, DELAY_RESPONSE);\r\n });\r\n },\r\n\r\n savePromotionDetails: (promotionDetails: Types.PromotionDetails) => {\r\n console.log('save promotion details', promotionDetails);\r\n return new Promise((resolve, reject: (error: Error) => void) => {\r\n setTimeout(() => {\r\n const rnd = Math.random();\r\n\r\n if (rnd < 0.8) {\r\n resolve(promotionDetails);\r\n }\r\n\r\n reject({ code: ErrorCodes.ConnectionError, message: \"404\" });\r\n }, DELAY_RESPONSE);\r\n });\r\n },\r\n\r\n saveCouponcode: (couponcode: Types.Couponcode) => {\r\n console.log('save coupon code', couponcode);\r\n return new Promise((resolve, reject: (error: Error) => void) => {\r\n setTimeout(() => {\r\n const rnd = Math.random();\r\n\r\n if (rnd < 0.8) {\r\n resolve(couponcode);\r\n }\r\n\r\n reject({ code: ErrorCodes.ConnectionError, message: \"404\" });\r\n }, DELAY_RESPONSE);\r\n });\r\n },\r\n\r\n savePearlsTransaction: (PearlsTransaction: Types.PearlsTransaction) => {\r\n return new Promise((resolve, reject: (error: Error) => void) => {\r\n setTimeout(() => {\r\n const rnd = Math.random();\r\n if (rnd < 0.1) {\r\n resolve(PearlsTransaction);\r\n }\r\n\r\n reject({ code: ErrorCodes.ConnectionError, message: \"404\" });\r\n }, DELAY_RESPONSE);\r\n });\r\n },\r\n\r\n\r\n sendPasswordResetEmail: (userId: string) => {\r\n return GraphQL.query(`\r\n mutation{\r\n user{\r\n sendPasswordResetEmail(userId: \"`+ userId + `\")\r\n }\r\n }\r\n `).then((data) => {\r\n return data.data.user;\r\n });\r\n },\r\n\r\n deleteAccount: (userId: string): Promise => {\r\n return GraphQL.query(`\r\n mutation{\r\n user{\r\n deleteAccount(userId: \"`+ userId + `\")\r\n }\r\n }\r\n `).then((data) => {\r\n return data.data.user.deleteAccount;\r\n });\r\n },\r\n\r\n\r\n avaiableCountries: {\r\n load: () => {\r\n return new Promise((resolve, reject) => {\r\n return GraphQL.query(\r\n `\r\n {\r\n enabledCountries{\r\n countries\r\n }\r\n }\r\n `\r\n ).then((data) => {\r\n resolve(data.data.enabledCountries.countries);\r\n });\r\n });\r\n },\r\n save: (tmp) => {\r\n return new Promise((resolve, reject: (error: Error) => void) => {\r\n setTimeout(() => {\r\n const rnd = Math.random();\r\n\r\n if (rnd < 0.7) {\r\n resolve(tmp);\r\n\r\n } else if (rnd < 0.8) {\r\n reject({ code: ErrorCodes.InvalideResponse, message: \"Invalid response\" });\r\n\r\n } else if (rnd < 0.9) {\r\n reject({ code: ErrorCodes.Authorization, message: \"You do not have permission to change the Login for this User.\" });\r\n }\r\n\r\n reject({ code: ErrorCodes.ConnectionError, message: \"404\" });\r\n }, DELAY_RESPONSE);\r\n });\r\n }\r\n },\r\n\r\n avaiableEmployeeRoles: {\r\n load: () => {\r\n return new Promise((resolve, reject) => {\r\n return GraphQL.query(\r\n `\r\n {\r\n enabledCountries{\r\n countries\r\n }\r\n }\r\n `\r\n ).then((data) => {\r\n resolve(data.data.enabledCountries.countries);\r\n });\r\n });\r\n },\r\n save: (tmp) => {\r\n return new Promise((resolve, reject: (error: Error) => void) => {\r\n setTimeout(() => {\r\n const rnd = Math.random();\r\n\r\n if (rnd < 0.5) {\r\n resolve(tmp);\r\n\r\n } else if (rnd < 0.7) {\r\n reject({ code: ErrorCodes.InvalideResponse, message: \"Invalid response\" });\r\n\r\n } else if (rnd < 0.9) {\r\n reject({ code: ErrorCodes.Authorization, message: \"You do not have permission to change the Login for this User.\" });\r\n }\r\n\r\n reject({ code: ErrorCodes.ConnectionError, message: \"404\" });\r\n }, DELAY_RESPONSE);\r\n });\r\n }\r\n }\r\n};\r\n\r\nexport default GraphQL;","import { Error } from 'types/CampGuideTypes';\r\n\r\nexport enum ActionType {\r\n OPEN = 'CHANGE_LOGIN_OPEN',\r\n CLOSE = 'CHANGE_LOGIN_CLOSE',\r\n LOADING = 'CHANGE_LOGIN_LOADING',\r\n ERROR = 'CHANGE_LOGIN_ERROR',\r\n}\r\n\r\nexport interface ChangeData {\r\n userId: string,\r\n email: string,\r\n password: string\r\n}\r\n\r\nexport interface Store {\r\n isLocked: boolean,\r\n changeData: ChangeData | null,\r\n error: Error | null\r\n}\r\n\r\n\r\nexport interface ErrorAction {\r\n type: ActionType.ERROR,\r\n payload: Error\r\n}\r\n\r\nexport interface OpenAction {\r\n type: ActionType.OPEN,\r\n payload: ChangeData\r\n}\r\n\r\nexport interface CloseAction {\r\n type: ActionType.CLOSE,\r\n}\r\n\r\nexport interface LoadingAction {\r\n type: ActionType.LOADING,\r\n}\r\n\r\nexport type Action = ErrorAction | OpenAction | CloseAction | LoadingAction;\r\n","import { Error } from 'types/CampGuideTypes';\r\nimport { PearlsTransaction } from 'types/ToolboxEntities';\r\n\r\nexport enum ActionType {\r\n OPEN = 'CHANGE_PEARLS_OPEN',\r\n CLOSE = 'CHANGE_PEARLS_CLOSE',\r\n LOCK = 'CHANGE_PEARLS_LOCK',\r\n ERROR = 'CHANGE_PEARLS_ERROR',\r\n}\r\n\r\nexport interface Store {\r\n isLocked: boolean,\r\n pearlsObj: PearlsTransaction | null,\r\n error: Error | null\r\n}\r\n\r\nexport interface OpenAction {\r\n type: ActionType.OPEN,\r\n payload: PearlsTransaction\r\n}\r\n\r\nexport interface CloseAction {\r\n type: ActionType.CLOSE,\r\n}\r\n\r\n\r\nexport type Action = OpenAction | CloseAction;\r\n","import {UserInformation} from 'types/ToolboxEntities';\r\n\r\nexport enum ActionType {\r\n OPEN = 'CHANGE_ACTIVE_OPEN',\r\n CLOSE = 'CHANGE_ACTIVE_CLOSE',\r\n}\r\n\r\nexport interface Store {\r\n user: UserInformation | null,\r\n}\r\n\r\n\r\nexport interface OpenAction {\r\n type: ActionType.OPEN,\r\n payload: UserInformation\r\n}\r\n\r\nexport interface CloseAction {\r\n type: ActionType.CLOSE,\r\n}\r\n\r\n\r\nexport type Action = OpenAction | CloseAction;\r\n","import { Error } from 'types/CampGuideTypes';\r\n\r\nexport enum ActionType {\r\n OPEN = 'SEND_RESET_OPEN',\r\n CLOSE = 'SEND_RESET_CLOSE',\r\n LOADING = 'SEND_RESET_LOADING',\r\n ERROR = 'SEND_RESET_ERROR',\r\n}\r\n\r\nexport interface ChangeData {\r\n userId: string,\r\n}\r\n\r\nexport interface Store {\r\n isLocked: boolean,\r\n changeData: ChangeData | null,\r\n error: Error | null\r\n}\r\n\r\n\r\nexport interface ErrorAction {\r\n type: ActionType.ERROR,\r\n payload: Error\r\n}\r\n\r\nexport interface OpenAction {\r\n type: ActionType.OPEN,\r\n payload: ChangeData\r\n}\r\n\r\nexport interface CloseAction {\r\n type: ActionType.CLOSE,\r\n}\r\n\r\nexport interface LoadingAction {\r\n type: ActionType.LOADING,\r\n}\r\n\r\nexport type Action = ErrorAction | OpenAction | CloseAction | LoadingAction;\r\n","import { Error } from 'types/CampGuideTypes';\r\n\r\nexport enum ActionType {\r\n OPEN = 'DELETE_ACCOUNT_OPEN',\r\n CLOSE = 'DELETE_ACCOUNT_CLOSE',\r\n LOADING = 'DELETE_ACCOUNT_LOADING',\r\n ERROR = 'DELETE_ACCOUNT_ERROR',\r\n}\r\n\r\nexport interface ChangeData {\r\n userId: string,\r\n}\r\n\r\nexport interface Store {\r\n isLocked: boolean,\r\n changeData: ChangeData | null,\r\n error: Error | null\r\n}\r\n\r\n\r\nexport interface ErrorAction {\r\n type: ActionType.ERROR,\r\n payload: Error\r\n}\r\n\r\nexport interface OpenAction {\r\n type: ActionType.OPEN,\r\n payload: ChangeData\r\n}\r\n\r\nexport interface CloseAction {\r\n type: ActionType.CLOSE,\r\n}\r\n\r\nexport interface LoadingAction {\r\n type: ActionType.LOADING,\r\n}\r\n\r\nexport type Action = ErrorAction | OpenAction | CloseAction | LoadingAction;\r\n","export enum ActionType {\r\n OPEN = 'REQUEST_LOG_OPEN',\r\n CLOSE = 'REQUEST_LOG_CLOSE',\r\n}\r\n\r\nexport interface Store {\r\n openWithProductCode: string | undefined,\r\n}\r\n\r\n\r\nexport interface OpenAction {\r\n type: ActionType.OPEN,\r\n payload: string\r\n}\r\n\r\nexport interface CloseAction {\r\n type: ActionType.CLOSE,\r\n}\r\n\r\n\r\nexport type Action = OpenAction | CloseAction;\r\n","export enum ActionType {\r\n OPEN = 'RESET_ACTIVATION_OPEN',\r\n CLOSE = 'RESET_ACTIVATION_CLOSE',\r\n}\r\n\r\nexport interface Store {\r\n openWithProductCode: string | undefined,\r\n}\r\n\r\n\r\nexport interface OpenAction {\r\n type: ActionType.OPEN,\r\n payload: string\r\n}\r\n\r\nexport interface CloseAction {\r\n type: ActionType.CLOSE,\r\n}\r\n\r\n\r\nexport type Action = OpenAction | CloseAction;\r\n","export enum ActionType {\r\n OPEN = 'SET_OUT_OF_SERVICE_OPEN',\r\n CLOSE = 'SET_OUT_OF_SERVICE_CLOSE',\r\n}\r\n\r\nexport interface Store {\r\n openWithProductCode: string | undefined,\r\n}\r\n\r\nexport interface OpenAction {\r\n type: ActionType.OPEN,\r\n payload: string\r\n}\r\n\r\nexport interface CloseAction {\r\n type: ActionType.CLOSE,\r\n}\r\n\r\n\r\nexport type Action = OpenAction | CloseAction;\r\n\r\n","export enum ActionType {\r\n OPEN = 'RESET_INSTALLER_OPEN',\r\n CLOSE = 'RESET_INSTALLER_CLOSE',\r\n}\r\n\r\nexport interface Store {\r\n openWithProductCode: string | undefined,\r\n}\r\n\r\n\r\nexport interface OpenAction {\r\n type: ActionType.OPEN,\r\n payload: string\r\n}\r\n\r\nexport interface CloseAction {\r\n type: ActionType.CLOSE,\r\n}\r\n\r\n\r\nexport type Action = OpenAction | CloseAction;\r\n","import { State as AgGridState } from 'redux/types/AgGrid';\r\n\r\nexport enum ActionType {\r\n 'GRID' = 'PRODUCT_OVERVIEW_GRID',\r\n 'SEARCH' = 'PRODUCT_OVERVIEW_SEARCH',\r\n}\r\n\r\nexport interface SearchAction {\r\n type: ActionType.SEARCH\r\n payload: string | null\r\n}\r\n\r\nexport interface State {\r\n grid: AgGridState\r\n search: string | null\r\n}\r\n","import { FilterModel, SingleSortModel } from 'types/AgGrid';\r\nimport { ColumnState } from '@ag-grid-community/core/dist/cjs/columnController/columnController';\r\n\r\n\r\nexport enum GridActionType {\r\n GRID = 'AG_GRID_STATE',\r\n COLUMN = 'AG_GRID_CULUMN',\r\n}\r\n\r\nexport interface SetGridStateAction {\r\n type: Type\r\n grid: GridActionType.GRID\r\n payload: {\r\n sortModel: SingleSortModel[]\r\n filterModel: FilterModel\r\n page: number\r\n }\r\n}\r\n\r\nexport interface SetCulumnStatesAction {\r\n type: Type\r\n grid: GridActionType.COLUMN\r\n payload: ColumnState[]\r\n}\r\n\r\nexport type Action = SetGridStateAction | SetCulumnStatesAction\r\n\r\nexport interface State {\r\n sortModel: SingleSortModel[]\r\n filterModel: FilterModel\r\n page: number\r\n columnStates: ColumnState[] | undefined\r\n}\r\n\r\n\r\nexport type SetGridStateFunctionType = (page: number, sortModel: SingleSortModel[], filterModel: FilterModel) => SetGridStateAction;\r\nexport type SetColumnStateFunctionType = (ColumnStates: ColumnState[]) => SetCulumnStatesAction;\r\n\r\nexport type GridActionsType = {\r\n setGridState: SetGridStateFunctionType,\r\n setColumnStates: SetColumnStateFunctionType\r\n};\r\n","import { ThunkAction, ThunkDispatch } from 'redux-thunk'\r\n\r\nimport { Action, ActionType } from 'redux/types/Auth';\r\n\r\nimport * as Types from 'types/ToolboxEntities';\r\n\r\nimport { Error } from 'types/CampGuideTypes';\r\n\r\nimport GraphQL from 'util/GraphQL';\r\n\r\nexport const login = (user: Types.UserProfile): Action => ({\r\n type: ActionType.LOGIN,\r\n payload: user\r\n});\r\n\r\nexport const unauthorised = (): Action => ({\r\n type: ActionType.UNAUTHORISED,\r\n payload: null\r\n});\r\n\r\nexport const logout = (): Action => ({\r\n type: ActionType.LOGOUT,\r\n payload: null\r\n});\r\n\r\nexport const loading = (): Action => ({\r\n type: ActionType.LOADING,\r\n payload: null\r\n});\r\n\r\nexport const expire = (): Action => ({\r\n type: ActionType.EXPIRE,\r\n payload: null\r\n})\r\n\r\nexport const loadUser = (): ThunkAction, {}, {}, Action> => {\r\n return async (dispatch: ThunkDispatch<{}, {}, Action>): Promise => {\r\n\r\n dispatch(loading());\r\n\r\n GraphQL.queryUser().then((user) => {\r\n //console.log('Logedin User:', user);\r\n dispatch(login(user));\r\n }).catch((error: Error) => {\r\n if (error.message.includes(\"Permission 'UserRead' required\")) {\r\n dispatch(unauthorised())\r\n } else {\r\n console.log('ERROR Logedin User:', error);\r\n window.document.cookie = '';\r\n dispatch(logout());\r\n }\r\n });\r\n };\r\n};\r\n","import * as Auth from './types/Auth';\r\nimport * as AccChangeLogin from './types/AccountShortcuts/ChangeLogin';\r\nimport * as AccChangePearls from './types/AccountShortcuts/ChangePearls';\r\nimport * as AccChangeActive from './types/AccountShortcuts/ChangeActive';\r\n\r\nimport * as RequestLog from './types/DeviceActions/RequestLog';\r\nimport * as ResetActivation from './types/DeviceActions/ResetActivation';\r\nimport * as ResetInstaller from './types/DeviceActions/ResetInstaller';\r\nimport * as SetOutOfService from './types/DeviceActions/SetOutOfService';\r\n\r\nimport * as AccSendReset from './types/AccountShortcuts/SendReset';\r\nimport * as AccDeleteAccount from './types/AccountShortcuts/DeleteAccount';\r\nimport * as sendgridTemplatesDelete from './types/SendgridTemplatesDelete';\r\nimport * as sendgridTemplatesCreate from './types/SendgridTemplatesCreate';\r\n\r\nimport * as PartnerDetails from './types/PartnerDetails';\r\nimport * as ChangeOrganizationActiveState from './types/ChangeOrganizationActiveState';\r\nimport * as CouponCode from './types/CouponCode';\r\nimport * as AccChangePosition from './types/AccountShortcuts/ChangePosition'\r\nimport * as AccRemoveFromCompany from './types/AccountShortcuts/RemoveFromCompany'\r\n\r\nimport * as CountryList from './types/MultiSelect';\r\nimport * as ChipList from './types/InputToChip';\r\n\r\n//import { Store } from './types/MultiSelect';\r\n\r\nexport default {\r\n\r\n appShell: {\r\n drawerShown: false\r\n },\r\n\r\n auth: {\r\n isLoading: false,\r\n hasUnauthorisedLogin: false,\r\n user: null,\r\n authHasExpired: false\r\n } as Auth.AuthStore,\r\n\r\n multiSelect: {\r\n countryCodes: [],\r\n pending: false,\r\n isLoaded: false,\r\n error: null\r\n } as CountryList.MultiSelectStore,\r\n\r\n inputToChip: {\r\n chips: [],\r\n pending: false,\r\n isLoaded: false,\r\n error: null\r\n } as ChipList.InputToChipStore,\r\n\r\n accountShortcuts: {\r\n changeLogin: {\r\n isLocked: false,\r\n changeData: null,\r\n error: null\r\n } as AccChangeLogin.Store,\r\n\r\n changeActive: {\r\n user: null,\r\n } as AccChangeActive.Store,\r\n\r\n sendReset: {\r\n isLocked: false,\r\n changeData: null,\r\n error: null\r\n } as AccSendReset.Store,\r\n\r\n deleteAccount: {\r\n isLocked: false,\r\n changeData: null,\r\n error: null\r\n } as AccDeleteAccount.Store,\r\n\r\n changePearls: {\r\n isLocked: false,\r\n pearlsObj: null,\r\n error: null\r\n } as AccChangePearls.Store,\r\n\r\n changePosition: {\r\n isLocked: false,\r\n changeData: null,\r\n error: null\r\n } as AccChangePosition.Store,\r\n\r\n removeFromCompany: {\r\n isLocked: false,\r\n changeData: null,\r\n error: null\r\n } as AccRemoveFromCompany.Store,\r\n },\r\n sendgridTemplatesCreate: {\r\n isLocked: false,\r\n changeData: null,\r\n error: null\r\n } as sendgridTemplatesCreate.Store,\r\n\r\n sendgridTemplatesDelete: {\r\n isLocked: false,\r\n changeData: null,\r\n error: null\r\n } as sendgridTemplatesDelete.Store,\r\n\r\n deviceActions: {\r\n requestLog: {\r\n isLocked: false,\r\n openWithProductCode: undefined,\r\n error: null\r\n } as RequestLog.Store,\r\n\r\n resetActivation: {\r\n isLocked: false,\r\n openWithProductCode: undefined,\r\n error: null\r\n } as ResetActivation.Store,\r\n\r\n resetInstaller: {\r\n isLocked: false,\r\n openWithProductCode: undefined,\r\n error: null\r\n } as ResetInstaller.Store,\r\n\r\n setOutOfService: {\r\n isLocked: false,\r\n openWithProductCode: undefined,\r\n error: null\r\n } as SetOutOfService.Store,\r\n },\r\n changeOrganizationActiveState: {\r\n isLocked: false,\r\n changeData: null,\r\n error: null\r\n } as ChangeOrganizationActiveState.Store,\r\n\r\n partnerDetails: {\r\n isLocked: false,\r\n isDirty: false,\r\n partner: null,\r\n globalErrors: [],\r\n propertyErrors: null,\r\n } as PartnerDetails.Store,\r\n\r\n couponCode: {\r\n isLocked: false,\r\n isDirty: false,\r\n code: null,\r\n globalErrors: [],\r\n propertyErrors: null,\r\n } as CouponCode.Store,\r\n};\r\n","export const OPEN_DRAWER = 'OPEN_DRAWER';\r\nexport const CLOSE_DRAWER = 'CLOSE_DRAWER';\r\nexport const TOGGLE_DRAWER = 'TOGGLE_DRAWER';\r\n\r\nexport interface DrawerState {\r\n drawerShown: boolean;\r\n}\r\n\r\nexport interface DrawerAction {\r\n type: typeof OPEN_DRAWER | typeof CLOSE_DRAWER | typeof TOGGLE_DRAWER,\r\n}\r\n\r\nexport const openDrawer = (): DrawerAction => ({\r\n type: OPEN_DRAWER,\r\n});\r\n\r\nexport const closeDrawer = (): DrawerAction => ({\r\n type: CLOSE_DRAWER,\r\n});\r\n\r\nexport const toggleDrawer = (): DrawerAction => ({\r\n type: TOGGLE_DRAWER,\r\n});\r\n","import { GridActionType, Action, State } from 'redux/types/AgGrid';\r\n\r\nconst defaultInitialState: State = {\r\n sortModel: [],\r\n filterModel: {},\r\n page: 0,\r\n columnStates: undefined,\r\n};\r\n\r\n\r\n\r\nexport default (actionType: Type, initialState: State | undefined = undefined) => {\r\n return (state: State = initialState || defaultInitialState, action: Action): State => {\r\n if (action.type === actionType) {\r\n switch (action.grid) {\r\n\r\n case GridActionType.GRID:\r\n return {\r\n ...state,\r\n ...action.payload,\r\n };\r\n\r\n case GridActionType.COLUMN:\r\n return {\r\n ...state,\r\n columnStates: action.payload,\r\n };\r\n\r\n }\r\n }\r\n\r\n return state;\r\n };\r\n};\r\n\r\n","import { State as AgGridState } from 'redux/types/AgGrid';\r\n\r\nexport enum ActionType {\r\n 'GRID' = 'PARTNER_OVERVIEW_GRID',\r\n 'SEARCH' = 'PARTNER_OVERVIEW_SEARCH',\r\n}\r\n\r\nexport interface SearchAction {\r\n type: ActionType.SEARCH\r\n payload: string | null\r\n}\r\n\r\nexport interface State {\r\n grid: AgGridState\r\n search: string | null\r\n}\r\n","import { State } from 'redux/types/AgGrid';\r\nimport { ActionType, SearchAction } from 'redux/types/ProductOverview';\r\nimport generateGridReducer from 'redux/reducers/AgGridReducerHelper';\r\nimport { combineReducers } from 'redux';\r\n\r\nconst GridState: State = {\r\n sortModel: [],\r\n filterModel: {\r\n \"productInformation.isProductRegistrationEnabled\":{\r\n filterType:\"set\",\r\n values:[\"true\"]\r\n }\r\n },\r\n page: 0,\r\n columnStates: undefined,\r\n};\r\n\r\n\r\nconst searchReducer = (state: string | null = null, action: SearchAction): string | null => {\r\n switch (action.type) {\r\n\r\n case ActionType.SEARCH:\r\n return action.payload;\r\n\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nexport default combineReducers({\r\n grid: generateGridReducer(ActionType.GRID, GridState),\r\n search: searchReducer,\r\n});","import { ActionType, SearchAction } from 'redux/types/PartnerOverview';\r\nimport generateGridReducer from 'redux/reducers/AgGridReducerHelper';\r\nimport { combineReducers } from 'redux';\r\n\r\n\r\nconst searchReducer = (state: string | null = null, action: SearchAction): string | null => {\r\n switch (action.type) {\r\n\r\n case ActionType.SEARCH:\r\n return action.payload;\r\n\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nexport default combineReducers({\r\n grid: generateGridReducer(ActionType.GRID),\r\n search: searchReducer,\r\n});","import { State as AgGridState } from 'redux/types/AgGrid';\r\n\r\nexport enum ActionType {\r\n 'GRID' = 'DEVICE_OVERVIEW_GRID',\r\n 'SEARCH' = 'DEVICE_OVERVIEW_SEARCH',\r\n}\r\n\r\nexport interface SearchAction {\r\n type: ActionType.SEARCH\r\n payload: string | null\r\n}\r\n\r\nexport interface State {\r\n grid: AgGridState\r\n search: string | null\r\n}\r\n","import { ActionType, SearchAction } from 'redux/types/DeviceOverview';\r\nimport generateGridReducer from 'redux/reducers/AgGridReducerHelper';\r\nimport { combineReducers } from 'redux';\r\n\r\n\r\nconst searchReducer = (state: string | null = null, action: SearchAction): string | null => {\r\n switch (action.type) {\r\n\r\n case ActionType.SEARCH:\r\n return action.payload;\r\n\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nexport default combineReducers({\r\n grid: generateGridReducer(ActionType.GRID),\r\n search: searchReducer,\r\n});","import { State as AgGridState } from \"redux/types/AgGrid\";\r\n\r\nexport enum ActionType {\r\n \"GRID\" = \"POOL_OVERVIEW_GRID\",\r\n \"SEARCH\" = \"POOL_OVERVIEW_SEARCH\",\r\n}\r\n\r\nexport interface SearchAction {\r\n type: ActionType.SEARCH;\r\n payload: string | null;\r\n}\r\n\r\nexport interface State {\r\n grid: AgGridState;\r\n search: string | null;\r\n}\r\n","import { ActionType, SearchAction } from \"redux/types/PoolOverview\";\r\nimport generateGridReducer from \"redux/reducers/AgGridReducerHelper\";\r\nimport { combineReducers } from \"redux\";\r\n\r\nconst searchReducer = (\r\n state: string | null = null,\r\n action: SearchAction\r\n): string | null => {\r\n switch (action.type) {\r\n case ActionType.SEARCH:\r\n return action.payload;\r\n\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport default combineReducers({\r\n grid: generateGridReducer(ActionType.GRID),\r\n search: searchReducer,\r\n});\r\n","import { State as AgGridState } from \"redux/types/AgGrid\";\r\n\r\nexport enum ActionType {\r\n \"GRID\" = \"CUSTOMER_OVERVIEW_GRID\",\r\n \"SEARCH\" = \"CUSTOMER_OVERVIEW_SEARCH\",\r\n}\r\n\r\nexport interface SearchAction {\r\n type: ActionType.SEARCH;\r\n payload: string | null;\r\n}\r\n\r\nexport interface State {\r\n grid: AgGridState;\r\n search: string | null;\r\n}\r\n","import { ActionType, SearchAction } from 'redux/types/CustomerOverview';\r\nimport generateGridReducer from 'redux/reducers/AgGridReducerHelper';\r\nimport { combineReducers } from 'redux';\r\n\r\n\r\nconst searchReducer = (state: string | null = null, action: SearchAction): string | null => {\r\n switch (action.type) {\r\n\r\n case ActionType.SEARCH:\r\n return action.payload;\r\n\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nexport default combineReducers({\r\n grid: generateGridReducer(ActionType.GRID),\r\n search: searchReducer,\r\n});","import { Error } from 'types/CampGuideTypes';\r\nimport * as Types from 'types/ToolboxEntities';\r\nimport { PartnerDetail_organization_groups } from 'types/apolloGenerated/PartnerDetail';\r\n\r\nexport enum ActionType {\r\n LOADING = 'PARTNER_DETAIL_LOADING',\r\n SAVING = 'PARTNER_DETAIL_SAVING',\r\n LOADED = 'PARTNER_DETAIL_LOADED',\r\n ERROR = 'PARTNER_DETAIL_ERROR',\r\n DIRTY = 'PARTNER_DETAIL_DIRTY',\r\n}\r\n\r\nexport interface PartnerGroupDiff {\r\n groupsToAdd: PartnerDetail_organization_groups[],\r\n groupsToRemove: PartnerDetail_organization_groups[]\r\n}\r\n\r\nexport interface FieldErrors {\r\n [key: string]: Error\r\n}\r\n\r\nexport interface Store {\r\n isLocked: boolean,\r\n isDirty: boolean,\r\n partner: Types.Organization | null\r\n globalErrors: Error[]\r\n propertyErrors: FieldErrors | null\r\n}\r\n\r\nexport interface ErrorAction {\r\n type: ActionType.ERROR,\r\n payload: {\r\n globalErrors: Error[]\r\n propertyErrors: FieldErrors | null\r\n }\r\n}\r\n\r\nexport interface SetDataAction {\r\n type: ActionType.LOADED,\r\n payload: Types.Organization\r\n}\r\n\r\nexport interface LoadingAction {\r\n type: ActionType.LOADING,\r\n}\r\n\r\nexport interface SavingAction {\r\n type: ActionType.SAVING,\r\n}\r\n\r\nexport interface SetDirtyAction {\r\n type: ActionType.DIRTY,\r\n}\r\n\r\nexport type Action = ErrorAction | SetDataAction | LoadingAction | SetDirtyAction | SavingAction;","import { State as AgGridState } from 'redux/types/AgGrid';\r\n\r\nexport enum ActionType {\r\n 'GRID' = 'PROMOTION_OVERVIEW_GRID',\r\n 'SEARCH' = 'PROMOTION_OVERVIEW_SEARCH',\r\n}\r\n\r\nexport interface SearchAction {\r\n type: ActionType.SEARCH\r\n payload: string | null\r\n}\r\n\r\nexport interface State {\r\n grid: AgGridState\r\n search: string | null\r\n}\r\n","import { ActionType, SearchAction } from 'redux/types/PromotionOverview';\r\nimport generateGridReducer from 'redux/reducers/AgGridReducerHelper';\r\nimport { combineReducers } from 'redux';\r\n\r\n\r\nconst searchReducer = (state: string | null = null, action: SearchAction): string | null => {\r\n switch (action.type) {\r\n\r\n case ActionType.SEARCH:\r\n return action.payload;\r\n\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nexport default combineReducers({\r\n grid: generateGridReducer(ActionType.GRID),\r\n search: searchReducer,\r\n});\r\n","import { State as AgGridState } from 'redux/types/AgGrid';\r\n\r\nexport enum ActionType {\r\n 'GRID' = 'PROMOTION_DETAILS_GRID',\r\n 'SEARCH' = 'PROMOTION_DETAILS_SEARCH',\r\n}\r\n\r\nexport interface SearchAction {\r\n type: ActionType.SEARCH\r\n payload: string | null\r\n}\r\n\r\nexport interface State {\r\n grid: AgGridState\r\n search: string | null\r\n}\r\n","import { ActionType, SearchAction } from 'redux/types/PromotionDetails';\r\nimport generateGridReducer from 'redux/reducers/AgGridReducerHelper';\r\nimport { combineReducers } from 'redux';\r\n\r\n\r\nconst searchReducer = (state: string | null = null, action: SearchAction): string | null => {\r\n switch (action.type) {\r\n\r\n case ActionType.SEARCH:\r\n return action.payload;\r\n\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nexport default combineReducers({\r\n grid: generateGridReducer(ActionType.GRID),\r\n search: searchReducer,\r\n});\r\n","import { Error } from 'types/CampGuideTypes';\r\nimport * as Types from 'types/ToolboxEntities';\r\n\r\nexport enum ActionType {\r\n LOADING = 'COUPONCODE_LOADING',\r\n SAVING = 'COUPONCODE_SAVING',\r\n LOADED = 'COUPONCODE_LOADED',\r\n ERROR = 'COUPONCODE_ERROR',\r\n DIRTY = 'COUPONCODE_DIRTY',\r\n}\r\n\r\nexport interface FieldErrors {\r\n [key: string]: Error\r\n}\r\n\r\nexport interface Store {\r\n isLocked: boolean,\r\n isDirty: boolean,\r\n code: Types.Couponcode | null\r\n globalErrors: Error[]\r\n propertyErrors: FieldErrors | null\r\n}\r\n\r\nexport interface ErrorAction {\r\n type: ActionType.ERROR,\r\n payload: {\r\n globalErrors: Error[]\r\n propertyErrors: FieldErrors | null\r\n }\r\n}\r\n\r\nexport interface SetDataAction {\r\n type: ActionType.LOADED,\r\n payload: Types.Couponcode\r\n}\r\n\r\nexport interface LoadingAction {\r\n type: ActionType.LOADING,\r\n}\r\n\r\nexport interface SavingAction {\r\n type: ActionType.SAVING,\r\n}\r\n\r\nexport interface SetDirtyAction {\r\n type: ActionType.DIRTY,\r\n}\r\n\r\nexport type Action = ErrorAction | SetDataAction | LoadingAction | SetDirtyAction | SavingAction;","import { Error } from 'types/CampGuideTypes';\r\n\r\nexport enum ActionType {\r\n CODES = 'SET_COUNTRY_CODES',\r\n ERROR = 'SET_COUNTRY_ERROR',\r\n PENDING = 'SET_COUNTRY_PENDING',\r\n SAVE = 'SET_COUNTRY_SAVE',\r\n LOAD = 'SET_COUNTRY_LOAD'\r\n}\r\n\r\nexport interface MultiSelectStore {\r\n countryCodes: string[],\r\n pending: boolean,\r\n isLoaded: boolean,\r\n error: Error | null\r\n}\r\n\r\nexport interface SetCountryAction {\r\n type: ActionType.CODES\r\n payload: string[],\r\n}\r\n\r\nexport interface ErrorAction {\r\n type: ActionType.ERROR,\r\n payload: Error\r\n}\r\n\r\nexport interface PendingAction {\r\n type: ActionType.PENDING\r\n}\r\n\r\nexport interface LoadAction {\r\n type: ActionType.LOAD\r\n}\r\n\r\nexport interface SaveAction {\r\n type: ActionType.SAVE\r\n}\r\n\r\nexport type Action = SetCountryAction | PendingAction | ErrorAction | LoadAction | SaveAction;","import { Error } from 'types/CampGuideTypes';\r\n\r\nexport enum ActionType {\r\n CHIPS = 'SET_CHIPS',\r\n ERROR = 'SET_CHIPS_ERROR',\r\n PENDING = 'SET_CHIPS_PENDING',\r\n SAVE = 'SET_CHIPS_SAVE',\r\n LOAD = 'SET_CHIPS_LOAD'\r\n}\r\n\r\nexport interface InputToChipStore {\r\n chips: string[],\r\n pending: boolean,\r\n isLoaded: boolean,\r\n error: Error | null\r\n}\r\n\r\nexport interface SetChipsAction {\r\n type: ActionType.CHIPS\r\n payload: string[],\r\n}\r\n\r\nexport interface ErrorAction {\r\n type: ActionType.ERROR,\r\n payload: Error\r\n}\r\n\r\nexport interface PendingAction {\r\n type: ActionType.PENDING\r\n}\r\n\r\nexport interface LoadAction {\r\n type: ActionType.LOAD\r\n}\r\n\r\nexport interface SaveAction {\r\n type: ActionType.SAVE\r\n}\r\n\r\nexport type Action = SetChipsAction | PendingAction | ErrorAction | LoadAction | SaveAction;","import { State as AgGridState } from 'redux/types/AgGrid';\r\n\r\nexport enum ActionType {\r\n 'GRID' = 'LINKED_USERS_OVERVIEW_GRID',\r\n}\r\n\r\nexport interface State {\r\n grid: AgGridState\r\n}\r\n","import { ActionType } from 'redux/types/LinkedUsers';\r\nimport generateGridReducer from 'redux/reducers/AgGridReducerHelper';\r\nimport { combineReducers } from 'redux';\r\n\r\n//export default { grid: generateGridReducer(ActionType.GRID) };\r\n\r\nexport default combineReducers({\r\n grid: generateGridReducer(ActionType.GRID)\r\n});\r\n","import { State as AgGridState } from 'redux/types/AgGrid';\r\n\r\nexport enum ActionType {\r\n 'GRID' = 'BONUS_ACCOUNT_OVERVIEW_GRID',\r\n}\r\n\r\nexport interface State {\r\n grid: AgGridState\r\n}\r\n","import { ActionType } from 'redux/types/BonusAccount';\r\nimport generateGridReducer from 'redux/reducers/AgGridReducerHelper';\r\nimport { combineReducers } from 'redux';\r\n\r\n//export default { grid: generateGridReducer(ActionType.GRID) };\r\n\r\nexport default combineReducers({\r\n grid: generateGridReducer(ActionType.GRID)\r\n});\r\n","import { State as AgGridState } from 'redux/types/AgGrid';\r\n\r\nexport enum ActionType {\r\n 'GRID' = 'PRODUCT_REGISTRATIONS_OVERVIEW_GRID',\r\n}\r\n\r\nexport interface State {\r\n grid: AgGridState\r\n}\r\n","import { ActionType } from 'redux/types/ProductRegistrations';\r\nimport generateGridReducer from 'redux/reducers/AgGridReducerHelper';\r\nimport { combineReducers } from 'redux';\r\n\r\n//export default { grid: generateGridReducer(ActionType.GRID) };\r\n\r\nexport default combineReducers({\r\n grid: generateGridReducer(ActionType.GRID)\r\n});\r\n","import { Error } from 'types/CampGuideTypes';\r\n\r\nexport enum ActionType {\r\n OPEN = 'CHANGE_ACTIVE_STATE_OPEN',\r\n CLOSE = 'CHANGE_ACTIVE_STATE_CLOSE',\r\n LOADING = 'CHANGE_ACTIVE_STATE_LOADING',\r\n ERROR = 'CHANGE_ACTIVE_STATE_ERROR',\r\n}\r\n\r\nexport interface ChangeData {\r\n organizationId: number,\r\n setActiveFlagTo: boolean,\r\n}\r\n\r\nexport interface Store {\r\n isLocked: boolean,\r\n changeData: ChangeData | null,\r\n error: Error | null\r\n}\r\n\r\n\r\nexport interface ErrorAction {\r\n type: ActionType.ERROR,\r\n payload: Error\r\n}\r\n\r\nexport interface OpenAction {\r\n type: ActionType.OPEN,\r\n payload: ChangeData\r\n}\r\n\r\nexport interface CloseAction {\r\n type: ActionType.CLOSE,\r\n}\r\n\r\nexport interface LoadingAction {\r\n type: ActionType.LOADING,\r\n}\r\n\r\nexport type Action = ErrorAction | OpenAction | CloseAction | LoadingAction;\r\n","import { Position } from 'types/ToolboxEntities';\r\n\r\nexport enum ActionType {\r\n OPEN = 'CHANGE_POSITION_OPEN',\r\n CLOSE = 'CHANGE_POSITION_CLOSE',\r\n}\r\n\r\nexport interface ChangeData {\r\n userId: number,\r\n position: Position,\r\n partnerId: number\r\n}\r\n\r\nexport interface Store {\r\n changeData: ChangeData | null,\r\n}\r\n\r\nexport interface OpenAction {\r\n type: ActionType.OPEN,\r\n payload: ChangeData\r\n}\r\n\r\nexport interface CloseAction {\r\n type: ActionType.CLOSE,\r\n}\r\n\r\n\r\nexport type Action = OpenAction | CloseAction;\r\n","export enum ActionType {\r\n OPEN = 'REMOVE_FROM_COMPANY_OPEN',\r\n CLOSE = 'REMOVE_FROM_COMPANY_CLOSE',\r\n}\r\n\r\nexport interface ChangeData {\r\n partnerId: number\r\n userId: number\r\n}\r\n\r\nexport interface Store {\r\n changeData: ChangeData | null,\r\n}\r\n\r\n\r\nexport interface OpenAction {\r\n type: ActionType.OPEN,\r\n payload: ChangeData\r\n}\r\n\r\nexport interface CloseAction {\r\n type: ActionType.CLOSE,\r\n}\r\n\r\nexport type Action = OpenAction | CloseAction;\r\n","import { State as AgGridState } from 'redux/types/AgGrid';\r\n\r\nexport enum ActionType {\r\n 'GRID' = 'PEARLS_OVERVIEW_GRID',\r\n}\r\n\r\nexport interface State {\r\n grid: AgGridState\r\n}\r\n","import { ActionType } from 'redux/types/PearlsGrid';\r\nimport generateGridReducer from 'redux/reducers/AgGridReducerHelper';\r\nimport { combineReducers } from 'redux';\r\n\r\nexport default combineReducers({\r\n grid: generateGridReducer(ActionType.GRID)\r\n});\r\n","import { State as AgGridState } from '../types/AgGrid'\r\n\r\nexport enum ActionType {\r\n 'GRID' = 'CONSUMABLE_OVERVIEW_GRID',\r\n}\r\n\r\nexport interface State {\r\n grid: AgGridState\r\n}\r\n","import { ActionType } from 'redux/types/ConsumableGrid';\r\nimport generateGridReducer from 'redux/reducers/AgGridReducerHelper';\r\nimport { combineReducers } from 'redux';\r\n\r\nexport default combineReducers({\r\n grid: generateGridReducer(ActionType.GRID)\r\n});\r\n","import { State as AgGridState } from 'redux/types/AgGrid';\r\n\r\nexport enum ActionType {\r\n 'GRID' = 'EMPLOYEES_OVERVIEW_GRID',\r\n 'SEARCH' = 'EMPLOYEES_OVERVIEW_SEARCH',\r\n}\r\n\r\nexport interface SearchAction {\r\n type: ActionType.SEARCH\r\n payload: string | null\r\n}\r\n\r\nexport interface State {\r\n grid: AgGridState\r\n search: string | null\r\n}\r\n","import { ActionType, SearchAction } from \"redux/types/EmployeesOverview\";\r\nimport generateGridReducer from \"redux/reducers/AgGridReducerHelper\";\r\nimport { combineReducers } from \"redux\";\r\nimport { State } from \"redux/types/AgGrid\";\r\n\r\nconst GridState: State = {\r\n sortModel: [],\r\n filterModel: {\r\n \"userInformation.accountLocked\": {\r\n filterType: \"set\",\r\n values: [\"false\"],\r\n },\r\n },\r\n page: 0,\r\n columnStates: undefined,\r\n};\r\n\r\nconst searchReducer = (\r\n state: string | null = null,\r\n action: SearchAction\r\n): string | null => {\r\n switch (action.type) {\r\n case ActionType.SEARCH:\r\n return action.payload;\r\n\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport default combineReducers({\r\n grid: generateGridReducer(ActionType.GRID, GridState),\r\n search: searchReducer,\r\n});\r\n","import { State as AgGridState } from '../types/AgGrid'\r\n\r\nexport enum ActionType {\r\n 'GRID' = 'REGISTRATION_GRID',\r\n}\r\n\r\nexport interface State {\r\n grid: AgGridState\r\n}\r\n","import { ActionType } from 'redux/types/RegistrationGrid';\r\nimport generateGridReducer from 'redux/reducers/AgGridReducerHelper';\r\nimport { combineReducers } from 'redux';\r\n\r\nexport default combineReducers({\r\n grid: generateGridReducer(ActionType.GRID)\r\n});\r\n","import { State as AgGridState } from \"redux/types/AgGrid\";\r\n\r\nexport enum ActionType {\r\n \"GRID\" = \"CREATE_REQUEST_OVERVIEW_GRID\",\r\n \"SEARCH\" = \"CREATE_REQUEST_OVERVIEW_SEARCH\",\r\n}\r\n\r\nexport interface SearchAction {\r\n type: ActionType.SEARCH;\r\n payload: string | null;\r\n}\r\n\r\nexport interface State {\r\n grid: AgGridState;\r\n search: string | null;\r\n}\r\n","import { ActionType, SearchAction } from \"redux/types/CreateRequestOverview\";\r\nimport generateGridReducer from \"redux/reducers/AgGridReducerHelper\";\r\nimport { combineReducers } from \"redux\";\r\n\r\nconst searchReducer = (\r\n state: string | null = null,\r\n action: SearchAction\r\n): string | null => {\r\n switch (action.type) {\r\n case ActionType.SEARCH:\r\n return action.payload;\r\n\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport default combineReducers({\r\n grid: generateGridReducer(ActionType.GRID),\r\n search: searchReducer,\r\n});\r\n","import { State as AgGridState } from \"redux/types/AgGrid\";\r\n\r\nexport enum ActionType {\r\n \"GRID\" = \"JOIN_REQUEST_OVERVIEW_GRID\",\r\n \"SEARCH\" = \"JOIN_REQUEST_OVERVIEW_SEARCH\",\r\n}\r\n\r\nexport interface SearchAction {\r\n type: ActionType.SEARCH;\r\n payload: string | null;\r\n}\r\n\r\nexport interface State {\r\n grid: AgGridState;\r\n search: string | null;\r\n}\r\n","import { ActionType, SearchAction } from \"redux/types/JoinRequestOverview\";\r\nimport generateGridReducer from \"redux/reducers/AgGridReducerHelper\";\r\nimport { combineReducers } from \"redux\";\r\n\r\nconst searchReducer = (\r\n state: string | null = null,\r\n action: SearchAction\r\n): string | null => {\r\n switch (action.type) {\r\n case ActionType.SEARCH:\r\n return action.payload;\r\n\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport default combineReducers({\r\n grid: generateGridReducer(ActionType.GRID),\r\n search: searchReducer,\r\n});\r\n","import { State as AgGridState } from 'redux/types/AgGrid';\r\n\r\nexport enum ActionType {\r\n 'GRID' = 'SENDGRID_TEMPLATES_OVERVIEW_GRID',\r\n 'SEARCH' = 'SENDGRID_TEMPLATES_OVERVIEW_SEARCH',\r\n}\r\n\r\nexport interface SearchAction {\r\n type: ActionType.SEARCH\r\n payload: string | null\r\n}\r\n\r\nexport interface State {\r\n grid: AgGridState\r\n search: string | null\r\n}\r\n","import { ActionType, SearchAction } from 'redux/types/SendgridTemplatesOverview';\r\nimport generateGridReducer from 'redux/reducers/AgGridReducerHelper';\r\nimport { combineReducers } from 'redux';\r\n\r\n\r\nconst searchReducer = (state: string | null = null, action: SearchAction): string | null => {\r\n switch (action.type) {\r\n\r\n case ActionType.SEARCH:\r\n return action.payload;\r\n\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nexport default combineReducers({\r\n grid: generateGridReducer(ActionType.GRID),\r\n search: searchReducer,\r\n});","import { Error } from 'types/CampGuideTypes';\r\n\r\nexport enum ActionType {\r\n OPEN = 'DELETE_OPEN',\r\n CLOSE = 'DELETE_CLOSE',\r\n LOADING = 'DELETE_LOADING',\r\n ERROR = 'DELETE_ERROR',\r\n}\r\n\r\nexport interface ChangeData {\r\n templateId: string,\r\n}\r\n\r\nexport interface Store {\r\n isLocked: boolean,\r\n changeData: ChangeData | null,\r\n error: Error | null\r\n}\r\n\r\n\r\nexport interface ErrorAction {\r\n type: ActionType.ERROR,\r\n payload: Error\r\n}\r\n\r\nexport interface OpenAction {\r\n type: ActionType.OPEN,\r\n payload: ChangeData\r\n}\r\n\r\nexport interface CloseAction {\r\n type: ActionType.CLOSE,\r\n}\r\n\r\nexport interface LoadingAction {\r\n type: ActionType.LOADING,\r\n}\r\n\r\nexport type Action = ErrorAction | OpenAction | CloseAction | LoadingAction;\r\n","import { Error } from 'types/CampGuideTypes';\r\n\r\nexport enum ActionType {\r\n OPEN = 'CREATE_OPEN',\r\n CLOSE = 'CREATE_CLOSE',\r\n LOADING = 'CREATE_LOADING',\r\n ERROR = 'CREATE_ERROR',\r\n}\r\n\r\nexport interface ChangeData {\r\n templateId: string,\r\n}\r\n\r\nexport interface Store {\r\n isLocked: boolean,\r\n changeData: ChangeData | null,\r\n error: Error | null\r\n}\r\n\r\n\r\nexport interface ErrorAction {\r\n type: ActionType.ERROR,\r\n payload: Error\r\n}\r\n\r\nexport interface OpenAction {\r\n type: ActionType.OPEN,\r\n payload: ChangeData\r\n}\r\n\r\nexport interface CloseAction {\r\n type: ActionType.CLOSE,\r\n}\r\n\r\nexport interface LoadingAction {\r\n type: ActionType.LOADING,\r\n}\r\n\r\nexport type Action = ErrorAction | OpenAction | CloseAction | LoadingAction;\r\n","import { combineReducers, createStore, applyMiddleware } from \"redux\";\r\nimport thunk from \"redux-thunk\";\r\n\r\nimport { localizeReducer } from \"react-localize-redux\";\r\n\r\nimport initialState from \"./initialState\";\r\n\r\nimport appShellReducer from \"./reducers/appShellReducer\";\r\nimport authReducer from \"./reducers/authReducer\";\r\nimport changeLoginReducer from \"./reducers/AccountShortcuts/changeLoginReducer\";\r\nimport changePearlsReducer from \"./reducers/AccountShortcuts/changePearlsReducer\";\r\nimport changeActiveReducer from \"./reducers/AccountShortcuts/changeActiveReducer\";\r\nimport sendResetReducer from \"./reducers/AccountShortcuts/sendResetReducer\";\r\nimport deleteAccountReducer from \"./reducers/AccountShortcuts/deleteAccountReducer\";\r\n\r\nimport requestLogReducer from \"./reducers/DeviceActions/requestLogReducer\";\r\nimport resetActivationReducer from \"./reducers/DeviceActions/resetActivationReducer\";\r\nimport setOutOfServiceReducer from \"./reducers/DeviceActions/setOutOfServiceReducer\";\r\nimport resetInstallerReducer from \"./reducers/DeviceActions/resetInstallerReducer\";\r\n\r\nimport productOverviewReducer from \"./reducers/productOverviewReducer\";\r\nimport partnerOverviewReducer from \"./reducers/partnerOverviewReducer\";\r\nimport deviceOverviewReducer from \"./reducers/deviceOverviewReducer\";\r\nimport poolOverviewReducer from \"./reducers/poolOverviewReducer\";\r\nimport customerOverviewReducer from \"./reducers/customerOverviewReducer\";\r\nimport partnerDetailsReducer from \"./reducers/partnerDetailsReducer\";\r\nimport promotionOverviewReducer from \"./reducers/promotionOverviewReducer\";\r\nimport promotionDetailsReducer from \"./reducers/promotionDetailsReducer\";\r\nimport couponCodeReducer from \"./reducers/couponCodeReducer\";\r\nimport multiSelectReducer from \"./reducers/multiSelectReducer\";\r\nimport inputToChipReducer from \"./reducers/inputToChipReducer\";\r\nimport linkedUsersReducer from \"./reducers/linkedUsersReducer\";\r\nimport bonusAccountReducer from \"./reducers/bonusAccountReducer\";\r\nimport productRegistrationsReducer from \"./reducers/productRegistrationsReducer\";\r\nimport changeOrganizationActiveStateReducer from \"./reducers/changeOrganizationActiveStateReducer\";\r\nimport changePositionReducer from \"./reducers/AccountShortcuts/changePositionReducer\";\r\nimport removeFromCompanyReducer from \"./reducers/AccountShortcuts/removeFromCompanyReducer\";\r\nimport pearlsGridReducer from \"./reducers/pearlsGridReducer\";\r\nimport consumableGridReducer from \"./reducers/consumableGridReducer\";\r\nimport employeesOverviewReducer from \"./reducers/employeesOverviewReducer\";\r\nimport registrationGridReducer from \"./reducers/registrationGridReducer\";\r\nimport createRequestOverviewReducer from \"./reducers/createRequestOverviewReducer\";\r\nimport joinRequestOverviewReducer from \"./reducers/joinRequestOverviewReducer\";\r\n\r\nimport sendgridTemplatesOverviewReducer from \"./reducers/sendgridTemplatesOverviewReducer\";\r\nimport sendgridTemplatesDeleteReducer from \"./reducers/sendgridTemplatesDeleteReducer\";\r\nimport sendgridTemplatesCreateReducer from \"./reducers/sendgridTemplatesCreateReducer\";\r\n\r\n// Be sure to ONLY add \"redux-immutable-state-invariant\" middleware in development!\r\nconst middleware =\r\n process.env.NODE_ENV !== \"production\"\r\n ? require(\"redux-devtools-extension\").composeWithDevTools(\r\n applyMiddleware(\r\n require(\"redux-immutable-state-invariant\").default(),\r\n thunk\r\n )\r\n )\r\n : applyMiddleware(thunk);\r\n\r\nconsole.log('process.env.NODE_ENV: \"' + process.env.NODE_ENV + '\"');\r\n\r\nconst rootReducer = combineReducers({\r\n localize: localizeReducer,\r\n auth: authReducer,\r\n appShell: appShellReducer,\r\n\r\n /* Product */\r\n productOverview: productOverviewReducer,\r\n\r\n /* Partner */\r\n partnerOverview: partnerOverviewReducer,\r\n partnerDetails: partnerDetailsReducer,\r\n linkedUsers: linkedUsersReducer,\r\n bonusAccount: bonusAccountReducer,\r\n productRegistrations: productRegistrationsReducer,\r\n changeOrganizationActiveState: changeOrganizationActiveStateReducer,\r\n pearlsGrid: pearlsGridReducer,\r\n employeesOverview: employeesOverviewReducer,\r\n\r\n /* Requests */\r\n joinRequestOverview: joinRequestOverviewReducer,\r\n createRequestOverview: createRequestOverviewReducer,\r\n\r\n /* Promotion */\r\n promotionOverview: promotionOverviewReducer,\r\n promotionDetails: promotionDetailsReducer,\r\n couponCode: couponCodeReducer,\r\n\r\n /* Admin */\r\n multiSelect: multiSelectReducer,\r\n inputToChip: inputToChipReducer,\r\n\r\n /* Customer */\r\n deviceOverview: deviceOverviewReducer,\r\n customerOverview: customerOverviewReducer,\r\n poolOverview: poolOverviewReducer,\r\n\r\n /*Sendgrid Templates*/\r\n sendgridTemplatesOverview: sendgridTemplatesOverviewReducer,\r\n sendgridTemplatesDelete: sendgridTemplatesDeleteReducer,\r\n sendgridTemplatesCreate: sendgridTemplatesCreateReducer,\r\n /* Consumable */\r\n consumableGrid: consumableGridReducer,\r\n\r\n /* Production */\r\n registrationGrid: registrationGridReducer,\r\n\r\n /* Global Acount-Shortcuts */\r\n accountShortcuts: combineReducers({\r\n changeLogin: changeLoginReducer,\r\n changePearls: changePearlsReducer,\r\n changeActive: changeActiveReducer,\r\n sendReset: sendResetReducer,\r\n changePosition: changePositionReducer,\r\n deleteAccount: deleteAccountReducer,\r\n removeFromCompany: removeFromCompanyReducer,\r\n }),\r\n\r\n deviceActions: combineReducers({\r\n requestLog: requestLogReducer,\r\n resetActivation: resetActivationReducer,\r\n resetInstaller: resetInstallerReducer,\r\n setOutOfService: setOutOfServiceReducer,\r\n }),\r\n});\r\n\r\nexport type AppState = ReturnType;\r\n\r\nexport default createStore(rootReducer, initialState, middleware);\r\n","import { AbilityBuilder } from '@casl/ability'\r\nimport { createCanBoundTo } from '@casl/react'\r\n\r\nimport * as Types from 'types/ToolboxEntities';\r\n\r\nimport store from 'redux/store';\r\n\r\nexport const ability = AbilityBuilder.define((can: Function) => {\r\n can('read', 'NonExisten');\r\n can('write', 'NonExisten');\r\n});\r\n\r\nlet userId: string | -1;\r\nstore.subscribe(() => {\r\n const prevUserId = userId;\r\n const newUser = store.getState().auth.user;\r\n const newUserId = newUser ? newUser.userInformation.id : -1;\r\n\r\n if (prevUserId !== newUserId) {\r\n userId = newUserId;\r\n //console.log('Store changed -> User Changed');\r\n setAbilityFromUser(newUser);\r\n }\r\n});\r\n\r\n\r\nexport const setAbilityFromUser = (user: Types.UserProfile | null): void => {\r\n const { rules, can } = AbilityBuilder.extract()\r\n //console.log('Rules before Update: ', JSON.parse(JSON.stringify(ability.rules)));\r\n\r\n if (user) {\r\n user.roles.forEach((item: Types.Role) => {\r\n switch (item.roleName) {\r\n case 'CampGuideSysAdmin':\r\n can('read', 'Partner');\r\n can('write', 'Partner');\r\n\r\n can('read', 'Product');\r\n can('write', 'Product');\r\n\r\n can('read', 'Customer');\r\n can('write', 'Customer');\r\n\r\n can('write', 'RND');\r\n\r\n can('read', 'Admin');\r\n can('write', 'Admin');\r\n\r\n can('read', 'Promotion');\r\n can('write', 'Promotion');\r\n\r\n can('read', 'Consumable');\r\n can('write', 'Consumable');\r\n\r\n can('read', 'Production');\r\n can('write', 'Production');\r\n\r\n can('read', 'SendGrid');\r\n can('write', 'SendGrid');\r\n break;\r\n\r\n case 'PartnerManager':\r\n can('read', 'Partner');\r\n can('write', 'Partner');\r\n break;\r\n\r\n case 'ProductManager':\r\n can('read', 'Product');\r\n can('write', 'Product');\r\n\r\n can('read', 'Consumable');\r\n can('write', 'Consumable');\r\n break;\r\n\r\n case 'CustomerService':\r\n can('read', 'Customer');\r\n can('write', 'Customer');\r\n break;\r\n\r\n case 'SendGridAdmin':\r\n can('read', 'SendGrid');\r\n can('write', 'SendGrid');\r\n break;\r\n\r\n case 'rnd':\r\n can('read', 'RND');\r\n can('write', 'RND');\r\n break;\r\n\r\n case 'admin':\r\n can('read', 'Admin');\r\n can('write', 'Admin');\r\n break;\r\n\r\n case 'sendgrid':\r\n can('read', 'Sendgrid');\r\n can('write', 'Sendgrid');\r\n break;\r\n\r\n case 'promotion':\r\n can('read', 'Promotion');\r\n can('write', 'Promotion');\r\n break;\r\n\r\n case 'Production': \r\n can('read', 'Production');\r\n can('write', 'Production');\r\n break;\r\n \r\n case 'AuditAdmin':\r\n can('read', 'AuditLog');\r\n break;\r\n\r\n case 'CampRnd':\r\n can('read', 'RND');\r\n can('write', 'RND');\r\n break;\r\n\r\n case 'SalesRep':\r\n can('read', 'Partner');\r\n }\r\n });\r\n }\r\n\r\n ability.update(rules);\r\n //console.log('Rules after Update: ', ability.rules);\r\n};\r\n\r\nexport const Can = createCanBoundTo(ability);\r\nexport default Can;\r\n","import { AuthStore, Action, ActionType } from 'redux/types/Auth';\r\n\r\nimport initialState from 'redux/initialState';\r\n\r\nexport default function authReducer(state: AuthStore = initialState.auth, action: Action): AuthStore {\r\n switch (action.type) {\r\n\r\n case ActionType.LOGIN:\r\n return {\r\n isLoading: false,\r\n hasUnauthorisedLogin: false,\r\n user: action.payload,\r\n authHasExpired: false\r\n };\r\n\r\n case ActionType.UNAUTHORISED:\r\n return {\r\n isLoading: false,\r\n hasUnauthorisedLogin: true,\r\n user: null,\r\n authHasExpired: false\r\n };\r\n\r\n case ActionType.LOGOUT:\r\n return {\r\n isLoading: false,\r\n hasUnauthorisedLogin: false,\r\n user: null,\r\n authHasExpired: false\r\n };\r\n\r\n case ActionType.LOADING:\r\n return {\r\n isLoading: true,\r\n hasUnauthorisedLogin: false,\r\n user: null,\r\n authHasExpired: false\r\n };\r\n\r\n case ActionType.EXPIRE:\r\n return {\r\n isLoading: false,\r\n hasUnauthorisedLogin: false,\r\n user: null,\r\n authHasExpired: true\r\n }\r\n\r\n default:\r\n return state;\r\n }\r\n}\r\n","import * as drawer from 'redux/actions/appShellActions';\r\n\r\nimport initialState from 'redux/initialState';\r\n\r\nexport default function appShellReducer(state = initialState.appShell, action: drawer.DrawerAction): drawer.DrawerState {\r\n switch (action.type) {\r\n case drawer.OPEN_DRAWER:\r\n return { ...state, drawerShown: true };\r\n case drawer.CLOSE_DRAWER:\r\n return { ...state, drawerShown: false };\r\n case drawer.TOGGLE_DRAWER:\r\n return { ...state, drawerShown: !state.drawerShown };\r\n default:\r\n return state;\r\n }\r\n}\r\n","import { ActionType, Store, Action } from 'redux/types/PartnerDetails';\r\n\r\nimport initialState from 'redux/initialState';\r\n\r\nexport default function changeLoginReducer(store: Store = initialState.partnerDetails, action: Action): Store {\r\n switch (action.type) {\r\n\r\n case ActionType.DIRTY:\r\n return {\r\n isLocked: store.isLocked,\r\n isDirty: true,\r\n partner: store.partner,\r\n globalErrors: store.globalErrors,\r\n propertyErrors: store.propertyErrors,\r\n };\r\n\r\n case ActionType.ERROR:\r\n return {\r\n isLocked: false,\r\n isDirty: store.isDirty,\r\n partner: store.partner,\r\n globalErrors: action.payload.globalErrors,\r\n propertyErrors: action.payload.propertyErrors,\r\n };\r\n\r\n case ActionType.LOADED:\r\n return {\r\n isLocked: false,\r\n isDirty: false,\r\n partner: action.payload,\r\n globalErrors: [],\r\n propertyErrors: null,\r\n };\r\n\r\n case ActionType.LOADING:\r\n return {\r\n isLocked: true,\r\n isDirty: false,\r\n partner: null,\r\n globalErrors: [],\r\n propertyErrors: null,\r\n };\r\n\r\n case ActionType.SAVING:\r\n return {\r\n isLocked: true,\r\n isDirty: store.isDirty,\r\n partner: store.partner,\r\n globalErrors: store.globalErrors,\r\n propertyErrors: store.propertyErrors,\r\n };\r\n\r\n default:\r\n return store;\r\n }\r\n}\r\n","import { ActionType, Store, Action } from 'redux/types/ChangeOrganizationActiveState';\r\n\r\nimport initialState from 'redux/initialState';\r\n\r\nexport default function changeOrganizationActiveStateReducer(store: Store = initialState.changeOrganizationActiveState, action: Action): Store {\r\n switch (action.type) {\r\n\r\n case ActionType.OPEN:\r\n return {\r\n isLocked: false,\r\n changeData: action.payload,\r\n error: null\r\n };\r\n\r\n case ActionType.CLOSE:\r\n return {\r\n isLocked: false,\r\n changeData: null,\r\n error: null\r\n };\r\n\r\n case ActionType.LOADING:\r\n return {\r\n isLocked: true,\r\n changeData: store.changeData,\r\n error: null\r\n };\r\n\r\n case ActionType.ERROR:\r\n return {\r\n isLocked: false,\r\n changeData: store.changeData,\r\n error: action.payload\r\n };\r\n\r\n default:\r\n return store;\r\n }\r\n}\r\n","import { ActionType, Store, Action } from 'redux/types/CouponCode';\r\n\r\nimport initialState from 'redux/initialState';\r\n\r\nexport default function couponCodeReducer(store: Store = initialState.couponCode, action: Action): Store {\r\n switch (action.type) {\r\n\r\n case ActionType.DIRTY:\r\n return {\r\n isLocked: store.isLocked,\r\n isDirty: true,\r\n code: store.code,\r\n globalErrors: store.globalErrors,\r\n propertyErrors: store.propertyErrors,\r\n };\r\n\r\n case ActionType.ERROR:\r\n return {\r\n isLocked: store.isLocked,\r\n isDirty: store.isDirty,\r\n code: store.code,\r\n globalErrors: action.payload.globalErrors,\r\n propertyErrors: action.payload.propertyErrors,\r\n };\r\n\r\n case ActionType.LOADED:\r\n return {\r\n isLocked: false,\r\n isDirty: false,\r\n code: action.payload,\r\n globalErrors: [],\r\n propertyErrors: null,\r\n };\r\n\r\n case ActionType.LOADING:\r\n return {\r\n isLocked: true,\r\n isDirty: false,\r\n code: null,\r\n globalErrors: [],\r\n propertyErrors: null,\r\n };\r\n\r\n case ActionType.SAVING:\r\n return {\r\n isLocked: true,\r\n isDirty: store.isDirty,\r\n code: store.code,\r\n globalErrors: store.globalErrors,\r\n propertyErrors: store.propertyErrors,\r\n };\r\n\r\n default:\r\n return store;\r\n }\r\n}\r\n","import { Action, ActionType, MultiSelectStore } from 'redux/types/MultiSelect';\r\n\r\nimport initialState from 'redux/initialState';\r\n\r\nexport default function multiSelectReducer(state: MultiSelectStore = initialState.multiSelect, action: Action): MultiSelectStore {\r\n switch (action.type) {\r\n\r\n case ActionType.CODES:\r\n return {\r\n countryCodes: action.payload,\r\n error: null,\r\n isLoaded: true,\r\n pending: false\r\n };\r\n\r\n case ActionType.PENDING:\r\n return {\r\n ...state,\r\n pending: true\r\n };\r\n\r\n case ActionType.SAVE:\r\n return {\r\n ...state,\r\n pending: true\r\n };\r\n\r\n case ActionType.ERROR:\r\n return {\r\n ...state,\r\n pending: false,\r\n error: action.payload\r\n };\r\n\r\n default:\r\n return state;\r\n }\r\n}\r\n","import { Action, ActionType, InputToChipStore } from 'redux/types/InputToChip';\r\n\r\nimport initialState from 'redux/initialState';\r\n\r\nexport default function inputToChipReducer(state: InputToChipStore = initialState.inputToChip, action: Action): InputToChipStore {\r\n switch (action.type) {\r\n\r\n case ActionType.CHIPS:\r\n return {\r\n chips: action.payload,\r\n error: null,\r\n isLoaded: true,\r\n pending: false\r\n };\r\n\r\n case ActionType.PENDING:\r\n return {\r\n ...state,\r\n pending: true\r\n };\r\n\r\n case ActionType.SAVE:\r\n return {\r\n ...state,\r\n pending: true\r\n };\r\n\r\n case ActionType.ERROR:\r\n return {\r\n ...state,\r\n pending: false,\r\n error: action.payload\r\n };\r\n\r\n default:\r\n return state;\r\n }\r\n}\r\n","import { ActionType, Store, Action } from 'redux/types/SendgridTemplatesDelete';\r\n\r\nimport initialState from 'redux/initialState';\r\n\r\nexport default function sendgridTemplatesDeleteReducer(store: Store = initialState.sendgridTemplatesDelete, action: Action): Store {\r\n switch (action.type) {\r\n\r\n case ActionType.OPEN:\r\n return {\r\n isLocked: false,\r\n changeData: action.payload,\r\n error: null\r\n };\r\n\r\n case ActionType.CLOSE:\r\n return {\r\n isLocked: false,\r\n changeData: null,\r\n error: null\r\n };\r\n\r\n case ActionType.LOADING:\r\n return {\r\n isLocked: true,\r\n changeData: store.changeData,\r\n error: null\r\n };\r\n\r\n case ActionType.ERROR:\r\n return {\r\n isLocked: false,\r\n changeData: store.changeData,\r\n error: action.payload\r\n };\r\n\r\n default:\r\n return store;\r\n }\r\n}\r\n","import { ActionType, Store, Action } from 'redux/types/SendgridTemplatesCreate';\r\n\r\nimport initialState from 'redux/initialState';\r\n\r\nexport default function sendgridTemplatesCreateReducer(store: Store = initialState.sendgridTemplatesCreate, action: Action): Store {\r\n switch (action.type) {\r\n\r\n case ActionType.OPEN:\r\n return {\r\n isLocked: false,\r\n changeData: action.payload,\r\n error: null\r\n };\r\n\r\n case ActionType.CLOSE:\r\n return {\r\n isLocked: false,\r\n changeData: null,\r\n error: null\r\n };\r\n\r\n case ActionType.LOADING:\r\n return {\r\n isLocked: true,\r\n changeData: store.changeData,\r\n error: null\r\n };\r\n\r\n case ActionType.ERROR:\r\n return {\r\n isLocked: false,\r\n changeData: store.changeData,\r\n error: action.payload\r\n };\r\n\r\n default:\r\n return store;\r\n }\r\n}\r\n","import { ActionType, Store, Action } from 'redux/types/AccountShortcuts/ChangeLogin';\r\n\r\nimport initialState from 'redux/initialState';\r\n\r\nexport default function changeLoginReducer(store: Store = initialState.accountShortcuts.changeLogin, action: Action): Store {\r\n switch (action.type) {\r\n\r\n case ActionType.OPEN:\r\n return {\r\n isLocked: false,\r\n changeData: action.payload,\r\n error: null\r\n };\r\n\r\n case ActionType.CLOSE:\r\n return {\r\n isLocked: false,\r\n changeData: null,\r\n error: null\r\n };\r\n\r\n case ActionType.LOADING:\r\n return {\r\n isLocked: true,\r\n changeData: store.changeData,\r\n error: null\r\n };\r\n\r\n case ActionType.ERROR:\r\n return {\r\n isLocked: false,\r\n changeData: store.changeData,\r\n error: action.payload\r\n };\r\n\r\n default:\r\n return store;\r\n }\r\n}\r\n","import { ActionType, Store, Action } from 'redux/types/AccountShortcuts/ChangePearls';\r\n\r\nimport initialState from 'redux/initialState';\r\n\r\nexport default function changePearlsReducer(store: Store = initialState.accountShortcuts.changePearls, action: Action): Store {\r\n switch (action.type) {\r\n\r\n case ActionType.OPEN:\r\n return {\r\n isLocked: false,\r\n pearlsObj: action.payload,\r\n error: null\r\n };\r\n\r\n case ActionType.CLOSE:\r\n return {\r\n isLocked: false,\r\n pearlsObj: null,\r\n error: null\r\n };\r\n\r\n default:\r\n return store;\r\n }\r\n}\r\n","import { ActionType, Store, Action } from 'redux/types/AccountShortcuts/ChangeActive';\r\n\r\nimport initialState from 'redux/initialState';\r\n\r\nexport default function changeLoginReducer(store: Store = initialState.accountShortcuts.changeActive, action: Action): Store {\r\n switch (action.type) {\r\n\r\n case ActionType.OPEN:\r\n return {\r\n user: action.payload,\r\n };\r\n\r\n case ActionType.CLOSE:\r\n return {\r\n user: null,\r\n };\r\n\r\n default:\r\n return store;\r\n }\r\n}\r\n","import { ActionType, Store, Action } from 'redux/types/AccountShortcuts/SendReset';\r\n\r\nimport initialState from 'redux/initialState';\r\n\r\nexport default function changeLoginReducer(store: Store = initialState.accountShortcuts.sendReset, action: Action): Store {\r\n switch (action.type) {\r\n\r\n case ActionType.OPEN:\r\n return {\r\n isLocked: false,\r\n changeData: action.payload,\r\n error: null\r\n };\r\n\r\n case ActionType.CLOSE:\r\n return {\r\n isLocked: false,\r\n changeData: null,\r\n error: null\r\n };\r\n\r\n case ActionType.LOADING:\r\n return {\r\n isLocked: true,\r\n changeData: store.changeData,\r\n error: null\r\n };\r\n\r\n case ActionType.ERROR:\r\n return {\r\n isLocked: false,\r\n changeData: store.changeData,\r\n error: action.payload\r\n };\r\n\r\n default:\r\n return store;\r\n }\r\n}\r\n","import { ActionType, Store, Action } from 'redux/types/AccountShortcuts/ChangePosition';\r\n\r\nimport initialState from 'redux/initialState';\r\n\r\nexport default function changeLoginReducer(store: Store = initialState.accountShortcuts.changePosition, action: Action): Store {\r\n switch (action.type) {\r\n\r\n case ActionType.OPEN:\r\n return {\r\n changeData: action.payload,\r\n };\r\n\r\n case ActionType.CLOSE:\r\n return {\r\n changeData: null,\r\n };\r\n\r\n default:\r\n return store;\r\n }\r\n}\r\n","import { ActionType, Store, Action } from 'redux/types/AccountShortcuts/DeleteAccount';\r\n\r\nimport initialState from 'redux/initialState';\r\n\r\nexport default function deleteAccountReducer(store: Store = initialState.accountShortcuts.deleteAccount, action: Action): Store {\r\n switch (action.type) {\r\n\r\n case ActionType.OPEN:\r\n return {\r\n isLocked: false,\r\n changeData: action.payload,\r\n error: null\r\n };\r\n\r\n case ActionType.CLOSE:\r\n return {\r\n isLocked: false,\r\n changeData: null,\r\n error: null\r\n };\r\n\r\n case ActionType.LOADING:\r\n return {\r\n isLocked: true,\r\n changeData: store.changeData,\r\n error: null\r\n };\r\n\r\n case ActionType.ERROR:\r\n return {\r\n isLocked: false,\r\n changeData: store.changeData,\r\n error: action.payload\r\n };\r\n\r\n default:\r\n return store;\r\n }\r\n}\r\n","import { ActionType, Store, Action } from 'redux/types/AccountShortcuts/RemoveFromCompany';\r\n\r\nimport initialState from 'redux/initialState';\r\n\r\nexport default function changeLoginReducer(store: Store = initialState.accountShortcuts.removeFromCompany, action: Action): Store {\r\n switch (action.type) {\r\n\r\n case ActionType.OPEN:\r\n return {\r\n changeData: action.payload,\r\n };\r\n\r\n case ActionType.CLOSE:\r\n return {\r\n changeData: null,\r\n };\r\n\r\n default:\r\n return store;\r\n }\r\n}\r\n","import { ActionType, Store, Action } from 'redux/types/DeviceActions/RequestLog';\r\n\r\nimport initialState from 'redux/initialState';\r\n\r\nexport default function requestLogReducer(store: Store = initialState.deviceActions.requestLog, action: Action): Store {\r\n switch (action.type) {\r\n\r\n case ActionType.OPEN:\r\n return {\r\n openWithProductCode: action.payload,\r\n };\r\n\r\n case ActionType.CLOSE:\r\n return {\r\n openWithProductCode: undefined,\r\n };\r\n\r\n default:\r\n return store;\r\n }\r\n}\r\n","import { ActionType, Store, Action } from 'redux/types/DeviceActions/ResetActivation';\r\n\r\nimport initialState from 'redux/initialState';\r\n\r\nexport default function resetActivationReducer(store: Store = initialState.deviceActions.resetActivation, action: Action): Store {\r\n switch (action.type) {\r\n\r\n case ActionType.OPEN:\r\n return {\r\n openWithProductCode: action.payload,\r\n };\r\n\r\n case ActionType.CLOSE:\r\n return {\r\n openWithProductCode: undefined,\r\n };\r\n\r\n default:\r\n return store;\r\n }\r\n}\r\n","import { ActionType, Store, Action } from 'redux/types/DeviceActions/ResetInstaller';\r\n\r\nimport initialState from 'redux/initialState';\r\n\r\nexport default function resetInstallerReducer(store: Store = initialState.deviceActions.resetInstaller, action: Action): Store {\r\n switch (action.type) {\r\n\r\n case ActionType.OPEN:\r\n return {\r\n openWithProductCode: action.payload,\r\n };\r\n\r\n case ActionType.CLOSE:\r\n return {\r\n openWithProductCode: undefined,\r\n };\r\n\r\n default:\r\n return store;\r\n }\r\n}\r\n","import { ActionType, Store, Action } from 'redux/types/DeviceActions/SetOutOfService';\r\n\r\nimport initialState from 'redux/initialState';\r\n\r\nexport default function setOutOfServiceReducer(store: Store = initialState.deviceActions.setOutOfService, action: Action): Store {\r\n switch (action.type) {\r\n\r\n case ActionType.OPEN:\r\n return {\r\n openWithProductCode: action.payload,\r\n };\r\n\r\n case ActionType.CLOSE:\r\n return {\r\n openWithProductCode: undefined,\r\n };\r\n\r\n default:\r\n return store;\r\n }\r\n}\r\n","import React, { Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\n\r\nimport { IconButton, Menu, Fade, MenuItem } from '@material-ui/core';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport * as IconsUI from '@material-ui/icons';\r\n\r\nimport { AppState } from 'redux/store';\r\nimport { AuthStore } from 'redux/types/Auth';\r\n\r\n\r\ninterface IProfileMenu {\r\n auth: AuthStore\r\n}\r\n\r\nconst ProfileMenu: React.FC = ({ auth }) => {\r\n const [anchorEl, setAnchorEl] = React.useState(null);\r\n const open = Boolean(anchorEl);\r\n\r\n const handleClick = (event: React.MouseEvent) => {\r\n setAnchorEl(event.currentTarget);\r\n };\r\n\r\n const handleClose = () => {\r\n setAnchorEl(null);\r\n };\r\n\r\n\r\n if (auth.isLoading) {\r\n return ;\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {auth.user || auth.hasUnauthorisedLogin\r\n ? Logout\r\n : sessionStorage.setItem(\"redirectUrl\", window.location.pathname)} href='/authentication'>Login\r\n }\r\n \r\n \r\n );\r\n};\r\n\r\n\r\nconst mapStateToProps = (state: AppState) => ({\r\n auth: state.auth,\r\n});\r\n\r\nexport default connect(\r\n mapStateToProps\r\n)(ProfileMenu);\r\n","import React from \"react\";\r\nimport { NavLink } from \"react-router-dom\";\r\n\r\nimport { Translate } from \"react-localize-redux\";\r\n\r\nimport { ListItemIcon, ListItemText, List, ListItem } from \"@material-ui/core\";\r\n\r\nimport {\r\n Create as IconCreate,\r\n Add as IconJoin,\r\n Home as IconHome,\r\n PeopleAlt as IconPeopleAlt,\r\n LocalDrink as IconLocalDrink,\r\n Receipt as IconRequest,\r\n QuestionAnswer as IconQuestionAnswer,\r\n Shop as IconPromotion,\r\n Build as IconBuild,\r\n Settings as IconSettings,\r\n SentimentVerySatisfied as IconCustomer,\r\n Email as IconEmail,\r\n Flare as IconPearls,\r\n HomeWork as IconPartnerCompany,\r\n ImportExport as IconConsumable,\r\n Bookmarks as IconProduction,\r\n LocalOffer as IconRegistrationCodes,\r\n} from \"@material-ui/icons\";\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\n\r\nimport bwtColors from \"themes/bwtColors\";\r\n\r\nimport Can from \"util/ability\";\r\nimport store from \"redux/store\";\r\nimport { Role } from \"types/ToolboxEntities\";\r\n\r\nconst useStyles = makeStyles((theme: any) => ({\r\n drawerButton: {\r\n display: \"block\",\r\n color: \"inherit\",\r\n textDecoration: \"inherit\",\r\n },\r\n drawerButtonActive: {\r\n background: bwtColors.pink,\r\n textDecoration: \"inherit\",\r\n },\r\n subNav: {\r\n paddingTop: 0,\r\n paddingLeft: \"16px\",\r\n },\r\n}));\r\n\r\ninterface NavItemProps\r\n extends React.DetailedHTMLProps<\r\n React.LiHTMLAttributes,\r\n HTMLLIElement\r\n > {\r\n to: string;\r\n label: string;\r\n children?: JSX.Element;\r\n access?: any;\r\n icon?: JSX.Element;\r\n}\r\n\r\nconst NavItem: React.FC = ({\r\n to,\r\n label,\r\n children,\r\n access,\r\n className,\r\n icon,\r\n ...props\r\n}) => {\r\n const classes = useStyles();\r\n const linkClass = className\r\n ? className + \" \" + classes.drawerButton\r\n : classes.drawerButton;\r\n const iconWrapper = icon ? {icon} : null;\r\n\r\n const NavItem = (\r\n
  • \r\n {\r\n let locationMatch = \"\";\r\n let matchMatch = \"\";\r\n\r\n if (match) {\r\n locationMatch = location.pathname;\r\n matchMatch = match.url;\r\n\r\n const lastSegmentIsNumber = !isNaN(\r\n parseFloat(\r\n locationMatch.substring(locationMatch.lastIndexOf(\"/\") + 1)\r\n )\r\n );\r\n const lastSegmentIsProductCode =\r\n locationMatch.substring(locationMatch.lastIndexOf(\"/\") + 1)\r\n .length === 9 &&\r\n location.pathname.substring(\r\n location.pathname.lastIndexOf(\"/\") + 1\r\n )[4] === \"-\";\r\n const lastSegmentIsNEW =\r\n locationMatch.split(\"/\").slice(-2)[0] === \"NEW\";\r\n\r\n if (lastSegmentIsNEW) {\r\n var arrVars = locationMatch.split(\"/\");\r\n arrVars.splice(-2, 2);\r\n var restVar = arrVars.join(\"/\");\r\n locationMatch = restVar + \"/\";\r\n }\r\n\r\n if (lastSegmentIsNumber || lastSegmentIsProductCode) {\r\n locationMatch = locationMatch.substring(\r\n 0,\r\n locationMatch.lastIndexOf(\"/\")\r\n );\r\n }\r\n if (\r\n (locationMatch.match(/\\//gi) || []).length ===\r\n (matchMatch.match(/\\//gi) || []).length\r\n ) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n }}\r\n >\r\n \r\n {iconWrapper}\r\n \r\n \r\n \r\n \r\n \r\n {children}\r\n
  • \r\n );\r\n\r\n return access ? (\r\n \r\n {NavItem}\r\n \r\n ) : (\r\n NavItem\r\n );\r\n};\r\n\r\nconst NavigationList: React.FC = () => {\r\n const classes = useStyles();\r\n let salesRep = false;\r\n store.getState().auth.user?.roles.forEach((item: Role) => {\r\n if (item.roleName === \"SalesRep\") {\r\n salesRep = true;\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 {!salesRep ? (\r\n }\r\n />\r\n ) : (\r\n
    \r\n )}\r\n }\r\n />\r\n \r\n \r\n }\r\n >\r\n \r\n }\r\n />\r\n }\r\n />\r\n \r\n \r\n }\r\n />\r\n }\r\n />\r\n\r\n }\r\n >\r\n \r\n }\r\n />\r\n }\r\n />\r\n \r\n \r\n\r\n }\r\n />\r\n\r\n }\r\n />\r\n }\r\n />\r\n }\r\n />\r\n\r\n }\r\n >\r\n \r\n }\r\n />\r\n \r\n \r\n\r\n {/*
    \r\n \r\n {client => { console.log('Apollo Cache: ', client.store.getCache()) }}>Debug Apollo Cache}\r\n \r\n
    */}\r\n \r\n );\r\n};\r\n\r\nexport default NavigationList;\r\n","import { ActionType, Action } from 'redux/types/AccountShortcuts/ChangeActive';\r\n\r\nimport {UserInformation} from 'types/ToolboxEntities';\r\n\r\n\r\nexport const open = (user: UserInformation): Action => ({\r\n type: ActionType.OPEN,\r\n payload: user\r\n});\r\n\r\nexport const close = (): Action => ({\r\n type: ActionType.CLOSE,\r\n});\r\n\r\n","import React, { Fragment } from 'react';\r\n\r\nimport { Theme, makeStyles, Icon, SnackbarContent } from '@material-ui/core';\r\n\r\nimport { Translate } from \"react-localize-redux\";\r\nimport { Error as ErrorType, ErrorCodes } from 'types/CampGuideTypes';\r\n\r\nimport { fallbackTo } from 'components/common/Localization';\r\n\r\ninterface TranslateErrorProps {\r\n error?: ErrorType | null\r\n}\r\n\r\ninterface ErrorProps {\r\n error?: (ErrorType | string)[] | ErrorType | string | null\r\n}\r\n\r\nconst useStyles = makeStyles((theme: Theme) => ({\r\n error: {\r\n backgroundColor: theme.palette.error.dark,\r\n marginBottom: theme.spacing(3),\r\n },\r\n icon: {\r\n fontSize: 20,\r\n },\r\n iconVariant: {\r\n opacity: 0.9,\r\n marginRight: theme.spacing(1),\r\n },\r\n message: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n}));\r\n\r\nexport const TranslateError: React.FC = ({ error }) => {\r\n if (!error) {\r\n return null;\r\n }\r\n\r\n if (error.code === ErrorCodes.Unknown && error.message.length > 0) {\r\n return {error.message};\r\n }\r\n\r\n const id = 'message.error.' + error.code;\r\n\r\n return \r\n};\r\n\r\nconst Error: React.FC = ({ error }) => {\r\n const classes = useStyles();\r\n if (!error || (Array.isArray(error) && error.length === 0)) {\r\n return null;\r\n }\r\n const errorArray: (ErrorType | String)[] = Array.isArray(error) ? error : [error];\r\n\r\n\r\n //console.log(\"___ \", errorArray);\r\n const output = errorArray.map((errorItem, idx) => (\r\n \r\n \r\n {(typeof errorItem === 'string') ? errorItem : }\r\n \r\n ));\r\n\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport const CustomError: React.FC = ({ children }) => {\r\n const classes = useStyles();\r\n\r\n const output = (\r\n \r\n \r\n {children}\r\n \r\n );\r\n\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default Error;\r\n\r\n\r\n","import gql from \"graphql-tag\";\r\n\r\n\r\n\r\nexport const QUERY_EMPLOYEE_ORGANIZATION = gql`\r\nquery OrganizationOfEmployee( $id: Int! ) {\r\n employee( id: $id ) {\r\n position\r\n organization {\r\n id\r\n name\r\n partnerType\r\n email\r\n telephone\r\n address {\r\n street\r\n postalCode\r\n city\r\n countryCode\r\n }\r\n }\r\n }\r\n}\r\n`;\r\n\r\n\r\n\r\n\r\nexport const QUERY_EMPLOYEE_DETAIL = gql`\r\n query EmployeeDetail($id: Int!) {\r\n employee(id: $id) {\r\n isPendingOrganizationAssignment\r\n position\r\n organization {\r\n id\r\n name\r\n partnerType\r\n }\r\n userInformation {\r\n id\r\n key\r\n firstName\r\n lastName\r\n email\r\n telephone\r\n preferredLanguage\r\n registeredOn\r\n lastFailedPasswordReset\r\n incorrectLogins\r\n lastLogin\r\n lastIncorrectLogin\r\n accountLocked\r\n acceptedTerms\r\n acceptedMarketingUsage\r\n dataUpdate\r\n allowedToLogin\r\n verifiedAccount\r\n address {\r\n street\r\n postalCode\r\n city\r\n countryCode\r\n }\r\n }\r\n }\r\n }\r\n`;\r\n\r\n\r\nexport const FRAGMENT_EMPLOYEE_SINGLE = gql`\r\n fragment EmployeeData on Employee {\r\n isPendingOrganizationAssignment\r\n position\r\n organization {\r\n name\r\n partnerType\r\n }\r\n userInformation {\r\n id\r\n key\r\n firstName\r\n lastName\r\n email\r\n registeredOn\r\n accountLocked\r\n allowedToLogin\r\n lastFailedPasswordReset\r\n lastLogin\r\n dataUpdate\r\n acceptedTerms\r\n acceptedMarketingUsage\r\n incorrectLogins\r\n lastIncorrectLogin\r\n verifiedAccount\r\n address {\r\n street\r\n postalCode\r\n city\r\n countryCode\r\n }\r\n }\r\n }\r\n`;\r\n\r\n\r\nexport const QUERY_EMPLOYEE_LIST = gql`\r\n query employeesGrid(\r\n $page: Int\r\n $pageSize: Int\r\n $filter: [EmployeeFilter]\r\n $sorting: [SortingCriterionForEmployeeFilterOption]\r\n ) {\r\n employees(\r\n page: $page\r\n pageSize: $pageSize\r\n filter: $filter\r\n sorting: $sorting\r\n ) {\r\n page\r\n pageSize\r\n totalResults\r\n results {\r\n ...EmployeeData\r\n }\r\n }\r\n }\r\n ${FRAGMENT_EMPLOYEE_SINGLE}\r\n`;\r\n\r\n","import gql from \"graphql-tag\";\r\n\r\nexport const QUERY_CUSTOMER_DETAIL = gql`\r\n query customerInstance($id: String) {\r\n customers(filter: { filterOption: ID, operator: EQ, values: [$id] }) {\r\n results {\r\n userInformation {\r\n id\r\n firstName\r\n lastName\r\n email\r\n telephone\r\n preferredLanguage\r\n address {\r\n street\r\n postalCode\r\n city\r\n countryCode\r\n }\r\n accountLocked\r\n allowedToLogin\r\n lastLogin\r\n dataUpdate\r\n verifiedAccount\r\n lastIncorrectLogin\r\n registeredOn\r\n incorrectLogins\r\n acceptedTerms\r\n lastFailedPasswordReset\r\n canUsePerlaUpdater\r\n userRoles\r\n acceptedMarketingUsage\r\n isTestUser\r\n }\r\n registeredPools {\r\n location\r\n }\r\n }\r\n }\r\n # Precache for smoother country select load\r\n enabledCountries {\r\n countries\r\n }\r\n }\r\n`;\r\n","import React from 'react';\r\nimport { bindActionCreators, Dispatch } from 'redux';\r\nimport { connect } from 'react-redux';\r\n\r\nimport gql from \"graphql-tag\";\r\nimport { useMutation } from '@apollo/react-hooks';\r\nimport { MutationUpdaterFn } from 'apollo-client';\r\n\r\n\r\nimport { Button, Dialog, DialogActions, DialogContent, DialogContentText, DialogTitle, CircularProgress, Box } from '@material-ui/core';\r\n\r\nimport { AppState } from 'redux/store';\r\n\r\nimport { close } from 'redux/actions/AccountShortcuts/ChangeActiveActions';\r\n\r\nimport { Translate } from \"react-localize-redux\";\r\n\r\nimport Error from 'components/common/Error';\r\n\r\n\r\nimport { closeAccountVariables, closeAccount } from 'types/apolloGenerated/closeAccount';\r\nimport { reopenAccountVariables, reopenAccount } from 'types/apolloGenerated/reopenAccount';\r\nimport { EmployeeDetail } from \"types/apolloGenerated/EmployeeDetail\";\r\nimport { customerInstance } from \"types/apolloGenerated/customerInstance\";\r\n\r\nimport { QUERY_EMPLOYEE_DETAIL } from \"commonQueries/employee\";\r\nimport { QUERY_CUSTOMER_DETAIL } from \"commonQueries/customer\";\r\n\r\n\r\nimport { UserInformation } from 'types/ToolboxEntities';\r\n\r\nimport cloneDeep from 'clone-deep';\r\n\r\n\r\nconst CLOSE_ACCOUNT = gql`\r\nmutation closeAccount($userId: ID!){\r\n\tuser{\r\n closeAccount(userId: $userId)\r\n }\r\n}\r\n`;\r\n\r\nconst REOPEN_ACCOUNT = gql`\r\nmutation reopenAccount($userId: ID!){\r\n\tuser{\r\n reopenAccount(userId: $userId)\r\n }\r\n}\r\n`;\r\n\r\n\r\n\r\nconst updateCache = (userId: string | undefined, userKey: number | undefined, isAccountLocked: boolean) => {\r\n const update: MutationUpdaterFn = (cache) => {\r\n try {\r\n /*\r\n * Update Cache of Employee Detail Page\r\n */\r\n const employeeVariables = { id: userKey };\r\n const employeeCache = cloneDeep(cache.readQuery({\r\n query: QUERY_EMPLOYEE_DETAIL,\r\n variables: employeeVariables,\r\n }));\r\n if (employeeCache?.employee?.userInformation) {\r\n employeeCache.employee.userInformation.accountLocked = isAccountLocked;\r\n cache.writeQuery({\r\n query: QUERY_EMPLOYEE_DETAIL,\r\n variables: employeeVariables,\r\n data: employeeCache\r\n });\r\n }\r\n } catch (e) { }\r\n\r\n try {\r\n /*\r\n * Update Cache of Customer Detail Page\r\n */\r\n const customerVariables = { id: userId };\r\n const customerCache = cloneDeep(cache.readQuery({\r\n query: QUERY_CUSTOMER_DETAIL,\r\n variables: customerVariables,\r\n }));\r\n if (customerCache?.customers?.results?.[0]?.userInformation) {\r\n customerCache.customers.results[0].userInformation.accountLocked = isAccountLocked;\r\n cache.writeQuery({\r\n query: QUERY_CUSTOMER_DETAIL,\r\n variables: customerVariables,\r\n data: customerCache\r\n });\r\n }\r\n /* */\r\n } catch (e) { }\r\n };\r\n return update;\r\n};\r\n\r\n\r\n\r\n\r\ninterface ChangeActiveProps {\r\n user: UserInformation | null\r\n actions: {\r\n close: typeof close\r\n }\r\n}\r\n\r\n\r\nconst ChangeActive: React.FC = ({ user, actions }) => {\r\n\r\n const [doCloseAccount, { loading: closeAccountLoading, error: closeError }] = useMutation(CLOSE_ACCOUNT, {\r\n onCompleted: () => actions.close(),\r\n onError: (error) => console.error(error),\r\n update: updateCache(user?.id, user?.key, true)\r\n });\r\n\r\n const [doReopenAccount, { loading: reopenAccountLoading, error: reopenError }] = useMutation(REOPEN_ACCOUNT, {\r\n onCompleted: () => actions.close(),\r\n onError: (error) => console.error(error),\r\n update: updateCache(user?.id, user?.key, false)\r\n });\r\n\r\n if (user === null) {\r\n return null;\r\n }\r\n\r\n const toggleAccount = () => {\r\n if (user?.accountLocked) {\r\n doReopenAccount({ variables: { userId: user.id } });\r\n } else {\r\n doCloseAccount({ variables: { userId: user.id } });\r\n }\r\n };\r\n\r\n const langKeyEnableDisable = user?.accountLocked ? 'components.changeActive.enable' : 'components.changeActive.disable';\r\n\r\n const progress = reopenAccountLoading || closeAccountLoading;\r\n\r\n const error = closeError || reopenError;\r\n const errorElement = error ? : null;\r\n\r\n const OkButtonOrProgress = progress ? (\r\n \r\n ) : (\r\n \r\n );\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n {errorElement}\r\n \r\n \r\n \r\n {OkButtonOrProgress}\r\n \r\n \r\n );\r\n}\r\n\r\n\r\n\r\n\r\n\r\nconst mapStateToProps = (state: AppState) => ({\r\n user: state.accountShortcuts.changeActive.user\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch: Dispatch) => ({\r\n actions: bindActionCreators({ close }, dispatch)\r\n});\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(ChangeActive);\r\n","import { ActionType, Action } from 'redux/types/DeviceActions/RequestLog';\r\n\r\n\r\nexport const open = (productCode: string): Action => ({\r\n type: ActionType.OPEN,\r\n payload: productCode\r\n});\r\n\r\nexport const close = (): Action => ({\r\n type: ActionType.CLOSE,\r\n});\r\n","import React from 'react';\r\nimport { bindActionCreators, Dispatch } from 'redux';\r\n\r\nimport { Button, Dialog, DialogActions, DialogContent, DialogContentText, DialogTitle, CircularProgress } from '@material-ui/core';\r\n\r\nimport { connect } from 'react-redux';\r\nimport { AppState } from 'redux/store';\r\n\r\nimport { Store } from 'redux/types/DeviceActions/RequestLog';\r\nimport { close } from 'redux/actions/DeviceActions/RequestLogActions';\r\n\r\nimport gql from \"graphql-tag\";\r\n\r\nimport { Translate } from \"react-localize-redux\";\r\nimport { useMutation } from \"@apollo/react-hooks\";\r\n\r\nimport Error from 'components/common/Error';\r\n\r\n\r\nimport {\r\n requestLog as RequestLogMutationData,\r\n requestLogVariables as RequestLogMutationVars\r\n} from \"types/apolloGenerated/requestLog\"\r\n\r\nimport { ErrorCodes } from 'types/CampGuideTypes';\r\n\r\n\r\n\r\ninterface IChangeOrganizationActiveState {\r\n store: Store\r\n actions: {\r\n close: typeof close\r\n }\r\n}\r\n\r\n\r\n\r\nconst REQUEST_LOG = gql`\r\nmutation requestLog($productCode: String!){\r\n productInstance{\r\n perla{\r\n requestLog(productCode: $productCode)\r\n }\r\n }\r\n}\r\n`;\r\n\r\nconst RequestLog: React.FC = ({ store, actions }) => {\r\n\r\n const [requestLog, { loading, error }] = useMutation(REQUEST_LOG, {\r\n update: () => {\r\n if (!error) {\r\n // ToDo: Apollo-Cache-Update\r\n actions.close();\r\n }\r\n }\r\n }\r\n );\r\n\r\n\r\n const submit = () => {\r\n if (store.openWithProductCode) {\r\n //console.log(\"request log\", store.openWithProductCode);\r\n requestLog({\r\n variables: { productCode: store.openWithProductCode }\r\n })\r\n }\r\n };\r\n\r\n const errorElement = error ? : null;\r\n const progress = loading ? : null;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n {errorElement}\r\n \r\n \r\n {progress}\r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nconst mapStateToProps = (state: AppState) => ({\r\n store: state.deviceActions.requestLog,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch: Dispatch) => ({\r\n actions: bindActionCreators({ close }, dispatch)\r\n});\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(RequestLog);\r\n","import { ActionType, Action } from 'redux/types/DeviceActions/ResetActivation';\r\n\r\n\r\nexport const open = (productCode: string): Action => ({\r\n type: ActionType.OPEN,\r\n payload: productCode\r\n});\r\n\r\nexport const close = (): Action => ({\r\n type: ActionType.CLOSE,\r\n});","import React from 'react';\r\nimport { bindActionCreators, Dispatch } from 'redux';\r\nimport { connect } from 'react-redux';\r\n\r\n\r\nimport { Button, Dialog, DialogActions, DialogContent, DialogContentText, DialogTitle, CircularProgress } from '@material-ui/core';\r\n\r\nimport { AppState } from 'redux/store';\r\n\r\nimport { Store } from 'redux/types/DeviceActions/ResetActivation';\r\nimport { close } from 'redux/actions/DeviceActions/ResetActivationActions';\r\n\r\nimport gql from \"graphql-tag\";\r\n\r\nimport { Translate } from \"react-localize-redux\";\r\nimport { useMutation } from \"@apollo/react-hooks\";\r\n\r\nimport Error from 'components/common/Error';\r\nimport { ErrorCodes } from 'types/CampGuideTypes';\r\n\r\nimport {\r\n resetActivation as MutationData,\r\n resetActivationVariables as MutationVars\r\n} from \"types/apolloGenerated/resetActivation\";\r\n\r\n\r\n\r\n\r\n\r\ninterface IChangeOrganizationActiveState {\r\n store: Store\r\n actions: {\r\n close: typeof close\r\n }\r\n}\r\n\r\n\r\nconst RESETACTIVATION = gql`\r\nmutation resetActivation($productCode: String!){\r\n productInstance{\r\n resetActivation(productCode: $productCode)\r\n }\r\n}\r\n`;\r\n\r\n\r\n\r\nconst ResetActivation: React.FC = ({ store, actions }) => {\r\n\r\n const [resetActivation, { loading, error }] = useMutation(\r\n RESETACTIVATION, {\r\n update: () => {\r\n if (!error) {\r\n // ToDo: Apollo-Cache-Update\r\n actions.close();\r\n }\r\n }\r\n }\r\n );\r\n\r\n\r\n const submit = () => {\r\n if (store.openWithProductCode) {\r\n //console.log(\"reset activation\", store.openWithProductCode);\r\n resetActivation({\r\n variables: { productCode: store.openWithProductCode }\r\n })\r\n }\r\n };\r\n\r\n const errorElement = error ? : null;\r\n const progress = loading ? : null;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n {errorElement}\r\n \r\n \r\n {progress}\r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nconst mapStateToProps = (state: AppState) => ({\r\n store: state.deviceActions.resetActivation,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch: Dispatch) => ({\r\n actions: bindActionCreators({ close }, dispatch)\r\n});\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(ResetActivation);\r\n","import { ActionType, Action } from 'redux/types/DeviceActions/SetOutOfService';\r\n\r\nexport const open = (productCode: string): Action => ({\r\n type: ActionType.OPEN,\r\n payload: productCode\r\n});\r\n\r\nexport const close = (): Action => ({\r\n type: ActionType.CLOSE,\r\n});","import React from 'react';\r\nimport { bindActionCreators, Dispatch } from 'redux';\r\nimport { connect } from 'react-redux';\r\n\r\n\r\nimport { Button, Dialog, DialogActions, DialogContent, DialogContentText, DialogTitle, CircularProgress } from '@material-ui/core';\r\n\r\nimport { AppState } from 'redux/store';\r\n\r\nimport { Store } from 'redux/types/DeviceActions/SetOutOfService';\r\nimport { close } from 'redux/actions/DeviceActions/SetOutOfServiceActions';\r\n\r\nimport gql from \"graphql-tag\";\r\n\r\nimport { Translate } from \"react-localize-redux\";\r\nimport { useMutation } from \"@apollo/react-hooks\";\r\n\r\nimport Error from 'components/common/Error';\r\nimport { ErrorCodes } from 'types/CampGuideTypes';\r\n\r\n\r\nimport {\r\n setInactive as SetInactiveMutationData,\r\n setInactiveVariables as SetInactiveMutationVars\r\n} from \"types/apolloGenerated/setInactive\"\r\n\r\n\r\n\r\ninterface IChangeOrganizationActiveState {\r\n store: Store\r\n actions: {\r\n close: typeof close\r\n }\r\n}\r\n\r\n\r\nconst SET_INACTIVE = gql`\r\nmutation setInactive($productCode: String!){\r\n productInstance{\r\n perla{\r\n\t\t\tsetInactive(productCode: $productCode)\r\n\t\t}\r\n\t}\r\n}\r\n`;\r\n\r\n\r\n\r\n\r\nconst SetOutOfService: React.FC = ({ store, actions }) => {\r\n const [setInactive, { loading, error }] = useMutation(\r\n SET_INACTIVE, {\r\n update: () => {\r\n if (!error) {\r\n // ToDo: Apollo-Cache-Update\r\n actions.close();\r\n }\r\n }\r\n }\r\n );\r\n\r\n\r\n const submit = () => {\r\n if (store.openWithProductCode) {\r\n //console.log(\"set service\", store.openWithProductCode);\r\n setInactive({\r\n variables: { productCode: store.openWithProductCode }\r\n })\r\n }\r\n };\r\n\r\n const errorElement = error ? : null;\r\n const progress = loading ? : null;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n {errorElement}\r\n \r\n \r\n {progress}\r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nconst mapStateToProps = (state: AppState) => ({\r\n store: state.deviceActions.setOutOfService,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch: Dispatch) => ({\r\n actions: bindActionCreators({ close }, dispatch)\r\n});\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(SetOutOfService);\r\n","import { ActionType, Action } from 'redux/types/DeviceActions/ResetInstaller';\r\n\r\n\r\nexport const open = (productCode: string): Action => ({\r\n type: ActionType.OPEN,\r\n payload: productCode\r\n});\r\n\r\nexport const close = (): Action => ({\r\n type: ActionType.CLOSE,\r\n});","import React from \"react\";\r\nimport { bindActionCreators, Dispatch } from \"redux\";\r\nimport { connect } from \"react-redux\";\r\n\r\nimport {\r\n Button,\r\n Dialog,\r\n DialogActions,\r\n DialogContent,\r\n DialogContentText,\r\n DialogTitle,\r\n CircularProgress,\r\n} from \"@material-ui/core\";\r\n\r\nimport { AppState } from \"redux/store\";\r\n\r\nimport { Store } from \"redux/types/DeviceActions/ResetInstaller\";\r\nimport { close } from \"redux/actions/DeviceActions/ResetInstallerActions\";\r\n\r\nimport gql from \"graphql-tag\";\r\n\r\nimport { Translate } from \"react-localize-redux\";\r\nimport { useMutation } from \"@apollo/react-hooks\";\r\n\r\nimport Error from \"components/common/Error\";\r\nimport { ErrorCodes } from \"types/CampGuideTypes\";\r\n\r\nimport {\r\n resetActivation as MutationData,\r\n resetActivationVariables as MutationVars,\r\n} from \"types/apolloGenerated/resetActivation\";\r\n\r\ninterface IChangeOrganizationActiveState {\r\n store: Store;\r\n actions: {\r\n close: typeof close;\r\n };\r\n}\r\n\r\nconst RESETINSTALLER = gql`\r\n mutation resetInstaller($productCode: String!) {\r\n productInstance {\r\n resetInstaller(productCode: $productCode)\r\n }\r\n }\r\n`;\r\n\r\nconst ResetInstaller: React.FC = ({\r\n store,\r\n actions,\r\n}) => {\r\n const [resetActivation, { loading, error }] = useMutation<\r\n MutationData,\r\n MutationVars\r\n >(RESETINSTALLER, {\r\n update: () => {\r\n if (!error) {\r\n // ToDo: Apollo-Cache-Update\r\n actions.close();\r\n }\r\n },\r\n });\r\n\r\n const submit = () => {\r\n if (store.openWithProductCode) {\r\n resetActivation({\r\n variables: { productCode: store.openWithProductCode },\r\n });\r\n }\r\n };\r\n\r\n const errorElement = error ? (\r\n \r\n ) : null;\r\n const progress = loading ? : null;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {errorElement}\r\n \r\n \r\n {progress}\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nconst mapStateToProps = (state: AppState) => ({\r\n store: state.deviceActions.resetInstaller,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch: Dispatch) => ({\r\n actions: bindActionCreators({ close }, dispatch),\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(ResetInstaller);\r\n","import { ThunkAction, ThunkDispatch } from 'redux-thunk'\r\n\r\nimport { Error } from 'types/CampGuideTypes';\r\n\r\nimport { ActionType, ChangeData, Action } from 'redux/types/ChangeOrganizationActiveState';\r\n\r\nimport * as Types from 'types/ToolboxEntities';\r\n\r\nimport GraphQL from 'util/GraphQL';\r\n\r\n\r\n\r\nexport const open = (organization: Types.Organization): Action => ({\r\n type: ActionType.OPEN,\r\n payload: {\r\n organizationId: organization.id,\r\n setActiveFlagTo: organization.website? true : false\r\n }\r\n});\r\n\r\nexport const close = (): Action => ({\r\n type: ActionType.CLOSE,\r\n});\r\n\r\nexport const error = (error: Error): Action => ({\r\n type: ActionType.ERROR,\r\n payload: error\r\n});\r\n\r\nexport const loading = (): Action => ({\r\n type: ActionType.LOADING,\r\n});\r\n\r\n\r\n\r\nexport const change = (changeData: ChangeData): ThunkAction, {}, {}, Action> => {\r\n return async (dispatch: ThunkDispatch<{}, {}, Action>): Promise => {\r\n\r\n dispatch(loading());\r\n GraphQL.changeOrganizationActiveState(changeData.organizationId, changeData.setActiveFlagTo).then((data: any) => {\r\n dispatch(close());\r\n }).catch((errorData: Error) => {\r\n console.log('ERROR', errorData);\r\n dispatch(error(errorData));\r\n });\r\n };\r\n};\r\n","import React from 'react';\r\nimport { bindActionCreators, Dispatch } from 'redux';\r\nimport { connect } from 'react-redux';\r\n\r\n\r\nimport { Button, Dialog, DialogActions, DialogContent, DialogContentText, DialogTitle, CircularProgress } from '@material-ui/core';\r\n\r\nimport { AppState } from 'redux/store';\r\n\r\nimport { Store } from 'redux/types/ChangeOrganizationActiveState';\r\nimport { close, change } from 'redux/actions/ChangeOrganizationActiveStateActions';\r\n\r\nimport { Translate } from \"react-localize-redux\";\r\n\r\nimport Error from 'components/common/Error';\r\n\r\n\r\n\r\ninterface IChangeOrganizationActiveState {\r\n store: Store\r\n actions: {\r\n close: typeof close\r\n change: typeof change\r\n }\r\n}\r\n\r\n\r\nconst ChangeOrganizationActiveState: React.FC = ({ store, actions }) => {\r\n const submit = () => {\r\n if (store.changeData) {\r\n actions.change(store.changeData);\r\n }\r\n };\r\n\r\n const langKeyEnableDisable = store.changeData ? 'components.changeActive.enable' : 'components.changeActive.disable';\r\n\r\n const progress = store.isLocked ? : null;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {progress}\r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nconst mapStateToProps = (state: AppState) => ({\r\n store: state.changeOrganizationActiveState,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch: Dispatch) => ({\r\n actions: bindActionCreators({ close, change }, dispatch)\r\n});\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(ChangeOrganizationActiveState);\r\n","import { ThunkAction, ThunkDispatch } from 'redux-thunk'\r\n\r\nimport { Error } from 'types/CampGuideTypes';\r\n\r\nimport { ActionType, ChangeData, Action } from 'redux/types/AccountShortcuts/ChangeLogin';\r\n\r\nimport * as Types from 'types/ToolboxEntities';\r\n\r\n\r\nexport const open = (user: Types.UserInformation): Action => ({\r\n type: ActionType.OPEN,\r\n payload: {\r\n userId: user.id,\r\n email: user.email,\r\n password: ''\r\n }\r\n});\r\n\r\nexport const close = (): Action => ({\r\n type: ActionType.CLOSE,\r\n});\r\n\r\nexport const error = (error: Error): Action => ({\r\n type: ActionType.ERROR,\r\n payload: error\r\n});\r\n\r\nexport const loading = (): Action => ({\r\n type: ActionType.LOADING,\r\n});\r\n\r\n\r\n\r\nexport const change = (changeDate: ChangeData): ThunkAction, {}, {}, Action> => {\r\n return async (dispatch: ThunkDispatch<{}, {}, Action>): Promise => {\r\n\r\n // dispatch(loading());\r\n // GraphQL.changeLoginData(changeDate.userId, changeDate.password, changeDate.email).then((data: any) => {\r\n // console.log(\"change login succeeded\");\r\n // console.log('DATA', data);\r\n // dispatch(close());\r\n // }).catch((errorData: Error) => {\r\n // console.log('ERROR', errorData);\r\n // dispatch(error(errorData));\r\n // });\r\n\r\n };\r\n};\r\n","import React, { useState, ChangeEvent, useEffect } from 'react';\r\nimport { bindActionCreators, Dispatch } from 'redux';\r\nimport { connect } from 'react-redux';\r\n\r\nimport gql from \"graphql-tag\";\r\nimport { useMutation } from '@apollo/react-hooks';\r\n\r\n\r\nimport { Button, TextField, Dialog, DialogActions, DialogContent, DialogContentText, DialogTitle, CircularProgress } from '@material-ui/core';\r\n\r\nimport { AppState } from 'redux/store';\r\n\r\nimport { Theme, makeStyles } from '@material-ui/core';\r\n\r\nimport { Store as ChangeLoginStore } from 'redux/types/AccountShortcuts/ChangeLogin';\r\nimport { close, change } from 'redux/actions/AccountShortcuts/ChangeLoginActions';\r\n\r\nimport { Translate, LocalizeContextProps, TranslateFunction, withLocalize, initialize } from \"react-localize-redux\";\r\n\r\nimport Error from 'components/common/Error';\r\nimport { Error as ErrorObj } from 'types/CampGuideTypes';\r\n\r\nimport { mapQlError } from 'util/GraphQL';\r\n\r\n\r\nconst useStyles = makeStyles((theme: Theme) => ({\r\n input: {\r\n marginBottom: theme.spacing(1),\r\n },\r\n}));\r\n\r\n// const validateEmail = (email: string): boolean => {\r\n// var 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(String(email).toLowerCase());\r\n// };\r\n\r\ninterface IChangeLogin extends LocalizeContextProps {\r\n changeLogin: ChangeLoginStore\r\n translate: TranslateFunction\r\n actions: {\r\n close: typeof close\r\n change: typeof change\r\n }\r\n}\r\n\r\nconst ChangeLogin: React.FC = ({ changeLogin, actions, translate }) => {\r\n\r\n const [email, setEmail] = useState(changeLogin.changeData ? changeLogin.changeData.email : '');\r\n const [pass1, setPass1] = useState('');\r\n const [pass2, setPass2] = useState('');\r\n const [emailError, setEmailError] = useState('');\r\n const [pass1Error, setPass1Error] = useState('');\r\n const [pass2Error, setPass2Error] = useState('');\r\n const [mutationError, setMutationError] = useState(\"\");\r\n\r\n\r\n\r\n const classes = useStyles();\r\n\r\n useEffect(() => {\r\n setEmail(changeLogin.changeData ? changeLogin.changeData.email : '');\r\n setPass1('');\r\n setPass2('');\r\n setEmailError('');\r\n setPass1Error('');\r\n setPass2Error('');\r\n }, [changeLogin]);\r\n\r\n const change = (event: ChangeEvent) => {\r\n\r\n if (event.currentTarget.id === 'email') {\r\n setEmail(event.currentTarget.value);\r\n setEmailError('');\r\n\r\n } else if (event.currentTarget.id === 'pass1') {\r\n setPass1(event.currentTarget.value);\r\n setPass1Error('');\r\n\r\n } else if (event.currentTarget.id === 'pass2') {\r\n setPass2(event.currentTarget.value);\r\n setPass2Error('');\r\n }\r\n };\r\n\r\n const validate = () => {\r\n let isValide = true;\r\n // if (!validateEmail(email)) {\r\n // isValide = false;\r\n // setEmailError('components.changeLogin.error.validEmail');\r\n // } else {\r\n // setEmailError('');\r\n // }\r\n\r\n // isValide = isValide && !!pass1 && !!pass2 && (pass1 === pass2);\r\n\r\n if (!pass1) {\r\n setPass1Error('components.changeLogin.error.validPass');\r\n } else {\r\n setPass1Error('');\r\n }\r\n\r\n if (!pass2) {\r\n setPass2Error('components.changeLogin.error.validPass');\r\n } else if (pass1 !== pass2) {\r\n setPass2Error('components.changeLogin.error.passRepeat');\r\n } else {\r\n setPass2Error('');\r\n }\r\n\r\n return isValide\r\n };\r\n\r\n\r\n const CHANGE_LOGIN = gql`\r\nmutation ChangeLogin($userId: ID!, $password: String!, $email: String!){\r\n user{\r\n changePassword(changePasswordInput:\r\n {\r\n password: $password,\r\n id: $userId\r\n }\r\n )\r\n changeEmail(changeEmail:\r\n {\r\n email: $email,\r\n userId: $userId\r\n }\r\n )\r\n }\r\n}\r\n`;\r\n\r\n const [mutate, { loading, error }] = useMutation(CHANGE_LOGIN, {\r\n update(/*cache, { data: { variables } }*/) {\r\n\r\n // const queryCache:any = cache.readQuery({\r\n // query: QUERY,\r\n // variables: {\r\n // id: 172359\r\n // },\r\n // });\r\n\r\n // queryCache.organization.employees.results = queryCache.organization.employees.results.map((item:any) => {\r\n // if (item.userInformation.key === changeLogin.changeData?.userId) {\r\n // item.email = changeLogin.changeData?.email;\r\n // }\r\n // return item;\r\n // });\r\n\r\n\r\n\r\n // //console.log('#########################', JSON.parse(JSON.stringify(queryCache)));\r\n\r\n // cache.writeQuery({\r\n // query: QUERY,\r\n // variables: {\r\n // id: 172359\r\n // },\r\n // data: queryCache\r\n // });\r\n\r\n\r\n },\r\n onCompleted: (data) => {\r\n if (!data.user.changePassword) {\r\n if (/^[a-zA-Z0-9- ]*$/.test(pass1) === true) {\r\n setMutationError(translate(\"components.changeLogin.error.validPassNoSpecialCharacter\") as string);\r\n } else {\r\n setMutationError(translate(\"components.changeLogin.error.validPass\") as string);\r\n }\r\n\r\n }\r\n if (!data.user.changeEmail) {\r\n setMutationError(translate(\"components.changeLogin.error.validEmail\") as string);\r\n }\r\n\r\n if (data.user.changePassword && data.user.changeEmail) {\r\n actions.close();\r\n }\r\n },\r\n onError: (error) => console.error(error)\r\n });\r\n\r\n React.useEffect(() => {\r\n\r\n }, []);\r\n\r\n const submit = () => {\r\n if (validate() && changeLogin.changeData) {\r\n mutate({\r\n variables: {\r\n userId: changeLogin.changeData.userId,\r\n email: email,\r\n password: pass1\r\n }\r\n }).catch(() => { });\r\n }\r\n };\r\n\r\n const eroorObj: ErrorObj | null = error ? mapQlError(error.graphQLErrors) : null;\r\n\r\n const progress = loading ? : null;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n : null}\r\n type=\"email\"\r\n label={}\r\n autoFocus\r\n />\r\n : null}\r\n type=\"password\"\r\n label={}\r\n />\r\n : null}\r\n type=\"password\"\r\n label={}\r\n />\r\n \r\n \r\n {progress}\r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\n\r\n\r\n\r\nconst ChangeLoginWrapper: React.FC = ({ changeLogin, actions, translate, addTranslation, renderToStaticMarkup, languages, defaultLanguage, activeLanguage, addTranslationForLanguage, setActiveLanguage }) => {\r\n if (changeLogin.changeData) {\r\n return ;\r\n }\r\n return null;\r\n}\r\n\r\n\r\n\r\nconst mapStateToProps = (state: AppState) => ({\r\n changeLogin: state.accountShortcuts.changeLogin,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch: Dispatch) => ({\r\n actions: bindActionCreators({ close, change }, dispatch)\r\n});\r\n\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(withLocalize(ChangeLoginWrapper));\r\n","import { ThunkAction, ThunkDispatch } from 'redux-thunk'\r\n\r\nimport { Error } from 'types/CampGuideTypes';\r\n\r\nimport { ActionType, ChangeData, Action } from 'redux/types/AccountShortcuts/SendReset';\r\n\r\nimport * as Types from 'types/ToolboxEntities';\r\n\r\nimport GraphQL from 'util/GraphQL';\r\n\r\n\r\n\r\nexport const open = (user: Types.UserInformation): Action => ({\r\n type: ActionType.OPEN,\r\n payload: {\r\n userId: user.id\r\n }\r\n});\r\n\r\nexport const close = (): Action => ({\r\n type: ActionType.CLOSE,\r\n});\r\n\r\nexport const error = (error: Error): Action => ({\r\n type: ActionType.ERROR,\r\n payload: error\r\n});\r\n\r\nexport const loading = (): Action => ({\r\n type: ActionType.LOADING,\r\n});\r\n\r\n\r\n\r\nexport const change = (changeDate: ChangeData): ThunkAction, {}, {}, Action> => {\r\n return async (dispatch: ThunkDispatch<{}, {}, Action>): Promise => {\r\n\r\n dispatch(loading());\r\n GraphQL.sendPasswordResetEmail(changeDate.userId).then((data: any) => {\r\n //console.log('DATA', data);\r\n dispatch(close());\r\n }).catch((errorData: Error) => {\r\n console.log('ERROR', errorData);\r\n dispatch(error(errorData));\r\n });\r\n };\r\n};\r\n","import React from 'react';\r\nimport { bindActionCreators, Dispatch } from 'redux';\r\nimport { connect } from 'react-redux';\r\n\r\n\r\nimport { Button, Dialog, DialogActions, DialogContent, DialogContentText, DialogTitle, CircularProgress } from '@material-ui/core';\r\n\r\nimport { AppState } from 'redux/store';\r\n\r\nimport { Store as SendPasswordResetEmailStore } from 'redux/types/AccountShortcuts/SendReset';\r\nimport { close, change } from 'redux/actions/AccountShortcuts/SendResetActions';\r\n\r\nimport { Translate } from \"react-localize-redux\";\r\n\r\nimport Error from 'components/common/Error';\r\n\r\n\r\ninterface ISendPasswordResetEmail {\r\n sendReset: SendPasswordResetEmailStore\r\n actions: {\r\n close: typeof close\r\n change: typeof change\r\n }\r\n}\r\n\r\n\r\nconst SendPasswordResetEmail: React.FC = ({ sendReset, actions }) => {\r\n const submit = () => {\r\n if (sendReset.changeData) {\r\n actions.change(sendReset.changeData);\r\n }\r\n };\r\n\r\n\r\n const progress = sendReset.isLocked ? : null;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {progress}\r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nconst mapStateToProps = (state: AppState) => ({\r\n sendReset: state.accountShortcuts.sendReset,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch: Dispatch) => ({\r\n actions: bindActionCreators({ close, change }, dispatch)\r\n});\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(SendPasswordResetEmail);\r\n","import { ActionType, Action } from 'redux/types/AccountShortcuts/ChangePosition';\r\n\r\nimport * as Types from 'types/ToolboxEntities';\r\n\r\n\r\nexport const open = (userKey: number, position: Types.Position, partnerId: number): Action => ({\r\n type: ActionType.OPEN,\r\n payload: {\r\n userId: userKey,\r\n position: position,\r\n partnerId: partnerId\r\n }\r\n});\r\n\r\nexport const close = (): Action => ({\r\n type: ActionType.CLOSE,\r\n});\r\n\r\n","import gql from \"graphql-tag\";\r\n\r\n\r\nconst FRAGMENT_PARTNER_GROUPS = gql`\r\n fragment OrganizationGroup on OrganizationGroup {\r\n id\r\n name\r\n }\r\n`;\r\n\r\n\r\nexport const FRAGMENT_PARTNER_ADDRESS = gql`\r\n fragment OrganizationAddress on Address {\r\n street\r\n postalCode\r\n city\r\n countryCode\r\n location {\r\n latitude\r\n longitude\r\n }\r\n }\r\n`;\r\n\r\n\r\nexport const FRAGMENT_PARTNER_DETAIL = gql`\r\n fragment OrganizationDetail on Organization {\r\n id\r\n externalId\r\n isDeleted\r\n name\r\n partnerType\r\n visibility\r\n address {\r\n ...OrganizationAddress\r\n }\r\n email\r\n website\r\n telephone\r\n vatNumber\r\n logoUrl\r\n logoLinkUrl\r\n partnerImageUrl\r\n size\r\n partnerImageLinkUrl\r\n creationTimeStamp\r\n bonusaccount {\r\n accountId\r\n pearls\r\n details {\r\n __typename\r\n ... on ConnexBonusAccountDetails {\r\n shopLoginLink\r\n remoteAvailable\r\n }\r\n }\r\n permission\r\n }\r\n groups{\r\n ...OrganizationGroup\r\n id\r\n name\r\n }\r\n }\r\n ${FRAGMENT_PARTNER_GROUPS}\r\n ${FRAGMENT_PARTNER_ADDRESS}\r\n`;\r\n\r\n\r\n\r\n\r\nexport const QUERY_PARTNER_DETAIL = gql`\r\nquery PartnerDetail($id: Int!) {\r\n organization (id:$id) {\r\n ...OrganizationDetail\r\n }\r\n}\r\n${FRAGMENT_PARTNER_DETAIL}\r\n`;\r\n\r\n\r\nexport const QUERY_PARTNER_GROUPS = gql`\r\nquery PartnerGroups {\r\n organizationGroups{\r\n ...OrganizationGroup\r\n }\r\n}\r\n${FRAGMENT_PARTNER_GROUPS}\r\n`;\r\n\r\n\r\n\r\nexport const QUERY_PARTNER_EMPLOYEES = gql`\r\nquery PartnerEmployees($id: Int!) {\r\n organization (id:$id) {\r\n id\r\n employees{\r\n results{\r\n position\r\n userInformation{\r\n id\r\n firstName\r\n lastName\r\n email\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\nexport const MUTATION_PARTNER_ADD_EMPLOYEE = gql`\r\nmutation AddEmployee($userId: Int!, $partnerId: Int!, $position: Position!){\r\n organization{\r\n createEmployee(employeeInsert: {\r\n organizationId: $partnerId,\r\n userId: $userId,\r\n position: $position\r\n })\r\n }\r\n}\r\n`;\r\n\r\n\r\n","import React from 'react';\r\nimport { bindActionCreators, Dispatch } from 'redux';\r\nimport { connect } from 'react-redux';\r\n\r\nimport gql from \"graphql-tag\";\r\nimport { useMutation } from '@apollo/react-hooks';\r\n\r\nimport cloneDeep from 'clone-deep';\r\n\r\nimport { Button, Dialog, DialogActions, DialogContent, DialogContentText, DialogTitle, CircularProgress } from '@material-ui/core';\r\n\r\nimport { AppState } from 'redux/store';\r\n\r\nimport { Store as ChangePositionStore } from 'redux/types/AccountShortcuts/ChangePosition';\r\nimport { close } from 'redux/actions/AccountShortcuts/ChangePositionActions';\r\n\r\nimport { Translate } from \"react-localize-redux\";\r\n\r\nimport Error from 'components/common/Error';\r\nimport { ErrorCodes } from 'types/CampGuideTypes';\r\n\r\nimport { QUERY_PARTNER_EMPLOYEES } from 'commonQueries/partner';\r\nimport { OrganizationDetail } from 'types/apolloGenerated/OrganizationDetail';\r\nimport { ChangePosition, ChangePositionVariables } from 'types/apolloGenerated/ChangePosition';\r\nimport { PartnerEmployees } from 'types/apolloGenerated/PartnerEmployees';\r\n\r\n\r\nconst CHANGE_POSITION = gql`\r\nmutation ChangePosition($userId: Int!, $partnerId: Int!, $position: Position!){\r\n organization{\r\n deleteEmployee(organizationId: $partnerId, userId: $userId)\r\n createEmployee(employeeInsert:\r\n {\r\n organizationId: $partnerId,\r\n userId: $userId,\r\n position: $position\r\n }\r\n )\r\n }\r\n}\r\n`;\r\n\r\n\r\ntype OrganizationDetailWrapper = {\r\n organization: OrganizationDetail\r\n}\r\n\r\ninterface ChangePositionProps {\r\n changePosition: ChangePositionStore\r\n actions: {\r\n close: typeof close\r\n }\r\n}\r\n\r\n\r\nconst ChangePositionComponent: React.FC = ({ changePosition, actions }) => {\r\n\r\n const [mutate, { loading, error }] = useMutation(CHANGE_POSITION, {\r\n update(cache) {\r\n try {\r\n const variables = {\r\n id: changePosition.changeData?.partnerId\r\n };\r\n\r\n const queryCache = cloneDeep(cache.readQuery({\r\n query: QUERY_PARTNER_EMPLOYEES,\r\n variables: variables,\r\n }));\r\n\r\n if (queryCache?.organization?.employees?.results) {\r\n queryCache.organization.employees.results = queryCache.organization.employees.results.map((item) => {\r\n if (item && item?.userInformation?.key === changePosition.changeData?.userId) {\r\n item.position = changePosition?.changeData?.position || null;\r\n }\r\n return item;\r\n });\r\n\r\n cache.writeQuery({\r\n query: QUERY_PARTNER_EMPLOYEES,\r\n variables: {\r\n id: changePosition.changeData?.partnerId\r\n },\r\n data: queryCache\r\n });\r\n } else {\r\n console.log('Trying to update CACHE, but emplyees not found');\r\n }\r\n } catch (e) { }\r\n\r\n if (!error) {\r\n actions.close();\r\n }\r\n }\r\n });\r\n\r\n\r\n const submit = () => {\r\n if (changePosition.changeData) {\r\n\r\n mutate({\r\n variables: {\r\n userId: changePosition.changeData.userId,\r\n partnerId: changePosition.changeData.partnerId,\r\n position: changePosition.changeData.position\r\n }\r\n }).catch((errorData) => {\r\n console.log('errorData', errorData);\r\n });\r\n\r\n }\r\n };\r\n\r\n const errorElement = error ? : null;\r\n const progress = loading ? : null;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {errorElement}\r\n \r\n \r\n {progress}\r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nconst mapStateToProps = (state: AppState) => ({\r\n changePosition: state.accountShortcuts.changePosition,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch: Dispatch) => ({\r\n actions: bindActionCreators({ close }, dispatch)\r\n});\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(ChangePositionComponent);\r\n","import { ActionType, Action } from 'redux/types/AccountShortcuts/RemoveFromCompany';\r\n\r\n\r\nexport const open = (userId: number, partnerId: number): Action => ({\r\n type: ActionType.OPEN,\r\n payload: {\r\n userId: userId,\r\n partnerId: partnerId\r\n }\r\n});\r\n\r\nexport const close = (): Action => ({\r\n type: ActionType.CLOSE,\r\n});\r\n","import React from 'react';\r\nimport { bindActionCreators, Dispatch } from 'redux';\r\nimport { connect } from 'react-redux';\r\n\r\nimport cloneDeep from 'clone-deep';\r\n\r\nimport gql from \"graphql-tag\";\r\nimport { useMutation } from '@apollo/react-hooks';\r\n\r\nimport { Button, Dialog, DialogActions, DialogContent, DialogContentText, DialogTitle, CircularProgress } from '@material-ui/core';\r\n\r\nimport { AppState } from 'redux/store';\r\n\r\nimport { Store as RemoveFromCompanyStore } from 'redux/types/AccountShortcuts/RemoveFromCompany';\r\nimport { close } from 'redux/actions/AccountShortcuts/RemoveFromCompanyActions';\r\n\r\nimport { Translate } from \"react-localize-redux\";\r\n\r\nimport Error from 'components/common/Error';\r\n\r\nimport { QUERY_EMPLOYEE_ORGANIZATION } from 'commonQueries/employee';\r\nimport { QUERY_PARTNER_EMPLOYEES } from 'commonQueries/partner';\r\n\r\nimport { ErrorCodes } from 'types/CampGuideTypes';\r\nimport { OrganizationOfEmployee } from 'types/apolloGenerated/OrganizationOfEmployee';\r\nimport { PartnerEmployees } from 'types/apolloGenerated/PartnerEmployees';\r\n\r\n\r\n\r\nconst REMOVE_FROM_COMPANY = gql`\r\nmutation RemoveFromCompany($partnerId: Int!, $userId: Int!){\r\n organization{\r\n deleteEmployee(\r\n organizationId: $partnerId,\r\n userId: $userId\r\n )\r\n }\r\n}\r\n`;\r\n\r\n\r\ninterface RemoveFromCompanyProps {\r\n remFrmCmpny: RemoveFromCompanyStore\r\n actions: {\r\n close: typeof close\r\n }\r\n}\r\n\r\nconst RemoveFromCompany: React.FC = ({ remFrmCmpny, actions }) => {\r\n\r\n const [mutate, { loading, error }] = useMutation(REMOVE_FROM_COMPANY, {\r\n update(cache) {\r\n // \r\n // Update CACHE: Employees-Array within Organization\r\n //\r\n try {\r\n const variables = {\r\n id: remFrmCmpny.changeData?.partnerId\r\n };\r\n\r\n const queryCache = cloneDeep(cache.readQuery({\r\n query: QUERY_PARTNER_EMPLOYEES,\r\n variables: variables,\r\n }));\r\n\r\n if (queryCache?.organization?.employees?.results) {\r\n\r\n queryCache.organization.employees.results = queryCache.organization.employees.results.filter((item, idx) => {\r\n return (item && item?.userInformation?.key !== remFrmCmpny.changeData?.userId);\r\n });\r\n\r\n cache.writeQuery({\r\n query: QUERY_PARTNER_EMPLOYEES,\r\n variables: variables,\r\n data: queryCache\r\n });\r\n } else {\r\n console.log('Trying to update CACHE, but emplyees not found');\r\n }\r\n } catch (e) { }\r\n\r\n\r\n //\r\n // Update CACHE: Organization within Employee-Detail-Data\r\n //\r\n try {\r\n const variablesOrgOfEmployee = {\r\n id: remFrmCmpny.changeData?.userId\r\n };\r\n\r\n const cachedOrgOfEmployee = cloneDeep(cache.readQuery({\r\n query: QUERY_EMPLOYEE_ORGANIZATION,\r\n variables: variablesOrgOfEmployee,\r\n }));\r\n\r\n if (cachedOrgOfEmployee?.employee) {\r\n cachedOrgOfEmployee.employee.organization = null;\r\n\r\n cache.writeQuery({\r\n query: QUERY_EMPLOYEE_ORGANIZATION,\r\n variables: variablesOrgOfEmployee,\r\n data: cachedOrgOfEmployee\r\n });\r\n } else {\r\n console.warn('Trying to update CACHE (Set Partner to Employee), but emplyee not found');\r\n }\r\n } catch (e) { }\r\n\r\n\r\n if (!error) {\r\n actions.close();\r\n } else {\r\n console.log('Error', error);\r\n }\r\n }\r\n });\r\n\r\n const submit = () => {\r\n if (remFrmCmpny.changeData) {\r\n mutate({\r\n variables: {\r\n userId: remFrmCmpny.changeData.userId,\r\n partnerId: remFrmCmpny.changeData.partnerId,\r\n }\r\n }).catch((errorData) => {\r\n console.log('errorData', errorData);\r\n });\r\n }\r\n };\r\n\r\n\r\n const errorElement = error ? : null;\r\n const progress = loading ? : null;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n {errorElement}\r\n \r\n \r\n {progress}\r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nconst mapStateToProps = (state: AppState) => ({\r\n remFrmCmpny: state.accountShortcuts.removeFromCompany,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch: Dispatch) => ({\r\n actions: bindActionCreators({ close }, dispatch)\r\n});\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(RemoveFromCompany);\r\n","import { ThunkAction, ThunkDispatch } from 'redux-thunk'\r\n\r\nimport { Error } from 'types/CampGuideTypes';\r\n\r\nimport { ActionType, ChangeData, Action } from 'redux/types/SendgridTemplatesDelete';\r\n\r\nimport * as Types from 'types/ToolboxEntities';\r\n\r\nimport GraphQL from 'util/GraphQL';\r\n\r\n\r\n\r\nexport const open = (template: Types.UserInformation): Action => ({\r\n type: ActionType.OPEN,\r\n payload: {\r\n templateId: template.id\r\n }\r\n});\r\n\r\nexport const close = (): Action => ({\r\n type: ActionType.CLOSE,\r\n});\r\n\r\nexport const error = (error: Error): Action => ({\r\n type: ActionType.ERROR,\r\n payload: error\r\n});\r\n\r\nexport const loading = (): Action => ({\r\n type: ActionType.LOADING,\r\n});\r\n\r\n\r\n\r\nexport const change = (changeDate: ChangeData): ThunkAction, {}, {}, Action> => {\r\n return async (dispatch: ThunkDispatch<{}, {}, Action>): Promise => {\r\n\r\n dispatch(loading());\r\n GraphQL.sendPasswordResetEmail(changeDate.templateId).then((data: any) => {\r\n //console.log('DATA', data);\r\n dispatch(close());\r\n }).catch((errorData: Error) => {\r\n console.log('ERROR', errorData);\r\n dispatch(error(errorData));\r\n });\r\n };\r\n};\r\n","import gql from \"graphql-tag\";\r\n\r\nexport const QUERY_SENDGRID_SUPPORTED_LANGUAGES = gql`\r\n query sendGridSupportedLanguages {\r\n sendGridSupportedLanguages {\r\n languageCode\r\n countryCode\r\n id\r\n }\r\n }\r\n`;\r\n","import React, { useState } from \"react\";\r\nimport gql from \"graphql-tag\";\r\nimport { useQuery, useMutation } from \"react-apollo\";\r\nimport { QUERY_SENDGRID_SUPPORTED_LANGUAGES } from \"commonQueries/sendgridSupportedLanguages\";\r\nimport CircularProgress from \"@material-ui/core/CircularProgress\";\r\nimport bwtColors from \"themes/bwtColors\";\r\nimport {\r\n Dialog,\r\n DialogContent,\r\n DialogActions,\r\n Button,\r\n TextField,\r\n} from \"@material-ui/core\";\r\nimport { Translate } from \"react-localize-redux\";\r\nimport { createStyles, Theme, makeStyles } from \"@material-ui/core/styles\";\r\nimport {\r\n sendGridSupportedLanguages,\r\n sendGridSupportedLanguages_sendGridSupportedLanguages as SupportedLanguages,\r\n} from \"types/apolloGenerated/sendGridSupportedLanguages\";\r\nimport {\r\n createSendgridSupportedLanguage as CreateSendgridSupportedLang,\r\n createSendgridSupportedLanguageVariables,\r\n} from \"types/apolloGenerated/createSendgridSupportedLanguage\";\r\nimport { SendGridSupportedLanguageInsert } from \"types/apolloGenerated/globalTypes\";\r\nimport {\r\n deleteSendgridSupportedLanguage as DeleteSendgridSupportedLang,\r\n deleteSendgridSupportedLanguageVariables,\r\n} from \"types/apolloGenerated/deleteSendgridSupportedLanguage\";\r\n\r\nconst DELETE_SENDGRID_SUPPORTED_LANGUAGE = gql`\r\n mutation deleteSendgridSupportedLanguage($id: Int!) {\r\n sendGridSupportedLanguage {\r\n delete(sendGridSupportedLanguageId: $id)\r\n }\r\n }\r\n`;\r\n\r\nconst CREATE_SENDGRID_SUPPORTED_LANGUAGE = gql`\r\n mutation createSendgridSupportedLanguage(\r\n $insert: SendGridSupportedLanguageInsert!\r\n ) {\r\n sendGridSupportedLanguage {\r\n create(sendGridSupportedLanguage: $insert) {\r\n id\r\n }\r\n }\r\n }\r\n`;\r\n\r\nconst useStyles = makeStyles((theme: Theme) => {\r\n return createStyles({\r\n tableHeader: {\r\n border: `1px solid ${bwtColors.grey}`,\r\n backgroundColor: bwtColors.blue,\r\n color: \"white\",\r\n padding: \"10px\",\r\n },\r\n tableRow: {\r\n textAlign: \"center\",\r\n padding: \"2px\",\r\n\r\n \"&:hover\": {\r\n backgroundColor: `${bwtColors.grey10}!important`,\r\n },\r\n },\r\n tableCell: {\r\n border: `1px solid ${bwtColors.grey}`,\r\n },\r\n spinner: {\r\n width: \"320px\",\r\n height: \"600px\",\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n },\r\n });\r\n});\r\n\r\nconst EditLanguageDialog: React.FC<{ open: boolean; close: any }> = ({\r\n open,\r\n close,\r\n}) => {\r\n const {\r\n data: supportedLanguages,\r\n loading: loadingLanguages,\r\n } = useQuery(QUERY_SENDGRID_SUPPORTED_LANGUAGES);\r\n const [\r\n deleteSendgridSupportedLanguage,\r\n { loading: deleteLoading },\r\n ] = useMutation<\r\n DeleteSendgridSupportedLang,\r\n deleteSendgridSupportedLanguageVariables\r\n >(DELETE_SENDGRID_SUPPORTED_LANGUAGE, {\r\n onCompleted: () => setSelectedRow(-1),\r\n refetchQueries: [\r\n {\r\n query: QUERY_SENDGRID_SUPPORTED_LANGUAGES,\r\n },\r\n ],\r\n awaitRefetchQueries: true,\r\n });\r\n const [\r\n createSendgridSupportedLanguage,\r\n { loading: createLoading },\r\n ] = useMutation<\r\n CreateSendgridSupportedLang,\r\n createSendgridSupportedLanguageVariables\r\n >(CREATE_SENDGRID_SUPPORTED_LANGUAGE, {\r\n onCompleted: () => setCreateObject({ languageCode: \"\", countryCode: \"\" }),\r\n refetchQueries: [\r\n {\r\n query: QUERY_SENDGRID_SUPPORTED_LANGUAGES,\r\n },\r\n ],\r\n awaitRefetchQueries: true,\r\n });\r\n\r\n const classes = useStyles();\r\n\r\n const [selectedRow, setSelectedRow] = useState(-1);\r\n const [\r\n createObject,\r\n setCreateObject,\r\n ] = useState({\r\n languageCode: \"\",\r\n countryCode: \"\",\r\n });\r\n\r\n if (!supportedLanguages?.sendGridSupportedLanguages && !loadingLanguages) {\r\n return
    Failed to get languages
    ;\r\n }\r\n\r\n const countryLanguagePair =\r\n supportedLanguages?.sendGridSupportedLanguages ?? [];\r\n\r\n return (\r\n \r\n \r\n
    \r\n
    \r\n }\r\n inputProps={{ maxLength: 2 }}\r\n onChange={(e) => {\r\n setCreateObject({\r\n languageCode: e.target.value.toLowerCase(),\r\n countryCode: createObject.countryCode,\r\n });\r\n }}\r\n />\r\n
    \r\n
    \r\n }\r\n inputProps={{ maxLength: 2 }}\r\n onChange={(e) => {\r\n setCreateObject({\r\n languageCode: createObject.languageCode,\r\n countryCode: e.target.value.toUpperCase(),\r\n });\r\n }}\r\n />\r\n
    \r\n {!createLoading ? (\r\n \r\n createSendgridSupportedLanguage({\r\n variables: { insert: createObject },\r\n })\r\n }\r\n >\r\n \r\n \r\n ) : (\r\n
    \r\n \r\n
    \r\n )}\r\n
    \r\n {!loadingLanguages ? (\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {countryLanguagePair.map(\r\n (row: SupportedLanguages | null, idx: number) => (\r\n \r\n setSelectedRow(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
    {row?.languageCode}{row?.countryCode}
    \r\n
    \r\n ) : (\r\n
    \r\n \r\n
    \r\n )}\r\n
    \r\n \r\n {!deleteLoading ? (\r\n {\r\n if (selectedRow !== -1) {\r\n deleteSendgridSupportedLanguage({\r\n variables: {\r\n id: countryLanguagePair[selectedRow]?.id ?? -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
    \r\n );\r\n};\r\n\r\nexport default EditLanguageDialog;\r\n","/* tslint:disable */\n/* eslint-disable */\n// This file was automatically generated and should not be edited.\n\n//==============================================================\n// START Enums and Input Objects\n//==============================================================\n\nexport enum AuditLogObject {\n ADDRESS = \"ADDRESS\",\n BONUS_ACCOUNT = \"BONUS_ACCOUNT\",\n BONUS_ACCOUNT_TRANSACTION = \"BONUS_ACCOUNT_TRANSACTION\",\n CONSUMABLE_PRODUCT = \"CONSUMABLE_PRODUCT\",\n COUPON_CODE = \"COUPON_CODE\",\n DEVICE = \"DEVICE\",\n EMPLOYEE = \"EMPLOYEE\",\n ORGANIZATION = \"ORGANIZATION\",\n ORGANIZATION_CREATION_REQUEST = \"ORGANIZATION_CREATION_REQUEST\",\n ORGANIZATION_GROUP = \"ORGANIZATION_GROUP\",\n ORGANIZATION_JOIN_REQUEST = \"ORGANIZATION_JOIN_REQUEST\",\n PRODUCT = \"PRODUCT\",\n PRODUCT_CODE_BATCH = \"PRODUCT_CODE_BATCH\",\n PRODUCT_INSTANCE_CODE = \"PRODUCT_INSTANCE_CODE\",\n PRODUCT_USER_ACTION = \"PRODUCT_USER_ACTION\",\n PRODUCT_USER_ACTION_NOTIFICATION = \"PRODUCT_USER_ACTION_NOTIFICATION\",\n PRODUCT_USER_ACTION_NOTIFICATION_TRANSLATION = \"PRODUCT_USER_ACTION_NOTIFICATION_TRANSLATION\",\n PROMOTION = \"PROMOTION\",\n SEND_GRID_API_KEY = \"SEND_GRID_API_KEY\",\n SEND_GRID_SUPPORTED_LANGUAGE = \"SEND_GRID_SUPPORTED_LANGUAGE\",\n SEND_GRID_TEMPLATE = \"SEND_GRID_TEMPLATE\",\n SEND_GRID_USER = \"SEND_GRID_USER\",\n USER_ACCOUNT = \"USER_ACCOUNT\",\n}\n\nexport enum BonusAccountPermission {\n DEACTIVATED = \"DEACTIVATED\",\n READ = \"READ\",\n WRITE = \"WRITE\",\n}\n\nexport enum Country {\n AD = \"AD\",\n AE = \"AE\",\n AF = \"AF\",\n AG = \"AG\",\n AI = \"AI\",\n AL = \"AL\",\n AM = \"AM\",\n AO = \"AO\",\n AQ = \"AQ\",\n AR = \"AR\",\n AS = \"AS\",\n AT = \"AT\",\n AU = \"AU\",\n AW = \"AW\",\n AX = \"AX\",\n AZ = \"AZ\",\n BA = \"BA\",\n BB = \"BB\",\n BD = \"BD\",\n BE = \"BE\",\n BF = \"BF\",\n BG = \"BG\",\n BH = \"BH\",\n BI = \"BI\",\n BJ = \"BJ\",\n BL = \"BL\",\n BM = \"BM\",\n BN = \"BN\",\n BO = \"BO\",\n BQ = \"BQ\",\n BR = \"BR\",\n BS = \"BS\",\n BT = \"BT\",\n BV = \"BV\",\n BW = \"BW\",\n BY = \"BY\",\n BZ = \"BZ\",\n CA = \"CA\",\n CC = \"CC\",\n CD = \"CD\",\n CF = \"CF\",\n CG = \"CG\",\n CH = \"CH\",\n CI = \"CI\",\n CK = \"CK\",\n CL = \"CL\",\n CM = \"CM\",\n CN = \"CN\",\n CO = \"CO\",\n CR = \"CR\",\n CU = \"CU\",\n CV = \"CV\",\n CW = \"CW\",\n CX = \"CX\",\n CY = \"CY\",\n CZ = \"CZ\",\n DE = \"DE\",\n DJ = \"DJ\",\n DK = \"DK\",\n DM = \"DM\",\n DO = \"DO\",\n DZ = \"DZ\",\n EC = \"EC\",\n EE = \"EE\",\n EG = \"EG\",\n EH = \"EH\",\n ER = \"ER\",\n ES = \"ES\",\n ET = \"ET\",\n FI = \"FI\",\n FJ = \"FJ\",\n FK = \"FK\",\n FM = \"FM\",\n FO = \"FO\",\n FR = \"FR\",\n GA = \"GA\",\n GB = \"GB\",\n GD = \"GD\",\n GE = \"GE\",\n GF = \"GF\",\n GG = \"GG\",\n GH = \"GH\",\n GI = \"GI\",\n GL = \"GL\",\n GM = \"GM\",\n GN = \"GN\",\n GP = \"GP\",\n GQ = \"GQ\",\n GR = \"GR\",\n GS = \"GS\",\n GT = \"GT\",\n GU = \"GU\",\n GW = \"GW\",\n GY = \"GY\",\n HK = \"HK\",\n HM = \"HM\",\n HN = \"HN\",\n HR = \"HR\",\n HT = \"HT\",\n HU = \"HU\",\n ID = \"ID\",\n IE = \"IE\",\n IL = \"IL\",\n IM = \"IM\",\n IN = \"IN\",\n IO = \"IO\",\n IQ = \"IQ\",\n IR = \"IR\",\n IS = \"IS\",\n IT = \"IT\",\n JE = \"JE\",\n JM = \"JM\",\n JO = \"JO\",\n JP = \"JP\",\n KE = \"KE\",\n KG = \"KG\",\n KH = \"KH\",\n KI = \"KI\",\n KM = \"KM\",\n KN = \"KN\",\n KP = \"KP\",\n KR = \"KR\",\n KW = \"KW\",\n KY = \"KY\",\n KZ = \"KZ\",\n LA = \"LA\",\n LB = \"LB\",\n LC = \"LC\",\n LI = \"LI\",\n LK = \"LK\",\n LR = \"LR\",\n LS = \"LS\",\n LT = \"LT\",\n LU = \"LU\",\n LV = \"LV\",\n LY = \"LY\",\n MA = \"MA\",\n MC = \"MC\",\n MD = \"MD\",\n ME = \"ME\",\n MF = \"MF\",\n MG = \"MG\",\n MH = \"MH\",\n MK = \"MK\",\n ML = \"ML\",\n MM = \"MM\",\n MN = \"MN\",\n MO = \"MO\",\n MP = \"MP\",\n MQ = \"MQ\",\n MR = \"MR\",\n MS = \"MS\",\n MT = \"MT\",\n MU = \"MU\",\n MV = \"MV\",\n MW = \"MW\",\n MX = \"MX\",\n MY = \"MY\",\n MZ = \"MZ\",\n NA = \"NA\",\n NC = \"NC\",\n NE = \"NE\",\n NF = \"NF\",\n NG = \"NG\",\n NI = \"NI\",\n NL = \"NL\",\n NO = \"NO\",\n NP = \"NP\",\n NR = \"NR\",\n NU = \"NU\",\n NZ = \"NZ\",\n OM = \"OM\",\n PA = \"PA\",\n PE = \"PE\",\n PF = \"PF\",\n PG = \"PG\",\n PH = \"PH\",\n PK = \"PK\",\n PL = \"PL\",\n PM = \"PM\",\n PN = \"PN\",\n PR = \"PR\",\n PS = \"PS\",\n PT = \"PT\",\n PW = \"PW\",\n PY = \"PY\",\n QA = \"QA\",\n RE = \"RE\",\n RO = \"RO\",\n RS = \"RS\",\n RU = \"RU\",\n RW = \"RW\",\n SA = \"SA\",\n SB = \"SB\",\n SC = \"SC\",\n SD = \"SD\",\n SE = \"SE\",\n SG = \"SG\",\n SH = \"SH\",\n SI = \"SI\",\n SJ = \"SJ\",\n SK = \"SK\",\n SL = \"SL\",\n SM = \"SM\",\n SN = \"SN\",\n SO = \"SO\",\n SR = \"SR\",\n SS = \"SS\",\n ST = \"ST\",\n SV = \"SV\",\n SX = \"SX\",\n SY = \"SY\",\n SZ = \"SZ\",\n TC = \"TC\",\n TD = \"TD\",\n TF = \"TF\",\n TG = \"TG\",\n TH = \"TH\",\n TJ = \"TJ\",\n TK = \"TK\",\n TL = \"TL\",\n TM = \"TM\",\n TN = \"TN\",\n TO = \"TO\",\n TR = \"TR\",\n TT = \"TT\",\n TV = \"TV\",\n TW = \"TW\",\n TZ = \"TZ\",\n UA = \"UA\",\n UG = \"UG\",\n UM = \"UM\",\n US = \"US\",\n UY = \"UY\",\n UZ = \"UZ\",\n VA = \"VA\",\n VC = \"VC\",\n VE = \"VE\",\n VG = \"VG\",\n VI = \"VI\",\n VN = \"VN\",\n VU = \"VU\",\n WF = \"WF\",\n WS = \"WS\",\n YE = \"YE\",\n YT = \"YT\",\n ZA = \"ZA\",\n ZM = \"ZM\",\n ZW = \"ZW\",\n}\n\nexport enum CouponCodeFilterOption {\n CODE = \"CODE\",\n CONSUMPTION_DATE = \"CONSUMPTION_DATE\",\n COUPON_PRODUCT_ID = \"COUPON_PRODUCT_ID\",\n CREATION_DATE = \"CREATION_DATE\",\n CREATION_USER = \"CREATION_USER\",\n DESCRIPTION = \"DESCRIPTION\",\n ID = \"ID\",\n IS_ACTIVE = \"IS_ACTIVE\",\n PRODUCT_CODE = \"PRODUCT_CODE\",\n VALID_FROM = \"VALID_FROM\",\n VALID_TO = \"VALID_TO\",\n}\n\nexport enum CustomerFilterOption {\n CITY = \"CITY\",\n COUNTRY = \"COUNTRY\",\n EMAIL = \"EMAIL\",\n FIRST_NAME = \"FIRST_NAME\",\n ID = \"ID\",\n IS_LOCKED = \"IS_LOCKED\",\n KEY = \"KEY\",\n LAST_NAME = \"LAST_NAME\",\n POSTAL_CODE = \"POSTAL_CODE\",\n REGISTERED_ON = \"REGISTERED_ON\",\n TELEPHONE = \"TELEPHONE\",\n}\n\nexport enum DateAggregationType {\n DAY = \"DAY\",\n MONTH = \"MONTH\",\n WEEK = \"WEEK\",\n YEAR = \"YEAR\",\n}\n\nexport enum DeviceAccessLevel {\n ADMIN = \"ADMIN\",\n CUSTOMER = \"CUSTOMER\",\n PLUMBER = \"PLUMBER\",\n RN_D = \"RN_D\",\n SERVICE = \"SERVICE\",\n}\n\nexport enum DeviceActionState {\n ACTIVATED = \"ACTIVATED\",\n DISABELING = \"DISABELING\",\n DISABLED = \"DISABLED\",\n ENABLED = \"ENABLED\",\n ERROR = \"ERROR\",\n FINISHED = \"FINISHED\",\n RUNNING = \"RUNNING\",\n START = \"START\",\n TIMEOUT = \"TIMEOUT\",\n}\n\nexport enum DeviceActionType {\n FIRMWARE_UPDATE = \"FIRMWARE_UPDATE\",\n GET_LATEST_LOG = \"GET_LATEST_LOG\",\n HOLIDAY_MODE = \"HOLIDAY_MODE\",\n LID_CHANGE = \"LID_CHANGE\",\n MANUAL_REGENERATION = \"MANUAL_REGENERATION\",\n MANUAL_RINSE = \"MANUAL_RINSE\",\n NOT_SET = \"NOT_SET\",\n PARAMETER_UPDATE = \"PARAMETER_UPDATE\",\n PING = \"PING\",\n SHUTDOWN = \"SHUTDOWN\",\n}\n\nexport enum DisinfectionType {\n BROMINE = \"BROMINE\",\n CHLORINE = \"CHLORINE\",\n SALT = \"SALT\",\n}\n\nexport enum EmployeeFilterOption {\n CITY = \"CITY\",\n COUNTRY = \"COUNTRY\",\n EMAIL = \"EMAIL\",\n FIRST_NAME = \"FIRST_NAME\",\n ID = \"ID\",\n IS_LOCKED = \"IS_LOCKED\",\n IS_PENDING = \"IS_PENDING\",\n LAST_LOGIN = \"LAST_LOGIN\",\n LAST_NAME = \"LAST_NAME\",\n ORGANIZATION_NAME = \"ORGANIZATION_NAME\",\n POSITION = \"POSITION\",\n POSTAL_CODE = \"POSTAL_CODE\",\n}\n\nexport enum FilterOperator {\n CONTAINS = \"CONTAINS\",\n CONTAINSPLURAL = \"CONTAINSPLURAL\",\n EQ = \"EQ\",\n GT = \"GT\",\n ISNULL = \"ISNULL\",\n LT = \"LT\",\n NEQ = \"NEQ\",\n STARTSWITH = \"STARTSWITH\",\n}\n\nexport enum Language {\n AA = \"AA\",\n AB = \"AB\",\n AE = \"AE\",\n AF = \"AF\",\n AK = \"AK\",\n AM = \"AM\",\n AN = \"AN\",\n AR = \"AR\",\n AS = \"AS\",\n AV = \"AV\",\n AY = \"AY\",\n AZ = \"AZ\",\n BA = \"BA\",\n BE = \"BE\",\n BG = \"BG\",\n BH = \"BH\",\n BI = \"BI\",\n BM = \"BM\",\n BN = \"BN\",\n BO = \"BO\",\n BR = \"BR\",\n BS = \"BS\",\n CA = \"CA\",\n CE = \"CE\",\n CH = \"CH\",\n CO = \"CO\",\n CR = \"CR\",\n CS = \"CS\",\n CU = \"CU\",\n CV = \"CV\",\n CY = \"CY\",\n DA = \"DA\",\n DE = \"DE\",\n DV = \"DV\",\n DZ = \"DZ\",\n EE = \"EE\",\n EL = \"EL\",\n EN = \"EN\",\n EO = \"EO\",\n ES = \"ES\",\n ET = \"ET\",\n EU = \"EU\",\n FA = \"FA\",\n FF = \"FF\",\n FI = \"FI\",\n FJ = \"FJ\",\n FO = \"FO\",\n FR = \"FR\",\n FY = \"FY\",\n GA = \"GA\",\n GD = \"GD\",\n GL = \"GL\",\n GN = \"GN\",\n GU = \"GU\",\n GV = \"GV\",\n HA = \"HA\",\n HE = \"HE\",\n HI = \"HI\",\n HO = \"HO\",\n HR = \"HR\",\n HT = \"HT\",\n HU = \"HU\",\n HY = \"HY\",\n HZ = \"HZ\",\n IA = \"IA\",\n ID = \"ID\",\n IE = \"IE\",\n IG = \"IG\",\n II = \"II\",\n IK = \"IK\",\n IO = \"IO\",\n IS = \"IS\",\n IT = \"IT\",\n IU = \"IU\",\n JA = \"JA\",\n JV = \"JV\",\n KA = \"KA\",\n KG = \"KG\",\n KI = \"KI\",\n KJ = \"KJ\",\n KK = \"KK\",\n KL = \"KL\",\n KM = \"KM\",\n KN = \"KN\",\n KO = \"KO\",\n KR = \"KR\",\n KS = \"KS\",\n KU = \"KU\",\n KV = \"KV\",\n KW = \"KW\",\n KY = \"KY\",\n LA = \"LA\",\n LB = \"LB\",\n LG = \"LG\",\n LI = \"LI\",\n LN = \"LN\",\n LO = \"LO\",\n LT = \"LT\",\n LU = \"LU\",\n LV = \"LV\",\n MG = \"MG\",\n MH = \"MH\",\n MI = \"MI\",\n MK = \"MK\",\n ML = \"ML\",\n MN = \"MN\",\n MR = \"MR\",\n MS = \"MS\",\n MT = \"MT\",\n MY = \"MY\",\n NA = \"NA\",\n NB = \"NB\",\n ND = \"ND\",\n NE = \"NE\",\n NG = \"NG\",\n NL = \"NL\",\n NN = \"NN\",\n NO = \"NO\",\n NR = \"NR\",\n NV = \"NV\",\n NY = \"NY\",\n OC = \"OC\",\n OJ = \"OJ\",\n OM = \"OM\",\n OR = \"OR\",\n OS = \"OS\",\n PA = \"PA\",\n PI = \"PI\",\n PL = \"PL\",\n PS = \"PS\",\n PT = \"PT\",\n QU = \"QU\",\n RM = \"RM\",\n RN = \"RN\",\n RO = \"RO\",\n RU = \"RU\",\n RW = \"RW\",\n SA = \"SA\",\n SC = \"SC\",\n SD = \"SD\",\n SE = \"SE\",\n SG = \"SG\",\n SI = \"SI\",\n SK = \"SK\",\n SL = \"SL\",\n SM = \"SM\",\n SN = \"SN\",\n SO = \"SO\",\n SQ = \"SQ\",\n SR = \"SR\",\n SS = \"SS\",\n ST = \"ST\",\n SU = \"SU\",\n SV = \"SV\",\n SW = \"SW\",\n TA = \"TA\",\n TE = \"TE\",\n TG = \"TG\",\n TH = \"TH\",\n TI = \"TI\",\n TK = \"TK\",\n TL = \"TL\",\n TN = \"TN\",\n TO = \"TO\",\n TR = \"TR\",\n TS = \"TS\",\n TT = \"TT\",\n TW = \"TW\",\n TY = \"TY\",\n UG = \"UG\",\n UK = \"UK\",\n UR = \"UR\",\n UZ = \"UZ\",\n VE = \"VE\",\n VI = \"VI\",\n VO = \"VO\",\n WA = \"WA\",\n WO = \"WO\",\n XH = \"XH\",\n YI = \"YI\",\n YO = \"YO\",\n ZA = \"ZA\",\n ZH = \"ZH\",\n ZU = \"ZU\",\n}\n\nexport enum MessageTranslation {\n ACTIVATION_RESPONSE = \"ACTIVATION_RESPONSE\",\n CONFIRM_NOTIFICATION_RESPONSE = \"CONFIRM_NOTIFICATION_RESPONSE\",\n CONNECTIVITY_TEST_REQUEST = \"CONNECTIVITY_TEST_REQUEST\",\n CONNECTIVITY_TEST_RESPONSE = \"CONNECTIVITY_TEST_RESPONSE\",\n EMAIL_ACTIVATION_REQUEST = \"EMAIL_ACTIVATION_REQUEST\",\n ERROR = \"ERROR\",\n ERR_1_POSITION_FAILED = \"ERR_1_POSITION_FAILED\",\n FAST_CYCLE_REGENERATION_RESPONSE = \"FAST_CYCLE_REGENERATION_RESPONSE\",\n FIRMWARE_UPDATE_REQUEST = \"FIRMWARE_UPDATE_REQUEST\",\n FIRMWARE_UPDATE_RESPONSE = \"FIRMWARE_UPDATE_RESPONSE\",\n INFORMATION = \"INFORMATION\",\n PING_REQUEST = \"PING_REQUEST\",\n PING_RESPONSE = \"PING_RESPONSE\",\n REGENERATION_RESPONSE = \"REGENERATION_RESPONSE\",\n RENEW_SERVICE = \"RENEW_SERVICE\",\n RENEW_WARRANTY = \"RENEW_WARRANTY\",\n RESET_STATE_RESPONSE = \"RESET_STATE_RESPONSE\",\n SALT_REMINDER = \"SALT_REMINDER\",\n SERVICE_DUE = \"SERVICE_DUE\",\n SET_PARAMETER_REQUEST = \"SET_PARAMETER_REQUEST\",\n SET_PARAMETER_RESPONSE = \"SET_PARAMETER_RESPONSE\",\n SHUTDOWN_REQUEST = \"SHUTDOWN_REQUEST\",\n SHUTDOWN_RESPONSE = \"SHUTDOWN_RESPONSE\",\n START_FAST_CYCLE_REGENERATION = \"START_FAST_CYCLE_REGENERATION\",\n START_REGENERATION = \"START_REGENERATION\",\n SUMMARY = \"SUMMARY\",\n TELEMETRY = \"TELEMETRY\",\n WARANTY_DUE = \"WARANTY_DUE\",\n WARNING = \"WARNING\",\n}\n\nexport enum NotificationType {\n CONFIRMATION = \"CONFIRMATION\",\n ERROR = \"ERROR\",\n INFORMATION = \"INFORMATION\",\n INTERNAL_ERROR = \"INTERNAL_ERROR\",\n NOT_SET = \"NOT_SET\",\n NOT_SYNCHED = \"NOT_SYNCHED\",\n OK = \"OK\",\n SERVICE = \"SERVICE\",\n WARNING = \"WARNING\",\n}\n\nexport enum OrganizationCreationRequestFilterOption {\n COMPLETION_DATE = \"COMPLETION_DATE\",\n COUNTRY_CODE = \"COUNTRY_CODE\",\n CREATION_DATE = \"CREATION_DATE\",\n ID = \"ID\",\n ORGANIZATION_NAME = \"ORGANIZATION_NAME\",\n STATUS = \"STATUS\",\n}\n\nexport enum OrganizationFilterOption {\n CITY = \"CITY\",\n COUNTRY = \"COUNTRY\",\n CREATION_TIME_STAMP = \"CREATION_TIME_STAMP\",\n EMAIL = \"EMAIL\",\n EMPLOYEE_COUNT = \"EMPLOYEE_COUNT\",\n EXTERNAL_ID = \"EXTERNAL_ID\",\n HAS_EMPLOYEES = \"HAS_EMPLOYEES\",\n ID = \"ID\",\n IS_DELETED = \"IS_DELETED\",\n NAME = \"NAME\",\n PARTNER_TYPE = \"PARTNER_TYPE\",\n POSTAL_CODE = \"POSTAL_CODE\",\n VAT_NUMBER = \"VAT_NUMBER\",\n}\n\nexport enum OrganizationJoinRequestFilterOption {\n COMPLETION_DATE = \"COMPLETION_DATE\",\n COUNTRY_CODE = \"COUNTRY_CODE\",\n CREATION_DATE = \"CREATION_DATE\",\n ID = \"ID\",\n STATUS = \"STATUS\",\n}\n\nexport enum OrganizationRequestStatus {\n ACCEPTED = \"ACCEPTED\",\n DECLINED = \"DECLINED\",\n PENDING = \"PENDING\",\n}\n\nexport enum OrganizationVisibility {\n CONTACT_ONLY = \"CONTACT_ONLY\",\n HIDDEN = \"HIDDEN\",\n PROMOTED = \"PROMOTED\",\n VISIBLE = \"VISIBLE\",\n}\n\nexport enum PartnerType {\n BUILDER = \"BUILDER\",\n OPERATOR = \"OPERATOR\",\n PLANNER = \"PLANNER\",\n PROFESSIONAL = \"PROFESSIONAL\",\n TWP = \"TWP\",\n WHOLESALER = \"WHOLESALER\",\n}\n\nexport enum PoolLocationType {\n INDOOR = \"INDOOR\",\n OUTDOOR = \"OUTDOOR\",\n}\n\nexport enum PoolMaterial {\n CONCRETE = \"CONCRETE\",\n FOIL = \"FOIL\",\n GLASS_FIBRE = \"GLASS_FIBRE\",\n STEEL = \"STEEL\",\n TILES = \"TILES\",\n}\n\nexport enum PoolShape {\n KIDNEY = \"KIDNEY\",\n L_SHAPED = \"L_SHAPED\",\n RECTANGULAR = \"RECTANGULAR\",\n ROUND = \"ROUND\",\n}\n\nexport enum PoolType {\n CHILDRENS = \"CHILDRENS\",\n GENERIC = \"GENERIC\",\n WHIRLPOOL = \"WHIRLPOOL\",\n}\n\nexport enum Position {\n ASSISTANT = \"ASSISTANT\",\n ENGINEER = \"ENGINEER\",\n NONE = \"NONE\",\n OWNER = \"OWNER\",\n}\n\nexport enum ProductFilterOption {\n COUNTRY = \"COUNTRY\",\n GTIN = \"GTIN\",\n ID = \"ID\",\n ITEM_NUMBER = \"ITEM_NUMBER\",\n NAME = \"NAME\",\n PRODUCT_GROUP_NAME = \"PRODUCT_GROUP_NAME\",\n PRODUCT_TYPE = \"PRODUCT_TYPE\",\n}\n\nexport enum ProductInstanceFilterOption {\n BATCH_NUMBER = \"BATCH_NUMBER\",\n CITY = \"CITY\",\n COUNTRY = \"COUNTRY\",\n CUSTOMER_EMAIL = \"CUSTOMER_EMAIL\",\n CUSTOMER_FIRST_NAME = \"CUSTOMER_FIRST_NAME\",\n CUSTOMER_LAST_NAME = \"CUSTOMER_LAST_NAME\",\n DEVICE_ID = \"DEVICE_ID\",\n DEVICE_STATE = \"DEVICE_STATE\",\n DEVICE_STATE_CODE = \"DEVICE_STATE_CODE\",\n DEVICE_VERSION_ID = \"DEVICE_VERSION_ID\",\n DISPLAY_NAME = \"DISPLAY_NAME\",\n ERP_BATCH_NUMBER = \"ERP_BATCH_NUMBER\",\n FIRMWARE_VERSION = \"FIRMWARE_VERSION\",\n ID = \"ID\",\n INSTALLATION_DATE = \"INSTALLATION_DATE\",\n ITEM_NUMBER = \"ITEM_NUMBER\",\n POSTAL_CODE = \"POSTAL_CODE\",\n PRODUCT_CODE = \"PRODUCT_CODE\",\n PRODUCT_ID = \"PRODUCT_ID\",\n PRODUCT_NAME = \"PRODUCT_NAME\",\n REGISTRATION_DATE = \"REGISTRATION_DATE\",\n SERIAL_NUMBER = \"SERIAL_NUMBER\",\n STATE = \"STATE\",\n STREET = \"STREET\",\n TYPE = \"TYPE\",\n}\n\nexport enum ProductInstanceState {\n CONFIRMATION = \"CONFIRMATION\",\n ERROR = \"ERROR\",\n INFORMATION = \"INFORMATION\",\n INTERNAL_ERROR = \"INTERNAL_ERROR\",\n NOT_CONNECTED = \"NOT_CONNECTED\",\n NOT_SET = \"NOT_SET\",\n NOT_SYNCHED = \"NOT_SYNCHED\",\n OK = \"OK\",\n SERVICE = \"SERVICE\",\n WARNING = \"WARNING\",\n}\n\nexport enum ProductType {\n DEFAULT = \"DEFAULT\",\n PERLA_IOT = \"PERLA_IOT\",\n POOL = \"POOL\",\n SILK_IOT = \"SILK_IOT\",\n WATER_DISPENSER = \"WATER_DISPENSER\",\n}\n\nexport enum PromotionType {\n ASSIGNABLE = \"ASSIGNABLE\",\n DEDICATED_USAGE = \"DEDICATED_USAGE\",\n}\n\nexport enum SendGridTemplateFilterOption {\n COUNTRY = \"COUNTRY\",\n IS_DEFAULT = \"IS_DEFAULT\",\n LANGUAGE = \"LANGUAGE\",\n NAME = \"NAME\",\n SEND_GRID_TEMPLATE_TYPE = \"SEND_GRID_TEMPLATE_TYPE\",\n}\n\nexport enum SendGridTemplateType {\n ACCOUNT_SERVER = \"ACCOUNT_SERVER\",\n NOTIFICATION = \"NOTIFICATION\",\n NOT_SPECIFIED = \"NOT_SPECIFIED\",\n REGISTRATION = \"REGISTRATION\",\n USER_ACTION = \"USER_ACTION\",\n}\n\nexport enum SortingDirection {\n ASCENDING = \"ASCENDING\",\n DESCENDING = \"DESCENDING\",\n}\n\nexport enum UserActionClass {\n CONSUMABLE_REFILLMENT = \"CONSUMABLE_REFILLMENT\",\n CO_2_BOTTLE_CAPACITY = \"CO_2_BOTTLE_CAPACITY\",\n FILTER_CARTRIDGE_CAPACITY = \"FILTER_CARTRIDGE_CAPACITY\",\n FIXED_INTERVAL_HALF_YEAR = \"FIXED_INTERVAL_HALF_YEAR\",\n FIXED_INTERVAL_MONTHLY = \"FIXED_INTERVAL_MONTHLY\",\n FIXED_INTERVAL_THREE_YEARS = \"FIXED_INTERVAL_THREE_YEARS\",\n FIXED_INTERVAL_YEAR = \"FIXED_INTERVAL_YEAR\",\n NO_ESTIMATION = \"NO_ESTIMATION\",\n}\n\nexport enum UserActionState {\n ERROR = \"ERROR\",\n OK = \"OK\",\n WARNING = \"WARNING\",\n}\n\nexport enum UserInformationFilterOption {\n EMAIL = \"EMAIL\",\n FIRST_NAME = \"FIRST_NAME\",\n ID = \"ID\",\n KEY = \"KEY\",\n LAST_NAME = \"LAST_NAME\",\n}\n\nexport interface AddressInsertInput {\n city: string;\n countryCode?: Country | null;\n postalCode: string;\n street: string;\n location?: GeoLocationInput | null;\n}\n\nexport interface AuditLogInput {\n interaction: string;\n detail: string;\n pIILevel: number;\n}\n\nexport interface BonusAccountInsertInput {\n organizationId: number;\n}\n\nexport interface BonusAccountTransactionInput {\n accountId: string;\n amount: any;\n description: string;\n}\n\nexport interface BonusAccountUpdateInput {\n permission?: BonusAccountPermission | null;\n bonusAccountId: string;\n}\n\nexport interface ConsumableProductInsert {\n itemNumber: string;\n pearlsRewarded: any;\n isActive: boolean;\n name: string;\n}\n\nexport interface ConsumableProductUpdate {\n id: number;\n itemNumber: string;\n pearlsRewarded: any;\n isActive: boolean;\n name: string;\n}\n\nexport interface CouponCodeFilter {\n filterOption?: (CouponCodeFilterOption | null)[] | null;\n operator?: FilterOperator | null;\n values: (string | null)[];\n}\n\nexport interface CustomerFilter {\n filterOption?: (CustomerFilterOption | null)[] | null;\n operator?: FilterOperator | null;\n values: (string | null)[];\n}\n\nexport interface EmployeeFilter {\n filterOption?: (EmployeeFilterOption | null)[] | null;\n operator?: FilterOperator | null;\n values: (string | null)[];\n}\n\nexport interface GeoLocationInput {\n latitude: number;\n longitude: number;\n}\n\nexport interface OrganizationAddressUpdateInput {\n organizationId: number;\n city?: string | null;\n countryCode?: Country | null;\n postalCode?: string | null;\n street?: string | null;\n location?: GeoLocationInput | null;\n}\n\nexport interface OrganizationCreationRequestFilter {\n filterOption?: (OrganizationCreationRequestFilterOption | null)[] | null;\n operator?: FilterOperator | null;\n values: (string | null)[];\n}\n\nexport interface OrganizationFilter {\n filterOption?: (OrganizationFilterOption | null)[] | null;\n operator?: FilterOperator | null;\n values: (string | null)[];\n}\n\nexport interface OrganizationInsertInput {\n ownerUserId?: number | null;\n name: string;\n address?: AddressInsertInput | null;\n partnerType?: PartnerType | null;\n visibility?: OrganizationVisibility | null;\n email?: string | null;\n telephone?: string | null;\n website?: string | null;\n externalId?: string | null;\n vatNumber?: string | null;\n partnerImage?: string | null;\n partnerImageLinkUrl?: string | null;\n logo?: string | null;\n logoLinkUrl?: string | null;\n size?: number | null;\n}\n\nexport interface OrganizationJoinRequestFilter {\n filterOption?: (OrganizationJoinRequestFilterOption | null)[] | null;\n operator?: FilterOperator | null;\n values: (string | null)[];\n}\n\nexport interface OrganizationJoinRequestInput {\n id: string;\n organizationName?: string | null;\n postalCode?: string | null;\n street?: string | null;\n city?: string | null;\n countryCode?: string | null;\n vatNumber?: string | null;\n website?: string | null;\n}\n\nexport interface OrganizationUpdateInput {\n id: number;\n name?: string | null;\n partnerType?: PartnerType | null;\n visibility?: OrganizationVisibility | null;\n email?: string | null;\n telephone?: string | null;\n website?: string | null;\n partnerImageLinkUrl?: string | null;\n logoLinkUrl?: string | null;\n externalId?: string | null;\n size?: number | null;\n vatNumber?: string | null;\n}\n\nexport interface OrganizationUpdateLogoInput {\n organizationId: number;\n logo?: string | null;\n}\n\nexport interface OrganizationUpdatePartnerImageInput {\n organizationId: number;\n partnerImage?: string | null;\n}\n\nexport interface ProductCodeGenerationParameter {\n amount: number;\n batchNumber: string;\n productId: number;\n erpBatchNumber?: string | null;\n}\n\nexport interface ProductFilter {\n filterOption?: (ProductFilterOption | null)[] | null;\n operator?: FilterOperator | null;\n values: (string | null)[];\n}\n\nexport interface ProductInstanceAddressUpdateInput {\n productCode: string;\n city?: string | null;\n countryCode?: Country | null;\n postalCode?: string | null;\n street?: string | null;\n location?: GeoLocationInput | null;\n}\n\nexport interface ProductInstanceFilter {\n filterOption?: (ProductInstanceFilterOption | null)[] | null;\n operator?: FilterOperator | null;\n values: (string | null)[];\n}\n\nexport interface ProductUpdateInput {\n id: number;\n bonus?: any | null;\n name: string;\n displayName?: string | null;\n productOwnerEmail?: string | null;\n groupId?: number | null;\n itemNumber?: string | null;\n productType?: ProductType | null;\n businessUnit: string;\n deviceType?: string | null;\n deviceVersion?: string | null;\n gTIN?: string | null;\n isProductRegistrationEnabled: boolean;\n isCodelessProductRegistrationEnabled: boolean;\n invoiceUploadAllowed: boolean;\n isArchived: boolean;\n registrationMailTemplateName?: string | null;\n serviceFeePearls?: any | null;\n registrationBonus?: RegistrationBonusInput | null;\n}\n\nexport interface ProductUserActionInsert {\n productId: number;\n userActionClass?: UserActionClass | null;\n userActionInProductIndex: number;\n}\n\nexport interface ProductUserActionNotificationInsert {\n mailTemplateName?: string | null;\n productUserActionId: number;\n state?: UserActionState | null;\n threshold: number;\n}\n\nexport interface ProductUserActionNotificationTranslationInsert {\n body?: string | null;\n language: string;\n productUserActionNotificationId: number;\n title: string;\n}\n\nexport interface ProductUserActionNotificationTranslationUpdate {\n body?: string | null;\n id: number;\n language: string;\n productUserActionNotificationId: number;\n title: string;\n}\n\nexport interface ProductUserActionNotificationUpdate {\n id: number;\n mailTemplateName?: string | null;\n productUserActionId: number;\n state?: UserActionState | null;\n threshold: number;\n}\n\nexport interface PromotionInsertInput {\n articleNumber?: string | null;\n name?: string | null;\n creationUser?: string | null;\n usageCountLimit: number;\n type?: PromotionType | null;\n productIds?: (number | null)[] | null;\n countryCodeIds?: (any | null)[] | null;\n}\n\nexport interface PromotionUpdate {\n id: number;\n articleNumber?: string | null;\n name?: string | null;\n creationUser?: string | null;\n usageCountLimit: number;\n type?: PromotionType | null;\n productIds?: (number | null)[] | null;\n countryCodeIds?: (any | null)[] | null;\n}\n\nexport interface RegistrationBonusInput {\n bonusId?: number | null;\n}\n\nexport interface SendGridSupportedLanguageInsert {\n languageCode: string;\n countryCode: string;\n}\n\nexport interface SendGridTemplateFilter {\n filterOption?: (SendGridTemplateFilterOption | null)[] | null;\n operator?: FilterOperator | null;\n values: (string | null)[];\n}\n\nexport interface SortingCriterionForCouponCodeFilterOption {\n filterOption?: CouponCodeFilterOption | null;\n sortingCriterionOrder: number;\n sortingDirection?: SortingDirection | null;\n}\n\nexport interface SortingCriterionForCustomerFilterOption {\n filterOption?: CustomerFilterOption | null;\n sortingCriterionOrder: number;\n sortingDirection?: SortingDirection | null;\n}\n\nexport interface SortingCriterionForEmployeeFilterOption {\n filterOption?: EmployeeFilterOption | null;\n sortingCriterionOrder: number;\n sortingDirection?: SortingDirection | null;\n}\n\nexport interface SortingCriterionForOrganizationCreationRequestFilterOption {\n filterOption?: OrganizationCreationRequestFilterOption | null;\n sortingCriterionOrder: number;\n sortingDirection?: SortingDirection | null;\n}\n\nexport interface SortingCriterionForOrganizationFilterOption {\n filterOption?: OrganizationFilterOption | null;\n sortingCriterionOrder: number;\n sortingDirection?: SortingDirection | null;\n}\n\nexport interface SortingCriterionForOrganizationJoinRequestFilterOption {\n filterOption?: OrganizationJoinRequestFilterOption | null;\n sortingCriterionOrder: number;\n sortingDirection?: SortingDirection | null;\n}\n\nexport interface SortingCriterionForProductFilterOption {\n filterOption?: ProductFilterOption | null;\n sortingCriterionOrder: number;\n sortingDirection?: SortingDirection | null;\n}\n\nexport interface SortingCriterionForProductInstanceFilterOption {\n filterOption?: ProductInstanceFilterOption | null;\n sortingCriterionOrder: number;\n sortingDirection?: SortingDirection | null;\n}\n\nexport interface SortingCriterionForSendGridTemplateFilterOption {\n filterOption?: SendGridTemplateFilterOption | null;\n sortingCriterionOrder: number;\n sortingDirection?: SortingDirection | null;\n}\n\nexport interface UserAddressInput {\n city?: string | null;\n countryCode?: Country | null;\n postalCode?: string | null;\n street?: string | null;\n location?: GeoLocationInput | null;\n}\n\nexport interface UserInformationFilter {\n filterOption?: (UserInformationFilterOption | null)[] | null;\n operator?: FilterOperator | null;\n values: (string | null)[];\n}\n\nexport interface UserInformationUpdateInput {\n id: string;\n firstName: string;\n lastName: string;\n email: string;\n telephone: string;\n address?: UserAddressInput | null;\n acceptedMarketingUsage: boolean;\n canUsePerlaUpdater: boolean;\n isTestUser: boolean;\n}\n\n//==============================================================\n// END Enums and Input Objects\n//==============================================================\n","import { GridActionType, GridActionsType, SetGridStateAction, SetCulumnStatesAction } from 'redux/types/AgGrid';\r\nimport { SingleSortModel, FilterModel } from 'types/AgGrid';\r\nimport { ColumnState } from '@ag-grid-community/core/dist/cjs/columnController/columnController';\r\n\r\n\r\nexport default (actionType: Type): GridActionsType => {\r\n const actions = {\r\n setGridState: (page: number, sortModel: SingleSortModel[], filterModel: FilterModel): SetGridStateAction => ({\r\n type: actionType,\r\n grid: GridActionType.GRID,\r\n payload: { page, sortModel, filterModel }\r\n }),\r\n\r\n setColumnStates: (ColumnStates: ColumnState[]): SetCulumnStatesAction => ({\r\n type: actionType,\r\n grid: GridActionType.COLUMN,\r\n payload: ColumnStates\r\n }),\r\n\r\n };\r\n\r\n return actions;\r\n};\r\n","import { ActionType, SearchAction } from 'redux/types/SendgridTemplatesOverview';\r\n\r\nimport AgGridActionHelper from 'redux/actions/AgGridActionHelper';\r\n\r\n\r\nexport const { setGridState, setColumnStates } = AgGridActionHelper(ActionType.GRID);\r\n\r\nexport const search = (searchTerm: string | null): SearchAction => ({\r\n type: ActionType.SEARCH,\r\n payload: searchTerm\r\n});\r\n","import React from 'react';\r\n\r\nimport { createStyles, Theme, makeStyles } from '@material-ui/core/styles';\r\n\r\n\r\n\r\nimport IconSettings from '@material-ui/icons/Settings';\r\nimport IconAdd from '@material-ui/icons/Add';\r\nimport IconSave from '@material-ui/icons/Save';\r\nimport IconMenu from '@material-ui/icons/Menu';\r\nimport IconBack from '@material-ui/icons/ArrowBack';\r\n\r\nimport bwtColors from 'themes/bwtColors';\r\nimport { CircularProgress } from '@material-ui/core';\r\nimport { Translate } from 'react-localize-redux';\r\nimport { Link, useHistory } from 'react-router-dom';\r\n\r\nimport { fallbackTo } from 'components/common/Localization';\r\n\r\ntype eventFunc = (event: React.MouseEvent) => void;\r\n\r\ntype navItem = {\r\n title: string,\r\n on: eventFunc | string\r\n};\r\n\r\ninterface iPageHeader {\r\n title: string\r\n subTitle?: string\r\n onAdd?: eventFunc | string\r\n onSettings?: eventFunc | string\r\n onSave?: eventFunc\r\n showBack?: Boolean | false\r\n nav?: navItem[]\r\n isSavePending?: boolean\r\n colour?: string\r\n};\r\n\r\n\r\nconst useStyles = makeStyles((theme: Theme) => {\r\n return createStyles({\r\n pageHeader: {\r\n padding: '0 ' + theme.spacing(3) + 'px',\r\n borderBottom: \"solid 1px \" + bwtColors.grey50,\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n },\r\n title: {\r\n lineHeight: '64px',\r\n margin: 0,\r\n fontWeight: 'normal',\r\n fontSize: '2.5em',\r\n },\r\n subTitle: {\r\n fontSize: '1.5em',\r\n fontWeight: 'normal',\r\n paddingLeft: '20px'\r\n },\r\n controllGroup: {\r\n fontSize: '2em',\r\n display: 'flex',\r\n position: 'relative'\r\n },\r\n controllGroupNav: {\r\n fontSize: '2em',\r\n display: 'flex',\r\n position: 'relative',\r\n \"& div:first-child\": {\r\n zIndex: 1,\r\n top: \"13px\",\r\n height: \"60%\",\r\n \"& svg\": {\r\n left: \"15px\",\r\n }\r\n },\r\n \"& div:last-child\": {\r\n right: 0,\r\n }\r\n },\r\n icon: {\r\n cursor: 'pointer',\r\n width: '40px',\r\n height: '100%',\r\n position: 'relative',\r\n '&:not(:hover) $subNav': {\r\n display: 'none',\r\n },\r\n '& > a': {\r\n color: \"inherit\",\r\n display: \"block\",\r\n width: \"100%\",\r\n height: \"100%\",\r\n }\r\n },\r\n iconMenu: {\r\n cursor: 'pointer',\r\n marginLeft: \"-40px\",\r\n height: '100%',\r\n width: \"85px\",\r\n textAlign: \"right\",\r\n \"& svg\": {\r\n right: \"0\",\r\n left: \"auto\"\r\n },\r\n position: 'relative',\r\n '&:not(:hover) $subNav': {\r\n display: 'none',\r\n },\r\n '& > a': {\r\n color: \"inherit\",\r\n display: \"block\",\r\n width: \"100%\",\r\n height: \"100%\",\r\n }\r\n },\r\n iconSvg: {\r\n position: 'absolute',\r\n left: '25%',\r\n top: '50%',\r\n transform: 'translate(-50%, -50%)',\r\n },\r\n subNav: {\r\n position: 'absolute',\r\n fontSize: '1rem',\r\n top: '100%',\r\n right: 0,\r\n border: 'solid 1px',\r\n whiteSpace: 'nowrap',\r\n padding: '5px',\r\n zIndex: 1,\r\n background: '#fff'\r\n },\r\n subNavItem: {\r\n display: 'block',\r\n padding: '5px',\r\n color: bwtColors.grey,\r\n '&:hover': {\r\n backgroundColor: bwtColors.grey10,\r\n }\r\n },\r\n pendingSave: {\r\n width: '30px!important',\r\n height: '30px!important',\r\n position: 'absolute',\r\n right: \"55px\"\r\n },\r\n leftSeg: {\r\n width: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n }\r\n })\r\n});\r\n\r\n\r\nconst createIcon = (onClick: eventFunc | string | undefined, classes: ReturnType, icon: JSX.Element, isPending: boolean = false, pendingClass?: string): JSX.Element | null => {\r\n if (onClick) {\r\n if (isPending) {\r\n return ;\r\n } else if (onClick instanceof Function) {\r\n return
    {icon}
    ;\r\n } else {\r\n return
    {icon}
    \r\n }\r\n }\r\n return null;\r\n};\r\n\r\n\r\nconst createNavLink = (navItem: navItem, classes: ReturnType, idx: number): JSX.Element => {\r\n const on = navItem.on;\r\n if (on instanceof Function) {\r\n return { on(event); event.preventDefault(); return false; }}>{navItem.title};\r\n } else {\r\n return {navItem.title};\r\n }\r\n};\r\n\r\n\r\nconst PageHeader: React.FC = ({ title, subTitle, onAdd, onSettings, onSave, nav, isSavePending = false, showBack, colour }) => {\r\n const history = useHistory();\r\n const classes = useStyles();\r\n\r\n const getBack = !showBack ? null : (\r\n
    \r\n
    \r\n
    \r\n );\r\n\r\n const add = createIcon(onAdd, classes, );\r\n const settings = createIcon(onSettings, classes, );\r\n\r\n const save = createIcon(onSave, classes, , isSavePending, classes.pendingSave);\r\n\r\n const navigation = nav ? (\r\n
    \r\n
    {nav.map((item, idx) => createNavLink(item, classes, idx))}
    \r\n
    \r\n ) : null;\r\n\r\n return (\r\n
    \r\n
    \r\n {getBack}\r\n

    \r\n  \r\n

    \r\n {subTitle && (

    {subTitle}

    )}\r\n
    \r\n
    {add}{settings}{save}{navigation}
    \r\n
    \r\n );\r\n}\r\n\r\nexport default PageHeader;\r\n","import React from 'react';\r\nimport { createStyles, makeStyles, Theme } from '@material-ui/core/styles';\r\n\r\n\r\nconst useStyles = makeStyles((theme: Theme) => {\r\n return createStyles({\r\n gridFilterHeader: {\r\n display: 'flex',\r\n margin: '10px -20px 20px -20px',\r\n alignItems: 'flex-end',\r\n justifyContent: 'space-between',\r\n\r\n '& > *': {\r\n flex: '0 1 auto',\r\n margin: '0 20px',\r\n minWidth: '170px',\r\n },\r\n\r\n '& > .filter': {\r\n flex: '1 1 auto',\r\n maxWidth: \"250px\",\r\n },\r\n\r\n '& > .innerHeaderRight': {\r\n flex: '0 1 auto',\r\n display: 'flex',\r\n alignItems: 'flex-end',\r\n margin: 0,\r\n\r\n '& > *': {\r\n flex: '0 1 auto',\r\n margin: '0 20px',\r\n },\r\n }\r\n },\r\n })\r\n});\r\n\r\n\r\nconst GridFilterHeader: React.FC> = ({ children, className }, props) => {\r\n const classes = useStyles();\r\n\r\n return
    {children}
    ;\r\n}\r\n\r\nexport default GridFilterHeader;\r\n","import equal from \"deep-equal\";\r\n\r\nimport {\r\n FilterOperator,\r\n SortingDirection,\r\n} from \"types/apolloGenerated/globalTypes\";\r\n\r\nimport { State as AgGridState } from \"redux/types/AgGrid\";\r\n\r\nimport { Filter, FilterModel, SingleSortModel } from \"types/AgGrid\";\r\nimport ApolloClient, {\r\n ApolloQueryResult,\r\n OperationVariables,\r\n} from \"apollo-client\";\r\nimport {\r\n IServerSideGetRowsRequest,\r\n GridApi,\r\n ColumnApi,\r\n} from \"@ag-grid-enterprise/all-modules\";\r\n\r\nexport const getFilterValues = (filter: Filter): string[] => {\r\n return filter.filterType === \"set\" ? filter.values : [filter.filter];\r\n};\r\n\r\nexport const defaultColDef = {\r\n resizable: true,\r\n sortable: true,\r\n filter: \"agTextColumnFilter\",\r\n filterParams: {\r\n filterOptions: [\"contains\"],\r\n suppressAndOrCondition: true,\r\n },\r\n menuTabs: [\"filterMenuTab\"],\r\n};\r\n\r\nexport const autoGroupColumnDef = {\r\n flex: 1,\r\n minWidth: 280,\r\n};\r\n\r\nexport const sideBar = {\r\n defaultToolPanel: \"\",\r\n toolPanels: [\r\n {\r\n id: \"columns\",\r\n labelDefault: \"Columns\",\r\n labelKey: \"columns\",\r\n iconKey: \"columns\",\r\n toolPanel: \"agColumnsToolPanel\",\r\n toolPanelParams: {\r\n suppressRowGroups: true,\r\n suppressValues: true,\r\n suppressPivots: true,\r\n suppressPivotMode: true,\r\n suppressSideButtons: true,\r\n suppressColumnFilter: true,\r\n suppressColumnSelectAll: true,\r\n suppressColumnExpandAll: true,\r\n },\r\n },\r\n ],\r\n};\r\n\r\ntype ApolloSorting = {\r\n filterOption?: string | null;\r\n sortingCriterionOrder: number;\r\n sortingDirection?: SortingDirection | null;\r\n};\r\n\r\nexport type ApolloFilter = {\r\n filterOption?: string[] | null;\r\n operator?: FilterOperator | null;\r\n values: string[];\r\n};\r\n\r\ntype ApolloTypes = {\r\n page?: number;\r\n pageSize?: number;\r\n sorting?: ApolloSorting[];\r\n filter?: ApolloFilter[];\r\n};\r\n\r\nexport const apolloArgumentsCreator = () => {\r\n const apolloArguments: ApolloTypes = {};\r\n\r\n const eqFilterOption = [\r\n \"PARTNER_TYPE\",\r\n \"STATE\",\r\n \"PRODUCT_TYPE\",\r\n \"TYPE\",\r\n \"POSITION\",\r\n \"IS_LOCKED\",\r\n ];\r\n const containsFilterOption = [\"COUNTRY\"];\r\n\r\n const sortingArr: ApolloSorting[] = [];\r\n let sortingOrder = 1;\r\n\r\n let filterArr: ApolloFilter[] = [];\r\n\r\n const agc = {\r\n addAgGridFilterModel: (\r\n filterModel: FilterModel,\r\n mapping: { [key: string]: string },\r\n filterMapping?: {\r\n [key: string]: (apolloFilter: ApolloFilter[], filterModel: any) => void;\r\n }\r\n ) => {\r\n let filterOption: string;\r\n for (let field in filterModel) {\r\n if (filterMapping && filterMapping[field]) {\r\n filterMapping[field](filterArr, filterModel[field]);\r\n } else if ((filterOption = mapping[field])) {\r\n let filter = filterModel[field];\r\n let selectedFilterOperator = FilterOperator.STARTSWITH;\r\n\r\n for (let type in eqFilterOption) {\r\n if (filterOption === eqFilterOption[type].toString()) {\r\n selectedFilterOperator = FilterOperator.EQ;\r\n }\r\n }\r\n\r\n for (let type in containsFilterOption) {\r\n if (filterOption === containsFilterOption[type].toString()) {\r\n selectedFilterOperator = FilterOperator.CONTAINSPLURAL;\r\n }\r\n }\r\n\r\n filterArr.push({\r\n filterOption: [filterOption],\r\n operator: selectedFilterOperator,\r\n values: getFilterValues(filter),\r\n });\r\n } else {\r\n console.error(\r\n 'Trying to filter for a property which is not configured to be filterable. Property: \"' +\r\n field +\r\n '\". Configured Fields: ',\r\n mapping\r\n );\r\n }\r\n }\r\n return agc;\r\n },\r\n\r\n addAgGridSortModel: (\r\n sortModel: SingleSortModel[],\r\n mapping: { [key: string]: string }\r\n ) => {\r\n let sortField: string;\r\n sortModel.forEach((element) => {\r\n if ((sortField = mapping[element.colId])) {\r\n sortingArr.push({\r\n filterOption: sortField,\r\n sortingCriterionOrder: sortingOrder++,\r\n sortingDirection:\r\n element.sort === \"asc\"\r\n ? SortingDirection.ASCENDING\r\n : SortingDirection.DESCENDING,\r\n });\r\n } else {\r\n console.error(\r\n 'Trying to sort for a property which is not configured to be sortable. Property \"' +\r\n element.colId +\r\n '\". Configured Fields: ',\r\n mapping\r\n );\r\n }\r\n });\r\n\r\n return agc;\r\n },\r\n\r\n setPagingFromAgGridStartEnd: (startRow: number, endRow: number) => {\r\n apolloArguments.pageSize = endRow - startRow;\r\n apolloArguments.page = Math.floor(startRow / apolloArguments.pageSize);\r\n\r\n return agc;\r\n },\r\n\r\n setPaging: (page: number, pageSize: number) => {\r\n apolloArguments.page = page;\r\n apolloArguments.pageSize = pageSize;\r\n },\r\n\r\n addSearch: (\r\n searchTerms: string | null | undefined,\r\n fields: string[] | null | undefined\r\n ) => {\r\n if (searchTerms && fields) {\r\n filterArr.push({\r\n filterOption: fields,\r\n operator: FilterOperator.STARTSWITH,\r\n values: [searchTerms],\r\n });\r\n }\r\n\r\n return agc;\r\n },\r\n\r\n addfilters: (filters: ApolloFilter[]) => {\r\n filterArr = filters.concat(filterArr);\r\n },\r\n\r\n getArguments: () => {\r\n if (sortingArr.length) {\r\n apolloArguments.sorting = sortingArr;\r\n }\r\n if (filterArr.length) {\r\n apolloArguments.filter = filterArr;\r\n }\r\n\r\n return apolloArguments;\r\n },\r\n };\r\n\r\n return agc;\r\n};\r\n\r\nconst varsQueriedByGrids: Record = {};\r\n\r\nexport function getVarSetsQueriedByGrids(query: any): OperationVariables[] {\r\n const queryName = query?.definitions?.[0]?.name?.value;\r\n if (typeof queryName === \"string\") {\r\n if (!varsQueriedByGrids[queryName]) {\r\n varsQueriedByGrids[queryName] = [];\r\n }\r\n return varsQueriedByGrids[queryName];\r\n } else {\r\n console.error(\r\n \"getVarSetsQueriedByGrids: Could not find name on query document:\",\r\n query\r\n );\r\n return [];\r\n }\r\n}\r\n\r\nfunction markVarsQueriedByGrids(query: any, variables: OperationVariables) {\r\n const varSets = getVarSetsQueriedByGrids(query);\r\n const ks1 = Object.keys(variables);\r\n for (const vars of varSets) {\r\n const ks2 = Object.keys(vars);\r\n if (ks1.length === ks2.length) {\r\n let found = true;\r\n for (const k of ks1) {\r\n if (variables[k] !== vars[k]) {\r\n found = false;\r\n }\r\n }\r\n if (found) {\r\n // Already recorded\r\n return;\r\n }\r\n }\r\n }\r\n varSets.push(variables);\r\n}\r\n\r\nexport const factoryApolloConnector = (\r\n QUERY: any,\r\n dataHandler: (data: QueryType) => any,\r\n colMapping: { [key: string]: string },\r\n options?: {\r\n queryWithoutTotalResult?: any;\r\n search?: {\r\n searchCols: string[];\r\n searchTerm: string | null;\r\n };\r\n filter?: ApolloFilter[];\r\n customArguments?: any;\r\n defaultSort?: any;\r\n filterMapping?: {\r\n [key: string]: (apolloFilter: ApolloFilter[], filterModel: any) => void;\r\n };\r\n }\r\n) => {\r\n // let lastTotalResult = -1;\r\n // let lastFilter: ApolloFilter[] | undefined = undefined;\r\n\r\n let watcher: ZenObservable.Subscription | undefined = undefined;\r\n // let watcherCallback: false | (() => void) = false;\r\n\r\n const func = (\r\n client: ApolloClient,\r\n request: IServerSideGetRowsRequest\r\n ): Promise => {\r\n if (options?.defaultSort && request.sortModel.length === 0) {\r\n // console.log(\"options.defaultSort:\", options.defaultSort)\r\n request.sortModel = options.defaultSort;\r\n }\r\n\r\n // const queryArguments = apolloArgumentsFromAgGrid(params.request, searchTerm);\r\n let queryArguments = apolloArgumentsCreator();\r\n\r\n queryArguments\r\n .setPagingFromAgGridStartEnd(request.startRow, request.endRow)\r\n .addAgGridSortModel(request.sortModel, colMapping)\r\n .addAgGridFilterModel(\r\n request.filterModel,\r\n colMapping,\r\n options?.filterMapping\r\n );\r\n\r\n if (options?.filter) {\r\n // console.log('options.filter', options.filter);\r\n queryArguments.addfilters(options.filter);\r\n }\r\n if (options?.search?.searchTerm) {\r\n queryArguments.addSearch(\r\n options.search.searchTerm,\r\n options.search.searchCols\r\n );\r\n }\r\n\r\n let variables = queryArguments.getArguments() as QueryVariableType;\r\n\r\n if (options && options.customArguments) {\r\n variables = { ...variables, ...options.customArguments };\r\n }\r\n\r\n // const skipTotalResult = options?.queryWithoutTotalResult && lastTotalResult >= 0 && equal(lastFilter, options.filter);\r\n // console.log('#### #### #### #### #### ####');\r\n // console.log('## Has QueryWithout TR: ' + (options?.queryWithoutTotalResult ? 'Yes' : 'No'));\r\n // console.log('## lastTotalResult: ' + lastTotalResult);\r\n // console.log('## filter are equal: ' + (equal(lastFilter, options?.filter) ? 'Yes' : 'No'), { lastFilter: lastFilter, newFilter: options?.filter });\r\n // console.log('## Query ' + (skipTotalResult ? 'WITHOUT' : 'WITH') + ' TotalResults');\r\n // console.log('#### #### #### #### #### ####');\r\n\r\n // const actualQuerry = skipTotalResult ? options?.queryWithoutTotalResult : QUERY;\r\n const actualQuerry = QUERY;\r\n // lastFilter = options?.filter;\r\n\r\n // if (watcher) {\r\n // watcher.unsubscribe();\r\n // }\r\n // if (watcherCallback) {\r\n // // console.log('## AgGrid - Add Watcher');\r\n // watcher = client.watchQuery({\r\n // query: actualQuerry,\r\n // variables: variables\r\n // }).subscribe({\r\n // next: watcherCallback\r\n // });\r\n // }\r\n markVarsQueriedByGrids(actualQuerry, variables);\r\n\r\n return client\r\n .query({\r\n query: actualQuerry,\r\n variables: variables,\r\n })\r\n .then((queryData: ApolloQueryResult) =>\r\n dataHandler(queryData.data)\r\n );\r\n // .then((data: ReturnType) => {\r\n // if (skipTotalResult) {\r\n // data.totalResults = lastTotalResult;\r\n // } else {\r\n // lastTotalResult = data.totalResults;\r\n // }\r\n\r\n // return data;\r\n // });\r\n };\r\n\r\n const unRegisterWatcher = () => {\r\n // console.log('## AgGrid - Unregister Watcher');\r\n if (watcher) {\r\n watcher.unsubscribe();\r\n }\r\n // watcherCallback = false;\r\n };\r\n\r\n const registerWatcher = (newCallback: () => void) => {\r\n // console.log('## AgGrid - Register Watcher');\r\n // watcherCallback = newCallback;\r\n return unRegisterWatcher;\r\n };\r\n\r\n return { doQueryData: func, onDataChangedFromOutside: registerWatcher };\r\n};\r\n\r\nexport const updateGridFromState = (\r\n api: { grid: GridApi; column: ColumnApi },\r\n gridState: AgGridState\r\n) => {\r\n //console.log('### STATE->GRID');\r\n if (\r\n gridState.columnStates &&\r\n !equal(gridState.columnStates, api.column.getColumnState())\r\n ) {\r\n //console.log('setColumnState', gridState.columnStates);\r\n api.column.setColumnState(gridState.columnStates);\r\n }\r\n\r\n if (!equal(gridState.filterModel, api.grid.getFilterModel())) {\r\n //console.log('setFilterModel', gridState.filterModel);\r\n api.grid.setFilterModel(gridState.filterModel);\r\n }\r\n\r\n if (!equal(gridState.sortModel, api.grid.getSortModel())) {\r\n //console.log('setSortModel', gridState.sortModel);\r\n api.grid.setSortModel(gridState.sortModel);\r\n }\r\n\r\n if (gridState.page !== api.grid.paginationGetCurrentPage()) {\r\n //console.log('paginationGoToPage', gridState.page);\r\n // ToDo: Fix this Workaround!!\r\n setTimeout(() => {\r\n api.grid.paginationGoToPage(gridState.page);\r\n }, 100);\r\n\r\n // if (gridState.page === api.grid.paginationGetTotalPages()) {\r\n // setTimeout(() => {\r\n // api.grid.paginationGoToPage(gridState.page);\r\n // }, 4000);\r\n }\r\n //console.log('### END UPDATE');\r\n};\r\n","import React, { Fragment } from \"react\";\r\nimport { DialogContent, Dialog, DialogActions, Button, CircularProgress } from \"@material-ui/core\"\r\nimport { Alert } from \"@material-ui/lab\"\r\nimport { Translate } from \"react-localize-redux\";\r\n\r\ninterface PageDialogProps {\r\n open: boolean\r\n title: string\r\n buttons: { title: string, click: () => void }[]\r\n error?: string\r\n loading?: boolean\r\n}\r\n\r\nconst PageDialog: React.FC = ({ open, title, buttons, error, loading }) => {\r\n\r\n return(\r\n \r\n \r\n \r\n {error ? {error} : }\r\n \r\n \r\n {loading ? : \r\n buttons.map((button, idx) => \r\n \r\n )}\r\n \r\n \r\n )\r\n}\r\nexport default PageDialog","import gql from \"graphql-tag\";\r\n\r\nexport const AUDIT_LOG = gql`\r\n mutation recordAuditLog( $auditLog: AuditLogInput!) {\r\n user {\r\n recordAudit(auditLog: $auditLog)\r\n }\r\n }\r\n`;","import React, { useState, useEffect } from \"react\";\r\n\r\nimport { AgGridReact, AgGridReactProps } from \"@ag-grid-community/react\";\r\nimport {\r\n AllEnterpriseModules,\r\n IServerSideDatasource,\r\n IServerSideGetRowsParams,\r\n GridApi,\r\n AgGridEvent,\r\n ColumnApi,\r\n ExcelExportParams,\r\n} from \"@ag-grid-enterprise/all-modules\";\r\nimport { ClientSideRowModelModule } from \"@ag-grid-community/client-side-row-model\";\r\n\r\nimport \"@ag-grid-community/all-modules/dist/styles/ag-grid.css\";\r\nimport \"@ag-grid-community/all-modules/dist/styles/ag-theme-balham.css\";\r\n\r\nimport equal from \"deep-equal\";\r\n\r\nimport { GridActionsType, State as AgGridState } from \"redux/types/AgGrid\";\r\n\r\nimport {\r\n defaultColDef,\r\n sideBar,\r\n factoryApolloConnector,\r\n updateGridFromState,\r\n} from \"util/AgGridUtils\";\r\nimport { SingleSortModel, FilterModel } from \"types/AgGrid\";\r\nimport { ApolloConsumer } from \"react-apollo\";\r\nimport ApolloClient from \"apollo-client\";\r\nimport { debounce } from \"debounce\";\r\nimport { ColumnState } from \"@ag-grid-community/core/dist/cjs/columnController/columnController\";\r\n\r\nimport { makeStyles, Theme, createStyles, Button } from \"@material-ui/core\";\r\nimport PageDialog from \"components/common/PageDialog\";\r\n\r\nimport ExpandMoreIcon from \"@material-ui/icons/ExpandMore\";\r\nimport { Alert, AlertTitle } from \"@material-ui/lab\";\r\n\r\nimport { Translate } from \"react-localize-redux\";\r\nimport { fallbackTo } from \"components/common/Localization\";\r\nimport { AUDIT_LOG } from \"commonQueries/recordAuditLog\";\r\nimport { useMutation } from \"@apollo/react-hooks\";\r\nimport {\r\n recordAuditLog,\r\n recordAuditLogVariables\r\n} from \"types/apolloGenerated/recordAuditLog\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) => {\r\n return createStyles({\r\n gridDefault: {\r\n position: \"relative\",\r\n height: \"100%\",\r\n display: \"flex\",\r\n flexFlow: \"column\",\r\n overflow: \"hidden\",\r\n \"& > *\": {\r\n flex: \"1 1 auto\",\r\n },\r\n \"& a\": {\r\n color: \"#005D8F\",\r\n },\r\n \"& > .grie-error\": {\r\n flex: \"0 1 auto\",\r\n },\r\n },\r\n\r\n exportToExcel: {\r\n position: \"absolute\",\r\n left: 0,\r\n bottom: \"5px\",\r\n background: \"none\",\r\n border: \"none\",\r\n padding: 0,\r\n color: \"#005D8F\", //\"#005D8F\", //\"#e6006b\",\r\n textDecoration: \"underline\",\r\n cursor: \"pointer\",\r\n },\r\n });\r\n});\r\n\r\ninterface ReduxGridPara extends AgGridReactProps {\r\n className?: string;\r\n excelExportParams?: ExcelExportParams | false;\r\n gridState: AgGridState;\r\n gridActions: GridActionsType;\r\n cellCallbackOnExport?: any;\r\n}\r\n\r\ninterface ApolloGridPara extends ReduxGridPara {\r\n apolloConnector: ReturnType;\r\n}\r\n\r\ninterface ApolloGridInternalPara extends ApolloGridPara {\r\n client: ApolloClient;\r\n}\r\n\r\ninterface GridLoadingError {\r\n short: string;\r\n long: string;\r\n showDetail: boolean;\r\n}\r\n\r\nconst getDataSource = (\r\n client: ApolloClient,\r\n apolloConnector: ReturnType,\r\n setGridLoadError: React.Dispatch<\r\n React.SetStateAction\r\n >,\r\n setLoading: (loading: boolean) => void\r\n): IServerSideDatasource => {\r\n return {\r\n getRows: (params: IServerSideGetRowsParams) => {\r\n setLoading(true);\r\n const errorHandler = function (loadingError: any) {\r\n console.error(\"ERROR (queryError): \", arguments);\r\n setGridLoadError({\r\n short: \"message.error.generic_loading_data\",\r\n long: JSON.stringify(loadingError),\r\n showDetail: false,\r\n });\r\n params.failCallback();\r\n };\r\n setGridLoadError(undefined);\r\n apolloConnector\r\n .doQueryData(client, params.request)\r\n .then((resultData: any) => {\r\n //console.log('resultData', resultData);\r\n if (!resultData) resultData = { results: [] };\r\n if (\"results\" in resultData) {\r\n let totalResults: number;\r\n if (!resultData.totalResults || resultData.totalResults < 0) {\r\n totalResults = resultData?.results?.length ?? 0;\r\n } else {\r\n totalResults = resultData.totalResults;\r\n }\r\n // console.log('totalResults / resultData', { totalResults, resultData });\r\n try {\r\n params.successCallback(resultData.results, totalResults);\r\n } catch (e) {\r\n console.error(\"Error whil ReRendering Grid with new Data.\", e);\r\n }\r\n } else {\r\n errorHandler(resultData);\r\n }\r\n })\r\n .catch(errorHandler)\r\n .finally(() => {\r\n setLoading(false);\r\n });\r\n },\r\n\r\n destroy: () => {},\r\n } as IServerSideDatasource;\r\n};\r\n\r\nconst isGridStateEqual = (api: GridApi, gridState: AgGridState): boolean =>\r\n gridState.page === api.paginationGetCurrentPage() &&\r\n equal(gridState.filterModel, api.getFilterModel()) &&\r\n equal(gridState.sortModel, api.getSortModel());\r\n\r\nconst debouncedSetGridState = debounce(\r\n (\r\n gridActions: GridActionsType,\r\n page: number,\r\n sortModel: SingleSortModel[],\r\n filterModel: FilterModel\r\n ) => {\r\n // console.log('Change Grid (DEBOUNCED). change STATE now! filterModel: ', filterModel);\r\n console.log(\"DEBOUNCED set grid state -> \", filterModel);\r\n gridActions.setGridState(page, sortModel, filterModel);\r\n },\r\n 500\r\n);\r\n\r\nconst debouncedSetColumnStates = debounce(\r\n (gridActions: GridActionsType, columnsStates: ColumnState[]) => {\r\n //console.log('Change Columns (DEBOUNCED). change STATE now!');\r\n gridActions.setColumnStates(columnsStates);\r\n },\r\n 500\r\n);\r\n\r\nconst getGridEventListener = (\r\n gridActions: GridActionsType,\r\n gridState: AgGridState\r\n) => {\r\n return (eventType: string, event: AgGridEvent) => {\r\n // console.log('GridEventListener - ' + eventType);\r\n\r\n if (\r\n eventType === \"columnMoved\" ||\r\n eventType === \"columnResized\" ||\r\n eventType === \"displayedColumnsChanged\"\r\n ) {\r\n debouncedSetColumnStates(gridActions, event.columnApi.getColumnState());\r\n }\r\n\r\n if (\r\n eventType === \"filterChanged\" ||\r\n eventType === \"sortChanged\" ||\r\n eventType === \"paginationChanged\"\r\n ) {\r\n if (!isGridStateEqual(event.api, gridState)) {\r\n console.log(\r\n \"Change Grid (\" + eventType + \"). Gonna change GRID-STATE\",\r\n {\r\n folterModel: gridState.filterModel,\r\n newFilter: event.api.getFilterModel(),\r\n }\r\n );\r\n debouncedSetGridState(\r\n gridActions,\r\n event.api.paginationGetCurrentPage(),\r\n event.api.getSortModel() as SingleSortModel[],\r\n event.api.getFilterModel() as FilterModel\r\n );\r\n }\r\n }\r\n };\r\n};\r\n\r\nexport const ReduxAgGrid: React.FC = ({\r\n gridState,\r\n gridActions,\r\n className,\r\n excelExportParams,\r\n ...props\r\n}) => {\r\n const classes = useStyles();\r\n\r\n const [api, setApi] = useState<\r\n { grid: GridApi; column: ColumnApi } | undefined\r\n >(undefined);\r\n\r\n const [recordLog] = useMutation(AUDIT_LOG, {})\r\n\r\n useEffect(() => {\r\n if (api) {\r\n updateGridFromState(api, gridState);\r\n const listener = getGridEventListener(gridActions, gridState);\r\n api.grid.addGlobalListener(listener);\r\n return () => {\r\n api.grid.removeGlobalListener(listener);\r\n };\r\n }\r\n }, [api, gridActions, gridState]);\r\n\r\n\r\n const excelExport = (api && excelExportParams !== false) ? (\r\n \r\n ) : null;\r\n\r\n return (\r\n
    \r\n \r\n setApi({ grid: event.api, column: event.columnApi })\r\n }\r\n {...props}\r\n />\r\n\r\n {excelExport}\r\n
    \r\n );\r\n};\r\n\r\nconst AgGrid: React.FC = ({\r\n client,\r\n apolloConnector,\r\n gridState,\r\n gridActions,\r\n className,\r\n cellCallbackOnExport,\r\n excelExportParams,\r\n ...props\r\n}) => {\r\n const classes = useStyles();\r\n\r\n const [api, setApi] = useState<\r\n { grid: GridApi; column: ColumnApi } | undefined\r\n >(undefined);\r\n const [gridLoadError, setGridLoadError] = useState<\r\n GridLoadingError | undefined\r\n >(undefined);\r\n const [isLoading, setLoading] = useState(false);\r\n const [open, setOpen] = React.useState(false);\r\n const [blockSize, setBlockSize] = useState(100);\r\n const [waitingToExport, setWaitingToExport] = useState(false);\r\n const [update, setUpdate] = useState(0);\r\n const maxResults = 4000;\r\n const [recordLog] = useMutation(AUDIT_LOG, {});\r\n\r\n useEffect(() => {\r\n if (api) {\r\n // console.log('Grid -> useEffect -- API / State Changed');\r\n updateGridFromState(api, gridState);\r\n const listener = getGridEventListener(gridActions, gridState);\r\n api.grid.addGlobalListener(listener);\r\n return () => {\r\n api.grid.removeGlobalListener(listener);\r\n };\r\n }\r\n }, [api, gridActions, gridState]);\r\n\r\n useEffect(() => {\r\n if (api) {\r\n // console.log('Grid -> useEffect -- SSD Changed');\r\n const unregister = apolloConnector.onDataChangedFromOutside(function () {\r\n // console.log('apolloConnector.onDataChangedFromOutside', arguments);\r\n if (!isLoading) {\r\n // api.grid.purgeServerSideCache();\r\n // } else {\r\n // console.log('apolloConnector.onDataChangedFromOutside - Is Loading, Ignore!');\r\n }\r\n });\r\n\r\n return () => {\r\n unregister();\r\n };\r\n }\r\n }, [api, apolloConnector, isLoading]);\r\n\r\n useEffect(() => {\r\n if (api) {\r\n api.grid.setServerSideDatasource(\r\n getDataSource(client, apolloConnector, setGridLoadError, setLoading)\r\n );\r\n }\r\n }, [api, apolloConnector, client, setGridLoadError]);\r\n\r\n interface cacheBlockState {\r\n blockNumber: number;\r\n startRow: number;\r\n endRow: number;\r\n pageStatus: string;\r\n }\r\n\r\n const checkAllDataLoaded = () => {\r\n const totalRows = api?.grid.getDisplayedRowCount() ?? 0;\r\n const cacheBlocks: cacheBlockState[] = Object.values(\r\n api?.grid.getCacheBlockState()\r\n );\r\n for (const block of cacheBlocks) {\r\n if (block.pageStatus === \"loaded\" && block.endRow >= totalRows) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n };\r\n\r\n const downloadAndExport = () => {\r\n setBlockSize(maxResults);\r\n setUpdate(update + 1);\r\n setWaitingToExport(true);\r\n };\r\n\r\n const excelExport =\r\n api && excelExportParams !== false ? (\r\n
    \r\n {\r\n if (api.grid.getDisplayedRowCount() < maxResults) {\r\n if (checkAllDataLoaded()) {\r\n api.grid.exportDataAsExcel({\r\n processCellCallback: cellCallbackOnExport,\r\n });\r\n recordLog({ variables: { auditLog: { interaction: \"ExcelExport\", detail: \"User exported to excel from grid contained at \" + window.location.pathname, pIILevel: 0 } } });\r\n } else {\r\n downloadAndExport();\r\n }\r\n } else {\r\n setOpen(true);\r\n }\r\n }}\r\n >\r\n \r\n \r\n {\r\n setOpen(false);\r\n downloadAndExport();\r\n },\r\n },\r\n { title: \"generics.cancel\", click: () => setOpen(false) },\r\n ]}\r\n />\r\n \r\n
    \r\n ) : null;\r\n\r\n const alert = gridLoadError ? (\r\n {\r\n setGridLoadError({\r\n ...gridLoadError,\r\n showDetail: !gridLoadError.showDetail,\r\n });\r\n }}\r\n >\r\n \r\n \r\n }\r\n >\r\n \r\n \r\n \r\n {gridLoadError.showDetail ? gridLoadError.long : \"\"}\r\n \r\n ) : undefined;\r\n\r\n //giving it a key block size will make the grid rerender on new fetch\r\n return (\r\n
    \r\n {alert}\r\n \r\n setApi({ grid: event.api, column: event.columnApi })\r\n }\r\n onPaginationChanged={(event) => {\r\n if (event.keepRenderedRows && waitingToExport) {\r\n if (api) {\r\n api.grid.exportDataAsExcel({\r\n processCellCallback: cellCallbackOnExport,\r\n });\r\n recordLog({ variables: { auditLog: { interaction: \"ExcelExport\", detail: \"User exported to excel from grid contained at \" + window.location.pathname, pIILevel: 0 } } });\r\n setBlockSize(100);\r\n setWaitingToExport(false);\r\n }\r\n }\r\n }}\r\n {...props}\r\n />\r\n {excelExport}\r\n
    \r\n );\r\n};\r\n\r\nconst ApolloGrid: React.FC = (props) => (\r\n \r\n {(client) => }\r\n \r\n);\r\n\r\nexport default ApolloGrid;\r\n","import gql from \"graphql-tag\";\r\n\r\nexport const GET_SENDGRID_USERS = gql`\r\n query getSendgridUsers {\r\n sendGridUsers {\r\n id\r\n name\r\n }\r\n }\r\n`;\r\n","import React from \"react\";\r\nimport {\r\n setGridState,\r\n setColumnStates,\r\n search,\r\n} from \"redux/actions/SendgridTemplatesOverviewActions\";\r\n\r\nimport gql from \"graphql-tag\";\r\nimport { useMutation, useQuery } from \"@apollo/react-hooks\";\r\n\r\nimport { withLocalize, LocalizeContextProps } from \"react-localize-redux\";\r\nimport { ClientSideRowModelModule } from \"@ag-grid-community/client-side-row-model\";\r\n\r\nimport { AllEnterpriseModules } from \"@ag-grid-enterprise/all-modules\";\r\nimport {\r\n ColDef,\r\n MenuItemDef,\r\n GetContextMenuItemsParams,\r\n} from \"@ag-grid-enterprise/all-modules\";\r\nimport { TranslateFunction } from \"react-localize-redux\";\r\n\r\nimport { sendgridGroupsGrid_sendGridTemplates_results } from \"types/apolloGenerated/sendgridGroupsGrid\";\r\n\r\nimport {\r\n updateSendgridTemplate,\r\n updateSendgridTemplateVariables,\r\n} from \"types/apolloGenerated/updateSendgridTemplate\";\r\nimport { State as gridState } from \"redux/types/PartnerOverview\";\r\n\r\nimport { sendgridGroups_sendGridTemplates_results } from \"types/apolloGenerated/sendgridGroups\";\r\nimport { Action as ResetAction } from \"redux/types/SendgridTemplatesDelete\";\r\nimport { UserInformation } from \"types/ToolboxEntities\";\r\nimport { open as deleteOpen } from \"redux/actions/SendgridTemplatesDeleteActions\";\r\nimport { open as createOpen } from \"redux/actions/SendgridTemplatesCreateActions\";\r\nimport { ReduxAgGrid } from \"components/common/Grid/AgGrid\";\r\nimport { makeStyles, createStyles, Theme } from \"@material-ui/core\";\r\nimport {\r\n getSendgridUsers,\r\n getSendgridUsers_sendGridUsers as SendGridUserIds,\r\n} from \"types/apolloGenerated/getSendgridUsers\";\r\nimport { sendGridSupportedLanguages } from \"types/apolloGenerated/sendGridSupportedLanguages\";\r\nimport { GET_SENDGRID_USERS } from \"commonQueries/sendgridIds\";\r\nimport { QUERY_SENDGRID_SUPPORTED_LANGUAGES } from \"commonQueries/sendgridSupportedLanguages\";\r\nimport { Fragment } from \"react\";\r\nimport CircularProgress from \"@material-ui/core/CircularProgress\";\r\n\r\ninterface TemplatesGridProps extends LocalizeContextProps {\r\n templates: (sendgridGroupsGrid_sendGridTemplates_results | null)[];\r\n state: gridState;\r\n actions: {\r\n setGridState: typeof setGridState;\r\n setColumnStates: typeof setColumnStates;\r\n search: typeof search;\r\n deleteOpen: typeof deleteOpen;\r\n createOpen: typeof createOpen;\r\n };\r\n}\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n customGrid: {\r\n height: \"100%\",\r\n display: \"flex\",\r\n overflow: \"hidden\",\r\n position: \"relative\",\r\n flexFlow: \"column\",\r\n \"& .ag-row-selected\": {\r\n backgroundColor: \"#f29083\",\r\n },\r\n },\r\n })\r\n);\r\n\r\nconst UPDATE_SENDGRID_TEMPLATE = gql`\r\n mutation updateSendgridTemplate(\r\n $templateId: Long!\r\n $templateName: String!\r\n $sendgridId: String!\r\n $sendGridUserId: Int!\r\n $isDefault: Boolean!\r\n $countryCode: Country\r\n $languageCode: Language\r\n $templateType: SendGridTemplateType\r\n ) {\r\n sendGridTemplate {\r\n update(\r\n sendGridTemplate: {\r\n id: $templateId\r\n name: $templateName\r\n sendGridUserId: $sendGridUserId\r\n sendGridId: $sendgridId\r\n isDefault: $isDefault\r\n countryCode: $countryCode\r\n languageCode: $languageCode\r\n type: $templateType\r\n }\r\n ) {\r\n name\r\n countryCode\r\n }\r\n }\r\n }\r\n`;\r\n\r\nconst defaultColDef = {\r\n resizable: true,\r\n sortable: true,\r\n filter: \"agTextColumnFilter\",\r\n editable: true,\r\n suppressHorizontalScroll: false,\r\n filterParams: {\r\n filterOptions: [\"contains\"],\r\n suppressAndOrCondition: true,\r\n },\r\n menuTabs: [\"filterMenuTab\"],\r\n};\r\n\r\nexport default withLocalize(\r\n ({ templates, state, actions, translate }: TemplatesGridProps) => {\r\n const classes = useStyles();\r\n const [updateSendgridTemplateFunc] = useMutation<\r\n updateSendgridTemplate,\r\n updateSendgridTemplateVariables\r\n >(UPDATE_SENDGRID_TEMPLATE);\r\n const { data: sendGridUserIds } = useQuery(\r\n GET_SENDGRID_USERS\r\n );\r\n const sgIds = sendGridUserIds?.sendGridUsers ?? [];\r\n const {\r\n data: supportedLanguages,\r\n loading: loadingLanguages,\r\n } = useQuery(\r\n QUERY_SENDGRID_SUPPORTED_LANGUAGES\r\n );\r\n const supLanguages = supportedLanguages?.sendGridSupportedLanguages ?? [];\r\n\r\n countries = supLanguages.map((language) => {\r\n const languageCode = language?.languageCode?.toLowerCase() ?? \"\";\r\n const countryCode = language?.countryCode?.toUpperCase() ?? \"\";\r\n if (countryCode === \"\") {\r\n return languageCode;\r\n } else {\r\n return languageCode + \"-\" + countryCode;\r\n }\r\n });\r\n\r\n const onRowEditingStoppedFunc = (params: any) => {\r\n if (params.newValue !== params.oldValue) {\r\n if (!(params.oldValue === null && params.newValue === \"\")) {\r\n //console.log(\"params changed\", params.data);\r\n params.data.languageCode = params.data.languageCode.toLowerCase();\r\n const templateRow = params.data;\r\n params.node.setSelected(false);\r\n if (\r\n templateRow.sendGridId &&\r\n templateRow.languageCode &&\r\n templateRow.sendGridUserId\r\n ) {\r\n updateSendgridTemplateFunc({\r\n variables: {\r\n templateId: templateRow.id,\r\n templateName: templateRow.name,\r\n sendgridId: templateRow.sendGridId,\r\n isDefault: templateRow.isDefault,\r\n sendGridUserId: templateRow.sendGridUserId,\r\n countryCode: templateRow.countryCode\r\n ? templateRow.countryCode.trim()\r\n : null,\r\n languageCode: templateRow.languageCode.toLowerCase(),\r\n templateType: templateRow.type\r\n ? templateRow.type\r\n : \"NOT_SPECIFIED\",\r\n },\r\n }).catch(() => {});\r\n } else {\r\n params.node.setSelected(true);\r\n }\r\n }\r\n }\r\n };\r\n\r\n return (\r\n \r\n {loadingLanguages ? (\r\n
    \r\n {\" \"}\r\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 getColumnDefs = (\r\n translate: TranslateFunction,\r\n sendGridUserIds: (SendGridUserIds | null)[]\r\n): ColDef[] => {\r\n const removeFilterSort = {\r\n sortable: false,\r\n filter: false,\r\n filterParams: {},\r\n menuTabs: [],\r\n };\r\n\r\n const columnDefs = [\r\n {\r\n headerName: translate(\"types.common.name\") as string,\r\n field: \"name\",\r\n rowGroup: true,\r\n width: 250,\r\n hide: true,\r\n },\r\n {\r\n field: \"languageCode\",\r\n aggFunc: \"combineVals\",\r\n width: 130,\r\n pinned: \"left\",\r\n cellRenderer: \"languageCellRenderer\",\r\n },\r\n {\r\n field: \"countryCode\",\r\n aggFunc: \"combineVals\",\r\n width: 130,\r\n pinned: \"left\",\r\n cellRenderer: \"countryCellRenderer\",\r\n },\r\n\r\n {\r\n headerName: translate(\"types.sendgrid.sendgridId\") as string,\r\n field: \"sendGridId\",\r\n width: 250,\r\n ...removeFilterSort,\r\n },\r\n {\r\n headerName: \"isDefault\",\r\n field: \"isDefault\",\r\n width: 90,\r\n cellRenderer: (params: any) => {\r\n let checkBox = ``;\r\n if (params.value !== undefined) {\r\n checkBox = ``;\r\n }\r\n return checkBox;\r\n },\r\n ...removeFilterSort,\r\n },\r\n {\r\n headerName: \"User\",\r\n field: \"sendGridUserId\",\r\n width: 150,\r\n cellRenderer: \"sendgridUserCellRenderer\",\r\n cellEditor: \"agRichSelectCellEditor\",\r\n cellRendererParams: {\r\n sgIds: sendGridUserIds,\r\n },\r\n cellEditorParams: {\r\n values: sendGridUserIds.map((sendgrid) => sendgrid?.id),\r\n cellRenderer: \"sendgridUserEditCellRenderer\",\r\n cellRendererParams: {\r\n sgIds: sendGridUserIds,\r\n },\r\n },\r\n editable: true,\r\n ...removeFilterSort,\r\n },\r\n {\r\n headerName: translate(\"types.sendgrid.type\") as string,\r\n field: \"type\",\r\n width: 200,\r\n ...removeFilterSort,\r\n },\r\n ];\r\n\r\n return columnDefs;\r\n};\r\n\r\nconst getContextMenuItems = (\r\n sendResetOpen: (user: UserInformation) => ResetAction,\r\n translate: TranslateFunction\r\n) => {\r\n return (params: GetContextMenuItemsParams): (string | MenuItemDef)[] => {\r\n let menuItems: (string | MenuItemDef)[] = [\r\n \"copy\",\r\n \"copyWithHeaders\",\r\n \"separator\",\r\n \"export\",\r\n ];\r\n\r\n if (params?.node?.data) {\r\n // console.log(rowData);\r\n menuItems = [\r\n ...getExpandedMenuItems(\r\n 123,\r\n params.node.data as sendgridGroups_sendGridTemplates_results,\r\n sendResetOpen,\r\n translate\r\n ),\r\n ...menuItems,\r\n ];\r\n }\r\n\r\n return menuItems;\r\n };\r\n};\r\n\r\nconst getExpandedMenuItems = (\r\n partnerId: number,\r\n rowData: sendgridGroups_sendGridTemplates_results,\r\n sendResetOpen: (user: UserInformation) => ResetAction,\r\n translate: TranslateFunction\r\n) => {\r\n return [\r\n {\r\n name: translate(\"pages.sendgrid.templatesGrid.deleteTemplate\") as string,\r\n action: () => {\r\n //console.log(\"change email and password\");\r\n //console.log(\"rowData\", rowData);\r\n sendResetOpen({\r\n id: rowData.id,\r\n } as UserInformation);\r\n },\r\n },\r\n \"separator\",\r\n ];\r\n};\r\n\r\nfunction combineValsFunc(nodes: any) {\r\n const flagsArr: string[] = [];\r\n\r\n for (let userObject of nodes) {\r\n if (userObject) flagsArr.push(userObject);\r\n }\r\n\r\n return flagsArr.length ? flagsArr : \"\";\r\n}\r\n\r\nexport var countries: string[] = [];\r\n\r\nfunction countryCellRenderer(params: any) {\r\n const languages: string[] = [];\r\n\r\n const languageVal = [];\r\n const countryVal = [];\r\n const isDefault = [];\r\n let fontStyle = \"\";\r\n\r\n for (let language of countries) {\r\n if (!languages.includes(language.substring(0, 2))) {\r\n languages.push(language.substring(0, 2));\r\n }\r\n }\r\n\r\n const cellParams = params.value;\r\n var flags =\r\n \"\" +\r\n params.value +\r\n \" (\" +\r\n params.node.allChildrenCount +\r\n \") \";\r\n\r\n if (params.value !== null) {\r\n if (Array.isArray(cellParams)) {\r\n for (let leafChild of params.node.allLeafChildren) {\r\n if (leafChild.data.countryCode) {\r\n countryVal.push(\r\n leafChild.data.languageCode + \"-\" + leafChild.data.countryCode\r\n );\r\n } else {\r\n countryVal.push(leafChild.data.languageCode);\r\n }\r\n }\r\n\r\n for (let userObject of countries) {\r\n flags += countryVal.includes(userObject)\r\n ? '' +\r\n userObject +\r\n \"\"\r\n : '' +\r\n userObject +\r\n \"\";\r\n }\r\n } else {\r\n if (params.node.allLeafChildren) {\r\n for (let leafChild of params.node.allLeafChildren) {\r\n if (leafChild.data.countryCode) {\r\n countryVal.push(\r\n leafChild.data.languageCode + \"-\" + leafChild.data.countryCode\r\n );\r\n if (leafChild.data.isDefault) {\r\n isDefault.push(\r\n leafChild.data.languageCode + \"-\" + leafChild.data.countryCode\r\n );\r\n }\r\n } else {\r\n //only languageCodes\r\n languageVal.push(leafChild.data.languageCode);\r\n if (leafChild.data.isDefault) {\r\n isDefault.push(leafChild.data.languageCode);\r\n }\r\n\r\n if (leafChild.data.languageCode === \"EN\") {\r\n countryVal.push(leafChild.data.languageCode);\r\n }\r\n }\r\n }\r\n\r\n if (countryVal.length > languageVal.length) {\r\n for (let countryObj of countries) {\r\n countryObj = countryObj.toUpperCase();\r\n isDefault.includes(countryObj)\r\n ? (fontStyle = \"bold\")\r\n : (fontStyle = \"normal\");\r\n flags += countryVal.includes(countryObj)\r\n ? '' +\r\n countryObj +\r\n \"\"\r\n : '' +\r\n countryObj +\r\n \"\";\r\n }\r\n } else {\r\n if (languageVal.length) {\r\n const handledLanguages: String[] = [];\r\n if (countryVal.length) {\r\n for (let countryObj of countryVal) {\r\n const languageObj = countryObj.substring(0, 2).toUpperCase();\r\n if (!languageVal.includes(languageObj))\r\n languageVal.push(languageObj);\r\n }\r\n }\r\n for (let languageObj of languages) {\r\n languageObj = languageObj.toUpperCase();\r\n isDefault.includes(languageObj)\r\n ? (fontStyle = \"bold\")\r\n : (fontStyle = \"normal\");\r\n flags +=\r\n languageVal.includes(languageObj) &&\r\n !handledLanguages.includes(languageObj)\r\n ? '' +\r\n languageObj +\r\n \"\"\r\n : '' +\r\n languageObj +\r\n \"\";\r\n }\r\n }\r\n }\r\n } else {\r\n flags = params.data.countryCode + \" \";\r\n }\r\n }\r\n } else {\r\n flags = \"\";\r\n }\r\n return flags;\r\n}\r\n\r\nfunction sendgridUserCellRenderer(params: any) {\r\n return (\r\n params.sgIds.find(\r\n (sendgrid: SendGridUserIds) => sendgrid?.id === params.value\r\n )?.name ?? \"\"\r\n );\r\n}\r\n\r\nfunction languageCellRenderer(params: any) {\r\n if (params.value === undefined || params.value.length === 0) {\r\n return \"\";\r\n } else {\r\n const cellParams = params.value; //.toUpperCase()\r\n\r\n var flags = \"\";\r\n\r\n if (Array.isArray(cellParams)) {\r\n //flags = params.eGridCell.nextElementSibling.innerHTML;\r\n //params.eGridCell.nextElementSibling.innerHTML = \"\";\r\n } else {\r\n flags = cellParams;\r\n }\r\n\r\n return flags;\r\n }\r\n}\r\n\r\nfunction sendgridUserEditCellRenderer(params: any) {\r\n return (\r\n params.sgIds.find(\r\n (sendgrid: SendGridUserIds) => sendgrid?.id === params.value\r\n )?.name ?? \"\"\r\n );\r\n}\r\n","import { ThunkAction, ThunkDispatch } from 'redux-thunk'\r\n\r\nimport { Error } from 'types/CampGuideTypes';\r\n\r\nimport { ActionType, ChangeData, Action } from 'redux/types/SendgridTemplatesCreate';\r\n\r\nimport GraphQL from 'util/GraphQL';\r\n\r\n\r\n\r\nexport const open = (template: string): Action => ({\r\n type: ActionType.OPEN,\r\n payload: {\r\n templateId: template\r\n }\r\n});\r\n\r\nexport const close = (): Action => ({\r\n type: ActionType.CLOSE,\r\n});\r\n\r\nexport const error = (error: Error): Action => ({\r\n type: ActionType.ERROR,\r\n payload: error\r\n});\r\n\r\nexport const loading = (): Action => ({\r\n type: ActionType.LOADING,\r\n});\r\n\r\n\r\n\r\nexport const change = (changeDate: ChangeData): ThunkAction, {}, {}, Action> => {\r\n return async (dispatch: ThunkDispatch<{}, {}, Action>): Promise => {\r\n\r\n dispatch(loading());\r\n GraphQL.sendPasswordResetEmail(changeDate.templateId).then((data: any) => {\r\n console.log('DATA', data);\r\n dispatch(close());\r\n }).catch((errorData: Error) => {\r\n console.log('ERROR', errorData);\r\n dispatch(error(errorData));\r\n });\r\n };\r\n};\r\n","import React, { useState, Fragment, useEffect } from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport { bindActionCreators, Dispatch } from \"redux\";\r\nimport { Translate } from \"react-localize-redux\";\r\n\r\nimport { TextField, Box, CircularProgress, Button } from \"@material-ui/core\";\r\nimport { createStyles, Theme, makeStyles } from \"@material-ui/core/styles\";\r\nimport EditLanguageDialog from \"./EditLanguageDialog\";\r\n\r\nimport \"@ag-grid-community/all-modules/dist/styles/ag-grid.css\";\r\nimport \"@ag-grid-community/all-modules/dist/styles/ag-theme-balham.css\";\r\n\r\nimport debounce from \"debounce\";\r\n\r\nimport { AppState } from \"redux/store\";\r\nimport { State as OrgOverviewState } from \"redux/types/SendgridTemplatesOverview\";\r\nimport {\r\n setGridState,\r\n setColumnStates,\r\n search,\r\n} from \"redux/actions/SendgridTemplatesOverviewActions\";\r\n\r\nimport { UserProfile } from \"types/ToolboxEntities\";\r\nimport PageHeader from \"components/common/PageHeader\";\r\nimport GridFilterHeader from \"components/common/Grid/GridFilterHeader\";\r\nimport TemplatesGrid from \"./TemplatesGrid\";\r\nimport gql from \"graphql-tag\";\r\nimport {\r\n sendgridGroups,\r\n sendgridGroupsVariables,\r\n} from \"types/apolloGenerated/sendgridGroups\";\r\nimport { open as createOpen } from \"redux/actions/SendgridTemplatesCreateActions\";\r\nimport { open as deleteOpen } from \"redux/actions/SendgridTemplatesDeleteActions\";\r\nimport { useLazyQuery } from \"react-apollo\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) => {\r\n return createStyles({\r\n partnerOverview: {\r\n display: \"flex\",\r\n flexFlow: \"column\",\r\n\r\n \"& > .gridFilterHeader\": {\r\n flex: \"0 1 auto\",\r\n },\r\n\r\n \"& > .innerContent\": {\r\n flex: \"1 1 100%\",\r\n height: \"100%\",\r\n },\r\n\r\n \"& .ag-body-viewport\": {\r\n overflowX: \"scroll\",\r\n },\r\n \"& .ag-full-width-row\": {\r\n width: \"auto!important\",\r\n },\r\n },\r\n\r\n innerHeader: {\r\n flex: \"0 1 auto\",\r\n display: \"flex\",\r\n margin: \"0 -20px 20px -20px\",\r\n alignItems: \"flex-end\",\r\n justifyContent: \"space-between\",\r\n\r\n \"& > *\": {\r\n flex: \"0 1 auto\",\r\n margin: \"0 20px\",\r\n minWidth: \"170px\",\r\n },\r\n\r\n \"& > .filter\": {\r\n flex: \"1 1 auto\",\r\n maxWidth: \"250px\",\r\n },\r\n },\r\n innerHeaderRight: {\r\n flex: \"0 1 auto\",\r\n display: \"flex\",\r\n alignItems: \"flex-end\",\r\n margin: 0,\r\n border: \"solid 2px grey20\",\r\n width: \"350px\",\r\n borderRadius: \"5px\",\r\n height: \"48px\",\r\n\r\n \"& > *\": {\r\n flex: \"0 1 auto\",\r\n margin: \"0 20px\",\r\n minWidth: \"170px\",\r\n },\r\n },\r\n });\r\n});\r\n\r\nconst filterList = [\r\n \"Activation_Product_BWTPerla\",\r\n \"Activation_Product_BWTPerla_Silk_Success\",\r\n \"Activation_Product_BWTPerla_Success\",\r\n \"Activation_Product_Cillit_Duo\",\r\n \"Activation_Product_Cillit_Duo_Success\",\r\n \"Activation_Product_PerlaSilk\",\r\n \"Notification_BWT_Perla_Error\",\r\n \"Notification_BWT_Perla_low_Tabs_Level\",\r\n \"Notification_BWT_Perla_AQA_Liter_triggered\",\r\n \"Notification_BWT_Perla_AQA_Stop_triggered\",\r\n \"Notification_BWT_Perla_AQA_Watch_triggered\",\r\n \"Notification_BWT_Perla_AQA_Stop_Wireless_triggered\",\r\n \"Notification_BWT_Perla_Routine_Maintenance\",\r\n \"Notification_BWT_Perla_Silk_Professional_Maintenance\",\r\n \"Notification_BWT_Perla_Silk_Warranty_Renewal\",\r\n \"Notification_BWT_Perla_Silk_Sanitation_Reminder\",\r\n \"Notification_BWT_Perla_Professional_Maintenance\",\r\n \"Notification_Cillit_Duo_AQA_Liter_triggered\",\r\n \"Notification_Cillit_Duo_AQA_Stop_triggered\",\r\n \"Notification_Cillit_Duo_AQA_Stop_Wireless_triggered\",\r\n \"Notification_Cillit_Duo_AQA_Watch_triggered\",\r\n \"Notification_Cillit_Duo_Error\",\r\n \"Notification_Cillit_Duo_low_Tabs_Level\",\r\n \"Notification_Cillit_Duo_Professional_Maintenance\",\r\n \"Notification_Cillit_Duo_Routine_Maintenance\",\r\n];\r\n\r\nexport const QUERY_SENDGRID_TEMPLATE_LIST = gql`\r\n query sendgridGroups(\r\n $page: Int\r\n $filter: [SendGridTemplateFilter]\r\n $sorting: [SortingCriterionForSendGridTemplateFilterOption]\r\n ) {\r\n sendGridTemplates(\r\n page: $page\r\n pageSize: 0\r\n filter: $filter\r\n sorting: $sorting\r\n ) {\r\n page\r\n pageSize\r\n totalResults\r\n results {\r\n id\r\n name\r\n languageCode\r\n countryCode\r\n sendGridId\r\n sendGridUserId\r\n type\r\n isDefault\r\n }\r\n }\r\n }\r\n`;\r\n\r\nconst debouncedSearch = debounce(\r\n (\r\n searchTerm: string,\r\n oldSearchTerm: string | null,\r\n searchAction: typeof search\r\n ) => {\r\n // console.log(searchTerm);\r\n if (searchTerm.length >= 3) {\r\n searchAction(searchTerm);\r\n } else if (\r\n searchTerm.length === 0 &&\r\n (oldSearchTerm === null || oldSearchTerm.length > 0)\r\n ) {\r\n searchAction(null);\r\n }\r\n },\r\n 500\r\n);\r\n\r\ninterface SendgridTemplatesListPara {\r\n user: UserProfile | null;\r\n templatesOverviewState: OrgOverviewState;\r\n actions: {\r\n setGridState: typeof setGridState;\r\n setColumnStates: typeof setColumnStates;\r\n createOpen: typeof createOpen;\r\n deleteOpen: typeof deleteOpen;\r\n search: typeof search;\r\n };\r\n}\r\n\r\nconst SendgridTemplateGroupList: React.FC = ({\r\n user,\r\n templatesOverviewState,\r\n actions,\r\n}) => {\r\n const classes = useStyles();\r\n\r\n const [search, setSearch] = useState(\r\n templatesOverviewState.search || \"\"\r\n );\r\n\r\n const [openLanguage, setOpenLanguage] = useState(false);\r\n\r\n const [getSendgridTemplates, { data: templatesData }] = useLazyQuery<\r\n sendgridGroups,\r\n sendgridGroupsVariables\r\n >(QUERY_SENDGRID_TEMPLATE_LIST, { fetchPolicy: \"network-only\" });\r\n\r\n useEffect(() => {\r\n console.log(\"USE EFFECTING!\");\r\n getSendgridTemplates();\r\n }, [getSendgridTemplates]);\r\n\r\n if (!user) {\r\n return null;\r\n }\r\n\r\n const changeSearch = (event: React.ChangeEvent) => {\r\n console.log(event.target.value);\r\n setSearch(event.target.value);\r\n debouncedSearch(\r\n event.target.value,\r\n templatesOverviewState.search,\r\n actions.search\r\n );\r\n };\r\n\r\n let sendgridTemplatesGrid = (\r\n
    \r\n \r\n
    \r\n );\r\n\r\n //Remove templates that are now handles by Phoenix\r\n const filteredTemplateData =\r\n templatesData?.sendGridTemplates?.results?.filter(\r\n (x) => !filterList.includes(x?.name ?? \"\")\r\n ) ?? [];\r\n\r\n if (filteredTemplateData.length) {\r\n sendgridTemplatesGrid = (\r\n \r\n );\r\n }\r\n\r\n return (\r\n \r\n {({ translate }) => (\r\n \r\n {\r\n actions.createOpen(\"opens\");\r\n }} /* onSettings={() => { history.push(\"TemplateGroupDetails/index\") }}*/\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n setOpenLanguage(false);\r\n getSendgridTemplates();\r\n }}\r\n />\r\n {sendgridTemplatesGrid}\r\n
    \r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nconst mapStateToProps = (appState: AppState) => ({\r\n user: appState.auth.user,\r\n templatesOverviewState: appState.sendgridTemplatesOverview,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch: Dispatch) => ({\r\n actions: bindActionCreators(\r\n { setGridState, setColumnStates, search, createOpen, deleteOpen },\r\n dispatch\r\n ),\r\n});\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(SendgridTemplateGroupList);\r\n","import React from 'react';\r\nimport { bindActionCreators, Dispatch } from 'redux';\r\nimport { connect } from 'react-redux';\r\n\r\nimport gql from \"graphql-tag\";\r\nimport { useMutation } from '@apollo/react-hooks';\r\n\r\nimport { Button, Dialog, DialogActions, DialogContent, DialogContentText, DialogTitle, CircularProgress } from '@material-ui/core';\r\n\r\nimport { AppState } from 'redux/store';\r\n\r\nimport { Store as SendgridTemplatesDeleteStore } from 'redux/types/SendgridTemplatesDelete';\r\nimport { close, change } from 'redux/actions/SendgridTemplatesDeleteActions';\r\nimport { deleteSendgridTemplate, deleteSendgridTemplateVariables } from 'types/apolloGenerated/deleteSendgridTemplate';\r\n\r\n\r\nimport { sendgridGroups } from 'types/apolloGenerated/sendgridGroups';\r\nimport { QUERY_SENDGRID_TEMPLATE_LIST } from 'Pages/Sendgrid/TemplateGroupsOverview/index';\r\n\r\nimport { Translate } from \"react-localize-redux\";\r\n\r\nimport Error from 'components/common/Error';\r\nimport cloneDeep from 'clone-deep';\r\n\r\n\r\ninterface ISendgridTemplatesDelete {\r\n deleteTemplate: SendgridTemplatesDeleteStore\r\n actions: {\r\n close: typeof close\r\n change: typeof change\r\n }\r\n}\r\n\r\n\r\nconst DELETE_SENDGRID_TEMPLATE = gql`\r\nmutation deleteSendgridTemplate(\r\n $templateId: Int!\r\n ){\r\n sendGridTemplate{\r\n delete(sendGridTemplateId:$templateId)\r\n }\r\n}\r\n`;\r\n\r\n\r\nconst SendgridTemplatesDelete: React.FC = ({ deleteTemplate, actions }) => {\r\n\r\n const [deleteSendgridTemplateFunc, { error }] = useMutation(DELETE_SENDGRID_TEMPLATE, {\r\n update(cache) {\r\n // \r\n // Update CACHE: Employees-Array within Organization\r\n //\r\n try {\r\n const variables = {\r\n id: deleteTemplate.changeData?.templateId\r\n };\r\n\r\n console.log(\"templateId: \", deleteTemplate.changeData?.templateId);\r\n\r\n const queryCache = cloneDeep(cache.readQuery({\r\n query: QUERY_SENDGRID_TEMPLATE_LIST,\r\n variables: variables,\r\n }));\r\n\r\n if (queryCache?.sendGridTemplates?.results) {\r\n\r\n queryCache.sendGridTemplates.results = queryCache.sendGridTemplates.results.filter((item, idx) => {\r\n return (item && item?.id !== deleteTemplate.changeData?.templateId);\r\n });\r\n\r\n cache.writeQuery({\r\n query: QUERY_SENDGRID_TEMPLATE_LIST,\r\n variables: variables,\r\n data: queryCache\r\n });\r\n } else {\r\n console.log('Trying to update CACHE, but emplyees not found');\r\n }\r\n } catch (e) { }\r\n\r\n\r\n\r\n if (!error) {\r\n actions.close();\r\n } else {\r\n console.log('Error', error);\r\n }\r\n }\r\n });\r\n\r\n\r\n const submit = () => {\r\n if (deleteTemplate.changeData) {\r\n actions.change(deleteTemplate.changeData);\r\n deleteSendgridTemplateFunc({\r\n variables: {\r\n templateId: parseFloat(deleteTemplate.changeData.templateId),\r\n }\r\n }).catch(() => { });\r\n\r\n }\r\n };\r\n\r\n\r\n\r\n\r\n const progress = deleteTemplate.isLocked ? : null;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {progress}\r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nconst mapStateToProps = (state: AppState) => ({\r\n deleteTemplate: state.sendgridTemplatesDelete,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch: Dispatch) => ({\r\n actions: bindActionCreators({ close, change }, dispatch)\r\n});\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(SendgridTemplatesDelete);\r\n","import React from 'react';\r\n\r\nimport { Select, FormControl, InputLabel, MenuItem } from '@material-ui/core';\r\n\r\nexport type valueLabel = {\r\n label: string\r\n value: string\r\n}\r\n\r\n\r\n\r\ninterface DropDownData {\r\n disabledMenuItem?: boolean\r\n isDisabled?: boolean\r\n selectedVal?: string\r\n className?: string\r\n valueList?: string[]\r\n valueLabelList?: valueLabel[]\r\n fieldName?: any\r\n name?: string\r\n onChangeFunc?: (value: any, name: string) => void\r\n variant?: 'standard' | 'outlined' | 'filled'\r\n noneValue?: boolean\r\n};\r\n\r\nexport const DropDown: React.FunctionComponent = (\r\n { selectedVal = '', isDisabled, disabledMenuItem, className, valueList = [], valueLabelList = [], fieldName = '', name = '', variant = 'standard', onChangeFunc = (evt) => { }, noneValue = true }\r\n) => {\r\n let selectedValExists = false;\r\n const [state, setState] = React.useState<{ value: string | number; name: string }>({\r\n value: selectedVal || '',\r\n name: name,\r\n });\r\n\r\n if (valueLabelList) {\r\n valueList.forEach(data => {\r\n valueLabelList.push({\r\n value: data,\r\n label: data,\r\n });\r\n });\r\n }\r\n\r\n const inputLabel = React.useRef(null);\r\n const [labelWidth, setLabelWidth] = React.useState(0);\r\n React.useEffect(() => {\r\n setLabelWidth(inputLabel.current!.offsetWidth);\r\n }, []);\r\n\r\n const handleChange = (propName: keyof typeof state) => (evt: React.ChangeEvent<{ value: unknown, name?: string }>) => {\r\n onChangeFunc(evt.target.value, name);\r\n setState({\r\n ...state,\r\n [propName]: evt.target.value,\r\n });\r\n };\r\n\r\n const selectValues: JSX.Element[] = [];\r\n\r\n if (noneValue) {\r\n selectValues.push(None);\r\n }\r\n\r\n valueLabelList.forEach(data => {\r\n if (data.value === selectedVal) {\r\n selectedValExists = true;\r\n }\r\n\r\n selectValues.push(\r\n {data.label}\r\n );\r\n });\r\n\r\n // if value wouldn't exist, select would be empty, so select 'none' if selected value is not found\r\n if (!selectedValExists && state.value !== '') {\r\n setState({\r\n ...state,\r\n value: '',\r\n });\r\n }\r\n\r\n return (\r\n \r\n \r\n {fieldName}\r\n \r\n \r\n {selectValues}\r\n \r\n \r\n )\r\n};\r\n\r\nexport default DropDown;","import React, { useEffect, useState, useCallback } from 'react';\r\nimport { bindActionCreators, Dispatch } from 'redux';\r\nimport { connect } from 'react-redux';\r\n\r\nimport gql from \"graphql-tag\";\r\nimport { useMutation, useQuery } from '@apollo/react-hooks';\r\nimport { makeStyles } from '@material-ui/core';\r\n\r\nimport DropDown from 'components/common/DropDown'\r\nimport { Button, Dialog, DialogActions, DialogContent, DialogTitle, CircularProgress, Grid, TextField, createStyles, Theme } from '@material-ui/core';\r\nimport ToggleButton from '@material-ui/lab/ToggleButton';\r\nimport ToggleButtonGroup from '@material-ui/lab/ToggleButtonGroup';\r\n\r\nimport { AppState } from 'redux/store';\r\n\r\nimport { Store as SendgridTemplatesCreateStore } from 'redux/types/SendgridTemplatesCreate';\r\nimport { close, change } from 'redux/actions/SendgridTemplatesCreateActions';\r\nimport { createSendgridTemplate, createSendgridTemplateVariables } from 'types/apolloGenerated/createSendgridTemplate';\r\n\r\nimport { countries as languageCountryCodes } from 'Pages/Sendgrid/TemplateGroupsOverview/TemplatesGrid';\r\n\r\nimport { QUERY_SENDGRID_TEMPLATE_LIST } from 'Pages/Sendgrid/TemplateGroupsOverview/index';\r\n\r\nimport { Translate } from \"react-localize-redux\";\r\n\r\nimport Error from 'components/common/Error';\r\nimport { SendGridTemplateType, Language, Country } from \"types/apolloGenerated/globalTypes\";\r\nimport { GET_SENDGRID_USERS } from \"commonQueries/sendgridIds\"\r\nimport { getSendgridUsers } from 'types/apolloGenerated/getSendgridUsers';\r\n\r\n\r\nimport cloneDeep from 'clone-deep';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n alignRight: {\r\n textAlign: \"right\",\r\n paddingTop: \"40px!important\"\r\n },\r\n toggleGroup: {\r\n \"& .Mui-selected, & .Mui-selected:hover\": {\r\n backgroundColor: \"#005D8F\",\r\n color: \"white\"\r\n },\r\n marginRight: \"10px\"\r\n },\r\n container: {\r\n width: \"100%\",\r\n marginBottom: \"50px\",\r\n \"& .MuiTextField-root, & .MuiFormControl-root\": {\r\n width: \"100%\",\r\n \"& .MuiInputLabel-outlined\": {\r\n transform: \"translate(14px, 15px) scale(1)\",\r\n fontSize: \"0.9rem\",\r\n },\r\n \"& .MuiInputLabel-outlined.MuiInputLabel-shrink\": {\r\n transform: \"translate(14px, -6px) scale(0.75)\",\r\n },\r\n },\r\n \"& .MuiGrid-item:nth-child(even)\": {\r\n paddingTop: \"25px\",\r\n paddingLeft: \"10px\"\r\n },\r\n \"& .MuiGrid-item:nth-child(odd)\": {\r\n paddingTop: \"25px\",\r\n paddingRight: \"10px\"\r\n },\r\n \"& .MuiGrid-grid-xs-12\": {\r\n paddingTop: \"0!important\"\r\n },\r\n \"& .MuiGrid-grid-xs-6 .MuiGrid-item:not(:first-child):not(:last-child)\": {\r\n padding: '0px 10px',\r\n }\r\n }\r\n }));\r\n\r\n\r\n\r\n\r\ninterface ISendgridTemplatesCreate {\r\n createTemplate: SendgridTemplatesCreateStore\r\n onChangeFunc?: (value: any, name: string) => void\r\n //data: sendgridGroupsGrid_sendGridTemplates_results\r\n actions: {\r\n close: typeof close\r\n change: typeof change\r\n }\r\n}\r\n\r\n\r\ninterface tempAddress {\r\n name: string,\r\n countryCode?: Country | null,\r\n languageCode: Language,\r\n sendGridId: string,\r\n sendGridUserId: number,\r\n sendGridUserName: string,\r\n templateType: SendGridTemplateType,\r\n isDefault: boolean\r\n}\r\n\r\n\r\nconst CREATE_SENDGRID_TEMPLATE = gql`\r\nmutation createSendgridTemplate(\r\n $name: String!, \r\n $sendGridId: String!, \r\n $isDefault: Boolean!, \r\n $countryCode: Country, \r\n $languageCode: Language!, \r\n $sendGridUserId: Int!,\r\n $templateType: SendGridTemplateType\r\n ){\r\n sendGridTemplate{\r\n create(sendGridTemplate:{\r\n name: $name,\r\n sendGridId: $sendGridId,\r\n isDefault: $isDefault,\r\n countryCode: $countryCode,\r\n sendGridUserId: $sendGridUserId,\r\n languageCode: $languageCode,\r\n type: $templateType\r\n }){\r\n id\r\n }\r\n }\r\n}\r\n`;\r\n\r\nconst defaultValues: tempAddress = {\r\n name: \"\",\r\n languageCode: Language.EN,\r\n sendGridId: \"\",\r\n sendGridUserId: 0,\r\n sendGridUserName: \"\",\r\n templateType: SendGridTemplateType.NOT_SPECIFIED,\r\n isDefault: false\r\n};\r\n\r\n\r\n\r\nconst SendgridTemplatesCreate: React.FC = ({ createTemplate, actions }) => {\r\n let classes = useStyles();\r\n // const [createSendgridTemplate, { loading: createTemplateLoading, error }] = useMutation(CREATE_SENDGRID_TEMPLATE);\r\n\r\n const { data: sendGridUserIds } = useQuery(GET_SENDGRID_USERS);\r\n const sgIds = sendGridUserIds?.sendGridUsers ?? []\r\n const [templateData, setTemplateData] = useState(defaultValues);\r\n const [isDefault, setChangedIsDefault] = React.useState(\"\");\r\n const [error, setError] = useState(\"\");\r\n\r\n\r\n let variant: 'standard' | 'outlined' | 'filled' = 'standard';\r\n\r\n let newTemplateId = \"\";\r\n\r\n const [createSendgridTemplateFunc, { loading: createTemplateLoading }] = useMutation(CREATE_SENDGRID_TEMPLATE, {\r\n\r\n onCompleted: data => {\r\n newTemplateId = data?.sendGridTemplate?.create?.id;\r\n console.log(\"define templateId: \", newTemplateId);\r\n\r\n actions.close();\r\n },\r\n refetchQueries: [{\r\n query: QUERY_SENDGRID_TEMPLATE_LIST\r\n }],\r\n onError: (error) => {\r\n setError(error.message);\r\n }\r\n });\r\n\r\n const submit = useCallback(() => {\r\n setError(\"\");\r\n if (templateData && templateData.name && templateData.languageCode) {\r\n createSendgridTemplateFunc({\r\n variables: {\r\n name: templateData.name,\r\n sendGridId: templateData.sendGridId,\r\n isDefault: templateData.isDefault,\r\n countryCode: templateData.countryCode,\r\n sendGridUserId: templateData.sendGridUserId,\r\n languageCode: templateData.languageCode,\r\n templateType: templateData.templateType\r\n },\r\n\r\n }).catch((e) => {\r\n console.log('Error while adding Employee: ', e);\r\n });\r\n }\r\n }, [createSendgridTemplateFunc, templateData]);\r\n\r\n\r\n\r\n const close = () => {\r\n setTemplateData(defaultValues);\r\n actions.close();\r\n };\r\n\r\n\r\n const handleAlignment = (event: React.MouseEvent, newAlignment: string) => {\r\n onChangeFunc(newAlignment, \"isDefault\")\r\n setChangedIsDefault(newAlignment === \"true\" ? \"true\" : \"false\");\r\n };\r\n\r\n\r\n const children = [\r\n \r\n False\r\n ,\r\n \r\n True\r\n ,\r\n ];\r\n\r\n const countries: string[] = [];\r\n const [countryState, setCountryState] = React.useState();\r\n\r\n useEffect(() => {\r\n setCountryState([\"GB\"]);\r\n }, []);\r\n\r\n\r\n const onChangeFunc = (value: any, name?: string) => {\r\n\r\n const tempAddress = cloneDeep(templateData);\r\n\r\n switch (name) {\r\n case \"sendgridId\":\r\n tempAddress.sendGridId = value.replace(/\\s/g, '');\r\n break;\r\n case \"sendgridUser\":\r\n //tempAddress.sendgridUser = value;\r\n \r\n tempAddress.sendGridUserId = sgIds.find(sendgrid => sendgrid?.name === value)?.id ?? -1\r\n tempAddress.sendGridUserName = value;\r\n break;\r\n case \"templateName\":\r\n tempAddress.name = value.replace(/\\s/g, '');\r\n break;\r\n case \"templateType\":\r\n tempAddress.templateType = value;\r\n break;\r\n case \"languageCode\":\r\n tempAddress.languageCode = value;\r\n tempAddress.countryCode = null;\r\n\r\n for (let language of languageCountryCodes) {\r\n if (language.substring(0, 2) === value) {\r\n countries.push(language.substring(3, 5));\r\n }\r\n }\r\n setCountryState(countries);\r\n console.log(\"countries\", countries);\r\n break;\r\n case \"countryCode\":\r\n tempAddress.countryCode = value;\r\n break;\r\n case \"isDefault\":\r\n tempAddress.isDefault = value === \"true\" ? true : false;\r\n break;\r\n default:\r\n\r\n break;\r\n }\r\n\r\n if (tempAddress) {\r\n setTemplateData(tempAddress);\r\n }\r\n\r\n };\r\n\r\n const progress = createTemplateLoading ? : null;\r\n\r\n const languages: string[] = [];\r\n\r\n for (let language of languageCountryCodes) {\r\n if (!languages.includes(language.substring(0, 2))) {\r\n languages.push(language.substring(0, 2));\r\n }\r\n }\r\n\r\n\r\n //const sendgridUsers = ['Bwt.Main', 'bwt.italy', 'bwt.denmark', 'bwt.norway', 'bwt.hungary', 'bwt.poland'];\r\n const sendGridUserNames = sgIds.map((sendgrid) => sendgrid?.name ?? \"\") ?? [];\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 { onChangeFunc(evt.target.value, evt.target.name) }}\r\n />\r\n \r\n \r\n { onChangeFunc(value, name) }}\r\n />\r\n \r\n \r\n \r\n \r\n { onChangeFunc(evt.target.value, evt.target.name) }}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Is Default:\r\n \r\n \r\n {children}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {progress}\r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nconst mapStateToProps = (state: AppState) => ({\r\n createTemplate: state.sendgridTemplatesCreate,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch: Dispatch) => ({\r\n actions: bindActionCreators({ close, change }, dispatch)\r\n});\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(SendgridTemplatesCreate);\r\n","import * as React from \"react\";\r\n\r\nconst SvgComponent = (props: React.SVGProps) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n);\r\n\r\nexport default SvgComponent;\r\n","import { createStyles, Theme, makeStyles } from \"@material-ui/core/styles\";\r\nimport PhoenixWarningIcon from \"components/PhoenixWarningIcon\";\r\nimport React from \"react\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) => {\r\n return createStyles({\r\n phoenixBanner: {\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n maxWidth: \"100%\",\r\n height: \"auto\",\r\n backgroundColor: \"#f4c600\",\r\n color: \"white\",\r\n padding: \"14px 20px 17px 20px\",\r\n },\r\n warningIcon: { marginRight: \"30px\" },\r\n warningText: { height: \"auto\", display: \"flex\" },\r\n showMoreText: {\r\n color: \"white\",\r\n \"&:hover\": { cursor: \"pointer\" },\r\n marginLeft: \"5px\",\r\n },\r\n });\r\n});\r\n\r\nexport default function PhoenixWarningBanner({\r\n findOutMoreOnClick,\r\n}: {\r\n findOutMoreOnClick: () => void;\r\n}) {\r\n const styles = useStyles();\r\n\r\n return (\r\n
    \r\n \r\n
    \r\n We’re updating CAMP to Globestage.\r\n \r\n \r\n
    \r\n Find out more{\" \"}\r\n
    \r\n
    \r\n
    {\" \"}\r\n
    \r\n
    \r\n );\r\n}\r\n","import {\r\n Button,\r\n DialogContent,\r\n Dialog,\r\n DialogTitle,\r\n DialogContentText,\r\n makeStyles,\r\n} from \"@material-ui/core\";\r\nimport React from \"react\";\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n banner: {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n flexDirection: \"column\",\r\n },\r\n okButton: {\r\n margin: \"17px 0 36px 0\",\r\n width: \"205px\",\r\n height: \"43px\",\r\n backgroundColor: \"#6386A4\",\r\n color: \"white\",\r\n \"&:hover\": {\r\n backgroundColor: \"#6386A4\",\r\n filter: \"brightness(0.95)\",\r\n },\r\n },\r\n}));\r\n\r\nexport default function PhoenixWarningDialog({\r\n open,\r\n onClose,\r\n}: {\r\n open: boolean;\r\n onClose: () => void;\r\n}) {\r\n const styles = useStyles();\r\n\r\n return (\r\n \r\n \r\n
    \r\n \r\n CAMP UPDATE\r\n \r\n \r\n We are currently replacing CAMP with globestage. Features that are still in CAMP: \r\n
      \r\n
    • \r\n Non IOT product user actions\r\n
    • \r\n
    • \r\n Manage Access to Perla Updater for Users\r\n
    • \r\n
    \r\n The rest of the features are already available in globestage. To request accesses, further training & for further questions, please contact Sandra Messer,\r\n {\" \"}\r\n \r\n sandra.messer@aidu.solutions\r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n );\r\n}\r\n","import { ThunkAction, ThunkDispatch } from 'redux-thunk'\r\n\r\nimport { Error } from 'types/CampGuideTypes';\r\n\r\nimport { ActionType, ChangeData, Action } from 'redux/types/AccountShortcuts/DeleteAccount';\r\n\r\nimport * as Types from 'types/ToolboxEntities';\r\n\r\nimport GraphQL from 'util/GraphQL';\r\n\r\n\r\nexport const open = (user: Types.UserInformation): Action => ({\r\n type: ActionType.OPEN,\r\n payload: {\r\n userId: user.id\r\n }\r\n});\r\n\r\nexport const close = (): Action => ({\r\n type: ActionType.CLOSE,\r\n});\r\n\r\nexport const error = (error: Error): Action => ({\r\n type: ActionType.ERROR,\r\n payload: error\r\n});\r\n\r\nexport const loading = (): Action => ({\r\n type: ActionType.LOADING,\r\n});\r\n\r\n\r\n\r\nexport const change = (changeDate: ChangeData, onSuccess: () => void): ThunkAction, {}, {}, Action> => {\r\n return async (dispatch: ThunkDispatch<{}, {}, Action>): Promise => {\r\n dispatch(loading());\r\n GraphQL.deleteAccount(changeDate.userId).then((data: boolean) => {\r\n dispatch(close());\r\n if (data) {\r\n dispatch(onSuccess);\r\n }\r\n }).catch((errorData: Error) => {\r\n dispatch(error(errorData));\r\n });\r\n };\r\n};\r\n","import React from \"react\";\r\nimport { bindActionCreators, Dispatch } from \"redux\";\r\nimport { connect } from \"react-redux\";\r\n\r\nimport {\r\n Button,\r\n Dialog,\r\n DialogActions,\r\n DialogContent,\r\n DialogContentText,\r\n DialogTitle,\r\n CircularProgress,\r\n} from \"@material-ui/core\";\r\n\r\nimport { AppState } from \"redux/store\";\r\n\r\nimport { Store as DeleteAccountStore } from \"redux/types/AccountShortcuts/DeleteAccount\";\r\nimport {\r\n close,\r\n change,\r\n} from \"redux/actions/AccountShortcuts/DeleteAccountActions\";\r\n\r\nimport { Translate } from \"react-localize-redux\";\r\n\r\nimport Error from \"components/common/Error\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { useApolloClient } from \"react-apollo\";\r\n\r\ninterface IDeleteAccount {\r\n deleteAccount: DeleteAccountStore;\r\n actions: {\r\n close: typeof close;\r\n change: typeof change;\r\n };\r\n}\r\n\r\nconst DeleteAccount: React.FC = ({\r\n deleteAccount,\r\n actions,\r\n}) => {\r\n const { goBack } = useHistory();\r\n const client = useApolloClient();\r\n\r\n const onSuccess = () => {\r\n goBack();\r\n client.resetStore();\r\n };\r\n\r\n const submit = () => {\r\n if (deleteAccount.changeData) {\r\n actions.change(deleteAccount.changeData, onSuccess);\r\n }\r\n };\r\n\r\n const progress = deleteAccount.isLocked ? (\r\n \r\n ) : null;\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 {progress}\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: AppState) => ({\r\n deleteAccount: state.accountShortcuts.deleteAccount,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch: Dispatch) => ({\r\n actions: bindActionCreators({ close, change }, dispatch),\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(DeleteAccount);\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { bindActionCreators, Dispatch } from \"redux\";\r\nimport { connect } from \"react-redux\";\r\nimport { NavLink } from \"react-router-dom\";\r\n\r\nimport {\r\n Typography,\r\n Drawer,\r\n AppBar,\r\n Toolbar,\r\n CssBaseline,\r\n} from \"@material-ui/core\";\r\nimport { createStyles, Theme, makeStyles } from \"@material-ui/core/styles\";\r\n\r\nimport ProfileMenu from \"components/common/ProfileMenu\";\r\n// import LanguageMenu from 'components/common/LanguageMenu';\r\n\r\nimport store, { AppState } from \"redux/store\";\r\n\r\nimport NavigationList from \"components/common/Navigation\";\r\nimport {\r\n DrawerState,\r\n closeDrawer,\r\n openDrawer,\r\n toggleDrawer,\r\n} from \"redux/actions/appShellActions\";\r\n\r\nimport logo from \"resources/logo-inverted.svg\";\r\nimport { Translate } from \"react-localize-redux\";\r\nimport ChangeActive from \"./AccShortcuts/ChangeActive\";\r\n\r\nimport RequestLog from \"./DeviceActions/RequestLog\";\r\nimport ResetActivation from \"./DeviceActions/ResetActivation\";\r\nimport SetOutOfService from \"./DeviceActions/SetOutOfService\";\r\nimport ResetInstaller from \"./DeviceActions/ResetInstaller\";\r\n\r\nimport ChangeOrganizationActiveState from \"./ChangeOrganisationActiveState\";\r\nimport ChangeLogin from \"./AccShortcuts/ChangeLogin\";\r\n\r\nimport SendPasswordResetEmail from \"./AccShortcuts/SendPasswordResetEmail\";\r\nimport ChangePosition from \"./AccShortcuts/ChangePosition\";\r\nimport RemoveFromCompany from \"./AccShortcuts/RemoveFromCompany\";\r\n\r\nimport SendgridTemplatesDelete from \"./SendgridTemplatesDelete\";\r\nimport SendgridTemplatesCreate from \"./SendgridTemplatesCreate\";\r\nimport PhoenixWarningBanner from \"./PhoenixWarningBanner\";\r\nimport PhoenixWarningDialog from \"./PhoenixWarningDialog\";\r\nimport DeleteAccount from \"./AccShortcuts/DeleteAccount\";\r\n\r\nconst drawerWidth = 250;\r\n\r\nconst useStyles = makeStyles((theme: Theme) => {\r\n return createStyles({\r\n app: {\r\n display: \"flex\",\r\n height: \"100vh\",\r\n minWidth: \"1300px\",\r\n },\r\n appBar: {\r\n zIndex: theme.zIndex.drawer + 1,\r\n },\r\n drawer: {\r\n width: drawerWidth,\r\n flexShrink: 0,\r\n height: \"100%\",\r\n },\r\n logo: {\r\n width: drawerWidth - 2 * theme.spacing(3),\r\n marginRight: 2 * theme.spacing(3),\r\n },\r\n logoImage: {\r\n maxWidth: \"100%\",\r\n maxHeight: \"50px\",\r\n display: \"block\",\r\n },\r\n drawerPaper: {\r\n width: drawerWidth,\r\n },\r\n toolbar: {\r\n ...theme.mixins.toolbar,\r\n marginTop: \"64px\",\r\n },\r\n contentWrapper: {\r\n flexGrow: 1,\r\n height: \"100vh\",\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n\r\n \"& > .mainContentContainer\": {\r\n overflowY: \"auto\",\r\n padding: theme.spacing(3),\r\n },\r\n \"& > .mainContentContainer.fullHeight\": {\r\n height: \"calc(100vh - 64px)\",\r\n },\r\n \"& > .pageHeader + .mainContentContainer.fullHeight\": {\r\n height: \"calc(100vh - 128px)\",\r\n overflowY: \"auto\",\r\n },\r\n },\r\n title: {\r\n flexGrow: 1,\r\n },\r\n appVersion: {\r\n position: \"fixed\",\r\n left: 0,\r\n bottom: 0,\r\n fontSize: \"0.7em\",\r\n background: \"white\",\r\n width: drawerWidth,\r\n },\r\n });\r\n});\r\n\r\ninterface IAppShellProps {\r\n actions: {\r\n openDrawer: () => void;\r\n closeDrawer: () => void;\r\n toggleDrawer: () => void;\r\n };\r\n appShell: DrawerState;\r\n}\r\n\r\nconst AppShell: React.FC = ({ children }) => {\r\n const classes = useStyles();\r\n\r\n const [showLogin, setShowLogin] = useState(true);\r\n const [warningDialogOpen, setWarningDialogOpen] = useState(false);\r\n\r\n\r\n useEffect(() => {\r\n if(store.getState().auth.user && showLogin) {\r\n setWarningDialogOpen(true);\r\n setShowLogin(false);\r\n\r\n }\r\n }, [store.getState().auth.user, showLogin]) \r\n\r\n return (\r\n
    \r\n \r\n\r\n \r\n \r\n \r\n \"logo\"\r\n \r\n \r\n C.A.M.P Guide\r\n \r\n {/* */}\r\n \r\n \r\n setWarningDialogOpen(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 \r\n
    \r\n \r\n {process.env.REACT_APP_VERSION} - \r\n \r\n {process.env.REACT_APP_COMMIT}
    \r\n
    \r\n \r\n\r\n
    \r\n
    \r\n {children}\r\n
    \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n setWarningDialogOpen(false)}\r\n />\r\n \r\n
    \r\n );\r\n};\r\n\r\nconst mapStateToProps = (state: AppState) => ({\r\n appShell: state.appShell,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch: Dispatch) => ({\r\n actions: bindActionCreators(\r\n { openDrawer, closeDrawer, toggleDrawer },\r\n dispatch\r\n ),\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(AppShell);\r\n","import React, { Fragment } from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport { Translate } from \"react-localize-redux\";\r\n\r\nimport { createStyles, Theme, makeStyles } from \"@material-ui/core/styles\";\r\nimport Card from \"@material-ui/core/Card\";\r\n\r\nimport { AppState } from \"redux/store\";\r\nimport campManfred from \"resources/camp-manfred_v2.jpg\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) => {\r\n return createStyles({\r\n card: {\r\n zIndex: 100,\r\n margin: \"250px auto\",\r\n textAlign: \"center\",\r\n padding: 20,\r\n },\r\n content: {\r\n padding: theme.spacing(3),\r\n },\r\n heroImage: {\r\n position: \"absolute\",\r\n top: 0,\r\n left: 0,\r\n maxWidth: \"100%\",\r\n },\r\n });\r\n});\r\n\r\nconst HomePage: React.FC<{\r\n hasUnauthorisedLogin: boolean;\r\n authHasExpired: boolean;\r\n}> = ({ hasUnauthorisedLogin, authHasExpired }) => {\r\n const styles = useStyles();\r\n\r\n return (\r\n \r\n {hasUnauthorisedLogin && (\r\n \r\n \r\n \r\n )}\r\n {authHasExpired && (\r\n \r\n \r\n \r\n )}\r\n \"heroImage\"\r\n \r\n );\r\n};\r\n\r\nexport default connect((state: AppState) => ({\r\n hasUnauthorisedLogin: state.auth.hasUnauthorisedLogin,\r\n authHasExpired: state.auth.authHasExpired,\r\n}))(HomePage);\r\n","import React from 'react';\r\nimport { connect } from 'react-redux';\r\n\r\nimport { Route, RouteProps, Redirect } from 'react-router-dom';\r\n\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\n\r\nimport { AppState } from 'redux/store';\r\n\r\nimport { ability } from 'util/ability';\r\n\r\nimport AppShell from 'components/common/AppShell';\r\nimport { AuthStore } from 'redux/types/Auth';\r\n\r\nimport HomePage from 'Pages/Home'\r\nimport { makeStyles, Theme, createStyles } from '@material-ui/core';\r\n\r\nconst useStyles = makeStyles((theme: Theme) => {\r\n return createStyles({\r\n content: {\r\n padding: theme.spacing(3),\r\n },\r\n })\r\n});\r\n\r\n\r\nexport const AppRoute: React.FC = ({ component: Component, ...params }) => {\r\n if (!Component) throw new Error('Component can not be null or undefined!');\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\nexport interface AccessAppRouteProps extends RouteProps {\r\n can?: {\r\n i: string,\r\n a: string,\r\n redirect?: string\r\n },\r\n auth: AuthStore\r\n}\r\n\r\nconst AccessAppRoute: React.FC = ({ component, can, auth, ...params }) => {\r\n const contentClass = useStyles().content;\r\n if (can && ability.cannot(can.i, can.a)) {\r\n if (auth.isLoading) {\r\n const tmpComp: React.FC = () => (\r\n
    \r\n \r\n
    \r\n );\r\n return ;\r\n }\r\n if (can.redirect) {\r\n return ;\r\n }\r\n return ;\r\n }\r\n return ;\r\n}\r\n\r\n\r\n\r\nconst mapStateToProps = (state: AppState) => ({\r\n auth: state.auth,\r\n});\r\n\r\nexport default connect(\r\n mapStateToProps\r\n)(AccessAppRoute);\r\n","import React from 'react';\r\nimport { createStyles, Theme, makeStyles } from '@material-ui/core/styles';\r\n\r\nconst useStyles = makeStyles((theme: Theme) => {\r\n return createStyles({\r\n content: {\r\n padding: theme.spacing(3),\r\n },\r\n })\r\n});\r\n\r\nconst PageNotFound = () =>

    404 - Diese Seite exisitiert nicht

    ;\r\n\r\nexport default PageNotFound;\r\n","import { ActionType, SearchAction } from 'redux/types/ProductOverview';\r\n\r\nimport AgGridActionHelper from 'redux/actions/AgGridActionHelper';\r\n\r\n\r\nexport const { setGridState, setColumnStates } = AgGridActionHelper(ActionType.GRID);\r\n\r\nexport const search = (searchTerm: string | null): SearchAction => ({\r\n type: ActionType.SEARCH,\r\n payload: searchTerm\r\n});\r\n","const CampUtils = {\r\n getEnumAsArray: (enumType: object): string[] => {\r\n const retArray = [];\r\n //console.log('getEnumAsArray: ', enumType);\r\n\r\n for (var n in enumType) {\r\n //if (typeof enumType[n] === 'number') {\r\n retArray.push(n);\r\n //}\r\n }\r\n\r\n return retArray;\r\n },\r\n};\r\nexport default CampUtils;\r\n\r\n\r\ninterface CancelablePromise extends Promise {\r\n doCancel: () => void\r\n then: (onfulfilled?: ((value: T) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => CancelablePromise\r\n catch: (onrejected?: ((reason: any) => TResult | PromiseLike) | undefined | null) => CancelablePromise\r\n finally: (onfinally?: (() => void) | undefined | null) => CancelablePromise\r\n}\r\n\r\n// https://reactjs.org/blog/2015/12/16/ismounted-antipattern.html\r\n// export const makeCancelable = (promise: Promise): CancelablePromise => {\r\n// let hasCanceled_ = false;\r\n\r\n// const wrappedPromise: any = new Promise((resolve, reject) => {\r\n// promise.then(\r\n// val => hasCanceled_ ? reject({ isCanceled: true }) : resolve(val),\r\n// error => hasCanceled_ ? reject({ isCanceled: true }) : reject(error)\r\n// );\r\n// });\r\n\r\n// wrappedPromise.cancel = () => {\r\n// hasCanceled_ = true;\r\n// return wrappedPromise;\r\n// }\r\n\r\n// return wrappedPromise;\r\n// };\r\n\r\n\r\n\r\nexport const cancelablePromise = ([execotor]: ConstructorParameters): CancelablePromise => {\r\n let hasCanceled_ = false;\r\n\r\n const innerPromise = new Promise((resolve, reject) => {\r\n execotor(\r\n (val) => { !hasCanceled_ && resolve(val as T); },\r\n (error: any) => { !hasCanceled_ && reject(error) }\r\n );\r\n });\r\n\r\n\r\n const cancelablePromise = {\r\n doCancel: () => { hasCanceled_ = true; },\r\n then: (func: any) => { innerPromise.then(func); return cancelablePromise; },\r\n catch: (func: any) => { innerPromise.catch(func); return cancelablePromise; },\r\n finally: (func: any) => { innerPromise.finally(func); return cancelablePromise; },\r\n [Symbol.toStringTag]: Object.prototype.toString.call(innerPromise)\r\n }\r\n\r\n // console.log('cancelablePromise', cancelablePromise);\r\n\r\n return cancelablePromise;\r\n};\r\n\r\n\r\n\r\n\r\ntype sparseArray = (T | null | undefined)[]\r\n\r\nexport const filterSparseArray = function (toFilter: sparseArray | null | undefined, strict: boolean = false): T[] {\r\n if (!toFilter) {\r\n return [];\r\n }\r\n if (strict) {\r\n return toFilter.filter((item) => {\r\n return item !== null && (typeof item !== 'undefined');\r\n }) as T[];\r\n }\r\n\r\n return toFilter.filter((item) => {\r\n return item;\r\n }) as T[];\r\n};\r\n\r\n\r\n\r\nexport const mapAndFilterSparseArray = function (toFilter: sparseArray | null | undefined, map: ((from: T | null | undefined) => U | false)): U[] {\r\n const ret: U[] = [];\r\n\r\n if (toFilter) {\r\n toFilter.forEach((item) => {\r\n const toItem = map(item);\r\n if (toItem !== false) {\r\n ret.push(toItem);\r\n }\r\n });\r\n }\r\n\r\n return ret;\r\n};\r\n\r\n\r\n\r\nexport const getLatLngFromAddress = (address: string | null | undefined) => {\r\n return new Promise((resolve, reject) => {\r\n if (address) {\r\n if (window.google) {\r\n let geocoder = new google.maps.Geocoder()\r\n let latLng: google.maps.LatLngLiteral | undefined = undefined;\r\n\r\n geocoder.geocode({ 'address': address }, (results, status) => {\r\n if (status === google.maps.GeocoderStatus.OK) {\r\n latLng = { lat: 0, lng: 0 };\r\n latLng.lat = Number(results[0].geometry.location.lat().toFixed(4));\r\n latLng.lng = Number(results[0].geometry.location.lng().toFixed(4));\r\n resolve(latLng);\r\n } else {\r\n reject('locationNotFound');\r\n }\r\n });\r\n } else {\r\n reject('missingGeocoder');\r\n }\r\n } else {\r\n reject('locationNotFound');\r\n return;\r\n }\r\n });\r\n};\r\n\r\n","import React from 'react';\r\n\r\nimport { Link } from 'react-router-dom';\r\n\r\nimport { LocalizeState, LocalizeContextProps, withLocalize, TranslateFunction, Translate } from 'react-localize-redux';\r\n\r\n\r\nimport { Dispatch, bindActionCreators } from 'redux';\r\nimport { connect } from 'react-redux';\r\n\r\nimport { AppState } from 'redux/store';\r\nimport { State as ProductOverviewState } from 'redux/types/ProductOverview';\r\nimport { setGridState, setColumnStates, search } from 'redux/actions/ProductOverviewActions';\r\n\r\n\r\nimport { ReduxAgGrid } from \"components/common/Grid/AgGrid\";\r\n\r\nimport gql from \"graphql-tag\";\r\nimport { useQuery } from \"react-apollo\";\r\nimport { productGrid } from \"types/apolloGenerated/productGrid\";\r\nimport CampUtils, { filterSparseArray } from \"util/CampUtils\";\r\n\r\nimport { ColDef } from \"@ag-grid-enterprise/all-modules\";\r\nimport \"@ag-grid-community/all-modules/dist/styles/ag-grid.css\";\r\nimport \"@ag-grid-community/all-modules/dist/styles/ag-theme-balham.css\";\r\n\r\nimport { ProductType } from 'types/apolloGenerated/globalTypes';\r\nimport { productGrid_products_results as productInfo, productGridVariables } from 'types/apolloGenerated/productGrid';\r\nimport CheckIcon from '@material-ui/icons/Check';\r\nimport { Fragment } from 'react';\r\nimport { CircularProgress } from '@material-ui/core';\r\nimport format from \"date-fns/format\";\r\n\r\n\r\nexport const QUERY_PRODUCTS_GRID = gql`\r\n query productGrid(\r\n $page: Int\r\n $pageSize: Int\r\n $filter: [ProductFilter]\r\n $sorting: [SortingCriterionForProductFilterOption]\r\n ) {\r\n products(\r\n page: $page\r\n pageSize: $pageSize\r\n filter: $filter\r\n sorting: $sorting\r\n ) {\r\n page\r\n pageSize\r\n totalResults\r\n results {\r\n productInformation {\r\n itemNumber\r\n id\r\n gTIN\r\n name\r\n businessUnit\r\n productType\r\n hasPromotions\r\n hasNotifications\r\n hasConsumables\r\n isProductRegistrationEnabled\r\n bonus\r\n serviceFeePearls\r\n lastEdited\r\n }\r\n }\r\n }\r\n }\r\n`;\r\n\r\n\r\nconst getColumnDefs = (translate: TranslateFunction, products: productInfo[]): ColDef[] => {\r\n \r\n const columnDefs = [\r\n {\r\n headerName: translate(\"types.product.itemNumber\") as string,\r\n field: \"productInformation.itemNumber\",\r\n filter: \"agNumberColumnFilter\",\r\n cellRenderer: \"ProductLink\",\r\n width: 100,\r\n },\r\n {\r\n headerName: translate(\"types.product.gTIN\") as string,\r\n field: \"productInformation.gTIN\",\r\n filter: \"agNumberColumnFilter\",\r\n cellRenderer: \"ProductLink\",\r\n width: 120,\r\n },\r\n {\r\n headerName: translate(\"types.common.name\") as string,\r\n field: \"productInformation.name\",\r\n cellRenderer: \"ProductLink\",\r\n width: 180,\r\n },\r\n {\r\n headerName: translate(\"types.product.businessUnit\") as string,\r\n field: \"productInformation.businessUnit\",\r\n cellRenderer: \"ProductLink\",\r\n width: 110,\r\n },\r\n {\r\n headerName: \"IoT\", // - IOT -- need to edit so its hide value is controllable by the toggle button\r\n field: \"productInformation.productType\",\r\n filter: \"agSetColumnFilter\",\r\n cellRenderer: \"IoTCheck\",\r\n width: 60,\r\n filterParams: {\r\n filterOptions: [\"EQ\"],\r\n suppressAndOrCondition: true,\r\n values: CampUtils.getEnumAsArray(ProductType),\r\n },\r\n hide: false, // needs ability to be toggled\r\n },\r\n {\r\n headerName: translate(\"types.common.promotions\") as string,\r\n field: \"productInformation.hasPromotions\",\r\n filter: \"agSetColumnFilter\",\r\n cellRenderer: \"BoolCheck\",\r\n width: 120,\r\n },\r\n {\r\n headerName: translate(\"types.common.notifications\") as string,\r\n field: \"productInformation.hasNotifications\",\r\n filter: \"agSetColumnFilter\",\r\n cellRenderer: \"BoolCheck\",\r\n width: 120,\r\n },\r\n {\r\n headerName: translate(\"types.common.consumables\") as string,\r\n field: \"productInformation.hasConsumables\",\r\n filter: \"agSetColumnFilter\",\r\n cellRenderer: \"BoolCheck\",\r\n width: 120,\r\n },\r\n {\r\n headerName: translate(\"types.common.active\") as string,\r\n field: \"productInformation.isProductRegistrationEnabled\",\r\n filter: \"agSetColumnFilter\",\r\n cellRenderer: \"BoolCheck\",\r\n width: 120,\r\n hide: true,\r\n },\r\n {\r\n headerName: translate(\"types.common.pearls\") as string,\r\n field: \"productInformation.bonus\",\r\n width: 120,\r\n },\r\n {\r\n headerName: translate(\"types.product.serviceFeePearls\") as string,\r\n field: \"productInformation.serviceFeePearls\",\r\n width: 160,\r\n },\r\n {\r\n headerName: translate(\"types.product.lastEdited\") as string,\r\n field: \"productInformation.lastEdited\",\r\n width: 200,\r\n cellRenderer: \"FormatDate\",\r\n }\r\n ];\r\n\r\n return columnDefs;\r\n};\r\n\r\ninterface CellRenderer {\r\n value: string;\r\n data: productInfo;\r\n}\r\n\r\nconst FormatDate: React.FC = ({ data, value }) => {\r\n if (!(data && value)) {\r\n return
    ;\r\n }\r\n return (\r\n {\r\n (translate) => {\r\n return
    \r\n\r\n {format(new Date(value), translate.translate('generics.dateTimeFormatFNS') as string)}\r\n \r\n
    \r\n }\r\n }\r\n
    \r\n );\r\n};\r\n\r\nconst ProductLink: React.FC = ({ data, value }) => {\r\n if (!(data && data.productInformation)) {\r\n return
    ;\r\n }\r\n return {value};\r\n};\r\n\r\nconst IoTCheck: React.FC = ({ data, value }) => {\r\n if (!(data && data.productInformation)) {\r\n return
    ;\r\n }\r\n return (\r\n
    \r\n {data.productInformation.productType === \"SILK_IOT\" ||\r\n data.productInformation.productType === \"PERLA_IOT\" ? (\r\n \r\n ) : (\r\n \r\n )}\r\n
    \r\n );\r\n};\r\n\r\nconst BoolCheck: React.FC = (value) => {\r\n return (\r\n
    {value.value ? : null}
    \r\n );\r\n};\r\n\r\nconst CellRenderer = {\r\n ProductLink,\r\n IoTCheck,\r\n BoolCheck,\r\n FormatDate,\r\n};\r\n\r\ninterface ProductsGridPara extends LocalizeContextProps {\r\n productOverviewState: ProductOverviewState\r\n localize: LocalizeState\r\n actions: {\r\n setGridState: typeof setGridState\r\n setColumnStates: typeof setColumnStates\r\n search: typeof search\r\n }\r\n}\r\n\r\nconst ProductsGrid: React.FC = ({ productOverviewState, actions, translate }) => {\r\n const { data, loading } = useQuery(QUERY_PRODUCTS_GRID, {variables:{pageSize: 0}}); // pageSize = 0 --> Load all\r\n const gridData = filterSparseArray(data?.products?.results);\r\n\r\n\r\n if (loading) {\r\n return \r\n } else if (data) {\r\n return (\r\n \r\n );\r\n } else {\r\n return ;\r\n }\r\n}\r\n\r\nconst mapStateToProps = (appState: AppState) => ({\r\n productOverviewState: appState.productOverview,\r\n localize: appState.localize\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch: Dispatch) => ({\r\n actions: bindActionCreators({ setGridState, setColumnStates, search }, dispatch),\r\n});\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(withLocalize(ProductsGrid));\r\n","import React, { Fragment } from \"react\";\r\nimport { Dispatch, bindActionCreators } from \"redux\";\r\nimport { connect } from \"react-redux\";\r\n\r\nimport { TextField } from \"@material-ui/core\";\r\nimport { createStyles, Theme, makeStyles } from \"@material-ui/core/styles\";\r\n\r\nimport PageHeader from \"components/common/PageHeader\";\r\nimport GridFilterHeader from \"components/common/Grid/GridFilterHeader\";\r\nimport { ToggleButtonGroup, ToggleButton } from \"@material-ui/lab\";\r\n\r\nimport { AppState } from \"redux/store\";\r\nimport { State as ProductOverviewState } from \"redux/types/ProductOverview\";\r\nimport {\r\n setGridState,\r\n setColumnStates,\r\n search,\r\n} from \"redux/actions/ProductOverviewActions\";\r\nimport { UserProfile } from \"types/ToolboxEntities\";\r\nimport { getFilterValues } from \"util/AgGridUtils\";\r\nimport {\r\n Translate,\r\n LocalizeState,\r\n withLocalize,\r\n LocalizeContextProps,\r\n} from \"react-localize-redux\";\r\n\r\nimport ProductsGrid from \"./ProductsGrid\";\r\nimport { useDebouncedCallback } from \"use-debounce\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) => {\r\n return createStyles({\r\n productOverview: {\r\n display: \"flex\",\r\n flexFlow: \"column\",\r\n\r\n \"& > .gridFilterHeader\": {\r\n flex: \"0 1 auto\",\r\n },\r\n\r\n \"& > .innerContent\": {\r\n flex: \"1 1 auto\",\r\n height: \"100%\",\r\n },\r\n },\r\n filterWarning: {\r\n color: \"red\",\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n },\r\n });\r\n});\r\n\r\ninterface ProductsOverviewProps extends LocalizeContextProps {\r\n user: UserProfile | null;\r\n productOverviewState: ProductOverviewState;\r\n localize: LocalizeState;\r\n actions: {\r\n setGridState: typeof setGridState;\r\n setColumnStates: typeof setColumnStates;\r\n search: typeof search;\r\n };\r\n}\r\n\r\n//creation of the grid and search page and its setup\r\nconst ProductsOverview: React.FC = ({\r\n user,\r\n productOverviewState,\r\n actions,\r\n translate,\r\n}) => {\r\n const classes = useStyles(); // inputs stylings into set up\r\n\r\n //sets the grid state\r\n const gridState = productOverviewState.grid; //use the current product overview\r\n\r\n // Handle global search\r\n let searchTerm = productOverviewState.search || \"\";\r\n const [debouncedSearch] = useDebouncedCallback((newSearchTerm: string) => {\r\n if (newSearchTerm.length >= 2) {\r\n actions.search(newSearchTerm);\r\n } else if (newSearchTerm.length === 0 && searchTerm.length > 0) {\r\n actions.search(null);\r\n }\r\n }, 250);\r\n const search = (event: React.ChangeEvent) => {\r\n debouncedSearch(event.target.value);\r\n };\r\n\r\n if (!user) {\r\n return null;\r\n }\r\n\r\n const changeFilter = (\r\n filterName: string,\r\n newFilterValues: string[] | false\r\n ) => {\r\n const newFilter = Object.assign({}, gridState.filterModel);\r\n\r\n if (newFilterValues !== false) {\r\n newFilter[filterName] = {\r\n filterType: \"set\",\r\n values: newFilterValues,\r\n };\r\n } else {\r\n delete newFilter[filterName];\r\n }\r\n actions.setGridState(gridState.page, gridState.sortModel, newFilter);\r\n };\r\n\r\n const changeIotFilter = (\r\n event: React.MouseEvent,\r\n value: any\r\n ) => {\r\n let newFilterValues = value as string[];\r\n if (newFilterValues.includes(\"IoT\")) {\r\n newFilterValues.splice(newFilterValues.indexOf(\"IoT\"), 1);\r\n if (!newFilterValues.includes(\"PERLA_IOT\")) {\r\n newFilterValues = [...newFilterValues, \"SILK_IOT\", \"PERLA_IOT\"];\r\n }\r\n } else {\r\n if (newFilterValues.includes(\"SILK_IOT\")) {\r\n newFilterValues.splice(newFilterValues.indexOf(\"SILK_IOT\"), 1);\r\n newFilterValues.splice(newFilterValues.indexOf(\"PERLA_IOT\"), 1);\r\n }\r\n }\r\n if (newFilterValues.length === 0 || newFilterValues.length === 5) {\r\n newFilterValues = [];\r\n }\r\n changeFilter(\r\n \"productInformation.productType\",\r\n newFilterValues.length > 0 &&\r\n newFilterValues.length < 5 &&\r\n newFilterValues\r\n );\r\n };\r\n\r\n const changeActiveFilter = (\r\n event: React.MouseEvent,\r\n value: string[]\r\n ) => {\r\n let newFilterValues = value as string[];\r\n if (newFilterValues.length !== 1) {\r\n newFilterValues = [];\r\n }\r\n changeFilter(\r\n \"productInformation.isProductRegistrationEnabled\",\r\n newFilterValues.length === 1 && newFilterValues\r\n );\r\n };\r\n\r\n const filterType = gridState.filterModel[\"productInformation.productType\"];\r\n const selectedTypes =\r\n filterType && getFilterValues(filterType).includes(\"PERLA_IOT\")\r\n ? filterType && [...getFilterValues(filterType), \"IoT\"]\r\n : filterType && getFilterValues(filterType);\r\n\r\n const regFilterType =\r\n gridState.filterModel[\"productInformation.isProductRegistrationEnabled\"];\r\n\r\n const regFilter = regFilterType && getFilterValues(regFilterType);\r\n\r\n return (\r\n \r\n {/* this is the header text*/}\r\n \r\n \r\n \r\n {/* this is the search filter*/}\r\n \r\n\r\n {/* this is the toggle button*/}\r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\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 = (appState: AppState) => ({\r\n user: appState.auth.user,\r\n productOverviewState: appState.productOverview,\r\n localize: appState.localize,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch: Dispatch) => ({\r\n actions: bindActionCreators(\r\n { setGridState, setColumnStates, search },\r\n dispatch\r\n ),\r\n});\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(withLocalize(ProductsOverview));\r\n","import { ActionType } from '../types/ConsumableGrid';\r\n\r\nimport AgGridActionHelper from '../actions/AgGridActionHelper';\r\n\r\n\r\nexport const { setGridState, setColumnStates } = AgGridActionHelper(ActionType.GRID);","import React from \"react\";\r\nimport { Translate, TranslateFunction } from \"react-localize-redux\";\r\nimport format from \"date-fns/format\";\r\n\r\nimport gql from \"graphql-tag\";\r\nimport { couponCodes } from \"types/apolloGenerated/couponCodes\";\r\n\r\nimport { ColDef } from \"@ag-grid-enterprise/all-modules\";\r\nimport \"@ag-grid-community/all-modules/dist/styles/ag-grid.css\";\r\nimport \"@ag-grid-community/all-modules/dist/styles/ag-theme-balham.css\";\r\n\r\nimport { OrganizationFilterOption } from \"types/ToolboxEntities\";\r\n\r\nimport { factoryApolloConnector, ApolloFilter } from \"util/AgGridUtils\";\r\nimport { Check, Close } from \"@material-ui/icons\";\r\n\r\nimport { CouponCodeFilterOption, FilterOperator } from \"types/apolloGenerated/globalTypes\";\r\n\r\nexport const COUPON_CODE_GRID = gql`\r\n query couponCodes(\r\n $page: Int\r\n $pageSize: Int\r\n $filter: [CouponCodeFilter]\r\n $sorting: [SortingCriterionForCouponCodeFilterOption]\r\n ) {\r\n couponCodes(\r\n page: $page\r\n pageSize: $pageSize\r\n filter: $filter\r\n sorting: $sorting\r\n ) {\r\n page\r\n pageSize\r\n totalResults\r\n results {\r\n id\r\n code\r\n creationDate\r\n validFrom\r\n validTo\r\n isActive\r\n consumptionDate\r\n productCode\r\n }\r\n }\r\n }\r\n`;\r\n\r\nconst colMapping = {\r\n id: OrganizationFilterOption.ID,\r\n name: OrganizationFilterOption.NAME,\r\n partnerType: OrganizationFilterOption.PARTNER_TYPE,\r\n email: OrganizationFilterOption.EMAIL,\r\n \"address.cite\": OrganizationFilterOption.CITY,\r\n \"address.countryCode\": OrganizationFilterOption.COUNTRY,\r\n code: CouponCodeFilterOption.CODE,\r\n};\r\n\r\nconst searchColumns = [CouponCodeFilterOption.CODE];\r\n\r\nexport const apolloConnectorByPromotion = (id: string | undefined) => {\r\n let options = {};\r\n if (id) {\r\n options = {\r\n filter: [\r\n {\r\n filterOption: [CouponCodeFilterOption.COUPON_PRODUCT_ID as String],\r\n operator: FilterOperator.EQ,\r\n values: [id],\r\n } as ApolloFilter,\r\n ],\r\n };\r\n }\r\n return factoryApolloConnector(\r\n COUPON_CODE_GRID,\r\n (data: couponCodes) => data.couponCodes,\r\n colMapping,\r\n options\r\n );\r\n};\r\n\r\nexport const apolloConnectorBySearch = (searchTerm: string | null) => {\r\n return factoryApolloConnector(\r\n COUPON_CODE_GRID,\r\n (data: couponCodes) => data.couponCodes,\r\n colMapping,\r\n {\r\n search: {\r\n searchCols: searchColumns as string[],\r\n searchTerm,\r\n },\r\n defaultSort: [\r\n {\r\n colId: \"isPendingOrganizationAssignment\",\r\n sort: \"desc\",\r\n },\r\n ],\r\n },\r\n );\r\n};\r\n\r\nexport const getColumnDefs = (translate: TranslateFunction): ColDef[] => {\r\n const columnDefs = [\r\n {\r\n headerName: \"ID\",\r\n field: \"id\",\r\n width: 60,\r\n filter: \"agSetColumnFilter\",\r\n sortable: true,\r\n },\r\n {\r\n headerName: \"Coupon Code\",\r\n field: \"code\",\r\n width: 150,\r\n sortable: true,\r\n },\r\n {\r\n headerName: \"Creation Date\",\r\n field: \"creationDate\",\r\n filter: \"agDateColumnFilter\",\r\n cellRenderer: \"FormatDate\",\r\n width: 150,\r\n sortable: false,\r\n suppressMenu: true,\r\n },\r\n {\r\n headerName: \"Valid From\",\r\n field: \"validFrom\",\r\n cellRenderer: \"FormatDate\",\r\n width: 150,\r\n sortable: false,\r\n suppressMenu: true,\r\n },\r\n {\r\n headerName: \"Valid To\",\r\n field: \"validTo\",\r\n width: 150,\r\n cellRenderer: \"FormatDate\",\r\n filter: \"agSetColumnFilter\",\r\n sortable: false,\r\n suppressMenu: true,\r\n },\r\n {\r\n headerName: \"Active\",\r\n field: \"isActive\",\r\n width: 90,\r\n cellRenderer: \"BoolCheck\"\r\n },\r\n {\r\n headerName: \"Issue For\",\r\n field: \"productCode\",\r\n width: 170,\r\n },\r\n {\r\n headerName: \"Issue At\",\r\n field: \"consumptionDate\",\r\n width: 170,\r\n sortable: true,\r\n suppressMenu: true,\r\n },\r\n ];\r\n\r\n return columnDefs;\r\n};\r\n\r\ninterface CellRenderer {\r\n value: string;\r\n data: couponCodes;\r\n}\r\n\r\nconst FormatDate: React.FC = ({ data, value }) => {\r\n if (!data) {\r\n return
    ;\r\n }\r\n //return
    {format(new Date(value), \"P\")}
    ;\r\n if (!value) {\r\n return
    ;\r\n }\r\n return (\r\n \r\n {(translate) => {\r\n return (\r\n
    \r\n {format(\r\n new Date(value),\r\n translate.translate(\"generics.dateTimeFormatFNSShort\") as string\r\n )}\r\n
    \r\n );\r\n }}\r\n
    \r\n );\r\n};\r\n\r\nconst BoolCheck: React.FC = ({ data, value }) => {\r\n return
    {value ? : }
    \r\n}\r\n\r\nexport const CellRenderer = {\r\n FormatDate,\r\n BoolCheck\r\n};\r\n","import React, { Fragment } from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport { bindActionCreators, Dispatch } from \"redux\";\r\nimport { withLocalize, LocalizeContextProps, TranslateFunction, Translate } from \"react-localize-redux\";\r\nimport { Link } from \"react-router-dom\";\r\nimport { useQuery } from \"react-apollo\";\r\nimport gql from \"graphql-tag\";\r\nimport { ColDef } from \"@ag-grid-enterprise/all-modules\";\r\nimport { useMutation } from \"@apollo/react-hooks\";\r\n\r\nimport { CircularProgress, makeStyles, createStyles, Theme } from \"@material-ui/core\";\r\nimport { Check, Close, DeleteForever, Save } from \"@material-ui/icons\";\r\n\r\nimport cloneDeep from 'clone-deep';\r\n\r\nimport { ReduxAgGrid } from \"components/common/Grid/AgGrid\";\r\nimport { AppState } from \"redux/store\";\r\nimport { State as ConsumableGridState } from \"redux/types/ConsumableGrid\";\r\nimport { setGridState, setColumnStates, } from \"redux/actions/ConsumableGridActions\";\r\nimport { consumableGrid, consumableGrid_consumableProducts } from \"types/apolloGenerated/consumableGrid\";\r\nimport { updateConsumable as update, updateConsumableVariables } from \"types/apolloGenerated/updateConsumable\"\r\nimport { deleteConsumable as deleteC, deleteConsumableVariables } from \"types/apolloGenerated/deleteConsumable\"\r\nimport PageDialog from \"components/common/PageDialog\"\r\n\r\nimport \"@ag-grid-community/all-modules/dist/styles/ag-grid.css\";\r\nimport \"@ag-grid-community/all-modules/dist/styles/ag-theme-balham.css\";\r\nimport { CellRenderer } from \"Pages/Promotion/Details/GridConfig\";\r\nimport { Product } from \"types/ToolboxEntities\";\r\n\r\nexport const CONSUMABLES = gql`\r\n query consumableGrid {\r\n consumableProducts {\r\n id\r\n isActive\r\n itemNumber\r\n name\r\n pearlsRewarded\r\n products {\r\n productInformation {\r\n id\r\n itemNumber\r\n }\r\n }\r\n }\r\n }\r\n`;\r\n\r\nconst UPDATE_CONSUMABLE_PRODUCT = gql`\r\n mutation updateConsumable($consumableProduct: ConsumableProductUpdate!){\r\n consumableProduct {\r\n update(consumableProduct: $consumableProduct){\r\n id\r\n name\r\n }\r\n }\r\n }\r\n`\r\n\r\nconst DELETE_CONSUMABLE_PRODUCT = gql`\r\n mutation deleteConsumable($id: Int!){\r\n consumableProduct {\r\n delete(id: $id)\r\n }\r\n }\r\n`\r\n\r\nconst useStyles = makeStyles((theme: Theme) => {\r\n return createStyles({\r\n // consumableGrid:{\r\n // height: \"100%\"\r\n // }\r\n consumableGrid: {\r\n position: \"relative\",\r\n height: \"100%\",\r\n display: 'flex',\r\n flexFlow: 'column',\r\n overflow: 'hidden',\r\n\r\n '& > *': {\r\n flex: '1 1 auto',\r\n },\r\n '& a': {\r\n color: '#005D8F'\r\n },\r\n '& > .grie-error': {\r\n flex: '0 1 auto',\r\n },\r\n '& .ag-paging-panel.ag-hidden': {\r\n display: 'block !important',\r\n opacity: 0,\r\n pointerEvents: 'none',\r\n },\r\n '& .ag-cell.number-cell': {\r\n textAlign: 'right',\r\n paddingRight: '40px',\r\n },\r\n '& div[col-id=\"id_1\"] svg': {\r\n marginTop: '2px',\r\n height: '22px'\r\n },\r\n },\r\n });\r\n});\r\n\r\nexport const getColumnDefs = (translate: TranslateFunction): ColDef[] => {\r\n const columnDefs = [\r\n {\r\n headerName: translate(\"generics.id\") as string,\r\n field: \"id\",\r\n sortable: true,\r\n filter: \"agTextColumnFilter\",\r\n width: 60\r\n },\r\n {\r\n headerName: translate(\"types.common.name\") as string,\r\n field: \"name\",\r\n sortable: true,\r\n filter: \"agTextColumnFilter\",\r\n width: 350,\r\n editable: true\r\n },\r\n {\r\n headerName: translate(\"pages.consumable.column.itemNumber\") as string,\r\n field: \"itemNumber\",\r\n sortable: true,\r\n filter: \"agTextColumnFilter\",\r\n width: 120,\r\n editable: true\r\n },\r\n {\r\n headerName: translate(\"types.common.active\") as string,\r\n field: \"isActive\",\r\n sortable: true,\r\n filter: true,\r\n width: 80,\r\n cellRenderer: \"BoolCheck\",\r\n editable: true,\r\n cellEditor: 'agRichSelectCellEditor',\r\n cellEditorParams: {\r\n values: [true, false],\r\n cellRenderer: 'BoolCheck',\r\n },\r\n },\r\n {\r\n headerName: translate(\"pages.consumable.column.pearlReward\") as string,\r\n field: \"pearlsRewarded\",\r\n sortable: true,\r\n filter: \"agTextColumnFilter\",\r\n width: 135,\r\n editable: true,\r\n valueParser: numberParser\r\n },\r\n {\r\n headerName: translate('types.common.products') as string,\r\n field: \"products\",\r\n sortable: true,\r\n cellRenderer: \"ProductsCell\",\r\n valueGetter: (params: any) => {\r\n let exportProducts = \"\";\r\n params.data.products.forEach((element: Product, index: number) => {\r\n if (index) {\r\n exportProducts = exportProducts + \", \" + element.productInformation.itemNumber;\r\n } else {\r\n exportProducts = exportProducts + element.productInformation.itemNumber;\r\n }\r\n });\r\n return exportProducts;\r\n },\r\n filter: \"agTextColumnFilter\",\r\n width: 250,\r\n }\r\n ];\r\n return columnDefs;\r\n};\r\n\r\nfunction numberParser(params: any) {\r\n const asNumber = parseInt(params.newValue);\r\n if (isNaN(asNumber)) {\r\n return Number(params.oldValue)\r\n }\r\n return asNumber;\r\n}\r\n\r\ninterface CellRenderer {\r\n value: number;\r\n data: consumableGrid_consumableProducts;\r\n mutation?: () => {}\r\n}\r\n\r\nconst ProductsCell: React.FC = ({ data, value }) => {\r\n if (!data) {\r\n return
    ;\r\n }\r\n if (data.products) {\r\n return (\r\n
    \r\n {data.products.map((product, idx, arr) => {\r\n const prodInfo = product?.productInformation\r\n const gridValue = prodInfo?.itemNumber && prodInfo.itemNumber !== \"\" ? prodInfo.itemNumber : \"DB-\" + prodInfo?.id\r\n return (\r\n \r\n {gridValue}{idx + 1 !== arr.length ? \", \" : \"\"}\r\n \r\n )\r\n })}\r\n
    )\r\n }\r\n return
    \r\n};\r\n\r\nconst BoolCheck: React.FC = ({ data, value }) => {\r\n return
    {value ? : }
    \r\n}\r\n\r\ninterface ConsumableGridProps extends LocalizeContextProps {\r\n translate: TranslateFunction\r\n gridState: ConsumableGridState\r\n actions: {\r\n setGridState: typeof setGridState\r\n setColumnStates: typeof setColumnStates\r\n };\r\n search: string;\r\n}\r\n\r\nconst ConsumableGrid: React.FC = ({ translate, gridState, actions, search }) => {\r\n const classes = useStyles();\r\n const { data, loading } = useQuery(CONSUMABLES);\r\n const gridData = data && data?.consumableProducts ? data?.consumableProducts : [];\r\n\r\n if (loading) {\r\n return \r\n } else if (data) {\r\n return (\r\n \r\n );\r\n }\r\n\r\n return ;\r\n};\r\n\r\n\r\nconst mapStateToProps = (appState: AppState) => ({\r\n user: appState.auth.user,\r\n gridState: appState.consumableGrid\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch: Dispatch) => ({\r\n actions: bindActionCreators(\r\n { setGridState, setColumnStates },\r\n dispatch\r\n )\r\n});\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(withLocalize(ConsumableGrid));\r\n\r\n","import React, { Fragment } from \"react\";\r\nimport { createStyles, makeStyles } from \"@material-ui/core/styles\";\r\nimport { TextField, Button, Checkbox, FormControlLabel, CircularProgress, Box } from \"@material-ui/core\";\r\nimport { Alert } from \"@material-ui/lab\"\r\nimport { useMutation } from \"@apollo/react-hooks\";\r\nimport gql from \"graphql-tag\";\r\nimport cloneDeep from \"clone-deep\";\r\nimport { ApolloClient } from \"apollo-client\";\r\nimport { Translate, withLocalize, LocalizeContextProps } from \"react-localize-redux\";\r\n\r\nimport PageHeader from \"components/common/PageHeader\";\r\nimport ConsumableGrid from \"./ConsumableGrid\";\r\nimport GridFilterHeader from \"components/common/Grid/GridFilterHeader\";\r\nimport {\r\n createConsumable as create,\r\n createConsumableVariables,\r\n} from \"types/apolloGenerated/createConsumable\";\r\nimport { CONSUMABLES } from \"./ConsumableGrid\";\r\nimport { consumableGrid as Consumables } from \"types/apolloGenerated/consumableGrid\";\r\nimport { ConsumableProductInsert as Consumable } from \"types/apolloGenerated/globalTypes\"\r\n\r\nconst useStyles = makeStyles(() => {\r\n return createStyles({\r\n consumableOverview: {\r\n display: \"flex\",\r\n flexFlow: \"column\",\r\n\r\n \"& > .gridFilterHeader\": {\r\n flex: \"0 1 auto\",\r\n margin: \"0\",\r\n },\r\n\r\n \"& > .innerContent\": {\r\n flex: \"1 1 auto\",\r\n height: \"100%\",\r\n },\r\n },\r\n loadingSpinner: {\r\n minWidth: \"220px\",\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n marginTop: \"10px\"\r\n },\r\n createConsumablebutton: {\r\n marginTop: \"10px\",\r\n minWidth: \"220px\",\r\n height: \"42px\"\r\n },\r\n reactiveBoxesRight: {\r\n minWidth: \"350px\",\r\n width: \"90%\",\r\n margin: \"0 0 23px 30px\",\r\n },\r\n });\r\n});\r\n\r\nconst CREATE_CONSUMABLE_PRODUCT = gql`\r\n mutation createConsumable($consumableProduct: ConsumableProductInsert!) {\r\n consumableProduct {\r\n insert(consumableProduct: $consumableProduct) {\r\n id\r\n name\r\n }\r\n }\r\n }\r\n`;\r\n\r\ninterface ProductDetailViewProps extends LocalizeContextProps {\r\n client: ApolloClient\r\n}\r\n\r\n\r\n\r\nconst ConsumableList: React.FC = ({ client, translate }) => {\r\n const classes = useStyles();\r\n const [search, setSearch] = React.useState(\"\");\r\n const [error, setError] = React.useState(\"\")\r\n const [newConsumable, setNewConsumable] = React.useState({ name: \"\", pearlsRewarded: 0, itemNumber: \"\", isActive: true });\r\n const [nameError, setNameError] = React.useState({ error: false, text: \"\" })\r\n const [pearlsRewardedError, setPearlsRewardedError] = React.useState({ error: false, text: \"\" })\r\n\r\n const [itemNumberError, setItemNumberError] = React.useState({ error: false, text: \"\" })\r\n\r\n const [createConsumable, { loading }] = useMutation<\r\n create,\r\n createConsumableVariables\r\n >(CREATE_CONSUMABLE_PRODUCT, {\r\n onCompleted: (data) => {\r\n try {\r\n const variables = {};\r\n const queryCache = cloneDeep(\r\n client.readQuery({\r\n query: CONSUMABLES,\r\n variables: variables,\r\n })\r\n );\r\n\r\n if (queryCache?.consumableProducts) {\r\n queryCache.consumableProducts = [\r\n ...queryCache.consumableProducts,\r\n {\r\n __typename: \"ConsumableProduct\",\r\n id: data.consumableProduct?.insert?.id ?? -1,\r\n name: newConsumable.name,\r\n itemNumber: newConsumable.itemNumber,\r\n isActive: newConsumable.isActive,\r\n pearlsRewarded: newConsumable.pearlsRewarded,\r\n products: [],\r\n },\r\n ];\r\n }\r\n\r\n client.writeQuery({\r\n query: CONSUMABLES,\r\n variables: variables,\r\n data: queryCache,\r\n });\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n setNewConsumable({\r\n name: \"\",\r\n itemNumber: \"\",\r\n pearlsRewarded: 0,\r\n isActive: true\r\n })\r\n },\r\n onError: (error) => { setError(error.message) },\r\n });\r\n\r\n const changeSearch = (event: React.ChangeEvent) => {\r\n setSearch(event.target.value);\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n {error !== \"\" ? {error} : }\r\n
    \r\n \r\n
    \r\n \r\n
    \r\n );\r\n};\r\nexport default withLocalize(ConsumableList);\r\n\r\n","import gql from \"graphql-tag\";\r\n\r\nexport const POLL_GENERATE_CODES = gql`\r\nquery pollGenerateCodes($batchNumber: String!){\r\n pollGenerateProductCodesJob(batchNumber: $batchNumber){\r\n isFinished\r\n result{\r\n erpBatchNumber\r\n batchNumber\r\n code\r\n batchDeactivated\r\n }\r\n total\r\n }\r\n}\r\n`","import React, { useState, Fragment } from \"react\";\r\nimport gql from \"graphql-tag\";\r\nimport { TextField, Box, Button, CircularProgress } from \"@material-ui/core\";\r\nimport { createStyles, Theme, makeStyles } from \"@material-ui/core/styles\";\r\nimport {\r\n Translate,\r\n TranslateFunction,\r\n withLocalize,\r\n LocalizeContextProps,\r\n} from \"react-localize-redux\";\r\nimport { Autocomplete, Alert } from \"@material-ui/lab\";\r\nimport { useMutation, useLazyQuery } from \"react-apollo\";\r\nimport { productList } from \"types/apolloGenerated/productList\";\r\nimport { connect } from \"react-redux\";\r\nimport { State as ConsumableGridState } from \"redux/types/ConsumableGrid\";\r\nimport {\r\n setGridState,\r\n setColumnStates,\r\n} from \"redux/actions/ConsumableGridActions\";\r\nimport { AppState } from \"redux/store\";\r\nimport { bindActionCreators, Dispatch } from \"redux\";\r\n\r\nimport {\r\n generateCodesVariables,\r\n generateCodes,\r\n} from \"types/apolloGenerated/generateCodes\";\r\nimport {\r\n pollGenerateCodesVariables,\r\n pollGenerateCodes,\r\n pollGenerateCodes_pollGenerateProductCodesJob_result as CodeGenResults,\r\n} from \"types/apolloGenerated/pollGenerateCodes\";\r\n\r\nimport { POLL_GENERATE_CODES } from \"commonQueries/pollGeneratedCodes\";\r\nimport { ColDef } from \"@ag-grid-enterprise/all-modules\";\r\nimport { ReduxAgGrid } from \"components/common/Grid/AgGrid\";\r\nimport {\r\n exportBonusLabelsVariables as ExportVariables,\r\n exportBonusLabels as Export,\r\n} from \"types/apolloGenerated/exportBonusLabels\";\r\nimport PageDialog from \"components/common/PageDialog\";\r\nimport { ProductType } from \"types/apolloGenerated/globalTypes\";\r\nimport {\r\n disableCodeBatchVariables,\r\n disableCodeBatch,\r\n} from \"types/apolloGenerated/disableCodeBatch\";\r\nconst GENERATE_CODES = gql`\r\n mutation generateCodes($params: ProductCodeGenerationParameter!) {\r\n product {\r\n startGenerateProductCodesJob(params: $params)\r\n }\r\n }\r\n`;\r\n\r\nconst EXPORT_BONUS_LABELS = gql`\r\n mutation exportBonusLabels(\r\n $batchNumber: String!\r\n $productDescription: String!\r\n $useTemplate: Boolean\r\n $overwrite: Boolean\r\n ) {\r\n product {\r\n exportBonusLabels(\r\n batchNumber: $batchNumber\r\n productDescription: $productDescription\r\n useTemplate: $useTemplate\r\n overwrite: $overwrite\r\n )\r\n }\r\n }\r\n`;\r\n\r\nconst DISABLE_BATCH = gql`\r\n mutation disableCodeBatch ($batchNumber: String!) {\r\n product {\r\n disableCodeBatch(batchNumber: $batchNumber)\r\n }\r\n }\r\n`;\r\n\r\nconst useStyles = makeStyles((theme: Theme) => {\r\n return createStyles({\r\n container: {\r\n display: \"flex\",\r\n margin: \"20px 20px 0px 20px\",\r\n width: \"100%\",\r\n },\r\n fieldContainer: {\r\n marginRight: \"40px\",\r\n },\r\n generateCodesGrid: {\r\n position: \"relative\",\r\n height: \"650px\",\r\n display: \"flex\",\r\n flexFlow: \"column\",\r\n overflow: \"hidden\",\r\n\r\n \"& > *\": {\r\n flex: \"1 1 auto\",\r\n },\r\n \"& a\": {\r\n color: \"#005D8F\",\r\n },\r\n \"& > .grie-error\": {\r\n flex: \"0 1 auto\",\r\n },\r\n \"& .ag-paging-panel.ag-hidden\": {\r\n display: \"block !important\",\r\n opacity: 0,\r\n pointerEvents: \"none\",\r\n },\r\n \"& .ag-cell.number-cell\": {\r\n textAlign: \"right\",\r\n paddingRight: \"40px\",\r\n },\r\n '& div[col-id=\"id_1\"] svg': {\r\n marginTop: \"2px\",\r\n height: \"22px\",\r\n },\r\n },\r\n gridContainer: {\r\n margin: \"20px 20px 0px 20px\",\r\n },\r\n pdfContainer: {\r\n margin: \"20px 20px 0px 20px\",\r\n display: \"flex\",\r\n },\r\n });\r\n});\r\n\r\ninterface CellRenderer {\r\n value: string;\r\n data: any;\r\n}\r\n\r\nlet tempArticle: any;\r\nlet articleName = \"\";\r\nlet totalResult = 0;\r\n\r\ninterface GenerateCodesProps extends LocalizeContextProps {\r\n gridState: ConsumableGridState;\r\n actions: {\r\n setGridState: typeof setGridState;\r\n setColumnStates: typeof setColumnStates;\r\n };\r\n productList: productList;\r\n}\r\n\r\nconst GenerateCodes: React.FC = ({\r\n translate,\r\n gridState,\r\n actions,\r\n productList,\r\n}) => {\r\n const classes = useStyles();\r\n const [exportOverwrite, setExportOverwrite] = useState({\r\n open: false,\r\n message: \"\",\r\n });\r\n const [batchError, setBatchError] = useState({\r\n error: false,\r\n message: \"\",\r\n });\r\n const [showGrid, setShowGrid] = useState(true);\r\n const [deactivateBatchDialog, setDeactivateBatchDialog] = useState({ open: false, error: \"\" })\r\n const [generateCodesDialog, setGenerateCodesDialog] = useState(false)\r\n const [template, setTemplate] = useState(false);\r\n const [productNeeded, setProductNeeded] = useState({\r\n show: false,\r\n message: \"\",\r\n });\r\n\r\n const [generateData, setGenerateData] = React.useState({\r\n productId: -1,\r\n amount: 0,\r\n batchNumber: \"\",\r\n erpBatchNumber: \"\"\r\n });\r\n const [gridData, setGridData] = React.useState<(CodeGenResults | null)[]>([]);\r\n const [exportError, setExportError] = useState(\"\");\r\n\r\n const [generateCodesFunc, { loading: genCodesLoading }] = useMutation<\r\n generateCodes,\r\n generateCodesVariables\r\n >(GENERATE_CODES, {\r\n onCompleted: () => {\r\n setBatchError({\r\n error: false,\r\n message: \"\",\r\n });\r\n startPolling();\r\n },\r\n onError: (error) => {\r\n error.graphQLErrors.forEach((error) => {\r\n if (error?.extensions?.data?.batchAlreadyExists) {\r\n articleName = \"\";\r\n setBatchError({\r\n error: true,\r\n message: translate(\r\n \"pages.production.error.sameBatchNumber\"\r\n ) as string,\r\n });\r\n setShowGrid(true);\r\n startPolling();\r\n }\r\n });\r\n },\r\n });\r\n\r\n const startPolling = () => {\r\n pollGenCodes({\r\n variables: {\r\n batchNumber: generateData.batchNumber,\r\n },\r\n });\r\n };\r\n\r\n function compare(a: any, b: any) {\r\n const codeA = a.code;\r\n const codeB = b.code;\r\n\r\n let comparison = 0;\r\n if (codeA > codeB) {\r\n comparison = 1;\r\n } else if (codeA < codeB) {\r\n comparison = -1;\r\n }\r\n return comparison;\r\n }\r\n\r\n const [pollInterval, setPollInterval] = useState(0);\r\n const [pollGenCodes, { loading: pollGenCodesLoading, data: pollGenerateData }] = useLazyQuery<\r\n pollGenerateCodes,\r\n pollGenerateCodesVariables\r\n >(POLL_GENERATE_CODES, {\r\n pollInterval: pollInterval,\r\n notifyOnNetworkStatusChange: true,\r\n onCompleted: (data) => {\r\n setGenerateCodesDialog(false)\r\n setShowGrid(true);\r\n if (\r\n data.pollGenerateProductCodesJob?.isFinished &&\r\n data.pollGenerateProductCodesJob.result !== null\r\n ) {\r\n setGridData(data.pollGenerateProductCodesJob.result.sort(compare));\r\n totalResult = data.pollGenerateProductCodesJob.total || 0;\r\n setPollInterval(0);\r\n } else {\r\n if (pollInterval !== 1000) {\r\n setPollInterval(1000);\r\n }\r\n }\r\n },\r\n });\r\n\r\n const [exportBonusLabels, { loading: exportLoading }] = useMutation<\r\n Export,\r\n ExportVariables\r\n >(EXPORT_BONUS_LABELS, {\r\n onCompleted: (data) => {\r\n if (data.product?.exportBonusLabels) {\r\n window.open(data.product?.exportBonusLabels, \"_self\");\r\n }\r\n setExportOverwrite({ open: false, message: \"\" });\r\n setExportError(\"\");\r\n },\r\n onError: (error) => {\r\n let alreadyDownloaded = false;\r\n error.graphQLErrors.forEach((error) => {\r\n if (error?.extensions?.data?.alreadyExported) {\r\n setExportOverwrite({\r\n open: true,\r\n message: \"pages.production.error.alreadyDownloaded\",\r\n });\r\n alreadyDownloaded = true;\r\n }\r\n });\r\n if (!alreadyDownloaded) {\r\n setExportError(error.message);\r\n }\r\n },\r\n });\r\n\r\n const [deactivateBatch, { loading: deactivateLoading, }] = useMutation <\r\n disableCodeBatch,\r\n disableCodeBatchVariables\r\n >(DISABLE_BATCH, {\r\n onCompleted: (data) => {\r\n setDeactivateBatchDialog({ open: false, error: \"\"});\r\n if (pollGenerateData?.pollGenerateProductCodesJob?.result) {\r\n setGridData(pollGenerateData.pollGenerateProductCodesJob.result.sort(compare));\r\n }\r\n },\r\n onError: (error) => {\r\n setDeactivateBatchDialog({ open: true, error: error.message})\r\n },\r\n refetchQueries: [{\r\n query: POLL_GENERATE_CODES, variables: ({ batchNumber: generateData.batchNumber })\r\n }],\r\n awaitRefetchQueries: true\r\n }\r\n )\r\n\r\n interface ProductType {\r\n name: string;\r\n id: number;\r\n }\r\n\r\n const notRegisterable = translate(\r\n \"pages.production.notConfiguredForRegistration\"\r\n ) as string;\r\n\r\n const productArray = productList?.products?.results\r\n ? productList.products.results\r\n .map((value) => {\r\n let valueToDisplay = { name: \"\", id: 0 };\r\n let canGenerate = value?.productInformation\r\n ?.isProductRegistrationEnabled\r\n ? \"\"\r\n : \" \" + notRegisterable;\r\n\r\n if (value?.productInformation?.name && value.productInformation.id) {\r\n valueToDisplay.name = value.productInformation.name + canGenerate;\r\n valueToDisplay.id = value.productInformation.id;\r\n }\r\n\r\n if (\r\n value?.productInformation?.name &&\r\n value.productInformation.itemNumber &&\r\n value.productInformation.id\r\n ) {\r\n valueToDisplay.name =\r\n value.productInformation.name +\r\n \" : \" +\r\n value.productInformation.itemNumber +\r\n canGenerate;\r\n valueToDisplay.id = value.productInformation.id;\r\n }\r\n\r\n return valueToDisplay;\r\n })\r\n .sort()\r\n : [];\r\n\r\n const CodeGrid = () => {\r\n if (!gridData.length) {\r\n return ;\r\n }\r\n\r\n return (\r\n \r\n );\r\n };\r\n\r\n const ActionButtons = () => {\r\n if (!gridData.length) {\r\n return ;\r\n }\r\n\r\n return (\r\n \r\n {exportLoading && !template ? (\r\n \r\n \r\n \r\n ) : (\r\n {\r\n setTemplate(false);\r\n exportBonusLabels({\r\n variables: {\r\n batchNumber: generateData.batchNumber,\r\n productDescription: articleName,\r\n useTemplate: false,\r\n overwrite: false,\r\n },\r\n });\r\n }}\r\n >\r\n \r\n \r\n )}\r\n {exportLoading && template ? (\r\n \r\n \r\n \r\n ) : (\r\n {\r\n setTemplate(true);\r\n exportBonusLabels({\r\n variables: {\r\n batchNumber: generateData.batchNumber,\r\n productDescription: articleName,\r\n useTemplate: true,\r\n overwrite: false,\r\n },\r\n });\r\n }}\r\n >\r\n \r\n \r\n )}\r\n
    \r\n {gridData.length > 0 && gridData[0]?.batchDeactivated ? : \r\n }\r\n
    \r\n \r\n deactivateBatch({\r\n variables: {\r\n batchNumber: generateData.batchNumber\r\n }\r\n }),\r\n },\r\n {\r\n title: \"generics.false\",\r\n click: () => {\r\n setDeactivateBatchDialog({ open: false, error: \"\" });\r\n },\r\n },\r\n ]}\r\n loading={deactivateLoading}\r\n error={deactivateBatchDialog.error}\r\n />\r\n
    \r\n );\r\n };\r\n\r\n const submitGenerate = () => {\r\n setShowGrid(false);\r\n if (!tempArticle) {\r\n setProductNeeded({ show: true, message: \"Please choose a product\" });\r\n } else {\r\n setProductNeeded({ show: false, message: \"\" });\r\n articleName = tempArticle.name\r\n .substring(0, tempArticle.name.search(\":\"))\r\n .trim();\r\n setGenerateCodesDialog(true)\r\n }\r\n \r\n };\r\n\r\n return (\r\n \r\n \r\n option.name}\r\n getOptionDisabled={(option) =>\r\n option.name.includes(notRegisterable) ? true : false\r\n }\r\n onChange={(event: any, newValue: any) => {\r\n if (newValue) {\r\n tempArticle = newValue;\r\n console.log(\"new value -> \", newValue);\r\n setGenerateData({ ...generateData, productId: newValue.id });\r\n }\r\n }}\r\n renderOption={(option) => {option.name}}\r\n renderInput={(params) => (\r\n }\r\n helperText={productNeeded.message}\r\n error={productNeeded.show}\r\n />\r\n )}\r\n />\r\n\r\n }\r\n onChange={(evt) =>\r\n setGenerateData({\r\n ...generateData,\r\n amount: Number(evt.target.value),\r\n })\r\n }\r\n />\r\n }\r\n onChange={(evt) =>\r\n setGenerateData({\r\n ...generateData,\r\n batchNumber: evt.target.value,\r\n })\r\n }\r\n />\r\n }\r\n onChange={evt =>\r\n setGenerateData({\r\n ...generateData,\r\n erpBatchNumber: evt.target.value\r\n })\r\n }\r\n />\r\n \r\n \r\n \r\n \r\n \r\n generateCodesFunc({\r\n variables: {\r\n params: {\r\n productId: tempArticle.id,\r\n amount: generateData.amount,\r\n batchNumber: generateData.batchNumber,\r\n erpBatchNumber: generateData.erpBatchNumber === \"\" ? null : generateData.erpBatchNumber\r\n },\r\n },\r\n }),\r\n },\r\n {\r\n title: \"generics.false\",\r\n click: () => {\r\n setGenerateCodesDialog(false);\r\n },\r\n },\r\n ]}\r\n loading={pollGenCodesLoading || genCodesLoading || pollInterval === 1000}\r\n />\r\n \r\n {batchError.error ? (\r\n \r\n {batchError.message}\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n {showGrid ? :
    }\r\n \r\n \r\n {showGrid ? :
    }\r\n \r\n \r\n exportBonusLabels({\r\n variables: {\r\n batchNumber: generateData.batchNumber,\r\n productDescription: articleName,\r\n useTemplate: template,\r\n overwrite: true,\r\n },\r\n }),\r\n },\r\n {\r\n title: \"generics.false\",\r\n click: () => {\r\n setExportOverwrite({ open: false, message: \"\" });\r\n setExportError(\"\");\r\n },\r\n },\r\n ]}\r\n loading={exportLoading}\r\n error={exportError}\r\n />\r\n \r\n );\r\n};\r\n\r\nexport const getColumnDefs = (translate: TranslateFunction): ColDef[] => {\r\n const columnDefs = [\r\n {\r\n headerName: translate(\r\n \"types.common.batchNumber\"\r\n ) as string,\r\n field: \"batchNumber\",\r\n sortable: false,\r\n filter: \"agTextColumnFilter\",\r\n width: 200,\r\n suppressMenu: true,\r\n },\r\n {\r\n headerName: translate(\r\n \"pages.production.registrationCodeGrid.erpBatchNumber\"\r\n ) as string,\r\n field: \"erpBatchNumber\",\r\n sortable: false,\r\n filter: \"agTextColumnFilter\",\r\n width: 200,\r\n suppressMenu: true,\r\n },\r\n {\r\n headerName: translate(\r\n 'types.common.productCode'\r\n ) as string,\r\n field: \"code\",\r\n sort: \"asc\",\r\n sortable: true,\r\n filter: \"agTextColumnFilter\",\r\n width: 120,\r\n suppressMenu: true,\r\n },\r\n {\r\n headerName: translate(\r\n \"pages.production.registrationCodeGrid.articleName\"\r\n ) as string,\r\n sortable: false,\r\n resizable: true,\r\n valueGetter: (params: any) => {\r\n return articleName;\r\n },\r\n filter: \"agTextColumnFilter\",\r\n width: 250,\r\n },\r\n {\r\n headerName: translate(\r\n \"pages.production.registrationCodeGrid.itemOfBatchSize\"\r\n ) as string,\r\n sortable: false,\r\n valueGetter: (params: any) => {\r\n return (\r\n ((params.node.rowIndex +\r\n 1 +\r\n \" \" +\r\n translate(\"pages.production.registrationCodeGrid.of\")) as string) +\r\n \" \" +\r\n totalResult\r\n );\r\n },\r\n filter: \"agTextColumnFilter\",\r\n width: 120,\r\n },\r\n {\r\n headerName: translate(\r\n \"pages.production.registrationCodeGrid.batchDeactivated\"\r\n ) as string,\r\n field: \"batchDeactivated\",\r\n sortable: false,\r\n filter: \"agTextColumnFilter\",\r\n width: 200,\r\n suppressMenu: true,\r\n },\r\n ];\r\n return columnDefs;\r\n};\r\n\r\nconst mapStateToProps = (appState: AppState) => ({\r\n user: appState.auth.user,\r\n gridState: appState.registrationGrid,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch: Dispatch) => ({\r\n actions: bindActionCreators({ setGridState, setColumnStates }, dispatch),\r\n});\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(withLocalize(GenerateCodes));\r\n","import React, { Fragment } from 'react';\r\nimport gql from 'graphql-tag'\r\nimport { Grid, Box } from '@material-ui/core';\r\nimport { createStyles, makeStyles } from \"@material-ui/core/styles\";\r\n\r\nimport GenerateCodes from \"./GenerateCodes\"\r\nimport { productList } from \"types/apolloGenerated/productList\"\r\nimport PageHeader from 'components/common/PageHeader';\r\nimport { CircularProgress } from '@material-ui/core';\r\nimport { useQuery } from 'react-apollo';\r\n\r\nconst useStyles = makeStyles(() => {\r\n return createStyles({\r\n registrationOverview: {\r\n display: \"flex\",\r\n flexFlow: \"column\",\r\n\r\n \"& > .gridFilterHeader\": {\r\n flex: \"0 1 auto\",\r\n margin: \"0\",\r\n },\r\n\r\n \"& > .innerContent\": {\r\n flex: \"1 1 auto\",\r\n height: \"100%\",\r\n },\r\n },\r\n });\r\n});\r\n\r\nconst QUERY_PRODUCT = gql`\r\n query productList {\r\n products(pageSize: 0) {\r\n page\r\n pageSize\r\n totalResults\r\n results {\r\n productInformation {\r\n itemNumber\r\n name\r\n id\r\n isProductRegistrationEnabled\r\n }\r\n }\r\n }\r\n }\r\n`;\r\n\r\nconst RegistrationCodes: React.FC = () => {\r\n const classes = useStyles();\r\n\r\n const { data, loading } = useQuery(QUERY_PRODUCT)\r\n\r\n if (loading) return
    \r\n if (!data) return
    No Products Available
    \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\nexport default RegistrationCodes\r\n","import { ActionType, SearchAction } from 'redux/types/PartnerOverview';\r\n\r\nimport AgGridActionHelper from 'redux/actions/AgGridActionHelper';\r\n\r\n\r\nexport const { setGridState, setColumnStates } = AgGridActionHelper(ActionType.GRID);\r\n\r\nexport const search = (searchTerm: string | null): SearchAction => ({\r\n type: ActionType.SEARCH,\r\n payload: searchTerm\r\n});\r\n","import { ActionType, SearchAction } from 'redux/types/PartnerOverview';\r\n\r\nimport AgGridActionHelper from 'redux/actions/AgGridActionHelper';\r\n\r\n\r\nexport const { setGridState, setColumnStates } = AgGridActionHelper(ActionType.GRID);\r\n\r\nexport const searchWithPearls = (searchTerm: string | null): SearchAction => ({\r\n type: ActionType.SEARCH,\r\n payload: searchTerm\r\n});\r\n\r\n","import React from \"react\";\r\nimport { Translate, TranslateFunction } from \"react-localize-redux\";\r\nimport { Link } from \"react-router-dom\";\r\n\r\nimport gql from \"graphql-tag\";\r\nimport { organizationsGrid } from \"types/apolloGenerated/organizationsGrid\";\r\nimport { organizationsGridWithPearls } from \"types/apolloGenerated/organizationsGridWithPearls\";\r\n\r\nimport { ColDef } from \"@ag-grid-enterprise/all-modules\";\r\nimport \"@ag-grid-community/all-modules/dist/styles/ag-grid.css\";\r\nimport \"@ag-grid-community/all-modules/dist/styles/ag-theme-balham.css\";\r\n\r\nimport { UserProfile } from \"types/ToolboxEntities\";\r\n\r\nimport { factoryApolloConnector } from \"util/AgGridUtils\";\r\nimport CampUtils from \"util/CampUtils\";\r\nimport format from \"date-fns/format\";\r\n\r\nimport {\r\n PartnerType,\r\n OrganizationFilterOption,\r\n} from \"types/apolloGenerated/globalTypes\";\r\n\r\nexport const QUERY_PARTNER_LIST = gql`\r\n query organizationsGrid(\r\n $page: Int\r\n $pageSize: Int\r\n $filter: [OrganizationFilter]\r\n $sorting: [SortingCriterionForOrganizationFilterOption]\r\n ) {\r\n organizations(\r\n page: $page\r\n pageSize: $pageSize\r\n filter: $filter\r\n sorting: $sorting\r\n ) {\r\n page\r\n pageSize\r\n totalResults\r\n results {\r\n id\r\n name\r\n vatNumber\r\n hasEmployees\r\n employeeCount\r\n partnerType\r\n email\r\n externalId\r\n telephone\r\n creationTimeStamp\r\n address {\r\n street\r\n postalCode\r\n city\r\n countryCode\r\n }\r\n }\r\n }\r\n }\r\n`;\r\n\r\nexport const QUERY_PARTNER_LIST_WITH_PEARLS = gql`\r\n query organizationsGridWithPearls(\r\n $page: Int\r\n $pageSize: Int\r\n $filter: [OrganizationFilter]\r\n $sorting: [SortingCriterionForOrganizationFilterOption]\r\n ) {\r\n organizations(\r\n page: $page\r\n pageSize: $pageSize\r\n filter: $filter\r\n sorting: $sorting\r\n ) {\r\n page\r\n pageSize\r\n totalResults\r\n results {\r\n id\r\n name\r\n vatNumber\r\n hasEmployees\r\n employeeCount\r\n partnerType\r\n email\r\n externalId\r\n bonusaccount {\r\n pearls\r\n }\r\n telephone\r\n creationTimeStamp\r\n address {\r\n street\r\n postalCode\r\n city\r\n countryCode\r\n }\r\n }\r\n }\r\n }\r\n`;\r\n\r\n\r\nconst colMapping = {\r\n id: OrganizationFilterOption.ID,\r\n name: OrganizationFilterOption.NAME,\r\n partnerType: OrganizationFilterOption.PARTNER_TYPE,\r\n email: OrganizationFilterOption.EMAIL,\r\n \"address.city\": OrganizationFilterOption.CITY,\r\n \"address.countryCode\": OrganizationFilterOption.COUNTRY,\r\n \"address.postalCode\": OrganizationFilterOption.POSTAL_CODE,\r\n creationTimeStamp: OrganizationFilterOption.CREATION_TIME_STAMP,\r\n vatNumber: OrganizationFilterOption.VAT_NUMBER,\r\n employeeCount: OrganizationFilterOption.EMPLOYEE_COUNT,\r\n hasEmployees: OrganizationFilterOption.HAS_EMPLOYEES,\r\n};\r\n\r\nconst searchColumns = [\r\n OrganizationFilterOption.NAME,\r\n OrganizationFilterOption.CITY,\r\n OrganizationFilterOption.EMAIL,\r\n OrganizationFilterOption.POSTAL_CODE,\r\n OrganizationFilterOption.VAT_NUMBER,\r\n //OrganizationFilterOption.PARTNER_TYPE\r\n];\r\n\r\nexport const apolloConnectorBySearch = (searchTerm: string | null) => {\r\n // console.log(\"apollostringstuff: \", searchTerm);\r\n return factoryApolloConnector(\r\n QUERY_PARTNER_LIST,\r\n (data: organizationsGrid) => data.organizations,\r\n colMapping,\r\n {\r\n search: {\r\n searchCols: searchColumns as string[],\r\n searchTerm,\r\n },\r\n }\r\n );\r\n};\r\n\r\nexport const apolloConnectorBySearchWithPearls = (\r\n searchTerm: string | null\r\n) => {\r\n // console.log(\"apollostringstuff: \", searchTerm);\r\n return factoryApolloConnector(\r\n QUERY_PARTNER_LIST_WITH_PEARLS,\r\n (data: organizationsGridWithPearls) => data.organizations,\r\n colMapping,\r\n {\r\n search: {\r\n searchCols: searchColumns as string[],\r\n searchTerm,\r\n },\r\n }\r\n );\r\n};\r\n\r\n\r\nexport const getColumnDefsWithPearls = (\r\n translate: TranslateFunction,\r\n user: UserProfile | null\r\n): ColDef[] => {\r\n const columnDef = getColumnDefs(translate, user);\r\n\r\n columnDef.push({\r\n headerName: translate(\"types.common.pearls\") as string,\r\n field: \"bonusaccount.pearls\",\r\n filter: \"agNumberColumnFilter\",\r\n cellRenderer: \"PearlsCount\",\r\n width: 60,\r\n suppressMenu: true,\r\n });\r\n\r\n return columnDef;\r\n};\r\n\r\nconst FormatDate: React.FC = ({ data, value }) => {\r\n if (!(data && value)) {\r\n return
    ;\r\n }\r\n return (\r\n \r\n {(translate) => {\r\n return (\r\n
    \r\n {format(\r\n new Date(value),\r\n translate.translate(\"generics.dateTimeFormatFNSShort\") as string\r\n )}\r\n
    \r\n );\r\n }}\r\n
    \r\n );\r\n};\r\n\r\nexport const getColumnDefs = (\r\n translate: TranslateFunction,\r\n user: UserProfile | null\r\n): ColDef[] => {\r\n const columnDefs = [\r\n {\r\n headerName: translate(\"generics.id\") as string,\r\n field: \"id\",\r\n filter: \"agNumberColumnFilter\",\r\n cellRenderer: \"PartnerLink\",\r\n width: 60,\r\n suppressMenu: true,\r\n },\r\n {\r\n headerName: translate(\"types.organization.name\") as string,\r\n field: \"name\",\r\n width: 280,\r\n },\r\n {\r\n headerName: translate(\"types.organization.partnerType\") as string,\r\n field: \"partnerType\",\r\n filter: \"agSetColumnFilter\",\r\n filterParams: {\r\n filterOptions: [\"contains\"],\r\n suppressAndOrCondition: true,\r\n values: CampUtils.getEnumAsArray(PartnerType),\r\n },\r\n width: 100,\r\n sortable: false,\r\n },\r\n {\r\n headerName: translate(\"types.address.postalCode\") as string,\r\n field: \"address.postalCode\",\r\n width: 100,\r\n },\r\n {\r\n headerName: translate(\"types.address.city\") as string,\r\n field: \"address.city\",\r\n width: 100,\r\n },\r\n {\r\n headerName: translate(\"types.address.countryCode\") as string,\r\n field: \"address.countryCode\",\r\n filter: user ? \"agSetColumnFilter\" : false,\r\n filterParams: {\r\n filterOptions: [\"contains\"],\r\n suppressAndOrCondition: true,\r\n values: user ? user.allowedCountries : [],\r\n },\r\n width: 100,\r\n },\r\n {\r\n headerName: translate(\"types.organization.generalEmail\") as string,\r\n field: \"email\",\r\n width: 220,\r\n },\r\n {\r\n headerName: translate(\"types.organization.externalId\") as string,\r\n field: \"externalId\",\r\n width: 220,\r\n },\r\n {\r\n headerName: translate(\"types.organization.joinDate\") as string,\r\n field: \"creationTimeStamp\",\r\n width: 120,\r\n cellRenderer: \"FormatDate\",\r\n },\r\n {\r\n headerName: translate(\"types.product.hasEmployees\") as string,\r\n field: \"hasEmployees\",\r\n sortable: true,\r\n cellRenderer: \"HasEmployees\",\r\n filter: \"agSetColumnFilter\",\r\n filterParams: {\r\n filterOptions: [\"contains\"],\r\n suppressAndOrCondition: true,\r\n },\r\n width: 140,\r\n },\r\n {\r\n headerName: translate(\"types.product.regEmployeeCount\") as string,\r\n field: \"employeeCount\",\r\n filter: \"agNumberColumnFilter\",\r\n width: 170,\r\n },\r\n {\r\n headerName: translate(\"types.product.vatNumber\") as string,\r\n field: \"vatNumber\",\r\n width: 120,\r\n },\r\n ];\r\n return columnDefs;\r\n};\r\n\r\nexport const gridOptions = {\r\n getRowStyle: checkForEmployee,\r\n};\r\n\r\nfunction checkForEmployee(params: any) {\r\n if (params.data?.employeeCount === 0) {\r\n return { \"background-color\": \"rgba(238,64,64,0.13)\" };\r\n }\r\n}\r\n\r\ninterface CellRenderer {\r\n value: any;\r\n data: { id: number };\r\n}\r\n\r\nconst PartnerLink: React.FC = ({ data, value }) => {\r\n if (!data) {\r\n return
    ;\r\n }\r\n return {value};\r\n};\r\n\r\nconst PearlsCount: React.FC = ({ data, value }) => {\r\n if (value && value === \"0\") {\r\n return
    ;\r\n } else if (value && value !== \"0\") {\r\n return
    {value}
    ;\r\n }\r\n return
    ;\r\n};\r\n\r\nconst HasEmployees: React.FC = ({ data, value }) => {\r\n if (value) {\r\n return Yes;\r\n } else return No;\r\n};\r\n\r\nconst PartnerTypeCell: React.FC = ({ data, value }) => {\r\n if (!data) {\r\n return
    ;\r\n }\r\n return (\r\n \r\n types.organization.partnerType.{value?.toLowerCase()}\r\n \r\n );\r\n};\r\n\r\nexport const CellRenderer = {\r\n PartnerLink,\r\n PearlsCount,\r\n PartnerTypeCell,\r\n FormatDate,\r\n HasEmployees,\r\n};\r\n","import gql from \"graphql-tag\";\r\n\r\nconst DELETE_ORGANISATION = gql`\r\n mutation deleteOrganisation($organizationId: Int!) {\r\n organization {\r\n deleteOrganization(organizationId: $organizationId)\r\n }\r\n }\r\n`;\r\n\r\nexport default DELETE_ORGANISATION;\r\n","import React from \"react\";\r\n\r\nimport { createStyles, Theme, makeStyles } from \"@material-ui/core/styles\";\r\nimport {\r\n Checkbox,\r\n FormControl,\r\n Select,\r\n MenuItem,\r\n Input,\r\n ListItemText,\r\n} from \"@material-ui/core\";\r\n\r\nimport { UserProfile } from \"types/ToolboxEntities\";\r\nimport { AppState } from \"redux/store\";\r\nimport { connect } from \"react-redux\";\r\nimport { Translate } from \"react-localize-redux\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n formControl: {\r\n marginTop: theme.spacing(2),\r\n minWidth: 120,\r\n maxWidth: 300,\r\n },\r\n })\r\n);\r\n\r\nconst ITEM_HEIGHT = 48;\r\nconst ITEM_PADDING_TOP = 8;\r\nconst MenuProps = {\r\n PaperProps: {\r\n style: {\r\n //8.5 is the amount of items to show in the countries dropdown/dropdown height\r\n maxHeight: ITEM_HEIGHT * 8.5 + ITEM_PADDING_TOP,\r\n width: 250,\r\n },\r\n },\r\n};\r\n\r\ninterface MultiSelectPara {\r\n selected: string[];\r\n onChange: (selected: string[]) => void;\r\n user: UserProfile | null;\r\n allowMultipleSelection?: boolean;\r\n showSelectAll?: boolean;\r\n}\r\n\r\nconst MultiSelect: React.FC = ({\r\n selected,\r\n onChange,\r\n user,\r\n allowMultipleSelection = true,\r\n showSelectAll = true,\r\n}) => {\r\n const classes = useStyles();\r\n if (user === null || user.allowedCountries.length < 2) {\r\n return null;\r\n }\r\n\r\n //const isSelectedAll = selected.length === 0 || (selected.length === 1 && selected[0] === 'all') || (selected.length >= user.allowedCountries.length);\r\n const isSelectedAll =\r\n (selected.length === 1 && selected[0] === \"all\") ||\r\n selected.length >= user.allowedCountries.length;\r\n //const realSelected: string[] = isSelectedAll ? user.allowedCountries : selected;\r\n const realSelected: string[] = selected;\r\n\r\n function arraysEqual(a: string[], b: string[]) {\r\n if (a === b) return true;\r\n if (a == null || b == null) return false;\r\n if (a.length !== b.length) return false;\r\n\r\n for (var i = 0; i < a.length; ++i) {\r\n if (a[i] !== b[i]) return false;\r\n }\r\n return true;\r\n }\r\n\r\n const change = (\r\n event: React.ChangeEvent<{ name?: string | undefined; value: unknown }>,\r\n child: React.ReactNode\r\n ) => {\r\n const myKey = (child as React.ReactElement).key ?? \"\";\r\n const keyIncludesAll = typeof myKey === \"string\" && myKey.includes(\"all\");\r\n if (child && keyIncludesAll) {\r\n if (arraysEqual(selected, user.allowedCountries)) {\r\n onChange([\"\"]);\r\n } else {\r\n onChange(user.allowedCountries);\r\n }\r\n } else {\r\n const eventTargetVal = event.target.value as string[];\r\n if (eventTargetVal[0] === \"\") eventTargetVal.shift();\r\n onChange(eventTargetVal);\r\n }\r\n };\r\n\r\n return (\r\n \r\n {({ translate }) => (\r\n \r\n }\r\n renderValue={(realSelected) =>\r\n isSelectedAll\r\n ? (translate(\"components.filter.multiSelect.all\") as string)\r\n : (realSelected as string[]).join(\", \")\r\n }\r\n MenuProps={MenuProps}\r\n onChange={change}\r\n style={{ width: \"200px\" }}\r\n >\r\n {showSelectAll && (\r\n \r\n \r\n \r\n \r\n )}\r\n {user.allowedCountries.map((country) => (\r\n \r\n -1} />\r\n \r\n \r\n ))}\r\n \r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nconst mapStateToProps = (appState: AppState) => ({\r\n user: appState.auth.user,\r\n});\r\n\r\nexport default connect(mapStateToProps)(MultiSelect);\r\n","import React, { useState, useEffect, Fragment } from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport { bindActionCreators, Dispatch } from \"redux\";\r\nimport { withApollo, OperationVariables } from \"react-apollo\";\r\nimport {\r\n Translate,\r\n withLocalize,\r\n LocalizeContextProps,\r\n} from \"react-localize-redux\";\r\nimport { fromJS, List, Range } from \"immutable\";\r\n\r\nimport { TextField, Box } from \"@material-ui/core\";\r\nimport { createStyles, Theme, makeStyles } from \"@material-ui/core/styles\";\r\nimport { ToggleButtonGroup, ToggleButton } from \"@material-ui/lab\";\r\nimport {\r\n MenuItemDef,\r\n GetContextMenuItemsParams,\r\n} from \"@ag-grid-enterprise/all-modules\";\r\n\r\nimport \"@ag-grid-community/all-modules/dist/styles/ag-grid.css\";\r\nimport \"@ag-grid-community/all-modules/dist/styles/ag-theme-balham.css\";\r\n\r\nimport debounce from \"debounce\";\r\nimport ApolloClient from \"apollo-client\";\r\n\r\nimport store, { AppState } from \"redux/store\";\r\nimport { State as OrgOverviewState } from \"redux/types/PartnerOverview\";\r\nimport {\r\n setGridState,\r\n setColumnStates,\r\n search,\r\n} from \"redux/actions/PartnerOverviewActions\";\r\n\r\nimport {\r\n setGridState as setGridWithPearlsState,\r\n setColumnStates as setColumnWithPearlsStates,\r\n searchWithPearls,\r\n} from \"redux/actions/PartnerOverviewWithPearlsActions\";\r\n\r\nimport {\r\n apolloConnectorBySearchWithPearls,\r\n getColumnDefsWithPearls,\r\n gridOptions,\r\n QUERY_PARTNER_LIST,\r\n QUERY_PARTNER_LIST_WITH_PEARLS,\r\n} from \"./GridConfig\";\r\nimport { organizationsGrid as OrgGrid } from \"types/apolloGenerated/organizationsGrid\";\r\nimport PageDialog from \"components/common/PageDialog\";\r\nimport DELETE_ORGANISATION from \"commonQueries/deleteOrganisation\";\r\nimport { useMutation } from \"react-apollo\";\r\nimport {\r\n deleteOrganisation as MutationData,\r\n deleteOrganisationVariables as MutationVars,\r\n} from \"types/apolloGenerated/deleteOrganisation\";\r\n\r\nimport { UserProfile } from \"types/ToolboxEntities\";\r\n\r\nimport { getFilterValues, getVarSetsQueriedByGrids } from \"util/AgGridUtils\";\r\n\r\nimport AgGrid from \"components/common/Grid/AgGrid\";\r\nimport CountryFilter from \"components/common/CountryFilter\";\r\nimport PageHeader from \"components/common/PageHeader\";\r\nimport GridFilterHeader from \"components/common/Grid/GridFilterHeader\";\r\nimport * as Types from \"../../../types/ToolboxEntities\";\r\n\r\nimport {\r\n getColumnDefs,\r\n apolloConnectorBySearch,\r\n CellRenderer,\r\n} from \"./GridConfig\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) => {\r\n return createStyles({\r\n partnerOverview: {\r\n display: \"flex\",\r\n flexFlow: \"column\",\r\n\r\n \"& > .gridFilterHeader\": {\r\n flex: \"0 1 auto\",\r\n },\r\n\r\n \"& > .innerContent\": {\r\n flex: \"1 1 100%\",\r\n height: \"100%\",\r\n },\r\n },\r\n\r\n innerHeader: {\r\n flex: \"0 1 auto\",\r\n display: \"flex\",\r\n margin: \"0 -20px 20px -20px\",\r\n alignItems: \"flex-end\",\r\n justifyContent: \"space-between\",\r\n\r\n \"& > *\": {\r\n flex: \"0 1 auto\",\r\n margin: \"0 20px\",\r\n minWidth: \"170px\",\r\n },\r\n\r\n \"& > .filter\": {\r\n flex: \"1 1 auto\",\r\n maxWidth: \"250px\",\r\n },\r\n },\r\n\r\n backgroundError: {\r\n minWidth: \"115px\",\r\n \"&.Mui-selected\": {\r\n backgroundColor: \"##FFE8EC\",\r\n \"&:hover\": {\r\n backgroundColor: \"rgba(102, 107, 110, 0.05)\",\r\n },\r\n },\r\n \"&:hover\": {\r\n backgroundColor: \"rgba(102, 107, 110, 0.05)\",\r\n },\r\n },\r\n\r\n innerHeaderRight: {\r\n flex: \"0 1 auto\",\r\n display: \"flex\",\r\n alignItems: \"flex-end\",\r\n margin: 0,\r\n border: \"solid 2px grey20\",\r\n width: \"350px\",\r\n borderRadius: \"5px\",\r\n height: \"48px\",\r\n\r\n \"& > *\": {\r\n flex: \"0 1 auto\",\r\n margin: \"0 20px\",\r\n minWidth: \"170px\",\r\n },\r\n },\r\n });\r\n});\r\n\r\nconst debouncedSearch = debounce(\r\n (\r\n searchTerm: string,\r\n oldSearchTerm: string | null,\r\n searchAction: typeof search\r\n ) => {\r\n if (searchTerm.length >= 3) {\r\n searchAction(searchTerm);\r\n } else if (\r\n searchTerm.length === 0 &&\r\n (oldSearchTerm === null || oldSearchTerm.length > 0)\r\n ) {\r\n searchAction(null);\r\n }\r\n },\r\n 500\r\n);\r\n\r\ninterface PartnerListPara extends LocalizeContextProps {\r\n user: UserProfile | null;\r\n partnerOverviewState: OrgOverviewState;\r\n partnerOverviewWithPearlsState: OrgOverviewState;\r\n actions: {\r\n setGridState: typeof setGridState;\r\n setColumnStates: typeof setColumnStates;\r\n search: typeof search;\r\n setGridWithPearlsState: typeof setGridState;\r\n setColumnWithPearlsStates: typeof setColumnWithPearlsStates;\r\n searchWithPearls: typeof searchWithPearls;\r\n };\r\n client: ApolloClient;\r\n}\r\n\r\nconst PartnerList: React.FC = ({\r\n user,\r\n partnerOverviewState,\r\n partnerOverviewWithPearlsState,\r\n actions,\r\n translate,\r\n client,\r\n}) => {\r\n const classes = useStyles();\r\n const [open, setOpen] = React.useState(false);\r\n const [orgId, setOrgId] = React.useState(-1);\r\n const [delOrgError, setDelOrgError] = React.useState(\"\");\r\n const [update, setUpdate] = React.useState(true);\r\n const [gridWithPearls, setGridWithPearls] = React.useState(false);\r\n const [confirmDialog, setConfirmDialog] = useState(false);\r\n\r\n const refetchQueries = () => {\r\n //get all the cached variables\r\n const allQueryVariables = getVarSetsQueriedByGrids(QUERY_PARTNER_LIST);\r\n const allQueryVariablesWithPearls = getVarSetsQueriedByGrids(\r\n QUERY_PARTNER_LIST_WITH_PEARLS\r\n );\r\n //group them by query filter and sort\r\n const cacheGroups = fromJS(\r\n allQueryVariables\r\n ).groupBy((vars: OperationVariables) => vars.remove(\"page\"));\r\n\r\n const cacheGroupsWithPearls = fromJS(\r\n allQueryVariablesWithPearls\r\n ).groupBy((vars: OperationVariables) => vars.remove(\"page\"));\r\n\r\n const groupByRange = (input: any) =>\r\n input.sort().reduce((acc: any, value: any) => {\r\n if (acc.last()?.last() + 1 === value) {\r\n return acc.updateIn([acc.size - 1], (last: any) => last.push(value));\r\n } else {\r\n return acc.push(List([value]));\r\n }\r\n }, List());\r\n\r\n const groupedRanges = cacheGroups.map((group: any) =>\r\n groupByRange(group.map((value: any) => value.get(\"page\")))\r\n );\r\n\r\n const groupedRangesWithPearls = cacheGroupsWithPearls.map((group: any) =>\r\n groupByRange(group.map((value: any) => value.get(\"page\")))\r\n );\r\n\r\n return (\r\n groupedRanges\r\n .entrySeq()\r\n .flatMap((pair: any) =>\r\n pair[1].map((pageGroup: any) => ({\r\n query: QUERY_PARTNER_LIST,\r\n variables: { page: pageGroup.last(), ...pair[0].toJS() },\r\n }))\r\n )\r\n .toArray(),\r\n groupedRangesWithPearls\r\n .entrySeq()\r\n .flatMap((pair: any) =>\r\n pair[1].map((pageGroup: any) => ({\r\n query: QUERY_PARTNER_LIST_WITH_PEARLS,\r\n variables: { page: pageGroup.last(), ...pair[0].toJS() },\r\n }))\r\n )\r\n .toArray()\r\n );\r\n };\r\n\r\n const [deleteOrganisation, { loading: orgLoad }] = useMutation<\r\n MutationData,\r\n MutationVars\r\n >(DELETE_ORGANISATION, {\r\n onCompleted: (data) => {\r\n if (!data.organization?.deleteOrganization) {\r\n setDelOrgError(\"Unable to delete organization. Please try again later\");\r\n } else {\r\n setUpdate(!update);\r\n setOrgId(-1);\r\n setOpen(false);\r\n }\r\n },\r\n onError: (error) => setDelOrgError(error.message),\r\n refetchQueries,\r\n awaitRefetchQueries: true,\r\n update: (cache) => {\r\n //get all the cached variables\r\n const allQueryVariables = getVarSetsQueriedByGrids(QUERY_PARTNER_LIST);\r\n //group them by query filter and sort\r\n const cacheGroups = fromJS(\r\n allQueryVariables\r\n ).groupBy((vars: OperationVariables) => vars.remove(\"page\"));\r\n\r\n const groupByRange = (input: any) =>\r\n input.sort().reduce((acc: any, value: any) => {\r\n if (acc.last()?.last() + 1 === value) {\r\n return acc.updateIn([acc.size - 1], (last: any) =>\r\n last.push(value)\r\n );\r\n } else {\r\n return acc.push(List([value]));\r\n }\r\n }, List());\r\n\r\n const splitIntoChunks = (list: any, chunkSize = 1) => {\r\n return Range(0, list.count(), chunkSize).map((chunkStart) =>\r\n list.slice(chunkStart, chunkStart + chunkSize)\r\n );\r\n };\r\n\r\n const groupedRanges = cacheGroups.map((group: any) =>\r\n groupByRange(group.map((value: any) => value.get(\"page\")))\r\n );\r\n\r\n groupedRanges.forEach((pageGroups: any, otherVars: any) => {\r\n pageGroups.forEach((pageGroup: any) => {\r\n const allCaches = pageGroup.map((page: any) =>\r\n cache.readQuery({\r\n query: QUERY_PARTNER_LIST,\r\n variables: { page, ...otherVars.toJS() },\r\n })\r\n );\r\n const allRows = allCaches.flatMap(\r\n (pageCache: any) => pageCache?.organizations?.results ?? []\r\n );\r\n\r\n const updatedRows = allRows.filter((data: any) => data?.id !== orgId);\r\n const pagesToUpdate = splitIntoChunks(\r\n updatedRows,\r\n otherVars.get(\"pageSize\")\r\n )\r\n .slice(0, -1)\r\n .toArray();\r\n\r\n for (let i = 0; i < pagesToUpdate.length; i++) {\r\n const pageCache = allCaches.get(i);\r\n const nextData = {\r\n ...pageCache,\r\n organizations: {\r\n ...pageCache.organizations,\r\n results: pagesToUpdate[i].toArray(),\r\n },\r\n };\r\n\r\n cache.writeQuery({\r\n query: QUERY_PARTNER_LIST,\r\n variables: { page: pageGroup.get(i), ...otherVars.toJS() },\r\n data: nextData,\r\n });\r\n }\r\n });\r\n });\r\n },\r\n });\r\n\r\n const [search, setSearch] = useState(\r\n partnerOverviewState.search || \"\"\r\n );\r\n\r\n const [apolloConnector, setApolloConnector] = useState<\r\n ReturnType\r\n >(apolloConnectorBySearch(partnerOverviewState.search));\r\n\r\n const [apolloConnectorWithPearls, setApolloConnectorWithPearls] = useState<\r\n ReturnType\r\n >(apolloConnectorBySearchWithPearls(partnerOverviewWithPearlsState.search));\r\n\r\n useEffect(() => {\r\n setApolloConnector(apolloConnectorBySearch(partnerOverviewState.search));\r\n setApolloConnectorWithPearls(\r\n apolloConnectorBySearchWithPearls(partnerOverviewWithPearlsState.search)\r\n );\r\n }, [partnerOverviewState.search, partnerOverviewWithPearlsState.search]);\r\n\r\n if (!user) {\r\n return null;\r\n }\r\n\r\n const gridState = partnerOverviewState.grid;\r\n const gridStateWithPearls = partnerOverviewWithPearlsState.grid;\r\n\r\n const changeFilter = (\r\n filterName: string,\r\n newFilterValues: string[] | false\r\n ) => {\r\n const newFilter = Object.assign({}, gridState.filterModel);\r\n const newFilterWithPearls = Object.assign(\r\n {},\r\n gridStateWithPearls.filterModel\r\n );\r\n if (newFilterValues !== false) {\r\n newFilter[filterName] = {\r\n filterType: \"set\",\r\n values: newFilterValues,\r\n };\r\n newFilterWithPearls[filterName] = {\r\n filterType: \"set\",\r\n values: newFilterValues,\r\n };\r\n } else {\r\n delete newFilter[filterName];\r\n delete newFilterWithPearls[filterName];\r\n }\r\n actions.setGridState(gridState.page, gridState.sortModel, newFilter);\r\n actions.setGridWithPearlsState(\r\n gridStateWithPearls.page,\r\n gridStateWithPearls.sortModel,\r\n newFilterWithPearls\r\n );\r\n\r\n return;\r\n };\r\n\r\n const changeTypeFilter = (\r\n event: React.MouseEvent,\r\n value: any\r\n ) => {\r\n let newFilterValues = value as string[];\r\n changeFilter(\r\n \"partnerType\",\r\n newFilterValues.length > 0 &&\r\n newFilterValues.length < 4 &&\r\n newFilterValues\r\n );\r\n };\r\n\r\n const selectedTypes = gridState.filterModel.partnerType\r\n ? getFilterValues(gridState.filterModel.partnerType)\r\n : [];\r\n\r\n const changeCountryFilter = (newFilterValues: string[]) => {\r\n changeFilter(\r\n \"address.countryCode\",\r\n newFilterValues.length > 0 &&\r\n newFilterValues.length < user.allowedCountries.length &&\r\n newFilterValues\r\n );\r\n };\r\n\r\n const selectedCountries = gridState.filterModel[\"address.countryCode\"]\r\n ? getFilterValues(gridState.filterModel[\"address.countryCode\"])\r\n : user.allowedCountries;\r\n\r\n const changeSearch = (event: React.ChangeEvent) => {\r\n setSearch(event.target.value);\r\n // setSearchWithPearls(event.target.value);\r\n debouncedSearch(\r\n event.target.value,\r\n partnerOverviewState.search || partnerOverviewWithPearlsState.search,\r\n actions.search\r\n );\r\n };\r\n\r\n const getContextMenuItems = () => {\r\n const result: (string | MenuItemDef)[] = [\r\n \"copy\",\r\n \"copyWithHeaders\",\r\n \"paste\",\r\n \"export\",\r\n ];\r\n\r\n return (params: GetContextMenuItemsParams): (string | MenuItemDef)[] => {\r\n if (params && params.node) {\r\n setOrgId(params.node.data.id);\r\n }\r\n return result;\r\n };\r\n };\r\n\r\n let salesRep = false;\r\n store.getState().auth.user?.roles.forEach((item: Types.Role) => {\r\n if (item.roleName === \"SalesRep\") {\r\n salesRep = true;\r\n }\r\n });\r\n\r\n function setDefaultSort(newFilterValues: string[]) {\r\n changeFilter(\r\n \"partnerType\",\r\n newFilterValues.length > 0 &&\r\n newFilterValues.length < 4 &&\r\n newFilterValues\r\n );\r\n }\r\n\r\n return (\r\n \r\n {({ translate }) => (\r\n \r\n {\r\n setGridWithPearls(true);\r\n setConfirmDialog(false);\r\n },\r\n },\r\n {\r\n title: \"generics.cancel\",\r\n click: () => {\r\n setConfirmDialog(false);\r\n },\r\n },\r\n ]}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n
    \r\n \r\n \r\n \r\n\r\n {!salesRep ? (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ) : (\r\n
    \r\n )}\r\n
    \r\n \r\n\r\n
    \r\n {gridWithPearls ? (\r\n \r\n ) : (\r\n {\r\n if (salesRep) setDefaultSort([\"TWP\"]);\r\n }}\r\n />\r\n )}\r\n
    \r\n
    \r\n {\r\n setDelOrgError(\"\");\r\n deleteOrganisation({\r\n variables: {\r\n organizationId: orgId,\r\n },\r\n });\r\n },\r\n },\r\n {\r\n title: \"generics.cancel\",\r\n click: () => {\r\n setOpen(false);\r\n setOrgId(-1);\r\n setDelOrgError(\"\");\r\n },\r\n },\r\n ]}\r\n loading={orgLoad}\r\n error={delOrgError}\r\n />\r\n
    \r\n )}\r\n
    \r\n );\r\n};\r\n\r\nconst mapStateToProps = (appState: AppState) => ({\r\n user: appState.auth.user,\r\n partnerOverviewState: appState.partnerOverview,\r\n partnerOverviewWithPearlsState: appState.partnerOverview,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch: Dispatch) => ({\r\n actions: bindActionCreators(\r\n {\r\n setGridState,\r\n setColumnStates,\r\n search,\r\n setGridWithPearlsState,\r\n setColumnWithPearlsStates,\r\n searchWithPearls,\r\n },\r\n dispatch\r\n ),\r\n});\r\n\r\nexport default withLocalize(\r\n withApollo(connect(mapStateToProps, mapDispatchToProps)(PartnerList))\r\n);\r\n","import { ThunkAction, ThunkDispatch } from 'redux-thunk'\r\n\r\nimport { Error } from 'types/CampGuideTypes';\r\n\r\nimport { ActionType, Action, FieldErrors, PartnerGroupDiff } from 'redux/types/PartnerDetails';\r\n\r\nimport * as Types from 'types/ToolboxEntities';\r\n\r\nimport GraphQL from 'util/GraphQL';\r\n\r\n\r\n\r\nexport const dirty = (): Action => ({\r\n type: ActionType.DIRTY\r\n});\r\n\r\nexport const error = (globalError: Error[] = [], propertyError: FieldErrors | null = null): Action => ({\r\n type: ActionType.ERROR,\r\n payload: {\r\n globalErrors: globalError,\r\n propertyErrors: propertyError\r\n }\r\n});\r\n\r\nexport const loaded = (organization: Types.Organization): Action => ({\r\n type: ActionType.LOADED,\r\n payload: organization\r\n});\r\n\r\nexport const loading = (): Action => ({\r\n type: ActionType.LOADING\r\n});\r\n\r\nexport const saving = (): Action => ({\r\n type: ActionType.SAVING\r\n});\r\n\r\nexport const load = (id: number): ThunkAction, {}, {}, Action> => {\r\n return async (dispatch: ThunkDispatch<{}, {}, Action>): Promise => {\r\n dispatch(loading());\r\n\r\n GraphQL.queryOrganization(id).then((organization: Types.Organization) => {\r\n //console.log('DATA', organization);\r\n dispatch(loaded(organization));\r\n }).catch((errorData: Error) => {\r\n console.log('ERROR', errorData);\r\n dispatch(error([errorData]));\r\n });\r\n };\r\n};\r\n\r\n\r\nexport const save = (organization: Types.Organization, groupsDiff: PartnerGroupDiff): ThunkAction, {}, {}, Action> => {\r\n return async (dispatch: ThunkDispatch<{}, {}, Action>): Promise => {\r\n dispatch(saving());\r\n // GraphQL.saveOrganization(organization, groupsDiff).then((newOrganization: Types.Organization) => {\r\n // dispatch(loaded(newOrganization));\r\n // }).catch((errorData: Error) => {\r\n // console.log('Error', organization);\r\n // console.log('ERROR', errorData);\r\n // dispatch(error([errorData]));\r\n // });\r\n };\r\n};","import React, { useState, useEffect, useCallback } from \"react\";\r\nimport { Map, GoogleApiWrapper, Marker, GoogleAPI, MapProps } from \"google-maps-react\";\r\nimport { Box, Theme, createStyles, Button, makeStyles, CircularProgress } from \"@material-ui/core\";\r\nimport cursor from \"resources/maps-cursor.png\";\r\nimport { GeoLocation } from \"types/ToolboxEntities\";\r\nimport { Country } from \"types/apolloGenerated/globalTypes\";\r\nimport { PartnerDetail_organization_address } from \"types/apolloGenerated/PartnerDetail\";\r\nimport { cancelablePromise } from \"util/CampUtils\";\r\nimport deepEqual from \"deep-equal\";\r\nimport { Translate } from \"react-localize-redux\";\r\n//import { ActionVerifiedUser } from \"material-ui/svg-icons\";\r\n\r\ninterface MapData {\r\n isNewMode: boolean\r\n google: GoogleAPI\r\n address: PartnerDetail_organization_address | null\r\n onChange: (value: any) => void\r\n};\r\n\r\ninterface MapLocationData {\r\n state: \"loading\" | \"correct\" | \"locationNotFound\" | \"unknownError\",\r\n location: google.maps.LatLngLiteral | undefined,\r\n}\r\n\r\nexport type LocationInfo = {\r\n street?: string | null;\r\n postalCode?: string | null;\r\n city?: string | null;\r\n countryCode?: Country | null;\r\n location?: GeoLocation | null;\r\n [key: string]: any | null;\r\n};\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n \"google-maps-container\": {\r\n position: \"relative\",\r\n paddingBottom: \"75%\",\r\n height: \"0\",\r\n width: \"95%\",\r\n marginLeft: \"75px\",\r\n \"&:hover $cursor-img\": {\r\n display: \"block\"\r\n }\r\n },\r\n \"cursor-img\": {\r\n zIndex: 999,\r\n height: \"50px\",\r\n width: \"50px\",\r\n top: \"50%\",\r\n left: \"50%\",\r\n position: \"absolute\",\r\n transform: \"translate(-50%, -50%)\",\r\n pointerEvents: \"none\",\r\n display: \"none\"\r\n },\r\n \"lat-lng-div\": {\r\n position: \"absolute\",\r\n bottom: \"-70px\",\r\n \"& div\": {\r\n display: \"inline\",\r\n whiteSpace: \"nowrap\",\r\n marginRight: \"10px\"\r\n },\r\n \"& button\": {\r\n marginTop: \"5px\"\r\n }\r\n },\r\n bwtBtn: {\r\n backgroundColor: '#005D8F',\r\n color: '#fff',\r\n fontSize: '12px'\r\n }\r\n })\r\n);\r\n\r\nconst convertLatLong = (locationInfo: GeoLocation | null | undefined): google.maps.LatLngLiteral | undefined => {\r\n if (locationInfo && locationInfo.latitude) {\r\n return {\r\n lat: Number(locationInfo.latitude.toFixed(4)),\r\n lng: Number(locationInfo.longitude.toFixed(4)),\r\n };\r\n }\r\n return undefined;\r\n};\r\n\r\nconst convertGoogleLatLng = (locationInfo: google.maps.LatLngLiteral | null | undefined): any | undefined => {\r\n if (locationInfo && locationInfo.lat) {\r\n return {\r\n latitude: Number(locationInfo.lat.toFixed(4)),\r\n longitude: Number(locationInfo.lng.toFixed(4))\r\n };\r\n }\r\n return undefined;\r\n};\r\n\r\nconst GoogleMapsMap: React.FunctionComponent = ({ google: GoogleAPI, onChange, address, isNewMode }) => {\r\n const classes = useStyles();\r\n\r\n const positionDB = convertLatLong(address?.location);\r\n\r\n const [isLoading, setLoading] = useState(false);\r\n const [positionGeoCode, setPositionGeoCode] = useState();\r\n const [positionCurrent, setPositionCurrent] = useState(positionDB);\r\n\r\n\r\n if (!positionCurrent && positionGeoCode) {\r\n console.log(\"!positionCurrent && positionGeoCode\");\r\n setPositionCurrent(positionGeoCode);\r\n\r\n }\r\n const changePosition = useCallback((newPosition: google.maps.LatLngLiteral | undefined) => {\r\n setPositionCurrent({ lat: Number(newPosition?.lat.toFixed(4)), lng: Number(newPosition?.lng.toFixed(4)) } as google.maps.LatLngLiteral);\r\n onChange(convertGoogleLatLng(newPosition));\r\n\r\n }, [onChange]);\r\n\r\n const [zoom, setZoom] = useState(18);\r\n\r\n const addressSearchString = address?.street && address.postalCode\r\n ? ((address.street || \"\") + \", \" + (address.postalCode || \"\") + \" \" + (address.city || \"\") + \", \" + (address.countryCode || \"\"))\r\n : '';\r\n\r\n const isMapSynchrone = deepEqual(positionGeoCode, positionCurrent);\r\n\r\n useEffect(() => {\r\n if (addressSearchString) {\r\n setLoading(true);\r\n\r\n const loadLatLonPromise = getLatLngFromAddress(addressSearchString).then((newGeoPosition) => {\r\n if (isMapSynchrone) {\r\n changePosition(newGeoPosition);\r\n }\r\n\r\n setPositionGeoCode(newGeoPosition);\r\n }).catch(() => {\r\n setPositionGeoCode(undefined);\r\n\r\n }).finally(() => {\r\n setLoading(false);\r\n });\r\n\r\n return loadLatLonPromise.doCancel;\r\n }\r\n\r\n }, [addressSearchString, isMapSynchrone, changePosition]);\r\n\r\n if (isLoading && !positionCurrent) {\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n\r\n if (!positionGeoCode && !positionCurrent) {\r\n return (\r\n \r\n {isNewMode ? null : }\r\n \r\n );\r\n }\r\n\r\n const mapChangeFunc = (evt: MapProps | undefined, map: google.maps.Map | undefined, setNewPos: boolean) => {\r\n let latLng = { lat: map!.getCenter().lat(), lng: map!.getCenter().lng() }\r\n\r\n // if zoom changed, set new zoom and positionGeoCode\r\n if (evt!.zoom !== map!.getZoom()) {\r\n setZoom(map!.getZoom());\r\n }\r\n\r\n changePosition(latLng);\r\n //console.log(latLng);\r\n };\r\n\r\n const isDifferent = !deepEqual(positionGeoCode, positionCurrent);\r\n\r\n return (\r\n \r\n { mapChangeFunc(evt, map, true); }}\r\n //onTilesloaded={(evt, map) => { mapChangeFunc(evt, map, false); }}\r\n >\r\n \r\n \r\n \"+\"\r\n {positionGeoCode && isDifferent ? ( // this is important\r\n
    \r\n
    lat: {positionGeoCode.lat}
    \r\n
    lng: {positionGeoCode.lng}
    \r\n
    )\r\n : \"\"}\r\n
    );\r\n};\r\n\r\n\r\nconst getLatLngFromAddress = (address: string | null | undefined) => {\r\n return cancelablePromise([(resolve, reject) => {\r\n if (address) {\r\n if (window.google) {\r\n let geocoder = new google.maps.Geocoder()\r\n let latLng: google.maps.LatLngLiteral | undefined = undefined;\r\n\r\n geocoder.geocode({ 'address': address }, (results, status) => {\r\n if (status === google.maps.GeocoderStatus.OK) {\r\n latLng = { lat: 0, lng: 0 };\r\n latLng.lat = Number(results[0].geometry.location.lat().toFixed(4));\r\n latLng.lng = Number(results[0].geometry.location.lng().toFixed(4));\r\n //console.log(\"new\", latLng);\r\n resolve(latLng);\r\n } else {\r\n reject('locationNotFound');\r\n return;\r\n }\r\n });\r\n } else {\r\n reject('missingGeocoder');\r\n }\r\n } else {\r\n reject('locationNotFound');\r\n return;\r\n }\r\n }]);\r\n};\r\n\r\nexport default GoogleApiWrapper({\r\n apiKey: \"AIzaSyCWlZ_Cq39bF7vr_x7lhNS_Z6u5uAM9F1M\"\r\n})(GoogleMapsMap);\r\n","import React, { HTMLAttributes } from 'react';\r\n\r\nimport Select, { ValueContainerProps, ControlProps, MultiValueProps, OptionProps, Props as SelectProps } from 'react-select';\r\n\r\nimport { MenuItem, Chip, TextField, BaseTextFieldProps, FormControl, FormHelperText } from '@material-ui/core';\r\nimport { createStyles, emphasize, makeStyles, Theme } from '@material-ui/core/styles';\r\nimport { Cancel as CancelIcon } from '@material-ui/icons';\r\n\r\nimport clsx from 'clsx';\r\n\r\nimport { Translate } from \"react-localize-redux\";\r\n\r\nimport { Error } from 'types/CampGuideTypes';\r\nimport { TranslateError } from './Error';\r\n\r\n\r\nexport interface MultiSelectOption {\r\n label: string;\r\n value: string;\r\n}\r\n\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n root: {\r\n flexGrow: 1,\r\n height: '100%',\r\n minWidth: 290,\r\n width: '100%',\r\n '&$error': {\r\n color: 'white'\r\n }\r\n },\r\n error: {},\r\n input: {\r\n display: 'flex',\r\n padding: 0,\r\n height: 'auto',\r\n },\r\n valueContainer: {\r\n display: 'flex',\r\n flexWrap: 'wrap',\r\n flex: 1,\r\n alignItems: 'center',\r\n overflow: 'hidden',\r\n },\r\n chip: {\r\n margin: theme.spacing(0.5, 0.25),\r\n },\r\n chipFocused: {\r\n backgroundColor: emphasize(\r\n theme.palette.type === 'light' ? theme.palette.grey[300] : theme.palette.grey[700],\r\n 0.08,\r\n ),\r\n },\r\n\r\n }),\r\n);\r\n\r\ntype InputComponentProps = Pick & HTMLAttributes;\r\n\r\nfunction inputComponent({ inputRef, ...props }: InputComponentProps) {\r\n return
    ;\r\n}\r\n\r\nfunction Control(props: ControlProps) {\r\n const {\r\n children,\r\n innerProps,\r\n innerRef,\r\n selectProps: { classes, TextFieldProps },\r\n } = props;\r\n\r\n return (\r\n \r\n );\r\n}\r\n\r\nfunction Option(props: OptionProps) {\r\n\r\n return (\r\n \r\n {props.children}\r\n \r\n );\r\n}\r\n\r\nfunction ValueContainer(props: ValueContainerProps) {\r\n return
    {props.children}
    ;\r\n}\r\n\r\nfunction MultiValue(props: MultiValueProps) {\r\n return (\r\n }\r\n />\r\n );\r\n}\r\n\r\nconst components = {\r\n Control,\r\n MultiValue,\r\n Option,\r\n ValueContainer\r\n};\r\n\r\n\r\n\r\ninterface MultiSelectInterface extends SelectProps {\r\n headline: string\r\n error?: Error | null\r\n}\r\n\r\nconst MultiSelect: React.FC = ({ headline, error, ...props }) => {\r\n const classes = useStyles();\r\n\r\n //console.log('props:', props);\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default MultiSelect;\r\n","import React, { useState, useEffect, useRef, useCallback, useMemo } from 'react';\r\nimport { Grid, TextField, createStyles, Theme } from '@material-ui/core';\r\nimport { makeStyles } from '@material-ui/core';\r\nimport DropDown from 'components/common/DropDown'\r\nimport GoogleMapsMap from './GoogleMapsMap'\r\nimport { PartnerDetail_organization, PartnerDetail_organization_address, PartnerDetail_organization_groups } from 'types/apolloGenerated/PartnerDetail';\r\nimport { Translate } from 'react-localize-redux';\r\n\r\nimport cloneDeep from 'clone-deep';\r\nimport { connect } from 'react-redux';\r\n\r\nimport MultiSelect, { MultiSelectOption } from 'components/common/MultiSelect';\r\nimport { PartnerGroups_organizationGroups } from 'types/apolloGenerated/PartnerGroups';\r\nimport { AuthStore } from 'redux/types/Auth';\r\nimport { AppState } from 'redux/store';\r\nimport format from \"date-fns/format\";\r\n\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n container: {\r\n width: \"100%\",\r\n marginBottom: \"50px\",\r\n paddingTop: \"15px\",\r\n \"& .MuiTextField-root, & .MuiFormControl-root\": {\r\n width: \"100%\",\r\n \"& .MuiInputLabel-outlined\": {\r\n transform: \"translate(14px, 15px) scale(1)\",\r\n fontSize: \"0.9rem\",\r\n },\r\n \"& .MuiInputLabel-outlined.MuiInputLabel-shrink\": {\r\n transform: \"translate(14px, -6px) scale(0.75)\",\r\n },\r\n },\r\n \"& .MuiGrid-grid-xs-6, & .MuiGrid-grid-xs-12\": {\r\n paddingLeft: \"30px\",\r\n paddingTop: \"25px\",\r\n display: \"inherit\",\r\n },\r\n \"& .MuiGrid-grid-xs-6 .MuiGrid-item:not(:first-child):not(:last-child)\": {\r\n padding: '0px 10px',\r\n },\r\n },\r\n TextField:{top:\"-10px\"}\r\n }));\r\n\r\nconst mapReduceToOptionType = (reduced: MultiSelectOption[], group: PartnerDetail_organization_groups | PartnerGroups_organizationGroups | null | undefined) => {\r\n if (group && !['bwt_twp', 'bwt_builder', 'bwt_operator', 'bwt_partner', 'bwt_planner', 'bwt_wholesaler', 'bwt_professional'].includes(group.name)) {\r\n reduced.push({\r\n value: group.id + '',\r\n label: group.name\r\n });\r\n }\r\n return reduced;\r\n};\r\n\r\nconst mapReduceToGroup = (reduced: PartnerGroups_organizationGroups[], optionType: MultiSelectOption | null | undefined) => {\r\n if (optionType && !['bwt_twp', 'bwt_builder', 'bwt_operator', 'bwt_partner', 'bwt_planner', 'bwt_wholesaler', 'bwt_professional',].includes(optionType.label)) {\r\n reduced.push({\r\n id: Number(optionType.value),\r\n name: optionType.label,\r\n __typename: 'OrganizationGroup'\r\n });\r\n }\r\n return reduced;\r\n};\r\n\r\nconst nulllAddress: PartnerDetail_organization_address = {\r\n __typename: 'Address',\r\n street: null,\r\n postalCode: null,\r\n city: null,\r\n countryCode: null,\r\n location: null\r\n};\r\n\r\ninterface PartnerInformationProps {\r\n auth: AuthStore\r\n isNewMode: boolean\r\n data: PartnerDetail_organization\r\n selectedGroups?: PartnerGroups_organizationGroups[]\r\n setSelectedGroups: (selected: PartnerGroups_organizationGroups[]) => void\r\n selectableGroups: PartnerGroups_organizationGroups[]\r\n onChangeFunc?: (value: any, name: string) => void\r\n};\r\n\r\nconst PartnerInformation: React.FC = ({ auth, data, isNewMode, selectedGroups = [], setSelectedGroups, selectableGroups = [], onChangeFunc = (value, name) => { } }) => {\r\n let classes = useStyles();\r\n\r\n const addressRef = useRef(data.address || nulllAddress);\r\n const [address, setAddress] = useState(cloneDeep(addressRef.current));\r\n const [isError, setIsError] = useState((data.partnerType === \"TWP\" && !data.vatNumber) ? true : false)\r\n const [helperText, setHelperText] = useState((data.partnerType === \"TWP\" && !data.vatNumber) ? \"Field Required\" : \"\")\r\n\r\n let variant: 'standard' | 'outlined' | 'filled' = 'standard';\r\n let autoComplete = 'off';\r\n \r\n\r\n const onTAXChange = (value:any, name: string) => {\r\n let text = \"\"\r\n let error = false\r\n if(data.partnerType === \"TWP\" && !value)\r\n { \r\n error = true\r\n text = \"Field Required\" \r\n }\r\n else \r\n { \r\n error = false\r\n text = \"\"\r\n }\r\n setHelperText(text)\r\n setIsError(error)\r\n onChangeFunc(value,name)\r\n }\r\n\r\n const onPartnerTypeChangeFunc = (evt:any) => {\r\n let temp = false\r\n let text = \"\"\r\n if(evt === \"TWP\" && !data.vatNumber)\r\n { \r\n temp = true \r\n text = \"Field Required\"\r\n }\r\n else \r\n { \r\n temp = false \r\n text = \"\"\r\n }\r\n setIsError(temp)\r\n setHelperText(text)\r\n onChangeFunc(evt,\"partnerType\")\r\n }\r\n\r\n const onBlurFunc = (evt: React.SyntheticEvent) => {\r\n setAddress(cloneDeep(addressRef.current));\r\n };\r\n\r\n const onChangeAddress = useCallback((value: any, name: string) => {\r\n if (name === \"address/street\") {\r\n addressRef.current.street = value;\r\n } else if (name === \"address/postalCode\") {\r\n addressRef.current.postalCode = value;\r\n } else if (name === \"address/city\") {\r\n addressRef.current.city = value;\r\n } else if (name === \"address/countryCode\") {\r\n addressRef.current.countryCode = value;\r\n }\r\n\r\n onChangeFunc(value, name);\r\n }, [onChangeFunc]);\r\n\r\n const onChangePosition = useCallback((value: Geolocation) => {\r\n onChangeFunc(value, \"address/location\");\r\n }, [onChangeFunc]);\r\n\r\n useEffect(() => {\r\n addressRef.current = data.address || nulllAddress;\r\n setAddress(cloneDeep(addressRef.current));\r\n }, [data.address]);\r\n\r\n const selectableGroupsOT = useMemo(() => {\r\n return selectableGroups.reduce(mapReduceToOptionType, []);\r\n }, [selectableGroups]);\r\n\r\n const selectedGroupsOT = useMemo(() => {\r\n return selectedGroups.reduce(mapReduceToOptionType, []);\r\n }, [selectedGroups]);\r\n\r\n const [countryCode, setCountryCode] = React.useState(\"\");\r\n const changeCountryCode = useCallback((selectedVal: React.ChangeEvent<{ name?: string | undefined; value: unknown; }>, child: React.ReactNode) => {\r\n setCountryCode(\"\" + selectedVal);\r\n console.log(\"changeCountryCode\", selectedVal);\r\n onChangeFunc(selectedVal, \"address/countryCode\");\r\n }, [onChangeFunc]);\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n }\r\n variant={variant}\r\n autoComplete={autoComplete}\r\n name=\"name\"\r\n disabled={true} />\r\n \r\n \r\n \r\n }\r\n variant={variant}\r\n autoComplete={autoComplete}\r\n name=\"telephone\"\r\n disabled={true} />\r\n \r\n \r\n }\r\n helperText={helperText}\r\n variant={variant}\r\n autoComplete={autoComplete}\r\n name=\"vatNumber\"\r\n disabled={true} />\r\n \r\n \r\n \r\n \r\n \r\n }\r\n variant={variant}\r\n autoComplete={autoComplete}\r\n name=\"address/street\"\r\n disabled={true} />\r\n \r\n \r\n \r\n }\r\n variant={variant}\r\n autoComplete={autoComplete}\r\n name=\"address/postalCode\"\r\n disabled={true} />\r\n \r\n \r\n }\r\n variant={variant}\r\n autoComplete={autoComplete}\r\n name=\"address/city\"\r\n disabled={true} />\r\n \r\n \r\n }\r\n valueList={auth.user?.allowedCountries}\r\n selectedVal={data.address?.countryCode || countryCode}\r\n name=\"address/countryCode\"\r\n variant={variant}\r\n disabledMenuItem={true}\r\n isDisabled={true}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n }\r\n variant={variant}\r\n autoComplete={autoComplete}\r\n name=\"email\"\r\n disabled={true} />\r\n \r\n \r\n }\r\n variant={variant}\r\n autoComplete={autoComplete}\r\n name=\"externalId\"\r\n disabled={true}\r\n />\r\n \r\n \r\n \r\n \r\n }\r\n valueList={['TWP', 'BUILDER', 'OPERATOR', 'PLANNER', 'WHOLESALER', 'PROFESSIONAL']}\r\n selectedVal={data.partnerType || 'BUILDER'}\r\n name=\"partnerType\"\r\n variant={variant}\r\n noneValue={false}\r\n isDisabled={true}\r\n />\r\n \r\n \r\n }\r\n variant={variant}\r\n autoComplete={autoComplete}\r\n name=\"size\"\r\n disabled={true}\r\n />\r\n \r\n \r\n \r\n \r\n }\r\n valueList={['VISIBLE', 'CONTACT_ONLY', 'PROMOTED', 'HIDDEN']}\r\n selectedVal={data.visibility || 'VISIBLE'}\r\n name=\"visibility\"\r\n variant={variant}\r\n noneValue={false}\r\n isDisabled={true} />\r\n \r\n \r\n \r\n \r\n { setSelectedGroups(selected ? ((selected as MultiSelectOption[]).reduce(mapReduceToGroup, [])) : []); }}\r\n isDisabled={false}\r\n error={null}\r\n />\r\n \r\n {\r\n !isNewMode && (\r\n \r\n \r\n {\r\n (translate) => {\r\n return }\r\n variant='standard'\r\n defaultValue={data.creationTimeStamp ? format(new Date(data.creationTimeStamp),\r\n translate.translate('generics.dateTimeFormatFNS') as string) : \"\"}\r\n disabled={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\r\nconst mapStateToProps = (appState: AppState) => ({\r\n user: appState.auth.user\r\n});\r\n\r\nexport default connect(\r\n mapStateToProps\r\n)(PartnerInformation);\r\n\r\n\r\n","import React, { useState, useEffect } from 'react';\r\nimport { Grid, TextField, createStyles, Theme, Box, Button, makeStyles } from '@material-ui/core';\r\nimport CloudUploadIcon from '@material-ui/icons/CloudUpload';\r\nimport { Translate } from 'react-localize-redux';\r\nimport { Delete, History } from '@material-ui/icons';\r\nimport Dropzone from 'react-dropzone';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n container: {\r\n marginBottom: '25px',\r\n \"& .MuiTextField-root, & .MuiFormControl-root\": {\r\n width: \"100%\",\r\n \"& .MuiInputLabel-outlined\": {\r\n transform: \"translate(14px, 15px) scale(1)\",\r\n fontSize: \"0.9rem\",\r\n },\r\n \"& .MuiInputLabel-outlined.MuiInputLabel-shrink\": {\r\n transform: \"translate(14px, -6px) scale(0.75)\",\r\n },\r\n },\r\n },\r\n button: {\r\n marginRight: \"10px\"\r\n },\r\n formContainer: {\r\n transform: \"translate(0, 15px)\",\r\n },\r\n imgTitle: {\r\n marginBottom: '5px',\r\n },\r\n imgField: {\r\n height: '150px',\r\n width: '250px',\r\n borderRadius: '8px',\r\n\r\n background: 'rgb(237, 237, 237)',\r\n border: 'solid 2px rgb(214, 214, 214)',\r\n color: 'rgb(135, 135, 135)',\r\n\r\n fontSize: '20px',\r\n position: 'relative',\r\n\r\n padding: '5px',\r\n\r\n '& img, & span': {\r\n maxWidth: 'calc(100% - 10px)',\r\n maxHeight: 'calc(100% - 10px)',\r\n height: 'auto',\r\n\r\n padding: '2px',\r\n position: 'absolute',\r\n top: '50%',\r\n left: '50%',\r\n transform: 'translate(-50%, -50%)',\r\n },\r\n '& span':{\r\n width: '100%',\r\n textAlign: 'center'\r\n },\r\n '& img':{\r\n width: 'auto',\r\n whiteSpace: 'nowrap',\r\n },\r\n '& div':{\r\n height: '100%',\r\n width: '100%',\r\n whiteSpace: 'pre-wrap'\r\n }\r\n },\r\n imgUploadButton: {\r\n display: 'none',\r\n },\r\n icon: {\r\n marginLeft: '5px',\r\n },\r\n errorBox: {\r\n color: 'red',\r\n },\r\n btnContained: {\r\n whiteSpace: 'nowrap',\r\n '& button, & label span span': {\r\n fontSize: '12px',\r\n }\r\n },\r\n }));\r\n\r\ninterface imageData {\r\n imageTitle: string,\r\n imageSize: {\r\n height: number,\r\n width: number\r\n },\r\n defaultImage?: string | null,\r\n defaultImageLink?: string | null,\r\n supportedFileTypes?: string[],\r\n maxFileSize?: number,\r\n onChangeFunc: (value: any, name: string) => void,\r\n imgPropName: string,\r\n urlPropName: string\r\n};\r\n\r\ntype imgType = {\r\n type: 'UNCHANGED' | 'EMPTY' | 'CHANGED',\r\n src?: string,\r\n}\r\n\r\ntype imageUploadErrorType = {\r\n type: 'NO_ERROR' | 'INVALID_SIZE' | 'INVALID_FILETYPE' | 'INVALID_FILESIZE',\r\n message: string,\r\n};\r\n\r\nconst isSupportedFileType = (file: string, supported: string[]) => {\r\n let startIndex = file.indexOf(\":\") + 1;\r\n let endIndex = file.indexOf(\";\");\r\n let fileType = file.substring(startIndex, endIndex);\r\n\r\n return (supported.length === 0 || supported.includes(fileType));\r\n}\r\n\r\n\r\nclass UniqueIdGenerator {\r\n private id = 0;\r\n public getUniqueId = (): number => {\r\n return this.id++;\r\n };\r\n}\r\n\r\nconst idGen = new UniqueIdGenerator();\r\n\r\n//export let partnerPicBase64 = { imageType: \"\", imageBase64: \"\" };\r\n\r\nconst ImageUpload: React.FC = (\r\n { imageTitle, imageSize, defaultImage, defaultImageLink, onChangeFunc, supportedFileTypes = [], maxFileSize = 102400, imgPropName, urlPropName }\r\n) => {\r\n\r\n const classes = useStyles();\r\n\r\n const [errors, setErrors] = useState(null);\r\n\r\n const [currentLocalImage, setCurrentLocalIMage] = useState();\r\n const [actualImage, setActualImage] = useState();\r\n\r\n const errorBox = errors ? : null;\r\n\r\n\r\n const handleUploadChange = (evt: any) => {\r\n let file = evt.target.files[0];\r\n validateImage(file);\r\n evt.target.value = \"\";\r\n };\r\n\r\n const validateImage = (file: File) => {\r\n if (file.size <= maxFileSize) {\r\n let reader = new FileReader();\r\n\r\n reader.onloadend = () => {\r\n if (reader.result) {\r\n if (isSupportedFileType(`${reader.result}`, supportedFileTypes)) {\r\n let img = new Image();\r\n img.addEventListener('load', function () {\r\n setCurrentLocalIMage(`${reader.result}`);\r\n\r\n if (!(imageSize.height === this.naturalHeight && imageSize.width === this.naturalWidth)) {\r\n setErrors('components.partnerDetails.error.invalidImageSize');\r\n }\r\n else {\r\n onChangeFunc(`${reader.result}`, imgPropName);\r\n setErrors(null);\r\n }\r\n });\r\n img.src = `${reader.result}`;\r\n } else {\r\n setCurrentLocalIMage(undefined);\r\n setErrors('components.partnerDetails.error.invalidFileType');\r\n }\r\n }\r\n else {\r\n onChangeFunc(\"\", imgPropName);\r\n setCurrentLocalIMage(undefined);\r\n }\r\n }\r\n reader.readAsDataURL(file);\r\n }\r\n else{\r\n setCurrentLocalIMage(undefined);\r\n setErrors('components.partnerDetails.error.fileIsToBig');\r\n }\r\n };\r\n\r\n const handleCLearImage = (evt: any) => {\r\n setErrors(null);\r\n setActualImage(null);\r\n onChangeFunc(null, imgPropName);\r\n if (!defaultImage) {\r\n setCurrentLocalIMage(undefined);\r\n }\r\n };\r\n\r\n const handleRevertImage = (evt: any) => {\r\n setErrors(null);\r\n setCurrentLocalIMage(undefined);\r\n setActualImage(defaultImage);\r\n onChangeFunc(defaultImage, imgPropName);\r\n };\r\n\r\n const id = idGen.getUniqueId();\r\n\r\n useEffect(() => {\r\n setActualImage(currentLocalImage ? currentLocalImage : defaultImage);\r\n }, [currentLocalImage, defaultImage]);\r\n\r\n let textVariant: 'standard' | 'outlined' | 'filled' = 'standard';\r\n let btnVariant: 'text' | 'outlined' | 'contained' = 'contained';\r\n\r\n\r\n return (\r\n \r\n \r\n \r\n {`${imageTitle} (${imageSize.width}x${imageSize.height}px)`}\r\n \r\n \r\n {({ getRootProps, getInputProps }) => (\r\n
    \r\n {actualImage ? \"\" : }\r\n
    \r\n )}\r\n
    \r\n
    \r\n {errorBox}\r\n
    \r\n \r\n \r\n }\r\n variant={textVariant}\r\n name={urlPropName}\r\n disabled={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\nexport default ImageUpload;","import React from 'react';\r\nimport { Box, createStyles, Theme, makeStyles } from '@material-ui/core';\r\nimport ImageUpload from './ImageUpload';\r\n\r\nimport { PartnerDetail_organization } from 'types/apolloGenerated/PartnerDetail';\r\nimport { Translate } from 'react-localize-redux';\r\nimport { changeFuncType } from '.';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n container: {\r\n paddingLeft: \"30px\",\r\n marginBottom: \"50px\",\r\n '& h1': {\r\n marginBottom: '20px',\r\n }\r\n },\r\n }));\r\n\r\ninterface partnerData {\r\n data: PartnerDetail_organization\r\n onChangeFunc?: changeFuncType\r\n};\r\n\r\nconst PartnerMedia: React.FC = ({ data, onChangeFunc = (value, name) => { console.log(\"CHANGEFUNC\"); } }) => {\r\n const classes = useStyles();\r\n\r\n\r\n return (\r\n \r\n

    \r\n \r\n \r\n
    \r\n )\r\n};\r\n\r\nexport default PartnerMedia;","import { ActionType } from 'redux/types/LinkedUsers';\r\n\r\nimport AgGridActionHelper from 'redux/actions/AgGridActionHelper';\r\n\r\n\r\nexport const { setGridState, setColumnStates } = AgGridActionHelper(ActionType.GRID);","import React from 'react';\r\nimport { Dispatch, bindActionCreators } from 'redux';\r\nimport { connect } from 'react-redux';\r\nimport { setGridState, setColumnStates } from 'redux/actions/LinkedUsersAction';\r\nimport { open as changeLoginOpen } from 'redux/actions/AccountShortcuts/ChangeLoginActions';\r\nimport { open as sendResetOpen } from 'redux/actions/AccountShortcuts/SendResetActions';\r\nimport { open as changePositionOpen } from 'redux/actions/AccountShortcuts/ChangePositionActions';\r\nimport { open as removeFromCompanyOpen } from 'redux/actions/AccountShortcuts/RemoveFromCompanyActions';\r\nimport { withLocalize, LocalizeContextProps } from 'react-localize-redux';\r\nimport { AgGridReact } from '@ag-grid-community/react';\r\nimport { defaultColDef } from 'util/AgGridUtils';\r\nimport { ClientSideRowModelModule } from '@ag-grid-community/client-side-row-model';\r\n\r\nimport { AllEnterpriseModules } from '@ag-grid-enterprise/all-modules';\r\nimport { ColDef, MenuItemDef, GetContextMenuItemsParams } from '@ag-grid-enterprise/all-modules';\r\nimport { TranslateFunction } from 'react-localize-redux';\r\n\r\nimport { PartnerEmployees_organization_employees_results } from 'types/apolloGenerated/PartnerEmployees';\r\n\r\nimport MenuIcon from '@material-ui/icons/Menu'\r\nimport { Link } from \"react-router-dom\";\r\n\r\nimport { open as changePositionOpenAction } from 'redux/actions/AccountShortcuts/ChangePositionActions';\r\nimport { UserInformation } from 'types/ToolboxEntities';\r\nimport { Action as ChangeLoginAction } from 'redux/types/AccountShortcuts/ChangeLogin';\r\nimport { Action as ResetAction } from 'redux/types/AccountShortcuts/SendReset';\r\nimport { Action as RemoveFromCompanyAction } from 'redux/types/AccountShortcuts/RemoveFromCompany'\r\n\r\nimport { Position } from 'types/ToolboxEntities'\r\n\r\ninterface EmployeesGridProps extends LocalizeContextProps {\r\n partnerId: number\r\n employees: (PartnerEmployees_organization_employees_results | null)[]\r\n actions: {\r\n setGridState: typeof setGridState\r\n setColumnStates: typeof setColumnStates\r\n changeLoginOpen: typeof changeLoginOpen\r\n sendResetOpen: typeof sendResetOpen\r\n changePositionOpen: typeof changePositionOpen\r\n removeFromCompanyOpen: typeof removeFromCompanyOpen\r\n }\r\n}\r\n\r\nconst EmployeesGrid = withLocalize(({ partnerId, employees, actions, translate }: EmployeesGridProps) => {\r\n return (\r\n
    \r\n \r\n \r\n
    \r\n );\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch: Dispatch) => ({\r\n actions: bindActionCreators({ setGridState, setColumnStates, changeLoginOpen, sendResetOpen, changePositionOpen, removeFromCompanyOpen }, dispatch),\r\n});\r\n\r\nexport default connect(\r\n null,\r\n mapDispatchToProps\r\n)(EmployeesGrid);\r\n\r\nconst getColumnDefs = (translate: TranslateFunction): ColDef[] => {\r\n const removeFilterSort = {\r\n sortable: false,\r\n filter: false,\r\n filterParams: {},\r\n menuTabs: []\r\n }\r\n\r\n const columnDefs = [\r\n {\r\n headerName: translate(\"types.common.name\") as string,\r\n field: \"userInformation.firstname\",\r\n cellRenderer: \"FullNameCell\",\r\n width: 160,\r\n ...removeFilterSort\r\n },\r\n {\r\n headerName: translate('types.userInformation.position') as string,\r\n field: \"position\",\r\n width: 100,\r\n ...removeFilterSort\r\n },\r\n {\r\n headerName: translate(\"generics.email\") as string,\r\n field: \"userInformation.email\",\r\n width: 200,\r\n ...removeFilterSort\r\n },\r\n {\r\n headerName: \"\",\r\n cellRenderer: \"MenuCell\",\r\n width: 50,\r\n resizable: false,\r\n onCellClicked: (params: any) => {\r\n const { rowIndex, node, column, event, value } = params;\r\n\r\n const cell = params.api.rowRenderer.rowCompsByIndex[rowIndex].getRenderedCellForColumn(column);\r\n\r\n cell.beans.contextMenuFactory.showMenu(node, column, value, event);\r\n },\r\n ...removeFilterSort\r\n\r\n }\r\n ];\r\n\r\n return columnDefs;\r\n};\r\n\r\nconst getContextMenuItems = (\r\n partnerId: number,\r\n changePositionOpen: typeof changePositionOpenAction,\r\n changeLoginOpen: (user: UserInformation) => ChangeLoginAction,\r\n sendResetOpen: (user: UserInformation) => ResetAction,\r\n removeFromCompanyOpen: (userId: number, partnerId: number) => RemoveFromCompanyAction,\r\n translate: TranslateFunction\r\n) => {\r\n return (params: GetContextMenuItemsParams): (string | MenuItemDef)[] => {\r\n\r\n let menuItems: (string | MenuItemDef)[] = [\r\n \"copy\",\r\n \"copyWithHeaders\",\r\n \"separator\",\r\n \"export\"\r\n ];\r\n\r\n if (params?.node?.data?.userInformation) {\r\n menuItems = [\r\n ...getExpandedMenuItems(\r\n partnerId,\r\n params.node.data as PartnerEmployees_organization_employees_results,\r\n changePositionOpen,\r\n changeLoginOpen,\r\n sendResetOpen,\r\n removeFromCompanyOpen,\r\n translate\r\n ),\r\n ...menuItems\r\n ];\r\n }\r\n\r\n return menuItems;\r\n }\r\n};\r\n\r\n\r\n\r\nconst getExpandedMenuItems = (\r\n partnerId: number,\r\n rowData: PartnerEmployees_organization_employees_results,\r\n changePositionOpen: typeof changePositionOpenAction,\r\n changeLoginOpen: (user: UserInformation, partnerId: number) => ChangeLoginAction,\r\n sendResetOpen: (user: UserInformation) => ResetAction,\r\n removeFromCompanyOpen: (userId: number, partnerId: number) => RemoveFromCompanyAction,\r\n translate: TranslateFunction\r\n) => {\r\n\r\n\r\n\r\n return [\r\n //{\r\n // name: translate('components.employeesGrid.changePositionTo') as string,\r\n // subMenu: getPositionSubMenu(partnerId, rowData, changePositionOpen),\r\n //},\r\n //{\r\n // name: translate('components.employeesGrid.changeEmailAndPassword') as string,\r\n // action: () => {\r\n // console.log(\"change email and password\");\r\n // changeLoginOpen({\r\n // id: rowData.userInformation!.id,\r\n // email: rowData.userInformation!.email\r\n // } as UserInformation, partnerId);\r\n // },\r\n //},\r\n {\r\n name: translate('components.employeesGrid.sendPasswordEmail') as string,\r\n action: () => {\r\n console.log(\"send 'set password' email\", rowData.userInformation!.id, \" \", rowData.userInformation!.email);\r\n sendResetOpen({\r\n id: rowData.userInformation!.id,\r\n email: rowData.userInformation!.email\r\n } as UserInformation);\r\n },\r\n },\r\n //{\r\n // name: translate('components.employeesGrid.removeFromCompany') as string,\r\n // action: () => {\r\n // console.log(\"remove from company\");\r\n // removeFromCompanyOpen(rowData.userInformation!.key, partnerId);\r\n // },\r\n //},\r\n \"separator\"]\r\n}\r\n\r\nconst getPositionSubMenu = (\r\n partnerId: number,\r\n rowData: PartnerEmployees_organization_employees_results,\r\n changePositionOpen: typeof changePositionOpenAction,\r\n): (string | MenuItemDef)[] => {\r\n const subMenu: (string | MenuItemDef)[] = [];\r\n const fullName = `${rowData.userInformation?.firstName} ${rowData.userInformation?.lastName}`;\r\n\r\n for (const pos in Position) {\r\n if ('none' !== pos.toLowerCase()) {\r\n let disabled = rowData.position?.toLowerCase() === pos.toLowerCase();\r\n subMenu.push({\r\n name: pos,\r\n action: () => {\r\n console.log(\"rowData: \", rowData);\r\n console.log(`position changed to ${pos.toLocaleLowerCase()}`);\r\n changePositionOpen(\r\n rowData.userInformation!.key,\r\n Position[pos as keyof typeof Position],\r\n partnerId\r\n );\r\n },\r\n disabled: disabled,\r\n tooltip: disabled ?\r\n `Employee ${fullName} already has the position ${pos}` :\r\n `Change position of ${fullName} from ${rowData.position} to ${pos}`\r\n });\r\n }\r\n }\r\n return subMenu;\r\n}\r\n\r\ninterface CellRenderer {\r\n value: string,\r\n data: PartnerEmployees_organization_employees_results | null,\r\n};\r\n\r\nconst FullNameCell: React.FC = ({ data, value }) => {\r\n if (!data) {\r\n return null;\r\n }\r\n return {`${data.userInformation?.firstName} ${data.userInformation?.lastName}`};\r\n};\r\n\r\nconst MenuCell: React.FC = ({ data, value }) => {\r\n return ;\r\n};\r\n\r\nconst LinkedUserLink: React.FC = ({ data, value }) => {\r\n if (!data) {\r\n return null;\r\n }\r\n return {value};\r\n};\r\n\r\nconst CellRenderer = { FullNameCell, MenuCell, LinkedUserLink };","import React from 'react';\r\nimport { makeStyles, Theme, Grid, createStyles, CircularProgress } from '@material-ui/core';\r\n\r\nimport { Translate } from 'react-localize-redux';\r\n\r\nimport { useQuery } from 'react-apollo';\r\nimport { QUERY_PARTNER_EMPLOYEES } from 'commonQueries/partner';\r\nimport { PartnerEmployees, PartnerEmployeesVariables } from 'types/apolloGenerated/PartnerEmployees';\r\n\r\nimport EmployeesGrid from './EmployeesGrid';\r\nimport AddEmployee from './AddEmployee';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n container: {\r\n paddingLeft: \"30px\",\r\n marginBottom: \"50px\",\r\n '& h1': {\r\n marginBottom: '20px',\r\n },\r\n '& .innerContent': {\r\n height: '300px'\r\n }\r\n\r\n },\r\n gridDefault: {\r\n position: \"relative\",\r\n height: '100%',\r\n width: '100%',\r\n display: 'flex',\r\n flexFlow: 'column',\r\n '& > *': {\r\n flex: '1 1 auto',\r\n },\r\n '& > .grie-error': {\r\n flex: '0 1 auto',\r\n },\r\n },\r\n\r\n exportToExcel: {\r\n position: \"absolute\",\r\n left: 0,\r\n bottom: \"5px\",\r\n background: \"none\",\r\n border: \"none\",\r\n padding: 0,\r\n color: \"#005D8F\", //\"#e6006b\",\r\n textDecoration: \"underline\",\r\n cursor: \"pointer\",\r\n },\r\n })\r\n);\r\n\r\ninterface EmployeesProps {\r\n partnerId: number\r\n}\r\n\r\nconst Employees: React.FC = ({ partnerId }) => {\r\n let classes = useStyles();\r\n\r\n const { data: employeeData, loading, error } = useQuery(QUERY_PARTNER_EMPLOYEES, {\r\n variables: { id: partnerId }\r\n });\r\n\r\n\r\n let employeeGrid = ;\r\n if (loading) {\r\n employeeGrid = ;\r\n } else if (error) {\r\n console.error('Error loading employees (QUERY_PARTNER_EMPLOYEES)', error);\r\n employeeGrid = ;\r\n } else if (employeeData?.organization?.employees?.results?.length) {\r\n employeeGrid = \r\n }\r\n\r\n return (\r\n \r\n

    \r\n {employeeGrid}\r\n
    \r\n )\r\n};\r\n\r\n\r\nexport default Employees;","import { ActionType, OpenAction, Action } from 'redux/types/AccountShortcuts/ChangePearls';\r\n\r\nimport * as Types from 'types/ToolboxEntities';\r\n\r\n\r\n\r\nexport const open = (pearls: Types.PearlsTransaction): OpenAction => ({\r\n type: ActionType.OPEN,\r\n payload: pearls\r\n});\r\n\r\n\r\nexport const close = (): Action => ({\r\n type: ActionType.CLOSE,\r\n});\r\n","import { ActionType } from 'redux/types/BonusAccount';\r\n\r\nimport AgGridActionHelper from 'redux/actions/AgGridActionHelper';\r\n\r\n\r\nexport const { setGridState, setColumnStates } = AgGridActionHelper(ActionType.GRID);","import React from 'react';\r\nimport { TranslateFunction } from 'react-localize-redux';\r\n\r\nimport gql from \"graphql-tag\";\r\nimport { BonusAccountTransactions, BonusAccountTransactions_organization_bonusaccount_transactions_results, BonusAccountTransactions_organization_bonusaccount_transactions_results as BonusAccountDetails } from \"types/apolloGenerated/BonusAccountTransactions\";\r\n\r\nimport { ColDef } from '@ag-grid-enterprise/all-modules';\r\nimport '@ag-grid-community/all-modules/dist/styles/ag-grid.css';\r\nimport '@ag-grid-community/all-modules/dist/styles/ag-theme-balham.css';\r\n\r\nimport format from \"date-fns/format\";\r\nimport { Translate } from \"react-localize-redux\";\r\n\r\nimport { factoryApolloConnector } from 'util/AgGridUtils';\r\n\r\nexport const QUERY_BONUS_ACCOUNT = gql`\r\n query BonusAccountTransactions($id: Int!) {\r\n organization(id:$id) {\r\n id\r\n bonusaccount {\r\n accountId\r\n details{\r\n ... on ConnexBonusAccountDetails {\r\n __typename\r\n }\r\n ... on BwtBonusAccountDetails {\r\n __typename\r\n }\r\n }\r\n transactions(page: 0, pageSize: 100) {\r\n results {\r\n id\r\n amount\r\n date\r\n details{\r\n __typename\r\n ... on BwtTransactionDetail {\r\n bwtDescription: description\r\n editor{\r\n firstName\r\n lastName\r\n }\r\n }\r\n ... on BonusAccountMigrationDetail {\r\n migrationDescription: description\r\n }\r\n ... on LegacyTransactionDetail {\r\n legacyDescription: description\r\n }\r\n ... on ConnexTransactionDetail {\r\n orderId\r\n entries {\r\n articleNumber\r\n articleTitle\r\n quantity\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n`;\r\n\r\n\r\nexport const apolloConnectorById = (id: number) => {\r\n return factoryApolloConnector(\r\n QUERY_BONUS_ACCOUNT,\r\n (data: BonusAccountTransactions) => data.organization ? data.organization.bonusaccount?.transactions : null,\r\n {},\r\n { customArguments: { id: id } }\r\n )\r\n};\r\n\r\ninterface ValueGetter {\r\n value: string;\r\n data: BonusAccountDetails;\r\n}\r\n\r\n\r\nexport const getColumnDefs = (translate: TranslateFunction): ColDef[] => {\r\n const removeFilterSort = {\r\n sortable: false,\r\n filter: false,\r\n filterParams: {},\r\n menuTabs: []\r\n }\r\n\r\n const columnDefs = [\r\n {\r\n headerName: translate(\"generics.id\") as string,\r\n field: \"id\",\r\n width: 250,\r\n ...removeFilterSort\r\n },\r\n {\r\n headerName: translate('generics.date') as string,\r\n field: \"date\",\r\n width: 100,\r\n cellRenderer: \"FormatDate\",\r\n ...removeFilterSort\r\n },\r\n {\r\n headerName: translate(\"generics.note\") as string,\r\n field: \"details.description\",\r\n width: 400,\r\n valueGetter: (params: any) => {\r\n return TransactionNoteGetter({ data: params.data, value: params.value })\r\n ?.props.children;\r\n },\r\n ...removeFilterSort\r\n },\r\n {\r\n headerName: translate(\"types.common.pearls\") as string,\r\n field: \"amount\",\r\n width: 100,\r\n ...removeFilterSort\r\n },\r\n {\r\n headerName: translate('components.changePearls.editor') as string,\r\n field: \"details.editor\",\r\n width: 175,\r\n valueGetter: (params: any) => {\r\n return EditorNameGetter({ data: params.data, value: params.value })\r\n ?.props.children;\r\n },\r\n ...removeFilterSort\r\n }\r\n ];\r\n\r\n return columnDefs;\r\n};\r\n\r\nconst EditorNameGetter = ({ data, value }: ValueGetter) => {\r\n if (data?.details && data.details.__typename === \"BwtTransactionDetail\" && data.details.editor) {\r\n const name = data.details.editor.firstName + \" \" + data.details.editor.lastName\r\n return
    {name}
    ;\r\n }\r\n return
    ;\r\n};\r\n\r\nconst TransactionNoteGetter = ({ data, value }: ValueGetter) => {\r\n if (!data) {\r\n return
    ;\r\n }\r\n if (data?.details) {\r\n if (data.details.__typename === \"BwtTransactionDetail\") {\r\n return
    {data.details.bwtDescription}
    ;\r\n\r\n } else if (data.details.__typename === \"BonusAccountMigrationDetail\") {\r\n return
    {data.details.migrationDescription}
    ;\r\n\r\n } else if (data.details.__typename === \"LegacyTransactionDetail\") {\r\n return
    {data.details.legacyDescription}
    ;\r\n\r\n } else if (data.details.__typename === \"ConnexTransactionDetail\") {\r\n const note = 'Connex Order: ' + data.details.orderId + ' - ' + data.details.entries?.map((entry) => {\r\n if (entry) {\r\n return entry.quantity + 'x ' + entry.articleTitle;\r\n }\r\n return '';\r\n }).join(', ');\r\n\r\n return
    {note}
    ;\r\n }\r\n }\r\n return
    ;\r\n};\r\n\r\ninterface CellRenderer {\r\n data: BonusAccountTransactions_organization_bonusaccount_transactions_results;\r\n value: string;\r\n}\r\n\r\nconst FormatDate: React.FC = ({ data, value }) => {\r\n if (!data || !value) {\r\n return
    ;\r\n }\r\n //return
    {format(new Date(value), \"P\")}
    ;\r\n return (\r\n {\r\n (translate) => {\r\n return
    {format(new Date(value), translate.translate('generics.dateTimeFormatFNSShort') as string)}
    ;\r\n }\r\n }\r\n
    \r\n );\r\n};\r\n\r\nexport const ValueGetter = {\r\n TransactionNoteGetter,\r\n EditorNameGetter\r\n};\r\n\r\nexport const CellRenderer = {\r\n FormatDate,\r\n};\r\n","import React, { useState, Fragment } from \"react\";\r\nimport { createStyles, Theme, Grid, Button, Box } from \"@material-ui/core\";\r\nimport InputAdornment from \"@material-ui/core/InputAdornment\";\r\nimport OutlinedInput from \"@material-ui/core/OutlinedInput\";\r\nimport CircularProgress from \"@material-ui/core/CircularProgress\";\r\nimport gql from \"graphql-tag\";\r\nimport { ReduxAgGrid } from \"components/common/Grid/AgGrid\";\r\n\r\nimport { open as changePearlsOpen } from \"redux/actions/AccountShortcuts/ChangePearlsActions\";\r\nimport { PearlsTransaction } from \"types/ToolboxEntities\";\r\n\r\nimport { useMutation, useQuery } from \"@apollo/react-hooks\";\r\nimport { createBonusAccountVariables } from \"types/apolloGenerated/createBonusAccount\";\r\n\r\nimport { disableBonusAccountVariables } from \"types/apolloGenerated/disableBonusAccount\";\r\n\r\nimport {\r\n makeStyles,\r\n IconButton,\r\n FormControl,\r\n Tooltip,\r\n} from \"@material-ui/core\";\r\nimport { Dispatch, bindActionCreators } from \"redux\";\r\nimport { connect } from \"react-redux\";\r\nimport {\r\n Translate,\r\n LocalizeContextProps,\r\n withLocalize,\r\n} from \"react-localize-redux\";\r\nimport {\r\n setGridState,\r\n setColumnStates,\r\n} from \"redux/actions/BonusAccountActions\";\r\nimport { getColumnDefs } from \"./GridConfig\";\r\nimport { AppState } from \"redux/store\";\r\nimport { State as BonusAccountGridState } from \"redux/types/BonusAccount\";\r\nimport {\r\n PartnerType,\r\n BonusAccountPermission,\r\n Country,\r\n} from \"types/apolloGenerated/globalTypes\";\r\nimport { PartnerDetail_organization_bonusaccount as BonusAccountObj } from \"types/apolloGenerated/PartnerDetail\";\r\nimport PageDialog from \"components/common/PageDialog\";\r\n\r\nimport { CellRenderer } from \"./GridConfig\";\r\n\r\nimport Edit from \"@material-ui/icons/Edit\";\r\nimport Link from \"@material-ui/core/Link\";\r\n\r\nimport DialogTitle from \"@material-ui/core/DialogTitle\";\r\nimport DialogContent from \"@material-ui/core/DialogContent\";\r\nimport DialogActions from \"@material-ui/core/DialogActions\";\r\nimport Dialog from \"@material-ui/core/Dialog\";\r\nimport RadioGroup from \"@material-ui/core/RadioGroup\";\r\nimport Radio from \"@material-ui/core/Radio\";\r\nimport FormControlLabel from \"@material-ui/core/FormControlLabel\";\r\nimport { Alert, AlertTitle } from \"@material-ui/lab\";\r\n\r\nimport { BonusAccountTransactions } from \"types/apolloGenerated/BonusAccountTransactions\";\r\nimport { QUERY_BONUS_ACCOUNT } from \"Pages/PartnerManager/Companies/Detail/BonusAccount/GridConfig\";\r\n\r\nconst CREATE_BONUS_ACCOUNT = gql`\r\n mutation createBonusAccount($bonusAccountInsert: BonusAccountInsertInput!) {\r\n organization {\r\n createBonusAccount(bonusAccountInsert: $bonusAccountInsert)\r\n }\r\n }\r\n`;\r\n\r\nconst DISABLE_BONUS_ACCOUNT = gql`\r\n mutation disableBonusAccount($bonusAccountUpdate: BonusAccountUpdateInput!) {\r\n organization {\r\n updateBonusAccount(bonusAccountUpdate: $bonusAccountUpdate)\r\n }\r\n }\r\n`;\r\n\r\nconst CHANGE_BONUS_ACCOUNT_RIGHTS = gql`\r\n mutation updateBonusAccount($bonusAccountUpdate: BonusAccountUpdateInput!) {\r\n organization {\r\n updateBonusAccount(bonusAccountUpdate: $bonusAccountUpdate)\r\n }\r\n }\r\n`;\r\n\r\ninterface BonusAccountPara extends LocalizeContextProps {\r\n id: number;\r\n bonusAccount: BonusAccountObj | null;\r\n bonusAccountState: BonusAccountGridState;\r\n newPearlsState: string | undefined;\r\n actions: {\r\n setGridState: typeof setGridState;\r\n setColumnStates: typeof setColumnStates;\r\n };\r\n partnerType: PartnerType | null;\r\n isSavePending: boolean;\r\n countryCode: Country | null | undefined;\r\n onSave: () => void;\r\n}\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n container: {\r\n paddingLeft: \"30px\",\r\n marginBottom: \"50px\",\r\n \"& h1\": {\r\n marginBottom: \"20px\",\r\n },\r\n \"& .innerContent\": {\r\n height: \"300px\",\r\n position: \"relative\",\r\n },\r\n },\r\n link: {\r\n cursor: \"pointer\",\r\n },\r\n editPearlsBtn: {\r\n color: \"#005D8F\",\r\n },\r\n disableButton: {\r\n margin: \"10px 10px 10px 20px\",\r\n },\r\n tooltipText: {\r\n visibility: \"hidden\",\r\n color: \"black\",\r\n },\r\n })\r\n);\r\n\r\ninterface ChangePearlsTrigger {\r\n actions: { changePearlsOpen: typeof changePearlsOpen };\r\n orgId: number;\r\n}\r\n\r\nconst BonusAccount: React.FC = ({\r\n id,\r\n bonusAccountState,\r\n bonusAccount,\r\n actions,\r\n partnerType,\r\n translate,\r\n newPearlsState,\r\n isSavePending,\r\n countryCode,\r\n onSave,\r\n}) => {\r\n let classes = useStyles();\r\n const [confirmDialog, setConfirmDialog] = useState(false);\r\n const [bonusAccountRightsDialog, setBonusAccountRightsDialog] = useState(\r\n false\r\n );\r\n const [error, setError] = useState(\"\");\r\n const [bonusAccountRightsError, setBonusAccountRightsError] = useState(\"\");\r\n const { data } = useQuery(QUERY_BONUS_ACCOUNT, {\r\n variables: { id: id },\r\n fetchPolicy: \"network-only\",\r\n });\r\n\r\n const ChangePearlsButton = connect(null, (dispatch: Dispatch) => ({\r\n actions: bindActionCreators({ changePearlsOpen }, dispatch),\r\n }))(({ actions }: ChangePearlsTrigger) =>\r\n bonusAccount ? (\r\n {\r\n actions.changePearlsOpen({\r\n id: bonusAccount.accountId,\r\n pearls: bonusAccount.pearls,\r\n note: \"\",\r\n orgId: id,\r\n } as PearlsTransaction);\r\n }}\r\n edge=\"end\"\r\n >\r\n {}\r\n \r\n ) : null\r\n );\r\n\r\n const [\r\n createBonusAccount,\r\n { loading: createLoading },\r\n ] = useMutation(CREATE_BONUS_ACCOUNT, {\r\n onCompleted: (data) => {\r\n onSave();\r\n setConfirmDialog(false);\r\n },\r\n onError: (error) => {\r\n setError(error.message);\r\n },\r\n });\r\n\r\n const [\r\n disableBonusAccount,\r\n { loading: disableLoading },\r\n ] = useMutation(DISABLE_BONUS_ACCOUNT, {\r\n onCompleted: () => {\r\n setConfirmDialog(false);\r\n },\r\n onError: (error) => {\r\n setError(error.message);\r\n },\r\n });\r\n\r\n const [\r\n updateBonusAccountRights,\r\n { loading: updateRightsLoading },\r\n ] = useMutation(CHANGE_BONUS_ACCOUNT_RIGHTS, {\r\n onCompleted: (data) => {\r\n setBonusAccountRightsDialog(false);\r\n setBonusAccountPermission(tempPermission);\r\n },\r\n onError: (error) => {\r\n setBonusAccountRightsError(error.message);\r\n },\r\n });\r\n\r\n const fetchBonusAccountType = () => {\r\n switch (data?.organization?.bonusaccount?.details?.__typename) {\r\n case \"BwtBonusAccountDetails\":\r\n return ;\r\n case \"ConnexBonusAccountDetails\":\r\n return ;\r\n default:\r\n return ;\r\n }\r\n };\r\n\r\n const getPermission = (value: string) => {\r\n switch (value.toUpperCase()) {\r\n case \"WRITE\":\r\n return BonusAccountPermission.WRITE;\r\n case \"READ\":\r\n return BonusAccountPermission.READ;\r\n case \"DEACTIVATED\":\r\n return BonusAccountPermission.DEACTIVATED;\r\n }\r\n return BonusAccountPermission.WRITE;\r\n };\r\n\r\n const permission: BonusAccountPermission = getPermission(\r\n bonusAccount?.permission ?? \"\"\r\n );\r\n\r\n const [\r\n bonusAccountPermission,\r\n setBonusAccountPermission,\r\n ] = React.useState(permission);\r\n const [\r\n tempPermission,\r\n setTempPermission,\r\n ] = React.useState(permission);\r\n const radioGroupRef = React.useRef(null);\r\n\r\n const handleCancel = () => {\r\n setBonusAccountRightsDialog(false);\r\n };\r\n\r\n const handleOk = () => {\r\n if (bonusAccount?.accountId) {\r\n updateBonusAccountRights({\r\n variables: {\r\n bonusAccountUpdate: {\r\n bonusAccountId: bonusAccount?.accountId,\r\n permission: tempPermission,\r\n },\r\n },\r\n });\r\n } else {\r\n setBonusAccountRightsError(\r\n translate(\"pages.partnerDetails.noBonusAccountId\") as string\r\n );\r\n }\r\n };\r\n\r\n if (!bonusAccount) {\r\n return (\r\n \r\n

    \r\n \r\n

    \r\n setConfirmDialog(true)}\r\n >\r\n \r\n \r\n {\r\n createBonusAccount({\r\n variables: { bonusAccountInsert: { organizationId: id } },\r\n });\r\n },\r\n },\r\n {\r\n title: \"generics.cancel\",\r\n click: () => {\r\n setConfirmDialog(false);\r\n setError(\"\");\r\n },\r\n },\r\n ]}\r\n />\r\n
    \r\n );\r\n }\r\n const gridData =\r\n data && data.organization?.bonusaccount?.transactions?.results\r\n ? data.organization?.bonusaccount?.transactions?.results\r\n : [];\r\n\r\n return (\r\n \r\n {({ translate }) => {\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 {fetchBonusAccountType()}\r\n
    \r\n\r\n
    \r\n
    \r\n \r\n
    \r\n {\r\n setBonusAccountRightsDialog(true);\r\n }}\r\n >\r\n {bonusAccountPermission}\r\n \r\n
    \r\n
    \r\n\r\n \r\n \r\n Bonus Account Rights\r\n \r\n \r\n {bonusAccountRightsError && (\r\n \r\n Error\r\n {bonusAccountRightsError}\r\n \r\n )}\r\n {\r\n setTempPermission(getPermission(event.target.value));\r\n }}\r\n >\r\n {Object.keys(BonusAccountPermission).map((value) => (\r\n }\r\n label={value}\r\n />\r\n ))}\r\n \r\n \r\n \r\n \r\n {updateRightsLoading ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n \r\n\r\n

    \r\n \r\n

    \r\n \r\n \r\n {}}\r\n endAdornment={\r\n \r\n {bonusAccountPermission ===\r\n BonusAccountPermission.WRITE ? (\r\n \r\n ) : (\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n }\r\n labelWidth={0}\r\n />\r\n \r\n {bonusAccount?.details?.__typename ===\r\n \"ConnexBonusAccountDetails\" && (\r\n \r\n \r\n \r\n )}\r\n \r\n

    \r\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 = (appState: AppState) => ({\r\n bonusAccountState: appState.bonusAccount,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch: Dispatch) => ({\r\n actions: bindActionCreators({ setGridState, setColumnStates }, dispatch),\r\n});\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(withLocalize(BonusAccount));\r\n","import { ActionType } from 'redux/types/ProductRegistrations';\r\n\r\nimport AgGridActionHelper from 'redux/actions/AgGridActionHelper';\r\n\r\n\r\nexport const { setGridState, setColumnStates } = AgGridActionHelper(ActionType.GRID);","import React, { Fragment } from 'react';\r\nimport { TranslateFunction } from 'react-localize-redux';\r\n\r\nimport gql from \"graphql-tag\";\r\nimport { ProductRegistrations, ProductRegistrations_organization_productInstances_results } from \"types/apolloGenerated/ProductRegistrations\";\r\n\r\n\r\nimport { ColDef } from '@ag-grid-enterprise/all-modules';\r\nimport '@ag-grid-community/all-modules/dist/styles/ag-grid.css';\r\nimport '@ag-grid-community/all-modules/dist/styles/ag-theme-balham.css';\r\n\r\nimport { ability } from 'util/ability';\r\n\r\nimport { Link } from \"react-router-dom\";\r\n\r\nimport { factoryApolloConnector } from 'util/AgGridUtils';\r\n\r\nimport format from \"date-fns/format\";\r\nimport { Translate } from \"react-localize-redux\";\r\n\r\n\r\nconst QUERY = gql`\r\nquery ProductRegistrations($id: Int!) {\r\n organization (id:$id) {\r\n id\r\n productInstances(page: 0, pageSize: 100){\r\n page\r\n pageSize\r\n results{\r\n productCode\r\n partnerRegistrationDate\r\n registrationDate\r\n product {\r\n productInformation {\r\n name\r\n }\r\n }\r\n owner{\r\n userInformation{\r\n firstName\r\n lastName\r\n }\r\n }\r\n address{\r\n postalCode\r\n city\r\n }\r\n installationDate\r\n state\r\n }\r\n }\r\n }\r\n}\r\n`;\r\n\r\ninterface ValueGetter {\r\n value: string;\r\n data: ProductRegistrations_organization_productInstances_results;\r\n}\r\n\r\nexport const apolloConnectorById = (id: number) => {\r\n return factoryApolloConnector(\r\n QUERY,\r\n (data: ProductRegistrations) => data.organization ? data.organization.productInstances : null,\r\n {},\r\n { customArguments: { id: id } }\r\n )\r\n};\r\n\r\n\r\nexport const getColumnDefs = (translate: TranslateFunction): ColDef[] => {\r\n const removeFilterSort = {\r\n sortable: false,\r\n filter: false,\r\n filterParams: {},\r\n menuTabs: []\r\n }\r\n\r\n const columnDefs = [\r\n {\r\n headerName: translate('types.product.productName') as string,\r\n field: \"product.productInformation.name\",\r\n width: 200,\r\n ...removeFilterSort\r\n },\r\n {\r\n headerName: translate('types.common.productCode') as string,\r\n field: \"productCode\",\r\n width: 120,\r\n cellRenderer: ability.can('read', 'Customer') ? \"ProductLink\" : \"\",\r\n ...removeFilterSort\r\n },\r\n {\r\n headerName: translate('types.product.partnerRegistrationDate') as string,\r\n field: \"partnerRegistrationDate\",\r\n cellRenderer: \"DateCell\",\r\n width: 140,\r\n ...removeFilterSort\r\n },\r\n {\r\n headerName: translate(\"types.common.name\") as string,\r\n field: \"owner.userInformation.firstName\",\r\n valueGetter: (params: any) => {\r\n return FullNameGetter({ data: params.data, value: params.value })\r\n ?.props.children;\r\n },\r\n width: 160,\r\n ...removeFilterSort\r\n },\r\n {\r\n headerName: translate('types.address.postalCode') as string,\r\n field: \"address.postalCode\",\r\n width: 100,\r\n headerTooltip: translate('types.tooltips.deviceAddress') as string,\r\n ...removeFilterSort\r\n },\r\n {\r\n headerName: translate('types.address.city') as string,\r\n field: \"address.city\",\r\n width: 125,\r\n headerTooltip: translate('types.tooltips.deviceAddress') as string,\r\n ...removeFilterSort\r\n },\r\n {\r\n headerName: translate('types.common.installationDate') as string,\r\n field: \"installationDate\",\r\n cellRenderer: \"DateCell\",\r\n width: 140,\r\n ...removeFilterSort\r\n },\r\n {\r\n headerName: translate(\"types.common.state\") as string,\r\n field: \"state\",\r\n width: 125,\r\n cellRenderer: \"StateCell\",\r\n ...removeFilterSort\r\n },\r\n {\r\n headerName: translate(\"types.product.customerRegistrationDate\") as string,\r\n field: \"registrationDate\",\r\n cellRenderer: \"DateCell\",\r\n width: 140,\r\n ...removeFilterSort\r\n }\r\n\r\n ];\r\n\r\n return columnDefs;\r\n};\r\n\r\nconst FullNameGetter = ({ data, value }: ValueGetter) => {\r\n if (data?.owner?.userInformation) {\r\n const name = data.owner?.userInformation?.firstName + \" \" + data.owner?.userInformation?.lastName\r\n return
    {name}
    ;\r\n }\r\n return
    ;\r\n};\r\n\r\nconst StateCell: React.FC = ({ data, value }) => {\r\n if (value === 'NOT_SET') {\r\n return ;\r\n }\r\n return {value};\r\n};\r\n\r\nconst DateCell: React.FC = ({ data, value }) => {\r\n if (!data || !value) {\r\n return
    ;\r\n }\r\n\r\n //return
    {format(new Date(value), \"P\")}
    ;\r\n return (\r\n {\r\n (translate) => {\r\n return
    {format(new Date(value), translate.translate('generics.dateTimeFormatFNS') as string)}
    ;\r\n }\r\n }\r\n
    \r\n );\r\n};\r\n\r\nconst ProductLink: React.FC = ({ data, value }) => {\r\n if (!data) {\r\n return
    ;\r\n }\r\n return {value};\r\n};\r\n\r\ninterface CellRenderer {\r\n value: string,\r\n data: ProductRegistrations_organization_productInstances_results | null,\r\n};\r\n\r\nexport const CellRenderer = { DateCell, ProductLink, StateCell };\r\n\r\nexport const ValueGetter = {\r\n FullNameGetter\r\n};\r\n","import React, { useState, useEffect } from 'react';\r\nimport { createStyles, Theme, Grid } from '@material-ui/core';\r\nimport { makeStyles } from '@material-ui/core';\r\nimport AgGrid from 'components/common/Grid/AgGrid';\r\nimport { AppState } from 'redux/store';\r\nimport { Dispatch, bindActionCreators } from 'redux';\r\nimport { connect } from 'react-redux';\r\nimport { setGridState, setColumnStates } from 'redux/actions/ProductRegistrationsActions';\r\nimport { State as ProductRegistrationsGridState } from 'redux/types/ProductRegistrations';\r\nimport { apolloConnectorById, getColumnDefs, CellRenderer } from './GridConfig'\r\nimport { Translate } from 'react-localize-redux';\r\n\r\n\r\ninterface ProductRegistrationsPara {\r\n id: number\r\n productRegistrationsState: ProductRegistrationsGridState\r\n actions: {\r\n setGridState: typeof setGridState\r\n setColumnStates: typeof setColumnStates\r\n }\r\n}\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n container: {\r\n paddingLeft: \"30px\",\r\n marginBottom: \"50px\",\r\n '& h1': {\r\n marginBottom: '20px',\r\n },\r\n '& .innerContent': {\r\n height: '300px',\r\n position: 'relative'\r\n }\r\n },\r\n }));\r\n\r\n\r\nconst ProductRegistrations: React.FC = ({ id, productRegistrationsState, actions }) => {\r\n let classes = useStyles();\r\n\r\n const [apolloConnector, setApolloConnector] = useState>(apolloConnectorById(id));\r\n\r\n useEffect(() => {\r\n setApolloConnector(apolloConnectorById(id));\r\n }, [id]);\r\n\r\n return (\r\n {({ translate }) => {\r\n return (\r\n

    \r\n
    \r\n \r\n
    \r\n
    );\r\n }}\r\n
    \r\n )\r\n};\r\n\r\nconst mapStateToProps = (appState: AppState) => ({\r\n productRegistrationsState: appState.productRegistrations\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch: Dispatch) => ({\r\n actions: bindActionCreators({ setGridState, setColumnStates }, dispatch),\r\n});\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(ProductRegistrations);","import React, { useEffect } from \"react\";\r\nimport { bindActionCreators, Dispatch } from \"redux\";\r\nimport { connect } from \"react-redux\";\r\n\r\nimport {\r\n Button,\r\n TextField,\r\n Dialog,\r\n DialogActions,\r\n DialogContent,\r\n DialogContentText,\r\n DialogTitle,\r\n CircularProgress,\r\n} from \"@material-ui/core\";\r\n\r\nimport { AppState } from \"redux/store\";\r\n\r\nimport ToggleButton from \"@material-ui/lab/ToggleButton\";\r\nimport ToggleButtonGroup from \"@material-ui/lab/ToggleButtonGroup\";\r\nimport * as materialIcons from \"@material-ui/icons\";\r\n\r\nimport { Theme, makeStyles, Grid } from \"@material-ui/core\";\r\n\r\nimport gql from \"graphql-tag\";\r\nimport {\r\n CreateTransaction,\r\n CreateTransactionVariables,\r\n} from \"types/apolloGenerated/CreateTransaction\";\r\n\r\nimport { Store as ChangePearlsStore } from \"redux/types/AccountShortcuts/ChangePearls\";\r\nimport { close } from \"redux/actions/AccountShortcuts/ChangePearlsActions\";\r\n\r\nimport { Translate } from \"react-localize-redux\";\r\n\r\nimport Error from \"components/common/Error\";\r\nimport { useMutation } from \"react-apollo\";\r\nimport { ErrorCodes } from \"types/CampGuideTypes\";\r\nimport { QUERY_BONUS_ACCOUNT } from \"Pages/PartnerManager/Companies/Detail/BonusAccount/GridConfig\";\r\nimport { BonusAccountTransactions } from \"types/apolloGenerated/BonusAccountTransactions\";\r\nimport { AuthStore } from \"redux/types/Auth\";\r\n\r\nconst MUTATION_CREATE_TRANSACTION = gql`\r\n mutation CreateTransaction(\r\n $transactionInsert: BonusAccountTransactionInput!\r\n ) {\r\n organization {\r\n createTransaction(transactionInsert: $transactionInsert) {\r\n id\r\n amount\r\n conversionRate\r\n description\r\n validTo\r\n }\r\n }\r\n }\r\n`;\r\n\r\nconst useStyles = makeStyles((theme: Theme) => ({\r\n alignRight: {\r\n textAlign: \"right\",\r\n },\r\n toggleGroup: {\r\n \"& .Mui-selected, & .Mui-selected:hover\": {\r\n backgroundColor: \"#005D8F\",\r\n color: \"white\",\r\n },\r\n marginRight: \"10px\",\r\n },\r\n input: {\r\n marginBottom: theme.spacing(1),\r\n \"& .MuiInputBase-input\": {\r\n padding: \"11.5px 14px\",\r\n },\r\n },\r\n}));\r\n\r\ninterface IChangePearls {\r\n changePearls: ChangePearlsStore;\r\n onChangeFunc: (value: any, name: BonusAccountTransactions) => void;\r\n orgId: number;\r\n auth: AuthStore;\r\n actions: {\r\n close: typeof close;\r\n };\r\n}\r\n\r\nconst ChangePearls: React.FC = ({\r\n changePearls,\r\n actions,\r\n onChangeFunc,\r\n auth,\r\n orgId,\r\n}) => {\r\n const classes = useStyles();\r\n\r\n const [changedPearls, setChangedPearls] = React.useState(0);\r\n const [pearlsNote, setPearlsNote] = React.useState(\"\");\r\n const changedPearlsThen = 0;\r\n const [isNegative, setIsNegative] = React.useState(false);\r\n\r\n const pearlsNow =\r\n changedPearlsThen !== 0\r\n ? changedPearlsThen\r\n : changePearls.pearlsObj?.pearls || 0;\r\n const pearlsThen = pearlsNow + changedPearls;\r\n\r\n useEffect(() => {\r\n let pearlsChanged = 0;\r\n if (changedPearls !== 0) {\r\n pearlsChanged = changedPearls;\r\n }\r\n\r\n if (!changePearls.pearlsObj) {\r\n pearlsChanged = 0;\r\n }\r\n\r\n setChangedPearls(pearlsChanged);\r\n }, [changePearls, changedPearls]);\r\n\r\n const [\r\n createTr,\r\n { loading: createTrLoading, error: createTrError },\r\n ] = useMutation(\r\n MUTATION_CREATE_TRANSACTION,\r\n {\r\n awaitRefetchQueries: true,\r\n refetchQueries: [\r\n { query: QUERY_BONUS_ACCOUNT, variables: { id: orgId } },\r\n ],\r\n onCompleted: () => {\r\n actions.close();\r\n },\r\n }\r\n );\r\n\r\n const submit = () => {\r\n if (changePearls.pearlsObj?.id) {\r\n setIsNegative(false);\r\n createTr({\r\n variables: {\r\n transactionInsert: {\r\n accountId: changePearls.pearlsObj.id + \"\",\r\n amount: changedPearls,\r\n description: pearlsNote || \"\",\r\n },\r\n },\r\n }).catch((error) => {\r\n console.log(\"Error while booking PEARLS: \", error);\r\n });\r\n }\r\n };\r\n\r\n const cancel = () => {\r\n setIsNegative(false);\r\n actions.close();\r\n };\r\n\r\n const handleAlignment = (\r\n event: React.MouseEvent,\r\n newAlignment: string\r\n ) => {\r\n const newChanged =\r\n newAlignment === \"positive\"\r\n ? Math.abs(changedPearls)\r\n : -Math.abs(changedPearls);\r\n if (newChanged !== changedPearls) {\r\n setChangedPearls(newChanged);\r\n }\r\n };\r\n\r\n const handlePearlsChange = (event: React.ChangeEvent) => {\r\n if (event.target.value === \"-\") {\r\n setIsNegative(true);\r\n } else {\r\n let newChanged = Number(event.target.value);\r\n if (!newChanged) newChanged = 0;\r\n setChangedPearls(isNegative ? -Math.abs(newChanged) : newChanged);\r\n }\r\n };\r\n\r\n const errorElement = createTrError ? (\r\n \r\n ) : null;\r\n const progress = createTrLoading ? (\r\n \r\n ) : null;\r\n\r\n const children = [\r\n \r\n \r\n ,\r\n \r\n \r\n ,\r\n ];\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {errorElement}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {pearlsNow} \r\n \r\n \r\n \r\n {children}\r\n \r\n \r\n }\r\n autoFocus\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {pearlsThen} \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n setPearlsNote(event.target.value);\r\n }}\r\n className={classes.input}\r\n type=\"text\"\r\n label={}\r\n />\r\n \r\n \r\n \r\n \r\n {progress}\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: AppState) => ({\r\n changePearls: state.accountShortcuts.changePearls,\r\n auth: state.auth,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch: Dispatch) => ({\r\n actions: bindActionCreators({ close }, dispatch),\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(ChangePearls);\r\n","import gql from \"graphql-tag\";\r\n\r\n\r\nconst GET_AUDIT_LOGS = gql`\r\n query objectAudit($objectType: AuditLogObject!, $objectId: String!, $pageNumber: Int!, $pageSize: Int!) {\r\n objectAudit(objectType: $objectType, objectId: $objectId, page: $pageNumber, pageSize: $pageSize) {\r\n client,\r\n operation,\r\n timestamp,\r\n userId,\r\n email,\r\n details\r\n }\r\n }\r\n`\r\n\r\nexport default GET_AUDIT_LOGS;","import React from \"react\";\r\nimport { productInstanceAndCustomerDetails_productInstance as ProductInstance } from \"../../../types/apolloGenerated/productInstanceAndCustomerDetails\";\r\nimport { createStyles, makeStyles } from \"@material-ui/core/styles\";\r\nimport {\r\n Box,\r\n Button,\r\n CircularProgress,\r\n Collapse,\r\n Grid,\r\n GridSize,\r\n IconButton,\r\n Paper,\r\n Table,\r\n TableBody,\r\n TableCell,\r\n TableContainer,\r\n TableHead,\r\n TablePagination,\r\n TableRow,\r\n TableFooter,\r\n Theme,\r\n Typography,\r\n useTheme,\r\n} from \"@material-ui/core\";\r\n\r\nimport { Translate } from \"react-localize-redux\";\r\nimport CodeIcon from \"@material-ui/icons/Code\";\r\n\r\nimport { useQuery } from \"@apollo/react-hooks\";\r\nimport {\r\n objectAudit,\r\n objectAudit_objectAudit,\r\n objectAuditVariables,\r\n} from \"../../../types/apolloGenerated/objectAudit\";\r\nimport { AuditLogObject } from \"../../../types/apolloGenerated/globalTypes\";\r\nimport { Link } from \"react-router-dom\";\r\nimport GET_AUDIT_LOGS from \"../../../commonQueries/getAuditLogs\";\r\nimport {\r\n FirstPage,\r\n KeyboardArrowLeft,\r\n KeyboardArrowRight,\r\n LastPage,\r\n} from \"@material-ui/icons\";\r\nimport { PartnerDetail_organization } from \"../../../types/apolloGenerated/PartnerDetail\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) => {\r\n return createStyles({\r\n arrow: { fontSize: 16, margin: 7 },\r\n textField: {\r\n [`& input::-webkit-clear-button,\r\n & input::-webkit-outer-spin-button,\r\n & input::-webkit-inner-spin-button,\r\n & input::-webkit-toolbarbutton-dropdown`]: {\r\n display: \"none\",\r\n },\r\n width: 150,\r\n },\r\n customTooltip: {\r\n width: \"120px\",\r\n },\r\n root: {\r\n flexShrink: 0,\r\n paddingLeft: \"30px\",\r\n },\r\n container: {\r\n width: \"100%\",\r\n paddingLeft: \"30px\",\r\n marginBottom: \"50px\",\r\n \"& h1\": {\r\n marginTop: \"20px\",\r\n },\r\n \"& .innerContent\": {\r\n height: \"300px\",\r\n position: \"relative\",\r\n },\r\n },\r\n });\r\n});\r\n\r\nconst useRowStyles = makeStyles({\r\n root: {\r\n \"& > *\": {\r\n borderBottom: \"unset\",\r\n },\r\n },\r\n});\r\n\r\ninterface PaginationActionProps {\r\n count: number;\r\n page: number;\r\n rowsPerPage: number;\r\n onChangePage: (\r\n event: React.MouseEvent,\r\n newPage: number\r\n ) => void;\r\n}\r\n\r\nfunction PaginationActions(props: PaginationActionProps) {\r\n const classes = useStyles();\r\n const theme = useTheme();\r\n const { count, page, rowsPerPage, onChangePage } = props;\r\n\r\n const handleFirstPageButtonClick = (\r\n event: React.MouseEvent\r\n ) => {\r\n onChangePage(event, 0);\r\n };\r\n\r\n const handleBackButtonClick = (\r\n event: React.MouseEvent\r\n ) => {\r\n onChangePage(event, page - 1);\r\n };\r\n\r\n const handleNextButtonClick = (\r\n event: React.MouseEvent\r\n ) => {\r\n onChangePage(event, page + 1);\r\n };\r\n\r\n const handleLastPageButtonClick = (\r\n event: React.MouseEvent\r\n ) => {\r\n onChangePage(event, Math.max(0, Math.ceil(count / rowsPerPage) - 1));\r\n };\r\n\r\n return (\r\n
    \r\n \r\n {theme.direction === \"rtl\" ? : }\r\n \r\n \r\n {theme.direction === \"rtl\" ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n = Math.ceil(count / rowsPerPage) - 1}\r\n aria-label=\"next page\"\r\n >\r\n {theme.direction === \"rtl\" ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n = Math.ceil(count / rowsPerPage) - 1}\r\n aria-label=\"last page\"\r\n >\r\n {theme.direction === \"rtl\" ? : }\r\n \r\n
    \r\n );\r\n}\r\n\r\nfunction Row({\r\n audit,\r\n canViewLogDetail,\r\n}: {\r\n audit: objectAudit_objectAudit;\r\n canViewLogDetail: boolean;\r\n}) {\r\n const [openRawDetails, setOpenRawDetails] = React.useState(false);\r\n const classes = useRowStyles();\r\n\r\n return (\r\n \r\n \r\n {audit?.client}\r\n {audit?.operation}\r\n {audit?.timestamp}\r\n \r\n \r\n View\r\n \r\n \r\n {audit?.email}\r\n \r\n {canViewLogDetail ? (\r\n setOpenRawDetails(!openRawDetails)}\r\n >\r\n View RAW \r\n \r\n ) : (\r\n
    \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {canViewLogDetail ? (\r\n \r\n {audit?.details}\r\n \r\n ) : (\r\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 AuditLog: React.FC<{\r\n productCode: string | null;\r\n productInstance: ProductInstance | null;\r\n partnerDetail: PartnerDetail_organization | null;\r\n canViewLogDetail: boolean;\r\n productId: string | null;\r\n customerId: string | null;\r\n gridSize: GridSize;\r\n}> = ({\r\n productCode = null,\r\n productInstance = null,\r\n canViewLogDetail,\r\n partnerDetail = null,\r\n productId,\r\n customerId,\r\n gridSize,\r\n}) => {\r\n const { instanceInformation } = productInstance || {};\r\n let devId: string = \"\";\r\n const classes = useStyles();\r\n\r\n const [page, setPage] = React.useState(0);\r\n const [rowsPerPage, setRowsPerPage] = React.useState(5);\r\n\r\n if (instanceInformation != null) {\r\n if (\r\n instanceInformation.__typename === \"SilkInstanceInformation\" ||\r\n instanceInformation.__typename === \"PerlaInstanceInformation\"\r\n ) {\r\n devId = instanceInformation?.deviceId ?? \"\";\r\n }\r\n }\r\n\r\n let deviceData: objectAudit | undefined;\r\n let organizationData: objectAudit | undefined;\r\n let customerData: objectAudit | undefined;\r\n let customerDataLoading: boolean;\r\n let deviceDataLoading: boolean;\r\n let organizationLoading: boolean;\r\n let shouldSkipDeviceQuery = false;\r\n let shouldSkipOrganizationQuery = false;\r\n let shouldSkipProductInstanceQuery = false;\r\n let shouldSkipCustomerQuery = false;\r\n let shouldSkipProductQuery = false;\r\n\r\n if (productCode === null) {\r\n productCode = \"\";\r\n shouldSkipProductInstanceQuery = true;\r\n }\r\n if (devId === \"\") {\r\n shouldSkipDeviceQuery = true;\r\n }\r\n if (partnerDetail === null) {\r\n shouldSkipOrganizationQuery = true;\r\n }\r\n if (customerId === null) {\r\n customerId = \"\";\r\n shouldSkipCustomerQuery = true;\r\n }\r\n if (productId === null) {\r\n productId = \"\";\r\n shouldSkipProductQuery = true;\r\n }\r\n\r\n const {\r\n data: productInstanceData,\r\n loading: productInstanceLoading,\r\n } = useQuery(GET_AUDIT_LOGS, {\r\n variables: {\r\n objectType: AuditLogObject.PRODUCT_INSTANCE_CODE,\r\n objectId: productCode,\r\n pageNumber: 0,\r\n pageSize: 100000,\r\n },\r\n skip: shouldSkipProductInstanceQuery,\r\n });\r\n\r\n const organizationResult = useQuery(\r\n GET_AUDIT_LOGS,\r\n {\r\n variables: {\r\n objectType: AuditLogObject.ORGANIZATION,\r\n objectId: String(partnerDetail?.id),\r\n pageNumber: 0,\r\n pageSize: 100000,\r\n },\r\n skip: shouldSkipOrganizationQuery,\r\n }\r\n );\r\n\r\n const deviceResult = useQuery(\r\n GET_AUDIT_LOGS,\r\n {\r\n variables: {\r\n objectType: AuditLogObject.DEVICE,\r\n objectId: devId,\r\n pageNumber: 0,\r\n pageSize: 100000,\r\n },\r\n skip: shouldSkipDeviceQuery,\r\n }\r\n );\r\n\r\n const customerResult = useQuery(\r\n GET_AUDIT_LOGS,\r\n {\r\n variables: {\r\n objectType: AuditLogObject.USER_ACCOUNT,\r\n objectId: customerId,\r\n pageNumber: 0,\r\n pageSize: 100000,\r\n },\r\n skip: shouldSkipCustomerQuery,\r\n }\r\n );\r\n\r\n const { data: productData, loading: productLoading } = useQuery<\r\n objectAudit,\r\n objectAuditVariables\r\n >(GET_AUDIT_LOGS, {\r\n variables: {\r\n objectType: AuditLogObject.PRODUCT,\r\n objectId: productId,\r\n pageNumber: 0,\r\n pageSize: 100000,\r\n },\r\n skip: shouldSkipProductQuery,\r\n });\r\n\r\n const handleChangeRowsPerPage = (\r\n event: React.ChangeEvent\r\n ) => {\r\n setRowsPerPage(parseInt(event.target.value, 10));\r\n setPage(0);\r\n };\r\n\r\n deviceData = deviceResult.data;\r\n deviceDataLoading = deviceResult.loading;\r\n organizationData = organizationResult.data;\r\n organizationLoading = organizationResult.loading;\r\n customerData = customerResult.data;\r\n customerDataLoading = customerResult.loading;\r\n\r\n if (\r\n productInstanceLoading ||\r\n deviceDataLoading ||\r\n organizationLoading ||\r\n customerDataLoading ||\r\n productLoading\r\n )\r\n return ;\r\n\r\n if (\r\n !productInstanceData?.objectAudit &&\r\n !deviceData?.objectAudit &&\r\n !organizationData?.objectAudit &&\r\n !customerData?.objectAudit &&\r\n !productData?.objectAudit\r\n )\r\n return
    ;\r\n\r\n const logs: (objectAudit_objectAudit | null)[] = [];\r\n\r\n productInstanceData?.objectAudit?.forEach((instance) => logs.push(instance));\r\n deviceData?.objectAudit?.forEach((instance) => logs.push(instance));\r\n organizationData?.objectAudit?.forEach((instance) => logs.push(instance));\r\n customerData?.objectAudit?.forEach((instance) => logs.push(instance));\r\n productData?.objectAudit?.forEach((instance) => logs.push(instance));\r\n logs.sort((logA, logB) =>\r\n logA?.timestamp > logB?.timestamp\r\n ? -1\r\n : logB?.timestamp > logA?.timestamp\r\n ? 1\r\n : 0\r\n );\r\n\r\n const handleChangePage = (\r\n event: React.MouseEvent | null,\r\n newPage: number\r\n ) => {\r\n setPage(newPage);\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n

    \r\n \r\n

    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {logs.length !== 0 ? (\r\n logs\r\n .slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage)\r\n .map((auditDetails: objectAudit_objectAudit | null, idx) =>\r\n auditDetails !== null ? (\r\n \r\n ) : (\r\n \r\n )\r\n )\r\n ) : (\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\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 AuditLog;\r\n","import React, { useState, Fragment } from \"react\";\r\nimport { Grid } from \"@material-ui/core\";\r\nimport gql from \"graphql-tag\";\r\n\r\nimport { withLocalize, LocalizeContextProps } from \"react-localize-redux\";\r\n\r\nimport PartnerInformation from \"./PartnerInformation\";\r\nimport PartnerMedia from \"./PartnerMedia\";\r\nimport Employees from \"./Employees/index\";\r\nimport BonusAccount from \"./BonusAccount/index\";\r\nimport ProductRegistrations from \"./ProductRegistrations/index\";\r\nimport { Prompt } from \"react-router\";\r\nimport PageHeader from \"components/common/PageHeader\";\r\n\r\nimport { Theme, makeStyles } from \"@material-ui/core\";\r\n\r\nimport { PartnerDetail_organization } from \"types/apolloGenerated/PartnerDetail\";\r\n\r\nimport { changeFuncType } from \".\";\r\n\r\nimport Error from \"components/common/Error\";\r\nimport { PartnerGroups_organizationGroups } from \"types/apolloGenerated/PartnerGroups\";\r\nimport { AuthStore } from \"redux/types/Auth\";\r\nimport PageDialog from \"components/common/PageDialog\";\r\nimport DELETE_ORGANISATION from \"commonQueries/deleteOrganisation\";\r\nimport { useMutation } from \"react-apollo\";\r\nimport {\r\n deleteOrganisation as MutationData,\r\n deleteOrganisationVariables as MutationVars,\r\n} from \"types/apolloGenerated/deleteOrganisation\";\r\n\r\nimport {\r\n ReactivateOrganization as ReactivateData,\r\n ReactivateOrganizationVariables as ReactivateVars,\r\n} from \"types/apolloGenerated/ReactivateOrganization\";\r\n\r\nimport ChangePearls from \"components/common/AccShortcuts/ChangePearls\";\r\nimport AuditLog from \"../../../Customer/InstanceDetails/AuditLog\";\r\n\r\nconst REACTIVATE_ORGANIZATION = gql`\r\n mutation ReactivateOrganization($id: Int!) {\r\n organization {\r\n reactivateOrganization(organizationId: $id)\r\n }\r\n }\r\n`;\r\n\r\ninterface PartnerDetailProps extends LocalizeContextProps {\r\n auth: AuthStore;\r\n isNewMode: boolean;\r\n newPartnerBean: PartnerDetail_organization;\r\n selectedGroups: PartnerGroups_organizationGroups[];\r\n selectableGroups: PartnerGroups_organizationGroups[];\r\n isSavePending: boolean;\r\n error?: string[] | null;\r\n setSelectedGroups: (selected: PartnerGroups_organizationGroups[]) => void;\r\n onChangeSetData: changeFuncType;\r\n onSave: () => void;\r\n canViewLogDetail: boolean;\r\n}\r\n\r\nconst useStyles = makeStyles((theme: Theme) => ({\r\n userInfo: {\r\n paddingLeft: \"30px\",\r\n paddingBottom: \"30px\",\r\n },\r\n pageHeader: {\r\n position: \"sticky\",\r\n top: \"64px\",\r\n zIndex: 100,\r\n background: \"#fff\",\r\n },\r\n errorContainer: {\r\n position: \"sticky\",\r\n top: \"129px\",\r\n zIndex: 1,\r\n },\r\n error: {\r\n position: \"sticky\",\r\n },\r\n}));\r\n\r\nconst PartnerDetails: React.FC = ({\r\n auth,\r\n translate,\r\n isNewMode,\r\n newPartnerBean,\r\n selectedGroups,\r\n setSelectedGroups,\r\n selectableGroups,\r\n onChangeSetData,\r\n onSave,\r\n isSavePending,\r\n error,\r\n canViewLogDetail,\r\n}) => {\r\n const [state, setState] = React.useState(\"\");\r\n const [isDirty] = useState(false);\r\n\r\n const classes = useStyles();\r\n // const { id } = useParams();\r\n // const isNewOrganization = isNewMode && window.location.href.indexOf(\"NEW\") > -1 && Number(id);\r\n\r\n const [deleted, setDeleted] = React.useState(newPartnerBean.isDeleted);\r\n\r\n const [deleteOrganisation, { loading: orgLoad }] = useMutation<\r\n MutationData,\r\n MutationVars\r\n >(DELETE_ORGANISATION, {\r\n onCompleted: (data) => {\r\n if (!data.organization?.deleteOrganization) {\r\n setDelOrgError(\r\n translate(\"components.partnerDetails.error.delete\") as string\r\n );\r\n } else {\r\n setOpen(false);\r\n setDeleted(true);\r\n window.location.href = \"/pam/partner\";\r\n }\r\n },\r\n onError: (error) => setDelOrgError(error.message),\r\n });\r\n\r\n const [reactivateOrganisation, { loading: reactivateLoading }] = useMutation<\r\n ReactivateData,\r\n ReactivateVars\r\n >(REACTIVATE_ORGANIZATION, {\r\n onCompleted: (data) => {\r\n if (!data.organization?.reactivateOrganization) {\r\n setDelOrgError(\r\n translate(\"components.partnerDetails.error.reactivate\") as string\r\n );\r\n } else {\r\n setOpen(false);\r\n setDeleted(false);\r\n }\r\n },\r\n });\r\n\r\n const message = deleted\r\n ? (translate(\"components.partnerDetails.orgDeleted\") as string)\r\n : \"\";\r\n const [open, setOpen] = React.useState(false);\r\n const [delOrgError, setDelOrgError] = React.useState(\"\");\r\n\r\n const change = (newPearlsState: string) => {\r\n setState(newPearlsState);\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n {isNewMode ? null : (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n setDelOrgError(\"\");\r\n deleted\r\n ? reactivateOrganisation({\r\n variables: {\r\n id: newPartnerBean.id,\r\n },\r\n })\r\n : deleteOrganisation({\r\n variables: {\r\n organizationId: newPartnerBean.id,\r\n },\r\n });\r\n },\r\n },\r\n {\r\n title: \"generics.cancel\",\r\n click: () => {\r\n setOpen(false);\r\n setDelOrgError(\"\");\r\n },\r\n },\r\n ]}\r\n loading={orgLoad || reactivateLoading}\r\n error={delOrgError}\r\n />\r\n \r\n \r\n );\r\n};\r\n\r\nexport default withLocalize(PartnerDetails);\r\n","import gql from \"graphql-tag\";\r\n\r\nconst USER_ROLES = gql`\r\nquery userRoles {\r\n user {\r\n userInformation {\r\n userRoles\r\n }\r\n }\r\n}\r\n`;\r\n\r\nexport default USER_ROLES;","import React, {\r\n useState,\r\n useEffect,\r\n Fragment,\r\n useRef,\r\n useMemo,\r\n useCallback,\r\n} from \"react\";\r\nimport {\r\n CircularProgress,\r\n makeStyles,\r\n Theme,\r\n SnackbarContent,\r\n} from \"@material-ui/core\";\r\n\r\nimport { connect } from \"react-redux\";\r\nimport store, { AppState } from \"redux/store\";\r\nimport { bindActionCreators, Dispatch } from \"redux\";\r\nimport { dirty, load, save } from \"redux/actions/PartnerDetailsActions\";\r\nimport { PartnerGroupDiff } from \"redux/types/PartnerDetails\";\r\nimport { useParams } from \"react-router\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { AuthStore } from \"redux/types/Auth\";\r\nimport gql from \"graphql-tag\";\r\n\r\nimport cloneDeep from \"clone-deep\";\r\n\r\nimport { open as changeOrganizationActiveStateOpen } from \"redux/actions/ChangeOrganizationActiveStateActions\";\r\nimport { useQuery, useMutation, ExecutionResult } from \"react-apollo\";\r\n\r\nimport {\r\n PartnerDetail,\r\n PartnerDetailVariables,\r\n PartnerDetail_organization,\r\n} from \"types/apolloGenerated/PartnerDetail\";\r\nimport {\r\n PartnerGroups,\r\n PartnerGroups_organizationGroups,\r\n} from \"types/apolloGenerated/PartnerGroups\";\r\n\r\nimport PartnerDetailsView from \"./PartnerDetail\";\r\nimport { filterSparseArray } from \"util/CampUtils\";\r\nimport { OrganizationUpdateInput } from \"types/apolloGenerated/globalTypes\";\r\n\r\nimport { qraphQlErrorsToString } from \"util/GraphQL\";\r\nimport { withLocalize, LocalizeContextProps } from \"react-localize-redux\";\r\n\r\nimport {\r\n AddNewOrganization,\r\n AddNewOrganizationVariables,\r\n} from \"types/apolloGenerated/AddNewOrganization\";\r\nimport {\r\n QUERY_PARTNER_DETAIL,\r\n QUERY_PARTNER_GROUPS,\r\n FRAGMENT_PARTNER_DETAIL,\r\n FRAGMENT_PARTNER_ADDRESS,\r\n} from \"commonQueries/partner\";\r\n\r\nimport { PartnerType, OrganizationVisibility } from \"types/ToolboxEntities\";\r\nimport { ApolloError } from \"apollo-client\";\r\nimport USER_ROLES from \"../../../../commonQueries/userRole\";\r\nimport * as Types from \"../../../../types/ToolboxEntities\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) => ({\r\n error: {\r\n backgroundColor: theme.palette.error.dark,\r\n marginBottom: theme.spacing(3),\r\n },\r\n icon: {\r\n fontSize: 20,\r\n },\r\n iconVariant: {\r\n opacity: 0.9,\r\n marginRight: theme.spacing(1),\r\n },\r\n message: {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n },\r\n}));\r\n\r\ninterface partnerDetailProps extends LocalizeContextProps {\r\n auth: AuthStore;\r\n actions: {\r\n dirty: typeof dirty;\r\n load: typeof load;\r\n save: typeof save;\r\n changeOrganizationActiveStateOpen: typeof changeOrganizationActiveStateOpen;\r\n };\r\n}\r\n\r\nexport const MUTATE_PARTNER = gql`\r\n mutation MutatePartner(\r\n $organization: OrganizationUpdateInput!\r\n $bonusAccountUpdate: Boolean!\r\n ) {\r\n organization {\r\n update(\r\n organization: $organization\r\n bonusAccountUpdate: $bonusAccountUpdate\r\n ) {\r\n ...OrganizationDetail\r\n }\r\n }\r\n }\r\n ${FRAGMENT_PARTNER_DETAIL}\r\n`;\r\n\r\nconst MUTATE_PARTNER_LOGO = gql`\r\n mutation MutatePartnerLogo($updateImageInput: OrganizationUpdateLogoInput!) {\r\n organization {\r\n updateLogo(logo: $updateImageInput) {\r\n logoUrl\r\n }\r\n }\r\n }\r\n`;\r\n\r\nconst MUTATE_PARTNER_IMAGE = gql`\r\n mutation MutatePartnerImage(\r\n $updateImageInput: OrganizationUpdatePartnerImageInput!\r\n ) {\r\n organization {\r\n updatePartnerImage(partnerImage: $updateImageInput) {\r\n partnerImageUrl\r\n }\r\n }\r\n }\r\n`;\r\n\r\nconst MUTATE_ADDPARTNERGROUP = gql`\r\n mutation AddToPartnerGroup(\r\n $organizationId: Int!\r\n $organizationGroupId: Int!\r\n ) {\r\n organizationGroup {\r\n addOrganization(\r\n organizationId: $organizationId\r\n organizationGroupId: $organizationGroupId\r\n ) {\r\n groups {\r\n id\r\n name\r\n }\r\n }\r\n }\r\n }\r\n`;\r\n\r\nconst MUTATE_REMOVEPARTNERGROUP = gql`\r\n mutation RemoveFromPartnerGroup(\r\n $organizationId: Int!\r\n $organizationGroupId: Int!\r\n ) {\r\n organizationGroup {\r\n removeOrganization(\r\n organizationId: $organizationId\r\n organizationGroupId: $organizationGroupId\r\n ) {\r\n groups {\r\n id\r\n name\r\n }\r\n }\r\n }\r\n }\r\n`;\r\n\r\nconst MUTATE_CHANGEPARTNERADDRESS = gql`\r\n mutation ChangePartnerAddress(\r\n $partnerAddress: OrganizationAddressUpdateInput!\r\n ) {\r\n organization {\r\n updateOrganizationAddress(address: $partnerAddress) {\r\n ...OrganizationAddress\r\n }\r\n }\r\n }\r\n ${FRAGMENT_PARTNER_ADDRESS}\r\n`;\r\n\r\nconst MUTATE_ADD_NEW_ORGANIZATION = gql`\r\n mutation AddNewOrganization($organization: OrganizationInsertInput!) {\r\n organization {\r\n insert(organization: $organization) {\r\n name\r\n id\r\n }\r\n }\r\n }\r\n`;\r\n\r\nconst getFilteredGroups = (\r\n actualGroups: (PartnerGroups_organizationGroups | null)[] | null | undefined,\r\n filterGroups: PartnerGroups_organizationGroups[]\r\n): PartnerGroups_organizationGroups[] => {\r\n if (actualGroups) {\r\n return actualGroups.filter((group) => {\r\n return (\r\n group &&\r\n filterGroups.findIndex((filterGroup) => filterGroup.id === group.id) >=\r\n 0\r\n );\r\n }) as PartnerGroups_organizationGroups[];\r\n }\r\n\r\n return [];\r\n};\r\n\r\nconst getPartnerGroupDiff = (\r\n selectedGroups: PartnerGroups_organizationGroups[],\r\n partnerDataGroups: (PartnerGroups_organizationGroups | null)[]\r\n): PartnerGroupDiff => {\r\n const groupsToAdd = selectedGroups.filter(\r\n (selectedGroup) =>\r\n -1 ===\r\n partnerDataGroups.findIndex(\r\n (partnerGroup) => partnerGroup && partnerGroup.id === selectedGroup.id\r\n )\r\n );\r\n\r\n const groupsToRemove = partnerDataGroups.filter(\r\n (partnerGroup) =>\r\n -1 ===\r\n selectedGroups.findIndex(\r\n (selectedGroup) => partnerGroup && partnerGroup.id === selectedGroup.id\r\n )\r\n ) as PartnerGroups_organizationGroups[];\r\n\r\n return {\r\n groupsToAdd: groupsToAdd,\r\n groupsToRemove: groupsToRemove,\r\n };\r\n};\r\n\r\nconst clonePartner = (\r\n organization: PartnerDetail_organization | null | undefined,\r\n isNewMode: boolean = false\r\n): PartnerDetail_organization | undefined => {\r\n if (organization) {\r\n return cloneDeep(organization) || undefined;\r\n } else if (isNewMode) {\r\n return {\r\n __typename: \"Organization\",\r\n id: -1,\r\n externalId: \"\",\r\n name: \"\",\r\n partnerType: PartnerType.BUILDER,\r\n visibility: OrganizationVisibility.VISIBLE,\r\n address: {\r\n __typename: \"Address\",\r\n street: \"\",\r\n postalCode: \"\",\r\n city: \"\",\r\n countryCode: null,\r\n location: null,\r\n },\r\n size: 0,\r\n isDeleted: false,\r\n email: \"\",\r\n website: \"\",\r\n telephone: \"\",\r\n vatNumber: \"\",\r\n logoUrl: \"\",\r\n logoLinkUrl: \"\",\r\n partnerImageUrl: \"\",\r\n partnerImageLinkUrl: \"\",\r\n bonusaccount: null,\r\n groups: null,\r\n creationTimeStamp: null,\r\n };\r\n }\r\n};\r\n\r\nexport type changeFuncType = (value: any, name: string) => void;\r\n\r\nconst PartnerDetailsContainer: React.FC = ({\r\n auth,\r\n actions,\r\n translate,\r\n}) => {\r\n const { id } = useParams();\r\n const idNum = Number(id);\r\n\r\n const { data: roleData, loading: roleLoading, error: roleError } = useQuery(\r\n USER_ROLES\r\n );\r\n const roles: string[] = roleData?.user?.userInformation?.userRoles;\r\n let canViewLogs: boolean = false;\r\n\r\n store.getState().auth.user?.roles.forEach((item: Types.Role) => {\r\n if (item.roleName === \"AuditAdmin\") {\r\n canViewLogs = true;\r\n }\r\n });\r\n\r\n if (!roleLoading) {\r\n if (roles != null && roles.includes(\"rnd\")) {\r\n }\r\n }\r\n if (roleError) {\r\n }\r\n\r\n //trigger used to update component as a hack should be rewritten\r\n const [hasChanged, setHasChanged] = useState(true);\r\n\r\n const { ownerId } = useParams();\r\n let ownerIdNum = Number(ownerId) || null;\r\n\r\n const isNewMode = typeof id === \"undefined\";\r\n const classes = useStyles();\r\n const [\r\n persistPartner,\r\n { loading: persistPartnerLoading, error: persistPartnerError },\r\n ] = useMutation(MUTATE_PARTNER, {\r\n onCompleted: (data) => {\r\n if (partnerRef.current?.bonusaccount === null) {\r\n partnerRef.current.bonusaccount = data.organization.update.bonusaccount;\r\n }\r\n setHasChanged(!hasChanged);\r\n },\r\n //refetch query to update cache\r\n refetchQueries: [\r\n {\r\n query: QUERY_PARTNER_DETAIL,\r\n variables: { id: idNum },\r\n },\r\n ],\r\n });\r\n const [\r\n persistPartnerImage,\r\n { loading: persistPartnerImageLoading, error: persistPartnerImageError },\r\n ] = useMutation(MUTATE_PARTNER_IMAGE);\r\n const [\r\n persistPartnerLogo,\r\n { loading: persistPartnerLogoLoading, error: persistPartnerLogoError },\r\n ] = useMutation(MUTATE_PARTNER_LOGO);\r\n const [\r\n addToPartnerGroups,\r\n { loading: addPartnerGroupsLoading, error: addPartnerGroupsError },\r\n ] = useMutation(MUTATE_ADDPARTNERGROUP, {\r\n onCompleted: (data) => {\r\n if (partnerRef.current?.groups) {\r\n partnerRef.current.groups =\r\n data.organizationGroup?.addOrganization?.groups;\r\n }\r\n },\r\n refetchQueries: [\r\n {\r\n query: QUERY_PARTNER_DETAIL,\r\n variables: { id: idNum },\r\n },\r\n ],\r\n });\r\n const [\r\n removeFromPartnerGroups,\r\n { loading: removePartnerGroupsLoading, error: removePartnerGroupsError },\r\n ] = useMutation(MUTATE_REMOVEPARTNERGROUP, {\r\n onCompleted: (data) => {\r\n if (partnerRef.current?.groups) {\r\n partnerRef.current.groups =\r\n data.organizationGroup?.removeOrganization?.groups;\r\n }\r\n },\r\n refetchQueries: [\r\n {\r\n query: QUERY_PARTNER_DETAIL,\r\n variables: { id: idNum },\r\n },\r\n ],\r\n });\r\n const [\r\n changePartnerAddress,\r\n { loading: changePartnerAddressLoading, error: changePartnerAddressError },\r\n ] = useMutation(MUTATE_CHANGEPARTNERADDRESS);\r\n\r\n const [\r\n addNewOrganization,\r\n { loading: addNewOrganizationLoading, error: addNewOrganizationError },\r\n ] = useMutation(\r\n MUTATE_ADD_NEW_ORGANIZATION,\r\n {\r\n onError: (error: ApolloError) => {\r\n error?.graphQLErrors?.some((graphQLError: any) => {\r\n if (graphQLError?.message.startsWith(\"BonusAccount\")) {\r\n history.replace(\r\n \"/pam/partner/\" + graphQLError?.extensions?.data?.OrganizationId\r\n );\r\n }\r\n });\r\n },\r\n }\r\n );\r\n\r\n // Persisted Data from Server/DEB\r\n const { data: persistedPartner, loading, error } = useQuery<\r\n PartnerDetail,\r\n PartnerDetailVariables\r\n >(QUERY_PARTNER_DETAIL, {\r\n variables: { id: idNum },\r\n skip: isNewMode,\r\n });\r\n const {\r\n data: persistedAvailableGroups,\r\n loading: pgLoaging,\r\n error: pgError,\r\n client,\r\n } = useQuery(QUERY_PARTNER_GROUPS);\r\n\r\n // Post-Prozessed - selectable groups\r\n const selectableGroups = useMemo(() => {\r\n return filterSparseArray(persistedAvailableGroups?.organizationGroups);\r\n }, [persistedAvailableGroups]);\r\n\r\n // Session-Copy of Partner\r\n const partnerRef = useRef();\r\n if (typeof partnerRef.current === \"undefined\") {\r\n partnerRef.current = clonePartner(\r\n persistedPartner?.organization,\r\n isNewMode\r\n );\r\n }\r\n\r\n // Session-Copy of Partner-Groups\r\n const selectedGroupsRef = useRef([]);\r\n if (\r\n selectedGroupsRef.current.length === 0 &&\r\n selectableGroups.length &&\r\n partnerRef.current?.groups\r\n ) {\r\n selectedGroupsRef.current = getFilteredGroups(\r\n partnerRef.current?.groups,\r\n selectableGroups\r\n );\r\n }\r\n const setSelectedGroups = useCallback(\r\n (selected: PartnerGroups_organizationGroups[]) => {\r\n selectedGroupsRef.current = selected;\r\n },\r\n []\r\n );\r\n\r\n // Session-Data: Base64Images\r\n const partnerSessionRef = useRef<{\r\n logo?: string;\r\n image?: string;\r\n logoLinkUrl?: string | null;\r\n partnerImageLinkUrl?: string | null;\r\n city?: string;\r\n street?: string;\r\n postalCode?: string;\r\n countryCode?: string;\r\n }>({});\r\n\r\n const onChangeSetData = useCallback(\r\n (value: any, name: string) => {\r\n if (name === \"logoBase64\") {\r\n partnerSessionRef.current.logo = value;\r\n } else if (name === \"imageBase64\" || name === \"partnerImageBase64\") {\r\n partnerSessionRef.current.image = value;\r\n } else if (name === \"logoUrl\") {\r\n partnerSessionRef.current.logoLinkUrl = value;\r\n } else if (name === \"partnerImageUrl\") {\r\n partnerSessionRef.current.partnerImageLinkUrl = value;\r\n } else {\r\n partnerRef.current = changeNestedProp(\r\n partnerRef.current,\r\n value,\r\n name.split(\"/\")\r\n );\r\n if (\r\n partnerRef.current &&\r\n partnerRef.current.address &&\r\n partnerRef.current.address.location\r\n ) {\r\n partnerRef.current.address.location.__typename = \"GeoLocation\";\r\n }\r\n }\r\n },\r\n []\r\n );\r\n\r\n const [isDirty] = useState(false);\r\n\r\n useEffect(() => {\r\n if (isDirty) {\r\n window.onbeforeunload = () => true;\r\n } else {\r\n window.onbeforeunload = null;\r\n }\r\n\r\n return () => {\r\n window.onbeforeunload = null;\r\n };\r\n }, [isDirty]);\r\n\r\n interface changeAddressVariables {\r\n id: number;\r\n address: {\r\n postalCode?: string;\r\n countryCode?: string;\r\n street?: string;\r\n city?: string;\r\n location: {\r\n latitude?: number;\r\n longitude?: number;\r\n };\r\n };\r\n }\r\n\r\n const history = useHistory();\r\n let newCreatedPartnerId: number | undefined = undefined;\r\n const onSave = () => {\r\n console.log(\"SAVE\");\r\n if (partnerRef.current) {\r\n const partnerId = partnerRef.current.id;\r\n\r\n const selectedFilter = (group: any) => {\r\n if (partnerRef.current) {\r\n return (\r\n group.name !==\r\n \"bwt_\" + partnerRef.current.partnerType?.toLowerCase() &&\r\n group.name !==\r\n \"bwt_\" +\r\n persistedPartner?.organization?.partnerType?.toLowerCase()\r\n );\r\n }\r\n return group;\r\n };\r\n\r\n let currentGroups: any[] = [];\r\n if (partnerRef.current.groups) {\r\n currentGroups = partnerRef.current.groups.filter(selectedFilter);\r\n }\r\n const partnerGroupsDiff = getPartnerGroupDiff(\r\n selectedGroupsRef.current.filter(selectedFilter),\r\n currentGroups\r\n );\r\n\r\n const savedAll: Promise[] = [];\r\n if (partnerSessionRef.current.logoLinkUrl?.length === 0)\r\n partnerSessionRef.current.logoLinkUrl = null;\r\n if (partnerSessionRef.current.partnerImageLinkUrl?.length === 0)\r\n partnerSessionRef.current.partnerImageLinkUrl = null;\r\n\r\n let logoLinkUrl: string | null | undefined =\r\n partnerSessionRef.current.logoLinkUrl !== undefined\r\n ? partnerSessionRef.current.logoLinkUrl\r\n : partnerRef.current.logoLinkUrl;\r\n let partnerImageLinkUrl: string | null | undefined =\r\n partnerSessionRef.current.partnerImageLinkUrl !== undefined\r\n ? partnerSessionRef.current.partnerImageLinkUrl\r\n : partnerRef.current.partnerImageLinkUrl;\r\n\r\n if (!isNewMode) {\r\n const variables: OrganizationUpdateInput = {\r\n id: partnerRef.current.id,\r\n name: partnerRef?.current?.name?.trim(),\r\n partnerType: partnerRef?.current?.partnerType,\r\n visibility: partnerRef?.current?.visibility,\r\n email: partnerRef?.current?.email?.trim(),\r\n website: partnerRef?.current?.website?.trim(),\r\n telephone: partnerRef?.current?.telephone?.trim(),\r\n logoLinkUrl: logoLinkUrl,\r\n partnerImageLinkUrl: partnerImageLinkUrl?.trim(),\r\n externalId: partnerRef.current.externalId,\r\n size: partnerRef.current.size,\r\n vatNumber: partnerRef.current.vatNumber,\r\n };\r\n\r\n savedAll.push(\r\n persistPartner({\r\n variables: {\r\n organization: variables,\r\n bonusAccountUpdate:\r\n persistedPartner?.organization?.partnerType ===\r\n variables.partnerType\r\n ? false\r\n : true,\r\n },\r\n }).catch((error) => {\r\n const errorString =\r\n (translate(\"message.error.error_partnerInformation\") as string) +\r\n qraphQlErrorsToString(error, translate);\r\n throw new Error(errorString);\r\n })\r\n );\r\n\r\n savedAll.push(\r\n changePartnerAddress({\r\n variables: {\r\n partnerAddress: {\r\n organizationId: partnerRef.current.id,\r\n postalCode:\r\n partnerRef.current.address?.postalCode?.trim() ||\r\n partnerSessionRef.current.postalCode,\r\n countryCode:\r\n partnerRef.current.address?.countryCode ||\r\n partnerSessionRef.current.countryCode,\r\n street:\r\n partnerRef.current.address?.street?.trim() ||\r\n partnerSessionRef.current.street,\r\n city:\r\n partnerRef.current.address?.city?.trim() ||\r\n partnerSessionRef.current.city,\r\n location: {\r\n latitude: partnerRef.current.address?.location?.latitude,\r\n longitude: partnerRef.current.address?.location?.longitude,\r\n },\r\n },\r\n },\r\n }).catch((error) => {\r\n const errorString =\r\n (translate(\"message.error.error_partnerAddress\") as string) +\r\n qraphQlErrorsToString(error, translate);\r\n throw new Error(errorString);\r\n })\r\n );\r\n\r\n if (partnerGroupsDiff.groupsToAdd.length) {\r\n partnerGroupsDiff.groupsToAdd.map((elementToAdd) =>\r\n savedAll.push(\r\n addToPartnerGroups({\r\n variables: {\r\n organizationId: partnerId,\r\n organizationGroupId: elementToAdd.id,\r\n },\r\n })\r\n .then(() => {\r\n console.log(\"Update -> Yehaaa Group added\");\r\n })\r\n .catch((error) => {\r\n const errorString =\r\n (translate(\"message.error.error_partnerGroups\") as string) +\r\n qraphQlErrorsToString(error, translate);\r\n throw new Error(errorString);\r\n })\r\n )\r\n );\r\n }\r\n\r\n if (partnerGroupsDiff.groupsToRemove.length) {\r\n partnerGroupsDiff.groupsToRemove.map((elementToRemove) =>\r\n savedAll.push(\r\n removeFromPartnerGroups({\r\n variables: {\r\n organizationId: partnerId,\r\n organizationGroupId: elementToRemove.id,\r\n },\r\n })\r\n .then(() => {\r\n console.log(\"Update -> Yehaaa Group removed\");\r\n })\r\n .catch((error) => {\r\n const errorString =\r\n (translate(\"message.error.error_partnerGroups\") as string) +\r\n qraphQlErrorsToString(error, translate);\r\n throw new Error(errorString);\r\n })\r\n )\r\n );\r\n }\r\n\r\n if (partnerSessionRef.current.logo !== undefined) {\r\n console.log(\"##### \" + partnerSessionRef.current.logo);\r\n savedAll.push(\r\n persistPartnerLogo({\r\n variables: {\r\n updateImageInput: {\r\n organizationId: partnerRef.current.id,\r\n logo:\r\n partnerSessionRef.current.logo !== null\r\n ? partnerSessionRef.current.logo.split(\"base64,\").pop()\r\n : null,\r\n },\r\n },\r\n }).catch((error) => {\r\n const errorString =\r\n (translate(\"message.error.error_partnerLogo\") as string) +\r\n qraphQlErrorsToString(error, translate);\r\n throw new Error(errorString);\r\n })\r\n );\r\n }\r\n\r\n if (partnerSessionRef.current.image !== undefined) {\r\n console.log(\"##### \" + partnerSessionRef.current.image);\r\n savedAll.push(\r\n persistPartnerImage({\r\n variables: {\r\n updateImageInput: {\r\n organizationId: partnerRef.current.id,\r\n partnerImage:\r\n partnerSessionRef.current.image !== null\r\n ? partnerSessionRef.current.image.split(\"base64,\").pop()\r\n : null,\r\n },\r\n },\r\n }).catch((error) => {\r\n const errorString =\r\n (translate(\"message.error.error_partnerImage\") as string) +\r\n qraphQlErrorsToString(error, translate);\r\n throw new Error(errorString);\r\n })\r\n );\r\n }\r\n\r\n Promise.all(savedAll)\r\n .then(() => {\r\n console.log(\"savedAll\", savedAll);\r\n //partnerRef.current = clonePartner(persistedPartner?.organization, true);\r\n selectedGroupsRef.current = getFilteredGroups(\r\n partnerRef.current?.groups,\r\n selectableGroups\r\n );\r\n })\r\n .catch((errorData) => {\r\n if (errorData) {\r\n console.log(\"savedAll - ERROR\", errorData);\r\n }\r\n });\r\n } else {\r\n if (isNewMode && partnerRef.current) {\r\n const savedAllNewPartner: Promise[] = [];\r\n\r\n if (ownerIdNum === 0) {\r\n ownerIdNum = null;\r\n }\r\n\r\n addNewOrganization({\r\n variables: {\r\n organization: {\r\n ownerUserId: ownerIdNum || null,\r\n name: partnerRef.current.name || \"\",\r\n partnerType: partnerRef.current.partnerType,\r\n visibility: partnerRef.current.visibility,\r\n email: partnerRef.current.email || \"\",\r\n telephone: partnerRef.current.telephone || \"\",\r\n vatNumber: partnerRef.current.vatNumber || \"\",\r\n externalId: partnerRef.current.externalId || \"\",\r\n size: partnerRef.current.size || 0,\r\n address: {\r\n city: partnerRef.current?.address?.city || \"\",\r\n countryCode: partnerRef.current?.address?.countryCode,\r\n postalCode: partnerRef.current?.address?.postalCode || \"\",\r\n street: partnerRef.current?.address?.street || \"\",\r\n location: {\r\n latitude:\r\n partnerRef.current?.address?.location?.latitude || 0,\r\n longitude:\r\n partnerRef.current?.address?.location?.longitude || 0,\r\n },\r\n },\r\n },\r\n },\r\n })\r\n .catch((error) => {\r\n console.log(error);\r\n })\r\n .then((data: void | ExecutionResult) => {\r\n if (data && partnerRef.current) {\r\n newCreatedPartnerId = data.data?.organization?.insert?.id;\r\n\r\n if (newCreatedPartnerId) {\r\n const variables: OrganizationUpdateInput = {\r\n id: newCreatedPartnerId,\r\n name: partnerRef.current.name || \"\",\r\n email: partnerRef.current.email || \"\",\r\n telephone: partnerRef.current.telephone || \"\",\r\n vatNumber: partnerRef.current.vatNumber || \"\",\r\n externalId: partnerRef.current.externalId || \"\",\r\n partnerType: partnerRef.current.partnerType || null,\r\n visibility: partnerRef.current.visibility || null,\r\n size: partnerRef.current.size || 0,\r\n partnerImageLinkUrl: partnerImageLinkUrl || null,\r\n logoLinkUrl: logoLinkUrl || null,\r\n };\r\n\r\n savedAllNewPartner.push(\r\n persistPartner({\r\n variables: {\r\n organization: variables,\r\n bonusAccountUpdate: true,\r\n },\r\n }).catch((error) => {\r\n const errorString =\r\n (translate(\r\n \"message.error.error_partnerInformation\"\r\n ) as string) + qraphQlErrorsToString(error, translate);\r\n throw new Error(errorString);\r\n })\r\n );\r\n\r\n if (partnerGroupsDiff.groupsToAdd.length) {\r\n partnerGroupsDiff.groupsToAdd.map((elementToAdd) =>\r\n savedAllNewPartner.push(\r\n addToPartnerGroups({\r\n variables: {\r\n organizationId: newCreatedPartnerId,\r\n organizationGroupId: elementToAdd.id,\r\n },\r\n })\r\n .then(() => {\r\n console.log(\"Update -> Yehaaa Group added\");\r\n })\r\n .catch((error) => {\r\n const errorString =\r\n (translate(\r\n \"message.error.error_partnerGroups\"\r\n ) as string) +\r\n qraphQlErrorsToString(error, translate);\r\n throw new Error(errorString);\r\n })\r\n )\r\n );\r\n }\r\n\r\n if (partnerGroupsDiff.groupsToRemove.length) {\r\n console.log(\r\n \"GroupsToRemove: \",\r\n partnerGroupsDiff.groupsToRemove\r\n );\r\n partnerGroupsDiff.groupsToRemove.map((elementToRemove) =>\r\n savedAllNewPartner.push(\r\n removeFromPartnerGroups({\r\n variables: {\r\n organizationId: newCreatedPartnerId,\r\n organizationGroupId: elementToRemove.id,\r\n },\r\n })\r\n .then(() => {\r\n console.log(\"Update -> Yehaaa Group removed\");\r\n })\r\n .catch((error) => {\r\n const errorString =\r\n (translate(\r\n \"message.error.error_partnerGroups\"\r\n ) as string) +\r\n qraphQlErrorsToString(error, translate);\r\n throw new Error(errorString);\r\n })\r\n )\r\n );\r\n }\r\n\r\n if (partnerSessionRef.current.logo) {\r\n savedAllNewPartner.push(\r\n persistPartnerLogo({\r\n variables: {\r\n updateImageInput: {\r\n organizationId: newCreatedPartnerId,\r\n logo: partnerSessionRef.current.logo\r\n .split(\"base64,\")\r\n .pop(),\r\n },\r\n },\r\n }).catch((error) => {\r\n const errorString =\r\n (translate(\r\n \"message.error.error_partnerLogo\"\r\n ) as string) +\r\n qraphQlErrorsToString(error, translate);\r\n throw new Error(errorString);\r\n })\r\n );\r\n }\r\n\r\n if (partnerSessionRef.current.image) {\r\n savedAllNewPartner.push(\r\n persistPartnerImage({\r\n variables: {\r\n updateImageInput: {\r\n organizationId: newCreatedPartnerId,\r\n partnerImage: partnerSessionRef.current.image\r\n .split(\"base64,\")\r\n .pop(),\r\n },\r\n },\r\n })\r\n .catch((error) => {\r\n const errorString =\r\n (translate(\r\n \"message.error.error_partnerImage\"\r\n ) as string) +\r\n qraphQlErrorsToString(error, translate);\r\n throw new Error(errorString);\r\n })\r\n .then(() => {\r\n console.log(\"partner image uploaded\");\r\n })\r\n );\r\n }\r\n\r\n Promise.all(savedAllNewPartner)\r\n .then(() => {\r\n console.log(\"YEYYY SAVED ALL\", savedAllNewPartner);\r\n\r\n client.cache.reset().then(() => {\r\n partnerRef.current = undefined;\r\n history.replace(\"/pam/partner/\" + newCreatedPartnerId);\r\n });\r\n })\r\n .catch((errorData) => {\r\n if (errorData) {\r\n console.log(\"savedAllNewPartner - ERROR\", errorData);\r\n }\r\n });\r\n }\r\n }\r\n })\r\n .finally(() => {});\r\n }\r\n }\r\n }\r\n };\r\n\r\n if (loading || pgLoaging) {\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n }\r\n\r\n if (error || pgError || !partnerRef.current) {\r\n return (\r\n \r\n );\r\n }\r\n\r\n const isSavePending =\r\n persistPartnerLoading ||\r\n persistPartnerImageLoading ||\r\n persistPartnerLogoLoading ||\r\n addPartnerGroupsLoading ||\r\n removePartnerGroupsLoading ||\r\n changePartnerAddressLoading ||\r\n addNewOrganizationLoading;\r\n\r\n const errorObj: string[] = [];\r\n if (persistPartnerError)\r\n errorObj.push(\r\n (translate(\"message.error.error_partnerInformation\") as string) +\r\n \" \" +\r\n qraphQlErrorsToString(persistPartnerError.graphQLErrors, translate)\r\n );\r\n if (persistPartnerImageError)\r\n errorObj.push(\r\n (translate(\"message.error.error_partnerImage\") as string) +\r\n \" \" +\r\n qraphQlErrorsToString(persistPartnerImageError.graphQLErrors, translate)\r\n );\r\n if (persistPartnerLogoError)\r\n errorObj.push(\r\n (translate(\"message.error.error_partnerLogo\") as string) +\r\n \" \" +\r\n qraphQlErrorsToString(persistPartnerLogoError.graphQLErrors, translate)\r\n );\r\n if (addPartnerGroupsError)\r\n errorObj.push(\r\n (translate(\"message.error.error_partnerGroups\") as string) +\r\n \" \" +\r\n qraphQlErrorsToString(addPartnerGroupsError.graphQLErrors, translate)\r\n );\r\n if (removePartnerGroupsError)\r\n errorObj.push(\r\n (translate(\"message.error.error_partnerGroups\") as string) +\r\n \" \" +\r\n qraphQlErrorsToString(removePartnerGroupsError.graphQLErrors, translate)\r\n );\r\n if (changePartnerAddressError)\r\n errorObj.push(\r\n (translate(\"message.error.error_partnerAddress\") as string) +\r\n \" \" +\r\n qraphQlErrorsToString(\r\n changePartnerAddressError.graphQLErrors,\r\n translate\r\n )\r\n );\r\n if (addNewOrganizationError) {\r\n errorObj.push(\r\n (translate(\"message.error.error_addNewOrganization\") as string) +\r\n \" \" +\r\n qraphQlErrorsToString(addNewOrganizationError.graphQLErrors, translate)\r\n );\r\n if (newCreatedPartnerId) {\r\n history.replace(\"/pam/partner/\" + newCreatedPartnerId);\r\n }\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport const changeNestedProp: any = (\r\n object: any,\r\n value: any,\r\n props: string[]\r\n) => {\r\n if (props.length > 1) {\r\n return {\r\n ...object,\r\n [props[0]]: changeNestedProp(object[props[0]], value, props.slice(1)),\r\n };\r\n } else {\r\n return {\r\n ...object,\r\n [props[0]]: value,\r\n };\r\n }\r\n};\r\n\r\nconst mapStateToProps = (state: AppState) => ({\r\n auth: state.auth,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch: Dispatch) => ({\r\n actions: bindActionCreators(\r\n { dirty, load, save, changeOrganizationActiveStateOpen },\r\n dispatch\r\n ),\r\n});\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(withLocalize(PartnerDetailsContainer));\r\n","import { ActionType, SearchAction } from 'redux/types/EmployeesOverview';\r\n\r\nimport AgGridActionHelper from 'redux/actions/AgGridActionHelper';\r\n\r\n\r\nexport const { setGridState, setColumnStates } = AgGridActionHelper(ActionType.GRID);\r\n\r\nexport const search = (searchTerm: string | null): SearchAction => ({\r\n type: ActionType.SEARCH,\r\n payload: searchTerm\r\n});\r\n","import React from \"react\";\r\nimport { Translate, TranslateFunction } from \"react-localize-redux\";\r\nimport { Link } from \"react-router-dom\";\r\nimport format from \"date-fns/format\";\r\n\r\n//import gql from \"graphql-tag\";\r\n\r\nimport { ColDef } from \"@ag-grid-enterprise/all-modules\";\r\nimport \"@ag-grid-community/all-modules/dist/styles/ag-grid.css\";\r\nimport \"@ag-grid-community/all-modules/dist/styles/ag-theme-balham.css\";\r\n\r\nimport { UserProfile, Position } from \"types/ToolboxEntities\";\r\n\r\nimport { factoryApolloConnector } from \"util/AgGridUtils\";\r\nimport CampUtils from \"util/CampUtils\";\r\nimport { QUERY_EMPLOYEE_LIST } from \"commonQueries/employee\";\r\n\r\nimport {\r\n employeesGrid,\r\n employeesGrid_employees_results,\r\n} from \"types/apolloGenerated/employeesGrid\";\r\n\r\nimport {\r\n PartnerType,\r\n EmployeeFilterOption,\r\n} from \"types/apolloGenerated/globalTypes\";\r\n\r\nimport { campColours } from \"themes/bwtColors\";\r\n\r\nconst colMapping = {\r\n \"userInformation.firstName\": EmployeeFilterOption.FIRST_NAME,\r\n \"userInformation.lastName\": EmployeeFilterOption.LAST_NAME,\r\n \"userInformation.email\": EmployeeFilterOption.EMAIL,\r\n \"userInformation.address.city\": EmployeeFilterOption.CITY,\r\n \"userInformation.address.countryCode\": EmployeeFilterOption.COUNTRY,\r\n position: EmployeeFilterOption.POSITION,\r\n \"organization.name\": EmployeeFilterOption.ORGANIZATION_NAME,\r\n isPendingOrganizationAssignment: EmployeeFilterOption.IS_PENDING,\r\n \"userInformation.lastLogin\": EmployeeFilterOption.LAST_LOGIN,\r\n \"userInformation.accountLocked\": EmployeeFilterOption.IS_LOCKED,\r\n};\r\n\r\nconst searchColumns = [\r\n EmployeeFilterOption.EMAIL,\r\n EmployeeFilterOption.FIRST_NAME,\r\n EmployeeFilterOption.CITY,\r\n EmployeeFilterOption.ORGANIZATION_NAME,\r\n EmployeeFilterOption.LAST_NAME,\r\n EmployeeFilterOption.POSTAL_CODE,\r\n];\r\n\r\nexport const apolloConnectorBySearch = (searchTerm: string | null) => {\r\n return factoryApolloConnector(\r\n QUERY_EMPLOYEE_LIST,\r\n (data: employeesGrid) => data.employees,\r\n colMapping,\r\n {\r\n search: {\r\n searchCols: searchColumns as string[],\r\n searchTerm,\r\n },\r\n defaultSort: [\r\n {\r\n colId: \"isPendingOrganizationAssignment\",\r\n sort: \"desc\",\r\n },\r\n ],\r\n }\r\n );\r\n};\r\n\r\nexport const getColumnDefs = (\r\n translate: TranslateFunction,\r\n user: UserProfile | null\r\n): ColDef[] => {\r\n const stateStyle = (params: any) => {\r\n if (params?.data?.isPendingOrganizationAssignment) {\r\n return { backgroundColor: campColours.backgroundWarn };\r\n }\r\n };\r\n\r\n const columnDefs = [\r\n {\r\n headerName: translate(\"types.common.name\") as string,\r\n field: \"userInformation.firstName\",\r\n cellRenderer: \"CombineFieldsWithLink\",\r\n filterParams: {\r\n filterOptions: [\"contains\"],\r\n suppressAndOrCondition: true,\r\n },\r\n cellStyle: stateStyle,\r\n width: 150,\r\n },\r\n {\r\n headerName: translate(\"generics.email\") as string,\r\n field: \"userInformation.email\",\r\n\r\n filterParams: {\r\n filterOptions: [\"contains\"],\r\n suppressAndOrCondition: true,\r\n },\r\n cellStyle: stateStyle,\r\n width: 160,\r\n },\r\n\r\n {\r\n headerName: translate(\"types.address.postalCode\") as string,\r\n field: \"userInformation.address.postalCode\",\r\n filterParams: {\r\n filterOptions: [\"contains\"],\r\n suppressAndOrCondition: true,\r\n },\r\n cellStyle: stateStyle,\r\n width: 100,\r\n sortable: false,\r\n suppressMenu: true,\r\n },\r\n\r\n {\r\n headerName: translate(\"types.address.city\") as string,\r\n field: \"userInformation.address.city\",\r\n filterParams: {\r\n filterOptions: [\"contains\"],\r\n suppressAndOrCondition: true,\r\n },\r\n cellStyle: stateStyle,\r\n width: 80,\r\n },\r\n {\r\n headerName: translate(\"types.address.countryCode\") as string,\r\n field: \"userInformation.address.countryCode\",\r\n filter: user ? \"agSetColumnFilter\" : false,\r\n filterParams: {\r\n filterOptions: [\"contains\"],\r\n suppressAndOrCondition: true,\r\n values: user ? user.allowedCountries : [],\r\n },\r\n cellStyle: stateStyle,\r\n width: 90,\r\n },\r\n {\r\n headerName: translate(\"types.organization.name\") as string,\r\n field: \"organization.name\",\r\n filterParams: {\r\n filterOptions: [\"contains\"],\r\n suppressAndOrCondition: true,\r\n },\r\n cellStyle: stateStyle,\r\n width: 200,\r\n },\r\n {\r\n headerName: translate(\"types.organization.partnerType\") as string,\r\n field: \"organization.partnerType\",\r\n filter: \"agSetColumnFilter\",\r\n filterParams: {\r\n filterOptions: [\"contains\"],\r\n suppressAndOrCondition: true,\r\n values: CampUtils.getEnumAsArray(PartnerType),\r\n },\r\n cellStyle: stateStyle,\r\n width: 100,\r\n sortable: false,\r\n suppressMenu: true,\r\n },\r\n {\r\n headerName: translate(\"types.organization.employeerole\") as string,\r\n field: \"position\",\r\n cellRenderer: \"FilterNone\",\r\n filter: user ? \"agSetColumnFilter\" : false,\r\n filterParams: {\r\n filterOptions: [\"contains\"],\r\n suppressAndOrCondition: true,\r\n values: CampUtils.getEnumAsArray(Position),\r\n },\r\n cellStyle: stateStyle,\r\n width: 100,\r\n },\r\n {\r\n headerName: translate(\"types.organization.lastLogin\") as string,\r\n field: \"userInformation.lastLogin\",\r\n cellRenderer: \"FormatDate\",\r\n filterParams: {\r\n filterOptions: [\"contains\"],\r\n suppressAndOrCondition: true,\r\n },\r\n cellStyle: stateStyle,\r\n width: 100,\r\n suppressMenu: true,\r\n },\r\n\r\n {\r\n headerName: translate(\"types.common.state\") as string,\r\n field: \"isPendingOrganizationAssignment\",\r\n filter: \"agSetColumnFilter\",\r\n filterParams: {\r\n filterOptions: [\"EQ\"],\r\n suppressAndOrCondition: true,\r\n values: [true, false],\r\n },\r\n cellStyle: stateStyle,\r\n cellRenderer: \"StateCell\",\r\n width: 100,\r\n suppressMenu: true,\r\n // hide: true,\r\n lockVisible: true,\r\n },\r\n {\r\n headerName: translate(\"types.common.isLocked\") as string,\r\n field: \"userInformation.accountLocked\",\r\n filter: \"agSetColumnFilter\",\r\n filterParams: {\r\n filterOptions: [\"EQ\"],\r\n suppressAndOrCondition: true,\r\n values: [true, false],\r\n },\r\n width: 120,\r\n hide: true,\r\n cellStyle: stateStyle,\r\n },\r\n ];\r\n\r\n return columnDefs;\r\n};\r\n\r\ninterface CellRenderer {\r\n data: employeesGrid_employees_results;\r\n value: string;\r\n}\r\n\r\nconst TestVerifiedAccount: React.FC = ({ data }) => {\r\n if (!(data && data.userInformation)) {\r\n return
    ;\r\n }\r\n if (data.userInformation.accountLocked) {\r\n return ;\r\n } else if (!data.userInformation.allowedToLogin) {\r\n return ;\r\n } else if (!data.userInformation.verifiedAccount) {\r\n return ;\r\n } else {\r\n return ;\r\n }\r\n};\r\n\r\nconst CombineFieldsWithLink: React.FC = ({ data, value }) => {\r\n if (!(data && data.userInformation)) {\r\n return
    ;\r\n }\r\n return (\r\n \r\n {value + \" \" + data.userInformation.lastName}\r\n \r\n );\r\n};\r\n\r\nconst FilterNone: React.FC = ({ value }) => {\r\n if (value === \"NONE\") {\r\n return
    ;\r\n }\r\n return
    {value}
    ;\r\n};\r\n\r\nconst PartnerTypeCell: React.FC = ({ data, value }) => {\r\n if (!data) {\r\n return
    ;\r\n }\r\n return (\r\n \r\n types.organization.partnerType.{value.toLowerCase()}\r\n \r\n );\r\n};\r\n\r\nconst FormatDate: React.FC = ({ data, value }) => {\r\n if (!data) {\r\n return
    ;\r\n }\r\n //return
    {format(new Date(value), \"P\")}
    ;\r\n if (!value) {\r\n return
    ;\r\n }\r\n return (\r\n \r\n {(translate) => {\r\n return (\r\n
    \r\n {format(\r\n new Date(value),\r\n translate.translate(\"generics.dateTimeFormatFNSShort\") as string\r\n )}\r\n
    \r\n );\r\n }}\r\n
    \r\n );\r\n};\r\n\r\nconst StateCell: React.FC = ({ data, value }) => {\r\n if (!data) {\r\n return
    ;\r\n }\r\n if (data?.isPendingOrganizationAssignment) {\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n }\r\n if (data?.userInformation?.accountLocked) {\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n }\r\n if (data?.userInformation?.verifiedAccount) {\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n }\r\n if (\r\n data?.userInformation?.allowedToLogin &&\r\n !data?.userInformation?.verifiedAccount\r\n ) {\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n }\r\n\r\n if (data?.userInformation?.allowedToLogin) {\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n }\r\n return
    ;\r\n};\r\n\r\nexport const CellRenderer = {\r\n CombineFieldsWithLink,\r\n PartnerTypeCell,\r\n FormatDate,\r\n TestVerifiedAccount,\r\n StateCell,\r\n FilterNone,\r\n};\r\n","import React, { useState, useEffect, Fragment } from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport { bindActionCreators, Dispatch } from \"redux\";\r\nimport {\r\n Translate,\r\n LocalizeContextProps,\r\n withLocalize,\r\n} from \"react-localize-redux\";\r\nimport { ToggleButtonGroup, ToggleButton } from \"@material-ui/lab\";\r\n\r\nimport { TextField, Box } from \"@material-ui/core\";\r\nimport { createStyles, Theme, makeStyles } from \"@material-ui/core/styles\";\r\n// import { ToggleButtonGroup, ToggleButton } from \"@material-ui/lab\";\r\n\r\nimport \"@ag-grid-community/all-modules/dist/styles/ag-grid.css\";\r\nimport \"@ag-grid-community/all-modules/dist/styles/ag-theme-balham.css\";\r\n\r\nimport debounce from \"debounce\";\r\n\r\nimport { AppState } from \"redux/store\";\r\nimport { State as employeesOverviewState } from \"redux/types/EmployeesOverview\";\r\nimport {\r\n setGridState,\r\n setColumnStates,\r\n search,\r\n} from \"redux/actions/EmployeesOverviewActions\";\r\n\r\nimport { UserProfile } from \"types/ToolboxEntities\";\r\n\r\nimport { getFilterValues } from \"util/AgGridUtils\";\r\n\r\nimport AgGrid from \"components/common/Grid/AgGrid\";\r\nimport CountryFilter from \"components/common/CountryFilter\";\r\nimport PageHeader from \"components/common/PageHeader\";\r\nimport GridFilterHeader from \"components/common/Grid/GridFilterHeader\";\r\n\r\nimport {\r\n getColumnDefs,\r\n apolloConnectorBySearch,\r\n CellRenderer,\r\n} from \"./GridConfig\";\r\n// import AuditLog from \"../../Customer/InstanceDetails/AuditLog\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) => {\r\n return createStyles({\r\n employeesOverview: {\r\n display: \"flex\",\r\n flexFlow: \"column\",\r\n\r\n \"& > .gridFilterHeader\": {\r\n flex: \"0 1 auto\",\r\n },\r\n\r\n \"& > .innerContent\": {\r\n flex: \"1 1 100%\",\r\n height: \"100%\",\r\n },\r\n },\r\n\r\n innerHeader: {\r\n flex: \"0 1 auto\",\r\n display: \"flex\",\r\n margin: \"0 -20px 20px -20px\",\r\n alignItems: \"flex-end\",\r\n justifyContent: \"space-between\",\r\n\r\n \"& > *\": {\r\n flex: \"0 1 auto\",\r\n margin: \"0 20px\",\r\n minWidth: \"170px\",\r\n },\r\n\r\n \"& > .filter\": {\r\n flex: \"1 1 auto\",\r\n maxWidth: \"250px\",\r\n },\r\n },\r\n\r\n innerHeaderRight: {\r\n flex: \"0 1 auto\",\r\n display: \"flex\",\r\n alignItems: \"flex-end\",\r\n margin: 0,\r\n\r\n \"& > *\": {\r\n flex: \"0 1 auto\",\r\n margin: \"0 20px\",\r\n minWidth: \"170px\",\r\n },\r\n },\r\n });\r\n});\r\n\r\nconst debouncedSearch = debounce(\r\n (\r\n searchTerm: string,\r\n oldSearchTerm: string | null,\r\n searchAction: typeof search\r\n ) => {\r\n if (searchTerm.length >= 3) {\r\n searchAction(searchTerm);\r\n } else if (\r\n searchTerm.length === 0 &&\r\n (oldSearchTerm === null || oldSearchTerm.length > 0)\r\n ) {\r\n searchAction(null);\r\n }\r\n },\r\n 500\r\n);\r\n\r\ninterface EmployeesListPara extends LocalizeContextProps {\r\n user: UserProfile | null;\r\n employeesOverviewState: employeesOverviewState;\r\n actions: {\r\n setGridState: typeof setGridState;\r\n setColumnStates: typeof setColumnStates;\r\n search: typeof search;\r\n };\r\n}\r\n\r\nconst EmployeesList: React.FC = ({\r\n user,\r\n employeesOverviewState,\r\n actions,\r\n translate,\r\n}) => {\r\n const classes = useStyles();\r\n\r\n const [search, setSearch] = useState(\r\n employeesOverviewState.search || \"\"\r\n );\r\n\r\n const [apolloConnector, setApolloConnector] = useState<\r\n ReturnType\r\n >(apolloConnectorBySearch(employeesOverviewState.search));\r\n\r\n useEffect(() => {\r\n setApolloConnector(apolloConnectorBySearch(employeesOverviewState.search));\r\n }, [employeesOverviewState.search]);\r\n\r\n if (!user) {\r\n return null;\r\n }\r\n\r\n const gridState = employeesOverviewState.grid;\r\n\r\n const changeFilter = (\r\n filterName: string,\r\n newFilterValues: string[] | false\r\n ) => {\r\n const newFilter = Object.assign({}, gridState.filterModel);\r\n if (newFilterValues !== false) {\r\n newFilter[filterName] = {\r\n filterType: \"set\",\r\n values: newFilterValues,\r\n };\r\n } else {\r\n delete newFilter[filterName];\r\n }\r\n actions.setGridState(gridState.page, gridState.sortModel, newFilter);\r\n };\r\n\r\n // const changeTypeFilter = (\r\n // event: React.MouseEvent,\r\n // value: any\r\n // ) => {\r\n // let newFilterValues = value as string[];\r\n // changeFilter(\r\n // \"employeesType\",\r\n // newFilterValues.length > 0 &&\r\n // newFilterValues.length < 4 &&\r\n // newFilterValues\r\n // );\r\n // };\r\n\r\n // const selectedTypes = gridState.filterModel.employeesType\r\n // ? getFilterValues(gridState.filterModel.employeesType)\r\n // : [\"TWP\", \"BUILDER\", \"OPERATOR\", \"PLANER\"];\r\n\r\n const changeDeletedAccountFilter = (\r\n event: React.MouseEvent,\r\n value: string[]\r\n ) => {\r\n let newFilterValues = value as string[];\r\n if (newFilterValues.length !== 1) {\r\n newFilterValues = [];\r\n }\r\n changeFilter(\r\n \"userInformation.accountLocked\",\r\n newFilterValues.length === 1 && newFilterValues\r\n );\r\n };\r\n\r\n const deletedFilterType =\r\n gridState.filterModel[\"userInformation.accountLocked\"];\r\n const deletedFilter = deletedFilterType && getFilterValues(deletedFilterType);\r\n\r\n const changeCountryFilter = (newFilterValues: string[]) => {\r\n changeFilter(\r\n \"userInformation.address.countryCode\",\r\n newFilterValues.length > 0 &&\r\n newFilterValues.length < user.allowedCountries.length &&\r\n newFilterValues\r\n );\r\n };\r\n\r\n const selectedCountries = gridState.filterModel[\r\n \"userInformation.address.countryCode\"\r\n ]\r\n ? getFilterValues(\r\n gridState.filterModel[\"userInformation.address.countryCode\"]\r\n )\r\n : user.allowedCountries;\r\n\r\n const changeSearch = (event: React.ChangeEvent) => {\r\n setSearch(event.target.value);\r\n debouncedSearch(\r\n event.target.value,\r\n employeesOverviewState.search,\r\n actions.search\r\n );\r\n };\r\n\r\n const cellCallbackOnExport = (cell: any) => {\r\n const rowData = cell.node.data;\r\n if (cell.column.colId === \"isPendingOrganizationAssignment\") {\r\n if (rowData?.isPendingOrganizationAssignment) {\r\n return translate(\"types.employees.pending\") as string;\r\n }\r\n if (rowData?.userInformation?.accountLocked) {\r\n return translate(\"types.employees.locked\") as string;\r\n }\r\n if (rowData?.userInformation?.verifiedAccount) {\r\n return translate(\"types.common.verified\") as string;\r\n }\r\n if (rowData?.userInformation?.allowedToLogin) {\r\n return translate(\"types.common.inactive\") as string;\r\n }\r\n }\r\n return cell.value;\r\n };\r\n\r\n return (\r\n \r\n {({ translate }) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n \r\n \r\n \r\n
    \r\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 = (appState: AppState) => ({\r\n user: appState.auth.user,\r\n employeesOverviewState: appState.employeesOverview,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch: Dispatch) => ({\r\n actions: bindActionCreators(\r\n { setGridState, setColumnStates, search },\r\n dispatch\r\n ),\r\n});\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(withLocalize(EmployeesList));\r\n","\r\nimport React, { Fragment } from \"react\";\r\nimport { Box, Grid, TextField, Select, MenuItem } from \"@material-ui/core\";\r\nimport { createStyles, Theme, makeStyles } from \"@material-ui/core/styles\";\r\nimport { connect } from 'react-redux';\r\nimport { AppState } from 'redux/store';\r\nimport { Translate } from 'react-localize-redux';\r\n\r\nimport { UserInformationUpdateInput } from \"../../../../types/apolloGenerated/globalTypes\"\r\nimport { Country } from \"types/apolloGenerated/globalTypes\";\r\nimport { UserProfile } from \"types/ToolboxEntities\";\r\n\r\ninterface EmployeeInformationProps {\r\n employeeInfoObj: UserInformationUpdateInput\r\n setEmployeeInfoObj: React.Dispatch>;\r\n user: UserProfile | null;\r\n validation: { field: string, message: string }[]\r\n}\r\n\r\nconst useStyles = makeStyles((theme: Theme) => {\r\n return createStyles({\r\n contentDisplay: {\r\n display: \"flex\",\r\n position: \"relative\",\r\n flexWrap: \"wrap\",\r\n width: \"100%\",\r\n paddingTop: \"40px\"\r\n },\r\n reactiveBoxes: {\r\n minWidth: \"350px\",\r\n width: \"92%\",\r\n margin: \"0 0 23px 30px\",\r\n },\r\n reactiveBoxesRight: {\r\n minWidth: \"350px\",\r\n width: \"90%\",\r\n margin: \"0 0 23px 30px\",\r\n },\r\n reactiveBoxesSmall: {\r\n minWidth: \"100px\",\r\n width: \"70%\",\r\n margin: \"0 0 23px 30px\",\r\n },\r\n });\r\n});\r\n\r\nconst EmployeeInformation: React.FC = ({ employeeInfoObj, setEmployeeInfoObj, user, validation }) => {\r\n\r\n const classes = useStyles();\r\n\r\n const updateValue = (\r\n applyValue: (value: string) => UserInformationUpdateInput\r\n ) => (e: any) => {\r\n const latestValue = applyValue(e.target.value);\r\n setEmployeeInfoObj(latestValue);\r\n };\r\n\r\n const currentCC = employeeInfoObj?.address?.countryCode;\r\n const allowedCountries = user?.allowedCountries ?? []\r\n const [country, setCountry] = React.useState(currentCC);\r\n\r\n const handleChange = (event: React.ChangeEvent<{ value: unknown }>) => {\r\n setCountry(event.target.value as Country);\r\n if (employeeInfoObj.address?.countryCode) {\r\n employeeInfoObj.address.countryCode = event.target.value as Country\r\n }\r\n const latestValue = Object.assign({}, employeeInfoObj)\r\n setEmployeeInfoObj(latestValue)\r\n };\r\n\r\n const validationFields = validation.map(value => value.field);\r\n\r\n return(\r\n \r\n \r\n }\r\n defaultValue={employeeInfoObj.firstName}\r\n variant=\"standard\"\r\n className={classes.reactiveBoxes}\r\n error={validationFields.includes(\"firstName\")}\r\n helperText={validationFields.includes(\"firstName\") ? validation[validationFields.indexOf(\"firstName\")].message : \"\"}\r\n InputProps={{\r\n style: { padding: 0 }\r\n }}\r\n disabled={true}\r\n />\r\n \r\n \r\n }\r\n defaultValue={employeeInfoObj.lastName}\r\n variant=\"standard\"\r\n className={classes.reactiveBoxesRight}\r\n error={validationFields.includes(\"lastName\")}\r\n helperText={validationFields.includes(\"lastName\") ? validation[validationFields.indexOf(\"lastName\")].message : \"\"}\r\n disabled={true}\r\n />\r\n \r\n \r\n }\r\n variant=\"standard\"\r\n className={classes.reactiveBoxesRight}\r\n error={validationFields.includes(\"email\")}\r\n helperText={validationFields.includes(\"email\") ? validation[validationFields.indexOf(\"email\")].message : \"\"}\r\n defaultValue={employeeInfoObj.email}\r\n disabled={true}\r\n />\r\n \r\n \r\n }\r\n defaultValue={employeeInfoObj.telephone}\r\n variant=\"standard\"\r\n className={classes.reactiveBoxesRight}\r\n disabled={true}\r\n />\r\n \r\n \r\n }\r\n defaultValue={employeeInfoObj?.address?.street}\r\n variant=\"standard\"\r\n className={classes.reactiveBoxes}\r\n disabled={true}\r\n />\r\n \r\n \r\n }\r\n defaultValue={employeeInfoObj?.address?.postalCode}\r\n variant=\"standard\"\r\n className={classes.reactiveBoxesSmall}\r\n style={{ width: \"85%\" }}\r\n disabled={true}\r\n />\r\n \r\n \r\n }\r\n defaultValue={employeeInfoObj?.address?.city}\r\n variant=\"standard\"\r\n className={classes.reactiveBoxesSmall}\r\n style={{ width: \"85%\" }}\r\n disabled={true}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n {({ translate }) => {\r\n if (!allowedCountries.length) return Fragment;\r\n return (\r\n \r\n {allowedCountries.map((country: any) => (\r\n \r\n {translate('countries.' + country.toLocaleLowerCase()) as string}\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 = (appState: AppState) => ({\r\n user: appState.auth.user,\r\n});\r\n\r\nexport default connect(\r\n mapStateToProps\r\n)(EmployeeInformation);","import React, { Fragment } from 'react';\r\nimport { Translate } from \"react-localize-redux\";\r\n\r\nimport { UserInformation } from 'types/ToolboxEntities';\r\nimport format from \"date-fns/format\";\r\n\r\nimport { makeStyles, createStyles, Theme } from '@material-ui/core';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n greyColor: {\r\n color: \"#666B6E\"\r\n }\r\n }));\r\n\r\n\r\ninterface IShowAccountInfo {\r\n account: UserInformation\r\n userLanguage?: string\r\n}\r\n\r\nconst ShowAccountInfo: React.FC = (props) => {\r\n const classes = useStyles();\r\n\r\n let lang = \"en\"\r\n\r\n if(!props.userLanguage){\r\n lang = props.account.preferredLanguage ?? \"en\"\r\n }\r\n else {\r\n lang = props.userLanguage\r\n }\r\n\r\n if (props.account != null) {\r\n let accountState;\r\n\r\n if (props.account.accountLocked) {\r\n accountState = ;\r\n } else if (!props.account.allowedToLogin) {\r\n accountState = ;\r\n } else if (!props.account.verifiedAccount) {\r\n accountState = ;\r\n } else {\r\n accountState = ;\r\n }\r\n\r\n return (\r\n \r\n

    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    {props.account.id}
    {accountState}
    \r\n {props.account.registeredOn ? props.account.registeredOn && (\r\n \r\n {\r\n (translate) => {\r\n return
    {format(new Date(props.account.registeredOn), translate.translate('generics.dateTimeFormatFNS') as string)}
    \r\n }\r\n }\r\n
    \r\n ) :
    -
    }\r\n
    {lang.toUpperCase()}
    \r\n {props.account.lastLogin ? props.account.lastLogin && (\r\n \r\n {\r\n (translate) => {\r\n return
    {format(new Date(props.account.lastLogin), translate.translate('generics.dateTimeFormatFNS') as string)}
    \r\n }\r\n }\r\n
    \r\n ) :
    -
    }\r\n
    \r\n {props.account.lastPasswordReset ? props.account.lastPasswordReset && (\r\n \r\n {\r\n (translate) => {\r\n return
    {format(new Date(props.account.lastPasswordReset), translate.translate('generics.dateTimeFormatFNS') as string)}
    \r\n }\r\n }\r\n
    \r\n ) :
    -
    }\r\n
    {props.account.incorrectLogins}
    \r\n {props.account.lastIncorrectLogin ? props.account.lastIncorrectLogin && (\r\n \r\n {\r\n (translate) => {\r\n return
    {format(new Date(props.account.lastIncorrectLogin), translate.translate('generics.dateTimeFormatFNS') as string)}
    \r\n }\r\n }\r\n
    \r\n ) :
    -
    }\r\n
    \r\n {props.account.dataUpdate ? props.account.dataUpdate && (\r\n \r\n {\r\n (translate) => {\r\n return
    {format(new Date(props.account.dataUpdate), translate.translate('generics.dateTimeFormatFNS') as string)}
    \r\n }\r\n }\r\n
    \r\n ) :
    -
    }\r\n
    {props.account.verifiedAccount ? : }
    {props.account.allowedToLogin ? : }
    {props.account.accountLocked ? : }
    {props.account.acceptedTerms ? : }
    {props.account.acceptedMarketingUsage ? : }
    {props.account.userRoles ? props.account.userRoles.map((value, idx) =>
    {value}
    ) :
    }
     
     
    \r\n
    \r\n );\r\n } else {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    Not loaded
    \r\n
    \r\n );\r\n }\r\n\r\n};\r\n\r\n\r\n\r\nexport default ShowAccountInfo;\r\n","import React, { Fragment } from \"react\";\r\nimport { useParams } from \"react-router\";\r\n\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\n\r\nimport { bindActionCreators, Dispatch } from \"redux\";\r\nimport { connect } from \"react-redux\";\r\n\r\nimport { useQuery, useMutation } from \"@apollo/react-hooks\";\r\n\r\nimport { Translate } from \"react-localize-redux\";\r\n\r\nimport cloneDeep from \"clone-deep\";\r\n\r\nimport { open as removeFromCompany } from 'redux/actions/AccountShortcuts/RemoveFromCompanyActions';\r\n\r\nimport { Position } from 'types/apolloGenerated/globalTypes';\r\nimport { OrganizationOfEmployee, OrganizationOfEmployeeVariables, OrganizationOfEmployee_employee_organization, OrganizationOfEmployee_employee_organization_address } from \"types/apolloGenerated/OrganizationOfEmployee\";\r\nimport { AddEmployee, AddEmployeeVariables } from 'types/apolloGenerated/AddEmployee';\r\nimport { organizationsGrid_organizations_results } from \"types/apolloGenerated/organizationsGrid\";\r\n\r\nimport AddPartner from 'Pages/PartnerManager/Employees/Detail/AddPartner';\r\n\r\nimport { QUERY_PARTNER_EMPLOYEES, MUTATION_PARTNER_ADD_EMPLOYEE } from 'commonQueries/partner';\r\nimport { QUERY_EMPLOYEE_ORGANIZATION, QUERY_EMPLOYEE_DETAIL } from 'commonQueries/employee';\r\nimport { PartnerEmployees } from \"types/apolloGenerated/PartnerEmployees\";\r\nimport { EmployeeDetail, EmployeeDetailVariables } from \"types/apolloGenerated/EmployeeDetail\";\r\nimport { makeStyles, createStyles, Button } from \"@material-ui/core\";\r\nimport { Link } from \"react-router-dom\";\r\n\r\nconst useStyles = makeStyles(() =>\r\n createStyles({\r\n greyColor: {\r\n color: \"#666B6E\"\r\n },\r\n bwtBtn: {\r\n backgroundColor: '#005D8F',\r\n color: '#fff',\r\n fontSize: '12px'\r\n }\r\n })\r\n);\r\n\r\nconst OrganizationWrap: React.FC = () => (\r\n
    \r\n

    \r\n \r\n
    \r\n)\r\n\r\ntype OrganizationProps = {\r\n removeFromCompany: typeof removeFromCompany\r\n}\r\n\r\nconst Organization = connect(\r\n null,\r\n (dispatch: Dispatch) => bindActionCreators({ removeFromCompany }, dispatch)\r\n)(({ removeFromCompany }: OrganizationProps) => {\r\n const { id } = useParams();\r\n const idNUm = Number(id);\r\n\r\n const { data, loading, error } = useQuery(QUERY_EMPLOYEE_ORGANIZATION, {\r\n variables: { id: idNUm }\r\n });\r\n\r\n const employee = data?.employee;\r\n const organization = employee?.organization;\r\n\r\n const classes = useStyles();\r\n\r\n const [addEmployee, { loading: addEmployeeLoading }] = useMutation(MUTATION_PARTNER_ADD_EMPLOYEE);\r\n\r\n const addEmployeeToPartner = (organization: organizationsGrid_organizations_results, position: Position) => {\r\n\r\n if (employee) {\r\n addEmployee({\r\n variables: {\r\n userId: idNUm,\r\n partnerId: organization.id,\r\n position: position\r\n },\r\n update: (cache) => {\r\n try {\r\n const variables = { id: idNUm };\r\n\r\n const queryCache = cloneDeep(cache.readQuery({\r\n query: QUERY_EMPLOYEE_ORGANIZATION,\r\n variables: variables,\r\n }));\r\n\r\n if (queryCache?.employee) {\r\n queryCache.employee.organization = organization;\r\n\r\n cache.writeQuery({\r\n query: QUERY_EMPLOYEE_ORGANIZATION,\r\n variables: variables,\r\n data: queryCache\r\n });\r\n } else {\r\n console.warn('Trying to update CACHE (Set Partner to Employee), but emplyee not found');\r\n }\r\n } catch (e) { console.warn(e); }\r\n\r\n\r\n try {\r\n const variablesPartnerEmployees = { id: organization.id };\r\n\r\n const queryCachePartnerEmployees = cloneDeep(cache.readQuery({\r\n query: QUERY_PARTNER_EMPLOYEES,\r\n variables: variablesPartnerEmployees,\r\n }));\r\n\r\n if (queryCachePartnerEmployees?.organization?.employees?.results) {\r\n\r\n const queryCacheEmployee = cloneDeep(cache.readQuery({\r\n query: QUERY_EMPLOYEE_DETAIL,\r\n variables: { id: idNUm },\r\n }));\r\n\r\n if (queryCacheEmployee?.employee?.userInformation) {\r\n queryCachePartnerEmployees.organization.employees.results.push({\r\n __typename: 'Employee',\r\n position: position,\r\n userInformation: queryCacheEmployee?.employee?.userInformation\r\n });\r\n\r\n console.log('Write Employees to cache: ', queryCachePartnerEmployees);\r\n cache.writeQuery({\r\n query: QUERY_PARTNER_EMPLOYEES,\r\n variables: variablesPartnerEmployees,\r\n data: queryCachePartnerEmployees\r\n });\r\n } else {\r\n console.warn('Trying to update CACHE, but emplyee not found');\r\n }\r\n\r\n } else {\r\n console.warn('Trying to update CACHE, but emplyees of partner not found');\r\n }\r\n } catch (e) { console.warn(e); }\r\n }\r\n });\r\n }\r\n };\r\n\r\n if (loading || addEmployeeLoading) return \r\n if (error) return
    \r\n\r\n if (organization) {\r\n return (\r\n
    \r\n \r\n \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\r\ninterface CurrentOrganizationProps {\r\n organization: OrganizationOfEmployee_employee_organization\r\n}\r\n\r\nconst CurrentOrganization: React.FC = ({ organization }) => {\r\n\r\n const address = organization.address ?
    : null;\r\n\r\n return (\r\n
    {organization.name} ()
    \r\n {address}\r\n
    \r\n
    \r\n\r\n )\r\n};\r\n\r\ninterface AddressProps {\r\n address: OrganizationOfEmployee_employee_organization_address\r\n}\r\n\r\nconst Address: React.FC = ({ address }) => {\r\n return (\r\n
    \r\n {address.street}
    \r\n {address.postalCode} {address.city}

    \r\n \r\n
    \r\n )\r\n}\r\n\r\nexport default OrganizationWrap","import React from 'react';\r\n\r\nimport { createStyles, Theme, makeStyles } from '@material-ui/core/styles';\r\n\r\nimport {campColours} from 'themes/bwtColors';\r\nimport { Translate } from 'react-localize-redux';\r\n\r\nimport { fallbackTo } from 'components/common/Localization';\r\n\r\n\r\ninterface PageHeaderMessagePara {\r\n title: string\r\n open?: boolean\r\n};\r\n\r\n\r\nconst useStyles = makeStyles((theme: Theme) => {\r\n return createStyles({\r\n pageHeaderMessage: {\r\n backgroundColor: campColours.backgroundError,\r\n padding: theme.spacing(2) + 'px ' + theme.spacing(3) + 'px',\r\n }\r\n })\r\n});\r\n\r\n\r\n\r\n\r\nconst PageHeaderMessage: React.FC = ({ title, open }) => {\r\n const classes = useStyles();\r\n\r\n return open ? (\r\n
    \r\n  \r\n
    \r\n ) : null;\r\n}\r\n\r\nexport default PageHeaderMessage;\r\n","import React, { useState } from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport { bindActionCreators, Dispatch } from \"redux\";\r\nimport { useParams } from \"react-router\";\r\n\r\nimport { createStyles, Theme, makeStyles } from \"@material-ui/core/styles\";\r\nimport { Box, Grid } from \"@material-ui/core\";\r\nimport CircularProgress from \"@material-ui/core/CircularProgress\";\r\nimport EmployeeInformation from \"./EmployeeInformation\";\r\nimport ShowAccountInfo from \"components/common/ShowAccountInfo\";\r\nimport PageHeader from \"components/common/PageHeader\";\r\nimport gql from \"graphql-tag\";\r\nimport { useMutation, useQuery } from \"@apollo/react-hooks\";\r\nimport { UserInformation } from \"types/ToolboxEntities\";\r\n\r\nimport { withLocalize, LocalizeContextProps } from \"react-localize-redux\";\r\n\r\nimport PageDialog from \"components/common/PageDialog\";\r\n\r\nimport {\r\n updateEmployeeDetails as MutationData,\r\n updateEmployeeDetailsVariables as MutationVars,\r\n} from \"types/apolloGenerated/updateEmployeeDetails\";\r\nimport { UserInformationUpdateInput } from \"types/apolloGenerated/globalTypes\";\r\n\r\nimport {\r\n EmployeeDetail as EmployeeQueryData,\r\n EmployeeDetailVariables as EmployeeQueryVars,\r\n} from \"types/apolloGenerated/EmployeeDetail\";\r\nimport { Translate } from \"react-localize-redux\";\r\nimport { open as changeLoginOpen } from \"redux/actions/AccountShortcuts/ChangeLoginActions\";\r\nimport { open as changeActiveOpen } from \"redux/actions/AccountShortcuts/ChangeActiveActions\";\r\nimport { open as sendResetOpen } from \"redux/actions/AccountShortcuts/SendResetActions\";\r\n\r\nimport Organization from \"Pages/PartnerManager/Employees/Detail/Organization\";\r\nimport { QUERY_EMPLOYEE_DETAIL } from \"commonQueries/employee\";\r\nimport PageHeaderMessage from \"components/common/PageHeaderMessage\";\r\nimport AuditLog from \"../../../Customer/InstanceDetails/AuditLog\";\r\nimport store from \"../../../../redux/store\";\r\nimport * as Types from \"../../../../types/ToolboxEntities\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) => {\r\n return createStyles({\r\n infoSeg: {\r\n color: \"#000000\",\r\n paddingLeft: \"30px\",\r\n margin: \"40px 0 0 0\",\r\n width: \"100%\",\r\n },\r\n });\r\n});\r\n\r\nconst MUTATION = gql`\r\n mutation updateEmployeeDetails($details: UserInformationUpdateInput!) {\r\n user {\r\n updateInformation(userInformation: $details) {\r\n firstName\r\n lastName\r\n id\r\n email\r\n telephone\r\n acceptedMarketingUsage\r\n address {\r\n city\r\n countryCode\r\n postalCode\r\n street\r\n }\r\n }\r\n }\r\n }\r\n`;\r\n\r\ninterface EmployeeDetailsProps extends LocalizeContextProps {\r\n actions: {\r\n changeLoginOpen: typeof changeLoginOpen;\r\n changeActiveOpen: typeof changeActiveOpen;\r\n sendResetOpen: typeof sendResetOpen;\r\n };\r\n queryData: any;\r\n}\r\n\r\nconst EmployeeDetailsView: React.FC = ({\r\n actions,\r\n queryData,\r\n translate,\r\n}) => {\r\n const classes = useStyles();\r\n const [open, setOpen] = React.useState(false);\r\n const [error, setError] = React.useState(\"\");\r\n let canViewLogs: boolean = false;\r\n\r\n store.getState().auth.user?.roles.forEach((item: Types.Role) => {\r\n if (item.roleName === \"AuditAdmin\") {\r\n canViewLogs = true;\r\n }\r\n });\r\n\r\n const [updateEmployeeDetails, { loading: updateLoading }] = useMutation<\r\n MutationData,\r\n MutationVars\r\n >(MUTATION, {\r\n onError: (error) => {\r\n let errorMessage = error.message;\r\n const message = \"updateInformation\";\r\n if (error.message.includes(message)) {\r\n const index = error.message.indexOf(message) + message.length;\r\n errorMessage = error.message.slice(0, index);\r\n }\r\n setError(errorMessage);\r\n setOpen(true);\r\n },\r\n });\r\n\r\n const userInformation = {\r\n id: queryData?.id,\r\n firstName: queryData?.firstName ?? \"\",\r\n lastName: queryData?.lastName ?? \"\",\r\n email: queryData?.email ?? \"\",\r\n telephone: queryData?.telephone ?? \"\",\r\n acceptedMarketingUsage: queryData?.acceptedMarketingUsage ?? false,\r\n address: {\r\n street: queryData?.address?.street ?? \"\",\r\n postalCode: queryData?.address?.postalCode ?? \"\",\r\n countryCode: queryData?.address?.countryCode,\r\n city: queryData?.address?.city ?? \"\",\r\n },\r\n canUsePerlaUpdater: false,\r\n isTestUser: queryData?.isTestUser ?? false,\r\n };\r\n\r\n const account = {\r\n id: queryData?.id,\r\n key: queryData.key,\r\n email: queryData?.email,\r\n accountLocked: queryData?.accountLocked,\r\n allowedToLogin: queryData?.allowedToLogin,\r\n lastLogin: queryData?.lastLogin,\r\n dataUpdate: queryData?.dataUpdate,\r\n verifiedAccount: queryData?.verifiedAccount,\r\n lastIncorrectLogin: queryData?.lastIncorrectLogin,\r\n registeredOn: queryData?.registeredOn,\r\n incorrectLogins: queryData?.incorrectLogins,\r\n acceptedTerms: queryData?.acceptedTerms,\r\n lastPasswordReset: queryData?.lastFailedPasswordReset,\r\n preferredLanguage: queryData?.preferredLanguage,\r\n acceptedMarketingUsage: queryData?.acceptedMarketingUsage,\r\n } as UserInformation;\r\n\r\n const [\r\n employeeInformation,\r\n setEmployeeInformation,\r\n ] = useState(userInformation);\r\n const { firstName, lastName } = userInformation;\r\n\r\n const pageNav = [\r\n {\r\n title: translate(\"components.account.sendSetPasswordEmail\") as string,\r\n on: () => {\r\n actions.sendResetOpen(account);\r\n },\r\n },\r\n {\r\n title: translate(\"components.account.changePassword\") as string,\r\n on: () => {\r\n actions.changeLoginOpen(account);\r\n },\r\n },\r\n ];\r\n\r\n const [validation, setValidation] = React.useState<\r\n { field: string; message: string }[]\r\n >([]);\r\n\r\n const validationCheck = () => {\r\n let validationArr: { field: string; message: string }[] = [];\r\n if (employeeInformation.email === \"\") {\r\n validationArr.push({\r\n field: \"email\",\r\n message: translate(\"message.error.noEmail\") as string,\r\n });\r\n }\r\n if (employeeInformation.firstName === \"\") {\r\n validationArr.push({\r\n field: \"firstName\",\r\n message: translate(\"message.error.noFirstName\") as string,\r\n });\r\n }\r\n if (employeeInformation.lastName === \"\") {\r\n validationArr.push({\r\n field: \"lastName\",\r\n message: translate(\"message.error.noLastName\") as string,\r\n });\r\n }\r\n setValidation(validationArr);\r\n if (validationArr.length !== 0) {\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n };\r\n\r\n return (\r\n
    \r\n \r\n \r\n \r\n setOpen(false) }]}\r\n />\r\n \r\n
    \r\n

    \r\n \r\n \r\n \r\n \r\n \r\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 mapDispatchToProps = (dispatch: Dispatch) => ({\r\n actions: bindActionCreators(\r\n { changeLoginOpen, changeActiveOpen, sendResetOpen },\r\n dispatch\r\n ),\r\n});\r\n\r\nconst ConnectedEmployeeDetailsView = connect(\r\n null,\r\n mapDispatchToProps\r\n)(withLocalize(EmployeeDetailsView));\r\n\r\nconst EmployeeDetails: React.FC = () => {\r\n const { id = \"\" } = useParams();\r\n const { data, loading, error } = useQuery<\r\n EmployeeQueryData,\r\n EmployeeQueryVars\r\n >(QUERY_EMPLOYEE_DETAIL, {\r\n variables: { id: parseInt(id) },\r\n });\r\n\r\n if (loading) return ;\r\n if (!data?.employee?.userInformation)\r\n return (\r\n
    \r\n
    \r\n \r\n
    \r\n
    {error?.message}
    \r\n
    \r\n );\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default EmployeeDetails;\r\n","import React, { useState, createRef } from 'react'\r\n\r\nimport { withLocalize, LocalizeContextProps } from 'react-localize-redux';\r\n\r\nimport { format, getYear, getMonth } from 'date-fns';\r\nimport { enGB, de, fr } from 'date-fns/locale';\r\n\r\nimport { InputAdornment, Input } from '@material-ui/core';\r\nimport ArrowDropDownIcon from '@material-ui/icons/ArrowDropDown';\r\n\r\n\r\n// @ts-ignore\r\nimport Picker from 'react-month-picker'\r\nimport \"react-month-picker/css/month-picker.css\"\r\n\r\n\r\nconst langLocalMapping: { [key: string]: any } = {\r\n en: enGB,\r\n de: de,\r\n fr: fr\r\n};\r\n\r\nlet langMonthArray: { [key: string]: any } = {};\r\n\r\n\r\ninterface MonthBoxPara {\r\n value: string\r\n onClick: () => void\r\n}\r\n\r\nconst MonthBox: React.FC = ({ value, onClick }) => {\r\n return (\r\n \r\n \r\n \r\n }\r\n />\r\n );\r\n}\r\n\r\n\r\n\r\nexport interface YearMonth {\r\n /** The Year as 4-digit number */\r\n year: number\r\n /** The month as number starting with 0 for jan to 11 for dec */\r\n month: number\r\n}\r\n\r\n\r\ninterface MonthPickerPara extends LocalizeContextProps {\r\n years?: number[]\r\n defaultValue?: YearMonth\r\n value?: YearMonth\r\n onChange?: (value: YearMonth) => void\r\n}\r\n\r\n\r\nconst MonthPicker: React.FC = ({ value, defaultValue, translate, activeLanguage, onChange, years }) => {\r\n\r\n const [mvalue, setMvalue] = useState(defaultValue);\r\n\r\n const pickerRef = createRef();\r\n\r\n\r\n if (!langMonthArray[activeLanguage.code]) {\r\n const locale = langLocalMapping[activeLanguage.code] || enGB;\r\n langMonthArray[activeLanguage.code] = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11].map((idxMonth) => format(new Date(2020, idxMonth, 1), \"MMM\", { locale: locale }));\r\n }\r\n\r\n const show = () => {\r\n // @ts-ignore\r\n pickerRef.current?.show();\r\n };\r\n\r\n const pickerChange = function (year: number, month: number) {\r\n onChange && onChange({ year, month });\r\n if (!value) {\r\n setMvalue({ year, month });\r\n }\r\n };\r\n\r\n const current = value || mvalue;\r\n const currentStr = current ? format(new Date(`${current.year}-${current.month}`), 'MMMM yyyy') : '';\r\n const pickerPreSet = current || { year: getYear(new Date()), month: getMonth(new Date()) };\r\n\r\n return (\r\n \r\n \r\n \r\n )\r\n\r\n}\r\n\r\n\r\n\r\nexport default withLocalize(MonthPicker);\r\n","import { ActionType } from 'redux/types/PearlsGrid';\r\n\r\nimport AgGridActionHelper from 'redux/actions/AgGridActionHelper';\r\n\r\n\r\nexport const { setGridState, setColumnStates } = AgGridActionHelper(ActionType.GRID);\r\n","import React, { useMemo, Fragment } from \"react\";\r\n\r\nimport { connect } from \"react-redux\";\r\nimport { bindActionCreators, Dispatch } from \"redux\";\r\n\r\nimport { withLocalize, LocalizeContextProps, TranslateFunction, Translate } from \"react-localize-redux\";\r\n\r\nimport { Link } from \"react-router-dom\";\r\n\r\nimport { CircularProgress, makeStyles, createStyles, Theme } from \"@material-ui/core\";\r\n\r\nimport { useQuery } from \"react-apollo\";\r\nimport gql from \"graphql-tag\";\r\n\r\nimport { ColDef, ValueFormatterParams } from \"@ag-grid-enterprise/all-modules\";\r\n\r\nimport \"@ag-grid-community/all-modules/dist/styles/ag-grid.css\";\r\nimport \"@ag-grid-community/all-modules/dist/styles/ag-theme-balham.css\";\r\n\r\nimport { ReduxAgGrid } from \"components/common/Grid/AgGrid\";\r\n\r\nimport { AppState } from \"redux/store\";\r\nimport { State as PearlsGridState } from \"redux/types/PearlsGrid\";\r\nimport { setGridState, setColumnStates, } from \"redux/actions/PearlsGridActions\";\r\n\r\nimport { pearlsReportGrid_pearls, pearlsReportGridVariables, pearlsReportGrid } from \"types/apolloGenerated/pearlsReportGrid\";\r\nimport { Country } from \"types/apolloGenerated/globalTypes\";\r\n\r\nimport { pearlsReportGrid_pearls_organization } from 'types/apolloGenerated/pearlsReportGrid';\r\n\r\n\r\nconst QUERY = gql`\r\n query pearlsReportGrid(\r\n $countryCode: Country!\r\n $from: DateTimeOffset!\r\n $to: DateTimeOffset!\r\n ) {\r\n pearls(countryCode: $countryCode, from: $from, to: $to) {\r\n organization {\r\n id\r\n email\r\n name\r\n address {\r\n city\r\n postalCode\r\n countryCode\r\n }\r\n }\r\n transaction {\r\n amount\r\n conversionRate\r\n id\r\n date\r\n }\r\n }\r\n }\r\n`;\r\n\r\n\r\n\r\n\r\nconst useStyles = makeStyles((theme: Theme) => {\r\n return createStyles({\r\n pearlsGrid: {\r\n position: \"relative\",\r\n height: \"100%\",\r\n display: 'flex',\r\n flexFlow: 'column',\r\n overflow: 'hidden',\r\n\r\n '& > *': {\r\n flex: '1 1 auto',\r\n },\r\n '& a': {\r\n color: '#005D8F'\r\n },\r\n '& > .grie-error': {\r\n flex: '0 1 auto',\r\n },\r\n '& .ag-paging-panel.ag-hidden': {\r\n display: 'block !important',\r\n opacity: 0,\r\n pointerEvents: 'none',\r\n },\r\n '& .ag-cell.number-cell': {\r\n textAlign: 'right',\r\n paddingRight: '40px',\r\n },\r\n },\r\n });\r\n});\r\n\r\n\r\n\r\n\r\nexport const getColumnDefs = (translate: TranslateFunction): ColDef[] => {\r\n const columnDefs = [\r\n {\r\n headerName: translate(\"types.organization.name\") as string,\r\n field: \"organization.name\",\r\n cellRenderer: \"PartnerLink\",\r\n sortable: true,\r\n filter: true,\r\n width: 180,\r\n getQuickFilterText: function (params: any) {\r\n return params.value;\r\n }\r\n },\r\n {\r\n headerName: translate(\"types.address.postalCode\") as string,\r\n field: \"organization.address.postalCode\",\r\n sortable: true,\r\n filter: true,\r\n width: 120,\r\n },\r\n {\r\n headerName: translate(\"types.address.city\") as string,\r\n field: \"organization.address.city\",\r\n sortable: true,\r\n filter: true,\r\n width: 120\r\n },\r\n {\r\n headerName: translate(\"types.address.countryCode\") as string,\r\n field: \"organization.address.countryCode\",\r\n sortable: true,\r\n filter: true,\r\n width: 100\r\n },\r\n {\r\n headerName: translate(\"types.pearlsTransactions.credit.pearls\") as string,\r\n field: \"transaction.debitPearls\",\r\n sortable: true,\r\n filter: true,\r\n width: 150,\r\n cellClass: \"number-cell\",\r\n valueFormatter: numberFormatter,\r\n headerTooltip: translate(\"types.pearlsTransactions.tooltip.creditPearl\") as string\r\n },\r\n {\r\n headerName: translate(\"types.pearlsTransactions.credit.euros\") as string,\r\n field: \"transaction.debitEuros\",\r\n sortable: true,\r\n filter: true,\r\n width: 150,\r\n cellClass: \"number-cell\",\r\n valueFormatter: currencyFormatter,\r\n headerTooltip: translate(\"types.pearlsTransactions.tooltip.creditEuro\") as string\r\n },\r\n {\r\n headerName: translate(\"types.pearlsTransactions.debit.pearls\") as string,\r\n field: \"transaction.creditPearls\",\r\n sortable: true,\r\n filter: true,\r\n width: 150,\r\n cellClass: \"number-cell\",\r\n valueFormatter: numberFormatter,\r\n headerTooltip: translate(\"types.pearlsTransactions.tooltip.debitPearl\") as string\r\n },\r\n {\r\n headerName: translate(\"types.pearlsTransactions.debit.euros\") as string,\r\n field: \"transaction.creditEuros\",\r\n sortable: true,\r\n filter: true,\r\n width: 150,\r\n cellClass: \"number-cell\",\r\n valueFormatter: currencyFormatter,\r\n headerTooltip: translate(\"types.pearlsTransactions.tooltip.debitEuro\") as string\r\n }\r\n ];\r\n return columnDefs;\r\n};\r\n\r\nconst numberFormatter = (params: ValueFormatterParams) => {\r\n if (params.value === 0) {\r\n return '';\r\n }\r\n return params.value;\r\n}\r\n\r\nconst currencyFormatter = (params: ValueFormatterParams) => {\r\n if (params.value === 0) {\r\n return '';\r\n }\r\n return \"€ \" + params.value.toFixed(2);\r\n}\r\n\r\n\r\ninterface CellRenderer {\r\n value: number;\r\n data: pearlsReportGrid_pearls;\r\n}\r\n\r\nconst PartnerLink: React.FC = ({ data, value }) => {\r\n if (!data) {\r\n return
    ;\r\n }\r\n return {value};\r\n};\r\n\r\ninterface SummaryRecord {\r\n transaction: {\r\n debitPearls: number,\r\n debitEuros: number,\r\n creditPearls: number,\r\n creditEuros: number,\r\n }\r\n\r\n organization: pearlsReportGrid_pearls_organization\r\n}\r\n\r\ninterface id2SummaryMapping {\r\n [key: string]: SummaryRecord\r\n}\r\n\r\n\r\n\r\n\r\n\r\n\r\ninterface PearlsGridPara extends LocalizeContextProps {\r\n translate: TranslateFunction\r\n country: Country\r\n from: Date\r\n to: Date\r\n search: string\r\n\r\n gridState: PearlsGridState\r\n actions: {\r\n setGridState: typeof setGridState\r\n setColumnStates: typeof setColumnStates\r\n };\r\n}\r\n\r\nconst PearlsGrid: React.FC = ({ translate, country, from, to, gridState, actions, search }) => {\r\n\r\n const classes = useStyles();\r\n\r\n const { data, loading } = useQuery(QUERY, {\r\n variables: {\r\n countryCode: country as Country,\r\n from: from.toJSON(),\r\n to: to.toJSON()\r\n },\r\n errorPolicy: 'ignore' // ToDo: Workaround for BUG (4284). Remove after fixed.\r\n });\r\n\r\n const gridData = useMemo(() => {\r\n if (data && data.pearls) {\r\n\r\n const summary: id2SummaryMapping = {};\r\n data.pearls.reduce((summary, pearlTrans) => {\r\n if (pearlTrans && pearlTrans.organization && pearlTrans.transaction && pearlTrans.transaction.amount !== 0) {\r\n\r\n summary[pearlTrans.organization.id] = summary[pearlTrans.organization.id] || {\r\n transaction: {\r\n creditEuros: 0,\r\n creditPearls: 0,\r\n debitEuros: 0,\r\n debitPearls: 0\r\n },\r\n organization: pearlTrans.organization\r\n };\r\n\r\n if (pearlTrans.transaction.amount > 0) {\r\n summary[pearlTrans.organization.id].transaction.debitPearls += pearlTrans.transaction.amount\r\n summary[pearlTrans.organization.id].transaction.debitEuros = Math.round(\r\n summary[pearlTrans.organization.id].transaction.debitEuros * 100\r\n + pearlTrans.transaction.amount * pearlTrans.transaction.conversionRate * 100\r\n ) / 100\r\n } else {\r\n summary[pearlTrans.organization.id].transaction.creditPearls -= pearlTrans.transaction.amount\r\n summary[pearlTrans.organization.id].transaction.creditEuros = Math.round(\r\n summary[pearlTrans.organization.id].transaction.creditEuros * 100\r\n - pearlTrans.transaction.amount * pearlTrans.transaction.conversionRate * 100\r\n ) / 100\r\n }\r\n }\r\n return summary;\r\n }, summary);\r\n\r\n return Object.values(summary);\r\n }\r\n return [];\r\n }, [data]);\r\n\r\n\r\n if (loading) {\r\n return \r\n } else if (data) {\r\n return (\r\n \r\n {\r\n // try {\r\n // (event.api as any).context.beanWrappers.tooltipManager.beanInstance.MOUSEOVER_SHOW_TOOLTIP_TIMEOUT = 500;\r\n // } catch (e) {\r\n // console.error(e);\r\n // }\r\n // }}\r\n />\r\n \r\n\r\n );\r\n }\r\n\r\n return ;\r\n};\r\n\r\n\r\nconst mapStateToProps = (appState: AppState) => ({\r\n user: appState.auth.user,\r\n gridState: appState.pearlsGrid\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch: Dispatch) => ({\r\n actions: bindActionCreators(\r\n { setGridState, setColumnStates },\r\n dispatch\r\n )\r\n});\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(withLocalize(PearlsGrid));\r\n","import React, { useState, useEffect, Fragment } from \"react\";\r\n\r\nimport { connect } from \"react-redux\";\r\nimport { Dispatch } from \"redux\";\r\n\r\nimport { withLocalize, LocalizeContextProps, Translate, TranslateFunction } from \"react-localize-redux\";\r\n\r\nimport { Box } from \"@material-ui/core\";\r\nimport { createStyles, Theme, makeStyles } from \"@material-ui/core/styles\";\r\n\r\nimport { endOfMonth, getMonth, getYear } from \"date-fns\";\r\n\r\nimport \"@ag-grid-community/all-modules/dist/styles/ag-grid.css\";\r\nimport \"@ag-grid-community/all-modules/dist/styles/ag-theme-balham.css\";\r\n\r\nimport { AppState } from \"redux/store\";\r\n\r\nimport CountryFilter from \"components/common/CountryFilter\";\r\nimport PageHeader from \"components/common/PageHeader\";\r\nimport GridFilterHeader from \"components/common/Grid/GridFilterHeader\";\r\nimport TextField from \"@material-ui/core/TextField\";\r\n\r\nimport MonthPicker, { YearMonth } from \"./MonthPicker\";\r\n\r\nimport { UserProfile } from \"types/ToolboxEntities\";\r\nimport { Country } from \"types/apolloGenerated/globalTypes\";\r\n\r\nimport PearlsGrid from './PearlsGrid';\r\n\r\nconst useStyles = makeStyles((theme: Theme) => {\r\n return createStyles({\r\n partnerOverview: {\r\n position: \"relative\",\r\n display: \"flex\",\r\n flexFlow: \"column\",\r\n\r\n \"& > .gridFilterHeader\": {\r\n flex: \"0 1 auto\",\r\n justifyContent: \"flex-end\"\r\n },\r\n\r\n \"& > .innerContent\": {\r\n flex: \"1 1 auto\"\r\n }\r\n },\r\n fromToString: {\r\n display: \"inline-block\",\r\n margin: \"5px 20px 0\"\r\n },\r\n textField: {\r\n [`& input::-webkit-clear-button,\r\n & input::-webkit-outer-spin-button,\r\n & input::-webkit-inner-spin-button,\r\n & input::-webkit-toolbarbutton-dropdown`]: {\r\n display: \"none\"\r\n },\r\n width: 140\r\n },\r\n innerHeaderRight: {\r\n flex: \"0 1 auto\",\r\n display: \"flex\",\r\n alignItems: \"flex-end\",\r\n margin: 0,\r\n border: \"solid 2px grey20\",\r\n width: \"350px\",\r\n borderRadius: \"5px\",\r\n height: \"48px\",\r\n\r\n \"& > *\": {\r\n flex: \"0 1 auto\",\r\n margin: \"0 20px\",\r\n minWidth: \"170px\"\r\n }\r\n },\r\n });\r\n});\r\n\r\n\r\n\r\ninterface PearlsPara extends LocalizeContextProps {\r\n translate: TranslateFunction\r\n user: UserProfile | null\r\n}\r\n\r\nconst Pearls: React.FC = ({ user }) => {\r\n const classes = useStyles();\r\n const [search, setSearch] = React.useState(\"\");\r\n const [monthYearMaster, setMonthYearMaster] = React.useState(true);\r\n\r\n\r\n const [yearMonth, setYearMonth] = useState(() => {\r\n const now = new Date();\r\n return {\r\n year: getYear(now),\r\n month: getMonth(now) + 1 //+1 as the month starts with january being 0\r\n };\r\n });\r\n\r\n const [country, setCountry] = useState(user?.allowedCountries[0])\r\n const startDate = new Date(`${yearMonth.year}-${yearMonth.month}`);\r\n startDate.setDate(startDate.getDate());\r\n\r\n const endDate = endOfMonth(new Date(`${yearMonth.year}-${yearMonth.month}`));\r\n const [selectedStartDateInputValue, setSelectedStartDateInputValue] = React.useState(startDate);\r\n const [selectedEndDateInputValue, setSelectedEndDateInputValue] = React.useState(endDate);\r\n const [startQueryDate, setStartQueryDate] = React.useState(startDate);\r\n const [endQueryDate, setEndQueryDate] = React.useState(endDate);\r\n\r\n const startingDay = monthYearMaster ? startDate : selectedStartDateInputValue;\r\n const endingDay = monthYearMaster ? endDate : selectedEndDateInputValue;\r\n\r\n const selectedStartingDayString = startingDay.getUTCFullYear() + \"-\" + (\"0\" + (startingDay.getMonth() + 1)).slice(-2) + \"-\" + (\"0\" + startingDay.getDate()).slice(-2);\r\n const selectedEndingDayString = endingDay.getUTCFullYear() + \"-\" + (\"0\" + (endingDay.getMonth() + 1)).slice(-2) + \"-\" + (\"0\" + endingDay.getDate()).slice(-2);\r\n\r\n\r\n if (new Date(selectedEndDateInputValue) > new Date()) {\r\n setSelectedEndDateInputValue(new Date())\r\n }\r\n\r\n const changeSearch = (event: React.ChangeEvent) => {\r\n setMonthYearMaster(true);\r\n setSearch(event.target.value);\r\n };\r\n\r\n const setSelectedStartDateInput = (e: any) => {\r\n setMonthYearMaster(false);\r\n setSelectedStartDateInputValue(new Date(e));\r\n }\r\n const setSelectedEndDateInput = (e: any) => {\r\n setMonthYearMaster(false);\r\n setSelectedEndDateInputValue(new Date(e));\r\n }\r\n\r\n const setYearMonthPicker = (e: any) => {\r\n setMonthYearMaster(true);\r\n setYearMonth(e);\r\n }\r\n\r\n if (monthYearMaster) {\r\n setSelectedStartDateInputValue(startDate);\r\n setSelectedEndDateInputValue(endDate);\r\n setStartQueryDate(startDate);\r\n setEndQueryDate(endDate);\r\n setMonthYearMaster(false);\r\n }\r\n\r\n useEffect(() => {\r\n\r\n const troubles = document.querySelectorAll(\"#datePicker input\");\r\n troubles.forEach((item) => {\r\n\r\n const addFunction = (e: any) => {\r\n const eventTarget = (e.target as HTMLInputElement);\r\n if (eventTarget.name === \"startingDay\") {\r\n setSelectedStartDateInputValue(new Date(eventTarget.value));\r\n setStartQueryDate(new Date(eventTarget.value));\r\n\r\n }\r\n if (eventTarget.name === \"endingDay\") {\r\n setSelectedEndDateInputValue(new Date(eventTarget.value));\r\n setEndQueryDate(new Date(eventTarget.value));\r\n }\r\n }\r\n\r\n item.removeEventListener(\"change\", addFunction)\r\n item.addEventListener(\"change\", addFunction);\r\n });\r\n }, []);\r\n\r\n\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n
    \r\n {user?.userInformation.address.countryCode !== \"BE\" && (\r\n
    \r\n \r\n
    \r\n )}\r\n
    \r\n setSelectedStartDateInput(e.target.value)}\r\n />\r\n \r\n {\" \"}\r\n \r\n \r\n setSelectedEndDateInput(e.target.value)}\r\n />\r\n
    \r\n \r\n setCountry(country.toString())}\r\n allowMultipleSelection={false}\r\n showSelectAll={false}\r\n />\r\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 = (appState: AppState) => ({\r\n user: appState.auth.user,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch: Dispatch) => ({});\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(withLocalize(Pearls));\r\n","import { ActionType, SearchAction } from 'redux/types/CustomerOverview';\r\n\r\nimport AgGridActionHelper from 'redux/actions/AgGridActionHelper';\r\n\r\n\r\nexport const { setGridState, setColumnStates } = AgGridActionHelper(ActionType.GRID);\r\n\r\nexport const search = (searchTerm: string | null): SearchAction => ({\r\n type: ActionType.SEARCH,\r\n payload: searchTerm\r\n});\r\n","import React from \"react\";\r\nimport { TranslateFunction } from \"react-localize-redux\";\r\nimport { Link } from \"react-router-dom\";\r\n\r\nimport gql from \"graphql-tag\";\r\nimport {\r\n customerGrid,\r\n customerGrid_customers_results,\r\n} from \"types/apolloGenerated/customerGrid\";\r\nimport CheckIcon from \"@material-ui/icons/Check\";\r\n\r\nimport { ColDef } from \"@ag-grid-enterprise/all-modules\";\r\nimport \"@ag-grid-community/all-modules/dist/styles/ag-grid.css\";\r\nimport \"@ag-grid-community/all-modules/dist/styles/ag-theme-balham.css\";\r\n\r\nimport { UserProfile } from \"types/ToolboxEntities\";\r\n\r\nimport { CustomerFilterOption } from \"types/apolloGenerated/globalTypes\";\r\n\r\nimport { factoryApolloConnector } from \"util/AgGridUtils\";\r\n\r\nimport format from \"date-fns/format\";\r\nimport { Translate } from \"react-localize-redux\";\r\n\r\nexport const QUERY = gql`\r\n query customerGrid(\r\n $page: Int\r\n $pageSize: Int\r\n $filter: [CustomerFilter]\r\n $sorting: [SortingCriterionForCustomerFilterOption]\r\n ) {\r\n customers(\r\n page: $page\r\n pageSize: $pageSize\r\n filter: $filter\r\n sorting: $sorting\r\n ) {\r\n page\r\n pageSize\r\n totalResults\r\n results {\r\n userInformation {\r\n id\r\n firstName\r\n lastName\r\n email\r\n registeredOn\r\n allowedToLogin\r\n accountLocked\r\n telephone\r\n address {\r\n street\r\n postalCode\r\n city\r\n countryCode\r\n }\r\n }\r\n registeredPools {\r\n volume\r\n }\r\n }\r\n }\r\n }\r\n`;\r\n\r\n//missing post code and city and reg date\r\nconst colMapping = {\r\n \"userInformation.firstName\": CustomerFilterOption.FIRST_NAME,\r\n \"userInformation.lastName\": CustomerFilterOption.LAST_NAME,\r\n \"userInformation.email\": CustomerFilterOption.EMAIL,\r\n \"userInformation.address.countryCode\": CustomerFilterOption.COUNTRY,\r\n \"userInformation.address.city\": CustomerFilterOption.CITY,\r\n \"userInformation.address.postalCode\": CustomerFilterOption.POSTAL_CODE,\r\n \"userInformation.registeredOn\": CustomerFilterOption.REGISTERED_ON,\r\n \"userInformation.telephone\": CustomerFilterOption.TELEPHONE,\r\n};\r\n\r\nconst searchColumns = [\r\n CustomerFilterOption.FIRST_NAME,\r\n CustomerFilterOption.LAST_NAME,\r\n CustomerFilterOption.EMAIL,\r\n CustomerFilterOption.CITY,\r\n CustomerFilterOption.POSTAL_CODE,\r\n CustomerFilterOption.TELEPHONE,\r\n];\r\n\r\nexport const apolloConnectorBySearch = (searchTerm: string | null) => {\r\n return factoryApolloConnector(\r\n QUERY,\r\n //TODO: Remove results filtering once solution for customer querying is identified (done to prevent oData Max Fetch Count Errors)\r\n (data: customerGrid) => {\r\n if (data.customers?.totalResults && data.customers?.totalResults > 10000) {\r\n data.customers.totalResults = 10000;\r\n }\r\n return data.customers;\r\n },\r\n colMapping,\r\n {\r\n // filter: [{\r\n // filterOption: [\"IS_LOCKED\"],\r\n // operator: FilterOperator.EQ,\r\n // values: [\"false\"]\r\n // }],\r\n filter: [],\r\n search: {\r\n searchCols: searchColumns as string[],\r\n searchTerm,\r\n },\r\n }\r\n );\r\n};\r\n\r\nexport function getRowStyleScheduled(params: any) {\r\n if (params.data && params.data.userInformation.accountLocked) {\r\n return {\r\n \"background-color\": \"#f5f7f7\",\r\n color: \"#9AA3A8\",\r\n \"font-style\": \"italic\",\r\n };\r\n }\r\n return null;\r\n}\r\n\r\nexport const getColumnDefs = (\r\n translate: TranslateFunction,\r\n user: UserProfile | null\r\n): ColDef[] => {\r\n const columnDefs = [\r\n {\r\n headerName: translate(\"types.userInformation.firstName\") as string,\r\n field: \"userInformation.firstName\",\r\n cellRenderer: \"CustomerLink\",\r\n width: 110,\r\n },\r\n {\r\n headerName: translate(\"types.userInformation.lastName\") as string,\r\n field: \"userInformation.lastName\",\r\n cellRenderer: \"CustomerLink\",\r\n width: 110,\r\n },\r\n {\r\n headerName: translate(\"types.address.postalCode\") as string,\r\n field: \"userInformation.address.postalCode\",\r\n width: 100,\r\n },\r\n {\r\n headerName: translate(\"types.address.city\") as string,\r\n field: \"userInformation.address.city\",\r\n width: 100,\r\n },\r\n {\r\n headerName: translate(\"types.address.countryCode\") as string,\r\n field: \"userInformation.address.countryCode\",\r\n filter: user ? \"agSetColumnFilter\" : false,\r\n filterParams: {\r\n filterOptions: [\"contains\"],\r\n suppressAndOrCondition: true,\r\n values: user ? user.allowedCountries : [],\r\n },\r\n width: 100,\r\n },\r\n {\r\n headerName: translate(\"generics.email\") as string,\r\n field: \"userInformation.email\",\r\n width: 220,\r\n },\r\n {\r\n headerName: translate(\"types.organization.regData\") as string,\r\n field: \"userInformation.registeredOn\",\r\n width: 120,\r\n cellRenderer: \"FormatDate\",\r\n },\r\n {\r\n headerName: translate(\"types.userInformation.accountLocked\") as string,\r\n field: \"userInformation.accountLocked\",\r\n width: 110,\r\n hide: true,\r\n },\r\n {\r\n headerName: translate(\"types.userInformation.telephone\") as string,\r\n field: \"userInformation.telephone\",\r\n width: 250,\r\n },\r\n {\r\n headerName: translate(\"types.userInformation.numberOfPools\") as string,\r\n field: \"registeredPools.volume\",\r\n cellRenderer: \"NumberOfPools\",\r\n width: 140,\r\n },\r\n ];\r\n\r\n return columnDefs;\r\n};\r\n\r\ninterface CellRenderer {\r\n value: string;\r\n data: customerGrid_customers_results;\r\n}\r\n\r\nconst CustomerLink: React.FC = ({ data, value }) => {\r\n if (!(data && data.userInformation)) {\r\n return
    ;\r\n }\r\n return (\r\n \r\n {value || \"NOT SET\"}\r\n \r\n );\r\n};\r\n\r\nconst NumberOfPools: React.FC = ({ data, value }) => {\r\n const amount = (data?.registeredPools && data.registeredPools.length) ?? 0;\r\n if (amount > 0) {\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n } else {\r\n return
    ;\r\n }\r\n};\r\n\r\nconst FormatDate: React.FC = ({ data, value }) => {\r\n if (!(data && data.userInformation?.registeredOn)) {\r\n return
    ;\r\n }\r\n //return
    {format(new Date(value), \"P\")}
    ;\r\n return (\r\n \r\n {(translate) => {\r\n return (\r\n
    \r\n {format(\r\n new Date(value),\r\n translate.translate(\"generics.dateTimeFormatFNSShort\") as string\r\n )}\r\n
    \r\n );\r\n }}\r\n
    \r\n );\r\n};\r\n\r\nexport const CellRenderer = { CustomerLink, FormatDate, NumberOfPools };\r\n","import React, { useState, useEffect, Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { bindActionCreators, Dispatch } from 'redux';\r\nimport { Translate } from 'react-localize-redux';\r\n\r\n\r\nimport { TextField } from '@material-ui/core';\r\nimport { createStyles, Theme, makeStyles } from '@material-ui/core/styles';\r\n\r\n\r\nimport '@ag-grid-community/all-modules/dist/styles/ag-grid.css';\r\nimport '@ag-grid-community/all-modules/dist/styles/ag-theme-balham.css';\r\n\r\nimport debounce from 'debounce';\r\n\r\nimport { AppState } from 'redux/store';\r\nimport { State as CustomerOverviewState } from 'redux/types/CustomerOverview';\r\nimport { setGridState, setColumnStates, search } from 'redux/actions/CustomerOverviewActions';\r\n\r\nimport { UserProfile } from 'types/ToolboxEntities';\r\n\r\n\r\nimport { getFilterValues } from 'util/AgGridUtils';\r\n\r\n\r\nimport AgGrid from 'components/common/Grid/AgGrid';\r\nimport CountryFilter from 'components/common/CountryFilter';\r\nimport PageHeader from 'components/common/PageHeader';\r\nimport GridFilterHeader from 'components/common/Grid/GridFilterHeader';\r\n\r\n\r\nimport { getColumnDefs, apolloConnectorBySearch, CellRenderer, getRowStyleScheduled } from './GridConfig';\r\n\r\n\r\nconst useStyles = makeStyles((theme: Theme) => {\r\n return createStyles({\r\n customerOverview: {\r\n display: 'flex',\r\n flexFlow: 'column',\r\n\r\n '& > .gridFilterHeader': {\r\n flex: '0 1 auto',\r\n },\r\n\r\n '& > .innerContent': {\r\n flex: '1 1 100%',\r\n height: '100%',\r\n },\r\n },\r\n\r\n innerHeader: {\r\n flex: '0 1 auto',\r\n display: 'flex',\r\n margin: '0 -20px 20px -20px',\r\n alignItems: 'flex-end',\r\n justifyContent: 'space-between',\r\n\r\n '& > *': {\r\n flex: '0 1 auto',\r\n margin: '0 20px',\r\n minWidth: '170px',\r\n },\r\n\r\n '& > .filter': {\r\n flex: '1 1 auto',\r\n maxWidth: \"250px\",\r\n }\r\n },\r\n\r\n innerHeaderRight: {\r\n flex: '0 1 auto',\r\n display: 'flex',\r\n alignItems: 'flex-end',\r\n margin: 0,\r\n\r\n '& > *': {\r\n flex: '0 1 auto',\r\n margin: '0 20px',\r\n minWidth: '170px',\r\n },\r\n },\r\n })\r\n});\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\nconst debouncedSearch = debounce((searchTerm: string, oldSearchTerm: string | null, searchAction: typeof search) => {\r\n // console.log(searchTerm);\r\n if (searchTerm.length >= 3) {\r\n searchAction(searchTerm);\r\n } else if (searchTerm.length === 0 && (oldSearchTerm === null || oldSearchTerm.length > 0)) {\r\n searchAction(null);\r\n }\r\n}, 500);\r\n\r\n\r\n\r\n\r\ninterface CustomerListPara {\r\n user: UserProfile | null\r\n customerOverviewState: CustomerOverviewState\r\n actions: {\r\n setGridState: typeof setGridState\r\n setColumnStates: typeof setColumnStates\r\n search: typeof search\r\n }\r\n}\r\n\r\n\r\n\r\nconst CustomerList: React.FC = ({ user, customerOverviewState, actions }) => {\r\n const classes = useStyles();\r\n\r\n const [search, setSearch] = useState(customerOverviewState.search || \"\");\r\n\r\n const [apolloConnector, setApolloConnector] = useState>(apolloConnectorBySearch(customerOverviewState.search));\r\n\r\n useEffect(() => {\r\n setApolloConnector(apolloConnectorBySearch(customerOverviewState.search));\r\n }, [customerOverviewState.search]);\r\n\r\n\r\n if (!user) {\r\n return null;\r\n }\r\n\r\n const gridState = customerOverviewState.grid;\r\n\r\n const changeFilter = (filterName: string, newFilterValues: string[] | false) => {\r\n const newFilter = Object.assign({}, gridState.filterModel);\r\n if (newFilterValues !== false) {\r\n newFilter[filterName] = {\r\n filterType: \"set\",\r\n values: newFilterValues\r\n };\r\n } else {\r\n delete newFilter[filterName];\r\n }\r\n actions.setGridState(gridState.page, gridState.sortModel, newFilter);\r\n }\r\n\r\n\r\n const changeCountryFilter = (newFilterValues: string[]) => {\r\n changeFilter(\r\n 'userInformation.address.countryCode',\r\n (newFilterValues.length > 0 && newFilterValues.length < user.allowedCountries.length) && newFilterValues\r\n );\r\n };\r\n\r\n const selectedCountries = gridState.filterModel['userInformation.address.countryCode'] ? getFilterValues(gridState.filterModel['userInformation.address.countryCode']) : user.allowedCountries;\r\n\r\n\r\n const changeSearch = (event: React.ChangeEvent) => {\r\n setSearch(event.target.value);\r\n debouncedSearch(event.target.value, customerOverviewState.search, actions.search);\r\n }\r\n\r\n\r\n return (\r\n {({ translate }) => (\r\n \r\n \r\n
    \r\n \r\n \r\n\r\n
    \r\n \r\n
    \r\n
    \r\n\r\n
    \r\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 = (appState: AppState) => ({\r\n user: appState.auth.user,\r\n customerOverviewState: appState.customerOverview\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch: Dispatch) => ({\r\n actions: bindActionCreators({ setGridState, setColumnStates, search }, dispatch),\r\n});\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(CustomerList);\r\n","import { ActionType, SearchAction } from 'redux/types/DeviceOverview';\r\n\r\nimport AgGridActionHelper from 'redux/actions/AgGridActionHelper';\r\n\r\n\r\nexport const { setGridState, setColumnStates } = AgGridActionHelper(ActionType.GRID);\r\n\r\nexport const search = (searchTerm: string | null): SearchAction => ({\r\n type: ActionType.SEARCH,\r\n payload: searchTerm\r\n});\r\n","import gql from \"graphql-tag\";\r\n\r\nexport const QUERY_CUSTOMER_PRODUCT_INSTANCES = gql`\r\n query customerProductInstances($id: String) {\r\n customers(filter: { filterOption: ID, operator: EQ, values: [$id] }) {\r\n results {\r\n registeredProducts {\r\n address {\r\n street\r\n city\r\n }\r\n productCode\r\n batchNumber\r\n state\r\n acceptedContractTerms\r\n acceptedContractDate\r\n\r\n product {\r\n\r\n productInformation {\r\n name\r\n recentFirmwareVersion\r\n }\r\n }\r\n instanceInformation {\r\n __typename\r\n ... on PerlaInstanceInformation {\r\n registeredPerlaInstanceInformation {\r\n firmware\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n`;","import React from \"react\";\r\nimport { Translate, TranslateFunction } from \"react-localize-redux\";\r\nimport { Link } from \"react-router-dom\";\r\n\r\nimport { ColDef } from \"@ag-grid-enterprise/all-modules\";\r\nimport \"@ag-grid-community/all-modules/dist/styles/ag-grid.css\";\r\nimport \"@ag-grid-community/all-modules/dist/styles/ag-theme-balham.css\";\r\n\r\nimport { factoryApolloConnector } from \"util/AgGridUtils\";\r\n\r\nimport {\r\n customerProductInstances,\r\n customerProductInstances_customers_results_registeredProducts,\r\n} from \"types/apolloGenerated/customerProductInstances\";\r\n\r\nimport SyncIcon from \"@material-ui/icons/Sync\";\r\nimport CheckIcon from \"@material-ui/icons/Check\";\r\nimport bwtColors, { campColours } from \"themes/bwtColors\";\r\nimport { format } from \"date-fns\";\r\nimport { Clear } from \"@material-ui/icons\";\r\nimport { QUERY_CUSTOMER_PRODUCT_INSTANCES } from \"commonQueries/customerProductInstances\";\r\n\r\nexport const apolloConnectorById = (id: String) => {\r\n return factoryApolloConnector(\r\n QUERY_CUSTOMER_PRODUCT_INSTANCES,\r\n (data: customerProductInstances) => {\r\n const result = data.customers?.results?.[0];\r\n\r\n // getDataSource expects results rather than \"registeredProducts\".\r\n const transformedResponse = {\r\n results: result?.registeredProducts,\r\n __typename: result?.__typename,\r\n };\r\n\r\n return transformedResponse;\r\n },\r\n {},\r\n { customArguments: { id } }\r\n );\r\n};\r\n\r\nexport const getColumnDefs = (translate: TranslateFunction): ColDef[] => {\r\n const stateStyle = (params: any) => {\r\n if (!params || !params.data) return {};\r\n if (params.data.state === \"ERROR\") {\r\n return { backgroundColor: campColours.backgroundError };\r\n }\r\n if (params.data.state === \"WARNING\") {\r\n return { backgroundColor: campColours.backgroundWarn };\r\n }\r\n };\r\n const columnDefs = [\r\n {\r\n headerName: translate(\"types.productInstance.productCode\") as string,\r\n field: \"productCode\",\r\n cellRenderer: \"ProductInstanceLink\",\r\n cellStyle: stateStyle,\r\n width: 120,\r\n sortable: false,\r\n },\r\n {\r\n headerName: translate(\"types.address.street\") as string,\r\n field: \"address.street\",\r\n cellStyle: stateStyle,\r\n width: 200,\r\n sortable: false,\r\n },\r\n {\r\n headerName: translate(\"types.address.city\") as string,\r\n field: \"address.city\",\r\n cellStyle: stateStyle,\r\n width: 120,\r\n sortable: false,\r\n },\r\n {\r\n headerName: translate(\"types.common.product\") as string,\r\n field: \"product.productInformation.name\",\r\n cellStyle: stateStyle,\r\n width: 200,\r\n sortable: false,\r\n },\r\n {\r\n headerName: translate(\"generics.error\") as string,\r\n field: \"state\",\r\n cellRenderer: \"StateCell\",\r\n cellStyle: stateStyle,\r\n width: 200,\r\n sortable: false,\r\n },\r\n {\r\n headerName: translate(\"types.productInstance.firmware\") as string,\r\n field: \"instanceInformation.firmware\",\r\n cellRenderer: \"FirmwareIndicator\",\r\n cellStyle: stateStyle,\r\n width: 120,\r\n sortable: false,\r\n },\r\n // {\r\n // headerName: translate(\"types.grid.sub\") as string,\r\n // field: \"sub\", // missing from GraphQL.\r\n // cellRenderer: \"SubIndicator\",\r\n // cellStyle: stateStyle,\r\n // width: 200\r\n // }\r\n {\r\n headerName: translate(\"types.common.batchNumber\") as string,\r\n field: \"batchNumber\",\r\n cellStyle: stateStyle,\r\n width: 140,\r\n },\r\n {\r\n headerName: translate(\"types.common.serviceContract\") as string,\r\n field: \"acceptedContractDate\",\r\n cellStyle: stateStyle,\r\n cellRenderer: \"FormatDate\",\r\n width: 140,\r\n sortable: false,\r\n },\r\n ];\r\n return columnDefs;\r\n};\r\n\r\ninterface CellRenderer {\r\n value: string;\r\n data: customerProductInstances_customers_results_registeredProducts;\r\n}\r\n\r\nconst ProductInstanceLink: React.FC = ({ data, value }) => {\r\n if (!data) {\r\n return
    ;\r\n }\r\n return {value};\r\n};\r\n\r\nexport const FirmwareIndicator: React.FC = ({ data, value }) => {\r\n if (!(data && data.instanceInformation)) {\r\n return
    ;\r\n }\r\n\r\n if (\r\n data.instanceInformation?.__typename === \"PerlaInstanceInformation\" &&\r\n data.product?.productInformation?.recentFirmwareVersion\r\n ) {\r\n const isOutOfDate =\r\n value !== \"0\" &&\r\n data.instanceInformation?.registeredPerlaInstanceInformation?.firmware &&\r\n data.instanceInformation.registeredPerlaInstanceInformation.firmware <\r\n data.product?.productInformation?.recentFirmwareVersion;\r\n\r\n return (\r\n
    \r\n
    {value}
    \r\n {isOutOfDate && }\r\n
    \r\n );\r\n }\r\n\r\n return
    {value}
    ;\r\n};\r\n\r\nconst SubIndicator: React.FC = ({ data, value }) => {\r\n if (!data) {\r\n return
    ;\r\n }\r\n return !!value ? : null;\r\n};\r\n\r\nconst FormatDate: React.FC = ({ data, value }) => {\r\n if (!(data && value)) {\r\n return ;\r\n }\r\n return (\r\n \r\n {(translate) => {\r\n return (\r\n
    \r\n {format(\r\n new Date(value),\r\n translate.translate(\"generics.dateTimeFormatFNS\") as string\r\n )}\r\n
    \r\n );\r\n }}\r\n
    \r\n );\r\n};\r\n\r\nconst StateCell: React.FC = ({ data, value }) => {\r\n if (!data || data.state === \"NOT_SET\") {\r\n return
    ;\r\n }\r\n return
    {value}
    ;\r\n};\r\n\r\nexport const CellRenderer = {\r\n ProductInstanceLink,\r\n FirmwareIndicator,\r\n SubIndicator,\r\n StateCell,\r\n FormatDate,\r\n};\r\n","import React, { Component, Fragment, useState, useEffect } from 'react';\r\nimport Select, { ValueType } from 'react-select'\r\nimport gql from \"graphql-tag\";\r\nimport { useQuery } from 'react-apollo';\r\n\r\nimport { Button, Input } from '@material-ui/core';\r\n\r\nimport { Translate } from 'react-localize-redux';\r\nimport { deviceNotificationCodeDefinitions } from 'types/apolloGenerated/deviceNotificationCodeDefinitions';\r\nimport { CircularProgress } from '@material-ui/core';\r\n\r\nconst customStyles = {\r\n container: (provided: any) => ({\r\n ...provided,\r\n marginBottom: \"10px\"\r\n }),\r\n menu: (provided: any) => ({\r\n ...provided,\r\n zIndex: 9999\r\n })\r\n};\r\n\r\n\r\nconst QUERY_DEVICE_NOTIFICATIONS = gql`\r\n query deviceNotificationCodeDefinitions{\r\n deviceNotificationCodeDefinitions (\r\n page: 0\r\n pageSize: 0\r\n sorting: {filterOption: CODE_TYPE, sortingCriterionOrder: 1, sortingDirection: DESCENDING}\r\n ) {\r\n\r\n results{\r\n code\r\n codeType\r\n mappedCodeType\r\n deviceVersion{\r\n id\r\n displayName\r\n type{\r\n displayName\r\n name\r\n }\r\n version\r\n }\r\n notificationTexts{\r\n title\r\n languageCode\r\n }\r\n\r\n }\r\n }\r\n }\r\n`;\r\n\r\n\r\ninterface ErrorStatesFilterListQueryProp {\r\n state: ErrorStatesFilterState | undefined,\r\n onChangeFilter: (selectedDeviceVersion: number, selectedCodeType: number, selectedMessage: string) => void\r\n}\r\n\r\nconst TodoPrivateListQuery: React.FC = ({ state, onChangeFilter }) => {\r\n const { loading, error, data } = useQuery(QUERY_DEVICE_NOTIFICATIONS);\r\n const [selectedDeviceVersion, setSelectedDeviceVersion] = useState(-1);\r\n const [selectedCodeType, setSelectedCodeType] = useState(-1);\r\n const [selectedMessage, setSelectedMessage] = useState(\"\");\r\n\r\n useEffect(() => {\r\n setSelectedCodeType(-1);\r\n setSelectedMessage(\"\");\r\n }, [selectedDeviceVersion]);\r\n\r\n useEffect(() => {\r\n setSelectedMessage(\"\");\r\n }, [selectedCodeType]);\r\n\r\n if (loading) {\r\n return
    ;\r\n }\r\n if (error) {\r\n console.error(error);\r\n return
    Error!
    ;\r\n }\r\n\r\n interface DeviceVersion {\r\n label: string,\r\n value: number,\r\n childs: CodeType[]\r\n }\r\n\r\n interface CodeType {\r\n label: string,\r\n value: number,\r\n childs: Message[]\r\n }\r\n\r\n interface Message {\r\n label: string,\r\n value: string\r\n }\r\n\r\n\r\n interface filterObj {\r\n label: string,\r\n value: number\r\n }\r\n\r\n interface filterObjMessage {\r\n label: string,\r\n value: string\r\n }\r\n\r\n const nestedFilterLists: DeviceVersion[] = [];\r\n\r\n if (data?.deviceNotificationCodeDefinitions?.results) {\r\n data.deviceNotificationCodeDefinitions.results.forEach((plainRecord) => {\r\n\r\n if (plainRecord && plainRecord?.deviceVersion?.id) {\r\n\r\n let newDevice: DeviceVersion | undefined;\r\n\r\n if (!(newDevice = nestedFilterLists.find(device => device.value === plainRecord?.deviceVersion?.id))) {\r\n newDevice = {\r\n label: plainRecord.deviceVersion.displayName + \" / \" + plainRecord.deviceVersion.version,\r\n value: plainRecord.deviceVersion.id,\r\n childs: []\r\n };\r\n nestedFilterLists.push(newDevice);\r\n }\r\n\r\n\r\n let newCodeType: CodeType | undefined;\r\n\r\n if (!(newCodeType = newDevice.childs.find(codeType => codeType.value === plainRecord?.codeType))) {\r\n newCodeType = {\r\n label: plainRecord.mappedCodeType || '',\r\n value: plainRecord.codeType,\r\n childs: []\r\n };\r\n newDevice.childs.push(newCodeType);\r\n }\r\n\r\n let newMessage: Message | undefined;\r\n\r\n const messageTitle = plainRecord?.notificationTexts?.find(msgLang => msgLang?.languageCode === 'de')?.title || '';\r\n if (!(newMessage = newCodeType.childs.find(message => message.label === messageTitle))) {\r\n newMessage = {\r\n label: messageTitle,\r\n value: plainRecord.code\r\n };\r\n newCodeType.childs.push(newMessage);\r\n }\r\n }\r\n })\r\n }\r\n\r\n\r\n\r\n let btnVariant: 'text' | 'outlined' | 'contained' = 'contained';\r\n\r\n const setDeviceVersion = (\r\n deviceVersionFilter: ValueType\r\n ) => {\r\n const deviceVersionFilterObj = deviceVersionFilter as filterObj;\r\n setSelectedDeviceVersion(deviceVersionFilterObj.value);\r\n };\r\n\r\n const setCodeType = (\r\n codeTypeFilter: ValueType\r\n ) => {\r\n const codeTypeFilterObj = codeTypeFilter as filterObj;\r\n setSelectedCodeType(codeTypeFilterObj.value);\r\n };\r\n\r\n const setMessage = (\r\n messageFilter: ValueType\r\n ) => {\r\n const messageFilterObj = messageFilter as filterObjMessage;\r\n setSelectedMessage(messageFilterObj.value);\r\n };\r\n\r\n const hideErrorStatesFilter = () => {\r\n if (document.querySelector('.ag-popup')) document.querySelector('.ag-popup')?.classList.add(\"hidden\");\r\n }\r\n\r\n const submit = () => {\r\n onChangeFilter(selectedDeviceVersion, selectedCodeType, selectedMessage);\r\n hideErrorStatesFilter();\r\n }\r\n\r\n const reset = () => {\r\n setSelectedDeviceVersion(-1);\r\n setSelectedCodeType(-1);\r\n setSelectedMessage(\"\");\r\n onChangeFilter(-1, -1, \"\");\r\n hideErrorStatesFilter();\r\n }\r\n\r\n const selDevice = nestedFilterLists.find(deviceVersion => deviceVersion.value === selectedDeviceVersion);\r\n const selCode = selDevice && selDevice.childs.find(codeType => codeType.value === selectedCodeType);\r\n\r\n return (\r\n {({ translate }) => (\r\n \r\n
    \r\n -1 ? nestedFilterLists.find(child => child.value === selectedDeviceVersion) : null}\r\n input={}\r\n name=\"deviceVersion\"\r\n styles={customStyles}\r\n menuContainerStyle={{ 'zIndex': 999 }}\r\n onChange={setDeviceVersion}\r\n renderValue={() => (translate(\"types.product.deviceVersion\") as string)}\r\n options={nestedFilterLists}\r\n />\r\n -1 ? selDevice?.childs.find(child => child.value === selectedCodeType) : null}\r\n input={}\r\n name=\"codeType\"\r\n styles={customStyles}\r\n menuContainerStyle={{ 'zIndex': 999 }}\r\n isDisabled={!selectedDeviceVersion}\r\n onChange={setCodeType}\r\n renderValue={() => (translate('components.filter.errorStates.codeType') as string)}\r\n options={selDevice?.childs}\r\n />\r\n child.value === selectedMessage) : null}\r\n input={}\r\n name=\"message\"\r\n styles={customStyles}\r\n menuContainerStyle={{ 'zIndex': 999 }}\r\n isDisabled={!selectedCodeType}\r\n onChange={setMessage}\r\n renderValue={() => (translate('components.filter.errorStates.message') as string)}\r\n options={selCode?.childs}\r\n />\r\n \r\n \r\n
    \r\n
    \r\n )}\r\n
    \r\n\r\n )\r\n};\r\n\r\n\r\ntype ErrorStatesFilterProps = {\r\n valueGetter: (row: any) => string\r\n filterChangedCallback: () => void\r\n}\r\n\r\ntype ErrorStatesFilterState = {\r\n selectedDeviceVersion: number\r\n selectedCodeType: number\r\n selectedMessage: string\r\n}\r\n\r\ntype filterModel = {\r\n value: ErrorStatesFilterState | undefined\r\n}\r\n\r\n\r\nexport default class PartialMatchFilter extends Component {\r\n valueGetter: (row: any) => string;\r\n\r\n\r\n constructor(props: ErrorStatesFilterProps) {\r\n super(props);\r\n\r\n this.state = undefined;\r\n\r\n this.valueGetter = this.props.valueGetter;\r\n this.onChange = this.onChange.bind(this);\r\n }\r\n\r\n isFilterActive() {\r\n return !!this.state;\r\n }\r\n\r\n getModel(): filterModel {\r\n return { value: this.state };\r\n }\r\n\r\n setModel(model: filterModel) {\r\n this.setState({\r\n text: model ? model.value : ''\r\n });\r\n }\r\n\r\n\r\n componentMethod(message: string) {\r\n alert(`Alert from ErrorStatesFilterComponent: ${message}`);\r\n }\r\n\r\n onChange(selectedDeviceVersion: number, selectedCodeType: number, selectedMessage: string) {\r\n if (!this.state\r\n || this.state.selectedDeviceVersion !== selectedDeviceVersion\r\n || this.state.selectedCodeType !== selectedCodeType\r\n || this.state.selectedMessage !== selectedMessage) {\r\n this.setState(\r\n { selectedDeviceVersion, selectedCodeType, selectedMessage },\r\n () => {\r\n this.props.filterChangedCallback();\r\n }\r\n );\r\n }\r\n\r\n }\r\n\r\n render() {\r\n const style = {\r\n width: '300px',\r\n height: '200px',\r\n padding: '10px'\r\n };\r\n\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n }\r\n}","import React from \"react\";\r\nimport { TranslateFunction } from \"react-localize-redux\";\r\nimport { Link } from \"react-router-dom\";\r\n\r\nimport gql from \"graphql-tag\";\r\nimport {\r\n productInstances,\r\n productInstances_productInstances_results as ProductInstanceResult,\r\n} from \"types/apolloGenerated/productInstances\";\r\nimport { productInstancesWithoutTotalResult } from \"types/apolloGenerated/productInstancesWithoutTotalResult\";\r\n\r\nimport { ColDef } from \"@ag-grid-enterprise/all-modules\";\r\nimport \"@ag-grid-community/all-modules/dist/styles/ag-grid.css\";\r\nimport \"@ag-grid-community/all-modules/dist/styles/ag-theme-balham.css\";\r\n\r\nimport { UserProfile } from \"types/ToolboxEntities\";\r\nimport { FilterOperator } from \"types/apolloGenerated/globalTypes\";\r\n\r\nimport { ApolloFilter, factoryApolloConnector } from \"util/AgGridUtils\";\r\nimport CampUtils from \"util/CampUtils\";\r\n\r\nimport { Translate } from \"react-localize-redux\";\r\nimport format from \"date-fns/format\";\r\n\r\nimport {\r\n ProductInstanceFilterOption,\r\n ProductInstanceState,\r\n ProductType,\r\n} from \"types/apolloGenerated/globalTypes\";\r\n\r\nimport { FirmwareIndicator } from \"Pages/Customer/CustomerDetails/GridConfig\";\r\nimport { campColours } from \"themes/bwtColors\";\r\nimport ErrorStatesFilter from \"./ErrorStatesFilter\";\r\n\r\nconst prodInstanceDataFragment = gql`\r\n fragment ProductInstanceDataForGridOverview on ProductInstance {\r\n productCode\r\n batchNumber\r\n deviceId\r\n erpBatchNumber\r\n state\r\n serialNumber\r\n registrationDate\r\n installationDate\r\n product {\r\n productInformation {\r\n id\r\n name\r\n itemNumber\r\n productType\r\n recentFirmwareVersion\r\n }\r\n }\r\n instanceInformation {\r\n __typename\r\n ... on PerlaInstanceInformation {\r\n registeredPerlaInstanceInformation {\r\n firmware\r\n nextServiceDate\r\n stateTitle\r\n holidayModeActive\r\n }\r\n }\r\n ... on SilkInstanceInformation {\r\n state\r\n }\r\n }\r\n address {\r\n street\r\n postalCode\r\n city\r\n countryCode\r\n }\r\n owner {\r\n userInformation {\r\n id\r\n firstName\r\n lastName\r\n email\r\n }\r\n }\r\n }\r\n`;\r\n\r\nconst QUERY = gql`\r\n query productInstances(\r\n $page: Int\r\n $pageSize: Int\r\n $filter: [ProductInstanceFilter]\r\n $sorting: [SortingCriterionForProductInstanceFilterOption]\r\n ) {\r\n productInstances(\r\n page: $page\r\n pageSize: $pageSize\r\n filter: $filter\r\n sorting: $sorting\r\n ) {\r\n page\r\n pageSize\r\n totalResults\r\n results {\r\n ...ProductInstanceDataForGridOverview\r\n }\r\n }\r\n }\r\n ${prodInstanceDataFragment}\r\n`;\r\n\r\nconst QUERY_WITHOUT_TR = gql`\r\n query productInstancesWithoutTotalResult(\r\n $page: Int\r\n $pageSize: Int\r\n $filter: [ProductInstanceFilter]\r\n $sorting: [SortingCriterionForProductInstanceFilterOption]\r\n ) {\r\n productInstances(\r\n page: $page\r\n pageSize: $pageSize\r\n filter: $filter\r\n sorting: $sorting\r\n ) {\r\n page\r\n pageSize\r\n results {\r\n ...ProductInstanceDataForGridOverview\r\n }\r\n }\r\n }\r\n ${prodInstanceDataFragment}\r\n`;\r\n\r\nconst colMapping = {\r\n productCode: ProductInstanceFilterOption.PRODUCT_CODE,\r\n hiddenstate: ProductInstanceFilterOption.STATE,\r\n deviceVersionId: ProductInstanceFilterOption.DEVICE_VERSION_ID,\r\n deviceState: ProductInstanceFilterOption.DEVICE_STATE,\r\n deviceCode: ProductInstanceFilterOption.DEVICE_STATE_CODE,\r\n \"owner.userInformation.firstName\":\r\n ProductInstanceFilterOption.CUSTOMER_FIRST_NAME,\r\n \"owner.userInformation.lastName\":\r\n ProductInstanceFilterOption.CUSTOMER_LAST_NAME,\r\n \"owner.userInformation.email\":\r\n ProductInstanceFilterOption.CUSTOMER_EMAIL,\r\n \"address.street\": ProductInstanceFilterOption.STREET,\r\n \"address.postalCode\": ProductInstanceFilterOption.POSTAL_CODE,\r\n \"address.city\": ProductInstanceFilterOption.CITY,\r\n \"address.countryCode\": ProductInstanceFilterOption.COUNTRY,\r\n \"product.productInformation.name\": ProductInstanceFilterOption.PRODUCT_NAME,\r\n \"product.productInformation.productType\": ProductInstanceFilterOption.TYPE,\r\n \"product.productInformation.itemNumber\": ProductInstanceFilterOption.ITEM_NUMBER,\r\n serialNumber: ProductInstanceFilterOption.SERIAL_NUMBER,\r\n registrationDate: ProductInstanceFilterOption.REGISTRATION_DATE,\r\n installationDate: ProductInstanceFilterOption.INSTALLATION_DATE,\r\n \"instanceInformation.firmware\": ProductInstanceFilterOption.FIRMWARE_VERSION,\r\n deviceId: ProductInstanceFilterOption.DEVICE_ID,\r\n};\r\n\r\nconst searchColumns = [\r\n ProductInstanceFilterOption.PRODUCT_CODE,\r\n ProductInstanceFilterOption.CUSTOMER_FIRST_NAME,\r\n ProductInstanceFilterOption.CUSTOMER_LAST_NAME,\r\n ProductInstanceFilterOption.CUSTOMER_EMAIL,\r\n ProductInstanceFilterOption.STREET,\r\n ProductInstanceFilterOption.POSTAL_CODE,\r\n ProductInstanceFilterOption.CITY,\r\n ProductInstanceFilterOption.PRODUCT_NAME,\r\n ProductInstanceFilterOption.ITEM_NUMBER,\r\n ProductInstanceFilterOption.SERIAL_NUMBER,\r\n ProductInstanceFilterOption.DEVICE_ID,\r\n ProductInstanceFilterOption.FIRMWARE_VERSION,\r\n];\r\n\r\nexport const apolloConnectorBySearch = (searchTerm: string | null) => {\r\n return factoryApolloConnector(\r\n QUERY,\r\n (data: productInstances | productInstancesWithoutTotalResult) =>\r\n data.productInstances,\r\n colMapping,\r\n {\r\n queryWithoutTotalResult: QUERY_WITHOUT_TR,\r\n search: {\r\n searchCols: searchColumns as string[],\r\n searchTerm,\r\n },\r\n defaultSort: [\r\n {\r\n colId: \"hiddenstate\",\r\n sort: \"desc\",\r\n },\r\n ],\r\n filterMapping: {\r\n state: (apolloFilter: ApolloFilter[], filterModel: any) => {\r\n if (filterModel?.value) {\r\n const filter = filterModel.value;\r\n\r\n if (\r\n filter?.selectedDeviceVersion &&\r\n filter?.selectedDeviceVersion !== -1\r\n ) {\r\n apolloFilter.push({\r\n values: [filter.selectedDeviceVersion],\r\n filterOption: [ProductInstanceFilterOption.DEVICE_VERSION_ID],\r\n operator: FilterOperator.EQ,\r\n });\r\n }\r\n if (filter?.selectedCodeType && filter?.selectedCodeType !== -1) {\r\n apolloFilter.push({\r\n values: [filter.selectedCodeType],\r\n filterOption: [ProductInstanceFilterOption.DEVICE_STATE],\r\n operator: FilterOperator.EQ,\r\n });\r\n }\r\n if (filter?.selectedMessage && filter?.selectedMessage !== \"\") {\r\n apolloFilter.push({\r\n values: [filter.selectedMessage],\r\n filterOption: [ProductInstanceFilterOption.DEVICE_STATE_CODE],\r\n operator: FilterOperator.EQ,\r\n });\r\n }\r\n }\r\n },\r\n },\r\n }\r\n );\r\n};\r\n\r\nexport const getColumnDefs = (\r\n translate: TranslateFunction,\r\n user: UserProfile | null\r\n): ColDef[] => {\r\n const stateStyle = (params: any) => {\r\n if (\r\n params?.data?.instanceInformation?.__typename ===\r\n \"PerlaInstanceInformation\"\r\n ) {\r\n if (params?.data?.state === ProductInstanceState.ERROR) {\r\n return { backgroundColor: campColours.backgroundError };\r\n }\r\n if (params?.data?.state === ProductInstanceState.WARNING) {\r\n return { backgroundColor: campColours.backgroundWarn };\r\n }\r\n if (params?.data?.state === ProductInstanceState.SERVICE) {\r\n return { backgroundColor: campColours.backgroundWarn };\r\n }\r\n if (params?.data?.state === ProductInstanceState.NOT_CONNECTED) {\r\n return { backgroundColor: campColours.backgroundDiscon };\r\n }\r\n if (params?.data?.state === ProductInstanceState.NOT_SYNCHED) {\r\n return { backgroundColor: campColours.backgroundDiscon };\r\n }\r\n } else if (\r\n params?.data?.instanceInformation?.__typename ===\r\n \"SilkInstanceInformation\"\r\n ) {\r\n let silk = params?.data?.instanceInformation ?? null;\r\n if (silk?.state === ProductInstanceState.ERROR) {\r\n return { backgroundColor: campColours.backgroundError };\r\n }\r\n if (silk?.state === ProductInstanceState.WARNING) {\r\n return { backgroundColor: campColours.backgroundWarn };\r\n }\r\n if (silk?.state === ProductInstanceState.SERVICE) {\r\n return { backgroundColor: campColours.backgroundWarn };\r\n }\r\n if (silk?.state === ProductInstanceState.NOT_SET) {\r\n return { backgroundColor: campColours.backgroundDiscon };\r\n }\r\n if (silk?.state === ProductInstanceState.NOT_CONNECTED) {\r\n return { backgroundColor: campColours.backgroundDiscon };\r\n }\r\n if (silk?.state === ProductInstanceState.NOT_SYNCHED) {\r\n return { backgroundColor: campColours.backgroundDiscon };\r\n }\r\n }\r\n };\r\n\r\n const columnDefs = [\r\n {\r\n headerName: translate(\"types.productInstance.productCode\") as string,\r\n field: \"productCode\",\r\n cellRenderer: \"ProductInstanceLink\",\r\n cellStyle: stateStyle,\r\n width: 110,\r\n },\r\n {\r\n headerName: translate(\"types.common.product\") as string,\r\n field: \"product.productInformation.name\",\r\n cellStyle: stateStyle,\r\n width: 150,\r\n },\r\n {\r\n headerName: translate(\"types.product.itemNumber\") as string,\r\n field: \"product.productInformation.itemNumber\",\r\n cellStyle: stateStyle,\r\n width: 150,\r\n },\r\n {\r\n headerName: translate(\"types.userInformation.firstName\") as string,\r\n field: \"owner.userInformation.firstName\",\r\n cellRenderer: \"CustomerLink\",\r\n cellStyle: stateStyle,\r\n width: 100,\r\n },\r\n {\r\n headerName: translate(\"types.userInformation.lastName\") as string,\r\n field: \"owner.userInformation.lastName\",\r\n cellRenderer: \"CustomerLink\",\r\n cellStyle: stateStyle,\r\n width: 100,\r\n },\r\n {\r\n headerName: translate(\"types.userInformation.email\") as string,\r\n field: \"owner.userInformation.email\",\r\n cellStyle: stateStyle,\r\n width: 100,\r\n },\r\n {\r\n headerName: translate(\"types.address.street\") as string,\r\n field: \"address.street\",\r\n cellStyle: stateStyle,\r\n width: 140,\r\n },\r\n {\r\n headerName: translate(\"types.address.postalCode\") as string,\r\n field: \"address.postalCode\",\r\n cellStyle: stateStyle,\r\n width: 100,\r\n },\r\n {\r\n headerName: translate(\"types.address.city\") as string,\r\n field: \"address.city\",\r\n cellStyle: stateStyle,\r\n width: 120,\r\n },\r\n {\r\n headerName: translate(\"types.address.countryCode\") as string,\r\n field: \"address.countryCode\",\r\n filter: user ? \"agSetColumnFilter\" : false,\r\n filterParams: {\r\n filterOptions: [\"contains\"],\r\n suppressAndOrCondition: true,\r\n values: user ? user.allowedCountries : [],\r\n },\r\n cellStyle: stateStyle,\r\n width: 90,\r\n },\r\n {\r\n headerName: translate(\"types.productInstance.nextService\") as string,\r\n field: \"instanceInformation.nextServiceDate\",\r\n valueGetter: (params: any) => {\r\n return ServiceDateValueGetter({ data: params.data, value: params.value })\r\n ?.props.children;\r\n },\r\n cellRenderer: \"FormatDate\",\r\n cellStyle: stateStyle,\r\n width: 100,\r\n sortable: false,\r\n suppressMenu: true,\r\n },\r\n {\r\n headerName: translate(\"generics.error\") as string,\r\n field: \"state\",\r\n valueGetter: (params: any) => {\r\n return StateValueGetter({ data: params.data, value: params.value })\r\n ?.props.children;\r\n },\r\n filter: \"errorStatesFilter\",\r\n filterParams: {\r\n filterOptions: [\"contains\"],\r\n suppressAndOrCondition: true,\r\n values: CampUtils.getEnumAsArray(ProductInstanceState),\r\n },\r\n cellStyle: stateStyle,\r\n width: 200,\r\n },\r\n {\r\n headerName: translate(\"generics.error\") as string,\r\n field: \"hiddenstate\",\r\n hide: true,\r\n valueGetter: (params: any) => {\r\n return StateValueGetter({ data: params.data, value: params.value })\r\n ?.props.children;\r\n },\r\n filter: \"agSetColumnFilter\",\r\n filterParams: {\r\n filterOptions: [\"contains\"],\r\n suppressAndOrCondition: true,\r\n values: CampUtils.getEnumAsArray(ProductInstanceState),\r\n },\r\n cellStyle: stateStyle,\r\n width: 200,\r\n },\r\n {\r\n headerName: translate(\"types.productInstance.firmware\") as string,\r\n field: \"instanceInformation.firmware\",\r\n valueGetter: (params: any) => {\r\n return FirmwareValueGetter({ data: params.data, value: params.value })\r\n ?.props.children;\r\n },\r\n cellStyle: stateStyle,\r\n width: 100,\r\n suppressMenu: true,\r\n },\r\n {\r\n headerName: translate(\r\n \"types.productInstance.holidayModeActive\"\r\n ) as string,\r\n field: \"instanceInformation.holidayModeActive\",\r\n valueGetter: (params: any) => {\r\n return HolidayModeValueGetter({ data: params.data, value: params.value })\r\n ?.props.children;\r\n },\r\n width: 150,\r\n sortable: false,\r\n suppressMenu: true,\r\n cellStyle: stateStyle,\r\n },\r\n {\r\n headerName: \"IoT\",\r\n field: \"product.productInformation.productType\",\r\n filter: \"agSetColumnFilter\",\r\n width: 100,\r\n filterParams: {\r\n filterOptions: [\"EQ\"],\r\n suppressAndOrCondition: true,\r\n values: CampUtils.getEnumAsArray(ProductType),\r\n },\r\n suppressMenu: true,\r\n hide: true,\r\n lockVisible: true,\r\n },\r\n {\r\n headerName: translate(\"types.common.serialNumber\") as string,\r\n field: \"serialNumber\",\r\n width: 150,\r\n cellStyle: stateStyle,\r\n },\r\n {\r\n headerName: translate(\"types.productInstance.installationDate\") as string,\r\n field: \"installationDate\",\r\n width: 200,\r\n cellRenderer: \"FormatDate\",\r\n cellStyle: stateStyle,\r\n },\r\n {\r\n headerName: translate(\"types.productInstance.registrationDate\") as string,\r\n field: \"registrationDate\",\r\n width: 180,\r\n cellRenderer: \"FormatDate\",\r\n cellStyle: stateStyle,\r\n },\r\n {\r\n headerName: translate(\"types.common.batchNumber\") as string,\r\n field: \"batchNumber\",\r\n cellStyle: stateStyle,\r\n width: 140,\r\n },\r\n {\r\n headerName: translate(\r\n \"pages.production.registrationCodeGrid.erpBatchNumber\"\r\n ) as string,\r\n field: \"erpBatchNumber\",\r\n cellStyle: stateStyle,\r\n width: 180,\r\n hide: true,\r\n },\r\n {\r\n headerName: translate(\"types.common.deviceId\") as string,\r\n field: \"deviceId\",\r\n cellStyle: stateStyle,\r\n width: 150,\r\n hide: true,\r\n },\r\n ];\r\n\r\n return columnDefs;\r\n};\r\n\r\ninterface CellRenderer {\r\n value: string;\r\n data: ProductInstanceResult;\r\n}\r\n\r\ninterface ValueGetter {\r\n value: string;\r\n data: ProductInstanceResult;\r\n}\r\n\r\nconst ProductInstanceLink: React.FC = ({ data, value }) => {\r\n if (!data) {\r\n return
    ;\r\n }\r\n return {value};\r\n};\r\n\r\nconst CustomerLink: React.FC = ({ data, value }) => {\r\n if (!(data && data.owner)) {\r\n return
    ;\r\n }\r\n return (\r\n {value}\r\n );\r\n};\r\n\r\nconst StateCell: React.FC = ({ data, value }) => {\r\n if (!data || data.state === \"NOT_SET\") {\r\n return
    ;\r\n }\r\n let stateTitle = \"\";\r\n if (data.instanceInformation?.__typename === \"PerlaInstanceInformation\") {\r\n stateTitle =\r\n data.instanceInformation.registeredPerlaInstanceInformation?.stateTitle ??\r\n \"\";\r\n } else if (\r\n data.instanceInformation?.__typename === \"SilkInstanceInformation\"\r\n ) {\r\n stateTitle = data.instanceInformation.state ?? \"\";\r\n }\r\n return
    {stateTitle}
    ;\r\n};\r\n\r\nconst StateValueGetter = ({ data, value }: ValueGetter) => {\r\n if (!data || data.state === \"NOT_SET\") {\r\n return
    ;\r\n }\r\n let stateTitle = \"\";\r\n if (data.instanceInformation?.__typename === \"PerlaInstanceInformation\") {\r\n stateTitle =\r\n data.instanceInformation.registeredPerlaInstanceInformation?.stateTitle ??\r\n \"\";\r\n } else if (\r\n data.instanceInformation?.__typename === \"SilkInstanceInformation\"\r\n ) {\r\n stateTitle = data.instanceInformation.state ?? \"\";\r\n }\r\n return
    {stateTitle}
    ;\r\n};\r\n\r\nconst FirmwareValueGetter = ({ data, value }: ValueGetter) => {\r\n if (!data) {\r\n return
    ;\r\n }\r\n let firmwareValue = \"\";\r\n if (data.instanceInformation?.__typename === \"PerlaInstanceInformation\") {\r\n firmwareValue =\r\n data.instanceInformation.registeredPerlaInstanceInformation?.firmware?.toString() ??\r\n \"\";\r\n }\r\n return
    {firmwareValue}
    ;\r\n};\r\n\r\nconst HolidayModeValueGetter = ({ data, value }: ValueGetter) => {\r\n if (!data) {\r\n return
    ;\r\n }\r\n let firmwareValue = \"\";\r\n if (data.instanceInformation?.__typename === \"PerlaInstanceInformation\") {\r\n firmwareValue =\r\n data.instanceInformation.registeredPerlaInstanceInformation?.holidayModeActive?.toString() ??\r\n \"\";\r\n }\r\n return
    {firmwareValue}
    ;\r\n};\r\n\r\nconst ServiceDateValueGetter = ({ data, value }: ValueGetter) => {\r\n if (!data) {\r\n return
    ;\r\n }\r\n let firmwareValue = \"\";\r\n if (data.instanceInformation?.__typename === \"PerlaInstanceInformation\") {\r\n firmwareValue =\r\n data.instanceInformation.registeredPerlaInstanceInformation?.nextServiceDate?.toString() ??\r\n \"\";\r\n }\r\n return
    {firmwareValue}
    ;\r\n};\r\n\r\nconst FormatDate: React.FC = ({ data, value }) => {\r\n if (!(data && value)) {\r\n return
    ;\r\n }\r\n return (\r\n \r\n {(translate) => {\r\n return (\r\n
    \r\n {format(\r\n new Date(value),\r\n translate.translate(\"generics.dateTimeFormatFNSShort\") as string\r\n )}\r\n
    \r\n );\r\n }}\r\n
    \r\n );\r\n};\r\n\r\nexport const ValueGetter = {\r\n StateValueGetter,\r\n HolidayModeValueGetter,\r\n ServiceDateValueGetter,\r\n FirmwareValueGetter,\r\n};\r\n\r\nexport const CellRenderer = {\r\n ProductInstanceLink,\r\n CustomerLink,\r\n StateCell,\r\n FormatDate,\r\n FirmwareIndicator,\r\n errorStatesFilter: ErrorStatesFilter,\r\n};\r\n","import React from 'react';\r\nimport { Translate } from 'react-localize-redux';\r\n\r\nimport { CircularProgress } from '@material-ui/core';\r\nimport { createStyles, Theme, makeStyles } from '@material-ui/core/styles';\r\n\r\nimport gql from \"graphql-tag\";\r\nimport { useQuery } from 'react-apollo';\r\nimport {\r\n productInstancePreview,\r\n productInstancePreviewVariables,\r\n productInstancePreview_productInstance_owner,\r\n productInstancePreview_productInstance_servicePartner,\r\n productInstancePreview_productInstance\r\n} from 'types/apolloGenerated/productInstancePreview';\r\nimport { Link } from 'react-router-dom';\r\n\r\nconst PREVIEW_BY_CODE = gql`\r\n query productInstancePreview(\r\n $productCode: String!\r\n ) {\r\n productInstance(productCode: $productCode) {\r\n\r\n productCode\r\n\r\n product {\r\n productInformation {\r\n name\r\n itemNumber\r\n }\r\n }\r\n\r\n registrationDate\r\n owner {\r\n userInformation {\r\n id\r\n key\r\n firstName\r\n lastName\r\n email\r\n }\r\n }\r\n \r\n servicePartner {\r\n id\r\n name\r\n email\r\n }\r\n \r\n instanceInformation {\r\n ... on PerlaInstanceInformation {\r\n serialNumber\r\n }\r\n }\r\n }\r\n }\r\n`;\r\n\r\n\r\n\r\nconst useStyles = makeStyles((theme: Theme) => {\r\n return createStyles({\r\n deviceSearchPreview: {\r\n marginBottom: \"20px\",\r\n display: \"flex\",\r\n\r\n '& > div': {\r\n marginRight: '24px',\r\n },\r\n }\r\n })\r\n});\r\n\r\n\r\n\r\n\r\n\r\ninterface DeviceSearchPreviewProps {\r\n productCode: string | null\r\n}\r\n\r\n\r\n\r\nconst DeviceSearchPreview: React.FC = ({ productCode }) => {\r\n const classes = useStyles();\r\n\r\n const isProdCodeFormat = productCode && /^[a-zA-Z0-9]{4}-[a-zA-Z0-9]{4}$/.test(productCode)\r\n\r\n const { data, loading, error } = useQuery(PREVIEW_BY_CODE, {\r\n variables: { productCode: productCode || '' },\r\n skip: !isProdCodeFormat\r\n });\r\n\r\n\r\n if (loading) {\r\n return
    \r\n }\r\n\r\n if (!isProdCodeFormat || !data || error) {\r\n return null;\r\n }\r\n\r\n\r\n return (\r\n
    \r\n {data.productInstance && showProduct(data.productInstance)}\r\n {data.productInstance?.owner && showOwner(data.productInstance?.owner)}\r\n {data.productInstance?.servicePartner && showPartner(data.productInstance?.servicePartner)}\r\n
    \r\n );\r\n};\r\n\r\n\r\nconst showProduct = (productInstance: productInstancePreview_productInstance) => (\r\n
    \r\n {productInstance.product?.productInformation?.name}
    \r\n \r\n {productInstance.productCode}
    \r\n {productInstance?.instanceInformation?.__typename === 'PerlaInstanceInformation'\r\n ? productInstance?.instanceInformation.serialNumber\r\n : null\r\n }\r\n \r\n
    \r\n)\r\n\r\nconst showOwner = (owner: productInstancePreview_productInstance_owner) => (\r\n
    \r\n
    \r\n {owner.userInformation?.firstName} {owner.userInformation?.lastName}
    \r\n {owner.userInformation?.email}\r\n
    \r\n)\r\n\r\nconst showPartner = (partner: productInstancePreview_productInstance_servicePartner) => (\r\n
    \r\n
    \r\n {partner.name}
    \r\n {partner.email}\r\n
    \r\n)\r\n\r\n\r\n\r\nexport default DeviceSearchPreview;\r\n","import React, { useState, useEffect, Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { bindActionCreators, Dispatch } from 'redux';\r\nimport { Translate } from 'react-localize-redux';\r\n\r\n\r\nimport { TextField } from '@material-ui/core';\r\nimport { createStyles, Theme, makeStyles } from '@material-ui/core/styles';\r\nimport { ToggleButtonGroup, ToggleButton } from '@material-ui/lab';\r\nimport { campColours } from 'themes/bwtColors';\r\n\r\nimport '@ag-grid-community/all-modules/dist/styles/ag-grid.css';\r\nimport '@ag-grid-community/all-modules/dist/styles/ag-theme-balham.css';\r\n\r\nimport debounce from 'debounce';\r\n\r\nimport { AppState } from 'redux/store';\r\nimport { State as OrgOverviewState } from 'redux/types/DeviceOverview';\r\nimport { setGridState, setColumnStates, search } from 'redux/actions/DeviceOverviewActions';\r\n\r\nimport { UserProfile } from 'types/ToolboxEntities';\r\n\r\nimport AgGrid from 'components/common/Grid/AgGrid';\r\nimport CountryFilter from 'components/common/CountryFilter';\r\nimport PageHeader from 'components/common/PageHeader';\r\nimport GridFilterHeader from 'components/common/Grid/GridFilterHeader';\r\n\r\nimport { getFilterValues } from 'util/AgGridUtils';\r\n\r\nimport { getColumnDefs, apolloConnectorBySearch, CellRenderer } from './GridConfig';\r\nimport DeviceSearchPreview from './DeviceSearchPreview';\r\n\r\nimport { ProductInstanceState } from 'types/apolloGenerated/globalTypes';\r\n\r\nconst useStyles = makeStyles((theme: Theme) => {\r\n return createStyles({\r\n deviceOverview: {\r\n display: 'flex',\r\n flexFlow: 'column',\r\n\r\n '& > .gridFilterHeader': {\r\n flex: '0 1 auto',\r\n },\r\n\r\n '& > .innerContent': {\r\n flex: '1 1 100%',\r\n height: '100%'\r\n },\r\n '& .ag-menu': {\r\n overflow: \"inherit\"\r\n },\r\n '& .hidden': {\r\n display: \"none\"\r\n },\r\n },\r\n\r\n innerHeaderRight: {\r\n flex: '0 1 auto',\r\n display: 'flex',\r\n alignItems: 'flex-end',\r\n margin: 0,\r\n\r\n '& > *': {\r\n flex: '0 1 auto',\r\n margin: '0 20px',\r\n minWidth: '170px',\r\n },\r\n },\r\n backgroundError: {\r\n \"&.Mui-selected\": {\r\n backgroundColor: campColours.backgroundError,\r\n \"&:hover\": {\r\n backgroundColor: campColours.bgErrorHover\r\n }\r\n },\r\n \"&:hover\": {\r\n backgroundColor: campColours.bgErrorHover\r\n }\r\n },\r\n backgroundWarn: {\r\n \"&.Mui-selected\": {\r\n backgroundColor: campColours.backgroundWarn,\r\n \"&:hover\": {\r\n backgroundColor: campColours.bgWarnHover\r\n }\r\n },\r\n \"&:hover\": {\r\n backgroundColor: campColours.bgWarnHover\r\n }\r\n },\r\n backgroundDiscon: {\r\n \"&.Mui-selected\": {\r\n backgroundColor: campColours.backgroundDiscon,\r\n \"&:hover\": {\r\n backgroundColor: campColours.bgDisconHover\r\n }\r\n },\r\n \"&:hover\": {\r\n backgroundColor: campColours.bgDisconHover\r\n }\r\n }\r\n })\r\n});\r\n\r\n\r\nconst debouncedSearch = debounce((searchTerm: string, oldSearchTerm: string | null, searchAction: typeof search) => {\r\n if (searchTerm.length >= 3) {\r\n searchAction(searchTerm);\r\n } else if (searchTerm.length === 0 && (oldSearchTerm === null || oldSearchTerm.length > 0)) {\r\n searchAction(null);\r\n }\r\n}, 500);\r\n\r\n\r\ninterface DeviceListPara {\r\n user: UserProfile | null\r\n deviceOverviewState: OrgOverviewState\r\n actions: {\r\n setGridState: typeof setGridState\r\n setColumnStates: typeof setColumnStates\r\n search: typeof search\r\n }\r\n}\r\n\r\nconst DeviceList: React.FC = ({ user, deviceOverviewState, actions }) => {\r\n const classes = useStyles();\r\n const [search, setSearch] = useState(deviceOverviewState.search || \"\");\r\n const [apolloConnector, setApolloConnector] = useState>(apolloConnectorBySearch(deviceOverviewState.search));\r\n const [statesFilter, setStatesFilter] = useState([\"\"]);\r\n\r\n useEffect(() => {\r\n setApolloConnector(apolloConnectorBySearch(deviceOverviewState.search));\r\n }, [deviceOverviewState.search]);\r\n\r\n\r\n if (!user) {\r\n return null;\r\n }\r\n\r\n const gridState = deviceOverviewState.grid;\r\n\r\n const changeFilter = (filterName: string, newFilterValues: string[] | false) => {\r\n const newFilter = Object.assign({}, gridState.filterModel);\r\n if (newFilterValues !== false) {\r\n newFilter[filterName] = {\r\n filterType: \"set\",\r\n values: newFilterValues\r\n };\r\n } else {\r\n delete newFilter[filterName];\r\n }\r\n actions.setGridState(gridState.page, gridState.sortModel, newFilter);\r\n }\r\n\r\n const changeTypeFilter = (event: React.MouseEvent, value: any) => {\r\n let newFilterValues = value as string[];\r\n if (newFilterValues.length === 0 || newFilterValues.length === 2) {\r\n newFilterValues = []\r\n } else if (newFilterValues.includes(\"IoT\")) {\r\n newFilterValues = [\"SILK_IOT\", \"PERLA_IOT\"]\r\n } else {\r\n newFilterValues = [\"DEFAULT\", \"POOL\", \"WATER_DISPENSER\"]\r\n }\r\n\r\n changeFilter(\r\n 'product.productInformation.productType',\r\n newFilterValues.length > 1 && newFilterValues.length < 4 && newFilterValues\r\n );\r\n };\r\n\r\n const filter = gridState.filterModel[\"product.productInformation.productType\"]\r\n const selectedTypes = filter && getFilterValues(filter).length === 3 ? ['NonIoT'] : filter && getFilterValues(filter).length === 2 ? ['IoT'] : [];\r\n\r\n const changeStateFilter = (event: React.MouseEvent, value: any) => {\r\n let newFilterValues = value as string[];\r\n if (newFilterValues.toString() === statesFilter.toString()) {\r\n newFilterValues = [];\r\n }\r\n setStatesFilter(newFilterValues);\r\n let buttonCnt = event.currentTarget.parentElement!.childNodes.length;\r\n changeFilter(\r\n \"hiddenstate\",\r\n newFilterValues.length > 0 &&\r\n newFilterValues.length < buttonCnt &&\r\n newFilterValues\r\n );\r\n };\r\n\r\n const selectedStates = gridState.filterModel.hiddenstate\r\n ? getFilterValues(gridState.filterModel.hiddenstate)\r\n : [];\r\n\r\n const changeCountryFilter = (newFilterValues: string[]) => {\r\n changeFilter(\r\n \"address.countryCode\",\r\n newFilterValues.length > 0 &&\r\n newFilterValues.length < user.allowedCountries.length &&\r\n newFilterValues\r\n );\r\n };\r\n\r\n const selectedCountries = gridState.filterModel[\"address.countryCode\"]\r\n ? getFilterValues(gridState.filterModel[\"address.countryCode\"])\r\n : user.allowedCountries;\r\n\r\n const changeSearch = (event: React.ChangeEvent) => {\r\n setSearch(event.target.value);\r\n debouncedSearch(event.target.value, deviceOverviewState.search, actions.search);\r\n }\r\n\r\n return (\r\n {({ translate }) => (\r\n \r\n \r\n\r\n
    \r\n \r\n \r\n\r\n
    \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n
    \r\n
    \r\n\r\n \r\n\r\n
    \r\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 = (appState: AppState) => ({\r\n user: appState.auth.user,\r\n deviceOverviewState: appState.deviceOverview\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch: Dispatch) => ({\r\n actions: bindActionCreators({ setGridState, setColumnStates, search }, dispatch),\r\n});\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(DeviceList);\r\n","import React, { useState } from \"react\";\r\nimport {\r\n Map,\r\n GoogleApiWrapper,\r\n GoogleAPI,\r\n Marker,\r\n MapProps\r\n} from \"google-maps-react\";\r\nimport { createStyles, makeStyles } from \"@material-ui/core/styles\";\r\nimport Box from \"@material-ui/core/Box\";\r\nimport { GeoLocationInput } from \"types/apolloGenerated/globalTypes\";\r\nimport cursor from \"resources/maps-cursor.png\";\r\n\r\nconst useStyles = makeStyles(() => {\r\n return createStyles({\r\n latlng: {\r\n position: \"absolute\",\r\n bottom: \"-25px\",\r\n \"& span:first-child\": {\r\n paddingRight: 15\r\n }\r\n },\r\n cursor: {\r\n zIndex: 999,\r\n height: \"50px\",\r\n width: \"50px\",\r\n top: \"50%\",\r\n left: \"50%\",\r\n position: \"absolute\",\r\n transform: \"translate(-50%, -50%)\",\r\n pointerEvents: \"none\"\r\n }\r\n });\r\n});\r\n\r\ninterface MapData {\r\n google: GoogleAPI;\r\n location?: GeoLocationInput | null;\r\n onChange: (value: any) => void;\r\n}\r\n\r\nconst GoogleMap: React.FC = ({ google, location, onChange }) => {\r\n const classes = useStyles();\r\n\r\n const center = location\r\n ? { lat: location.latitude, lng: location.longitude }\r\n : { lat: 0, lng: 0 };\r\n\r\n const [position, setPosition] = useState<{ state: string; location: any }>({\r\n state: \"loading\",\r\n location: center\r\n });\r\n\r\n const [positionText, setPositionText] = useState<{\r\n lat: number;\r\n lng: number;\r\n }>({\r\n lat: center.lat,\r\n lng: center.lng\r\n });\r\n\r\n const [zoom, setZoom] = useState(location ? 18 : 1);\r\n\r\n const [showCursor, setShowCursor] = useState(false);\r\n\r\n const mapChangeFunc = (\r\n evt: MapProps | undefined,\r\n map: google.maps.Map | undefined\r\n ) => {\r\n const newLocation = {\r\n lat: map ? map.getCenter().lat() : 0,\r\n lng: map ? map.getCenter().lng() : 0\r\n };\r\n setPosition({\r\n state: map ? \"correct\" : \"notFound\",\r\n location: newLocation\r\n });\r\n setPositionText(newLocation);\r\n\r\n if (map && evt) {\r\n if (evt.zoom !== map.getZoom()) {\r\n setZoom(map.getZoom());\r\n }\r\n }\r\n onChange({ latitude: newLocation.lat, longitude: newLocation.lng });\r\n };\r\n\r\n return (\r\n \r\n {\r\n mapChangeFunc(evt, map);\r\n }}\r\n onMouseover={() => setShowCursor(true)}\r\n onMouseout={() => setShowCursor(false)}\r\n >\r\n \r\n \r\n \r\n \r\n lat: {positionText.lat.toPrecision(12)}\r\n lng: {positionText.lng.toPrecision(12)}\r\n \r\n \r\n );\r\n};\r\n\r\nexport const getLocationFromAddress = (\r\n address: string,\r\n callback: (newState: string, newLocation?: GeoLocationInput) => void\r\n) => {\r\n if (window.google) {\r\n const geocoder = new google.maps.Geocoder();\r\n geocoder.geocode({ address: address }, (results, status) => {\r\n if (status === google.maps.GeocoderStatus.OK) {\r\n callback(status, {\r\n latitude: results[0].geometry.location.lat(),\r\n longitude: results[0].geometry.location.lng()\r\n });\r\n } else {\r\n let state = `Error with Geocode: ${status}`;\r\n if (status === google.maps.GeocoderStatus.ZERO_RESULTS)\r\n state = \"address not found\";\r\n callback(state);\r\n }\r\n });\r\n }\r\n};\r\n\r\nexport default GoogleApiWrapper({\r\n apiKey: \"AIzaSyCWlZ_Cq39bF7vr_x7lhNS_Z6u5uAM9F1M\"\r\n})(GoogleMap);\r\n","import React, { useState, Fragment } from \"react\";\r\nimport { Translate } from \"react-localize-redux\";\r\nimport { useMutation } from \"@apollo/react-hooks\";\r\nimport gql from \"graphql-tag\";\r\n\r\nimport {\r\n createStyles,\r\n Theme,\r\n makeStyles,\r\n withStyles\r\n} from \"@material-ui/core/styles\";\r\nimport colours from \"themes/bwtColors\";\r\n\r\nimport CloseIcon from \"@material-ui/icons/Close\";\r\nimport Box from \"@material-ui/core/Box\";\r\nimport Link from \"@material-ui/core/Link\";\r\nimport TextField from \"@material-ui/core/TextField\";\r\nimport Button from \"@material-ui/core/Button\";\r\nimport Dialog from \"@material-ui/core/Dialog\";\r\nimport MuiDialogContent from \"@material-ui/core/DialogContent\";\r\nimport MuiDialogTitle from \"@material-ui/core/DialogTitle\";\r\n\r\nimport GoogleMap, { getLocationFromAddress } from \"./GoogleMap\";\r\n\r\nimport {\r\n updateProductInstanceAddress as MutationData,\r\n updateProductInstanceAddressVariables as MutationVars\r\n} from \"types/apolloGenerated/updateProductInstanceAddress\";\r\n\r\nimport {\r\n ProductInstanceAddressUpdateInput,\r\n Country,\r\n GeoLocationInput\r\n} from \"types/apolloGenerated/globalTypes\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) => {\r\n return createStyles({\r\n closeButton: {\r\n position: \"absolute\",\r\n top: \"0px\",\r\n right: \"0px\",\r\n margin: \"6px\",\r\n cursor: \"pointer\"\r\n },\r\n spacing: {\r\n marginRight: \"10px\"\r\n },\r\n button: {\r\n backgroundColor: colours.arctic\r\n },\r\n uppercase: {\r\n textTransform: \"uppercase\"\r\n },\r\n overlay: {\r\n position: \"relative\",\r\n textAlign: \"center\",\r\n verticalAlign: \"middle\",\r\n lineHeight: \"400px\",\r\n background: \"rgba(0, 0, 0, 0.5)\",\r\n color: \"white\",\r\n fontSize: \"20px\",\r\n textTransform: \"uppercase\"\r\n }\r\n });\r\n});\r\n\r\nconst DialogTitle = withStyles((theme: Theme) => ({\r\n root: {\r\n padding: 10\r\n }\r\n}))(MuiDialogTitle);\r\n\r\nconst DialogContent = withStyles((theme: Theme) => ({\r\n root: {\r\n padding: 0\r\n }\r\n}))(MuiDialogContent);\r\n\r\nconst MUTATION = gql`\r\n mutation updateProductInstanceAddress(\r\n $address: ProductInstanceAddressUpdateInput!\r\n ) {\r\n productInstance {\r\n updateProductInstanceAddress(address: $address) {\r\n id\r\n street\r\n postalCode\r\n city\r\n countryCode\r\n location {\r\n latitude\r\n longitude\r\n }\r\n }\r\n }\r\n }\r\n`;\r\n\r\nconst DeviceLocationModal: React.FC<{\r\n existingAddress: ProductInstanceAddressUpdateInput;\r\n}> = ({ existingAddress }) => {\r\n const classes = useStyles();\r\n\r\n const [open, setOpen] = React.useState(false);\r\n\r\n const handleClickOpen = () => {\r\n setOpen(true);\r\n };\r\n const handleClose = () => {\r\n setOpen(false);\r\n };\r\n\r\n const [addressUpdateInput, setAddressUpdateInput] = useState<\r\n ProductInstanceAddressUpdateInput\r\n >(existingAddress);\r\n\r\n function locationUpdate(address: ProductInstanceAddressUpdateInput): void {\r\n if (\r\n address.countryCode &&\r\n (address.postalCode || (address.street && address.city))\r\n ) {\r\n const addressString = `${address.street} ${address.city} ${address.postalCode} ${address.countryCode}`;\r\n getLocationFromAddress(addressString, (newState, newLocation) => {\r\n setState(newState);\r\n if (newState === \"OK\") {\r\n setAddressUpdateInput({\r\n ...addressUpdateInput,\r\n location: newLocation\r\n });\r\n }\r\n });\r\n }\r\n }\r\n\r\n const [updateAddress, { loading }] = useMutation(\r\n MUTATION\r\n );\r\n\r\n const [state, setState] = useState(loading ? \"loading\" : \"OK\");\r\n\r\n const addressInputUpdater = (\r\n applyValue: (value: string) => ProductInstanceAddressUpdateInput\r\n ) => (e: any) => {\r\n const newInput = applyValue(e.target.value);\r\n console.log(newInput, addressUpdateInput)\r\n if (deeplyEqual(newInput, addressUpdateInput)) {\r\n locationUpdate(newInput);\r\n }\r\n setAddressUpdateInput(newInput);\r\n };\r\n\r\n return (\r\n \r\n \r\n {`${existingAddress.street}, ${existingAddress.postalCode} ${existingAddress.city} ${existingAddress.countryCode}\\n${existingAddress.location?.latitude}, ${existingAddress.location?.longitude}`}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n setAddressUpdateInput({\r\n ...addressUpdateInput,\r\n location: value\r\n });\r\n updateAddress({\r\n variables: { address: addressUpdateInput }\r\n });\r\n }}\r\n />\r\n {state !== \"OK\" && (\r\n \r\n {state}\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n ({\r\n ...addressUpdateInput,\r\n street: value\r\n }))}\r\n />\r\n \r\n \r\n \r\n ({\r\n ...addressUpdateInput,\r\n postalCode: value\r\n }))}\r\n />\r\n \r\n \r\n \r\n ({\r\n ...addressUpdateInput,\r\n city: value\r\n }))}\r\n />\r\n \r\n \r\n \r\n \r\n ({\r\n ...addressUpdateInput,\r\n countryCode: stringToCountryCode(value)\r\n }))}\r\n />\r\n {\r\n updateAddress({\r\n variables: { address: addressUpdateInput }\r\n });\r\n locationUpdate(addressUpdateInput);\r\n }}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nfunction stringToCountryCode(str: string): Country | null {\r\n return Object.values(Country).find(x => x === str.toUpperCase()) || null;\r\n}\r\n\r\nfunction inputChanged(\r\n input: ProductInstanceAddressUpdateInput,\r\n existing: ProductInstanceAddressUpdateInput\r\n): boolean {\r\n return deeplyEqual(input, existing);\r\n}\r\n\r\nfunction deeplyEqual(\r\n a: ProductInstanceAddressUpdateInput,\r\n b: ProductInstanceAddressUpdateInput\r\n): boolean {\r\n if (a.street && a.street !== b.street) return false;\r\n if (a.postalCode && a.postalCode !== b.postalCode) return false;\r\n if (a.city && a.city !== b.city) return false;\r\n if (a.countryCode && a.countryCode !== b.countryCode) return false;\r\n return true;\r\n}\r\n\r\nexport default DeviceLocationModal;\r\n","import gql from 'graphql-tag';\r\n\r\nconst UPDATE_TEST_FLAG_MUTATION = gql `mutation updateTestFlag($productCode: String!, $isTestFlag: Boolean!) {\r\n productInstance {\r\n updateProductInstanceTestFlag(productCode: $productCode, isTestFlag: $isTestFlag)\r\n }\r\n}`\r\n\r\nexport default UPDATE_TEST_FLAG_MUTATION;","import React, { Fragment, useState } from \"react\";\r\n\r\nimport gql from \"graphql-tag\";\r\nimport { createStyles, Theme, makeStyles } from \"@material-ui/core/styles\";\r\nimport { useMutation } from \"@apollo/react-hooks\";\r\nimport { useLazyQuery } from \"@apollo/react-hooks\";\r\n\r\nimport Typography from \"@material-ui/core/Typography\";\r\nimport Box from \"@material-ui/core/Box\";\r\nimport Link from \"@material-ui/core/Link\";\r\nimport Grid from \"@material-ui/core/Grid\";\r\nimport ClickAwayListener from \"@material-ui/core/ClickAwayListener\";\r\nimport HelpIcon from \"@material-ui/icons/Help\";\r\nimport { DeleteForever } from \"@material-ui/icons\";\r\nimport { ErrorRounded } from \"@material-ui/icons\";\r\n\r\nimport { open as requestLogOpen } from \"redux/actions/DeviceActions/RequestLogActions\";\r\nimport { open as resetActivationOpen } from \"redux/actions/DeviceActions/ResetActivationActions\";\r\nimport { open as resetInstallerOpen } from \"redux/actions/DeviceActions/ResetInstallerActions\";\r\nimport CircularProgress from \"@material-ui/core/CircularProgress\";\r\nimport { connect } from \"react-redux\";\r\nimport { bindActionCreators, Dispatch } from \"redux\";\r\nimport { UserActionClass } from \"types/apolloGenerated/globalTypes\";\r\n\r\nimport {\r\n Done,\r\n RotateLeft,\r\n Clear,\r\n CloudDownload,\r\n FlashOn,\r\n} from \"@material-ui/icons\";\r\n\r\nimport {\r\n resetState as ResetStateMutationData,\r\n resetStateVariables as ResetStateMutationVars,\r\n} from \"types/apolloGenerated/resetState\";\r\n\r\nimport colours from \"themes/bwtColors\";\r\n\r\nimport { Translate } from \"react-localize-redux\";\r\nimport format from \"date-fns/format\";\r\nimport addYears from \"date-fns/addYears\";\r\n\r\nimport DeviceLocationModal from \"./DeviceLocationModal\";\r\n\r\nimport {\r\n productInstanceAndCustomerDetails_productInstance_instanceInformation_PerlaInstanceInformation_accessCodes as accessCodeObj,\r\n productInstanceAndCustomerDetails_productInstance as ProductInstance,\r\n productInstanceAndCustomerDetails_productInstance_instanceInformation_ProductInstanceInformation_userActions as UserActions,\r\n} from \"types/apolloGenerated/productInstanceAndCustomerDetails\";\r\nimport {\r\n FormControl,\r\n IconButton,\r\n MenuItem,\r\n Popper,\r\n Select,\r\n Tooltip,\r\n} from \"@material-ui/core\";\r\n\r\nimport {\r\n perlaTimedRawData,\r\n perlaTimedRawDataVariables,\r\n} from \"types/apolloGenerated/perlaTimedRawData\";\r\nimport PageDialog from \"../../../components/common/PageDialog\";\r\nimport UPDATE_TEST_FLAG_MUTATION from \"../../../commonQueries/updateTestFlag\";\r\n\r\nconst DOWNLOAD_RAW_IOT = gql`\r\n query perlaTimedRawData($deviceId: String!, $fromDate: DateTimeOffset!) {\r\n perlaTimedRawData(deviceId: $deviceId, fromDate: $fromDate) {\r\n telemetry\r\n event\r\n summary\r\n }\r\n }\r\n`;\r\n\r\nconst RESET_STATE = gql`\r\n mutation resetState($productCode: String!) {\r\n productInstance {\r\n perla {\r\n resetState(productCode: $productCode)\r\n }\r\n }\r\n }\r\n`;\r\n\r\nconst useStyles = makeStyles((theme: Theme) => {\r\n return createStyles({\r\n appSymbol: {\r\n verticalAlign: \"middle\",\r\n display: \"inline-flex\",\r\n },\r\n icon: {\r\n marginRight: \"10px\",\r\n verticalAlign: \"top\",\r\n },\r\n spacing: {\r\n paddingRight: \"10px\",\r\n },\r\n dataItem: {\r\n maxWidth: \"80%\",\r\n },\r\n dataItemInst: {\r\n textAlign: \"right\",\r\n },\r\n inactiveIcon: {\r\n marginRight: \"10px\",\r\n verticalAlign: \"top\",\r\n color: \"#bbb\",\r\n },\r\n inactiveLink: {\r\n color: \"#bbb\",\r\n \"&:hover\": {\r\n cursor: \"default\",\r\n },\r\n },\r\n popper: {\r\n border: \"1px solid #ccc\",\r\n boxShadow: \"2px 2px 2px 1px rgba(0, 0, 0, 0.2)\",\r\n backgroundColor: \"#fff\",\r\n },\r\n paper: {\r\n padding: theme.spacing(1),\r\n \"&:hover\": {\r\n backgroundColor: \"#eee\",\r\n },\r\n },\r\n testDeviceFormControl: {\r\n minWidth: 60,\r\n },\r\n warrantyContainer: {\r\n height: \"20px\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n },\r\n });\r\n});\r\n\r\nfunction reformat(dateStr: string | null, short: boolean = false) {\r\n if (!dateStr) return \"-\";\r\n if (short) {\r\n return (\r\n \r\n {(translate) => {\r\n return (\r\n
    \r\n {format(\r\n new Date(dateStr),\r\n translate.translate(\"generics.dateTimeFormatFNSShort\") as string\r\n )}\r\n
    \r\n );\r\n }}\r\n
    \r\n );\r\n } else {\r\n return (\r\n \r\n {(translate) => {\r\n return (\r\n
    \r\n {format(\r\n new Date(dateStr),\r\n translate.translate(\"generics.dateTimeFormatFNS\") as string\r\n )}\r\n
    \r\n );\r\n }}\r\n
    \r\n );\r\n }\r\n}\r\n\r\nconst warrantyLength = (articleNumber: string) => {\r\n switch (articleNumber) {\r\n case \"RE2D-MRDB-PLS1E\":\r\n case \"1018300\": //P600\r\n return 4;\r\n case \"REFD-HURB-KSP97\":\r\n case \"RE2D-HURB-KPS97\":\r\n case \"RERD-HURB-KPL97\":\r\n case \"RERD-HRCB-WRP97\":\r\n case \"RE2D-HRCB-WRP97\":\r\n case \"REFO-MRD0-PPL1E\":\r\n case \"REMD-MRDB-PFR1E\":\r\n case \"RE2D-TRNB-T401E\":\r\n case \"RERD-TRNB-T501E\":\r\n return 3;\r\n case \"REFL-FOR0-FRC97\":\r\n case \"REFL-FOR0-F1097\":\r\n case \"RE2B-FOR0-F2097\":\r\n case \"REFL-RIOB-U1097\":\r\n case \"RE2B-RINB-U2097\":\r\n case \"RERD-RINB-U3097\":\r\n case \"1016500\": //B100\r\n case \"RE2B-SWA0-BPL1E\":\r\n case \"REFO-PEL0-PRB1E\":\r\n case \"RE2D-PELB-PWT1E\":\r\n case \"1016300\": //D300\r\n case \"REFD-TRNB-T301E\":\r\n case \"RE2D-PELB-CIL1E\":\r\n case \"RERD-PELB-CIL1E\":\r\n default:\r\n return 2;\r\n }\r\n};\r\n\r\ninterface DeviceDataProps {\r\n productInstance: ProductInstance | null;\r\n rndPermission?: boolean | null;\r\n campRnd?: boolean | null;\r\n}\r\n\r\nconst DeviceData: React.FC = ({\r\n productInstance,\r\n rndPermission,\r\n campRnd,\r\n}) => {\r\n const classes = useStyles();\r\n const [openState, setOpenState] = React.useState(false);\r\n\r\n const itemNumberObj = {\r\n penguin: [\"815070\"],\r\n e1: [\r\n \"810384\",\r\n \"820382\",\r\n \"820383\",\r\n \"820435\",\r\n \"820384\",\r\n \"820385\",\r\n \"820387\",\r\n \"840382\",\r\n \"840384\",\r\n \"840385\",\r\n ],\r\n nonIotPerla: [\"082028\", \"082040\"],\r\n };\r\n\r\n const [resetState, { loading }] = useMutation<\r\n ResetStateMutationData,\r\n ResetStateMutationVars\r\n >(RESET_STATE, {\r\n onCompleted: () => {\r\n setOpenState(false);\r\n },\r\n });\r\n\r\n const {\r\n productCode = \"\",\r\n dataSharedWithPartner = false,\r\n installationDate,\r\n registrationDate,\r\n instanceInformation,\r\n batchNumber,\r\n erpBatchNumber,\r\n customerSelectedInstaller,\r\n servicePartner,\r\n owner = null,\r\n address = null,\r\n serialNumber,\r\n isTestDevice = false,\r\n } = productInstance || {};\r\n\r\n const itemNumber = productInstance?.product?.productInformation?.itemNumber;\r\n\r\n const { id: installerId, name: installerName } = servicePartner || {};\r\n const { id: partnerId, name: partnerName } = customerSelectedInstaller || {};\r\n\r\n const { userInformation } = owner || {};\r\n\r\n let instanceType: string = \"\";\r\n let firmware: number | null | undefined = 0;\r\n let holidayModeActive: boolean | null | undefined = false;\r\n let wPA2Key: string = \"\";\r\n let deviceId: string = \"\";\r\n let fromDate: string = \"\";\r\n let lastTelemetryDateStr: string = \"\";\r\n let ballValveOpen: boolean | null | undefined = false;\r\n let nextCustomerMaintainance: string = \"\";\r\n let nextServiceDate: string = \"\";\r\n let accessCodes: (accessCodeObj | null)[] = [];\r\n let isIot = true;\r\n let userActions: (UserActions | null)[] | null = [];\r\n\r\n if (instanceInformation != null) {\r\n if (instanceInformation.__typename === \"PerlaInstanceInformation\") {\r\n instanceType = userInformation ? \"iot\" : \"not-reg\";\r\n ({ wPA2Key, deviceId } = instanceInformation || {});\r\n ({\r\n firmware,\r\n holidayModeActive,\r\n nextCustomerMaintainance,\r\n nextServiceDate,\r\n ballValveOpen,\r\n } = instanceInformation.registeredPerlaInstanceInformation || {});\r\n lastTelemetryDateStr = instanceInformation?.telemetry?.value?.date ?? \"\";\r\n accessCodes = instanceInformation?.accessCodes ?? [];\r\n } else if (instanceInformation.__typename === \"SilkInstanceInformation\") {\r\n } else {\r\n isIot = false;\r\n instanceType = \"not-iot\";\r\n userActions = instanceInformation?.userActions;\r\n //E1\r\n if (itemNumberObj.e1.includes(itemNumber?.trim() ?? \"\")) {\r\n if (userActions) {\r\n userActions.forEach((action) => {\r\n if (\r\n action?.userActionClass ===\r\n UserActionClass.FIXED_INTERVAL_HALF_YEAR\r\n ) {\r\n nextCustomerMaintainance = action?.end;\r\n }\r\n });\r\n }\r\n }\r\n //Penguin\r\n if (itemNumberObj.penguin.includes(itemNumber?.trim() ?? \"\")) {\r\n if (userActions) {\r\n userActions.forEach((action) => {\r\n if (\r\n action?.userActionClass === UserActionClass.FIXED_INTERVAL_MONTHLY\r\n ) {\r\n nextCustomerMaintainance = action?.end;\r\n }\r\n });\r\n }\r\n }\r\n //Non-Iot perla\r\n if (itemNumberObj.nonIotPerla.includes(itemNumber?.trim() ?? \"\")) {\r\n if (userActions) {\r\n userActions.forEach((action) => {\r\n if (\r\n action?.userActionClass ===\r\n UserActionClass.FIXED_INTERVAL_THREE_YEARS\r\n ) {\r\n nextServiceDate = action?.end;\r\n }\r\n if (\r\n action?.userActionClass === UserActionClass.CONSUMABLE_REFILLMENT\r\n ) {\r\n nextCustomerMaintainance = action?.end;\r\n }\r\n });\r\n }\r\n }\r\n }\r\n }\r\n\r\n const [anchorEl, setAnchorEl] = React.useState(null);\r\n const [open, setOpen] = React.useState(false);\r\n const [placement, setPlacement] = React.useState();\r\n\r\n const handleClick = (newPlacement: any) => (event: any) => {\r\n let anchorTarget = event.currentTarget;\r\n if (open) {\r\n anchorTarget = null;\r\n }\r\n setAnchorEl(anchorTarget);\r\n setPlacement(newPlacement);\r\n setOpen((prev) => placement !== newPlacement || !prev);\r\n };\r\n\r\n const id = open ? \"simple-popper\" : undefined;\r\n\r\n const getAccessCode = (ac: (accessCodeObj | null)[], value: string) => {\r\n for (let i = 0; i < ac.length; i++) {\r\n if (ac[i]?.accessLevel === value) return ac[i]?.code;\r\n }\r\n return \"\";\r\n };\r\n\r\n interface RequestLogTrigger {\r\n actions: { requestLogOpen: typeof requestLogOpen };\r\n }\r\n\r\n const RequestLogButton = connect(null, (dispatch: Dispatch) => ({\r\n actions: bindActionCreators({ requestLogOpen }, dispatch),\r\n }))(({ actions }: RequestLogTrigger) => (\r\n {\r\n actions.requestLogOpen(productCode);\r\n }}\r\n >\r\n \r\n \r\n ));\r\n\r\n interface ResetActivationTrigger {\r\n actions: { resetActivationOpen: typeof resetActivationOpen };\r\n }\r\n\r\n const ResetActivationButton = connect(null, (dispatch: Dispatch) => ({\r\n actions: bindActionCreators({ resetActivationOpen }, dispatch),\r\n }))(({ actions }: ResetActivationTrigger) => (\r\n {\r\n actions.resetActivationOpen(productCode);\r\n }}\r\n >\r\n \r\n \r\n ));\r\n\r\n interface ResetInstallerTrigger {\r\n actions: { resetInstallerOpen: typeof resetInstallerOpen };\r\n }\r\n\r\n const ResetInstaller = connect(null, (dispatch: Dispatch) => ({\r\n actions: bindActionCreators({ resetInstallerOpen }, dispatch),\r\n }))(({ actions }: ResetInstallerTrigger) => (\r\n {\r\n actions.resetInstallerOpen(productCode);\r\n }}\r\n >\r\n \r\n \r\n ));\r\n\r\n const closePopper = () => {\r\n setOpen(false);\r\n };\r\n\r\n const [rawDownloadAble, setRawDownloadAble] = useState(false);\r\n\r\n const [\r\n getRaw,\r\n { error: rawIotError, data: rawIot, loading: rawIotLoading },\r\n ] = useLazyQuery(\r\n DOWNLOAD_RAW_IOT,\r\n {\r\n variables: { deviceId: deviceId, fromDate: fromDate }, //\"2000-01-01 00:00:00\"\r\n }\r\n );\r\n\r\n const dateTimeLastReceivedData = lastTelemetryDateStr\r\n ? new Date(lastTelemetryDateStr)\r\n : new Date();\r\n\r\n dateTimeLastReceivedData.setDate(dateTimeLastReceivedData.getDate() - 30);\r\n const fromDate30 = dateTimeLastReceivedData\r\n .toISOString()\r\n .replace(/T/, \" \")\r\n .replace(/\\..+/, \"\");\r\n\r\n dateTimeLastReceivedData.setDate(dateTimeLastReceivedData.getDate() - 150);\r\n const fromDate180 = dateTimeLastReceivedData\r\n .toISOString()\r\n .replace(/T/, \" \")\r\n .replace(/\\..+/, \"\");\r\n\r\n if (rawIotError) {\r\n console.log(\"rawIotError\", rawIotError);\r\n }\r\n\r\n const downloadRawIot = (JSONString: string, type: string) => {\r\n closePopper();\r\n const x = window.open();\r\n\r\n if (x) {\r\n if (JSONString.length > 2) {\r\n x.document.open();\r\n x.document.write(\r\n \"\" +\r\n type +\r\n \":
    \" +\r\n            JSONString +\r\n            \"
    \"\r\n );\r\n x.document.close();\r\n } else if (x) {\r\n x.document.open();\r\n x.document.write(\r\n \"No \" + type + \" data available
    \"\r\n );\r\n x.document.close();\r\n }\r\n }\r\n setRawDownloadAble(false);\r\n };\r\n\r\n if (rawIot && rawDownloadAble) {\r\n const rawEvents = JSON.stringify(rawIot?.perlaTimedRawData?.event, null, 2)\r\n .replace(/\\\\\"/g, '\"')\r\n .replace(/\\\\\"/g, '\"')\r\n .replace(/\\\\\"/g, '\"');\r\n const rawEventsWithoutQuotes = rawEvents; //.substring(1, rawEvents.length - 1);\r\n\r\n downloadRawIot(\r\n rawEventsWithoutQuotes\r\n .replace(/\"{/g, \"{\")\r\n .replace(/\\}\"/g, \"}\")\r\n .replace(/\\\\\"/g, '\"'),\r\n \"notification\"\r\n );\r\n downloadRawIot(\r\n JSON.stringify(rawIot?.perlaTimedRawData?.telemetry, null, 2)\r\n .replace(/\"{/g, \"{\")\r\n .replace(/\\}\"/g, \"}\")\r\n .replace(/\\\\\"/g, '\"'),\r\n \"telemetry\"\r\n );\r\n downloadRawIot(\r\n JSON.stringify(rawIot?.perlaTimedRawData?.summary, null, 2)\r\n .replace(/\"{/g, \"{\")\r\n .replace(/\\}\"/g, \"}\")\r\n .replace(/\\\\\"/g, '\"'),\r\n \"summary\"\r\n );\r\n }\r\n\r\n const downloadRaw30 = () => {\r\n setRawDownloadAble(true);\r\n getRaw({ variables: { deviceId: deviceId, fromDate: fromDate30 } });\r\n //console.log(\"RAW30: \", rawIot);\r\n };\r\n\r\n const downloadRaw180 = () => {\r\n setRawDownloadAble(true);\r\n getRaw({ variables: { deviceId: deviceId, fromDate: fromDate180 } });\r\n //console.log(\"RAW180: \", rawIot);\r\n };\r\n\r\n const downloadRawAll = () => {\r\n setRawDownloadAble(true);\r\n getRaw({\r\n variables: { deviceId: deviceId, fromDate: \"2000-01-01 00:00:00\" },\r\n });\r\n //console.log(\"RAW_ALL: \", rawIot);\r\n };\r\n\r\n const commonLeft = () => {\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 const perlaLeft = () => {\r\n return (\r\n \r\n \r\n \r\n {firmware}\r\n \r\n \r\n }\r\n />\r\n \r\n \r\n \r\n \r\n {instanceType === \"iot\" && (\r\n \r\n ) : (\r\n \r\n )\r\n }\r\n />\r\n )}\r\n \r\n );\r\n };\r\n\r\n function RegisteredPerlaOrDumbDeviceRight() {\r\n const [isTest, setIsTest] = React.useState(isTestDevice);\r\n const [open, setOpen] = React.useState(false);\r\n\r\n const [updateTestDevice] = useMutation(UPDATE_TEST_FLAG_MUTATION);\r\n\r\n const handleChange = (event: React.ChangeEvent<{ value: unknown }>) => {\r\n setIsTest(event.target.value as boolean);\r\n updateTestDevice({\r\n variables: {\r\n productCode: productCode.toString(),\r\n isTestFlag: event.target.value as boolean,\r\n },\r\n });\r\n };\r\n\r\n const handleClose = () => {\r\n setOpen(false);\r\n };\r\n\r\n const handleOpen = () => {\r\n setOpen(true);\r\n };\r\n return (\r\n \r\n \r\n \r\n {instanceType === \"iot\" && (\r\n \r\n )}\r\n {isIot ||\r\n itemNumberObj.nonIotPerla.includes(itemNumber?.trim() ?? \"\") ? (\r\n \r\n ) : (\r\n \r\n )}\r\n {isIot ||\r\n itemNumberObj.e1.includes(itemNumber?.trim() ?? \"\") ||\r\n itemNumberObj.penguin.includes(itemNumber?.trim() ?? \"\") ||\r\n itemNumberObj.nonIotPerla.includes(itemNumber?.trim() ?? \"\") ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n ) : (\r\n \r\n )\r\n }\r\n />\r\n \r\n \r\n \r\n \r\n \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 commonRight = () => {\r\n return (\r\n \r\n \r\n \r\n {installerName}\r\n \r\n ) : (\r\n \r\n \r\n \r\n )\r\n }\r\n />\r\n \r\n {partnerName}\r\n \r\n ) : (\r\n \r\n \r\n \r\n )\r\n }\r\n />\r\n {installationDate ? (\r\n \r\n {addYears(\r\n new Date(installationDate),\r\n warrantyLength(itemNumber ?? \"\")\r\n ) > new Date() ? (\r\n \r\n \r\n \r\n  \r\n {reformat(\r\n addYears(\r\n new Date(installationDate),\r\n warrantyLength(itemNumber ?? \"\")\r\n ).toDateString(),\r\n true\r\n )}\r\n \r\n ) : (\r\n \r\n \r\n \r\n  \r\n {reformat(\r\n addYears(\r\n new Date(installationDate),\r\n warrantyLength(itemNumber ?? \"\")\r\n ).toDateString(),\r\n true\r\n )}\r\n \r\n )}\r\n
    \r\n }\r\n />\r\n ) : (\r\n
    -
    \r\n )}\r\n {rndPermission && (\r\n \r\n ) : (\r\n \r\n )\r\n }\r\n />\r\n )}\r\n \r\n );\r\n };\r\n\r\n return (\r\n \r\n {\r\n resetState({ variables: { productCode: productCode } });\r\n },\r\n },\r\n {\r\n title: \"generics.cancel\",\r\n click: () => {\r\n setOpenState(false);\r\n },\r\n },\r\n ]}\r\n loading={loading}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {commonLeft()}\r\n {instanceType === \"iot\" || instanceType === \"not-reg\" ? (\r\n perlaLeft()\r\n ) : (\r\n \r\n )}\r\n \r\n\r\n \r\n {commonRight()}\r\n {instanceType !== \"not-reg\" &&\r\n instanceType !== \"\" &&\r\n RegisteredPerlaOrDumbDeviceRight()}\r\n \r\n \r\n {instanceType === \"iot\" && (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n setOpenState(true);\r\n }}\r\n >\r\n \r\n \r\n \r\n {rawIotLoading ? (\r\n \r\n ) : (\r\n
    \r\n {lastTelemetryDateStr ? (\r\n {} : closePopper}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n \r\n
    \r\n \r\n ) : (\r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n
    \r\n )}\r\n \r\n {/* */}\r\n {/* */}\r\n \r\n
    \r\n \r\n {address && (\r\n \r\n )}\r\n \r\n
    \r\n )}\r\n
    \r\n );\r\n};\r\n\r\nconst DataItem: React.FC<{\r\n translate: string;\r\n tooltipText?: string;\r\n value: any;\r\n short?: boolean;\r\n}> = ({ translate, tooltipText, value, short = false }) => {\r\n return short ? (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {value}\r\n \r\n \r\n ) : (\r\n \r\n \r\n \r\n \r\n {tooltipText ? (\r\n \r\n \r\n \r\n \r\n \r\n ) : (\r\n
    \r\n )}\r\n
    \r\n
    \r\n \r\n {value}\r\n \r\n
    \r\n );\r\n};\r\n\r\nexport default DeviceData;\r\n","import React from \"react\";\r\nimport { createStyles, Theme, makeStyles } from \"@material-ui/core/styles\";\r\nimport {\r\n CheckCircleOutlineRounded,\r\n HighlightOff,\r\n ErrorOutline,\r\n //Height\r\n} from \"@material-ui/icons\";\r\nimport bwtColors from \"themes/bwtColors\";\r\nimport { NotificationType } from \"../../../types/apolloGenerated/globalTypes\"\r\n\r\nimport { Box } from \"@material-ui/core\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) => {\r\n return createStyles({\r\n\r\n notificationPanelInnerContainer: {\r\n display: \"flex\",\r\n flexWrap: \"wrap\",\r\n marginBottom: 15,\r\n overflow: \"hidden\",\r\n minWidth: \"1050px\",\r\n maxWidth: \"1700px\"\r\n },\r\n\r\n\r\n notifContainer: {\r\n display: \"flex\",\r\n border: \"1px solid #B5B9BB\",\r\n height: \"70px\",\r\n alignItems: \"center\",\r\n padding: \"20px\",\r\n fontSize: \"15px\",\r\n margin: \"10px\",\r\n width: \"calc(20% - 20px)\",\r\n\r\n '@media (max-width: 1799px)': {\r\n width: \"calc(25% - 20px)\",\r\n },\r\n\r\n '@media (max-width: 1299px)': {\r\n width: \"calc(33.3333% - 20px)\",\r\n },\r\n }\r\n });\r\n});\r\n\r\nexport interface DisplayStatusProps {\r\n code: NotificationType | null\r\n}\r\n\r\nconst Status: React.FC<{code: NotificationType }> = ({code}) => {\r\n const classes = useStyles();\r\n return (\r\n
    \r\n {code === NotificationType.NOT_SYNCHED ? getIcon(NotificationType.ERROR) : getIcon(code)}\r\n
    \r\n
    \r\n {code === NotificationType.NOT_SYNCHED ? \"DISCONNECTED\" : code }\r\n
    \r\n
    \r\n
    \r\n )\r\n}\r\n\r\nconst getIcon = (type: NotificationType) => {\r\n switch (type) {\r\n case NotificationType.ERROR:\r\n case NotificationType.INTERNAL_ERROR:\r\n return ;\r\n case NotificationType.WARNING:\r\n case NotificationType.SERVICE:\r\n return (\r\n \r\n );\r\n default:\r\n return \r\n }\r\n};\r\n\r\nconst DeviceStatus: React.FC = ({ code }) => {\r\n const classes = useStyles();\r\n // let deviceDisconnected = false;\r\n // let disconnectCodeType = NotificationType.ERROR;\r\n\r\n if (code === NotificationType.NOT_SYNCHED) {\r\n // deviceDisconnected = true;\r\n // if (code?.includes(\"Warning\")) {\r\n // disconnectCodeType = NotificationType.WARNING\r\n // }\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default DeviceStatus;\r\n","import React from \"react\";\r\nimport gql from \"graphql-tag\";\r\nimport { createStyles, Theme, makeStyles } from \"@material-ui/core/styles\";\r\nimport { useMutation } from \"@apollo/react-hooks\";\r\nimport Typography from \"@material-ui/core/Typography\";\r\nimport Box from \"@material-ui/core/Box\";\r\nimport Link from \"@material-ui/core/Link\";\r\nimport Grid from \"@material-ui/core/Grid\";\r\nimport ReplayIcon from \"@material-ui/icons/Replay\";\r\nimport RestoreIcon from \"@material-ui/icons/Restore\";\r\n\r\n// import {\r\n// renewService as renewServiceMutationData,\r\n// renewServiceVariables as renewServiceMutationVars,\r\n// } from \"types/apolloGenerated/renewService\";\r\n// import {\r\n// renewWarranty as renewWarrantyMutationData,\r\n// renewWarrantyVariables as renewWarrantyMutationVars,\r\n// } from \"types/apolloGenerated/renewWarranty\";\r\nimport {\r\n startRegeneration as startRegenerationMutationData,\r\n startRegenerationVariables as startRegenerationMutationVars,\r\n} from \"types/apolloGenerated/startRegeneration\";\r\nimport {\r\n startFastCycleRegeneration as startFastCycleRegenerationMutationData,\r\n startFastCycleRegenerationVariables as startFastCycleRegenerationMutationVars,\r\n} from \"types/apolloGenerated/startFastCycleRegeneration\";\r\n\r\nimport { Translate } from \"react-localize-redux\";\r\nimport format from \"date-fns/format\";\r\n\r\nimport DeviceLocationModal from \"./DeviceLocationModal\";\r\n\r\nimport { productInstanceAndCustomerDetails_productInstance as ProductInstance } from \"types/apolloGenerated/productInstanceAndCustomerDetails\";\r\nimport { Dialog, DialogTitle, DialogActions, Button } from \"@material-ui/core\";\r\n\r\n// const RENEW_SERVICE = gql`\r\n// mutation renewService($deviceId: String!) {\r\n// productInstance {\r\n// silk {\r\n// renewService(deviceId: $deviceId)\r\n// }\r\n// }\r\n// }\r\n// `;\r\n// const RENEW_WARRANTY = gql`\r\n// mutation renewWarranty($deviceId: String!) {\r\n// productInstance {\r\n// silk {\r\n// renewWarranty(deviceId: $deviceId)\r\n// }\r\n// }\r\n// }\r\n// `;\r\n\r\nconst START_REGEN = gql`\r\n mutation startRegeneration($deviceId: String!) {\r\n productInstance {\r\n silk {\r\n startRegeneration(deviceId: $deviceId)\r\n }\r\n }\r\n }\r\n`;\r\n\r\nconst START_FAST_REGEN = gql`\r\n mutation startFastCycleRegeneration($deviceId: String!) {\r\n productInstance {\r\n silk {\r\n startFastCycleRegeneration(deviceId: $deviceId)\r\n }\r\n }\r\n }\r\n`;\r\n\r\nconst useStyles = makeStyles((theme: Theme) => {\r\n return createStyles({\r\n appSymbol: {\r\n verticalAlign: \"middle\",\r\n display: \"inline-flex\",\r\n },\r\n icon: {\r\n marginRight: \"10px\",\r\n verticalAlign: \"top\",\r\n },\r\n spacing: {\r\n paddingRight: \"10px\",\r\n },\r\n dataItem: {\r\n maxWidth: \"80%\",\r\n },\r\n dataItemInst: {\r\n textAlign: \"right\",\r\n },\r\n });\r\n});\r\n\r\nfunction reformat(dateStr: string | null, short: boolean = false) {\r\n if (!dateStr) return \"-\";\r\n if (short) {\r\n return (\r\n \r\n {(translate) => {\r\n return (\r\n
    \r\n {format(\r\n new Date(dateStr),\r\n translate.translate(\"generics.dateTimeFormatFNSShort\") as string\r\n )}\r\n
    \r\n );\r\n }}\r\n
    \r\n );\r\n } else {\r\n return (\r\n \r\n {(translate) => {\r\n return (\r\n
    \r\n {format(\r\n new Date(dateStr),\r\n translate.translate(\"generics.dateTimeFormatFNSShort\") as string\r\n )}\r\n
    \r\n );\r\n }}\r\n
    \r\n );\r\n }\r\n}\r\n\r\nconst SilkDeviceData: React.FC<{ productInstance: ProductInstance | null }> = ({\r\n productInstance,\r\n}) => {\r\n const classes = useStyles();\r\n\r\n const [open, setOpen] = React.useState(false);\r\n\r\n const handleClickOpen = () => {\r\n setOpen(true);\r\n };\r\n const handleClickClose = () => {\r\n setOpen(false);\r\n };\r\n\r\n // const [renewService] = useMutation<\r\n // renewServiceMutationData,\r\n // renewServiceMutationVars\r\n // >(RENEW_SERVICE, {\r\n // onCompleted: () => handleClickOpen(),\r\n // onError: () => 0,\r\n // });\r\n // const [renewWarranty] = useMutation<\r\n // renewWarrantyMutationData,\r\n // renewWarrantyMutationVars\r\n // >(RENEW_WARRANTY, {\r\n // onCompleted: () => handleClickOpen(),\r\n // onError: () => 0,\r\n // });\r\n const [startFastCycleRegeneration] = useMutation<\r\n startFastCycleRegenerationMutationData,\r\n startFastCycleRegenerationMutationVars\r\n >(START_FAST_REGEN, {\r\n onCompleted: () => handleClickOpen(),\r\n onError: () => 0,\r\n });\r\n const [startRegeneration] = useMutation<\r\n startRegenerationMutationData,\r\n startRegenerationMutationVars\r\n >(START_REGEN, {\r\n onCompleted: () => handleClickOpen(),\r\n onError: () => 0,\r\n });\r\n\r\n const {\r\n productCode = \"\",\r\n dataSharedWithPartner = false,\r\n instanceInformation,\r\n servicePartner,\r\n customerSelectedInstaller,\r\n owner = null,\r\n address = null,\r\n batchNumber,\r\n erpBatchNumber,\r\n serialNumber,\r\n } = productInstance || {};\r\n\r\n const { id: installerId, name: installerName } = servicePartner || {};\r\n const { id: partnerId, name: partnerName } = customerSelectedInstaller || {};\r\n\r\n const { userInformation } = owner || {};\r\n\r\n let instanceType: string = \"\";\r\n let devId: string = \"\";\r\n let lastUpdate: any = null;\r\n let deviceActive: any = null;\r\n let nextServiceDate: any = null;\r\n let warrantyExpires: any = null;\r\n\r\n if (instanceInformation != null) {\r\n if (instanceInformation.__typename === \"SilkInstanceInformation\") {\r\n instanceType = userInformation ? \"iot\" : \"not-reg\";\r\n var tempDate = new Date(\r\n instanceInformation?.silkDetailsInstance?.lastUpdate ?? \"\"\r\n );\r\n lastUpdate = tempDate.toDateString();\r\n devId = instanceInformation?.deviceId ?? \"\";\r\n deviceActive = new Date(\r\n instanceInformation?.silkDetailsInstance?.deviceActivated ?? null\r\n ).toDateString();\r\n var ServiceCalc =\r\n instanceInformation?.silkDataInstance?.daysToService ?? 0;\r\n var WarrantyCalc =\r\n instanceInformation?.silkDataInstance?.daysWarrantyExpires ?? 0;\r\n var date = new Date();\r\n nextServiceDate = new Date(\r\n date.setTime(date.getTime() + ServiceCalc * 86400000)\r\n ).toDateString();\r\n warrantyExpires = new Date(\r\n date.setTime(date.getTime() + WarrantyCalc * 86400000)\r\n ).toDateString();\r\n } else {\r\n instanceType = \"not-iot\";\r\n }\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {installerName}\r\n \r\n ) : (\r\n \r\n \r\n \r\n )\r\n }\r\n />\r\n \r\n {partnerName}\r\n \r\n ) : (\r\n \r\n \r\n \r\n )\r\n }\r\n />\r\n \r\n ) : (\r\n \r\n )\r\n }\r\n />\r\n \r\n \r\n \r\n {instanceType === \"iot\" && (\r\n \r\n \r\n \r\n {\"Action Completed Successfully\"}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {/*\r\n \r\n \r\n {\r\n renewService({ variables: { deviceId: devId } });\r\n }}\r\n >\r\n \r\n \r\n \r\n */}\r\n {/*\r\n \r\n \r\n {\r\n renewWarranty({ variables: { deviceId: devId } });\r\n }}\r\n >\r\n \r\n \r\n \r\n */}\r\n \r\n \r\n {\r\n startRegeneration({ variables: { deviceId: devId } });\r\n }}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n {\r\n startFastCycleRegeneration({\r\n variables: { deviceId: devId },\r\n });\r\n }}\r\n >\r\n \r\n \r\n \r\n \r\n {/* */}\r\n {/* */}\r\n \r\n \r\n \r\n {address && (\r\n \r\n )}\r\n \r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nconst DataItem: React.FC<{\r\n translate: string;\r\n value: any;\r\n short?: boolean;\r\n}> = ({ translate, value, short = false }) => {\r\n return short ? (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {value}\r\n \r\n \r\n ) : (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {value}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default SilkDeviceData;\r\n","import * as React from \"react\";\r\n\r\nfunction SvgComponent(props: React.SVGProps) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default SvgComponent;\r\n","import * as React from \"react\";\r\n\r\nfunction SvgComponent(props: React.SVGProps) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default SvgComponent;\r\n","import * as React from \"react\";\r\n\r\nfunction SvgComponent(props: React.SVGProps) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default SvgComponent;\r\n","import * as React from \"react\";\r\n\r\nfunction SvgComponent(props: React.SVGProps) {\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default SvgComponent;\r\n","import * as React from \"react\";\r\n\r\nfunction SvgComponent(props: React.SVGProps) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default SvgComponent;\r\n","import * as React from \"react\";\r\n\r\nfunction SvgComponent(props: React.SVGProps) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default SvgComponent;\r\n","import * as React from \"react\";\r\n\r\ninterface WifiGoodSVGProps extends React.SVGProps {\r\n color?: string;\r\n colorfading?: string;\r\n}\r\n\r\nfunction SvgComponent(props: WifiGoodSVGProps) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default SvgComponent;\r\n","import * as React from \"react\";\r\n\r\nfunction SvgComponent(props: React.SVGProps) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default SvgComponent;\r\n","import * as React from \"react\";\r\n\r\nfunction SvgComponent(props: React.SVGProps) {\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default SvgComponent;\r\n","import * as React from \"react\";\r\n\r\nfunction SvgComponent(props: React.SVGProps) {\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default SvgComponent;\r\n","import React from \"react\";\r\n\r\nimport GsmFairIcon from \"../../resources/signalStrength/GsmFairIcon\";\r\nimport GsmGoodIcon from \"../../resources/signalStrength/GsmGoodIcon\";\r\nimport GsmWeakIcon from \"../../resources/signalStrength/GsmWeakIcon\";\r\nimport GsmExcellentIcon from \"../../resources/signalStrength/GsmExcellentIcon\";\r\nimport GsmOfflineIcon from \"../../resources/signalStrength/GsmOfflineIcon\";\r\n\r\nimport WifiFairIcon from \"../../resources/signalStrength/WifiFairIcon\";\r\nimport WifiGoodIcon from \"../../resources/signalStrength/WifiGoodIcon\";\r\nimport WifiWeakIcon from \"../../resources/signalStrength/WifiWeakIcon\";\r\nimport WifiExcellentIcon from \"../../resources/signalStrength/WifiExcellentIcon\";\r\nimport WifiOfflineIcon from \"../../resources/signalStrength/WifiUnknownIcon\";\r\n\r\nexport const QUALITY_THRESHOLDS = {\r\n gsm: { good: 65, fair: 80, weak: 90 },\r\n wifi: { good: 55, fair: 75, weak: 85 },\r\n};\r\n\r\nexport type SignalType = keyof typeof QUALITY_THRESHOLDS;\r\n\r\nfunction getSignalQuality(type: SignalType, rssi?: number | undefined) {\r\n const ranges = QUALITY_THRESHOLDS[type];\r\n if (!rssi || rssi === 0 || rssi === 255) {\r\n return \"offline\";\r\n } else if (rssi >= ranges.weak) {\r\n return \"weak\";\r\n } else if (rssi >= ranges.fair) {\r\n return \"fair\";\r\n } else if (rssi >= ranges.good) {\r\n return \"good\";\r\n } else {\r\n return \"excellent\";\r\n }\r\n}\r\n\r\nfunction getGsmSignalQualityIconComponent(\r\n quality: string,\r\n usingGsmOnly: boolean\r\n) {\r\n if (usingGsmOnly) {\r\n switch (quality) {\r\n case \"offline\":\r\n return ;\r\n case \"weak\":\r\n return ;\r\n case \"fair\":\r\n return ;\r\n case \"good\":\r\n return ;\r\n case \"excellent\":\r\n return ;\r\n }\r\n } else {\r\n switch (quality) {\r\n case \"offline\":\r\n return ;\r\n case \"weak\":\r\n return ;\r\n case \"fair\":\r\n return ;\r\n case \"good\":\r\n return ;\r\n case \"excellent\":\r\n return ;\r\n }\r\n }\r\n return
    ;\r\n}\r\n\r\nfunction getWifiSignalQualityIconComponent(quality: string) {\r\n switch (quality) {\r\n case \"offline\":\r\n return ;\r\n case \"weak\":\r\n return ;\r\n case \"fair\":\r\n return ;\r\n case \"good\":\r\n return ;\r\n case \"excellent\":\r\n return ;\r\n }\r\n return
    ;\r\n}\r\n\r\nconst SignalStrength = ({\r\n type,\r\n rssi,\r\n usingGsmOnly,\r\n}: {\r\n type: SignalType;\r\n rssi: number | undefined;\r\n usingGsmOnly?: boolean;\r\n}) => {\r\n const signalQuality = getSignalQuality(type, rssi);\r\n if (type === \"gsm\") {\r\n return getGsmSignalQualityIconComponent(\r\n signalQuality,\r\n usingGsmOnly ?? false\r\n );\r\n }\r\n return getWifiSignalQualityIconComponent(signalQuality);\r\n};\r\n\r\nexport default SignalStrength;\r\n","import React, { Fragment, useState } from \"react\";\r\nimport { createStyles, Theme, makeStyles } from \"@material-ui/core/styles\";\r\n\r\nimport { Box, TextField, Typography } from \"@material-ui/core\";\r\n\r\nimport {\r\n ArrowBackIosRounded,\r\n ArrowForwardIosRounded,\r\n ErrorOutline,\r\n} from \"@material-ui/icons\";\r\n\r\nimport { Translate } from \"react-localize-redux\";\r\nimport { isBefore, isWithinInterval, subHours, parseISO } from \"date-fns\";\r\n\r\nimport SignalStrength from \"../../../components/common/SignalStrength\";\r\nimport { NotificationType } from \"types/apolloGenerated/globalTypes\";\r\n\r\nimport { productInstanceAndCustomerDetails_productInstance_instanceInformation_SilkInstanceInformation_notifications as SilkNotifArray } from \"types/apolloGenerated/productInstanceAndCustomerDetails\";\r\n\r\nimport { productInstanceAndCustomerDetails_productInstance_instanceInformation_SilkInstanceInformation as SilkInstanceInfo } from \"types/apolloGenerated/productInstanceAndCustomerDetails\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) => {\r\n return createStyles({\r\n appSymbol: {\r\n verticalAlign: \"middle\",\r\n display: \"inline-flex\",\r\n },\r\n dataContainer: {\r\n display: \"flex\",\r\n },\r\n titleContainer: {\r\n marginBottom: \"10px\",\r\n fontWeight: \"bold\",\r\n minWidth: \"60%\",\r\n marginRight: \"20px\",\r\n },\r\n icon: {\r\n marginRight: \"10px\",\r\n verticalAlign: \"top\",\r\n },\r\n spacing: {\r\n paddingRight: \"10px\",\r\n },\r\n dataItem: {\r\n maxWidth: \"80%\",\r\n },\r\n dataItemInst: {\r\n textAlign: \"right\",\r\n },\r\n arrow: { fontSize: 16, margin: 7 },\r\n textField: {\r\n [`& input::-webkit-clear-button,\r\n & input::-webkit-outer-spin-button,\r\n & input::-webkit-inner-spin-button,\r\n & input::-webkit-toolbarbutton-dropdown`]: {\r\n display: \"none\",\r\n },\r\n width: 176,\r\n },\r\n });\r\n});\r\n\r\nconst calcActivity = (value: number | undefined) => {\r\n if (!value) return -1;\r\n if (value < 7 && value >= 0) return \"Regeneration State\";\r\n if (value < 128 && value >= 7) return \"Valve Status\";\r\n if (value < 65536 && value >= 128) return \"User Interface Status\";\r\n return -1;\r\n};\r\n\r\nconst SilkTelemetry: React.FC<{ silkData: SilkInstanceInfo | null }> = ({\r\n silkData,\r\n}) => {\r\n const classes = useStyles();\r\n const [indexToShow, setIndexToShow] = useState(0);\r\n\r\n const telemetryType = 1002;\r\n let silkTelemetryNotifs: (SilkNotifArray | null)[] = [];\r\n if (silkData && silkData?.notifications) {\r\n silkTelemetryNotifs = silkData?.notifications.filter(\r\n (notif) => notif?.messageType === telemetryType\r\n );\r\n }\r\n\r\n const regenType = 6012;\r\n let silkRegenNotifs: (SilkNotifArray | null)[] = [];\r\n if (silkData && silkData?.notifications) {\r\n silkRegenNotifs = silkData?.notifications.filter(\r\n (notif) => notif?.messageType === regenType\r\n );\r\n }\r\n\r\n let telemData;\r\n let numberOfTelemetryResults = 0;\r\n if (silkTelemetryNotifs && silkTelemetryNotifs[indexToShow]?.message) {\r\n numberOfTelemetryResults = silkTelemetryNotifs.length;\r\n telemData = JSON.parse(silkTelemetryNotifs[indexToShow]?.message ?? \"{}\");\r\n }\r\n\r\n let notFound = true;\r\n let counter = 0;\r\n while (notFound) {\r\n if (counter < numberOfTelemetryResults) {\r\n if (silkRegenNotifs && silkRegenNotifs[counter]?.message) {\r\n const data = JSON.parse(silkRegenNotifs[counter]?.message ?? \"{}\");\r\n if (data.Data && data.Data.state === 1) {\r\n if (\r\n isBefore(\r\n new Date(data.Timestamp.toLocaleString()),\r\n new Date(telemData?.Timestamp.toLocaleString())\r\n )\r\n ) {\r\n notFound = false;\r\n break;\r\n }\r\n }\r\n }\r\n } else {\r\n counter = 0;\r\n break;\r\n }\r\n counter++;\r\n }\r\n\r\n let regenData = JSON.parse(silkRegenNotifs[counter]?.message ?? \"{}\");\r\n\r\n if (numberOfTelemetryResults === 0) {\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n }\r\n\r\n const timeStamp = telemData?.Timestamp ?? \"-\";\r\n const wifiConnection: number = telemData?.Data?.wifiCon ?? 0;\r\n const remainingCapacity: number = telemData?.Data?.remCap ?? 0;\r\n const remainingSalt: number =\r\n (telemData?.Data?.remSalt === 0 ? 0 : telemData?.Data?.remSalt / 10) ?? 0;\r\n const currentActivity: number = telemData?.Data?.currAct ?? 0;\r\n const waterConsumption: number = telemData?.Data?.waterCons ?? 0;\r\n const waterFlow: number = telemData?.Data?.waterFlow ?? 0;\r\n const isDisconnected = silkData?.state;\r\n let lastRegen: any =\r\n (regenData?.Timestamp &&\r\n regenData?.Timestamp.substr(0, 16).replace(\"T\", \" \")) ??\r\n \"-\";\r\n\r\n const showError = () => {\r\n return isDisconnected === NotificationType.NOT_SYNCHED ? (\r\n \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n ) : indexToShow === 0 &&\r\n !isWithinInterval(parseISO(timeStamp), {\r\n start: subHours(new Date(), 48),\r\n end: new Date(),\r\n }) ? (\r\n \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n ) : (\r\n \r\n );\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n {\r\n if (indexToShow < numberOfTelemetryResults - 1) {\r\n setIndexToShow(indexToShow + 1);\r\n }\r\n }}\r\n />\r\n }\r\n \r\n {\r\n 0 ? \"action\" : \"disabled\"}\r\n onClick={() => {\r\n if (indexToShow > 0) {\r\n setIndexToShow(indexToShow - 1);\r\n }\r\n }}\r\n />\r\n }\r\n \r\n \r\n \r\n {showError()}\r\n \r\n \r\n WLAN\r\n \r\n \r\n
    {`(${wifiConnection})`}
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n {lastRegen}\r\n \r\n \r\n \r\n \r\n \r\n {remainingCapacity}\r\n \r\n \r\n \r\n \r\n \r\n {remainingSalt}\r\n \r\n \r\n \r\n \r\n \r\n {waterConsumption}\r\n \r\n \r\n \r\n \r\n \r\n {waterFlow}\r\n \r\n \r\n \r\n \r\n \r\n {calcActivity(currentActivity)}\r\n \r\n \r\n
    \r\n \r\n );\r\n};\r\n\r\nexport default SilkTelemetry;\r\n","import gql from \"graphql-tag\";\r\n\r\nexport const GET_USER_COUNTRIES_QUERY = gql`\r\n query getCountriesOfUser {\r\n user {\r\n allowedCountries\r\n }\r\n }\r\n `;\r\n","import React, { Fragment, useState } from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport { bindActionCreators, Dispatch } from \"redux\";\r\nimport format from \"date-fns/format\";\r\nimport DateFnsUtils from \"@date-io/date-fns\";\r\nimport gql from \"graphql-tag\";\r\n\r\nimport { createStyles, Theme, makeStyles } from \"@material-ui/core/styles\";\r\nimport Typography from \"@material-ui/core/Typography\";\r\nimport Box from \"@material-ui/core/Box\";\r\nimport Link from \"@material-ui/core/Link\";\r\nimport { Done, Clear } from \"@material-ui/icons\";\r\nimport EditIcon from \"@material-ui/icons/Edit\";\r\nimport { Translate } from \"react-localize-redux\";\r\n\r\nimport colours from \"themes/bwtColors\";\r\nimport {\r\n productInstanceAndCustomerDetails_productInstance,\r\n productInstanceAndCustomerDetails_productInstance_owner_userInformation as UserInfo,\r\n} from \"types/apolloGenerated/productInstanceAndCustomerDetails\";\r\nimport { open as sendResetOpen } from \"redux/actions/AccountShortcuts/SendResetActions\";\r\nimport { UserInformation } from \"types/ToolboxEntities\";\r\nimport {\r\n Grid,\r\n IconButton,\r\n InputAdornment,\r\n MenuItem,\r\n Tooltip,\r\n} from \"@material-ui/core\";\r\nimport HelpIcon from \"@material-ui/icons/Help\";\r\nimport { DateTimePicker, MuiPickersUtilsProvider } from \"@material-ui/pickers\";\r\nimport { useMutation, useQuery } from \"react-apollo\";\r\nimport ClearIcon from \"@material-ui/icons/Clear\";\r\nimport WarningIcon from \"@material-ui/icons/Warning\";\r\nimport { GET_USER_COUNTRIES_QUERY } from \"commonQueries/userCountryQuery\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) => {\r\n return createStyles({\r\n appSymbol: {\r\n verticalAlign: \"middle\",\r\n display: \"inline-flex\",\r\n },\r\n dataItem: {\r\n maxWidth: \"80%\",\r\n },\r\n serviceContractFormControl: {\r\n minWidth: 60,\r\n },\r\n });\r\n});\r\n\r\n// function reformat(dateStr: string | null, short: boolean = false) {\r\n// if (!dateStr) return \"-\";\r\n// if (short) {\r\n// return (\r\n// \r\n// {(translate) => {\r\n// return (\r\n//
    \r\n// {format(\r\n// new Date(dateStr),\r\n// translate.translate(\"generics.dateTimeFormatFNSShort\") as string\r\n// )}\r\n//
    \r\n// );\r\n// }}\r\n//
    \r\n// );\r\n// } else {\r\n// return (\r\n// \r\n// {(translate) => {\r\n// return (\r\n//
    \r\n// {format(\r\n// new Date(dateStr),\r\n// translate.translate(\"generics.dateTimeFormatFNS\") as string\r\n// )}\r\n//
    \r\n// );\r\n// }}\r\n//
    \r\n// );\r\n// }\r\n// }\r\n\r\ninterface CustomerDetailsProps {\r\n userInfo: UserInfo | null;\r\n sendResetOpen: typeof sendResetOpen;\r\n productInstance: productInstanceAndCustomerDetails_productInstance | null;\r\n}\r\n\r\nconst CustomerDetails: React.FC = ({\r\n userInfo,\r\n sendResetOpen,\r\n productInstance,\r\n}) => {\r\n const classes = useStyles();\r\n\r\n const {\r\n id = \"\",\r\n firstName = \"\",\r\n lastName = \"\",\r\n //lastLogin = null,\r\n email = \"\",\r\n telephone,\r\n address,\r\n activity,\r\n } = userInfo || {};\r\n\r\n const {\r\n acceptedContractDate,\r\n //acceptedContractTerms\r\n } = productInstance || {};\r\n\r\n let lastAppActivity: string = \"\";\r\n\r\n for (const value of activity ?? []) {\r\n if (value?.clientName.startsWith(\"app\")) {\r\n lastAppActivity = value?.lastAction;\r\n }\r\n }\r\n\r\n const UPDATE_CONTRACT_DATE_MUTATION = gql`\r\n mutation updateContractFlag(\r\n $productCode: String!\r\n $newDate: DateTimeOffset\r\n ) {\r\n productInstance {\r\n updateAcceptedContractFlag(productCode: $productCode, newDate: $newDate)\r\n }\r\n }\r\n `;\r\n\r\n const convertFlagToState = (contractDate: Date | null) => {\r\n if (contractDate == null) {\r\n return 0;\r\n }\r\n\r\n const date = new Date();\r\n const diff: number = Math.abs(\r\n date.getTime() - new Date(contractDate)?.getTime()\r\n );\r\n const diffDays: number = Math.ceil(diff / (1000 * 3600 * 24));\r\n\r\n if (diffDays > 730.485) {\r\n return 2;\r\n }\r\n\r\n return 1;\r\n };\r\n\r\n const [selectedDate, handleDateChange] = useState(\r\n acceptedContractDate ? new Date(acceptedContractDate) : null\r\n );\r\n const [hasAcceptedTerms, setTerms] = useState(\r\n convertFlagToState(acceptedContractDate)\r\n );\r\n const [updateContractDate] = useMutation(UPDATE_CONTRACT_DATE_MUTATION);\r\n const { data, loading } = useQuery(GET_USER_COUNTRIES_QUERY);\r\n const countries: string[] = data?.user?.allowedCountries;\r\n const updateUserAcceptedContractDate = (newDate: Date) => {\r\n handleDateChange(newDate);\r\n setTerms(convertFlagToState(newDate));\r\n updateContractDate({\r\n variables: {\r\n productCode: productInstance?.productCode,\r\n newDate: newDate as Date,\r\n },\r\n });\r\n renderContractDateLabel(selectedDate);\r\n };\r\n\r\n const resetContractDate = () => {\r\n handleDateChange(null);\r\n setTerms(convertFlagToState(null));\r\n updateContractDate({\r\n variables: {\r\n productCode: productInstance?.productCode,\r\n newDate: null,\r\n },\r\n });\r\n renderContractDateLabel(null);\r\n };\r\n\r\n function renderContractDateLabel(selectedDate: Date | null): string {\r\n if (selectedDate?.getFullYear() === 0 || selectedDate == null) {\r\n return \"Not currently accepted\";\r\n }\r\n\r\n return \"Accepted on\";\r\n }\r\n\r\n function renderContractDateValue(selectedDate: Date | null): Date | null {\r\n if (selectedDate?.getFullYear() === 0 || selectedDate == null) {\r\n return null;\r\n }\r\n\r\n return selectedDate;\r\n }\r\n\r\n const { street = \"\", postalCode = \"\", city = \"\" } = address || {};\r\n let isDenmark = false;\r\n\r\n //Service contract date is only available to those from Denmark (AS400)\r\n if (!loading) {\r\n if (countries.includes(\"DK\")) {\r\n isDenmark = true;\r\n }\r\n }\r\n\r\n /*\r\n * Return tick if hasAccepted is true\r\n * Return cross if hasAccepted is false\r\n * Return waring if difference between accepted date and todays date is > 2 years\r\n */\r\n\r\n const checkContract = () => {\r\n if (hasAcceptedTerms === 0) {\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n\r\n if (hasAcceptedTerms === 2) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n\r\n if (hasAcceptedTerms === 1) {\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 {firstName} {lastName}\r\n \r\n \r\n \r\n {\": \"}\r\n {lastAppActivity !== \"\" ? (\r\n \r\n ) : (\r\n \r\n )}\r\n {lastAppActivity !== \"\" ? (\r\n lastAppActivity && (\r\n \r\n {\" ( \"}\r\n :{\" \"}\r\n \r\n {(translate) => {\r\n return (\r\n \r\n {format(\r\n new Date(lastAppActivity),\r\n translate.translate(\r\n \"generics.dateTimeFormatFNSShort\"\r\n ) as string\r\n )}{\" \"}\r\n \r\n );\r\n }}\r\n \r\n {\" ) \"}\r\n \r\n )\r\n ) : (\r\n
    \r\n )}\r\n \r\n {street},\r\n \r\n {postalCode} {city}\r\n \r\n {email}\r\n {telephone}\r\n\r\n {isDenmark ? (\r\n \r\n \r\n \r\n \r\n {acceptedContractDate ? (\r\n \r\n \r\n {\r\n updateUserAcceptedContractDate(selectedDate);\r\n }}\r\n style={{ width: \"250px\" }}\r\n InputProps={{\r\n endAdornment: (\r\n \r\n \r\n \r\n \r\n \r\n ),\r\n }}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n ) : (\r\n \r\n \r\n {\r\n updateUserAcceptedContractDate(selectedDate);\r\n }}\r\n style={{ width: \"260px\" }}\r\n InputProps={{\r\n endAdornment: (\r\n \r\n \r\n \r\n \r\n \r\n ),\r\n }}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n ) : (\r\n
    \r\n )}\r\n\r\n \r\n \r\n \r\n \r\n {\" | \"}\r\n \r\n sendResetOpen({\r\n id: userInfo?.id ?? \"\",\r\n email: userInfo?.email ?? \"\",\r\n } as UserInformation)\r\n }\r\n >\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch: Dispatch) =>\r\n bindActionCreators({ sendResetOpen }, dispatch);\r\n\r\nconst DataItem: React.FC<{\r\n translate: string;\r\n tooltipText?: string;\r\n value: any;\r\n short?: boolean;\r\n}> = ({ translate, tooltipText, value, short = false }) =>\r\n short ? (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {value}\r\n \r\n \r\n ) : (\r\n \r\n \r\n \r\n \r\n {tooltipText ? (\r\n \r\n \r\n \r\n \r\n \r\n ) : (\r\n
    \r\n )}\r\n
    \r\n
    \r\n \r\n {value}\r\n \r\n
    \r\n );\r\n\r\nexport default connect(null, mapDispatchToProps)(CustomerDetails);\r\n","import React, { Fragment } from \"react\";\r\nimport { useQuery } from \"react-apollo\";\r\nimport gql from \"graphql-tag\";\r\n\r\nimport { createStyles, Theme, makeStyles } from \"@material-ui/core/styles\";\r\nimport Link from \"@material-ui/core/Link\";\r\nimport {\r\n Box,\r\n Grid,\r\n TextField,\r\n Typography,\r\n Tooltip,\r\n CircularProgress,\r\n} from \"@material-ui/core\";\r\nimport {\r\n ArrowBackIosRounded,\r\n ArrowForwardIosRounded,\r\n Close,\r\n Done,\r\n ErrorOutline,\r\n} from \"@material-ui/icons\";\r\nimport colours from \"themes/bwtColors\";\r\n\r\nimport {\r\n Translate,\r\n withLocalize,\r\n LocalizeContextProps,\r\n} from \"react-localize-redux\";\r\nimport format from \"date-fns/format\";\r\nimport SignalStrength from \"../../../components/common/SignalStrength\";\r\n\r\nimport {\r\n telemetryInformation as QueryData,\r\n telemetryInformationVariables as QueryVars,\r\n} from \"types/apolloGenerated/telemetryInformation\";\r\nimport { isWithinInterval, subHours } from \"date-fns\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) => {\r\n return createStyles({\r\n arrow: { fontSize: 16, margin: 7 },\r\n textField: {\r\n [`& input::-webkit-clear-button,\r\n & input::-webkit-outer-spin-button,\r\n & input::-webkit-inner-spin-button,\r\n & input::-webkit-toolbarbutton-dropdown`]: {\r\n display: \"none\",\r\n },\r\n width: 150,\r\n },\r\n customTooltip: {\r\n width: \"120px\",\r\n },\r\n });\r\n});\r\n\r\nconst QUERY = gql`\r\n query telemetryInformation(\r\n $productCode: String!\r\n $timestamp: DateTimeOffset!\r\n ) {\r\n productInstance(productCode: $productCode) {\r\n id\r\n instanceInformation {\r\n __typename\r\n ... on PerlaInstanceInformation {\r\n registeredPerlaInstanceInformation {\r\n stateBody\r\n }\r\n telemetry(timestamp: $timestamp) {\r\n next\r\n previous\r\n value {\r\n date\r\n motor1Position\r\n motor2Position\r\n wlanQuality\r\n gsmQuality\r\n lastRegenerationS1\r\n lastRegenerationS2\r\n capacityRemainingS1\r\n capacityRemainingS2\r\n }\r\n }\r\n telemetryRawData(timestamp: $timestamp) {\r\n value\r\n }\r\n summary(timestamp: $timestamp) {\r\n value {\r\n connectedToClientLan\r\n logDate\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n`;\r\n\r\ninterface TelemetryProps extends LocalizeContextProps {\r\n productCode: string;\r\n}\r\n\r\nfunction protectDateSetter(\r\n setter: (date: Date) => void\r\n): (dateStr: string | null) => void {\r\n return (dateStr: string | null) => {\r\n if (dateStr) {\r\n const date = new Date(dateStr);\r\n if (!isNaN(date.getTime())) {\r\n setter(date);\r\n }\r\n }\r\n };\r\n}\r\n\r\nconst Telemetry: React.FC = ({ productCode, translate }) => {\r\n const classes = useStyles();\r\n const initialDate = new Date();\r\n const [selectedDateTelem, setSelectedDateTelem] = React.useState(initialDate);\r\n const [loadNewDate, setLoadNewDate] = React.useState(false);\r\n\r\n const { data, loading } = useQuery(QUERY, {\r\n variables: { productCode, timestamp: selectedDateTelem },\r\n });\r\n\r\n const info = data?.productInstance?.instanceInformation;\r\n\r\n let sample;\r\n let previous: string = \"\";\r\n let next: string = \"\";\r\n let summary;\r\n let isDisconnected = false;\r\n\r\n switch (info?.__typename) {\r\n case \"PerlaInstanceInformation\":\r\n previous = info?.telemetry?.previous;\r\n next = info?.telemetry?.next;\r\n sample = info?.telemetry?.value;\r\n summary = info?.summary?.value;\r\n isDisconnected = info?.registeredPerlaInstanceInformation?.stateBody\r\n ? info?.registeredPerlaInstanceInformation?.stateBody.includes(\r\n \"disconnected\"\r\n )\r\n : false;\r\n break;\r\n case \"ProductInstanceInformation\":\r\n break;\r\n }\r\n\r\n const {\r\n date,\r\n wlanQuality,\r\n gsmQuality,\r\n lastRegenerationS1,\r\n lastRegenerationS2,\r\n capacityRemainingS1,\r\n capacityRemainingS2,\r\n motor1Position,\r\n motor2Position,\r\n } = sample || {};\r\n\r\n const sampleDate =\r\n date && date !== \"\" ? new Date(date) : null;\r\n\r\n const pickerDate = sampleDate && !loading ? sampleDate : selectedDateTelem;\r\n\r\n const setSelectedDateStr = protectDateSetter(setSelectedDateTelem);\r\n\r\n const downloadIoTTelemetry = () => {\r\n if (\r\n data?.productInstance?.instanceInformation?.__typename ===\r\n \"PerlaInstanceInformation\"\r\n ) {\r\n if (data?.productInstance?.instanceInformation.telemetryRawData?.value) {\r\n const notificationTelemetry = JSON.stringify(\r\n data?.productInstance?.instanceInformation.telemetryRawData?.value,\r\n null,\r\n 2\r\n ).replace(/\\\\\"/g, '\"'); /// beautifier fehlt noch\r\n\r\n console.log(\"TELEMETRY RAW: \", notificationTelemetry);\r\n\r\n const x = window.open();\r\n if (x) {\r\n x.document.open();\r\n x.document.write(\r\n \"
    \" + notificationTelemetry + \"
    \"\r\n );\r\n x.document.close();\r\n }\r\n }\r\n }\r\n };\r\n\r\n function reformat(dateStr: string | null, short: boolean = false) {\r\n if (!dateStr) return \"-\";\r\n if (short) {\r\n return (\r\n \r\n {(translate) => {\r\n return format(\r\n new Date(dateStr),\r\n translate.translate(\"generics.dateTimeFormatFNSShort\") as string\r\n );\r\n }}\r\n \r\n );\r\n } else {\r\n return (\r\n \r\n {(translate) => {\r\n return format(\r\n new Date(dateStr),\r\n translate.translate(\"generics.dateTimeFormatFNS\") as string\r\n );\r\n }}\r\n \r\n );\r\n }\r\n }\r\n\r\n const usingGsmOnly =\r\n (wlanQuality === 0 || wlanQuality === 255) &&\r\n summary?.connectedToClientLan === false;\r\n\r\n const showError = () => {\r\n return isDisconnected ? (\r\n \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n ) : !loading &&\r\n next === null &&\r\n !isWithinInterval(pickerDate, {\r\n start: subHours(new Date(), 48),\r\n end: new Date(),\r\n }) ? (\r\n \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n ) : (\r\n \r\n );\r\n };\r\n\r\n if (loading && !loadNewDate)\r\n return (\r\n
    \r\n {\" \"}\r\n
    \r\n );\r\n if (!sample)\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n {\" \"}\r\n \r\n \r\n \r\n {loading ? (\r\n
    \r\n ) : (\r\n {\r\n setSelectedDateStr(previous);\r\n setLoadNewDate(true);\r\n }}\r\n />\r\n )}\r\n setSelectedDateStr(e.target.value)}\r\n />\r\n {loading ? (\r\n
    \r\n ) : (\r\n {\r\n setSelectedDateStr(next);\r\n setLoadNewDate(true);\r\n }}\r\n />\r\n )}\r\n \r\n \r\n {showError()}\r\n {!loading ? (\r\n \r\n \r\n \r\n \r\n
    \r\n
    LAN
    \r\n \r\n {summary?.connectedToClientLan ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n
    \r\n \r\n
    \r\n
    WLAN
    \r\n \r\n
    \r\n \r\n
    \r\n
    GSM
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n (l * dH)\r\n \r\n \r\n \r\n S1\r\n \r\n \r\n \r\n
    {reformat(lastRegenerationS1)}
    \r\n
    \r\n \r\n \r\n \r\n {capacityRemainingS1}\r\n \r\n \r\n \r\n S2\r\n \r\n \r\n \r\n
    {reformat(lastRegenerationS2)}
    \r\n
    \r\n
    \r\n \r\n \r\n {capacityRemainingS2}\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n 1\r\n \r\n \r\n \r\n Operation ({motor1Position})\r\n \r\n \r\n \r\n 2\r\n \r\n \r\n \r\n Operation ({motor2Position})\r\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 withLocalize(Telemetry);\r\n","import * as t from \"types/apolloGenerated/notificationsHistory\";\r\n\r\nexport type QueryData = t.notificationsHistory;\r\nexport type QueryVars = t.notificationsHistoryVariables;\r\nexport type PerlaNotification = { icon: string, title: string, untranslatedTitle: string, subTitle: string, untranslatedSubTitle: string, date: Date, notificationJSON: (t.notificationsHistory_productInstance_instanceInformation_PerlaInstanceInformation_eventsRawData_messages | null)[] | null | undefined }\r\nexport type SilkNotification = { icon: string, message: string, date: Date }\r\n\r\n\r\nexport enum Level {\r\n E = \"error\",\r\n W = \"warn\",\r\n I = \"info\"\r\n}\r\n\r\nexport function getLevel(notif: PerlaNotification): Level {\r\n switch (notif?.icon) {\r\n case \"error\":\r\n return Level.E;\r\n case \"warning\":\r\n return Level.W;\r\n default:\r\n return Level.I;\r\n }\r\n}\r\n","import React from \"react\";\r\nimport format from \"date-fns/format\";\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\nimport ErrorIcon from \"@material-ui/icons/HighlightOff\";\r\nimport WarnIcon from \"@material-ui/icons/ErrorOutline\";\r\nimport InfoIcon from \"@material-ui/icons/CheckCircleOutline\";\r\n\r\nimport colours from \"themes/bwtColors\";\r\nimport { PerlaNotification, Level, getLevel } from \"./types\";\r\nimport { Translate } from \"react-localize-redux\";\r\n\r\nconst iconStyle = {\r\n flexShrink: 0,\r\n margin: 10,\r\n fontSize: 30\r\n};\r\n\r\nconst useStyles = makeStyles(() => ({\r\n root: { display: \"flex\", alignItems: \"center\" },\r\n errorIcon: { ...iconStyle, color: colours.errorRed },\r\n warnIcon: { ...iconStyle, color: colours.warnYellow },\r\n infoIcon: { ...iconStyle, color: colours.arctic }\r\n}));\r\n\r\ninterface NotificationProps {\r\n notification: PerlaNotification;\r\n}\r\n\r\nconst Notifcation: React.FC = ({ notification }) => {\r\n const { title, subTitle, date, untranslatedSubTitle, untranslatedTitle } = notification;\r\n // const { notificationBody, notificationTitle } =\r\n // ((notificationCode || {}).notificationTexts || [])[0] || {};\r\n const classes = useStyles();\r\n const level = getLevel(notification);\r\n\r\n\r\n // const downloadIoTNotification = (\r\n // event: React.MouseEvent\r\n // ) => {\r\n\r\n // console.log(\"downloadIoTNotification: \", notificationJSON);\r\n // console.log(\"event\", event);\r\n\r\n // if (notificationJSON) {\r\n // const notificationEvent = JSON.stringify(notificationJSON, null, 2).replace(/\\\\\"/g, '\"');\r\n // console.log(\"notification2: \", notificationEvent);\r\n\r\n // const x = window.open();\r\n // if (x) {\r\n // x.document.open();\r\n // x.document.write('
    ' + notificationEvent + '
    ');\r\n // x.document.close();\r\n // }\r\n // }\r\n\r\n // };\r\n\r\n\r\n //) => { downloadIoTNotification(e) }} >\r\n\r\n return (\r\n
    \r\n {level === Level.E ? (\r\n \r\n ) : level === Level.W ? (\r\n \r\n ) : (\r\n \r\n )}\r\n
    \r\n
    {title === \"\" ? untranslatedTitle : }
    \r\n \r\n {\r\n (translate) => {\r\n return
    {format(new Date(date), translate.translate('generics.dateTimeFormatFNS') as string)}
    ;\r\n }\r\n }\r\n
    \r\n
    {subTitle === \"\" ? untranslatedSubTitle : }
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default Notifcation;\r\n","import React, {\r\n useState, useRef, useEffect,\r\n // Fragment \r\n} from \"react\";\r\n// import { Translate } from \"react-localize-redux\";\r\nimport { Collection } from \"immutable\";\r\nimport format from \"date-fns/format\";\r\nimport { Translate } from \"react-localize-redux\";\r\n\r\nimport {\r\n PerlaNotification,\r\n // Level,getLevel \r\n} from \"./types\";\r\nimport style from \"./style.module.css\";\r\nimport Notification from \"./Notification\";\r\n\r\ninterface DayGroupProps {\r\n notifications: Collection;\r\n dayMs: number;\r\n temporalHeight: number;\r\n isLast: boolean;\r\n}\r\n\r\nconst MAX_HEIGHT = 500;\r\n\r\nconst DayGroup: React.FC = ({\r\n notifications,\r\n dayMs,\r\n temporalHeight,\r\n isLast\r\n}) => {\r\n\r\n const notifsRef = useRef(null);\r\n const [notifsHeight, setNotifsHeight] = useState(0);\r\n useEffect(() => {\r\n if (notifsRef && notifsRef.current){\r\n setNotifsHeight(notifsRef.current.offsetHeight);\r\n }\r\n }, [notifications]);\r\n const [userExpanded, setUserExpanded] = useState(false);\r\n const defaultExpanded = (notifsRef &&\r\n notifsRef.current &&\r\n notifsHeight < temporalHeight) as boolean;\r\n const expanded = defaultExpanded || userExpanded;\r\n const arrowIcon = defaultExpanded ? \"\" : expanded ? \" â–²\" : \" â–¼ Load \" + (notifications.toList().size - 10) + \" more\";\r\n\r\n return (\r\n \r\n {(translate) => {\r\n return (\r\n
    \r\n
    \r\n
    \r\n {!isLast &&
    }\r\n
    \r\n
    \r\n
    {format(dayMs, translate.translate('generics.dateTimeFormatFNSShort') as string)}
    \r\n
    setUserExpanded(!userExpanded)}>\r\n {/* {levelSummary} */}\r\n {\r\n notifsHeight > MAX_HEIGHT && arrowIcon\r\n }\r\n {/* keep comments incase usablity focussed function is requested in the future. */}\r\n
    \r\n \r\n \r\n {notifications.map((notif, 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\r\nexport default DayGroup;\r\n","// import { useState } from \"react\";\r\nimport gql from \"graphql-tag\";\r\nimport { useQuery } from \"@apollo/react-hooks\";\r\n\r\nimport {\r\n notificationsHistory_productInstance_instanceInformation_PerlaInstanceInformation_events_events as PerlaMessage,\r\n notificationsHistory_productInstance_instanceInformation_PerlaInstanceInformation as PerlaInstanceInformation,\r\n notificationsHistory_productInstance_instanceInformation_PerlaInstanceInformation_eventsRawData_messages,\r\n} from \"types/apolloGenerated/notificationsHistory\";\r\nimport { QueryData, QueryVars, PerlaNotification } from \"./types\";\r\nimport {\r\n NotificationType,\r\n DeviceActionType,\r\n DeviceActionState,\r\n} from \"types/apolloGenerated/globalTypes\";\r\n\r\nconst QUERY = gql`\r\n query notificationsHistory(\r\n $productCode: String!\r\n $from: DateTimeOffset!\r\n $count: Int!\r\n ) {\r\n productInstance(productCode: $productCode) {\r\n id\r\n instanceInformation {\r\n __typename\r\n ... on PerlaInstanceInformation {\r\n events(from: $from, count: $count) {\r\n previous\r\n events {\r\n baseInformation {\r\n messageId\r\n receivedAt\r\n sentAt\r\n }\r\n message {\r\n __typename\r\n ... on PerlaActionMessage {\r\n information {\r\n message\r\n actionType\r\n state\r\n }\r\n }\r\n ... on PerlaNotificationMessage {\r\n stateTitle\r\n information {\r\n codeType\r\n }\r\n }\r\n ... on PerlaLogMessage {\r\n information {\r\n deviceIPAddress\r\n hostname\r\n }\r\n }\r\n ... on PerlaActivationMessage {\r\n information {\r\n email\r\n }\r\n }\r\n ... on PerlaDeviceParameterMessage {\r\n placeholder\r\n }\r\n }\r\n }\r\n }\r\n eventsRawData(from: $from, count: $count) {\r\n messages {\r\n message\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n`;\r\n\r\nconst getIcon = (code: NotificationType) => {\r\n switch (code) {\r\n case NotificationType.ERROR:\r\n case NotificationType.INTERNAL_ERROR:\r\n return \"error\";\r\n case NotificationType.WARNING:\r\n return \"warning\";\r\n default:\r\n return \"info\";\r\n }\r\n};\r\n\r\nconst getTitle = (actionType: DeviceActionType, state: DeviceActionState) => {\r\n const start = \"components.notificationshistory.notifTitles.\";\r\n switch (actionType) {\r\n case DeviceActionType.NOT_SET:\r\n return start + \"unknown\";\r\n case DeviceActionType.HOLIDAY_MODE:\r\n if (state === DeviceActionState.DISABELING) {\r\n return start + \"holidayModeDisabled\";\r\n } else {\r\n return start + \"holidayModeEnabled\";\r\n }\r\n case DeviceActionType.GET_LATEST_LOG:\r\n return start + \"logRequested\";\r\n case DeviceActionType.MANUAL_RINSE:\r\n return start + \"triggeredRinse\";\r\n case DeviceActionType.MANUAL_REGENERATION:\r\n return start + \"triggeredRinse\";\r\n case DeviceActionType.FIRMWARE_UPDATE:\r\n if (state === DeviceActionState.START) {\r\n return start + \"firmwareStarted\";\r\n } else {\r\n if (state === DeviceActionState.FINISHED) {\r\n return start + \"firmwareFinished\";\r\n } else {\r\n return start + \"firmwareError\";\r\n }\r\n }\r\n case DeviceActionType.PARAMETER_UPDATE:\r\n if (state === DeviceActionState.FINISHED) {\r\n return start + \"parameterFinished\";\r\n } else {\r\n return start + \"parameterError\";\r\n }\r\n case DeviceActionType.PING:\r\n if (state === DeviceActionState.START) {\r\n return start + \"pingRequested\";\r\n } else {\r\n return start + \"pingResponded\";\r\n }\r\n case DeviceActionType.SHUTDOWN:\r\n if (state === DeviceActionState.ENABLED) {\r\n return start + \"deviceShutdown\";\r\n } else {\r\n return start + \"deviceStartup\";\r\n }\r\n case DeviceActionType.LID_CHANGE:\r\n return start + \"deviceLid\";\r\n }\r\n};\r\n\r\nconst from = new Date();\r\n\r\nexport function usePaginatedNotifications(\r\n productCode: string\r\n): {\r\n results: PerlaNotification[];\r\n loading: boolean;\r\n loadMore: (() => void) | null;\r\n} {\r\n const count = 15;\r\n const { data, loading, fetchMore } = useQuery(QUERY, {\r\n variables: { productCode, from, count },\r\n fetchPolicy: \"cache-and-network\",\r\n });\r\n let results: (PerlaMessage | null)[] = [];\r\n let previous: String | null;\r\n let notificationJSON:\r\n | (notificationsHistory_productInstance_instanceInformation_PerlaInstanceInformation_eventsRawData_messages | null)[]\r\n | null\r\n | undefined;\r\n\r\n const info = data?.productInstance?.instanceInformation;\r\n if (info?.__typename !== \"PerlaInstanceInformation\") {\r\n previous = null;\r\n } else {\r\n results = info?.events?.events ?? [];\r\n notificationJSON = info.eventsRawData?.messages;\r\n previous = info?.events?.previous;\r\n }\r\n\r\n const loadMore =\r\n !previous || loading\r\n ? null\r\n : () => {\r\n fetchMore({\r\n variables: { from: previous },\r\n updateQuery: (existing, { fetchMoreResult }) => {\r\n if (!fetchMoreResult || !existing.productInstance)\r\n return existing;\r\n const instanceInfo =\r\n fetchMoreResult?.productInstance?.instanceInformation;\r\n if (instanceInfo?.__typename !== \"PerlaInstanceInformation\")\r\n return existing;\r\n const perlaInfo = instanceInfo as PerlaInstanceInformation;\r\n const moreEvents = perlaInfo?.events?.events ?? [];\r\n const newPrev = perlaInfo?.events?.previous;\r\n const existingInfo =\r\n existing?.productInstance?.instanceInformation;\r\n if (existingInfo?.__typename !== \"PerlaInstanceInformation\")\r\n return existing;\r\n const existingPerlaInfo = existingInfo as PerlaInstanceInformation;\r\n if (!existingPerlaInfo.events) return existing;\r\n const existingEvents = existingPerlaInfo?.events?.events ?? [];\r\n const newEvents = existingEvents.concat(moreEvents);\r\n\r\n return {\r\n ...existing,\r\n productInstance: {\r\n ...existing.productInstance,\r\n instanceInformation: {\r\n ...existingPerlaInfo,\r\n events: {\r\n ...existingPerlaInfo.events,\r\n events: newEvents,\r\n previous: newPrev,\r\n },\r\n },\r\n },\r\n };\r\n },\r\n });\r\n };\r\n\r\n const perlaNotificationsArr: PerlaNotification[] = [];\r\n\r\n results.forEach((r) => {\r\n let show = true;\r\n\r\n let actionType;\r\n let notifTitle = \"\";\r\n let notifSubTitle = \"\";\r\n let notifIcon = \"\";\r\n let untranslatedTitle = \"\";\r\n let untranslatedSubTitle = \"\";\r\n switch (r?.message?.__typename) {\r\n case \"PerlaActionMessage\":\r\n actionType = r?.message?.information?.actionType;\r\n notifTitle = getTitle(\r\n actionType ?? DeviceActionType.NOT_SET,\r\n r?.message?.information?.state ?? DeviceActionState.TIMEOUT\r\n );\r\n if (\r\n actionType === DeviceActionType.PARAMETER_UPDATE &&\r\n r?.message?.information?.state === DeviceActionState.ERROR\r\n ) {\r\n untranslatedSubTitle = r?.message?.information?.message ?? \"\";\r\n }\r\n if (\r\n actionType === DeviceActionType.FIRMWARE_UPDATE &&\r\n r?.message?.information?.state === DeviceActionState.ERROR\r\n ) {\r\n untranslatedSubTitle = r?.message?.information?.message ?? \"\";\r\n }\r\n break;\r\n case \"PerlaNotificationMessage\":\r\n show = r?.message?.stateTitle ? true : false;\r\n untranslatedTitle = r?.message?.stateTitle ?? \"\";\r\n notifIcon = getIcon(\r\n r?.message?.information?.codeType ?? NotificationType.NOT_SET\r\n );\r\n break;\r\n case \"PerlaLogMessage\":\r\n notifTitle = \"components.notificationshistory.notifTitles.logRecieved\";\r\n notifIcon = \"info\";\r\n break;\r\n case \"PerlaActivationMessage\":\r\n notifTitle = \"components.notificationshistory.notifTitles.activated\";\r\n untranslatedSubTitle = r.message.information?.email || \"\";\r\n notifIcon = \"info\";\r\n break;\r\n case \"PerlaDeviceParameterMessage\":\r\n show = false;\r\n notifTitle = \"components.notificationshistory.notifTitles.parameterMessage\";\r\n notifIcon = \"info\";\r\n break;\r\n }\r\n const notifDate = r?.baseInformation?.receivedAt;\r\n const perlaNotification: PerlaNotification = {\r\n icon: notifIcon,\r\n title: notifTitle,\r\n untranslatedTitle: untranslatedTitle,\r\n subTitle: notifSubTitle,\r\n untranslatedSubTitle: untranslatedSubTitle,\r\n date: notifDate ?? new Date(),\r\n notificationJSON: notificationJSON,\r\n };\r\n show && perlaNotificationsArr.push(perlaNotification);\r\n });\r\n\r\n return { results: perlaNotificationsArr, loading, loadMore };\r\n}\r\n","import React, { useRef, useEffect } from \"react\";\r\nimport { Translate, withLocalize, LocalizeContextProps } from \"react-localize-redux\";\r\nimport differenceInCalendarDays from \"date-fns/differenceInCalendarDays\";\r\nimport startOfDay from \"date-fns/startOfDay\";\r\nimport { List } from \"immutable\";\r\nimport RootRef from \"@material-ui/core/RootRef\";\r\nimport Box from \"@material-ui/core/Box\";\r\nimport Typography from \"@material-ui/core/Typography\";\r\n\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\n\r\nimport DayGroup from \"./DayGroup\";\r\nimport { usePaginatedNotifications } from \"./data\";\r\n\r\nfunction isNearBottom(elem: HTMLDivElement | null): boolean {\r\n if (!elem) return false;\r\n return (\r\n elem.getBoundingClientRect().bottom - 200 <=\r\n (window.innerHeight || document.documentElement.clientHeight)\r\n );\r\n}\r\n\r\ninterface NotificationsHistoryProps extends LocalizeContextProps {\r\n productCode: string;\r\n}\r\n\r\nconst NotificationsHistory: React.FC = ({\r\n productCode,\r\n activeLanguage\r\n}) => {\r\n const { results, loading, loadMore } = usePaginatedNotifications(\r\n productCode,\r\n // activeLanguage.code\r\n );\r\n\r\n const ref = useRef(null);\r\n useEffect(() => {\r\n if (loadMore) {\r\n const handleScroll = () => {\r\n if (isNearBottom(ref.current)) loadMore();\r\n };\r\n document.addEventListener(\"scroll\", handleScroll);\r\n return () => {\r\n document.removeEventListener(\"scroll\", handleScroll);\r\n };\r\n }\r\n }, [loadMore]);\r\n\r\n // const notification: PerlaNotification = {\r\n // date: new Date('2017-07-26T11:41:19.693+00:00'),\r\n // icon: \"info\",\r\n // subTitle: \"\",\r\n // title: \"components.notificationshistory.notifTitles.activated\",\r\n // untranslatedSubTitle: \"\",\r\n // untranslatedTitle: \"\",\r\n // notificationJSON: null\r\n // }\r\n\r\n // const notificationTwo: PerlaNotification = {\r\n // date: new Date('2017-07-25T11:41:19.693+00:00'),\r\n // icon: \"info\",\r\n // subTitle: \"\",\r\n // title: \"components.notificationshistory.notifTitles.activated\",\r\n // untranslatedSubTitle: \"\",\r\n // untranslatedTitle: \"\",\r\n // notificationJSON: null\r\n // }\r\n\r\n\r\n // results.push(notification);\r\n // results.push(notificationTwo);\r\n\r\n const byDayPairs = List(results)\r\n .groupBy(notif => startOfDay(new Date(notif?.date)).getTime())\r\n .entrySeq();\r\n\r\n // if (!productCode) return
    \"no Summary Information available\"
    ;\r\n if (loading && byDayPairs.count() === 0) return
    ;\r\n if (results.length === 0) return
    < Translate id=\"message.error.NoConfirmedNotifications\" />
    ;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {byDayPairs\r\n .zipAll(byDayPairs.skip(1))\r\n .map(([[day, notifs], nextPair]) => (\r\n \r\n ))}\r\n {loading &&
    }\r\n
    \r\n
    \r\n );\r\n};\r\nexport default withLocalize(NotificationsHistory);\r\n","import * as t from \"../../../../types/apolloGenerated/silkNotifications\";\r\n\r\nexport type QueryData = t.silkNotifications;\r\nexport type QueryVars = t.silkNotificationsVariables;\r\nexport type SilkMessage = {icon: string, header: string, date: Date, direction: any}\r\n\r\n\r\nexport enum Level {\r\n E = \"error\",\r\n W = \"warn\",\r\n I = \"info\"\r\n}\r\n\r\nexport function getLevel(notif: SilkMessage): Level {\r\n switch (notif?.icon) {\r\n case \"error\":\r\n return Level.E;\r\n case \"warning\":\r\n return Level.W;\r\n default:\r\n return Level.I;\r\n }\r\n}\r\n","import React from \"react\";\r\nimport format from \"date-fns/format\";\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\nimport ErrorIcon from \"@material-ui/icons/HighlightOff\";\r\nimport WarnIcon from \"@material-ui/icons/ErrorOutline\";\r\nimport InfoIcon from \"@material-ui/icons/CheckCircleOutline\";\r\n\r\nimport colours from \"../../../../themes/bwtColors\";\r\nimport { Level } from \"./types\";\r\nimport { Translate } from \"react-localize-redux\";\r\n\r\nimport {\r\n productInstanceAndCustomerDetails_productInstance_instanceInformation_SilkInstanceInformation_notifications as SilkNotifArray,\r\n} from \"types/apolloGenerated/productInstanceAndCustomerDetails\"\r\n\r\nconst iconStyle = {\r\n flexShrink: 0,\r\n margin: 10,\r\n fontSize: 30\r\n};\r\n\r\nconst useStyles = makeStyles(() => ({\r\n root: { display: \"flex\", alignItems: \"center\" },\r\n errorIcon: { ...iconStyle, color: colours.errorRed },\r\n warnIcon: { ...iconStyle, color: colours.warnYellow },\r\n infoIcon: { ...iconStyle, color: colours.arctic }\r\n}));\r\n\r\ninterface NotificationProps {\r\n notification: SilkNotifArray | null;\r\n}\r\n\r\nconst getMessage = (messageType: number) => {\r\n switch (messageType) {\r\n case 3001:\r\n return \r\n case 3002:\r\n return \r\n case 6001:\r\n return \r\n case 6002:\r\n return \r\n case 5003:\r\n return \r\n case 6003:\r\n return \r\n case 5004:\r\n return \r\n case 6004:\r\n return \r\n case 5005:\r\n return \r\n case 6005:\r\n return \r\n case 5006:\r\n return \r\n case 6006:\r\n return \r\n case 2000:\r\n return \r\n case 7000:\r\n return \r\n case 8000:\r\n return \r\n case 2010:\r\n return \r\n case 2011:\r\n return \r\n case 7012:\r\n return \r\n case 7070:\r\n return \r\n case 8013:\r\n return \r\n case 8014:\r\n return \r\n case 5010:\r\n return \r\n case 5011:\r\n return \r\n case 5012:\r\n return \r\n case 60121:\r\n return \r\n case 60122:\r\n return \r\n case 5013:\r\n return \r\n case 60131:\r\n return \r\n case 60132:\r\n return \r\n default:\r\n return
    \r\n }\r\n\r\n}\r\n\r\nconst Notifcation: React.FC = ({ notification }) => {\r\n const classes = useStyles();\r\n const notifData = JSON.parse(notification?.message ?? \"{}\")\r\n const typeAsString = notification?.messageType?.toString()\r\n const level = typeAsString?.startsWith(\"7\") ? Level.W : typeAsString?.startsWith(\"8\") ? Level.E : Level.I\r\n let headerAsString = typeAsString;\r\n let header = Number(headerAsString);\r\n if (headerAsString === \"6012\" || headerAsString === \"6013\") {\r\n if (notifData?.Data?.state.toString() === \"1\") {\r\n headerAsString += 1\r\n header = Number(headerAsString);\r\n }\r\n else if (notifData?.Data?.state.toString() === \"2\") {\r\n headerAsString += 2\r\n header = Number(headerAsString);\r\n }\r\n }\r\n\r\n return (\r\n
    \r\n {level === Level.E ? (\r\n \r\n ) : level === Level.W ? (\r\n \r\n ) : (\r\n \r\n )}\r\n
    \r\n
    {getMessage(header ?? 0)}
    \r\n \r\n {\r\n (translate) => {\r\n return
    {format(new Date(notifData?.Timestamp), translate.translate('generics.dateTimeFormatFNS') as string)}
    ;\r\n }\r\n }\r\n
    \r\n {notifData.Data && notifData.Data.email ?
    {notifData.Data.email}
    :
    }\r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default Notifcation;\r\n","import React, { useState, useRef, useEffect } from \"react\";\r\nimport { Collection } from \"immutable\";\r\nimport format from \"date-fns/format\";\r\n\r\nimport {\r\n productInstanceAndCustomerDetails_productInstance_instanceInformation_SilkInstanceInformation_notifications as SilkNotifArray,\r\n} from \"types/apolloGenerated/productInstanceAndCustomerDetails\"\r\n\r\nimport Notification from \"./Notification\";\r\n\r\n\r\ninterface DayGroupProps {\r\n notifications: Collection;\r\n dayMs: number;\r\n temporalHeight: number;\r\n isLast: boolean;\r\n}\r\n\r\nconst style = require(\"../NotificationsHistory/style.module.css\");\r\n\r\nconst DayGroup: React.FC = ({\r\n notifications,\r\n dayMs,\r\n temporalHeight,\r\n isLast\r\n}) => {\r\n const notifsRef = useRef(null);\r\n const [notifsHeight, setNotifsHeight] = useState(0);\r\n useEffect(() => {\r\n if (notifsRef && notifsRef.current)\r\n setNotifsHeight(notifsRef.current.offsetHeight);\r\n }, []);\r\n const [userExpanded, setUserExpanded] = useState(true);\r\n const defaultExpanded = (notifsRef &&\r\n notifsRef.current &&\r\n notifsHeight < temporalHeight) as boolean;\r\n const expanded = defaultExpanded || userExpanded;\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n {!isLast &&
    }\r\n
    \r\n
    \r\n
    {format(dayMs, \"yyy.MM.dd\")}
    \r\n
    setUserExpanded(!userExpanded)}>\r\n
    \r\n \r\n \r\n {notifications.map((notif, idx) => (\r\n \r\n ))}\r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default DayGroup;\r\n","import React, { useRef } from \"react\";\r\nimport { Translate, withLocalize, LocalizeContextProps } from \"react-localize-redux\";\r\nimport differenceInCalendarDays from \"date-fns/differenceInCalendarDays\";\r\nimport startOfDay from \"date-fns/startOfDay\";\r\nimport { List } from \"immutable\";\r\nimport RootRef from \"@material-ui/core/RootRef\";\r\nimport Box from \"@material-ui/core/Box\";\r\nimport Typography from \"@material-ui/core/Typography\";\r\n\r\nimport DayGroup from \"./DayGroup\";\r\n\r\nimport {\r\n productInstanceAndCustomerDetails_productInstance_instanceInformation_SilkInstanceInformation_notifications as SilkNotifArray,\r\n productInstanceAndCustomerDetails_productInstance_instanceInformation_SilkInstanceInformation as SilkInstanceInformation\r\n} from \"types/apolloGenerated/productInstanceAndCustomerDetails\"\r\n\r\ninterface NotificationsHistoryProps extends LocalizeContextProps {\r\n productCode: string;\r\n silkData: SilkInstanceInformation | null\r\n}\r\n\r\nconst SilkNotifs: React.FC = ({\r\n productCode,\r\n silkData\r\n}) => {\r\n\r\n const ref = useRef(null);\r\n\r\n const evaluate = (messageType: number) => messageType > 1999\r\n let silkNotifications: (SilkNotifArray | null)[] = []\r\n if (silkData && silkData?.notifications) {\r\n silkNotifications = silkData.notifications.filter(notif => evaluate(notif?.messageType ?? 0))\r\n }\r\n\r\n const byDayPairs = List(silkNotifications)\r\n .groupBy(notif => startOfDay(new Date(notif?.timestamp)).getTime())\r\n .entrySeq();\r\n if (silkData?.notifications?.length === 0) return
    < Translate id=\"message.error.NoSilkNotifications\" />
    ;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {byDayPairs\r\n .zipAll(byDayPairs.skip(1))\r\n .map(([[day, notifs], nextPair]) => (\r\n \r\n ))}\r\n \r\n \r\n );\r\n};\r\nexport default withLocalize(SilkNotifs);\r\n","import React from \"react\";\r\nimport { createStyles, Theme, makeStyles } from \"@material-ui/core/styles\";\r\nimport {\r\n CheckCircleOutlineRounded,\r\n HighlightOff,\r\n ErrorOutline,\r\n //Height\r\n} from \"@material-ui/icons\";\r\nimport format from \"date-fns/format\";\r\n\r\nimport { Translate } from \"react-localize-redux\";\r\nimport bwtColors from \"themes/bwtColors\";\r\nimport { NotificationType } from \"../../../types/apolloGenerated/globalTypes\"\r\n\r\n\r\nimport {\r\n productInstanceAndCustomerDetails_productInstance_instanceInformation_PerlaInstanceInformation_unconfirmedNotifications as unconfirmedNotifs,\r\n} from \"types/apolloGenerated/productInstanceAndCustomerDetails\"\r\nimport { Box } from \"@material-ui/core\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) => {\r\n return createStyles({\r\n\r\n notificationPanelInnerContainer: {\r\n display: \"flex\",\r\n flexWrap: \"wrap\",\r\n marginBottom: 15,\r\n overflow: \"hidden\",\r\n minWidth: \"1050px\",\r\n maxWidth: \"1700px\"\r\n },\r\n\r\n\r\n notifContainer: {\r\n display: \"flex\",\r\n border: \"1px solid #B5B9BB\",\r\n height: \"70px\",\r\n alignItems: \"center\",\r\n padding: \"20px\",\r\n fontSize: \"15px\",\r\n margin: \"10px\",\r\n width: \"calc(20% - 20px)\",\r\n\r\n '@media (max-width: 1799px)': {\r\n width: \"calc(25% - 20px)\",\r\n },\r\n\r\n '@media (max-width: 1450px)': {\r\n width: \"calc(33.3333% - 20px)\",\r\n },\r\n }\r\n });\r\n});\r\n\r\nexport interface DeviceStatusProps {\r\n unconfirmedNotifs: (unconfirmedNotifs | null)[]\r\n stateTitle: String | null\r\n}\r\n\r\nconst Notification: React.FC<{ code: NotificationType, title: String, sentAt: Date | null }> = ({ code, title, sentAt }) => {\r\n const classes = useStyles();\r\n return (\r\n
    \r\n {getIcon(code)}\r\n
    \r\n
    \r\n {title}\r\n
    \r\n
    \r\n \r\n {\r\n (translate) => {\r\n return {sentAt ? format(new Date(sentAt), translate.translate('generics.dateTimeFormatFNS') as string) : \"\"} \r\n }\r\n }\r\n \r\n
    \r\n
    \r\n
    \r\n )\r\n}\r\n\r\nconst getIcon = (type: NotificationType) => {\r\n switch (type) {\r\n case NotificationType.ERROR:\r\n case NotificationType.INTERNAL_ERROR:\r\n return ;\r\n case NotificationType.WARNING:\r\n case NotificationType.SERVICE:\r\n return (\r\n \r\n );\r\n default:\r\n return \r\n }\r\n};\r\n\r\nconst DeviceStatus: React.FC = ({ unconfirmedNotifs, stateTitle }) => {\r\n const classes = useStyles();\r\n let deviceDisconnected = false;\r\n let disconnectCodeType = NotificationType.ERROR;\r\n\r\n if (stateTitle?.includes(\"disconnected\")) {\r\n deviceDisconnected = true;\r\n if (stateTitle?.includes(\"Warning\")) {\r\n disconnectCodeType = NotificationType.WARNING\r\n }\r\n }\r\n\r\n return (\r\n \r\n {unconfirmedNotifs.length > 0 ? (\r\n unconfirmedNotifs.map((notif, idx) => (\r\n \r\n )\r\n )) : (deviceDisconnected === true ? :\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 DeviceStatus;\r\n","import React from \"react\";\r\n\r\n\r\nimport { createStyles, Theme, makeStyles } from \"@material-ui/core/styles\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) => {\r\n return createStyles({\r\n circle: {\r\n fill: \"none\",\r\n\r\n },\r\n \"@keyframes progress\": {\r\n \"0%\": {\r\n strokeDasharray: \"0 100\",\r\n opacity: \"0\"\r\n },\r\n \"100%\": {\r\n opacity: \"1\",\r\n \r\n },\r\n\r\n \r\n }\r\n });\r\n});\r\n\r\nconst CircleSegment = ({\r\n value = 1,\r\n colour = \"rgb(137, 158, 181)\",\r\n lineWidth = 1.5,\r\n}) => {\r\n const classes = useStyles();\r\n const percentage = value;\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default CircleSegment;\r\n","import React, { Fragment } from \"react\";\r\nimport { createStyles, Theme, makeStyles } from \"@material-ui/core/styles\";\r\nimport { Translate } from \"react-localize-redux\";\r\nimport gql from \"graphql-tag\";\r\nimport { useQuery } from \"@apollo/react-hooks\";\r\nimport Typography from \"@material-ui/core/Typography\";\r\nimport { Box } from \"@material-ui/core\";\r\nimport Link from \"@material-ui/core/Link\";\r\nimport {\r\n ArrowBackIosRounded,\r\n ArrowForwardIosRounded,\r\n ErrorOutline,\r\n} from \"@material-ui/icons\";\r\nimport TextField from \"@material-ui/core/TextField\";\r\n\r\nimport { CircularProgress } from \"@material-ui/core\";\r\n\r\nimport CircleSegment from \"./CircleSegment\";\r\nimport {\r\n deviceSummary as QueryData,\r\n deviceSummaryVariables as QueryVars,\r\n} from \"types/apolloGenerated/deviceSummary\";\r\n\r\nimport { isWithinInterval, subHours } from \"date-fns\";\r\nimport warningTriangle from \"../../../resources/ic_warning_16px.svg\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) => {\r\n return createStyles({\r\n arrow: { fontSize: 16, margin: 10 },\r\n textField: {\r\n [`& input::-webkit-clear-button,\r\n & input::-webkit-outer-spin-button,\r\n & input::-webkit-inner-spin-button,\r\n & input::-webkit-toolbarbutton-dropdown`]: {\r\n display: \"none\",\r\n },\r\n width: 140,\r\n },\r\n vertAlign: {\r\n verticalAlign: \"middle\",\r\n },\r\n bigNumbers: {\r\n \"@media (max-width: 1549px)\": {\r\n fontSize: \"35px\",\r\n },\r\n \"@media (min-width: 1550px) and (max-width: 1850px)\": {\r\n fontSize: \"45px\",\r\n },\r\n marginTop: \"18%\",\r\n height: \"22%\",\r\n fontSize: \"55px\",\r\n width: \"30%\",\r\n textAlign: \"center\",\r\n },\r\n bigNumbersWithDoubleCircle: {\r\n \"@media (max-width: 1549px)\": {\r\n fontSize: \"25px\",\r\n },\r\n \"@media (min-width: 1550px) and (max-width: 1850px)\": {\r\n fontSize: \"35px\",\r\n },\r\n marginTop: \"18%\",\r\n height: \"22%\",\r\n fontSize: \"45px\",\r\n width: \"30%\",\r\n textAlign: \"center\",\r\n },\r\n measurement: {\r\n \"@media (max-width: 1549px)\": {\r\n fontSize: \"15px\",\r\n },\r\n \"@media (min-width: 1550px) and (max-width: 1850px)\": {\r\n fontSize: \"18px\",\r\n },\r\n height: \"8%\",\r\n fontSize: \"20px\",\r\n width: \"30%\",\r\n textAlign: \"center\",\r\n },\r\n measurementText: {\r\n \"@media (max-width: 1549px)\": {\r\n fontSize: \"15px\",\r\n },\r\n \"@media (min-width: 1550px) and (max-width: 1850px)\": {\r\n fontSize: \"18px\",\r\n },\r\n fontSize: \"20px\",\r\n width: \"30%\",\r\n textAlign: \"center\",\r\n height: \"40%\",\r\n },\r\n bottomInformationTitle: {\r\n \"@media (max-width: 1549px)\": {\r\n fontSize: \"13px\",\r\n },\r\n \"@media (min-width: 1550px) and (max-width: 1850px)\": {\r\n fontSize: \"15px\",\r\n },\r\n fontWeight: \"bold\",\r\n marginRight: \"16px\",\r\n fontSize: \"17px\",\r\n },\r\n bottomInformation: {\r\n \"@media (max-width: 1549px)\": {\r\n fontSize: \"13px\",\r\n },\r\n \"@media (min-width: 1550px) and (max-width: 1850px)\": {\r\n fontSize: \"15px\",\r\n },\r\n fontSize: \"17px\",\r\n },\r\n circleInformation: {\r\n position: \"absolute\",\r\n top: \"7.5%\",\r\n left: \"7.9%\",\r\n width: \"84.4%\",\r\n height: \"82.9%\",\r\n borderColor: \"#f8f8f8\",\r\n borderRadius: \"50%\",\r\n borderWidth: \"0.6vw\",\r\n borderStyle: \"solid\",\r\n display: \"table\",\r\n },\r\n perlaDivider: {\r\n margin: \"5% 0 5% 35%\",\r\n backgroundColor: \"rgb(137, 158, 181)\",\r\n width: \"30%\",\r\n height: \"2px\",\r\n },\r\n statsContainer: {\r\n display: \"flex\",\r\n width: \"calc(100%/3)\",\r\n },\r\n middleContainer: {\r\n display: \"flex\",\r\n flexWrap: \"wrap\",\r\n width: \"100%\",\r\n height: \"80%\",\r\n },\r\n divider: {\r\n width: \"1px\",\r\n backgroundColor: \"#666B6E\",\r\n margin: \"5% 0 5% 0\",\r\n },\r\n singleCircleContainer: {\r\n width: \"30%\",\r\n margin: \"3%\",\r\n position: \"relative\",\r\n },\r\n doubleCircleContainer: {\r\n width: \"30%\",\r\n margin: \"1%\",\r\n position: \"relative\",\r\n },\r\n circlePercentageText: {\r\n textAlign: \"center\",\r\n fontWeight: \"bold\",\r\n \"@media (max-width: 1549px)\": {\r\n fontSize: \"24px\",\r\n },\r\n \"@media (min-width: 1550px) and (max-width: 1850px)\": {\r\n fontSize: \"34px\",\r\n },\r\n fontSize: \"40px\",\r\n },\r\n warning: {\r\n backgroundSize: \"cover\",\r\n backgroundPosition: \"center\",\r\n height: \"30px\",\r\n width: \"30px\",\r\n backgroundRepeat: \"no-repeat\",\r\n margin: \"auto\",\r\n backgroundImage: `url(${warningTriangle})`,\r\n },\r\n });\r\n});\r\n\r\nconst QUERY = gql`\r\n query deviceSummary($productCode: String!, $timestamp: DateTimeOffset!) {\r\n productInstance(productCode: $productCode) {\r\n id\r\n instanceInformation {\r\n __typename\r\n ... on PerlaInstanceInformation {\r\n registeredPerlaInstanceInformation {\r\n stateBody\r\n firmware\r\n }\r\n summary(timestamp: $timestamp) {\r\n next\r\n previous\r\n value {\r\n logDate\r\n brineCounter\r\n electrolysisCurrent\r\n waterHardnessIn\r\n waterHardnessOut\r\n waterTreatedCurrentMonth\r\n waterTreatedCurrentYear\r\n waterTreatedDaily\r\n consumptionOfResourceSinceRefill\r\n consumptionOfResourceSinceRefillMineral\r\n totalConsumptionOfResource\r\n saltAvailabilityInDay\r\n }\r\n }\r\n summaryRawData(timestamp: $timestamp) {\r\n value\r\n }\r\n telemetry(timestamp: $timestamp) {\r\n next\r\n previous\r\n value {\r\n availableAmountOfResource\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n`;\r\n\r\nfunction protectDateSetter(\r\n setter: (date: Date) => void\r\n): (dateStr: string | null) => void {\r\n return (dateStr: string | null) => {\r\n if (dateStr) {\r\n const date = new Date(dateStr);\r\n if (!isNaN(date.getTime())) {\r\n setter(date);\r\n }\r\n }\r\n };\r\n}\r\n\r\ninterface DeviceSummaryProps {\r\n productCode: string;\r\n articleNumber: string;\r\n}\r\n\r\nconst getMineralValue = (\r\n firmwareVersion: number,\r\n consumptionOfResourceSinceRefillMineral: number\r\n) => {\r\n const PERLA_HYBRID_MINERAL_CAPACITY = 3000;\r\n if (consumptionOfResourceSinceRefillMineral != null) {\r\n if (firmwareVersion < 2.0) {\r\n //Consumption needs to be scaled in terms of ml to liters\r\n const consumedMineralCapacity =\r\n PERLA_HYBRID_MINERAL_CAPACITY -\r\n consumptionOfResourceSinceRefillMineral * 1000;\r\n const mineralRemaining =\r\n (consumedMineralCapacity / PERLA_HYBRID_MINERAL_CAPACITY) * 100;\r\n return mineralRemaining;\r\n } else {\r\n const consumedMineralCapacity =\r\n PERLA_HYBRID_MINERAL_CAPACITY - consumptionOfResourceSinceRefillMineral;\r\n const mineralRemaining =\r\n (consumedMineralCapacity / PERLA_HYBRID_MINERAL_CAPACITY) * 100;\r\n return mineralRemaining;\r\n }\r\n }\r\n return 0;\r\n};\r\n\r\nconst DeviceSummary: React.FC = ({\r\n productCode,\r\n articleNumber,\r\n}) => {\r\n const classes = useStyles();\r\n const initialDate = new Date();\r\n const [selectedDate, setSelectedDate] = React.useState(initialDate);\r\n const [loadNewDate, setLoadNewDate] = React.useState(false);\r\n\r\n const { data, loading, error } = useQuery(QUERY, {\r\n variables: { productCode, timestamp: selectedDate },\r\n });\r\n\r\n //const { results } = usePaginatedNotifications(productCode);\r\n\r\n if (error) console.error(error);\r\n\r\n const info = data?.productInstance?.instanceInformation;\r\n\r\n let value;\r\n let previous: string = \"\";\r\n let next: string = \"\";\r\n let availableResource: number = 0;\r\n let isDisconnected = false;\r\n let firmwareVersion = 0;\r\n\r\n if (info?.__typename === \"PerlaInstanceInformation\") {\r\n previous = info?.summary?.previous;\r\n next = info?.summary?.next;\r\n value = info?.summary?.value;\r\n availableResource = info?.telemetry?.value?.availableAmountOfResource ?? 0;\r\n isDisconnected = info?.registeredPerlaInstanceInformation?.stateBody\r\n ? info?.registeredPerlaInstanceInformation?.stateBody.includes(\r\n \"disconnected\"\r\n )\r\n : false;\r\n firmwareVersion = info?.registeredPerlaInstanceInformation?.firmware ?? 0;\r\n }\r\n\r\n const {\r\n logDate,\r\n brineCounter,\r\n electrolysisCurrent,\r\n waterHardnessIn,\r\n waterHardnessOut,\r\n waterTreatedCurrentMonth,\r\n waterTreatedCurrentYear,\r\n waterTreatedDaily,\r\n saltAvailabilityInDay,\r\n consumptionOfResourceSinceRefillMineral,\r\n } = value || {};\r\n\r\n const sampleDate = logDate ? new Date(logDate) : null;\r\n const pickerDate = sampleDate && !loading ? sampleDate : selectedDate;\r\n const maxDailyWater = 3000;\r\n const maxMonthlyWater = 90000;\r\n const maxYearlyWater = 1080000;\r\n const setSelectedDateStr = protectDateSetter(setSelectedDate);\r\n\r\n const downloadIoTSummary = () => {\r\n if (\r\n data?.productInstance?.instanceInformation?.__typename ===\r\n \"PerlaInstanceInformation\"\r\n ) {\r\n if (data?.productInstance?.instanceInformation.summaryRawData?.value) {\r\n const notificationSummary = JSON.stringify(\r\n data?.productInstance?.instanceInformation.summaryRawData?.value,\r\n null,\r\n 2\r\n ).replace(/\\\\\"/g, '\"');\r\n\r\n console.log(\"SUMMARY RAW: \", notificationSummary);\r\n\r\n const x = window.open();\r\n if (x) {\r\n x.document.open();\r\n x.document.write(\r\n \"
    \" + notificationSummary + \"
    \"\r\n );\r\n x.document.close();\r\n }\r\n }\r\n }\r\n };\r\n\r\n if (loading && !loadNewDate)\r\n return (\r\n
    \r\n {\" \"}\r\n
    \r\n );\r\n if (!value)\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n const perlaHybridArticleNumbers = [\r\n \"6-501305\",\r\n \"6-500145\",\r\n \"6-501312\",\r\n \"11435\",\r\n ];\r\n const isPerlaHybrid = perlaHybridArticleNumbers.includes(articleNumber);\r\n const mineralLeft = Math.floor(\r\n getMineralValue(\r\n firmwareVersion,\r\n consumptionOfResourceSinceRefillMineral ?? 0\r\n )\r\n );\r\n\r\n const showError = () => {\r\n return isDisconnected ? (\r\n \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n ) : !loading &&\r\n next === null &&\r\n !isWithinInterval(pickerDate, {\r\n start: subHours(new Date(), 48),\r\n end: new Date(),\r\n }) ? (\r\n \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n ) : (\r\n \r\n );\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {loading ? (\r\n
    \r\n ) : (\r\n {\r\n setSelectedDateStr(previous);\r\n setLoadNewDate(true);\r\n }}\r\n />\r\n )}\r\n setSelectedDateStr(e.target.value)}\r\n />\r\n {loading ? (\r\n
    \r\n ) : (\r\n {\r\n setSelectedDateStr(next);\r\n setLoadNewDate(true);\r\n }}\r\n />\r\n )}\r\n \r\n \r\n \r\n {showError()}\r\n {!loading ? (\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n {availableResource.toString()}%\r\n \r\n \r\n \r\n {saltAvailabilityInDay ? saltAvailabilityInDay : \"0\"}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {isPerlaHybrid ? (\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n {mineralLeft.toString()}%\r\n \r\n \r\n \r\n \r\n \r\n ) : (\r\n \r\n )}\r\n \r\n \r\n \r\n {waterTreatedDaily ? (\r\n waterTreatedDaily > maxDailyWater ? (\r\n
    \r\n ) : (\r\n waterTreatedDaily.toFixed(0)\r\n )\r\n ) : (\r\n \"0\"\r\n )}\r\n \r\n \r\n {waterTreatedCurrentMonth ? (\r\n waterTreatedCurrentMonth > maxMonthlyWater ? (\r\n
    \r\n ) : (\r\n waterTreatedCurrentMonth.toFixed(0)\r\n )\r\n ) : (\r\n \"0\"\r\n )}\r\n \r\n \r\n {waterTreatedCurrentYear ? (\r\n waterTreatedCurrentYear > maxYearlyWater ? (\r\n
    \r\n ) : (\r\n waterTreatedCurrentYear.toFixed(0)\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\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {electrolysisCurrent ? electrolysisCurrent.toFixed(0) : \"0\"}\r\n \r\n mA\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {brineCounter ? (brineCounter * 0.5263).toFixed(0) : \"0\"}\r\n \r\n ml\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {waterHardnessIn ? waterHardnessIn.toFixed(1) : \"0.0\"}\r\n {\"/\"}\r\n {waterHardnessOut ? waterHardnessOut.toFixed(1) : \"0.0\"}\r\n \r\n dH\r\n \r\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 DeviceSummary;\r\n","import React, { Fragment, useState } from \"react\";\r\nimport { createStyles, Theme, makeStyles } from \"@material-ui/core/styles\";\r\nimport { Translate } from \"react-localize-redux\";\r\nimport Typography from \"@material-ui/core/Typography\";\r\nimport { Box, TextField } from \"@material-ui/core\";\r\n\r\nimport { isWithinInterval, subHours, parseISO } from \"date-fns\";\r\n\r\nimport {\r\n ArrowBackIosRounded,\r\n ArrowForwardIosRounded,\r\n ErrorOutline,\r\n} from \"@material-ui/icons\";\r\n\r\nimport CircleSegment from \"./CircleSegment\";\r\n\r\nimport { productInstanceAndCustomerDetails_productInstance_instanceInformation_SilkInstanceInformation_notifications as SilkNotifArray } from \"types/apolloGenerated/productInstanceAndCustomerDetails\";\r\n\r\nimport { productInstanceAndCustomerDetails_productInstance_instanceInformation_SilkInstanceInformation as SilkInstanceInformation } from \"../../../types/apolloGenerated/productInstanceAndCustomerDetails\";\r\nimport { NotificationType } from \"types/apolloGenerated/globalTypes\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) => {\r\n return createStyles({\r\n arrow: { fontSize: 16, margin: 10 },\r\n textField: {\r\n [`& input::-webkit-clear-button,\r\n & input::-webkit-outer-spin-button,\r\n & input::-webkit-inner-spin-button,\r\n & input::-webkit-toolbarbutton-dropdown`]: {\r\n display: \"none\",\r\n },\r\n },\r\n vertAlign: {\r\n verticalAlign: \"middle\",\r\n },\r\n icon: {\r\n marginRight: \"10px\",\r\n verticalAlign: \"top\",\r\n },\r\n bigNumbers: {\r\n \"@media (max-width: 1549px)\": {\r\n fontSize: \"35px\",\r\n },\r\n \"@media (min-width: 1550px) and (max-width: 1850px)\": {\r\n fontSize: \"45px\",\r\n },\r\n marginTop: \"18%\",\r\n height: \"22%\",\r\n fontSize: \"55px\",\r\n width: \"30%\",\r\n textAlign: \"center\",\r\n marginBottom: \"5%\",\r\n },\r\n measurement: {\r\n \"@media (max-width: 1549px)\": {\r\n fontSize: \"15px\",\r\n },\r\n \"@media (min-width: 1550px) and (max-width: 1850px)\": {\r\n fontSize: \"18px\",\r\n },\r\n height: \"8%\",\r\n fontSize: \"20px\",\r\n width: \"30%\",\r\n textAlign: \"center\",\r\n },\r\n measurementText: {\r\n \"@media (max-width: 1549px)\": {\r\n fontSize: \"15px\",\r\n },\r\n \"@media (min-width: 1550px) and (max-width: 1850px)\": {\r\n fontSize: \"18px\",\r\n },\r\n fontSize: \"20px\",\r\n width: \"30%\",\r\n textAlign: \"center\",\r\n height: \"40%\",\r\n },\r\n bottomInformationTitle: {\r\n \"@media (max-width: 1549px)\": {\r\n fontSize: \"13px\",\r\n },\r\n \"@media (min-width: 1550px) and (max-width: 1850px)\": {\r\n fontSize: \"15px\",\r\n },\r\n fontWeight: \"bold\",\r\n marginRight: \"16px\",\r\n fontSize: \"17px\",\r\n },\r\n bottomInformation: {\r\n \"@media (max-width: 1549px)\": {\r\n fontSize: \"13px\",\r\n },\r\n \"@media (min-width: 1550px) and (max-width: 1850px)\": {\r\n fontSize: \"15px\",\r\n },\r\n fontSize: \"17px\",\r\n },\r\n circleInformation: {\r\n position: \"absolute\",\r\n top: \"7.5%\",\r\n left: \"7.9%\",\r\n width: \"84.4%\",\r\n height: \"82.9%\",\r\n borderColor: \"#f8f8f8\",\r\n borderRadius: \"50%\",\r\n borderWidth: \"0.6vw\",\r\n borderStyle: \"solid\",\r\n display: \"table\",\r\n },\r\n perlaDivider: {\r\n margin: \"5% 0 5% 35%\",\r\n backgroundColor: \"rgb(137, 158, 181)\",\r\n width: \"30%\",\r\n height: \"2px\",\r\n },\r\n statsContainer: {\r\n display: \"flex\",\r\n width: \"calc(100%/3)\",\r\n },\r\n middleContainer: {\r\n display: \"flex\",\r\n flexWrap: \"wrap\",\r\n width: \"100%\",\r\n height: \"80%\",\r\n },\r\n divider: {\r\n width: \"1px\",\r\n backgroundColor: \"#666B6E\",\r\n margin: \"5% 0 5% 0\",\r\n },\r\n singleCircleContainer: {\r\n width: \"30%\",\r\n margin: \"3%\",\r\n position: \"relative\",\r\n },\r\n circlePercentageText: {\r\n textAlign: \"center\",\r\n fontWeight: \"bold\",\r\n \"@media (max-width: 1549px)\": {\r\n fontSize: \"24px\",\r\n },\r\n \"@media (min-width: 1550px) and (max-width: 1850px)\": {\r\n fontSize: \"34px\",\r\n },\r\n fontSize: \"40px\",\r\n },\r\n });\r\n});\r\n\r\nconst GetConvertedHardness = (waterHardness: number, hardnessUnit: number) => {\r\n switch (hardnessUnit) {\r\n //1 ppm is 1 mg/l\r\n case 4:\r\n return waterHardness.toFixed(2).toString() + \" mg/l\";\r\n //1 ppm is 0.1 °F\r\n case 5:\r\n return (waterHardness * 0.1).toFixed(2).toString() + \" °F\";\r\n //1 ppm is 0.056 °D\r\n case 6:\r\n return (waterHardness * 0.056).toFixed(2).toString() + \" °D\";\r\n default:\r\n return \"0\";\r\n }\r\n};\r\n\r\nconst SilkSummary: React.FC<{ silkData: SilkInstanceInformation | null }> = ({\r\n silkData,\r\n}) => {\r\n const classes = useStyles();\r\n const [indexToShow, setIndexToShow] = useState(0);\r\n\r\n //get all summary messages\r\n const summaryType = 1001;\r\n let silkSummaryNotifs: (SilkNotifArray | null)[] = [];\r\n if (silkData && silkData?.notifications) {\r\n silkSummaryNotifs = silkData?.notifications.filter(\r\n (notif) => notif?.messageType === summaryType\r\n );\r\n }\r\n\r\n //get all telemetry messages\r\n const telemetryType = 1002;\r\n let silkTelemetryNotifs: (SilkNotifArray | null)[] = [];\r\n if (silkData && silkData?.notifications) {\r\n silkTelemetryNotifs = silkData?.notifications.filter(\r\n (notif) => notif?.messageType === telemetryType\r\n );\r\n }\r\n\r\n //parse JSON blob of summary obj to show\r\n let summaryData;\r\n let numberOfSummaryResults = 0;\r\n if (silkSummaryNotifs && silkSummaryNotifs[indexToShow]?.message) {\r\n numberOfSummaryResults = silkSummaryNotifs.length;\r\n summaryData = JSON.parse(silkSummaryNotifs[indexToShow]?.message ?? \"{}\");\r\n }\r\n\r\n //find matching remaining salt value from telemetry data\r\n const summaryTimestamp = summaryData?.Timestamp as String\r\n const matchingTelemetry = silkTelemetryNotifs.find((notif) => {\r\n if (notif?.message) {\r\n const data = JSON.parse(notif.message)\r\n return data.Timestamp.slice(0, 10) === summaryTimestamp?.slice(0, 10)\r\n }\r\n })\r\n\r\n const telemetryData = JSON.parse(matchingTelemetry?.message ?? \"{}\");\r\n\r\n if (!summaryData) {\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n }\r\n\r\n const timeStamp = summaryData?.Timestamp;\r\n const totalDays = summaryData?.Data?.daysInServ;\r\n const totalL = summaryData?.Data?.totalServWater;\r\n const totalRech = summaryData?.Data?.totalRecharg;\r\n const waterHardness = summaryData?.Data?.hardness;\r\n const hardnessUnit = summaryData?.Data?.waterHardUnit;\r\n const currentSalt =\r\n telemetryData?.Data?.remSalt === 0 ? 0 : telemetryData?.Data?.remSalt / 10;\r\n const maxSalt = silkData?.silkDetailsInstance?.maxSaltCapacityKg ?? 0;\r\n const availableResource = maxSalt === 0 ? 0 : (currentSalt / maxSalt) * 100;\r\n const isDisconnected = silkData?.state;\r\n\r\n const showError = () => {\r\n return isDisconnected === NotificationType.NOT_SYNCHED ? (\r\n \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n ) : indexToShow === 0 &&\r\n !isWithinInterval(parseISO(timeStamp), {\r\n start: subHours(new Date(), 48),\r\n end: new Date(),\r\n }) ? (\r\n \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n ) : (\r\n \r\n );\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n {\r\n if (indexToShow < numberOfSummaryResults - 1) {\r\n setIndexToShow(indexToShow + 1);\r\n }\r\n }}\r\n />\r\n }\r\n \r\n {\r\n 0 ? \"action\" : \"disabled\"}\r\n onClick={() => {\r\n if (indexToShow > 0) {\r\n setIndexToShow(indexToShow - 1);\r\n }\r\n }}\r\n />\r\n }\r\n \r\n \r\n \r\n {showError()}\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n {availableResource.toFixed(0).toString()}%\r\n \r\n \r\n \r\n {totalDays ? totalDays : \"0\"}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {totalDays ? totalDays.toFixed(0) : \"0\"}\r\n \r\n \r\n {totalL ? (totalL * 100).toFixed(0) : \"0\"}\r\n \r\n \r\n {totalRech ? totalRech.toFixed(0) : \"0\"}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {GetConvertedHardness(waterHardness ?? 0, hardnessUnit)}\r\n \r\n \r\n {waterHardness.toString() + \"ppm\"}\r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default SilkSummary;\r\n","import React, { useState } from \"react\";\r\nimport cx from \"classnames\";\r\nimport { formatNumber } from \"./index\";\r\n\r\nimport { createStyles, Theme, makeStyles } from \"@material-ui/core/styles\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) => {\r\n return createStyles({\r\n root: {\r\n width: \"100%\",\r\n height: \"240px\",\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n },\r\n upperRegion: {\r\n display: \"flex\",\r\n },\r\n xAxis: {\r\n height: \"20px\",\r\n flexShrink: 0,\r\n marginRight: \"25px\",\r\n display: \"flex\",\r\n justifyContent: \"space-between\",\r\n borderTop: \"1px solid #b5b9bb\",\r\n paddingLeft: \"5px\",\r\n },\r\n\r\n labelSeg: {\r\n width: \"20px\",\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n flexGrow: 1,\r\n alignItems: \"center\",\r\n justifyContent: \"space-between\",\r\n fontSize: \"11px\",\r\n },\r\n\r\n tick: {\r\n height: \"6px\",\r\n width: \"1px\",\r\n backgroundColor: \"#b5b9bb\",\r\n },\r\n\r\n barRegion: {\r\n position: \"relative\",\r\n marginTop: \"0.5em\",\r\n flexGrow: 1,\r\n height: \"220px\",\r\n },\r\n\r\n grid: {\r\n position: \"absolute\",\r\n width: \"100%\",\r\n height: \"100%\",\r\n top: \"0\",\r\n left: \"0\",\r\n padding: \"0 5px\",\r\n },\r\n\r\n gridLine: {\r\n width: \"100%\",\r\n height: \"calc(50% - 1px)\",\r\n borderTop: \"1px solid #b5b9bb\",\r\n },\r\n\r\n bars: {\r\n position: \"absolute\",\r\n paddingLeft: \"5px\",\r\n paddingRight: \"5px\",\r\n width: \"100%\",\r\n height: \"100%\",\r\n top: \"0\",\r\n left: \"0\",\r\n display: \"flex\",\r\n alignItems: \"flex-end\",\r\n justifyContent: \"space-between\",\r\n },\r\n\r\n barSeg: {\r\n display: \"flex\",\r\n flexGrow: 1,\r\n justifyContent: \"center\",\r\n transition: \"height 0.2s\",\r\n },\r\n\r\n bar: {\r\n height: \"100%\",\r\n borderTopLeftRadius: \"2px\",\r\n borderTopRightRadius: \"2px\",\r\n },\r\n\r\n barBlue: {\r\n backgroundColor: \"#6286a4\",\r\n },\r\n\r\n barHighBlue: {\r\n backgroundColor: \"#81b0d6\",\r\n },\r\n\r\n barHighPink: {\r\n backgroundColor: \"#f582a6\",\r\n },\r\n\r\n barPink: {\r\n backgroundColor: \"#f5b5c9\",\r\n },\r\n\r\n yAxis: {\r\n width: \"20px\",\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n justifyContent: \"space-between\",\r\n alignItems: \"center\",\r\n fontSize: \"11px\",\r\n padding: \"0.25em\",\r\n },\r\n tooltip: {\r\n backgroundColor: \"white\",\r\n padding: \"5px\",\r\n position: \"absolute\",\r\n borderRadius: \"3px\",\r\n transform: \"translateX(0px) translateY(-40px)\",\r\n border: \"1px solid #666B6E\",\r\n },\r\n });\r\n});\r\n\r\nconst roundToTwoDecimalPlaces = (value: number) =>\r\n Math.round(value * 100) / 100;\r\n\r\nconst Bars = ({\r\n values,\r\n topLabel,\r\n colour,\r\n maxIdx,\r\n}: {\r\n values: number[];\r\n topLabel: number;\r\n colour: string;\r\n maxIdx: number;\r\n}) => {\r\n const [focusedBar, setFocusedBar] = useState(null);\r\n const style = useStyles();\r\n const getBarWidth = (numberOfValues: number) => {\r\n if (numberOfValues < 3) return \"100px\";\r\n if (numberOfValues < 7) return \"45px\";\r\n if (numberOfValues < 10) return \"35px\";\r\n if (numberOfValues < 15) return \"25px\";\r\n return \"20px\";\r\n };\r\n const barWidth = getBarWidth(values.length);\r\n return (\r\n
    \r\n {values.map((value, index) => (\r\n \r\n setFocusedBar(index)}\r\n onMouseLeave={() => setFocusedBar(null)}\r\n className={cx(\r\n style.bar,\r\n index === maxIdx\r\n ? colour === \"pink\"\r\n ? style.barHighPink\r\n : style.barHighBlue\r\n : colour === \"pink\"\r\n ? style.barPink\r\n : style.barBlue\r\n )}\r\n style={{\r\n width: barWidth,\r\n outline: focusedBar === index ? \"#005D8F solid 2px\" : \"none\",\r\n position: \"relative\",\r\n }}\r\n />\r\n \r\n {formatNumber(value)}\r\n
    \r\n
    \r\n ))}\r\n
    \r\n );\r\n};\r\n\r\nconst AnimatedBarChart = ({\r\n labels,\r\n values,\r\n page,\r\n setPage,\r\n leftButtonEnabled,\r\n rightButtonEnabled,\r\n useLitres,\r\n useSalt,\r\n}: {\r\n labels: string[];\r\n values: number[];\r\n page: number;\r\n setPage: React.Dispatch>;\r\n leftButtonEnabled: boolean;\r\n rightButtonEnabled: boolean;\r\n useLitres: boolean;\r\n useSalt: boolean;\r\n}) => {\r\n const style = useStyles();\r\n const max = values.reduce((acc, value) => (acc > value ? acc : value), 0);\r\n const maxIdx =\r\n values.filter((value) => value === max).length < 2\r\n ? values.findIndex((value) => value === max)\r\n : -1;\r\n const midLabel = roundToTwoDecimalPlaces(max / 2);\r\n const topLabel = roundToTwoDecimalPlaces(midLabel * 2);\r\n\r\n const bars = [];\r\n const colour = useSalt ? \"pink\" : \"blue\";\r\n\r\n if (leftButtonEnabled) {\r\n const idx = page - 1;\r\n bars[idx] = (\r\n \r\n );\r\n }\r\n\r\n bars[page] = (\r\n \r\n );\r\n\r\n if (rightButtonEnabled) {\r\n const idx = page + 1;\r\n bars[idx] = (\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 {bars}\r\n
    \r\n
    \r\n
    {topLabel || \"\"}
    \r\n
    {midLabel || \"\"}
    \r\n
    \r\n {useSalt ? (\r\n
    kg
    \r\n ) : useLitres ? (\r\n
    litres
    \r\n ) : (\r\n
    m³
    \r\n )}\r\n
    \r\n
    \r\n
    \r\n
    \r\n {labels.map((label, index) => (\r\n
    \r\n
    \r\n {label}\r\n
    \r\n ))}\r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default AnimatedBarChart;\r\n","import React from \"react\";\r\nimport { Translate } from \"react-localize-redux\";\r\nimport { formatNumber } from \"./index\";\r\n\r\nconst Stats = ({\r\n average,\r\n max,\r\n total,\r\n useSalt,\r\n unit,\r\n}: {\r\n average: number;\r\n max: number;\r\n total: number;\r\n useSalt: boolean;\r\n unit: string;\r\n}) => {\r\n return (\r\n \r\n
    \r\n \r\n \r\n \r\n {\" \" + formatNumber(average) + \" \"}\r\n {useSalt ? (\r\n \r\n ) : unit === \"litres\" ? (\r\n \"L\"\r\n ) : (\r\n \"m³\"\r\n )}\r\n
    \r\n
    \r\n \r\n \r\n \r\n {\" \" + formatNumber(total) + \" \"}\r\n {useSalt ? (\r\n \r\n ) : unit === \"litres\" ? (\r\n \"L\"\r\n ) : (\r\n \"m³\"\r\n )}\r\n
    \r\n
    \r\n \r\n \r\n \r\n {\" \" + formatNumber(max) + \" \"}\r\n {useSalt ? (\r\n \r\n ) : unit === \"litres\" ? (\r\n \"L\"\r\n ) : (\r\n \"m³\"\r\n )}\r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default Stats;\r\n","import React from \"react\";\r\nimport startOfISOWeek from \"date-fns/startOfISOWeek\";\r\nimport eachWeekOfInterval from \"date-fns/eachWeekOfInterval\";\r\nimport { Translate } from \"react-localize-redux\";\r\nimport format from \"date-fns/format\";\r\nimport { CSSTransition, TransitionGroup } from \"react-transition-group\";\r\nimport AnimatedBarChart from \"./AnimatedBarChart\";\r\nimport Stats from \"./Stats\";\r\n\r\nimport {\r\n fillEmptyWaterConsumptionDataWithZeros,\r\n fillEmptySaltConsumptionDataWithZeros,\r\n} from \"./Chart\";\r\n\r\nimport { createStyles, Theme, makeStyles } from \"@material-ui/core/styles\";\r\n\r\nimport LeftArrow from \"../../../../../src/resources/graph_arrow_left_dark.svg\";\r\nimport RightArrow from \"../../../../../src/resources/graph_arrow_right_dark.svg\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) => {\r\n return createStyles({\r\n weekSwitcher: {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n },\r\n\r\n weekStatsSeg: {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n alignItems: \"center\",\r\n position: \"relative\",\r\n height: \"80px\",\r\n width: \"100%\",\r\n },\r\n\r\n animationFrame: {\r\n width: \"100%\",\r\n position: \"absolute\",\r\n transition: \"opacity 200ms\",\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n top: \"0\",\r\n left: \"0\",\r\n right: \"0\",\r\n bottom: \"0\",\r\n },\r\n\r\n selectedWeek: {\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n color: \"#666b6e\",\r\n fontSize: \"20px\",\r\n fontWeight: 700,\r\n },\r\n\r\n dash: {\r\n padding: \"0 5px\",\r\n },\r\n\r\n arrow: {\r\n cursor: \"pointer\",\r\n height: \"20px\",\r\n width: \"20px\",\r\n backgroundPosition: \"center\",\r\n backgroundRepeat: \"no-repeat\",\r\n backgroundSize: \"contain\",\r\n },\r\n\r\n unit: {\r\n paddingTop: \"10px\",\r\n fontSize: \"14px\",\r\n },\r\n enter: {\r\n opacity: \"0\",\r\n },\r\n\r\n enterActive: {\r\n opacity: \"1\",\r\n },\r\n\r\n enterDone: {\r\n opacity: \"1\",\r\n },\r\n\r\n exit: {\r\n opacity: \"0\",\r\n },\r\n\r\n exitActive: {\r\n opacity: \"0\",\r\n },\r\n });\r\n});\r\n\r\nconst getLabels = (start: any, until: any) => {\r\n const numberOfWeeks = eachWeekOfInterval(\r\n { start: start, end: until },\r\n { weekStartsOn: 1 }\r\n ).reduce((acc) => (acc += 1), 0);\r\n return [...Array(numberOfWeeks).keys()].map((n) => \"W\" + (n + 1));\r\n};\r\n\r\nconst getConsumptionAsWeek = (\r\n consumptions: {\r\n consumption: number;\r\n loggedAt: Date;\r\n }[]\r\n) => {\r\n const removedConsumptions = [...consumptions];\r\n let weekBuckets = [];\r\n while (removedConsumptions.length > 0) {\r\n const week = startOfISOWeek(removedConsumptions[0].loggedAt).getTime();\r\n const weekConsumptionValue = removedConsumptions\r\n .filter(\r\n (value: { consumption: number; loggedAt: Date }) =>\r\n startOfISOWeek(value.loggedAt).getTime() === week\r\n )\r\n //have ones in week\r\n .map((dayValue: { consumption: number; loggedAt: Date }) => {\r\n const index = removedConsumptions.findIndex(\r\n (value) => value === dayValue\r\n );\r\n removedConsumptions.splice(index, 1);\r\n return dayValue;\r\n })\r\n .reduce((acc, value) => (acc += value.consumption), 0);\r\n weekBuckets.push({\r\n consumption: weekConsumptionValue,\r\n week: new Date(week),\r\n });\r\n }\r\n return weekBuckets;\r\n};\r\n\r\nconst WeeklyChart = ({\r\n start,\r\n until,\r\n rightButtonEnabled,\r\n leftButtonEnabled,\r\n goToPreviousWeek,\r\n goToFollowingWeek,\r\n page,\r\n setPage,\r\n useLitres,\r\n useSalt,\r\n salt,\r\n water,\r\n unit,\r\n}: {\r\n start: Date;\r\n until: Date;\r\n rightButtonEnabled: boolean;\r\n leftButtonEnabled: boolean;\r\n goToPreviousWeek: () => void;\r\n goToFollowingWeek: () => void;\r\n page: number;\r\n setPage: React.Dispatch>;\r\n useLitres: boolean;\r\n useSalt: boolean;\r\n water: { loggedAt: any; water: number }[];\r\n salt: { loggedAt: any; salt: number }[];\r\n unit: string;\r\n}) => {\r\n const style = useStyles();\r\n // const { DailyWaterConsumptions } = dailyWaterReq.data || {};\r\n\r\n const labels = getLabels(start, until);\r\n\r\n const consumptions = useSalt\r\n ? fillEmptySaltConsumptionDataWithZeros(start, until, salt)\r\n : fillEmptyWaterConsumptionDataWithZeros(start, until, water, unit);\r\n\r\n const aggregatedConsumptions = getConsumptionAsWeek(consumptions);\r\n\r\n const monthCrossover =\r\n start.getFullYear() < until.getFullYear() ||\r\n start.getMonth() < until.getMonth();\r\n\r\n const yearCrossover = start.getFullYear() < until.getFullYear();\r\n const now = new Date();\r\n const differentYear = start.getFullYear() < now.getFullYear();\r\n\r\n const max =\r\n aggregatedConsumptions?.reduce(\r\n (acc, s) => (s.consumption > acc ? s.consumption : acc),\r\n 0\r\n ) ?? 0;\r\n\r\n const total =\r\n aggregatedConsumptions?.reduce((acc, s) => (acc += s.consumption), 0) ?? 0;\r\n\r\n const average = total / aggregatedConsumptions.length;\r\n\r\n return (\r\n
    \r\n
    \r\n leftButtonEnabled && goToPreviousWeek()}\r\n style={{\r\n opacity: leftButtonEnabled ? \"1\" : \"0.5\",\r\n backgroundImage: `url(${LeftArrow})`,\r\n }}\r\n />\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n {yearCrossover || differentYear ? (\r\n
    {format(start, \"d MMMM yyyy\")}
    \r\n ) : (\r\n // \r\n
    {format(start, \"d MMMM\")}
    \r\n )}\r\n
    -
    \r\n {/* if previous month show month name */}\r\n {(monthCrossover && yearCrossover) || differentYear ? (\r\n
    {format(until, \"d MMMM yyyy\")}
    \r\n ) : monthCrossover ? (\r\n // \r\n
    {format(until, \"d MMMM\")}
    \r\n ) : (\r\n // \r\n
    {format(until, \"d\")}
    \r\n )}\r\n
    \r\n
    \r\n {useSalt ? (\r\n \r\n ) : useLitres ? (\r\n \r\n ) : (\r\n \r\n )}\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n rightButtonEnabled && goToFollowingWeek()}\r\n style={{\r\n opacity: rightButtonEnabled ? \"1\" : \"0.5\",\r\n backgroundImage: `url(${RightArrow})`,\r\n }}\r\n />\r\n
    \r\n value.consumption)}\r\n page={page}\r\n setPage={setPage}\r\n rightButtonEnabled={rightButtonEnabled}\r\n leftButtonEnabled={leftButtonEnabled}\r\n useLitres={useLitres}\r\n useSalt={useSalt}\r\n />\r\n \r\n
    \r\n );\r\n};\r\n\r\nexport default WeeklyChart;\r\n","import React from \"react\";\r\nimport addMonths from \"date-fns/addMonths\";\r\nimport eachMonthOfInterval from \"date-fns/eachMonthOfInterval\";\r\nimport format from \"date-fns/format\";\r\nimport { CSSTransition, TransitionGroup } from \"react-transition-group\";\r\nimport AnimatedBarChart from \"./AnimatedBarChart\";\r\n\r\nimport LeftArrow from \"../../../../../src/resources/graph_arrow_left_dark.svg\";\r\nimport RightArrow from \"../../../../../src/resources/graph_arrow_right_dark.svg\";\r\n\r\nimport { Translate } from \"react-localize-redux\";\r\nimport Stats from \"./Stats\";\r\n\r\nimport {\r\n fillEmptyWaterConsumptionDataWithZeros,\r\n fillEmptySaltConsumptionDataWithZeros,\r\n} from \"./Chart\";\r\n\r\nimport { createStyles, Theme, makeStyles } from \"@material-ui/core/styles\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) => {\r\n return createStyles({\r\n weekSwitcher: {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n },\r\n\r\n weekStatsSeg: {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n alignItems: \"center\",\r\n position: \"relative\",\r\n height: \"80px\",\r\n width: \"100%\",\r\n },\r\n\r\n animationFrame: {\r\n width: \"100%\",\r\n position: \"absolute\",\r\n transition: \"opacity 200ms\",\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n top: \"0\",\r\n left: \"0\",\r\n right: \"0\",\r\n bottom: \"0\",\r\n },\r\n\r\n selectedWeek: {\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n color: \"#666b6e\",\r\n fontSize: \"20px\",\r\n fontWeight: 700,\r\n },\r\n\r\n dash: {\r\n padding: \"0 5px\",\r\n },\r\n\r\n arrow: {\r\n cursor: \"pointer\",\r\n height: \"20px\",\r\n width: \"20px\",\r\n backgroundPosition: \"center\",\r\n backgroundRepeat: \"no-repeat\",\r\n backgroundSize: \"contain\",\r\n },\r\n\r\n disabled: {\r\n opacity: \"0.5\",\r\n },\r\n\r\n unit: {\r\n paddingTop: \"10px\",\r\n fontSize: \"14px\",\r\n },\r\n enter: {\r\n opacity: \"0\",\r\n },\r\n\r\n enterActive: {\r\n opacity: \"1\",\r\n },\r\n\r\n enterDone: {\r\n opacity: \"1\",\r\n },\r\n\r\n exit: {\r\n opacity: \"0\",\r\n },\r\n\r\n exitActive: {\r\n opacity: \"0\",\r\n },\r\n });\r\n});\r\n\r\nconst getLabels = (start: Date, until: Date) => {\r\n const numberOfMonths = eachMonthOfInterval({\r\n start: start,\r\n end: until,\r\n }).reduce((acc) => (acc += 1), 0);\r\n if (numberOfMonths < 7) {\r\n return [...Array(numberOfMonths).keys()].map((n) =>\r\n format(addMonths(start, n), \"MMM\")\r\n );\r\n } else {\r\n return [...Array(numberOfMonths).keys()].map((n) =>\r\n format(addMonths(start, n), \"L\")\r\n );\r\n }\r\n};\r\n\r\nconst getConsumptionsAsMonth = (\r\n consumptions: {\r\n consumption: number;\r\n loggedAt: Date;\r\n }[]\r\n) => {\r\n const removedConsumptions = [...consumptions];\r\n let monthBuckets = [];\r\n while (removedConsumptions.length > 0) {\r\n const month = removedConsumptions[0].loggedAt.getMonth();\r\n const year = removedConsumptions[0].loggedAt.getFullYear();\r\n const monthConsumptionValue = removedConsumptions\r\n .filter(\r\n (value) =>\r\n value.loggedAt.getMonth() === month &&\r\n value.loggedAt.getFullYear() === year\r\n )\r\n .map((dayValue: { consumption: number; loggedAt: Date }) => {\r\n const index = removedConsumptions.findIndex(\r\n (value) => value === dayValue\r\n );\r\n removedConsumptions.splice(index, 1);\r\n return dayValue;\r\n })\r\n .reduce((acc, value) => (acc += value.consumption), 0);\r\n monthBuckets.push({ consumption: monthConsumptionValue, month: month });\r\n }\r\n return monthBuckets;\r\n};\r\n\r\nconst MonthlyChart = ({\r\n start,\r\n until,\r\n rightButtonEnabled,\r\n leftButtonEnabled,\r\n goToPreviousWeek,\r\n goToFollowingWeek,\r\n page,\r\n setPage,\r\n useLitres,\r\n useSalt,\r\n salt,\r\n water,\r\n unit,\r\n}: {\r\n start: Date;\r\n until: Date;\r\n rightButtonEnabled: boolean;\r\n leftButtonEnabled: boolean;\r\n goToPreviousWeek: () => void;\r\n goToFollowingWeek: () => void;\r\n page: number;\r\n setPage: React.Dispatch>;\r\n useLitres: boolean;\r\n useSalt: boolean;\r\n water: { loggedAt: any; water: number }[];\r\n salt: { loggedAt: any; salt: number }[];\r\n unit: string;\r\n}) => {\r\n const labels = getLabels(start, until);\r\n const style = useStyles();\r\n\r\n //if month we need to get all results per month and add them up and put into new array of values\r\n //find out how many days in months\r\n\r\n const consumptions = useSalt\r\n ? fillEmptySaltConsumptionDataWithZeros(start, until, salt)\r\n : fillEmptyWaterConsumptionDataWithZeros(start, until, water, unit);\r\n\r\n const aggregatedConsumptions = getConsumptionsAsMonth(consumptions);\r\n const monthCrossover =\r\n start.getFullYear() < until.getFullYear() ||\r\n start.getMonth() < until.getMonth();\r\n\r\n const yearCrossover = start.getFullYear() < until.getFullYear();\r\n const now = new Date();\r\n const differentYear = start.getFullYear() < now.getFullYear();\r\n\r\n const max =\r\n aggregatedConsumptions?.reduce(\r\n (acc, s) => (s.consumption > acc ? s.consumption : acc),\r\n 0\r\n ) ?? 0;\r\n\r\n const total =\r\n aggregatedConsumptions?.reduce((acc, s) => (acc += s.consumption), 0) ?? 0;\r\n\r\n const average = total / aggregatedConsumptions.length;\r\n\r\n console.log(max);\r\n\r\n return (\r\n
    \r\n
    \r\n leftButtonEnabled && goToPreviousWeek()}\r\n style={{\r\n opacity: leftButtonEnabled ? \"1\" : \"0.5\",\r\n backgroundImage: `url(${LeftArrow})`,\r\n }}\r\n />\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n {yearCrossover || differentYear ? (\r\n
    {format(start, \"d MMMM yyyy\")}
    \r\n ) : (\r\n
    {format(start, \"d MMMM\")}
    \r\n // \r\n )}\r\n
    -
    \r\n {/* if previous month show month name */}\r\n {(monthCrossover && yearCrossover) || differentYear ? (\r\n
    {format(until, \"d MMMM yyyy\")}
    \r\n ) : monthCrossover ? (\r\n
    {format(until, \"d MMMM\")}
    \r\n ) : (\r\n // \r\n
    {format(until, \"d\")}
    \r\n // \r\n )}\r\n
    \r\n
    \r\n {useSalt ? (\r\n \r\n ) : useLitres ? (\r\n \r\n ) : (\r\n \r\n )}\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n rightButtonEnabled && goToFollowingWeek()}\r\n style={{\r\n opacity: rightButtonEnabled ? \"1\" : \"0.5\",\r\n backgroundImage: `url(${RightArrow})`,\r\n }}\r\n />\r\n
    \r\n value.consumption)}\r\n page={page}\r\n setPage={setPage}\r\n rightButtonEnabled={rightButtonEnabled}\r\n leftButtonEnabled={leftButtonEnabled}\r\n useLitres={useLitres}\r\n useSalt={useSalt}\r\n />\r\n \r\n
    \r\n );\r\n};\r\n\r\nexport default MonthlyChart;\r\n","import React from \"react\";\r\nimport addDays from \"date-fns/addDays\";\r\nimport eachDayOfInterval from \"date-fns/eachDayOfInterval\";\r\nimport format from \"date-fns/format\";\r\nimport { CSSTransition, TransitionGroup } from \"react-transition-group\";\r\nimport { Translate } from \"react-localize-redux\";\r\nimport AnimatedBarChart from \"./AnimatedBarChart\";\r\nimport LeftArrow from \"../../../../../src/resources/graph_arrow_left_dark.svg\";\r\nimport RightArrow from \"../../../../../src/resources/graph_arrow_right_dark.svg\";\r\nimport Stats from \"./Stats\";\r\n\r\nimport {\r\n fillEmptyWaterConsumptionDataWithZeros,\r\n fillEmptySaltConsumptionDataWithZeros,\r\n} from \"./Chart\";\r\n\r\nimport { createStyles, Theme, makeStyles } from \"@material-ui/core/styles\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) => {\r\n return createStyles({\r\n weekSwitcher: {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n },\r\n\r\n weekStatsSeg: {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n alignItems: \"center\",\r\n position: \"relative\",\r\n height: \"80px\",\r\n width: \"100%\",\r\n },\r\n\r\n animationFrame: {\r\n width: \"100%\",\r\n position: \"absolute\",\r\n transition: \"opacity 200ms\",\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n top: \"0\",\r\n left: \"0\",\r\n right: \"0\",\r\n bottom: \"0\",\r\n },\r\n\r\n selectedWeek: {\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n color: \"#666b6e\",\r\n fontSize: \"20px\",\r\n fontWeight: 700,\r\n },\r\n\r\n dash: {\r\n padding: \"0 5px\",\r\n },\r\n\r\n arrow: {\r\n cursor: \"pointer\",\r\n height: \"20px\",\r\n width: \"20px\",\r\n backgroundPosition: \"center\",\r\n backgroundRepeat: \"no-repeat\",\r\n backgroundSize: \"contain\",\r\n },\r\n\r\n disabled: {\r\n opacity: \"0.5\",\r\n },\r\n\r\n unit: {\r\n paddingTop: \"10px\",\r\n fontSize: \"14px\",\r\n },\r\n\r\n crossFade: {\r\n enter: {\r\n opacity: \"0\",\r\n },\r\n enterActive: {\r\n opacity: \"1\",\r\n },\r\n\r\n enterDone: {\r\n opacity: \"1\",\r\n },\r\n\r\n exit: {\r\n opacity: \"0\",\r\n },\r\n\r\n exitActive: {\r\n opacity: \"0\",\r\n },\r\n },\r\n });\r\n});\r\n\r\nconst getLabels = (start: Date, until: Date) => {\r\n const numberOfDays = eachDayOfInterval({\r\n start: start,\r\n end: until,\r\n }).reduce((acc) => (acc += 1), 0);\r\n if (numberOfDays < 8) {\r\n return [...Array(numberOfDays).keys()].map((n) => {\r\n const value = addDays(start, n);\r\n return format(value, \"eee\");\r\n });\r\n } else {\r\n return [...Array(numberOfDays).keys()].map((n) => {\r\n const value = addDays(start, n);\r\n return format(value, \"eeeee\");\r\n });\r\n }\r\n};\r\n\r\nconst DailyChart = ({\r\n start,\r\n until,\r\n rightButtonEnabled,\r\n leftButtonEnabled,\r\n goToPreviousWeek,\r\n goToFollowingWeek,\r\n page,\r\n setPage,\r\n useLitres,\r\n useSalt,\r\n salt,\r\n water,\r\n unit,\r\n}: {\r\n start: Date;\r\n until: Date;\r\n rightButtonEnabled: boolean;\r\n leftButtonEnabled: boolean;\r\n goToPreviousWeek: () => void;\r\n goToFollowingWeek: () => void;\r\n page: number;\r\n setPage: React.Dispatch>;\r\n useLitres: boolean;\r\n useSalt: boolean;\r\n water: { loggedAt: any; water: number }[];\r\n salt: { loggedAt: any; salt: number }[];\r\n unit: string;\r\n}) => {\r\n const style = useStyles();\r\n\r\n const labels = getLabels(start, until);\r\n\r\n const consumptions = useSalt\r\n ? fillEmptySaltConsumptionDataWithZeros(start, until, salt)\r\n : fillEmptyWaterConsumptionDataWithZeros(start, until, water, unit);\r\n\r\n const monthCrossover =\r\n start.getFullYear() < until.getFullYear() ||\r\n start.getMonth() < until.getMonth();\r\n\r\n const yearCrossover = start.getFullYear() < until.getFullYear();\r\n const now = new Date();\r\n const differentYear = start.getFullYear() < now.getFullYear();\r\n\r\n const max =\r\n consumptions?.reduce(\r\n (acc, s) => (s.consumption > acc ? s.consumption : acc),\r\n 0\r\n ) ?? 0;\r\n\r\n const total =\r\n consumptions?.reduce((acc, s) => (acc += s.consumption), 0) ?? 0;\r\n\r\n const average = total / consumptions.length;\r\n\r\n return (\r\n
    \r\n
    \r\n leftButtonEnabled && goToPreviousWeek()}\r\n style={{\r\n opacity: leftButtonEnabled ? \"1\" : \"0.5\",\r\n backgroundImage: `url(${LeftArrow})`,\r\n }}\r\n />\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n {yearCrossover || differentYear ? (\r\n
    {format(start, \"d MMMM yyyy\")}
    \r\n ) : (\r\n
    {format(start, \"d MMMM\")}
    \r\n )}\r\n
    -
    \r\n {/* if previous month show month name */}\r\n {(monthCrossover && yearCrossover) || differentYear ? (\r\n
    {format(until, \"d MMMM yyyy\")}
    \r\n ) : monthCrossover ? (\r\n // \r\n
    {format(until, \"d MMMM\")}
    \r\n ) : (\r\n // \r\n
    {format(until, \"d\")}
    \r\n )}\r\n
    \r\n
    \r\n {useSalt ? (\r\n \r\n ) : useLitres ? (\r\n \r\n ) : (\r\n \r\n )}\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n rightButtonEnabled && goToFollowingWeek()}\r\n style={{\r\n opacity: rightButtonEnabled ? \"1\" : \"0.5\",\r\n backgroundImage: `url(${RightArrow})`,\r\n }}\r\n />\r\n
    \r\n value.consumption)}\r\n page={page}\r\n setPage={setPage}\r\n rightButtonEnabled={rightButtonEnabled}\r\n leftButtonEnabled={leftButtonEnabled}\r\n useLitres={useLitres}\r\n useSalt={useSalt}\r\n />\r\n \r\n
    \r\n );\r\n};\r\n\r\nexport default DailyChart;\r\n","import React from \"react\";\r\nimport differenceInDays from \"date-fns/differenceInDays\";\r\nimport eachDayOfInterval from \"date-fns/eachDayOfInterval\";\r\nimport isSameDay from \"date-fns/isSameDay\";\r\nimport endOfDay from \"date-fns/endOfDay\";\r\nimport subMinutes from \"date-fns/subMinutes\";\r\n\r\nimport WeeklyChart from \"./WeeklyChart\";\r\nimport MonthlyChart from \"./MonthlyChart\";\r\nimport DailyChart from \"./DailyChart\";\r\nimport { Page } from \"./index\";\r\n\r\nexport const fillEmptyWaterConsumptionDataWithZeros = (\r\n start: Date,\r\n until: Date,\r\n DailyWaterConsumptions: { loggedAt: Date; water: number }[],\r\n unit: string\r\n) => {\r\n const daysBetween = eachDayOfInterval({\r\n start,\r\n end: until,\r\n });\r\n\r\n const consumptionsArr = Object.values(DailyWaterConsumptions || {});\r\n\r\n return daysBetween.map((targetDate) => {\r\n const day = consumptionsArr.find(({ loggedAt }) =>\r\n isSameDay(targetDate, loggedAt)\r\n );\r\n const dayValue = day\r\n ? unit === \"litres\"\r\n ? day.water > 50000\r\n ? 0\r\n : day.water\r\n : day.water > 50\r\n ? 0\r\n : day.water\r\n : 0;\r\n return {\r\n consumption: dayValue,\r\n loggedAt: targetDate,\r\n };\r\n });\r\n};\r\n\r\nexport const fillEmptySaltConsumptionDataWithZeros = (\r\n start: Date,\r\n until: Date,\r\n data: any[]\r\n) => {\r\n const daysBetween = eachDayOfInterval({\r\n start,\r\n end: until,\r\n });\r\n\r\n const consumptionsArr = Object.values(data || {});\r\n\r\n return daysBetween.map((targetDate) => {\r\n const day = consumptionsArr.find(({ loggedAt }) =>\r\n isSameDay(targetDate, loggedAt)\r\n );\r\n return { consumption: day ? day.salt : 0, loggedAt: targetDate };\r\n });\r\n};\r\n\r\nconst ChartPager = ({\r\n useLitres,\r\n useSalt,\r\n start,\r\n until,\r\n setDates,\r\n page,\r\n pages,\r\n setPage,\r\n water,\r\n salt,\r\n loading,\r\n unit,\r\n}: {\r\n useLitres: boolean;\r\n useSalt: boolean;\r\n start: Date;\r\n until: Date;\r\n setDates: React.Dispatch<\r\n React.SetStateAction<{\r\n start: Date;\r\n end: Date;\r\n }>\r\n >;\r\n page: number;\r\n pages: Page[];\r\n setPage: React.Dispatch>;\r\n water: { loggedAt: any; water: number }[];\r\n salt: { loggedAt: any; salt: number }[];\r\n loading: boolean;\r\n unit: string;\r\n}) => {\r\n //use dates to get water and salt\r\n const getAggregation = (days: number) => {\r\n if (days > 57) return \"month\";\r\n if (days > 32) return \"week\";\r\n return \"day\";\r\n };\r\n\r\n const dayDifference = differenceInDays(until, start);\r\n const aggregationType = getAggregation(dayDifference);\r\n\r\n const goToPreviousWeek = () => {\r\n setPage(page - 1);\r\n setDates({\r\n start: pages[page - 1].start,\r\n end: subMinutes(\r\n endOfDay(pages[page - 1].until),\r\n pages[page - 1].until.getTimezoneOffset()\r\n ),\r\n });\r\n };\r\n\r\n const goToFollowingWeek = () => {\r\n setPage(page + 1);\r\n setDates({\r\n start: pages[page + 1].start,\r\n end: subMinutes(\r\n endOfDay(pages[page + 1].until),\r\n pages[page + 1].until.getTimezoneOffset()\r\n ),\r\n });\r\n };\r\n\r\n const rightButtonEnabled = page < pages.length - 1;\r\n const leftButtonEnabled = page > 0;\r\n\r\n if (!pages[page]) return
    ;\r\n\r\n return (\r\n
    \r\n {aggregationType === \"day\" ? (\r\n \r\n ) : aggregationType === \"week\" ? (\r\n \r\n ) : (\r\n \r\n )}\r\n
    \r\n );\r\n};\r\n\r\nexport default ChartPager;\r\n","import React, { useState, useCallback, useEffect, Fragment } from \"react\";\r\nimport {\r\n createStyles,\r\n Theme,\r\n makeStyles,\r\n withStyles,\r\n} from \"@material-ui/core/styles\";\r\nimport {\r\n Switch,\r\n Dialog,\r\n DialogActions,\r\n Button,\r\n TextField,\r\n CircularProgress,\r\n} from \"@material-ui/core\";\r\nimport gql from \"graphql-tag\";\r\nimport { Translate } from \"react-localize-redux\";\r\nimport { useLazyQuery } from \"@apollo/react-hooks\";\r\nimport ChartPager from \"./Chart\";\r\nimport CalendarIcon from \"../../../../../src/resources/ic_calendar.svg\";\r\n\r\nimport {\r\n SilkWaterDataForBarChart as SilkWaterQueryData,\r\n SilkWaterDataForBarChartVariables as SilkWaterQueryVars,\r\n} from \"../../../../types/apolloGenerated/SilkWaterDataForBarChart\";\r\n\r\nimport {\r\n eachDayOfInterval,\r\n startOfDay,\r\n format,\r\n subDays,\r\n isBefore,\r\n subHours,\r\n addDays,\r\n isWithinInterval,\r\n addMinutes,\r\n intervalToDuration,\r\n endOfDay,\r\n subMinutes,\r\n} from \"date-fns\";\r\n\r\nimport {\r\n WaterAndSaltDataForBarChart as SaltAndWaterQueryData,\r\n WaterAndSaltDataForBarChartVariables as SaltAndWaterQueryVars,\r\n} from \"types/apolloGenerated/WaterAndSaltDataForBarChart\";\r\nimport { DateAggregationType } from \"types/apolloGenerated/globalTypes\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) => {\r\n return createStyles({\r\n header: {\r\n fontSize: \"20px\",\r\n fontWeight: \"bold\",\r\n display: \"flex\",\r\n flexWrap: \"wrap\",\r\n height: \"40px\",\r\n alignItems: \"center\",\r\n marginBottom: \"35px\",\r\n justifyContent: \"space-between\",\r\n },\r\n headerLeft: {\r\n color: \"rgb(137, 158, 181)\",\r\n },\r\n headerRight: {\r\n color: \"rgb(244, 182, 201)\",\r\n marginRight: \"auto\",\r\n },\r\n monthPicker: {\r\n left: \"100px\",\r\n },\r\n chartWrap: {\r\n alignContent: \"center\",\r\n height: \"400px\",\r\n width: \"100%\",\r\n },\r\n selectRoot: {\r\n padding: \"10px 40px 10px 10px\",\r\n },\r\n toggleContainer: {\r\n fontWeight: \"normal\",\r\n alignItems: \"baseline\",\r\n display: \"flex\",\r\n },\r\n dateDialog: {\r\n padding: \"30px 30px 0 30px\",\r\n width: \"300px\",\r\n textAlign: \"center\",\r\n fontSize: \"20px\",\r\n },\r\n });\r\n});\r\n\r\nconst SILK_QUERY = gql`\r\n query SilkWaterDataForBarChart(\r\n $productCode: String!\r\n $from: DateTimeOffset\r\n $to: DateTimeOffset\r\n $aggregate: DateAggregationType\r\n ) {\r\n productInstance(productCode: $productCode) {\r\n id\r\n instanceInformation {\r\n __typename\r\n ... on SilkInstanceInformation {\r\n waterStatistics(from: $from, to: $to, aggregate: $aggregate) {\r\n totalWaterConsumedLiter\r\n from\r\n to\r\n }\r\n }\r\n }\r\n }\r\n }\r\n`;\r\n\r\nconst QUERY = gql`\r\n query WaterAndSaltDataForBarChart(\r\n $productCode: String!\r\n $from: DateTimeOffset!\r\n $to: DateTimeOffset!\r\n $aggregate: DateAggregationType!\r\n ) {\r\n productInstance(productCode: $productCode) {\r\n id\r\n instanceInformation {\r\n __typename\r\n ... on PerlaInstanceInformation {\r\n statistics(from: $from, to: $to, aggregate: $aggregate) {\r\n totalUsedSalt\r\n totalWaterTreated\r\n calculatedWaterConsumption\r\n to\r\n from\r\n }\r\n }\r\n }\r\n }\r\n }\r\n`;\r\n\r\nexport interface Page {\r\n start: Date;\r\n until: Date;\r\n}\r\n\r\nexport const formatNumber = (value: number) => {\r\n return value.toFixed(2).replace(/\\.0+$/, \"\");\r\n};\r\n\r\nconst now = new Date();\r\n\r\nconst removeTimezone = (value: Date) => {\r\n return addMinutes(value, value.getTimezoneOffset());\r\n};\r\n\r\nconst BarChart: React.FC<{\r\n productCode: string;\r\n installationDate: Date;\r\n isSilk: boolean;\r\n}> = ({ productCode, installationDate, isSilk }) => {\r\n const classes = useStyles();\r\n const [unit, setUnit] = useState(\"litres\");\r\n const [showTreatedWater, setShowTreatedWater] = useState(false);\r\n const [once, setOnce] = useState(true);\r\n // const [useSalt, setUseSalt] = useState(false);\r\n const [pickDate, setPickDate] = useState(false);\r\n const [dateError, setDateError] = useState(\"\");\r\n\r\n const [dates, setDates] = useState({\r\n start: subDays(now, 6),\r\n end: removeTimezone(endOfDay(now)),\r\n });\r\n\r\n const [pickedButNotSet, setPickedButNotSet] = useState({\r\n start: dates.start,\r\n end: dates.end,\r\n });\r\n\r\n const [pages, setPages] = useState([{ start: now, until: now }]);\r\n const [page, setPage] = useState(pages.length - 1);\r\n\r\n const getPages = useCallback(\r\n (start, until) => {\r\n let startx = start;\r\n let untilx = until;\r\n\r\n const pages: Page[] = [];\r\n const range = eachDayOfInterval({ start: start, end: until }).length;\r\n\r\n //pages pushed should not go over start and end date\r\n\r\n const oldestRecord = installationDate\r\n ? new Date(installationDate)\r\n : new Date(2006, 0, 1); //date could be changed to whatever is earliest plausible date\r\n //make startx one further than install date\r\n while (startx > new Date(oldestRecord)) {\r\n startx = subDays(startx, range);\r\n untilx = subDays(untilx, range);\r\n }\r\n\r\n while (subDays(untilx, range) < subHours(now, 1)) {\r\n pages.push({\r\n start: isBefore(startx, new Date(oldestRecord))\r\n ? new Date(oldestRecord)\r\n : startx,\r\n until: isBefore(\r\n isBefore(untilx, now) ? untilx : now,\r\n new Date(oldestRecord)\r\n )\r\n ? new Date(oldestRecord)\r\n : isBefore(untilx, now)\r\n ? untilx\r\n : now,\r\n });\r\n startx = addDays(startx, range);\r\n untilx = addDays(untilx, range);\r\n }\r\n\r\n return pages;\r\n },\r\n [installationDate]\r\n );\r\n\r\n const [getSaltAndWater, { data, loading }] = useLazyQuery<\r\n SaltAndWaterQueryData,\r\n SaltAndWaterQueryVars\r\n >(QUERY, {\r\n variables: {\r\n productCode,\r\n from: dates.start,\r\n to: dates.end,\r\n aggregate: DateAggregationType.DAY,\r\n },\r\n });\r\n\r\n const [getWaterForSilk, { data: silkData }] = useLazyQuery<\r\n SilkWaterQueryData,\r\n SilkWaterQueryVars\r\n >(SILK_QUERY, {\r\n variables: {\r\n productCode,\r\n from: dates.start,\r\n to: dates.end,\r\n aggregate: DateAggregationType.DAY,\r\n },\r\n });\r\n\r\n useEffect(() => {\r\n if (once) {\r\n const newPages = getPages(dates.start, dates.end);\r\n setPages(getPages(dates.start, dates.end));\r\n setPage(newPages.length - 1);\r\n setOnce(false);\r\n }\r\n isSilk\r\n ? getWaterForSilk({\r\n variables: {\r\n productCode,\r\n from: dates.start,\r\n to: dates.end,\r\n aggregate: DateAggregationType.DAY,\r\n },\r\n })\r\n : getSaltAndWater({\r\n variables: {\r\n productCode,\r\n from: dates.start,\r\n to: dates.end,\r\n aggregate: DateAggregationType.DAY,\r\n },\r\n });\r\n }, [\r\n dates.end,\r\n dates.start,\r\n getPages,\r\n once,\r\n getSaltAndWater,\r\n getWaterForSilk,\r\n isSilk,\r\n productCode,\r\n ]);\r\n\r\n const silkInfo = silkData?.productInstance?.instanceInformation;\r\n const perlaInfo = data?.productInstance?.instanceInformation;\r\n\r\n const perlaWaterConsumption =\r\n perlaInfo?.__typename === \"PerlaInstanceInformation\"\r\n ? perlaInfo?.statistics?.map((value) => {\r\n // add timezone offset otherwise this value can cross different days.\r\n return {\r\n loggedAt: removeTimezone(startOfDay(new Date(value?.from))),\r\n water:\r\n (unit === \"litres\"\r\n ? showTreatedWater\r\n ? value?.totalWaterTreated\r\n : value?.calculatedWaterConsumption\r\n : ((showTreatedWater\r\n ? value?.totalWaterTreated\r\n : value?.calculatedWaterConsumption) ?? 0) / 1000) ?? 0,\r\n };\r\n })\r\n : [];\r\n\r\n const silkWaterConsumption =\r\n silkInfo?.__typename === \"SilkInstanceInformation\"\r\n ? silkInfo?.waterStatistics?.map((value) => {\r\n return {\r\n loggedAt: removeTimezone(startOfDay(new Date(value?.from))),\r\n water:\r\n (unit === \"litres\"\r\n ? value?.totalWaterConsumedLiter\r\n : (value?.totalWaterConsumedLiter ?? 0) / 1000) ?? 0,\r\n };\r\n })\r\n : [];\r\n\r\n const saltConsumption =\r\n perlaInfo?.__typename === \"PerlaInstanceInformation\"\r\n ? perlaInfo?.statistics?.map((value) => {\r\n return {\r\n loggedAt: removeTimezone(startOfDay(new Date(value?.from))),\r\n salt: value?.totalUsedSalt ?? 0,\r\n };\r\n })\r\n : [];\r\n\r\n const BlueSwitch = withStyles({\r\n switchBase: {\r\n color: \"#005D8F\",\r\n \"&$checked\": {\r\n color: \"#005D8F\",\r\n },\r\n \"&$checked + $track\": {\r\n backgroundColor: \"#005D8F\",\r\n },\r\n },\r\n checked: {},\r\n track: {},\r\n })(Switch);\r\n\r\n const validateSelectedDate = (start: Date, end: Date) => {\r\n // make sure we check the end of the day\r\n if (isBefore(removeTimezone(endOfDay(now)), end)) {\r\n setDateError(\"To date if after todays date\");\r\n return false;\r\n } else if (isBefore(end, start)) {\r\n setDateError(\"To date is before from date\");\r\n return false;\r\n } else if (\r\n (intervalToDuration({\r\n start: start,\r\n end: end,\r\n }).years ?? 0) > 1\r\n ) {\r\n setDateError(\"Dates are futher than 2 years apart\");\r\n return false;\r\n }\r\n if (isBefore(pickedButNotSet.start, new Date(installationDate))) {\r\n setDateError(\"From date is before installation date\");\r\n return false;\r\n } else {\r\n setDateError(\"\");\r\n return true;\r\n }\r\n };\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {unit === \"metres\" ? (\r\n showTreatedWater ? (\r\n \r\n ) : (\r\n \r\n )\r\n ) : showTreatedWater ? (\r\n \r\n ) : (\r\n \r\n )}\r\n
    \r\n {/*
    &
    \r\n
    \r\n \r\n
    */}\r\n
    \r\n
    \r\n {loading ? :
    }\r\n
    \r\n {\r\n setPickDate(true);\r\n }}\r\n />\r\n \r\n
    Select date range
    \r\n
    \r\n {\r\n if (/[0-9]{4}-[0-9]{2}-[0-9]{2}/.test(e.target.value)) {\r\n setPickedButNotSet({\r\n start: new Date(e.target.value),\r\n end: pickedButNotSet.end,\r\n });\r\n //if end date is after todays date, if start date is before installation date, if dates are more than two years apart\r\n validateSelectedDate(\r\n new Date(e.target.value),\r\n pickedButNotSet.end\r\n );\r\n }\r\n }}\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n />\r\n
    \r\n
    \r\n {\r\n if (/[0-9]{4}-[0-9]{2}-[0-9]{2}/.test(e.target.value)) {\r\n setPickedButNotSet({\r\n start: pickedButNotSet.start,\r\n end: removeTimezone(endOfDay(new Date(e.target.value))),\r\n });\r\n validateSelectedDate(\r\n pickedButNotSet.start,\r\n removeTimezone(endOfDay(new Date(e.target.value)))\r\n );\r\n }\r\n }}\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n />\r\n
    \r\n
    {dateError}
    \r\n \r\n {\r\n if (\r\n validateSelectedDate(\r\n pickedButNotSet.start,\r\n pickedButNotSet.end\r\n )\r\n ) {\r\n setDates({\r\n start: pickedButNotSet.start,\r\n end: subMinutes(\r\n endOfDay(pickedButNotSet.end),\r\n pickedButNotSet.end.getTimezoneOffset()\r\n ),\r\n });\r\n const newPages = getPages(\r\n pickedButNotSet.start,\r\n pickedButNotSet.end\r\n );\r\n setPages(newPages);\r\n //find index is failing\r\n const currentPage = newPages.findIndex((dates) =>\r\n isWithinInterval(pickedButNotSet.start, {\r\n start: removeTimezone(startOfDay(dates.start)),\r\n end: removeTimezone(endOfDay(dates.until)),\r\n })\r\n );\r\n setPage(currentPage);\r\n setPickDate(false);\r\n }\r\n }}\r\n >\r\n \r\n \r\n {\r\n setPickedButNotSet({ start: dates.start, end: dates.end });\r\n setDateError(\"\");\r\n setPickDate(false);\r\n }}\r\n >\r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    L
    \r\n setUnit(unit === \"metres\" ? \"litres\" : \"metres\")}\r\n />\r\n
    m³
    \r\n
    \r\n {!isSilk ? (\r\n \r\n
    \r\n {/*
    \r\n \r\n
    \r\n setUseSalt(!useSalt)}\r\n />\r\n
    \r\n \r\n
    */}\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n setShowTreatedWater(!showTreatedWater)}\r\n />\r\n
    \r\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 BarChart;\r\n","import React, { useRef, useLayoutEffect, useState, Fragment } from \"react\";\r\n\r\nfunction calcPath(scaledPaddedPoints: number[], unitX: number): string {\r\n const grads = [];\r\n for (let i = 0; i < scaledPaddedPoints.length - 2; i++) {\r\n grads.push((scaledPaddedPoints[i + 2] - scaledPaddedPoints[i]) / 2);\r\n }\r\n //this number affects the curve of the graph\r\n const handleWidth: number = 0.4;\r\n const scaledHandleWidth = handleWidth * unitX;\r\n let path = `M 0 ${scaledPaddedPoints[1]} `;\r\n for (let i = 0; i < scaledPaddedPoints.length - 3; i++) {\r\n const xStart = unitX * i;\r\n const yStart = scaledPaddedPoints[i + 1];\r\n const x1 = xStart + scaledHandleWidth;\r\n const y1 = yStart + handleWidth * grads[i];\r\n const xEnd = unitX * (i + 1);\r\n const yEnd = scaledPaddedPoints[i + 2];\r\n const x2 = xEnd - scaledHandleWidth;\r\n const y2 = yEnd - handleWidth * grads[i + 1];\r\n path += `C ${x1} ${y1}, ${x2} ${y2}, ${xEnd} ${yEnd} `;\r\n }\r\n return path;\r\n}\r\n\r\nexport interface CurveGraphContentProps {\r\n lines: { paddedPoints: number[]; colour: string }[];\r\n size: { width: number; height: number };\r\n yAxisTopPoint: number;\r\n yAxisValues: number[];\r\n}\r\n\r\nfunction range(count: number): number[] {\r\n return Array.from(Array(count).keys());\r\n}\r\n\r\nconst CurveGraphContent: React.FC = ({\r\n lines,\r\n size,\r\n yAxisTopPoint,\r\n yAxisValues,\r\n}) => {\r\n const topBottomThreshold = 10;\r\n const xCount = lines[0] ? lines[0].paddedPoints.length - 3 : 1;\r\n const unitX = size.width / xCount;\r\n const unitY = (size.height - topBottomThreshold * 2) / yAxisTopPoint;\r\n const scaledLines = lines.map((line) => ({\r\n ...line,\r\n paddedPoints: line.paddedPoints.map(\r\n (y) => (yAxisTopPoint - y) * unitY + topBottomThreshold\r\n ),\r\n }));\r\n\r\n return (\r\n \r\n \r\n {scaledLines.map(({ colour }, idx) => (\r\n \r\n \r\n \r\n \r\n ))}\r\n \r\n {range(xCount + 1).map((idx) => (\r\n \r\n ))}\r\n {[...yAxisValues, 0].map((y, idx) => (\r\n \r\n ))}\r\n {scaledLines.map(({ paddedPoints, colour }, idx) => {\r\n const linePath = calcPath(paddedPoints, unitX);\r\n const fillPath = linePath + `V ${size.height} H 0 Z`;\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n })}\r\n {scaledLines.map(({ paddedPoints, colour }, idx1) => (\r\n \r\n {paddedPoints.slice(1, -1).map((y, idx2) => (\r\n \r\n ))}\r\n \r\n ))}\r\n \r\n );\r\n};\r\n\r\ninterface YAxisProps {\r\n yAxisValues: number[];\r\n}\r\n\r\nconst YAxis: React.FC = ({ yAxisValues }) => {\r\n return (\r\n
    \r\n {yAxisValues.map((value, idx) => (\r\n \r\n {value}\r\n
    \r\n ))}\r\n \r\n 0\r\n
    \r\n
    \r\n );\r\n};\r\n\r\ninterface XAxisProps {\r\n samplePoints: number;\r\n xAxisValues: string[];\r\n}\r\n\r\nconst XAxis: React.FC = ({ samplePoints, xAxisValues }) => (\r\n
    \r\n \r\n {xAxisValues[0]}\r\n
    \r\n {range(samplePoints - 1).map((idx) => (\r\n \r\n {xAxisValues[idx + 1]}\r\n
    \r\n ))}\r\n
    \r\n);\r\n\r\nfunction getYAxisPoints(highestPoint: number) {\r\n const yAxisValues: number[] = [];\r\n let graphTop = Math.ceil(highestPoint / 10) * 10;\r\n yAxisValues.push(graphTop);\r\n yAxisValues.push((graphTop / 4) * 3);\r\n yAxisValues.push((graphTop / 4) * 2);\r\n yAxisValues.push(graphTop / 4);\r\n return yAxisValues;\r\n}\r\n\r\nfunction findHighestPoint(\r\n linesIn: { paddedPoints: number[]; colour: string }[]\r\n) {\r\n let highest = 0;\r\n linesIn.forEach((pointArray) => {\r\n const highestInArray = Math.max(...pointArray.paddedPoints);\r\n if (highestInArray > highest) {\r\n highest = highestInArray;\r\n }\r\n });\r\n return highest;\r\n}\r\n\r\nexport interface CurveGraphProps {\r\n linesIn: { paddedPoints: number[]; colour: string }[];\r\n samplePoints: number;\r\n xAxisValues: string[];\r\n}\r\n\r\nconst CurveGraph: React.FC = ({\r\n linesIn,\r\n samplePoints,\r\n xAxisValues,\r\n}) => {\r\n const highestPoint =\r\n findHighestPoint(linesIn) === 0 ? 100 : findHighestPoint(linesIn);\r\n const yAxisValues = getYAxisPoints(highestPoint);\r\n const ref = useRef(null);\r\n const [size, setSize] = useState({ width: 0, height: 0 });\r\n useLayoutEffect(() => {\r\n function updateSize() {\r\n if (ref && ref.current)\r\n setSize({\r\n width: ref.current.offsetWidth - 30,\r\n height: ref.current.offsetHeight,\r\n });\r\n }\r\n window.addEventListener(\"resize\", updateSize);\r\n updateSize();\r\n return () => window.removeEventListener(\"resize\", updateSize);\r\n }, []);\r\n\r\n return (\r\n
    \r\n
    \r\n \r\n {ref.current && (\r\n \r\n )}\r\n
    \r\n \r\n
    \r\n );\r\n};\r\n\r\nexport default CurveGraph;\r\n","import React from \"react\";\r\nimport { createStyles, Theme, makeStyles } from \"@material-ui/core/styles\";\r\nimport MenuItem from \"@material-ui/core/MenuItem\";\r\nimport Select from \"@material-ui/core/Select\";\r\nimport FormControl from \"@material-ui/core/FormControl\";\r\nimport gql from \"graphql-tag\";\r\nimport { Translate } from \"react-localize-redux\";\r\nimport { useQuery } from \"@apollo/react-hooks\";\r\nimport { DateAggregationType } from \"types/apolloGenerated/globalTypes\";\r\nimport {\r\n eachDayOfInterval,\r\n eachWeekOfInterval,\r\n startOfDay,\r\n subMonths,\r\n startOfMonth,\r\n format,\r\n subDays,\r\n subWeeks,\r\n subMinutes,\r\n startOfWeek,\r\n addDays,\r\n} from \"date-fns\";\r\n\r\nimport { CircularProgress, Box } from \"@material-ui/core\";\r\n\r\nimport CurveGraph from \"./CurveGraph\";\r\nimport {\r\n RegenerationDataForGraph as RegenerationQueryData,\r\n RegenerationDataForGraphVariables as RegenerationQueryVars,\r\n} from \"types/apolloGenerated/RegenerationDataForGraph\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) => {\r\n return createStyles({\r\n header: {\r\n fontSize: \"20px\",\r\n fontWeight: \"bold\",\r\n height: \"75px\",\r\n },\r\n monthPicker: {\r\n position: \"relative\",\r\n left: \"500px\",\r\n top: \"-22px\",\r\n },\r\n selectRoot: {\r\n padding: \"10px 40px 10px 10px\",\r\n },\r\n legend: {\r\n width: \"3%\",\r\n height: \"8px\",\r\n borderRadius: \"20px\",\r\n margin: \"40px 20px 5px 20px\",\r\n },\r\n });\r\n});\r\n\r\nconst QUERY = gql`\r\n query RegenerationDataForGraph(\r\n $productCode: String!\r\n $from: DateTimeOffset!\r\n $to: DateTimeOffset!\r\n $aggregate: DateAggregationType!\r\n ) {\r\n productInstance(productCode: $productCode) {\r\n id\r\n instanceInformation {\r\n __typename\r\n ... on PerlaInstanceInformation {\r\n statistics(from: $from, to: $to, aggregate: $aggregate) {\r\n totalRegenerationCountColumn1\r\n totalRegenerationCountColumn2\r\n from\r\n to\r\n }\r\n }\r\n }\r\n }\r\n }\r\n`;\r\n\r\ntype line = {\r\n paddedPoints: number[];\r\n colour: string;\r\n};\r\nexport interface RegenerationProps {\r\n productCode: string;\r\n location: any;\r\n}\r\n\r\nconst now = new Date();\r\n\r\nconst Regeneration: React.FC = ({\r\n productCode,\r\n location,\r\n}) => {\r\n const classes = useStyles();\r\n const monthsInHalfYear = 6;\r\n const monthsInYear = 12;\r\n const daysInMonth = 30;\r\n const weeksInThreeMonths = 13;\r\n\r\n const [monthsSelected, setMonth] = React.useState(\r\n monthsInHalfYear.toString()\r\n );\r\n\r\n const [graphParameters, setGraphParameters] = React.useState({\r\n first: startOfMonth(subMonths(now, monthsInHalfYear - 1)),\r\n points: monthsInHalfYear,\r\n aggregation: DateAggregationType.MONTH,\r\n });\r\n\r\n const [loadNewDate, setLoadNewDate] = React.useState(false);\r\n\r\n // each of the dates below will fetch one additional point because in order to get the curve affect we need one point that is off the SVG\r\n const handleChange = (\r\n event: React.ChangeEvent<{ name?: string | undefined; value: unknown }>\r\n ) => {\r\n setLoadNewDate(true);\r\n setMonth((event.target as HTMLTextAreaElement).value);\r\n switch ((event.target as HTMLTextAreaElement).value) {\r\n case \"1\":\r\n setGraphParameters({\r\n aggregation: DateAggregationType.DAY,\r\n points: daysInMonth,\r\n first: startOfDay(subDays(now, daysInMonth)),\r\n });\r\n break;\r\n case \"3\":\r\n setGraphParameters({\r\n aggregation: DateAggregationType.WEEK,\r\n points: weeksInThreeMonths,\r\n first: startOfWeek(subWeeks(now, weeksInThreeMonths - 1), {\r\n weekStartsOn: 1,\r\n }),\r\n });\r\n break;\r\n case \"6\":\r\n setGraphParameters({\r\n aggregation: DateAggregationType.MONTH,\r\n points: monthsInHalfYear,\r\n first: startOfMonth(subMonths(now, monthsInHalfYear - 1)),\r\n });\r\n break;\r\n case \"12\":\r\n //minus one because the 12th month will always be in progress\r\n setGraphParameters({\r\n aggregation: DateAggregationType.MONTH,\r\n points: monthsInYear,\r\n first: startOfMonth(subMonths(now, monthsInYear - 1)),\r\n });\r\n break;\r\n }\r\n };\r\n\r\n //create variables used for the query // we subtract timezone offset to normalise the time as toolbox data has no concept of timezone\r\n let queryFirst = subMinutes(\r\n graphParameters.first,\r\n graphParameters.first.getTimezoneOffset()\r\n );\r\n let queryTo = subMinutes(startOfDay(now), now.getTimezoneOffset());\r\n\r\n const { data, loading } = useQuery<\r\n RegenerationQueryData,\r\n RegenerationQueryVars\r\n >(QUERY, {\r\n variables: {\r\n productCode,\r\n from: queryFirst,\r\n to: queryTo,\r\n aggregate: graphParameters.aggregation,\r\n },\r\n });\r\n\r\n let xAxisValues: any[] = [];\r\n\r\n //incase result is missing cant rely on the data. We can get each interval of week but that only grabs one day.\r\n\r\n if (graphParameters.aggregation === DateAggregationType.DAY) {\r\n //get x axis values\r\n xAxisValues = eachDayOfInterval({\r\n start: new Date(graphParameters.first),\r\n //saying now but that includes an extra day of data which we will not get\r\n end: new Date(subDays(now, 1)),\r\n }).map((value) => {\r\n return { check: format(value, \"MM-dd\"), value: format(value, \"d\") };\r\n });\r\n }\r\n if (graphParameters.aggregation === DateAggregationType.WEEK) {\r\n xAxisValues = eachWeekOfInterval(\r\n { start: new Date(graphParameters.first), end: new Date(now) },\r\n { weekStartsOn: 1 }\r\n ).map((value) => {\r\n return {\r\n check: format(value, \"yyyy-MM-dd\"),\r\n value: format(value, \"dd/MM\"),\r\n };\r\n });\r\n }\r\n if (graphParameters.aggregation === DateAggregationType.MONTH) {\r\n //for month aggregation\r\n for (let i = graphParameters.points - 1; i > -1; i--) {\r\n xAxisValues.push({\r\n check: format(subMonths(now, i), \"yyyy-MM\"),\r\n value: format(subMonths(now, i), \"MMM\"),\r\n });\r\n }\r\n }\r\n\r\n const info = data?.productInstance?.instanceInformation;\r\n const regenArrays = xAxisValues.map((date) => {\r\n if (info?.__typename === \"PerlaInstanceInformation\") {\r\n //find value from data based on date needed\r\n const dateFound = info?.statistics?.find((value) =>\r\n value?.from.includes(date.check)\r\n );\r\n if (\r\n !dateFound &&\r\n graphParameters.aggregation === DateAggregationType.WEEK\r\n ) {\r\n const startOfWeekAsDate = new Date(date.check + \"T00:00:00.000Z\");\r\n for (let i = 0; i < 7; i++) {\r\n const hasFound = info?.statistics?.find((value) =>\r\n value?.from?.includes(\r\n format(addDays(startOfWeekAsDate, i), \"yyyy-MM-dd\")\r\n )\r\n );\r\n if (hasFound)\r\n return {\r\n regen1: hasFound?.totalRegenerationCountColumn1 ?? 0,\r\n regen2: hasFound?.totalRegenerationCountColumn2 ?? 0,\r\n };\r\n }\r\n }\r\n\r\n return {\r\n regen1: dateFound?.totalRegenerationCountColumn1 ?? 0,\r\n regen2: dateFound?.totalRegenerationCountColumn2 ?? 0,\r\n };\r\n }\r\n return { regen1: 0, regen2: 0 };\r\n });\r\n\r\n const lines: line[] = [\r\n {\r\n paddedPoints: [0, ...regenArrays.map((value) => value.regen1), 0],\r\n colour: \"rgb(99, 134, 163)\",\r\n },\r\n {\r\n paddedPoints: [0, ...regenArrays.map((value) => value.regen2), 0],\r\n colour: \"rgb(244, 182, 201)\",\r\n },\r\n ];\r\n\r\n //check to see if total of all lines is 0\r\n const noData = lines\r\n .map((line) => line.paddedPoints.reduce((acc, point) => (acc += point), 0))\r\n .reduce((acc, value) => (acc += value), 0);\r\n\r\n if (loading && !loadNewDate)\r\n return (\r\n
    \r\n {\" \"}\r\n
    \r\n );\r\n if (noData === 0 && !loadNewDate)\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n\r\n return (\r\n \r\n \r\n {graphParameters.aggregation === DateAggregationType.WEEK ? (\r\n \r\n ) : (\r\n \r\n )}\r\n\r\n \r\n \r\n handleChange(event)}\r\n >\r\n \r\n 1 \r\n \r\n \r\n 3 \r\n \r\n \r\n 6 \r\n \r\n \r\n 12 \r\n \r\n \r\n \r\n \r\n \r\n {data && !loading ? (\r\n value?.value)}\r\n />\r\n ) : (\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n \r\n
    # Regenerations S1
    \r\n \r\n \r\n \r\n
    # Regenerations S2
    \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default Regeneration;\r\n","import React from \"react\";\r\nimport { createStyles, Theme, makeStyles } from \"@material-ui/core/styles\";\r\nimport MenuItem from \"@material-ui/core/MenuItem\";\r\nimport Select from \"@material-ui/core/Select\";\r\nimport FormControl from \"@material-ui/core/FormControl\";\r\nimport { Translate } from \"react-localize-redux\";\r\nimport { DateAggregationType } from \"../../../types/apolloGenerated/globalTypes\";\r\nimport { eachDayOfInterval, eachWeekOfInterval, startOfDay, subMonths, startOfMonth, format, subDays, subWeeks, startOfWeek, addWeeks, } from \"date-fns\";\r\n\r\nimport {\r\n productInstanceAndCustomerDetails_productInstance_instanceInformation_SilkInstanceInformation as SilkInstanceInformation,\r\n productInstanceAndCustomerDetails_productInstance_instanceInformation_SilkInstanceInformation_notifications as SilkNotif,\r\n} from \"../../../types/apolloGenerated/productInstanceAndCustomerDetails\";\r\n\r\nimport { Box } from \"@material-ui/core\";\r\n\r\nimport CurveGraph from \"./CurveGraph\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) => {\r\n return createStyles({\r\n header: {\r\n fontSize: \"20px\",\r\n fontWeight: \"bold\",\r\n height: \"75px\",\r\n },\r\n monthPicker: {\r\n position: \"relative\",\r\n left: \"500px\",\r\n top: \"-22px\",\r\n },\r\n selectRoot: {\r\n padding: \"10px 40px 10px 10px\",\r\n },\r\n legend: {\r\n width: \"3%\",\r\n height: \"8px\",\r\n borderRadius: \"20px\",\r\n margin: \"40px 20px 5px 20px\",\r\n },\r\n });\r\n});\r\n\r\nexport const groupByAggregate = (\r\n aggregate: DateAggregationType,\r\n notifs: (SilkNotif | null)[],\r\n length: number,\r\n endDate: Date\r\n) => {\r\n const finishedDates = notifs\r\n .map((notif) => {\r\n const messageData = JSON.parse(notif?.message ?? \"{}\");\r\n return {\r\n state: messageData?.Data?.state,\r\n date: new Date(messageData?.Timestamp),\r\n };\r\n })\r\n .filter((notif) => notif.state === 1);\r\n\r\n const buckets: Record = {};\r\n for (let i = 0; i < length; i++) {\r\n let milli = 0;\r\n if (aggregate === DateAggregationType.DAY) {\r\n milli = startOfDay(subDays(endDate, i)).getTime();\r\n }\r\n if (aggregate === DateAggregationType.WEEK) {\r\n milli = startOfWeek(subWeeks(endDate, i), { weekStartsOn: 1 }).getTime();\r\n }\r\n if (aggregate === DateAggregationType.MONTH) {\r\n milli = startOfMonth(subMonths(endDate, i)).getTime();\r\n }\r\n buckets[milli] = 0;\r\n }\r\n\r\n for (const { date } of finishedDates) {\r\n let milli = 0;\r\n if (aggregate === DateAggregationType.DAY) {\r\n milli = startOfDay(date).getTime();\r\n }\r\n if (aggregate === DateAggregationType.WEEK) {\r\n milli = startOfWeek(date, { weekStartsOn: 1 }).getTime();\r\n }\r\n if (aggregate === DateAggregationType.MONTH) {\r\n milli = startOfMonth(date).getTime();\r\n }\r\n if (milli in buckets) {\r\n buckets[milli]++;\r\n }\r\n }\r\n\r\n const output = Object.values(buckets);\r\n return output.reverse();\r\n};\r\n\r\ntype line = {\r\n paddedPoints: number[];\r\n colour: string;\r\n};\r\nexport interface RegenerationProps {\r\n productCode: string;\r\n silkData: SilkInstanceInformation | null;\r\n}\r\n\r\nconst now = new Date();\r\n\r\nconst SilkRegeneration: React.FC = ({\r\n productCode,\r\n silkData,\r\n}) => {\r\n const classes = useStyles();\r\n const monthsInHalfYear = 6;\r\n const monthsInYear = 12;\r\n const daysInMonth = 30;\r\n const weeksInThreeMonths = 13;\r\n\r\n const [monthsSelected, setMonth] = React.useState(\r\n monthsInHalfYear.toString()\r\n );\r\n const [first, setFirst] = React.useState(\r\n startOfMonth(subMonths(now, monthsInHalfYear))\r\n );\r\n const [points, setPoints] = React.useState(monthsInHalfYear);\r\n const [aggregation, setAggregation] = React.useState(\r\n DateAggregationType.MONTH\r\n );\r\n const [loadNewDate, setLoadNewDate] = React.useState(false);\r\n\r\n // each of the dates below will fetch one additional point because in order to get the curve affect we need one point that is off the SVG\r\n const handleChange = (\r\n event: React.ChangeEvent<{ name?: string | undefined; value: unknown }>\r\n ) => {\r\n setLoadNewDate(true);\r\n setMonth((event.target as HTMLTextAreaElement).value);\r\n switch ((event.target as HTMLTextAreaElement).value) {\r\n case \"1\":\r\n setAggregation(DateAggregationType.DAY);\r\n setPoints(daysInMonth);\r\n setFirst(startOfDay(subDays(now, daysInMonth - 1)));\r\n break;\r\n case \"3\":\r\n setAggregation(DateAggregationType.WEEK);\r\n setPoints(weeksInThreeMonths);\r\n setFirst(\r\n startOfWeek(subWeeks(now, weeksInThreeMonths), { weekStartsOn: 1 })\r\n );\r\n break;\r\n case \"6\":\r\n setAggregation(DateAggregationType.MONTH);\r\n setPoints(monthsInHalfYear);\r\n setFirst(startOfMonth(subMonths(now, monthsInHalfYear)));\r\n break;\r\n case \"12\":\r\n setAggregation(DateAggregationType.MONTH);\r\n setPoints(monthsInYear);\r\n setFirst(startOfMonth(subMonths(now, monthsInYear)));\r\n break;\r\n }\r\n };\r\n\r\n //get all silk regen notifications\r\n const summaryType = 6012;\r\n let silkRegenerationNotifs: (SilkNotif | null)[] = [];\r\n if (silkData && silkData?.notifications) {\r\n silkRegenerationNotifs = silkData?.notifications.filter(\r\n (notif) => notif?.messageType === summaryType\r\n );\r\n }\r\n\r\n const byAggregate = groupByAggregate(\r\n aggregation,\r\n silkRegenerationNotifs,\r\n points,\r\n new Date()\r\n );\r\n\r\n let xAxisValues: any[] = [];\r\n let mockLines: line[] = [];\r\n\r\n if (aggregation === DateAggregationType.DAY) {\r\n //add a day to the current first so we dont get 31 dates but rather 30 to display on the x axis\r\n const dateArray = eachDayOfInterval({\r\n start: new Date(first),\r\n end: new Date(now),\r\n });\r\n for (let i = 0; i < dateArray.length; i++) {\r\n xAxisValues.push(format(dateArray[i], \"d\"));\r\n }\r\n } else {\r\n if (aggregation === DateAggregationType.WEEK) {\r\n //add an extra week so we don't get one too many because the svg requires one extra point\r\n const dateArray = eachWeekOfInterval(\r\n { start: new Date(addWeeks(first, 1)), end: new Date(now) },\r\n { weekStartsOn: 1 }\r\n );\r\n for (let i = 0; i < dateArray.length; i++) {\r\n xAxisValues.push(format(dateArray[i], \"dd/MM\"));\r\n }\r\n } else {\r\n for (let i = points - 1; i > -1; i--) {\r\n xAxisValues.push(format(subMonths(now, i), \"MMM\"));\r\n }\r\n }\r\n }\r\n\r\n mockLines = [\r\n {\r\n paddedPoints: [0, ...byAggregate, 0],\r\n colour: \"rgb(99, 134, 163)\",\r\n },\r\n ];\r\n\r\n let total = 0;\r\n mockLines.forEach((line) => {\r\n line.paddedPoints.forEach((point) => {\r\n total += point;\r\n });\r\n });\r\n\r\n if (total === 0 && !loadNewDate)\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n\r\n return (\r\n \r\n \r\n \r\n\r\n \r\n \r\n handleChange(event)}\r\n >\r\n \r\n 1 \r\n \r\n \r\n 3 \r\n \r\n \r\n 6 \r\n \r\n \r\n 12 \r\n \r\n \r\n \r\n \r\n \r\n {\r\n \r\n }\r\n \r\n \r\n \r\n
    # Regenerations
    \r\n
    \r\n \r\n \r\n );\r\n};\r\n\r\nexport default SilkRegeneration;\r\n","import React, { Fragment } from \"react\";\r\n\r\nimport { productInstanceAndCustomerDetails_productInstance_instanceInformation_PerlaInstanceInformation as PerlaInstance } from \"types/apolloGenerated/productInstanceAndCustomerDetails\";\r\n\r\n// import { createStyles, Theme, makeStyles } from \"@material-ui/core/styles\";\r\nimport {\r\n Box,\r\n Typography,\r\n TableContainer,\r\n Table,\r\n TableHead,\r\n TableRow,\r\n TableCell,\r\n TableBody,\r\n Paper,\r\n} from \"@material-ui/core\";\r\n\r\nimport {\r\n Translate,\r\n withLocalize,\r\n LocalizeContextProps,\r\n} from \"react-localize-redux\";\r\n\r\n// const useStyles = makeStyles((theme: Theme) => {\r\n// return createStyles({\r\n// arrow: { fontSize: 16, margin: 7 },\r\n// textField: {\r\n// [`& input::-webkit-clear-button,\r\n// & input::-webkit-outer-spin-button,\r\n// & input::-webkit-inner-spin-button,\r\n// & input::-webkit-toolbarbutton-dropdown`]: {\r\n// display: \"none\",\r\n// },\r\n// width: 150,\r\n// },\r\n// customTooltip: {\r\n// width: \"120px\",\r\n// },\r\n// });\r\n// });\r\n\r\ninterface ParameterProps extends LocalizeContextProps {\r\n productInstance: PerlaInstance | null | undefined;\r\n}\r\n\r\ninterface Params {\r\n code: string;\r\n value: string;\r\n}\r\n\r\nconst ParameterRnD: React.FC = ({ productInstance }) => {\r\n let paramInfo = \"{}\";\r\n if (\r\n productInstance?.registeredPerlaInstanceInformation?.deviceParameter !== \"\"\r\n ) {\r\n paramInfo =\r\n productInstance?.registeredPerlaInstanceInformation?.deviceParameter ??\r\n \"{}\";\r\n }\r\n const paramConv = JSON.parse(paramInfo);\r\n const paramNames: string[] = Object.getOwnPropertyNames(paramConv) ?? [];\r\n const paramValues: string[] = Object.values(paramConv) ?? [];\r\n const paramArray: Params[] = [];\r\n\r\n for (var i = 0; i < paramNames.length; i++) {\r\n paramArray[i] = {\r\n code: paramNames[i],\r\n value: paramValues[i],\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 {paramArray.length > 0 ? (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {paramArray.map((item) => (\r\n \r\n {item.code ?? \"\"}\r\n {item.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\nexport default withLocalize(ParameterRnD);\r\n","import React from \"react\";\r\n\r\nimport { createStyles, Theme, makeStyles } from \"@material-ui/core/styles\";\r\n\r\nimport MenuItem from \"@material-ui/core/MenuItem\";\r\nimport Select from \"@material-ui/core/Select\";\r\nimport FormControl from \"@material-ui/core/FormControl\";\r\nimport gql from \"graphql-tag\";\r\nimport { useQuery } from \"@apollo/react-hooks\";\r\nimport { Translate } from \"react-localize-redux\";\r\nimport { eachDayOfInterval, eachWeekOfInterval, startOfDay, subMonths, startOfMonth, format, subWeeks, subDays, addDays, subMinutes, startOfWeek, addWeeks } from \"date-fns\"\r\n\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\n\r\nimport CurveGraph from \"./CurveGraph\";\r\nimport {\r\n ConnectivityDataForGraph as ConnectivityQueryData,\r\n ConnectivityDataForGraphVariables as ConnectivityQueryVars\r\n} from \"types/apolloGenerated/ConnectivityDataForGraph\";\r\nimport { DateAggregationType } from \"types/apolloGenerated/globalTypes\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) => {\r\n return createStyles({\r\n header: {\r\n fontSize: \"20px\",\r\n fontWeight: \"bold\",\r\n height: \"75px\"\r\n },\r\n monthPicker: {\r\n position: \"relative\",\r\n left: \"calc(100% - 120px)\",\r\n top: \"-22px\"\r\n },\r\n selectRoot: {\r\n padding: \"10px 40px 10px 10px\"\r\n },\r\n legend: {\r\n width: \"3%\",\r\n height: \"8px\",\r\n borderRadius: \"20px\",\r\n margin: \"40px 20px 5px 20px\"\r\n }\r\n });\r\n});\r\n\r\nconst QUERY = gql`\r\n query ConnectivityDataForGraph(\r\n $productCode: String!\r\n $from: DateTimeOffset!\r\n $to: DateTimeOffset!\r\n $aggregate: DateAggregationType!\r\n ) {\r\n productInstance(productCode: $productCode) {\r\n id\r\n instanceInformation {\r\n __typename\r\n ...on PerlaInstanceInformation {\r\n statistics(from: $from, to: $to, aggregate: $aggregate) {\r\n averageConnectedToClientLan\r\n averageConnectedToClientWlan\r\n averageGsmQuality\r\n }\r\n }\r\n }\r\n }\r\n }\r\n`;\r\n\r\ntype line = {\r\n paddedPoints: number[]\r\n colour: string\r\n}\r\nexport interface ConnectivityProps {\r\n productCode: string;\r\n}\r\n\r\nconst now = new Date()\r\n\r\nconst Connectivity: React.FC = ({ productCode }) => {\r\n const classes = useStyles();\r\n const monthsInHalfYear = 6;\r\n const monthsInYear = 12;\r\n const daysInMonth = 30;\r\n const weeksInThreeMonths = 13;\r\n\r\n const [monthsSelected, setMonth] = React.useState(monthsInHalfYear.toString());\r\n const [first, setFirst] = React.useState(startOfMonth(subMonths(now, monthsInHalfYear)))\r\n const [points, setPoints] = React.useState(monthsInHalfYear + 1)\r\n const [aggregation, setAggregation] = React.useState(DateAggregationType.MONTH)\r\n\r\n const handleChange = (\r\n event: React.ChangeEvent<{ name?: string | undefined; value: unknown }>\r\n ) => {\r\n setMonth((event.target as HTMLTextAreaElement).value);\r\n switch ((event.target as HTMLTextAreaElement).value) {\r\n case \"1\":\r\n setAggregation(DateAggregationType.DAY)\r\n setPoints(daysInMonth + 1)\r\n //one additional point because first point is off the SVG to get the curve this also means we need to back on additional day \r\n setFirst(startOfDay(subDays(now, daysInMonth + 1)))\r\n break;\r\n case \"3\":\r\n setAggregation(DateAggregationType.WEEK)\r\n setPoints(weeksInThreeMonths + 1)\r\n setFirst(startOfWeek(subWeeks(now, weeksInThreeMonths), {weekStartsOn: 1}))\r\n break;\r\n case \"6\":\r\n setAggregation(DateAggregationType.MONTH)\r\n setPoints(monthsInHalfYear + 1)\r\n setFirst(startOfMonth(subMonths(now, monthsInHalfYear)))\r\n break;\r\n case \"12\":\r\n setAggregation(DateAggregationType.MONTH)\r\n setPoints(monthsInYear + 1)\r\n setFirst(startOfMonth(subMonths(now, monthsInYear)))\r\n break;\r\n }\r\n };\r\n\r\n const timeZoneOffset = first.getTimezoneOffset();\r\n const firstTz = subMinutes(first, timeZoneOffset);\r\n const { data, loading } = useQuery(\r\n QUERY,\r\n {\r\n variables: { productCode, from: firstTz, to: startOfDay(now), aggregate: aggregation }\r\n }\r\n );\r\n const info = data?.productInstance?.instanceInformation;\r\n\r\n let xAxisValues: any[] = [];\r\n let mockLines: line[] = [];\r\n\r\n if (aggregation === DateAggregationType.DAY) {\r\n const dateArray = eachDayOfInterval( {start: new Date(addDays(first, 1)), end: new Date(now)})\r\n for(let i = 0; i < dateArray.length; i++){\r\n xAxisValues.push(format(dateArray[i], \"d\"))\r\n }\r\n } \r\n if (aggregation === DateAggregationType.WEEK) {\r\n //add an extra week so we don't get one too many because the svg requires one extra point\r\n const dateArray = eachWeekOfInterval( {start: new Date(addWeeks(first, 1)), end: new Date(now)}, {weekStartsOn: 1})\r\n for(let i = 0; i < dateArray.length; i++){\r\n xAxisValues.push(format(dateArray[i], \"dd/MM\"))\r\n }\r\n }\r\n else {\r\n for(let i = points - 2; i > -1; i--){\r\n xAxisValues.push(format(subMonths(now, i), \"MMM\"))\r\n }\r\n }\r\n \r\n if(!loading){\r\n if(info?.__typename === \"PerlaInstanceInformation\"){\r\n // create array of the regen data\r\n const lanArray = info?.statistics?.map(d =>\r\n d && d.averageConnectedToClientLan ? d.averageConnectedToClientLan : 0\r\n ) ?? [0];\r\n const wlanArray = info?.statistics?.map(d =>\r\n d && d.averageConnectedToClientWlan ? d.averageConnectedToClientWlan : 0\r\n ) ?? [0];\r\n const gsmArray = info?.statistics?.map(d =>\r\n d && d.averageGsmQuality ? d.averageGsmQuality : 0\r\n ) ?? [0];\r\n \r\n // if missing data then add additional points\r\n while(lanArray.length !== points && lanArray.length < points){\r\n lanArray.unshift(0)\r\n }\r\n while(wlanArray.length !== points && wlanArray.length < points){\r\n wlanArray.unshift(0)\r\n }\r\n while(gsmArray.length !== points && gsmArray.length < points){\r\n gsmArray.unshift(0)\r\n }\r\n \r\n \r\n mockLines = [\r\n {\r\n paddedPoints: [\r\n ...lanArray.slice(0),\r\n lanArray[lanArray.length - 1]\r\n ],\r\n colour: \"rgb(99, 134, 163)\"\r\n },\r\n {\r\n paddedPoints: [\r\n ...wlanArray.slice(0),\r\n wlanArray[wlanArray.length - 1]\r\n ],\r\n colour: \"rgb(244, 182, 201)\"\r\n },\r\n {\r\n paddedPoints: [\r\n ...gsmArray.slice(0),\r\n gsmArray[gsmArray.length - 1]\r\n ],\r\n colour: \"rgb(121, 193, 222)\"\r\n }\r\n ];\r\n }\r\n }\r\n \r\n let total = 0\r\n mockLines.forEach(line => {\r\n line.paddedPoints.forEach(point =>{\r\n total += point;\r\n })\r\n });\r\n\r\n if (loading) return
    ;\r\n if (total === 0) return
    < Translate id=\"message.error.No_Connectivity_data\" />
    \r\n\r\n\r\n return (\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n \r\n handleChange(event)}\r\n >\r\n \r\n 1 \r\n \r\n \r\n 3 \r\n \r\n \r\n 6 \r\n \r\n \r\n 12 \r\n \r\n \r\n \r\n
    \r\n
    \r\n {data && (\r\n \r\n )}\r\n
    \r\n
    \r\n \r\n
    LAN
    \r\n
    \r\n
    \r\n \r\n
    W-LAN
    \r\n
    \r\n
    \r\n \r\n
    GSM
    \r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default Connectivity;\r\n","import React, { Fragment, useState } from \"react\";\r\nimport { useParams } from \"react-router-dom\";\r\nimport { useQuery } from \"@apollo/react-hooks\";\r\nimport gql from \"graphql-tag\";\r\n\r\nimport Box from \"@material-ui/core/Box\";\r\nimport Grid from \"@material-ui/core/Grid\";\r\nimport Alert from \"@material-ui/lab/Alert\";\r\nimport CircularProgress from \"@material-ui/core/CircularProgress\";\r\nimport { Translate } from \"react-localize-redux\";\r\n\r\nimport DeviceData from \"./DeviceData\";\r\nimport DisplayStatus from \"./DisplayStatus\";\r\nimport SilkDeviceData from \"./SilkDeviceData\";\r\nimport SilkTelemetry from \"./SilkTelemetry\";\r\nimport CustomerDetails from \"./CustomerDetails\";\r\nimport Telemetry from \"./Telemetry\";\r\nimport NotificationsHistory from \"./NotificationsHistory\";\r\nimport SilkNotifs from \"./SilkNotifications\";\r\nimport DeviceStatus from \"./DeviceStatus\";\r\nimport DeviceSummary from \"./DeviceSummary\";\r\nimport SilkSummary from \"./SilkSummary\";\r\nimport BarChart from \"./BarChart/index\";\r\nimport Regeneration from \"./Regeneration\";\r\nimport SilkRegeneration from \"./SilkRegeneration\";\r\nimport ParameterRnD from \"./ParametersRnD\";\r\n// import Connectivity from \"./Connectivity\";\r\nimport PageHeader from \"components/common/PageHeader\";\r\nimport colours from \"themes/bwtColors\";\r\n\r\nimport USER_ROLES from \"commonQueries/userRole\";\r\n\r\nimport {\r\n productInstanceAndCustomerDetails_productInstance_instanceInformation_ProductInstanceInformation as ProductInstanceInfo,\r\n productInstanceAndCustomerDetails_productInstance_instanceInformation_PerlaInstanceInformation as PerlaInstanceInfo,\r\n productInstanceAndCustomerDetails_productInstance_instanceInformation_SilkInstanceInformation as SilkInstanceInformation,\r\n productInstanceAndCustomerDetails_productInstance_owner_userInformation as UserInfo,\r\n productInstanceAndCustomerDetails_productInstance as ProductInstance,\r\n productInstanceAndCustomerDetails as QueryData,\r\n productInstanceAndCustomerDetailsVariables as QueryVars,\r\n} from \"types/apolloGenerated/productInstanceAndCustomerDetails\";\r\n\r\nimport Connectivity from \"./Connectivity\";\r\n\r\nimport AuditLog from \"./AuditLog\";\r\nimport store from \"../../../redux/store\";\r\nimport * as Types from \"../../../types/ToolboxEntities\";\r\n\r\nfunction resolveInstanceInfo(\r\n data?: QueryData\r\n): {\r\n prodInfo: ProductInstanceInfo | null;\r\n perlaInfo: PerlaInstanceInfo | null;\r\n silkData: SilkInstanceInformation | null;\r\n} {\r\n const info = ((data || {}).productInstance || {}).instanceInformation;\r\n if (info) {\r\n switch (info.__typename) {\r\n case \"ProductInstanceInformation\":\r\n return {\r\n prodInfo: info as ProductInstanceInfo,\r\n perlaInfo: null,\r\n silkData: null,\r\n };\r\n\r\n case \"PerlaInstanceInformation\":\r\n return {\r\n prodInfo: null,\r\n perlaInfo: info as PerlaInstanceInfo,\r\n silkData: null,\r\n };\r\n\r\n case \"SilkInstanceInformation\":\r\n return {\r\n prodInfo: null,\r\n perlaInfo: null,\r\n silkData: info as SilkInstanceInformation,\r\n };\r\n }\r\n }\r\n return { prodInfo: null, perlaInfo: null, silkData: null };\r\n}\r\n\r\nconst QUERY = gql`\r\n query productInstanceAndCustomerDetails(\r\n $productCode: String!\r\n $timestamp: DateTimeOffset!\r\n $count: Int!\r\n ) {\r\n productInstance(productCode: $productCode) {\r\n id\r\n productCode\r\n dataSharedWithPartner\r\n installationDate\r\n registrationDate\r\n batchNumber\r\n erpBatchNumber\r\n batchDeactivated\r\n isTestDevice\r\n serialNumber\r\n acceptedContractDate\r\n acceptedContractTerms\r\n product {\r\n productInformation {\r\n id\r\n name\r\n recentFirmwareVersion\r\n itemNumber\r\n }\r\n }\r\n address {\r\n id\r\n street\r\n postalCode\r\n city\r\n countryCode\r\n location {\r\n latitude\r\n longitude\r\n }\r\n }\r\n servicePartner {\r\n id\r\n name\r\n }\r\n customerSelectedInstaller {\r\n id\r\n name\r\n }\r\n owner {\r\n userInformation {\r\n id\r\n firstName\r\n lastName\r\n email\r\n telephone\r\n lastLogin\r\n activity {\r\n clientName\r\n lastAction\r\n }\r\n address {\r\n street\r\n postalCode\r\n city\r\n }\r\n }\r\n }\r\n instanceInformation {\r\n ... on SilkInstanceInformation {\r\n notifications {\r\n messageType\r\n message\r\n timestamp\r\n direction\r\n }\r\n deviceId\r\n productCode\r\n state\r\n silkDetailsInstance {\r\n averageWaterServedDaily\r\n currentSaltLevelKg\r\n daysServiceExpire\r\n deviceActivated\r\n lastUpdate\r\n maxSaltCapacityKg\r\n productCode\r\n regenerationStarted\r\n totalDaysInService\r\n }\r\n silkDataInstance {\r\n action\r\n actionState\r\n averageWaterServed\r\n batchNumber\r\n currentActivity\r\n dayOfWeek\r\n daysToService\r\n daysWarrantyExpires\r\n finished\r\n hardness\r\n hasAction\r\n productCode\r\n productionDate\r\n remainingCapacity\r\n remainingSalt\r\n started\r\n totalRecharges\r\n totalWaterServed\r\n userId\r\n waterConsumption\r\n waterFlowRate\r\n waterHardnessUnit\r\n wifiConnectionStrength\r\n }\r\n }\r\n ... on PerlaInstanceInformation {\r\n registeredPerlaInstanceInformation {\r\n firmware\r\n stateTitle\r\n nextCustomerMaintainance\r\n nextServiceDate\r\n holidayModeActive\r\n ballValveOpen\r\n deviceParameter\r\n }\r\n wPA2Key\r\n deviceId\r\n accessCodes {\r\n code\r\n accessLevel\r\n }\r\n telemetry(timestamp: $timestamp) {\r\n value {\r\n date\r\n }\r\n }\r\n unconfirmedNotifications(count: $count) {\r\n baseInformation {\r\n receivedAt\r\n messageId\r\n sentAt\r\n }\r\n stateBody\r\n stateTitle\r\n code\r\n codeType\r\n }\r\n }\r\n ... on ProductInstanceInformation {\r\n userActions {\r\n end\r\n userActionClass\r\n }\r\n }\r\n }\r\n }\r\n }\r\n`;\r\n\r\nconst deactivatedProductCode = (isDeactivated: boolean | undefined) => {\r\n return isDeactivated ? (\r\n \r\n \r\n \r\n ) : (\r\n \r\n );\r\n};\r\n\r\nconst CustomerPage: React.FC = () => {\r\n const { productCode = \"\" } = useParams();\r\n const [timestamp] = useState(new Date().toJSON());\r\n const count = 5;\r\n\r\n const { data, loading, error } = useQuery(QUERY, {\r\n variables: { productCode, timestamp, count },\r\n });\r\n\r\n const { data: roleData, loading: roleLoading, error: roleError } = useQuery(\r\n USER_ROLES\r\n );\r\n const roles: string[] = roleData?.user?.userInformation?.userRoles;\r\n let rndPermission: boolean = false;\r\n\r\n let canViewLogs: boolean = false;\r\n let campRnd: boolean = false;\r\n\r\n store.getState().auth.user?.roles.forEach((item: Types.Role) => {\r\n if (item.roleName === \"CampRnd\") {\r\n campRnd = true;\r\n }\r\n if (item.roleName === \"AuditAdmin\") {\r\n canViewLogs = true;\r\n }\r\n });\r\n\r\n if (!roleLoading) {\r\n if (roles != null && roles.includes(\"rnd\")) {\r\n rndPermission = true;\r\n }\r\n }\r\n if (roleError) {\r\n rndPermission = false;\r\n }\r\n\r\n if (loading) return ;\r\n\r\n const productInstance = data?.productInstance || null;\r\n const userInfo = data?.productInstance?.owner?.userInformation || null;\r\n const { perlaInfo, silkData, prodInfo } = resolveInstanceInfo(data);\r\n\r\n const productInformation =\r\n data?.productInstance?.product?.productInformation || null;\r\n\r\n const serialNumber = data?.productInstance?.serialNumber ?? \"unknown\";\r\n\r\n let views;\r\n if (productInstance) {\r\n if (perlaInfo) {\r\n if (userInfo) {\r\n views = (\r\n \r\n );\r\n } else {\r\n views = (\r\n \r\n );\r\n }\r\n } else if (silkData && userInfo) {\r\n views = (\r\n \r\n );\r\n } else if (prodInfo && userInfo) {\r\n views = (\r\n \r\n );\r\n } else {\r\n views = (\r\n \r\n );\r\n }\r\n }\r\n\r\n return (\r\n \r\n \r\n {deactivatedProductCode(productInstance?.batchDeactivated)}\r\n {views}\r\n {error && (\r\n \r\n {\r\n \r\n
    \r\n \r\n
    \r\n
    {error.message}
    \r\n
    \r\n }\r\n
    \r\n )}\r\n {data?.productInstance === null ? (\r\n \r\n \r\n \r\n ) : (\r\n \"\"\r\n )}\r\n
    \r\n );\r\n};\r\n\r\nconst NewProductCode: React.FC<{\r\n productInstance: ProductInstance;\r\n campRnd: boolean;\r\n}> = ({ productInstance, campRnd }) => (\r\n \r\n
    \r\n \r\n \r\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 PerlaViews: React.FC<{\r\n productCode: string;\r\n userInfo: UserInfo;\r\n productInstance: ProductInstance;\r\n perlaInfo: PerlaInstanceInfo;\r\n rndPermission: boolean;\r\n\r\n canViewLogs: boolean;\r\n campRnd: boolean;\r\n}> = ({\r\n productCode,\r\n userInfo,\r\n productInstance,\r\n perlaInfo,\r\n rndPermission,\r\n canViewLogs,\r\n campRnd,\r\n}) => (\r\n \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {rndPermission ? (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ) : (\r\n \r\n \r\n \r\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 SilkViews: React.FC<{\r\n productCode: string;\r\n userInfo: UserInfo;\r\n productInstance: ProductInstance;\r\n silkData: SilkInstanceInformation;\r\n}> = ({ productCode, userInfo, productInstance, silkData }) => (\r\n \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\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 UnregisteredPerlaViews: React.FC<{\r\n productCode: string;\r\n productInstance: ProductInstance;\r\n perlaInfo: PerlaInstanceInfo;\r\n rndPermission: boolean;\r\n campRnd: boolean;\r\n}> = ({ productCode, productInstance, perlaInfo, rndPermission, campRnd }) => (\r\n \r\n \r\n \r\n {[]}\r\n \r\n \r\n {/* RND VISIBLE ONLY */}\r\n {rndPermission === 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\nconst ProductViews: React.FC<{\r\n userInfo: UserInfo;\r\n productInstance: ProductInstance;\r\n campRnd: boolean;\r\n}> = ({ userInfo, productInstance, campRnd }) => (\r\n \r\n \r\n \r\n \r\n {[\r\n ,\r\n ]}\r\n \r\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 Col: React.FC<{ children: React.ReactElement[] }> = ({ children }) => (\r\n \r\n {children.map((child, idx) => (\r\n \r\n \r\n {child}\r\n \r\n \r\n ))}\r\n \r\n);\r\n\r\nexport default CustomerPage;\r\n","import React from \"react\";\r\nimport { useParams } from \"react-router-dom\";\r\nimport { useQuery } from \"@apollo/react-hooks\";\r\nimport { Translate } from \"react-localize-redux\";\r\nimport gql from \"graphql-tag\";\r\n\r\nimport Box from \"@material-ui/core/Box\";\r\nimport TextField from \"@material-ui/core/TextField\";\r\n\r\nimport colours from \"themes/bwtColors\";\r\nimport PageHeader from \"components/common/PageHeader\";\r\nimport {\r\n PartnerInfo as QueryData,\r\n PartnerInfoVariables as QueryVars\r\n} from \"types/apolloGenerated/PartnerInfo\";\r\n\r\nconst QUERY = gql`\r\n query PartnerInfo($id: Int!) {\r\n organization(id: $id) {\r\n id\r\n name\r\n email\r\n telephone\r\n partnerType\r\n externalId\r\n address {\r\n street\r\n postalCode\r\n city\r\n countryCode\r\n }\r\n }\r\n }\r\n`;\r\n\r\nconst ServicePartner: React.FC = () => {\r\n const { partnerId = \"0\" } = useParams();\r\n const id = Number(partnerId);\r\n const { data } = useQuery(QUERY, {\r\n variables: { id }\r\n });\r\n\r\n const organization = (data || {}).organization || null;\r\n\r\n const {\r\n name = \"\",\r\n address = \"\",\r\n email = \"\",\r\n telephone = \"\",\r\n partnerType = \"\",\r\n externalId = \"\"\r\n } = organization || {};\r\n\r\n const { street, postalCode, city, countryCode } = address || {};\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\nconst TextBox: React.FC<{\r\n value: string | undefined | null;\r\n translateId: string;\r\n width?: string;\r\n}> = ({ value, translateId, width = \"350px\" }) => {\r\n return (\r\n }\r\n variant=\"filled\"\r\n InputLabelProps={{\r\n shrink: true\r\n }}\r\n style={{\r\n marginRight: \"25px\",\r\n border: \"solid 1px\",\r\n borderTopLeftRadius: \"4px\",\r\n borderTopRightRadius: \"4px\",\r\n backgroundColor: colours.grey5,\r\n width: width\r\n }}\r\n />\r\n );\r\n};\r\n\r\nexport default ServicePartner;\r\n","import React, { Fragment, SetStateAction } from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport { Dispatch } from \"redux\";\r\nimport { AppState } from \"redux/store\";\r\nimport { UserProfile } from \"types/ToolboxEntities\";\r\nimport { FormControl } from \"@material-ui/core\";\r\nimport { Done } from \"@material-ui/icons\";\r\nimport { Clear } from \"@material-ui/icons\";\r\nimport { useMutation } from \"react-apollo\";\r\nimport gql from \"graphql-tag\";\r\nimport {\r\n Box,\r\n Grid,\r\n TextField,\r\n Checkbox,\r\n MenuItem,\r\n Select,\r\n} from \"@material-ui/core\";\r\nimport { Translate } from \"react-localize-redux\";\r\nimport {\r\n UserInformationUpdateInput,\r\n Country,\r\n} from \"types/apolloGenerated/globalTypes\";\r\nimport { createStyles, Theme, makeStyles } from \"@material-ui/core/styles\";\r\n\r\ninterface EditCustomerDetailsProps {\r\n user: UserProfile | null;\r\n customerDetailsObj: UserInformationUpdateInput;\r\n setCustomerDetailsObj: React.Dispatch<\r\n React.SetStateAction\r\n >;\r\n validation: { field: string; message: string }[];\r\n}\r\n\r\nconst useStyles = makeStyles((theme: Theme) => {\r\n return createStyles({\r\n contentDisplay: {\r\n display: \"flex\",\r\n position: \"relative\",\r\n flexWrap: \"wrap\",\r\n width: \"100%\",\r\n paddingTop: \"40px\",\r\n },\r\n reactiveBoxes: {\r\n minWidth: \"350px\",\r\n width: \"92%\",\r\n margin: \"0 0 23px 30px\",\r\n },\r\n reactiveBoxesRight: {\r\n minWidth: \"350px\",\r\n width: \"90%\",\r\n margin: \"0 0 23px 30px\",\r\n },\r\n reactiveBoxesSmall: {\r\n minWidth: \"100px\",\r\n width: \"70%\",\r\n margin: \"0 0 23px 30px\",\r\n },\r\n });\r\n});\r\n\r\nconst UPDATE_TEST_FLAG_MUTATION = gql`\r\n mutation updateUserTestFlag($userId: ID!, $isTestUser: Boolean!) {\r\n user {\r\n updateCustomerTestFlag(userId: $userId, isTestUser: $isTestUser)\r\n }\r\n }\r\n`;\r\n\r\nconst EditCustomerDetails: React.FC = ({\r\n user,\r\n customerDetailsObj,\r\n setCustomerDetailsObj,\r\n validation,\r\n}) => {\r\n //const { data } = useQuery(COUNTRY_QUERY);\r\n const currentCC = customerDetailsObj?.address?.countryCode ?? null;\r\n const allowedCountries: Country[] = user?.allowedCountries || [];\r\n const [country, setCountry] = React.useState(currentCC);\r\n const [open, setOpen] = React.useState(false);\r\n const [updateTestFlag] = useMutation(UPDATE_TEST_FLAG_MUTATION);\r\n\r\n const handleClose = () => {\r\n setOpen(false);\r\n };\r\n\r\n const handleOpen = () => {\r\n setOpen(true);\r\n };\r\n\r\n const handleTestFlagChange = (\r\n event: React.ChangeEvent<{ value: unknown }>\r\n ) => {\r\n updateTestFlag({\r\n variables: {\r\n userId: customerDetailsObj?.id,\r\n isTestUser: event.target.value as boolean,\r\n },\r\n });\r\n customerDetailsObj.isTestUser = event.target.value as boolean;\r\n const latestValue = Object.assign({}, customerDetailsObj);\r\n setCustomerDetailsObj(latestValue);\r\n };\r\n\r\n const handleChange = (event: React.ChangeEvent<{ value: unknown }>) => {\r\n setCountry(event.target.value as Country);\r\n if (customerDetailsObj.address?.countryCode) {\r\n customerDetailsObj.address.countryCode = event.target.value as Country;\r\n }\r\n const latestValue = Object.assign({}, customerDetailsObj);\r\n setCustomerDetailsObj(latestValue);\r\n };\r\n\r\n const validationFields = validation.map((value) => value.field);\r\n\r\n const specialRights = [\r\n {\r\n message:\r\n 'User is allowed to use \"BWT-Perla Updater\" (Only for BWT Employees)',\r\n },\r\n ];\r\n\r\n const classes = useStyles();\r\n\r\n console.log(\"test: \" + user);\r\n\r\n return (\r\n \r\n \r\n \r\n }\r\n defaultValue={customerDetailsObj?.firstName}\r\n variant=\"standard\"\r\n error={validationFields.includes(\"firstName\")}\r\n helperText={\r\n validationFields.includes(\"firstName\")\r\n ? validation[validationFields.indexOf(\"firstName\")].message\r\n : \"\"\r\n }\r\n className={classes.reactiveBoxes}\r\n InputProps={{\r\n style: { padding: 0 },\r\n }}\r\n onChange={(value) =>\r\n setCustomerDetailsObj({\r\n ...customerDetailsObj,\r\n firstName: value.target.value,\r\n })\r\n }\r\n />\r\n \r\n \r\n }\r\n defaultValue={customerDetailsObj?.lastName}\r\n variant=\"standard\"\r\n className={classes.reactiveBoxesRight}\r\n error={validationFields.includes(\"lastName\")}\r\n helperText={\r\n validationFields.includes(\"lastName\")\r\n ? validation[validationFields.indexOf(\"lastName\")].message\r\n : \"\"\r\n }\r\n onChange={(value) =>\r\n setCustomerDetailsObj({\r\n ...customerDetailsObj,\r\n lastName: value.target.value,\r\n })\r\n }\r\n />\r\n \r\n \r\n }\r\n defaultValue={customerDetailsObj?.email}\r\n variant=\"standard\"\r\n error={validationFields.includes(\"email\")}\r\n helperText={\r\n validationFields.includes(\"email\")\r\n ? validation[validationFields.indexOf(\"email\")].message\r\n : \"\"\r\n }\r\n className={classes.reactiveBoxes}\r\n onChange={(value) =>\r\n setCustomerDetailsObj({\r\n ...customerDetailsObj,\r\n email: value.target.value,\r\n })\r\n }\r\n />\r\n \r\n \r\n }\r\n defaultValue={customerDetailsObj?.telephone}\r\n variant=\"standard\"\r\n type=\"number\"\r\n className={classes.reactiveBoxesRight}\r\n onChange={(value) =>\r\n setCustomerDetailsObj({\r\n ...customerDetailsObj,\r\n telephone: value.target.value,\r\n })\r\n }\r\n />\r\n \r\n \r\n }\r\n defaultValue={customerDetailsObj?.address?.street}\r\n variant=\"standard\"\r\n className={classes.reactiveBoxes}\r\n onChange={(value) =>\r\n setCustomerDetailsObj({\r\n ...customerDetailsObj,\r\n address: {\r\n ...customerDetailsObj.address,\r\n street: value.target.value,\r\n },\r\n })\r\n }\r\n />\r\n \r\n \r\n }\r\n defaultValue={customerDetailsObj?.address?.postalCode}\r\n variant=\"standard\"\r\n className={classes.reactiveBoxesSmall}\r\n style={{ width: \"85%\" }}\r\n onChange={(value) =>\r\n setCustomerDetailsObj({\r\n ...customerDetailsObj,\r\n address: {\r\n ...customerDetailsObj.address,\r\n postalCode: value.target.value,\r\n },\r\n })\r\n }\r\n />\r\n \r\n \r\n }\r\n defaultValue={customerDetailsObj?.address?.city}\r\n variant=\"standard\"\r\n className={classes.reactiveBoxesSmall}\r\n style={{ width: \"85%\" }}\r\n onChange={(value) =>\r\n setCustomerDetailsObj({\r\n ...customerDetailsObj,\r\n address: {\r\n ...customerDetailsObj.address,\r\n city: value.target.value,\r\n },\r\n })\r\n }\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n {({ translate }) => {\r\n if (!allowedCountries.length) return Fragment;\r\n return (\r\n \r\n {allowedCountries.map((country: any) => (\r\n \r\n {\r\n translate(\r\n \"countries.\" + country.toLocaleLowerCase()\r\n ) as string\r\n }\r\n \r\n ))}\r\n \r\n );\r\n }}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {specialRights.map((rights, idx) => (\r\n \r\n {\r\n customerDetailsObj.canUsePerlaUpdater =\r\n value.target.checked;\r\n const latestValue = Object.assign({}, customerDetailsObj);\r\n setCustomerDetailsObj(latestValue);\r\n }}\r\n />\r\n \r\n {rights.message}\r\n \r\n \r\n ))}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n customerDetailsObj.acceptedMarketingUsage =\r\n value.target.checked;\r\n const latestValue = Object.assign({}, customerDetailsObj);\r\n setCustomerDetailsObj(latestValue);\r\n }}\r\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 = (appState: AppState) => ({\r\n user: appState.auth.user,\r\n});\r\n\r\nexport default connect(mapStateToProps)(EditCustomerDetails);\r\n","import { State as AgGridState } from \"redux/types/AgGrid\";\r\n\r\nexport enum ActionType {\r\n \"GRID\" = \"SERVICE_OVERVIEW_GRID\",\r\n \"SEARCH\" = \"SERVICE_OVERVIEW_SEARCH\",\r\n}\r\n\r\nexport interface SearchAction {\r\n type: ActionType.SEARCH;\r\n payload: string | null;\r\n}\r\n\r\nexport interface State {\r\n grid: AgGridState;\r\n search: string | null;\r\n}\r\n","import React, { useState, useEffect } from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport { bindActionCreators, Dispatch } from \"redux\";\r\nimport { Translate } from \"react-localize-redux\";\r\nimport { useParams } from \"react-router-dom\";\r\n\r\nimport { createStyles, Theme, makeStyles } from \"@material-ui/core/styles\";\r\nimport Typography from \"@material-ui/core/Typography\";\r\nimport { Box } from \"@material-ui/core\";\r\n\r\nimport \"@ag-grid-community/all-modules/dist/styles/ag-grid.css\";\r\nimport \"@ag-grid-community/all-modules/dist/styles/ag-theme-balham.css\";\r\n\r\nimport { AppState } from \"redux/store\";\r\nimport { State as DeviceOverviewState } from \"redux/types/DeviceOverview\";\r\n\r\nimport {\r\n setGridState,\r\n setColumnStates,\r\n} from \"redux/actions/DeviceOverviewActions\";\r\n\r\nimport AgGrid from \"components/common/Grid/AgGrid\";\r\n\r\nimport {\r\n getColumnDefs,\r\n apolloConnectorById,\r\n CellRenderer\r\n} from \"./GridConfig\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) => {\r\n return createStyles({\r\n customerOverview: {\r\n display: \"flex\",\r\n flexFlow: \"column\",\r\n height: \"100%\",\r\n \"& > .gridFilterHeader\": {\r\n flex: \"0 1 auto\"\r\n },\r\n\r\n \"& > .innerContent\": {\r\n flex: \"1 1 auto\",\r\n margin: \"0 30px\"\r\n }\r\n },\r\n\r\n innerHeader: {\r\n flex: \"0 1 auto\",\r\n display: \"flex\",\r\n margin: \"0 -20px 20px -20px\",\r\n alignItems: \"flex-end\",\r\n justifyContent: \"space-between\",\r\n\r\n \"& > *\": {\r\n flex: \"0 1 auto\",\r\n margin: \"0 20px\",\r\n minWidth: \"170px\"\r\n },\r\n\r\n \"& > .filter\": {\r\n flex: \"1 1 auto\",\r\n maxWidth: \"250px\"\r\n }\r\n },\r\n\r\n innerHeaderRight: {\r\n flex: \"0 1 auto\",\r\n display: \"flex\",\r\n alignItems: \"flex-end\",\r\n margin: 0,\r\n\r\n \"& > *\": {\r\n flex: \"0 1 auto\",\r\n margin: \"0 20px\",\r\n minWidth: \"170px\"\r\n }\r\n }\r\n });\r\n});\r\n\r\ninterface RegisteredDeviceListProps {\r\n deviceOverviewState: DeviceOverviewState;\r\n actions: {\r\n setGridState: typeof setGridState;\r\n setColumnStates: typeof setColumnStates;\r\n };\r\n}\r\n\r\nconst RegisteredDeviceList: React.FC = ({\r\n deviceOverviewState,\r\n actions\r\n}) => {\r\n const classes = useStyles();\r\n\r\n const { customerId } = useParams();\r\n\r\n const id = customerId ? customerId : \"\"\r\n\r\n const [apolloConnector, setApolloConnector] = useState>(apolloConnectorById(id));\r\n\r\n useEffect(() => {\r\n setApolloConnector(apolloConnectorById(id));\r\n }, [id]);\r\n\r\n return (\r\n \r\n {({ translate }) => (\r\n \r\n
    \r\n \r\n \r\n \r\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 = (appState: AppState) => ({\r\n deviceOverviewState: appState.deviceOverview\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch: Dispatch) => ({\r\n actions: bindActionCreators(\r\n { setGridState, setColumnStates },\r\n dispatch\r\n )\r\n});\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(RegisteredDeviceList);\r\n","import { ActionType, SearchAction } from \"redux/types/ServiceOverview\";\r\n\r\nimport AgGridActionHelper from \"redux/actions/AgGridActionHelper\";\r\n\r\nexport const {\r\n setGridState,\r\n setColumnStates,\r\n} = AgGridActionHelper(ActionType.GRID);\r\n\r\nexport const search = (searchTerm: string | null): SearchAction => ({\r\n type: ActionType.SEARCH,\r\n payload: searchTerm,\r\n});\r\n","import React from \"react\";\r\nimport { Translate, TranslateFunction } from \"react-localize-redux\";\r\nimport { Link } from \"react-router-dom\";\r\n\r\nimport { ColDef } from \"@ag-grid-enterprise/all-modules\";\r\nimport \"@ag-grid-community/all-modules/dist/styles/ag-grid.css\";\r\nimport \"@ag-grid-community/all-modules/dist/styles/ag-theme-balham.css\";\r\n\r\nimport { factoryApolloConnector } from \"util/AgGridUtils\";\r\n\r\nimport {\r\n customerProductInstances,\r\n customerProductInstances_customers_results_registeredProducts,\r\n} from \"types/apolloGenerated/customerProductInstances\";\r\n\r\nimport SyncIcon from \"@material-ui/icons/Sync\";\r\nimport CheckIcon from \"@material-ui/icons/Check\";\r\nimport bwtColors, { campColours } from \"themes/bwtColors\";\r\nimport { format } from \"date-fns\";\r\nimport { Done, Clear } from \"@material-ui/icons\";\r\nimport { MenuItem, Tooltip } from \"@material-ui/core\";\r\nimport WarningIcon from \"@material-ui/icons/Warning\";\r\nimport { QUERY_CUSTOMER_PRODUCT_INSTANCES } from \"commonQueries/customerProductInstances\";\r\n\r\nexport const apolloConnectorById = (id: String) => {\r\n return factoryApolloConnector(\r\n QUERY_CUSTOMER_PRODUCT_INSTANCES,\r\n (data: customerProductInstances) => {\r\n const result = data.customers?.results?.[0];\r\n\r\n // getDataSource expects results rather than \"registeredProducts\".\r\n const transformedResponse = {\r\n results: result?.registeredProducts,\r\n __typename: result?.__typename,\r\n };\r\n\r\n return transformedResponse;\r\n },\r\n {},\r\n { customArguments: { id } }\r\n );\r\n};\r\n\r\nexport const getColumnDefs = (translate: TranslateFunction): ColDef[] => {\r\n const stateStyle = (params: any) => {\r\n if (!params || !params.data) return {};\r\n if (params.data.state === \"ERROR\") {\r\n return { backgroundColor: campColours.backgroundError };\r\n }\r\n if (params.data.state === \"WARNING\") {\r\n return { backgroundColor: campColours.backgroundWarn };\r\n }\r\n };\r\n const columnDefs = [\r\n {\r\n headerName: translate(\"types.productInstance.productCode\") as string,\r\n field: \"productCode\",\r\n cellRenderer: \"ProductInstanceLink\",\r\n cellStyle: stateStyle,\r\n width: 120,\r\n sortable: false,\r\n },\r\n\r\n // {\r\n // headerName: translate(\"types.grid.sub\") as string,\r\n // field: \"sub\", // missing from GraphQL.\r\n // cellRenderer: \"SubIndicator\",\r\n // cellStyle: stateStyle,\r\n // width: 200\r\n // }\r\n {\r\n headerName: translate(\"types.common.serviceContract\") as string,\r\n field: \"acceptedContractDate\",\r\n cellStyle: stateStyle,\r\n cellRenderer: \"FormatDate\",\r\n width: 140,\r\n sortable: false,\r\n },\r\n\r\n {\r\n headerName: translate(\"types.common.status\") as string,\r\n field: \"acceptedContractDate\",\r\n cellStyle: { position: \"relative\", top: \"-4px\" },\r\n cellRenderer: \"FormatStatus\",\r\n width: 100,\r\n sortable: false,\r\n },\r\n ];\r\n return columnDefs;\r\n};\r\n\r\ninterface CellRenderer {\r\n value: string;\r\n data: customerProductInstances_customers_results_registeredProducts;\r\n}\r\n\r\nconst ProductInstanceLink: React.FC = ({ data, value }) => {\r\n if (!data) {\r\n return
    ;\r\n }\r\n return {value};\r\n};\r\n\r\nexport const FirmwareIndicator: React.FC = ({ data, value }) => {\r\n if (!(data && data.instanceInformation)) {\r\n return
    ;\r\n }\r\n\r\n if (\r\n data.instanceInformation?.__typename === \"PerlaInstanceInformation\" &&\r\n data.product?.productInformation?.recentFirmwareVersion\r\n ) {\r\n const isOutOfDate =\r\n value !== \"0\" &&\r\n data.instanceInformation?.registeredPerlaInstanceInformation?.firmware &&\r\n data.instanceInformation.registeredPerlaInstanceInformation.firmware <\r\n data.product?.productInformation?.recentFirmwareVersion;\r\n\r\n return (\r\n
    \r\n
    {value}
    \r\n {isOutOfDate && }\r\n
    \r\n );\r\n }\r\n\r\n return
    {value}
    ;\r\n};\r\n\r\nconst SubIndicator: React.FC = ({ data, value }) => {\r\n if (!data) {\r\n return
    ;\r\n }\r\n return !!value ? : null;\r\n};\r\n\r\nconst FormatDate: React.FC = ({ data, value }) => {\r\n if (!(data && value)) {\r\n return
    ;\r\n }\r\n return (\r\n \r\n {(translate) => {\r\n return (\r\n
    \r\n {format(\r\n new Date(value),\r\n translate.translate(\"generics.dateTimeFormatFNS\") as string\r\n )}\r\n
    \r\n );\r\n }}\r\n
    \r\n );\r\n};\r\n\r\nconst FormatStatus: React.FC = ({ data, value }) => {\r\n if (!(data && value)) {\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n\r\n const date = new Date();\r\n const diff: number = Math.abs(date.getTime() - new Date(value)?.getTime());\r\n const diffDays: number = Math.ceil(diff / (1000 * 3600 * 24));\r\n if (diffDays > 730.485) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nconst StateCell: React.FC = ({ data, value }) => {\r\n if (!data || data.state === \"NOT_SET\") {\r\n return
    ;\r\n }\r\n return
    {value}
    ;\r\n};\r\n\r\nexport const CellRenderer = {\r\n ProductInstanceLink,\r\n FirmwareIndicator,\r\n SubIndicator,\r\n StateCell,\r\n FormatDate,\r\n FormatStatus,\r\n};\r\n","import React, { useState, useEffect } from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport { bindActionCreators, Dispatch } from \"redux\";\r\nimport { Translate } from \"react-localize-redux\";\r\nimport { useParams } from \"react-router-dom\";\r\n\r\nimport { createStyles, Theme, makeStyles } from \"@material-ui/core/styles\";\r\nimport Typography from \"@material-ui/core/Typography\";\r\nimport { Box } from \"@material-ui/core\";\r\n\r\nimport \"@ag-grid-community/all-modules/dist/styles/ag-grid.css\";\r\nimport \"@ag-grid-community/all-modules/dist/styles/ag-theme-balham.css\";\r\n\r\nimport { AppState } from \"redux/store\";\r\n\r\nimport { State as ServiceOverviewState } from \"redux/types/ServiceOverview\";\r\n\r\n\r\nimport {\r\n setGridState,\r\n setColumnStates,\r\n} from \"redux/actions/ServiceOverviewActions\";\r\n\r\nimport AgGrid from \"components/common/Grid/AgGrid\";\r\n\r\nimport {\r\n getColumnDefs,\r\n apolloConnectorById,\r\n CellRenderer\r\n} from \"./ServiceGrid\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) => {\r\n return createStyles({\r\n customerOverview: {\r\n display: \"flex\",\r\n flexFlow: \"column\",\r\n height: \"100%\",\r\n \"& > .gridFilterHeader\": {\r\n flex: \"0 1 auto\"\r\n },\r\n\r\n \"& > .innerContent\": {\r\n flex: \"1 1 auto\",\r\n margin: \"0 30px\"\r\n }\r\n },\r\n\r\n innerHeader: {\r\n flex: \"0 1 auto\",\r\n display: \"flex\",\r\n margin: \"0 -20px 20px -20px\",\r\n alignItems: \"flex-end\",\r\n justifyContent: \"space-between\",\r\n\r\n \"& > *\": {\r\n flex: \"0 1 auto\",\r\n margin: \"0 20px\",\r\n minWidth: \"170px\"\r\n },\r\n\r\n \"& > .filter\": {\r\n flex: \"1 1 auto\",\r\n maxWidth: \"250px\"\r\n }\r\n },\r\n\r\n innerHeaderRight: {\r\n flex: \"0 1 auto\",\r\n display: \"flex\",\r\n alignItems: \"flex-end\",\r\n margin: 0,\r\n\r\n \"& > *\": {\r\n flex: \"0 1 auto\",\r\n margin: \"0 20px\",\r\n minWidth: \"170px\"\r\n }\r\n }\r\n });\r\n});\r\n\r\ninterface RegisteredDeviceListProps {\r\n deviceOverviewState: ServiceOverviewState;\r\n actions: {\r\n setGridState: typeof setGridState;\r\n setColumnStates: typeof setColumnStates;\r\n };\r\n}\r\n\r\nconst RegisteredDeviceList: React.FC = ({\r\n deviceOverviewState,\r\n actions\r\n}) => {\r\n const classes = useStyles();\r\n\r\n const { customerId } = useParams();\r\n\r\n const id = customerId ? customerId : \"\"\r\n\r\n const [apolloConnector, setApolloConnector] = useState>(apolloConnectorById(id));\r\n\r\n useEffect(() => {\r\n setApolloConnector(apolloConnectorById(id));\r\n }, [id]);\r\n\r\n return (\r\n \r\n {({ translate }) => (\r\n \r\n
    \r\n \r\n \r\n \r\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 = (appState: AppState) => ({\r\n deviceOverviewState: appState.deviceOverview\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch: Dispatch) => ({\r\n actions: bindActionCreators(\r\n { setGridState, setColumnStates },\r\n dispatch\r\n )\r\n});\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(RegisteredDeviceList);\r\n","import { ActionType, SearchAction } from \"redux/types/PoolOverview\";\r\n\r\nimport AgGridActionHelper from \"redux/actions/AgGridActionHelper\";\r\n\r\nexport const {\r\n setGridState,\r\n setColumnStates,\r\n} = AgGridActionHelper(ActionType.GRID);\r\n\r\nexport const search = (searchTerm: string | null): SearchAction => ({\r\n type: ActionType.SEARCH,\r\n payload: searchTerm,\r\n});\r\n","import React from \"react\";\r\nimport { TranslateFunction } from \"react-localize-redux\";\r\nimport gql from \"graphql-tag\";\r\n\r\nimport { ColDef } from \"@ag-grid-enterprise/all-modules\";\r\nimport \"@ag-grid-community/all-modules/dist/styles/ag-grid.css\";\r\nimport \"@ag-grid-community/all-modules/dist/styles/ag-theme-balham.css\";\r\n\r\nimport { factoryApolloConnector } from \"util/AgGridUtils\";\r\n\r\nimport {\r\n customerPoolInstances,\r\n customerPoolInstances_customers_results_registeredPools,\r\n} from \"types/apolloGenerated/customerPoolInstances\";\r\n\r\nimport format from \"date-fns/format\";\r\nimport { Translate } from \"react-localize-redux\";\r\n\r\nconst QUERY = gql`\r\n query customerPoolInstances($id: String) {\r\n customers(filter: { filterOption: ID, operator: EQ, values: [$id] }) {\r\n results {\r\n registeredPools {\r\n location\r\n material\r\n shape\r\n volume\r\n poolType\r\n disinfectionType\r\n lastModification\r\n address {\r\n countryCode\r\n street\r\n city\r\n postalCode\r\n }\r\n }\r\n }\r\n }\r\n }\r\n`;\r\n\r\nexport const apolloConnectorById = (id: String) => {\r\n return factoryApolloConnector(\r\n QUERY,\r\n (data: customerPoolInstances) => {\r\n const result = data.customers?.results?.[0];\r\n\r\n // getDataSource expects results rather than \"registeredProducts\".\r\n const transformedResponse = {\r\n results: result?.registeredPools,\r\n __typename: result?.__typename,\r\n };\r\n\r\n return transformedResponse;\r\n },\r\n {},\r\n { customArguments: { id } }\r\n );\r\n};\r\n\r\nexport const getColumnDefs = (translate: TranslateFunction): ColDef[] => {\r\n const columnDefs = [\r\n {\r\n headerName: translate(\"components.registeredPools.location\") as string,\r\n field: \"location\",\r\n width: 120,\r\n },\r\n {\r\n headerName: translate(\"components.registeredPools.material\") as string,\r\n field: \"material\",\r\n width: 120,\r\n },\r\n {\r\n headerName: translate(\"components.registeredPools.shape\") as string,\r\n field: \"shape\",\r\n width: 120,\r\n },\r\n {\r\n headerName: translate(\"components.registeredPools.volume\") as string,\r\n field: \"volume\",\r\n cellRenderer: \"Volume\",\r\n width: 120,\r\n },\r\n {\r\n headerName: translate(\r\n \"components.registeredPools.disinfectionType\"\r\n ) as string,\r\n field: \"disinfectionType\",\r\n width: 160,\r\n },\r\n {\r\n headerName: translate(\"components.registeredPools.poolType\") as string,\r\n field: \"poolType\",\r\n width: 160,\r\n },\r\n {\r\n headerName: translate(\r\n \"components.registeredPools.lastModification\"\r\n ) as string,\r\n cellRenderer: \"DateCell\",\r\n field: \"lastModification\",\r\n width: 200,\r\n },\r\n {\r\n headerName: translate(\"types.address.postalCode\") as string,\r\n field: \"address.postalCode\",\r\n width: 140,\r\n },\r\n {\r\n headerName: translate(\"types.address.street\") as string,\r\n field: \"address.street\",\r\n width: 140,\r\n },\r\n {\r\n headerName: translate(\"types.address.city\") as string,\r\n field: \"address.city\",\r\n width: 140,\r\n },\r\n {\r\n headerName: translate(\"types.address.countryCode\") as string,\r\n field: \"address.countryCode\",\r\n width: 140,\r\n },\r\n ];\r\n return columnDefs;\r\n};\r\n\r\ninterface CellRenderer {\r\n value: string;\r\n data: customerPoolInstances_customers_results_registeredPools;\r\n}\r\n\r\nconst Volume: React.FC = ({ data, value }) => {\r\n if (!data) {\r\n return
    ;\r\n }\r\n return
    {`${data.volume}m³`}
    ;\r\n};\r\n\r\nconst DateCell: React.FC = ({ data, value }) => {\r\n if (!data || !value) {\r\n return
    ;\r\n }\r\n return (\r\n \r\n {(translate) => {\r\n return (\r\n
    \r\n {format(\r\n new Date(value),\r\n translate.translate(\"generics.dateTimeFormatFNS\") as string\r\n )}\r\n
    \r\n );\r\n }}\r\n
    \r\n );\r\n};\r\n\r\nexport const CellRenderer = {\r\n Volume,\r\n DateCell,\r\n};\r\n","import React, { useState, useEffect } from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport { bindActionCreators, Dispatch } from \"redux\";\r\nimport { Translate } from \"react-localize-redux\";\r\nimport { useParams } from \"react-router-dom\";\r\n\r\nimport { createStyles, Theme, makeStyles } from \"@material-ui/core/styles\";\r\nimport Typography from \"@material-ui/core/Typography\";\r\nimport { Box } from \"@material-ui/core\";\r\n\r\nimport \"@ag-grid-community/all-modules/dist/styles/ag-grid.css\";\r\nimport \"@ag-grid-community/all-modules/dist/styles/ag-theme-balham.css\";\r\n\r\nimport { AppState } from \"redux/store\";\r\nimport { State as PoolOverviewState } from \"redux/types/PoolOverview\";\r\n\r\nimport { customerInstance_customers_results_registeredPools } from \"types/apolloGenerated/customerInstance\";\r\nimport {\r\n setGridState,\r\n setColumnStates,\r\n} from \"redux/actions/PoolOverviewActions\";\r\n\r\nimport AgGrid from \"components/common/Grid/AgGrid\";\r\n\r\nimport {\r\n getColumnDefs,\r\n apolloConnectorById,\r\n CellRenderer,\r\n} from \"./PoolGridConfig\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) => {\r\n return createStyles({\r\n customerOverview: {\r\n display: \"flex\",\r\n flexFlow: \"column\",\r\n height: \"100%\",\r\n \"& > .gridFilterHeader\": {\r\n flex: \"0 1 auto\",\r\n },\r\n\r\n \"& > .innerContent\": {\r\n flex: \"1 1 auto\",\r\n margin: \"0 30px\",\r\n },\r\n },\r\n\r\n innerHeader: {\r\n flex: \"0 1 auto\",\r\n display: \"flex\",\r\n margin: \"0 -20px 20px -20px\",\r\n alignItems: \"flex-end\",\r\n justifyContent: \"space-between\",\r\n\r\n \"& > *\": {\r\n flex: \"0 1 auto\",\r\n margin: \"0 20px\",\r\n minWidth: \"170px\",\r\n },\r\n\r\n \"& > .filter\": {\r\n flex: \"1 1 auto\",\r\n maxWidth: \"250px\",\r\n },\r\n },\r\n\r\n innerHeaderRight: {\r\n flex: \"0 1 auto\",\r\n display: \"flex\",\r\n alignItems: \"flex-end\",\r\n margin: 0,\r\n\r\n \"& > *\": {\r\n flex: \"0 1 auto\",\r\n margin: \"0 20px\",\r\n minWidth: \"170px\",\r\n },\r\n },\r\n });\r\n});\r\n\r\ninterface RegisteredPoolsListProps {\r\n poolOverviewState: PoolOverviewState;\r\n actions: {\r\n setGridState: typeof setGridState;\r\n setColumnStates: typeof setColumnStates;\r\n };\r\n numberOfPools:\r\n | (customerInstance_customers_results_registeredPools | null)[]\r\n | null;\r\n}\r\n\r\nconst RegisteredPoolsList: React.FC = ({\r\n poolOverviewState,\r\n actions,\r\n numberOfPools,\r\n}) => {\r\n const classes = useStyles();\r\n\r\n const { customerId } = useParams();\r\n\r\n const id = customerId ? customerId : \"\";\r\n\r\n const [apolloConnector, setApolloConnector] = useState<\r\n ReturnType\r\n >(apolloConnectorById(id));\r\n\r\n useEffect(() => {\r\n setApolloConnector(apolloConnectorById(id));\r\n }, [id]);\r\n\r\n return (\r\n \r\n {({ translate }) => (\r\n \r\n
    \r\n \r\n \r\n \r\n
    \r\n\r\n \r\n {numberOfPools && numberOfPools.length > 0 ? (\r\n
    \r\n \r\n
    \r\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 = (appState: AppState) => ({\r\n poolOverviewState: appState.poolOverview,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch: Dispatch) => ({\r\n actions: bindActionCreators({ setGridState, setColumnStates }, dispatch),\r\n});\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(RegisteredPoolsList);\r\n","import React, { useState } from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport { bindActionCreators, Dispatch } from \"redux\";\r\nimport { useParams } from \"react-router\";\r\n\r\nimport { withLocalize, LocalizeContextProps } from \"react-localize-redux\";\r\n\r\nimport { createStyles, Theme, makeStyles } from \"@material-ui/core/styles\";\r\nimport { Box } from \"@material-ui/core\";\r\nimport CircularProgress from \"@material-ui/core/CircularProgress\";\r\n\r\nimport ShowAccountInfo from \"components/common/ShowAccountInfo\";\r\n\r\nimport EditCustomerDetails from \"./EditCustomerDetails\";\r\nimport RegisteredDevices from \"./RegisteredDevices\";\r\nimport ServiceContract from \"./ServiceContract\";\r\nimport RegisteredPools from \"./RegisteredPools\";\r\nimport PageHeader from \"components/common/PageHeader\";\r\n\r\nimport gql from \"graphql-tag\";\r\nimport { useMutation, useQuery } from \"@apollo/react-hooks\";\r\nimport { UserInformation } from \"types/ToolboxEntities\";\r\n\r\nimport {\r\n updateCustomerDetails as MutationData,\r\n updateCustomerDetailsVariables as MutationVars,\r\n} from \"types/apolloGenerated/updateCustomerDetails\";\r\n\r\nimport { QUERY_CUSTOMER_DETAIL } from \"commonQueries/customer\";\r\nimport { GET_USER_COUNTRIES_QUERY } from \"commonQueries/userCountryQuery\";\r\n\r\nimport { UserInformationUpdateInput } from \"types/apolloGenerated/globalTypes\";\r\nimport {\r\n customerInstance,\r\n customerInstance_customers_results,\r\n} from \"types/apolloGenerated/customerInstance\";\r\n\r\nimport { open as changeLoginOpen } from \"redux/actions/AccountShortcuts/ChangeLoginActions\";\r\nimport { open as changeActiveOpen } from \"redux/actions/AccountShortcuts/ChangeActiveActions\";\r\nimport { open as sendResetOpen } from \"redux/actions/AccountShortcuts/SendResetActions\";\r\nimport { open as deleteAccountOpen } from \"redux/actions/AccountShortcuts/DeleteAccountActions\";\r\n\r\nimport PageDialog from \"components/common/PageDialog\";\r\nimport PageHeaderMessage from \"components/common/PageHeaderMessage\";\r\nimport AuditLog from \"../InstanceDetails/AuditLog\";\r\nimport USER_ROLES from \"../../../commonQueries/userRole\";\r\nimport store from \"../../../redux/store\";\r\nimport * as Types from \"../../../types/ToolboxEntities\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) => {\r\n return createStyles({\r\n infoSeg: {\r\n color: \"#000000\",\r\n paddingLeft: \"30px\",\r\n //margin: \"20px 0\",\r\n marginTop: \"100px\",\r\n },\r\n });\r\n});\r\n\r\nconst MUTATION = gql`\r\n mutation updateCustomerDetails(\r\n $userInformation: UserInformationUpdateInput!\r\n ) {\r\n user {\r\n updateInformation(userInformation: $userInformation) {\r\n acceptedTerms\r\n accountLocked\r\n address {\r\n city\r\n countryCode\r\n postalCode\r\n street\r\n }\r\n allowedToLogin\r\n dataUpdate\r\n lastLogin\r\n email\r\n failedPasswordResetCount\r\n firstName\r\n id\r\n incorrectLogins\r\n key\r\n lastName\r\n registeredOn\r\n telephone\r\n verifiedAccount\r\n acceptedMarketingUsage\r\n isTestUser\r\n }\r\n }\r\n }\r\n`;\r\n\r\ninterface CustomerDetailsProps extends LocalizeContextProps {\r\n actions: {\r\n changeLoginOpen: typeof changeLoginOpen;\r\n changeActiveOpen: typeof changeActiveOpen;\r\n sendResetOpen: typeof sendResetOpen;\r\n deleteAccountOpen: typeof deleteAccountOpen;\r\n };\r\n queryData: customerInstance_customers_results;\r\n}\r\n\r\nconst CustomerDetailsView: React.FC = ({\r\n actions,\r\n queryData,\r\n translate,\r\n}) => {\r\n const classes = useStyles();\r\n\r\n const [open, setOpen] = React.useState(false);\r\n const [error, setError] = React.useState(\"\");\r\n\r\n const { data: roleData, loading: roleLoading, error: roleError } = useQuery(\r\n USER_ROLES\r\n );\r\n const roles: string[] = roleData?.user?.userInformation?.userRoles;\r\n let canViewLogs: boolean = false;\r\n\r\n store.getState().auth.user?.roles.forEach((item: Types.Role) => {\r\n if (item.roleName === \"AuditAdmin\") {\r\n canViewLogs = true;\r\n }\r\n });\r\n\r\n if (!roleLoading) {\r\n if (roles != null && roles.includes(\"rnd\")) {\r\n }\r\n }\r\n if (roleError) {\r\n canViewLogs = false;\r\n }\r\n\r\n const [updateCustomerDetails, { loading: updateLoading }] = useMutation<\r\n MutationData,\r\n MutationVars\r\n >(MUTATION, {\r\n // onCompleted: () => handleClickOpen(\"confirmation\"),\r\n onError: (error) => {\r\n let errorMessage = error.message;\r\n const message = \"updateInformation\";\r\n if (error.message.includes(message)) {\r\n const index = error.message.indexOf(message) + message.length;\r\n errorMessage = error.message.slice(0, index);\r\n }\r\n setError(errorMessage);\r\n setOpen(true);\r\n },\r\n refetchQueries: [\r\n {\r\n query: QUERY_CUSTOMER_DETAIL,\r\n variables: { id: queryData?.userInformation?.id },\r\n },\r\n ],\r\n });\r\n\r\n const userInformation = {\r\n id: queryData?.userInformation?.id ?? \"\",\r\n firstName: queryData?.userInformation?.firstName ?? \"\",\r\n lastName: queryData?.userInformation?.lastName ?? \"\",\r\n email: queryData?.userInformation?.email ?? \"\",\r\n telephone: queryData?.userInformation?.telephone ?? \"\",\r\n address: {\r\n street: queryData?.userInformation?.address?.street ?? \"\",\r\n postalCode: queryData?.userInformation?.address?.postalCode ?? \"\",\r\n countryCode: queryData?.userInformation?.address?.countryCode,\r\n city: queryData?.userInformation?.address?.city ?? \"\",\r\n },\r\n canUsePerlaUpdater: queryData?.userInformation?.canUsePerlaUpdater ?? false,\r\n acceptedMarketingUsage:\r\n queryData?.userInformation?.acceptedMarketingUsage ?? false,\r\n isTestUser: queryData?.userInformation?.isTestUser ?? false,\r\n };\r\n\r\n console.log(\"userinformation -> \", queryData);\r\n\r\n const account = {\r\n id: queryData?.userInformation?.id,\r\n email: queryData?.userInformation?.email,\r\n accountLocked: queryData?.userInformation?.accountLocked,\r\n allowedToLogin: queryData?.userInformation?.allowedToLogin,\r\n preferredLanguage: queryData?.userInformation?.preferredLanguage,\r\n lastLogin: queryData?.userInformation?.lastLogin,\r\n dataUpdate: queryData?.userInformation?.dataUpdate,\r\n verifiedAccount: queryData?.userInformation?.verifiedAccount,\r\n lastIncorrectLogin: queryData?.userInformation?.lastIncorrectLogin,\r\n registeredOn: queryData?.userInformation?.registeredOn,\r\n incorrectLogins: queryData?.userInformation?.incorrectLogins,\r\n acceptedTerms: queryData?.userInformation?.acceptedTerms,\r\n lastPasswordReset: queryData?.userInformation?.lastFailedPasswordReset,\r\n userRoles: queryData?.userInformation?.userRoles,\r\n acceptedMarketingUsage: queryData?.userInformation?.acceptedMarketingUsage,\r\n } as UserInformation;\r\n\r\n const [\r\n customerDetailsUpdateInput,\r\n setCustomerDetailsUpdateInput,\r\n ] = useState(userInformation);\r\n\r\n //const [checkBox,setCheckBox] = useState(userInformation.canUsePerlaUpdater)\r\n\r\n const fullName = userInformation?.firstName + \" \" + userInformation?.lastName;\r\n const { data, loading } = useQuery(GET_USER_COUNTRIES_QUERY);\r\n const countries: string[] = data?.user?.allowedCountries;\r\n let isDenmark = false;\r\n if (!loading) {\r\n if (countries.includes(\"DK\")) {\r\n isDenmark = true;\r\n }\r\n }\r\n\r\n const pageNav = [\r\n {\r\n title: translate(\r\n account.accountLocked\r\n ? \"types.common.activate\"\r\n : \"components.account.deactivate\"\r\n ) as string,\r\n on: () => {\r\n actions.changeActiveOpen(account);\r\n },\r\n },\r\n {\r\n title: translate(\"components.account.sendSetPasswordEmail\") as string,\r\n on: () => {\r\n actions.sendResetOpen(account);\r\n },\r\n },\r\n {\r\n title: translate(\"components.account.changePassword\") as string,\r\n on: () => {\r\n actions.changeLoginOpen(account);\r\n },\r\n },\r\n {\r\n title: translate(\"components.account.deleteAccount\") as string,\r\n on: () => {\r\n actions.deleteAccountOpen(account);\r\n },\r\n },\r\n ];\r\n\r\n const [validation, setValidation] = React.useState<\r\n { field: string; message: string }[]\r\n >([]);\r\n\r\n const validationCheck = () => {\r\n let validationArr: { field: string; message: string }[] = [];\r\n if (customerDetailsUpdateInput.email === \"\") {\r\n validationArr.push({\r\n field: \"email\",\r\n message: translate(\"message.error.noEmail\") as string,\r\n });\r\n }\r\n if (customerDetailsUpdateInput.firstName === \"\") {\r\n validationArr.push({\r\n field: \"firstName\",\r\n message: translate(\"message.error.noFirstName\") as string,\r\n });\r\n }\r\n if (customerDetailsUpdateInput.lastName === \"\") {\r\n validationArr.push({\r\n field: \"lastName\",\r\n message: translate(\"message.error.noLastName\") as string,\r\n });\r\n }\r\n setValidation(validationArr);\r\n if (validationArr.length !== 0) {\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n };\r\n\r\n\r\n return (\r\n \r\n {\r\n if (validationCheck()) {\r\n updateCustomerDetails({\r\n variables: { userInformation: customerDetailsUpdateInput },\r\n });\r\n }\r\n }}\r\n isSavePending={updateLoading}\r\n />\r\n \r\n setOpen(false) }]}\r\n error={error}\r\n />\r\n
    \r\n \r\n \r\n {isDenmark ? :
    }\r\n \r\n \r\n \r\n \r\n \r\n
    \r\n \r\n );\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch: Dispatch) => ({\r\n actions: bindActionCreators(\r\n { changeLoginOpen, changeActiveOpen, sendResetOpen, deleteAccountOpen },\r\n dispatch\r\n ),\r\n});\r\n\r\nconst ConnectedCustomerDetailsView = connect(\r\n null,\r\n mapDispatchToProps\r\n)(withLocalize(CustomerDetailsView));\r\n\r\nconst CustomerDetails: React.FC = () => {\r\n const { customerId } = useParams();\r\n\r\n const { data, loading, error } = useQuery(\r\n QUERY_CUSTOMER_DETAIL,\r\n {\r\n variables: { id: customerId },\r\n }\r\n );\r\n\r\n if (loading) return ;\r\n if (!data?.customers?.results?.[0]?.userInformation)\r\n return
    no data
    ;\r\n if (error) return
    something went wrong
    ;\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default CustomerDetails;\r\n","import React, { HTMLAttributes, useEffect } from \"react\";\r\nimport clsx from \"clsx\";\r\nimport Select from \"react-select\";\r\nimport {\r\n createStyles,\r\n emphasize,\r\n makeStyles,\r\n Theme,\r\n} from \"@material-ui/core/styles\";\r\nimport TextField, { BaseTextFieldProps } from \"@material-ui/core/TextField\";\r\nimport Chip from \"@material-ui/core/Chip\";\r\nimport MenuItem from \"@material-ui/core/MenuItem\";\r\nimport CancelIcon from \"@material-ui/icons/Cancel\";\r\nimport { ValueContainerProps } from \"react-select/src/components/containers\";\r\nimport { ControlProps } from \"react-select/src/components/Control\";\r\nimport { MultiValueProps } from \"react-select/src/components/MultiValue\";\r\nimport { OptionProps } from \"react-select/src/components/Option\";\r\nimport { ValueType } from \"react-select/src/types\";\r\n\r\nimport {\r\n Translate,\r\n withLocalize,\r\n TranslateFunction,\r\n LocalizeContextProps,\r\n} from \"react-localize-redux\";\r\n\r\nimport { Error } from \"types/CampGuideTypes\";\r\nimport { FormControl, FormHelperText } from \"@material-ui/core\";\r\nimport { TranslateError } from \"./Error\";\r\n\r\ninterface OptionType {\r\n label: string;\r\n value: string;\r\n}\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n root: {\r\n flexGrow: 1,\r\n height: 100,\r\n minWidth: 290,\r\n width: \"100%\",\r\n \"&$error\": {\r\n color: \"white\",\r\n },\r\n },\r\n error: {},\r\n input: {\r\n display: \"flex\",\r\n padding: 0,\r\n height: \"auto\",\r\n },\r\n valueContainer: {\r\n display: \"flex\",\r\n flexWrap: \"wrap\",\r\n flex: 1,\r\n alignItems: \"center\",\r\n overflow: \"hidden\",\r\n },\r\n chip: {\r\n margin: theme.spacing(0.5, 0.25),\r\n },\r\n chipFocused: {\r\n backgroundColor: emphasize(\r\n theme.palette.type === \"light\"\r\n ? theme.palette.grey[300]\r\n : theme.palette.grey[700],\r\n 0.08\r\n ),\r\n },\r\n })\r\n);\r\n\r\ntype InputComponentProps = Pick &\r\n HTMLAttributes;\r\n\r\nfunction inputComponent({ inputRef, ...props }: InputComponentProps) {\r\n return
    ;\r\n}\r\n\r\nfunction Control(props: ControlProps) {\r\n const {\r\n children,\r\n innerProps,\r\n innerRef,\r\n selectProps: { classes, TextFieldProps },\r\n } = props;\r\n\r\n return (\r\n \r\n );\r\n}\r\n\r\nfunction Option(props: OptionProps) {\r\n return (\r\n \r\n {props.children}\r\n \r\n );\r\n}\r\n\r\nfunction ValueContainer(props: ValueContainerProps) {\r\n return (\r\n
    \r\n {props.children}\r\n
    \r\n );\r\n}\r\n\r\nfunction MultiValue(props: MultiValueProps) {\r\n return (\r\n }\r\n />\r\n );\r\n}\r\n\r\nconst components = {\r\n Control,\r\n MultiValue,\r\n Option,\r\n ValueContainer,\r\n};\r\n\r\nconst mapStringArrToOptTypeArr = (\r\n countryCodes: string[],\r\n translate: TranslateFunction,\r\n trConfig: TranslateConfig | undefined\r\n): OptionType[] => {\r\n return countryCodes.map((countryCode: string) => {\r\n return {\r\n value: countryCode,\r\n label: trConfig\r\n ? (translate(trConfig.prefix + countryCode) as string)\r\n : countryCode,\r\n };\r\n });\r\n};\r\n\r\nconst mapOptTypeToStringArr = (value: ValueType): string[] => {\r\n if (value) {\r\n if (Array.isArray(value)) {\r\n const StrArr = value.map((item: OptionType) => {\r\n return item.value;\r\n });\r\n return StrArr;\r\n }\r\n }\r\n return [];\r\n};\r\n\r\ninterface TranslateConfig {\r\n prefix: string | undefined;\r\n}\r\n\r\ninterface MultiSelectInterface extends LocalizeContextProps {\r\n headline: string;\r\n selectable: string[];\r\n selected: string[];\r\n onChange: (selected: string[]) => void;\r\n disabled?: boolean;\r\n error?: Error | null;\r\n translate: TranslateFunction;\r\n translateConfig?: TranslateConfig;\r\n}\r\n\r\nconst MultiSelect: React.FC = (\r\n {\r\n headline,\r\n selectable,\r\n selected,\r\n onChange,\r\n error,\r\n disabled = false,\r\n translate,\r\n translateConfig,\r\n },\r\n props\r\n) => {\r\n const classes = useStyles();\r\n\r\n useEffect(() => {\r\n onChange(selected);\r\n }, [onChange, selected]);\r\n\r\n const selectableOpt: OptionType[] = mapStringArrToOptTypeArr(\r\n selectable,\r\n translate,\r\n translateConfig\r\n );\r\n selectableOpt.sort((a, b) => (a.label > b.label ? 1 : -1));\r\n\r\n var enabledselectableLowercase = [];\r\n for (var i = 0; i < selected.length; i++) {\r\n if (selected[i].length === 2) {\r\n selected[i] = selected[i].toLowerCase();\r\n }\r\n enabledselectableLowercase.push(selected[i]);\r\n }\r\n\r\n enabledselectableLowercase.sort((a, b) => (a > b ? 1 : -1));\r\n const selectedOpt: OptionType[] = mapStringArrToOptTypeArr(\r\n enabledselectableLowercase,\r\n translate,\r\n translateConfig\r\n );\r\n const setSelectedVals = (\r\n enabledselectableLowercase: ValueType\r\n ) => {\r\n //console.log(\"setSelectedVals: \", setSelectedVals);\r\n onChange(mapOptTypeToStringArr(enabledselectableLowercase));\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default withLocalize(MultiSelect);\r\n","import React from 'react';\r\nimport ChipInput from 'material-ui-chip-input'\r\n\r\nimport { createStyles, makeStyles, Theme } from '@material-ui/core/styles';\r\n\r\nimport { Translate, withLocalize, LocalizeContextProps } from \"react-localize-redux\";\r\n\r\nimport { Error } from 'types/CampGuideTypes';\r\n\r\nimport { FormHelperText } from '@material-ui/core';\r\nimport { TranslateError } from './Error';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n root: {\r\n minWidth: 290,\r\n width: '100%'\r\n }\r\n }),\r\n);\r\n\r\ninterface InputToChipInterface extends LocalizeContextProps {\r\n employeeRoles: string[]\r\n onChange: (selected: string[]) => void\r\n disabled?: boolean\r\n error?: Error | null\r\n}\r\n\r\nconst InputToChip: React.FC = ({ employeeRoles, onChange, error, disabled = false }, props) => {\r\n const classes = useStyles();\r\n\r\n const handleAddChip = (chip: any) => {\r\n var newEmpl = [...employeeRoles];\r\n newEmpl.push(chip);\r\n onChange(newEmpl);\r\n };\r\n\r\n const handleDeleteChip = (chip: any, index: number) => {\r\n var newEmpl = employeeRoles.filter((item) => {\r\n return item !== chip;\r\n })\r\n onChange(newEmpl);\r\n };\r\n\r\n return (\r\n \r\n {({ translate }) => (\r\n
    \r\n \r\n {error ? : null}\r\n
    \r\n )}\r\n
    \r\n );\r\n}\r\n\r\n//export default InputToChip;\r\nexport default withLocalize(InputToChip);\r\n","import { ThunkAction, ThunkDispatch } from 'redux-thunk';\r\n\r\nimport { Action, ActionType, PendingAction, SetCountryAction, ErrorAction } from 'redux/types/MultiSelect';\r\nimport GraphQL from 'util/GraphQL';\r\n\r\nimport { Error } from 'types/CampGuideTypes';\r\n\r\nexport const setCountries = (countries: string[]): SetCountryAction => ({\r\n type: ActionType.CODES,\r\n payload: countries\r\n});\r\n\r\n\r\nexport const pending = (): PendingAction => ({\r\n type: ActionType.PENDING\r\n});\r\n\r\n\r\nexport const error = (error: Error): ErrorAction => ({\r\n type: ActionType.ERROR,\r\n payload: error\r\n});\r\n\r\nexport const load = (): ThunkAction, {}, {}, Action> => {\r\n return async (dispatch: ThunkDispatch<{}, {}, Action>): Promise => {\r\n\r\n dispatch(pending());\r\n\r\n GraphQL.avaiableCountries.load().then((countries: string[]) => {\r\n dispatch(setCountries(countries));\r\n }).catch((errorData: any) => {\r\n dispatch(error(errorData));\r\n });\r\n };\r\n};\r\n\r\nexport const save = (countries: string[]): ThunkAction, {}, {}, Action> => {\r\n return async (dispatch: ThunkDispatch<{}, {}, Action>): Promise => {\r\n\r\n dispatch(pending());\r\n\r\n GraphQL.avaiableCountries.save(countries).then((data: any) => {\r\n dispatch(setCountries(countries));\r\n }).catch((errorData: any) => {\r\n dispatch(error(errorData));\r\n });\r\n };\r\n};\r\n","import { ThunkAction, ThunkDispatch } from 'redux-thunk';\r\n\r\nimport { Action, ActionType, PendingAction, SetChipsAction, ErrorAction } from 'redux/types/InputToChip';\r\nimport GraphQL from 'util/GraphQL';\r\n\r\nimport { Error } from 'types/CampGuideTypes';\r\n\r\nexport const setChips = (chips: string[]): SetChipsAction => ({\r\n type: ActionType.CHIPS,\r\n payload: chips\r\n});\r\n\r\nexport const pendingChips = (): PendingAction => ({\r\n type: ActionType.PENDING\r\n});\r\n\r\n\r\nexport const errorChips = (error: Error): ErrorAction => ({\r\n type: ActionType.ERROR,\r\n payload: error\r\n});\r\n\r\nexport const loadChips = (): ThunkAction, {}, {}, Action> => {\r\n return async (dispatch: ThunkDispatch<{}, {}, Action>): Promise => {\r\n\r\n dispatch(pendingChips());\r\n\r\n GraphQL.avaiableEmployeeRoles.load().then((chips: string[]) => {\r\n dispatch(setChips(chips));\r\n }).catch((errorData: any) => {\r\n dispatch(errorChips(errorData));\r\n });\r\n };\r\n};\r\n\r\nexport const saveChips = (chips: string[]): ThunkAction, {}, {}, Action> => {\r\n return async (dispatch: ThunkDispatch<{}, {}, Action>): Promise => {\r\n dispatch(pendingChips());\r\n\r\n GraphQL.avaiableEmployeeRoles.save(chips).then((data: any) => {\r\n dispatch(setChips(chips));\r\n }).catch((errorData: any) => {\r\n dispatch(errorChips(errorData));\r\n });\r\n };\r\n};\r\n","import React, { Fragment, useEffect } from 'react';\r\nimport { bindActionCreators, Dispatch } from 'redux';\r\nimport { connect } from 'react-redux';\r\n\r\nimport { createStyles, Theme, makeStyles } from '@material-ui/core/styles';\r\nimport { Button } from '@material-ui/core';\r\n\r\nimport { open as changeLoginOpen } from 'redux/actions/AccountShortcuts/ChangeLoginActions';\r\nimport { open as changeActiveOpen } from 'redux/actions/AccountShortcuts/ChangeActiveActions';\r\nimport { open as sendResetOpen } from 'redux/actions/AccountShortcuts/SendResetActions';\r\n\r\nimport { UserInformation } from 'types/ToolboxEntities';\r\nimport ShowAccountInfo from 'components/common/ShowAccountInfo';\r\nimport { AuthStore } from 'redux/types/Auth';\r\nimport { AppState } from 'redux/store';\r\n\r\nimport CountrySelect from 'components/common/CountrySelect';\r\nimport InputToChip from 'components/common/InputToChip';\r\nimport PageHeader from 'components/common/PageHeader';\r\n\r\nimport allCountryCodes from 'resources/country_codes.json';\r\n\r\nimport { MultiSelectStore } from 'redux/types/MultiSelect';\r\nimport { InputToChipStore } from 'redux/types/InputToChip';\r\n\r\nimport { load, pending, save, setCountries, error } from 'redux/actions/MultiSelect';\r\nimport { loadChips, pendingChips, saveChips, setChips, errorChips } from 'redux/actions/InputToChip';\r\n\r\nimport Error from 'components/common/Error';\r\nimport { ErrorCodes } from 'types/CampGuideTypes';\r\nimport { Error as BwtError } from 'types/CampGuideTypes';\r\nimport { useQuery } from '@apollo/react-hooks';\r\nimport USER_LANGUAGE from 'commonQueries/userLanguage';\r\n\r\n\r\nconst useStyles = makeStyles((theme: Theme) => {\r\n return createStyles({\r\n content: {\r\n padding: theme.spacing(3),\r\n },\r\n })\r\n});\r\n\r\n\r\n\r\ninterface IGetUserInfo {\r\n auth: AuthStore\r\n}\r\n\r\nexport const GetUserInfo: React.FC = ({ auth }) => {\r\n const { data } = useQuery(USER_LANGUAGE);\r\n const lang = data?.user?.userInformation?.preferredLanguage;\r\n return (\r\n auth && auth.user ?\r\n \r\n :
    Error
    \r\n );\r\n};\r\n\r\n\r\ninterface ChangeLoginTrigger { actions: { changeLoginOpen: typeof changeLoginOpen } };\r\n\r\nconst ChangeLoginButton = connect(\r\n null,\r\n (dispatch: Dispatch) => ({ actions: bindActionCreators({ changeLoginOpen }, dispatch) })\r\n)(\r\n ({ actions }: ChangeLoginTrigger) => (\r\n \r\n )\r\n);\r\n\r\n\r\ninterface ChangeActiveTrigger { actions: { changeActiveOpen: typeof changeActiveOpen } };\r\n\r\nconst ChangeActiveButton = connect(\r\n null,\r\n (dispatch: Dispatch) => ({ actions: bindActionCreators({ changeActiveOpen }, dispatch) })\r\n)(\r\n ({ actions }: ChangeActiveTrigger) => (\r\n \r\n )\r\n);\r\n\r\n\r\ninterface SendResetTrigger { actions: { sendResetOpen: typeof sendResetOpen } };\r\n\r\nconst SendResetButton = connect(\r\n null,\r\n (dispatch: Dispatch) => ({ actions: bindActionCreators({ sendResetOpen }, dispatch) })\r\n)(\r\n ({ actions }: SendResetTrigger) => (\r\n \r\n )\r\n);\r\n\r\ninterface AdminSettingsProps {\r\n csStore: MultiSelectStore\r\n csActions: {\r\n load: typeof load,\r\n pending: typeof pending,\r\n save: typeof save,\r\n error: typeof error,\r\n setCountries: typeof setCountries\r\n }\r\n iTcStore: InputToChipStore\r\n iTcActions: {\r\n loadChips: typeof loadChips,\r\n pendingChips: typeof pendingChips,\r\n saveChips: typeof saveChips,\r\n errorChips: typeof errorChips,\r\n setChips: typeof setChips\r\n }\r\n}\r\n\r\nconst Admin: React.FC = ({ csStore, csActions, iTcStore, iTcActions }, props) => {\r\n\r\n const [countries, setCountries] = React.useState(csStore.countryCodes);\r\n const [countriesError, setCountriesError] = React.useState(null);\r\n\r\n const [employeeRoles, setEmployeeRoles] = React.useState(iTcStore.chips);\r\n const [employeeError, setEmployeeError] = React.useState(null);\r\n\r\n\r\n const saveFunction = () => {\r\n let errorCounter = 0;\r\n\r\n // Countries\r\n if (countries.length === 0) {\r\n errorCounter++;\r\n setCountriesError({ code: ErrorCodes.gql_property_required, message: 'test' });\r\n }\r\n\r\n // Employee Roles\r\n if (employeeRoles.length === 0) {\r\n errorCounter++;\r\n setEmployeeError({ code: ErrorCodes.gql_property_required, message: 'test' });\r\n }\r\n\r\n if (errorCounter === 0) {\r\n csActions.save(countries);\r\n setCountriesError(null);\r\n\r\n iTcActions.saveChips(employeeRoles);\r\n setEmployeeError(null);\r\n }\r\n\r\n };\r\n\r\n useEffect(() => {\r\n if (!csStore.pending) {\r\n if (!csStore.isLoaded) {\r\n csActions.load();\r\n } else {\r\n setCountries(csStore.countryCodes);\r\n }\r\n }\r\n }, [csStore, csActions]);\r\n\r\n\r\n useEffect(() => {\r\n if (!iTcStore.pending) {\r\n if (!iTcStore.isLoaded) {\r\n iTcActions.loadChips();\r\n } else {\r\n setEmployeeRoles(iTcStore.chips);\r\n }\r\n }\r\n }, [iTcStore, iTcActions]);\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\nconst mapStateToProps = (state: AppState) => ({\r\n csStore: state.multiSelect,\r\n auth: state.auth,\r\n iTcStore: state.inputToChip\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch: Dispatch) => ({\r\n csActions: bindActionCreators({ load, pending, save, setCountries, error }, dispatch),\r\n iTcActions: bindActionCreators({ loadChips, pendingChips, saveChips, setChips, errorChips }, dispatch)\r\n});\r\n\r\n\r\nconst ReduxUserInfo = connect(\r\n mapStateToProps\r\n)(GetUserInfo);\r\n\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(Admin);\r\n\r\n\r\n","import React, { Fragment, useEffect } from 'react';\r\nimport { bindActionCreators, Dispatch } from 'redux';\r\nimport { connect } from 'react-redux';\r\n\r\nimport { createStyles, Theme, makeStyles } from '@material-ui/core/styles';\r\n\r\nimport ShowAccountInfo from 'components/common/ShowAccountInfo';\r\nimport { AuthStore } from 'redux/types/Auth';\r\nimport { AppState } from 'redux/store';\r\n\r\nimport CountrySelect from 'components/common/CountrySelect';\r\nimport InputToChip from 'components/common/InputToChip';\r\nimport PageHeader from 'components/common/PageHeader';\r\n\r\nimport allCountryCodes from 'resources/country_codes.json';\r\n\r\nimport { MultiSelectStore } from 'redux/types/MultiSelect';\r\nimport { InputToChipStore } from 'redux/types/InputToChip';\r\n\r\nimport { load, pending, save, setCountries, error } from 'redux/actions/MultiSelect';\r\nimport { loadChips, pendingChips, saveChips, setChips, errorChips } from 'redux/actions/InputToChip';\r\n\r\nimport Error from 'components/common/Error';\r\nimport { ErrorCodes } from 'types/CampGuideTypes';\r\nimport { Error as BwtError } from 'types/CampGuideTypes';\r\n\r\n\r\nconst useStyles = makeStyles((theme: Theme) => {\r\n return createStyles({\r\n content: {\r\n padding: theme.spacing(3),\r\n },\r\n })\r\n});\r\n\r\n\r\n\r\ninterface IGetUserInfo {\r\n auth: AuthStore\r\n}\r\n\r\nexport const GetUserInfo: React.FC = ({ auth }) => {\r\n return (\r\n auth && auth.user ?\r\n \r\n :
    Error
    \r\n );\r\n};\r\n\r\n\r\ninterface AdminSettingsProps {\r\n csStore: MultiSelectStore\r\n csActions: {\r\n load: typeof load,\r\n pending: typeof pending,\r\n save: typeof save,\r\n error: typeof error,\r\n setCountries: typeof setCountries\r\n }\r\n iTcStore: InputToChipStore\r\n iTcActions: {\r\n loadChips: typeof loadChips,\r\n pendingChips: typeof pendingChips,\r\n saveChips: typeof saveChips,\r\n errorChips: typeof errorChips,\r\n setChips: typeof setChips\r\n }\r\n}\r\n\r\nconst Admin: React.FC = ({ csStore, csActions, iTcStore, iTcActions }, props) => {\r\n\r\n const [countries, setCountries] = React.useState(csStore.countryCodes);\r\n const [countriesError, setCountriesError] = React.useState(null);\r\n\r\n const [employeeRoles, setEmployeeRoles] = React.useState(iTcStore.chips);\r\n const [employeeError, setEmployeeError] = React.useState(null);\r\n\r\n\r\n const saveFunction = () => {\r\n let errorCounter = 0;\r\n\r\n // Countries\r\n if (countries.length === 0) {\r\n errorCounter++;\r\n setCountriesError({ code: ErrorCodes.gql_property_required, message: 'test' });\r\n }\r\n\r\n // Employee Roles\r\n if (employeeRoles.length === 0) {\r\n errorCounter++;\r\n setEmployeeError({ code: ErrorCodes.gql_property_required, message: 'test' });\r\n }\r\n\r\n if (errorCounter === 0) {\r\n csActions.save(countries);\r\n setCountriesError(null);\r\n\r\n iTcActions.saveChips(employeeRoles);\r\n setEmployeeError(null);\r\n }\r\n\r\n };\r\n\r\n useEffect(() => {\r\n if (!csStore.pending) {\r\n if (!csStore.isLoaded) {\r\n csActions.load();\r\n } else {\r\n setCountries(csStore.countryCodes);\r\n }\r\n }\r\n }, [csStore, csActions]);\r\n\r\n\r\n useEffect(() => {\r\n if (!iTcStore.pending) {\r\n if (!iTcStore.isLoaded) {\r\n iTcActions.loadChips();\r\n } else {\r\n setEmployeeRoles(iTcStore.chips);\r\n }\r\n }\r\n }, [iTcStore, iTcActions]);\r\n\r\n //const languages = [\"EN\", \"DE\", \"CS\", \"DA\", \"ES\", \"FI\", \"FR\", \"HU\", \"IT\", \"NL\", \"NO\", \"PL\", \"RU\", \"SE\", \"UA\"];\r\n //const countries = [\"EN\", \"DE-AT\", \"DE-CH\", \"DE-DE\", \"CS-CZ\", \"DA-DK\", \"EN-GB\", \"ES-ES\", \"FI-FI\", \"FR-BE\", \"FR-FR\", \"HU-HU\", \"IT-IT\", \"NL-BE\", \"NL-NL\", \"NO-NO\", \"PL-PL\", \"RU-RU\", \"SE-SE\", \"UK-UA\"];\r\n //const subUsers = [\"EN\", \"DE-AT\", \"DE-CH\", \"DE-DE\", \"CS-CZ\", \"DA-DK\", \"EN-GB\", \"ES-ES\", \"FI-FI\", \"FR-BE\", \"FR-FR\", \"HU-HU\", \"IT-IT\", \"NL-BE\", \"NL-NL\", \"NO-NO\", \"PL-PL\", \"RU-RU\", \"SE-SE\", \"UK-UA\"];\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\nconst mapStateToProps = (state: AppState) => ({\r\n csStore: state.multiSelect,\r\n auth: state.auth,\r\n iTcStore: state.inputToChip\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch: Dispatch) => ({\r\n csActions: bindActionCreators({ load, pending, save, setCountries, error }, dispatch),\r\n iTcActions: bindActionCreators({ loadChips, pendingChips, saveChips, setChips, errorChips }, dispatch)\r\n});\r\n\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(Admin);\r\n\r\n\r\n","import { ActionType, SearchAction } from 'redux/types/PromotionOverview';\r\n\r\nimport AgGridActionHelper from 'redux/actions/AgGridActionHelper';\r\n\r\n\r\nexport const { setGridState, setColumnStates } = AgGridActionHelper(ActionType.GRID);\r\n\r\nexport const search = (searchTerm: string | null): SearchAction => ({\r\n type: ActionType.SEARCH,\r\n payload: searchTerm\r\n});\r\n","import React from \"react\";\r\n\r\nimport { connect } from \"react-redux\";\r\nimport { bindActionCreators, Dispatch } from \"redux\";\r\n\r\nimport { withLocalize,TranslateFunction,Translate, LocalizeContextProps, } from \"react-localize-redux\";\r\nimport { Link } from 'react-router-dom';\r\n\r\nimport { CircularProgress, makeStyles, createStyles, Theme } from \"@material-ui/core\";\r\n\r\nimport { useQuery } from \"react-apollo\";\r\nimport gql from \"graphql-tag\";\r\nimport {promo, promo_promotions_results} from \"types/apolloGenerated/promo\";\r\n\r\nimport { ColDef } from '@ag-grid-enterprise/all-modules';\r\nimport '@ag-grid-community/all-modules/dist/styles/ag-grid.css';\r\nimport '@ag-grid-community/all-modules/dist/styles/ag-theme-balham.css';\r\n\r\n\r\nimport { ReduxAgGrid } from \"components/common/Grid/AgGrid\";\r\nimport { AppState } from \"redux/store\";\r\nimport { State as PromoGridState } from \"redux/types/PromotionOverview\";\r\nimport { setGridState, setColumnStates, } from \"redux/actions/PromotionOverviewActions\";\r\n// import { promotionInformation } from \"pages/Promotion/PromotionInformation\";\r\n\r\n\r\n\r\nexport const PROMOTION_GRID = gql`\r\nquery promo {\r\n promotions(pageSize: 0){\r\n results{\r\n id\r\n assignedProducts {\r\n id\r\n name\r\n }\r\n articleNumber\r\n availableCount\r\n overallCount\r\n name\r\n }\r\n }\r\n}\r\n`;\r\n\r\nconst useStyles = makeStyles((theme: Theme) => {\r\n return createStyles({\r\n promoGrid: {\r\n position: \"relative\",\r\n height: \"100%\",\r\n display: 'flex',\r\n flexFlow: 'column',\r\n overflow: 'hidden',\r\n\r\n '& > *': {\r\n flex: '1 1 auto',\r\n },\r\n '& a': {\r\n color: '#005D8F'\r\n },\r\n '& > .grie-error': {\r\n flex: '0 1 auto',\r\n },\r\n '& .ag-paging-panel.ag-hidden': {\r\n display: 'block !important',\r\n opacity: 0,\r\n pointerEvents: 'none',\r\n },\r\n '& .ag-cell.number-cell': {\r\n textAlign: 'right',\r\n paddingRight: '40px',\r\n },\r\n },\r\n });\r\n});\r\n\r\n\r\n\r\nexport const getColumnDefs = (translate: TranslateFunction): ColDef[] => {\r\n const columnDefs = [\r\n {\r\n headerName: translate(\"types.common.name\") as string,\r\n field: \"name\",\r\n cellRenderer: \"ProductLink\",\r\n width: 200,\r\n },\r\n {\r\n headerName: translate('components.showAccountInfo.status') as string,\r\n field: \"assignedProducts\",\r\n cellRenderer: \"Count\",\r\n width: 150,\r\n },\r\n // {\r\n // headerName: translate('types.organization.partnerType') as string,\r\n // field: \"type\",\r\n // width: 300,\r\n // },\r\n {\r\n headerName: \"Products\",\r\n width: 300,\r\n cellRenderer: \"ProductCount\"\r\n }\r\n ];\r\n return columnDefs;\r\n};\r\n\r\ninterface CellRenderer {\r\n value: string,\r\n data: promo_promotions_results\r\n}\r\n\r\nconst ProductLink: React.FC = ({ data, value }) => {\r\n if (!(data && data.id)) {\r\n return
    ;\r\n }\r\n return (\r\n {value}\r\n );\r\n};\r\n\r\nconst Count: React.FC =({ data, value }) => {\r\n const color = (data?.availableCount && data.availableCount < 100) || (data.availableCount === 0) ? \"#c95d55\" : \"#74b567\"\r\n return (\r\n
    \r\n
    {data.availableCount + \" / \" + data.overallCount}
    \r\n
    \r\n \r\n ) \r\n};\r\n\r\nconst ProductCount: React.FC =({ data, value }) => {\r\n const productLength = data?.assignedProducts?.length ?? 0\r\n const firstProduct = (data.assignedProducts && data?.assignedProducts[0] && data?.assignedProducts[0]?.name) ?? \"\"\r\n return (\r\n
    \r\n
    {productLength > 1 ? firstProduct + \" and \" + (productLength - 1) + \" more \" : firstProduct }
    \r\n
    \r\n \r\n ) \r\n};\r\n\r\nexport const CellRenderer = { \r\n Count,\r\n ProductLink,\r\n ProductCount\r\n};\r\n\r\ninterface PromoGridPara extends LocalizeContextProps {\r\n translate: TranslateFunction\r\n gridState: PromoGridState\r\n search: string\r\n actions: {\r\n setGridState: typeof setGridState\r\n setColumnStates: typeof setColumnStates\r\n };\r\n}\r\n\r\nconst PromoGrid: React.FC = ({translate,search,gridState,actions}) => {\r\n\r\n const classes = useStyles();\r\n\r\n const {data, loading} = useQuery(PROMOTION_GRID, {\r\n errorPolicy: 'ignore'\r\n });\r\n const gridData = data && data?.promotions?.results ? data?.promotions?.results : [];\r\n\r\n if (loading) {\r\n return \r\n } else if (data) {\r\n return (\r\n \r\n );\r\n } \r\n \r\n return ;\r\n};\r\n\r\nconst mapStateToProps = (appState: AppState) => ({\r\n user: appState.auth.user,\r\n gridState: appState.promotionOverview\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch: Dispatch) => ({\r\n actions: bindActionCreators(\r\n { setGridState, setColumnStates },\r\n dispatch\r\n )\r\n});\r\n\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(withLocalize(PromoGrid));\r\n","import React, { Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { bindActionCreators, Dispatch } from 'redux';\r\n\r\n\r\nimport { TextField } from '@material-ui/core';\r\nimport { createStyles, Theme, makeStyles } from '@material-ui/core/styles';\r\n\r\n\r\nimport '@ag-grid-community/all-modules/dist/styles/ag-grid.css';\r\nimport '@ag-grid-community/all-modules/dist/styles/ag-theme-balham.css';\r\nimport PageHeader from \"components/common/PageHeader\";\r\n\r\nimport GridFilterHeader from \"components/common/Grid/GridFilterHeader\";\r\n\r\nimport { AppState } from 'redux/store';\r\nimport { State as PromotionOverviewState } from 'redux/types/PromotionOverview';\r\nimport { setGridState, setColumnStates, search } from 'redux/actions/PromotionOverviewActions';\r\n\r\nimport PromoGrid from './GridConfig'\r\n\r\n\r\nimport * as Types from 'types/ToolboxEntities';\r\nimport { Translate } from 'react-localize-redux';\r\n\r\n\r\nconst useStyles = makeStyles((theme: Theme) => {\r\n return createStyles({\r\n innerContent: {\r\n display: \"flex\",\r\n flexFlow: \"column\",\r\n\r\n \"& > .gridFilterHeader\": {\r\n flex: \"0 1 auto\",\r\n margin: \"0\",\r\n },\r\n\r\n \"& > .innerContent\": {\r\n flex: \"1 1 auto\",\r\n height: \"100%\",\r\n },\r\n },\r\n loadingSpinner: {\r\n minWidth: \"220px\", \r\n display: \"flex\", \r\n justifyContent: \"center\", \r\n marginTop: \"10px\"\r\n },\r\n })\r\n});\r\n\r\n\r\ninterface PromotionListPara {\r\n user: Types.UserProfile | null\r\n promotionOverviewState: PromotionOverviewState\r\n actions: {\r\n setGridState: typeof setGridState\r\n setColumnStates: typeof setColumnStates\r\n search: typeof search\r\n }\r\n}\r\n\r\n\r\nconst Promotion: React.FC = ({ user, promotionOverviewState, actions }) => {\r\n const classes = useStyles();\r\n\r\n const [search, setSearch] = React.useState(\"\");\r\n const changeSearch = (event: React.ChangeEvent) => {\r\n setSearch(event.target.value);\r\n };\r\n\r\n \r\n\r\n\r\n return (\r\n {({ translate }) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\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 = (appState: AppState) => ({\r\n user: appState.auth.user,\r\n promotionOverviewState: appState.promotionOverview\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch: Dispatch) => ({\r\n actions: bindActionCreators({ setGridState, setColumnStates, search }, dispatch)\r\n});\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(Promotion);\r\n","import { ActionType, SearchAction } from 'redux/types/PromotionDetails';\r\n\r\nimport AgGridActionHelper from 'redux/actions/AgGridActionHelper';\r\n\r\n\r\nexport const { setGridState, setColumnStates } = AgGridActionHelper(ActionType.GRID);\r\n\r\nexport const search = (searchTerm: string | null): SearchAction => ({\r\n type: ActionType.SEARCH,\r\n payload: searchTerm\r\n});\r\n","import React from \"react\";\r\nimport { TextField, createStyles, Theme, Box } from \"@material-ui/core\";\r\nimport { makeStyles } from \"@material-ui/core\";\r\nimport { promotionDetail_promotion as PromotionDetail } from \"types/apolloGenerated/promotionDetail\";\r\nimport { countryCodes_countryCodes_results } from \"types/apolloGenerated/countryCodes\"\r\nimport { Translate } from \"react-localize-redux\";\r\n\r\nimport { PromotionType } from \"types/apolloGenerated/globalTypes\"\r\nimport Autocomplete from '@material-ui/lab/Autocomplete';\r\nimport { FieldError } from \"./PromotionInformationModels\"\r\n\r\nimport { products_products_results } from \"types/apolloGenerated/products\"\r\n\r\nconst useStyles = makeStyles((theme: Theme) => {\r\n return createStyles({\r\n innerContainer: {\r\n display: \"flex\",\r\n justifyContent: \"space-between\",\r\n marginBottom: \"15px\"\r\n },\r\n textFields: {\r\n width: \"46%\",\r\n },\r\n });\r\n});\r\n\r\n\r\ninterface promotionData {\r\n promotionDetails: PromotionDetail\r\n change: React.Dispatch>\r\n products: products_products_results[],\r\n availableCountryCodes: countryCodes_countryCodes_results[],\r\n errorHandler: FieldError[]\r\n}\r\n\r\nconst PromotionInformation: React.FC = ({\r\n promotionDetails,\r\n change,\r\n products,\r\n availableCountryCodes,\r\n errorHandler\r\n}) => {\r\n\r\n let classes = useStyles();\r\n\r\n const filteredProductsArray = products.filter((obj) => {\r\n return !obj.productInformation?.isArchived && obj.productInformation?.isProductRegistrationEnabled;\r\n });\r\n\r\n const productArray = filteredProductsArray.map(value => value.productInformation?.name ? value.productInformation.name : \"\").sort();\r\n\r\n let promotionType = []\r\n for (const type in PromotionType) {\r\n promotionType.push(type)\r\n }\r\n\r\n const {\r\n name,\r\n articleNumber,\r\n creationDate,\r\n creationUser,\r\n assignedProducts,\r\n usageCountLimit,\r\n countryCodes\r\n } = promotionDetails || {};\r\n\r\n const errorFields = errorHandler.map(value => value.field);\r\n const assignedProductArray = assignedProducts ? assignedProducts?.map(value => value?.name ? value.name : \"\") : []\r\n const selectedCountryCodeIds = countryCodes?.map(countryCode => countryCode!.id) ?? [];\r\n const assignedCountryCodes = availableCountryCodes.filter(countryCode => selectedCountryCodeIds.indexOf(countryCode.id) > -1 );\r\n\r\n var dateString = \"\" + creationDate;\r\n var slicedDate = dateString.slice(0, 10);\r\n\r\n return (\r\n \r\n \r\n }\r\n variant=\"standard\"\r\n name=\"name\"\r\n onChange={evt => {\r\n change({ ...promotionDetails, name: evt.target.value });\r\n }}\r\n />\r\n \r\n }\r\n variant=\"standard\"\r\n name=\"promotionId\"\r\n onChange={evt => {\r\n change({ ...promotionDetails, articleNumber: evt.target.value });\r\n }}\r\n />\r\n \r\n \r\n \r\n }\r\n variant=\"standard\"\r\n disabled={true}\r\n />\r\n \r\n }\r\n variant=\"standard\"\r\n name=\"crDate\"\r\n disabled={true}\r\n />\r\n \r\n \r\n \r\n }\r\n variant=\"standard\"\r\n type=\"number\"\r\n onChange={evt => {\r\n change({ ...promotionDetails, usageCountLimit: Number(evt.target.value) });\r\n }}\r\n InputProps={{ inputProps: { min: 1 } }}\r\n />\r\n \r\n \r\n \r\n option}\r\n defaultValue={assignedProductArray}\r\n onChange={(_, value) => {\r\n change({ ...promotionDetails, assignedProducts: value.map(value => ({ __typename: \"ProductInformation\", name: value })) })\r\n }}\r\n renderInput={(params: any) => (\r\n \r\n }\r\n />\r\n )}\r\n />\r\n \r\n \r\n \r\n \r\n option.country}\r\n defaultValue={assignedCountryCodes}\r\n onChange={(_, value) => {\r\n change({ ...promotionDetails, countryCodes: value })\r\n }}\r\n renderInput={(params: any) => (\r\n \r\n )}\r\n />\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default PromotionInformation;\r\n","import React from \"react\";\r\nimport { Box, Button, createStyles, makeStyles } from \"@material-ui/core\";\r\nimport { Translate } from \"react-localize-redux\";\r\nimport { useMutation } from \"@apollo/react-hooks\";\r\nimport gql from \"graphql-tag\";\r\nimport { CircularProgress } from \"@material-ui/core\";\r\n\r\nimport { deactivationVariables as deactivateCode } from \"types/apolloGenerated/deactivation\";\r\n\r\nimport { deletepromotionVariables as deletePromotionCode } from \"types/apolloGenerated/deletepromotion\";\r\n\r\nimport { deleteallVariables as deleteAllCode } from \"types/apolloGenerated/deleteall\";\r\nimport { COUPON_CODE_GRID } from \"./GridConfig\"\r\nimport { CouponCodeFilterOption, FilterOperator } from \"types/apolloGenerated/globalTypes\"\r\nimport { PROMOTION_GRID } from \"./../GridConfig\"\r\n\r\nconst useStyles = makeStyles(() =>\r\n createStyles({\r\n button: {\r\n margin: \"10px\",\r\n },\r\n buttonContainer: {\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n },\r\n buttonInnerContainer: {\r\n width: \"280px\", \r\n display: \"flex\", \r\n justifyContent: \"center\"\r\n },\r\n spinnerContainer: {\r\n display: \"flex\", \r\n justifyContent: \"center\", \r\n alignItems: \"center\"\r\n }\r\n })\r\n);\r\n\r\nconst DEACTIVATION = gql`\r\n mutation deactivation($id: Int!) {\r\n promotion {\r\n deactivateAllCodes(id: $id)\r\n }\r\n }\r\n`;\r\n\r\nconst DELETE_ALL = gql`\r\n mutation deleteall($id: Int!) {\r\n promotion {\r\n deleteAllDeactivatedCodes(couponProductId: $id)\r\n }\r\n }\r\n`;\r\n\r\nconst DELETE_PROMOTION = gql`\r\n mutation deletepromotion($id: Int!) {\r\n promotion {\r\n deletePromotion(id: $id)\r\n }\r\n }\r\n`;\r\n\r\nconst PromotionToolbar: React.FC<{ promotionId: number, changeUpdate: React.Dispatch>, update: boolean }> = ({\r\n promotionId,\r\n changeUpdate,\r\n update\r\n}) => {\r\n const classes = useStyles();\r\n const [deactivation, { loading: deactivationLoading }] = useMutation<\r\n deactivateCode\r\n >(DEACTIVATION, {\r\n onCompleted: () => changeUpdate(!update),\r\n onError: (error) => {},\r\n awaitRefetchQueries: true,\r\n refetchQueries: [{\r\n query: COUPON_CODE_GRID, variables: {\r\n pageSize: 100,\r\n page: 0,\r\n filter: [{\r\n filterOption: [CouponCodeFilterOption.COUPON_PRODUCT_ID], \r\n operator: FilterOperator.EQ, \r\n values: [String(promotionId)]\r\n }]\r\n }\r\n }]\r\n });\r\n const [deleteAll, { loading: deleteAllLoading }] = useMutation(\r\n DELETE_ALL,\r\n {\r\n onCompleted: () => changeUpdate(!update),\r\n onError: (error) => {},\r\n awaitRefetchQueries: true,\r\n refetchQueries: [{\r\n query: COUPON_CODE_GRID, variables: {\r\n pageSize: 100,\r\n page: 0,\r\n filter: [{\r\n filterOption: [CouponCodeFilterOption.COUPON_PRODUCT_ID], \r\n operator: FilterOperator.EQ, \r\n values: [String(promotionId)]\r\n }]\r\n }\r\n }]\r\n }\r\n );\r\n const [deletePromotion, { loading: deletePromotionLoading }] = useMutation<\r\n deletePromotionCode\r\n >(DELETE_PROMOTION, {\r\n onCompleted: () => {\r\n window.location.href = \"/promotion\"\r\n },\r\n onError: (error) => {},\r\n awaitRefetchQueries: true,\r\n refetchQueries: [{\r\n query: PROMOTION_GRID\r\n }]\r\n });\r\n\r\n return (\r\n \r\n \r\n {!deactivationLoading ? (\r\n {\r\n deactivation({\r\n variables: { id: Number(promotionId) },\r\n });\r\n }}\r\n variant=\"contained\"\r\n className={classes.button}\r\n color=\"primary\"\r\n >\r\n \r\n \r\n ) : (\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n {!deleteAllLoading ? (\r\n {\r\n deleteAll({\r\n variables: { id: Number(promotionId) },\r\n });\r\n }}\r\n variant=\"contained\"\r\n className={classes.button}\r\n color=\"primary\"\r\n >\r\n \r\n \r\n ) : (\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n {!deletePromotionLoading ? (\r\n {\r\n deletePromotion({\r\n variables: { id: Number(promotionId) },\r\n });\r\n }}\r\n variant=\"contained\"\r\n className={classes.button}\r\n color=\"primary\"\r\n >\r\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 PromotionToolbar;\r\n","import gql from \"graphql-tag\";\r\n\r\nexport const PRODUCT_QUERY = gql`\r\n query products{\r\n products(pageSize: 0){\r\n page\r\n pageSize\r\n totalResults\r\n results{\r\n productInformation{\r\n id\r\n name\r\n isArchived\r\n isProductRegistrationEnabled\r\n }\r\n }\r\n }\r\n } \r\n`\r\n\r\nexport const COUNTRY_CODE_QUERY = gql`\r\n query countryCodes{\r\n countryCodes(pageSize: 0){\r\n page\r\n pageSize\r\n totalResults\r\n results{\r\n id\r\n country\r\n }\r\n }\r\n }\r\n`\r\n\r\n\r\nexport const DEACTIVATE_SINGLE_CODE = gql`\r\n mutation deactivateCode($couponCodeId: Int!){\r\n promotion{\r\n deactivateCouponCode(couponCodeId: $couponCodeId)\r\n }\r\n }\r\n`\r\n\r\nexport const ACTIVATE_SINGLE_CODE = gql`\r\n mutation activateCode($couponCodeId: Int!){\r\n promotion{\r\n activateCouponCode(couponCodeId: $couponCodeId)\r\n }\r\n }\r\n`\r\n\r\nexport const QUERY = gql`\r\n query promotionDetail($id: Int!) {\r\n promotion(id: $id) {\r\n id\r\n creationDate\r\n articleNumber\r\n creationUser\r\n isDeleted\r\n assignedProducts {\r\n name\r\n },\r\n countryCodes {\r\n id,\r\n country\r\n }\r\n name\r\n type\r\n usageCountLimit\r\n }\r\n }\r\n`\r\n\r\nexport const UPDATE_PROMOTION = gql`\r\n mutation updatePromotion($promotion: PromotionUpdate!){\r\n promotion{\r\n updatePromotion(promotion: $promotion){\r\n id\r\n creationDate\r\n creationUser\r\n articleNumber\r\n isDeleted\r\n name\r\n type\r\n }\r\n }\r\n }\r\n`\r\n\r\nexport const CREATE_PROMOTION = gql`\r\n mutation createPromotion($promotion: PromotionInsertInput!){\r\n promotion{\r\n createPromotion(promotion: $promotion){\r\n id\r\n creationDate\r\n creationUser\r\n articleNumber\r\n isDeleted\r\n name\r\n type\r\n }\r\n }\r\n }\r\n`","import { createStyles, Theme, makeStyles } from \"@material-ui/core/styles\";\r\nimport { countryCodes_countryCodes_results } from \"types/apolloGenerated/countryCodes\"\r\nimport { products_products_results } from \"types/apolloGenerated/products\"\r\nimport { State as PromotionOverviewState } from \"redux/types/PromotionOverview\";\r\nimport {\r\n promotionDetail_promotion as PromotionInfo\r\n } from \"types/apolloGenerated/promotionDetail\";\r\n\r\n import {\r\n setGridState,\r\n setColumnStates,\r\n } from \"redux/actions/PromotionDetailsActions\";\r\n\r\n\r\n import {\r\n TranslateFunction,\r\n } from \"react-localize-redux\";\r\n\r\nexport interface FieldError {\r\n field: string\r\n message: string\r\n}\r\n\r\nexport interface PromotionDetailViewProps {\r\n queryData: PromotionInfo,\r\n promoOverviewState: PromotionOverviewState,\r\n id: string | undefined,\r\n products: products_products_results[],\r\n countryCodes: countryCodes_countryCodes_results[],\r\n actions: {\r\n setGridState: typeof setGridState\r\n setColumnStates: typeof setColumnStates\r\n },\r\n translate: TranslateFunction\r\n }\r\n\r\nexport const overviewStyles = makeStyles((theme: Theme) => {\r\n return createStyles({\r\n content: {\r\n padding: theme.spacing(3),\r\n height: \"calc(100% - 64px)\",\r\n display: \"flex\",\r\n flexFlow: \"column\",\r\n },\r\n\r\n innerContent: {\r\n flex: \"1 1 auto\",\r\n },\r\n\r\n innerHeader: {\r\n flex: \"0 1 auto\",\r\n display: \"flex\",\r\n margin: \"0 -20px 20px -20px\",\r\n alignItems: \"flex-end\",\r\n justifyContent: \"space-between\",\r\n\r\n \"& > *\": {\r\n flex: \"0 1 auto\",\r\n margin: \"0 20px\",\r\n minWidth: \"170px\",\r\n },\r\n\r\n \"& > .filter\": {\r\n flex: \"1 1 auto\",\r\n maxWidth: \"250px\",\r\n },\r\n },\r\n\r\n innerHeaderRight: {\r\n flex: \"0 1 auto\",\r\n display: \"flex\",\r\n alignItems: \"flex-end\",\r\n margin: 0,\r\n\r\n \"& > *\": {\r\n flex: \"0 1 auto\",\r\n margin: \"0 20px\",\r\n minWidth: \"170px\",\r\n },\r\n },\r\n });\r\n});","import React, { useState, Fragment, useEffect } from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport { bindActionCreators, Dispatch } from \"redux\";\r\nimport { CellRenderer } from \"./GridConfig\";\r\nimport { useQuery, useMutation } from \"@apollo/react-hooks\";\r\nimport { format } from \"date-fns\";\r\nimport {\r\n Translate,\r\n withLocalize,\r\n LocalizeContextProps\r\n} from \"react-localize-redux\";\r\nimport { State as PromotionOverviewState } from \"redux/types/PromotionOverview\";\r\nimport { CircularProgress } from \"@material-ui/core\";\r\nimport { Alert } from '@material-ui/lab';\r\nimport \"@ag-grid-community/all-modules/dist/styles/ag-grid.css\";\r\nimport \"@ag-grid-community/all-modules/dist/styles/ag-theme-balham.css\";\r\nimport { AppState } from \"redux/store\";\r\n\r\nimport {\r\n setGridState,\r\n setColumnStates,\r\n} from \"redux/actions/PromotionDetailsActions\";\r\nimport PromotionInformation from \"Pages/Promotion/Details/PromotionInformation\";\r\nimport PromotionToolbar from \"Pages/Promotion/Details/PromotionToolbar\";\r\nimport AgGrid from \"components/common/Grid/AgGrid\";\r\nimport { getColumnDefs, apolloConnectorByPromotion } from \"./GridConfig\";\r\nimport PageHeader from \"components/common/PageHeader\";\r\nimport { useParams, useHistory } from \"react-router-dom\";\r\nimport { PromotionInsertInput, PromotionType, PromotionUpdate } from \"types/apolloGenerated/globalTypes\"\r\nimport { createPromotion as CreatePromotion, createPromotionVariables } from \"types/apolloGenerated/createPromotion\"\r\nimport { updatePromotion as UpdatePromotion, updatePromotionVariables } from \"types/apolloGenerated/updatePromotion\"\r\nimport { UserProfile } from \"types/ToolboxEntities\";\r\nimport {\r\n promotionDetail as Promotion,\r\n promotionDetail_promotion as PromotionInfo\r\n} from \"types/apolloGenerated/promotionDetail\";\r\nimport {\r\n MenuItemDef,\r\n GetContextMenuItemsParams,\r\n} from \"@ag-grid-enterprise/all-modules\";\r\nimport { PROMOTION_GRID } from \"./../GridConfig\"\r\nimport { deactivateCodeVariables, deactivateCode } from \"types/apolloGenerated/deactivateCode\"\r\nimport { activateCodeVariables, activateCode } from \"types/apolloGenerated/activateCode\"\r\nimport { COUPON_CODE_GRID } from \"./GridConfig\"\r\nimport { CouponCodeFilterOption, FilterOperator } from \"types/apolloGenerated/globalTypes\"\r\nimport PageDialog from \"components/common/PageDialog\"\r\nimport { ACTIVATE_SINGLE_CODE, COUNTRY_CODE_QUERY, \r\n CREATE_PROMOTION, DEACTIVATE_SINGLE_CODE, \r\n PRODUCT_QUERY, QUERY, UPDATE_PROMOTION } from \"./Queries\";\r\n import { FieldError, overviewStyles, PromotionDetailViewProps } from \"./PromotionInformationModels\"\r\n\r\n\r\nconst PromotionDetailView: React.FC = ({\r\n queryData,\r\n promoOverviewState,\r\n id,\r\n actions,\r\n products,\r\n countryCodes,\r\n translate\r\n}) => {\r\n const classes = overviewStyles();\r\n\r\n\r\n const [apolloConnector, setApolloConnector] = useState<\r\n ReturnType\r\n >(apolloConnectorByPromotion(id));\r\n\r\n useEffect(() => {\r\n setApolloConnector(apolloConnectorByPromotion(id));\r\n }, [id]);\r\n\r\n const [open, setOpen] = React.useState(false)\r\n const [code, setCode] = React.useState<{ id: number | null, isActive: boolean | null }>({ id: null, isActive: null });\r\n const [update, setUpdate] = React.useState(true)\r\n const [fieldError, setFieldError] = React.useState([])\r\n const [promotionInfo, setPromotionInfo] = React.useState(queryData)\r\n const [createUpdateError, setCreateUpdateError] = React.useState(\"\")\r\n const history = useHistory()\r\n const [createPromotion, { loading: createLoading }] = useMutation(CREATE_PROMOTION, {\r\n onCompleted: data => {\r\n const newPromotionId = data?.promotion?.createPromotion?.id\r\n history.replace(`/promotion/${newPromotionId}`);\r\n setCreateUpdateError(\"\")\r\n },\r\n refetchQueries: [{\r\n query: PROMOTION_GRID,\r\n }],\r\n onError: error => {\r\n setCreateUpdateError(error.message)\r\n }\r\n })\r\n const [updatePromotion, { loading: updateLoading }] = useMutation(UPDATE_PROMOTION, {\r\n refetchQueries: [{\r\n query: QUERY, variables: ({ id: Number(id) })\r\n }],\r\n onError: error => {\r\n setCreateUpdateError(error.message)\r\n },\r\n onCompleted: data => {\r\n setCreateUpdateError(\"\")\r\n },\r\n })\r\n\r\n const [deactivateCouponCode, { loading: deactivateLoading }] = useMutation(DEACTIVATE_SINGLE_CODE, {\r\n onCompleted: () => {\r\n setUpdate(!update)\r\n setOpen(false)\r\n },\r\n awaitRefetchQueries: true,\r\n refetchQueries: [{\r\n query: COUPON_CODE_GRID, variables: {\r\n pageSize: 100,\r\n page: 0,\r\n filter: [{\r\n filterOption: [CouponCodeFilterOption.COUPON_PRODUCT_ID],\r\n operator: FilterOperator.EQ,\r\n values: [id]\r\n }]\r\n }\r\n },\r\n {\r\n query: PROMOTION_GRID\r\n }]\r\n })\r\n\r\n const [activateCouponCode, { loading: activateLoading }] = useMutation(ACTIVATE_SINGLE_CODE, {\r\n onCompleted: () => {\r\n setUpdate(!update)\r\n setOpen(false)\r\n },\r\n awaitRefetchQueries: true,\r\n refetchQueries: [{\r\n query: COUPON_CODE_GRID, variables: {\r\n pageSize: 100,\r\n page: 0,\r\n filter: [{\r\n filterOption: [CouponCodeFilterOption.COUPON_PRODUCT_ID],\r\n operator: FilterOperator.EQ,\r\n values: [id]\r\n }]\r\n }\r\n },\r\n {\r\n query: PROMOTION_GRID\r\n }]\r\n })\r\n\r\n const isLoading = createLoading || updateLoading ? true : false\r\n\r\n const convertToIds = (value: any) => {\r\n const productIdArray: number[] = []\r\n value.forEach((product: any) => {\r\n if (product !== null) {\r\n const arr = products.map((value: any) => value?.productInformation?.name)\r\n if (arr.indexOf(product.name) !== -1) {\r\n const id = products[arr.indexOf(product?.name)]?.productInformation?.id\r\n if (id) {\r\n productIdArray.push(id)\r\n }\r\n }\r\n }\r\n });\r\n return productIdArray\r\n }\r\n\r\n const savePromotion = () => {\r\n const errors = getInputValidationErrors(promotionInfo);\r\n\r\n if (errors.length) {\r\n setFieldError(errors);\r\n return;\r\n }\r\n\r\n id === \"NEW\" ? createPromotion({\r\n variables: {\r\n promotion: createPromotionInsertInput(promotionInfo)\r\n }\r\n }) : updatePromotion({\r\n variables: {\r\n promotion: createPromotionUpdateInput(promotionInfo)\r\n }\r\n })\r\n setFieldError([])\r\n }\r\n\r\n const getInputValidationErrors = (promotionInfo: PromotionInfo): FieldError[] => {\r\n const errors: FieldError[] = []\r\n\r\n if (promotionInfo?.articleNumber === \"\") {\r\n errors.push({ field: \"article\", message: translate(\"components.promotions.details.promotionIdEmpty\") as string })\r\n }\r\n\r\n if (promotionInfo?.name === \"\") {\r\n errors.push({ field: \"name\", message: translate(\"components.promotions.details.nameEmpty\") as string })\r\n }\r\n\r\n return errors;\r\n }\r\n\r\n const createPromotionInsertInput = (promotionInfo: PromotionInfo): PromotionInsertInput => {\r\n return {\r\n articleNumber: promotionInfo?.articleNumber,\r\n name: promotionInfo?.name,\r\n creationUser: promotionInfo?.creationUser,\r\n type: promotionInfo?.type,\r\n productIds: convertToIds(promotionInfo?.assignedProducts),\r\n usageCountLimit: promotionInfo?.usageCountLimit,\r\n countryCodeIds: promotionInfo.countryCodes?.map(countryCode => countryCode!.id) ?? []\r\n };\r\n }\r\n\r\n const createPromotionUpdateInput = (promotionInfo: PromotionInfo): PromotionUpdate => {\r\n return {\r\n id: promotionInfo?.id,\r\n articleNumber: promotionInfo?.articleNumber,\r\n name: promotionInfo?.name,\r\n creationUser: promotionInfo?.creationUser,\r\n type: promotionInfo?.type,\r\n productIds: convertToIds(promotionInfo?.assignedProducts),\r\n usageCountLimit: promotionInfo?.usageCountLimit,\r\n countryCodeIds: promotionInfo.countryCodes?.map(countryCode => countryCode!.id) ?? []\r\n };\r\n }\r\n\r\n const getContextMenuItems = () => {\r\n const result: (string | MenuItemDef)[] = [\r\n {\r\n name: translate(\r\n \"components.promotions.details.deactivateCode\"\r\n ) as string,\r\n action: () => {\r\n setOpen(true)\r\n },\r\n cssClasses: [\"redFont\", \"bold\"],\r\n },\r\n \"copy\",\r\n \"copyWithHeaders\",\r\n \"paste\",\r\n \"export\",\r\n ];\r\n return (params: GetContextMenuItemsParams): (string | MenuItemDef)[] => {\r\n if (params && params.node) {\r\n setCode({\r\n id: Number(params.node.data.id),\r\n isActive: params.node.data.isActive\r\n })\r\n }\r\n return result;\r\n };\r\n };\r\n\r\n\r\n const singleCodeAction = () => {\r\n if (code.id) {\r\n if (code.isActive) {\r\n deactivateCouponCode({\r\n variables: {\r\n couponCodeId: code.id\r\n }\r\n })\r\n } else {\r\n activateCouponCode({\r\n variables: {\r\n couponCodeId: code.id\r\n }\r\n })\r\n }\r\n }\r\n }\r\n\r\n return (\r\n \r\n {({ translate }) => (\r\n \r\n \r\n singleCodeAction() }, { title: \"generics.cancel\", click: () => setOpen(false) }]}\r\n loading={deactivateLoading || activateLoading}\r\n />\r\n {createUpdateError !== \"\" ? {createUpdateError} :
    }\r\n
    \r\n \r\n {id !== \"NEW\" ?\r\n \r\n \r\n \r\n \r\n
    \r\n : }\r\n
    \r\n
    \r\n )}\r\n
    \r\n );\r\n};\r\n\r\ninterface PromotionDetailProps extends LocalizeContextProps {\r\n promotionOverviewState: PromotionOverviewState\r\n user: UserProfile | null\r\n actions: {\r\n setGridState: typeof setGridState\r\n setColumnStates: typeof setColumnStates\r\n }\r\n}\r\n\r\nconst PromotionDetail: React.FC = ({ promotionOverviewState, actions, user, translate }) => {\r\n const { id: promotionId } = useParams();\r\n\r\n const { loading, data: promotionData } = useQuery(QUERY, {\r\n variables: { id: Number(promotionId) },\r\n });\r\n\r\n const { data: productsData, loading: productsLoading } = useQuery(PRODUCT_QUERY);\r\n\r\n const { data: countryCodesData, loading: countryCodesLoading } = useQuery(COUNTRY_CODE_QUERY);\r\n\r\n const promotion = {\r\n __typename: promotionData?.promotion?.__typename ?? \"Promotion\",\r\n id: Number(promotionId),\r\n creationDate: promotionId === \"NEW\" ? format(new Date(), \"d/M/y\") : promotionData?.promotion?.creationDate ?? \"\",\r\n articleNumber: promotionData?.promotion?.articleNumber ?? \"\",\r\n creationUser: promotionId === \"NEW\" ? user?.userInformation.firstName + \" \" + user?.userInformation.lastName : promotionData?.promotion?.creationUser ?? \"\",\r\n isDeleted: promotionData?.promotion?.isDeleted ?? false,\r\n name: promotionData?.promotion?.name ?? \"\",\r\n type: promotionData?.promotion?.type ?? PromotionType.ASSIGNABLE,\r\n assignedProducts: promotionData?.promotion?.assignedProducts ?? [],\r\n countryCodes: promotionData?.promotion?.countryCodes ?? [],\r\n usageCountLimit: promotionData?.promotion?.usageCountLimit ?? 1\r\n }\r\n\r\n if (loading || productsLoading || countryCodesLoading) return ;\r\n\r\n if (!promotionData?.promotion && promotionId !== \"NEW\") return
    sorry no data for this promotion
    ;\r\n\r\n return ;\r\n};\r\n\r\nconst mapStateToProps = (appState: AppState) => ({\r\n user: appState.auth.user,\r\n promotionOverviewState: appState.promotionOverview,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch: Dispatch) => ({\r\n actions: bindActionCreators({ setGridState, setColumnStates }, dispatch),\r\n});\r\n\r\nexport default withLocalize(connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(PromotionDetail));\r\n","import React from 'react';\r\nimport { Grid, TextField, createStyles, Theme } from '@material-ui/core';\r\nimport { makeStyles } from '@material-ui/core';\r\nimport { Couponcode } from 'types/ToolboxEntities';\r\nimport { Translate } from 'react-localize-redux';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n container: {\r\n width: \"100%\",\r\n marginBottom: \"15px\",\r\n \"& .MuiTextField-root, & .MuiFormControl-root\": {\r\n width: \"100%\",\r\n \"& .MuiInputBase-input\": {\r\n height: \"0.6em\",\r\n fontSize: \"0.9rem\",\r\n },\r\n \"& .MuiInputLabel-outlined\": {\r\n transform: \"translate(14px, 15px) scale(1)\",\r\n fontSize: \"0.9rem\",\r\n },\r\n \"& .MuiInputLabel-outlined.MuiInputLabel-shrink\": {\r\n transform: \"translate(14px, -6px) scale(0.75)\",\r\n },\r\n },\r\n \"& .MuiFormControl-root .MuiSelect-selectMenu\": {\r\n paddingTop: \"14px\",\r\n paddingBottom: \"23px\",\r\n },\r\n \"& .MuiGrid-grid-xs-6, & .MuiGrid-grid-xs-12\": {\r\n paddingLeft: \"30px\",\r\n paddingTop: \"25px\",\r\n display: \"inherit\",\r\n },\r\n \"& .MuiGrid-grid-xs-6 .MuiGrid-item:not(:first-child):not(:last-child)\": {\r\n padding: '0px 10px',\r\n },\r\n },\r\n }));\r\n\r\ninterface couponcodeData {\r\n data: Couponcode\r\n onChangeFunc?: (value: any, name: string) => void\r\n};\r\n\r\nconst CouponCode: React.FC = ({ data, onChangeFunc = (value, name) => { } }) => {\r\n let classes = useStyles();\r\n\r\n\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n }\r\n variant=\"outlined\"\r\n name=\"name\"\r\n onChange={(evt) => { onChangeFunc(evt.target.value, evt.target.name) }}\r\n />\r\n \r\n \r\n }\r\n variant=\"outlined\"\r\n name=\"Creation Date\"\r\n onChange={(evt) => { onChangeFunc(evt.target.value, evt.target.name) }}\r\n />\r\n \r\n \r\n \r\n \r\n }\r\n variant=\"outlined\"\r\n name=\"Assigned Product-Code\"\r\n onChange={(evt) => { onChangeFunc(evt.target.value, evt.target.name) }} />\r\n \r\n \r\n }\r\n variant=\"outlined\"\r\n name=\"Consumption Date\"\r\n onChange={(evt) => { onChangeFunc(evt.target.value, evt.target.name) }} />\r\n \r\n \r\n \r\n \r\n }\r\n variant=\"outlined\"\r\n name=\"Valid from\"\r\n onChange={(evt) => { onChangeFunc(evt.target.value, evt.target.name) }} />\r\n \r\n \r\n }\r\n variant=\"outlined\"\r\n name=\"Valid to\"\r\n onChange={(evt) => { onChangeFunc(evt.target.value, evt.target.name) }} />\r\n \r\n \r\n \r\n \r\n }\r\n variant=\"outlined\"\r\n name=\"Active\"\r\n onChange={(evt) => { onChangeFunc(evt.target.value, evt.target.name) }} />\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n};\r\n\r\nexport default CouponCode;","import { ThunkAction, ThunkDispatch } from 'redux-thunk'\r\n\r\nimport { Error } from 'types/CampGuideTypes';\r\n\r\nimport { ActionType, Action, FieldErrors } from 'redux/types/CouponCode';\r\n\r\nimport * as Types from 'types/ToolboxEntities';\r\n\r\nimport GraphQL from 'util/GraphQL';\r\n\r\n\r\n\r\nexport const dirty = (): Action => ({\r\n type: ActionType.DIRTY\r\n});\r\n\r\nexport const error = (globalError: Error[] = [], propertyError: FieldErrors | null = null): Action => ({\r\n type: ActionType.ERROR,\r\n payload: {\r\n globalErrors: globalError,\r\n propertyErrors: propertyError\r\n }\r\n});\r\n\r\nexport const loaded = (couponcode: Types.Couponcode): Action => ({\r\n type: ActionType.LOADED,\r\n payload: couponcode\r\n});\r\n\r\nexport const loading = (): Action => ({\r\n type: ActionType.LOADING\r\n});\r\n\r\nexport const saving = (): Action => ({\r\n type: ActionType.SAVING\r\n});\r\n\r\nexport const load = (id: number): ThunkAction, {}, {}, Action> => {\r\n return async (dispatch: ThunkDispatch<{}, {}, Action>): Promise => {\r\n\r\n dispatch(saving());\r\n GraphQL.queryCouponcode(id).then((couponcode: Types.Couponcode) => {\r\n //console.log('DATA', couponcode);\r\n dispatch(loaded(couponcode));\r\n }).catch((errorData: Error) => {\r\n console.log('ERROR', errorData);\r\n dispatch(error([errorData]));\r\n });\r\n };\r\n};\r\n\r\n\r\nexport const save = (couponcode: Types.Couponcode): ThunkAction, {}, {}, Action> => {\r\n return async (dispatch: ThunkDispatch<{}, {}, Action>): Promise => {\r\n dispatch(saving());\r\n GraphQL.saveCouponcode(couponcode).then((newCouponCode: Types.Couponcode) => {\r\n //console.log('DATA', newCouponCode);\r\n dispatch(loaded(newCouponCode));\r\n }).catch((errorData: Error) => {\r\n console.log('ERROR', errorData);\r\n dispatch(error([errorData]));\r\n });\r\n };\r\n};\r\n","import React, { useState, useEffect } from 'react';\r\nimport { Grid, Box } from '@material-ui/core';\r\n\r\nimport CouponCodes from 'Pages/Promotion/CouponCode'\r\nimport { connect } from 'react-redux';\r\nimport { AppState } from 'redux/store';\r\nimport { bindActionCreators, Dispatch } from 'redux';\r\nimport { dirty, load, save } from 'redux/actions/CouponCodeActions'\r\nimport { Store as CouponCodeStore } from 'redux/types/CouponCode';\r\nimport { Couponcode } from 'types/ToolboxEntities';\r\nimport { useParams } from 'react-router';\r\nimport PageHeader from 'components/common/PageHeader';\r\n\r\nimport { Translate } from 'react-localize-redux';\r\n\r\ninterface couponCodeData {\r\n couponCode: CouponCodeStore\r\n actions: {\r\n dirty: () => void,\r\n load: (id: number) => void,\r\n save: (couponCode: Couponcode) => void\r\n }\r\n};\r\n\r\nexport type changeFuncEventType = React.SyntheticEvent | React.ChangeEvent<{ value: unknown, name?: string }>;\r\n\r\nconst CouponCode: React.FC = ({ couponCode, actions }) => {\r\n let { id } = useParams();\r\n let idNum = Number(id);\r\n\r\n\r\n useEffect(() => {\r\n actions.load(idNum);\r\n }, [actions, idNum]);\r\n\r\n\r\n const [couponCodeData, setCouponCodeData] = useState(couponCode.code);\r\n\r\n useEffect(() => {\r\n setCouponCodeData(couponCode.code);\r\n }, [couponCode.code]);\r\n\r\n const onChangeSetData = (value: any, name: string) => {\r\n // console.log(\"pre change: \", partnerData);\r\n let newCouponCodeData = changeNestedProp(couponCodeData, value, name.split(\"/\"));\r\n setCouponCodeData(newCouponCodeData);\r\n }\r\n\r\n return (\r\n couponCode.code && couponCode.code.itemNumber === idNum ? (\r\n \r\n \r\n { if (couponCodeData) { console.log(\"pre save: \", couponCodeData); actions.save(couponCodeData); } }} />\r\n \r\n \r\n \r\n\r\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 const changeNestedProp: any = (object: any, value: any, props: string[]) => {\r\n if (props.length > 1) {\r\n return {\r\n ...object,\r\n [props[0]]: changeNestedProp(object[props[0]], value, props.slice(1))\r\n }\r\n }\r\n else {\r\n return {\r\n ...object,\r\n [props[0]]: value\r\n };\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state: AppState) => ({\r\n couponCode: state.couponCode,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch: Dispatch) => ({\r\n actions: bindActionCreators({ dirty, load, save }, dispatch)\r\n});\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(CouponCode);\r\n","import React, { useState, useRef, useEffect } from \"react\";\r\nimport { createStyles, makeStyles } from \"@material-ui/core/styles\";\r\nimport classnames from \"classnames/bind\";\r\n\r\n\r\n\r\nconst useStyles = makeStyles(() => {\r\n return createStyles({\r\n root: {\r\n position: \"relative\",\r\n width: \"100%\",\r\n transition: \"height 0.2s\",\r\n height: \"0\",\r\n },\r\n content: {\r\n position: \"absolute\",\r\n top: \"0\",\r\n left: \"0\",\r\n width: \"100%\",\r\n transition: \"opacity 0.2s\",\r\n opacity: \"1\"\r\n },\r\n hidden: {\r\n pointerEvents: \"none\",\r\n opacity: \"0\"\r\n }\r\n })\r\n})\r\n\r\n\r\nconst Expander: React.FC<{ hidden: boolean }> = ({ children, hidden }) => {\r\n const classes = useStyles();\r\n const cx = classnames.bind(classes);\r\n const ref = useRef(null);\r\n const [contentHeight, setContentHeight] = useState(0);\r\n const height = hidden ? 0 : contentHeight\r\n const marginBottom = hidden ? 0 : \"10px\"\r\n const currentHeight = ref.current?.height\r\n\r\n useEffect(() => {\r\n setContentHeight(ref.current?.offsetHeight ?? 0);\r\n }, [currentHeight, children]);\r\n\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n};\r\nexport default Expander;","import React from \"react\";\r\nimport { Translate } from \"react-localize-redux\";\r\nimport { createStyles, makeStyles } from \"@material-ui/core/styles\";\r\nimport { Box, Grid, Typography, TextField, Checkbox } from \"@material-ui/core\";\r\nimport { KeyboardArrowDown, KeyboardArrowUp } from \"@material-ui/icons\";\r\nimport { ProductUpdateInput } from \"../../../types/apolloGenerated/globalTypes\";\r\nimport Expander from \"components/common/Expander\";\r\n\r\ninterface PartnerRegistrationProps {\r\n productInfoObj: ProductUpdateInput;\r\n setProductInfoObj: React.Dispatch>;\r\n validation: { field: string; message: string }[];\r\n}\r\n\r\nconst useStyles = makeStyles(() => {\r\n return createStyles({\r\n hideButton: {\r\n width: \"30px\",\r\n height: \"35px\",\r\n paddingTop: \"6px\",\r\n cursor: \"pointer\",\r\n },\r\n titleOuterContainer: {\r\n fontSize: \"20px\",\r\n padding: \"10px\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n borderRadius: \"3px\",\r\n justifyContent: \"space-between\",\r\n },\r\n titleInnerContainer: {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n },\r\n removeButtonContainer: {\r\n marginRight: \"20px\",\r\n display: \"flex\",\r\n cursor: \"pointer\",\r\n },\r\n container: {\r\n borderRadius: \"3px\",\r\n minWidth: \"990px\",\r\n maxWidth: \"1615px\",\r\n border: \"solid #666B6E 1px\",\r\n },\r\n reactiveBoxesRight: {\r\n minWidth: \"350px\",\r\n width: \"90%\",\r\n margin: \"0 0 23px 30px\",\r\n },\r\n });\r\n});\r\n\r\nconst PartnerRegistration: React.FC = ({\r\n productInfoObj,\r\n setProductInfoObj,\r\n validation,\r\n}) => {\r\n const [hidden, setHidden] = React.useState(\r\n !productInfoObj?.serviceFeePearls ? true : false\r\n );\r\n const classes = useStyles();\r\n\r\n const openClose = () => {\r\n setProductInfoObj({\r\n ...productInfoObj,\r\n invoiceUploadAllowed: false,\r\n serviceFeePearls: !hidden ? null : 0,\r\n });\r\n setHidden(!hidden);\r\n };\r\n\r\n const validationFields = validation.map((value) => value.field);\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 openClose()}\r\n className={classes.removeButtonContainer}\r\n >\r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n openClose()} className={classes.hideButton}>\r\n {hidden ? : }\r\n \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n );\r\n};\r\nexport default PartnerRegistration;\r\n","import gql from \"graphql-tag\";\r\n\r\nconst MAIL_QUERY = gql`\r\nquery mailTemplateGroup {\r\n sendGridTemplates(pageSize: 0) {\r\n results {\r\n name\r\n }\r\n }\r\n}\r\n`;\r\n\r\nexport default MAIL_QUERY;\r\n","import React from \"react\";\r\nimport { Translate } from \"react-localize-redux\";\r\nimport { useQuery } from \"@apollo/react-hooks\";\r\nimport Autocomplete from \"@material-ui/lab/Autocomplete\";\r\nimport { Set } from \"immutable\";\r\nimport { createStyles, makeStyles } from \"@material-ui/core/styles\";\r\nimport {\r\n Box,\r\n Grid,\r\n Typography,\r\n TextField,\r\n Checkbox,\r\n FormGroup,\r\n} from \"@material-ui/core\";\r\nimport { KeyboardArrowDown, KeyboardArrowUp } from \"@material-ui/icons\";\r\n\r\nimport { ProductUpdateInput } from \"types/apolloGenerated/globalTypes\";\r\nimport { mailTemplateGroup as queryData } from \"types/apolloGenerated/mailTemplateGroup\";\r\nimport MAIL_QUERY from \"commonQueries/mailTemplate\";\r\nimport Expander from \"components/common/Expander\";\r\n\r\nimport { PromotionIdsAndNames_promotions_results as PromotionData } from \"types/apolloGenerated/PromotionIdsAndNames\";\r\n\r\nconst useStyles = makeStyles(() => {\r\n return createStyles({\r\n hideButton: {\r\n width: \"30px\",\r\n height: \"35px\",\r\n paddingTop: \"6px\",\r\n cursor: \"pointer\",\r\n },\r\n titleOuterContainer: {\r\n fontSize: \"20px\",\r\n padding: \"10px\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n borderRadius: \"3px\",\r\n justifyContent: \"space-between\",\r\n },\r\n titleInnerContainer: {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n },\r\n removeButtonContainer: {\r\n marginRight: \"20px\",\r\n display: \"flex\",\r\n },\r\n container: {\r\n margin: \"10px 0 0 0\",\r\n borderRadius: \"3px\",\r\n minWidth: \"990px\",\r\n maxWidth: \"1615px\",\r\n border: \"solid #666B6E 1px\",\r\n },\r\n });\r\n});\r\n\r\ninterface CustomerRegistrationProps {\r\n promotionsData: PromotionData[];\r\n productInfoObj: ProductUpdateInput;\r\n setProductInfoObj: React.Dispatch>;\r\n isNew: boolean;\r\n}\r\n\r\nconst CustomerRegistration: React.FC = ({\r\n promotionsData,\r\n productInfoObj,\r\n setProductInfoObj,\r\n isNew,\r\n}) => {\r\n const { data: mailData } = useQuery(MAIL_QUERY);\r\n const classes = useStyles();\r\n\r\n const regBonus = productInfoObj?.registrationBonus;\r\n\r\n const mailTemplateValues = mailData?.sendGridTemplates?.results ?? [];\r\n\r\n const uniqueMailTemplateValues = Set(\r\n mailTemplateValues.map((value) => value?.name ?? \"\")\r\n )\r\n .toArray()\r\n .filter((str) => !!str)\r\n .filter(\r\n (str) => str.startsWith(\"Activation\") || str.startsWith(\"Registration\")\r\n );\r\n\r\n const [hidden, setHidden] = React.useState(regBonus?.bonusId ? false : true);\r\n\r\n const openClose = () => {\r\n setProductInfoObj({\r\n ...productInfoObj,\r\n registrationBonus: {\r\n bonusId: hidden ? 1 : null,\r\n },\r\n });\r\n setHidden(!hidden);\r\n };\r\n\r\n const promotionsList =\r\n (promotionsData && promotionsData?.map((value: any) => value.name)) ?? [];\r\n const bonusIncentiveValue =\r\n promotionsList.length > 0\r\n ? promotionsList[\r\n promotionsData\r\n .map((value: any) => value.id)\r\n .indexOf(regBonus?.bonusId ?? 1)\r\n ]\r\n : \"\";\r\n\r\n const convertToBonusId = (value: string) => {\r\n const index = promotionsData.map((value: any) => value.name).indexOf(value);\r\n return promotionsData[index]?.id ?? 1;\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n option}\r\n freeSolo={false}\r\n style={{\r\n maxWidth: \"670px\",\r\n width: \"100%\",\r\n margin: \"0 0 23px 0px\",\r\n }}\r\n renderInput={(params) => (\r\n {\r\n if (\r\n !uniqueMailTemplateValues.includes(value.target.value)\r\n ) {\r\n productInfoObj.registrationMailTemplateName = \"\";\r\n } else {\r\n productInfoObj.registrationMailTemplateName =\r\n value.target.value;\r\n }\r\n const latestValue = Object.assign({}, productInfoObj);\r\n setProductInfoObj(latestValue);\r\n }}\r\n />\r\n )}\r\n />\r\n \r\n
    \r\n \r\n\r\n \r\n \r\n \r\n \r\n
    \r\n {\r\n if (!isNew) {\r\n if (hidden) {\r\n setProductInfoObj({\r\n ...productInfoObj,\r\n isProductRegistrationEnabled: !productInfoObj.isProductRegistrationEnabled,\r\n });\r\n }\r\n }\r\n }}\r\n >\r\n \r\n
    \r\n \r\n
    \r\n \r\n {\r\n if (productInfoObj.isProductRegistrationEnabled) {\r\n openClose();\r\n }\r\n }}\r\n >\r\n \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n {\r\n if (productInfoObj.isProductRegistrationEnabled) {\r\n openClose();\r\n }\r\n }}\r\n className={classes.hideButton}\r\n >\r\n {hidden ? : }\r\n
    \r\n
    \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default CustomerRegistration;\r\n","import React, { useMemo, useState } from \"react\";\r\nimport { Translate } from \"react-localize-redux\";\r\nimport { useQuery } from \"@apollo/react-hooks\";\r\nimport gql from \"graphql-tag\";\r\nimport { createStyles, makeStyles } from \"@material-ui/core/styles\";\r\nimport { Box, Typography } from \"@material-ui/core\";\r\n\r\nimport MultiSelect, { MultiSelectOption } from \"components/common/MultiSelect\";\r\n\r\nimport { consumableNameOnly, consumableNameOnly_consumableProducts } from \"types/apolloGenerated/consumableNameOnly\"\r\nimport { productById_product_productInformation } from \"types/apolloGenerated/productById\";\r\n\r\nconst CONSUMABLE_LIST = gql`\r\n query consumableNameOnly {\r\n consumableProducts{\r\n name\r\n id\r\n }\r\n }\r\n`;\r\n\r\nconst useStyles = makeStyles(() => {\r\n return createStyles({\r\n container: {\r\n margin: \"0 30px 40px 30px\"\r\n },\r\n title: {\r\n marginBottom: \"30px\",\r\n },\r\n addSpinner: {\r\n marginLeft: \"40px\",\r\n position: \"absolute\"\r\n }\r\n });\r\n});\r\n\r\n\r\nconst mapReduceToOptionType = (reduced: MultiSelectOption[], consumable: consumableNameOnly_consumableProducts | null | undefined) => {\r\n if (consumable) {\r\n reduced.push({\r\n value: consumable.id + '',\r\n label: consumable.name\r\n });\r\n }\r\n return reduced;\r\n};\r\n\r\n\r\n\r\ninterface ConsumableProps {\r\n productInfoObj: productById_product_productInformation\r\n}\r\n\r\nconst Consumable: React.FC = ({ productInfoObj }) => {\r\n\r\n const classes = useStyles();\r\n\r\n const { data: consumables } = useQuery(CONSUMABLE_LIST)\r\n\r\n const [selectedConsumables, setSelectedConsumables] = useState(\r\n productInfoObj.consumableProducts?.reduce(mapReduceToOptionType, []) || []\r\n );\r\n\r\n const selectableConsumables = useMemo(() => {\r\n if (consumables?.consumableProducts) {\r\n return consumables?.consumableProducts.reduce(mapReduceToOptionType, []);\r\n }\r\n return [];\r\n }, [consumables]);\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\nexport default Consumable;\r\n","import React, { Fragment } from \"react\";\r\nimport { Translate } from \"react-localize-redux\";\r\nimport { Autocomplete } from '@material-ui/lab';\r\nimport { createStyles, makeStyles } from \"@material-ui/core/styles\";\r\nimport { TranslateFunction, withLocalize, LocalizeContextProps } from \"react-localize-redux\";\r\nimport {\r\n Box,\r\n TextField,\r\n CircularProgress,\r\n Button\r\n} from \"@material-ui/core\";\r\nimport { useMutation } from \"@apollo/react-hooks\";\r\nimport gql from \"graphql-tag\";\r\n\r\nimport { productById_product_productInformation_productUserAction_notifications_translations as TranslationObj } from \"types/apolloGenerated/productById\";\r\nimport {\r\n removeTranslation,\r\n removeTranslationVariables\r\n} from \"types/apolloGenerated/removeTranslation\";\r\nimport {\r\n updateTranslation,\r\n updateTranslationVariables\r\n} from \"types/apolloGenerated/updateTranslation\"\r\nimport {\r\n addTranslationVariables as addVariables,\r\n addTranslation as addTranslat\r\n} from \"types/apolloGenerated/addTranslation\";\r\n\r\nconst useStyles = makeStyles(() => {\r\n return createStyles({\r\n languageContainer: {\r\n width: \"250px\",\r\n margin: \"0px 40px 20px 30px\"\r\n },\r\n titleContainer: {\r\n width: \"200px\",\r\n margin: \"0px 40px 20px 0px\"\r\n },\r\n bodyContainer: {\r\n width: \"450px\",\r\n margin: \"0px 40px 20px 0px\"\r\n },\r\n updateSpinner: {\r\n margin: \"20px 0 0 20px\",\r\n width: \"63px\"\r\n },\r\n removeButton: {\r\n marginTop: \"17px\",\r\n height: \"35px\",\r\n marginLeft: \"20px\"\r\n },\r\n addButton: {\r\n marginTop: \"15px\",\r\n height: \"36px\"\r\n }\r\n });\r\n});\r\n\r\nconst REMOVE_TRANSLATION = gql`\r\n mutation removeTranslation($productTranslationId: Int!) {\r\n userAction {\r\n deleteProductUserActionNotificationTranslation(\r\n productUserActionNotificationTranslationId: $productTranslationId\r\n )\r\n }\r\n }\r\n`;\r\n\r\nconst ADD_TRANSLATION = gql`\r\n mutation addTranslation(\r\n $productTranslation: ProductUserActionNotificationTranslationInsert!\r\n ) {\r\n userAction {\r\n createProductUserActionNotificationTranslation(\r\n productUserActionNotificationTranslation: $productTranslation\r\n ) {\r\n id\r\n }\r\n }\r\n }\r\n`;\r\n\r\nconst UPDATE_TRANSLATION = gql`\r\nmutation updateTranslation(\r\n $productTranslation: ProductUserActionNotificationTranslationUpdate!\r\n) {\r\n userAction{\r\n updateProductUserActionNotificationTranslation(productUserActionNotificationTranslation: $productTranslation){\r\n id\r\n }\r\n }\r\n}\r\n`\r\ninterface TranslationProps extends LocalizeContextProps {\r\n remove: (index: number) => void;\r\n index: number;\r\n translationObject: TranslationObj;\r\n change: (index: number, notification: TranslationObj) => void,\r\n add: (newTranslat: TranslationObj) => void\r\n notificationId: number,\r\n addOnly: boolean,\r\n setError: (error: string) => void,\r\n allTranslations: (TranslationObj | null)[],\r\n translate: TranslateFunction,\r\n}\r\n\r\nconst Translation: React.FC = ({\r\n translationObject,\r\n change,\r\n index,\r\n remove,\r\n notificationId,\r\n addOnly,\r\n add,\r\n setError,\r\n allTranslations,\r\n translate,\r\n}) => {\r\n const classes = useStyles();\r\n const [languageAlert, setLanguageAlert] = React.useState({ error: false, message: \"\" })\r\n const [titleAlert, setTitleAlert] = React.useState({ error: false, message: \"\" })\r\n const [bodyAlert, setBodyAlert] = React.useState({ error: false, message: \"\" })\r\n\r\n const langs: string[] = [\"EN\", \"DE\", \"CS\", \"DA\", \"ES\", \"FI\", \"FR\", \"HU\", \"IT\", \"NL\", \"NO\", \"PL\", \"RU\", \"SE\", \"UA\", \"ZH\"] //[\"EN\", \"DE\", \"FR\"]\r\n const langsLowercase: string[] = []\r\n const langTranslations: string[] = []\r\n\r\n langs.forEach(language => {\r\n langsLowercase.push(language.toLowerCase());\r\n langTranslations.push(translate(`languages.${language}`) as string)\r\n });\r\n\r\n const [\r\n removeTranslationMutation,\r\n { loading: removeTranslationLoading }\r\n ] = useMutation(\r\n REMOVE_TRANSLATION,\r\n {\r\n onCompleted: () => {\r\n setError(\"\")\r\n remove(index);\r\n },\r\n onError: error => {\r\n setError(\"Unable to remove translation - \" + error.message)\r\n }\r\n }\r\n );\r\n\r\n const [\r\n addTranslationMutation,\r\n { loading: addTranslationLoading }\r\n ] = useMutation(ADD_TRANSLATION, {\r\n onCompleted: data => {\r\n setError(\"\")\r\n if (data.userAction?.createProductUserActionNotificationTranslation?.id) {\r\n add({\r\n __typename: \"ProductUserActionNotificationTranslation\",\r\n id: data.userAction.createProductUserActionNotificationTranslation.id,\r\n language: translationObject.language,\r\n title: translationObject.title,\r\n body: translationObject.body\r\n }\r\n\r\n );\r\n }\r\n },\r\n onError: error => {\r\n setError(\"Unable to add translation - \" + error.message)\r\n }\r\n });\r\n\r\n const [\r\n updateTranslationMutation,\r\n { loading: updateTranslationLoading }\r\n ] = useMutation(\r\n UPDATE_TRANSLATION,\r\n {\r\n onCompleted: () => {\r\n setError(\"\")\r\n change(index, {\r\n id: translationObject.id,\r\n language: translationObject.language,\r\n title: translationObject.title,\r\n body: translationObject.body,\r\n __typename: \"ProductUserActionNotificationTranslation\"\r\n });\r\n },\r\n onError: error => {\r\n setError(\"Unable to update translation - \" + error.message)\r\n }\r\n\r\n }\r\n );\r\n\r\n\r\n\r\n const validationCheck = () => {\r\n let errorFound = false\r\n const lang = translationObject.language\r\n for (let i = 0; i < allTranslations.length; i++) {\r\n if (i !== index) {\r\n if (lang === allTranslations[i]?.language) {\r\n setLanguageAlert({ error: true, message: translate(\"pages.product.helper.language\") as string })\r\n errorFound = true\r\n }\r\n }\r\n }\r\n if (lang === translate(\"pages.product.chooseLanguage\") as string || lang === \"\") {\r\n setLanguageAlert({ error: true, message: translate(\"pages.product.helper.language\") as string })\r\n errorFound = true\r\n }\r\n if (!errorFound) {\r\n setLanguageAlert({ error: false, message: \"\" })\r\n }\r\n if (translationObject.title === \"\") {\r\n setTitleAlert({ error: true, message: translate(\"pages.product.helper.title\") as string })\r\n errorFound = true\r\n } else {\r\n setTitleAlert({ error: false, message: \"\" })\r\n }\r\n if (translationObject.body === \"\") {\r\n setBodyAlert({ error: true, message: translate(\"pages.product.helper.body\") as string })\r\n errorFound = true\r\n } else {\r\n setBodyAlert({ error: false, message: \"\" })\r\n }\r\n return errorFound\r\n }\r\n\r\n\r\n return (\r\n \r\n {({ translate }) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n if (value !== null) {\r\n change(\r\n index, {\r\n ...translationObject,\r\n language: value\r\n }\r\n )\r\n }\r\n }}\r\n getOptionLabel={(option: string) => option}\r\n style={{ minWidth: \"250px\" }}\r\n renderInput={params => (\r\n {\r\n if (e.target.value === \"\") {\r\n change(index, {\r\n ...translationObject,\r\n language: translate(\"pages.product.chooseLanguage\") as string\r\n })\r\n }\r\n }}\r\n />\r\n )}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n {\r\n change(index, {\r\n ...translationObject,\r\n title: e.target.value\r\n })\r\n }}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n {\r\n change(index, {\r\n ...translationObject,\r\n body: e.target.value\r\n })\r\n }}\r\n />\r\n \r\n {!addOnly ? !updateTranslationLoading ? (\r\n \r\n \r\n \r\n ) : (\r\n \r\n \r\n \r\n ) : }\r\n {!addOnly ? !removeTranslationLoading ? (\r\n \r\n \r\n \r\n ) : (\r\n \r\n \r\n \r\n ) : }\r\n {addOnly ? !addTranslationLoading ? (\r\n {\r\n if (validationCheck()) {\r\n return\r\n }\r\n addTranslationMutation({\r\n variables: {\r\n productTranslation: {\r\n language: translationObject.language,\r\n title: translationObject.title ?? \"\",\r\n body: translationObject.body,\r\n productUserActionNotificationId: notificationId\r\n }\r\n }\r\n })\r\n }}\r\n variant=\"outlined\"\r\n >\r\n \r\n \r\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 withLocalize(Translation)","import React, { Fragment } from \"react\";\r\nimport { Translate } from \"react-localize-redux\";\r\nimport { Autocomplete, Alert } from '@material-ui/lab';\r\nimport { TranslateFunction, withLocalize, LocalizeContextProps } from \"react-localize-redux\";\r\nimport { createStyles, makeStyles } from \"@material-ui/core/styles\";\r\nimport { useMutation } from \"@apollo/react-hooks\";\r\nimport gql from \"graphql-tag\";\r\nimport { QUERY_PRODUCTS_GRID } from \"Pages/Product/ProductsGrid\"\r\nimport {\r\n Box,\r\n TextField,\r\n Button,\r\n Select,\r\n MenuItem,\r\n Dialog,\r\n CircularProgress\r\n} from \"@material-ui/core\";\r\nimport { Set } from \"immutable\"\r\n\r\nimport Translation from \"./Translation\";\r\nimport { mailTemplateGroup as queryData } from \"types/apolloGenerated/mailTemplateGroup\"\r\nimport {\r\n productById_product_productInformation_productUserAction_notifications as NotificationObj,\r\n productById_product_productInformation_productUserAction_notifications_translations as TranslationObj\r\n} from \"types/apolloGenerated/productById\";\r\nimport { UserActionState } from \"types/apolloGenerated/globalTypes\";\r\nimport {\r\n removeNotificationVariables as removeVariables\r\n} from \"types/apolloGenerated/removeNotification\";\r\nimport {\r\n updateNotification as update,\r\n updateNotificationVariables as updateVariables\r\n} from \"types/apolloGenerated/updateNotification\";\r\nimport {\r\n addNotificationVariables as addNotifVariables,\r\n addNotification as addNotif\r\n} from \"types/apolloGenerated/addNotification\";\r\n\r\nconst useStyles = makeStyles(() => {\r\n return createStyles({\r\n mailContainer: {\r\n width: \"35%\",\r\n margin: \"0px 20px 20px 20px\"\r\n },\r\n thresholdContainer: {\r\n width: \"6%\",\r\n margin: \"0px 20px 20px 0px\"\r\n },\r\n stateContainer: {\r\n width: \"12%\",\r\n margin: \"0px 20px 20px 0px\"\r\n },\r\n updateSpinner: {\r\n margin: \"12px 20px 20px 0px\",\r\n height: \"40px\",\r\n width: \"85px\",\r\n justifyContent: \"center\",\r\n display: \"flex\"\r\n },\r\n editButton: {\r\n margin: \"12px 20px 20px 0px\",\r\n minWidth: \"170px\",\r\n height: \"40px\"\r\n },\r\n removeSpinner: {\r\n margin: \"12px 40px 20px 0px\",\r\n height: \"40px\",\r\n width: \"90px\",\r\n justifyContent: \"center\",\r\n display: \"flex\"\r\n },\r\n translateTitle: {\r\n fontWeight: \"bold\",\r\n fontSize: \"20px\",\r\n margin: \"30px 0px 30px 30px\"\r\n },\r\n doneButtonContainer: {\r\n marginLeft: \"30px\",\r\n position: \"absolute\",\r\n bottom: \"0\",\r\n marginBottom: \"30px\"\r\n }\r\n });\r\n});\r\n\r\nconst REMOVE_NOTIFICATION = gql`\r\n mutation removeNotification($productUserActionNotificationId: Int!) {\r\n userAction {\r\n deleteProductUserActionNotification(\r\n productUserActionNotificationId: $productUserActionNotificationId\r\n )\r\n }\r\n }\r\n`;\r\n\r\nconst UPDATE_NOTIFICATION = gql`\r\n mutation updateNotification(\r\n $productNotification: ProductUserActionNotificationUpdate!\r\n ) {\r\n userAction {\r\n updateProductUserActionNotification(\r\n productUserActionNotification: $productNotification\r\n ) {\r\n id\r\n }\r\n }\r\n }\r\n`;\r\n\r\nconst ADD_NOTIFICATION = gql`\r\n mutation addNotification(\r\n $productNotification: ProductUserActionNotificationInsert!\r\n ) {\r\n userAction {\r\n createProductUserActionNotification(\r\n productUserActionNotification: $productNotification\r\n ) {\r\n id\r\n productUserActionId\r\n }\r\n }\r\n }\r\n`;\r\n\r\ninterface NotificationProps extends LocalizeContextProps {\r\n remove: (index: number) => void;\r\n change: (index: number, notification: NotificationObj) => void;\r\n add: (newNotif: NotificationObj) => void,\r\n index: number;\r\n notificationObject: NotificationObj;\r\n userActionId: number;\r\n mailData: queryData | undefined,\r\n translate: TranslateFunction,\r\n addOnly: boolean,\r\n setError: (message: string) => void\r\n}\r\n\r\nconst Notification: React.FC = ({\r\n remove,\r\n index,\r\n notificationObject,\r\n change,\r\n userActionId,\r\n mailData,\r\n translate,\r\n addOnly,\r\n add,\r\n setError\r\n}) => {\r\n const dummyTranslation: TranslationObj = {\r\n __typename: \"ProductUserActionNotificationTranslation\",\r\n id: -1,\r\n language: translate(\"pages.product.chooseLanguage\") as string,\r\n body: \"\",\r\n title: \"\"\r\n }\r\n\r\n const classes = useStyles();\r\n const [mailAlert, setMailAlert] = React.useState({ error: false, message: \"\" })\r\n const [translations, setTranslations] = React.useState(\r\n notificationObject?.translations\r\n );\r\n const [dummyTranslat, setDummyTranslation] = React.useState(dummyTranslation)\r\n const [open, setOpen] = React.useState(false);\r\n const [translateError, setTranslateError] = React.useState(\"\")\r\n\r\n let userActionStateArray: string[] = [];\r\n for (let userActionState in UserActionState) {\r\n userActionStateArray.push(userActionState);\r\n }\r\n\r\n const mailTemplateValues = mailData?.sendGridTemplates?.results ?? []\r\n const uniqueMailTemplateValues =\r\n Set(mailTemplateValues\r\n .map(value => value?.name ?? \"\"))\r\n .toArray()\r\n .filter(str => !!str)\r\n .sort()\r\n\r\n const [\r\n removeNotification,\r\n { loading: removeNotificationMutation }\r\n ] = useMutation(\r\n REMOVE_NOTIFICATION,\r\n {\r\n onCompleted: () => {\r\n\r\n remove(index);\r\n },\r\n onError: error => {\r\n setError(\"Unable to remove notification - \" + error.message)\r\n }\r\n }\r\n );\r\n\r\n const [\r\n addNotificationMutation,\r\n { loading: addNotificationLoading }\r\n ] = useMutation(ADD_NOTIFICATION, {\r\n onCompleted: data => {\r\n if (data.userAction?.createProductUserActionNotification?.id) {\r\n add({\r\n id: data.userAction.createProductUserActionNotification.id,\r\n __typename: \"ProductUserActionNotification\",\r\n threshold: notificationObject.threshold,\r\n translations: notificationObject.translations,\r\n state: notificationObject.state,\r\n mailTemplateName: notificationObject.mailTemplateName\r\n })\r\n }\r\n },\r\n onError: error => {\r\n setError(\"Unable to add notification - \" + error.message)\r\n },\r\n refetchQueries: [{\r\n query: QUERY_PRODUCTS_GRID, variables: { pageSize: 0 }\r\n }]\r\n });\r\n\r\n const [\r\n updateNotification,\r\n { loading: updateNotificationMutation }\r\n ] = useMutation(\r\n UPDATE_NOTIFICATION,\r\n {\r\n onCompleted: () => {\r\n change(index, {\r\n __typename: \"ProductUserActionNotification\",\r\n id: notificationObject.id,\r\n mailTemplateName: notificationObject.mailTemplateName,\r\n state: notificationObject.state,\r\n threshold: notificationObject.threshold,\r\n translations: notificationObject.translations\r\n });\r\n },\r\n onError: error => {\r\n setError(\"Unable to update notification - \" + error.message)\r\n }\r\n }\r\n );\r\n\r\n const addTranslation = (newTranslat: TranslationObj) => {\r\n if (translations) {\r\n\r\n }\r\n const translatToAdd: TranslationObj = {\r\n __typename: \"ProductUserActionNotificationTranslation\",\r\n language: newTranslat.language,\r\n title: newTranslat.title,\r\n body: newTranslat.body,\r\n id: newTranslat.id\r\n };\r\n if (translations) {\r\n setTranslations([...translations.slice(), translatToAdd]);\r\n setDummyTranslation(dummyTranslation)\r\n }\r\n };\r\n\r\n const updateTranslation = (index: number, translation: TranslationObj) => {\r\n if (translation.id === -1) {\r\n const latestValue = Object.assign({}, translation);\r\n setDummyTranslation(latestValue)\r\n return;\r\n }\r\n if (translations) {\r\n setTranslations(\r\n translations.map((currentObj, idx) =>\r\n idx === index ? translation : currentObj\r\n )\r\n );\r\n }\r\n };\r\n\r\n const removeTranslation = (index: number) => {\r\n if (translations) {\r\n setTranslations([\r\n ...translations.slice(0, index),\r\n ...translations.slice(index + 1)\r\n ]);\r\n }\r\n };\r\n\r\n const getSeverity = (value: UserActionState | null) => {\r\n let returnValue = 0\r\n userActionStateArray.forEach((state, idx) => {\r\n if (value === state) {\r\n returnValue = idx;\r\n }\r\n });\r\n return returnValue\r\n }\r\n\r\n return (\r\n \r\n {({ translate }) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n option}\r\n style={{ minWidth: \"360px\" }}\r\n renderInput={params => (\r\n {\r\n if (e.target.value === \"\") {\r\n change(index, {\r\n ...notificationObject,\r\n mailTemplateName: translate(\"pages.product.chooseMailTemplate\") as string\r\n })\r\n }\r\n }}\r\n />\r\n )}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {userActionStateArray.map((name, idx) => (\r\n \r\n {name}\r\n \r\n ))}\r\n \r\n \r\n {!addOnly ? !updateNotificationMutation ? (\r\n \r\n \r\n \r\n ) : (\r\n
    \r\n \r\n
    \r\n ) : }\r\n {!addOnly && \r\n \r\n }\r\n {!addOnly ? !removeNotificationMutation ? (\r\n \r\n \r\n \r\n ) : (\r\n
    \r\n \r\n
    \r\n ) : }\r\n {addOnly ? !addNotificationLoading ? (\r\n \r\n \r\n \r\n ) : (\r\n
    \r\n \r\n
    \r\n ) : \r\n }\r\n \r\n \r\n \r\n \r\n \r\n \r\n {translations &&\r\n translations.map((translation, idx) => {\r\n if (!translation) {\r\n return ;\r\n }\r\n return (\r\n \r\n );\r\n })}\r\n \r\n {translateError !== \"\" ? {translateError} : }\r\n \r\n \r\n \r\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 withLocalize(Notification);\r\n","import gql from \"graphql-tag\";\r\nimport { DataProxy } from 'apollo-cache';\r\n\r\nimport cloneDeep from \"clone-deep\";\r\n\r\nimport { productById, productByIdVariables } from \"types/apolloGenerated/productById\";\r\n\r\nexport const updateProductByIdCache = (cache: DataProxy, id: number, modify: (p: productById) => productById) => {\r\n try {\r\n const variables: productByIdVariables = {\r\n id: id\r\n };\r\n\r\n const cachedProduct = cloneDeep(cache.readQuery({\r\n query: QUERY_PRODUCT_BY_ID,\r\n variables: variables,\r\n }));\r\n\r\n if (cachedProduct) {\r\n cache.writeQuery({\r\n query: QUERY_PRODUCT_BY_ID,\r\n variables: variables,\r\n data: modify(cachedProduct)\r\n });\r\n } else {\r\n console.log('Trying to update CACHE, but product not found');\r\n }\r\n } catch (e) { }\r\n}\r\n\r\n\r\nexport const QUERY_PRODUCT_BY_ID = gql`\r\nquery productById($id: Int!) {\r\n product(id: $id){\r\n productInformation {\r\n\t\t\tgTIN\r\n name\r\n productType\r\n bonus\r\n itemNumber\r\n id\r\n deviceType\r\n deviceVersion\r\n productOwnerEmail\r\n lastEdited\r\n consumableProducts{\r\n id\r\n name\r\n }\r\n displayName\r\n businessUnit\r\n isArchived\r\n isCodelessProductRegistrationEnabled\r\n isProductRegistrationEnabled\r\n registrationMailTemplateName\r\n invoiceUploadAllowed\r\n registrationBonus{\r\n bonusId\r\n }\r\n serviceFeePearls\r\n productGroup {\r\n description\r\n displayName\r\n id\r\n name\r\n }\r\n productUserAction {\r\n id\r\n userActionClass\r\n notifications {\r\n id\r\n mailTemplateName\r\n state\r\n threshold\r\n translations {\r\n id\r\n body\r\n title\r\n language\r\n }\r\n }\r\n }\r\n }\r\n }\r\n enabledCountries {\r\n countries\r\n }\r\n}\r\n`;\r\n","import React, { Fragment } from \"react\";\r\nimport { Translate } from \"react-localize-redux\";\r\nimport { Box, CircularProgress } from \"@material-ui/core\";\r\nimport { Alert } from '@material-ui/lab';\r\nimport { createStyles, makeStyles } from \"@material-ui/core/styles\";\r\nimport { TranslateFunction, withLocalize, LocalizeContextProps } from \"react-localize-redux\";\r\nimport { DeleteForever, KeyboardArrowDown, KeyboardArrowUp } from \"@material-ui/icons\";\r\nimport { useMutation, useQuery } from \"@apollo/react-hooks\";\r\nimport gql from \"graphql-tag\";\r\n\r\n\r\nimport Notification from \"./Notification\";\r\nimport Expander from \"components/common/Expander\";\r\nimport MAIL_QUERY from \"commonQueries/mailTemplate\"\r\nimport { productById_product_productInformation_productUserAction_notifications as NotificationObj } from \"types/apolloGenerated/productById\";\r\nimport { UserActionClass, UserActionState } from \"types/apolloGenerated/globalTypes\";\r\nimport { removeUserActionVariables as removeVariables, removeUserAction as remove } from \"types/apolloGenerated/removeUserAction\";\r\nimport { mailTemplateGroup as queryData } from \"types/apolloGenerated/mailTemplateGroup\"\r\nimport { updateProductByIdCache } from \"commonQueries/product\"\r\nimport { QUERY_PRODUCTS_GRID } from \"Pages/Product/ProductsGrid\"\r\n\r\nconst useStyles = makeStyles(() => {\r\n return createStyles({\r\n container: {\r\n margin: \"0 0 15px 30px\",\r\n borderRadius: \"3px\",\r\n border: \"solid #666B6E 1px\"\r\n },\r\n titleOuterContainer: {\r\n fontSize: \"20px\",\r\n padding: \"10px\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n borderRadius: \"3px\",\r\n justifyContent: \"space-between\"\r\n },\r\n titleInnerContainer: {\r\n display: \"flex\",\r\n alignItems: \"center\"\r\n },\r\n removeButtonContainer: {\r\n marginRight: \"20px\",\r\n display: \"flex\"\r\n },\r\n hideButton: {\r\n width: \"30px\",\r\n height: \"35px\",\r\n paddingTop: \"6px\",\r\n cursor: \"pointer\"\r\n },\r\n mousePointer: {\r\n cursor: \"pointer\"\r\n }\r\n });\r\n});\r\n\r\nconst REMOVE_USER_ACTION = gql`\r\n mutation removeUserAction($productUserActionId: Int!) {\r\n userAction {\r\n deleteProductUserAction(productUserActionId: $productUserActionId)\r\n }\r\n }\r\n`;\r\n\r\ninterface NotificationGroupProps extends LocalizeContextProps {\r\n idx: number\r\n currentNotifs: (NotificationObj | null)[] | null\r\n title: UserActionClass | null\r\n userActionId: number\r\n translate: TranslateFunction\r\n productId: number\r\n}\r\n\r\nconst NotificationGroup: React.FC = ({ idx, currentNotifs, title, userActionId, translate, productId }) => {\r\n const dummyNotification: NotificationObj = {\r\n __typename: \"ProductUserActionNotification\",\r\n mailTemplateName: translate(\"pages.product.chooseMailTemplate\") as string,\r\n state: UserActionState.WARNING,\r\n threshold: 0,\r\n id: -1,\r\n translations: []\r\n }\r\n const classes = useStyles();\r\n const [notifications, setNotifications] = React.useState(currentNotifs);\r\n const [hidden, setHidden] = React.useState(true);\r\n const { data: mailData } = useQuery(MAIL_QUERY)\r\n const [error, setError] = React.useState(\"\")\r\n const [notifError, setNotifError] = React.useState(\"\")\r\n const [dummyNotif, setDummyNotif] = React.useState(dummyNotification)\r\n\r\n const [removeUserAction, { loading: removeActionLoading }] = useMutation(REMOVE_USER_ACTION, {\r\n update: function (cache) {\r\n updateProductByIdCache(cache, productId, p => {\r\n if (p.product?.productInformation?.productUserAction) {\r\n p.product.productInformation.productUserAction = p.product.productInformation.productUserAction.filter(userAction => {\r\n return userAction?.id !== userActionId;\r\n });\r\n }\r\n return p;\r\n });\r\n },\r\n onError: error => {\r\n setError(\"Unable to remove user action - \" + error.message)\r\n },\r\n refetchQueries: [{\r\n query: QUERY_PRODUCTS_GRID, variables: { pageSize: 0 }\r\n }]\r\n });\r\n\r\n const addNotification = (newNotif: NotificationObj) => {\r\n const notifToAdd: NotificationObj = {\r\n __typename: \"ProductUserActionNotification\",\r\n mailTemplateName: newNotif.mailTemplateName,\r\n threshold: newNotif.threshold,\r\n state: newNotif.state,\r\n translations: newNotif.translations,\r\n id: newNotif.id\r\n };\r\n if (notifications) {\r\n setNotifications([...notifications.slice(), notifToAdd]);\r\n setDummyNotif(dummyNotification)\r\n }\r\n };\r\n\r\n const updateNotification = (index: number, notification: NotificationObj) => {\r\n if (notification.id === -1) {\r\n const latestValue = Object.assign({}, notification);\r\n setDummyNotif(latestValue)\r\n return;\r\n }\r\n if (notifications) {\r\n setNotifications(\r\n notifications.map((currentObj, idx) =>\r\n idx === index ? notification : currentObj\r\n )\r\n );\r\n }\r\n };\r\n\r\n const removeNotification = (index: number) => {\r\n if (notifications) {\r\n setNotifications([\r\n ...notifications.slice(0, index),\r\n ...notifications.slice(index + 1)\r\n ]);\r\n }\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {!removeActionLoading ? (\r\n {\r\n setError(\"\")\r\n removeUserAction({\r\n variables: { productUserActionId: userActionId }\r\n })\r\n }\r\n }\r\n fontSize=\"large\"\r\n className={classes.mousePointer}\r\n />\r\n ) : (\r\n \r\n )}\r\n \r\n
    setHidden(!hidden)} className={classes.mousePointer}>
    \r\n
    \r\n setHidden(!hidden)}\r\n className={classes.hideButton}\r\n >\r\n {hidden ? : }\r\n
    \r\n
    \r\n