{"version":3,"sources":["selectors/uiSelectors.ts","assets/icons/Dashboard.svg","assets/icons/Chart.svg","components/Overview/Icons.tsx","helpers/chartUtils.ts","helpers/navigation.ts","actions/_shared/handleErrorAction.ts","actions/userApiActions.ts","actions/schedulerApiActions.ts","reducers/_sharedLogic/schedulerConversions.ts","globalStyle.ts","reducers/_sharedLogic/userScopeTreeConversions.ts","actions/_shared/realTimeHeaders.ts","services/auth-service.ts","services/AuthProvider.tsx","helpers/sorting.ts","reducers/ui/userFormUiReducer.ts","reducers/ui/userModalUiReducer.ts","reducers/ui/userTableUiReducer.ts","reducers/ui/userSearchUiReducer.ts","reducers/ui/notificationQueueUiReducer.ts","reducers/ui/schedulerModalUiReducer.ts","reducers/ui/schedulerFormUiReducer.ts","reducers/ui/logoutTimerUiReducer.ts","reducers/ui/schedulerToggleUiReducer.ts","reducers/ui/schedulerPreviewUiReducer.ts","reducers/ui/filterModalUiReducer.ts","reducers/ui/systemAnalysisViewsReducer.ts","reducers/ui/index.ts","reducers/jobAnalysisReducer.ts","components/_common/TreeSelect/treeHelpers.ts","actions/filterCalendarUiAction.ts","selectors/propsSelectors.ts","actions/apiManagementActions.ts","assets/icons/BackArrow.svg","models/GoalsData.ts","helpers/conversions.ts","assets/icons/timeLineFlagIcon.svg","reducers/isEverReportedReducer.ts","actions/userSettingsActions.ts","actions/goalApiActions.ts","actions/reportUiActions.ts","actions/scopeApiActions.ts","actions/serviceTicketActions.ts","components/Overview/Charts/AxixTiksForCustomTimeframe.tsx","actions/reportApiActions.ts","helpers/apiCoversion.ts","helpers/date.ts","assets/icons/EmptyStateTankIcon.svg","assets/icons/EmptyStateEventIcon.svg","assets/icons/NothingWasSelected.svg","assets/icons/EmptyState.svg","assets/icons/printer-not-reported-icon.svg","components/_common/EmptyState.tsx","assets/icons/T-shirt.svg","assets/icons/fabricIconNoColor.svg","actions/machineConfigActions.ts","actions/_shared/utils.ts","reducers/_sharedLogic/userConversions.ts","reducers/ui/captchaReducer.ts","actions/_shared/apiAction.ts","helpers/jobAnalysisUtils.tsx","reducers/systemAnalysisReducer.ts","components/SystemAnalysis/SystemsAnalysisStyles.tsx","models/ReportData.ts","services/errors-handler-service.ts","reducers/ui/overviewUiReducer.ts","assets/icons/newSpinner.gif","assets/icons/FunnelIcon.svg","assets/icons/FilterDot.svg","assets/icons/dislikeWithCircle.svg","assets/icons/likeWithCircle.svg","assets/icons/speed.svg","actions/reportFilterActions.ts","actions/index.ts","contracts/constants.ts","assets/icons/ArrowUp.svg","components/Overview/Card.tsx","components/Overview/TotatImpressionCardMobile.tsx","assets/icons/TopCardsArrowUp.svg","components/Overview/ProductionRateCardMobile.tsx","components/Overview/ProductivityCardMobile.tsx","components/Overview/AvailabilityCardMobile.tsx","assets/icons/TopCardsArrowDown.svg","components/Overview/TopCards/DesktopTotalImpressionCard.tsx","components/Overview/TopCards/DesktopAvarageAvailabilityCard.tsx","components/Overview/TopCards/DesktopAvarageProductionRateCard.tsx","components/Overview/TopCards/DesktopProductivityCard.tsx","components/Overview/TopCards/DesktopDtgApolloTopCards.tsx","components/Overview/TopCards/DesktopDtfTopCards.tsx","components/Overview/TopCards/DesktopTopCards.tsx","components/Overview/TopCards/TopCards.tsx","components/Overview/TopCards/TopCardsContainer.tsx","reducers/systemPageReducer.ts","reducers/jobSummaryReducer.ts","helpers/timelineUtils.ts","config/configsPerEnv/config.dev.ts","config/configsPerEnv/config.tst.ts","config/configsPerEnv/config.tstDebug.ts","config/configsPerEnv/config.stg.ts","config/configsPerEnv/config.prod.ts","config/configsPerEnv/config.local.ts","config/configsPerEnv/config.dvps.ts","config/configsPerEnv/config.mobileProdIos.ts","config/configsPerEnv/config.mobileProdAndroid.ts","config/configsPerEnv/config.MobileDevIos.ts","config/configsPerEnv/config.mobileDevAndroid.ts","config/configsPerEnv/config.auto.ts","config/config.ts","assets/icons/overviewLegendIcon.svg","assets/icons/utilization.svg","assets/icons/SpeedForMobileToggler.svg","components/Overview/Charts/DesktopToggleChart.tsx","assets/icons/ProductivityForMobileToggler.svg","components/Overview/Charts/MobileToggleChart.tsx","components/Overview/Charts/ToggleChartContainer.tsx","components/Overview/Charts/ToggleChart.tsx","components/Overview/OverviewMobile.tsx","logger/logger.ts","assets/icons/CloseIconDownloadInkPerJob.svg","components/_common/Funnel.tsx","components/Overview/Styles.tsx","reducers/ui/machineFilterReducer.ts","models/Permissions.ts","KonnectAnalytics/konnectAnalytics.ts","actions/userUiActions.ts","reducers/ui/systemGroupUiReducer.ts","selectors/filterSelectors.ts","components/Overview/Charts/DesktopProductionChart.tsx","components/Overview/Charts/MobileProductionChart.tsx","components/Overview/Charts/ProductionChart.tsx","components/Overview/Charts/MobileSpeedChart.tsx","components/Overview/Charts/DesktopSpeedChart.tsx","components/Overview/Charts/SpeedChart.tsx","components/Overview/Charts/DesktopAvailabilityChart.tsx","components/Overview/Charts/MobileAvailabilityChart.tsx","components/Overview/Charts/AvailabilityChart.tsx","reducers/reports/filterStateReducer.ts","reducers/appUserReducer.ts","reducers/reports/filterDataReducer.ts","helpers/filter-data.ts","helpers/overviewUtils.ts","actions/overviewActions.ts","reducers/overviewReducer.ts","selectors/entitiesSelectors.ts","models/Scheduler.ts","actions/systemPageActions.ts","actions/jobAnalysisActions.ts","reducers/userSettingsReducer.ts","actions/uiActions.ts","store/storeTypes.ts","actions/systemAnalysisActions.ts","actions/schedulerUiActions.ts","assets/icons/AchievementsImage.svg","actions/appUserActions.ts","components/_common/Notifier.tsx","theme.ts","reducers/apiReducer.ts","helpers/envGetters.ts","reducers/apiStateReducer.ts","reducers/entities/userEntityReducer.ts","reducers/entities/customerEntityReducer.ts","reducers/entities/siteEntityReducer.ts","reducers/entities/systemEntityReducer.ts","reducers/entities/goalsEntityReducer.ts","reducers/entities/schedulerEntityReducer.ts","reducers/entities/index.ts","reducers/reports/activeReportReducer.ts","reducers/reports/index.ts","reducers/serviceTicketReducer.ts","reducers/machineConfigReducer.ts","reducers/apiManagementReducer.ts","reducers/index.ts","store/store.ts","services/languages/index.ts","services/i18n.ts","components/_common/LinearProgress.tsx","components/Welcome/WelcomeContainer.tsx","components/Welcome/Welcome.tsx","components/AuthCallback/AuthCallback.tsx","components/_common/PageContainer.tsx","components/_common/PageHeaderUi.tsx","components/_common/Table.tsx","components/Avatar/MaskSmall.tsx","components/Avatar/MaskBig.tsx","components/Avatar/Avatar.tsx","components/_common/NavLink.tsx","components/_common/PopupMenuItem.tsx","components/_common/PopupMenu.tsx","components/_common/ModalPrompt.tsx","components/UsersTable/UsersTableRow.tsx","components/UsersTable/UsersTableRowContainer.tsx","components/UsersTable/UsersTable.tsx","components/UsersTable/UsersTableContainer.tsx","components/_common/Modal.tsx","helpers/validationRules.ts","components/_common/TextField.tsx","components/_common/TreeSelect/TreeSelect.tsx","components/_common/Switch.tsx","components/_common/Button.tsx","components/_common/ButtonOk.tsx","components/_common/ButtonCancel.tsx","components/_common/ButtonSpinner.tsx","components/_common/FormRow.tsx","components/_common/Grid.tsx","components/_common/PopupButtons.tsx","components/UserForm/UserForm.tsx","components/UserForm/UserFormContainer.tsx","components/UserAvatarUpload/UserAvatarUpload.tsx","components/UserAvatarUpload/UserAvatarUploadContainer.tsx","components/UserModal/UserModalSuccess.tsx","selectors/apiSelectors.ts","components/UserModal/UserModalSuccessContainer.tsx","components/UserModal/UserModalLayout.tsx","components/UserModal/UserModalLayoutContainer.tsx","components/UserModal/UserModal.tsx","components/UserModal/UserModalContainer.tsx","components/_common/ButtonHeader.tsx","components/_common/Header1.tsx","components/_common/SearchBar.tsx","assets/icons/download.svg","components/AccountManagement/AccountManagement.tsx","components/AccountManagement/AccountManagementContainer.tsx","assets/icons/warning.svg","assets/icons/success.svg","assets/icons/loader.svg","components/ApiManagement/ApiManagement.tsx","components/ApiManagement/ApiManagementContainer.tsx","components/Goals/GoalCalenderIndicator.tsx","assets/icons/Search.svg","components/Goals/GoalItem.tsx","components/Goals/GoalItemContainer.tsx","components/Goals/Goals.tsx","components/Goals/GoalsContainer.ts","helpers/empty-state.ts","assets/icons/CheckedIcon.svg","components/FilterSystemsPopUpMenu/FilterSearcher.tsx","components/FilterSystemsPopUpMenu/FilterSearcherContainer.ts","assets/icons/HalfCheckedIcon.svg","assets/icons/FilterUnfoldIcon.svg","assets/icons/FilterFoldIcon.svg","assets/icons/prevDateIcon.svg","components/FilterSystemsPopUpMenu/SystemRow.tsx","components/FilterSystemsPopUpMenu/ModelRow.tsx","components/FilterSystemsPopUpMenu/SiteRow.tsx","components/FilterSystemsPopUpMenu/AllBtn.tsx","components/FilterSystemsPopUpMenu/FilterSystemsPopUpMenu.tsx","selectors/filterStateDataSelectors.ts","components/FilterSystemsPopUpMenu/FilterSystemsPopUpMenuContainer.ts","components/PbiReportsPage/Slider.tsx","components/Overview/Overview.tsx","components/Overview/OverviewContainer.tsx","components/PbiFilter/PbiFilterSystemsMobile.tsx","components/PbiFilter/PbiFilterSystemsDesktop.tsx","components/PbiFilter/PbiFilterSystems.tsx","components/PbiFilter/PbiFilterSystemsContainer.tsx","components/FiltersCalendarModal/MobileDayPicker.tsx","components/_common/DateWeekPicker.tsx","components/_common/FilterArrLeft.tsx","components/_common/FilterArrows.tsx","components/_common/DateWeekPickerMobile.tsx","assets/icons/nextDateIcon.svg","assets/icons/newCalendarIcon.svg","assets/icons/DatePickerPrevDateIcon.svg","assets/icons/DatePickerNextDateIcon.svg","assets/icons/DatePickerCloseIcon.svg","assets/icons/timeSelectorArrowDown.svg","assets/icons/timeSelectorArrowUp.svg","assets/icons/DatePickerPopUpWarningIcon.svg","components/PbiFilter/TimeSelector.tsx","components/PbiFilter/DatePickerPopUpStyles.ts","assets/icons/DatePickerPopUpErrorIcon.svg","assets/icons/DownloadIncConsupmtionPerJobIcon.svg","components/PbiFilter/DatePickerPopUpErrorMessage.tsx","components/PbiFilter/DatePickerPopUp.tsx","components/PbiFilter/NewDatePicker.tsx","components/PbiFilter/PbiFilterWeeks.tsx","components/PbiFilter/PbiFilterWeeksContainer.tsx","components/FiltersCalendarModal/MobileWeekPicker.tsx","components/PbiFilter/PbiFilterMonths.tsx","components/PbiFilter/PbiFilterMonthsContainer.tsx","components/FiltersCalendarModal/MobileMonthPicker.tsx","components/PbiFilter/PbiFilterQuarters.tsx","components/PbiFilter/PbiFilterQuartersContainer.tsx","components/FiltersCalendarModal/MobileQuarterPicker.tsx","components/PbiFilter/PbiFilterYears.tsx","components/PbiFilter/PbiFilterYearsContainer.tsx","components/FiltersCalendarModal/MobileYearPicker.tsx","components/FiltersCalendarModal/MobileDatePicker.tsx","components/_common/FilterDatePicker.tsx","components/PbiFilter/PbiFilterDays.tsx","components/PbiFilter/PbiFilterDaysContainer.tsx","components/PbiFilter/PbiFilterCustom.tsx","components/PbiFilter/PbiFilterCustomContainer.tsx","components/PbiFilter/PbiFilterDate.tsx","components/PbiFilter/PbiFilterDateContainer.tsx","assets/icons/WarningIcon.svg","assets/icons/fabricIcon.svg","components/_common/Spinner.tsx","components/PbiFilter/InkConsuptionPerJobButton.tsx","assets/icons/tshirtIcon.svg","assets/icons/rocketIcon.svg","components/PbiFilter/PbiFilterSystemGroup.tsx","components/PbiFilter/PbiFilterSystemGroupContainer.tsx","assets/icons/MobilePbiFilterCloseIcon.svg","components/_common/Select.tsx","components/PbiFilter/TimeFrameSelector.tsx","components/PbiFilter/DesktopPbiFilterTimeFrame.tsx","assets/icons/ServiceTicketIcon.svg","components/PbiFilter/TimeframeButton.tsx","components/PbiFilter/MobilePbiFilterTimeFrame.tsx","components/PbiFilter/PbiFilterTimeframe.tsx","components/PbiFilter/PbiFilterTimeframeContainer.tsx","components/_common/Icons/CalendarIcon.tsx","components/FiltersCalendarModal/MobileFilterCalendarModal.tsx","components/FiltersCalendarModal/DesktopFilterCalendarModal.tsx","components/FiltersCalendarModal/FilterCalendarModal.tsx","components/FiltersCalendarModal/FilterCalendarModalContainer.tsx","components/_common/Desktop.tsx","assets/icons/kornitLogo.svg","components/PbiFilter/PbiFilter.tsx","components/PbiFilter/PbiFilterContainer.tsx","components/PbiReportsPage/PbiReportsPage.tsx","components/PbiReportsPage/PbiReportsPageContainer.tsx","assets/icons/syncIcon.svg","assets/icons/printerIcon.svg","components/_common/VersionLabelHeader.tsx","assets/icons/MobileDrawerLogo.svg","components/Shell/DesktopShellReportsNav.tsx","assets/icons/MobileDrawerOverviewIcon.svg","assets/icons/MobileDrawerSystemAnalysisIcon.svg","assets/icons/MobileDrawerJobAnalysisIcon.svg","assets/icons/BurgerMobile.svg","components/Shell/MobileShellReportsNavItem.tsx","components/Shell/MobileShellReportsNav.tsx","components/Shell/ShellReportsNav.tsx","components/Shell/ShellUserNav.tsx","components/Shell/ShellHeaderDesktop.tsx","assets/icons/KornitIconMobile.svg","components/Shell/BurgerMobile.tsx","assets/icons/KornitNameIcon.svg","assets/icons/PrinterIconMobile.svg","components/Shell/ShellHeaderMobile.tsx","components/Shell/ShellHeader.tsx","components/Shell/ShellHeaderContainer.tsx","components/ProtectedRoute/ProtectedRoute.tsx","components/_common/CookiesPrompt.tsx","assets/icons/NewLogo.svg","components/TermsModal/TermsModalStyles.ts","components/TermsModal/TermsModal.tsx","components/_common/Icons/Flags.tsx","components/_common/RadioLangGroup.tsx","components/_common/ToggleGroup.tsx","components/Settings/MobileSettings.tsx","components/Settings/Settings.tsx","components/Settings/SettingsContainer.tsx","components/_common/CircularSpinner.tsx","components/Scheduler/SchedulerTableRow.tsx","components/Scheduler/SchedulerTableRowContainer.tsx","components/Scheduler/SchedulerTable.tsx","components/Scheduler/SchedulerTableContainer.tsx","components/_common/ModalHeader.tsx","components/_common/ModalForm.tsx","components/_common/FilterTimePicker.tsx","components/_common/WeekdaysSelector.tsx","components/_common/RadiosField.tsx","components/SchedulerModal/SchedulerForm.tsx","components/SchedulerModal/SchedulerFormContainer.tsx","components/SchedulerModal/SchedulerModal.tsx","components/SchedulerModal/SchedulerModalContainer.tsx","components/SchedulerPreview/SchedulerPreview.tsx","components/SchedulerPreview/SchedulerPreviewContainer.tsx","components/Scheduler/Scheduler.tsx","components/Scheduler/SchedulerContainer.tsx","components/Shell/Shell.tsx","components/Shell/ShellContainer.tsx","assets/icons/Letter-unsubscribe.svg","assets/icons/mail-cover.svg","assets/icons/appIconSuperUserPage.svg","components/UnsubscribePage/Unsubscribe.tsx","components/UnsubscribePage/UnsubscribeContainer.ts","components/SuperUserLoginPage/SuperUserLoginPage.tsx","components/SuperUserLoginPage/SuperUserLoginPageContainer.ts","components/DocViewerPage/DocViewer.tsx","App.tsx","components/ErrorBoundary/ErrorBoundary.tsx","AppContainer.tsx","index.tsx","actions/jobSummaryActions.ts"],"names":["userFormSelector","state","ui","userForm","selectedUserRowsSelector","selectedUserRows","isAllRowsCheckedSelector","entities","users","allIds","length","userSearchSelector","userSearch","allUsersButCurrentEmailsSelector","createSelector","usersSelector","userIdsSelector","userByIds","userIds","filter","id","map","email","makeIsUserRowSelectedSelector","userIdFromPropsSelector","userId","includes","userCustomerIdsSelector","form","customerIds","userSiteIdsSelector","siteIds","userSystemIdsSelector","systemIds","makeUserScopeStringSelector","customersSelector","customerIdsSelector","sitesSelector","systemsSelector","scopeStringPrepare","schedulerFormCustomersSelector","schedulerForm","schedulerFormSystemsSelector","schedulerMarkedSystemsSelector","schedulerScopeStringSelector","customersById","orgIds","sitesById","systemsById","userOrgIds","userSiteIds","userSystemIds","scopeParts","inScopeSiteIds","inScopeSystemIds","scopeOrgs","scopeOrgIds","forEach","orgId","push","name","siteId","customerId","systemId","sort","join","i18next","t","siteByOrg","site","orgName","Object","keys","org","systemBySite","system","siteName","systems","serialNumber","appUserToRoles","userPermissionsToRoles","appUser","permissions","_path","_excluded","_extends","assign","bind","target","i","arguments","source","key","prototype","hasOwnProperty","call","apply","this","_objectWithoutProperties","excluded","sourceKeys","indexOf","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","SvgDashboard","_ref","svgRef","title","titleId","props","width","height","viewBox","fill","xmlns","ref","fillRule","clipRule","d","_rect","ForwardRef","SvgChart","rx","productionIcon","selectedSystemGroup","positive","style","marginTop","negative","dashboardIcon","chartIcon","likeIcon","getUnitsForTooltip","systemGroup","chart","typeOfChart","lengthUnits","UserSystemGroup","DTF","ActiveOverviewChart","Utilization","barChartsVerticalLinesGenerator","args","dataLength","timeFrame","chartName","coords","border","offset","left","perCent","getXAxisTickFontSizeColorConsumptionTrendChart","screenWidth","isMobile","getXAxisPaddingColorConsumptionTrendChart","getXAxisTicksNameColorConsumptionTrendChart","getXAxisNameForYear","getXAxisNameForQuarterAndYear","getXAxisNameForWeek","split","splice","dateString","year","slice","month","date","parse","Date","format","getPieChartRadius","innerRadius","outerRadius","getPieChartButtonSize","chartWrapperHeight","getMarginForProductionGraphCustomTimeFrameAndDay","columnsCount","isMachineFilterOpen","marginLeft","marginRight","getAdditionalOffsetForXAxisCentralLabelTotalProductionChart","granularity","GranularityEnum","Hour","Day","getAdditionalOffsetForXAxisCentralLabelTotalProductionChartForDayGranularityByDataLength","Week","Month","offsetMapping","screenRange","getScreenWidthRange","getGraphMarginTotalProduction","timeframe","data","day","week","custom","getGraphMarginAvailability","getGraphMarginForCustomTimeFrameSpeedChart","getGraphMarginSpeedChart","getBarSizeSpeedChart","columnCount","currentWidth","screenSizeDifferencePercent","Math","round","parseDate","parsedDate","hourParts","match","hours","minutes","getMonth","dayParts","weekParts","startMonth","startDay","isFuturePeriod","lastUpdate","isSameHour","isAfter","isSameDay","isSameWeek","isSameMonth","isFutureDate","browserHistory","createBrowserHistory","updateUriQueryAndPushHistory","setParams","activeReport","query","getQueryParams","set","oldSearch","location","search","replace","newSearch","toString","newUri","pathname","MainReportTypes","Jobs","SubReportTypes","SystemPage","MachineConfig","URLSearchParams","openLinkInNewTab","link","window","open","customErrorCodePrefix","isAxiosError","error","resolveErrorMessage","message","resolvedMessage","response","status","startsWith","customErrorCode","substr","handleErrorAction","moreHandlerActions","dispatch","action","errorMessage","enqueueNotification","variant","ErrorsHandlerService","onError","redirectUrl","config","SELF_HOST","makeInviteUserUrl","makeApiUrl","makeResetUserPasswordUrl","loadUsersStarted","createStandardAction","loadUsersSuccess","loadUsersFailed","saveUserStarted","saveUserSuccess","saveUserFailed","deleteUserStarted","deleteUserSuccess","deleteUserFailed","inviteUserStarted","inviteUserSuccess","inviteUserFailed","resetUserPasswordStarted","resetUserPasswordSuccess","resetUserPasswordFailed","getUsers","getExtendedUsersUrl","apiActionSimple","request","url","actions","interceptor","api","isLoadingUsers","saveUser","postUsersUrl","apiAction","method","store","userUiToApiSaveUser","logic","onStarted","setStatusModalUser","MODAL_STATUS","SAVING","onSuccess","newUsers","usersById","_","byId","CLOSED","DONE","u","Array","isArray","onFailed","EDITING","deleteUser","deleteUserUrl","user","inviteUser","resetUserPassword","afterCaptcha","captchaToken","headers","setCaptchaIsOpen","isOpen","loadSchedulersStarted","loadSchedulersSuccess","loadSchedulersFailed","loadSchedulerTypesStarted","loadSchedulerTypesSuccess","loadSchedulerTypesFailed","saveSchedulerStarted","saveSchedulerSuccess","saveSchedulerFailed","deleteSchedulerStarted","deleteSchedulerSuccess","deleteSchedulerFailed","toggleSchedulerAC","toggleSchedulerSending","sending","postSchedulersUrl","toggleScheduler","schedulers","getSchedulers","getSchedulersUrl","isLoadingSchedulers","saveScheduler","schedulerFormToApi","setStatusModalScheduler","deleteScheduler","deleteSchedulersUrl","getSchedulersReportTypes","getSchedulersTypesUrl","isLoadingSchedulerTypes","reportTypes","reportId","emailSubject","report","startDate","endDate","notes","weekdays","lastSent","subject","emailReportId","emailReportName","startSendDate","endSendDate","repeat","frequency","Frequency","Weekly","mapDaysOfTheWeekToSchedulerFrequency","Weekdays","Tuesday","isActive","isSendOnMonday","isSendOnTuesday","isSendOnWednesday","isSendOnThursday","isSendOnFriday","isSendOnSaturday","isSendOnSunday","Monday","Wednesday","Thursday","Friday","Saturday","Sunday","schedulerReport","getSchedulerWeekdays","scheduler","schedulerApiToSchedulerForm","customers","sites","systemsTree","userDataToTree","dayOfWeek","isFormTouched","treeCheckedNodesToSchedulerData","nodes","prevOrgIds","prevSiteIds","userCustomerIds","userSystemsIds","customerDataIds","siteDataIds","systemDataIds","currentNodes","isAllDataAccessible","node","rootId","parentId","value","currentSite","label","concat","currentSystem","appUserDataScopeData","filteredOrgIds","filteredSiteIds","filteredSysIds","disabledOrgIds","disabledSiteIds","siteArray","values","sysArray","siteIsInUserScope","parentOrgIsNotInScope","siteIsNotInScope","parentIsInScope","sys","sysIsInUserScope","parentSiteIsNotInScope","sysIsNotInScope","_filterEntityStore","entity","ids","result","GlobalStyle","createGlobalStyle","appearanceEffect","keyframes","NoDataIconWrapper","styled","div","MobileDivider","buttonOnHoverColor","color","globalColors","regular","text","primary","grey","blue","red","white","background","yellow","green","greyCardBackround","greyDevider","buttonBorder","cardBorder","disabled","datePickerArrow","buttons","disableBorder","regularBorder","selectedBorder","whiteBorder","disableText","regularText","selectedText","whiteText","arrows","gray","StyledTooltip","withStyles","tooltip","backgroundColor","boxShadow","arrow","Tooltip","CardBorder","customersAll","sitesAll","systemsAll","makeTreeData","rootElements","parentElements","childElements","rootSelectedIds","parentSelectedIds","childSelectedIds","rootForceUncheckIds","parentForceUncheckIds","rootDisabledIds","parentDisabledIds","treeCheckedNodesToUserData","getRealTimeHeaders","isRealTime","AUTH_CONFIG_STR","domain","clientID","redirectUri","audience","returnTo","LOGGED_IN_STORAGE_DATA_KEY","AuthServiceImpl","_errorsHandler","_history","_authOptions","responseType","scope","_auth0Client","WebAuth","_loginParams","tokenRenewalTimeout","_renewSession","checkSession","err","authResult","accessToken","idToken","_setSession","logout","console","log","_scheduleRenewal","expiresAt","timeout","now","setTimeout","handleAuthentication","isAuthUrl","parseHash","defaultAppPath","Error","i18n","authCallbacksRegex","test","hash","login","PLATFORM","Browser","authorize","localStorage","removeItem","clearTimeout","isAuthenticated","getUserRoles","idTokenPayload","AUTH0_CLAIMS_NAMESPACE","updateLocaleInLocalStorage","locale","getItem","token","JSON","setItem","stringify","_loadSession","serializedSession","expiresIn","authService","errorsHandler","history","AuthContext","React","createContext","AuthProvider","children","Provider","withAuth","Component","Consumer","sortDataByOrderDesc","dataArray","sortBy","order","nickNamesArr","isEverReportedSystems","systemsWithNickName","systemsWithoutNickName","currentNickNameRecord","find","record","nickName","systemNickName","isSistemHasNickName","resultWithNickName","a","b","descendingComparator","resultWithoutNickName","undefined","firstPrinterStatus","printerStatus","secondPrinterStatus","firstPrinterWeight","statusWeights","secondPrinterWeight","aSystemName","systemName","bSystemName","aModel","bModel","nickNameRecord1","nickNameRecord2","name1","toLowerCase","name2","isAEverReported","isEverReported","isBEverReported","getSortByArray","isToday","fieldName","Printing","Preparation","Idle","NotReporting","Maintenance","Maintenace","NotDefined","sortLegendItemByStatus","array","sortByGranularity","records","INIT_STATE","firstname","lastname","setGoals","createReports","adminPermissions","isRootUser","manageApi","userUi","openModalUserCreateAC","openModalUserEditAC","openModalUserDuplicateAC","changeFormPlainValue","changeUserFormScopeAC","createReducer","handleAction","payload","openModalUserCreate","userApiToUi","openModalUserEdit","avatarUrl","openModalUserDuplicate","field","changeFormPlainValueRF","selectedNodes","changeUserFormScope","lastSavedUserId","isInvitationSent","closeModalUser","userApi","savedUser","updateLastSavedUserId","toggleUserTableRow","toggleUserTableAll","e","toggleUserTableRowRF","toggleUserTableAllRF","changeUserSearchValue","enqueueNotificationAC","removeNotification","notification","previewStatus","schedulerUi","openModalSchedulerCreateAC","openModalSchedulerEditAC","openModalSchedulerDuplicateAC","closeModalScheduler","openModalSchedulerPreviewAC","closeModalSchedulerPreview","schedulerApi","userOrgs","userSites","userSystems","changeSchedulerFormScopeAC","changeSchedulerFormValue","changeSchedulerFormStartDate","changeSchedulerFormStartTime","changeSchedulerFormRepeat","openModalSchedulerCreate","openModalSchedulerEdit","openModalSchedulerDuplicate","changeSchedulerFormScope","changeFormStartDate","changeFormStartTime","changeFormRepeat","oldDateHours","getHours","oldDateMinutes","getMinutes","newDate","setHours","setMinutes","time","newDateHours","newDateMinutes","Number","setTimer","USER_LOGOUT_TIMEOUT","updateLogoutTimerAC","toggleSchedulerPreview","selectedFilter","filterCalenderUi","openCalendarModal","closeCalendarModal","setSystemAnalysisView","uiReducer","combineReducers","notificationQueue","notificationQueueReducer","userTableReducer","userModal","userModalReducer","userFormReducer","userSearchReducer","schedulerModal","schedulerModalUiReducer","schedulerFormUiReducer","schedulerPreview","schedulerPreviewUiReducer","logoutTimer","logoutTimerUiReducer","toggleSchedulerId","schedulerToggleUiReducer","filterCalenderModal","FilterModalReducer","systemGroupUiReducer","systemAnalysisView","systemAnalysisViewsReducer","overview","overviewUiReducer","machineFilter","captcha","captchaReducer","uiState","machineFilterSelector","isMachineFilterOpenSelector","filterCalenderModalSelector","DTG","bottlesLoaded","totalPrintingTime","totalProduction","selectedColors","printingTimePerUnit","inkConsumptionPerUnit","mediaWithResponse","inkConsumptionChart","colorConsumptionChart","colorCompareChart","isJobAnalysisChartsLoading","isJobAnalysisChartsLoaded","isTotalCardsLoading","shouldBeUpdatedAfterGroupSelection","isDownloadInkConsumptionPerJobLoaded","isDownloadInkConsumptionPerJobLoading","downloadInkConsumptionPerJobError","maxKeepAlive","Apollo","reducer","jobAnalysisChartCardsAC","success","mergeWith","cloneDeep","mergeCopyArrays","jobAnalysisToggleSelectedColorsAC","jobAnalysisTotalCardsAC","mergedState","toggleSelectionSizeGroupCards","isInkConsumptionPerJobValidToDownloadAC","SystemGroupType","isInkConsumptionPerJobValidToDownloadLoading","isInkConsumptionPerJobValidToDownloadLoaded","failure","inkConsuptionPerJobStatuses","noData","tooMuchData","validToDownload","isInkConsumptionPerJobValidToDownloadMessage","downloadInkConsumptionPerJobReportAC","jobAnalysisChartsAC","jobAnalysisInkConsumptionKPIAC","isSilent","jobAnalysisPrintingTimeKPIAC","printTimePerUnitResponse","totalPrintingTimeResponse","totalPrintingTimeSeconds","jobAnalysisTotalImpressionsKPIAC","getMaxKeepAliveRequestAC","maxKeepAliveUtc","jobAnalysisBySystemGroupSelector","jobAnalysis","systemGroupSelector","jobAnalysisKeepAliveSelector","isJobAnalysisChartsLoadingSelector","isJobAnalysisChartsLoadedSelector","jobAnalysisBySystemGroupIsValidToDownloadInkConsuptionPerJobIsLoadingSelector","jobAnalysisByGroup","jobAnalysisBySystemGroupIsValidToDownloadInkConsuptionPerJobSelector","jobAnalysisBySystemGroupDownloadInkConsumptionPerJobErrorSelector","jobAnalysisIsDownloadInkConsumptionPerJobLoadingSelector","jobAnalysisIsDownloadInkConsumptionPerJobLoadedSelector","jobAnalysisMediaWithResponseBySystemGroup","jobAnalysisInkConsumptionPerUnitBySystemGroup","jobAnalysisPrintingTimePerUnitBySystemGroup","jobAnalysisBottleLoadedSelector","jobAnalysisTotalPrintingTimeSelector","jobAnalysisTotalProductionSelector","jobAnalysisInkConsumptionChartSelector","jobAnalysisColorConsumptionChartSelector","jobAnalysisColorCompareChartSelector","jobAnalysisSelectedColorsSelector","isTotalCardsLoadingSelector","shouldBeUpdatedAfterGroupSelectionSelector","input","rootFoldedIds","parentFoldedIds","enableLowLevelSelect","rootEl","isRootGranted","isRootUnchecked","isRootDisabled","isRootFolded","rootDescendants","parentEl","expanded","checked","isParentGranted","isParentUnchecked","isParentDisabled","parentDescendants","childEl","makeParentBranch","makeRootBranch","normalizeSelectedNodes","explicitChildren","allRoots","allParents","allChildren","rootIds","parentIds","childIds","nodeIds","n","root","parent","child","schedulerIdFromPropsSelector","schedulerId","convert","expirationDate","validFrom","getCertificateDetailsAC","createAsyncAction","getCertificateDetailsRequest","sub","getCertificateFileAC","getCertificateFileRequest","FileDownload","createCertificateAC","createCertificateRequest","deleteCertificateAC","deleteCertificateRequest","refreshCertificateRequest","deleteUrl","createUrl","getState","SvgBackArrow","GoalType","userRolesToPermissions","roles","r","PermissionAuth0","ReadOnly","Permission","Admin","Scheduler","CreateReports","GoalsSetter","SetGoals","ManageApi","Certificate","p","determineUnitToShow","userSettings","translationFunction","string","rtrMetricUnit","RTRMetricUnit","Square","numberFormatFromString","number","parseFloat","toFixed","toLocaleString","numberFormat","isNaN","formatFloatToPercentage","fraction","notUndefiend","arrayOfValues","some","objValue","srcValue","numberFormatterNew","num","units","digitsNumber","si","symbol","floor","hundreds","hundredsString","numLenght","digitsToCut","abs","digitsSuffixId","pow","cutAllValueAfrerDot","formattedString","trim","formatStringToPercentage","multiplier","formatSecToHourString","duration","mins","seconds","formatSecToMinString","valueAsString","isPercentage","getSeconds","dateToTimeString","addZeroToNumber","numberAsString","secondsToDaysHoursMinutes","noZeroPrefix","days","minutesResiduals","String","convertSecondsToHours","lastUpdateToNewFormat","hour","transformTime","timeString","dateObj","hour12","convertTo24HourFormat","amPm","convertTo12HourFormat","padStart","pmHour","_path2","SvgTimeLineFlagIcon","isLoading","isLoaded","isError","getEmptyStateAC","reportFilter","mapIsEverReportedData","isEverReportedSelector","isEverReportedLoadingSelector","isEverReportedLoadedSelector","isEverReportedBySystemGroupSelector","resposne","reportedSystems","reportedSystem","reportedSystemsData","loadAppUserSettingsStarted","loadAppUserSettingsSuccess","loadAppUserSettingsFailed","getAppUserSettings","selectedSystemGroupFromUri","get","setSystemGroup","defaultSystemGroup","setAppUserSettingsAC","setAppUserSettings","postData","userSystemGroup","loadGoalsStarted","loadGoalsSuccess","loadGoalsFailed","saveGoalStarted","saveGoalSuccess","saveGoalFailed","getGoalsData","goalsUrl","getCurrentIsoDateTimeNoMilliAndOffset","timezoneOffset","encodeURIComponent","isLoadingGoals","updateGoal","postGoalsUrl","goalValue","goalPeriod","setActiveReportAC","setActiveReport","reports","filterData","currentReport","KonnectAnalytics","changeReportPage","prevReport","nextReport","loadCustomersStarted","loadCustomersSuccess","loadCustomersFailed","loadSitesStarted","loadSitesSuccess","loadSitesFailed","loadSystemsStarted","loadSystemsSuccess","loadSystemsFailed","getScopeData","getCustomersData","getSitesData","getSystemsData","getCustomersUrl","isLoadingCustomers","getSitesUrl","isLoadingSites","getSystemsUrl","isLoadingSystems","getCustomerDataBySerialIdAC","getCustomerDataBySerialIdRequest","serialId","importedCustomerId","AxixTiksForCustomTimeframe","x","y","index","customTimeframeProperties","isAdditionalLabelHasTwoDates","getAdditionalData","firstDayName","firstDayNumber","firstMonthName","firstYear","lastDayName","lastDayNumber","lastMonthName","lastYear","hourStr","timeModificator","xOffset","additionalOffsetForTimeModificator","additionalDataLabel","additionalLabelColor","xOffsetForAdditionalLabel","firstRecordDayName","indexOfSecondDay","findIndex","fontSize","dy","dayName","dayNumber","selectedHoursCountStartDate","customTimeFrameStartDate","customTimeFrameEndDate","customTimeFrameStartHour","selectedHoursCountEndDate","customTimeFrameEndHour","indexOfSecondMonth","TimeFrameEnum","weekRange","startWeekStr","endWeekStr","startWeekDay","endWeekDay","startWeekMonth","endWeekMonth","secondRowXOffset","isFirstWeekFull","startOfWeek","weekStartsOn","isEndWeekFull","endOfWeek","selectedDaysConuntInFirstWeek","differenceInDays","selectedDaysCountInEndWeek","firstYearname","indexOfSecondYear","monthNumber","monthName","isFirstMonthFull","startOfMonth","isEndMonthFull","endOfMonth","selectedDaysConuntInFirstMonth","selectedDaysCountInEndMonth","loadReportsFilterDataStarted","loadReportsFilterDataSuccess","loadReportsFilterDataFailed","loadReportsFilterSitesStarted","loadReportsFilterSitesSuccess","loadReportsFilterSitesFailed","loadReportsFilterDatesStarted","loadReportsFilterDatesSuccess","loadReportsFilterDatesFailed","loadReportsCurrentStateStarted","loadReportsCurrentStateSuccess","loadReportsCurrentStateFailed","getReportsFilterSites","getReportsFilterSitesUrl","apiState","reportsFilterData","isInProgress","reachedMaxLoadAttempts","getReportsFilterDates","getReportsFiltersDatesUrl","getReportsCurrentState","getReportsCurrentStateUrl","reportsCurrentState","normalizeGraphData","quarter","filteredRecords","item","colorItem","colorName","initialHour","shortDayName","shortDay","getFullNameOfDay","currentDate","addDays","fullDayName","getDate","monthShorName","getTimezoneOffset","getTimeOffset","isHistorical","getTime","apiRefreshInterval","period","callback","refreshData","setInterval","REFRESH_API_INTERVAL","clearInterval","filterState","selectedDate","getDayForDate","getDayForDateMobile","getWeekForDate","isSameYear","endDateMinusYear","addYears","getMonthForDate","getQuarterForDate","startOfQuarter","endOfQuarter","getYearForDate","startOfYear","endOfYear","generateDatesForPeriod","periodIncrementFn","startOfPeriodFn","startRoundDate","endRoundDate","startYearDate","getDateForTimeframe","getPeriodForCustom","getRequestForTimeFrame","getDaysHoursAndMinutesFromSeconds","rest","hrs","minutesDiff","dtfMins","DTFSeconds","fullHours","restSeconds","fullMinutes","fullSeconds","isStatusShouldBeShown","lastupdate","getLastUpdateTextColor","getCustomSearchParameters","_ellipse","_path3","_path4","SvgEmptyStateTankIcon","cx","cy","ry","stroke","strokeWidth","_path5","_path6","SvgEmptyStateEventIcon","_rect2","_mask","_path7","_path8","_rect3","_rect4","_rect5","_rect6","SvgNothingWasSelected","fillOpacity","maskUnits","mask","_g","_path9","_path10","_path11","_path12","_path13","_path14","_path15","_path16","_path17","_rect7","_rect8","_rect9","_rect10","_rect11","_path18","_path19","_path20","_defs","SvgEmptyState","transform","filterUnits","colorInterpolationFilters","floodOpacity","in","type","stdDeviation","mode","in2","SvgPrinterNotReportedIcon","EmptyStateWrapper","InnerWrapper","IconPlaceHolder","MessagePlaceHolder","maxHeight","DescriptionPlaceHolder","EmptyStateIcon","description","icon","currentIcon","iconName","elem","SvgTShirt","SvgFabricIconNoColor","getMachineConfigAC","converter","params","param","min","max","machineConfigRequest","element","setMachineConfigDevice","path","makeAuthHeader","Authorization","firstName","lastName","profilePictureUrl","avatarBase64","printerIds","entityId","avatar","uiSelector","isCatpchaOpenSelector","userIdForCaptchaSelector","pendingRequests","Map","noNeedToCancelEndpointsArray","conf","quieryString","generateQuieryString","requestId","tokenSource","axios","CancelToken","splittedBySlashUrl","currentEndPoint","defaults","withCredentials","cancel","authHeader","contentTypeHeader","startTime","cancelToken","sendMetric","substring","sendLogToAppInsight","canceled","isCancel","isSuperUser","nickname","appInsightLogger","trackEvent","endPoint","userEmail","checkIsSuperUser","toDateString","innerKey","el","charAt","jobAnalysisIncomeDataMapper","incomeData","selectedDay","filteredData","colors","isNull","colorsArray","isSomeColorInRecordNull","newRecord","setColorValueForFutureDaysOnNull","getPrinterName","serial","getModelnameNickName","printer","systemAnalysisData","systemSerialNumber","model","systemModel","calculatedName","getJobAnalysisTopCardsWidth","filteredBottles","leftCardWidth","middleCardWidth","rightCardWidth","isShowInkConsumptionButtonForDtf","START_FEATURE_DATE_FOR_DTF","lastDayOfPeriod","getLastDateOfSelectedTimeFrame","isBefore","mapZeroValuesBolltesToNull","totalBottlesLoadedResponse","bottles","bottle","colorValue","selectedSystemName","sortingOrder","view","changingNameInputValue","newNickName","isChangeNameLoading","isChangeNameLoaded","isNickNamesLoading","isNickNamesLoaded","isNickNamesLoadingError","nickNames","downloadReportValidation","isDownloadReportValidationLoading","isDownloadReportValidationLoaded","isDownloadReportValidationLoadingError","isValidToDownload","isFileDownloading","isFileDownloaded","fileDownloadError","checkSystemAnalysisReportValidToDownloadAC","isDownloadReportLoaded","isDownloadReportLoadingError","downloadSystemAnalysisReportAC","getSystemAnalysisNickNamesAC","getSystemAnalysisAC","reducedData","systemsReports","currentFilter","nickNamesArray","currentOrder","newSortedData","newReducedData","setSelectedSystemName","setInitialValueToChangeNameField","changeNickNameAC","changeNickNameError","setSortByHeaderCell","isChangeOrder","newOrder","getNewOrder","sortingFieldName","newData","sortedData","systemAnalysisSelector","systemAnalysis","systemAnalysisNickNamesSelector","systemAnalysisIsNickNameLoadingsSelector","isLoadingSystemAnalysisSelecor","systemAnalysisSortingOrderSelector","systemAnalysisSortBySelector","systemAnalysisDataSelector","systemAnalysisDataBySelectedSystemGroup","selectedSystemNameSelector","printerSelector","systemAnalysisNewNickNameSelector","modelStartDate","modelEndDate","isChangeNameLoadingSelector","isChangeNameLoadedSelector","changingNameInputValueSelector","isDownloadReportValidationLoadingSelector","isSystemAnalysisReportValidToDownloadSelector","downloadSystemAnalysisReportMessageSelector","MobileReportWrapperSystemAnalysis","SortingButton","StyledTabsIcon","canClick","statusColor","css","classes","popper","className","IconButton","Typography","img","span","Button","Tabs","StyledTabIcon","Tab","StyledWrapperLoader","StyledWrapperControls","StyledViewButtonWrapper","StyledSystemsAnalysisFilter","Select","StyledSystemsAnalysisFilterMobile","StyledSystemsAnalysisFilterItem","MenuItem","attrs","filterTheme","createMuiTheme","overrides","MuiTable","borderCollapse","MuiTableCell","padding","borderBottom","head","fontWeight","MuiTableRow","display","alignItems","borderRadius","overflow","marginBottom","cursor","opacity","MuiTableBody","flexDirection","MuiSelect","select","paddingLeft","paddingRight","MuiListItem","button","gutters","REPORTS_CONFIG","Overview","defaultTimeFrame","timeFrames","Systems","ServiceTicket","errorKind","process","activeChart","Speed","setActiveOverviewChart","uiOverviewSelector","uiOverviewActiveChartSelector","uiOverview","uiOverviewActiveChartSelectorBySystemGroupSelector","uiOverviewActiveChart","SvgFunnelIcon","_circle","SvgFilterDot","SvgDislikeWithCircle","SvgLikeWithCircle","SvgSpeed","getEmptyState","setInitFilterStateAC","createAction","setInitFilterState","setFilterFromUriQueryAC","setFilterFromUriQuery","selectedSiteIds","selectedModelIds","selectedSystemSerials","setCustomTimeFrameHoursToDefaultValue","setTimeframeAC","setTimeframe","customTimeFrameProperties","changeTimeFrameFilter","nextTimeFilter","customStartHour","customEndHour","setActiveDateAC","setActiveDate","firstDayInWeek","setNodeFoldedStateAC","setNodeFoldedState","setFilterSystemsStateAC","setFilterSystemsState","currentNode","models","resetFilterSystemsStateAC","resetFilterSystemsState","jumpToLatestPeriodAC","jumpToLatestPeriod","applyMobileFiltersAC","applyMobileFilters","isApplyMobileFilter","getDefaultFilterQueries","setSelectedSystemIds","setSelectedSystemIdsAC","openFilterPopUpMenu","toggleFilterRowSystemsSelection","toggleFilterModelRowSystemsSelection","toggleFilterSerialRowSystemSelection","toggleAllSystemsSelection","setFilterValue","unselectSerialsByModel","reportApi","reportUi","goalApi","scopeApi","machineConfig","jobSummary","apiManagement","systemPage","serviceTicket","authCallbackPath","unsubscribePath","superUserLogin","userManagementPath","apiManagementPath","goalsPath","schedulerPath","settingsPath","configurationPath","privacyPolicyPath","termsOfUsePath","productTCPath","reportsPath","overviewReportPath","jobsReportPath","systemsReportPath","systemsSubReportsPath","documentViewerPath","RegExp","access_token","id_token","blobBaseUrl","BLOB_URL","METRICS_GLOSSARY_DTF_PDF_LINK","METRICS_GLOSSARY_DTG_PDF_LINK","PRIVACY_POLICY_PDF","TERMS_OF_USE_PDF","API_PDF","KONNECT_TRAINING_LINK_DTG","KONNECT_TRAINING_LINK_DTF","SvgArrowUp","StatsData","percentage","sign","isHidden","align","CardContent","UpperRow","BottomRow","ContentRow","DescriptionRow","Value","Units","TotalImpressionCardMobile","icons","stats","statsDescription","addedData","cardName","useState","isNegative","setIsNegative","useEffect","Spinner","LeftColumn","LeftColUpperRow","LeftColUpperRowValueSubRow","Icon","LeftColUpperRowDescriptionSubRow","LeftColBottomRow","RightColumn","RightColumnRow","RightColumnRowValueSubRow","ValueAndUnitWrapper","RightColumnRowValueSubRowItemIcon","RightColumnRowValueSubRowItemUnits","RightColumnRowValueSubRowItemValue","RightColumnRowDescriptionSubRow","ProductionRateCardMobile","rightColumnRef","useRef","rightColumnWidth","setRightColumnWidth","current","getBoundingClientRect","letterSpacing","upper","formatter","unit","trend","lower","ProductivityCardMobile","AvailabilityCardMobile","SvgTopCardsArrowUp","SvgTopCardsArrowDown","OverviewTopCardsUpperRowContent","OverviewTopCardsValue","OverviewTopCardsUnits","OverviewTopCardsBottomRow","OverviewTopCardsDescription","DesktopTotalImpressionCard","selectedSystemGroupText","impression","getDescriptionTextForCustomTimeframe","LeftColumnCardContent","RigthColumnUpperRow","RigthColumnBottomRow","RightColumArrowPlaceHolder","RightColumnContent","RightColumnContentUpperRow","RightColumnContentBottomRow","DesktopAvarageAvailabilityCard","availabilityTotalDurationReported","isNotReprotingPeriod","useTranslation","getArrowIcon","row","getTopCardArrowColor","OverviewTopCardNames","averageAvailability","DesktopAvarageProductionRateCard","averageProductionRate","paddingTop","DesktopProductivityCard","productivity","TopCardsDesktopWrapper","TotalImpressionCardWrapper","AvarageProductionRateCardWrapper","ProductivityCardWrapper","AverageAvailabilityCardWrapper","DesktopDtgApolloTopCards","productionTrend","productionRate","productionRateTrend","loadingTime","utilization","loadingTimeTrend","trendUtilization","darkImpressionsPercentage","preparation","trendPreparation","darkImpressionsTrend","productivityChange","printingTimeTrend","printingTime","availabilityTrend","availability","maintenanceDurationTrend","maintenanceDuration","errorDurationTrend","errorDuration","getTimeframeTextKey","changeTextPerPage","DesktopDtfTopCards","DesktopTopCards","last","weekDay","OverviewTopCard","TopCards","connect","overviewBySystemGroupAvailabilitySelector","overviewBySystemGroupavailAbilityTrendSelector","overviewBySystemGroupErrorDurationSelector","overviewBySystemGroupDarkImpressionsPercentageSelector","overviewBySystemGroupMaintenanceDurationSelector","overviewBySystemGroupLoadingTimeSelector","overviewBySystemGroupProductionRateSelector","overviewBySystemGroupProductionRateTrendSelector","overviewBySystemGroupProductionTrendSelector","overviewBySystemGroupTotalProductionSelector","overviewBySystemGroupDarkImpressionsTrendSelector","overviewBySystemGroupLoadingTimeTrendSelector","overviewBySystemGroupMaintenanceDurationTrendSelector","overviewBySystemGroupErrorDurationTrendSelector","overviewBySystemGroupTrendPreparationSelector","overviewBySystemGroupTrendUtilizationSelector","overviewBySystemGroupUtilizationSelector","overviewBySystemGroupPreparationSelector","overviewBySystemGroupProductivitySelector","overviewBySystemGroupProductivityChangeSelector","overviewBySystemGroupPrintingTimeSelector","overviewBySystemGroupPrintingTimeTrendSelector","productivityUtilization","overviewBySystemGroupProductivityUtilizationSelector","productivityUtilizationTrend","overviewBySystemGroupProductivityUtilizationTrendSelector","dataUserSettingsSelector","customTimeFramePropertiesSelector","overviewBySystemGroupIsNotReportingPeriodSelector","overviewBySystemGroupAvailabilityTotalDurationReportedSelector","bindActionCreators","isTopCardsLoading","isCommonErrorsLoading","isCommonMaintenanceEventsLoading","isAchievementCardLoading","isTimeLineDayLoading","isTimeLineDayLoaded","errorTimeLineDay","timeLineDataDay","isTimeLineWeekLoading","isTimeLineWeekLoaded","errorTimeLineWeek","timeLineDataWeek","timeLineDayView","timeLineAMPMmodificator","timeLineSelectedHour","loadedBottles","errorMessages","commonMaintenanceEvents","achievement","productionRateChangeLastWeek","productionRateChangeFleet","productionChangeLastWeek","productionChangeFleet","production","printerImage","lastStatus","lastSoftwareUpdate","availabilityChangeLastWeek","availabilityChangeFleet","appVersion","isQualisetLoading","isQualisetError","qualisetData","isNotReportingPeriod","getQualisetDataAC","qualisetDate","getTimelineDayViewRequestAC","isTimeLineLoading","isTimeLineLoaded","errorTimeLine","getTimeLineDataAC","toggleAMPMmodificator","nextHour","currentHour","nextModificator","currentModificator","setTimeLineHour","nextHourValue","modificator","decrementTimeLineHour","nextValue","incrementTimeLineHour","toggleDayTimelineView","nextView","getTotalBottlesLoadedAC","getSystemPageMessagesAC","errorTableData","messageTableData","maintenanceTableData","getSystemPageCardsDataAC","errorPercentage","maintenancePercentage","productivityChangeFleet","productivityChangeLastWeek","getImpressionsCardsAC","isImpressionCardsLoading","getAvailabilityCardAC","isAvailabilityCardLoading","systemPageStateSelector","modelNameSelector","isImpressionCardsLoadingSelector","isAvailabilityCardLoadingSelector","isQualisetLoadingSelector","qualisetDataSelector","isNotReportingPeriodSelector","availabilityTotalDurationReportedSelector","timeLineSelectedHourSelector","timeLineAMPMmodificatorSelector","timeLineDayViewSelector","isCommonMaintenanceEventsLoadingSelector","commonMaintenanceEventsSelector","loadedBottlesSelector","errorMessagesSelector","isCommonErrorsLoadingSelector","systemPageisLoadingSelector","isTopCardsLoadingSelector","isAchievementCardLoadingSelector","achievementSelector","productionRateChangeLastWeekSelector","productionRateChangeFleetSelector","productionRateSelector","productionChangeLastWeekSelector","productionChangeFleetSelector","productivitySelector","productivityChangeFleetSelector","productivityChangeLastWeekSelector","productionSelector","printerImageSelector","lastStatusSelector","lastSoftwareUpdateSelector","availabilityChangeLastWeekSelector","availabilityChangeFleetSelector","availabilitySelector","errorDurationSelector","errorPercentageSelector","maintenanceDurationSelector","maintenancePercentageSelector","appVersionSelector","timeLineDataDaySelector","isTimeLineDayLoadingSelector","isTimeLineDayLoadedSelector","timeLineDataWeekSelector","isTimeLineWeekLoadingSelector","isTimeLineWeekLoadedSelector","loading","isApolloLoaded","isApolloLoading","isDTGLoading","isDTGLoaded","isDTFLoading","isDTFLoaded","dtfPageSelector","DtfPageSelector","BySize","isDtfResolutionGroupSelected","getModeSummaryCardsAC","jobSummaryData","highlightDTFCard","resolution","oldCard","card","modeResolution","newCard","selected","filteredDTFArray","dtfLoaded","selectDTFCard","cardHeader","dtfGroupPercent","percentOfAllJob","clearDtfCardsSelection","newDtfCarsArray","merge","setDtfPageSelectorToDefaulBySizeState","getJobSummaryCardsAC","toggleSelectionSizeCard","filteredArray","nameSet","selectedCards","sizeString","card1","card2","isAtLeastOneCardSelected","filteredDTG","createNewCardGroupChoosenSizeByParam","newCard1","newCard2","newSelectedCards","clearSelectionSizeCards","newDtgCarsArray","newSelectedState","sourceArr","jobSummarySelector","dtgCardsSelector","apolloCardsSelector","dtfCardsSelector","jobSummaryCardsBySystemGroupSelector","JobSummaryLoadingSelector","isDTFLoadedSelector","isDTFLoadingSelector","isJobSummaryComponentLoadingSelectorByAnyGroup","isDTGLoadedSelector","isDTGLoadingSelector","jobSummaryBySystemGroup","jobSummarySelectedLengthSelector","mapCahrtData","newErrorValue","numberToRoundedPercent","newMaintenanceValue","newIdleValue","newPrintingValue","newNotReportingValue","newFormattedElement","stringDate","mapResposeToTimeLineDayArray","arr","currentMinuteValue","step","DayViewType","resultArray","curretnElement","systemStatus","newElement","minute","getSvgTextOffset24HourView","TEXT_OFFSET","getSvgTextOffset1HourView","getTickTopBottomCoordinates1HourView","currentElementIndex","topY","bottomY","getTickTopBottomCoordinates24HourView","getXCoordinates24HourView","intervalsCount","getXCoordinates1HourView","RANGE","convertHourFrom24To12Format","isPropsInitializedOnTimeline24HViewTooltip","coordinate","payloadObject","getXTooltipOffsetByHour","getTooltipWidth","intervals","getSvgTextFor1hourViewGraph","allTickPointIndexes","resultHour","hourNames","devConfig","API_ROUTER_HOST","WEEK_START","FILTER_HIDE","USER_AGREEMENT_VERSION","SHOW_PBI_REPORT_PAGES_PANE","SHOW_PBI_REPORT_FILTERS_PANE","REPORTS_REFRESH_TIMEOUT_SECONDS","MAX_LOAD_ATTEMPTS","SPLIT_WEEK_BY_END_OF_YEAR","ENV_NAME","ConfigNamesEnum","Dev","SHOW_VERSION_VERSION_LABEL","GENERATE_SOURCEMAP","LOGGER_INSTRUMENTAION_KEY","MIXPANEL_KEY","GOOGLE_ANALYTICS_KEY","UNSUBSCRIBE_END_POINT","SERVICE_TICKET_END_POINT","API_URL","RECAPTCHA_KEY","configTest","Test","testDebug","configProd","Staging","protocol","response_type","nonce","auth0Client","Production","localConfig","dvpsConfig","DevOps","configMobileProdIos","configMobileProdAndroid","configMobileDevIos","configMobileDevAndroid","configAuto","Auto","env","determineConfig","configLocal","configDev","configTestDebug","configStage","configDvps","REAL_TIME_USER_LIST","SvgOverviewLegendIcon","SvgUtilization","ToggleButtonGroupStyled","ToggleButtonGroup","ToggleButtonStyled","ToggleButton","DesktopToggleChart","activeOverviewChart","handleChartChange","lineHeight","verticalAlign","exclusive","onChange","SvgSpeedForMobileToggler","SvgProductivityForMobileToggler","TogglerChartsWrapper","MobileToggleChart","onClickHandler","onClick","event","newChart","MobileReportWrapper","reportHeight","EmptyBlock","ProductionOverviewChartsCard","BottomBorder","ChartsCardHeader","ChartsCardLegend","ChartsCardLegendItem","IconWrapper","LegendItemDescription","ChartHeader","ChartWrapper","OverviewMobile","memo","pbiReportHeight","productionChart","speedChart","availabilityChart","utilizationChart","weekRecord","getLegendText","leftLegendItem","total","rightLegendItem","totalAvg","ProductionChart","isWeek","legendText","speedData","availabilityData","SpeedChart","tooltipText","AvailabilityChart","logger","ApplicationInsights","instrumentationKey","loadAppInsights","properties","trackMetric","average","SvgCloseIconDownloadInkPerJob","FunnelContainer","FunnelDotContainer","Funnel","handleClick","automationId","funnelColor","filterNotEmpty","DateGoal","done","DateGoalWrapper","HrHorizontal","hr","CardDiv","ValueDiv","UnitDiv","DescriptionDiv","require","ResponsiveContainer","size","src","newSpinner","alt","SpinnerContainer","InnerCardContent","toggleMachineFilterMenu","mixPannelKey","mixpanel","init","identify","register","track","reason","people","set_once","$email","toISOString","USER_ID","importedTennantId","tennantName","office","accountType","getUserEmail","pendo","initialize","visitor","isDtgUser","isDtfUser","isApolloUser","account","startSession","sendErrorLog","errorInfo","finishSession","changeSystemGroupFilter","prevSystemGroup","systemGroupFrom","nextSystemGroup","systemGroupTo","currentPage","currentActiveReport","changePrinterNickName","serialNubmer","prevNickName","dowloadErrorAndMaintenanceReport","selectedSystem","toggleTimelineDayView","prevView","selectHourTimelineHourView","prevHour","toggleDatePickerCalendar","incrementDateInDatePicker","decrementDateInDatePicker","JobAnalysisFilter","actionType","clickInkConsupmtionPerJob","changeDateRangeInkConsuptionPerJob","newStartDate","newEndDate","downloadSystemAnalysisReport","downloadInkConsumptionPerJobReport","jobAnalysisInkConsumptionTrendGraphSelectColor","selectedColor","customClick","submitCustomClick","changedDateinCustomTimeFrame","trackHistory","crAction","scopeSelector","changeFormAvatar","avatarUploadedFile","reader","FileReader","onload","btoa","fromCharCode","Uint8Array","readAsArrayBuffer","setScreenSize","setPbiReportSize","systemAnalysisViewSelector","selectedSystemSerialsSelectorForRequest","TooltipContainer","Divider","InfoContainer","Description","CustomizedLabelGrid","offsetRight","offsetLeft","heigth","chartHeight","fullWidth","x1","y1","x2","y2","DesktopProductionChart","prpos","aggregated","additionalOffsetForXAxisCentralLabel","normalizeApolloAllChartsRecords","margin","right","top","stopColor","stopOpacity","DEFAULT_Y_AXIS_WIDTH","axisLine","tickLine","tick","tickFormatter","interval","content","isAnimationActive","dataKey","dot","CustomizedDot","indexOfLastPoint","CustomTooltip","active","payloadProps","speed","speedAvg","availabilityAvg","MobileChartContainer","MobileProductionChart","aggretatedData","minHeight","bottom","vertical","CustomizedMobileTickProductionChart","getTicks","tickXcoordinate","tickText","textXCoordinate","setAggregatedData","MobileSpeedChart","barWidth","barGap","barSize","radius","CustomizedMobileTickSpeedChart","getTicksSpeedChart","TooltipValue","TooltipTitle","TooltipDivider","propPayload","jobStartedPayload","isUtilization","containerHeight","getTooltipHeight","toolTip","toolTipLastWeek","ChartLabel","unitsPostfix","columnWidth","yOffset","textAnchor","DesktopSpeedChart","position","CustomizeAvailabilityChartdDot","X","Y","AvailabilityChartLabel","isNotReported","totalValue","DesktopAvailabilityChart","MobileCustomizeAvailabilityChartdDot","isTotalValue","MobileAvailabilityChart","CustomizedMobileTickAvailabilityChart","getTicksAvailabilityChart","MobileAvailabilityChartLabel","xForLabelWeek","xForLabelDay","FILTER_INIT_STATE","forceUncheckSiteIds","forceUncheckModelIds","isShiftModeSelected","foldedSiteIds","foldedModelIds","stateInitialized","defaultQueriesFilter","filterValue","isSelectedSystemsEverReported","isTimeFrameWasChangedFromJobAnalysisPage","filterStateReducer","allSystems","newModelIds","Set","modelId","newSiteIds","newSerialIds","selectedIds","newSelectedSystems","allSelectedIds","selectedId","allSerialsIdOfCurrentModel","allSelectedSerialsOfCurrentModel","selectedModelId","allSerialsOfCurrentSite","allSelectedSerialsOfCurrentSite","selectedSiteId","allcurrentModelSerialsIds","allCurrentSiteSerialIds","currentModelId","selectedSerials","currentSerialIds","isAtLeastOnePrinterInSiteSelected","currentSiteId","newSelectedSiteIds","isAtLeastOneSerialInSiteSelected","allSelectedSiteIds","allSellectedSerials","allcurrentSiteSerials","allModelsSelected","allModelSerialIds","selectedSitesIds","isCurrentSiteAlreadySelected","siteSerials","isSiteFullySelected","allSelectedSerials","selectedSerial","allSiteSystemSerials","newSiteSistemIds","allModelsSelectedIds","allSiteModelIds","selectedSiteModels","currentModelIds","newSelectedModelIds","selectedSerialIds","currentSystemSerials","newSelectedSerials","today","m","resultDate","customStartTimeModificator","customEndTimeModificator","cleanedResult","pickBy","identity","s","arrayName","_depth","foldedArray","isFilterPopUpOpen","reportsSelector","filterStateSelector","activeReprotSelector","filterStateBySystemGroup","isTimeFrameWasChangedFromJobAnalysisPageSelector","filterValueBySystemGroupSelector","isStateInitializedBySystemGroup","selectedSystemSerialsBySystemGroup","timeFrameSelector","selectedDateSelector","isSelectedSystemsEverReportedBySystemGroupSelector","isTodaySelector","endDateSelector","setAppUserParams","loadAppUserFullSuccess","loadPortalApiUrlSuccess","appUserReducer","userFirstName","userLastName","setReportTypes","applySavedUserProperties","setAppUserFull","setUserFirstName","setUserLastName","setUserEmail","screenHeight","pbiReportWidth","appUserSelector","userEmailSelector","screenWidthSelector","screenHeightSelector","pbiReportHeightSelector","pbiReportWidthSelector","profilePictureUrlSelector","appUsesr","apiUrlSelector","apiUrl","userAgreementSelector","userAgreement","userAgreementVersionSelector","userAgreementVersion","isReadOnlyRoleSelector","activeSystems","filterSitesReducer","apiData","totalSiteExtensions","extention","siteExtensions","modelFilters","systemFilters","apiFilterSitesNormalize","dates","dateFilters","dateFilter","dateRange","isDateRangeNull","isStartEndDateOnNull","initDate","range","apiFilterDatesNormalize","currentStateByType","activeSystemsLabel","updatedSystem","restSystems","updatedSystems","newState","oldState","sGroup","currentGroupWithEveReportedStatus","group","oldGroupState","systemWithStatus","newGroupState","updateFilterDataStateWithEverReportedStatus","activeReportSelector","filterDataSelector","filterDataBySystemGroupSelector","activeSystemsBySystemGroupSelector","filterDataByGroup","startDateSelector","allSystemsSelector","allSystemSerialsSelector","ticksName","currentTickArray","END","OFFSET","START","weekLastDayOffset","isFuture","Total","isDateInCurrentSelectedRange","startRealTimeRange","subDays","endRealTimeRange","isWithinInterval","start","end","startOfTodayWeek","endOfTodayWeek","todayQuarterStartDate","todayQuarterEndDate","todayYearStart","todayYearEnd","objectConverted","getOverviewProductionCardsAC","overviewCardsRequest","dataWithoutTitles","objectTitle","converted","utilizationTrend","averageAvailabilityTrend","errorDurationSeconds","maintenanceDurationSeconds","getOverviewImperssionsAvailabilityCardsAC","overviewImperssionsAvailabilityCardsRequest","customTimeframeParameters","getOverviewProductionRateCardAC","overviewProductionRateRequest","getOverviewProductivityCardAC","overviewProductivityRequest","getOverviewAchievementsAC","overviewAchievementsRequest","weeklyGoal","weeklyActual","weeklyPercentage","yearlyGoal","yearlyActual","yearlyPercentage","getOverviewProductionAllChartAC","overviewProductionAllChartsRequest","mappedData","totalProductionGraph","productionByHourGraph","getOverviewImpressionsAvailabilityChartsAC","overviewImpressionsAvailabilityChartsRequest","graphName","getOverviewSpeedChartAC","overviewSpeedChartRequest","getOverviewUtilizationChartAC","overviewUtilizationChartRequest","getOverviewReportMainRequestAC","overviewReportMainRequest","totalImpressionsMatrix","utilizationProductivityMatrix","impressionsByHourMatrix","getOverviewAvailabilityRequestAC","overviewReportAvailabilityRequest","availabilityMatrix","getMaxKeepAliveRequest","systemGroupType","maxKeepAliveValue","maxKeepAliveValueUtc","averageLoadingTime","weeklyCompleted","yearlyCompleted","timeOfLastMainResponse","timeOfLastAvailabilityResponseResponse","isOverviewMainRequestLoading","totalImpressions","isOverviewAvailabilityRequestLoading","overviewBySystemGroupSelector","overviewMaxKeepAliveSelector","overviewMaxKeepAliveUTCSelector","overviewTimeOfLastMainResponseSelector","overviewBySystemGroupYearlyPercentageSelector","overviewBySystemGroupYearlyGoalSelector","overviewBySystemGroupYearlyCompletedSelector","overviewBySystemGroupWeeklyPercentageSelector","overviewBySystemGroupWeeklyGoalSelector","overviewBySystemGroupWeeklyCompletedSelector","overviewBySystemGroupRecords","overviewBySystemGroup","overviewBySystemGroupProductionChart","overviewBySystemGroupUtilizationChart","overviewBySystemGroupSpeedChart","overviewBySystemGroupAvailabilityChart","userIdsWithSearchSelector","searchValue","userByIdSelector","goalsArraySelector","goals","getGoalEntryByIdSelector","goalId","convertGoalTypeSelector","goal","goalType","formatGoalCurrentValueSelector","formatGoalImpressionsValueSelector","achieved","goalLastUpdateNoteSelector","updateDate","dateModified","parseISO","updateAuthor","goalDateIndicatorSelector","iterationNum","currentVal","getDay","passed","schedulersSelector","schedulerByIdSelector","downloadErrorAndMaintenanceReportAC","downloadErrorAndMaintenanceReport","nameArray","dateSuffix","getTimelineDayViewRequest","timeLineData","getTimeLineDataRequest","mapTimeLineResponeToResultSortedObject","resultSummaryDataArray","resultTimeLineDataArray","systemTimeLineGraphResponse","systemTimeLineSummeryResponse","systemTimeLineGraphData","dataSummaryArray","systemTimeLineSummeryData","statusName","timeLineSortingObject","positionInOrder","firstDay","mapStringToDate","startYear","getAllWeekDaysObjects","dayObject","filteredByDate","statusDurationPercentage","getFullYear","nextDate","nextMonth","monthString","nextDay","nextDayString","splittedDate","getSystemPageCardsDataRequest","getSystemPageMessagesRequest","totalBottlesLoadedDataRequest","colorData","normalizedData","setAllNegativeValuesOfArrayToZero","getQualisetDataRequest","getImressionCardsRequest","getAvailabilityCardRequest","filterInkComparisonColorRecords","colorComparisonResponse","mapInkConsumptionTrend","c","unshift","mappedRecord","colorRecord","normalizeColorKeys","toLocaleLowerCase","jobAnalysisTotalCardsRequest","dataWithSystemGroup","totalProductionResponse","jobAnalysisChartCardsRequest","DtgFilterParameters","DtfFilterParameters","inkConsumptionPerUnitResponse","mediaWidthResponse","jobAnalysisChartsRequest","inkConsumptionTrendResponse","colorConsumptionResponse","jobAnalysisSetSelectedColors","isInkConsumptionPerJobValidToDownload","nameWithFileExtension","underscoreIndex","dateRangeName","jobAnalysisTotalImpressionsKPIRequest","jobAnalysisPrintingTimeKPIRequest","jobAnalysisInkConsumptionKPIRequest","apolloLastUpdate","volumeUnits","portalLanguage","tenantName","importedTenantId","realTimeRefreshRateSeconds","userSettingsReducer","userSettingsSelector","defaultSystemGroupSelector","userSystemGroupSelector","tenantNameSelector","importedTenantIdSelector","officeSelector","accountTypeSelector","refreshRealTimePeriodSelector","updateLogoutTimerDebounced","debounce","updateLogoutTimer","options","random","TimeModidficatorEnum","DtfCardsName","LengthUnits","VolumeUnits","TankType","DtgCardSizes","DtgSizes","DtfCardNames","DtgCardColors","DtgCardButtonID","PeriodTypes","ActiveReportsTypes","MobileTabsTypes","TimeFrameSelectorViews","tooMuchDataShortMsg","initialState","getSystemAnalysis","getSystemAnalysisNickNames","nicknameResponse","changeNickName","dateStr","getFileName","finalString","add","finalEndDateString","checkSystemAnalysisReportValidToDownload","openModalSchedulerPreview","saveAppUserLocaleStarted","saveAppUserLocaleSuccess","saveAppUserLocaleFailed","saveAppUserLocale","userLocaleUrl","localeCode","loadAppUserFullStarted","loadAppUserFullFailed","getAppUserFull","userFullUrl","setAppUserAgreementVersionAC","setAppUserAgreementVersion","version","agreementVersion","userAgreementUrl","setAppUserAgreementAC","setAppUserAgreement","isApproved","agreementApproved","loadPortalApiUrlStarted","loadPortalApiUrlFailed","getPortalApiUrl","portalApiUrl","MuiIconButton","CloseIcon","MuiCloseIcon","Notifier","displayed","setDisplayed","notifications","enqueueSnackbar","closeSnackbar","preventDuplicate","mapDispatchToProps","withSnackbar","palette","main","typography","useNextVariants","fontFamily","apiReducer","isLoadingAppUser","isSavingUser","isDeletingUser","isLoadingPbiDefinitions","isSavingGoals","isSavingScheduler","pendingInvitationUserIds","errors","toggleState","addPendingInvitation","dropPendingInvitation","addError","actionName","apiName","isInAction","getWeekStartEnv","paramName","defValue","parsed","getBooleanEnv","getNumberEnv","MAX_ATTEMPTS","getMaxLoadAttemptsEnv","apiStateReducer","createApiStateReducer","startedAction","successAction","failedAction","isDone","loadAttempts","dTGLastUpdate","dTFLastUpdate","isSiteExtensionIsLoaded","lastUpdateLabel","apiStateSelector","reportCurrentStateSelector","reportCurrentStateIsDoneSelector","reportsFilterDataSelector","reportsFilterDataIsDoneSelector","reportsFilterDataIsSiteExtensionIsLoadedSelector","dtgLastUpdateSelector","reportCurrentState","dtfLastUpdateSelector","apolloLastUpdateSelector","userById","newUser","userAllIds","userEntityReducer","customerById","customerAllIds","customerEntityReducer","siteById","siteAllIds","siteEntityReducer","systemById","systemAllIds","systemEntityReducer","goalById","goalFromApi","transformToGoal","schedulerById","newReport","schedulerAllIds","schedulerEntityReducer","entitiesReducer","goalsEntityReducer","activeReportReducer","reportsReducer","device","imageUrl","certificate","systemAnalysisReducer","overviewReducer","machineConfigReducer","jobSummaryReducer","jobAnalysisReducer","apiManagementReducer","systemPageReducer","isEverReportedReducer","middlewares","thunk","createStore","rootReducer","composeWithDevTools","applyMiddleware","en","de","use","initReactI18next","LanguageDetector","resources","fallbackLng","debug","interpolation","escapeValue","saveMissing","ns","defaultNS","returnObjects","on","lng","LinearProgress","MuiLinearProgress","to","AuthCallback","PageContainer","PageHeaderUIContainer","PageHeaderUISpacer","Paper","MuiPaper","Table","TableHead","MuiTableHead","TableHeadRow","TableHeadCell","TableBody","TableRow","TableCell","ButtonsTableCell","TableIconButton","MaskSmall","MaskBig","AvatarContainer","maskPositionTop","maskPositionLeft","maskWidth","maskHeight","AvatarImage","EditIcon","MuiEditIcon","HoverMask","AdminStar","RootUserStar","CustomizedToolTip","theme","pxToRem","textAlign","common","tooltipPlacementRight","Avatar","hoverMask","adminStar","rootUserStar","isTooltip","getToolTipText","disableHoverListener","placement","TransitionComponent","Fade","TransitionProps","StyledNavLink","NavLink","isHierarchicalPopupMenuItem","ChildrenList","List","PopupMenuItem","handleClose","setOpen","inner","ListItemInstance","ListItem","justifyContent","Collapse","unmountOnExit","disablePadding","PopupMenu","anchorEl","menuItems","isDrawer","RootRef","rootRef","SwipeableDrawer","onClose","onOpen","Popover","anchorOrigin","horizontal","transformOrigin","ModalPrompt","cb","fullScreen","answer","Dialog","DialogTitle","DialogContent","DialogContentText","DialogActions","autoFocus","AvatarTableCell","NameTableCell","LastNameTableCell","ScopeTableCell","GoalsTableCell","UsersTableRow","userEntry","userScope","isRowSelected","isPromptOpen","setPromptOpen","isShadowUser","noWrap","dangerouslySetInnerHTML","__html","isString","scopePart","disableRipple","stopPropagation","userScopeSelector","isUserRowSelectedSelector","ownProps","AvatarHeadCell","ButtonsHeadCell","NameHeadCell","LastNameHeadCell","ScopeHeadCell","GoalsHeadCell","UsersTable","tableBodyRef","isAllRowsSelected","isSomeRowsSelected","MuiDialog","paper","container","withMobileDialog","breakpoint","closeIconColor","closeIconPosition","maxWidth","disableBackdropClick","renderCloseButton","required","maxLength","minArrayLength","uniqueEmail","existing","lettersOnly","str","TextFieldStyled","MuiTextField","InputLabelProps","shrink","InputProps","TextField","helperText","StyledDropdownTreeSelect","DropdownTreeSelect","TreeSelectContainer","haveValue","TreeSelect","isPartiallySelectedTree","renderedValue","showPartiallySelected","hierarchical","FormHelperText","SwitchLabel","InfoIcon","MuiInfoIcon","MuiPopover","PopoverPaper","Switch","setAnchorEl","handlePopoverClose","Boolean","tip","justify","labelStyle","Grid","spacing","htmlFor","onMouseEnter","currentTarget","onMouseLeave","disableRestoreFocus","textTransform","MuiButton","ButtonOk","ButtonCancel","ButtonSpinner","CircularProgress","FormRow","MuiGrid","PopupButtons","UserForm","isSaving","allUsersButCurrentEmails","closeThisModal","modalUserIsNew","onSubmit","useCallback","validate","initialformData","useMemo","useForm","initialValues","handleSubmit","useField","noValidate","autoComplete","xs","sm","meta","touched","disableFocusListener","disableTouchListener","readOnly","isEmpty","HiddenFileInput","HiddenInputLabel","UserAvatarUpload","files","from","Congratulations","UserModalSuccess","isPendingInvitation","isInvitationPending","CreateUserModal","UserModalLayout","Modal","MuiModal","UserModal","ButtonHeader","Header1","h1","InputBase","MuiInputBase","SearchIcon","MuiSearchIcon","SearchBar","placeholder","SearchBarGeneric","RecaptchaWrapper","AccountManagement","isLoadingEntities","isCaptchaOpen","userIdForCaptcha","sitekey","SvgDownload","SvgWarning","SvgSuccess","SvgLoader","StyledButton","Container","Header","HeaderTitle","Card","TableHeader","TableHeaderTitle","ActionsCell","StatusCell","AnimatedLoader","Loader","ClickableText","isExpired","startIcon","TableSortLabel","thumbprint","ApiManagement","DaysBar","MonthsBar","DaysContainer","DaysLetter","DaysPassed","wrap","limit","GoalCalenderIndicator","passedDateIndicator","calenderLetters","letter","v","Goal","GoalHeader","GoalBody","GoalMain","md","Impressions","GoalName","h3","GoalInfoWrapper","GoalValue","CurrentValue","FormWrapper","FormButton","Fab","FormattedDate","h4","GoalItem","goalTypeStr","goalCurrentVal","goalImpVal","lastUpdateNote","goalEntry","goalsInput","Circular","TitleWrapper","Title","Goals","goalsEntries","entry","GoalItemContainer","isNeverReported","isEverReportedLoaded","SvgSearch","FilterSearcher","endAdornment","InputAdornment","SvgCheckedIcon","SvgHalfCheckedIcon","SvgFilterUnfoldIcon","SvgFilterFoldIcon","SystemRow","isThisSystemSelected","RowWrapper","LeftPart","CheckBox","NameWrapper","NameSpan","RightPart","ModelRow","filteredSerials","isFolded","setFolded","isThisModelSelected","serialsToRender","fSerials","allSerialsOfModel","filtered","currentPrinter","getFilteredSerials","printer1","printer2","totalCount","selectedCount","modelSystemSerialIds","modelSelectedSystemSerialIds","CheckedIconJSX","isSiteRow","SiteRow","filteredModels","isThisRowSelected","siteModels","filterModelsForThisSite","siteSystemSerialIds","siteSelectedSystemSerialIds","AllBtn","totalSystemCount","selectedSystemsCount","Wrapper","ScrollableContainer","LastEmptyBlock","FilterSystemsPopUpMenu","filteredSite","filteredModel","filteredSystem","filteredSites","filteredSitesByFilteredModels","foundedSite","filteredSitesByFilteredSerials","filteredModelsByFilteredSerials","filteredSystemsBySerial","isSiteAlreadyExist","isModelAlreadyExist","getFilteredSitesAndModelsAndSerials","selectedSystemGroupSelector","filterStateBySystemGroupSelector","filterValueSelector","filteredSitesSelector","fitleredModelsSelector","filteredSystemSelector","isSerialFounded","isNickNameFounded","FilterSlider","FilterSystemsPopUpMenuWrapper","ControlWrapper","SearchingBar","Slider","FilterSearcherContainer","OverviewDesktop","selectedSystemsRequest","allUserSystems","refreshTime","intervalRef","setIsMobile","useDebouncedCallback","debImperssionsAvailabilityCardsRequest","debProductionRateRequest","debProductivityRequest","debImpressionsAvailabilityChartsRequest","debSpeedChartRequest","debUtilizationChartRequest","debAchievementsRequest","isRealTimeRequest","argsObjWithAllSelectedSystems","debMaxKeepAliveRequest","debOverviewReportMainRequest","debOverviewReportAvailabilityRequest","getData","filterByPage","isTodayDateInCurrentSelectedRange","startInterval","BackArrowWrapper","FilterHeaderRow","CloseIconPlaceHolder","SystemsFilterContainerMobile","PbiFilterSystemsMobile","goBack","BackArrow","Drawer","anchor","SystemsFilterContainer","VerticalDevider","PbiFilterSystemsDesktop","onFunnelClickHandler","isSubReport","FunnelIcon","PbiFilterSystems","MAX_SYSTEMS_COUNT","withRouter","MobileDayPicker","activeTheme","MuiPickersUtilsProvider","utils","LocalizedUtils","enLocale","PickerWrapper","DatePicker","allowKeyboardControl","disableToolbar","minDate","maxDate","DateWeekPicker","renderDay","dayInCurrentMonth","dateClone","selectedDateClone","dayIsBetween","isFirstDay","isLastDay","wrapperClassName","cn","highlight","firstHighlight","endHighlight","dayClassName","nonCurrentMonthDay","highlightNonCurrentMonthDay","createStyles","dayWrapper","customDayHighlight","secondary","extend","borderTopLeftRadius","borderBottomLeftRadius","borderTopRightRadius","borderBottomRightRadius","FilterArrLeft","strokeLinecap","strokeLinejoin","ArrLeftIcon","Mobile","Desktop","DateTitle","FilterArrows","handleLeft","handleRight","disableLeft","disableRight","dateTitle","onHandleLeft","onHandleRight","DateWeekPickerMobile","parentComponent","SvgPrevDateIcon","strokeMiterlimit","SvgNextDateIcon","SvgNewCalendarIcon","SvgDatePickerPrevDateIcon","SvgDatePickerNextDateIcon","SvgDatePickerCloseIcon","SvgTimeSelectorArrowDown","SvgTimeSelectorArrowUp","TimeSelect","isDisabled","AMPMtogglerWrapper","AmPmValue","TimeSelectRow","TimeValue","ArrowWrapper","TimeRecordRow","isSelected","popUpStartTimeRowPositionStyle","popUpEndTimeRowPositionStyle","hoursArray","TimeSelector","selectorName","isHourSelectionDisabled","onHourChange","onTimeModificatorClickHandler","setIsOpen","onAmPmClickHandler","ClickAwayListener","onClickAway","closeAfterTransition","BackdropProps","invisible","BackdropComponent","Backdrop","Box","onTimeRowClickHandler","DatePickerWrapper","CustomTimeFrameFormWrapper","CustomTimeFrameForm","ButtonsRow","ButtonSubmit","CustomTimeFrameDateTimeSelectionRow","FormLabel","PickDateButton","YearSelector","MonthSelector","CalendarWrapper","CalendarRow","RowCell","RowCellHighlighted","ValueWrapper","MonthTimeframeCalendar","MonthButton","QuarterTimeframeCalendar","QuarterButton","YearTimeframeCalendar","YearButton","popUpstyle","SvgDatePickerPopUpWarningIcon","SvgDatePickerPopUpErrorIcon","TextWrapper","DatePickerPopUpErrorMessage","textColor","DatePickerPopUp","isDatePickerOpen","prevTimeframe","setIsDatePickerOpen","setIsCustomTimeFrameOpen","setCurrentDate","selectedRange","setSelectedRange","setIsPrevMonthDisabled","setIsNextMonthDisabled","setIsNextYearDisabled","setIsPrevYearDisabled","isPrevMonthDisabled","isNextMonthDisabled","isNextYearDisabled","isPrevYearDisabled","onDateClickHandler","isInBetweenStartDateAndLastUpdate","isFromButtonClicked","nextStartDate","endCustomDate","setStarCustomtDate","startCustomHour","endCustomHour","isToButtonClicked","nextEndDate","startCustomDate","setEndCustomtDate","weeks","eachWeekOfInterval","popUpHeight","getPopUpHeight","lastDayOfWeek","getLastDateForPeriod","setIsFromButtonClicked","setIsToButtonClicked","timeIntervalErrorMessage","setTimeIntervalErrorMessage","isSubmitDisable","setIsSubmitDisabled","isCustomTimeSelectionDisabled","setIsCustomTimeSelectionDisabled","setStartCustomHour","setEndCustomHour","AM","startTimeModificator","setStartTimeModificator","PM","endTimeModificator","setEndTimeModificator","eachDayOfInterval","isFromTimeBiggerThanTo","subYears","getYear","subMonths","addMonths","firstWeekDay","weeksArray","isSelectedRangeValue","isOpacity","isMoreThanStartAndLessTnanEndForWeek","isLeftBorder","isRightBorder","weekWidth","isFirstAndLastDaysOfSelectionAreSame","isShowHighLightForCustomTimeFrame","isFirstDayOfSelection","isLastDayofSelection","isInSelectionInterval","zIndex","eachMonthOfInterval","isSelectedMonth","eachQuarterOfInterval","isSelectedQuarter","isSameQuarter","eachYearOfInterval","isSelectedYear","endIcon","isDisable","NewDatePicker","isHovered","setIsHovered","whiteSpace","getDateStringForCustomTimeframe","getDateString","WeeksContainer","PbiFilterWeeks","weekStartDates","addWeeks","handleChange","cloneDate","weekStartDay","handleMobileChange","getActiveWeek","leftPart","rightPart","incrementedYear","subWeeks","labelFunc","noHelper","views","renderPicker","MobileWeekPicker","MobileMonthItem","MobileMonthItemHeader","MobileMonthItemBody","MobileMonthItemBodyRow","MobileMonthItemBodyRowItem","PbiFilterMonths","monthStartDates","years","MonthsItemCalendarComponent","yearName","currentMonth","MobileMonthPicker","PbiFilterMonthsContainer","MobileQuarterItem","MobileQuarterItemHeader","MobileQuarterItemBody","MobileQuarterItemBodyItem","EmptyLastBlock","PbiFilterQuarters","quarters","addQuarters","getStartQuarterByQuarterName","reverse","quarterName","quearterNumber","quertersToAdd","mapQuarters","q","reduce","acc","quartersKeys","currentQuarters","currentSelectedDate","startSelectedQuarter","selectedQuarter","onMobileQuarterClickHandler","subQuarters","MobileQuarterPicker","YearItem","PbiFilterYears","yearStartDates","toUpperCase","MobileYearPicker","appTheme","MuiPickersStaticWrapper","staticWrapperRoot","MuiPickersBasePicker","pickerView","MuiPickersCalendar","MuiPickersCalendarHeader","daysHeader","MuiPickersDay","daySelected","MuiTypography","alignCenter","fontStyle","MobileDatePicker","FORMAT_DATE","WEEK_DAYS","getWeekdays","getCalendarHeaderText","DateFnsUtils","Picker","MobilePicker","breakpoints","only","minWidth","transitionContainer","gridTemplateColumns","MuiPickersToolbar","toolbar","dayLabel","iconButton","borderColor","switchHeader","MuiPickersYearSelection","gridGap","MuiPickersYear","yearSelected","yearDisabled","MuiPickersMonthSelection","flexWrap","alignContent","MuiPickersMonth","monthSelected","monthDisabled","dayDisabled","MuiPickersModal","MuiInput","underline","borderBottomColor","MuiFormLabel","MuiFormHelperText","FilterDatePicker","openTo","currentTheme","getTheme","autoOk","renderPickerByParentComponenet","MobileView","PbiFilterDays","lowerDate","setLowerDate","onChangeActiveDay","PbiFilterCustom","customEndDate","nextCustomEndDate","isDisableRight","customStartDate","nextCustomStartDate","isDisableLeft","prevCustomStartDate","prevCustomEndDate","PbiFilterDateWrapper","PbiFilterDate","isCustomTimeFrameOpen","isCustomFilter","SvgDownloadIncConsupmtionPerJobIcon","SvgWarningIcon","SpinnerComponent","Div","MessageDiv","InkConsuptionPerJobButton","jobAnalysisBySystemGroupIsValidToDownloadInkConsuptionPerJobMessage","jobAnalysisBySystemGroupIsValidToDownloadInkConsuptionPerJobIsLoading","allUserSystemsCount","selectedSerialsIds","setIsDisabled","tooltipMessage","setTooltipMessage","isShowMessageIcon","isToShowButton","isBtnLoading","tabIndex","SvgFabricIcon","SvgTshirtIcon","SvgRocketIcon","newDashboard","allSystemsSelected","FormControl","MuiFormControl","InputLabel","MuiInputLabel","focused","items","noEmpty","formControlVariant","filteredItems","filteredValues","inputProps","IconComponent","KeyboardArrowDownIcon","TimeframeSelect","ButtonWrapper","TimeFrameSelector","nextTimeframe","DropDown","Mixed","HeaderButton","valueName","DesktopPbiFilterTimeFrame","isEmptyState","isShowInkPerJobButton","isShowSystemGroupFilter","handlePageChange","handleLastUpdateClick","timeFrameSelectionView","setTimeFrameSelectionView","Buttons","isTodayDisabled","selectedDateByGroup","SvgMobilePbiFilterCloseIcon","TimeframeButtonStyled","TimeframeButton","setIsActive","elementWidth","getElementWidth","ButtonGroup","CloseButton","MobilePbiFilterTimeFrame","PbiFilterTimeframe","isReadOnlyRole","capitalize","selectedTim","selectedtimeframe","CalendarIcon","SvgIcon","MobileModalDatePicker","PbiFilterTimelinePlaceHolder","DatePickerPlaceHolder","TodayButtonPlaceHolder","TodayButton","MobileFilterCalendarModal","onDone","topBorder","PbiFilterDateContainer","ButtonOkFilter","FilterModal","FilterCalendarContainer","DesktopFilterCalendarModal","FilterCalenderModal","setActiveDay","SvgServiceTicketIcon","_circle2","_circle3","_circle4","_circle5","_circle6","FilterContainer","FilterSubContainer","MobileIconWrapper","MobileDateWrapper","ServiceTicketResponsiveContainer","ServiceTicketHeaderWrapper","ServiceTicketIconWrapper","ServiceTicketTextnWrapper","PbiFilter","filterDataLoaded","filterStateLoaded","selectedSiteIdsStringified","selectedModelIdsStringified","selectedSystemSerialsStringified","filterDataAndStateLoaded","urlParams","isValid","onOpenCalendarModal","SystemAnalysis","lazy","JobAnalysis","getFilterHideEnv","RepotPageWrapper","PbiReportsPage","isStateInitialized","selectedSystems","routerActiveReport","reportType","routerActiveSubReport","subReportType","mainReportNames","mainReportsMap","EmptyState","fallback","SvgKornitLogo","SvgSyncIcon","SvgPrinterIcon","VersionLabel","VersionLabelHeader","_ellipse2","_ellipse3","_ellipse4","_ellipse5","_ellipse6","packageJson","envName","NavContainer","NavElement","DesktopNav","DesktopNavIcon","DesktopShellReportsNav","navLinks","image","SvgMobileDrawerLogo","SvgMobileDrawerOverviewIcon","SvgMobileDrawerSystemAnalysisIcon","SvgMobileDrawerJobAnalysisIcon","LogoLink","Link","LinkItem","StatusBar","Text","MobileShellReportsNavItem","linkText","getLinkIcon","MobileNavContainer","LogoPlaceHolder","MobileShellReportsNav","ShellReportsNav","useHistory","appUserRoles","KONNECT_TRAINING_LINK","helpChildren","reload","getShowVersionLabel","AppBar","MuiAppBar","Toolbar","MuiToolbar","LogoContainer","StyledAvatar","LastUpdateTimeWrapper","LastUpdateTimeLeftPart","LastUpdateTimeRightPart","LastUpdateTimeTopPart","LastUpdateTimeText","ActiveSystemWrapper","ActiveSystemLeftPart","ActiveSystemRightPart","ActiveSystemTextBold","ActiveSystemText","Cell","LoadingText","ShellHeaderDesktop","activeSystemsMap","checkedLastUpdate","lastResponseUpdateTime","SvgBurgerMobile","BurgerMobile","toggleDrawer","SvgKornitIconMobile","SvgKornitNameIcon","SvgPrinterIconMobile","MobileHeaderWrapper","LeftSide","BurgerPlaceHolder","LogoItemPlaceHolder","RightSide","LastUpdatePlaceHolder","LastUpdateUpperRow","LastUpdateUpperRowSpan","LastUpdateBottomRow","AvatarPlaceHolder","LoadingPlaceHolder","LogoBlock","CustomerName","ShellHeaderMobile","ShellHeader","lastUpdateDTF","lastUpdateDTG","lastUpdateApollo","isMobileView","appUserRolesFromStore","component","render","allowedRoles","role","BottomPrompt","Dismiss","CookiesPrompt","promptEl","href","rel","StyledModal","StyleText","StyleLink","StyledFormControlLabel","FormControlLabel","StyledCheckbox","Checkbox","StyledLayout","StyledWrapperContent","StyledWrapperCheckBox","TermsModal","setChecked","control","DE","US","StyledLabel","StyledWrapperLabelIcon","StyledLabelText","StyledFormControl","StyledRadio","Radio","RadioLangGroup","defaultValue","renderLabel","flagIcon","flagName","Flags","RadioGroup","labelPlacement","StyledToggleButtonGroup","StyledToggleButton","ToggleGroup","Section","SectionTitleWrapper","SectionTitle","SectionList","SectionListItem","SectionListItemWrapper","SectionListItemLeftPart","SectionListItemTitle","SectionListItemRightPart","SettingsWrapper","MobileSettings","updatedSettings","handleChangeDefaultValue","handleChangeLength","handleChangeMetrics","handleChangeLang","Yard","Meter","Linear","Settings","debouncedSetAppUserSettings","setUpdatedSettings","newVal","isShowSettings","groups","CircularSpinner","TableRowGeneric","TableCellGeneric","SubjectCell","ReportCell","TimeCell","RepeatCell","LastSentCell","NotesCell","SendingCell","ButtonsTableCellGeneric","SchedulerTableRow","w","SubjectHeadCell","ReportHeadCell","TimeHeadCell","RepeatHeadCell","LastSentHeadCell","NotesHeadCell","SendingHeadCell","SchedulerTable","schedulerIds","ModalHeader","ModalForm","TimePicker","h2","FilterTimePicker","WeekdayContainer","Weekday","isChecked","WeekdaysSelectorContainer","WeekdaysSelector","wDays","k","inArray","MuiRadioGroup","MuiFormControlLabel","MuiRadio","RadiosField","labels","fieldLabel","FormSelect","SchedulerForm","formData","scopeStrings","initialFormData","startOfDay","repeatTypes","multiline","rowsMax","SchedulerModal","modalSchedulerIsNew","ModalHeaderGeneric","PreviewBody","LastSent","Name","ReportType","Repeat","Dates","Hr","NotesHeader","NotesBody","PreviewCircularSpinner","SchedulerPreview","isLoadingTypes","AGREEMENT_VERSION","getAppUserAgreementVersionEnv","ShellContainer","ContentContainer","Shell","updateDimensions","innerWidth","innerHeight","debouncedUpdateDimensions","picture","given_name","family_name","localePropName","language","changeLanguage","document","addEventListener","hidden","removeEventListener","Helmet","exact","SvgNewLogo","SvgLetterUnsubscribe","SvgMailCover","UnsubscribeBackground","UnsubscribeGridWrapper","Logo","Footer","UnsubscribeGridPlaceHolder","UnsubscriberRow","WeAreSorryWrapper","EmailInputField","EmailStringWrapper","AreYouSureWrapper","NotificationPlaceHolder","NotificationSuccess","NotificationFailed","StyledInput","Unsubscribe","START_TOKEN_INDEX","setEmail","setLoading","loaded","setLoaded","setError","urlPerEnv","clickHandler","urlRequest","inputValue","fetch","body","ok","json","SvgAppIconSuperUserPage","LoginPage","LoginWrapper","ConfirmButton","ErrorMessageWrapper","EmptyBox","StyledAutocomplete","Autocomplete","SuperUserLoginPage","setValue","setIsLoading","setErrorMessage","userList","setUserList","sessionToken","selectedUser","setSelectedUser","then","sortedUsers","user1","user2","catch","getOptionSelected","option","renderOption","onOptionClickHandler","onBlur","onBlureHandler","renderInput","newValue","onChangeHandler","res","callbackUrl","DocViewer","docName","documentName","getHeaderName","App","useContext","routerProps","SuperUserLoginPageContainer","UnsubscribeContainer","StyledContainer","ErrorBoundary","hasError","setState","generateClassName","createGenerateClassName","jss","create","jssPreset","insertionPoint","getElementById","AppContainer","StylesProvider","CssBaseline","maxSnack","autoHideDuration","ReactDOM","getJobSummaryCardsRequest","dtgFilterParameters","mediaType","impressionSize","black","small","medium","large","colorString","getModeSummaryCardsRequest","dtfFilterParameters","ProdSolid","Quality","QualitySolid"],"mappings":"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","file":"static/js/main.3abdac0d.chunk.js","sourcesContent":["import { createSelector } from 'reselect';\r\nimport i18next from 'i18next';\r\n\r\nimport { Store, Entries, Ids } from 'store/storeTypes';\r\nimport { CustomerData } from 'models/CustomerData';\r\nimport { SiteData } from 'models/SiteData';\r\nimport { SystemData } from 'models/SystemData';\r\nimport { userIdFromPropsSelector } from './propsSelectors';\r\nimport {\r\n usersSelector,\r\n userIdsSelector,\r\n customersSelector,\r\n customerIdsSelector,\r\n sitesSelector,\r\n systemsSelector,\r\n} from './entitiesSelectors';\r\nimport { userPermissionsToRoles } from 'helpers/conversions';\r\n\r\n// ----------- UI selectors ----------\r\n\r\nexport const userFormSelector = (state: Store) => state.ui.userForm;\r\nexport const selectedUserRowsSelector = (state: Store) => state.ui.selectedUserRows;\r\nexport const isAllRowsCheckedSelector = (state: Store) =>\r\n state.entities.users.allIds.length === state.ui.selectedUserRows.length;\r\nexport const userSearchSelector = (state: Store) => {\r\n return state.ui.userSearch;\r\n};\r\n\r\n/** Needed to check if user email is uniqueEmail */\r\nexport const allUsersButCurrentEmailsSelector = createSelector(\r\n [usersSelector, userIdsSelector, userFormSelector],\r\n (userByIds, userIds, userForm) => {\r\n return userIds.filter(id => id !== userForm.id).map(id => userByIds[id].email);\r\n }\r\n);\r\n\r\n/**\r\n * Selector factories (named like makeSomeSelector) are needed for components with multiple\r\n * instances, because selectors have only cache size of 1.\r\n * Details are here: {@link https://github.com/reduxjs/reselect}\r\n */\r\nexport const makeIsUserRowSelectedSelector = () =>\r\n createSelector([userIdFromPropsSelector, selectedUserRowsSelector], (userId, selectedUserRows) =>\r\n selectedUserRows.includes(userId)\r\n );\r\n\r\nexport const userCustomerIdsSelector = createSelector(\r\n [usersSelector, userIdFromPropsSelector, userFormSelector],\r\n (users, userId, form) => (userId ? users[userId].customerIds : form.customerIds)\r\n);\r\n\r\nexport const userSiteIdsSelector = createSelector(\r\n [usersSelector, userIdFromPropsSelector, userFormSelector],\r\n (users, userId, form) => (userId ? users[userId].siteIds : form.siteIds)\r\n);\r\n\r\nexport const userSystemIdsSelector = createSelector(\r\n [usersSelector, userIdFromPropsSelector, userFormSelector],\r\n (users, userId, form) => (userId ? users[userId].systemIds : form.systemIds)\r\n);\r\n\r\nexport const makeUserScopeStringSelector = () =>\r\n createSelector(\r\n [\r\n // Entities data selectors\r\n customersSelector,\r\n customerIdsSelector,\r\n sitesSelector,\r\n systemsSelector,\r\n\r\n // User data selectors\r\n userCustomerIdsSelector,\r\n userSiteIdsSelector,\r\n userSystemIdsSelector,\r\n ],\r\n scopeStringPrepare\r\n );\r\n\r\nexport const schedulerFormCustomersSelector = (state: Store) => state.ui.schedulerForm.customerIds;\r\nexport const schedulerFormCustomerIdsSelector = (state: Store) =>\r\n state.ui.schedulerForm.customerIds;\r\nexport const schedulerFormSystemsSelector = (state: Store) => state.ui.schedulerForm.siteIds;\r\n\r\nexport const schedulerMarkedCustomersSelector = (state: Store) =>\r\n state.ui.schedulerForm.customerIds;\r\nexport const schedulerMarkedSitesSelector = (state: Store) => state.ui.schedulerForm.siteIds;\r\nexport const schedulerMarkedSystemsSelector = (state: Store) => state.ui.schedulerForm.systemIds;\r\n\r\nexport const schedulerScopeStringSelector = () =>\r\n createSelector(\r\n [\r\n // Entities data selectors\r\n customersSelector,\r\n customerIdsSelector,\r\n sitesSelector,\r\n systemsSelector,\r\n\r\n // User data selectors\r\n schedulerFormCustomersSelector,\r\n schedulerFormSystemsSelector,\r\n schedulerMarkedSystemsSelector,\r\n ],\r\n scopeStringPrepare\r\n );\r\n\r\n/**\r\n * Makes an array of strings representing systems account has an access to.\r\n * Possible string forms:\r\n * \"All\"\r\n * \"Customer(s) / All\"\r\n * \"Customer / Site(s) / All\"\r\n * \"Customer / Site / System(s)\"\r\n */\r\nconst scopeStringPrepare = (\r\n customersById: Entries,\r\n orgIds: Ids,\r\n sitesById: Entries,\r\n systemsById: Entries,\r\n userOrgIds: Ids,\r\n userSiteIds: Ids,\r\n userSystemIds: Ids\r\n) => {\r\n // Resulting array of strings.\r\n const scopeParts: string[] = [];\r\n\r\n // Arrays of sites/systems filtered off elements covered by parents\r\n let inScopeSiteIds: string[] = userSiteIds;\r\n let inScopeSystemIds: string[] = userSystemIds;\r\n\r\n // Loop through user customers, make strings of customers with all sites granted\r\n const scopeOrgs: string[] = [];\r\n const scopeOrgIds: string[] = [];\r\n userOrgIds.forEach(orgId => {\r\n // Screen possible DB inconsistencies\r\n if (customersById[orgId]) {\r\n scopeOrgs.push(customersById[orgId].name);\r\n scopeOrgIds.push(orgId);\r\n\r\n // Filter off sites and systems of granted customers. There should not be\r\n // anything to filter here if our data is correct. But just for the case.\r\n inScopeSiteIds = inScopeSiteIds.filter(\r\n siteId => sitesById[siteId] && sitesById[siteId].customerId !== orgId\r\n );\r\n inScopeSystemIds = inScopeSystemIds.filter(\r\n systemId => systemsById[systemId] && systemsById[systemId].customerId !== orgId\r\n );\r\n } else {\r\n // TODO: throw an exception (error handling needed)\r\n }\r\n });\r\n\r\n // If all customers are granted to user, just return 'All'\r\n if (scopeOrgIds.sort().join(',') === orgIds.sort().join(',')) {\r\n return [i18next.t('userForm.all')];\r\n }\r\n // If not - from the scope representation string\r\n scopeOrgs.length && scopeParts.push(`${scopeOrgs.join(', ')} / ${i18next.t('userForm.all')}`);\r\n\r\n // Loop through user sites, make strings of sites with all systems granted\r\n // Sites are grouped by customers in temporary object\r\n const siteByOrg: { [key: string]: string[] } = {};\r\n inScopeSiteIds.forEach(siteId => {\r\n // Screen possible DB inconsistencies\r\n if (sitesById[siteId] && customersById[sitesById[siteId].customerId]) {\r\n const site = sitesById[siteId];\r\n const orgName = customersById[site.customerId].name;\r\n\r\n // If object property is already exist - push, if not - create new array\r\n if (siteByOrg[orgName]) {\r\n siteByOrg[orgName].push(site.name);\r\n } else {\r\n siteByOrg[orgName] = [site.name];\r\n }\r\n\r\n // Filter off systems of granted sites\r\n inScopeSystemIds = inScopeSystemIds.filter(\r\n systemId => systemsById[systemId] && systemsById[systemId].siteId !== siteId\r\n );\r\n } else {\r\n // TODO: throw an exception (error handling needed)\r\n }\r\n });\r\n Object.keys(siteByOrg).forEach(org => {\r\n scopeParts.push(`${org} / ${siteByOrg[org].join(', ')} / ${i18next.t('userForm.all')}`);\r\n });\r\n\r\n // Loop through systems left, make strings of systems.\r\n // Systems are being grouped by site and have additional field for that site's org\r\n const systemBySite: {\r\n [key: string]: { org: string; systems: string[] };\r\n } = {};\r\n inScopeSystemIds.forEach(systemId => {\r\n // Screen possible DB inconsistencies\r\n if (\r\n systemsById[systemId] &&\r\n sitesById[systemsById[systemId].siteId] &&\r\n customersById[systemsById[systemId].customerId]\r\n ) {\r\n const system = systemsById[systemId];\r\n const siteName = sitesById[system.siteId].name;\r\n\r\n // If object property is already exist - push, if not - create new array\r\n if (systemBySite[siteName]) {\r\n systemBySite[siteName].systems.push(system.serialNumber);\r\n } else {\r\n systemBySite[siteName] = {\r\n org: customersById[system.customerId].name,\r\n systems: [system.serialNumber],\r\n };\r\n }\r\n } else {\r\n // TODO: throw an exception (error handling needed)\r\n }\r\n });\r\n Object.keys(systemBySite).forEach(site => {\r\n const { org, systems } = systemBySite[site];\r\n scopeParts.push(`${org} / ${site} / ${systems.join(', ')}`);\r\n });\r\n\r\n if (scopeParts.length === 0) {\r\n scopeParts.push(i18next.t('userForm.allTheData'));\r\n }\r\n\r\n return scopeParts;\r\n};\r\n\r\nexport const appUserToRoles = (state: Store) =>\r\n userPermissionsToRoles((state.appUser && state.appUser.permissions) || []);\r\n","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgDashboard(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M12 2C5.3835 2 0 7.3835 0 14C0 16.6108 0.8355 19.1007 2.4165 21.2015L2.64075 21.5H21.3585L21.5835 21.2015C23.1645 19.1007 24 16.6108 24 14C24 7.3835 18.6165 2 12 2ZM11.2501 4.24999H12.7501V6.49999H11.2501V4.24999ZM2.2501 14.75H4.5001V13.25H2.2501V14.75ZM6.16647 9.22696L4.57572 7.63622L5.63622 6.57497L7.22697 8.16572L6.16647 9.22696ZM10.7182 14.6165C11.0595 15.3717 11.9475 15.707 12.7027 15.3665C13.458 15.026 13.794 14.1372 13.4527 13.3827C13.1122 12.6275 8.99997 7.16373 8.99997 7.16373C8.99997 7.16373 10.3777 13.862 10.7182 14.6165ZM17.8337 9.22696L16.7732 8.16646L18.3639 6.57497L19.4244 7.63547L17.8337 9.22696ZM19.5 13.25V14.75H21.75V13.25H19.5Z\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgDashboard);\nexport default __webpack_public_path__ + \"static/media/Dashboard.5a8c2180.svg\";\nexport { ForwardRef as ReactComponent };","var _rect, _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgChart(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 32,\n height: 32,\n viewBox: \"0 0 32 32\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n width: 32,\n height: 32,\n rx: 6\n })), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M27.733 22.4H17.0664L21.8696 17.5968L17.0258 12.2155L11.4205 17.8208C11.0034 18.2379 10.3293 18.2379 9.91225 17.8208L4.57891 12.4875C4.16185 12.0704 4.16185 11.3963 4.57891 10.9792C4.99598 10.5622 5.67011 10.5622 6.08718 10.9792L10.6664 15.5584L16.3122 9.91257C16.5117 9.71204 16.7837 9.60004 17.0664 9.60004C17.3714 9.60004 17.6584 9.73017 17.8589 9.9531L23.3789 16.0864L27.733 11.7334V22.4Z\",\n fill: \"white\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgChart);\nexport default __webpack_public_path__ + \"static/media/Chart.6f6d45ee.svg\";\nexport { ForwardRef as ReactComponent };","import { UserSystemGroupStrings } from 'store/storeTypes';\r\nimport * as React from 'react';\r\nimport { ReactComponent as Tshirt } from '../../assets/icons/T-shirt.svg';\r\nimport { ReactComponent as Fabric } from '../../assets/icons/fabricIconNoColor.svg';\r\nimport { ReactComponent as Dashboard } from '../../assets/icons/Dashboard.svg';\r\nimport { ReactComponent as Chart } from '../../assets/icons/Chart.svg';\r\nimport { ReactComponent as Dislike } from '../../assets/icons/dislikeWithCircle.svg';\r\nimport { ReactComponent as Like } from '../../assets/icons/likeWithCircle.svg';\r\nconst TSHIRT_OLD_STANDART_SIZE = 37;\r\nconst FABRIC_OLD_STANDART_SIZE = 20;\r\nexport const productionIcon = (\r\n selectedSystemGroup: UserSystemGroupStrings,\r\n width?: number,\r\n height?: number\r\n) => {\r\n return {\r\n positive:\r\n selectedSystemGroup === 'DTG' || selectedSystemGroup === 'Apollo' ? (\r\n \r\n ) : (\r\n \r\n ),\r\n negative:\r\n selectedSystemGroup === 'DTG' || selectedSystemGroup === 'Apollo' ? (\r\n \r\n ) : (\r\n \r\n ),\r\n };\r\n};\r\nexport const dashboardIcon = {\r\n positive: ,\r\n negative: ,\r\n};\r\nexport const chartIcon = {\r\n positive: ,\r\n negative: ,\r\n};\r\nexport const likeIcon = {\r\n positive: ,\r\n negative: ,\r\n};\r\n","import { Granularity, GranularityEnum } from './../store/storeTypes';\r\nimport { format, isAfter, isSameDay, isSameHour, isSameMonth, isSameWeek, parse } from 'date-fns';\r\nimport { TimeFrame } from 'models/ReportData';\r\nimport { CartesianGridProps } from 'recharts';\r\nimport { ActiveOverviewChart, UserSystemGroup, UserSystemGroupStrings } from 'store/storeTypes';\r\n\r\n//format xaxis label for overview charts\r\ntype FormatTickProps = {\r\n value: string;\r\n timeframe: TimeFrame;\r\n selectedSystemGroup: UserSystemGroupStrings;\r\n};\r\n\r\nexport const formatTicksForInkConsumptionDayAndWeekTimeframe = ({\r\n value,\r\n timeframe,\r\n selectedSystemGroup,\r\n}: FormatTickProps) => {\r\n if (selectedSystemGroup === UserSystemGroup.DTF) {\r\n return value;\r\n } else {\r\n if (timeframe === 'day') {\r\n return `${value}`;\r\n }\r\n if (timeframe === 'week') {\r\n //*timeframe is week\r\n return `${value.split(' ')[0]}`;\r\n }\r\n if (timeframe === 'month') {\r\n } else {\r\n return value;\r\n }\r\n }\r\n};\r\n\r\nexport const formatTicksForTotalProductionAndAvailabilityDayAndWeekTimeframe = ({\r\n value,\r\n timeframe,\r\n selectedSystemGroup,\r\n}: FormatTickProps) => {\r\n if (selectedSystemGroup === UserSystemGroup.DTF) {\r\n return value;\r\n } else {\r\n if (timeframe === 'day') {\r\n return `${value.slice(0, 5)}`;\r\n } else {\r\n //*timeframe is week\r\n return `${value.split(' ')[0]}`;\r\n }\r\n }\r\n};\r\n//*tooltip helpers\r\nexport const getUnitsForTooltip = (\r\n systemGroup: string,\r\n chart: string,\r\n typeOfChart?: string,\r\n lengthUnits?: string\r\n): 'imp' | 'm²' | 'ft²' | '%' => {\r\n if (systemGroup === UserSystemGroup.DTF) {\r\n if (chart === 'speedChart') {\r\n const result =\r\n typeOfChart === ActiveOverviewChart.Utilization\r\n ? '%'\r\n : lengthUnits === 'Meter'\r\n ? 'm²'\r\n : 'ft²';\r\n return result;\r\n }\r\n }\r\n return 'imp';\r\n};\r\n\r\nexport const barChartsVerticalLinesGenerator = (\r\n args: {\r\n xAxis: CartesianGridProps['xAxis'];\r\n width: CartesianGridProps['chartWidth'];\r\n height: CartesianGridProps['chartHeight'];\r\n offset: CartesianGridProps['offset'];\r\n },\r\n dataLength: number,\r\n timeFrame?: string,\r\n chartName?: string\r\n): number[] => {\r\n const coords = [];\r\n if (dataLength === 0) {\r\n return [];\r\n }\r\n for (let i = 0; i <= dataLength + 1; i++) {\r\n let border = args.offset!.left! + (i * args.offset!.width!) / dataLength;\r\n if (chartName === 'inkConsumption' && timeFrame === 'week') {\r\n const perCent = border / 100;\r\n if (i === 1) {\r\n border = border - 10 * perCent;\r\n }\r\n if (i === 2) {\r\n border = border - 5 * perCent;\r\n }\r\n if (i === 5) {\r\n border = border + 1 * perCent;\r\n }\r\n if (i === 6) {\r\n border = border + 2 * perCent;\r\n }\r\n }\r\n if (chartName === 'inkConsumption' && timeFrame === 'year') {\r\n const perCent = border / 100;\r\n if (i === 1) {\r\n border = border - 15 * perCent;\r\n }\r\n if (i === 2) {\r\n border = border - 7 * perCent;\r\n }\r\n if (i === 3) {\r\n border = border - 3 * perCent;\r\n }\r\n if (i === 4) {\r\n border = border - 2 * perCent;\r\n }\r\n if (i === 9) {\r\n border = border + 1 * perCent;\r\n }\r\n if (i === 10) {\r\n border = border + 2 * perCent;\r\n }\r\n if (i === 11) {\r\n border = border + 2 * perCent;\r\n }\r\n }\r\n\r\n coords.push(border);\r\n }\r\n\r\n return coords;\r\n};\r\n\r\n//*job analysis graphs start\r\nexport const getXAxisTickFontSizeColorConsumptionTrendChart = (\r\n screenWidth: number,\r\n timeFrame: TimeFrame,\r\n isMobile?: boolean\r\n): number => {\r\n switch (timeFrame) {\r\n case 'year':\r\n return (screenWidth / 100) * 3;\r\n\r\n default:\r\n break;\r\n }\r\n};\r\nexport const getXAxisPaddingColorConsumptionTrendChart = (\r\n screenWidth: number,\r\n timeFrame: TimeFrame\r\n): number => {\r\n switch (timeFrame) {\r\n case 'month':\r\n return (screenWidth / 100) * 8;\r\n case 'year':\r\n return (screenWidth / 100) * 3;\r\n case 'quarter':\r\n return (screenWidth / 100) * 12;\r\n case 'week':\r\n return (screenWidth / 100) * 6;\r\n default:\r\n return 0;\r\n }\r\n};\r\n\r\nexport const getXAxisTicksNameColorConsumptionTrendChart = (\r\n args: string,\r\n timeFrame: TimeFrame,\r\n isMobile?: boolean\r\n): string => {\r\n switch (timeFrame) {\r\n case 'year':\r\n return getXAxisNameForYear(args);\r\n case 'quarter':\r\n return getXAxisNameForQuarterAndYear(args);\r\n case 'day':\r\n return args;\r\n case 'week':\r\n return getXAxisNameForWeek(args);\r\n case 'month':\r\n return '';\r\n default:\r\n return '-';\r\n }\r\n};\r\nconst getXAxisNameForMonth = (args: string) => {\r\n return args;\r\n};\r\nconst getXAxisNameForWeek = (args: string): string => {\r\n return args\r\n .split('')\r\n .splice(0, 3)\r\n .join('');\r\n};\r\nconst getXAxisNameForYear = (args: string) => {\r\n //income str in format \"202304\"\r\n //output should be \"Apr\"\r\n return getXAxisNameForQuarterAndYear(args);\r\n};\r\nconst getXAxisNameForQuarterAndYear = (dateString: string) => {\r\n //income str in format \"202304\"\r\n //output should be \"Apr\"\r\n const year = dateString.slice(0, 4);\r\n const month = dateString.slice(4, 6);\r\n const date = parse(`${year}-${month}-01`, 'yyyy-MM-dd', new Date());\r\n return format(date, 'MMM');\r\n};\r\n\r\ntype ChartRadius = { innerRadius: number; outerRadius: number };\r\nexport const getPieChartRadius = (screenWidth: number): ChartRadius => {\r\n if (screenWidth >= 1920) {\r\n return { innerRadius: 70, outerRadius: 85 };\r\n }\r\n if (screenWidth >= 1600 && screenWidth < 1920) {\r\n return { innerRadius: 70, outerRadius: 85 };\r\n }\r\n if (screenWidth >= 1440 && screenWidth < 1600) {\r\n return { innerRadius: 60, outerRadius: 75 };\r\n }\r\n if (screenWidth >= 1366 && screenWidth < 1440) {\r\n return { innerRadius: 50, outerRadius: 65 };\r\n }\r\n\r\n return { innerRadius: 110, outerRadius: 120 };\r\n};\r\ntype Size = { height: number; width: number };\r\n\r\nexport const getPieChartButtonSize = (chartWrapperHeight: number): Size => {\r\n //*occures on 1366*768\r\n if (chartWrapperHeight > 140 && chartWrapperHeight < 170) {\r\n return { height: 24, width: 26 };\r\n }\r\n //*1600 * 900\r\n if (chartWrapperHeight > 260 && chartWrapperHeight < 300) {\r\n return { height: 25, width: 25 };\r\n }\r\n //*1920 * 1080\r\n if (chartWrapperHeight > 400) {\r\n return { height: 36, width: 36 };\r\n } else {\r\n return { height: 36, width: 36 };\r\n }\r\n};\r\nexport const getColorCompareChartHeight = (pbiReportHeight: number): number => {\r\n if (pbiReportHeight <= 567) {\r\n return 180;\r\n }\r\n if (pbiReportHeight >= 879) {\r\n return 250;\r\n }\r\n return 200;\r\n};\r\nexport type GraphMargin = {\r\n marginRight: number;\r\n marginLeft: number;\r\n};\r\nexport const getMarginForProductionGraphCustomTimeFrameAndDay = (\r\n columnsCount: number,\r\n screenWidth: number,\r\n isMachineFilterOpen: boolean\r\n): GraphMargin => {\r\n if (screenWidth === 1920) {\r\n if (columnsCount === 2) {\r\n const machimeFilterOffset = 54;\r\n return {\r\n marginLeft: isMachineFilterOpen ? 442 - machimeFilterOffset : 442,\r\n marginRight: isMachineFilterOpen ? 442 - machimeFilterOffset : 442,\r\n };\r\n }\r\n if (columnsCount === 3) {\r\n const machimeFilterOffset = 36;\r\n\r\n return {\r\n marginLeft: isMachineFilterOpen ? 295 - machimeFilterOffset : 295,\r\n marginRight: isMachineFilterOpen ? 295 - machimeFilterOffset : 295,\r\n };\r\n }\r\n if (columnsCount === 4) {\r\n const machimeFilterOffset = 28;\r\n\r\n return {\r\n marginLeft: isMachineFilterOpen ? 220 - machimeFilterOffset : 220,\r\n marginRight: isMachineFilterOpen ? 220 - machimeFilterOffset : 220,\r\n };\r\n }\r\n if (columnsCount === 5) {\r\n const machimeFilterOffset = 20;\r\n\r\n return {\r\n marginLeft: isMachineFilterOpen ? 175 - machimeFilterOffset : 175,\r\n marginRight: isMachineFilterOpen ? 175 - machimeFilterOffset : 175,\r\n };\r\n }\r\n if (columnsCount === 6) {\r\n const machimeFilterOffset = 14;\r\n\r\n return {\r\n marginLeft: isMachineFilterOpen ? 145 - machimeFilterOffset : 145,\r\n marginRight: isMachineFilterOpen ? 145 - machimeFilterOffset : 145,\r\n };\r\n }\r\n if (columnsCount === 7) {\r\n const machimeFilterOffset = 14;\r\n\r\n return {\r\n marginLeft: isMachineFilterOpen ? 128 - machimeFilterOffset : 128,\r\n marginRight: isMachineFilterOpen ? 128 - machimeFilterOffset : 128,\r\n };\r\n }\r\n if (columnsCount === 8) {\r\n const machimeFilterOffset = 10;\r\n\r\n return {\r\n marginLeft: isMachineFilterOpen ? 110 - machimeFilterOffset : 110,\r\n marginRight: isMachineFilterOpen ? 110 - machimeFilterOffset : 110,\r\n };\r\n }\r\n if (columnsCount === 9) {\r\n const machimeFilterOffset = 7;\r\n return {\r\n marginLeft: isMachineFilterOpen ? 95 - machimeFilterOffset : 95,\r\n marginRight: isMachineFilterOpen ? 95 - machimeFilterOffset : 95,\r\n };\r\n }\r\n if (columnsCount === 10) {\r\n const machimeFilterOffset = 8;\r\n\r\n return {\r\n marginLeft: isMachineFilterOpen ? 88 - machimeFilterOffset : 88,\r\n marginRight: isMachineFilterOpen ? 88 - machimeFilterOffset : 88,\r\n };\r\n }\r\n if (columnsCount === 11) {\r\n const machimeFilterOffset = 6;\r\n return {\r\n marginLeft: isMachineFilterOpen ? 80 - machimeFilterOffset : 80,\r\n marginRight: isMachineFilterOpen ? 80 - machimeFilterOffset : 80,\r\n };\r\n }\r\n if (columnsCount === 12) {\r\n const machimeFilterOffset = 6;\r\n return {\r\n marginLeft: isMachineFilterOpen ? 72 - machimeFilterOffset : 72,\r\n marginRight: isMachineFilterOpen ? 72 - machimeFilterOffset : 72,\r\n };\r\n }\r\n if (columnsCount === 13) {\r\n const machimeFilterOffset = 6;\r\n return {\r\n marginLeft: isMachineFilterOpen ? 69 - machimeFilterOffset : 69,\r\n marginRight: isMachineFilterOpen ? 69 - machimeFilterOffset : 69,\r\n };\r\n }\r\n if (columnsCount === 14) {\r\n const machimeFilterOffset = 6;\r\n\r\n return {\r\n marginLeft: isMachineFilterOpen ? 65 - machimeFilterOffset : 65,\r\n marginRight: isMachineFilterOpen ? 65 - machimeFilterOffset : 65,\r\n };\r\n }\r\n if (columnsCount === 15) {\r\n const machimeFilterOffset = 6;\r\n\r\n return {\r\n marginLeft: isMachineFilterOpen ? 59 - machimeFilterOffset : 59,\r\n marginRight: isMachineFilterOpen ? 59 - machimeFilterOffset : 59,\r\n };\r\n }\r\n if (columnsCount === 16) {\r\n const machimeFilterOffset = 3;\r\n\r\n return {\r\n marginLeft: isMachineFilterOpen ? 50 - machimeFilterOffset : 50,\r\n marginRight: isMachineFilterOpen ? 50 - machimeFilterOffset : 50,\r\n };\r\n }\r\n if (columnsCount === 17) {\r\n const machineFilterOffset = 4;\r\n\r\n return {\r\n marginLeft: isMachineFilterOpen ? 50 - machineFilterOffset : 50,\r\n marginRight: isMachineFilterOpen ? 50 - machineFilterOffset : 50,\r\n };\r\n }\r\n if (columnsCount === 18) {\r\n const machineFilterOffset = 8;\r\n\r\n return {\r\n marginLeft: isMachineFilterOpen ? 49 - machineFilterOffset : 49,\r\n marginRight: isMachineFilterOpen ? 49 - machineFilterOffset : 49,\r\n };\r\n }\r\n if (columnsCount === 19) {\r\n const machineFilterOffset = 7;\r\n return {\r\n marginLeft: isMachineFilterOpen ? 48 - machineFilterOffset : 48,\r\n marginRight: isMachineFilterOpen ? 48 - machineFilterOffset : 48,\r\n };\r\n }\r\n\r\n if (columnsCount === 20) {\r\n const machineFilterOffset = 4;\r\n return {\r\n marginLeft: isMachineFilterOpen ? 45 - machineFilterOffset : 45,\r\n marginRight: isMachineFilterOpen ? 45 - machineFilterOffset : 45,\r\n };\r\n }\r\n\r\n if (columnsCount === 21) {\r\n return {\r\n marginLeft: 40,\r\n marginRight: 40,\r\n };\r\n }\r\n if (columnsCount === 22) {\r\n return {\r\n marginLeft: 36,\r\n marginRight: 36,\r\n };\r\n }\r\n if (columnsCount === 23) {\r\n return {\r\n marginLeft: 36,\r\n marginRight: 36,\r\n };\r\n }\r\n\r\n if (columnsCount === 24) {\r\n const machineFilterOffset = 4;\r\n return {\r\n marginLeft: isMachineFilterOpen ? 36 - machineFilterOffset : 36,\r\n marginRight: isMachineFilterOpen ? 36 - machineFilterOffset : 36,\r\n };\r\n } else {\r\n return {\r\n marginLeft: 0,\r\n marginRight: 0,\r\n };\r\n }\r\n }\r\n if (screenWidth >= 1600 && screenWidth < 1920) {\r\n if (columnsCount === 2) {\r\n const machineFilterOffset = 54;\r\n\r\n return {\r\n marginLeft: isMachineFilterOpen ? 365 - machineFilterOffset : 365,\r\n marginRight: isMachineFilterOpen ? 365 - machineFilterOffset : 365,\r\n };\r\n }\r\n if (columnsCount === 3) {\r\n const machineFilterOffset = 37;\r\n\r\n return {\r\n marginLeft: isMachineFilterOpen ? 243 - machineFilterOffset : 243,\r\n marginRight: isMachineFilterOpen ? 243 - machineFilterOffset : 243,\r\n };\r\n }\r\n if (columnsCount === 4) {\r\n const machineFilterOffset = 31;\r\n\r\n return {\r\n marginLeft: isMachineFilterOpen ? 183 - machineFilterOffset : 183,\r\n marginRight: isMachineFilterOpen ? 183 - machineFilterOffset : 183,\r\n };\r\n }\r\n if (columnsCount === 5) {\r\n const machineFilterOffset = 25;\r\n\r\n return {\r\n marginLeft: isMachineFilterOpen ? 145 - machineFilterOffset : 145,\r\n marginRight: isMachineFilterOpen ? 145 - machineFilterOffset : 145,\r\n };\r\n }\r\n if (columnsCount === 6) {\r\n const machineFilterOffset = 16;\r\n\r\n return {\r\n marginLeft: isMachineFilterOpen ? 120 - machineFilterOffset : 120,\r\n marginRight: isMachineFilterOpen ? 120 - machineFilterOffset : 120,\r\n };\r\n }\r\n if (columnsCount === 7) {\r\n const machineFilterOffset = 16;\r\n\r\n return {\r\n marginLeft: isMachineFilterOpen ? 105 - machineFilterOffset : 105,\r\n marginRight: isMachineFilterOpen ? 105 - machineFilterOffset : 105,\r\n };\r\n }\r\n if (columnsCount === 8) {\r\n const machineFilterOffset = 14;\r\n\r\n return {\r\n marginLeft: isMachineFilterOpen ? 92 - machineFilterOffset : 92,\r\n marginRight: isMachineFilterOpen ? 92 - machineFilterOffset : 92,\r\n };\r\n }\r\n if (columnsCount === 9) {\r\n const machineFilterOffset = 12;\r\n return {\r\n marginLeft: isMachineFilterOpen ? 82 - machineFilterOffset : 82,\r\n marginRight: isMachineFilterOpen ? 82 - machineFilterOffset : 82,\r\n };\r\n }\r\n if (columnsCount === 10) {\r\n const machineFilterOffset = 10;\r\n\r\n return {\r\n marginLeft: isMachineFilterOpen ? 71 - machineFilterOffset : 71,\r\n marginRight: isMachineFilterOpen ? 71 - machineFilterOffset : 71,\r\n };\r\n }\r\n if (columnsCount === 11) {\r\n const machineFilterOffset = 8;\r\n\r\n return {\r\n marginLeft: isMachineFilterOpen ? 65 - machineFilterOffset : 65,\r\n marginRight: isMachineFilterOpen ? 65 - machineFilterOffset : 65,\r\n };\r\n }\r\n if (columnsCount === 12) {\r\n const machineFilterOffset = 9;\r\n return {\r\n marginLeft: isMachineFilterOpen ? 63 - machineFilterOffset : 63,\r\n marginRight: isMachineFilterOpen ? 63 - machineFilterOffset : 63,\r\n };\r\n }\r\n if (columnsCount === 13) {\r\n const machineFilterOffset = 9;\r\n\r\n return {\r\n marginLeft: isMachineFilterOpen ? 55 - machineFilterOffset : 55,\r\n marginRight: isMachineFilterOpen ? 55 - machineFilterOffset : 55,\r\n };\r\n }\r\n if (columnsCount === 14) {\r\n const machineFilterOffset = 9;\r\n\r\n return {\r\n marginLeft: isMachineFilterOpen ? 50 - machineFilterOffset : 50,\r\n marginRight: isMachineFilterOpen ? 50 - machineFilterOffset : 50,\r\n };\r\n }\r\n if (columnsCount === 15) {\r\n const machineFilterOffset = 7;\r\n return {\r\n marginLeft: isMachineFilterOpen ? 47 - machineFilterOffset : 47,\r\n marginRight: isMachineFilterOpen ? 47 - machineFilterOffset : 47,\r\n };\r\n }\r\n if (columnsCount === 16) {\r\n const machineFilterOffset = 8;\r\n\r\n return {\r\n marginLeft: isMachineFilterOpen ? 49 - machineFilterOffset : 49,\r\n marginRight: isMachineFilterOpen ? 49 - machineFilterOffset : 49,\r\n };\r\n }\r\n if (columnsCount === 17) {\r\n const machineFilterOffset = 4;\r\n\r\n return {\r\n marginLeft: isMachineFilterOpen ? 40 - machineFilterOffset : 40,\r\n marginRight: isMachineFilterOpen ? 40 - machineFilterOffset : 40,\r\n };\r\n }\r\n if (columnsCount === 18) {\r\n const machineFilterOffset = 7;\r\n\r\n return {\r\n marginLeft: isMachineFilterOpen ? 42 - machineFilterOffset : 42,\r\n marginRight: isMachineFilterOpen ? 42 - machineFilterOffset : 42,\r\n };\r\n }\r\n if (columnsCount === 19) {\r\n const machineFilterOffset = 7;\r\n\r\n return {\r\n marginLeft: isMachineFilterOpen ? 40 - machineFilterOffset : 40,\r\n marginRight: isMachineFilterOpen ? 40 - machineFilterOffset : 40,\r\n };\r\n }\r\n\r\n if (columnsCount === 20) {\r\n const machineFilterOffset = 8;\r\n return {\r\n marginLeft: isMachineFilterOpen ? 38 - machineFilterOffset : 38,\r\n marginRight: isMachineFilterOpen ? 38 - machineFilterOffset : 38,\r\n };\r\n }\r\n\r\n if (columnsCount === 21) {\r\n return {\r\n marginLeft: 35,\r\n marginRight: 35,\r\n };\r\n }\r\n if (columnsCount === 22) {\r\n return {\r\n marginLeft: 40,\r\n marginRight: 40,\r\n };\r\n }\r\n if (columnsCount === 23) {\r\n return {\r\n marginLeft: 38,\r\n marginRight: 38,\r\n };\r\n }\r\n if (columnsCount === 24) {\r\n const machineFilterOffset = 8;\r\n return {\r\n marginLeft: isMachineFilterOpen ? 34 - machineFilterOffset : 34,\r\n marginRight: isMachineFilterOpen ? 34 - machineFilterOffset : 34,\r\n };\r\n } else {\r\n return {\r\n marginLeft: 0,\r\n marginRight: 0,\r\n };\r\n }\r\n }\r\n if (screenWidth >= 1400 && screenWidth < 1600) {\r\n if (columnsCount === 2) {\r\n const machineFilterOffset = 55;\r\n\r\n return {\r\n marginLeft: isMachineFilterOpen ? 325 - machineFilterOffset : 325,\r\n marginRight: isMachineFilterOpen ? 325 - machineFilterOffset : 325,\r\n };\r\n }\r\n if (columnsCount === 3) {\r\n const machineFilterOffset = 36;\r\n\r\n return {\r\n marginLeft: isMachineFilterOpen ? 215 - machineFilterOffset : 215,\r\n marginRight: isMachineFilterOpen ? 215 - machineFilterOffset : 215,\r\n };\r\n }\r\n if (columnsCount === 4) {\r\n const machineFilterOffset = 28;\r\n\r\n return {\r\n marginLeft: isMachineFilterOpen ? 160 - machineFilterOffset : 160,\r\n marginRight: isMachineFilterOpen ? 160 - machineFilterOffset : 160,\r\n };\r\n }\r\n if (columnsCount === 5) {\r\n const machineFilterOffset = 20;\r\n\r\n return {\r\n marginLeft: isMachineFilterOpen ? 130 - machineFilterOffset : 130,\r\n marginRight: isMachineFilterOpen ? 130 - machineFilterOffset : 130,\r\n };\r\n }\r\n if (columnsCount === 6) {\r\n const machineFilterOffset = 15;\r\n\r\n return {\r\n marginLeft: isMachineFilterOpen ? 110 - machineFilterOffset : 110,\r\n marginRight: isMachineFilterOpen ? 110 - machineFilterOffset : 110,\r\n };\r\n }\r\n if (columnsCount === 7) {\r\n const machineFilterOffset = 17;\r\n\r\n return {\r\n marginLeft: isMachineFilterOpen ? 94 - machineFilterOffset : 94,\r\n marginRight: isMachineFilterOpen ? 94 - machineFilterOffset : 94,\r\n };\r\n }\r\n if (columnsCount === 8) {\r\n const machineFilterOffset = 14;\r\n\r\n return {\r\n marginLeft: isMachineFilterOpen ? 80 - machineFilterOffset : 80,\r\n marginRight: isMachineFilterOpen ? 80 - machineFilterOffset : 80,\r\n };\r\n }\r\n if (columnsCount === 9) {\r\n const machineFilterOffset = 12;\r\n\r\n return {\r\n marginLeft: isMachineFilterOpen ? 72 - machineFilterOffset : 72,\r\n marginRight: isMachineFilterOpen ? 72 - machineFilterOffset : 72,\r\n };\r\n }\r\n if (columnsCount === 10) {\r\n const machineFilterOffset = 10;\r\n\r\n return {\r\n marginLeft: isMachineFilterOpen ? 65 - machineFilterOffset : 65,\r\n marginRight: isMachineFilterOpen ? 65 - machineFilterOffset : 65,\r\n };\r\n }\r\n if (columnsCount === 11) {\r\n const machineFilterOffset = 8;\r\n\r\n return {\r\n marginLeft: isMachineFilterOpen ? 56 - machineFilterOffset : 56,\r\n marginRight: isMachineFilterOpen ? 56 - machineFilterOffset : 56,\r\n };\r\n }\r\n if (columnsCount === 12) {\r\n const machineFilterOffset = 7;\r\n\r\n return {\r\n marginLeft: isMachineFilterOpen ? 50 - machineFilterOffset : 50,\r\n marginRight: isMachineFilterOpen ? 50 - machineFilterOffset : 50,\r\n };\r\n }\r\n if (columnsCount === 13) {\r\n const machineFilterOffset = 6;\r\n\r\n return {\r\n marginLeft: isMachineFilterOpen ? 50 - machineFilterOffset : 50,\r\n marginRight: isMachineFilterOpen ? 50 - machineFilterOffset : 50,\r\n };\r\n }\r\n if (columnsCount === 14) {\r\n const machineFilterOffset = 5;\r\n\r\n return {\r\n marginLeft: isMachineFilterOpen ? 45 - machineFilterOffset : 45,\r\n marginRight: isMachineFilterOpen ? 45 - machineFilterOffset : 45,\r\n };\r\n }\r\n if (columnsCount === 15) {\r\n const machineFilterOffset = 5;\r\n return {\r\n marginLeft: isMachineFilterOpen ? 43 - machineFilterOffset : 43,\r\n marginRight: isMachineFilterOpen ? 43 - machineFilterOffset : 43,\r\n };\r\n }\r\n if (columnsCount === 16) {\r\n const machineFilterOffset = 8;\r\n return {\r\n marginLeft: isMachineFilterOpen ? 41 - machineFilterOffset : 41,\r\n marginRight: isMachineFilterOpen ? 41 - machineFilterOffset : 41,\r\n };\r\n }\r\n if (columnsCount === 17) {\r\n const machineFilterOffset = 8;\r\n\r\n return {\r\n marginLeft: isMachineFilterOpen ? 40 - machineFilterOffset : 40,\r\n marginRight: isMachineFilterOpen ? 40 - machineFilterOffset : 40,\r\n };\r\n }\r\n if (columnsCount === 18) {\r\n const machineFilterOffset = 10;\r\n\r\n return {\r\n marginLeft: isMachineFilterOpen ? 38 - machineFilterOffset : 38,\r\n marginRight: isMachineFilterOpen ? 38 - machineFilterOffset : 38,\r\n };\r\n }\r\n if (columnsCount === 19) {\r\n const machineFilterOffset = 11;\r\n return {\r\n marginLeft: isMachineFilterOpen ? 40 - machineFilterOffset : 34,\r\n marginRight: isMachineFilterOpen ? 40 - machineFilterOffset : 34,\r\n };\r\n }\r\n\r\n if (columnsCount === 20) {\r\n const machineFilterOffset = 9;\r\n\r\n return {\r\n marginLeft: isMachineFilterOpen ? 35 - machineFilterOffset : 35,\r\n marginRight: isMachineFilterOpen ? 35 - machineFilterOffset : 35,\r\n };\r\n }\r\n\r\n if (columnsCount === 21) {\r\n return {\r\n marginLeft: 33,\r\n marginRight: 33,\r\n };\r\n }\r\n if (columnsCount === 22) {\r\n return {\r\n marginLeft: 40,\r\n marginRight: 40,\r\n };\r\n }\r\n if (columnsCount === 23) {\r\n return {\r\n marginLeft: 45,\r\n marginRight: 45,\r\n };\r\n }\r\n if (columnsCount === 24) {\r\n const machineFilterOffset = 12;\r\n return {\r\n marginLeft: isMachineFilterOpen ? 38 - machineFilterOffset : 28,\r\n marginRight: isMachineFilterOpen ? 38 - machineFilterOffset : 28,\r\n };\r\n } else {\r\n return {\r\n marginLeft: 0,\r\n marginRight: 0,\r\n };\r\n }\r\n }\r\n if (screenWidth < 1400) {\r\n if (columnsCount === 2) {\r\n return {\r\n marginLeft: 305,\r\n marginRight: 305,\r\n };\r\n }\r\n if (columnsCount === 3) {\r\n return {\r\n marginLeft: 205,\r\n marginRight: 205,\r\n };\r\n }\r\n if (columnsCount === 4) {\r\n return {\r\n marginLeft: 153,\r\n marginRight: 153,\r\n };\r\n }\r\n if (columnsCount === 5) {\r\n return {\r\n marginLeft: 120,\r\n marginRight: 120,\r\n };\r\n }\r\n if (columnsCount === 6) {\r\n return {\r\n marginLeft: 100,\r\n marginRight: 100,\r\n };\r\n }\r\n if (columnsCount === 7) {\r\n return {\r\n marginLeft: 90,\r\n marginRight: 90,\r\n };\r\n }\r\n if (columnsCount === 8) {\r\n return {\r\n marginLeft: 80,\r\n marginRight: 80,\r\n };\r\n }\r\n if (columnsCount === 9) {\r\n return {\r\n marginLeft: 70,\r\n marginRight: 70,\r\n };\r\n }\r\n if (columnsCount === 10) {\r\n return {\r\n marginLeft: 60,\r\n marginRight: 60,\r\n };\r\n }\r\n if (columnsCount === 11) {\r\n return {\r\n marginLeft: 55,\r\n marginRight: 55,\r\n };\r\n }\r\n if (columnsCount === 12) {\r\n return {\r\n marginLeft: 50,\r\n marginRight: 50,\r\n };\r\n }\r\n if (columnsCount === 13) {\r\n return {\r\n marginLeft: 45,\r\n marginRight: 45,\r\n };\r\n }\r\n if (columnsCount === 14) {\r\n return {\r\n marginLeft: 44,\r\n marginRight: 44,\r\n };\r\n }\r\n if (columnsCount === 15) {\r\n return {\r\n marginLeft: 40,\r\n marginRight: 40,\r\n };\r\n }\r\n if (columnsCount === 16) {\r\n return {\r\n marginLeft: 40,\r\n marginRight: 40,\r\n };\r\n }\r\n if (columnsCount === 17) {\r\n return {\r\n marginLeft: 38,\r\n marginRight: 38,\r\n };\r\n }\r\n if (columnsCount === 18) {\r\n return {\r\n marginLeft: 40,\r\n marginRight: 40,\r\n };\r\n }\r\n if (columnsCount === 19) {\r\n return {\r\n marginLeft: 36,\r\n marginRight: 36,\r\n };\r\n }\r\n\r\n if (columnsCount === 20) {\r\n return {\r\n marginLeft: 40,\r\n marginRight: 40,\r\n };\r\n }\r\n\r\n if (columnsCount === 21) {\r\n return {\r\n marginLeft: 40,\r\n marginRight: 40,\r\n };\r\n }\r\n if (columnsCount === 22) {\r\n return {\r\n marginLeft: 40,\r\n marginRight: 40,\r\n };\r\n }\r\n if (columnsCount === 23) {\r\n return {\r\n marginLeft: 40,\r\n marginRight: 40,\r\n };\r\n }\r\n if (columnsCount === 24) {\r\n return {\r\n marginLeft: 40,\r\n marginRight: 40,\r\n };\r\n } else {\r\n return {\r\n marginLeft: 0,\r\n marginRight: 0,\r\n };\r\n }\r\n }\r\n if (screenWidth > 2000) {\r\n return { marginLeft: 0, marginRight: 0 };\r\n } else {\r\n //*some unexpectable case which should never occures because of we should swich onto mobile but we need to keep this check for safety.\r\n return { marginLeft: 0, marginRight: 0 };\r\n }\r\n};\r\ntype getAdditionalOffsetForXAxisCentralLabelArgsType = {\r\n granularity: Granularity;\r\n dataLength: number;\r\n screenWidth: number;\r\n};\r\nexport const getAdditionalOffsetForXAxisCentralLabelTotalProductionChart = ({\r\n granularity,\r\n dataLength,\r\n screenWidth,\r\n}: getAdditionalOffsetForXAxisCentralLabelArgsType): number => {\r\n switch (granularity) {\r\n case GranularityEnum.Hour:\r\n return 17;\r\n case GranularityEnum.Day:\r\n return getAdditionalOffsetForXAxisCentralLabelTotalProductionChartForDayGranularityByDataLength(\r\n dataLength,\r\n screenWidth\r\n );\r\n case GranularityEnum.Week:\r\n return 22;\r\n case GranularityEnum.Month:\r\n return 20;\r\n default:\r\n return 0;\r\n }\r\n};\r\n\r\nconst offsetMapping = {\r\n '1920': {\r\n 2: 230,\r\n 3: 156,\r\n 4: 112,\r\n 5: 100,\r\n 6: 82,\r\n 7: 140,\r\n 8: 60,\r\n 9: 56,\r\n 10: 50,\r\n 11: 46,\r\n 12: 44,\r\n 13: 44,\r\n 14: 40,\r\n 15: 40,\r\n 16: 36,\r\n 17: 36,\r\n 18: 34,\r\n 19: 32,\r\n 20: 32,\r\n 21: 32,\r\n },\r\n '1600-1920': {\r\n 2: 190,\r\n 3: 132,\r\n 4: 100,\r\n 5: 84,\r\n 6: 70,\r\n 7: 118,\r\n 8: 52,\r\n 9: 48,\r\n 10: 40,\r\n 11: 40,\r\n 12: 38,\r\n 13: 36,\r\n 14: 36,\r\n 15: 36,\r\n 16: 36,\r\n 17: 32,\r\n 18: 32,\r\n 19: 32,\r\n 20: 32,\r\n },\r\n '1440-1600': {\r\n 2: 170,\r\n 3: 114,\r\n 4: 88,\r\n 5: 74,\r\n 6: 66,\r\n 7: 108,\r\n 8: 48,\r\n 9: 42,\r\n 10: 38,\r\n 11: 36,\r\n 12: 34,\r\n 13: 32,\r\n 14: 30,\r\n 15: 28,\r\n 16: 28,\r\n 17: 26,\r\n 18: 26,\r\n 19: 26,\r\n 20: 26,\r\n },\r\n '1366-1440': {\r\n 2: 160,\r\n 3: 110,\r\n 4: 82,\r\n 5: 70,\r\n 6: 60,\r\n 7: 110,\r\n 8: 48,\r\n 9: 44,\r\n 10: 40,\r\n 11: 38,\r\n 12: 36,\r\n 13: 34,\r\n 14: 32,\r\n 15: 30,\r\n 16: 28,\r\n 17: 26,\r\n 18: 26,\r\n 19: 26,\r\n 20: 26,\r\n },\r\n};\r\nconst getScreenWidthRange = screenWidth => {\r\n if (screenWidth === 1920) return '1920';\r\n if (screenWidth < 1920 && screenWidth >= 1600) return '1600-1920';\r\n if (screenWidth < 1600 && screenWidth >= 1440) return '1440-1600';\r\n if (screenWidth < 1440 && screenWidth >= 1366) return '1366-1440';\r\n return null;\r\n};\r\nconst getAdditionalOffsetForXAxisCentralLabelTotalProductionChartForDayGranularityByDataLength = (\r\n dataLength,\r\n screenWidth\r\n) => {\r\n const screenRange = getScreenWidthRange(screenWidth);\r\n if (screenRange && offsetMapping[screenRange] && offsetMapping[screenRange][dataLength]) {\r\n return offsetMapping[screenRange][dataLength];\r\n }\r\n return 17;\r\n};\r\n\r\nexport const getGraphMarginTotalProduction = (\r\n screenWidth,\r\n timeframe,\r\n data,\r\n isMachineFilterOpen\r\n): GraphMargin => {\r\n const machineFilterOffset = 16;\r\n if (screenWidth === 1920) {\r\n const marginByTimeFrame = {\r\n //* after changing buisness logic - for day timeframe margin should be as for custom\r\n day: getMarginForProductionGraphCustomTimeFrameAndDay(\r\n data.length,\r\n screenWidth,\r\n isMachineFilterOpen\r\n ),\r\n week: {\r\n // marginLeft: 262,\r\n // marginRight: 219,\r\n marginLeft: isMachineFilterOpen ? 262 - machineFilterOffset : 262,\r\n marginRight: isMachineFilterOpen ? 219 - machineFilterOffset : 219,\r\n },\r\n custom: getMarginForProductionGraphCustomTimeFrameAndDay(\r\n data.length,\r\n screenWidth,\r\n isMachineFilterOpen\r\n ),\r\n };\r\n return marginByTimeFrame[timeframe];\r\n }\r\n if (screenWidth >= 1600 && screenWidth < 1920) {\r\n const marginByTimeFrame = {\r\n day: getMarginForProductionGraphCustomTimeFrameAndDay(\r\n data.length,\r\n screenWidth,\r\n isMachineFilterOpen\r\n ),\r\n week: {\r\n marginLeft: isMachineFilterOpen ? 220 - machineFilterOffset : 220,\r\n marginRight: isMachineFilterOpen ? 182 - machineFilterOffset : 182,\r\n },\r\n custom: getMarginForProductionGraphCustomTimeFrameAndDay(\r\n data.length,\r\n screenWidth,\r\n isMachineFilterOpen\r\n ),\r\n };\r\n return marginByTimeFrame[timeframe];\r\n }\r\n\r\n if (screenWidth >= 1400 && screenWidth < 1600) {\r\n const marginByTimeFrame = {\r\n day: getMarginForProductionGraphCustomTimeFrameAndDay(\r\n data.length,\r\n screenWidth,\r\n isMachineFilterOpen\r\n ),\r\n week: {\r\n marginLeft: isMachineFilterOpen ? 202 - machineFilterOffset : 202,\r\n marginRight: isMachineFilterOpen ? 164 - machineFilterOffset : 164,\r\n },\r\n custom: getMarginForProductionGraphCustomTimeFrameAndDay(\r\n data.length,\r\n screenWidth,\r\n isMachineFilterOpen\r\n ),\r\n };\r\n return marginByTimeFrame[timeframe];\r\n }\r\n\r\n if (screenWidth < 1400) {\r\n const marginByTimeFrame = {\r\n day: getMarginForProductionGraphCustomTimeFrameAndDay(\r\n data.length,\r\n screenWidth,\r\n isMachineFilterOpen\r\n ),\r\n week: {\r\n marginLeft: 193,\r\n marginRight: 154,\r\n },\r\n custom: getMarginForProductionGraphCustomTimeFrameAndDay(\r\n data.length,\r\n screenWidth,\r\n isMachineFilterOpen\r\n ),\r\n };\r\n return marginByTimeFrame[timeframe];\r\n }\r\n if (screenWidth > 2000) {\r\n const marginByTimeFrame = {\r\n day: getMarginForProductionGraphCustomTimeFrameAndDay(\r\n data.length,\r\n screenWidth,\r\n isMachineFilterOpen\r\n ),\r\n week: {\r\n marginLeft: 260,\r\n marginRight: 260,\r\n },\r\n custom: getMarginForProductionGraphCustomTimeFrameAndDay(\r\n data.length,\r\n screenWidth,\r\n isMachineFilterOpen\r\n ),\r\n };\r\n return marginByTimeFrame[timeframe];\r\n } else {\r\n const marginByTimeFrame = {\r\n day: {\r\n marginLeft: 14,\r\n marginRight: 56,\r\n },\r\n week: {\r\n marginLeft: 0,\r\n marginRight: 0,\r\n },\r\n custom: {\r\n marginLeft: 0,\r\n marginRight: 0,\r\n },\r\n };\r\n return marginByTimeFrame[timeframe];\r\n\r\n // more than 1920 -mignt be we need 4k\r\n }\r\n};\r\nexport const getGraphMarginAvailability = (\r\n screenWidth,\r\n timeframe,\r\n data,\r\n isMachineFilterOpen\r\n): GraphMargin => {\r\n const machineFilterOffset = 16;\r\n\r\n if (screenWidth === 1920) {\r\n const marginByTimeFrame = {\r\n day: getMarginForProductionGraphCustomTimeFrameAndDay(\r\n data.length,\r\n screenWidth,\r\n isMachineFilterOpen\r\n ),\r\n week: {\r\n marginLeft: isMachineFilterOpen ? 260 - machineFilterOffset : 260,\r\n marginRight: isMachineFilterOpen ? 220 - machineFilterOffset : 220,\r\n },\r\n custom: getMarginForProductionGraphCustomTimeFrameAndDay(\r\n data.length,\r\n screenWidth,\r\n isMachineFilterOpen\r\n ),\r\n };\r\n return marginByTimeFrame[timeframe];\r\n }\r\n if (screenWidth >= 1600 && screenWidth < 1920) {\r\n const marginByTimeFrame = {\r\n day: getMarginForProductionGraphCustomTimeFrameAndDay(\r\n data.length,\r\n screenWidth,\r\n isMachineFilterOpen\r\n ),\r\n week: {\r\n marginLeft: isMachineFilterOpen ? 221 - machineFilterOffset : 221,\r\n marginRight: isMachineFilterOpen ? 182 - machineFilterOffset : 182,\r\n },\r\n custom: getMarginForProductionGraphCustomTimeFrameAndDay(\r\n data.length,\r\n screenWidth,\r\n isMachineFilterOpen\r\n ),\r\n };\r\n return marginByTimeFrame[timeframe];\r\n }\r\n\r\n if (screenWidth >= 1400 && screenWidth < 1600) {\r\n const marginByTimeFrame = {\r\n day: getMarginForProductionGraphCustomTimeFrameAndDay(\r\n data.length,\r\n screenWidth,\r\n isMachineFilterOpen\r\n ),\r\n week: {\r\n marginLeft: isMachineFilterOpen ? 202 - machineFilterOffset : 202,\r\n marginRight: isMachineFilterOpen ? 163 - machineFilterOffset : 163,\r\n },\r\n custom: getMarginForProductionGraphCustomTimeFrameAndDay(\r\n data.length,\r\n screenWidth,\r\n isMachineFilterOpen\r\n ),\r\n };\r\n return marginByTimeFrame[timeframe];\r\n }\r\n\r\n if (screenWidth < 1400) {\r\n const marginByTimeFrame = {\r\n day: getMarginForProductionGraphCustomTimeFrameAndDay(\r\n data.length,\r\n screenWidth,\r\n isMachineFilterOpen\r\n ),\r\n week: {\r\n marginLeft: 195,\r\n marginRight: 153,\r\n },\r\n custom: getMarginForProductionGraphCustomTimeFrameAndDay(\r\n data.length,\r\n screenWidth,\r\n isMachineFilterOpen\r\n ),\r\n };\r\n return marginByTimeFrame[timeframe];\r\n }\r\n if (screenWidth > 2000) {\r\n const marginByTimeFrame = {\r\n day: getMarginForProductionGraphCustomTimeFrameAndDay(\r\n data.length,\r\n screenWidth,\r\n isMachineFilterOpen\r\n ),\r\n week: {\r\n marginLeft: 260,\r\n marginRight: 260,\r\n },\r\n custom: getMarginForProductionGraphCustomTimeFrameAndDay(\r\n data.length,\r\n screenWidth,\r\n isMachineFilterOpen\r\n ),\r\n };\r\n return marginByTimeFrame[timeframe];\r\n } else {\r\n const marginByTimeFrame = {\r\n day: {\r\n marginLeft: 14,\r\n marginRight: 56,\r\n },\r\n week: {\r\n marginLeft: 0,\r\n marginRight: 0,\r\n },\r\n custom: {\r\n marginLeft: 0,\r\n marginRight: 0,\r\n },\r\n };\r\n return marginByTimeFrame[timeframe];\r\n\r\n // more than 1920 -mignt be we need 4k\r\n }\r\n};\r\n\r\nconst getGraphMarginForCustomTimeFrameSpeedChart = (\r\n columnsCount: number,\r\n screenWidth: number\r\n): GraphMargin => {\r\n if (screenWidth >= 1600 && screenWidth < 1920) {\r\n if (columnsCount === 22) {\r\n return {\r\n marginLeft: 6,\r\n marginRight: 6,\r\n };\r\n }\r\n\r\n if (columnsCount === 23) {\r\n return {\r\n marginLeft: 8,\r\n marginRight: 8,\r\n };\r\n }\r\n if (columnsCount === 24) {\r\n return {\r\n marginLeft: 10,\r\n marginRight: 10,\r\n };\r\n } else {\r\n return {\r\n marginLeft: 0,\r\n marginRight: 0,\r\n };\r\n }\r\n }\r\n if (screenWidth >= 1400 && screenWidth < 1600) {\r\n if (columnsCount === 22) {\r\n return {\r\n marginLeft: 10,\r\n marginRight: 10,\r\n };\r\n }\r\n\r\n if (columnsCount === 23) {\r\n return {\r\n marginLeft: 15,\r\n marginRight: 15,\r\n };\r\n }\r\n if (columnsCount === 24) {\r\n return {\r\n marginLeft: 10,\r\n marginRight: 10,\r\n };\r\n } else {\r\n return {\r\n marginLeft: 0,\r\n marginRight: 0,\r\n };\r\n }\r\n }\r\n if (screenWidth < 1400) {\r\n if (columnsCount === 18) {\r\n return {\r\n marginLeft: 5,\r\n marginRight: 5,\r\n };\r\n }\r\n if (columnsCount === 19) {\r\n return {\r\n marginLeft: 7,\r\n marginRight: 7,\r\n };\r\n }\r\n if (columnsCount === 20) {\r\n return {\r\n marginLeft: 9,\r\n marginRight: 9,\r\n };\r\n }\r\n if (columnsCount === 21) {\r\n return {\r\n marginLeft: 12,\r\n marginRight: 12,\r\n };\r\n }\r\n if (columnsCount === 22) {\r\n return {\r\n marginLeft: 13,\r\n marginRight: 13,\r\n };\r\n }\r\n\r\n if (columnsCount === 23) {\r\n return {\r\n marginLeft: 15,\r\n marginRight: 15,\r\n };\r\n }\r\n if (columnsCount === 24) {\r\n return {\r\n marginLeft: 15,\r\n marginRight: 15,\r\n };\r\n } else {\r\n return {\r\n marginLeft: 0,\r\n marginRight: 0,\r\n };\r\n }\r\n } else {\r\n return {\r\n marginLeft: 0,\r\n marginRight: 0,\r\n };\r\n }\r\n};\r\nexport const getGraphMarginSpeedChart = (\r\n timeframe: TimeFrame,\r\n screenWidth: number,\r\n columnsCount: number\r\n) => {\r\n if (screenWidth === 1920) {\r\n const marginByTimeFrame = {\r\n day: {\r\n marginLeft: 0,\r\n marginRight: 0,\r\n },\r\n week: {\r\n marginLeft: 153,\r\n marginRight: 113,\r\n },\r\n custom: getGraphMarginForCustomTimeFrameSpeedChart(columnsCount, screenWidth),\r\n };\r\n\r\n return marginByTimeFrame[timeframe];\r\n }\r\n if (screenWidth >= 1600 && screenWidth < 1920) {\r\n const marginByTimeFrame = {\r\n day: {\r\n marginLeft: 0,\r\n marginRight: 0,\r\n },\r\n week: {\r\n marginLeft: 132,\r\n marginRight: 94,\r\n },\r\n custom: getGraphMarginForCustomTimeFrameSpeedChart(columnsCount, screenWidth),\r\n };\r\n return marginByTimeFrame[timeframe];\r\n }\r\n\r\n if (screenWidth >= 1400 && screenWidth < 1600) {\r\n const marginByTimeFrame = {\r\n day: {\r\n marginLeft: 0,\r\n marginRight: 0,\r\n },\r\n week: {\r\n marginLeft: 126,\r\n marginRight: 87,\r\n },\r\n custom: getGraphMarginForCustomTimeFrameSpeedChart(columnsCount, screenWidth),\r\n };\r\n return marginByTimeFrame[timeframe];\r\n }\r\n if (screenWidth < 1400) {\r\n const marginByTimeFrame = {\r\n day: {\r\n marginLeft: 0,\r\n marginRight: 0,\r\n },\r\n week: {\r\n marginLeft: 120,\r\n marginRight: 80,\r\n },\r\n custom: getGraphMarginForCustomTimeFrameSpeedChart(columnsCount, screenWidth),\r\n };\r\n return marginByTimeFrame[timeframe];\r\n }\r\n if (screenWidth > 1920) {\r\n const marginByTimeFrame = {\r\n day: {\r\n marginLeft: 0,\r\n marginRight: 0,\r\n },\r\n week: {\r\n marginLeft: 0,\r\n marginRight: 0,\r\n },\r\n custom: getGraphMarginForCustomTimeFrameSpeedChart(columnsCount, screenWidth),\r\n };\r\n return marginByTimeFrame[timeframe];\r\n }\r\n};\r\nexport const getBarSizeSpeedChart = (screenWidth: number, columnCount: number): number => {\r\n // //*it is decided that basic resolution for calculation width of column is 1366px;\r\n\r\n // //* if there is 1-3 columns basic widht =224px;\r\n // //* if there is 4-6 columns basic widht =112px;\r\n // //* if there is 7-12 columns basic widht =56px;\r\n // //* if there is 13-24 columns basic widht =28px;\r\n // //* to get actual width of column we need to add to base size of column difference in percentage between Base Resolutin and currnet screenWidth\r\n\r\n //*this graph could not exits if therea are less than 1 columns or more than 24\r\n if (!columnCount || columnCount > 24) {\r\n return;\r\n }\r\n const BASE_RESOLUTION = 1366;\r\n const SMALL_BASE_SIZE = 28;\r\n const MEDIUM_BASE_SIZE = 56;\r\n const LARGE_BASE_SIZE = 112;\r\n const EXTRA_LARGE_BASE_SIZE = 224;\r\n\r\n let currentWidth = 0;\r\n if (columnCount >= 1 && columnCount <= 3) {\r\n currentWidth = EXTRA_LARGE_BASE_SIZE;\r\n }\r\n if (columnCount >= 4 && columnCount <= 6) {\r\n currentWidth = LARGE_BASE_SIZE;\r\n }\r\n if (columnCount >= 7 && columnCount <= 12) {\r\n currentWidth = MEDIUM_BASE_SIZE;\r\n }\r\n if (columnCount >= 13 && columnCount <= 24) {\r\n currentWidth = SMALL_BASE_SIZE;\r\n }\r\n\r\n const screenSizeDifferencePercent = (screenWidth - BASE_RESOLUTION) / (BASE_RESOLUTION / 100);\r\n currentWidth = Math.round(currentWidth + (currentWidth / 100) * screenSizeDifferencePercent);\r\n return currentWidth;\r\n};\r\n\r\nexport const parseDate = (date, granularity) => {\r\n let parsedDate;\r\n\r\n switch (granularity) {\r\n case GranularityEnum.Hour:\r\n const hourParts = date.match(/(\\d{2}):(\\d{2})\\s+(\\w+)\\s+(\\d{1,2})\\s+(\\w+)\\s+(\\d{4})/);\r\n if (hourParts) {\r\n const [, hours, minutes, , day, month, year] = hourParts;\r\n parsedDate = new Date(\r\n +year,\r\n parse(month, 'MMMM', new Date()).getMonth(),\r\n +day,\r\n +hours,\r\n +minutes\r\n );\r\n }\r\n break;\r\n case GranularityEnum.Day:\r\n const dayParts = date.match(/(\\w+)\\s+(\\d{1,2})\\s+(\\w+)\\s+(\\d{4})/);\r\n if (dayParts) {\r\n const [, , day, month, year] = dayParts;\r\n parsedDate = new Date(+year, parse(month, 'MMMM', new Date()).getMonth(), +day);\r\n }\r\n break;\r\n case GranularityEnum.Week:\r\n const weekParts = date.match(/(\\w+)\\s+(\\d+)\\s+-\\s+(\\w+)\\s+(\\d+)\\s+, (\\d+)/);\r\n if (weekParts) {\r\n const [, startMonth, startDay, , , year] = weekParts;\r\n parsedDate = new Date(+year, parse(startMonth, 'MMMM', new Date()).getMonth(), +startDay);\r\n }\r\n break;\r\n case GranularityEnum.Month:\r\n const year = date.slice(0, 4);\r\n const month = date.slice(4);\r\n parsedDate = new Date(+year, +month - 1, 1);\r\n break;\r\n }\r\n\r\n return parsedDate;\r\n};\r\nfunction isFutureDate(parsedDate, lastUpdate, granularity) {\r\n if (!parsedDate) return false;\r\n switch (granularity) {\r\n case GranularityEnum.Hour:\r\n return !isSameHour(parsedDate, lastUpdate) && isAfter(parsedDate, lastUpdate);\r\n case GranularityEnum.Day:\r\n return !isSameDay(parsedDate, lastUpdate) && isAfter(parsedDate, lastUpdate);\r\n case GranularityEnum.Week:\r\n return !isSameWeek(parsedDate, lastUpdate) && isAfter(parsedDate, lastUpdate);\r\n case GranularityEnum.Month:\r\n return !isSameMonth(parsedDate, lastUpdate) && isAfter(parsedDate, lastUpdate);\r\n default:\r\n return false;\r\n }\r\n}\r\n\r\nexport const isFuturePeriod = ({ date, granularity, lastUpdate }) => {\r\n const parsedDate = parseDate(date, granularity);\r\n return isFutureDate(parsedDate, new Date(lastUpdate), granularity);\r\n};\r\n","import { createBrowserHistory } from 'history';\r\nimport { MainReportTypes, ReportTypesNew, SubReportTypes } from 'models/ReportData';\r\nconst browserHistory = createBrowserHistory();\r\n\r\nexport default browserHistory;\r\n\r\nexport function updateUriQueryAndPushHistory(\r\n setParams: { [k: string]: string | undefined },\r\n activeReport?: ReportTypesNew\r\n) {\r\n const query = getQueryParams();\r\n\r\n Object.keys(setParams).forEach(name => {\r\n if (setParams[name]) {\r\n query.set(name, setParams[name] || '');\r\n }\r\n });\r\n\r\n const oldSearch = browserHistory.location.search.replace(/^\\?/, '');\r\n const newSearch = query.toString();\r\n const newUri = `${browserHistory.location.pathname}?${newSearch}`;\r\n\r\n if (\r\n oldSearch &&\r\n oldSearch !== newSearch &&\r\n activeReport !== MainReportTypes.Jobs &&\r\n activeReport !== SubReportTypes.SystemPage &&\r\n activeReport !== SubReportTypes.MachineConfig\r\n ) {\r\n //*doesn't add new element to history object\r\n browserHistory.push(newUri);\r\n } else {\r\n browserHistory.replace(newUri);\r\n }\r\n}\r\n\r\nexport function getQueryParams(search: string = browserHistory.location.search) {\r\n return new URLSearchParams(search);\r\n}\r\n\r\nexport const openLinkInNewTab = (link: string) => {\r\n window.open(link, '_blank');\r\n};\r\n","import { ThunkDispatch } from 'redux-thunk';\r\nimport { Action } from 'redux';\r\nimport { PayloadAC } from 'typesafe-actions';\r\nimport { AxiosError } from 'axios';\r\nimport i18next from 'i18next';\r\nimport ErrorsHandlerService from '../../services/errors-handler-service';\r\nimport { enqueueNotification } from '../uiActions';\r\nimport { Store } from '../../store/storeTypes';\r\n\r\nconst customErrorCodePrefix = 'CODE:';\r\nexport const isAxiosError = (error: Error): error is AxiosError => (error as any).isAxiosError;\r\n\r\nfunction resolveErrorMessage(error: Error, message = '') {\r\n let resolvedMessage = message;\r\n if (isAxiosError(error)) {\r\n if (error.response) {\r\n const { status } = error.response;\r\n if (status >= 400 && status < 500) {\r\n resolvedMessage = i18next.t(`errors.http.${status}`, i18next.t('errors.http.unknown'));\r\n } else if (\r\n status >= 500 &&\r\n typeof error.response.data === 'string' &&\r\n error.response.data.startsWith(customErrorCodePrefix)\r\n ) {\r\n const customErrorCode = error.response.data.substr(customErrorCodePrefix.length);\r\n resolvedMessage = i18next.t(\r\n `errors.customServerCodes.${customErrorCode}`,\r\n i18next.t('errors.http.unknown')\r\n );\r\n } else {\r\n resolvedMessage = i18next.t('errors.http.unknown');\r\n }\r\n } else if (error.message === 'Network Error') {\r\n resolvedMessage = i18next.t('errors.http.connection');\r\n }\r\n }\r\n\r\n return resolvedMessage || error.message;\r\n}\r\n\r\nexport default function handleErrorAction(\r\n error: Error,\r\n message = '',\r\n moreHandlerActions: PayloadAC[] = []\r\n): (dispatch: ThunkDispatch) => void {\r\n return function(dispatch) {\r\n if (message === 'API: Request failed with status code 429') {\r\n return;\r\n } else {\r\n moreHandlerActions.forEach(action => dispatch(action(error)));\r\n const errorMessage = resolveErrorMessage(error, message);\r\n dispatch(enqueueNotification(errorMessage, { variant: 'error' }));\r\n ErrorsHandlerService.onError(error, 'general');\r\n }\r\n };\r\n}\r\n","import i18next from 'i18next';\r\nimport { createStandardAction } from 'typesafe-actions';\r\n\r\nimport { ExtendedUserData } from '../models/ExtendedUserData';\r\nimport { MODAL_STATUS, Entries } from '../store/storeTypes';\r\nimport { userUiToApiSaveUser } from '../reducers/_sharedLogic/userConversions';\r\nimport apiAction, { apiActionSimple } from './_shared/apiAction';\r\nimport handleErrorAction from './_shared/handleErrorAction';\r\nimport { makeApiUrl } from './_shared/utils';\r\nimport { enqueueNotification } from './uiActions';\r\nimport { setCaptchaIsOpen, setStatusModalUser } from './userUiActions';\r\nimport config from 'config/config';\r\nimport * as _ from 'lodash';\r\nimport { AUTH0_CLAIMS_NAMESPACE } from 'contracts/constants';\r\nimport { userPermissionsToRoles } from 'helpers/conversions';\r\nimport { Method } from 'axios';\r\nconst redirectUrl = config.SELF_HOST;\r\nconst makeInviteUserUrl = (id: string) => makeApiUrl(`/api/users/${id}/invitation`);\r\nconst makeResetUserPasswordUrl = (id: string) => makeApiUrl(`/api/users/${id}/password-reset`);\r\n\r\nexport const loadUsersStarted = createStandardAction('LOAD_USERS_STARTED')();\r\nexport const loadUsersSuccess = createStandardAction('LOAD_USERS_SUCCESS')();\r\nexport const loadUsersFailed = createStandardAction('LOAD_USERS_FAILED')();\r\n\r\nexport interface SaveUserSuccessPayload {\r\n newUsers: ExtendedUserData[];\r\n usersById: Entries;\r\n}\r\n\r\nexport const saveUserStarted = createStandardAction('SAVE_USER_STARTED')();\r\nexport const saveUserSuccess = createStandardAction('SAVE_USER_SUCCESS')();\r\nexport const saveUserFailed = createStandardAction('SAVE_USER_FAILED')();\r\n\r\nexport const deleteUserStarted = createStandardAction('DELETE_USER_STARTED')();\r\nexport const deleteUserSuccess = createStandardAction('DELETE_USER_SUCCESS')();\r\nexport const deleteUserFailed = createStandardAction('DELETE_USER_FAILED')();\r\n\r\nexport const inviteUserStarted = createStandardAction('INVITE_USER_STARTED')();\r\nexport const inviteUserSuccess = createStandardAction('INVITE_USER_SUCCESS')();\r\nexport const inviteUserFailed = createStandardAction('INVITE_USER_FAILED')();\r\n\r\nexport const resetUserPasswordStarted = createStandardAction('RESET_USER_PASSWORD_USER_STARTED')();\r\nexport const resetUserPasswordSuccess = createStandardAction('RESET_USER_PASSWORD_USER_SUCCESS')<\r\n string\r\n>();\r\nexport const resetUserPasswordFailed = createStandardAction('RESET_USER_PASSWORD_USER_FAILED')<\r\n any\r\n>();\r\n\r\nexport function getUsers() {\r\n const getExtendedUsersUrl = makeApiUrl('/api/users/extended');\r\n return apiActionSimple({\r\n request: { url: getExtendedUsersUrl },\r\n actions: [loadUsersStarted, loadUsersSuccess, loadUsersFailed],\r\n interceptor: state => state.api.isLoadingUsers || state.entities.users.allIds.length > 0,\r\n });\r\n}\r\n\r\nexport function saveUser() {\r\n const postUsersUrl = makeApiUrl('/api/users');\r\n return apiAction({\r\n request: {\r\n url: postUsersUrl,\r\n method: 'POST',\r\n data: store => [userUiToApiSaveUser(store)],\r\n },\r\n logic: {\r\n onStarted: dispatch => {\r\n dispatch(saveUserStarted());\r\n dispatch(setStatusModalUser(MODAL_STATUS.SAVING));\r\n },\r\n onSuccess: (data, dispatch, store) => {\r\n dispatch(\r\n saveUserSuccess({\r\n newUsers: data,\r\n usersById: _.cloneDeep(store.entities.users.byId),\r\n })\r\n );\r\n // For new user - show congrats view, for updated - close popup\r\n dispatch(\r\n setStatusModalUser(store.ui.userForm.id ? MODAL_STATUS.CLOSED : MODAL_STATUS.DONE)\r\n );\r\n\r\n dispatch(\r\n enqueueNotification(\r\n i18next.t('notifications.userSaved', {\r\n u: Array.isArray(data) ? data[0] : data,\r\n }),\r\n {\r\n variant: 'success',\r\n }\r\n )\r\n );\r\n },\r\n\r\n onFailed: (error, dispatch) => {\r\n dispatch(setStatusModalUser(MODAL_STATUS.EDITING));\r\n dispatch(handleErrorAction(error, `API: ${error.message}`, [saveUserFailed]));\r\n },\r\n },\r\n });\r\n}\r\n\r\nexport function deleteUser(id: string) {\r\n const deleteUserUrl = makeApiUrl('/api/users');\r\n return apiAction({\r\n request: {\r\n url: `${deleteUserUrl}/${id}`,\r\n method: 'DELETE',\r\n },\r\n logic: {\r\n onStarted: dispatch => dispatch(deleteUserStarted()),\r\n\r\n onSuccess: (data, dispatch, store) => {\r\n dispatch(deleteUserSuccess(id));\r\n\r\n const user = store.entities.users.byId[id];\r\n dispatch(\r\n enqueueNotification(i18next.t('notifications.userDeleted', { u: user }), {\r\n variant: 'success',\r\n })\r\n );\r\n },\r\n\r\n onFailed: (error, dispatch) => dispatch(deleteUserFailed(error)),\r\n },\r\n });\r\n}\r\n\r\nexport function inviteUser(id: string) {\r\n return apiAction({\r\n request: {\r\n url: makeInviteUserUrl(id),\r\n method: 'POST',\r\n data: { redirectUrl },\r\n },\r\n logic: {\r\n onStarted: dispatch => dispatch(inviteUserStarted(id)),\r\n\r\n onSuccess: (data, dispatch, store) => {\r\n dispatch(inviteUserSuccess(id));\r\n\r\n const user = store.entities.users.byId[id];\r\n dispatch(\r\n enqueueNotification(i18next.t('notifications.userInvited', { u: user }), {\r\n variant: 'success',\r\n })\r\n );\r\n },\r\n\r\n onFailed: (error, dispatch) => dispatch(inviteUserFailed(error)),\r\n },\r\n });\r\n}\r\n\r\nexport function resetUserPassword(id: string, afterCaptcha?: boolean, captchaToken?: string) {\r\n const request = {\r\n url: makeResetUserPasswordUrl(id),\r\n method: 'POST' as Method,\r\n data: { redirectUrl },\r\n };\r\n\r\n return apiAction({\r\n request: afterCaptcha\r\n ? {\r\n ...request,\r\n headers: {\r\n 'X-Recaptcha-Token': captchaToken,\r\n },\r\n }\r\n : request,\r\n\r\n logic: {\r\n onStarted: dispatch => dispatch(resetUserPasswordStarted()),\r\n\r\n onSuccess: (data, dispatch, store) => {\r\n dispatch(resetUserPasswordSuccess(id));\r\n\r\n const user = store.entities.users.byId[id];\r\n dispatch(\r\n enqueueNotification(i18next.t('notifications.userPasswordReset', { u: user }), {\r\n variant: 'success',\r\n })\r\n );\r\n },\r\n\r\n onFailed: (error, dispatch) => {\r\n dispatch(setCaptchaIsOpen({ isOpen: true, userId: id }));\r\n dispatch(resetUserPasswordFailed(error));\r\n },\r\n },\r\n });\r\n}\r\n","import { createStandardAction } from 'typesafe-actions';\r\nimport i18next from 'i18next';\r\n\r\nimport { MODAL_STATUS } from 'store/storeTypes';\r\nimport { Scheduler, ReportType } from 'models/Scheduler';\r\n\r\nimport apiAction, { apiActionSimple } from './_shared/apiAction';\r\nimport handleErrorAction from './_shared/handleErrorAction';\r\nimport { makeApiUrl } from './_shared/utils';\r\nimport { enqueueNotification } from './uiActions';\r\nimport { setStatusModalScheduler } from './schedulerUiActions';\r\nimport { schedulerFormToApi, toggleScheduler } from 'reducers/_sharedLogic/schedulerConversions';\r\n\r\nexport const loadSchedulersStarted = createStandardAction('LOAD_SCHEDULERS_STARTED')();\r\nexport const loadSchedulersSuccess = createStandardAction('LOAD_SCHEDULERS_SUCCESS')();\r\nexport const loadSchedulersFailed = createStandardAction('LOAD_SCHEDULERS_FAILED')();\r\n\r\nexport const loadSchedulerTypesStarted = createStandardAction('LOAD_SCHEDULER_TYPES_STARTED')();\r\nexport const loadSchedulerTypesSuccess = createStandardAction('LOAD_SCHEDULER_TYPES_SUCCESS')<\r\n ReportType[]\r\n>();\r\nexport const loadSchedulerTypesFailed = createStandardAction('LOAD_SCHEDULER_TYPES_FAILED')();\r\n\r\nexport const saveSchedulerStarted = createStandardAction('SAVE_SCHEDULER_STARTED')();\r\nexport const saveSchedulerSuccess = createStandardAction('SAVE_SCHEDULER_SUCCESS')();\r\nexport const saveSchedulerFailed = createStandardAction('SAVE_SCHEDULER_FAILED')();\r\n\r\nexport const deleteSchedulerStarted = createStandardAction('DELETE_SCHEDULER_STARTED')();\r\nexport const deleteSchedulerSuccess = createStandardAction('DELETE_SCHEDULER_SUCCESS')();\r\nexport const deleteSchedulerFailed = createStandardAction('DELETE_SCHEDULER_FAILED')();\r\n\r\nexport const toggleSchedulerAC = createStandardAction('TOGGLE_SCHEDULER')();\r\n\r\nexport const toggleSchedulerSending = (id: string, sending: boolean) => {\r\n const postSchedulersUrl = makeApiUrl('/api/email-reports-scheduler/entries');\r\n\r\n return apiAction({\r\n request: {\r\n url: postSchedulersUrl,\r\n method: 'POST',\r\n data: store => toggleScheduler(id, store.entities.schedulers.byId, sending),\r\n },\r\n logic: {\r\n onStarted: dispatch => {\r\n dispatch(saveSchedulerStarted());\r\n dispatch(toggleSchedulerAC(id));\r\n },\r\n onSuccess: (data, dispatch, store) => {\r\n dispatch(saveSchedulerSuccess(data as Scheduler));\r\n dispatch(\r\n enqueueNotification(i18next.t('notifications.schedulerSaved'), { variant: 'success' })\r\n );\r\n },\r\n onFailed: (error, dispatch) => {\r\n dispatch(handleErrorAction(error, `API: ${error.message}`, [saveSchedulerFailed]));\r\n },\r\n },\r\n });\r\n};\r\n\r\nexport const getSchedulers = () => {\r\n const getSchedulersUrl = makeApiUrl('/api/email-reports-scheduler/entries');\r\n return apiActionSimple({\r\n request: { url: getSchedulersUrl },\r\n actions: [loadSchedulersStarted, loadSchedulersSuccess, loadSchedulersFailed],\r\n interceptor: state =>\r\n state.api.isLoadingSchedulers || state.entities.schedulers.allIds.length > 0,\r\n });\r\n};\r\n\r\nexport const saveScheduler = () => {\r\n const postSchedulersUrl = makeApiUrl('/api/email-reports-scheduler/entries');\r\n return apiAction({\r\n request: {\r\n url: postSchedulersUrl,\r\n method: 'POST',\r\n data: store =>\r\n schedulerFormToApi(store.ui.schedulerForm, store.appUser.id || '', store.appUser),\r\n },\r\n logic: {\r\n onStarted: dispatch => {\r\n dispatch(saveSchedulerStarted());\r\n dispatch(setStatusModalScheduler(MODAL_STATUS.SAVING));\r\n },\r\n\r\n onSuccess: (data, dispatch, store) => {\r\n dispatch(saveSchedulerSuccess(data as Scheduler));\r\n dispatch(setStatusModalScheduler(MODAL_STATUS.CLOSED));\r\n dispatch(\r\n enqueueNotification(i18next.t('notifications.schedulerSaved'), { variant: 'success' })\r\n );\r\n },\r\n\r\n onFailed: (error, dispatch) => {\r\n dispatch(setStatusModalScheduler(MODAL_STATUS.EDITING));\r\n dispatch(handleErrorAction(error, `API: ${error.message}`, [saveSchedulerFailed]));\r\n },\r\n },\r\n });\r\n};\r\n\r\nexport const deleteScheduler = (id: string) => {\r\n const deleteSchedulersUrl = makeApiUrl('/api/email-reports-scheduler/entries');\r\n return apiAction({\r\n request: {\r\n url: `${deleteSchedulersUrl}/${id}`,\r\n method: 'DELETE',\r\n },\r\n logic: {\r\n onStarted: dispatch => dispatch(deleteSchedulerStarted()),\r\n\r\n onSuccess: (data, dispatch, store) => {\r\n dispatch(deleteSchedulerSuccess(id));\r\n\r\n dispatch(\r\n enqueueNotification(i18next.t('notifications.schedulerDeleted'), { variant: 'success' })\r\n );\r\n },\r\n\r\n onFailed: (error, dispatch) => dispatch(deleteSchedulerFailed(error)),\r\n },\r\n });\r\n};\r\n\r\nexport const getSchedulersReportTypes = () => {\r\n const getSchedulersTypesUrl = makeApiUrl('/api/email-reports-scheduler/templates');\r\n return apiActionSimple({\r\n request: { url: getSchedulersTypesUrl },\r\n actions: [loadSchedulerTypesStarted, loadSchedulerTypesSuccess, loadSchedulerTypesFailed],\r\n interceptor: state => state.api.isLoadingSchedulerTypes || state.appUser.reportTypes.length > 0,\r\n });\r\n};\r\n","import { TreeNodeProps } from 'react-dropdown-tree-select';\r\nimport { SchedulerForm, Entries, Ids, Entity, AppUser } from 'store/storeTypes';\r\nimport { Scheduler, Frequency, Weekdays } from 'models/Scheduler';\r\nimport { CustomerData } from 'models/CustomerData';\r\nimport { SiteData } from 'models/SiteData';\r\nimport { SystemData } from 'models/SystemData';\r\nimport { Scope } from 'models/Scope';\r\nimport { userDataToTree } from './userScopeTreeConversions';\r\nimport ScopeData from 'models/ScopeData';\r\n\r\nexport function schedulerFormToApi(\r\n schedulerForm: SchedulerForm,\r\n userId: string,\r\n appUser: AppUser\r\n): Scheduler {\r\n const userCustomerIds = appUser.customerIds;\r\n const userSiteIds = appUser.siteIds;\r\n const userSystemIds = appUser.systemIds;\r\n const { reportTypes } = appUser;\r\n\r\n const {\r\n reportId,\r\n emailSubject,\r\n report,\r\n startDate,\r\n endDate,\r\n weekdays,\r\n notes,\r\n sending,\r\n customerIds,\r\n siteIds,\r\n systemIds,\r\n lastSent,\r\n } = schedulerForm;\r\n //this is previous functionality which enable to user to choose smth\r\n // return {\r\n // reportId: reportId || '0',\r\n // subject: emailSubject,\r\n // userId,\r\n // emailReportId: (report as number) + 1,\r\n // emailReportName: reportTypes[report as number],\r\n // startSendDate: startDate,\r\n // endSendDate: endDate,\r\n // repeat: {\r\n // frequency: Frequency.Weekly, // repeat\r\n // ...mapDaysOfTheWeekToSchedulerFrequency(weekdays),\r\n // },\r\n // notes,\r\n // isActive: sending,\r\n // ...setScopeForUser(\r\n // customerIds,\r\n // siteIds,\r\n // systemIds,\r\n // userCustomerIds!,\r\n // userSiteIds!,\r\n // userSystemIds!\r\n // ),\r\n // lastSent,\r\n // };\r\n //this is predefault funct user not allowed to choose\r\n\r\n return {\r\n reportId: reportId || '0',\r\n subject: emailSubject,\r\n userId,\r\n emailReportId: (report as number) + 1,\r\n emailReportName: reportTypes[report as number],\r\n startSendDate: startDate,\r\n endSendDate: endDate,\r\n repeat: {\r\n frequency: Frequency.Weekly, // repeat\r\n ...mapDaysOfTheWeekToSchedulerFrequency([Weekdays.Tuesday]),\r\n },\r\n notes,\r\n isActive: sending,\r\n customerIds: [],\r\n siteIds: [],\r\n systemIds: [],\r\n lastSent,\r\n };\r\n}\r\n\r\nfunction setScopeForUser(\r\n customerIds: Ids,\r\n siteIds: Ids,\r\n systemIds: Ids,\r\n userCustomerIds: Ids,\r\n userSiteIds: Ids,\r\n userSystemIds: Ids\r\n): Scope {\r\n if (customerIds.length === 0 && siteIds.length === 0 && systemIds.length === 0) {\r\n return {\r\n customerIds: userCustomerIds,\r\n siteIds: userSiteIds,\r\n systemIds: userSystemIds,\r\n };\r\n }\r\n\r\n return {\r\n customerIds,\r\n siteIds,\r\n systemIds,\r\n };\r\n}\r\n\r\nconst mapDaysOfTheWeekToSchedulerFrequency = (weekdays: Weekdays[]) => {\r\n let isSendOnMonday = false;\r\n let isSendOnTuesday = false;\r\n let isSendOnWednesday = false;\r\n let isSendOnThursday = false;\r\n let isSendOnFriday = false;\r\n let isSendOnSaturday = false;\r\n let isSendOnSunday = false;\r\n\r\n weekdays.forEach((day: Weekdays) => {\r\n switch (day) {\r\n case Weekdays.Monday:\r\n isSendOnMonday = true;\r\n break;\r\n case Weekdays.Tuesday:\r\n isSendOnTuesday = true;\r\n break;\r\n case Weekdays.Wednesday:\r\n isSendOnWednesday = true;\r\n break;\r\n case Weekdays.Thursday:\r\n isSendOnThursday = true;\r\n break;\r\n case Weekdays.Friday:\r\n isSendOnFriday = true;\r\n break;\r\n case Weekdays.Saturday:\r\n isSendOnSaturday = true;\r\n break;\r\n case Weekdays.Sunday:\r\n isSendOnSunday = true;\r\n break;\r\n }\r\n });\r\n\r\n return {\r\n isSendOnSunday,\r\n isSendOnMonday,\r\n isSendOnTuesday,\r\n isSendOnWednesday,\r\n isSendOnThursday,\r\n isSendOnFriday,\r\n isSendOnSaturday,\r\n };\r\n};\r\n\r\nexport const toggleScheduler = (\r\n id: string,\r\n schedulers: Entries,\r\n sending: boolean\r\n): Scheduler => {\r\n const schedulerReport = schedulers[id] as Scheduler;\r\n const { emailReportId } = schedulerReport;\r\n return {\r\n ...schedulerReport,\r\n isActive: sending,\r\n emailReportId: emailReportId + 1,\r\n };\r\n};\r\n\r\nexport const getSchedulerWeekdays = (scheduler: Scheduler): Weekdays[] => {\r\n const {\r\n isSendOnSunday,\r\n isSendOnMonday,\r\n isSendOnTuesday,\r\n isSendOnWednesday,\r\n isSendOnThursday,\r\n isSendOnFriday,\r\n isSendOnSaturday,\r\n } = scheduler.repeat;\r\n\r\n const weekdays: Weekdays[] = [];\r\n\r\n if (isSendOnMonday) {\r\n weekdays.push(Weekdays.Monday);\r\n }\r\n if (isSendOnThursday) {\r\n weekdays.push(Weekdays.Thursday);\r\n }\r\n if (isSendOnWednesday) {\r\n weekdays.push(Weekdays.Wednesday);\r\n }\r\n if (isSendOnTuesday) {\r\n weekdays.push(Weekdays.Tuesday);\r\n }\r\n if (isSendOnFriday) {\r\n weekdays.push(Weekdays.Friday);\r\n }\r\n if (isSendOnSaturday) {\r\n weekdays.push(Weekdays.Saturday);\r\n }\r\n if (isSendOnSunday) {\r\n weekdays.push(Weekdays.Sunday);\r\n }\r\n\r\n return weekdays;\r\n};\r\n\r\nexport const schedulerApiToSchedulerForm = (\r\n scheduler: Scheduler,\r\n customers: Entity,\r\n sites: Entity,\r\n systems: Entity\r\n): SchedulerForm => {\r\n const {\r\n reportId,\r\n subject,\r\n emailReportId,\r\n startSendDate,\r\n endSendDate,\r\n repeat,\r\n notes,\r\n isActive,\r\n customerIds,\r\n siteIds,\r\n systemIds,\r\n lastSent,\r\n } = scheduler;\r\n\r\n const systemsTree = userDataToTree(customers, sites, systems, customerIds, siteIds, systemIds);\r\n\r\n return {\r\n reportId: reportId!,\r\n emailSubject: subject,\r\n report: emailReportId,\r\n startDate: startSendDate,\r\n endDate: endSendDate,\r\n repeat: 0, // repeat.Frequency,\r\n weekdays: repeat.dayOfWeek!,\r\n notes,\r\n sending: isActive,\r\n customerIds,\r\n siteIds,\r\n systemIds,\r\n isFormTouched: true,\r\n systemsTree,\r\n lastSent,\r\n };\r\n};\r\n\r\nexport function treeCheckedNodesToSchedulerData(\r\n nodes: TreeNodeProps[],\r\n prevOrgIds: Ids = [],\r\n prevSiteIds: Ids = [],\r\n userCustomerIds: Ids,\r\n userSiteIds: Ids,\r\n userSystemsIds: Ids,\r\n customers: Entity,\r\n sites: Entity,\r\n systems: Entity\r\n): {\r\n customerDataIds: Ids;\r\n siteDataIds: Ids;\r\n systemDataIds: Ids;\r\n} {\r\n const customerDataIds: Ids = [];\r\n const siteDataIds: Ids = [];\r\n const systemDataIds: Ids = [];\r\n const currentNodes: TreeNodeProps[] = [];\r\n\r\n let isAllDataAccessible = false;\r\n if (userCustomerIds!.length === 0 && userSiteIds!.length === 0 && userSystemsIds!.length === 0) {\r\n isAllDataAccessible = true;\r\n }\r\n // Customers\r\n nodes.forEach((node: TreeNodeProps) => {\r\n if (\r\n // Check is node a Customer\r\n !node.rootId &&\r\n !node.parentId\r\n ) {\r\n // Check user permission about that nodes\r\n if (isAllDataAccessible || userCustomerIds.includes(node.value)) {\r\n customerDataIds.push(node.value);\r\n } else {\r\n sites.allIds.forEach(site => {\r\n const currentSite = sites.byId[site];\r\n if (currentSite.customerId === node.value) {\r\n currentNodes.push({\r\n label: currentSite.name,\r\n value: currentSite.id,\r\n rootId: node.value,\r\n });\r\n }\r\n });\r\n }\r\n }\r\n });\r\n\r\n nodes = nodes.concat(currentNodes);\r\n\r\n // Sites\r\n nodes.forEach((node: TreeNodeProps) => {\r\n if (\r\n // Check is node a site\r\n node.rootId &&\r\n !node.parentId &&\r\n // If parent is selected - skip\r\n !customerDataIds.includes(node.rootId) &&\r\n // If parent JUST unselected - skip\r\n !prevOrgIds.includes(node.rootId)\r\n ) {\r\n // Check user permission about that nodes\r\n if (isAllDataAccessible || userSiteIds.includes(node.value)) {\r\n siteDataIds.push(node.value);\r\n } else {\r\n const currentSite = sites.byId[node.value];\r\n if (userCustomerIds.includes(currentSite.customerId)) {\r\n siteDataIds.push(node.value);\r\n }\r\n\r\n systems.allIds.forEach(system => {\r\n const currentSystem = systems.byId[system];\r\n if (currentSystem.siteId === node.value) {\r\n currentNodes.push({\r\n label: currentSystem.serialNumber,\r\n value: currentSystem.id,\r\n parentId: node.value,\r\n });\r\n }\r\n });\r\n }\r\n }\r\n });\r\n\r\n nodes = nodes.concat(currentNodes);\r\n\r\n // Systems\r\n nodes.forEach((node: TreeNodeProps) => {\r\n if (\r\n node.parentId &&\r\n // If ancestor is selected - skip\r\n !customerDataIds.includes(node.rootId) &&\r\n !siteDataIds.includes(node.parentId) &&\r\n // If ancestor JUST unselected - skip\r\n !prevOrgIds.includes(node.rootId) &&\r\n !prevSiteIds.includes(node.parentId)\r\n ) {\r\n systemDataIds.push(node.value);\r\n }\r\n });\r\n\r\n return { customerDataIds, siteDataIds, systemDataIds };\r\n}\r\n\r\n/**\r\n * Following block makes Scope Sub-Tree to allow user to choose not from full scope, but\r\n * only from granted to him part of the scope.\r\n */\r\n\r\nexport function appUserDataScopeData(\r\n customerIds: Ids,\r\n siteIds: Ids,\r\n systemIds: Ids,\r\n customers: Entity,\r\n sites: Entity,\r\n systems: Entity\r\n): ScopeData {\r\n let scope = {};\r\n if (customerIds!.length === 0 && siteIds!.length === 0 && systemIds!.length === 0) {\r\n scope = {\r\n customers,\r\n sites,\r\n systems,\r\n };\r\n\r\n return scope as ScopeData;\r\n }\r\n const filteredOrgIds = [...customerIds];\r\n const filteredSiteIds = [...siteIds];\r\n const filteredSysIds = [...systemIds];\r\n\r\n const disabledOrgIds: Ids = [];\r\n const disabledSiteIds: Ids = [];\r\n\r\n const siteArray: SiteData[] = Object.values(sites.byId);\r\n const sysArray: SystemData[] = Object.values(systems.byId);\r\n\r\n siteArray.forEach(site => {\r\n const siteIsInUserScope = siteIds.indexOf(site.id) > -1;\r\n const parentOrgIsNotInScope = filteredOrgIds.indexOf(site.customerId) === -1;\r\n\r\n if (siteIsInUserScope && parentOrgIsNotInScope) {\r\n filteredOrgIds.push(site.customerId); // add this org to subtree\r\n disabledOrgIds.push(site.customerId); // and render always disabled\r\n }\r\n\r\n const siteIsNotInScope = filteredSiteIds.indexOf(site.id) === -1;\r\n const parentIsInScope = customerIds.indexOf(site.customerId) > -1;\r\n\r\n if (siteIsNotInScope && parentIsInScope) {\r\n filteredSiteIds.push(site.id); // add this site to subtree\r\n }\r\n });\r\n\r\n sysArray.forEach(sys => {\r\n const sysIsInUserScope = systemIds.indexOf(sys.id) > -1;\r\n const parentOrgIsNotInScope = filteredOrgIds.indexOf(sys.customerId) === -1;\r\n const parentSiteIsNotInScope = filteredSiteIds.indexOf(sys.siteId) === -1;\r\n\r\n if (sysIsInUserScope) {\r\n if (parentOrgIsNotInScope) {\r\n filteredOrgIds.push(sys.customerId);\r\n disabledOrgIds.push(sys.customerId);\r\n }\r\n if (parentSiteIsNotInScope) {\r\n filteredSiteIds.push(sys.siteId);\r\n disabledSiteIds.push(sys.siteId);\r\n }\r\n }\r\n\r\n const sysIsNotInScope = filteredSysIds.indexOf(sys.id) === -1;\r\n const parentIsInScope =\r\n siteIds.indexOf(sys.siteId) > -1 || customerIds.indexOf(sys.customerId) > -1;\r\n\r\n if (sysIsNotInScope && parentIsInScope) {\r\n filteredSysIds.push(sys.id);\r\n }\r\n });\r\n const userOrgs = _filterEntityStore(customers, filteredOrgIds);\r\n const userSites = _filterEntityStore(sites, filteredSiteIds);\r\n const userSystems = _filterEntityStore(systems, filteredSysIds);\r\n\r\n scope = {\r\n customers: userOrgs,\r\n sites: userSites,\r\n systems: userSystems,\r\n };\r\n\r\n return scope as ScopeData;\r\n}\r\n\r\nfunction _filterEntityStore(entity: Entity, ids: Ids): Entity {\r\n const result: Entity = { byId: {}, allIds: [] };\r\n\r\n ids.forEach(id => {\r\n result.byId[id] = entity.byId[id];\r\n result.allIds.push(id);\r\n });\r\n\r\n return result;\r\n}\r\n","import styled, { createGlobalStyle, keyframes } from 'styled-components/macro';\r\nimport { Tooltip, withStyles } from '@material-ui/core';\r\nexport const PBI_FILTER_ROW_HEIGHT = 49;\r\n\r\nexport const GlobalStyle = createGlobalStyle`\r\n body {\r\n margin: 0;\r\n padding: 0;\r\n font-family: Rubik, Helvetica, sans-serif;\r\n -webkit-font-smoothing: antialiased;\r\n -moz-osx-font-smoothing: grayscale;\r\n height: 100%;\r\n\r\n }\r\n #root {\r\n height: 100%;\r\n }\r\n code {\r\n font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New', monospace;\r\n }\r\n`;\r\nexport const appearanceEffect = keyframes`\r\n 0% {\r\n opacity: 0.01;\r\n }\r\n 100% {\r\n opacity: 1;\r\n }\r\n`;\r\n\r\nexport const NoDataIconWrapper = styled.div`\r\n width: 100%;\r\n height: 100%;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n`;\r\nexport const MobileDivider = styled.div`\r\n display: flex;\r\n height: 1px;\r\n width: 100%;\r\n background: #c5d0de;\r\n`;\r\nexport const VerticalDevider = styled.div<{ color: string; height: string }>`\r\n display: flex;\r\n width: 1px;\r\n height: ${props => props.height};\r\n margin-left: 10px;\r\n background-color: ${props => props.color};\r\n`;\r\n\r\nexport const buttonOnHoverColor = '#edf7ff';\r\n\r\nexport const globalColors = {\r\n regular: {\r\n text: {\r\n primary: '#354052',\r\n grey: '#7F8FA4',\r\n blue: '#2EA1F8',\r\n red: '#FF4081',\r\n white: '#ffffff',\r\n },\r\n background: {\r\n grey: '#f2f5fc',\r\n blue: '#2EA1F8',\r\n white: '#ffffff',\r\n\r\n red: '#F10C00',\r\n yellow: '#FFAB2B',\r\n green: '#1BB934',\r\n greyCardBackround: '#EFF3F6',\r\n greyDevider: '#C5D0DE',\r\n buttonBorder: '#C5D0DE',\r\n cardBorder: '#E6E9ED',\r\n disabled: '#C5D0DE',\r\n datePickerArrow: '#354052',\r\n },\r\n buttons: {\r\n disableBorder: '#E6E9ED',\r\n regularBorder: '#354052',\r\n selectedBorder: '#2EA1F8',\r\n whiteBorder: '#ffffff',\r\n disableText: '#E6E9ED',\r\n regularText: '#354052',\r\n selectedText: '#2EA1F8',\r\n whiteText: '#ffffff',\r\n },\r\n arrows: {\r\n green: '#1BB934',\r\n red: '#FF4081',\r\n gray: '#C5D0DE',\r\n },\r\n },\r\n};\r\nexport const StyledTooltip = withStyles({\r\n tooltip: {\r\n color: '#354052',\r\n backgroundColor: 'white',\r\n boxShadow: '2px 2px 4px rgba(0, 0, 0, 0.08)',\r\n },\r\n arrow: {\r\n color: 'white',\r\n },\r\n})(Tooltip);\r\nexport const CardBorder = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n width: 100%;\r\n height: 100%;\r\n background: #ffffff;\r\n border: 1px solid #c5d0de;\r\n box-shadow: 0px 0px 3px rgba(0, 0, 0, 0.03);\r\n border-radius: 4px;\r\n animation-name: ${appearanceEffect};\r\n animation-duration: 500ms;\r\n`;\r\nexport const backgroundColors = {\r\n bg: '#4158d0',\r\n bgImg: 'linear-gradient(43deg, #4158d0 0%, #c850c0 46%, #ffcc70 100%)',\r\n};\r\n","import { TreeNodeProps } from 'react-dropdown-tree-select';\r\n\r\nimport { Entity, Ids } from 'store/storeTypes';\r\nimport { CustomerData } from 'models/CustomerData';\r\nimport { SiteData } from 'models/SiteData';\r\nimport { SystemData } from 'models/SystemData';\r\nimport { makeTreeData } from 'components/_common/TreeSelect/treeHelpers';\r\n\r\n/** Such a tree is needed to initially populate common/TreeSelect component with data */\r\n\r\nexport function userDataToTree(\r\n customers: Entity,\r\n sites: Entity,\r\n systems: Entity,\r\n userOrgIds: Ids = [],\r\n userSiteIds: Ids = [],\r\n userSystemIds: Ids = [],\r\n prevOrgIds: Ids = [],\r\n prevSiteIds: Ids = [],\r\n disabledOrgIds: Ids = [],\r\n disabledSiteIds: Ids = []\r\n): TreeNodeProps[] {\r\n const customersAll: CustomerData[] = Object.values(customers.byId);\r\n const sitesAll: SiteData[] = Object.values(sites.byId);\r\n const systemsAll: SystemData[] = Object.values(systems.byId);\r\n\r\n return makeTreeData({\r\n rootElements: customersAll,\r\n parentElements: sitesAll.map(site => ({\r\n id: site.id,\r\n name: site.name,\r\n rootId: site.customerId,\r\n })),\r\n childElements: systemsAll.map(sys => ({\r\n id: sys.serialNumber,\r\n name: sys.serialNumber,\r\n parentId: sys.siteId,\r\n rootId: sys.customerId,\r\n })),\r\n rootSelectedIds: userOrgIds,\r\n parentSelectedIds: userSiteIds,\r\n childSelectedIds: userSystemIds,\r\n rootForceUncheckIds: prevOrgIds,\r\n parentForceUncheckIds: prevSiteIds,\r\n rootDisabledIds: disabledOrgIds,\r\n parentDisabledIds: disabledSiteIds,\r\n });\r\n}\r\n\r\nexport function treeCheckedNodesToUserData(\r\n nodes: TreeNodeProps[],\r\n prevOrgIds: Ids = [],\r\n prevSiteIds: Ids = []\r\n): {\r\n customerIds: Ids;\r\n siteIds: Ids;\r\n systemIds: Ids;\r\n} {\r\n const customerIds: Ids = [];\r\n const siteIds: Ids = [];\r\n const systemIds: Ids = [];\r\n\r\n // Customers\r\n nodes.forEach((node: TreeNodeProps) => {\r\n if (!node.rootId && !node.parentId) {\r\n customerIds.push(node.value);\r\n }\r\n });\r\n\r\n // Sites\r\n nodes.forEach((node: TreeNodeProps) => {\r\n if (\r\n // Check is node a site\r\n node.rootId &&\r\n !node.parentId &&\r\n // If parent is selected - skip\r\n !customerIds.includes(node.rootId) &&\r\n // If parent JUST unselected - skip\r\n !prevOrgIds.includes(node.rootId)\r\n ) {\r\n siteIds.push(node.value);\r\n }\r\n });\r\n\r\n // Systems\r\n nodes.forEach((node: TreeNodeProps) => {\r\n if (\r\n node.parentId &&\r\n // If ancestor is selected - skip\r\n !customerIds.includes(node.rootId) &&\r\n !siteIds.includes(node.parentId) &&\r\n // If ancestor JUST unselected - skip\r\n !prevOrgIds.includes(node.rootId) &&\r\n !prevSiteIds.includes(node.parentId)\r\n ) {\r\n systemIds.push(node.value);\r\n }\r\n });\r\n\r\n return { customerIds, siteIds, systemIds };\r\n}\r\n","export const getRealTimeHeaders = (isRealTime: boolean) => ({\r\n 'Content-Type': 'application/json',\r\n 'X-Real-Time-Cache-Disable': isRealTime,\r\n});\r\n","import { GenericPropsType } from './../store/storeTypes';\r\nimport { History, Location } from 'history';\r\nimport { Auth0DecodedHash, WebAuth } from 'auth0-js';\r\nimport i18n from 'i18next';\r\nimport { AuthService } from 'contracts/auth';\r\nimport { ErrorsHandler } from 'contracts/errors-handling';\r\nimport { AUTH0_CLAIMS_NAMESPACE, authCallbacksRegex, defaultAppPath } from 'contracts/constants';\r\nimport config from 'config/config';\r\nimport { Browser } from '@capacitor/browser';\r\ninterface AuthConfig {\r\n domain: string;\r\n clientID: string;\r\n redirectUri: string;\r\n audience: string;\r\n returnTo: string;\r\n}\r\n\r\nconst { domain, clientID, redirectUri, audience, returnTo }: AuthConfig = config.AUTH_CONFIG_STR!;\r\n\r\nconst LOGGED_IN_STORAGE_DATA_KEY = 'loginData';\r\n\r\ninterface LoginParams {\r\n idTokenPayload: GenericPropsType;\r\n idToken: string;\r\n accessToken?: string;\r\n expiresAt: number;\r\n}\r\n\r\nexport class AuthServiceImpl implements AuthService {\r\n private readonly _authOptions = {\r\n domain,\r\n clientID,\r\n redirectUri,\r\n audience,\r\n responseType: 'token id_token',\r\n scope: 'openid profile user_metadata app_metadata',\r\n };\r\n\r\n private readonly _auth0Client = new WebAuth(this._authOptions);\r\n\r\n private _loginParams: LoginParams | null = null;\r\n\r\n private tokenRenewalTimeout: number | undefined;\r\n\r\n constructor(private readonly _errorsHandler: ErrorsHandler, private readonly _history: History) {\r\n this._loadSession();\r\n }\r\n\r\n public get accessToken() {\r\n return (this._loginParams && this._loginParams.accessToken) || null;\r\n }\r\n\r\n public get idTokenPayload() {\r\n return (this._loginParams && this._loginParams.idTokenPayload) || {};\r\n }\r\n\r\n private _loadSession() {\r\n const serializedSession = localStorage.getItem(LOGGED_IN_STORAGE_DATA_KEY);\r\n if (serializedSession) {\r\n this._loginParams = JSON.parse(serializedSession);\r\n this._scheduleRenewal();\r\n }\r\n }\r\n\r\n private _setSession(authResult: Auth0DecodedHash) {\r\n this._loginParams = {\r\n expiresAt: authResult.expiresIn! * 1000 + Date.now(),\r\n accessToken: authResult.accessToken!,\r\n idToken: authResult.idToken!,\r\n idTokenPayload: authResult.idTokenPayload!,\r\n };\r\n // localStorage.setItem(LOGGED_IN_STORAGE_DATA_KEY, JSON.stringify(this._loginParams));\r\n\r\n this._scheduleRenewal();\r\n }\r\n\r\n private _renewSession = () => {\r\n this._auth0Client.checkSession({}, (err, authResult) => {\r\n if (authResult && authResult.accessToken && authResult.idToken) {\r\n this._setSession(authResult);\r\n } else if (err) {\r\n this.logout();\r\n // TODO: handle errors\r\n console.log(err);\r\n }\r\n });\r\n };\r\n\r\n private _scheduleRenewal = () => {\r\n const expiresAt = this._loginParams && this._loginParams.expiresAt;\r\n if (expiresAt) {\r\n const timeout = expiresAt - Date.now() - 15000;\r\n if (timeout && timeout > 0) {\r\n // @ts-ignore\r\n this.tokenRenewalTimeout = setTimeout(() => {\r\n this._renewSession();\r\n }, timeout);\r\n }\r\n }\r\n };\r\n\r\n public handleAuthentication = (location: Location) => {\r\n if (this.isAuthUrl(location)) {\r\n this._auth0Client.parseHash((err, authResult) => {\r\n if (authResult && authResult.accessToken && authResult.idToken) {\r\n this._setSession(authResult);\r\n this._history.replace(defaultAppPath);\r\n return;\r\n }\r\n\r\n if (err) {\r\n this._errorsHandler.onError(\r\n new Error(err.toString()),\r\n 'auth',\r\n i18n.t('authErrors.authenticationFailed', 'User authentication failed')\r\n );\r\n }\r\n\r\n this._history.replace(defaultAppPath);\r\n });\r\n }\r\n };\r\n\r\n public isAuthUrl = (location: Location) => {\r\n return authCallbacksRegex.test(location.hash);\r\n };\r\n\r\n // public login = () => {\r\n // this._auth0Client.authorize();\r\n // };\r\n\r\n public login = async () => {\r\n const platform = config.PLATFORM;\r\n if (platform !== 'web') {\r\n const url = config.AUTH_CONFIG_STR.redirectUri;\r\n await Browser.open({\r\n url,\r\n });\r\n } else {\r\n this._auth0Client.authorize();\r\n }\r\n };\r\n public logout = () => {\r\n localStorage.removeItem(LOGGED_IN_STORAGE_DATA_KEY);\r\n this._loginParams = null;\r\n this.tokenRenewalTimeout && clearTimeout(this.tokenRenewalTimeout);\r\n this._auth0Client.logout({ clientID, returnTo });\r\n };\r\n\r\n public isAuthenticated = () => {\r\n const expiresAt = (this._loginParams && this._loginParams.expiresAt) || 0;\r\n return Date.now() < expiresAt;\r\n };\r\n\r\n public getUserRoles = () => {\r\n return (\r\n this._loginParams &&\r\n this._loginParams.idTokenPayload &&\r\n this._loginParams.idTokenPayload[`${AUTH0_CLAIMS_NAMESPACE}roles`]\r\n );\r\n };\r\n\r\n public updateLocaleInLocalStorage = (locale: string) => {\r\n const data = localStorage.getItem(LOGGED_IN_STORAGE_DATA_KEY);\r\n if (!data) return;\r\n\r\n const token = JSON.parse(data);\r\n token.idTokenPayload.locale = locale;\r\n token.idTokenPayload[`${config.AUTH0_CLAIMS_NAMESPACE}locale`] = locale;\r\n\r\n localStorage.setItem(LOGGED_IN_STORAGE_DATA_KEY, JSON.stringify(token));\r\n };\r\n}\r\n","import React from 'react';\r\n\r\nimport history from '../helpers/navigation';\r\nimport errorsHandler from './errors-handler-service';\r\nimport { AuthServiceImpl } from './auth-service';\r\nimport { GenericPropsType } from 'store/storeTypes';\r\n\r\nexport const authService = new AuthServiceImpl(errorsHandler, history);\r\n\r\nexport const AuthContext = React.createContext(authService);\r\n\r\nexport function AuthProvider(props: { children: React.ReactNode }) {\r\n const { children } = props;\r\n return {children};\r\n}\r\n\r\nexport function withAuth(Component: React.ComponentType) {\r\n return function HocComponent(props: GenericPropsType) {\r\n return (\r\n \r\n {authService => }\r\n \r\n );\r\n };\r\n}\r\n","import {\r\n ChartRecord,\r\n GranularityEnum,\r\n IsEverReportedSystemType,\r\n NickNameRecord,\r\n} from './../store/storeTypes';\r\nimport { parseDate } from './chartUtils';\r\nconst isSistemHasNickName = (system, nickNamesArr: Array): boolean => {\r\n const currentNickNameRecord = nickNamesArr.find(\r\n (record: NickNameRecord) => record.serialNumber === system.serialNumber\r\n );\r\n if (!currentNickNameRecord) {\r\n return false;\r\n }\r\n return currentNickNameRecord.nickName === null || system.systemNickName === '' ? false : true;\r\n};\r\nexport const sortDataByOrderDesc = (\r\n dataArray,\r\n sortBy,\r\n order,\r\n nickNamesArr?: Array,\r\n isEverReportedSystems?: Array\r\n) => {\r\n if (!dataArray) {\r\n return;\r\n }\r\n //*if sortBy=== serialNumber there is special buisness logic which tell us to separate array on two parts -with nickName and without and does sort inside this parts. part with nickName will be on top always\r\n if (sortBy === 'serialNumber') {\r\n const systemsWithNickName = new Array();\r\n const systemsWithoutNickName = new Array();\r\n dataArray.forEach(system => {\r\n if (!isSistemHasNickName(system, nickNamesArr)) {\r\n systemsWithoutNickName.push(system);\r\n } else {\r\n systemsWithNickName.push(system);\r\n }\r\n });\r\n const resultWithNickName = [...systemsWithNickName].sort((a, b) =>\r\n order === 'desc'\r\n ? descendingComparator(a, b, 'systemNickName', nickNamesArr, isEverReportedSystems)\r\n : -descendingComparator(a, b, 'systemNickName', nickNamesArr, isEverReportedSystems)\r\n );\r\n const resultWithoutNickName = [...systemsWithoutNickName].sort((a, b) =>\r\n order === 'desc'\r\n ? descendingComparator(a, b, sortBy, undefined, isEverReportedSystems)\r\n : -descendingComparator(a, b, sortBy, undefined, isEverReportedSystems)\r\n );\r\n return [...resultWithNickName, ...resultWithoutNickName];\r\n }\r\n if (sortBy === 'status') {\r\n const result = [...dataArray].sort((a, b) =>\r\n order === 'desc'\r\n ? descendingComparator(a, b, sortBy, undefined, isEverReportedSystems)\r\n : -descendingComparator(a, b, sortBy, undefined, isEverReportedSystems)\r\n );\r\n return result;\r\n } else {\r\n const result = [...dataArray].sort((a, b) =>\r\n order === 'desc'\r\n ? descendingComparator(a, b, sortBy, undefined, isEverReportedSystems)\r\n : -descendingComparator(a, b, sortBy, undefined, isEverReportedSystems)\r\n );\r\n return result;\r\n }\r\n};\r\n\r\nconst descendingComparator = (\r\n a,\r\n b,\r\n sortBy: string,\r\n nickNamesArr?: Array,\r\n isEverReportedSystems?: Array\r\n) => {\r\n //*special sorting for sortBy systemModel - we have model name as a first word in systemName field. we need to get if end equal it.\r\n if (sortBy === 'status') {\r\n const firstPrinterStatus = a.printerStatus || a;\r\n const secondPrinterStatus = b.printerStatus || b;\r\n if (!firstPrinterStatus || !secondPrinterStatus) {\r\n return 0;\r\n }\r\n const firstPrinterWeight = statusWeights[firstPrinterStatus];\r\n const secondPrinterWeight = statusWeights[secondPrinterStatus];\r\n if (secondPrinterWeight < firstPrinterWeight) {\r\n return -1;\r\n }\r\n if (secondPrinterWeight > firstPrinterWeight) {\r\n return 1;\r\n }\r\n return 0;\r\n }\r\n if (sortBy === 'systemModel') {\r\n const aSystemName = a.systemName;\r\n const bSystemName = b.systemName;\r\n //*in production there is no possibility to get a.systemName === undefined or b.systemName=== undefined but in dev it occures thats why there is checks below;\r\n if (!aSystemName || !bSystemName) {\r\n return 0;\r\n }\r\n\r\n const [aModel] = aSystemName.split(' ');\r\n const [bModel] = bSystemName.split(' ');\r\n\r\n if (bModel < aModel) {\r\n return -1;\r\n }\r\n if (bModel > aModel) {\r\n return 1;\r\n }\r\n return 0;\r\n }\r\n if (sortBy === 'systemNickName') {\r\n const nickNameRecord1 = nickNamesArr.find(\r\n (record: NickNameRecord) => record.serialNumber === a.serialNumber\r\n );\r\n const nickNameRecord2 = nickNamesArr.find(\r\n (record: NickNameRecord) => record.serialNumber === b.serialNumber\r\n );\r\n const name1 =\r\n nickNameRecord1 && nickNameRecord1.nickName && nickNameRecord1.nickName.toLowerCase();\r\n const name2 =\r\n nickNameRecord2 && nickNameRecord2.nickName && nickNameRecord2.nickName.toLowerCase();\r\n\r\n if (name2 < name1) {\r\n return -1;\r\n }\r\n if (name2 > name1) {\r\n return 1;\r\n }\r\n if (name2 === undefined && name1) {\r\n return -1;\r\n }\r\n if (name1 === undefined && name2) {\r\n return 1;\r\n }\r\n return 0;\r\n } else {\r\n //*the usual and most used case of equality\r\n //*isEverReported status could be undefined\r\n const isAEverReported = isEverReportedSystems?.find(\r\n system => system?.serialNumber === a.serialNumber\r\n )?.isEverReported;\r\n\r\n const isBEverReported = isEverReportedSystems?.find(\r\n system => system?.serialNumber === b.serialNumber\r\n )?.isEverReported;\r\n if (isAEverReported && !isBEverReported) {\r\n return -1;\r\n }\r\n if (isBEverReported && !isAEverReported) {\r\n return 1;\r\n }\r\n if (b[sortBy] < a[sortBy]) {\r\n return -1;\r\n }\r\n if (b[sortBy] > a[sortBy]) {\r\n return 1;\r\n }\r\n if (b[sortBy] === undefined && a[sortBy]) {\r\n return -1;\r\n }\r\n if (a[sortBy] === undefined && b[sortBy]) {\r\n return 1;\r\n }\r\n //*to move down all never reported systems =>\r\n\r\n return 0;\r\n }\r\n};\r\nexport const getSortByArray = (isToday: boolean): Array => {\r\n if (isToday) {\r\n return [\r\n { label: 'Status', value: '1', fieldName: 'status' },\r\n { label: 'System Type', value: '2', fieldName: 'systemModel' },\r\n { label: 'System Name', value: '3', fieldName: 'serialNumber' },\r\n { label: 'Production', value: '4', fieldName: 'production' },\r\n { label: 'Avg. Prod. Rate', value: '5', fieldName: 'speed' },\r\n { label: 'Availability', value: '6', fieldName: 'availability' },\r\n {\r\n label: 'Last update',\r\n value: '7',\r\n fieldName: 'lastUpdate',\r\n },\r\n ];\r\n } else {\r\n return [\r\n { label: 'System Type', value: '1', fieldName: 'systemModel' },\r\n { label: 'System Name', value: '2', fieldName: 'serialNumber' },\r\n { label: 'Production', value: '3', fieldName: 'production' },\r\n { label: 'Avg. Prod. Rate', value: '4', fieldName: 'speed' },\r\n { label: 'Availability', value: '5', fieldName: 'availability' },\r\n ];\r\n }\r\n};\r\nexport type sortByArrayUnit = {\r\n label:\r\n | 'Status'\r\n | 'System Type'\r\n | 'System Name'\r\n | 'Production'\r\n | 'Avg. Prod. Rate'\r\n | 'Availability'\r\n | 'Last update';\r\n value: '1' | '2' | '3' | '4' | '5' | '6' | '7';\r\n fieldName:\r\n | 'status'\r\n | 'systemModel'\r\n | 'serialNumber'\r\n | 'production'\r\n | 'speed'\r\n | 'availability'\r\n | 'lastUpdate';\r\n};\r\nexport const statusWeights = {\r\n Printing: 1,\r\n Preparation: 2,\r\n Idle: 3,\r\n NotReporting: 4,\r\n Maintenance: 5,\r\n Maintenace: 5,\r\n Error: 6,\r\n NotDefined: 7,\r\n};\r\n\r\nexport const sortLegendItemByStatus = (\r\n array: Array<{ statusPercentage: number; status: string }>\r\n) => {\r\n return array.sort((a, b) => statusWeights[a.status] - statusWeights[b.status]);\r\n};\r\n\r\ntype SortByGranularityArgsType = {\r\n granularity: GranularityEnum;\r\n records: Array;\r\n};\r\nexport const sortByGranularity = ({ granularity, records }: SortByGranularityArgsType) => {\r\n //* this function is needed to sort records by date field of record. date field format depends on granularity.\r\n //* date field is string which could have a different formats depending on granularity and it is needed to be parsed to Date object for comparing.\r\n //* granularity Hour has date field in format - 17:00 Wednesday 31 January 2024\r\n //* granularity Day has date field in format - Tuesday 6 February 2024\r\n //* granularity Week has date field in format - December 18 - December 24 , 2023\r\n //* granularity Month has date field in format - 202301\r\n\r\n function customDateSort(a, b): number {\r\n const dateA = parseDate(a.date, granularity);\r\n const dateB = parseDate(b.date, granularity);\r\n return dateA - dateB;\r\n }\r\n records.sort(customDateSort);\r\n return records;\r\n};\r\n","import { TreeNodeProps } from 'react-dropdown-tree-select';\r\nimport { createReducer } from 'typesafe-actions';\r\n\r\nimport { actions, RootAction } from 'actions';\r\nimport { Entity, UserForm } from 'store/storeTypes';\r\nimport { userApiToUi } from '../_sharedLogic/userConversions';\r\nimport {\r\n userDataToTree,\r\n treeCheckedNodesToUserData,\r\n} from '../_sharedLogic/userScopeTreeConversions';\r\nimport { CustomerData } from 'models/CustomerData';\r\nimport { SiteData } from 'models/SiteData';\r\nimport { SystemData } from 'models/SystemData';\r\nimport { ExtendedUserData } from 'models/ExtendedUserData';\r\n\r\nconst INIT_STATE: UserForm = {\r\n id: '',\r\n firstname: '',\r\n lastname: '',\r\n email: '',\r\n customerIds: [],\r\n siteIds: [],\r\n systemIds: [],\r\n systemsTree: [],\r\n setGoals: false,\r\n createReports: false,\r\n adminPermissions: false,\r\n isFormTouched: false,\r\n isRootUser: false,\r\n manageApi: false,\r\n};\r\n\r\nconst {\r\n openModalUserCreateAC,\r\n openModalUserEditAC,\r\n openModalUserDuplicateAC,\r\n changeFormPlainValue,\r\n changeUserFormScopeAC,\r\n} = actions.userUi;\r\n\r\nexport default createReducer(INIT_STATE)\r\n .handleAction(openModalUserCreateAC, (state, action) =>\r\n openModalUserCreate(state, action.payload)\r\n )\r\n .handleAction(openModalUserEditAC, (state, action) => openModalUserEdit(state, action.payload))\r\n .handleAction(openModalUserDuplicateAC, (state, action) =>\r\n openModalUserDuplicate(state, action.payload)\r\n )\r\n .handleAction(changeFormPlainValue, (state, action) =>\r\n changeFormPlainValueRF(state, action.payload)\r\n )\r\n .handleAction(changeUserFormScopeAC, (state, action) =>\r\n changeUserFormScope(state, action.payload)\r\n );\r\nexport type OpenModalUserCreateType = {\r\n customers: Entity;\r\n sites: Entity;\r\n systems: Entity;\r\n};\r\nfunction openModalUserCreate(state: UserForm, payload: OpenModalUserCreateType): UserForm {\r\n const { customers, sites, systems } = payload;\r\n\r\n return {\r\n ...INIT_STATE,\r\n systemsTree: userDataToTree(customers, sites, systems),\r\n };\r\n}\r\nexport type OpenModalUserEditPropsType = {\r\n customers: Entity;\r\n sites: Entity;\r\n systems: Entity;\r\n user: ExtendedUserData;\r\n};\r\nfunction openModalUserEdit(state: UserForm, payload: OpenModalUserEditPropsType): UserForm {\r\n const { customers, sites, systems, user } = payload;\r\n\r\n return userApiToUi(customers, sites, systems, user);\r\n}\r\nexport type OpenModalUserDuplicateTypeProps = {\r\n customers: Entity;\r\n sites: Entity;\r\n systems: Entity;\r\n user: ExtendedUserData;\r\n};\r\nfunction openModalUserDuplicate(\r\n state: UserForm,\r\n payload: OpenModalUserDuplicateTypeProps\r\n): UserForm {\r\n const { user, customers, sites, systems } = payload;\r\n\r\n const form = userApiToUi(customers, sites, systems, user);\r\n form.id = '';\r\n form.avatarUrl = '';\r\n form.isFormTouched = true;\r\n\r\n return form;\r\n}\r\nexport type ChangeFormPlainValueRFPropsType = {\r\n field: string | number | symbol;\r\n value: unknown | Record;\r\n};\r\nfunction changeFormPlainValueRF(\r\n state: UserForm,\r\n payload: ChangeFormPlainValueRFPropsType\r\n): UserForm {\r\n const { field, value } = payload;\r\n\r\n return { ...state, [field]: value, isFormTouched: true };\r\n}\r\nexport type ChangeUserFormScopePropsType = {\r\n customers: Entity;\r\n sites: Entity;\r\n systems: Entity;\r\n selectedNodes: Array;\r\n};\r\nfunction changeUserFormScope(state: UserForm, payload: ChangeUserFormScopePropsType): UserForm {\r\n const { customers, sites, systems } = payload;\r\n const nodes: TreeNodeProps[] = payload.selectedNodes;\r\n\r\n // Convert selected nodes came from SelectTree component to arrays of IDs\r\n const { customerIds, siteIds, systemIds } = treeCheckedNodesToUserData(\r\n nodes,\r\n state.customerIds,\r\n state.siteIds\r\n );\r\n\r\n // Make new tree for SelectTree\r\n const systemsTree = userDataToTree(\r\n // Directories of all entries\r\n customers,\r\n sites,\r\n systems,\r\n // Currently selected entries\r\n customerIds,\r\n siteIds,\r\n systemIds,\r\n // Previously selected entries to perform descendants unchecking\r\n state.customerIds,\r\n state.siteIds\r\n );\r\n\r\n return {\r\n ...state,\r\n customerIds,\r\n siteIds,\r\n systemIds,\r\n systemsTree,\r\n isFormTouched: true,\r\n };\r\n}\r\n","import { AnyAction } from 'redux';\r\nimport { createReducer } from 'typesafe-actions';\r\n\r\nimport { actions, RootAction } from '../../actions';\r\nimport { UserModal, MODAL_STATUS } from '../../store/storeTypes';\r\n\r\nconst INIT_STATE: UserModal = {\r\n status: MODAL_STATUS.CLOSED,\r\n lastSavedUserId: '',\r\n isInvitationSent: false,\r\n};\r\n\r\nconst {\r\n openModalUserCreateAC,\r\n openModalUserEditAC,\r\n openModalUserDuplicateAC,\r\n setStatusModalUser,\r\n closeModalUser,\r\n} = actions.userUi;\r\nconst { saveUserSuccess, inviteUserSuccess } = actions.userApi;\r\n\r\nexport default createReducer(INIT_STATE)\r\n .handleAction([openModalUserCreateAC, openModalUserEditAC, openModalUserDuplicateAC], state => ({\r\n ...state,\r\n status: MODAL_STATUS.EDITING,\r\n }))\r\n .handleAction(setStatusModalUser, (state, action) => ({\r\n ...state,\r\n status: action.payload,\r\n }))\r\n .handleAction(closeModalUser, () => ({ ...INIT_STATE }))\r\n .handleAction(saveUserSuccess, (state, action) => updateLastSavedUserId(state, action))\r\n .handleAction(inviteUserSuccess, (state, action) => ({\r\n ...state,\r\n isInvitationSent: state.lastSavedUserId === action.payload,\r\n }));\r\n\r\nfunction updateLastSavedUserId(state: UserModal, action: AnyAction): UserModal {\r\n const savedUser =\r\n action.payload && Array.isArray(action.payload.newUsers) && action.payload.newUsers[0];\r\n\r\n if (savedUser) {\r\n return { ...state, lastSavedUserId: savedUser.id };\r\n }\r\n\r\n return state;\r\n}\r\n","import { createReducer } from 'typesafe-actions';\r\n\r\nimport { actions, RootAction } from '../../actions';\r\n\r\nconst { toggleUserTableRow, toggleUserTableAll } = actions.userUi;\r\n\r\nexport default createReducer([])\r\n .handleAction(toggleUserTableRow, (state, action) => toggleUserTableRowRF(state, action.payload))\r\n .handleAction(toggleUserTableAll, (state, action) => toggleUserTableAllRF(state, action.payload));\r\n\r\nfunction toggleUserTableRowRF(state: string[], id: string): string[] {\r\n let selectedUserRows: string[] = [];\r\n if (state.includes(id)) {\r\n selectedUserRows = state.filter(e => e !== id);\r\n } else {\r\n selectedUserRows = [...state];\r\n selectedUserRows.push(id);\r\n }\r\n\r\n return selectedUserRows;\r\n}\r\n\r\nfunction toggleUserTableAllRF(state: string[], ids: string[]): string[] {\r\n let selectedUserRows: string[] = [];\r\n if (state.length !== ids.length) {\r\n selectedUserRows = [...ids];\r\n }\r\n\r\n return selectedUserRows;\r\n}\r\n","import { createReducer } from 'typesafe-actions';\r\n\r\nimport { actions, RootAction } from '../../actions';\r\n\r\nconst { changeUserSearchValue } = actions.userUi;\r\n\r\nexport default createReducer('').handleAction(\r\n changeUserSearchValue,\r\n (state, action) => action.payload\r\n);\r\n","import { createReducer } from 'typesafe-actions';\r\n\r\nimport { actions, RootAction } from '../../actions';\r\nimport { Notification } from '../../store/storeTypes';\r\n\r\nconst INIT_STATE: Notification[] = [];\r\n\r\nconst { enqueueNotificationAC, removeNotification } = actions.ui;\r\n\r\nexport default createReducer(INIT_STATE)\r\n .handleAction(enqueueNotificationAC, (state, action) => [...state, action.payload])\r\n\r\n .handleAction(removeNotification, (state, action) =>\r\n state.filter(notification => notification.key !== action.payload)\r\n );\r\n","import { createReducer } from 'typesafe-actions';\r\n\r\nimport { actions, RootAction } from '../../actions';\r\nimport { SchedulerModal, MODAL_STATUS } from '../../store/storeTypes';\r\n\r\nconst INIT_STATE: SchedulerModal = {\r\n status: MODAL_STATUS.CLOSED,\r\n previewStatus: MODAL_STATUS.CLOSED,\r\n};\r\n\r\nconst {\r\n openModalSchedulerCreateAC,\r\n openModalSchedulerEditAC,\r\n openModalSchedulerDuplicateAC,\r\n closeModalScheduler,\r\n openModalSchedulerPreviewAC,\r\n closeModalSchedulerPreview,\r\n setStatusModalScheduler,\r\n} = actions.schedulerUi;\r\n\r\nconst { deleteSchedulerSuccess } = actions.schedulerApi;\r\n\r\nexport default createReducer(INIT_STATE)\r\n .handleAction(\r\n [openModalSchedulerCreateAC, openModalSchedulerEditAC, openModalSchedulerDuplicateAC],\r\n state => ({\r\n ...state,\r\n status: MODAL_STATUS.EDITING,\r\n previewStatus: MODAL_STATUS.CLOSED,\r\n })\r\n )\r\n .handleAction(closeModalScheduler, state => ({\r\n ...state,\r\n status: MODAL_STATUS.CLOSED,\r\n }))\r\n .handleAction(openModalSchedulerPreviewAC, state => ({\r\n ...state,\r\n previewStatus: MODAL_STATUS.EDITING,\r\n }))\r\n .handleAction([closeModalSchedulerPreview, deleteSchedulerSuccess], state => ({\r\n ...state,\r\n previewStatus: MODAL_STATUS.CLOSED,\r\n }))\r\n .handleAction(setStatusModalScheduler, (state, action) => ({\r\n ...state,\r\n status: action.payload,\r\n }));\r\n","import { TreeNodeProps } from 'react-dropdown-tree-select';\r\nimport getMinutes from 'date-fns/getMinutes';\r\nimport setMinutes from 'date-fns/setMinutes';\r\nimport getHours from 'date-fns/getHours';\r\nimport setHours from 'date-fns/setHours';\r\nimport { createReducer } from 'typesafe-actions';\r\n\r\nimport { actions, RootAction } from 'actions';\r\nimport { SchedulerForm, AppUser } from 'store/storeTypes';\r\nimport { Frequency, Scheduler } from 'models/Scheduler';\r\nimport ScopeData from '../../models/ScopeData';\r\nimport {\r\n userDataToTree,\r\n treeCheckedNodesToUserData,\r\n} from '../_sharedLogic/userScopeTreeConversions';\r\nimport { ChangeSchedulerFormScopePayload } from 'actions/schedulerUiActions';\r\nimport {\r\n treeCheckedNodesToSchedulerData,\r\n appUserDataScopeData,\r\n schedulerApiToSchedulerForm,\r\n} from '../_sharedLogic/schedulerConversions';\r\n\r\nconst INIT_STATE: SchedulerForm = {\r\n reportId: '',\r\n emailSubject: 'My report',\r\n report: null,\r\n startDate: new Date(),\r\n repeat: null,\r\n weekdays: [],\r\n notes: '',\r\n sending: true,\r\n customerIds: [], // Selected scope\r\n siteIds: [],\r\n systemIds: [],\r\n userOrgs: { byId: {}, allIds: [] }, // Shown nodes\r\n userSites: { byId: {}, allIds: [] },\r\n userSystems: { byId: {}, allIds: [] },\r\n disabledOrgIds: [], // Shown but unavailable\r\n disabledSiteIds: [],\r\n systemsTree: [], // Tree\r\n isFormTouched: false,\r\n};\r\n\r\nconst {\r\n openModalSchedulerCreateAC,\r\n openModalSchedulerEditAC,\r\n openModalSchedulerDuplicateAC,\r\n changeSchedulerFormScopeAC,\r\n changeSchedulerFormValue,\r\n changeSchedulerFormStartDate,\r\n changeSchedulerFormStartTime,\r\n changeSchedulerFormRepeat,\r\n} = actions.schedulerUi;\r\n\r\nexport default createReducer(INIT_STATE)\r\n .handleAction(openModalSchedulerCreateAC, (state, action) =>\r\n openModalSchedulerCreate(state, action.payload)\r\n )\r\n .handleAction(openModalSchedulerEditAC, (state, action) =>\r\n openModalSchedulerEdit(state, action.payload)\r\n )\r\n .handleAction(openModalSchedulerDuplicateAC, (state, action) =>\r\n openModalSchedulerDuplicate(state, action.payload)\r\n )\r\n .handleAction(changeSchedulerFormScopeAC, (state, action) =>\r\n changeSchedulerFormScope(state, action.payload)\r\n )\r\n .handleAction(changeSchedulerFormValue, (state, action) =>\r\n changeFormPlainValue(state, action.payload)\r\n )\r\n .handleAction(changeSchedulerFormStartDate, (state, action) =>\r\n changeFormStartDate(state, action.payload)\r\n )\r\n .handleAction(changeSchedulerFormStartTime, (state, action) =>\r\n changeFormStartTime(state, action.payload)\r\n )\r\n .handleAction(changeSchedulerFormRepeat, (state, action) =>\r\n changeFormRepeat(state, action.payload)\r\n );\r\n\r\nconst changeFormStartDate = (state: SchedulerForm, value: Date) => {\r\n const date = new Date(value);\r\n const oldDateHours = getHours(date);\r\n const oldDateMinutes = getMinutes(date);\r\n let newDate = setHours(value, oldDateHours);\r\n newDate = setMinutes(newDate, oldDateMinutes);\r\n\r\n return { ...state, startDate: newDate, isFormTouched: true };\r\n};\r\n\r\nconst changeFormStartTime = (state: SchedulerForm, value: Date) => {\r\n const time = new Date(value);\r\n const newDateHours = getHours(time);\r\n const newDateMinutes = getMinutes(time);\r\n let newDate = setHours(new Date(state.startDate), newDateHours);\r\n newDate = setMinutes(newDate, newDateMinutes);\r\n\r\n return { ...state, startDate: newDate, isFormTouched: true };\r\n};\r\n\r\nconst changeFormRepeat = (state: SchedulerForm, value: Frequency | null) => {\r\n let weekdays = [...state.weekdays];\r\n\r\n if (value === null || Number(value) !== Frequency.Weekly) {\r\n weekdays = [];\r\n }\r\n\r\n return { ...state, repeat: value, weekdays, isFormTouched: true };\r\n};\r\n\r\nconst openModalSchedulerCreate = (\r\n state: SchedulerForm,\r\n payload: ScopeData & { appUser: AppUser }\r\n): SchedulerForm => {\r\n const { customers, sites, systems } = payload;\r\n const { customerIds, siteIds, systemIds } = payload.appUser;\r\n const scope = appUserDataScopeData(customerIds!, siteIds!, systemIds!, customers, sites, systems);\r\n\r\n return {\r\n ...INIT_STATE,\r\n userOrgs: scope.customers,\r\n userSites: scope.sites,\r\n userSystems: scope.systems,\r\n systemsTree: userDataToTree(scope.customers, scope.sites, scope.systems),\r\n };\r\n};\r\n\r\nconst openModalSchedulerEdit = (\r\n state: SchedulerForm,\r\n payload: ScopeData & { appUser: AppUser } & { scheduler: Scheduler }\r\n): SchedulerForm => {\r\n const { scheduler } = payload;\r\n const { customers, sites, systems } = payload;\r\n const { customerIds, siteIds, systemIds } = payload.appUser;\r\n const scope = appUserDataScopeData(customerIds!, siteIds!, systemIds!, customers, sites, systems);\r\n\r\n return {\r\n ...schedulerApiToSchedulerForm(scheduler, scope.customers, scope.sites, scope.systems),\r\n userOrgs: scope.customers,\r\n userSites: scope.sites,\r\n userSystems: scope.systems,\r\n };\r\n};\r\n\r\nconst openModalSchedulerDuplicate = (\r\n state: SchedulerForm,\r\n payload: ScopeData & { appUser: AppUser } & { scheduler: Scheduler }\r\n): SchedulerForm => {\r\n const { scheduler } = payload;\r\n const { customers, sites, systems } = payload;\r\n const { customerIds, siteIds, systemIds } = payload.appUser;\r\n const scope = appUserDataScopeData(customerIds!, siteIds!, systemIds!, customers, sites, systems);\r\n\r\n return {\r\n ...schedulerApiToSchedulerForm(scheduler, scope.customers, scope.sites, scope.systems),\r\n reportId: '0',\r\n userOrgs: scope.customers,\r\n userSites: scope.sites,\r\n userSystems: scope.systems,\r\n };\r\n};\r\n\r\nconst changeSchedulerFormScope = (\r\n state: SchedulerForm,\r\n payload: ChangeSchedulerFormScopePayload\r\n): SchedulerForm => {\r\n const { customers, sites, systems } = payload;\r\n const { userCustomerIds, userSiteIds, userSystemIds } = payload;\r\n const nodes: TreeNodeProps[] = payload.selectedNodes;\r\n // Convert selected nodes came from SelectTree component to arrays of IDs\r\n const { customerIds, siteIds, systemIds } = treeCheckedNodesToUserData(\r\n nodes,\r\n state.customerIds,\r\n state.siteIds\r\n );\r\n const { customerDataIds, siteDataIds, systemDataIds } = treeCheckedNodesToSchedulerData(\r\n nodes,\r\n state.customerIds,\r\n state.siteIds,\r\n userCustomerIds,\r\n userSiteIds,\r\n userSystemIds,\r\n customers,\r\n sites,\r\n systems\r\n );\r\n // Make new tree for SelectTree\r\n const systemsTree = userDataToTree(\r\n // Directories of all entries\r\n customers,\r\n sites,\r\n systems,\r\n // Currently selected entries\r\n customerIds,\r\n siteIds,\r\n systemIds,\r\n // Previously selected entries to perform descendants unchecking\r\n state.customerIds,\r\n state.siteIds\r\n );\r\n\r\n return {\r\n ...state,\r\n customerIds: customerDataIds,\r\n siteIds: siteDataIds,\r\n systemIds: systemDataIds,\r\n systemsTree,\r\n isFormTouched: true,\r\n };\r\n};\r\nexport type ChangeFormPlainValuePropTypes = {\r\n field: string | number | symbol;\r\n value: Record;\r\n};\r\nconst changeFormPlainValue = (\r\n state: SchedulerForm,\r\n payload: ChangeFormPlainValuePropTypes\r\n): SchedulerForm => {\r\n const { field, value } = payload;\r\n\r\n return { ...state, [field]: value, isFormTouched: true };\r\n};\r\n","import { createReducer } from 'typesafe-actions';\r\n\r\nimport { actions, RootAction } from '../../actions';\r\nimport { authService } from '../../services/AuthProvider';\r\nimport config from 'config/config';\r\n\r\nconst setTimer = () => setTimeout(authService.logout, config.USER_LOGOUT_TIMEOUT);\r\nconst INIT_STATE = setTimer();\r\n\r\nexport default createReducer(INIT_STATE).handleAction(\r\n actions.ui.updateLogoutTimerAC,\r\n state => {\r\n clearTimeout(state);\r\n return setTimer();\r\n }\r\n);\r\n","import { createReducer } from 'typesafe-actions';\r\nimport { actions, RootAction } from 'actions';\r\n\r\nconst { toggleSchedulerAC } = actions.schedulerApi;\r\nconst INIT_STATE = '0';\r\n\r\nexport default createReducer(INIT_STATE).handleAction(\r\n toggleSchedulerAC,\r\n (state, action) => action.payload\r\n);\r\n","import { createReducer } from 'typesafe-actions';\r\n\r\nimport { actions, RootAction } from '../../actions';\r\nimport { Scheduler, Frequency } from '../../models/Scheduler';\r\n\r\nconst INIT_STATE: Scheduler = {\r\n reportId: '',\r\n subject: '',\r\n userId: '',\r\n emailReportId: 0,\r\n emailReportName: '',\r\n startSendDate: new Date(),\r\n endSendDate: new Date(),\r\n repeat: { frequency: Frequency.Weekly },\r\n lastSent: new Date(),\r\n notes: '',\r\n isActive: false,\r\n customerIds: [],\r\n siteIds: [],\r\n systemIds: [],\r\n};\r\n\r\nconst { openModalSchedulerPreviewAC } = actions.schedulerUi;\r\n\r\nconst { saveSchedulerSuccess } = actions.schedulerApi;\r\n\r\nexport default createReducer(INIT_STATE)\r\n .handleAction(openModalSchedulerPreviewAC, (state, action) => action.payload)\r\n .handleAction(saveSchedulerSuccess, (state, action) =>\r\n toggleSchedulerPreview(state, action.payload)\r\n );\r\n\r\nfunction toggleSchedulerPreview(state: Scheduler, payload: Scheduler): Scheduler {\r\n if (state.reportId === payload.reportId) {\r\n return payload;\r\n }\r\n\r\n return state;\r\n}\r\n","import { createReducer } from 'typesafe-actions';\r\n\r\nimport { actions, RootAction } from 'actions';\r\nimport { FilterCalendarModal, MODAL_STATUS } from 'store/storeTypes';\r\n\r\nconst INIT_STATE: FilterCalendarModal = {\r\n status: MODAL_STATUS.CLOSED,\r\n previewStatus: MODAL_STATUS.CLOSED,\r\n selectedFilter: '',\r\n};\r\n\r\nconst { openCalendarModal, closeCalendarModal } = actions.filterCalenderUi;\r\n\r\nexport default createReducer(INIT_STATE)\r\n .handleAction(openCalendarModal, state => ({\r\n ...state,\r\n status: MODAL_STATUS.EDITING,\r\n previewStatus: MODAL_STATUS.CLOSED,\r\n }))\r\n .handleAction(closeCalendarModal, state => ({\r\n ...state,\r\n status: MODAL_STATUS.CLOSED,\r\n previewStatus: MODAL_STATUS.EDITING,\r\n }));\r\n","import { createReducer } from 'typesafe-actions';\r\n\r\nimport { actions, RootAction } from '../../actions';\r\nimport { SystemAnalysisViews } from '../../store/storeTypes';\r\n\r\nconst INIT_STATE: SystemAnalysisViews = 'table'; // any value from enum can work, just for proper init\r\n\r\nconst { setSystemAnalysisView } = actions.userUi;\r\n\r\nexport default createReducer(INIT_STATE).handleAction(\r\n setSystemAnalysisView,\r\n (state, action) => action.payload\r\n);\r\n","import { createSelector } from 'reselect';\r\nimport { Reducer, combineReducers } from 'redux';\r\n\r\nimport userFormReducer from './userFormUiReducer';\r\nimport userModalReducer from './userModalUiReducer';\r\nimport userTableReducer from './userTableUiReducer';\r\nimport userSearchReducer from './userSearchUiReducer';\r\nimport notificationQueueReducer from './notificationQueueUiReducer';\r\nimport schedulerModalUiReducer from './schedulerModalUiReducer';\r\nimport schedulerFormUiReducer from './schedulerFormUiReducer';\r\nimport logoutTimerUiReducer from './logoutTimerUiReducer';\r\nimport schedulerToggleUiReducer from './schedulerToggleUiReducer';\r\nimport schedulerPreviewUiReducer from './schedulerPreviewUiReducer';\r\nimport FilterModalReducer from './filterModalUiReducer';\r\nimport systemGroupUiReducer from './systemGroupUiReducer';\r\nimport systemAnalysisViewsReducer from './systemAnalysisViewsReducer';\r\nimport overviewUiReducer from './overviewUiReducer';\r\nimport machineFilter from './machineFilterReducer';\r\nimport { Store } from 'store/storeTypes';\r\nimport captchaReducer from './captchaReducer';\r\n\r\nexport const uiReducer: Reducer = combineReducers({\r\n notificationQueue: notificationQueueReducer,\r\n selectedUserRows: userTableReducer,\r\n userModal: userModalReducer,\r\n userForm: userFormReducer,\r\n userSearch: userSearchReducer,\r\n schedulerModal: schedulerModalUiReducer,\r\n schedulerForm: schedulerFormUiReducer,\r\n schedulerPreview: schedulerPreviewUiReducer,\r\n logoutTimer: logoutTimerUiReducer,\r\n toggleSchedulerId: schedulerToggleUiReducer,\r\n filterCalenderModal: FilterModalReducer,\r\n selectedSystemGroup: systemGroupUiReducer,\r\n systemAnalysisView: systemAnalysisViewsReducer,\r\n overview: overviewUiReducer,\r\n machineFilter: machineFilter,\r\n captcha: captchaReducer,\r\n});\r\n\r\nexport default uiReducer;\r\n\r\nconst uiState = (state: Store) => {\r\n return state.ui;\r\n};\r\n\r\nexport const machineFilterSelector = createSelector([uiState], ui => {\r\n return ui['machineFilter'];\r\n});\r\nexport const isMachineFilterOpenSelector = createSelector(\r\n [machineFilterSelector],\r\n machineFilter => {\r\n return machineFilter['isOpen'];\r\n }\r\n);\r\nexport const filterCalenderModalSelector = createSelector([uiState], ui => {\r\n return ui['filterCalenderModal'];\r\n});\r\n","import _ from 'lodash';\r\nimport { createReducer } from 'typesafe-actions';\r\nimport { createSelector } from 'reselect';\r\nimport {\r\n jobAnalysisToggleSelectedColorsAC,\r\n jobAnalysisTotalCardsAC,\r\n jobAnalysisChartCardsAC,\r\n jobAnalysisChartsAC,\r\n downloadInkConsumptionPerJobReportAC,\r\n isInkConsumptionPerJobValidToDownloadAC,\r\n jobAnalysisInkConsumptionKPIAC,\r\n jobAnalysisPrintingTimeKPIAC,\r\n jobAnalysisTotalImpressionsKPIAC,\r\n} from 'actions/jobAnalysisActions';\r\nimport { toggleSelectionSizeGroupCards } from 'actions/jobSummaryActions';\r\nimport { mergeCopyArrays } from 'helpers/conversions';\r\nimport { inkConsuptionPerJobStatuses, JobAnaylsisByType, Store } from 'store/storeTypes';\r\nimport { systemGroupSelector } from './ui/systemGroupUiReducer';\r\nimport { getMaxKeepAliveRequestAC } from 'actions/overviewActions';\r\n\r\nconst INIT_STATE: JobAnaylsisByType = {\r\n DTG: {\r\n bottlesLoaded: undefined,\r\n totalPrintingTime: undefined,\r\n totalProduction: undefined,\r\n selectedColors: ['Total'],\r\n printingTimePerUnit: undefined,\r\n inkConsumptionPerUnit: undefined,\r\n mediaWithResponse: undefined,\r\n inkConsumptionChart: undefined,\r\n colorConsumptionChart: undefined,\r\n colorCompareChart: undefined,\r\n isJobAnalysisChartsLoading: false,\r\n isJobAnalysisChartsLoaded: false,\r\n isTotalCardsLoading: false,\r\n shouldBeUpdatedAfterGroupSelection: false,\r\n isDownloadInkConsumptionPerJobLoaded: false,\r\n isDownloadInkConsumptionPerJobLoading: false,\r\n downloadInkConsumptionPerJobError: '',\r\n maxKeepAlive: undefined,\r\n },\r\n DTF: {\r\n bottlesLoaded: undefined,\r\n totalPrintingTime: undefined,\r\n totalProduction: undefined,\r\n selectedColors: ['Total'],\r\n printingTimePerUnit: undefined,\r\n inkConsumptionPerUnit: undefined,\r\n mediaWithResponse: undefined,\r\n inkConsumptionChart: undefined,\r\n colorConsumptionChart: undefined,\r\n colorCompareChart: undefined,\r\n isJobAnalysisChartsLoading: false,\r\n isJobAnalysisChartsLoaded: false,\r\n isTotalCardsLoading: false,\r\n shouldBeUpdatedAfterGroupSelection: false,\r\n isDownloadInkConsumptionPerJobLoading: false,\r\n isDownloadInkConsumptionPerJobLoaded: false,\r\n downloadInkConsumptionPerJobError: '',\r\n maxKeepAlive: undefined,\r\n },\r\n Apollo: {\r\n bottlesLoaded: undefined,\r\n totalPrintingTime: undefined,\r\n totalProduction: undefined,\r\n selectedColors: ['Total'],\r\n printingTimePerUnit: undefined,\r\n inkConsumptionPerUnit: undefined,\r\n mediaWithResponse: undefined,\r\n inkConsumptionChart: undefined,\r\n colorConsumptionChart: undefined,\r\n colorCompareChart: undefined,\r\n isJobAnalysisChartsLoading: false,\r\n isJobAnalysisChartsLoaded: false,\r\n isTotalCardsLoading: false,\r\n shouldBeUpdatedAfterGroupSelection: false,\r\n isDownloadInkConsumptionPerJobLoading: false,\r\n isDownloadInkConsumptionPerJobLoaded: false,\r\n downloadInkConsumptionPerJobError: '',\r\n maxKeepAlive: undefined,\r\n },\r\n};\r\nconst reducer = createReducer(INIT_STATE)\r\n .handleAction(jobAnalysisChartCardsAC.request, (state, action) => {\r\n const systemGroup = action.payload.selectedSystemGroup;\r\n return {\r\n ...state,\r\n [systemGroup]: {\r\n ...state[systemGroup],\r\n printingTimePerUnit: undefined,\r\n inkConsumptionPerUnit: undefined,\r\n selectedColors: state[systemGroup].selectedColors,\r\n },\r\n };\r\n })\r\n .handleAction(jobAnalysisChartCardsAC.success, (state, action) => {\r\n return _.mergeWith(_.cloneDeep(state), { ...action.payload }, mergeCopyArrays);\r\n })\r\n\r\n .handleAction(jobAnalysisToggleSelectedColorsAC, (state, action) => {\r\n return _.mergeWith(_.cloneDeep(state), { ...action.payload }, mergeCopyArrays);\r\n })\r\n\r\n .handleAction(jobAnalysisTotalCardsAC.request, (state, action) => {\r\n return {\r\n ...state,\r\n DTG: {\r\n ...state.DTG,\r\n selectedColors: state.DTG.selectedColors,\r\n isTotalCardsLoading: true,\r\n },\r\n DTF: {\r\n ...state.DTF,\r\n selectedColors: state.DTF.selectedColors,\r\n isTotalCardsLoading: true,\r\n },\r\n Apollo: {\r\n ...state.Apollo,\r\n selectedColors: state.Apollo.selectedColors,\r\n isTotalCardsLoading: true,\r\n },\r\n };\r\n })\r\n .handleAction(jobAnalysisTotalCardsAC.success, (state, action) => {\r\n const mergedState = _.mergeWith(_.cloneDeep(state), { ...action.payload }, mergeCopyArrays);\r\n const updatedState = {\r\n ...mergedState,\r\n DTF: { ...mergedState.DTF, isTotalCardsLoading: false },\r\n DTG: { ...mergedState.DTG, isTotalCardsLoading: false },\r\n Apollo: { ...mergedState.Apollo, isTotalCardsLoading: false },\r\n };\r\n return updatedState;\r\n })\r\n\r\n .handleAction(toggleSelectionSizeGroupCards, (state, action) => {\r\n return { ...state, shouldBeUpdatedAfterGroupSelection: true };\r\n })\r\n\r\n .handleAction(isInkConsumptionPerJobValidToDownloadAC.request, (state, action) => {\r\n const { SystemGroupType: selectedSystemGroup } = action.payload;\r\n return {\r\n ...state,\r\n [selectedSystemGroup]: {\r\n ...state[selectedSystemGroup],\r\n isInkConsumptionPerJobValidToDownloadLoading: true,\r\n isInkConsumptionPerJobValidToDownloadLoaded: false,\r\n },\r\n };\r\n })\r\n .handleAction(isInkConsumptionPerJobValidToDownloadAC.failure, (state, action) => {\r\n const { SystemGroupType: selectedSystemGroup } = action.payload;\r\n return {\r\n ...state,\r\n [selectedSystemGroup]: {\r\n ...state[selectedSystemGroup],\r\n isInkConsumptionPerJobValidToDownloadLoading: false,\r\n isInkConsumptionPerJobValidToDownloadLoaded: false,\r\n },\r\n };\r\n })\r\n .handleAction(isInkConsumptionPerJobValidToDownloadAC.success, (state, action) => {\r\n const { SystemGroupType: selectedSystemGroup, status } = action.payload;\r\n let message = 'Loading';\r\n if (status === 204) {\r\n message = inkConsuptionPerJobStatuses.noData;\r\n }\r\n if (status === 205) {\r\n message = inkConsuptionPerJobStatuses.tooMuchData;\r\n }\r\n if (status === 200) {\r\n message = inkConsuptionPerJobStatuses.validToDownload;\r\n }\r\n\r\n return {\r\n ...state,\r\n [selectedSystemGroup]: {\r\n ...state[selectedSystemGroup],\r\n isInkConsumptionPerJobValidToDownloadLoading: false,\r\n isInkConsumptionPerJobValidToDownloadLoaded: true,\r\n isInkConsumptionPerJobValidToDownloadMessage: message,\r\n },\r\n };\r\n })\r\n\r\n .handleAction(downloadInkConsumptionPerJobReportAC.request, (state, action) => {\r\n const { SystemGroupType: selectedSystemGroup } = action.payload;\r\n return {\r\n ...state,\r\n [selectedSystemGroup]: {\r\n ...state[selectedSystemGroup],\r\n isDownloadInkConsumptionPerJobLoading: true,\r\n isDownloadInkConsumptionPerJobLoaded: false,\r\n downloadInkConsumptionPerJobError: '',\r\n },\r\n };\r\n })\r\n .handleAction(downloadInkConsumptionPerJobReportAC.success, (state, action) => {\r\n const { SystemGroupType: selectedSystemGroup, status } = action.payload;\r\n if (status === 204) {\r\n return {\r\n ...state,\r\n [selectedSystemGroup]: {\r\n ...state[selectedSystemGroup],\r\n isDownloadInkConsumptionPerJobLoading: false,\r\n isDownloadInkConsumptionPerJobLoaded: false,\r\n downloadInkConsumptionPerJobError: '',\r\n },\r\n };\r\n }\r\n if (status === 205) {\r\n return {\r\n ...state,\r\n [selectedSystemGroup]: {\r\n ...state[selectedSystemGroup],\r\n isDownloadInkConsumptionPerJobLoading: false,\r\n isDownloadInkConsumptionPerJobLoaded: false,\r\n downloadInkConsumptionPerJobError: '',\r\n },\r\n };\r\n } else {\r\n return {\r\n ...state,\r\n [selectedSystemGroup]: {\r\n ...state[selectedSystemGroup],\r\n isDownloadInkConsumptionPerJobLoading: false,\r\n isDownloadInkConsumptionPerJobLoaded: true,\r\n downloadInkConsumptionPerJobError: '',\r\n isInkConsumptionPerJobValidToDownloadLoading: false,\r\n isInkConsumptionPerJobValidToDownloadMessage: inkConsuptionPerJobStatuses.validToDownload,\r\n },\r\n };\r\n }\r\n })\r\n\r\n .handleAction(downloadInkConsumptionPerJobReportAC.failure, (state, action) => {\r\n const { SystemGroupType: selectedSystemGroup, message } = action.payload;\r\n return {\r\n ...state,\r\n [selectedSystemGroup]: {\r\n ...state[selectedSystemGroup],\r\n isDownloadInkConsumptionPerJobLoading: false,\r\n isDownloadInkConsumptionPerJobLoaded: false,\r\n downloadInkConsumptionPerJobError: message,\r\n },\r\n };\r\n })\r\n\r\n .handleAction(jobAnalysisChartsAC.request, (state, action) => {\r\n return {\r\n ...state,\r\n DTG: { ...state.DTG, isJobAnalysisChartsLoading: true, isJobAnalysisChartsLoaded: false },\r\n DTF: { ...state.DTF, isJobAnalysisChartsLoading: true, isJobAnalysisChartsLoaded: false },\r\n Apollo: {\r\n ...state.Apollo,\r\n isJobAnalysisChartsLoading: true,\r\n isJobAnalysisChartsLoaded: false,\r\n },\r\n };\r\n })\r\n .handleAction(jobAnalysisChartsAC.success, (state, action) => {\r\n const systemGroup = Object.keys(action.payload)[0];\r\n return {\r\n ...state,\r\n [systemGroup]: {\r\n ...state[systemGroup],\r\n colorCompareChart: action.payload[systemGroup].colorCompareChart,\r\n inkConsumptionChart: action.payload[systemGroup].inkConsumptionChart,\r\n colorConsumptionChart: action.payload[systemGroup].colorConsumptionChart,\r\n isJobAnalysisChartsLoading: false,\r\n isJobAnalysisChartsLoaded: true,\r\n },\r\n };\r\n })\r\n .handleAction(jobAnalysisChartsAC.failure, (state, error) => {\r\n return { ...state, isJobAnalysisChartsLoading: false, isJobAnalysisChartsLoaded: false };\r\n })\r\n .handleAction(jobAnalysisInkConsumptionKPIAC.request, (state, action) => {\r\n if (action.payload.isSilent) {\r\n return { ...state };\r\n }\r\n return {\r\n ...state,\r\n [action.payload.SystemGroupType]: {\r\n colorCompareChart: undefined,\r\n inkConsumptionChart: undefined,\r\n colorConsumptionChart: undefined,\r\n inkConsumptionPerUnit: undefined,\r\n selectedColors: state[action.payload.SystemGroupType].selectedColors,\r\n },\r\n };\r\n })\r\n\r\n .handleAction(jobAnalysisInkConsumptionKPIAC.success, (state, action) => {\r\n const systemGroup = Object.keys(action.payload)[0];\r\n return {\r\n ...state,\r\n [systemGroup]: {\r\n ...state[systemGroup],\r\n colorCompareChart: action.payload[systemGroup].colorCompareChart,\r\n inkConsumptionChart: action.payload[systemGroup].inkConsumptionChart,\r\n colorConsumptionChart: action.payload[systemGroup].colorConsumptionChart,\r\n inkConsumptionPerUnit: action.payload[systemGroup].inkConsumptionPerUnit,\r\n },\r\n };\r\n })\r\n .handleAction(jobAnalysisPrintingTimeKPIAC.request, (state, action) => {\r\n if (action.payload.isSilent) {\r\n return { ...state };\r\n }\r\n return {\r\n ...state,\r\n [action.payload.SystemGroupType]: {\r\n printingTimePerUnit: undefined,\r\n totalPrintingTime: undefined,\r\n selectedColors: state[action.payload.SystemGroupType].selectedColors,\r\n },\r\n };\r\n })\r\n .handleAction(jobAnalysisPrintingTimeKPIAC.success, (state, action) => {\r\n const systemGroup = action.payload.SystemGroupType;\r\n return {\r\n ...state,\r\n [systemGroup]: {\r\n ...state[systemGroup],\r\n printingTimePerUnit: action.payload.data.printTimePerUnitResponse,\r\n totalPrintingTime: action.payload.data.totalPrintingTimeResponse.totalPrintingTimeSeconds,\r\n },\r\n };\r\n })\r\n .handleAction(jobAnalysisTotalImpressionsKPIAC.request, (state, action) => {\r\n if (action.payload.isSilent) {\r\n return { ...state };\r\n }\r\n return {\r\n ...state,\r\n [action.payload.SystemGroupType]: {\r\n totalProduction: undefined,\r\n },\r\n };\r\n })\r\n .handleAction(jobAnalysisTotalImpressionsKPIAC.success, (state, action) => {\r\n const systemGroup = action.payload.SystemGroupType;\r\n return {\r\n ...state,\r\n [systemGroup]: {\r\n ...state[systemGroup],\r\n totalProduction: action.payload.data.totalProduction,\r\n },\r\n };\r\n })\r\n .handleAction(getMaxKeepAliveRequestAC.request, (state, action) => {\r\n if (action.payload.isSilent) {\r\n return { ...state };\r\n }\r\n return {\r\n ...state,\r\n [action.payload.systemGroup]: {\r\n ...state[action.payload.systemGroup],\r\n maxKeepAlive: undefined,\r\n maxKeepAliveUtc: undefined,\r\n },\r\n };\r\n })\r\n .handleAction(getMaxKeepAliveRequestAC.success, (state, action) => {\r\n return {\r\n ...state,\r\n [action.payload.systemGroup]: {\r\n ...state[action.payload.systemGroup],\r\n maxKeepAlive: action.payload.maxKeepAlive,\r\n maxKeepAliveUtc: action.payload.maxKeepAliveUtc,\r\n },\r\n };\r\n })\r\n .handleAction(getMaxKeepAliveRequestAC.failure, (state, action) => {\r\n return {\r\n ...state,\r\n [action.payload.systemGroup]: {\r\n ...state[action.payload.systemGroup],\r\n maxKeepAlive: undefined,\r\n maxKeepAliveUtc: undefined,\r\n },\r\n };\r\n });\r\n\r\nexport default reducer;\r\n//*selectors\r\nconst jobAnalysisSelector = (state: Store) => state.jobAnalysis;\r\n\r\nexport const jobAnalysisBySystemGroupSelector = createSelector(\r\n [jobAnalysisSelector, systemGroupSelector],\r\n (jobAnalysis, systemGroup) => {\r\n return jobAnalysis[systemGroup];\r\n }\r\n);\r\nexport const jobAnalysisKeepAliveSelector = createSelector(\r\n [jobAnalysisBySystemGroupSelector],\r\n jobAnalysis => {\r\n return jobAnalysis['maxKeepAlive'];\r\n }\r\n);\r\nexport const isJobAnalysisChartsLoadingSelector = createSelector(\r\n [jobAnalysisBySystemGroupSelector],\r\n jobAnalysis => {\r\n return jobAnalysis['isJobAnalysisChartsLoading'];\r\n }\r\n);\r\nexport const isJobAnalysisChartsLoadedSelector = createSelector(\r\n [jobAnalysisBySystemGroupSelector],\r\n jobAnalysis => {\r\n return jobAnalysis['isJobAnalysisChartsLoaded'];\r\n }\r\n);\r\nexport const jobAnalysisBySystemGroupIsValidToDownloadInkConsuptionPerJobIsLoadingSelector = createSelector(\r\n [jobAnalysisBySystemGroupSelector],\r\n jobAnalysisByGroup => jobAnalysisByGroup['isInkConsumptionPerJobValidToDownloadLoading']\r\n);\r\nexport const jobAnalysisBySystemGroupIsValidToDownloadInkConsuptionPerJobSelector = createSelector(\r\n [jobAnalysisBySystemGroupSelector],\r\n jobAnalysisByGroup => jobAnalysisByGroup['isInkConsumptionPerJobValidToDownloadMessage']\r\n);\r\nexport const jobAnalysisBySystemGroupDownloadInkConsumptionPerJobErrorSelector = createSelector(\r\n [jobAnalysisBySystemGroupSelector],\r\n jobAnalysisByGroup => {\r\n return jobAnalysisByGroup['downloadInkConsumptionPerJobError'];\r\n }\r\n);\r\nexport const jobAnalysisIsDownloadInkConsumptionPerJobLoadingSelector = createSelector(\r\n [jobAnalysisBySystemGroupSelector],\r\n jobAnalysisByGroup => {\r\n return jobAnalysisByGroup['isDownloadInkConsumptionPerJobLoading'];\r\n }\r\n);\r\nexport const jobAnalysisIsDownloadInkConsumptionPerJobLoadedSelector = createSelector(\r\n [jobAnalysisBySystemGroupSelector],\r\n jobAnalysisByGroup => {\r\n return jobAnalysisByGroup['isDownloadInkConsumptionPerJobLoaded'];\r\n }\r\n);\r\nexport const jobAnalysisMediaWithResponseBySystemGroup = createSelector(\r\n [jobAnalysisBySystemGroupSelector],\r\n jobAnalysis => {\r\n return jobAnalysis['mediaWithResponse'];\r\n }\r\n);\r\n\r\nexport const jobAnalysisInkConsumptionPerUnitBySystemGroup = createSelector(\r\n [jobAnalysisBySystemGroupSelector],\r\n jobAnalysis => {\r\n return jobAnalysis['inkConsumptionPerUnit'];\r\n }\r\n);\r\n\r\nexport const jobAnalysisPrintingTimePerUnitBySystemGroup = createSelector(\r\n [jobAnalysisBySystemGroupSelector],\r\n jobAnalysis => {\r\n return jobAnalysis['printingTimePerUnit'];\r\n }\r\n);\r\n\r\nexport const jobAnalysisBottleLoadedSelector = createSelector(\r\n [jobAnalysisBySystemGroupSelector],\r\n jobAnalysis => {\r\n return jobAnalysis['bottlesLoaded'];\r\n }\r\n);\r\nexport const jobAnalysisTotalPrintingTimeSelector = createSelector(\r\n [jobAnalysisBySystemGroupSelector],\r\n jobAnalysis => {\r\n return jobAnalysis['totalPrintingTime'];\r\n }\r\n);\r\nexport const jobAnalysisTotalProductionSelector = createSelector(\r\n [jobAnalysisBySystemGroupSelector],\r\n jobAnalysis => {\r\n return jobAnalysis['totalProduction'];\r\n }\r\n);\r\nexport const jobAnalysisInkConsumptionChartSelector = createSelector(\r\n [jobAnalysisBySystemGroupSelector],\r\n jobAnalysis => {\r\n return jobAnalysis['inkConsumptionChart'];\r\n }\r\n);\r\nexport const jobAnalysisColorConsumptionChartSelector = createSelector(\r\n [jobAnalysisBySystemGroupSelector],\r\n jobAnalysis => {\r\n return jobAnalysis['colorConsumptionChart'];\r\n }\r\n);\r\nexport const jobAnalysisColorCompareChartSelector = createSelector(\r\n [jobAnalysisBySystemGroupSelector],\r\n jobAnalysis => {\r\n return jobAnalysis['colorCompareChart'];\r\n }\r\n);\r\nexport const jobAnalysisSelectedColorsSelector = createSelector(\r\n [jobAnalysisBySystemGroupSelector],\r\n jobAnalysis => {\r\n return jobAnalysis['selectedColors'];\r\n }\r\n);\r\n\r\nexport const isTotalCardsLoadingSelector = createSelector(\r\n [jobAnalysisBySystemGroupSelector],\r\n jobAnalysis => {\r\n return jobAnalysis['isTotalCardsLoading'];\r\n }\r\n);\r\nexport const shouldBeUpdatedAfterGroupSelectionSelector = createSelector(\r\n [jobAnalysisBySystemGroupSelector],\r\n jobAnalysis => {\r\n return jobAnalysis['shouldBeUpdatedAfterGroupSelection'];\r\n }\r\n);\r\n","import { TreeNodeProps, TreeNode } from 'react-dropdown-tree-select';\r\n\r\ninterface RootElement {\r\n id: string;\r\n name: string;\r\n}\r\ninterface ParentElement extends RootElement {\r\n rootId: string;\r\n}\r\ninterface ChildElement extends ParentElement {\r\n parentId: string;\r\n}\r\ninterface TreeSourceData {\r\n // Roots >> Parents >> Children // named just for convenience until nesting is limited with 3 levels\r\n // Tree elements\r\n rootElements: RootElement[];\r\n parentElements: ParentElement[];\r\n childElements: ChildElement[];\r\n // Selected elements\r\n rootSelectedIds?: string[];\r\n parentSelectedIds?: string[];\r\n childSelectedIds?: string[];\r\n // Just unchecked elements (workaround to properly handle root/parent nodes unchecking)\r\n rootForceUncheckIds?: string[];\r\n parentForceUncheckIds?: string[];\r\n // Disabled tree nodes (descendants are also will be unchecked)\r\n rootDisabledIds?: string[];\r\n parentDisabledIds?: string[];\r\n // Folded tree nodes\r\n rootFoldedIds?: string[];\r\n parentFoldedIds?: string[];\r\n\r\n enableLowLevelSelect?: boolean;\r\n}\r\n\r\nexport function makeTreeData(input: TreeSourceData) {\r\n const {\r\n rootElements,\r\n parentElements,\r\n childElements,\r\n rootSelectedIds = [],\r\n parentSelectedIds = [],\r\n childSelectedIds = [],\r\n rootForceUncheckIds = [],\r\n parentForceUncheckIds = [],\r\n rootDisabledIds = [],\r\n parentDisabledIds = [],\r\n rootFoldedIds = [],\r\n parentFoldedIds = [],\r\n enableLowLevelSelect = false,\r\n } = input;\r\n\r\n return rootElements.map(rootEl => makeRootBranch(rootEl));\r\n\r\n function makeRootBranch(rootEl: RootElement): TreeNodeProps {\r\n // Root granted => all descendants should be checked and disabled\r\n const isRootGranted = rootSelectedIds.indexOf(rootEl.id) >= 0;\r\n // Root just unchecked => force all descendants to be unchecked and enabled\r\n const isRootUnchecked = !isRootGranted && rootForceUncheckIds.indexOf(rootEl.id) >= 0;\r\n\r\n const isRootDisabled = rootDisabledIds.indexOf(rootEl.id) >= 0;\r\n\r\n const isRootFolded = rootFoldedIds.includes(rootEl.id);\r\n\r\n const rootDescendants: ParentElement[] = parentElements.filter(\r\n parentEl => parentEl.rootId === rootEl.id\r\n );\r\n\r\n return {\r\n label: rootEl.name,\r\n value: rootEl.id,\r\n expanded: !isRootFolded,\r\n checked: isRootGranted,\r\n disabled: isRootDisabled,\r\n children: rootDescendants.map(parentEl =>\r\n makeParentBranch(parentEl, rootEl.id, isRootGranted, isRootUnchecked, isRootFolded)\r\n ),\r\n };\r\n }\r\n\r\n function makeParentBranch(\r\n parentEl: ParentElement,\r\n rootId: string,\r\n isRootGranted: boolean,\r\n isRootUnchecked: boolean,\r\n isRootFolded: boolean\r\n ): TreeNodeProps {\r\n const isParentGranted = parentSelectedIds.includes(parentEl.id);\r\n const isParentUnchecked =\r\n !isRootGranted && !isParentGranted && parentForceUncheckIds.includes(parentEl.id);\r\n const isParentDisabled = parentDisabledIds.includes(parentEl.id);\r\n\r\n const parentDescendants: ChildElement[] = childElements.filter(\r\n childEl => childEl.parentId === parentEl.id\r\n );\r\n\r\n return {\r\n label: parentEl.name,\r\n value: parentEl.id,\r\n expanded: !isRootFolded && !parentFoldedIds.includes(parentEl.id),\r\n checked: !isRootUnchecked && (isRootGranted || isParentGranted),\r\n disabled: !enableLowLevelSelect && (isRootGranted || isParentDisabled),\r\n rootId,\r\n children: parentDescendants.map(\r\n (childEl: ChildElement): TreeNode => ({\r\n label: childEl.name,\r\n value: childEl.id,\r\n checked:\r\n !isParentUnchecked &&\r\n !isRootUnchecked &&\r\n (isRootGranted || isParentGranted || childSelectedIds.includes(childEl.id)),\r\n disabled: !enableLowLevelSelect && (isRootGranted || isParentGranted) && !isRootUnchecked,\r\n rootId,\r\n parentId: parentEl.id,\r\n })\r\n ),\r\n };\r\n }\r\n}\r\n\r\n// export function normalizeSelectedNodesWithDisabledSelectedChildren(\r\n// nodes: TreeNodeProps[],\r\n// prevRootIds: string[] = [],\r\n// prevParentIds: string[] = [],\r\n// explicitChildren = false, // if true - all children ids of selected nodes go to resulting data\r\n// allRoots: RootElement[] = [],\r\n// allParents: ParentElement[] = [],\r\n// allChildren: ChildElement[] = []\r\n// ): {\r\n// rootIds: string[];\r\n// parentIds: string[];\r\n// childIds: string[];\r\n// } {\r\n// const rootIds: string[] = [];\r\n// const parentIds: string[] = [];\r\n// const childIds: string[] = [];\r\n//\r\n// const nodeIds = nodes.map(n => n.value);\r\n//\r\n// allRoots.forEach(root => {\r\n// nodeIds.includes(root.id) && rootIds.push(root.id);\r\n// });\r\n//\r\n// allParents.forEach(parent => {\r\n// !explicitChildren &&\r\n// nodeIds.includes(parent.id) &&\r\n// // If root IS selected - skip\r\n// !nodeIds.includes(parent.rootId) &&\r\n// // If root WAS selected - skip\r\n// !prevRootIds.includes(parent.rootId) &&\r\n// parentIds.push(parent.id);\r\n//\r\n// explicitChildren &&\r\n// (nodeIds.includes(parent.id) || nodeIds.includes(parent.rootId)) &&\r\n// // If root was JUST unselected - skip\r\n// !(!nodeIds.includes(parent.rootId) && prevRootIds.includes(parent.rootId)) &&\r\n// parentIds.push(parent.id);\r\n// });\r\n//\r\n// allChildren.forEach(child => {\r\n// !explicitChildren &&\r\n// nodeIds.includes(child.id) &&\r\n// // If parent IS selected - skip\r\n// !nodeIds.includes(child.rootId) &&\r\n// !nodeIds.includes(child.parentId) &&\r\n// // If parent WAS selected - skip\r\n// !prevRootIds.includes(child.rootId) &&\r\n// !prevParentIds.includes(child.parentId) &&\r\n// childIds.push(child.id);\r\n//\r\n// explicitChildren &&\r\n// (nodeIds.includes(child.id) || nodeIds.includes(child.parentId) || nodeIds.includes(child.rootId)) &&\r\n// // If parent was JUST unselected - skip\r\n// !(!nodeIds.includes(child.rootId) && prevRootIds.includes(child.rootId)) &&\r\n// !(!nodeIds.includes(child.parentId) && prevParentIds.includes(child.parentId)) &&\r\n// childIds.push(child.id);\r\n// });\r\n//\r\n// return { rootIds, parentIds, childIds };\r\n// }\r\n\r\nexport function normalizeSelectedNodes(\r\n nodes: TreeNodeProps[],\r\n explicitChildren = false, // if true - all children ids of selected nodes go to resulting data\r\n allRoots: RootElement[] = [],\r\n allParents: ParentElement[] = [],\r\n allChildren: ChildElement[] = []\r\n): {\r\n rootIds: string[];\r\n parentIds: string[];\r\n childIds: string[];\r\n} {\r\n const rootIds: string[] = [];\r\n const parentIds: string[] = [];\r\n const childIds: string[] = [];\r\n\r\n const nodeIds = nodes.map(n => n.value);\r\n\r\n allRoots.forEach(root => {\r\n nodeIds.includes(root.id) && rootIds.push(root.id);\r\n });\r\n\r\n allParents.forEach(parent => {\r\n !explicitChildren &&\r\n nodeIds.includes(parent.id) &&\r\n // If root IS selected - skip\r\n !nodeIds.includes(parent.rootId) &&\r\n parentIds.push(parent.id);\r\n\r\n explicitChildren &&\r\n (nodeIds.includes(parent.id) || nodeIds.includes(parent.rootId)) &&\r\n parentIds.push(parent.id);\r\n });\r\n\r\n allChildren.forEach(child => {\r\n !explicitChildren &&\r\n nodeIds.includes(child.id) &&\r\n // If parent IS selected - skip\r\n !nodeIds.includes(child.rootId) &&\r\n !nodeIds.includes(child.parentId) &&\r\n childIds.push(child.id);\r\n\r\n explicitChildren &&\r\n (nodeIds.includes(child.id) ||\r\n nodeIds.includes(child.parentId) ||\r\n nodeIds.includes(child.rootId)) &&\r\n childIds.push(child.id);\r\n });\r\n\r\n return { rootIds, parentIds, childIds };\r\n}\r\n","import { createStandardAction } from 'typesafe-actions';\r\n\r\nexport const openCalendarModal = createStandardAction('OPEN_MODAL_CALENDER')();\r\nexport const closeCalendarModal = createStandardAction('CLOSE_MODAL_CALENDER')();\r\n","import { GenericPropsType, Store } from '../store/storeTypes';\r\n\r\nexport const userIdFromPropsSelector = (state: Store, props: GenericPropsType) => props.userId;\r\n\r\nexport const schedulerIdFromPropsSelector = (state: Store, props: GenericPropsType) =>\r\n props.schedulerId;\r\n\r\nexport const idFromPropsSelector = (state: Store, props: GenericPropsType) => props.id;\r\nexport const embedTypeFromPropsSelector = (state: Store, props: GenericPropsType) =>\r\n props.embedType;\r\nexport const tokenTypeFromPropsSelector = (state: Store, props: GenericPropsType) =>\r\n props.tokenType;\r\nexport const filtersFromPropsSelector = (state: Store, props: GenericPropsType) => props.filters;\r\nexport const accessTokenFromPropsSelector = (state: Store, props: GenericPropsType) =>\r\n props.accessToken;\r\nexport const embedUrlFromPropsSelector = (state: Store, props: GenericPropsType) => props.embedUrl;\r\nexport const embedIdFromPropsSelector = (state: Store, props: GenericPropsType) => props.embedId;\r\nexport const permissionsFromPropsSelector = (state: Store, props: GenericPropsType) =>\r\n props.permissions;\r\nexport const extraSettingsFromPropsSelector = (state: Store, props: GenericPropsType) =>\r\n props.extraSettings;\r\n","import { createAsyncAction } from 'typesafe-actions';\r\nimport { IOverviewRequest } from '../models/OverviewData';\r\nimport { authService } from 'services/AuthProvider';\r\nimport { makeApiUrl } from 'actions/_shared/utils';\r\nimport apiAction from 'actions/_shared/apiAction';\r\nimport FileDownload from 'js-file-download';\r\nimport { CertificateDetails } from 'store/storeTypes';\r\nimport { ThunkDispatch } from 'redux-thunk';\r\nimport { Action } from 'redux';\r\nimport { Store } from 'store/storeTypes';\r\n\r\nconst convert = (data: any) => {\r\n return !data.email\r\n ? undefined\r\n : {\r\n ...data,\r\n expirationDate: new Date(data.expirationDate),\r\n validFrom: new Date(data.validFrom),\r\n };\r\n};\r\n\r\nexport const getCertificateDetailsAC = createAsyncAction(\r\n 'GET_CERTIFICATE_DETAILS_STARTED',\r\n 'GET_CERTIFICATE_DETAILS_SUCCESS',\r\n 'GET_CERTIFICATE_DETAILS_FAILED'\r\n)<{}, CertificateDetails | undefined, Error>();\r\n\r\nexport const getCertificateDetailsRequest = () => {\r\n const url = makeApiUrl('/api/users/certificate-details');\r\n const { isAuthenticated, idTokenPayload } = authService;\r\n if (isAuthenticated() && idTokenPayload && idTokenPayload.sub)\r\n return apiAction({\r\n request: {\r\n url,\r\n },\r\n logic: {\r\n onFailed: (error, dispatch) => dispatch(getCertificateDetailsAC.failure(error)),\r\n onStarted: dispatch => dispatch(getCertificateDetailsAC.request({})),\r\n onSuccess: (data, dispatch) => dispatch(getCertificateDetailsAC.success(convert(data))),\r\n },\r\n });\r\n};\r\n\r\nexport const getCertificateFileAC = createAsyncAction(\r\n 'GET_CERTIFICATE_FILE_STARTED',\r\n 'GET_CERTIFICATE_FILE_SUCCESS',\r\n 'GET_CERTIFICATE_FILE_FAILED'\r\n)<{}, {}, Error>();\r\n\r\nexport const getCertificateFileRequest = () => {\r\n const url = makeApiUrl('/api/users/certificate-file');\r\n const { isAuthenticated, idTokenPayload } = authService;\r\n if (isAuthenticated() && idTokenPayload && idTokenPayload.sub)\r\n return apiAction({\r\n request: {\r\n url,\r\n },\r\n logic: {\r\n onFailed: (error, dispatch) => {},\r\n onStarted: dispatch => {},\r\n onSuccess: (data, dispatch) => {\r\n FileDownload(data, 'certificate.crt');\r\n },\r\n },\r\n });\r\n};\r\n\r\nexport const createCertificateAC = createAsyncAction(\r\n 'CREATE_CERTIFICATE_DETAILS_STARTED',\r\n 'CREATE_CERTIFICATE_DETAILS_SUCCESS',\r\n 'CREATE_CERTIFICATE_DETAILS_FAILED'\r\n)<{}, CertificateDetails, Error>();\r\n\r\nexport const createCertificateRequest = () => {\r\n const url = makeApiUrl('/api/users/create-certificate');\r\n const { isAuthenticated, idTokenPayload } = authService;\r\n if (isAuthenticated() && idTokenPayload && idTokenPayload.sub)\r\n return apiAction({\r\n request: {\r\n url,\r\n method: 'POST',\r\n },\r\n logic: {\r\n onFailed: (error, dispatch) => dispatch(createCertificateAC.failure(error)),\r\n onStarted: dispatch => {\r\n dispatch(createCertificateAC.request({}));\r\n },\r\n onSuccess: (data, dispatch) => dispatch(createCertificateAC.success(convert(data))),\r\n },\r\n });\r\n};\r\n\r\nexport const deleteCertificateAC = createAsyncAction(\r\n 'DELETE_CERTIFICATE_DETAILS_STARTED',\r\n 'DELETE_CERTIFICATE_DETAILS_SUCCESS',\r\n 'DELETE_CERTIFICATE_DETAILS_FAILED'\r\n)<{}, {}, Error>();\r\n\r\nexport const deleteCertificateRequest = () => {\r\n const url = makeApiUrl('/api/users/delete-certificate');\r\n const { isAuthenticated, idTokenPayload } = authService;\r\n if (isAuthenticated() && idTokenPayload && idTokenPayload.sub)\r\n return apiAction({\r\n request: {\r\n url,\r\n method: 'DELETE',\r\n },\r\n logic: {\r\n onFailed: (error, dispatch) => dispatch(deleteCertificateAC.failure(error)),\r\n onStarted: dispatch => dispatch(deleteCertificateAC.request({})),\r\n onSuccess: (data, dispatch) => dispatch(deleteCertificateAC.success({})),\r\n },\r\n });\r\n};\r\n\r\nexport const refreshCertificateRequest = () => {\r\n const deleteUrl = makeApiUrl('/api/users/delete-certificate');\r\n const createUrl = makeApiUrl('/api/users/create-certificate');\r\n const { isAuthenticated, idTokenPayload } = authService;\r\n if (isAuthenticated() && idTokenPayload && idTokenPayload.sub)\r\n return async function(dispatch: ThunkDispatch, getState: () => Store) {\r\n await dispatch(\r\n apiAction({\r\n request: {\r\n url: deleteUrl,\r\n method: 'DELETE',\r\n },\r\n logic: {\r\n onFailed: (error, dispatch) => dispatch(deleteCertificateAC.failure(error)),\r\n onStarted: dispatch => dispatch(deleteCertificateAC.request({})),\r\n onSuccess: (data, dispatch) => {},\r\n },\r\n })\r\n );\r\n await dispatch(\r\n apiAction({\r\n request: {\r\n url: createUrl,\r\n method: 'POST',\r\n },\r\n logic: {\r\n onFailed: (error, dispatch) => dispatch(deleteCertificateAC.failure(error)),\r\n onStarted: dispatch => dispatch(deleteCertificateAC.request({})),\r\n onSuccess: (data, dispatch) => dispatch(createCertificateAC.success(convert(data))),\r\n },\r\n })\r\n );\r\n };\r\n};\r\n","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgBackArrow(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 22,\n height: 17,\n viewBox: \"0 0 22 17\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0.29325 7.707L8.00025 0L9.41425 1.414L3.41425 7.414H21.0002C21.5532 7.414 22.0002 7.862 22.0002 8.414C22.0002 8.966 21.5532 9.414 21.0002 9.414H3.41425L9.41425 15.414L8.00025 16.828L0.29325 9.121C-0.09775 8.73 -0.09775 8.098 0.29325 7.707Z\",\n fill: \"#7F8FA4\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgBackArrow);\nexport default __webpack_public_path__ + \"static/media/BackArrow.d1fbbe49.svg\";\nexport { ForwardRef as ReactComponent };","import { UserSystemGroupStrings } from 'store/storeTypes';\r\n\r\nexport enum GoalType {\r\n Weekly = 0,\r\n Yearly = 1,\r\n}\r\n\r\nexport type GoalsData = {\r\n achieved: number;\r\n userFirstName: string;\r\n userLastName: string;\r\n dateModified: string;\r\n goalValue: number;\r\n goalType: GoalType;\r\n};\r\n\r\nexport type GoalFromApi = {\r\n achieved: number;\r\n timezoneOffset: number;\r\n goalPeriod: number;\r\n userFirstName: string;\r\n userLastName: string;\r\n goalValue: number;\r\n time: string;\r\n};\r\nexport type GoalFromApiByType = {\r\n [key in UserSystemGroupStrings]: GoalFromApi[];\r\n};\r\n\r\nexport type GoalsDataDto = {\r\n impressionsNumber: number;\r\n userFirstName: string;\r\n userLastName: string;\r\n time: string;\r\n timezoneOffset: string;\r\n goalValue: number;\r\n goalPeriod: GoalType;\r\n};\r\n","import { Permission, Permissions, PermissionAuth0 } from '../models/Permissions';\r\nimport {\r\n UserSystemGroup,\r\n RTRMetricUnit,\r\n UserSettings,\r\n UserSystemGroupStrings,\r\n TimeModificator,\r\n} from 'store/storeTypes';\r\nimport _ from 'lodash';\r\n\r\nexport function userRolesToPermissions(roles: string[]) {\r\n return roles\r\n .map(r => {\r\n switch (r) {\r\n case PermissionAuth0.ReadOnly:\r\n return Permission.ReadOnly;\r\n case PermissionAuth0.Admin:\r\n return Permission.Admin;\r\n case PermissionAuth0.Scheduler:\r\n return Permission.CreateReports;\r\n case PermissionAuth0.GoalsSetter:\r\n return Permission.SetGoals;\r\n case PermissionAuth0.ManageApi:\r\n return Permission.ManageApi;\r\n case PermissionAuth0.Certificate:\r\n return Permission.Certificate;\r\n default:\r\n return null;\r\n }\r\n })\r\n .filter(p => !!p) as Permissions;\r\n}\r\n\r\nexport function userPermissionsToRoles(permissions: Permissions) {\r\n return permissions\r\n .map(p => {\r\n switch (p) {\r\n case Permission.ReadOnly:\r\n return PermissionAuth0.ReadOnly;\r\n case Permission.Admin:\r\n return PermissionAuth0.Admin;\r\n case Permission.SetGoals:\r\n return PermissionAuth0.GoalsSetter;\r\n case Permission.CreateReports:\r\n return PermissionAuth0.Scheduler;\r\n case Permission.ManageApi:\r\n return PermissionAuth0.ManageApi;\r\n case Permission.Certificate:\r\n return PermissionAuth0.Certificate;\r\n default:\r\n return null;\r\n }\r\n })\r\n .filter(r => !!r);\r\n}\r\n\r\nexport const determineUnitToShow = (\r\n selectedSystemGroup: UserSystemGroupStrings,\r\n userSettings: UserSettings,\r\n translationFunction: (str: string) => string\r\n) => {\r\n let string = '';\r\n if (selectedSystemGroup === UserSystemGroup.DTG || selectedSystemGroup === UserSystemGroup.Apollo)\r\n return string.concat(translationFunction('goals.imp'));\r\n else {\r\n if (userSettings.lengthUnits === 'Meter')\r\n string = string.concat(translationFunction('goals.meter'));\r\n else if (userSettings.lengthUnits === 'Feet')\r\n string = string.concat(translationFunction('goals.feet'));\r\n else if (userSettings.lengthUnits === 'Yard')\r\n string = string.concat(translationFunction('goals.yard'));\r\n if (userSettings.rtrMetricUnit === RTRMetricUnit.Square)\r\n string = string.concat(translationFunction('goals.square'));\r\n }\r\n return string;\r\n};\r\n\r\nexport const numberFormatFromString = (number: string) =>\r\n parseFloat(parseFloat(number).toFixed(2)).toLocaleString();\r\nexport const numberFormat = (number: number) => {\r\n if (isNaN(number)) {\r\n //*NaN case should not occures by contract but there was case when we got Nan here - so it is decided to add handling exact for this case\r\n return '-';\r\n }\r\n if (!number) {\r\n return '0';\r\n }\r\n return parseFloat(number.toFixed(2)).toLocaleString();\r\n};\r\n\r\nexport const formatFloatToPercentage = (number: number, fraction = 2) => {\r\n return (number * 100).toFixed(fraction);\r\n};\r\n\r\nexport const notUndefiend = (arrayOfValues: (number | Date | undefined)[]): boolean => {\r\n return !arrayOfValues.some((value: number | Date | undefined) => value === undefined);\r\n};\r\nexport const mergeCopyArrays = (\r\n objValue: Record | Array>,\r\n srcValue: Record | Array>\r\n) => {\r\n if (_.isArray(objValue)) {\r\n return srcValue;\r\n }\r\n};\r\nexport const numberFormatterNew = (\r\n num: number | undefined,\r\n units = '',\r\n digitsNumber = 4\r\n): string => {\r\n const si = [\r\n { value: 1, symbol: '' },\r\n { value: 1e3, symbol: 'k' },\r\n { value: 1e6, symbol: 'M' },\r\n { value: 1e9, symbol: 'B' },\r\n { value: 1e12, symbol: 'T' },\r\n { value: 1e15, symbol: 'P' },\r\n { value: 1e18, symbol: 'E' },\r\n ];\r\n if (num === undefined || num === null || isNaN(num)) {\r\n return '';\r\n }\r\n num = Math.floor(+num) !== +num ? +(+num).toFixed(2) : +num;\r\n if (num < 1000) {\r\n return `${num} ${units}`;\r\n }\r\n if (num < 10000) {\r\n const hundreds = parseFloat((num % 1000).toFixed(2));\r\n let hundredsString = '';\r\n if (hundreds < 10) {\r\n hundredsString = '00' + hundreds;\r\n } else if (hundreds < 100) {\r\n hundredsString = '0' + hundreds;\r\n } else {\r\n hundredsString = '' + hundreds;\r\n }\r\n return `${Math.floor(num / 1000)},${hundredsString} ${units}`;\r\n }\r\n const numLenght = num.toFixed(0).toString().length;\r\n const digitsToCut = Math.floor((numLenght - 1) / 3) * 3;\r\n const fraction = Math.abs(numLenght - digitsToCut - digitsNumber);\r\n const digitsSuffixId = Math.floor((numLenght - 1) / 3);\r\n return (\r\n (num / Math.pow(10, digitsToCut)).toFixed(fraction) + si[digitsSuffixId].symbol + ' ' + units\r\n );\r\n};\r\nexport const cutAllValueAfrerDot = value => {\r\n const formattedString = numberFormatterNew(value).trim();\r\n const regex = /^(\\d+\\.\\d+)k$/;\r\n const match = formattedString.match(regex);\r\n if (match) {\r\n const roundedNumber = Math.floor(parseFloat(match[1])) + 'k';\r\n return roundedNumber;\r\n } else {\r\n return formattedString;\r\n }\r\n};\r\nexport const dateToTimeString = (value: Date) => {\r\n let time = '';\r\n const mins = value.getMinutes() + '';\r\n const seconds = value.getSeconds() + '';\r\n const hours = value.getHours() + '';\r\n\r\n time = time.concat(hours.length < 2 ? '0' + hours : hours).concat(':');\r\n\r\n time = time.concat(mins.length < 2 ? '0' + mins : mins).concat(':');\r\n\r\n time = time.concat(seconds.length < 2 ? '0' + seconds : seconds);\r\n\r\n return time;\r\n};\r\n\r\nexport const formatStringToPercentage = (number: string, multiplier = 100, fraction = 2) => {\r\n if (!number) {\r\n return '0 %';\r\n }\r\n if (isNaN(parseFloat(number))) {\r\n return '- -';\r\n }\r\n\r\n return (parseFloat(number) * multiplier).toFixed(fraction) + '%';\r\n};\r\n\r\nexport const formatSecToHourString = (duration: number) => {\r\n if (duration === undefined) {\r\n return '';\r\n }\r\n let time = '';\r\n const hours = Math.floor(duration / 3600) + '';\r\n const mins = Math.floor((duration % 3600) / 60) + '';\r\n const seconds = Math.floor(duration % 60) + '';\r\n time = time.concat(hours.length < 2 ? '0' + hours : hours).concat(':');\r\n time = time.concat(mins.length < 2 ? '0' + mins : mins).concat(':');\r\n time = time.concat(seconds.length < 2 ? '0' + seconds : seconds);\r\n\r\n return time;\r\n};\r\n\r\nexport const formatSecToMinString = (duration: number) => {\r\n let time = '';\r\n const mins = Math.floor(duration / 60) + '';\r\n const seconds = Math.floor(duration % 60) + '';\r\n time = time.concat(mins.length < 2 ? '0' + mins : mins).concat(':');\r\n time = time.concat(seconds.length < 2 ? '0' + seconds : seconds);\r\n\r\n return time;\r\n};\r\n\r\nexport const valueAsString = (value: number | Date | undefined, isPercentage?: boolean) => {\r\n if (typeof value === 'string') return value;\r\n if (value instanceof Date) {\r\n return dateToTimeString(value);\r\n } else if (isPercentage) {\r\n return formatFloatToPercentage(value!);\r\n } else {\r\n return numberFormatterNew(value!);\r\n }\r\n};\r\nexport const addZeroToNumber = (number: number) => {\r\n const numberAsString = number.toString();\r\n if (numberAsString.length >= 2) return numberAsString;\r\n return '0' + number;\r\n};\r\n\r\nexport const minutesToDaysHoursMinutes = (minutes: number) => {\r\n if (minutes > 0) {\r\n const days = Math.floor(minutes / 60 / 24);\r\n const hours = Math.floor(minutes / 60 - days * 24);\r\n const minutesResiduals = Math.floor(minutes - days * 24 * 60 - hours * 60);\r\n return {\r\n days: addZeroToNumber(days),\r\n hours: addZeroToNumber(hours),\r\n minutes: addZeroToNumber(minutesResiduals),\r\n };\r\n }\r\n return { days: '00', hours: '00', minutes: '00' };\r\n};\r\nexport const secondsToDaysHoursMinutes = (seconds: number, noZeroPrefix?: boolean) => {\r\n if (seconds > 0) {\r\n const days = Math.floor(seconds / 60 / 60 / 24);\r\n const hours = Math.floor((seconds - days * 24 * 60 * 60) / 60 / 60);\r\n const minutesResiduals = Math.floor((seconds - days * 24 * 60 * 60 - hours * 60 * 60) / 60);\r\n return {\r\n days: noZeroPrefix ? String(days) : addZeroToNumber(days),\r\n hours: noZeroPrefix ? String(hours) : addZeroToNumber(hours),\r\n minutes: noZeroPrefix ? String(minutesResiduals) : addZeroToNumber(minutesResiduals),\r\n };\r\n }\r\n return { days: '00', hours: '00', minutes: '00' };\r\n};\r\nexport const convertSecondsToHours = seconds => {\r\n if (!seconds) return '0';\r\n return `${Math.floor(seconds / 3600)}`;\r\n};\r\n\r\nexport const lastUpdateToNewFormat = lastUpdate => {\r\n if (!lastUpdate) return '- -';\r\n const [date, time] = lastUpdate.split('T');\r\n const [year, month, day] = date.split('-');\r\n const [hour, minutes] = time.split(':');\r\n return `${day}/${month}/${year} ${hour}:${minutes}`;\r\n};\r\ntype RoundForTotalProductionGraphType = { value: number; maxValue: number };\r\nexport const roundForTotalProductionGraph = (props: RoundForTotalProductionGraphType): string => {\r\n const { maxValue, value } = props;\r\n if (maxValue < 1000) {\r\n return value.toFixed(2);\r\n } else {\r\n return `${(value / 1000).toFixed(1)}k`;\r\n }\r\n};\r\nexport const transformTime = timeString => {\r\n // Split the time string into hours and minutes\r\n const [hours, minutes] = timeString.split(':');\r\n\r\n // Create a new Date object with the current date and the given hours and minutes\r\n const dateObj = new Date();\r\n dateObj.setHours(hours);\r\n dateObj.setMinutes(minutes);\r\n\r\n // Format the date object using the toLocaleString() method\r\n const formattedTime = dateObj.toLocaleString('en-US', {\r\n hour: 'numeric',\r\n hour12: true,\r\n });\r\n\r\n return formattedTime;\r\n};\r\n\r\nexport const convertTo24HourFormat = (hour: number, amPm: TimeModificator): number => {\r\n if (hour === 12 && amPm === 'AM') {\r\n // special case for midnight (12:00 AM)\r\n return 0;\r\n } else if (hour === 12 && amPm === 'PM') {\r\n // special case for noon (12:00 PM)\r\n return 12;\r\n } else if (amPm === 'PM') {\r\n // for PM hours (after noon), add 12 to the hour\r\n return hour + 12;\r\n } else {\r\n // for AM hours (before noon), return the hour as-is\r\n return hour;\r\n }\r\n};\r\n\r\nexport const convertTo12HourFormat = (hour: number): string => {\r\n if (hour === 0) {\r\n // special case for midnight (12:00 AM)\r\n return '12:00 AM';\r\n } else if (hour === 12) {\r\n // special case for noon (12:00 PM)\r\n return '12:00 PM';\r\n } else if (hour < 12) {\r\n // for AM hours (before noon), return the hour and minutes with 'AM'\r\n return `${hour.toString().padStart(2, '0')}:00 AM`;\r\n } else {\r\n // for PM hours (after noon), subtract 12 from the hour and return the hour and minutes with 'PM'\r\n const pmHour = (hour - 12).toString().padStart(2, '0');\r\n return `${pmHour}:00 PM`;\r\n }\r\n};\r\n","var _path, _path2;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgTimeLineFlagIcon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 16,\n height: 16,\n viewBox: \"0 0 16 16\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8.00423 11.4048V12.5185C8.87387 12.7169 9.3926 13.1135 9.3926 13.3882C9.3926 13.8001 8.33988 14.4104 6.73792 14.4104C5.13595 14.4104 4.08323 13.8001 4.08323 13.3882C4.08323 13.0983 4.60197 12.7169 5.4716 12.5185V11.4048C4.00695 11.6794 3 12.4422 3 13.3882C3 14.5782 4.60196 15.4936 6.72266 15.4936C8.84336 15.4936 10.4453 14.5935 10.4453 13.3882C10.4606 12.4422 9.46889 11.6794 8.00423 11.4048Z\",\n fill: \"#7F8FA4\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M11.6819 4.57009L12.9177 2.78505C13.0245 2.61722 13.0398 2.40363 12.9482 2.22054C12.8567 2.03746 12.6736 1.93067 12.4753 1.93067H7.28794V1.53399C7.28794 1.22885 7.04383 1 6.75396 1C6.46408 1 6.18945 1.24411 6.18945 1.53399V13.0071C6.18945 13.3122 6.43356 13.5411 6.72344 13.5411C7.01332 13.5411 7.25743 13.297 7.25743 13.0071V7.20952H12.4447C12.6431 7.20952 12.8262 7.10272 12.9177 6.91964C13.0092 6.73656 12.994 6.52297 12.8872 6.35514L11.6819 4.57009Z\",\n fill: \"#7F8FA4\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgTimeLineFlagIcon);\nexport default __webpack_public_path__ + \"static/media/timeLineFlagIcon.c85dc0d9.svg\";\nexport { ForwardRef as ReactComponent };","import {\r\n ReportedSystemsResponseByGroup,\r\n ReportedSystemsUnit,\r\n UserSystemGroup,\r\n} from './../store/storeTypes';\r\nimport { createSelector } from 'reselect';\r\nimport { createReducer } from 'typesafe-actions';\r\n\r\nimport { actions, RootAction } from '../actions';\r\nimport { systemGroupSelector } from 'reducers/ui/systemGroupUiReducer';\r\nimport { IsEverReportedStateTypes, Store } from 'store/storeTypes';\r\n\r\nconst INIT_STATE = {\r\n isLoading: false,\r\n isLoaded: false,\r\n isError: false,\r\n data: { DTG: [], DTF: [], Apollo: [] },\r\n};\r\n\r\nconst { getEmptyStateAC } = actions.reportFilter;\r\n\r\nconst reducer = createReducer(INIT_STATE)\r\n .handleAction(getEmptyStateAC.request, (state, action) => {\r\n return { ...state, isLoading: true, isLoaded: false, isError: false, data: INIT_STATE.data };\r\n })\r\n .handleAction(getEmptyStateAC.failure, (state, action) => {\r\n return {\r\n ...state,\r\n isLoading: false,\r\n isLoaded: false,\r\n isError: true,\r\n data: INIT_STATE.data,\r\n };\r\n })\r\n .handleAction(getEmptyStateAC.success, (state, action) => {\r\n const { DTG, DTF, Apollo } = mapIsEverReportedData(action.payload);\r\n return {\r\n ...state,\r\n isLoading: false,\r\n isLoaded: true,\r\n isError: false,\r\n data: { DTG, DTF, Apollo },\r\n };\r\n });\r\n\r\nexport default reducer;\r\n//*selectors\r\nconst isEverReportedSelector = (state: Store) => state?.isEverReported;\r\nexport const isEverReportedLoadingSelector = createSelector([isEverReportedSelector], data => {\r\n return data.isLoading;\r\n});\r\nexport const isEverReportedLoadedSelector = createSelector([isEverReportedSelector], data => {\r\n {\r\n return data.isLoaded;\r\n }\r\n});\r\nexport const isEverReportedBySystemGroupSelector = createSelector(\r\n [isEverReportedSelector, systemGroupSelector],\r\n (data, systemGroup) => {\r\n const result = data.data[systemGroup];\r\n return result;\r\n }\r\n);\r\ntype IsEverReportedApiResponse = {\r\n reportedSystems: Array;\r\n};\r\n\r\ntype ReportedSystemsByGroup = {\r\n systemGroup: UserSystemGroup;\r\n reportedSystemsData: Array;\r\n};\r\n\r\nconst mapIsEverReportedData = (\r\n resposne: IsEverReportedApiResponse\r\n): ReportedSystemsResponseByGroup => {\r\n const result = { DTG: [], DTF: [], Apollo: [] };\r\n const { reportedSystems } = resposne;\r\n reportedSystems.forEach(\r\n reportedSystem => (result[reportedSystem.systemGroup] = reportedSystem.reportedSystemsData)\r\n );\r\n return result;\r\n};\r\n","import { createAsyncAction, createStandardAction } from 'typesafe-actions';\r\nimport { UserSettings, UserSystemGroupStrings } from 'store/storeTypes';\r\nimport { authService } from 'services/AuthProvider';\r\nimport { makeApiUrl } from 'actions/_shared/utils';\r\nimport apiAction, { apiActionSimple } from 'actions/_shared/apiAction';\r\nimport { setSystemGroup } from './userUiActions';\r\nimport handleErrorAction from './_shared/handleErrorAction';\r\nimport { getQueryParams } from 'helpers/navigation';\r\n\r\nexport const loadAppUserSettingsStarted = createStandardAction('GET_APP_USER_SETTINGS_STARTED')();\r\nexport const loadAppUserSettingsSuccess = createStandardAction('GET_APP_USER_SETTINGS_SUCCESS')<\r\n UserSettings\r\n>();\r\nexport const loadAppUserSettingsFailed = createStandardAction('GET_APP_USER_SETTINGS_FAILED')<\r\n any\r\n>();\r\n\r\nexport function getAppUserSettings() {\r\n const { isAuthenticated, idTokenPayload } = authService;\r\n\r\n const url = makeApiUrl('/api/users/user-settings');\r\n if (isAuthenticated() && idTokenPayload && idTokenPayload.sub) {\r\n return apiAction({\r\n request: { url },\r\n logic: {\r\n onStarted: (dispatch, state) => dispatch(loadAppUserSettingsStarted()),\r\n onSuccess: (data, dispatch, state) => {\r\n const selectedSystemGroupFromUri = getQueryParams().get(\r\n 'selectedSystemGroup'\r\n ) as UserSystemGroupStrings;\r\n dispatch(loadAppUserSettingsSuccess(data));\r\n dispatch(setSystemGroup(selectedSystemGroupFromUri || data.defaultSystemGroup));\r\n },\r\n\r\n onFailed: (error, dispatch) => {\r\n dispatch(handleErrorAction(error, `API: ${error.message}`, [loadAppUserSettingsFailed]));\r\n },\r\n },\r\n });\r\n }\r\n}\r\n\r\nexport const setAppUserSettingsAC = createAsyncAction(\r\n 'SET_APP_USER_SETTINGS_STARTED',\r\n 'SET_APP_USER_SETTINGS_SUCCESS',\r\n 'SET_APP_USER_SETTINGS_FAILED'\r\n), Error>();\r\n\r\nexport function setAppUserSettings(data: UserSettings) {\r\n const { isAuthenticated, idTokenPayload } = authService;\r\n const { userSystemGroup, ...postData } = data;\r\n const url = makeApiUrl('/api/users/user-settings');\r\n if (isAuthenticated() && idTokenPayload && idTokenPayload.sub) {\r\n return apiActionSimple({\r\n request: {\r\n url,\r\n method: 'POST',\r\n data: postData,\r\n },\r\n actions: [\r\n setAppUserSettingsAC.request,\r\n setAppUserSettingsAC.success,\r\n setAppUserSettingsAC.failure,\r\n ],\r\n });\r\n }\r\n}\r\n","import i18next from 'i18next';\r\nimport { createStandardAction } from 'typesafe-actions';\r\n\r\nimport { GoalType, GoalFromApiByType } from '../models/GoalsData';\r\nimport handleErrorAction from './_shared/handleErrorAction';\r\nimport { makeApiUrl } from './_shared/utils';\r\nimport apiAction, { apiActionSimple } from './_shared/apiAction';\r\nimport { enqueueNotification } from './uiActions';\r\nimport { getCurrentIsoDateTimeNoMilliAndOffset } from '../helpers/date';\r\n\r\nexport const loadGoalsStarted = createStandardAction('LOAD_GOALS_STARTED')();\r\nexport const loadGoalsSuccess = createStandardAction('LOAD_GOALS_SUCCESS')();\r\nexport const loadGoalsFailed = createStandardAction('LOAD_GOALS_FAILED')();\r\n\r\nexport const saveGoalStarted = createStandardAction('SAVE_GOAL_STARTED')();\r\nexport const saveGoalSuccess = createStandardAction('SAVE_GOAL_SUCCESS')();\r\nexport const saveGoalFailed = createStandardAction('SAVE_GOAL_FAILED')();\r\n\r\nexport function getGoalsData() {\r\n const goalsUrl = makeApiUrl('/api/data/goals');\r\n const { timeString, timezoneOffset } = getCurrentIsoDateTimeNoMilliAndOffset();\r\n return apiActionSimple({\r\n request: {\r\n url: `${goalsUrl}?time=${encodeURIComponent(timeString)}&timezoneOffset=${timezoneOffset}`,\r\n },\r\n actions: [loadGoalsStarted, loadGoalsSuccess, loadGoalsFailed],\r\n interceptor: state => state.api.isLoadingGoals,\r\n });\r\n}\r\n\r\nexport function updateGoal(id: GoalType, value: string, selectedSystemGroup: string) {\r\n const { timeString, timezoneOffset } = getCurrentIsoDateTimeNoMilliAndOffset();\r\n const postGoalsUrl = makeApiUrl('/api/data/goals');\r\n return apiAction({\r\n request: {\r\n url: postGoalsUrl,\r\n method: 'POST',\r\n data: {\r\n goalValue: value,\r\n goalPeriod: Number(id),\r\n time: timeString,\r\n timezoneOffset,\r\n systemGroup: selectedSystemGroup,\r\n },\r\n },\r\n logic: {\r\n onStarted: dispatch => dispatch(saveGoalStarted()),\r\n\r\n onSuccess: (data, dispatch, store) => {\r\n dispatch(saveGoalSuccess(data));\r\n dispatch(\r\n enqueueNotification(i18next.t('notifications.goalSaved'), {\r\n variant: 'success',\r\n })\r\n );\r\n },\r\n\r\n onFailed: (error, dispatch) => {\r\n dispatch(handleErrorAction(error, `API: ${error.message}`, [saveGoalFailed]));\r\n },\r\n },\r\n });\r\n}\r\n","import { createStandardAction } from 'typesafe-actions';\r\nimport { ThunkDispatch } from 'redux-thunk';\r\nimport { Action } from 'redux';\r\n\r\nimport { ReportTypesNew } from 'models/ReportData';\r\nimport { Store, ReportFilterData, UserSystemGroupStrings } from 'store/storeTypes';\r\nimport { KonnectAnalytics } from 'KonnectAnalytics/konnectAnalytics';\r\ninterface SetActiveReportPayload {\r\n activeReport: ReportTypesNew;\r\n filterData: ReportFilterData;\r\n selectedSystemGroup: UserSystemGroupStrings;\r\n}\r\nexport const setActiveReportAC = createStandardAction('SET_ACTIVE_REPORT')<\r\n SetActiveReportPayload\r\n>();\r\nexport function setActiveReport(activeReport: ReportTypesNew) {\r\n return async function(dispatch: ThunkDispatch, getState: () => Store) {\r\n const { filterData, activeReport: currentReport } = getState().reports;\r\n const { selectedSystemGroup } = getState().ui;\r\n\r\n if (currentReport) {\r\n //* if there is no current report it means user just load the first overview page\r\n KonnectAnalytics.changeReportPage('changeReport', {\r\n prevReport: currentReport,\r\n nextReport: activeReport,\r\n });\r\n }\r\n dispatch(\r\n setActiveReportAC({\r\n activeReport,\r\n selectedSystemGroup,\r\n filterData: filterData[selectedSystemGroup]!,\r\n })\r\n );\r\n };\r\n}\r\n","import { Action } from 'redux';\r\nimport { ThunkDispatch } from 'redux-thunk';\r\nimport { createStandardAction } from 'typesafe-actions';\r\n\r\nimport { Store } from '../store/storeTypes';\r\nimport { makeApiUrl } from './_shared/utils';\r\nimport { apiActionSimple } from './_shared/apiAction';\r\nimport { CustomerData } from '../models/CustomerData';\r\nimport { SiteData } from '../models/SiteData';\r\nimport { SystemData } from '../models/SystemData';\r\n\r\nexport const loadCustomersStarted = createStandardAction('LOAD_CUSTOMERS_STARTED')();\r\nexport const loadCustomersSuccess = createStandardAction('LOAD_CUSTOMERS_SUCCESS')<\r\n CustomerData[]\r\n>();\r\nexport const loadCustomersFailed = createStandardAction('LOAD_CUSTOMERS_FAILED')();\r\n\r\nexport const loadSitesStarted = createStandardAction('LOAD_SITES_STARTED')();\r\nexport const loadSitesSuccess = createStandardAction('LOAD_SITES_SUCCESS')();\r\nexport const loadSitesFailed = createStandardAction('LOAD_SITES_FAILED')();\r\n\r\nexport const loadSystemsStarted = createStandardAction('LOAD_SYSTEMS_STARTED')();\r\nexport const loadSystemsSuccess = createStandardAction('LOAD_SYSTEMS_SUCCESS')();\r\nexport const loadSystemsFailed = createStandardAction('LOAD_SYSTEMS_FAILED')();\r\n\r\n/** Get entities needed to render user scope selection components */\r\nexport function getScopeData() {\r\n return function(dispatch: ThunkDispatch) {\r\n dispatch(getCustomersData());\r\n dispatch(getSitesData());\r\n dispatch(getSystemsData());\r\n };\r\n}\r\n\r\nexport function getCustomersData() {\r\n const getCustomersUrl = makeApiUrl('/api/data/customers');\r\n return apiActionSimple({\r\n request: {\r\n url: getCustomersUrl,\r\n },\r\n actions: [loadCustomersStarted, loadCustomersSuccess, loadCustomersFailed],\r\n interceptor: state =>\r\n state.api.isLoadingCustomers || state.entities.customers.allIds.length > 0,\r\n });\r\n}\r\n\r\nexport function getSitesData() {\r\n const getSitesUrl = makeApiUrl('/api/data/sites');\r\n return apiActionSimple({\r\n request: {\r\n url: getSitesUrl,\r\n },\r\n actions: [loadSitesStarted, loadSitesSuccess, loadSitesFailed],\r\n interceptor: state => state.api.isLoadingSites || state.entities.sites.allIds.length > 0,\r\n });\r\n}\r\n\r\nexport function getSystemsData() {\r\n const getSystemsUrl = makeApiUrl('/api/data/systems');\r\n return apiActionSimple({\r\n request: {\r\n url: getSystemsUrl,\r\n },\r\n actions: [loadSystemsStarted, loadSystemsSuccess, loadSystemsFailed],\r\n interceptor: state => state.api.isLoadingSystems || state.entities.systems.allIds.length > 0,\r\n });\r\n}\r\n","import { createAsyncAction, createStandardAction } from 'typesafe-actions';\r\nimport { makeApiUrl } from 'actions/_shared/utils';\r\nimport { authService } from 'services/AuthProvider';\r\nimport apiAction from 'actions/_shared/apiAction';\r\nimport { GenericPropsType } from 'store/storeTypes';\r\n\r\n//models\r\nexport type GetCustomerDataBySerialRequest = { isLoading: boolean };\r\nexport type GetCustomerDataBySerialResponse = {\r\n id: string;\r\n name: string;\r\n importedCustomerId: string;\r\n};\r\n\r\nexport const getCustomerDataBySerialIdAC = createAsyncAction(\r\n 'GET_CUSTOMER_DATA_BY_SERIAL_STARTED',\r\n 'GET_CUSTOMER_DATA_BY_SERIAL_SUCCESS',\r\n 'GET_CUSTOMER_DATA_BY_SERIAL_FAILED'\r\n)();\r\n\r\nexport const getCustomerDataBySerialIdRequest = (serialId: string) => {\r\n const url = makeApiUrl(`/api/data/customer-data?serialNumber=${serialId}`);\r\n const { isAuthenticated, idTokenPayload } = authService;\r\n\r\n if (isAuthenticated() && idTokenPayload && idTokenPayload.sub)\r\n return apiAction({\r\n request: {\r\n url,\r\n // params: {\r\n\r\n // },\r\n },\r\n logic: {\r\n onFailed: (error, dispatch) => {\r\n dispatch(getCustomerDataBySerialIdAC.failure(error));\r\n },\r\n onStarted: dispatch => {\r\n dispatch(getCustomerDataBySerialIdAC.request({ isLoading: true }));\r\n },\r\n onSuccess: (data, dispatch) => {\r\n const { name, id, importedCustomerId } = data;\r\n dispatch(getCustomerDataBySerialIdAC.success({ name, id, importedCustomerId }));\r\n },\r\n },\r\n });\r\n};\r\n","import {\r\n differenceInDays,\r\n eachDayOfInterval,\r\n endOfMonth,\r\n endOfWeek,\r\n isSameDay,\r\n startOfMonth,\r\n startOfWeek,\r\n} from 'date-fns';\r\nimport { globalColors } from 'globalStyle';\r\nimport { transformTime } from 'helpers/conversions';\r\nimport { TimeFrameEnum } from 'models/ReportData';\r\nimport React from 'react';\r\nimport { GranularityEnum } from 'store/storeTypes';\r\n\r\nconst AxixTiksForCustomTimeframe = props => {\r\n const {\r\n x,\r\n y,\r\n data,\r\n width,\r\n index,\r\n marginLeft,\r\n marginRight,\r\n chart,\r\n timeframe,\r\n customTimeframeProperties,\r\n } = props;\r\n const LAST_HOUR = 23;\r\n const MONTH_NAME_LENGTH = 17;\r\n let isAdditionalLabelHasTwoDates = false;\r\n const record = data[index];\r\n const granularity = data[0]?.granularity;\r\n const ADDITIONAL_MONTH_LABEL_Y_OFFSET = 28;\r\n const ADDITIONAL_WEEK_Y_OFFSET = 39;\r\n const ADDITIONAL_DAYS_LABEL_Y_OFFSET = 36;\r\n const getAdditionalData = (data, granularity): string => {\r\n if (granularity === GranularityEnum.Hour) {\r\n const [\r\n firstHour,\r\n firstDayName,\r\n firstDayNumber,\r\n firstMonthName,\r\n firstYear,\r\n ] = data[0].date.split(' ');\r\n const [lastHour, lastDayName, lastDayNumber, lastMonthName, lastYear] = data[\r\n data.length - 1\r\n ].date.split(' ');\r\n if (lastMonthName === firstMonthName) {\r\n isAdditionalLabelHasTwoDates = false;\r\n return `${firstDayNumber} ${firstDayName} ${firstYear}`;\r\n } else {\r\n isAdditionalLabelHasTwoDates = true;\r\n return `${firstDayNumber} ${firstDayName} ${firstYear} | ${lastDayNumber} ${lastDayName} ${lastYear}`;\r\n }\r\n }\r\n if (granularity === GranularityEnum.Day) {\r\n const [firstDayName, firstDayNumber, firstMonthName, firstYear] = data[0].date.split(' ');\r\n const [lastDayName, lastDayNumber, lastMonthName, lastYear] = data[\r\n data.length - 1\r\n ].date.split(' ');\r\n if (firstMonthName === lastMonthName) {\r\n isAdditionalLabelHasTwoDates = false;\r\n return `${firstMonthName.slice(0, 3)} ${firstYear}`;\r\n } else {\r\n isAdditionalLabelHasTwoDates = true;\r\n\r\n return `${firstMonthName.slice(0, 3)} ${firstYear} - ${lastMonthName.slice(\r\n 0,\r\n 3\r\n )} ${lastYear} `;\r\n }\r\n }\r\n if (granularity === GranularityEnum.Week) {\r\n const firstYear = data[0].date.split(',')[1].trim();\r\n const lastYear = data[data.length - 1].date.split(',')[1].trim();\r\n if (firstYear === lastYear) {\r\n isAdditionalLabelHasTwoDates = false;\r\n return `${firstYear}`;\r\n } else {\r\n isAdditionalLabelHasTwoDates = true;\r\n return `${firstYear} - ${lastYear}`;\r\n }\r\n }\r\n if (granularity === GranularityEnum.Month) {\r\n const firstYear = data[0].date.slice(0, 4);\r\n const lastYear = data[data.length - 1].date.slice(0, 4);\r\n if (firstYear === lastYear) {\r\n isAdditionalLabelHasTwoDates = false;\r\n return `${firstYear}`;\r\n } else {\r\n isAdditionalLabelHasTwoDates = true;\r\n return `${firstYear} - ${lastYear}`;\r\n }\r\n }\r\n };\r\n if (granularity === GranularityEnum.Hour) {\r\n const [hourStr, dayNameStr, dayNumberStr, monthNameStr, year] = record.date.split(' ');\r\n const [hour, timeModificator] = transformTime(hourStr).split(' ');\r\n const xOffset = hour.length < 2 ? x - 3 : x - 6;\r\n const additionalOffsetForTimeModificator = hour.length < 2 ? -3 : -1;\r\n\r\n const additionalDataLabel = getAdditionalData(data, GranularityEnum.Day);\r\n const additionalLabelColor = isAdditionalLabelHasTwoDates ? '#FFAB2B' : '#7F8FA4';\r\n let xOffsetForAdditionalLabel = width / 2 - 15 + marginLeft;\r\n const firstRecordDayName = data[0].date.split(' ')[1];\r\n const indexOfSecondDay = data.findIndex(record => {\r\n return record.date.split(' ')[1] !== firstRecordDayName;\r\n });\r\n\r\n return (\r\n \r\n \r\n {hour}\r\n \r\n \r\n {timeModificator}\r\n \r\n {index === 0 && !isAdditionalLabelHasTwoDates && (\r\n \r\n {additionalDataLabel}\r\n \r\n )}\r\n {index === indexOfSecondDay && isAdditionalLabelHasTwoDates && (\r\n \r\n {additionalDataLabel}\r\n \r\n )}\r\n \r\n );\r\n }\r\n if (granularity === GranularityEnum.Day) {\r\n const [dayName, dayNumber] = record.date.split(' ');\r\n const xOffset = dayNumber.length < 2 ? x - 3 : x - 5;\r\n const additionalDataLabel = getAdditionalData(data, granularity);\r\n const additionalLabelColor = isAdditionalLabelHasTwoDates ? '#FFAB2B' : '#7F8FA4';\r\n const xOffsetForAdditionalLabel = width / 2 - 15 + marginLeft;\r\n\r\n const startDate = customTimeframeProperties?.customTimeFrameStartDate;\r\n const endDate = customTimeframeProperties?.customTimeFrameEndDate;\r\n const startDateStartHour = customTimeframeProperties?.customTimeFrameStartHour;\r\n const endDateEndHour = customTimeframeProperties?.customTimeFrameEndHour;\r\n\r\n const selectedHoursCountStartDate = 24 - startDateStartHour;\r\n const selectedHoursCountEndDate = endDateEndHour;\r\n const firstMonthName = data[0].date.split(' ')[2];\r\n const indexOfSecondMonth = data.findIndex(record => {\r\n return record.date.split(' ')[2] !== firstMonthName;\r\n });\r\n return (\r\n \r\n \r\n {dayNumber}\r\n \r\n 1 ? xOffset : xOffset - 4}\r\n dy={12}>\r\n {dayName.slice(0, 3)}\r\n \r\n {index === 0 && !isAdditionalLabelHasTwoDates && (\r\n \r\n {additionalDataLabel}\r\n \r\n )}\r\n {index === indexOfSecondMonth && isAdditionalLabelHasTwoDates && (\r\n \r\n {additionalDataLabel}\r\n \r\n )}\r\n {index === 0 && selectedHoursCountStartDate !== 24 && (\r\n 1 ? xOffset - 10 : xOffset - 14}>\r\n {selectedHoursCountStartDate} hours\r\n \r\n )}\r\n {index === data.length - 1 &&\r\n selectedHoursCountEndDate < LAST_HOUR &&\r\n timeframe === TimeFrameEnum.custom && (\r\n 1 ? xOffset - 10 : xOffset - 14}>\r\n {selectedHoursCountEndDate + 1} hours\r\n \r\n )}\r\n \r\n );\r\n }\r\n if (granularity === GranularityEnum.Week) {\r\n const [weekRange, year] = record.date.split(',');\r\n const [startWeekStr, endWeekStr] = weekRange.split('-');\r\n const startWeekDay = startWeekStr.trim().slice(-2);\r\n const endWeekDay = endWeekStr.trim().slice(-2);\r\n const startWeekMonth = startWeekStr.trim().slice(0, 3);\r\n const endWeekMonth = endWeekStr.trim().slice(0, 3);\r\n const xOffset = x - 4;\r\n\r\n const additionalDataLabel = getAdditionalData(data, granularity);\r\n const additionalLabelColor = isAdditionalLabelHasTwoDates ? '#FFAB2B' : '#7F8FA4';\r\n let xOffsetForAdditionalLabel = width / 2 - 15 + marginLeft;\r\n\r\n let secondRowXOffset = xOffset - 17;\r\n //next 2 if conditions are for centering additional label\r\n //if startWeek day number contains 2 digits and end week day number contains 2 digit\r\n if (startWeekDay.trim().length > 1 && endWeekDay.trim().length > 1) {\r\n secondRowXOffset = xOffset - 15;\r\n }\r\n //if startWeek day number contains 1 digit and end week day number contains 2 digit\r\n if (startWeekDay.trim().length === 1 && endWeekDay.trim().length > 1) {\r\n secondRowXOffset = xOffset - 18;\r\n }\r\n //if startWeek day number contains 1 digit and end week day number contains 1 digit\r\n if (startWeekDay.trim().length === 1 && endWeekDay.trim().length === 1) {\r\n secondRowXOffset = xOffset - 18;\r\n }\r\n //if startWeek day number contains 2 digit and end week day number contains 1 digit\r\n if (startWeekDay.trim().length > 1 && endWeekDay.trim().length === 1) {\r\n secondRowXOffset = xOffset - 15;\r\n }\r\n\r\n //if week not full we need to show special label\r\n const startDate = customTimeframeProperties?.customTimeFrameStartDate;\r\n const endDate = customTimeframeProperties?.customTimeFrameEndDate;\r\n const isFirstWeekFull = isSameDay(startDate, startOfWeek(startDate, { weekStartsOn: 1 }));\r\n const isEndWeekFull = isSameDay(endDate, endOfWeek(endDate, { weekStartsOn: 1 }));\r\n const selectedDaysConuntInFirstWeek =\r\n differenceInDays(endOfWeek(startDate, { weekStartsOn: 1 }), startDate) + 1;\r\n const selectedDaysCountInEndWeek =\r\n differenceInDays(endDate, startOfWeek(endDate, { weekStartsOn: 1 })) + 1;\r\n const firstYearname = data[0].date.split(',')[1].trim();\r\n const indexOfSecondYear = data.findIndex(record => {\r\n return record.date.split(',')[1].trim() !== firstYearname;\r\n });\r\n return (\r\n \r\n \r\n {startWeekDay} {startWeekMonth}\r\n \r\n\r\n \r\n {endWeekDay} {endWeekMonth}\r\n \r\n {!isFirstWeekFull && index === 0 && (\r\n \r\n {selectedDaysConuntInFirstWeek} days\r\n \r\n )}\r\n {!isEndWeekFull && index === data.length - 1 && (\r\n \r\n {selectedDaysCountInEndWeek} days\r\n \r\n )}\r\n {index === 0 && !isAdditionalLabelHasTwoDates && (\r\n \r\n {additionalDataLabel}\r\n \r\n )}\r\n {index === indexOfSecondYear &&\r\n isAdditionalLabelHasTwoDates &&\r\n index !== 0 &&\r\n index !== data.length - 1 && (\r\n \r\n {additionalDataLabel}\r\n \r\n )}\r\n \r\n );\r\n }\r\n if (granularity === GranularityEnum.Month) {\r\n //*we have to substruct 1 from month number beacuse in JS monthes starts from 0 and on back end side starts from 1;\r\n const monthNumber = +record.date.slice(-2) - 1;\r\n //here it is no matter which year to use the main purpose to create new date with propper month\r\n const date = new Date(2022, monthNumber);\r\n const monthName = date.toLocaleString('default', { month: 'short' });\r\n const additionalDataLabel = getAdditionalData(data, granularity);\r\n const additionalLabelColor = isAdditionalLabelHasTwoDates ? '#FFAB2B' : '#7F8FA4';\r\n const xOffset = x - 5;\r\n //leftBorderLabel and rightBorderLabel are used to show user that first and last record is not full month\r\n const startDate = customTimeframeProperties?.customTimeFrameStartDate;\r\n const endDate = customTimeframeProperties?.customTimeFrameEndDate;\r\n const isFirstMonthFull = isSameDay(startDate, startOfMonth(startDate));\r\n const isEndMonthFull = isSameDay(endDate, endOfMonth(endDate));\r\n const selectedDaysConuntInFirstMonth = differenceInDays(endOfMonth(startDate), startDate) + 1;\r\n const selectedDaysCountInEndMonth = differenceInDays(endDate, startOfMonth(endDate)) + 1;\r\n const firstYearname = data[0].date.slice(0, 4);\r\n const indexOfSecondYear = data.findIndex(record => {\r\n return record.date.slice(0, 4) !== firstYearname;\r\n });\r\n let xOffsetForAdditionalLabel = width / 2 - 15 + marginLeft;\r\n\r\n return (\r\n \r\n \r\n {monthName}\r\n \r\n {!isFirstMonthFull && index === 0 && (\r\n \r\n {selectedDaysConuntInFirstMonth} days\r\n \r\n )}\r\n\r\n {!isEndMonthFull && index === data.length - 1 && (\r\n \r\n {selectedDaysCountInEndMonth} days\r\n \r\n )}\r\n {index === 0 && !isAdditionalLabelHasTwoDates && (\r\n \r\n {additionalDataLabel}\r\n \r\n )}\r\n\r\n {index === indexOfSecondYear &&\r\n isAdditionalLabelHasTwoDates &&\r\n index !== 0 &&\r\n index !== data.length - 1 && (\r\n \r\n {additionalDataLabel}\r\n \r\n )}\r\n \r\n );\r\n } else {\r\n return (\r\n \r\n {props.payload.value}\r\n \r\n );\r\n }\r\n};\r\nexport default AxixTiksForCustomTimeframe;\r\n","import { createStandardAction } from 'typesafe-actions';\r\n\r\nimport { apiActionSimple } from './_shared/apiAction';\r\nimport { makeApiUrl } from './_shared/utils';\r\nimport {\r\n ReportFilterCurrentStateByType,\r\n ReportsFiltersDatesApi,\r\n ReportsFilterSitesApi,\r\n} from 'models/ReportsFilterData';\r\n\r\nimport { ReportFilterDataByType } from 'store/storeTypes';\r\n\r\nexport const loadReportsFilterDataStarted = createStandardAction(\r\n 'LOAD_REPORTS_FILTER_DATA_STARTED'\r\n)();\r\n\r\nexport const loadReportsFilterDataSuccess = createStandardAction(\r\n 'LOAD_REPORTS_FILTER_DATA_SUCCESS'\r\n)();\r\nexport const loadReportsFilterDataFailed = createStandardAction('LOAD_REPORTS_FILTER_DATA_FAILED')<\r\n any\r\n>();\r\n\r\nexport const loadReportsFilterSitesStarted = createStandardAction(\r\n 'LOAD_REPORTS_FILTER_SITES_STARTED'\r\n)();\r\n\r\nexport const loadReportsFilterSitesSuccess = createStandardAction(\r\n 'LOAD_REPORTS_FILTER_SITES_SUCCESS'\r\n)();\r\nexport const loadReportsFilterSitesFailed = createStandardAction(\r\n 'LOAD_REPORTS_FILTER_SITES_FAILED'\r\n)();\r\n\r\nexport const loadReportsFilterDatesStarted = createStandardAction(\r\n 'LOAD_REPORTS_FILTER_DATES_STARTED'\r\n)();\r\n\r\nexport const loadReportsFilterDatesSuccess = createStandardAction(\r\n 'LOAD_REPORTS_FILTER_DATES_SUCCESS'\r\n)();\r\nexport const loadReportsFilterDatesFailed = createStandardAction(\r\n 'LOAD_REPORTS_FILTER_DATES_FAILED'\r\n)();\r\n\r\nexport const loadReportsCurrentStateStarted = createStandardAction(\r\n 'LOAD_REPORTS_CURRRENT_STATE_STARTED'\r\n)();\r\n\r\nexport const loadReportsCurrentStateSuccess = createStandardAction(\r\n 'LOAD_REPORTS_CURRRENT_STATE_SUCCESS'\r\n)();\r\nexport const loadReportsCurrentStateFailed = createStandardAction(\r\n 'LOAD_REPORTS_CURRRENT_STATE_FAILED'\r\n)();\r\n\r\nexport const getReportsFilterSites = () => {\r\n const getReportsFilterSitesUrl = makeApiUrl('/api/reports/site-extensions');\r\n return apiActionSimple({\r\n request: { url: getReportsFilterSitesUrl },\r\n actions: [\r\n loadReportsFilterSitesStarted,\r\n loadReportsFilterSitesSuccess,\r\n loadReportsFilterSitesFailed,\r\n ],\r\n interceptor: state =>\r\n state.apiState.reportsFilterData.isInProgress ||\r\n state.apiState.reportsFilterData.reachedMaxLoadAttempts,\r\n });\r\n};\r\n\r\nexport const getReportsFilterDates = () => {\r\n const getReportsFiltersDatesUrl = makeApiUrl('/api/reports/date-filters');\r\n return apiActionSimple({\r\n request: { url: getReportsFiltersDatesUrl },\r\n actions: [\r\n loadReportsFilterDatesStarted,\r\n loadReportsFilterDatesSuccess,\r\n loadReportsFilterDatesFailed,\r\n ],\r\n interceptor: state =>\r\n state.apiState.reportsFilterData.isInProgress ||\r\n state.apiState.reportsFilterData.reachedMaxLoadAttempts,\r\n });\r\n};\r\n\r\nexport const getReportsCurrentState = () => {\r\n const getReportsCurrentStateUrl = makeApiUrl('/api/reports/current-state');\r\n return apiActionSimple({\r\n request: { url: getReportsCurrentStateUrl },\r\n actions: [\r\n loadReportsCurrentStateStarted,\r\n loadReportsCurrentStateSuccess,\r\n loadReportsCurrentStateFailed,\r\n ],\r\n interceptor: state =>\r\n state.apiState.reportsCurrentState.isInProgress ||\r\n state.apiState.reportsCurrentState.reachedMaxLoadAttempts,\r\n });\r\n};\r\n","//*this is a helper function to convert the api data to the format we need for all graphs in dtf mode. we need it beacuse back end could not send data in consistent format for systemGroups. e.g - DTF.\r\n\r\nimport { addDays, format, getDate, getMonth, parse, startOfMonth } from 'date-fns';\r\ntype normalizeGraphDataProps = {\r\n records: Array;\r\n day?: string;\r\n week?: string;\r\n month?: string;\r\n quarter?: string;\r\n year?: string;\r\n};\r\n//*helper function to normalize data for dtf\r\n\r\nexport const normalizeGraphData = ({\r\n records,\r\n day,\r\n week,\r\n month,\r\n quarter,\r\n year,\r\n}: normalizeGraphDataProps) => {\r\n //*filtering out records with null colorName - could not be filtered on server side\r\n const filterColorNameNull = data => {\r\n // Iterate through each object in the array\r\n return data.map(item => {\r\n // Filter the \"color\" array to remove elements with null \"colorName\"\r\n item.color = item.color?.filter(colorItem => colorItem.colorName !== null);\r\n return item;\r\n });\r\n };\r\n const filteredRecords = filterColorNameNull(records);\r\n if (day) {\r\n filteredRecords.forEach(record => {\r\n const initialHour = record.date;\r\n const [shortDayName, monthName, dayNumber, year] = day.split(' ');\r\n const dayName = getFullNameOfDay(shortDayName);\r\n record['granularity'] = 'Hour';\r\n record['date'] = `${initialHour} ${dayName} ${dayNumber} ${monthName} ${year}`;\r\n });\r\n\r\n return filteredRecords;\r\n }\r\n if (week) {\r\n const [monthName, dayNumber, _, __, ___, ____, year] = week.split(' ');\r\n const startDate = new Date(`${monthName} ${dayNumber} ${year}`);\r\n filteredRecords.forEach((record, index) => {\r\n const currentDate = addDays(startDate, index);\r\n const fullDayName = format(currentDate, 'eeee');\r\n const dayNumber = getDate(currentDate);\r\n const monthName = format(currentDate, 'MMMM');\r\n const year = format(currentDate, 'yyyy');\r\n record['granularity'] = 'Day';\r\n record['date'] = `${fullDayName} ${dayNumber} ${monthName} ${year}`;\r\n });\r\n\r\n return filteredRecords;\r\n }\r\n if (month) {\r\n const [monthName, year] = month.split(',');\r\n const startDate = startOfMonth(new Date(`${monthName} ${year}`));\r\n filteredRecords.forEach((record, index) => {\r\n const currentDate = addDays(startDate, index);\r\n const fullDayName = format(currentDate, 'eeee');\r\n const dayNumber = getDate(currentDate);\r\n const monthName = format(currentDate, 'MMMM');\r\n const year = format(currentDate, 'yyyy');\r\n record['granularity'] = 'Day';\r\n record['date'] = `${fullDayName} ${dayNumber} ${monthName} ${year}`;\r\n });\r\n return filteredRecords;\r\n }\r\n if (quarter) {\r\n filteredRecords.forEach(record => {\r\n const [monthName, year] = record.date.split(',');\r\n const date = parse(monthName, 'MMMM', new Date());\r\n const monthNumber = (getMonth(date) + 1).toString();\r\n record['granularity'] = 'Month';\r\n record['date'] = `${year.trim()}${\r\n monthNumber.length === 1 ? `0${monthNumber}` : monthNumber\r\n }`;\r\n });\r\n return filteredRecords;\r\n }\r\n if (year) {\r\n filteredRecords.forEach(record => {\r\n const monthShorName = record.date;\r\n const date = parse(`${monthShorName} ${year}`, 'MMM yyyy', new Date());\r\n const monthNumber = (getMonth(date) + 1).toString();\r\n record['date'] = `${year}${monthNumber.length === 1 ? `0${monthNumber}` : monthNumber}`;\r\n record['granularity'] = 'Month';\r\n });\r\n return filteredRecords;\r\n }\r\n};\r\nfunction getFullNameOfDay(shortDay) {\r\n const parsedDate = parse(shortDay, 'EEE', new Date());\r\n const fullNameOfDay = format(parsedDate, 'eeee');\r\n return fullNameOfDay;\r\n}\r\n","import { globalColors } from 'globalStyle';\r\nimport {\r\n endOfQuarter,\r\n format,\r\n parse,\r\n parseISO,\r\n isSameDay,\r\n startOfWeek,\r\n startOfMonth,\r\n startOfDay,\r\n endOfMonth,\r\n startOfQuarter,\r\n startOfYear,\r\n endOfYear,\r\n isWithinInterval,\r\n endOfWeek,\r\n isValid,\r\n isSameYear,\r\n addYears,\r\n} from 'date-fns';\r\nimport config from 'config/config';\r\nimport { Store, UserSystemGroup } from 'store/storeTypes';\r\nimport { TimeFrame } from 'models/ReportData';\r\nimport { ReportDateRequest } from 'models/ReportsFilterData';\r\nimport { CustomTimeFrameProperties } from 'actions/reportFilterActions';\r\n\r\nexport {\r\n format,\r\n parse,\r\n parseISO,\r\n isSameDay,\r\n startOfDay,\r\n startOfMonth,\r\n startOfQuarter,\r\n startOfYear,\r\n isWithinInterval,\r\n};\r\n\r\nexport const convertDateToString = (date: Date): string => {\r\n return `${date.getFullYear()}/${date.getMonth() + 1}/${date.getDate()}`;\r\n};\r\n\r\nexport function getCurrentIsoDateTimeNoMilliAndOffset() {\r\n const date = new Date(Date.now());\r\n const timeString = `${format(date, 'yyyy-MM-dd')}T${format(date, 'HH:mm:ss')}`;\r\n\r\n const timezoneOffset = getTimeOffset();\r\n\r\n return { timeString, timezoneOffset };\r\n}\r\n\r\nexport function getTimeOffset(date: Date = new Date(Date.now())) {\r\n return parseFloat(((date.getTimezoneOffset() / 60) * -1).toFixed(1));\r\n}\r\n\r\nexport const isHistorical = (timeframe: { day?: Date | null; lastUpdate?: Date }): boolean => {\r\n const { day, lastUpdate } = timeframe;\r\n const currentDate = lastUpdate ? new Date(lastUpdate.getTime()) : new Date();\r\n currentDate.setHours(0, 0, 0, 0);\r\n if (day) {\r\n return day < currentDate;\r\n }\r\n return false;\r\n};\r\n\r\nexport const apiRefreshInterval = (\r\n period: { day: Date; timeframe: TimeFrame },\r\n callback: () => void\r\n) => {\r\n if (isHistorical(period)) {\r\n return () => {};\r\n } else {\r\n const refreshData = setInterval(callback, config.REFRESH_API_INTERVAL);\r\n return () => clearInterval(refreshData);\r\n }\r\n};\r\n\r\nexport const isToday = (state: Store): boolean => {\r\n return !isHistorical({\r\n day: new Date(\r\n state.reports.filterState[state.ui.selectedSystemGroup]!.selectedDate || '01.01.1990'\r\n ),\r\n lastUpdate: state.reports.filterData[state.ui.selectedSystemGroup]!.endDate || new Date(),\r\n });\r\n};\r\n\r\nexport const getDayForDate = (date: Date): { startDate: Date; endDate: Date; title: string } => {\r\n const startDate = new Date(date.getTime());\r\n const endDate = new Date(date.getTime());\r\n const title = format(startDate, 'EEE MMMM d yyyy');\r\n return { startDate, endDate, title };\r\n};\r\n\r\nexport const getPeriodForCustom = (date: Date) => {\r\n const startDate = new Date(date.getTime());\r\n const endDate = new Date(date.getTime());\r\n const title = format(startDate, 'EEE MMMM d yyyy');\r\n return { startDate, endDate, title };\r\n};\r\n\r\nexport const getDayForDateMobile = (\r\n date: Date\r\n): { startDate: Date; endDate: Date; title: string } => {\r\n const startDate = new Date(date.getTime());\r\n const endDate = new Date(date.getTime());\r\n const title = format(startDate, 'MMM dd yyyy');\r\n return { startDate, endDate, title };\r\n};\r\nexport const getWeekForDate = (date: Date): { startDate: Date; endDate: Date; title: string } => {\r\n if (!date) {\r\n return;\r\n }\r\n const startDate = startOfWeek(date, { weekStartsOn: 1 });\r\n const endDate = endOfWeek(date, { weekStartsOn: 1 });\r\n let title;\r\n if (isSameYear(startDate, endDate)) {\r\n //*regular case\r\n title = `${format(startDate, 'MMMM d')} - ${format(endDate, 'MMMM d , yyyy')}`;\r\n } else {\r\n //*the case of last week in the year. we need to keep prev year prefix for requests in this case.\r\n const endDateMinusYear = addYears(endDate, -1);\r\n title = `${format(startDate, 'MMMM d')} - ${format(endDateMinusYear, 'MMMM d , yyyy')}`;\r\n }\r\n return { startDate, endDate, title };\r\n};\r\n\r\nexport const getMonthForDate = (date: Date): { startDate: Date; endDate: Date; title: string } => {\r\n const startDate = startOfMonth(date);\r\n const endDate = endOfMonth(date);\r\n const title = format(startDate, 'MMMM, yyyy');\r\n return { startDate, endDate, title };\r\n};\r\n\r\nexport const getQuarterForDate = (\r\n date: Date\r\n): { startDate: Date; endDate: Date; title: string } => {\r\n const startDate = startOfQuarter(date);\r\n const endDate = endOfQuarter(date);\r\n const title = `Q${format(startDate, 'Q, yyyy')}`;\r\n return { startDate, endDate, title };\r\n};\r\n\r\nexport const getYearForDate = (date: Date): { startDate: Date; endDate: Date; title: string } => {\r\n const startDate = startOfYear(date);\r\n const endDate = endOfYear(date);\r\n const title = format(startDate, 'yyyy');\r\n return { startDate, endDate, title };\r\n};\r\n\r\nexport const generateDatesForPeriod = (\r\n startDate: Date,\r\n endDate: Date,\r\n periodIncrementFn: (date: Date, step: number) => Date,\r\n startOfPeriodFn: (date: Date) => Date\r\n): Date[] => {\r\n if (!startDate || !endDate) {\r\n return;\r\n }\r\n const result: Date[] = [];\r\n const startRoundDate = new Date(startDate.getTime());\r\n const endRoundDate = new Date(endDate.getTime());\r\n startRoundDate.setHours(0, 0, 0, 0);\r\n endRoundDate.setHours(0, 0, 0, 0);\r\n for (\r\n let startYearDate = startOfPeriodFn(startRoundDate);\r\n startYearDate <= startOfPeriodFn(endRoundDate);\r\n startYearDate = periodIncrementFn(startYearDate, 1)\r\n ) {\r\n result.push(startYearDate);\r\n }\r\n return result;\r\n};\r\n\r\nexport const getDateForTimeframe = (date: Date, timeframe: TimeFrame): Date => {\r\n switch (timeframe) {\r\n case 'day':\r\n return getDayForDate(date).startDate;\r\n case 'week':\r\n return getWeekForDate(date).startDate;\r\n case 'month':\r\n return getMonthForDate(date).startDate;\r\n case 'quarter':\r\n return getQuarterForDate(date).startDate;\r\n case 'year':\r\n return getYearForDate(date).startDate;\r\n case 'custom':\r\n return getPeriodForCustom(date).startDate;\r\n default:\r\n return getDayForDate(date).startDate;\r\n }\r\n};\r\n\r\nexport const getRequestForTimeFrame = (\r\n date: Date,\r\n timeFrame: TimeFrame,\r\n customTimeframeProperties?: CustomTimeFrameProperties\r\n) => {\r\n switch (timeFrame) {\r\n case 'custom':\r\n return {\r\n custom: {\r\n customTimeFrameStartDate: customTimeframeProperties.customTimeFrameStartDate,\r\n customTimeFrameEndDate: customTimeframeProperties.customTimeFrameEndDate,\r\n customTimeFrameStartHour: customTimeframeProperties?.customTimeFrameStartHour || 0,\r\n customTimeFrameEndHour: customTimeframeProperties?.customTimeFrameEndHour || 23,\r\n },\r\n };\r\n case 'day':\r\n return { day: getDayForDate(date).title };\r\n case 'week':\r\n return { week: getWeekForDate(date).title };\r\n case 'month':\r\n return { month: getMonthForDate(date).title };\r\n case 'quarter':\r\n return { quarter: getQuarterForDate(date).title };\r\n case 'year':\r\n return { year: getYearForDate(date).title };\r\n default:\r\n return { day: getDayForDate(date).title };\r\n }\r\n};\r\n\r\nexport const getDaysHoursAndMinutesFromSeconds = (\r\n seconds: number,\r\n timeframe: TimeFrame,\r\n systemGroup: UserSystemGroup\r\n) => {\r\n const mins = seconds / 60;\r\n if (timeframe === 'year' && systemGroup === 'DTG') {\r\n const days =\r\n Math.floor(mins / 60 / 24) < 10\r\n ? `0${Math.floor(mins / 60 / 24)}`\r\n : `${Math.floor(mins / 60 / 24)}`;\r\n const daysToMinutes = Number(days) * 24 * 60;\r\n const rest = mins - daysToMinutes;\r\n const hrs = rest / 60 < 10 ? `0${Math.floor(rest / 60)}` : Math.floor(rest / 60);\r\n const minsInHrs = Number(hrs) * 60;\r\n const minutesDiff = rest - minsInHrs;\r\n const minResult = minutesDiff < 10 ? `0${minutesDiff.toFixed(0)}` : minutesDiff.toFixed(0);\r\n return {\r\n days: days,\r\n hours: hrs,\r\n minutes: minResult,\r\n seconds: null,\r\n };\r\n }\r\n\r\n if (timeframe === 'year' && systemGroup === 'DTF') {\r\n const dtfSeconds = seconds * 3600;\r\n const dtfMins = dtfSeconds / 60;\r\n const days =\r\n Math.floor(dtfMins / 60 / 24) < 10\r\n ? `0${Math.floor(dtfMins / 60 / 24)}`\r\n : `${Math.floor(dtfMins / 60 / 24)}`;\r\n const daysToMinutes = Number(days) * 24 * 60;\r\n const rest = dtfMins - daysToMinutes;\r\n const hrs = rest / 60 < 10 ? `0${Math.floor(rest / 60)}` : Math.floor(rest / 60);\r\n const minsInHrs = Number(hrs) * 60;\r\n const minutesDiff = rest - minsInHrs;\r\n const minResult = minutesDiff < 10 ? `0${Math.floor(minutesDiff)}` : Math.floor(minutesDiff);\r\n return {\r\n days: days,\r\n hours: hrs,\r\n minutes: minResult,\r\n seconds: null,\r\n };\r\n }\r\n if (systemGroup === 'DTF') {\r\n const DTFSeconds = seconds * 3600;\r\n const fullHours = Math.floor(DTFSeconds / 60 / 60);\r\n const restSeconds = DTFSeconds - fullHours * 60 * 60;\r\n const fullMinutes = Math.floor(restSeconds / 60);\r\n const fullSeconds = restSeconds - fullMinutes * 60;\r\n return {\r\n days: null,\r\n hours: fullHours < 10 ? `0${fullHours}` : `${fullHours}`,\r\n minutes: fullMinutes < 10 ? `0${fullMinutes}` : `${fullMinutes}`,\r\n seconds: fullSeconds < 10 ? `0${fullSeconds.toFixed(0)}` : `${fullSeconds.toFixed(0)}`,\r\n };\r\n }\r\n if (mins > 60) {\r\n const hrs = mins / 60 < 10 ? `0${Math.floor(mins / 60)}` : Math.floor(mins / 60);\r\n const minsInHrs = Number(hrs) * 60;\r\n const minutesDiff = mins - minsInHrs;\r\n const minResult = minutesDiff < 10 ? `0${minutesDiff.toFixed(0)}` : minutesDiff.toFixed(0);\r\n return {\r\n days: null,\r\n hours: hrs,\r\n minutes: minResult,\r\n seconds: null,\r\n };\r\n }\r\n if (mins < 60) {\r\n const res = mins > 9 ? mins.toFixed(0) : `0${mins.toFixed(0)}`;\r\n return {\r\n days: null,\r\n hours: '00',\r\n minutes: res,\r\n seconds: null,\r\n };\r\n }\r\n};\r\nexport const isStatusShouldBeShown = (lastupdate: string, isToday: boolean): boolean => {\r\n if (!lastupdate || !isToday || !isSameDay(new Date(lastupdate), new Date())) {\r\n return false;\r\n }\r\n if (isToday) {\r\n return true;\r\n }\r\n};\r\nexport const getLastUpdateTextColor = (lastUpdate: string): string => {\r\n if (!lastUpdate) {\r\n return globalColors.regular.text.primary;\r\n }\r\n if (isSameDay(new Date(lastUpdate), new Date())) {\r\n return globalColors.regular.text.primary;\r\n }\r\n return globalColors.regular.text.red;\r\n};\r\nexport const parseHour = (hour, modificator) => {\r\n if (!modificator) return;\r\n if (modificator === 'AM') {\r\n return hour === 12 ? 0 : hour;\r\n }\r\n if (modificator === 'PM') {\r\n return hour === 0 ? 24 : hour + 12;\r\n }\r\n};\r\nexport const getCustomSearchParameters = (\r\n customTimeframeProperties: CustomTimeFrameProperties\r\n): string => {\r\n if (!customTimeframeProperties) {\r\n return undefined;\r\n } else {\r\n const requestString = `${\r\n getDayForDate(customTimeframeProperties.customTimeFrameStartDate).title\r\n }-${getDayForDate(customTimeframeProperties.customTimeFrameEndDate).title}&startHour=${\r\n customTimeframeProperties.customTimeFrameStartHour\r\n }&endHour=${customTimeframeProperties.customTimeFrameEndHour}`;\r\n return requestString;\r\n }\r\n};\r\n","var _ellipse, _path, _path2, _path3, _path4;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgEmptyStateTankIcon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 240,\n height: 180,\n viewBox: \"0 0 240 180\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ellipse || (_ellipse = /*#__PURE__*/React.createElement(\"ellipse\", {\n cx: 116.5,\n cy: 120,\n rx: 80.5,\n ry: 16,\n fill: \"#EDF7FF\"\n })), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M81.5 49.1667C81.5 47.5099 82.2704 45.915 84.0343 44.3457C85.8336 42.7448 88.5365 41.304 91.9815 40.1054C98.8567 37.7134 108.059 36.5 117 36.5C125.941 36.5 135.143 37.7134 142.019 40.1054C145.464 41.304 148.166 42.7448 149.966 44.3457C151.73 45.915 152.5 47.5099 152.5 49.1667V109.833C152.5 111.49 151.73 113.085 149.966 114.654C148.166 116.255 145.464 117.696 142.019 118.895C135.143 121.287 125.941 122.5 117 122.5C108.059 122.5 98.8567 121.287 91.9815 118.895C88.5365 117.696 85.8336 116.255 84.0343 114.654C82.2704 113.085 81.5 111.49 81.5 109.833V49.1667ZM149.9 49.1667C149.9 47.8863 149.102 46.9687 148.692 46.5485C148.166 46.0116 147.487 45.5107 146.734 45.0499C145.213 44.1182 143.071 43.1559 140.379 42.2853C134.974 40.5376 127.112 39.0833 117 39.0833C106.888 39.0833 99.0256 40.5376 93.6208 42.2853C90.9287 43.1559 88.7874 44.1182 87.2658 45.0499C86.5132 45.5107 85.8336 46.0116 85.3084 46.5485C84.8975 46.9687 84.1 47.8863 84.1 49.1667C84.1 50.4471 84.8975 51.3646 85.3084 51.7848C85.8336 52.3218 86.5132 52.8226 87.2658 53.2835C88.7874 54.2151 90.9287 55.1775 93.6208 56.048C99.0256 57.7957 106.888 59.25 117 59.25C117.574 59.25 117.856 59.43 117.989 59.5624C118.121 59.6944 118.3 59.9739 118.3 60.5417V75.7083C118.3 77.4156 118.881 79.0319 120.079 80.227C121.276 81.4217 122.894 82 124.6 82C126.306 82 127.924 81.4217 129.121 80.227C130.319 79.0319 130.9 77.4156 130.9 75.7083V59.4042C130.9 58.6304 131.265 58.2114 131.889 58.0727C138.135 57.0934 142.377 55.6092 145.13 54.1828C146.507 53.4696 147.549 52.7509 148.289 52.0852C148.655 51.7558 148.988 51.4021 149.252 51.0301C149.428 50.7818 149.9 50.0896 149.9 49.1667Z\",\n fill: \"#C3DFF1\",\n stroke: \"#93C4E7\",\n strokeWidth: 5\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M166.497 15L171.273 23.7269L180 28.5029L171.273 33.2731L166.497 42L161.727 33.2731L153 28.5029L161.727 23.7269L166.497 15Z\",\n fill: \"#FFAB2B\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M44.378 41L46.9887 45.7665L51.7591 48.3751L46.9887 50.9805L44.378 55.747L41.7704 50.9805L37 48.3751L41.7704 45.7665L44.378 41Z\",\n fill: \"#C3DFF1\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M145.378 0L147.989 4.76651L152.759 7.37508L147.989 9.98048L145.378 14.747L142.77 9.98048L138 7.37508L142.77 4.76651L145.378 0Z\",\n fill: \"#C3DFF1\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgEmptyStateTankIcon);\nexport default __webpack_public_path__ + \"static/media/EmptyStateTankIcon.b82647c6.svg\";\nexport { ForwardRef as ReactComponent };","var _ellipse, _path, _path2, _path3, _path4, _path5, _path6;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgEmptyStateEventIcon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 240,\n height: 183,\n viewBox: \"0 0 240 183\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ellipse || (_ellipse = /*#__PURE__*/React.createElement(\"ellipse\", {\n cx: 116.5,\n cy: 114,\n rx: 93.5,\n ry: 20,\n fill: \"#EDF7FF\"\n })), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M60 79H92.5C92.5 79 96 93 116.5 91.5C139.5 91.5 138 77.5 138 77.5H172.5C172 87.1667 171.3 107.2 172.5 110C173.7 112.8 170.333 115.167 168.5 116C139 115.5 78.2 114.8 71 116C63.8 117.2 60.6667 114.167 60 112.5V79Z\",\n fill: \"#C3DFF1\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M170.896 79.5327L147.013 57.9667H84.9845L61.1018 79.5327L57.8125 75.8673L83.0965 53.0333H148.901L174.185 75.8673L170.896 79.5327Z\",\n fill: \"#93C4E7\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M167.625 118.4H64.375C60.3077 118.4 57 115.081 57 111V75.2333H96.3333V77.6999C96.3333 83.821 101.295 88.7999 107.396 88.7999H124.604C130.705 88.7999 135.667 83.821 135.667 77.6999V75.2333H175V111C175 115.081 171.692 118.4 167.625 118.4ZM61.9167 80.1666V111C61.9167 112.36 63.0192 113.467 64.375 113.467H167.625C168.981 113.467 170.083 112.36 170.083 111V80.1666H140.395C139.209 87.8416 132.579 93.7333 124.604 93.7333H107.396C99.421 93.7333 92.7909 87.8416 91.6047 80.1666H61.9167Z\",\n fill: \"#93C4E7\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M100.866 33.2112L92.2615 19.6443L88.1133 22.293L96.7176 35.8599L100.866 33.2112Z\",\n fill: \"#93C4E7\"\n })), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M145.118 22.2886L140.97 19.6404L132.367 33.2072L136.515 35.8555L145.118 22.2886Z\",\n fill: \"#93C4E7\"\n })), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M118.46 17.2667H113.543V33.3001H118.46V17.2667Z\",\n fill: \"#93C4E7\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgEmptyStateEventIcon);\nexport default __webpack_public_path__ + \"static/media/EmptyStateEventIcon.8848422c.svg\";\nexport { ForwardRef as ReactComponent };","var _rect, _rect2, _path, _path2, _path3, _path4, _path5, _path6, _mask, _path7, _path8, _rect3, _rect4, _rect5, _rect6;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgNothingWasSelected(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 115,\n height: 143,\n viewBox: \"0 0 115 143\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n x: 26,\n width: 89,\n height: 124,\n rx: 4,\n fill: \"#93C4E7\",\n fillOpacity: 0.4\n })), _rect2 || (_rect2 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 16,\n y: 10,\n width: 89,\n height: 124,\n rx: 4,\n fill: \"#93C4E7\",\n fillOpacity: 0.6\n })), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M6 141H87C89.2091 141 91 139.209 91 137V46.3423C91 45.3658 90.6427 44.4229 89.9956 43.6916L67.5704 18.3492C66.8112 17.4913 65.7205 17 64.5748 17H6C3.79086 17 2 18.7909 2 21V137C2 139.209 3.79086 141 6 141Z\",\n fill: \"#DFECF4\",\n stroke: \"#93C4E7\",\n strokeWidth: 4\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M67 19V40.9066C67 43.1157 68.7909 44.9066 71 44.9066H89.3333\",\n stroke: \"#93C4E7\",\n strokeWidth: 4\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M18 34L23 34V39H18L18 34Z\",\n stroke: \"#93C4E7\",\n strokeWidth: 4\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M18 53L23 53V58H18L18 53Z\",\n stroke: \"#93C4E7\",\n strokeWidth: 4\n })), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M18 72L23 72V77H18L18 72Z\",\n stroke: \"#93C4E7\",\n strokeWidth: 4\n })), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M18 89L23 89V94H18L18 89Z\",\n stroke: \"#93C4E7\",\n strokeWidth: 4\n })), _mask || (_mask = /*#__PURE__*/React.createElement(\"mask\", {\n id: \"path-9-outside-1_239_4495\",\n maskUnits: \"userSpaceOnUse\",\n x: 66,\n y: 84,\n width: 42,\n height: 42,\n fill: \"black\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n fill: \"white\",\n x: 66,\n y: 84,\n width: 42,\n height: 42\n }), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M81.8759 124C80.655 124 79.4756 123.519 78.6061 122.645L69.3563 113.396C67.5479 111.587 67.5479 108.665 69.3563 106.856C71.1646 105.048 74.0876 105.048 75.8959 106.856L81.1591 112.119L96.5277 89.0606C97.9429 86.9333 100.81 86.3598 102.942 87.7796C105.065 89.1994 105.639 92.0667 104.224 94.194L85.7239 121.942C84.9561 123.094 83.7074 123.843 82.3338 123.977C82.1766 123.991 82.0286 124 81.8759 124Z\"\n }))), _path7 || (_path7 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M81.8759 124C80.655 124 79.4756 123.519 78.6061 122.645L69.3563 113.396C67.5479 111.587 67.5479 108.665 69.3563 106.856C71.1646 105.048 74.0876 105.048 75.8959 106.856L81.1591 112.119L96.5277 89.0606C97.9429 86.9333 100.81 86.3598 102.942 87.7796C105.065 89.1994 105.639 92.0667 104.224 94.194L85.7239 121.942C84.9561 123.094 83.7074 123.843 82.3338 123.977C82.1766 123.991 82.0286 124 81.8759 124Z\",\n fill: \"#FFAB2B\"\n })), _path8 || (_path8 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M78.6061 122.645L80.024 121.234L80.0203 121.231L78.6061 122.645ZM69.3563 113.396L67.9421 114.81H67.9421L69.3563 113.396ZM75.8959 106.856L77.3101 105.442L75.8959 106.856ZM81.1591 112.119L79.7449 113.533L81.4702 115.259L82.8233 113.228L81.1591 112.119ZM96.5277 89.0606L98.1919 90.1698L98.1929 90.1684L96.5277 89.0606ZM102.942 87.7796L104.054 86.1171L104.051 86.1149L102.942 87.7796ZM104.224 94.194L105.888 95.3035L105.889 95.3018L104.224 94.194ZM85.7239 121.942L84.0598 120.833L85.7239 121.942ZM82.3338 123.977L82.5096 125.969L82.5189 125.968L82.5282 125.967L82.3338 123.977ZM81.8759 122C81.1796 122 80.5128 121.726 80.024 121.234L77.1882 124.055C78.4384 125.312 80.1304 126 81.8759 126V122ZM80.0203 121.231L70.7704 111.981L67.9421 114.81L77.1919 124.059L80.0203 121.231ZM70.7704 111.981C69.7432 110.954 69.7432 109.298 70.7704 108.271L67.9421 105.442C65.3526 108.031 65.3526 112.221 67.9421 114.81L70.7704 111.981ZM70.7704 108.271C71.7977 107.243 73.4544 107.243 74.4817 108.271L77.3101 105.442C74.7207 102.853 70.5315 102.853 67.9421 105.442L70.7704 108.271ZM74.4817 108.271L79.7449 113.533L82.5733 110.705L77.3101 105.442L74.4817 108.271ZM82.8233 113.228L98.1919 90.1698L94.8635 87.9514L79.4949 111.01L82.8233 113.228ZM98.1929 90.1684C98.9941 88.964 100.619 88.6349 101.834 89.4443L104.051 86.1149C101.002 84.0847 96.8918 84.9026 94.8625 87.9529L98.1929 90.1684ZM101.831 89.442C103.037 90.249 103.363 91.8772 102.558 93.0862L105.889 95.3018C107.915 92.2562 107.094 88.1498 104.054 86.1171L101.831 89.442ZM102.56 93.0846L84.0598 120.833L87.388 123.051L105.888 95.3035L102.56 93.0846ZM84.0598 120.833C83.6242 121.486 82.9143 121.911 82.1395 121.986L82.5282 125.967C84.5005 125.775 86.2881 124.701 87.388 123.051L84.0598 120.833ZM82.158 121.985C82.0317 121.996 81.9475 122 81.8759 122V126C82.1096 126 82.3215 125.986 82.5096 125.969L82.158 121.985Z\",\n fill: \"white\",\n mask: \"url(#path-9-outside-1_239_4495)\"\n })), _rect3 || (_rect3 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 33,\n y: 34,\n width: 27,\n height: 4,\n rx: 2,\n fill: \"#93C4E7\"\n })), _rect4 || (_rect4 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 33,\n y: 53,\n width: 42,\n height: 4,\n rx: 2,\n fill: \"#93C4E7\"\n })), _rect5 || (_rect5 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 33,\n y: 72,\n width: 42,\n height: 4,\n rx: 2,\n fill: \"#93C4E7\"\n })), _rect6 || (_rect6 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 33,\n y: 89,\n width: 42,\n height: 4,\n rx: 2,\n fill: \"#93C4E7\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgNothingWasSelected);\nexport default __webpack_public_path__ + \"static/media/NothingWasSelected.afc03e6f.svg\";\nexport { ForwardRef as ReactComponent };","var _g, _path, _path2, _path3, _path4, _path5, _rect, _path6, _rect2, _path7, _path8, _path9, _rect3, _path10, _path11, _path12, _path13, _path14, _path15, _path16, _path17, _rect4, _rect5, _rect6, _rect7, _rect8, _rect9, _rect10, _rect11, _path18, _path19, _path20, _defs;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgEmptyState(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 446,\n height: 354,\n viewBox: \"0 0 446 354\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n filter: \"url(#filter0_d)\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n x: 3,\n y: 115.057,\n width: 440,\n height: 200,\n rx: 4,\n fill: \"white\"\n }))), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M122.552 291.217C121.101 291.217 119.971 290.849 119.16 290.113C118.349 289.377 117.923 288.284 117.88 286.833C117.869 286.524 117.864 286.07 117.864 285.473C117.864 284.865 117.869 284.406 117.88 284.097C117.923 282.678 118.36 281.59 119.192 280.833C120.024 280.076 121.144 279.697 122.552 279.697C123.96 279.697 125.08 280.076 125.912 280.833C126.755 281.59 127.197 282.678 127.24 284.097C127.261 284.716 127.272 285.174 127.272 285.473C127.272 285.761 127.261 286.214 127.24 286.833C127.187 288.284 126.755 289.377 125.944 290.113C125.133 290.849 124.003 291.217 122.552 291.217ZM122.552 289.377C123.267 289.377 123.837 289.164 124.264 288.737C124.691 288.3 124.92 287.638 124.952 286.753C124.973 286.113 124.984 285.681 124.984 285.457C124.984 285.212 124.973 284.78 124.952 284.161C124.92 283.276 124.691 282.62 124.264 282.193C123.837 281.756 123.267 281.537 122.552 281.537C121.848 281.537 121.283 281.756 120.856 282.193C120.429 282.62 120.2 283.276 120.168 284.161C120.157 284.47 120.152 284.902 120.152 285.457C120.152 286.001 120.157 286.433 120.168 286.753C120.2 287.638 120.424 288.3 120.84 288.737C121.267 289.164 121.837 289.377 122.552 289.377ZM133.677 291.217C132.226 291.217 131.096 290.849 130.285 290.113C129.474 289.377 129.048 288.284 129.005 286.833C128.994 286.524 128.989 286.07 128.989 285.473C128.989 284.865 128.994 284.406 129.005 284.097C129.048 282.678 129.485 281.59 130.317 280.833C131.149 280.076 132.269 279.697 133.677 279.697C135.085 279.697 136.205 280.076 137.037 280.833C137.88 281.59 138.322 282.678 138.365 284.097C138.386 284.716 138.397 285.174 138.397 285.473C138.397 285.761 138.386 286.214 138.365 286.833C138.312 288.284 137.88 289.377 137.069 290.113C136.258 290.849 135.128 291.217 133.677 291.217ZM133.677 289.377C134.392 289.377 134.962 289.164 135.389 288.737C135.816 288.3 136.045 287.638 136.077 286.753C136.098 286.113 136.109 285.681 136.109 285.457C136.109 285.212 136.098 284.78 136.077 284.161C136.045 283.276 135.816 282.62 135.389 282.193C134.962 281.756 134.392 281.537 133.677 281.537C132.973 281.537 132.408 281.756 131.981 282.193C131.554 282.62 131.325 283.276 131.293 284.161C131.282 284.47 131.277 284.902 131.277 285.457C131.277 286.001 131.282 286.433 131.293 286.753C131.325 287.638 131.549 288.3 131.965 288.737C132.392 289.164 132.962 289.377 133.677 289.377ZM144.802 291.217C143.351 291.217 142.221 290.849 141.41 290.113C140.599 289.377 140.173 288.284 140.13 286.833C140.119 286.524 140.114 286.07 140.114 285.473C140.114 284.865 140.119 284.406 140.13 284.097C140.173 282.678 140.61 281.59 141.442 280.833C142.274 280.076 143.394 279.697 144.802 279.697C146.21 279.697 147.33 280.076 148.162 280.833C149.005 281.59 149.447 282.678 149.49 284.097C149.511 284.716 149.522 285.174 149.522 285.473C149.522 285.761 149.511 286.214 149.49 286.833C149.437 288.284 149.005 289.377 148.194 290.113C147.383 290.849 146.253 291.217 144.802 291.217ZM144.802 289.377C145.517 289.377 146.087 289.164 146.514 288.737C146.941 288.3 147.17 287.638 147.202 286.753C147.223 286.113 147.234 285.681 147.234 285.457C147.234 285.212 147.223 284.78 147.202 284.161C147.17 283.276 146.941 282.62 146.514 282.193C146.087 281.756 145.517 281.537 144.802 281.537C144.098 281.537 143.533 281.756 143.106 282.193C142.679 282.62 142.45 283.276 142.418 284.161C142.407 284.47 142.402 284.902 142.402 285.457C142.402 286.001 142.407 286.433 142.418 286.753C142.45 287.638 142.674 288.3 143.09 288.737C143.517 289.164 144.087 289.377 144.802 289.377ZM152.007 291.057C151.9 291.057 151.81 291.02 151.735 290.945C151.66 290.87 151.623 290.78 151.623 290.673V280.257C151.623 280.14 151.655 280.044 151.719 279.969C151.794 279.894 151.89 279.857 152.007 279.857H156.295C157.575 279.857 158.583 280.161 159.319 280.769C160.055 281.366 160.423 282.246 160.423 283.409C160.423 284.572 160.055 285.452 159.319 286.049C158.594 286.636 157.586 286.929 156.295 286.929H153.911V290.673C153.911 290.78 153.874 290.87 153.799 290.945C153.735 291.02 153.644 291.057 153.527 291.057H152.007ZM156.215 285.153C156.834 285.153 157.308 285.009 157.639 284.721C157.97 284.422 158.135 283.985 158.135 283.409C158.135 282.854 157.975 282.422 157.655 282.113C157.335 281.793 156.855 281.633 156.215 281.633H153.879V285.153H156.215ZM166.058 291.217C165.109 291.217 164.293 291.073 163.61 290.785C162.927 290.497 162.41 290.118 162.058 289.649C161.706 289.18 161.519 288.673 161.498 288.129C161.498 288.033 161.53 287.953 161.594 287.889C161.658 287.825 161.738 287.793 161.834 287.793H163.258C163.386 287.793 163.482 287.82 163.546 287.873C163.621 287.916 163.69 287.99 163.754 288.097C163.861 288.46 164.106 288.764 164.49 289.009C164.874 289.254 165.397 289.377 166.058 289.377C166.815 289.377 167.386 289.254 167.77 289.009C168.154 288.753 168.346 288.401 168.346 287.953C168.346 287.654 168.245 287.409 168.042 287.217C167.85 287.025 167.557 286.86 167.162 286.721C166.778 286.582 166.202 286.412 165.434 286.209C164.175 285.91 163.253 285.516 162.666 285.025C162.09 284.524 161.802 283.814 161.802 282.897C161.802 282.278 161.967 281.729 162.298 281.249C162.639 280.769 163.125 280.39 163.754 280.113C164.394 279.836 165.135 279.697 165.978 279.697C166.853 279.697 167.61 279.852 168.25 280.161C168.89 280.47 169.375 280.86 169.706 281.329C170.047 281.788 170.229 282.246 170.25 282.705C170.25 282.801 170.218 282.881 170.154 282.945C170.09 283.009 170.01 283.041 169.914 283.041H168.426C168.202 283.041 168.047 282.94 167.962 282.737C167.898 282.396 167.685 282.113 167.322 281.889C166.959 281.654 166.511 281.537 165.978 281.537C165.381 281.537 164.911 281.649 164.57 281.873C164.229 282.097 164.058 282.422 164.058 282.849C164.058 283.148 164.143 283.393 164.314 283.585C164.485 283.777 164.751 283.948 165.114 284.097C165.487 284.246 166.021 284.412 166.714 284.593C167.653 284.806 168.399 285.046 168.954 285.313C169.519 285.58 169.935 285.916 170.202 286.321C170.469 286.726 170.602 287.244 170.602 287.873C170.602 288.556 170.41 289.153 170.026 289.665C169.653 290.166 169.119 290.55 168.426 290.817C167.743 291.084 166.954 291.217 166.058 291.217ZM172.148 292.257C172.052 292.257 171.977 292.225 171.924 292.161C171.87 292.097 171.849 292.017 171.86 291.921L172.292 289.201C172.313 289.052 172.366 288.929 172.452 288.833C172.537 288.737 172.654 288.689 172.804 288.689H174.276C174.35 288.689 174.414 288.721 174.468 288.785C174.532 288.838 174.564 288.908 174.564 288.993C174.564 289.046 174.548 289.116 174.516 289.201L173.492 291.857C173.438 291.985 173.369 292.081 173.284 292.145C173.209 292.22 173.102 292.257 172.964 292.257H172.148ZM182.768 291.057C182.661 291.057 182.571 291.02 182.496 290.945C182.421 290.87 182.384 290.78 182.384 290.673V281.825H179.424C179.317 281.825 179.227 281.788 179.152 281.713C179.077 281.638 179.04 281.548 179.04 281.441V280.257C179.04 280.14 179.072 280.044 179.136 279.969C179.211 279.894 179.307 279.857 179.424 279.857H187.584C187.701 279.857 187.797 279.894 187.872 279.969C187.947 280.044 187.984 280.14 187.984 280.257V281.441C187.984 281.548 187.947 281.638 187.872 281.713C187.797 281.788 187.701 281.825 187.584 281.825H184.64V290.673C184.64 290.78 184.603 290.87 184.528 290.945C184.453 291.02 184.357 291.057 184.24 291.057H182.768ZM189.534 291.057C189.427 291.057 189.337 291.02 189.262 290.945C189.187 290.87 189.15 290.78 189.15 290.673V280.081C189.15 279.964 189.187 279.873 189.262 279.809C189.337 279.734 189.427 279.697 189.534 279.697H190.958C191.075 279.697 191.166 279.734 191.23 279.809C191.305 279.873 191.342 279.964 191.342 280.081V283.729C191.982 282.961 192.846 282.577 193.934 282.577C194.915 282.577 195.699 282.902 196.286 283.553C196.873 284.193 197.166 285.068 197.166 286.177V290.673C197.166 290.78 197.129 290.87 197.054 290.945C196.99 291.02 196.899 291.057 196.782 291.057H195.342C195.235 291.057 195.145 291.02 195.07 290.945C194.995 290.87 194.958 290.78 194.958 290.673V286.273C194.958 285.644 194.803 285.158 194.494 284.817C194.195 284.465 193.758 284.289 193.182 284.289C192.617 284.289 192.169 284.465 191.838 284.817C191.507 285.169 191.342 285.654 191.342 286.273V290.673C191.342 290.78 191.305 290.87 191.23 290.945C191.166 291.02 191.075 291.057 190.958 291.057H189.534ZM199.517 281.361C199.41 281.361 199.319 281.324 199.245 281.249C199.17 281.174 199.133 281.084 199.133 280.977V279.825C199.133 279.718 199.17 279.628 199.245 279.553C199.319 279.478 199.41 279.441 199.517 279.441H200.973C201.079 279.441 201.17 279.478 201.245 279.553C201.33 279.628 201.373 279.718 201.373 279.825V280.977C201.373 281.084 201.335 281.174 201.261 281.249C201.186 281.324 201.09 281.361 200.973 281.361H199.517ZM199.581 291.057C199.474 291.057 199.383 291.02 199.309 290.945C199.234 290.87 199.197 290.78 199.197 290.673V283.121C199.197 283.014 199.234 282.924 199.309 282.849C199.383 282.774 199.474 282.737 199.581 282.737H200.909C201.026 282.737 201.117 282.774 201.181 282.849C201.255 282.913 201.293 283.004 201.293 283.121V290.673C201.293 290.78 201.255 290.87 201.181 290.945C201.117 291.02 201.026 291.057 200.909 291.057H199.581ZM206.567 291.217C205.767 291.217 205.095 291.1 204.551 290.865C204.007 290.62 203.602 290.337 203.335 290.017C203.079 289.686 202.951 289.404 202.951 289.169C202.951 289.062 202.989 288.977 203.063 288.913C203.138 288.849 203.223 288.817 203.319 288.817H204.583C204.679 288.817 204.759 288.854 204.823 288.929C204.866 288.961 204.978 289.057 205.159 289.217C205.341 289.388 205.554 289.521 205.799 289.617C206.045 289.713 206.317 289.761 206.615 289.761C207.042 289.761 207.394 289.676 207.671 289.505C207.949 289.334 208.087 289.1 208.087 288.801C208.087 288.577 208.023 288.396 207.895 288.257C207.778 288.118 207.559 287.996 207.239 287.889C206.919 287.772 206.445 287.649 205.815 287.521C204.909 287.329 204.237 287.036 203.799 286.641C203.373 286.246 203.159 285.724 203.159 285.073C203.159 284.646 203.287 284.246 203.543 283.873C203.799 283.489 204.178 283.18 204.679 282.945C205.191 282.7 205.799 282.577 206.503 282.577C207.218 282.577 207.837 282.694 208.359 282.929C208.882 283.153 209.277 283.425 209.543 283.745C209.821 284.054 209.959 284.332 209.959 284.577C209.959 284.673 209.922 284.758 209.847 284.833C209.783 284.897 209.703 284.929 209.607 284.929H208.423C208.338 284.929 208.247 284.892 208.151 284.817C208.077 284.764 207.959 284.662 207.799 284.513C207.639 284.364 207.453 284.246 207.239 284.161C207.026 284.076 206.775 284.033 206.487 284.033C206.093 284.033 205.783 284.118 205.559 284.289C205.346 284.46 205.239 284.684 205.239 284.961C205.239 285.164 205.293 285.329 205.399 285.457C205.506 285.585 205.714 285.708 206.023 285.825C206.333 285.942 206.797 286.06 207.415 286.177C208.439 286.38 209.17 286.694 209.607 287.121C210.055 287.548 210.279 288.07 210.279 288.689C210.279 289.436 209.954 290.044 209.303 290.513C208.653 290.982 207.741 291.217 206.567 291.217ZM218.739 291.217C217.939 291.217 217.267 291.1 216.723 290.865C216.179 290.62 215.774 290.337 215.507 290.017C215.251 289.686 215.123 289.404 215.123 289.169C215.123 289.062 215.161 288.977 215.235 288.913C215.31 288.849 215.395 288.817 215.491 288.817H216.755C216.851 288.817 216.931 288.854 216.995 288.929C217.038 288.961 217.15 289.057 217.331 289.217C217.513 289.388 217.726 289.521 217.971 289.617C218.217 289.713 218.489 289.761 218.787 289.761C219.214 289.761 219.566 289.676 219.843 289.505C220.121 289.334 220.259 289.1 220.259 288.801C220.259 288.577 220.195 288.396 220.067 288.257C219.95 288.118 219.731 287.996 219.411 287.889C219.091 287.772 218.617 287.649 217.987 287.521C217.081 287.329 216.409 287.036 215.971 286.641C215.545 286.246 215.331 285.724 215.331 285.073C215.331 284.646 215.459 284.246 215.715 283.873C215.971 283.489 216.35 283.18 216.851 282.945C217.363 282.7 217.971 282.577 218.675 282.577C219.39 282.577 220.009 282.694 220.531 282.929C221.054 283.153 221.449 283.425 221.715 283.745C221.993 284.054 222.131 284.332 222.131 284.577C222.131 284.673 222.094 284.758 222.019 284.833C221.955 284.897 221.875 284.929 221.779 284.929H220.595C220.51 284.929 220.419 284.892 220.323 284.817C220.249 284.764 220.131 284.662 219.971 284.513C219.811 284.364 219.625 284.246 219.411 284.161C219.198 284.076 218.947 284.033 218.659 284.033C218.265 284.033 217.955 284.118 217.731 284.289C217.518 284.46 217.411 284.684 217.411 284.961C217.411 285.164 217.465 285.329 217.571 285.457C217.678 285.585 217.886 285.708 218.195 285.825C218.505 285.942 218.969 286.06 219.587 286.177C220.611 286.38 221.342 286.694 221.779 287.121C222.227 287.548 222.451 288.07 222.451 288.689C222.451 289.436 222.126 290.044 221.475 290.513C220.825 290.982 219.913 291.217 218.739 291.217ZM225.294 294.097C225.209 294.097 225.134 294.065 225.07 294.001C225.006 293.937 224.974 293.862 224.974 293.777C224.974 293.681 224.996 293.596 225.038 293.521L226.286 290.561L223.214 283.313C223.172 283.217 223.15 283.142 223.15 283.089C223.161 282.993 223.198 282.913 223.262 282.849C223.326 282.774 223.406 282.737 223.502 282.737H224.798C225.001 282.737 225.145 282.838 225.23 283.041L227.358 288.273L229.55 283.041C229.636 282.838 229.78 282.737 229.982 282.737H231.262C231.348 282.737 231.422 282.769 231.486 282.833C231.561 282.897 231.598 282.972 231.598 283.057C231.598 283.132 231.577 283.217 231.534 283.313L227.006 293.793C226.91 293.996 226.761 294.097 226.558 294.097H225.294ZM235.88 291.217C235.08 291.217 234.408 291.1 233.864 290.865C233.32 290.62 232.915 290.337 232.648 290.017C232.392 289.686 232.264 289.404 232.264 289.169C232.264 289.062 232.301 288.977 232.376 288.913C232.451 288.849 232.536 288.817 232.632 288.817H233.896C233.992 288.817 234.072 288.854 234.136 288.929C234.179 288.961 234.291 289.057 234.472 289.217C234.653 289.388 234.867 289.521 235.112 289.617C235.357 289.713 235.629 289.761 235.928 289.761C236.355 289.761 236.707 289.676 236.984 289.505C237.261 289.334 237.4 289.1 237.4 288.801C237.4 288.577 237.336 288.396 237.208 288.257C237.091 288.118 236.872 287.996 236.552 287.889C236.232 287.772 235.757 287.649 235.128 287.521C234.221 287.329 233.549 287.036 233.112 286.641C232.685 286.246 232.472 285.724 232.472 285.073C232.472 284.646 232.6 284.246 232.856 283.873C233.112 283.489 233.491 283.18 233.992 282.945C234.504 282.7 235.112 282.577 235.816 282.577C236.531 282.577 237.149 282.694 237.672 282.929C238.195 283.153 238.589 283.425 238.856 283.745C239.133 284.054 239.272 284.332 239.272 284.577C239.272 284.673 239.235 284.758 239.16 284.833C239.096 284.897 239.016 284.929 238.92 284.929H237.736C237.651 284.929 237.56 284.892 237.464 284.817C237.389 284.764 237.272 284.662 237.112 284.513C236.952 284.364 236.765 284.246 236.552 284.161C236.339 284.076 236.088 284.033 235.8 284.033C235.405 284.033 235.096 284.118 234.872 284.289C234.659 284.46 234.552 284.684 234.552 284.961C234.552 285.164 234.605 285.329 234.712 285.457C234.819 285.585 235.027 285.708 235.336 285.825C235.645 285.942 236.109 286.06 236.728 286.177C237.752 286.38 238.483 286.694 238.92 287.121C239.368 287.548 239.592 288.07 239.592 288.689C239.592 289.436 239.267 290.044 238.616 290.513C237.965 290.982 237.053 291.217 235.88 291.217ZM244.972 291.057C244.002 291.057 243.271 290.806 242.78 290.305C242.3 289.793 242.06 289.046 242.06 288.065V284.433H240.796C240.69 284.433 240.599 284.396 240.524 284.321C240.45 284.236 240.412 284.14 240.412 284.033V283.121C240.412 283.014 240.45 282.924 240.524 282.849C240.599 282.774 240.69 282.737 240.796 282.737H242.06V280.081C242.06 279.964 242.098 279.873 242.172 279.809C242.247 279.734 242.338 279.697 242.444 279.697H243.74C243.858 279.697 243.948 279.734 244.012 279.809C244.087 279.873 244.124 279.964 244.124 280.081V282.737H246.124C246.242 282.737 246.332 282.774 246.396 282.849C246.471 282.913 246.508 283.004 246.508 283.121V284.033C246.508 284.15 246.471 284.246 246.396 284.321C246.322 284.396 246.231 284.433 246.124 284.433H244.124V287.905C244.124 288.364 244.204 288.71 244.364 288.945C244.524 289.18 244.791 289.297 245.164 289.297H246.268C246.375 289.297 246.466 289.334 246.54 289.409C246.615 289.484 246.652 289.574 246.652 289.681V290.673C246.652 290.78 246.615 290.87 246.54 290.945C246.476 291.02 246.386 291.057 246.268 291.057H244.972ZM251.656 291.217C250.472 291.217 249.528 290.876 248.824 290.193C248.13 289.5 247.762 288.529 247.72 287.281L247.704 286.881L247.72 286.481C247.773 285.265 248.146 284.31 248.84 283.617C249.544 282.924 250.482 282.577 251.656 282.577C252.914 282.577 253.885 282.961 254.568 283.729C255.261 284.497 255.608 285.521 255.608 286.801V287.137C255.608 287.244 255.57 287.334 255.496 287.409C255.421 287.484 255.325 287.521 255.208 287.521H249.896V287.649C249.917 288.236 250.077 288.732 250.376 289.137C250.685 289.532 251.106 289.729 251.64 289.729C252.269 289.729 252.776 289.484 253.16 288.993C253.256 288.876 253.33 288.801 253.384 288.769C253.448 288.737 253.538 288.721 253.656 288.721H255.032C255.128 288.721 255.208 288.753 255.272 288.817C255.346 288.87 255.384 288.94 255.384 289.025C255.384 289.281 255.229 289.585 254.92 289.937C254.621 290.278 254.189 290.577 253.624 290.833C253.058 291.089 252.402 291.217 251.656 291.217ZM253.432 286.177V286.129C253.432 285.5 253.272 284.993 252.952 284.609C252.642 284.225 252.21 284.033 251.656 284.033C251.101 284.033 250.669 284.225 250.36 284.609C250.05 284.993 249.896 285.5 249.896 286.129V286.177H253.432ZM257.69 291.057C257.583 291.057 257.493 291.02 257.418 290.945C257.343 290.87 257.306 290.78 257.306 290.673V283.121C257.306 283.014 257.343 282.924 257.418 282.849C257.493 282.774 257.583 282.737 257.69 282.737H258.938C259.045 282.737 259.135 282.774 259.21 282.849C259.285 282.924 259.322 283.014 259.322 283.121V283.665C259.877 282.94 260.65 282.577 261.642 282.577C262.826 282.577 263.653 283.052 264.122 284.001C264.378 283.574 264.741 283.233 265.21 282.977C265.679 282.71 266.186 282.577 266.73 282.577C267.605 282.577 268.319 282.876 268.874 283.473C269.429 284.07 269.706 284.94 269.706 286.081V290.673C269.706 290.78 269.669 290.87 269.594 290.945C269.53 291.02 269.439 291.057 269.322 291.057H268.01C267.903 291.057 267.813 291.02 267.738 290.945C267.663 290.87 267.626 290.78 267.626 290.673V286.209C267.626 285.537 267.482 285.052 267.194 284.753C266.917 284.444 266.543 284.289 266.074 284.289C265.658 284.289 265.301 284.444 265.002 284.753C264.714 285.062 264.57 285.548 264.57 286.209V290.673C264.57 290.78 264.533 290.87 264.458 290.945C264.383 291.02 264.293 291.057 264.186 291.057H262.874C262.767 291.057 262.677 291.02 262.602 290.945C262.527 290.87 262.49 290.78 262.49 290.673V286.209C262.49 285.537 262.341 285.052 262.042 284.753C261.754 284.444 261.386 284.289 260.938 284.289C260.511 284.289 260.149 284.444 259.85 284.753C259.562 285.062 259.418 285.548 259.418 286.209V290.673C259.418 290.78 259.381 290.87 259.306 290.945C259.231 291.02 259.141 291.057 259.034 291.057H257.69ZM275.72 281.361C275.613 281.361 275.522 281.324 275.448 281.249C275.373 281.174 275.336 281.084 275.336 280.977V279.825C275.336 279.718 275.373 279.628 275.448 279.553C275.522 279.478 275.613 279.441 275.72 279.441H277.176C277.282 279.441 277.373 279.478 277.448 279.553C277.533 279.628 277.576 279.718 277.576 279.825V280.977C277.576 281.084 277.538 281.174 277.464 281.249C277.389 281.324 277.293 281.361 277.176 281.361H275.72ZM275.784 291.057C275.677 291.057 275.586 291.02 275.512 290.945C275.437 290.87 275.4 290.78 275.4 290.673V283.121C275.4 283.014 275.437 282.924 275.512 282.849C275.586 282.774 275.677 282.737 275.784 282.737H277.112C277.229 282.737 277.32 282.774 277.384 282.849C277.458 282.913 277.496 283.004 277.496 283.121V290.673C277.496 290.78 277.458 290.87 277.384 290.945C277.32 291.02 277.229 291.057 277.112 291.057H275.784ZM282.771 291.217C281.971 291.217 281.299 291.1 280.755 290.865C280.211 290.62 279.805 290.337 279.539 290.017C279.283 289.686 279.155 289.404 279.155 289.169C279.155 289.062 279.192 288.977 279.267 288.913C279.341 288.849 279.427 288.817 279.523 288.817H280.787C280.883 288.817 280.963 288.854 281.027 288.929C281.069 288.961 281.181 289.057 281.363 289.217C281.544 289.388 281.757 289.521 282.003 289.617C282.248 289.713 282.52 289.761 282.819 289.761C283.245 289.761 283.597 289.676 283.875 289.505C284.152 289.334 284.291 289.1 284.291 288.801C284.291 288.577 284.227 288.396 284.099 288.257C283.981 288.118 283.763 287.996 283.443 287.889C283.123 287.772 282.648 287.649 282.019 287.521C281.112 287.329 280.44 287.036 280.003 286.641C279.576 286.246 279.363 285.724 279.363 285.073C279.363 284.646 279.491 284.246 279.747 283.873C280.003 283.489 280.381 283.18 280.883 282.945C281.395 282.7 282.003 282.577 282.707 282.577C283.421 282.577 284.04 282.694 284.563 282.929C285.085 283.153 285.48 283.425 285.747 283.745C286.024 284.054 286.163 284.332 286.163 284.577C286.163 284.673 286.125 284.758 286.051 284.833C285.987 284.897 285.907 284.929 285.811 284.929H284.627C284.541 284.929 284.451 284.892 284.355 284.817C284.28 284.764 284.163 284.662 284.003 284.513C283.843 284.364 283.656 284.246 283.443 284.161C283.229 284.076 282.979 284.033 282.691 284.033C282.296 284.033 281.987 284.118 281.763 284.289C281.549 284.46 281.443 284.684 281.443 284.961C281.443 285.164 281.496 285.329 281.603 285.457C281.709 285.585 281.917 285.708 282.227 285.825C282.536 285.942 283 286.06 283.619 286.177C284.643 286.38 285.373 286.694 285.811 287.121C286.259 287.548 286.483 288.07 286.483 288.689C286.483 289.436 286.157 290.044 285.507 290.513C284.856 290.982 283.944 291.217 282.771 291.217ZM292.174 291.057C292.068 291.057 291.977 291.02 291.902 290.945C291.828 290.87 291.79 290.78 291.79 290.673V283.121C291.79 283.014 291.828 282.924 291.902 282.849C291.977 282.774 292.068 282.737 292.174 282.737H293.486C293.593 282.737 293.684 282.774 293.758 282.849C293.833 282.924 293.87 283.014 293.87 283.121V283.777C294.5 282.977 295.39 282.577 296.542 282.577C297.524 282.577 298.302 282.902 298.878 283.553C299.454 284.193 299.742 285.068 299.742 286.177V290.673C299.742 290.78 299.705 290.87 299.63 290.945C299.566 291.02 299.476 291.057 299.358 291.057H297.95C297.844 291.057 297.753 291.02 297.678 290.945C297.604 290.87 297.566 290.78 297.566 290.673V286.273C297.566 285.644 297.412 285.158 297.102 284.817C296.804 284.465 296.366 284.289 295.79 284.289C295.225 284.289 294.777 284.465 294.446 284.817C294.126 285.169 293.966 285.654 293.966 286.273V290.673C293.966 290.78 293.929 290.87 293.854 290.945C293.79 291.02 293.7 291.057 293.582 291.057H292.174ZM305.455 291.217C304.207 291.217 303.241 290.897 302.559 290.257C301.876 289.606 301.508 288.721 301.455 287.601L301.439 286.897L301.455 286.193C301.508 285.084 301.881 284.204 302.575 283.553C303.268 282.902 304.228 282.577 305.455 282.577C306.681 282.577 307.641 282.902 308.335 283.553C309.028 284.204 309.401 285.084 309.455 286.193C309.465 286.321 309.471 286.556 309.471 286.897C309.471 287.238 309.465 287.473 309.455 287.601C309.401 288.721 309.033 289.606 308.351 290.257C307.668 290.897 306.703 291.217 305.455 291.217ZM305.455 289.633C306.02 289.633 306.457 289.457 306.767 289.105C307.076 288.742 307.247 288.214 307.279 287.521C307.289 287.414 307.295 287.206 307.295 286.897C307.295 286.588 307.289 286.38 307.279 286.273C307.247 285.58 307.076 285.057 306.767 284.705C306.457 284.342 306.02 284.161 305.455 284.161C304.889 284.161 304.452 284.342 304.143 284.705C303.833 285.057 303.663 285.58 303.631 286.273L303.615 286.897L303.631 287.521C303.663 288.214 303.833 288.742 304.143 289.105C304.452 289.457 304.889 289.633 305.455 289.633ZM314.941 291.057C313.97 291.057 313.24 290.806 312.749 290.305C312.269 289.793 312.029 289.046 312.029 288.065V284.433H310.765C310.658 284.433 310.568 284.396 310.493 284.321C310.418 284.236 310.381 284.14 310.381 284.033V283.121C310.381 283.014 310.418 282.924 310.493 282.849C310.568 282.774 310.658 282.737 310.765 282.737H312.029V280.081C312.029 279.964 312.066 279.873 312.141 279.809C312.216 279.734 312.306 279.697 312.413 279.697H313.709C313.826 279.697 313.917 279.734 313.981 279.809C314.056 279.873 314.093 279.964 314.093 280.081V282.737H316.093C316.21 282.737 316.301 282.774 316.365 282.849C316.44 282.913 316.477 283.004 316.477 283.121V284.033C316.477 284.15 316.44 284.246 316.365 284.321C316.29 284.396 316.2 284.433 316.093 284.433H314.093V287.905C314.093 288.364 314.173 288.71 314.333 288.945C314.493 289.18 314.76 289.297 315.133 289.297H316.237C316.344 289.297 316.434 289.334 316.509 289.409C316.584 289.484 316.621 289.574 316.621 289.681V290.673C316.621 290.78 316.584 290.87 316.509 290.945C316.445 291.02 316.354 291.057 316.237 291.057H314.941ZM324.785 291.217C323.707 291.217 322.881 290.87 322.305 290.177C321.729 289.484 321.419 288.561 321.377 287.409L321.361 286.881L321.377 286.369C321.409 285.249 321.713 284.337 322.289 283.633C322.875 282.929 323.707 282.577 324.785 282.577C325.819 282.577 326.641 282.929 327.249 283.633V280.081C327.249 279.964 327.286 279.873 327.361 279.809C327.435 279.734 327.526 279.697 327.633 279.697H328.993C329.11 279.697 329.201 279.734 329.265 279.809C329.339 279.873 329.377 279.964 329.377 280.081V290.673C329.377 290.78 329.339 290.87 329.265 290.945C329.201 291.02 329.11 291.057 328.993 291.057H327.729C327.622 291.057 327.531 291.02 327.457 290.945C327.382 290.87 327.345 290.78 327.345 290.673V290.081C326.737 290.838 325.883 291.217 324.785 291.217ZM325.377 289.505C325.995 289.505 326.454 289.308 326.753 288.913C327.051 288.518 327.217 288.033 327.249 287.457C327.259 287.329 327.265 287.121 327.265 286.833C327.265 286.556 327.259 286.353 327.249 286.225C327.227 285.692 327.057 285.238 326.737 284.865C326.427 284.481 325.974 284.289 325.377 284.289C324.225 284.289 323.611 284.998 323.537 286.417L323.521 286.897L323.537 287.377C323.611 288.796 324.225 289.505 325.377 289.505ZM335.093 291.217C333.909 291.217 332.965 290.876 332.261 290.193C331.568 289.5 331.2 288.529 331.157 287.281L331.141 286.881L331.157 286.481C331.21 285.265 331.584 284.31 332.277 283.617C332.981 282.924 333.92 282.577 335.093 282.577C336.352 282.577 337.322 282.961 338.005 283.729C338.698 284.497 339.045 285.521 339.045 286.801V287.137C339.045 287.244 339.008 287.334 338.933 287.409C338.858 287.484 338.762 287.521 338.645 287.521H333.333V287.649C333.354 288.236 333.514 288.732 333.813 289.137C334.122 289.532 334.544 289.729 335.077 289.729C335.706 289.729 336.213 289.484 336.597 288.993C336.693 288.876 336.768 288.801 336.821 288.769C336.885 288.737 336.976 288.721 337.093 288.721H338.469C338.565 288.721 338.645 288.753 338.709 288.817C338.784 288.87 338.821 288.94 338.821 289.025C338.821 289.281 338.666 289.585 338.357 289.937C338.058 290.278 337.626 290.577 337.061 290.833C336.496 291.089 335.84 291.217 335.093 291.217ZM336.869 286.177V286.129C336.869 285.5 336.709 284.993 336.389 284.609C336.08 284.225 335.648 284.033 335.093 284.033C334.538 284.033 334.106 284.225 333.797 284.609C333.488 284.993 333.333 285.5 333.333 286.129V286.177H336.869ZM341.945 291.057C341.839 291.057 341.748 291.02 341.673 290.945C341.599 290.87 341.561 290.78 341.561 290.673V284.433H340.265C340.159 284.433 340.068 284.396 339.993 284.321C339.919 284.236 339.881 284.14 339.881 284.033V283.121C339.881 283.014 339.919 282.924 339.993 282.849C340.068 282.774 340.159 282.737 340.265 282.737H341.561V282.081C341.561 280.172 342.607 279.217 344.697 279.217H345.785C345.903 279.217 345.993 279.254 346.057 279.329C346.132 279.393 346.169 279.484 346.169 279.601V280.513C346.169 280.63 346.132 280.726 346.057 280.801C345.983 280.876 345.892 280.913 345.785 280.913H344.761C344.345 280.913 344.052 281.014 343.881 281.217C343.721 281.42 343.641 281.734 343.641 282.161V282.737H345.625C345.743 282.737 345.833 282.774 345.897 282.849C345.972 282.913 346.009 283.004 346.009 283.121V284.033C346.009 284.15 345.972 284.246 345.897 284.321C345.823 284.396 345.732 284.433 345.625 284.433H343.641V290.673C343.641 290.78 343.604 290.87 343.529 290.945C343.455 291.02 343.364 291.057 343.257 291.057H341.945ZM347.61 281.361C347.504 281.361 347.413 281.324 347.338 281.249C347.264 281.174 347.226 281.084 347.226 280.977V279.825C347.226 279.718 347.264 279.628 347.338 279.553C347.413 279.478 347.504 279.441 347.61 279.441H349.066C349.173 279.441 349.264 279.478 349.338 279.553C349.424 279.628 349.466 279.718 349.466 279.825V280.977C349.466 281.084 349.429 281.174 349.354 281.249C349.28 281.324 349.184 281.361 349.066 281.361H347.61ZM347.674 291.057C347.568 291.057 347.477 291.02 347.402 290.945C347.328 290.87 347.29 290.78 347.29 290.673V283.121C347.29 283.014 347.328 282.924 347.402 282.849C347.477 282.774 347.568 282.737 347.674 282.737H349.002C349.12 282.737 349.21 282.774 349.274 282.849C349.349 282.913 349.386 283.004 349.386 283.121V290.673C349.386 290.78 349.349 290.87 349.274 290.945C349.21 291.02 349.12 291.057 349.002 291.057H347.674ZM351.893 291.057C351.786 291.057 351.696 291.02 351.621 290.945C351.546 290.87 351.509 290.78 351.509 290.673V283.121C351.509 283.014 351.546 282.924 351.621 282.849C351.696 282.774 351.786 282.737 351.893 282.737H353.205C353.312 282.737 353.402 282.774 353.477 282.849C353.552 282.924 353.589 283.014 353.589 283.121V283.777C354.218 282.977 355.109 282.577 356.261 282.577C357.242 282.577 358.021 282.902 358.597 283.553C359.173 284.193 359.461 285.068 359.461 286.177V290.673C359.461 290.78 359.424 290.87 359.349 290.945C359.285 291.02 359.194 291.057 359.077 291.057H357.669C357.562 291.057 357.472 291.02 357.397 290.945C357.322 290.87 357.285 290.78 357.285 290.673V286.273C357.285 285.644 357.13 285.158 356.821 284.817C356.522 284.465 356.085 284.289 355.509 284.289C354.944 284.289 354.496 284.465 354.165 284.817C353.845 285.169 353.685 285.654 353.685 286.273V290.673C353.685 290.78 353.648 290.87 353.573 290.945C353.509 291.02 353.418 291.057 353.301 291.057H351.893ZM365.078 291.217C363.894 291.217 362.95 290.876 362.246 290.193C361.552 289.5 361.184 288.529 361.142 287.281L361.126 286.881L361.142 286.481C361.195 285.265 361.568 284.31 362.262 283.617C362.966 282.924 363.904 282.577 365.078 282.577C366.336 282.577 367.307 282.961 367.99 283.729C368.683 284.497 369.03 285.521 369.03 286.801V287.137C369.03 287.244 368.992 287.334 368.918 287.409C368.843 287.484 368.747 287.521 368.63 287.521H363.318V287.649C363.339 288.236 363.499 288.732 363.798 289.137C364.107 289.532 364.528 289.729 365.062 289.729C365.691 289.729 366.198 289.484 366.582 288.993C366.678 288.876 366.752 288.801 366.806 288.769C366.87 288.737 366.96 288.721 367.078 288.721H368.454C368.55 288.721 368.63 288.753 368.694 288.817C368.768 288.87 368.806 288.94 368.806 289.025C368.806 289.281 368.651 289.585 368.342 289.937C368.043 290.278 367.611 290.577 367.046 290.833C366.48 291.089 365.824 291.217 365.078 291.217ZM366.854 286.177V286.129C366.854 285.5 366.694 284.993 366.374 284.609C366.064 284.225 365.632 284.033 365.078 284.033C364.523 284.033 364.091 284.225 363.782 284.609C363.472 284.993 363.318 285.5 363.318 286.129V286.177H366.854ZM373.816 291.217C372.739 291.217 371.912 290.87 371.336 290.177C370.76 289.484 370.451 288.561 370.408 287.409L370.392 286.881L370.408 286.369C370.44 285.249 370.744 284.337 371.32 283.633C371.907 282.929 372.739 282.577 373.816 282.577C374.851 282.577 375.672 282.929 376.28 283.633V280.081C376.28 279.964 376.317 279.873 376.392 279.809C376.467 279.734 376.557 279.697 376.664 279.697H378.024C378.141 279.697 378.232 279.734 378.296 279.809C378.371 279.873 378.408 279.964 378.408 280.081V290.673C378.408 290.78 378.371 290.87 378.296 290.945C378.232 291.02 378.141 291.057 378.024 291.057H376.76C376.653 291.057 376.563 291.02 376.488 290.945C376.413 290.87 376.376 290.78 376.376 290.673V290.081C375.768 290.838 374.915 291.217 373.816 291.217ZM374.408 289.505C375.027 289.505 375.485 289.308 375.784 288.913C376.083 288.518 376.248 288.033 376.28 287.457C376.291 287.329 376.296 287.121 376.296 286.833C376.296 286.556 376.291 286.353 376.28 286.225C376.259 285.692 376.088 285.238 375.768 284.865C375.459 284.481 375.005 284.289 374.408 284.289C373.256 284.289 372.643 284.998 372.568 286.417L372.552 286.897L372.568 287.377C372.643 288.796 373.256 289.505 374.408 289.505Z\",\n fill: \"#93C4E7\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M310.744 170.195L300.473 205.349C301.149 211.133 310.421 208.426 314.973 206.35C316.46 197.786 319.721 179.781 320.859 176.273C321.998 172.765 314.591 170.76 310.744 170.195Z\",\n fill: \"#C3DFF1\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M209.439 144.15L200.935 192.649L172.551 188.224C172.205 185.66 170.398 180.455 165.936 180.147C161.475 179.839 156.077 174.684 153.937 172.146C155.578 165.684 158.738 151.946 158.246 148.684C157.754 145.423 163.17 142.3 165.939 141.147C167.887 143.224 172.423 146.57 174.977 143.34C177.531 140.109 181.503 138.635 183.17 138.302L209.439 144.15Z\",\n fill: \"#C3DFF1\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M158.595 148.49C159.566 143.898 164.078 140.962 168.67 141.934L172.823 142.813L165.095 179.328L160.942 178.449C156.35 177.477 153.415 172.966 154.387 168.373L158.595 148.49Z\",\n stroke: \"#93C4E7\",\n strokeWidth: 5\n })), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M175.081 145.085C176.052 140.492 180.564 137.557 185.156 138.529L206.106 142.963L195.627 192.478L174.677 188.044C170.084 187.072 167.149 182.561 168.121 177.969L175.081 145.085Z\",\n stroke: \"#93C4E7\",\n strokeWidth: 5\n })), _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n x: 209.301,\n y: 139.713,\n width: 4.70866,\n height: 58.1065,\n rx: 2.35433,\n transform: \"rotate(11.3206 209.301 139.713)\",\n stroke: \"#93C4E7\",\n strokeWidth: 4.70866\n })), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M154.548 154.342L152.844 161.879L140.375 159.059C138.294 158.588 136.989 156.519 137.459 154.438C137.93 152.357 139.999 151.052 142.08 151.522L154.548 154.342Z\",\n fill: \"#93C4E7\",\n stroke: \"#93C4E7\",\n strokeWidth: 5\n })), _rect2 || (_rect2 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 166.426,\n y: 150.52,\n width: 2.09158,\n height: 19.2568,\n rx: 1.04579,\n transform: \"rotate(11.6574 166.426 150.52)\",\n fill: \"#93C4E7\",\n stroke: \"#93C4E7\"\n })), _path7 || (_path7 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M281.976 158.347L302.476 163.349L293.972 211.848C290.806 211.181 282.388 209.524 274.049 208.231C265.711 206.938 263.55 201.23 263.512 198.538C264.679 191.372 267.76 174.669 270.745 165.193C273.73 155.716 279.476 156.68 281.976 158.347Z\",\n fill: \"#C3DFF1\"\n })), _path8 || (_path8 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M316.745 201.36C315.773 205.952 311.261 208.888 306.669 207.916L302.516 207.037L310.244 170.522L314.397 171.401C318.989 172.373 321.924 176.884 320.953 181.477L316.745 201.36Z\",\n stroke: \"#93C4E7\",\n strokeWidth: 5\n })), _path9 || (_path9 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M271.137 164.331C272.138 159.745 276.668 156.838 281.254 157.839L302.175 162.405L291.384 211.853L270.462 207.287C265.876 206.286 262.969 201.757 263.97 197.17L271.137 164.331Z\",\n stroke: \"#93C4E7\",\n strokeWidth: 5\n })), _rect3 || (_rect3 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 300.075,\n y: 219.612,\n width: 9.41731,\n height: 62.8151,\n rx: 4.70866,\n transform: \"rotate(-168.679 300.075 219.612)\",\n fill: \"#93C4E7\"\n })), _path10 || (_path10 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M272.432 160.042L270.29 169.213L248.953 164.228C246.421 163.637 244.848 161.104 245.439 158.572C246.031 156.039 248.563 154.466 251.096 155.058L272.432 160.042Z\",\n fill: \"#93C4E7\"\n })), _path11 || (_path11 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M264.592 193.222L262.45 202.393L241.113 197.408C238.581 196.816 237.008 194.284 237.599 191.751C238.191 189.219 240.724 187.646 243.256 188.237L264.592 193.222Z\",\n fill: \"#93C4E7\"\n })), _path12 || (_path12 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M417.801 205.006L420.231 204.42L420.19 204.251L420.126 204.089L417.801 205.006ZM436.453 239.965C437.748 240.443 439.185 239.781 439.664 238.486C440.142 237.19 439.479 235.753 438.184 235.275L436.453 239.965ZM332.227 200.827C341.733 202.988 365.612 204.991 385.629 195.583L383.503 191.058C364.875 199.813 342.25 197.978 333.335 195.951L332.227 200.827ZM385.629 195.583C394.621 191.357 401.317 192.389 406.07 195.058C410.973 197.811 414.12 202.486 415.475 205.923L420.126 204.089C418.454 199.846 414.646 194.139 408.518 190.698C402.242 187.174 393.834 186.203 383.503 191.058L385.629 195.583ZM415.37 205.591C416.525 210.386 418.905 217.786 422.332 224.516C424.046 227.883 426.058 231.152 428.36 233.857C430.649 236.546 433.342 238.817 436.453 239.965L438.184 235.275C436.175 234.533 434.149 232.944 432.168 230.616C430.2 228.304 428.392 225.399 426.787 222.247C423.575 215.938 421.316 208.922 420.231 204.42L415.37 205.591Z\",\n fill: \"#93C4E7\"\n })), _path13 || (_path13 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M374.459 189.484L373.556 187.153L374.459 189.484ZM415.226 191.27C416.181 192.268 417.763 192.303 418.761 191.349C419.759 190.394 419.794 188.812 418.84 187.814L415.226 191.27ZM334.479 193.352C338.271 194.307 344.754 195.347 352.111 195.451C359.457 195.554 367.85 194.726 375.362 191.815L373.556 187.153C366.857 189.749 359.167 190.549 352.181 190.451C345.206 190.353 339.11 189.362 335.7 188.503L334.479 193.352ZM375.362 191.815C384.225 188.38 392.042 185.898 398.79 185.485C405.409 185.08 410.825 186.667 415.226 191.27L418.84 187.814C413.189 181.905 406.199 180.022 398.485 180.494C390.899 180.959 382.455 183.704 373.556 187.153L375.362 191.815Z\",\n fill: \"#93C4E7\"\n })), _path14 || (_path14 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M320.791 195.507L322.495 187.971L334.964 190.791C337.045 191.262 338.35 193.33 337.88 195.412C337.409 197.493 335.34 198.798 333.259 198.327L320.791 195.507Z\",\n stroke: \"#93C4E7\",\n strokeWidth: 5\n })), _path15 || (_path15 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M320.858 195.773L322.32 187.581L329.589 189.427L337.243 192.197C337.204 193.838 336.758 197.274 335.281 197.889C333.804 198.505 325.05 196.735 320.858 195.773Z\",\n fill: \"#93C4E7\"\n })), _path16 || (_path16 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M82.7741 108.769C83.583 107.65 83.3317 106.087 82.2128 105.278C81.0939 104.469 79.531 104.721 78.7221 105.84L82.7741 108.769ZM140.749 148.959C125.941 148.431 105.452 145.601 91.7101 139.016C84.8147 135.711 80.0801 131.681 78.2486 126.972C76.4892 122.448 77.1445 116.556 82.7741 108.769L78.7221 105.84C72.5067 114.437 70.9983 122.124 73.5886 128.784C76.107 135.259 82.2357 140.02 89.5494 143.525C104.225 150.557 125.538 153.42 140.571 153.956L140.749 148.959Z\",\n fill: \"#93C4E7\"\n })), _path17 || (_path17 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M72.7959 114.009C73.6048 112.89 73.3535 111.327 72.2346 110.518C71.1157 109.709 69.5528 109.961 68.7439 111.08L72.7959 114.009ZM140.755 156.487C126.002 155.961 102.957 152.571 86.6538 145.367C78.4518 141.743 72.4123 137.35 69.7041 132.295C67.1607 127.547 67.2741 121.647 72.7959 114.009L68.7439 111.08C62.4207 119.826 61.6183 127.79 65.2967 134.656C68.8103 141.214 76.1301 146.184 84.633 149.941C101.74 157.5 125.488 160.946 140.577 161.484L140.755 156.487Z\",\n fill: \"#93C4E7\"\n })), _rect4 || (_rect4 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 211.878,\n y: 111.165,\n width: 2.85659,\n height: 20.4722,\n rx: 1.4283,\n transform: \"rotate(-22.6158 211.878 111.165)\",\n fill: \"#93C4E7\"\n })), _rect5 || (_rect5 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 265.405,\n y: 238.765,\n width: 2.85659,\n height: 20.4722,\n rx: 1.4283,\n transform: \"rotate(157.384 265.405 238.765)\",\n fill: \"#93C4E7\"\n })), _rect6 || (_rect6 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 237.309,\n y: 105.728,\n width: 2.85659,\n height: 20.4722,\n rx: 1.4283,\n transform: \"rotate(-1.20388 237.309 105.728)\",\n fill: \"#93C4E7\"\n })), _rect7 || (_rect7 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 239.974,\n y: 244.201,\n width: 2.85659,\n height: 20.4722,\n rx: 1.4283,\n transform: \"rotate(178.796 239.974 244.201)\",\n fill: \"#93C4E7\"\n })), _rect8 || (_rect8 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 262.109,\n y: 109.838,\n width: 2.85659,\n height: 20.4722,\n rx: 1.4283,\n transform: \"rotate(18.8334 262.109 109.838)\",\n fill: \"#93C4E7\"\n })), _rect9 || (_rect9 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 215.174,\n y: 240.092,\n width: 2.85659,\n height: 20.4722,\n rx: 1.4283,\n transform: \"rotate(-161.167 215.174 240.092)\",\n fill: \"#93C4E7\"\n })), _rect10 || (_rect10 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 283.532,\n y: 123.607,\n width: 2.85659,\n height: 20.4722,\n rx: 1.4283,\n transform: \"rotate(39.1351 283.532 123.607)\",\n fill: \"#93C4E7\"\n })), _rect11 || (_rect11 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 193.751,\n y: 226.323,\n width: 2.85659,\n height: 20.4722,\n rx: 1.4283,\n transform: \"rotate(-140.865 193.751 226.323)\",\n fill: \"#93C4E7\"\n })), _path18 || (_path18 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M306.997 95.0571L311.95 104.107L321 109.06L311.95 114.007L306.997 123.057L302.05 114.007L293 109.06L302.05 104.107L306.997 95.0571Z\",\n fill: \"#FFAB2B\"\n })), _path19 || (_path19 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M341.498 146.057L344.505 151.552L350 154.559L344.505 157.562L341.498 163.057L338.495 157.562L333 154.559L338.495 151.552L341.498 146.057Z\",\n fill: \"#C3DFF1\"\n })), _path20 || (_path20 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M157.998 209.057L161.889 216.168L169 220.059L161.889 223.946L157.998 231.057L154.111 223.946L147 220.059L154.111 216.168L157.998 209.057Z\",\n fill: \"#FFAB2B\"\n })), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"filter\", {\n id: \"filter0_d\",\n x: 0,\n y: 112.057,\n width: 446,\n height: 206,\n filterUnits: \"userSpaceOnUse\",\n colorInterpolationFilters: \"sRGB\"\n }, /*#__PURE__*/React.createElement(\"feFlood\", {\n floodOpacity: 0,\n result: \"BackgroundImageFix\"\n }), /*#__PURE__*/React.createElement(\"feColorMatrix\", {\n in: \"SourceAlpha\",\n type: \"matrix\",\n values: \"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\",\n result: \"hardAlpha\"\n }), /*#__PURE__*/React.createElement(\"feOffset\", null), /*#__PURE__*/React.createElement(\"feGaussianBlur\", {\n stdDeviation: 1.5\n }), /*#__PURE__*/React.createElement(\"feColorMatrix\", {\n type: \"matrix\",\n values: \"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.03 0\"\n }), /*#__PURE__*/React.createElement(\"feBlend\", {\n mode: \"normal\",\n in2: \"BackgroundImageFix\",\n result: \"effect1_dropShadow\"\n }), /*#__PURE__*/React.createElement(\"feBlend\", {\n mode: \"normal\",\n in: \"SourceGraphic\",\n in2: \"effect1_dropShadow\",\n result: \"shape\"\n })))));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgEmptyState);\nexport default __webpack_public_path__ + \"static/media/EmptyState.3de9d383.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgPrinterNotReportedIcon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 44,\n height: 44,\n viewBox: \"0 0 44 44\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M43.7858 2.27418L41.7256 0.214006C41.4948 -0.0162605 41.1399 -0.066616 40.8544 0.0917836L34.4431 3.64942C34.1952 3.78728 34.0491 4.05617 34.0691 4.33924L34.2324 6.67172L23.228 17.6756L17.0211 11.4687C18.0854 8.35594 17.3027 4.90733 14.9551 2.55969C12.6373 0.241872 9.26491 -0.564792 6.15265 0.455027C6.14141 0.458938 6.13163 0.464805 6.12087 0.469205C6.10963 0.473605 6.09936 0.478982 6.08812 0.483871C6.00696 0.51956 5.9351 0.566982 5.87447 0.626138C5.87105 0.628582 5.86665 0.62956 5.86372 0.632493C5.85932 0.636893 5.85834 0.642271 5.85443 0.646671C5.7943 0.709737 5.74639 0.781604 5.71216 0.860804C5.70727 0.871559 5.70385 0.881826 5.69945 0.892581C5.67061 0.969337 5.65447 1.05 5.65252 1.13311C5.65203 1.14485 5.65252 1.1556 5.65301 1.16685C5.65496 1.23627 5.66278 1.30667 5.68576 1.37609C5.68967 1.38734 5.69554 1.39711 5.69994 1.40787C5.70434 1.41911 5.70972 1.42938 5.71461 1.44062C5.7503 1.52129 5.79772 1.59316 5.85638 1.65378C5.85981 1.6572 5.8603 1.6616 5.86372 1.66502L9.21602 5.01781C9.53135 5.33266 9.70491 5.75066 9.70491 6.19506C9.70491 6.63897 9.53233 7.05599 9.21846 7.36985L7.53718 9.05114C7.2238 9.365 6.80678 9.53758 6.36336 9.53758C5.91896 9.53758 5.50047 9.36354 5.18514 9.04869L1.83284 5.69639C1.82942 5.69297 1.82502 5.69199 1.8216 5.68906C1.76097 5.63039 1.68911 5.58297 1.60844 5.54777C1.5972 5.54288 1.58644 5.5375 1.57471 5.5331C1.56346 5.5287 1.55368 5.52235 1.54244 5.51892C1.47351 5.49644 1.4036 5.48812 1.33417 5.48617C1.32244 5.48568 1.31169 5.48519 1.30044 5.48568C1.21733 5.48764 1.13715 5.50377 1.06089 5.53212C1.04915 5.53652 1.0384 5.54044 1.02715 5.54532C0.948931 5.57955 0.877553 5.62697 0.814976 5.68612C0.810576 5.69052 0.80422 5.69199 0.79982 5.69639C0.795909 5.7003 0.794931 5.70519 0.791998 5.70861C0.733331 5.76875 0.686398 5.84012 0.650709 5.92079C0.64582 5.93252 0.639954 5.94328 0.635554 5.95501C0.631154 5.96626 0.625287 5.97555 0.621376 5.98728C-0.395021 9.101 0.411155 12.4738 2.72604 14.7887C4.38337 16.4461 6.58923 17.3256 8.83958 17.3256C9.7758 17.3256 10.7184 17.1632 11.6336 16.8508L15.8092 21.0269C15.7133 21.0162 15.619 20.9986 15.5207 20.9986C14.827 20.9986 14.1743 21.2689 13.684 21.7593L0.760709 34.683C0.270355 35.1739 0 35.826 0 36.5198C0 37.2135 0.270355 37.8657 0.760709 38.3565L5.64372 43.2395C6.13407 43.7294 6.78625 43.9998 7.48047 43.9998C8.1742 43.9998 8.82638 43.7294 9.31722 43.239L22.241 30.3153C22.7313 29.8249 23.0017 29.1723 23.0017 28.4786C23.0017 28.3808 22.9841 28.2859 22.9733 28.1901L27.145 32.3618C26.0807 35.4765 26.8639 38.9261 29.212 41.2737C30.8649 42.9271 33.0576 43.811 35.3099 43.811C36.2114 43.811 37.1232 43.6693 38.0135 43.3784C38.0252 43.3745 38.0345 43.3681 38.0457 43.3642C38.057 43.3598 38.0672 43.3544 38.0785 43.3495C38.1596 43.3138 38.2315 43.2664 38.2921 43.2078C38.2955 43.2048 38.2999 43.2038 38.3029 43.2004C38.3073 43.196 38.3083 43.1906 38.3122 43.1862C38.3718 43.1232 38.4197 43.0518 38.4539 42.9726C38.4588 42.9618 38.4627 42.9511 38.4667 42.9403C38.4955 42.8641 38.5116 42.7834 38.5136 42.6998C38.5141 42.6881 38.5136 42.6773 38.5131 42.6656C38.5111 42.5962 38.5033 42.5262 38.4803 42.4573C38.4764 42.4461 38.4701 42.4363 38.4662 42.425C38.4618 42.4138 38.4564 42.403 38.4515 42.3918C38.4158 42.3106 38.3684 42.2388 38.3097 42.1782C38.3068 42.1747 38.3058 42.1708 38.3024 42.1674L34.9501 38.8151C34.3008 38.1659 34.2999 37.1104 34.9476 36.4626L36.6289 34.7813C37.2772 34.1335 38.3322 34.135 38.9815 34.7837L42.3338 38.136C42.3367 38.139 42.3411 38.1399 42.3445 38.1429C42.4051 38.2015 42.4775 38.2495 42.5582 38.2851C42.5694 38.29 42.5797 38.2954 42.5909 38.2998C42.6017 38.3042 42.6114 38.3101 42.6227 38.314C42.6985 38.3389 42.7747 38.3507 42.8505 38.3507C42.938 38.3507 43.0216 38.3311 43.1018 38.3013C43.1258 38.2925 43.1463 38.2788 43.1693 38.2675C43.227 38.2392 43.2798 38.2045 43.3286 38.1615C43.3404 38.1512 43.3555 38.1473 43.3668 38.136C43.377 38.1258 43.38 38.1121 43.3898 38.1018C43.4318 38.0549 43.465 38.0026 43.4944 37.9444C43.5066 37.9195 43.5227 37.8975 43.532 37.8715C43.5354 37.8627 43.5418 37.8559 43.5447 37.8471C44.5646 34.7353 43.7579 31.3625 41.4401 29.0447C39.0929 26.6975 35.6438 25.9148 32.5311 26.9786L26.3242 20.7717L37.3285 9.76736L39.661 9.93065C39.6781 9.93162 39.6952 9.93211 39.7123 9.93211C39.9763 9.93211 40.2213 9.78936 40.3508 9.55616L43.9085 3.14489C44.0664 2.86035 44.0165 2.50444 43.7858 2.27418ZM12.3591 15.5093C12.1581 15.2962 11.8413 15.2155 11.5534 15.3324C8.86793 16.4226 5.80847 15.8041 3.75955 13.7552C2.13497 12.1306 1.40897 9.87931 1.72968 7.65976L4.15212 10.0822C4.7427 10.6728 5.52736 10.9984 6.36189 10.9989H6.36336C7.19691 10.9989 7.98109 10.6742 8.5702 10.0846L10.2515 8.40385C10.8416 7.81376 11.1662 7.02959 11.1657 6.19506C11.1652 5.36101 10.8396 4.57586 10.2486 3.98528L7.82562 1.56187C10.0442 1.23969 12.295 1.96618 13.9221 3.59271C15.9583 5.62892 16.5801 8.66247 15.5163 11.3347C15.4625 11.366 15.4063 11.3929 15.3604 11.4394L14.5244 12.2802C14.2398 12.5662 14.2413 13.0287 14.5278 13.3133C14.6701 13.455 14.8563 13.5254 15.0426 13.5254C15.2303 13.5254 15.418 13.4536 15.5608 13.3098L16.1768 12.6899L22.1955 18.7086L20.7557 20.1479C20.3421 19.8399 19.8483 19.6659 19.3243 19.6659C18.6809 19.6659 18.0752 19.9172 17.6171 20.3752L17.421 20.5713L12.3591 15.5093ZM21.2079 29.2823L8.28371 42.206C7.85447 42.6353 7.10598 42.6348 6.67625 42.206L1.79324 37.323C1.57862 37.1084 1.4608 36.8229 1.4608 36.5193C1.4608 36.2157 1.57911 35.9307 1.79324 35.7156L14.7175 22.7918C14.9321 22.5772 15.2176 22.4589 15.5212 22.4589C15.8233 22.4589 16.1079 22.5767 16.322 22.7894L21.2075 27.6748C21.4221 27.8894 21.5404 28.1745 21.5404 28.4781C21.5404 28.7822 21.4226 29.0672 21.2079 29.2823ZM22.591 25.3497L21.7721 26.173L17.8317 22.232L17.9363 22.1269C17.9378 22.1255 17.9412 22.124 17.9412 22.124C17.9427 22.1225 17.9432 22.1206 17.9446 22.1191L18.653 21.4063C19.0138 21.0455 19.6367 21.046 19.9975 21.4063L20.2634 21.6723L22.327 23.7359L22.5939 24.0028C22.7743 24.1832 22.8736 24.4218 22.8736 24.675C22.8726 24.9287 22.7734 25.1673 22.591 25.3497ZM31.8261 28.3397L31.8271 28.3407L31.829 28.3426L31.831 28.3441C31.898 28.4101 31.9762 28.4619 32.0617 28.4976C32.073 28.5025 32.0842 28.504 32.096 28.5084C32.1712 28.5353 32.25 28.5529 32.3311 28.5543C32.336 28.5543 32.3404 28.5573 32.3453 28.5573C32.3565 28.5573 32.3673 28.5514 32.379 28.5509C32.4475 28.5475 32.5164 28.5348 32.5844 28.5108C32.6005 28.5054 32.6166 28.5025 32.6328 28.4957C35.3128 27.4147 38.363 28.0346 40.4071 30.0782C42.0336 31.7047 42.7606 33.9565 42.4384 36.1746L40.015 33.7512C38.7967 32.5329 36.8142 32.5309 35.5964 33.7488L33.9151 35.43C32.6978 36.6474 32.6988 38.6298 33.9176 39.8486L36.34 42.2706C34.1204 42.5913 31.8691 41.8653 30.2445 40.2407C28.1961 38.1918 27.5767 35.1328 28.6674 32.4469C28.6733 32.4327 28.6752 32.4185 28.6801 32.4038C28.7837 32.3686 28.882 32.3168 28.9641 32.2337L29.8001 31.3928C30.0847 31.1068 30.0832 30.6443 29.7967 30.3598C29.5107 30.0753 29.0482 30.0767 28.7637 30.3632L27.9903 31.1415L23.428 26.5792L23.626 26.3812C24.0821 25.9251 24.3334 25.3194 24.3334 24.676C24.3334 24.1524 24.1594 23.6581 23.8514 23.245L25.2911 21.8052L31.8261 28.3397ZM39.2987 8.44101L37.0953 8.28701C37.0826 8.28603 37.0709 8.28798 37.0587 8.28749C37.0503 8.28749 37.042 8.28749 37.0337 8.28798C36.8284 8.28798 36.6431 8.37549 36.5111 8.51923L22.8428 22.1871L21.8127 21.157L35.5006 7.46959L35.5035 7.46567C35.568 7.39967 35.6199 7.32243 35.6556 7.23639C35.6575 7.2315 35.6604 7.22661 35.6624 7.22123C35.6932 7.14301 35.7093 7.05892 35.7113 6.97092C35.7118 6.96065 35.7123 6.95039 35.7123 6.94012C35.7123 6.9279 35.7142 6.91665 35.7132 6.90443L35.5588 4.70102L41.0817 1.63667L42.3631 2.91804L39.2987 8.44101Z\",\n fill: \"#93C4E7\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgPrinterNotReportedIcon);\nexport default __webpack_public_path__ + \"static/media/printer-not-reported-icon.47e46600.svg\";\nexport { ForwardRef as ReactComponent };","import React from 'react';\r\nimport styled from 'styled-components';\r\nimport { ReactComponent as EmptyStateTankIcon } from '../../assets/icons/EmptyStateTankIcon.svg';\r\nimport { ReactComponent as EmptyStateEventIcon } from '../../assets/icons/EmptyStateEventIcon.svg';\r\nimport { ReactComponent as NothingWasSelected } from '../../assets/icons/NothingWasSelected.svg';\r\nimport { ReactComponent as EmptyState } from '../../assets/icons/EmptyState.svg';\r\nimport { ReactComponent as PrinterNotReportedIcon } from '../../assets/icons/printer-not-reported-icon.svg';\r\n\r\nimport { appearanceEffect } from 'globalStyle';\r\ntype IconType = 'tank' | 'event' | 'list' | 'empty-state' | 'no-icon' | 'printer-not-reported';\r\nexport const EmptyStateWrapper = styled.div`\r\n width: 100%;\r\n height: 100%;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n`;\r\nconst InnerWrapper = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n justify-content: center;\r\n align-items: center;\r\n animation-name: ${appearanceEffect};\r\n animation-duration: 500ms;\r\n max-height: 100px;\r\n`;\r\nconst IconPlaceHolder = styled.div``;\r\nconst MessagePlaceHolder = styled.div<{ maxHeight?: number }>`\r\n font-family: 'Rubik';\r\n font-style: normal;\r\n font-weight: ${props => (props.maxHeight ? 400 : 500)};\r\n font-size: ${props => (props.maxHeight ? '14px' : '16px')};\r\n color: #93c4e7;\r\n`;\r\nconst DescriptionPlaceHolder = styled.div`\r\n font-family: 'Rubik';\r\n font-style: normal;\r\n font-weight: 400;\r\n font-size: 14px;\r\n line-height: 16px;\r\n`;\r\ntype EmptyStateProps = {\r\n message?: string;\r\n icon: IconType;\r\n description?: string;\r\n maxHeight?: number;\r\n};\r\nconst EmptyStateIcon = (props: EmptyStateProps) => {\r\n const { message = 'no data for this period', description, icon, maxHeight } = props;\r\n const icons = [\r\n { iconName: 'tank', icon: },\r\n {\r\n iconName: 'event',\r\n icon: ,\r\n },\r\n { iconName: 'list', icon: },\r\n { iconName: 'empty-state', icon: },\r\n { iconName: 'no-icon', icon: <> },\r\n { iconName: 'printer-not-reported', icon: },\r\n ];\r\n const currentIcon = icons.find(elem => elem.iconName === icon).icon;\r\n return (\r\n \r\n {currentIcon}\r\n {message}\r\n {description}\r\n \r\n );\r\n};\r\nexport default EmptyStateIcon;\r\n","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgTShirt(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 37,\n height: 37,\n viewBox: \"0 0 37 37\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M32.5599 7.52332L27.6266 5.05665C27.5033 4.93332 27.3799 4.93332 27.1333 4.93332H23.4333C22.6933 4.93332 22.1999 5.42665 22.1999 6.16665C22.1999 8.26332 20.5966 9.86665 18.5 9.86665C16.4033 9.86665 14.8 8.26332 14.8 6.16665C14.8 5.42665 14.3066 4.93332 13.5666 4.93332H9.86662C9.61995 4.93332 9.49662 4.93332 9.37328 5.05665L4.43995 7.52332C3.94662 7.76999 3.69995 8.13999 3.69995 8.63332V16.0333C3.69995 16.7733 4.19328 17.2667 4.93328 17.2667H8.63328V30.8333C8.63328 31.5733 9.12662 32.0667 9.86662 32.0667H27.1333C27.8733 32.0667 28.3666 31.5733 28.3666 30.8333V17.2667H32.0666C32.8066 17.2667 33.2999 16.7733 33.2999 16.0333V8.63332C33.2999 8.13999 33.0533 7.76999 32.5599 7.52332Z\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgTShirt);\nexport default __webpack_public_path__ + \"static/media/T-shirt.c2db76dc.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2, _path3;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgFabricIconNoColor(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 20,\n height: 20,\n viewBox: \"0 0 20 20\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M19.2919 9.20593L20 7.16888L19.2844 5.11002L19.988 2.50732H9.81673C9.84971 2.7182 9.86688 2.93411 9.86688 3.15399V17.0274H9.86565C9.83974 18.1683 9.35404 19.198 8.586 19.9402H19.9919L19.2849 17.3749L20 15.3174L19.2919 13.2802L20 11.243L19.2919 9.20593Z\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M3.08397 12.7351H5.64926C6.86542 12.7351 7.96273 13.2501 8.73323 14.0723V3.06854C8.73323 1.3765 7.34974 0 5.64926 0H3.08397C1.38348 0 0 1.3765 0 3.06854V14.0723C0.770493 13.2501 1.8678 12.7351 3.08397 12.7351Z\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8.73323 16.9317C8.73323 15.2398 7.34974 13.8633 5.64926 13.8633H3.08397C1.38348 13.8633 0 15.2398 0 16.9317C0 18.6237 1.38348 20.0002 3.08397 20.0002H5.64926C7.34974 20.0002 8.73323 18.6237 8.73323 16.9317ZM2.3604 16.9318C2.3604 16.5348 2.68492 16.2118 3.08397 16.2118H5.64911C6.04831 16.2118 6.37282 16.5348 6.37282 16.9318C6.37282 17.3289 6.04816 17.6517 5.64911 17.6517H3.08397C2.68492 17.6517 2.3604 17.3289 2.3604 16.9318Z\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgFabricIconNoColor);\nexport default __webpack_public_path__ + \"static/media/fabricIconNoColor.ee18bc47.svg\";\nexport { ForwardRef as ReactComponent };","import { createAsyncAction, createStandardAction } from 'typesafe-actions';\r\nimport { authService } from 'services/AuthProvider';\r\nimport { makeApiUrl } from 'actions/_shared/utils';\r\nimport apiAction from 'actions/_shared/apiAction';\r\nimport { MachineConfigDevice, MachineConfigParam } from 'store/storeTypes';\r\nimport { MachineConfigServer, IMachineConfigRequest } from 'models/MachineConfigData';\r\n\r\nexport const getMachineConfigAC = createAsyncAction(\r\n 'GET_MACHINE_CONFIG_STARTED',\r\n 'GET_MACHINE_CONFIG_SUCCESS',\r\n 'GET_MACHINE_CONFIG_FAILED'\r\n)();\r\n\r\nconst converter = (data: MachineConfigServer): MachineConfigParam[] | 'no data' => {\r\n if (!data) {\r\n return 'no data';\r\n }\r\n return data.params.map(param => {\r\n return {\r\n ...param,\r\n min: !isNaN(param.min as number) ? parseFloat((param.min as unknown) as string) : undefined,\r\n max: !isNaN(param.max as number) ? parseFloat((param.max as unknown) as string) : undefined,\r\n value:\r\n param.value !== '' && !isNaN(param.value as number)\r\n ? parseFloat(param.value as string)\r\n : param.value,\r\n };\r\n });\r\n};\r\nexport const machineConfigRequest = (\r\n { systemId, day }: IMachineConfigRequest,\r\n isSilent = false\r\n) => {\r\n const url = makeApiUrl('/api/system-data/settings');\r\n const { isAuthenticated, idTokenPayload } = authService;\r\n if (isAuthenticated() && idTokenPayload && idTokenPayload.sub)\r\n return apiAction({\r\n request: {\r\n url,\r\n params: {\r\n systemId,\r\n day,\r\n },\r\n },\r\n logic: {\r\n onFailed: (error, dispatch) => dispatch(getMachineConfigAC.failure(error)),\r\n onStarted: isSilent ? dispatch => {} : dispatch => dispatch(getMachineConfigAC.success([])),\r\n onSuccess: (data, dispatch) => {\r\n dispatch(\r\n getMachineConfigAC.success(\r\n converter({ ...data, params: data.params.filter(element => element !== null) })\r\n )\r\n );\r\n },\r\n },\r\n });\r\n};\r\n\r\nexport const setMachineConfigDevice = createStandardAction('SET_MACHINE_CONFIG_DEVICE')<\r\n MachineConfigDevice\r\n>();\r\n","import { AuthService } from 'contracts/auth';\r\n\r\nexport function makeApiUrl(path: string): string {\r\n // const test = 'https://konnect-test-edge-portal-api-appservice.kornitkonnect.com';\r\n // return test + path;\r\n return localStorage.getItem('portalApiUrl') + path;\r\n}\r\n\r\nexport function makeAuthHeader(authService: AuthService) {\r\n return {\r\n Authorization: `Bearer ${authService.accessToken}`,\r\n };\r\n}\r\n","import { Entity, Store, UiStore, UserForm } from 'store/storeTypes';\r\nimport { ExtendedUserData } from 'models/ExtendedUserData';\r\nimport { CustomerData } from 'models/CustomerData';\r\nimport { SiteData } from 'models/SiteData';\r\nimport { SystemData } from 'models/SystemData';\r\nimport { userDataToTree } from './userScopeTreeConversions';\r\nimport { Permission, Permissions } from 'models/Permissions';\r\n\r\n/** Converts User data from API model to Redux UI store model */\r\nexport function userApiToUi(\r\n customers: Entity,\r\n sites: Entity,\r\n systems: Entity,\r\n user: ExtendedUserData\r\n): UserForm {\r\n const systemsTree = userDataToTree(\r\n customers,\r\n sites,\r\n systems,\r\n user.customerIds,\r\n user.siteIds,\r\n user.systemIds\r\n );\r\n return {\r\n id: user.id,\r\n firstname: user.firstName,\r\n lastname: user.lastName,\r\n email: user.email,\r\n customerIds: user.customerIds,\r\n siteIds: user.siteIds,\r\n systemIds: user.systemIds,\r\n systemsTree,\r\n setGoals: user.permissions.includes(Permission.SetGoals),\r\n createReports: user.permissions.includes(Permission.CreateReports),\r\n adminPermissions: user.permissions.includes(Permission.Admin),\r\n avatarUrl: user.profilePictureUrl,\r\n isFormTouched: false,\r\n isRootUser: user.isRootUser || false,\r\n manageApi: user.permissions.includes(Permission.ManageApi),\r\n };\r\n}\r\n\r\n/** Converts User data from API model to Redux UI store model */\r\nexport function userUiToApi(uiStore: UiStore): ExtendedUserData {\r\n const {\r\n id,\r\n firstname,\r\n lastname,\r\n email,\r\n customerIds,\r\n siteIds,\r\n systemIds,\r\n avatarUrl,\r\n avatarBase64,\r\n adminPermissions,\r\n createReports,\r\n setGoals,\r\n isRootUser,\r\n } = uiStore.userForm;\r\n const userApi = {\r\n id,\r\n firstName: firstname,\r\n lastName: lastname,\r\n email: email.trim(),\r\n permissions: [] as Permissions,\r\n customerIds,\r\n siteIds,\r\n systemIds,\r\n avatar: avatarBase64,\r\n profilePictureUrl: avatarUrl,\r\n };\r\n adminPermissions && userApi.permissions.push(Permission.Admin);\r\n createReports && userApi.permissions.push(Permission.CreateReports);\r\n setGoals && userApi.permissions.push(Permission.SetGoals);\r\n isRootUser && userApi.permissions.push(Permission.Certificate);\r\n return userApi;\r\n}\r\n\r\nexport function userUiToApiSaveUser(store: Store): ExtendedUserData {\r\n const {\r\n id,\r\n firstname,\r\n lastname,\r\n email,\r\n customerIds,\r\n siteIds,\r\n systemIds,\r\n avatarUrl,\r\n avatarBase64,\r\n adminPermissions,\r\n createReports,\r\n setGoals,\r\n isRootUser,\r\n } = store.ui.userForm;\r\n //here was changed API and istead of serial Number we need to pass id in request\r\n const printerIds = new Array();\r\n systemIds.forEach(serialNumber => {\r\n const ids = store.entities.systems.byId;\r\n const entitiesIds = Object.keys(ids);\r\n entitiesIds.forEach(entityId => {\r\n if (store.entities.systems.byId[entityId].serialNumber === serialNumber) {\r\n printerIds.push(store.entities.systems.byId[entityId].id);\r\n }\r\n });\r\n });\r\n const userApi = {\r\n id,\r\n firstName: firstname,\r\n lastName: lastname,\r\n email: email.trim(),\r\n permissions: [] as Permissions,\r\n customerIds,\r\n siteIds,\r\n systemIds: printerIds,\r\n avatar: avatarBase64,\r\n profilePictureUrl: avatarUrl,\r\n };\r\n adminPermissions && userApi.permissions.push(Permission.Admin);\r\n createReports && userApi.permissions.push(Permission.CreateReports);\r\n setGoals && userApi.permissions.push(Permission.SetGoals);\r\n isRootUser && userApi.permissions.push(Permission.Certificate);\r\n return userApi;\r\n}\r\n","import { Store } from 'store/storeTypes';\r\nimport { createReducer } from 'typesafe-actions';\r\nimport { createSelector } from 'reselect';\r\nimport { setCaptchaIsOpen } from 'actions/userUiActions';\r\n\r\nconst initState = { isOpen: false, userId: '' };\r\nexport default createReducer(initState).handleAction(\r\n setCaptchaIsOpen,\r\n (state, action) => {\r\n return { ...state, isOpen: action.payload.isOpen, userId: action.payload.userId };\r\n }\r\n);\r\n\r\nconst uiSelector = (state: Store) => {\r\n return state['ui'];\r\n};\r\nexport const isCatpchaOpenSelector = createSelector([uiSelector], ui => {\r\n return ui['captcha'].isOpen;\r\n});\r\nexport const userIdForCaptchaSelector = createSelector([uiSelector], ui => {\r\n return ui['captcha'].userId;\r\n});\r\n","import { appInsightLogger, checkIsSuperUser } from './../../KonnectAnalytics/konnectAnalytics';\r\nimport axios, {\r\n Method,\r\n AxiosRequestConfig,\r\n CancelToken,\r\n CancelTokenSource,\r\n AxiosResponse,\r\n} from 'axios';\r\nimport { ThunkDispatch } from 'redux-thunk';\r\nimport { Action } from 'redux';\r\nimport { PayloadAC } from 'typesafe-actions';\r\n\r\nimport { Store } from 'store/storeTypes';\r\nimport { authService } from 'services/AuthProvider';\r\nimport { makeAuthHeader } from './utils';\r\nimport handleErrorAction from './handleErrorAction';\r\nimport { sendMetric } from '../../logger/logger';\r\nimport config from 'config/config';\r\nexport interface ApiRequest {\r\n url: string | ((state: Store) => string);\r\n method?: Method;\r\n data?: object | ((state: Store) => object);\r\n headers?: any;\r\n params?: any;\r\n responseType?: ResponseType;\r\n credentials?: string;\r\n}\r\n\r\nexport interface ApiActionLogic {\r\n onStarted: (dispatch: ThunkDispatch, state: Store, data: any) => void;\r\n onSuccess: (\r\n data: any,\r\n dispatch: ThunkDispatch,\r\n state: Store,\r\n status: number\r\n ) => void;\r\n onFailed: (error: any, dispatch: ThunkDispatch, state: Store) => void;\r\n}\r\n\r\nexport interface InterceptorFunc {\r\n (state: Store): boolean;\r\n}\r\n\r\nexport interface ApiActionConfig {\r\n request: ApiRequest;\r\n logic: ApiActionLogic;\r\n interceptor?: InterceptorFunc;\r\n}\r\n\r\nconst pendingRequests = new Map();\r\nconst noNeedToCancelEndpointsArray = ['current-state'];\r\nexport default function apiAction(conf: ApiActionConfig) {\r\n const { request, logic, interceptor } = conf;\r\n return async function(dispatch: ThunkDispatch, getState: () => Store) {\r\n let tokenSource: CancelTokenSource | undefined;\r\n const state = getState();\r\n const quieryString = generateQuieryString(request.params);\r\n const params = request.params;\r\n request.params = undefined;\r\n request.url = typeof request.url === 'function' ? request.url(state) : request.url;\r\n const requestId = request.url;\r\n tokenSource = axios.CancelToken.source();\r\n const splittedBySlashUrl = requestId.split('/');\r\n const currentEndPoint = splittedBySlashUrl[splittedBySlashUrl.length - 1];\r\n // //*to set cookies\r\n if (currentEndPoint === 'portalUrl') {\r\n axios.defaults.withCredentials = false;\r\n } else {\r\n axios.defaults.withCredentials = true;\r\n }\r\n //*to cancel repeated request\r\n if (!noNeedToCancelEndpointsArray.includes(currentEndPoint)) {\r\n pendingRequests.get(requestId)?.cancel();\r\n }\r\n request.url += quieryString;\r\n request.data = typeof request.data === 'function' ? request.data(state) : request.data;\r\n request.method = request.method || 'GET';\r\n const authHeader = makeAuthHeader(authService);\r\n const contentTypeHeader = { 'Content-Type': 'application/x-www-form-urlencoded' };\r\n request.headers = request.headers\r\n ? { ...authHeader, ...contentTypeHeader, ...request.headers }\r\n : authHeader;\r\n //*in case we need to get blob -we use it in system page => dowload exeel report\r\n if (params && params.responseType) {\r\n request.responseType = params.responseType;\r\n }\r\n if (interceptor && interceptor(state)) return;\r\n logic.onStarted(dispatch, state, request.data);\r\n try {\r\n pendingRequests.set(requestId, tokenSource);\r\n const startTime = new Date().getTime();\r\n\r\n const response = await axios.request(({\r\n ...request,\r\n cancelToken: tokenSource?.token,\r\n } as unknown) as AxiosRequestConfig);\r\n sendMetric(requestId.substring(requestId.indexOf('api/') + 4), startTime, params);\r\n logic.onSuccess(response.data, dispatch, state, response.status);\r\n sendLogToAppInsight({ request, response, error: null, canceled: false, state });\r\n } catch (error) {\r\n if (axios.isCancel(error)) {\r\n console.log('request was canceled', request);\r\n sendLogToAppInsight({ request, error, canceled: true, state });\r\n } else {\r\n logic.onFailed(error, dispatch, state);\r\n dispatch(handleErrorAction(error, `API: ${error.message}`));\r\n sendLogToAppInsight({ request, error, canceled: false, state });\r\n }\r\n } finally {\r\n tokenSource?.cancel();\r\n }\r\n };\r\n}\r\ntype LogProps = {\r\n request: ApiRequest;\r\n response?: AxiosResponse;\r\n error?: any;\r\n canceled: boolean;\r\n state: Store;\r\n};\r\nconst sendLogToAppInsight = (props: LogProps) => {\r\n const { request, response, error, canceled, state } = props;\r\n const isSuperUser = authService.idTokenPayload[`${config.AUTH0_CLAIMS_NAMESPACE}is_super_user`];\r\n //value from server side comes not correct in case of superUser - so we need to fix it on client side in case of super user the email will be in nickname field;\r\n const email = isSuperUser ? authService.idTokenPayload.nickname : authService.idTokenPayload.name;\r\n if (response) {\r\n appInsightLogger.trackEvent(\r\n { name: `http-response-success: ${request.url} from: ${email}` },\r\n {\r\n type: 'http-response-success',\r\n payload: response.data,\r\n endPoint: request.url,\r\n userEmail: state.appUser.userEmail,\r\n id: state.appUser.id,\r\n day: request?.params?.day,\r\n week: request?.params?.week,\r\n isSuperUser: checkIsSuperUser(authService),\r\n }\r\n );\r\n }\r\n if (error) {\r\n const email = isSuperUser\r\n ? authService.idTokenPayload.nickname\r\n : authService.idTokenPayload.name;\r\n appInsightLogger.trackEvent(\r\n {\r\n name: `http-response-${canceled ? 'canceled' : 'failed'}: ${request.url} from: ${email}`,\r\n },\r\n {\r\n type: `http-response-${canceled ? 'canceled' : 'failed'}`,\r\n payload: error,\r\n endPoint: request.url,\r\n userEmail: state.appUser.userEmail,\r\n id: state.appUser.id,\r\n day: request?.params?.day,\r\n week: request?.params?.week,\r\n isSuperUser: checkIsSuperUser(authService),\r\n }\r\n );\r\n }\r\n};\r\nconst generateQuieryString = (params: any | undefined): string => {\r\n let quieryString = '';\r\n if (params) {\r\n quieryString = '?';\r\n Object.keys(params).forEach((key, index) => {\r\n if (params[key] !== undefined && params[key] !== null) {\r\n if (Array.isArray(params[key])) {\r\n params[key].forEach((param: string | number, i: number) => {\r\n quieryString += `${key}=${param}`;\r\n if (i !== params[key].length - 1) {\r\n quieryString += '&';\r\n }\r\n });\r\n } else if (params[key] instanceof Date) {\r\n quieryString += `${key}=${(params[key] as Date).toDateString()}`;\r\n } else if (typeof params[key] === 'object') {\r\n Object.keys(params[key]).forEach(innerKey => {\r\n if (Array.isArray(params[key][innerKey])) {\r\n params[key][innerKey].forEach((el: string | number, index: number) => {\r\n quieryString += `${key}.${innerKey}=${el}`;\r\n quieryString += '&';\r\n });\r\n } else {\r\n quieryString += `${key}.${innerKey}=${params[key][innerKey]}`;\r\n quieryString += '&';\r\n }\r\n });\r\n if (quieryString.charAt(quieryString.length - 1) === '&') {\r\n quieryString = quieryString.slice(0, quieryString.length - 1);\r\n }\r\n } else {\r\n quieryString += `${key}=${params[key]}`;\r\n }\r\n quieryString += '&';\r\n }\r\n });\r\n }\r\n if (quieryString.charAt(quieryString.length - 1) === '&') {\r\n quieryString = quieryString.slice(0, quieryString.length - 1);\r\n }\r\n return quieryString;\r\n};\r\n\r\nexport interface ApiActionSimpleConfig {\r\n request: ApiRequest;\r\n actions: [any, PayloadAC, any];\r\n interceptor?: InterceptorFunc;\r\n}\r\n\r\nexport const apiActionSimple = (conf: ApiActionSimpleConfig) => {\r\n const { request, actions, interceptor } = conf;\r\n\r\n return apiAction({\r\n request,\r\n logic: {\r\n onStarted: (dispatch, state, data = null) => {\r\n return dispatch(actions[0](data));\r\n },\r\n onSuccess: (data, dispatch) => {\r\n return dispatch(actions[1](data));\r\n },\r\n onFailed: (error, dispatch) => {\r\n return dispatch(actions[2](error));\r\n },\r\n },\r\n interceptor,\r\n });\r\n};\r\n","import { endOfMonth, endOfQuarter, endOfWeek, endOfYear, isBefore, startOfMonth } from 'date-fns';\r\nimport {\r\n ColorCompareChart,\r\n ColorConsumptionChart,\r\n InkConsumptionChart,\r\n} from 'models/JobAnalysisData';\r\nimport { TimeFrameEnum } from 'models/ReportData';\r\nexport const getTextForLabelInkConsumptionTrendGraph = (\r\n timeframe,\r\n dateName,\r\n selectedDay,\r\n index\r\n) => {\r\n if (timeframe !== 'week') {\r\n return dateName;\r\n } else {\r\n const weekDayShortNames = [\r\n { short: 'Mon', full: 'Monday' },\r\n { short: 'Tue', full: 'Tuesday' },\r\n { short: 'Wed', full: 'Wednesday' },\r\n { short: 'Thu', full: 'Thursday' },\r\n { short: 'Fri', full: 'Friday' },\r\n { short: 'Sat', full: 'Saturday' },\r\n { short: 'Sun', full: 'Sunday' },\r\n ];\r\n const currentDay = weekDayShortNames.filter(day => day.full === dateName);\r\n const text = timeframe === 'week' ? currentDay[0] && currentDay[0].short : dateName;\r\n const firstDayOfWeek = new Date(selectedDay);\r\n const currentDate = new Date(\r\n firstDayOfWeek.getFullYear(),\r\n firstDayOfWeek.getMonth(),\r\n firstDayOfWeek.getDate() + index\r\n );\r\n const dateSuffix = `${currentDate.getDate()}/${currentDate.getMonth() + 1}`;\r\n return `${text} ${dateSuffix}`;\r\n }\r\n};\r\nexport const getOffsetForDayLabel = (index, visibleTicksCount) => {\r\n if (index <= 2) {\r\n return 3;\r\n }\r\n if (index >= 12 && index <= visibleTicksCount - 4) {\r\n return 2;\r\n } else {\r\n return 0;\r\n }\r\n};\r\nexport const getCurrentDayNameObject = (length, index, selectedDate) => {\r\n const DaysArray = ['S', 'M', 'T', 'W', 'T', 'F', 'S'];\r\n const firstDayOfCurrentMonth = startOfMonth(new Date(selectedDate));\r\n const LAST_INDEX_OF_NEXT_MONTH = length - 1;\r\n const FIRST_INDEX_OF_CURRENT_MONTH = 3;\r\n const LAST_INDEX_OF_CURRENT_MONTH = LAST_INDEX_OF_NEXT_MONTH - 3;\r\n const LAST_INDEX_OF_PREV_MONTH = 2;\r\n const FIRST_INDEX_OF_NEXT_MONTH = LAST_INDEX_OF_CURRENT_MONTH + 1;\r\n\r\n if (index <= LAST_INDEX_OF_PREV_MONTH) {\r\n const firstDateOfPrevMont = new Date(\r\n firstDayOfCurrentMonth.getFullYear(),\r\n firstDayOfCurrentMonth.getMonth(),\r\n firstDayOfCurrentMonth.getDate() - 3\r\n );\r\n const currentDateDay = new Date(\r\n firstDateOfPrevMont.getFullYear(),\r\n firstDateOfPrevMont.getMonth(),\r\n firstDateOfPrevMont.getDate() + index\r\n ).getDay();\r\n const result = {\r\n currrentIndex: index,\r\n isPrevMonth: true,\r\n isNextMonth: false,\r\n isCurrentMonth: false,\r\n name: DaysArray[currentDateDay],\r\n isMonday: currentDateDay === 1,\r\n };\r\n return result;\r\n }\r\n if (index >= FIRST_INDEX_OF_CURRENT_MONTH && index <= LAST_INDEX_OF_CURRENT_MONTH) {\r\n const currentDayNumber = index - 3;\r\n const currentDateDay = new Date(\r\n firstDayOfCurrentMonth.getFullYear(),\r\n firstDayOfCurrentMonth.getMonth(),\r\n firstDayOfCurrentMonth.getDate() + currentDayNumber\r\n ).getDay();\r\n const result = {\r\n currrentIndex: index,\r\n isPrevMonth: false,\r\n isNextMonth: false,\r\n name: DaysArray[currentDateDay],\r\n isCurrentMonth: true,\r\n isMonday: currentDateDay === 1,\r\n };\r\n\r\n return result;\r\n }\r\n if (index >= LAST_INDEX_OF_CURRENT_MONTH && index <= LAST_INDEX_OF_NEXT_MONTH) {\r\n const firstDateOfNextMonth = new Date(\r\n firstDayOfCurrentMonth.getFullYear(),\r\n firstDayOfCurrentMonth.getMonth() + 1\r\n );\r\n const currentDateIndex = index - FIRST_INDEX_OF_NEXT_MONTH;\r\n const currentDateDay = new Date(\r\n firstDateOfNextMonth.getFullYear(),\r\n firstDateOfNextMonth.getMonth(),\r\n firstDateOfNextMonth.getDate() + currentDateIndex\r\n ).getDay();\r\n const result = {\r\n currrentIndex: index,\r\n isPrevMonth: false,\r\n isNextMonth: true,\r\n name: DaysArray[currentDateDay],\r\n isCurrentMonth: false,\r\n isMonday: currentDateDay === 1,\r\n };\r\n\r\n return result;\r\n }\r\n};\r\nexport const getColor = (isCurrentMonth, isMonday, index, isPrevMonth, length) => {\r\n if (!isCurrentMonth) {\r\n if (index === 0 || index === length - 1) {\r\n return '#c5d0de52';\r\n }\r\n if (index === 1 || index === length - 2) {\r\n return '#c5d0de8b';\r\n }\r\n return '#C5D0DE';\r\n }\r\n if (isCurrentMonth && isMonday) {\r\n return '#354052';\r\n }\r\n if (isCurrentMonth) {\r\n return '#7F8FA4';\r\n }\r\n};\r\nexport const getXCoordinateOffsetInkConsumptionChart = (\r\n width,\r\n visibleTicksCount,\r\n index,\r\n timeframe,\r\n x\r\n) => {\r\n const intervalLength = width / visibleTicksCount;\r\n const perCent = intervalLength / 100;\r\n let centerX;\r\n let leftBorder;\r\n let rightBorder;\r\n leftBorder = index * intervalLength;\r\n rightBorder = leftBorder + intervalLength;\r\n centerX = (leftBorder + rightBorder) / 2;\r\n if (index === 2) {\r\n centerX = centerX + 7 * perCent;\r\n }\r\n if (index === 3) {\r\n centerX = centerX + 7 * perCent;\r\n }\r\n if (index === 4) {\r\n centerX = centerX + 19 * perCent;\r\n }\r\n if (index === 5) {\r\n centerX = centerX + 22 * perCent;\r\n }\r\n if (index === 6) {\r\n centerX = centerX + 22 * perCent;\r\n }\r\n const X = timeframe !== 'month' ? centerX : x - 5;\r\n return X;\r\n};\r\n\r\nconst isSomeColorInRecordNull = (colorsArray, record) => {\r\n if (colorsArray.some(color => record[color] === null)) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n};\r\nconst setColorValueForFutureDaysOnNull = incomeData => {\r\n const colors = [...incomeData.colors];\r\n const records = new Array();\r\n incomeData.records.forEach(record => {\r\n const isNull = isSomeColorInRecordNull(colors, record);\r\n const newRecord = { ...record };\r\n if (isNull) {\r\n newRecord['Total'] = null;\r\n }\r\n records.push(newRecord);\r\n });\r\n const filteredData = {\r\n colors,\r\n records,\r\n };\r\n return { ...filteredData };\r\n};\r\nexport const jobAnalysisIncomeDataMapper = (incomeData, timeframe, selectedDay) => {\r\n if (!incomeData) return;\r\n\r\n const filteredData = setColorValueForFutureDaysOnNull(incomeData);\r\n return { ...filteredData };\r\n};\r\nexport const getPrinterName = (systemNickName, systemName?, serial?) => {\r\n if (systemNickName === null) {\r\n return serial;\r\n } else if (systemNickName === '') {\r\n return serial;\r\n } else {\r\n return systemNickName;\r\n }\r\n};\r\nexport const getModelnameNickName = (filterData, printer, systemAnalysisData) => {\r\n if (!printer) {\r\n return { model: 'no model detected', nickName: 'no nick name detected' };\r\n } else {\r\n const systemSerialNumber = printer && printer.serialNumber;\r\n const currentSystem = filterData.systems.find(system => system.name === systemSerialNumber);\r\n if (!currentSystem) {\r\n //*in case of in filterData there is no printer like in arg1. It could happend when selected all printers. then in system analysis displays all systems not only systems from filterData\r\n const nickName = printer.systemNickName\r\n ? printer.systemNickName\r\n : systemAnalysisData.find(system => system.serialNumber === printer.serialNumber)\r\n .systemNickName;\r\n return { model: printer.systemModel, nickName: nickName ? nickName : printer.serialNumber };\r\n }\r\n\r\n const calculatedName = currentSystem.systemNickName;\r\n const nickName = calculatedName === '' ? printer.serialNumber : calculatedName;\r\n\r\n return { model: printer.systemModel, nickName };\r\n }\r\n};\r\n\r\ntype StartEndDateObject = {\r\n startDate: Date;\r\n endDate: Date;\r\n};\r\n\r\nexport const getLocalEmptyStates = (\r\n totalProduction: number,\r\n isJobAnalysisChartsLoaded: boolean,\r\n inkConsumptionChart: InkConsumptionChart,\r\n colorConsumptionChart: ColorConsumptionChart,\r\n colorCompareChart: ColorCompareChart\r\n) => {\r\n if (\r\n !totalProduction &&\r\n isJobAnalysisChartsLoaded &&\r\n !inkConsumptionChart?.colors.length &&\r\n !colorConsumptionChart?.colors.length &&\r\n !colorCompareChart?.colors.length\r\n ) {\r\n return {\r\n isBottomBlockHasEmptyState: true,\r\n isChartsHaveEmptyState: true,\r\n };\r\n }\r\n if (\r\n totalProduction &&\r\n isJobAnalysisChartsLoaded &&\r\n !inkConsumptionChart?.colors.length &&\r\n !colorConsumptionChart?.colors.length &&\r\n !colorCompareChart?.colors.length\r\n ) {\r\n return {\r\n isBottomBlockHasEmptyState: false,\r\n isChartsHaveEmptyState: true,\r\n };\r\n }\r\n return {\r\n isBottomBlockHasEmptyState: false,\r\n isChartsHaveEmptyState: false,\r\n };\r\n};\r\ntype getJobAnalysisTopCardsWidthProps = Array;\r\ntype TopCardsWidthType = {\r\n leftCardWidth: number;\r\n middleCardWidth: number;\r\n rightCardWidth: number;\r\n};\r\nexport const getJobAnalysisTopCardsWidth = (\r\n filteredBottles: getJobAnalysisTopCardsWidthProps\r\n): TopCardsWidthType => {\r\n const result = {\r\n leftCardWidth: 33,\r\n middleCardWidth: 33,\r\n rightCardWidth: 33,\r\n };\r\n if (!filteredBottles) {\r\n return result;\r\n }\r\n if (filteredBottles.length < 3) {\r\n // * if in mid card <= 3 types of btls - each card also take 33%;\r\n return result;\r\n }\r\n if (filteredBottles.length >= 3 && filteredBottles.length < 6) {\r\n result.middleCardWidth = 48.8;\r\n result.leftCardWidth = 24.2;\r\n result.rightCardWidth = 24;\r\n return result;\r\n }\r\n if (filteredBottles.length >= 6) {\r\n result.rightCardWidth = 24;\r\n result.middleCardWidth = 59;\r\n result.leftCardWidth = 16;\r\n return result;\r\n } else {\r\n return result;\r\n }\r\n};\r\nexport const isShowInkConsumptionButtonForDtf = (timeframe, selectedDate) => {\r\n //we have to detect if selected date if end of selected period is before start date of feature, if yes - we have to disable button and show specil tooltip\r\n const START_FEATURE_DATE_FOR_DTF = new Date('2024-01-31');\r\n const lastDayOfPeriod = getLastDateOfSelectedTimeFrame(timeframe, new Date(selectedDate));\r\n if (isBefore(lastDayOfPeriod, START_FEATURE_DATE_FOR_DTF)) {\r\n return false;\r\n }\r\n return true;\r\n};\r\nconst getLastDateOfSelectedTimeFrame = (timeframe, selectedDate) => {\r\n switch (timeframe) {\r\n case TimeFrameEnum.day:\r\n return selectedDate;\r\n case TimeFrameEnum.week:\r\n return endOfWeek(selectedDate, { weekStartsOn: 1 });\r\n case TimeFrameEnum.month:\r\n return endOfMonth(selectedDate);\r\n case TimeFrameEnum.quarter:\r\n return endOfQuarter(selectedDate);\r\n case TimeFrameEnum.year:\r\n return endOfYear(selectedDate);\r\n\r\n default:\r\n return selectedDate;\r\n }\r\n};\r\nexport const mapZeroValuesBolltesToNull = data => {\r\n //* by contract if there was no replacement of bottles there should be empty array or array with null values, now it was decided\r\n //* that there could be 0 values. we have to transform all 0 values to null to fire empyt state logic for total bottles loaded card.\r\n return data.totalBottlesLoadedResponse.bottles.map(bottle => {\r\n if (bottle.colorValue === 0) {\r\n return { ...bottle, colorValue: null };\r\n }\r\n return bottle;\r\n });\r\n};\r\n","import { createSelector } from 'reselect';\r\nimport { createReducer } from 'typesafe-actions';\r\n\r\nimport { systemGroupSelector } from 'reducers/ui/systemGroupUiReducer';\r\nimport {\r\n changeNickNameAC,\r\n getSystemAnalysisAC,\r\n setInitialValueToChangeNameField,\r\n setSelectedSystemName,\r\n getSystemAnalysisNickNamesAC,\r\n setSortByHeaderCell,\r\n checkSystemAnalysisReportValidToDownloadAC,\r\n downloadSystemAnalysisReportAC,\r\n} from '../actions/systemAnalysisActions';\r\nimport { setActiveReportAC } from '../actions/reportUiActions';\r\nimport {\r\n ISystemAnalysisState,\r\n Store,\r\n systemReportByType,\r\n NickNameRecord,\r\n} from '../store/storeTypes';\r\nimport { sortDataByOrderDesc } from 'helpers/sorting';\r\nimport { ISystemReport } from 'models/SystemAnalysisData';\r\n\r\nconst INIT_STATE: ISystemAnalysisState = {\r\n isLoading: false,\r\n data: {\r\n DTF: [],\r\n DTG: [],\r\n Apollo: [],\r\n '': [],\r\n },\r\n selectedSystemName: '',\r\n sortBy: 'production',\r\n sortingOrder: undefined,\r\n view: '',\r\n changingNameInputValue: '',\r\n newNickName: 'not setted',\r\n isChangeNameLoading: false,\r\n isChangeNameLoaded: false,\r\n isNickNamesLoading: false,\r\n isNickNamesLoaded: false,\r\n isNickNamesLoadingError: '',\r\n nickNames: new Array(),\r\n downloadReportValidation: {\r\n DTG: {\r\n isDownloadReportValidationLoading: false,\r\n isDownloadReportValidationLoaded: false,\r\n isDownloadReportValidationLoadingError: '',\r\n isValidToDownload: false,\r\n isFileDownloading: false,\r\n isFileDownloaded: false,\r\n fileDownloadError: '',\r\n },\r\n DTF: {\r\n isDownloadReportValidationLoading: false,\r\n isDownloadReportValidationLoaded: false,\r\n isDownloadReportValidationLoadingError: '',\r\n isValidToDownload: false,\r\n isFileDownloading: false,\r\n isFileDownloaded: false,\r\n fileDownloadError: '',\r\n },\r\n Apollo: {\r\n isDownloadReportValidationLoading: false,\r\n isDownloadReportValidationLoaded: false,\r\n isDownloadReportValidationLoadingError: '',\r\n isValidToDownload: false,\r\n isFileDownloading: false,\r\n isFileDownloaded: false,\r\n fileDownloadError: '',\r\n },\r\n },\r\n};\r\n\r\nconst reducer = createReducer(INIT_STATE)\r\n .handleAction(checkSystemAnalysisReportValidToDownloadAC.request, (state, action) => {\r\n const { selectedSystemGroup } = action.payload;\r\n\r\n return {\r\n ...state,\r\n downloadReportValidation: {\r\n [selectedSystemGroup]: {\r\n isDownloadReportValidationLoading: true,\r\n isDownloadReportValidationLoaded: false,\r\n isDownloadReportLoaded: false,\r\n isDownloadReportLoadingError: '',\r\n isValidToDownload: false,\r\n },\r\n },\r\n };\r\n })\r\n .handleAction(checkSystemAnalysisReportValidToDownloadAC.failure, (state, action) => {\r\n const { selectedSystemGroup } = action.payload;\r\n return {\r\n ...state,\r\n downloadReportValidation: {\r\n [selectedSystemGroup]: {\r\n isDownloadReportValidationLoaded: false,\r\n isDownloadReportValidationLoading: false,\r\n isDownloadReportLoadingError: 'error',\r\n isValidToDownload: false,\r\n },\r\n },\r\n };\r\n })\r\n .handleAction(checkSystemAnalysisReportValidToDownloadAC.success, (state, action) => {\r\n const { selectedSystemGroup, status } = action.payload;\r\n let message = '';\r\n if (status === 204) {\r\n message = 'No data to download For This Period';\r\n }\r\n if (status === 205) {\r\n message = 'Too much data to download, please select shorter period';\r\n }\r\n if (status === 200) {\r\n message = 'Ready to download';\r\n }\r\n return {\r\n ...state,\r\n downloadReportValidation: {\r\n [selectedSystemGroup]: {\r\n isDownloadReportValidationLoading: false,\r\n isDownloadReportValidationLoaded: true,\r\n isDownloadReportLoadingError: message,\r\n isValidToDownload: status === 200,\r\n },\r\n },\r\n };\r\n })\r\n .handleAction(downloadSystemAnalysisReportAC.request, (state, action) => {\r\n const { selectedSystemGroup } = action.payload;\r\n return {\r\n ...state,\r\n downloadReportValidation: {\r\n [selectedSystemGroup]: {\r\n isFileDownloading: true,\r\n isFileDownloaded: false,\r\n fileDownloadError: '',\r\n },\r\n },\r\n };\r\n })\r\n .handleAction(downloadSystemAnalysisReportAC.failure, (state, action) => {\r\n const { selectedSystemGroup } = action.payload;\r\n return {\r\n ...state,\r\n downloadReportValidation: {\r\n [selectedSystemGroup]: {\r\n isFileDownloading: false,\r\n isFileDownloaded: false,\r\n fileDownloadError: 'error',\r\n },\r\n },\r\n };\r\n })\r\n .handleAction(downloadSystemAnalysisReportAC.success, (state, action) => {\r\n const { selectedSystemGroup } = action.payload;\r\n return {\r\n ...state,\r\n downloadReportValidation: {\r\n [selectedSystemGroup]: {\r\n isFileDownloading: false,\r\n isFileDownloaded: true,\r\n fileDownloadError: '',\r\n isDownloadReportLoadingError: 'Report has been downloaded',\r\n isValidToDownload: false,\r\n },\r\n },\r\n };\r\n })\r\n .handleAction(getSystemAnalysisNickNamesAC.request, (state, action) => {\r\n const isSilent = action.payload;\r\n if (isSilent) {\r\n return { ...state };\r\n } else {\r\n return {\r\n ...state,\r\n isNickNamesLoading: true,\r\n isNickNamesLoaded: false,\r\n isNickNamesLoadingError: '',\r\n nickNames: new Array(),\r\n };\r\n }\r\n })\r\n .handleAction(getSystemAnalysisNickNamesAC.success, (state, action) => {\r\n return {\r\n ...state,\r\n isNickNamesLoading: false,\r\n isNickNamesLoaded: true,\r\n isNickNamesLoadingError: '',\r\n nickNames: [...action.payload],\r\n };\r\n })\r\n .handleAction(getSystemAnalysisNickNamesAC.failure, (state, action) => {\r\n return {\r\n ...state,\r\n isNickNamesLoading: false,\r\n isNickNamesLoaded: false,\r\n isNickNamesLoadingError: 'nick names loading error',\r\n nickNames: new Array(),\r\n };\r\n })\r\n .handleAction(getSystemAnalysisAC.request, (state, action) => {\r\n if (action.payload.isSilent) {\r\n return { ...state };\r\n } else {\r\n return {\r\n ...state,\r\n isLoading: true,\r\n };\r\n }\r\n })\r\n .handleAction(getSystemAnalysisAC.success, (state, action) => {\r\n const reducedData: systemReportByType = { DTF: [], DTG: [], Apollo: [], '': [] };\r\n reducedData[action.payload.systemGroup] = action.payload.systemsReports;\r\n const currentFilter = state.sortBy;\r\n const nickNamesArray = state.nickNames;\r\n const currentOrder = state.sortingOrder;\r\n const isEverReportedSystems = action.payload.isEverReportedSystems;\r\n const newSortedData = sortDataByOrderDesc(\r\n reducedData[action.payload.systemGroup],\r\n currentFilter,\r\n currentOrder,\r\n nickNamesArray,\r\n isEverReportedSystems\r\n );\r\n const newReducedData = { ...reducedData, [action.payload.systemGroup]: newSortedData };\r\n\r\n return {\r\n ...state,\r\n isLoading: false,\r\n data: newReducedData,\r\n };\r\n })\r\n .handleAction(getSystemAnalysisAC.failure, state => {\r\n return { ...state, isLoading: false };\r\n })\r\n .handleAction(setSelectedSystemName, (state, action) => {\r\n return { ...state, selectedSystemName: action.payload };\r\n })\r\n\r\n .handleAction(setInitialValueToChangeNameField, (state, action) => {\r\n return { ...state, changingNameInputValue: action.payload.systemName };\r\n })\r\n .handleAction(changeNickNameAC.failure, (state, action) => {\r\n return {\r\n ...state,\r\n changeNickNameError: 'error',\r\n isChangeNameLoading: false,\r\n isChangeNameLoaded: false,\r\n };\r\n })\r\n .handleAction(changeNickNameAC.request, (state, action) => {\r\n return {\r\n ...state,\r\n isChangeNameLoading: true,\r\n isChangeNameLoaded: false,\r\n changeNickNameError: '',\r\n };\r\n })\r\n .handleAction(changeNickNameAC.success, (state, action) => {\r\n const { data } = action.payload;\r\n return {\r\n ...state,\r\n isChangeNameLoading: false,\r\n isChangeNameLoaded: true,\r\n changeNickNameError: '',\r\n newNickName: data.nickName,\r\n };\r\n })\r\n .handleAction(setActiveReportAC, (state, action) => {\r\n return { ...state, newNickName: 'not setted' };\r\n })\r\n .handleAction(setSortByHeaderCell, (state, action) => {\r\n const { fieldName, selectedSystemGroup, view, isEverReportedSystems } = action.payload;\r\n const isChangeOrder = state.sortBy === fieldName;\r\n const order = state.sortingOrder;\r\n const newOrder: 'asc' | 'desc' = getNewOrder(order, isChangeOrder);\r\n const sortingFieldName = fieldName === 'systemName' ? 'serialNumber' : fieldName;\r\n const nickNamesArray = state.nickNames;\r\n const newData = sortDataByOrderDesc(\r\n state.data[selectedSystemGroup],\r\n sortingFieldName,\r\n newOrder,\r\n nickNamesArray,\r\n isEverReportedSystems\r\n );\r\n const sortedData: systemReportByType = { Apollo: [], DTF: [], DTG: [], '': [] };\r\n sortedData[selectedSystemGroup] = newData;\r\n return {\r\n ...state,\r\n sortBy: fieldName,\r\n sortingOrder: newOrder,\r\n data: sortedData,\r\n view: view,\r\n };\r\n });\r\nexport type OrderType = 'asc' | 'desc' | undefined;\r\nconst getNewOrder = (order: OrderType, isChangeOrder: boolean): OrderType => {\r\n if (!order) {\r\n //*in case of first render\r\n return 'desc';\r\n }\r\n const newOrder = order === 'asc' ? 'desc' : 'asc';\r\n return isChangeOrder ? newOrder : order;\r\n};\r\nexport default reducer;\r\n//*selectors\r\n\r\nexport const systemAnalysisSelector = (state: Store) => {\r\n return state.systemAnalysis;\r\n};\r\nexport const systemAnalysisNickNamesSelector = createSelector(\r\n [systemAnalysisSelector],\r\n systemAnalysis => {\r\n return systemAnalysis['nickNames'];\r\n }\r\n);\r\nexport const systemAnalysisIsNickNameLoadingsSelector = createSelector(\r\n [systemAnalysisSelector],\r\n systemAnalysis => {\r\n return systemAnalysis['isNickNamesLoading'];\r\n }\r\n);\r\nexport const systemAnalysisIsNickNameLoadedsSelector = createSelector(\r\n [systemAnalysisSelector],\r\n systemAnalysis => {\r\n return systemAnalysis['isNickNamesLoaded'];\r\n }\r\n);\r\nexport const isLoadingSystemAnalysisSelecor = createSelector(\r\n [systemAnalysisSelector],\r\n systemAnalysis => {\r\n return systemAnalysis['isLoading'];\r\n }\r\n);\r\nexport const systemAnalysisSortingOrderSelector = createSelector(\r\n [systemAnalysisSelector],\r\n systemAnalysis => {\r\n return systemAnalysis['sortingOrder'];\r\n }\r\n);\r\nexport const systemAnalysisSortBySelector = createSelector(\r\n [systemAnalysisSelector],\r\n systemAnalysis => {\r\n return systemAnalysis['sortBy'];\r\n }\r\n);\r\nexport const systemAnalysisDataSelector = createSelector(\r\n [systemAnalysisSelector],\r\n systemAnalysis => {\r\n return systemAnalysis['data'];\r\n }\r\n);\r\nexport const systemAnalysisDataBySelectedSystemGroup = createSelector(\r\n [systemGroupSelector, systemAnalysisDataSelector],\r\n (systemGroup, data) => {\r\n return data[systemGroup];\r\n }\r\n);\r\nexport const selectedSystemNameSelector = createSelector(\r\n [systemAnalysisSelector],\r\n systemAnalysis => {\r\n return systemAnalysis['selectedSystemName'];\r\n }\r\n);\r\n\r\nexport const printerSelector = createSelector(\r\n [systemAnalysisDataBySelectedSystemGroup, selectedSystemNameSelector],\r\n (systemAnalysis, name) => {\r\n return systemAnalysis.find((system: ISystemReport) => system.systemName === name);\r\n }\r\n);\r\nexport const printerStartDateSelector = createSelector(\r\n [printerSelector],\r\n printer => new Date(printer?.modelStartDate)\r\n);\r\nexport const pritnterEndDateSelector = createSelector(\r\n [printerSelector],\r\n printer => new Date(printer?.modelEndDate)\r\n);\r\nexport const systemAnalysisNewNickNameSelector = createSelector(\r\n [systemAnalysisSelector],\r\n systemAnalysis => {\r\n return systemAnalysis['newNickName'];\r\n }\r\n);\r\nexport const isChangeNameLoadingSelector = createSelector(\r\n [systemAnalysisSelector],\r\n systemAnalysis => {\r\n return systemAnalysis['isChangeNameLoading'];\r\n }\r\n);\r\nexport const isChangeNameLoadedSelector = createSelector(\r\n [systemAnalysisSelector],\r\n systemAnalysis => {\r\n return systemAnalysis['isChangeNameLoaded'];\r\n }\r\n);\r\nexport const changingNameInputValueSelector = createSelector(\r\n [systemAnalysisSelector],\r\n systemAnalysis => {\r\n return systemAnalysis['changingNameInputValue'];\r\n }\r\n);\r\nexport const isDownloadReportValidationLoadingSelector = createSelector(\r\n [systemAnalysisSelector, systemGroupSelector],\r\n (systemAnalysis, selectedSystemGroup) => {\r\n if (systemAnalysis.downloadReportValidation[selectedSystemGroup]) {\r\n return systemAnalysis.downloadReportValidation[selectedSystemGroup]\r\n .isDownloadReportValidationLoading;\r\n }\r\n }\r\n);\r\nexport const isSystemAnalysisReportValidToDownloadSelector = createSelector(\r\n [systemAnalysisSelector, systemGroupSelector],\r\n (systemAnalysis, selectedSystemGroup) => {\r\n if (systemAnalysis.downloadReportValidation[selectedSystemGroup]) {\r\n return systemAnalysis.downloadReportValidation[selectedSystemGroup].isValidToDownload;\r\n }\r\n }\r\n);\r\nexport const downloadSystemAnalysisReportMessageSelector = createSelector(\r\n [systemAnalysisSelector, systemGroupSelector],\r\n (systemAnalysis, selectedSystemGroup) => {\r\n if (systemAnalysis.downloadReportValidation[selectedSystemGroup]) {\r\n return systemAnalysis.downloadReportValidation[selectedSystemGroup]\r\n .isDownloadReportLoadingError;\r\n }\r\n }\r\n);\r\n","import React from 'react';\r\nimport styled, { css } from 'styled-components/macro';\r\nimport {\r\n Tooltip,\r\n IconButton,\r\n Typography,\r\n Button,\r\n createMuiTheme,\r\n Tabs,\r\n Tab,\r\n Select,\r\n MenuItem,\r\n} from '@material-ui/core';\r\nimport { appearanceEffect } from 'globalStyle';\r\n\r\ninterface IStyledSystemsAnalysisCardProps {\r\n statusColor: string;\r\n canClick?: boolean;\r\n}\r\nexport const MobileReportWrapperSystemAnalysis = styled.div`\r\n height: 100%;\r\n width: 100%;\r\n display: flex;\r\n flex-direction: column;\r\n animation-name: ${appearanceEffect};\r\n animation-duration: 500ms;\r\n`;\r\n\r\nexport const StatusButtonWrapper = styled.div`\r\n background-color: #ffffff;\r\n display: flex;\r\n justify-content: flex-end;\r\n align-items: center;\r\n height: 60px;\r\n box-sizing: border-box;\r\n border: 1px solid #c5d0de;\r\n padding: 0px 15px;\r\n margin-bottom: 10px;\r\n`;\r\nexport const StatusWrapper = styled.div`\r\n font-family: Rubik;\r\n font-style: normal;\r\n font-weight: normal;\r\n font-size: 16px;\r\n line-height: 24px;\r\n color: #354052;\r\n`;\r\nexport const SortingButton = styled.div`\r\n display: flex;\r\n width: 40px;\r\n justify-content: space-between;\r\n\r\n font-family: Rubik;\r\n font-style: normal;\r\n font-weight: normal;\r\n font-size: 16px;\r\n line-height: 24px;\r\n color: #354052;\r\n`;\r\nexport const MobileContentWrapper = styled.div`\r\n background: #ffffff;\r\n border: 1px solid #c5d0de;\r\n box-sizing: border-box;\r\n box-shadow: 0px 0px 3px rgba(0, 0, 0, 0.03);\r\n padding: 11px;\r\n display: flex;\r\n margin: 0 auto;\r\n justify-content: center;\r\n align-items: center;\r\n flex-wrap: wrap;\r\n`;\r\n\r\nexport const StyledSystemsAnalysisRow = styled.div`\r\n display: flex;\r\n justify-content: center;\r\n`;\r\n\r\nexport const StyledSystemsAnalysisTable = styled.div`\r\n position: relative;\r\n width: 100%;\r\n`;\r\n\r\nexport const ReportWrapper = styled.div`\r\n height: 100%;\r\n display: flex;\r\n flex-direction: column;\r\n flex-grow: 1;\r\n background-color: white;\r\n margin: 20px;\r\n padding-bottom: 80px;\r\n border: 1px solid #e6eaee;\r\n box-shadow: 0px 0px 3px rgba(0, 0, 0, 0.03);\r\n border-radius: 4px;\r\n //overflow: hidden;\r\n @media only screen and (max-width: 1480px) {\r\n display: none;\r\n }\r\n`;\r\n\r\n// CARD\r\nexport const StyledSystemsAnalysisCard = styled.div(\r\n (props: IStyledSystemsAnalysisCardProps) => `\r\n ${props.canClick && 'cursor: pointer;'}\r\n background-color: ${props.statusColor};\r\n position: relative;\r\n height: 100%;\r\n width: 100%;\r\n background-color: white;\r\n overflow: hidden;\r\n border: 1px solid #e6eaee;\r\n box-shadow: 0px 0px 3px rgba(0, 0, 0, 0.03);\r\n border-radius: 4px;\r\n &:before {\r\n content: '';\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n right: 0;\r\n background-color: ${props.statusColor};\r\n height: 8px;\r\n }\r\n &.selected,\r\n &.focus,\r\n &:hover {\r\n background: #f2f9ff;\r\n }\r\n cursor: pointer;\r\n `\r\n);\r\n\r\nexport const StyledSystemsAnalysisCardHeader = styled.div(props => {\r\n return css`\r\n position: relative;\r\n height: 55px;\r\n border-bottom: 1px solid #e6eaee;\r\n display: flex;\r\n align-items: center;\r\n padding: 0 20px;\r\n justify-content: space-between;\r\n `;\r\n});\r\n\r\nexport const StyledSystemsAnalysisCardHeaderLeftPart = styled.div(props => {\r\n return css`\r\n position: relative;\r\n //width: 50%;\r\n display: flex;\r\n justify-content: flex-start;\r\n `;\r\n});\r\n\r\nexport const StyledSystemsAnalysisCardHeaderRightPart = styled.div`\r\n position: relative;\r\n //width: 50%;\r\n display: flex;\r\n justify-content: flex-end;\r\n`;\r\n\r\nexport const StyledSystemsAnalysisCardBody = styled.div`\r\n height: 89px;\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n padding: 0 20px;\r\n`;\r\n\r\nexport const StyledSystemsAnalysisCardBodyLeftPart = styled.div`\r\n width: 73px;\r\n height: 55px;\r\n position: relative;\r\n`;\r\n\r\nexport const StyledSystemsAnalysisCardBodyRightPart = styled.div`\r\n position: relative;\r\n`;\r\n\r\nexport const StyledSystemsAnalysisCardBodyMidPart = styled.div`\r\n position: relative;\r\n display: flex;\r\n`;\r\n\r\nexport const StyledSystemsAnalysisCardFooter = styled.div`\r\n position: relative;\r\n display: flex;\r\n border-top: 1px solid #e6eaee;\r\n height: 67px;\r\n`;\r\n\r\nexport const StyledSystemsAnalysisCardFooterLeftPart = styled.div`\r\n position: relative;\r\n border-right: 1px solid #e6eaee;\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n width: 50%;\r\n justify-content: center;\r\n`;\r\n\r\nexport const StyledSystemsAnalysisCardFooterRightPart = styled.div`\r\n position: relative;\r\n width: 50%;\r\n display: flex;\r\n align-items: center;\r\n flex-direction: column;\r\n justify-content: center;\r\n`;\r\n\r\nexport const StyledToolTip = styled(props => (\r\n \r\n))`\r\n .Arrow {\r\n }\r\n .ToolTip {\r\n box-shadow: 0px 5px 15px 0px rgba(0, 0, 0, 0.3);\r\n &:before {\r\n box-shadow: 1px 1px 20px 0px rgba(0, 0, 0, 0.6);\r\n }\r\n }\r\n`;\r\n\r\nexport const StyledIconButton = styled(IconButton)`\r\n position: absolute;\r\n top: -5px;\r\n right: -5px;\r\n &.Root {\r\n padding: 0;\r\n }\r\n`;\r\n\r\nexport const StyledNamePrinter = styled(Typography)`\r\n font-family: Rubik, serif;\r\n font-style: normal;\r\n font-weight: 500;\r\n font-size: 18px;\r\n line-height: 21px;\r\n text-transform: uppercase;\r\n color: #354052;\r\n`;\r\n\r\nexport const StyledCardMedia = styled.img`\r\n width: 73px;\r\n height: 55px;\r\n`;\r\n\r\nexport const StyledSystemsAnalysisCardBodyInfoWrapper = styled.div`\r\n position: relative;\r\n display: flex;\r\n flex-direction: column;\r\n`;\r\n\r\nexport const StyledSystemsAnalysisCardBodyInfoTitleWrap = styled.div`\r\n position: relative;\r\n margin-bottom: 4px;\r\n`;\r\n\r\nexport const StyledSystemsAnalysisCardBodyInfoTitle = styled(Typography)`\r\n font-family: Rubik, serif;\r\n font-style: normal;\r\n font-weight: normal;\r\n font-size: 16px;\r\n line-height: 19px;\r\n color: #354052;\r\n`;\r\n\r\nexport const StyledSystemsAnalysisCardBodyInfoNumbersWrap = styled.div`\r\n position: relative;\r\n display: flex;\r\n align-items: flex-end;\r\n flex-wrap: wrap;\r\n`;\r\n\r\nexport const StyledSystemsAnalysisCardBodyInfoNumberBig = styled(Typography)`\r\n font-family: Rubik;\r\n font-style: normal;\r\n font-weight: normal;\r\n font-size: 20px;\r\n line-height: 24px;\r\n color: #354052;\r\n`;\r\n\r\nexport const StyledSystemsAnalysisCardBodyInfoNumberSlash = styled.span`\r\n font-size: 14px;\r\n color: #7f8fa4;\r\n`;\r\n\r\nexport const StyledSystemsAnalysisCardBodyInfoNumberSmall = styled(Typography)`\r\n font-family: Rubik, serif;\r\n font-style: normal;\r\n font-weight: normal;\r\n font-size: 14px;\r\n line-height: 18px;\r\n color: #7f8fa4;\r\n`;\r\n\r\nexport const StyledButton = styled(Button)`\r\n border: 1px solid #1bb934;\r\n border-radius: 4px;\r\n color: #1bb934;\r\n font-family: Rubik, serif;\r\n font-style: normal;\r\n font-weight: normal;\r\n font-size: 10px;\r\n line-height: 12px;\r\n text-transform: capitalize;\r\n`;\r\n\r\nexport const StyledSystemsAnalysisCardFooterNumbersWrap = styled.div`\r\n position: relative;\r\n display: flex;\r\n align-items: flex-end;\r\n`;\r\n\r\nexport const StyledSystemsAnalysisCardFooterNumber = styled(Typography)`\r\n font-family: Rubik, serif;\r\n font-style: normal;\r\n font-weight: 300;\r\n font-size: 25px;\r\n line-height: 30px;\r\n color: #354052;\r\n margin-right: 4px;\r\n`;\r\n\r\nexport const StyledSystemsAnalysisCardFooterSubTitleWrap = styled.div`\r\n position: relative;\r\n`;\r\n\r\nexport const StyledSystemsAnalysisCardFooterSubTitle = styled.div`\r\n position: relative;\r\n font-family: Rubik, serif;\r\n font-style: normal;\r\n font-weight: normal;\r\n font-size: 12px;\r\n line-height: 14px;\r\n\r\n color: #7f8fa4;\r\n`;\r\n\r\n// TABS\r\n\r\nexport const StyledTabsIcon = styled(Tabs)(props => {\r\n return css`\r\n min-height: auto;\r\n width: 100%;\r\n .Indicator {\r\n display: none;\r\n }\r\n `;\r\n});\r\n\r\nexport const StyledTabIcon = styled(Tab)(props => {\r\n return css`\r\n min-width: 50%;\r\n min-height: auto;\r\n padding: 2px;\r\n border-radius: 2px;\r\n overflow: hidden;\r\n color: #c5d0de;\r\n opacity: 1;\r\n &.Selected {\r\n color: white;\r\n background-color: #2ea1f8;\r\n }\r\n `;\r\n});\r\n\r\nexport const StyledWrapperHeader = styled.div(props => {\r\n return css`\r\n display: flex;\r\n align-items: center;\r\n justify-content: flex-end;\r\n border-bottom: 1px solid #e6e8f1;\r\n padding-right: 25px;\r\n padding-bottom: 10px;\r\n padding-top: 10px;\r\n padding-left: 25px;\r\n `;\r\n});\r\nexport const StyledWrapperLoader = styled.div(props => {\r\n return css`\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n flex: 1;\r\n `;\r\n});\r\n\r\nexport const StyledWrapperEmptyData = styled.div(props => {\r\n return css`\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n flex: 1;\r\n `;\r\n});\r\n\r\nexport const StyledWrapperControls = styled.div(props => {\r\n return css`\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n `;\r\n});\r\n\r\nexport const StyledWrapperTabPanels = styled.div`\r\n padding: 20px;\r\n height: -webkit-fill-available;\r\n display: flex;\r\n overflow: auto;\r\n flex-grow: 1;\r\n &::-webkit-scrollbar-track {\r\n border-left: 0;\r\n }\r\n &::-webkit-scrollbar {\r\n width: 8px;\r\n }\r\n &::-webkit-scrollbar-thumb {\r\n background: #7f8fa4;\r\n border-radius: 10px;\r\n }\r\n`;\r\n\r\nexport const StyledViewButtonWrapper = styled.div(props => {\r\n return css`\r\n box-sizing: border-box;\r\n min-width: 93px;\r\n height: 36px;\r\n border: 1px solid #7f8fa4;\r\n border-radius: 4px;\r\n overflow: hidden;\r\n padding: 4px;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n `;\r\n});\r\n\r\nexport const StyledSystemAnalysisLastUpdate = styled.div`\r\n vertical-align: middle;\r\n color: #7f8fa4;\r\n font-size: 12px;\r\n line-height: 50px;\r\n /* margin-right: 10px; */\r\n`;\r\n\r\nexport const StyledSystemsAnalysisFilter = styled(Select)(\r\n props => css`\r\n width: 20px;\r\n margin-right: 15px;\r\n font-size: 12px;\r\n svg {\r\n position: absolute;\r\n left: 10px;\r\n pointer-events: none;\r\n height: 25px;\r\n }\r\n div {\r\n padding-left: 40px;\r\n width: 100px;\r\n }\r\n `\r\n);\r\n\r\nexport const StyledSystemsAnalysisFilterMobile = styled(Select)(\r\n props => css`\r\n width: 20px;\r\n margin-right: 15px;\r\n font-size: 12px;\r\n svg {\r\n position: absolute;\r\n left: 10px;\r\n pointer-events: none;\r\n height: 25px;\r\n }\r\n div {\r\n width: 100px;\r\n }\r\n `\r\n);\r\nexport const StyledSystemsAnalysisFilterItem = styled(MenuItem).attrs({\r\n 'data-automationid': 'SystemAnalysis-filter-filter-options',\r\n})``;\r\n\r\nexport const tableTheme = createMuiTheme({\r\n overrides: {\r\n MuiTable: {\r\n root: {\r\n backgroundColor: 'white',\r\n borderCollapse: 'separate',\r\n // padding: '15px',\r\n },\r\n },\r\n MuiTableCell: {\r\n root: {\r\n padding: '0 10px',\r\n borderBottom: 'none',\r\n },\r\n head: {\r\n fontWeight: 600,\r\n },\r\n },\r\n MuiTableRow: {\r\n root: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n borderRadius: '4px',\r\n height: '90px !important',\r\n overflow: 'hidden',\r\n marginBottom: '8px',\r\n backgroundColor: 'white',\r\n cursor: 'pointer',\r\n '&:last-child': {\r\n marginBottom: 0,\r\n },\r\n '&:hover .errorTicketButton': {\r\n opacity: 1,\r\n },\r\n },\r\n head: {\r\n display: 'flex',\r\n borderRadius: 0,\r\n },\r\n },\r\n MuiTableBody: {\r\n root: {\r\n backgroundColor: '#EFF3F6',\r\n padding: '10px 0',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n },\r\n },\r\n },\r\n});\r\n\r\nexport const filterTheme = createMuiTheme({\r\n overrides: {\r\n MuiSelect: {\r\n root: {},\r\n select: {\r\n paddingLeft: '5px',\r\n paddingRight: '0 !important',\r\n '&:focus': {\r\n backgroundColor: 'none',\r\n },\r\n },\r\n },\r\n MuiListItem: {\r\n root: {\r\n '&$selected': {\r\n background: 'none',\r\n color: '#2EA1F8',\r\n '&:hover': {\r\n background: 'none',\r\n color: '#2EA1F8',\r\n },\r\n },\r\n },\r\n button: {\r\n '&:hover': {\r\n backgroundColor: 'transparent',\r\n color: '#2EA1F8',\r\n },\r\n },\r\n gutters: {},\r\n },\r\n },\r\n});\r\n","import { UserSystemGroupStrings } from 'store/storeTypes';\r\n\r\nexport enum MainReportTypes {\r\n Overview = 'overview',\r\n Systems = 'systems',\r\n Jobs = 'jobs',\r\n}\r\n\r\nexport enum SubReportTypes {\r\n ServiceTicket = 'serviceTicket',\r\n MachineConfig = 'machineConfig',\r\n SystemPage = 'systemPage',\r\n}\r\n\r\nexport type ReportTypesNew = MainReportTypes | SubReportTypes;\r\n\r\nexport type TimeFrame = 'day' | 'week' | 'month' | 'quarter' | 'year' | 'custom';\r\nexport enum TimeFrameEnum {\r\n day = 'day',\r\n week = 'week',\r\n month = 'month',\r\n quarter = 'quarter',\r\n year = 'year',\r\n custom = 'custom',\r\n}\r\nexport type ReportsConfig = {\r\n [key in ReportTypesNew]: {\r\n defaultTimeFrame: TimeFrame;\r\n timeFrames: TimeFrame[];\r\n };\r\n};\r\nexport type ReportsConfigByType = {\r\n [key in UserSystemGroupStrings]?: ReportsConfig;\r\n};\r\n\r\nexport const REPORTS_CONFIG: ReportsConfigByType = {\r\n DTG: {\r\n [MainReportTypes.Overview]: {\r\n defaultTimeFrame: 'day',\r\n timeFrames: ['day', 'week', 'custom'],\r\n },\r\n [MainReportTypes.Systems]: {\r\n defaultTimeFrame: 'day',\r\n timeFrames: ['day', 'week', 'custom'],\r\n },\r\n [MainReportTypes.Jobs]: {\r\n defaultTimeFrame: 'week',\r\n timeFrames: ['day', 'week', 'month', 'quarter', 'year', 'custom'],\r\n },\r\n\r\n [SubReportTypes.SystemPage]: {\r\n defaultTimeFrame: 'day',\r\n timeFrames: ['day', 'week'],\r\n },\r\n [SubReportTypes.MachineConfig]: {\r\n defaultTimeFrame: 'day',\r\n timeFrames: ['day', 'week'],\r\n },\r\n [SubReportTypes.ServiceTicket]: {\r\n defaultTimeFrame: 'day',\r\n timeFrames: ['day', 'week'],\r\n },\r\n },\r\n DTF: {\r\n [MainReportTypes.Overview]: {\r\n defaultTimeFrame: 'day',\r\n timeFrames: ['day', 'week'],\r\n },\r\n [MainReportTypes.Systems]: {\r\n defaultTimeFrame: 'day',\r\n timeFrames: ['day', 'week'],\r\n },\r\n [MainReportTypes.Jobs]: {\r\n defaultTimeFrame: 'week',\r\n timeFrames: ['week', 'month', 'quarter', 'year'],\r\n },\r\n\r\n [SubReportTypes.SystemPage]: {\r\n defaultTimeFrame: 'day',\r\n timeFrames: ['day', 'week'],\r\n },\r\n [SubReportTypes.MachineConfig]: {\r\n defaultTimeFrame: 'day',\r\n timeFrames: ['day', 'week'],\r\n },\r\n [SubReportTypes.ServiceTicket]: {\r\n defaultTimeFrame: 'day',\r\n timeFrames: ['day', 'week'],\r\n },\r\n },\r\n Apollo: {\r\n [MainReportTypes.Overview]: {\r\n defaultTimeFrame: 'day',\r\n timeFrames: ['day', 'week', 'custom'],\r\n },\r\n [MainReportTypes.Systems]: {\r\n defaultTimeFrame: 'day',\r\n timeFrames: ['day', 'week', 'custom'],\r\n },\r\n [MainReportTypes.Jobs]: {\r\n defaultTimeFrame: 'week',\r\n timeFrames: ['day', 'week', 'month', 'quarter', 'year', 'custom'],\r\n },\r\n\r\n [SubReportTypes.SystemPage]: {\r\n defaultTimeFrame: 'day',\r\n timeFrames: ['day', 'week'],\r\n },\r\n [SubReportTypes.MachineConfig]: {\r\n defaultTimeFrame: 'day',\r\n timeFrames: ['day', 'week'],\r\n },\r\n [SubReportTypes.ServiceTicket]: {\r\n defaultTimeFrame: 'day',\r\n timeFrames: ['day', 'week'],\r\n },\r\n },\r\n};\r\n","import { ErrorKind, ErrorsHandler } from 'contracts/errors-handling';\r\n\r\nclass ErrorsHandlerService implements ErrorsHandler {\r\n public onError = (error: Error, errorKind: ErrorKind, description?: string): void => {\r\n if (process.env.NODE_ENV === 'development') {\r\n console.error(\r\n `Error of '${errorKind}' kind;\\n${error},\\nDescription: ${description || 'NONE'}`\r\n );\r\n }\r\n };\r\n}\r\n\r\nexport default new ErrorsHandlerService();\r\n","import { createSelector } from 'reselect';\r\nimport { RootAction } from 'actions';\r\nimport { setActiveOverviewChart } from 'actions/uiActions';\r\nimport { ActiveOverviewChart, Store } from 'store/storeTypes';\r\nimport { createReducer } from 'typesafe-actions';\r\nimport { systemGroupSelector } from './systemGroupUiReducer';\r\n\r\nexport type OverviewUI = {\r\n activeChart: { DTF: ActiveOverviewChart; DTG: ActiveOverviewChart };\r\n};\r\n\r\nconst INIT_STATE: OverviewUI = {\r\n activeChart: {\r\n DTF: ActiveOverviewChart.Speed,\r\n DTG: ActiveOverviewChart.Speed,\r\n },\r\n};\r\nconst reducer = createReducer(INIT_STATE).handleAction(\r\n setActiveOverviewChart,\r\n (state, action) => {\r\n return {\r\n ...state,\r\n activeChart: { ...state.activeChart, ...action.payload },\r\n };\r\n }\r\n);\r\n\r\nexport default reducer;\r\n\r\nconst uiStateSelector = (state: Store) => {\r\n return state.ui;\r\n};\r\nconst uiOverviewSelector = createSelector([uiStateSelector], uiState => {\r\n return uiState['overview'];\r\n});\r\nexport const uiOverviewActiveChartSelector = createSelector([uiOverviewSelector], uiOverview => {\r\n return uiOverview['activeChart'];\r\n});\r\nexport const uiOverviewActiveChartSelectorBySystemGroupSelector = createSelector(\r\n [uiOverviewActiveChartSelector, systemGroupSelector],\r\n (uiOverviewActiveChart, systemGroup) => {\r\n return uiOverviewActiveChart[systemGroup];\r\n }\r\n);\r\n","export default __webpack_public_path__ + \"static/media/newSpinner.f31ccd74.gif\";","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgFunnelIcon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 22,\n viewBox: \"0 0 24 22\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M23.8865 0.536C23.7135 0.206 23.3725 0 23.0005 0H1.00051C0.62851 0 0.28751 0.206 0.11451 0.536C-0.0584896 0.865 -0.0334896 1.264 0.17751 1.569L9.00051 14.312V21C9.00051 21.553 9.44851 22 10.0005 22H14.0005C14.5525 22 15.0005 21.553 15.0005 21V14.312L23.8225 1.569C24.0345 1.264 24.0595 0.865 23.8865 0.536Z\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgFunnelIcon);\nexport default __webpack_public_path__ + \"static/media/FunnelIcon.392b1df6.svg\";\nexport { ForwardRef as ReactComponent };","var _circle;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgFilterDot(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 8,\n height: 8,\n viewBox: \"0 0 8 8\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 4,\n cy: 4,\n r: 3.5,\n fill: \"#1BB934\",\n stroke: \"white\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgFilterDot);\nexport default __webpack_public_path__ + \"static/media/FilterDot.1e388946.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2, _path3;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgDislikeWithCircle(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12 0C5.37258 0 0 5.37258 0 12C0 18.6274 5.37258 24 12 24C18.6274 24 24 18.6274 24 12C23.9806 5.38062 18.6194 0.0193593 12 0Z\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8.39995 13.6H7.59995C7.37904 13.6 7.19995 13.4209 7.19995 13.2V8.39998C7.19995 8.17906 7.37904 7.99998 7.59995 7.99998H8.79995V13.2C8.79995 13.4209 8.62087 13.6 8.39995 13.6Z\",\n fill: \"white\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M15.9529 13.9468C15.8386 13.9821 15.7197 14 15.6001 14H13.2001V15.2C13.2001 16.7296 12.1645 17.1768 11.6169 17.2C11.5082 17.2038 11.4024 17.1639 11.3233 17.0892C11.2445 17.0137 11.2 16.9092 11.2001 16.8V14.9448L9.6001 13.0248V8H14.4921C15.02 7.99759 15.4868 8.34208 15.6401 8.84721L16.7477 12.4472C16.8412 12.7515 16.81 13.0804 16.6609 13.3616C16.5119 13.6429 16.2572 13.8534 15.9529 13.9468Z\",\n fill: \"white\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgDislikeWithCircle);\nexport default __webpack_public_path__ + \"static/media/dislikeWithCircle.c2221fd4.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2, _path3;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgLikeWithCircle(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12 0C5.37258 0 0 5.37258 0 12C0 18.6274 5.37258 24 12 24C18.6274 24 24 18.6274 24 12C23.9806 5.38062 18.6194 0.0193593 12 0Z\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8.39995 10.6003H7.59995C7.37904 10.6003 7.19995 10.7794 7.19995 11.0003V15.8003C7.19995 16.0212 7.37904 16.2003 7.59995 16.2003H8.79995V11.0003C8.79995 10.7794 8.62087 10.6003 8.39995 10.6003Z\",\n fill: \"white\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M15.9529 10.2535C15.8386 10.2182 15.7197 10.2002 15.6001 10.2003H13.2001V9.00025C13.2001 7.47065 12.1645 7.02345 11.6169 7.00025C11.5082 6.99643 11.4024 7.03634 11.3233 7.11105C11.2445 7.1866 11.2 7.29108 11.2001 7.40025V9.25545L9.6001 11.1755V16.2003H14.4921C15.02 16.2027 15.4868 15.8582 15.6401 15.3531L16.7477 11.7531C16.8412 11.4488 16.81 11.1199 16.6609 10.8386C16.5119 10.5574 16.2572 10.3469 15.9529 10.2535Z\",\n fill: \"white\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgLikeWithCircle);\nexport default __webpack_public_path__ + \"static/media/likeWithCircle.097c00bc.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgSpeed(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 16,\n height: 16,\n viewBox: \"0 0 16 16\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M8 2C3.589 2 0 5.589 0 10C0 11.7405 0.557 13.4005 1.611 14.801L1.7605 15H14.239L14.389 14.801C15.443 13.4005 16 11.7405 16 10C16 5.589 12.411 2 8 2ZM8.5 3.5V5H7.5V3.5H8.5ZM1.5 10.5H3V9.5H1.5V10.5ZM4.11096 6.81797L3.05046 5.75747L3.75746 5.04997L4.81796 6.11047L4.11096 6.81797ZM7.1455 10.411C7.373 10.9145 7.965 11.138 8.4685 10.911C8.972 10.684 9.196 10.0915 8.9685 9.58846C8.7415 9.08496 6 5.44246 6 5.44246C6 5.44246 6.9185 9.90796 7.1455 10.411ZM11.8891 6.81797L11.1821 6.11097L12.2426 5.04997L12.9496 5.75697L11.8891 6.81797ZM14.5 9.5H13V10.5H14.5V9.5Z\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgSpeed);\nexport default __webpack_public_path__ + \"static/media/speed.2758da56.svg\";\nexport { ForwardRef as ReactComponent };","import { ThunkDispatch } from 'redux-thunk';\r\nimport { Action } from 'redux';\r\nimport { createAsyncAction, createStandardAction as createAction } from 'typesafe-actions';\r\nimport { TreeNodeProps } from 'react-dropdown-tree-select';\r\n\r\nimport {\r\n Store,\r\n ReportFilterData,\r\n ReportSite,\r\n ReportModel,\r\n ReportSystem,\r\n UserSystemGroupStrings,\r\n TimeModificator,\r\n} from 'store/storeTypes';\r\nimport { ReportTypesNew, TimeFrame } from 'models/ReportData';\r\nimport { makeApiUrl } from './_shared/utils';\r\nimport { authService } from 'services/AuthProvider';\r\nimport apiAction from './_shared/apiAction';\r\nimport { addWeeks, startOfWeek } from 'date-fns';\r\nimport { KonnectAnalytics } from 'KonnectAnalytics/konnectAnalytics';\r\n\r\nexport const getEmptyStateAC = createAsyncAction(\r\n 'GET_EMPTY_STATE_STARTED',\r\n 'GET_EMPTY_STATE_SUCCESS',\r\n 'GET_EMPTY_STATE_FAILED'\r\n)();\r\n\r\nexport const getEmptyState = () => {\r\n const url = makeApiUrl('/api/reports/reported-printers-status');\r\n const { isAuthenticated, idTokenPayload } = authService;\r\n if (isAuthenticated() && idTokenPayload && idTokenPayload.sub) {\r\n return apiAction({\r\n request: {\r\n url,\r\n },\r\n logic: {\r\n onFailed: (error, dispatch) => {\r\n dispatch(getEmptyStateAC.failure(error));\r\n },\r\n onStarted: dispatch => {\r\n dispatch(getEmptyStateAC.request({}));\r\n },\r\n onSuccess: (data, dispatch) => {\r\n dispatch(getEmptyStateAC.success(data));\r\n },\r\n },\r\n });\r\n }\r\n};\r\n\r\ninterface SetInitFilterStatePayload {\r\n selectedSystemGroup: UserSystemGroupStrings;\r\n filterData: ReportFilterData;\r\n}\r\nexport const setInitFilterStateAC = createAction('SET_INITIAL_FILTER_STATE')<\r\n SetInitFilterStatePayload\r\n>();\r\nexport const setInitFilterState = () => (\r\n dispatch: ThunkDispatch,\r\n getState: () => Store\r\n) => {\r\n const { filterData } = getState().reports;\r\n const { selectedSystemGroup } = getState().ui;\r\n dispatch(\r\n setInitFilterStateAC({\r\n selectedSystemGroup,\r\n filterData: filterData[selectedSystemGroup]!,\r\n })\r\n );\r\n};\r\n\r\nexport interface SetFilterFromUriQueryPayload {\r\n filterData: ReportFilterData;\r\n timeframe: TimeFrame;\r\n selectedDate: string | null;\r\n selectedSiteIds: string | null;\r\n selectedModelIds: string | null;\r\n selectedSystemSerials: string | null;\r\n selectedSystemGroup: UserSystemGroupStrings;\r\n}\r\nexport type SetFilterFromUriQuery = Omit;\r\n\r\nexport const setFilterFromUriQueryAC = createAction('SET_FILTER_FROM_URI_QUERY')<\r\n SetFilterFromUriQueryPayload\r\n>();\r\nexport const setFilterFromUriQuery = (params: SetFilterFromUriQuery) => (\r\n dispatch: ThunkDispatch,\r\n getState: () => Store\r\n) => {\r\n const { filterData, filterState } = getState().reports;\r\n const selectedSystemGroup = params?.selectedSystemGroup;\r\n dispatch(\r\n setFilterFromUriQueryAC({\r\n filterData: filterData[selectedSystemGroup]!,\r\n selectedSiteIds: filterState[selectedSystemGroup]?.selectedSiteIds,\r\n selectedModelIds: filterState[selectedSystemGroup]?.selectedModelIds,\r\n selectedSystemSerials: filterState[selectedSystemGroup]?.selectedSystemSerials,\r\n ...params,\r\n })\r\n );\r\n};\r\nexport type CustomTimeFrameProperties = {\r\n customTimeFrameStartDate: Date | null;\r\n customTimeFrameEndDate: Date | null;\r\n customTimeFrameStartHour?: number | null;\r\n customTimeFrameEndHour?: number | null;\r\n customEndTimeModificator?: TimeModificator;\r\n customStartTimeModificator?: TimeModificator;\r\n};\r\ninterface SetTimeframePayload {\r\n selectedSystemGroup: UserSystemGroupStrings;\r\n timeframe: TimeFrame;\r\n startDate?: Date;\r\n activeReport?: ReportTypesNew;\r\n customTimeFrameProperties?: CustomTimeFrameProperties;\r\n}\r\nexport const setCustomTimeFrameHoursToDefaultValue = createAction(\r\n 'SET_CUSTOM_TIMEFRAME_HOURS_TO_DEFAULTT_VALUE'\r\n)<{ selectedSystemGroup: UserSystemGroupStrings }>();\r\nexport const setTimeframeAC = createAction('SET_TIMEFRAME')();\r\n\r\nexport const setTimeframe = (\r\n timeframe: TimeFrame,\r\n startDate?: Date,\r\n customTimeFrameProperties?: CustomTimeFrameProperties\r\n) => (dispatch: ThunkDispatch, getState: () => Store) => {\r\n const activeReport = getState().reports?.activeReport;\r\n const { selectedSystemGroup } = getState().ui;\r\n\r\n KonnectAnalytics.changeTimeFrameFilter('changeTimeFrame', {\r\n nextTimeFilter: timeframe,\r\n startDate: customTimeFrameProperties?.customTimeFrameStartDate.toDateString(),\r\n endDate: customTimeFrameProperties?.customTimeFrameEndDate.toDateString(),\r\n customStartHour: customTimeFrameProperties?.customTimeFrameStartHour,\r\n customEndHour: customTimeFrameProperties?.customTimeFrameEndHour,\r\n });\r\n dispatch(\r\n setTimeframeAC({\r\n selectedSystemGroup,\r\n timeframe,\r\n startDate,\r\n activeReport,\r\n customTimeFrameProperties,\r\n })\r\n );\r\n};\r\n\r\ninterface SetActiveDatePayload {\r\n selectedSystemGroup: UserSystemGroupStrings;\r\n timeframe: TimeFrame;\r\n date: Date;\r\n}\r\n\r\nexport const setActiveDateAC = createAction('SET_ACTIVE_DATE')();\r\nexport function setActiveDate(date: Date) {\r\n return async function(dispatch: ThunkDispatch, getState: () => Store) {\r\n const { selectedSystemGroup } = getState().ui;\r\n const startDate = getState().reports.filterData[selectedSystemGroup].startDate;\r\n const timeframe = getState().reports.filterState[selectedSystemGroup]!.timeframe;\r\n const isStartDateMoreThanIncomeDate = startDate > date;\r\n if (isStartDateMoreThanIncomeDate) {\r\n const checkedObkjectWithProperDate = {\r\n date: startDate,\r\n timeframe,\r\n selectedSystemGroup,\r\n };\r\n dispatch(setActiveDateAC(checkedObkjectWithProperDate));\r\n }\r\n //* if that is in week timeframe we always set selected day on the Monday\r\n if (timeframe === 'week') {\r\n //*get first day(Monday) of current week - just to keep selectedDate\r\n //* in state.reports.filterState[selectedSystemGroup].selectedDate;\r\n //*in the beggining of this week\r\n const firstDayInWeek = startOfWeek(date, { weekStartsOn: 1 });\r\n dispatch(setActiveDateAC({ date: firstDayInWeek, timeframe, selectedSystemGroup }));\r\n } else {\r\n dispatch(setActiveDateAC({ date, timeframe, selectedSystemGroup }));\r\n }\r\n };\r\n}\r\nexport const setNodeFoldedStateAC = createAction('SET_NODE_FOLDED_STATE')<{\r\n node: TreeNodeProps;\r\n selectedSystemGroup: UserSystemGroupStrings;\r\n}>();\r\n\r\nexport const setNodeFoldedState = (node: TreeNodeProps) => (\r\n dispatch: ThunkDispatch,\r\n getState: () => Store\r\n) => {\r\n const { selectedSystemGroup } = getState().ui;\r\n dispatch(\r\n setNodeFoldedStateAC({\r\n selectedSystemGroup,\r\n node,\r\n })\r\n );\r\n};\r\n\r\ninterface SetFilterStatePayload {\r\n selectedSystemGroup: UserSystemGroupStrings;\r\n selectedNodes: TreeNodeProps[];\r\n currentNode?: TreeNodeProps;\r\n sites: ReportSite[];\r\n models: ReportModel[];\r\n systems: ReportSystem[];\r\n}\r\n\r\ninterface ResetFilterStatePayload {\r\n selectedSystemGroup: UserSystemGroupStrings;\r\n sites: ReportSite[];\r\n models: ReportModel[];\r\n systems: ReportSystem[];\r\n}\r\n\r\nexport const setFilterSystemsStateAC = createAction('SET_FILTER_SYSTEMS_STATE')<\r\n SetFilterStatePayload\r\n>();\r\nexport function setFilterSystemsState(selectedNodes: TreeNodeProps[], currentNode?: TreeNodeProps) {\r\n return async function(dispatch: ThunkDispatch, getState: () => Store) {\r\n const { selectedSystemGroup } = getState().ui;\r\n const { sites, models, systems } = getState().reports.filterData[selectedSystemGroup]!;\r\n dispatch(\r\n setFilterSystemsStateAC({\r\n selectedSystemGroup,\r\n selectedNodes,\r\n currentNode,\r\n sites,\r\n models,\r\n systems,\r\n })\r\n );\r\n };\r\n}\r\n\r\nexport const resetFilterSystemsStateAC = createAction('RESET_FILTER_SYSTEMS_STATE')<\r\n ResetFilterStatePayload\r\n>();\r\nexport function resetFilterSystemsState() {\r\n return async function(dispatch: ThunkDispatch, getState: () => Store) {\r\n const { selectedSystemGroup } = getState().ui;\r\n const { sites, models, systems } = getState().reports.filterData[selectedSystemGroup]!;\r\n dispatch(resetFilterSystemsStateAC({ selectedSystemGroup, sites, models, systems }));\r\n };\r\n}\r\n\r\ninterface JumpToLatestPeriodPayload {\r\n selectedSystemGroup: UserSystemGroupStrings;\r\n filterData: ReportFilterData;\r\n}\r\n\r\nexport const jumpToLatestPeriodAC = createAction('JUMP_TO_LATEST_PERIOD')<\r\n JumpToLatestPeriodPayload\r\n>();\r\nexport const jumpToLatestPeriod = () => (\r\n dispatch: ThunkDispatch,\r\n getState: () => Store\r\n) => {\r\n const { filterData } = getState().reports;\r\n const { selectedSystemGroup } = getState().ui;\r\n dispatch(\r\n jumpToLatestPeriodAC({\r\n selectedSystemGroup,\r\n filterData: filterData[selectedSystemGroup]!,\r\n })\r\n );\r\n};\r\n\r\ninterface ApplyMobileFiltersPayload {\r\n isApplyMobileFilter: boolean;\r\n selectedSystemGroup: UserSystemGroupStrings;\r\n}\r\n\r\nexport const applyMobileFiltersAC = createAction('APPLY_MOBILE_FILTERS')<\r\n ApplyMobileFiltersPayload\r\n>();\r\nexport const applyMobileFilters = (isApplyMobileFilter: boolean) => (\r\n dispatch: ThunkDispatch,\r\n getState: () => Store\r\n) => {\r\n const { selectedSystemGroup } = getState().ui;\r\n dispatch(\r\n applyMobileFiltersAC({\r\n selectedSystemGroup,\r\n isApplyMobileFilter,\r\n })\r\n );\r\n};\r\n\r\nexport const getDefaultFilterQueries = createAction('GET_DEFAULT_FILTER_QUERIES')<\r\n SetFilterFromUriQuery\r\n>();\r\n\r\ninterface SetSelectedSystemIdsPayload {\r\n selectedSystemSerials: Array;\r\n selectedSystemGroup: UserSystemGroupStrings;\r\n}\r\n\r\nexport const setSelectedSystemIds = (selectedSystemSerials: Array) => (\r\n dispatch: ThunkDispatch,\r\n getState: () => Store\r\n) => {\r\n const { selectedSystemGroup } = getState().ui;\r\n dispatch(\r\n setSelectedSystemIdsAC({\r\n selectedSystemGroup,\r\n selectedSystemSerials,\r\n })\r\n );\r\n};\r\n\r\nexport const setSelectedSystemIdsAC = createAction('SET_SELECTED_SYSTEM_IDS')<\r\n SetSelectedSystemIdsPayload\r\n>();\r\n\r\nexport const openFilterPopUpMenu = createAction('OPEN_FILTER_POPUP_MENU')<{\r\n selectedSystemGroup: string;\r\n}>();\r\nexport const toggleFilterRowSystemsSelection = createAction('SELECT_SYSTEMS_BY_SITE')<{\r\n selectedSystemGroup: string;\r\n siteId: string;\r\n filterData: any;\r\n filterState: any;\r\n}>();\r\nexport const toggleFilterModelRowSystemsSelection = createAction('SELECT_SYSTEMS_BY_MODEL')<{\r\n selectedSystemGroup: string;\r\n modelId: string;\r\n siteId: string;\r\n filterData: any;\r\n filterState: any;\r\n}>();\r\nexport const toggleFilterSerialRowSystemSelection = createAction('SELECT_SYSTEMS_BY_SERIAL')<{\r\n selectedSystemGroup: string;\r\n modelId: string;\r\n siteId: string;\r\n serialId: string;\r\n filterData: any;\r\n filterState: any;\r\n}>();\r\nexport const toggleAllSystemsSelection = createAction('TOGGLE_ALL_SYSTEMS_SELECTION')<{\r\n selectedSystemGroup: string;\r\n // filterData?: any;\r\n // filterState?: any;\r\n}>();\r\nexport const setFilterValue = createAction('SET_FILTER_VALUE')<{\r\n value: string;\r\n selectedSystemGroup: string;\r\n}>();\r\nexport const unselectSerialsByModel = createAction('UNSELECT_SERIAL_BY_MODEL')<{\r\n selectedSystemGroup: string;\r\n modelId: string;\r\n filterData: ReportFilterData;\r\n}>();\r\n","import { ActionType } from 'typesafe-actions';\r\n\r\nimport * as appUser from './appUserActions';\r\nimport * as userSettings from './userSettingsActions';\r\nimport * as goalApi from './goalApiActions';\r\nimport * as reportApi from './reportApiActions';\r\nimport * as reportFilter from './reportFilterActions';\r\nimport * as reportUi from './reportUiActions';\r\nimport * as schedulerApi from './schedulerApiActions';\r\nimport * as schedulerUi from './schedulerUiActions';\r\nimport * as filterCalenderUi from './filterCalendarUiAction';\r\nimport * as scopeApi from './scopeApiActions';\r\nimport * as ui from './uiActions';\r\nimport * as userApi from './userApiActions';\r\nimport * as userUi from './userUiActions';\r\nimport * as systemAnalysis from './systemAnalysisActions';\r\nimport * as overview from './overviewActions';\r\nimport * as machineConfig from './machineConfigActions';\r\nimport * as jobSummary from './jobSummaryActions';\r\nimport * as jobAnalysis from './jobAnalysisActions';\r\nimport * as apiManagement from './apiManagementActions';\r\nimport * as systemPage from './systemPageActions';\r\nimport * as serviceTicket from './serviceTicketActions';\r\nexport const actions = {\r\n appUser,\r\n reportApi,\r\n reportFilter,\r\n reportUi,\r\n goalApi,\r\n schedulerApi,\r\n schedulerUi,\r\n filterCalenderUi,\r\n scopeApi,\r\n ui,\r\n userApi,\r\n userUi,\r\n userSettings,\r\n systemAnalysis,\r\n overview,\r\n machineConfig,\r\n jobSummary,\r\n jobAnalysis,\r\n apiManagement,\r\n systemPage,\r\n serviceTicket,\r\n};\r\n\r\nexport type RootAction = ActionType;\r\n","import config from 'config/config';\r\n\r\nexport const defaultAppPath = '/';\r\nexport const authCallbackPath = '/callback';\r\nexport const logoutPath = '/logout';\r\nexport const unsubscribePath = '/unsubscribe';\r\nexport const superUserLogin = '/superUser';\r\n\r\nexport const userManagementPath = '/users';\r\nexport const apiManagementPath = '/api';\r\nexport const goalsPath = '/goals';\r\nexport const schedulerPath = '/scheduler';\r\nexport const settingsPath = '/settings';\r\nexport const configurationPath = '/config.js';\r\nexport const privacyPolicyPath = '/documents/privacy-policy';\r\nexport const termsOfUsePath = '/documents/terms-of-use';\r\nexport const productTCPath = '/documents/product-tc';\r\n\r\nexport const reportsPath = '/reports/:reportType/';\r\nexport const overviewReportPath = '/reports/overview';\r\nexport const jobsReportPath = '/reports/jobs';\r\nexport const systemsReportPath = '/reports/systems';\r\nexport const systemsSubReportsPath = '/reports/systems/:subReportType/:systemName';\r\nexport const documentViewerPath = '/documents/:docName';\r\nexport const authCallbackSuffixes = {\r\n access_token: 'access_token',\r\n id_token: 'id_token',\r\n error: 'error',\r\n};\r\n\r\nexport const authCallbacksRegex = new RegExp(Object.values(authCallbackSuffixes).join('|'));\r\n\r\nexport const AUTH0_CLAIMS_NAMESPACE = config.AUTH0_CLAIMS_NAMESPACE;\r\nexport const USER_ROLES = {\r\n USER: 'user',\r\n ADMIN: 'admin',\r\n ENROLLMENT: 'enrollment',\r\n};\r\nconst blobBaseUrl = config.BLOB_URL;\r\n\r\nexport const METRICS_GLOSSARY_DTF_PDF_LINK = `${blobBaseUrl}/dynamic-in-app-docs/DTF_Konnect_Glossary.pdf`;\r\nexport const METRICS_GLOSSARY_DTG_PDF_LINK = `${blobBaseUrl}/dynamic-in-app-docs/DTG_Konnect_Glossary.pdf`;\r\n\r\nexport const PRIVACY_POLICY_PDF = `${blobBaseUrl}/dynamic-in-app-docs/Kornit-PrivacyPolicy.pdf`;\r\nexport const PRODUCT_TC_PDF = `${blobBaseUrl}/dynamic-in-app-docs/Kornit-Product-Use.pdf`;\r\nexport const TERMS_OF_USE_PDF = `${blobBaseUrl}/dynamic-in-app-docs/KonnectwebsiteTermsofUse.pdf`;\r\nexport const API_PDF = `${blobBaseUrl}/dynamic-in-app-docs/Data_API.pdf`;\r\n\r\nexport const KONNECT_TRAINING_LINK_DTG = 'https://www.kornit.com/lps/konnect/#/';\r\nexport const KONNECT_TRAINING_LINK_DTF = 'https://kornit.com/lps/konnect/dtf/#/';\r\n","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgArrowUp(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M13.121 0.29325L20.828 8.00025L19.414 9.41425L13.414 3.41425V21.0002C13.414 21.5532 12.966 22.0002 12.414 22.0002C11.862 22.0002 11.414 21.5532 11.414 21.0002V3.41425L5.414 9.41425L4 8.00025L11.707 0.29325C12.098 -0.09775 12.73 -0.09775 13.121 0.29325Z\",\n fill: \"#7F8FA4\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgArrowUp);\nexport default __webpack_public_path__ + \"static/media/ArrowUp.88c86ea6.svg\";\nexport { ForwardRef as ReactComponent };","import * as React from 'react';\r\nimport styled from 'styled-components';\r\nimport { UnitDiv, DescriptionDiv, HrHorizontal, Spinner, ValueDiv } from './Styles';\r\nimport { ReactComponent as ArrowUp } from '../../assets/icons/ArrowUp.svg';\r\nimport { notUndefiend, valueAsString } from 'helpers/conversions';\r\nimport { appearanceEffect, NoDataIconWrapper } from 'globalStyle';\r\nimport { uniqIdentificatorsObject } from 'helpers/AutomationTest/overwievIds';\r\nimport { UserSystemGroup, UserSystemGroupStrings } from 'store/storeTypes';\r\nimport EmptyStateIcon from 'components/_common/EmptyState';\r\n\r\nconst Stats = styled.div`\r\n display: flex;\r\n align-items: center;\r\n font-size: 12px;\r\n line-height: 14.22px;\r\n margin-top: 8px 0px 17px 0px;\r\n @media only screen and (max-width: 430px) {\r\n font-size: 10px;\r\n line-height: 12.22px;\r\n margin-top: 6px 0px 15px 0px;\r\n }\r\n @media screen and (min-width: 1920px) {\r\n font-size: 15px;\r\n line-height: 15px;\r\n }\r\n`;\r\n\r\nconst AddedDataAmount = styled.div`\r\n font-size: 21px;\r\n line-height: 20.44px;\r\n font-weight: 300;\r\n margin-right: 9px;\r\n @media only screen and (max-width: 430px) {\r\n font-size: 18px;\r\n line-height: 19px;\r\n font-weight: 300;\r\n margin-right: 6px;\r\n }\r\n @media screen and (min-width: 1920px) {\r\n font-size: 24px;\r\n line-height: 24px;\r\n }\r\n`;\r\nconst AddedDataType = styled.div`\r\n font-weight: 400;\r\n font-size: 14px;\r\n line-height: 17px;\r\n color: #7f8fa4;\r\n @media only screen and (max-width: 430px) {\r\n font-weight: 400;\r\n font-size: 13px;\r\n line-height: 15px;\r\n color: #7f8fa4;\r\n }\r\n @media screen and (min-width: 1920px) {\r\n font-size: 17px;\r\n line-height: 17px;\r\n }\r\n`;\r\nconst AddedDataUnit = styled.div`\r\n font-size: 16px;\r\n line-height: 18.96px;\r\n font-weight: 300;\r\n\r\n @media screen and (min-width: 1920px) {\r\n font-size: 19px;\r\n line-height: 19px;\r\n }\r\n`;\r\nexport const StatsData = (percentage: number) => {\r\n const color = percentage >= 0 ? '#1BB934' : '#FF4081';\r\n const sign = percentage > 0 ? '+' : '';\r\n return (\r\n
\r\n {sign}\r\n {percentage && (percentage * 100).toFixed(2)}%\r\n
\r\n );\r\n};\r\ntype Data = {\r\n value: number | Date | undefined;\r\n unit?: string;\r\n description: string;\r\n trend: number | undefined;\r\n formatter?: (value: number | string | undefined | Record | Date) => string;\r\n};\r\nexport interface ICardProps {\r\n value: number | undefined;\r\n units: string;\r\n description: string;\r\n icons: { positive: React.ReactElement; negative?: React.ReactElement };\r\n stats?: number | undefined;\r\n statsDescription?: string;\r\n addedData?: {\r\n upper: Data;\r\n lower?: Data;\r\n };\r\n isPercentage?: boolean;\r\n cardName?: string;\r\n showOnlyBody?: boolean;\r\n width?: number;\r\n selectedSystemGroup?: UserSystemGroupStrings;\r\n isHidden?: boolean;\r\n}\r\n\r\nconst AddedData = (\r\n value: string,\r\n description: string,\r\n trend: number | undefined,\r\n unit?: string,\r\n cardName?: string,\r\n upOrBottom?: string,\r\n upOrBottomArrow?: string\r\n) => {\r\n return (\r\n
\r\n \r\n
\r\n \r\n {value}\r\n \r\n {unit && {unit}}\r\n
\r\n {trend !== 0 && trend !== undefined && (\r\n \r\n )}\r\n
\r\n {description}\r\n \r\n );\r\n};\r\nconst InnerCardWrapper = styled.div`\r\n display: flex;\r\n height: 100%;\r\n width: 100%;\r\n padding: 12px;\r\n justify-content: space-between;\r\n animation-name: ${appearanceEffect};\r\n animation-duration: 500ms;\r\n`;\r\nconst LeftColumn = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n justify-content: space-between;\r\n`;\r\nconst UpperRow = styled.div``;\r\nconst BottomRow = styled.div``;\r\nconst RightColumn = styled.div``;\r\nconst CardDiv = styled.div<{\r\n width: number;\r\n bigger?: boolean;\r\n height?: number;\r\n align?: boolean;\r\n isMobile?: boolean;\r\n selectedSystemGroup?: string;\r\n order?: number;\r\n isHidden?: boolean;\r\n}>`\r\n background: ${props => (props.isHidden ? 'transparent' : '#ffffff')};\r\n border: ${props => (props.isHidden ? 'none' : '1px solid #c5d0de')};\r\n box-sizing: border-box;\r\n box-shadow: 0px 0px 3px rgba(0, 0, 0, 0.03);\r\n border-radius: 4px;\r\n display: flex;\r\n justify-content: space-between;\r\n height: 100%;\r\n width: ${props => props.width}%;\r\n\r\n align-items: ${props => (props.align === undefined ? 'center' : '')};\r\n margin-bottom: ${props => (props.isMobile === true ? '10px' : '')};\r\n`;\r\nexport default function Card(props: ICardProps) {\r\n const {\r\n value,\r\n units,\r\n description,\r\n icons,\r\n stats,\r\n statsDescription,\r\n addedData,\r\n isPercentage,\r\n cardName,\r\n showOnlyBody,\r\n width,\r\n selectedSystemGroup,\r\n isHidden,\r\n } = props;\r\n\r\n const [isNegative, setIsNegative] = React.useState(false);\r\n React.useEffect(() => {\r\n if (notUndefiend([stats])) {\r\n if (stats! < 0) {\r\n setIsNegative(true);\r\n } else if (description === 'Average Availability' && value >= 0.999) {\r\n setIsNegative(false);\r\n } else {\r\n setIsNegative(false);\r\n }\r\n }\r\n }, [stats]); // eslint-disable-line react-hooks/exhaustive-deps\r\n\r\n return (\r\n \r\n {selectedSystemGroup === UserSystemGroup.Apollo && cardName === 'availability' ? (\r\n \r\n \r\n \r\n ) : notUndefiend([value]) ? (\r\n \r\n \r\n \r\n \r\n {isNegative ? icons.negative : icons.positive}\r\n
\r\n \r\n {valueAsString(value, isPercentage)}\r\n \r\n {units}\r\n
\r\n \r\n {description}\r\n
\r\n\r\n {notUndefiend([stats]) && !showOnlyBody && (\r\n \r\n \r\n \r\n {StatsData(stats!)}\r\n
{statsDescription}
\r\n \r\n
\r\n )}\r\n
\r\n {!!addedData && selectedSystemGroup !== UserSystemGroup.Apollo && (\r\n \r\n {AddedData(\r\n addedData.upper.formatter\r\n ? addedData.upper.formatter(addedData.upper.value)\r\n : valueAsString(addedData.upper.value!),\r\n addedData.upper.description,\r\n addedData.upper.trend,\r\n addedData.upper.unit,\r\n cardName,\r\n 'upperValue',\r\n 'upperArrow'\r\n )}\r\n \r\n {addedData.lower &&\r\n AddedData(\r\n addedData.lower.formatter\r\n ? addedData.lower.formatter(addedData.lower.value)\r\n : valueAsString(addedData.lower.value!),\r\n addedData.lower.description,\r\n addedData.lower.trend,\r\n addedData.lower.unit,\r\n cardName,\r\n 'bottomValue',\r\n 'bottomArrow'\r\n )}\r\n \r\n )}\r\n
\r\n ) : (\r\n Spinner(30)\r\n )}\r\n
\r\n );\r\n}\r\n","import { appearanceEffect } from 'globalStyle';\r\nimport { notUndefiend, valueAsString } from 'helpers/conversions';\r\nimport React from 'react';\r\nimport styled from 'styled-components';\r\nimport { ICardProps, StatsData } from './Card';\r\nimport { Spinner, SpinnerContainer } from './Styles';\r\nconst CardContent = styled.div`\r\n box-sizing: border-box;\r\n height: 100%;\r\n width: 100%;\r\n display: flex;\r\n flex-direction: column;\r\n justify-content: space-between;\r\n`;\r\nconst UpperRow = styled.div`\r\n box-sizing: border-box;\r\n height: 70px;\r\n width: 100%;\r\n display: flex;\r\n flex-direction: column;\r\n justify-content: flex-start;\r\n`;\r\nconst BottomRow = styled.div`\r\n box-sizing: border-box;\r\n height: 30px;\r\n width: 100%;\r\n display: flex;\r\n align-items: flex-end;\r\n border-top: 1px solid #c5d0de;\r\n font-family: Rubik;\r\n font-style: normal;\r\n font-weight: normal;\r\n font-size: 12px;\r\n line-height: 14px;\r\n color: #354052;\r\n`;\r\nconst ContentRow = styled.div`\r\n display: flex;\r\n justify-content: flex-start;\r\n align-items: flex-start;\r\n\r\n color: #354052;\r\n animation-name: ${appearanceEffect};\r\n animation-duration: 500ms;\r\n`;\r\nconst DescriptionRow = styled.div`\r\n display: flex;\r\n justify-content: flex-start;\r\n align-items: flex-start;\r\n font-family: Rubik;\r\n font-style: normal;\r\n font-weight: normal;\r\n font-size: 14px;\r\n line-height: 16px;\r\n color: #7f8fa4;\r\n`;\r\nconst Value = styled.div`\r\n margin-left: 10px;\r\n font-family: Rubik;\r\n font-style: normal;\r\n font-weight: 500;\r\n color: #354052;\r\n font-size: 32px;\r\n`;\r\nconst Units = styled.div`\r\n font-family: Rubik;\r\n font-style: normal;\r\n font-weight: 500;\r\n font-size: 16px;\r\n line-height: 24px;\r\n color: #354052;\r\n margin-top: 15px;\r\n margin-left: 3px;\r\n`;\r\nconst TotalImpressionCardMobile = (props: ICardProps) => {\r\n const {\r\n value,\r\n units,\r\n description,\r\n icons,\r\n stats,\r\n statsDescription,\r\n addedData,\r\n isPercentage,\r\n cardName,\r\n } = props;\r\n const [isNegative, setIsNegative] = React.useState(false);\r\n\r\n React.useEffect(() => {\r\n if (notUndefiend([stats])) {\r\n if (stats! < 0) {\r\n setIsNegative(true);\r\n } else if (description === 'Average Availability' && (value as number) >= 0.999) {\r\n setIsNegative(false);\r\n } else {\r\n setIsNegative(false);\r\n }\r\n }\r\n }, [stats]); // eslint-disable-line react-hooks/exhaustive-deps\r\n return (\r\n \r\n {notUndefiend([value]) ? (\r\n <>\r\n \r\n \r\n {isNegative ? icons.negative : icons.positive}{' '}\r\n \r\n {valueAsString(value, isPercentage)}\r\n \r\n {units}\r\n \r\n \r\n {description}\r\n \r\n \r\n \r\n {StatsData(stats!)} {statsDescription}\r\n \r\n \r\n ) : (\r\n {Spinner()}\r\n )}\r\n \r\n );\r\n};\r\nexport default TotalImpressionCardMobile;\r\n","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgTopCardsArrowUp(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 20,\n height: 17,\n viewBox: \"0 0 20 17\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M2.0769 7.40361L3.70353 8.80361L8.69957 4.50361V16.7036H11.0233V4.50361L16.0194 8.80361L17.646 7.40361L9.86145 0.703613L2.0769 7.40361Z\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgTopCardsArrowUp);\nexport default __webpack_public_path__ + \"static/media/TopCardsArrowUp.6d5c7232.svg\";\nexport { ForwardRef as ReactComponent };","import { appearanceEffect } from 'globalStyle';\r\nimport { notUndefiend, valueAsString } from 'helpers/conversions';\r\nimport React, { useRef } from 'react';\r\nimport styled from 'styled-components';\r\nimport { ICardProps, StatsData } from './Card';\r\nimport { Spinner, SpinnerContainer } from './Styles';\r\nimport { ReactComponent as ArrowUp } from '../../assets/icons/ArrowUp.svg';\r\nimport { UserSystemGroup, UserSystemGroupStrings } from 'store/storeTypes';\r\n\r\nconst CardContent = styled.div`\r\n width: 100%;\r\n height: 100%;\r\n box-sizing: border-box;\r\n display: flex;\r\n justify-content: space-between;\r\n`;\r\nconst LeftColumn = styled.div<{ selectedSystemGroup: UserSystemGroupStrings }>`\r\n display: flex;\r\n box-sizing: border-box;\r\n height: 100%;\r\n width: ${props => (props.selectedSystemGroup === UserSystemGroup.Apollo ? '100%' : '')};\r\n flex-direction: column;\r\n justify-content: space-between;\r\n animation-name: ${appearanceEffect};\r\n animation-duration: 500ms;\r\n`;\r\nconst LeftColUpperRow = styled.div`\r\n height: 70px;\r\n box-sizing: border-box;\r\n display: flex;\r\n flex-direction: column;\r\n`;\r\nconst LeftColUpperRowValueSubRow = styled.div`\r\n display: flex;\r\n align-items: flex-start;\r\n`;\r\nconst Icon = styled.div`\r\n margin-top: 5px;\r\n`;\r\nconst Units = styled.div`\r\n font-family: Rubik;\r\n font-style: normal;\r\n font-weight: 500;\r\n font-size: 16px;\r\n color: #354052;\r\n margin-top: 15px;\r\n margin-left: 3px;\r\n`;\r\nconst Value = styled.div`\r\n font-family: Rubik;\r\n font-style: normal;\r\n font-weight: 500;\r\n font-size: 32px;\r\n color: #354052;\r\n margin-left: 10px;\r\n`;\r\nconst LeftColUpperRowDescriptionSubRow = styled.div`\r\n display: flex;\r\n justify-content: flex-start;\r\n align-items: flex-start;\r\n font-family: Rubik;\r\n font-style: normal;\r\n font-weight: normal;\r\n font-size: 14px;\r\n line-height: 16px;\r\n color: #7f8fa4;\r\n`;\r\nconst LeftColBottomRow = styled.div`\r\n height: 30px;\r\n box-sizing: border-box;\r\n display: flex;\r\n font-family: Rubik;\r\n font-style: normal;\r\n font-weight: normal;\r\n font-size: 12px;\r\n line-height: 14px;\r\n align-items: flex-end;\r\n border-top: 1px solid #c5d0de;\r\n`;\r\n\r\nconst RightColumn = styled.div`\r\n height: 100%;\r\n box-sizing: border-box;\r\n display: flex;\r\n flex-direction: column;\r\n\r\n align-items: flex-start;\r\n animation-name: ${appearanceEffect};\r\n animation-duration: 500ms;\r\n`;\r\nconst RightColumnRow = styled.div`\r\n box-sizing: border-box;\r\n display: flex;\r\n flex-direction: column;\r\n border-bottom: 1px solid #c5d0de;\r\n`;\r\nconst RightColumnRowValueSubRow = styled.div`\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: baseline;\r\n`;\r\nconst ValueAndUnitWrapper = styled.div.attrs({\r\n 'data-id': 'ValueAndUnitWrapper',\r\n})`\r\n display: flex;\r\n justify-content: start;\r\n margin-right: 5px;\r\n`;\r\nconst RightColumnRowValueSubRowItemIcon = styled.div``;\r\nconst RightColumnRowValueSubRowItemUnits = styled.div`\r\n font-family: Rubik;\r\n font-style: normal;\r\n font-weight: normal;\r\n font-size: 14px;\r\n color: #354052;\r\n margin-top: 5px;\r\n`;\r\nconst RightColumnRowValueSubRowItemValue = styled.div`\r\n font-family: Rubik;\r\n font-style: normal;\r\n font-weight: normal;\r\n font-size: 20px;\r\n color: #354052;\r\n margin-right: 5px;\r\n`;\r\n\r\nconst RightColumnRowDescriptionSubRow = styled.div`\r\n font-family: Rubik;\r\n font-style: normal;\r\n font-weight: normal;\r\n font-size: 14px;\r\n color: #7f8fa4;\r\n`;\r\nconst ProductionRateCardMobile = (props: ICardProps) => {\r\n const {\r\n value,\r\n units,\r\n description,\r\n icons,\r\n stats,\r\n statsDescription,\r\n addedData,\r\n isPercentage,\r\n selectedSystemGroup,\r\n } = props;\r\n const [isNegative, setIsNegative] = React.useState(false);\r\n const rightColumnRef = useRef(null);\r\n const [rightColumnWidth, setRightColumnWidth] = React.useState(0);\r\n React.useEffect(() => {\r\n if (notUndefiend([stats])) {\r\n //*for apollo we do not need to show right column\r\n if (selectedSystemGroup !== UserSystemGroup.Apollo) {\r\n const { width } = rightColumnRef.current.getBoundingClientRect();\r\n setRightColumnWidth(width);\r\n }\r\n\r\n if (stats! < 0) {\r\n setIsNegative(true);\r\n } else if (description === 'Average Availability' && value >= 0.999) {\r\n setIsNegative(false);\r\n } else {\r\n setIsNegative(false);\r\n }\r\n }\r\n }, [stats, selectedSystemGroup]); // eslint-disable-line react-hooks/exhaustive-deps\r\n return (\r\n \r\n {notUndefiend([value]) ? (\r\n <>\r\n \r\n \r\n \r\n {isNegative ? icons.negative : icons.positive}\r\n\r\n 999 ? '-2px' : 'normal' }}>\r\n {valueAsString(value, isPercentage)}\r\n \r\n {units}\r\n \r\n {description}\r\n \r\n \r\n {notUndefiend([stats]) && StatsData(stats)} {statsDescription}\r\n \r\n \r\n\r\n {selectedSystemGroup !== UserSystemGroup.Apollo && (\r\n \r\n \r\n \r\n \r\n \r\n {addedData.upper.formatter\r\n ? addedData.upper.formatter(addedData.upper.value)\r\n : valueAsString(addedData.upper.value!)}\r\n \r\n \r\n {addedData.upper.unit}\r\n \r\n \r\n\r\n \r\n {addedData.upper.trend !== 0 && addedData.upper.trend !== undefined && (\r\n \r\n )}\r\n \r\n \r\n \r\n {addedData.upper.description}\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n {addedData.lower.formatter\r\n ? addedData.lower.formatter(addedData.lower.value)\r\n : valueAsString(addedData.lower.value!)}\r\n \r\n \r\n {addedData.lower.unit}\r\n \r\n \r\n\r\n \r\n {addedData.lower.trend !== 0 && addedData.lower.trend !== undefined && (\r\n \r\n )}\r\n \r\n \r\n \r\n {addedData.lower.description}\r\n \r\n \r\n \r\n )}\r\n \r\n ) : (\r\n {Spinner()}\r\n )}\r\n \r\n );\r\n};\r\nexport default ProductionRateCardMobile;\r\n","import { appearanceEffect } from 'globalStyle';\r\nimport { notUndefiend, valueAsString } from 'helpers/conversions';\r\nimport React, { useRef } from 'react';\r\nimport styled from 'styled-components';\r\nimport { ICardProps, StatsData } from './Card';\r\nimport { ReactComponent as ArrowUp } from '../../assets/icons/ArrowUp.svg';\r\nimport { Spinner, SpinnerContainer } from './Styles';\r\nimport { UserSystemGroup, UserSystemGroupStrings } from 'store/storeTypes';\r\n\r\nconst CardContent = styled.div`\r\n width: 100%;\r\n height: 100%;\r\n box-sizing: border-box;\r\n display: flex;\r\n justify-content: space-between;\r\n animation-name: ${appearanceEffect};\r\n animation-duration: 500ms;\r\n`;\r\nconst LeftColumn = styled.div<{ selectedSystemGroup: UserSystemGroupStrings }>`\r\n display: flex;\r\n height: 100%;\r\n width: ${props => (props.selectedSystemGroup === UserSystemGroup.Apollo ? '100%' : '')};\r\n box-sizing: border-box;\r\n flex-direction: column;\r\n justify-content: space-between;\r\n animation-name: ${appearanceEffect};\r\n animation-duration: 500ms;\r\n`;\r\nconst LeftColUpperRow = styled.div`\r\n height: 70px;\r\n box-sizing: border-box;\r\n display: flex;\r\n flex-direction: column;\r\n`;\r\nconst LeftColUpperRowValueSubRow = styled.div`\r\n display: flex;\r\n align-items: flex-start;\r\n`;\r\nconst Icon = styled.div`\r\n margin-top: 5px;\r\n`;\r\nconst Units = styled.div`\r\n font-family: Rubik;\r\n font-style: normal;\r\n font-weight: 500;\r\n font-size: 16px;\r\n color: #354052;\r\n margin-top: 15px;\r\n margin-left: 3px;\r\n`;\r\nconst Value = styled.div`\r\n font-family: Rubik;\r\n font-style: normal;\r\n font-weight: 500;\r\n font-size: 32px;\r\n color: #354052;\r\n margin-left: 10px;\r\n`;\r\nconst LeftColUpperRowDescriptionSubRow = styled.div`\r\n display: flex;\r\n justify-content: flex-start;\r\n align-items: flex-start;\r\n font-family: Rubik;\r\n font-style: normal;\r\n font-weight: normal;\r\n font-size: 14px;\r\n line-height: 16px;\r\n color: #7f8fa4;\r\n`;\r\nconst LeftColBottomRow = styled.div`\r\n height: 30px;\r\n box-sizing: border-box;\r\n display: flex;\r\n font-family: Rubik;\r\n font-style: normal;\r\n font-weight: normal;\r\n font-size: 12px;\r\n line-height: 14px;\r\n align-items: flex-end;\r\n border-top: 1px solid #c5d0de;\r\n`;\r\n\r\nconst RightColumn = styled.div`\r\n height: 100%;\r\n box-sizing: border-box;\r\n display: flex;\r\n flex-direction: column;\r\n\r\n align-items: flex-start;\r\n animation-name: ${appearanceEffect};\r\n animation-duration: 500ms;\r\n`;\r\nconst RightColumnRow = styled.div`\r\n box-sizing: border-box;\r\n display: flex;\r\n flex-direction: column;\r\n border-bottom: 1px solid #c5d0de;\r\n`;\r\nconst RightColumnRowValueSubRow = styled.div`\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: baseline;\r\n`;\r\nconst ValueAndUnitWrapper = styled.div.attrs({\r\n 'data-id': 'ValueAndUnitWrapper',\r\n})`\r\n display: flex;\r\n justify-content: start;\r\n margin-right: 5px;\r\n`;\r\nconst RightColumnRowValueSubRowItemIcon = styled.div``;\r\nconst RightColumnRowValueSubRowItemUnits = styled.div`\r\n font-family: Rubik;\r\n font-style: normal;\r\n font-weight: normal;\r\n font-size: 14px;\r\n color: #354052;\r\n margin-top: 5px;\r\n`;\r\nconst RightColumnRowValueSubRowItemValue = styled.div`\r\n font-family: Rubik;\r\n font-style: normal;\r\n font-weight: normal;\r\n font-size: 20px;\r\n color: #354052;\r\n margin-right: 5px;\r\n`;\r\n\r\nconst RightColumnRowDescriptionSubRow = styled.div`\r\n font-family: Rubik;\r\n font-style: normal;\r\n font-weight: normal;\r\n font-size: 14px;\r\n color: #7f8fa4;\r\n`;\r\nconst ProductivityCardMobile = (props: ICardProps) => {\r\n const {\r\n value,\r\n units,\r\n description,\r\n icons,\r\n stats,\r\n statsDescription,\r\n addedData,\r\n isPercentage,\r\n selectedSystemGroup,\r\n } = props;\r\n\r\n const [isNegative, setIsNegative] = React.useState(false);\r\n\r\n React.useEffect(() => {\r\n if (notUndefiend([stats])) {\r\n if (stats! < 0) {\r\n setIsNegative(true);\r\n } else if (description === 'Average Availability' && value >= 0.999) {\r\n setIsNegative(false);\r\n } else {\r\n setIsNegative(false);\r\n }\r\n }\r\n }, [stats]); // eslint-disable-line react-hooks/exhaustive-deps\r\n return (\r\n \r\n {notUndefiend([value]) ? (\r\n <>\r\n \r\n \r\n \r\n {isNegative ? icons.negative : icons.positive}\r\n {valueAsString(value, isPercentage)}\r\n {units}\r\n \r\n {description}\r\n \r\n \r\n {notUndefiend([stats]) && StatsData(stats)} {statsDescription}\r\n \r\n \r\n\r\n {selectedSystemGroup !== UserSystemGroup.Apollo && (\r\n \r\n \r\n \r\n \r\n \r\n {addedData.upper.formatter\r\n ? addedData.upper.formatter(addedData.upper.value)\r\n : valueAsString(addedData.upper.value!)}\r\n \r\n \r\n {addedData.upper.unit}\r\n \r\n \r\n\r\n \r\n {addedData.upper.trend !== 0 && addedData.upper.trend !== undefined && (\r\n \r\n )}\r\n \r\n \r\n \r\n {addedData.upper.description}\r\n \r\n \r\n \r\n )}\r\n \r\n ) : (\r\n {Spinner()}\r\n )}\r\n \r\n );\r\n};\r\nexport default ProductivityCardMobile;\r\n","import { appearanceEffect } from 'globalStyle';\r\nimport { notUndefiend, valueAsString } from 'helpers/conversions';\r\nimport React, { useRef } from 'react';\r\nimport styled from 'styled-components';\r\nimport { ICardProps, StatsData } from './Card';\r\nimport { Spinner, SpinnerContainer } from './Styles';\r\nimport { ReactComponent as ArrowUp } from '../../assets/icons/ArrowUp.svg';\r\n\r\nconst CardContent = styled.div`\r\n width: 100%;\r\n height: 100%;\r\n box-sizing: border-box;\r\n display: flex;\r\n justify-content: space-between;\r\n animation-name: ${appearanceEffect};\r\n animation-duration: 500ms;\r\n`;\r\nconst LeftColumn = styled.div`\r\n height: 100%;\r\n box-sizing: border-box;\r\n display: flex;\r\n flex-direction: column;\r\n justify-content: space-between;\r\n animation-name: ${appearanceEffect};\r\n animation-duration: 500ms;\r\n`;\r\nconst LeftColUpperRow = styled.div`\r\n height: 70px;\r\n box-sizing: border-box;\r\n display: flex;\r\n flex-direction: column;\r\n`;\r\nconst LeftColUpperRowValueSubRow = styled.div`\r\n display: flex;\r\n align-items: flex-start;\r\n`;\r\nconst Icon = styled.div`\r\n margin-top: 5px;\r\n`;\r\nconst Units = styled.div`\r\n font-family: Rubik;\r\n font-style: normal;\r\n font-weight: 500;\r\n font-size: 16px;\r\n color: #354052;\r\n margin-top: 17px;\r\n margin-left: 3px;\r\n`;\r\nconst Value = styled.div`\r\n font-family: Rubik;\r\n font-style: normal;\r\n font-weight: 500;\r\n font-size: 32px;\r\n color: #354052;\r\n margin-left: 10px;\r\n`;\r\nconst LeftColUpperRowDescriptionSubRow = styled.div`\r\n display: flex;\r\n justify-content: flex-start;\r\n align-items: flex-start;\r\n font-family: Rubik;\r\n font-style: normal;\r\n font-weight: normal;\r\n font-size: 14px;\r\n line-height: 16px;\r\n color: #7f8fa4;\r\n`;\r\nconst LeftColBottomRow = styled.div`\r\n height: 30px;\r\n box-sizing: border-box;\r\n display: flex;\r\n font-family: Rubik;\r\n font-style: normal;\r\n font-weight: normal;\r\n font-size: 12px;\r\n line-height: 14px;\r\n align-items: flex-end;\r\n border-top: 1px solid #c5d0de;\r\n`;\r\n\r\nconst RightColumn = styled.div`\r\n height: 100%;\r\n box-sizing: border-box;\r\n display: flex;\r\n flex-direction: column;\r\n\r\n align-items: flex-start;\r\n animation-name: ${appearanceEffect};\r\n animation-duration: 500ms;\r\n`;\r\nconst RightColumnRow = styled.div`\r\n box-sizing: border-box;\r\n display: flex;\r\n flex-direction: column;\r\n border-bottom: 1px solid #c5d0de;\r\n`;\r\nconst RightColumnRowValueSubRow = styled.div`\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: baseline;\r\n`;\r\nconst ValueAndUnitWrapper = styled.div.attrs({\r\n 'data-id': 'ValueAndUnitWrapper',\r\n})`\r\n display: flex;\r\n justify-content: start;\r\n margin-right: 5px;\r\n`;\r\nconst RightColumnRowValueSubRowItemIcon = styled.div``;\r\nconst RightColumnRowValueSubRowItemUnits = styled.div`\r\n font-family: Rubik;\r\n font-style: normal;\r\n font-weight: normal;\r\n font-size: 14px;\r\n color: #354052;\r\n margin-top: 5px;\r\n`;\r\nconst RightColumnRowValueSubRowItemValue = styled.div`\r\n font-family: Rubik;\r\n font-style: normal;\r\n font-weight: normal;\r\n font-size: 20px;\r\n color: #354052;\r\n margin-right: 5px;\r\n`;\r\n\r\nconst RightColumnRowDescriptionSubRow = styled.div`\r\n font-family: Rubik;\r\n font-style: normal;\r\n font-weight: normal;\r\n font-size: 14px;\r\n color: #7f8fa4;\r\n`;\r\nconst AvailabilityCardMobile = (props: ICardProps) => {\r\n const {\r\n value,\r\n units,\r\n description,\r\n icons,\r\n stats,\r\n statsDescription,\r\n addedData,\r\n isPercentage,\r\n cardName,\r\n } = props;\r\n\r\n const [isNegative, setIsNegative] = React.useState(false);\r\n const rightColumnRef = useRef(null);\r\n const [rightColumnWidth, setRightColumnWidth] = React.useState(0);\r\n React.useEffect(() => {\r\n if (notUndefiend([stats])) {\r\n const { width } = rightColumnRef.current.getBoundingClientRect();\r\n setRightColumnWidth(width);\r\n if (stats! < 0) {\r\n setIsNegative(true);\r\n } else if (description === 'Average Availability' && value >= 0.999) {\r\n setIsNegative(false);\r\n } else {\r\n setIsNegative(false);\r\n }\r\n }\r\n }, [stats]); // eslint-disable-line react-hooks/exhaustive-deps\r\n\r\n return (\r\n \r\n {notUndefiend([value]) ? (\r\n <>\r\n \r\n \r\n \r\n {isNegative ? icons.negative : icons.positive}\r\n {valueAsString(value, isPercentage)}\r\n {units}\r\n \r\n {description}\r\n \r\n \r\n {notUndefiend([stats]) && StatsData(stats)} {statsDescription}\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n {addedData.upper.formatter\r\n ? addedData.upper.formatter(addedData.upper.value)\r\n : valueAsString(addedData.upper.value!)}\r\n \r\n \r\n {addedData.upper.unit}\r\n \r\n \r\n\r\n \r\n {addedData.upper.trend !== 0 && addedData.upper.trend !== undefined && (\r\n \r\n )}\r\n \r\n \r\n \r\n {addedData.upper.description}\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n {addedData.lower.formatter\r\n ? addedData.lower.formatter(addedData.lower.value)\r\n : valueAsString(addedData.lower.value!)}\r\n \r\n \r\n {addedData.lower.unit}\r\n \r\n \r\n\r\n \r\n {addedData.lower.trend !== 0 && addedData.lower.trend !== undefined && (\r\n \r\n )}\r\n \r\n \r\n \r\n {addedData.lower.description}\r\n \r\n \r\n \r\n \r\n ) : (\r\n {Spinner()}\r\n )}\r\n \r\n );\r\n};\r\nexport default AvailabilityCardMobile;\r\n","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgTopCardsArrowDown(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 20,\n height: 17,\n viewBox: \"0 0 20 17\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M18.4856 10.0053L16.859 8.60533L11.8629 12.9053V0.705322H9.53917V12.9053L4.54312 8.60533L2.9165 10.0053L10.701 16.7053L18.4856 10.0053Z\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgTopCardsArrowDown);\nexport default __webpack_public_path__ + \"static/media/TopCardsArrowDown.f3eb4716.svg\";\nexport { ForwardRef as ReactComponent };","import { globalColors } from 'globalStyle';\r\nimport { notUndefiend, valueAsString } from 'helpers/conversions';\r\nimport React from 'react';\r\nimport styled from 'styled-components';\r\nimport { StatsData } from '../Card';\r\nimport { productionIcon } from '../Icons';\r\nimport { InnerCardContent, Spinner } from '../Styles';\r\nimport { TimeFrame, TimeFrameEnum } from 'models/ReportData';\r\nimport { CustomTimeFrameProperties } from 'actions/reportFilterActions';\r\nimport { getDescriptionTextForCustomTimeframe } from 'helpers/overviewUtils';\r\n\r\nconst CardContent = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n box-sizing: border-box;\r\n width: 100%;\r\n height: 100%;\r\n`;\r\nconst UpperRow = styled.div`\r\n display: flex;\r\n box-sizing: border-box;\r\n\r\n flex-direction: column;\r\n width: 100%;\r\n height: 80px;\r\n border-bottom: 1px solid #e6e9ed;\r\n`;\r\nexport const OverviewTopCardsUpperRowContent = styled.div`\r\n display: flex;\r\n align-items: flex-start;\r\n`;\r\nexport const OverviewTopCardsValue = styled.div`\r\n font-weight: 700;\r\n font-size: 32px;\r\n margin-left: 7px;\r\n color: ${globalColors.regular.text.primary};\r\n line-height: 26px;\r\n`;\r\n\r\nexport const OverviewTopCardsUnits = styled.div`\r\n font-weight: 500;\r\n font-size: 12px;\r\n margin-top: 12px;\r\n margin-right: 5px;\r\n color: ${globalColors.regular.text.primary};\r\n line-height: 14px;\r\n`;\r\nexport const OverviewTopCardsBottomRow = styled.div`\r\n display: flex;\r\n align-items: flex-end;\r\n box-sizing: border-box;\r\n\r\n width: 100%;\r\n height: 100%;\r\n max-height: 46px;\r\n`;\r\nexport const OverviewTopCardsDescription = styled.div`\r\n font-weight: 400;\r\n font-size: 12px;\r\n color: ${globalColors.regular.text.grey};\r\n line-height: 14px;\r\n`;\r\ntype ChartsHeadersForCustomTimeframeType = {\r\n timeframe: TimeFrame;\r\n customTimeframeProperties: CustomTimeFrameProperties;\r\n};\r\nconst DesktopTotalImpressionCard = props => {\r\n const {\r\n stats,\r\n description,\r\n value,\r\n selectedSystemGroup,\r\n units,\r\n selectedSystemGroupText,\r\n timeframe,\r\n customTimeframeProperties,\r\n } = props;\r\n const [isNegative, setIsNegative] = React.useState(false);\r\n React.useEffect(() => {\r\n if (notUndefiend([stats])) {\r\n if (stats! < 0) {\r\n setIsNegative(true);\r\n } else if (description === 'Average Availability' && value >= 0.999) {\r\n setIsNegative(false);\r\n } else {\r\n setIsNegative(false);\r\n }\r\n }\r\n }, [stats]); // eslint-disable-line react-hooks/exhaustive-deps\r\n\r\n const icons = productionIcon(selectedSystemGroup, 30, 32);\r\n const getTimeframeTextKey = () => {\r\n return timeframe && timeframe.includes('lastUpdate') ? 'last' : 'weekDay';\r\n };\r\n const statsDescription =\r\n selectedSystemGroupText.impression.statsDescription[getTimeframeTextKey()];\r\n\r\n return notUndefiend([value]) ? (\r\n \r\n \r\n \r\n \r\n {isNegative ? icons.negative : icons.positive}\r\n \r\n {valueAsString(value, false)}\r\n \r\n \r\n {units}\r\n \r\n \r\n \r\n {description}\r\n \r\n \r\n \r\n {notUndefiend([stats]) && StatsData(stats!)}{' '}\r\n
\r\n {timeframe === TimeFrameEnum.custom\r\n ? getDescriptionTextForCustomTimeframe({ timeframe, customTimeframeProperties })\r\n : statsDescription}\r\n
\r\n
\r\n
{' '}\r\n
\r\n ) : (\r\n Spinner(60)\r\n );\r\n};\r\nexport default DesktopTotalImpressionCard;\r\n","import {\r\n convertSecondsToHours,\r\n formatSecToHourString,\r\n notUndefiend,\r\n secondsToDaysHoursMinutes,\r\n valueAsString,\r\n} from 'helpers/conversions';\r\nimport React from 'react';\r\nimport styled from 'styled-components';\r\nimport { dashboardIcon, likeIcon, productionIcon } from '../Icons';\r\nimport { InnerCardContent, Spinner } from '../Styles';\r\nimport { ReactComponent as ArrowUpIcon } from '../../../assets/icons/TopCardsArrowUp.svg';\r\nimport { ReactComponent as ArrowDownIcon } from '../../../assets/icons/TopCardsArrowDown.svg';\r\nimport { StyledTooltip, globalColors } from 'globalStyle';\r\nimport {\r\n OverviewTopCardsBottomRow,\r\n OverviewTopCardsDescription,\r\n OverviewTopCardsUnits,\r\n OverviewTopCardsUpperRowContent,\r\n OverviewTopCardsValue,\r\n} from './DesktopTotalImpressionCard';\r\nimport { StatsData } from '../Card';\r\nimport { CustomTimeFrameProperties } from 'actions/reportFilterActions';\r\nimport { TimeFrame, TimeFrameEnum } from 'models/ReportData';\r\nimport {\r\n OverviewTopCardNames,\r\n getDescriptionTextForCustomTimeframe,\r\n getTopCardArrowColor,\r\n} from 'helpers/overviewUtils';\r\nimport { UserSystemGroup } from 'store/storeTypes';\r\nimport InfoOutlinedIcon from '@material-ui/icons/InfoOutlined';\r\nimport { useTranslation } from 'react-i18next';\r\nconst LeftColumn = styled.div`\r\n display: flex;\r\n box-sizing: border-box;\r\n height: 100%;\r\n width: 57%;\r\n`;\r\nconst LeftColumnCardContent = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n box-sizing: border-box;\r\n width: 100%;\r\n height: 100%;\r\n`;\r\nconst UpperRow = styled.div`\r\n display: flex;\r\n box-sizing: border-box;\r\n\r\n flex-direction: column;\r\n width: 100%;\r\n height: 80px;\r\n border-bottom: 1px solid #e6e9ed;\r\n`;\r\nconst BottomRow = styled.div`\r\n display: flex;\r\n align-items: center;\r\n box-sizing: border-box;\r\n\r\n width: 100%;\r\n height: 100%;\r\n max-height: 46px;\r\n`;\r\nconst RightColumn = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n box-sizing: border-box;\r\n height: 100%;\r\n width: 40%;\r\n padding: 2%;\r\n background-color: ${globalColors.regular.background.greyCardBackround};\r\n border-radius: 8px;\r\n`;\r\nconst RigthColumnUpperRow = styled.div`\r\n display: flex;\r\n align-items: center;\r\n box-sizing: border-box;\r\n width: 100%;\r\n height: 50px;\r\n border-bottom: 1px solid ${globalColors.regular.background.greyDevider};\r\n`;\r\nconst RigthColumnBottomRow = styled.div`\r\n display: flex;\r\n box-sizing: border-box;\r\n width: 100%;\r\n padding-top: 5px;\r\n`;\r\nconst RightColumArrowPlaceHolder = styled.div`\r\n display: flex;\r\n width: 20px;\r\n align-self: center;\r\n`;\r\nconst RightColumnContent = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n margin-left: 5px;\r\n`;\r\nconst RightColumnContentUpperRow = styled.div`\r\n display: flex;\r\n font-weight: 400;\r\n font-size: 14px;\r\n line-height: 20px;\r\n color: ${globalColors.regular.text.primary};\r\n`;\r\nconst RightColumnContentBottomRow = styled.div`\r\n font-style: normal;\r\n font-weight: 400;\r\n font-size: 12px;\r\n line-height: 14px;\r\n color: ${globalColors.regular.text.grey};\r\n`;\r\nconst ValueForAvailabilityHours = styled.div`\r\n display: inline;\r\n font-weight: 700;\r\n font-size: 19px;\r\n margin-left: 7px;\r\n color: ${globalColors.regular.text.primary};\r\n`;\r\nconst DesktopAvarageAvailabilityCard = props => {\r\n const {\r\n stats,\r\n description,\r\n value,\r\n units,\r\n statsDescription,\r\n addedData,\r\n timeframe,\r\n customTimeframeProperties,\r\n selectedSystemGroup,\r\n availabilityTotalDurationReported,\r\n isNotReprotingPeriod,\r\n } = props;\r\n const { t } = useTranslation();\r\n const [isNegative, setIsNegative] = React.useState(false);\r\n React.useEffect(() => {\r\n if (notUndefiend([stats])) {\r\n if (stats! < 0) {\r\n setIsNegative(true);\r\n } else if (description === 'Average Availability' && value >= 0.999) {\r\n setIsNegative(false);\r\n } else {\r\n setIsNegative(false);\r\n }\r\n }\r\n }, [stats]); // eslint-disable-line react-hooks/exhaustive-deps\r\n const getArrowIcon = (addedData, row) => {\r\n const trend = addedData[row].trend;\r\n const description = addedData[row].description;\r\n if (trend === 0 || trend === undefined) {\r\n return <>;\r\n }\r\n return trend > 0 ? (\r\n \r\n ) : (\r\n \r\n );\r\n };\r\n return notUndefiend([value]) ? (\r\n \r\n \r\n \r\n \r\n \r\n
{isNegative ? likeIcon.negative : likeIcon.positive}
\r\n \r\n {value === -1 ? '--' : valueAsString(value, true)}\r\n \r\n \r\n {value === -1 ? '' : units}\r\n \r\n
\r\n\r\n \r\n {description}\r\n \r\n
\r\n \r\n {notUndefiend([stats]) && StatsData(stats!)}\r\n
\r\n {timeframe === TimeFrameEnum.custom\r\n ? getDescriptionTextForCustomTimeframe({ timeframe, customTimeframeProperties })\r\n : statsDescription}\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n {getArrowIcon(addedData, 'upper')}\r\n \r\n \r\n \r\n {formatSecToHourString(addedData?.upper?.value)} {addedData.upper.unit}\r\n \r\n {addedData.upper.description}\r\n \r\n \r\n \r\n \r\n {getArrowIcon(addedData, 'lower')}\r\n \r\n \r\n \r\n {formatSecToHourString(addedData?.lower?.value)} {addedData.lower.unit}\r\n \r\n {addedData.lower.description}\r\n \r\n \r\n \r\n
\r\n ) : (\r\n Spinner(60)\r\n );\r\n};\r\nexport default DesktopAvarageAvailabilityCard;\r\n","import React from 'react';\r\nimport styled from 'styled-components';\r\n\r\nimport { globalColors } from 'globalStyle';\r\nimport { notUndefiend, valueAsString } from 'helpers/conversions';\r\nimport { StatsData } from '../Card';\r\nimport { dashboardIcon } from '../Icons';\r\nimport { InnerCardContent, Spinner } from '../Styles';\r\nimport {\r\n OverviewTopCardsBottomRow,\r\n OverviewTopCardsDescription,\r\n OverviewTopCardsUnits,\r\n OverviewTopCardsUpperRowContent,\r\n OverviewTopCardsValue,\r\n} from './DesktopTotalImpressionCard';\r\nimport { ReactComponent as ArrowUpIcon } from '../../../assets/icons/TopCardsArrowUp.svg';\r\nimport { ReactComponent as ArrowDownIcon } from '../../../assets/icons/TopCardsArrowDown.svg';\r\nimport { TimeFrameEnum } from 'models/ReportData';\r\nimport {\r\n OverviewTopCardNames,\r\n getDescriptionTextForCustomTimeframe,\r\n getTopCardArrowColor,\r\n} from 'helpers/overviewUtils';\r\nimport { UserSystemGroup, UserSystemGroupStrings } from 'store/storeTypes';\r\nimport { CardProps } from './DesktopDtgApolloTopCards';\r\n\r\nconst LeftColumn = styled.div<{ selectedSystemGroup: UserSystemGroupStrings }>`\r\n display: flex;\r\n box-sizing: border-box;\r\n height: 100%;\r\n width: ${({ selectedSystemGroup }) =>\r\n selectedSystemGroup === UserSystemGroup.Apollo ? '100%' : '50%'};\r\n`;\r\nconst LeftColumnCardContent = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n box-sizing: border-box;\r\n width: 100%;\r\n height: 100%;\r\n`;\r\nconst UpperRow = styled.div`\r\n display: flex;\r\n box-sizing: border-box;\r\n\r\n flex-direction: column;\r\n width: 100%;\r\n height: 80px;\r\n border-bottom: 1px solid #e6e9ed;\r\n`;\r\n\r\nconst RightColumn = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n box-sizing: border-box;\r\n justify-content: center;\r\n height: 100%;\r\n width: 40%;\r\n min-width: 140px;\r\n padding: 2%;\r\n background-color: ${globalColors.regular.background.greyCardBackround};\r\n border-radius: 8px;\r\n`;\r\nexport const RigthColumnUpperRow = styled.div`\r\n display: flex;\r\n align-items: center;\r\n box-sizing: border-box;\r\n width: 100%;\r\n height: 50px;\r\n border-bottom: 1px solid ${globalColors.regular.background.greyDevider};\r\n`;\r\nconst RigthColumnBottomRow = styled.div`\r\n display: flex;\r\n box-sizing: border-box;\r\n width: 100%;\r\n padding-top: 5px;\r\n`;\r\nconst RightColumArrowPlaceHolder = styled.div`\r\n display: flex;\r\n width: 20px;\r\n align-self: center;\r\n`;\r\nconst RightColumnContent = styled.div`\r\n display: flex;\r\n margin-left: 5px;\r\n flex-direction: column;\r\n`;\r\nconst RightColumnContentUpperRow = styled.div`\r\n display: flex;\r\n font-weight: 400;\r\n font-size: 14px;\r\n line-height: 20px;\r\n color: ${globalColors.regular.text.primary};\r\n`;\r\nconst RightColumnContentBottomRow = styled.div`\r\n font-style: normal;\r\n font-weight: 400;\r\n font-size: 12px;\r\n line-height: 14px;\r\n color: ${globalColors.regular.text.grey};\r\n`;\r\n\r\nconst DesktopAvarageProductionRateCard = (props: CardProps) => {\r\n const {\r\n stats,\r\n description,\r\n value,\r\n units,\r\n statsDescription,\r\n addedData,\r\n timeframe,\r\n customTimeframeProperties,\r\n selectedSystemGroup,\r\n } = props;\r\n const [isNegative, setIsNegative] = React.useState(false);\r\n React.useEffect(() => {\r\n if (notUndefiend([stats])) {\r\n if (stats! < 0) {\r\n setIsNegative(true);\r\n } else if (description === 'Average Availability' && value >= 0.999) {\r\n setIsNegative(false);\r\n } else {\r\n setIsNegative(false);\r\n }\r\n }\r\n }, [stats]); // eslint-disable-line react-hooks/exhaustive-deps\r\n\r\n const getArrowIcon = (addedData, row) => {\r\n const trend = addedData[row].trend;\r\n const description = addedData[row].description;\r\n if (trend === 0 || trend === undefined) {\r\n return <>;\r\n }\r\n return trend > 0 ? (\r\n \r\n ) : (\r\n \r\n );\r\n };\r\n\r\n return notUndefiend([value]) ? (\r\n \r\n \r\n \r\n \r\n \r\n {isNegative ? dashboardIcon.negative : dashboardIcon.positive}{' '}\r\n \r\n {valueAsString(value, false)}\r\n \r\n \r\n {units}\r\n \r\n \r\n \r\n {description}\r\n \r\n \r\n \r\n {notUndefiend([stats]) && StatsData(stats!)}{' '}\r\n
\r\n {timeframe === TimeFrameEnum.custom\r\n ? getDescriptionTextForCustomTimeframe({ timeframe, customTimeframeProperties })\r\n : statsDescription}\r\n
\r\n
\r\n
\r\n
\r\n {selectedSystemGroup !== UserSystemGroup.Apollo && (\r\n \r\n \r\n \r\n {getArrowIcon(addedData, 'upper')}\r\n \r\n \r\n \r\n {valueAsString(addedData?.upper?.value)} {addedData.upper.unit}\r\n {' '}\r\n \r\n {addedData.upper.description}\r\n \r\n \r\n \r\n \r\n \r\n {getArrowIcon(addedData, 'lower')}\r\n \r\n \r\n \r\n {valueAsString(addedData?.lower?.value)} {addedData.lower.unit}\r\n {' '}\r\n \r\n {addedData.lower.description}\r\n \r\n \r\n \r\n \r\n )}\r\n
\r\n ) : (\r\n Spinner(60)\r\n );\r\n};\r\nexport default DesktopAvarageProductionRateCard;\r\n","import React from 'react';\r\nimport styled from 'styled-components';\r\nimport { formatSecToMinString, notUndefiend, valueAsString } from 'helpers/conversions';\r\nimport { chartIcon } from '../Icons';\r\nimport { InnerCardContent, Spinner } from '../Styles';\r\nimport { ReactComponent as ArrowUpIcon } from '../../../assets/icons/TopCardsArrowUp.svg';\r\nimport { ReactComponent as ArrowDownIcon } from '../../../assets/icons/TopCardsArrowDown.svg';\r\nimport { globalColors } from 'globalStyle';\r\nimport {\r\n OverviewTopCardsBottomRow,\r\n OverviewTopCardsDescription,\r\n OverviewTopCardsUnits,\r\n OverviewTopCardsUpperRowContent,\r\n OverviewTopCardsValue,\r\n} from './DesktopTotalImpressionCard';\r\nimport { StatsData } from '../Card';\r\nimport { TimeFrameEnum } from 'models/ReportData';\r\nimport {\r\n OverviewTopCardNames,\r\n getDescriptionTextForCustomTimeframe,\r\n getTopCardArrowColor,\r\n} from 'helpers/overviewUtils';\r\nimport { UserSystemGroup, UserSystemGroupStrings } from 'store/storeTypes';\r\nimport { CardProps } from './DesktopDtgApolloTopCards';\r\nconst LeftColumn = styled.div<{ selectedSystemGroup: UserSystemGroupStrings }>`\r\n display: flex;\r\n box-sizing: border-box;\r\n height: 100%;\r\n width: ${({ selectedSystemGroup }) =>\r\n selectedSystemGroup === UserSystemGroup.Apollo ? '100%' : '57%'};\r\n`;\r\nconst LeftColumnCardContent = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n box-sizing: border-box;\r\n width: 100%;\r\n height: 100%;\r\n`;\r\nconst UpperRow = styled.div`\r\n display: flex;\r\n box-sizing: border-box;\r\n\r\n flex-direction: column;\r\n width: 100%;\r\n height: 80px;\r\n border-bottom: 1px solid #e6e9ed;\r\n`;\r\nconst RightColumn = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n box-sizing: border-box;\r\n height: 100%;\r\n width: 40%;\r\n padding: 2%;\r\n background-color: ${globalColors.regular.background.greyCardBackround};\r\n border-radius: 8px;\r\n`;\r\nconst RigthColumnUpperRow = styled.div`\r\n display: flex;\r\n align-items: center;\r\n box-sizing: border-box;\r\n width: 100%;\r\n height: 50px;\r\n border-bottom: 1px solid ${globalColors.regular.background.greyDevider};\r\n`;\r\n\r\nconst RightColumArrowPlaceHolder = styled.div`\r\n display: flex;\r\n width: 20px;\r\n align-self: center;\r\n`;\r\nconst RightColumnContent = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n margin-left: 5px;\r\n`;\r\nconst RightColumnContentUpperRow = styled.div`\r\n display: flex;\r\n font-weight: 400;\r\n font-size: 14px;\r\n line-height: 20px;\r\n color: ${globalColors.regular.text.primary};\r\n`;\r\nconst RightColumnContentBottomRow = styled.div`\r\n font-style: normal;\r\n font-weight: 400;\r\n font-size: 12px;\r\n line-height: 14px;\r\n color: ${globalColors.regular.text.grey};\r\n`;\r\n\r\nconst DesktopProductivityCard = (props: CardProps) => {\r\n const {\r\n stats,\r\n description,\r\n value,\r\n selectedSystemGroup,\r\n units,\r\n addedData,\r\n statsDescription,\r\n timeframe,\r\n customTimeframeProperties,\r\n } = props;\r\n const [isNegative, setIsNegative] = React.useState(false);\r\n React.useEffect(() => {\r\n if (notUndefiend([stats])) {\r\n if (stats! < 0) {\r\n setIsNegative(true);\r\n } else if (description === 'Average Availability' && value >= 0.999) {\r\n setIsNegative(false);\r\n } else {\r\n setIsNegative(false);\r\n }\r\n }\r\n }, [stats]); // eslint-disable-line react-hooks/exhaustive-deps\r\n const getArrowIcon = (addedData, row) => {\r\n const trend = addedData[row].trend;\r\n const description = addedData[row].description;\r\n\r\n if (trend === 0 || trend === undefined) {\r\n return <>;\r\n }\r\n return trend > 0 ? (\r\n \r\n ) : (\r\n \r\n );\r\n };\r\n return notUndefiend([value]) ? (\r\n \r\n \r\n \r\n \r\n \r\n {isNegative ? chartIcon.negative : chartIcon.positive}\r\n \r\n {valueAsString(value, false)}\r\n \r\n \r\n {units}\r\n \r\n \r\n \r\n {description}\r\n \r\n \r\n \r\n {notUndefiend([stats]) && StatsData(stats!)}{' '}\r\n
\r\n {timeframe === TimeFrameEnum.custom\r\n ? getDescriptionTextForCustomTimeframe({ timeframe, customTimeframeProperties })\r\n : statsDescription}\r\n
\r\n
\r\n
\r\n
\r\n {selectedSystemGroup !== UserSystemGroup.Apollo && (\r\n \r\n \r\n \r\n {getArrowIcon(addedData, 'upper')}\r\n \r\n \r\n \r\n {formatSecToMinString(addedData?.upper?.value)} {addedData.upper.unit}\r\n \r\n \r\n {addedData.upper.description}\r\n \r\n \r\n \r\n \r\n )}\r\n
\r\n ) : (\r\n Spinner(60)\r\n );\r\n};\r\nexport default DesktopProductivityCard;\r\n","import { TextByType } from 'components/JobAnalysis/JobAnalysis';\r\nimport { appearanceEffect } from 'globalStyle';\r\nimport { formatSecToHourString, formatSecToMinString } from 'helpers/conversions';\r\nimport { TimeFrame } from 'models/ReportData';\r\nimport React from 'react';\r\nimport { UserSystemGroupStrings } from 'store/storeTypes';\r\nimport styled from 'styled-components';\r\nimport DesktopAvarageAvailabilityCard from './DesktopAvarageAvailabilityCard';\r\nimport DesktopAvarageProductionRateCard from './DesktopAvarageProductionRateCard';\r\nimport DesktopProductivityCard from './DesktopProductivityCard';\r\nimport DesktopTotalImpressionCard from './DesktopTotalImpressionCard';\r\nimport { ITopCardsProps } from './TopCardsContainer';\r\nimport { CustomTimeframeProperties } from 'components/PbiFilter/PbiFilterCustom';\r\n\r\nexport const TopCardsDesktopWrapper = styled.div`\r\n display: flex;\r\n gap: 16px;\r\n animation-name: ${appearanceEffect};\r\n animation-duration: 500ms;\r\n`;\r\n\r\nexport const TotalImpressionCardWrapper = styled.div`\r\n box-sizing: border-box;\r\n display: flex;\r\n height: 144px;\r\n width: clamp(202px, 25%, 25%);\r\n min-width: 202px;\r\n background: #ffffff;\r\n border: 1px solid #e6e9ed;\r\n border-radius: 8px;\r\n\r\n animation-name: ${appearanceEffect};\r\n animation-duration: 500ms;\r\n`;\r\nexport const AvarageProductionRateCardWrapper = styled.div`\r\n box-sizing: border-box;\r\n display: flex;\r\n height: 144px;\r\n width: 25%;\r\n min-width: 344px;\r\n background: #ffffff;\r\n border: 1px solid #e6e9ed;\r\n border-radius: 8px;\r\n\r\n animation-name: ${appearanceEffect};\r\n animation-duration: 500ms;\r\n`;\r\nexport const ProductivityCardWrapper = styled.div`\r\n box-sizing: border-box;\r\n display: flex;\r\n height: 144px;\r\n width: 25%;\r\n min-width: 304px;\r\n background: #ffffff;\r\n border: 1px solid #e6e9ed;\r\n border-radius: 8px;\r\n\r\n animation-name: ${appearanceEffect};\r\n animation-duration: 500ms;\r\n`;\r\nexport const AverageAvailabilityCardWrapper = styled.div`\r\n box-sizing: border-box;\r\n display: flex;\r\n height: 144px;\r\n width: 25%;\r\n min-width: 296px;\r\n background: #ffffff;\r\n border: 1px solid #e6e9ed;\r\n border-radius: 8px;\r\n\r\n animation-name: ${appearanceEffect};\r\n animation-duration: 500ms;\r\n`;\r\ntype AddedCardDataUnitType = {\r\n description: string;\r\n trend: number;\r\n unit: string;\r\n value: number;\r\n formatter?: Function;\r\n};\r\ntype AddedCardDataType = {\r\n upper: AddedCardDataUnitType;\r\n lower?: AddedCardDataUnitType;\r\n};\r\n\r\nexport type CardProps = {\r\n stats: number;\r\n description: string;\r\n value: number;\r\n units: string;\r\n statsDescription: string;\r\n addedData: AddedCardDataType;\r\n timeframe?: TimeFrame;\r\n customTimeframeProperties: CustomTimeframeProperties;\r\n selectedSystemGroup?: UserSystemGroupStrings;\r\n cardName?: string;\r\n};\r\nconst DesktopDtgApolloTopCards = (props: ITopCardsProps) => {\r\n const {\r\n totalProduction,\r\n units,\r\n selectedSystemGroup,\r\n productionTrend,\r\n selectedSystemGroupText,\r\n timeframe,\r\n productionRate,\r\n productionRateTrend,\r\n loadingTime,\r\n utilization,\r\n loadingTimeTrend,\r\n trendUtilization,\r\n darkImpressionsPercentage,\r\n preparation,\r\n trendPreparation,\r\n darkImpressionsTrend,\r\n productivityChange,\r\n productivity,\r\n printingTimeTrend,\r\n printingTime,\r\n\r\n availabilityTrend,\r\n availability,\r\n\r\n customTimeframeProperties,\r\n availabilityTotalDurationReported,\r\n isNotReprotingPeriod,\r\n maintenanceDurationTrend,\r\n maintenanceDuration,\r\n errorDurationTrend,\r\n errorDuration,\r\n } = props;\r\n const getTimeframeTextKey = () => {\r\n return timeframe && timeframe.includes('lastUpdate') ? 'last' : 'weekDay';\r\n };\r\n const changeTextPerPage = (timeframe: TimeFrame | '', text: string) => {\r\n if (timeframe && timeframe.includes('lastUpdate')) return text.replace('Average', 'Current');\r\n return text;\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\nexport default DesktopDtgApolloTopCards;\r\n","import { formatSecToHourString } from 'helpers/conversions';\r\nimport { TimeFrame } from 'models/ReportData';\r\nimport React from 'react';\r\nimport DesktopAvarageAvailabilityCard from './DesktopAvarageAvailabilityCard';\r\nimport DesktopAvarageProductionRateCard from './DesktopAvarageProductionRateCard';\r\nimport {\r\n AvarageProductionRateCardWrapper,\r\n AverageAvailabilityCardWrapper,\r\n TopCardsDesktopWrapper,\r\n TotalImpressionCardWrapper,\r\n} from './DesktopDtgApolloTopCards';\r\nimport DesktopTotalImpressionCard from './DesktopTotalImpressionCard';\r\nimport { ITopCardsProps } from './TopCardsContainer';\r\n\r\nconst DesktopDtfTopCards = (props: ITopCardsProps) => {\r\n const {\r\n totalProduction,\r\n units,\r\n productionTrend,\r\n selectedSystemGroup,\r\n selectedSystemGroupText,\r\n timeframe,\r\n productionRateTrend,\r\n productionRate,\r\n loadingTime,\r\n utilization,\r\n loadingTimeTrend,\r\n trendUtilization,\r\n darkImpressionsPercentage,\r\n preparation,\r\n trendPreparation,\r\n darkImpressionsTrend,\r\n errorDuration,\r\n availabilityTrend,\r\n availability,\r\n maintenanceDurationTrend,\r\n maintenanceDuration,\r\n errorDurationTrend,\r\n customTimeframeProperties,\r\n } = props;\r\n const getTimeframeTextKey = () => {\r\n return timeframe && timeframe.includes('lastUpdate') ? 'last' : 'weekDay';\r\n };\r\n const changeTextPerPage = (timeframe: TimeFrame | '', text: string) => {\r\n if (timeframe && timeframe.includes('lastUpdate')) return text.replace('Average', 'Current');\r\n return text;\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\nexport default DesktopDtfTopCards;\r\n","import React from 'react';\r\nimport { UserSystemGroup } from 'store/storeTypes';\r\nimport DesktopDtfTopCards from './DesktopDtfTopCards';\r\nimport DesktopDtgApolloTopCards from './DesktopDtgApolloTopCards';\r\nimport { ITopCardsProps } from './TopCardsContainer';\r\n\r\nconst DesktopTopCards = (props: ITopCardsProps) => {\r\n const { selectedSystemGroup } = props;\r\n if (UserSystemGroup.DTF !== selectedSystemGroup) {\r\n return ;\r\n } else {\r\n return ;\r\n }\r\n};\r\n\r\nexport default DesktopTopCards;\r\n","import * as React from 'react';\r\nimport Card from '../Card';\r\nimport { UserSystemGroup, UserSystemGroupStrings } from 'store/storeTypes';\r\nimport { ITopCardsProps } from './TopCardsContainer';\r\nimport {\r\n determineUnitToShow,\r\n formatSecToMinString,\r\n formatSecToHourString,\r\n} from 'helpers/conversions';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nimport { chartIcon, dashboardIcon, likeIcon, productionIcon } from '../Icons';\r\nimport { TimeFrame } from 'models/ReportData';\r\nimport TotalImpressionCardMobile from '../TotatImpressionCardMobile';\r\nimport styled from 'styled-components';\r\nimport ProductionRateCardMobile from '../ProductionRateCardMobile';\r\nimport ProductivityCardMobile from '../ProductivityCardMobile';\r\nimport AvailabilityCardMobile from '../AvailabilityCardMobile';\r\nimport DesktopTopCards from './DesktopTopCards';\r\n\r\ntype TextByType = {\r\n [key in UserSystemGroupStrings]?: Text;\r\n};\r\nexport type Text = {\r\n impression: {\r\n description: { last: string; weekDay: string };\r\n statsDescription: { last: string; weekDay: string };\r\n chart: { day: string; week: string; custom?: string };\r\n };\r\n productionRate: {\r\n description: { last: string; weekDay: string };\r\n statsDescription: { last: string; weekDay: string };\r\n upper: string;\r\n lower: string;\r\n chart: { day: string; week: string; custom?: string };\r\n };\r\n utilization?: {\r\n chart: { day: string; week: string; custom?: string };\r\n };\r\n availability: {\r\n description: { last: string; weekDay: string };\r\n statsDescription: { last: string; weekDay: string };\r\n upper: string;\r\n lower: string;\r\n chart: { day: string; week: string; custom?: string };\r\n };\r\n};\r\nexport const text: TextByType = {\r\n DTF: {\r\n impression: {\r\n description: { last: 'Total Production', weekDay: 'Total Production' },\r\n statsDescription: { last: 'From last week', weekDay: 'From last week' },\r\n chart: {\r\n day: 'Total Production',\r\n week: 'Total Production',\r\n },\r\n },\r\n productionRate: {\r\n description: { last: 'Current prod. rate', weekDay: 'Average prod. rate' },\r\n statsDescription: { last: 'From last hour', weekDay: 'From last week' },\r\n upper: 'Avg. Utilization',\r\n lower: 'Preparation',\r\n chart: {\r\n day: 'Total Production by Hour',\r\n week: 'Average Production by Day',\r\n },\r\n },\r\n utilization: {\r\n chart: {\r\n day: 'Utilization by Hour (%)',\r\n week: 'Average Utilization by Day (%)',\r\n },\r\n },\r\n availability: {\r\n description: { last: 'Current Availability', weekDay: 'Average Availability' },\r\n statsDescription: { last: 'From last hour', weekDay: 'From last week' },\r\n upper: 'Error Dur.',\r\n lower: 'Maintenance Dur.',\r\n chart: {\r\n day: 'Availability by Hour',\r\n week: 'Availability by Day',\r\n },\r\n },\r\n },\r\n DTG: {\r\n impression: {\r\n description: { last: 'Total Impressions', weekDay: 'Total Impressions' },\r\n statsDescription: { last: 'From last week', weekDay: 'From last week' },\r\n chart: {\r\n day: 'Total Impressions',\r\n week: 'Total Impressions',\r\n custom: 'Total Impressions',\r\n },\r\n },\r\n productionRate: {\r\n description: { last: 'Current prod. rate', weekDay: 'Average prod. rate' },\r\n statsDescription: { last: 'From last hour', weekDay: 'From last week' },\r\n upper: 'Avg. Handling Time',\r\n lower: 'Dark Impressions',\r\n chart: {\r\n day: 'Total Impressions by Hour',\r\n week: 'Average Prod. Rate by Day',\r\n custom: 'Average Prod. Rate',\r\n },\r\n },\r\n utilization: {\r\n chart: {\r\n day: 'Productivity by Hour',\r\n week: 'Productivity by Day',\r\n custom: 'Productivity',\r\n },\r\n },\r\n availability: {\r\n description: { last: 'Current Availability', weekDay: 'Average Availability' },\r\n statsDescription: { last: 'From last hour', weekDay: 'From last week' },\r\n upper: 'Error Dur.',\r\n lower: 'Maintenance Dur.',\r\n chart: {\r\n day: 'Availability by Hour',\r\n week: 'Availability by Day',\r\n custom: 'Availability',\r\n },\r\n },\r\n },\r\n Apollo: {\r\n impression: {\r\n description: { last: 'Total Impressions', weekDay: 'Total Impressions' },\r\n statsDescription: { last: 'From last week', weekDay: 'From last week' },\r\n chart: {\r\n day: 'Total Impressions',\r\n week: 'Total Impressions',\r\n custom: 'Average Prod. Rate',\r\n },\r\n },\r\n productionRate: {\r\n description: { last: 'Current prod. rate', weekDay: 'Average prod. rate' },\r\n statsDescription: { last: 'From last hour', weekDay: 'From last week' },\r\n upper: 'Avg. Handling Time',\r\n lower: 'Dark Impressions',\r\n chart: {\r\n day: 'Total Impressions by Hour',\r\n week: 'Average Prod. Rate by Day',\r\n custom: 'Average Prod. Rate',\r\n },\r\n },\r\n utilization: {\r\n chart: {\r\n day: 'Productivity by Hour',\r\n week: 'Productivity by Day',\r\n custom: 'Productivity',\r\n },\r\n },\r\n availability: {\r\n description: { last: 'Current Availability', weekDay: 'Average Availability' },\r\n statsDescription: { last: 'From last hour', weekDay: 'From last week' },\r\n upper: 'Error Dur.',\r\n lower: 'Maintenance Dur.',\r\n chart: {\r\n day: 'Availability by Hour',\r\n week: 'Availability by Day',\r\n custom: 'Availability',\r\n },\r\n },\r\n },\r\n};\r\n\r\nexport const OverviewTopCard = styled.div`\r\n box-sizing: border-box;\r\n display: flex;\r\n\r\n width: 100%;\r\n min-height: 130px;\r\n\r\n background: #ffffff;\r\n border: 1px solid #c5d0de;\r\n box-shadow: 0px 0px 3px rgba(0, 0, 0, 0.03);\r\n border-radius: 4px;\r\n\r\n margin-bottom: 10px;\r\n padding: 12px 15px;\r\n`;\r\n\r\nconst TopCards = (props: ITopCardsProps) => {\r\n const { t } = useTranslation();\r\n const {\r\n timeframe: timeFrame,\r\n totalProduction,\r\n productionRateTrend,\r\n maintenanceDuration,\r\n darkImpressionsPercentage,\r\n errorDuration,\r\n productionTrend,\r\n productionRate,\r\n loadingTime,\r\n availabilityTrend,\r\n availability,\r\n selectedSystemGroup,\r\n darkImpressionsTrend,\r\n loadingTimeTrend,\r\n maintenanceDurationTrend,\r\n errorDurationTrend,\r\n preparation,\r\n utilization,\r\n trendPreparation,\r\n trendUtilization,\r\n productivity,\r\n productivityChange,\r\n printingTime,\r\n printingTimeTrend,\r\n userSettings,\r\n customTimeframeProperties,\r\n availabilityTotalDurationReported,\r\n isNotReprotingPeriod,\r\n isMobile,\r\n } = props;\r\n const changeTextPerPage = (timeframe: TimeFrame | '', text: string) => {\r\n if (timeframe && timeframe.includes('lastUpdate')) return text.replace('Average', 'Current');\r\n return text;\r\n };\r\n const getTimeframeTextKey = () => {\r\n return timeFrame && timeFrame.includes('lastUpdate') ? 'last' : 'weekDay';\r\n };\r\n const units = determineUnitToShow(selectedSystemGroup, userSettings, t);\r\n const selectedSystemGroupText = text[selectedSystemGroup]!;\r\n\r\n if (!isMobile) {\r\n return (\r\n \r\n );\r\n }\r\n\r\n if (isMobile) {\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n {(selectedSystemGroup === UserSystemGroup.DTG ||\r\n selectedSystemGroup === UserSystemGroup.Apollo) && (\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 React.memo(TopCards);\r\n","import { connect } from 'react-redux';\r\nimport { bindActionCreators, Dispatch } from 'redux';\r\nimport TopCards from './TopCards';\r\n\r\nimport { Store } from 'store/storeTypes';\r\nimport { TimeFrame } from 'models/ReportData';\r\nimport {\r\n overviewBySystemGroupAvailabilitySelector,\r\n overviewBySystemGroupAvailabilityTotalDurationReportedSelector,\r\n overviewBySystemGroupavailAbilityTrendSelector,\r\n overviewBySystemGroupDarkImpressionsPercentageSelector,\r\n overviewBySystemGroupDarkImpressionsTrendSelector,\r\n overviewBySystemGroupErrorDurationSelector,\r\n overviewBySystemGroupErrorDurationTrendSelector,\r\n overviewBySystemGroupIsNotReportingPeriodSelector,\r\n overviewBySystemGroupLoadingTimeSelector,\r\n overviewBySystemGroupLoadingTimeTrendSelector,\r\n overviewBySystemGroupMaintenanceDurationSelector,\r\n overviewBySystemGroupMaintenanceDurationTrendSelector,\r\n overviewBySystemGroupPreparationSelector,\r\n overviewBySystemGroupPrintingTimeSelector,\r\n overviewBySystemGroupPrintingTimeTrendSelector,\r\n overviewBySystemGroupProductionRateSelector,\r\n overviewBySystemGroupProductionRateTrendSelector,\r\n overviewBySystemGroupProductionTrendSelector,\r\n overviewBySystemGroupProductivityChangeSelector,\r\n overviewBySystemGroupProductivitySelector,\r\n overviewBySystemGroupProductivityUtilizationSelector,\r\n overviewBySystemGroupProductivityUtilizationTrendSelector,\r\n overviewBySystemGroupTotalProductionSelector,\r\n overviewBySystemGroupTrendPreparationSelector,\r\n overviewBySystemGroupTrendUtilizationSelector,\r\n overviewBySystemGroupUtilizationSelector,\r\n} from 'reducers/overviewReducer';\r\nimport { systemGroupSelector } from 'reducers/ui/systemGroupUiReducer';\r\nimport { dataUserSettingsSelector } from 'reducers/userSettingsReducer';\r\nimport { customTimeFramePropertiesSelector } from 'reducers/reports/filterStateReducer';\r\ntype OwnProps = {\r\n timeframe: TimeFrame;\r\n isMobile: boolean;\r\n isLeftDesktopColumn?: boolean;\r\n isRightDesktopColumn?: boolean;\r\n units?: string;\r\n selectedSystemGroupText?: any;\r\n};\r\nconst mapStateToProps = (state: Store) => {\r\n return {\r\n availability: overviewBySystemGroupAvailabilitySelector(state),\r\n availabilityTrend: overviewBySystemGroupavailAbilityTrendSelector(state),\r\n errorDuration: overviewBySystemGroupErrorDurationSelector(state),\r\n darkImpressionsPercentage: overviewBySystemGroupDarkImpressionsPercentageSelector(state),\r\n maintenanceDuration: overviewBySystemGroupMaintenanceDurationSelector(state),\r\n loadingTime: overviewBySystemGroupLoadingTimeSelector(state),\r\n productionRate: overviewBySystemGroupProductionRateSelector(state),\r\n productionRateTrend: overviewBySystemGroupProductionRateTrendSelector(state),\r\n productionTrend: overviewBySystemGroupProductionTrendSelector(state),\r\n totalProduction: overviewBySystemGroupTotalProductionSelector(state),\r\n darkImpressionsTrend: overviewBySystemGroupDarkImpressionsTrendSelector(state),\r\n loadingTimeTrend: overviewBySystemGroupLoadingTimeTrendSelector(state),\r\n maintenanceDurationTrend: overviewBySystemGroupMaintenanceDurationTrendSelector(state),\r\n errorDurationTrend: overviewBySystemGroupErrorDurationTrendSelector(state),\r\n trendPreparation: overviewBySystemGroupTrendPreparationSelector(state),\r\n trendUtilization: overviewBySystemGroupTrendUtilizationSelector(state),\r\n utilization: overviewBySystemGroupUtilizationSelector(state),\r\n preparation: overviewBySystemGroupPreparationSelector(state),\r\n productivity: overviewBySystemGroupProductivitySelector(state),\r\n productivityChange: overviewBySystemGroupProductivityChangeSelector(state),\r\n printingTime: overviewBySystemGroupPrintingTimeSelector(state),\r\n printingTimeTrend: overviewBySystemGroupPrintingTimeTrendSelector(state),\r\n productivityUtilization: overviewBySystemGroupProductivityUtilizationSelector(state),\r\n productivityUtilizationTrend: overviewBySystemGroupProductivityUtilizationTrendSelector(state),\r\n selectedSystemGroup: systemGroupSelector(state),\r\n userSettings: dataUserSettingsSelector(state),\r\n customTimeframeProperties: customTimeFramePropertiesSelector(state),\r\n isNotReprotingPeriod: overviewBySystemGroupIsNotReportingPeriodSelector(state),\r\n availabilityTotalDurationReported: overviewBySystemGroupAvailabilityTotalDurationReportedSelector(\r\n state\r\n ),\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch: Dispatch) => bindActionCreators({}, dispatch);\r\n\r\nexport type ITopCardsProps = ReturnType &\r\n OwnProps &\r\n ReturnType;\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(TopCards);\r\n","import { createSelector } from 'reselect';\r\nimport { createReducer } from 'typesafe-actions';\r\nimport { Store, SystemPageState } from 'store/storeTypes';\r\nimport {\r\n getTotalBottlesLoadedAC,\r\n getSystemPageCardsDataAC,\r\n getSystemPageMessagesAC,\r\n getTimeLineDataAC,\r\n downloadErrorAndMaintenanceReportAC,\r\n toggleDayTimelineView,\r\n incrementTimeLineHour,\r\n decrementTimeLineHour,\r\n setTimeLineHour,\r\n toggleAMPMmodificator,\r\n getTimelineDayViewRequestAC,\r\n getQualisetDataAC,\r\n getImpressionsCardsAC,\r\n getAvailabilityCardAC,\r\n} from 'actions/systemPageActions';\r\nimport { setTimeframeAC } from 'actions/reportFilterActions';\r\n\r\nconst INIT_STATE = {\r\n isTopCardsLoading: false,\r\n isLoading: false,\r\n isCommonErrorsLoading: false,\r\n isCommonMaintenanceEventsLoading: false,\r\n isAchievementCardLoading: false,\r\n\r\n isTimeLineDayLoading: false,\r\n isTimeLineDayLoaded: false,\r\n errorTimeLineDay: '',\r\n timeLineDataDay: null,\r\n\r\n isTimeLineWeekLoading: false,\r\n isTimeLineWeekLoaded: false,\r\n errorTimeLineWeek: '',\r\n timeLineDataWeek: null,\r\n\r\n timeLineDayView: 'day',\r\n timeLineAMPMmodificator: 'PM',\r\n timeLineSelectedHour: 18,\r\n error: '',\r\n loadedBottles: [],\r\n errorMessages: [],\r\n commonMaintenanceEvents: [],\r\n achievement: 0,\r\n productionRateChangeLastWeek: 0,\r\n productionRateChangeFleet: 0,\r\n productionRate: 0,\r\n productionChangeLastWeek: 0,\r\n productionChangeFleet: 0,\r\n production: 0,\r\n printerImage: '',\r\n lastStatus: '',\r\n lastSoftwareUpdate: '',\r\n availabilityChangeLastWeek: 0,\r\n availabilityChangeFleet: 0,\r\n availability: 0,\r\n appVersion: '',\r\n errorDuration: 0,\r\n maintenanceDuration: 0,\r\n isQualisetLoading: false,\r\n isQualisetError: '',\r\n qualisetData: undefined,\r\n isNotReportingPeriod: false,\r\n availabilityTotalDurationReported: 0,\r\n systemModel: '',\r\n};\r\n\r\nconst reducer = createReducer(INIT_STATE)\r\n .handleAction(getQualisetDataAC.request, (state, action) => {\r\n return { ...state, isQualisetLoading: true, isQualisetError: '', qualisetDate: undefined };\r\n })\r\n .handleAction(getQualisetDataAC.failure, (state, error) => {\r\n return { ...state, isQualisetLoading: false, isQualisetError: error, qualisetDate: undefined };\r\n })\r\n .handleAction(getQualisetDataAC.success, (state, action) => {\r\n return {\r\n ...state,\r\n isQualisetLoading: false,\r\n isQualisetError: '',\r\n qualisetData: action.payload,\r\n };\r\n })\r\n .handleAction(setTimeframeAC, (state, action) => {\r\n const { timeframe, startDate, selectedSystemGroup } = action.payload;\r\n if (!startDate) {\r\n return { ...state };\r\n }\r\n\r\n return {\r\n ...state,\r\n\r\n isTimeLineDayLoading: false,\r\n isTimeLineDayLoaded: false,\r\n errorTimeLineDay: '',\r\n timeLineDataDay: null,\r\n\r\n isTimeLineWeekLoading: false,\r\n isTimeLineWeekLoaded: false,\r\n errorTimeLineWeek: '',\r\n timeLineDataWeek: null,\r\n };\r\n })\r\n .handleAction(getTimelineDayViewRequestAC.request, (state, action) => {\r\n return {\r\n ...state,\r\n isTimeLineDayLoading: true,\r\n isTimeLineDayLoaded: false,\r\n errorTimeLineDay: '',\r\n timeLineDataDay: null,\r\n };\r\n })\r\n .handleAction(getTimelineDayViewRequestAC.success, (state, action) => {\r\n return {\r\n ...state,\r\n isTimeLineDayLoading: false,\r\n isTimeLineDayLoaded: true,\r\n errorTimeLineDay: '',\r\n timeLineDataDay: action.payload,\r\n };\r\n })\r\n .handleAction(getTimelineDayViewRequestAC.failure, (state, action) => {\r\n return {\r\n ...state,\r\n isTimeLineLoading: true,\r\n isTimeLineLoaded: false,\r\n errorTimeLine: 'request failed',\r\n timeLineDataDay: null,\r\n };\r\n })\r\n .handleAction(getTimeLineDataAC.request, (state, action) => {\r\n return {\r\n ...state,\r\n isTimeLineWeekLoading: true,\r\n isTimeLineWeekLoaded: false,\r\n errorTimeLineWeek: '',\r\n timeLineDataWeek: null,\r\n };\r\n })\r\n .handleAction(getTimeLineDataAC.success, (state, action) => {\r\n return {\r\n ...state,\r\n isTimeLineWeekLoading: false,\r\n isTimeLineWeekLoaded: true,\r\n errorTimeLineWeek: '',\r\n timeLineDataWeek: action.payload,\r\n };\r\n })\r\n .handleAction(getTimeLineDataAC.failure, (state, action) => {\r\n return {\r\n ...state,\r\n isTimeLineWeekLoading: true,\r\n isTimeLineWeekLoaded: false,\r\n errorTimeLine: 'request failed',\r\n timeLineDataWeek: null,\r\n };\r\n })\r\n\r\n .handleAction(toggleAMPMmodificator, (state, action) => {\r\n const { currentHour, currentModificator } = action.payload;\r\n const nextModificator = currentModificator === 'AM' ? 'PM' : 'AM';\r\n let nextHour;\r\n if (nextModificator === 'AM') {\r\n nextHour = currentHour - 12;\r\n }\r\n if (nextModificator === 'PM') {\r\n nextHour = currentHour + 12;\r\n }\r\n return {\r\n ...state,\r\n timeLineAMPMmodificator: nextModificator,\r\n timeLineSelectedHour: nextHour,\r\n };\r\n })\r\n .handleAction(setTimeLineHour, (state, action) => {\r\n const { value, modificator } = action.payload;\r\n let nextHourValue;\r\n if (modificator === 'PM') {\r\n nextHourValue = value === 12 ? 12 : value > 12 ? value : value + 12;\r\n } else if (modificator === 'AM') {\r\n nextHourValue = value;\r\n }\r\n return { ...state, timeLineSelectedHour: nextHourValue, timeLineAMPMmodificator: modificator };\r\n })\r\n\r\n .handleAction(decrementTimeLineHour, (state, action) => {\r\n const MAX_VALUE = 23;\r\n const MIN_VALUE = 0;\r\n const currentHour = +state.timeLineSelectedHour;\r\n const nextValue = currentHour <= MIN_VALUE ? MAX_VALUE : currentHour - 1;\r\n const modificator = nextValue >= 12 ? 'PM' : 'AM';\r\n\r\n return { ...state, timeLineSelectedHour: nextValue, timeLineAMPMmodificator: modificator };\r\n })\r\n .handleAction(incrementTimeLineHour, (state, action) => {\r\n const MAX_VALUE = 23;\r\n const MIN_VALUE = 0;\r\n const currentHour = +state.timeLineSelectedHour;\r\n const nextValue = currentHour >= MAX_VALUE ? MIN_VALUE : currentHour + 1;\r\n const modificator = nextValue >= 12 ? 'PM' : 'AM';\r\n return { ...state, timeLineSelectedHour: nextValue, timeLineAMPMmodificator: modificator };\r\n })\r\n\r\n .handleAction(toggleDayTimelineView, (state, action) => {\r\n const currentView = state.timeLineDayView;\r\n const nextView = currentView === 'day' ? 'hour' : 'day';\r\n return { ...state, timeLineDayView: nextView };\r\n })\r\n\r\n .handleAction(getTotalBottlesLoadedAC.request, (state, action) => {\r\n return { ...state, isLoading: true, error: '' };\r\n })\r\n .handleAction(getTotalBottlesLoadedAC.success, (state, action) => {\r\n return { ...state, isLoading: false, error: '', loadedBottles: action.payload };\r\n })\r\n .handleAction(getTotalBottlesLoadedAC.failure, (state, error) => {\r\n return { ...state, isLoading: false };\r\n })\r\n .handleAction(getSystemPageMessagesAC.request, (state, action) => {\r\n return {\r\n ...state,\r\n error: '',\r\n isCommonErrorsLoading: true,\r\n isCommonMaintenanceEventsLoading: true,\r\n };\r\n })\r\n .handleAction(getSystemPageMessagesAC.success, (state, action) => {\r\n return {\r\n ...state,\r\n error: '',\r\n isCommonErrorsLoading: false,\r\n isCommonMaintenanceEventsLoading: false,\r\n errorMessages: action.payload.errorTableData.messageTableData,\r\n commonMaintenanceEvents: action.payload.maintenanceTableData.messageTableData,\r\n };\r\n })\r\n .handleAction(getSystemPageMessagesAC.failure, (state, error) => {\r\n return {\r\n ...state,\r\n isCommonErrorsLoading: false,\r\n isCommonMaintenanceEventsLoading: false,\r\n error,\r\n };\r\n })\r\n .handleAction(getSystemPageCardsDataAC.request, (state, action) => {\r\n return { ...state, isAchievementCardLoading: true, isTopCardsLoading: true, error: '' };\r\n })\r\n .handleAction(getSystemPageCardsDataAC.success, (state, action) => {\r\n const {\r\n achievement,\r\n productionRateChangeLastWeek,\r\n productionRateChangeFleet,\r\n productionRate,\r\n productionChangeLastWeek,\r\n productionChangeFleet,\r\n production,\r\n printerImage,\r\n lastStatus,\r\n lastSoftwareUpdate,\r\n availabilityChangeLastWeek,\r\n availabilityChangeFleet,\r\n availability,\r\n appVersion,\r\n errorDuration,\r\n errorPercentage,\r\n maintenanceDuration,\r\n maintenancePercentage,\r\n productivity,\r\n productivityChangeFleet,\r\n productivityChangeLastWeek,\r\n isNotReportingPeriod,\r\n availabilityTotalDurationReported,\r\n } = action.payload;\r\n return {\r\n ...state,\r\n isAchievementCardLoading: false,\r\n achievement,\r\n productionRateChangeLastWeek,\r\n productionRateChangeFleet,\r\n productionRate,\r\n productionChangeLastWeek,\r\n productionChangeFleet,\r\n production,\r\n printerImage,\r\n lastStatus,\r\n lastSoftwareUpdate,\r\n availabilityChangeLastWeek,\r\n availabilityChangeFleet,\r\n availability,\r\n appVersion,\r\n errorDuration,\r\n errorPercentage,\r\n maintenanceDuration,\r\n maintenancePercentage,\r\n productivity,\r\n productivityChangeFleet,\r\n productivityChangeLastWeek,\r\n isTopCardsLoading: false,\r\n isNotReportingPeriod,\r\n availabilityTotalDurationReported,\r\n };\r\n })\r\n .handleAction(getSystemPageCardsDataAC.failure, (state, error) => {\r\n return { ...state, isAchievementCardLoading: false, isTopCardsLoading: false, error };\r\n })\r\n .handleAction(getImpressionsCardsAC.request, (state, action) => {\r\n if (action.payload.isSilent) {\r\n return { ...state };\r\n } else {\r\n return { ...state, isImpressionCardsLoading: true, error: '' };\r\n }\r\n })\r\n .handleAction(getImpressionsCardsAC.success, (state, action) => {\r\n const payload = action.payload.data;\r\n\r\n return {\r\n ...state,\r\n isImpressionCardsLoading: false,\r\n production: payload.production,\r\n productionChangeFleet: payload.productionChangeFleet,\r\n productionChangeLastWeek: payload.productionChangeLastWeek,\r\n productionRate: payload.productionRate,\r\n productionRateChangeFleet: payload.productionRateChangeFleet,\r\n productionRateChangeLastWeek: payload.productionRateChangeLastWeek,\r\n productivity: payload.productivity,\r\n productivityChangeFleet: payload.productivityChangeFleet,\r\n productivityChangeLastWeek: payload.productivityChangeLastWeek,\r\n };\r\n })\r\n .handleAction(getAvailabilityCardAC.request, (state, action) => {\r\n if (action.payload.isSilent) {\r\n return { ...state };\r\n } else {\r\n return { ...state, isAvailabilityCardLoading: true, error: '' };\r\n }\r\n })\r\n .handleAction(getAvailabilityCardAC.success, (state, action) => {\r\n const payload = action.payload.data;\r\n\r\n return {\r\n ...state,\r\n isAvailabilityCardLoading: false,\r\n availability: payload.availability,\r\n availabilityChangeFleet: payload.availabilityChangeFleet,\r\n availabilityChangeLastWeek: payload.availabilityChangeLastWeek,\r\n errorDuration: payload.errorDuration,\r\n lastStatus: payload.lastStatus,\r\n maintenanceDuration: payload.maintenanceDuration,\r\n };\r\n });\r\nexport default reducer;\r\n\r\n//*selectors\r\nconst systemPageStateSelector = (state: Store) => {\r\n return state.systemPage;\r\n};\r\nexport const modelNameSelector = createSelector(\r\n [systemPageStateSelector],\r\n systemPage => systemPage.systemModel\r\n);\r\nexport const isImpressionCardsLoadingSelector = createSelector(\r\n [systemPageStateSelector],\r\n systemPage => systemPage.isImpressionCardsLoading\r\n);\r\nexport const isAvailabilityCardLoadingSelector = createSelector(\r\n [systemPageStateSelector],\r\n systemPage => systemPage.isAvailabilityCardLoading\r\n);\r\nexport const isQualisetLoadingSelector = createSelector(\r\n [systemPageStateSelector],\r\n systemPage => systemPage.isQualisetLoading\r\n);\r\nexport const qualisetDataSelector = createSelector(\r\n [systemPageStateSelector],\r\n systemPage => systemPage.qualisetData\r\n);\r\nexport const isNotReportingPeriodSelector = createSelector(\r\n [systemPageStateSelector],\r\n systemPage => systemPage.isNotReportingPeriod\r\n);\r\nexport const availabilityTotalDurationReportedSelector = createSelector(\r\n [systemPageStateSelector],\r\n systemPage => systemPage.availabilityTotalDurationReported\r\n);\r\nexport const timeLineSelectedHourSelector = createSelector(\r\n [systemPageStateSelector],\r\n systemPage => systemPage['timeLineSelectedHour']\r\n);\r\nexport const timeLineAMPMmodificatorSelector = createSelector(\r\n [systemPageStateSelector],\r\n systemPage => systemPage['timeLineAMPMmodificator']\r\n);\r\nexport const timeLineDayViewSelector = createSelector(\r\n [systemPageStateSelector],\r\n systemPage => systemPage['timeLineDayView']\r\n);\r\nexport const isCommonMaintenanceEventsLoadingSelector = createSelector(\r\n [systemPageStateSelector],\r\n systemPage => systemPage['isCommonMaintenanceEventsLoading']\r\n);\r\n\r\nexport const commonMaintenanceEventsSelector = createSelector(\r\n [systemPageStateSelector],\r\n systemPage => systemPage['commonMaintenanceEvents']\r\n);\r\n\r\nexport const loadedBottlesSelector = createSelector(\r\n [systemPageStateSelector],\r\n systemPage => systemPage['loadedBottles']\r\n);\r\n\r\nexport const errorMessagesSelector = createSelector(\r\n [systemPageStateSelector],\r\n systemPage => systemPage['errorMessages']\r\n);\r\n\r\nexport const isCommonErrorsLoadingSelector = createSelector(\r\n [systemPageStateSelector],\r\n systemPage => systemPage['isCommonErrorsLoading']\r\n);\r\n\r\nexport const systemPageisLoadingSelector = createSelector(\r\n [systemPageStateSelector],\r\n systemPage => systemPage['isLoading']\r\n);\r\nexport const isTopCardsLoadingSelector = createSelector(\r\n [systemPageStateSelector],\r\n systemPage => systemPage.isTopCardsLoading\r\n);\r\nexport const isAchievementCardLoadingSelector = createSelector(\r\n [systemPageStateSelector],\r\n systemPage => systemPage.isAchievementCardLoading\r\n);\r\nexport const achievementSelector = createSelector(\r\n [systemPageStateSelector],\r\n systemPage => systemPage.achievement\r\n);\r\nexport const productionRateChangeLastWeekSelector = createSelector(\r\n [systemPageStateSelector],\r\n systemPage => systemPage['productionRateChangeLastWeek']\r\n);\r\n\r\nexport const productionRateChangeFleetSelector = createSelector(\r\n [systemPageStateSelector],\r\n systemPage => systemPage['productionRateChangeFleet']\r\n);\r\nexport const productionRateSelector = createSelector(\r\n [systemPageStateSelector],\r\n systemPage => systemPage['productionRate']\r\n);\r\n\r\nexport const productionChangeLastWeekSelector = createSelector(\r\n [systemPageStateSelector],\r\n systemPage => systemPage['productionChangeLastWeek']\r\n);\r\n\r\nexport const productionChangeFleetSelector = createSelector(\r\n [systemPageStateSelector],\r\n systemPage => systemPage['productionChangeFleet']\r\n);\r\nexport const productivitySelector = createSelector(\r\n [systemPageStateSelector],\r\n systemPage => systemPage['productivity']\r\n);\r\nexport const productivityChangeFleetSelector = createSelector(\r\n [systemPageStateSelector],\r\n systemPage => systemPage['productivityChangeFleet']\r\n);\r\nexport const productivityChangeLastWeekSelector = createSelector(\r\n [systemPageStateSelector],\r\n systemPage => systemPage['productivityChangeLastWeek']\r\n);\r\nexport const productionSelector = createSelector(\r\n [systemPageStateSelector],\r\n systemPage => systemPage['production']\r\n);\r\n\r\nexport const printerImageSelector = createSelector(\r\n [systemPageStateSelector],\r\n systemPage => systemPage['printerImage']\r\n);\r\n\r\nexport const lastStatusSelector = createSelector(\r\n [systemPageStateSelector],\r\n systemPage => systemPage['lastStatus']\r\n);\r\n\r\nexport const lastSoftwareUpdateSelector = createSelector(\r\n [systemPageStateSelector],\r\n systemPage => systemPage['lastSoftwareUpdate']\r\n);\r\n\r\nexport const availabilityChangeLastWeekSelector = createSelector(\r\n [systemPageStateSelector],\r\n systemPage => systemPage['availabilityChangeLastWeek']\r\n);\r\n\r\nexport const availabilityChangeFleetSelector = createSelector(\r\n [systemPageStateSelector],\r\n systemPage => systemPage['availabilityChangeFleet']\r\n);\r\n\r\nexport const availabilitySelector = createSelector(\r\n [systemPageStateSelector],\r\n systemPage => systemPage['availability']\r\n);\r\nexport const errorDurationSelector = createSelector(\r\n [systemPageStateSelector],\r\n systemPage => systemPage['errorDuration']\r\n);\r\nexport const errorPercentageSelector = createSelector(\r\n [systemPageStateSelector],\r\n systemPage => systemPage['errorPercentage']\r\n);\r\nexport const maintenanceDurationSelector = createSelector(\r\n [systemPageStateSelector],\r\n systemPage => systemPage['maintenanceDuration']\r\n);\r\nexport const maintenancePercentageSelector = createSelector(\r\n [systemPageStateSelector],\r\n systemPage => systemPage['maintenancePercentage']\r\n);\r\nexport const appVersionSelector = createSelector(\r\n [systemPageStateSelector],\r\n systemPage => systemPage['appVersion']\r\n);\r\n\r\nexport const timeLineDataDaySelector = createSelector(\r\n [systemPageStateSelector],\r\n systemPage => systemPage['timeLineDataDay']\r\n);\r\nexport const isTimeLineDayLoadingSelector = createSelector(\r\n [systemPageStateSelector],\r\n systemPage => systemPage['isTimeLineDayLoading']\r\n);\r\nexport const isTimeLineDayLoadedSelector = createSelector(\r\n [systemPageStateSelector],\r\n systemPage => systemPage['isTimeLineDayLoaded']\r\n);\r\n\r\nexport const timeLineDataWeekSelector = createSelector(\r\n [systemPageStateSelector],\r\n systemPage => systemPage['timeLineDataWeek']\r\n);\r\nexport const isTimeLineWeekLoadingSelector = createSelector(\r\n [systemPageStateSelector],\r\n systemPage => systemPage['isTimeLineWeekLoading']\r\n);\r\nexport const isTimeLineWeekLoadedSelector = createSelector(\r\n [systemPageStateSelector],\r\n systemPage => systemPage['isTimeLineWeekLoaded']\r\n);\r\n","import { createSelector } from 'reselect';\r\nimport { createReducer } from 'typesafe-actions';\r\nimport _ from 'lodash';\r\n\r\nimport {\r\n clearDtfCardsSelection,\r\n clearSelectionSizeCards,\r\n getModeSummaryCardsAC,\r\n highlightDTFCard,\r\n selectDTFCard,\r\n setDtfPageSelectorToDefaulBySizeState,\r\n toggleSelectionSizeCard,\r\n toggleSelectionSizeGroupCards,\r\n} from './../actions/jobSummaryActions';\r\nimport { getJobSummaryCardsAC } from 'actions/jobSummaryActions';\r\nimport {\r\n DtfPageSelector,\r\n JobSummaryStateTypes,\r\n ModeDTFTypeCards,\r\n SizeDTGCardType,\r\n Store,\r\n} from 'store/storeTypes';\r\nimport { jobAnalysisChartCardsAC, jobAnalysisChartsAC } from 'actions/jobAnalysisActions';\r\nimport { systemGroupSelector } from './ui/systemGroupUiReducer';\r\n\r\nconst INIT_STATE: JobSummaryStateTypes = {\r\n loading: false,\r\n isApolloLoaded: false,\r\n isApolloLoading: false,\r\n isDTGLoading: false,\r\n isDTGLoaded: false,\r\n isDTFLoading: false,\r\n isDTFLoaded: false,\r\n error: '',\r\n DTG: new Array(),\r\n Apollo: new Array(),\r\n dtfPageSelector: DtfPageSelector.BySize,\r\n DTF: new Array(),\r\n isDtfResolutionGroupSelected: false,\r\n};\r\nconst reducer = createReducer(INIT_STATE)\r\n //just to make default state is loading to false.\r\n .handleAction([jobAnalysisChartCardsAC.success, jobAnalysisChartsAC.success], (state, action) => {\r\n return { ...state, isDTFLoaded: false, isDTGLoaded: false };\r\n })\r\n\r\n //DTF actions\r\n .handleAction(getModeSummaryCardsAC.request, (state, action) => {\r\n return { ...state, isDTFLoading: true, isDTFLoaded: false };\r\n })\r\n .handleAction(getModeSummaryCardsAC.success, (state, action) => {\r\n return {\r\n ...state,\r\n isDTFLoading: false,\r\n isDTFLoaded: true,\r\n dtfPageSelector: DtfPageSelector.BySize,\r\n DTF: action.payload.jobSummaryData,\r\n };\r\n })\r\n .handleAction(getModeSummaryCardsAC.failure, (state, error) => {\r\n return {\r\n ...state,\r\n error: 'getting mode summary data failed',\r\n isDTFLoading: false,\r\n isDTFLoaded: false,\r\n };\r\n })\r\n .handleAction(highlightDTFCard, (state, action) => {\r\n const { mode, resolution } = action.payload;\r\n if (!state.DTF) {\r\n return { ...state };\r\n }\r\n const oldCard: ModeDTFTypeCards | undefined = state.DTF.find(\r\n (card: { mode: number; modeResolution: string }) =>\r\n card.mode === mode && card.modeResolution === resolution\r\n );\r\n if (!oldCard) {\r\n return { ...state };\r\n }\r\n const newCard: ModeDTFTypeCards = { ...oldCard, selected: !oldCard.selected };\r\n\r\n const filteredDTFArray = [\r\n ...state.DTF.filter(\r\n (card: { mode: number; modeResolution: string }) =>\r\n card.modeResolution !== resolution || card.mode !== mode\r\n ),\r\n ];\r\n\r\n return {\r\n ...state,\r\n DTF: [...filteredDTFArray, newCard],\r\n dtfLoaded: true,\r\n isDTFLoaded: true,\r\n };\r\n })\r\n .handleAction(selectDTFCard, (state, action) => {\r\n return {\r\n ...state,\r\n dtfPageSelector: action.payload.cardHeader,\r\n dtfGroupPercent: action.payload.percentOfAllJob,\r\n };\r\n })\r\n\r\n .handleAction(clearDtfCardsSelection, (state, action) => {\r\n const newDtfCarsArray = state.DTF?.map(card => {\r\n return { ...card, selected: false };\r\n });\r\n return _.merge(_.cloneDeep(state), {\r\n DTF: newDtfCarsArray,\r\n isDTFLoaded: true,\r\n });\r\n })\r\n .handleAction(setDtfPageSelectorToDefaulBySizeState, (state, action) => {\r\n return {\r\n ...state,\r\n dtfPageSelector: DtfPageSelector.BySize,\r\n };\r\n })\r\n\r\n //dtg action\r\n .handleAction(getJobSummaryCardsAC.request, (state, action) => {\r\n return {\r\n ...state,\r\n isApolloLoading: true,\r\n isApolloLoaded: false,\r\n isDTGLoading: true,\r\n isDTGLoaded: false,\r\n error: '',\r\n dtfPageSelector: DtfPageSelector.BySize,\r\n };\r\n })\r\n .handleAction(getJobSummaryCardsAC.success, (state, action) => {\r\n return {\r\n ...state,\r\n isApolloLoading: false,\r\n isApolloLoaded: true,\r\n isDTGLoading: false,\r\n isDTGLoaded: true,\r\n [action.payload.systemGroup]: action.payload.jobSummaryData,\r\n dtfPageSelector: DtfPageSelector.BySize,\r\n };\r\n })\r\n\r\n .handleAction(getJobSummaryCardsAC.failure, (state, error) => {\r\n return {\r\n ...state,\r\n isApolloLoading: false,\r\n isApolloLoaded: false,\r\n isDTGLoading: false,\r\n isDTGLoaded: false,\r\n error,\r\n };\r\n })\r\n .handleAction(toggleSelectionSizeCard, (state, action) => {\r\n const { id, selectedSystemGroup } = action.payload;\r\n if (!state[selectedSystemGroup]) {\r\n return { ...state };\r\n }\r\n const oldCard = state[selectedSystemGroup].find(card => card.id === id);\r\n if (!oldCard || !oldCard.production) {\r\n return { ...state };\r\n }\r\n\r\n const newCard = { ...oldCard, selected: !oldCard.selected };\r\n\r\n const filteredArray = [...state[selectedSystemGroup].filter(card => card.id !== id)];\r\n return {\r\n ...state,\r\n [selectedSystemGroup]: [...filteredArray, newCard],\r\n isDTGLoaded: true,\r\n };\r\n })\r\n .handleAction(toggleSelectionSizeGroupCards, (state, action) => {\r\n const { nameSet, selectedSystemGroup } = action.payload;\r\n const filter = nameSet.toLowerCase();\r\n if (!state[selectedSystemGroup]) {\r\n return { ...state };\r\n }\r\n const selectedCards = [\r\n ...state[selectedSystemGroup].filter(card => card.sizeString === filter),\r\n ];\r\n const [card1, card2] = selectedCards;\r\n const isAtLeastOneCardSelected = card1.selected || card2.selected;\r\n const filteredDTG = [\r\n ...state[selectedSystemGroup].filter(card => card.id !== card1.id && card.id !== card2.id),\r\n ];\r\n if (isAtLeastOneCardSelected) {\r\n const [newCard1, newCard2] = createNewCardGroupChoosenSizeByParam(false, selectedCards);\r\n\r\n const newSelectedCards = new Array();\r\n newCard1.production > 0 ? newSelectedCards.push(newCard1) : newSelectedCards.push(card1);\r\n newCard2.production > 0 ? newSelectedCards.push(newCard2) : newSelectedCards.push(card2);\r\n return { ...state, DTG: [...filteredDTG, ...newSelectedCards] };\r\n }\r\n const [newCard1, newCard2] = createNewCardGroupChoosenSizeByParam(true, selectedCards);\r\n\r\n const newSelectedCards = [];\r\n newCard1.production > 0 ? newSelectedCards.push(newCard1) : newSelectedCards.push(card1);\r\n newCard2.production > 0 ? newSelectedCards.push(newCard2) : newSelectedCards.push(card2);\r\n return { ...state, [selectedSystemGroup]: [...filteredDTG, ...newSelectedCards] };\r\n })\r\n .handleAction(clearSelectionSizeCards, (state, action) => {\r\n const newDtgCarsArray: Array = [];\r\n state.DTG?.forEach(card => {\r\n newDtgCarsArray.push({ ...card, selected: false });\r\n });\r\n return _.merge(_.cloneDeep(state), { DTG: newDtgCarsArray, isDTGLoaded: true });\r\n });\r\nexport default reducer;\r\n//helpers for this reducer\r\nexport const createNewCardGroupChoosenSizeByParam = (\r\n newSelectedState: boolean,\r\n sourceArr: Array\r\n): Array => {\r\n const [card1, card2] = sourceArr;\r\n const newCard1 = { ...card1, selected: newSelectedState };\r\n const newCard2 = { ...card2, selected: newSelectedState };\r\n return [newCard1, newCard2];\r\n};\r\n//*selectors\r\nexport const jobSummarySelector = (state: Store) => {\r\n return state.jobSummary;\r\n};\r\n\r\nexport const dtgCardsSelector = createSelector([jobSummarySelector], jobSummary => {\r\n return jobSummary['DTG'];\r\n});\r\nexport const apolloCardsSelector = createSelector([jobSummarySelector], jobSummary => {\r\n return jobSummary['Apollo'];\r\n});\r\nexport const dtfCardsSelector = createSelector([jobSummarySelector], jobSummary => {\r\n return jobSummary['DTF'];\r\n});\r\nexport const jobSummaryCardsBySystemGroupSelector = createSelector(\r\n [jobSummarySelector, systemGroupSelector],\r\n (jobSummary, systemGroup) => {\r\n return jobSummary[systemGroup];\r\n }\r\n);\r\nexport const JobSummaryLoadingSelector = createSelector([jobSummarySelector], jobSummary => {\r\n return jobSummary['loading'];\r\n});\r\n\r\nexport const isDTFLoadedSelector = createSelector([jobSummarySelector], jobSummary => {\r\n return jobSummary['isDTFLoaded'];\r\n});\r\nexport const isDTFLoadingSelector = createSelector([jobSummarySelector], jobSummary => {\r\n return jobSummary['isDTFLoading'];\r\n});\r\nexport const isJobSummaryComponentLoadingSelectorByAnyGroup = createSelector(\r\n [jobSummarySelector],\r\n jobSummary => {\r\n return (\r\n jobSummary['isDTFLoading'] || jobSummary['isDTGLoading'] || jobSummary['isApolloLoading']\r\n );\r\n }\r\n);\r\nexport const isDTGLoadedSelector = createSelector([jobSummarySelector], jobSummary => {\r\n return jobSummary['isDTGLoaded'];\r\n});\r\nexport const isDTGLoadingSelector = createSelector([jobSummarySelector], jobSummary => {\r\n return jobSummary['isDTGLoading'];\r\n});\r\nexport const dtfPageSelector = createSelector([jobSummarySelector], jobSummary => {\r\n return jobSummary['dtfPageSelector'];\r\n});\r\nexport const jobSummaryBySystemGroup = createSelector(\r\n [jobSummarySelector, systemGroupSelector],\r\n (jobSummary, systemGroup) => {\r\n return jobSummary[systemGroup];\r\n }\r\n);\r\nexport const jobSummarySelectedLengthSelector = createSelector(\r\n [jobSummaryBySystemGroup],\r\n jobSummary => {\r\n return jobSummary?.filter(card => card.selected).length;\r\n }\r\n);\r\n","import { TimeLineDayViewUnit } from 'components/SystemPage/TimeLineChart/DayViewBarChart';\r\nimport { DayViewType } from 'store/storeTypes';\r\n\r\nexport function mapCahrtData(array) {\r\n if (!array) return;\r\n const result = new Array();\r\n array.forEach(element => {\r\n const { Error, Maintenance, Idle, Printing, NotReporting } = element;\r\n const newErrorValue = numberToRoundedPercent(Error);\r\n const newMaintenanceValue = numberToRoundedPercent(Maintenance);\r\n const newIdleValue = numberToRoundedPercent(Idle);\r\n const newPrintingValue = numberToRoundedPercent(Printing);\r\n const newNotReportingValue = numberToRoundedPercent(NotReporting);\r\n const date = element.date;\r\n const stringDate = element.stringDate;\r\n const newFormattedElement = {\r\n date,\r\n stringDate,\r\n Error: newErrorValue,\r\n Maintenance: newMaintenanceValue,\r\n NotReporting: newNotReportingValue,\r\n Idle: newIdleValue,\r\n Printing: newPrintingValue,\r\n };\r\n result.push(newFormattedElement);\r\n });\r\n return result;\r\n}\r\nexport function numberToRoundedPercent(value) {\r\n return Math.round(value * 100);\r\n}\r\n\r\nexport const mapResposeToTimeLineDayArray = (\r\n arr: Array,\r\n type: DayViewType\r\n) => {\r\n let index = 0;\r\n let currentMinuteValue = 0;\r\n //*different step for different type resolution. 'hour' or 'day'\r\n const step = type === DayViewType.hour ? 1 : 5;\r\n const resultArray = new Array();\r\n arr.forEach(element => {\r\n const curretnElement = element;\r\n const status = curretnElement.systemStatus ? curretnElement.systemStatus : 'noData';\r\n const newElement = {\r\n ...curretnElement,\r\n systemStatus: status,\r\n minute: currentMinuteValue,\r\n height: 1,\r\n };\r\n resultArray.push(newElement);\r\n index++;\r\n currentMinuteValue += step;\r\n });\r\n\r\n return resultArray;\r\n};\r\n\r\n//*chart helpers\r\n\r\nexport function getSvgTextOffset24HourView(index) {\r\n const TEXT_OFFSET = -14;\r\n if (index === 0) {\r\n return TEXT_OFFSET - 6;\r\n }\r\n if (index === 2) {\r\n return TEXT_OFFSET;\r\n }\r\n return TEXT_OFFSET - 4;\r\n}\r\nexport function getSvgTextOffset1HourView(index: number, width: number) {\r\n if (index === 4) {\r\n //* offset for hour:40\r\n return -12;\r\n }\r\n if (index === 6) {\r\n return -15;\r\n }\r\n //*for all other ticks example: hour:10, hour:20 etc...\r\n return -11;\r\n}\r\nexport function getTickTopBottomCoordinates1HourView(currentElementIndex: number, y: number) {\r\n //*harcoded long tick indexes\r\n const LONG_TICK_INDEX = [4, 6, 8];\r\n if (currentElementIndex === 0 || currentElementIndex === 12) {\r\n return { topY: 0, bottomY: y + 7 };\r\n }\r\n if (LONG_TICK_INDEX.includes(currentElementIndex)) {\r\n return { topY: y - 10, bottomY: y + 7 };\r\n } else {\r\n return { topY: y - 10, bottomY: y };\r\n }\r\n}\r\nexport function getTickTopBottomCoordinates24HourView(index: number, y: number) {\r\n const longTicks = [0, 8, 12, 16, 24];\r\n if (longTicks.includes(index)) {\r\n if (index === 0 || index === 24) {\r\n return { topY: 0, bottomY: y + 7 };\r\n }\r\n return { topY: y - 10, bottomY: y + 7 };\r\n } else {\r\n return { topY: y - 10, bottomY: y };\r\n }\r\n}\r\nexport function getXCoordinates24HourView(index: number, width: number, intervalsCount: number) {\r\n const RANGE = width / intervalsCount;\r\n const START = 43;\r\n const END = width + 44;\r\n if (index === 0) {\r\n return START;\r\n }\r\n if (index === 24) {\r\n return END + 2;\r\n }\r\n\r\n return START + index * RANGE;\r\n}\r\n\r\nexport function getXCoordinates1HourView(index: number, width: number, intervalsCount: number) {\r\n const RANGE = width / intervalsCount;\r\n const START = 44;\r\n const END = width + 46;\r\n\r\n if (index === 0) {\r\n return START;\r\n }\r\n if (index === 12) {\r\n return END;\r\n }\r\n if (\r\n index === 1 ||\r\n index === 3 ||\r\n index === 5 ||\r\n index === 7 ||\r\n index === 8 ||\r\n index === 9 ||\r\n index === 10 ||\r\n index === 11\r\n ) {\r\n return START + index * RANGE + 1;\r\n }\r\n\r\n return START + index * RANGE - 1;\r\n}\r\nexport function convertHourtFrom12To24Format(hour: number, modificator: string) {\r\n if (modificator === 'AM') {\r\n return +hour;\r\n }\r\n if (modificator === 'PM') {\r\n return Number(+hour + 12);\r\n }\r\n}\r\nexport function convertHourFrom24To12Format(hour: number) {\r\n if (hour > 12) {\r\n return Number(hour - 12);\r\n }\r\n return +hour;\r\n}\r\nexport function isPropsInitializedOnTimeline24HViewTooltip(props): boolean {\r\n if (props.label && props.payload && props.coordinate) {\r\n const { label, coordinate, payload } = props;\r\n if (coordinate.x && coordinate.y && payload && payload[0] && label) {\r\n const [payloadObject] = payload;\r\n if (payloadObject && payloadObject.payload) {\r\n return true;\r\n }\r\n }\r\n } else {\r\n return false;\r\n }\r\n}\r\nexport function getXTooltipOffsetByHour(hour: number, width: number): number {\r\n const STEP = width / 24;\r\n const START = 43;\r\n const leftShift = hour >= 5 ? 2 : 0;\r\n\r\n if (hour === 0) {\r\n return START;\r\n } else {\r\n return START - leftShift + hour * STEP;\r\n }\r\n}\r\nexport function getTooltipWidth(width: number, intervals: number) {\r\n return width / intervals + 4;\r\n}\r\n\r\nexport function getSvgTextFor1hourViewGraph(\r\n index: number,\r\n\r\n timeLineSelectedHour: number,\r\n allTickPointIndexes: Array,\r\n currentElementIndex: number,\r\n timeLineAMPMmodificator: string\r\n): string | number | null {\r\n let resultHour =\r\n timeLineSelectedHour > 11 ? `${timeLineSelectedHour - 12}` : `${timeLineSelectedHour}`;\r\n if (timeLineAMPMmodificator === 'PM' && resultHour === '0') {\r\n resultHour = '12';\r\n }\r\n if (timeLineAMPMmodificator === 'AM' && resultHour === '0') {\r\n resultHour = '0';\r\n }\r\n const hourNames = [\r\n `${resultHour}:00 ${timeLineAMPMmodificator}`,\r\n `${resultHour}:10 ${timeLineAMPMmodificator}`,\r\n `${resultHour}:20 ${timeLineAMPMmodificator}`,\r\n `${resultHour}:30 ${timeLineAMPMmodificator}`,\r\n `${resultHour}:40 ${timeLineAMPMmodificator}`,\r\n `${resultHour}:50 ${timeLineAMPMmodificator}`,\r\n 'lastElement',\r\n ];\r\n\r\n if (allTickPointIndexes.includes(index) && !isNaN(timeLineSelectedHour)) {\r\n return hourNames[currentElementIndex];\r\n } else {\r\n return null;\r\n }\r\n}\r\n","import logoutTimerUiReducer from 'reducers/ui/logoutTimerUiReducer';\r\nimport { config } from '../config';\r\nimport { ConfigNamesEnum } from 'store/storeTypes';\r\n\r\nconst devConfig: config = {\r\n AUTH_CONFIG_STR: {\r\n domain: 'dev-sbafxfr4.eu.auth0.com',\r\n clientID: 'kU6E86Xq2JlUhWXuFGPa0YDGQXESx8wp',\r\n redirectUri: 'https://devkonnectadmindata.z6.web.core.windows.net',\r\n audience: 'https://dev.konnect.kornit.com',\r\n returnTo: 'https://devkonnectadmindata.z6.web.core.windows.net',\r\n },\r\n API_ROUTER_HOST: 'https://dev-konnect-admin-handlers.azurewebsites.net/api/portalUrl',\r\n AUTH0_CLAIMS_NAMESPACE: 'https://schemas.dev-sbafxfr4.com/',\r\n SELF_HOST: 'https://devkonnectadmindata.z6.web.core.windows.net',\r\n USER_LOGOUT_TIMEOUT: 14400000,\r\n WEEK_START: 1,\r\n FILTER_HIDE: false,\r\n USER_AGREEMENT_VERSION: 1.5,\r\n SHOW_PBI_REPORT_PAGES_PANE: false,\r\n SHOW_PBI_REPORT_FILTERS_PANE: false,\r\n REPORTS_REFRESH_TIMEOUT_SECONDS: 300,\r\n MAX_LOAD_ATTEMPTS: 5,\r\n SPLIT_WEEK_BY_END_OF_YEAR: true,\r\n ENV_NAME: ConfigNamesEnum.Dev,\r\n PLATFORM: 'web',\r\n SHOW_VERSION_VERSION_LABEL: true,\r\n GENERATE_SOURCEMAP: true,\r\n LOGGER_INSTRUMENTAION_KEY: 'c8412821-c572-465c-a2c6-35dd1b2c3fb3',\r\n REFRESH_API_INTERVAL: 600000,\r\n MIXPANEL_KEY: 'e361850fceb820d591e0cc1d6b1732cf',\r\n GOOGLE_ANALYTICS_KEY: 'UA-187586006-3',\r\n UNSUBSCRIBE_END_POINT:\r\n 'https://dev-konnect-portal.kornitkonnect.com/api/email-reports-scheduler/unsubscribe',\r\n SERVICE_TICKET_END_POINT: 'https://SandboxKornit.formtitan.com/CaseFormJuly',\r\n BLOB_URL: 'https://devconnectportaldata.blob.core.windows.net',\r\n API_URL: 'https://dev-konnect-portal.kornitkonnect.com',\r\n RECAPTCHA_KEY: '6LdzndIjAAAAANQ7LVjhg7siwpSWmVM3A9YkXai8',\r\n};\r\n\r\nexport default devConfig;\r\n","import { ConfigNamesEnum } from 'store/storeTypes';\r\nimport { config } from '../config';\r\n\r\nconst configTest: config = {\r\n AUTH_CONFIG_STR: {\r\n domain: 'dev-sbafxfr4.eu.auth0.com',\r\n clientID: 'mcBsdgXJy65MnLNlzlFFAmo8sTTRPhRw',\r\n redirectUri: 'https://kncttestadminportalapp.z6.web.core.windows.net',\r\n audience: 'https://test.konnect.kornit.com',\r\n returnTo: 'https://kncttestadminportalapp.z6.web.core.windows.net',\r\n },\r\n API_ROUTER_HOST:\r\n 'https://konnect-test-admin-function-app-handlers.azurewebsites.net/api/portalUrl',\r\n AUTH0_CLAIMS_NAMESPACE: 'https://schemas.dev-sbafxfr4.com/',\r\n SELF_HOST: 'https://kncttestadminportalapp.z6.web.core.windows.net',\r\n USER_LOGOUT_TIMEOUT: 14400000,\r\n USER_AGREEMENT_VERSION: 1.5,\r\n WEEK_START: 1,\r\n FILTER_HIDE: false,\r\n SHOW_PBI_REPORT_PAGES_PANE: false,\r\n SHOW_PBI_REPORT_FILTERS_PANE: false,\r\n REPORTS_REFRESH_TIMEOUT_SECONDS: 300,\r\n MAX_LOAD_ATTEMPTS: 5,\r\n SPLIT_WEEK_BY_END_OF_YEAR: true,\r\n ENV_NAME: ConfigNamesEnum.Test,\r\n PLATFORM: 'web',\r\n SHOW_VERSION_VERSION_LABEL: true,\r\n GENERATE_SOURCEMAP: true,\r\n LOGGER_INSTRUMENTAION_KEY: 'c3391ca2-a3dd-4a33-bdf8-cf99d3325403',\r\n REFRESH_API_INTERVAL: 600000,\r\n UNSUBSCRIBE_END_POINT:\r\n 'https://konnect-test-edge-portal-api-appservice.kornitkonnect.com/api/email-reports-scheduler/unsubscribe',\r\n SERVICE_TICKET_END_POINT: 'https://SandboxKornit.formtitan.com/CaseFormJuly',\r\n BLOB_URL: 'https://devconnectportaldata.blob.core.windows.net',\r\n API_URL: 'https://konnect-test-edge-portal-api-appservice.kornitkonnect.com',\r\n RECAPTCHA_KEY: '6LdzndIjAAAAANQ7LVjhg7siwpSWmVM3A9YkXai8',\r\n};\r\nexport default configTest;\r\n","import { ConfigNamesEnum } from 'store/storeTypes';\r\nimport { config } from '../config';\r\n\r\nconst testDebug: config = {\r\n AUTH_CONFIG_STR: {\r\n domain: 'dev-sbafxfr4.eu.auth0.com',\r\n clientID: 'mcBsdgXJy65MnLNlzlFFAmo8sTTRPhRw',\r\n redirectUri: 'http://localhost:3000',\r\n audience: 'https://test.konnect.kornit.com',\r\n returnTo: 'http://localhost:3000',\r\n },\r\n API_ROUTER_HOST:\r\n 'https://konnect-test-admin-function-app-handlers.azurewebsites.net/api/portalUrl',\r\n AUTH0_CLAIMS_NAMESPACE: 'https://schemas.dev-sbafxfr4.com/',\r\n SELF_HOST: 'http://localhost:3000',\r\n USER_LOGOUT_TIMEOUT: 14400000,\r\n WEEK_START: 1,\r\n FILTER_HIDE: false,\r\n USER_AGREEMENT_VERSION: 1.5,\r\n SHOW_PBI_REPORT_PAGES_PANE: false,\r\n SHOW_PBI_REPORT_FILTERS_PANE: false,\r\n REPORTS_REFRESH_TIMEOUT_SECONDS: 300,\r\n MAX_LOAD_ATTEMPTS: 5,\r\n SPLIT_WEEK_BY_END_OF_YEAR: true,\r\n ENV_NAME: ConfigNamesEnum.Dev,\r\n PLATFORM: 'web',\r\n SHOW_VERSION_VERSION_LABEL: true,\r\n GENERATE_SOURCEMAP: true,\r\n LOGGER_INSTRUMENTAION_KEY: 'c8412821-c572-465c-a2c6-35dd1b2c3fb3',\r\n REFRESH_API_INTERVAL: 600000,\r\n MIXPANEL_KEY: 'e361850fceb820d591e0cc1d6b1732cf',\r\n GOOGLE_ANALYTICS_KEY: 'UA-187586006-3',\r\n UNSUBSCRIBE_END_POINT:\r\n 'https://dev-konnect-portal.kornitkonnect.com/api/email-reports-scheduler/unsubscribe',\r\n SERVICE_TICKET_END_POINT: 'https://SandboxKornit.formtitan.com/CaseFormJuly',\r\n BLOB_URL: 'https://devconnectportaldata.blob.core.windows.net',\r\n API_URL: 'https://konnect-test-edge-portal-api-appservice.kornitkonnect.com',\r\n RECAPTCHA_KEY: '6LdzndIjAAAAANQ7LVjhg7siwpSWmVM3A9YkXai8',\r\n};\r\n\r\nexport default testDebug;\r\n","import { ConfigNamesEnum } from 'store/storeTypes';\r\nimport { config } from '../config';\r\n\r\nconst configProd: config = {\r\n AUTH_CONFIG_STR: {\r\n domain: 'kornit-konnect.eu.auth0.com',\r\n clientID: 'fefRZqIdjqOA1CiIfHCqe7tt40yil1II',\r\n redirectUri: 'https://konnect-stg.kornitkonnect.com',\r\n audience: 'https://konnect-stg.kornitkonnect.com',\r\n returnTo: 'https://konnect-stg.kornitkonnect.com',\r\n },\r\n API_ROUTER_HOST:\r\n 'https://konnect-stg-admin-function-app-handlers.kornitkonnect.com/api/portalUrl',\r\n AUTH0_CLAIMS_NAMESPACE: 'https://konnect.kornit.com/',\r\n SELF_HOST: 'https://konnect-stg.kornitkonnect.com',\r\n USER_LOGOUT_TIMEOUT: 14400000,\r\n USER_AGREEMENT_VERSION: 1.5,\r\n WEEK_START: 1,\r\n FILTER_HIDE: false,\r\n SHOW_PBI_REPORT_PAGES_PANE: false,\r\n SHOW_PBI_REPORT_FILTERS_PANE: false,\r\n REPORTS_REFRESH_TIMEOUT_SECONDS: 300,\r\n MAX_LOAD_ATTEMPTS: 5,\r\n SPLIT_WEEK_BY_END_OF_YEAR: true,\r\n ENV_NAME: ConfigNamesEnum.Staging,\r\n PLATFORM: 'web',\r\n SHOW_VERSION_VERSION_LABEL: true,\r\n GENERATE_SOURCEMAP: false,\r\n LOGGER_INSTRUMENTAION_KEY: '7454a837-61fb-4a57-b407-5f1b43b7f130',\r\n REFRESH_API_INTERVAL: 600000,\r\n UNSUBSCRIBE_END_POINT:\r\n 'https://konnect-stg-edge-portal-api-appservice.kornitkonnect.com/api/email-reports-scheduler/unsubscribe',\r\n SERVICE_TICKET_END_POINT: 'https://SandboxKornit.formtitan.com/CaseFormJuly',\r\n BLOB_URL: 'https://konnectstgedgedata.blob.core.windows.net',\r\n API_URL: 'https://konnect-stg-edge-portal-api-appservice.kornitkonnect.com',\r\n RECAPTCHA_KEY: '6LdzndIjAAAAANQ7LVjhg7siwpSWmVM3A9YkXai8',\r\n};\r\nexport default configProd;\r\n","import { ConfigNamesEnum } from 'store/storeTypes';\r\nimport { config } from '../config';\r\n\r\nconst configProd: config = {\r\n AUTH_CONFIG_STR: {\r\n domain: 'kornit-konnect.eu.auth0.com',\r\n clientID: 'ML44BLej2btwkvRcwAEuUECteLb8zc2R',\r\n redirectUri: 'https://kornitkonnect.com',\r\n audience: 'https://kornitkonnect.com/api',\r\n returnTo: 'https://kornitkonnect.com',\r\n state:\r\n 'hKFo2SB2LUJIM2N2TE1rc0lXdEhXWHZERXFXRXA4OUh3V3QyMKFupWxvZ2luo3RpZNkgeUFKa1V0cENNS1NrT1phbG1BVUZJbldYSUsyOHlWbjKjY2lk2SBNTDQ0QkxlajJidHdrdlJjd0FFdVVFQ3RlTGI4emMyUg',\r\n protocol: 'oauth2',\r\n response_type: 'token%20id_token',\r\n scope: 'openid%20profile%20user_metadata%20app_metadata',\r\n nonce: 'UULb-g89y3YMQxafdCMkOKQ131xti3Rz',\r\n auth0Client: 'eyJuYW1lIjoiYXV0aDAuanMiLCJ2ZXJzaW9uIjoiOS4xMC4wIn0%3D',\r\n },\r\n API_ROUTER_HOST: 'https://adminapi-prod.kornitkonnect.com/api/portalUrl',\r\n AUTH0_CLAIMS_NAMESPACE: 'https://konnect.kornit.com/',\r\n SELF_HOST: 'https://kornitkonnect.com',\r\n USER_LOGOUT_TIMEOUT: 14400000,\r\n USER_AGREEMENT_VERSION: 1.5,\r\n WEEK_START: 1,\r\n FILTER_HIDE: false,\r\n SHOW_PBI_REPORT_PAGES_PANE: false,\r\n SHOW_PBI_REPORT_FILTERS_PANE: false,\r\n REPORTS_REFRESH_TIMEOUT_SECONDS: 300,\r\n MAX_LOAD_ATTEMPTS: 5,\r\n SPLIT_WEEK_BY_END_OF_YEAR: true,\r\n ENV_NAME: ConfigNamesEnum.Production,\r\n PLATFORM: 'web',\r\n SHOW_VERSION_VERSION_LABEL: false,\r\n GENERATE_SOURCEMAP: false,\r\n LOGGER_INSTRUMENTAION_KEY: '8c2aafbd-94d4-4ea3-a820-cd582964ea05',\r\n REFRESH_API_INTERVAL: 600000,\r\n MIXPANEL_KEY: '20cbcec35d502ba3f1451070c160353d',\r\n UNSUBSCRIBE_END_POINT:\r\n 'https://portalapi-prod.kornitkonnect.com/api/email-reports-scheduler/unsubscribe',\r\n SERVICE_TICKET_END_POINT: 'https://Kornit.formtitan.com/CaseFormJuly',\r\n BLOB_URL: 'https://prodedge1portaldata.blob.core.windows.net',\r\n API_URL: 'https://portalapi-prod.kornitkonnect.com',\r\n RECAPTCHA_KEY: '6LdzndIjAAAAANQ7LVjhg7siwpSWmVM3A9YkXai8',\r\n};\r\nexport default configProd;\r\n","import { ConfigNamesEnum } from 'store/storeTypes';\r\nimport { config } from '../config';\r\n\r\nconst localConfig: config = {\r\n AUTH_CONFIG_STR: {\r\n domain: 'dev-sbafxfr4.eu.auth0.com',\r\n clientID: 'kU6E86Xq2JlUhWXuFGPa0YDGQXESx8wp',\r\n redirectUri: 'http://localhost:3000',\r\n audience: 'https://dev.konnect.kornit.com',\r\n returnTo: 'http://localhost:3000',\r\n },\r\n API_ROUTER_HOST: 'https://dev-konnect-admin-handlers.azurewebsites.net/api/portalUrl',\r\n AUTH0_CLAIMS_NAMESPACE: 'https://schemas.dev-sbafxfr4.com/',\r\n SELF_HOST: 'http://localhost:3000',\r\n USER_LOGOUT_TIMEOUT: 14400000,\r\n WEEK_START: 1,\r\n FILTER_HIDE: false,\r\n USER_AGREEMENT_VERSION: 1.5,\r\n SHOW_PBI_REPORT_PAGES_PANE: false,\r\n SHOW_PBI_REPORT_FILTERS_PANE: false,\r\n REPORTS_REFRESH_TIMEOUT_SECONDS: 300,\r\n MAX_LOAD_ATTEMPTS: 5,\r\n SPLIT_WEEK_BY_END_OF_YEAR: true,\r\n ENV_NAME: ConfigNamesEnum.Dev,\r\n PLATFORM: 'web',\r\n SHOW_VERSION_VERSION_LABEL: true,\r\n GENERATE_SOURCEMAP: true,\r\n LOGGER_INSTRUMENTAION_KEY: 'c8412821-c572-465c-a2c6-35dd1b2c3fb3',\r\n REFRESH_API_INTERVAL: 600000,\r\n MIXPANEL_KEY: 'e361850fceb820d591e0cc1d6b1732cf',\r\n GOOGLE_ANALYTICS_KEY: 'UA-187586006-3',\r\n UNSUBSCRIBE_END_POINT:\r\n 'https://dev-konnect-portal.kornitkonnect.com/api/email-reports-scheduler/unsubscribe',\r\n SERVICE_TICKET_END_POINT: 'https://SandboxKornit.formtitan.com/CaseFormJuly',\r\n BLOB_URL: 'https://devconnectportaldata.blob.core.windows.net',\r\n API_URL: 'https://dev-konnect-portal.kornitkonnect.com',\r\n RECAPTCHA_KEY: '6LdzndIjAAAAANQ7LVjhg7siwpSWmVM3A9YkXai8',\r\n};\r\n\r\nexport default localConfig;\r\n","import { ConfigNamesEnum } from 'store/storeTypes';\r\nimport { config } from '../config';\r\n\r\nconst dvpsConfig: config = {\r\n AUTH_CONFIG_STR: {\r\n domain: 'dev-sbafxfr4.eu.auth0.com',\r\n clientID: 'GeunJKgpSdPshYuQpENgzQ2dChgcRC6F',\r\n redirectUri: 'https://dvpsadmin1portalapp.z6.web.core.windows.net',\r\n audience: 'https://devops.konnect.kornit.com',\r\n returnTo: 'https://dvpsadmin1portalapp.z6.web.core.windows.net',\r\n },\r\n API_ROUTER_HOST: 'https://tf-konnect-dvps-admin-1-admin-handlers.azurewebsites.net/api/portalUrl',\r\n AUTH0_CLAIMS_NAMESPACE: 'https://schemas.dev-sbafxfr4.com/',\r\n SELF_HOST: 'https://dvpsadmin1portalapp.z6.web.core.windows.net',\r\n USER_LOGOUT_TIMEOUT: 14400000,\r\n WEEK_START: 1,\r\n FILTER_HIDE: false,\r\n USER_AGREEMENT_VERSION: 1.5,\r\n SHOW_PBI_REPORT_PAGES_PANE: false,\r\n SHOW_PBI_REPORT_FILTERS_PANE: false,\r\n REPORTS_REFRESH_TIMEOUT_SECONDS: 300,\r\n MAX_LOAD_ATTEMPTS: 5,\r\n SPLIT_WEEK_BY_END_OF_YEAR: true,\r\n ENV_NAME: ConfigNamesEnum.DevOps,\r\n PLATFORM: 'web',\r\n SHOW_VERSION_VERSION_LABEL: true,\r\n GENERATE_SOURCEMAP: true,\r\n LOGGER_INSTRUMENTAION_KEY: 'c8412821-c572-465c-a2c6-35dd1b2c3fb3',\r\n REFRESH_API_INTERVAL: 600000,\r\n MIXPANEL_KEY: 'e361850fceb820d591e0cc1d6b1732cf',\r\n GOOGLE_ANALYTICS_KEY: 'UA-187586006-3',\r\n UNSUBSCRIBE_END_POINT:\r\n 'https://dev-konnect-portal.kornitkonnect.com/api/email-reports-scheduler/unsubscribe',\r\n SERVICE_TICKET_END_POINT: 'https://SandboxKornit.formtitan.com/CaseFormJuly',\r\n BLOB_URL: 'https://devconnectportaldata.blob.core.windows.net',\r\n API_URL: 'https://dev-konnect-portal.kornitkonnect.com',\r\n RECAPTCHA_KEY: '6LdzndIjAAAAANQ7LVjhg7siwpSWmVM3A9YkXai8',\r\n};\r\nexport default dvpsConfig;\r\n","import { ConfigNamesEnum } from 'store/storeTypes';\r\nimport { config } from '../config';\r\n\r\nconst configMobileProdIos: config = {\r\n AUTH_CONFIG_STR: {\r\n domain: 'kornit-konnect.eu.auth0.com',\r\n clientID: 'ML44BLej2btwkvRcwAEuUECteLb8zc2R',\r\n redirectUri: 'https://kornitkonnect.com',\r\n audience: 'https://kornitkonnect.com/api',\r\n returnTo: 'https://kornitkonnect.com',\r\n state:\r\n 'hKFo2SB2LUJIM2N2TE1rc0lXdEhXWHZERXFXRXA4OUh3V3QyMKFupWxvZ2luo3RpZNkgeUFKa1V0cENNS1NrT1phbG1BVUZJbldYSUsyOHlWbjKjY2lk2SBNTDQ0QkxlajJidHdrdlJjd0FFdVVFQ3RlTGI4emMyUg',\r\n protocol: 'oauth2',\r\n response_type: 'token%20id_token',\r\n scope: 'openid%20profile%20user_metadata%20app_metadata',\r\n nonce: 'UULb-g89y3YMQxafdCMkOKQ131xti3Rz',\r\n auth0Client: 'eyJuYW1lIjoiYXV0aDAuanMiLCJ2ZXJzaW9uIjoiOS4xMC4wIn0%3D',\r\n },\r\n API_ROUTER_HOST: 'https://adminapi-prod.kornitkonnect.com/api/portalUrl',\r\n AUTH0_CLAIMS_NAMESPACE: 'https://konnect.kornit.com/',\r\n SELF_HOST: 'https://kornitkonnect.com',\r\n USER_LOGOUT_TIMEOUT: 14400000,\r\n USER_AGREEMENT_VERSION: 1.5,\r\n WEEK_START: 1,\r\n FILTER_HIDE: false,\r\n SHOW_PBI_REPORT_PAGES_PANE: false,\r\n SHOW_PBI_REPORT_FILTERS_PANE: false,\r\n REPORTS_REFRESH_TIMEOUT_SECONDS: 300,\r\n MAX_LOAD_ATTEMPTS: 5,\r\n SPLIT_WEEK_BY_END_OF_YEAR: true,\r\n ENV_NAME: ConfigNamesEnum.Production,\r\n PLATFORM: 'IOS',\r\n SHOW_VERSION_VERSION_LABEL: false,\r\n GENERATE_SOURCEMAP: false,\r\n LOGGER_INSTRUMENTAION_KEY: '8c2aafbd-94d4-4ea3-a820-cd582964ea05',\r\n REFRESH_API_INTERVAL: 600000,\r\n MIXPANEL_KEY: '20cbcec35d502ba3f1451070c160353d',\r\n UNSUBSCRIBE_END_POINT:\r\n 'https://portalapi-prod.kornitkonnect.com/api/email-reports-scheduler/unsubscribe',\r\n SERVICE_TICKET_END_POINT: 'https://Kornit.formtitan.com/CaseFormJuly',\r\n BLOB_URL: 'https://prodedge1portaldata.blob.core.windows.net',\r\n API_URL: 'https://portalapi-prod.kornitkonnect.com',\r\n RECAPTCHA_KEY: '6LdzndIjAAAAANQ7LVjhg7siwpSWmVM3A9YkXai8',\r\n};\r\nexport default configMobileProdIos;\r\n","import { ConfigNamesEnum } from 'store/storeTypes';\r\nimport { config } from '../config';\r\n\r\nconst configMobileProdAndroid: config = {\r\n AUTH_CONFIG_STR: {\r\n domain: 'kornit-konnect.eu.auth0.com',\r\n clientID: 'ML44BLej2btwkvRcwAEuUECteLb8zc2R',\r\n redirectUri: 'https://kornitkonnect.com',\r\n audience: 'https://kornitkonnect.com/api',\r\n returnTo: 'https://kornitkonnect.com',\r\n state:\r\n 'hKFo2SB2LUJIM2N2TE1rc0lXdEhXWHZERXFXRXA4OUh3V3QyMKFupWxvZ2luo3RpZNkgeUFKa1V0cENNS1NrT1phbG1BVUZJbldYSUsyOHlWbjKjY2lk2SBNTDQ0QkxlajJidHdrdlJjd0FFdVVFQ3RlTGI4emMyUg',\r\n protocol: 'oauth2',\r\n response_type: 'token%20id_token',\r\n scope: 'openid%20profile%20user_metadata%20app_metadata',\r\n nonce: 'UULb-g89y3YMQxafdCMkOKQ131xti3Rz',\r\n auth0Client: 'eyJuYW1lIjoiYXV0aDAuanMiLCJ2ZXJzaW9uIjoiOS4xMC4wIn0%3D',\r\n },\r\n API_ROUTER_HOST: 'https://adminapi-prod.kornitkonnect.com/api/portalUrl',\r\n AUTH0_CLAIMS_NAMESPACE: 'https://konnect.kornit.com/',\r\n SELF_HOST: 'https://kornitkonnect.com',\r\n USER_LOGOUT_TIMEOUT: 14400000,\r\n USER_AGREEMENT_VERSION: 1.5,\r\n WEEK_START: 1,\r\n FILTER_HIDE: false,\r\n SHOW_PBI_REPORT_PAGES_PANE: false,\r\n SHOW_PBI_REPORT_FILTERS_PANE: false,\r\n REPORTS_REFRESH_TIMEOUT_SECONDS: 300,\r\n MAX_LOAD_ATTEMPTS: 5,\r\n SPLIT_WEEK_BY_END_OF_YEAR: true,\r\n ENV_NAME: ConfigNamesEnum.Production,\r\n PLATFORM: 'android',\r\n SHOW_VERSION_VERSION_LABEL: false,\r\n GENERATE_SOURCEMAP: false,\r\n LOGGER_INSTRUMENTAION_KEY: '8c2aafbd-94d4-4ea3-a820-cd582964ea05',\r\n REFRESH_API_INTERVAL: 600000,\r\n MIXPANEL_KEY: '20cbcec35d502ba3f1451070c160353d',\r\n UNSUBSCRIBE_END_POINT:\r\n 'https://portalapi-prod.kornitkonnect.com/api/email-reports-scheduler/unsubscribe',\r\n SERVICE_TICKET_END_POINT: 'https://Kornit.formtitan.com/CaseFormJuly',\r\n BLOB_URL: 'https://prodedge1portaldata.blob.core.windows.net',\r\n API_URL: 'https://portalapi-prod.kornitkonnect.com',\r\n RECAPTCHA_KEY: '6LdzndIjAAAAANQ7LVjhg7siwpSWmVM3A9YkXai8',\r\n};\r\nexport default configMobileProdAndroid;\r\n","import { ConfigNamesEnum } from 'store/storeTypes';\r\nimport { config } from '../config';\r\n\r\nconst configMobileDevIos: config = {\r\n AUTH_CONFIG_STR: {\r\n domain: 'dev-sbafxfr4.eu.auth0.com',\r\n clientID: 'kU6E86Xq2JlUhWXuFGPa0YDGQXESx8wp',\r\n redirectUri: 'https://devkonnectadmindata.z6.web.core.windows.net',\r\n audience: 'https://dev.konnect.kornit.com',\r\n returnTo: 'https://devkonnectadmindata.z6.web.core.windows.net',\r\n },\r\n API_ROUTER_HOST: 'https://dev-konnect-admin-handlers.azurewebsites.net/api/portalUrl',\r\n AUTH0_CLAIMS_NAMESPACE: 'https://schemas.dev-sbafxfr4.com/',\r\n SELF_HOST: 'https://devkonnectadmindata.z6.web.core.windows.net',\r\n USER_LOGOUT_TIMEOUT: 14400000,\r\n WEEK_START: 1,\r\n FILTER_HIDE: false,\r\n USER_AGREEMENT_VERSION: 1.5,\r\n SHOW_PBI_REPORT_PAGES_PANE: false,\r\n SHOW_PBI_REPORT_FILTERS_PANE: false,\r\n REPORTS_REFRESH_TIMEOUT_SECONDS: 300,\r\n MAX_LOAD_ATTEMPTS: 5,\r\n SPLIT_WEEK_BY_END_OF_YEAR: true,\r\n ENV_NAME: ConfigNamesEnum.Dev,\r\n PLATFORM: 'IOS',\r\n SHOW_VERSION_VERSION_LABEL: true,\r\n GENERATE_SOURCEMAP: true,\r\n LOGGER_INSTRUMENTAION_KEY: 'c8412821-c572-465c-a2c6-35dd1b2c3fb3',\r\n REFRESH_API_INTERVAL: 600000,\r\n MIXPANEL_KEY: 'e361850fceb820d591e0cc1d6b1732cf',\r\n GOOGLE_ANALYTICS_KEY: 'UA-187586006-3',\r\n UNSUBSCRIBE_END_POINT:\r\n 'https://dev-konnect-portal.kornitkonnect.com/api/email-reports-scheduler/unsubscribe',\r\n SERVICE_TICKET_END_POINT: 'https://SandboxKornit.formtitan.com/CaseFormJuly',\r\n BLOB_URL: 'https://devconnectportaldata.blob.core.windows.net',\r\n API_URL: 'https://dev-konnect-portal.kornitkonnect.com',\r\n RECAPTCHA_KEY: '6LdzndIjAAAAANQ7LVjhg7siwpSWmVM3A9YkXai8',\r\n};\r\nexport default configMobileDevIos;\r\n","import { ConfigNamesEnum } from 'store/storeTypes';\r\nimport { config } from '../config';\r\n\r\nconst configMobileDevAndroid: config = {\r\n AUTH_CONFIG_STR: {\r\n domain: 'dev-sbafxfr4.eu.auth0.com',\r\n clientID: 'kU6E86Xq2JlUhWXuFGPa0YDGQXESx8wp',\r\n redirectUri: 'https://devkonnectadmindata.z6.web.core.windows.net',\r\n audience: 'https://dev.konnect.kornit.com',\r\n returnTo: 'https://devkonnectadmindata.z6.web.core.windows.net',\r\n },\r\n API_ROUTER_HOST: 'https://dev-konnect-admin-handlers.azurewebsites.net/api/portalUrl',\r\n AUTH0_CLAIMS_NAMESPACE: 'https://schemas.dev-sbafxfr4.com/',\r\n SELF_HOST: 'https://devkonnectadmindata.z6.web.core.windows.net',\r\n USER_LOGOUT_TIMEOUT: 14400000,\r\n WEEK_START: 1,\r\n FILTER_HIDE: false,\r\n USER_AGREEMENT_VERSION: 1.5,\r\n SHOW_PBI_REPORT_PAGES_PANE: false,\r\n SHOW_PBI_REPORT_FILTERS_PANE: false,\r\n REPORTS_REFRESH_TIMEOUT_SECONDS: 300,\r\n MAX_LOAD_ATTEMPTS: 5,\r\n SPLIT_WEEK_BY_END_OF_YEAR: true,\r\n ENV_NAME: ConfigNamesEnum.Dev,\r\n PLATFORM: 'android',\r\n SHOW_VERSION_VERSION_LABEL: true,\r\n GENERATE_SOURCEMAP: true,\r\n LOGGER_INSTRUMENTAION_KEY: 'c8412821-c572-465c-a2c6-35dd1b2c3fb3',\r\n REFRESH_API_INTERVAL: 600000,\r\n MIXPANEL_KEY: 'e361850fceb820d591e0cc1d6b1732cf',\r\n GOOGLE_ANALYTICS_KEY: 'UA-187586006-3',\r\n UNSUBSCRIBE_END_POINT:\r\n 'https://dev-konnect-portal.kornitkonnect.com/api/email-reports-scheduler/unsubscribe',\r\n SERVICE_TICKET_END_POINT: 'https://SandboxKornit.formtitan.com/CaseFormJuly',\r\n BLOB_URL: 'https://devconnectportaldata.blob.core.windows.net',\r\n API_URL: 'https://dev-konnect-portal.kornitkonnect.com',\r\n RECAPTCHA_KEY: '6LdzndIjAAAAANQ7LVjhg7siwpSWmVM3A9YkXai8',\r\n};\r\nexport default configMobileDevAndroid;\r\n","import { ConfigNamesEnum } from 'store/storeTypes';\r\nimport { config } from '../config';\r\n\r\nconst configAuto: config = {\r\n AUTH_CONFIG_STR: {\r\n domain: 'kornit-konnect.eu.auth0.com',\r\n clientID: 'kGxPhJqtw0IVMx8pgb24dzsgRn2Roy0K',\r\n redirectUri: 'https://autoadmin1portalapp.z6.web.core.windows.net',\r\n audience: 'https://konnect-auto.kornitkonnect.com',\r\n returnTo: 'https://autoadmin1portalapp.z6.web.core.windows.net',\r\n },\r\n API_ROUTER_HOST: 'https://tf-konnect-auto-admin-1-admin-handlers.azurewebsites.net/api/portalUrl',\r\n AUTH0_CLAIMS_NAMESPACE: 'https://konnect.kornit.com/',\r\n SELF_HOST: 'https://autoadmin1portalapp.z6.web.core.windows.net',\r\n USER_LOGOUT_TIMEOUT: 14400000,\r\n USER_AGREEMENT_VERSION: 1.5,\r\n WEEK_START: 1,\r\n FILTER_HIDE: false,\r\n SHOW_PBI_REPORT_PAGES_PANE: false,\r\n SHOW_PBI_REPORT_FILTERS_PANE: false,\r\n REPORTS_REFRESH_TIMEOUT_SECONDS: 300,\r\n MAX_LOAD_ATTEMPTS: 5,\r\n SPLIT_WEEK_BY_END_OF_YEAR: true,\r\n ENV_NAME: ConfigNamesEnum.Auto,\r\n PLATFORM: 'web',\r\n SHOW_VERSION_VERSION_LABEL: true,\r\n GENERATE_SOURCEMAP: false,\r\n LOGGER_INSTRUMENTAION_KEY: '7454a837-61fb-4a57-b407-5f1b43b7f130',\r\n REFRESH_API_INTERVAL: 600000,\r\n UNSUBSCRIBE_END_POINT:\r\n 'https://konnect-stg-edge-portal-api-appservice.kornitkonnect.com/api/email-reports-scheduler/unsubscribe',\r\n SERVICE_TICKET_END_POINT: 'https://SandboxKornit.formtitan.com/CaseFormJuly',\r\n BLOB_URL: 'https://devconnectportaldata.blob.core.windows.net',\r\n API_URL: 'https://tf-konnect-auto-edge-1-portal-app.azurewebsites.net',\r\n RECAPTCHA_KEY: '6LdzndIjAAAAANQ7LVjhg7siwpSWmVM3A9YkXai8',\r\n};\r\n\r\nexport default configAuto;\r\n","import configDev from './configsPerEnv/config.dev';\r\nimport configTest from './configsPerEnv/config.tst';\r\nimport configTestDebug from './configsPerEnv/config.tstDebug';\r\nimport configStage from './configsPerEnv/config.stg';\r\nimport configProd from './configsPerEnv/config.prod';\r\nimport configLocal from './configsPerEnv/config.local';\r\nimport configDvps from './configsPerEnv/config.dvps';\r\nimport configMobileProdIos from './configsPerEnv/config.mobileProdIos';\r\nimport configMobileProdAndroid from './configsPerEnv/config.mobileProdAndroid';\r\nimport { GenericPropsType } from 'store/storeTypes';\r\nimport configMobileDevIos from './configsPerEnv/config.MobileDevIos';\r\nimport configMobileDevAndroid from './configsPerEnv/config.mobileDevAndroid';\r\nimport configAuto from './configsPerEnv/config.auto';\r\nexport interface config {\r\n AUTH_CONFIG_STR: auth0Config;\r\n API_ROUTER_HOST: string;\r\n AUTH0_CLAIMS_NAMESPACE: string;\r\n SELF_HOST: string;\r\n USER_LOGOUT_TIMEOUT: number;\r\n WEEK_START: number;\r\n FILTER_HIDE: boolean;\r\n USER_AGREEMENT_VERSION: number;\r\n SHOW_PBI_REPORT_PAGES_PANE: boolean;\r\n SHOW_PBI_REPORT_FILTERS_PANE: boolean;\r\n REPORTS_REFRESH_TIMEOUT_SECONDS: number;\r\n MAX_LOAD_ATTEMPTS: number;\r\n SPLIT_WEEK_BY_END_OF_YEAR: boolean;\r\n ENV_NAME: string;\r\n SHOW_VERSION_VERSION_LABEL: boolean;\r\n GENERATE_SOURCEMAP: boolean;\r\n LOGGER_INSTRUMENTAION_KEY: string;\r\n [key: string]: GenericPropsType;\r\n REFRESH_API_INTERVAL: number;\r\n PLATFORM: string;\r\n BLOB_URL: string;\r\n API_URL: string;\r\n RECAPTCHA_KEY: string;\r\n REAL_TIME_USER_LIST: Array;\r\n MIXPANEL_KEY?: string;\r\n}\r\ninterface auth0Config {\r\n domain: string;\r\n clientID: string;\r\n redirectUri: string;\r\n audience: string;\r\n returnTo: string;\r\n state?: string;\r\n protocol?: string;\r\n response_type?: string;\r\n scope?: string;\r\n nonce?: string;\r\n auth0Client?: string;\r\n}\r\n\r\n//@ts-ignore\r\n// const env = 'testDebug';\r\nconst env = (window.config?.env as string) || 'local';\r\nconst determineConfig = (env: string) => {\r\n switch (env) {\r\n case 'local':\r\n return configLocal;\r\n case 'dev':\r\n return configDev;\r\n case 'test':\r\n return configTest;\r\n case 'testDebug':\r\n return configTestDebug;\r\n case 'stage':\r\n return configStage;\r\n case 'prod':\r\n return configProd;\r\n case 'dvps':\r\n return configDvps;\r\n case 'prod-ios':\r\n return configMobileProdIos;\r\n case 'test-ios':\r\n return configMobileDevIos;\r\n case 'prod-android':\r\n return configMobileProdAndroid;\r\n case 'test-android':\r\n return configMobileDevAndroid;\r\n case 'configCustomAutomation':\r\n return {\r\n AUTH_CONFIG_STR: {\r\n domain: window.domain.domain,\r\n clientID: window.clientID.clientID,\r\n redirectUri: window.redirectUri.redirectUri,\r\n audience: window.audience.audience,\r\n returnTo: window.returnTo.returnTo,\r\n },\r\n API_ROUTER_HOST: window.API_ROUTER_HOST.API_ROUTER_HOST,\r\n AUTH0_CLAIMS_NAMESPACE: window.AUTH0_CLAIMS_NAMESPACE.AUTH0_CLAIMS_NAMESPACE,\r\n SELF_HOST: window.SELF_HOST.SELF_HOST,\r\n USER_LOGOUT_TIMEOUT: window.USER_LOGOUT_TIMEOUT.USER_LOGOUT_TIMEOUT,\r\n USER_AGREEMENT_VERSION: window.USER_AGREEMENT_VERSION.USER_AGREEMENT_VERSION,\r\n WEEK_START: window.WEEK_START.WEEK_START,\r\n FILTER_HIDE: window.FILTER_HIDE.FILTER_HIDE,\r\n SHOW_PBI_REPORT_PAGES_PANE: window.SHOW_PBI_REPORT_PAGES_PANE.SHOW_PBI_REPORT_PAGES_PANE,\r\n SHOW_PBI_REPORT_FILTERS_PANE:\r\n window.SHOW_PBI_REPORT_FILTERS_PANE.SHOW_PBI_REPORT_FILTERS_PANE,\r\n REPORTS_REFRESH_TIMEOUT_SECONDS:\r\n window.REPORTS_REFRESH_TIMEOUT_SECONDS.REPORTS_REFRESH_TIMEOUT_SECONDS,\r\n MAX_LOAD_ATTEMPTS: window.MAX_LOAD_ATTEMPTS.MAX_LOAD_ATTEMPTS,\r\n SPLIT_WEEK_BY_END_OF_YEAR: window.SPLIT_WEEK_BY_END_OF_YEAR.SPLIT_WEEK_BY_END_OF_YEAR,\r\n ENV_NAME: 'CustomAutomation',\r\n PLATFORM: window.PLATFORM.PLATFORM,\r\n SHOW_VERSION_VERSION_LABEL: window.SHOW_VERSION_VERSION_LABEL.SHOW_VERSION_VERSION_LABEL,\r\n GENERATE_SOURCEMAP: window.GENERATE_SOURCEMAP.GENERATE_SOURCEMAP,\r\n LOGGER_INSTRUMENTAION_KEY: window.LOGGER_INSTRUMENTAION_KEY.LOGGER_INSTRUMENTAION_KEY,\r\n REFRESH_API_INTERVAL: window.REFRESH_API_INTERVAL.REFRESH_API_INTERVAL,\r\n UNSUBSCRIBE_END_POINT: window.UNSUBSCRIBE_END_POINT.UNSUBSCRIBE_END_POINT,\r\n SERVICE_TICKET_END_POINT: window.SERVICE_TICKET_END_POINT.SERVICE_TICKET_END_POINT,\r\n BLOB_URL: window.BLOB_URL.BLOB_URL,\r\n API_URL: window.API_URL.API_URL,\r\n RECAPTCHA_KEY: window.RECAPTCHA_KEY.RECAPTCHA_KEY,\r\n REAL_TIME_USER_LIST: window.REAL_TIME_USER_LIST.REAL_TIME_USER_LIST,\r\n MIXPANEL_KEY: 'e361850fceb820d591e0cc1d6b1732cf',\r\n };\r\n case 'auto':\r\n return configAuto;\r\n default:\r\n return configLocal;\r\n }\r\n};\r\nexport default determineConfig(env);\r\n","var _rect;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgOverviewLegendIcon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 18,\n height: 10,\n viewBox: \"0 0 18 10\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n width: 18,\n height: 10,\n rx: 2\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgOverviewLegendIcon);\nexport default __webpack_public_path__ + \"static/media/overviewLegendIcon.c3fc5afa.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgUtilization(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 16,\n height: 16,\n viewBox: \"0 0 16 16\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M13.8668 4.80005H8.53343L10.935 7.20165L8.51317 9.89232L5.7105 7.08965C5.50197 6.88112 5.1649 6.88112 4.95637 7.08965L2.2897 9.75632C2.08117 9.96485 2.08117 10.3019 2.2897 10.5104C2.49823 10.719 2.8353 10.719 3.04383 10.5104L5.33343 8.22085L8.15637 11.0438C8.2561 11.144 8.3921 11.2 8.53343 11.2C8.68597 11.2 8.82943 11.135 8.9297 11.0235L11.6897 7.95685L13.8668 10.1334V4.80005Z\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgUtilization);\nexport default __webpack_public_path__ + \"static/media/utilization.b740a4de.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgSpeedForMobileToggler(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 16,\n height: 13,\n viewBox: \"0 0 16 13\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M8 0C3.589 0 0 3.589 0 8C0 9.7405 0.557 11.4005 1.611 12.801L1.7605 13H14.239L14.389 12.801C15.443 11.4005 16 9.7405 16 8C16 3.589 12.411 0 8 0ZM8.5 1.5V3H7.5V1.5H8.5ZM1.5 8.5H3V7.5H1.5V8.5ZM4.11096 4.81797L3.05046 3.75747L3.75746 3.04997L4.81796 4.11047L4.11096 4.81797ZM7.1455 8.41096C7.373 8.91446 7.965 9.13796 8.4685 8.91096C8.972 8.68396 9.196 8.09146 8.9685 7.58846C8.7415 7.08496 6 3.44246 6 3.44246C6 3.44246 6.9185 7.90796 7.1455 8.41096ZM11.8891 4.81797L11.1821 4.11097L12.2426 3.04997L12.9496 3.75697L11.8891 4.81797ZM14.5 7.5H13V8.5H14.5V7.5Z\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgSpeedForMobileToggler);\nexport default __webpack_public_path__ + \"static/media/SpeedForMobileToggler.4bca44dc.svg\";\nexport { ForwardRef as ReactComponent };","import ToggleButton from '@material-ui/lab/ToggleButton';\r\nimport ToggleButtonGroup from '@material-ui/lab/ToggleButtonGroup';\r\nimport React from 'react';\r\nimport { ActiveOverviewChart } from 'store/storeTypes';\r\nimport styled from 'styled-components/macro';\r\nimport { ReactComponent as SpeedIcon } from 'assets/icons/speed.svg';\r\nimport { ReactComponent as UtilizationIcon } from 'assets/icons/utilization.svg';\r\nconst ToggleButtonGroupStyled = styled(ToggleButtonGroup)`\r\n width: 65px;\r\n height: 32px;\r\n border: 0.5px solid #7f8fa4;\r\n border-radius: 4px;\r\n padding: 3px;\r\n`;\r\n\r\nconst ToggleButtonStyled = styled(ToggleButton)`\r\n width: 100%;\r\n padding: 0;\r\n border: none;\r\n border-radius: 2px !important;\r\n svg {\r\n fill: #c5d0de;\r\n }\r\n &.Mui-selected {\r\n background-color: #2ea1f8;\r\n svg {\r\n fill: white;\r\n }\r\n }\r\n`;\r\n\r\nconst DesktopToggleChart = props => {\r\n const { activeOverviewChart, selectedSystemGroup, handleChartChange } = props;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default DesktopToggleChart;\r\n","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgProductivityForMobileToggler(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 12,\n height: 8,\n viewBox: \"0 0 12 8\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M11.8668 0.799957H6.53343L8.93503 3.20156L6.51317 5.89222L3.7105 3.08956C3.50197 2.88102 3.1649 2.88102 2.95637 3.08956L0.289701 5.75622C0.0811674 5.96476 0.0811674 6.30182 0.289701 6.51036C0.498234 6.71889 0.835301 6.71889 1.04383 6.51036L3.33343 4.22076L6.15637 7.04369C6.2561 7.14396 6.3921 7.19996 6.53343 7.19996C6.68597 7.19996 6.82943 7.13489 6.9297 7.02342L9.6897 3.95676L11.8668 6.13329V0.799957Z\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgProductivityForMobileToggler);\nexport default __webpack_public_path__ + \"static/media/ProductivityForMobileToggler.49d07a04.svg\";\nexport { ForwardRef as ReactComponent };","import { appearanceEffect } from 'globalStyle';\r\nimport React from 'react';\r\nimport styled from 'styled-components';\r\nimport { ReactComponent as SpeedIcon } from '../../../assets/icons/SpeedForMobileToggler.svg';\r\nimport { ReactComponent as ProductivityIcon } from '../../../assets/icons/ProductivityForMobileToggler.svg';\r\nimport { ActiveOverviewChart } from 'store/storeTypes';\r\n\r\nconst TogglerChartsWrapper = styled.div`\r\n box-sizing: border-box;\r\n display: flex;\r\n justify-content: space-between;\r\n padding: 2px;\r\n background: #ffffff;\r\n border: 1px solid #c5d0de;\r\n border-radius: 4px;\r\n width: 74px;\r\n height: 31px;\r\n animation-name: ${appearanceEffect};\r\n animation-duration: 500ms;\r\n`;\r\nconst Button = styled.div<{ isActive: boolean }>`\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n height: 100%;\r\n width: 49%;\r\n border-radius: 2px;\r\n background-color: ${props => (props.isActive ? '#2ea1f8' : '#FFFFFF')};\r\n`;\r\nconst MobileToggleChart = props => {\r\n const { activeOverviewChart, selectedSystemGroup, setActiveOverviewChart } = props;\r\n const activeChart: ActiveOverviewChart = activeOverviewChart[selectedSystemGroup];\r\n\r\n const onClickHandler = (chart: ActiveOverviewChart) => {\r\n if (chart === activeChart) {\r\n return;\r\n }\r\n setActiveOverviewChart({ [selectedSystemGroup]: chart });\r\n };\r\n return (\r\n \r\n onClickHandler(ActiveOverviewChart.Speed)}\r\n isActive={activeChart === ActiveOverviewChart.Speed}>\r\n \r\n \r\n onClickHandler(ActiveOverviewChart.Utilization)}\r\n isActive={activeChart === ActiveOverviewChart.Utilization}>\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default MobileToggleChart;\r\n","import { connect } from 'react-redux';\r\nimport { bindActionCreators, Dispatch } from 'redux';\r\nimport { setActiveOverviewChart } from 'actions/uiActions';\r\nimport { Store } from 'store/storeTypes';\r\nimport ToggleChart from './ToggleChart';\r\ntype OwnProps = {\r\n isMobile?: boolean;\r\n};\r\nconst mapStateToProps = (state: Store) => {\r\n return {\r\n activeOverviewChart: state.ui.overview.activeChart,\r\n selectedSystemGroup: state.ui.selectedSystemGroup,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch: Dispatch) =>\r\n bindActionCreators({ setActiveOverviewChart }, dispatch);\r\n\r\nexport type ToggleChartProps = ReturnType &\r\n ReturnType &\r\n OwnProps;\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(ToggleChart);\r\n","import * as React from 'react';\r\nimport { ActiveOverviewChart } from 'store/storeTypes';\r\nimport styled from 'styled-components/macro';\r\nimport ToggleButton from '@material-ui/lab/ToggleButton';\r\nimport ToggleButtonGroup from '@material-ui/lab/ToggleButtonGroup';\r\nimport { ToggleChartProps } from './ToggleChartContainer';\r\n\r\nimport DesktopToggleChart from './DesktopToggleChart';\r\nimport MobileToggleChart from './MobileToggleChart';\r\n\r\nexport default function ToggleChart(props: ToggleChartProps) {\r\n const { setActiveOverviewChart, activeOverviewChart, selectedSystemGroup, isMobile } = props;\r\n const handleChartChange = (\r\n event: React.MouseEvent,\r\n newChart: ActiveOverviewChart\r\n ) => {\r\n if (newChart !== activeOverviewChart[selectedSystemGroup] && newChart !== null) {\r\n const payload = {};\r\n payload[selectedSystemGroup] = newChart;\r\n setActiveOverviewChart(payload);\r\n }\r\n };\r\n\r\n if (!isMobile) {\r\n return (\r\n \r\n );\r\n } else {\r\n return (\r\n \r\n );\r\n }\r\n}\r\n","import React, { memo } from 'react';\r\nimport styled from 'styled-components';\r\nimport { IOverviewProps } from './OverviewContainer';\r\nimport TopCards, { text } from './TopCards';\r\nimport AchievementCardMobile from './AcievementCardMobile';\r\nimport { determineUnitToShow } from 'helpers/conversions';\r\nimport { useTranslation } from 'react-i18next';\r\nimport GoalsCard from './GoalsCard';\r\nimport { getLegendText } from 'helpers/overviewUtils';\r\nimport { ReactComponent as LegendItemIcon } from '../../assets/icons/overviewLegendIcon.svg';\r\nimport { ActiveOverviewChart, UserSystemGroup } from 'store/storeTypes';\r\nimport ToggleChart from './Charts/ToggleChartContainer';\r\nimport ProductionChart from './Charts/ProductionChart';\r\nimport { Spinner, SpinnerContainer } from './Styles';\r\nimport SpeedChart from './Charts/SpeedChart';\r\nimport { getUnitsForTooltip } from 'helpers/chartUtils';\r\nimport AvailabilityChart from './Charts/AvailabilityChart';\r\nexport const MobileReportWrapper = styled.div<{ reportHeight: string }>`\r\n display: flex;\r\n flex-direction: column;\r\n padding: 4%;\r\n width: 100%;\r\n flex: 1 1 auto;\r\n overflow-y: auto;\r\n height: ${props => props.reportHeight};\r\n\r\n -ms-overflow-style: none; /* for Internet Explorer, Edge */\r\n scrollbar-width: none; /* for Firefox */\r\n &::-webkit-scrollbar {\r\n display: none; /* for Chrome, Safari, and Opera */\r\n }\r\n`;\r\nexport const EmptyBlock = styled.div`\r\n width: 100%;\r\n min-height: 60px;\r\n height: 60px;\r\n`;\r\nconst ProductionOverviewChartsCard = styled.div`\r\n box-sizing: border-box;\r\n display: flex;\r\n flex-direction: column;\r\n width: 100%;\r\n min-height: 965px;\r\n\r\n background: #ffffff;\r\n border: 1px solid #c5d0de;\r\n box-shadow: 0px 0px 3px rgba(0, 0, 0, 0.03);\r\n border-radius: 4px;\r\n\r\n margin-bottom: 10px;\r\n\r\n font-family: Rubik;\r\n font-style: normal;\r\n font-weight: normal;\r\n\r\n color: #354052;\r\n`;\r\n\r\nconst BottomBorder = styled.div`\r\n min-height: 10px;\r\n width: 100%;\r\n`;\r\nconst ChartsCardHeader = styled.div`\r\n box-sizing: border-box;\r\n height: 40px;\r\n font-size: 14px;\r\n border-bottom: 1px solid #c5d0de;\r\n padding: 10px 15px;\r\n display: flex;\r\n align-items: center;\r\n`;\r\nconst ChartsCardLegend = styled.div`\r\n box-sizing: border-box;\r\n height: 54px;\r\n padding-left: 15px;\r\n padding-top: 20px;\r\n padding-bottom: 10px;\r\n display: flex;\r\n align-items: center;\r\n\r\n font-size: 14px;\r\n letter-spacing: 0.5625px;\r\n\r\n color: #7f8fa4;\r\n`;\r\nconst ChartsCardLegendItem = styled.div`\r\n display: flex;\r\n align-items: center;\r\n`;\r\nconst IconWrapper = styled.div`\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n`;\r\nconst LegendItemDescription = styled.div`\r\n margin-left: 5px;\r\n`;\r\nconst ChartHeader = styled.div`\r\n display: flex;\r\n align-items: center;\r\n box-sizing: border-box;\r\n font-size: 14px;\r\n line-height: 16px;\r\n padding-left: 15px;\r\n margin: 10px;\r\n`;\r\nconst ChartWrapper = styled.div<{ height: string }>`\r\n box-sizing: border-box;\r\n height: ${props => props.height};\r\n width: 100%;\r\n padding: 0 0;\r\n padding-right: 15px;\r\n margin-bottom: 47px;\r\n`;\r\nconst OverviewMobile = memo((props: IOverviewProps) => {\r\n const {\r\n pbiReportHeight,\r\n timeFrame: timeframe,\r\n selectedSystemGroup,\r\n userSettings,\r\n productionChart,\r\n speedChart,\r\n availabilityChart,\r\n activeChart,\r\n utilizationChart,\r\n weekRecord,\r\n } = props;\r\n const { t } = useTranslation();\r\n const units = determineUnitToShow(selectedSystemGroup, userSettings, t);\r\n const { total: leftLegendItem, totalAvg: rightLegendItem } = getLegendText(timeframe);\r\n const selectedSystemGroupText = text[selectedSystemGroup]!;\r\n return (\r\n \r\n \r\n\r\n \r\n Production Overview\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n {leftLegendItem}\r\n \r\n \r\n \r\n \r\n {' '}\r\n \r\n \r\n {rightLegendItem}\r\n \r\n \r\n \r\n\r\n \r\n {selectedSystemGroupText.impression.chart[timeframe]}\r\n {selectedSystemGroup === UserSystemGroup.DTF && ` (${units})`}\r\n \r\n \r\n {productionChart ? (\r\n \r\n ) : (\r\n {Spinner()}\r\n )}\r\n \r\n\r\n \r\n {}\r\n \r\n {activeChart === ActiveOverviewChart.Utilization\r\n ? selectedSystemGroupText.utilization?.chart[timeframe]\r\n : selectedSystemGroupText.productionRate.chart[timeframe]}\r\n {selectedSystemGroup === UserSystemGroup.DTF &&\r\n activeChart === ActiveOverviewChart.Speed &&\r\n ` (${units}/h)`}\r\n \r\n \r\n \r\n {speedChart ? (\r\n \r\n ) : (\r\n {Spinner()}\r\n )}\r\n \r\n\r\n {selectedSystemGroupText.availability.chart[timeframe]}\r\n \r\n {availabilityChart ? (\r\n \r\n ) : (\r\n {Spinner()}\r\n )}\r\n \r\n \r\n \r\n \r\n );\r\n});\r\n\r\nexport default OverviewMobile;\r\n","import { ApplicationInsights, IEventTelemetry } from '@microsoft/applicationinsights-web';\r\nimport config from 'config/config';\r\nconst logger = new ApplicationInsights({\r\n config: {\r\n instrumentationKey: config.LOGGER_INSTRUMENTAION_KEY,\r\n },\r\n});\r\nlogger.loadAppInsights();\r\n\r\nexport const sendMetric = (\r\n name: string,\r\n startTime: number,\r\n properties?: { [key: string]: string | number | Record }\r\n) => {\r\n logger.trackMetric({\r\n name,\r\n average: new Date().getTime() - startTime,\r\n properties,\r\n });\r\n};\r\n\r\nexport default logger;\r\n","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgCloseIconDownloadInkPerJob(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 20,\n height: 20,\n viewBox: \"0 0 20 20\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M17.2188 2.78125C16.8438 2.40625 16.2812 2.40625 15.9062 2.78125L10 8.6875L4.09375 2.78125C3.71875 2.40625 3.15625 2.40625 2.78125 2.78125C2.40625 3.15625 2.40625 3.71875 2.78125 4.09375L8.6875 10L2.78125 15.9062C2.40625 16.2812 2.40625 16.8438 2.78125 17.2188C2.96875 17.4063 3.15625 17.5 3.4375 17.5C3.71875 17.5 3.90625 17.4063 4.09375 17.2188L10 11.3125L15.9062 17.2188C16.0937 17.4063 16.375 17.5 16.5625 17.5C16.75 17.5 17.0313 17.4063 17.2188 17.2188C17.5938 16.8438 17.5938 16.2812 17.2188 15.9062L11.3125 10L17.2188 4.09375C17.5938 3.71875 17.5938 3.15625 17.2188 2.78125Z\",\n fill: \"#354052\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgCloseIconDownloadInkPerJob);\nexport default __webpack_public_path__ + \"static/media/CloseIconDownloadInkPerJob.5e0f54da.svg\";\nexport { ForwardRef as ReactComponent };","import React from 'react';\r\nimport styled from 'styled-components';\r\nimport { ReactComponent as FunnelIcon } from '../../assets/icons/FunnelIcon.svg';\r\nimport { ReactComponent as FunnelDot } from '../../assets/icons/FilterDot.svg';\r\nconst FunnelContainer = styled.div`\r\n position: relative;\r\n display: flex;\r\n height: 100%;\r\n width: 100%;\r\n justify-content: center;\r\n align-items: center;\r\n`;\r\nconst FunnelDotContainer = styled.div`\r\n position: absolute;\r\n top: 6px;\r\n left: 25px;\r\n`;\r\ntype FunnelProps = {\r\n handleClick: (event: any) => void;\r\n automationId: string;\r\n funnelColor: string;\r\n filterNotEmpty: boolean;\r\n};\r\nconst Funnel = (props: FunnelProps) => {\r\n const { handleClick, automationId, funnelColor, filterNotEmpty } = props;\r\n return (\r\n \r\n \r\n {filterNotEmpty && (\r\n \r\n \r\n \r\n )}\r\n \r\n );\r\n};\r\nexport default Funnel;\r\n","import React from 'react';\r\nimport { ResponsiveContainer } from 'recharts';\r\nimport styled from 'styled-components';\r\nimport { StyledWrapperLoader } from 'components/SystemAnalysis/SystemsAnalysisStyles';\r\nimport config from 'config/config';\r\nimport { appearanceEffect, globalColors } from 'globalStyle';\r\nimport newSpinner from '../../assets/icons/newSpinner.gif';\r\nexport const AchievementsAndGoalsText = styled.div`\r\n font-size: 14px;\r\n line-height: 17px;\r\n text-align: left;\r\n letter-spacing: 0.5625px;\r\n color: #354052;\r\n margin-bottom: 8px;\r\n\r\n @media screen and (min-width: 1920px) {\r\n font-size: 17px;\r\n line-height: 17px;\r\n }\r\n`;\r\nexport const DateGoal = styled.div<{ done: boolean }>`\r\n width: 100%;\r\n height: 8px;\r\n border-radius: 4px;\r\n background-color: ${props => (props.done ? globalColors.regular.background.blue : '#E6E9ED')};\r\n`;\r\nexport const DateGoalWrapper = styled.div<{ width?: number }>`\r\n text-align: center;\r\n margin: 5px 3%;\r\n width: ${props => props.width || 8}%;\r\n`;\r\nexport const HrHorizontal = styled.hr<{ width?: number }>`\r\n width: ${props => props.width || 100}%;\r\n height: 1px;\r\n border: none;\r\n margin: 4px 0px;\r\n background-color: #c5d0de;\r\n`;\r\nexport const HrVertical = styled.hr<{ height?: number }>`\r\n height: ${props => props.height || 100}%;\r\n width: 1px;\r\n border: none;\r\n margin: 14px 8px;\r\n background-color: #7f8fa4;\r\n`;\r\nexport const CardDivAcievmentCard = styled.div<{\r\n bigger?: boolean;\r\n height?: number;\r\n align?: boolean;\r\n isMobile?: boolean;\r\n selectedSystemGroup?: string;\r\n}>`\r\n grid-area: 'systemPageCard';\r\n height: 370px;\r\n background: #ffffff;\r\n border: 1px solid #c5d0de;\r\n box-sizing: border-box;\r\n box-shadow: 0px 0px 3px rgba(0, 0, 0, 0.03);\r\n border-radius: 4px;\r\n padding: 2px 20px;\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: ${props => (props.align === undefined ? 'center' : '')};\r\n margin-bottom: ${props => (props.isMobile === true ? '15px' : '')};\r\n`;\r\n\r\nexport const CardDiv = styled.div<{\r\n bigger?: boolean;\r\n height?: number;\r\n align?: boolean;\r\n isMobile?: boolean;\r\n isHidden?: boolean;\r\n}>`\r\n background: ${props => (props.isHidden ? 'transparent' : '#ffffff')};\r\n border: ${props => (props.isHidden ? 'none' : '1px solid #c5d0de')};\r\n box-sizing: border-box;\r\n box-shadow: 0px 0px 3px rgba(0, 0, 0, 0.03);\r\n border-radius: 4px;\r\n padding: 12px 20px 18px 12px;\r\n display: flex;\r\n justify-content: space-between;\r\n width: 100%;\r\n height: 110px;\r\n align-items: ${props => (props.align === undefined ? 'center' : '')};\r\n margin-bottom: ${props => (props.isMobile === true ? '10px' : '')};\r\n`;\r\nexport const ValueDiv = styled.div<{ isMobile?: boolean }>`\r\n font-weight: 500;\r\n font-size: ${props => (props.isMobile === true ? '20px' : '30px')};\r\n line-height: ${props => (props.isMobile === true ? '24px' : '36px')};\r\n @media screen and (min-width: 1920px) {\r\n font-size: 33px;\r\n line-height: 33px;\r\n }\r\n`;\r\nexport const UnitDiv = styled.div<{ isMobile?: boolean }>`\r\n font-size: ${props => (props.isMobile === true ? '16px' : '18px')};\r\n line-height: 21.33px;\r\n font-weight: 400;\r\n margin-left: 5px;\r\n color: #354052;\r\n @media screen and (min-width: 1920px) {\r\n font-size: 21px;\r\n }\r\n`;\r\nexport const DescriptionDiv = styled.div`\r\n font-size: 14px;\r\n line-height: 17px;\r\n letter-spacing: 0.5625px;\r\n color: #7f8fa4;\r\n margin-top: 10px 0px 8px 0px;\r\n @media screen and (min-width: 1920px) {\r\n font-size: 17px;\r\n line-height: 17px;\r\n }\r\n`;\r\nexport const ChartsHeader = styled.div`\r\n height: 20px;\r\n font-size: 18px;\r\n color: #354052;\r\n line-height: 21.33px;\r\n font-weight: 500;\r\n`;\r\nexport const ChartHeader = styled.div`\r\n font-size: 14px;\r\n height: 15px;\r\n color: #354052;\r\n font-weight: 400;\r\n margin-bottom: 5px;\r\n`;\r\nexport const ChartHeaderAvailability = styled.div`\r\n font-size: 14px;\r\n color: #354052;\r\n font-weight: 400;\r\n margin-bottom: 20px;\r\n animation-name: ${appearanceEffect};\r\n animation-duration: 500ms;\r\n`;\r\nexport const AchievementsImage = styled.div`\r\n background: url(${require('../../assets/icons/AchievementsImage.svg')});\r\n background-size: contain;\r\n background-repeat: no-repeat;\r\n background-position: center;\r\n width: 100%;\r\n height: 100%;\r\n`;\r\nexport const VisibleOverflowResponsiveContainer = styled(ResponsiveContainer)`\r\n .recharts-surface {\r\n overflow: visible;\r\n }\r\n`;\r\n// export const Spinner = (size = 50) => (\r\n// \r\n// \r\n// \r\n// );\r\nexport const Spinner = (size = 50) => {\r\n return (\r\n \r\n \"loader\"\r\n \r\n );\r\n};\r\nexport const SpinnerContainer = styled.div`\r\n height: 100%;\r\n width: 100%;\r\n display: flex;\r\n flex-direction: column;\r\n justify-content: center;\r\n align-items: center;\r\n caret-color: transparent;\r\n\r\n font-weight: 500;\r\n font-size: 32px;\r\n line-height: 48px;\r\n color: #354052;\r\n`;\r\nexport const InnerCardContent = styled.div`\r\n box-sizing: border-box;\r\n display: flex;\r\n justify-content: space-between;\r\n width: 100%;\r\n height: 100%;\r\n padding: 4%;\r\n border-radius: inherit;\r\n\r\n animation-name: ${appearanceEffect};\r\n animation-duration: 500ms;\r\n @media (min-width: 2250px) {\r\n padding: 1%;\r\n }\r\n`;\r\n","import { toggleMachineFilterMenu } from 'actions/userUiActions';\r\nimport { createSelector } from 'reselect';\r\nimport { Store } from 'store/storeTypes';\r\nimport { createReducer } from 'typesafe-actions';\r\n\r\nexport default createReducer({ isOpen: false }).handleAction(\r\n toggleMachineFilterMenu,\r\n (state, action) => {\r\n return { ...state, isOpen: !state.isOpen };\r\n }\r\n);\r\nconst uiSelector = (state: Store) => {\r\n return state['ui'];\r\n};\r\nexport const isMachineFilterOpenSelector = createSelector([uiSelector], ui => {\r\n return ui['machineFilter'].isOpen;\r\n});\r\n","export enum Permission {\r\n Admin = 1,\r\n CreateReports = 2,\r\n SetGoals = 4,\r\n ManageApi = 5,\r\n Certificate = 6,\r\n ReadOnly = 7,\r\n}\r\n\r\nexport type Permissions = Permission[];\r\n\r\nexport enum PermissionAuth0 {\r\n Admin = 'admin',\r\n GoalsSetter = 'goals-setter',\r\n Scheduler = 'email-scheduler',\r\n ManageApi = 'api-user',\r\n Certificate = 'certificate-enabled',\r\n ReadOnly = 'read-only',\r\n}\r\n","import mixpanel from 'mixpanel-browser';\r\nimport env from '../config/config';\r\nimport { ApplicationInsights } from '@microsoft/applicationinsights-web';\r\nimport config from 'config/config';\r\nimport { authService } from 'services/AuthProvider';\r\nimport { AuthServiceImpl } from 'services/auth-service';\r\nexport const appInsightLogger = new ApplicationInsights({\r\n config: {\r\n instrumentationKey: config.LOGGER_INSTRUMENTAION_KEY,\r\n },\r\n});\r\nappInsightLogger.loadAppInsights();\r\n\r\nconst mixPannelKey = env.MIXPANEL_KEY;\r\n\r\nmixpanel.init(mixPannelKey);\r\n\r\nconst actions = {\r\n login: user => {\r\n if (mixPannelKey) {\r\n mixpanel.identify(user.email);\r\n //*register action is binding income properties to every action\r\n mixpanel.register({\r\n isSuperUser: checkIsSuperUser(authService),\r\n });\r\n mixpanel.track('Login');\r\n mixpanel.track('StartSession', { reason: 'user entered in app' });\r\n //*sets registration date - works only once - first enter\r\n mixpanel.people.set_once({\r\n $email: user.email,\r\n 'Sign up date': new Date().toISOString(),\r\n });\r\n //*all of parameters should be in func above (set_once), but there was issue that some of them comes as undefined from time to time form server side. that's why they were moved to method - set()\r\n mixpanel.people.set({\r\n USER_ID: user.email,\r\n importedTennantId: user.importedTennantId,\r\n tennantName: user.tennantName,\r\n office: user.office,\r\n accountType: user.accountType,\r\n userSystemGroup: user.userSystemGroup.join(' / '),\r\n isSuperUser: checkIsSuperUser(authService),\r\n });\r\n }\r\n\r\n appInsightLogger.trackEvent(\r\n { name: 'Login' },\r\n { isSuperUser: checkIsSuperUser(authService), email: getUserEmail(authService) }\r\n );\r\n appInsightLogger.trackEvent(\r\n { name: 'StartSession' },\r\n {\r\n reason: 'user entered in app',\r\n isSuperUser: checkIsSuperUser(authService),\r\n email: getUserEmail(authService),\r\n }\r\n );\r\n // This function creates anonymous visitor IDs in Pendo unless you change the visitor id field to use your app's values\r\n // This function uses the placeholder 'ACCOUNT-UNIQUE-ID' value for account ID unless you change the account id field to use your app's values\r\n // Call this function in your authentication promise handler or callback when your visitor and account id values are available\r\n // Please use Strings, Numbers, or Bools for value types.\r\n //@ts-ignore\r\n window.pendo.initialize({\r\n visitor: {\r\n id: user.email, // Required if user is logged in, default creates anonymous ID\r\n email: user.email, // Recommended if using Pendo Feedback, or NPS Email\r\n // full_name: // Recommended if using Pendo Feedback\r\n // role: // Optional\r\n\r\n // You can add any additional visitor level key-values here,\r\n // as long as it's not one of the above reserved names.\r\n isDtgUser: user.userSystemGroup.includes('DTG'),\r\n isDtfUser: user.userSystemGroup.includes('DTF'),\r\n isApolloUser: user.userSystemGroup.includes('Apollo'),\r\n userSystemGroup: user.userSystemGroup.join(' / '),\r\n },\r\n\r\n account: {\r\n id: user.tennantName, // Required if using Pendo Feedback, default uses the value 'ACCOUNT-UNIQUE-ID'\r\n // name: // Optional\r\n // is_paying: // Recommended if using Pendo Feedback\r\n // monthly_value:// Recommended if using Pendo Feedback\r\n // planLevel: // Optional\r\n // planPrice: // Optional\r\n // creationDate: // Optional\r\n\r\n // You can add any additional account level key-values here,\r\n // as long as it's not one of the above reserved names.\r\n },\r\n });\r\n },\r\n startSession: (name, props?) => {\r\n if (mixPannelKey) {\r\n mixpanel.track(name, {\r\n action: 'Start Session',\r\n reason: props.reason,\r\n });\r\n }\r\n appInsightLogger.trackEvent(\r\n { name },\r\n {\r\n action: 'Start Session',\r\n reason: props.reason,\r\n isSuperUser: checkIsSuperUser(authService),\r\n email: getUserEmail(authService),\r\n }\r\n );\r\n },\r\n sendErrorLog: (name, error, errorInfo) => {\r\n if (mixPannelKey) {\r\n mixpanel.track(name, {\r\n action: 'Error',\r\n error: error,\r\n errorInfo: errorInfo,\r\n });\r\n }\r\n appInsightLogger.trackEvent(\r\n { name },\r\n {\r\n action: 'Error',\r\n error: error,\r\n errorInfo: errorInfo,\r\n }\r\n );\r\n },\r\n finishSession: (name, props?) => {\r\n if (mixPannelKey) {\r\n mixpanel.track(name, {\r\n action: 'End Session',\r\n // reason: props.reason,\r\n });\r\n }\r\n appInsightLogger.trackEvent(\r\n { name },\r\n {\r\n action: 'End Session',\r\n isSuperUser: checkIsSuperUser(authService),\r\n email: getUserEmail(authService),\r\n }\r\n );\r\n //@ts-ignore\r\n },\r\n changeReportPage: (name, props?) => {\r\n if (mixPannelKey) {\r\n mixpanel.track(name, {\r\n action: 'Change',\r\n prevReport: props.prevReport,\r\n nextReport: props.nextReport,\r\n });\r\n }\r\n appInsightLogger.trackEvent(\r\n { name },\r\n {\r\n action: 'Change',\r\n prevReport: props.prevReport,\r\n nextReport: props.nextReport,\r\n isSuperUser: checkIsSuperUser(authService),\r\n email: getUserEmail(authService),\r\n }\r\n );\r\n },\r\n changeTimeFrameFilter: (name, props?) => {\r\n if (mixPannelKey) {\r\n mixpanel.track(name, {\r\n action: 'Change',\r\n nextTimeFilter: props.nextTimeFilter,\r\n startDate: props.startDate,\r\n endDate: props.endDate,\r\n customStartHour: props.customStartHour,\r\n customEndHour: props.customEndHour,\r\n });\r\n }\r\n appInsightLogger.trackEvent(\r\n { name },\r\n {\r\n action: 'Change',\r\n nextTimeFilter: props.nextTimeFilter,\r\n startDate: props.startDate,\r\n endDate: props.endDate,\r\n customStartHour: props.customStartHour,\r\n customEndHour: props.customEndHour,\r\n isSuperUser: checkIsSuperUser(authService),\r\n email: getUserEmail(authService),\r\n }\r\n );\r\n },\r\n changeSystemGroupFilter: (name, props) => {\r\n if (mixPannelKey) {\r\n mixpanel.track(name, {\r\n action: 'Change',\r\n prevSystemGroup: props.systemGroupFrom,\r\n nextSystemGroup: props.systemGroupTo,\r\n currentPage: props.currentActiveReport,\r\n });\r\n }\r\n appInsightLogger.trackEvent(\r\n { name },\r\n {\r\n action: 'Change',\r\n prevSystemGroup: props.systemGroupFrom,\r\n nextSystemGroup: props.systemGroupTo,\r\n currentPage: props.currentActiveReport,\r\n isSuperUser: checkIsSuperUser(authService),\r\n email: getUserEmail(authService),\r\n }\r\n );\r\n },\r\n changePrinterNickName: (name, props) => {\r\n if (mixPannelKey) {\r\n mixpanel.track(name, {\r\n action: 'Change',\r\n serialNubmer: props.serialNumber,\r\n prevNickName: props.prevNickName,\r\n newNickName: props.newNickName,\r\n });\r\n }\r\n appInsightLogger.trackEvent(\r\n { name },\r\n {\r\n action: 'Change',\r\n serialNubmer: props.serialNumber,\r\n prevNickName: props.prevNickName,\r\n newNickName: props.newNickName,\r\n isSuperUser: checkIsSuperUser(authService),\r\n email: getUserEmail(authService),\r\n }\r\n );\r\n },\r\n dowloadErrorAndMaintenanceReport: selectedSystem => {\r\n if (mixPannelKey) {\r\n mixpanel.track('DowloadErrorAndMaintenanceReport', {\r\n action: 'DownloadFile',\r\n systemName: selectedSystem,\r\n });\r\n }\r\n appInsightLogger.trackEvent(\r\n { name: 'DowloadErrorAndMaintenanceReport' },\r\n {\r\n action: 'DownloadFile',\r\n systemName: selectedSystem,\r\n isSuperUser: checkIsSuperUser(authService),\r\n email: getUserEmail(authService),\r\n }\r\n );\r\n },\r\n //*timeLine day view toggle view 24 hour / 1 hour\r\n toggleTimelineDayView: (prevView: string, nextView: string) => {\r\n if (mixPannelKey) {\r\n mixpanel.track('toggleTimelineDayView', {\r\n prevView,\r\n nextView,\r\n });\r\n }\r\n appInsightLogger.trackEvent(\r\n { name: 'toggleTimelineDayView' },\r\n {\r\n prevView,\r\n nextView,\r\n isSuperUser: checkIsSuperUser(authService),\r\n email: getUserEmail(authService),\r\n }\r\n );\r\n },\r\n //*timeline hour view hour seletction\r\n selectHourTimelineHourView: (prevHour, nextHour) => {\r\n if (mixPannelKey) {\r\n mixpanel.track('selectHourTimelineHourView', {\r\n prevHour,\r\n nextHour,\r\n });\r\n }\r\n appInsightLogger.trackEvent(\r\n { name: 'selectHourTimelineHourView' },\r\n {\r\n prevHour,\r\n nextHour,\r\n isSuperUser: checkIsSuperUser(authService),\r\n email: getUserEmail(authService),\r\n }\r\n );\r\n },\r\n toggleDatePickerCalendar: () => {\r\n if (mixPannelKey) {\r\n mixpanel.track('Open/Close Date Picker Calendar', {\r\n action: 'Open/Close Date Picker Calendar',\r\n });\r\n }\r\n appInsightLogger.trackEvent(\r\n { name: 'Open/Close Date Picker Calendar' },\r\n {\r\n action: 'Open/Close Date Picker Calendar',\r\n isSuperUser: checkIsSuperUser(authService),\r\n email: getUserEmail(authService),\r\n }\r\n );\r\n },\r\n incrementDateInDatePicker: () => {\r\n if (mixPannelKey) {\r\n mixpanel.track('Increment date in Date Picker Calendar', {\r\n action: 'Increment date',\r\n });\r\n }\r\n appInsightLogger.trackEvent(\r\n { name: 'ncrement date in Date Picker Calendar' },\r\n {\r\n action: 'Increment date',\r\n isSuperUser: checkIsSuperUser(authService),\r\n email: getUserEmail(authService),\r\n }\r\n );\r\n },\r\n decrementDateInDatePicker: () => {\r\n if (mixPannelKey) {\r\n mixpanel.track('Decrement date in Date Picker Calendar', {\r\n action: 'Decrement date',\r\n });\r\n }\r\n appInsightLogger.trackEvent(\r\n { name: 'Decrement date in Date Picker Calendar' },\r\n {\r\n action: 'Decrement date',\r\n isSuperUser: checkIsSuperUser(authService),\r\n email: getUserEmail(authService),\r\n }\r\n );\r\n },\r\n toggleMachineFilterMenu: () => {\r\n if (mixPannelKey) {\r\n mixpanel.track('Open/Close MachineFilterMenu', {\r\n action: 'Open/Close Machine Filter Menu',\r\n });\r\n }\r\n appInsightLogger.trackEvent(\r\n { name: 'Open/Close MachineFilterMenu' },\r\n {\r\n action: 'Open/Close Machine Filter Menu',\r\n isSuperUser: checkIsSuperUser(authService),\r\n email: getUserEmail(authService),\r\n }\r\n );\r\n },\r\n JobAnalysisFilter: (props: JobAnalysisFilterArgs) => {\r\n const { systemGroup, actionType } = props;\r\n\r\n if (mixPannelKey) {\r\n mixpanel.track('Job Analysis Filter', {\r\n systemGroup,\r\n actionType,\r\n });\r\n }\r\n appInsightLogger.trackEvent(\r\n { name: 'Job Analysis Filter' },\r\n {\r\n systemGroup,\r\n actionType,\r\n isSuperUser: checkIsSuperUser(authService),\r\n email: getUserEmail(authService),\r\n }\r\n );\r\n },\r\n //*profiles actions\r\n people: {\r\n set: props => {\r\n if (mixPannelKey) mixpanel.people.set(props);\r\n },\r\n },\r\n clickInkConsupmtionPerJob: timeframe => {\r\n if (mixPannelKey) {\r\n mixpanel.track('Click Ink Consumption Per Job', {\r\n action: 'User clicked on button',\r\n timeframe,\r\n });\r\n }\r\n appInsightLogger.trackEvent(\r\n { name: 'Click Ink Consumption Per Job' },\r\n {\r\n action: 'User clicked on button',\r\n timeframe,\r\n isSuperUser: checkIsSuperUser(authService),\r\n email: getUserEmail(authService),\r\n }\r\n );\r\n },\r\n changeDateRangeInkConsuptionPerJob: ({\r\n timeframe,\r\n startDate,\r\n endDate,\r\n newStartDate,\r\n newEndDate,\r\n }) => {\r\n if (mixPannelKey) {\r\n mixpanel.track('Change Date Range Ink Consumption Per Job', {\r\n timeframe,\r\n startDate: startDate.toISOString(),\r\n endDate: endDate.toISOString(),\r\n newStartDate: newStartDate.toISOString(),\r\n newEndDate: newEndDate.toISOString(),\r\n });\r\n }\r\n appInsightLogger.trackEvent(\r\n { name: 'Change Date Range Ink Consumption Per Job' },\r\n {\r\n timeframe,\r\n startDate: startDate.toISOString(),\r\n endDate: endDate.toISOString(),\r\n newStartDate: newStartDate.toISOString(),\r\n newEndDate: newEndDate.toISOString(),\r\n isSuperUser: checkIsSuperUser(authService),\r\n email: getUserEmail(authService),\r\n }\r\n );\r\n },\r\n downloadSystemAnalysisReport: ({ result }) => {\r\n if (mixPannelKey) {\r\n mixpanel.track('Download System Analysis Report', {\r\n action: 'DownloadFile',\r\n\r\n result,\r\n });\r\n }\r\n appInsightLogger.trackEvent(\r\n { name: 'Download System Analysis Report' },\r\n {\r\n action: 'DownloadFile',\r\n\r\n result,\r\n isSuperUser: checkIsSuperUser(authService),\r\n email: getUserEmail(authService),\r\n }\r\n );\r\n },\r\n downloadInkConsumptionPerJobReport: ({ result }) => {\r\n if (mixPannelKey) {\r\n mixpanel.track('Download Ink Consupmtion Per Job Report', {\r\n action: 'DownloadFile',\r\n\r\n result,\r\n });\r\n }\r\n appInsightLogger.trackEvent(\r\n { name: 'Download Ink Consupmtion Per Job Report' },\r\n {\r\n action: 'DownloadFile',\r\n result,\r\n isSuperUser: checkIsSuperUser(authService),\r\n email: getUserEmail(authService),\r\n }\r\n );\r\n },\r\n jobAnalysisInkConsumptionTrendGraphSelectColor: ({ selectedColors, color }) => {\r\n if (mixPannelKey) {\r\n mixpanel.track('Job Analysis Ink Consumption Trend Color Selection', {\r\n action: 'SelectColor',\r\n selectedColor: color,\r\n });\r\n }\r\n appInsightLogger.trackEvent(\r\n { name: 'Job Analysis Ink Consumption Trend Color Selection' },\r\n {\r\n action: 'SelectColor',\r\n selectedColor: color,\r\n isSuperUser: checkIsSuperUser(authService),\r\n email: getUserEmail(authService),\r\n }\r\n );\r\n },\r\n\r\n customClick: ({ selectedSystemGroup }) => {\r\n if (mixPannelKey) {\r\n mixpanel.track('CustomClick', {\r\n action: 'Click',\r\n selectedSystemGroup,\r\n isSuperUser: checkIsSuperUser(authService),\r\n email: getUserEmail(authService),\r\n });\r\n }\r\n appInsightLogger.trackEvent(\r\n { name: 'CustomClick' },\r\n {\r\n action: 'Click',\r\n selectedSystemGroup,\r\n isSuperUser: checkIsSuperUser(authService),\r\n email: getUserEmail(authService),\r\n }\r\n );\r\n },\r\n\r\n submitCustomClick: ({ startDate, endDate, customStartHour = 0, customEndHour = 0 }) => {\r\n if (mixPannelKey) {\r\n mixpanel.track('SubmitCustomClick', {\r\n action: 'Click',\r\n nextTimeFilter: 'Custom',\r\n startDate,\r\n endDate,\r\n customStartHour,\r\n customEndHour,\r\n isSuperUser: checkIsSuperUser(authService),\r\n email: getUserEmail(authService),\r\n });\r\n }\r\n appInsightLogger.trackEvent(\r\n { name: 'SubmitCustomClick' },\r\n {\r\n action: 'Click',\r\n nextTimeFilter: 'Custom',\r\n startDate,\r\n endDate,\r\n customStartHour,\r\n customEndHour,\r\n isSuperUser: checkIsSuperUser(authService),\r\n email: getUserEmail(authService),\r\n }\r\n );\r\n },\r\n changedDateinCustomTimeFrame: ({\r\n startDate,\r\n endDate,\r\n customStartHour = 0,\r\n customEndHour = 0,\r\n }) => {\r\n if (mixPannelKey) {\r\n mixpanel.track('ChangedDateinCustomTimeFrame', {\r\n action: 'Change',\r\n nextTimeFilter: 'Custom',\r\n startDate,\r\n endDate,\r\n customStartHour,\r\n customEndHour,\r\n isSuperUser: checkIsSuperUser(authService),\r\n email: getUserEmail(authService),\r\n });\r\n }\r\n appInsightLogger.trackEvent(\r\n { name: 'ChangedDateinCustomTimeFrame' },\r\n {\r\n action: 'Change',\r\n nextTimeFilter: 'Custom',\r\n startDate,\r\n endDate,\r\n customStartHour,\r\n customEndHour,\r\n isSuperUser: checkIsSuperUser(authService),\r\n email: getUserEmail(authService),\r\n }\r\n );\r\n },\r\n\r\n trackHistory: location => {},\r\n};\r\n\r\ntype JobAnalysisFilterArgs = {\r\n systemGroup: string;\r\n actionType: 'groupByResolution' | 'filter';\r\n};\r\nexport const KonnectAnalytics = actions;\r\n\r\n//*helper fucntions\r\nexport const checkIsSuperUser = (authService: AuthServiceImpl): string => {\r\n return authService.idTokenPayload[`${config.AUTH0_CLAIMS_NAMESPACE}is_super_user`]\r\n ? 'true'\r\n : 'false';\r\n};\r\n\r\nexport const getUserEmail = (authService: AuthServiceImpl) => {\r\n return authService.idTokenPayload[`${config.AUTH0_CLAIMS_NAMESPACE}is_super_user`]\r\n ? authService.idTokenPayload.nickname\r\n : authService.idTokenPayload.name;\r\n};\r\n","import { Action } from 'redux';\r\nimport { ThunkDispatch } from 'redux-thunk';\r\nimport { TreeNodeProps } from 'react-dropdown-tree-select';\r\nimport { createStandardAction as crAction } from 'typesafe-actions';\r\n\r\nimport {\r\n Store,\r\n MODAL_STATUS,\r\n UserSystemGroupStrings,\r\n SystemAnalysisViews,\r\n} from '../store/storeTypes';\r\nimport { ExtendedUserData } from '../models/ExtendedUserData';\r\nimport ScopeData from '../models/ScopeData';\r\nimport { scopeSelector } from '../selectors/entitiesSelectors';\r\n\r\nexport const toggleMachineFilterMenu = crAction('TOGGLE_MACHINE_FILTER_MENU')();\r\nexport const toggleUserTableRow = crAction('TOGGLE_USER_TABLE_ROW')();\r\nexport const toggleUserTableAll = crAction('TOGGLE_USER_TABLE_ALL')();\r\n\r\ntype OpenModalUserCreatePayload = ScopeData;\r\nexport const openModalUserCreateAC = crAction('OPEN_MODAL_USER_CREATE')<\r\n OpenModalUserCreatePayload\r\n>();\r\nexport function openModalUserCreate() {\r\n return function(dispatch: ThunkDispatch, getState: () => Store) {\r\n const state: Store = getState();\r\n\r\n dispatch(openModalUserCreateAC(scopeSelector(state)));\r\n };\r\n}\r\n\r\ninterface OpenModalUserEditPayload extends ScopeData {\r\n user: ExtendedUserData;\r\n}\r\nexport const openModalUserEditAC = crAction('OPEN_MODAL_USER_EDIT')();\r\nexport function openModalUserEdit(id: string) {\r\n return function(dispatch: ThunkDispatch, getState: () => Store) {\r\n const state: Store = getState();\r\n dispatch(\r\n openModalUserEditAC({\r\n user: state.entities.users.byId[id],\r\n ...scopeSelector(state),\r\n })\r\n );\r\n };\r\n}\r\n\r\ninterface OpenModalUserDuplicatePayload extends ScopeData {\r\n user: ExtendedUserData;\r\n}\r\nexport const openModalUserDuplicateAC = crAction('OPEN_MODAL_USER_DUPLICATE')<\r\n OpenModalUserDuplicatePayload\r\n>();\r\nexport function openModalUserDuplicate(id: string) {\r\n return function(dispatch: ThunkDispatch, getState: () => Store) {\r\n const state: Store = getState();\r\n\r\n dispatch(\r\n openModalUserDuplicateAC({\r\n user: state.entities.users.byId[id],\r\n ...scopeSelector(state),\r\n })\r\n );\r\n };\r\n}\r\n\r\nexport const closeModalUser = crAction('CLOSE_MODAL_USER')();\r\n\r\ninterface ChangeFormPlainValuePayload {\r\n field: string;\r\n value: string | boolean | ArrayBuffer;\r\n}\r\nexport const changeFormPlainValue = crAction('CHANGE_USER_FORM_PLAIN_VALUE')<\r\n ChangeFormPlainValuePayload\r\n>();\r\n\r\ninterface ChangeUserFormScopePayload extends ScopeData {\r\n selectedNodes: TreeNodeProps[];\r\n}\r\nexport const changeUserFormScopeAC = crAction('CHANGE_USER_FORM_SCOPE')<\r\n ChangeUserFormScopePayload\r\n>();\r\nexport function changeUserFormScope(selectedNodes: TreeNodeProps[]) {\r\n return function(dispatch: ThunkDispatch, getState: () => Store) {\r\n const state: Store = getState();\r\n dispatch(\r\n changeUserFormScopeAC({\r\n selectedNodes,\r\n ...scopeSelector(state),\r\n })\r\n );\r\n };\r\n}\r\n\r\nexport function changeFormAvatar(avatarUploadedFile: File) {\r\n return function(dispatch: ThunkDispatch) {\r\n const reader = new FileReader();\r\n\r\n reader.onload = function(e: any) {\r\n const avatarBase64 = btoa(String.fromCharCode(...new Uint8Array(e.target.result)));\r\n dispatch(\r\n changeFormPlainValue({\r\n field: 'avatarBase64',\r\n value: avatarBase64,\r\n })\r\n );\r\n };\r\n\r\n reader.readAsArrayBuffer(avatarUploadedFile);\r\n };\r\n}\r\n\r\nexport const changeUserSearchValue = crAction('CHANGE_USER_SEARCH_VALUE')();\r\n\r\nexport const setStatusModalUser = crAction('SET_STATUS_MODAL_USER')();\r\nexport const setSystemGroup = crAction('SET_SYSTEM_GROUP')();\r\nexport const setSystemAnalysisView = crAction('SET_SYSTEM_ANALYSIS_VIEW')();\r\nexport const setScreenSize = crAction('SET_SCREEN_SIZE')<{ height?: number; width: number }>();\r\nexport const setPbiReportSize = crAction('SET_PBI_REPORT_PAGE_SIZE')<{\r\n height?: number;\r\n width: number;\r\n}>();\r\nexport const setCaptchaIsOpen = crAction('SET_CAPTCHA_IS_OPEN')<{\r\n isOpen: boolean;\r\n userId: string;\r\n}>();\r\n","import { createSelector } from 'reselect';\r\nimport { createReducer } from 'typesafe-actions';\r\n\r\nimport { actions, RootAction } from '../../actions';\r\nimport { UserSystemGroupStrings, UserSystemGroup, Store } from '../../store/storeTypes';\r\n\r\nconst INIT_STATE: UserSystemGroupStrings = ''; // any value from enum can work, just for proper init\r\n\r\nconst { setSystemGroup } = actions.userUi;\r\n\r\nexport default createReducer(INIT_STATE).handleAction(\r\n setSystemGroup,\r\n (state, action) => action.payload\r\n);\r\n//*selectors\r\nconst uiSelector = (state: Store) => {\r\n return state.ui;\r\n};\r\nexport const systemGroupSelector = createSelector([uiSelector], ui => {\r\n return ui['selectedSystemGroup'];\r\n});\r\n\r\nexport const systemAnalysisViewSelector = createSelector([uiSelector], ui => {\r\n return ui['systemAnalysisView'];\r\n});\r\n","import { Store, ReportSystem } from 'store/storeTypes';\r\n\r\nexport const filterDataSystemsByIdSelector = (state: Store): { [k: string]: ReportSystem } =>\r\n state.reports.filterData[state.ui.selectedSystemGroup]!.systems.reduce(\r\n (acc, system) => ({ ...acc, [system.id]: system }),\r\n {}\r\n );\r\n\r\nexport const filterDataLastUpdateSelector = (state: Store) =>\r\n state.reports.filterData[state.ui.selectedSystemGroup]!.endDate;\r\n\r\nexport const selectedSystemSerialsSelector = (state: Store) =>\r\n state.reports.filterState[state.ui.selectedSystemGroup]!.selectedSystemSerials;\r\n\r\nexport const selectedSystemSerialsSelectorForRequest = (state: Store) => {\r\n return state.reports.filterState[state.ui.selectedSystemGroup]!.selectedSystemSerials;\r\n};\r\n\r\nexport const selectedSystemsDataSelector = (state: Store) =>\r\n state.reports.filterData[state.ui.selectedSystemGroup]!.systems;\r\n\r\nexport const selectedSystemsNameSelector = (state: Store) =>\r\n state.reports.filterData[state.ui.selectedSystemGroup]!.systems.filter(s =>\r\n state.reports.filterState[state.ui.selectedSystemGroup]!.selectedSystemSerials.includes(s.name)\r\n ).map(s => s.id);\r\n","import React from 'react';\r\nimport styled from 'styled-components';\r\nimport { Area, AreaChart, Label, ResponsiveContainer, Tooltip, XAxis, YAxis } from 'recharts';\r\nimport { ChartRecord, UserSystemGroup, UserSystemGroupStrings } from 'store/storeTypes';\r\nimport { ReactComponent as Fabric } from '../../../assets/icons/fabricIconNoColor.svg';\r\nimport { ReactComponent as Tshirt } from '../../../assets/icons/T-shirt.svg';\r\nimport { ReactComponent as Speed } from '../../../assets/icons/speed.svg';\r\nimport { ReactComponent as Dislike } from '../../../assets/icons/dislikeWithCircle.svg';\r\nimport { ReactComponent as Like } from '../../../assets/icons/likeWithCircle.svg';\r\nimport {\r\n cutAllValueAfrerDot,\r\n formatFloatToPercentage,\r\n numberFormatterNew,\r\n} from 'helpers/conversions';\r\nimport { globalColors } from 'globalStyle';\r\nimport { Spinner } from '../Styles';\r\nimport { TimeFrame } from 'models/ReportData';\r\nimport { AggregatedRecord } from './ProductionChart';\r\nimport {\r\n getAdditionalOffsetForXAxisCentralLabelTotalProductionChart,\r\n getGraphMarginTotalProduction,\r\n} from 'helpers/chartUtils';\r\nimport AxixTiksForCustomTimeframe from './AxixTiksForCustomTimeframe';\r\nimport { CustomTimeFrameProperties } from 'actions/reportFilterActions';\r\nimport { normalizeApolloAllChartsRecords } from 'helpers/overviewUtils';\r\nconst TooltipContainer = styled.div`\r\n display: grid;\r\n grid-template-columns: 25px 1fr 10px 25px 1fr 10px 25px 1fr;\r\n border: 1px solid #c5d0de;\r\n background: white;\r\n width: 332px;\r\n height: 30px;\r\n border-radius: 4px;\r\n box-shadow: 2px 2px 5px #00000022;\r\n padding: 8px;\r\n height: 100%;\r\n width: 100%;\r\n`;\r\n\r\nconst Divider = styled.div`\r\n border-left: 1px solid #c5d0de;\r\n height: 100%;\r\n margin: 0 5px;\r\n`;\r\n\r\nconst InfoContainer = styled.div`\r\n display: grid;\r\n grid-template-rows: 13px 10px;\r\n`;\r\nconst Value = styled.div`\r\n font-size: 12px;\r\n color: #354052;\r\n`;\r\nconst DescriptionBlock = styled.div`\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n`;\r\nconst Description = styled.div`\r\n font-size: 8px;\r\n color: #7f8fa4;\r\n`;\r\ntype DesktopProductionChartProps = {\r\n timeframe: TimeFrame;\r\n aggregated: AggregatedRecord[];\r\n units: string;\r\n isWeek: boolean;\r\n selectedSystemGroup: UserSystemGroupStrings;\r\n legendText: any;\r\n screenWidth: number;\r\n data: ChartRecord[];\r\n customTimeframeProperties: CustomTimeFrameProperties;\r\n isMachineFilterOpen: boolean;\r\n maxKeepAlive: Date | undefined;\r\n};\r\n\r\nconst DesktopProductionChart = (prpos: DesktopProductionChartProps) => {\r\n const {\r\n data,\r\n aggregated,\r\n isWeek,\r\n units,\r\n selectedSystemGroup,\r\n customTimeframeProperties,\r\n legendText,\r\n timeframe,\r\n screenWidth,\r\n isMachineFilterOpen,\r\n maxKeepAlive,\r\n } = prpos;\r\n const CHART_HEIGHT = 210;\r\n //default width of YAxis is 60px by official docs of recharts\r\n const DEFAULT_Y_AXIS_WIDTH = 60;\r\n //we need to make it wider to show all numbers on YAxis\r\n const YAxisOffset = 5;\r\n if (!data || timeframe === 'year' || timeframe === 'month' || timeframe === 'quarter') {\r\n return Spinner(60);\r\n } else {\r\n const { marginRight, marginLeft } = getGraphMarginTotalProduction(\r\n screenWidth,\r\n timeframe,\r\n data,\r\n isMachineFilterOpen\r\n );\r\n const additionalOffsetForXAxisCentralLabel = getAdditionalOffsetForXAxisCentralLabelTotalProductionChart(\r\n {\r\n granularity: data[0].granularity,\r\n dataLength: data.length,\r\n screenWidth,\r\n }\r\n );\r\n //*filter future period records\r\n const filteredRecords = normalizeApolloAllChartsRecords(\r\n aggregated,\r\n maxKeepAlive,\r\n selectedSystemGroup\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\nconst CustomizedLabelGrid = props => {\r\n const { viewBox, offsetRight, offsetLeft, chartHeight } = props;\r\n const { width } = viewBox;\r\n\r\n const HEADER_HEIGHT = 50;\r\n const X_START_OFFSET = 38;\r\n const Y_START_OFFSET = 3;\r\n const LINES_COUNT = 5;\r\n\r\n const heigth = chartHeight - HEADER_HEIGHT;\r\n const step = heigth / LINES_COUNT + Y_START_OFFSET;\r\n const fullWidth = width + offsetLeft + offsetRight;\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\nexport default DesktopProductionChart;\r\n\r\nconst CustomizedDot = props => {\r\n //*it calls only in day timeframe. and shows only last point with data\r\n const { cx, cy, value, data } = props;\r\n\r\n let indexOfLastPoint = data.findIndex(record => record.total === undefined);\r\n if (indexOfLastPoint !== -1) {\r\n indexOfLastPoint = indexOfLastPoint - 1;\r\n const date = props.payload.date;\r\n const hour = +date?.split(':')[0];\r\n if (indexOfLastPoint === hour) {\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\nconst CustomTooltip = props => {\r\n const { active, payload: payloadProps, selectedSystemGroup, units } = props;\r\n if (active && payloadProps && payloadProps[0]) {\r\n const payload = payloadProps[0].payload;\r\n return (\r\n \r\n {selectedSystemGroup === UserSystemGroup.DTF ? (\r\n = payload.totalAvg ? '#1BB934' : '#FF4081'}\r\n />\r\n ) : (\r\n = payload.totalAvg ? '#1BB934' : '#FF4081'}\r\n />\r\n )}\r\n \r\n \r\n {numberFormatterNew(payload.total)}\r\n {selectedSystemGroup === UserSystemGroup.DTF && payload.total && ` ${units}`}\r\n \r\n \r\n {selectedSystemGroup === UserSystemGroup.DTG ? 'Total impressions' : 'Total production'}\r\n \r\n \r\n \r\n = payload.speedAvg ? '#1BB934' : '#FF4081'}\r\n />\r\n \r\n \r\n {numberFormatterNew(payload.speed)}\r\n {selectedSystemGroup === UserSystemGroup.DTF && payload.speed && ` ${units}/h`}\r\n {selectedSystemGroup === UserSystemGroup.DTG && ' imp/h'}\r\n \r\n Avg. prod. rate\r\n \r\n \r\n {payload.availability >= payload.availabilityAvg ? (\r\n \r\n ) : (\r\n \r\n )}\r\n\r\n \r\n \r\n {(payload.availability !== undefined &&\r\n formatFloatToPercentage(payload.availability)) ||\r\n 0}\r\n \r\n Avg. availability\r\n \r\n \r\n );\r\n }\r\n\r\n return null;\r\n};\r\n","import { numberFormatterNew } from 'helpers/conversions';\r\nimport React from 'react';\r\nimport { ResponsiveContainer, AreaChart, CartesianGrid, XAxis, YAxis, Area } from 'recharts';\r\nimport styled from 'styled-components';\r\nimport { CustomizedMobileTickProductionChart } from './ProductionChart';\r\nconst MobileChartContainer = styled.div`\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n width: 100%;\r\n height: 100%;\r\n`;\r\nconst MobileProductionChart = props => {\r\n const { aggretatedData, isWeek, legendText } = props;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n\r\n }\r\n tickLine={false}\r\n padding={{ right: 3, left: 0 }}>\r\n numberFormatterNew(value)}\r\n tick={{ fontSize: 12 }}\r\n tickLine={false}>\r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\nexport default MobileProductionChart;\r\n","import React, { useEffect, useState } from 'react';\r\nimport { ChartRecord, Granularity, UserSystemGroupStrings } from 'store/storeTypes';\r\nimport { ReactComponent as FlagIcon } from '../../../assets/icons/timeLineFlagIcon.svg';\r\nimport { getTicks } from 'helpers/overviewUtils';\r\nimport DesktopProductionChart from './DesktopProductionChart';\r\nimport MobileProductionChart from './MobileProductionChart';\r\nimport { TimeFrame } from 'models/ReportData';\r\nimport { CustomTimeFrameProperties } from 'actions/reportFilterActions';\r\n\r\ninterface IProductionChartProps {\r\n data: ChartRecord[];\r\n speedData?: ChartRecord[];\r\n availabilityData?: ChartRecord[];\r\n selectedSystemGroup: UserSystemGroupStrings;\r\n units: string;\r\n isWeek: boolean;\r\n legendText: {\r\n total: string;\r\n totalAvg: string;\r\n };\r\n timeframe?: TimeFrame;\r\n screenWidth?: number;\r\n isMobile: boolean;\r\n isMachineFilterOpen?: boolean;\r\n maxKeepAlive?: Date | undefined;\r\n customTimeframeProperties?: CustomTimeFrameProperties;\r\n}\r\n\r\nexport interface AggregatedRecord {\r\n date: string;\r\n total?: number;\r\n totalAvg?: number;\r\n speed?: number;\r\n speedAvg?: number;\r\n availability?: number;\r\n availabilityAvg?: number;\r\n granularity: Granularity;\r\n}\r\n\r\nexport type CustomizedTickProps = {\r\n x?: number;\r\n y?: number;\r\n width?: number;\r\n index?: number;\r\n data: Array;\r\n isWeek: boolean;\r\n};\r\nexport const CustomizedMobileTickProductionChart = props => {\r\n const { x, y, width, index, isWeek, customTimeframeProperties, data } = props;\r\n if (index > 6) {\r\n return null;\r\n }\r\n const { tickXcoordinate, tickText, textXCoordinate } = getTicks(index, width, 6, isWeek);\r\n\r\n return (\r\n \r\n \r\n {tickText === 'flag' ? (\r\n \r\n ) : (\r\n \r\n {tickText}\r\n \r\n )}\r\n \r\n );\r\n};\r\nexport default function ProductionChart(props: IProductionChartProps) {\r\n const [aggregated, setAggregatedData] = useState([]);\r\n const {\r\n timeframe,\r\n data,\r\n speedData,\r\n availabilityData,\r\n isWeek,\r\n units,\r\n legendText,\r\n selectedSystemGroup,\r\n isMobile,\r\n screenWidth,\r\n customTimeframeProperties,\r\n isMachineFilterOpen,\r\n maxKeepAlive,\r\n } = props;\r\n useEffect(() => {\r\n if (data) {\r\n const aggregated = data.map((record, index) => {\r\n return {\r\n granularity: record.granularity,\r\n total: record.total,\r\n totalAvg: record.totalAvg,\r\n date: record.date,\r\n speed: speedData && speedData[index] !== undefined ? speedData[index].total : undefined,\r\n speedAvg:\r\n speedData && speedData[index] !== undefined ? speedData[index].totalAvg : undefined,\r\n availability:\r\n availabilityData && availabilityData[index] !== undefined\r\n ? availabilityData[index].total\r\n : undefined,\r\n availabilityAvg:\r\n availabilityData && availabilityData[index] !== undefined\r\n ? availabilityData[index].totalAvg\r\n : undefined,\r\n };\r\n });\r\n\r\n setAggregatedData(aggregated);\r\n }\r\n }, [data, speedData, availabilityData]);\r\n\r\n if (isMobile) {\r\n return (\r\n \r\n );\r\n } else {\r\n return (\r\n \r\n );\r\n }\r\n}\r\n","import { numberFormatterNew } from 'helpers/conversions';\r\nimport { getTicksSpeedChart } from 'helpers/overviewUtils';\r\nimport React from 'react';\r\nimport { Bar, BarChart, CartesianGrid, ResponsiveContainer, XAxis, YAxis } from 'recharts';\r\nimport styled from 'styled-components';\r\nimport { ReactComponent as FlagIcon } from '../../../assets/icons/timeLineFlagIcon.svg';\r\nimport { ISpeedChartProps } from './SpeedChart';\r\n\r\nconst MobileChartContainer = styled.div`\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n width: 100%;\r\n height: 100%;\r\n`;\r\nconst MobileSpeedChart = (props: ISpeedChartProps) => {\r\n const { data, timeframe } = props;\r\n const barWidth = timeframe === 'day' ? 6 : 16;\r\n return (\r\n \r\n \r\n \r\n \r\n numberFormatterNew(value)}\r\n tick={{ fontSize: 12 }}\r\n tickLine={false}>\r\n }\r\n tickLine={false}\r\n padding={{ right: 3, left: 0 }}>\r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\nexport default MobileSpeedChart;\r\n\r\nconst CustomizedMobileTickSpeedChart = props => {\r\n const { x, y, width, index, isWeek, data } = props;\r\n if (index > 6) {\r\n return null;\r\n }\r\n const { tickXcoordinate, tickText, textXCoordinate } = getTicksSpeedChart(\r\n index,\r\n width,\r\n 6,\r\n isWeek\r\n );\r\n\r\n return (\r\n \r\n \r\n {tickText === 'flag' ? (\r\n \r\n ) : (\r\n \r\n {tickText}\r\n \r\n )}\r\n \r\n );\r\n};\r\n","import React from 'react';\r\nimport styled from 'styled-components';\r\nimport {\r\n BarChart,\r\n LabelProps,\r\n Tooltip,\r\n XAxis,\r\n Bar,\r\n LabelList,\r\n ResponsiveContainer,\r\n Label,\r\n} from 'recharts';\r\nimport { globalColors } from '../../../globalStyle';\r\nimport { formatFloatToPercentage, numberFormatterNew } from 'helpers/conversions';\r\nimport { TimeFrame, TimeFrameEnum } from 'models/ReportData';\r\n\r\nimport {\r\n ActiveOverviewChart,\r\n ChartRecord,\r\n UserSystemGroup,\r\n UserSystemGroupStrings,\r\n} from 'store/storeTypes';\r\nimport { TooltipText } from './SpeedChart';\r\nimport { Spinner } from '../Styles';\r\nimport { getBarSizeSpeedChart, getGraphMarginSpeedChart } from 'helpers/chartUtils';\r\nimport AxixTiksForCustomTimeframe from './AxixTiksForCustomTimeframe';\r\nimport { CustomTimeFrameProperties } from 'actions/reportFilterActions';\r\nimport { normalizeApolloAllChartsRecords } from 'helpers/overviewUtils';\r\n\r\nconst TooltipContainer = styled.div<{ height: number }>`\r\n display: grid;\r\n grid-template-rows: 2fr 1fr 3px 2fr 1fr;\r\n border: 1px solid #c5d0de;\r\n background: white;\r\n width: auto;\r\n height: ${props => props.height}px;\r\n border-radius: 4px;\r\n box-shadow: 2px 2px 5px #00000022;\r\n padding: 8px;\r\n`;\r\n\r\nconst TooltipValue = styled.div`\r\n font-size: 14px;\r\n & span {\r\n font-size: 12px;\r\n }\r\n`;\r\nconst TooltipTitle = styled.div`\r\n font-size: 10px;\r\n`;\r\nconst TooltipDivider = styled.div`\r\n border-bottom: 1px solid #c5d0de;\r\n width: 100%;\r\n margin-bottom: 5px;\r\n`;\r\nconst CustomTooltip = props => {\r\n const { units, active, payload: propPayload, tooltipText, chartName, timeframe } = props;\r\n const jobStartedPayload = propPayload[0]?.payload;\r\n const isUtilization = () => units === '%';\r\n if (active && propPayload && propPayload[0]) {\r\n const payload = propPayload[0].payload;\r\n const getTooltipHeight = (chartName: ActiveOverviewChart, timeframe: TimeFrame): number => {\r\n if (chartName === ActiveOverviewChart.Speed) {\r\n return timeframe === TimeFrameEnum.day ? 130 : 85;\r\n }\r\n if (chartName === ActiveOverviewChart.Utilization) {\r\n return 85;\r\n }\r\n };\r\n //*this container has different height for speed chart and utilization chart. also there is a difference in height in day timeframe and week timeframe\r\n const containerHeight = getTooltipHeight(chartName, timeframe);\r\n return (\r\n \r\n \r\n {isUtilization()\r\n ? formatFloatToPercentage(payload.total)\r\n : numberFormatterNew(payload.total)}{' '}\r\n {units}\r\n {chartName === ActiveOverviewChart.Speed && timeframe === TimeFrameEnum.day && (\r\n <>\r\n \r\n {jobStartedPayload.toolTip ? jobStartedPayload.toolTip.toFixed(0) : '0'}\r\n Job Started\r\n \r\n \r\n )}\r\n \r\n\r\n {tooltipText.total}\r\n\r\n \r\n \r\n {isUtilization()\r\n ? formatFloatToPercentage(payload.totalAvg)\r\n : numberFormatterNew(payload.totalAvg)}{' '}\r\n {units}\r\n {chartName === ActiveOverviewChart.Speed && timeframe === TimeFrameEnum.day && (\r\n <>\r\n \r\n {jobStartedPayload.toolTipLastWeek\r\n ? jobStartedPayload.toolTipLastWeek.toFixed(0)\r\n : '0'}\r\n Job Started\r\n \r\n \r\n )}\r\n \r\n\r\n {tooltipText.totalAvg}\r\n \r\n );\r\n }\r\n\r\n return null;\r\n};\r\n\r\nconst ChartLabel = (\r\n props: LabelProps & { units?: string } & { selectedSystemGroup?: string } & {\r\n timeframe: TimeFrame;\r\n columnWidth: number;\r\n }\r\n) => {\r\n const { value, x, y, offset, units, selectedSystemGroup, timeframe, width, columnWidth } = props;\r\n\r\n let result;\r\n let unitsPostfix;\r\n if (selectedSystemGroup === 'DTF' && units === '%') {\r\n unitsPostfix = '%';\r\n }\r\n if (\r\n (!isNaN(value as number) && Math.floor(value as number) !== value) ||\r\n (!isNaN(value as number) && (value as number) === 1)\r\n ) {\r\n if (units === '%') {\r\n //*productivity by hour chart\r\n // result = formatFloatToPercentage(value as number);\r\n result = Math.round((value as number) * 100);\r\n } else {\r\n //*Total Impressions by Hour chart\r\n result = numberFormatterNew(value as number);\r\n }\r\n } else {\r\n result = value;\r\n }\r\n const xOffset = x + width / 2;\r\n const yOffset = y ? y - 5 : -5;\r\n return (\r\n \r\n \r\n {result}\r\n {!!unitsPostfix && unitsPostfix}\r\n \r\n \r\n );\r\n};\r\n\r\nconst CustomizedLabelGrid = props => {\r\n //*this greed is needed only in case of week view\r\n const { timeframe, viewBox, offsetRight, offsetLeft, chartHeight } = props;\r\n\r\n const { width } = viewBox;\r\n const yOffSet = 50;\r\n const heigth = chartHeight - yOffSet;\r\n const LINES_COUNT = 5;\r\n const step = heigth / LINES_COUNT;\r\n const fullWidth = width + offsetLeft + offsetRight;\r\n return (\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n );\r\n};\r\ntype DesktopSpeedChartProps = {\r\n data: ChartRecord[];\r\n timeframe: TimeFrame;\r\n selectedSystemGroup: UserSystemGroupStrings;\r\n tooltipText: TooltipText;\r\n units: string;\r\n isWeek: boolean;\r\n chartName: ActiveOverviewChart;\r\n screenWidth: number;\r\n customTimeframeProperties?: CustomTimeFrameProperties;\r\n maxKeepAlive?: Date | undefined;\r\n};\r\nconst DesktopSpeedChart = (props: DesktopSpeedChartProps) => {\r\n const {\r\n data,\r\n timeframe,\r\n selectedSystemGroup,\r\n tooltipText,\r\n units,\r\n isWeek,\r\n chartName,\r\n screenWidth,\r\n customTimeframeProperties,\r\n maxKeepAlive,\r\n } = props;\r\n const barRadius = 8;\r\n\r\n const barSize = data.length && getBarSizeSpeedChart(screenWidth, data.length);\r\n const CHART_HEIGHT = 160;\r\n if (!data.length || timeframe === 'year' || timeframe === 'month' || timeframe === 'quarter') {\r\n return Spinner(60);\r\n } else {\r\n const { marginLeft, marginRight } = getGraphMarginSpeedChart(\r\n timeframe,\r\n screenWidth,\r\n data.length\r\n );\r\n\r\n const filteredRecords = normalizeApolloAllChartsRecords(\r\n data,\r\n maxKeepAlive,\r\n selectedSystemGroup\r\n );\r\n return (\r\n \r\n \r\n //@ts-ignore\r\n \r\n }\r\n />\r\n \r\n }>\r\n \r\n }\r\n />\r\n \r\n \r\n \r\n \r\n }\r\n dataKey=\"total\"\r\n position=\"top\"\r\n />\r\n \r\n \r\n \r\n );\r\n }\r\n};\r\nexport default DesktopSpeedChart;\r\n","import React from 'react';\r\nimport { ChartRecord, ActiveOverviewChart, UserSystemGroupStrings } from 'store/storeTypes';\r\nimport { TimeFrame } from 'models/ReportData';\r\nimport MobileSpeedChart from './MobileSpeedChart';\r\nimport DesktopSpeedChart from './DesktopSpeedChart';\r\nimport { CustomTimeFrameProperties } from 'actions/reportFilterActions';\r\n\r\nexport interface ISpeedChartProps {\r\n data: ChartRecord[];\r\n timeframe: TimeFrame;\r\n units?: string;\r\n tooltipText?: TooltipText;\r\n isMobileView?: boolean;\r\n selectedSystemGroup?: UserSystemGroupStrings;\r\n isMobile?: boolean;\r\n width?: number;\r\n height?: number;\r\n isWeek?: boolean;\r\n chartName?: ActiveOverviewChart;\r\n screenWidth?: number;\r\n customTimeframeProperties?: CustomTimeFrameProperties;\r\n maxKeepAlive?: Date | undefined;\r\n}\r\n\r\nexport interface TooltipText {\r\n total: string;\r\n totalAvg: string;\r\n}\r\n\r\nexport default function SpeedChart(props: ISpeedChartProps) {\r\n const {\r\n data,\r\n tooltipText,\r\n units,\r\n selectedSystemGroup,\r\n timeframe,\r\n isMobile,\r\n width,\r\n height,\r\n isWeek,\r\n chartName,\r\n screenWidth,\r\n customTimeframeProperties,\r\n maxKeepAlive,\r\n } = props;\r\n if (!isMobile) {\r\n return (\r\n \r\n );\r\n } else {\r\n return ;\r\n }\r\n}\r\n","import React from 'react';\r\nimport {\r\n DotProps,\r\n LineChart,\r\n Tooltip,\r\n TooltipProps,\r\n LabelList,\r\n Line,\r\n XAxis,\r\n ResponsiveContainer,\r\n Label,\r\n} from 'recharts';\r\nimport styled from 'styled-components';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nimport { globalColors } from 'globalStyle';\r\nimport { formatFloatToPercentage } from 'helpers/conversions';\r\n\r\nimport { TooltipText } from './SpeedChart';\r\nimport { Spinner } from '../Styles';\r\nimport { TimeFrame } from 'models/ReportData';\r\nimport { ChartRecord, UserSystemGroup, UserSystemGroupStrings } from 'store/storeTypes';\r\nimport { getGraphMarginAvailability } from 'helpers/chartUtils';\r\nimport AxixTiksForCustomTimeframe from './AxixTiksForCustomTimeframe';\r\nimport { CustomTimeFrameProperties } from 'actions/reportFilterActions';\r\nimport { normalizeApolloAllChartsRecords } from 'helpers/overviewUtils';\r\n\r\nconst TooltipContainer = styled.div`\r\n display: grid;\r\n grid-template-rows: 2fr 1fr 3px 2fr 1fr;\r\n border: 1px solid #c5d0de;\r\n background: white;\r\n width: auto;\r\n height: 72px;\r\n border-radius: 4px;\r\n box-shadow: 2px 2px 5px #00000022;\r\n padding: 8px;\r\n`;\r\n\r\nconst TooltipValue = styled.div`\r\n font-size: 12px;\r\n`;\r\nconst AvgAvailability = styled.div`\r\n font-size: 12px;\r\n`;\r\nconst TooltipTitle = styled.div`\r\n font-size: 8px;\r\n`;\r\nconst TooltipDivider = styled.div`\r\n border-bottom: 1px solid #c5d0de;\r\n width: 100%;\r\n`;\r\n\r\nexport const CustomizeAvailabilityChartdDot = (props: DotProps & { value?: number }) => {\r\n const { value, cx: X, cy: Y } = props;\r\n if (!value) {\r\n return ;\r\n }\r\n const cx = X || 0;\r\n const cy = Y || 0;\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\ntype AvailabilityChartLabelProps = {\r\n x?: number;\r\n offset?: number;\r\n value?: string | undefined;\r\n};\r\nconst AvailabilityChartLabel = (props: AvailabilityChartLabelProps) => {\r\n const { x = 0, offset, value } = props;\r\n\r\n return (\r\n \r\n \r\n {value !== undefined && formatFloatToPercentage(parseFloat(value as string) || 0, 0) + '%'}\r\n \r\n \r\n );\r\n};\r\n\r\nconst CustomTooltip = (\r\n props: TooltipProps & { tooltipText: TooltipText } & {\r\n selectedSystemGroup: UserSystemGroupStrings;\r\n }\r\n) => {\r\n const { t } = useTranslation();\r\n const { active, payload: propPayload, tooltipText, selectedSystemGroup } = props;\r\n if (active && propPayload && propPayload[0]) {\r\n const payload = propPayload[0].payload;\r\n const isFuturePeriod = payload?.isFuturePeriod;\r\n const isNotReported = payload?.isNotReported;\r\n const totalValue = isFuturePeriod\r\n ? ''\r\n : isNotReported\r\n ? t('tooltip.overview.availabilityChartNotReporting')\r\n : formatFloatToPercentage(payload.total) + '%';\r\n\r\n return (\r\n \r\n \r\n {totalValue}\r\n \r\n {tooltipText.total}\r\n \r\n \r\n {payload.totalAvg !== undefined\r\n ? formatFloatToPercentage(payload.totalAvg) + '%'\r\n : 'Not Reported'}\r\n \r\n {tooltipText.totalAvg}\r\n \r\n );\r\n }\r\n\r\n return null;\r\n};\r\nconst CustomizedLabelGrid = props => {\r\n //*this greed is needed only in case of week view\r\n const { timeframe, viewBox, offsetRight, offsetLeft, chartHeight } = props;\r\n\r\n const { width } = viewBox;\r\n const yOffset = 50;\r\n const heigth = chartHeight - yOffset;\r\n const LINES_COUNT = 5;\r\n const step = heigth / LINES_COUNT;\r\n const fullWidth = width + offsetLeft + offsetRight;\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\ntype DesktopAvailabilityChartProps = {\r\n data: ChartRecord[];\r\n tooltipText: TooltipText;\r\n isWeek: boolean;\r\n timeframe: TimeFrame;\r\n screenWidth: number;\r\n selectedSystemGroup: UserSystemGroupStrings;\r\n customTimeframeProperties?: CustomTimeFrameProperties;\r\n isMachineFilterOpen: boolean;\r\n maxKeepAlive: Date | undefined;\r\n};\r\nconst DesktopAvailabilityChart = (props: DesktopAvailabilityChartProps) => {\r\n const {\r\n data,\r\n tooltipText,\r\n isWeek,\r\n timeframe,\r\n screenWidth,\r\n selectedSystemGroup,\r\n customTimeframeProperties,\r\n isMachineFilterOpen,\r\n maxKeepAlive,\r\n } = props;\r\n\r\n const CHART_HEIGHT = 200;\r\n\r\n if (!data.length || timeframe === 'year' || timeframe === 'month' || timeframe === 'quarter') {\r\n return Spinner(60);\r\n } else {\r\n const { marginRight, marginLeft } = getGraphMarginAvailability(\r\n screenWidth,\r\n timeframe,\r\n data,\r\n isMachineFilterOpen\r\n );\r\n const filteredRecords = normalizeApolloAllChartsRecords(\r\n data,\r\n maxKeepAlive,\r\n selectedSystemGroup\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 dataKey=\"total\"\r\n position=\"bottom\"\r\n />\r\n \r\n \r\n \r\n );\r\n }\r\n};\r\nexport default DesktopAvailabilityChart;\r\n","import React from 'react';\r\nimport {\r\n CartesianGrid,\r\n DotProps,\r\n LabelList,\r\n Line,\r\n LineChart,\r\n ResponsiveContainer,\r\n XAxis,\r\n YAxis,\r\n} from 'recharts';\r\nimport styled from 'styled-components';\r\nimport { IAvailabilityChartProps } from './AvailabilityChart';\r\nimport { formatFloatToPercentage, numberFormatterNew } from 'helpers/conversions';\r\nimport { ReactComponent as FlagIcon } from '../../../assets/icons/timeLineFlagIcon.svg';\r\nimport { getTicksAvailabilityChart } from 'helpers/overviewUtils';\r\nconst MobileChartContainer = styled.div`\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n width: 100%;\r\n height: 100%;\r\n`;\r\ntype MobileCustomizeAvailabilityChartdDot = {\r\n value?: number;\r\n isWeek: boolean;\r\n isTotalValue: boolean;\r\n index?: number;\r\n};\r\n\r\nexport const MobileCustomizeAvailabilityChartdDot = (\r\n props: DotProps & MobileCustomizeAvailabilityChartdDot\r\n) => {\r\n const { value, cx: X, cy: Y, index, isWeek, isTotalValue } = props;\r\n const dots = [0, 4, 8, 12, 16, 20, 23];\r\n const color = isTotalValue ? '#E6E9ED' : '#208CD7';\r\n\r\n if (isNaN(value)) {\r\n return ;\r\n }\r\n\r\n const cx = X || 0;\r\n const cy = Y || 0;\r\n //*in case of week view we need to show every dot and in case of day only 7 dots from array above\r\n if (isWeek || dots.includes(index)) {\r\n return (\r\n \r\n \r\n \r\n );\r\n } else {\r\n return null;\r\n }\r\n};\r\nconst MobileAvailabilityChart = (props: IAvailabilityChartProps) => {\r\n const { data, isWeek } = props;\r\n return (\r\n \r\n \r\n \r\n \r\n\r\n }\r\n tickLine={false}\r\n padding={{ right: 3, left: 0 }}\r\n />\r\n ''}\r\n // tick={{ fontSize: 12 }}\r\n tickLine={false}\r\n />\r\n }\r\n isAnimationActive={false}\r\n dataKey=\"totalAvg\"\r\n stroke=\"#E6E9ED\"\r\n />\r\n }>\r\n }\r\n dataKey=\"total\"\r\n position=\"top\"\r\n />\r\n \r\n \r\n \r\n \r\n );\r\n};\r\nexport default MobileAvailabilityChart;\r\n\r\nconst CustomizedMobileTickAvailabilityChart = props => {\r\n const { x, y, width, index, isWeek, data } = props;\r\n if (index > 6) {\r\n return null;\r\n }\r\n const { tickXcoordinate, tickText, textXCoordinate } = getTicksAvailabilityChart(\r\n index,\r\n width,\r\n 6,\r\n isWeek\r\n );\r\n\r\n return (\r\n \r\n \r\n {tickText === 'flag' ? (\r\n \r\n ) : (\r\n \r\n {tickText}\r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nconst MobileAvailabilityChartLabel = (props: any) => {\r\n const { index, x, offset, value, isWeek, data } = props;\r\n\r\n if (isWeek) {\r\n //*timeframe === week\r\n let xForLabelWeek = x - 11;\r\n if (index === 0) {\r\n xForLabelWeek = x + 10;\r\n }\r\n if (index === 1) {\r\n xForLabelWeek = x;\r\n }\r\n if (index === 2) {\r\n xForLabelWeek = x;\r\n }\r\n return (\r\n \r\n \r\n {value !== undefined &&\r\n formatFloatToPercentage(parseFloat(value as string) || 0, 0) + '%'}\r\n \r\n \r\n );\r\n } else {\r\n //*timeframe === day we need to show label on 0:00 , 04:00 , 08:00,12:00:16:00,20:00, 24:00\r\n const isShowLabel = index % 4 === 0 || index === 23;\r\n let xForLabelDay = x - 11;\r\n if (index === 0) {\r\n xForLabelDay = x + 10;\r\n }\r\n if (index === 4) {\r\n xForLabelDay = x + 2;\r\n }\r\n if (index === 8 || index === 12 || index === 16) {\r\n xForLabelDay = x;\r\n }\r\n\r\n if (isShowLabel) {\r\n return (\r\n \r\n \r\n {value !== undefined &&\r\n formatFloatToPercentage(parseFloat(value as string) || 0, 0) + '%'}\r\n \r\n \r\n );\r\n } else {\r\n return null;\r\n }\r\n }\r\n};\r\n","import React from 'react';\r\nimport { TimeFrame } from 'models/ReportData';\r\nimport { ChartRecord, UserSystemGroupStrings } from 'store/storeTypes';\r\nimport DesktopAvailabilityChart from './DesktopAvailabilityChart';\r\nimport MobileAvailabilityChart from './MobileAvailabilityChart';\r\nimport { TooltipText } from './SpeedChart';\r\nimport { CustomTimeFrameProperties } from 'actions/reportFilterActions';\r\nexport interface IAvailabilityChartProps {\r\n data: ChartRecord[];\r\n isMobile?: boolean;\r\n isWeek?: boolean;\r\n tooltipText?: TooltipText;\r\n width?: number;\r\n height?: number;\r\n timeframe?: TimeFrame;\r\n screenWidth?: number;\r\n selectedSystemGroup: UserSystemGroupStrings;\r\n customTimeframeProperties?: CustomTimeFrameProperties;\r\n isMachineFilterOpen?: boolean;\r\n maxKeepAlive?: Date;\r\n}\r\n\r\nexport default function AvailabilityChart(props: IAvailabilityChartProps) {\r\n const {\r\n data,\r\n tooltipText,\r\n isMobile,\r\n isWeek,\r\n timeframe,\r\n screenWidth,\r\n selectedSystemGroup,\r\n customTimeframeProperties,\r\n isMachineFilterOpen,\r\n maxKeepAlive,\r\n } = props;\r\n if (isMobile) {\r\n return (\r\n \r\n );\r\n } else {\r\n return (\r\n \r\n );\r\n }\r\n}\r\n","import { systemGroupSelector } from './../ui/systemGroupUiReducer';\r\nimport { createSelector } from 'reselect';\r\nimport { createReducer } from 'typesafe-actions';\r\nimport { actions, RootAction } from 'actions';\r\nimport { ReportFilterState, ReportFilterStateByType, Store } from 'store/storeTypes';\r\nimport { normalizeSelectedNodes } from 'components/_common/TreeSelect/treeHelpers';\r\nimport { getDateForTimeframe, isHistorical } from '../../helpers/date';\r\nimport {\r\n applyMobileFiltersAC,\r\n getDefaultFilterQueries,\r\n openFilterPopUpMenu,\r\n setActiveDateAC,\r\n setNodeFoldedStateAC,\r\n setSelectedSystemIdsAC,\r\n setTimeframeAC,\r\n toggleFilterRowSystemsSelection,\r\n toggleFilterModelRowSystemsSelection,\r\n toggleFilterSerialRowSystemSelection,\r\n setFilterValue,\r\n unselectSerialsByModel,\r\n toggleAllSystemsSelection,\r\n setCustomTimeFrameHoursToDefaultValue,\r\n} from 'actions/reportFilterActions';\r\nimport _ from 'lodash';\r\nimport { convertTo24HourFormat, mergeCopyArrays } from 'helpers/conversions';\r\nimport { endDateSelector } from './filterDataReducer';\r\nimport { startOfWeek } from 'date-fns';\r\nimport { MainReportTypes } from 'models/ReportData';\r\nimport { TimeFrameEnum } from 'models/ReportData';\r\n\r\nconst {\r\n setFilterSystemsStateAC,\r\n setInitFilterStateAC,\r\n setFilterFromUriQueryAC,\r\n} = actions.reportFilter;\r\n\r\nconst FILTER_INIT_STATE: ReportFilterState = {\r\n selectedSiteIds: [],\r\n selectedModelIds: [],\r\n selectedSystemSerials: [],\r\n forceUncheckSiteIds: [],\r\n forceUncheckModelIds: [],\r\n timeframe: undefined,\r\n customTimeFrameStartDate: undefined,\r\n customTimeFrameStartHour: undefined,\r\n customTimeFrameEndDate: undefined,\r\n customTimeFrameEndHour: undefined,\r\n isShiftModeSelected: false,\r\n foldedSiteIds: [],\r\n foldedModelIds: [],\r\n stateInitialized: false,\r\n isApplyMobileFilter: true,\r\n selectedDate: undefined,\r\n defaultQueriesFilter: null,\r\n filterValue: '',\r\n isSelectedSystemsEverReported: null,\r\n isTimeFrameWasChangedFromJobAnalysisPage: false,\r\n};\r\n\r\nconst INIT_STATE: ReportFilterStateByType = {\r\n DTF: _.cloneDeep(FILTER_INIT_STATE),\r\n DTG: _.cloneDeep(FILTER_INIT_STATE),\r\n Apollo: _.cloneDeep(FILTER_INIT_STATE),\r\n};\r\n\r\nconst filterStateReducer = createReducer(INIT_STATE)\r\n .handleAction(toggleAllSystemsSelection, (state, action) => {\r\n const { selectedSystemGroup, filterData, filterState } = action.payload;\r\n const selectedIds = state[selectedSystemGroup].selectedSystemSerials;\r\n if (selectedIds.length === 0) {\r\n //selectAll\r\n const allSystems = filterData.systems;\r\n const isEverReported = allSystems.some(system => system.isEverReported === true);\r\n const newModelIds = [...new Set(allSystems.map(system => system.modelId))];\r\n const newSiteIds = [...new Set(allSystems.map(system => system.siteId))];\r\n const newSerialIds = allSystems.map(system => system.name);\r\n return {\r\n ...state,\r\n [selectedSystemGroup]: {\r\n ...state[selectedSystemGroup],\r\n isSelectedSystemsEverReported: isEverReported,\r\n selectedSiteIds: [...newSiteIds],\r\n selectedModelIds: [...newModelIds],\r\n selectedSystemSerials: [...newSerialIds],\r\n },\r\n };\r\n } else {\r\n //unselectAll\r\n return {\r\n ...state,\r\n [selectedSystemGroup]: {\r\n ...state[selectedSystemGroup],\r\n isSelectedSystemsEverReported: false,\r\n selectedSiteIds: [],\r\n selectedModelIds: [],\r\n selectedSystemSerials: [],\r\n },\r\n };\r\n }\r\n })\r\n .handleAction(unselectSerialsByModel, (state, action) => {\r\n let isEverReported = false;\r\n const { modelId, selectedSystemGroup, filterData } = action.payload;\r\n const selectedIds = state[selectedSystemGroup].selectedSystemSerials;\r\n const selectedSystems = filterData.systems.filter(system => selectedIds.includes(system.name));\r\n const newSelectedSystems = selectedSystems.filter(system => system.modelId !== modelId);\r\n const newSerialIds = newSelectedSystems.map(system => {\r\n //*if at least one system selected with status isEverReported: true in result goes true\r\n if (system.isEverReported) {\r\n isEverReported = true;\r\n }\r\n return system.name;\r\n });\r\n const newModelIds = [...new Set(newSelectedSystems.map(system => system.modelId))];\r\n const newSiteIds = [...new Set(newSelectedSystems.map(system => system.siteId))];\r\n\r\n return {\r\n ...state,\r\n [selectedSystemGroup]: {\r\n ...state[selectedSystemGroup],\r\n isSelectedSystemsEverReported: isEverReported,\r\n selectedSiteIds: [...newSiteIds],\r\n selectedModelIds: [...newModelIds],\r\n selectedSystemSerials: [...newSerialIds],\r\n },\r\n };\r\n })\r\n\r\n .handleAction(toggleFilterSerialRowSystemSelection, (state, action) => {\r\n const {\r\n siteId,\r\n modelId,\r\n serialId,\r\n selectedSystemGroup,\r\n filterState,\r\n filterData,\r\n } = action.payload;\r\n const allSelectedIds = filterState.selectedSystemSerials;\r\n //*if selected - unselect\r\n if (allSelectedIds.includes(serialId)) {\r\n let isEverReported = false;\r\n let newSiteIds;\r\n let newModelIds;\r\n let newSerialIds;\r\n //all serials without unselected serial\r\n newSerialIds = allSelectedIds.filter(selectedId => {\r\n if (selectedId !== serialId) {\r\n //*check if at least one system has status isEverReported:true - it goes to result\r\n const system = filterData.systems.find(sys => sys.name === selectedId);\r\n if (system.isEverReported) {\r\n isEverReported = true;\r\n }\r\n //*get array of serials without selected\r\n return true;\r\n }\r\n });\r\n\r\n //*check if need unselect model;\r\n const allSerialsIdOfCurrentModel = filterData.systems\r\n .filter(system => system.modelId === modelId)\r\n .map(system => system.name);\r\n let allSelectedSerialsOfCurrentModel = new Array();\r\n for (let i = 0; i < allSerialsIdOfCurrentModel.length; i++) {\r\n if (allSelectedIds.includes(allSerialsIdOfCurrentModel[i])) {\r\n allSelectedSerialsOfCurrentModel.push(allSerialsIdOfCurrentModel[i]);\r\n }\r\n }\r\n const selectedModelIds = filterState.selectedModelIds;\r\n newModelIds =\r\n allSelectedSerialsOfCurrentModel.length === 1\r\n ? selectedModelIds.filter(selectedModelId => selectedModelId !== modelId)\r\n : selectedModelIds;\r\n //*check if need unselect site;\r\n const allSerialsOfCurrentSite = filterData.systems\r\n .filter(system => system.siteId === siteId)\r\n .map(system => system.name);\r\n let allSelectedSerialsOfCurrentSite = new Array();\r\n for (let i = 0; i < allSerialsOfCurrentSite.length; i++) {\r\n if (allSelectedIds.includes(allSerialsOfCurrentSite[i])) {\r\n allSelectedSerialsOfCurrentSite.push(allSerialsOfCurrentSite[i]);\r\n }\r\n }\r\n const selectedSiteIds = filterState.selectedSiteIds;\r\n newSiteIds =\r\n allSelectedSerialsOfCurrentSite.length === 1\r\n ? selectedSiteIds.filter(selectedSiteId => selectedSiteId !== siteId)\r\n : selectedSiteIds;\r\n return {\r\n ...state,\r\n [selectedSystemGroup]: {\r\n ...state[selectedSystemGroup],\r\n isSelectedSystemsEverReported: isEverReported,\r\n selectedSiteIds: [...newSiteIds],\r\n selectedModelIds: [...newModelIds],\r\n selectedSystemSerials: [...newSerialIds],\r\n },\r\n };\r\n }\r\n //if not selected -select\r\n else {\r\n let isEverReported = false;\r\n let newSiteIds;\r\n let newModelIds;\r\n let newSerialIds;\r\n\r\n //adding serial number selection\r\n newSerialIds = [serialId, ...allSelectedIds];\r\n //*if at least 1 selected system has status isEverReported: true - it goes to result\r\n newSerialIds.forEach(serialId => {\r\n const system = filterData.systems.find(system => system.name === serialId);\r\n if (system.isEverReported) {\r\n isEverReported = true;\r\n }\r\n });\r\n //check if need add selection to modelsIds\r\n const allcurrentModelSerialsIds = filterData.systems\r\n .filter(system => system.modelId === modelId)\r\n .map(system => system.name);\r\n let allSelectedSerialsOfCurrentModel = new Array();\r\n for (let i = 0; i < allcurrentModelSerialsIds.length; i++) {\r\n if (newSerialIds.includes(allcurrentModelSerialsIds[i])) {\r\n allSelectedSerialsOfCurrentModel.push(allcurrentModelSerialsIds[i]);\r\n }\r\n }\r\n const selectedModelIds = filterState.selectedModelIds;\r\n newModelIds =\r\n allSelectedSerialsOfCurrentModel.length === 1\r\n ? [...selectedModelIds, modelId]\r\n : selectedModelIds;\r\n //check if need add selection to siteIds\r\n const allCurrentSiteSerialIds = filterData.systems\r\n .filter(system => system.siteId === siteId)\r\n .map(system => system.name);\r\n let allSelectedSerialsOfCurrentSite = new Array();\r\n\r\n for (let i = 0; i < allCurrentSiteSerialIds.length; i++) {\r\n if (newSerialIds.includes(allCurrentSiteSerialIds[i])) {\r\n allSelectedSerialsOfCurrentSite.push(allCurrentSiteSerialIds[i]);\r\n }\r\n }\r\n const selectedSiteIds = filterState.selectedSiteIds;\r\n newSiteIds =\r\n allSelectedSerialsOfCurrentSite.length === 1\r\n ? [...selectedSiteIds, siteId]\r\n : selectedSiteIds;\r\n return {\r\n ...state,\r\n [selectedSystemGroup]: {\r\n ...state[selectedSystemGroup],\r\n isSelectedSystemsEverReported: isEverReported,\r\n selectedSiteIds: [...newSiteIds],\r\n selectedModelIds: [...newModelIds],\r\n selectedSystemSerials: [...newSerialIds],\r\n },\r\n };\r\n }\r\n })\r\n .handleAction(toggleFilterModelRowSystemsSelection, (state, action) => {\r\n const { selectedSystemGroup, modelId, siteId, filterData, filterState } = action.payload;\r\n const selectedModelIds = filterState.selectedModelIds;\r\n const currentModelId = modelId;\r\n //*if model row already selected - this block does unselection of model row and site row if needed\r\n if (selectedModelIds.includes(currentModelId)) {\r\n // unseelect model\r\n const newModelIds = selectedModelIds.filter(selectedId => selectedId !== currentModelId);\r\n\r\n // unselect serials\r\n const selectedSerials = filterState.selectedSystemSerials;\r\n const currentSerialIds = filterData.systems\r\n .filter(system => system.modelId === modelId)\r\n .map(system => system.name);\r\n const newSerialIds = selectedSerials.filter(id => !currentSerialIds.includes(id));\r\n //*if at least one selected system has status isEverReported:true - it goes to result\r\n let isEverReported = false;\r\n newSerialIds.forEach(serialId => {\r\n const sys = filterData.systems.find(system => system.name === serialId);\r\n if (sys.isEverReported) {\r\n isEverReported = true;\r\n }\r\n });\r\n\r\n // check if there more selected serials in site if no unselect site\r\n const selectedSiteIds = filterState.selectedSiteIds;\r\n const currentSiteId = filterData.systems.find(system =>\r\n currentSerialIds.includes(system.name)\r\n ).siteId;\r\n\r\n const allSiteSerials = filterData.systems\r\n .filter(system => system.siteId === currentSiteId)\r\n .map(system => system.name);\r\n let isAtLeastOnePrinterInSiteSelected;\r\n allSiteSerials.forEach(element => {\r\n if (newSerialIds.includes(element)) {\r\n isAtLeastOnePrinterInSiteSelected = true;\r\n }\r\n });\r\n const newSelectedSiteIds = selectedSiteIds.filter(id => id !== currentSiteId);\r\n\r\n const newSiteIds = isAtLeastOnePrinterInSiteSelected ? selectedSiteIds : newSelectedSiteIds;\r\n return {\r\n ...state,\r\n [selectedSystemGroup]: {\r\n ...state[selectedSystemGroup],\r\n isSelectedSystemsEverReported: isEverReported,\r\n selectedSiteIds: [...newSiteIds],\r\n selectedModelIds: [...newModelIds],\r\n selectedSystemSerials: [...newSerialIds],\r\n },\r\n };\r\n //*if model row is not selected yet - model selection and site check\r\n } else {\r\n let isEverReported = false;\r\n let newSiteIds;\r\n let newModelIds;\r\n let newSerialIds;\r\n\r\n const currentModelId = modelId;\r\n const currentSiteId = siteId;\r\n //siteId check - if in site no selected serials except curently selected - we need to add site id to all selected siteIds else newSiteIds = alreadyselectedSiteIds\r\n const allSelectedSiteIds = filterState.selectedSiteIds;\r\n\r\n const allSellectedSerials = filterState.selectedSystemSerials;\r\n const allcurrentSiteSerials = filterData.systems\r\n .filter(system => system.siteId === currentSiteId)\r\n .map(system => system.name);\r\n let isAtLeastOneSerialInSiteSelected;\r\n for (let i = 0; i < allSellectedSerials.length; i++) {\r\n if (allcurrentSiteSerials.includes(allSellectedSerials[i])) {\r\n isAtLeastOneSerialInSiteSelected = true;\r\n }\r\n }\r\n newSiteIds = isAtLeastOneSerialInSiteSelected\r\n ? allSelectedSiteIds\r\n : [currentSiteId, ...allSelectedSiteIds];\r\n //model Selection\r\n const allModelsSelected = filterState.selectedModelIds;\r\n newModelIds = [currentModelId, ...allModelsSelected];\r\n //serials selection by model;\r\n const allModelSerialIds = filterData.systems\r\n .filter(system => system.modelId === currentModelId)\r\n .map(system => system.name);\r\n const allSelectedIds = filterState.selectedSystemSerials;\r\n newSerialIds = [...allModelSerialIds, ...allSelectedIds];\r\n //*if at least one selected system has status isEverReported:true - it goes to result\r\n newSerialIds.forEach(serialId => {\r\n const sys = filterData.systems.find(system => system.name === serialId);\r\n if (sys.isEverReported) {\r\n isEverReported = true;\r\n }\r\n });\r\n return {\r\n ...state,\r\n [selectedSystemGroup]: {\r\n ...state[selectedSystemGroup],\r\n isSelectedSystemsEverReported: isEverReported,\r\n selectedSiteIds: [...newSiteIds],\r\n selectedModelIds: [...newModelIds],\r\n selectedSystemSerials: [...newSerialIds],\r\n },\r\n };\r\n }\r\n })\r\n\r\n .handleAction(toggleFilterRowSystemsSelection, (state, action) => {\r\n const { filterState, filterData, siteId, selectedSystemGroup } = action.payload;\r\n const selectedSitesIds = state[selectedSystemGroup].selectedSiteIds;\r\n const currentSiteId = siteId;\r\n const isCurrentSiteAlreadySelected = selectedSitesIds.includes(currentSiteId);\r\n const selectedIds = [...filterState.selectedSystemSerials];\r\n const siteSerials = filterData.systems\r\n .filter(system => system.siteId === siteId)\r\n .map(system => system.name);\r\n const isSiteFullySelected = siteSerials.some(id => selectedIds.includes(id));\r\n\r\n //*if row already selected remove selection from row\r\n if (isCurrentSiteAlreadySelected && isSiteFullySelected) {\r\n //*goes to result\r\n const newSiteIds = selectedSitesIds.filter(siteId => siteId !== currentSiteId);\r\n const allSelectedSerials = [...filterState.selectedSystemSerials];\r\n //*if at least one selected system has status isEverReported:true - it goes to result\r\n let isEverReported = false;\r\n const allSelectedSerialsWithoutCurrentSiteSerials = allSelectedSerials.filter(\r\n selectedSerial => !siteSerials.includes(selectedSerial)\r\n );\r\n allSelectedSerialsWithoutCurrentSiteSerials.forEach(selectedSerial => {\r\n const sys = filterData.systems.find(system => system.name === selectedSerial);\r\n if (sys.isEverReported) {\r\n isEverReported = true;\r\n }\r\n });\r\n\r\n const allSiteSystemSerials = filterData.systems\r\n .filter(system => system.siteId === siteId)\r\n .map(system => system.name);\r\n //*goes to result\r\n const newSiteSistemIds = allSelectedSerials.filter(id => !allSiteSystemSerials.includes(id));\r\n\r\n const allModelsSelectedIds = filterState.selectedModelIds;\r\n const allSiteModelIds = filterData.models\r\n .filter(model => model.siteId === siteId)\r\n .map(model => model.id);\r\n //*goes to result\r\n const newModelIds = allModelsSelectedIds.filter(id => !allSiteModelIds.includes(id));\r\n return {\r\n ...state,\r\n [selectedSystemGroup]: {\r\n ...state[selectedSystemGroup],\r\n isSelectedSystemsEverReported: isEverReported,\r\n selectedSiteIds: [...newSiteIds],\r\n selectedModelIds: [...newModelIds],\r\n selectedSystemSerials: [...newSiteSistemIds],\r\n },\r\n };\r\n } else {\r\n const selectedSiteIds = state[selectedSystemGroup].selectedSiteIds;\r\n const newSelectedSiteIds = [siteId, ...selectedSiteIds];\r\n\r\n const selectedSiteModels = [...filterState.selectedModelIds];\r\n const currentModelIds = filterData.models\r\n .filter(model => model.siteId === siteId)\r\n .map(model => model.id);\r\n const newSelectedModelIds = [...currentModelIds, ...selectedSiteModels];\r\n\r\n const selectedSerialIds = filterState.selectedSystemSerials;\r\n const currentSystemSerials = filterData.systems\r\n .filter(system => system.siteId === siteId)\r\n .map(system => system.name);\r\n const newSelectedSerials = [...currentSystemSerials, ...selectedSerialIds];\r\n //*if at least one selected system has status isEverReported:true - it goes to result\r\n let isEverReported = false;\r\n newSelectedSerials.forEach(serialId => {\r\n const sys = filterData.systems.find(system => system.name === serialId);\r\n if (sys.isEverReported) {\r\n isEverReported = true;\r\n }\r\n });\r\n return {\r\n ...state,\r\n [selectedSystemGroup]: {\r\n ...state[selectedSystemGroup],\r\n isSelectedSystemsEverReported: isEverReported,\r\n selectedSiteIds: [...newSelectedSiteIds],\r\n selectedModelIds: [...newSelectedModelIds],\r\n selectedSystemSerials: [...newSelectedSerials],\r\n },\r\n };\r\n }\r\n })\r\n .handleAction(setFilterValue, (state, action) => {\r\n const { value, selectedSystemGroup } = action.payload;\r\n\r\n return {\r\n ...state,\r\n [selectedSystemGroup]: {\r\n ...state[selectedSystemGroup],\r\n filterValue: value,\r\n },\r\n };\r\n })\r\n .handleAction(setInitFilterStateAC, (state, action) => {\r\n const {\r\n selectedSystemGroup,\r\n filterData: { models, endDate },\r\n } = action.payload;\r\n\r\n const today = new Date();\r\n today.setHours(0, 0, 0, 0);\r\n const selectedDate = endDate ? new Date(endDate.getTime()) : today;\r\n return {\r\n ...state,\r\n [selectedSystemGroup]: {\r\n ...state[selectedSystemGroup],\r\n foldedModelIds: models.map(m => m.id),\r\n selectedDate: selectedDate,\r\n stateInitialized: true,\r\n },\r\n };\r\n })\r\n .handleAction(setCustomTimeFrameHoursToDefaultValue, (state, action) => {\r\n const { selectedSystemGroup } = action.payload;\r\n return {\r\n ...state,\r\n [selectedSystemGroup]: {\r\n ...state[selectedSystemGroup],\r\n customTimeFrameStartHour: 0,\r\n customTimeFrameEndHour: 23,\r\n },\r\n };\r\n })\r\n .handleAction(setTimeframeAC, (state, action) => {\r\n const { selectedSystemGroup, timeframe, startDate, activeReport } = action.payload;\r\n const { selectedDate } = state[selectedSystemGroup];\r\n const newDate = getDateForTimeframe(selectedDate, timeframe);\r\n let resultDate = newDate < startDate ? startDate : newDate;\r\n if (timeframe === 'week') {\r\n startOfWeek(resultDate, { weekStartsOn: 1 });\r\n }\r\n const customStartHour =\r\n timeframe !== TimeFrameEnum.custom\r\n ? null\r\n : activeReport === MainReportTypes.Jobs\r\n ? 0\r\n : convertTo24HourFormat(\r\n action?.payload?.customTimeFrameProperties?.customTimeFrameStartHour,\r\n action.payload.customTimeFrameProperties.customStartTimeModificator\r\n );\r\n const customEndHour =\r\n timeframe !== TimeFrameEnum.custom\r\n ? null\r\n : activeReport === MainReportTypes.Jobs\r\n ? 23\r\n : convertTo24HourFormat(\r\n action?.payload?.customTimeFrameProperties?.customTimeFrameEndHour,\r\n action.payload.customTimeFrameProperties.customEndTimeModificator\r\n );\r\n return {\r\n ...state,\r\n [selectedSystemGroup]: {\r\n ...state[selectedSystemGroup],\r\n timeframe,\r\n selectedDate:\r\n timeframe !== 'custom'\r\n ? resultDate\r\n : action.payload.customTimeFrameProperties.customTimeFrameStartDate,\r\n isTimeFrameWasChangedFromJobAnalysisPage: activeReport === 'jobs' && timeframe !== 'week',\r\n customTimeFrameEndHour: customEndHour,\r\n\r\n customTimeFrameStartHour: customStartHour,\r\n\r\n customTimeFrameEndDate:\r\n timeframe !== 'custom'\r\n ? null\r\n : action.payload.customTimeFrameProperties.customTimeFrameEndDate,\r\n customTimeFrameStartDate:\r\n timeframe !== 'custom'\r\n ? null\r\n : action.payload.customTimeFrameProperties.customTimeFrameStartDate,\r\n },\r\n };\r\n })\r\n\r\n .handleAction(setActiveDateAC, (state, action) => {\r\n const { selectedSystemGroup, timeframe, date } = action.payload;\r\n return {\r\n ...state,\r\n [selectedSystemGroup]: {\r\n ...state[selectedSystemGroup],\r\n timeframe,\r\n selectedDate: getDateForTimeframe(date, timeframe),\r\n },\r\n };\r\n })\r\n\r\n .handleAction(setFilterFromUriQueryAC, (state, action) => {\r\n const {\r\n selectedDate,\r\n timeframe,\r\n selectedSiteIds,\r\n selectedModelIds,\r\n selectedSystemSerials,\r\n selectedSystemGroup,\r\n } = action.payload;\r\n\r\n const result = {\r\n timeframe,\r\n selectedDate: selectedDate\r\n ? new Date(selectedDate)\r\n : state[selectedSystemGroup]?.selectedDate,\r\n selectedSiteIds: selectedSiteIds,\r\n selectedModelIds: selectedModelIds,\r\n selectedSystemSerials: selectedSystemSerials,\r\n };\r\n\r\n const cleanedResult = _.pickBy(result, _.identity);\r\n\r\n return {\r\n ...state,\r\n [selectedSystemGroup]: _.mergeWith(\r\n _.cloneDeep(state[selectedSystemGroup]),\r\n { ...cleanedResult },\r\n mergeCopyArrays\r\n ),\r\n };\r\n })\r\n\r\n .handleAction(setFilterSystemsStateAC, (state, action) => {\r\n const { selectedNodes, sites, models, systems, selectedSystemGroup } = action.payload;\r\n\r\n const {\r\n rootIds: selectedSiteIds,\r\n parentIds: selectedModelIds,\r\n childIds: selectedSystemSerials,\r\n } = normalizeSelectedNodes(\r\n selectedNodes,\r\n true,\r\n sites,\r\n models.map(m => ({ id: m.id, name: m.name, rootId: m.siteId })),\r\n systems.map(s => ({\r\n id: s.name,\r\n name: s.name,\r\n rootId: s.siteId,\r\n parentId: s.modelId,\r\n }))\r\n );\r\n\r\n return {\r\n ...state,\r\n [selectedSystemGroup]: {\r\n ...state[selectedSystemGroup],\r\n selectedSiteIds,\r\n selectedModelIds,\r\n selectedSystemSerials,\r\n },\r\n };\r\n })\r\n\r\n .handleAction(setNodeFoldedStateAC, (state, action) => {\r\n const { node, selectedSystemGroup } = action.payload;\r\n const arrayName = node._depth === 0 ? 'foldedSiteIds' : 'foldedModelIds';\r\n const foldedArray = [...state[selectedSystemGroup]![arrayName]];\r\n\r\n if (node.expanded) {\r\n const i = foldedArray.indexOf(node.value);\r\n if (i !== -1) foldedArray.splice(i, 1);\r\n } else {\r\n foldedArray.includes(node.value) || foldedArray.push(node.value);\r\n }\r\n\r\n return {\r\n ...state,\r\n [selectedSystemGroup]: {\r\n ...state[selectedSystemGroup],\r\n [arrayName]: foldedArray,\r\n },\r\n };\r\n })\r\n\r\n .handleAction(applyMobileFiltersAC, (state, action) => {\r\n const { selectedSystemGroup, isApplyMobileFilter } = action.payload;\r\n return {\r\n ...state,\r\n [selectedSystemGroup]: {\r\n ...state[selectedSystemGroup],\r\n isApplyMobileFilter,\r\n },\r\n };\r\n })\r\n\r\n .handleAction(getDefaultFilterQueries, (state, action) => {\r\n return {\r\n ...state,\r\n defaultQueriesFilter: action.payload,\r\n };\r\n })\r\n .handleAction(setSelectedSystemIdsAC, (state, action) => {\r\n const { selectedSystemGroup, selectedSystemSerials } = action.payload;\r\n return {\r\n ...state,\r\n [selectedSystemGroup]: {\r\n ...state[selectedSystemGroup],\r\n selectedSystemSerials: [...selectedSystemSerials],\r\n },\r\n };\r\n })\r\n .handleAction(openFilterPopUpMenu, (state, action) => {\r\n const { selectedSystemGroup } = action.payload;\r\n return {\r\n ...state,\r\n [selectedSystemGroup]: {\r\n ...state[selectedSystemGroup],\r\n isFilterPopUpOpen: !state[selectedSystemGroup].isFilterPopUpOpen,\r\n },\r\n };\r\n });\r\n\r\nexport default filterStateReducer;\r\n//*selectors ===> ===> selectors\r\nconst reportsSelector = (state: Store) => {\r\n return state.reports;\r\n};\r\n\r\nexport const filterStateSelector = createSelector([reportsSelector], reports => {\r\n return reports['filterState'];\r\n});\r\nexport const activeReprotSelector = createSelector([reportsSelector], reports => {\r\n return reports['activeReport'];\r\n});\r\nexport const filterStateBySystemGroup = createSelector(\r\n [filterStateSelector, systemGroupSelector],\r\n (filterState, systemGroup) => {\r\n return filterState[systemGroup];\r\n }\r\n);\r\nexport const customTimeFramePropertiesSelector = createSelector(\r\n [filterStateBySystemGroup],\r\n filterState => {\r\n return {\r\n isShiftModeSelected: filterState?.isShiftModeSelected,\r\n customTimeFrameStartDate: filterState?.customTimeFrameStartDate,\r\n customTimeFrameStartHour: filterState?.customTimeFrameStartHour,\r\n customTimeFrameEndDate: filterState?.customTimeFrameEndDate,\r\n customTimeFrameEndHour: filterState?.customTimeFrameEndHour,\r\n };\r\n }\r\n);\r\nexport const isTimeFrameWasChangedFromJobAnalysisPageSelector = createSelector(\r\n [filterStateBySystemGroup],\r\n filterState => {\r\n return filterState['isTimeFrameWasChangedFromJobAnalysisPage'];\r\n }\r\n);\r\nexport const filterValueBySystemGroupSelector = createSelector(\r\n [filterStateBySystemGroup],\r\n filterState => {\r\n return filterState['filterValue'];\r\n }\r\n);\r\nexport const isStateInitializedBySystemGroup = createSelector(\r\n [filterStateBySystemGroup],\r\n filterState => {\r\n return filterState['stateInitialized'];\r\n }\r\n);\r\nexport const selectedSystemSerialsBySystemGroup = createSelector(\r\n [filterStateBySystemGroup],\r\n filterState => {\r\n return filterState['selectedSystemSerials'];\r\n }\r\n);\r\nexport const timeFrameSelector = createSelector([filterStateBySystemGroup], filterState => {\r\n return filterState['timeframe'];\r\n});\r\nexport const selectedDateSelector = createSelector([filterStateBySystemGroup], filterState => {\r\n return filterState['selectedDate'];\r\n});\r\nexport const isSelectedSystemsEverReportedBySystemGroupSelector = createSelector(\r\n [filterStateBySystemGroup],\r\n filterState => {\r\n return filterState['isSelectedSystemsEverReported'];\r\n }\r\n);\r\nexport const isTodaySelector = createSelector(\r\n [selectedDateSelector, endDateSelector],\r\n (selectedDate, endDate) => {\r\n return !isHistorical({\r\n day: new Date(selectedDate || '01.01.1990'),\r\n lastUpdate: endDate || new Date(),\r\n });\r\n }\r\n);\r\n//helper function\r\n","import { createSelector } from 'reselect';\r\nimport { createReducer } from 'typesafe-actions';\r\n\r\nimport { actions, RootAction } from 'actions';\r\nimport { AppUser, Store } from 'store/storeTypes';\r\nimport { SaveUserSuccessPayload } from 'actions/userApiActions';\r\nimport { ReportType } from 'models/Scheduler';\r\nimport { setUserEmail, setUserFirstName, setUserLastName } from 'actions/appUserActions';\r\nimport { setPbiReportSize, setScreenSize } from '../actions/userUiActions';\r\n\r\nconst INIT_STATE: AppUser = {\r\n id: '',\r\n profilePictureUrl: '',\r\n customerIds: [],\r\n siteIds: [],\r\n systemIds: [],\r\n reportTypes: [],\r\n userEmail: '',\r\n userFirstName: '',\r\n userLastName: '',\r\n};\r\n\r\nconst { setAppUserParams, loadAppUserFullSuccess, loadPortalApiUrlSuccess } = actions.appUser;\r\nconst { saveUserSuccess } = actions.userApi;\r\nconst { loadSchedulerTypesSuccess } = actions.schedulerApi;\r\n\r\nexport const appUserReducer = createReducer(INIT_STATE)\r\n .handleAction(loadSchedulerTypesSuccess, (state, action) => setReportTypes(state, action.payload))\r\n .handleAction(setAppUserParams, (state, action) => {\r\n return { ...state, ...action.payload };\r\n })\r\n .handleAction(saveUserSuccess, (state, action) => applySavedUserProperties(state, action.payload))\r\n .handleAction(loadAppUserFullSuccess, (state, action) => setAppUserFull(state, action.payload))\r\n .handleAction(loadPortalApiUrlSuccess, (state, action) => ({\r\n ...state,\r\n ...action.payload,\r\n }))\r\n .handleAction(setUserFirstName, (state, action) => {\r\n return { ...state, userFirstName: action.payload.firstName };\r\n })\r\n\r\n .handleAction(setUserLastName, (state, action) => {\r\n return { ...state, userLastName: action.payload.lastName };\r\n })\r\n .handleAction(setUserEmail, (state, action) => {\r\n return { ...state, userEmail: action.payload.email };\r\n })\r\n .handleAction(setScreenSize, (state, action) => {\r\n const { width, height } = action.payload;\r\n return { ...state, screenWidth: width, screenHeight: height };\r\n })\r\n .handleAction(setPbiReportSize, (state, action) => {\r\n const { width, height } = action.payload;\r\n return {\r\n ...state,\r\n pbiReportWidth: width,\r\n pbiReportHeight: height,\r\n };\r\n });\r\n//*selectors\r\nconst appUserSelector = (state: Store) => {\r\n return state.appUser;\r\n};\r\nexport const userEmailSelector = createSelector([appUserSelector], appUser => {\r\n return appUser.userEmail;\r\n});\r\nexport const screenWidthSelector = createSelector([appUserSelector], appUser => {\r\n return appUser.screenWidth;\r\n});\r\nexport const screenHeightSelector = createSelector([appUserSelector], appUser => {\r\n return appUser.screenHeight;\r\n});\r\nexport const pbiReportHeightSelector = createSelector([appUserSelector], appUser => {\r\n return appUser.pbiReportHeight;\r\n});\r\nexport const pbiReportWidthSelector = createSelector([appUserSelector], appUser => {\r\n return appUser.pbiReportWidth;\r\n});\r\nexport const profilePictureUrlSelector = createSelector([appUserSelector], appUsesr => {\r\n return appUsesr.profilePictureUrl;\r\n});\r\nexport const apiUrlSelector = createSelector([appUserSelector], appUsesr => {\r\n return appUsesr.apiUrl;\r\n});\r\nexport const userAgreementSelector = createSelector([appUserSelector], appUsesr => {\r\n return appUsesr.userAgreement;\r\n});\r\nexport const userAgreementVersionSelector = createSelector([appUserSelector], appUsesr => {\r\n return appUsesr.userAgreementVersion;\r\n});\r\nexport const isReadOnlyRoleSelector = createSelector([appUserSelector], appUser => {\r\n return appUser.permissions?.includes(7);\r\n});\r\n\r\nfunction applySavedUserProperties(state: AppUser, payload: SaveUserSuccessPayload): AppUser {\r\n const savedUser = Array.isArray(payload.newUsers) && payload.newUsers[0];\r\n\r\n if (savedUser && savedUser.id === state.id) {\r\n return {\r\n ...state,\r\n ...savedUser,\r\n profilePictureUrl: savedUser.profilePictureUrl || state.profilePictureUrl || undefined,\r\n };\r\n }\r\n\r\n return state;\r\n}\r\n\r\nfunction setAppUserFull(state: AppUser, appUser: AppUser): AppUser {\r\n if (appUser) {\r\n return {\r\n ...state,\r\n ...appUser,\r\n profilePictureUrl: appUser.profilePictureUrl || state.profilePictureUrl || undefined,\r\n };\r\n }\r\n\r\n return state;\r\n}\r\n\r\nfunction setReportTypes(state: AppUser, value: ReportType[]): AppUser {\r\n if (value && value.length > 0) {\r\n const reportTypes: string[] = [];\r\n\r\n value.forEach((type: ReportType) => {\r\n reportTypes.push(type.name);\r\n });\r\n\r\n return { ...state, reportTypes };\r\n }\r\n\r\n return state;\r\n}\r\n","import { createSelector } from 'reselect';\r\nimport { createReducer } from 'typesafe-actions';\r\nimport _ from 'lodash';\r\nimport { actions } from 'actions';\r\nimport {\r\n ReportSite,\r\n ReportModel,\r\n ReportSystem,\r\n ReportFilterDataByType,\r\n UserSystemGroupStrings,\r\n ReportsFilterDataByTypePartial,\r\n Store,\r\n} from 'store/storeTypes';\r\nimport { parse } from 'date-fns';\r\nimport { ReportsFiltersDatesApi, ReportsFilterSitesApi } from 'models/ReportsFilterData';\r\nimport { changeNickNameAC } from 'actions/systemAnalysisActions';\r\nimport { getEmptyStateAC } from 'actions/reportFilterActions';\r\nimport { systemGroupSelector } from 'reducers/ui/systemGroupUiReducer';\r\nimport { updateFilterDataStateWithEverReportedStatus } from 'helpers/filter-data';\r\n\r\nconst INIT_STATE: ReportFilterDataByType = {\r\n DTG: {\r\n sites: [],\r\n models: [],\r\n systems: [],\r\n startDate: undefined,\r\n endDate: undefined,\r\n activeSystems: '',\r\n },\r\n DTF: {\r\n sites: [],\r\n models: [],\r\n systems: [],\r\n startDate: undefined,\r\n endDate: undefined,\r\n activeSystems: '',\r\n },\r\n Apollo: {\r\n sites: [],\r\n models: [],\r\n systems: [],\r\n startDate: undefined,\r\n endDate: undefined,\r\n activeSystems: '',\r\n },\r\n};\r\n\r\nconst {\r\n loadReportsFilterDatesSuccess,\r\n loadReportsFilterSitesSuccess,\r\n loadReportsCurrentStateSuccess,\r\n} = actions.reportApi;\r\n\r\nconst filterSitesReducer = createReducer(INIT_STATE)\r\n .handleAction(loadReportsFilterSitesSuccess, (state, action) => {\r\n const sites = apiFilterSitesNormalize(state, action.payload);\r\n\r\n return _.merge(_.cloneDeep(state), sites);\r\n })\r\n .handleAction(loadReportsFilterDatesSuccess, (state, action) => {\r\n const dates = apiFilterDatesNormalize(state, action.payload);\r\n return _.merge(_.cloneDeep(state), dates);\r\n })\r\n .handleAction(loadReportsCurrentStateSuccess, (state, action) => {\r\n const currentStateByType: BuildCurrentStateByType = {};\r\n Object.keys(action.payload).forEach((type: string) => {\r\n currentStateByType[type as UserSystemGroupStrings] = {\r\n activeSystems: action.payload[type as UserSystemGroupStrings].activeSystemsLabel,\r\n };\r\n });\r\n\r\n return _.merge(_.cloneDeep(state), { ...currentStateByType });\r\n })\r\n .handleAction(changeNickNameAC.success, (state, action) => {\r\n const { data, selectedSystemGroup } = action.payload;\r\n const { serialNumber, nickName } = data;\r\n const currentSystem = state[selectedSystemGroup].systems.find(\r\n system => system.name === serialNumber\r\n );\r\n //*this one goes to result\r\n const updatedSystem = { ...currentSystem, systemNickName: nickName };\r\n //*those goes to result\r\n const restSystems = state[selectedSystemGroup].systems.filter(\r\n system => system.name !== serialNumber\r\n );\r\n //*result\r\n const updatedSystems = new Array();\r\n updatedSystems.push(updatedSystem);\r\n restSystems.forEach(system => updatedSystems.push({ ...system }));\r\n const newState = { ...state[selectedSystemGroup], systems: updatedSystems };\r\n return { ...state, [selectedSystemGroup]: newState };\r\n })\r\n .handleAction(getEmptyStateAC.success, (state, action) => {\r\n const newState = updateFilterDataStateWithEverReportedStatus(state, action);\r\n return newState;\r\n });\r\n\r\nexport default filterSitesReducer;\r\n\r\n//*selectors\r\nconst reportsSelector = (state: Store) => state.reports;\r\n\r\nexport const activeReportSelector = createSelector([reportsSelector], reports => {\r\n return reports['activeReport'];\r\n});\r\nexport const filterDataSelector = createSelector([reportsSelector], reports => {\r\n return reports['filterData'];\r\n});\r\n\r\nexport const filterDataBySystemGroupSelector = createSelector(\r\n [filterDataSelector, systemGroupSelector],\r\n (filterData, systemGroup) => {\r\n return filterData[systemGroup];\r\n }\r\n);\r\nexport const activeSystemsBySystemGroupSelector = createSelector(\r\n [filterDataBySystemGroupSelector],\r\n filterDataByGroup => {\r\n return filterDataByGroup['activeSystems'];\r\n }\r\n);\r\nexport const endDateSelector = createSelector([filterDataBySystemGroupSelector], filterData => {\r\n return filterData['endDate'];\r\n});\r\nexport const startDateSelector = createSelector([filterDataBySystemGroupSelector], filterData => {\r\n return filterData['startDate'];\r\n});\r\nexport const allSystemsSelector = createSelector(\r\n [filterDataBySystemGroupSelector],\r\n filterData => filterData['systems']\r\n);\r\nexport const allSystemSerialsSelector = createSelector([allSystemsSelector], systems =>\r\n systems.map(system => system.name)\r\n);\r\n//*selectors\r\nfunction apiFilterDatesNormalize(\r\n state: ReportsFilterDataByTypePartial,\r\n apiData: ReportsFiltersDatesApi\r\n): ReportsFilterDataByTypePartial {\r\n const result: ReportsFilterDataByTypePartial = {};\r\n apiData.dateFilters.forEach(dateFilter => {\r\n const { startDate, endDate } = dateFilter.dateRange;\r\n //*by requirments if end and start date === null - it means empty state page should be shown and we need to set instead of null some value to calculate empty state later in PBIREPORTSPAGE\r\n const isDateRangeNull = isStartEndDateOnNull(startDate, endDate);\r\n const initDate = new Date(0);\r\n const start = isDateRangeNull ? initDate : parse(startDate, 'yyyyMMdd', new Date());\r\n const end = isDateRangeNull ? initDate : parse(endDate, 'yyyyMMdd', new Date());\r\n const range = {\r\n startDate: start,\r\n endDate: end,\r\n };\r\n result[dateFilter.systemGroup] = range;\r\n });\r\n return result;\r\n}\r\nfunction isStartEndDateOnNull(startDate, endDate) {\r\n //*by last server changes null and empty string are possible. both of them are sings of empty state\r\n if (startDate === null || endDate === null || startDate === '' || endDate === '') {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n}\r\nfunction apiFilterSitesNormalize(\r\n state: ReportsFilterDataByTypePartial,\r\n apiData: ReportsFilterSitesApi\r\n): ReportsFilterDataByTypePartial {\r\n const result: ReportsFilterDataByTypePartial = {};\r\n\r\n apiData.totalSiteExtensions.forEach(extention => {\r\n const sites: ReportSite[] = [];\r\n const models: ReportModel[] = [];\r\n const systems: ReportSystem[] = [];\r\n extention.siteExtensions.forEach(site => {\r\n sites.push({\r\n id: site.name,\r\n name: site.name,\r\n });\r\n\r\n site.modelFilters.forEach(model => {\r\n const modelId = `${site.name}_${model.name}`;\r\n\r\n models.push({\r\n id: modelId,\r\n name: model.name,\r\n siteId: site.name,\r\n });\r\n\r\n model.systemFilters.forEach(system => {\r\n systems.push({\r\n id: system.name,\r\n name: system.serialNumber,\r\n siteId: site.name,\r\n modelId,\r\n systemNickName: system.systemNickName,\r\n });\r\n });\r\n });\r\n });\r\n result[extention.systemGroup] = { sites, models, systems };\r\n });\r\n\r\n return result;\r\n}\r\n\r\nexport const filterEmptyStrings = (arr: string[]) => {\r\n return arr.filter(item => item !== '' && item !== null);\r\n};\r\n\r\ntype BuildCurrentStateByType = {\r\n [key in UserSystemGroupStrings]?: { activeSystems: string };\r\n};\r\n","export const updateFilterDataStateWithEverReportedStatus = (oldState, action) => {\r\n if (!oldState) {\r\n return;\r\n }\r\n const result = {};\r\n const systemGroups = Object.keys(oldState);\r\n\r\n systemGroups.forEach(sGroup => {\r\n const currentGroupWithEveReportedStatus = action.payload.reportedSystems.find(\r\n group => group.systemGroup === sGroup\r\n );\r\n const oldGroupState = oldState[sGroup];\r\n const updatedSystems = new Array();\r\n oldGroupState.systems.forEach(system => {\r\n const systemWithStatus = currentGroupWithEveReportedStatus.reportedSystemsData.find(\r\n s => s.serialNumber === system.name\r\n );\r\n\r\n const updatedSystem = {\r\n ...system,\r\n isEverReported: !!systemWithStatus?.isEverReported,\r\n };\r\n updatedSystems.push(updatedSystem);\r\n });\r\n const newGroupState = { ...oldGroupState, systems: updatedSystems };\r\n result[sGroup] = newGroupState;\r\n });\r\n return result;\r\n};\r\n","import {\r\n addDays,\r\n endOfQuarter,\r\n endOfWeek,\r\n endOfYear,\r\n isSameDay,\r\n isSameMonth,\r\n isWithinInterval,\r\n startOfQuarter,\r\n startOfWeek,\r\n startOfYear,\r\n subDays,\r\n} from 'date-fns';\r\nimport { CustomTimeFrameProperties } from 'actions/reportFilterActions';\r\nimport { TimeFrame, TimeFrameEnum } from 'models/ReportData';\r\nimport { convertSecondsToHours } from './conversions';\r\nimport { globalColors } from 'globalStyle';\r\nimport { isFuturePeriod } from './chartUtils';\r\nimport { AggregatedRecord } from 'components/Overview/Charts/ProductionChart';\r\nimport { UserSystemGroup, UserSystemGroupStrings } from 'store/storeTypes';\r\n\r\nconst ticksName = {\r\n day: ['0:00', '4:00', '8:00', '12:00', '16:00', '20:00', 'flag'],\r\n week: ['MON', 'TUE', 'WED', 'THU', 'FRI', 'SAT', 'SUN'],\r\n};\r\nexport const getLegendText = timeframe => {\r\n if (timeframe === 'day') {\r\n return {\r\n total: 'Selected day',\r\n totalAvg: 'Same Day, Previous week',\r\n };\r\n }\r\n if (timeframe === 'week') {\r\n return {\r\n total: 'Selected week',\r\n totalAvg: 'Previous week',\r\n };\r\n }\r\n if (timeframe === TimeFrameEnum.custom) {\r\n return {\r\n total: 'Selected period',\r\n totalAvg: 'Previuos period',\r\n };\r\n } else {\r\n return {\r\n total: 'Today',\r\n totalAvg: 'Same Day, Previous week',\r\n };\r\n }\r\n};\r\nexport function getTicks(\r\n index: number,\r\n width: number,\r\n intervalsCount: number,\r\n isWeek: boolean\r\n): { tickXcoordinate: number; tickText: string; textXCoordinate: number } {\r\n const currentTickArray = isWeek ? ticksName.week : ticksName.day;\r\n const RANGE = width / intervalsCount;\r\n const OFFSET = 36;\r\n const TEXT_OFFSET = -14;\r\n const START = OFFSET + 13;\r\n const END = width + OFFSET + 11;\r\n if (index === 0) {\r\n return {\r\n tickXcoordinate: START,\r\n tickText: currentTickArray[index],\r\n textXCoordinate: START + TEXT_OFFSET + 5,\r\n };\r\n }\r\n if (index === 6) {\r\n const weekLastDayOffset = isWeek ? -9 : 0;\r\n return {\r\n tickXcoordinate: END + 2,\r\n tickText: currentTickArray[index],\r\n textXCoordinate: END + 2 + TEXT_OFFSET + weekLastDayOffset,\r\n };\r\n }\r\n\r\n return {\r\n tickXcoordinate: START + index * RANGE,\r\n tickText: currentTickArray[index],\r\n textXCoordinate: START + index * RANGE + TEXT_OFFSET,\r\n };\r\n}\r\nexport function getTicksSpeedChart(\r\n index: number,\r\n width: number,\r\n intervalsCount: number,\r\n isWeek: boolean\r\n): { tickXcoordinate: number; tickText: string; textXCoordinate: number } {\r\n const currentTickArray = isWeek ? ticksName.week : ticksName.day;\r\n const RANGE = isWeek ? (width - 40) / intervalsCount : (width - 5) / intervalsCount;\r\n const TEXT_OFFSET = -14;\r\n const START = isWeek ? 67 : 51;\r\n const END = isWeek ? width + 25 : width + 46;\r\n if (index === 0) {\r\n return {\r\n tickXcoordinate: START,\r\n tickText: currentTickArray[index],\r\n textXCoordinate: START + TEXT_OFFSET + 5,\r\n };\r\n }\r\n if (index === 6) {\r\n const weekLastDayOffset = isWeek ? -9 : 0;\r\n return {\r\n tickXcoordinate: END + 2,\r\n tickText: currentTickArray[index],\r\n textXCoordinate: END + 2 + TEXT_OFFSET + weekLastDayOffset,\r\n };\r\n }\r\n\r\n return {\r\n tickXcoordinate: START + index * RANGE,\r\n tickText: currentTickArray[index],\r\n textXCoordinate: START + index * RANGE + TEXT_OFFSET,\r\n };\r\n}\r\nexport function getTicksAvailabilityChart(\r\n index: number,\r\n width: number,\r\n intervalsCount: number,\r\n isWeek: boolean\r\n): { tickXcoordinate: number; tickText: string; textXCoordinate: number } {\r\n const currentTickArray = isWeek ? ticksName.week : ticksName.day;\r\n const RANGE = width / intervalsCount;\r\n const TEXT_OFFSET = -14;\r\n const START = 12;\r\n const END = width + 7;\r\n if (index === 0) {\r\n const xOffset = isWeek ? -2 : -2;\r\n return {\r\n tickXcoordinate: START + xOffset,\r\n tickText: currentTickArray[index],\r\n textXCoordinate: START + TEXT_OFFSET + 10,\r\n };\r\n }\r\n if (index === 1) {\r\n const xOffset = isWeek ? -3 : 0;\r\n\r\n return {\r\n tickXcoordinate: START + index * RANGE + xOffset,\r\n tickText: currentTickArray[index],\r\n textXCoordinate: START + index * RANGE + TEXT_OFFSET,\r\n };\r\n }\r\n if (index === 2) {\r\n const xOffset = isWeek ? -3 : 1;\r\n\r\n return {\r\n tickXcoordinate: START + index * RANGE + xOffset,\r\n tickText: currentTickArray[index],\r\n textXCoordinate: START + index * RANGE + TEXT_OFFSET,\r\n };\r\n }\r\n if (index === 3) {\r\n const xOffset = isWeek ? -3 : 3;\r\n\r\n return {\r\n tickXcoordinate: START + index * RANGE + xOffset,\r\n tickText: currentTickArray[index],\r\n textXCoordinate: START + index * RANGE + TEXT_OFFSET,\r\n };\r\n }\r\n if (index === 4) {\r\n const xOffset = isWeek ? -4 : +5;\r\n\r\n return {\r\n tickXcoordinate: START + index * RANGE + xOffset,\r\n tickText: currentTickArray[index],\r\n textXCoordinate: START + index * RANGE + TEXT_OFFSET,\r\n };\r\n }\r\n if (index === 5) {\r\n const xOffset = isWeek ? -4 : +7;\r\n\r\n return {\r\n tickXcoordinate: START + index * RANGE + xOffset,\r\n tickText: currentTickArray[index],\r\n textXCoordinate: START + index * RANGE + TEXT_OFFSET,\r\n };\r\n }\r\n if (index === 6) {\r\n const weekLastDayOffset = isWeek ? -9 : 0;\r\n const xOffset = isWeek ? +2 : +2;\r\n\r\n return {\r\n tickXcoordinate: END + xOffset,\r\n tickText: currentTickArray[index],\r\n textXCoordinate: END + 2 + TEXT_OFFSET + weekLastDayOffset,\r\n };\r\n }\r\n\r\n return {\r\n tickXcoordinate: START + index * RANGE,\r\n tickText: currentTickArray[index],\r\n textXCoordinate: START + index * RANGE + TEXT_OFFSET,\r\n };\r\n}\r\nexport type ChartsHeadersForCustomTimeframeType = {\r\n timeframe: TimeFrame;\r\n customTimeframeProperties: CustomTimeFrameProperties;\r\n};\r\nexport const getDescriptionTextForCustomTimeframe = ({\r\n timeframe,\r\n customTimeframeProperties,\r\n}: ChartsHeadersForCustomTimeframeType) => {\r\n if (timeframe !== TimeFrameEnum.custom) {\r\n return;\r\n } else {\r\n const {\r\n customTimeFrameStartDate,\r\n customTimeFrameEndDate,\r\n customTimeFrameStartHour,\r\n customTimeFrameEndHour,\r\n } = customTimeframeProperties;\r\n customTimeFrameStartDate.setHours(customTimeFrameStartHour);\r\n customTimeFrameEndDate.setHours(customTimeFrameEndHour);\r\n const diffInDays =\r\n (customTimeFrameEndDate.getTime() - customTimeFrameStartDate.getTime()) /\r\n (1000 * 60 * 60 * 24);\r\n return diffInDays >= 8 ? 'From last year' : 'From last week';\r\n }\r\n};\r\ntype AvailabilityTotalDurationReportedTextArgType = {\r\n availabilityTotalDurationReported: number;\r\n availabilityTotalDurationReportedAvg: number;\r\n};\r\ntype AvailabilityTotalDurationReportedTextResultType = {\r\n availabilityTotalDurationReportedText: string;\r\n availabilityTotalDurationReportedAvgText: string;\r\n};\r\nexport const getAvailabilityTotalDurationReportedText = ({\r\n availabilityTotalDurationReported,\r\n availabilityTotalDurationReportedAvg,\r\n}: AvailabilityTotalDurationReportedTextArgType): AvailabilityTotalDurationReportedTextResultType => {\r\n //* in case of negative values, the text should be 'Not Reporting'\r\n const result = {\r\n availabilityTotalDurationReportedText: 'Not Reporting',\r\n availabilityTotalDurationReportedAvgText: 'Not Reporting',\r\n };\r\n if (availabilityTotalDurationReported >= 0) {\r\n result.availabilityTotalDurationReportedText = convertSecondsToHours(\r\n availabilityTotalDurationReported\r\n );\r\n }\r\n if (availabilityTotalDurationReportedAvg >= 0) {\r\n result.availabilityTotalDurationReportedAvgText = convertSecondsToHours(\r\n availabilityTotalDurationReportedAvg\r\n );\r\n }\r\n return result;\r\n};\r\nexport enum OverviewTopCardNames {\r\n averageProductionRate = 'averageProductionRate',\r\n productivity = 'productivity',\r\n averageAvailability = 'averageAvailability',\r\n}\r\ntype GetTopCardArrowColorArgsType = {\r\n cardName: string;\r\n trend: number;\r\n description: string;\r\n};\r\nexport const getTopCardArrowColor = ({\r\n cardName,\r\n trend,\r\n description,\r\n}: GetTopCardArrowColorArgsType): string => {\r\n //* special logic for each card\r\n if (cardName === OverviewTopCardNames.averageProductionRate) {\r\n if (description === 'Dark Impressions') {\r\n //* those arrows are always gray\r\n return globalColors.regular.arrows.gray;\r\n }\r\n if (description === 'Avg. Handling Time') {\r\n //*if trend is negative - green , if positive - red\r\n return trend < 0 ? globalColors.regular.arrows.green : globalColors.regular.arrows.red;\r\n }\r\n if (description === 'Avg. Utilization') {\r\n //*if trend is negative - red , if positive - green\r\n return trend < 0 ? globalColors.regular.arrows.red : globalColors.regular.arrows.green;\r\n }\r\n if (description === 'Preparation') {\r\n //*if trend is negative - green , if positive - red\r\n return trend < 0 ? globalColors.regular.arrows.green : globalColors.regular.arrows.red;\r\n }\r\n }\r\n if (cardName === OverviewTopCardNames.productivity) {\r\n //*always gray arrow\r\n return globalColors.regular.arrows.gray;\r\n }\r\n if (cardName === OverviewTopCardNames.averageAvailability) {\r\n //*if description is Error Dur.\r\n if (description === 'Error Dur.') {\r\n //*if trend is negative - green , if positive - red\r\n return trend < 0 ? globalColors.regular.arrows.green : globalColors.regular.arrows.red;\r\n }\r\n //*if description is Maintenance Dur.\r\n if (description === 'Maintenance Dur.') {\r\n //*if trend is negative - green , if positive - red\r\n return trend < 0 ? globalColors.regular.arrows.green : globalColors.regular.arrows.red;\r\n }\r\n //*if description is Maintenance Dur.\r\n if (description === 'Maintenance Dur.') {\r\n //*if trend is negative - green , if positive - red\r\n return trend < 0 ? globalColors.regular.arrows.green : globalColors.regular.arrows.red;\r\n }\r\n }\r\n return 'black';\r\n};\r\ntype ChartRecord = {\r\n date: string;\r\n total: number;\r\n totalAvg: number;\r\n granularity: string;\r\n isNotReported?: boolean;\r\n isFuturePeriod?: boolean;\r\n Total?: number;\r\n};\r\nexport const normalizeApolloAllChartsRecords = (\r\n records: ChartRecord[] | AggregatedRecord[],\r\n lastUpdate: Date,\r\n selectedSystemGroup: UserSystemGroupStrings\r\n): ChartRecord[] => {\r\n if (!records) return [];\r\n if (selectedSystemGroup !== UserSystemGroup.Apollo) {\r\n return records as ChartRecord[];\r\n }\r\n return records.map(record => {\r\n //*in any case check totalAvg on -1;\r\n if (record.totalAvg === -1) {\r\n delete record.totalAvg;\r\n record.isNotReported = true;\r\n record.isFuturePeriod = false;\r\n }\r\n\r\n //*here possible to get both cases -1 and undefined - in that case we have to detect is it future period or not. in any case we have to remove record.total field fi exitst, and mark this record as isNotReported or isFuturePeriod\r\n const granularity = record.granularity;\r\n const isFuture = isFuturePeriod({\r\n date: record.date,\r\n granularity: granularity,\r\n lastUpdate: lastUpdate,\r\n });\r\n if (isFuture) {\r\n //*in overview there is total fields with small 't'\r\n delete record.total;\r\n //*in job analysis Total field starts with capital 'T'\r\n delete record.Total;\r\n //*if it is future than it is 100 % not notReported status\r\n record.isFuturePeriod = isFuture;\r\n }\r\n\r\n return record;\r\n });\r\n};\r\ntype IsDateInSelectedRangeArgType = {\r\n selectedDay: Date;\r\n timeFrame: TimeFrame;\r\n customTimeframeProperties: CustomTimeFrameProperties;\r\n endDate?: Date;\r\n maxKeepAlive?: Date;\r\n maxKeepAliveUtc?: Date;\r\n};\r\n\r\nexport const isDateInCurrentSelectedRange = ({\r\n selectedDay,\r\n timeFrame,\r\n customTimeframeProperties,\r\n endDate,\r\n}: IsDateInSelectedRangeArgType): boolean => {\r\n if (timeFrame === TimeFrameEnum.day) {\r\n //* in real time range - +- 1 day from today\r\n const startRealTimeRange = subDays(new Date(), 1);\r\n const endRealTimeRange = addDays(new Date(), 1);\r\n\r\n return isWithinInterval(selectedDay, { start: startRealTimeRange, end: endRealTimeRange });\r\n }\r\n if (timeFrame === TimeFrameEnum.week) {\r\n const today = new Date();\r\n const startOfTodayWeek = startOfWeek(today, { weekStartsOn: 1 });\r\n const endOfTodayWeek = endOfWeek(today, { weekStartsOn: 1 });\r\n return (\r\n isWithinInterval(selectedDay, { start: startOfTodayWeek, end: endOfTodayWeek }) &&\r\n isSameDay(endDate, today)\r\n );\r\n }\r\n if (timeFrame === TimeFrameEnum.month) {\r\n const today = new Date();\r\n return isSameMonth(selectedDay, today) && isSameDay(endDate, today);\r\n }\r\n if (timeFrame === TimeFrameEnum.quarter) {\r\n const today = new Date();\r\n const todayQuarterStartDate = startOfQuarter(today);\r\n const todayQuarterEndDate = endOfQuarter(today);\r\n\r\n const isInCurrentQuarter = isWithinInterval(selectedDay, {\r\n start: todayQuarterStartDate,\r\n end: todayQuarterEndDate,\r\n });\r\n return isInCurrentQuarter && isSameDay(endDate, today);\r\n }\r\n if (timeFrame === TimeFrameEnum.year) {\r\n const today = new Date();\r\n const todayYearStart = startOfYear(today);\r\n const todayYearEnd = endOfYear(today);\r\n const isInCurrentYear = isWithinInterval(selectedDay, {\r\n start: todayYearStart,\r\n end: todayYearEnd,\r\n });\r\n\r\n return isInCurrentYear && isSameDay(endDate, today);\r\n }\r\n if (timeFrame === TimeFrameEnum.custom) {\r\n //* if todayDate is equal to customTimeFrameEndDate\r\n return isSameDay(new Date(), customTimeframeProperties.customTimeFrameEndDate);\r\n }\r\n\r\n return false;\r\n};\r\n","import { createAsyncAction } from 'typesafe-actions';\r\nimport { IOverviewRequest } from '../models/OverviewData';\r\nimport { authService } from 'services/AuthProvider';\r\nimport { makeApiUrl } from 'actions/_shared/utils';\r\nimport apiAction from 'actions/_shared/apiAction';\r\nimport {\r\n UserSystemGroup,\r\n OverviewCards,\r\n OverviewAchievements,\r\n OverviewCharts,\r\n UserSystemGroupStrings,\r\n} from 'store/storeTypes';\r\nimport { getCustomSearchParameters } from 'helpers/date';\r\nimport { normalizeGraphData } from 'helpers/apiCoversion';\r\nimport { sortByGranularity } from 'helpers/sorting';\r\nimport { getRealTimeHeaders } from './_shared/realTimeHeaders';\r\n\r\nconst converter = (data: any, map: any, systemGroup: UserSystemGroupStrings | undefined) => {\r\n if (!systemGroup) {\r\n return {};\r\n }\r\n const objectConverted: any = {};\r\n Object.keys(data).forEach(key => {\r\n if (!objectConverted[systemGroup]) objectConverted[systemGroup] = {};\r\n if (map[key]) {\r\n objectConverted[systemGroup][map[key]] = data[key];\r\n }\r\n });\r\n\r\n return objectConverted;\r\n};\r\n\r\nexport const getOverviewProductionCardsAC = createAsyncAction(\r\n 'GET_OVERVIEW_PRODUCTION_CARDS_STARTED',\r\n 'GET_OVERVIEW_PRODUCTION_CARDS_SUCCESS',\r\n 'GET_OVERVIEW_PRODUCTION_CARDS_FAILED'\r\n)();\r\n\r\nexport const overviewCardsRequest = (\r\n { day, week, systems, systemGroup }: IOverviewRequest,\r\n isSilent = false\r\n) => {\r\n const url = makeApiUrl('/api/overview-report/overview-cards');\r\n const { isAuthenticated, idTokenPayload } = authService;\r\n if (isAuthenticated() && idTokenPayload && idTokenPayload.sub)\r\n return apiAction({\r\n request: {\r\n url,\r\n method: 'POST',\r\n params: {\r\n day,\r\n week,\r\n systemGroup,\r\n },\r\n data: {\r\n systems,\r\n },\r\n },\r\n logic: {\r\n onFailed: (error, dispatch) => dispatch(getOverviewProductionCardsAC.failure(error)),\r\n onStarted: isSilent\r\n ? dispatch => {}\r\n : dispatch => dispatch(getOverviewProductionCardsAC.request({})),\r\n onSuccess: (data, dispatch) => {\r\n let dataWithoutTitles = {};\r\n Object.keys(data).forEach(objectTitle => {\r\n if (objectTitle === 'productivity') {\r\n data[objectTitle]['productivityUtilization'] = data[objectTitle]['utilization'];\r\n delete data[objectTitle]['utilization'];\r\n }\r\n dataWithoutTitles = { ...dataWithoutTitles, ...data[objectTitle] };\r\n });\r\n const mapApiToState = {\r\n totalProduction: 'totalProduction',\r\n productionTrend: 'productionTrend',\r\n productionRate: 'productionRate',\r\n productionRateTrend: 'productionRateTrend',\r\n loadingTime: 'loadingTime',\r\n loadingTimeTrend: 'loadingTimeTrend',\r\n darkImpressionsPercentage: 'darkImpressionsPercentage',\r\n darkImpressionsTrend: 'darkImpressionsTrend',\r\n trendUtilization: 'trendUtilization',\r\n trendPreparation: 'trendPreparation',\r\n utilization: 'utilization',\r\n preparation: 'preparation',\r\n productivity: 'productivity',\r\n productivityChange: 'productivityChange',\r\n printingTime: 'printingTime',\r\n printingTimeTrend: 'printingTimeTrend',\r\n productivityUtilization: 'productivityUtilization',\r\n utilizationTrend: 'productivityUtilizationTrend',\r\n availability: 'availability',\r\n averageAvailabilityTrend: 'availabilityTrend',\r\n errorDurationSeconds: 'errorDuration',\r\n errorDurationTrend: 'errorDurationTrend',\r\n maintenanceDurationSeconds: 'maintenanceDuration',\r\n maintenanceDurationTrend: 'maintenanceDurationTrend',\r\n };\r\n const converted = converter(\r\n dataWithoutTitles,\r\n mapApiToState,\r\n systemGroup\r\n ) as OverviewCards;\r\n Object.keys(UserSystemGroup).forEach(systemGroup => {\r\n if (converted[systemGroup]) {\r\n // converted[systemGroup].weeklyPercentage =\r\n // converted[systemGroup].weeklyPercentage * 100;\r\n // converted[systemGroup].yearlyPercentage =\r\n // converted[systemGroup].yearlyPercentage * 100;\r\n converted[systemGroup].darkImpressionsPercentage = (\r\n converted[systemGroup].darkImpressionsPercentage * 100\r\n ).toFixed(2);\r\n converted[systemGroup].utilization = (\r\n converted[systemGroup].utilization * 100\r\n ).toFixed(2);\r\n converted[systemGroup].preparation = (\r\n converted[systemGroup].preparation * 100\r\n ).toFixed(2);\r\n converted[systemGroup].productivityUtilization = (\r\n converted[systemGroup].productivityUtilization * 100\r\n ).toFixed(2);\r\n }\r\n });\r\n dispatch(getOverviewProductionCardsAC.success(converted));\r\n },\r\n },\r\n });\r\n};\r\n\r\nexport const getOverviewImperssionsAvailabilityCardsAC = createAsyncAction(\r\n 'GET_OVERVIEW_IMPRESSIONS_AVAILABILITY_CARDS_STARTED',\r\n 'GET_OVERVIEW_IMPRESSIONS_AVAILABILITY_CARDS_SUCCESS',\r\n 'GET_OVERVIEW_IMPRESSIONS_AVAILABILITY_CARDS_FAILED'\r\n), Error>();\r\n\r\nexport const overviewImperssionsAvailabilityCardsRequest = (\r\n { day, week, systems, custom, systemGroup }: IOverviewRequest,\r\n isSilent = false\r\n) => {\r\n const url = makeApiUrl('/api/overview-report/impressions-availability-cards');\r\n const { isAuthenticated, idTokenPayload } = authService;\r\n if (isAuthenticated() && idTokenPayload && idTokenPayload.sub) {\r\n const customTimeframeParameters = getCustomSearchParameters(custom);\r\n return apiAction({\r\n request: {\r\n url,\r\n method: 'POST',\r\n params: {\r\n day,\r\n week,\r\n custom: customTimeframeParameters,\r\n systemGroup,\r\n },\r\n data: {\r\n systems,\r\n },\r\n },\r\n logic: {\r\n onFailed: (error, dispatch) =>\r\n dispatch(getOverviewImperssionsAvailabilityCardsAC.failure(error)),\r\n onStarted: isSilent\r\n ? dispatch => {}\r\n : dispatch => dispatch(getOverviewImperssionsAvailabilityCardsAC.request({})),\r\n onSuccess: (data, dispatch) => {\r\n let dataWithoutTitles = {};\r\n Object.keys(data).forEach(objectTitle => {\r\n if (objectTitle === 'productivity') {\r\n data[objectTitle]['productivityUtilization'] = data[objectTitle]['utilization'];\r\n delete data[objectTitle]['utilization'];\r\n }\r\n dataWithoutTitles = { ...dataWithoutTitles, ...data[objectTitle] };\r\n });\r\n const mapApiToState = {\r\n totalProduction: 'totalProduction',\r\n productionTrend: 'productionTrend',\r\n trendUtilization: 'trendUtilization',\r\n trendPreparation: 'trendPreparation',\r\n preparation: 'preparation',\r\n productivityUtilization: 'productivityUtilization',\r\n availability: 'availability',\r\n averageAvailabilityTrend: 'availabilityTrend',\r\n errorDurationSeconds: 'errorDuration',\r\n errorDurationTrend: 'errorDurationTrend',\r\n maintenanceDurationSeconds: 'maintenanceDuration',\r\n maintenanceDurationTrend: 'maintenanceDurationTrend',\r\n availabilityTotalDurationReported: 'availabilityTotalDurationReported',\r\n isNotReportingPeriod: 'isNotReportingPeriod',\r\n };\r\n const converted = converter(\r\n dataWithoutTitles,\r\n mapApiToState,\r\n systemGroup\r\n ) as OverviewCards;\r\n dispatch(getOverviewImperssionsAvailabilityCardsAC.success(converted));\r\n },\r\n },\r\n });\r\n }\r\n};\r\n\r\nexport const getOverviewProductionRateCardAC = createAsyncAction(\r\n 'GET_OVERVIEW_PRODUCTION_RATE_CARDS_STARTED',\r\n 'GET_OVERVIEW_PRODUCTION_RATE_CARDS_SUCCESS',\r\n 'GET_OVERVIEW_PRODUCTION_RATE_CARDS_FAILED'\r\n), Error>();\r\n\r\nexport const overviewProductionRateRequest = (\r\n { day, week, systems, custom, systemGroup }: IOverviewRequest,\r\n isSilent = false\r\n) => {\r\n const url = makeApiUrl('/api/overview-report/production-rate');\r\n const { isAuthenticated, idTokenPayload } = authService;\r\n if (isAuthenticated() && idTokenPayload && idTokenPayload.sub) {\r\n const customTimeframeParameters = getCustomSearchParameters(custom);\r\n\r\n return apiAction({\r\n request: {\r\n url,\r\n method: 'POST',\r\n params: {\r\n day,\r\n week,\r\n custom: customTimeframeParameters,\r\n systemGroup,\r\n },\r\n data: {\r\n systems,\r\n },\r\n },\r\n logic: {\r\n onFailed: (error, dispatch) => dispatch(getOverviewProductionRateCardAC.failure(error)),\r\n onStarted: isSilent\r\n ? dispatch => {}\r\n : dispatch => dispatch(getOverviewProductionRateCardAC.request({})),\r\n onSuccess: (data, dispatch) => {\r\n const mapApiToState = {\r\n productionRate: 'productionRate',\r\n productionRateTrend: 'productionRateTrend',\r\n loadingTime: 'loadingTime',\r\n loadingTimeTrend: 'loadingTimeTrend',\r\n darkImpressionsPercentage: 'darkImpressionsPercentage',\r\n darkImpressionsTrend: 'darkImpressionsTrend',\r\n trendUtilization: 'trendUtilization',\r\n trendPreparation: 'trendPreparation',\r\n utilization: 'utilization',\r\n preparation: 'preparation',\r\n };\r\n const converted = converter(data, mapApiToState, systemGroup) as OverviewCards;\r\n Object.keys(UserSystemGroup).forEach(systemGroup => {\r\n if (converted[systemGroup]) {\r\n converted[systemGroup].darkImpressionsPercentage = (\r\n converted[systemGroup].darkImpressionsPercentage * 100\r\n ).toFixed(2);\r\n converted[systemGroup].utilization = (\r\n converted[systemGroup].utilization * 100\r\n ).toFixed(2);\r\n converted[systemGroup].preparation = (\r\n converted[systemGroup].preparation * 100\r\n ).toFixed(2);\r\n }\r\n });\r\n dispatch(getOverviewProductionRateCardAC.success(converted));\r\n },\r\n },\r\n });\r\n }\r\n};\r\n\r\nexport const getOverviewProductivityCardAC = createAsyncAction(\r\n 'GET_OVERVIEW_PRODUCTIVITY_CARDS_STARTED',\r\n 'GET_OVERVIEW_PRODUCTIVITY_CARDS_SUCCESS',\r\n 'GET_OVERVIEW_PRODUCTIVITY_CARDS_FAILED'\r\n), Error>();\r\n\r\nexport const overviewProductivityRequest = (\r\n { day, week, systems, custom, systemGroup }: IOverviewRequest,\r\n isSilent = false\r\n) => {\r\n const url = makeApiUrl('/api/overview-report/productivity');\r\n const { isAuthenticated, idTokenPayload } = authService;\r\n if (isAuthenticated() && idTokenPayload && idTokenPayload.sub) {\r\n const customTimeframeParameters = getCustomSearchParameters(custom);\r\n return apiAction({\r\n request: {\r\n url,\r\n method: 'POST',\r\n params: {\r\n day,\r\n week,\r\n custom: customTimeframeParameters,\r\n systemGroup,\r\n },\r\n data: {\r\n systems,\r\n },\r\n },\r\n logic: {\r\n onFailed: (error, dispatch) => dispatch(getOverviewProductivityCardAC.failure(error)),\r\n onStarted: isSilent\r\n ? dispatch => {}\r\n : dispatch => dispatch(getOverviewProductivityCardAC.request({})),\r\n onSuccess: (data, dispatch) => {\r\n const mapApiToState = {\r\n productivity: 'productivity',\r\n productivityChange: 'productivityChange',\r\n printingTime: 'printingTime',\r\n printingTimeTrend: 'printingTimeTrend',\r\n utilization: 'productivityUtilization',\r\n utilizationTrend: 'productivityUtilizationTrend',\r\n };\r\n const converted = converter(data, mapApiToState, systemGroup) as OverviewCards;\r\n Object.keys(UserSystemGroup).forEach(systemGroup => {\r\n if (converted[systemGroup]) {\r\n converted[systemGroup].productivityUtilization = (\r\n converted[systemGroup].productivityUtilization * 100\r\n ).toFixed(2);\r\n }\r\n });\r\n dispatch(getOverviewProductivityCardAC.success(converted));\r\n },\r\n },\r\n });\r\n }\r\n};\r\n\r\nexport const getOverviewAchievementsAC = createAsyncAction(\r\n 'GET_OVERVIEW_ACHIEVEMENTS_STARTED',\r\n 'GET_OVERVIEW_ACHIEVEMENTS_SUCCESS',\r\n 'GET_OVERVIEW_ACHIEVEMENTS_FAILED'\r\n)();\r\n\r\nexport const overviewAchievementsRequest = (\r\n { day, week, systems, custom, systemGroup }: IOverviewRequest,\r\n\r\n isSilent = false\r\n) => {\r\n const url = makeApiUrl('/api/overview-report/achievements');\r\n const { isAuthenticated, idTokenPayload } = authService;\r\n if (isAuthenticated() && idTokenPayload && idTokenPayload.sub) {\r\n const customTimeframeParameters = getCustomSearchParameters(custom);\r\n\r\n return apiAction({\r\n request: {\r\n url,\r\n method: 'POST',\r\n params: {\r\n day,\r\n week,\r\n custom: customTimeframeParameters,\r\n systemGroup,\r\n },\r\n data: {\r\n systems,\r\n },\r\n },\r\n logic: {\r\n onFailed: (error, dispatch) => dispatch(getOverviewAchievementsAC.failure(error)),\r\n onStarted: isSilent\r\n ? dispatch => {}\r\n : dispatch => dispatch(getOverviewAchievementsAC.request({})),\r\n onSuccess: (data, dispatch) => {\r\n const mapApiToState = {\r\n weekRecord: 'record',\r\n weeklyGoal: 'weeklyGoal',\r\n weeklyActual: 'weeklyCompleted',\r\n weeklyPercentage: 'weeklyPercentage',\r\n yearlyGoal: 'yearlyGoal',\r\n yearlyActual: 'yearlyCompleted',\r\n yearlyPercentage: 'yearlyPercentage',\r\n };\r\n const converted = converter(data, mapApiToState, systemGroup) as OverviewAchievements;\r\n Object.keys(UserSystemGroup).forEach(systemGroup => {\r\n if (converted[systemGroup]) {\r\n converted[systemGroup].weeklyPercentage =\r\n converted[systemGroup].weeklyPercentage * 100;\r\n converted[systemGroup].yearlyPercentage =\r\n converted[systemGroup].yearlyPercentage * 100;\r\n }\r\n });\r\n dispatch(getOverviewAchievementsAC.success(converted));\r\n },\r\n },\r\n });\r\n }\r\n};\r\n\r\nexport const getOverviewProductionAllChartAC = createAsyncAction(\r\n 'GET_OVERVIEW_PRODUCTION_ALL_CHART_STARTED',\r\n 'GET_OVERVIEW_PRODUCTION_ALL_CHART_SUCCESS',\r\n 'GET_OVERVIEW_PRODUCTION_ALL_CHART_FAILED'\r\n), Error>();\r\nexport const overviewProductionAllChartsRequest = (\r\n { day, week, systems, systemGroup }: IOverviewRequest,\r\n isSilent = false\r\n) => {\r\n const url = makeApiUrl('/api/overview-report/overview-graphs');\r\n const { isAuthenticated, idTokenPayload } = authService;\r\n if (isAuthenticated() && idTokenPayload && idTokenPayload.sub)\r\n return apiAction({\r\n request: {\r\n url,\r\n method: 'POST',\r\n params: {\r\n day,\r\n week,\r\n systemGroup,\r\n },\r\n data: {\r\n systems,\r\n },\r\n },\r\n logic: {\r\n onFailed: (error, dispatch) => dispatch(getOverviewProductionAllChartAC.failure(error)),\r\n\r\n onStarted: isSilent\r\n ? dispatch => {}\r\n : dispatch => dispatch(getOverviewProductionAllChartAC.request({})),\r\n onSuccess: (data, dispatch) => {\r\n const mapApiToState = {\r\n totalProductionGraph: 'productionChart',\r\n productionByHourGraph: 'speedChart',\r\n availability: 'availabilityChart',\r\n utilization: 'utilizationChart',\r\n };\r\n const mappedData = {};\r\n Object.keys(data).forEach(objectTitle => {\r\n mappedData[objectTitle] = data[objectTitle].records;\r\n });\r\n dispatch(\r\n getOverviewProductionAllChartAC.success(\r\n converter(mappedData, mapApiToState, systemGroup)\r\n )\r\n );\r\n },\r\n },\r\n });\r\n};\r\n\r\nexport const getOverviewImpressionsAvailabilityChartsAC = createAsyncAction(\r\n 'GET_OVERVIEW_IMPRESSIONS_AVAILABILITY_CHART_STARTED',\r\n 'GET_OVERVIEW_IMPRESSIONS_AVAILABILITY_CHART_SUCCESS',\r\n 'GET_OVERVIEW_IMPRESSIONS_AVAILABILITY_CHART_FAILED'\r\n), Error>();\r\nexport const overviewImpressionsAvailabilityChartsRequest = (\r\n { day, week, systems, custom, systemGroup }: IOverviewRequest,\r\n isSilent = false\r\n) => {\r\n const url = makeApiUrl('/api/overview-report/impressions-availability-graphs');\r\n const { isAuthenticated, idTokenPayload } = authService;\r\n if (isAuthenticated() && idTokenPayload && idTokenPayload.sub) {\r\n const customTimeframeParameters = getCustomSearchParameters(custom);\r\n return apiAction({\r\n request: {\r\n url,\r\n method: 'POST',\r\n params: {\r\n day,\r\n week,\r\n custom: customTimeframeParameters,\r\n systemGroup,\r\n },\r\n data: {\r\n systems,\r\n },\r\n },\r\n\r\n logic: {\r\n onFailed: (error, dispatch) => {\r\n dispatch(getOverviewImpressionsAvailabilityChartsAC.failure(error));\r\n },\r\n\r\n onStarted: isSilent\r\n ? dispatch => {}\r\n : dispatch => dispatch(getOverviewImpressionsAvailabilityChartsAC.request({})),\r\n onSuccess: (data, dispatch) => {\r\n const mapApiToState = {\r\n totalProductionGraph: 'productionChart',\r\n availability: 'availabilityChart',\r\n };\r\n const mappedData = {};\r\n Object.keys(data).forEach(objectTitle => {\r\n mappedData[objectTitle] = data[objectTitle].records;\r\n });\r\n //*in case of for availability chart recods have negative values like -1 we should delete this value from object. there is no posibility to do it on back end side\r\n mappedData['availability'].forEach((record: any) => {\r\n if (record.total < 0) {\r\n delete record.total;\r\n }\r\n if (record.totalAvg < 0) {\r\n delete record.totalAvg;\r\n }\r\n });\r\n //*in case of dtf we have to calculate for each record addition values for date field beacuse of there is no possibility to get it from api\r\n if (systemGroup === UserSystemGroup.DTF) {\r\n Object.keys(mappedData).forEach(graphName => {\r\n const records = mappedData[graphName];\r\n mappedData[graphName].records = normalizeGraphData({ records, day, week });\r\n });\r\n }\r\n dispatch(\r\n getOverviewImpressionsAvailabilityChartsAC.success(\r\n converter(mappedData, mapApiToState, systemGroup)\r\n )\r\n );\r\n },\r\n },\r\n });\r\n }\r\n};\r\n\r\nexport const getOverviewSpeedChartAC = createAsyncAction(\r\n 'GET_OVERVIEW_SPEED_CHART_STARTED',\r\n 'GET_OVERVIEW_SPEED_CHART_SUCCESS',\r\n 'GET_OVERVIEW_SPEED_CHART_FAILED'\r\n), Error>();\r\nexport const overviewSpeedChartRequest = (\r\n { day, week, systems, custom, systemGroup }: IOverviewRequest,\r\n\r\n isSilent = false\r\n) => {\r\n const url = makeApiUrl('/api/overview-report/impressions-by-hour-matrix');\r\n const { isAuthenticated, idTokenPayload } = authService;\r\n if (isAuthenticated() && idTokenPayload && idTokenPayload.sub) {\r\n const customTimeframeParameters = getCustomSearchParameters(custom);\r\n return apiAction({\r\n request: {\r\n url,\r\n method: 'POST',\r\n params: {\r\n day,\r\n week,\r\n custom: customTimeframeParameters,\r\n systemGroup,\r\n },\r\n data: {\r\n systems,\r\n },\r\n },\r\n logic: {\r\n onFailed: (error, dispatch) => {\r\n dispatch(getOverviewSpeedChartAC.failure(error));\r\n },\r\n onStarted: isSilent\r\n ? dispatch => {}\r\n : dispatch => dispatch(getOverviewSpeedChartAC.request({})),\r\n onSuccess: (data, dispatch) => {\r\n const mapApiToState = {\r\n records: 'speedChart',\r\n };\r\n // *in case of dtf we have to calculate for each record addition values for date field beacuse of there is no possibility to get it from api\r\n if (systemGroup === UserSystemGroup.DTF) {\r\n data.records = normalizeGraphData({ records: data.records, day, week });\r\n }\r\n dispatch(getOverviewSpeedChartAC.success(converter(data, mapApiToState, systemGroup)));\r\n },\r\n },\r\n });\r\n }\r\n};\r\n\r\nexport const getOverviewUtilizationChartAC = createAsyncAction(\r\n 'GET_OVERVIEW_UTILIZATION_CHART_STARTED',\r\n 'GET_OVERVIEW_UTILIZATION_CHART_SUCCESS',\r\n 'GET_OVERVIEW_UTILIZATION_CHART_FAILED'\r\n), Error>();\r\n\r\nexport const overviewUtilizationChartRequest = (\r\n { day, week, systems, custom, systemGroup }: IOverviewRequest,\r\n isSilent = false\r\n) => {\r\n const url = makeApiUrl('/api/overview-report/utilization-productivity-matrix');\r\n const { isAuthenticated, idTokenPayload } = authService;\r\n if (isAuthenticated() && idTokenPayload && idTokenPayload.sub) {\r\n const customTimeframeParameters = getCustomSearchParameters(custom);\r\n\r\n return apiAction({\r\n request: {\r\n url,\r\n method: 'POST',\r\n params: {\r\n day,\r\n week,\r\n custom: customTimeframeParameters,\r\n systemGroup,\r\n },\r\n data: {\r\n systems,\r\n },\r\n },\r\n logic: {\r\n onFailed: (error, dispatch) => {\r\n dispatch(getOverviewUtilizationChartAC.failure(error));\r\n },\r\n onStarted: isSilent\r\n ? dispatch => {}\r\n : dispatch => dispatch(getOverviewUtilizationChartAC.request({})),\r\n onSuccess: (data, dispatch) => {\r\n const mapApiToState = {\r\n records: 'utilizationChart',\r\n };\r\n // *in case of dtf we have to calculate for each record addition values for date field beacuse of there is no possibility to get it from api\r\n if (systemGroup === UserSystemGroup.DTF) {\r\n data.records = normalizeGraphData({ records: data.records, day, week });\r\n }\r\n dispatch(\r\n getOverviewUtilizationChartAC.success(converter(data, mapApiToState, systemGroup))\r\n );\r\n },\r\n },\r\n });\r\n }\r\n};\r\n//*this request is for apollo group only\r\nexport const getOverviewReportMainRequestAC = createAsyncAction(\r\n 'GET_OVERVIEW_MAIN_REQUEST_STARTED',\r\n 'GET_OVERVIEW_MAIN_REQUEST_SUCCESS',\r\n 'GET_OVERVIEW_MAIN_REQUEST_FAILED'\r\n)();\r\n\r\nexport const overviewReportMainRequest = (\r\n { day, week, systems, custom, systemGroup }: IOverviewRequest,\r\n isSilent,\r\n isRealTime = false\r\n) => {\r\n const url = makeApiUrl('/api/overview-report/impressionsKPIs');\r\n const { isAuthenticated, idTokenPayload } = authService;\r\n if (isAuthenticated() && idTokenPayload && idTokenPayload.sub) {\r\n const customTimeframeParameters = getCustomSearchParameters(custom);\r\n return apiAction({\r\n request: {\r\n url,\r\n method: 'POST',\r\n headers: getRealTimeHeaders(isRealTime),\r\n params: {\r\n day,\r\n week,\r\n custom: customTimeframeParameters,\r\n systemGroup,\r\n },\r\n data: {\r\n systems,\r\n },\r\n },\r\n logic: {\r\n onFailed: (error, dispatch) => {\r\n dispatch(getOverviewReportMainRequestAC.failure(error));\r\n },\r\n onStarted: dispatch => dispatch(getOverviewReportMainRequestAC.request({ isSilent })),\r\n\r\n onSuccess: (data, dispatch, state) => {\r\n //* records comes from server in unordered way, we have to sort it by date field - date field format depends on granularity\r\n data.totalImpressionsMatrix.records = sortByGranularity({\r\n granularity: data.totalImpressionsMatrix.records[0].granularity,\r\n records: data.totalImpressionsMatrix.records,\r\n });\r\n data.utilizationProductivityMatrix.records = sortByGranularity({\r\n granularity: data.utilizationProductivityMatrix.records[0].granularity,\r\n records: data.utilizationProductivityMatrix.records,\r\n });\r\n data.impressionsByHourMatrix.records = sortByGranularity({\r\n granularity: data.impressionsByHourMatrix.records[0].granularity,\r\n records: data.impressionsByHourMatrix.records,\r\n });\r\n dispatch(getOverviewReportMainRequestAC.success({ ...data }));\r\n },\r\n },\r\n });\r\n }\r\n};\r\nexport const getOverviewAvailabilityRequestAC = createAsyncAction(\r\n 'GET_OVERVIEW_AVAILABILITY_REQUEST_STARTED',\r\n 'GET_OVERVIEW_AVAILABILITY_REQUEST_SUCCESS',\r\n 'GET_OVERVIEW_AVAILABILITY_REQUEST_FAILED'\r\n)();\r\nexport const overviewReportAvailabilityRequest = (\r\n { day, week, systems, custom, systemGroup }: IOverviewRequest,\r\n isSilent,\r\n isRealTime = false\r\n) => {\r\n const url = makeApiUrl('/api/overview-report/availabilitiesKPIs');\r\n const { isAuthenticated, idTokenPayload } = authService;\r\n if (isAuthenticated() && idTokenPayload && idTokenPayload.sub) {\r\n const customTimeframeParameters = getCustomSearchParameters(custom);\r\n return apiAction({\r\n request: {\r\n url,\r\n method: 'POST',\r\n headers: getRealTimeHeaders(isRealTime),\r\n params: {\r\n day,\r\n week,\r\n custom: customTimeframeParameters,\r\n systemGroup,\r\n },\r\n data: {\r\n systems,\r\n },\r\n },\r\n logic: {\r\n onFailed: (error, dispatch) => {\r\n dispatch(getOverviewAvailabilityRequestAC.failure(error));\r\n },\r\n onStarted: dispatch => dispatch(getOverviewAvailabilityRequestAC.request({ isSilent })),\r\n onSuccess: (data, dispatch, state) => {\r\n //* records comes from server in unordered way, we have to sort it by date field - date field format depends on granularity\r\n data.availabilityMatrix.records = sortByGranularity({\r\n granularity: data.availabilityMatrix.records[0].granularity,\r\n records: data.availabilityMatrix.records,\r\n });\r\n dispatch(getOverviewAvailabilityRequestAC.success({ ...data }));\r\n },\r\n },\r\n });\r\n }\r\n};\r\n\r\nexport const getMaxKeepAliveRequestAC = createAsyncAction(\r\n 'GET_MAX_KEEP_ALIVE_REQUEST_STARTED',\r\n 'GET_MAX_KEEP_ALIVE_REQUEST_SUCCESS',\r\n 'GET_MAX_KEEP_ALIVE_REQUEST_FAILED'\r\n)();\r\nexport const getMaxKeepAliveRequest = (\r\n { day, week, month, quarter, year, custom, systems, systemGroup }: IOverviewRequest,\r\n isSilent,\r\n isRealTime = false\r\n) => {\r\n const url = makeApiUrl('/api/reports/getMaxKeepAlive');\r\n const { isAuthenticated, idTokenPayload } = authService;\r\n if (isAuthenticated() && idTokenPayload && idTokenPayload.sub) {\r\n const customTimeframeParameters = getCustomSearchParameters(custom);\r\n return apiAction({\r\n request: {\r\n url,\r\n method: 'POST',\r\n headers: getRealTimeHeaders(isRealTime),\r\n params: {\r\n day,\r\n week,\r\n month,\r\n quarter,\r\n year,\r\n custom: customTimeframeParameters,\r\n systemGroupType: systemGroup,\r\n },\r\n data: {\r\n systems,\r\n },\r\n },\r\n logic: {\r\n onFailed: (error, dispatch) => {\r\n error.systemGroup = systemGroup;\r\n dispatch(getMaxKeepAliveRequestAC.failure(error));\r\n },\r\n onStarted: dispatch =>\r\n dispatch(getMaxKeepAliveRequestAC.request({ isSilent, systemGroup })),\r\n onSuccess: (data, dispatch, state) => {\r\n dispatch(\r\n getMaxKeepAliveRequestAC.success({\r\n maxKeepAlive: data.maxKeepAliveValue,\r\n maxKeepAliveUtc: data.maxKeepAliveValueUtc,\r\n systemGroup,\r\n })\r\n );\r\n },\r\n },\r\n });\r\n }\r\n};\r\n","import { createSelector } from 'reselect';\r\nimport { createReducer } from 'typesafe-actions';\r\nimport _ from 'lodash';\r\n\r\nimport {\r\n getOverviewProductionCardsAC,\r\n getOverviewAchievementsAC,\r\n getOverviewProductionAllChartAC,\r\n getOverviewImperssionsAvailabilityCardsAC,\r\n getOverviewProductionRateCardAC,\r\n getOverviewProductivityCardAC,\r\n getOverviewImpressionsAvailabilityChartsAC,\r\n getOverviewSpeedChartAC,\r\n getOverviewUtilizationChartAC,\r\n getOverviewReportMainRequestAC,\r\n getOverviewAvailabilityRequestAC,\r\n getMaxKeepAliveRequestAC,\r\n} from 'actions/overviewActions';\r\nimport { OverviewByType, Store } from '../store/storeTypes';\r\nimport { mergeCopyArrays } from 'helpers/conversions';\r\nimport { systemGroupSelector } from './ui/systemGroupUiReducer';\r\nimport { jobAnalysisInkConsumptionKPIAC } from 'actions/jobAnalysisActions';\r\nimport { getSystemAnalysisAC } from 'actions/systemAnalysisActions';\r\nimport { getAvailabilityCardAC } from 'actions/systemPageActions';\r\n\r\nconst INIT_STATE: OverviewByType = {\r\n DTF: {\r\n totalProduction: undefined,\r\n productionTrend: undefined,\r\n productionRate: undefined,\r\n productionRateTrend: undefined,\r\n loadingTime: undefined,\r\n darkImpressionsPercentage: undefined,\r\n availability: undefined,\r\n availabilityTrend: undefined,\r\n averageLoadingTime: undefined,\r\n errorDuration: undefined,\r\n maintenanceDuration: undefined,\r\n record: undefined,\r\n weeklyCompleted: undefined,\r\n weeklyGoal: undefined,\r\n weeklyPercentage: undefined,\r\n yearlyCompleted: undefined,\r\n yearlyGoal: undefined,\r\n yearlyPercentage: undefined,\r\n darkImpressionsTrend: undefined,\r\n errorDurationTrend: undefined,\r\n loadingTimeTrend: undefined,\r\n maintenanceDurationTrend: undefined,\r\n productionChart: undefined,\r\n utilizationChart: undefined,\r\n speedChart: undefined,\r\n availabilityChart: undefined,\r\n preparation: undefined,\r\n utilization: undefined,\r\n trendPreparation: undefined,\r\n trendUtilization: undefined,\r\n productivity: undefined,\r\n productivityChange: undefined,\r\n printingTime: undefined,\r\n printingTimeTrend: undefined,\r\n productivityUtilization: undefined,\r\n productivityUtilizationTrend: undefined,\r\n timeOfLastMainResponse: undefined,\r\n timeOfLastAvailabilityResponseResponse: undefined,\r\n maxKeepAlive: undefined,\r\n },\r\n DTG: {\r\n totalProduction: undefined,\r\n productionTrend: undefined,\r\n productionRate: undefined,\r\n productionRateTrend: undefined,\r\n loadingTime: undefined,\r\n darkImpressionsPercentage: undefined,\r\n availability: undefined,\r\n availabilityTrend: undefined,\r\n averageLoadingTime: undefined,\r\n errorDuration: undefined,\r\n maintenanceDuration: undefined,\r\n record: undefined,\r\n weeklyCompleted: undefined,\r\n weeklyGoal: undefined,\r\n weeklyPercentage: undefined,\r\n yearlyCompleted: undefined,\r\n yearlyGoal: undefined,\r\n yearlyPercentage: undefined,\r\n darkImpressionsTrend: undefined,\r\n errorDurationTrend: undefined,\r\n loadingTimeTrend: undefined,\r\n maintenanceDurationTrend: undefined,\r\n productionChart: undefined,\r\n utilizationChart: undefined,\r\n speedChart: undefined,\r\n preparation: undefined,\r\n utilization: undefined,\r\n availabilityChart: undefined,\r\n trendPreparation: undefined,\r\n trendUtilization: undefined,\r\n productivity: undefined,\r\n productivityChange: undefined,\r\n printingTime: undefined,\r\n printingTimeTrend: undefined,\r\n productivityUtilization: undefined,\r\n productivityUtilizationTrend: undefined,\r\n timeOfLastMainResponse: undefined,\r\n timeOfLastAvailabilityResponseResponse: undefined,\r\n maxKeepAlive: undefined,\r\n },\r\n Apollo: {\r\n totalProduction: undefined,\r\n productionTrend: undefined,\r\n productionRate: undefined,\r\n productionRateTrend: undefined,\r\n loadingTime: undefined,\r\n darkImpressionsPercentage: undefined,\r\n availability: undefined,\r\n availabilityTrend: undefined,\r\n averageLoadingTime: undefined,\r\n record: undefined,\r\n weeklyCompleted: undefined,\r\n weeklyGoal: undefined,\r\n weeklyPercentage: undefined,\r\n yearlyCompleted: undefined,\r\n yearlyGoal: undefined,\r\n yearlyPercentage: undefined,\r\n darkImpressionsTrend: undefined,\r\n loadingTimeTrend: undefined,\r\n productionChart: undefined,\r\n utilizationChart: undefined,\r\n speedChart: undefined,\r\n preparation: undefined,\r\n utilization: undefined,\r\n availabilityChart: undefined,\r\n trendPreparation: undefined,\r\n trendUtilization: undefined,\r\n productivity: undefined,\r\n productivityChange: undefined,\r\n printingTime: undefined,\r\n printingTimeTrend: undefined,\r\n productivityUtilization: undefined,\r\n productivityUtilizationTrend: undefined,\r\n isNotReportingPeriod: undefined,\r\n availabilityTotalDurationReported: undefined,\r\n isOverviewMainRequestLoading: undefined,\r\n errorDuration: undefined,\r\n errorDurationTrend: undefined,\r\n maintenanceDuration: undefined,\r\n maintenanceDurationTrend: undefined,\r\n timeOfLastMainResponse: undefined,\r\n timeOfLastAvailabilityResponseResponse: undefined,\r\n maxKeepAlive: undefined,\r\n },\r\n};\r\nconst reducer = createReducer(INIT_STATE)\r\n .handleAction(getOverviewProductionCardsAC.success, (state, action) => {\r\n return _.merge(_.cloneDeep(state), { ...action.payload });\r\n })\r\n .handleAction(getOverviewAchievementsAC.success, (state, action) => {\r\n return _.merge(_.cloneDeep(state), { ...action.payload });\r\n })\r\n .handleAction(getOverviewProductionAllChartAC.success, (state, action) => {\r\n return _.mergeWith(_.cloneDeep(state), { ...action.payload }, mergeCopyArrays);\r\n })\r\n .handleAction(getOverviewProductivityCardAC.success, (state, action) => {\r\n return _.mergeWith(_.cloneDeep(state), { ...action.payload }, mergeCopyArrays);\r\n })\r\n .handleAction(getOverviewProductionRateCardAC.success, (state, action) => {\r\n return _.mergeWith(_.cloneDeep(state), { ...action.payload }, mergeCopyArrays);\r\n })\r\n .handleAction(getOverviewImperssionsAvailabilityCardsAC.success, (state, action) => {\r\n return _.mergeWith(_.cloneDeep(state), { ...action.payload }, mergeCopyArrays);\r\n })\r\n .handleAction(getOverviewUtilizationChartAC.success, (state, action) => {\r\n return _.mergeWith(_.cloneDeep(state), { ...action.payload }, mergeCopyArrays);\r\n })\r\n .handleAction(getOverviewSpeedChartAC.success, (state, action) => {\r\n return _.mergeWith(_.cloneDeep(state), { ...action.payload }, mergeCopyArrays);\r\n })\r\n .handleAction(getOverviewImpressionsAvailabilityChartsAC.success, (state, action) => {\r\n return _.mergeWith(_.cloneDeep(state), { ...action.payload }, mergeCopyArrays);\r\n })\r\n .handleAction(\r\n [getOverviewProductionCardsAC.request, getOverviewAchievementsAC.request],\r\n (state, action) => {\r\n return INIT_STATE;\r\n }\r\n )\r\n .handleAction(getOverviewReportMainRequestAC.request, (state, action) => {\r\n if (action.payload.isSilent) {\r\n return { ...state };\r\n } else {\r\n return {\r\n ...state,\r\n Apollo: {\r\n ...state.Apollo,\r\n isOverviewMainRequestLoading: true,\r\n productionChart: undefined,\r\n speedChart: undefined,\r\n utilizationChart: undefined,\r\n productionTrend: undefined,\r\n totalProduction: undefined,\r\n productivity: undefined,\r\n productivityChange: undefined,\r\n productionRate: undefined,\r\n productionRateTrend: undefined,\r\n },\r\n };\r\n }\r\n })\r\n .handleAction(getOverviewReportMainRequestAC.success, (state, action) => {\r\n const {\r\n impressionsByHourMatrix,\r\n totalImpressionsMatrix,\r\n utilizationProductivityMatrix,\r\n productionRate,\r\n productivity,\r\n totalImpressions,\r\n } = action.payload;\r\n\r\n return {\r\n ...state,\r\n Apollo: {\r\n ...state.Apollo,\r\n productionChart: totalImpressionsMatrix.records,\r\n speedChart: impressionsByHourMatrix.records,\r\n utilizationChart: utilizationProductivityMatrix.records,\r\n productionTrend: totalImpressions.productionTrend,\r\n totalProduction: totalImpressions.totalProduction,\r\n productivity: productivity.productivity,\r\n productivityChange: productivity.productivityChange,\r\n productionRate: productionRate.productionRate,\r\n productionRateTrend: productionRate.productionRateTrend,\r\n isOverviewMainRequestLoading: false,\r\n timeOfLastMainResponse: new Date(),\r\n },\r\n };\r\n })\r\n .handleAction(getOverviewAvailabilityRequestAC.request, (state, action) => {\r\n if (action.payload.isSilent) {\r\n return { ...state };\r\n } else {\r\n return {\r\n ...state,\r\n Apollo: {\r\n ...state.Apollo,\r\n isOverviewAvailabilityRequestLoading: true,\r\n availability: undefined,\r\n averageAvailabilityTrend: undefined,\r\n errorDuration: undefined,\r\n errorDurationTrend: undefined,\r\n maintenanceDuration: undefined,\r\n maintenanceDurationTrend: undefined,\r\n availabilityChart: undefined,\r\n },\r\n };\r\n }\r\n })\r\n .handleAction(getOverviewAvailabilityRequestAC.success, (state, action) => {\r\n return {\r\n ...state,\r\n Apollo: {\r\n ...state.Apollo,\r\n isOverviewAvailabilityRequestLoading: false,\r\n availability: action.payload.availability.availability,\r\n availabilityTrend: action.payload.availability.averageAvailabilityTrend,\r\n errorDuration: action.payload.availability.errorDurationSeconds,\r\n errorDurationTrend: action.payload.availability.errorDurationTrend,\r\n maintenanceDuration: action.payload.availability.maintenanceDurationSeconds,\r\n maintenanceDurationTrend: action.payload.availability.maintenanceDurationTrend,\r\n availabilityChart: action.payload.availabilityMatrix.records,\r\n timeOfLastAvailabilityResponseResponse: new Date(),\r\n },\r\n };\r\n })\r\n //* this action from jobAnalysisActions and needed only to updated last response time\r\n //* it should be replaced with refactoring with timeOfLastAvailabilityResponseResponse to realTime reducer or somewhere to shared place\r\n .handleAction(jobAnalysisInkConsumptionKPIAC.success, (state, action) => {\r\n const systemGroup = Object.keys(action.payload)[0];\r\n return {\r\n ...state,\r\n [systemGroup]: { ...state[systemGroup], timeOfLastMainResponse: new Date() },\r\n };\r\n })\r\n .handleAction(getSystemAnalysisAC.success, (state, action) => {\r\n const systemGroup = action.payload.systemGroup;\r\n return {\r\n ...state,\r\n [systemGroup]: { ...state[systemGroup], timeOfLastMainResponse: new Date() },\r\n };\r\n })\r\n .handleAction(getAvailabilityCardAC.success, (state, action) => {\r\n const systemGroup = action.payload.systemGroup;\r\n return {\r\n ...state,\r\n [systemGroup]: { ...state[systemGroup], timeOfLastMainResponse: new Date() },\r\n };\r\n })\r\n .handleAction(getMaxKeepAliveRequestAC.request, (state, action) => {\r\n if (action.payload.isSilent) {\r\n return { ...state };\r\n }\r\n return {\r\n ...state,\r\n [action.payload.systemGroup]: {\r\n ...state[action.payload.systemGroup],\r\n maxKeepAlive: undefined,\r\n maxKeepAliveUtc: undefined,\r\n },\r\n };\r\n })\r\n .handleAction(getMaxKeepAliveRequestAC.success, (state, action) => {\r\n return {\r\n ...state,\r\n [action.payload.systemGroup]: {\r\n ...state[action.payload.systemGroup],\r\n maxKeepAlive: action.payload.maxKeepAlive,\r\n maxKeepAliveUtc: action.payload.maxKeepAliveUtc,\r\n },\r\n };\r\n })\r\n .handleAction(getMaxKeepAliveRequestAC.failure, (state, action) => {\r\n return {\r\n ...state,\r\n [action.payload.systemGroup]: {\r\n ...state[action.payload.systemGroup],\r\n maxKeepAlive: undefined,\r\n maxKeepAliveUtc: undefined,\r\n },\r\n };\r\n });\r\n\r\nexport default reducer;\r\n\r\nconst overviewSelector = (state: Store) => {\r\n return state.overview;\r\n};\r\nconst overviewBySystemGroupSelector = createSelector(\r\n [overviewSelector, systemGroupSelector],\r\n (overview, systemGroup) => {\r\n return overview[systemGroup];\r\n }\r\n);\r\nexport const overviewMaxKeepAliveSelector = createSelector(\r\n [overviewBySystemGroupSelector],\r\n overview => {\r\n return overview['maxKeepAlive'];\r\n }\r\n);\r\nexport const overviewMaxKeepAliveUTCSelector = createSelector(\r\n [overviewBySystemGroupSelector],\r\n overview => {\r\n return overview['maxKeepAliveUtc'];\r\n }\r\n);\r\nexport const overviewTimeOfLastMainResponseSelector = createSelector(\r\n [overviewBySystemGroupSelector],\r\n overview => {\r\n return overview['timeOfLastMainResponse'];\r\n }\r\n);\r\nexport const overviewTimeOfLastAvailabilityResponseSelector = createSelector(\r\n [overviewBySystemGroupSelector],\r\n overview => {\r\n return overview['timeOfLastAvailabilityResponseResponse'];\r\n }\r\n);\r\nexport const isOverviewMainRequestLoadingSelector = createSelector(\r\n [overviewBySystemGroupSelector],\r\n overview => {\r\n return overview['isOverviewMainRequestLoading'];\r\n }\r\n);\r\n\r\nexport const overviewBySystemGroupAvailabilityTotalDurationReportedSelector = createSelector(\r\n [overviewBySystemGroupSelector],\r\n overview => {\r\n return overview['availabilityTotalDurationReported'];\r\n }\r\n);\r\n\r\nexport const overviewBySystemGroupIsNotReportingPeriodSelector = createSelector(\r\n [overviewBySystemGroupSelector],\r\n overview => {\r\n return overview['isNotReportingPeriod'];\r\n }\r\n);\r\n\r\nexport const overviewBySystemGroupYearlyPercentageSelector = createSelector(\r\n [overviewBySystemGroupSelector],\r\n overview => {\r\n return overview['yearlyPercentage'];\r\n }\r\n);\r\n\r\nexport const overviewBySystemGroupYearlyGoalSelector = createSelector(\r\n [overviewBySystemGroupSelector],\r\n overview => {\r\n return overview['yearlyGoal'];\r\n }\r\n);\r\n\r\nexport const overviewBySystemGroupYearlyCompletedSelector = createSelector(\r\n [overviewBySystemGroupSelector],\r\n overview => {\r\n return overview['yearlyCompleted'];\r\n }\r\n);\r\n\r\nexport const overviewBySystemGroupWeeklyPercentageSelector = createSelector(\r\n [overviewBySystemGroupSelector],\r\n overview => {\r\n return overview['weeklyPercentage'];\r\n }\r\n);\r\n\r\nexport const overviewBySystemGroupWeeklyGoalSelector = createSelector(\r\n [overviewBySystemGroupSelector],\r\n overview => {\r\n return overview['weeklyGoal'];\r\n }\r\n);\r\n\r\nexport const overviewBySystemGroupWeeklyCompletedSelector = createSelector(\r\n [overviewBySystemGroupSelector],\r\n overview => {\r\n return overview['weeklyCompleted'];\r\n }\r\n);\r\n\r\nexport const overviewBySystemGroupAvailabilitySelector = createSelector(\r\n [overviewBySystemGroupSelector],\r\n overview => {\r\n return overview['availability'];\r\n }\r\n);\r\nexport const overviewBySystemGroupavailAbilityTrendSelector = createSelector(\r\n [overviewBySystemGroupSelector],\r\n overview => {\r\n return overview['availabilityTrend'];\r\n }\r\n);\r\n\r\nexport const overviewBySystemGroupErrorDurationSelector = createSelector(\r\n [overviewBySystemGroupSelector],\r\n overview => {\r\n return overview['errorDuration'];\r\n }\r\n);\r\n\r\nexport const overviewBySystemGroupDarkImpressionsPercentageSelector = createSelector(\r\n [overviewBySystemGroupSelector],\r\n overview => {\r\n return overview['darkImpressionsPercentage'];\r\n }\r\n);\r\n\r\nexport const overviewBySystemGroupMaintenanceDurationSelector = createSelector(\r\n [overviewBySystemGroupSelector],\r\n overview => {\r\n return overview['maintenanceDuration'];\r\n }\r\n);\r\n\r\nexport const overviewBySystemGroupLoadingTimeSelector = createSelector(\r\n [overviewBySystemGroupSelector],\r\n overview => {\r\n return overview['loadingTime'];\r\n }\r\n);\r\n\r\nexport const overviewBySystemGroupProductionRateSelector = createSelector(\r\n [overviewBySystemGroupSelector],\r\n overview => {\r\n return overview['productionRate'];\r\n }\r\n);\r\n\r\nexport const overviewBySystemGroupProductionRateTrendSelector = createSelector(\r\n [overviewBySystemGroupSelector],\r\n overview => {\r\n return overview['productionRateTrend'];\r\n }\r\n);\r\n\r\nexport const overviewBySystemGroupProductionTrendSelector = createSelector(\r\n [overviewBySystemGroupSelector],\r\n overview => {\r\n return overview['productionTrend'];\r\n }\r\n);\r\n\r\nexport const overviewBySystemGroupTotalProductionSelector = createSelector(\r\n [overviewBySystemGroupSelector],\r\n overview => {\r\n return overview['totalProduction'];\r\n }\r\n);\r\n\r\nexport const overviewBySystemGroupDarkImpressionsTrendSelector = createSelector(\r\n [overviewBySystemGroupSelector],\r\n overview => {\r\n return overview['darkImpressionsTrend'];\r\n }\r\n);\r\n\r\nexport const overviewBySystemGroupLoadingTimeTrendSelector = createSelector(\r\n [overviewBySystemGroupSelector],\r\n overview => {\r\n return overview['loadingTimeTrend'];\r\n }\r\n);\r\n\r\nexport const overviewBySystemGroupMaintenanceDurationTrendSelector = createSelector(\r\n [overviewBySystemGroupSelector],\r\n overview => {\r\n return overview['maintenanceDurationTrend'];\r\n }\r\n);\r\n\r\nexport const overviewBySystemGroupErrorDurationTrendSelector = createSelector(\r\n [overviewBySystemGroupSelector],\r\n overview => {\r\n return overview['errorDurationTrend'];\r\n }\r\n);\r\n\r\nexport const overviewBySystemGroupTrendPreparationSelector = createSelector(\r\n [overviewBySystemGroupSelector],\r\n overview => {\r\n return overview['trendPreparation'];\r\n }\r\n);\r\n\r\nexport const overviewBySystemGroupTrendUtilizationSelector = createSelector(\r\n [overviewBySystemGroupSelector],\r\n overview => {\r\n return overview['trendUtilization'];\r\n }\r\n);\r\n\r\nexport const overviewBySystemGroupUtilizationSelector = createSelector(\r\n [overviewBySystemGroupSelector],\r\n overview => {\r\n return overview['utilization'];\r\n }\r\n);\r\nexport const overviewBySystemGroupPreparationSelector = createSelector(\r\n [overviewBySystemGroupSelector],\r\n overview => {\r\n return overview['preparation'];\r\n }\r\n);\r\nexport const overviewBySystemGroupProductivitySelector = createSelector(\r\n [overviewBySystemGroupSelector],\r\n overview => {\r\n return overview['productivity'];\r\n }\r\n);\r\n\r\nexport const overviewBySystemGroupProductivityChangeSelector = createSelector(\r\n [overviewBySystemGroupSelector],\r\n overview => {\r\n return overview['productivityChange'];\r\n }\r\n);\r\n\r\nexport const overviewBySystemGroupPrintingTimeSelector = createSelector(\r\n [overviewBySystemGroupSelector],\r\n overview => {\r\n return overview['printingTime'];\r\n }\r\n);\r\n\r\nexport const overviewBySystemGroupPrintingTimeTrendSelector = createSelector(\r\n [overviewBySystemGroupSelector],\r\n overview => {\r\n return overview['printingTimeTrend'];\r\n }\r\n);\r\n\r\nexport const overviewBySystemGroupProductivityUtilizationSelector = createSelector(\r\n [overviewBySystemGroupSelector],\r\n overview => {\r\n return overview['productivityUtilization'];\r\n }\r\n);\r\n\r\nexport const overviewBySystemGroupProductivityUtilizationTrendSelector = createSelector(\r\n [overviewBySystemGroupSelector],\r\n overview => {\r\n return overview['productivityUtilizationTrend'];\r\n }\r\n);\r\n\r\nexport const overviewBySystemGroupRecords = createSelector(\r\n [overviewBySystemGroupSelector],\r\n overviewBySystemGroup => {\r\n return overviewBySystemGroup['record'];\r\n }\r\n);\r\nexport const overviewBySystemGroupProductionChart = createSelector(\r\n [overviewBySystemGroupSelector],\r\n overviewBySystemGroup => {\r\n return overviewBySystemGroup['productionChart'];\r\n }\r\n);\r\nexport const overviewBySystemGroupUtilizationChart = createSelector(\r\n [overviewBySystemGroupSelector],\r\n overviewBySystemGroup => {\r\n return overviewBySystemGroup['utilizationChart'];\r\n }\r\n);\r\nexport const overviewBySystemGroupSpeedChart = createSelector(\r\n [overviewBySystemGroupSelector],\r\n overviewBySystemGroup => {\r\n return overviewBySystemGroup['speedChart'];\r\n }\r\n);\r\nexport const overviewBySystemGroupAvailabilityChart = createSelector(\r\n [overviewBySystemGroupSelector],\r\n overviewBySystemGroup => {\r\n return overviewBySystemGroup['availabilityChart'];\r\n }\r\n);\r\n","import { createSelector } from 'reselect';\r\nimport { format, getDay, getMonth, parseISO } from 'date-fns';\r\n\r\nimport i18next from 'i18next';\r\nimport { Store } from '../store/storeTypes';\r\nimport { GoalType } from '../models/GoalsData';\r\nimport { userSearchSelector } from './uiSelectors';\r\nimport { userIdFromPropsSelector, schedulerIdFromPropsSelector } from './propsSelectors';\r\nimport { numberFormatFromString } from 'helpers/conversions';\r\n\r\n/**\r\n * Users\r\n */\r\nexport function usersSelector(state: Store) {\r\n return state.entities.users.byId;\r\n}\r\nexport function userIdsSelector(state: Store) {\r\n return state.entities.users.allIds;\r\n}\r\nexport const usersArraySelector = createSelector(usersSelector, users => Object.values(users));\r\n\r\nexport const userIdsWithSearchSelector = createSelector(\r\n [userIdsSelector, usersSelector, userSearchSelector],\r\n (userIds, users, searchValue) => {\r\n if (!searchValue || searchValue.length < 2) return userIds;\r\n\r\n const s = searchValue.toLowerCase();\r\n return userIds.filter(userId => {\r\n const { lastName, firstName } = users[userId];\r\n\r\n if (lastName && firstName) {\r\n return lastName.toLowerCase().indexOf(s) > -1 || firstName.toLowerCase().indexOf(s) > -1;\r\n }\r\n return false;\r\n });\r\n }\r\n);\r\n\r\nexport const userByIdSelector = createSelector(\r\n [usersSelector, userIdFromPropsSelector],\r\n (users, userId) => users[userId]\r\n);\r\n\r\n/**\r\n * Goals\r\n */\r\nexport const goalsSelector = (state: Store) => {\r\n return state.entities.goals[state.ui.selectedSystemGroup]\r\n ? state.entities.goals[state.ui.selectedSystemGroup]!.byId\r\n : [];\r\n};\r\nexport const goalsArraySelector = createSelector(goalsSelector, goals => Object.values(goals));\r\n\r\nexport const getGoalEntryByIdSelector = (state: Store, props: Record) =>\r\n state.entities.goals[state.ui.selectedSystemGroup]!.byId[props.goalId];\r\n\r\nexport const convertGoalTypeSelector = createSelector(getGoalEntryByIdSelector, goal => {\r\n return goal.goalType === GoalType.Weekly ? 'goals.weekly' : 'goals.yearly';\r\n});\r\n\r\nexport const formatGoalCurrentValueSelector = createSelector(getGoalEntryByIdSelector, goal =>\r\n numberFormatFromString(goal.goalValue)\r\n);\r\n\r\nexport const formatGoalImpressionsValueSelector = createSelector(getGoalEntryByIdSelector, goal =>\r\n numberFormatFromString(goal.achieved)\r\n);\r\n\r\nexport const goalLastUpdateNoteSelector = createSelector(getGoalEntryByIdSelector, goal => {\r\n const updateDate = goal.dateModified\r\n ? i18next.t('goals.updateDateFormat', {\r\n date: format(parseISO(goal.dateModified), 'd MMM yyyy'),\r\n })\r\n : i18next.t('goals.neverUpdatedDateFormat');\r\n\r\n const { userFirstName, userLastName } = goal;\r\n const updateAuthor =\r\n userFirstName && userFirstName.length && userLastName && userLastName.length\r\n ? i18next.t('goals.updateAuthorFormat', {\r\n userFirstName,\r\n userLastName,\r\n })\r\n : '';\r\n\r\n return i18next.t('goals.updateNoteFormat', {\r\n updateAuthor,\r\n updateDate,\r\n });\r\n});\r\n\r\nexport const goalDateIndicatorSelector = createSelector(getGoalEntryByIdSelector, goal => {\r\n const iterationNum = goal.goalType === GoalType.Weekly ? 7 : 12;\r\n const currentVal =\r\n goal.goalType === GoalType.Weekly ? getDay(new Date()) - 1 : getMonth(new Date());\r\n const passed: number[] = [];\r\n for (let i = 0; i < iterationNum; i += 1) {\r\n passed[i] = i <= currentVal ? 1 : 0;\r\n }\r\n\r\n return passed;\r\n});\r\n\r\n/**\r\n * Customers\r\n */\r\nexport const customersSelector = (state: Store) => state.entities.customers.byId;\r\nexport const customerIdsSelector = (state: Store) => state.entities.customers.allIds;\r\nexport const customersArraySelector = createSelector(customersSelector, customers =>\r\n Object.values(customers)\r\n);\r\n\r\n/**\r\n * Sites\r\n */\r\nexport const sitesSelector = (state: Store) => state.entities.sites.byId;\r\nexport const siteIdsSelector = (state: Store) => state.entities.sites.allIds;\r\nexport const sitesArraySelector = createSelector(sitesSelector, sites => Object.values(sites));\r\n\r\n/**\r\n * Systems\r\n */\r\nexport const systemsSelector = (state: Store) => state.entities.systems.byId;\r\nexport const systemIdsSelector = (state: Store) => state.entities.systems.allIds;\r\nexport const systemsArraySelector = createSelector(systemsSelector, systems =>\r\n Object.values(systems)\r\n);\r\n\r\n/**\r\n * Scope\r\n */\r\nexport const scopeSelector = (state: Store) => ({\r\n customers: state.entities.customers,\r\n systems: state.entities.systems,\r\n sites: state.entities.sites,\r\n});\r\n\r\n/**\r\n * Email Schedulers selectors\r\n */\r\nexport const schedulersSelector = (state: Store) => state.entities.schedulers.byId;\r\nexport const schedulerIdsSelector = (state: Store) => state.entities.schedulers.allIds;\r\nexport const schedulersArraySelector = createSelector(schedulersSelector, schedulers =>\r\n Object.values(schedulers)\r\n);\r\n\r\nexport const schedulerByIdSelector = createSelector(\r\n [schedulersSelector, schedulerIdFromPropsSelector],\r\n (schedulers, schedulerId) => schedulers[schedulerId]\r\n);\r\n","import { Scope } from './Scope';\r\n\r\nexport interface Scheduler extends Scope {\r\n reportId?: string;\r\n subject: string;\r\n userId?: string;\r\n emailReportId: number;\r\n emailReportName: string;\r\n startSendDate: Date;\r\n endSendDate?: Date;\r\n repeat: SchedulerRepeat;\r\n lastSent?: Date;\r\n notes: string;\r\n isActive: boolean;\r\n}\r\n\r\nexport interface ReportType {\r\n id: number;\r\n name: string;\r\n reportTemplate: string;\r\n}\r\n\r\nexport interface SchedulerRepeat {\r\n frequency: Frequency;\r\n dayOfWeek?: Weekdays[];\r\n isSendOnSunday?: boolean;\r\n isSendOnMonday?: boolean;\r\n isSendOnTuesday?: boolean;\r\n isSendOnWednesday?: boolean;\r\n isSendOnThursday?: boolean;\r\n isSendOnFriday?: boolean;\r\n isSendOnSaturday?: boolean;\r\n // sendOnTheFirstDayOf?: boolean;\r\n // sendOnDayInMonth?: number;\r\n}\r\n\r\nexport enum Frequency {\r\n 'No Repeat',\r\n 'Daily',\r\n 'Weekly',\r\n 'Monthly',\r\n 'Yearly',\r\n}\r\n\r\nexport enum Weekdays {\r\n Monday,\r\n Tuesday,\r\n Wednesday,\r\n Thursday,\r\n Friday,\r\n Saturday,\r\n Sunday,\r\n}\r\n","import FileDownload from 'js-file-download';\r\nimport apiAction from 'actions/_shared/apiAction';\r\nimport { makeApiUrl } from 'actions/_shared/utils';\r\nimport { authService } from 'services/AuthProvider';\r\nimport {\r\n SystemPageCardResponseType,\r\n ColorDataItem,\r\n UniversalSystemPageRequestType,\r\n UniversalSystemPageMesage,\r\n DayViewType,\r\n} from 'store/storeTypes';\r\nimport { createAsyncAction, createStandardAction } from 'typesafe-actions';\r\nimport { mapResposeToTimeLineDayArray } from 'helpers/timelineUtils';\r\nimport { SetTimeLineHour, ToggleHour } from 'components/SystemPage/TimeLineChart/TimePicker';\r\nimport { getRealTimeHeaders } from './_shared/realTimeHeaders';\r\n\r\nexport const toggleAMPMmodificator = createStandardAction('TOGGLE_AM_PM')();\r\nexport const setTimeLineHour = createStandardAction('SET_TIMELINE_HOUR')();\r\nexport const incrementTimeLineHour = createStandardAction('INCREMENT_HOUR_TIMELINE')();\r\nexport const decrementTimeLineHour = createStandardAction('DECREMENT_HOUR_TIMELINE')();\r\nexport const toggleDayTimelineView = createStandardAction('TOGGLE_DAY_TIMELINE_VIEW')();\r\n\r\nexport const downloadErrorAndMaintenanceReportAC = createAsyncAction(\r\n 'DOWNLOAD_REPORT_STARTED',\r\n 'DOWNLOAD_REPORT_SUCCESS',\r\n 'DOWNLOAD_REPORT_FAILED'\r\n)();\r\n\r\nexport const downloadErrorAndMaintenanceReport = ({ day, week, systemGroup, system }: any) => {\r\n const url = makeApiUrl('/api/system-page-report/error-maintenance-file');\r\n const { isAuthenticated, idTokenPayload } = authService;\r\n if (isAuthenticated() && idTokenPayload && idTokenPayload.sub) {\r\n return apiAction({\r\n request: {\r\n url,\r\n params: {\r\n day,\r\n week,\r\n systemGroup,\r\n system,\r\n responseType: 'blob',\r\n },\r\n },\r\n logic: {\r\n onFailed: (error, dispatch) => {\r\n dispatch(\r\n downloadErrorAndMaintenanceReportAC.failure({\r\n name: error.name,\r\n message: error.message,\r\n })\r\n );\r\n },\r\n onStarted: dispatch => {\r\n dispatch(downloadErrorAndMaintenanceReportAC.request({ day, week, systemGroup, system }));\r\n },\r\n onSuccess: (data, dispatch) => {\r\n //*here we need to check if system field is array because in some cases we send this request with single string and in this case we need to handle response in one way and if it is array we need to handle it in another way\r\n if (Array.isArray(system)) {\r\n FileDownload(data, `${'Events_End_Errors_Report'}.xlsx`);\r\n dispatch(downloadErrorAndMaintenanceReportAC.success(data));\r\n } else {\r\n const nameArray = system.split(' ');\r\n const serialNumber = nameArray[nameArray.length - 1];\r\n const dateSuffix = week ? week : day;\r\n const name = `${serialNumber}_Events_${dateSuffix}`;\r\n FileDownload(data, `${name}.xlsx`);\r\n dispatch(downloadErrorAndMaintenanceReportAC.success(data));\r\n }\r\n },\r\n },\r\n });\r\n }\r\n};\r\n\r\nexport type GetDataRequest = any;\r\nexport type DayObject = {\r\n date: Date;\r\n stringDate: string;\r\n};\r\n\r\nexport const getTimelineDayViewRequestAC = createAsyncAction(\r\n 'GET_TIMELINE_DATA_DAY_VIEW_STARTED',\r\n 'GET_TIMELINE_DATA_DAY_VIEW_SUCCESS',\r\n 'GET_TIMELINE_DATA_DAY_VIEW_FAILED'\r\n)();\r\nexport const getTimelineDayViewRequest = ({ day, hour, systemGroup, system }: GetDataRequest) => {\r\n const url = makeApiUrl('/api/system-page-report/system-timeline-axis');\r\n const { isAuthenticated, idTokenPayload } = authService;\r\n if (isAuthenticated() && idTokenPayload?.sub) {\r\n return apiAction({\r\n request: {\r\n url,\r\n params: {\r\n day,\r\n hour,\r\n systemGroup,\r\n system,\r\n },\r\n },\r\n logic: {\r\n onFailed: (error, dispatch) => {\r\n dispatch(getTimelineDayViewRequestAC.failure(error));\r\n },\r\n onStarted: dispatch => {\r\n dispatch(getTimelineDayViewRequestAC.request({ day, hour, systemGroup, system }));\r\n },\r\n onSuccess: (data, dispatch) => {\r\n //*day request\r\n const { timeLineData } = data;\r\n //*if length 288 - it is 24 hour view request if 60 - hour view\r\n const type = timeLineData.length === 288 ? DayViewType.day : DayViewType.hour;\r\n const result = mapResposeToTimeLineDayArray(timeLineData, type);\r\n dispatch(getTimelineDayViewRequestAC.success(result));\r\n },\r\n },\r\n });\r\n }\r\n};\r\n\r\nexport const getTimeLineDataAC = createAsyncAction(\r\n 'GET_TIMELINE_DATA_WEEK_VIEW_STARTED',\r\n 'GET_TIMELINE_DATA_WEEK_VIEW_SUCCESS',\r\n 'GET_TIMELINE_DATA_WEEK_VIEW_FAILED'\r\n)();\r\nexport const getTimeLineDataRequest = ({ day, week, systemGroup, system }: GetDataRequest) => {\r\n const url = makeApiUrl('/api/system-page-report/system-timeline');\r\n const { isAuthenticated, idTokenPayload } = authService;\r\n if (isAuthenticated() && idTokenPayload && idTokenPayload.sub) {\r\n return apiAction({\r\n request: {\r\n url,\r\n params: {\r\n day,\r\n week,\r\n systemGroup,\r\n system,\r\n },\r\n },\r\n logic: {\r\n onFailed: (error, dispatch) => {\r\n dispatch(getTimeLineDataAC.failure({ name: error.name, message: error.message }));\r\n },\r\n onStarted: dispatch => {\r\n dispatch(getTimeLineDataAC.request({ day, week, systemGroup, system }));\r\n },\r\n onSuccess: (data, dispatch) => {\r\n //*week req\r\n const {\r\n resultSummaryDataArray,\r\n resultTimeLineDataArray,\r\n } = mapTimeLineResponeToResultSortedObject(data, week);\r\n\r\n dispatch(getTimeLineDataAC.success({ resultSummaryDataArray, resultTimeLineDataArray }));\r\n },\r\n },\r\n });\r\n }\r\n};\r\nexport function mapTimeLineResponeToResultSortedObject(data, week) {\r\n const isWeek = week ? true : false;\r\n const { systemTimeLineGraphResponse, systemTimeLineSummeryResponse } = data;\r\n const { systemTimeLineGraphData: dataArray } = systemTimeLineGraphResponse;\r\n const { systemTimeLineSummeryData: dataSummaryArray } = systemTimeLineSummeryResponse;\r\n const resultSummaryDataArray = new Array();\r\n const resultTimeLineDataArray = new Array();\r\n\r\n dataSummaryArray.forEach(element => {\r\n const statusName = element.status;\r\n const position = timeLineSortingObject.find(el => el.name === statusName).positionInOrder - 1;\r\n resultSummaryDataArray.splice(position, 0, element);\r\n });\r\n if (isWeek) {\r\n const firstDay: string = dataArray[0].day;\r\n const { startYear, startMonth, startDay, startDate } = mapStringToDate(firstDay);\r\n const allWeekDaysStringArray = getAllWeekDaysObjects(startDate, firstDay);\r\n allWeekDaysStringArray.forEach((dayObject: DayObject) => {\r\n const filteredByDate = dataArray.filter(el => el.day === dayObject.stringDate);\r\n const result = {\r\n date: dayObject.date,\r\n stringDate: dayObject.stringDate,\r\n Error:\r\n (filteredByDate.find(el => el.status === 'Error') &&\r\n filteredByDate.find(el => el.status === 'Error').statusDurationPercentage) ||\r\n 0,\r\n Maintenance:\r\n (filteredByDate.find(el => el.status === 'Maintenance') &&\r\n filteredByDate.find(el => el.status === 'Maintenance').statusDurationPercentage) ||\r\n 0,\r\n Idle:\r\n (filteredByDate.find(el => el.status === 'Idle') &&\r\n filteredByDate.find(el => el.status === 'Idle').statusDurationPercentage) ||\r\n 0,\r\n Printing:\r\n (filteredByDate.find(el => el.status === 'Printing') &&\r\n filteredByDate.find(el => el.status === 'Printing').statusDurationPercentage) ||\r\n 0,\r\n NotReporting:\r\n (filteredByDate.find(el => el.status === 'NotReporting') &&\r\n filteredByDate.find(el => el.status === 'NotReporting').statusDurationPercentage) ||\r\n 0,\r\n };\r\n resultTimeLineDataArray.push(result);\r\n });\r\n }\r\n return { resultSummaryDataArray, resultTimeLineDataArray };\r\n}\r\nexport function getAllWeekDaysObjects(startDate: Date, firstDay: string) {\r\n const resultArray = new Array();\r\n resultArray.push({ date: startDate, stringDate: firstDay });\r\n for (let i = 1; i <= 6; i++) {\r\n const year = startDate.getFullYear();\r\n const month = startDate.getMonth();\r\n const day =\r\n startDate.getDate() + i < 10 ? `0${startDate.getDate() + i}` : `${startDate.getDate() + i}`;\r\n\r\n const nextDate = new Date(year, month, +day);\r\n const nextMonth = nextDate.getMonth() + 1;\r\n const monthString = nextMonth < 10 ? `0${nextMonth}` : nextMonth;\r\n const nextDay = nextDate.getDate();\r\n const nextDayString = nextDay < 10 ? `0${nextDay}` : nextDay;\r\n resultArray.push({\r\n date: nextDate,\r\n stringDate: `${nextDate.getFullYear()}${monthString}${nextDayString}`,\r\n });\r\n }\r\n return resultArray;\r\n}\r\nexport function mapStringToDate(date: string) {\r\n const splittedDate = date.split('');\r\n const startYear = Number(splittedDate.slice(0, 4).join(''));\r\n const startMonth = Number(splittedDate.slice(4, 6).join(''));\r\n const startDay = Number(splittedDate.slice(6, splittedDate.length).join(''));\r\n const startDate = new Date(startYear, startMonth - 1, startDay);\r\n return { startYear, startMonth, startDay, startDate };\r\n}\r\nexport const getSystemPageCardsDataAC = createAsyncAction(\r\n 'GET_SYSTEM_PAGE_CARDS_STARTED',\r\n 'GET_SYSTEM_PAGE_CARDS_SUCCESS',\r\n 'GET_SYSTEM_PAGE_CARDS_FAILED'\r\n)();\r\n\r\nexport const getSystemPageCardsDataRequest = ({\r\n day,\r\n week,\r\n systemGroup,\r\n system,\r\n}: UniversalSystemPageRequestType) => {\r\n const url = makeApiUrl('/api/system-page-report/cards');\r\n const { isAuthenticated, idTokenPayload } = authService;\r\n if (isAuthenticated() && idTokenPayload && idTokenPayload.sub) {\r\n return apiAction({\r\n request: {\r\n url,\r\n params: {\r\n day,\r\n week,\r\n systemGroup,\r\n system,\r\n },\r\n },\r\n logic: {\r\n onFailed: (error, dispatch) => {\r\n dispatch(getSystemPageCardsDataAC.failure({ name: error.name, message: error.message }));\r\n },\r\n onStarted: dispatch => {\r\n dispatch(getSystemPageCardsDataAC.request({ day, week, systemGroup, system }));\r\n },\r\n onSuccess: (data, dispatch) => {\r\n const {\r\n achievement,\r\n productionRateChangeLastWeek,\r\n productionRateChangeFleet,\r\n productionRate,\r\n productionChangeLastWeek,\r\n productionChangeFleet,\r\n production,\r\n printerImage,\r\n lastStatus,\r\n lastSoftwareUpdate,\r\n availabilityChangeLastWeek,\r\n availabilityChangeFleet,\r\n availability,\r\n appVersion,\r\n errorDuration,\r\n errorPercentage,\r\n maintenanceDuration,\r\n maintenancePercentage,\r\n productivity,\r\n productivityChangeFleet,\r\n productivityChangeLastWeek,\r\n isNotReportingPeriod,\r\n availabilityTotalDurationReported,\r\n systemModel,\r\n } = data;\r\n dispatch(\r\n getSystemPageCardsDataAC.success({\r\n achievement,\r\n productionRateChangeLastWeek,\r\n productionRateChangeFleet,\r\n productionRate,\r\n productionChangeLastWeek,\r\n productionChangeFleet,\r\n production,\r\n printerImage,\r\n lastStatus,\r\n lastSoftwareUpdate,\r\n availabilityChangeLastWeek,\r\n availabilityChangeFleet,\r\n availability,\r\n appVersion,\r\n errorDuration,\r\n errorPercentage,\r\n maintenanceDuration,\r\n maintenancePercentage,\r\n productivity,\r\n productivityChangeFleet,\r\n productivityChangeLastWeek,\r\n isNotReportingPeriod,\r\n availabilityTotalDurationReported,\r\n systemModel,\r\n })\r\n );\r\n },\r\n },\r\n });\r\n }\r\n};\r\nexport type SystemPageMessagesResponseType = {\r\n maintenanceTableData: {\r\n messageTableData: Array;\r\n };\r\n errorTableData: {\r\n messageTableData: Array;\r\n };\r\n};\r\nexport const getSystemPageMessagesAC = createAsyncAction(\r\n 'GET_SYSTEM_PAGE_MESSAGES_STARTED',\r\n 'GET_SYSTEM_PAGE_MESSAGES_SUCCESS',\r\n 'GET_SYSTEM_PAGE_MESSAGES_FAILED'\r\n)();\r\nexport const getSystemPageMessagesRequest = ({\r\n day,\r\n week,\r\n systemGroup,\r\n system,\r\n}: UniversalSystemPageRequestType) => {\r\n const url = makeApiUrl('/api/system-page-report/error-maintenance-messages');\r\n const { isAuthenticated, idTokenPayload } = authService;\r\n if (isAuthenticated() && idTokenPayload && idTokenPayload.sub)\r\n return apiAction({\r\n request: {\r\n url,\r\n params: {\r\n day,\r\n week,\r\n systemGroup,\r\n system,\r\n },\r\n },\r\n logic: {\r\n onFailed: (error, dispatch) => {\r\n dispatch(getSystemPageMessagesAC.failure({ name: error.name, message: error.message }));\r\n },\r\n onStarted: dispatch => {\r\n dispatch(getSystemPageMessagesAC.request({ day, week, systemGroup, system }));\r\n },\r\n onSuccess: (data, dispatch) => {\r\n dispatch(getSystemPageMessagesAC.success(data));\r\n },\r\n },\r\n });\r\n};\r\n\r\nexport const getTotalBottlesLoadedAC = createAsyncAction(\r\n 'GET_TOTAL_BOTTLES_LOADED_STARTED',\r\n 'GET_TOTAL_BOTTLES_LOADED_SUCCESS',\r\n 'GET_TOTAL_BOTTLES_LOADED_FAILED'\r\n), Error>();\r\nexport const totalBottlesLoadedDataRequest = ({\r\n day,\r\n week,\r\n systemGroup,\r\n system,\r\n}: UniversalSystemPageRequestType) => {\r\n const url = makeApiUrl('/api/system-page-report/ink-table');\r\n const { isAuthenticated, idTokenPayload } = authService;\r\n if (isAuthenticated() && idTokenPayload && idTokenPayload.sub)\r\n return apiAction({\r\n request: {\r\n url,\r\n params: {\r\n day,\r\n week,\r\n systemGroup,\r\n system,\r\n },\r\n },\r\n logic: {\r\n onFailed: (error, dispatch) => {\r\n dispatch(getTotalBottlesLoadedAC.failure({ name: error.name, message: error.message }));\r\n },\r\n onStarted: dispatch => {\r\n dispatch(getTotalBottlesLoadedAC.request({ day, week, systemGroup, system }));\r\n },\r\n onSuccess: (data, dispatch) => {\r\n const { colorData } = data;\r\n //*there is a bug on backend side - sometimes we got negative values for for colorValue - there is no possibility to fix it on back end site so we need to handle it here. bug number 138641\r\n const normalizedData = setAllNegativeValuesOfArrayToZero(colorData);\r\n dispatch(getTotalBottlesLoadedAC.success(normalizedData));\r\n },\r\n },\r\n });\r\n};\r\n\r\nexport const getQualisetDataAC = createAsyncAction(\r\n 'GET_QUALISET_DATA_STARTED',\r\n 'GET_QUALISET_DATA_SUCCESS',\r\n 'GET_QUALISET_DATA_FAILED'\r\n)();\r\nexport const getQualisetDataRequest = ({\r\n day,\r\n week,\r\n systemGroup,\r\n system,\r\n}: UniversalSystemPageRequestType) => {\r\n const url = makeApiUrl('/api/system-page-report/qualiset');\r\n const { isAuthenticated, idTokenPayload } = authService;\r\n if (isAuthenticated() && idTokenPayload && idTokenPayload.sub)\r\n return apiAction({\r\n request: {\r\n url,\r\n params: {\r\n day,\r\n week,\r\n systemGroup,\r\n system,\r\n },\r\n },\r\n logic: {\r\n onFailed: (error, dispatch) => {\r\n dispatch(getQualisetDataAC.failure(error));\r\n },\r\n onStarted: dispatch => {\r\n dispatch(getQualisetDataAC.request({ day, week, systemGroup, system }));\r\n },\r\n onSuccess: (data, dispatch) => {\r\n dispatch(getQualisetDataAC.success({ data, systemGroup, system }));\r\n },\r\n },\r\n });\r\n};\r\n\r\nexport const getImpressionsCardsAC = createAsyncAction(\r\n 'GET_IMPRESSIONS_CARDS_STARTED',\r\n 'GET_IMPRESSIONS_CARDS_SUCCESS',\r\n 'GET_IMPRESSIONS_CARDS_FAILED'\r\n)();\r\nexport const getImressionCardsRequest = (\r\n { day, week, systemGroup, system, isSilent }: UniversalSystemPageRequestType,\r\n isRealTime: boolean = false\r\n) => {\r\n const url = makeApiUrl('/api/system-page-report/impressions-cards');\r\n const { isAuthenticated, idTokenPayload } = authService;\r\n if (isAuthenticated() && idTokenPayload && idTokenPayload.sub)\r\n return apiAction({\r\n request: {\r\n url,\r\n headers: getRealTimeHeaders(isRealTime),\r\n params: {\r\n day,\r\n week,\r\n systemGroup,\r\n system,\r\n },\r\n },\r\n logic: {\r\n onFailed: (error, dispatch) => {\r\n dispatch(getImpressionsCardsAC.failure(error));\r\n },\r\n onStarted: dispatch => {\r\n dispatch(getImpressionsCardsAC.request({ day, week, systemGroup, system, isSilent }));\r\n },\r\n onSuccess: (data, dispatch) => {\r\n dispatch(getImpressionsCardsAC.success({ data, systemGroup }));\r\n },\r\n },\r\n });\r\n};\r\n\r\nexport const getAvailabilityCardAC = createAsyncAction(\r\n 'GET_AVAILABILITY_CARD_STARTED',\r\n 'GET_AVAILABILITY_CARD_SUCCESS',\r\n 'GET_AVAILABILITY_CARD_FAILED'\r\n)();\r\nexport const getAvailabilityCardRequest = (\r\n { day, week, systemGroup, system, isSilent }: UniversalSystemPageRequestType,\r\n isRealTime: boolean = false\r\n) => {\r\n const url = makeApiUrl('/api/system-page-report/availability-cards');\r\n const { isAuthenticated, idTokenPayload } = authService;\r\n if (isAuthenticated() && idTokenPayload && idTokenPayload.sub)\r\n return apiAction({\r\n request: {\r\n url,\r\n headers: getRealTimeHeaders(isRealTime),\r\n params: {\r\n day,\r\n week,\r\n systemGroup,\r\n system,\r\n },\r\n },\r\n logic: {\r\n onFailed: (error, dispatch) => {\r\n dispatch(getAvailabilityCardAC.failure(error));\r\n },\r\n onStarted: dispatch => {\r\n dispatch(getAvailabilityCardAC.request({ day, week, systemGroup, system, isSilent }));\r\n },\r\n onSuccess: (data, dispatch) => {\r\n dispatch(getAvailabilityCardAC.success({ data, systemGroup }));\r\n },\r\n },\r\n });\r\n};\r\n//*sorting model for timeline\r\n\r\nexport const timeLineSortingObject = [\r\n { name: 'Error', positionInOrder: 1, color: '#FF404F' },\r\n { name: 'Maintenance', positionInOrder: 2, color: '#FFAB2B' },\r\n { name: 'Idle', positionInOrder: 3, color: '#5E7EBF' },\r\n { name: 'Printing', positionInOrder: 4, color: '#1BB934' },\r\n { name: 'NotReporting', positionInOrder: 5, color: 'C5D0DE' },\r\n];\r\n\r\nconst setAllNegativeValuesOfArrayToZero = (\r\n array: Array<{ colorName: string; colorValue: number }>\r\n) => {\r\n const result = array.map(el => {\r\n if (el.colorValue < 0) {\r\n return { ...el, colorValue: 0 };\r\n } else {\r\n return el;\r\n }\r\n });\r\n return result;\r\n};\r\n","import { Action } from 'redux';\r\nimport { ThunkDispatch } from 'redux-thunk';\r\nimport { authService } from 'services/AuthProvider';\r\nimport { createAsyncAction, createStandardAction as createAction } from 'typesafe-actions';\r\nimport FileDownload from 'js-file-download';\r\nimport apiAction from 'actions/_shared/apiAction';\r\nimport {\r\n IJobAnalysisRequest,\r\n InkConsumptionServerRecord,\r\n JobAnalysisChartCard,\r\n ColorRecordBasic,\r\n} from 'models/JobAnalysisData';\r\n\r\nimport {\r\n JobAnaylsisByType,\r\n JobAnaylsisByTypePartial,\r\n Store,\r\n UserSystemGroupStrings,\r\n} from 'store/storeTypes';\r\nimport { makeApiUrl } from './_shared/utils';\r\nimport { KonnectAnalytics } from 'KonnectAnalytics/konnectAnalytics';\r\nimport { getCustomSearchParameters } from 'helpers/date';\r\nimport { normalizeGraphData } from 'helpers/apiCoversion';\r\nimport { sortByGranularity } from 'helpers/sorting';\r\nimport { getRealTimeHeaders } from './_shared/realTimeHeaders';\r\nimport { mapZeroValuesBolltesToNull } from 'helpers/jobAnalysisUtils';\r\n\r\nexport const filterInkComparisonColorRecords = data => {\r\n return {\r\n ...data.colorComparisonResponse,\r\n colors: data.colorComparisonResponse.colors.filter(color => color.colorName !== null),\r\n };\r\n};\r\nexport const mapInkConsumptionTrend = (data: {\r\n systemGroup: string;\r\n records: InkConsumptionServerRecord[];\r\n}) => {\r\n if (!data.records.length) {\r\n return { colors: [], records: [] };\r\n }\r\n\r\n const colors = data.records[0].color.map(c => c.colorName);\r\n\r\n colors.unshift('Total');\r\n const records: any[] = [];\r\n data.records.forEach((record, index) => {\r\n //* in each record there is array with records for each record there is field colorValue\r\n //* and in case it has -2 value we have to set it to null - it means future period\r\n const mappedRecord: any = { date: record.date };\r\n let total = 0;\r\n record.color.forEach(colorRecord => {\r\n total += colorRecord.colorValue;\r\n mappedRecord[colorRecord.colorName] =\r\n colorRecord.colorValue < 0 ? null : colorRecord.colorValue;\r\n });\r\n mappedRecord['Total'] = total;\r\n mappedRecord['granularity'] = record['granularity'];\r\n records.push(mappedRecord);\r\n });\r\n return { colors, records };\r\n};\r\n\r\nexport const normalizeColorKeys = (key: string) => {\r\n if (key.toLocaleLowerCase() === 'fof') {\r\n return 'FOF';\r\n } else if (key.toLocaleLowerCase() === 'soft') {\r\n return 'Softener';\r\n } else if (key.toLocaleLowerCase() === 'color') {\r\n return 'Color';\r\n }\r\n};\r\n\r\ninterface JobAnalysisTotalCardsResponse {\r\n totalProductionResponse: {\r\n totalProduction: number;\r\n };\r\n totalBottlesLoadedResponse: {\r\n systemGroup: UserSystemGroupStrings;\r\n bottles: {\r\n colorName: string;\r\n colorValue: number;\r\n }[];\r\n };\r\n totalPrintingTimeResponse: {\r\n systemGroup: UserSystemGroupStrings;\r\n totalPrintingTimeSeconds: number;\r\n };\r\n}\r\n\r\nexport const jobAnalysisTotalCardsAC = createAsyncAction(\r\n 'GET_JOBANALYSIS_TOTAL_CARDS_STARTED',\r\n 'GET_JOBANALYSIS_TOTAL_CARDS_SUCCESS',\r\n 'GET_JOBANALYSIS_TOTAL_CARDS_FAILED'\r\n)();\r\n\r\nexport const jobAnalysisTotalCardsRequest = (\r\n { month, year, quarter, week, day, custom, systems, SystemGroupType },\r\n isSilent = false\r\n) => {\r\n const url = makeApiUrl('/api/job-analysis-report/total-data-cards');\r\n const { isAuthenticated, idTokenPayload } = authService;\r\n if (isAuthenticated() && idTokenPayload && idTokenPayload.sub) {\r\n const customTimeframeParameters = getCustomSearchParameters(custom);\r\n\r\n return apiAction({\r\n request: {\r\n url,\r\n method: 'POST',\r\n params: {\r\n month,\r\n year,\r\n quarter,\r\n week,\r\n day,\r\n custom: customTimeframeParameters,\r\n SystemGroupType,\r\n },\r\n data: {\r\n systems,\r\n },\r\n },\r\n logic: {\r\n onFailed: (error, dispatch) => dispatch(jobAnalysisTotalCardsAC.failure(error)),\r\n onStarted: isSilent\r\n ? dispatch => {}\r\n : dispatch => dispatch(jobAnalysisTotalCardsAC.request({})),\r\n onSuccess: (data: JobAnalysisTotalCardsResponse, dispatch) => {\r\n const dataWithSystemGroup = {};\r\n dataWithSystemGroup[SystemGroupType!] = {\r\n bottlesLoaded: mapZeroValuesBolltesToNull(data),\r\n totalPrintingTime: data.totalPrintingTimeResponse.totalPrintingTimeSeconds,\r\n totalProduction: data.totalProductionResponse.totalProduction,\r\n };\r\n dispatch(jobAnalysisTotalCardsAC.success(dataWithSystemGroup));\r\n },\r\n },\r\n });\r\n }\r\n};\r\n\r\ninterface JobAnalysisChartCardsResponse {\r\n printTimePerUnitResponse: JobAnalysisChartCard;\r\n inkConsumptionPerUnitResponse: JobAnalysisChartCard;\r\n mediaWidthResponse: JobAnalysisChartCard;\r\n}\r\n\r\nexport const jobAnalysisChartCardsAC = createAsyncAction(\r\n 'GET_JOBANALYSIS_CHART_CARDS_STARTED',\r\n 'GET_JOBANALYSIS_CHART_CARDS_SUCCESS',\r\n 'GET_JOBANALYSIS_CHART_CARDS_FAILED'\r\n)();\r\n\r\nexport const jobAnalysisChartCardsRequest = (\r\n {\r\n custom,\r\n month,\r\n year,\r\n quarter,\r\n week,\r\n day,\r\n systems,\r\n SystemGroupType,\r\n DtgFilterParameters,\r\n DtfFilterParameters,\r\n }: IJobAnalysisRequest,\r\n isSilent = false\r\n) => {\r\n const url = makeApiUrl('/api/job-analysis-report/data-per-unit-cards');\r\n const { isAuthenticated, idTokenPayload } = authService;\r\n if (isAuthenticated() && idTokenPayload && idTokenPayload.sub) {\r\n const customTimeframeParameters = getCustomSearchParameters(custom);\r\n\r\n return apiAction({\r\n request: {\r\n url,\r\n method: 'POST',\r\n params: {\r\n month,\r\n year,\r\n quarter,\r\n week,\r\n day,\r\n custom: customTimeframeParameters,\r\n SystemGroupType,\r\n DtgFilterParameters,\r\n DtfFilterParameters,\r\n },\r\n data: {\r\n systems,\r\n },\r\n },\r\n logic: {\r\n onFailed: (error, dispatch) => dispatch(jobAnalysisChartCardsAC.failure(error)),\r\n onStarted: isSilent\r\n ? dispatch => {}\r\n : dispatch =>\r\n dispatch(\r\n jobAnalysisChartCardsAC.request({\r\n selectedSystemGroup: SystemGroupType,\r\n })\r\n ),\r\n onSuccess: (data: JobAnalysisChartCardsResponse, dispatch) => {\r\n const dataWithSystemGroup: JobAnaylsisByTypePartial = {};\r\n\r\n dataWithSystemGroup[SystemGroupType!] = {\r\n printingTimePerUnit: data.printTimePerUnitResponse,\r\n inkConsumptionPerUnit: data.inkConsumptionPerUnitResponse,\r\n mediaWithResponse: data.mediaWidthResponse,\r\n shouldBeUpdatedAfterGroupSelection: false,\r\n };\r\n\r\n dispatch(jobAnalysisChartCardsAC.success(dataWithSystemGroup));\r\n },\r\n },\r\n });\r\n }\r\n};\r\n\r\ninterface JobAnalysisChartsResponse {\r\n inkConsumptionTrendResponse: {\r\n systemGroup: UserSystemGroupStrings;\r\n records: InkConsumptionServerRecord[];\r\n };\r\n colorComparisonResponse: {\r\n systemGroup: UserSystemGroupStrings;\r\n colors: ColorRecordBasic[];\r\n };\r\n colorConsumptionResponse: {\r\n systemGroup: UserSystemGroupStrings;\r\n colors: ColorRecordBasic[];\r\n };\r\n}\r\n\r\nexport const jobAnalysisChartsAC = createAsyncAction(\r\n 'GET_JOBANALYSIS_CHARTS_STARTED',\r\n 'GET_JOBANALYSIS_CHARTS_SUCCESS',\r\n 'GET_JOBANALYSIS_CHARTS_FAILED'\r\n)();\r\n\r\nexport const jobAnalysisChartsRequest = (\r\n {\r\n custom,\r\n month,\r\n year,\r\n quarter,\r\n week,\r\n day,\r\n systems,\r\n SystemGroupType,\r\n DtgFilterParameters,\r\n DtfFilterParameters,\r\n }: IJobAnalysisRequest,\r\n isSilent = false\r\n) => {\r\n const url = makeApiUrl('/api/job-analysis-report/graphs');\r\n const { isAuthenticated, idTokenPayload } = authService;\r\n if (isAuthenticated() && idTokenPayload && idTokenPayload.sub) {\r\n const customTimeframeParameters = getCustomSearchParameters(custom);\r\n\r\n return apiAction({\r\n request: {\r\n url,\r\n method: 'POST',\r\n params: {\r\n month,\r\n year,\r\n quarter,\r\n week,\r\n day,\r\n custom: customTimeframeParameters,\r\n SystemGroupType,\r\n DtgFilterParameters,\r\n DtfFilterParameters,\r\n },\r\n data: {\r\n systems,\r\n },\r\n },\r\n logic: {\r\n onFailed: (error, dispatch) => {\r\n dispatch(jobAnalysisChartsAC.failure(error));\r\n },\r\n onStarted: isSilent\r\n ? dispatch => {}\r\n : dispatch => dispatch(jobAnalysisChartsAC.request({})),\r\n onSuccess: (data: JobAnalysisChartsResponse, dispatch) => {\r\n const dataWithSystemGroup: JobAnaylsisByTypePartial = {};\r\n //*in case of DTF we need to normalize the data because the back end sends it in a different format\r\n if (SystemGroupType === 'DTF') {\r\n data.inkConsumptionTrendResponse.records = normalizeGraphData({\r\n records: data.inkConsumptionTrendResponse.records,\r\n month,\r\n year,\r\n quarter,\r\n week,\r\n day,\r\n });\r\n }\r\n dataWithSystemGroup[SystemGroupType!] = {\r\n inkConsumptionChart: mapInkConsumptionTrend(data.inkConsumptionTrendResponse),\r\n colorConsumptionChart: data.colorConsumptionResponse,\r\n colorCompareChart: filterInkComparisonColorRecords(data),\r\n };\r\n\r\n dispatch(jobAnalysisChartsAC.success(dataWithSystemGroup));\r\n },\r\n },\r\n });\r\n }\r\n};\r\n\r\nexport const jobAnalysisToggleSelectedColorsAC = createAction('SET_SELECTED_COLORS')<\r\n Partial\r\n>();\r\n\r\nexport const jobAnalysisSetSelectedColors = (selectedColors: string[]) => (\r\n dispatch: ThunkDispatch,\r\n getState: () => Store\r\n) => {\r\n const selectedSystemGroup = getState().ui.selectedSystemGroup;\r\n dispatch(jobAnalysisToggleSelectedColorsAC({ [selectedSystemGroup]: { selectedColors } }));\r\n};\r\n\r\nexport const isInkConsumptionPerJobValidToDownloadAC = createAsyncAction(\r\n 'IS_INK_CONSUPMTION_PER_JOB_VALID_TO_DOWNLOAD_STARTED',\r\n 'IS_INK_CONSUPMTION_PER_JOB_VALID_TO_DOWNLOAD_SUCCESS',\r\n 'IS_INK_CONSUPMTION_PER_JOB_VALID_TO_DOWNLOAD_FAILED'\r\n)();\r\n\r\nexport const isInkConsumptionPerJobValidToDownload = ({\r\n month,\r\n year,\r\n quarter,\r\n week,\r\n day,\r\n custom,\r\n systems,\r\n SystemGroupType,\r\n}: IJobAnalysisRequest) => {\r\n const url = makeApiUrl('/api/job-analysis-report/check-ink-consumption-per-job-file');\r\n const { isAuthenticated, idTokenPayload } = authService;\r\n if (isAuthenticated() && idTokenPayload && idTokenPayload.sub) {\r\n const customTimeframeParameters = getCustomSearchParameters(custom);\r\n return apiAction({\r\n request: {\r\n url,\r\n method: 'POST',\r\n params: {\r\n month,\r\n year,\r\n quarter,\r\n week,\r\n day,\r\n custom: customTimeframeParameters,\r\n SystemGroupType,\r\n },\r\n data: {\r\n systems,\r\n },\r\n },\r\n logic: {\r\n onFailed: (error, dispatch) => {\r\n dispatch(\r\n isInkConsumptionPerJobValidToDownloadAC.failure({\r\n selectedSystemGroup: SystemGroupType,\r\n name: error.name,\r\n message: 'something went wrong, try again later',\r\n })\r\n );\r\n },\r\n onStarted: dispatch => {\r\n dispatch(\r\n isInkConsumptionPerJobValidToDownloadAC.request({\r\n SystemGroupType,\r\n })\r\n );\r\n },\r\n onSuccess: (data, dispatch, state, status) => {\r\n // const mockStatus = 204;\r\n dispatch(\r\n isInkConsumptionPerJobValidToDownloadAC.success({\r\n SystemGroupType,\r\n status,\r\n })\r\n );\r\n },\r\n },\r\n });\r\n }\r\n};\r\n\r\nexport const downloadInkConsumptionPerJobReportAC = createAsyncAction(\r\n 'DOWNLOAD_INK_CONSUPMTION_PER_JOB_REPORT_STARTED',\r\n 'DOWNLOAD_INK_CONSUPMTION_PER_JOB_REPORT_SUCCESS',\r\n 'DOWNLOAD_INK_CONSUPMTION_PER_JOB_REPORT_FAILED'\r\n)();\r\n\r\nexport const downloadInkConsumptionPerJobReport = ({\r\n month,\r\n year,\r\n quarter,\r\n week,\r\n day,\r\n custom,\r\n systems,\r\n SystemGroupType,\r\n}: IJobAnalysisRequest) => {\r\n const url = makeApiUrl('/api/job-analysis-report/ink-consumption-per-job-file');\r\n const { isAuthenticated, idTokenPayload } = authService;\r\n\r\n if (isAuthenticated() && idTokenPayload && idTokenPayload.sub) {\r\n const customTimeframeParameters = getCustomSearchParameters(custom);\r\n\r\n return apiAction({\r\n request: {\r\n url,\r\n method: 'POST',\r\n params: {\r\n month,\r\n year,\r\n quarter,\r\n week,\r\n day,\r\n custom: customTimeframeParameters,\r\n SystemGroupType,\r\n responseType: 'blob',\r\n },\r\n data: {\r\n systems,\r\n },\r\n },\r\n logic: {\r\n onFailed: (error, dispatch) => {\r\n dispatch(\r\n downloadInkConsumptionPerJobReportAC.failure({\r\n selectedSystemGroup: SystemGroupType,\r\n name: error.name,\r\n message: 'something went wrong, try again later',\r\n })\r\n );\r\n },\r\n onStarted: dispatch => {\r\n dispatch(downloadInkConsumptionPerJobReportAC.request({ SystemGroupType }));\r\n },\r\n onSuccess: async (data, dispatch, state, status) => {\r\n //* 2 cases - the file is too big and there is no file.\r\n const result =\r\n status === 204\r\n ? 'not downloaded, no content'\r\n : status === 205\r\n ? 'not downloaded, file is too big'\r\n : 'downloaded';\r\n const type = data.type;\r\n const [_, nameWithFileExtension] = type.split('/');\r\n const [name, __] = nameWithFileExtension.split('.');\r\n KonnectAnalytics.downloadInkConsumptionPerJobReport({\r\n result,\r\n });\r\n //download only in case of 200 status\r\n if (status === 200) {\r\n let underscoreIndex = name.indexOf('_');\r\n const dateRangeName = name.substring(underscoreIndex);\r\n FileDownload(data, `InkConsumptionPerJob${dateRangeName}.xlsx`);\r\n dispatch(\r\n downloadInkConsumptionPerJobReportAC.success({\r\n selectedSystemGroup: SystemGroupType,\r\n status,\r\n })\r\n );\r\n }\r\n },\r\n },\r\n });\r\n }\r\n};\r\n// new reqeuest - now only for apollo\r\nexport const jobAnalysisTotalImpressionsKPIAC = createAsyncAction(\r\n 'GET_JOBANALYSIS_TOTAL_IMPRESSIONS_KPI_STARTED',\r\n 'GET_JOBANALYSIS_TOTAL_IMPRESSIONS_KPI_SUCCESS',\r\n 'GET_JOBANALYSIS_TOTAL_IMPRESSIONS_KPI_FAILED'\r\n)();\r\n\r\nexport const jobAnalysisTotalImpressionsKPIRequest = (\r\n {\r\n custom,\r\n month,\r\n year,\r\n quarter,\r\n week,\r\n day,\r\n systems,\r\n SystemGroupType,\r\n DtgFilterParameters,\r\n DtfFilterParameters,\r\n }: IJobAnalysisRequest,\r\n isSilent,\r\n isRealTime = false\r\n) => {\r\n const url = makeApiUrl('/api/job-analysis-report/total-impressions');\r\n const { isAuthenticated, idTokenPayload } = authService;\r\n if (isAuthenticated() && idTokenPayload && idTokenPayload.sub) {\r\n const customTimeframeParameters = getCustomSearchParameters(custom);\r\n\r\n return apiAction({\r\n request: {\r\n url,\r\n method: 'POST',\r\n headers: getRealTimeHeaders(isRealTime),\r\n params: {\r\n month,\r\n year,\r\n quarter,\r\n week,\r\n day,\r\n custom: customTimeframeParameters,\r\n SystemGroupType,\r\n DtgFilterParameters,\r\n DtfFilterParameters,\r\n },\r\n data: {\r\n systems,\r\n },\r\n },\r\n logic: {\r\n onFailed: (error, dispatch) => {\r\n dispatch(jobAnalysisTotalImpressionsKPIAC.failure(error));\r\n },\r\n onStarted: dispatch => dispatch(jobAnalysisTotalImpressionsKPIAC.request({ isSilent })),\r\n onSuccess: (data: any, dispatch) => {\r\n dispatch(jobAnalysisTotalImpressionsKPIAC.success({ data, SystemGroupType }));\r\n },\r\n },\r\n });\r\n }\r\n};\r\n\r\nexport const jobAnalysisPrintingTimeKPIAC = createAsyncAction(\r\n 'GET_JOBANALYSIS_PRINTING_TIME_KPI_STARTED',\r\n 'GET_JOBANALYSIS_PRINTING_TIME_KPI_SUCCESS',\r\n 'GET_JOBANALYSIS_PRINTING_TIME_KPI_FAILED'\r\n)();\r\n\r\nexport const jobAnalysisPrintingTimeKPIRequest = (\r\n {\r\n custom,\r\n month,\r\n year,\r\n quarter,\r\n week,\r\n day,\r\n systems,\r\n SystemGroupType,\r\n DtgFilterParameters,\r\n DtfFilterParameters,\r\n }: IJobAnalysisRequest,\r\n isSilent,\r\n isRealTime = false\r\n) => {\r\n const url = makeApiUrl('/api/job-analysis-report/print-time-KPIs');\r\n const { isAuthenticated, idTokenPayload } = authService;\r\n if (isAuthenticated() && idTokenPayload && idTokenPayload.sub) {\r\n const customTimeframeParameters = getCustomSearchParameters(custom);\r\n\r\n return apiAction({\r\n request: {\r\n url,\r\n method: 'POST',\r\n headers: getRealTimeHeaders(isRealTime),\r\n params: {\r\n month,\r\n year,\r\n quarter,\r\n week,\r\n day,\r\n custom: customTimeframeParameters,\r\n SystemGroupType,\r\n DtgFilterParameters,\r\n DtfFilterParameters,\r\n },\r\n data: {\r\n systems,\r\n },\r\n },\r\n logic: {\r\n onFailed: (error, dispatch) => {\r\n dispatch(jobAnalysisPrintingTimeKPIAC.failure(error));\r\n },\r\n onStarted: dispatch =>\r\n dispatch(jobAnalysisPrintingTimeKPIAC.request({ isSilent, SystemGroupType })),\r\n onSuccess: (data: any, dispatch) => {\r\n dispatch(jobAnalysisPrintingTimeKPIAC.success({ data, SystemGroupType }));\r\n },\r\n },\r\n });\r\n }\r\n};\r\nexport const jobAnalysisInkConsumptionKPIAC = createAsyncAction(\r\n 'GET_JOBANALYSIS_INK_CONSUMPTION_KPI_STARTED',\r\n 'GET_JOBANALYSIS_INK_CONSUMPTION_KPI_SUCCESS',\r\n 'GET_JOBANALYSIS_INK_CONSUMPTION_KPI_FAILED'\r\n)();\r\n\r\nexport const jobAnalysisInkConsumptionKPIRequest = (\r\n {\r\n custom,\r\n month,\r\n year,\r\n quarter,\r\n week,\r\n day,\r\n systems,\r\n SystemGroupType,\r\n DtgFilterParameters,\r\n DtfFilterParameters,\r\n }: IJobAnalysisRequest,\r\n isSilent,\r\n isRealTime = false\r\n) => {\r\n const url = makeApiUrl('/api/job-analysis-report/ink-consumption-KPIs');\r\n const { isAuthenticated, idTokenPayload } = authService;\r\n if (isAuthenticated() && idTokenPayload && idTokenPayload.sub) {\r\n const customTimeframeParameters = getCustomSearchParameters(custom);\r\n\r\n return apiAction({\r\n request: {\r\n url,\r\n method: 'POST',\r\n headers: getRealTimeHeaders(isRealTime),\r\n params: {\r\n month,\r\n year,\r\n quarter,\r\n week,\r\n day,\r\n custom: customTimeframeParameters,\r\n SystemGroupType,\r\n DtgFilterParameters,\r\n DtfFilterParameters,\r\n },\r\n data: {\r\n systems,\r\n },\r\n },\r\n logic: {\r\n onFailed: (error, dispatch) => {\r\n dispatch(jobAnalysisInkConsumptionKPIAC.failure(error));\r\n },\r\n onStarted: dispatch =>\r\n dispatch(jobAnalysisInkConsumptionKPIAC.request({ isSilent, SystemGroupType })),\r\n onSuccess: (data, dispatch, state) => {\r\n //* records comes from server in unordered way, we have to sort it by date field - date field format depends on granularity\r\n data.inkConsumptionTrendResponse.records = sortByGranularity({\r\n granularity: data.inkConsumptionTrendResponse.records[0]?.granularity,\r\n records: data.inkConsumptionTrendResponse.records,\r\n });\r\n const dataWithSystemGroup: JobAnaylsisByTypePartial = {};\r\n dataWithSystemGroup[SystemGroupType!] = {\r\n inkConsumptionChart: mapInkConsumptionTrend(data.inkConsumptionTrendResponse),\r\n colorConsumptionChart: data.colorConsumptionResponse,\r\n colorCompareChart: filterInkComparisonColorRecords(data),\r\n inkConsumptionPerUnit: data.inkConsumptionPerUnitResponse,\r\n lastUpdate: state.apiState.reportsCurrentState.apolloLastUpdate,\r\n };\r\n dispatch(jobAnalysisInkConsumptionKPIAC.success(dataWithSystemGroup));\r\n },\r\n },\r\n });\r\n }\r\n};\r\n","import { createSelector } from 'reselect';\r\nimport { createReducer } from 'typesafe-actions';\r\nimport { IUserSettingsState, Store } from 'store/storeTypes';\r\nimport { actions, RootAction } from 'actions';\r\n\r\nconst INIT_STATE: IUserSettingsState = {\r\n data: {\r\n userSystemGroup: [],\r\n defaultSystemGroup: '',\r\n lengthUnits: '',\r\n volumeUnits: '',\r\n rtrMetricUnit: '',\r\n portalLanguage: '',\r\n tenantName: '',\r\n importedTenantId: '',\r\n realTimeRefreshRateSeconds: undefined,\r\n },\r\n isError: false,\r\n isLoading: false,\r\n};\r\n\r\nconst {\r\n setAppUserSettingsAC,\r\n loadAppUserSettingsFailed,\r\n loadAppUserSettingsStarted,\r\n loadAppUserSettingsSuccess,\r\n} = actions.userSettings;\r\n\r\nexport const userSettingsReducer = createReducer(INIT_STATE)\r\n .handleAction(loadAppUserSettingsStarted, (state, action) => {\r\n return {\r\n ...state,\r\n isLoading: true,\r\n };\r\n })\r\n .handleAction(loadAppUserSettingsSuccess, (state, action) => {\r\n return {\r\n ...state,\r\n data: action.payload,\r\n isLoading: false,\r\n };\r\n })\r\n .handleAction(loadAppUserSettingsFailed, (state, action) => {\r\n return {\r\n ...state,\r\n isLoading: false,\r\n isError: true,\r\n };\r\n })\r\n .handleAction(setAppUserSettingsAC.request, (state, action) => {\r\n return {\r\n ...state,\r\n };\r\n })\r\n .handleAction(setAppUserSettingsAC.success, (state, action) => {\r\n return {\r\n ...state,\r\n data: { ...state.data, ...action.payload },\r\n isLoading: false,\r\n };\r\n })\r\n .handleAction(setAppUserSettingsAC.failure, (state, action) => {\r\n return {\r\n ...state,\r\n isError: true,\r\n };\r\n });\r\n\r\n//*selectors\r\n\r\nexport const userSettingsSelector = (state: Store) => {\r\n return state.userSettings;\r\n};\r\nexport const dataUserSettingsSelector = createSelector([userSettingsSelector], userSettings => {\r\n return userSettings.data;\r\n});\r\nexport const defaultSystemGroupSelector = createSelector([dataUserSettingsSelector], data => {\r\n return data['defaultSystemGroup'];\r\n});\r\nexport const userSystemGroupSelector = createSelector([dataUserSettingsSelector], data => {\r\n return data.userSystemGroup;\r\n});\r\nexport const tenantNameSelector = createSelector([dataUserSettingsSelector], data => {\r\n return data.tenantName;\r\n});\r\nexport const importedTenantIdSelector = createSelector([dataUserSettingsSelector], data => {\r\n return data.importedTenantId;\r\n});\r\nexport const officeSelector = createSelector([dataUserSettingsSelector], data => {\r\n return data.office;\r\n});\r\nexport const accountTypeSelector = createSelector([dataUserSettingsSelector], data => {\r\n return data.accountType;\r\n});\r\nexport const refreshRealTimePeriodSelector = createSelector([dataUserSettingsSelector], data => {\r\n return data.realTimeRefreshRateSeconds;\r\n});\r\n","import { OptionsObject } from 'notistack';\r\nimport { debounce } from 'lodash';\r\nimport { Action } from 'redux';\r\nimport { ThunkDispatch } from 'redux-thunk';\r\nimport { createStandardAction } from 'typesafe-actions';\r\n\r\nimport { ActiveOverviewChart, Store, UserSystemGroup } from '../store/storeTypes';\r\n\r\nexport const updateLogoutTimerAC = createStandardAction('UPDATE_LOGOUT_TIMER')();\r\nconst updateLogoutTimerDebounced = debounce(\r\n (dispatch: ThunkDispatch) => dispatch(updateLogoutTimerAC()),\r\n 3000\r\n);\r\nexport const updateLogoutTimer = () => updateLogoutTimerDebounced;\r\n\r\nexport interface EnqueueNotificationProps {\r\n enqueueNotification(message: string, options?: OptionsObject): void;\r\n}\r\n\r\ninterface EnqueueNotificationPayload {\r\n message: string;\r\n key: string;\r\n options: OptionsObject;\r\n}\r\nexport const enqueueNotificationAC = createStandardAction('ENQUEUE_NOTIFICATION')<\r\n EnqueueNotificationPayload\r\n>();\r\nexport function enqueueNotification(message: string, options: OptionsObject = {}) {\r\n return function(dispatch: ThunkDispatch) {\r\n dispatch(\r\n enqueueNotificationAC({\r\n message,\r\n key: (new Date().getTime() + Math.random()).toString(),\r\n options,\r\n })\r\n );\r\n };\r\n}\r\n\r\nexport const removeNotification = createStandardAction('REMOVE_NOTIFICATION')();\r\n\r\nexport const setActiveOverviewChart = createStandardAction('SET_ACTIVE_OVERVIEW_CHART')<{\r\n DTF?: ActiveOverviewChart;\r\n DTG?: ActiveOverviewChart;\r\n}>();\r\n","import { TreeNodeProps } from 'react-dropdown-tree-select';\r\nimport { OptionsObject } from 'notistack';\r\nimport { ExtendedUserData } from 'models/ExtendedUserData';\r\nimport { CustomerData } from 'models/CustomerData';\r\nimport { SiteData } from 'models/SiteData';\r\nimport { SystemData } from 'models/SystemData';\r\nimport { TimeFrame, ReportTypesNew } from 'models/ReportData';\r\nimport { GoalsData } from 'models/GoalsData';\r\nimport { Scheduler, Frequency, Weekdays } from 'models/Scheduler';\r\nimport { SetFilterFromUriQuery } from 'actions/reportFilterActions';\r\nimport { ISystemReport } from 'models/SystemAnalysisData';\r\nimport { OverviewUI } from 'reducers/ui/overviewUiReducer';\r\nimport {\r\n ColorCompareChart,\r\n ColorConsumptionChart,\r\n ColorRecordBasic,\r\n InkConsumptionChart,\r\n JobAnalysisChartCard,\r\n} from 'models/JobAnalysisData';\r\nimport { ReportDateRequest } from 'models/ReportsFilterData';\r\n\r\n//\r\n// ------ Entities ------\r\n\r\nexport interface Entries {\r\n [key: string]: T & unknown;\r\n}\r\n\r\nexport type Id = string;\r\nexport type Ids = Id[];\r\n\r\nexport interface Entity {\r\n byId: Entries & Record;\r\n allIds: Ids;\r\n}\r\nexport type GoalsByTypes = {\r\n [key in UserSystemGroupStrings]?: Entity;\r\n};\r\nexport interface EntityStore {\r\n users: Entity;\r\n customers: Entity;\r\n sites: Entity;\r\n systems: Entity;\r\n goals: GoalsByTypes;\r\n schedulers: Entity;\r\n}\r\n\r\n//\r\n// ------ UI ------\r\nexport interface Notification {\r\n message: string;\r\n key: string;\r\n options?: OptionsObject;\r\n}\r\n\r\nexport enum MODAL_STATUS {\r\n CLOSED = 'CLOSED',\r\n EDITING = 'EDITING',\r\n SAVING = 'SAVING',\r\n DONE = 'DONE',\r\n}\r\n\r\nexport interface UserForm {\r\n id: string;\r\n firstname: string;\r\n lastname: string;\r\n email: string;\r\n customerIds: Ids;\r\n siteIds: Ids;\r\n systemIds: Ids;\r\n systemsTree: TreeNodeProps[];\r\n setGoals: boolean;\r\n createReports: boolean;\r\n adminPermissions: boolean;\r\n avatarUrl?: string;\r\n avatarBase64?: unknown | Record;\r\n //avatarBase64?: WindowsBase64;\r\n isFormTouched: boolean;\r\n isRootUser: boolean;\r\n manageApi: boolean;\r\n}\r\n\r\nexport interface SchedulerForm {\r\n reportId: Id;\r\n emailSubject: string;\r\n report: string | number | null;\r\n startDate: Date;\r\n repeat: Frequency | null;\r\n weekdays: Weekdays[];\r\n endDate?: Date;\r\n notes: string;\r\n sending: boolean;\r\n customerIds: Ids;\r\n siteIds: Ids;\r\n systemIds: Ids;\r\n userOrgs?: Entity;\r\n userSites?: Entity;\r\n userSystems?: Entity;\r\n disabledOrgIds?: Ids;\r\n disabledSiteIds?: Ids;\r\n systemsTree: TreeNodeProps[];\r\n isFormTouched: boolean;\r\n lastSent?: Date;\r\n}\r\n\r\nexport interface UserModal {\r\n status: MODAL_STATUS;\r\n lastSavedUserId: Id;\r\n isInvitationSent: boolean;\r\n}\r\n\r\nexport interface SchedulerModal {\r\n status: MODAL_STATUS;\r\n previewStatus: MODAL_STATUS;\r\n}\r\n\r\nexport interface FilterCalendarModal {\r\n status: MODAL_STATUS;\r\n previewStatus: MODAL_STATUS;\r\n selectedFilter: string;\r\n}\r\nexport interface MachineFilter {\r\n isOpen: boolean;\r\n}\r\nexport type SystemAnalysisViews = 'grid' | 'table';\r\nexport interface UiStore {\r\n notificationQueue: Notification[];\r\n selectedUserRows: string[];\r\n userModal: UserModal;\r\n userForm: UserForm;\r\n userSearch: string;\r\n schedulerModal: SchedulerModal;\r\n schedulerForm: SchedulerForm;\r\n logoutTimer: number;\r\n toggleSchedulerId: string;\r\n schedulerPreview: Scheduler;\r\n filterCalenderModal: FilterCalendarModal;\r\n selectedSystemGroup: UserSystemGroupStrings;\r\n systemAnalysisView: SystemAnalysisViews;\r\n overview: OverviewUI;\r\n machineFilter: MachineFilter;\r\n}\r\n\r\n//\r\n// ------ API ------\r\n\r\nexport interface ApiStore {\r\n isLoadingAppUser: boolean;\r\n isLoadingUsers: boolean;\r\n isSavingUser: boolean;\r\n isSavingGoals: boolean;\r\n isDeletingUser: boolean;\r\n isLoadingCustomers: boolean;\r\n isLoadingSites: boolean;\r\n isLoadingSystems: boolean;\r\n isLoadingPbiDefinitions: boolean;\r\n isLoadingGoals: boolean;\r\n isLoadingSchedulers: boolean;\r\n isLoadingSchedulerTypes: boolean;\r\n isSavingScheduler: boolean;\r\n pendingInvitationUserIds: string[];\r\n errors: unknown[];\r\n}\r\n\r\nexport interface ApiEndpointState {\r\n isInProgress: boolean;\r\n isDone: boolean;\r\n loadAttempts: number;\r\n reachedMaxLoadAttempts: boolean;\r\n dTGLastUpdate?: Date | undefined;\r\n apolloLastUpdate?: Date | undefined;\r\n dTFLastUpdate?: Date | undefined;\r\n isSiteExtensionIsLoaded?: any;\r\n}\r\nexport interface ApiState {\r\n isSiteExtensionIsLoaded?: any;\r\n reportsFilterData: ApiEndpointState;\r\n reportsCurrentState: ApiEndpointState;\r\n}\r\n\r\n//\r\n// ------ App User -------\r\nexport interface AppUser extends Partial {\r\n systemsTree?: TreeNodeProps[];\r\n userAgreementVersion?: string;\r\n userAgreement?: boolean;\r\n apiUrl?: string;\r\n reportTypes: string[];\r\n userEmail?: string;\r\n userFirstName?: string;\r\n userLastName?: string;\r\n screenWidth?: number;\r\n screenHeight?: number;\r\n pbiReportHeight?: number;\r\n pbiReportWidth?: number;\r\n}\r\n\r\nexport interface ReportSite {\r\n id: string;\r\n name: string;\r\n}\r\n\r\nexport interface ReportModel {\r\n id: string;\r\n name: string;\r\n siteId: string;\r\n}\r\n\r\nexport interface ReportSystem {\r\n isEverReported?: boolean | null;\r\n id: string;\r\n name: string;\r\n siteId: string;\r\n modelId: string;\r\n systemNickName: string;\r\n}\r\n\r\nexport type ReportFilterDataByType = {\r\n [key in UserSystemGroupStrings]?: ReportFilterData;\r\n};\r\n\r\nexport type ReportFilterStateByType = {\r\n [key in UserSystemGroupStrings]?: ReportFilterState;\r\n};\r\n\r\nexport type ReportsFilterDataByTypePartial = {\r\n [key in UserSystemGroupStrings]?: Partial;\r\n};\r\n\r\nexport interface ReportFilterData {\r\n sites: ReportSite[];\r\n models: ReportModel[];\r\n systems: ReportSystem[];\r\n startDate: Date;\r\n endDate: Date;\r\n activeSystems: string;\r\n}\r\n\r\nexport interface ReportFilterState {\r\n selectedSiteIds: string[];\r\n selectedModelIds: string[];\r\n selectedSystemSerials: string[];\r\n forceUncheckSiteIds: string[];\r\n forceUncheckModelIds: string[];\r\n foldedSiteIds: string[];\r\n foldedModelIds: string[];\r\n timeframe: TimeFrame;\r\n customTimeFrameStartDate: Date | undefined;\r\n customTimeFrameEndDate: Date | undefined;\r\n customTimeFrameStartHour: number | undefined;\r\n customTimeFrameEndHour: number | undefined;\r\n isShiftModeSelected: boolean;\r\n selectedSiteIdsStringified?: string;\r\n selectedModelIdsStringified?: string;\r\n selectedSystemSerialsStringified?: string;\r\n stateInitialized: boolean;\r\n isApplyMobileFilter: boolean;\r\n selectedDate: Date | undefined;\r\n defaultQueriesFilter: SetFilterFromUriQuery | null;\r\n filterValue: string;\r\n isSelectedSystemsEverReported: boolean | null;\r\n isTimeFrameWasChangedFromJobAnalysisPage: boolean;\r\n}\r\n\r\nexport interface ReportStore {\r\n activeReport: ReportTypesNew;\r\n filterData: ReportFilterDataByType;\r\n filterState: ReportFilterStateByType;\r\n}\r\n\r\nexport type systemReportByType = {\r\n [key in UserSystemGroupStrings]: ISystemReport[];\r\n};\r\nexport type NickNameRecord = {\r\n nickName: string | null;\r\n serialNumber: string;\r\n};\r\nexport type IsEverReportedSystemType = {\r\n isEverReported: boolean;\r\n serialNumber: string;\r\n};\r\nexport interface ISystemAnalysisState {\r\n isLoading: boolean;\r\n data: systemReportByType;\r\n selectedSystemName: string;\r\n sortingOrder: 'asc' | 'desc';\r\n sortBy: string;\r\n view?: string;\r\n changingNameInputValue?: string;\r\n changeNickNameError?: string;\r\n isChangeNameLoaded?: boolean;\r\n isChangeNameLoading?: boolean;\r\n isNickNamesLoading: boolean;\r\n isNickNamesLoaded: boolean;\r\n isNickNamesLoadingError: string;\r\n nickNames: Array;\r\n newNickName?: string;\r\n downloadReportValidation: {\r\n [key in NewSystemGroupsStrings]: {\r\n isDownloadReportValidationLoading: boolean;\r\n isDownloadReportValidationLoaded: boolean;\r\n isDownloadReportValidationLoadingError: string;\r\n isValidToDownload: boolean;\r\n isFileDownloading: boolean;\r\n isFileDownloaded: boolean;\r\n fileDownloadError: string;\r\n };\r\n };\r\n}\r\nexport type TimeModificator = 'AM' | 'PM';\r\nexport enum TimeModidficatorEnum {\r\n AM = 'AM',\r\n PM = 'PM',\r\n}\r\nexport type Granularity = 'Day' | 'Week' | 'Hour' | 'Month';\r\nexport enum GranularityEnum {\r\n Day = 'Day',\r\n Week = 'Week',\r\n Hour = 'Hour',\r\n Month = 'Month',\r\n}\r\nexport type ChartRecord = {\r\n date: string;\r\n total?: number;\r\n totalAvg: number;\r\n granularity: Granularity;\r\n};\r\nexport type OverviewByType = {\r\n [key in UserSystemGroupStrings]?: Overview;\r\n};\r\nexport type OverviewCards = {\r\n totalProduction: number | undefined;\r\n productionTrend: number | undefined;\r\n productionRate: number | undefined;\r\n productionRateTrend: number | undefined;\r\n loadingTime: number | undefined;\r\n loadingTimeTrend: number | undefined;\r\n trendPreparation: number | undefined;\r\n trendUtilization: number | undefined;\r\n utilization: number | undefined;\r\n preparation: number | undefined;\r\n darkImpressionsPercentage: number | undefined;\r\n darkImpressionsTrend: number | undefined;\r\n productivity: number | undefined;\r\n productivityChange: number | undefined;\r\n printingTime: number | undefined;\r\n printingTimeTrend: number | undefined;\r\n productivityUtilization: number | undefined;\r\n productivityUtilizationTrend: number | undefined;\r\n errorDuration: number | undefined;\r\n errorDurationTrend: number | undefined;\r\n maintenanceDuration: number | undefined;\r\n maintenanceDurationTrend: number | undefined;\r\n availability: number | undefined;\r\n availabilityTrend: number | undefined;\r\n averageLoadingTime: number | undefined;\r\n // next two fields are only for apollo\r\n isNotReportingPeriod?: boolean | undefined;\r\n availabilityTotalDurationReported?: number | undefined;\r\n};\r\n\r\nexport type OverviewAchievements = {\r\n record: number | undefined;\r\n weeklyGoal: number | undefined;\r\n weeklyCompleted: number | undefined;\r\n weeklyPercentage: number | undefined;\r\n yearlyGoal: number | undefined;\r\n yearlyCompleted: number | undefined;\r\n yearlyPercentage: number | undefined;\r\n};\r\nexport type OverviewCharts = {\r\n productionChart: ChartRecord[] | undefined;\r\n speedChart: ChartRecord[] | undefined;\r\n utilizationChart: ChartRecord[] | undefined;\r\n availabilityChart: ChartRecord[] | undefined;\r\n isOverviewMainRequestLoading?: boolean;\r\n};\r\nexport enum ActiveOverviewChart {\r\n Speed = 'Speed',\r\n Utilization = 'Utilization',\r\n}\r\ntype CommonOverviewProps = {\r\n timeOfLastMainResponse: Date | undefined;\r\n timeOfLastAvailabilityResponseResponse: Date | undefined;\r\n maxKeepAlive: Date | undefined;\r\n};\r\nexport type Overview = OverviewCharts & OverviewCards & OverviewAchievements & CommonOverviewProps;\r\n\r\n// Machine Config\r\n\r\nexport interface MachineConfigParam {\r\n name: string;\r\n section: string;\r\n value: string | number | boolean;\r\n min?: number;\r\n max?: number;\r\n}\r\n\r\nexport interface MachineConfigSection {\r\n name: string;\r\n isExpanded: boolean;\r\n hasOutOfRange: boolean;\r\n params: MachineConfigParam[];\r\n}\r\n\r\nexport interface MachineConfigDevice {\r\n id: string;\r\n name: string;\r\n imageUrl: string | null;\r\n}\r\nexport interface MachineConfig {\r\n params: MachineConfigParam[] | string;\r\n device: MachineConfigDevice;\r\n}\r\n// JobAnalysis\r\nexport type JobAnaylsisByType = {\r\n [key in UserSystemGroupStrings]?: JobAnalysis;\r\n};\r\n\r\nexport type JobAnaylsisByTypePartial = {\r\n [key in UserSystemGroupStrings]?: Partial;\r\n};\r\nexport type JobAnalysis = {\r\n shouldBeUpdatedAfterGroupSelection?: boolean;\r\n bottlesLoaded: ColorRecordBasic[] | undefined;\r\n totalProduction: number | undefined;\r\n totalPrintingTime: number | undefined;\r\n printingTimePerUnit: JobAnalysisChartCard | undefined;\r\n inkConsumptionPerUnit: JobAnalysisChartCard | undefined;\r\n mediaWithResponse: JobAnalysisChartCard | undefined;\r\n inkConsumptionChart: InkConsumptionChart | undefined;\r\n colorConsumptionChart: ColorConsumptionChart | undefined;\r\n colorCompareChart: ColorCompareChart | undefined;\r\n selectedColors: string[] | undefined;\r\n isJobAnalysisChartsLoading: boolean;\r\n isJobAnalysisChartsLoaded: boolean;\r\n isTotalCardsLoading: boolean;\r\n isDownloadInkConsumptionPerJobLoading: boolean;\r\n isDownloadInkConsumptionPerJobLoaded: boolean;\r\n downloadInkConsumptionPerJobError: object | string;\r\n isInkConsumptionPerJobValidToDownloadMessage?: undefined | string;\r\n isTimeFrameWasChanged?: boolean;\r\n lastUpdate?: Date;\r\n maxKeepAlive: Date | undefined;\r\n};\r\n//\r\n// ------ The Store ------\r\n\r\nexport interface Store {\r\n appUser: AppUser;\r\n api: ApiStore;\r\n apiState: ApiState;\r\n entities: EntityStore;\r\n ui: UiStore;\r\n reports: ReportStore;\r\n systemAnalysis: ISystemAnalysisState;\r\n userSettings: IUserSettingsState;\r\n overview: OverviewByType;\r\n jobAnalysis: JobAnaylsisByType;\r\n machineConfig: MachineConfig;\r\n jobSummary: JobSummaryStateTypes;\r\n apiManagement: IApiManagementState;\r\n systemPage: SystemPageState;\r\n serviceTicket: ServiceTicketStateBySystem;\r\n isEverReported: IsEverReportedStateTypes;\r\n webSocket: WebSocket;\r\n}\r\nexport type ReportedSystemsUnit = {\r\n serialNumber: string;\r\n isEverReported: boolean;\r\n};\r\nexport type ReportedSystemsResponseByGroup = {\r\n DTG: Array;\r\n DTF: Array;\r\n Apollo: Array;\r\n};\r\nexport type IsEverReportedStateTypes = {\r\n isLoading: boolean;\r\n isLoaded: boolean;\r\n isError: boolean;\r\n data: ReportedSystemsResponseByGroup;\r\n};\r\n// ------ User Settings -----\r\nexport enum UserSystemGroup {\r\n DTG = 'DTG',\r\n DTF = 'DTF',\r\n Apollo = 'Apollo',\r\n}\r\nexport enum DtfCardsName {\r\n Production = 'Production',\r\n ProdSolid = 'Prod. Solid',\r\n Quality = 'Quality',\r\n QualitySolid = 'Quality Solid',\r\n}\r\nexport type UserSystemGroupStrings = keyof typeof UserSystemGroup | '';\r\n\r\nexport type NewSystemGroupsStrings = Exclude;\r\nexport enum LengthUnits {\r\n Meter = 'Meter',\r\n Feet = 'Feet',\r\n Yard = 'Yard',\r\n}\r\n\r\nexport type LengthUnitsGroupStrings = keyof typeof LengthUnits | '';\r\n\r\nexport enum VolumeUnits {\r\n Litter = 'Litter',\r\n Bottle = 'Bottle',\r\n}\r\n\r\nexport type VolumeUnitsGroupStrings = keyof typeof VolumeUnits | '';\r\n\r\nexport enum RTRMetricUnit {\r\n Linear = 'Linear',\r\n Square = 'Square',\r\n}\r\n\r\nexport type RTRMetricUnitGroupStrings = keyof typeof RTRMetricUnit | '';\r\n\r\nexport interface UserSettings {\r\n userSystemGroup?: UserSystemGroupStrings[];\r\n defaultSystemGroup: UserSystemGroupStrings;\r\n lengthUnits: LengthUnitsGroupStrings;\r\n volumeUnits: VolumeUnitsGroupStrings;\r\n rtrMetricUnit: RTRMetricUnitGroupStrings;\r\n portalLanguage: string;\r\n tenantName: string;\r\n importedTenantId: string;\r\n office?: null | string;\r\n accountType?: null | string;\r\n realTimeRefreshRateSeconds: number;\r\n}\r\n\r\nexport interface IUserSettingsState {\r\n data: UserSettings;\r\n isLoading: boolean;\r\n isError: boolean;\r\n}\r\n\r\nexport interface CertificateDetails {\r\n userId: string;\r\n tenantId: number;\r\n isDeleted: boolean;\r\n email: string;\r\n thumbprint: string;\r\n expirationDate: Date;\r\n validFrom: Date;\r\n certificate: string;\r\n}\r\n\r\nexport interface IApiManagementState {\r\n certificate: CertificateDetails | undefined;\r\n isLoading: boolean;\r\n isError: boolean;\r\n}\r\n\r\n//*system page\r\n\r\nexport type ErrorMessage = {\r\n message: string;\r\n displayMessage: string;\r\n count?: number;\r\n eventsCount?: number;\r\n};\r\nexport type UniversalSystemPageMesage = {\r\n displayMessage: string;\r\n eventsCount: number;\r\n};\r\nexport type CommonMaintenanceEvent = ErrorMessage;\r\nexport type DTFBottlesType = {\r\n colorName: string;\r\n colorValue: number;\r\n TankType?: TankType;\r\n};\r\nexport type SystemPageState = {\r\n isTopCardsLoading: boolean;\r\n isLoading: boolean;\r\n isCommonErrorsLoading: boolean;\r\n isCommonMaintenanceEventsLoading: boolean;\r\n isAchievementCardLoading: boolean;\r\n error: string | Record;\r\n loadedBottles: Array;\r\n\r\n isTimeLineDayLoading: boolean;\r\n isTimeLineDayLoaded: boolean;\r\n errorTimeLineDay: string;\r\n timeLineDataDay: null | Object;\r\n\r\n isTimeLineWeekLoading: boolean;\r\n isTimeLineWeekLoaded: boolean;\r\n errorTimeLineWeek: string;\r\n timeLineDataWeek: null | Object;\r\n\r\n timeLineDayView: string;\r\n timeLineSelectedHour: number;\r\n timeLineAMPMmodificator: string;\r\n errorMessages: Array;\r\n commonMaintenanceEvents: Array;\r\n achievement: number;\r\n productionRateChangeLastWeek: number;\r\n productionRateChangeFleet: number;\r\n productionRate: number;\r\n productionChangeLastWeek: number;\r\n productionChangeFleet: number;\r\n production: number;\r\n printerImage: string;\r\n lastStatus: string;\r\n lastSoftwareUpdate: string;\r\n availabilityChangeLastWeek: number;\r\n availabilityChangeFleet: number;\r\n availability: number;\r\n appVersion: string;\r\n maintenanceDuration: number;\r\n errorDuration: number;\r\n isQualisetLoading: boolean;\r\n qualisetData: null | any;\r\n isNotReportingPeriod?: boolean;\r\n availabilityTotalDurationReported?: number;\r\n isAvailabilityCardLoading?: boolean;\r\n isImpressionCardsLoading?: boolean;\r\n systemModel: string;\r\n};\r\n\r\nexport enum TankType {\r\n small = 'Small',\r\n big = 'Big',\r\n}\r\nexport type SystemPageCardResponseType = {\r\n achievement: number;\r\n productionRateChangeLastWeek: number;\r\n productionRateChangeFleet: number;\r\n productionRate: number;\r\n productionChangeLastWeek: number;\r\n productionChangeFleet: number;\r\n production: number;\r\n printerImage: string;\r\n lastStatus: string;\r\n lastSoftwareUpdate: string;\r\n availabilityChangeLastWeek: number;\r\n availabilityChangeFleet: number;\r\n availability: number;\r\n appVersion: string;\r\n errorDuration: number;\r\n errorPercentage: number;\r\n maintenanceDuration: number;\r\n maintenancePercentage: number;\r\n productivity?: number;\r\n productivityChangeFleet?: number;\r\n productivityChangeLastWeek?: number;\r\n isNotReportingPeriod?: boolean;\r\n availabilityTotalDurationReported?: number;\r\n};\r\n\r\nexport type UniversalSystemPageRequestType = ReportDateRequest & {\r\n systemGroup: string;\r\n system: string;\r\n isSilent?: boolean;\r\n};\r\n\r\nexport type ColorDataItem = {\r\n colorName: string;\r\n colorValue: number;\r\n isBottleMode?: boolean;\r\n};\r\nexport enum DtgCardSizes {\r\n Small = 'Small',\r\n Medium = 'Medium',\r\n Large = 'Large',\r\n}\r\nexport enum DtgSizes {\r\n small = 'small',\r\n medium = 'medium',\r\n large = 'large',\r\n}\r\nexport enum DtfCardNames {\r\n Production = 'Production',\r\n ProdSolid = 'Prod. Solid',\r\n Quality = 'Quality',\r\n QualitySolid = 'Quality Solid',\r\n}\r\nexport enum DtgCardColors {\r\n white = 'white',\r\n black = 'black',\r\n}\r\nexport enum DtfPageSelector {\r\n BySize = 'BySize',\r\n ByPrintType = 'ByPrintType',\r\n}\r\nexport enum DtgCardButtonID {\r\n whiteSmall = 'white_small',\r\n whiteMedium = 'white_medium',\r\n whiteLarge = 'white_large',\r\n blackSmall = 'black_small',\r\n blackMedium = 'black_medium',\r\n blackLarge = 'black_large',\r\n}\r\n\r\nexport type JobSummaryStateTypes = {\r\n loading: boolean;\r\n isApolloLoading: boolean;\r\n isApolloLoaded: boolean;\r\n isDTGLoading: boolean;\r\n isDTGLoaded: boolean;\r\n isDTFLoading: boolean;\r\n isDTFLoaded: boolean;\r\n error: string | {} | Array;\r\n DTG: Array;\r\n Apollo: Array;\r\n DTF: Array;\r\n dtfPageSelector: DtfPageSelector.BySize | DtfPageSelector.ByPrintType | string;\r\n isDtfResolutionGroupSelected?: boolean;\r\n isJobAnalysisChartsLoading?: boolean;\r\n};\r\nexport type SizeDTGCardType = {\r\n impressionSize: number;\r\n mediaType: number;\r\n isSummaryData: boolean;\r\n inkConsumption: number;\r\n printingTime: number;\r\n production: number;\r\n productionPercentFromTotal: number;\r\n selected?: boolean;\r\n id?: string;\r\n sizeString?: string;\r\n colorString?: string;\r\n isGrandTotal?: boolean;\r\n};\r\nexport type ModeDTFTypeCards = {\r\n mode: number;\r\n modeResolution: string;\r\n inkConsumption: number;\r\n printingTime: number;\r\n production: number;\r\n productionPercentFromTotal: number;\r\n selected: boolean;\r\n modeName: string;\r\n};\r\n\r\nexport type StyledComponentWithAnyType = any;\r\nexport type GenericPropsType = any;\r\n\r\nexport enum PeriodTypes {\r\n Week = 'Week',\r\n Month = 'Month',\r\n Quarter = 'Quarter',\r\n Year = 'Year',\r\n}\r\n\r\nexport enum ActiveReportsTypes {\r\n Overview = 'Overview',\r\n SystemAnalysis = 'SystemAnalysis',\r\n JobAnalysis = 'JobAnalysis',\r\n}\r\nexport enum MobileTabsTypes {\r\n JobSummary = 'JobSummary',\r\n Charts = 'Charts',\r\n}\r\nexport enum TimeFrameSelectorViews {\r\n Mixed = 'mixed',\r\n Buttons = 'buttons',\r\n DropDown = 'dropdown',\r\n}\r\n//serviceTicketPage\r\nexport type ServiceTicketStateBySystem = {\r\n id: string;\r\n name: string;\r\n importedCustomerId: string;\r\n isLoading: boolean;\r\n isLoaded: boolean;\r\n error: string;\r\n};\r\nexport enum DayViewType {\r\n day,\r\n hour,\r\n}\r\nexport enum ConfigNamesEnum {\r\n Dev = 'Dev',\r\n Production = 'Production',\r\n Test = 'Test',\r\n Staging = 'Staging',\r\n DevOps = 'dvps',\r\n Auto = 'Auto',\r\n CustomAutomation = 'CustomAutomation',\r\n}\r\nexport const inkConsuptionPerJobStatuses = {\r\n validToDownload: 'Download report',\r\n tooMuchData:\r\n 'Export limited to 200k Jobs. Please change the date range to reduce the number of jobs.',\r\n tooMuchDataShortMsg: 'Exceeds 1.048M limit.',\r\n noData: 'No Data for this period.',\r\n initialState: 'initialState',\r\n};\r\nexport const systemAnalysisDownloadStatuses = inkConsuptionPerJobStatuses;\r\nexport type WebSocketUnit = { SerialNumber: string; NumberOfImpressions: number };\r\nexport type WebSocketPageState = { data: Array };\r\nexport type CustomTimeFrameProperites = {\r\n isShiftModeSelected: boolean;\r\n customTimeFrameStartDate: Date;\r\n customTimeFrameStartHour: number;\r\n customTimeFrameEndDate: Date;\r\n customTimeFrameEndHour: number;\r\n};\r\ndeclare global {\r\n interface Window {\r\n domain: { domain: string };\r\n clientID: { clientID: string };\r\n redirectUri: { redirectUri: string };\r\n audience: { audience: string };\r\n returnTo: { returnTo: string };\r\n env: string;\r\n API_ROUTER_HOST: { API_ROUTER_HOST: string };\r\n AUTH0_CLAIMS_NAMESPACE: { AUTH0_CLAIMS_NAMESPACE: string };\r\n SELF_HOST: { SELF_HOST: string };\r\n USER_LOGOUT_TIMEOUT: { USER_LOGOUT_TIMEOUT: number };\r\n USER_AGREEMENT_VERSION: { USER_AGREEMENT_VERSION: string };\r\n WEEK_START: { WEEK_START: number };\r\n FILTER_HIDE: { FILTER_HIDE: boolean };\r\n SHOW_PBI_REPORT_PAGES_PANE: { SHOW_PBI_REPORT_PAGES_PANE: boolean };\r\n SHOW_PBI_REPORT_FILTERS_PANE: { SHOW_PBI_REPORT_FILTERS_PANE: boolean };\r\n REPORTS_REFRESH_TIMEOUT_SECONDS: { REPORTS_REFRESH_TIMEOUT_SECONDS: number };\r\n MAX_LOAD_ATTEMPTS: { MAX_LOAD_ATTEMPTS: number };\r\n SPLIT_WEEK_BY_END_OF_YEAR: { SPLIT_WEEK_BY_END_OF_YEAR: boolean };\r\n ENV_NAME: { ENV_NAME: string };\r\n PLATFORM: { PLATFORM: string };\r\n SHOW_VERSION_VERSION_LABEL: { SHOW_VERSION_VERSION_LABEL: boolean };\r\n GENERATE_SOURCEMAP: { GENERATE_SOURCEMAP: boolean };\r\n LOGGER_INSTRUMENTAION_KEY: { LOGGER_INSTRUMENTAION_KEY: string };\r\n REFRESH_API_INTERVAL: { REFRESH_API_INTERVAL: number };\r\n UNSUBSCRIBE_END_POINT: { UNSUBSCRIBE_END_POINT: string };\r\n SERVICE_TICKET_END_POINT: { SERVICE_TICKET_END_POINT: string };\r\n BLOB_URL: { BLOB_URL: string };\r\n API_URL: { API_URL: string };\r\n RECAPTCHA_KEY: { RECAPTCHA_KEY: string };\r\n REAL_TIME_USER_LIST: { REAL_TIME_USER_LIST: string };\r\n }\r\n}\r\n","import FileDownload from 'js-file-download';\r\nimport { createAsyncAction, createStandardAction } from 'typesafe-actions';\r\nimport { ISystemAnalysisRequest, ISystemAnalysisResponse } from '../models/SystemAnalysisData';\r\nimport { authService } from 'services/AuthProvider';\r\nimport { makeApiUrl } from 'actions/_shared/utils';\r\nimport apiAction from 'actions/_shared/apiAction';\r\nimport { getCustomSearchParameters } from 'helpers/date';\r\n\r\nimport { KonnectAnalytics } from 'KonnectAnalytics/konnectAnalytics';\r\nimport { add, format } from 'date-fns';\r\nimport { TimeFrameEnum } from 'models/ReportData';\r\nimport { UserSystemGroup } from 'store/storeTypes';\r\n\r\nexport const getSystemAnalysisAC = createAsyncAction(\r\n 'GET_SYSTEM_ANALYSIS_STARTED',\r\n 'GET_SYSTEM_ANALYSIS_SUCCESS',\r\n 'GET_SYSTEM_ANALYSIS_FAILED'\r\n)();\r\n\r\nexport function getSystemAnalysis({\r\n day,\r\n week,\r\n custom,\r\n systemGroup,\r\n isSilent,\r\n isEverReportedSystems,\r\n systems,\r\n}: ISystemAnalysisRequest) {\r\n const { isAuthenticated, idTokenPayload } = authService;\r\n const url = makeApiUrl('/api/reports/systems');\r\n if (isAuthenticated() && idTokenPayload && idTokenPayload.sub) {\r\n const customTimeframeParameters = getCustomSearchParameters(custom);\r\n\r\n return apiAction({\r\n request: {\r\n url,\r\n method: systemGroup === UserSystemGroup.Apollo ? 'POST' : 'GET',\r\n params: {\r\n day,\r\n week,\r\n custom: customTimeframeParameters,\r\n systemGroup,\r\n },\r\n data: {\r\n systems,\r\n },\r\n },\r\n logic: {\r\n onFailed: (error, dispatch) => dispatch(getSystemAnalysisAC.failure(error)),\r\n onStarted: dispatch => {\r\n dispatch(getSystemAnalysisAC.request({ isSilent }));\r\n },\r\n onSuccess: (data, dispatch) => {\r\n dispatch(getSystemAnalysisAC.success({ ...data, isEverReportedSystems }));\r\n },\r\n },\r\n });\r\n }\r\n}\r\n\r\nexport const getSystemAnalysisNickNamesAC = createAsyncAction(\r\n 'GET_SYSTEM_ANALYSIS_NICK_NAMES_STARTED',\r\n 'GET_SYSTEM_ANALYSIS_NICK_NAMES_SUCCESS',\r\n 'GET_SYSTEM_ANALYSIS_NICK_NAMES_FAILED'\r\n)();\r\nexport function getSystemAnalysisNickNames({ isSilent, systems, systemGroup }) {\r\n const { isAuthenticated, idTokenPayload } = authService;\r\n const url = makeApiUrl('/api/system-data/systems-name');\r\n if (isAuthenticated() && idTokenPayload && idTokenPayload.sub) {\r\n return apiAction({\r\n request: {\r\n url,\r\n method: 'GET',\r\n data: {\r\n systems,\r\n },\r\n },\r\n logic: {\r\n onFailed: (error, dispatch) => {\r\n dispatch(getSystemAnalysisNickNamesAC.failure(error));\r\n },\r\n onStarted: dispatch => {\r\n dispatch(getSystemAnalysisNickNamesAC.request({ isSilent }));\r\n },\r\n onSuccess: (data, dispatch) => {\r\n dispatch(getSystemAnalysisNickNamesAC.success(data.nicknameResponse));\r\n },\r\n },\r\n });\r\n }\r\n}\r\n\r\nexport const changeNickNameAC = createAsyncAction(\r\n 'CHANGE_NICKNAME_STARTED',\r\n 'CHANGE_NICKNAME_SUCCESS',\r\n 'CHANGE_NICKNAME_FAILED'\r\n)();\r\nexport function changeNickName({ serialNumber, nickName, selectedSystemGroup }) {\r\n const { isAuthenticated, idTokenPayload } = authService;\r\n const url = makeApiUrl('/api/system-data/system-name');\r\n if (isAuthenticated() && idTokenPayload && idTokenPayload.sub) {\r\n return apiAction({\r\n request: {\r\n url,\r\n method: 'POST',\r\n data: {\r\n serialNumber,\r\n nickName,\r\n },\r\n },\r\n logic: {\r\n onFailed: (error, dispatch) => dispatch(changeNickNameAC.failure(error)),\r\n onStarted: dispatch => dispatch(changeNickNameAC.request({ isLoading: true })),\r\n onSuccess: (data, dispatch) =>\r\n dispatch(changeNickNameAC.success({ data, selectedSystemGroup })),\r\n },\r\n });\r\n }\r\n}\r\nexport const setInitialValueToChangeNameField = createStandardAction(\r\n 'SET_INITIAL_VALUE_TO_CHANGE_NAME_FIELD'\r\n)<{ systemName: string }>();\r\nexport const setSelectedSystemName = createStandardAction('SET_SELECTED_SYSTEM_NAME')();\r\nexport const setSortByHeaderCell = createStandardAction('SET_SORT_BY_HEADER_CELL_NAME')();\r\n\r\n//* Download System Analysis Report\r\n\r\nexport const downloadSystemAnalysisReportAC = createAsyncAction(\r\n 'DOWNLOAD_SYSTEM_ANALYSIS_REPORT_STARTED',\r\n 'DOWNLOAD_SYSTEM_ANALYSIS_REPORT_SUCCESS',\r\n 'DOWNLOAD_SYSTEM_ANALYSIS_REPORT_FAILED'\r\n)();\r\n\r\nexport const downloadSystemAnalysisReport = ({\r\n week,\r\n day,\r\n custom,\r\n systems,\r\n SystemGroupType,\r\n}: any) => {\r\n const url = makeApiUrl('/api/job-analysis-report/errors-and-maintenance-file');\r\n const { isAuthenticated, idTokenPayload } = authService;\r\n if (isAuthenticated() && idTokenPayload && idTokenPayload.sub) {\r\n const customTimeframeParameters = getCustomSearchParameters(custom);\r\n return apiAction({\r\n request: {\r\n url,\r\n method: 'POST',\r\n params: {\r\n week,\r\n day,\r\n custom: customTimeframeParameters,\r\n SystemGroupType,\r\n responseType: 'blob',\r\n },\r\n data: {\r\n systems,\r\n },\r\n },\r\n logic: {\r\n onFailed: (error, dispatch) => {\r\n dispatch(\r\n downloadSystemAnalysisReportAC.failure({\r\n selectedSystemGroup: SystemGroupType,\r\n name: error.name,\r\n message: 'something went wrong, try again later',\r\n })\r\n );\r\n },\r\n onStarted: dispatch => {\r\n dispatch(\r\n downloadSystemAnalysisReportAC.request({\r\n selectedSystemGroup: SystemGroupType,\r\n })\r\n );\r\n },\r\n onSuccess: async (data, dispatch, state, status) => {\r\n //* 2 cases - the file is too big and there is no file.\r\n const result =\r\n status === 204\r\n ? 'not downloaded, no content'\r\n : status === 205\r\n ? 'not downloaded, file is too big'\r\n : 'downloaded';\r\n\r\n KonnectAnalytics.downloadSystemAnalysisReport({\r\n result,\r\n });\r\n //download only in case of 200 status\r\n const timeframe = state.reports.filterState[SystemGroupType].timeframe;\r\n const dateStr = getFileName({\r\n date: state.reports.filterState[SystemGroupType].selectedDate,\r\n timeframe,\r\n customTimeframeParameters,\r\n });\r\n status === 200 && FileDownload(data, `Events_Error_Maintenance_${dateStr}.xlsx`);\r\n dispatch(\r\n downloadSystemAnalysisReportAC.success({ selectedSystemGroup: SystemGroupType, status })\r\n );\r\n },\r\n },\r\n });\r\n }\r\n};\r\nconst getFileName = ({ date, timeframe, customTimeframeParameters }) => {\r\n if (timeframe === TimeFrameEnum.day) {\r\n const formattedDate = format(date, 'MMMM_d_yyyy');\r\n const finalString = formattedDate.replace(/\\s+/g, '_');\r\n return finalString;\r\n }\r\n if (timeframe === TimeFrameEnum.week) {\r\n const formattedDate = format(date, 'MMMM_d_yyyy');\r\n const finalString = formattedDate.replace(/\\s+/g, '_');\r\n const endDate = add(date, { days: 6 });\r\n const formattedEndDate = format(endDate, 'MMMM_d_yyyy');\r\n const finalEndDateString = formattedEndDate.replace(/\\s+/g, '_');\r\n return `${finalString}-${finalEndDateString}`;\r\n }\r\n if (timeframe === TimeFrameEnum.custom) {\r\n return customTimeframeParameters.split('&')[0];\r\n } else {\r\n return '';\r\n }\r\n};\r\n//*Validating possibility of Download System Analysis Report\r\nexport const checkSystemAnalysisReportValidToDownloadAC = createAsyncAction(\r\n 'IS_SYSTEM_ANALYSIS_REPORT_VALID_TO_DOWNLOAD_STARTED',\r\n 'IS_SYSTEM_ANALYSIS_REPORT_VALID_TO_DOWNLOAD_SUCCESS',\r\n 'IS_SYSTEM_ANALYSIS_REPORT_VALID_TO_DOWNLOAD_FAILED'\r\n)();\r\n\r\nexport const checkSystemAnalysisReportValidToDownload = ({\r\n week,\r\n day,\r\n custom,\r\n systems,\r\n SystemGroupType,\r\n}: any) => {\r\n const url = makeApiUrl('/api/job-analysis-report/check-errors-and-maintenance-file');\r\n const { isAuthenticated, idTokenPayload } = authService;\r\n if (isAuthenticated() && idTokenPayload && idTokenPayload.sub) {\r\n const customTimeframeParameters = getCustomSearchParameters(custom);\r\n\r\n return apiAction({\r\n request: {\r\n url,\r\n method: 'POST',\r\n params: {\r\n week,\r\n day,\r\n custom: customTimeframeParameters,\r\n SystemGroupType,\r\n },\r\n data: {\r\n systems,\r\n },\r\n },\r\n logic: {\r\n onFailed: (error, dispatch) => {\r\n dispatch(\r\n checkSystemAnalysisReportValidToDownloadAC.failure({\r\n selectedSystemGroup: SystemGroupType,\r\n name: error.name,\r\n message: 'something went wrong, try again later',\r\n })\r\n );\r\n },\r\n onStarted: dispatch => {\r\n dispatch(\r\n checkSystemAnalysisReportValidToDownloadAC.request({\r\n selectedSystemGroup: SystemGroupType,\r\n })\r\n );\r\n },\r\n onSuccess: (data, dispatch, state, status) => {\r\n dispatch(\r\n checkSystemAnalysisReportValidToDownloadAC.success({\r\n selectedSystemGroup: SystemGroupType,\r\n status,\r\n })\r\n );\r\n },\r\n },\r\n });\r\n }\r\n};\r\n","import { Action } from 'redux';\r\nimport { ThunkDispatch } from 'redux-thunk';\r\nimport { TreeNodeProps } from 'react-dropdown-tree-select';\r\nimport { createStandardAction as crAction } from 'typesafe-actions';\r\n\r\nimport { Store, AppUser, MODAL_STATUS, Ids } from '../store/storeTypes';\r\nimport { Scheduler, Frequency } from '../models/Scheduler';\r\nimport ScopeData from '../models/ScopeData';\r\nimport { scopeSelector } from '../selectors/entitiesSelectors';\r\n\r\ninterface OpenModalSchedulerCreatePayload extends ScopeData {\r\n appUser: AppUser;\r\n}\r\nexport const openModalSchedulerCreateAC = crAction('OPEN_MODAL_SCHEDULER_CREATE')<\r\n OpenModalSchedulerCreatePayload\r\n>();\r\nexport function openModalSchedulerCreate() {\r\n return function(dispatch: ThunkDispatch, getState: () => Store) {\r\n const state: Store = getState();\r\n\r\n dispatch(\r\n openModalSchedulerCreateAC({\r\n appUser: state.appUser,\r\n ...scopeSelector(state),\r\n })\r\n );\r\n };\r\n}\r\n\r\ninterface OpenModalSchedulerEditPayload extends ScopeData {\r\n scheduler: Scheduler;\r\n appUser: AppUser;\r\n}\r\nexport const openModalSchedulerEditAC = crAction('OPEN_MODAL_SCHEDULER_EDIT')<\r\n OpenModalSchedulerEditPayload\r\n>();\r\nexport function openModalSchedulerEdit(id: string) {\r\n return function(dispatch: ThunkDispatch, getState: () => Store) {\r\n const state: Store = getState();\r\n\r\n dispatch(\r\n openModalSchedulerEditAC({\r\n scheduler: state.entities.schedulers.byId[id],\r\n appUser: state.appUser,\r\n ...scopeSelector(state),\r\n })\r\n );\r\n };\r\n}\r\n\r\ninterface OpenModalSchedulerDuplicatePayload extends ScopeData {\r\n scheduler: Scheduler;\r\n appUser: AppUser;\r\n}\r\nexport const openModalSchedulerDuplicateAC = crAction('OPEN_MODAL_SCHEDULER_DUPLICATE')<\r\n OpenModalSchedulerDuplicatePayload\r\n>();\r\nexport function openModalSchedulerDuplicate(id: string) {\r\n return function(dispatch: ThunkDispatch, getState: () => Store) {\r\n const state: Store = getState();\r\n\r\n dispatch(\r\n openModalSchedulerDuplicateAC({\r\n scheduler: state.entities.schedulers.byId[id],\r\n appUser: state.appUser,\r\n ...scopeSelector(state),\r\n })\r\n );\r\n };\r\n}\r\n\r\nexport const closeModalScheduler = crAction('CLOSE_MODAL_EMAIL_SCHEDULER')();\r\n\r\nexport const openModalSchedulerPreviewAC = crAction('OPEN_MODAL_SCHEDULER_PREVIEW')();\r\nexport function openModalSchedulerPreview(id: string) {\r\n return function(dispatch: ThunkDispatch, getState: () => Store) {\r\n const state: Store = getState();\r\n const scheduler = state.entities.schedulers.byId[id];\r\n dispatch(openModalSchedulerPreviewAC(scheduler));\r\n };\r\n}\r\n\r\nexport const closeModalSchedulerPreview = crAction('CLOSE_MODAL_SCHEDULER_PREVIEW')();\r\n\r\ninterface PlainValue {\r\n field: string;\r\n value: any;\r\n}\r\nexport const changeSchedulerFormValue = crAction('CHANGE_SCHEDULER_FORM_PLAIN_VALUE')();\r\n\r\nexport const changeSchedulerFormStartDate = crAction('CHANGE_SCHEDULER_FORM_START_DATE')();\r\n\r\nexport const changeSchedulerFormStartTime = crAction('CHANGE_SCHEDULER_FORM_START_TIME')();\r\n\r\nexport const changeSchedulerFormRepeat = crAction(\r\n 'CHANGE_SCHEDULER_FORM_REPEAT'\r\n)();\r\n\r\nexport const setStatusModalScheduler = crAction('SET_STATUS_MODAL_SCHEDULER')();\r\n\r\nexport interface ChangeSchedulerFormScopePayload extends ScopeData {\r\n selectedNodes: TreeNodeProps[];\r\n userCustomerIds: string[];\r\n userSiteIds: Ids;\r\n userSystemIds: Ids;\r\n}\r\n\r\nexport const changeSchedulerFormScopeAC = crAction('CHANGE_SCHEDULER_FORM_SCOPE')<\r\n ChangeSchedulerFormScopePayload\r\n>();\r\nexport function changeSchedulerFormScope(selectedNodes: TreeNodeProps[]) {\r\n return function(dispatch: ThunkDispatch, getState: () => Store) {\r\n const state: Store = getState();\r\n const { userOrgs, userSites, userSystems } = state.ui.schedulerForm;\r\n const { customerIds, siteIds, systemIds } = state.appUser;\r\n\r\n dispatch(\r\n changeSchedulerFormScopeAC({\r\n selectedNodes,\r\n // ...scopeSelector(state),\r\n customers: userOrgs!,\r\n sites: userSites!,\r\n systems: userSystems!,\r\n userCustomerIds: customerIds!,\r\n userSiteIds: siteIds!,\r\n userSystemIds: systemIds!,\r\n })\r\n );\r\n };\r\n}\r\n","export default __webpack_public_path__ + \"static/media/AchievementsImage.c23e985f.svg\";","import { createStandardAction, createAsyncAction } from 'typesafe-actions';\r\n\r\nimport { ThunkDispatch } from 'redux-thunk';\r\nimport { Action } from 'redux';\r\nimport { authService } from 'services/AuthProvider';\r\nimport handleErrorAction from './_shared/handleErrorAction';\r\nimport apiAction, { apiActionSimple } from './_shared/apiAction';\r\nimport { makeApiUrl } from './_shared/utils';\r\nimport { AppUser, Store } from 'store/storeTypes';\r\nimport config from '../config/config';\r\n\r\nexport const setUserEmail = createStandardAction('SET_USER_EMAIL')<{ email: string }>();\r\nexport const setUserFirstName = createStandardAction('SET_USER_FIRST_NAME')<{\r\n firstName: string;\r\n}>();\r\nexport const setUserLastName = createStandardAction('SET_USER_USER_LAST_NAME')<{\r\n lastName: string;\r\n}>();\r\n\r\nexport const setAppUserParams = createStandardAction('SET_APP_USER_PARAMS')();\r\n\r\nexport const saveAppUserLocaleStarted = createStandardAction('SAVE_APP_USER_LOCALE_STARTED')();\r\nexport const saveAppUserLocaleSuccess = createStandardAction('SAVE_APP_USER_LOCALE_SUCCESS')<\r\n AppUser\r\n>();\r\nexport const saveAppUserLocaleFailed = createStandardAction('SAVE_APP_USER_LOCALE_FAILED')();\r\n\r\nexport function saveAppUserLocale(locale: string) {\r\n const userLocaleUrl = makeApiUrl('/api/users/locale');\r\n return apiActionSimple({\r\n request: {\r\n url: userLocaleUrl,\r\n method: 'POST',\r\n data: { localeCode: locale },\r\n },\r\n actions: [saveAppUserLocaleStarted, saveAppUserLocaleSuccess, saveAppUserLocaleFailed],\r\n interceptor: state => !state.appUser.id,\r\n });\r\n}\r\n\r\nexport const loadAppUserFullStarted = createStandardAction('LOAD_APP_USER_FULL_STARTED')();\r\nexport const loadAppUserFullSuccess = createStandardAction('LOAD_APP_USER_FULL_SUCCESS')();\r\nexport const loadAppUserFullFailed = createStandardAction('LOAD_APP_USER_FULL_FAILED')();\r\n\r\nexport function getAppUserFull() {\r\n const { isAuthenticated, idTokenPayload } = authService;\r\n\r\n const userFullUrl = makeApiUrl('/api/users/profile-data');\r\n if (isAuthenticated() && idTokenPayload && idTokenPayload.sub) {\r\n return apiActionSimple({\r\n request: { url: userFullUrl },\r\n actions: [loadAppUserFullStarted, loadAppUserFullSuccess, loadAppUserFullFailed],\r\n });\r\n }\r\n}\r\n\r\nexport const setAppUserAgreementVersionAC = createAsyncAction(\r\n 'SET_APP_USER_AGREEMENT_VERSION_STARTED',\r\n 'SET_APP_USER_AGREEMENT_VERSION_SUCCESS',\r\n 'SET_APP_USER_AGREEMENT_VERSION_FAILED'\r\n)();\r\n\r\nexport function setAppUserAgreementVersion(version: string) {\r\n const { isAuthenticated, idTokenPayload } = authService;\r\n const agreementVersion = `${idTokenPayload.sub}agreement_version`;\r\n if (isAuthenticated() && version && idTokenPayload && idTokenPayload.sub) {\r\n if (!localStorage.getItem(agreementVersion)) {\r\n localStorage.setItem(agreementVersion, JSON.stringify(version));\r\n }\r\n const userAgreementUrl = makeApiUrl('/api/users/agreement');\r\n return apiActionSimple({\r\n request: {\r\n url: userAgreementUrl,\r\n method: 'POST',\r\n data: { version },\r\n },\r\n actions: [\r\n setAppUserAgreementVersionAC.request,\r\n setAppUserAgreementVersionAC.success,\r\n setAppUserAgreementVersionAC.failure,\r\n ],\r\n });\r\n }\r\n}\r\n\r\nexport const setAppUserAgreementAC = createAsyncAction(\r\n 'SET_APP_USER_AGREEMENT_STARTED',\r\n 'SET_APP_USER_AGREEMENT_SUCCESS',\r\n 'SET_APP_USER_AGREEMENT_FAILED'\r\n)();\r\n\r\nexport function setAppUserAgreement(isApproved: boolean, version: string) {\r\n const { isAuthenticated, idTokenPayload } = authService;\r\n const agreementVersion = `${idTokenPayload.sub}agreement_version`;\r\n const agreementApproved = `${idTokenPayload.sub}agreement_approved`;\r\n\r\n if (isAuthenticated() && version && idTokenPayload && idTokenPayload.sub) {\r\n if (!localStorage.getItem(agreementVersion)) {\r\n localStorage.setItem(agreementVersion, JSON.stringify(version));\r\n }\r\n if (!localStorage.getItem(agreementApproved)) {\r\n localStorage.setItem(agreementApproved, JSON.stringify(isApproved));\r\n }\r\n\r\n const userAgreementUrl = makeApiUrl('/api/users/agreement');\r\n return apiActionSimple({\r\n request: {\r\n url: userAgreementUrl,\r\n method: 'POST',\r\n data: { isApproved, version },\r\n },\r\n actions: [\r\n setAppUserAgreementAC.request,\r\n setAppUserAgreementAC.success,\r\n setAppUserAgreementAC.failure,\r\n ],\r\n });\r\n }\r\n}\r\n\r\ninterface LoadPortalApiUrlPayload {\r\n apiUrl: string;\r\n}\r\n\r\nexport const loadPortalApiUrlStarted = createStandardAction('LOAD_PORTAL_API_STARTED')();\r\nexport const loadPortalApiUrlSuccess = createStandardAction('LOAD_PORTAL_API_SUCCESS')<\r\n LoadPortalApiUrlPayload\r\n>();\r\nexport const loadPortalApiUrlFailed = createStandardAction('LOAD_PORTAL_API_FAILED')();\r\n\r\nexport function getPortalApiUrl() {\r\n const portalApiUrl = localStorage.getItem('portalApiUrl');\r\n if (!portalApiUrl) {\r\n return apiAction({\r\n request: {\r\n url: config.API_ROUTER_HOST as string,\r\n method: 'GET',\r\n },\r\n logic: {\r\n onStarted: dispatch => dispatch(loadPortalApiUrlStarted()),\r\n onSuccess: (data, dispatch) => {\r\n localStorage.setItem('portalApiUrl', data);\r\n dispatch(loadPortalApiUrlSuccess({ apiUrl: data }));\r\n },\r\n onFailed: (error, dispatch) => {\r\n dispatch(\r\n handleErrorAction(error, `API Router: ${error.message}`, [loadPortalApiUrlFailed])\r\n );\r\n },\r\n },\r\n });\r\n }\r\n\r\n return async function(dispatch: ThunkDispatch, getState: () => Store) {\r\n if (getState().appUser.apiUrl) return;\r\n dispatch(loadPortalApiUrlSuccess({ apiUrl: portalApiUrl! }));\r\n };\r\n}\r\n","import React, { useEffect, useState } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport styled from 'styled-components/macro';\r\nimport { withSnackbar, WithSnackbarProps } from 'notistack';\r\nimport MuiIconButton from '@material-ui/core/IconButton';\r\nimport MuiCloseIcon from '@material-ui/icons/Close';\r\n\r\nimport { removeNotification } from '../../actions/uiActions';\r\nimport { Store, Notification } from '../../store/storeTypes';\r\n\r\nconst IconButton = styled(MuiIconButton)`\r\n color: white;\r\n padding: 5px;\r\n`;\r\n\r\nconst CloseIcon = styled(MuiCloseIcon)`\r\n font-size: 20px;\r\n`;\r\n\r\ninterface NotifierProps extends WithSnackbarProps {\r\n notifications: Notification[];\r\n removeNotification: (key: string) => void;\r\n}\r\n\r\nconst Notifier = React.memo((props: NotifierProps) => {\r\n const [displayed, setDisplayed] = useState([]);\r\n const { notifications = [] }: { notifications: Notification[] } = props;\r\n\r\n useEffect(() => {\r\n notifications.forEach(notification => {\r\n const action = (key: string) => (\r\n {\r\n props.closeSnackbar(key);\r\n }}>\r\n \r\n \r\n );\r\n\r\n const { message, key, options } = notification;\r\n\r\n // Do nothing if snackbar is already displayed\r\n if (displayed.includes(key)) return;\r\n\r\n // Display snackbar using notistack\r\n props.enqueueSnackbar(message, {\r\n action,\r\n preventDuplicate: true,\r\n ...options,\r\n });\r\n\r\n // Keep track of snackbars that we've displayed\r\n setDisplayed([...displayed, key]);\r\n\r\n // Dispatch action to remove snackbar from redux store\r\n props.removeNotification(key);\r\n });\r\n }, [notifications, displayed, props]);\r\n\r\n return null;\r\n});\r\n\r\nconst mapStateToProps = (store: Store) => ({\r\n notifications: store.ui.notificationQueue,\r\n});\r\n\r\nconst mapDispatchToProps = { removeNotification };\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withSnackbar(Notifier));\r\n","export default {\r\n palette: {\r\n primary: { main: '#2EA1F8' },\r\n },\r\n typography: {\r\n useNextVariants: true,\r\n fontFamily: 'Rubik, Helvetica, sans-serif',\r\n },\r\n};\r\n","import { createReducer } from 'typesafe-actions';\r\n\r\nimport { actions, RootAction } from '../actions';\r\nimport { Id, ApiStore } from '../store/storeTypes';\r\n\r\n// TODO: move all logic to new apiStateReducer\r\n\r\nconst INIT_STATE: ApiStore = {\r\n isLoadingAppUser: false,\r\n isLoadingUsers: false,\r\n isSavingUser: false,\r\n isDeletingUser: false,\r\n isLoadingCustomers: false,\r\n isLoadingSites: false,\r\n isLoadingSystems: false,\r\n isLoadingPbiDefinitions: false,\r\n isLoadingGoals: false,\r\n isSavingGoals: false,\r\n isLoadingSchedulers: false,\r\n isLoadingSchedulerTypes: false,\r\n isSavingScheduler: false,\r\n pendingInvitationUserIds: [],\r\n errors: [],\r\n};\r\n\r\nconst {\r\n loadUsersStarted,\r\n loadUsersSuccess,\r\n loadUsersFailed,\r\n saveUserStarted,\r\n saveUserSuccess,\r\n saveUserFailed,\r\n deleteUserStarted,\r\n deleteUserSuccess,\r\n deleteUserFailed,\r\n inviteUserStarted,\r\n inviteUserSuccess,\r\n inviteUserFailed,\r\n} = actions.userApi;\r\n\r\nconst {\r\n loadCustomersStarted,\r\n loadCustomersSuccess,\r\n loadCustomersFailed,\r\n loadSitesStarted,\r\n loadSitesSuccess,\r\n loadSitesFailed,\r\n loadSystemsStarted,\r\n loadSystemsSuccess,\r\n loadSystemsFailed,\r\n} = actions.scopeApi;\r\n\r\nconst {\r\n loadGoalsStarted,\r\n loadGoalsSuccess,\r\n saveGoalStarted,\r\n saveGoalSuccess,\r\n saveGoalFailed,\r\n} = actions.goalApi;\r\n\r\nconst {\r\n loadSchedulersStarted,\r\n loadSchedulersSuccess,\r\n loadSchedulersFailed,\r\n saveSchedulerStarted,\r\n saveSchedulerSuccess,\r\n saveSchedulerFailed,\r\n loadSchedulerTypesStarted,\r\n loadSchedulerTypesSuccess,\r\n loadSchedulerTypesFailed,\r\n} = actions.schedulerApi;\r\n\r\nexport const apiReducer = createReducer(INIT_STATE)\r\n .handleAction(loadUsersStarted, state => toggleState(state, 'Loading', 'Users', true))\r\n .handleAction([loadUsersSuccess, loadUsersFailed], (state, action) =>\r\n toggleState(state, 'Loading', 'Users', false, action.payload)\r\n )\r\n\r\n .handleAction(saveUserStarted, state => toggleState(state, 'Saving', 'User', true))\r\n .handleAction([saveUserSuccess, saveUserFailed], (state, action) =>\r\n toggleState(state, 'Saving', 'User', false, action.payload)\r\n )\r\n\r\n .handleAction(deleteUserStarted, state => toggleState(state, 'Deleting', 'User', true))\r\n .handleAction([deleteUserSuccess, deleteUserFailed], (state, action) =>\r\n toggleState(state, 'Deleting', 'User', false, action.payload)\r\n )\r\n\r\n .handleAction(inviteUserStarted, (state, action) => addPendingInvitation(state, action.payload))\r\n .handleAction(inviteUserSuccess, (state, action) => dropPendingInvitation(state, action.payload))\r\n .handleAction(inviteUserFailed, (state, action) =>\r\n addError(dropPendingInvitation(state, action.payload.id), action.payload.error)\r\n )\r\n\r\n .handleAction(loadCustomersStarted, state => toggleState(state, 'Loading', 'Customers', true))\r\n .handleAction([loadCustomersSuccess, loadCustomersFailed], (state, action) =>\r\n toggleState(state, 'Loading', 'Customers', false, action.payload)\r\n )\r\n\r\n .handleAction(loadSitesStarted, state => toggleState(state, 'Loading', 'Sites', true))\r\n .handleAction([loadSitesSuccess, loadSitesFailed], (state, action) =>\r\n toggleState(state, 'Loading', 'Sites', false, action.payload)\r\n )\r\n\r\n .handleAction(loadSystemsStarted, state => toggleState(state, 'Loading', 'Systems', true))\r\n .handleAction([loadSystemsSuccess, loadSystemsFailed], (state, action) =>\r\n toggleState(state, 'Loading', 'Systems', false, action.payload)\r\n )\r\n\r\n .handleAction(loadGoalsStarted, state => toggleState(state, 'Loading', 'Goals', true))\r\n .handleAction(loadGoalsSuccess, state => toggleState(state, 'Loading', 'Goals', false))\r\n\r\n .handleAction(saveGoalStarted, state => toggleState(state, 'Saving', 'Goals', true))\r\n .handleAction([saveGoalSuccess, saveGoalFailed], (state, action) =>\r\n toggleState(state, 'Saving', 'Goals', false, action.payload)\r\n )\r\n\r\n .handleAction(loadSchedulersStarted, state => toggleState(state, 'Loading', 'Schedulers', true))\r\n .handleAction([loadSchedulersSuccess, loadSchedulersFailed], (state, action) =>\r\n toggleState(state, 'Loading', 'Schedulers', false, action.payload)\r\n )\r\n\r\n .handleAction(loadSchedulerTypesStarted, state =>\r\n toggleState(state, 'Loading', 'SchedulerTypes', true)\r\n )\r\n .handleAction([loadSchedulerTypesSuccess, loadSchedulerTypesFailed], (state, action) =>\r\n toggleState(state, 'Loading', 'SchedulerTypes', false, action.payload)\r\n )\r\n\r\n .handleAction(saveSchedulerStarted, state => toggleState(state, 'Saving', 'Scheduler', true))\r\n .handleAction([saveSchedulerSuccess, saveSchedulerFailed], (state, action) =>\r\n toggleState(state, 'Saving', 'Scheduler', false, action.payload)\r\n );\r\n\r\nfunction toggleState(\r\n state: ApiStore,\r\n actionName: string,\r\n apiName: string,\r\n isInAction: boolean,\r\n payload?: Error\r\n): ApiStore {\r\n const newState = {\r\n ...state,\r\n [`is${actionName}${apiName}`]: isInAction,\r\n };\r\n return payload ? addError(newState, payload) : newState;\r\n}\r\n\r\nfunction addError(state: ApiStore, error: Error): ApiStore {\r\n const newState = { ...state, errors: [...state.errors, error] };\r\n return newState;\r\n}\r\n\r\nfunction addPendingInvitation(state: ApiStore, id: Id): ApiStore {\r\n const { pendingInvitationUserIds } = state;\r\n return {\r\n ...state,\r\n pendingInvitationUserIds: [...pendingInvitationUserIds, id],\r\n };\r\n}\r\n\r\nfunction dropPendingInvitation(state: ApiStore, id: Id): ApiStore {\r\n const i = state.pendingInvitationUserIds.indexOf(id);\r\n if (i < 0) return state;\r\n\r\n const pendingInvitationUserIds = [...state.pendingInvitationUserIds];\r\n pendingInvitationUserIds.splice(i, 1);\r\n return { ...state, pendingInvitationUserIds };\r\n}\r\n","import config from 'config/config';\r\nconst DEFAULT_WEEK_START = 1;\r\nconst DEFAULT_FILTER_HIDE = false;\r\nconst DEFAULT_SHOW_PBI_REPORT_PAGES_PANE = false;\r\nconst DEFAULT_SHOW_PBI_REPORT_FILTERS_PANE = false;\r\nconst DEFAULT_MAX_LOAD_ATTEMPTS = 5;\r\nconst DEFAULT_REPORTS_REFRESH_TIMEOUT_SECONDS = 300;\r\nconst DEFAULT_SPLIT_WEEK_BY_END_OF_YEAR = true;\r\nconst DEFAULT_USER_AGREEMENT_VERSION = '1.0';\r\nconst SHOW_VERSION_VERSION_LABEL = false;\r\n\r\nexport function getWeekStartEnv(\r\n paramName = 'REACT_APP_WEEK_START',\r\n defValue: 0 | 1 | 2 | 3 | 4 | 5 | 6 = DEFAULT_WEEK_START\r\n) {\r\n const parsed = Number(config[paramName]);\r\n if (Number.isNaN(parsed) || parsed < 0 || parsed > 6) return defValue;\r\n return parsed as 0 | 1 | 2 | 3 | 4 | 5 | 6;\r\n}\r\n\r\nexport function getFilterHideEnv(\r\n paramName = 'FILTER_HIDE',\r\n defValue: boolean = DEFAULT_FILTER_HIDE\r\n): boolean {\r\n return getBooleanEnv(paramName, defValue);\r\n}\r\n\r\nexport function getShowPbiReportPagesPaneEnv(\r\n paramName = 'SHOW_PBI_REPORT_PAGES_PANE',\r\n defValue: boolean = DEFAULT_SHOW_PBI_REPORT_PAGES_PANE\r\n): boolean {\r\n return getBooleanEnv(paramName, defValue);\r\n}\r\n\r\nexport function getShowPbiReportFiltersPaneEnv(\r\n paramName = 'SHOW_PBI_REPORT_FILTERS_PANE',\r\n defValue: boolean = DEFAULT_SHOW_PBI_REPORT_FILTERS_PANE\r\n): boolean {\r\n return getBooleanEnv(paramName, defValue);\r\n}\r\n\r\nexport function getMaxLoadAttemptsEnv(\r\n paramName = 'MAX_LOAD_ATTEMPTS',\r\n defValue: number = DEFAULT_MAX_LOAD_ATTEMPTS\r\n): number {\r\n return getNumberEnv(paramName, defValue);\r\n}\r\n\r\nexport function getReportsRefreshTimeoutEnv(\r\n paramName = 'REPORTS_REFRESH_TIMEOUT_SECONDS',\r\n defValue: number = DEFAULT_REPORTS_REFRESH_TIMEOUT_SECONDS\r\n): number {\r\n return getNumberEnv(paramName, defValue);\r\n}\r\n\r\nexport function getSplitWeekByEndOfYearEnv(\r\n paramName = 'SPLIT_WEEK_BY_END_OF_YEAR',\r\n defValue: boolean = DEFAULT_SPLIT_WEEK_BY_END_OF_YEAR\r\n): boolean {\r\n return getBooleanEnv(paramName, defValue);\r\n}\r\n\r\nexport function getAppUserAgreementVersionEnv(\r\n paramName = 'USER_AGREEMENT_VERSION',\r\n defValue: string = DEFAULT_USER_AGREEMENT_VERSION\r\n): string {\r\n return config[paramName] || defValue;\r\n}\r\n\r\nexport function getShowVersionLabel(\r\n paramName = 'SHOW_VERSION_VERSION_LABEL',\r\n defValue: boolean = SHOW_VERSION_VERSION_LABEL\r\n): boolean {\r\n return getBooleanEnv(paramName, defValue);\r\n}\r\n\r\nfunction getBooleanEnv(paramName: string, defValue: boolean): boolean {\r\n return config[paramName] && [true, false].includes(config[paramName]!)\r\n ? (config[paramName] as boolean)\r\n : defValue;\r\n}\r\n\r\nfunction getNumberEnv(paramName: string, defValue: number): number {\r\n return typeof config[paramName] === 'undefined' || Number.isNaN(Number(config[paramName]))\r\n ? defValue\r\n : Number(config[paramName]);\r\n}\r\n","import { createSelector } from 'reselect';\r\nimport { Reducer, combineReducers } from 'redux';\r\nimport { createReducer, EmptyAC, PayloadAC } from 'typesafe-actions';\r\n\r\nimport { actions, RootAction } from '../actions';\r\nimport { ApiEndpointState, GenericPropsType, Store } from '../store/storeTypes';\r\nimport { getMaxLoadAttemptsEnv } from '../helpers/envGetters';\r\nimport { getMaxKeepAliveRequestAC } from 'actions/overviewActions';\r\n\r\nconst MAX_ATTEMPTS = getMaxLoadAttemptsEnv();\r\n\r\nexport const apiStateReducer: Reducer = combineReducers({\r\n reportsFilterData: createApiStateReducer(\r\n actions.reportApi.loadReportsFilterSitesStarted,\r\n actions.reportApi.loadReportsFilterSitesSuccess,\r\n actions.reportApi.loadReportsFilterSitesFailed\r\n ),\r\n reportsCurrentState: createApiStateReducer(\r\n actions.reportApi.loadReportsCurrentStateStarted,\r\n actions.reportApi.loadReportsCurrentStateSuccess,\r\n actions.reportApi.loadReportsCurrentStateFailed\r\n ),\r\n});\r\n\r\nfunction createApiStateReducer(\r\n startedAction:\r\n | EmptyAC<'LOAD_REPORTS_FILTER_SITES_STARTED'>\r\n | EmptyAC<'LOAD_REPORTS_CURRRENT_STATE_STARTED'>,\r\n successAction: PayloadAC<\r\n 'LOAD_REPORTS_FILTER_SITES_SUCCESS' | 'LOAD_REPORTS_CURRRENT_STATE_SUCCESS',\r\n GenericPropsType\r\n >,\r\n failedAction: PayloadAC<\r\n 'LOAD_REPORTS_FILTER_SITES_FAILED' | 'LOAD_REPORTS_CURRRENT_STATE_FAILED',\r\n Record | unknown\r\n >\r\n) {\r\n const INIT_STATE: ApiEndpointState = {\r\n isInProgress: false,\r\n isDone: false,\r\n loadAttempts: 0,\r\n reachedMaxLoadAttempts: false,\r\n dTGLastUpdate: undefined,\r\n dTFLastUpdate: undefined,\r\n apolloLastUpdate: undefined,\r\n isSiteExtensionIsLoaded: false,\r\n };\r\n\r\n return createReducer(INIT_STATE)\r\n .handleAction(startedAction, (state, action) => {\r\n return {\r\n ...state,\r\n isInProgress: true,\r\n isDone: false,\r\n loadAttempts: state.loadAttempts + 1,\r\n reachedMaxLoadAttempts: state.loadAttempts + 1 >= MAX_ATTEMPTS,\r\n };\r\n })\r\n .handleAction(successAction, (state, action) => {\r\n const dTGLastUpdate = action.payload['DTG'] && action.payload['DTG'].lastUpdateLabel;\r\n const dTFLastUpdate = action.payload['DTF'] && action.payload['DTF'].lastUpdateLabel;\r\n const apolloLastUpdate = action.payload['Apollo'] && action.payload['Apollo'].lastUpdateLabel;\r\n const actionType = action.type;\r\n let isSiteExtensionIsLoaded;\r\n if (actionType === 'LOAD_REPORTS_FILTER_SITES_SUCCESS') {\r\n isSiteExtensionIsLoaded = true;\r\n }\r\n\r\n return {\r\n ...INIT_STATE,\r\n isDone: true,\r\n dTFLastUpdate,\r\n dTGLastUpdate,\r\n apolloLastUpdate,\r\n isSiteExtensionIsLoaded,\r\n };\r\n })\r\n\r\n .handleAction(getMaxKeepAliveRequestAC.success, (state, action) => {\r\n return {\r\n ...state,\r\n apolloLastUpdate: action.payload.maxKeepAlive,\r\n };\r\n })\r\n\r\n .handleAction(failedAction, (state, action) => {\r\n return { ...state, isInProgress: false, isDone: false };\r\n });\r\n}\r\n//*selectors\r\nconst apiStateSelector = (state: Store) => {\r\n return state.apiState;\r\n};\r\nexport const reportCurrentStateSelector = createSelector([apiStateSelector], apiState => {\r\n return apiState['reportsCurrentState'];\r\n});\r\nexport const reportCurrentStateIsDoneSelector = createSelector(\r\n [reportCurrentStateSelector],\r\n reportsCurrentState => {\r\n return reportsCurrentState['isDone'];\r\n }\r\n);\r\nexport const reportsFilterDataSelector = createSelector([apiStateSelector], apiState => {\r\n return apiState['reportsFilterData'];\r\n});\r\n\r\nexport const reportsFilterDataIsDoneSelector = createSelector(\r\n [reportsFilterDataSelector],\r\n reportsFilterData => {\r\n return reportsFilterData['isDone'];\r\n }\r\n);\r\n\r\nexport const reportsFilterDataIsSiteExtensionIsLoadedSelector = createSelector(\r\n [reportsFilterDataSelector],\r\n reportsFilterData => {\r\n return reportsFilterData['isSiteExtensionIsLoaded'];\r\n }\r\n);\r\nexport const dtgLastUpdateSelector = createSelector(\r\n [reportCurrentStateSelector],\r\n reportCurrentState => {\r\n return reportCurrentState['dTGLastUpdate'];\r\n }\r\n);\r\nexport const dtfLastUpdateSelector = createSelector(\r\n [reportCurrentStateSelector],\r\n reportCurrentState => {\r\n return reportCurrentState['dTFLastUpdate'];\r\n }\r\n);\r\nexport const apolloLastUpdateSelector = createSelector(\r\n [reportCurrentStateSelector],\r\n reportCurrentState => {\r\n return reportCurrentState['apolloLastUpdate'];\r\n }\r\n);\r\n","import { combineReducers, Reducer } from 'redux';\r\nimport { createReducer } from 'typesafe-actions';\r\n\r\nimport { actions, RootAction } from '../../actions';\r\nimport { Entries, Ids } from '../../store/storeTypes';\r\nimport { ExtendedUserData } from '../../models/ExtendedUserData';\r\n\r\nconst { loadUsersSuccess, saveUserSuccess, deleteUserSuccess } = actions.userApi;\r\n\r\nconst userById = createReducer, RootAction>({})\r\n .handleAction([loadUsersSuccess], (state, action) => {\r\n if (action.payload) {\r\n const newState: Entries = {};\r\n\r\n action.payload.forEach((user: ExtendedUserData) => {\r\n newState[user.id] = user;\r\n });\r\n\r\n return newState;\r\n }\r\n\r\n return state;\r\n })\r\n\r\n .handleAction(saveUserSuccess, (state, action) => {\r\n const newUser =\r\n action.payload && Array.isArray(action.payload.newUsers) && action.payload.newUsers[0];\r\n\r\n if (newUser && newUser.id) {\r\n return { ...state, [newUser.id]: newUser };\r\n }\r\n\r\n return state;\r\n })\r\n\r\n .handleAction(deleteUserSuccess, (state, action) => {\r\n const newState = { ...state };\r\n delete newState[action.payload];\r\n\r\n return newState;\r\n });\r\n\r\nconst userAllIds = createReducer([])\r\n .handleAction(loadUsersSuccess, (state, action) => {\r\n const users = action.payload;\r\n\r\n if (users) {\r\n const newState: Ids = [];\r\n\r\n users.sort((a, b) => {\r\n if (a.lastName === b.lastName) {\r\n return a.firstName > b.firstName ? 1 : -1;\r\n }\r\n\r\n return a.lastName > b.lastName ? 1 : -1;\r\n });\r\n users.forEach(user => newState.push(user.id));\r\n\r\n return newState;\r\n }\r\n\r\n return state;\r\n })\r\n\r\n .handleAction(saveUserSuccess, (state, action) => {\r\n const newUser =\r\n action.payload && Array.isArray(action.payload.newUsers) && action.payload.newUsers[0];\r\n const usersById = action.payload && action.payload.usersById;\r\n\r\n if (newUser && newUser.id && usersById) {\r\n usersById[newUser.id] = newUser;\r\n\r\n const newState = [...state];\r\n if (!state.includes(newUser.id)) {\r\n newState.push(newUser.id);\r\n }\r\n newState.sort((a, b) => {\r\n if (usersById[a].lastName === usersById[b].lastName) {\r\n return usersById[a].firstName > usersById[b].firstName ? 1 : -1;\r\n }\r\n\r\n return usersById[a].lastName > usersById[b].lastName ? 1 : -1;\r\n });\r\n\r\n return newState;\r\n }\r\n\r\n return state;\r\n })\r\n\r\n .handleAction(deleteUserSuccess, (state, action) => {\r\n const newState = [...state];\r\n const index = newState.indexOf(action.payload);\r\n\r\n if (index > -1) {\r\n newState.splice(index, 1);\r\n }\r\n\r\n return newState;\r\n });\r\n\r\nconst userEntityReducer: Reducer = combineReducers({\r\n byId: userById,\r\n allIds: userAllIds,\r\n});\r\n\r\nexport default userEntityReducer;\r\n","import { combineReducers, Reducer } from 'redux';\r\nimport { createReducer } from 'typesafe-actions';\r\n\r\nimport { actions, RootAction } from '../../actions';\r\nimport { Entries, Ids } from '../../store/storeTypes';\r\nimport { CustomerData } from '../../models/CustomerData';\r\n\r\nconst { loadCustomersSuccess } = actions.scopeApi;\r\n\r\nconst customerById = createReducer, RootAction>({}).handleAction(\r\n loadCustomersSuccess,\r\n (state, action) => {\r\n if (action.payload) {\r\n const newState: Entries = {};\r\n\r\n action.payload.forEach((org: CustomerData) => {\r\n newState[org.id] = org;\r\n });\r\n\r\n return newState;\r\n }\r\n\r\n return state;\r\n }\r\n);\r\n\r\nconst customerAllIds = createReducer([]).handleAction(\r\n loadCustomersSuccess,\r\n (state, action) => {\r\n if (action.payload) {\r\n const newState: Ids = [];\r\n\r\n action.payload.forEach((org: CustomerData) => {\r\n newState.push(org.id);\r\n });\r\n\r\n return newState;\r\n }\r\n\r\n return state;\r\n }\r\n);\r\n\r\nconst customerEntityReducer: Reducer = combineReducers({\r\n byId: customerById,\r\n allIds: customerAllIds,\r\n});\r\n\r\nexport default customerEntityReducer;\r\n","import { combineReducers, Reducer } from 'redux';\r\nimport { createReducer } from 'typesafe-actions';\r\n\r\nimport { actions, RootAction } from '../../actions';\r\nimport { Entries, Ids } from '../../store/storeTypes';\r\nimport { SiteData } from '../../models/SiteData';\r\n\r\nconst { loadSitesSuccess } = actions.scopeApi;\r\n\r\nconst siteById = createReducer, RootAction>({}).handleAction(\r\n loadSitesSuccess,\r\n (state, action) => {\r\n if (action.payload) {\r\n const newState: Entries = {};\r\n\r\n action.payload.forEach((site: SiteData) => {\r\n newState[site.id] = site;\r\n });\r\n\r\n return newState;\r\n }\r\n\r\n return state;\r\n }\r\n);\r\n\r\nconst siteAllIds = createReducer([]).handleAction(\r\n loadSitesSuccess,\r\n (state, action) => {\r\n if (action.payload) {\r\n const newState: Ids = [];\r\n\r\n action.payload.forEach((site: SiteData) => {\r\n newState.push(site.id);\r\n });\r\n\r\n return newState;\r\n }\r\n\r\n return state;\r\n }\r\n);\r\n\r\nconst siteEntityReducer: Reducer = combineReducers({\r\n byId: siteById,\r\n allIds: siteAllIds,\r\n});\r\n\r\nexport default siteEntityReducer;\r\n","import { combineReducers, Reducer } from 'redux';\r\nimport { createReducer } from 'typesafe-actions';\r\n\r\nimport { actions, RootAction } from '../../actions';\r\nimport { Entries, Ids } from '../../store/storeTypes';\r\nimport { SystemData } from '../../models/SystemData';\r\n\r\nconst { loadSystemsSuccess } = actions.scopeApi;\r\n\r\nconst systemById = createReducer, RootAction>({}).handleAction(\r\n loadSystemsSuccess,\r\n (state, action) => {\r\n if (action.payload) {\r\n const newState: Entries = {};\r\n\r\n action.payload.forEach((system: SystemData) => {\r\n newState[system.id] = system;\r\n });\r\n\r\n return newState;\r\n }\r\n\r\n return state;\r\n }\r\n);\r\n\r\nconst systemAllIds = createReducer([]).handleAction(\r\n loadSystemsSuccess,\r\n (state, action) => {\r\n if (action.payload) {\r\n const newState: Ids = [];\r\n\r\n action.payload.forEach((system: SystemData) => {\r\n newState.push(system.id);\r\n });\r\n\r\n return newState;\r\n }\r\n\r\n return state;\r\n }\r\n);\r\n\r\nconst systemEntityReducer: Reducer = combineReducers({\r\n byId: systemById,\r\n allIds: systemAllIds,\r\n});\r\n\r\nexport default systemEntityReducer;\r\n","import { createReducer } from 'typesafe-actions';\r\n\r\nimport { actions, RootAction } from '../../actions';\r\nimport { GoalsData, GoalFromApi } from '../../models/GoalsData';\r\nimport { GoalsByTypes, UserSystemGroupStrings, Entity } from '../../store/storeTypes';\r\n\r\nconst { loadGoalsSuccess, saveGoalSuccess } = actions.goalApi;\r\nconst INIT_STATE: GoalsByTypes = {\r\n DTF: {\r\n allIds: [],\r\n byId: {},\r\n },\r\n DTG: {\r\n allIds: [],\r\n byId: {},\r\n },\r\n};\r\nconst goalById = createReducer(INIT_STATE).handleAction(\r\n [loadGoalsSuccess, saveGoalSuccess],\r\n (state, action) => {\r\n const goals: GoalsByTypes = {};\r\n Object.keys(action.payload).forEach((type: string) => {\r\n const goal: Entity = {\r\n allIds: [],\r\n byId: {},\r\n };\r\n action.payload[type as UserSystemGroupStrings].forEach((goalFromApi: GoalFromApi) => {\r\n goal.byId[goalFromApi.goalPeriod] = transformToGoal(goalFromApi);\r\n goal.allIds.push(goalFromApi.goalPeriod.toString());\r\n });\r\n goals[type as UserSystemGroupStrings] = goal;\r\n });\r\n return goals;\r\n }\r\n);\r\n\r\nconst transformToGoal = (goalFromApi: GoalFromApi) => {\r\n return {\r\n dateModified: goalFromApi.time,\r\n goalType: goalFromApi.goalPeriod,\r\n ...goalFromApi,\r\n };\r\n};\r\n\r\nexport default goalById;\r\n","import { combineReducers, Reducer } from 'redux';\r\nimport { createReducer } from 'typesafe-actions';\r\n\r\nimport { actions, RootAction } from 'actions';\r\nimport { Scheduler } from 'models/Scheduler';\r\nimport { Entries, Ids } from 'store/storeTypes';\r\nimport { getSchedulerWeekdays } from '../_sharedLogic/schedulerConversions';\r\n\r\nconst {\r\n saveSchedulerSuccess,\r\n loadSchedulersSuccess,\r\n deleteSchedulerSuccess,\r\n} = actions.schedulerApi;\r\n\r\nconst schedulerById = createReducer, RootAction>({})\r\n .handleAction(loadSchedulersSuccess, (state, action) => {\r\n if (!action.payload || !action.payload.length) return state;\r\n\r\n const newState: Entries = {};\r\n\r\n action.payload.forEach(scheduler => {\r\n const weekdays = getSchedulerWeekdays(scheduler);\r\n const repeat = { ...scheduler.repeat, dayOfWeek: weekdays };\r\n newState[scheduler.reportId!] = {\r\n ...scheduler,\r\n emailReportId: scheduler.emailReportId - 1,\r\n repeat,\r\n };\r\n });\r\n\r\n return newState;\r\n })\r\n\r\n .handleAction(saveSchedulerSuccess, (state, action) => {\r\n const { payload } = action;\r\n\r\n if (payload && payload.reportId) {\r\n const { reportId } = payload;\r\n const weekdays = getSchedulerWeekdays(payload);\r\n const repeat = { ...payload.repeat, dayOfWeek: weekdays };\r\n const newReport = {\r\n ...payload,\r\n emailReportId: payload.emailReportId - 1,\r\n repeat,\r\n };\r\n return { ...state, [reportId]: newReport };\r\n }\r\n\r\n return state;\r\n })\r\n .handleAction(deleteSchedulerSuccess, (state, action) => {\r\n const newState = { ...state };\r\n delete newState[action.payload];\r\n\r\n return newState;\r\n });\r\n\r\nconst schedulerAllIds = createReducer([])\r\n .handleAction(loadSchedulersSuccess, (state, action) => {\r\n const schedulers = action.payload;\r\n\r\n if (schedulers) {\r\n const newState: Ids = [];\r\n\r\n schedulers.forEach(scheduler => newState.push(scheduler.reportId!.toString()));\r\n\r\n return newState;\r\n }\r\n\r\n return state;\r\n })\r\n .handleAction(saveSchedulerSuccess, (state, action) => {\r\n const scheduler = action.payload;\r\n\r\n if (scheduler && scheduler.reportId && !state.includes(scheduler.reportId.toString())) {\r\n const newState = [...state];\r\n newState.push(scheduler.reportId.toString());\r\n return newState;\r\n }\r\n\r\n return state;\r\n })\r\n .handleAction(deleteSchedulerSuccess, (state, action) => {\r\n const newState = [...state];\r\n const index = newState.indexOf(action.payload.toString());\r\n\r\n if (index > -1) {\r\n newState.splice(index, 1);\r\n }\r\n\r\n return newState;\r\n });\r\n\r\nconst schedulerEntityReducer: Reducer = combineReducers({\r\n byId: schedulerById,\r\n allIds: schedulerAllIds,\r\n});\r\n\r\nexport default schedulerEntityReducer;\r\n","import { Reducer, combineReducers } from 'redux';\r\n\r\nimport userEntityReducer from './userEntityReducer';\r\nimport customerEntityReducer from './customerEntityReducer';\r\nimport siteEntityReducer from './siteEntityReducer';\r\nimport systemEntityReducer from './systemEntityReducer';\r\nimport goalsEntityReducer from './goalsEntityReducer';\r\nimport schedulerEntityReducer from './schedulerEntityReducer';\r\n\r\nexport const entitiesReducer: Reducer = combineReducers({\r\n users: userEntityReducer,\r\n customers: customerEntityReducer,\r\n sites: siteEntityReducer,\r\n systems: systemEntityReducer,\r\n goals: goalsEntityReducer,\r\n schedulers: schedulerEntityReducer,\r\n});\r\n\r\nexport default entitiesReducer;\r\n","import { createReducer } from 'typesafe-actions';\r\n\r\nimport { actions, RootAction } from 'actions';\r\nimport { MainReportTypes, ReportTypesNew } from 'models/ReportData';\r\n\r\nconst { setActiveReportAC } = actions.reportUi;\r\n\r\nconst activeReportReducer = createReducer(null).handleAction(\r\n setActiveReportAC,\r\n (state, action) => action.payload.activeReport\r\n);\r\n\r\nexport default activeReportReducer;\r\n","import { Reducer, combineReducers } from 'redux';\r\n\r\nimport filterSitesReducer from './filterDataReducer';\r\nimport filterStateReducer from './filterStateReducer';\r\nimport activeReportReducer from './activeReportReducer';\r\n\r\nexport const reportsReducer: Reducer = combineReducers({\r\n filterData: filterSitesReducer,\r\n filterState: filterStateReducer,\r\n activeReport: activeReportReducer,\r\n});\r\n\r\nexport default reportsReducer;\r\n","import { createReducer, PayloadAC } from 'typesafe-actions';\r\nimport { RootAction } from 'actions';\r\nimport { ServiceTicketStateBySystem } from 'store/storeTypes';\r\nimport { getCustomerDataBySerialIdAC } from 'actions/serviceTicketActions';\r\n\r\nconst INIT_STATE: ServiceTicketStateBySystem = {\r\n isLoading: false,\r\n isLoaded: false,\r\n error: '',\r\n id: '',\r\n name: '',\r\n importedCustomerId: '',\r\n};\r\n\r\nconst reducer = createReducer(INIT_STATE)\r\n .handleAction(getCustomerDataBySerialIdAC.request, (state, action) => {\r\n return { ...state, isLoading: true, isLoaded: false, error: '' };\r\n })\r\n .handleAction(getCustomerDataBySerialIdAC.success, (state, action) => {\r\n const { name, id, importedCustomerId } = action.payload;\r\n return {\r\n ...state,\r\n id: id,\r\n name: name,\r\n importedCustomerId: importedCustomerId,\r\n error: '',\r\n isLoading: false,\r\n isLoaded: true,\r\n };\r\n })\r\n .handleAction(getCustomerDataBySerialIdAC.failure, (state, error) => {\r\n return { ...state, isLoading: false, isLoaded: false, error: 'error' };\r\n });\r\n\r\nexport default reducer;\r\n","import { createReducer } from 'typesafe-actions';\r\nimport { RootAction } from 'actions';\r\nimport { getMachineConfigAC, setMachineConfigDevice } from 'actions/machineConfigActions';\r\nimport { MachineConfig } from '../store/storeTypes';\r\n\r\nconst INIT_STATE: MachineConfig = {\r\n params: [],\r\n device: {\r\n id: '',\r\n name: '',\r\n imageUrl: '',\r\n },\r\n};\r\n\r\nconst reducer = createReducer(INIT_STATE)\r\n .handleAction(getMachineConfigAC.success, (state, action) => {\r\n return { ...state, params: action.payload };\r\n })\r\n .handleAction(setMachineConfigDevice, (state, action) => {\r\n return { ...state, device: action.payload };\r\n });\r\n\r\nexport default reducer;\r\n","import { createReducer } from 'typesafe-actions';\r\nimport { IApiManagementState } from 'store/storeTypes';\r\nimport { actions, RootAction } from 'actions';\r\n\r\nconst INIT_STATE: IApiManagementState = {\r\n certificate: undefined,\r\n isError: false,\r\n isLoading: false,\r\n};\r\n\r\nconst { getCertificateDetailsAC, createCertificateAC, deleteCertificateAC } = actions.apiManagement;\r\nconst reducer = createReducer(INIT_STATE)\r\n .handleAction(getCertificateDetailsAC.request, (state, action) => {\r\n return {\r\n ...state,\r\n isLoading: true,\r\n };\r\n })\r\n .handleAction(getCertificateDetailsAC.success, (state, action) => {\r\n return {\r\n ...state,\r\n certificate: action.payload,\r\n isLoading: false,\r\n };\r\n })\r\n .handleAction(getCertificateDetailsAC.failure, (state, action) => {\r\n return {\r\n ...state,\r\n isLoading: false,\r\n isError: true,\r\n };\r\n })\r\n .handleAction(createCertificateAC.request, (state, action) => {\r\n return {\r\n ...state,\r\n isLoading: true,\r\n };\r\n })\r\n .handleAction(createCertificateAC.success, (state, action) => {\r\n return {\r\n ...state,\r\n certificate: action.payload,\r\n isLoading: false,\r\n };\r\n })\r\n .handleAction(createCertificateAC.failure, (state, action) => {\r\n return {\r\n ...state,\r\n isLoading: false,\r\n isError: true,\r\n };\r\n })\r\n .handleAction(deleteCertificateAC.request, (state, action) => {\r\n return {\r\n ...state,\r\n isLoading: true,\r\n };\r\n })\r\n .handleAction(deleteCertificateAC.success, (state, action) => {\r\n return {\r\n ...state,\r\n certificate: undefined,\r\n isLoading: false,\r\n };\r\n })\r\n .handleAction(deleteCertificateAC.failure, (state, action) => {\r\n return {\r\n ...state,\r\n isLoading: false,\r\n isError: true,\r\n };\r\n });\r\n\r\nexport default reducer;\r\n","import { combineReducers } from 'redux';\r\nimport { appUserReducer } from './appUserReducer';\r\nimport { apiReducer } from './apiReducer';\r\nimport { apiStateReducer } from './apiStateReducer';\r\nimport { entitiesReducer } from './entities';\r\nimport { uiReducer } from './ui';\r\nimport { reportsReducer } from './reports';\r\nimport { userSettingsReducer } from './userSettingsReducer';\r\nimport ServiceTicket from './serviceTicketReducer';\r\nimport systemAnalysisReducer from './systemAnalysisReducer';\r\nimport overviewReducer from './overviewReducer';\r\nimport machineConfigReducer from './machineConfigReducer';\r\nimport jobSummaryReducer from './jobSummaryReducer';\r\nimport jobAnalysisReducer from './jobAnalysisReducer';\r\nimport apiManagementReducer from './apiManagementReducer';\r\nimport systemPageReducer from './systemPageReducer';\r\n\r\nimport isEverReportedReducer from './isEverReportedReducer';\r\nexport default combineReducers({\r\n appUser: appUserReducer,\r\n userSettings: userSettingsReducer,\r\n api: apiReducer,\r\n apiState: apiStateReducer,\r\n entities: entitiesReducer,\r\n ui: uiReducer,\r\n reports: reportsReducer,\r\n systemAnalysis: systemAnalysisReducer,\r\n overview: overviewReducer,\r\n machineConfig: machineConfigReducer,\r\n jobSummary: jobSummaryReducer,\r\n jobAnalysis: jobAnalysisReducer,\r\n apiManagement: apiManagementReducer,\r\n systemPage: systemPageReducer,\r\n serviceTicket: ServiceTicket,\r\n isEverReported: isEverReportedReducer,\r\n});\r\n","import { createStore, applyMiddleware } from 'redux';\r\nimport { composeWithDevTools } from 'redux-devtools-extension';\r\nimport thunk from 'redux-thunk';\r\n\r\nimport rootReducer from '../reducers';\r\nconst middlewares = [thunk];\r\n// if (\r\n// process.env.REACT_APP_CONFIG_ENV === 'dev' ||\r\n// process.env.REACT_APP_CONFIG_ENV === 'local' ||\r\n// !process.env.REACT_APP_CONFIG_ENV\r\n// )\r\n// middlewares.push(require('redux-immutable-state-invariant').default());\r\nconst store = createStore(rootReducer, composeWithDevTools(applyMiddleware(...middlewares)));\r\n\r\nexport default store;\r\n","import en from './en.json';\r\nimport de from './de.json';\r\n\r\nexport default { en, de };\r\n","import i18n from 'i18next';\r\n// import XHR from 'i18next-xhr-backend';\r\nimport { initReactI18next } from 'react-i18next';\r\nimport LanguageDetector from 'i18next-browser-languagedetector';\r\nimport { ThunkDispatch } from 'redux-thunk';\r\nimport { AnyAction } from 'redux';\r\n\r\nimport resources from './languages';\r\nimport store from '../store/store';\r\nimport { Store } from '../store/storeTypes';\r\nimport { saveAppUserLocale } from '../actions/appUserActions';\r\nimport { authService } from './AuthProvider';\r\nimport config from 'config/config';\r\n\r\nexport const LOCALES = [\r\n { i18n: 'en', localName: 'English', flag: 'gb' },\r\n { i18n: 'de', localName: 'Deutsche', flag: 'de' },\r\n];\r\n\r\ni18n\r\n // .use(XHR) - to be used after locales API is ready\r\n .use(initReactI18next)\r\n .use(LanguageDetector)\r\n .init({\r\n resources,\r\n fallbackLng: 'en',\r\n debug: process.env.NODE_ENV === 'development',\r\n interpolation: {\r\n escapeValue: false,\r\n },\r\n saveMissing: true,\r\n ns: ['common'],\r\n defaultNS: 'common',\r\n returnObjects: true,\r\n\r\n // react i18next special options (optional)\r\n // override if needed - omit if ok with defaults\r\n /*\r\n react: {\r\n bindI18n: 'languageChanged',\r\n bindI18nStore: '',\r\n transEmptyNodeValue: '',\r\n transSupportBasicHtmlNodes: true,\r\n transKeepBasicHtmlNodesFor: ['br', 'strong', 'i'],\r\n useSuspense: true,\r\n }\r\n */\r\n });\r\n\r\ni18n.on('languageChanged', lng => {\r\n authService.updateLocaleInLocalStorage(lng);\r\n const { idTokenPayload } = authService;\r\n const isSuperUser = idTokenPayload[`${config.AUTH0_CLAIMS_NAMESPACE}is_super_user`];\r\n if (!isSuperUser) {\r\n (store.dispatch as ThunkDispatch)(saveAppUserLocale(lng));\r\n }\r\n});\r\n\r\nexport default i18n;\r\n","import MuiLinearProgress from '@material-ui/core/LinearProgress';\r\nimport styled from 'styled-components/macro';\r\n\r\nconst LinearProgress = styled(MuiLinearProgress)`\r\n background-color: #2ea1f8;\r\n margin: 3rem;\r\n margin-bottom: 0;\r\n margin-top: 0.5rem;\r\n\r\n & > div {\r\n background-color: #354052;\r\n }\r\n`;\r\n\r\nexport default LinearProgress;\r\n","import { connect } from 'react-redux';\r\nimport { bindActionCreators, Dispatch } from 'redux';\r\n\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { AuthSupportProps } from 'contracts/auth';\r\nimport { Welcome } from './Welcome';\r\nimport { getPortalApiUrl } from 'actions/appUserActions';\r\nimport { Store } from 'store/storeTypes';\r\n\r\nconst mapStateToProps = (state: Store) => ({\r\n apiUrl: state.appUser.apiUrl,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch: Dispatch) =>\r\n bindActionCreators(\r\n {\r\n getPortalApiUrl,\r\n },\r\n dispatch\r\n );\r\n\r\nexport type WelcomeProps = RouteComponentProps> &\r\n AuthSupportProps &\r\n ReturnType &\r\n ReturnType;\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(Welcome);\r\n","import React, { useEffect } from 'react';\r\nimport { Redirect } from 'react-router';\r\nimport { authCallbackPath, overviewReportPath } from 'contracts/constants';\r\nimport { WelcomeProps } from './WelcomeContainer';\r\nimport LinearProgress from 'components/_common/LinearProgress';\r\n\r\nexport const Welcome = (props: WelcomeProps) => {\r\n const { authService, location, getPortalApiUrl, apiUrl } = props;\r\n\r\n useEffect(() => {\r\n if (authService.isAuthenticated()) {\r\n getPortalApiUrl();\r\n }\r\n }, [apiUrl, authService, getPortalApiUrl]);\r\n\r\n if (authService.isAuthenticated()) {\r\n if (!apiUrl) {\r\n return ;\r\n }\r\n return ;\r\n }\r\n\r\n if (authService.isAuthUrl(location)) {\r\n return ;\r\n }\r\n authService.login();\r\n\r\n return null;\r\n};\r\n","import React from 'react';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nimport { AuthSupportProps } from 'contracts/auth';\r\n\r\nexport const AuthCallback = (\r\n props: AuthSupportProps & RouteComponentProps>\r\n) => {\r\n const { t } = useTranslation();\r\n const { authService, location } = props;\r\n authService.handleAuthentication(location);\r\n\r\n return
{t('authCallback.loading')}
;\r\n};\r\n","import styled from 'styled-components/macro';\r\n\r\nconst PageContainer = styled.div.attrs({\r\n 'data-id': 'PageContainer',\r\n})`\r\n overflow: hidden;\r\n max-height: 100%;\r\n display: flex;\r\n flex-direction: column;\r\n width: 100%;\r\n caret-color: transparent;\r\n //padding: 0 15px;\r\n`;\r\n\r\nexport default PageContainer;\r\n","import styled from 'styled-components/macro';\r\n\r\nexport const PageHeaderUIContainer = styled.div`\r\n width: 100%;\r\n padding: 0 15px;\r\n display: flex;\r\n align-items: center;\r\n //height: 71px;\r\n\r\n .spacer {\r\n margin-left: 50px;\r\n flex-grow: 1;\r\n }\r\n @media (max-width: 850px) {\r\n .spacer {\r\n margin-left: 10px;\r\n text-align: right;\r\n }\r\n }\r\n //@media (max-width: 440px) {\r\n // height: 63px;\r\n //}\r\n`;\r\n\r\nexport const PageHeaderUISpacer = styled.div.attrs({\r\n className: 'spacer',\r\n})``;\r\n\r\nexport default PageHeaderUIContainer;\r\n","import styled from 'styled-components/macro';\r\n\r\nimport MuiTable from '@material-ui/core/Table';\r\nimport MuiTableBody from '@material-ui/core/TableBody';\r\nimport MuiTableCell from '@material-ui/core/TableCell';\r\nimport MuiTableHead from '@material-ui/core/TableHead';\r\nimport MuiTableRow from '@material-ui/core/TableRow';\r\nimport MuiPaper from '@material-ui/core/Paper';\r\nimport MuiIconButton from '@material-ui/core/IconButton';\r\nimport { StyledComponentWithAnyType } from 'store/storeTypes';\r\n\r\nexport const Paper = styled(MuiPaper)`\r\n border-radius: 0;\r\n flex-grow: 1;\r\n display: flex;\r\n max-height: 100%;\r\n overflow: auto;\r\n`;\r\n\r\nexport const Table = styled(MuiTable)`\r\n box-shadow: 0px 4px 18px rgba(0, 0, 0, 0.06);\r\n display: flex;\r\n flex-direction: column;\r\n max-height: 100%;\r\n border-radius: 0;\r\n overflow: auto;\r\n`;\r\n\r\nexport const TableHead = styled(MuiTableHead)``;\r\n\r\nexport const TableHeadRow = styled(MuiTableRow)`\r\n display: flex;\r\n width: 100%;\r\n height: inherit;\r\n`;\r\n\r\nexport const TableHeadCell: StyledComponentWithAnyType = styled(MuiTableCell)`\r\n display: block;\r\n color: #354052;\r\n font-family: Rubik, sans-serif;\r\n font-weight: 500;\r\n font-size: 16px;\r\n white-space: nowrap;\r\n border-bottom: 1px solid #7f8fa4;\r\n padding-top: 18px;\r\n padding-bottom: 16px;\r\n padding-right: 40px;\r\n\r\n &:not(:first-child) {\r\n padding-left: 0;\r\n }\r\n\r\n &:last-child {\r\n padding-right: 19px;\r\n }\r\n\r\n @media (max-width: 550px) {\r\n padding-right: 12px;\r\n &:first-child {\r\n padding-left: 12px;\r\n }\r\n }\r\n`;\r\n\r\nexport const TableBody = styled(MuiTableBody)`\r\n display: block;\r\n flex-grow: 1;\r\n max-height: 100%;\r\n overflow: auto;\r\n scrollbar-width: thin;\r\n scrollbar-color: #c1baba #e3e0e0;\r\n\r\n &::-webkit-scrollbar-track {\r\n background: #e3e0e0;\r\n border-radius: 10px;\r\n }\r\n &::-webkit-scrollbar {\r\n width: 7px;\r\n height: 7px;\r\n }\r\n &::-webkit-scrollbar-thumb {\r\n background: #c1baba;\r\n border-radius: 10px;\r\n }\r\n`;\r\n\r\nexport const TableRow: StyledComponentWithAnyType = styled(MuiTableRow)`\r\n display: flex;\r\n height: auto;\r\n border-bottom: 1px solid rgba(224, 224, 224, 1);\r\n\r\n &.selected,\r\n &.focus,\r\n &:hover {\r\n td {\r\n color: #354052;\r\n background: #f2f9ff;\r\n }\r\n\r\n path.avatar-mask-fields {\r\n fill: #f2f9ff;\r\n }\r\n\r\n .buttons-cell {\r\n opacity: 1;\r\n }\r\n }\r\n\r\n .buttons-cell {\r\n opacity: 0;\r\n }\r\n`;\r\n\r\nexport const TableCell: StyledComponentWithAnyType = styled(MuiTableCell)`\r\n padding-top: 0.75rem;\r\n padding-right: 40px;\r\n padding-bottom: 0.75rem;\r\n display: flex;\r\n align-items: center;\r\n font-family: Rubik, sans-serif;\r\n font-weight: normal;\r\n font-size: 18px;\r\n color: #7f8fa4;\r\n border-bottom: none;\r\n\r\n &:not(:first-child) {\r\n padding-left: 1px;\r\n }\r\n\r\n @media (max-width: 550px) {\r\n padding-right: 12px;\r\n &:first-child {\r\n padding-left: 12px;\r\n }\r\n\r\n .hideOnSmall {\r\n display: none;\r\n }\r\n }\r\n`;\r\nexport const TableCellForSystemAnalysisTable: StyledComponentWithAnyType = styled(MuiTableCell)`\r\n padding-top: 0.75rem;\r\n padding-bottom: 0.75rem;\r\n display: flex;\r\n align-items: center;\r\n font-family: Rubik, sans-serif;\r\n font-weight: normal;\r\n font-size: 18px;\r\n color: #7f8fa4;\r\n border-bottom: none;\r\n\r\n &:not(:first-child) {\r\n padding-left: 1px;\r\n }\r\n\r\n @media (max-width: 550px) {\r\n padding-right: 12px;\r\n &:first-child {\r\n padding-left: 12px;\r\n }\r\n\r\n .hideOnSmall {\r\n display: none;\r\n }\r\n }\r\n`;\r\n\r\nexport const ButtonsTableCell: StyledComponentWithAnyType = styled(TableCell).attrs({\r\n classes: { root: 'buttons-cell' },\r\n})`\r\n width: 121px;\r\n max-width: 121px;\r\n white-space: nowrap;\r\n padding-right: 19px !important;\r\n text-align: right;\r\n\r\n svg {\r\n color: #7f8fa4;\r\n }\r\n`;\r\n\r\nexport const TableIconButton = styled(MuiIconButton)`\r\n padding: 0;\r\n cursor: pointer;\r\n`;\r\n","import React from 'react';\r\nimport MaskProps from './MaskProps';\r\n\r\nconst MaskSmall = (props: MaskProps) => {\r\n // tslint:disable: max-line-length\r\n const { color, height, width } = props;\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default MaskSmall;\r\n","import React from 'react';\r\nimport MaskProps from './MaskProps';\r\n\r\nconst MaskBig = (props: MaskProps) => {\r\n // tslint:disable: max-line-length\r\n const { color, height, width } = props;\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default MaskBig;\r\n","import React from 'react';\r\nimport styled from 'styled-components/macro';\r\nimport MuiEditIcon from '@material-ui/icons/Edit';\r\nimport { Fade, Theme, Tooltip, withStyles } from '@material-ui/core';\r\nimport MaskSmall from './MaskSmall';\r\nimport MaskBig from './MaskBig';\r\n\r\ninterface IAvatarContainerProps {\r\n width: string;\r\n height: string;\r\n maskWidth: string;\r\n maskHeight: string;\r\n maskPositionTop: string;\r\n maskPositionLeft: string;\r\n}\r\nconst AvatarContainer = styled.div`\r\n position: relative;\r\n width: ${(props: IAvatarContainerProps) => props.width};\r\n height: ${(props: IAvatarContainerProps) => props.height};\r\n display: inline-block;\r\n\r\n & > svg {\r\n position: absolute;\r\n top: ${(props: IAvatarContainerProps) => props.maskPositionTop};\r\n left: ${(props: IAvatarContainerProps) => props.maskPositionLeft};\r\n display: block;\r\n width: ${(props: IAvatarContainerProps) => props.maskWidth};\r\n height: ${(props: IAvatarContainerProps) => props.maskHeight};\r\n }\r\n\r\n .hover-mask {\r\n display: none;\r\n }\r\n\r\n &:hover .hover-mask {\r\n display: block;\r\n }\r\n`;\r\n\r\ninterface IAvatarImageProps {\r\n width: string;\r\n height: string;\r\n avatarBase64?: null | string | undefined | number | unknown | Record;\r\n avatarUrl?: string;\r\n}\r\nconst AvatarImage = styled.div`\r\n width: ${(props: IAvatarImageProps) => props.width};\r\n height: ${(props: IAvatarImageProps) => props.height};\r\n background-image: ${(props: IAvatarImageProps) =>\r\n props.avatarBase64 || props.avatarUrl\r\n ? props.avatarBase64\r\n ? `url('data:image;base64,${props.avatarBase64}'),`\r\n : `url('${props.avatarUrl}'),`\r\n : ''}\r\n url('/img/avatar-add.png');\r\n background-repeat: no-repeat, no-repeat;\r\n background-size: cover, cover;\r\n background-position: center, center;\r\n overflow: hidden;\r\n position: relative;\r\n\r\n & > img {\r\n width: ${(props: IAvatarImageProps) => props.width};\r\n position: absolute;\r\n left: 0;\r\n top: 50%;\r\n transform: translateY(-50%);\r\n }\r\n`;\r\n\r\nconst EditIcon = styled(MuiEditIcon)`\r\n position: absolute;\r\n top: 50%;\r\n left: 50%;\r\n transform: translate(-50%, -50%);\r\n color: #354052;\r\n`;\r\n\r\nconst HoverMask = styled.div`\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n background: rgba(255, 255, 255, 0.8);\r\n`;\r\n\r\nconst AdminStar = styled.img.attrs({\r\n src: '/img/admin-star.svg',\r\n alt: '',\r\n})`\r\n width: 12.6px;\r\n position: absolute;\r\n left: 37px;\r\n top: 3px;\r\n`;\r\nconst RootUserStar = styled.img.attrs({\r\n src: '/img/rootUser-star.svg',\r\n alt: '',\r\n})`\r\n width: 12.6px;\r\n position: absolute;\r\n left: 37px;\r\n top: 3px;\r\n`;\r\nconst CustomizedToolTip = withStyles((theme: Theme) => ({\r\n tooltip: {\r\n backgroundColor: '#ffffff',\r\n color: '#354052',\r\n fontSize: theme.typography.pxToRem(12),\r\n border: '1px solid #dadde9',\r\n boxShadow: '0 0 2px rgba(0,0,0,0.5)',\r\n width: '90px',\r\n textAlign: 'center',\r\n },\r\n arrow: {\r\n color: theme.palette.common.white,\r\n boxShadow: '0 0 2px rgba(0,0,0,0.5)',\r\n fontSize: 2,\r\n },\r\n tooltipPlacementRight: {\r\n position: 'absolute',\r\n bottom: '10px',\r\n },\r\n}))(Tooltip);\r\ninterface IAvatarProps {\r\n size: 'small' | 'large';\r\n background?: string;\r\n avatarBase64?: null | string | undefined | number | unknown | Record;\r\n avatarUrl?: string;\r\n hoverMask?: boolean;\r\n adminStar?: boolean;\r\n className?: string;\r\n rootUserStar?: boolean;\r\n isMobile?: boolean;\r\n}\r\n\r\nconst Avatar = (props: IAvatarProps) => {\r\n const {\r\n size,\r\n background = 'white',\r\n avatarBase64,\r\n avatarUrl,\r\n hoverMask,\r\n adminStar,\r\n rootUserStar,\r\n className,\r\n isMobile,\r\n } = props;\r\n\r\n const width = size === 'small' ? '46px' : '138px';\r\n const height = size === 'small' ? '47px' : '146px';\r\n const maskWidth = size === 'small' ? '56px' : '162px';\r\n const maskHeight = size === 'small' ? '56px' : '162px';\r\n const maskPositionTop = size === 'small' ? '-3px' : '-7px';\r\n const maskPositionLeft = size === 'small' ? '-5px' : '-12px';\r\n const isTooltip = adminStar || rootUserStar;\r\n\r\n const getToolTipText = (rootUserStar): string => {\r\n return rootUserStar ? 'Root User' : 'Admin User';\r\n };\r\n const tooltipText = isTooltip && getToolTipText(rootUserStar);\r\n\r\n return (\r\n \r\n \r\n \r\n\r\n {/* Hover mask for edit user form (semitransparent background and edit icon) */}\r\n {hoverMask && (\r\n \r\n \r\n \r\n )}\r\n\r\n {/* Hexagon-shaped mask with borders and shadows */}\r\n {size === 'small' && }\r\n {size === 'large' && }\r\n\r\n {size === 'small' && adminStar && }\r\n {size === 'small' && rootUserStar && }\r\n \r\n \r\n );\r\n};\r\n\r\nexport default Avatar;\r\n","import styled from 'styled-components/macro';\r\nimport { NavLink } from 'react-router-dom';\r\n\r\nconst StyledNavLink = styled(NavLink)`\r\n font-family: Rubik, sans-serif;\r\n font-size: 15px;\r\n color: #354052;\r\n text-decoration: none;\r\n line-height: 18px;\r\n\r\n &.active,\r\n &.active li {\r\n color: #2ea1f8;\r\n font-weight: 500;\r\n }\r\n`;\r\n\r\nexport default StyledNavLink;\r\n","import React, { useState } from 'react';\r\nimport styled from 'styled-components/macro';\r\nimport ExpandMore from '@material-ui/icons/ExpandMore';\r\nimport ExpandLess from '@material-ui/icons/ExpandLess';\r\nimport Collapse from '@material-ui/core/Collapse';\r\nimport List from '@material-ui/core/List';\r\nimport ListItem from '@material-ui/core/ListItem';\r\n\r\nimport NavLink from './NavLink';\r\n\r\ninterface PopupMenuItemValue {\r\n text: string;\r\n}\r\n\r\ninterface CommandPopupMenuItem extends PopupMenuItemValue {\r\n onClick: (event?: React.MouseEvent) => void;\r\n}\r\n\r\nfunction isCommandMenuItem(value: PopupMenuItemValueType): value is CommandPopupMenuItem {\r\n return typeof (value as CommandPopupMenuItem).onClick === 'function';\r\n}\r\n\r\ninterface HierarchicalPopupMenuItem extends PopupMenuItemValue {\r\n children: PopupMenuItemValueType[];\r\n}\r\n\r\nfunction isHierarchicalPopupMenuItem(\r\n value: PopupMenuItemValueType\r\n): value is HierarchicalPopupMenuItem {\r\n return Array.isArray((value as HierarchicalPopupMenuItem).children);\r\n}\r\n\r\ninterface NavigationPopupMenuItem extends PopupMenuItemValue {\r\n path: string;\r\n}\r\n\r\nfunction isNavigationPopupMenuItem(\r\n value: PopupMenuItemValueType\r\n): value is NavigationPopupMenuItem {\r\n return typeof (value as NavigationPopupMenuItem).path === 'string';\r\n}\r\n\r\nexport type PopupMenuItemValueType =\r\n | string\r\n | CommandPopupMenuItem\r\n | HierarchicalPopupMenuItem\r\n | NavigationPopupMenuItem\r\n | 'divider';\r\n\r\ninterface PopupMenuItemProps {\r\n item: PopupMenuItemValueType;\r\n handleClose: () => void;\r\n style?: Record;\r\n}\r\n\r\nconst Divider = styled.div`\r\n margin: 15px;\r\n height: 1px;\r\n border-bottom: 1px solid #c5d0de;\r\n`;\r\n\r\nconst ChildrenList = styled(List)`\r\n max-height: 215px;\r\n overflow-y: auto;\r\n\r\n &::-webkit-scrollbar-track {\r\n background: #e3e0e0;\r\n border-radius: 10px;\r\n }\r\n &::-webkit-scrollbar {\r\n width: 6px;\r\n }\r\n &::-webkit-scrollbar-thumb {\r\n background: #c1baba;\r\n border-radius: 10px;\r\n }\r\n`;\r\n\r\nconst dummyElement = <>;\r\ntype ReactElement = typeof dummyElement;\r\n\r\nconst PopupMenuItem = (props: PopupMenuItemProps) => {\r\n const { item, handleClose, style } = props;\r\n const [open, setOpen] = useState(false);\r\n if (item === '') return null;\r\n\r\n let inner: string | ReactElement = typeof item === 'string' ? item : item.text;\r\n if (isHierarchicalPopupMenuItem(item)) {\r\n inner = (\r\n <>\r\n {item.text}\r\n {open ? : }\r\n \r\n );\r\n }\r\n\r\n const toggleOpen = () => setOpen(!open);\r\n\r\n const onClick = () => {\r\n if (isHierarchicalPopupMenuItem(item)) {\r\n toggleOpen();\r\n } else {\r\n if (isCommandMenuItem(item)) {\r\n item.onClick();\r\n }\r\n handleClose();\r\n }\r\n };\r\n\r\n const ListItemInstance = (\r\n \r\n {inner}\r\n \r\n );\r\n return (\r\n <>\r\n {item === 'divider' && }\r\n {item !== 'divider' &&\r\n (isNavigationPopupMenuItem(item) ? (\r\n {ListItemInstance}\r\n ) : (\r\n ListItemInstance\r\n ))}\r\n\r\n {item !== 'divider' && isHierarchicalPopupMenuItem(item) && (\r\n \r\n \r\n {item.children.map((child, i) => (\r\n \r\n ))}\r\n \r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default PopupMenuItem;\r\n","import React, { Fragment, useState, useRef } from 'react';\r\nimport { SwipeableDrawer, RootRef, List, Popover } from '@material-ui/core';\r\n\r\nimport PopupMenuItem, { PopupMenuItemValueType } from './PopupMenuItem';\r\n\r\ninterface IPopMenuProps {\r\n children: React.ReactNode;\r\n menuItems: PopupMenuItemValueType[];\r\n isDrawer?: boolean;\r\n}\r\n\r\nconst PopupMenu = (props: IPopMenuProps) => {\r\n const [open, setOpen] = useState(false);\r\n\r\n const handleToggle = () => setOpen(!open);\r\n const handleClose = () => setOpen(false);\r\n const handleOpen = () => setOpen(true);\r\n\r\n const anchorEl = useRef(null);\r\n\r\n const { children, menuItems, isDrawer } = props;\r\n return (\r\n \r\n \r\n
{children}
\r\n
\r\n\r\n {isDrawer ? (\r\n \r\n \r\n {menuItems.map((item, i) => {\r\n return ;\r\n })}\r\n \r\n \r\n ) : (\r\n \r\n \r\n {menuItems.map((item, i) => {\r\n return ;\r\n })}\r\n \r\n \r\n )}\r\n
\r\n );\r\n};\r\n\r\nexport default PopupMenu;\r\n","import React from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nimport Button from '@material-ui/core/Button';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogContentText from '@material-ui/core/DialogContentText';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\n\r\ninterface ResponsiveDialogProps {\r\n title: string;\r\n text: string;\r\n cb: (answer: boolean) => void;\r\n fullScreen?: boolean;\r\n}\r\n\r\nfunction ModalPrompt(props: ResponsiveDialogProps) {\r\n const { t } = useTranslation();\r\n const { title, text, cb, fullScreen } = props;\r\n const handleClose = (answer: boolean) => cb(answer);\r\n\r\n return (\r\n handleClose(false)}\r\n aria-labelledby=\"responsive-dialog-title\">\r\n {title}\r\n \r\n {text}\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default ModalPrompt;\r\n","import React, { useState } from 'react';\r\nimport styled from 'styled-components/macro';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nimport DeleteIcon from '@material-ui/icons/Delete';\r\nimport EditIcon from '@material-ui/icons/Edit';\r\nimport IconMoreVert from '@material-ui/icons/MoreVert';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport Avatar from '../Avatar/Avatar';\r\nimport { Permission } from 'models/Permissions';\r\nimport PopupMenu from '../_common/PopupMenu';\r\nimport ModalPrompt from '../_common/ModalPrompt';\r\nimport { TableCell, TableRow, ButtonsTableCell, TableIconButton } from '../_common/Table';\r\nimport { isString } from 'lodash';\r\n\r\nimport { UsersTableRowProps } from './UsersTableRowContainer';\r\nimport { StyledComponentWithAnyType } from 'store/storeTypes';\r\nconst AvatarTableCell = styled(TableCell)`\r\n padding-top: 0.85rem;\r\n padding-right: 37px;\r\n width: 83px;\r\n min-width: 83px;\r\n`;\r\n\r\nconst NameTableCell: StyledComponentWithAnyType = styled(TableCell)`\r\n width: 130px;\r\n min-width: 130px;\r\n b {\r\n font-weight: 500;\r\n }\r\n @media (max-width: 840px) {\r\n flex-grow: 1;\r\n }\r\n @media (max-width: 595px) {\r\n display: flex;\r\n }\r\n @media (max-width: 350px) {\r\n min-width: 90px;\r\n font-size: 14px;\r\n }\r\n`;\r\n\r\nconst LastNameTableCell = styled(NameTableCell)`\r\n @media (max-width: 595px) {\r\n display: none;\r\n }\r\n`;\r\n\r\nconst ScopeTableCell = styled(TableCell)`\r\n flex-grow: 1;\r\n flex-direction: column;\r\n justify-content: center;\r\n align-items: stretch;\r\n width: 300px;\r\n min-width: 300px;\r\n @media (max-width: 840px) {\r\n display: none;\r\n }\r\n`;\r\n\r\nconst GoalsTableCell = styled(TableCell)`\r\n width: 90px;\r\n min-width: 90px;\r\n justify-content: center;\r\n @media (max-width: 455px) {\r\n display: none;\r\n }\r\n`;\r\n\r\nconst UsersTableRow = React.memo((props: UsersTableRowProps) => {\r\n const { t } = useTranslation();\r\n const {\r\n deleteUser,\r\n openModalUserEdit,\r\n openModalUserDuplicate,\r\n inviteUser,\r\n resetUserPassword,\r\n } = props;\r\n const { userEntry, userScope, isRowSelected } = props;\r\n const [isPromptOpen, setPromptOpen] = useState(false);\r\n\r\n const onOpenModal = (e: React.SyntheticEvent) => {\r\n e.stopPropagation();\r\n openModalUserEdit(userEntry.id);\r\n };\r\n\r\n const onOpenPrompt = (e: React.SyntheticEvent) => {\r\n e.stopPropagation();\r\n setPromptOpen(true);\r\n };\r\n\r\n const onClosePrompt = (answer: boolean) => {\r\n setPromptOpen(false);\r\n answer && deleteUser(userEntry.id);\r\n };\r\n //* if user is shadow user, we don't render it\r\n if (userEntry.isShadowUser) {\r\n return <>;\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 {userScope.map(scopePart => (\r\n \r\n ))}\r\n \r\n \r\n {userEntry.permissions.includes(Permission.SetGoals) ? (\r\n \"Goals\"\r\n ) : (\r\n <>—\r\n )}\r\n \r\n \r\n \r\n \r\n \r\n\r\n {!userEntry.isRootUser && (\r\n \r\n \r\n \r\n )}\r\n\r\n {isPromptOpen && (\r\n \r\n )}\r\n\r\n openModalUserDuplicate(userEntry.id),\r\n },\r\n {\r\n text: t('usersTable.resetPassword'),\r\n onClick: () => resetUserPassword(userEntry.id),\r\n },\r\n {\r\n text: t('usersTable.sendInvitation'),\r\n onClick: () => inviteUser(userEntry.id),\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 UsersTableRow;\r\n","import { connect } from 'react-redux';\r\nimport { bindActionCreators, Dispatch } from 'redux';\r\n\r\nimport { deleteUser, inviteUser, resetUserPassword } from 'actions/userApiActions';\r\nimport {\r\n toggleUserTableRow,\r\n openModalUserEdit,\r\n openModalUserDuplicate,\r\n} from 'actions/userUiActions';\r\nimport UsersTableRow from './UsersTableRow';\r\nimport { Store } from 'store/storeTypes';\r\nimport { userByIdSelector } from 'selectors/entitiesSelectors';\r\nimport { makeUserScopeStringSelector, makeIsUserRowSelectedSelector } from 'selectors/uiSelectors';\r\n\r\ninterface OwnProps {\r\n userId: string;\r\n}\r\n\r\nconst makeMapStateToProps = () => {\r\n const userScopeSelector = makeUserScopeStringSelector();\r\n const isUserRowSelectedSelector = makeIsUserRowSelectedSelector();\r\n\r\n return (state: Store, ownProps: OwnProps) => ({\r\n userEntry: userByIdSelector(state, ownProps),\r\n userScope: userScopeSelector(state, ownProps),\r\n isRowSelected: isUserRowSelectedSelector(state, ownProps),\r\n });\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch: Dispatch) =>\r\n bindActionCreators(\r\n {\r\n toggleUserTableRow,\r\n inviteUser,\r\n resetUserPassword,\r\n openModalUserEdit,\r\n openModalUserDuplicate,\r\n deleteUser,\r\n },\r\n dispatch\r\n );\r\n\r\nexport type UsersTableRowProps = OwnProps &\r\n ReturnType> &\r\n ReturnType;\r\n\r\nexport default connect(makeMapStateToProps, mapDispatchToProps)(UsersTableRow);\r\n","import React, { useRef } from 'react';\r\nimport styled from 'styled-components/macro';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { Paper, Table, TableHead, TableHeadRow, TableHeadCell, TableBody } from '../_common/Table';\r\nimport UsersTableRow from './UsersTableRowContainer';\r\nimport LinearProgress from '../_common/LinearProgress';\r\n\r\nimport { UsersTableProps } from './UsersTableContainer';\r\n\r\nconst AvatarHeadCell = styled(TableHeadCell)`\r\n padding-right: 37px;\r\n width: 83px;\r\n min-width: 83px;\r\n`;\r\nconst ButtonsHeadCell = styled(TableHeadCell)`\r\n text-align: right;\r\n width: 121px;\r\n min-width: 121px;\r\n\r\n svg {\r\n color: #7f8fa4;\r\n }\r\n\r\n & > * {\r\n display: inline-block;\r\n }\r\n`;\r\nconst NameHeadCell = styled(TableHeadCell)`\r\n width: 130px;\r\n min-width: 130px;\r\n @media (max-width: 840px) {\r\n flex-grow: 1;\r\n }\r\n @media (max-width: 350px) {\r\n min-width: 90px;\r\n font-size: 14px;\r\n }\r\n`;\r\nconst LastNameHeadCell = styled(TableHeadCell)`\r\n width: 130px;\r\n min-width: 130px;\r\n @media (max-width: 595px) {\r\n display: none;\r\n }\r\n`;\r\nconst ScopeHeadCell = styled(TableHeadCell)`\r\n flex-grow: 1;\r\n @media (max-width: 840px) {\r\n display: none;\r\n }\r\n`;\r\nconst GoalsHeadCell = styled(TableHeadCell)`\r\n width: 90px;\r\n min-width: 90px;\r\n text-align: center;\r\n @media (max-width: 455px) {\r\n display: none;\r\n }\r\n`;\r\n\r\n// const IconButton = styled(MuiIconButton)`\r\n// margin: 0 5px;\r\n// padding: 0;\r\n// `;\r\n\r\nconst UsersTable = React.memo((props: UsersTableProps) => {\r\n const { t } = useTranslation();\r\n const { isLoading, userIds } = props;\r\n\r\n const tableBodyRef = useRef(null);\r\n\r\n return (\r\n \r\n {!isLoading && (\r\n \r\n \r\n \r\n {/*\r\n \r\n toggleUserTableAll(userIds)}\r\n />\r\n \r\n */}\r\n \r\n {t('usersTable.name')}\r\n {t('usersTable.lastName')}\r\n {t('usersTable.scope')}\r\n {t('usersTable.goals')}\r\n \r\n \r\n \r\n \r\n {userIds.map((id: string) => (\r\n \r\n ))}\r\n \r\n
\r\n )}\r\n\r\n {isLoading && }\r\n
\r\n );\r\n});\r\n\r\nexport default UsersTable;\r\n","import { connect } from 'react-redux';\r\nimport { bindActionCreators, Dispatch } from 'redux';\r\n\r\nimport { toggleUserTableAll } from 'actions/userUiActions';\r\nimport UsersTable from './UsersTable';\r\nimport { Store } from 'store/storeTypes';\r\nimport { userIdsWithSearchSelector } from 'selectors/entitiesSelectors';\r\nimport { isAllRowsCheckedSelector } from 'selectors/uiSelectors';\r\n\r\nconst mapStateToProps = (state: Store) => {\r\n const { isLoadingCustomers, isLoadingSites, isLoadingSystems, isLoadingUsers } = state.api;\r\n\r\n return {\r\n userIds: userIdsWithSearchSelector(state),\r\n isLoading: isLoadingCustomers || isLoadingSites || isLoadingSystems || isLoadingUsers,\r\n isAllRowsSelected: isAllRowsCheckedSelector(state),\r\n isSomeRowsSelected: state.ui.selectedUserRows.length > 0,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch: Dispatch) =>\r\n bindActionCreators(\r\n {\r\n toggleUserTableAll,\r\n },\r\n dispatch\r\n );\r\n\r\nexport type UsersTableProps = ReturnType &\r\n ReturnType;\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(UsersTable);\r\n","import React from 'react';\r\nimport styled from 'styled-components/macro';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nimport MuiDialog from '@material-ui/core/Dialog';\r\nimport MuiIconButton from '@material-ui/core/IconButton';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport withMobileDialog, { InjectedProps } from '@material-ui/core/withMobileDialog';\r\nimport { WithWidth } from '@material-ui/core/withWidth';\r\n\r\nconst Dialog = styled(MuiDialog).attrs({\r\n classes: {\r\n paper: 'dialog-paper',\r\n root: 'dialog-root',\r\n container: 'dialog-container',\r\n },\r\n fullWidth: true,\r\n})`\r\n .dialog-paper {\r\n border-radius: 10px;\r\n @media (max-width: 599px) {\r\n border-radius: 0;\r\n }\r\n }\r\n`;\r\n\r\nconst IconButton = styled(MuiIconButton)<{\r\n position: 'right' | 'left';\r\n}>`\r\n position: absolute;\r\n ${props => props.position}: 6px;\r\n top: 5px;\r\n color: #354052;\r\n`;\r\n\r\nexport interface ModalProps {\r\n children: React.ReactNode;\r\n onClose: () => void;\r\n isOpen: boolean;\r\n maxWidth?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';\r\n closeIconColor?: string;\r\n closeIconPosition?: 'right' | 'left';\r\n className?: string;\r\n disableBackdropClick?: boolean;\r\n renderCloseButton?: boolean;\r\n}\r\n\r\ntype ModalPropsWithMobile = ModalProps & InjectedProps & Partial;\r\n\r\nconst Modal = (props: ModalPropsWithMobile) => {\r\n const { t } = useTranslation();\r\n const {\r\n children,\r\n onClose,\r\n isOpen,\r\n fullScreen,\r\n closeIconColor,\r\n closeIconPosition,\r\n maxWidth,\r\n className,\r\n disableBackdropClick,\r\n renderCloseButton = true,\r\n } = props;\r\n\r\n return (\r\n \r\n {renderCloseButton && (\r\n \r\n \r\n \r\n )}\r\n\r\n {children}\r\n \r\n );\r\n};\r\n\r\nexport default withMobileDialog({ breakpoint: 'xs' })(Modal);\r\n","import { GenericPropsType } from 'store/storeTypes';\r\n\r\nexport interface ValidationError {\r\n key: string;\r\n values?: GenericPropsType;\r\n}\r\n\r\nexport type ValidationResult = ValidationError | undefined;\r\n\r\nexport const required = (value: GenericPropsType): ValidationResult =>\r\n (value && value.trim().length) || typeof value === 'number'\r\n ? undefined\r\n : { key: 'validation.required' };\r\n\r\nexport const maxLength = (max: number, value: GenericPropsType[] | string): ValidationResult =>\r\n value && value.length > max ? { key: 'validation.mustBeMaxChars', values: { max } } : undefined;\r\n\r\nexport const minLength = (min: number, value: GenericPropsType[] | string): ValidationResult =>\r\n value && value.length < min ? { key: 'validation.mustBeMinChars', values: { min } } : undefined;\r\n\r\nexport const number = (value: GenericPropsType): ValidationResult =>\r\n value && isNaN(Number(value)) ? { key: 'validation.mustBeNumber' } : undefined;\r\n\r\nexport const requiredPositiveInteger = (value: GenericPropsType): ValidationResult => {\r\n if (!value || isNaN(+value) || +value < 0 || Math.abs(+value - Math.floor(+value)) > 0) {\r\n return { key: 'validation.mustBePositiveInteger' };\r\n }\r\n if (value > 10000000) return { key: 'validation.mustBeMaxEigthNumbers' };\r\n return undefined;\r\n};\r\n\r\nexport const minValue = (min: number, value: number): ValidationResult =>\r\n value && value < min ? { key: 'validation.mustBeAtLeast', values: { min } } : undefined;\r\nexport const email = (value: string): ValidationResult => {\r\n const expression = /^(([^<>()\\[\\]\\\\.,;:\\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 value && value.trim().length && expression.test(String(value).toLowerCase())\r\n ? undefined\r\n : { key: 'validation.notValidEmail' };\r\n};\r\n\r\nexport const minArrayLength = (min: number, value: GenericPropsType[] | string): ValidationResult =>\r\n value && value.length < min\r\n ? { key: 'validation.mustContainMinElements', values: { min } }\r\n : undefined;\r\n\r\nexport const uniqueEmail = (value: string, existing: string[]): ValidationResult =>\r\n value && value.trim().length && existing && existing.length !== 0 && existing.indexOf(value) >= 0\r\n ? { key: 'validation.emailInUse' }\r\n : undefined;\r\n\r\nexport const lettersOnly = (str: string) => {\r\n const regex = /^[a-zA-Z\\s]+$/g;\r\n return str && regex.test(str) ? undefined : { key: 'validation.lettersOnly' };\r\n};\r\n\r\nexport const isNotNegativeNumber = (val: number) => (val < 0 ? 0 : val);\r\n","import React from 'react';\r\nimport styled from 'styled-components/macro';\r\nimport { useTranslation } from 'react-i18next';\r\nimport MuiTextField, { TextFieldProps as MuiTextFieldProps } from '@material-ui/core/TextField';\r\n\r\nimport { ValidationError } from '../../helpers/validationRules';\r\nimport { StyledComponentWithAnyType } from 'store/storeTypes';\r\n\r\nconst TextFieldStyled: StyledComponentWithAnyType = styled(MuiTextField).attrs({\r\n InputLabelProps: {\r\n classes: { root: 'label', shrink: 'label-filled' },\r\n },\r\n InputProps: { classes: { root: 'input' } },\r\n fullWidth: true,\r\n})`\r\n .label {\r\n font-size: 14px;\r\n font-family: Rubik, sans-serif;\r\n }\r\n .label-filled {\r\n color: #7f8fa4;\r\n font-size: 16px;\r\n }\r\n .input {\r\n font-family: Rubik, sans-serif;\r\n font-size: 14px;\r\n color: #354052;\r\n &::before {\r\n border-color: #c5d0de;\r\n }\r\n }\r\n`;\r\n\r\ninterface TextFieldProps {\r\n id?: string;\r\n label?: string;\r\n error?: ValidationError | false;\r\n onChange?: TextFieldProps & TextFieldProps;\r\n value?: number | string;\r\n}\r\n\r\nconst TextField = React.memo((props: TextFieldProps & MuiTextFieldProps) => {\r\n const { t } = useTranslation();\r\n const { error, ...rest } = props;\r\n\r\n return (\r\n \r\n );\r\n});\r\nexport default TextField;\r\n","import React from 'react';\r\nimport DropdownTreeSelect, { DropdownTreeSelectProps } from 'react-dropdown-tree-select';\r\nimport styled from 'styled-components/macro';\r\nimport { useTranslation } from 'react-i18next';\r\nimport FormHelperText from '@material-ui/core/FormHelperText';\r\n\r\nimport 'react-dropdown-tree-select/dist/styles.css';\r\n\r\nimport { ValidationError } from 'helpers/validationRules';\r\n\r\nconst StyledDropdownTreeSelect = styled(DropdownTreeSelect)<{\r\n hierarchical?: boolean;\r\n showPartiallySelected?: boolean;\r\n}>`\r\n position: absolute;\r\n top: 0;\r\n width: 100%;\r\n height: 100%;\r\n\r\n .dropdown,\r\n .dropdown-trigger {\r\n outline: none;\r\n display: block;\r\n width: 100%;\r\n height: 100%;\r\n\r\n &::after,\r\n .tag-list {\r\n display: none;\r\n }\r\n .dropdown-trigger {\r\n &.arrow {\r\n border: 0;\r\n box-sizing: border-box;\r\n &:before {\r\n content: '';\r\n width: 12px;\r\n height: 6px;\r\n position: absolute;\r\n top: 28px;\r\n right: 0;\r\n background: url('/img/tree-select-arrow.svg') top right no-repeat;\r\n transform: rotate(-180deg);\r\n transition: 0.1s ease-out;\r\n }\r\n &.top:before {\r\n transform: rotate(0);\r\n }\r\n + .dropdown-content {\r\n position:absolute;\r\n top: 50px;\r\n height: 175px;\r\n max-height: 175px;\r\n width: 100%;\r\n overflow-y: auto;\r\n border: 1px solid #89a5ca;\r\n box-sizing: border-box;\r\n box-shadow: -7px 9px 15px rgba(137, 165, 202, 0.17);\r\n border-radius: 4px;\r\n margin-right: -12px;\r\n\r\n &::-webkit-scrollbar-track {\r\n border-left: 1px solid #89a5ca;\r\n }\r\n\r\n &::-webkit-scrollbar {\r\n width: 12px;\r\n }\r\n\r\n &::-webkit-scrollbar-thumb {\r\n background: #109cf1;\r\n border-radius: 0 4px 4px 0;\r\n }\r\n\r\n .node {\r\n &[style*='20px'] {\r\n margin-left: 5px;\r\n }\r\n\r\n &[style*='40px'] {\r\n margin-left: 10px;\r\n }\r\n\r\n label {\r\n font-family: Rubik, sans-serif;\r\n font-style: normal;\r\n font-weight: normal;\r\n font-size: 14px;\r\n line-height: normal;\r\n color: #354052;\r\n }\r\n\r\n &.tree {\r\n display: flex;\r\n\r\n label {\r\n margin-top: 4px;\r\n }\r\n\r\n .toggle {\r\n order: 2;\r\n position: relative;\r\n width: 12px;\r\n height: 12px;\r\n margin: 6px 0 0 10px;\r\n\r\n &::after {\r\n content: '';\r\n position: absolute;\r\n width: 12px;\r\n height: 12px;\r\n background: url('/img/tree-select-arrow-sm.svg') center no-repeat;\r\n display: block;\r\n transition: 0.1s ease-out;\r\n }\r\n\r\n &.expanded::after {\r\n transform: rotate(180deg);\r\n }\r\n }\r\n }\r\n\r\n &.leaf {\r\n .toggle {\r\n display: none;\r\n }\r\n }\r\n\r\n .checkbox-item {\r\n position: relative;\r\n width: 1rem;\r\n height: 1rem;\r\n margin-right: 0.75rem;\r\n cursor: pointer;\r\n -webkit-appearance: none;\r\n -moz-appearance: none;\r\n appearance: none;\r\n outline: 0;\r\n vertical-align: middle;\r\n border: none;\r\n\r\n &:before {\r\n content: '';\r\n position: absolute;\r\n left: 0px;\r\n top: 0px;\r\n z-index: 1;\r\n width: 100%;\r\n height: 100%;\r\n border: 1px solid #354052;\r\n box-sizing: border-box;\r\n border-radius: 4px;\r\n }\r\n\r\n &:checked:before {\r\n border-color: #2196f3;\r\n background: #109cf1 url('/img/check-mark-white.svg') no-repeat center;\r\n }\r\n\r\n &:checked ~ span {\r\n //font-weight: 500;\r\n color: #109cf1;\r\n }\r\n }\r\n\r\n &.partial {\r\n .checkbox-item:before {\r\n background-color: #459edd;\r\n border-color: #459edd;\r\n outline: 1px solid white;\r\n outline-offset: -3px;\r\n border-radius: 0;\r\n }\r\n }\r\n\r\n &.disabled {\r\n .checkbox-item {\r\n & ~ span {\r\n color: #ccc;\r\n }\r\n\r\n &:before {\r\n border-color: #bbb;\r\n background-color: #ccc;\r\n }\r\n }\r\n }\r\n\r\n .searchLoader {\r\n display: none;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n`;\r\n\r\nconst TreeSelectContainer = styled.div`\r\n position: relative;\r\n padding-bottom: 6px;\r\n\r\n .label {\r\n font-size: 12px;\r\n font-family: Rubik, sans-serif;\r\n color: rgba(0, 0, 0, 0.54);\r\n margin-bottom: 6px;\r\n min-height: 14px;\r\n }\r\n\r\n &.error {\r\n .label {\r\n color: rgb(244, 67, 54);\r\n }\r\n .rendered-value {\r\n border-bottom: 2px solid rgb(244, 67, 54);\r\n color: rgb(244, 67, 54);\r\n }\r\n }\r\n\r\n .rendered-value {\r\n font-family: Rubik, sans-serif;\r\n font-size: 14px;\r\n min-height: 17px;\r\n color: ${(props: { haveValue?: boolean }) =>\r\n props.haveValue ? '#354052' : 'rgba(0, 0, 0, 0.54)'};\r\n line-height: 18px;\r\n padding-top: 1px;\r\n padding-bottom: 5px;\r\n border-bottom: 1px solid #c5d0de;\r\n\r\n & > div:not(:last-child) {\r\n margin-bottom: 0.4rem;\r\n padding-bottom: 0.2rem;\r\n border-bottom: 1px solid #f0f0f0;\r\n }\r\n }\r\n`;\r\n\r\ninterface ITreeSelectProps extends DropdownTreeSelectProps {\r\n label: string;\r\n userScope: string[];\r\n error?: ValidationError | false;\r\n isPartiallySelectedTree?: boolean;\r\n}\r\n\r\nconst TreeSelect = React.memo((props: ITreeSelectProps) => {\r\n const { t } = useTranslation();\r\n const { label, userScope, error, isPartiallySelectedTree, ...rest } = props;\r\n const renderedValue = userScope.map((e, i) =>
{e}
);\r\n\r\n if (isPartiallySelectedTree) {\r\n return ;\r\n }\r\n\r\n return (\r\n \r\n
{renderedValue.length ? label : ''}
\r\n
{renderedValue.length ? renderedValue : label}
\r\n \r\n {error && t(error.key, error.values)}\r\n
\r\n );\r\n});\r\n\r\nexport default TreeSelect;\r\n","import React, { useState } from 'react';\r\nimport styled from 'styled-components/macro';\r\nimport Grid from '@material-ui/core/Grid';\r\nimport MuiSwitch from '@material-ui/core/Switch';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport MuiInfoIcon from '@material-ui/icons/InfoOutlined';\r\nimport MuiPopover from '@material-ui/core/Popover';\r\n\r\nconst SwitchLabel = styled(Typography)`\r\n font-family: Rubik, sans-serif;\r\n font-size: 14px;\r\n color: #7f8fa4;\r\n width: 9rem;\r\n margin-top: 2px;\r\n\r\n &.checked {\r\n color: #354052;\r\n }\r\n`;\r\n\r\nconst InfoIcon = styled(MuiInfoIcon)`\r\n color: #208cd7;\r\n margin-top: 4px;\r\n`;\r\n\r\nconst Popover = styled(MuiPopover)`\r\n pointer-events: none;\r\n\r\n .paper {\r\n box-shadow: none;\r\n background: none;\r\n }\r\n`;\r\n\r\nconst PopoverPaper = styled.div`\r\n font-family: Roboto, sans-serif;\r\n font-size: 9px;\r\n line-height: 11px;\r\n color: #354052;\r\n display: flex;\r\n align-items: center;\r\n padding: 4px;\r\n\r\n .arrow {\r\n position: relative;\r\n left: 5px;\r\n width: 10px;\r\n height: 10px;\r\n background: #fff;\r\n transform: rotate(45deg);\r\n border-left: 1px solid rgba(0, 0, 0, 0.15);\r\n border-bottom: 1px solid rgba(0, 0, 0, 0.15);\r\n }\r\n\r\n .text {\r\n padding: 7px;\r\n background: #fff;\r\n box-shadow: 0px 2px 2px rgba(0, 0, 0, 0.38);\r\n border-radius: 4px;\r\n border-top: 1px solid rgba(0, 0, 0, 0.1);\r\n max-width: 120px;\r\n }\r\n`;\r\n\r\ninterface SwitchProps {\r\n checked: boolean;\r\n onChange: (event: React.ChangeEvent, checked: boolean) => void;\r\n onClick?: (event: React.SyntheticEvent) => void;\r\n id?: string;\r\n label?: string;\r\n labelStyle?: React.CSSProperties;\r\n disabled?: boolean;\r\n justify?: 'space-between' | 'center' | 'flex-start';\r\n tip?: string;\r\n}\r\n\r\nexport default function Switch(props: SwitchProps) {\r\n const [anchorEl, setAnchorEl] = useState(null);\r\n\r\n const handlePopoverOpen = (e: React.MouseEvent) => {\r\n setAnchorEl(e.currentTarget);\r\n };\r\n\r\n const handlePopoverClose = () => {\r\n setAnchorEl(null);\r\n };\r\n\r\n const isOpen = Boolean(anchorEl);\r\n\r\n const { onClick, onChange, label, tip, justify, labelStyle, ...rest } = props;\r\n const { id, checked } = rest;\r\n\r\n return (\r\n \r\n {label && (\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n \r\n \r\n {tip && (\r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
{tip}
\r\n \r\n \r\n \r\n )}\r\n \r\n );\r\n}\r\n","import MuiButton from '@material-ui/core/Button';\r\nimport { withStyles } from '@material-ui/core/styles';\r\n\r\nconst Button = withStyles({\r\n root: {\r\n fontFamily: 'Rubik, sans-serif',\r\n fontSize: '12px',\r\n border: '1px solid #208cd7',\r\n borderRadius: '4px',\r\n width: '131px',\r\n padding: 0,\r\n textTransform: 'none',\r\n fontWeight: 'normal',\r\n '&:hover': {\r\n background: '#inherit',\r\n },\r\n },\r\n // select: {\r\n // textTransform: 'capitalize',\r\n // },\r\n})(MuiButton);\r\n\r\nexport default Button;\r\n","import styled from 'styled-components/macro';\r\nimport Button from './Button';\r\n\r\nconst ButtonOk = styled(Button).attrs({\r\n classes: { disabled: 'disabled' },\r\n})`\r\n color: #fff;\r\n font-weight: 500;\r\n background: #109cf1;\r\n border: none;\r\n\r\n &:hover {\r\n background: #109cf1;\r\n }\r\n\r\n &.disabled {\r\n background: #eee;\r\n }\r\n`;\r\n\r\nexport default ButtonOk;\r\n","import styled from 'styled-components/macro';\r\nimport Button from './Button';\r\n\r\nconst ButtonCancel = styled(Button)`\r\n color: #109cf1;\r\n`;\r\n\r\nexport default ButtonCancel;\r\n","import styled from 'styled-components/macro';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\n\r\nconst ButtonSpinner = styled(CircularProgress).attrs({\r\n size: 20,\r\n})`\r\n color: #fff;\r\n`;\r\n\r\nexport default ButtonSpinner;\r\n","import styled from 'styled-components/macro';\r\nimport { Grid } from '@material-ui/core';\r\n// import Grid from './Grid';\r\n// import Grid from '@material-ui/core/Grid';\r\n\r\nconst FormRow = styled(Grid)`\r\n margin-bottom: 16px;\r\n\r\n &.with-helpers {\r\n margin-bottom: -4px;\r\n }\r\n`;\r\n\r\nexport default FormRow;\r\n","import styled from 'styled-components/macro';\r\nimport MuiGrid from '@material-ui/core/Grid';\r\n\r\nconst Grid = styled(MuiGrid)`\r\n &.ends-grid-item {\r\n margin-top: 10px;\r\n }\r\n @media (max-width: 599px) {\r\n &.item:not(:first-child) {\r\n padding-top: 0;\r\n }\r\n &.repeat-grid-item {\r\n padding-bottom: 0;\r\n }\r\n &.ends-grid-item {\r\n margin-top: 20px;\r\n }\r\n }\r\n`;\r\n\r\nexport default Grid;\r\n","import styled from 'styled-components/macro';\r\n\r\nconst PopupButtons = styled.div`\r\n display: flex;\r\n margin-top: 50px;\r\n justify-content: flex-end;\r\n button:not(:last-child) {\r\n margin-right: 16px;\r\n }\r\n @media (max-width: 400px) {\r\n button {\r\n flex-grow: 1;\r\n }\r\n }\r\n`;\r\n\r\nexport default PopupButtons;\r\n","import React, { useMemo, useCallback } from 'react';\r\nimport { useForm, useField } from 'react-final-form-hooks';\r\nimport { TreeNodeProps } from 'react-dropdown-tree-select';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nimport {\r\n required,\r\n email as validateEmail,\r\n uniqueEmail,\r\n maxLength,\r\n lettersOnly,\r\n} from '../../helpers/validationRules';\r\nimport TextField from '../_common/TextField';\r\nimport TreeSelect from '../_common/TreeSelect/TreeSelect';\r\nimport Switch from '../_common/Switch';\r\nimport ButtonOk from '../_common/ButtonOk';\r\nimport ButtonCancel from '../_common/ButtonCancel';\r\nimport ButtonSpinner from '../_common/ButtonSpinner';\r\nimport FormRow from '../_common/FormRow';\r\nimport Grid from '../_common/Grid';\r\nimport PopupButtons from '../_common/PopupButtons';\r\nimport { UserFormProps } from './UserFormContainer';\r\nimport { isEmpty } from 'lodash';\r\nimport { StyledTooltip } from 'globalStyle';\r\n\r\nexport type ValidateValues = {\r\n email?: string;\r\n lastname?: string;\r\n firstname?: string;\r\n};\r\n\r\nconst UserForm = React.memo((props: UserFormProps) => {\r\n const { t } = useTranslation();\r\n const {\r\n userForm,\r\n isSaving,\r\n userScope,\r\n allUsersButCurrentEmails,\r\n closeThisModal,\r\n changeFormPlainValue,\r\n changeUserFormScope,\r\n saveUser,\r\n } = props;\r\n const modalUserIsNew = !userForm.id;\r\n const onSubmit = useCallback(() => {\r\n saveUser();\r\n }, [saveUser]);\r\n\r\n const validate = useCallback(\r\n (values: ValidateValues) => ({\r\n firstname:\r\n required(values.firstname) ||\r\n maxLength(100, values.firstname) ||\r\n lettersOnly(values.firstname),\r\n lastname:\r\n required(values.lastname) ||\r\n maxLength(100, values.lastname) ||\r\n lettersOnly(values.lastname),\r\n email:\r\n required(values.email) ||\r\n validateEmail(values.email) ||\r\n uniqueEmail(values.email, allUsersButCurrentEmails) ||\r\n maxLength(256, values.email),\r\n }),\r\n [allUsersButCurrentEmails]\r\n );\r\n\r\n const initialformData = useMemo(() => ({ ...userForm }), [userForm]);\r\n const { form, handleSubmit, errors } = useForm({\r\n onSubmit,\r\n validate,\r\n initialValues: initialformData,\r\n });\r\n\r\n const firstname = useField('firstname', form);\r\n const lastname = useField('lastname', form);\r\n const email = useField('email', form);\r\n return (\r\n
\r\n \r\n\r\n \r\n \r\n {\r\n changeFormPlainValue({\r\n field: 'firstname',\r\n value: e.target.value,\r\n });\r\n firstname.input.onChange(e);\r\n }}\r\n value={firstname.input.value}\r\n />\r\n \r\n \r\n {\r\n changeFormPlainValue({\r\n field: 'lastname',\r\n value: e.target.value,\r\n });\r\n lastname.input.onChange(e);\r\n }}\r\n value={lastname.input.value}\r\n />\r\n \r\n \r\n\r\n \r\n \r\n \r\n {\r\n changeFormPlainValue({\r\n field: 'email',\r\n value: e.target.value,\r\n });\r\n email.input.onChange(e);\r\n }}\r\n />\r\n \r\n \r\n \r\n\r\n \r\n \r\n changeUserFormScope(selectedNodes)}\r\n />\r\n \r\n \r\n\r\n {\r\n changeFormPlainValue({\r\n field: 'setGoals',\r\n value: e.target.checked,\r\n });\r\n }}\r\n checked={userForm.setGoals && userScope.length > 0}\r\n disabled={userScope.length === 0}\r\n tip={t('userForm.setGoalsTip')}\r\n />\r\n\r\n {\r\n changeFormPlainValue({\r\n field: 'adminPermissions',\r\n value: e.target.checked,\r\n });\r\n }}\r\n checked={userForm.adminPermissions}\r\n disabled={userForm.isRootUser}\r\n tip={t('userForm.adminPermissionsTip')}\r\n />\r\n\r\n \r\n Cancel\r\n \r\n {isSaving ? : t('userForm.save')}\r\n \r\n \r\n \r\n );\r\n});\r\n\r\nexport default UserForm;\r\n","import { connect } from 'react-redux';\r\nimport { bindActionCreators, Dispatch } from 'redux';\r\n\r\nimport { Store, MODAL_STATUS } from 'store/storeTypes';\r\n\r\nimport { changeFormPlainValue, changeUserFormScope } from 'actions/userUiActions';\r\nimport { saveUser } from 'actions/userApiActions';\r\nimport {\r\n makeUserScopeStringSelector,\r\n allUsersButCurrentEmailsSelector,\r\n} from 'selectors/uiSelectors';\r\n\r\nimport UserForm from './UserForm';\r\n\r\nexport interface OwnProps {\r\n closeThisModal: () => void;\r\n}\r\n\r\nconst mapStateToProps = (state: Store, ownProps: OwnProps) => ({\r\n userForm: state.ui.userForm,\r\n isSaving: state.ui.userModal.status === MODAL_STATUS.SAVING,\r\n userScope: makeUserScopeStringSelector()(state, ownProps),\r\n allUsersButCurrentEmails: allUsersButCurrentEmailsSelector(state),\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch: Dispatch) =>\r\n bindActionCreators(\r\n {\r\n changeFormPlainValue,\r\n changeUserFormScope,\r\n saveUser,\r\n },\r\n dispatch\r\n );\r\n\r\nexport type UserFormProps = OwnProps &\r\n ReturnType &\r\n ReturnType;\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(UserForm);\r\n","import React from 'react';\r\nimport styled from 'styled-components/macro';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nimport { UserAvatarUploadProps } from './UserAvatarUploadContainer';\r\nimport { StyledComponentWithAnyType } from 'store/storeTypes';\r\n\r\nconst HiddenFileInput: StyledComponentWithAnyType = styled.input.attrs({ type: 'file' })`\r\n display: none;\r\n`;\r\n\r\nconst HiddenInputLabel = styled.label`\r\n display: inline-block;\r\n position: relative;\r\n cursor: pointer;\r\n`;\r\n\r\nconst UserAvatarUpload = React.memo((props: UserAvatarUploadProps) => {\r\n const { t } = useTranslation();\r\n const { children, changeFormAvatar, enqueueNotification } = props;\r\n\r\n const onFileChange = (e: React.BaseSyntheticEvent) => {\r\n const files = Array.from(e.target.files as File[]);\r\n\r\n if (!files[0]) return;\r\n\r\n if (!files[0].name.match(/\\.(jpe?g|png)$/) || files[0].size > 102400) {\r\n enqueueNotification(t('userAvatarUpload.warning'), {\r\n variant: 'warning',\r\n });\r\n return;\r\n }\r\n\r\n changeFormAvatar(files[0]);\r\n };\r\n\r\n return (\r\n \r\n {children}\r\n \r\n \r\n );\r\n});\r\n\r\nexport default UserAvatarUpload;\r\n","import { connect } from 'react-redux';\r\nimport { bindActionCreators, Dispatch } from 'redux';\r\nimport { ReactNode } from 'react';\r\n\r\nimport UserAvatarUpload from './UserAvatarUpload';\r\nimport { Store } from '../../store/storeTypes';\r\nimport { changeFormAvatar } from '../../actions/userUiActions';\r\nimport { enqueueNotification } from '../../actions/uiActions';\r\n\r\ninterface OwnProps {\r\n children: ReactNode;\r\n}\r\n\r\nconst mapStateToProps = (state: Store) => ({\r\n userId: state.ui.userForm.id,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch: Dispatch) =>\r\n bindActionCreators(\r\n {\r\n changeFormAvatar,\r\n enqueueNotification,\r\n },\r\n dispatch\r\n );\r\n\r\nexport type UserAvatarUploadProps = OwnProps &\r\n ReturnType &\r\n ReturnType;\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(UserAvatarUpload);\r\n","import React from 'react';\r\nimport styled from 'styled-components/macro';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nimport ButtonOk from '../_common/ButtonOk';\r\nimport ButtonCancel from '../_common/ButtonCancel';\r\nimport ButtonSpinner from '../_common/ButtonSpinner';\r\nimport { UserModalSuccessProps } from './UserModalSuccessContainer';\r\n\r\nconst Congratulations = styled.div`\r\n margin-top: 3.3rem;\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n\r\n .pictures {\r\n position: relative;\r\n width: 220px;\r\n text-align: center;\r\n margin-left: 16px;\r\n\r\n .circle {\r\n margin-right: 16px;\r\n width: 68.5px;\r\n height: 68px;\r\n }\r\n\r\n .star {\r\n position: absolute;\r\n top: 0;\r\n\r\n &.n1 {\r\n left: 33px;\r\n top: -12px;\r\n width: 13.7px;\r\n height: 11.3px;\r\n }\r\n &.n2 {\r\n left: 0;\r\n top: 0;\r\n width: 36px;\r\n height: 36px;\r\n opacity: 0.1;\r\n }\r\n &.n3 {\r\n left: 143px;\r\n top: 0;\r\n width: 43px;\r\n height: 43px;\r\n opacity: 0.1;\r\n }\r\n &.n4 {\r\n left: 202px;\r\n top: 28px;\r\n width: 13.7px;\r\n height: 11.3px;\r\n }\r\n &.n5 {\r\n left: 171px;\r\n top: 42px;\r\n width: 24px;\r\n height: 24px;\r\n }\r\n }\r\n }\r\n\r\n h2 {\r\n font-family: Rubik, sans-serif;\r\n font-weight: normal;\r\n font-size: 36px;\r\n color: #ff4081;\r\n margin: 0.5rem 0 0;\r\n }\r\n\r\n p {\r\n font-family: Rubik, sans-serif;\r\n font-size: 18px;\r\n // text-align: center;\r\n color: #354052;\r\n margin: 0.8rem 0 0;\r\n }\r\n\r\n .buttons {\r\n margin: 2.5rem 0 5rem;\r\n\r\n button {\r\n margin: 0 0.5rem;\r\n }\r\n }\r\n`;\r\n\r\nconst UserModalSuccess = React.memo((props: UserModalSuccessProps) => {\r\n const { t } = useTranslation();\r\n const { lastSavedUserId, isPendingInvitation, isInvitationSent } = props;\r\n const { closeModalUser, inviteUser } = props;\r\n\r\n return (\r\n \r\n
\r\n \"\"\r\n \"\"\r\n \"\"\r\n \"\"\r\n \"\"\r\n \"\"\r\n
\r\n\r\n

{t('userModal.congratulations')}

\r\n

{t('userModal.youCreated')}

\r\n {isInvitationSent ? (\r\n

{t('userModal.invitationSent')}

\r\n ) : (\r\n

{t('userModal.sendInvitationQuestion')}

\r\n )}\r\n\r\n
\r\n {isInvitationSent ? (\r\n \r\n {t('userModal.ok')}\r\n \r\n ) : (\r\n \r\n {t('userModal.dontSend')}\r\n \r\n )}\r\n\r\n {!isInvitationSent && (\r\n inviteUser(lastSavedUserId)}\r\n disabled={isPendingInvitation}>\r\n {isPendingInvitation ? : t('userModal.send')}\r\n \r\n )}\r\n
\r\n
\r\n );\r\n});\r\n\r\nexport default UserModalSuccess;\r\n","import { Store, Id } from '../store/storeTypes';\r\n\r\nexport function isInvitationPending(state: Store, id: Id) {\r\n return state.api.pendingInvitationUserIds.indexOf(id) >= 0;\r\n}\r\n","import { connect } from 'react-redux';\r\nimport { bindActionCreators, Dispatch } from 'redux';\r\n\r\nimport UserModalSuccess from './UserModalSuccess';\r\nimport { Store } from '../../store/storeTypes';\r\nimport { closeModalUser } from '../../actions/userUiActions';\r\nimport { inviteUser } from '../../actions/userApiActions';\r\nimport { isInvitationPending } from '../../selectors/apiSelectors';\r\n\r\nconst mapStateToProps = (state: Store) => ({\r\n lastSavedUserId: state.ui.userModal.lastSavedUserId,\r\n isPendingInvitation: isInvitationPending(state, state.ui.userModal.lastSavedUserId),\r\n isInvitationSent: state.ui.userModal.isInvitationSent,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch: Dispatch) =>\r\n bindActionCreators(\r\n {\r\n closeModalUser,\r\n inviteUser,\r\n },\r\n dispatch\r\n );\r\n\r\nexport type UserModalSuccessProps = ReturnType &\r\n ReturnType;\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(UserModalSuccess);\r\n","import React from 'react';\r\nimport styled from 'styled-components/macro';\r\nimport MuiPaper from '@material-ui/core/Paper';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nimport Avatar from '../Avatar/Avatar';\r\nimport UserForm from '../UserForm/UserFormContainer';\r\nimport UserAvatarUpload from '../UserAvatarUpload/UserAvatarUploadContainer';\r\nimport UserModalSuccess from './UserModalSuccessContainer';\r\nimport { UserModalLayoutProps } from './UserModalLayoutContainer';\r\n\r\nconst Paper = styled(MuiPaper)`\r\n display: flex;\r\n align-items: stretch;\r\n justify-content: center;\r\n overflow: hidden;\r\n\r\n .user-avatar {\r\n width: 36%;\r\n background: #2ea1f8;\r\n padding-bottom: 30px;\r\n text-align: center;\r\n\r\n h2 {\r\n font-family: Rubik, sans-serif;\r\n font-weight: normal;\r\n font-size: 24px;\r\n margin: 50px 0 40px;\r\n color: #fff;\r\n }\r\n\r\n @media (max-width: 599px) {\r\n width: 100%;\r\n h2 {\r\n font-size: 22px;\r\n margin: 0;\r\n padding: 14px 11px 15px;\r\n }\r\n }\r\n }\r\n\r\n .user-form {\r\n width: 64%;\r\n margin: 38px 27px 21px 24px;\r\n\r\n &::-webkit-scrollbar-track {\r\n border-left: 1px solid #ddd;\r\n }\r\n\r\n &::-webkit-scrollbar {\r\n width: 12px;\r\n }\r\n\r\n &::-webkit-scrollbar-thumb {\r\n background: #109cf1;\r\n border-radius: 0 10px 10px 0;\r\n }\r\n\r\n @media (max-width: 599px) {\r\n margin: 0;\r\n padding: 15px;\r\n width: 100%;\r\n &::-webkit-scrollbar {\r\n width: 7px;\r\n }\r\n &::-webkit-scrollbar-thumb {\r\n border-radius: 0;\r\n }\r\n }\r\n }\r\n\r\n @media (max-width: 599px) {\r\n border-radius: 0;\r\n box-shadow: none;\r\n display: block;\r\n overflow-y: scroll;\r\n }\r\n`;\r\n\r\nconst CreateUserModal = React.memo((props: UserModalLayoutProps) => {\r\n const { t } = useTranslation();\r\n const { done, closeModalUser, modalUserIsNew, avatarBase64, avatarUrl } = props;\r\n\r\n return (\r\n \r\n {done && }\r\n\r\n {!done && (\r\n <>\r\n
\r\n

{modalUserIsNew ? t('userModal.createNewUser') : t('userModal.updateUser')}

\r\n\r\n \r\n \r\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 CreateUserModal;\r\n","import { connect } from 'react-redux';\r\nimport { bindActionCreators, Dispatch } from 'redux';\r\n\r\nimport UserModalLayout from './UserModalLayout';\r\nimport { Store, MODAL_STATUS } from 'store/storeTypes';\r\nimport { closeModalUser } from 'actions/userUiActions';\r\n\r\nconst mapStateToProps = (state: Store) => ({\r\n modalUserIsNew: !state.ui.userForm.id,\r\n done: state.ui.userModal.status === MODAL_STATUS.DONE,\r\n avatarBase64: state.ui.userForm.avatarBase64,\r\n avatarUrl: state.ui.userForm.avatarUrl,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch: Dispatch) =>\r\n bindActionCreators(\r\n {\r\n closeModalUser,\r\n },\r\n dispatch\r\n );\r\n\r\nexport type UserModalLayoutProps = ReturnType &\r\n ReturnType;\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(UserModalLayout);\r\n","import React from 'react';\r\nimport styled from 'styled-components/macro';\r\n\r\nimport MuiModal from '../_common/Modal';\r\nimport UserModalLayout from './UserModalLayoutContainer';\r\nimport { UserModalProps } from './UserModalContainer';\r\n\r\nconst Modal = styled(MuiModal)`\r\n @media (max-width: 599px) {\r\n .dialog-paper > button svg {\r\n /* close modal button */\r\n color: #fff;\r\n }\r\n }\r\n`;\r\n\r\nconst CreateUserModal = React.memo((props: UserModalProps) => {\r\n const { closeModalUser, isOpen } = props;\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n});\r\n\r\nexport default CreateUserModal;\r\n","import { connect } from 'react-redux';\r\nimport { bindActionCreators, Dispatch } from 'redux';\r\n\r\nimport UserModal from './UserModal';\r\nimport { Store, MODAL_STATUS } from '../../store/storeTypes';\r\nimport { closeModalUser } from '../../actions/userUiActions';\r\n\r\nconst mapStateToProps = (state: Store) => ({\r\n isOpen: state.ui.userModal.status !== MODAL_STATUS.CLOSED,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch: Dispatch) =>\r\n bindActionCreators(\r\n {\r\n closeModalUser,\r\n },\r\n dispatch\r\n );\r\n\r\nexport type UserModalProps = ReturnType &\r\n ReturnType;\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(UserModal);\r\n","import styled from 'styled-components/macro';\r\nimport Button from './Button';\r\n\r\nconst ButtonHeader = styled(Button)`\r\n font-family: Rubik, sans-serif;\r\n font-weight: 500;\r\n font-size: 12px;\r\n color: #fff;\r\n background: #109cf1;\r\n border: none;\r\n height: 30px;\r\n line-height: 30px;\r\n padding: 0;\r\n\r\n svg {\r\n margin-right: 6px;\r\n font-size: 32px;\r\n height: 30px;\r\n }\r\n\r\n &:hover {\r\n background: #109cf1;\r\n }\r\n\r\n @media (max-width: 440px) {\r\n width: 110px;\r\n svg {\r\n font-size: 20px;\r\n }\r\n }\r\n`;\r\n\r\nexport default ButtonHeader;\r\n","import styled from 'styled-components/macro';\r\n\r\nconst Header1 = styled.h1`\r\n font-family: Rubik, sans-serif;\r\n font-weight: normal;\r\n font-size: 22px;\r\n color: #354052;\r\n display: flex;\r\n align-items: center;\r\n\r\n @media (max-width: 440px) {\r\n margin: 10px 0;\r\n }\r\n`;\r\n\r\nexport default Header1;\r\n","import React from 'react';\r\nimport styled from 'styled-components/macro';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nimport MuiSearchIcon from '@material-ui/icons/Search';\r\nimport MuiInputBase from '@material-ui/core/InputBase';\r\nimport MuiPaper from '@material-ui/core/Paper';\r\n\r\nconst Paper = styled(MuiPaper)`\r\n display: flex;\r\n align-items: center;\r\n box-sizing: border-box;\r\n padding: 2px 11px 0 21px;\r\n margin-right: 4px;\r\n background: #ffffff;\r\n box-shadow: 0px 1px 6px rgba(0, 0, 0, 0.195121);\r\n border: 1px solid #c5d0de;\r\n border-radius: 4px;\r\n max-height: 30px;\r\n width: 222px;\r\n`;\r\n\r\nconst InputBase = styled(MuiInputBase)`\r\n flex-grow: 1;\r\n input {\r\n font-family: Rubik, sans-serif;\r\n font-size: 12px;\r\n\r\n &::placeholder {\r\n color: #7f8fa4;\r\n }\r\n }\r\n`;\r\n\r\nconst SearchIcon = styled(MuiSearchIcon)`\r\n color: #7f8fa4;\r\n width: 18px;\r\n height: 18px;\r\n`;\r\n\r\ninterface SearchBarProps {\r\n onChange: (newValue: string) => void;\r\n className?: string;\r\n}\r\n\r\nfunction SearchBar(props: SearchBarProps) {\r\n const { t } = useTranslation();\r\n const { onChange, ...rest } = props;\r\n\r\n const handleChange = (e: React.SyntheticEvent) => {\r\n onChange((e.target as HTMLInputElement).value);\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default SearchBar;\r\n","var _path, _path2;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgDownload(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 16,\n height: 16,\n viewBox: \"0 0 16 16\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8 12C8.3 12 8.5 11.9 8.7 11.7L14.4 6L13 4.6L9 8.6V0H7V8.6L3 4.6L1.6 6L7.3 11.7C7.5 11.9 7.7 12 8 12Z\",\n fill: \"#2EA1F8\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M14 14H2V11H0V15C0 15.6 0.4 16 1 16H15C15.6 16 16 15.6 16 15V11H14V14Z\",\n fill: \"#2EA1F8\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgDownload);\nexport default __webpack_public_path__ + \"static/media/download.e5fe275c.svg\";\nexport { ForwardRef as ReactComponent };","import React, { useEffect } from 'react';\r\nimport styled from 'styled-components/macro';\r\nimport { useTranslation } from 'react-i18next';\r\nimport AddIcon from '@material-ui/icons/Add';\r\n\r\nimport PageContainer from '../_common/PageContainer';\r\nimport { PageHeaderUIContainer, PageHeaderUISpacer } from '../_common/PageHeaderUi';\r\nimport UsersTable from '../UsersTable/UsersTableContainer';\r\nimport UserModal from '../UserModal/UserModalContainer';\r\nimport ButtonHeader from '../_common/ButtonHeader';\r\nimport Header1 from '../_common/Header1';\r\nimport SearchBarGeneric from '../_common/SearchBar';\r\nimport { AccountManagementProps } from './AccountManagementContainer';\r\nimport config from 'config/config';\r\nimport ReCAPTCHA from 'react-google-recaptcha';\r\nconst SearchBar = styled(SearchBarGeneric)`\r\n margin-left: 20px;\r\n @media (max-width: 500px) {\r\n display: none;\r\n }\r\n`;\r\n\r\nconst RecaptchaWrapper = styled.div`\r\n display: flex;\r\n height: 100%;\r\n justify-content: center;\r\n align-items: center;\r\n`;\r\n\r\nconst AccountManagement = React.memo((props: AccountManagementProps) => {\r\n const { t } = useTranslation();\r\n const {\r\n isLoadingEntities,\r\n isCaptchaOpen,\r\n userIdForCaptcha,\r\n openModalUserCreate,\r\n changeUserSearchValue,\r\n getUsers,\r\n getScopeData,\r\n setCaptchaIsOpen,\r\n resetUserPassword,\r\n } = props;\r\n useEffect(() => {\r\n getUsers();\r\n getScopeData();\r\n }, [getUsers, getScopeData]);\r\n\r\n const onCaptchaChange = value => {\r\n //*this event fires only if captcha completed succesfull\r\n resetUserPassword(userIdForCaptcha, true, value);\r\n setCaptchaIsOpen({ isOpen: false, userId: '' });\r\n };\r\n\r\n return (\r\n \r\n {isCaptchaOpen ? (\r\n \r\n ,\r\n \r\n ) : (\r\n <>\r\n \r\n \r\n {t('accountManagement.header')}\r\n \r\n \r\n {!isLoadingEntities && (\r\n \r\n {t('accountManagement.addUser')}\r\n \r\n )}\r\n \r\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 AccountManagement;\r\n","import { connect } from 'react-redux';\r\nimport { bindActionCreators, Dispatch } from 'redux';\r\n\r\nimport AccountManagement from './AccountManagement';\r\nimport {\r\n openModalUserCreate,\r\n changeUserSearchValue,\r\n setCaptchaIsOpen,\r\n} from 'actions/userUiActions';\r\nimport { Store } from 'store/storeTypes';\r\nimport { getScopeData } from 'actions/scopeApiActions';\r\nimport { getUsers, resetUserPassword } from 'actions/userApiActions';\r\nimport { isCatpchaOpenSelector, userIdForCaptchaSelector } from 'reducers/ui/captchaReducer';\r\n\r\nconst mapStateToProps = (state: Store) => {\r\n const { isLoadingCustomers, isLoadingSites, isLoadingSystems } = state.api;\r\n\r\n return {\r\n isLoadingEntities: isLoadingCustomers || isLoadingSites || isLoadingSystems,\r\n isCaptchaOpen: isCatpchaOpenSelector(state),\r\n userIdForCaptcha: userIdForCaptchaSelector(state),\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch: Dispatch) =>\r\n bindActionCreators(\r\n {\r\n openModalUserCreate,\r\n changeUserSearchValue,\r\n getUsers,\r\n getScopeData,\r\n setCaptchaIsOpen,\r\n resetUserPassword,\r\n },\r\n dispatch\r\n );\r\n\r\nexport type AccountManagementProps = ReturnType &\r\n ReturnType;\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(AccountManagement);\r\n","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgWarning(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 16,\n height: 16,\n viewBox: \"0 0 16 16\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M14.551 13.4045L8.21697 1.5295C7.84097 0.8235 6.82897 0.8235 6.45197 1.5295L0.118968 13.4045C-0.236032 14.0705 0.246968 14.8755 1.00197 14.8755H13.669C14.423 14.8755 14.906 14.0705 14.551 13.4045ZM7.33497 12.8755C6.78297 12.8755 6.33497 12.4275 6.33497 11.8755C6.33497 11.3235 6.78297 10.8755 7.33497 10.8755C7.88697 10.8755 8.33497 11.3235 8.33497 11.8755C8.33497 12.4275 7.88697 12.8755 7.33497 12.8755ZM8.33497 9.8755H6.33497V5.8755H8.33497V9.8755Z\",\n fill: \"#FF4081\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgWarning);\nexport default __webpack_public_path__ + \"static/media/warning.c09cb0b7.svg\";\nexport { ForwardRef as ReactComponent };","var _circle, _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgSuccess(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 16,\n height: 16,\n viewBox: \"0 0 16 16\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 8,\n cy: 8,\n r: 8,\n fill: \"#1BB934\"\n })), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M4.40004 6.79999L3.20004 7.99999L6.80004 11.6L13.2 5.59999L12 4.39999L6.80004 9.19999L4.40004 6.79999Z\",\n fill: \"white\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgSuccess);\nexport default __webpack_public_path__ + \"static/media/success.64b5904d.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2, _path3, _path4, _path5, _path6, _path7, _path8;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgLoader(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 16,\n height: 16,\n viewBox: \"0 0 16 16\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M9 0H7V4H9V0Z\",\n fill: \"#FFAB2B\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n opacity: 0.9,\n d: \"M12.9497 1.63565L10.1213 4.46405L11.5355 5.87825L14.3639 3.04985L12.9497 1.63565Z\",\n fill: \"#FFAB2B\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n opacity: 0.8,\n d: \"M16 7H12V9H16V7Z\",\n fill: \"#FFAB2B\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n opacity: 0.7,\n d: \"M11.5359 10.1214L10.1217 11.5356L12.9501 14.364L14.3643 12.9498L11.5359 10.1214Z\",\n fill: \"#FFAB2B\"\n })), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n opacity: 0.6,\n d: \"M9 12H7V16H9V12Z\",\n fill: \"#FFAB2B\"\n })), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n opacity: 0.5,\n d: \"M4.465 10.121L1.6366 12.9494L3.0508 14.3636L5.8792 11.5352L4.465 10.121Z\",\n fill: \"#FFAB2B\"\n })), _path7 || (_path7 = /*#__PURE__*/React.createElement(\"path\", {\n opacity: 0.4,\n d: \"M4 7H0V9H4V7Z\",\n fill: \"#FFAB2B\"\n })), _path8 || (_path8 = /*#__PURE__*/React.createElement(\"path\", {\n opacity: 0.3,\n d: \"M3.05043 1.6367L1.63623 3.0509L4.46463 5.8793L5.87883 4.4651L3.05043 1.6367Z\",\n fill: \"#FFAB2B\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgLoader);\nexport default __webpack_public_path__ + \"static/media/loader.3813913a.svg\";\nexport { ForwardRef as ReactComponent };","import React, { useEffect } from 'react';\r\nimport styled from 'styled-components/macro';\r\nimport AddIcon from '@material-ui/icons/Add';\r\nimport DeleteIcon from '@material-ui/icons/Delete';\r\nimport { Button } from '@material-ui/core';\r\nimport { ApiManagementProps } from './ApiManagementContainer';\r\nimport TableSortLabel from '@material-ui/core/TableSortLabel';\r\nimport { ReactComponent as Download } from '../../assets/icons/download.svg';\r\nimport { ReactComponent as Warning } from '../../assets/icons/warning.svg';\r\nimport { ReactComponent as Success } from '../../assets/icons/success.svg';\r\nimport { ReactComponent as Loader } from '../../assets/icons/loader.svg';\r\nimport { openLinkInNewTab } from 'helpers/navigation';\r\nimport { API_PDF } from 'contracts/constants';\r\n\r\nconst StyledButton = styled(Button)`\r\n color: #ffffff;\r\n`;\r\n\r\nconst Container = styled.div`\r\n width: 100%;\r\n height: 100%;\r\n display: grid;\r\n grid-template-rows: 60px 1fr;\r\n background-color: #eff3f6;\r\n`;\r\n\r\nconst Header = styled.div`\r\n width: 100%;\r\n display: grid;\r\n grid-template-columns: 230px 180px 180px 1fr;\r\n border-bottom: 1px solid #c5d0de;\r\n background-color: #ffffff;\r\n justify-items: center;\r\n align-items: center;\r\n`;\r\n\r\nconst HeaderTitle = styled.div`\r\n width: 100%;\r\n border-right: 1px solid #c5d0de;\r\n font-family: Rubik;\r\n font-style: normal;\r\n font-weight: 300;\r\n font-size: 24px;\r\n line-height: 36px;\r\n color: #354052;\r\n text-align: center;\r\n`;\r\n\r\nconst Card = styled.div`\r\n width: 100%;\r\n height: 100%;\r\n background: #ffffff;\r\n border: 1px solid #c5d0de;\r\n box-sizing: border-box;\r\n box-shadow: 0px 0px 3px rgba(0, 0, 0, 0.03);\r\n border-radius: 4px;\r\n display: grid;\r\n grid-template-rows: repeat(auto-fill, 60px);\r\n padding: 0 20px 0 20px;\r\n`;\r\n\r\nconst Table = styled.div`\r\n height: 100%;\r\n overflow-y: auto;\r\n ::-webkit-scrollbar {\r\n width: 8px;\r\n }\r\n ::-webkit-scrollbar-thumb {\r\n background: #7f8fa4;\r\n border-radius: 10px;\r\n }\r\n`;\r\n\r\nconst TableHeader = styled.div`\r\n display: grid;\r\n grid-template-columns: 3fr 4fr 2fr 2fr 4fr;\r\n align-items: center;\r\n border-bottom: 1px solid #c5d0de;\r\n padding-left: 25px;\r\n`;\r\n\r\nconst TableHeaderTitle = styled.div`\r\n font-weight: 500;\r\n color: #354052;\r\n font-size: 14px;\r\n`;\r\n\r\nconst TableRow = styled.div`\r\n display: grid;\r\n grid-template-columns: 3fr 4fr 2fr 2fr 4fr;\r\n align-items: center;\r\n border-bottom: 1px solid #c5d0de;\r\n padding-left: 25px;\r\n height: 100%;\r\n`;\r\n\r\nconst TableCell = styled.div`\r\n width: 100%;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n padding-right: 25px;\r\n`;\r\n\r\nconst ActionsCell = styled.div`\r\n max-width: 400px;\r\n display: grid;\r\n grid-template-columns: 30px auto auto;\r\n`;\r\n\r\nconst StatusCell = styled.div`\r\n display: grid;\r\n grid-template-columns: 30px auto;\r\n`;\r\n\r\nconst AnimatedLoader = styled(Loader)`\r\n animation: rotation 2s infinite linear;\r\n\r\n @keyframes rotation {\r\n from {\r\n transform: rotate(0deg);\r\n }\r\n to {\r\n transform: rotate(359deg);\r\n }\r\n }\r\n`;\r\n\r\nconst ClickableText = styled.div`\r\n color: #2ea1f8;\r\n cursor: pointer;\r\n`;\r\n\r\nconst AccountManagement = (props: ApiManagementProps) => {\r\n const {\r\n certificate,\r\n isLoading,\r\n getCertificateDetailsRequest,\r\n createCertificateRequest,\r\n deleteCertificateRequest,\r\n getCertificateFileRequest,\r\n refreshCertificateRequest,\r\n } = props;\r\n const isExpired = () => {\r\n const now = new Date();\r\n return !!certificate && certificate.expirationDate < now;\r\n };\r\n\r\n const generate = () => {\r\n if (!!certificate && isExpired) {\r\n refreshCertificateRequest();\r\n } else if (!certificate) {\r\n createCertificateRequest();\r\n }\r\n };\r\n useEffect(() => {\r\n getCertificateDetailsRequest();\r\n }, []); // eslint-disable-line react-hooks/exhaustive-deps\r\n return (\r\n \r\n
\r\n API Management\r\n }\r\n color=\"primary\"\r\n variant=\"contained\">\r\n Generate\r\n \r\n deleteCertificateRequest()}\r\n disabled={isLoading || !certificate}\r\n startIcon={}\r\n color=\"secondary\"\r\n variant=\"contained\">\r\n Delete\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n Name\r\n \r\n \r\n Thumbprint\r\n Status\r\n Expiration Date\r\n Actions\r\n \r\n \r\n {!!certificate && (\r\n \r\n {certificate.email}\r\n {certificate.thumbprint}\r\n {!isLoading && !isExpired() && (\r\n \r\n \r\n Approved\r\n \r\n )}\r\n {!isLoading && isExpired() && (\r\n \r\n \r\n Expired\r\n \r\n )}\r\n {isLoading && (\r\n \r\n \r\n Waiting\r\n \r\n )}\r\n {certificate.expirationDate.toLocaleString()}\r\n {!isExpired() && !isLoading && (\r\n \r\n \r\n getCertificateFileRequest()}>\r\n Download certificate\r\n \r\n openLinkInNewTab(API_PDF)}>\r\n API documentation\r\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 AccountManagement;\r\n","import { connect } from 'react-redux';\r\nimport { bindActionCreators, Dispatch } from 'redux';\r\nimport { Store } from 'store/storeTypes';\r\nimport {\r\n createCertificateRequest,\r\n getCertificateDetailsRequest,\r\n deleteCertificateRequest,\r\n getCertificateFileRequest,\r\n refreshCertificateRequest,\r\n} from '../../actions/apiManagementActions';\r\n\r\nimport ApiManagement from './ApiManagement';\r\n\r\nconst mapStateToProps = (state: Store) => {\r\n return {\r\n certificate: state.apiManagement.certificate,\r\n isLoading: state.apiManagement.isLoading,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch: Dispatch) =>\r\n bindActionCreators(\r\n {\r\n createCertificateRequest,\r\n getCertificateDetailsRequest,\r\n deleteCertificateRequest,\r\n getCertificateFileRequest,\r\n refreshCertificateRequest,\r\n },\r\n dispatch\r\n );\r\n\r\nexport type ApiManagementProps = ReturnType &\r\n ReturnType;\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(ApiManagement);\r\n","import React from 'react';\r\nimport styled from 'styled-components/macro';\r\nimport { useTranslation } from 'react-i18next';\r\nimport Grid from '@material-ui/core/Grid';\r\n\r\nimport { GoalType } from '../../models/GoalsData';\r\nimport { StyledComponentWithAnyType } from 'store/storeTypes';\r\n\r\nconst DaysBar = styled.div`\r\n width: 29px;\r\n height: 8px;\r\n background: #c5d0de;\r\n border-radius: 1px;\r\n &.passed {\r\n background: #8963ff;\r\n }\r\n @media (max-width: 360px) {\r\n width: 24px;\r\n }\r\n`;\r\n\r\nconst MonthsBar = styled(DaysBar as StyledComponentWithAnyType)`\r\n width: 34px;\r\n @media (max-width: 360px) {\r\n width: 30px;\r\n }\r\n`;\r\n\r\nconst DaysContainer = styled(Grid).attrs({\r\n item: true,\r\n})`\r\n &:not(:last-child) {\r\n margin-right: 17px;\r\n }\r\n`;\r\n\r\nconst DaysLetter = styled.div`\r\n font-family: Rubik;\r\n font-size: 12px;\r\n text-align: center;\r\n color: #7f8fa4;\r\n margin-top: 9px;\r\n`;\r\n\r\nconst DaysPassed: StyledComponentWithAnyType = styled(Grid).attrs({\r\n container: true,\r\n wrap: 'nowrap',\r\n})`\r\n margin-top: 30px;\r\n max-width: ${(props: { limit: boolean }) => (props.limit ? '340px' : 'none')};\r\n &.second-line {\r\n margin-top: 15px;\r\n }\r\n`;\r\n\r\ninterface GoalCalenderProps {\r\n goalId: GoalType;\r\n passedDateIndicator: number[];\r\n}\r\n\r\nfunction GoalCalenderIndicator(props: GoalCalenderProps) {\r\n const { t } = useTranslation();\r\n const { goalId, passedDateIndicator } = props;\r\n\r\n const calenderLetters =\r\n goalId === GoalType.Weekly\r\n ? (t('goals.weekdayLetters') as string[])\r\n : (t('goals.months') as string[]);\r\n\r\n if (goalId === GoalType.Weekly) {\r\n return (\r\n \r\n {calenderLetters.map((letter, i) => (\r\n \r\n \r\n {letter}\r\n \r\n ))}\r\n \r\n );\r\n }\r\n\r\n return (\r\n <>\r\n \r\n {calenderLetters\r\n .filter((v, i) => i < 6)\r\n .map((letter, i) => (\r\n \r\n \r\n {letter}\r\n \r\n ))}\r\n \r\n \r\n {calenderLetters\r\n .filter((v, i) => i >= 6)\r\n .map((letter, i) => (\r\n \r\n \r\n {letter}\r\n \r\n ))}\r\n \r\n \r\n );\r\n}\r\n\r\nexport default GoalCalenderIndicator;\r\n","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgSearch(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 16,\n height: 17,\n viewBox: \"0 0 16 17\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12.7 11.3C13.6 10.1 14.1 8.7 14.1 7.1C14.1 3.2 11 0 7.1 0C3.2 0 0 3.2 0 7.1C0 11 3.2 14.2 7.1 14.2C8.7 14.2 10.2 13.7 11.3 12.8L14.3 15.8C14.5 16 14.8 16.1 15 16.1C15.2 16.1 15.5 16 15.7 15.8C16.1 15.4 16.1 14.8 15.7 14.4L12.7 11.3ZM7.1 12.1C4.3 12.1 2 9.9 2 7.1C2 4.3 4.3 2 7.1 2C9.9 2 12.2 4.3 12.2 7.1C12.2 9.9 9.9 12.1 7.1 12.1Z\",\n fill: \"#7F8FA4\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgSearch);\nexport default __webpack_public_path__ + \"static/media/Search.139d495c.svg\";\nexport { ForwardRef as ReactComponent };","import React, { useCallback } from 'react';\r\nimport styled from 'styled-components/macro';\r\nimport { useForm, useField } from 'react-final-form-hooks';\r\nimport { useTranslation } from 'react-i18next';\r\nimport Grid from '@material-ui/core/Grid';\r\nimport Fab from '@material-ui/core/Fab';\r\nimport MuiPaper from '@material-ui/core/Paper';\r\nimport MuiTextField from '../_common/TextField';\r\nimport GoalCalenderIndicator from './GoalCalenderIndicator';\r\nimport { GoalItemProps } from './GoalItemContainer';\r\nimport { requiredPositiveInteger } from 'helpers/validationRules';\r\nimport { determineUnitToShow } from 'helpers/conversions';\r\nimport { StyledComponentWithAnyType } from 'store/storeTypes';\r\n\r\nconst Goal = styled(MuiPaper)`\r\n border: 1px solid #e6eaee;\r\n box-shadow: 0px 0px 3px rgba(0, 0, 0, 0.03);\r\n border-radius: 4px;\r\n width: 100%;\r\n display: flex;\r\n flex-direction: column;\r\n margin-bottom: 15px;\r\n @media (max-width: 380px) {\r\n border-radius: 0;\r\n }\r\n`;\r\n\r\nconst GoalHeader: StyledComponentWithAnyType = styled(Grid).attrs({\r\n item: true,\r\n})`\r\n border-bottom: 1px solid #e6e8f1;\r\n\r\n h3 {\r\n color: #354052;\r\n font-family: Rubik, serif;\r\n font-weight: 500;\r\n font-size: 18px;\r\n margin: 25px 20px 16.5px;\r\n }\r\n`;\r\n\r\nconst GoalBody: StyledComponentWithAnyType = styled(Grid).attrs({\r\n item: true,\r\n container: true,\r\n})`\r\n padding: 20px;\r\n overflow: auto;\r\n`;\r\n\r\nconst GoalMain: StyledComponentWithAnyType = styled(Grid).attrs({\r\n item: true,\r\n container: true,\r\n xs: 12,\r\n md: 6,\r\n})`\r\n border-bottom: 1px solid #c5d0de;\r\n border-right: 0;\r\n margin-bottom: 20px;\r\n flex-direction: column;\r\n padding: 0 0 20px 0;\r\n @media (min-width: 960px) {\r\n padding: 20px;\r\n flex-wrap: nowrap;\r\n margin-bottom: 0;\r\n border-bottom: 0;\r\n border-right: 1px solid #c5d0de;\r\n }\r\n`;\r\n\r\nconst Impressions: StyledComponentWithAnyType = styled(Grid).attrs({\r\n item: true,\r\n container: true,\r\n xs: 12,\r\n md: 6,\r\n})`\r\n justify-content: flex-start;\r\n @media (min-width: 960px) {\r\n justify-content: center;\r\n }\r\n`;\r\n\r\nconst GoalName: StyledComponentWithAnyType = styled.h3`\r\n font-family: Rubik, serif;\r\n font-weight: normal;\r\n font-size: 18px;\r\n color: #354052;\r\n margin: 0;\r\n`;\r\n\r\nconst GoalInfoWrapper: StyledComponentWithAnyType = styled(Grid).attrs({\r\n item: true,\r\n container: true,\r\n})`\r\n justify-content: space-between;\r\n`;\r\n\r\nconst GoalValue: StyledComponentWithAnyType = styled.div`\r\n margin: 0;\r\n color: #208cd7;\r\n h1 {\r\n font-family: Rubik, serif;\r\n display: inline;\r\n font-weight: normal;\r\n font-size: 45px;\r\n margin: 0;\r\n }\r\n span {\r\n font-size: 24px;\r\n }\r\n`;\r\n\r\nconst CurrentValue = styled(GoalValue)`\r\n color: #354052;\r\n`;\r\n\r\nconst FormWrapper = styled.div`\r\n display: flex;\r\n`;\r\n\r\nconst TextField = styled(MuiTextField)`\r\n input {\r\n font-family: Rubik, serif;\r\n font-size: 12px;\r\n padding: 10.5px;\r\n width: 212px;\r\n &::-webkit-inner-spin-button {\r\n display: none;\r\n }\r\n -moz-appearance: textfield;\r\n @media (max-width: 360px) {\r\n width: inherit;\r\n }\r\n }\r\n`;\r\n\r\nconst FormButton = styled(Fab)`\r\n margin-left: 15px;\r\n color: white;\r\n width: 75px;\r\n height: 35px;\r\n border-radius: 4px;\r\n background: #2ea1f8;\r\n @media (max-width: 410px) {\r\n margin-left: 10px;\r\n }\r\n`;\r\n\r\nconst FormattedDate = styled.h4`\r\n margin: 13px 0 0;\r\n font-family: Rubik, serif;\r\n font-weight: normal;\r\n font-size: 12px;\r\n color: #354052;\r\n text-align: left;\r\n`;\r\n\r\nconst GoalItem = (props: GoalItemProps) => {\r\n const { t } = useTranslation();\r\n const {\r\n goalTypeStr,\r\n goalCurrentVal,\r\n goalImpVal,\r\n lastUpdateNote,\r\n goalEntry,\r\n passedDateIndicator,\r\n userSettings,\r\n selectedSystemGroup,\r\n updateGoal,\r\n } = props;\r\n\r\n const validate = useCallback(\r\n values => ({\r\n goals: requiredPositiveInteger(values.goals),\r\n }),\r\n []\r\n );\r\n\r\n const onSubmit = useCallback(\r\n values => {\r\n updateGoal(goalEntry.goalType, values.goals, selectedSystemGroup);\r\n values.goals = '';\r\n },\r\n [updateGoal, goalEntry, selectedSystemGroup]\r\n );\r\n\r\n const { form, handleSubmit } = useForm({\r\n onSubmit,\r\n validate,\r\n });\r\n\r\n const goalsInput = useField('goals', form);\r\n\r\n return (\r\n \r\n \r\n

{t(goalTypeStr)}

\r\n
\r\n\r\n \r\n \r\n {t('goals.myGoal')}\r\n \r\n \r\n

{goalCurrentVal}

\r\n {determineUnitToShow(selectedSystemGroup, userSettings, t)}\r\n
\r\n \r\n
\r\n \r\n \r\n\r\n \r\n {t('goals.set')}\r\n \r\n \r\n {lastUpdateNote}\r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n
\r\n {t('goals.currentImpressions')}\r\n\r\n \r\n

{goalImpVal}

\r\n {determineUnitToShow(selectedSystemGroup, userSettings, t)}\r\n
\r\n\r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default GoalItem;\r\n","import { connect } from 'react-redux';\r\nimport { bindActionCreators, Dispatch } from 'redux';\r\n\r\nimport { updateGoal } from 'actions/goalApiActions';\r\nimport GoalItem from './GoalItem';\r\nimport { Store } from 'store/storeTypes';\r\nimport {\r\n getGoalEntryByIdSelector,\r\n convertGoalTypeSelector,\r\n formatGoalCurrentValueSelector,\r\n formatGoalImpressionsValueSelector,\r\n goalLastUpdateNoteSelector,\r\n goalDateIndicatorSelector,\r\n} from 'selectors/entitiesSelectors';\r\n\r\nconst mapStateToProps = (state: Store, props: Record) => ({\r\n goalEntry: getGoalEntryByIdSelector(state, props),\r\n goalTypeStr: convertGoalTypeSelector(state, props),\r\n goalCurrentVal: formatGoalCurrentValueSelector(state, props),\r\n goalImpVal: formatGoalImpressionsValueSelector(state, props),\r\n lastUpdateNote: goalLastUpdateNoteSelector(state, props),\r\n passedDateIndicator: goalDateIndicatorSelector(state, props),\r\n userSettings: state.userSettings.data,\r\n selectedSystemGroup: state.ui.selectedSystemGroup,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch: Dispatch) =>\r\n bindActionCreators(\r\n {\r\n updateGoal,\r\n },\r\n dispatch\r\n );\r\n\r\nexport type GoalItemProps = ReturnType &\r\n ReturnType;\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(GoalItem);\r\n","import React, { useEffect } from 'react';\r\nimport styled from 'styled-components/macro';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nimport { CircularProgress } from '@material-ui/core';\r\nimport PageContainer from '../_common/PageContainer';\r\nimport { PageHeaderUIContainer } from '../_common/PageHeaderUi';\r\nimport GoalItemContainer from './GoalItemContainer';\r\nimport LinearProgress from '../_common/LinearProgress';\r\nimport { GoalsData } from 'models/GoalsData';\r\nimport { GoalsProps } from './GoalsContainer';\r\n\r\nconst Icon = styled.img.attrs({\r\n src: '/img/goalsImg.png',\r\n})`\r\n margin: 0 16px 3px 0;\r\n @media (max-width: 360px) {\r\n display: none;\r\n }\r\n`;\r\n\r\nconst Circular = styled(CircularProgress)`\r\n size: 128px;\r\n color: #2ea1f8;\r\n position: absolute;\r\n top: 40%;\r\n left: 50%;\r\n`;\r\n\r\nconst TitleWrapper = styled.div`\r\n display: flex;\r\n align-items: center;\r\n\r\n @media (max-width: 440px) {\r\n margin: 10px 0;\r\n }\r\n`;\r\n\r\nconst Title = styled.h1`\r\n font-family: Rubik, sans-serif;\r\n font-weight: normal;\r\n font-size: 22px;\r\n color: #354052;\r\n`;\r\n\r\nconst Goals = React.memo((props: GoalsProps) => {\r\n const { t } = useTranslation();\r\n const {\r\n goalsEntries,\r\n isLoadingGoals,\r\n isSavingGoals,\r\n getGoalsData,\r\n selectedSystemGroup,\r\n userSettings,\r\n } = props;\r\n useEffect(() => {\r\n getGoalsData();\r\n }, [getGoalsData, selectedSystemGroup, userSettings]);\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n {!isLoadingGoals &&\r\n goalsEntries.map((entry: GoalsData) => (\r\n \r\n ))}\r\n\r\n {isLoadingGoals && }\r\n\r\n {isSavingGoals && }\r\n \r\n );\r\n});\r\n\r\nexport default Goals;\r\n","import { connect } from 'react-redux';\r\nimport { bindActionCreators, Dispatch } from 'redux';\r\n\r\nimport { goalsArraySelector } from 'selectors/entitiesSelectors';\r\nimport { Store } from 'store/storeTypes';\r\nimport { getGoalsData } from 'actions/goalApiActions';\r\nimport Goals from './Goals';\r\n\r\nconst mapStateToProps = (state: Store) => ({\r\n goalsEntries: goalsArraySelector(state),\r\n isLoadingGoals: state.api.isLoadingGoals,\r\n isSavingGoals: state.api.isSavingGoals,\r\n selectedSystemGroup: state.ui.selectedSystemGroup,\r\n userSettings: state.userSettings,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch: Dispatch) =>\r\n bindActionCreators(\r\n {\r\n getGoalsData,\r\n },\r\n dispatch\r\n );\r\n\r\nexport type GoalsProps = ReturnType & ReturnType;\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(Goals);\r\n","import { UserSystemGroupStrings } from './../store/storeTypes';\r\nimport { ReportFilterData } from 'store/storeTypes';\r\n\r\nexport const isNeverReported = (\r\n filterData: ReportFilterData,\r\n isSelectedSystemsEverReported: boolean,\r\n selectedSystemGroup: UserSystemGroupStrings,\r\n isEverReportedLoaded: boolean\r\n) => {\r\n //*till this endpoing : \"reported-printers-status\" gives back resposnse we can not say that we have empty state\r\n if (!isEverReportedLoaded) {\r\n return false;\r\n }\r\n //*if start and end dates are null it means empty state\r\n const { startDate, endDate } = filterData;\r\n if (!startDate || !endDate) {\r\n return true;\r\n }\r\n // //*if startDate and endDate === new Date(0) and === each other(only in this case) it means that whole selectedSystem group with all systems not connected - we have empty state\r\n const isWholeSelectedSystemGroupHasEmptyState =\r\n startDate.getTime() === endDate.getTime() && endDate.getTime() === new Date(0).getTime();\r\n // start date === end date\r\n if (isWholeSelectedSystemGroupHasEmptyState) {\r\n return true;\r\n }\r\n //each system in filterData has isEverReported - false\r\n if (!filterData.systems.some(system => system.isEverReported)) {\r\n return true;\r\n }\r\n // //*if user did some system filter selection and if there is no selected serialids in filterState - that means that we have empty state.\r\n else if (isSelectedSystemsEverReported === false) {\r\n return true;\r\n }\r\n //*in other cases return false - it means there is no empty state\r\n else {\r\n return false;\r\n }\r\n};\r\n","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgCheckedIcon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 9,\n height: 8,\n viewBox: \"0 0 9 8\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M3.79322 8.00057C3.52922 8.00057 3.27422 7.89657 3.08622 7.70757L1.08622 5.70757C0.695219 5.31657 0.695219 4.68457 1.08622 4.29357C1.47722 3.90257 2.10922 3.90257 2.50022 4.29357L3.63822 5.43157L6.96122 0.445572C7.26722 -0.0144275 7.88722 -0.138428 8.34822 0.168572C8.80722 0.475572 8.93122 1.09557 8.62522 1.55557L4.62522 7.55557C4.45922 7.80457 4.18922 7.96657 3.89222 7.99557C3.85822 7.99857 3.82622 8.00057 3.79322 8.00057Z\",\n fill: \"white\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgCheckedIcon);\nexport default __webpack_public_path__ + \"static/media/CheckedIcon.8b24975d.svg\";\nexport { ForwardRef as ReactComponent };","import React from 'react';\r\nimport { ReactComponent as SearchIcon } from '../../assets/icons/Search.svg';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport InputAdornment from '@material-ui/core/InputAdornment';\r\n\r\nconst FilterSearcher = props => {\r\n const { selectedSystemGroup, filterValue, setFilterValue } = props;\r\n const handleChange = e => {\r\n setFilterValue({ value: e.target.value, selectedSystemGroup });\r\n };\r\n return (\r\n <>\r\n handleChange(event)}\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\nexport default FilterSearcher;\r\n","import { setFilterValue } from 'actions/reportFilterActions';\r\nimport { connect } from 'react-redux';\r\nimport { filterValueBySystemGroupSelector } from 'reducers/reports/filterStateReducer';\r\nimport { systemGroupSelector } from 'reducers/ui/systemGroupUiReducer';\r\nimport { bindActionCreators, Dispatch } from 'redux';\r\nimport { Store } from 'store/storeTypes';\r\nimport FilterSearcher from './FilterSearcher';\r\n\r\nexport interface OwnProps {}\r\n\r\nconst mapStateToProps = (state: Store) => {\r\n return {\r\n selectedSystemGroup: systemGroupSelector(state),\r\n filterValue: filterValueBySystemGroupSelector(state),\r\n };\r\n};\r\nconst mapDispatchToProps = (dispatch: Dispatch) => bindActionCreators({ setFilterValue }, dispatch);\r\n\r\nexport type IOverviewProps = OwnProps &\r\n ReturnType &\r\n ReturnType;\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(FilterSearcher);\r\n","var _rect;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgHalfCheckedIcon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 11,\n height: 2,\n viewBox: \"0 0 11 2\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n x: 0.792969,\n width: 10,\n height: 2,\n fill: \"white\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgHalfCheckedIcon);\nexport default __webpack_public_path__ + \"static/media/HalfCheckedIcon.a5daf52a.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgFilterUnfoldIcon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 12,\n height: 12,\n viewBox: \"0 0 16 16\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M7.4 11.8L2 6.4L3.4 5L7.4 9L11.4 5L12.8 6.4L7.4 11.8Z\",\n fill: \"#7F8FA4\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgFilterUnfoldIcon);\nexport default __webpack_public_path__ + \"static/media/FilterUnfoldIcon.b235d4e7.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgFilterFoldIcon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 12,\n height: 12,\n viewBox: \"0 0 16 16\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M11.4 11.8L7.4 7.8L3.4 11.8L2 10.4L7.4 5L12.8 10.4L11.4 11.8Z\",\n fill: \"#7F8FA4\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgFilterFoldIcon);\nexport default __webpack_public_path__ + \"static/media/FilterFoldIcon.fcb170da.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgPrevDateIcon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 8,\n height: 14,\n viewBox: \"0 0 8 14\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M6.95408 1.09233L1.04639 7.00002L6.95408 12.9077\",\n strokeMiterlimit: 10,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgPrevDateIcon);\nexport default __webpack_public_path__ + \"static/media/prevDateIcon.f3b48c5d.svg\";\nexport { ForwardRef as ReactComponent };","import React from 'react';\r\nimport { RowWrapper, LeftPart, CheckBox, NameWrapper, RightPart, NameSpan } from './SiteRow';\r\nimport { ReactComponent as CheckedIcon } from '../../assets/icons/CheckedIcon.svg';\r\n\r\nimport { Fade } from '@material-ui/core';\r\nimport { StyledTooltip } from 'globalStyle';\r\nimport {\r\n ReportFilterState,\r\n ReportsFilterDataByTypePartial,\r\n UserSystemGroupStrings,\r\n} from 'store/storeTypes';\r\n\r\nexport type SystemRowProps = {\r\n name: string;\r\n siteId: string;\r\n systemNickName: string;\r\n modelId: string;\r\n filterState: ReportFilterState;\r\n filterData: ReportsFilterDataByTypePartial;\r\n selectedSystemGroup: UserSystemGroupStrings;\r\n toggleFilterSerialRowSystemSelection?: Function;\r\n};\r\nconst SystemRow = (props: SystemRowProps) => {\r\n const {\r\n name: serialId,\r\n siteId,\r\n systemNickName,\r\n modelId,\r\n filterState,\r\n filterData,\r\n selectedSystemGroup,\r\n toggleFilterSerialRowSystemSelection,\r\n } = props;\r\n const isThisSystemSelected = filterState.selectedSystemSerials.includes(serialId);\r\n return (\r\n <>\r\n \r\n \r\n toggleFilterSerialRowSystemSelection({\r\n selectedSystemGroup,\r\n filterState,\r\n filterData,\r\n serialId,\r\n modelId,\r\n siteId,\r\n })\r\n }\r\n style={{ marginLeft: '30px' }}>\r\n \r\n {isThisSystemSelected && }\r\n \r\n \r\n \r\n \r\n {serialId + ' '}\r\n {systemNickName && `${systemNickName}`}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\nexport default SystemRow;\r\n","import React, { useEffect, useState } from 'react';\r\nimport { ReactComponent as CheckedIcon } from '../../assets/icons/CheckedIcon.svg';\r\nimport { ReactComponent as FilterUnfoldIcon } from '../../assets/icons/FilterUnfoldIcon.svg';\r\nimport { ReactComponent as HalfCheckedIcon } from '../../assets/icons/HalfCheckedIcon.svg';\r\nimport { ReactComponent as FilterFoldIcon } from '../../assets/icons/FilterFoldIcon.svg';\r\nimport { RowWrapper, LeftPart, NameWrapper, RightPart, NameSpan, CheckBox } from './SiteRow';\r\nimport SystemRow from './SystemRow';\r\n\r\nconst ModelRow = props => {\r\n const {\r\n id,\r\n name,\r\n siteId,\r\n modelId,\r\n filterState,\r\n filterData,\r\n filteredSerials,\r\n filterValue,\r\n selectedSystemGroup,\r\n toggleFilterModelRowSystemsSelection,\r\n toggleFilterSerialRowSystemSelection,\r\n } = props;\r\n const [isFolded, setFolded] = useState(true);\r\n useEffect(() => {\r\n filterValue ? setFolded(false) : setFolded(true);\r\n }, [filterValue]);\r\n const isThisModelSelected = filterState.selectedModelIds.includes(id);\r\n\r\n const allSerialsOfThisSite = filterData.systems.filter(system => system.siteId === siteId);\r\n const allSerialsOfThisModel = allSerialsOfThisSite.filter(system => system.modelId === modelId);\r\n\r\n const getFilteredSerials = (fSerials, allSerialsOfModel) => {\r\n if (fSerials === null) {\r\n return allSerialsOfModel;\r\n }\r\n const FILTERED_SERIALS_COUNT = fSerials.length;\r\n const ALL_SERIALS_MODEL_COUNT = allSerialsOfModel.length;\r\n if (FILTERED_SERIALS_COUNT < ALL_SERIALS_MODEL_COUNT) {\r\n return fSerials;\r\n } else {\r\n const filtered = [];\r\n fSerials.forEach(printer => {\r\n allSerialsOfModel.forEach(currentPrinter => {\r\n if (printer.name === currentPrinter.name) {\r\n filtered.push(currentPrinter);\r\n }\r\n });\r\n });\r\n return filtered;\r\n }\r\n };\r\n\r\n const serialsToRender = getFilteredSerials(filteredSerials, allSerialsOfThisModel);\r\n serialsToRender &&\r\n serialsToRender.sort(\r\n (printer1, printer2) =>\r\n +printer1.name.split('-').join('') - +printer2.name.split('-').join('')\r\n );\r\n const getCheckedIcon = (totalCount: number, selectedCount: number) => {\r\n if (totalCount === selectedCount) {\r\n return ;\r\n }\r\n if (selectedCount > 0 && selectedCount < totalCount) {\r\n return ;\r\n }\r\n };\r\n const modelSystemSerialIds = filterData.systems\r\n .filter(system => system.modelId === id)\r\n .map(system => system.name);\r\n const modelSelectedSystemSerialIds = filterState.selectedSystemSerials.filter(selectedSerial =>\r\n modelSystemSerialIds.includes(selectedSerial)\r\n );\r\n const CheckedIconJSX = getCheckedIcon(\r\n modelSystemSerialIds.length,\r\n modelSelectedSystemSerialIds.length\r\n );\r\n\r\n return (\r\n <>\r\n \r\n \r\n toggleFilterModelRowSystemsSelection({\r\n selectedSystemGroup,\r\n modelId: id,\r\n siteId: siteId,\r\n filterData,\r\n filterState,\r\n })\r\n }\r\n style={{ marginLeft: '15px' }}>\r\n \r\n {isThisModelSelected && CheckedIconJSX}\r\n \r\n \r\n {name}\r\n \r\n \r\n setFolded(!isFolded)}>\r\n {isFolded ? : }\r\n \r\n \r\n {isFolded ? (\r\n <>\r\n ) : (\r\n <>\r\n {serialsToRender.map(system => {\r\n return (\r\n \r\n );\r\n })}\r\n \r\n )}\r\n \r\n );\r\n};\r\nexport default ModelRow;\r\n","import React, { useEffect, useState } from 'react';\r\nimport styled from 'styled-components';\r\nimport { ReactComponent as CheckedIcon } from '../../assets/icons/CheckedIcon.svg';\r\nimport { ReactComponent as HalfCheckedIcon } from '../../assets/icons/HalfCheckedIcon.svg';\r\nimport { ReactComponent as FilterUnfoldIcon } from '../../assets/icons/FilterUnfoldIcon.svg';\r\nimport { ReactComponent as FilterFoldIcon } from '../../assets/icons/FilterFoldIcon.svg';\r\nimport ModelRow from './ModelRow';\r\n\r\n// width: 300px;\r\nexport const RowWrapper = styled.div<{ isSiteRow?: boolean }>`\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n height: 46px;\r\n min-height: 46px;\r\n width: 100%;\r\n padding: 0 10px;\r\n font-family: Rubik, sans-serif;\r\n font-style: normal;\r\n font-weight: normal;\r\n font-size: 14px;\r\n line-height: normal;\r\n color: rgb(53, 64, 82);\r\n border-top: ${props => (props.isSiteRow ? ' 1px solid #c5d0de' : 'none')};\r\n`;\r\nexport const LeftPart = styled.div`\r\n display: flex;\r\n justify-content: start;\r\n align-items: center;\r\n height: 100%;\r\n width: 250px;\r\n`;\r\nexport const CheckBox = styled.div<{ checked: boolean }>`\r\n box-sizing: border-box;\r\n padding-bottom: 1px;\r\n padding-right: 1px;\r\n width: 16px;\r\n height: 16px;\r\n border: ${props => (props.checked ? ' 1px solid transparent' : '1px solid rgb(53, 64, 82)')};\r\n border-radius: 3px;\r\n background-color: ${props => (props.checked ? '#2ea1f8' : 'FFFFFF')};\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n`;\r\nexport const NameWrapper = styled.div`\r\n display: flex;\r\n justify-content: start;\r\n align-items: center;\r\n margin-left: 5px;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n overflow: hidden;\r\n width: 150px;\r\n`;\r\nexport const NameSpan = styled.span`\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n overflow: hidden;\r\n`;\r\nexport const RightPart = styled.div`\r\n display: flex;\r\n align-items: center;\r\n justify-content: end;\r\n height: 100%;\r\n width: 20px;\r\n`;\r\n\r\nconst SiteRow = props => {\r\n const {\r\n id,\r\n name,\r\n selectedSystemGroup,\r\n filterState,\r\n filterData,\r\n filteredModels,\r\n filteredSerials,\r\n filterValue,\r\n toggleFilterRowSystemsSelection,\r\n toggleFilterModelRowSystemsSelection,\r\n toggleFilterSerialRowSystemSelection,\r\n } = props;\r\n const [isFolded, setFolded] = useState(false);\r\n\r\n const isThisRowSelected = filterState.selectedSiteIds.includes(id);\r\n\r\n const siteModels = filterData && filterData.models.filter(model => model.siteId === id);\r\n const filterModelsForThisSite =\r\n filteredModels && filteredModels.filter(model => model.siteId === id);\r\n\r\n const siteSystemSerialIds = filterData.systems\r\n .filter(system => system.siteId === id)\r\n .map(system => system.name);\r\n const siteSelectedSystemSerialIds = filterState.selectedSystemSerials.filter(selectedSerial =>\r\n siteSystemSerialIds.includes(selectedSerial)\r\n );\r\n\r\n const getCheckedIcon = (totalCount: number, selectedCount: number) => {\r\n if (totalCount === selectedCount) {\r\n return ;\r\n }\r\n if (selectedCount > 0 && selectedCount < totalCount) {\r\n return ;\r\n }\r\n };\r\n const CheckedIconJSX = getCheckedIcon(\r\n siteSystemSerialIds.length,\r\n siteSelectedSystemSerialIds.length\r\n );\r\n\r\n return (\r\n <>\r\n \r\n {\r\n toggleFilterRowSystemsSelection({\r\n selectedSystemGroup,\r\n filterData,\r\n filterState,\r\n siteId: id,\r\n });\r\n }}>\r\n \r\n {isThisRowSelected && CheckedIconJSX}\r\n \r\n \r\n {name}\r\n \r\n \r\n setFolded(!isFolded)}>\r\n {isFolded ? : }\r\n \r\n \r\n\r\n {isFolded ? (\r\n <>\r\n ) : (\r\n <>\r\n {filterModelsForThisSite\r\n ? filterModelsForThisSite.map(model => {\r\n return (\r\n \r\n );\r\n })\r\n : siteModels.map(model => {\r\n return (\r\n \r\n );\r\n })}\r\n \r\n )}\r\n \r\n );\r\n};\r\nexport default SiteRow;\r\n","import React from 'react';\r\nimport styled from 'styled-components';\r\nimport { ReactComponent as CheckedIcon } from '../../assets/icons/CheckedIcon.svg';\r\nimport { ReactComponent as HalfCheckedIcon } from '../../assets/icons/HalfCheckedIcon.svg';\r\nimport { RowWrapper, LeftPart, CheckBox, NameWrapper, RightPart } from './SiteRow';\r\n\r\nexport type AllBtnProps = {\r\n totalSystemCount: number;\r\n selectedSystemsCount: number;\r\n selectedSystemGroup: string;\r\n filterData: any;\r\n filterState: any;\r\n toggleAllSystemsSelection: ({}) => void;\r\n};\r\nconst AllBtn = (props: AllBtnProps) => {\r\n const {\r\n totalSystemCount,\r\n selectedSystemsCount,\r\n selectedSystemGroup,\r\n filterState,\r\n filterData,\r\n toggleAllSystemsSelection,\r\n } = props;\r\n const getCheckedIcon = (totalCount: number, selectedCount: number) => {\r\n if (totalCount === selectedCount) {\r\n return ;\r\n }\r\n if (selectedCount > 0 && selectedCount < totalCount) {\r\n return ;\r\n }\r\n };\r\n const CheckedIconJSX = getCheckedIcon(totalSystemCount, selectedSystemsCount);\r\n return (\r\n <>\r\n \r\n {\r\n toggleAllSystemsSelection({ selectedSystemGroup, filterData, filterState });\r\n }}>\r\n 0}>\r\n {selectedSystemsCount > 0 && CheckedIconJSX}\r\n \r\n\r\n {'All'}\r\n \r\n \r\n \r\n \r\n );\r\n};\r\nexport default AllBtn;\r\n","import React from 'react';\r\nimport styled from 'styled-components';\r\nimport AllBtn from './AllBtn';\r\nimport SiteRow from './SiteRow';\r\nconst Wrapper = styled.div<{ height: number }>`\r\n display: flex;\r\n flex-direction: column;\r\n width: 100%;\r\n height: ${props => props.height}px;\r\n overflow: hidden;\r\n /* padding-bottom: 51px; */\r\n position: relative;\r\n`;\r\nconst ScrollableContainer = styled.div`\r\n overflow: auto;\r\n display: flex;\r\n flex-direction: column;\r\n width: 100%;\r\n height: 100%;\r\n &::-webkit-scrollbar-track {\r\n border-left: 0;\r\n }\r\n &::-webkit-scrollbar {\r\n width: 8px;\r\n }\r\n &::-webkit-scrollbar-thumb {\r\n background: #7f8fa4;\r\n border-radius: 10px;\r\n }\r\n`;\r\n// const FilterFooter = styled.div<{ topOffset: number }>`\r\n// position: absolute;\r\n// top: ${props => props.topOffset - 220}px;\r\n// display: flex;\r\n// flex-direction: column;\r\n// justify-content: center;\r\n// align-items: center;\r\n// width: 100%;\r\n// height: 70px;\r\n// border-top: 1px solid #c5d0de;\r\n// opacity: 0.9;\r\n// background: rgba(255, 255, 255, 0.8);\r\n// backdrop-filter: blur(6px);\r\n\r\n// font-family: 'Rubik';\r\n// font-style: normal;\r\n// font-weight: 400;\r\n// font-size: 20px;\r\n// line-height: 24px;\r\n// color: #2ea1f8;\r\n// `;\r\n\r\nconst LastEmptyBlock = styled.div`\r\n width: 100%;\r\n min-height: 70px;\r\n`;\r\nconst FilterSystemsPopUpMenu = props => {\r\n const {\r\n selectedSystemGroup,\r\n filterState,\r\n filterData,\r\n filterValue,\r\n toggleFilterRowSystemsSelection,\r\n toggleFilterModelRowSystemsSelection,\r\n toggleFilterSerialRowSystemSelection,\r\n toggleAllSystemsSelection,\r\n filteredSite,\r\n filteredModel,\r\n filteredSystem,\r\n pbiReportHeight,\r\n isMobile,\r\n } = props;\r\n\r\n const { sites, models, systems } = filterData;\r\n const getFilteredSitesAndModelsAndSerials = (filterValue: string) => {\r\n //*if site founded => displaying sites.\r\n if (filteredSite.length > 0) {\r\n return { filteredSites: filteredSite, filteredModels: null, filteredSerials: null };\r\n }\r\n //*byModel - if model founded display models\r\n let filteredSitesByFilteredModels = new Array();\r\n for (let i = 0; i < filteredModel.length; i++) {\r\n const siteId = filteredModel[i].siteId;\r\n const foundedSite = sites.find(site =>\r\n site.name.toLowerCase().includes(siteId.toLowerCase())\r\n );\r\n const isSiteAlreadyExist = filteredSitesByFilteredModels.find(\r\n site => site.id === foundedSite.id\r\n );\r\n if (!isSiteAlreadyExist) {\r\n filteredSitesByFilteredModels.push(foundedSite);\r\n }\r\n }\r\n if (filteredSitesByFilteredModels.length > 0) {\r\n return {\r\n filteredSites: filteredSitesByFilteredModels,\r\n filteredModels: filteredModel,\r\n filteredSerials: null,\r\n };\r\n }\r\n //*byserialNumber and nick name\r\n\r\n let filteredSitesByFilteredSerials = new Array();\r\n let filteredModelsByFilteredSerials = new Array();\r\n let filteredSystemsBySerial = new Array();\r\n\r\n for (let i = 0; i < filteredSystem.length; i++) {\r\n //*get sites to result object\r\n const siteId = filteredSystem[i].siteId;\r\n const site = sites.find(site => site.name === siteId);\r\n const isSiteAlreadyExist = filteredSitesByFilteredSerials.find(site => site.id === siteId);\r\n if (!isSiteAlreadyExist) {\r\n filteredSitesByFilteredSerials.push(site);\r\n }\r\n //*get models to result object\r\n const modelId = filteredSystem[i].modelId;\r\n const model = models.find(model => model.id === modelId);\r\n const isModelAlreadyExist = filteredModelsByFilteredSerials.find(\r\n model => model.id === modelId\r\n );\r\n if (!isModelAlreadyExist) {\r\n filteredModelsByFilteredSerials.push(model);\r\n }\r\n //*filter all systems by input starts\r\n if (filteredSystem[i].name.includes(filterValue)) {\r\n filteredSystemsBySerial.push(filteredSystem[i]);\r\n }\r\n }\r\n return {\r\n filteredSites: filteredSitesByFilteredSerials,\r\n filteredModels: filteredModelsByFilteredSerials,\r\n filteredSerials: filteredSystemsBySerial,\r\n };\r\n };\r\n const { filteredSites, filteredModels, filteredSerials } = getFilteredSitesAndModelsAndSerials(\r\n filterValue\r\n );\r\n return (\r\n \r\n \r\n \r\n {filteredSites &&\r\n filteredSites.map(site => {\r\n const siteModels =\r\n filteredModels && filteredModels.filter(model => model.siteId === site.id);\r\n const siteSerials =\r\n filteredSerials && filteredSerials.filter(serial => serial.siteId === site.id);\r\n return (\r\n \r\n );\r\n })}\r\n \r\n \r\n \r\n );\r\n};\r\nexport default FilterSystemsPopUpMenu;\r\n","import { create } from 'jss';\r\nimport { Store } from 'store/storeTypes';\r\nimport { createSelector } from 'reselect';\r\n\r\nconst selectedSystemGroupSelector = (state: Store) => state.ui.selectedSystemGroup;\r\nconst filterDataSelector = (state: Store) => state.reports.filterData;\r\nconst filterStateSelector = (state: Store) => state.reports.filterState;\r\nexport const filterDataBySystemGroupSelector = createSelector(\r\n [selectedSystemGroupSelector, filterDataSelector],\r\n (selectedSystemGroup, filterData) => {\r\n return filterData[selectedSystemGroup];\r\n }\r\n);\r\nexport const allFilterDataSystemsBySelectedSystemGroupSelector = createSelector(\r\n [filterDataBySystemGroupSelector],\r\n data => {\r\n return data['systems'];\r\n }\r\n);\r\nexport const filterStateBySystemGroupSelector = createSelector(\r\n [selectedSystemGroupSelector, filterStateSelector],\r\n (selectedSystemGroup, filterState) => {\r\n return filterState[selectedSystemGroup];\r\n }\r\n);\r\nexport const filterValueSelector = createSelector(\r\n [filterStateBySystemGroupSelector],\r\n filterStateBySystemGroup => {\r\n return filterStateBySystemGroup.filterValue;\r\n }\r\n);\r\n//searching in filter pop up\r\nexport const filteredSitesSelector = createSelector(\r\n [filterDataBySystemGroupSelector, filterValueSelector],\r\n (filterData, filterValue) => {\r\n return filterData.sites.filter(site =>\r\n site.name.toLowerCase().includes(filterValue.toLowerCase())\r\n );\r\n }\r\n);\r\nexport const fitleredModelsSelector = createSelector(\r\n [filterDataBySystemGroupSelector, filterValueSelector],\r\n (filterData, filterValue) => {\r\n return filterData.models.filter(model =>\r\n model.name.toLowerCase().includes(filterValue.toLowerCase())\r\n );\r\n }\r\n);\r\nexport const filteredSystemSelector = createSelector(\r\n [filterDataBySystemGroupSelector, filterValueSelector],\r\n (filterData, filterValue) => {\r\n return filterData.systems.filter(system => {\r\n const nickName = system.systemNickName;\r\n const isSerialFounded = system.name.toLowerCase().includes(filterValue.toLowerCase());\r\n\r\n const isNickNameFounded =\r\n nickName && nickName.toLowerCase().includes(filterValue.toLowerCase());\r\n if (isSerialFounded) {\r\n return true;\r\n }\r\n if (isNickNameFounded) {\r\n return true;\r\n }\r\n });\r\n }\r\n);\r\n","import { connect } from 'react-redux';\r\nimport { bindActionCreators, Dispatch } from 'redux';\r\nimport FilterSystemsPopUpMenu from './FilterSystemsPopUpMenu';\r\nimport { Store } from 'store/storeTypes';\r\nimport {\r\n toggleFilterRowSystemsSelection,\r\n toggleFilterModelRowSystemsSelection,\r\n toggleFilterSerialRowSystemSelection,\r\n toggleAllSystemsSelection,\r\n} from '../../actions/reportFilterActions';\r\n\r\nimport {\r\n filterDataBySystemGroupSelector,\r\n filteredSitesSelector,\r\n filteredSystemSelector,\r\n filterStateBySystemGroupSelector,\r\n filterValueSelector,\r\n fitleredModelsSelector,\r\n} from 'selectors/filterStateDataSelectors';\r\nimport { systemGroupSelector } from 'reducers/ui/systemGroupUiReducer';\r\n\r\nexport interface OwnProps {\r\n pbiReportHeight: number;\r\n isMobile?: boolean;\r\n}\r\n\r\nconst mapStateToProps = (state: Store) => {\r\n return {\r\n selectedSystemGroup: systemGroupSelector(state),\r\n filterData: filterDataBySystemGroupSelector(state),\r\n filterState: filterStateBySystemGroupSelector(state),\r\n filterValue: filterValueSelector(state),\r\n filteredSite: filteredSitesSelector(state),\r\n filteredModel: fitleredModelsSelector(state),\r\n filteredSystem: filteredSystemSelector(state),\r\n };\r\n};\r\nconst mapDispatchToProps = (dispatch: Dispatch) =>\r\n bindActionCreators(\r\n {\r\n toggleFilterRowSystemsSelection,\r\n toggleFilterModelRowSystemsSelection,\r\n toggleFilterSerialRowSystemSelection,\r\n toggleAllSystemsSelection,\r\n },\r\n dispatch\r\n );\r\n\r\nexport type IOverviewProps = OwnProps &\r\n ReturnType &\r\n ReturnType;\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(FilterSystemsPopUpMenu);\r\n","import React from 'react';\r\nimport styled, { keyframes } from 'styled-components';\r\nimport FilterSearcherContainer from 'components/FilterSystemsPopUpMenu/FilterSearcherContainer';\r\nimport FilterSystemsPopUpMenu from 'components/FilterSystemsPopUpMenu';\r\nimport { appearanceEffect } from 'globalStyle';\r\n\r\nconst FilterSlider = styled.div`\r\n padding-top: 10px;\r\n padding-bottom: 10px;\r\n width: 230px;\r\n height: 100%;\r\n padding-bottom: 40px;\r\n box-sizing: border-box;\r\n display: flex;\r\n background: #ffffff;\r\n border: none;\r\n box-shadow: 1px 0px 4px rgba(0, 0, 0, 0.16);\r\n animation-name: ${appearanceEffect};\r\n animation-duration: 500ms;\r\n z-index: 1;\r\n`;\r\n\r\nconst FilterSystemsPopUpMenuWrapper = styled.div<{ pbiReportHeight: string }>`\r\n overflow: auto;\r\n height: ${props => props.pbiReportHeight};\r\n width: 100%;\r\n background-color: white;\r\n display: flex;\r\n flex-direction: column;\r\n justify-content: start;\r\n align-items: flex-start;\r\n padding-bottom: 80px;\r\n\r\n &::-webkit-scrollbar-track {\r\n /* border-left: 0; */\r\n }\r\n &::-webkit-scrollbar {\r\n width: 8px;\r\n }\r\n &::-webkit-scrollbar-thumb {\r\n background: #7f8fa4;\r\n border-radius: 10px;\r\n }\r\n\r\n @media only screen and (max-width: 1280px) {\r\n height: 600px;\r\n }\r\n`;\r\n\r\nconst ControlWrapper = styled.div`\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n margin: 10px;\r\n position: sticky;\r\n top: 0;\r\n z-index: 100;\r\n background: white;\r\n`;\r\nconst SearchingBar = styled.div`\r\n width: 200px;\r\n height: 100%;\r\n caret-color: black;\r\n`;\r\n\r\nconst Slider = props => {\r\n const { screenWidth, pbiReportHeight } = props;\r\n\r\n return (\r\n <>\r\n {/* mobile version is in PbiFilterSystems component */}\r\n {screenWidth > 1400 && (\r\n \r\n \r\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 Slider;\r\n","import * as React from 'react';\r\nimport { memo, useEffect, useRef } from 'react';\r\nconst OverviewMobile = React.lazy(() => import('./OverviewMobile'));\r\nconst OverviewDesktop = React.lazy(() => import('./OverviewDesktop'));\r\nimport { useDebouncedCallback } from 'use-debounce/lib';\r\n\r\nimport { IOverviewProps } from './OverviewContainer';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { apiRefreshInterval, getRequestForTimeFrame } from 'helpers/date';\r\nimport { TimeFrame } from 'models/ReportData';\r\n\r\nimport { UserSystemGroup, UserSystemGroupStrings } from 'store/storeTypes';\r\nimport { isDateInCurrentSelectedRange } from 'helpers/overviewUtils';\r\n\r\nconst Overview = memo((props: IOverviewProps) => {\r\n const { t } = useTranslation();\r\n const {\r\n overviewAchievementsRequest,\r\n overviewImperssionsAvailabilityCardsRequest,\r\n overviewProductionRateRequest,\r\n overviewProductivityRequest,\r\n overviewImpressionsAvailabilityChartsRequest,\r\n overviewSpeedChartRequest,\r\n overviewUtilizationChartRequest,\r\n overviewReportMainRequest,\r\n overviewReportAvailabilityRequest,\r\n getMaxKeepAliveRequest,\r\n timeFrame,\r\n selectedSystemGroup,\r\n day,\r\n selectedSystemsRequest,\r\n allUserSystems,\r\n screenWidth,\r\n screenHeight,\r\n pbiReportHeight,\r\n pbiReportWidth,\r\n customTimeframeProperties,\r\n isMachineFilterOpen,\r\n endDate,\r\n refreshTime,\r\n } = props;\r\n let intervalRef = useRef(null);\r\n\r\n const [isMobile, setIsMobile] = React.useState(false);\r\n useEffect(() => {\r\n if (pbiReportWidth < 1366 || pbiReportHeight < 567) {\r\n setIsMobile(true);\r\n } else {\r\n setIsMobile(false);\r\n }\r\n }, [pbiReportHeight, pbiReportWidth, screenWidth, screenHeight]);\r\n\r\n const [debImperssionsAvailabilityCardsRequest] = useDebouncedCallback(\r\n (args: Record, isSilent: boolean) => {\r\n return overviewImperssionsAvailabilityCardsRequest(args);\r\n },\r\n 1\r\n );\r\n const [debProductionRateRequest] = useDebouncedCallback(\r\n (args: Record, isSilent: boolean) => {\r\n return overviewProductionRateRequest(args);\r\n },\r\n 1\r\n );\r\n const [debProductivityRequest] = useDebouncedCallback(\r\n (args: Record, isSilent: boolean) => {\r\n return overviewProductivityRequest(args);\r\n },\r\n 1\r\n );\r\n\r\n const [debImpressionsAvailabilityChartsRequest] = useDebouncedCallback(\r\n (args: Record, isSilent: boolean) => {\r\n return overviewImpressionsAvailabilityChartsRequest(args, isSilent);\r\n },\r\n 1\r\n );\r\n\r\n const [debSpeedChartRequest] = useDebouncedCallback(\r\n (args: Record, isSilent: boolean) => {\r\n return overviewSpeedChartRequest(args);\r\n },\r\n 1\r\n );\r\n\r\n const [debUtilizationChartRequest] = useDebouncedCallback(\r\n (args: Record, isSilent: boolean) => {\r\n return overviewUtilizationChartRequest(args);\r\n },\r\n 1\r\n );\r\n\r\n const [debAchievementsRequest] = useDebouncedCallback(\r\n (args: Record, isSilent: boolean) => {\r\n return overviewAchievementsRequest(args);\r\n },\r\n 1\r\n );\r\n const [debMaxKeepAliveRequest] = useDebouncedCallback(\r\n (args: Record, isSilent: boolean, isRealTimeRequest: boolean = false) => {\r\n //*all requests in application sends to server in body array with systems. and if all systems selected we send empty array\r\n //* but that exact request does not support it - that is why we have to send all serial numbers\r\n const argsObjWithAllSelectedSystems = { ...args, systems: selectedSystemsRequest };\r\n return getMaxKeepAliveRequest(argsObjWithAllSelectedSystems, isSilent, isRealTimeRequest);\r\n },\r\n 1\r\n );\r\n const [debOverviewReportMainRequest] = useDebouncedCallback(\r\n (args: Record, isSilent: boolean, isRealTimeRequest: boolean = false) => {\r\n return overviewReportMainRequest(args, isSilent, isRealTimeRequest);\r\n },\r\n 1\r\n );\r\n const [debOverviewReportAvailabilityRequest] = useDebouncedCallback(\r\n (args: Record, isSilent: boolean, isRealTimeRequest: boolean = false) => {\r\n return overviewReportAvailabilityRequest(args, isSilent, isRealTimeRequest);\r\n },\r\n 1\r\n );\r\n\r\n // Function to start the interval\r\n const startInterval = filterByPage => {\r\n const isRealTimeRequest = true;\r\n // Clear existing interval if any\r\n if (intervalRef.current) {\r\n clearInterval(intervalRef.current);\r\n intervalRef.current = null;\r\n }\r\n debMaxKeepAliveRequest(filterByPage, false, isRealTimeRequest);\r\n debOverviewReportMainRequest(filterByPage, false, isRealTimeRequest);\r\n debOverviewReportAvailabilityRequest(filterByPage, false, isRealTimeRequest);\r\n intervalRef.current = setInterval(async () => {\r\n await debMaxKeepAliveRequest(filterByPage, true, isRealTimeRequest);\r\n await debOverviewReportMainRequest(filterByPage, true, isRealTimeRequest);\r\n await debOverviewReportAvailabilityRequest(filterByPage, true, isRealTimeRequest);\r\n }, refreshTime * 1000);\r\n };\r\n\r\n const getData = (\r\n day: Date,\r\n timeFrame: TimeFrame,\r\n isSilent = false,\r\n selectedSystemGroup?: UserSystemGroupStrings\r\n ) => {\r\n const filterByPage = getRequestForTimeFrame(day, timeFrame, customTimeframeProperties);\r\n if (selectedSystemsRequest) {\r\n //*if selected all systems we send [] instead of string with all systems - optimization logic\r\n filterByPage['systems'] =\r\n selectedSystemsRequest.length === allUserSystems.length ? [] : selectedSystemsRequest;\r\n }\r\n filterByPage['systemGroup'] = selectedSystemGroup;\r\n //* by new buisness logic there will be another requests for Apollo\r\n if (selectedSystemGroup === UserSystemGroup.Apollo) {\r\n //*three requests for Apollo insead of 7 for others group\r\n debMaxKeepAliveRequest(filterByPage, isSilent);\r\n debOverviewReportMainRequest(filterByPage, isSilent);\r\n debOverviewReportAvailabilityRequest(filterByPage, isSilent);\r\n } else {\r\n //*for regular cases\r\n debAchievementsRequest(filterByPage, isSilent);\r\n debImperssionsAvailabilityCardsRequest(filterByPage, isSilent);\r\n debProductionRateRequest(filterByPage, isSilent);\r\n debImpressionsAvailabilityChartsRequest(filterByPage, isSilent);\r\n debSpeedChartRequest(filterByPage, isSilent);\r\n debUtilizationChartRequest(filterByPage, isSilent);\r\n selectedSystemGroup === 'DTG' && debProductivityRequest(filterByPage, isSilent);\r\n }\r\n };\r\n\r\n //*this useEffect is special only for apollo group - because we have completely another async logic for this group\r\n const isTodayDateInCurrentSelectedRange = isDateInCurrentSelectedRange({\r\n selectedDay: day,\r\n timeFrame,\r\n customTimeframeProperties,\r\n endDate,\r\n });\r\n useEffect(() => {\r\n if (selectedSystemGroup !== UserSystemGroup.Apollo) {\r\n return;\r\n }\r\n\r\n const filterByPage = getRequestForTimeFrame(day, timeFrame, customTimeframeProperties);\r\n filterByPage['systemGroup'] = selectedSystemGroup;\r\n if (selectedSystemsRequest) {\r\n filterByPage['systems'] =\r\n selectedSystemsRequest.length === allUserSystems.length ? [] : selectedSystemsRequest;\r\n }\r\n // Clear any existing interval before setting a new one or stopping the updates\r\n if (intervalRef.current) {\r\n clearInterval(intervalRef.current);\r\n intervalRef.current = null;\r\n }\r\n\r\n // Call immediately and set up the interval if the condition is true\r\n if (isTodayDateInCurrentSelectedRange) {\r\n startInterval(filterByPage);\r\n } else {\r\n // Clear the interval when condition is false\r\n if (intervalRef.current) {\r\n clearInterval(intervalRef.current);\r\n intervalRef.current = null;\r\n }\r\n debMaxKeepAliveRequest(filterByPage, false);\r\n debOverviewReportMainRequest(filterByPage, false);\r\n debOverviewReportAvailabilityRequest(filterByPage, false);\r\n }\r\n\r\n return () => {\r\n if (intervalRef.current) {\r\n clearInterval(intervalRef.current);\r\n intervalRef.current = null;\r\n }\r\n };\r\n }, [\r\n timeFrame,\r\n day,\r\n selectedSystemsRequest,\r\n selectedSystemGroup,\r\n customTimeframeProperties,\r\n isTodayDateInCurrentSelectedRange,\r\n ]);\r\n\r\n useEffect(() => {\r\n if (selectedSystemGroup === UserSystemGroup.Apollo) {\r\n return;\r\n }\r\n if (timeFrame) {\r\n getData(day, timeFrame, false, selectedSystemGroup);\r\n }\r\n return apiRefreshInterval({ day, timeframe: timeFrame }, () =>\r\n getData(day, timeFrame, true, selectedSystemGroup)\r\n );\r\n }, [timeFrame, day, selectedSystemsRequest, selectedSystemGroup, customTimeframeProperties]);\r\n return <>{isMobile ? : };\r\n});\r\nexport default Overview;\r\n","import { connect } from 'react-redux';\r\nimport { bindActionCreators, Dispatch } from 'redux';\r\nimport Overview from './Overview';\r\nimport {\r\n overviewAchievementsRequest,\r\n overviewProductionAllChartsRequest,\r\n overviewImperssionsAvailabilityCardsRequest,\r\n overviewProductivityRequest,\r\n overviewProductionRateRequest,\r\n overviewImpressionsAvailabilityChartsRequest,\r\n overviewSpeedChartRequest,\r\n overviewUtilizationChartRequest,\r\n overviewReportMainRequest,\r\n overviewReportAvailabilityRequest,\r\n getMaxKeepAliveRequest,\r\n} from '../../actions/overviewActions';\r\nimport { setActiveOverviewChart } from '../../actions/uiActions';\r\nimport { Store } from 'store/storeTypes';\r\nimport { selectedSystemSerialsSelectorForRequest } from 'selectors/filterSelectors';\r\nimport { TimeFrame } from 'models/ReportData';\r\nimport { systemGroupSelector } from 'reducers/ui/systemGroupUiReducer';\r\nimport {\r\n overviewBySystemGroupAvailabilityChart,\r\n overviewBySystemGroupProductionChart,\r\n overviewBySystemGroupRecords,\r\n overviewBySystemGroupSpeedChart,\r\n overviewBySystemGroupUtilizationChart,\r\n overviewMaxKeepAliveSelector,\r\n overviewMaxKeepAliveUTCSelector,\r\n} from 'reducers/overviewReducer';\r\nimport { uiOverviewActiveChartSelectorBySystemGroupSelector } from 'reducers/ui/overviewUiReducer';\r\nimport {\r\n dataUserSettingsSelector,\r\n refreshRealTimePeriodSelector,\r\n} from 'reducers/userSettingsReducer';\r\nimport {\r\n customTimeFramePropertiesSelector,\r\n selectedSystemSerialsBySystemGroup,\r\n} from 'reducers/reports/filterStateReducer';\r\nimport {\r\n pbiReportHeightSelector,\r\n pbiReportWidthSelector,\r\n screenHeightSelector,\r\n screenWidthSelector,\r\n} from 'reducers/appUserReducer';\r\nimport { allSystemsSelector, endDateSelector } from 'reducers/reports/filterDataReducer';\r\nimport { isMachineFilterOpenSelector } from 'reducers/ui';\r\n\r\nexport interface OwnProps {\r\n timeFrame: TimeFrame;\r\n day?: Date;\r\n}\r\n\r\nconst mapStateToProps = (state: Store) => {\r\n return {\r\n weekRecord: overviewBySystemGroupRecords(state),\r\n productionChart: overviewBySystemGroupProductionChart(state),\r\n utilizationChart: overviewBySystemGroupUtilizationChart(state),\r\n speedChart: overviewBySystemGroupSpeedChart(state),\r\n availabilityChart: overviewBySystemGroupAvailabilityChart(state),\r\n activeChart: uiOverviewActiveChartSelectorBySystemGroupSelector(state),\r\n selectedSystemGroup: systemGroupSelector(state),\r\n userSettings: dataUserSettingsSelector(state),\r\n selectedSystemsRequest: selectedSystemSerialsSelectorForRequest(state),\r\n selectedSystemSerials: selectedSystemSerialsBySystemGroup(state),\r\n allUserSystems: allSystemsSelector(state),\r\n screenHeight: screenHeightSelector(state),\r\n screenWidth: screenWidthSelector(state),\r\n pbiReportWidth: pbiReportWidthSelector(state),\r\n pbiReportHeight: pbiReportHeightSelector(state),\r\n customTimeframeProperties: customTimeFramePropertiesSelector(state),\r\n isMachineFilterOpen: isMachineFilterOpenSelector(state),\r\n endDate: endDateSelector(state),\r\n refreshTime: refreshRealTimePeriodSelector(state),\r\n maxKeepAlive: overviewMaxKeepAliveSelector(state),\r\n maxKeepAliveUtc: overviewMaxKeepAliveUTCSelector(state),\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch: Dispatch) =>\r\n bindActionCreators(\r\n {\r\n overviewAchievementsRequest,\r\n setActiveOverviewChart,\r\n overviewProductionAllChartsRequest,\r\n overviewImperssionsAvailabilityCardsRequest,\r\n overviewProductivityRequest,\r\n overviewProductionRateRequest,\r\n overviewImpressionsAvailabilityChartsRequest,\r\n overviewSpeedChartRequest,\r\n overviewUtilizationChartRequest,\r\n overviewReportMainRequest,\r\n overviewReportAvailabilityRequest,\r\n getMaxKeepAliveRequest,\r\n },\r\n dispatch\r\n );\r\n\r\nexport type IOverviewProps = OwnProps &\r\n ReturnType &\r\n ReturnType;\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(Overview);\r\n","import { SubReportTypes } from 'models/ReportData';\r\nimport React from 'react';\r\nimport styled from 'styled-components';\r\nimport { PbiFilterSystemsProps } from './PbiFilterSystemsContainer';\r\nimport { ReactComponent as BackArrow } from '../../assets/icons/BackArrow.svg';\r\nimport FilterSearcher from '../FilterSystemsPopUpMenu/FilterSearcherContainer';\r\nimport FilterSystemsPopUpMenu from 'components/FilterSystemsPopUpMenu/FilterSystemsPopUpMenuContainer';\r\nimport { KonnectAnalytics } from 'KonnectAnalytics/konnectAnalytics';\r\nimport { Drawer } from '@material-ui/core';\r\nimport { ReactComponent as CloseIcon } from '../../assets/icons/CloseIconDownloadInkPerJob.svg';\r\nimport Funnel from 'components/_common/Funnel';\r\n\r\nconst BackArrowWrapper = styled.div`\r\n min-width: 50px;\r\n min-height: 40px;\r\n max-height: 55px;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n &:hover {\r\n background-color: #ececec;\r\n }\r\n`;\r\n\r\nconst SearchingBar = styled.div`\r\n display: flex;\r\n margin-top: 10px;\r\n width: 100%;\r\n`;\r\n\r\nconst FilterSystemsPopUpMenuWrapper = styled.div<{ pbiReportHeight: string }>`\r\n height: ${props => props.pbiReportHeight};\r\n padding: 10px;\r\n width: 100%;\r\n background-color: white;\r\n\r\n display: flex;\r\n\r\n flex-direction: column;\r\n justify-content: start;\r\n align-items: flex-start;\r\n`;\r\nconst FilterHeaderRow = styled.div`\r\n display: flex;\r\n justify-content: space-between;\r\n width: 100%;\r\n`;\r\nconst Header = styled.div`\r\n font-family: 'Rubik';\r\n font-style: normal;\r\n font-weight: 500;\r\n font-size: 24px;\r\n line-height: 36px;\r\n color: #000000;\r\n`;\r\nconst CloseIconPlaceHolder = styled.div``;\r\n\r\nconst SystemsFilterContainerMobile = styled.div`\r\n box-sizing: border-box;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n border-right: 1px solid #c5d0de;\r\n width: 41px;\r\n min-width: 41px;\r\n max-width: 41px;\r\n height: 49px;\r\n margin-bottom: 4px;\r\n margin-right: 10px;\r\n cursor: pointer;\r\n`;\r\nconst PbiFilterSystemsMobile = React.memo(\r\n (props: PbiFilterSystemsProps & { funnelColor: string; filterNotEmpty: boolean }) => {\r\n const {\r\n activeReport,\r\n funnelColor,\r\n filterNotEmpty,\r\n history,\r\n pbiReportHeight,\r\n isMachineFilterOpen,\r\n toggleMachineFilterMenu,\r\n } = props;\r\n\r\n //*mobile slider\r\n\r\n const handleClick = event => {\r\n toggleMachineFilterMenu();\r\n KonnectAnalytics.toggleMachineFilterMenu();\r\n };\r\n return (\r\n <>\r\n \r\n {activeReport !== SubReportTypes.SystemPage ? (\r\n \r\n ) : (\r\n history.goBack()}>\r\n \r\n \r\n )}\r\n \r\n\r\n \r\n \r\n \r\n
Filter
\r\n \r\n \r\n \r\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 PbiFilterSystemsMobile;\r\n","import { SubReportTypes } from 'models/ReportData';\r\nimport React from 'react';\r\nimport styled from 'styled-components';\r\nimport { PbiFilterSystemsProps } from './PbiFilterSystemsContainer';\r\nimport { ReactComponent as FunnelIcon } from '../../assets/icons/FunnelIcon.svg';\r\nimport { ReactComponent as FunnelDot } from '../../assets/icons/FilterDot.svg';\r\nimport { ReactComponent as BackArrow } from '../../assets/icons/BackArrow.svg';\r\nimport { globalColors } from 'globalStyle';\r\n\r\nconst BackArrowWrapper = styled.div`\r\n min-width: 50px;\r\n min-height: 40px;\r\n max-height: 55px;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n &:hover {\r\n background-color: #ececec;\r\n }\r\n`;\r\n\r\nconst FunnelDotContainer = styled.div`\r\n position: absolute;\r\n top: -2px;\r\n left: 15px;\r\n`;\r\nconst SystemsFilterContainer = styled.div`\r\n box-sizing: border-box;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n width: 69px;\r\n height: 49px;\r\n margin-bottom: 4px;\r\n margin-right: 10px;\r\n cursor: pointer;\r\n @media (max-width: 750px) {\r\n margin-left: 0;\r\n }\r\n`;\r\nconst FunnelContainer = styled.div`\r\n position: relative;\r\n height: 22px;\r\n`;\r\n{\r\n /* desktop version of filter menu is in Slider component */\r\n}\r\nconst VerticalDevider = styled.div`\r\n display: flex;\r\n width: 1px;\r\n height: 26px;\r\n margin-left: 10px;\r\n background-color: ${globalColors.regular.background.greyDevider};\r\n`;\r\nconst PbiFilterSystemsDesktop = React.memo(\r\n (\r\n props: PbiFilterSystemsProps & {\r\n filterNotEmpty: boolean;\r\n funnelColor: string;\r\n onFunnelClickHandler: () => void;\r\n }\r\n ) => {\r\n const { activeReport, funnelColor, filterNotEmpty, history, onFunnelClickHandler } = props;\r\n const isSubReport =\r\n activeReport === SubReportTypes.SystemPage ||\r\n activeReport === SubReportTypes.ServiceTicket ||\r\n activeReport === SubReportTypes.MachineConfig;\r\n return (\r\n \r\n {!isSubReport ? (\r\n \r\n \r\n {filterNotEmpty && (\r\n \r\n \r\n \r\n )}\r\n \r\n ) : (\r\n history.goBack()}>\r\n \r\n \r\n )}\r\n \r\n \r\n );\r\n }\r\n);\r\n\r\nexport default PbiFilterSystemsDesktop;\r\n","import React from 'react';\r\nimport styled from 'styled-components/macro';\r\nimport { PbiFilterSystemsProps } from './PbiFilterSystemsContainer';\r\nimport PbiFilterSystemsMobile from './PbiFilterSystemsMobile';\r\nimport PbiFilterSystemsDesktop from './PbiFilterSystemsDesktop';\r\nimport { KonnectAnalytics } from 'KonnectAnalytics/konnectAnalytics';\r\n\r\nexport const SystemsFilterContainer = styled.div`\r\n box-sizing: border-box;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n border-right: 1px solid #c5d0de;\r\n width: 69px;\r\n height: 49px;\r\n margin-bottom: 4px;\r\n margin-right: 10px;\r\n cursor: pointer;\r\n @media (max-width: 750px) {\r\n margin-left: 0;\r\n }\r\n`;\r\n\r\nconst PbiFilterSystems = React.memo((props: PbiFilterSystemsProps) => {\r\n const {\r\n filterState,\r\n filterData,\r\n isMachineFilterOpen,\r\n screenWidth,\r\n pbiReportHeight,\r\n toggleMachineFilterMenu,\r\n } = props;\r\n const { selectedSiteIds, selectedModelIds, selectedSystemSerials } = filterState;\r\n const MAX_SYSTEMS_COUNT = filterData.systems.length;\r\n const filterNotEmpty = !!(\r\n (selectedSiteIds.length || selectedModelIds.length || selectedSystemSerials.length) &&\r\n selectedSystemSerials.length !== MAX_SYSTEMS_COUNT\r\n );\r\n\r\n const funnelColor = isMachineFilterOpen ? '#1878BA' : '#7F8FA4';\r\n\r\n const onFunnelClickHandler = () => {\r\n toggleMachineFilterMenu();\r\n KonnectAnalytics.toggleMachineFilterMenu();\r\n };\r\n return (\r\n <>\r\n {screenWidth <= 1400 ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n );\r\n});\r\n\r\nexport default PbiFilterSystems;\r\n","import { connect } from 'react-redux';\r\nimport { bindActionCreators, Dispatch } from 'redux';\r\n\r\nimport { Store } from 'store/storeTypes';\r\nimport PbiFilterSystems from './PbiFilterSystems';\r\nimport {\r\n setFilterSystemsState,\r\n setNodeFoldedState,\r\n resetFilterSystemsState,\r\n openFilterPopUpMenu,\r\n toggleFilterRowSystemsSelection,\r\n} from 'actions/reportFilterActions';\r\nimport { toggleMachineFilterMenu } from 'actions/userUiActions';\r\nimport { isMachineFilterOpenSelector } from 'reducers/ui';\r\nimport { systemGroupSelector } from 'reducers/ui/systemGroupUiReducer';\r\nimport { filterStateBySystemGroup } from 'reducers/reports/filterStateReducer';\r\nimport {\r\n activeReportSelector,\r\n filterDataBySystemGroupSelector,\r\n} from 'reducers/reports/filterDataReducer';\r\nimport { pbiReportHeightSelector, screenWidthSelector } from 'reducers/appUserReducer';\r\nimport { withRouter, RouteComponentProps } from 'react-router-dom';\r\n\r\nconst mapStateToProps = (state: Store) => ({\r\n filterData: filterDataBySystemGroupSelector(state),\r\n filterState: filterStateBySystemGroup(state),\r\n selectedSystemGroup: systemGroupSelector(state),\r\n isMachineFilterOpen: isMachineFilterOpenSelector(state),\r\n screenWidth: screenWidthSelector(state),\r\n pbiReportHeight: pbiReportHeightSelector(state),\r\n activeReport: activeReportSelector(state),\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch: Dispatch) =>\r\n bindActionCreators(\r\n {\r\n setFilterSystemsState,\r\n setNodeFoldedState,\r\n resetFilterSystemsState,\r\n openFilterPopUpMenu,\r\n toggleFilterRowSystemsSelection,\r\n toggleMachineFilterMenu,\r\n },\r\n dispatch\r\n );\r\n\r\nexport type PbiFilterSystemsProps = ReturnType &\r\n ReturnType &\r\n RouteComponentProps;\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withRouter(PbiFilterSystems));\r\n","import React, { useEffect, useRef } from 'react';\r\nimport { createMuiTheme, MuiThemeProvider } from '@material-ui/core/styles';\r\nimport { MuiPickersUtilsProvider } from '@material-ui/pickers/MuiPickersUtilsProvider';\r\nimport { LocalizedUtils } from 'components/_common/FilterDatePicker';\r\nimport styled from 'styled-components';\r\nimport appTheme from '../../theme';\r\nimport enLocale from 'date-fns/locale/en-US';\r\nimport { getWeekStartEnv } from 'helpers/envGetters';\r\nimport { DatePicker } from '@material-ui/pickers/DatePicker';\r\nimport { addMonths, eachMonthOfInterval, format, isSameDay, isSameMonth } from 'date-fns';\r\nimport { activeTheme, MobileDatePickerProps, PickerWrapper, Wrapper } from './MobileDatePicker';\r\n\r\nconst WEEK_START = getWeekStartEnv();\r\n\r\nconst MobileDayPicker = (props: MobileDatePickerProps) => {\r\n const { startDate, endDate, selectedDay, setActiveDate, closeCalendarModal } = props;\r\n\r\n const onChangeDateHandler = date => {\r\n if (isSameDay(startDate, date)) {\r\n return;\r\n }\r\n setActiveDate(date);\r\n closeCalendarModal();\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\nexport default MobileDayPicker;\r\n","import React from 'react';\r\nimport { DatePickerProps } from '@material-ui/pickers';\r\nimport cn from 'classnames';\r\n\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport { Theme, withStyles } from '@material-ui/core/styles';\r\nimport { createStyles, WithStyles } from '@material-ui/core';\r\n\r\nimport { ValidationError } from 'helpers/validationRules';\r\nimport { format, getWeekForDate, isSameDay, isWithinInterval } from '../../helpers/date';\r\nimport FilterDatePicker from './FilterDatePicker';\r\n\r\nconst DateWeekPicker = React.memo((props: DateWeekPickerProps & { isMobile?: boolean }) => {\r\n const { variant, error, classes, isMobile, ...rest } = props;\r\n const renderWrappedWeekDay = (date: Date, selectedDate: Date, dayInCurrentMonth: boolean) => {\r\n const dateClone = new Date(date.getTime());\r\n const selectedDateClone = new Date(selectedDate.getTime());\r\n const start = getWeekForDate(selectedDateClone).startDate;\r\n const end = getWeekForDate(selectedDateClone).endDate;\r\n\r\n const dayIsBetween = isWithinInterval(dateClone, { start, end });\r\n const isFirstDay = isSameDay(dateClone, start);\r\n const isLastDay = isSameDay(dateClone, end);\r\n\r\n const wrapperClassName = cn({\r\n [classes.highlight]: dayIsBetween,\r\n [classes.firstHighlight]: isFirstDay,\r\n [classes.endHighlight]: isLastDay,\r\n });\r\n\r\n const dayClassName = cn(classes.day, {\r\n [classes.nonCurrentMonthDay]: !dayInCurrentMonth,\r\n [classes.highlightNonCurrentMonthDay]: !dayInCurrentMonth && dayIsBetween,\r\n });\r\n\r\n return (\r\n
\r\n \r\n {format(dateClone, 'd')} \r\n \r\n
\r\n );\r\n };\r\n\r\n return ;\r\n});\r\n\r\nconst styles = (theme: Theme) =>\r\n createStyles({\r\n dayWrapper: {\r\n position: 'relative',\r\n },\r\n day: {\r\n width: '32px',\r\n height: '32px',\r\n fontSize: '14px',\r\n lineHeight: '18px',\r\n margin: '0 3px',\r\n color: 'inherit',\r\n padding: '0 !important',\r\n },\r\n customDayHighlight: {\r\n position: 'absolute',\r\n top: 0,\r\n bottom: 0,\r\n left: '2px',\r\n right: '2px',\r\n border: `1px solid ${theme.palette.secondary.main}`,\r\n borderRadius: '4px',\r\n },\r\n nonCurrentMonthDay: {\r\n color: theme.palette.text.disabled,\r\n },\r\n highlightNonCurrentMonthDay: {\r\n color: '#676767',\r\n },\r\n highlight: {\r\n background: theme.palette.primary.main,\r\n color: theme.palette.common.white,\r\n },\r\n firstHighlight: {\r\n extend: 'highlight',\r\n borderTopLeftRadius: '4px',\r\n borderBottomLeftRadius: '4px',\r\n },\r\n endHighlight: {\r\n extend: 'highlight',\r\n borderTopRightRadius: '4px',\r\n borderBottomRightRadius: '4px',\r\n },\r\n });\r\n\r\ninterface DateWeekPickerProps\r\n extends Pick>,\r\n WithStyles {\r\n error?: ValidationError | false;\r\n noHelper?: boolean;\r\n variant: 'dialog' | 'inline' | 'static';\r\n}\r\n\r\nexport default withStyles(styles)(DateWeekPicker);\r\n","import React from 'react';\r\nimport { SVGProps } from 'react';\r\n\r\n// tslint:disable:max-line-length\r\nconst FilterArrLeft = (props: SVGProps) => {\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default FilterArrLeft;\r\n","import { KonnectAnalytics } from 'KonnectAnalytics/konnectAnalytics';\r\nimport React, { Fragment } from 'react';\r\nimport styled from 'styled-components/macro';\r\n\r\nimport FilterArrLeft from './FilterArrLeft';\r\n\r\nconst ArrLeftIcon = styled(FilterArrLeft)`\r\n width: 22px;\r\n cursor: pointer;\r\n &.right {\r\n transform: rotate(180deg);\r\n }\r\n &:not(:last-child) {\r\n margin-right: 5px;\r\n }\r\n &.disabled {\r\n cursor: initial;\r\n path {\r\n stroke: #c5d0de;\r\n }\r\n }\r\n @media (max-width: 750px) {\r\n &:not(:last-child) {\r\n margin-right: 0;\r\n }\r\n }\r\n`;\r\n\r\nconst Mobile = styled.div`\r\n display: none;\r\n @media (max-width: 750px) {\r\n display: flex;\r\n justify-content: space-between;\r\n padding: 20px 0;\r\n border-top: 1px solid #c5d0de;\r\n border-bottom: 1px solid #c5d0de;\r\n }\r\n`;\r\n\r\nconst Desktop = styled.div`\r\n display: flex;\r\n min-width: 50px;\r\n @media (max-width: 750px) {\r\n display: none;\r\n }\r\n`;\r\n\r\nconst DateTitle = styled.div`\r\n font-size: 16px;\r\n color: #354052;\r\n`;\r\n\r\ninterface FilterArrowsProps {\r\n handleLeft: () => void;\r\n handleRight: () => void;\r\n disableLeft?: boolean;\r\n disableRight?: boolean;\r\n dateTitle?: string;\r\n}\r\n\r\nconst FilterArrows = ({\r\n handleLeft,\r\n handleRight,\r\n disableLeft,\r\n disableRight,\r\n dateTitle,\r\n}: FilterArrowsProps) => {\r\n const onHandleLeft = () => {\r\n if (!disableLeft) {\r\n handleLeft();\r\n KonnectAnalytics.decrementDateInDatePicker();\r\n }\r\n };\r\n const onHandleRight = () => {\r\n if (!disableRight) {\r\n handleRight();\r\n KonnectAnalytics.incrementDateInDatePicker();\r\n }\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n {dateTitle}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default FilterArrows;\r\n","import React from 'react';\r\nimport { DatePickerProps } from '@material-ui/pickers';\r\nimport cn from 'classnames';\r\n\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport { Theme, withStyles } from '@material-ui/core/styles';\r\nimport { createStyles, WithStyles } from '@material-ui/core';\r\n\r\nimport { ValidationError } from 'helpers/validationRules';\r\nimport { format, getWeekForDate, isSameDay, isWithinInterval } from '../../helpers/date';\r\nimport FilterDatePicker from './FilterDatePicker';\r\nimport { PickerWrapper } from 'components/FiltersCalendarModal/MobileDatePicker';\r\nimport styled from 'styled-components';\r\n\r\nconst InnerWrapper = styled.div`\r\n width: 100%;\r\n height: 300px;\r\n padding: 0 20px;\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n`;\r\nconst DateWeekPickerMobile = React.memo(\r\n (\r\n props: DateWeekPickerProps & {\r\n isMobile?: boolean;\r\n screenWidth?: number;\r\n closeCalendarModal: () => void;\r\n }\r\n ) => {\r\n const { variant, error, classes, isMobile, screenWidth, closeCalendarModal, ...rest } = props;\r\n const renderWrappedWeekDay = (date: Date, selectedDate: Date, dayInCurrentMonth: boolean) => {\r\n const dateClone = new Date(date.getTime());\r\n const selectedDateClone = new Date(selectedDate.getTime());\r\n const start = getWeekForDate(selectedDateClone).startDate;\r\n const end = getWeekForDate(selectedDateClone).endDate;\r\n\r\n const dayIsBetween = isWithinInterval(dateClone, { start, end });\r\n const isFirstDay = isSameDay(dateClone, start);\r\n const isLastDay = isSameDay(dateClone, end);\r\n\r\n const wrapperClassName = cn({\r\n [classes.highlight]: dayIsBetween,\r\n [classes.firstHighlight]: isFirstDay,\r\n [classes.endHighlight]: isLastDay,\r\n });\r\n\r\n const dayClassName = cn(classes.day, {\r\n [classes.nonCurrentMonthDay]: !dayInCurrentMonth,\r\n [classes.highlightNonCurrentMonthDay]: !dayInCurrentMonth && dayIsBetween,\r\n });\r\n\r\n return (\r\n
\r\n \r\n {format(dateClone, 'd')} \r\n \r\n
\r\n );\r\n };\r\n\r\n return (\r\n \r\n );\r\n }\r\n);\r\n\r\nconst styles = (theme: Theme) =>\r\n createStyles({\r\n dayWrapper: {\r\n position: 'relative',\r\n },\r\n day: {\r\n width: '32px',\r\n height: '32px',\r\n fontSize: '14px',\r\n lineHeight: '18px',\r\n margin: '0 3px',\r\n color: 'inherit',\r\n padding: '0 !important',\r\n },\r\n customDayHighlight: {\r\n position: 'absolute',\r\n top: 0,\r\n bottom: 0,\r\n left: '2px',\r\n right: '2px',\r\n border: `1px solid ${theme.palette.secondary.main}`,\r\n borderRadius: '4px',\r\n },\r\n nonCurrentMonthDay: {\r\n color: theme.palette.text.disabled,\r\n },\r\n highlightNonCurrentMonthDay: {\r\n color: '#676767',\r\n },\r\n highlight: {\r\n background: theme.palette.primary.main,\r\n color: theme.palette.common.white,\r\n },\r\n firstHighlight: {\r\n extend: 'highlight',\r\n borderTopLeftRadius: '4px',\r\n borderBottomLeftRadius: '4px',\r\n },\r\n endHighlight: {\r\n extend: 'highlight',\r\n borderTopRightRadius: '4px',\r\n borderBottomRightRadius: '4px',\r\n },\r\n });\r\n\r\ninterface DateWeekPickerProps\r\n extends Pick>,\r\n WithStyles {\r\n error?: ValidationError | false;\r\n noHelper?: boolean;\r\n variant: 'dialog' | 'inline' | 'static';\r\n}\r\n\r\nexport default withStyles(styles)(DateWeekPickerMobile);\r\n","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgNextDateIcon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 8,\n height: 14,\n viewBox: \"0 0 8 14\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M1.04592 12.9077L6.95361 6.99998L1.04592 1.09229\",\n strokeMiterlimit: 10,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgNextDateIcon);\nexport default __webpack_public_path__ + \"static/media/nextDateIcon.d0c9c4a9.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2, _path3, _path4, _path5, _path6, _path7, _path8;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgNewCalendarIcon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 14,\n height: 14,\n viewBox: \"0 0 14 14\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M11.0837 1.75V0.583333C11.0837 0.428624 11.0222 0.280251 10.9128 0.170854C10.8034 0.0614582 10.655 0 10.5003 0C10.3456 0 10.1972 0.0614582 10.0878 0.170854C9.97845 0.280251 9.91699 0.428624 9.91699 0.583333V1.75H11.0837Z\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M4.08366 1.75V0.583333C4.08366 0.428624 4.0222 0.280251 3.9128 0.170854C3.80341 0.0614582 3.65504 0 3.50033 0C3.34562 0 3.19724 0.0614582 3.08785 0.170854C2.97845 0.280251 2.91699 0.428624 2.91699 0.583333V1.75H4.08366Z\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12.25 13.4168H1.75C1.28587 13.4168 0.840752 13.2325 0.512563 12.9043C0.184374 12.5761 0 12.131 0 11.6668L0 4.0835C0 3.61937 0.184374 3.17425 0.512563 2.84606C0.840752 2.51787 1.28587 2.3335 1.75 2.3335H12.25C12.7141 2.3335 13.1592 2.51787 13.4874 2.84606C13.8156 3.17425 14 3.61937 14 4.0835V11.6668C14 12.131 13.8156 12.5761 13.4874 12.9043C13.1592 13.2325 12.7141 13.4168 12.25 13.4168ZM12.8333 5.25016H1.16667V11.6668C1.16667 11.8215 1.22812 11.9699 1.33752 12.0793C1.44692 12.1887 1.59529 12.2502 1.75 12.2502H12.25C12.4047 12.2502 12.5531 12.1887 12.6625 12.0793C12.7719 11.9699 12.8333 11.8215 12.8333 11.6668V5.25016Z\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M4.66634 6.4165H2.33301V8.1665H4.66634V6.4165Z\"\n })), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8.16634 6.4165H5.83301V8.1665H8.16634V6.4165Z\"\n })), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M4.66634 9.3335H2.33301V11.0835H4.66634V9.3335Z\"\n })), _path7 || (_path7 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8.16634 9.3335H5.83301V11.0835H8.16634V9.3335Z\"\n })), _path8 || (_path8 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M11.6663 6.4165H9.33301V8.1665H11.6663V6.4165Z\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgNewCalendarIcon);\nexport default __webpack_public_path__ + \"static/media/newCalendarIcon.56e1db4e.svg\";\nexport { ForwardRef as ReactComponent };","var _circle, _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgDatePickerPrevDateIcon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 27,\n height: 27,\n viewBox: \"0 0 27 27\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 13.5,\n cy: 13.5,\n r: 13.5,\n transform: \"matrix(-1 0 0 1 27 0)\",\n fill: \"#F3F3F3\"\n })), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10.2 13.4L15.6 8L17 9.4L13 13.4L17 17.4L15.6 18.8L10.2 13.4Z\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgDatePickerPrevDateIcon);\nexport default __webpack_public_path__ + \"static/media/DatePickerPrevDateIcon.1cf08a43.svg\";\nexport { ForwardRef as ReactComponent };","var _circle, _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgDatePickerNextDateIcon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 27,\n height: 27,\n viewBox: \"0 0 27 27\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 13.5,\n cy: 13.5,\n r: 13.5,\n fill: \"#F3F3F3\"\n })), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M16.8 13.4L11.4 8L10 9.4L14 13.4L10 17.4L11.4 18.8L16.8 13.4Z\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgDatePickerNextDateIcon);\nexport default __webpack_public_path__ + \"static/media/DatePickerNextDateIcon.d6ebbd4f.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgDatePickerCloseIcon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 10,\n height: 10,\n viewBox: \"0 0 10 10\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M9.78571 0.214286C9.5 -0.0714286 9.07143 -0.0714286 8.78572 0.214286L5 4L1.21429 0.214286C0.928571 -0.0714286 0.5 -0.0714286 0.214286 0.214286C-0.0714286 0.5 -0.0714286 0.928571 0.214286 1.21429L4 5L0.214286 8.78572C-0.0714286 9.07143 -0.0714286 9.5 0.214286 9.78571C0.357143 9.92857 0.5 10 0.714286 10C0.928571 10 1.07143 9.92857 1.21429 9.78571L5 6L8.78572 9.78571C8.92857 9.92857 9.14286 10 9.28571 10C9.42857 10 9.64286 9.92857 9.78571 9.78571C10.0714 9.5 10.0714 9.07143 9.78571 8.78572L6 5L9.78571 1.21429C10.0714 0.928571 10.0714 0.5 9.78571 0.214286Z\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgDatePickerCloseIcon);\nexport default __webpack_public_path__ + \"static/media/DatePickerCloseIcon.c5b20495.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgTimeSelectorArrowDown(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 12,\n height: 8,\n viewBox: \"0 0 12 8\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M6.2418 7.44844L0.841797 2.04844L2.2418 0.648438L6.2418 4.64844L10.2418 0.648438L11.6418 2.04844L6.2418 7.44844Z\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgTimeSelectorArrowDown);\nexport default __webpack_public_path__ + \"static/media/timeSelectorArrowDown.3249f0cc.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgTimeSelectorArrowUp(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 12,\n height: 8,\n viewBox: \"0 0 12 8\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M6.2416 0.64922L11.6416 6.04922L10.2416 7.44922L6.2416 3.44922L2.2416 7.44922L0.841602 6.04922L6.2416 0.64922Z\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgTimeSelectorArrowUp);\nexport default __webpack_public_path__ + \"static/media/timeSelectorArrowUp.8b70dbde.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2, _path3;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgDatePickerPopUpWarningIcon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12.001 22.3926C17.6964 22.3926 22.3135 17.7755 22.3135 12.0801C22.3135 6.38464 17.6964 1.76758 12.001 1.76758C6.30554 1.76758 1.68848 6.38464 1.68848 12.0801C1.68848 17.7755 6.30554 22.3926 12.001 22.3926Z\",\n stroke: \"#F6BB42\",\n strokeWidth: 2,\n strokeMiterlimit: 10,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12.001 10.0176V17.5801\",\n stroke: \"#F6BB42\",\n strokeWidth: 2,\n strokeMiterlimit: 10,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12.001 7.26758C12.5705 7.26758 13.0322 6.80587 13.0322 6.23633C13.0322 5.66678 12.5705 5.20508 12.001 5.20508C11.4314 5.20508 10.9697 5.66678 10.9697 6.23633C10.9697 6.80587 11.4314 7.26758 12.001 7.26758Z\",\n fill: \"#F6BB42\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgDatePickerPopUpWarningIcon);\nexport default __webpack_public_path__ + \"static/media/DatePickerPopUpWarningIcon.b29839a6.svg\";\nexport { ForwardRef as ReactComponent };","import { Backdrop, Box, ClickAwayListener, Fade, Modal } from '@material-ui/core';\r\nimport { globalColors } from 'globalStyle';\r\nimport React from 'react';\r\nimport styled from 'styled-components';\r\nimport { ReactComponent as ArrowDown } from '../../assets/icons/timeSelectorArrowDown.svg';\r\nimport { ReactComponent as ArrowUp } from '../../assets/icons/timeSelectorArrowUp.svg';\r\nimport { convertHourtFrom12To24Format } from 'helpers/timelineUtils';\r\nimport { convertTo12HourFormat } from 'helpers/conversions';\r\nconst TimeSelect = styled.div<{ isDisabled: boolean }>`\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n border-color: transparent;\r\n height: 28px;\r\n width: 115px;\r\n padding: 8px 12px;\r\n background: #ffffff;\r\n color: ${props =>\r\n props.isDisabled ? globalColors.regular.text.grey : globalColors.regular.text.primary};\r\n`;\r\n\r\nconst AMPMtogglerWrapper = styled.div<{ isDisabled: boolean }>`\r\n display: flex;\r\n font-weight: 400;\r\n font-size: 12px;\r\n line-height: 14px;\r\n cursor: pointer;\r\n opacity: ${props => (props.isDisabled ? 0.3 : 1)};\r\n`;\r\nconst AmPmValue = styled.div<{ selected: boolean }>`\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n width: 22px;\r\n height: 22px;\r\n background: ${props => (props.selected ? globalColors.regular.background.blue : 'transparent')};\r\n color: ${props =>\r\n props.selected ? globalColors.regular.text.white : globalColors.regular.text.grey};\r\n border-radius: 4px;\r\n`;\r\nconst TimeSelectRow = styled.div`\r\n margin-top: 12px;\r\n\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n width: 178px;\r\n`;\r\nconst TimeValue = styled.div``;\r\nconst ArrowWrapper = styled.div``;\r\n\r\nconst Wrapper = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n box-shadow: 8px 8px 8px rgba(0, 0, 0, 0.15);\r\n border-radius: 4px;\r\n width: 115px;\r\n height: 365px;\r\n background: #ffffff;\r\n padding: 6px 8px;\r\n gap: 10px;\r\n`;\r\nconst TimeRecordRow = styled.div<{ isSelected: boolean }>`\r\n cursor: pointer;\r\n display: flex;\r\n font-size: 14px;\r\n color: ${props =>\r\n props.isSelected ? globalColors.regular.text.blue : globalColors.regular.text.primary};\r\n`;\r\ntype TimeSelectorProps = any; // TODO: Add props type\r\n\r\nconst popUpStartTimeRowPositionStyle = {\r\n position: 'absolute' as 'absolute',\r\n top: 274,\r\n left: 629,\r\n};\r\nconst popUpEndTimeRowPositionStyle = {\r\n position: 'absolute' as 'absolute',\r\n top: 395,\r\n left: 629,\r\n};\r\n\r\nconst hoursArray = [\r\n { value: 0, hour: '12:00' },\r\n { value: 1, hour: '01:00' },\r\n { value: 2, hour: '02:00' },\r\n { value: 3, hour: '03:00' },\r\n { value: 4, hour: '04:00' },\r\n { value: 5, hour: '05:00' },\r\n { value: 6, hour: '06:00' },\r\n { value: 7, hour: '07:00' },\r\n { value: 8, hour: '08:00' },\r\n { value: 9, hour: '09:00' },\r\n { value: 10, hour: '10:00' },\r\n { value: 11, hour: '11:00' },\r\n];\r\n\r\nconst TimeSelector = (props: TimeSelectorProps) => {\r\n const {\r\n selectorName,\r\n isHourSelectionDisabled,\r\n value,\r\n timeModificator,\r\n onHourChange,\r\n onTimeModificatorClickHandler,\r\n activeReport,\r\n } = props;\r\n const [isOpen, setIsOpen] = React.useState(false);\r\n const hour = convertTo12HourFormat(value).split(' ')[0];\r\n const onClickHandler = () => {\r\n if (isHourSelectionDisabled) {\r\n return;\r\n }\r\n setIsOpen(true);\r\n };\r\n const onAmPmClickHandler = () => {\r\n if (isHourSelectionDisabled) {\r\n return;\r\n }\r\n onTimeModificatorClickHandler();\r\n };\r\n const onTimeRowClickHandler = (hour: number) => {\r\n onHourChange(hour);\r\n setIsOpen(false);\r\n };\r\n return (\r\n <>\r\n setIsOpen(false)}>\r\n <>\r\n \r\n \r\n {hour}\r\n \r\n {isOpen ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n AM\r\n \r\n \r\n PM\r\n \r\n \r\n \r\n {}}\r\n aria-labelledby=\"transition-modal-title\"\r\n aria-describedby=\"transition-modal-description\"\r\n closeAfterTransition\r\n BackdropProps={{\r\n timeout: 500,\r\n invisible: true,\r\n }}\r\n BackdropComponent={Backdrop}>\r\n \r\n setIsOpen(false)}>\r\n \r\n \r\n {hoursArray.map((item, index) => {\r\n const isSelected = item.value === value;\r\n return (\r\n onTimeRowClickHandler(item.value)}>\r\n {item.hour}\r\n \r\n );\r\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 TimeSelector;\r\n","import { Button } from '@material-ui/core';\r\nimport { globalColors } from 'globalStyle';\r\nimport styled from 'styled-components';\r\n\r\nexport const Wrapper = styled.div`\r\n display: flex;\r\n box-shadow: 8px 8px 8px rgba(0, 0, 0, 0.15);\r\n border-radius: 4px;\r\n`;\r\nexport const DatePickerWrapper = styled.div<{ height: number; width: number }>`\r\n display: flex;\r\n flex-direction: column;\r\n align-content: center;\r\n\r\n box-sizing: border-box;\r\n width: ${props => props.width}px;\r\n /* height: ${props => `${props.height}px`}; */\r\n padding: 28px;\r\n background: #fff;\r\n `;\r\nexport const CustomTimeFrameFormWrapper = styled.div<{ height: number }>`\r\n display: flex;\r\n flex-direction: column;\r\n align-content: center;\r\n box-sizing: border-box;\r\n width: 300px;\r\n /* height: ${props => props.height}px; */\r\n padding: 28px;\r\n background-color: #fff;\r\n `;\r\nexport const CustomTimeFrameForm = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n width: 254px;\r\n height: 300px;\r\n padding: 28px;\r\n\r\n background-color: #f8f8f8;\r\n`;\r\nexport const ButtonsRow = styled.div`\r\n display: flex;\r\n gap: 15px;\r\n margin-top: 25px;\r\n`;\r\nexport const ButtonCancel = styled(Button)`\r\n width: 125px;\r\n height: 42px;\r\n border: 1px solid ${globalColors.regular.background.blue};\r\n color: ${globalColors.regular.text.blue};\r\n font-family: 'Rubik';\r\n font-style: normal;\r\n font-weight: 400;\r\n font-size: 16px;\r\n line-height: 18px;\r\n`;\r\nexport const ButtonSubmit = styled(Button)`\r\n width: 125px;\r\n height: 42px;\r\n border: 1px solid ${globalColors.regular.background.blue};\r\n color: ${globalColors.regular.text.white};\r\n background-color: ${globalColors.regular.background.blue};\r\n font-family: 'Rubik';\r\n font-style: normal;\r\n font-weight: 400;\r\n font-size: 16px;\r\n line-height: 18px;\r\n`;\r\nexport const CustomTimeFrameDateTimeSelectionRow = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n box-sizing: border-box;\r\n height: 120px;\r\n margin-top: 5px;\r\n`;\r\nexport const FormLabel = styled.div`\r\n font-family: 'Rubik';\r\n font-style: normal;\r\n font-weight: 400;\r\n font-size: 12px;\r\n line-height: 14px;\r\n color: #000000;\r\n`;\r\n\r\nexport const PickDateButton = styled(Button)`\r\n height: 32px;\r\n width: 178px;\r\n justify-content: space-between;\r\n padding: 0 10px;\r\n background-color: #fff;\r\n\r\n font-weight: 400;\r\n font-size: 14px;\r\n line-height: 16px;\r\n color: #354052;\r\n`;\r\nexport const TimeSelectRow = styled.div`\r\n margin-top: 12px;\r\n\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n width: 178px;\r\n`;\r\n\r\nexport const TimeSelect = styled.select`\r\n border-color: transparent;\r\n height: 28px;\r\n width: 115px;\r\n`;\r\n\r\nexport const AMPMtogglerWrapper = styled.div<{ isDisabled: boolean }>`\r\n display: flex;\r\n font-weight: 400;\r\n font-size: 12px;\r\n line-height: 14px;\r\n cursor: pointer;\r\n opacity: ${props => (props.isDisabled ? 0.3 : 1)};\r\n`;\r\nexport const AmPmValue = styled.div<{ selected: boolean }>`\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n width: 22px;\r\n height: 22px;\r\n background: ${props => (props.selected ? globalColors.regular.background.blue : 'transparent')};\r\n color: ${props =>\r\n props.selected ? globalColors.regular.text.white : globalColors.regular.text.grey};\r\n border-radius: 4px;\r\n`;\r\nexport const YearSelector = styled.div`\r\n display: flex;\r\n justify-content: space-between;\r\n\r\n align-items: center;\r\n width: 100%;\r\n`;\r\nexport const MonthSelector = styled.div`\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n margin-top: 5px;\r\n width: 100%;\r\n`;\r\nexport const CalendarWrapper = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n box-sizing: border-box;\r\n width: 280px;\r\n min-height: 180px;\r\n`;\r\nexport const CalendarRow = styled.div`\r\n display: flex;\r\n width: 100%;\r\n min-height: 30px;\r\n border-radius: 20px;\r\n position: relative;\r\n`;\r\nexport const RowCell = styled.div`\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n width: 48px;\r\n min-height: 30px;\r\n font-weight: 400;\r\n font-size: 12px;\r\n line-height: 14px;\r\n color: #a4a4a4;\r\n position: relative;\r\n`;\r\nexport const RowCellHighlighted = styled.div`\r\n display: flex;\r\n position: absolute;\r\n width: 40px;\r\n height: 20px;\r\n background-color: #d6edff;\r\n opacity: 0.5;\r\n z-index: 5;\r\n`;\r\nexport const ValueWrapper = styled.div`\r\n font-weight: 400;\r\n font-size: 12px;\r\n line-height: 14px;\r\n color: #a4a4a4;\r\n`;\r\nexport const MonthTimeframeCalendar = styled.div`\r\n display: flex;\r\n justify-content: space-between;\r\n flex-wrap: wrap;\r\n width: 100%;\r\n`;\r\nexport const MonthButton = styled(Button)`\r\n font-weight: 400;\r\n font-size: 12px;\r\n line-height: 14px;\r\n width: 54px;\r\n height: 30px;\r\n margin-bottom: 5px;\r\n`;\r\nexport const QuarterTimeframeCalendar = styled.div`\r\n display: flex;\r\n justify-content: space-between;\r\n width: 100%;\r\n`;\r\nexport const QuarterButton = styled(Button)`\r\n font-weight: 400;\r\n font-size: 12px;\r\n line-height: 14px;\r\n width: 70px;\r\n height: 30px;\r\n margin-bottom: 5px;\r\n`;\r\nexport const YearTimeframeCalendar = styled.div`\r\n display: flex;\r\n justify-content: space-between;\r\n flex-wrap: wrap;\r\n width: 100%;\r\n`;\r\n\r\nexport const YearButton = styled(Button)`\r\n font-weight: 400;\r\n font-size: 12px;\r\n line-height: 14px;\r\n width: 50px;\r\n height: 30px;\r\n margin-bottom: 5px;\r\n`;\r\n\r\nexport const popUpstyle = {\r\n position: 'absolute' as 'absolute',\r\n top: 110,\r\n left: 225,\r\n};\r\n","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgDatePickerPopUpErrorIcon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 23,\n viewBox: \"0 0 24 23\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M23.7072 20.1472L13.2526 2.2722C13.1865 2.17407 13.0968 2.09359 12.9915 2.03792C12.8861 1.98225 12.7685 1.95313 12.6491 1.95312C12.5296 1.95312 12.412 1.98225 12.3067 2.03792C12.2014 2.09359 12.1116 2.17407 12.0455 2.2722L1.59093 20.1472C1.52976 20.2517 1.49756 20.3703 1.49756 20.4909C1.49756 20.6116 1.52976 20.7302 1.59093 20.8347C1.6521 20.9392 1.74008 21.026 1.84603 21.0863C1.95198 21.1467 2.07217 21.1785 2.19451 21.1785H23.1036C23.2259 21.1785 23.3461 21.1467 23.4521 21.0863C23.558 21.026 23.646 20.9392 23.7072 20.8347C23.7684 20.7302 23.8006 20.6116 23.8006 20.4909C23.8006 20.3703 23.7683 20.2517 23.7072 20.1472ZM13.8437 8.11595L13.346 14.991H11.9521L11.4544 8.11595H13.8437ZM12.6491 19.116C12.404 19.116 12.1644 19.0443 11.9606 18.9099C11.7568 18.7756 11.598 18.5847 11.5042 18.3614C11.4104 18.138 11.3858 17.8922 11.4337 17.6551C11.4815 17.418 11.5995 17.2002 11.7728 17.0292C11.9461 16.8583 12.1669 16.7419 12.4073 16.6947C12.6477 16.6475 12.8968 16.6717 13.1233 16.7643C13.3497 16.8568 13.5433 17.0134 13.6794 17.2145C13.8156 17.4155 13.8883 17.6518 13.8883 17.8936C13.8883 18.2178 13.7577 18.5287 13.5253 18.7579C13.2929 18.9872 12.9777 19.116 12.6491 19.116Z\",\n fill: \"#FF4081\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgDatePickerPopUpErrorIcon);\nexport default __webpack_public_path__ + \"static/media/DatePickerPopUpErrorIcon.e66cc7eb.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgDownloadIncConsupmtionPerJobIcon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 16,\n height: 16,\n viewBox: \"0 0 16 16\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M15.8563 5.83674L11.0563 2.08674C10.9978 2.04117 10.9267 2.01214 10.8513 2.00306C10.7759 1.99398 10.6993 2.00522 10.6304 2.03546C10.5616 2.0657 10.5034 2.1137 10.4626 2.17384C10.4217 2.23398 10.4001 2.30377 10.4 2.37504V4.32129C6.38516 5.1695 4 7.50922 4 10.625C4.00004 10.7141 4.03387 10.8002 4.09543 10.868C4.15699 10.9358 4.24227 10.9809 4.33603 10.9952C4.42978 11.0094 4.52589 10.992 4.60717 10.9459C4.68845 10.8998 4.7496 10.8281 4.77968 10.7437C5.4586 8.8327 8.14376 8.08527 10.4 8.0069V9.87503C10.4001 9.9463 10.4218 10.0161 10.4626 10.0762C10.5034 10.1363 10.5617 10.1843 10.6305 10.2145C10.6993 10.2448 10.7759 10.256 10.8513 10.2469C10.9267 10.2378 10.9978 10.2088 11.0563 10.1632L15.8563 6.41324C15.9013 6.37799 15.9375 6.33391 15.9623 6.28411C15.9871 6.23432 16 6.18001 16 6.12504C16 6.07006 15.9871 6.01576 15.9623 5.96596C15.9375 5.91616 15.9013 5.87208 15.8563 5.83683V5.83674Z\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M14.2105 11.0588C14.1068 11.0588 14.0042 11.0801 13.9084 11.1215C13.8126 11.1628 13.7255 11.2235 13.6522 11.3C13.5789 11.3764 13.5208 11.4672 13.4811 11.5672C13.4414 11.6671 13.421 11.7742 13.4211 11.8824V14.3529L1.57895 14.3529L1.57895 3.64706L4.73684 3.64706C4.94622 3.64706 5.14703 3.56029 5.29508 3.40585C5.44314 3.25141 5.52632 3.04194 5.52632 2.82353C5.52632 2.60512 5.44314 2.39565 5.29508 2.24121C5.14703 2.08676 4.94622 2 4.73684 2L0.789474 2C0.685791 1.99997 0.58312 2.02126 0.487325 2.06263C0.391529 2.10401 0.304488 2.16467 0.231174 2.24115C0.157859 2.31762 0.0997079 2.40842 0.0600424 2.50835C0.0203768 2.60827 -2.59057e-05 2.71537 2.46856e-08 2.82353L2.46856e-08 15.1765C-2.59057e-05 15.2846 0.0203768 15.3917 0.0600424 15.4917C0.0997079 15.5916 0.157859 15.6824 0.231174 15.7589C0.304488 15.8353 0.391529 15.896 0.487325 15.9374C0.58312 15.9787 0.685791 16 0.789474 16L14.2105 16C14.3142 16 14.4169 15.9787 14.5127 15.9374C14.6085 15.896 14.6955 15.8353 14.7688 15.7589C14.8421 15.6824 14.9003 15.5916 14.94 15.4917C14.9796 15.3917 15 15.2846 15 15.1765V11.8824C15 11.7742 14.9796 11.6671 14.94 11.5672C14.9003 11.4672 14.8421 11.3764 14.7688 11.3C14.6955 11.2235 14.6085 11.1628 14.5127 11.1215C14.4169 11.0801 14.3142 11.0588 14.2105 11.0588Z\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgDownloadIncConsupmtionPerJobIcon);\nexport default __webpack_public_path__ + \"static/media/DownloadIncConsupmtionPerJobIcon.9a4b6a37.svg\";\nexport { ForwardRef as ReactComponent };","import React from 'react';\r\nimport { ErrorMessageType } from './DatePickerPopUp';\r\nimport { CalendarRow } from './DatePickerPopUpStyles';\r\nimport { globalColors } from 'globalStyle';\r\nimport { ReactComponent as WarningIcon } from '../../assets/icons/DatePickerPopUpWarningIcon.svg';\r\nimport { ReactComponent as ErrorIcon } from '../../assets/icons/DatePickerPopUpErrorIcon.svg';\r\nimport styled from 'styled-components';\r\ntype PropsType = {\r\n error: ErrorMessageType;\r\n};\r\nconst Wrapper = styled.div`\r\n display: flex;\r\n align-items: center;\r\n widht: 100%;\r\n margin-top: 10px;\r\n font-size: 10px;\r\n height: 30px;\r\n`;\r\nconst IconWrapper = styled.div`\r\n display: flex;\r\n`;\r\nconst TextWrapper = styled.div<{ color: string }>`\r\n display: flex;\r\n margin-left: 10px;\r\n color: ${props => props.color};\r\n`;\r\nconst DatePickerPopUpErrorMessage = (props: PropsType) => {\r\n const { error } = props;\r\n const { payload, type } = error;\r\n const textColor = type === 'error' ? globalColors.regular.text.red : '#F6BB42';\r\n const icon = type === 'error' ? : ;\r\n\r\n return (\r\n \r\n {icon}\r\n {payload}\r\n \r\n );\r\n};\r\n\r\nexport default DatePickerPopUpErrorMessage;\r\n","import React, { useEffect, useState } from 'react';\r\nimport { Backdrop, Box, Fade, Modal, ClickAwayListener } from '@material-ui/core';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport { ReactComponent as PrevIcon } from '../../assets/icons/DatePickerPrevDateIcon.svg';\r\nimport { ReactComponent as NextIcon } from '../../assets/icons/DatePickerNextDateIcon.svg';\r\nimport { ReactComponent as CloseIcon } from '../../assets/icons/DatePickerCloseIcon.svg';\r\n\r\nimport {\r\n addDays,\r\n addMonths,\r\n addYears,\r\n eachDayOfInterval,\r\n eachHourOfInterval,\r\n eachMonthOfInterval,\r\n eachQuarterOfInterval,\r\n eachWeekOfInterval,\r\n eachYearOfInterval,\r\n endOfMonth,\r\n endOfWeek,\r\n endOfYear,\r\n format,\r\n getDate,\r\n getYear,\r\n isAfter,\r\n isBefore,\r\n isSameDay,\r\n isSameMonth,\r\n isSameQuarter,\r\n isSameYear,\r\n isWithinInterval,\r\n startOfMonth,\r\n startOfWeek,\r\n startOfYear,\r\n subMonths,\r\n subYears,\r\n} from 'date-fns';\r\nimport { globalColors } from 'globalStyle';\r\nimport { MainReportTypes, ReportTypesNew, TimeFrame, TimeFrameEnum } from 'models/ReportData';\r\nimport { CustomTimeFrameProperties } from 'actions/reportFilterActions';\r\nimport { TimeModidficatorEnum, TimeModificator } from 'store/storeTypes';\r\nimport TimeSelector from './TimeSelector';\r\nimport {\r\n ButtonCancel,\r\n ButtonSubmit,\r\n ButtonsRow,\r\n CalendarRow,\r\n CalendarWrapper,\r\n CustomTimeFrameDateTimeSelectionRow,\r\n CustomTimeFrameForm,\r\n CustomTimeFrameFormWrapper,\r\n DatePickerWrapper,\r\n FormLabel,\r\n MonthButton,\r\n MonthSelector,\r\n MonthTimeframeCalendar,\r\n PickDateButton,\r\n QuarterButton,\r\n QuarterTimeframeCalendar,\r\n RowCell,\r\n RowCellHighlighted,\r\n TimeSelectRow,\r\n ValueWrapper,\r\n Wrapper,\r\n YearButton,\r\n YearSelector,\r\n YearTimeframeCalendar,\r\n popUpstyle,\r\n} from './DatePickerPopUpStyles';\r\nimport DatePickerPopUpErrorMessage from './DatePickerPopUpErrorMessage';\r\nimport { KonnectAnalytics } from 'KonnectAnalytics/konnectAnalytics';\r\nexport type ErrorMessageType = {\r\n payload: string;\r\n type: 'warning' | 'error' | 'info' | '';\r\n};\r\n\r\ntype DatePickerPopUpPropsType = {\r\n date: Date;\r\n isDatePickerOpen: boolean;\r\n timeframe: TimeFrame;\r\n prevTimeframe: TimeFrame;\r\n lastUpdate: Date;\r\n selectedDate: Date;\r\n startDate: Date;\r\n customTimeframeProperties: CustomTimeFrameProperties;\r\n activeReport: ReportTypesNew;\r\n setActiveDate: (date: Date) => void;\r\n setIsCustomTimeFrameOpen: (isOpen: boolean) => void;\r\n setIsDatePickerOpen: (isOpen: boolean) => void;\r\n setTimeframe: (\r\n timeframe: TimeFrame,\r\n startDate?: Date,\r\n customTimeFrameProperties?: CustomTimeFrameProperties\r\n ) => void;\r\n};\r\nconst DatePickerPopUp = (props: DatePickerPopUpPropsType) => {\r\n const {\r\n date,\r\n isDatePickerOpen,\r\n timeframe,\r\n prevTimeframe,\r\n lastUpdate,\r\n selectedDate,\r\n startDate,\r\n activeReport,\r\n customTimeframeProperties,\r\n setActiveDate,\r\n setIsDatePickerOpen,\r\n setIsCustomTimeFrameOpen,\r\n setTimeframe,\r\n } = props;\r\n const [currentDate, setCurrentDate] = useState(new Date(selectedDate));\r\n const [selectedRange, setSelectedRange] = useState({ start: undefined, end: undefined });\r\n\r\n //*to keep calendar open always on range dedicated to selected date\r\n useEffect(() => {\r\n setCurrentDate(selectedDate);\r\n }, [selectedDate]);\r\n\r\n //*to keep arrows for year and month picker in proper state on first rended\r\n useEffect(() => {\r\n setIsPrevMonthDisabled(isSameMonth(currentDate, startDate) || isBefore(currentDate, startDate));\r\n setIsNextMonthDisabled(\r\n isSameMonth(currentDate, lastUpdate) || isAfter(currentDate, lastUpdate)\r\n );\r\n setIsNextYearDisabled(isSameYear(currentDate, lastUpdate));\r\n setIsPrevYearDisabled(isSameYear(currentDate, startDate));\r\n });\r\n useEffect(() => {\r\n if (timeframe === 'day') {\r\n setSelectedRange({\r\n start: selectedDate,\r\n end: selectedDate,\r\n });\r\n }\r\n if (timeframe === 'week') {\r\n const start = startOfWeek(selectedDate, { weekStartsOn: 1 });\r\n setSelectedRange({\r\n start,\r\n end: addDays(start, 6),\r\n });\r\n }\r\n }, [timeframe, selectedDate, customTimeframeProperties]);\r\n\r\n const [isPrevMonthDisabled, setIsPrevMonthDisabled] = useState(\r\n isSameMonth(currentDate, startDate)\r\n );\r\n const [isNextMonthDisabled, setIsNextMonthDisabled] = useState(\r\n isSameMonth(currentDate, lastUpdate)\r\n );\r\n const [isNextYearDisabled, setIsNextYearDisabled] = useState(isSameYear(currentDate, lastUpdate));\r\n const [isPrevYearDisabled, setIsPrevYearDisabled] = useState(isSameYear(currentDate, startDate));\r\n\r\n const onNextYearClickHandler = () => {\r\n if (isNextYearDisabled) return;\r\n if (isSameYear(currentDate, lastUpdate) && isSameMonth(currentDate, lastUpdate)) {\r\n setIsNextYearDisabled(true);\r\n } else {\r\n setIsPrevYearDisabled(false);\r\n setIsPrevMonthDisabled(false);\r\n\r\n const nextDate = addYears(currentDate, 1);\r\n if (isAfter(nextDate, lastUpdate)) {\r\n setCurrentDate(lastUpdate);\r\n setIsNextYearDisabled(true);\r\n setIsNextMonthDisabled(true);\r\n } else {\r\n setCurrentDate(nextDate);\r\n if (isSameYear(nextDate, lastUpdate)) {\r\n setIsNextYearDisabled(true);\r\n }\r\n }\r\n }\r\n };\r\n const onPrevYearClickHandler = () => {\r\n if (isPrevYearDisabled) return;\r\n if (isSameYear(currentDate, startDate) && isSameMonth(currentDate, startDate)) {\r\n setIsPrevYearDisabled(true);\r\n } else {\r\n setIsNextYearDisabled(false);\r\n setIsNextMonthDisabled(false);\r\n const nextDate = subYears(currentDate, 1);\r\n if (isBefore(nextDate, startDate)) {\r\n setCurrentDate(startDate);\r\n setIsPrevYearDisabled(true);\r\n setIsPrevMonthDisabled(true);\r\n } else {\r\n setCurrentDate(nextDate);\r\n if (isSameYear(nextDate, startDate)) {\r\n setIsPrevYearDisabled(true);\r\n }\r\n }\r\n }\r\n };\r\n const onPrevMonthClickHandler = () => {\r\n if (isPrevMonthDisabled) return;\r\n if (isSameMonth(currentDate, startDate)) {\r\n setIsPrevMonthDisabled(true);\r\n } else {\r\n const nextDate = subMonths(currentDate, 1);\r\n setCurrentDate(nextDate);\r\n setIsNextMonthDisabled(false);\r\n\r\n if (isSameMonth(nextDate, startDate)) {\r\n setIsPrevMonthDisabled(true);\r\n setIsPrevYearDisabled(true);\r\n }\r\n if (!isSameYear(nextDate, lastUpdate)) {\r\n setIsNextYearDisabled(false);\r\n }\r\n }\r\n };\r\n const onNextMonthClickHandler = () => {\r\n if (isNextMonthDisabled) return;\r\n if (isSameMonth(currentDate, lastUpdate)) {\r\n setIsNextMonthDisabled(true);\r\n } else {\r\n const nextDate = addMonths(currentDate, 1);\r\n setCurrentDate(nextDate);\r\n setIsPrevMonthDisabled(false);\r\n if (isSameMonth(nextDate, lastUpdate)) {\r\n setIsNextYearDisabled(true);\r\n setIsNextMonthDisabled(true);\r\n }\r\n if (isSameYear(nextDate, lastUpdate)) {\r\n setIsNextYearDisabled(true);\r\n }\r\n }\r\n };\r\n\r\n const onDateClickHandler = date => {\r\n if (timeframe !== 'year' && isInBetweenStartDateAndLastUpdate(date)) {\r\n return;\r\n } else {\r\n //*if timeframe is custom we are not supposed to set active date after date click, only after user select whole range and click on submit.\r\n //*if timeframe is not custom we direct set activeDate and close Picker;\r\n if (timeframe !== 'custom') {\r\n setActiveDate(date);\r\n setIsDatePickerOpen(false);\r\n } else {\r\n if (isFromButtonClicked) {\r\n let nextStartDate = date;\r\n if (endCustomDate && isBefore(endCustomDate, nextStartDate)) {\r\n {\r\n nextStartDate = new Date(endCustomDate);\r\n }\r\n }\r\n\r\n setStarCustomtDate(nextStartDate);\r\n setSelectedRange({\r\n start: nextStartDate,\r\n end: selectedRange.end,\r\n });\r\n KonnectAnalytics.changedDateinCustomTimeFrame({\r\n startDate: nextStartDate.toString(),\r\n endDate: selectedRange.end.toString(),\r\n customStartHour: startCustomHour,\r\n customEndHour: endCustomHour,\r\n });\r\n }\r\n if (isToButtonClicked) {\r\n let nextEndDate = date;\r\n if (startCustomDate && isAfter(startCustomDate, nextEndDate)) {\r\n nextEndDate = new Date(startCustomDate);\r\n }\r\n setSelectedRange({\r\n start: selectedRange.start,\r\n end: nextEndDate,\r\n });\r\n setEndCustomtDate(nextEndDate);\r\n KonnectAnalytics.changedDateinCustomTimeFrame({\r\n startDate: selectedRange.start.toString(),\r\n endDate: nextEndDate.toString(),\r\n customStartHour: startCustomHour,\r\n customEndHour: endCustomHour,\r\n });\r\n }\r\n }\r\n }\r\n };\r\n const weeks = eachWeekOfInterval(\r\n {\r\n start: startOfMonth(currentDate),\r\n end: endOfMonth(currentDate),\r\n },\r\n { weekStartsOn: 1 }\r\n );\r\n const isInBetweenStartDateAndLastUpdate = (date: Date) => {\r\n if (timeframe === 'quarter' || timeframe === 'month') {\r\n return (\r\n isAfter(date, lastUpdate) || (isBefore(date, startDate) && !isSameMonth(date, startDate))\r\n );\r\n } else {\r\n return isAfter(date, lastUpdate) || isBefore(date, startDate);\r\n }\r\n };\r\n const getPopUpHeight = timeframe => {\r\n switch (timeframe) {\r\n case 'custom':\r\n return 460;\r\n case 'year':\r\n return 130;\r\n case 'quarter':\r\n return 160;\r\n case 'month':\r\n return 200;\r\n\r\n default:\r\n return 365;\r\n }\r\n };\r\n const popUpHeight = getPopUpHeight(timeframe);\r\n\r\n //*this is block for custom timeframe selection only\r\n const [startCustomDate, setStarCustomtDate] = useState(\r\n customTimeframeProperties?.customTimeFrameStartDate\r\n );\r\n const [endCustomDate, setEndCustomtDate] = useState(\r\n customTimeframeProperties?.customTimeFrameEndDate\r\n );\r\n\r\n useEffect(() => {\r\n const getLastDateForPeriod = (lastUpdate, startDate, timeframe) => {\r\n if (timeframe === TimeFrameEnum.week) {\r\n const lastDayOfWeek = endOfWeek(startDate, { weekStartsOn: 1 });\r\n const result = isAfter(lastUpdate, lastDayOfWeek) ? lastDayOfWeek : lastUpdate;\r\n return result;\r\n } else {\r\n return startDate;\r\n }\r\n };\r\n\r\n if (timeframe === 'custom') {\r\n const start = currentDate;\r\n const end = getLastDateForPeriod(lastUpdate, start, prevTimeframe);\r\n if (!customTimeframeProperties?.customTimeFrameStartDate) {\r\n setStarCustomtDate(currentDate);\r\n setSelectedRange({ start: start, end: end });\r\n } else {\r\n setStarCustomtDate(customTimeframeProperties?.customTimeFrameStartDate);\r\n setSelectedRange({\r\n start: customTimeframeProperties?.customTimeFrameStartDate,\r\n // end: selectedRange.end,\r\n end: customTimeframeProperties.customTimeFrameEndDate,\r\n });\r\n }\r\n if (!customTimeframeProperties?.customTimeFrameEndDate) {\r\n setEndCustomtDate(end);\r\n setSelectedRange({ start: start, end: end });\r\n } else {\r\n setEndCustomtDate(customTimeframeProperties?.customTimeFrameEndDate);\r\n setSelectedRange({\r\n // start: selectedRange.start,\r\n start: customTimeframeProperties.customTimeFrameStartDate,\r\n end: customTimeframeProperties?.customTimeFrameEndDate,\r\n });\r\n }\r\n }\r\n }, [\r\n customTimeframeProperties?.customTimeFrameEndDate,\r\n customTimeframeProperties?.customTimeFrameStartDate,\r\n ]);\r\n\r\n const [isFromButtonClicked, setIsFromButtonClicked] = useState(true);\r\n const [isToButtonClicked, setIsToButtonClicked] = useState(false);\r\n const [timeIntervalErrorMessage, setTimeIntervalErrorMessage] = useState({\r\n payload: '',\r\n type: '',\r\n });\r\n const [isSubmitDisable, setIsSubmitDisabled] = useState(true);\r\n //*customTimeSelection is ability to select exact hour in custom timeframe.\r\n const [isCustomTimeSelectionDisabled, setIsCustomTimeSelectionDisabled] = useState(false);\r\n const [startCustomHour, setStartCustomHour] = useState(0);\r\n const [endCustomHour, setEndCustomHour] = useState(11);\r\n const [startTimeModificator, setStartTimeModificator] = useState(\r\n TimeModidficatorEnum.AM\r\n );\r\n const [endTimeModificator, setEndTimeModificator] = useState(\r\n TimeModidficatorEnum.PM\r\n );\r\n\r\n //*this useEffec uses only for disabling/enabling 'isCustomTimeSelectionDisabled'\r\n useEffect(() => {\r\n if (!startCustomDate || !endCustomDate) {\r\n setIsCustomTimeSelectionDisabled(false);\r\n setTimeIntervalErrorMessage({ payload: '', type: '' });\r\n } else {\r\n let start = startCustomDate || new Date();\r\n let end = endCustomDate || new Date();\r\n if (isAfter(start, end)) {\r\n end = start;\r\n }\r\n const interval = eachDayOfInterval({\r\n start: start,\r\n end: end,\r\n }).length;\r\n if (interval > 182) {\r\n //*if user selected more than half a year we need to1) disbale time selection, time modificator selectio, 2)set time and modificators to default state 3)and display worning message\r\n\r\n setIsCustomTimeSelectionDisabled(true);\r\n setStartCustomHour(0);\r\n setEndCustomHour(11);\r\n setStartTimeModificator('AM');\r\n setEndTimeModificator('PM');\r\n setTimeIntervalErrorMessage({\r\n payload:\r\n 'Date range of more than 6 months does not support hour range selection. Full days will be considered',\r\n type: 'warning',\r\n });\r\n setIsCustomTimeSelectionDisabled(true);\r\n } else {\r\n setIsCustomTimeSelectionDisabled(false);\r\n setTimeIntervalErrorMessage({ payload: '', type: '' });\r\n setIsCustomTimeSelectionDisabled(false);\r\n }\r\n }\r\n }, [startCustomDate, endCustomDate, activeReport]);\r\n\r\n useEffect(() => {\r\n //when Sumbit button is disabled -3 cases;1 when start and end date is not setted 2 if date range more than 365 days. 3 if isShiftmod selected and date range more than 2 days.\r\n if (!startCustomDate || !endCustomDate) {\r\n setIsSubmitDisabled(true);\r\n } else if (\r\n startCustomDate &&\r\n endCustomDate &&\r\n eachDayOfInterval({ start: startCustomDate, end: endCustomDate }).length > 365\r\n ) {\r\n setIsSubmitDisabled(true);\r\n setTimeIntervalErrorMessage({\r\n payload: 'Date range of more than 12 months is not supported',\r\n type: 'error',\r\n });\r\n } else {\r\n setIsSubmitDisabled(false);\r\n }\r\n }, [startCustomDate, endCustomDate, timeframe]);\r\n\r\n const onEndTimeModificatorClickHandler = () => {\r\n if (!isCustomTimeSelectionDisabled) {\r\n setEndTimeModificator(endTimeModificator === 'AM' ? 'PM' : 'AM');\r\n }\r\n };\r\n const onStartTimeModificatorClickHandler = () => {\r\n if (!isCustomTimeSelectionDisabled) {\r\n setStartTimeModificator(startTimeModificator === 'AM' ? 'PM' : 'AM');\r\n }\r\n };\r\n const onFromButtonClickHandler = () => {\r\n setIsToButtonClicked(false);\r\n setIsFromButtonClicked(true);\r\n };\r\n const onToButtonClickHandler = () => {\r\n setIsFromButtonClicked(false);\r\n setIsToButtonClicked(true);\r\n };\r\n const onFromClearIconClickHandler = () => {\r\n setIsToButtonClicked(false);\r\n setIsFromButtonClicked(true);\r\n setStarCustomtDate(undefined);\r\n setSelectedRange({\r\n start: undefined,\r\n end: selectedRange.end,\r\n });\r\n };\r\n const onToClearIconClickHandler = () => {\r\n setIsFromButtonClicked(false);\r\n setIsToButtonClicked(true);\r\n setEndCustomtDate(undefined);\r\n setSelectedRange({\r\n start: selectedRange.start,\r\n end: undefined,\r\n });\r\n };\r\n const onSubmitClickHandler = () => {\r\n setTimeframe('custom', startDate, {\r\n customTimeFrameStartDate: startCustomDate,\r\n customTimeFrameStartHour: startCustomHour,\r\n customTimeFrameEndDate: endCustomDate,\r\n customTimeFrameEndHour: endCustomHour,\r\n customEndTimeModificator: endTimeModificator,\r\n customStartTimeModificator: startTimeModificator,\r\n });\r\n setTimeIntervalErrorMessage({ payload: '', type: '' });\r\n setIsDatePickerOpen(false);\r\n setIsCustomTimeFrameOpen && setIsCustomTimeFrameOpen(false);\r\n KonnectAnalytics.submitCustomClick({\r\n startDate: startCustomDate.toString(),\r\n endDate: endCustomDate.toString(),\r\n customStartHour: startCustomHour,\r\n customEndHour: endCustomHour,\r\n });\r\n };\r\n const onStartHourChange = hour => {\r\n setStartCustomHour(hour);\r\n KonnectAnalytics.changedDateinCustomTimeFrame({\r\n startDate: selectedRange.start.toString(),\r\n endDate: selectedRange.end.toString(),\r\n customStartHour: hour,\r\n customEndHour: endCustomHour,\r\n });\r\n };\r\n const onEndHourChange = hour => {\r\n setEndCustomHour(hour);\r\n KonnectAnalytics.changedDateinCustomTimeFrame({\r\n startDate: selectedRange.start.toString(),\r\n endDate: selectedRange.end.toString(),\r\n customStartHour: startCustomHour,\r\n customEndHour: hour,\r\n });\r\n };\r\n\r\n useEffect(() => {\r\n //if dates are same -we check selected time and if From time greater than To time - need to disable submit and set Error message.\r\n //else remove error and ublock submit.\r\n const startHour24hFormat =\r\n startTimeModificator === 'AM' ? startCustomHour : startCustomHour + 12;\r\n const endHour24hFormat = endTimeModificator === 'AM' ? endCustomHour : endCustomHour + 12;\r\n const isFromTimeBiggerThanTo = startHour24hFormat > endHour24hFormat;\r\n if (\r\n startCustomDate &&\r\n endCustomDate &&\r\n isSameDay(startCustomDate, endCustomDate) &&\r\n isFromTimeBiggerThanTo\r\n ) {\r\n setIsSubmitDisabled(true);\r\n setTimeIntervalErrorMessage({\r\n payload: '\"From\" time value should not be greater than \"To\" time value if dates are same',\r\n type: 'warning',\r\n });\r\n } else if (\r\n startCustomDate &&\r\n endCustomDate &&\r\n isSameDay(startCustomDate, endCustomDate) &&\r\n !isFromTimeBiggerThanTo\r\n ) {\r\n setTimeIntervalErrorMessage({ payload: '', type: '' });\r\n setIsSubmitDisabled(false);\r\n }\r\n }, [\r\n startTimeModificator,\r\n endTimeModificator,\r\n startCustomDate,\r\n endCustomDate,\r\n startCustomHour,\r\n endCustomHour,\r\n ]);\r\n return (\r\n {}}\r\n aria-labelledby=\"transition-modal-title\"\r\n aria-describedby=\"transition-modal-description\"\r\n closeAfterTransition\r\n BackdropProps={{\r\n timeout: 500,\r\n invisible: true,\r\n }}\r\n BackdropComponent={Backdrop}>\r\n \r\n {\r\n setIsDatePickerOpen(false);\r\n setIsCustomTimeFrameOpen && setIsCustomTimeFrameOpen(false);\r\n }}>\r\n \r\n \r\n \r\n {timeframe !== 'year' && (\r\n \r\n \r\n \r\n \r\n {getYear(currentDate)}\r\n \r\n \r\n \r\n \r\n )}\r\n {(timeframe === 'day' || timeframe === 'week' || timeframe === 'custom') && (\r\n <>\r\n \r\n \r\n \r\n \r\n {format(currentDate, 'MMMM')}\r\n \r\n \r\n \r\n \r\n \r\n \r\n Mon\r\n Tue\r\n Wed\r\n Thu\r\n Fri\r\n Sat\r\n Sun\r\n \r\n {weeks.map((firstWeekDay, index, weeksArray) => {\r\n const days = eachDayOfInterval({\r\n start: startOfWeek(firstWeekDay, { weekStartsOn: 1 }),\r\n end: endOfWeek(firstWeekDay, { weekStartsOn: 1 }),\r\n });\r\n return (\r\n \r\n {days.map((day, index) => {\r\n const isSelectedRangeValue =\r\n isSameDay(selectedRange.start, day) ||\r\n isSameDay(selectedRange.end, day);\r\n const isOpacity =\r\n (!isSelectedRangeValue && isInBetweenStartDateAndLastUpdate(day)) ||\r\n !isSameMonth(day, currentDate);\r\n\r\n let start = selectedRange.start;\r\n let end = selectedRange.end;\r\n if (timeframe === 'week' && !start && !end) {\r\n start = selectedDate;\r\n end = addDays(selectedDate, 6);\r\n }\r\n const isMoreThanStartAndLessTnanEndForWeek =\r\n timeframe === 'week' &&\r\n isWithinInterval(day, {\r\n start: start || startDate,\r\n end: end || start || lastUpdate,\r\n });\r\n const isLeftBorder = isSameDay(selectedRange?.start, day);\r\n const isRightBorder = isSameDay(selectedRange?.end, day);\r\n\r\n let weekWidth = isSelectedRangeValue ? '30px' : '40px';\r\n\r\n //*custom timeframeHighLight\r\n const isFirstAndLastDaysOfSelectionAreSame = isSameDay(\r\n startCustomDate,\r\n endCustomDate\r\n );\r\n const isShowHighLightForCustomTimeFrame =\r\n timeframe === 'custom' &&\r\n startCustomDate &&\r\n endCustomDate &&\r\n !isFirstAndLastDaysOfSelectionAreSame;\r\n const isFirstDayOfSelection = isSameDay(day, startCustomDate);\r\n const isLastDayofSelection = isSameDay(day, endCustomDate);\r\n\r\n const isInSelectionInterval =\r\n isAfter(day, startCustomDate) && isBefore(day, endCustomDate);\r\n return (\r\n \r\n {isMoreThanStartAndLessTnanEndForWeek && timeframe === 'week' && (\r\n \r\n )}\r\n\r\n {isShowHighLightForCustomTimeFrame && (\r\n \r\n )}\r\n onDateClickHandler(day)}\r\n style={{\r\n width: 9,\r\n height: 9,\r\n fontSize: '12px',\r\n fontWeight: 'bolder',\r\n background:\r\n isSelectedRangeValue &&\r\n globalColors.regular.background.blue,\r\n\r\n zIndex: 10,\r\n }}>\r\n \r\n {getDate(day)}\r\n \r\n \r\n \r\n );\r\n })}\r\n \r\n );\r\n })}\r\n {timeIntervalErrorMessage.payload && (\r\n \r\n )}\r\n \r\n \r\n )}\r\n {timeframe === 'month' && (\r\n \r\n {eachMonthOfInterval({\r\n start: startOfYear(currentDate),\r\n end: endOfYear(currentDate),\r\n }).map(month => {\r\n const isSelectedMonth = isSameMonth(selectedDate, month);\r\n return (\r\n onDateClickHandler(month)}>\r\n {format(month, 'MMM')}\r\n \r\n );\r\n })}\r\n \r\n )}\r\n {timeframe === 'quarter' && (\r\n \r\n {eachQuarterOfInterval({\r\n start: startOfYear(currentDate),\r\n end: endOfYear(currentDate),\r\n }).map(quarter => {\r\n const isSelectedQuarter = isSameQuarter(selectedDate, quarter);\r\n return (\r\n {\r\n onDateClickHandler(quarter);\r\n }}\r\n style={{\r\n width: isSelectedQuarter ? '85px' : '70px',\r\n textTransform: 'none',\r\n border: isSelectedQuarter ? '1px solid #2EA1F8' : 'none',\r\n color: isSelectedQuarter ? globalColors.regular.text.blue : 'inherit',\r\n opacity: isInBetweenStartDateAndLastUpdate(quarter) ? 0.2 : 1,\r\n }}>{`Quarter ${format(quarter, 'q')}`}\r\n );\r\n })}\r\n \r\n )}\r\n {timeframe === 'year' && (\r\n \r\n {eachYearOfInterval({ start: startDate, end: lastUpdate }).map(year => {\r\n const isSelectedYear = isSameYear(selectedDate, year);\r\n\r\n return (\r\n {\r\n onDateClickHandler(year);\r\n }}\r\n style={{\r\n border: isSelectedYear ? '1px solid #2EA1F8' : 'none',\r\n color: isSelectedYear ? globalColors.regular.text.blue : 'inherit',\r\n }}>\r\n {format(year, 'yyyy')}\r\n \r\n );\r\n })}\r\n \r\n )}\r\n \r\n {timeframe === 'custom' && (\r\n \r\n \r\n \r\n From\r\n {\r\n event.stopPropagation();\r\n onFromClearIconClickHandler();\r\n }}>\r\n \r\n \r\n )\r\n }>\r\n {startCustomDate\r\n ? `${format(startCustomDate, 'd')} ${format(\r\n startCustomDate,\r\n 'MMM'\r\n )} ${format(startCustomDate, 'yyyy')}`\r\n : 'Select a date'}\r\n \r\n {activeReport !== MainReportTypes.Jobs && (\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n To\r\n {\r\n event.stopPropagation();\r\n onToClearIconClickHandler();\r\n }}>\r\n \r\n \r\n )\r\n }>\r\n {endCustomDate\r\n ? `${format(endCustomDate, 'd')} ${format(endCustomDate, 'MMM')} ${format(\r\n endCustomDate,\r\n 'yyyy'\r\n )}`\r\n : 'Select a date'}\r\n \r\n {activeReport !== MainReportTypes.Jobs && (\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n \r\n {\r\n setIsCustomTimeFrameOpen && setIsCustomTimeFrameOpen(false);\r\n setIsDatePickerOpen(false);\r\n }}\r\n style={{ textTransform: 'none' }}\r\n variant=\"outlined\">\r\n Close\r\n \r\n \r\n Submit\r\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 DatePickerPopUp;\r\n","import React, { useEffect, useState } from 'react';\r\nimport styled from 'styled-components';\r\nimport Button from '@material-ui/core/Button';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport { addDays, format, startOfWeek } from 'date-fns';\r\n\r\nimport { globalColors } from 'globalStyle';\r\nimport { ReactComponent as BackArrowIcon } from '../../assets/icons/prevDateIcon.svg';\r\nimport { ReactComponent as NextArrowIcon } from '../../assets/icons/nextDateIcon.svg';\r\nimport { ReactComponent as NewCalendarIcon } from '../../assets/icons/newCalendarIcon.svg';\r\nimport DatePickerPopUp from './DatePickerPopUp';\r\nimport { MainReportTypes, ReportTypesNew, TimeFrame } from 'models/ReportData';\r\nimport { CustomTimeFrameProperties } from 'actions/reportFilterActions';\r\nimport { KonnectAnalytics } from 'KonnectAnalytics/konnectAnalytics';\r\nimport { convertTo12HourFormat } from 'helpers/conversions';\r\nconst StyledButton = styled(Button)`\r\n margin: 0 15px;\r\n font-family: 'Rubik';\r\n font-style: normal;\r\n font-weight: 400;\r\n font-size: 12px;\r\n line-height: 14px;\r\n min-width: 220px;\r\n height: 30px;\r\n\r\n &:hover {\r\n color: ${globalColors.regular.text.primary};\r\n }\r\n`;\r\nconst ArrowWrapper = styled.div<{ isDisable: boolean }>`\r\n display: flex;\r\n place-content: center;\r\n width: 30px;\r\n height: 30px;\r\n border-radius: 4px;\r\n border:1px solid ${props =>\r\n props.isDisable\r\n ? globalColors.regular.buttons.disableBorder\r\n : globalColors.regular.buttons.regularBorder}; };\r\n opacity: ${props => (props.isDisable ? 0.5 : 1)};\r\n`;\r\ntype NewDatePickerPropsType = {\r\n onHandleLeft: () => void;\r\n onHandleRight: () => void;\r\n setActiveDate: (date: Date) => void;\r\n setIsCustomTimeFrameOpen?: (isOpen: boolean) => void;\r\n setTimeframe?: (\r\n timeframe: TimeFrame,\r\n startDate?: Date,\r\n customTimeFrameProperties?: CustomTimeFrameProperties\r\n ) => void;\r\n disableLeft: boolean;\r\n disableRight: boolean;\r\n date: Date;\r\n timeframe: TimeFrame;\r\n prevTimeframe?: TimeFrame;\r\n lastUpdate: Date;\r\n selectedDate: Date;\r\n startDate: Date;\r\n customTimeframeProperties?: CustomTimeFrameProperties;\r\n activeReport: ReportTypesNew;\r\n};\r\nconst NewDatePicker = (props: NewDatePickerPropsType) => {\r\n const {\r\n onHandleLeft,\r\n onHandleRight,\r\n disableLeft,\r\n disableRight,\r\n date,\r\n timeframe,\r\n prevTimeframe,\r\n lastUpdate,\r\n selectedDate,\r\n startDate,\r\n customTimeframeProperties,\r\n setActiveDate,\r\n activeReport,\r\n setIsCustomTimeFrameOpen,\r\n setTimeframe,\r\n } = props;\r\n\r\n const [isDatePickerOpen, setIsDatePickerOpen] = useState(false);\r\n\r\n useEffect(() => {\r\n if (timeframe === 'custom') {\r\n //*on this step timeframe of app still not custom - but the reason of timeframe === custom is that we call this component with hardcoded value of timeframe.\r\n //*and only after user click on OK button we need to call setTimeframe with parameter 'custom'\r\n setIsDatePickerOpen(true);\r\n KonnectAnalytics.toggleDatePickerCalendar();\r\n }\r\n }, []);\r\n\r\n const [isHovered, setIsHovered] = useState(false);\r\n\r\n const getDateStringForCustomTimeframe = (\r\n customTimeframeProperties: CustomTimeFrameProperties,\r\n timeframe: TimeFrame\r\n ) => {\r\n if (\r\n !customTimeframeProperties.customTimeFrameStartDate ||\r\n !customTimeframeProperties.customTimeFrameEndDate\r\n ) {\r\n return 'Custom Calendar';\r\n } else {\r\n const startDate = customTimeframeProperties.customTimeFrameStartDate;\r\n const endDate = customTimeframeProperties.customTimeFrameEndDate;\r\n return `${format(startDate, 'd')} ${format(startDate, 'MMM')}, ${format(\r\n startDate,\r\n 'yyyy'\r\n )}, ${convertTo12HourFormat(customTimeframeProperties.customTimeFrameStartHour)} - ${format(\r\n endDate,\r\n 'd'\r\n )} ${format(endDate, 'MMM')}, ${format(endDate, 'yyyy')}, ${convertTo12HourFormat(\r\n customTimeframeProperties.customTimeFrameEndHour\r\n )}`;\r\n }\r\n };\r\n const getDateString = timeframe => {\r\n switch (timeframe) {\r\n case 'day':\r\n return `${format(date, 'd')} ${format(date, 'MMM')}, ${format(date, 'yyyy')}`;\r\n\r\n case 'week':\r\n const start = startOfWeek(date, { weekStartsOn: 1 });\r\n const endOfWeek = addDays(start, 6);\r\n return `${format(start, 'd')}-${format(endOfWeek, 'd')} ${format(\r\n endOfWeek,\r\n 'MMM'\r\n )}, ${format(endOfWeek, 'yyyy')}`;\r\n case 'month':\r\n return `${format(date, 'MMM')},${format(date, 'yyyy')}`;\r\n case 'quarter':\r\n return `${format(date, `QQQ`)},${format(date, 'yyyy')}`;\r\n case 'year':\r\n return `${format(date, 'yyyy')}`;\r\n case 'custom':\r\n return getDateStringForCustomTimeframe(customTimeframeProperties, timeframe);\r\n default:\r\n return `${format(date, 'd')} ${format(date, 'MMM')}, ${format(date, 'yyyy')}`;\r\n }\r\n };\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n\r\n setIsHovered(true)}\r\n onMouseLeave={() => {\r\n setIsHovered(false);\r\n }}\r\n style={{\r\n textTransform: 'none',\r\n color: isDatePickerOpen\r\n ? globalColors.regular.buttons.whiteText\r\n : globalColors.regular.buttons.regularText,\r\n backgroundColor: isDatePickerOpen ? globalColors.regular.background.blue : 'transparent',\r\n border: isDatePickerOpen\r\n ? globalColors.regular.background.blue\r\n : `1px solid ${globalColors.regular.buttons.regularBorder}`,\r\n whiteSpace: 'nowrap',\r\n padding: '0 10px',\r\n }}\r\n startIcon={\r\n \r\n }\r\n disabled={false}\r\n onClick={() => {\r\n setIsDatePickerOpen(!isDatePickerOpen);\r\n KonnectAnalytics.toggleDatePickerCalendar();\r\n }}>\r\n {getDateString(timeframe)}\r\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 NewDatePicker;\r\n","import React, { useMemo } from 'react';\r\nimport styled from 'styled-components/macro';\r\nimport { PbiFilterWeeksProps } from './PbiFilterWeeksContainer';\r\nimport DateWeekPicker from '../_common/DateWeekPicker';\r\nimport FilterArrows from '../_common/FilterArrows';\r\nimport { generateDatesForPeriod, getWeekForDate, isSameDay } from '../../helpers/date';\r\nimport { add, addWeeks, startOfWeek, subWeeks, isSameYear, endOfWeek } from 'date-fns';\r\nimport DateWeekPickerMobile from 'components/_common/DateWeekPickerMobile';\r\nimport NewDatePicker from './NewDatePicker';\r\n\r\nconst Desktop = styled.div`\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n width: 100%;\r\n input {\r\n cursor: pointer;\r\n }\r\n @media (max-width: 750px) {\r\n display: none;\r\n }\r\n`;\r\n\r\nconst WeeksContainer = styled.div`\r\n flex-grow: 1;\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n div::before {\r\n border-bottom: none !important;\r\n }\r\n div::after {\r\n border-bottom: none;\r\n }\r\n input {\r\n font-weight: 400;\r\n font-size: 16px;\r\n color: #354052;\r\n }\r\n @media (max-width: 600px) {\r\n margin-right: 0;\r\n }\r\n`;\r\n\r\nconst PbiFilterWeeks = React.memo((props: PbiFilterWeeksProps) => {\r\n const {\r\n activeReport,\r\n startDate,\r\n endDate,\r\n selectedDate,\r\n isMobile,\r\n screenWidth,\r\n setActiveDate,\r\n closeCalendarModal,\r\n } = props;\r\n const weekStartDates = useMemo(\r\n () =>\r\n generateDatesForPeriod(startDate, endDate, addWeeks, (date: Date) =>\r\n startOfWeek(date, { weekStartsOn: 1 })\r\n ),\r\n [startDate, endDate]\r\n );\r\n\r\n const handleChange = (d: Date) => {\r\n const cloneDate = new Date(d.getTime());\r\n const i = weekStartDates.findIndex(weekStartDay => {\r\n return isSameDay(startOfWeek(cloneDate, { weekStartsOn: 1 }), weekStartDay);\r\n });\r\n i >= 0 && setActiveDate(d);\r\n };\r\n const handleMobileChange = (d: Date) => {\r\n const cloneDate = new Date(d.getTime());\r\n const i = weekStartDates.findIndex(weekStartDay => {\r\n return isSameDay(startOfWeek(cloneDate, { weekStartsOn: 1 }), weekStartDay);\r\n });\r\n i >= 0 && setActiveDate(d);\r\n closeCalendarModal();\r\n };\r\n\r\n const getActiveWeek = () => {\r\n const endWeekDay = add(selectedDate, { days: 7 });\r\n const result = getWeekForDate(selectedDate).title;\r\n if (!isSameYear(selectedDate, endWeekDay)) {\r\n const [leftPart, rightPart] = result.split(',');\r\n const incrementedYear = Number(rightPart) + 1;\r\n return `${leftPart} , ${incrementedYear}`;\r\n }\r\n return result;\r\n };\r\n\r\n const onHandleLeft = () => {\r\n if (!disableLeft) {\r\n setActiveDate(subWeeks(selectedDate, 1));\r\n }\r\n };\r\n\r\n const onHandleRight = () => {\r\n if (!disableRight) {\r\n setActiveDate(addWeeks(selectedDate, 1));\r\n }\r\n };\r\n\r\n const renderPicker = (variant: 'dialog' | 'inline' | 'static') => {\r\n return (\r\n \r\n );\r\n };\r\n const renderPickerMobile = (variant: 'dialog' | 'inline' | 'static') => {\r\n return (\r\n \r\n );\r\n };\r\n // const dateTitle = formatWeekTitle(weeks[activeWeekIndex]);\r\n const disableLeft =\r\n weekStartDates && startOfWeek(selectedDate, { weekStartsOn: 1 }) <= weekStartDates[0];\r\n const disableRight =\r\n weekStartDates &&\r\n endOfWeek(selectedDate, { weekStartsOn: 1 }) >= weekStartDates[weekStartDates.length - 1];\r\n if (!isMobile) {\r\n return (\r\n \r\n );\r\n } else {\r\n return (\r\n <>\r\n {isMobile ? (\r\n <> {renderPickerMobile('static')}\r\n ) : (\r\n \r\n \r\n {renderPicker('inline')}\r\n \r\n \r\n \r\n )}\r\n \r\n );\r\n }\r\n});\r\n\r\nexport default PbiFilterWeeks;\r\n","import { connect } from 'react-redux';\r\nimport { bindActionCreators, Dispatch } from 'redux';\r\n\r\nimport { Store } from 'store/storeTypes';\r\nimport PbiFilterWeeks from './PbiFilterWeeks';\r\nimport { setActiveDate } from 'actions/reportFilterActions';\r\nimport { screenWidthSelector } from 'reducers/appUserReducer';\r\nimport {\r\n activeReportSelector,\r\n endDateSelector,\r\n startDateSelector,\r\n} from 'reducers/reports/filterDataReducer';\r\nimport { selectedDateSelector } from 'reducers/reports/filterStateReducer';\r\ntype OwnProps = {\r\n isMobile?: boolean;\r\n closeCalendarModal?: () => void;\r\n};\r\nconst mapStateToProps = (state: Store) => {\r\n return {\r\n startDate: startDateSelector(state),\r\n endDate: endDateSelector(state),\r\n selectedDate: selectedDateSelector(state),\r\n screenWidth: screenWidthSelector(state),\r\n activeReport: activeReportSelector(state),\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch: Dispatch) => bindActionCreators({ setActiveDate }, dispatch);\r\n\r\nexport type PbiFilterWeeksProps = ReturnType &\r\n ReturnType &\r\n OwnProps;\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(PbiFilterWeeks);\r\n","import React from 'react';\r\nimport { MobileDatePickerProps, Wrapper } from './MobileDatePicker';\r\nimport PbiFilterWeeks from '../PbiFilter/PbiFilterWeeksContainer';\r\n\r\nconst MobileWeekPicker = (props: MobileDatePickerProps) => {\r\n const { startDate, endDate, selectedDay, setActiveDate, closeCalendarModal } = props;\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default MobileWeekPicker;\r\n","import React, { useMemo } from 'react';\r\nimport styled from 'styled-components/macro';\r\nimport { isSameDay, startOfMonth, eachYearOfInterval, isAfter, isBefore } from 'date-fns';\r\nimport { PbiFilterMonthsProps } from './PbiFilterMonthsContainer';\r\nimport { addMonths, isSameMonth, subMonths } from 'date-fns';\r\nimport { generateDatesForPeriod, getMonthForDate } from 'helpers/date';\r\nimport NewDatePicker from './NewDatePicker';\r\n\r\nconst MobileMonthItem = styled.div`\r\n margin-top: 20px;\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n justify-content: center;\r\n width: 100%;\r\n`;\r\n\r\nconst MobileMonthItemHeader = styled.div`\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n font-family: 'Rubik';\r\n font-style: normal;\r\n font-weight: 500;\r\n font-size: 16px;\r\n line-height: 18px;\r\n color: #1878ba;\r\n margin-bottom: 25px;\r\n`;\r\n\r\nconst MobileMonthItemBody = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n justify-content: center;\r\n align-items: center;\r\n width: 100%;\r\n`;\r\nconst MobileMonthItemBodyRow = styled.div`\r\n display: flex;\r\n justify-content: space-around;\r\n align-items: center;\r\n width: 100%;\r\n`;\r\nconst MobileMonthItemBodyRowItem = styled.div<{ isActive: boolean; isDisabled: boolean }>`\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n width: 63px;\r\n height: 34px;\r\n background: ${props => (props.isActive ? '#2ea1f8' : 'transparent')};\r\n border-radius: 30px;\r\n font-family: 'Rubik';\r\n font-style: normal;\r\n font-weight: 400;\r\n font-size: 16px;\r\n line-height: 18px;\r\n color: ${props => (props.isActive ? '#ffffff' : props.isDisabled ? '#C5D0DE' : '354052')};\r\n`;\r\nconst EmptyBlock = styled.div`\r\n display: flex;\r\n height: 70px;\r\n min-height: 70px;\r\n`;\r\nconst PbiFilterMonths = React.memo((props: PbiFilterMonthsProps) => {\r\n const {\r\n selectedDate,\r\n startDate,\r\n endDate,\r\n isMobile,\r\n activeReport,\r\n closeCalendarModal,\r\n setActiveDate,\r\n } = props;\r\n\r\n const monthStartDates = useMemo(\r\n () => generateDatesForPeriod(startDate, endDate, addMonths, startOfMonth),\r\n [startDate, endDate]\r\n );\r\n const handleChange = (d: Date) => {\r\n const i = monthStartDates.findIndex(monthStartDate =>\r\n isSameDay(startOfMonth(d), monthStartDate)\r\n );\r\n i >= 0 && setActiveDate(d);\r\n };\r\n const disableLeft = selectedDate <= monthStartDates[0];\r\n const disableRight = selectedDate >= monthStartDates[monthStartDates.length - 1];\r\n const getActiveMonth = () => getMonthForDate(selectedDate).title;\r\n\r\n const onHandleLeft = () => {\r\n if (!disableLeft) {\r\n setActiveDate(subMonths(selectedDate, 1));\r\n }\r\n };\r\n\r\n const onHandleRight = () => {\r\n if (!disableRight) {\r\n setActiveDate(addMonths(selectedDate, 1));\r\n }\r\n };\r\n\r\n if (!isMobile) {\r\n return (\r\n <>\r\n \r\n \r\n );\r\n } else {\r\n const years = eachYearOfInterval({ start: startDate, end: endDate });\r\n return (\r\n <>\r\n {years.map((year, index) => {\r\n return ;\r\n })}\r\n \r\n \r\n );\r\n }\r\n});\r\n\r\nexport default PbiFilterMonths;\r\n\r\nconst MonthsItemCalendarComponent = (props: PbiFilterMonthsProps & { year: Date }) => {\r\n const {\r\n selectedDate,\r\n startDate,\r\n endDate,\r\n isMobile,\r\n year,\r\n closeCalendarModal,\r\n setActiveDate,\r\n } = props;\r\n const yearName = year.getFullYear();\r\n const handleMobileChange = (month: Date, isDisabled: boolean) => {\r\n if (isDisabled) {\r\n return;\r\n }\r\n setActiveDate(startOfMonth(month));\r\n closeCalendarModal();\r\n };\r\n const firstRow = ['JAN', 'FEB', 'MAR', 'APR'];\r\n const secondRow = ['MAY', 'JUN', 'JUL', 'AUG'];\r\n const thirdRow = ['SEP', 'OKT', 'NOV', 'DEC'];\r\n return (\r\n \r\n {yearName}\r\n \r\n \r\n {firstRow.map((month, index) => {\r\n const monthIndexOffset = 0;\r\n const currentMonth = new Date(yearName, index + monthIndexOffset, 1);\r\n const isActive = isSameMonth(selectedDate.getTime(), currentMonth);\r\n const isDisabled = isAfter(currentMonth, endDate) || isBefore(currentMonth, startDate);\r\n return (\r\n handleMobileChange(currentMonth, isDisabled)}\r\n key={year + month}\r\n isDisabled={isDisabled}\r\n isActive={isActive}>\r\n {month}\r\n \r\n );\r\n })}\r\n \r\n \r\n {secondRow.map((month, index) => {\r\n const monthIndexOffset = 4;\r\n const currentMonth = new Date(yearName, index + monthIndexOffset, 1);\r\n const isActive = isSameMonth(selectedDate.getTime(), currentMonth);\r\n const isDisabled = isAfter(currentMonth, endDate) || isBefore(currentMonth, startDate);\r\n return (\r\n handleMobileChange(currentMonth, isDisabled)}\r\n key={year + month}\r\n isActive={isActive}\r\n isDisabled={isDisabled}>\r\n {month}\r\n \r\n );\r\n })}\r\n \r\n \r\n {thirdRow.map((month, index) => {\r\n const monthIndexOffset = 8;\r\n const currentMonth = new Date(yearName, index + monthIndexOffset, 1);\r\n const isActive = isSameMonth(selectedDate.getTime(), currentMonth);\r\n const isDisabled = isAfter(currentMonth, endDate) || isBefore(currentMonth, startDate);\r\n return (\r\n handleMobileChange(currentMonth, isDisabled)}\r\n key={year + month}\r\n isActive={isActive}\r\n isDisabled={isDisabled}>\r\n {month}\r\n \r\n );\r\n })}\r\n \r\n \r\n \r\n );\r\n};\r\n","import { connect } from 'react-redux';\r\nimport { bindActionCreators, Dispatch } from 'redux';\r\n\r\nimport { Store } from 'store/storeTypes';\r\nimport PbiFilterMonths from './PbiFilterMonths';\r\nimport { setActiveDate } from 'actions/reportFilterActions';\r\nimport { activeReportSelector } from 'reducers/reports/filterDataReducer';\r\ntype OwnProps = {\r\n mode?: string;\r\n isMobile?: boolean;\r\n closeCalendarModal?: () => void;\r\n};\r\nconst mapStateToProps = (state: Store) => {\r\n const { selectedDate } = state.reports.filterState[state.ui.selectedSystemGroup]!;\r\n const { startDate, endDate } = state.reports.filterData[state.ui.selectedSystemGroup]!;\r\n return {\r\n selectedDate,\r\n startDate,\r\n endDate,\r\n activeReport: activeReportSelector(state),\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch: Dispatch) => bindActionCreators({ setActiveDate }, dispatch);\r\n\r\nexport type PbiFilterMonthsProps = ReturnType &\r\n ReturnType &\r\n OwnProps;\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(PbiFilterMonths);\r\n","import PbiFilterMonths from 'components/PbiFilter/PbiFilterMonths';\r\nimport PbiFilterMonthsContainer from 'components/PbiFilter/PbiFilterMonthsContainer';\r\nimport React from 'react';\r\nimport { MobileDatePickerProps, Wrapper } from './MobileDatePicker';\r\n\r\nconst MobileMonthPicker = (props: MobileDatePickerProps) => {\r\n const { startDate, endDate, selectedDay, setActiveDate, closeCalendarModal } = props;\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\nexport default MobileMonthPicker;\r\n","import React, { Fragment, useMemo } from 'react';\r\nimport styled from 'styled-components/macro';\r\nimport Select from '../_common/Select';\r\nimport { PbiFilterQuartersProps } from './PbiFilterQuartersContainer';\r\nimport FilterArrows from '../_common/FilterArrows';\r\nimport cn from 'classnames';\r\nimport {\r\n generateDatesForPeriod,\r\n getQuarterForDate,\r\n getYearForDate,\r\n startOfQuarter,\r\n} from 'helpers/date';\r\nimport { addQuarters, isSameDay, startOfYear, subQuarters } from 'date-fns';\r\nimport NewDatePicker from './NewDatePicker';\r\n\r\nconst MobileQuarterItem = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n width: 100%;\r\n height: 90px;\r\n margin: 12px 0;\r\n`;\r\nconst MobileQuarterItemHeader = styled.div`\r\n display: flex;\r\n justify-content: center;\r\n font-family: 'Rubik';\r\n font-style: normal;\r\n font-weight: 400;\r\n font-size: 24px;\r\n line-height: 36px;\r\n color: #1878ba;\r\n`;\r\nconst MobileQuarterItemBody = styled.div`\r\n margin-top: 18px;\r\n display: flex;\r\n justify-content: space-around;\r\n width: 100%;\r\n`;\r\nconst MobileQuarterItemBodyItem = styled.div<{ isSelected: boolean }>`\r\n display: flex;\r\n width: 59px;\r\n height: 34px;\r\n border-radius: 30px;\r\n justify-content: center;\r\n align-items: center;\r\n background-color: ${props => (props.isSelected ? '#2ea1f8' : 'transparent')};\r\n color: ${props => (props.isSelected ? '#FFFFFF' : '#354052')};\r\n`;\r\nconst EmptyLastBlock = styled.div`\r\n display: flex;\r\n width: 100%;\r\n min-height: 250px;\r\n`;\r\nconst PbiFilterQuarters = React.memo((props: PbiFilterQuartersProps) => {\r\n const {\r\n startDate,\r\n endDate,\r\n selectedDate,\r\n isMobile,\r\n activeReport,\r\n closeCalendarModal,\r\n setActiveDate,\r\n } = props;\r\n\r\n const quarters = useMemo(\r\n () => generateDatesForPeriod(startDate, endDate, addQuarters, startOfQuarter),\r\n [startDate, endDate]\r\n );\r\n\r\n const reversedData = [...quarters].reverse();\r\n\r\n const onChange = (e: React.BaseSyntheticEvent) => {\r\n const value = e.target.value || e.target.getAttribute('data-value');\r\n if (value) {\r\n const startQuarterDate = quarters.find(q => getQuarterForDate(q).title === value);\r\n setActiveDate(startQuarterDate);\r\n }\r\n };\r\n\r\n const onHandleLeft = () => {\r\n if (!disableLeft) {\r\n setActiveDate(subQuarters(selectedDate, 1));\r\n }\r\n };\r\n\r\n const onHandleRight = () => {\r\n if (!disableRight) {\r\n setActiveDate(addQuarters(selectedDate, 1));\r\n }\r\n };\r\n\r\n const mapStructure = (arr: string[]) =>\r\n arr.reduce((acc, str, index) => {\r\n const year = str.split(',')[1];\r\n acc[year] = !acc[year] ? [str] : [...acc[year], str];\r\n return acc;\r\n }, {});\r\n //*quarter name is always in format: 'Q1, 2019'\r\n const getStartQuarterByQuarterName = quarter => {\r\n const [quarterName, yearString] = quarter.split(',');\r\n const year = +yearString.slice(1);\r\n const [_, quearterNumber] = quarterName.split('');\r\n const startYear = new Date(year, 0, 1);\r\n const quertersToAdd = quearterNumber - 1;\r\n return addQuarters(startYear, quertersToAdd);\r\n };\r\n const onMobileQuarterClickHandler = quarter => {\r\n const selectedQuarter = getStartQuarterByQuarterName(quarter);\r\n setActiveDate(selectedQuarter);\r\n closeCalendarModal();\r\n };\r\n const dateTitle = getQuarterForDate(selectedDate).title;\r\n\r\n const disableRight = selectedDate >= quarters[quarters.length - 1];\r\n const disableLeft = selectedDate <= quarters[0];\r\n if (isMobile) {\r\n const mapQuarters = mapStructure(quarters.map(q => getQuarterForDate(q).title));\r\n const quartersKeys = Object.keys(mapQuarters);\r\n return (\r\n <>\r\n {quartersKeys.map((year, index) => {\r\n const currentQuarters = mapQuarters[year];\r\n return (\r\n \r\n {year}\r\n \r\n {currentQuarters.map((q, index) => {\r\n const [quarterName, _] = q.split(',');\r\n const currentSelectedDate = selectedDate;\r\n const startSelectedQuarter = getStartQuarterByQuarterName(q);\r\n const isSelected = isSameDay(currentSelectedDate, startSelectedQuarter);\r\n return (\r\n onMobileQuarterClickHandler(q)}>\r\n {quarterName}\r\n \r\n );\r\n })}\r\n \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\nexport default PbiFilterQuarters;\r\n","import { connect } from 'react-redux';\r\nimport { bindActionCreators, Dispatch } from 'redux';\r\nimport { setActiveDate } from 'actions/reportFilterActions';\r\n\r\nimport { Store } from 'store/storeTypes';\r\nimport PbiFilterQuarters from './PbiFilterQuarters';\r\nimport { activeReportSelector } from 'reducers/reports/filterDataReducer';\r\ntype OwnProps = {\r\n isMobile?: boolean;\r\n closeCalendarModal?: () => void;\r\n};\r\nconst mapStateToProps = (state: Store) => {\r\n const { startDate, endDate } = state.reports.filterData[state.ui.selectedSystemGroup]!;\r\n const { selectedDate } = state.reports.filterState[state.ui.selectedSystemGroup]!;\r\n return {\r\n startDate,\r\n endDate,\r\n selectedDate,\r\n activeReport: activeReportSelector(state),\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch: Dispatch) => bindActionCreators({ setActiveDate }, dispatch);\r\n\r\nexport type PbiFilterQuartersProps = ReturnType &\r\n ReturnType &\r\n OwnProps;\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(PbiFilterQuarters);\r\n","import React from 'react';\r\nimport { MobileDatePickerProps, Wrapper } from './MobileDatePicker';\r\nimport PbiFilterQuarters from '../PbiFilter/PbiFilterQuartersContainer';\r\n\r\nconst MobileQuarterPicker = (props: MobileDatePickerProps) => {\r\n const { closeCalendarModal } = props;\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\nexport default MobileQuarterPicker;\r\n","import React, { useMemo } from 'react';\r\nimport styled from 'styled-components/macro';\r\nimport { isSameDay, startOfYear, addYears } from 'date-fns';\r\nimport { PbiFilterYearsProps } from './PbiFilterYearsContainer';\r\nimport { generateDatesForPeriod, getYearForDate } from 'helpers/date';\r\nimport { subYears } from 'date-fns';\r\nimport NewDatePicker from './NewDatePicker';\r\n\r\nconst EmptyBlock = styled.div`\r\n display: flex;\r\n width: 100%;\r\n min-height: 110px;\r\n`;\r\nconst YearItem = styled.div<{ isActive: boolean }>`\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n margin-bottom: 20px;\r\n width: 97px;\r\n height: 40px;\r\n border-radius: 30px;\r\n font-family: 'Rubik';\r\n font-style: normal;\r\n font-weight: 400;\r\n font-size: 24px;\r\n line-height: 36px;\r\n color: ${props => (props.isActive ? '#FFFFFF' : '#354052')};\r\n background-color: ${props => (props.isActive ? '#2EA1F8' : 'transparent')};\r\n`;\r\n\r\nconst PbiFilterYears = React.memo((props: PbiFilterYearsProps) => {\r\n const {\r\n startDate,\r\n endDate,\r\n selectedDate,\r\n isMobile,\r\n activeReport,\r\n closeCalendarModal,\r\n setActiveDate,\r\n } = props;\r\n\r\n const yearStartDates = useMemo(\r\n () => generateDatesForPeriod(startDate, endDate, addYears, startOfYear),\r\n [startDate, endDate]\r\n );\r\n const handleChange = (d: Date) => {\r\n const i = yearStartDates.findIndex(yearStartDate => isSameDay(startOfYear(d), yearStartDate));\r\n i >= 0 && setActiveDate(d);\r\n };\r\n const handleMobileChange = selectedYear => {\r\n setActiveDate(new Date(selectedYear, 0, 1));\r\n closeCalendarModal();\r\n };\r\n const disableLeft = selectedDate.getFullYear() <= yearStartDates[0].getFullYear();\r\n const disableRight =\r\n selectedDate.getFullYear() >= yearStartDates[yearStartDates.length - 1].getFullYear();\r\n const onHandleLeft = () => {\r\n if (!disableLeft) {\r\n setActiveDate(subYears(selectedDate, 1));\r\n }\r\n };\r\n const onHandleRight = () => {\r\n if (!disableRight) {\r\n setActiveDate(addYears(selectedDate, 1));\r\n }\r\n };\r\n\r\n if (isMobile) {\r\n return (\r\n <>\r\n {yearStartDates.map((date, index) => {\r\n const yearName = date.getFullYear();\r\n const isActive = date.getFullYear() === selectedDate.getFullYear();\r\n\r\n return (\r\n handleMobileChange(yearName)}>\r\n {String(yearName).toUpperCase()}\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\nexport default PbiFilterYears;\r\n","import { connect } from 'react-redux';\r\nimport { bindActionCreators, Dispatch } from 'redux';\r\n\r\nimport { Store } from 'store/storeTypes';\r\nimport PbiFilterYears from './PbiFilterYears';\r\nimport { setActiveDate } from 'actions/reportFilterActions';\r\nimport { activeReportSelector } from 'reducers/reports/filterDataReducer';\r\ntype OwnProps = {\r\n isMobile?: boolean;\r\n closeCalendarModal?: () => void;\r\n};\r\nconst mapStateToProps = (state: Store) => {\r\n const { startDate, endDate } = state.reports.filterData[state.ui.selectedSystemGroup]!;\r\n const { selectedDate } = state.reports.filterState[state.ui.selectedSystemGroup]!;\r\n return {\r\n startDate,\r\n endDate,\r\n selectedDate,\r\n activeReport: activeReportSelector(state),\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch: Dispatch) => bindActionCreators({ setActiveDate }, dispatch);\r\n\r\nexport type PbiFilterYearsProps = ReturnType &\r\n ReturnType &\r\n OwnProps;\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(PbiFilterYears);\r\n","import React from 'react';\r\nimport { MobileDatePickerProps, Wrapper } from './MobileDatePicker';\r\nimport PbiFilterYears from '../PbiFilter/PbiFilterYearsContainer';\r\n\r\nconst MobileYearPicker = (props: MobileDatePickerProps) => {\r\n const { closeCalendarModal } = props;\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\nexport default MobileYearPicker;\r\n","import React from 'react';\r\nimport { TimeFrame } from 'models/ReportData';\r\nimport MobileDayPicker from './MobileDayPicker';\r\nimport MobileWeekPicker from './MobileWeekPicker';\r\nimport styled from 'styled-components';\r\nimport { createMuiTheme } from '@material-ui/core/styles';\r\nimport appTheme from '../../theme';\r\nimport { appearanceEffect } from 'globalStyle';\r\nimport MobileMonthPicker from './MobileMonthPicker';\r\nimport MobileQuarterPicker from './MobileQuarterPicker';\r\nimport MobileYearPicker from './MobileYearPicker';\r\n\r\nexport const activeTheme = (theme: {\r\n breakpoints: { only: (string: string) => string | number | symbol };\r\n}) =>\r\n createMuiTheme({\r\n ...appTheme,\r\n overrides: {\r\n MuiPickersStaticWrapper: {\r\n staticWrapperRoot: {\r\n width: '100%',\r\n },\r\n },\r\n MuiPickersBasePicker: {\r\n pickerView: {\r\n maxWidth: '600px',\r\n alignItems: 'stretch;',\r\n padding: '0 20px',\r\n },\r\n },\r\n MuiPickersCalendar: {\r\n week: {\r\n justifyContent: 'center',\r\n },\r\n },\r\n MuiPickersCalendarHeader: {\r\n daysHeader: { justifyContent: 'center' },\r\n },\r\n MuiPickersDay: {\r\n daySelected: {\r\n color: 'white',\r\n },\r\n },\r\n MuiTypography: {\r\n alignCenter: {\r\n fontFamily: 'Rubik',\r\n fontStyle: 'normal',\r\n fontWeight: 'bold',\r\n fontSize: '16px',\r\n lineHeight: '18px',\r\n textTransform: 'uppercase',\r\n color: '#1878BA',\r\n },\r\n },\r\n },\r\n });\r\n\r\nexport const Wrapper = styled.div`\r\n width: 100%;\r\n height: 500px;\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n overflow-y: auto;\r\n padding-bottom: 40px;\r\n animation-name: ${appearanceEffect};\r\n animation-duration: 500ms;\r\n`;\r\nexport const PickerWrapper = styled.div`\r\n height: 300px;\r\n width: 100%;\r\n`;\r\nexport type MobileDatePickerProps = {\r\n timeframe?: TimeFrame;\r\n startDate?: Date;\r\n endDate?: Date;\r\n selectedDay?: Date;\r\n setActiveDate?: (props: Date) => void;\r\n closeCalendarModal?: () => void;\r\n};\r\n\r\nconst MobileDatePicker = (props: MobileDatePickerProps) => {\r\n const {\r\n timeframe = 'day',\r\n startDate,\r\n endDate,\r\n selectedDay,\r\n setActiveDate,\r\n closeCalendarModal,\r\n } = props;\r\n if (timeframe === 'day') {\r\n return (\r\n \r\n );\r\n }\r\n if (timeframe === 'week') {\r\n return ;\r\n }\r\n if (timeframe === 'month') {\r\n return ;\r\n }\r\n if (timeframe === 'quarter') {\r\n return ;\r\n }\r\n if (timeframe === 'year') {\r\n return ;\r\n }\r\n};\r\nexport default MobileDatePicker;\r\n","import React from 'react';\r\nimport styled from 'styled-components/macro';\r\nimport { useTranslation } from 'react-i18next';\r\nimport DateFnsUtils from '@date-io/date-fns';\r\nimport format from 'date-fns/format';\r\nimport enLocale from 'date-fns/locale/en-US';\r\nimport { DatePicker } from '@material-ui/pickers/DatePicker';\r\nimport { DatePickerProps } from '@material-ui/pickers';\r\nimport { MuiPickersUtilsProvider } from '@material-ui/pickers/MuiPickersUtilsProvider';\r\nimport FormHelperText from '@material-ui/core/FormHelperText';\r\nimport createMuiTheme from '@material-ui/core/styles/createMuiTheme';\r\nimport { createMuiTheme as createCustomTheme } from '@material-ui/core';\r\n\r\nimport { MuiThemeProvider } from '@material-ui/core/styles';\r\nimport { getWeekStartEnv } from 'helpers/envGetters';\r\nimport { ValidationError } from 'helpers/validationRules';\r\nimport appTheme from '../../theme';\r\nimport { MaterialUiPickersDate } from '@material-ui/pickers/typings/date';\r\nimport { activeTheme } from 'components/FiltersCalendarModal/MobileDatePicker';\r\n\r\nconst FORMAT_DATE = 'MMMM dd, yyyy';\r\nconst WEEK_DAYS = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'];\r\nconst WEEK_START = getWeekStartEnv();\r\n\r\nexport class LocalizedUtils extends DateFnsUtils {\r\n getWeekdays = () => {\r\n return WEEK_DAYS;\r\n };\r\n\r\n getCalendarHeaderText = (date: Date) => {\r\n return format(date, FORMAT_DATE, { locale: this.locale });\r\n };\r\n}\r\n\r\nconst Picker = styled(DatePicker)`\r\n width: 100%;\r\n justify-content: center;\r\n\r\n input,\r\n label {\r\n font-family: Rubik, sans-serif;\r\n }\r\n\r\n input {\r\n font-size: 14px;\r\n color: #354052;\r\n }\r\n`;\r\nconst MobilePicker = styled(DatePicker)`\r\n display: flex;\r\n width: 100%;\r\n justify-content: center;\r\n align-items: flex-start;\r\n\r\n input,\r\n label {\r\n font-family: Rubik, sans-serif;\r\n }\r\n\r\n input {\r\n font-size: 14px;\r\n color: #354052;\r\n }\r\n`;\r\nconst PickerIknConsumtion = styled(DatePicker)`\r\n width: 100%;\r\n justify-content: center;\r\n\r\n input,\r\n label {\r\n font-family: Rubik, sans-serif;\r\n }\r\n\r\n input {\r\n font-size: 14px;\r\n color: #354052;\r\n }\r\n`;\r\nconst theme = (theme: { breakpoints: { only: (string: string) => string | number | symbol } }) =>\r\n createMuiTheme({\r\n ...appTheme,\r\n\r\n overrides: {\r\n MuiPickersStaticWrapper: {\r\n staticWrapperRoot: {\r\n [theme.breakpoints.only('xs')]: {\r\n minWidth: 'auto',\r\n padding: '25px 0',\r\n borderBottom: '1px solid #C5D0DE',\r\n },\r\n },\r\n },\r\n MuiPickersBasePicker: {\r\n pickerView: {\r\n [theme.breakpoints.only('xs')]: {\r\n maxWidth: '100%',\r\n minWidth: 'auto',\r\n minHeight: 'auto',\r\n justifyContent: 'flex-start',\r\n },\r\n },\r\n },\r\n MuiPickersCalendar: {\r\n transitionContainer: {\r\n [theme.breakpoints.only('xs')]: {},\r\n },\r\n week: {\r\n [theme.breakpoints.only('xs')]: {\r\n display: 'grid',\r\n gridTemplateColumns: 'repeat(auto-fit, minmax(30px, 1fr))',\r\n },\r\n },\r\n },\r\n MuiPickersToolbar: {\r\n toolbar: {},\r\n },\r\n MuiPickersCalendarHeader: {\r\n dayLabel: {\r\n width: '32px',\r\n margin: '0 3px',\r\n },\r\n iconButton: {\r\n [theme.breakpoints.only('xs')]: {\r\n padding: 0,\r\n borderRadius: '4px',\r\n border: '1px solid black',\r\n '&:disabled': {\r\n borderColor: 'rgba(0, 0, 0, 0.26)',\r\n },\r\n },\r\n },\r\n\r\n switchHeader: {\r\n [theme.breakpoints.only('xs')]: {\r\n display: 'none',\r\n },\r\n },\r\n daysHeader: {\r\n [theme.breakpoints.only('xs')]: {\r\n display: 'grid',\r\n gridTemplateColumns: 'repeat(auto-fit, minmax(30px, 1fr))',\r\n },\r\n },\r\n },\r\n MuiPickersYearSelection: {\r\n container: {\r\n [theme.breakpoints.only('xs')]: {\r\n height: 'auto',\r\n width: '100%',\r\n display: 'grid',\r\n gridGap: '10px',\r\n gridTemplateColumns: 'repeat(auto-fill, minmax(60px, 1fr))',\r\n },\r\n },\r\n },\r\n MuiPickersYear: {\r\n root: {\r\n [theme.breakpoints.only('xs')]: {\r\n color: '#354052',\r\n height: '60px',\r\n width: '60px',\r\n border: '1px solid #C5D0DE',\r\n borderRadius: '4px',\r\n fontStyle: 'normal',\r\n fontWeight: 'normal',\r\n fontSize: '14px',\r\n lineHeight: '19px',\r\n '&:focus': {\r\n color: 'white',\r\n },\r\n },\r\n },\r\n yearSelected: {\r\n [theme.breakpoints.only('xs')]: {\r\n margin: 0,\r\n backgroundColor: '#2EA1F8',\r\n color: 'white',\r\n fontWeight: 'bold',\r\n fontSize: '14px',\r\n lineHeight: '19px',\r\n },\r\n },\r\n yearDisabled: {},\r\n // current: {},\r\n },\r\n MuiPickersMonthSelection: {\r\n container: {\r\n [theme.breakpoints.only('xs')]: {\r\n width: '100%',\r\n display: 'grid',\r\n flexWrap: 'initial',\r\n alignContent: 'initial',\r\n gridGap: '10px',\r\n gridTemplateColumns: 'repeat(auto-fill, minmax(60px, 1fr))',\r\n },\r\n },\r\n },\r\n MuiPickersMonth: {\r\n root: {\r\n [theme.breakpoints.only('xs')]: {\r\n color: '#354052',\r\n height: '60px',\r\n width: '60px',\r\n border: '1px solid #C5D0DE',\r\n borderRadius: '4px',\r\n fontStyle: 'normal',\r\n fontWeight: 'normal',\r\n fontSize: '14px',\r\n lineHeight: '19px',\r\n '&:focus': {\r\n color: 'white',\r\n },\r\n },\r\n },\r\n monthSelected: {\r\n [theme.breakpoints.only('xs')]: {\r\n backgroundColor: '#2EA1F8',\r\n color: 'white',\r\n fontWeight: 'bold',\r\n fontSize: '14px',\r\n lineHeight: '19px',\r\n },\r\n },\r\n monthDisabled: {},\r\n },\r\n MuiPickersDay: {\r\n day: {\r\n [theme.breakpoints.only('xs')]: {\r\n width: '58px',\r\n height: '48px',\r\n margin: '0 3px',\r\n borderRadius: '4px',\r\n },\r\n },\r\n current: {},\r\n daySelected: {\r\n color: 'white',\r\n },\r\n dayDisabled: {},\r\n },\r\n MuiPickersModal: {\r\n // root: {},\r\n // dialogAction: {},\r\n },\r\n MuiInput: {\r\n underline: {\r\n height: '29px',\r\n '&:before': { borderBottomColor: 'rgb(197, 208, 222)' },\r\n // '&:after': { borderBottomColor: 'rgb(32, 112, 173)' },\r\n '&:after': { borderBottomColor: 'rgb(32, 112, 173)' },\r\n },\r\n },\r\n MuiFormLabel: {\r\n root: {\r\n color: '#7f8fa4',\r\n '&:focus': { color: '#7f8fa4' },\r\n },\r\n },\r\n MuiFormHelperText: {\r\n root: {\r\n position: 'absolute',\r\n bottom: '-8px',\r\n fontSize: '10px',\r\n whiteSpace: 'nowrap',\r\n opacity: 0.5,\r\n },\r\n },\r\n },\r\n });\r\n\r\ninterface FilterDatePickerProps\r\n extends Pick> {\r\n error?: ValidationError | false;\r\n noHelper?: boolean;\r\n variant?: 'dialog' | 'inline' | 'static';\r\n openTo?: 'year' | 'month' | 'date';\r\n disableToolbar?: boolean;\r\n fullWidth?: boolean;\r\n parentComponent?: string;\r\n isMobile?: boolean;\r\n labelFunc?: (date: MaterialUiPickersDate, invalidLabel: string) => string;\r\n onChange: (d?: Date) => void | Record;\r\n closeCalendarModal?: () => void;\r\n}\r\n\r\nconst FilterDatePicker = React.memo((props: FilterDatePickerProps) => {\r\n const { t } = useTranslation();\r\n const {\r\n id,\r\n error,\r\n noHelper,\r\n variant,\r\n openTo,\r\n disableToolbar = true,\r\n labelFunc,\r\n onChange,\r\n closeCalendarModal,\r\n minDate,\r\n maxDate,\r\n parentComponent,\r\n isMobile,\r\n ...rest\r\n } = props;\r\n\r\n const renderPickerByParentComponenet = (parentComponent: string) => {\r\n if (!parentComponent) {\r\n return (\r\n \r\n );\r\n }\r\n\r\n if (parentComponent === 'mobileFilterWeeks') {\r\n return (\r\n \r\n );\r\n }\r\n if (parentComponent === 'mobileFilterMonth') {\r\n return (\r\n \r\n );\r\n }\r\n };\r\n const getTheme = (parentComponent: string) => {\r\n if (!parentComponent) {\r\n return theme;\r\n }\r\n\r\n if (parentComponent === 'mobileFilterWeeks') {\r\n return activeTheme;\r\n }\r\n if (parentComponent === 'mobileFilterMonth') {\r\n return activeTheme;\r\n }\r\n };\r\n const currentTheme = getTheme(parentComponent);\r\n return (\r\n \r\n \r\n {renderPickerByParentComponenet(parentComponent)}\r\n \r\n\r\n {!noHelper && {error && t(error.key, error.values)}}\r\n \r\n );\r\n});\r\n\r\nexport default FilterDatePicker;\r\n","import React from 'react';\r\nimport styled from 'styled-components/macro';\r\nimport { subDays, addDays, isSameDay } from 'date-fns';\r\nimport FilterDatePicker from '../_common/FilterDatePicker';\r\nimport FilterArrows from 'components/_common/FilterArrows';\r\nimport { PbiFilterDaysProps } from './PbiFilterDaysContainer';\r\nimport { getDayForDate } from 'helpers/date';\r\nimport { MainReportTypes, ReportTypesNew } from 'models/ReportData';\r\n\r\nimport { KonnectAnalytics } from 'KonnectAnalytics/konnectAnalytics';\r\nimport NewDatePicker from './NewDatePicker';\r\n\r\nconst DaysContainer = styled.div`\r\n flex-grow: 1;\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n div::before {\r\n border-bottom: none !important;\r\n }\r\n div::after {\r\n border-bottom: none;\r\n }\r\n input {\r\n font-weight: 400;\r\n font-size: 16px;\r\n color: #354052;\r\n }\r\n @media (max-width: 600px) {\r\n margin-right: 0;\r\n }\r\n`;\r\n\r\nconst MobileView = styled.div`\r\n display: none;\r\n @media (max-width: 750px) {\r\n display: block;\r\n width: 100%;\r\n }\r\n`;\r\n\r\nconst PbiFilterDays = React.memo((props: PbiFilterDaysProps) => {\r\n const { lastUpdate, selectedDate, startDate, activeReport, isMobile, setActiveDate } = props;\r\n\r\n const [lowerDate, setLowerDate] = React.useState(null);\r\n const onChangeActiveDay = (d: Date | undefined) => {\r\n setActiveDate(d);\r\n };\r\n\r\n React.useEffect(() => {\r\n if (lowerDate) setActiveDate(lowerDate);\r\n }, [lowerDate]); // eslint-disable-line react-hooks/exhaustive-deps\r\n const renderPicker = (variant: 'dialog' | 'inline' | 'static', activeReport?: ReportTypesNew) => {\r\n const lower = !!selectedDate && !!lastUpdate && lastUpdate < selectedDate ? lastUpdate : null;\r\n if (lower && !lowerDate && lowerDate !== lower) setLowerDate(lower);\r\n\r\n return (\r\n \r\n );\r\n };\r\n\r\n const today = new Date();\r\n today.setHours(0, 0, 0, 0);\r\n const disableRight =\r\n !selectedDate ||\r\n (lastUpdate && isSameDay(selectedDate, lastUpdate)) ||\r\n false ||\r\n (!!lastUpdate && lastUpdate < selectedDate) ||\r\n (!lastUpdate && today < selectedDate);\r\n\r\n const disableLeft = selectedDate <= startDate;\r\n\r\n const onHandleLeft = () => {\r\n if (!disableLeft) {\r\n setActiveDate(subDays(selectedDate || lastUpdate || new Date(), 1));\r\n KonnectAnalytics.decrementDateInDatePicker();\r\n }\r\n };\r\n\r\n const onHandleRight = () => {\r\n if (!disableRight) {\r\n setActiveDate(addDays(selectedDate || lastUpdate || new Date(), 1));\r\n KonnectAnalytics.incrementDateInDatePicker();\r\n }\r\n };\r\n\r\n if (!isMobile) {\r\n const date = lowerDate || selectedDate || lastUpdate;\r\n return (\r\n \r\n );\r\n } else {\r\n return (\r\n \r\n \r\n \r\n {renderPicker('static')}\r\n \r\n \r\n );\r\n }\r\n});\r\n\r\nexport default PbiFilterDays;\r\n","import { connect } from 'react-redux';\r\nimport { bindActionCreators, Dispatch } from 'redux';\r\n\r\nimport { Store } from 'store/storeTypes';\r\nimport PbiFilterDays from './PbiFilterDays';\r\nimport { setActiveDate } from 'actions/reportFilterActions';\r\nimport {\r\n activeReportSelector,\r\n endDateSelector,\r\n startDateSelector,\r\n} from 'reducers/reports/filterDataReducer';\r\nimport { printerStartDateSelector, pritnterEndDateSelector } from 'reducers/systemAnalysisReducer';\r\nimport { isBefore } from 'date-fns';\r\nimport { selectedDateSelector } from 'reducers/reports/filterStateReducer';\r\ntype OwnProps = {\r\n isMobile?: boolean;\r\n};\r\nconst mapStateToProps = (state: Store) => {\r\n return {\r\n lastUpdate: endDateSelector(state),\r\n startDate: startDateSelector(state),\r\n selectedDate: selectedDateSelector(state),\r\n activeReport: activeReportSelector(state),\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch: Dispatch) =>\r\n bindActionCreators(\r\n {\r\n setActiveDate,\r\n },\r\n dispatch\r\n );\r\n\r\nexport type PbiFilterDaysProps = ReturnType &\r\n ReturnType &\r\n OwnProps;\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(PbiFilterDays);\r\n","import React from 'react';\r\nimport styled from 'styled-components/macro';\r\nimport {\r\n subDays,\r\n addDays,\r\n isSameDay,\r\n format,\r\n eachDayOfInterval,\r\n isBefore,\r\n isAfter,\r\n} from 'date-fns';\r\nimport FilterDatePicker from '../_common/FilterDatePicker';\r\nimport FilterArrows from 'components/_common/FilterArrows';\r\nimport { PbiFilterDaysProps } from './PbiFilterDaysContainer';\r\nimport { getDayForDate } from 'helpers/date';\r\nimport { MainReportTypes, ReportTypesNew, SubReportTypes, TimeFrame } from 'models/ReportData';\r\nimport { KonnectAnalytics } from 'KonnectAnalytics/konnectAnalytics';\r\nimport NewDatePicker from './NewDatePicker';\r\nimport { CustomTimeFrameProperties } from '../../actions/reportFilterActions';\r\nconst DaysContainer = styled.div`\r\n flex-grow: 1;\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n div::before {\r\n border-bottom: none !important;\r\n }\r\n div::after {\r\n border-bottom: none;\r\n }\r\n input {\r\n font-weight: 400;\r\n font-size: 16px;\r\n color: #354052;\r\n }\r\n @media (max-width: 600px) {\r\n margin-right: 0;\r\n }\r\n`;\r\n\r\nconst MobileView = styled.div`\r\n display: none;\r\n @media (max-width: 750px) {\r\n display: block;\r\n width: 100%;\r\n }\r\n`;\r\n\r\nexport type CustomTimeframeProperties = {\r\n isShiftModeSelected: boolean;\r\n customTimeFrameStartDate: Date;\r\n customTimeFrameStartHour: number;\r\n customTimeFrameEndDate: Date;\r\n customTimeFrameEndHour: number;\r\n};\r\ntype PbiFilterCustomType = {\r\n endDate: Date;\r\n selectedDate: Date;\r\n startDate: Date;\r\n activeReport: MainReportTypes;\r\n setActiveDate: (date: Date) => void;\r\n timeframe: TimeFrame;\r\n customTimeframeProperties: CustomTimeframeProperties;\r\n setIsCustomTimeFrameOpen: (isOpen: boolean) => void;\r\n setTimeframe: (\r\n timeframe: TimeFrame,\r\n startDate?: Date,\r\n customTimeFrameProperties?: CustomTimeFrameProperties\r\n ) => void;\r\n};\r\nconst PbiFilterCustom = React.memo((props: PbiFilterCustomType) => {\r\n const {\r\n endDate,\r\n selectedDate,\r\n startDate,\r\n activeReport,\r\n timeframe,\r\n customTimeframeProperties,\r\n setIsCustomTimeFrameOpen,\r\n setTimeframe,\r\n setActiveDate,\r\n } = props;\r\n const [lowerDate, setLowerDate] = React.useState(null);\r\n const onChangeActiveDay = (d: Date | undefined) => {\r\n setActiveDate(d);\r\n };\r\n\r\n React.useEffect(() => {\r\n if (lowerDate) setActiveDate(lowerDate);\r\n }, [lowerDate]); // eslint-disable-line react-hooks/exhaustive-deps\r\n\r\n const today = new Date();\r\n today.setHours(0, 0, 0, 0);\r\n\r\n const isDisableLeft = (\r\n activeReport: MainReportTypes,\r\n customTimeframeProperties: CustomTimeFrameProperties,\r\n timeframe: TimeFrame\r\n ) => {\r\n if (timeframe !== 'custom') {\r\n return true;\r\n } else {\r\n //*if we are here it means that custom timeframe is active and we have all nessesary customTimeframeProperties to calculate interval;\r\n const customStartDate = customTimeframeProperties.customTimeFrameStartDate;\r\n const nextCustomStartDate = subDays(customStartDate, 1);\r\n return isBefore(nextCustomStartDate, startDate);\r\n }\r\n };\r\n const isDisableRight = (\r\n activeReport: MainReportTypes,\r\n customTimeframeProperties: CustomTimeFrameProperties,\r\n timeframe: TimeFrame\r\n ) => {\r\n if (timeframe !== 'custom') {\r\n return true;\r\n } else {\r\n //*if we are here it means that custom timeframe is active and we have all nessesary customTimeframeProperties to calculate interval;\r\n const customEndDate = customTimeframeProperties.customTimeFrameEndDate;\r\n const nextCustomEndDate = addDays(customEndDate, 1);\r\n return isAfter(nextCustomEndDate, endDate);\r\n }\r\n };\r\n const disableRight = isDisableRight(activeReport, customTimeframeProperties, timeframe);\r\n\r\n const disableLeft = isDisableLeft(activeReport, customTimeframeProperties, timeframe);\r\n\r\n const onHandleLeft = () => {\r\n if (!disableLeft) {\r\n const customTimeFrameStartHour = customTimeframeProperties?.customTimeFrameStartHour;\r\n const customTimeFrameEndHour = customTimeframeProperties?.customTimeFrameEndHour;\r\n const customStartDate = customTimeframeProperties.customTimeFrameStartDate;\r\n const customEndDate = customTimeframeProperties.customTimeFrameEndDate;\r\n //*on arrow click there is always offset of whole custom period on 1 day left\r\n const interval = 1;\r\n const prevCustomStartDate = subDays(customStartDate, interval);\r\n const prevCustomEndDate = subDays(customEndDate, interval);\r\n\r\n setTimeframe('custom', startDate, {\r\n customTimeFrameStartDate: prevCustomStartDate,\r\n customTimeFrameEndDate: prevCustomEndDate,\r\n customTimeFrameStartHour: customTimeFrameStartHour,\r\n customTimeFrameEndHour: customTimeFrameEndHour,\r\n });\r\n KonnectAnalytics.decrementDateInDatePicker();\r\n }\r\n };\r\n\r\n const onHandleRight = () => {\r\n if (!disableRight) {\r\n const customTimeFrameStartHour = customTimeframeProperties?.customTimeFrameStartHour;\r\n const customTimeFrameEndHour = customTimeframeProperties?.customTimeFrameEndHour;\r\n const customStartDate = customTimeframeProperties.customTimeFrameStartDate;\r\n const customEndDate = customTimeframeProperties.customTimeFrameEndDate;\r\n //*on arrow click there is always offset of whole custom period on 1 day right\r\n const interval = 1;\r\n const nextCustomStartDate = addDays(customStartDate, interval);\r\n const nextCustomEndDate = addDays(customEndDate, interval);\r\n // setActiveDate(addDays(selectedDate || endDate || new Date(), 1));\r\n setTimeframe('custom', startDate, {\r\n customTimeFrameStartDate: nextCustomStartDate,\r\n customTimeFrameEndDate: nextCustomEndDate,\r\n customTimeFrameStartHour: customTimeFrameStartHour,\r\n customTimeFrameEndHour: customTimeFrameEndHour,\r\n });\r\n KonnectAnalytics.incrementDateInDatePicker();\r\n }\r\n };\r\n const date = lowerDate || selectedDate || endDate;\r\n return (\r\n \r\n );\r\n});\r\n\r\nexport default PbiFilterCustom;\r\n","import { connect } from 'react-redux';\r\nimport { bindActionCreators, Dispatch } from 'redux';\r\n\r\nimport { Store } from 'store/storeTypes';\r\nimport PbiFilterCustom from './PbiFilterCustom';\r\nimport { setActiveDate, setTimeframe } from 'actions/reportFilterActions';\r\nimport {\r\n customTimeFramePropertiesSelector,\r\n timeFrameSelector,\r\n} from 'reducers/reports/filterStateReducer';\r\nimport { activeReportSelector } from 'reducers/reports/filterDataReducer';\r\ntype OwnProps = {\r\n setIsCustomTimeFrameOpen?: (isOpen: boolean) => void;\r\n};\r\nconst mapStateToProps = (state: Store) => {\r\n const { startDate, endDate } = state.reports.filterData[state.ui.selectedSystemGroup]!;\r\n const { selectedDate } = state.reports.filterState[state.ui.selectedSystemGroup]!;\r\n return {\r\n startDate,\r\n endDate,\r\n selectedDate,\r\n customTimeframeProperties: customTimeFramePropertiesSelector(state),\r\n timeframe: timeFrameSelector(state),\r\n activeReport: activeReportSelector(state),\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch: Dispatch) =>\r\n bindActionCreators({ setActiveDate, setTimeframe }, dispatch);\r\n\r\nexport type PbiFilterCustomProps = ReturnType &\r\n ReturnType &\r\n OwnProps;\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(PbiFilterCustom);\r\n","import React, { Fragment } from 'react';\r\nimport styled from 'styled-components/macro';\r\nimport { PbiFilterDateProps } from './PbiFilterDateContainer';\r\nimport PbiFilterDays from './PbiFilterDaysContainer';\r\nimport PbiFilterYears from './PbiFilterYearsContainer';\r\nimport PbiFilterWeeks from './PbiFilterWeeksContainer';\r\nimport PbiFilterMonths from './PbiFilterMonthsContainer';\r\nimport PbiFilterQuarters from './PbiFilterQuartersContainer';\r\nimport PbiFilterCustom from './PbiFilterCustomContainer';\r\n\r\nconst PbiFilterDateWrapper = styled.div`\r\n position: relative;\r\n width: 410px;\r\n display: flex;\r\n align-items: center;\r\n margin: 0 30px;\r\n`;\r\n\r\nconst RightPart = styled.div`\r\n width: 100%;\r\n display: flex;\r\n align-items: center;\r\n @media (max-width: 600px) {\r\n width: 56%;\r\n }\r\n`;\r\n\r\nconst PbiFilterDate = React.memo((props: PbiFilterDateProps) => {\r\n const { filterState, screenWidth, isCustomTimeFrameOpen, setIsCustomTimeFrameOpen } = props;\r\n const timeframe = filterState.timeframe;\r\n\r\n const isMobile = screenWidth < 900;\r\n const isCustomFilter = isCustomTimeFrameOpen || timeframe === 'custom';\r\n return isMobile ? (\r\n <>\r\n ) : (\r\n <>\r\n \r\n \r\n \r\n {isCustomFilter && (\r\n \r\n )}\r\n {timeframe === 'day' && !isCustomTimeFrameOpen && }\r\n {timeframe === 'week' && !isCustomTimeFrameOpen && }\r\n {timeframe === 'month' && !isCustomTimeFrameOpen && (\r\n \r\n )}\r\n {timeframe === 'quarter' && !isCustomTimeFrameOpen && (\r\n \r\n )}\r\n {timeframe === 'year' && !isCustomTimeFrameOpen && }\r\n \r\n \r\n \r\n \r\n );\r\n});\r\n\r\nexport default PbiFilterDate;\r\n","import { setTimeframe } from 'actions/reportFilterActions';\r\nimport { connect } from 'react-redux';\r\nimport { screenWidthSelector } from 'reducers/appUserReducer';\r\nimport { activeReportSelector } from 'reducers/reports/filterDataReducer';\r\nimport { filterStateBySystemGroup } from 'reducers/reports/filterStateReducer';\r\nimport { bindActionCreators, Dispatch } from 'redux';\r\n\r\nimport { Store } from 'store/storeTypes';\r\nimport PbiFilterDate from './PbiFilterDate';\r\ntype OwnProps = {\r\n isCustomTimeFrameOpen?: boolean;\r\n setIsCustomTimeFrameOpen?: (isOpen: boolean) => void;\r\n};\r\nconst mapStateToProps = (state: Store) => ({\r\n filterState: filterStateBySystemGroup(state),\r\n screenWidth: screenWidthSelector(state),\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch: Dispatch) => bindActionCreators({}, dispatch);\r\n\r\nexport type PbiFilterDateProps = ReturnType &\r\n ReturnType &\r\n OwnProps;\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(PbiFilterDate);\r\n","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgWarningIcon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 17,\n height: 16,\n viewBox: \"0 0 17 16\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M16.4093 13.6417L9.07598 0.975035C9.01265 0.880156 8.92689 0.802369 8.82629 0.748571C8.7257 0.694773 8.61339 0.666626 8.49932 0.666626C8.38524 0.666626 8.27293 0.694773 8.17234 0.748571C8.07175 0.802369 7.98598 0.880156 7.92265 0.975035L0.589317 13.6417C0.530833 13.743 0.50003 13.8579 0.5 13.9749C0.49997 14.0918 0.530714 14.2067 0.589146 14.3081C0.647577 14.4094 0.731638 14.4936 0.832889 14.5521C0.93414 14.6107 1.04902 14.6416 1.16598 14.6417H15.8326C15.9496 14.6416 16.0645 14.6107 16.1657 14.5521C16.267 14.4936 16.3511 14.4094 16.4095 14.3081C16.4679 14.2067 16.4987 14.0918 16.4986 13.9749C16.4986 13.8579 16.4678 13.743 16.4093 13.6417V13.6417ZM9.30332 5.30837L8.98798 9.70837H8.01065L7.71332 5.30837H9.30332ZM8.49932 12.6417C8.30589 12.6417 8.1168 12.5843 7.95597 12.4769C7.79514 12.3694 7.66978 12.2167 7.59576 12.038C7.52174 11.8593 7.50237 11.6626 7.54011 11.4729C7.57784 11.2832 7.67099 11.1089 7.80777 10.9722C7.94454 10.8354 8.1188 10.7422 8.30852 10.7045C8.49823 10.6668 8.69487 10.6861 8.87358 10.7601C9.05229 10.8342 9.20503 10.9595 9.31249 11.1204C9.41996 11.2812 9.47732 11.4703 9.47732 11.6637C9.47732 11.9231 9.37428 12.1718 9.19087 12.3553C9.00746 12.5387 8.7587 12.6417 8.49932 12.6417Z\",\n fill: \"#FFAB2B\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgWarningIcon);\nexport default __webpack_public_path__ + \"static/media/WarningIcon.75bc19aa.svg\";\nexport { ForwardRef as ReactComponent };","var _defs, _path, _path2, _path3;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgFabricIcon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 30 30\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null)), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M12 10h10.5v12.5H12z\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M7.5 8.75c0-.52.346-1.07 1.079-1.518.723-.442 1.755-.732 2.921-.732s2.197.29 2.921.732c.732.448 1.079.999 1.079 1.518V20h-8V8.75z\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M15.5 20.25c0 .52-.347 1.07-1.079 1.518-.723.442-1.755.732-2.921.732s-2.198-.29-2.921-.732C7.846 21.32 7.5 20.769 7.5 20.25c0-.52.346-1.07 1.079-1.518C9.302 18.29 10.334 18 11.5 18s2.197.29 2.921.732c.732.448 1.079.999 1.079 1.518z\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgFabricIcon);\nexport default __webpack_public_path__ + \"static/media/fabricIcon.3235e21c.svg\";\nexport { ForwardRef as ReactComponent };","import React from 'react';\r\nimport { StyledWrapperLoader } from 'components/SystemAnalysis/SystemsAnalysisStyles';\r\nimport newSpinner from '../../assets/icons/newSpinner.gif';\r\n\r\ntype SpinnerProps = {\r\n size?: number;\r\n};\r\n\r\nconst SpinnerComponent = ({ size = 50 }) => {\r\n return (\r\n \r\n \"loader\"\r\n \r\n );\r\n};\r\n\r\nexport default SpinnerComponent;\r\n","import React, { useEffect, useState } from 'react';\r\nimport styled from 'styled-components';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { Spinner } from 'components/Overview/Styles';\r\nimport { buttonOnHoverColor, StyledTooltip } from 'globalStyle';\r\nimport { KonnectAnalytics } from 'KonnectAnalytics/konnectAnalytics';\r\nimport { TimeFrame } from 'models/ReportData';\r\nimport {\r\n inkConsuptionPerJobStatuses,\r\n UserSystemGroup,\r\n UserSystemGroupStrings,\r\n} from 'store/storeTypes';\r\nimport { ReactComponent as DownloadIncConsupmtionPerJobIcon } from '../../assets/icons/DownloadIncConsupmtionPerJobIcon.svg';\r\nimport { ReactComponent as WarningIcon } from '../../assets/icons/WarningIcon.svg';\r\nimport { getRequestForTimeFrame } from 'helpers/date';\r\nimport { isShowInkConsumptionButtonForDtf } from 'helpers/jobAnalysisUtils';\r\nimport SpinnerComponent from 'components/_common/Spinner';\r\nconst Button = styled.button<{ isDisabled: boolean }>`\r\n all: unset;\r\n cursor: pointer;\r\n display: flex;\r\n align-items: center;\r\n min-width: 150px;\r\n height: 36px;\r\n box-sizing: border-box;\r\n padding: 0 10px;\r\n background-color: white;\r\n border: ${props => (props.isDisabled ? '1px solid #C5D0DE' : '1px solid #2ea1f8')};\r\n color: ${props => (props.isDisabled ? '#C5D0DE' : '#2ea1f8')};\r\n\r\n border-radius: 4px;\r\n font-family: 'Rubik';\r\n font-style: normal;\r\n font-weight: 400;\r\n font-size: 16px;\r\n line-height: 18px;\r\n text-align: center;\r\n transition-duration: 0.4s;\r\n &:focus {\r\n background: ${buttonOnHoverColor};\r\n }\r\n &:hover {\r\n background: ${buttonOnHoverColor};\r\n }\r\n &:active {\r\n color: ${props => (props.isDisabled ? '#C5D0DE' : '#1878ba')};\r\n border: ${props => (props.isDisabled ? '1px solid #C5D0DE' : '1px solid #1878ba')};\r\n }\r\n svg {\r\n fill: ${props => (props.isDisabled ? '#C5D0DE' : '#2ea1f8')};\r\n }\r\n`;\r\nconst Div = styled.div`\r\n margin-left: 10px;\r\n width: 120px;\r\n`;\r\nconst MessageDiv = styled.div`\r\n padding: 0 5px;\r\n width: 161px;\r\n height: 22px;\r\n border-radius: 4px;\r\n display: flex;\r\n align-items: center;\r\n background: rgba(255, 171, 43, 0.2);\r\n font-size: 12px;\r\n\r\n color: #354052;\r\n`;\r\n\r\nconst IconPlaceHolder = styled.div`\r\n height: 17px;\r\n width: 17px;\r\n margin-right: 5px;\r\n`;\r\ntype InkConsuptionPerJobButtonProps = {\r\n jobAnalysisBySystemGroupIsValidToDownloadInkConsuptionPerJobMessage: string;\r\n jobAnalysisBySystemGroupIsValidToDownloadInkConsuptionPerJobIsLoading: boolean;\r\n selectedSystemGroup: UserSystemGroupStrings;\r\n timeframe: TimeFrame;\r\n selectedDateByGroup: Date;\r\n selectedSystemSerials: Array;\r\n downloadInkConsumptionPerJobError: string;\r\n isDownloadInkConsumptionPerJobLoading: boolean;\r\n isDownloadInkConsumptionPerJobLoaded: boolean;\r\n allUserSystemsCount: number;\r\n customTimeframeProperties: any;\r\n selectedSerialsIds: string[];\r\n selectedDate: Date;\r\n downloadInkConsumptionPerJobReport: Function;\r\n};\r\n\r\nconst InkConsuptionPerJobButton = (props: InkConsuptionPerJobButtonProps) => {\r\n const {\r\n downloadInkConsumptionPerJobReport,\r\n jobAnalysisBySystemGroupIsValidToDownloadInkConsuptionPerJobMessage,\r\n jobAnalysisBySystemGroupIsValidToDownloadInkConsuptionPerJobIsLoading,\r\n isDownloadInkConsumptionPerJobLoading,\r\n allUserSystemsCount,\r\n selectedSystemGroup,\r\n customTimeframeProperties,\r\n selectedSerialsIds,\r\n selectedDate,\r\n timeframe,\r\n } = props;\r\n const { t } = useTranslation();\r\n\r\n const [isDisabled, setIsDisabled] = useState(true);\r\n const [tooltipMessage, setTooltipMessage] = useState('Checking data...');\r\n const isShowMessageIcon =\r\n tooltipMessage === inkConsuptionPerJobStatuses.tooMuchData ||\r\n tooltipMessage === inkConsuptionPerJobStatuses.noData;\r\n\r\n useEffect(() => {\r\n //for dtf case we got additional logic - start date should 31 of January 2024\r\n const isToShowButton = isShowInkConsumptionButtonForDtf(timeframe, selectedDate);\r\n if (selectedSystemGroup === UserSystemGroup.DTF && !isToShowButton) {\r\n setIsDisabled(true);\r\n setTooltipMessage('The data available starting from January 31, 2024');\r\n } else {\r\n if (\r\n jobAnalysisBySystemGroupIsValidToDownloadInkConsuptionPerJobMessage ===\r\n inkConsuptionPerJobStatuses.initialState ||\r\n jobAnalysisBySystemGroupIsValidToDownloadInkConsuptionPerJobMessage ===\r\n inkConsuptionPerJobStatuses.tooMuchData ||\r\n jobAnalysisBySystemGroupIsValidToDownloadInkConsuptionPerJobMessage ===\r\n inkConsuptionPerJobStatuses.noData ||\r\n isDownloadInkConsumptionPerJobLoading ||\r\n jobAnalysisBySystemGroupIsValidToDownloadInkConsuptionPerJobIsLoading\r\n ) {\r\n setIsDisabled(true);\r\n setTooltipMessage(\r\n jobAnalysisBySystemGroupIsValidToDownloadInkConsuptionPerJobMessage || 'Loading...'\r\n );\r\n }\r\n if (\r\n jobAnalysisBySystemGroupIsValidToDownloadInkConsuptionPerJobMessage ===\r\n inkConsuptionPerJobStatuses.validToDownload &&\r\n !jobAnalysisBySystemGroupIsValidToDownloadInkConsuptionPerJobIsLoading &&\r\n !isDownloadInkConsumptionPerJobLoading\r\n ) {\r\n setIsDisabled(false);\r\n\r\n setTooltipMessage(\r\n jobAnalysisBySystemGroupIsValidToDownloadInkConsuptionPerJobMessage || 'Loading...'\r\n );\r\n }\r\n }\r\n }, [\r\n jobAnalysisBySystemGroupIsValidToDownloadInkConsuptionPerJobMessage,\r\n jobAnalysisBySystemGroupIsValidToDownloadInkConsuptionPerJobIsLoading,\r\n isDownloadInkConsumptionPerJobLoading,\r\n selectedDate,\r\n selectedSystemGroup,\r\n ]);\r\n const handleButtonClick = (event: React.MouseEvent) => {\r\n if (\r\n jobAnalysisBySystemGroupIsValidToDownloadInkConsuptionPerJobIsLoading ||\r\n jobAnalysisBySystemGroupIsValidToDownloadInkConsuptionPerJobIsLoading ||\r\n isDisabled\r\n ) {\r\n return;\r\n }\r\n //*initial Http requst\r\n const filterByPage = getRequestForTimeFrame(selectedDate, timeframe, customTimeframeProperties);\r\n if (selectedSerialsIds) {\r\n filterByPage['systems'] =\r\n selectedSerialsIds.length === allUserSystemsCount ? [] : selectedSerialsIds;\r\n }\r\n filterByPage['SystemGroupType'] = selectedSystemGroup;\r\n downloadInkConsumptionPerJobReport(filterByPage);\r\n //*send analytics\r\n KonnectAnalytics.clickInkConsupmtionPerJob(timeframe);\r\n };\r\n const isBtnLoading =\r\n jobAnalysisBySystemGroupIsValidToDownloadInkConsuptionPerJobIsLoading ||\r\n isDownloadInkConsumptionPerJobLoading;\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n );\r\n};\r\nexport default InkConsuptionPerJobButton;\r\n","var _defs, _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgTshirtIcon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 30 30\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null)), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M21.766 9.5l-2.344-1.453c-.047 0-.14-.047-.235-.047h-2.343c-.282 0-.469.188-.469.469a1.88 1.88 0 01-1.875 1.875 1.88 1.88 0 01-1.875-1.875c0-.281-.188-.469-.469-.469H9.812c-.093 0-.187.047-.234.047L7.234 9.5A.492.492 0 007 9.922v3.703c0 .281.188.469.469.469h1.875v7.5c0 .281.187.468.469.468h9.374c.282 0 .47-.187.47-.468v-7.5h1.874c.282 0 .469-.188.469-.469V9.922a.492.492 0 00-.234-.422z\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgTshirtIcon);\nexport default __webpack_public_path__ + \"static/media/tshirtIcon.61ce493d.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgRocketIcon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 17 17\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M11.8574 7.78755C11.6494 7.35688 11.4238 6.93655 11.1804 6.52655C10.9378 6.11722 10.6634 5.71821 10.3574 5.32955L11.5034 5.12055C11.5454 5.10655 11.5871 5.10655 11.6284 5.12055C11.6704 5.13455 11.7051 5.15555 11.7324 5.18355L13.5454 6.99555C13.5594 7.00955 13.5628 7.02688 13.5554 7.04755C13.5488 7.06888 13.5384 7.08622 13.5244 7.09955L11.8574 7.78755ZM2.21142 1.95355C3.32275 2.02355 4.37842 2.30855 5.37842 2.80855C6.37842 3.30855 7.30208 3.98888 8.14942 4.84955C8.74675 5.44688 9.27108 6.07188 9.72242 6.72455C10.1738 7.37721 10.5244 8.00921 10.7744 8.62055L8.50342 10.8915C7.90609 10.6275 7.27775 10.2735 6.61842 9.82955C5.95842 9.38488 5.32975 8.86388 4.73242 8.26655C3.88509 7.40521 3.21142 6.47821 2.71142 5.48555C2.21142 4.49221 1.92008 3.43321 1.83742 2.30855C1.83742 2.25255 1.84408 2.20388 1.85742 2.16255C1.87142 2.12055 1.89942 2.08588 1.94142 2.05855C1.98275 2.01655 2.02442 1.98855 2.06642 1.97455C2.10775 1.96055 2.15609 1.95355 2.21142 1.95355ZM6.67042 6.78755C6.97575 6.46821 7.12842 6.10021 7.12842 5.68355C7.12842 5.26688 6.97575 4.90555 6.67042 4.59955C6.35108 4.29421 5.98642 4.14155 5.57642 4.14155C5.16642 4.14155 4.80175 4.29421 4.48242 4.59955C4.17708 4.90555 4.02442 5.26688 4.02442 5.68355C4.02442 6.10021 4.17708 6.46821 4.48242 6.78755C4.80175 7.09288 5.16642 7.24555 5.57642 7.24555C5.98642 7.24555 6.35108 7.09288 6.67042 6.78755ZM7.69142 11.9535L6.98242 13.5995C6.98242 13.6275 6.97208 13.6415 6.95142 13.6415C6.93075 13.6415 6.90642 13.6345 6.87842 13.6205L5.08742 11.8295C5.05942 11.8015 5.03842 11.7665 5.02442 11.7245C5.01042 11.6832 5.00342 11.6415 5.00342 11.5995L5.23242 10.4745C5.62175 10.7665 6.02108 11.0339 6.43042 11.2765C6.84042 11.5199 7.26075 11.7455 7.69142 11.9535ZM0.545418 1.49555C0.503418 2.94021 0.767418 4.31521 1.33742 5.62055C1.90675 6.92655 2.77475 8.16288 3.94142 9.32955L4.01442 9.40155L4.08742 9.47455L3.69142 11.3495C3.63542 11.6135 3.64909 11.8705 3.73242 12.1205C3.81575 12.3705 3.95475 12.5929 4.14942 12.7875L6.56642 15.1835C6.77442 15.3915 7.01375 15.4642 7.28442 15.4015C7.55575 15.3395 7.74675 15.1835 7.85742 14.9335L9.02442 12.2665L12.1914 9.07955L14.8374 7.95355C15.0868 7.84288 15.2428 7.65221 15.3054 7.38155C15.3681 7.11021 15.2954 6.87055 15.0874 6.66255L12.6704 4.22455C12.4758 4.03055 12.2534 3.89521 12.0034 3.81855C11.7534 3.74188 11.4964 3.73855 11.2324 3.80855L9.37842 4.18355L9.23242 4.03755C8.07975 2.88488 6.85075 2.02021 5.54542 1.44355C4.24008 0.867548 2.86508 0.607215 1.42042 0.662548C1.30908 0.662548 1.20142 0.686882 1.09742 0.735548C0.993418 0.784215 0.899751 0.850215 0.816418 0.933548C0.733085 1.00288 0.670418 1.08621 0.628418 1.18355C0.587085 1.28088 0.559418 1.38488 0.545418 1.49555ZM14.6284 11.7875C14.2258 11.3849 13.7328 11.1799 13.1494 11.1725C12.5661 11.1659 12.0731 11.3709 11.6704 11.7875C11.2538 12.1902 11.0488 12.6832 11.0554 13.2665C11.0628 13.8499 11.2678 14.3429 11.6704 14.7455C12.0038 15.0789 12.5038 15.3499 13.1704 15.5585C13.8371 15.7665 14.7814 15.9469 16.0034 16.0995C15.8508 14.8915 15.6668 13.9542 15.4514 13.2875C15.2361 12.6209 14.9618 12.1209 14.6284 11.7875ZM13.6704 12.7245C13.8231 12.8772 13.9584 13.1029 14.0764 13.4015C14.1944 13.7002 14.2881 14.0509 14.3574 14.4535C13.9408 14.3982 13.5831 14.3082 13.2844 14.1835C12.9864 14.0582 12.7608 13.9192 12.6074 13.7665C12.4548 13.6139 12.3784 13.4369 12.3784 13.2355C12.3784 13.0342 12.4548 12.8569 12.6074 12.7035C12.7468 12.5509 12.9204 12.4782 13.1284 12.4855C13.3371 12.4922 13.5178 12.5719 13.6704 12.7245Z\",\n fill: \"white\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgRocketIcon);\nexport default __webpack_public_path__ + \"static/media/rocketIcon.ebadf715.svg\";\nexport { ForwardRef as ReactComponent };","import * as React from 'react';\r\nimport { ActiveReportsTypes, UserSystemGroup } from 'store/storeTypes';\r\nimport styled from 'styled-components/macro';\r\nimport ToggleButton from '@material-ui/lab/ToggleButton';\r\nimport ToggleButtonGroup from '@material-ui/lab/ToggleButtonGroup';\r\n\r\nimport { ReactComponent as FabricIcon } from 'assets/icons/fabricIcon.svg';\r\nimport { ReactComponent as TshirtIcon } from 'assets/icons/tshirtIcon.svg';\r\nimport { ReactComponent as RocketIcon } from 'assets/icons/rocketIcon.svg';\r\nimport { PbiFilterSystemGroupProps } from './PbiFilterSystemGroupContainer';\r\nimport { KonnectAnalytics } from 'KonnectAnalytics/konnectAnalytics';\r\nimport { makeTreeData } from 'components/_common/TreeSelect/treeHelpers';\r\n\r\nconst ToggleButtonGroupStyled = styled(ToggleButtonGroup)`\r\n box-sizing: border-box;\r\n width: 147px;\r\n height: 36px;\r\n border: 1px solid #7f8fa4;\r\n border-radius: 4px;\r\n padding: 3px;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n margin-left: 15px;\r\n`;\r\n\r\nconst ToggleButtonStyled = styled(ToggleButton)`\r\n width: 100%;\r\n height: 100%;\r\n padding: 0;\r\n border: none;\r\n border-radius: 2px !important;\r\n svg {\r\n stroke: #c5d0de;\r\n fill: #c5d0de;\r\n }\r\n &.Mui-selected {\r\n background-color: #2ea1f8;\r\n stroke: white;\r\n fill: white;\r\n }\r\n`;\r\n\r\nexport default function PbiFilterSystemGroup(props: PbiFilterSystemGroupProps) {\r\n const {\r\n setSystemGroup,\r\n setFilterSystemsState,\r\n selectedSystemGroup,\r\n currentActiveReport,\r\n importedTennantId,\r\n tennantName,\r\n filterData,\r\n userSystemGroup,\r\n } = props;\r\n const handleChangeDashboard = (\r\n event: React.MouseEvent,\r\n newDashboard: UserSystemGroup\r\n ) => {\r\n if (selectedSystemGroup !== newDashboard && newDashboard !== null) {\r\n KonnectAnalytics.changeSystemGroupFilter('ChangeSystemGroupFilter', {\r\n systemGroupFrom: selectedSystemGroup,\r\n systemGroupTo: newDashboard,\r\n currentActiveReport,\r\n tennantName,\r\n importedTennantId,\r\n });\r\n setSystemGroup(newDashboard);\r\n const allSystemsSelected = makeTreeData({\r\n rootElements: filterData[newDashboard].sites,\r\n parentElements: filterData[newDashboard].models.map(m => ({\r\n id: m.id,\r\n name: m.name,\r\n rootId: m.siteId,\r\n })),\r\n childElements: filterData[newDashboard].systems.map(s => ({\r\n id: s.name,\r\n name: s.name,\r\n rootId: s.siteId,\r\n parentId: s.modelId,\r\n })),\r\n rootSelectedIds: filterData[newDashboard].sites.map(site => site.id),\r\n parentSelectedIds: filterData[newDashboard].models.map(model => model.id),\r\n childSelectedIds: filterData[newDashboard].systems.map(system => system.name),\r\n\r\n enableLowLevelSelect: true,\r\n });\r\n setFilterSystemsState(allSystemsSelected);\r\n }\r\n };\r\n return (\r\n \r\n {userSystemGroup.includes('Apollo') && (\r\n \r\n \r\n \r\n )}\r\n {userSystemGroup.includes('DTG') && (\r\n \r\n \r\n \r\n )}\r\n {userSystemGroup.includes('DTF') && (\r\n \r\n \r\n \r\n )}\r\n \r\n );\r\n}\r\n","import { connect } from 'react-redux';\r\nimport { bindActionCreators, Dispatch } from 'redux';\r\nimport { setFilterSystemsState } from 'actions/reportFilterActions';\r\nimport { Store } from 'store/storeTypes';\r\nimport PbiFilterSystemGroup from './PbiFilterSystemGroup';\r\nimport { setSystemGroup } from 'actions/userUiActions';\r\nimport {\r\n defaultSystemGroupSelector,\r\n importedTenantIdSelector,\r\n tenantNameSelector,\r\n userSystemGroupSelector,\r\n} from 'reducers/userSettingsReducer';\r\nimport { systemGroupSelector } from 'reducers/ui/systemGroupUiReducer';\r\nimport { activeReportSelector, filterDataSelector } from 'reducers/reports/filterDataReducer';\r\nconst mapStateToProps = (state: Store) => {\r\n return {\r\n userSystemGroup: userSystemGroupSelector(state),\r\n defaultSystemGroup: defaultSystemGroupSelector(state),\r\n selectedSystemGroup: systemGroupSelector(state),\r\n currentActiveReport: activeReportSelector(state),\r\n tennantName: tenantNameSelector(state),\r\n importedTennantId: importedTenantIdSelector(state),\r\n filterData: filterDataSelector(state),\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch: Dispatch) =>\r\n bindActionCreators({ setSystemGroup, setFilterSystemsState }, dispatch);\r\n\r\nexport type PbiFilterSystemGroupProps = ReturnType &\r\n ReturnType;\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(PbiFilterSystemGroup);\r\n","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgMobilePbiFilterCloseIcon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 16,\n height: 16,\n viewBox: \"0 0 16 16\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M15.6571 0.342857C15.2 -0.114286 14.5143 -0.114286 14.0571 0.342857L8 6.4L1.94286 0.342857C1.48571 -0.114286 0.8 -0.114286 0.342857 0.342857C-0.114286 0.8 -0.114286 1.48571 0.342857 1.94286L6.4 8L0.342857 14.0571C-0.114286 14.5143 -0.114286 15.2 0.342857 15.6571C0.571429 15.8857 0.8 16 1.14286 16C1.48571 16 1.71429 15.8857 1.94286 15.6571L8 9.6L14.0571 15.6571C14.2857 15.8857 14.6286 16 14.8571 16C15.0857 16 15.4286 15.8857 15.6571 15.6571C16.1143 15.2 16.1143 14.5143 15.6571 14.0571L9.6 8L15.6571 1.94286C16.1143 1.48571 16.1143 0.8 15.6571 0.342857Z\",\n fill: \"#7F8FA4\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgMobilePbiFilterCloseIcon);\nexport default __webpack_public_path__ + \"static/media/MobilePbiFilterCloseIcon.fa351ce7.svg\";\nexport { ForwardRef as ReactComponent };","import React from 'react';\r\nimport styled from 'styled-components/macro';\r\nimport { useTranslation } from 'react-i18next';\r\nimport MuiFormControl from '@material-ui/core/FormControl';\r\nimport MuiInputLabel from '@material-ui/core/InputLabel';\r\nimport MuiSelect from '@material-ui/core/Select';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport FormHelperText from '@material-ui/core/FormHelperText';\r\nimport KeyboardArrowDownIcon from '@material-ui/icons/KeyboardArrowDown';\r\nimport { ValidationError } from 'helpers/validationRules';\r\nimport { TimeFrame, TimeFrameEnum } from 'models/ReportData';\r\nimport { UserSystemGroupStrings } from 'store/storeTypes';\r\n\r\nconst FormControl = styled(MuiFormControl)`\r\n width: 100%;\r\n`;\r\n\r\nconst InputLabel = styled(MuiInputLabel).attrs({\r\n classes: { focused: 'focused', shrink: 'shrink' },\r\n})`\r\n font-size: 14px;\r\n font-family: Rubik, sans-serif;\r\n &.shrink {\r\n font-size: 16px;\r\n }\r\n &.focused {\r\n color: #7f8fa4;\r\n }\r\n`;\r\n\r\ninterface SelectProps {\r\n view?: string;\r\n disabled?: boolean;\r\n id?: string;\r\n label?: string;\r\n items: string[];\r\n error?: ValidationError | false;\r\n onChange?: (e: React.SyntheticEvent) => void;\r\n value?: string | number | Record | null | undefined;\r\n values?: (string | number)[];\r\n noEmpty?: boolean;\r\n noHelper?: boolean;\r\n className?: string;\r\n variant?: 'standard' | 'outlined' | 'filled';\r\n formControlVariant?: 'standard' | 'outlined' | 'filled';\r\n open?: boolean;\r\n timeframe?: TimeFrame;\r\n selectedSystemGroup?: UserSystemGroupStrings;\r\n}\r\n\r\nconst Select = (props: SelectProps) => {\r\n const { t } = useTranslation();\r\n const {\r\n id,\r\n label,\r\n items,\r\n value,\r\n values,\r\n onChange,\r\n error,\r\n noEmpty,\r\n noHelper,\r\n variant,\r\n formControlVariant,\r\n open,\r\n disabled,\r\n timeframe,\r\n selectedSystemGroup,\r\n view,\r\n ...rest\r\n } = props;\r\n if (view === 'mixed') {\r\n //*this case of mixed view (dropdown and button is used only on Job Analysis page in case of resolution <1920px)\r\n /**no need to show Custom option in case of timeframe !== Custom */\r\n const filteredItems =\r\n timeframe !== TimeFrameEnum.custom ? items.filter(item => item !== 'Custom') : items;\r\n const filteredValues =\r\n timeframe !== TimeFrameEnum.custom ? values?.filter(item => item !== 'custom') : values;\r\n\r\n /**index of Custom option in items array is hardcoded on client side*/\r\n const INDEX_OF_CUSTOM_TIMEFRAME = 5;\r\n return (\r\n \r\n {label && {label}}\r\n\r\n \r\n {!noEmpty && (\r\n \r\n {t('none')}\r\n \r\n )}\r\n {filteredItems.map((v, i) => {\r\n return (\r\n \r\n {v}\r\n \r\n );\r\n })}\r\n \r\n\r\n {!noHelper && {error && t(error.key, error.values)}}\r\n \r\n );\r\n } else {\r\n return (\r\n \r\n {label && {label}}\r\n\r\n \r\n {!noEmpty && (\r\n \r\n {t('none')}\r\n \r\n )}\r\n {items.map((v, i) => (\r\n \r\n {v}\r\n \r\n ))}\r\n \r\n\r\n {!noHelper && {error && t(error.key, error.values)}}\r\n \r\n );\r\n }\r\n};\r\n\r\nexport default Select;\r\n","import { Button } from '@material-ui/core';\r\nimport Select from 'components/_common/Select';\r\nimport { globalColors } from 'globalStyle';\r\nimport { KonnectAnalytics } from 'KonnectAnalytics/konnectAnalytics';\r\nimport React from 'react';\r\nimport styled from 'styled-components';\r\nimport { HeaderButton } from './DesktopPbiFilterTimeFrame';\r\nimport { TimeFrameSelectorViews, UserSystemGroup } from 'store/storeTypes';\r\nimport { TimeFrameEnum } from 'models/ReportData';\r\n\r\nconst TimeframeSelect = styled(Select)`\r\n width: 135px;\r\n height: 31px;\r\n .MuiInputBase-root {\r\n height: 100%;\r\n }\r\n .MuiSelect-root {\r\n padding: 0 10px;\r\n font-size: 12px;\r\n }\r\n .MuiSelect-select {\r\n text-transform: capitalize;\r\n &:focus {\r\n background-color: transparent;\r\n }\r\n }\r\n .MuiFilledInput-root {\r\n border-radius: 4px;\r\n }\r\n`;\r\nconst ButtonWrapper = styled.div`\r\n display: flex;\r\n gap: 20px;\r\n`;\r\n\r\nconst TimeFrameSelector = props => {\r\n const {\r\n disabled,\r\n items,\r\n values,\r\n onChange,\r\n timeframe,\r\n view,\r\n startDate,\r\n setTimeframe,\r\n setIsCustomTimeFrameOpen,\r\n selectedSystemGroup,\r\n } = props;\r\n\r\n //*to hide/unhide custom timeframe when needed;\r\n const IS_CUSTOM_TIMEFRAME_BUTTON_VISIBLE = true;\r\n const filteredValues = values.filter(value => {\r\n if (!IS_CUSTOM_TIMEFRAME_BUTTON_VISIBLE) {\r\n return value !== 'custom';\r\n }\r\n return value;\r\n });\r\n const filteredItems = items.filter(item => {\r\n if (!IS_CUSTOM_TIMEFRAME_BUTTON_VISIBLE) {\r\n return item !== 'Custom';\r\n }\r\n return item;\r\n });\r\n\r\n const onClickHandler = nextTimeframe => {\r\n if (nextTimeframe === 'custom') {\r\n setIsCustomTimeFrameOpen(true);\r\n KonnectAnalytics.customClick({ selectedSystemGroup });\r\n } else {\r\n setIsCustomTimeFrameOpen(false);\r\n setTimeframe(nextTimeframe, startDate);\r\n }\r\n };\r\n if (view === TimeFrameSelectorViews.DropDown) {\r\n return (\r\n \r\n );\r\n }\r\n if (view === TimeFrameSelectorViews.Mixed) {\r\n return (\r\n \r\n \r\n\r\n {selectedSystemGroup !== UserSystemGroup.DTF && IS_CUSTOM_TIMEFRAME_BUTTON_VISIBLE && (\r\n onClickHandler('custom')}\r\n disabled={disabled}>\r\n {'Custom'}\r\n \r\n )}\r\n \r\n );\r\n } else {\r\n return (\r\n \r\n {filteredValues.map(value => {\r\n const valueName = value[0].toUpperCase() + value.slice(1);\r\n return (\r\n onClickHandler(value)}\r\n disabled={disabled}>\r\n {valueName}\r\n \r\n );\r\n })}\r\n \r\n );\r\n }\r\n};\r\n\r\nexport default TimeFrameSelector;\r\n","import React, { useEffect, useState } from 'react';\r\nimport styled from 'styled-components';\r\nimport Select from '../_common/Select';\r\nimport MuiButton from '@material-ui/core/Button';\r\nimport { isHistorical } from 'helpers/date';\r\nimport PbiFilterDate from 'components/PbiFilter/PbiFilterDateContainer';\r\nimport InkConsuptionPerJobButton from './InkConsuptionPerJobButton';\r\nimport PbiFilterSystemGroup from './PbiFilterSystemGroupContainer';\r\nimport {\r\n ReportFilterData,\r\n ReportFilterState,\r\n ReportSystem,\r\n TimeFrameSelectorViews,\r\n UserSystemGroupStrings,\r\n} from 'store/storeTypes';\r\nimport { MainReportTypes, ReportTypesNew, TimeFrame, TimeFrameEnum } from 'models/ReportData';\r\nimport { globalColors, VerticalDevider } from 'globalStyle';\r\nimport TimeFrameSelector from './TimeFrameSelector';\r\n\r\nconst Desktop = styled.div`\r\n flex-grow: 1;\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n padding-right: 18px;\r\n @media (max-width: 750px) {\r\n display: none;\r\n }\r\n`;\r\n\r\nconst LeftPart = styled.div`\r\n position: relative;\r\n display: flex;\r\n align-items: center;\r\n div::before {\r\n border-bottom: none !important;\r\n }\r\n div::after {\r\n border-bottom: none;\r\n }\r\n #select-active-page {\r\n font-weight: 500;\r\n font-size: 12px;\r\n color: #354052;\r\n border: 1px solid #c5d0de;\r\n box-shadow: 0px 0px 3px rgba(0, 0, 0, 0.03);\r\n border-radius: 4px;\r\n padding: 8px 40px 9px 21px;\r\n &:focus {\r\n background-color: initial;\r\n }\r\n & ~ svg {\r\n right: 8px;\r\n fill: #354052;\r\n }\r\n }\r\n button {\r\n text-transform: uppercase;\r\n @media (max-width: 800px) {\r\n display: none;\r\n }\r\n }\r\n`;\r\n\r\nexport const HeaderButton = styled(MuiButton)`\r\n font-family: 'Rubik';\r\n font-style: normal;\r\n font-weight: 400;\r\n font-size: 12px;\r\n line-height: 14px;\r\n height: 30px;\r\n color: ${globalColors.regular.buttons.regularText};\r\n border-color: #2ea1f8;\r\n cursor: pointer;\r\n`;\r\n\r\nconst RightPart = styled.div`\r\n position: relative;\r\n display: flex;\r\n align-items: center;\r\n`;\r\n\r\ntype DesktopPbiFilterTimeFrame = {\r\n view?: 'dropDown' | 'buttons' | 'mixed';\r\n isEmptyState: boolean;\r\n isShowInkPerJobButton: boolean;\r\n isShowSystemGroupFilter: boolean;\r\n isDownloadInkConsumptionPerJobLoaded: boolean;\r\n isDownloadInkConsumptionPerJobLoading: boolean;\r\n filterState: ReportFilterState;\r\n filterData: ReportFilterData;\r\n downloadInkConsumptionPerJobError: string | object;\r\n allUserSystems: ReportSystem[];\r\n timeframe: TimeFrame;\r\n selectedSystemGroup: UserSystemGroupStrings;\r\n items: string[];\r\n values: TimeFrame[];\r\n jobAnalysisBySystemGroupIsValidToDownloadInkConsuptionPerJobMessage: string;\r\n jobAnalysisBySystemGroupIsValidToDownloadInkConsuptionPerJobIsLoading: boolean;\r\n activeReport: ReportTypesNew;\r\n screenWidth: number;\r\n customTimeframeProperties: any;\r\n selectedSerialsIds: string[];\r\n selectedDate: Date;\r\n handleLastUpdateClick: () => void;\r\n handlePageChange: (e: React.SyntheticEvent) => void;\r\n downloadInkConsumptionPerJobReport: ({}) => void;\r\n setTimeframe: (props: any) => void;\r\n};\r\nconst DesktopPbiFilterTimeFrame = (props: DesktopPbiFilterTimeFrame) => {\r\n const {\r\n activeReport,\r\n isEmptyState,\r\n filterState,\r\n filterData,\r\n timeframe,\r\n items,\r\n values,\r\n isShowInkPerJobButton,\r\n selectedSystemGroup,\r\n downloadInkConsumptionPerJobError,\r\n isDownloadInkConsumptionPerJobLoading,\r\n allUserSystems,\r\n isDownloadInkConsumptionPerJobLoaded,\r\n isShowSystemGroupFilter,\r\n selectedSerialsIds,\r\n customTimeframeProperties,\r\n jobAnalysisBySystemGroupIsValidToDownloadInkConsuptionPerJobMessage,\r\n jobAnalysisBySystemGroupIsValidToDownloadInkConsuptionPerJobIsLoading,\r\n screenWidth,\r\n selectedDate,\r\n downloadInkConsumptionPerJobReport,\r\n handlePageChange,\r\n handleLastUpdateClick,\r\n setTimeframe,\r\n } = props;\r\n //*by buisness requirementst here for desktop this component should be flexible;\r\n //* in most casese there should be buttons view, but for expample in Job analysis page there should be mixed(drop down with all timeframes + button for custom timeframe)\r\n //*so that is why there is the fuction which is detect view for desktop which depends on screen width and report type.\r\n const [timeFrameSelectionView, setTimeFrameSelectionView] = useState('buttons');\r\n useEffect(() => {\r\n if (activeReport === MainReportTypes.Overview) {\r\n // for now in overview there will be only buttons view\r\n setTimeFrameSelectionView(TimeFrameSelectorViews.Buttons);\r\n } else if (activeReport === MainReportTypes.Jobs) {\r\n screenWidth < 1920\r\n ? setTimeFrameSelectionView(TimeFrameSelectorViews.Mixed)\r\n : setTimeFrameSelectionView(TimeFrameSelectorViews.Buttons);\r\n } else {\r\n setTimeFrameSelectionView(TimeFrameSelectorViews.Buttons);\r\n }\r\n }, [screenWidth, activeReport]);\r\n\r\n const [isCustomTimeFrameOpen, setIsCustomTimeFrameOpen] = React.useState(false);\r\n const isTodayDisabled = !isHistorical({\r\n day: filterState.selectedDate,\r\n lastUpdate: filterData.endDate,\r\n });\r\n return (\r\n \r\n \r\n {!isEmptyState && (\r\n <>\r\n {timeframe !== TimeFrameEnum.custom && (\r\n \r\n Today\r\n \r\n )}\r\n\r\n \r\n\r\n {timeframe && (\r\n \r\n )}\r\n \r\n )}\r\n \r\n\r\n \r\n {isShowInkPerJobButton && (\r\n \r\n )}\r\n {isShowSystemGroupFilter && }\r\n \r\n \r\n );\r\n};\r\nexport default DesktopPbiFilterTimeFrame;\r\n","var _path, _path2, _path3;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgServiceTicketIcon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 14,\n height: 16,\n viewBox: \"0 0 14 16\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8 0H0.666667C0.489856 0 0.320286 0.0702379 0.195262 0.195262C0.0702379 0.320286 0 0.489856 0 0.666667V15.3333C0 15.5101 0.0702379 15.6797 0.195262 15.8047C0.320286 15.9298 0.489856 16 0.666667 16H12.6667C12.8435 16 13.013 15.9298 13.1381 15.8047C13.2631 15.6797 13.3333 15.5101 13.3333 15.3333V5.33333H8.66667C8.48985 5.33333 8.32029 5.2631 8.19526 5.13807C8.07024 5.01305 8 4.84348 8 4.66667V0Z\",\n fill: \"#354052\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12.9426 4.00005H9.33325V0.390717L12.9426 4.00005Z\",\n fill: \"#354052\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M9.9627 12.7401L6.90688 7.46186C6.88049 7.42232 6.84475 7.38991 6.80284 7.36749C6.76092 7.34507 6.71412 7.33334 6.66658 7.33334C6.61905 7.33334 6.57225 7.34507 6.53033 7.36749C6.48842 7.38991 6.45268 7.42232 6.42629 7.46186L3.37047 12.7401C3.3461 12.7823 3.33326 12.8302 3.33325 12.8789C3.33324 12.9277 3.34605 12.9755 3.3704 13.0178C3.39475 13.06 3.42978 13.0951 3.47197 13.1195C3.51416 13.1439 3.56203 13.1567 3.61077 13.1568H9.7224C9.77114 13.1567 9.81901 13.1439 9.8612 13.1195C9.90339 13.0951 9.93842 13.06 9.96277 13.0178C9.98712 12.9755 9.99993 12.9277 9.99992 12.8789C9.99991 12.8302 9.98707 12.7823 9.9627 12.7401ZM7.00161 9.26757L6.87021 11.1011H6.46296L6.33906 9.26757H7.00161ZM6.66658 12.3234C6.58598 12.3234 6.50719 12.2995 6.44017 12.2547C6.37315 12.2099 6.32092 12.1463 6.29007 12.0718C6.25923 11.9973 6.25116 11.9154 6.26688 11.8363C6.28261 11.7573 6.32142 11.6847 6.37841 11.6277C6.43541 11.5707 6.50802 11.5319 6.58708 11.5161C6.66613 11.5004 6.74807 11.5085 6.82254 11.5393C6.89701 11.5702 6.96066 11.6224 7.00544 11.6894C7.05022 11.7565 7.07412 11.8352 7.07412 11.9159C7.07412 12.0239 7.03118 12.1276 6.95476 12.204C6.87833 12.2804 6.77467 12.3234 6.66658 12.3234Z\",\n fill: \"white\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgServiceTicketIcon);\nexport default __webpack_public_path__ + \"static/media/ServiceTicketIcon.10db4fd2.svg\";\nexport { ForwardRef as ReactComponent };","import { appearanceEffect } from 'globalStyle';\r\nimport { KonnectAnalytics } from 'KonnectAnalytics/konnectAnalytics';\r\nimport { TimeFrame } from 'models/ReportData';\r\nimport React, { useEffect, useState } from 'react';\r\nimport styled from 'styled-components';\r\nconst TimeframeButtonStyled = styled.button<{ isActive: boolean; width: string }>`\r\n all: unset;\r\n cursor: pointer;\r\n display: flex;\r\n flex-direction: row;\r\n justify-content: center;\r\n align-items: center;\r\n height: 100%;\r\n width: ${props => props.width};\r\n background-color: ${props => (props.isActive ? '#2EA1F8' : '#ffffff')};\r\n color: ${props => (props.isActive ? '#ffffff' : '#7f8fa4;')};\r\n font-weight: 400;\r\n font-size: 20px;\r\n line-height: 24px;\r\n animation-name: ${appearanceEffect};\r\n animation-duration: 500ms;\r\n`;\r\nconst TimeframeButton = props => {\r\n const { item, timeframe, startDate, setTimeframe, activeReport } = props;\r\n\r\n const [isActive, setIsActive] = useState(false);\r\n useEffect(() => {\r\n if (timeframe === item.toLowerCase()) {\r\n setIsActive(true);\r\n } else {\r\n setIsActive(false);\r\n }\r\n }, [timeframe]);\r\n const clickHandler = () => {\r\n setTimeframe(item.toLowerCase() as TimeFrame, startDate);\r\n };\r\n const getElementWidth = (item, activeReport): string => {\r\n if (activeReport !== 'jobs') {\r\n return '25%';\r\n } else {\r\n if (item === 'Month' || item === 'Quarter') {\r\n return '25%';\r\n } else if (item === 'Week') {\r\n return '18%';\r\n } else {\r\n return '16%';\r\n }\r\n }\r\n };\r\n const elementWidth = getElementWidth(item, activeReport);\r\n return (\r\n \r\n {item}\r\n \r\n );\r\n};\r\nexport default TimeframeButton;\r\n","import React, { useEffect, useState } from 'react';\r\nimport styled from 'styled-components';\r\nimport { ReactComponent as MobilePbiFilterCloseIcon } from '../../assets/icons/MobilePbiFilterCloseIcon.svg';\r\nimport TimeframeButton from './TimeframeButton';\r\nconst ButtonGroup = styled.div`\r\n width: 100%;\r\n height: 100%;\r\n display: flex;\r\n justify-content: flex-start;\r\n align-items: center;\r\n`;\r\n\r\nconst CloseButton = styled.button`\r\n all: unset;\r\n width: 30px;\r\n height: 100%;\r\n display: flex;\r\n justify-content: start;\r\n align-items: flex-start;\r\n padding-top: 15px;\r\n padding-left: 10px;\r\n`;\r\nconst MobilePbiFilterTimeFrame = props => {\r\n const {\r\n items,\r\n timeframe,\r\n closeCalendarModal,\r\n startDate,\r\n endDate,\r\n setTimeframe,\r\n activeReport,\r\n } = props;\r\n // on mobile there should not be custom timeframe till it will be developed\r\n const filteredItems = items.filter(item => item !== 'Custom');\r\n return (\r\n <>\r\n \r\n {filteredItems.map(item => {\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 default MobilePbiFilterTimeFrame;\r\n","import React, { useEffect } from 'react';\r\nimport styled from 'styled-components/macro';\r\nimport { PbiFilterTimeframeProps } from './PbiFilterTimeframeContainer';\r\nimport { MainReportTypes, REPORTS_CONFIG, SubReportTypes, TimeFrame } from 'models/ReportData';\r\nimport MuiButton from '@material-ui/core/Button';\r\n\r\nimport { capitalize } from 'lodash';\r\nimport { isNeverReported } from 'helpers/empty-state';\r\nimport { UserSystemGroup } from 'store/storeTypes';\r\nimport DesktopPbiFilterTimeFrame from './DesktopPbiFilterTimeFrame';\r\nimport MobilePbiFilterTimeFrame from './MobilePbiFilterTimeFrame';\r\nimport { getRequestForTimeFrame } from 'helpers/date';\r\n\r\nexport const LastUpdateButton = styled(MuiButton)`\r\n color: #2ea1f8;\r\n border-color: #2ea1f8;\r\n padding: 0 10px;\r\n height: 31px;\r\n line-height: 1;\r\n font-weight: 400;\r\n`;\r\n\r\nconst PbiFilterTimeframe = (props: PbiFilterTimeframeProps) => {\r\n const {\r\n activeReport,\r\n filterState,\r\n filterData,\r\n userSettings,\r\n selectedSystemGroup,\r\n isSelectedSystemsEverReported,\r\n downloadInkConsumptionPerJobError,\r\n isDownloadInkConsumptionPerJobLoading,\r\n isDownloadInkConsumptionPerJobLoaded,\r\n allUserSystems,\r\n isMobile,\r\n timeframe,\r\n jobAnalysisBySystemGroupIsValidToDownloadInkConsuptionPerJobMessage,\r\n jobAnalysisBySystemGroupIsValidToDownloadInkConsuptionPerJobIsLoading,\r\n selectedDate,\r\n selectedSerialsIds,\r\n isEverReportedLoaded,\r\n customTimeframeProperties,\r\n isReadOnlyRole,\r\n screenWidth,\r\n isInkConsumptionPerJobValidToDownload,\r\n downloadInkConsumptionPerJobReport,\r\n setTimeframe,\r\n setActiveDate,\r\n closeCalendarModal,\r\n } = props;\r\n const values = REPORTS_CONFIG[selectedSystemGroup]![activeReport].timeFrames;\r\n\r\n const items = activeReport === 'machineConfig' ? ['Day'] : values.map(value => capitalize(value));\r\n\r\n useEffect(() => {\r\n if (activeReport === MainReportTypes.Jobs && selectedSystemGroup !== 'Apollo') {\r\n const filterByPage = getRequestForTimeFrame(\r\n selectedDate,\r\n timeframe,\r\n customTimeframeProperties\r\n );\r\n filterByPage['systems'] =\r\n selectedSerialsIds.length === allUserSystems.length ? [] : selectedSerialsIds;\r\n filterByPage['SystemGroupType'] = selectedSystemGroup;\r\n\r\n isInkConsumptionPerJobValidToDownload(filterByPage);\r\n }\r\n }, [activeReport, timeframe, selectedSystemGroup, selectedDate, selectedSerialsIds]);\r\n const isShowSystemGroupFilter =\r\n userSettings.data.userSystemGroup?.length >= 2 &&\r\n !location.pathname.includes(SubReportTypes.SystemPage) &&\r\n !location.pathname.includes(SubReportTypes.MachineConfig);\r\n const isShowInkPerJobButton =\r\n !isReadOnlyRole &&\r\n location.pathname.includes(MainReportTypes.Jobs) &&\r\n (selectedSystemGroup === UserSystemGroup.DTG || selectedSystemGroup === UserSystemGroup.DTF) &&\r\n filterState.selectedSystemSerials.length !== 0;\r\n\r\n const handlePageChange = (e: React.SyntheticEvent) => {\r\n let selectedtimeframe = (e.target as HTMLSelectElement).value as TimeFrame;\r\n if (!selectedtimeframe) {\r\n selectedtimeframe = (e.currentTarget as HTMLButtonElement).value as TimeFrame;\r\n }\r\n setTimeframe(selectedtimeframe, filterData.startDate);\r\n };\r\n const handleLastUpdateClick = () => {\r\n setActiveDate(filterData.endDate || new Date());\r\n };\r\n const isEmptyState = isNeverReported(\r\n filterData,\r\n isSelectedSystemsEverReported,\r\n selectedSystemGroup,\r\n isEverReportedLoaded\r\n );\r\n return isMobile ? (\r\n \r\n ) : (\r\n \r\n );\r\n};\r\n\r\nexport default PbiFilterTimeframe;\r\n","import { connect } from 'react-redux';\r\nimport { bindActionCreators, Dispatch } from 'redux';\r\nimport { Store, UserSystemGroupStrings } from 'store/storeTypes';\r\nimport PbiFilterTimeframe from './PbiFilterTimeframe';\r\nimport { setActiveDate, setTimeframe, applyMobileFilters } from 'actions/reportFilterActions';\r\nimport { closeCalendarModal } from 'actions/filterCalendarUiAction';\r\nimport { isToday } from 'helpers/date';\r\nimport {\r\n activeReportSelector,\r\n allSystemsSelector,\r\n filterDataBySystemGroupSelector,\r\n} from 'reducers/reports/filterDataReducer';\r\nimport { filterStateBySystemGroupSelector } from 'selectors/filterStateDataSelectors';\r\nimport { userSettingsSelector } from 'reducers/userSettingsReducer';\r\nimport { systemGroupSelector } from 'reducers/ui/systemGroupUiReducer';\r\nimport {\r\n customTimeFramePropertiesSelector,\r\n isSelectedSystemsEverReportedBySystemGroupSelector,\r\n selectedDateSelector,\r\n selectedSystemSerialsBySystemGroup,\r\n timeFrameSelector,\r\n} from 'reducers/reports/filterStateReducer';\r\nimport {\r\n downloadInkConsumptionPerJobReport,\r\n isInkConsumptionPerJobValidToDownload,\r\n} from 'actions/jobAnalysisActions';\r\nimport {\r\n jobAnalysisBySystemGroupDownloadInkConsumptionPerJobErrorSelector,\r\n jobAnalysisBySystemGroupIsValidToDownloadInkConsuptionPerJobIsLoadingSelector,\r\n jobAnalysisBySystemGroupIsValidToDownloadInkConsuptionPerJobSelector,\r\n jobAnalysisIsDownloadInkConsumptionPerJobLoadedSelector,\r\n jobAnalysisIsDownloadInkConsumptionPerJobLoadingSelector,\r\n} from 'reducers/jobAnalysisReducer';\r\nimport { TimeFrame } from 'models/ReportData';\r\nimport { isEverReportedLoadedSelector } from 'reducers/isEverReportedReducer';\r\nimport { isReadOnlyRoleSelector } from 'reducers/appUserReducer';\r\nimport { screenWidthSelector } from 'reducers/appUserReducer';\r\ntype OwnProps = {\r\n isMobile?: boolean;\r\n setSelectedMobileTimeFrame?: (timeframe: TimeFrame) => void;\r\n selectedMobileTimeFrame?: TimeFrame;\r\n setTimeframe?: ({}: any) => void;\r\n selectedSystemGroup?: UserSystemGroupStrings;\r\n};\r\nconst mapStateToProps = (state: Store) => {\r\n return {\r\n filterData: filterDataBySystemGroupSelector(state),\r\n filterState: filterStateBySystemGroupSelector(state),\r\n userSettings: userSettingsSelector(state),\r\n selectedSystemGroup: systemGroupSelector(state),\r\n activeReport: activeReportSelector(state),\r\n isToday: isToday(state),\r\n isSelectedSystemsEverReported: isSelectedSystemsEverReportedBySystemGroupSelector(state),\r\n jobAnalysisBySystemGroupIsValidToDownloadInkConsuptionPerJobIsLoading: jobAnalysisBySystemGroupIsValidToDownloadInkConsuptionPerJobIsLoadingSelector(\r\n state\r\n ),\r\n jobAnalysisBySystemGroupIsValidToDownloadInkConsuptionPerJobMessage: jobAnalysisBySystemGroupIsValidToDownloadInkConsuptionPerJobSelector(\r\n state\r\n ),\r\n downloadInkConsumptionPerJobError: jobAnalysisBySystemGroupDownloadInkConsumptionPerJobErrorSelector(\r\n state\r\n ),\r\n isDownloadInkConsumptionPerJobLoaded: jobAnalysisIsDownloadInkConsumptionPerJobLoadedSelector(\r\n state\r\n ),\r\n isDownloadInkConsumptionPerJobLoading: jobAnalysisIsDownloadInkConsumptionPerJobLoadingSelector(\r\n state\r\n ),\r\n allUserSystems: allSystemsSelector(state),\r\n timeframe: timeFrameSelector(state),\r\n selectedDate: selectedDateSelector(state),\r\n selectedSerialsIds: selectedSystemSerialsBySystemGroup(state),\r\n isEverReportedLoaded: isEverReportedLoadedSelector(state),\r\n customTimeframeProperties: customTimeFramePropertiesSelector(state),\r\n isReadOnlyRole: isReadOnlyRoleSelector(state),\r\n screenWidth: screenWidthSelector(state),\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch: Dispatch) =>\r\n bindActionCreators(\r\n {\r\n isInkConsumptionPerJobValidToDownload,\r\n downloadInkConsumptionPerJobReport,\r\n setActiveDate,\r\n setTimeframe,\r\n applyMobileFilters,\r\n closeCalendarModal,\r\n },\r\n dispatch\r\n );\r\n\r\nexport type PbiFilterTimeframeProps = ReturnType &\r\n ReturnType &\r\n OwnProps;\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(PbiFilterTimeframe);\r\n","import React from 'react';\r\nimport SvgIcon, { SvgIconProps } from '@material-ui/core/SvgIcon';\r\n\r\nconst CalendarIcon = (props: SvgIconProps) => {\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 default CalendarIcon;\r\n","import React, { useEffect, useState } from 'react';\r\nimport { Backdrop, Box, Fade, Modal, ClickAwayListener } from '@material-ui/core';\r\nimport styled from 'styled-components';\r\nimport PbiFilterTimeline from '../PbiFilter/PbiFilterTimeframeContainer';\r\nimport MobileDatePicker from './MobileDatePicker';\r\nimport { TimeFrame } from 'models/ReportData';\r\nimport { isHistorical } from 'helpers/date';\r\n\r\nconst MobileModalDatePicker = styled.div<{ screenWidth: number; popUpHeight: number }>`\r\n width: ${props => props.screenWidth}px;\r\n height: ${props => props.popUpHeight}px;\r\n background-color: white;\r\n display: flex;\r\n flex-direction: column;\r\n`;\r\n\r\nconst PbiFilterTimelinePlaceHolder = styled.div`\r\n width: 100%;\r\n min-height: 66px;\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n`;\r\nconst DatePickerPlaceHolder = styled.div`\r\n width: 100%;\r\n height: 100%;\r\n position: relative;\r\n`;\r\nconst TodayButtonPlaceHolder = styled.div<{ popUpHeight: number; height: number }>`\r\n width: 100%;\r\n min-height: ${props => props.height}px;\r\n position: absolute;\r\n top: ${props => props.popUpHeight - props.height}px;\r\n background: rgba(255, 255, 255, 0.8);\r\n backdrop-filter: blur(6px);\r\n border-top: 1px solid #c5d0de;\r\n`;\r\nconst TodayButton = styled.button`\r\n all: unset;\r\n width: 100%;\r\n height: 56px;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n color: #2ea1f8;\r\n font-family: 'Rubik';\r\n font-style: normal;\r\n font-weight: 400;\r\n font-size: 20px;\r\n line-height: 24px;\r\n &:focus {\r\n background-color: #edf7ff;\r\n }\r\n`;\r\n\r\ntype MobileFilterCalendarModalProps = {\r\n isOpen: boolean;\r\n pbiReportHeight: number;\r\n screenHeight: number;\r\n screenWidth: number;\r\n timeframe: TimeFrame;\r\n startDate: Date;\r\n endDate: Date;\r\n selectedDay: Date;\r\n filterState: any;\r\n filterData: any;\r\n setActiveDate: (date: Date) => void;\r\n closeCalendarModal: () => void;\r\n onClose: () => void;\r\n onDone: () => void;\r\n};\r\nconst MobileFilterCalendarModal = (props: MobileFilterCalendarModalProps) => {\r\n const {\r\n isOpen,\r\n pbiReportHeight,\r\n screenHeight,\r\n screenWidth,\r\n timeframe,\r\n startDate,\r\n endDate,\r\n selectedDay,\r\n filterState,\r\n filterData,\r\n closeCalendarModal,\r\n setActiveDate,\r\n onClose,\r\n onDone,\r\n } = props;\r\n const popUpstyle = {\r\n position: 'absolute' as 'absolute',\r\n top: 0,\r\n };\r\n //*this is state for controlled component MobileFilterTimeFrame.tsx used as callback - need to be shared with date picker\r\n\r\n //*this value comes from css styles\r\n const verticalOffset = 77;\r\n const topBorder = screenHeight - pbiReportHeight + verticalOffset;\r\n popUpstyle.top = topBorder;\r\n const popUpHeight = screenHeight - topBorder;\r\n\r\n const handleLastUpdateClick = () => {\r\n setActiveDate(filterData.endDate || new Date());\r\n closeCalendarModal();\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 TODAY\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\nexport default MobileFilterCalendarModal;\r\n","import React from 'react';\r\nimport styled from 'styled-components';\r\nimport PbiFilterTimeline from '../PbiFilter/PbiFilterTimeframeContainer';\r\nimport PbiFilterDate from '../PbiFilter/PbiFilterDateContainer';\r\nimport { StyledComponentWithAnyType } from 'store/storeTypes';\r\nimport ButtonOk from '../_common/ButtonOk';\r\nimport ButtonCancel from '../_common/ButtonCancel';\r\nimport Modal from '../_common/Modal';\r\n\r\nconst PbiFilterDateContainer = styled.div``;\r\n\r\nconst ButtonCancelFilter = styled(ButtonCancel)`\r\n border: none;\r\n font-size: 14px;\r\n line-height: 20px;\r\n width: 97px;\r\n`;\r\n\r\nconst ButtonOkFilter = styled(ButtonOk)`\r\n width: 97px;\r\n font-size: 14px;\r\n line-height: 20px;\r\n`;\r\n\r\nconst FilterModal = styled(Modal)``;\r\n\r\nconst FilterCalendarContainer = styled.div`\r\n padding: 15px;\r\n`;\r\n\r\nconst PopupButtons = styled.div`\r\n display: flex;\r\n justify-content: flex-end;\r\n margin-top: auto;\r\n .MuiButtonBase-root {\r\n line-height: 35px;\r\n }\r\n button:not(:last-child) {\r\n margin-right: 16px;\r\n }\r\n @media (max-width: 400px) {\r\n button {\r\n flex-grow: 1;\r\n }\r\n }\r\n`;\r\nconst DesktopFilterCalendarModal = props => {\r\n const { isOpen, onClose, onDone } = props;\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 Cancel\r\n */}\r\n \r\n Done\r\n \r\n \r\n \r\n \r\n );\r\n};\r\nexport default DesktopFilterCalendarModal;\r\n","import React from 'react';\r\nimport { FilterCalenderModalProps } from './FilterCalendarModalContainer';\r\nimport MobileFilterCalendarModal from './MobileFilterCalendarModal';\r\nimport DesktopFilterCalendarModal from './DesktopFilterCalendarModal';\r\n\r\nconst FilterCalenderModal = React.memo((props: FilterCalenderModalProps) => {\r\n const {\r\n selectedSystemGroup,\r\n isOpen,\r\n filterState,\r\n filterData,\r\n isMobile,\r\n pbiReportHeight,\r\n screenHeight,\r\n screenWidth,\r\n timeframe,\r\n selectedDay,\r\n startDate,\r\n endDate,\r\n closeCalendarModal,\r\n applyMobileFilters,\r\n setFilterFromUriQuery,\r\n setTimeframe,\r\n setActiveDate,\r\n } = props;\r\n const { defaultQueriesFilter } = filterState;\r\n const onDone = () => {\r\n applyMobileFilters(true);\r\n closeCalendarModal();\r\n };\r\n\r\n const onClose = () => {\r\n setFilterFromUriQuery(defaultQueriesFilter);\r\n applyMobileFilters(false);\r\n closeCalendarModal();\r\n };\r\n return isMobile ? (\r\n \r\n ) : (\r\n \r\n );\r\n});\r\n\r\nexport default FilterCalenderModal;\r\n","import { connect } from 'react-redux';\r\nimport { bindActionCreators, Dispatch } from 'redux';\r\nimport FilterCalenderModal from './FilterCalendarModal';\r\nimport { Store, MODAL_STATUS } from 'store/storeTypes';\r\nimport { closeCalendarModal } from 'actions/filterCalendarUiAction';\r\nimport {\r\n applyMobileFilters,\r\n jumpToLatestPeriod,\r\n setActiveDate,\r\n setFilterFromUriQuery,\r\n setTimeframe,\r\n} from 'actions/reportFilterActions';\r\nimport {\r\n pbiReportHeightSelector,\r\n screenHeightSelector,\r\n screenWidthSelector,\r\n} from 'reducers/appUserReducer';\r\nimport { selectedDateSelector, timeFrameSelector } from 'reducers/reports/filterStateReducer';\r\nimport { systemGroupSelector } from 'reducers/ui/systemGroupUiReducer';\r\nimport { endDateSelector, startDateSelector } from 'reducers/reports/filterDataReducer';\r\ntype OwnProps = {\r\n isMobile?: boolean;\r\n};\r\nconst mapStateToProps = (state: Store) => ({\r\n selectedSystemGroup: systemGroupSelector(state),\r\n isOpen: state.ui.filterCalenderModal.status !== MODAL_STATUS.CLOSED,\r\n filterState: state.reports.filterState[state.ui.selectedSystemGroup]!,\r\n filterData: state.reports.filterData,\r\n screenWidth: screenWidthSelector(state),\r\n screenHeight: screenHeightSelector(state),\r\n pbiReportHeight: pbiReportHeightSelector(state),\r\n timeframe: timeFrameSelector(state),\r\n startDate: startDateSelector(state),\r\n endDate: endDateSelector(state),\r\n selectedDay: selectedDateSelector(state),\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch: Dispatch) =>\r\n bindActionCreators(\r\n {\r\n closeCalendarModal,\r\n applyMobileFilters,\r\n setActiveDay: setActiveDate,\r\n jumpToLatestPeriod,\r\n setFilterFromUriQuery,\r\n setActiveDate,\r\n setTimeframe,\r\n },\r\n dispatch\r\n );\r\n\r\nexport type FilterCalenderModalProps = ReturnType &\r\n ReturnType &\r\n OwnProps;\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(FilterCalenderModal);\r\n","import styled from 'styled-components/macro';\r\n\r\nconst Desktop = styled.div`\r\n flex-grow: 1;\r\n display: flex;\r\n @media (max-width: 750px) {\r\n display: none;\r\n }\r\n`;\r\n\r\nexport default Desktop;\r\n","var _path, _path2, _path3, _circle, _circle2, _circle3, _circle4, _circle5, _circle6, _path4, _path5;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgKornitLogo(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 227,\n height: 76,\n viewBox: \"0 0 227 76\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M63.5 64L49.5 3.5L74 29.5L63.5 64Z\",\n stroke: \"white\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M49.5 3.5L14.5 11.5L4 46.5L49.5 3.5Z\",\n stroke: \"white\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M63.5 64L4 46.5L28.5 73L63.5 64Z\",\n stroke: \"white\"\n })), _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 49.5,\n cy: 3.5,\n r: 3.5,\n fill: \"white\"\n })), _circle2 || (_circle2 = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 14.5,\n cy: 11.5,\n r: 3.5,\n fill: \"white\"\n })), _circle3 || (_circle3 = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 3.5,\n cy: 46.5,\n r: 3.5,\n fill: \"white\"\n })), _circle4 || (_circle4 = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 28.5,\n cy: 72.5,\n r: 3.5,\n fill: \"white\"\n })), _circle5 || (_circle5 = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 63.5,\n cy: 64.5,\n r: 3.5,\n fill: \"white\"\n })), _circle6 || (_circle6 = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 74.5,\n cy: 29.5,\n r: 3.5,\n fill: \"white\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M84.64 30C84.48 30 84.344 29.952 84.232 29.856C84.136 29.744 84.088 29.608 84.088 29.448V13.776C84.088 13.6 84.136 13.464 84.232 13.368C84.344 13.256 84.48 13.2 84.64 13.2H85.84C86.016 13.2 86.152 13.256 86.248 13.368C86.36 13.464 86.416 13.6 86.416 13.776V19.728L92.824 13.584C93.08 13.328 93.392 13.2 93.76 13.2H95.056C95.184 13.2 95.296 13.248 95.392 13.344C95.488 13.44 95.536 13.552 95.536 13.68C95.536 13.808 95.504 13.912 95.44 13.992L88.024 21.24L95.92 29.184C96 29.28 96.04 29.392 96.04 29.52C96.04 29.648 95.992 29.76 95.896 29.856C95.8 29.952 95.688 30 95.56 30H94.216C93.864 30 93.552 29.864 93.28 29.592L86.416 22.848V29.448C86.416 29.608 86.36 29.744 86.248 29.856C86.136 29.952 86 30 85.84 30H84.64ZM102.576 30.24C100.816 30.24 99.4475 29.744 98.4715 28.752C97.5115 27.76 96.9995 26.44 96.9355 24.792L96.9115 23.76L96.9355 22.728C96.9995 21.096 97.5195 19.784 98.4955 18.792C99.4715 17.784 100.832 17.28 102.576 17.28C104.32 17.28 105.68 17.784 106.656 18.792C107.632 19.784 108.152 21.096 108.216 22.728C108.232 22.904 108.24 23.248 108.24 23.76C108.24 24.272 108.232 24.616 108.216 24.792C108.152 26.44 107.632 27.76 106.656 28.752C105.696 29.744 104.336 30.24 102.576 30.24ZM102.576 28.392C103.584 28.392 104.376 28.072 104.952 27.432C105.544 26.792 105.864 25.872 105.912 24.672C105.928 24.512 105.936 24.208 105.936 23.76C105.936 23.312 105.928 23.008 105.912 22.848C105.864 21.648 105.544 20.728 104.952 20.088C104.376 19.448 103.584 19.128 102.576 19.128C101.568 19.128 100.768 19.448 100.176 20.088C99.5835 20.728 99.2715 21.648 99.2395 22.848L99.2155 23.76L99.2395 24.672C99.2715 25.872 99.5835 26.792 100.176 27.432C100.768 28.072 101.568 28.392 102.576 28.392ZM111.797 30C111.637 30 111.501 29.952 111.389 29.856C111.293 29.744 111.245 29.608 111.245 29.448V18.096C111.245 17.936 111.293 17.8 111.389 17.688C111.501 17.576 111.637 17.52 111.797 17.52H112.901C113.061 17.52 113.197 17.576 113.309 17.688C113.421 17.8 113.477 17.936 113.477 18.096V19.152C114.133 18.064 115.253 17.52 116.837 17.52H117.773C117.933 17.52 118.061 17.576 118.157 17.688C118.269 17.784 118.325 17.912 118.325 18.072V19.056C118.325 19.216 118.269 19.344 118.157 19.44C118.061 19.536 117.933 19.584 117.773 19.584H116.333C115.469 19.584 114.789 19.84 114.293 20.352C113.797 20.848 113.549 21.528 113.549 22.392V29.448C113.549 29.608 113.493 29.744 113.381 29.856C113.269 29.952 113.133 30 112.973 30H111.797ZM120.914 30C120.754 30 120.618 29.952 120.506 29.856C120.41 29.744 120.362 29.608 120.362 29.448V18.072C120.362 17.912 120.41 17.784 120.506 17.688C120.618 17.576 120.754 17.52 120.914 17.52H122.042C122.202 17.52 122.33 17.576 122.426 17.688C122.538 17.784 122.594 17.912 122.594 18.072V19.128C123.058 18.536 123.602 18.08 124.226 17.76C124.866 17.44 125.658 17.28 126.602 17.28C128.138 17.28 129.33 17.776 130.178 18.768C131.042 19.744 131.474 21.048 131.474 22.68V29.448C131.474 29.608 131.418 29.744 131.306 29.856C131.21 29.952 131.082 30 130.922 30H129.722C129.562 30 129.426 29.952 129.314 29.856C129.218 29.744 129.17 29.608 129.17 29.448V22.8C129.17 21.664 128.89 20.784 128.33 20.16C127.786 19.536 126.994 19.224 125.954 19.224C124.946 19.224 124.146 19.544 123.554 20.184C122.962 20.808 122.666 21.68 122.666 22.8V29.448C122.666 29.608 122.61 29.744 122.498 29.856C122.402 29.952 122.274 30 122.114 30H120.914ZM135.277 15.192C135.117 15.192 134.981 15.144 134.869 15.048C134.773 14.936 134.725 14.8 134.725 14.64V13.344C134.725 13.184 134.773 13.048 134.869 12.936C134.981 12.824 135.117 12.768 135.277 12.768H136.789C136.949 12.768 137.085 12.824 137.197 12.936C137.309 13.048 137.365 13.184 137.365 13.344V14.64C137.365 14.8 137.309 14.936 137.197 15.048C137.085 15.144 136.949 15.192 136.789 15.192H135.277ZM135.469 30C135.309 30 135.173 29.952 135.061 29.856C134.965 29.744 134.917 29.608 134.917 29.448V18.072C134.917 17.912 134.965 17.784 135.061 17.688C135.173 17.576 135.309 17.52 135.469 17.52H136.621C136.781 17.52 136.909 17.576 137.005 17.688C137.117 17.784 137.173 17.912 137.173 18.072V29.448C137.173 29.608 137.117 29.744 137.005 29.856C136.909 29.952 136.781 30 136.621 30H135.469ZM145.601 30C143.073 30 141.809 28.592 141.809 25.776V19.44H139.937C139.777 19.44 139.641 19.392 139.529 19.296C139.433 19.184 139.385 19.048 139.385 18.888V18.072C139.385 17.912 139.433 17.784 139.529 17.688C139.641 17.576 139.777 17.52 139.937 17.52H141.809V13.512C141.809 13.352 141.857 13.224 141.953 13.128C142.065 13.016 142.201 12.96 142.361 12.96H143.489C143.649 12.96 143.777 13.016 143.873 13.128C143.985 13.224 144.041 13.352 144.041 13.512V17.52H147.017C147.177 17.52 147.305 17.576 147.401 17.688C147.513 17.784 147.569 17.912 147.569 18.072V18.888C147.569 19.048 147.513 19.184 147.401 19.296C147.305 19.392 147.177 19.44 147.017 19.44H144.041V25.608C144.041 26.408 144.177 27.016 144.449 27.432C144.721 27.832 145.169 28.032 145.793 28.032H147.257C147.417 28.032 147.545 28.088 147.641 28.2C147.753 28.296 147.809 28.424 147.809 28.584V29.448C147.809 29.608 147.753 29.744 147.641 29.856C147.545 29.952 147.417 30 147.257 30H145.601Z\",\n fill: \"white\"\n })), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M85.672 64C85.432 64 85.228 63.916 85.06 63.748C84.892 63.58 84.808 63.376 84.808 63.136V39.7C84.808 39.436 84.88 39.22 85.024 39.052C85.192 38.884 85.408 38.8 85.672 38.8H88.912C89.176 38.8 89.392 38.884 89.56 39.052C89.728 39.22 89.812 39.436 89.812 39.7V48.124L97.84 39.448C98.2 39.016 98.668 38.8 99.244 38.8H102.916C103.108 38.8 103.276 38.872 103.42 39.016C103.588 39.16 103.672 39.34 103.672 39.556C103.672 39.724 103.612 39.868 103.492 39.988L93.7 50.86L104.212 62.776C104.308 62.944 104.356 63.1 104.356 63.244C104.356 63.46 104.284 63.64 104.14 63.784C103.996 63.928 103.828 64 103.636 64H99.856C99.352 64 98.992 63.904 98.776 63.712C98.56 63.496 98.44 63.376 98.416 63.352L89.812 53.848V63.136C89.812 63.376 89.728 63.58 89.56 63.748C89.392 63.916 89.176 64 88.912 64H85.672ZM114.419 64.36C111.587 64.36 109.403 63.64 107.867 62.2C106.331 60.76 105.503 58.768 105.383 56.224L105.347 54.64L105.383 53.056C105.503 50.536 106.343 48.556 107.903 47.116C109.463 45.652 111.635 44.92 114.419 44.92C117.179 44.92 119.339 45.652 120.899 47.116C122.459 48.556 123.299 50.536 123.419 53.056C123.443 53.344 123.455 53.872 123.455 54.64C123.455 55.408 123.443 55.936 123.419 56.224C123.299 58.768 122.471 60.76 120.935 62.2C119.399 63.64 117.227 64.36 114.419 64.36ZM114.419 60.724C115.691 60.724 116.663 60.328 117.335 59.536C118.031 58.744 118.403 57.58 118.451 56.044C118.475 55.804 118.487 55.336 118.487 54.64C118.487 53.944 118.475 53.476 118.451 53.236C118.403 51.7 118.031 50.536 117.335 49.744C116.639 48.928 115.667 48.52 114.419 48.52C113.147 48.52 112.163 48.928 111.467 49.744C110.771 50.536 110.399 51.7 110.351 53.236L110.315 54.64L110.351 56.044C110.399 57.58 110.771 58.744 111.467 59.536C112.163 60.328 113.147 60.724 114.419 60.724ZM128.306 64C128.066 64 127.862 63.916 127.694 63.748C127.526 63.58 127.442 63.376 127.442 63.136V46.144C127.442 45.88 127.526 45.676 127.694 45.532C127.862 45.364 128.066 45.28 128.306 45.28H131.294C131.558 45.28 131.762 45.364 131.906 45.532C132.074 45.676 132.158 45.88 132.158 46.144V47.62C133.622 45.82 135.626 44.92 138.17 44.92C140.378 44.92 142.13 45.64 143.426 47.08C144.722 48.52 145.37 50.5 145.37 53.02V63.136C145.37 63.376 145.286 63.58 145.118 63.748C144.974 63.916 144.77 64 144.506 64H141.266C141.026 64 140.822 63.916 140.654 63.748C140.486 63.58 140.402 63.376 140.402 63.136V53.236C140.402 51.844 140.054 50.764 139.358 49.996C138.686 49.204 137.714 48.808 136.442 48.808C135.218 48.808 134.234 49.204 133.49 49.996C132.746 50.788 132.374 51.868 132.374 53.236V63.136C132.374 63.376 132.29 63.58 132.122 63.748C131.978 63.916 131.774 64 131.51 64H128.306ZM150.806 64C150.566 64 150.362 63.916 150.194 63.748C150.026 63.58 149.942 63.376 149.942 63.136V46.144C149.942 45.88 150.026 45.676 150.194 45.532C150.362 45.364 150.566 45.28 150.806 45.28H153.794C154.058 45.28 154.262 45.364 154.406 45.532C154.574 45.676 154.658 45.88 154.658 46.144V47.62C156.122 45.82 158.126 44.92 160.67 44.92C162.878 44.92 164.63 45.64 165.926 47.08C167.222 48.52 167.87 50.5 167.87 53.02V63.136C167.87 63.376 167.786 63.58 167.618 63.748C167.474 63.916 167.27 64 167.006 64H163.766C163.526 64 163.322 63.916 163.154 63.748C162.986 63.58 162.902 63.376 162.902 63.136V53.236C162.902 51.844 162.554 50.764 161.858 49.996C161.186 49.204 160.214 48.808 158.942 48.808C157.718 48.808 156.734 49.204 155.99 49.996C155.246 50.788 154.874 51.868 154.874 53.236V63.136C154.874 63.376 154.79 63.58 154.622 63.748C154.478 63.916 154.274 64 154.01 64H150.806ZM180.542 64.36C177.854 64.36 175.718 63.592 174.134 62.056C172.574 60.52 171.746 58.336 171.65 55.504L171.614 54.604C171.614 51.604 172.394 49.24 173.954 47.512C175.538 45.784 177.722 44.92 180.506 44.92C183.362 44.92 185.558 45.784 187.094 47.512C188.654 49.24 189.434 51.544 189.434 54.424V55.18C189.434 55.42 189.35 55.624 189.182 55.792C189.014 55.96 188.798 56.044 188.534 56.044H176.582V56.332C176.63 57.676 176.99 58.792 177.662 59.68C178.358 60.544 179.306 60.976 180.506 60.976C181.874 60.976 182.99 60.424 183.854 59.32C184.07 59.056 184.238 58.9 184.358 58.852C184.478 58.78 184.682 58.744 184.97 58.744H188.138C188.354 58.744 188.534 58.804 188.678 58.924C188.846 59.044 188.93 59.212 188.93 59.428C188.93 60.004 188.582 60.688 187.886 61.48C187.214 62.248 186.242 62.92 184.97 63.496C183.698 64.072 182.222 64.36 180.542 64.36ZM184.466 52.984V52.912C184.466 51.496 184.106 50.368 183.386 49.528C182.69 48.664 181.73 48.232 180.506 48.232C179.282 48.232 178.322 48.664 177.626 49.528C176.93 50.368 176.582 51.496 176.582 52.912V52.984H184.466ZM201.355 64.36C198.715 64.36 196.603 63.628 195.019 62.164C193.459 60.7 192.631 58.672 192.535 56.08L192.499 54.64L192.535 53.2C192.631 50.608 193.459 48.58 195.019 47.116C196.603 45.652 198.715 44.92 201.355 44.92C203.251 44.92 204.847 45.256 206.143 45.928C207.463 46.6 208.435 47.428 209.059 48.412C209.707 49.372 210.055 50.296 210.103 51.184C210.127 51.424 210.043 51.628 209.851 51.796C209.683 51.964 209.479 52.048 209.239 52.048H206.035C205.771 52.048 205.579 52 205.459 51.904C205.339 51.784 205.219 51.58 205.099 51.292C204.739 50.38 204.259 49.72 203.659 49.312C203.083 48.904 202.339 48.7 201.427 48.7C200.203 48.7 199.243 49.084 198.547 49.852C197.875 50.62 197.515 51.796 197.467 53.38L197.431 54.712L197.467 55.9C197.611 59.02 198.931 60.58 201.427 60.58C202.363 60.58 203.119 60.388 203.695 60.004C204.271 59.596 204.739 58.924 205.099 57.988C205.195 57.724 205.303 57.532 205.423 57.412C205.567 57.292 205.771 57.232 206.035 57.232H209.239C209.479 57.232 209.683 57.316 209.851 57.484C210.043 57.652 210.127 57.856 210.103 58.096C210.055 58.936 209.719 59.848 209.095 60.832C208.471 61.792 207.511 62.62 206.215 63.316C204.919 64.012 203.299 64.36 201.355 64.36ZM222.352 64C220.168 64 218.524 63.436 217.42 62.308C216.316 61.156 215.764 59.476 215.764 57.268V49.132H212.92C212.68 49.132 212.476 49.048 212.308 48.88C212.14 48.712 212.056 48.508 212.056 48.268V46.144C212.056 45.904 212.14 45.7 212.308 45.532C212.476 45.364 212.68 45.28 212.92 45.28H215.764V39.304C215.764 39.04 215.848 38.836 216.016 38.692C216.184 38.524 216.388 38.44 216.628 38.44H219.616C219.88 38.44 220.084 38.524 220.228 38.692C220.396 38.836 220.48 39.04 220.48 39.304V45.28H224.98C225.22 45.28 225.424 45.364 225.592 45.532C225.76 45.7 225.844 45.904 225.844 46.144V48.268C225.844 48.508 225.76 48.712 225.592 48.88C225.424 49.048 225.22 49.132 224.98 49.132H220.48V56.872C220.48 57.904 220.66 58.684 221.02 59.212C221.38 59.74 221.968 60.004 222.784 60.004H225.304C225.568 60.004 225.772 60.088 225.916 60.256C226.084 60.4 226.168 60.604 226.168 60.868V63.136C226.168 63.376 226.084 63.58 225.916 63.748C225.772 63.916 225.568 64 225.304 64H222.352Z\",\n fill: \"white\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgKornitLogo);\nexport default __webpack_public_path__ + \"static/media/kornitLogo.f9c7d6a9.svg\";\nexport { ForwardRef as ReactComponent };","import React, { Fragment, useEffect, memo } from 'react';\r\nimport styled from 'styled-components/macro';\r\nimport PbiFilterSystems from './PbiFilterSystemsContainer';\r\nimport PbiFilterTimeframe from './PbiFilterTimeframeContainer';\r\nimport { PbiFilterProps } from './PbiFilterContainer';\r\nimport CalendarIcon from '../_common/Icons/CalendarIcon';\r\nimport FilterCalenderModal from '../FiltersCalendarModal/FilterCalendarModalContainer';\r\nimport { getQueryParams, updateUriQueryAndPushHistory } from '../../helpers/navigation';\r\nimport Desktop from '../_common/Desktop';\r\nimport { isValid } from 'date-fns';\r\nimport PbiFilterSystemGroup from './PbiFilterSystemGroupContainer';\r\nimport { UserSystemGroupStrings } from 'store/storeTypes';\r\nimport {\r\n apiRefreshInterval,\r\n getDayForDateMobile,\r\n getMonthForDate,\r\n getQuarterForDate,\r\n getWeekForDate,\r\n getYearForDate,\r\n} from 'helpers/date';\r\nimport { REPORTS_CONFIG, SubReportTypes, TimeFrame } from 'models/ReportData';\r\nimport { ReactComponent as BackArrow } from '../../assets/icons/BackArrow.svg';\r\nimport { ReactComponent as ServiceTicketIcon } from '../../assets/icons/ServiceTicketIcon.svg';\r\nimport { makeTreeData } from 'components/_common/TreeSelect/treeHelpers';\r\nimport { KonnectAnalytics } from 'KonnectAnalytics/konnectAnalytics';\r\nconst FilterContainer = styled.div`\r\n display: flex;\r\n position: relative;\r\n background-color: #fff;\r\n border-bottom: 1px solid #e6eaee;\r\n height: 49px;\r\n max-height: 49px;\r\n align-items: center;\r\n padding-top: 2px;\r\n user-select: none;\r\n &.disabled::after {\r\n content: '';\r\n position: absolute;\r\n width: 100%;\r\n height: 100%;\r\n background: rgba(255, 255, 255, 0.7);\r\n }\r\n @media (max-width: 750px) {\r\n height: 65px;\r\n max-height: 65px;\r\n }\r\n`;\r\n\r\nconst FilterSubContainer = styled.div`\r\n display: flex;\r\n align-items: center;\r\n flex-grow: 1;\r\n height: 49px;\r\n max-height: 49px;\r\n min-height: 49px;\r\n box-sizing: border-box;\r\n &.drill-page {\r\n margin-right: 81px;\r\n }\r\n`;\r\n\r\nconst MobileView = styled.div`\r\n display: none;\r\n @media (max-width: 750px) {\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n width: 100%;\r\n height: 65px;\r\n max-height: 65px;\r\n }\r\n`;\r\n\r\nconst MobileIconWrapper = styled.div`\r\n margin-right: 20px;\r\n padding-left: 5%;\r\n`;\r\n\r\nconst MobileDateWrapper = styled.div`\r\n font-family: Rubik;\r\n font-style: normal;\r\n font-weight: 500;\r\n font-size: 14px;\r\n line-height: 20px;\r\n color: #354052;\r\n`;\r\nconst ServiceTicketResponsiveContainer = styled.div`\r\n display: flex;\r\n justify-content: flex-start;\r\n min-width: 200px;\r\n align-items: center;\r\n min-height: 70px;\r\n box-sizing: border-box;\r\n`;\r\nconst BackArrowWrapper = styled.div`\r\n min-width: 50px;\r\n min-height: 40px;\r\n max-height: 55px;\r\n border-right: 1px solid #c5d0de;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n &:hover {\r\n background-color: #ececec;\r\n }\r\n`;\r\nconst ServiceTicketHeaderWrapper = styled.div`\r\n min-width: 150px;\r\n font-family: Rubik;\r\n font-style: normal;\r\n font-weight: normal;\r\n font-size: 16px;\r\n line-height: 19px;\r\n letter-spacing: 0.5625px;\r\n color: #354052;\r\n display: flex;\r\n justify-content: space-around;\r\n align-items: center;\r\n padding-left: 20px;\r\n`;\r\nconst ServiceTicketIconWrapper = styled.div``;\r\nconst ServiceTicketTextnWrapper = styled.div`\r\n padding-left: 10px;\r\n`;\r\nconst PbiFilter = (props: PbiFilterProps) => {\r\n const {\r\n filterDataLoaded,\r\n selectedSystemGroup,\r\n filterStateLoaded,\r\n filterState,\r\n filterData,\r\n location,\r\n stateInitialized,\r\n userSettings,\r\n openCalendarModal,\r\n setInitFilterState,\r\n getReportsFilterDates,\r\n getReportsFilterSites,\r\n getReportsCurrentState,\r\n setFilterFromUriQuery,\r\n applyMobileFilters,\r\n getDefaultFilterQueries,\r\n setTimeframe,\r\n setFilterSystemsState,\r\n getEmptyState,\r\n\r\n day,\r\n activeReport,\r\n history,\r\n isSiteExtensionIsLoaded,\r\n screenWidth,\r\n isTimeFrameWasChangedFromJobAnalysisPage,\r\n } = props;\r\n const {\r\n selectedDate,\r\n timeframe,\r\n selectedSiteIdsStringified,\r\n selectedModelIdsStringified,\r\n selectedSystemSerialsStringified,\r\n } = filterState;\r\n const { search } = location;\r\n const filterDataAndStateLoaded = filterDataLoaded && filterStateLoaded;\r\n const urlParams = getQueryParams(search);\r\n\r\n // Get filters data from API\r\n useEffect(() => {\r\n if (!filterDataLoaded) {\r\n getReportsFilterDates();\r\n getReportsFilterSites();\r\n }\r\n if (isSiteExtensionIsLoaded) {\r\n getEmptyState();\r\n }\r\n }, [filterDataLoaded, getReportsFilterDates, getReportsFilterSites, isSiteExtensionIsLoaded]);\r\n\r\n // Get filters state from API\r\n useEffect(() => {\r\n if (!filterStateLoaded) getReportsCurrentState();\r\n }, [filterStateLoaded, getReportsCurrentState]);\r\n\r\n // Get filters refresh from API\r\n useEffect(() => {\r\n // if (!FILTER_HIDE) {\r\n return apiRefreshInterval({ day, timeframe }, () => {\r\n getReportsCurrentState();\r\n });\r\n // }\r\n }, []);\r\n // Set filter init state\r\n useEffect(() => {\r\n if (filterDataAndStateLoaded && !stateInitialized) {\r\n setInitFilterState();\r\n\r\n const allSystemsSelected = makeTreeData({\r\n rootElements: filterData[selectedSystemGroup].sites,\r\n parentElements: filterData[selectedSystemGroup].models.map(m => ({\r\n id: m.id,\r\n name: m.name,\r\n rootId: m.siteId,\r\n })),\r\n childElements: filterData[selectedSystemGroup].systems.map(s => ({\r\n id: s.name,\r\n name: s.name,\r\n rootId: s.siteId,\r\n parentId: s.modelId,\r\n })),\r\n rootSelectedIds: filterData[selectedSystemGroup].sites.map(site => site.id),\r\n parentSelectedIds: filterData[selectedSystemGroup].models.map(model => model.id),\r\n childSelectedIds: filterData[selectedSystemGroup].systems.map(system => system.name),\r\n\r\n enableLowLevelSelect: true,\r\n });\r\n setFilterSystemsState(allSystemsSelected);\r\n }\r\n }, [filterDataAndStateLoaded, setInitFilterState, stateInitialized]);\r\n\r\n // URL query => filter state\r\n useEffect(() => {\r\n if (stateInitialized && search) {\r\n setFilterFromUriQuery({\r\n timeframe: urlParams.get('timeframe') as TimeFrame,\r\n selectedSystemGroup: urlParams.get('selectedSystemGroup') as UserSystemGroupStrings,\r\n selectedDate: urlParams.get('day'),\r\n selectedSiteIds: urlParams.get('sites'),\r\n selectedModelIds: urlParams.get('models'),\r\n selectedSystemSerials: urlParams.get('systems'),\r\n });\r\n }\r\n }, [stateInitialized, search]);\r\n // Filter state => URL query\r\n useEffect(() => {\r\n if (!filterDataAndStateLoaded || !location.pathname.match(/\\/reports\\//)) {\r\n return;\r\n }\r\n if (activeReport && activeReport === 'jobs' && !isTimeFrameWasChangedFromJobAnalysisPage) {\r\n // this if is needed after job analysis supprot day filter;\r\n //functionality: if user doesn't select timeframe on job analysis page - by default there will be week filter\r\n timeframe !== 'week' &&\r\n timeframe !== 'custom' &&\r\n setTimeframe(\r\n REPORTS_CONFIG[selectedSystemGroup]![activeReport].defaultTimeFrame,\r\n filterData[selectedSystemGroup].startDate\r\n );\r\n } else if (\r\n activeReport &&\r\n (timeframe === undefined ||\r\n !REPORTS_CONFIG[selectedSystemGroup][activeReport].timeFrames.includes(timeframe))\r\n ) {\r\n setTimeframe(\r\n REPORTS_CONFIG[selectedSystemGroup]![activeReport].defaultTimeFrame,\r\n filterData[selectedSystemGroup].startDate\r\n );\r\n } else {\r\n updateUriQueryAndPushHistory(\r\n {\r\n timeframe,\r\n day: selectedDate && isValid(selectedDate) ? selectedDate.toISOString() : undefined,\r\n selectedSystemGroup,\r\n },\r\n activeReport\r\n );\r\n }\r\n }, [\r\n timeframe,\r\n selectedDate,\r\n selectedSystemGroup,\r\n selectedSiteIdsStringified,\r\n selectedModelIdsStringified,\r\n selectedSystemSerialsStringified,\r\n filterDataAndStateLoaded,\r\n location.pathname,\r\n ]);\r\n const onOpenCalendarModal = () => {\r\n getDefaultFilterQueries({\r\n timeframe: urlParams.get('timeframe') as TimeFrame,\r\n selectedSystemGroup: urlParams.get('selectedSystemGroup') as UserSystemGroupStrings,\r\n selectedDate: urlParams.get('day'),\r\n selectedSiteIds: urlParams.get('sites'),\r\n selectedModelIds: urlParams.get('models'),\r\n selectedSystemSerials: urlParams.get('systems'),\r\n });\r\n applyMobileFilters(false);\r\n KonnectAnalytics.toggleDatePickerCalendar();\r\n openCalendarModal();\r\n };\r\n\r\n const renderDateTitle = () => {\r\n return (\r\n selectedDate && (\r\n \r\n {timeframe === 'day' && getDayForDateMobile(selectedDate).title}\r\n {timeframe === 'week' && getWeekForDate(selectedDate).title}\r\n {timeframe === 'month' && getMonthForDate(selectedDate).title}\r\n {timeframe === 'quarter' && getQuarterForDate(selectedDate).title}\r\n {timeframe === 'year' && getYearForDate(selectedDate).title}\r\n \r\n )\r\n );\r\n };\r\n\r\n return (\r\n \r\n {stateInitialized && (\r\n \r\n {activeReport !== SubReportTypes.ServiceTicket ? (\r\n <>\r\n {screenWidth <= 750 && (\r\n \r\n \r\n {activeReport === 'systemPage' ? (\r\n history.goBack()}>\r\n \r\n \r\n ) : (\r\n \r\n )}\r\n
\r\n \r\n \r\n \r\n \r\n {renderDateTitle()}\r\n \r\n {/* pop up calendar for mobile is here should be replaced after refactoring */}\r\n \r\n
\r\n {userSettings.userSystemGroup?.length >= 2 &&\r\n !location.pathname.includes(SubReportTypes.SystemPage) &&\r\n !location.pathname.includes(SubReportTypes.MachineConfig) ? (\r\n
\r\n \r\n
\r\n ) : (\r\n <>\r\n
\r\n \r\n )}\r\n
\r\n
\r\n )}\r\n {screenWidth > 750 && (\r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n ) : (\r\n <>\r\n \r\n history.goBack()}>\r\n \r\n \r\n \r\n \r\n \r\n \r\n Service Ticket \r\n \r\n \r\n \r\n )}\r\n
\r\n )}\r\n
\r\n );\r\n};\r\n\r\nexport default memo(PbiFilter);\r\n","import { connect } from 'react-redux';\r\nimport { bindActionCreators, Dispatch } from 'redux';\r\nimport { withRouter, RouteComponentProps } from 'react-router-dom';\r\n\r\nimport { Store } from 'store/storeTypes';\r\nimport {\r\n getReportsFilterDates,\r\n getReportsFilterSites,\r\n getReportsCurrentState,\r\n} from 'actions/reportApiActions';\r\nimport {\r\n setInitFilterState,\r\n setFilterFromUriQuery,\r\n setFilterSystemsState,\r\n applyMobileFilters,\r\n getDefaultFilterQueries,\r\n} from 'actions/reportFilterActions';\r\nimport { openCalendarModal } from 'actions/filterCalendarUiAction';\r\nimport PbiFilter from './PbiFilter';\r\nimport { setTimeframe, getEmptyState } from 'actions/reportFilterActions';\r\nimport { screenWidthSelector } from 'reducers/appUserReducer';\r\nimport {\r\n reportCurrentStateIsDoneSelector,\r\n reportsFilterDataIsDoneSelector,\r\n reportsFilterDataIsSiteExtensionIsLoadedSelector,\r\n} from 'reducers/apiStateReducer';\r\nimport { filterCalenderModalSelector } from 'reducers/ui';\r\nimport { systemGroupSelector } from 'reducers/ui/systemGroupUiReducer';\r\nimport { activeReportSelector, filterDataSelector } from 'reducers/reports/filterDataReducer';\r\nimport {\r\n filterStateBySystemGroup,\r\n isStateInitializedBySystemGroup,\r\n isTimeFrameWasChangedFromJobAnalysisPageSelector,\r\n selectedDateSelector,\r\n} from 'reducers/reports/filterStateReducer';\r\nimport { dataUserSettingsSelector } from 'reducers/userSettingsReducer';\r\nimport { systemAnalysisNewNickNameSelector } from 'reducers/systemAnalysisReducer';\r\nconst mapStateToProps = (state: Store) => {\r\n return {\r\n isTimeFrameWasChangedFromJobAnalysisPage: isTimeFrameWasChangedFromJobAnalysisPageSelector(\r\n state\r\n ),\r\n isSiteExtensionIsLoaded: reportsFilterDataIsSiteExtensionIsLoadedSelector(state),\r\n filterDataLoaded: reportsFilterDataIsDoneSelector(state),\r\n filterStateLoaded: reportCurrentStateIsDoneSelector(state),\r\n filterCalenderModal: filterCalenderModalSelector(state),\r\n selectedSystemGroup: systemGroupSelector(state),\r\n filterData: filterDataSelector(state),\r\n activeReport: activeReportSelector(state),\r\n filterState: filterStateBySystemGroup(state),\r\n stateInitialized: isStateInitializedBySystemGroup(state),\r\n day: selectedDateSelector(state),\r\n userSettings: dataUserSettingsSelector(state),\r\n newNickName: systemAnalysisNewNickNameSelector(state),\r\n screenWidth: screenWidthSelector(state),\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch: Dispatch) =>\r\n bindActionCreators(\r\n {\r\n setInitFilterState,\r\n getReportsFilterDates,\r\n getReportsFilterSites,\r\n getReportsCurrentState,\r\n setFilterFromUriQuery,\r\n setFilterSystemsState,\r\n openCalendarModal,\r\n applyMobileFilters,\r\n getDefaultFilterQueries,\r\n setTimeframe,\r\n getEmptyState,\r\n },\r\n dispatch\r\n );\r\n\r\nexport type PbiFilterProps = ReturnType &\r\n ReturnType &\r\n RouteComponentProps;\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withRouter(PbiFilter));\r\n","import React, { Suspense, useEffect, useRef } from 'react';\r\nimport { MainReportTypes, SubReportTypes } from 'models/ReportData';\r\nimport { PbiReportsPageProps } from './PbiReportsPageContainer';\r\nimport { getFilterHideEnv } from 'helpers/envGetters';\r\nimport { Spinner, SpinnerContainer } from 'components/Overview/Styles';\r\nimport PageContainer from 'components/_common/PageContainer';\r\nimport styled from 'styled-components';\r\nimport { isNeverReported } from 'helpers/empty-state';\r\n\r\nimport Slider from '../PbiReportsPage/Slider';\r\nimport Overview from 'components/Overview';\r\nimport PbiFilter from '../PbiFilter/PbiFilterContainer';\r\nimport EmptyState, { EmptyStateWrapper } from 'components/_common/EmptyState';\r\nimport { UserSystemGroup } from 'store/storeTypes';\r\n\r\nconst SystemAnalysis = React.lazy(() => import('../SystemAnalysis/SystemsAnalysisContainer'));\r\nconst MachineConfig = React.lazy(() => import('components/MachineConfig'));\r\nconst ServiceTicket = React.lazy(() => import('components/ServiceTicket'));\r\nconst SystemPage = React.lazy(() => import('components/SystemPage/SystemPageContainer'));\r\nconst JobAnalysis = React.lazy(() => import('components/JobAnalysis/JobAnalysisContainer'));\r\n\r\nconst FILTER_HIDE = getFilterHideEnv();\r\n\r\nexport const IconPlaceHolder = styled.div`\r\n width: 100%;\r\n height: 100%;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n`;\r\nconst RepotPageWrapper = styled.div`\r\n width: 100%;\r\n height: 100%;\r\n box-sizing: border-box;\r\n display: flex;\r\n`;\r\n\r\nconst PbiReportsPage = React.memo((props: PbiReportsPageProps) => {\r\n const {\r\n match,\r\n activeReport,\r\n timeFrame,\r\n day,\r\n isStateInitialized,\r\n filterData,\r\n isSelectedSystemsEverReported,\r\n isEverReportedLoaded,\r\n isMachineFilterOpen,\r\n screenWidth,\r\n screenHeight,\r\n pbiReportHeight,\r\n pbiReportWidth,\r\n selectedSystems,\r\n selectedSystemGroup,\r\n setPbiReportSize,\r\n setActiveReport,\r\n toggleMachineFilterMenu,\r\n } = props;\r\n\r\n const routerActiveReport = match.params.reportType as MainReportTypes;\r\n const routerActiveSubReport = match.params.subReportType as SubReportTypes;\r\n //*START to get access to real DOM element of PbiPage - needed to get width and height\r\n const ref = useRef(null);\r\n useEffect(() => {\r\n if (ref.current) {\r\n const { width, height } = ref.current.getBoundingClientRect();\r\n setPbiReportSize({ height, width });\r\n }\r\n }, [screenHeight, screenWidth, pbiReportWidth, pbiReportHeight, ref.current]);\r\n //*END to get access to real DOM element of PbiPage - needed to get width and height\r\n\r\n useEffect(() => {\r\n if (routerActiveSubReport) {\r\n //*close machineFilter before render subreport if it is opened\r\n isMachineFilterOpen && toggleMachineFilterMenu();\r\n setActiveReport(routerActiveSubReport);\r\n } else if (routerActiveReport) {\r\n setActiveReport(routerActiveReport);\r\n } else {\r\n setActiveReport(null);\r\n }\r\n }, [setActiveReport, match.params.reportType, match.params.subReportType]);\r\n const reports = React.useMemo(() => {\r\n const mainReportNames: MainReportTypes[] = [];\r\n for (const key in MainReportTypes) {\r\n mainReportNames.push(MainReportTypes[key]);\r\n }\r\n const mainReportsMap = new Map();\r\n\r\n mainReportsMap.set(MainReportTypes.Overview, );\r\n mainReportsMap.set(MainReportTypes.Systems, );\r\n mainReportsMap.set(MainReportTypes.Jobs, );\r\n mainReportsMap.set(\r\n SubReportTypes.SystemPage,\r\n \r\n );\r\n mainReportsMap.set(\r\n SubReportTypes.MachineConfig,\r\n \r\n );\r\n mainReportsMap.set(\r\n SubReportTypes.ServiceTicket,\r\n \r\n );\r\n\r\n return mainReportsMap;\r\n }, [day, timeFrame, match]);\r\n\r\n const isNotReported = isNeverReported(\r\n filterData,\r\n isSelectedSystemsEverReported,\r\n selectedSystemGroup,\r\n isEverReportedLoaded\r\n );\r\n return activeReport ? (\r\n \r\n {!FILTER_HIDE && }\r\n\r\n {!isStateInitialized ? (\r\n <>\r\n {Spinner(103)}\r\n \r\n ) : (\r\n \r\n {isMachineFilterOpen && (\r\n \r\n )}\r\n {/* //*next check is needed to show empty state if nothing was selected in apollo group and\r\n //*for other groups if nothing state isNeverReported */}\r\n {isNotReported ||\r\n (selectedSystemGroup === UserSystemGroup.Apollo && selectedSystems.length === 0) ? (\r\n \r\n \r\n \r\n ) : (\r\n // \r\n\r\n {Spinner()}}>\r\n {reports.get(activeReport)}\r\n \r\n )}\r\n \r\n )}\r\n \r\n ) : (\r\n <>\r\n );\r\n});\r\n\r\nexport default PbiReportsPage;\r\n","import { connect } from 'react-redux';\r\nimport { bindActionCreators, Dispatch } from 'redux';\r\nimport { RouterProps, match } from 'react-router';\r\n\r\nimport PbiReportsPage from './PbiReportsPage';\r\nimport { Store } from 'store/storeTypes';\r\nimport { setActiveReport } from 'actions/reportUiActions';\r\nimport { SubReportTypes } from 'models/ReportData';\r\nimport { setPbiReportSize, setSystemGroup, toggleMachineFilterMenu } from 'actions/userUiActions';\r\nimport {\r\n activeReprotSelector,\r\n isSelectedSystemsEverReportedBySystemGroupSelector,\r\n isStateInitializedBySystemGroup,\r\n selectedDateSelector,\r\n selectedSystemSerialsBySystemGroup,\r\n timeFrameSelector,\r\n} from 'reducers/reports/filterStateReducer';\r\nimport { filterDataBySystemGroupSelector } from 'reducers/reports/filterDataReducer';\r\nimport { isMachineFilterOpenSelector } from 'reducers/ui';\r\nimport { setFilterSystemsState } from 'actions/reportFilterActions';\r\nimport {\r\n pbiReportHeightSelector,\r\n pbiReportWidthSelector,\r\n screenHeightSelector,\r\n screenWidthSelector,\r\n} from 'reducers/appUserReducer';\r\nimport { systemGroupSelector } from 'reducers/ui/systemGroupUiReducer';\r\nimport { isEverReportedLoadedSelector } from 'reducers/isEverReportedReducer';\r\n\r\ninterface OwnProps extends RouterProps {\r\n isLoading: boolean;\r\n match?: match<{ reportType: string; subReportType: SubReportTypes; systemName: string }>;\r\n}\r\n\r\nconst mapStateToProps = (state: Store) => {\r\n return {\r\n filterData: filterDataBySystemGroupSelector(state),\r\n timeFrame: timeFrameSelector(state),\r\n activeReport: activeReprotSelector(state),\r\n day: selectedDateSelector(state),\r\n isSelectedSystemsEverReported: isSelectedSystemsEverReportedBySystemGroupSelector(state),\r\n isEverReportedLoaded: isEverReportedLoadedSelector(state),\r\n isStateInitialized: isStateInitializedBySystemGroup(state),\r\n isMachineFilterOpen: isMachineFilterOpenSelector(state),\r\n screenHeight: screenHeightSelector(state),\r\n screenWidth: screenWidthSelector(state),\r\n pbiReportWidth: pbiReportWidthSelector(state),\r\n pbiReportHeight: pbiReportHeightSelector(state),\r\n selectedSystems: selectedSystemSerialsBySystemGroup(state),\r\n selectedSystemGroup: systemGroupSelector(state),\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch: Dispatch) =>\r\n bindActionCreators(\r\n {\r\n setActiveReport,\r\n setSystemGroup,\r\n setFilterSystemsState,\r\n toggleMachineFilterMenu,\r\n setPbiReportSize,\r\n },\r\n dispatch\r\n );\r\n\r\nexport type PbiReportsPageProps = OwnProps &\r\n ReturnType &\r\n ReturnType;\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(PbiReportsPage);\r\n","var _defs, _path, _path2;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgSyncIcon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 30 30\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null)), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M14.33 10.332v4.665a.666.666 0 00.667.667h4.665V14.33h-3.998v-3.999H14.33z\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M14.997 7A8.006 8.006 0 007 14.997h1.333a6.675 6.675 0 112.666 5.332l1.2-1.6-4.8-.266L9 22.995l1.2-1.604A7.997 7.997 0 1014.997 7z\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgSyncIcon);\nexport default __webpack_public_path__ + \"static/media/syncIcon.7232dc26.svg\";\nexport { ForwardRef as ReactComponent };","var _defs, _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgPrinterIcon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 30 30\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null)), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M20.833 8.333h-1.666V6.667h-8.334v1.666H9.166v-2.5A.833.833 0 0110 5h10a.833.833 0 01.833.833v2.5zM20.833 9.167H9.167A4.172 4.172 0 005 13.333V20a.833.833 0 00.833.833h3.334v3.334A.833.833 0 0010 25h10a.833.833 0 00.833-.833v-3.334h3.334A.833.833 0 0025 20v-6.667a4.172 4.172 0 00-4.167-4.166zm-1.666 14.166h-8.334V17.5h8.334v5.833zM20 14.167a.833.833 0 110-1.667.833.833 0 010 1.667z\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgPrinterIcon);\nexport default __webpack_public_path__ + \"static/media/printerIcon.365994ad.svg\";\nexport { ForwardRef as ReactComponent };","import React from 'react';\r\nimport styled from 'styled-components/macro';\r\nimport packageJson from '../../../package.json';\r\nimport config from 'config/config';\r\nconst VersionLabel = styled.div`\r\n display: inline-block;\r\n background: #2ea1f8;\r\n font-family: Rubik, sans-serif;\r\n font-weight: 500;\r\n font-size: 12px;\r\n color: #c2e1f9;\r\n padding: 10px;\r\n text-decoration: none;\r\n white-space: nowrap;\r\n position: relative;\r\n margin-left: 10px;\r\n @media (max-width: 599px) {\r\n display: none;\r\n }\r\n`;\r\n\r\nfunction VersionLabelHeader() {\r\n const appVersion = packageJson.version;\r\n const envName = config.ENV_NAME as string;\r\n return {`${envName}: ${appVersion}`};\r\n}\r\n\r\nexport default VersionLabelHeader;\r\n","var _path, _path2, _path3, _ellipse, _ellipse2, _ellipse3, _ellipse4, _ellipse5, _ellipse6, _path4;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgMobileDrawerLogo(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 163,\n height: 53,\n viewBox: \"0 0 163 53\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M44.17 44.6315L34.4317 2.44067L51.4737 20.5723L44.17 44.6315Z\",\n stroke: \"#2EA1F8\",\n strokeWidth: 0.5\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M34.4317 2.44067L10.0861 8.01962L2.78238 32.4275L34.4317 2.44067Z\",\n stroke: \"#2EA1F8\",\n strokeWidth: 0.5\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M44.17 44.6317L2.78238 32.4277L19.8243 50.908L44.17 44.6317Z\",\n stroke: \"#2EA1F8\",\n strokeWidth: 0.5\n })), _ellipse || (_ellipse = /*#__PURE__*/React.createElement(\"ellipse\", {\n cx: 34.4317,\n cy: 2.44079,\n rx: 2.43457,\n ry: 2.44079,\n fill: \"#2EA1F8\"\n })), _ellipse2 || (_ellipse2 = /*#__PURE__*/React.createElement(\"ellipse\", {\n cx: 10.0861,\n cy: 8.01965,\n rx: 2.43457,\n ry: 2.44079,\n fill: \"#2EA1F8\"\n })), _ellipse3 || (_ellipse3 = /*#__PURE__*/React.createElement(\"ellipse\", {\n cx: 2.43457,\n cy: 32.4276,\n rx: 2.43457,\n ry: 2.44079,\n fill: \"#2EA1F8\"\n })), _ellipse4 || (_ellipse4 = /*#__PURE__*/React.createElement(\"ellipse\", {\n cx: 19.8244,\n cy: 50.5592,\n rx: 2.43457,\n ry: 2.44079,\n fill: \"#2EA1F8\"\n })), _ellipse5 || (_ellipse5 = /*#__PURE__*/React.createElement(\"ellipse\", {\n cx: 44.17,\n cy: 44.9803,\n rx: 2.43457,\n ry: 2.44079,\n fill: \"#2EA1F8\"\n })), _ellipse6 || (_ellipse6 = /*#__PURE__*/React.createElement(\"ellipse\", {\n cx: 51.8215,\n cy: 20.5724,\n rx: 2.43457,\n ry: 2.44079,\n fill: \"#2EA1F8\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M63.4357 23.3611C63.3183 23.3611 63.2277 23.3291 63.1637 23.2651C63.0997 23.1904 63.0677 23.0998 63.0677 22.9931V12.5451C63.0677 12.4277 63.0997 12.3371 63.1637 12.2731C63.2277 12.1984 63.3183 12.1611 63.4357 12.1611H64.2357C64.353 12.1611 64.4437 12.1984 64.5077 12.2731C64.5823 12.3371 64.6197 12.4277 64.6197 12.5451V16.5131L68.8917 12.4171C68.9343 12.3744 69.0037 12.3211 69.0997 12.2571C69.2063 12.1931 69.345 12.1611 69.5157 12.1611H70.3797C70.465 12.1611 70.5397 12.1931 70.6037 12.2571C70.6677 12.3211 70.6997 12.3958 70.6997 12.4811C70.6997 12.5664 70.6783 12.6357 70.6357 12.6891L65.6917 17.5211L70.9557 22.8171C71.009 22.8811 71.0357 22.9558 71.0357 23.0411C71.0357 23.1264 71.0037 23.2011 70.9397 23.2651C70.8757 23.3291 70.801 23.3611 70.7157 23.3611H69.8197C69.6383 23.3611 69.4997 23.3291 69.4037 23.2651C69.3077 23.1904 69.2383 23.1371 69.1957 23.1051L64.6197 18.5931V22.9931C64.6197 23.0998 64.5823 23.1904 64.5077 23.2651C64.4437 23.3291 64.353 23.3611 64.2357 23.3611H63.4357ZM75.3927 23.5211C74.582 23.5211 73.9047 23.3664 73.3607 23.0571C72.8167 22.7478 72.4007 22.3211 72.1127 21.7771C71.8247 21.2224 71.6647 20.5931 71.6327 19.8891C71.622 19.7078 71.6167 19.4784 71.6167 19.2011C71.6167 18.9131 71.622 18.6838 71.6327 18.5131C71.6647 17.7984 71.8247 17.1691 72.1127 16.6251C72.4113 16.0811 72.8327 15.6544 73.3767 15.3451C73.9207 15.0358 74.5927 14.8811 75.3927 14.8811C76.1927 14.8811 76.8647 15.0358 77.4087 15.3451C77.9527 15.6544 78.3687 16.0811 78.6567 16.6251C78.9553 17.1691 79.1207 17.7984 79.1527 18.5131C79.1633 18.6838 79.1687 18.9131 79.1687 19.2011C79.1687 19.4784 79.1633 19.7078 79.1527 19.8891C79.1207 20.5931 78.9607 21.2224 78.6727 21.7771C78.3847 22.3211 77.9687 22.7478 77.4247 23.0571C76.8807 23.3664 76.2033 23.5211 75.3927 23.5211ZM75.3927 22.2891C76.054 22.2891 76.582 22.0811 76.9767 21.6651C77.3713 21.2384 77.5847 20.6198 77.6167 19.8091C77.6273 19.6491 77.6327 19.4464 77.6327 19.2011C77.6327 18.9558 77.6273 18.7531 77.6167 18.5931C77.5847 17.7824 77.3713 17.1691 76.9767 16.7531C76.582 16.3264 76.054 16.1131 75.3927 16.1131C74.7313 16.1131 74.198 16.3264 73.7927 16.7531C73.398 17.1691 73.19 17.7824 73.1687 18.5931C73.158 18.7531 73.1527 18.9558 73.1527 19.2011C73.1527 19.4464 73.158 19.6491 73.1687 19.8091C73.19 20.6198 73.398 21.2384 73.7927 21.6651C74.198 22.0811 74.7313 22.2891 75.3927 22.2891ZM81.5402 23.3611C81.4335 23.3611 81.3428 23.3291 81.2682 23.2651C81.2042 23.1904 81.1722 23.0998 81.1722 22.9931V15.4251C81.1722 15.3184 81.2042 15.2278 81.2682 15.1531C81.3428 15.0784 81.4335 15.0411 81.5402 15.0411H82.2762C82.3828 15.0411 82.4735 15.0784 82.5482 15.1531C82.6228 15.2278 82.6602 15.3184 82.6602 15.4251V16.1291C82.8735 15.7664 83.1668 15.4944 83.5402 15.3131C83.9135 15.1318 84.3615 15.0411 84.8842 15.0411H85.5242C85.6308 15.0411 85.7162 15.0784 85.7802 15.1531C85.8442 15.2171 85.8762 15.3024 85.8762 15.4091V16.0651C85.8762 16.1718 85.8442 16.2571 85.7802 16.3211C85.7162 16.3851 85.6308 16.4171 85.5242 16.4171H84.5642C83.9882 16.4171 83.5348 16.5878 83.2042 16.9291C82.8735 17.2598 82.7082 17.7131 82.7082 18.2891V22.9931C82.7082 23.0998 82.6708 23.1904 82.5962 23.2651C82.5215 23.3291 82.4308 23.3611 82.3242 23.3611H81.5402ZM87.6183 23.3611C87.5116 23.3611 87.421 23.3291 87.3463 23.2651C87.2823 23.1904 87.2503 23.0998 87.2503 22.9931V15.4091C87.2503 15.3024 87.2823 15.2171 87.3463 15.1531C87.421 15.0784 87.5116 15.0411 87.6183 15.0411H88.3703C88.477 15.0411 88.5623 15.0784 88.6263 15.1531C88.701 15.2171 88.7383 15.3024 88.7383 15.4091V16.1131C89.0156 15.7504 89.3623 15.4571 89.7783 15.2331C90.205 14.9984 90.749 14.8811 91.4103 14.8811C92.1036 14.8811 92.6903 15.0358 93.1703 15.3451C93.661 15.6438 94.029 16.0651 94.2743 16.6091C94.5196 17.1424 94.6423 17.7664 94.6423 18.4811V22.9931C94.6423 23.0998 94.6103 23.1904 94.5463 23.2651C94.4823 23.3291 94.397 23.3611 94.2903 23.3611H93.4903C93.3836 23.3611 93.293 23.3291 93.2183 23.2651C93.1543 23.1904 93.1223 23.0998 93.1223 22.9931V18.5611C93.1223 17.8144 92.941 17.2331 92.5783 16.8171C92.2156 16.3904 91.6823 16.1771 90.9783 16.1771C90.317 16.1771 89.7836 16.3904 89.3783 16.8171C88.9836 17.2331 88.7863 17.8144 88.7863 18.5611V22.9931C88.7863 23.0998 88.749 23.1904 88.6743 23.2651C88.6103 23.3291 88.525 23.3611 88.4183 23.3611H87.6183ZM97.3214 23.3611C97.2148 23.3611 97.1241 23.3291 97.0494 23.2651C96.9854 23.1904 96.9534 23.0998 96.9534 22.9931V15.4091C96.9534 15.3024 96.9854 15.2171 97.0494 15.1531C97.1241 15.0784 97.2148 15.0411 97.3214 15.0411H98.0894C98.1961 15.0411 98.2814 15.0784 98.3454 15.1531C98.4094 15.2171 98.4414 15.3024 98.4414 15.4091V22.9931C98.4414 23.0998 98.4094 23.1904 98.3454 23.2651C98.2814 23.3291 98.1961 23.3611 98.0894 23.3611H97.3214ZM97.1934 13.4891C97.0868 13.4891 96.9961 13.4571 96.9214 13.3931C96.8574 13.3184 96.8254 13.2277 96.8254 13.1211V12.2571C96.8254 12.1504 96.8574 12.0651 96.9214 12.0011C96.9961 11.9264 97.0868 11.8891 97.1934 11.8891H98.2014C98.3081 11.8891 98.3934 11.9264 98.4574 12.0011C98.5321 12.0651 98.5694 12.1504 98.5694 12.2571V13.1211C98.5694 13.2277 98.5321 13.3184 98.4574 13.3931C98.3934 13.4571 98.3081 13.4891 98.2014 13.4891H97.1934ZM104.076 23.3611C103.479 23.3611 102.994 23.2491 102.62 23.0251C102.247 22.7904 101.975 22.4651 101.804 22.0491C101.634 21.6224 101.548 21.1211 101.548 20.5451V16.3211H100.3C100.194 16.3211 100.103 16.2891 100.028 16.2251C99.9644 16.1504 99.9324 16.0598 99.9324 15.9531V15.4091C99.9324 15.3024 99.9644 15.2171 100.028 15.1531C100.103 15.0784 100.194 15.0411 100.3 15.0411H101.548V12.3691C101.548 12.2624 101.58 12.1771 101.644 12.1131C101.719 12.0384 101.81 12.0011 101.916 12.0011H102.668C102.775 12.0011 102.86 12.0384 102.924 12.1131C102.999 12.1771 103.036 12.2624 103.036 12.3691V15.0411H105.02C105.127 15.0411 105.212 15.0784 105.276 15.1531C105.351 15.2171 105.388 15.3024 105.388 15.4091V15.9531C105.388 16.0598 105.351 16.1504 105.276 16.2251C105.212 16.2891 105.127 16.3211 105.02 16.3211H103.036V20.4331C103.036 20.9344 103.122 21.3291 103.292 21.6171C103.463 21.9051 103.767 22.0491 104.204 22.0491H105.18C105.287 22.0491 105.372 22.0864 105.436 22.1611C105.511 22.2251 105.548 22.3104 105.548 22.4171V22.9931C105.548 23.0998 105.511 23.1904 105.436 23.2651C105.372 23.3291 105.287 23.3611 105.18 23.3611H104.076ZM63.3077 41.3611C63.201 41.3611 63.1103 41.3238 63.0357 41.2491C62.961 41.1744 62.9237 41.0838 62.9237 40.9771V30.5611C62.9237 30.4438 62.961 30.3478 63.0357 30.2731C63.1103 30.1984 63.201 30.1611 63.3077 30.1611H64.7157C64.833 30.1611 64.929 30.1984 65.0037 30.2731C65.0783 30.3478 65.1157 30.4438 65.1157 30.5611V34.3051L68.7317 30.4491C68.7743 30.3958 68.8437 30.3371 68.9397 30.2731C69.0463 30.1984 69.185 30.1611 69.3557 30.1611H70.9397C71.025 30.1611 71.0997 30.1931 71.1637 30.2571C71.2383 30.3211 71.2757 30.4011 71.2757 30.4971C71.2757 30.5718 71.2543 30.6357 71.2117 30.6891L66.8117 35.5211L71.5157 40.8171C71.569 40.8811 71.5957 40.9504 71.5957 41.0251C71.5957 41.1211 71.5583 41.2011 71.4837 41.2651C71.4197 41.3291 71.345 41.3611 71.2597 41.3611H69.6117C69.4303 41.3611 69.2863 41.3238 69.1797 41.2491C69.0837 41.1638 69.0197 41.1051 68.9877 41.0731L65.1157 36.8331V40.9771C65.1157 41.0838 65.0783 41.1744 65.0037 41.2491C64.929 41.3238 64.833 41.3611 64.7157 41.3611H63.3077ZM76.7589 41.5211C75.8096 41.5211 74.9936 41.3664 74.3109 41.0571C73.6283 40.7371 73.0949 40.2518 72.7109 39.6011C72.3269 38.9398 72.1189 38.1184 72.0869 37.1371C72.0763 36.6784 72.0709 36.2251 72.0709 35.7771C72.0709 35.3291 72.0763 34.8704 72.0869 34.4011C72.1189 33.4304 72.3323 32.6198 72.7269 31.9691C73.1216 31.3184 73.6603 30.8278 74.3429 30.4971C75.0363 30.1664 75.8416 30.0011 76.7589 30.0011C77.6763 30.0011 78.4816 30.1664 79.1749 30.4971C79.8683 30.8278 80.4123 31.3184 80.8069 31.9691C81.2016 32.6198 81.4149 33.4304 81.4469 34.4011C81.4683 34.8704 81.4789 35.3291 81.4789 35.7771C81.4789 36.2251 81.4683 36.6784 81.4469 37.1371C81.4149 38.1184 81.2069 38.9398 80.8229 39.6011C80.4389 40.2518 79.9003 40.7371 79.2069 41.0571C78.5243 41.3664 77.7083 41.5211 76.7589 41.5211ZM76.7589 39.6811C77.4523 39.6811 78.0176 39.4784 78.4549 39.0731C78.8923 38.6571 79.1269 37.9851 79.1589 37.0571C79.1803 36.5878 79.1909 36.1558 79.1909 35.7611C79.1909 35.3558 79.1803 34.9238 79.1589 34.4651C79.1376 33.8464 79.0203 33.3451 78.8069 32.9611C78.6043 32.5664 78.3269 32.2838 77.9749 32.1131C77.6229 31.9318 77.2176 31.8411 76.7589 31.8411C76.3109 31.8411 75.9109 31.9318 75.5589 32.1131C75.2069 32.2838 74.9243 32.5664 74.7109 32.9611C74.5083 33.3451 74.3963 33.8464 74.3749 34.4651C74.3643 34.9238 74.3589 35.3558 74.3589 35.7611C74.3589 36.1558 74.3643 36.5878 74.3749 37.0571C74.4069 37.9851 74.6416 38.6571 75.0789 39.0731C75.5163 39.4784 76.0763 39.6811 76.7589 39.6811ZM83.9639 41.3611C83.8573 41.3611 83.7666 41.3238 83.6919 41.2491C83.6173 41.1744 83.5799 41.0838 83.5799 40.9771V30.5611C83.5799 30.4438 83.6173 30.3478 83.6919 30.2731C83.7666 30.1984 83.8573 30.1611 83.9639 30.1611H85.1959C85.3453 30.1611 85.4519 30.1984 85.5159 30.2731C85.5906 30.3371 85.6386 30.3851 85.6599 30.4171L90.2679 37.5851V30.5611C90.2679 30.4438 90.2999 30.3478 90.3639 30.2731C90.4386 30.1984 90.5346 30.1611 90.6519 30.1611H91.9959C92.1133 30.1611 92.2093 30.1984 92.2839 30.2731C92.3586 30.3478 92.3959 30.4438 92.3959 30.5611V40.9611C92.3959 41.0784 92.3586 41.1744 92.2839 41.2491C92.2093 41.3238 92.1186 41.3611 92.0119 41.3611H90.7639C90.6146 41.3611 90.5079 41.3238 90.4439 41.2491C90.3799 41.1744 90.3319 41.1264 90.2999 41.1051L85.7079 34.0971V40.9771C85.7079 41.0838 85.6706 41.1744 85.5959 41.2491C85.5213 41.3238 85.4253 41.3611 85.3079 41.3611H83.9639ZM95.2764 41.3611C95.1698 41.3611 95.0791 41.3238 95.0044 41.2491C94.9298 41.1744 94.8924 41.0838 94.8924 40.9771V30.5611C94.8924 30.4438 94.9298 30.3478 95.0044 30.2731C95.0791 30.1984 95.1698 30.1611 95.2764 30.1611H96.5084C96.6578 30.1611 96.7644 30.1984 96.8284 30.2731C96.9031 30.3371 96.9511 30.3851 96.9724 30.4171L101.58 37.5851V30.5611C101.58 30.4438 101.612 30.3478 101.676 30.2731C101.751 30.1984 101.847 30.1611 101.964 30.1611H103.308C103.426 30.1611 103.522 30.1984 103.596 30.2731C103.671 30.3478 103.708 30.4438 103.708 30.5611V40.9611C103.708 41.0784 103.671 41.1744 103.596 41.2491C103.522 41.3238 103.431 41.3611 103.324 41.3611H102.076C101.927 41.3611 101.82 41.3238 101.756 41.2491C101.692 41.1744 101.644 41.1264 101.612 41.1051L97.0204 34.0971V40.9771C97.0204 41.0838 96.9831 41.1744 96.9084 41.2491C96.8338 41.3238 96.7378 41.3611 96.6204 41.3611H95.2764ZM106.589 41.3611C106.482 41.3611 106.392 41.3238 106.317 41.2491C106.242 41.1744 106.205 41.0838 106.205 40.9771V30.5611C106.205 30.4438 106.242 30.3478 106.317 30.2731C106.392 30.1984 106.482 30.1611 106.589 30.1611H113.629C113.746 30.1611 113.842 30.1984 113.917 30.2731C113.992 30.3478 114.029 30.4438 114.029 30.5611V31.6171C114.029 31.7238 113.992 31.8144 113.917 31.8891C113.842 31.9638 113.746 32.0011 113.629 32.0011H108.365V34.8331H113.277C113.394 34.8331 113.49 34.8704 113.565 34.9451C113.64 35.0091 113.677 35.0998 113.677 35.2171V36.2091C113.677 36.3264 113.64 36.4224 113.565 36.4971C113.49 36.5611 113.394 36.5931 113.277 36.5931H108.365V39.5211H113.757C113.874 39.5211 113.97 39.5584 114.045 39.6331C114.12 39.7078 114.157 39.8038 114.157 39.9211V40.9771C114.157 41.0838 114.12 41.1744 114.045 41.2491C113.97 41.3238 113.874 41.3611 113.757 41.3611H106.589ZM120.384 41.5211C119.392 41.5211 118.55 41.3504 117.856 41.0091C117.174 40.6571 116.651 40.1611 116.288 39.5211C115.926 38.8704 115.723 38.0918 115.68 37.1851C115.67 36.7478 115.664 36.2784 115.664 35.7771C115.664 35.2758 115.67 34.7958 115.68 34.3371C115.723 33.4411 115.926 32.6678 116.288 32.0171C116.662 31.3664 117.19 30.8704 117.872 30.5291C118.566 30.1771 119.403 30.0011 120.384 30.0011C121.11 30.0011 121.76 30.0971 122.336 30.2891C122.912 30.4811 123.403 30.7478 123.808 31.0891C124.214 31.4198 124.528 31.8091 124.752 32.2571C124.976 32.7051 125.094 33.1904 125.104 33.7131C125.115 33.8091 125.083 33.8891 125.008 33.9531C124.944 34.0171 124.864 34.0491 124.768 34.0491H123.248C123.131 34.0491 123.035 34.0224 122.96 33.9691C122.886 33.9051 122.832 33.8038 122.8 33.6651C122.63 32.9611 122.336 32.4811 121.92 32.2251C121.504 31.9691 120.987 31.8411 120.368 31.8411C119.654 31.8411 119.083 32.0438 118.656 32.4491C118.23 32.8438 118 33.4998 117.968 34.4171C117.936 35.2918 117.936 36.1878 117.968 37.1051C118 38.0224 118.23 38.6838 118.656 39.0891C119.083 39.4838 119.654 39.6811 120.368 39.6811C120.987 39.6811 121.504 39.5531 121.92 39.2971C122.336 39.0304 122.63 38.5504 122.8 37.8571C122.832 37.7078 122.886 37.6064 122.96 37.5531C123.035 37.4998 123.131 37.4731 123.248 37.4731H124.768C124.864 37.4731 124.944 37.5051 125.008 37.5691C125.083 37.6331 125.115 37.7131 125.104 37.8091C125.094 38.3318 124.976 38.8171 124.752 39.2651C124.528 39.7131 124.214 40.1078 123.808 40.4491C123.403 40.7798 122.912 41.0411 122.336 41.2331C121.76 41.4251 121.11 41.5211 120.384 41.5211ZM129.85 41.3611C129.743 41.3611 129.652 41.3238 129.578 41.2491C129.503 41.1744 129.466 41.0838 129.466 40.9771V32.1291H126.506C126.399 32.1291 126.308 32.0918 126.234 32.0171C126.159 31.9424 126.122 31.8518 126.122 31.7451V30.5611C126.122 30.4438 126.159 30.3478 126.234 30.2731C126.308 30.1984 126.399 30.1611 126.506 30.1611H134.666C134.783 30.1611 134.879 30.1984 134.954 30.2731C135.028 30.3478 135.066 30.4438 135.066 30.5611V31.7451C135.066 31.8518 135.028 31.9424 134.954 32.0171C134.879 32.0918 134.783 32.1291 134.666 32.1291H131.722V40.9771C131.722 41.0838 131.684 41.1744 131.61 41.2491C131.535 41.3238 131.439 41.3611 131.322 41.3611H129.85Z\",\n fill: \"#2EA1F8\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgMobileDrawerLogo);\nexport default __webpack_public_path__ + \"static/media/MobileDrawerLogo.fc29ace1.svg\";\nexport { ForwardRef as ReactComponent };","import { KonnectAnalytics } from 'KonnectAnalytics/konnectAnalytics';\r\nimport React from 'react';\r\nimport { NavLink } from 'react-router-dom';\r\nimport styled from 'styled-components';\r\n\r\nconst NavContainer = styled.div`\r\n flex-grow: 1;\r\n display: flex;\r\n margin-left: 10px;\r\n @media (max-width: 950px) {\r\n flex-grow: 0;\r\n margin-left: 0;\r\n }\r\n`;\r\n\r\nconst NavElement = styled(NavLink)`\r\n display: inline-block;\r\n background: #2ea1f8;\r\n border: 1px solid #1878ba;\r\n font-family: Rubik, sans-serif;\r\n font-weight: 500;\r\n font-size: 12px;\r\n color: #c2e1f9;\r\n padding: 10px 30px 10px 55px;\r\n text-decoration: none;\r\n white-space: nowrap;\r\n position: relative;\r\n\r\n &:not(:last-child) {\r\n border-right: none;\r\n }\r\n &:first-child {\r\n border-bottom-left-radius: 4px;\r\n border-top-left-radius: 4px;\r\n }\r\n &:last-child {\r\n border-bottom-right-radius: 4px;\r\n border-top-right-radius: 4px;\r\n }\r\n &.active {\r\n color: #fff;\r\n background: #208cd7;\r\n }\r\n @media (max-width: 1200px) {\r\n padding: 10px 10px 10px 30px;\r\n }\r\n @media (max-width: 1050px) {\r\n padding: 10px 5px;\r\n }\r\n`;\r\n\r\nconst DesktopNav = styled.div`\r\n @media (max-width: 950px) {\r\n display: none;\r\n }\r\n`;\r\n\r\nconst DesktopNavIcon = styled.img`\r\n width: 16px;\r\n height: 16px;\r\n position: absolute;\r\n left: 30px;\r\n top: 9px;\r\n @media (max-width: 1200px) {\r\n left: 5px;\r\n }\r\n @media (max-width: 1050px) {\r\n display: none;\r\n }\r\n`;\r\nconst DesktopShellReportsNav = props => {\r\n const { navLinks, currentReport } = props;\r\n\r\n return (\r\n \r\n \r\n {navLinks.map((link, i) => {\r\n return (\r\n \r\n {link.text}\r\n \r\n );\r\n })}\r\n \r\n \r\n );\r\n};\r\nexport default DesktopShellReportsNav;\r\n","var _path, _path2, _path3;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgMobileDrawerOverviewIcon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 32,\n height: 32,\n viewBox: \"0 0 32 32\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M32 10H0V4C0 2.896 0.896 2 2 2H30C31.104 2 32 2.896 32 4V10Z\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10 30H2C0.896 30 0 29.104 0 28V14H10V30Z\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M30 30H14V14H32V28C32 29.104 31.104 30 30 30Z\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgMobileDrawerOverviewIcon);\nexport default __webpack_public_path__ + \"static/media/MobileDrawerOverviewIcon.06b679c0.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgMobileDrawerSystemAnalysisIcon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 32,\n height: 32,\n viewBox: \"0 0 32 32\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M26 0H6V6H26V0Z\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M30 10H2C0.8 10 0 10.8 0 12V24C0 25.2 0.8 26 2 26H6V30C6 31.2 6.8 32 8 32H24C25.2 32 26 31.2 26 30V26H30C31.2 26 32 25.2 32 24V12C32 10.8 31.2 10 30 10ZM22 28H10V18H22V28Z\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgMobileDrawerSystemAnalysisIcon);\nexport default __webpack_public_path__ + \"static/media/MobileDrawerSystemAnalysisIcon.9ed63b97.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2, _path3;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgMobileDrawerJobAnalysisIcon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 32,\n height: 32,\n viewBox: \"0 0 32 32\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M16 0L32 9.33333L16 18.6667L0 9.33333L16 0Z\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M16 28.4199L3.068 20.8772L0 22.6665L16 31.9999L32 22.6665L28.932 20.8772L16 28.4199Z\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M16 21.7534L3.068 14.2107L0 16L16 25.3334L32 16L28.932 14.2107L16 21.7534Z\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgMobileDrawerJobAnalysisIcon);\nexport default __webpack_public_path__ + \"static/media/MobileDrawerJobAnalysisIcon.1eb07351.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2, _path3;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgBurgerMobile(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 32,\n height: 32,\n viewBox: \"0 0 32 32\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M30 17H2C1.448 17 1 16.553 1 16C1 15.447 1.448 15 2 15H30C30.552 15 31 15.447 31 16C31 16.553 30.552 17 30 17Z\",\n fill: \"white\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M30 8H2C1.448 8 1 7.553 1 7C1 6.447 1.448 6 2 6H30C30.552 6 31 6.447 31 7C31 7.553 30.552 8 30 8Z\",\n fill: \"white\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M16 26H2C1.448 26 1 25.553 1 25C1 24.447 1.448 24 2 24H16C16.552 24 17 24.447 17 25C17 25.553 16.552 26 16 26Z\",\n fill: \"white\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgBurgerMobile);\nexport default __webpack_public_path__ + \"static/media/BurgerMobile.eaab6be2.svg\";\nexport { ForwardRef as ReactComponent };","import { KonnectAnalytics } from 'KonnectAnalytics/konnectAnalytics';\r\nimport React, { useEffect } from 'react';\r\nimport { Link } from 'react-router-dom';\r\nimport styled from 'styled-components';\r\nimport { ReactComponent as MobileDrawerOverwievIcon } from '../../assets/icons/MobileDrawerOverviewIcon.svg';\r\nimport { ReactComponent as MobileDrawerSystemAnalysisIcon } from '../../assets/icons/MobileDrawerSystemAnalysisIcon.svg';\r\nimport { ReactComponent as MobileDrawerJobAnalysisIcon } from '../../assets/icons/MobileDrawerJobAnalysisIcon.svg';\r\nimport { ReportTypesNew } from 'models/ReportData';\r\nimport { NavlinkType } from './ShellReportsNav';\r\n\r\nconst LogoLink = styled(Link)`\r\n text-decoration: inherit;\r\n color: inherit;\r\n cursor: auto;\r\n`;\r\n\r\nconst LinkItem = styled.div<{ isActive: boolean }>`\r\n display: flex;\r\n box-sizing: border-box;\r\n justify-content: flex-start;\r\n background-color: ${props => (props.isActive ? '#EDF7FF' : 'ffffff')};\r\n align-items: center;\r\n width: 100%;\r\n height: 70px;\r\n`;\r\nconst StatusBar = styled.div<{ isActive: boolean }>`\r\n width: 6px;\r\n height: 100%;\r\n background-color: ${props => (props.isActive ? '#2ea1f8' : 'transparent')};\r\n margin-right: 20px;\r\n`;\r\nconst IconPlaceHolder = styled.div`\r\n margin-right: 20px;\r\n`;\r\nconst Text = styled.div<{ isActive: boolean }>`\r\n color: ${props => (props.isActive ? '#2ea1f8' : '#354052')};\r\n`;\r\n\r\ntype MobileShellReportsNavItemProps = {\r\n activeReport: ReportTypesNew;\r\n link: NavlinkType;\r\n currentReport: string;\r\n setIsOpen: (isOpen: boolean) => void;\r\n};\r\nconst MobileShellReportsNavItem = (props: MobileShellReportsNavItemProps) => {\r\n const { link, currentReport, activeReport, setIsOpen } = props;\r\n\r\n const [isActive, setIsActive] = React.useState(false);\r\n\r\n useEffect(() => {\r\n setIsActive(currentReport === link.path);\r\n }, [currentReport, activeReport]);\r\n const getLinkIcon = (linkText: string, currentReport: string) => {\r\n switch (linkText) {\r\n case 'Overview':\r\n return (\r\n \r\n );\r\n case 'Systems Analysis':\r\n return (\r\n \r\n );\r\n case 'Jobs Analysis':\r\n return (\r\n \r\n );\r\n default:\r\n return ;\r\n }\r\n };\r\n const onClickHandler = () => {\r\n setIsOpen(false);\r\n };\r\n return (\r\n onClickHandler()}\r\n data-automationid={`chooseReportButton_${link.text}`}>\r\n \r\n \r\n {getLinkIcon(link.text, currentReport)}\r\n {link.text}\r\n \r\n \r\n );\r\n};\r\nexport default MobileShellReportsNavItem;\r\n","import { KonnectAnalytics } from 'KonnectAnalytics/konnectAnalytics';\r\nimport { ReportTypesNew } from 'models/ReportData';\r\nimport React from 'react';\r\nimport { Link, NavLink } from 'react-router-dom';\r\nimport styled from 'styled-components';\r\nimport { ReactComponent as MobileDrawerLogo } from '../../assets/icons/MobileDrawerLogo.svg';\r\nimport MobileShellReportsNavItem from './MobileShellReportsNavItem';\r\nimport { NavlinkType } from './ShellReportsNav';\r\n\r\nconst MobileNavContainer = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n width: 300px;\r\n height: 100%;\r\n box-shadow: 0px 4px 8px rgba(0, 0, 0, 0.4);\r\n`;\r\nconst LogoPlaceHolder = styled.div`\r\n padding: 15px;\r\n margin-bottom: 35px;\r\n`;\r\n\r\ntype MobileShellReportsNavProps = {\r\n activeReport: ReportTypesNew;\r\n currentReport: string;\r\n navLinks: Array;\r\n setIsOpen: (isOpen: boolean) => void;\r\n};\r\nconst MobileShellReportsNav = (props: MobileShellReportsNavProps) => {\r\n const { navLinks, currentReport, activeReport, setIsOpen } = props;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n\r\n {navLinks.map((link, i) => {\r\n return (\r\n \r\n );\r\n })}\r\n \r\n );\r\n};\r\nexport default MobileShellReportsNav;\r\n","import React, { memo } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useHistory } from 'react-router';\r\n\r\nimport { jobsReportPath, overviewReportPath, systemsReportPath } from 'contracts/constants';\r\n\r\nimport DesktopShellReportsNav from './DesktopShellReportsNav';\r\nimport MobileShellReportsNav from './MobileShellReportsNav';\r\nimport { ReportTypesNew } from 'models/ReportData';\r\nimport config from 'config/config';\r\n\r\nexport type ShellReportsNavProps = {\r\n onNavClick?: () => {};\r\n userEmail?: string;\r\n tennantName?: string;\r\n importedTennantId?: string;\r\n isMobile?: boolean;\r\n activeReport?: ReportTypesNew;\r\n setIsOpen?: (isOpen: boolean) => void;\r\n};\r\nexport type NavlinkType = {\r\n text: string;\r\n path: string;\r\n image: string;\r\n};\r\nconst ShellReportsNav = memo((props: ShellReportsNavProps) => {\r\n const { isMobile, activeReport, userEmail, setIsOpen } = props;\r\n const { t } = useTranslation();\r\n const history = useHistory();\r\n const currentReport = history.location.pathname;\r\n const navLinks: Array = [\r\n {\r\n text: t('reportsNav.overview'),\r\n path: overviewReportPath,\r\n image: 'menu-1-overview.svg',\r\n },\r\n {\r\n text: t('reportsNav.systemsAnalysis'),\r\n path: systemsReportPath,\r\n image: 'menu-2-sys-analysis.svg',\r\n },\r\n {\r\n text: t('reportsNav.jobsAnalysis'),\r\n path: jobsReportPath,\r\n image: 'menu-3-jobs-analysis.svg',\r\n },\r\n ];\r\n\r\n return isMobile ? (\r\n \r\n ) : (\r\n \r\n );\r\n});\r\n\r\nexport default ShellReportsNav;\r\n","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { useTranslation } from 'react-i18next';\r\n// import find from 'lodash/find';\r\n\r\nimport { AuthSupportProps } from 'contracts/auth';\r\nimport {\r\n goalsPath,\r\n userManagementPath,\r\n METRICS_GLOSSARY_DTF_PDF_LINK,\r\n METRICS_GLOSSARY_DTG_PDF_LINK,\r\n KONNECT_TRAINING_LINK_DTG,\r\n KONNECT_TRAINING_LINK_DTF,\r\n settingsPath,\r\n apiManagementPath,\r\n schedulerPath,\r\n privacyPolicyPath,\r\n productTCPath,\r\n termsOfUsePath,\r\n} from 'contracts/constants';\r\nimport PopupMenu from '../_common/PopupMenu';\r\nimport { withAuth } from 'services/AuthProvider';\r\n// import { LOCALES } from 'services/i18n';\r\n// import FlagWithText from '../_common/FlagWithText';\r\nimport { PermissionAuth0 } from 'models/Permissions';\r\nimport { IUserSettingsState, Store, UserSystemGroup } from 'store/storeTypes';\r\nimport { appUserToRoles } from 'selectors/uiSelectors';\r\nimport { PopupMenuItemValueType } from 'components/_common/PopupMenuItem';\r\nimport { openLinkInNewTab } from 'helpers/navigation';\r\n\r\ninterface ShellUserNavProps extends AuthSupportProps {\r\n children: React.ReactNode;\r\n appUserRoles: PermissionAuth0[];\r\n userSettings: IUserSettingsState;\r\n selectedSystemGroup: string;\r\n isReadOnlyRole: boolean;\r\n}\r\n\r\nconst mapStateToProps = (state: Store) => ({\r\n appUserRoles: appUserToRoles(state),\r\n userSettings: state.userSettings,\r\n});\r\n\r\nconst ShellUserNav = (props: ShellUserNavProps) => {\r\n const {\r\n authService,\r\n children,\r\n appUserRoles,\r\n userSettings,\r\n selectedSystemGroup,\r\n isReadOnlyRole,\r\n } = props;\r\n const KONNECT_TRAINING_LINK =\r\n selectedSystemGroup === 'DTG' ? KONNECT_TRAINING_LINK_DTG : KONNECT_TRAINING_LINK_DTF;\r\n const {\r\n t,\r\n // i18n\r\n } = useTranslation();\r\n\r\n // const currentLocale = find(LOCALES, l => l.i18n === i18n.language) || LOCALES[0];\r\n\r\n const navLinks: PopupMenuItemValueType[] = [];\r\n\r\n !appUserRoles.includes(PermissionAuth0.ReadOnly) &&\r\n navLinks.push({\r\n text: t('userNav.scheduler'),\r\n path: schedulerPath,\r\n });\r\n\r\n if (appUserRoles) {\r\n if (!appUserRoles.includes(PermissionAuth0.ReadOnly)) {\r\n appUserRoles.includes(PermissionAuth0.GoalsSetter) &&\r\n selectedSystemGroup !== UserSystemGroup.Apollo &&\r\n navLinks.push({\r\n text: t('userNav.goals'),\r\n path: goalsPath,\r\n });\r\n appUserRoles.includes(PermissionAuth0.Certificate) &&\r\n navLinks.push({\r\n text: t('userNav.apiManagement'),\r\n path: apiManagementPath,\r\n });\r\n\r\n appUserRoles.includes(PermissionAuth0.Admin) &&\r\n navLinks.push({\r\n text: t('userNav.accountManagement'),\r\n path: userManagementPath,\r\n });\r\n navLinks.push('divider');\r\n }\r\n }\r\n\r\n const helpChildren = [\r\n {\r\n text: t('userNav.help.training'),\r\n onClick: () => openLinkInNewTab(KONNECT_TRAINING_LINK),\r\n },\r\n ];\r\n\r\n if (userSettings.data?.userSystemGroup?.includes(UserSystemGroup.DTF)) {\r\n helpChildren.push({\r\n text: t('userNav.help.metricsGlossary') + ' ' + UserSystemGroup.DTF,\r\n onClick: () => openLinkInNewTab(METRICS_GLOSSARY_DTF_PDF_LINK),\r\n });\r\n }\r\n\r\n if (userSettings.data?.userSystemGroup?.includes(UserSystemGroup.DTG)) {\r\n helpChildren.push({\r\n text: t('userNav.help.metricsGlossary') + ' ' + UserSystemGroup.DTG,\r\n onClick: () => openLinkInNewTab(METRICS_GLOSSARY_DTG_PDF_LINK),\r\n });\r\n }\r\n\r\n navLinks.push(\r\n {\r\n text: t('userNav.help.helpLabel'),\r\n children: helpChildren,\r\n },\r\n {\r\n text: t('userNav.terms.termsAndCond'),\r\n children: [\r\n {\r\n text: t('userNav.terms.productTC'),\r\n path: productTCPath,\r\n },\r\n {\r\n text: t('userNav.terms.privacyPolicy'),\r\n path: privacyPolicyPath,\r\n },\r\n {\r\n text: t('userNav.terms.termsOfUse'),\r\n path: termsOfUsePath,\r\n },\r\n ],\r\n },\r\n 'divider',\r\n {\r\n text: t('userNav.logout'),\r\n onClick: authService.logout,\r\n }\r\n );\r\n if (isReadOnlyRole) {\r\n navLinks.push({\r\n text: 'Switch Customer',\r\n onClick: () => window.location.reload(),\r\n });\r\n }\r\n\r\n // If userSystemGroup has ['DTF'] or ['DTF', 'DTG'] AND if it is not readOnly user show settings menu item\r\n if (\r\n userSettings.data.userSystemGroup?.length === 2 ||\r\n userSettings.data.userSystemGroup?.includes(UserSystemGroup.DTF)\r\n ) {\r\n if (!appUserRoles.includes(PermissionAuth0.ReadOnly)) {\r\n navLinks.splice(navLinks.length - 1, 0, {\r\n text: t('userNav.settings'),\r\n path: settingsPath,\r\n });\r\n }\r\n }\r\n return {children};\r\n};\r\n\r\nexport default connect(mapStateToProps)(withAuth(ShellUserNav));\r\n","import React from 'react';\r\nimport MuiAppBar from '@material-ui/core/AppBar';\r\nimport MuiToolbar from '@material-ui/core/Toolbar';\r\nimport styled from 'styled-components';\r\nimport { Link } from 'react-router-dom';\r\nimport { format, isValid } from 'date-fns';\r\n\r\nimport { ConfigNamesEnum } from 'store/storeTypes';\r\n\r\nimport Avatar from '../Avatar/Avatar';\r\nimport { ReactComponent as KornitLogo } from 'assets/icons/kornitLogo.svg';\r\nimport { ReactComponent as SyncIcon } from 'assets/icons/syncIcon.svg';\r\nimport { ReactComponent as PrinterIcon } from 'assets/icons/printerIcon.svg';\r\nimport VersionLabelHeader from '../_common/VersionLabelHeader';\r\nimport ShellReportsNav from './ShellReportsNav';\r\nimport ShellUserNav from './ShellUserNav';\r\nimport { ShellHeaderUiProps } from './ShellHeader';\r\nimport config from 'config/config';\r\nimport { getShowVersionLabel } from 'helpers/envGetters';\r\n\r\nconst SHOW_VERSION_VERSION_LABEL = getShowVersionLabel();\r\n\r\nconst Desktop = styled.div`\r\n display: flex;\r\n //flex: 1;\r\n align-items: center;\r\n @media (max-width: 750px) {\r\n display: none;\r\n }\r\n`;\r\n\r\nconst AppBar = styled(MuiAppBar)`\r\n box-shadow: none;\r\n`;\r\n\r\nconst Toolbar = styled(MuiToolbar)`\r\n display: flex;\r\n background: #2ea1f8;\r\n padding: 0 0 0 15px;\r\n min-height: 58px;\r\n justify-content: space-between;\r\n`;\r\n\r\nconst LogoContainer = styled(Link)`\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n\r\n @media (max-width: 850px) {\r\n order: 2;\r\n }\r\n`;\r\n\r\nconst AvatarContainer = styled.div`\r\n order: 3;\r\n`;\r\n\r\nexport const StyledAvatar = styled(Avatar)`\r\n margin: 0 1rem;\r\n cursor: pointer;\r\n width: 44px;\r\n`;\r\n\r\nconst LastUpdateTimeWrapper = styled.div`\r\n position: relative;\r\n display: flex;\r\n align-items: center;\r\n`;\r\n\r\nconst LastUpdateTimeLeftPart = styled.div`\r\n position: relative;\r\n display: flex;\r\n margin-right: 5px;\r\n`;\r\n\r\nconst LastUpdateTimeRightPart = styled.div`\r\n position: relative;\r\n display: flex;\r\n flex-direction: row;\r\n`;\r\n\r\nconst LastUpdateTimeTopPart = styled.div``;\r\n\r\nconst Text = styled.span`\r\n font-family: Rubik, serif;\r\n font-style: normal;\r\n font-size: 14px;\r\n color: white;\r\n white-space: nowrap;\r\n`;\r\nconst LastUpdateTimeText = styled.span`\r\n font-family: Rubik, serif;\r\n font-style: normal;\r\n font-size: 14px;\r\n color: white;\r\n white-space: nowrap;\r\n`;\r\n\r\nconst ActiveSystemWrapper = styled.div`\r\n position: relative;\r\n display: flex;\r\n align-items: center;\r\n`;\r\n\r\nconst ActiveSystemLeftPart = styled.div`\r\n position: relative;\r\n display: flex;\r\n margin-right: 5px;\r\n`;\r\n\r\nconst ActiveSystemRightPart = styled.div.attrs({\r\n 'data-id': 'header-totalPrintersCount',\r\n 'data-automationid': ' totalPrintersCount',\r\n})`\r\n position: relative;\r\n display: flex;\r\n`;\r\n\r\nconst ActiveSystemTextBold = styled.span`\r\n font-family: Rubik, serif;\r\n font-style: normal;\r\n font-weight: bold;\r\n font-size: 14px;\r\n color: white;\r\n white-space: nowrap;\r\n`;\r\n\r\nconst ActiveSystemText = styled.span`\r\n font-family: Rubik, serif;\r\n font-style: normal;\r\n font-weight: normal;\r\n font-size: 14px;\r\n color: white;\r\n white-space: nowrap;\r\n`;\r\n\r\nconst Cell = styled.div`\r\n position: relative;\r\n padding: 0 20px;\r\n &:after {\r\n content: '';\r\n position: absolute;\r\n right: 0;\r\n top: 50%;\r\n height: 19px;\r\n width: 1px;\r\n background-color: white;\r\n transform: translateY(-50%);\r\n }\r\n`;\r\n\r\nconst LoadingText = styled.div`\r\n font-family: Rubik, serif;\r\n font-style: normal;\r\n font-weight: bold;\r\n font-size: 14px;\r\n color: white;\r\n`;\r\n\r\nconst ShellHeaderDesktop = (props: ShellHeaderUiProps) => {\r\n const {\r\n profilePictureUrl,\r\n selectedSystemGroup,\r\n activeSystemsMap,\r\n checkedLastUpdate,\r\n userEmail,\r\n tennantName,\r\n isReadOnlyRole,\r\n lastResponseUpdateTime,\r\n } = props;\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n\r\n {SHOW_VERSION_VERSION_LABEL && }\r\n\r\n \r\n\r\n \r\n {isReadOnlyRole && (\r\n \r\n {tennantName}\r\n \r\n )}\r\n {config.ENV_NAME === ConfigNamesEnum.Dev && lastResponseUpdateTime && (\r\n \r\n \r\n Last Update Time:{' '}\r\n {format(lastResponseUpdateTime, \"dd/MM/yyyy : HH'h:'mm'm:'ss'sec'\")}\r\n \r\n \r\n )}\r\n \r\n {checkedLastUpdate && isValid(checkedLastUpdate) && (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {format(checkedLastUpdate, 'MMMM dd, yyyy, hh:mm aaaa')}\r\n \r\n \r\n \r\n \r\n )}\r\n \r\n\r\n \r\n {activeSystemsMap.length > 1 ? (\r\n \r\n \r\n \r\n \r\n \r\n {activeSystemsMap[0]}\r\n  \r\n {activeSystemsMap[1]}\r\n  \r\n {activeSystemsMap[2]}\r\n \r\n \r\n ) : (\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 );\r\n};\r\nexport default ShellHeaderDesktop;\r\n","var _path, _path2, _path3, _ellipse, _circle, _ellipse2, _ellipse3, _ellipse4, _ellipse5;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgKornitIconMobile(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 29,\n height: 28,\n viewBox: \"0 0 29 28\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M23.3947 23.5789L18.2368 1.28943L27.2632 10.8684L23.3947 23.5789Z\",\n stroke: \"white\",\n strokeWidth: 0.5\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M18.2369 1.28943L5.34212 4.2368L1.47369 17.1315L18.2369 1.28943Z\",\n stroke: \"white\",\n strokeWidth: 0.5\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M23.3947 23.579L1.47369 17.1316L10.5 26.8947L23.3947 23.579Z\",\n stroke: \"white\",\n strokeWidth: 0.5\n })), _ellipse || (_ellipse = /*#__PURE__*/React.createElement(\"ellipse\", {\n cx: 18.2368,\n cy: 1.28947,\n rx: 1.28947,\n ry: 1.28947,\n fill: \"white\"\n })), _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 5.34212,\n cy: 4.23686,\n r: 1.28947,\n fill: \"white\"\n })), _ellipse2 || (_ellipse2 = /*#__PURE__*/React.createElement(\"ellipse\", {\n cx: 1.28947,\n cy: 17.1316,\n rx: 1.28947,\n ry: 1.28947,\n fill: \"white\"\n })), _ellipse3 || (_ellipse3 = /*#__PURE__*/React.createElement(\"ellipse\", {\n cx: 10.5,\n cy: 26.7105,\n rx: 1.28947,\n ry: 1.28947,\n fill: \"white\"\n })), _ellipse4 || (_ellipse4 = /*#__PURE__*/React.createElement(\"ellipse\", {\n cx: 23.3947,\n cy: 23.7631,\n rx: 1.28948,\n ry: 1.28947,\n fill: \"white\"\n })), _ellipse5 || (_ellipse5 = /*#__PURE__*/React.createElement(\"ellipse\", {\n cx: 27.4474,\n cy: 10.8685,\n rx: 1.28948,\n ry: 1.28947,\n fill: \"white\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgKornitIconMobile);\nexport default __webpack_public_path__ + \"static/media/KornitIconMobile.28d738dc.svg\";\nexport { ForwardRef as ReactComponent };","import React from 'react';\r\n// import Drawer from 'rc-drawer';\r\nimport { ReactComponent as BurgerIcon } from '../../assets/icons/BurgerMobile.svg';\r\nimport { SwipeableDrawer } from '@material-ui/core';\r\n\r\nimport ShellReportsNav from './ShellReportsNav';\r\nimport { ReportTypesNew } from 'models/ReportData';\r\n\r\ntype BurgerMobileProps = {\r\n activeReport: ReportTypesNew;\r\n};\r\nconst BurgerMobile = (props: BurgerMobileProps) => {\r\n const { activeReport } = props;\r\n const [isOpen, setIsOpen] = React.useState(false);\r\n\r\n const toggleDrawer = (isOpen: boolean = true) => (\r\n event: React.KeyboardEvent | React.MouseEvent\r\n ) => {\r\n if (\r\n event?.type === 'keydown' &&\r\n ((event as React.KeyboardEvent).key === 'Tab' ||\r\n (event as React.KeyboardEvent).key === 'Shift')\r\n ) {\r\n return;\r\n }\r\n setIsOpen(isOpen);\r\n };\r\n return (\r\n <>\r\n setIsOpen(true)} />\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default BurgerMobile;\r\n","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgKornitNameIcon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 62,\n height: 28,\n viewBox: \"0 0 62 28\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0.54 11C0.437333 11 0.358 10.972 0.302 10.916C0.246 10.8507 0.218 10.7713 0.218 10.678V1.536C0.218 1.43333 0.246 1.354 0.302 1.298C0.358 1.23267 0.437333 1.2 0.54 1.2H1.24C1.34267 1.2 1.422 1.23267 1.478 1.298C1.54333 1.354 1.576 1.43333 1.576 1.536V5.008L5.314 1.424C5.35133 1.38667 5.412 1.34 5.496 1.284C5.58933 1.228 5.71067 1.2 5.86 1.2H6.616C6.69067 1.2 6.756 1.228 6.812 1.284C6.868 1.34 6.896 1.40533 6.896 1.48C6.896 1.55467 6.87733 1.61533 6.84 1.662L2.514 5.89L7.12 10.524C7.16667 10.58 7.19 10.6453 7.19 10.72C7.19 10.7947 7.162 10.86 7.106 10.916C7.05 10.972 6.98467 11 6.91 11H6.126C5.96733 11 5.846 10.972 5.762 10.916C5.678 10.8507 5.61733 10.804 5.58 10.776L1.576 6.828V10.678C1.576 10.7713 1.54333 10.8507 1.478 10.916C1.422 10.972 1.34267 11 1.24 11H0.54ZM11.0024 11.14C10.293 11.14 9.70038 11.0047 9.22438 10.734C8.74838 10.4633 8.38438 10.09 8.13238 9.614C7.88038 9.12867 7.74038 8.578 7.71238 7.962C7.70304 7.80333 7.69838 7.60267 7.69838 7.36C7.69838 7.108 7.70304 6.90733 7.71238 6.758C7.74038 6.13267 7.88038 5.582 8.13238 5.106C8.39371 4.63 8.76238 4.25667 9.23838 3.986C9.71438 3.71533 10.3024 3.58 11.0024 3.58C11.7024 3.58 12.2904 3.71533 12.7664 3.986C13.2424 4.25667 13.6064 4.63 13.8584 5.106C14.1197 5.582 14.2644 6.13267 14.2924 6.758C14.3017 6.90733 14.3064 7.108 14.3064 7.36C14.3064 7.60267 14.3017 7.80333 14.2924 7.962C14.2644 8.578 14.1244 9.12867 13.8724 9.614C13.6204 10.09 13.2564 10.4633 12.7804 10.734C12.3044 11.0047 11.7117 11.14 11.0024 11.14ZM11.0024 10.062C11.581 10.062 12.043 9.88 12.3884 9.516C12.7337 9.14267 12.9204 8.60133 12.9484 7.892C12.9577 7.752 12.9624 7.57467 12.9624 7.36C12.9624 7.14533 12.9577 6.968 12.9484 6.828C12.9204 6.11867 12.7337 5.582 12.3884 5.218C12.043 4.84467 11.581 4.658 11.0024 4.658C10.4237 4.658 9.95704 4.84467 9.60238 5.218C9.25704 5.582 9.07504 6.11867 9.05638 6.828C9.04704 6.968 9.04237 7.14533 9.04237 7.36C9.04237 7.57467 9.04704 7.752 9.05638 7.892C9.07504 8.60133 9.25704 9.14267 9.60238 9.516C9.95704 9.88 10.4237 10.062 11.0024 10.062ZM16.3814 11C16.2881 11 16.2088 10.972 16.1434 10.916C16.0874 10.8507 16.0594 10.7713 16.0594 10.678V4.056C16.0594 3.96267 16.0874 3.88333 16.1434 3.818C16.2088 3.75267 16.2881 3.72 16.3814 3.72H17.0254C17.1188 3.72 17.1981 3.75267 17.2634 3.818C17.3288 3.88333 17.3614 3.96267 17.3614 4.056V4.672C17.5481 4.35467 17.8048 4.11667 18.1314 3.958C18.4581 3.79933 18.8501 3.72 19.3074 3.72H19.8674C19.9608 3.72 20.0354 3.75267 20.0914 3.818C20.1474 3.874 20.1754 3.94867 20.1754 4.042V4.616C20.1754 4.70933 20.1474 4.784 20.0914 4.84C20.0354 4.896 19.9608 4.924 19.8674 4.924H19.0274C18.5234 4.924 18.1268 5.07333 17.8374 5.372C17.5481 5.66133 17.4034 6.058 17.4034 6.562V10.678C17.4034 10.7713 17.3708 10.8507 17.3054 10.916C17.2401 10.972 17.1608 11 17.0674 11H16.3814ZM21.6998 11C21.6065 11 21.5271 10.972 21.4618 10.916C21.4058 10.8507 21.3778 10.7713 21.3778 10.678V4.042C21.3778 3.94867 21.4058 3.874 21.4618 3.818C21.5271 3.75267 21.6065 3.72 21.6998 3.72H22.3578C22.4511 3.72 22.5258 3.75267 22.5818 3.818C22.6471 3.874 22.6798 3.94867 22.6798 4.042V4.658C22.9225 4.34067 23.2258 4.084 23.5898 3.888C23.9631 3.68267 24.4391 3.58 25.0178 3.58C25.6245 3.58 26.1378 3.71533 26.5578 3.986C26.9871 4.24733 27.3091 4.616 27.5238 5.092C27.7385 5.55867 27.8458 6.10467 27.8458 6.73V10.678C27.8458 10.7713 27.8178 10.8507 27.7618 10.916C27.7058 10.972 27.6311 11 27.5378 11H26.8378C26.7445 11 26.6651 10.972 26.5998 10.916C26.5438 10.8507 26.5158 10.7713 26.5158 10.678V6.8C26.5158 6.14667 26.3571 5.638 26.0398 5.274C25.7225 4.90067 25.2558 4.714 24.6398 4.714C24.0611 4.714 23.5945 4.90067 23.2398 5.274C22.8945 5.638 22.7218 6.14667 22.7218 6.8V10.678C22.7218 10.7713 22.6891 10.8507 22.6238 10.916C22.5678 10.972 22.4931 11 22.3998 11H21.6998ZM30.19 11C30.0967 11 30.0174 10.972 29.952 10.916C29.896 10.8507 29.868 10.7713 29.868 10.678V4.042C29.868 3.94867 29.896 3.874 29.952 3.818C30.0174 3.75267 30.0967 3.72 30.19 3.72H30.862C30.9554 3.72 31.03 3.75267 31.086 3.818C31.142 3.874 31.17 3.94867 31.17 4.042V10.678C31.17 10.7713 31.142 10.8507 31.086 10.916C31.03 10.972 30.9554 11 30.862 11H30.19ZM30.078 2.362C29.9847 2.362 29.9054 2.334 29.84 2.278C29.784 2.21267 29.756 2.13333 29.756 2.04V1.284C29.756 1.19067 29.784 1.116 29.84 1.06C29.9054 0.994666 29.9847 0.962 30.078 0.962H30.96C31.0534 0.962 31.128 0.994666 31.184 1.06C31.2494 1.116 31.282 1.19067 31.282 1.284V2.04C31.282 2.13333 31.2494 2.21267 31.184 2.278C31.128 2.334 31.0534 2.362 30.96 2.362H30.078ZM36.1007 11C35.578 11 35.1533 10.902 34.8267 10.706C34.5 10.5007 34.262 10.216 34.1127 9.852C33.9633 9.47867 33.8887 9.04 33.8887 8.536V4.84H32.7967C32.7033 4.84 32.624 4.812 32.5587 4.756C32.5027 4.69067 32.4747 4.61133 32.4747 4.518V4.042C32.4747 3.94867 32.5027 3.874 32.5587 3.818C32.624 3.75267 32.7033 3.72 32.7967 3.72H33.8887V1.382C33.8887 1.28867 33.9167 1.214 33.9727 1.158C34.038 1.09267 34.1173 1.06 34.2107 1.06H34.8687C34.962 1.06 35.0367 1.09267 35.0927 1.158C35.158 1.214 35.1907 1.28867 35.1907 1.382V3.72H36.9267C37.02 3.72 37.0947 3.75267 37.1507 3.818C37.216 3.874 37.2487 3.94867 37.2487 4.042V4.518C37.2487 4.61133 37.216 4.69067 37.1507 4.756C37.0947 4.812 37.02 4.84 36.9267 4.84H35.1907V8.438C35.1907 8.87667 35.2653 9.222 35.4147 9.474C35.564 9.726 35.83 9.852 36.2127 9.852H37.0667C37.16 9.852 37.2347 9.88467 37.2907 9.95C37.356 10.006 37.3887 10.0807 37.3887 10.174V10.678C37.3887 10.7713 37.356 10.8507 37.2907 10.916C37.2347 10.972 37.16 11 37.0667 11H36.1007ZM0.54 27C0.437333 27 0.358 26.972 0.302 26.916C0.246 26.8507 0.218 26.7713 0.218 26.678V17.536C0.218 17.4333 0.246 17.354 0.302 17.298C0.358 17.2327 0.437333 17.2 0.54 17.2H1.24C1.34267 17.2 1.422 17.2327 1.478 17.298C1.54333 17.354 1.576 17.4333 1.576 17.536V21.008L5.314 17.424C5.35133 17.3867 5.412 17.34 5.496 17.284C5.58933 17.228 5.71067 17.2 5.86 17.2H6.616C6.69067 17.2 6.756 17.228 6.812 17.284C6.868 17.34 6.896 17.4053 6.896 17.48C6.896 17.5547 6.87733 17.6153 6.84 17.662L2.514 21.89L7.12 26.524C7.16667 26.58 7.19 26.6453 7.19 26.72C7.19 26.7947 7.162 26.86 7.106 26.916C7.05 26.972 6.98467 27 6.91 27H6.126C5.96733 27 5.846 26.972 5.762 26.916C5.678 26.8507 5.61733 26.804 5.58 26.776L1.576 22.828V26.678C1.576 26.7713 1.54333 26.8507 1.478 26.916C1.422 26.972 1.34267 27 1.24 27H0.54ZM11.6343 27.14C10.841 27.14 10.1597 27.0047 9.59034 26.734C9.02101 26.454 8.58234 26.0293 8.27434 25.46C7.96634 24.8813 7.79368 24.158 7.75634 23.29C7.74701 22.8793 7.74234 22.4873 7.74234 22.114C7.74234 21.7313 7.74701 21.3347 7.75634 20.924C7.79368 20.0653 7.97101 19.3513 8.28834 18.782C8.61501 18.2033 9.06301 17.774 9.63234 17.494C10.211 17.2047 10.8783 17.06 11.6343 17.06C12.3997 17.06 13.067 17.2047 13.6363 17.494C14.215 17.774 14.6677 18.2033 14.9943 18.782C15.321 19.3513 15.4983 20.0653 15.5263 20.924C15.545 21.3347 15.5543 21.7313 15.5543 22.114C15.5543 22.4873 15.545 22.8793 15.5263 23.29C15.4983 24.158 15.3257 24.8813 15.0083 25.46C14.7003 26.0293 14.2617 26.454 13.6923 26.734C13.123 27.0047 12.437 27.14 11.6343 27.14ZM11.6343 25.95C12.353 25.95 12.9363 25.7353 13.3843 25.306C13.8417 24.8767 14.089 24.1813 14.1263 23.22C14.145 22.8 14.1543 22.4267 14.1543 22.1C14.1543 21.764 14.145 21.3907 14.1263 20.98C14.1077 20.336 13.9863 19.8133 13.7623 19.412C13.5477 19.0107 13.2583 18.7167 12.8943 18.53C12.5303 18.3433 12.1103 18.25 11.6343 18.25C11.177 18.25 10.7663 18.3433 10.4023 18.53C10.0383 18.7167 9.74434 19.0107 9.52034 19.412C9.30568 19.8133 9.18434 20.336 9.15634 20.98C9.14701 21.3907 9.14234 21.764 9.14234 22.1C9.14234 22.4267 9.14701 22.8 9.15634 23.22C9.19368 24.1813 9.44101 24.8767 9.89834 25.306C10.3557 25.7353 10.9343 25.95 11.6343 25.95ZM17.917 27C17.8143 27 17.735 26.972 17.679 26.916C17.623 26.8507 17.595 26.7713 17.595 26.678V17.536C17.595 17.4333 17.623 17.354 17.679 17.298C17.735 17.2327 17.8143 17.2 17.917 17.2H18.561C18.673 17.2 18.757 17.228 18.813 17.284C18.869 17.3307 18.9016 17.368 18.911 17.396L23.559 24.536V17.536C23.559 17.4333 23.587 17.354 23.643 17.298C23.699 17.2327 23.7783 17.2 23.881 17.2H24.553C24.6556 17.2 24.735 17.2327 24.791 17.298C24.8563 17.354 24.889 17.4333 24.889 17.536V26.664C24.889 26.7573 24.8563 26.8367 24.791 26.902C24.735 26.9673 24.6603 27 24.567 27H23.895C23.7923 27 23.713 26.972 23.657 26.916C23.6103 26.86 23.5776 26.8227 23.559 26.804L18.925 19.734V26.678C18.925 26.7713 18.8923 26.8507 18.827 26.916C18.771 26.972 18.6916 27 18.589 27H17.917ZM27.6377 27C27.535 27 27.4557 26.972 27.3997 26.916C27.3437 26.8507 27.3157 26.7713 27.3157 26.678V17.536C27.3157 17.4333 27.3437 17.354 27.3997 17.298C27.4557 17.2327 27.535 17.2 27.6377 17.2H28.2817C28.3937 17.2 28.4777 17.228 28.5337 17.284C28.5897 17.3307 28.6223 17.368 28.6317 17.396L33.2797 24.536V17.536C33.2797 17.4333 33.3077 17.354 33.3637 17.298C33.4197 17.2327 33.499 17.2 33.6017 17.2H34.2737C34.3763 17.2 34.4557 17.2327 34.5117 17.298C34.577 17.354 34.6097 17.4333 34.6097 17.536V26.664C34.6097 26.7573 34.577 26.8367 34.5117 26.902C34.4557 26.9673 34.381 27 34.2877 27H33.6157C33.513 27 33.4337 26.972 33.3777 26.916C33.331 26.86 33.2983 26.8227 33.2797 26.804L28.6457 19.734V26.678C28.6457 26.7713 28.613 26.8507 28.5477 26.916C28.4917 26.972 28.4123 27 28.3097 27H27.6377ZM37.3584 27C37.2557 27 37.1764 26.972 37.1204 26.916C37.0644 26.8507 37.0364 26.7713 37.0364 26.678V17.536C37.0364 17.4333 37.0644 17.354 37.1204 17.298C37.1764 17.2327 37.2557 17.2 37.3584 17.2H43.1404C43.243 17.2 43.3224 17.2327 43.3784 17.298C43.4344 17.354 43.4624 17.4333 43.4624 17.536V18.068C43.4624 18.1707 43.4344 18.25 43.3784 18.306C43.3224 18.362 43.243 18.39 43.1404 18.39H38.3804V21.456H42.8324C42.935 21.456 43.0144 21.4887 43.0704 21.554C43.1264 21.61 43.1544 21.6893 43.1544 21.792V22.31C43.1544 22.4033 43.1264 22.4827 43.0704 22.548C43.0144 22.604 42.935 22.632 42.8324 22.632H38.3804V25.81H43.2524C43.355 25.81 43.4344 25.838 43.4904 25.894C43.5464 25.95 43.5744 26.0293 43.5744 26.132V26.678C43.5744 26.7713 43.5464 26.8507 43.4904 26.916C43.4344 26.972 43.355 27 43.2524 27H37.3584ZM48.9589 27.14C48.1002 27.14 47.3862 26.9813 46.8169 26.664C46.2569 26.3467 45.8322 25.9033 45.5429 25.334C45.2536 24.7647 45.0949 24.102 45.0669 23.346C45.0576 22.9633 45.0529 22.5527 45.0529 22.114C45.0529 21.6753 45.0576 21.2553 45.0669 20.854C45.0949 20.098 45.2536 19.4353 45.5429 18.866C45.8322 18.2967 46.2569 17.8533 46.8169 17.536C47.3862 17.2187 48.1002 17.06 48.9589 17.06C49.6029 17.06 50.1676 17.1487 50.6529 17.326C51.1382 17.5033 51.5396 17.7413 51.8569 18.04C52.1836 18.3387 52.4309 18.6747 52.5989 19.048C52.7669 19.412 52.8602 19.79 52.8789 20.182C52.8882 20.266 52.8602 20.336 52.7949 20.392C52.7389 20.448 52.6689 20.476 52.5849 20.476H51.8149C51.7309 20.476 51.6562 20.4527 51.5909 20.406C51.5349 20.3593 51.4929 20.2753 51.4649 20.154C51.3062 19.426 51.0076 18.9267 50.5689 18.656C50.1396 18.3853 49.5982 18.25 48.9449 18.25C48.1982 18.25 47.6056 18.4647 47.1669 18.894C46.7282 19.314 46.4902 19.9907 46.4529 20.924C46.4249 21.6893 46.4249 22.4733 46.4529 23.276C46.4902 24.2093 46.7282 24.8907 47.1669 25.32C47.6056 25.74 48.1982 25.95 48.9449 25.95C49.5982 25.95 50.1396 25.8147 50.5689 25.544C51.0076 25.2733 51.3062 24.774 51.4649 24.046C51.4929 23.9247 51.5349 23.8407 51.5909 23.794C51.6562 23.7473 51.7309 23.724 51.8149 23.724H52.5849C52.6689 23.724 52.7389 23.752 52.7949 23.808C52.8602 23.864 52.8882 23.934 52.8789 24.018C52.8602 24.41 52.7669 24.7927 52.5989 25.166C52.4309 25.53 52.1836 25.8613 51.8569 26.16C51.5396 26.4587 51.1382 26.6967 50.6529 26.874C50.1676 27.0513 49.6029 27.14 48.9589 27.14ZM57.2191 27C57.1258 27 57.0464 26.972 56.9811 26.916C56.9251 26.8507 56.8971 26.7713 56.8971 26.678V18.446H54.2091C54.1158 18.446 54.0364 18.418 53.9711 18.362C53.9151 18.2967 53.8871 18.2173 53.8871 18.124V17.536C53.8871 17.4333 53.9151 17.354 53.9711 17.298C54.0364 17.2327 54.1158 17.2 54.2091 17.2H60.9571C61.0598 17.2 61.1391 17.2327 61.1951 17.298C61.2604 17.354 61.2931 17.4333 61.2931 17.536V18.124C61.2931 18.2173 61.2604 18.2967 61.1951 18.362C61.1391 18.418 61.0598 18.446 60.9571 18.446H58.2831V26.678C58.2831 26.7713 58.2504 26.8507 58.1851 26.916C58.1291 26.972 58.0498 27 57.9471 27H57.2191Z\",\n fill: \"white\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgKornitNameIcon);\nexport default __webpack_public_path__ + \"static/media/KornitNameIcon.94f24be8.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgPrinterIconMobile(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 16,\n height: 16,\n viewBox: \"0 0 16 16\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M13 0H3V3H13V0Z\",\n fill: \"white\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M15 5H1C0.4 5 0 5.4 0 6V12C0 12.6 0.4 13 1 13H3V15C3 15.6 3.4 16 4 16H12C12.6 16 13 15.6 13 15V13H15C15.6 13 16 12.6 16 12V6C16 5.4 15.6 5 15 5ZM11 14H5V9H11V14Z\",\n fill: \"white\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgPrinterIconMobile);\nexport default __webpack_public_path__ + \"static/media/PrinterIconMobile.c391cf47.svg\";\nexport { ForwardRef as ReactComponent };","import React from 'react';\r\nimport styled from 'styled-components';\r\nimport BurgerMobile from './BurgerMobile';\r\nimport { ShellHeaderUiProps } from './ShellHeader';\r\nimport { ShellHeaderProps } from './ShellHeaderContainer';\r\nimport { ReactComponent as KornitMobileIcon } from '../../assets/icons/KornitIconMobile.svg';\r\nimport { ReactComponent as KornitNameIcon } from '../../assets/icons/KornitNameIcon.svg';\r\nimport { ReactComponent as PrinterIcon } from '../../assets/icons/PrinterIconMobile.svg';\r\nimport { format, isValid } from 'date-fns';\r\nimport ShellUserNav from './ShellUserNav';\r\nimport { StyledAvatar } from './ShellHeaderDesktop';\r\nimport { Link } from 'react-router-dom';\r\n\r\nconst MobileHeaderWrapper = styled.div`\r\n box-sizing: border-box;\r\n height: 88px;\r\n min-height: 88px;\r\n max-height: 88px;\r\n padding: 8px 15px;\r\n display: flex;\r\n flex-direction: row;\r\n align-items: center;\r\n justify-content: space-between;\r\n background-color: #2ea1f8;\r\n`;\r\nconst LeftSide = styled.div`\r\n display: flex;\r\n flex-direction: row;\r\n justify-content: flex-start;\r\n align-items: center;\r\n`;\r\nconst BurgerPlaceHolder = styled.div`\r\n display: flex;\r\n flex-direction: row;\r\n align-items: center;\r\n`;\r\nconst LogoLink = styled(Link)`\r\n text-decoration: inherit;\r\n color: inherit;\r\n cursor: auto;\r\n`;\r\nconst LogoPlaceHolder = styled.div`\r\n display: flex;\r\n flex-direction: row;\r\n align-items: center;\r\n justify-content: space-between;\r\n width: 100px;\r\n margin-left: 20px;\r\n`;\r\nconst LogoItemPlaceHolder = styled.div`\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n`;\r\nconst RightSide = styled.div`\r\n display: flex;\r\n flex-direction: row;\r\n justify-content: flex-end;\r\n align-items: center;\r\n border-left: 1px solid #ffffff;\r\n padding-left: 14px;\r\n font-family: 'Rubik';\r\n font-style: normal;\r\n font-weight: 400;\r\n color: #ffffff;\r\n width: 164px;\r\n`;\r\nconst LastUpdatePlaceHolder = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n`;\r\nconst LastUpdateUpperRow = styled.div.attrs({\r\n 'data-automationid': ' totalPrintersCount',\r\n})`\r\n display: flex;\r\n font-size: 14px;\r\n`;\r\nconst LastUpdateUpperRowSpan = styled.span`\r\n margin-left: 10px;\r\n`;\r\nconst LastUpdateBottomRow = styled.div`\r\n display: flex;\r\n font-size: 14px;\r\n`;\r\n\r\nconst AvatarPlaceHolder = styled.div`\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n width: 51px;\r\n`;\r\nconst LoadingPlaceHolder = styled.div`\r\n display: flex;\r\n width: 100%;\r\n padding-right: 30px;\r\n`;\r\nconst LogoBlock = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n`;\r\nconst CustomerName = styled.div`\r\n width: 100px;\r\n white-space: nowrap !important;\r\n overflow: hidden !important;\r\n text-overflow: ellipsis !important;\r\n font-family: 'Rubik';\r\n font-style: normal;\r\n font-weight: 400;\r\n color: #ffffff;\r\n margin-top: 4px;\r\n`;\r\nconst ShellHeaderMobile = (props: ShellHeaderUiProps) => {\r\n const {\r\n profilePictureUrl,\r\n selectedSystemGroup,\r\n activeSystemsMap,\r\n checkedLastUpdate,\r\n activeReport,\r\n isReadOnlyRole,\r\n tennantName,\r\n } = props;\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 {isReadOnlyRole && {tennantName}}\r\n \r\n \r\n \r\n \r\n \r\n {activeSystemsMap.length > 1 ? (\r\n <>\r\n {' '}\r\n \r\n {activeSystemsMap[0]}\r\n {' / '}\r\n {activeSystemsMap[2]}\r\n \r\n \r\n ) : (\r\n Loading...\r\n )}\r\n \r\n \r\n {isValid(checkedLastUpdate) && format(checkedLastUpdate, 'MMMM dd, yyyy, hh:mm aaaa')}\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 ShellHeaderMobile;\r\n","import React, { memo } from 'react';\r\nimport { ShellHeaderProps } from './ShellHeaderContainer';\r\nimport { UserSystemGroup } from 'store/storeTypes';\r\nimport ShellHeaderDesktop from './ShellHeaderDesktop';\r\nimport ShellHeaderMobile from './ShellHeaderMobile';\r\nimport { ReportTypesNew } from 'models/ReportData';\r\nexport type ShellHeaderUiProps = {\r\n activeSystemsMap: string[];\r\n checkedLastUpdate: Date;\r\n profilePictureUrl: string;\r\n selectedSystemGroup: any;\r\n activeReport: ReportTypesNew;\r\n userEmail: string;\r\n tennantName: string;\r\n isReadOnlyRole: boolean;\r\n lastResponseUpdateTime: Date;\r\n};\r\nconst ShellHeader = memo((props: ShellHeaderProps) => {\r\n const {\r\n profilePictureUrl,\r\n activeSystems,\r\n lastUpdateDTF,\r\n lastUpdateDTG,\r\n lastUpdateApollo,\r\n selectedSystemGroup,\r\n screenWidth,\r\n activeReport,\r\n userEmail,\r\n tennantName,\r\n isReadOnlyRole,\r\n lastResponseUpdateTime,\r\n } = props;\r\n const lastUpdate =\r\n selectedSystemGroup === UserSystemGroup.DTG\r\n ? lastUpdateDTG\r\n : selectedSystemGroup === UserSystemGroup.Apollo\r\n ? lastUpdateApollo\r\n : lastUpdateDTF;\r\n const checkedLastUpdate = new Date(lastUpdate);\r\n\r\n const activeSystemsMap = activeSystems && activeSystems.split(' ');\r\n const isMobileView = screenWidth <= 900;\r\n return (\r\n <>\r\n {isMobileView ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n );\r\n});\r\n\r\nexport default ShellHeader;\r\n","import { connect } from 'react-redux';\r\nimport { withRouter, RouteComponentProps } from 'react-router-dom';\r\n\r\nimport ShellHeader from './ShellHeader';\r\nimport { withAuth } from 'services/AuthProvider';\r\nimport { Store } from 'store/storeTypes';\r\nimport {\r\n isReadOnlyRoleSelector,\r\n profilePictureUrlSelector,\r\n screenWidthSelector,\r\n userEmailSelector,\r\n} from 'reducers/appUserReducer';\r\nimport { systemGroupSelector } from 'reducers/ui/systemGroupUiReducer';\r\nimport { activeSystemsBySystemGroupSelector } from 'reducers/reports/filterDataReducer';\r\nimport { importedTenantIdSelector, tenantNameSelector } from 'reducers/userSettingsReducer';\r\nimport {\r\n apolloLastUpdateSelector,\r\n dtfLastUpdateSelector,\r\n dtgLastUpdateSelector,\r\n} from 'reducers/apiStateReducer';\r\nimport { activeReprotSelector } from 'reducers/reports/filterStateReducer';\r\nimport { overviewTimeOfLastMainResponseSelector } from 'reducers/overviewReducer';\r\n\r\nconst mapStateToProps = (state: Store) => {\r\n return {\r\n profilePictureUrl: profilePictureUrlSelector(state),\r\n activeSystems: activeSystemsBySystemGroupSelector(state),\r\n lastUpdateDTG: dtgLastUpdateSelector(state),\r\n lastUpdateDTF: dtfLastUpdateSelector(state),\r\n lastUpdateApollo: apolloLastUpdateSelector(state),\r\n selectedSystemGroup: systemGroupSelector(state),\r\n tennantName: tenantNameSelector(state),\r\n importedTennantId: importedTenantIdSelector(state),\r\n screenWidth: screenWidthSelector(state),\r\n activeReport: activeReprotSelector(state),\r\n userEmail: userEmailSelector(state),\r\n isReadOnlyRole: isReadOnlyRoleSelector(state),\r\n lastResponseUpdateTime: overviewTimeOfLastMainResponseSelector(state),\r\n };\r\n};\r\n\r\nexport type ShellHeaderProps = ReturnType &\r\n RouteComponentProps>;\r\n\r\nexport default withAuth(connect(mapStateToProps)(withRouter(ShellHeader)));\r\n","import { connect } from 'react-redux';\r\nimport React from 'react';\r\nimport { Route, Redirect, RouteProps } from 'react-router-dom';\r\n\r\nimport { AuthSupportProps } from 'contracts/auth';\r\nimport { withAuth } from 'services/AuthProvider';\r\nimport { PermissionAuth0 } from 'models/Permissions';\r\nimport { GenericPropsType, Store } from 'store/storeTypes';\r\nimport { appUserToRoles } from 'selectors/uiSelectors';\r\nimport { defaultAppPath } from 'contracts/constants';\r\nimport { KonnectAnalytics } from 'KonnectAnalytics/konnectAnalytics';\r\n\r\ninterface PrivateRouteProps extends AuthSupportProps, RouteProps {\r\n allowedRoles?: PermissionAuth0[];\r\n appUserRolesFromStore: PermissionAuth0[];\r\n}\r\n\r\nconst mapStateToProps = (state: Store) => ({\r\n appUserRolesFromStore: appUserToRoles(state),\r\n});\r\n\r\nconst ProtectedRoute = ({\r\n component: Component,\r\n render,\r\n authService,\r\n appUserRolesFromStore,\r\n allowedRoles,\r\n ...rest\r\n}: PrivateRouteProps) => {\r\n const appUserRoles = appUserRolesFromStore.length\r\n ? appUserRolesFromStore\r\n : (authService.getUserRoles() as PermissionAuth0[]);\r\n\r\n const protectedRender = (props: GenericPropsType) => {\r\n if (authService.isAuthenticated()) {\r\n KonnectAnalytics.trackHistory(props.location);\r\n if (allowedRoles) {\r\n const userAllowedAccess =\r\n appUserRoles && allowedRoles.some(role => appUserRoles.includes(role));\r\n\r\n if (!userAllowedAccess) {\r\n return ;\r\n }\r\n }\r\n // render prop is stronger than component prop\r\n if (render) return render(props);\r\n if (Component) return ;\r\n } else {\r\n return ;\r\n }\r\n\r\n return null;\r\n };\r\n\r\n return ;\r\n};\r\n\r\nexport default connect(mapStateToProps)(withAuth(ProtectedRoute));\r\n","import React from 'react';\r\nimport styled from 'styled-components/macro';\r\nimport { PRIVACY_POLICY_PDF } from 'contracts/constants';\r\n\r\nconst BottomPrompt = styled.div`\r\n position: absolute;\r\n bottom: 0;\r\n width: 100vw;\r\n background: rgba(255, 255, 255, 0.8);\r\n color: #2ea1f8;\r\n padding: 40px 20px;\r\n border-top: 1px solid #2ea1f8;\r\n a {\r\n color: #2ea1f8;\r\n }\r\n opacity: 0;\r\n transition: all 0.5s ease;\r\n`;\r\n\r\nconst Dismiss = styled.div`\r\n position: absolute;\r\n top: 5px;\r\n right: 10px;\r\n font-size: 22px;\r\n line-height: 15px;\r\n padding: 5px;\r\n cursor: pointer;\r\n`;\r\n\r\ninterface CookiesPromptProps {\r\n action: () => void;\r\n}\r\n\r\nfunction CookiesPrompt(props: CookiesPromptProps) {\r\n const promptEl = React.useRef(null);\r\n\r\n function handleChange() {\r\n props.action();\r\n\r\n promptEl.current!.style.opacity = '0';\r\n\r\n setTimeout(() => {\r\n promptEl.current!.style.display = 'none';\r\n }, 500);\r\n }\r\n\r\n React.useEffect(() => {\r\n setTimeout(() => {\r\n if (promptEl.current) promptEl.current.style.opacity = '1';\r\n }, 500);\r\n }, [promptEl]);\r\n\r\n return (\r\n \r\n ×\r\n Kornit Digital uses cookies to enable the best product match per user. If you\r\n continue to use our services, we will assume you to agree to use\r\n of such cookies. Navigate to Terms and Conditions →\r\n \r\n Privacy Policy\r\n \r\n .\r\n \r\n );\r\n}\r\n\r\nexport default CookiesPrompt;\r\n","var _path, _path2, _path3, _circle, _circle2, _circle3, _circle4, _circle5, _circle6, _path4;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgNewLogo(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 111,\n height: 36,\n viewBox: \"0 0 111 36\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M30.079 30.3157L23.4474 1.65784L35.0527 13.9736L30.079 30.3157Z\",\n stroke: \"#2EA1F8\",\n strokeWidth: 0.5\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M23.4474 1.65784L6.86846 5.44731L1.89478 22.0263L23.4474 1.65784Z\",\n stroke: \"#2EA1F8\",\n strokeWidth: 0.5\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M30.079 30.3158L1.89478 22.0264L13.5 34.579L30.079 30.3158Z\",\n stroke: \"#2EA1F8\",\n strokeWidth: 0.5\n })), _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 23.4473,\n cy: 1.65789,\n r: 1.65789,\n fill: \"#2EA1F8\"\n })), _circle2 || (_circle2 = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 6.86847,\n cy: 5.44732,\n r: 1.65789,\n fill: \"#2EA1F8\"\n })), _circle3 || (_circle3 = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 1.65789,\n cy: 22.0263,\n r: 1.65789,\n fill: \"#2EA1F8\"\n })), _circle4 || (_circle4 = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 13.5,\n cy: 34.3421,\n r: 1.65789,\n fill: \"#2EA1F8\"\n })), _circle5 || (_circle5 = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 30.0789,\n cy: 30.5527,\n r: 1.65789,\n fill: \"#2EA1F8\"\n })), _circle6 || (_circle6 = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 35.2895,\n cy: 13.9737,\n r: 1.65789,\n fill: \"#2EA1F8\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M43.54 15C43.4467 15 43.3673 14.972 43.302 14.916C43.246 14.8507 43.218 14.7713 43.218 14.678V5.536C43.218 5.43333 43.246 5.354 43.302 5.298C43.3673 5.23267 43.4467 5.2 43.54 5.2H44.24C44.3427 5.2 44.422 5.23267 44.478 5.298C44.5433 5.354 44.576 5.43333 44.576 5.536V9.008L48.314 5.424C48.4633 5.27467 48.6453 5.2 48.86 5.2H49.616C49.6907 5.2 49.756 5.228 49.812 5.284C49.868 5.34 49.896 5.40533 49.896 5.48C49.896 5.55467 49.8773 5.61533 49.84 5.662L45.514 9.89L50.12 14.524C50.1667 14.58 50.19 14.6453 50.19 14.72C50.19 14.7947 50.162 14.86 50.106 14.916C50.05 14.972 49.9847 15 49.91 15H49.126C48.9207 15 48.7387 14.9207 48.58 14.762L44.576 10.828V14.678C44.576 14.7713 44.5433 14.8507 44.478 14.916C44.4127 14.972 44.3333 15 44.24 15H43.54ZM54.0024 15.14C52.9757 15.14 52.1777 14.8507 51.6084 14.272C51.0484 13.6933 50.7497 12.9233 50.7124 11.962L50.6984 11.36L50.7124 10.758C50.7497 9.806 51.053 9.04067 51.6224 8.462C52.1917 7.874 52.985 7.58 54.0024 7.58C55.0197 7.58 55.813 7.874 56.3824 8.462C56.9517 9.04067 57.255 9.806 57.2924 10.758C57.3017 10.8607 57.3064 11.0613 57.3064 11.36C57.3064 11.6587 57.3017 11.8593 57.2924 11.962C57.255 12.9233 56.9517 13.6933 56.3824 14.272C55.8224 14.8507 55.029 15.14 54.0024 15.14ZM54.0024 14.062C54.5904 14.062 55.0524 13.8753 55.3884 13.502C55.7337 13.1287 55.9204 12.592 55.9484 11.892C55.9577 11.7987 55.9624 11.6213 55.9624 11.36C55.9624 11.0987 55.9577 10.9213 55.9484 10.828C55.9204 10.128 55.7337 9.59133 55.3884 9.218C55.0524 8.84467 54.5904 8.658 54.0024 8.658C53.4144 8.658 52.9477 8.84467 52.6024 9.218C52.257 9.59133 52.075 10.128 52.0564 10.828L52.0424 11.36L52.0564 11.892C52.075 12.592 52.257 13.1287 52.6024 13.502C52.9477 13.8753 53.4144 14.062 54.0024 14.062ZM59.3814 15C59.2881 15 59.2088 14.972 59.1434 14.916C59.0874 14.8507 59.0594 14.7713 59.0594 14.678V8.056C59.0594 7.96267 59.0874 7.88333 59.1434 7.818C59.2088 7.75267 59.2881 7.72 59.3814 7.72H60.0254C60.1188 7.72 60.1981 7.75267 60.2634 7.818C60.3288 7.88333 60.3614 7.96267 60.3614 8.056V8.672C60.7441 8.03733 61.3974 7.72 62.3214 7.72H62.8674C62.9608 7.72 63.0354 7.75267 63.0914 7.818C63.1568 7.874 63.1894 7.94867 63.1894 8.042V8.616C63.1894 8.70933 63.1568 8.784 63.0914 8.84C63.0354 8.896 62.9608 8.924 62.8674 8.924H62.0274C61.5234 8.924 61.1268 9.07333 60.8374 9.372C60.5481 9.66133 60.4034 10.058 60.4034 10.562V14.678C60.4034 14.7713 60.3708 14.8507 60.3054 14.916C60.2401 14.972 60.1608 15 60.0674 15H59.3814ZM64.6998 15C64.6065 15 64.5271 14.972 64.4618 14.916C64.4058 14.8507 64.3778 14.7713 64.3778 14.678V8.042C64.3778 7.94867 64.4058 7.874 64.4618 7.818C64.5271 7.75267 64.6065 7.72 64.6998 7.72H65.3578C65.4511 7.72 65.5258 7.75267 65.5818 7.818C65.6471 7.874 65.6798 7.94867 65.6798 8.042V8.658C65.9505 8.31267 66.2678 8.04667 66.6318 7.86C67.0051 7.67333 67.4671 7.58 68.0178 7.58C68.9138 7.58 69.6091 7.86933 70.1038 8.448C70.6078 9.01733 70.8598 9.778 70.8598 10.73V14.678C70.8598 14.7713 70.8271 14.8507 70.7618 14.916C70.7058 14.972 70.6311 15 70.5378 15H69.8378C69.7445 15 69.6651 14.972 69.5998 14.916C69.5438 14.8507 69.5158 14.7713 69.5158 14.678V10.8C69.5158 10.1373 69.3525 9.624 69.0258 9.26C68.7085 8.896 68.2465 8.714 67.6398 8.714C67.0518 8.714 66.5851 8.90067 66.2398 9.274C65.8945 9.638 65.7218 10.1467 65.7218 10.8V14.678C65.7218 14.7713 65.6891 14.8507 65.6238 14.916C65.5678 14.972 65.4931 15 65.3998 15H64.6998ZM73.078 6.362C72.9847 6.362 72.9054 6.334 72.84 6.278C72.784 6.21267 72.756 6.13333 72.756 6.04V5.284C72.756 5.19067 72.784 5.11133 72.84 5.046C72.9054 4.98067 72.9847 4.948 73.078 4.948H73.96C74.0534 4.948 74.1327 4.98067 74.198 5.046C74.2634 5.11133 74.296 5.19067 74.296 5.284V6.04C74.296 6.13333 74.2634 6.21267 74.198 6.278C74.1327 6.334 74.0534 6.362 73.96 6.362H73.078ZM73.19 15C73.0967 15 73.0174 14.972 72.952 14.916C72.896 14.8507 72.868 14.7713 72.868 14.678V8.042C72.868 7.94867 72.896 7.874 72.952 7.818C73.0174 7.75267 73.0967 7.72 73.19 7.72H73.862C73.9554 7.72 74.03 7.75267 74.086 7.818C74.1514 7.874 74.184 7.94867 74.184 8.042V14.678C74.184 14.7713 74.1514 14.8507 74.086 14.916C74.03 14.972 73.9554 15 73.862 15H73.19ZM79.1007 15C77.626 15 76.8887 14.1787 76.8887 12.536V8.84H75.7967C75.7033 8.84 75.624 8.812 75.5587 8.756C75.5027 8.69067 75.4747 8.61133 75.4747 8.518V8.042C75.4747 7.94867 75.5027 7.874 75.5587 7.818C75.624 7.75267 75.7033 7.72 75.7967 7.72H76.8887V5.382C76.8887 5.28867 76.9167 5.214 76.9727 5.158C77.038 5.09267 77.1173 5.06 77.2107 5.06H77.8687C77.962 5.06 78.0367 5.09267 78.0927 5.158C78.158 5.214 78.1907 5.28867 78.1907 5.382V7.72H79.9267C80.02 7.72 80.0947 7.75267 80.1507 7.818C80.216 7.874 80.2487 7.94867 80.2487 8.042V8.518C80.2487 8.61133 80.216 8.69067 80.1507 8.756C80.0947 8.812 80.02 8.84 79.9267 8.84H78.1907V12.438C78.1907 12.9047 78.27 13.2593 78.4287 13.502C78.5873 13.7353 78.8487 13.852 79.2127 13.852H80.0667C80.16 13.852 80.2347 13.8847 80.2907 13.95C80.356 14.006 80.3887 14.0807 80.3887 14.174V14.678C80.3887 14.7713 80.356 14.8507 80.2907 14.916C80.2347 14.972 80.16 15 80.0667 15H79.1007ZM43.428 31C43.3347 31 43.2553 30.9673 43.19 30.902C43.1247 30.8367 43.092 30.7573 43.092 30.664V21.55C43.092 21.4473 43.12 21.3633 43.176 21.298C43.2413 21.2327 43.3253 21.2 43.428 21.2H44.66C44.7627 21.2 44.8467 21.2327 44.912 21.298C44.9773 21.3633 45.01 21.4473 45.01 21.55V24.826L48.174 21.452C48.2953 21.284 48.4773 21.2 48.72 21.2H50.106C50.1807 21.2 50.246 21.228 50.302 21.284C50.3673 21.34 50.4 21.41 50.4 21.494C50.4 21.5593 50.3813 21.6153 50.344 21.662L46.494 25.89L50.61 30.524C50.6567 30.58 50.68 30.6407 50.68 30.706C50.68 30.79 50.6473 30.86 50.582 30.916C50.526 30.972 50.4607 31 50.386 31H48.944C48.7107 31 48.5287 30.916 48.398 30.748L45.01 27.038V30.664C45.01 30.7667 44.9773 30.8507 44.912 30.916C44.8467 30.972 44.7627 31 44.66 31H43.428ZM55.1978 31.14C53.9285 31.14 52.9392 30.818 52.2298 30.174C51.5205 29.53 51.1472 28.5733 51.1098 27.304C51.1005 27.0333 51.0958 26.6367 51.0958 26.114C51.0958 25.582 51.1005 25.1807 51.1098 24.91C51.1472 23.6687 51.5298 22.7167 52.2578 22.054C52.9858 21.3913 53.9658 21.06 55.1978 21.06C56.4298 21.06 57.4098 21.3913 58.1378 22.054C58.8752 22.7167 59.2625 23.6687 59.2998 24.91C59.3185 25.4513 59.3278 25.8527 59.3278 26.114C59.3278 26.366 59.3185 26.7627 59.2998 27.304C59.2532 28.5733 58.8752 29.53 58.1658 30.174C57.4565 30.818 56.4672 31.14 55.1978 31.14ZM55.1978 29.53C55.8232 29.53 56.3225 29.3433 56.6958 28.97C57.0692 28.5873 57.2698 28.0087 57.2978 27.234C57.3165 26.674 57.3258 26.296 57.3258 26.1C57.3258 25.8853 57.3165 25.5073 57.2978 24.966C57.2698 24.1913 57.0692 23.6173 56.6958 23.244C56.3225 22.8613 55.8232 22.67 55.1978 22.67C54.5818 22.67 54.0872 22.8613 53.7138 23.244C53.3405 23.6173 53.1398 24.1913 53.1118 24.966C53.1025 25.2367 53.0978 25.6147 53.0978 26.1C53.0978 26.576 53.1025 26.954 53.1118 27.234C53.1398 28.0087 53.3358 28.5873 53.6998 28.97C54.0732 29.3433 54.5725 29.53 55.1978 29.53ZM61.5022 31C61.4089 31 61.3296 30.9673 61.2642 30.902C61.1989 30.8367 61.1662 30.7573 61.1662 30.664V21.55C61.1662 21.4473 61.1942 21.3633 61.2502 21.298C61.3156 21.2327 61.3996 21.2 61.5022 21.2H62.5802C62.6922 21.2 62.7762 21.2233 62.8322 21.27C62.8882 21.3073 62.9396 21.3587 62.9862 21.424L67.0182 27.696V21.55C67.0182 21.4473 67.0462 21.3633 67.1022 21.298C67.1676 21.2327 67.2516 21.2 67.3542 21.2H68.5302C68.6329 21.2 68.7169 21.2327 68.7822 21.298C68.8476 21.3633 68.8802 21.4473 68.8802 21.55V30.65C68.8802 30.7527 68.8476 30.8367 68.7822 30.902C68.7169 30.9673 68.6376 31 68.5442 31H67.4522C67.2936 31 67.1582 30.9253 67.0462 30.776L63.0282 24.644V30.664C63.0282 30.7667 62.9956 30.8507 62.9302 30.916C62.8649 30.972 62.7809 31 62.6782 31H61.5022ZM71.4007 31C71.3073 31 71.228 30.9673 71.1627 30.902C71.0973 30.8367 71.0647 30.7573 71.0647 30.664V21.55C71.0647 21.4473 71.0927 21.3633 71.1487 21.298C71.214 21.2327 71.298 21.2 71.4007 21.2H72.4787C72.5907 21.2 72.6747 21.2233 72.7307 21.27C72.7867 21.3073 72.838 21.3587 72.8847 21.424L76.9167 27.696V21.55C76.9167 21.4473 76.9447 21.3633 77.0007 21.298C77.066 21.2327 77.15 21.2 77.2527 21.2H78.4287C78.5313 21.2 78.6153 21.2327 78.6807 21.298C78.746 21.3633 78.7787 21.4473 78.7787 21.55V30.65C78.7787 30.7527 78.746 30.8367 78.6807 30.902C78.6153 30.9673 78.536 31 78.4427 31H77.3507C77.192 31 77.0567 30.9253 76.9447 30.776L72.9267 24.644V30.664C72.9267 30.7667 72.894 30.8507 72.8287 30.916C72.7633 30.972 72.6793 31 72.5767 31H71.4007ZM81.2991 31C81.2058 31 81.1264 30.9673 81.0611 30.902C80.9958 30.8367 80.9631 30.7573 80.9631 30.664V21.55C80.9631 21.4473 80.9911 21.3633 81.0471 21.298C81.1124 21.2327 81.1964 21.2 81.2991 21.2H87.4591C87.5618 21.2 87.6458 21.2327 87.7111 21.298C87.7764 21.3633 87.8091 21.4473 87.8091 21.55V22.474C87.8091 22.5767 87.7764 22.6607 87.7111 22.726C87.6458 22.782 87.5618 22.81 87.4591 22.81H82.8531V25.288H87.1511C87.2538 25.288 87.3378 25.3207 87.4031 25.386C87.4684 25.442 87.5011 25.5213 87.5011 25.624V26.492C87.5011 26.5947 87.4684 26.6787 87.4031 26.744C87.3378 26.8 87.2538 26.828 87.1511 26.828H82.8531V29.39H87.5711C87.6738 29.39 87.7578 29.4227 87.8231 29.488C87.8884 29.5533 87.9211 29.6373 87.9211 29.74V30.664C87.9211 30.7667 87.8884 30.8507 87.8231 30.916C87.7578 30.972 87.6738 31 87.5711 31H81.2991ZM93.37 31.14C92.082 31.14 91.0834 30.8087 90.374 30.146C89.674 29.4833 89.3007 28.55 89.254 27.346C89.2447 27.094 89.24 26.6833 89.24 26.114C89.24 25.5353 89.2447 25.1153 89.254 24.854C89.3007 23.6593 89.6787 22.7307 90.388 22.068C91.1067 21.396 92.1007 21.06 93.37 21.06C94.2007 21.06 94.924 21.2047 95.54 21.494C96.156 21.774 96.632 22.1613 96.968 22.656C97.304 23.1413 97.4814 23.692 97.5 24.308V24.336C97.5 24.4107 97.4674 24.476 97.402 24.532C97.346 24.5787 97.2807 24.602 97.206 24.602H95.876C95.764 24.602 95.68 24.5787 95.624 24.532C95.568 24.4853 95.5214 24.3967 95.484 24.266C95.3347 23.678 95.0874 23.2673 94.742 23.034C94.3967 22.7913 93.9347 22.67 93.356 22.67C92.012 22.67 91.312 23.4213 91.256 24.924C91.2467 25.176 91.242 25.5633 91.242 26.086C91.242 26.6087 91.2467 27.0053 91.256 27.276C91.312 28.7787 92.012 29.53 93.356 29.53C93.9347 29.53 94.3967 29.4087 94.742 29.166C95.0967 28.9233 95.344 28.5127 95.484 27.934C95.512 27.8033 95.554 27.7147 95.61 27.668C95.6754 27.6213 95.764 27.598 95.876 27.598H97.206C97.29 27.598 97.36 27.626 97.416 27.682C97.4814 27.738 97.5094 27.808 97.5 27.892C97.4814 28.508 97.304 29.0633 96.968 29.558C96.632 30.0433 96.156 30.4307 95.54 30.72C94.924 31 94.2007 31.14 93.37 31.14ZM101.652 31C101.559 31 101.48 30.9673 101.414 30.902C101.349 30.8367 101.316 30.7573 101.316 30.664V22.922H98.7264C98.633 22.922 98.5537 22.8893 98.4884 22.824C98.423 22.7587 98.3904 22.6793 98.3904 22.586V21.55C98.3904 21.4473 98.4184 21.3633 98.4744 21.298C98.5397 21.2327 98.6237 21.2 98.7264 21.2H105.866C105.969 21.2 106.053 21.2327 106.118 21.298C106.184 21.3633 106.216 21.4473 106.216 21.55V22.586C106.216 22.6793 106.184 22.7587 106.118 22.824C106.053 22.8893 105.969 22.922 105.866 22.922H103.29V30.664C103.29 30.7573 103.258 30.8367 103.192 30.902C103.127 30.9673 103.043 31 102.94 31H101.652Z\",\n fill: \"#2EA1F8\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgNewLogo);\nexport default __webpack_public_path__ + \"static/media/NewLogo.dd55c1af.svg\";\nexport { ForwardRef as ReactComponent };","import styled, { css } from 'styled-components/macro';\r\nimport MuiModal from 'components/_common/Modal';\r\nimport { Typography, Link, FormControlLabel, Checkbox } from '@material-ui/core';\r\n\r\nexport const StyledModal = styled(MuiModal)(props => {\r\n return css``;\r\n});\r\n\r\nexport const StyleText = styled(Typography)(props => {\r\n return css``;\r\n});\r\n\r\nexport const StyleLink = styled(Link)(props => {\r\n return css`\r\n cursor: pointer;\r\n `;\r\n});\r\n\r\nexport const StyledFormControlLabel = styled(FormControlLabel)(props => {\r\n return css``;\r\n});\r\n\r\nexport const StyledCheckbox = styled(Checkbox)(props => {\r\n return css``;\r\n});\r\n\r\nexport const StyledLayout = styled.div(props => {\r\n return css`\r\n padding: 20px;\r\n `;\r\n});\r\n\r\nexport const StyledWrapperContent = styled.div(props => {\r\n return css`\r\n margin-bottom: 20px;\r\n `;\r\n});\r\n\r\nexport const StyledWrapperCheckBox = styled.div(props => {\r\n return css``;\r\n});\r\n","import React, { useState } from 'react';\r\nimport {\r\n StyledModal,\r\n StyleText,\r\n StyleLink,\r\n StyledCheckbox,\r\n StyledFormControlLabel,\r\n StyledLayout,\r\n StyledWrapperCheckBox,\r\n StyledWrapperContent,\r\n} from './TermsModalStyles';\r\nimport { PRIVACY_POLICY_PDF, PRODUCT_TC_PDF, TERMS_OF_USE_PDF } from 'contracts/constants';\r\n\r\ninterface ITermsModalProps {\r\n action: (isApproved: boolean) => void;\r\n}\r\nexport const TermsModal = React.memo((props: ITermsModalProps) => {\r\n const [checked, setChecked] = useState(false);\r\n const { action } = props;\r\n\r\n const onClose = () => {\r\n setChecked(true);\r\n };\r\n\r\n const handleChange = (event: React.ChangeEvent) => {\r\n action(event.target.checked);\r\n onClose();\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n Please confirm that by logging-in to and/or using the Kornit Konnect website and/or App.\r\n you agree to the{' '}\r\n \r\n Kornit Konnect Terms of Use\r\n {' '}\r\n and you consent to the collection and the processing of your personal data by Kornit,\r\n including tracking of your activities within Konnect, under the terms of the Kornit\r\n \r\n {' '}\r\n Privacy Policy\r\n \r\n \r\n \r\n \r\n }\r\n label=\"Agree\"\r\n />\r\n \r\n \r\n \r\n );\r\n});\r\n","import React from 'react';\r\nimport SvgIcon, { SvgIconProps } from '@material-ui/core/SvgIcon';\r\n\r\n// SVG source:\r\n// https://raw.githubusercontent.com/lipis/flag-icon-css/master/flags/4x3/de.svg\r\n\r\nconst DE = (props: SvgIconProps) => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\n// SVG source:\r\n// https://raw.githubusercontent.com/lipis/flag-icon-css/master/flags/4x3/us.svg\r\n\r\nconst US = (props: SvgIconProps) => {\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\nexport { DE, US };\r\n","import React from 'react';\r\nimport { Radio, RadioGroup, FormControlLabel, FormControl } from '@material-ui/core';\r\nimport * as Flags from 'components/_common/Icons/Flags';\r\nimport styled from 'styled-components/macro';\r\n\r\ninterface IRadioItem {\r\n value: string | number;\r\n disabled?: boolean;\r\n flagIcon: string;\r\n flagName: string;\r\n}\r\ninterface IRadioLangGroupProps {\r\n value: string | number;\r\n onChange: (event: React.ChangeEvent) => void;\r\n data: IRadioItem[];\r\n defaultValue?: string | string[];\r\n}\r\n\r\nconst StyledLabel = styled.div`\r\n display: flex;\r\n`;\r\n\r\nconst StyledWrapperLabelIcon = styled.div`\r\n margin-right: 10px;\r\n display: flex;\r\n`;\r\n\r\nconst StyledLabelText = styled.span`\r\n font-family: Segoe UI, sans-serif;\r\n font-style: normal;\r\n font-weight: normal;\r\n font-size: 18px;\r\n color: #323c47;\r\n`;\r\n\r\nconst StyledFormControlLabel = styled(FormControlLabel)`\r\n margin-left: 0;\r\n margin-right: 0;\r\n justify-content: space-between;\r\n border-bottom: 1px solid #c5d0de;\r\n padding: 30px 0;\r\n display: flex;\r\n .LabelRoot {\r\n line-height: 1.4;\r\n }\r\n &:hover:not(.LabelDisabled) {\r\n ${StyledLabelText} {\r\n color: #208cd7;\r\n }\r\n }\r\n`;\r\n\r\nconst StyledFormControl = styled(FormControl)`\r\n width: 100%;\r\n`;\r\n\r\nconst StyledRadio = styled(Radio)`\r\n &.RadioRoot {\r\n padding: 0;\r\n }\r\n`;\r\n\r\nexport const RadioLangGroup = (props: IRadioLangGroupProps) => {\r\n const { data, value, onChange, defaultValue } = props;\r\n const renderLabel = (flagIcon: string, flagName: string) => {\r\n const Icon = Flags[flagIcon];\r\n return (\r\n \r\n \r\n \r\n \r\n {flagName}\r\n \r\n );\r\n };\r\n return (\r\n \r\n \r\n {data.map(item => {\r\n return (\r\n \r\n }\r\n classes={{\r\n label: 'LabelRoot',\r\n disabled: 'LabelDisabled',\r\n }}\r\n label={renderLabel(item.flagIcon, item.flagName)}\r\n disabled={item.disabled}\r\n labelPlacement=\"start\"\r\n />\r\n );\r\n })}\r\n \r\n \r\n );\r\n};\r\n","import React from 'react';\r\nimport { ToggleButton, ToggleButtonGroup } from '@material-ui/lab';\r\nimport styled from 'styled-components';\r\n\r\ninterface IToggleItem {\r\n value: string | number | boolean;\r\n label: string;\r\n disabled?: boolean;\r\n}\r\ninterface IToggleGroupProps {\r\n value: string | number | boolean;\r\n onChange: (event: React.MouseEvent, value: string | number | boolean) => void;\r\n data: IToggleItem[];\r\n name?: string;\r\n}\r\n\r\nconst StyledToggleButtonGroup = styled(ToggleButtonGroup)`\r\n height: 25px;\r\n border-radius: 4px;\r\n overflow: hidden;\r\n border: 1px solid #818e9b;\r\n width: 150px;\r\n`;\r\n\r\nconst StyledToggleButton = styled(ToggleButton)`\r\n font-family: Segoe UI, sans-serif;\r\n height: 100%;\r\n border: none;\r\n border-radius: 0;\r\n font-weight: 600;\r\n font-size: 12px;\r\n padding: 0;\r\n justify-content: center;\r\n width: 100%;\r\n &.Selected {\r\n background-color: #2ea1f8;\r\n color: #ffffff;\r\n &:hover {\r\n color: #2ea1f8;\r\n }\r\n }\r\n`;\r\n\r\nexport const ToggleGroup = (props: IToggleGroupProps) => {\r\n const { value, name, onChange, data } = props;\r\n return (\r\n \r\n {data.map(item => {\r\n return (\r\n \r\n {item.label}\r\n \r\n );\r\n })}\r\n \r\n );\r\n};\r\n","import Mobile from 'components/_common/Mobile';\r\nimport React, { Fragment } from 'react';\r\nimport styled from 'styled-components';\r\n\r\nimport { useTranslation } from 'react-i18next';\r\nimport PageContainer from '../_common/PageContainer';\r\nimport { PageHeaderUIContainer } from '../_common/PageHeaderUi';\r\nimport { SettingsProps } from './SettingsContainer';\r\nimport { RadioLangGroup } from 'components/_common/RadioLangGroup';\r\nimport { ToggleGroup } from 'components/_common/ToggleGroup';\r\nimport {\r\n LengthUnits,\r\n LengthUnitsGroupStrings,\r\n RTRMetricUnit,\r\n RTRMetricUnitGroupStrings,\r\n UserSettings,\r\n UserSystemGroup,\r\n UserSystemGroupStrings,\r\n} from 'store/storeTypes';\r\nimport LinearProgress from 'components/_common/LinearProgress';\r\nimport { useDebouncedCallback } from 'use-debounce';\r\nimport { Redirect } from 'react-router';\r\nimport { defaultAppPath } from '../../contracts/constants';\r\nimport { MobileReportWrapper } from 'components/Overview/OverviewMobile';\r\n\r\nconst Icon = styled.img.attrs({\r\n src: '/img/setting-icon.svg',\r\n})`\r\n margin-right: 15px;\r\n width: 30px;\r\n height: 30px;\r\n @media (max-width: 360px) {\r\n display: none;\r\n }\r\n`;\r\n\r\nconst TitleWrapper = styled.div`\r\n display: flex;\r\n align-items: center;\r\n\r\n @media (max-width: 440px) {\r\n margin: 10px 0;\r\n }\r\n`;\r\n\r\nconst Title = styled.h1`\r\n font-family: Rubik, sans-serif;\r\n font-weight: normal;\r\n font-size: 22px;\r\n color: #354052;\r\n`;\r\n\r\nconst Section = styled.div`\r\n background-color: white;\r\n margin-bottom: 15px;\r\n border: 1px solid #e6eaee;\r\n box-shadow: 0px 0px 3px rgba(0, 0, 0, 0.03);\r\n border-radius: 4px;\r\n padding-bottom: 48px;\r\n &:last-child {\r\n margin-bottom: 0;\r\n }\r\n @media (max-width: 750px) {\r\n &:last-child {\r\n margin-bottom: 15px;\r\n }\r\n padding-bottom: 30px;\r\n }\r\n`;\r\n\r\nconst SectionTitleWrapper = styled.div`\r\n border-bottom: 1px solid #c5d0de;\r\n padding: 15px;\r\n`;\r\n\r\nconst SectionTitle = styled.h3`\r\n font-family: Segoe UI, sans-serif;\r\n font-size: 18px;\r\n font-weight: 600;\r\n margin: 0;\r\n color: #323c47;\r\n @media (max-width: 750px) {\r\n font-size: 16px;\r\n }\r\n`;\r\n\r\nconst SectionList = styled.div`\r\n padding: 0 24px;\r\n`;\r\n\r\nconst SectionListItem = styled.div`\r\n border-bottom: 1px solid #c5d0de;\r\n padding: 30px 0;\r\n`;\r\n\r\nconst SectionListItemWrapper = styled.div`\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n`;\r\n\r\nconst SectionListItemLeftPart = styled.div``;\r\n\r\nconst SectionListItemTitle = styled.p`\r\n margin: 0;\r\n font-family: Segoe UI, sans-serif;\r\n font-weight: normal;\r\n font-size: 18px;\r\n color: #323c47;\r\n`;\r\n\r\nconst SectionListItemRightPart = styled.div``;\r\n\r\nconst SettingsWrapper = styled.div`\r\n display: flex;\r\n padding: 0 15px;\r\n @media (max-width: 750px) {\r\n flex-direction: column;\r\n }\r\n`;\r\n\r\nconst LeftPart = styled.div`\r\n flex: 1;\r\n margin-right: 15px;\r\n @media (max-width: 750px) {\r\n margin-right: 0;\r\n flex: auto;\r\n }\r\n`;\r\n\r\nconst RightPart = styled.div`\r\n flex: 1;\r\n @media (max-width: 750px) {\r\n flex: auto;\r\n }\r\n`;\r\nconst MobileSettings = props => {\r\n const {\r\n userSettings,\r\n updatedSettings,\r\n handleChangeDefaultValue,\r\n handleChangeLength,\r\n handleChangeMetrics,\r\n handleChangeLang,\r\n } = props;\r\n const { t } = useTranslation();\r\n\r\n return (\r\n \r\n {/* If userSystemGroup has ['DTF'] or ['DTF', 'DTG'] show settings menu item\r\n else REDIRECT TO DEFAULT PATH */}\r\n {userSettings.data.userSystemGroup?.includes(UserSystemGroup.DTF) ? (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {!userSettings.isLoading ? (\r\n \r\n \r\n {userSettings.data.userSystemGroup?.length === 2 && (\r\n
\r\n \r\n {t('settings.preferences')}\r\n \r\n \r\n \r\n \r\n \r\n {t('settings.defView')}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n )}\r\n
\r\n \r\n {t('settings.units')}\r\n \r\n \r\n \r\n \r\n \r\n {t('settings.length')}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {t('settings.rtrMetrics')}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n {t('settings.lang')}\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n ) : (\r\n \r\n )}\r\n
\r\n ) : (\r\n \r\n )}\r\n
\r\n );\r\n};\r\n\r\nexport default MobileSettings;\r\n","import React, { Fragment, useEffect, useState } from 'react';\r\nimport styled from 'styled-components/macro';\r\nimport { useTranslation } from 'react-i18next';\r\nimport PageContainer from '../_common/PageContainer';\r\nimport { PageHeaderUIContainer } from '../_common/PageHeaderUi';\r\nimport { SettingsProps } from './SettingsContainer';\r\nimport { RadioLangGroup } from 'components/_common/RadioLangGroup';\r\nimport { ToggleGroup } from 'components/_common/ToggleGroup';\r\nimport {\r\n LengthUnits,\r\n LengthUnitsGroupStrings,\r\n RTRMetricUnit,\r\n RTRMetricUnitGroupStrings,\r\n UserSettings,\r\n UserSystemGroup,\r\n UserSystemGroupStrings,\r\n} from 'store/storeTypes';\r\nimport LinearProgress from 'components/_common/LinearProgress';\r\nimport { useDebouncedCallback } from 'use-debounce';\r\nimport { Redirect } from 'react-router';\r\nimport { defaultAppPath } from '../../contracts/constants';\r\nimport MobileSettings from './MobileSettings';\r\n\r\nconst Icon = styled.img.attrs({\r\n src: '/img/setting-icon.svg',\r\n})`\r\n margin-right: 15px;\r\n width: 30px;\r\n height: 30px;\r\n @media (max-width: 360px) {\r\n display: none;\r\n }\r\n`;\r\n\r\nconst TitleWrapper = styled.div`\r\n display: flex;\r\n align-items: center;\r\n\r\n @media (max-width: 440px) {\r\n margin: 10px 0;\r\n }\r\n`;\r\n\r\nconst Title = styled.h1`\r\n font-family: Rubik, sans-serif;\r\n font-weight: normal;\r\n font-size: 22px;\r\n color: #354052;\r\n`;\r\n\r\nconst Section = styled.div`\r\n background-color: white;\r\n margin-bottom: 15px;\r\n border: 1px solid #e6eaee;\r\n box-shadow: 0px 0px 3px rgba(0, 0, 0, 0.03);\r\n border-radius: 4px;\r\n padding-bottom: 48px;\r\n &:last-child {\r\n margin-bottom: 0;\r\n }\r\n @media (max-width: 750px) {\r\n &:last-child {\r\n margin-bottom: 15px;\r\n }\r\n padding-bottom: 30px;\r\n }\r\n`;\r\n\r\nconst SectionTitleWrapper = styled.div`\r\n border-bottom: 1px solid #c5d0de;\r\n padding: 15px;\r\n`;\r\n\r\nconst SectionTitle = styled.h3`\r\n font-family: Segoe UI, sans-serif;\r\n font-size: 18px;\r\n font-weight: 600;\r\n margin: 0;\r\n color: #323c47;\r\n @media (max-width: 750px) {\r\n font-size: 16px;\r\n }\r\n`;\r\n\r\nconst SectionList = styled.div`\r\n padding: 0 24px;\r\n`;\r\n\r\nconst SectionListItem = styled.div`\r\n border-bottom: 1px solid #c5d0de;\r\n padding: 30px 0;\r\n`;\r\n\r\nconst SectionListItemWrapper = styled.div`\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n`;\r\n\r\nconst SectionListItemLeftPart = styled.div``;\r\n\r\nconst SectionListItemTitle = styled.p`\r\n margin: 0;\r\n font-family: Segoe UI, sans-serif;\r\n font-weight: normal;\r\n font-size: 18px;\r\n color: #323c47;\r\n`;\r\n\r\nconst SectionListItemRightPart = styled.div``;\r\n\r\nconst SettingsWrapper = styled.div`\r\n display: flex;\r\n padding: 0 15px;\r\n @media (max-width: 750px) {\r\n flex-direction: column;\r\n }\r\n`;\r\n\r\nconst LeftPart = styled.div`\r\n flex: 1;\r\n margin-right: 15px;\r\n @media (max-width: 750px) {\r\n margin-right: 0;\r\n flex: auto;\r\n }\r\n`;\r\n\r\nconst RightPart = styled.div`\r\n flex: 1;\r\n @media (max-width: 750px) {\r\n flex: auto;\r\n }\r\n`;\r\n\r\nconst Settings = React.memo((props: SettingsProps) => {\r\n const {\r\n userSettings,\r\n pbiReportHeight,\r\n pbiReportWidth,\r\n screenHeight,\r\n screenWidth,\r\n setAppUserSettings,\r\n } = props;\r\n const [isMobile, setIsMobile] = React.useState(false);\r\n useEffect(() => {\r\n if (screenWidth < 1366 || screenHeight < 766) {\r\n setIsMobile(true);\r\n } else {\r\n setIsMobile(false);\r\n }\r\n }, [pbiReportHeight, pbiReportWidth, screenWidth, screenHeight]);\r\n const { t } = useTranslation();\r\n\r\n const [debouncedSetAppUserSettings] = useDebouncedCallback(\r\n // function\r\n (args: UserSettings) => {\r\n return setAppUserSettings(args);\r\n },\r\n // delay in ms\r\n 300\r\n );\r\n\r\n const [updatedSettings, setUpdatedSettings] = useState(null);\r\n\r\n useEffect(() => {\r\n if (updatedSettings !== null) {\r\n debouncedSetAppUserSettings({\r\n ...userSettings.data, // settings from server\r\n ...updatedSettings, // new settings patch from client\r\n });\r\n }\r\n }, [updatedSettings]);\r\n\r\n const handleChangeLang = (event: React.ChangeEvent) => {\r\n if ((event.target as HTMLInputElement).value) {\r\n setUpdatedSettings({\r\n ...updatedSettings,\r\n portalLanguage: (event.target as HTMLInputElement).value,\r\n });\r\n }\r\n };\r\n\r\n // Need check only if not NULL because we use enums and we enum have 0\r\n const handleChangeDefaultValue = (\r\n event: React.MouseEvent,\r\n newVal: UserSystemGroupStrings\r\n ) => {\r\n if (newVal !== null) {\r\n setUpdatedSettings({\r\n ...updatedSettings,\r\n defaultSystemGroup: newVal,\r\n });\r\n }\r\n };\r\n\r\n const handleChangeLength = (\r\n event: React.MouseEvent,\r\n newVal: LengthUnitsGroupStrings\r\n ) => {\r\n if (newVal !== null) {\r\n setUpdatedSettings({\r\n ...updatedSettings,\r\n lengthUnits: newVal,\r\n });\r\n }\r\n };\r\n\r\n // const handleChangeVolume = (\r\n // event: React.MouseEvent,\r\n // newVal: VolumeUnitsGroupStrings\r\n // ) => {\r\n // if (newVal !== null) {\r\n // setUpdatedSettings({\r\n // ...updatedSettings,\r\n // volumeUnits: newVal,\r\n // });\r\n // }\r\n // };\r\n\r\n const handleChangeMetrics = (\r\n event: React.MouseEvent,\r\n newVal: RTRMetricUnitGroupStrings\r\n ) => {\r\n if (newVal !== null) {\r\n setUpdatedSettings({\r\n ...updatedSettings,\r\n rtrMetricUnit: newVal,\r\n });\r\n }\r\n };\r\n if (isMobile) {\r\n return (\r\n \r\n );\r\n } else {\r\n const isShowSettings =\r\n userSettings.data.userSystemGroup?.includes(UserSystemGroup.DTF) ||\r\n userSettings.data.userSystemGroup?.includes(UserSystemGroup.Apollo);\r\n const groups = userSettings.data.userSystemGroup?.map(group => {\r\n return {\r\n value: UserSystemGroup[group],\r\n label: group,\r\n };\r\n });\r\n\r\n return (\r\n \r\n {/* If userSystemGroup has ['DTF'] or ['DTF', 'DTG'] show settings menu item \r\n else REDIRECT TO DEFAULT PATH */}\r\n {isShowSettings ? (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {!userSettings.isLoading ? (\r\n \r\n \r\n {userSettings.data.userSystemGroup?.length >= 2 && (\r\n
\r\n \r\n {t('settings.preferences')}\r\n \r\n \r\n \r\n \r\n \r\n {t('settings.defView')}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n )}\r\n
\r\n \r\n {t('settings.units')}\r\n \r\n \r\n \r\n \r\n \r\n {t('settings.length')}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {t('settings.rtrMetrics')}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n {t('settings.lang')}\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n ) : (\r\n \r\n )}\r\n
\r\n ) : (\r\n \r\n )}\r\n
\r\n );\r\n }\r\n});\r\n\r\nexport default Settings;\r\n","import { connect } from 'react-redux';\r\nimport { bindActionCreators, Dispatch } from 'redux';\r\n\r\nimport { Store } from 'store/storeTypes';\r\nimport Settings from './Settings';\r\nimport { setAppUserSettings } from 'actions/userSettingsActions';\r\nimport {\r\n screenHeightSelector,\r\n screenWidthSelector,\r\n pbiReportWidthSelector,\r\n pbiReportHeightSelector,\r\n} from 'reducers/appUserReducer';\r\nimport { userSettingsSelector } from 'reducers/userSettingsReducer';\r\n\r\nconst mapStateToProps = (state: Store) => ({\r\n userSettings: userSettingsSelector(state),\r\n screenHeight: screenHeightSelector(state),\r\n screenWidth: screenWidthSelector(state),\r\n pbiReportWidth: pbiReportWidthSelector(state),\r\n pbiReportHeight: pbiReportHeightSelector(state),\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch: Dispatch) =>\r\n bindActionCreators(\r\n {\r\n setAppUserSettings,\r\n },\r\n dispatch\r\n );\r\n\r\nexport type SettingsProps = ReturnType &\r\n ReturnType;\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(Settings);\r\n","import styled from 'styled-components/macro';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\n\r\nconst CircularSpinner = styled(CircularProgress)`\r\n size: 20;\r\n color: #2ea1f8;\r\n position: absolute;\r\n`;\r\n\r\nexport default CircularSpinner;\r\n","import React from 'react';\r\nimport styled from 'styled-components/macro';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { format, isSameDay } from 'date-fns';\r\n\r\nimport DeleteIcon from '@material-ui/icons/Delete';\r\nimport EditIcon from '@material-ui/icons/Edit';\r\nimport IconMoreVert from '@material-ui/icons/MoreVert';\r\n\r\nimport { Frequency } from 'models/Scheduler';\r\nimport {\r\n TableCell as TableCellGeneric,\r\n TableRow as TableRowGeneric,\r\n ButtonsTableCell as ButtonsTableCellGeneric,\r\n TableIconButton,\r\n} from '../_common/Table';\r\nimport Switch from '../_common/Switch';\r\nimport PopupMenu from '../_common/PopupMenu';\r\nimport { SchedulerTableRowProps } from './SchedulerTableRowContainer';\r\nimport CircularSpinner from '../_common/CircularSpinner';\r\nimport { StyledComponentWithAnyType } from 'store/storeTypes';\r\n\r\nconst TableRow = styled(TableRowGeneric).attrs({\r\n 'data-automationid': 'Email Scheduler Table',\r\n})`\r\n &.sending {\r\n td {\r\n color: #354052;\r\n }\r\n }\r\n`;\r\nconst TableCell = styled(TableCellGeneric)`\r\n font-size: 14px;\r\n color: #c5d0de;\r\n`;\r\nconst SubjectCell = styled(TableCell)`\r\n width: 270px;\r\n min-width: 220px;\r\n @media (max-width: 1500px) {\r\n width: 190px;\r\n min-width: 190px;\r\n }\r\n @media (max-width: 500px) {\r\n width: 135px;\r\n min-width: 135px;\r\n }\r\n @media (max-width: 360px) {\r\n width: 115px;\r\n min-width: 115px;\r\n }\r\n`;\r\nconst ReportCell = styled(TableCell)`\r\n width: 125px;\r\n min-width: 125px;\r\n @media (max-width: 1500px) {\r\n width: 110px;\r\n min-width: 110px;\r\n }\r\n @media (max-width: 500px) {\r\n min-width: 85px;\r\n width: 85px;\r\n }\r\n`;\r\nconst TimeCell = styled(TableCell)`\r\n flex-direction: column;\r\n align-items: flex-start;\r\n justify-content: center;\r\n line-height: 26px;\r\n width: 240px;\r\n min-width: 240px;\r\n @media (max-width: 1500px) {\r\n width: 200px;\r\n min-width: 200px;\r\n }\r\n @media (max-width: 800px) {\r\n flex-grow: 1;\r\n }\r\n @media (max-width: 550px) {\r\n min-width: 80px;\r\n width: auto;\r\n }\r\n @media (max-width: 400px) {\r\n line-height: 16px;\r\n\r\n .date {\r\n font-size: 11px;\r\n }\r\n\r\n div:first-child {\r\n margin-bottom: 7px;\r\n }\r\n }\r\n b {\r\n font-weight: 500;\r\n }\r\n`;\r\nconst RepeatCell = styled(TableCell)`\r\n width: 450px;\r\n min-width: 150px;\r\n @media (max-width: 1500px) {\r\n width: 130px;\r\n min-width: 130px;\r\n }\r\n @media (max-width: 800px) {\r\n display: none;\r\n }\r\n @media (max-width: 1150px) {\r\n flex-grow: 1;\r\n }\r\n`;\r\nconst LastSentCell = styled(TableCell)`\r\n width: 135px;\r\n max-width: 135px;\r\n @media (max-width: 1500px) {\r\n width: 120px;\r\n min-width: 120px;\r\n }\r\n @media (max-width: 1250px) {\r\n display: none;\r\n }\r\n`;\r\nconst NotesCell = styled(TableCell)`\r\n flex-grow: 1;\r\n font-size: 12px;\r\n @media (max-width: 1150px) {\r\n display: none;\r\n }\r\n`;\r\nconst SendingCell = styled(TableCell)`\r\n min-width: 130px;\r\n width: 130px;\r\n padding: 0;\r\n @media (max-width: 670px) {\r\n display: none;\r\n }\r\n`;\r\nconst ButtonsTableCell = styled(ButtonsTableCellGeneric)`\r\n @media (max-width: 930px) {\r\n display: none;\r\n }\r\n`;\r\n\r\nconst SchedulerTableRow = React.memo((props: SchedulerTableRowProps) => {\r\n const { t } = useTranslation();\r\n const { scheduler, isSaving, toggleSchedulerId } = props;\r\n const {\r\n toggleSchedulerSending,\r\n deleteScheduler,\r\n openModalSchedulerEdit,\r\n openModalSchedulerPreview,\r\n openModalSchedulerDuplicate,\r\n } = props;\r\n\r\n const {\r\n reportId,\r\n subject,\r\n emailReportId,\r\n startSendDate,\r\n endSendDate,\r\n repeat,\r\n lastSent,\r\n notes,\r\n isActive: sending,\r\n } = scheduler;\r\n\r\n const onToggleChecked = (event: React.ChangeEvent, checked: boolean) => {\r\n event.stopPropagation();\r\n toggleSchedulerSending(reportId!, checked);\r\n };\r\n\r\n const onOpenModalPreview = (event: React.SyntheticEvent) => {\r\n event.stopPropagation();\r\n openModalSchedulerPreview(reportId!);\r\n };\r\n\r\n const onOpenModalEdit = (event: React.SyntheticEvent) => {\r\n event.stopPropagation();\r\n openModalSchedulerEdit(reportId!);\r\n };\r\n\r\n const onDeleteScheduler = (event: React.SyntheticEvent) => {\r\n event.stopPropagation();\r\n deleteScheduler(reportId!);\r\n };\r\n\r\n const onOpenModalDuplicate = (event: React.SyntheticEvent) => {\r\n event.stopPropagation();\r\n openModalSchedulerDuplicate(reportId!);\r\n };\r\n\r\n return (\r\n \r\n {subject}\r\n\r\n {t('schedulerTable.reportTypes')[+emailReportId]}\r\n\r\n \r\n
\r\n {t('schedulerTable.start')}\r\n {t('schedulerTable.dateL')}:{' '}\r\n {isSameDay(new Date(startSendDate).getTime(), Date.now()) ? (\r\n {t('schedulerTable.today')}\r\n ) : (\r\n {format(new Date(startSendDate), 'dd/MM/yyyy')}\r\n )}\r\n
\r\n
\r\n {t('schedulerTable.end')}\r\n {t('schedulerTable.dateL')}:{' '}\r\n {endSendDate ? (\r\n {format(new Date(endSendDate), 'dd/MM/yyyy')}\r\n ) : (\r\n {t('schedulerTable.never')}\r\n )}\r\n
\r\n
\r\n\r\n \r\n {t('schedulerTable.repeatTypes')[repeat.frequency]}{' '}\r\n {repeat.frequency === Frequency.Weekly &&\r\n repeat.dayOfWeek &&\r\n ` ${t('schedulerTable.on')}${' '} ${repeat.dayOfWeek\r\n .map((w: string | number) => t('schedulerTable.weekdays')[w])\r\n .join(', ')}`}\r\n \r\n\r\n \r\n {lastSent ? format(new Date(lastSent), 'dd/MM/yyyy') : {t('schedulerTable.never')}}\r\n \r\n\r\n {notes && notes.length > 40 ? `${notes.substring(0, 40)}...` : notes}\r\n\r\n \r\n e.stopPropagation()}\r\n />\r\n {isSaving && toggleSchedulerId === reportId && }\r\n \r\n {/* buttons disabled */}\r\n \r\n {/* \r\n \r\n \r\n\r\n \r\n \r\n */}\r\n\r\n
e.stopPropagation()}>\r\n \r\n {/* three dots disabled */}\r\n {/* \r\n \r\n */}\r\n \r\n
\r\n
\r\n \r\n );\r\n});\r\n\r\nexport default SchedulerTableRow;\r\n","import { connect } from 'react-redux';\r\nimport { bindActionCreators, Dispatch } from 'redux';\r\n\r\nimport SchedulerTableRow from './SchedulerTableRow';\r\nimport { Store } from '../../store/storeTypes';\r\nimport { schedulerByIdSelector } from '../../selectors/entitiesSelectors';\r\nimport { toggleSchedulerSending, deleteScheduler } from '../../actions/schedulerApiActions';\r\nimport {\r\n openModalSchedulerEdit,\r\n openModalSchedulerPreview,\r\n openModalSchedulerDuplicate,\r\n} from '../../actions/schedulerUiActions';\r\n\r\ninterface OwnProps {\r\n schedulerId: string;\r\n}\r\n\r\nconst makeMapStateToProps = () => {\r\n return (state: Store, ownProps: OwnProps) => ({\r\n scheduler: schedulerByIdSelector(state, ownProps),\r\n isSaving: state.api.isSavingScheduler,\r\n toggleSchedulerId: state.ui.toggleSchedulerId,\r\n });\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch: Dispatch) =>\r\n bindActionCreators(\r\n {\r\n toggleSchedulerSending,\r\n deleteScheduler,\r\n openModalSchedulerEdit,\r\n openModalSchedulerPreview,\r\n openModalSchedulerDuplicate,\r\n },\r\n dispatch\r\n );\r\n\r\nexport type SchedulerTableRowProps = ReturnType> &\r\n ReturnType;\r\n\r\nexport default connect(makeMapStateToProps, mapDispatchToProps)(SchedulerTableRow);\r\n","import React from 'react';\r\nimport styled from 'styled-components/macro';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nimport { Paper, Table, TableHead, TableHeadRow, TableHeadCell, TableBody } from '../_common/Table';\r\nimport SchedulerTableRow from './SchedulerTableRowContainer';\r\nimport LinearProgress from '../_common/LinearProgress';\r\nimport { SchedulerTableProps } from './SchedulerTableContainer';\r\n\r\nconst SubjectHeadCell = styled(TableHeadCell)`\r\n width: 270px;\r\n min-width: 220px;\r\n @media (max-width: 1500px) {\r\n width: 190px;\r\n min-width: 190px;\r\n }\r\n @media (max-width: 500px) {\r\n width: 135px;\r\n min-width: 135px;\r\n }\r\n @media (max-width: 360px) {\r\n width: 115px;\r\n min-width: 115px;\r\n white-space: normal;\r\n }\r\n`;\r\nconst ReportHeadCell = styled(TableHeadCell)`\r\n width: 125px;\r\n min-width: 125px;\r\n @media (max-width: 1500px) {\r\n width: 110px;\r\n min-width: 110px;\r\n }\r\n @media (max-width: 500px) {\r\n width: 85px;\r\n min-width: 85px;\r\n }\r\n`;\r\nconst TimeHeadCell = styled(TableHeadCell)`\r\n width: 240px;\r\n min-width: 240px;\r\n @media (max-width: 1500px) {\r\n width: 200px;\r\n min-width: 200px;\r\n }\r\n @media (max-width: 550px) {\r\n min-width: 80px;\r\n width: auto;\r\n }\r\n @media (max-width: 800px) {\r\n flex-grow: 1;\r\n }\r\n`;\r\nconst RepeatHeadCell = styled(TableHeadCell)`\r\n width: 450px;\r\n min-width: 150px;\r\n @media (max-width: 1500px) {\r\n width: 130px;\r\n min-width: 130px;\r\n }\r\n @media (max-width: 800px) {\r\n display: none;\r\n }\r\n @media (max-width: 1150px) {\r\n flex-grow: 1;\r\n }\r\n`;\r\nconst LastSentHeadCell = styled(TableHeadCell)`\r\n width: 135px;\r\n max-width: 135px;\r\n @media (max-width: 1500px) {\r\n width: 120px;\r\n min-width: 120px;\r\n }\r\n @media (max-width: 1250px) {\r\n display: none;\r\n }\r\n`;\r\nconst NotesHeadCell = styled(TableHeadCell)`\r\n flex-grow: 1;\r\n @media (max-width: 1150px) {\r\n display: none;\r\n }\r\n`;\r\nconst SendingHeadCell = styled(TableHeadCell)`\r\n width: 130px;\r\n @media (max-width: 670px) {\r\n display: none;\r\n }\r\n`;\r\n\r\nconst ButtonsHeadCell = styled(TableHeadCell)`\r\n width: 121px;\r\n @media (max-width: 930px) {\r\n display: none;\r\n }\r\n`;\r\n\r\nconst SchedulerTable = React.memo((props: SchedulerTableProps) => {\r\n const { t } = useTranslation();\r\n const { isLoading, schedulerIds } = props;\r\n\r\n return (\r\n \r\n {!isLoading && (\r\n \r\n \r\n \r\n {t('schedulerTable.emailSubject')}\r\n {t('schedulerTable.report')}\r\n {t('schedulerTable.time')}\r\n {t('schedulerTable.repeat')}\r\n {t('schedulerTable.lastSent')}\r\n {/* {t('schedulerTable.notes')} */}\r\n \r\n {t('schedulerTable.sendingReport')}\r\n \r\n \r\n \r\n\r\n \r\n {schedulerIds.map((id: string) => (\r\n \r\n ))}\r\n \r\n
\r\n )}\r\n\r\n {isLoading && }\r\n
\r\n );\r\n});\r\n\r\nexport default SchedulerTable;\r\n","import { connect } from 'react-redux';\r\nimport { bindActionCreators, Dispatch } from 'redux';\r\n\r\nimport SchedulerTable from './SchedulerTable';\r\nimport { Store } from 'store/storeTypes';\r\n\r\nconst mapStateToProps = (state: Store) => {\r\n const { isLoadingSchedulers } = state.api;\r\n return {\r\n schedulerIds: state.entities.schedulers.allIds,\r\n isLoading: isLoadingSchedulers,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch: Dispatch) => bindActionCreators({}, dispatch);\r\n\r\nexport type SchedulerTableProps = ReturnType &\r\n ReturnType;\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(SchedulerTable);\r\n","import styled from 'styled-components/macro';\r\n\r\nconst ModalHeader = styled.div`\r\n background: #2ea1f8;\r\n height: 55px;\r\n min-height: 55px;\r\n font-family: Rubik, sans-serif;\r\n font-size: 22px;\r\n color: #ffffff;\r\n padding: 14px 26px 15px;\r\n @media (max-width: 599px) {\r\n padding-right: 11px;\r\n padding-left: 11px;\r\n }\r\n`;\r\n\r\nexport default ModalHeader;\r\n","import styled from 'styled-components/macro';\r\n\r\nconst ModalForm = styled.form`\r\n padding: 20px 28px 30px 24px;\r\n &::-webkit-scrollbar-track {\r\n background: #e3e0e0;\r\n border-radius: 10px;\r\n }\r\n &::-webkit-scrollbar {\r\n width: 7px;\r\n height: 7px;\r\n }\r\n &::-webkit-scrollbar-thumb {\r\n background: #c1baba;\r\n border-radius: 10px;\r\n }\r\n @media (max-width: 599px) {\r\n padding-right: 11px;\r\n padding-left: 11px;\r\n }\r\n`;\r\n\r\nexport default ModalForm;\r\n","import React from 'react';\r\nimport styled from 'styled-components/macro';\r\n\r\nimport DateFnsUtils from '@date-io/date-fns';\r\nimport createMuiTheme from '@material-ui/core/styles/createMuiTheme';\r\n\r\nimport { MuiThemeProvider } from '@material-ui/core';\r\nimport { TimePicker, MuiPickersUtilsProvider } from '@material-ui/pickers';\r\nimport appTheme from '../../theme';\r\n\r\nconst Picker = styled(TimePicker)`\r\n width: 100%;\r\n\r\n input,\r\n label {\r\n font-family: Rubik, sans-serif;\r\n }\r\n\r\n input {\r\n font-size: 14px;\r\n color: #354052;\r\n }\r\n`;\r\n\r\nconst theme = createMuiTheme({\r\n ...appTheme,\r\n overrides: {\r\n MuiInput: {\r\n underline: {\r\n height: '29px',\r\n '&:before': { borderBottomColor: 'rgb(197, 208, 222)' },\r\n '&:after': { borderBottomColor: 'rgb(32, 112, 173)' },\r\n },\r\n },\r\n MuiFormLabel: {\r\n root: {\r\n color: '#7f8fa4',\r\n '&$focused': { color: '#7f8fa4' },\r\n },\r\n },\r\n MuiToolbar: {\r\n root: {\r\n // width: '15px',\r\n color: 'red',\r\n background: 'red',\r\n },\r\n regular: {\r\n color: 'red',\r\n },\r\n },\r\n MuiTypography: {\r\n h2: {\r\n color: 'red',\r\n },\r\n },\r\n },\r\n});\r\n\r\ninterface TimePickerProps {\r\n id: string;\r\n label: string;\r\n error?: boolean;\r\n onChange?: (date: Date) => void;\r\n value?: string | number | Date | undefined;\r\n disabled: boolean;\r\n}\r\n\r\nconst FilterTimePicker = React.memo((props: TimePickerProps) => {\r\n const { id, label, onChange, value, disabled } = props;\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n});\r\n\r\nexport default FilterTimePicker;\r\n","import React from 'react';\r\nimport { StyledComponentWithAnyType } from 'store/storeTypes';\r\nimport styled from 'styled-components/macro';\r\nimport { Weekdays } from '../../models/Scheduler';\r\n\r\ninterface WeekdayContainerProps {\r\n day: string;\r\n}\r\nconst WeekdayContainer: StyledComponentWithAnyType = styled.label.attrs(\r\n (props: WeekdayContainerProps) => ({\r\n htmlFor: props.day,\r\n })\r\n)`\r\n display: block;\r\n position: relative;\r\n width: 25px;\r\n height: 25px;\r\n border-radius: 4px;\r\n border: 1px solid #7f8fa4;\r\n text-align: center;\r\n line-height: 25px;\r\n font-family: Rubik, sans-serif;\r\n font-weight: 500;\r\n font-size: 14px;\r\n color: #7f8fa4;\r\n cursor: pointer;\r\n &.checked {\r\n background: #2ea1f8;\r\n border-color: transparent;\r\n color: #fff;\r\n }\r\n &.error {\r\n border: 1px solid red;\r\n }\r\n &:not(:last-child) {\r\n margin-right: 10px;\r\n }\r\n input {\r\n position: absolute;\r\n opacity: 0;\r\n }\r\n @media (max-width: 599px) {\r\n width: 35px;\r\n height: 35px;\r\n line-height: 35px;\r\n }\r\n`;\r\n\r\ninterface WeekdayProps {\r\n day: string;\r\n index: number;\r\n isChecked: boolean;\r\n setChecked: (index: number, checked: boolean) => void;\r\n disabled?: boolean;\r\n error?: boolean;\r\n}\r\n\r\nconst Weekday = React.memo((props: WeekdayProps) => {\r\n const { day, index, disabled, error } = props;\r\n const letter = day.substr(0, 1);\r\n const { isChecked, setChecked } = props;\r\n\r\n return (\r\n \r\n {letter}\r\n setChecked(index, !isChecked)}\r\n />\r\n \r\n );\r\n});\r\n\r\nconst WeekdaysSelectorContainer = styled.div`\r\n display: flex;\r\n justify-content: space-between;\r\n margin-top: 16px;\r\n\r\n &.disabled {\r\n opacity: 0.25;\r\n\r\n label {\r\n cursor: auto;\r\n }\r\n }\r\n\r\n @media (max-width: 599px) {\r\n margin-top: 8px;\r\n }\r\n`;\r\n\r\ninterface WeekdaysSelectorProps {\r\n value: Weekdays[];\r\n onChange: (value: Weekdays[]) => void;\r\n error?: boolean;\r\n disabled?: boolean;\r\n}\r\n\r\nconst WeekdaysSelector = React.memo((props: WeekdaysSelectorProps) => {\r\n const { value, onChange, disabled, error } = props;\r\n const wDays = Object.keys(Weekdays).filter(k => typeof Weekdays[k] === 'number');\r\n\r\n const setChecked = (index: number, checked: boolean) => {\r\n if (disabled) return;\r\n\r\n const inArray = value.indexOf(index);\r\n\r\n if (checked && inArray < 0) {\r\n value.push(index);\r\n }\r\n if (!checked && inArray >= 0) {\r\n value.splice(inArray, 1);\r\n }\r\n\r\n onChange(value);\r\n };\r\n\r\n return (\r\n \r\n {wDays.map((d, i) => (\r\n -1}\r\n setChecked={setChecked}\r\n error={error}\r\n />\r\n ))}\r\n \r\n );\r\n});\r\n\r\nexport default WeekdaysSelector;\r\n","import React, { useState } from 'react';\r\nimport styled from 'styled-components/macro';\r\n\r\nimport MuiFormControl from '@material-ui/core/FormControl';\r\nimport MuiFormLabel from '@material-ui/core/FormLabel';\r\nimport MuiRadio from '@material-ui/core/Radio';\r\nimport MuiRadioGroup from '@material-ui/core/RadioGroup';\r\nimport MuiFormControlLabel from '@material-ui/core/FormControlLabel';\r\n\r\nconst FormControl = styled(MuiFormControl)`\r\n width: 100%;\r\n`;\r\n\r\nconst FormLabel = styled(MuiFormLabel).attrs({\r\n classes: { focused: 'focused' },\r\n})`\r\n font-family: Rubik, sans-serif;\r\n font-size: 12px;\r\n color: #7f8fa4;\r\n\r\n &.focused {\r\n color: #7f8fa4;\r\n }\r\n`;\r\n\r\nconst RadioGroup = styled(MuiRadioGroup)`\r\n flex-direction: row;\r\n justify-content: space-between;\r\n @media (max-width: 599px) {\r\n justify-content: left;\r\n }\r\n`;\r\n\r\nconst FormControlLabel = styled(MuiFormControlLabel)`\r\n & > span:last-child {\r\n margin-top: 3px;\r\n color: #7f8fa4;\r\n }\r\n @media (max-width: 599px) {\r\n &:not(:last-child) {\r\n margin-right: 40px;\r\n }\r\n }\r\n`;\r\n\r\nconst Radio = styled(MuiRadio).attrs({\r\n classes: { checked: 'checked' },\r\n})`\r\n &.checked ~ span {\r\n color: #354052;\r\n }\r\n`;\r\n\r\ninterface RadiosFieldProps {\r\n name: string;\r\n fieldLabel?: string;\r\n labels: string[];\r\n values?: string[];\r\n defaultValue?: string;\r\n onChange?: (v: string) => void;\r\n disabled?: boolean;\r\n}\r\n\r\nconst RadiosField = React.memo((props: RadiosFieldProps) => {\r\n const { defaultValue = '', labels, values, fieldLabel = 'Choose one', name, onChange } = props;\r\n const [value, setValue] = useState(defaultValue);\r\n return (\r\n \r\n {fieldLabel}\r\n {\r\n // const v = (e.target as HTMLInputElement).value;\r\n // setValue(v);\r\n // onChange && onChange(v);\r\n // }}\r\n >\r\n {labels.map((label, i) => (\r\n }\r\n label={label}\r\n />\r\n ))}\r\n \r\n \r\n );\r\n});\r\n\r\nexport default RadiosField;\r\n","import React, { useMemo, useCallback } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { TreeNode, TreeNodeProps } from 'react-dropdown-tree-select';\r\nimport { useForm, useField } from 'react-final-form-hooks';\r\nimport addMonths from 'date-fns/addMonths';\r\nimport { useHistory } from 'react-router-dom';\r\n\r\nimport styled from 'styled-components/macro';\r\nimport ModalForm from '../_common/ModalForm';\r\nimport TextField from '../_common/TextField';\r\nimport TreeSelect from '../_common/TreeSelect/TreeSelect';\r\nimport ButtonOk from '../_common/ButtonOk';\r\nimport ButtonCancel from '../_common/ButtonCancel';\r\nimport ButtonSpinner from '../_common/ButtonSpinner';\r\nimport Select from '../_common/Select';\r\nimport FilterDatePicker from '../_common/FilterDatePicker';\r\nimport FilterTimePicker from '../_common/FilterTimePicker';\r\nimport WeekdaysSelector from '../_common/WeekdaysSelector';\r\nimport FormRow from '../_common/FormRow';\r\nimport Switch from '../_common/Switch';\r\nimport RadiosField from '../_common/RadiosField';\r\nimport Grid from '../_common/Grid';\r\nimport PopupButtons from '../_common/PopupButtons';\r\n\r\nimport { Frequency, Weekdays } from 'models/Scheduler';\r\nimport { required, minArrayLength } from 'helpers/validationRules';\r\nimport { SchedulerFormProps } from './SchedulerFormContainer';\r\n\r\nimport { startOfDay } from 'helpers/date';\r\n\r\nconst FormSelect = styled(Select)`\r\n .MuiSelect-root {\r\n padding-bottom: 5px !important;\r\n }\r\n`;\r\n\r\nconst SchedulerForm = React.memo((props: SchedulerFormProps) => {\r\n const { t } = useTranslation();\r\n const {\r\n formData,\r\n scopeStrings,\r\n isSaving,\r\n reportTypes,\r\n closeModalScheduler,\r\n changeSchedulerFormScope,\r\n changeSchedulerFormValue,\r\n changeSchedulerFormStartDate,\r\n changeSchedulerFormStartTime,\r\n changeSchedulerFormRepeat,\r\n saveScheduler,\r\n } = props;\r\n const history = useHistory();\r\n\r\n const onSubmit = useCallback(() => {\r\n saveScheduler();\r\n }, [saveScheduler]);\r\n\r\n type ValidateProps = {\r\n emailSubject: string | number;\r\n report: string | number;\r\n repeat: string | number | boolean;\r\n };\r\n const validate = useCallback(\r\n (values: ValidateProps) => ({\r\n emailSubject: required(values.emailSubject),\r\n report: required(values.report),\r\n // Tree select could be validated only after it's data is processed by reducer.\r\n // So we use here value from state for validation\r\n scope: minArrayLength(1, scopeStrings),\r\n repeat:\r\n required(values.repeat) ||\r\n (formData.repeat === 0 ? minArrayLength(1, formData.weekdays) : undefined),\r\n }),\r\n [scopeStrings, formData]\r\n );\r\n\r\n const initialFormData = useMemo(() => ({ ...formData, scope: scopeStrings }), [\r\n formData,\r\n scopeStrings,\r\n ]);\r\n\r\n const { form, handleSubmit, errors } = useForm({\r\n onSubmit,\r\n //validate,\r\n initialValues: initialFormData,\r\n });\r\n\r\n const id = useField('id', form);\r\n const emailSubject = useField('emailSubject', form);\r\n const report = useField('report', form);\r\n const scope = useField('scope', form);\r\n const repeat = useField('repeat', form);\r\n const weekdays = useField('weekdays', form);\r\n const startDay = startOfDay(new Date());\r\n const repeatTypes = useMemo(\r\n () =>\r\n Object.keys(Frequency).filter(k => {\r\n return Number(Frequency[k]) === 2; // Show only weekly, TODO need resolved problem with Object key === number\r\n }),\r\n [Frequency] // eslint-disable-line react-hooks/exhaustive-deps\r\n );\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n {\r\n // changeSchedulerFormValue({\r\n // field: 'emailSubject',\r\n // value: (e.target as HTMLInputElement).value,\r\n // });\r\n // emailSubject.input.onChange(e);\r\n // },\r\n // [emailSubject, changeSchedulerFormValue]\r\n // )}\r\n //value={emailSubject.input.value}\r\n value=\"Default Report\"\r\n disabled={true}\r\n />\r\n \r\n\r\n \r\n {\r\n // changeSchedulerFormValue({\r\n // field: 'report',\r\n // value: (e.target as HTMLInputElement).value,\r\n // });\r\n // report.input.onChange(e);\r\n // report.input.onBlur();\r\n // },\r\n // [report, changeSchedulerFormValue]\r\n // )}\r\n //value={formData.report}\r\n />\r\n \r\n \r\n \r\n \r\n {\r\n // changeSchedulerFormScope(selectedNodes);\r\n // // scope.input.onChange(selectedNodes);\r\n // // scope.input.onBlur();\r\n // },\r\n // [changeSchedulerFormScope]\r\n // )}\r\n error={scope.meta.touched && scope.meta.error}\r\n />\r\n \r\n \r\n \r\n \r\n {\r\n // changeSchedulerFormStartDate(date);\r\n // },\r\n // [changeSchedulerFormStartDate]\r\n // )}\r\n onChange={() => {}}\r\n disabled={true}\r\n value={formData.startDate}\r\n />\r\n \r\n \r\n {\r\n // changeSchedulerFormStartTime(time);\r\n // },\r\n // [changeSchedulerFormStartTime]\r\n // )}\r\n onChange={() => {\r\n return -1;\r\n }}\r\n disabled={true}\r\n value={startDay}\r\n />\r\n \r\n \r\n \r\n \r\n {\r\n // const { value } = e.target as HTMLInputElement;\r\n // changeSchedulerFormRepeat(value === '' ? null : Number(value));\r\n // repeat.input.onChange(value);\r\n // repeat.input.onBlur();\r\n // },\r\n // [repeat, changeSchedulerFormRepeat]\r\n // )}\r\n //value={formData.repeat}\r\n value={0}\r\n disabled={true}\r\n />\r\n \r\n \r\n {\r\n // changeSchedulerFormValue({\r\n // field: 'weekdays',\r\n // value,\r\n // });\r\n // weekdays.input.onChange(value);\r\n // },\r\n // [weekdays, changeSchedulerFormValue]\r\n // )}\r\n //value={formData.weekdays}\r\n value={[Weekdays.Tuesday]}\r\n />\r\n \r\n \r\n \r\n \r\n {\r\n // changeSchedulerFormValue({\r\n // field: 'endDate',\r\n // value: v === '1' ? null : addMonths(new Date(), 3),\r\n // });\r\n // },\r\n // [changeSchedulerFormValue]\r\n // )}\r\n disabled={true}\r\n />\r\n {/*
\r\n {\r\n changeSchedulerFormValue({\r\n field: 'endDate',\r\n value: v,\r\n });\r\n },\r\n [changeSchedulerFormValue]\r\n )}\r\n value={\"formData.endDate\"}\r\n />\r\n
*/}\r\n
\r\n \r\n
\r\n \r\n \r\n {\r\n // changeSchedulerFormValue({\r\n // field: 'notes',\r\n // value: (e.target as HTMLInputElement).value,\r\n // });\r\n // },\r\n // [changeSchedulerFormValue]\r\n // )}\r\n disabled={true}\r\n value={formData.notes}\r\n multiline\r\n rowsMax=\"8\"\r\n />\r\n \r\n \r\n {\r\n changeSchedulerFormValue({\r\n field: 'sending',\r\n value: (e.target as HTMLInputElement).checked,\r\n });\r\n },\r\n [changeSchedulerFormValue]\r\n )}\r\n checked={formData.sending}\r\n disabled={false}\r\n justify=\"space-between\"\r\n />\r\n\r\n \r\n history.goBack()}>Cancel\r\n {/* */}\r\n \r\n {isSaving ? : t('userForm.save')}\r\n \r\n \r\n
\r\n );\r\n});\r\n\r\nexport default SchedulerForm;\r\n","import { connect } from 'react-redux';\r\nimport { bindActionCreators, Dispatch } from 'redux';\r\n\r\nimport SchedulerForm from './SchedulerForm';\r\nimport { Store, MODAL_STATUS } from 'store/storeTypes';\r\nimport {\r\n closeModalScheduler,\r\n changeSchedulerFormScope,\r\n changeSchedulerFormValue,\r\n changeSchedulerFormStartDate,\r\n changeSchedulerFormStartTime,\r\n changeSchedulerFormRepeat,\r\n} from 'actions/schedulerUiActions';\r\nimport { saveScheduler } from 'actions/schedulerApiActions';\r\nimport { schedulerScopeStringSelector } from 'selectors/uiSelectors';\r\n\r\nconst mapStateToProps = (state: Store) => ({\r\n scopeStrings: schedulerScopeStringSelector()(state),\r\n formData: state.ui.schedulerForm,\r\n isSaving: state.ui.schedulerModal.status === MODAL_STATUS.SAVING,\r\n reportTypes: state.appUser.reportTypes,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch: Dispatch) =>\r\n bindActionCreators(\r\n {\r\n closeModalScheduler,\r\n changeSchedulerFormScope,\r\n changeSchedulerFormValue,\r\n changeSchedulerFormStartDate,\r\n changeSchedulerFormStartTime,\r\n changeSchedulerFormRepeat,\r\n saveScheduler,\r\n },\r\n dispatch\r\n );\r\n\r\nexport type SchedulerFormProps = ReturnType &\r\n ReturnType;\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(SchedulerForm);\r\n","import React from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nimport Modal from '../_common/Modal';\r\nimport ModalHeader from '../_common/ModalHeader';\r\nimport SchedulerForm from './SchedulerFormContainer';\r\nimport { SchedulerModalProps } from './SchedulerModalContainer';\r\n\r\nconst SchedulerModal = React.memo((props: SchedulerModalProps) => {\r\n const { t } = useTranslation();\r\n const { closeModalScheduler, isOpen, modalSchedulerIsNew } = props;\r\n return (\r\n \r\n \r\n {modalSchedulerIsNew ? t('schedulerTable.newScheduler') : t('schedulerTable.editScheduler')}\r\n \r\n\r\n \r\n \r\n );\r\n});\r\n\r\nexport default SchedulerModal;\r\n","import { connect } from 'react-redux';\r\nimport { bindActionCreators, Dispatch } from 'redux';\r\n\r\nimport SchedulerModal from './SchedulerModal';\r\nimport { Store, MODAL_STATUS } from 'store/storeTypes';\r\nimport { closeModalScheduler } from 'actions/schedulerUiActions';\r\n\r\nconst mapStateToProps = (state: Store) => ({\r\n isOpen: state.ui.schedulerModal.status !== MODAL_STATUS.CLOSED,\r\n modalSchedulerIsNew: !state.ui.schedulerForm.reportId,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch: Dispatch) =>\r\n bindActionCreators(\r\n {\r\n closeModalScheduler,\r\n },\r\n dispatch\r\n );\r\n\r\nexport type SchedulerModalProps = ReturnType &\r\n ReturnType;\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(SchedulerModal);\r\n","import React from 'react';\r\nimport styled from 'styled-components/macro';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { format, isSameDay } from 'date-fns';\r\n\r\nimport MuiIconButton from '@material-ui/core/IconButton';\r\nimport DeleteIcon from '@material-ui/icons/Delete';\r\nimport EditIcon from '@material-ui/icons/Edit';\r\nimport IconMoreVert from '@material-ui/icons/MoreVert';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport Grid from '@material-ui/core/Grid';\r\nimport { Frequency } from 'models/Scheduler';\r\n\r\nimport Modal from '../_common/Modal';\r\nimport ModalForm from '../_common/ModalForm';\r\nimport ModalHeaderGeneric from '../_common/ModalHeader';\r\nimport Switch from '../_common/Switch';\r\nimport { SchedulerPreviewProps } from './SchedulerPreviewContainer';\r\nimport CircularSpinner from '../_common/CircularSpinner';\r\nimport { StyledComponentWithAnyType } from 'store/storeTypes';\r\n\r\nconst ModalHeader = styled(ModalHeaderGeneric)`\r\n padding: 0;\r\n display: flex;\r\n justify-content: flex-end;\r\n align-items: center;\r\n\r\n button {\r\n margin-right: 8px;\r\n }\r\n`;\r\nconst IconButton = styled(MuiIconButton)`\r\n padding: 8px;\r\n color: #fff;\r\n`;\r\nconst PreviewBody = styled(ModalForm)`\r\n padding: 50px 24px;\r\n @media (max-width: 599px) {\r\n padding: 50px 11px;\r\n }\r\n`;\r\nconst LastSent: StyledComponentWithAnyType = styled(Typography).attrs({\r\n variant: 'subtitle1',\r\n})`\r\n font-size: 14px;\r\n color: #7f8fa4;\r\n`;\r\nconst Name: StyledComponentWithAnyType = styled(Typography).attrs({\r\n variant: 'h2',\r\n})`\r\n font-weight: 500;\r\n font-size: 22px;\r\n color: #354052;\r\n margin: 30px 0 13px;\r\n`;\r\nconst ReportType: StyledComponentWithAnyType = styled(Typography).attrs(\r\n {\r\n variant: 'subtitle1',\r\n }\r\n)`\r\n font-size: 16px;\r\n color: #354052;\r\n`;\r\nconst Repeat = styled(ReportType)`\r\n max-width: 250px;\r\n`;\r\nconst Dates = styled(ReportType)`\r\n span {\r\n font-weight: 500;\r\n }\r\n @media (max-width: 599px) {\r\n text-align: right;\r\n }\r\n`;\r\nconst Hr = styled.hr`\r\n height: 1px;\r\n border: 0;\r\n background-color: #c5d0de;\r\n margin: 30px 0;\r\n`;\r\nconst NotesHeader: StyledComponentWithAnyType = styled(\r\n Typography\r\n).attrs({\r\n variant: 'h3',\r\n})`\r\n color: #354052;\r\n font-weight: 500;\r\n font-size: 16px;\r\n margin: 40px 0 10px;\r\n`;\r\nconst NotesBody: StyledComponentWithAnyType = styled(Typography).attrs({\r\n variant: 'body1',\r\n})`\r\n color: #354052;\r\n font-size: 14px;\r\n margin: 0;\r\n`;\r\n\r\nconst PreviewCircularSpinner = styled(CircularSpinner)`\r\n bottom: 10%;\r\n right: 15%;\r\n @media (max-width: 599px) {\r\n bottom: 35%;\r\n right: 25%;\r\n }\r\n`;\r\n\r\nconst SchedulerPreview = React.memo((props: SchedulerPreviewProps) => {\r\n const { t } = useTranslation();\r\n const { scheduler, isSaving } = props;\r\n const {\r\n reportId,\r\n notes,\r\n subject,\r\n emailReportId,\r\n startSendDate,\r\n endSendDate,\r\n repeat,\r\n lastSent,\r\n isActive,\r\n } = scheduler;\r\n const {\r\n closeModalSchedulerPreview,\r\n changeSchedulerFormValue,\r\n openModalSchedulerEdit,\r\n isOpen,\r\n } = props;\r\n const { deleteScheduler, toggleSchedulerSending } = props;\r\n return (\r\n \r\n \r\n {\r\n e.stopPropagation();\r\n openModalSchedulerEdit(reportId!);\r\n }}>\r\n \r\n \r\n {\r\n e.stopPropagation();\r\n deleteScheduler(reportId!);\r\n }}>\r\n \r\n \r\n {\r\n e.stopPropagation();\r\n }}>\r\n \r\n \r\n \r\n \r\n \r\n {t('schedulerTable.lastSent')}:{' '}\r\n {lastSent ? format(new Date(lastSent), 'dd/MM/yyyy') : {t('schedulerTable.never')}}\r\n \r\n {subject}\r\n {t('schedulerTable.reportTypes')[emailReportId]}\r\n
\r\n \r\n \r\n \r\n {t('schedulerTable.repeatTypes')[repeat.frequency]}{' '}\r\n {repeat.frequency === Frequency.Weekly &&\r\n repeat.dayOfWeek &&\r\n ` ${t('schedulerTable.on')}${' '} ${repeat.dayOfWeek\r\n .map(w => t('schedulerTable.weekdays')[w])\r\n .join(', ')}`}\r\n \r\n \r\n \r\n \r\n {t('schedulerTable.startDate')}:\r\n {isSameDay(new Date(startSendDate).getTime(), Date.now()) ? (\r\n {t('schedulerTable.today')}\r\n ) : (\r\n {format(new Date(startSendDate), 'dd/MM/yyyy')}\r\n )}\r\n \r\n \r\n {t('schedulerTable.endDate')}:{' '}\r\n {endSendDate ? (\r\n {format(new Date(endSendDate), 'dd/MM/yyyy')}\r\n ) : (\r\n {t('schedulerTable.never')}\r\n )}\r\n \r\n \r\n \r\n {!!notes && (\r\n
\r\n {t('schedulerTable.notes')}\r\n {notes}\r\n
\r\n )}\r\n
\r\n {\r\n changeSchedulerFormValue({\r\n field: 'sending',\r\n value: (e.target as HTMLInputElement).checked,\r\n });\r\n e.stopPropagation();\r\n toggleSchedulerSending(reportId!, (e.target as HTMLInputElement).checked);\r\n }}\r\n id=\"sendings\"\r\n label={t('schedulerTable.sendingReport')}\r\n labelStyle={{ fontWeight: 500 }}\r\n disabled={false}\r\n justify=\"space-between\"\r\n />\r\n {isSaving && }\r\n
\r\n \r\n );\r\n});\r\n\r\nexport default SchedulerPreview;\r\n","import { connect } from 'react-redux';\r\nimport { bindActionCreators, Dispatch } from 'redux';\r\n\r\nimport SchedulerPreview from './SchedulerPreview';\r\nimport { Store, MODAL_STATUS } from 'store/storeTypes';\r\nimport {\r\n closeModalSchedulerPreview,\r\n changeSchedulerFormValue,\r\n openModalSchedulerEdit,\r\n} from 'actions/schedulerUiActions';\r\n\r\nimport { toggleSchedulerSending, deleteScheduler } from 'actions/schedulerApiActions';\r\n\r\nconst mapStateToProps = (state: Store) => ({\r\n isOpen: state.ui.schedulerModal.previewStatus !== MODAL_STATUS.CLOSED,\r\n scheduler: state.ui.schedulerPreview,\r\n isSaving: state.api.isSavingScheduler,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch: Dispatch) =>\r\n bindActionCreators(\r\n {\r\n closeModalSchedulerPreview,\r\n changeSchedulerFormValue,\r\n openModalSchedulerEdit,\r\n toggleSchedulerSending,\r\n deleteScheduler,\r\n },\r\n dispatch\r\n );\r\n\r\nexport type SchedulerPreviewProps = ReturnType &\r\n ReturnType;\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(SchedulerPreview);\r\n","import React, { useEffect } from 'react';\r\nimport styled from 'styled-components/macro';\r\nimport { useTranslation } from 'react-i18next';\r\nimport AddIcon from '@material-ui/icons/Add';\r\nimport { Typography } from '@material-ui/core';\r\n\r\nimport PageContainer from '../_common/PageContainer';\r\nimport { PageHeaderUIContainer, PageHeaderUISpacer } from '../_common/PageHeaderUi';\r\nimport ButtonHeader from '../_common/ButtonHeader';\r\nimport Header1 from '../_common/Header1';\r\nimport SchedulerTable from './SchedulerTableContainer';\r\nimport SchedulerModal from '../SchedulerModal/SchedulerModalContainer';\r\nimport SchedulerPreview from '../SchedulerPreview/SchedulerPreviewContainer';\r\nimport { SchedulerProps } from './SchedulerContainer';\r\nimport { StyledComponentWithAnyType } from 'store/storeTypes';\r\n\r\nconst SchedulerButtonHeader = styled(ButtonHeader)`\r\n width: 200px;\r\n span {\r\n text-transform: capitalize;\r\n font-size: 12px;\r\n }\r\n @media (max-width: 440px) {\r\n padding: 0 5px;\r\n svg {\r\n display: none;\r\n }\r\n }\r\n`;\r\n\r\nconst Icon = styled.img.attrs({\r\n src: '/img/email-scheduler-icon.svg',\r\n})`\r\n margin: 0 16px 3px 0;\r\n @media (max-width: 360px) {\r\n display: none;\r\n }\r\n`;\r\n\r\nconst Scheduler = React.memo((props: SchedulerProps) => {\r\n const { t } = useTranslation();\r\n const {\r\n isLoadingTypes,\r\n getAppUserFull,\r\n openModalSchedulerCreate,\r\n getScopeData,\r\n getSchedulers,\r\n getSchedulersReportTypes,\r\n } = props;\r\n\r\n useEffect(() => {\r\n getAppUserFull();\r\n // getSchedulersReportTypes();\r\n getScopeData();\r\n getSchedulers();\r\n }, [getAppUserFull, getScopeData, getSchedulers, getSchedulersReportTypes]);\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n {t('scheduler.header')}\r\n \r\n\r\n \r\n {/* create new button disabled */}\r\n {/* {!isLoadingTypes && (\r\n \r\n \r\n \r\n {t('scheduler.createNew')}\r\n \r\n \r\n )} */}\r\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 Scheduler;\r\n","import { connect } from 'react-redux';\r\nimport { bindActionCreators, Dispatch } from 'redux';\r\n\r\nimport Scheduler from './Scheduler';\r\nimport { Store } from 'store/storeTypes';\r\nimport { openModalSchedulerCreate } from 'actions/schedulerUiActions';\r\nimport { getAppUserFull } from 'actions/appUserActions';\r\nimport { getScopeData } from 'actions/scopeApiActions';\r\nimport { getSchedulers, getSchedulersReportTypes } from 'actions/schedulerApiActions';\r\n\r\nconst mapStateToProps = (state: Store) => ({\r\n appUser: state.appUser,\r\n isLoadingTypes: state.api.isLoadingSchedulerTypes,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch: Dispatch) =>\r\n bindActionCreators(\r\n {\r\n openModalSchedulerCreate,\r\n getAppUserFull,\r\n getScopeData,\r\n getSchedulers,\r\n getSchedulersReportTypes,\r\n },\r\n dispatch\r\n );\r\n\r\nexport type SchedulerProps = ReturnType &\r\n ReturnType;\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(Scheduler);\r\n","import React, { useEffect, Fragment, memo } from 'react';\r\nimport { Route } from 'react-router-dom';\r\nimport { useTranslation } from 'react-i18next';\r\nimport styled from 'styled-components/macro';\r\nimport { Helmet } from 'react-helmet';\r\nimport {\r\n userManagementPath,\r\n goalsPath,\r\n settingsPath,\r\n apiManagementPath,\r\n schedulerPath,\r\n} from 'contracts/constants';\r\nimport AccountManagement from '../AccountManagement/AccountManagementContainer';\r\nimport ApiManagement from '../ApiManagement/ApiManagementContainer';\r\nimport Goals from '../Goals/GoalsContainer';\r\nimport PbiReportsPage from '../PbiReportsPage/PbiReportsPageContainer';\r\nimport ShellHeader from './ShellHeaderContainer';\r\nimport ProtectedRoute from '../ProtectedRoute/ProtectedRoute';\r\nimport { PermissionAuth0 } from 'models/Permissions';\r\nimport CookiesPrompt from '../_common/CookiesPrompt';\r\nimport { ShellProps } from './ShellContainer';\r\nimport { userRolesToPermissions } from 'helpers/conversions';\r\nimport { getAppUserAgreementVersionEnv } from 'helpers/envGetters';\r\nimport { TermsModal } from 'components/TermsModal/TermsModal';\r\nimport Settings from 'components/Settings/SettingsContainer';\r\nimport config from 'config/config';\r\nimport { KonnectAnalytics } from '../../KonnectAnalytics/konnectAnalytics';\r\nimport LinearProgress from 'components/_common/LinearProgress';\r\nimport Scheduler from '../Scheduler/SchedulerContainer';\r\nimport _ from 'lodash';\r\nimport { useDebouncedCallback } from 'use-debounce/lib';\r\n\r\nconst AGREEMENT_VERSION = getAppUserAgreementVersionEnv();\r\n\r\nconst ShellContainer = styled.div`\r\n height: 100vh;\r\n max-height: 100vh;\r\n display: flex;\r\n flex-direction: column;\r\n`;\r\n\r\nconst ContentContainer = styled.div`\r\n flex-grow: 1;\r\n display: flex;\r\n max-height: 100%;\r\n width: 100%;\r\n overflow: auto;\r\n @media (max-width: 380px) {\r\n padding: 0;\r\n }\r\n scrollbar-width: thin;\r\n scrollbar-color: #c1baba #e3e0e0;\r\n\r\n &::-webkit-scrollbar-track {\r\n background: #e3e0e0;\r\n border-radius: 10px;\r\n }\r\n &::-webkit-scrollbar {\r\n width: 7px;\r\n height: 7px;\r\n }\r\n &::-webkit-scrollbar-thumb {\r\n background: #c1baba;\r\n border-radius: 10px;\r\n }\r\n`;\r\n\r\nconst Shell = memo((props: ShellProps) => {\r\n const {\r\n authService,\r\n userAgreementVersion,\r\n userAgreement,\r\n selectedSystemGroup,\r\n importedTennantId,\r\n tennantName,\r\n accountType,\r\n office,\r\n userSystemGroup,\r\n setAppUserParams,\r\n updateLogoutTimer,\r\n setAppUserAgreementVersion,\r\n setAppUserAgreement,\r\n setUserEmail,\r\n setUserLastName,\r\n setUserFirstName,\r\n getPortalApiUrl,\r\n getAppUserSettings,\r\n setScreenSize,\r\n } = props;\r\n const { t, i18n } = useTranslation();\r\n const updateDimensions = () => {\r\n const width = window.innerWidth;\r\n const height = window.innerHeight;\r\n setScreenSize({ width, height });\r\n };\r\n\r\n const [debouncedUpdateDimensions] = useDebouncedCallback(e => {\r\n //@ts-ignore\r\n const { innerHeight, innerWidth } = e.target;\r\n setScreenSize({ width: innerWidth, height: innerHeight });\r\n }, 400);\r\n // Get user settings\r\n useEffect(() => {\r\n updateDimensions();\r\n getAppUserSettings();\r\n }, [getAppUserSettings]);\r\n\r\n // analytics data sending\r\n useEffect(() => {\r\n if (authService.isAuthenticated()) {\r\n const { idTokenPayload } = authService;\r\n const isSuperUser = idTokenPayload[`${config.AUTH0_CLAIMS_NAMESPACE}is_super_user`];\r\n //*in case of read only role we have email in nickName field in case of other roles we have it in name field\r\n const email = isSuperUser ? idTokenPayload.nickname : idTokenPayload.name;\r\n if (\r\n idTokenPayload &&\r\n idTokenPayload.sub &&\r\n importedTennantId &&\r\n tennantName &&\r\n userSystemGroup &&\r\n accountType &&\r\n office\r\n ) {\r\n KonnectAnalytics.login({\r\n email: email,\r\n importedTennantId,\r\n tennantName,\r\n accountType,\r\n office,\r\n userSystemGroup,\r\n isSuperUser: isSuperUser,\r\n config: config,\r\n });\r\n }\r\n }\r\n }, [tennantName, importedTennantId, userSystemGroup, accountType, userSystemGroup]);\r\n useEffect(() => {\r\n if (authService.isAuthenticated()) {\r\n const { idTokenPayload } = authService;\r\n // Get current user data: ID from token & user_picture url from API\r\n if (idTokenPayload && idTokenPayload.sub) {\r\n setAppUserParams({\r\n id: idTokenPayload.sub,\r\n reportTypes: [],\r\n profilePictureUrl:\r\n idTokenPayload[`${config.AUTH0_CLAIMS_NAMESPACE}picture`] || idTokenPayload.picture,\r\n permissions: userRolesToPermissions(\r\n idTokenPayload[`${config.AUTH0_CLAIMS_NAMESPACE}roles`] || []\r\n ),\r\n userAgreementVersion:\r\n // JSON.parse(localStorage.getItem(`${idTokenPayload.sub}agreement_version`)!) ||\r\n idTokenPayload[`${config.AUTH0_CLAIMS_NAMESPACE}agreement_version`],\r\n userAgreement:\r\n // JSON.parse(localStorage.getItem(`${idTokenPayload.sub}agreement_approved`)!) ||\r\n idTokenPayload[`${config.AUTH0_CLAIMS_NAMESPACE}agreement_approved`],\r\n });\r\n setUserEmail({ email: idTokenPayload.name });\r\n setUserFirstName({ firstName: idTokenPayload.given_name });\r\n setUserLastName({ lastName: idTokenPayload.family_name });\r\n getPortalApiUrl();\r\n }\r\n\r\n // Set current locale according to token locale\r\n const localePropName = `${config.AUTH0_CLAIMS_NAMESPACE}locale`;\r\n const locale = idTokenPayload && idTokenPayload[localePropName];\r\n if (locale && i18n.language !== locale) i18n.changeLanguage(locale);\r\n }\r\n }, [authService, setAppUserParams, i18n, getPortalApiUrl]);\r\n\r\n useEffect(() => {\r\n document.addEventListener('click', () => updateLogoutTimer());\r\n\r\n window.addEventListener('resize', e => {\r\n debouncedUpdateDimensions(e);\r\n });\r\n document.addEventListener('visibilitychange', function() {\r\n if (document.hidden) {\r\n KonnectAnalytics.finishSession('EndSession');\r\n } else {\r\n KonnectAnalytics.startSession('StartSession', { reason: 'user is back on tab' });\r\n }\r\n });\r\n return () => window.removeEventListener('resize', updateDimensions);\r\n }, [updateLogoutTimer]);\r\n\r\n const onSetAppUserAgreementVersion = () => {\r\n return setAppUserAgreementVersion(AGREEMENT_VERSION);\r\n };\r\n\r\n const onSetAppUserAgreement = (isApproved: boolean) => {\r\n setAppUserAgreement(isApproved, AGREEMENT_VERSION);\r\n };\r\n\r\n const { idTokenPayload } = authService;\r\n const isSuperUser = idTokenPayload[`${config.AUTH0_CLAIMS_NAMESPACE}is_super_user`];\r\n\r\n return selectedSystemGroup !== '' ? (\r\n \r\n \r\n\r\n \r\n\r\n \r\n {!userAgreement && !isSuperUser && }\r\n \r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n\r\n {!(userAgreement && userAgreementVersion === String(AGREEMENT_VERSION)) && !isSuperUser && (\r\n \r\n )}\r\n \r\n \r\n ) : (\r\n \r\n );\r\n});\r\n\r\nexport default Shell;\r\n","import { connect } from 'react-redux';\r\nimport { bindActionCreators, Dispatch } from 'redux';\r\n\r\nimport { AuthSupportProps } from 'contracts/auth';\r\nimport Shell from './Shell';\r\nimport {\r\n setAppUserParams,\r\n setAppUserAgreementVersion,\r\n setAppUserAgreement,\r\n getPortalApiUrl,\r\n} from 'actions/appUserActions';\r\nimport { getAppUserSettings } from 'actions/userSettingsActions';\r\nimport { setUserEmail, setUserLastName, setUserFirstName } from 'actions/appUserActions';\r\nimport { updateLogoutTimer } from 'actions/uiActions';\r\nimport { Store } from 'store/storeTypes';\r\nimport { RouteComponentProps } from 'react-router-dom';\r\nimport { systemGroupSelector } from 'reducers/ui/systemGroupUiReducer';\r\nimport {\r\n accountTypeSelector,\r\n importedTenantIdSelector,\r\n officeSelector,\r\n tenantNameSelector,\r\n userSystemGroupSelector,\r\n} from 'reducers/userSettingsReducer';\r\nimport { setScreenSize } from 'actions/userUiActions';\r\nimport {\r\n apiUrlSelector,\r\n isReadOnlyRoleSelector,\r\n userAgreementSelector,\r\n userAgreementVersionSelector,\r\n} from 'reducers/appUserReducer';\r\n\r\nconst mapStateToProps = (state: Store) => ({\r\n selectedSystemGroup: systemGroupSelector(state),\r\n userAgreementVersion: userAgreementVersionSelector(state),\r\n userAgreement: userAgreementSelector(state),\r\n apiUrl: apiUrlSelector(state),\r\n tennantName: tenantNameSelector(state),\r\n importedTennantId: importedTenantIdSelector(state),\r\n office: officeSelector(state),\r\n accountType: accountTypeSelector(state),\r\n userSystemGroup: userSystemGroupSelector(state),\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch: Dispatch) =>\r\n bindActionCreators(\r\n {\r\n setAppUserParams,\r\n updateLogoutTimer,\r\n setAppUserAgreement,\r\n setAppUserAgreementVersion,\r\n getPortalApiUrl,\r\n getAppUserSettings,\r\n setUserEmail,\r\n setUserFirstName,\r\n setUserLastName,\r\n setScreenSize,\r\n },\r\n dispatch\r\n );\r\n\r\nexport type ShellProps = RouteComponentProps &\r\n AuthSupportProps &\r\n ReturnType &\r\n ReturnType;\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(Shell);\r\n","var _path, _path2, _path3, _path4, _path5, _path6, _path7, _path8, _path9, _path10, _path11, _path12, _path13;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgLetterUnsubscribe(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 196,\n height: 72,\n viewBox: \"0 0 196 72\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M107.093 30.4497H103.928V32.7778H107.093V30.4497Z\",\n fill: \"#93C4E7\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M100.733 30.4497H97.5674V32.7778H100.733V30.4497Z\",\n fill: \"#93C4E7\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M94.3882 30.4497H91.2227V32.7778H94.3882V30.4497Z\",\n fill: \"#93C4E7\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M116.178 22.2301V7.36745H97.2268L97.2836 7.28228L88.0565 0L78.7301 7.36745H59.9353V22.2159L52 28.4761V71.2187H124.113V28.4761L116.178 22.2301ZM121.004 28.9872L116.192 32.7206V25.197L121.004 28.9872ZM88.0565 2.96685L93.6353 7.36745H82.4777L88.0565 2.96685ZM113.864 9.69551V34.5092L88.0565 54.4964L62.2633 34.5518V9.70971H113.864V9.69551ZM59.9353 32.749L55.0946 29.0014L59.9353 25.1828V32.749ZM54.3281 68.9048V31.3578L77.2679 49.1022L61.9368 61.4664L63.399 63.2834L79.1559 50.5643L88.0565 57.4491L96.9429 50.5785L112.7 63.2976L114.162 61.4806L98.8309 49.1022L121.785 31.3294V68.919H54.3281V68.9048Z\",\n fill: \"#93C4E7\"\n })), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M107.092 15.0615H69.0195V17.3896H107.092V15.0615Z\",\n fill: \"#93C4E7\"\n })), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M107.092 22.7554H69.0195V25.0834H107.092V22.7554Z\",\n fill: \"#93C4E7\"\n })), _path7 || (_path7 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M88.0557 30.4497H69.0195V32.7778H88.0557V30.4497Z\",\n fill: \"#93C4E7\"\n })), _path8 || (_path8 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M188.358 31.2441L190.209 35.3817L195.21 36.9127L190.209 38.4438L188.358 42.5813L186.507 38.4438L181.506 36.9127L186.507 35.3817L188.358 31.2441Z\",\n fill: \"#C3DFF1\"\n })), _path9 || (_path9 = /*#__PURE__*/React.createElement(\"path\", {\n opacity: 0.1,\n d: \"M143.972 3.3374L149.779 19.0305L165.472 24.8374L149.779 30.6444L143.972 46.3374L138.165 30.6444L122.472 24.8374L138.165 19.0305L143.972 3.3374Z\",\n fill: \"#2EA1F8\"\n })), _path10 || (_path10 = /*#__PURE__*/React.createElement(\"path\", {\n opacity: 0.1,\n d: \"M18 14.2095L13.1384 27.3478L0 32.2095L13.1384 37.0711L18 50.2095L22.8616 37.0711L36 32.2095L22.8616 27.3478L18 14.2095Z\",\n fill: \"#2EA1F8\"\n })), _path11 || (_path11 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M162.935 45.1978L166.176 53.9567L174.935 57.1978L166.176 60.4388L162.935 69.1978L159.693 60.4388L150.935 57.1978L159.693 53.9567L162.935 45.1978Z\",\n fill: \"#C3DFF1\"\n })), _path12 || (_path12 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M38.6353 2L40.486 6.13757L45.4874 7.6686L40.486 9.19964L38.6353 13.3372L36.7846 9.19964L31.7832 7.6686L36.7846 6.13757L38.6353 2Z\",\n fill: \"#C3DFF1\"\n })), _path13 || (_path13 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M95.8141 15.1741C96.8541 13.9741 102.214 19.3341 101.014 20.3741L94.294 27.0653L100.934 33.7341C102.134 34.7741 96.7741 40.1341 95.7341 38.9341L89.0684 32.2684L82.3741 38.9341C81.3341 40.1341 75.9741 34.7741 77.1741 33.7341L83.8684 27.0684L77.1741 20.3741C76.0541 19.3341 81.4141 13.9741 82.4541 15.1741L89.1053 21.8541L95.8141 15.1741Z\",\n fill: \"#FFAB2B\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgLetterUnsubscribe);\nexport default __webpack_public_path__ + \"static/media/Letter-unsubscribe.03f821f6.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgMailCover(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 30,\n height: 30,\n viewBox: \"0 0 30 30\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M16.4 17.5999C15.989 17.8813 15.4977 18.0217 15 17.9999C14.5023 18.0217 14.011 17.8813 13.6 17.5999L3 11.8999V21.9999C3 22.7956 3.31607 23.5586 3.87868 24.1212C4.44129 24.6838 5.20435 24.9999 6 24.9999H24C24.7956 24.9999 25.5587 24.6838 26.1213 24.1212C26.6839 23.5586 27 22.7956 27 21.9999V11.8999L16.4 17.5999Z\",\n fill: \"#7F8FA4\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24 5H6.00001C5.20437 5 4.4413 5.31607 3.87869 5.87868C3.31609 6.44129 3.00001 7.20435 3.00001 8V9C2.99906 9.18032 3.04456 9.35785 3.13213 9.51549C3.21971 9.67312 3.3464 9.80555 3.50001 9.9L14.5 15.9C14.6536 15.9808 14.8272 16.0156 15 16C15.1728 16.0156 15.3465 15.9808 15.5 15.9L26.5 9.9C26.6536 9.80555 26.7803 9.67312 26.8679 9.51549C26.9555 9.35785 27.001 9.18032 27 9V8C27 7.20435 26.6839 6.44129 26.1213 5.87868C25.5587 5.31607 24.7957 5 24 5Z\",\n fill: \"#7F8FA4\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgMailCover);\nexport default __webpack_public_path__ + \"static/media/mail-cover.e6574f56.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgAppIconSuperUserPage(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 105,\n height: 105,\n viewBox: \"0 0 675 675\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M438.575 0.666748L304.862 30.9523V544.684H212.378V52.2643L102.065 76.9414L0.666687 414.569L236.892 674.8L573.401 598.525L674.8 260.898L438.575 0.666748ZM503.202 543.563H410.718L309.32 366.336L410.718 189.11H503.202L400.69 366.336L503.202 543.563Z\",\n fill: \"#2EA1F8\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgAppIconSuperUserPage);\nexport default __webpack_public_path__ + \"static/media/appIconSuperUserPage.d3a8c21c.svg\";\nexport { ForwardRef as ReactComponent };","import * as React from 'react';\r\nimport styled from 'styled-components';\r\nimport { ReactComponent as NewLogo } from '../../assets/icons/NewLogo.svg';\r\nimport { ReactComponent as LetterUnsubscribe } from '../../assets/icons/Letter-unsubscribe.svg';\r\nimport { ReactComponent as MailCover } from '../../assets/icons/mail-cover.svg';\r\nimport { Spinner } from 'components/Overview/Styles';\r\nimport env from '../../config/config';\r\nconst UnsubscribeBackground = styled.div`\r\n width: 100%;\r\n height: 100vh;\r\n background-color: #354052;\r\n margin: 0;\r\n padding: 0;\r\n`;\r\nconst UnsubscribeGridWrapper = styled.div`\r\n width: 100%;\r\n height: 100%;\r\n display: grid;\r\n grid-template-rows: 70px 1fr 100px 70px;\r\n grid-template-areas:\r\n 'logo '\r\n 'mainContent'\r\n 'notificationZone'\r\n 'footer';\r\n`;\r\nconst Logo = styled.div`\r\n grid-area: logo;\r\n padding: 2%;\r\n`;\r\nconst Footer = styled.div`\r\n grid-area: footer;\r\n`;\r\n\r\nconst UnsubscribeGridPlaceHolder = styled.div`\r\n grid-area: mainContent;\r\n width: 60%;\r\n margin: 0 auto;\r\n max-width: 780px;\r\n min-width: 320px;\r\n background-color: white;\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n justify-content: center;\r\n`;\r\nconst UnsubscriberRow = styled.div`\r\n font-family: Rubik;\r\n font-style: normal;\r\n font-weight: 500;\r\n font-size: 24px;\r\n line-height: 36px;\r\n color: #354052;\r\n`;\r\nconst WeAreSorryWrapper = styled.div`\r\n font-family: Rubik;\r\n font-style: normal;\r\n font-weight: normal;\r\n font-size: 16px;\r\n line-height: 24px;\r\n color: #7f8fa4;\r\n`;\r\n\r\nconst EmailInputField = styled.div`\r\n background-color: #eff3f6;\r\n width: 80%;\r\n max-width: 480px;\r\n height: 50px;\r\n border-radius: 4px;\r\n display: flex;\r\n align-items: center;\r\n justify-content: start;\r\n margin-top: 5%;\r\n padding: 0 10px;\r\n\r\n font-family: Rubik;\r\n font-style: normal;\r\n font-weight: normal;\r\n font-size: 14px;\r\n line-height: 20px;\r\n color: #354052;\r\n`;\r\nconst EmailStringWrapper = styled.div`\r\n padding-left: 10px;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n overflow: hidden;\r\n`;\r\nconst AreYouSureWrapper = styled.div`\r\n width: 85%;\r\n max-width: 500px;\r\n padding: 10px 5px;\r\n\r\n font-family: Rubik;\r\n font-style: normal;\r\n font-weight: normal;\r\n font-size: 16px;\r\n line-height: 24px;\r\n text-align: center;\r\n color: #354052;\r\n`;\r\nconst Button = styled.button<{ isLoading: boolean }>`\r\n width: 30%;\r\n min-width: 140px;\r\n height: 48px;\r\n border-radius: 4px;\r\n padding: 12px 29px;\r\n cursor: pointer;\r\n border-width: 0px;\r\n margin-top: 20px;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n background-color: ${props => (props.isLoading ? '#4b5257' : '#2ea1f8')};\r\n\r\n background-color: #2ea1f8;\r\n font-family: Rubik;\r\n font-style: normal;\r\n font-weight: 500;\r\n font-size: 16px;\r\n line-height: 24px;\r\n color: #ffffff;\r\n :hover {\r\n background-color: #1486dd;\r\n }\r\n`;\r\nconst NotificationPlaceHolder = styled.div`\r\n grid-area: notificationZone;\r\n width: 100%;\r\n height: 100%;\r\n background-color: white;\r\n width: 60%;\r\n margin: 0 auto;\r\n max-width: 780px;\r\n min-width: 320px;\r\n background-color: white;\r\n text-align: center;\r\n padding-bottom: 60px;\r\n`;\r\nconst NotificationSuccess = styled.div`\r\n font-family: Rubik;\r\n font-style: normal;\r\n font-weight: normal;\r\n font-size: 24px;\r\n text-transform: uppercase;\r\n line-height: 24px;\r\n text-align: center;\r\n color: green;\r\n`;\r\n\r\nconst NotificationFailed = styled.div`\r\n font-family: Rubik;\r\n font-style: normal;\r\n font-weight: normal;\r\n font-size: 24px;\r\n text-transform: uppercase;\r\n line-height: 24px;\r\n text-align: center;\r\n color: #ff0000;\r\n`;\r\nconst StyledInput = styled.input`\r\n border: none;\r\n background: transparent;\r\n outline: none;\r\n`;\r\nconst Unsubscribe = (props: any) => {\r\n const { authService, location } = props;\r\n const { _authOptions } = authService;\r\n const { search } = location;\r\n const START_TOKEN_INDEX = search.split('').indexOf('=') + 1;\r\n const token = search\r\n .split('')\r\n .splice(START_TOKEN_INDEX, search.length)\r\n .join('');\r\n const [email, setEmail] = React.useState('');\r\n const [loading, setLoading] = React.useState(false);\r\n const [loaded, setLoaded] = React.useState(false);\r\n const [error, setError] = React.useState('');\r\n const urlPerEnv = env.UNSUBSCRIBE_END_POINT;\r\n\r\n const clickHandler = async (urlRequest: string, inputValue: string) => {\r\n setLoading(true);\r\n setError('');\r\n setLoaded(false);\r\n const response = await fetch(urlRequest, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json;charset=utf-8',\r\n },\r\n body: JSON.stringify({ email: inputValue, token: token }),\r\n });\r\n\r\n if (response.ok) {\r\n setLoading(false);\r\n setLoaded(true);\r\n setError('');\r\n const json = await response.json();\r\n } else {\r\n setLoading(false);\r\n setLoaded(false);\r\n if (response.status === 401 || response.status === 403) {\r\n setError('Wrong email, try again');\r\n }\r\n setError('something went wrong, try again');\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 Unsubscribe\r\n We are sorry to see you go\r\n \r\n \r\n \r\n {\r\n setEmail(e.currentTarget.value);\r\n }}\r\n />\r\n \r\n \r\n \r\n Are you sure you wish to unsubscribe from Konnect's production performance weekly\r\n summary?\r\n \r\n {\r\n clickHandler(urlPerEnv, email);\r\n }}>\r\n Unsubscribe\r\n \r\n \r\n \r\n {loaded ? Success : ''}\r\n {error !== '' ? {error} : ''}\r\n {loading ? Spinner() : ''}\r\n \r\n