{"version":3,"sources":["constants/app.js","utils/assertions.js","utils/redux.js","modules/namespace.js","modules/common/namespace.js","modules/common/name.js","modules/common/selectors.js","assets/logo-horizontal.svg","theme/global.js","theme/foundations/color.js","theme/foundations/shadows.js","theme/foundations/typography.js","theme/foundations/radius.js","theme/foundations/spacing.js","theme/styles/textStyles.js","theme/styles/layerStyles.js","theme/components/button.js","theme/components/input.js","theme/components/badge.js","theme/components/table.js","theme/components/form-label.js","theme/components/modal.js","theme/theme.js","theme/components/menu.js","theme/components/tabs.js","theme/components/select.js","components/content.js","modules/notifications/effects.js","constants/styles.js","utils/json.js","utils/events.js","utils/types.js","utils/lenses.js","utils/objects.js","utils/app.js","modules/notifications/namespace.js","modules/notifications/name.js","services/createChannel.js","services/createResolver.js","services/index.js","services/createHistory.js","modules/notifications/store.js","modules/notifications/boundActions.js","constants/notifications.js","io/errors.js","io/app.js","modules/common/store.js","modules/common/boundActions.js","utils/errors.js","dicts/messages.js","modules/common/io.js","modules/common/effects.js","components/header.js","components/react-select.js","components/react-datepicker.js","components/paginator.js","components/radio-button-group.js","utils/url.js","components/breadcrumbs.js","components/page-loader.js","components/tabs-horizontal-scroll.js","components/page-header.js","components/card.js","components/card-header.js","components/list.js","components/list-item.js","components/file-list.js","components/file.js","components/modal-sub-header.js","modules/login/namespace.js","modules/login/name.js","modules/login/store.js","modules/login/boundActions.js","io/history.js","modules/login/io.js","modules/login/effects.js","assets/Logo-vertical.svg","modules/login/selectors.js","views/login/components/login-form.jsx","assets/login-bg.jpg","modules/confirmer/effects.js","views/login/index.jsx","modules/notifications/selectors.js","views/notifications/index.jsx","modules/confirmer/namespace.js","modules/confirmer/name.js","modules/confirmer/cache.js","services/createCache.js","modules/confirmer/selectors.js","modules/confirmer/store.js","modules/confirmer/boundActions.js","views/confirmer/index.jsx","views/Styles.js","modules/common/boundSelectors.js","modules/sites/namespace.js","modules/sites/name.js","modules/sites/sitesPage/namespace.js","modules/sites/sitesPage/name.js","constants/pagination.js","modules/sites/sitesPage/store.js","modules/sites/sitesPage/boundActions.js","modules/sites/sitesPage/utils.js","modules/sites/sitesPage/selectors.js","modules/sites/sitesPage/boundSelectors.js","modules/sites/sitesPage/io.js","modules/sites/sitesPage/effects.js","dicts/data.js","views/sites/sites/components/sites-table.js","utils/react.js","views/sites/sites/components/sites-filters.js","views/sites/sites/components/site-modal.js","views/sites/sites/components/contractSites-filters.js","views/sites/sites/components/contractSites-table.js","views/sites/sites/components/contract-notice-table.js","views/sites/sites/components/contract-notice-filters.js","views/sites/sites/components/contract-notice-modal.js","views/sites/sites/components/employee-notice-table.js","views/sites/sites/components/employee-notice-filters.js","views/sites/sites/components/employee-notice-modal.js","views/sites/sites/index.js","utils/time.js","modules/sites/sitePage/namespace.js","modules/sites/sitePage/name.js","modules/sites/sitePage/store.js","modules/sites/sitePage/boundActions.js","modules/sites/sitePage/utils.js","modules/sites/sitePage/selectors.js","modules/sites/sitePage/boundSelectors.js","modules/sites/sitePage/io.js","io/files.js","modules/sites/sitePage/effects.js","views/sites/site/components/siteEmployee-filters.js","views/sites/site/components/siteEmployee-modal.js","views/sites/site/components/costCalculation-filters.js","utils/numbers.js","views/sites/site/components/costCalculation-table.js","views/sites/site/components/dropZone-modal.js","views/sites/site/components/expense-modal.js","views/sites/site/components/document-editor-modal.js","views/sites/site/components/extraCosts-table.js","views/sites/site/components/extraCosts-filter.js","views/sites/site/components/siteEmployee-table.js","views/sites/site/components/employee-notice-table.js","views/sites/site/components/employee-notice-filters.js","views/sites/site/components/employee-notice-modal.js","views/sites/site/components/employeeCosts.js","views/sites/site/index.js","modules/employees/namespace.js","modules/employees/name.js","modules/employees/employeesPage/namespace.js","modules/employees/employeesPage/name.js","modules/employees/employeesPage/store.js","modules/employees/employeesPage/boundActions.js","modules/employees/employeesPage/utils.js","modules/employees/employeesPage/selectors.js","modules/employees/employeesPage/boundSelectors.js","modules/employees/employeesPage/io.js","modules/employees/employeesPage/effects.js","views/employees/employees/components/employees-table.js","views/employees/employees/components/employees-filters.js","views/employees/employees/components/employees-modal.js","views/employees/employees/components/presentEmployees-table.js","views/employees/employees/index.js","modules/employees/employeePage/namespace.js","modules/employees/employeePage/name.js","modules/employees/employeePage/store.js","modules/employees/employeePage/boundActions.js","modules/employees/employeePage/selectors.js","modules/employees/employeePage/utils.js","modules/employees/employeePage/boundSelectors.js","modules/employees/employeePage/io.js","modules/employees/employeePage/effects.js","views/employees/employee/components/sites-table.js","views/employees/employee/components/timeEntries-filter.js","views/employees/employee/components/timeEntries-table.js","views/employees/employee/components/employee-modal.js","modules/timeEntries/namespace.js","modules/timeEntries/name.js","modules/timeEntries/selectors.js","modules/timeEntries/utils.js","modules/timeEntries/store.js","modules/timeEntries/boundActions.js","modules/timeEntries/io.js","modules/timeEntries/effects.js","views/timeEntries/timeEntriesModal.js","views/employees/employee/components/work-permit-table.js","views/employees/employee/components/work-permit-modal.js","views/employees/employee/index.js","modules/organizations/namespace.js","modules/organizations/name.js","modules/organizations/organizationsPage/namespace.js","modules/organizations/organizationsPage/name.js","modules/organizations/organizationsPage/store.js","modules/organizations/organizationsPage/utils.js","modules/organizations/organizationsPage/boundActions.js","modules/organizations/organizationsPage/io.js","modules/organizations/organizationsPage/selectors.js","modules/organizations/organizationsPage/effects.js","modules/organizations/organizationsPage/boundSelectors.js","views/organizations/organizations/components/organizations-table.js","views/organizations/organizations/components/organizations-filters.js","views/organizations/organizations/components/organization-modal.js","views/organizations/organizations/index.js","modules/organizations/organizationPage/namespace.js","modules/organizations/organizationPage/name.js","modules/organizations/organizationPage/store.js","modules/organizations/organizationPage/boundActions.js","modules/organizations/organizationPage/selectors.js","modules/organizations/organizationPage/utils.js","modules/organizations/organizationPage/boundSelectors.js","modules/organizations/organizationPage/io.js","modules/organizations/organizationPage/effects.js","views/organizations/organization/components/sites-table.js","views/organizations/organization/components/employees-table.js","views/organizations/organization/components/contractSites-table.js","views/organizations/organization/components/organization-modal.js","views/organizations/organization/index.js","modules/reportages/namespace.js","modules/reportages/name.js","modules/reportages/utils.js","modules/reportages/selectors.js","modules/reportages/store.js","modules/reportages/boundActions.js","modules/reportages/boundSelectors.js","modules/reportages/io.js","modules/reportages/effects.js","index.js","views/reportages/components/TimeEntryFilters.js","views/reportages/sites/SitesTab.js","utils/fields.js","views/reportages/sites/SitesTabFilters.js","views/reportages/employees/EmployeesTab.js","views/reportages/employees/EmployeesTabFilters.js","views/reportages/components/GenerateCsvModal.js","views/reportages/index.js","views/App.js","io/reportWebVitals.js","modules/notifications/reducer.js","modules/confirmer/reducer.js","modules/common/reducer.js","modules/login/reducer.js","modules/sites/reducer.js","modules/sites/sitesPage/reducer.js","modules/sites/sitePage/reducer.js","modules/employees/reducer.js","modules/employees/employeesPage/reducer.js","modules/employees/employeePage/reducer.js","modules/organizations/reducer.js","modules/organizations/organizationsPage/reducer.js","modules/organizations/organizationPage/reducer.js","modules/reducer.js","modules/reportages/reducer.js","modules/timeEntries/reducer.js","utils/http.js","io/http.js","services/createStoreActionHook.js","services/createStore.js","services/createApi.js"],"names":["inDev","apiUrl","name","val","process","Error","getOrFail","assertionsConfig","enable","assertTypeAndTransformError","type","value","errorTransformer","assert","e","stackInjectorMiddleware","store","next","action","stack","split","slice","applyState","curry","keys","remaps","reduce","acc","k","selectors","state","map","s","bindSelectors","getState","bindActions","dispatch","actions","a","payload","scopedStore","namespace","cases","initialState","nsStr","join","types","push","undefined","Object","typesSet","Set","reducer","has","subNew","path","assocPath","startsWith","scopedSelectors","defs","f","pipeReducers","reducers","sels","st","initialized","apiToken","all","user","organization","id","organizations","pagination","organizationId","createSelector","organizationSites","_defs","_path","_circle","_path2","_path3","_path4","_path5","_path6","_rect","global","body","fontSize","color","lineHeight","bg","colors","transparent","current","black","white","whiteAlpha","blackAlpha","blue","gray","shadows","xs","sm","base","md","lg","xl","outline","inner","none","typography","letterSpacings","tighter","tight","normal","wide","wider","widest","lineHeights","shorter","short","tall","taller","fontWeights","hairline","thin","light","medium","semibold","bold","extrabold","fonts","heading","mono","fontSizes","radii","full","spacing","px","textStyles","h1","fontWeight","h2","h3","small","subheading","textTransform","letterSpacing","caption","label","layerStyles","box","boxShadow","borderRadius","Button","baseStyle","sizes","h","variants","solid","_hover","_active","_focus","primary","_disabled","border","borderColor","danger","p","textDecoration","defaultProps","size","Input","parts","field","pl","pr","pt","bgColor","_placeholder","Badge","warning","success","muted","variant","Table","th","simple","td","FormLabel","pos","top","left","zIndex","pointerEvents","whiteSpace","textarea","right","paddingTop","Modal","header","borderBottomWidth","footer","borderTopWidth","py","theme","extendTheme","styles","components","Menu","groupTitle","marginTop","marginLeft","marginRight","list","Tabs","tablist","marginBottom","tab","borderBottom","line","paddingY","paddingX","_selected","tabpanel","padding","Select","withLabel","_invalid","Content","children","props","_extends","assign","bind","target","i","arguments","length","source","key","prototype","hasOwnProperty","call","apply","this","_objectWithoutProperties","excluded","sourceKeys","indexOf","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","SvgLogoHorizontal","_ref","svgRef","title","titleId","xmlns","viewBox","ref","className","d","cx","cy","r","transform","x","y","width","height","rx","acts","ForwardRef","headerHeightMobile","safeStringify","JSON","stringify","eventsConfig","boundEffect","effectFunc","payloadType","creator","augmentError","message","effect","defineProperty","event","eventCreator","bindCreator","createEffects","effectFuncs","effects","func","formatEventWithTime","evt","time","toLocaleTimeString","recordBasename","shapeBasename","assertionToTest","assertion","formatError","er","msg","context","toString","createType","predicate","test","TypeError","Function_","Array_","Array","isArray","Object_","Boolean_","String_","Number_","Date_","RegExp_","File_","Promise_","Error_","P","Boolean","String","Number","Function","Date","RegExp","Promise","File","Null","Undefined","Nullish","Maybe","Nullable","NamedShape","fields","_name","forEach","Record","NamedRecord","over","obj","_over","lensPath","spreadProp","object","newObj","otherProps","matchingProps","replace","pick","isApiTokenError","transf","res","pipe","prop","error","response","status","printLatestEvents","events","count","console","info","reverse","formatLatestEvents","createResolver","initialServices","services","awaiters","get","set","service","resolver","waitFor","resolve","channel","conf","handlers","listeners","addHandler","addListener","createChannel","history","createBrowserHistory","currentLocation","location","prevLocation","listen","createHistory","adjust","spec","iExisting","findIndex","n","update","remove","filter","then","NId","typeNames","t","ts","pred","Union","AdjustArg","duration","_acts","timeouts","rest","clearInterval","timeoutId","setTimeout","adjustEff","medDur","longerDur","isObj","sentryNotify","level","Sentry","logErrorFully","wasLogged","logInfo","description","warn","handleFatal","logError","text","window","didQuitDueToError","addEventListener","reload","root","document","querySelector","setAttribute","ReactDom","unmountComponentAtNode","errorPrev","removeChild","container","createElement","errors","textContent","appendChild","quitInfo","frontLink","style","quitWithMessage","_didCrash","handleUncaught","handleAsFatal","warnEff","warningEff","warningSpec","logWarning","informEff","eff","catchHandled","catchNonFatal","handleUnhandled","unhandledNotifierEff","nEffs","catchNonFatalEff","guardHandled","setPageTitleMessage","decorateWithNotificationsEff","promise","loading","suppressFailure","failureStyle","successStyle","failureDuration","successDuration","disableEverything","catch","dur","successMsg","setApiToken","setUser","sites","clearLogin","setOrganizations","data","meta","describeError","describeThrow","httpJson","fetchOrganizations","msgs","afterApiTokenReceivalEff","include","username","email","initialize","cookies","afterLogin","domain","hostname","expires","logout","navLinkStyles","display","alignItems","justifyContent","position","Logo","NavLink","to","exact","as","RouterNavLink","activeClassName","Header","orgID","openDrawer","showOrganizationTab","includes","RouterLink","borderRightColor","borderRightWidth","onClick","icon","FiMenu","boxSize","paddingLeft","paddingRight","borderLeftColor","borderLeftWidth","direction","mr","textStyle","commonEffs","getSelectStyles","hasError","renderMultiOutside","control","minHeight","backgroundColor","isFocused","valueContainer","paddingBottom","isMulti","hasValue","option","placeholder","menu","menuPortal","multiValue","dropdownIndicator","clearIndicator","indicatorSeparator","getRsValue","options","getOptionValue","rsifyVal","v","find","o","SelectComp","async","creatable","innerRef","onChange","useOptionsAsValues","opt","getOptionLabel","noOptionsMessage","inputValue","loadingMessage","rsValue","rsOnChange","outVal","primary50","primary25","mt","ml","FiX","SelectContainer","rules","standalone","render","onBlur","CustomInput","React","forwardRef","isClearable","inputProps","autoComplete","hidden","FiCalendar","Datepicker","dateFormat","timeFormat","timeCaption","timeIntervals","locale","fi","customInput","popperModifiers","preventOverflow","enabled","escapeWithReference","boundariesElement","DatepickerContainer","defaultValue","selected","PageButton","isActive","nonFunctioning","transition","cursor","Paginator","totalPages","currentPage","onPageSelect","disabled","useMediaQuery","maxButtons","range","Math","floor","FiChevronsLeft","isDisabled","FiChevronLeft","items","max","startingPage","lastPage","rangeBuffer","renderItems","FiChevronRight","FiChevronsRight","RadioButton","useRadio","getInputProps","getCheckboxProps","input","checkbox","flex","_checked","textAlign","RadioButtonGroup","useRadioGroup","getRootProps","getRadioProps","group","isXs","radio","RadioButtonGroupContainer","encodeQuery","encodeURIComponent","str","decodeQuery","substring","decodeURIComponent","fromPairs","createReferrerUrl","pathname","search","hash","withRouter","query","activeCrumbName","referrerUrl","referrerTitle","getReferrerTitle","textDecor","isCurrentPage","PageLoader","TabsHorizontalScroll","scrollable","leftBlur","rightBlur","scrollableRef","createRef","scrollableParentRef","handleResize","diff","scrollWidth","setState","scrollLeft","handleScroll","removeEventListener","bottom","background","overflowX","overflowY","sx","scrollbarWidth","msOverflowStyle","Component","PageHeader","pb","Card","CardHeader","isMain","borderBottomColor","List","isHorizontal","other","marginX","divider","ListItem","isVertical","columns","columnGap","colSpan","FileList","modified","onOpen","onEdit","onDelete","modifiedStr","format","parseISO","gridAutoFlow","templateColumns","role","FiFile","overflow","textOverflow","IconButton","FiMoreHorizontal","stopPropagation","ModalSubHeader","align","justify","processing","setLoading","setProcessing","reset","editQuery","mapper","newSearch","pushQuery","replaceQuery","getQuery","postResetPassword","token","login","credentials","eNew","password","destroy","forgotPassword","resetPassword","formData","password_confirmation","_path7","_path8","_path9","_path10","_path11","_path12","_path13","_path14","_path15","_path16","_path17","_path18","_path19","_path20","LoginForm","onSubmit","useForm","handleSubmit","register","formState","isInvalid","required","SvgLogoVertical","connect","useEffect","effs","isMd","bgImage","bgRepeat","bgSize","w","layerStyle","my","mx","isInline","form","isLoading","order","typeToAlertStatus","Notifications","notifications","margin","maxWidth","createCache","cache","read","initial","onCancel","onOk","showCancel","showOk","show","cancelText","okText","okStyle","okDisabled","dangerText","baseState","ShowArgs","clearCallbacks","c","ok","cancel","opts","cancelRef","useRef","isOpen","leastDestructiveRef","onClose","preserveScrollBarGap","Styles","flexDir","mb","leftIcon","log","date","select","FiPlusCircle","FiMinusCircle","FiChevronDown","FiChevronUp","FiEdit","FiSearch","verticalAlign","perPage","pageNum","emptyPagination","current_page","last_page","per_page","total","page","sort","contractSitesQuery","contractSitesLoading","siteModalOpen","contractSites","contractSitesPagination","contractNoticeModalOpen","siteSelection","contractNoticeRows","contractNoticeLoading","contractNoticeDateRange","startDate","startOfMonth","endDate","endOfMonth","contractNoticeUrl","employeeNoticeModalOpen","employeeSelection","employeeNoticeRows","employeeNoticeLoading","employeeNoticeQuery","employeeNoticeUrl","updateQuery","updateContractSitesQuery","setSites","setContractSites","toggleSiteModal","setContractSitesLoading","setEmployeeNoticeUrl","url","openEmployeeNoticeModal","closeEmployeeNoticeModal","setEmployeeNoticeRows","selectEmployees","employees","selection","reject","equals","append","clearEmployeeSelection","updateEmployeeNoticeQuery","selectSubcontractors","subContractors","subContractorSelection","setContractNoticeRows","clearSiteSelection","updateContractNoticeDateRange","selectSites","openContractNoticeModal","setContractNoticeUrl","closeContractNoticeModal","parseUrlQuery","vals","evolve","queryFetchable","q","contractSitesQueryFetchable","selectedSites","site","some","siteId","selectedContractSites","selectedSitesToSend","subContractor","selectedEmployeeNoticeSites","mappedSites","users","mappedContractSites","commonSels","getSites","getContractSites","sendContractNotice","sendEmployeeNotice","_sels","_commonSels","fetchSites","notifyOpts","fetchContractSites","mergeLeft","createSite","locationCoords","splittedCoords","allowedRadius","checkLocation","latitude","parseFloat","longitude","removeSite","onConfirm","confirmerEffs","clearSubContractorSelection","dateRange","sitesToSend","siteIds","toISOString","file","selectSubContractors","activityStatuses","present","break","pickup","away","siteStatuses","active","inactive","SiteRow","onRowClick","isSelected","isChecked","checked","address","city","postcode","SitesTable","openSite","clearSelection","useDebounce","delay","useState","debouncedValue","setDebouncedValue","handler","clearTimeout","SitesFilters","querySearch","setSearch","debouncedSearch","isInitialMount","SiteModal","defaultValues","addableOrganizations","defaultSiteSubContractors","isNew","watch","setSubContractors","showHelp","setShowHelp","setChecked","newSubContractorId","setNewSubContractorId","closeOnOverlayClick","defaultChecked","step","href","validate","budget","employeeCosts","businessId","addSubContractor","flexDirection","contact","newOrganizations","removeSubContractor","ContractSitesFilters","ContractSitesTable","selectedSite","ContractNoticeTable","ContractNoticeFilters","ContractNoticeModal","download","EmployeeRow","EmployeeNoticeTable","EmployeeNoticeFilters","EmployeeNoticeModal","colorScheme","employeeRowsLoading","subContractorRowsLoading","getDateRangeStr","startStr","endStr","formatDate","formatTimePart","num","sToTime","hours","minutes","round","siteSubContractors","addableEmployees","extraCosts","extraCostsLoading","extraCostsQuery","employeeModalOpen","openedEmployeeId","selectedEmployeeId","updatedSiteEmployees","fileUploaderModalOpen","employeesQuery","expenseModalOpen","expenses","expensesLoading","activeExpenseId","expensesQuery","documents","documentsLoading","documentEditorOpen","activeDocumentId","contractNoticeQuery","setSite","setExtraCosts","setExtraCostsLoading","setSiteUsers","setAddableEmployees","openFileUploaderModal","closeFileUploaderModal","updateEmployeesQuery","updateSite","openEmployeeModal","employeeId","setSelectedEmployeeId","closeEmployeeModal","openExpenseModal","expenseId","closeExpenseModal","setExpenses","updateExpensesQuery","setDocuments","updateDocument","removeDocument","openDocumentEditor","documentId","closeDocumentEditor","updateContractNoticeQuery","trim","fullAddress","filteredUsers","toLowerCase","activityStatus","organizationName","siteOrganizations","siteDefaultVals","formatSiteDefaultVals","openedEmployee","u","selectedEmployee","employeeDefaultVals","employee","employmentStart","employmentEnd","hourPrice","baseWage","wageMultiplier","sitePermission","parse","formatEmployeeDefaultVals","activeExpense","expenseDefaultVals","expense","class","totalBudget","expenseItems","item","_id","sum","formatExpenseDefaultVals","expensesQueryFetchable","activeDocument","documentEditorDefaultVals","doc","employeeNoticeQueryFetchable","groupByUser","startOfDay","endOfDay","formatFetchableEmployeeNoticesQuery","contractNoticeQueryFetchable","groupByOrganization","formatContractNoticeQuery","getSite","getExtraCosts","putSite","setSiteEmployees","setSiteSubContractors","getExpenses","postExpenseItem","putExpenseItem","getDocuments","putDocument","deleteDocument","getTimeEntries","uploadFiles","files","xhr","XMLHttpRequest","open","setRequestHeader","FormData","send","responseText","docs","fetchExtraCosts","siteExtraCosts","fetchAddableEmployeesEff","withoutCurrentOrgCheck","updateSiteUsers","fetchExpenses","fetchEmployeeNoticeRows","rows","fetchContractNoticeRows","openDropzoneModal","closeDropzoneModal","removeEmployee","siteEmployees","siteEmployee","addEmployeeToSite","siteOrganizationId","userData","newUsers","updateEmployeeToSite","userToUpdate","parseInt","saveExpense","deletedItems","removeExpense","postUploadFiles","uploadedFiles","selectsubContractors","rowsToSend","organizationIds","userIds","addOrganizationToSite","newSubContractor","subcontractor","SiteEmployeeFilters","nameFilter","setNameFilter","stateFilter","setStateFilter","orgFilter","setOrgFilter","minWidth","SiteEmployeeModal","setSelectedEmployee","closeOnEsc","valueAsNumber","borderWidth","includingtocontract","CostCalculationFilters","formatNumber","toFixed","CostCalculationRow","budgetUsed","gridColumnGap","CostCalculationTable","openExpense","totalBudgetUsed","DropzoneModal","useDropzone","noClick","noKeyboard","multiple","acceptedFiles","FiCheckCircle","FiFolderPlus","fontStyle","ExpenseModal","useFieldArray","index","FiTrash","DocumentEditorModal","ExtraCostRow","extraCost","createdAt","ExtraCostsTable","onExtraCostClick","removeExtraCost","editExtraCost","ExtraCostsFilters","setEndDate","firstDayOfMonth","getFullYear","getMonth","setStartDate","maxDate","minDate","SiteEmployeeRow","onEmployeeClick","jobTitle","siteMonthlyTime","SiteEmployeesTable","editEmployeeDetails","memo","totalDays","timeEntries","te","birthday","vatNumber","totalTime","employeeRows","totalEmployees","useMemo","totalHours","EmployeeCosts","accumulatedWages","siteTotalWages","sumTotalEuros","percentage","match","params","reportageIndex","updatedAt","removeExtaCost","activeEmployees","setEmployees","setActiveEmployees","getEmployees","getActiveUsers","fetchEmployees","getActiveEmployees","activeUsers","organization_id","createEmployee","EmployeeFilters","EmployeesTable","openEmployee","EmployeeModal","setShow","showPasswordInput","isRequired","phone","pattern","ssn","minLength","PresentEmployeeRow","PresentEmployeesTable","presentEmployeesModalOpen","workPermits","openedPermitId","entriesLoading","workPermitModalOpen","siteEntries","siteIdFilter","updateSiteIdFilter","updateDateRange","setEmployee","setWorkPermits","updateEmployee","setEntriesLoading","openWorkPermitModal","closeWorkPermitModal","setSiteEntries","entries","selectedWorkPermit","permitId","permit","permitDefaultValues","expires_at","expiresAt","number","admitter","formatWorkPermitDefaultVals","timeEntryQueryFetchable","groupByDaysAndSites","getEmployee","getDayEntries","updateWorkPermit","permitData","lastDayOfMonth","fetchDayEntriesEff","employeeSites","employeesActiveSite","fetchWorkPermits","createWorkPermit","userId","expirationDate","substr","removeWorkPermit","workPermit","editWorkPermit","TimeEntryFilters","TimeEntryRow","entry","onEditClick","setEditableEntries","day","siteName","TimeEntriesTable","editTimeEntries","timeEntriesModalOpen","editableEntries","timeEntryDefaultValues","delete","deleted","closeTimeEntriesModal","openTimeEntriesModal","putTimeEntries","afterSaveCallback","openTimeEntryModal","afterSave","closeTimeEntryModal","updateTimeEntries","TimeEntriesModal","renderEntries","setRenderEntries","scrollBehavior","timeInputLabel","showTimeInput","PermitRow","WorkPermitTable","editPermit","WorkPermitModal","showMonthYearPicker","timeEntrySels","timeEntryEffs","organizationModalOpen","openOrganizationModal","closeOrganizationModal","getOrganizations","createOrganization","removeOrganization","OrganizationsRow","sitesAmount","contractSitesAmount","OrganizationsTable","openOrganization","OrganizationsFilters","OrganizationModal","industry","setOrganization","updateOrganization","organizationDefaultVals","formatOrganizationDefaultVals","getOrganization","fetchOrganizationEff","onSiteClick","job_title","base_wage","ContractSiteRow","userEntries","userQuery","generateReportageModalOpen","includeBreaksAndPickups","siteQuery","referrerUrlBoolean","siteQueryFetchable","groupBySite","formatSiteQueryFetchable","userQueryFetchable","formatUserQueryFetchable","siteQueryUrlFormatted","userQueryUrlFormatted","dateRangeQueryUrlFormatted","userReportage","userReportageLoading","siteReportage","siteReportageLoading","setReferrerUrlBoolean","setIncludeBreaksAndPickups","setGenerateReportageModalOpen","setReportageIndex","updateSiteQuery","updateUserQuery","setInitialized","setUserEntries","setUserReportage","setUserReportageLoading","setSiteReportage","setSiteReportageLoading","getSiteEntries","getUserEntries","groupByUserAndSite","generateCsv","fetchSiteEntriesEff","fetchUserEntriesEff","changeTab","tabIndex","generateEmployeeCsv","strippedEntries","breakTime","generateSiteCsv","updateIncludeBreaksAndPickups","SitesRow","siteAddress","userCount","SitesTab","parseNullableNumber","formatNullableNumber","SitesTabFilters","prev","curr","hasArrow","opacity","EmployeesRow","userEntry","EmployeesTab","EmployeesTabFilters","selectedSiteName","GenerateCsvModal","alignContent","updateLists","goBack","loggedIn","component","Sites","Site","Employees","Employee","Organizations","Organization","Reportage","Login","reportWebVitals","onPerfEntry","getCLS","getFID","getFCP","getLCP","getTTFB","confirmer","common","validateResponse","request","method","Request","requestJson","headers","fetch_","fetch","fetchJson","http","reason","eventLog","maxEntries","logEvent","shift","createEventLog","evts","logEvents","esn","category","Info","seq","instance","subscribe","currSeq","enhancer","newState","values","createStoreActionHook","storeHook","actionHookEnhancer","compose","__REDUX_DEVTOOLS_EXTENSION_COMPOSE__","reduxCompose","middleware","enhancers","applyMiddleware","createStore","onApiError","api","augmentArgs","Accept","Authorization","reqConf","augmentResponse","args","createApi","onError","ReactDOM","getElementById"],"mappings":"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","file":"static/js/main.5f9134cd.chunk.js","sourcesContent":["export const nodeEnv = process.env.REACT_APP_NODE_ENV;\nexport const inProd = nodeEnv === 'production';\nexport const inDev = !inProd;\n\nconst getOrFail = (name) => {\n const val = process.env[name];\n if (!val) {\n throw new Error(`Required environment variable \"${name}\" not set`);\n }\n return val;\n};\n\nexport const apiUrl = getOrFail('REACT_APP_API_URL');\n","export const assertionsConfig = {enable: false};\n\nexport const assertType = assertionsConfig.enable\n ? (type, value) => type.assert(value)\n : () => {};\n\nconst assertTypeAndTransform = (type, value, errorTransformer) => {\n try {\n type.assert(value);\n } catch (e) {\n throw errorTransformer(e);\n }\n};\nexport const assertTypeAndTransformError = assertionsConfig.enable\n ? assertTypeAndTransform\n : () => {};\n\nconst _assertTruthy = (val) => {\n if (!val) {\n throw new Error(`Assertion failed, value not truthy: \\`${val}\\``);\n }\n};\nexport const assertTruthy = assertionsConfig.enable ? _assertTruthy : () => {};\n","import {assocPath, path, map, curryN, curry, mergeWith} from 'ramda';\nimport {effect as _effect, isOpEffect} from './reduxEffects';\nimport {assertTypeAndTransformError} from './assertions';\n\n// middleware to inject a \"@@stack\" property to actions, displaying where they were dispatched from\n// NOTE: may cause a significant performance hits with frequent actions?\nexport const stackInjectorMiddleware = (store) => (next) => (action) => {\n action['@@stack'] = new Error().stack.split('\\n').slice(1);\n return next(action);\n};\n\n// create an action typed by its namespace and name. the intermediary action creator accepts the payload of the action to be created, and contains a \"type\" prop equal to the action's type\nexport const action =\n (namespace) =>\n (name, payloadType = null) => {\n const type = `${namespace.join('.')}:${name}`;\n const augmentError = (e) => {\n e.message = `At action \"${type}\": ${e.message}`;\n return e;\n };\n\n const creator = (payload) => {\n if (payloadType) {\n assertTypeAndTransformError(payloadType, payload, augmentError);\n }\n return {type, ...(payload !== undefined ? {payload} : {})};\n };\n creator.type = type;\n creator.payloadType = payloadType;\n return creator;\n };\n\n// create an effect scoped by its namespace and name.\nexport const effect =\n (namespace) =>\n (name, ...rest) =>\n _effect(`${namespace.join('.')}:${name}`, ...rest);\n\n// create a handler by supplying a namespace and a handler function that acts on the sub-state denoted by the namespace. the sub-handler receives the full state in addition to its local state.\nexport const scopedHandler =\n (namespace, subHandler) =>\n (state = {}, action) => {\n const subResult = subHandler(path(namespace, state), state, action);\n const newState = assocPath(namespace, subResult[0], state);\n return [newState, subResult[1]];\n };\n\n// when calling delegated sub-handlers in a scoped reducer, the global state needs to be manually synced with the sub-state if any changes were made. this is a simple convenience function for doing so.\nexport const assocSubState = (namespace) => (subState, fullState) =>\n assocPath(namespace, subState, fullState);\n\n// a convenience function for making the same updates to both the local and the global state when passing them onto a delegated sub-handler.\nexport const updateSubState = (namespace) => (subState, fullState, updater) => {\n const newSub = updater(subState);\n return [newSub, assocPath(namespace, newSub, fullState)];\n};\n\n// pipe sub-handlers of a scoped reducer. note that several handlers are allowed to react to a given action and their resulting effects are aggregated into a list.\nexport const pipeSubHandlers =\n (namespace) =>\n (...handlers) =>\n (state, fullState, action) =>\n handlers\n .reduce(\n ([state, effect, fullState], handler) => {\n const [newState, resultEffect] = handler(state, fullState, action);\n // figure out a nice format for the joint effect\n // prettier-ignore\n const newEffect = !isOpEffect(resultEffect) ? effect\n : !effect ? resultEffect\n : Array.isArray(effect) ? [...effect, resultEffect]\n : [effect, resultEffect];\n // make sure to update fullState as well so that the next reducer receives up-to-date data\n return [newState, newEffect, assocPath(namespace, newState, fullState)];\n },\n [state, null, fullState],\n )\n .slice(0, 2);\n\n// produce a map of state keys to their own values or the ones provided in the remapper object, if present. useful for fragments for allowing their parents to remap some of the state keys they use.\nexport const mapStateKeys = curry((keys, remaps) =>\n keys.reduce((acc, k) => ({...acc, [k]: remaps[k] || k}), {}),\n);\n\n// bind an effect or a helper function into the given store methods for more convenient use later\nexport const bindToStore = (getState, dispatch) => (effectLike) =>\n curryN(effectLike.length, (...args) => effectLike(...args)(getState, dispatch));\n\n// apply given state to all selectors, returning an object suitable as component props\nexport const applyState = (selectors) => (state) => map((s) => s(state), selectors);\n\n// apply given dispatcher to all actions, returning an object suitable as component props\nexport const applyDispatch = (actionCreators) => (dispatch) =>\n map(\n (a) =>\n (...args) =>\n dispatch(a(...args)),\n actionCreators,\n );\n\n// similar to applyState, but allow resulting state props to be overwritten by parent props\nexport const applyStateDefault = (selectors) => (state, props) => ({\n ...applyState(selectors)(state),\n ...props,\n});\n\n// similar to applyDispatch, but allow resulting action props to be overwritten by parent props\nexport const applyDispatchDefault = (actionCreators) => (dispatch, props) => ({\n ...applyDispatch(actionCreators)(dispatch),\n ...props,\n});\n\n// NEW STUFF\n\nexport const bindSelectors = (getState, selectors) =>\n map((s) => () => s(getState()), selectors);\n\nexport const bindActions = (dispatch, actions) =>\n map((a) => (payload) => dispatch(a(payload)), actions);\n\nexport const scopedStore = (namespace, cases, initialState = {}) => {\n const nsStr = namespace.join('.');\n\n let types = [];\n let actions = {};\n for (const name of Object.keys(cases)) {\n const type = `${nsStr}:${name}`;\n types.push(type);\n actions[name] = (payload) => (payload !== undefined ? {type, payload} : {type});\n }\n\n const typesSet = new Set(types);\n\n const reducer = (state = {}, {type, payload}) => {\n if (typesSet.has(type)) {\n const name = type.split(':')[1];\n // NOTE: passing payload only since in practice the other fields of redux actions aren't useful for regular reducers.\n const subNew = cases[name](path(namespace, state), state, payload);\n return assocPath(namespace, subNew, state);\n } else if (type.startsWith('@@redux/INIT') || type === '@@INIT') {\n // careful if redux decides to change type name in the future. name is also different if redux devtools installed, thus the OR condition\n // not great hooking into the redux init event by its exact name, but it's a stable API and there's no better way to initialize the local state with initialState without running this on every event unnecessarily.\n return assocPath(namespace, initialState, state);\n }\n return state;\n };\n\n return {actions, reducer};\n};\n\nexport const scopedSelectors = (namespace, defs) =>\n map((f) => (state) => f(path(namespace, state), state), defs);\n\nexport const pipeReducers =\n (...reducers) =>\n (state, action) =>\n reducers.reduce((state, reducer) => reducer(state, action), state);\n\nconst mergeReducerCases = (namespace) => (a, b) => (st, all, payload) => {\n const st2 = a(st, all, payload);\n return b(st2, assocPath(namespace, st2, all), payload);\n};\n\n// merge several reducer case definitions by combining them into a new dict, and piping any cases with the same name. useful when working with fragments, as this lets you merge the case definitions from fragments into your reducer easily.\nexport const mergeReducerDefs = (namespace) => (defs) =>\n defs.reduce((res, def) => mergeWith(mergeReducerCases(namespace), res, def), {});\n","export default [];\n","import namespace from '../namespace';\nimport name from './name';\n\nexport default [...namespace, name];\n","export default 'common';\n","import {createSelector} from 'reselect';\nimport namespace from './namespace';\nimport {scopedSelectors} from 'utils/redux';\n\nlet sels = {};\n\nsels.initialized = (st) => st.initialized;\n\nsels.apiToken = (st) => st.apiToken;\n\nsels.loggedIn = (st, all) => !!sels.apiToken(st, all);\n\nsels.user = (st) => st.user;\n\nsels.organization = (st) => st.organization;\n\nsels.organizationId = (st) => st.organization.id;\n\nsels.organizations = (st) => st.organizations;\n\nsels.pagination = (st) => st.pagination;\n\nsels.organizationId = createSelector(sels.user, (user) =>\n user ? user.organizationId : null,\n);\n\nsels.organizationSites = (st) => st.organizationSites;\n\nexport default scopedSelectors(namespace, sels);\n","var _defs, _path, _circle, _path2, _path3, _path4, _path5, _path6, _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 SvgLogoHorizontal(_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 id: \"Layer_1\",\n \"data-name\": \"Layer 1\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 118.26 48\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"style\", null, \".cls-1{fill:#fff;}\"))), title === undefined ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, \"logo-horizontal\") : title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n className: \"cls-1\",\n d: \"M25.32,19a5.42,5.42,0,1,0-5.56,9.31c1.93,1.16,8.93,1.77,12.29,2a.94.94,0,0,0,.86-1.44C31.11,26,27.26,20.16,25.32,19Zm-1,5.76a2.18,2.18,0,1,1-.76-3A2.18,2.18,0,0,1,24.33,24.77Z\"\n })), _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n className: \"cls-1\",\n cx: 39.69,\n cy: 33.91,\n r: 3.33,\n transform: \"translate(-10.89 20.97) rotate(-26.16)\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n className: \"cls-1\",\n d: \"M45.57,20.45a22.18,22.18,0,0,0-.66-2.94A22.75,22.75,0,1,0,27.72,46.28a23.12,23.12,0,0,0,2.91-.81,4.35,4.35,0,0,0,2.78-5.17h0a4.36,4.36,0,0,0-5.67-3,11.42,11.42,0,0,1-1.3.38A14.05,14.05,0,1,1,36.71,20.47c.11.44.2.89.28,1.33a4.34,4.34,0,1,0,8.58-1.35Z\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n className: \"cls-1\",\n d: \"M65.83,18.6H52.68a.28.28,0,0,0-.27.28v2.5a.29.29,0,0,0,.28.28H57.4l0,14a.27.27,0,0,0,.28.27h3.16a.28.28,0,0,0,.28-.28l0-14h4.71a.29.29,0,0,0,.28-.28v-2.5A.27.27,0,0,0,65.83,18.6Z\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n className: \"cls-1\",\n d: \"M81,18.57H77.66a.28.28,0,0,0-.25.16L75.66,22.6,74.32,26h-.2l-1.34-3.4L71,18.75a.26.26,0,0,0-.25-.16H67.24A.28.28,0,0,0,67,19l5.3,10.78v5.85a.28.28,0,0,0,.28.28h3.17a.28.28,0,0,0,.27-.28V29.77L81.29,19A.28.28,0,0,0,81,18.57Z\"\n })), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n className: \"cls-1\",\n d: \"M91.12,25.88,96,19a.28.28,0,0,0-.22-.44H92.27a.27.27,0,0,0-.23.12l-3,4.25L87.2,25.81H87v-7a.27.27,0,0,0-.28-.27H83.54a.27.27,0,0,0-.27.28l0,16.76a.28.28,0,0,0,.28.27h3.17A.27.27,0,0,0,87,35.6V30.82l1.53-2.16,3.75,7.06a.28.28,0,0,0,.25.15H96.1a.28.28,0,0,0,.24-.41Z\"\n })), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n className: \"cls-1\",\n d: \"M106,25.85,110.86,19a.28.28,0,0,0-.22-.44h-3.49a.28.28,0,0,0-.23.11l-3,4.26-1.88,2.88h-.2v-7a.28.28,0,0,0-.28-.28H98.43a.27.27,0,0,0-.28.27l0,16.77a.28.28,0,0,0,.28.27h3.17a.29.29,0,0,0,.28-.28V30.8l1.53-2.16,3.76,7.06a.27.27,0,0,0,.24.15H111a.27.27,0,0,0,.24-.4Z\"\n })), _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n className: \"cls-1\",\n x: 114.18,\n y: 18.5,\n width: 3.72,\n height: 17.38,\n rx: 0.28,\n transform: \"translate(-0.04 0.17) rotate(-0.08)\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgLogoHorizontal);\nexport default __webpack_public_path__ + \"static/media/logo-horizontal.f922c8c4.svg\";\nexport { ForwardRef as ReactComponent };","const global = {\n body: {\n fontSize: 'md',\n color: 'gray.800',\n lineHeight: 'tall',\n bg: 'gray.100',\n },\n a: {\n color: 'blue.500',\n },\n};\n\nexport default global;\n","const colors = {\n transparent: 'transparent',\n current: 'currentColor',\n black: '#000',\n white: '#fff',\n\n whiteAlpha: {\n 50: 'rgba(255, 255, 255, 0.04)',\n 100: 'rgba(255, 255, 255, 0.06)',\n 200: 'rgba(255, 255, 255, 0.08)',\n 300: 'rgba(255, 255, 255, 0.16)',\n 400: 'rgba(255, 255, 255, 0.24)',\n 500: 'rgba(255, 255, 255, 0.36)',\n 600: 'rgba(255, 255, 255, 0.48)',\n 700: 'rgba(255, 255, 255, 0.64)',\n 800: 'rgba(255, 255, 255, 0.80)',\n 900: 'rgba(255, 255, 255, 0.92)',\n },\n\n blackAlpha: {\n 50: 'rgba(0, 0, 0, 0.04)',\n 100: 'rgba(0, 0, 0, 0.06)',\n 200: 'rgba(0, 0, 0, 0.08)',\n 300: 'rgba(0, 0, 0, 0.16)',\n 400: 'rgba(0, 0, 0, 0.24)',\n 500: 'rgba(0, 0, 0, 0.36)',\n 600: 'rgba(0, 0, 0, 0.48)',\n 700: 'rgba(0, 0, 0, 0.64)',\n 800: 'rgba(0, 0, 0, 0.80)',\n 900: 'rgba(0, 0, 0, 0.92)',\n },\n\n blue: {\n 100: '#e4ecfb',\n 200: '#CEDCF8',\n 300: '#83a7ed',\n 400: '#5788e6',\n 500: '#2a69df',\n 600: '#1c53bb',\n 700: '#153f8e',\n 800: '#0f2c62',\n 900: '#081835',\n },\n\n gray: {\n 50: '#f7f8f8',\n 100: '#eef0f1',\n 200: '#cdd3d6',\n 300: '#b0babf',\n 400: '#94a1a8',\n 500: '#788891',\n 600: '#606e76',\n 700: '#49545a',\n 800: '#323a3e',\n 900: '#1c2022',\n },\n};\n\nexport default colors;\n","const shadows = {\n xs: '0 0 0 1px rgba(0, 0, 0, 0.05)',\n sm: '0 1px 2px 0 rgba(0, 0, 0, 0.05)',\n base: '0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 2px 2px 0 rgba(0, 0, 0, 0.06)',\n md: '0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)',\n lg: '0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05)',\n xl: '0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04)',\n '2xl': '0 25px 50px -12px rgba(0, 0, 0, 0.25)',\n outline: '0 0 0 3px rgba(66, 153, 225, 0.6)',\n inner: 'inset 0 2px 4px 0 rgba(0,0,0,0.06)',\n none: 'none',\n 'dark-lg':\n 'rgba(0, 0, 0, 0.1) 0px 0px 0px 1px, rgba(0, 0, 0, 0.2) 0px 5px 10px, rgba(0, 0, 0, 0.4) 0px 15px 40px',\n};\n\nexport default shadows;\n","const typography = {\n letterSpacings: {\n tighter: '-0.05em',\n tight: '-0.025em',\n normal: '0',\n wide: '0.025em',\n wider: '0.05em',\n widest: '0.1em',\n },\n\n lineHeights: {\n normal: 'normal',\n none: 1,\n shorter: 1.25,\n short: 1.375,\n base: 1.5,\n tall: 1.625,\n taller: '2',\n 3: '.75rem',\n 4: '1rem',\n 5: '1.25rem',\n 6: '1.5rem',\n 7: '1.75rem',\n 8: '2rem',\n 9: '2.25rem',\n 10: '2.5rem',\n },\n\n fontWeights: {\n hairline: 100,\n thin: 200,\n light: 300,\n normal: 400,\n medium: 500,\n semibold: 600,\n bold: 700,\n extrabold: 800,\n black: 900,\n },\n\n fonts: {\n heading: `\"IBM Plex Sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\"`,\n body: `\"IBM Plex Sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\"`,\n mono: `SFMono-Regular,Menlo,Monaco,Consolas,\"Liberation Mono\",\"Courier New\",monospace`,\n },\n\n fontSizes: {\n xs: '0.75rem',\n sm: '0.875rem',\n md: '1rem',\n lg: '1.125rem',\n xl: '1.25rem',\n '2xl': '1.5rem',\n '3xl': '1.875rem',\n '4xl': '2.25rem',\n '5xl': '3rem',\n '6xl': '3.75rem',\n '7xl': '4.5rem',\n '8xl': '6rem',\n '9xl': '8rem',\n },\n};\n\nexport default typography;\n","const radii = {\n none: '0',\n sm: '0.125rem',\n base: '0.25rem',\n md: '0.375rem',\n lg: '0.5rem',\n xl: '0.75rem',\n '2xl': '1rem',\n '3xl': '1.5rem',\n full: '9999px',\n};\n\nexport default radii;\n","const spacing = {\n px: '1px',\n 0: '0',\n 1: '0.25rem',\n 2: '0.5rem',\n 3: '0.75rem',\n 4: '1rem',\n 5: '1.25rem',\n 6: '1.5rem',\n 7: '1.75rem',\n 8: '2rem',\n 9: '2.25rem',\n 10: '2.5rem',\n 12: '3rem',\n 14: '3.5rem',\n 16: '4rem',\n 20: '5rem',\n 24: '6rem',\n 28: '7rem',\n 32: '8rem',\n 36: '9rem',\n 40: '10rem',\n 44: '11rem',\n 48: '12rem',\n 52: '13rem',\n 56: '14rem',\n 60: '15rem',\n 64: '16rem',\n 72: '18rem',\n 80: '20rem',\n 96: '24rem',\n};\n\nexport default spacing;\n","const textStyles = {\n h1: {\n fontSize: '2xl',\n fontWeight: 'bold',\n lineHeight: '6',\n },\n h2: {\n fontSize: 'lg',\n fontWeight: 'bold',\n lineHeight: '6',\n },\n h3: {\n fontSize: 'md',\n fontWeight: 'bold',\n lineHeight: '6',\n },\n body: {\n fontSize: 'md',\n fontWeight: 'regular',\n lineHeight: '6',\n },\n small: {\n fontSize: 'sm',\n fontWeight: 'regular',\n lineHeight: '4',\n },\n subheading: {\n fontSize: 'sm',\n fontWeight: 'bold',\n lineHeight: '4',\n textTransform: 'uppercase',\n letterSpacing: 'wide',\n },\n caption: {\n fontSize: 'xs',\n fontWeight: 'regular',\n lineHeight: '4',\n },\n label: {\n fontSize: 'xs',\n fontWeight: 'bold',\n lineHeight: '4',\n },\n};\n\nexport default textStyles;\n","const layerStyles = {\n box: {\n bg: 'white',\n boxShadow: 'xl',\n borderRadius: 'lg',\n },\n};\n\nexport default layerStyles;\n","const Button = {\n // The styles all button have in common\n baseStyle: {\n fontWeight: 'bold',\n },\n // Two sizes: sm and md\n sizes: {\n sm: {\n fontSize: 'sm',\n borderRadius: 'md',\n },\n lg: {\n fontSize: 'md',\n borderRadius: 'lg',\n lineHeight: 4,\n h: 12,\n },\n },\n // Two variants: outline and solid\n variants: {\n solid: {\n bg: 'blue.100',\n color: 'blue.600',\n boxShadow: 'md',\n _hover: {\n bg: 'blue.200',\n color: 'blue.600',\n },\n _active: {\n bg: 'blue.300',\n color: 'blue.600',\n },\n _focus: {\n bg: 'blue.200',\n color: 'blue.600',\n },\n },\n\n primary: {\n bg: 'blue.500',\n color: 'white',\n boxShadow: 'base',\n _hover: {\n bg: 'blue.600',\n color: 'white',\n _disabled: {\n bg: 'blue.600',\n },\n },\n _active: {\n bg: 'blue.700',\n color: 'white',\n },\n _focus: {\n bg: 'blue.600',\n color: 'white',\n },\n },\n\n outline: {\n color: 'gray.600',\n border: '1px solid',\n borderColor: 'gray.600',\n _hover: {\n bg: 'gray.300',\n },\n _active: {\n bg: 'gray.400',\n },\n _focus: {\n bg: 'gray.300',\n },\n },\n\n danger: {\n bg: 'red.500',\n color: 'white',\n boxShadow: 'base',\n _hover: {\n bg: 'red.600',\n color: 'white',\n },\n _active: {\n bg: 'red.700',\n color: 'white',\n },\n },\n\n 'primary-link': {\n color: 'blue.600',\n p: 0,\n h: 'auto',\n _hover: {\n color: 'blue.600',\n textDecoration: 'underline',\n },\n _active: {\n color: 'blue.700',\n },\n },\n\n pagination: {\n bg: 'gray.50',\n color: 'gray.600',\n border: '1px solid',\n borderColor: 'gray.300',\n _hover: {\n borderColor: 'blue.500',\n color: 'blue.500',\n },\n _active: {\n bg: 'blue.500',\n borderColor: 'blue.500',\n color: 'white',\n },\n },\n },\n // The default size and variant values\n defaultProps: {\n size: 'md',\n },\n};\n\nexport default Button;\n","const Input = {\n parts: ['field'],\n sizes: {\n lg: {\n field: {\n fontSize: 'sm',\n pl: 4,\n pr: 4,\n h: 12,\n },\n },\n sm: {\n field: {\n borderRadius: 'base',\n },\n },\n },\n variants: {\n outline: {\n field: {\n pt: 4,\n borderColor: 'gray.200',\n bgColor: 'white',\n color: 'gray.800',\n _placeholder: {\n color: 'gray.400',\n },\n _hover: {\n borderColor: 'gray.500',\n },\n _focus: {\n borderColor: 'gray.600',\n bgColor: 'gray.50',\n boxShadow: 'md',\n },\n },\n },\n },\n defaultProps: {\n size: 'lg',\n variants: 'outline',\n },\n};\n\nexport default Input;\n","const Badge = {\n // The styles all button have in common\n baseStyle: {\n fontWeight: 'bold',\n textTransform: 'none',\n },\n // Two sizes: sm and md\n sizes: {\n md: {\n fontSize: 'xs',\n borderRadius: 'full',\n h: 6,\n px: 3,\n lineHeight: 2,\n },\n },\n // Two variants: outline and solid\n variants: {\n primary: {\n bg: 'blue.100',\n color: 'blue.600',\n },\n warning: {\n bg: 'orange.100',\n color: 'orange.800',\n },\n danger: {\n bg: 'red.100',\n color: 'red.800',\n },\n success: {\n bg: 'green.100',\n color: 'green.800',\n },\n muted: {\n bg: 'gray.100',\n color: 'gray.800',\n },\n },\n // The default size and variant values\n defaultProps: {\n size: 'md',\n variant: 'primary',\n },\n};\n\nexport default Badge;\n","const Table = {\n parts: ['table', 'thead', 'tbody', 'tr', 'th', 'td', 'caption'],\n baseStyle: {\n th: {\n textTransform: 'normal',\n },\n },\n variants: {\n simple: {\n th: {\n borderColor: 'gray.100',\n },\n td: {\n borderColor: 'gray.100',\n },\n },\n },\n defaultProps: {\n variants: 'simple',\n },\n};\n\nexport default Table;\n","import textStyles from '../styles/textStyles';\n\nconst FormLabel = {\n baseStyle: {\n pos: 'absolute',\n top: 2,\n left: 4,\n color: 'gray.500',\n zIndex: 2, // to prevent Chrome autofill bg color hiding label\n pointerEvents: 'none',\n whiteSpace: 'nowrap',\n ...textStyles.label,\n },\n variants: {\n textarea: {\n top: '1px',\n right: 4,\n paddingTop: 2,\n bg: 'gray.50',\n },\n },\n};\n\nexport default FormLabel;\n","const Modal = {\n parts: ['header', 'footer', 'body'],\n baseStyle: {\n header: {\n fontSize: 'sm',\n fontWeight: 'bold',\n textTransform: 'uppercase',\n letterSpacing: 'wide',\n color: 'gray.600',\n borderColor: 'gray.100',\n borderBottomWidth: '1px',\n },\n footer: {\n borderColor: 'gray.100',\n borderTopWidth: '1px',\n },\n body: {\n px: 6,\n py: 6,\n },\n },\n};\n\nexport default Modal;\n","// https://github.com/chakra-ui/chakra-ui/blob/52230c5ac62301993ae6ac47ad658987e5822581/packages/chakra-ui/src/theme/theme.js#L8\nimport {extendTheme} from '@chakra-ui/react';\n\nimport global from './global';\n\nimport colors from './foundations/color';\nimport shadows from './foundations/shadows';\nimport typography from './foundations/typography';\nimport radii from './foundations/radius';\nimport spacing from './foundations/spacing';\n\nimport textStyles from './styles/textStyles';\nimport layerStyles from './styles/layerStyles';\n\nimport Button from './components/button';\nimport Tabs from './components/tabs';\nimport Input from './components/input';\nimport Badge from './components/badge';\nimport Table from './components/table';\nimport FormLabel from './components/form-label';\nimport Menu from './components/menu';\nimport Modal from './components/modal';\nimport Select from './components/select';\n\nconst theme = extendTheme({\n colors,\n shadows,\n ...typography,\n radii,\n spacing,\n\n styles: {\n global: {\n ...global,\n },\n },\n textStyles: {\n ...textStyles,\n },\n layerStyles: {\n ...layerStyles,\n },\n components: {\n Button,\n Input,\n Badge,\n Table,\n FormLabel,\n Menu,\n Modal,\n Tabs,\n Select,\n },\n});\n\nexport default theme;\n","export default {\n baseStyle: {\n groupTitle: {\n fontSize: 'xs',\n fontWeight: 'normal',\n color: 'gray.600',\n marginTop: '0.8rem',\n marginLeft: '0.8rem',\n marginRight: '0.8rem',\n },\n list: {\n zIndex: 999,\n },\n },\n};\n","export default {\n baseStyle: {\n tablist: {\n marginBottom: {\n base: -3,\n md: -5,\n },\n },\n tab: {\n fontWeight: 'bold',\n borderBottom: '4px solid',\n },\n },\n variants: {\n line: {\n tablist: {\n borderColor: 'transparent',\n },\n tab: {\n fontSize: 'sm',\n borderBottom: '4px solid',\n paddingY: 4,\n paddingX: 0,\n marginRight: 5,\n _hover: {\n borderColor: 'blue.200',\n },\n _active: {\n bg: 'none',\n borderColor: 'blue.200',\n },\n _selected: {\n color: 'inherit',\n borderColor: 'blue.400',\n },\n },\n tabpanel: {\n padding: 0,\n },\n },\n },\n};\n","export default {\n variants: {\n withLabel: {\n field: {\n pt: 4,\n bgColor: 'white',\n color: 'gray.800',\n fontSize: 'sm',\n border: '1px solid',\n borderColor: 'gray.200',\n _hover: {\n borderColor: 'gray.500',\n },\n _focus: {\n borderColor: 'gray.600',\n bgColor: 'gray.50',\n boxShadow: 'md',\n },\n _invalid: {\n borderColor: 'red.500',\n boxShadow: '0 0 0 1px #ef4444',\n },\n },\n },\n },\n};\n","import React from 'react';\nimport {Box} from '@chakra-ui/react';\n\nconst Content = ({children, ...props}) => {\n return (\n \n {children}\n \n );\n};\n\nexport default Content;\n","import namespace from './namespace';\nimport {createEffects} from 'utils/events';\nimport services from 'services';\nimport _acts from './boundActions';\nimport {P, Record, Union, Maybe} from 'utils/types';\n\n// types\n\nconst NId = Union(P.String, P.Number);\n\nconst AdjustArg = Record({\n id: NId,\n message: P.String,\n duration: Maybe(P.Number),\n});\n\nlet acts;\n_acts.then((x) => (acts = x));\n\nlet effects = {};\nlet types = {};\n\nlet timeouts = {};\n\nconst adjustEff = (type) => async (spec) => {\n const {duration, ...rest} = spec;\n\n acts.adjust({...rest, type});\n\n if (duration) {\n const id = spec.id;\n if (timeouts[id]) {\n clearInterval(timeouts[id]);\n }\n const timeoutId = setTimeout(() => {\n delete timeouts[id];\n acts.remove(id);\n }, duration);\n timeouts[id] = timeoutId;\n }\n};\n\n['info', 'success', 'warning', 'error', 'loading'].forEach((type) => {\n effects[type] = adjustEff(type);\n types[type] = AdjustArg;\n});\n\neffects.remove = async (id) => {\n acts.remove(id);\n};\ntypes.remove = NId;\n\nexport default createEffects(namespace, services.get('channel').dispatch, types, effects);\n","export const headerHeight = '5rem';\nexport const headerHeightMobile = '4rem';\n","export const safeStringify = (value) => {\n try {\n return JSON.stringify(value);\n } catch (e) {\n return value;\n }\n};\n","import {assertTypeAndTransformError} from './assertions';\nimport {safeStringify} from './json';\nimport {curry} from 'ramda';\n\nexport const eventsConfig = {enable: false};\n\nexport const event =\n (namespace) =>\n (effectFunc, payloadType = null) => {\n if (!effectFunc.name) {\n throw new Error('Effect is missing the \"name\" property');\n }\n const type = `${namespace.join('.')}:${effectFunc.name}`;\n\n const augmentError = (e) => {\n e.message = `At event \"${type}\": ${e.message}`;\n return e;\n };\n\n let creator = (payload) => {\n // type checking here because a) payload types aren't really relevant to the channel b) it's no use letting events with invalid payloads get into the channel\n if (payloadType) {\n assertTypeAndTransformError(payloadType, payload, augmentError);\n }\n // explicitly check since people aren't gonna type things otherwise\n else if (eventsConfig.enable && payload !== undefined) {\n throw new Error(`You didn't provide a type for the event \"${type}\"!`);\n }\n return payload === undefined\n ? {type, effect: effectFunc}\n : {type, effect: effectFunc, payload};\n };\n Object.defineProperty(creator, 'name', {value: effectFunc.name});\n creator.type = type;\n creator.payloadType = payloadType;\n return creator;\n };\n\nexport const bindCreator = (dispatch) => (eventCreator) => {\n let creator = (payload) => {\n dispatch(eventCreator(payload));\n };\n Object.defineProperty(creator, 'name', {value: eventCreator.name});\n creator.type = eventCreator.type;\n creator.payloadType = eventCreator.payloadType;\n return creator;\n};\n\nexport const boundEffect = (namespace, dispatch) => (effectFunc, payloadType) => {\n const creator = event(namespace)(effectFunc, payloadType);\n return bindCreator(dispatch)(creator);\n};\n\nexport const createEffects = curry((namespace, dispatch, types, effectFuncs) => {\n const effect = boundEffect(namespace, dispatch);\n return Object.keys(effectFuncs).reduce((effects, k) => {\n const func = effectFuncs[k];\n Object.defineProperty(func, 'name', {value: k});\n return {...effects, [k]: effect(func, types[k])};\n }, {});\n});\n\nexport const formatEvent = (evt) =>\n `${evt.type}(${evt.payload !== undefined ? safeStringify(evt.payload) : ''})`;\n\n// prettier-ignore\nexport const formatEventWithTime = (evt) =>\n `${evt.time.toLocaleTimeString()} - ${evt.type}(${evt.payload !== undefined ? safeStringify(evt.payload) : ''})`;\n","// constants\n\nconst recordBasename = 'Record';\nconst shapeBasename = 'Shape';\n\n// utils\n\nexport const safeStringify = (value) => {\n try {\n return JSON.stringify(value);\n } catch (e) {\n return value;\n }\n};\n\nexport const assertionToTest = (assertion) => (value) => {\n try {\n assertion(value);\n return true;\n } catch (e) {\n return false;\n }\n};\n\nexport const formatError = (er, msg = undefined) => (msg ? `${msg}\\n\\n${er}` : er);\n\nexport const assert = (type, value, name = 'value', context = null, msg = null) => {\n const message =\n `Expected ${name}${context ? ' in ' + context : ''} ` +\n `to be a member of ${type.toString()}. ` +\n `Got: ${safeStringify(value)}`;\n\n return type.assert(value, formatError(message, msg));\n};\n\nexport const createType = (name, predicate, assertion) => ({\n '@@name': name,\n\n toString: () => name,\n\n test: (value) => predicate(value),\n\n assert: (value, msg) => {\n if (assertion) {\n assertion(value, msg);\n return;\n }\n\n if (!predicate(value)) {\n throw new TypeError(msg || `${safeStringify(value)} is not a member of ${name}`);\n }\n },\n});\n\nexport const createTypeWithAssertion = (name, assertion) => {\n return createType(name, assertionToTest(assertion), assertion);\n};\n\n// primitive types\n\nexport const Function_ = createType('Function', (x) => typeof x === 'function');\n\nexport const Array_ = createType('Array', (x) => Array.isArray(x));\n\nexport const Object_ = createType(\n 'Object',\n (x) => Object.prototype.toString.call(x) === '[object Object]' && !!x,\n);\n\nexport const Boolean_ = createType(\n 'Boolean',\n (x) => Object.prototype.toString.call(x) === '[object Boolean]',\n);\n\nexport const String_ = createType(\n 'String',\n (x) => Object.prototype.toString.call(x) === '[object String]',\n);\n\nexport const Number_ = createType(\n 'Number',\n (x) => Object.prototype.toString.call(x) === '[object Number]',\n);\n\nexport const Date_ = createType(\n 'Date',\n (x) => (x) => Object.prototype.toString.call(x) === '[object Date]',\n);\n\nexport const RegExp_ = createType(\n 'RegExp',\n (x) => (x) => Object.prototype.toString.call(x) === '[object RegExp]',\n);\n\nexport const File_ = createType(\n 'File',\n (x) => Object.prototype.toString.call(x) === '[object File]',\n);\n\nexport const Promise_ = createType(\n 'Promise',\n (x) => (x) => Object.prototype.toString.call(x) === '[object Promise]',\n);\n\nexport const Error_ = createType(\n 'Error',\n (x) => Object.prototype.toString.call(x) === '[object Error]',\n);\n\nexport const primitives = {\n Boolean: Boolean_,\n String: String_,\n Number: Number_,\n Function: Function_,\n Object: Object_,\n Array: Array_,\n Date: Date_,\n RegExp: RegExp_,\n Promise: Promise_,\n File: File_,\n Error: Error_,\n};\nexport const P = primitives;\n\n// simple types\n\nexport const Any = createType('Any', () => true);\n\nexport const Null = createType('Null', (x) => x === null);\n\nexport const Undefined = createType('Undefined', (x) => typeof x === 'undefined');\n\nexport const Nullish = createType('Nullish', (x) => Null.test(x) || Undefined.test(x));\n\nexport const Defined = createType('Defined', (x) => !Nullish.test(x));\n\nexport const ObjectLike = createType('ObjectLike', (x) => typeof x === 'object' && !!x);\n\nexport const ValidDate = createType(\n 'ValidDate',\n (x) => Date_.test(x) && x.toString() !== 'Invalid Date',\n);\n\n// type constructors\n\nexport const Maybe = (type) =>\n createType(\n `Maybe:${type.toString()}`,\n (x) => Null.test(x) || Undefined.test(x) || type.test(x),\n );\n\nexport const Nullable = (type) =>\n createType(`Nullable:${type.toString()}`, (x) => Null.test(x) || type.test(x));\n\nexport const Union = (...types) => {\n const typeNames = types.map((t) => t.toString()).join(',');\n const name = `Union:${typeNames}`;\n\n const assertion = (x, msg) => {\n if (!types.reduce((acc, t) => acc || t.test(x), false)) {\n const ts = `[${typeNames}]`;\n // prettier-ignore\n const er = `Value '${safeStringify(x)}' is not a member of any of the types in ${name}: ${ts}`;\n throw new TypeError(formatError(er, msg));\n }\n };\n const pred = assertionToTest(assertion);\n\n return createType(name, pred, assertion);\n};\n\nexport const ObjectOf = (type) => {\n const name = `StrMap:${type.toString()}`;\n\n let assertion = function (x, msg) {\n assert(Object_, x, 'value', name);\n Object.keys(x).forEach((k) => assert(type, x[k], `property ${k}`, name, msg));\n };\n\n let test = assertionToTest(assertion);\n\n return createType(name, test, assertion);\n};\n\nexport const NamedShape = (name, fields) => {\n const _name = name ? `${shapeBasename}:${name}` : shapeBasename;\n\n let assertion = function (x, msg) {\n assert(Object_, x, 'value', _name, msg);\n Object.keys(fields).forEach((k) =>\n assert(fields[k], x[k], `property '${k}'`, _name, msg),\n );\n };\n\n let test = assertionToTest(assertion);\n\n const type = createType(_name, test, assertion);\n Object.assign(type, {fields});\n return type;\n};\n\nexport const Shape = (fields) => NamedShape(null, fields);\n\nexport const NamedRecord = (name, fields) => {\n const _name = name ? `${recordBasename}:${name}` : recordBasename;\n\n let assertion = function (x, msg) {\n assert(Object_, x, 'value', _name, msg);\n Object.keys(fields).forEach((k) => {\n if (!fields[k]) {\n const er = `Field ${k} is not allowed in ${_name}`;\n throw new TypeError(formatError(er, msg));\n }\n assert(fields[k], x[k], `property '${k}'`, _name, msg);\n });\n };\n\n let test = assertionToTest(assertion);\n\n const type = createType(_name, test, assertion);\n Object.assign(type, {fields});\n return type;\n};\n\nexport const Record = (fields) => NamedRecord(null, fields);\n\nexport const ArrayOf = (type) => {\n const name = `ArrayOf:${type.toString()}`;\n\n let assertion = function (xs, msg) {\n assert(Array_, xs, 'value', name, msg);\n xs.forEach((x, i) => assert(type, x, `value at index ${i}`, name, msg));\n };\n\n let test = assertionToTest(assertion);\n\n return createType(name, test, assertion);\n};\n\nexport const NamedTuple = (name, typeList) => {\n const len = typeList.length;\n const basename = name ? name : `${len}Tuple`;\n const _name = `${basename}:${typeList.map((t) => t.toString()).join(',')}`;\n\n let assertion = function (xs, msg) {\n assert(Array_, xs, 'value', _name, msg);\n\n if (xs.length !== len) {\n let er = `Expected ${len} value${len === 1 ? '' : 's'} in ${_name}. Got ${\n xs.length\n }: ${xs.toString()}`;\n throw new TypeError(formatError(er, msg));\n }\n\n xs.forEach((x, i) => assert(typeList[i], x, `value at index ${i}`, _name, msg));\n };\n\n let test = assertionToTest(assertion);\n\n return createType(_name, test, assertion);\n};\n\nexport const Tuple = (typeList) => NamedTuple(null, typeList);\n\nexport const Enum = (possibilities) => {\n const type = createType(`Enum:${JSON.stringify(possibilities)}`, (x) =>\n possibilities.some((y) => x === y),\n );\n Object.assign(type, {members: possibilities});\n return type;\n};\n\n// custom types\n\nexport const Action = NamedShape('Action', {type: String_});\n\nexport const PaginatedData = (dataType) =>\n NamedShape('PaginatedData', {data: dataType, pagination: Object_});\n","import {curry, lensPath, over as _over} from 'ramda';\n\nexport const over = curry((path, f, obj) => _over(lensPath(path), f, obj));\n","import {curry, pick} from 'ramda';\n\nexport const mapKeys = curry((f, object) => {\n let newObj = {};\n Object.keys(object).forEach((k) => {\n newObj[f(k)] = object[k];\n });\n return newObj;\n});\n\nexport const split = curry((keys, object) => {\n let otherProps = Object.assign({}, object);\n let matchingProps = {};\n keys.forEach((k) => {\n if (Object.prototype.hasOwnProperty.call(otherProps, k)) {\n matchingProps[k] = otherProps[k];\n delete otherProps[k];\n }\n });\n return [matchingProps, otherProps];\n});\n\nexport const spreadProp = curry((key, object) => {\n const newObj = Object.assign({}, object);\n delete newObj[key];\n Object.assign(newObj, object[key]);\n return newObj;\n});\n\nexport const dissocNulls = (object) => {\n const newObj = {};\n Object.keys(object).forEach((k) => {\n if (object[k] != null) {\n newObj[k] = object[k];\n }\n });\n return newObj;\n};\n\nexport const replace = (source, target) =>\n Object.assign({}, target, pick(Object.keys(target), source));\n\nexport const pickIf = (predicates, object) => {\n const newObj = {};\n Object.keys(predicates).forEach((k) => {\n if (predicates[k]) {\n newObj[k] = object[k];\n }\n });\n return newObj;\n};\n\nexport const pickIfNot = (predicates, object) => {\n const newObj = {};\n Object.keys(predicates).forEach((k) => {\n if (!predicates[k]) {\n newObj[k] = object[k];\n }\n });\n return newObj;\n};\n\nexport const singleValueObject = (value, keys) => {\n const obj = {};\n keys.forEach((k) => {\n obj[k] = value;\n });\n return obj;\n};\n","import {curry, pipe, prop} from 'ramda';\nimport {over} from 'utils/lenses';\nimport {spreadProp} from 'utils/objects';\n\nexport const getResponseData = curry((transf, res) => pipe(prop('data'), transf)(res));\n\nexport const mapResponseData = curry((transf, res) =>\n pipe(over(['data'], transf), spreadProp('meta'))(res),\n);\n\nexport const isApiTokenError = (error) =>\n !!error.response && error.response.status === 401;\n","import namespace from '../namespace';\nimport name from './name';\n\nexport default [...namespace, name];\n","export default 'notifications';\n","import {formatEventWithTime} from 'utils/events';\n\n// NOTE: could make this into an rxjs observable to enable fancier operations on events, instead of the post-event callbacks. the pre-event functions still need to be provided by the channel, so that they can be used for mapping and filtering events before they happen.\nexport default (conf = {}) => {\n const {handlers = [], listeners = []} = conf;\n\n const dispatch = (evt) => {\n let e = evt;\n for (const func of handlers) {\n e = func(e);\n if (!e) {\n return;\n }\n }\n e.effect(e.payload);\n listeners.forEach((func) => func(e));\n };\n\n const addHandler = (f) => {\n handlers.push(f);\n };\n\n const addListener = (f) => {\n listeners.push(f);\n };\n\n return {dispatch, addHandler, addListener};\n};\n\n// TODO: move the stuff below elsewhere!\n\nexport const injectStack = (evt) => {\n return {...evt, '@@stack': new Error().stack.split('\\n').slice(1)};\n};\n\nexport const createEventLog = (conf = {}) => {\n const {maxEntries = 1000} = conf;\n\n let events = [];\n\n const logEvent = (evt) => {\n // we mutate the event directly to spare unnecessary performance draw\n evt.time = new Date();\n events.push(evt);\n // we keep a buffer of 100 extra events for performance reasons, because continuously shifting the array on every event by 1 once the event limit is exceeded probably isn't super performant in JS.\n if (maxEntries && events.length > maxEntries + 100) {\n events.shift(101);\n }\n return evt;\n };\n\n return {logEvent, events};\n};\n\nexport const formatLatestEvents = (events, count = 20) => {\n const latest = events.slice(-count).reverse();\n return latest.map(formatEventWithTime).join('\\n');\n};\n\nexport const printLatestEvents = (events, count) => {\n // eslint-disable-next-line no-console\n console.info(formatLatestEvents(events, count));\n};\n","const createResolver = (initialServices = {}) => {\n let services = {};\n let awaiters = {};\n\n Object.assign(services, initialServices);\n\n const all = () => ({...services});\n\n const get = (key) => services[key];\n\n const set = (key, service) => {\n services[key] = service;\n\n if (awaiters[key]) {\n awaiters[key].forEach((resolver) => {\n resolver(service);\n });\n // we don't \"officially\" support re-setting services so delete the associated awaiters\n delete awaiters[key];\n }\n };\n\n const waitFor = (key) => {\n if (Object.prototype.hasOwnProperty.call(services, key)) {\n return Promise.resolve(services[key]);\n }\n if (!awaiters[key]) {\n awaiters[key] = [];\n }\n return new Promise((resolve) => {\n awaiters[key].push(resolve);\n });\n };\n\n return {all, get, set, waitFor};\n};\n\nexport default createResolver;\n","import createHistory from './createHistory';\nimport createChannel from './createChannel';\nimport createResolver from './createResolver';\n\nexport default createResolver({\n // channel is created here so that it's available as a static import to other modules. this file is \"low level\" and as such should have no dependencies to business code, so it necessarily gets evaluated before any modules that depend on the channel, and thus the channel will be available without having to wrap code that depends on it inside promises. any configuration for the channel is done later at the app root.\n channel: createChannel(),\n history: createHistory(),\n});\n","import {createBrowserHistory} from 'history';\n\nexport default () => {\n let history = createBrowserHistory();\n\n // nice hack - since the \"history\" package doesn't allow listening to pre-transition location, we keep a log of the previous value _after_ every transition!\n let currentLocation = history.location;\n history.prevLocation = null;\n history.listen((location) => {\n history.prevLocation = currentLocation;\n currentLocation = location;\n });\n\n return history;\n};\n","import namespace from './namespace';\nimport {scopedStore} from 'utils/redux';\nimport {update} from 'ramda';\n\nexport const initialState = [];\n\nexport const cases = {\n adjust: (st, all, spec) => {\n const iExisting = st.findIndex((n) => n.id === spec.id);\n const stNew = iExisting >= 0 ? update(iExisting, spec, st) : [...st, spec];\n return stNew;\n },\n\n remove: (st, all, id) => {\n return st.filter((n) => n.id !== id);\n },\n};\n\nexport const {actions, reducer} = scopedStore(namespace, cases, initialState);\n","import {actions} from './store';\nimport services from 'services';\nimport {bindActions} from 'utils/redux';\n\nexport default services\n .waitFor('store')\n .then((store) => bindActions(store.dispatch, actions));\n","export const shortDur = 3e3;\nexport const medDur = 6e3;\nexport const longDur = 9e3;\nexport const longerDur = 12e3;\nexport const longestDur = 15e3;\n","import ReactDom from 'react-dom';\nimport {curry} from 'ramda';\nimport * as Sentry from '@sentry/react';\nimport nEffs from 'modules/notifications/effects';\nimport {longerDur} from 'constants/notifications';\n\nconst isObj = (x) => x && typeof x === 'object';\n\nconst sentryNotify = (level, error) => {\n Sentry.captureException(error, {level});\n};\n\n// logError doesn't do full logging because it assumes error won't get caught again afterwards, this just logs everything\nexport const logErrorFully = (error) => {\n if (isObj(error)) error.wasLogged = true;\n console.error(error);\n sentryNotify('error', error);\n return error;\n};\n\nexport const logError = (error) => {\n if (isObj(error)) error.wasLogged = true;\n // note: no console.error calls necessary since errors are supposed to always be allowed to be propagated to execution top level where the browser can log them\n sentryNotify('error', error);\n return error;\n};\n\n// note: if the error doesn't have a description, consider it unexpected and log it as an error level event instead\nexport const logWarning = (error) => {\n if (!error || error.description === undefined) {\n return logErrorFully(error);\n }\n if (isObj(error)) error.wasLogged = true;\n console.warn(error);\n sentryNotify('warning', error);\n return error;\n};\n\n// note: if the error doesn't have a description, consider it unexpected and log it as an error level event instead\nexport const logInfo = (error) => {\n if (!error || error.description === undefined) {\n return logErrorFully(error);\n }\n if (isObj(error)) error.wasLogged = true;\n console.warn(error);\n sentryNotify('info', error);\n return error;\n};\n\nexport const quitWithMessage = (text) => {\n if (window.didQuitDueToError) {\n return;\n }\n window.didQuitDueToError = true;\n\n // if user navigates away from the error page using history, enforce a page refresh so that the app restarts\n window.addEventListener('popstate', () => {\n window.location.reload();\n });\n\n const root = document.querySelector('#root');\n\n root.setAttribute('hidden', '');\n ReactDom.unmountComponentAtNode(root);\n\n const body = document.querySelector('body');\n\n const errorPrev = document.querySelector('#app-error-view');\n if (errorPrev) body.removeChild(errorPrev);\n\n const container = document.createElement('div');\n container.id = 'app-error-view';\n /* prettier-ignore */\n /* eslint-disable max-len */\n container.setAttribute('style', `\n font-family: 'IBM Plex Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol';\n background: #f0f1f2;\n color: #3b3d42;\n font-size: 0.875rem;\n line-height: 1.625;\n height: 100%;\n padding: 1.25rem;\n `);\n\n const errors = document.createElement('div');\n\n const header = document.createElement('h1');\n header.textContent = 'Virhe';\n /* prettier-ignore */\n header.setAttribute('style', `\n font-size: 1.5rem;\n line-height: 2rem;\n font-weight: 800;\n `);\n errors.appendChild(header);\n\n const message = document.createElement('h2');\n message.textContent = text;\n /* prettier-ignore */\n message.setAttribute('style', `\n font-size: 1rem;\n line-height: 1.5rem;\n font-weight: 800;\n `);\n errors.appendChild(message);\n\n const quitInfo = document.createElement('div');\n quitInfo.textContent =\n 'Sovelluksen on sulkeuduttava. Kokeile päivittää sivu tai palata edelliselle sivulle.';\n errors.appendChild(quitInfo);\n\n const frontLink = document.createElement('a');\n frontLink.textContent = 'Etusivu';\n frontLink.setAttribute('href', '/');\n frontLink.style = `\n display: inline-block;\n margin-top: 1rem;\n color: #153f8e;\n font-weight: 800;\n `;\n errors.appendChild(frontLink);\n\n container.appendChild(errors);\n\n body.appendChild(container);\n};\n\nconst handleFatal = (error) => {\n logError(error);\n quitWithMessage((error && error.description) || 'Odottamaton virhe');\n if (isObj(error)) error._didCrash = true;\n return error;\n};\n\n// handle uncaught errors by attaching to global listeners\nexport const handleUncaught = (error) => {\n if (error && error._didCrash) {\n return;\n }\n handleFatal(error);\n};\n\n// handle fatal errors by quitting the app. also re-throw the error to stop any further execution.\nexport const handleAsFatal = (error) => {\n throw handleFatal(error);\n};\n\n// handle non-fatal errors that require notifying the user\nexport const warnEff = curry((warningEff, warningSpec, error) => {\n logWarning(error);\n const message = error.description || 'Odottamaton virhe';\n warningEff({...warningSpec, message});\n return error;\n});\n\n// handle \"non-errors\" that require notifying the user (like insufficient permissions)\nexport const informEff = curry((eff, spec, error) => {\n logInfo(error);\n const message = error.description || 'Odottamaton virhe';\n eff({...spec, message});\n return error;\n});\n\n// finalize promise or try-catch chains by catching any errors that weren't fatal and have already been handled. errors are considered handled if they've been logged earlier (and hopefully otherwise handled at the same time).\nexport const catchHandled = (error) => {\n if (!error || error._didCrash || !error.wasLogged) {\n throw error;\n }\n};\n\n// finalize promise or try-catch chains by catching any errors that weren't fatal. also, enforce blanket handling for errors that weren't explicitly handled (logged) earlier.\nexport const catchNonFatal = curry((handleUnhandled, error) => {\n if (!error || error._didCrash) {\n throw error;\n }\n if (!error.wasLogged) {\n logErrorFully(error);\n handleUnhandled(error);\n }\n});\n\n// useful as a default argument to catchNonFatal\nexport const unhandledNotifierEff = () => {\n nEffs.error({\n id: 'unexpected-caught',\n message:\n 'Odottamaton virhe. Sovelluksen toiminta saattaa häiriintyä jos et päivitä sivua',\n duration: longerDur,\n });\n};\n\nexport const catchNonFatalEff = (error) => catchNonFatal(unhandledNotifierEff, error);\n\n// these are useful as wrappers to effect functions\n\nexport const guardHandled =\n (func) =>\n async (...args) => {\n try {\n await func(...args);\n } catch (e) {\n catchHandled(e);\n }\n };\n\nexport const guardNonFatalEff =\n (func) =>\n async (...args) => {\n try {\n await func(...args);\n } catch (e) {\n catchNonFatalEff(e);\n }\n };\n","import {warnEff, informEff, logInfo} from 'io/errors';\nimport nEffs from 'modules/notifications/effects';\nimport {shortDur, medDur, longDur} from 'constants/notifications';\n\nexport const setPageTitleMessage = (msg) => {\n document.title = `${msg} - Tykki`;\n};\n\nexport const decorateWithNotificationsEff = (spec, promise) => {\n const {\n id,\n loading,\n success,\n suppressFailure = false,\n failureStyle = 'warning',\n successStyle = 'success',\n failureDuration,\n successDuration,\n // this is offered for convenience - sometimes you may have a helper function and you want to disable the handling there because the parent function takes care of it already\n disableEverything = false,\n } = spec;\n if (disableEverything) {\n return promise;\n }\n if (loading) {\n nEffs.loading({id, message: loading});\n }\n return promise\n .catch((e) => {\n const suppress =\n typeof suppressFailure === 'function' ? suppressFailure(e) : suppressFailure;\n if (suppress) {\n logInfo(e);\n if (loading) {\n nEffs.remove(id);\n }\n } else {\n const style = typeof failureStyle === 'function' ? failureStyle(e) : failureStyle;\n const dur =\n typeof failureDuration === 'function' ? failureDuration(e) : failureDuration;\n // TODO: could consider letting the caller decide between \"warn\" and \"inform\"\n if (style === 'error') {\n warnEff(nEffs.error, {id, duration: dur || longDur}, e);\n } else if (style === 'info') {\n informEff(nEffs.info, {id, duration: dur || medDur}, e);\n } else {\n warnEff(nEffs.warning, {id, duration: dur || medDur}, e);\n }\n }\n throw e;\n })\n .then((res) => {\n const successMsg = typeof success === 'function' ? success(res) : success;\n if (successMsg) {\n const dur =\n typeof successDuration === 'function' ? successDuration(res) : successDuration;\n if (successStyle === 'info') {\n nEffs.info({id, message: successMsg, duration: dur || medDur});\n } else {\n nEffs.success({id, message: successMsg, duration: dur || shortDur});\n }\n } else if (loading) {\n nEffs.remove(id);\n }\n return res;\n });\n};\n","import namespace from './namespace';\nimport {scopedStore} from 'utils/redux';\n\nexport const initialState = {\n initialized: false,\n apiToken: null,\n user: null,\n organization: null,\n organizations: [],\n organizationSites: [],\n pagination: null,\n loading: false,\n};\n\nexport const cases = {\n // the app is marked initialized as soon as the possible apiToken has been read and we know whether to show a login screen or not\n setApiToken: (st, all, apiToken) => {\n return {...st, apiToken, initialized: true};\n },\n\n setUser: (st, all, user) => {\n return {\n ...st,\n user,\n organization: user.organization,\n organizationSites: user.organization.sites,\n };\n },\n\n clearLogin: (st) => {\n return {...st, apiToken: null, user: null};\n },\n\n setOrganizations: (st, all, payload) => {\n return {\n ...st,\n organizations: payload.data,\n pagination: payload.meta,\n loading: false,\n };\n },\n};\n\nexport const {actions, reducer} = scopedStore(namespace, cases, initialState);\n","import {actions} from './store';\nimport services from 'services';\nimport {bindActions} from 'utils/redux';\n\nexport default services\n .waitFor('store')\n .then((store) => bindActions(store.dispatch, actions));\n","import {curry} from 'ramda';\n\nexport const describeError = curry((description, error) => {\n error.description = description;\n return error;\n});\n\nexport const describeThrow = curry((description, error) => {\n throw describeError(description, error);\n});\n\n// useful for managing control flow with promises.\nexport const handledError = (msg) => {\n let error = new Error(msg);\n error.wasLogged = true;\n // non-described errors are considered unexpected, so provide a default description for situations where there's no need to show the error's description to the user (can still use \"describeError\" additionally)\n error.description = '';\n return error;\n};\n","export default {\n cancel: 'Peruuta',\n save: 'Tallenna',\n processing: 'Käsitellään',\n deleting: 'Poistetaan',\n loading: 'Ladataan',\n saving: 'Tallennetaan',\n fetchFailed: 'Sisällön lataus epäonnistui. Kokeile päivittää sivu',\n opFailed: 'Toimenpide epäonnistui',\n opSuccess: 'Toimenpide onnistui',\n saveFailed: 'Tallennus epäonnistui',\n saveSuccess: 'Tallennettu',\n deleteFailed: 'Poisto epäonnistui',\n selectorPrompt: 'Valitse...',\n};\n","import {prop} from 'ramda';\nimport services from 'services';\nimport {describeThrow} from 'utils/errors';\nimport msgs from 'dicts/messages';\n\nlet httpJson = null;\nservices.waitFor('api').then((x) => (httpJson = x.httpJson));\n\nexport const getUser = () =>\n httpJson('get', '/users/me', {include: 'organization.sites'}, {})\n .catch(describeThrow(msgs.fetchFailed))\n .then(prop('data'));\n\nexport const logout = () =>\n httpJson('post', '/logout', {}).catch(describeThrow(msgs.opFailed));\n\nexport const getOrganizations = () =>\n httpJson('get', '/organizations', {}, {}).catch(describeThrow(msgs.fetchFailed));\n","import cookies from 'js-cookie';\nimport * as Sentry from '@sentry/react';\nimport {createEffects} from 'utils/events';\nimport {P} from 'utils/types';\nimport {isApiTokenError} from 'utils/app';\nimport {decorateWithNotificationsEff} from 'io/app';\nimport services from 'services';\nimport {guardHandled, logInfo, handleAsFatal} from 'io/errors';\nimport namespace from './namespace';\nimport _acts from './boundActions';\nimport {getUser, logout, getOrganizations} from './io';\n\nlet acts;\n_acts.then((x) => (acts = x));\n\nlet effects = {};\nlet types = {};\n\nconst clearStoredLogin = () => {\n cookies.remove('api_token', {domain: window.location.hostname});\n};\n\neffects.fetchOrganizations = async () => {\n const organizations = await decorateWithNotificationsEff(\n {id: 'get-orgs', failureStyle: 'warning'},\n getOrganizations(),\n );\n acts.setOrganizations(organizations);\n};\n\nconst afterApiTokenReceivalEff = guardHandled(async (apiToken) => {\n try {\n const user = await getUser();\n acts.setUser(user);\n Sentry.setUser({id: user.id, username: user.name, email: user.email});\n } catch (e) {\n // keep from crashing on invalid api token, handling is done in an api hook\n if (isApiTokenError(e)) {\n logInfo(e);\n throw e;\n }\n return handleAsFatal(e);\n }\n\n effects.fetchOrganizations();\n});\n\neffects.initialize = guardHandled(async () => {\n const apiToken = cookies.get('api_token');\n acts.setApiToken(apiToken);\n\n if (apiToken) {\n afterApiTokenReceivalEff(apiToken);\n }\n});\n\neffects.afterLogin = async (apiToken) => {\n acts.setApiToken(apiToken);\n cookies.set('api_token', apiToken, {\n domain: window.location.hostname,\n expires: 365,\n });\n afterApiTokenReceivalEff(apiToken);\n};\ntypes.afterLogin = P.String;\n\neffects.logout = guardHandled(async () => {\n try {\n await logout();\n } catch (e) {\n // fail silently\n logInfo(e);\n }\n acts.clearLogin();\n clearStoredLogin();\n});\n\nexport default createEffects(namespace, services.get('channel').dispatch, types, effects);\n","import React from 'react';\nimport {\n Avatar,\n Box,\n Spacer,\n IconButton,\n Icon,\n Text,\n Menu,\n MenuButton,\n MenuList,\n MenuItem,\n MenuDivider,\n Portal,\n Link,\n Flex,\n} from '@chakra-ui/react';\nimport {FiMenu} from 'react-icons/fi';\nimport {NavLink as RouterNavLink, Link as RouterLink} from 'react-router-dom';\nimport {ReactComponent as HLogo} from 'assets/logo-horizontal.svg';\n\nimport shadows from 'theme/foundations/shadows';\nimport {headerHeight, headerHeightMobile} from 'constants/styles';\nimport commonEffs from 'modules/common/effects';\n\nconst navLinkStyles = {\n px: 4,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n color: '#fff',\n fontWeight: 'bold',\n position: 'relative',\n _hover: {color: '#fff'},\n _active: {color: '#fff'},\n _focus: {color: '#fff', boxShadow: shadows.outline},\n};\n\nconst Logo = () => ;\n\nconst NavLink = ({to, exact = false, children}) => (\n \n {children}\n \n);\n\nconst Header = ({user, orgID, organizationId, openDrawer = () => {}}) => {\n const showOrganizationTab = orgID.includes(organizationId);\n return (\n \n \n \n \n\n \n Työmaat\n Työntekijät\n {showOrganizationTab ? (\n Organisaatiot\n ) : null}\n Raportointi\n \n\n }\n size=\"lg\"\n variant=\"unstyled\"\n height={headerHeightMobile}\n paddingLeft={6}\n paddingRight={6}\n />\n\n \n\n \n \n );\n};\n\nexport default Header;\n","import React from 'react';\nimport {Controller} from 'react-hook-form';\nimport ReactSelect from 'react-select';\nimport AsyncSelect from 'react-select/async';\nimport CreatableSelect from 'react-select/creatable';\nimport {Tag, Wrap, WrapItem, IconButton, Icon} from '@chakra-ui/react';\nimport {FiX} from 'react-icons/fi';\nimport colors from 'theme/foundations/color';\nimport shadows from 'theme/foundations/shadows';\n\nconst getSelectStyles = (hasError, renderMultiOutside, withLabel) => ({\n control: (base, state) => ({\n ...base,\n minHeight: withLabel ? '3rem' : '0',\n alignItems: withLabel ? 'flex-end' : 'center',\n backgroundColor: state.isFocused ? colors.gray['50'] : '#fff',\n fontSize: '0.875rem',\n // prettier-ignore\n boxShadow: hasError ? '0 0 0 1px #ef4444'\n : state.isFocused ? shadows.md\n : 0,\n // prettier-ignore\n borderColor: hasError ? '#ef4444'\n : state.isFocused ? colors.gray['600']\n : colors.gray['300'],\n // prettier-ignore\n '&:hover': {\n borderColor: hasError ? '#ef4444'\n : state.isFocused ? colors.gray['600']\n : colors.gray['400'],\n },\n }),\n valueContainer: (base, state) => ({\n ...base,\n paddingLeft: withLabel ? '13px' : '8px',\n paddingTop: withLabel ? 0 : '2px',\n paddingBottom: withLabel ? 0 : '2px',\n marginTop:\n state.isMulti && state.hasValue && !renderMultiOutside && withLabel ? '1.5rem' : 0,\n marginBottom:\n state.isMulti && state.hasValue && !renderMultiOutside && withLabel ? '0.5rem' : 0,\n }),\n option: (base) => ({\n ...base,\n color: colors.gray['800'],\n }),\n placeholder: (base) => ({\n ...base,\n color: colors.gray['800'],\n }),\n menu: (base) => ({\n ...base,\n zIndex: 20,\n fontSize: '0.875rem',\n }),\n menuPortal: (base) => ({\n ...base,\n zIndex: 9999,\n }),\n multiValue: (base) => ({\n ...base,\n display: renderMultiOutside ? 'none' : 'flex',\n backgroundColor: colors.gray['200'],\n fontWeight: 800,\n }),\n dropdownIndicator: (base) => ({\n ...base,\n color: colors.gray['600'],\n // prettier-ignore\n '&:hover': {\n color: colors.gray['700'],\n },\n }),\n clearIndicator: (base) => ({\n ...base,\n color: colors.gray['600'],\n // prettier-ignore\n '&:hover': {\n color: colors.gray['700'],\n },\n }),\n indicatorSeparator: (base) => ({\n ...base,\n backgroundColor: colors.gray['300'],\n }),\n});\n\nconst getRsValue = ({value, options = [], getOptionValue}) => {\n const rsifyVal = (v) =>\n options.find((o) => getOptionValue(o) === v) || {label: v, value: v};\n // prettier-ignore\n return value === '' ? null\n : value == null ? value\n : Array.isArray(value) ? value.map(rsifyVal)\n : rsifyVal(value);\n};\n\nconst SelectComp = ({async, creatable, innerRef, ...props}) =>\n async ? (\n \n ) : creatable ? (\n \n ) : (\n \n );\n\nconst Select = ({\n value,\n onChange = () => {},\n options,\n async,\n useOptionsAsValues,\n hasError,\n getOptionValue = (opt) => opt.value,\n getOptionLabel = (opt) => opt.label,\n noOptionsMessage = ({inputValue}) =>\n async && inputValue === '' ? 'Kirjoita hakeaksesi...' : 'Ei valintoja',\n placeholder = 'Valitse...',\n loadingMessage = () => 'Ladataan...',\n creatable,\n renderMultiOutside,\n innerRef,\n withLabel = true,\n ...rest\n}) => {\n let rsValue = value;\n let rsOnChange = onChange;\n\n // conversions between option objects and values\n if (!(async || useOptionsAsValues)) {\n rsValue = getRsValue({\n value,\n options,\n getOptionValue,\n });\n rsOnChange = (val, ...rest) => {\n // prettier-ignore\n const outVal = val == null ? val\n : Array.isArray(val) ? val.map(getOptionValue)\n : getOptionValue(val)\n onChange(outVal, ...rest);\n };\n }\n\n return (\n
\n ({\n ...theme,\n colors: {\n ...theme.colors,\n primary50: colors.gray['100'],\n primary25: colors.gray['100'],\n primary: colors.gray['100'],\n },\n })}\n noOptionsMessage={noOptionsMessage}\n loadingMessage={loadingMessage}\n getOptionValue={getOptionValue}\n getOptionLabel={getOptionLabel}\n innerRef={innerRef}\n {...rest}\n />\n {renderMultiOutside && Array.isArray(value) && (\n \n {value.map((v) => {\n const opt = getRsValue({\n value: v,\n options,\n getOptionValue,\n });\n return (\n \n \n {opt.label}\n onChange(value.filter((x) => x !== opt.value))}\n size=\"xs\"\n boxShadow=\"none\"\n borderRadius={0}\n ml={1}\n icon={}\n />\n \n \n );\n })}\n \n )}\n
\n );\n};\n\n// react-hook-form compatible react select\nconst SelectContainer = ({name, control, rules, standalone = !control, ...rest}) => {\n // use standalone prop when using select outside react-hook-form\n if (standalone) {\n return ;\n }\n\n return (\n (\n \n )}\n />\n );\n};\n\nexport default SelectContainer;\n","import React from 'react';\nimport {Controller} from 'react-hook-form';\nimport ReactDatepicker from 'react-datepicker';\nimport {Input, InputGroup, InputRightElement, Icon} from '@chakra-ui/react';\nimport {FiCalendar} from 'react-icons/fi';\nimport fi from 'date-fns/locale/fi';\nimport 'react-datepicker/dist/react-datepicker.css';\nimport 'styles/react-datepicker.css';\n\n// eslint-disable-next-line react/display-name\nconst CustomInput = React.forwardRef(({isClearable, ...inputProps}, ref) => (\n \n \n \n \n \n \n));\n\nconst Datepicker = ({isClearable, ...props}) => {\n return (\n }\n isClearable={isClearable}\n popperModifiers={{\n preventOverflow: {\n enabled: true,\n escapeWithReference: false,\n boundariesElement: 'viewport',\n },\n }}\n {...props}\n />\n );\n};\n\n// react-hook-form compatible react-datepicker that fits stylistically with chakra-ui\nconst DatepickerContainer = ({\n name,\n control,\n rules,\n defaultValue,\n standalone = !control,\n ...props\n}) => {\n // use standalone prop when using datepicker outside react-hook-form\n if (standalone) {\n return ;\n }\n\n return (\n (\n \n )}\n />\n );\n};\n\nexport default DatepickerContainer;\n","import React from 'react';\nimport {Button, IconButton, HStack, Icon, useMediaQuery} from '@chakra-ui/react';\nimport {\n FiChevronLeft,\n FiChevronRight,\n FiChevronsLeft,\n FiChevronsRight,\n} from 'react-icons/fi';\n\nconst PageButton = ({children, isActive, nonFunctioning, ...props}) => {\n return (\n \n );\n};\n\nconst Paginator = ({totalPages, currentPage, onPageSelect = () => {}, disabled}) => {\n const [isXs] = useMediaQuery('(max-width: 30em)');\n const maxButtons = isXs ? 2 : 4;\n const range = Math.floor(maxButtons / 2);\n\n const renderItems = (totalPages, currentPage, onPageSelect, maxButtons, disabled) => {\n let range = Math.floor(maxButtons / 2);\n let items = [];\n const max = totalPages <= maxButtons ? totalPages : maxButtons;\n\n let startingPage = currentPage > range ? currentPage - range : 1;\n\n const lastPage =\n max + startingPage <= totalPages ? max + startingPage - 1 : totalPages;\n\n const rangeBuffer = totalPages - (currentPage + range);\n\n startingPage =\n rangeBuffer < 0\n ? startingPage + rangeBuffer > 0\n ? startingPage + rangeBuffer\n : startingPage\n : startingPage;\n\n for (let i = startingPage; i <= lastPage; i++) {\n items.push(\n (i === currentPage ? null : onPageSelect(i))}\n disabled={disabled}\n >\n {i}\n ,\n );\n }\n\n return items;\n };\n\n return (\n \n }\n variant=\"pagination\"\n size=\"sm\"\n isDisabled={currentPage === 1 || disabled}\n onClick={() => onPageSelect(1)}\n />\n }\n variant=\"pagination\"\n size=\"sm\"\n isDisabled={currentPage <= 1 || disabled}\n onClick={() => onPageSelect(currentPage - 1)}\n />\n {renderItems(totalPages, currentPage, onPageSelect, maxButtons, disabled)}\n {currentPage < totalPages - range && totalPages > maxButtons && (\n \n ...\n \n )}\n {currentPage < totalPages - range && totalPages > maxButtons && (\n onPageSelect(totalPages)} disabled={disabled}>\n {totalPages}\n \n )}\n }\n variant=\"pagination\"\n size=\"sm\"\n isDisabled={currentPage >= totalPages || disabled}\n onClick={() => onPageSelect(currentPage + 1)}\n />\n }\n variant=\"pagination\"\n size=\"sm\"\n isDisabled={currentPage === totalPages || disabled}\n onClick={() => onPageSelect(totalPages)}\n />\n \n );\n};\n\nexport default Paginator;\n","import React from 'react';\nimport {\n Wrap,\n WrapItem,\n Box,\n useRadio,\n useRadioGroup,\n useMediaQuery,\n} from '@chakra-ui/react';\nimport {Controller} from 'react-hook-form';\n\nconst RadioButton = ({size, children, ...props}) => {\n const {getInputProps, getCheckboxProps} = useRadio(props);\n\n const input = getInputProps();\n const checkbox = getCheckboxProps();\n\n return (\n \n \n \n {children}\n \n \n );\n};\n\nconst RadioButtonGroup = ({\n name,\n options,\n value,\n defaultValue,\n onChange,\n size,\n disabled,\n direction = 'row',\n ...rest\n}) => {\n const {getRootProps, getRadioProps} = useRadioGroup({\n name: name,\n value: value,\n defaultValue: defaultValue,\n onChange: onChange,\n });\n\n const group = getRootProps();\n\n const [isXs] = useMediaQuery('(max-width: 30em)');\n\n return (\n \n {options.map((o) => {\n const radio = getRadioProps({value: o.value});\n return (\n \n \n {o.label}\n \n \n );\n })}\n \n );\n};\n\nconst RadioButtonGroupContainer = ({\n name,\n control,\n rules,\n defaultValue,\n standalone,\n ...props\n}) => {\n // use standalone prop when using outside react-hook-form\n if (standalone) {\n return ;\n }\n\n return (\n (\n \n )}\n />\n );\n};\n\nexport default RadioButtonGroupContainer;\n","import {pipe, keys, map, join, split, filter, fromPairs} from 'ramda';\n\nexport const encodeQuery = (obj) =>\n pipe(\n keys,\n map((k) => `${k}=${obj[k] != null ? encodeURIComponent(obj[k]) : ''}`),\n join('&'),\n (str) => (str.length ? `?${str}` : str),\n )(obj);\n\nexport const decodeQuery = pipe(\n (str) => (str.length ? str.substring(1) : str),\n split('&'),\n filter((x) => x !== ''),\n map(pipe(split('='), map(decodeURIComponent))),\n fromPairs,\n);\n\nexport const createReferrerUrl = (location) => {\n const {pathname, search, hash} = location;\n return `${pathname}${search}${hash}`;\n};\n\nexport const getReferrerUrl = (query) => {\n const {referrerUrl} = decodeQuery(query);\n if (!referrerUrl) {\n return null;\n }\n return referrerUrl;\n};\n\nexport const getReferrer = (query) => {\n const {referrer} = decodeQuery(query);\n if (!referrer) {\n return null;\n }\n return referrer;\n};\n\nexport const getReferrerTitle = (query) => {\n const {referrerTitle} = decodeQuery(query);\n if (!referrerTitle) {\n return null;\n }\n return referrerTitle;\n};\n\nexport const getActiveCrumb = (query) => {\n const {activeCrumb} = decodeQuery(query);\n if (!activeCrumb) {\n return null;\n }\n return activeCrumb;\n};\n","import React from 'react';\nimport {Link as RouterLink, withRouter} from 'react-router-dom';\nimport {Breadcrumb, BreadcrumbItem, BreadcrumbLink} from '@chakra-ui/react';\nimport {getReferrerUrl, getReferrerTitle} from 'utils/url';\n\n// Simple breadcrumbs component, max 2 levels (prev + active) based on referrerUrl\nconst Breadcrumbs = ({location, activeCrumbName}) => {\n const referrerUrl = getReferrerUrl(location.search);\n const referrerTitle = getReferrerTitle(location.search);\n\n return (\n \n {!!referrerUrl && !!referrerTitle && (\n \n \n {referrerTitle}\n \n \n )}\n \n {activeCrumbName}\n \n \n );\n};\n\nexport default withRouter(Breadcrumbs);\n","import React from 'react';\nimport {Box, Spinner} from '@chakra-ui/react';\n\nconst PageLoader = () => {\n return (\n \n \n \n );\n};\n\nexport default PageLoader;\n","import React from 'react';\nimport {Box} from '@chakra-ui/react';\n\n// Wrap Chakra's TabList around TabsHorizontalScroll to enable horizontal scroll for long tabs\nclass TabsHorizontalScroll extends React.Component {\n state = {\n scrollable: false,\n leftBlur: false,\n rightBlur: false,\n };\n\n scrollableRef = React.createRef();\n scrollableParentRef = React.createRef();\n\n handleResize = () => {\n const diff =\n this.scrollableRef.current.scrollWidth -\n this.scrollableParentRef.current.scrollWidth;\n\n if (\n this.scrollableRef.current.scrollWidth >\n this.scrollableParentRef.current.scrollWidth\n ) {\n this.setState({scrollable: true});\n\n if (this.scrollableRef.current.scrollLeft !== diff) {\n this.setState({rightBlur: true});\n }\n } else this.setState({scrollable: false});\n };\n\n handleScroll = (e) => {\n const diff = e.target.scrollWidth - this.scrollableParentRef.current.scrollWidth;\n\n // diff - 1 due android devices not hiding the rightblur correctly\n if (e.target.scrollLeft >= diff - 1) {\n this.setState({rightBlur: false});\n } else this.setState({rightBlur: true});\n\n if (e.target.scrollLeft === 0) {\n this.setState({leftBlur: false});\n } else this.setState({leftBlur: true});\n };\n\n componentDidMount() {\n if (\n this.scrollableRef.current.scrollWidth >\n this.scrollableParentRef.current.scrollWidth\n ) {\n this.setState({scrollable: true, rightBlur: true});\n }\n window.addEventListener('resize', this.handleResize);\n this.scrollableRef.current.addEventListener('scroll', this.handleScroll);\n }\n\n componentWillUnmount() {\n this.scrollableRef.current.removeEventListener('scroll', this.handleScroll);\n window.removeEventListener('resize', this.handleResize);\n }\n\n render() {\n const {scrollable, leftBlur, rightBlur} = this.state;\n\n return (\n \n {scrollable && leftBlur && (\n \n )}\n \n {this.props.children}\n \n {scrollable && rightBlur && (\n \n )}\n \n );\n }\n}\n\nexport default TabsHorizontalScroll;\n","import React from 'react';\nimport {HStack, Box} from '@chakra-ui/react';\nimport Breadcrumbs from './breadcrumbs';\n\nconst PageHeader = ({activeCrumbName, children}) => {\n return (\n \n \n \n \n {children}\n \n );\n};\n\nexport default PageHeader;\n","import React from 'react';\nimport {Box} from '@chakra-ui/react';\n\nconst Card = ({children, ...props}) => {\n return (\n \n {children}\n \n );\n};\n\nexport default Card;\n","import React from 'react';\nimport {Box, Flex, Text, Spacer} from '@chakra-ui/react';\n\nconst CardHeader = ({isMain = false, title, action, children}) => {\n return (\n \n \n {title ? (\n \n {title}\n \n ) : null}\n {children}\n \n {action}\n \n \n );\n};\n\nexport default CardHeader;\n","import React from 'react';\nimport {Divider, HStack, Stack} from '@chakra-ui/react';\n\nconst List = ({isHorizontal = false, children, ...other}) => {\n return isHorizontal ? (\n \n {children}\n \n ) : (\n } spacing=\"5\" {...other}>\n {children}\n \n );\n};\n\nexport default List;\n","import React from 'react';\nimport {SimpleGrid, Heading, GridItem, Flex, Stack} from '@chakra-ui/react';\n\nconst ListItem = ({isVertical = false, title, children, ...other}) => {\n return isVertical ? (\n \n \n {title}\n \n\n \n {children}\n \n \n ) : (\n \n \n {title}\n \n\n {children}\n \n );\n};\n\nexport default ListItem;\n","import React from 'react';\nimport {Divider, Stack} from '@chakra-ui/react';\n\nconst FileList = ({children}) => {\n return (\n }>\n {children}\n \n );\n};\n\nexport default FileList;\n","import React from 'react';\nimport {\n Center,\n IconButton,\n Link,\n Stack,\n Text,\n Menu,\n MenuList,\n MenuButton,\n MenuItem,\n MenuDivider,\n Grid,\n Icon,\n} from '@chakra-ui/react';\nimport {parseISO, format} from 'date-fns';\nimport {FiMoreHorizontal, FiFile} from 'react-icons/fi';\n\nconst File = ({\n children,\n modified,\n onOpen = () => {},\n onEdit = () => {},\n onDelete = () => {},\n}) => {\n const modifiedStr = modified ? format(parseISO(modified), 'd.M.yyyy') : '';\n\n return (\n onOpen()}\n >\n \n \n \n\n \n \n {children}\n \n\n \n {modifiedStr}\n \n \n\n \n \n );\n};\n\nexport default File;\n","import React from 'react';\nimport {Flex, Heading} from '@chakra-ui/react';\n\nconst ModalSubHeader = ({title, action}) => {\n return (\n \n {title}\n {action}\n \n );\n};\n\nexport default ModalSubHeader;\n","import namespace from '../namespace';\nimport name from './name';\n\nexport default [...namespace, name];\n","export default 'login';\n","import namespace from './namespace';\nimport {scopedStore} from 'utils/redux';\n\nexport const initialState = {\n loading: false,\n processing: false,\n};\n\nexport const cases = {\n setLoading: (st, all, loading) => {\n return {...st, loading};\n },\n setProcessing: (st, all, processing) => {\n return {...st, processing};\n },\n reset: (st) => {\n return initialState;\n },\n};\n\nexport const {actions, reducer} = scopedStore(namespace, cases, initialState);\n","import {actions} from './store';\nimport services from 'services';\nimport {bindActions} from 'utils/redux';\n\nexport default services\n .waitFor('store')\n .then((store) => bindActions(store.dispatch, actions));\n","import {decodeQuery, encodeQuery} from 'utils/url';\nimport services from 'services';\n\nconst history = services.get('history');\n\nconst editQuery = (mapper, location) => {\n const {pathname, search, hash} = location;\n const query = decodeQuery(search);\n const newSearch = encodeQuery(mapper(query));\n return `${pathname}${newSearch}${hash}`;\n};\n\nexport const pushQuery = (mapper) => {\n history.push(editQuery(mapper, window.location));\n};\n\nexport const replaceQuery = (mapper) => {\n history.replace(editQuery(mapper, window.location));\n};\n\nexport const getQuery = () => decodeQuery(window.location.search);\n","import services from 'services';\nimport {describeThrow} from 'utils/errors';\n\nlet httpJson = null;\nservices.waitFor('api').then((x) => (httpJson = x.httpJson));\n\nexport const sendResetLink = (body) =>\n httpJson('post', '/reset-password', {}, {body}).catch(\n describeThrow('Salasanan palauttaminen epäonnistui'),\n );\n\nexport const postResetPassword = ({token, ...data}) =>\n httpJson('post', `/reset-password/${token}`, {}, {body: data}).catch(\n describeThrow('Salasanan asettaminen epäonnistui'),\n );\n","import namespace from './namespace';\nimport {createEffects} from 'utils/events';\nimport services from 'services';\nimport {pipe} from 'ramda';\nimport _acts from './boundActions';\nimport {P, Record} from 'utils/types';\nimport {setPageTitleMessage, decorateWithNotificationsEff} from 'io/app';\nimport {warnEff, guardNonFatalEff, guardHandled} from 'io/errors';\nimport {getQuery} from 'io/history';\nimport commonEffs from 'modules/common/effects';\nimport nEffs from 'modules/notifications/effects';\nimport {longerDur} from 'constants/notifications';\nimport {describeError} from 'utils/errors';\nimport {sendResetLink, postResetPassword} from './io';\n\nlet acts;\n_acts.then((x) => (acts = x));\n\nlet httpJson = null;\nservices.waitFor('api').then((x) => (httpJson = x.httpJson));\n\nconst history = services.get('history');\n\nlet effects = {};\nlet types = {};\n\neffects.initialize = async () => {\n setPageTitleMessage('Kirjaudu sisään');\n};\n\neffects.login = guardNonFatalEff(async (credentials) => {\n acts.setLoading(true);\n\n let token;\n try {\n const res = await httpJson('post', '/login', {}, {body: credentials});\n token = res.token;\n } catch (e) {\n acts.setLoading(false);\n\n const msg =\n e.response && [401, 422].includes(e.response.status)\n ? 'Kirjautuminen epäonnistui - virheellinen sähköpostiosoite tai salasana'\n : 'Kirjautuminen epäonnistui';\n const eNew = describeError(msg, e);\n warnEff(nEffs.warning, {id: 'login-fail', duration: longerDur}, eNew);\n\n throw eNew;\n }\n\n acts.setLoading(false);\n\n commonEffs.afterLogin(token);\n});\ntypes.login = Record({email: P.String, password: P.String});\n\neffects.destroy = async () => {\n acts.reset();\n};\n\neffects.forgotPassword = guardHandled(async (data) => {\n acts.setProcessing(true);\n\n try {\n await decorateWithNotificationsEff(\n {\n id: 'forgot-password',\n failureStyle: 'error',\n success: 'Salasanan palautuslinkki on lähetetty sähköpostiisi',\n successDuration: longerDur,\n },\n sendResetLink(data),\n );\n history.replace('/');\n acts.setProcessing(false);\n } catch (e) {\n acts.setProcessing(false);\n throw e;\n }\n});\ntypes.forgotPassword = Record({email: P.String});\n\neffects.resetPassword = guardHandled(async (formData) => {\n acts.setProcessing(true);\n const {token} = getQuery();\n\n try {\n await decorateWithNotificationsEff(\n {\n id: 'reset-password',\n failureStyle: 'error',\n success: 'Salasana asetettu. Voit nyt kirjautua uudella salasanallasi.',\n successDuration: longerDur,\n },\n postResetPassword({token, ...formData}),\n );\n history.replace('/');\n acts.setProcessing(false);\n } catch (e) {\n acts.setProcessing(false);\n throw e;\n }\n});\ntypes.resetPassword = Record({\n email: P.String,\n password: P.String,\n password_confirmation: P.String,\n});\n\nexport default pipe(createEffects(namespace, services.get('channel').dispatch, types))(\n effects,\n);\n","var _defs, _path, _circle, _path2, _path3, _path4, _path5, _path6, _rect, _path7, _path8, _path9, _path10, _path11, _path12, _path13, _path14, _path15, _path16, _path17, _path18, _path19, _path20;\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 SvgLogoVertical(_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 id: \"Layer_1\",\n \"data-name\": \"Layer 1\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 188 235\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"style\", null, \".cls-1{fill:#153f8e;}.cls-2{fill:#2a69df;}.cls-3{fill:#fff;}\"))), title === undefined ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, \"Logo-vertivcal\") : title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n className: \"cls-1\",\n d: \"M100,55A13.86,13.86,0,1,0,85.76,78.78c4.93,3,22.8,4.51,31.38,5.1a2.39,2.39,0,0,0,2.19-3.67C114.75,72.94,104.9,57.94,100,55ZM97.42,69.71a5.57,5.57,0,1,1-1.92-7.64A5.57,5.57,0,0,1,97.42,69.71Z\"\n })), _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n className: \"cls-1\",\n cx: 136.66,\n cy: 93.05,\n r: 8.5,\n transform: \"translate(-27.03 69.78) rotate(-26.16)\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n className: \"cls-2\",\n d: \"M151.69,58.68a58.09,58.09,0,1,0-38.18,63.9,11.11,11.11,0,0,0,7.11-13.2h0a11.13,11.13,0,0,0-14.48-7.75c-1.08.38-2.19.71-3.32,1A35.91,35.91,0,1,1,129,58.72a34.26,34.26,0,0,1,.71,3.4,11.1,11.1,0,1,0,21.94-3.44Z\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n className: \"cls-3\",\n d: \"M45.25,153.85l-33.12,0a.71.71,0,0,0-.7.7v6.3a.7.7,0,0,0,.7.7l11.87,0,0,35.26a.7.7,0,0,0,.7.7l8,0a.69.69,0,0,0,.69-.69l0-35.26,11.88,0a.69.69,0,0,0,.69-.7v-6.3A.69.69,0,0,0,45.25,153.85Z\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n className: \"cls-3\",\n d: \"M83.61,153.79H75.1a.69.69,0,0,0-.63.41L70,163.94l-3.37,8.57h-.5L62.79,164l-4.46-9.72a.7.7,0,0,0-.63-.4H48.82a.7.7,0,0,0-.63,1L61.56,182l0,14.75a.7.7,0,0,0,.7.69h8a.69.69,0,0,0,.69-.7l0-14.75,13.29-27.22A.69.69,0,0,0,83.61,153.79Z\"\n })), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n className: \"cls-3\",\n d: \"M109,172.2l12.27-17.37a.69.69,0,0,0-.57-1.09h-8.8a.68.68,0,0,0-.57.3l-7.47,10.72L99.13,172h-.5l0-17.57a.69.69,0,0,0-.69-.69h-8a.7.7,0,0,0-.7.7l.07,42.26a.69.69,0,0,0,.69.69h8a.7.7,0,0,0,.7-.7l0-12.06,3.87-5.45L112,197a.68.68,0,0,0,.61.37l9,0a.69.69,0,0,0,.61-1Z\"\n })), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n className: \"cls-3\",\n d: \"M146.53,172.15l12.27-17.37a.7.7,0,0,0-.57-1.1h-8.8a.71.71,0,0,0-.57.3l-7.47,10.72L136.65,172h-.5l0-17.56a.7.7,0,0,0-.69-.7l-8,0a.69.69,0,0,0-.7.69l.07,42.26a.69.69,0,0,0,.69.7l8,0a.7.7,0,0,0,.7-.69l0-12.06,3.87-5.45L149.5,197a.68.68,0,0,0,.61.37h9a.7.7,0,0,0,.61-1Z\"\n })), _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n className: \"cls-3\",\n x: 167.16,\n y: 153.62,\n width: 9.38,\n height: 43.82,\n rx: 0.7,\n transform: \"translate(-0.26 0.25) rotate(-0.08)\"\n })), _path7 || (_path7 = /*#__PURE__*/React.createElement(\"path\", {\n className: \"cls-2\",\n d: \"M21.81,216.35v8.91h-1.2v-8.91H17.43v-1H25v1.05Z\"\n })), _path8 || (_path8 = /*#__PURE__*/React.createElement(\"path\", {\n className: \"cls-2\",\n d: \"M31.85,225.25V221.3l-3.44-6h1.37l2.67,4.79h0l2.65-4.8H36.5l-3.46,6v4Z\"\n })), _path9 || (_path9 = /*#__PURE__*/React.createElement(\"path\", {\n className: \"cls-2\",\n d: \"M44.19,225.4a4.44,4.44,0,0,1-1.75-.33,3.52,3.52,0,0,1-1.33-1,4.49,4.49,0,0,1-.85-1.61,7.13,7.13,0,0,1-.31-2.22,7.45,7.45,0,0,1,.3-2.22,4.66,4.66,0,0,1,.85-1.61,3.39,3.39,0,0,1,1.32-1,4.3,4.3,0,0,1,1.75-.34,4.51,4.51,0,0,1,1.75.33,3.42,3.42,0,0,1,1.33,1A4.66,4.66,0,0,1,48.1,218a7.13,7.13,0,0,1,.31,2.22,7.45,7.45,0,0,1-.3,2.22,4.49,4.49,0,0,1-.85,1.61,3.42,3.42,0,0,1-1.33,1A4.25,4.25,0,0,1,44.19,225.4Zm0-1.06a2.89,2.89,0,0,0,1.18-.23,2.68,2.68,0,0,0,.94-.66,3,3,0,0,0,.6-1,4.07,4.07,0,0,0,.21-1.35v-1.66a4.07,4.07,0,0,0-.21-1.35,3.2,3.2,0,0,0-.61-1,2.68,2.68,0,0,0-.94-.66,3.17,3.17,0,0,0-2.37,0,2.84,2.84,0,0,0-.94.67,2.92,2.92,0,0,0-.6,1,4.07,4.07,0,0,0-.21,1.35v1.66a3.86,3.86,0,0,0,.22,1.35,3,3,0,0,0,.6,1,3,3,0,0,0,.94.66A3.07,3.07,0,0,0,44.19,224.34ZM42.84,214a.7.7,0,0,1-.54-.18.71.71,0,0,1-.17-.49v-.17a.64.64,0,0,1,.17-.48.67.67,0,0,1,.54-.19.7.7,0,0,1,.54.18.69.69,0,0,1,.18.49v.17a.73.73,0,0,1-.17.49A.74.74,0,0,1,42.84,214Zm2.66,0a.7.7,0,0,1-.54-.18.69.69,0,0,1-.18-.49v-.17a.73.73,0,0,1,.17-.49.74.74,0,0,1,.55-.18.72.72,0,0,1,.54.18.73.73,0,0,1,.17.49v.17a.64.64,0,0,1-.17.48A.67.67,0,0,1,45.5,214Z\"\n })), _path10 || (_path10 = /*#__PURE__*/React.createElement(\"path\", {\n className: \"cls-2\",\n d: \"M59.46,225.21l-1-3h-4l-1,2.94H52.21l3.48-10h1.52l3.5,10Zm-3-8.86h-.07l-1.68,4.86h3.44Z\"\n })), _path11 || (_path11 = /*#__PURE__*/React.createElement(\"path\", {\n className: \"cls-2\",\n d: \"M64.76,225.2v-1h1.4v-8h-1.4v-1h4v1h-1.4v8h1.4v1Z\"\n })), _path12 || (_path12 = /*#__PURE__*/React.createElement(\"path\", {\n className: \"cls-2\",\n d: \"M76.4,220.28,75,221.86v3.32H73.8l0-10H75v5.3h0l1.43-1.73,3-3.57h1.47l-3.71,4.28,4,5.69H79.73Z\"\n })), _path13 || (_path13 = /*#__PURE__*/React.createElement(\"path\", {\n className: \"cls-2\",\n d: \"M92,225.16l-1-2.94h-4l-1,2.95H84.71l3.47-10h1.53l3.5,10Zm-3-8.85h-.07l-1.68,4.86h3.45Z\"\n })), _path14 || (_path14 = /*#__PURE__*/React.createElement(\"path\", {\n className: \"cls-2\",\n d: \"M100.33,220.25l-1.41,1.57v3.33h-1.2v-10h1.2v5.3h0l1.42-1.73,3-3.58h1.47l-3.7,4.28,4,5.69h-1.49Z\"\n })), _path15 || (_path15 = /*#__PURE__*/React.createElement(\"path\", {\n className: \"cls-2\",\n d: \"M109.16,225.13v-1h1.4v-8h-1.4v-1h4v1h-1.4v8h1.4v1Z\"\n })), _path16 || (_path16 = /*#__PURE__*/React.createElement(\"path\", {\n className: \"cls-2\",\n d: \"M119.41,225.12h-1.2l0-10h4a2.76,2.76,0,0,1,2,.73A2.81,2.81,0,0,1,125,218a3.12,3.12,0,0,1-.5,1.81,2.44,2.44,0,0,1-1.49.93l2.29,4.4h-1.36l-2.16-4.28H119.4Zm2.76-5.32a1.55,1.55,0,0,0,1.11-.37,1.4,1.4,0,0,0,.39-1.06v-.74a1.4,1.4,0,0,0-.4-1.06,1.54,1.54,0,0,0-1.11-.37h-2.77v3.59Z\"\n })), _path17 || (_path17 = /*#__PURE__*/React.createElement(\"path\", {\n className: \"cls-2\",\n d: \"M134.6,215.13v7.38a2.79,2.79,0,0,1-.2,1.14,2.35,2.35,0,0,1-.59.88,2.72,2.72,0,0,1-.9.55,3.32,3.32,0,0,1-1.16.19,2.73,2.73,0,0,1-1.86-.61A2.76,2.76,0,0,1,129,223l1.08-.26a2.12,2.12,0,0,0,.55,1.05,1.51,1.51,0,0,0,1.17.4,1.53,1.53,0,0,0,1.2-.47,2,2,0,0,0,.42-1.43v-6.13H130v-1.06Z\"\n })), _path18 || (_path18 = /*#__PURE__*/React.createElement(\"path\", {\n className: \"cls-2\",\n d: \"M146.22,225.08l-1-2.94h-4l-1,3H139l3.48-10H144l3.5,10Zm-3-8.85h-.07l-1.68,4.86h3.44Z\"\n })), _path19 || (_path19 = /*#__PURE__*/React.createElement(\"path\", {\n className: \"cls-2\",\n d: \"M152.92,215.1v6.18a3.73,3.73,0,0,0,.54,2.17,2.71,2.71,0,0,0,3.71,0,3.71,3.71,0,0,0,.53-2.17v-6.18h1.2V221a8.58,8.58,0,0,1-.19,1.88,3.42,3.42,0,0,1-.62,1.33A2.6,2.6,0,0,1,157,225a5,5,0,0,1-1.7.26,4.86,4.86,0,0,1-1.68-.26,2.49,2.49,0,0,1-1.09-.78,3.25,3.25,0,0,1-.59-1.33,9.24,9.24,0,0,1-.19-1.88V215.1Z\"\n })), _path20 || (_path20 = /*#__PURE__*/React.createElement(\"path\", {\n className: \"cls-2\",\n d: \"M167.14,225.22a4.28,4.28,0,0,1-2.07-.46,4.35,4.35,0,0,1-1.46-1.28l.89-.74a3.87,3.87,0,0,0,1.17,1.06,3,3,0,0,0,1.51.36,2.37,2.37,0,0,0,1.64-.51,1.8,1.8,0,0,0,.56-1.38,1.37,1.37,0,0,0-.43-1.09,3.21,3.21,0,0,0-1.41-.62l-.82-.18a4.78,4.78,0,0,1-2.09-.95,2.26,2.26,0,0,1-.73-1.79,2.72,2.72,0,0,1,.24-1.17,2.5,2.5,0,0,1,.68-.86,3.08,3.08,0,0,1,1-.52,4.72,4.72,0,0,1,1.34-.18,4.18,4.18,0,0,1,1.94.41,3.73,3.73,0,0,1,1.36,1.21l-.9.66a3.07,3.07,0,0,0-1-.9,3,3,0,0,0-1.46-.33,2.54,2.54,0,0,0-1.5.41,1.43,1.43,0,0,0-.55,1.23,1.3,1.3,0,0,0,.46,1.07,3.46,3.46,0,0,0,1.41.58l.82.18a4.24,4.24,0,0,1,2.13,1,2.44,2.44,0,0,1,.66,1.79,3.12,3.12,0,0,1-.24,1.24,2.53,2.53,0,0,1-.67.94,3.15,3.15,0,0,1-1.08.6A4.31,4.31,0,0,1,167.14,225.22Z\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgLogoVertical);\nexport default __webpack_public_path__ + \"static/media/Logo-vertical.0461360e.svg\";\nexport { ForwardRef as ReactComponent };","import namespace from './namespace';\nimport {scopedSelectors} from 'utils/redux';\n\nlet sels = {};\n\nsels.loading = (st) => st.loading;\n\nsels.processing = (st) => st.processing;\n\nexport default scopedSelectors(namespace, sels);\n","import React from 'react';\nimport {useForm} from 'react-hook-form';\nimport {Stack, FormControl, FormErrorMessage, FormLabel, Input} from '@chakra-ui/react';\n\nconst LoginForm = ({onSubmit, id}) => {\n const {\n handleSubmit,\n register,\n formState: {errors},\n } = useForm();\n\n return (\n \n );\n};\n\nexport default LoginForm;\n","export default __webpack_public_path__ + \"static/media/login-bg.b158136a.jpg\";","import {map} from 'ramda';\nimport namespace from './namespace';\nimport {createEffects} from 'utils/events';\nimport services from 'services';\nimport _acts from './boundActions';\nimport {P, Record, Maybe} from 'utils/types';\nimport cache from './cache';\n\nconst ShowArgs = Record(\n map((t) => Maybe(t), {\n onCancel: P.Function,\n onOk: P.Function,\n title: P.String,\n message: P.String,\n cancelText: P.String,\n okText: P.String,\n okStyle: P.String,\n okDisabled: P.Boolean,\n dangerText: P.String,\n }),\n);\n\nlet acts;\n_acts.then((x) => (acts = x));\n\nlet effects = {};\nlet types = {};\n\nconst clearCallbacks = () => {\n cache.update((c) => ({...c, onCancel: null, onOk: null}));\n};\n\neffects.show = async ({onCancel = null, onOk = null, ...conf}) => {\n cache.update((c) => ({...c, onCancel, onOk}));\n acts.show(conf);\n};\ntypes.show = ShowArgs;\n\neffects.ok = async () => {\n acts.reset();\n cache.read().onOk();\n clearCallbacks();\n};\n\neffects.cancel = async () => {\n acts.reset();\n cache.read().onCancel();\n clearCallbacks();\n};\n\nexport default createEffects(namespace, services.get('channel').dispatch, types, effects);\n","import React, {useEffect} from 'react';\nimport {pick} from 'ramda';\nimport {connect} from 'react-redux';\n//import {Link as RouterLink} from 'react-router-dom';\nimport {Flex, Divider, Box, Button, Stack, Text, useMediaQuery} from '@chakra-ui/react';\n\nimport {applyState} from 'utils/redux';\nimport effs from 'modules/login/effects';\nimport sels from 'modules/login/selectors';\n\nimport LoginForm from './components/login-form';\nimport bg from 'assets/login-bg.jpg';\nimport {ReactComponent as VLogo} from 'assets/Logo-vertical.svg';\n\nconst Login = ({loading}) => {\n useEffect(() => {\n effs.initialize();\n }, []);\n\n const [isMd] = useMediaQuery('(min-width: 48em)');\n\n return (\n \n \n \n \n \n \n Kirjaudu sisään\n \n \n \n \n \n \n \n {/**/}\n \n \n \n );\n};\n\nexport default connect(applyState(pick(['loading'], sels)))(Login);\n","import namespace from './namespace';\nimport {scopedSelectors} from 'utils/redux';\n\nlet sels = {};\n\nsels.notifications = (st) => st;\n\nexport default scopedSelectors(namespace, sels);\n","import React from 'react';\nimport {\n Box,\n Stack,\n Alert,\n AlertDescription,\n AlertIcon,\n CloseButton,\n Spinner,\n} from '@chakra-ui/react';\nimport {connect} from 'react-redux';\nimport {pick} from 'ramda';\nimport {applyState} from 'utils/redux';\nimport sels from 'modules/notifications/selectors';\nimport effs from 'modules/notifications/effects';\n\nconst typeToAlertStatus = {\n info: 'info',\n success: 'success',\n warning: 'warning',\n error: 'error',\n loading: 'info',\n};\n\nclass Notifications extends React.Component {\n render() {\n const {notifications} = this.props;\n\n return (\n \n \n {notifications.map(({id, type, message}) => (\n \n {type === 'loading' ? (\n \n ) : (\n \n )}\n {message}\n effs.remove(id)}\n position=\"absolute\"\n right=\"8px\"\n top=\"8px\"\n />\n \n ))}\n \n \n );\n }\n}\n\nexport default connect(applyState(pick(['notifications'], sels)))(Notifications);\n","import namespace from '../namespace';\nimport name from './name';\n\nexport default [...namespace, name];\n","export default 'confirmer';\n","import createCache from 'services/createCache';\n\nexport default createCache({\n onCancel: null,\n onOk: null,\n});\n","export default (initialState) => {\n let cache = initialState;\n\n return {\n update: (f) => {\n cache = f(cache);\n },\n read: () => cache,\n reset: () => {\n cache = initialState;\n },\n initial: initialState,\n };\n};\n","import namespace from './namespace';\nimport {scopedSelectors} from 'utils/redux';\nimport cache from './cache';\n\nlet sels = {};\n\nsels.opts = (st) => {\n const {onCancel, onOk} = cache.read();\n return {...st, showCancel: !!onCancel, showOk: !!onOk};\n};\n\nexport default scopedSelectors(namespace, sels);\n","import namespace from './namespace';\nimport {scopedStore} from 'utils/redux';\n\nexport const initialState = {\n show: false,\n title: '',\n message: '',\n cancelText: '',\n okText: '',\n okStyle: '',\n okDisabled: false,\n dangerText: '',\n};\n\nconst ensureTranslations = (fullState) => (state) => {\n return {\n ...state,\n title: 'Vahvista',\n message: 'Suorittamasi toiminto vaatii vahvistuksen',\n cancelText: 'Peruuta',\n okText: 'Vahvista',\n };\n};\n\nexport const cases = {\n show: (st, all, conf) => {\n const baseState = ensureTranslations(all)(initialState);\n return {...baseState, ...conf, show: true};\n },\n reset: (st) => {\n return initialState;\n },\n};\n\nexport const {actions, reducer} = scopedStore(namespace, cases, initialState);\n","import {actions} from './store';\nimport services from 'services';\nimport {bindActions} from 'utils/redux';\n\nexport default services\n .waitFor('store')\n .then((store) => bindActions(store.dispatch, actions));\n","import React, {useRef} from 'react';\nimport {\n AlertDialog,\n AlertDialogBody,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogContent,\n AlertDialogOverlay,\n AlertDialogCloseButton,\n Button,\n Text,\n} from '@chakra-ui/react';\nimport {connect} from 'react-redux';\nimport {pick} from 'ramda';\nimport {applyState} from 'utils/redux';\nimport sels from 'modules/confirmer/selectors';\nimport effs from 'modules/confirmer/effects';\n\nconst Confirmer = ({opts}) => {\n const cancelRef = useRef(null);\n\n const {\n show,\n showCancel,\n showOk,\n cancelText,\n okText,\n title,\n message,\n okStyle,\n okDisabled,\n dangerText,\n } = opts;\n\n if (!show) return null;\n\n return (\n effs.cancel()}\n preserveScrollBarGap\n >\n \n \n {title}\n \n \n {message}\n {dangerText ? (\n \n {dangerText}\n \n ) : null}\n \n \n {showCancel && (\n \n )}\n {showOk && (\n \n )}\n \n \n \n \n );\n};\n\nexport default connect(applyState(pick(['opts'], sels)))(Confirmer);\n","import React from 'react';\nimport {\n Box,\n Text,\n HStack,\n Spacer,\n Button,\n Icon,\n FormControl,\n FormLabel,\n Input,\n IconButton,\n Badge,\n Table,\n Thead,\n Tbody,\n Tr,\n Th,\n Td,\n Wrap,\n WrapItem,\n Stack,\n FormErrorMessage,\n} from '@chakra-ui/react';\nimport {\n FiPlusCircle,\n FiMinusCircle,\n FiChevronDown,\n FiChevronLeft,\n FiChevronRight,\n FiChevronUp,\n FiEdit,\n FiSearch,\n FiFile,\n FiCalendar,\n FiMoreHorizontal,\n FiX,\n} from 'react-icons/fi';\nimport {useForm} from 'react-hook-form';\nimport {\n Content,\n ReactDatepicker,\n ReactSelect,\n RadioButtonGroup,\n Paginator,\n} from 'components';\n\nconst Styles = () => {\n const {\n handleSubmit,\n register,\n formState: {errors},\n control,\n } = useForm();\n\n const onSubmit = (form) => console.log(form);\n\n return (\n \n \n \n \n \n Textstyles\n \n\n \n Heading 1\n \n \n Heading 2\n \n \n Heading 3\n \n \n Subheading\n \n \n Body\n \n \n Small\n \n \n Caption\n \n\n \n Label\n \n \n\n \n \n Buttons\n \n\n \n Base\n \n\n \n \n }>w/icon\n } />\n \n\n \n Primary\n \n\n \n \n }>\n w/icon\n \n } />\n \n\n \n Button sizes\n \n\n \n \n \n \n \n \n\n \n \n Badge\n \n\n \n Base\n Warning\n Danger\n Success\n Muted\n \n \n \n\n \n \n \n Forms\n \n\n \n \n\n \n \n UI Icons\n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n Feather icons - More icons\n \n https://react-icons.github.io/react-icons/icons?name=fi\n \n \n \n\n \n \n \n Table\n \n }>Add new\n \n\n \n \n \n Large input\n \n \n \n \n \n Large input\n \n \n \n \n\n \n \n \n Name | \n Address | \n City | \n Status | \n | \n
\n \n \n \n \n Kohteen nimi\n | \n Kaukokatu 12 C 12 | \n Helsinki | \n \n Base\n | \n \n }\n />\n | \n
\n \n \n Kohteen nimi\n | \n Kaukokatu 12 C 12 | \n Helsinki | \n \n Base\n | \n \n }\n />\n | \n
\n \n \n Kohteen nimi\n | \n Kaukokatu 12 C 12 | \n Helsinki | \n \n Base\n | \n \n }\n />\n | \n
\n \n
\n \n \n console.log(pageNum)}\n />\n \n \n \n \n \n );\n};\n\nexport default Styles;\n","import selectors from './selectors';\nimport services from 'services';\nimport {bindSelectors} from 'utils/redux';\n\nexport default services\n .waitFor('store')\n .then((store) => bindSelectors(store.getState, selectors));\n","import namespace from '../namespace';\nimport name from './name';\n\nexport default [...namespace, name];\n","export default 'sites';\n","import namespace from '../namespace';\nimport name from './name';\n\nexport default [...namespace, name];\n","export default 'sitesPage';\n","export const emptyPagination = {\n current_page: 1,\n last_page: 1,\n per_page: 0,\n total: 0,\n};\n","import namespace from './namespace';\nimport {scopedStore} from 'utils/redux';\nimport {emptyPagination} from 'constants/pagination';\nimport {startOfMonth, endOfMonth} from 'date-fns';\nimport {includes, reject, append, equals} from 'ramda';\n\nexport const initialState = {\n query: {\n page: 1,\n sort: 'name',\n 'filter[name]': '',\n include: 'subContractors,users',\n },\n contractSitesQuery: {\n page: 1,\n sort: 'name',\n 'filter[contractsitename]': '',\n },\n processing: false,\n loading: false,\n contractSitesLoading: false,\n siteModalOpen: false,\n sites: [],\n contractSites: [],\n pagination: emptyPagination,\n contractSitesPagination: emptyPagination,\n contractNoticeModalOpen: false,\n siteSelection: [],\n contractNoticeRows: [],\n contractNoticeLoading: false,\n contractNoticeDateRange: {\n startDate: startOfMonth(new Date()),\n endDate: endOfMonth(new Date()),\n },\n contractNoticeUrl: null,\n employeeNoticeModalOpen: false,\n employeeSelection: [],\n employeeNoticeRows: [],\n employeeNoticeLoading: false,\n employeeNoticeQuery: {\n startDate: startOfMonth(new Date()),\n endDate: endOfMonth(new Date()),\n },\n employeeNoticeUrl: null,\n};\n\nexport const cases = {\n updateQuery: (st, all, payload) => {\n return {\n ...st,\n query: {...st.query, ...payload},\n loading: true,\n };\n },\n\n updateContractSitesQuery: (st, all, payload) => {\n return {\n ...st,\n contractSitesQuery: {...st.contractSitesQuery, ...payload},\n contractSitesLoading: true,\n };\n },\n\n setSites: (st, all, payload) => {\n return {\n ...st,\n sites: payload.data,\n pagination: payload.pagination,\n loading: false,\n };\n },\n\n setContractSites: (st, all, payload) => {\n return {\n ...st,\n contractSites: payload.data,\n contractSitesPagination: payload.contractSitesPagination,\n contractSitesLoading: false,\n };\n },\n\n toggleSiteModal: (st) => {\n return {...st, siteModalOpen: !st.siteModalOpen};\n },\n\n setProcessing: (st, all, processing) => {\n return {...st, processing};\n },\n\n setLoading: (st, all, loading) => {\n return {...st, loading};\n },\n\n setContractSitesLoading: (st, all, contractSitesLoading) => {\n return {...st, contractSitesLoading};\n },\n\n setEmployeeNoticeUrl: (st, all, url) => {\n return {...st, employeeNoticeUrl: url};\n },\n\n openEmployeeNoticeModal: (st, all) => {\n return {...st, employeeNoticeModalOpen: true, employeeNoticeLoading: true};\n },\n\n closeEmployeeNoticeModal: (st, all) => {\n return {\n ...st,\n employeeNoticeModalOpen: false,\n employeeNoticeLoading: false,\n employeeSelection: initialState.employeeSelection,\n employeeNoticeRows: initialState.employeeNoticeRows,\n employeeNoticeQuery: initialState.employeeNoticeQuery,\n employeeNoticeUrl: initialState.employeeNoticeUrl,\n };\n },\n\n setEmployeeNoticeRows: (st, all, employeeNoticeRows) => {\n return {...st, employeeNoticeRows, employeeNoticeLoading: false};\n },\n\n selectEmployees: (st, all, employees) => {\n let selection = st.employeeSelection;\n\n employees.forEach((e) => {\n if (includes(e.id, selection)) {\n selection = !e.selected ? reject(equals(e.id), selection) : selection;\n } else {\n selection = e.selected ? append(e.id, selection) : selection;\n }\n });\n\n return {...st, employeeSelection: selection};\n },\n\n clearEmployeeSelection: (st) => {\n return {...st, employeeSelection: initialState.employeeSelection};\n },\n\n updateEmployeeNoticeQuery: (st, all, payload) => {\n return {\n ...st,\n employeeNoticeQuery: {...st.employeeNoticeQuery, ...payload},\n employeeNoticeLoading: true,\n };\n },\n\n selectSubcontractors: (st, all, subContractors) => {\n let selection = st.subContractorSelection;\n\n subContractors.forEach((s) => {\n if (includes(s.id, selection)) {\n selection = !s.selected ? reject(equals(s.id), selection) : selection;\n } else {\n selection = s.selected ? append(s.id, selection) : selection;\n }\n });\n\n return {...st, subContractorSelection: selection};\n },\n\n setContractNoticeRows: (st, all, contractNoticeRows) => {\n return {...st, contractNoticeRows, contractNoticeLoading: false};\n },\n\n clearSiteSelection: (st) => {\n return {...st, siteSelection: []};\n },\n\n updateContractNoticeDateRange: (st, all, payload) => {\n return {\n ...st,\n contractNoticeDateRange: {...st.contractNoticeDateRange, ...payload},\n contractNoticeLoading: true,\n };\n },\n\n selectSites: (st, all, sites) => {\n let selection = st.siteSelection;\n\n sites.forEach((e) => {\n if (includes(e.id, selection)) {\n selection = !e.selected ? reject(equals(e.id), selection) : selection;\n } else {\n selection = e.selected ? append(e.id, selection) : selection;\n }\n });\n\n return {...st, siteSelection: selection};\n },\n\n openContractNoticeModal: (st, all) => {\n return {...st, contractNoticeModalOpen: true, contractNoticeLoading: true};\n },\n\n setContractNoticeUrl: (st, all, url) => {\n return {...st, contractNoticeUrl: url};\n },\n\n closeContractNoticeModal: (st, all) => {\n return {\n ...st,\n contractNoticeModalOpen: false,\n contractNoticeLoading: false,\n subContractorSelection: [],\n contractNoticeRows: initialState.contractNoticeRows,\n contractNoticeDateRange: initialState.contractNoticeDateRange,\n };\n },\n\n reset: (st) => {\n return initialState;\n },\n};\n\nexport const {actions, reducer} = scopedStore(namespace, cases, initialState);\n","import {actions} from './store';\nimport services from 'services';\nimport {bindActions} from 'utils/redux';\n\nexport default services\n .waitFor('store')\n .then((store) => bindActions(store.dispatch, actions));\n","import {evolve} from 'ramda';\nimport {replace} from 'utils/objects';\nimport {initialState} from './store';\nimport {startOfDay, endOfDay} from 'date-fns';\n\nexport const parseUrlQuery = (query) => {\n const vals = evolve(\n {\n page: Number,\n },\n query,\n );\n return replace(vals, initialState.query);\n};\n\nexport const formatFetchableQuery = (query) => {\n return query;\n};\n\nexport const formatFetchableEmployeeNoticesQuery = (query, site) => {\n return {\n groupByUser: true,\n 'filter[siteId]': site?.id,\n 'filter[startDateBetween]': [\n query.startDate ? startOfDay(query.startDate).toISOString() : null,\n query.endDate ? endOfDay(query.endDate).toISOString() : null,\n ],\n 'filter[processed]': 0,\n 'filter[organizationId]': query.organizationId,\n };\n};\n\nexport const formatContractNoticeQuery = (dateRange, site) => {\n return {\n groupByOrganization: true,\n siteId: site.id,\n 'filter[startDateBetween]': [\n dateRange.startDate ? startOfDay(dateRange.startDate).toISOString() : null,\n dateRange.endDate ? endOfDay(dateRange.endDate).toISOString() : null,\n ],\n };\n};\n","import {createSelector} from 'reselect';\nimport namespace from './namespace';\nimport {scopedSelectors} from 'utils/redux';\nimport {formatFetchableQuery} from './utils';\n\nlet sels = {};\n\nsels.processing = (st) => st.processing;\n\nsels.loading = (st) => st.loading;\n\nsels.siteModalOpen = (st) => st.siteModalOpen;\n\nsels.query = (st) => st.query;\n\nsels.contractSitesQuery = (st) => st.contractSitesQuery;\n\nsels.queryFetchable = createSelector(sels.query, (q) => formatFetchableQuery(q));\n\nsels.contractSitesQueryFetchable = createSelector(sels.contractSitesQuery, (q) =>\n formatFetchableQuery(q),\n);\n\nsels.sites = (st) => st.sites;\n\nsels.contractSites = (st) => st.contractSites;\n\nsels.pagination = (st) => st.pagination;\n\nsels.contractSitesPagination = (st) => st.contractSitesPagination;\n\nsels.employeeNoticeModalOpen = (st) => st.employeeNoticeModalOpen;\n\nsels.employeeSelection = (st) => st.employeeSelection;\n\nsels.employeeNoticeRows = (st) => st.employeeNoticeRows;\n\nsels.employeeNoticeLoading = (st) => st.employeeNoticeLoading;\n\nsels.employeeNoticeUrl = (st) => st.employeeNoticeUrl;\n\nsels.employeeNoticeQuery = (st) => st.employeeNoticeQuery;\n\n// sels.employeeNoticeQueryFetchable = createSelector(\n// [sels.employeeNoticeQuery, sels.site],\n// (query, site) => formatFetchableEmployeeNoticesQuery(query, site),\n// );\n\nsels.contractNoticeLoading = (st) => st.contractNoticeLoading;\n\nsels.contractNoticeModalOpen = (st) => st.contractNoticeModalOpen;\n\nsels.contractNoticeRows = (st) => st.contractNoticeRows;\n\nsels.siteSelection = (st) => st.siteSelection;\n\nsels.contractNoticeUrl = (st) => st.contractNoticeUrl;\n\nsels.contractNoticeDateRange = (st) => st.contractNoticeDateRange;\n\nsels.selectedSites = createSelector(\n [sels.sites, sels.siteSelection],\n (sites, siteSelection) => {\n const selectedSites = sites.filter((site) => {\n return siteSelection.some((siteId) => {\n return siteId === site.id;\n });\n });\n return selectedSites;\n },\n);\n\nsels.selectedContractSites = createSelector(\n [sels.contractSites, sels.siteSelection],\n (contractSites, siteSelection) => {\n const selectedSites = contractSites.filter((site) => {\n return siteSelection.some((siteId) => {\n return siteId === site.id;\n });\n });\n return selectedSites;\n },\n);\n\nsels.selectedSitesToSend = createSelector([sels.selectedSites], (selectedSites) => {\n const sitesToSend = selectedSites.map((site) => ({\n id: site.id,\n subContractors: site.subContractors.map((subContractor) => subContractor.id),\n }));\n return sitesToSend;\n});\n\nsels.selectedEmployeeNoticeSites = createSelector(\n [sels.selectedSites, sels.selectedContractSites],\n (selectedSites, selectedContractSites) => {\n const mappedSites = selectedSites.map((site) => ({\n id: site.id,\n employees: site.users.map((user) => user.id),\n }));\n\n const mappedContractSites = selectedContractSites.map((site) => ({\n id: site.id,\n employees: site.users.map((user) => user.id),\n }));\n\n return [...mappedSites, ...mappedContractSites];\n },\n);\n// sels.contractNoticeQueryFetchable = createSelector(\n// [sels.contractNoticeQuery, sels.site],\n// (dateRange, site) => formatContractNoticeQuery(dateRange, site),\n// );\n\nexport default scopedSelectors(namespace, sels);\n","import selectors from './selectors';\nimport services from 'services';\nimport {bindSelectors} from 'utils/redux';\n\nexport default services\n .waitFor('store')\n .then((store) => bindSelectors(store.getState, selectors));\n","import {prop} from 'ramda';\nimport services from 'services';\nimport {describeThrow} from 'utils/errors';\nimport msgs from 'dicts/messages';\n\nlet httpJson = null;\nservices.waitFor('api').then((x) => (httpJson = x.httpJson));\n\nexport const getSites = (query) =>\n httpJson('get', '/sites', {...query, type: 'organization'}).catch(\n describeThrow(msgs.fetchFailed),\n );\n\nexport const getContractSites = (query) =>\n httpJson('get', '/sites', {...query, type: 'contractSites'}).catch(\n describeThrow(msgs.fetchFailed),\n );\n\nexport const postSite = (body) =>\n httpJson('post', '/sites', {}, {body})\n .catch(describeThrow(msgs.saveFailed))\n .then(prop('data'));\n\nexport const deleteSite = (id) =>\n httpJson('delete', `/sites/${id}`).catch(describeThrow(msgs.deleteFailed));\n\nexport const sendContractNotice = ({data}) =>\n httpJson(\n 'post',\n `/sites/sendContractNotice`,\n {},\n {\n body: data,\n },\n )\n .catch(describeThrow(msgs.opSuccess))\n .then(prop('data'));\n\nexport const sendEmployeeNotice = ({data}) =>\n httpJson(\n 'post',\n `/sites/sendEmployeeNotice`,\n {},\n {\n body: data,\n },\n )\n .catch(describeThrow(msgs.opSuccess))\n .then(prop('data'));\n","import {mergeLeft} from 'ramda';\nimport services from 'services';\nimport {P} from 'utils/types';\nimport {createEffects} from 'utils/events';\nimport {getQuery, pushQuery} from 'io/history';\nimport {guardHandled} from 'io/errors';\nimport {setPageTitleMessage, decorateWithNotificationsEff} from 'io/app';\nimport msgs from 'dicts/messages';\nimport _commonSels from 'modules/common/boundSelectors';\nimport confirmerEffs from 'modules/confirmer/effects';\nimport namespace from './namespace';\nimport _acts from './boundActions';\nimport _sels from './boundSelectors';\nimport {parseUrlQuery} from './utils';\nimport {\n getSites,\n postSite,\n deleteSite,\n getContractSites,\n sendContractNotice,\n sendEmployeeNotice,\n} from './io';\n\nlet acts, sels, commonSels;\n_acts.then((x) => (acts = x));\n_sels.then((x) => (sels = x));\n_commonSels.then((x) => (commonSels = x));\n\nlet effects = {};\nlet types = {};\n\nconst fetchSites = (notifyOpts = {}) => {\n acts.setLoading(true);\n\n return decorateWithNotificationsEff(\n {id: 'get-sites', failureStyle: 'warning', ...notifyOpts},\n getSites(sels.queryFetchable()),\n ).then(({data, meta}) => {\n acts.setSites({data, pagination: meta});\n });\n};\n\nconst fetchContractSites = (notifyOpts = {}) => {\n acts.setContractSitesLoading(true);\n\n return decorateWithNotificationsEff(\n {id: 'get-contractSites', failureStyle: 'warning', ...notifyOpts},\n getContractSites(sels.contractSitesQueryFetchable()),\n ).then(({data, meta}) => {\n acts.setContractSites({data, contractSitesPagination: meta});\n });\n};\n\neffects.initialize = guardHandled(async () => {\n setPageTitleMessage('Työmaat');\n\n const query = parseUrlQuery(getQuery());\n acts.updateQuery(query);\n acts.updateContractSitesQuery(query);\n\n await fetchSites();\n await fetchContractSites();\n});\n\neffects.destroy = async () => {\n acts.reset();\n};\n\neffects.updateQuery = guardHandled(async (query) => {\n acts.updateQuery(query);\n pushQuery(mergeLeft(sels.query()));\n\n await fetchSites();\n});\ntypes.updateQuery = P.Object;\n\neffects.updateContractSitesQuery = guardHandled(async (contractSitesQuery) => {\n acts.updateContractSitesQuery(contractSitesQuery);\n pushQuery(mergeLeft(sels.contractSitesQuery()));\n\n await fetchContractSites();\n});\ntypes.updateContractSitesQuery = P.Object;\n\neffects.createSite = guardHandled(async (formData) => {\n const locationCoords = formData?.location;\n const splittedCoords = locationCoords ? locationCoords.split(',') : 0;\n const allowedRadius = formData.allowedRadius ? formData.allowedRadius : 0;\n const checkLocation = formData.checkLocation ? formData.checkLocation : 0;\n\n const {location, ...data} = formData;\n\n try {\n acts.setProcessing(true);\n await decorateWithNotificationsEff(\n {\n id: 'create-site',\n failureStyle: 'error',\n success: 'Tallennettu',\n },\n postSite({\n ...data,\n checkLocation: checkLocation,\n allowedRadius: allowedRadius,\n latitude: parseFloat(splittedCoords[0]),\n longitude: parseFloat(splittedCoords[1]),\n organizationId: commonSels.organizationId(),\n }),\n );\n acts.toggleSiteModal();\n acts.setProcessing(false);\n } catch (e) {\n acts.setProcessing(false);\n throw e;\n }\n\n await fetchSites();\n});\ntypes.createSite = P.Object;\n\neffects.removeSite = (site) => {\n const onConfirm = guardHandled(async () => {\n try {\n acts.setProcessing(true);\n await decorateWithNotificationsEff(\n {\n id: 'remove-site',\n failureStyle: 'error',\n loading: msgs.deleting,\n success: 'Työmaa poistettu',\n },\n deleteSite(site.id),\n );\n acts.setProcessing(false);\n } catch (e) {\n acts.setProcessing(false);\n throw e;\n }\n\n await fetchSites();\n });\n\n confirmerEffs.show({\n message: `Poistetaanko työmaa ${site.name}?`,\n okText: 'Poista',\n okStyle: 'danger',\n cancelText: msgs.cancel,\n onCancel: () => {},\n onOk: onConfirm,\n });\n};\ntypes.removeSite = P.Object;\n\neffects.toggleSiteModal = () => {\n acts.toggleSiteModal();\n};\n\neffects.selectSites = (sites) => {\n acts.selectSites(sites);\n};\ntypes.selectSites = P.Array;\n\neffects.clearSubContractorSelection = () => {\n acts.clearSiteSelection();\n};\n\neffects.openContractNoticeModal = guardHandled(async () => {\n acts.openContractNoticeModal();\n //await fetchContractNoticeRows();\n});\n\neffects.closeContractNoticeModal = guardHandled(async () => {\n acts.closeContractNoticeModal();\n});\n\neffects.updateContractNoticeDateRange = guardHandled(async (dateRange) => {\n acts.updateContractNoticeDateRange(dateRange);\n //await fetchContractNoticeRows();\n});\ntypes.updateContractNoticeDateRange = P.Object;\n\neffects.sendContractNotice = async () => {\n const sitesToSend = sels.selectedSitesToSend();\n\n const organizationId = commonSels.organizationId();\n const {startDate, endDate} = sels.contractNoticeDateRange();\n const data = {\n organizationId,\n siteIds: sitesToSend,\n startDate: startDate.toISOString(),\n endDate: endDate.toISOString(),\n };\n\n acts.setProcessing(true);\n const file = await decorateWithNotificationsEff(\n {\n id: 'send-employeenotice',\n failureStyle: 'warning',\n success: 'Urakkailmoitus luotu ladattavaksi',\n },\n sendContractNotice({data}),\n );\n\n acts.setContractNoticeUrl(file.url);\n acts.setProcessing(false);\n};\n\neffects.selectSubContractors = (sites) => {\n acts.selectSites(sites);\n};\ntypes.selectSubContractors = P.Array;\n\neffects.openEmployeeNoticeModal = guardHandled(async () => {\n acts.openEmployeeNoticeModal();\n});\n\neffects.closeEmployeeNoticeModal = () => {\n acts.closeEmployeeNoticeModal();\n};\n\neffects.sendEmployeeNotice = async () => {\n const sitesToSend = sels.selectedEmployeeNoticeSites();\n\n const organizationId = commonSels.organizationId();\n\n const {startDate, endDate} = sels.employeeNoticeQuery();\n const data = {\n organizationId,\n siteIds: sitesToSend,\n startDate: startDate.toISOString(),\n endDate: endDate.toISOString(),\n };\n\n acts.setProcessing(true);\n const file = await decorateWithNotificationsEff(\n {\n id: 'send-employeenotice',\n failureStyle: 'warning',\n success: 'Tiedosto luotu ladattavaksi',\n },\n sendEmployeeNotice({data}),\n );\n\n acts.setEmployeeNoticeUrl(file.url);\n acts.setProcessing(false);\n};\n\neffects.selectEmployees = (employees) => {\n acts.selectEmployees(employees);\n};\ntypes.selectEmployees = P.Array;\n\neffects.clearEmployeeSelection = () => {\n acts.clearEmployeeSelection();\n};\n\neffects.updateEmployeeNoticeQuery = guardHandled(async (query) => {\n acts.updateEmployeeNoticeQuery(query);\n //await fetchEmployeeNoticeRows();\n});\ntypes.updateEmployeeNoticeQuery = P.Object;\n\nexport default createEffects(namespace, services.get('channel').dispatch, types, effects);\n","export const activityStatuses = {\n present: 'Paikalla',\n break: 'Tauko',\n pickup: 'Nouto',\n away: 'Poissa',\n transition: 'Siirtymä',\n};\n\nexport const siteStatuses = {\n active: 'Aktiivinen',\n inactive: 'Poissa',\n};\n","import React from 'react';\nimport {includes, all} from 'ramda';\nimport {\n Table,\n Thead,\n Tbody,\n Tr,\n Th,\n Td,\n HStack,\n Spacer,\n IconButton,\n Badge,\n Menu,\n Portal,\n MenuButton,\n MenuList,\n MenuItem,\n Checkbox,\n Text,\n Link,\n} from '@chakra-ui/react';\nimport {FiMoreHorizontal} from 'react-icons/fi';\nimport {Link as RouterLink} from 'react-router-dom';\n\nimport {encodeQuery} from 'utils/url';\nimport {emptyPagination} from 'constants/pagination';\nimport {Paginator} from 'components';\nimport {siteStatuses} from 'dicts/data';\n\nconst SiteRow = ({\n site = {},\n onRowClick = () => {},\n onDelete = () => {},\n isSelected,\n referrerUrl,\n select,\n}) => {\n return (\n \n \n e.stopPropagation()}\n onChange={(e) => select([{id: site.id, selected: e.target.checked}])}\n />\n | \n \n e.stopPropagation()}\n as={RouterLink}\n to={`/sites/${site.id}${encodeQuery({\n referrerUrl,\n referrerTitle: 'Työmaa',\n })}`}\n >\n {site.name}\n \n | \n {site.address} | \n {site.city} | \n {site.postcode} | \n \n {siteStatuses[site.state]}\n | \n \n \n | \n
\n );\n};\n\nconst SitesTable = ({\n processing,\n sites = [],\n selection,\n pagination = emptyPagination,\n referrerUrl,\n onPageSelect = () => {},\n openSite = () => {},\n removeSite = () => {},\n selectSites,\n clearSelection = () => {},\n}) => {\n const handleSelectAll = (selected) => {\n if (selected) {\n selectSites(sites.map((s) => ({id: s.id, selected})));\n } else {\n clearSelection();\n }\n };\n return (\n <>\n \n \n \n \n includes(site.id, selection), sites)\n }\n onClick={(e) => e.stopPropagation()}\n onChange={(e) => handleSelectAll(e.target.checked)}\n />\n | \n Nimi | \n Osoite | \n Kaupunki | \n Postinumero | \n Tila | \n | \n
\n \n \n {sites.map((s) => (\n \n ))}\n \n
\n \n \n \n \n >\n );\n};\n\nexport default SitesTable;\n","import {useEffect, useState, useRef} from 'react';\n\n// https://usehooks.com/useDebounce/\nexport const useDebounce = (value, delay) => {\n // State and setters for debounced value\n const [debouncedValue, setDebouncedValue] = useState(value);\n\n useEffect(\n () => {\n // Update debounced value after delay\n const handler = setTimeout(() => {\n setDebouncedValue(value);\n }, delay);\n\n // Cancel the timeout if value changes (also on delay change or unmount)\n // This is how we prevent debounced value from updating if value is changed ...\n // .. within the delay period. Timeout gets cleared and restarted.\n return () => {\n clearTimeout(handler);\n };\n },\n [value, delay], // Only re-call effect if value or delay changes\n );\n\n return debouncedValue;\n};\n\n// https://usehooks.com/useEventListener/\nexport const useEventListener = (eventName, handler, element = window) => {\n // Create a ref that stores handler\n const savedHandler = useRef();\n\n // Update ref.current value if handler changes.\n // This allows our effect below to always get latest handler ...\n // ... without us needing to pass it in effect deps array ...\n // ... and potentially cause effect to re-run every render.\n useEffect(() => {\n savedHandler.current = handler;\n }, [handler]);\n\n useEffect(\n () => {\n // Make sure element supports addEventListener\n // On\n const isSupported = element && element.addEventListener;\n if (!isSupported) return;\n\n // Create event listener that calls handler function stored in ref\n const eventListener = (event) => savedHandler.current(event);\n\n // Add event listener\n element.addEventListener(eventName, eventListener);\n\n // Remove event listener on cleanup\n return () => {\n element.removeEventListener(eventName, eventListener);\n };\n },\n [eventName, element], // Re-run if eventName or element changes\n );\n};\n","import React, {useEffect, useState, useRef} from 'react';\nimport {\n HStack,\n FormControl,\n FormLabel,\n Input,\n InputRightElement,\n InputGroup,\n Icon,\n} from '@chakra-ui/react';\nimport {FiSearch} from 'react-icons/fi';\nimport {equals} from 'ramda';\nimport {useDebounce} from 'utils/react';\n\nconst SitesFilters = ({query = {}, updateQuery = () => {}}) => {\n const querySearch = query['filter[name]'] || '';\n const [search, setSearch] = useState(querySearch);\n const debouncedSearch = useDebounce(search, 500);\n const isInitialMount = useRef(true);\n\n // update filter to query debounced to prevent flooding API with requests\n // value also kept in local state that is updated immediately\n useEffect(() => {\n if (isInitialMount.current) {\n isInitialMount.current = false;\n } else if (!equals(debouncedSearch, querySearch)) {\n updateQuery({'filter[name]': debouncedSearch});\n }\n }, [debouncedSearch]);\n\n useEffect(() => {\n if (querySearch !== search) {\n setSearch(querySearch);\n }\n }, [querySearch]);\n\n return (\n \n \n Vapaahaku\n \n setSearch(e.target.value)}\n />\n \n \n \n \n \n \n );\n};\n\nexport default SitesFilters;\n","import React, {useState} from 'react';\nimport {\n Modal,\n ModalOverlay,\n ModalContent,\n ModalBody,\n ModalHeader,\n ModalCloseButton,\n ModalFooter,\n Stack,\n Heading,\n Input,\n FormControl,\n FormLabel,\n Button,\n FormErrorMessage,\n HStack,\n Divider,\n Badge,\n Box,\n Text,\n Avatar,\n IconButton,\n InputRightElement,\n InputGroup,\n OrderedList,\n ListItem,\n Switch,\n Link,\n} from '@chakra-ui/react';\nimport {useForm} from 'react-hook-form';\nimport {ReactDatepicker, ReactSelect} from 'components';\nimport {FiX, FiHelpCircle} from 'react-icons/fi';\n\nconst SiteModal = ({\n isOpen,\n isLoading,\n onClose = () => {},\n onSubmit = () => {},\n defaultValues = {},\n organizations,\n organizationId,\n addableOrganizations,\n defaultSiteSubContractors,\n isNew = true,\n}) => {\n const {\n handleSubmit,\n formState: {errors},\n control,\n watch,\n register,\n } = useForm({defaultValues});\n\n const [subContractors, setSubContractors] = useState(defaultSiteSubContractors);\n const [showHelp, setShowHelp] = useState(false);\n const [checked, setChecked] = useState(defaultValues.checkLocation);\n\n const [newSubContractorId, setNewSubContractorId] = useState(null);\n\n const siteStates = [\n {name: 'active', label: 'Aktiivinen'},\n {name: 'inactive', label: 'Poissa'},\n ];\n\n const addSubContractor = () => {\n const organization = organizations.find((x) => x.id === newSubContractorId);\n setSubContractors([...subContractors, organization]);\n };\n\n const removeSubContractor = (siteId) => {\n const newOrganizations = subContractors.filter((x) => x.id !== siteId);\n setSubContractors(newOrganizations);\n };\n\n const onSubmitActual = (formData) =>\n onSubmit({...formData, checkLocation: checked, subContractors});\n const startDate = watch('startDate');\n\n return (\n \n \n \n {isNew ? 'Lisää työmaa' : 'Muokkaa työmaata'}\n \n \n \n {!isNew ? (\n <>\n \n Oikeudet\n \n \n \n \n \n Yritys\n ({\n value: o.id,\n label: `${o.name}, Y-tunnus ${o.businessId}`,\n }))}\n onChange={(val) => setNewSubContractorId(val)}\n />\n \n {errors.state && errors.state.message}\n \n \n \n \n \n {subContractors.map((subContractor) => (\n \n \n \n \n \n {subContractor.name}\n {subContractor.email}\n \n \n \n Alihankkija\n }\n marginLeft={2}\n onClick={(e) => {\n e.stopPropagation();\n removeSubContractor(subContractor.id);\n }}\n />\n \n \n \n \n ))}\n \n \n >\n ) : null}\n \n \n \n \n \n \n \n );\n};\n\nexport default SiteModal;\n","import React, {useEffect, useState, useRef} from 'react';\nimport {\n HStack,\n FormControl,\n FormLabel,\n Input,\n InputRightElement,\n InputGroup,\n Icon,\n} from '@chakra-ui/react';\nimport {FiSearch} from 'react-icons/fi';\nimport {equals} from 'ramda';\nimport {useDebounce} from 'utils/react';\n\nconst ContractSitesFilters = ({\n contractSitesQuery = {},\n updateContractSitesQuery = () => {},\n}) => {\n const querySearch = contractSitesQuery['filter[contractsitename]'] || '';\n const [search, setSearch] = useState(querySearch);\n const debouncedSearch = useDebounce(search, 500);\n const isInitialMount = useRef(true);\n\n // update filter to query debounced to prevent flooding API with requests\n // value also kept in local state that is updated immediately\n useEffect(() => {\n if (isInitialMount.current) {\n isInitialMount.current = false;\n } else if (!equals(debouncedSearch, querySearch)) {\n updateContractSitesQuery({'filter[contractsitename]': debouncedSearch});\n }\n }, [debouncedSearch]);\n\n useEffect(() => {\n if (querySearch !== search) {\n setSearch(querySearch);\n }\n }, [querySearch]);\n\n return (\n \n \n Vapaahaku\n \n setSearch(e.target.value)}\n />\n \n \n \n \n \n \n );\n};\n\nexport default ContractSitesFilters;\n","import React from 'react';\nimport {\n Table,\n Thead,\n Tbody,\n Tr,\n Th,\n Td,\n HStack,\n Spacer,\n IconButton,\n Checkbox,\n Badge,\n Menu,\n Portal,\n MenuButton,\n MenuList,\n MenuItem,\n Text,\n Link,\n} from '@chakra-ui/react';\nimport {includes, all} from 'ramda';\nimport {FiMoreHorizontal} from 'react-icons/fi';\nimport {Link as RouterLink} from 'react-router-dom';\n\nimport {encodeQuery} from 'utils/url';\nimport {emptyPagination} from 'constants/pagination';\nimport {Paginator} from 'components';\n\nconst SiteRow = ({\n site = {},\n onRowClick = () => {},\n onDelete = () => {},\n referrerUrl,\n isSelected,\n select,\n}) => {\n return (\n \n \n e.stopPropagation()}\n onChange={(e) => select([{id: site.id, selected: e.target.checked}])}\n />\n | \n \n e.stopPropagation()}\n as={RouterLink}\n to={`/sites/${site.id}${encodeQuery({\n referrerUrl,\n referrerTitle: 'Työmaa',\n })}`}\n >\n {site.name}\n \n | \n {site.address} | \n {site.city} | \n {site.postcode} | \n \n Aktiivinen\n | \n \n \n | \n
\n );\n};\n\nconst ContractSitesTable = ({\n processing,\n contractSites = [],\n selection,\n pagination = emptyPagination,\n referrerUrl,\n onPageSelect = () => {},\n openSite = () => {},\n removeSite = () => {},\n selectSites,\n clearSelection = () => {},\n}) => {\n const handleSelectAll = (selected) => {\n if (selected) {\n selectSites(contractSites.map((s) => ({id: s.id, selected})));\n } else {\n clearSelection();\n }\n };\n return (\n <>\n \n \n \n \n includes(site.id, selection), contractSites)\n }\n onClick={(e) => e.stopPropagation()}\n onChange={(e) => handleSelectAll(e.target.checked)}\n />\n | \n Nimi | \n Osoite | \n Kaupunki | \n Postinumero | \n Tila | \n | \n
\n \n \n {contractSites.map((s) => (\n \n ))}\n \n
\n \n \n \n \n >\n );\n};\n\nexport default ContractSitesTable;\n","import React from 'react';\nimport {Table, Thead, Tbody, Tr, Th, Td} from '@chakra-ui/react';\n\nconst SiteRow = ({selectedSite}) => {\n return (\n \n \n {selectedSite.name}\n | \n {selectedSite.address} | \n {selectedSite.postcode} | \n {selectedSite.city} | \n
\n );\n};\n\nconst ContractNoticeTable = ({sites}) => {\n return (\n <>\n \n \n \n Nimi | \n Osoite | \n Postinumero | \n Kaupunki | \n
\n \n \n {sites.map((s) => (\n \n ))}\n \n
\n >\n );\n};\n\nexport default ContractNoticeTable;\n","import React from 'react';\nimport {HStack, FormControl, FormLabel} from '@chakra-ui/react';\nimport {ReactDatepicker} from 'components';\n\nconst ContractNoticeFilters = ({updateQuery = () => {}, query}) => {\n return (\n \n \n Alkaen\n updateQuery({startDate: date})}\n />\n \n \n Päättyen\n updateQuery({endDate: date})}\n />\n \n \n );\n};\n\nexport default ContractNoticeFilters;\n","import React from 'react';\nimport {Link} from 'react-router-dom';\nimport {\n Modal,\n ModalOverlay,\n ModalContent,\n ModalBody,\n ModalHeader,\n ModalCloseButton,\n ModalFooter,\n Button,\n Flex,\n HStack,\n Box,\n Text,\n} from '@chakra-ui/react';\nimport ContractNoticeTable from './contract-notice-table';\nimport ContractNoticeFilters from './contract-notice-filters';\n\nconst ContractNoticeModal = ({\n isOpen,\n query,\n isLoading,\n onClose = () => {},\n onSubmit = () => {},\n selection = [],\n updateQuery,\n organizations = [],\n contractNoticeUrl,\n selectedSites,\n}) => {\n return (\n \n \n \n Urakkailmoitus\n \n \n \n \n \n \n \n Ilmoitettavat työmaat\n \n {selectedSites.length}\n \n \n \n {!selectedSites.length ? (\n \n Ei alihankkijoita\n \n ) : (\n \n )}\n \n \n \n {!contractNoticeUrl ? (\n \n ) : (\n \n \n \n )}\n \n \n \n );\n};\n\nexport default ContractNoticeModal;\n","import React from 'react';\nimport {Table, Thead, Tbody, Tr, Th, Td} from '@chakra-ui/react';\n\nconst EmployeeRow = ({selectedSite}) => {\n return (\n \n \n {selectedSite.name}\n | \n {selectedSite.address} | \n {selectedSite.postcode} | \n {selectedSite.city} | \n
\n );\n};\n\nconst EmployeeNoticeTable = ({selectedSites}) => {\n return (\n <>\n \n \n \n Nimi | \n Osoite | \n Postinumero | \n Kaupunki | \n
\n \n \n {selectedSites.map((s) => (\n \n ))}\n \n
\n >\n );\n};\n\nexport default EmployeeNoticeTable;\n","import React from 'react';\nimport {HStack, FormControl, FormLabel} from '@chakra-ui/react';\nimport {ReactDatepicker} from 'components';\n\nconst EmployeeNoticeFilters = ({updateQuery = () => {}, query = {}}) => {\n return (\n \n \n Alkaen\n updateQuery({startDate: date})}\n />\n \n \n Päättyen\n updateQuery({endDate: date})}\n />\n \n \n );\n};\n\nexport default EmployeeNoticeFilters;\n","import React from 'react';\nimport {Link} from 'react-router-dom';\nimport {\n Modal,\n ModalOverlay,\n ModalContent,\n ModalBody,\n ModalHeader,\n ModalCloseButton,\n ModalFooter,\n Button,\n Flex,\n Box,\n} from '@chakra-ui/react';\nimport EmployeeNoticeTable from './employee-notice-table';\nimport EmployeeNoticeFilters from './employee-notice-filters';\n\nconst EmployeeNoticeModal = ({\n isOpen,\n employeeNoticeUrl,\n isLoading,\n onClose = () => {},\n onSubmit = () => {},\n selectedSites,\n selectedContractSites,\n selection = [],\n updateQuery = () => {},\n query,\n organizations = [],\n}) => {\n console.log(selectedContractSites, 'perse');\n // Merge contractSites and sites array to one array\n const sites = [...selectedSites, ...selectedContractSites];\n return (\n \n \n \n Työntekijäilmoitus\n \n \n \n \n \n {!sites.length ? (\n \n Ei valittuja työmaita\n \n ) : (\n \n )}\n \n \n \n {!employeeNoticeUrl ? (\n \n ) : (\n \n \n \n )}\n \n \n \n );\n};\n\nexport default EmployeeNoticeModal;\n","import React, {useEffect} from 'react';\nimport {\n HStack,\n VStack,\n Box,\n Spacer,\n Button,\n Text,\n Spinner,\n Center,\n} from '@chakra-ui/react';\nimport {FiPlusCircle, FiMail} from 'react-icons/fi';\nimport {pick} from 'ramda';\nimport {connect} from 'react-redux';\n\nimport {applyState} from 'utils/redux';\nimport {encodeQuery, createReferrerUrl} from 'utils/url';\nimport effs from 'modules/sites/sitesPage/effects';\nimport sels from 'modules/sites/sitesPage/selectors';\n\nimport {Content, Card} from 'components';\nimport SitesTable from './components/sites-table';\nimport SitesFilters from './components/sites-filters';\nimport SiteModal from './components/site-modal';\nimport ContractSitesFilters from './components/contractSites-filters';\nimport ContractSitesTable from './components/contractSites-table';\nimport ContractNoticeModal from './components/contract-notice-modal';\nimport EmployeeNoticeModal from './components/employee-notice-modal';\n\nconst Sites = ({\n history,\n location,\n processing,\n loading,\n siteModalOpen,\n sites,\n contractSites,\n contractSitesQuery,\n contractSitesLoading,\n pagination,\n contractSitesPagination,\n query,\n employeeNoticeModalOpen,\n employeeSelection,\n selectedContractSites,\n employeeNoticeRows,\n employeeNoticeLoading,\n employeeNoticeQuery,\n employeeNoticeUrl,\n contractNoticeModalOpen,\n contractNoticeDateRange,\n contractNoticeUrl,\n siteSelection,\n contractNoticeLoading,\n selectedSites,\n}) => {\n useEffect(() => {\n effs.initialize();\n\n return () => {\n effs.destroy();\n };\n }, []);\n\n const referrerUrl = createReferrerUrl(location);\n\n const openSite = (id) => {\n history.push(`/sites/${id}${encodeQuery({referrerUrl, referrerTitle: 'Työmaat'})}`);\n };\n\n return (\n \n \n \n \n Työmaat\n \n \n \n \n \n \n {loading ? (\n \n \n \n ) : !sites.length ? (\n Ei työmaita\n ) : (\n effs.updateQuery({page})}\n openSite={openSite}\n removeSite={effs.removeSite}\n referrerUrl={referrerUrl}\n selection={siteSelection}\n clearSelection={effs.clearSubContractorSelection}\n selectSites={effs.selectSubContractors}\n />\n )}\n \n \n \n Alihankintatyömaat\n \n \n \n\n \n\n {contractSitesLoading ? (\n \n \n \n ) : !contractSites.length ? (\n Ei työmaita\n ) : (\n effs.updateContractSitesQuery({page})}\n openSite={openSite}\n referrerUrl={referrerUrl}\n selection={siteSelection}\n clearSelection={effs.clearSubContractorSelection}\n selectSites={effs.selectSubContractors}\n />\n )}\n \n \n\n {siteModalOpen && (\n effs.toggleSiteModal()}\n onSubmit={effs.createSite}\n />\n )}\n\n {employeeNoticeModalOpen && (\n effs.closeEmployeeNoticeModal()}\n onSubmit={() => effs.sendEmployeeNotice()}\n employeeRowsLoading={employeeNoticeLoading}\n selection={siteSelection}\n selectedSites={selectedSites}\n selectedContractSites={selectedContractSites}\n selectEmployees={effs.selectEmployees}\n updateQuery={effs.updateEmployeeNoticeQuery}\n query={employeeNoticeQuery}\n />\n )}\n\n {contractNoticeModalOpen && (\n effs.closeContractNoticeModal()}\n updateQuery={effs.updateContractNoticeDateRange}\n query={contractNoticeDateRange}\n selection={siteSelection}\n subContractorRowsLoading={contractNoticeLoading}\n onSubmit={() => effs.sendContractNotice()}\n contractNoticeUrl={contractNoticeUrl}\n selectedSites={selectedSites}\n />\n )}\n \n );\n};\n\nexport default connect(\n applyState(\n pick(\n [\n 'processing',\n 'loading',\n 'siteModalOpen',\n 'sites',\n 'contractSites',\n 'pagination',\n 'contractSitesPagination',\n 'query',\n 'contractSitesQuery',\n 'contractSitesLoading',\n 'employeeNoticeModalOpen',\n 'employeeSelection',\n 'employeeNoticeRows',\n 'employeeNoticeLoading',\n 'employeeNoticeQuery',\n 'employeeNoticeUrl',\n 'contractNoticeModalOpen',\n 'contractNoticeDateRange',\n 'siteSelection',\n 'contractNoticeLoading',\n 'contractNoticeUrl',\n 'selectedSites',\n 'selectedContractSites',\n ],\n sels,\n ),\n ),\n)(Sites);\n","import {format, parseISO} from 'date-fns';\n\nexport const getDateRangeStr = (startDate, endDate) => {\n const startStr = startDate ? `${format(parseISO(startDate), 'd.M.yyyy')} ` : '';\n const endStr = endDate ? `${format(parseISO(endDate), 'd.M.yyyy')} ` : '';\n\n return `${startStr} - ${endStr}`;\n};\n\nexport const formatDate = (date) => {\n return format(date, 'yyyy-MM-dd');\n};\n\nconst hoursToSeconds = 60 * 60;\n\nconst formatTimePart = (num) => {\n if (num < 10) {\n return `0${num}`;\n }\n if (num < 0) {\n return `00`;\n }\n return String(num);\n};\n\nexport const sToTime = (s) => {\n const hours = Math.floor(s / hoursToSeconds);\n const minutes = Math.round((s / 60) % 60);\n return `${formatTimePart(hours)}h ${formatTimePart(minutes)}min`;\n};\n","import namespace from '../namespace';\nimport name from './name';\n\nexport default [...namespace, name];\n","export default 'sitePage';\n","import {includes, reject, append, equals} from 'ramda';\nimport {startOfMonth, endOfMonth} from 'date-fns';\nimport namespace from './namespace';\nimport {scopedStore} from 'utils/redux';\n\nexport const initialState = {\n processing: false,\n organization: null,\n siteSubContractors: [],\n loading: true,\n site: null,\n users: [],\n addableEmployees: [],\n extraCosts: [],\n extraCostsLoading: true,\n extraCostsQuery: {\n 'filter[startDate]': '',\n },\n siteModalOpen: false,\n employeeModalOpen: false,\n openedEmployeeId: null,\n selectedEmployeeId: null,\n updatedSiteEmployees: [],\n fileUploaderModalOpen: false,\n employeesQuery: {name: '', state: null, organization: null},\n expenseModalOpen: false,\n expenses: [],\n expensesLoading: true,\n activeExpenseId: null,\n expensesQuery: {\n 'filter[title]': '',\n },\n documents: [],\n documentsLoading: true,\n documentEditorOpen: false,\n activeDocumentId: null,\n contractNoticeModalOpen: false,\n subContractorSelection: [],\n contractNoticeRows: [],\n contractNoticeLoading: false,\n contractNoticeQuery: {\n startDate: startOfMonth(new Date()),\n endDate: endOfMonth(new Date()),\n },\n contractNoticeUrl: null,\n employeeNoticeModalOpen: false,\n employeeSelection: [],\n employeeNoticeRows: [],\n employeeNoticeLoading: false,\n employeeNoticeQuery: {\n startDate: startOfMonth(new Date()),\n endDate: endOfMonth(new Date()),\n organizationId: '',\n },\n employeeNoticeUrl: null,\n};\n\nexport const cases = {\n setSite: (st, all, payload) => {\n const {users, organization, subContractors, ...site} = payload;\n return {\n ...st,\n site,\n users,\n organization,\n siteSubContractors: subContractors,\n loading: false,\n };\n },\n\n setEmployeeNoticeUrl: (st, all, url) => {\n return {...st, employeeNoticeUrl: url};\n },\n\n setExtraCosts: (st, all, extraCosts) => {\n return {...st, extraCosts, extraCostsLoading: false};\n },\n\n setExtraCostsLoading: (st, all, value) => {\n return {...st, extraCostsLoading: value};\n },\n\n setSiteUsers: (st, all, users) => {\n return {...st, users};\n },\n\n setAddableEmployees: (st, all, addableEmployees) => {\n return {...st, addableEmployees, loading: false};\n },\n\n openFileUploaderModal: (st, all) => {\n return {...st, fileUploaderModalOpen: true};\n },\n\n closeFileUploaderModal: (st, all) => {\n return {...st, fileUploaderModalOpen: false};\n },\n\n updateEmployeesQuery: (st, all, query) => {\n return {...st, employeesQuery: query};\n },\n\n updateSite: (st, all, payload) => {\n return {\n ...st,\n site: {...st.site, ...payload},\n siteSubContractors: payload.subContractors,\n };\n },\n\n toggleSiteModal: (st) => {\n return {...st, siteModalOpen: !st.siteModalOpen};\n },\n\n openEmployeeModal: (st, all, employeeId) => {\n return {...st, employeeModalOpen: true, openedEmployeeId: employeeId};\n },\n\n setSelectedEmployeeId: (st, all, employeeId) => {\n return {...st, selectedEmployeeId: employeeId};\n },\n\n closeEmployeeModal: (st, all) => {\n return {...st, employeeModalOpen: false, openedEmployeeId: null};\n },\n\n setProcessing: (st, all, processing) => {\n return {...st, processing};\n },\n\n setLoading: (st, all, loading) => {\n return {...st, loading};\n },\n\n openExpenseModal: (st, all, expenseId) => {\n return {...st, expenseModalOpen: true, activeExpenseId: expenseId};\n },\n\n closeExpenseModal: (st) => {\n return {...st, expenseModalOpen: false, activeExpenseId: null};\n },\n\n setExpenses: (st, all, expenses) => {\n return {...st, expenses, expensesLoading: false};\n },\n\n updateExpensesQuery: (st, all, payload) => {\n return {\n ...st,\n expensesQuery: {...st.expensesQuery, ...payload},\n expensesLoading: true,\n };\n },\n\n setDocuments: (st, all, documents) => {\n return {...st, documents, documentsLoading: false};\n },\n\n updateDocument: (st, all, payload) => {\n return {\n ...st,\n documents: st.documents.map((d) => (d.id === payload.id ? {...d, ...payload} : d)),\n };\n },\n\n removeDocument: (st, all, id) => {\n return {...st, documents: st.documents.filter((d) => d.id !== id)};\n },\n\n openDocumentEditor: (st, all, documentId) => {\n return {...st, documentEditorOpen: true, activeDocumentId: documentId};\n },\n\n closeDocumentEditor: (st, all) => {\n return {...st, documentEditorOpen: false, activeDocumentId: null};\n },\n\n openEmployeeNoticeModal: (st, all) => {\n return {...st, employeeNoticeModalOpen: true, employeeNoticeLoading: true};\n },\n\n closeEmployeeNoticeModal: (st, all) => {\n return {\n ...st,\n employeeNoticeModalOpen: false,\n employeeNoticeLoading: false,\n employeeSelection: initialState.employeeSelection,\n employeeNoticeRows: initialState.employeeNoticeRows,\n employeeNoticeQuery: initialState.employeeNoticeQuery,\n employeeNoticeUrl: initialState.employeeNoticeUrl,\n };\n },\n\n setEmployeeNoticeRows: (st, all, employeeNoticeRows) => {\n return {...st, employeeNoticeRows, employeeNoticeLoading: false};\n },\n\n selectEmployees: (st, all, employees) => {\n let selection = st.employeeSelection;\n\n employees.forEach((e) => {\n if (includes(e.id, selection)) {\n selection = !e.selected ? reject(equals(e.id), selection) : selection;\n } else {\n selection = e.selected ? append(e.id, selection) : selection;\n }\n });\n\n return {...st, employeeSelection: selection};\n },\n\n clearEmployeeSelection: (st) => {\n return {...st, employeeSelection: initialState.employeeSelection};\n },\n\n updateEmployeeNoticeQuery: (st, all, payload) => {\n return {\n ...st,\n employeeNoticeQuery: {...st.employeeNoticeQuery, ...payload},\n employeeNoticeLoading: true,\n };\n },\n\n selectSubcontractors: (st, all, subContractors) => {\n let selection = st.subContractorSelection;\n\n subContractors.forEach((s) => {\n if (includes(s.id, selection)) {\n selection = !s.selected ? reject(equals(s.id), selection) : selection;\n } else {\n selection = s.selected ? append(s.id, selection) : selection;\n }\n });\n\n return {...st, subContractorSelection: selection};\n },\n\n setContractNoticeRows: (st, all, contractNoticeRows) => {\n return {...st, contractNoticeRows, contractNoticeLoading: false};\n },\n\n clearSubContractorSelection: (st) => {\n return {...st, subContractorSelection: []};\n },\n\n updateContractNoticeQuery: (st, all, payload) => {\n return {\n ...st,\n contractNoticeQuery: {...st.contractNoticeQuery, ...payload},\n contractNoticeLoading: true,\n };\n },\n\n selectSubContractors: (st, all, subContractors) => {\n let selection = st.subContractorSelection;\n\n subContractors.forEach((e) => {\n if (includes(e.id, selection)) {\n selection = !e.selected ? reject(equals(e.id), selection) : selection;\n } else {\n selection = e.selected ? append(e.id, selection) : selection;\n }\n });\n\n return {...st, subContractorSelection: selection};\n },\n\n openContractNoticeModal: (st, all) => {\n return {...st, contractNoticeModalOpen: true, contractNoticeLoading: true};\n },\n\n setContractNoticeUrl: (st, all, url) => {\n return {...st, contractNoticeUrl: url};\n },\n\n closeContractNoticeModal: (st, all) => {\n return {\n ...st,\n contractNoticeModalOpen: false,\n contractNoticeLoading: false,\n subContractorSelection: [],\n contractNoticeRows: initialState.contractNoticeRows,\n contractNoticeQuery: initialState.contractNoticeQuery,\n };\n },\n\n reset: (st) => {\n return initialState;\n },\n};\n\nexport const {actions, reducer} = scopedStore(namespace, cases, initialState);\n","import {actions} from './store';\nimport services from 'services';\nimport {bindActions} from 'utils/redux';\n\nexport default services\n .waitFor('store')\n .then((store) => bindActions(store.dispatch, actions));\n","import {parseISO, parse, startOfDay, endOfDay} from 'date-fns';\n\nconst trim = (s) => (s ? s.trim() : '');\n\nexport const fullAddress = (site) => {\n const street = trim(site.address) || '';\n\n const city = [site.postcode, site.city]\n .map(trim)\n .filter((s) => !!s)\n .join(' ');\n return [street, city].filter((s) => !!s).join(', ');\n};\n\nexport const formatSiteDefaultVals = (site) => {\n if (!site) return {};\n\n return {\n name: site.name,\n address: site.address,\n postcode: site.postcode,\n city: site.city,\n location:\n site.latitude && site.longitude ? `${site.latitude}, ${site.longitude}` : '',\n startDate: site.startDate ? parseISO(site.startDate) : '',\n endDate: site.endDate ? parseISO(site.endDate) : '',\n budget: site.budget ? `${site.budget}` : '',\n checkLocation: site.checkLocation,\n allowedRadius: site.allowedRadius,\n employeeCosts: site.employeeCosts ? `${site.employeeCosts}` : '',\n state: site.state,\n };\n};\n\nexport const formatEmployeeDefaultVals = (employee, organization) => {\n if (!employee) return {};\n\n const {\n employmentStart,\n employmentEnd,\n hourPrice,\n baseWage,\n wageMultiplier,\n sitePermission,\n } = employee;\n\n const organizationId = organization.id;\n\n return {\n employmentStart: employmentStart\n ? parse(employmentStart, 'yyyy-MM-dd', new Date())\n : '',\n employmentEnd: employmentEnd ? parse(employmentEnd, 'yyyy-MM-dd', new Date()) : '',\n hourPrice:\n employee.organizationId === organizationId ? baseWage * wageMultiplier : hourPrice,\n sitePermission,\n };\n};\n\nexport const formatExpenseDefaultVals = (expense) => {\n if (!expense) {\n return {\n title: '',\n totalBudget: '',\n expenseItems: [{_id: '', date: '', sum: '', description: ''}],\n };\n }\n\n return {\n title: expense.title,\n class: expense.class,\n totalBudget: expense.totalBudget,\n expenseItems:\n expense.expenseItems?.map((item) => ({\n _id: item.id,\n date: item.date ? parseISO(item.date) : '',\n sum: item.sum,\n description: item.description,\n })) || [],\n };\n};\n\nexport const formatFetchableEmployeeNoticesQuery = (query, site) => {\n return {\n groupByUser: true,\n 'filter[siteId]': site?.id,\n 'filter[startDateBetween]': [\n query.startDate ? startOfDay(query.startDate).toISOString() : null,\n query.endDate ? endOfDay(query.endDate).toISOString() : null,\n ],\n 'filter[processed]': 0,\n 'filter[organizationId]': query.organizationId,\n };\n};\n\nexport const formatContractNoticeQuery = (dateRange, site) => {\n return {\n groupByOrganization: true,\n siteId: site.id,\n 'filter[startDateBetween]': [\n dateRange.startDate ? startOfDay(dateRange.startDate).toISOString() : null,\n dateRange.endDate ? endOfDay(dateRange.endDate).toISOString() : null,\n ],\n };\n};\n","import {createSelector} from 'reselect';\nimport namespace from './namespace';\nimport {scopedSelectors} from 'utils/redux';\nimport {\n formatSiteDefaultVals,\n formatExpenseDefaultVals,\n formatEmployeeDefaultVals,\n formatFetchableEmployeeNoticesQuery,\n formatContractNoticeQuery,\n} from './utils';\n\nlet sels = {};\n\nsels.processing = (st) => st.processing;\n\nsels.loading = (st) => st.loading;\n\nsels.employeeNoticeUrl = (st) => st.employeeNoticeUrl;\n\nsels.site = (st) => st.site;\n\nsels.users = (st) => st.users;\n\nsels.employeesQuery = (st) => st.employeesQuery;\n\nsels.filteredUsers = createSelector([sels.users, sels.employeesQuery], (users, query) => {\n const result = users.filter((user) => {\n return (\n (query.name === '' || user.name.toLowerCase().includes(query.name.toLowerCase())) &&\n (query.organization === null || user.organizationId === query.organization) &&\n (query.state === '' || user.activityStatus === query.state)\n );\n });\n return result;\n});\n\nsels.organization = (st) => st.organization;\n\nsels.organizationName = (st) => st.organization.name;\n\nsels.siteSubContractors = (st) => st.siteSubContractors;\n\nsels.siteOrganizations = createSelector(\n [sels.organization, sels.siteSubContractors, sels.loading],\n (organization, siteSubContractors, loading) => {\n if (loading) {\n return [];\n }\n return [organization, ...siteSubContractors];\n },\n);\n\nsels.addableEmployees = (st) => st.addableEmployees;\n\nsels.siteDefaultVals = createSelector(sels.site, (site) => formatSiteDefaultVals(site));\n\nsels.employeeModalOpen = (st) => st.employeeModalOpen;\n\nsels.openedEmployeeId = (st) => st.openedEmployeeId;\n\nsels.selectedEmployeeId = (st) => st.selectedEmployeeId;\n\nsels.openedEmployee = createSelector(\n [sels.users, sels.openedEmployeeId],\n (users, openedEmployeeId) => users.find((u) => u.id === openedEmployeeId),\n);\n\nsels.selectedEmployee = createSelector(\n [sels.addableEmployees, sels.selectedEmployeeId],\n (addableEmployees, selectedEmployeeId) =>\n addableEmployees.find((u) => u.id === selectedEmployeeId),\n);\n\nsels.fileUploaderModalOpen = (st) => st.fileUploaderModalOpen;\n\nsels.employeeDefaultVals = createSelector(\n [sels.openedEmployee, sels.organization],\n (openedEmployee, organization) =>\n formatEmployeeDefaultVals(openedEmployee, organization),\n);\n\nsels.siteModalOpen = (st) => st.siteModalOpen;\n\nsels.expenseModalOpen = (st) => st.expenseModalOpen;\n\nsels.expenses = (st) => st.expenses;\n\nsels.extraCosts = (st) => st.extraCosts;\n\nsels.extraCostsLoading = (st) => st.extraCostsLoading;\n\nsels.expensesLoading = (st) => st.expensesLoading;\n\nsels.activeExpenseId = (st) => st.activeExpenseId;\n\nsels.activeExpense = createSelector(\n [sels.activeExpenseId, sels.expenses],\n (activeExpenseId, expenses) => expenses.find((e) => e.id === activeExpenseId),\n);\n\nsels.expenseDefaultVals = createSelector(sels.activeExpense, (activeExpense) =>\n formatExpenseDefaultVals(activeExpense),\n);\n\nsels.expensesQuery = (st) => st.expensesQuery;\n\nsels.expensesQueryFetchable = createSelector(\n [sels.site, sels.expensesQuery],\n (site, expensesQuery) => {\n return {...expensesQuery, 'filter[siteId]': site?.id};\n },\n);\n\nsels.documents = (st) => st.documents;\n\nsels.documentsLoading = (st) => st.documentsLoading;\n\nsels.documentEditorOpen = (st) => st.documentEditorOpen;\n\nsels.activeDocumentId = (st) => st.activeDocumentId;\n\nsels.activeDocument = createSelector(\n [sels.documents, sels.activeDocumentId],\n (documents, activeDocumentId) => documents.find((d) => d.id === activeDocumentId),\n);\n\nsels.documentEditorDefaultVals = createSelector(sels.activeDocument, (doc) => ({\n name: doc?.name || '',\n}));\n\nsels.employeeNoticeModalOpen = (st) => st.employeeNoticeModalOpen;\n\nsels.employeeSelection = (st) => st.employeeSelection;\n\nsels.employeeNoticeRows = (st) => st.employeeNoticeRows;\n\nsels.employeeNoticeLoading = (st) => st.employeeNoticeLoading;\n\nsels.employeeNoticeQuery = (st) => st.employeeNoticeQuery;\n\nsels.employeeNoticeQueryFetchable = createSelector(\n [sels.employeeNoticeQuery, sels.site],\n (query, site) => formatFetchableEmployeeNoticesQuery(query, site),\n);\n\nsels.contractNoticeLoading = (st) => st.contractNoticeLoading;\n\nsels.contractNoticeModalOpen = (st) => st.contractNoticeModalOpen;\n\nsels.contractNoticeRows = (st) => st.contractNoticeRows;\n\nsels.subContractorSelection = (st) => st.subContractorSelection;\n\nsels.contractNoticeUrl = (st) => st.contractNoticeUrl;\n\nsels.contractNoticeQuery = (st) => st.contractNoticeQuery;\n\nsels.contractNoticeQueryFetchable = createSelector(\n [sels.contractNoticeQuery, sels.site],\n (dateRange, site) => formatContractNoticeQuery(dateRange, site),\n);\n\nexport default scopedSelectors(namespace, sels);\n","import selectors from './selectors';\nimport services from 'services';\nimport {bindSelectors} from 'utils/redux';\n\nexport default services\n .waitFor('store')\n .then((store) => bindSelectors(store.getState, selectors));\n","import {prop} from 'ramda';\nimport services from 'services';\nimport {describeThrow} from 'utils/errors';\nimport msgs from 'dicts/messages';\n\nlet httpJson = null;\nservices.waitFor('api').then((x) => (httpJson = x.httpJson));\n\nexport const getSite = (id) =>\n httpJson('get', `/sites/${id}`, {\n include: 'users,organization,subContractors',\n })\n .catch(describeThrow(msgs.fetchFailed))\n .then(prop('data'));\n\nexport const getExtraCosts = ({siteId, dateRange}) =>\n httpJson(\n 'get',\n '/extraCosts',\n {\n sort: 'created_at',\n include: 'user',\n 'filter[site_id]': siteId,\n 'filter[startDateBetween]': dateRange,\n },\n {},\n )\n .catch(describeThrow(msgs.fetchFailed))\n .then(prop('data'));\n\nexport const putSite = (site) =>\n httpJson('put', `/sites/${site.id}`, {include: 'subContractors'}, {body: site})\n .catch(describeThrow(msgs.saveFailed))\n .then(prop('data'));\n\nexport const getAddableEmployees = (siteId) =>\n httpJson(\n 'get',\n '/users',\n {\n 'filter[site_addable_users]': siteId,\n withoutCurrentOrgCheck: 'withoutCurrentOrgCheck',\n },\n {},\n )\n .catch(describeThrow(msgs.fetchFailed))\n .then(prop('data'));\n\nexport const setSiteEmployees = ({id, employees}) =>\n httpJson('put', `/sites/${id}`, {}, {body: {users: employees}})\n .catch(describeThrow(msgs.saveFailed))\n .then(prop('data'));\n\nexport const setSiteSubContractors = ({id, subContractors}) =>\n httpJson('put', `/sites/${id}`, {}, {body: {organizations: subContractors}})\n .catch(describeThrow(msgs.saveFailed))\n .then(prop('data'));\n\nexport const getExpenses = (query) =>\n httpJson('get', '/expenses', {\n include: 'expenseItems',\n ...query,\n })\n .catch(describeThrow(msgs.fetchFailed))\n .then(prop('data'));\n\nexport const postExpense = (body) =>\n httpJson('post', '/expenses', {}, {body})\n .catch(describeThrow(msgs.saveFailed))\n .then(prop('data'));\n\nexport const putExpense = (expense) =>\n httpJson('put', `/expenses/${expense.id}`, {}, {body: expense})\n .catch(describeThrow(msgs.saveFailed))\n .then(prop('data'));\n\nexport const deleteExpense = (id) =>\n httpJson('delete', `/expenses/${id}`).catch(describeThrow(msgs.deleteFailed));\n\nexport const postExpenseItem = (body) =>\n httpJson('post', '/expenseItems', {}, {body})\n .catch(describeThrow(msgs.saveFailed))\n .then(prop('data'));\n\nexport const putExpenseItem = (item) =>\n httpJson('put', `/expenseItems/${item.id}`, {}, {body: item})\n .catch(describeThrow(msgs.saveFailed))\n .then(prop('data'));\n\nexport const deleteExpenseItem = (id) =>\n httpJson('delete', `/expenseItems/${id}`).catch(describeThrow(msgs.deleteFailed));\n\nexport const getDocuments = (query) =>\n httpJson('get', '/documents', {sort: '-updated_at', ...query})\n .catch(describeThrow(msgs.fetchFailed))\n .then(prop('data'));\n\nexport const postDocument = (body) =>\n httpJson('post', '/documents', {}, {body})\n .catch(describeThrow(msgs.saveFailed))\n .then(prop('data'));\n\nexport const putDocument = (doc) =>\n httpJson('put', `/documents/${doc.id}`, {}, {body: doc})\n .catch(describeThrow(msgs.saveFailed))\n .then(prop('data'));\n\nexport const deleteDocument = (id) =>\n httpJson('delete', `/documents/${id}`).catch(describeThrow(msgs.deleteFailed));\n\nexport const getTimeEntries = (query) =>\n httpJson('get', '/timeEntries', query)\n .catch(describeThrow(msgs.fetchFailed))\n .then(prop('data'));\n\nexport const sendEmployeeNotice = ({id, data}) =>\n httpJson(\n 'post',\n `/sites/${id}/sendEmployeeNotice`,\n {},\n {\n body: data,\n },\n )\n .catch(describeThrow(msgs.opSuccess))\n .then(prop('data'));\n\nexport const sendContractNotice = ({id, data}) =>\n httpJson(\n 'post',\n `/sites/${id}/sendContractNotice`,\n {},\n {\n body: data,\n },\n )\n .catch(describeThrow(msgs.opSuccess))\n .then(prop('data'));\n","import {describeThrow} from 'utils/errors';\nimport {apiUrl} from 'constants/app';\nimport _sels from 'modules/common/boundSelectors';\n\nlet sels;\n_sels.then((x) => (sels = x));\n\nexport const uploadFiles = (files) =>\n new Promise((resolve, reject) => {\n const xhr = new XMLHttpRequest();\n xhr.open('POST', `${apiUrl}/uploads`);\n xhr.setRequestHeader('Authorization', `Bearer ${sels.apiToken()}`);\n xhr.setRequestHeader('Accept', 'application/json');\n const data = new FormData();\n files.forEach((f) => data.append('file[]', f));\n xhr.send(data);\n xhr.addEventListener('load', () => {\n if (xhr.status < 400) {\n const response = JSON.parse(xhr.responseText);\n resolve(response);\n } else {\n reject(new Error('Upload failed'));\n }\n });\n xhr.addEventListener('error', () => {\n const error = JSON.parse(xhr.responseText);\n reject(error);\n });\n }).catch(describeThrow('Tiedoston lähetys epäonnistui'));\n","import services from 'services';\nimport {includes} from 'ramda';\nimport {createEffects} from 'utils/events';\nimport {P, Nullable, Record} from 'utils/types';\nimport {guardHandled, logInfo} from 'io/errors';\nimport {setPageTitleMessage, decorateWithNotificationsEff} from 'io/app';\nimport namespace from './namespace';\nimport _acts from './boundActions';\nimport _sels from './boundSelectors';\nimport msgs from 'dicts/messages';\nimport confirmerEffs from 'modules/confirmer/effects';\nimport _commonSels from 'modules/common/boundSelectors';\nimport {\n getSite,\n putSite,\n getAddableEmployees,\n setSiteEmployees,\n getExpenses,\n postExpense,\n putExpense,\n deleteExpense,\n postExpenseItem,\n putExpenseItem,\n deleteExpenseItem,\n getDocuments,\n postDocument,\n putDocument,\n deleteDocument,\n getTimeEntries,\n setSiteSubContractors,\n getExtraCosts,\n sendEmployeeNotice,\n sendContractNotice,\n} from './io';\nimport {formatDate} from 'utils/time';\nimport {uploadFiles as postUploadFiles} from 'io/files';\n\nlet acts, sels, commonSels;\n_acts.then((x) => (acts = x));\n_sels.then((x) => (sels = x));\n_commonSels.then((x) => (commonSels = x));\n\nlet effects = {};\nlet types = {};\n\neffects.initialize = guardHandled(async (id) => {\n setPageTitleMessage('Työmaa');\n\n await decorateWithNotificationsEff(\n {id: 'get-site', failureStyle: 'warning'},\n Promise.all([\n getSite(id).then((site) => acts.setSite(site)),\n getExtraCosts(id).then((extraCosts) => acts.setExtraCosts(extraCosts)),\n getDocuments({'filter[siteId]': id}).then((docs) => acts.setDocuments(docs)),\n getExpenses({...sels.expensesQueryFetchable(), 'filter[siteId]': id}).then(\n (expenses) => acts.setExpenses(expenses),\n ),\n ]),\n );\n});\ntypes.initialize = P.Number;\n\neffects.fetchExtraCosts = async ({startDate, endDate}) => {\n const siteId = sels.site().id;\n const dateRange = `${startDate.toISOString()},${endDate.toISOString()}`;\n\n try {\n acts.setExtraCostsLoading(true);\n const siteExtraCosts = await getExtraCosts({siteId, dateRange});\n await acts.setExtraCosts(siteExtraCosts);\n } catch (e) {\n logInfo(e);\n }\n};\ntypes.fetchExtraCosts = Record({\n startDate: P.Date,\n endDate: P.Date,\n});\n\nconst fetchAddableEmployeesEff = async ({notifyOpts = {}}) => {\n return decorateWithNotificationsEff(\n {\n id: 'get-employees',\n failureStyle: 'warning',\n loading: msgs.loading,\n ...notifyOpts,\n },\n getAddableEmployees(sels.site().id),\n ).then((data) => {\n acts.setAddableEmployees(data);\n });\n};\n\nconst updateSiteUsers = guardHandled(async (id) => {\n const site = await decorateWithNotificationsEff(\n {id: 'get-site', failureStyle: 'warning', loading: msgs.loading},\n getSite(id),\n );\n acts.setSiteUsers(site.users);\n});\n\nconst fetchExpenses = () => {\n return decorateWithNotificationsEff(\n {id: 'get-expenses', failureStyle: 'warning'},\n getExpenses(sels.expensesQueryFetchable()),\n ).then((expenses) => {\n acts.setExpenses(expenses);\n });\n};\n\nconst fetchDocuments = () => {\n return decorateWithNotificationsEff(\n {id: 'get-documents', failureStyle: 'warning'},\n getDocuments({'filter[siteId]': sels.site().id}),\n ).then((docs) => {\n acts.setDocuments(docs);\n });\n};\n\nconst fetchEmployeeNoticeRows = () => {\n return decorateWithNotificationsEff(\n {id: 'get-time-entries', failureStyle: 'warning'},\n getTimeEntries(sels.employeeNoticeQueryFetchable()),\n ).then((rows) => acts.setEmployeeNoticeRows(rows));\n};\n\nconst fetchContractNoticeRows = () => {\n return decorateWithNotificationsEff(\n {id: 'get-time-entries', failureStyle: 'warning'},\n getTimeEntries(sels.contractNoticeQueryFetchable()),\n ).then((rows) => acts.setContractNoticeRows(rows));\n};\n\neffects.updateEmployeesQuery = (query) => {\n acts.updateEmployeesQuery(query);\n};\ntypes.updateEmployeesQuery = P.Object;\n\neffects.toggleSiteModal = () => {\n acts.toggleSiteModal();\n};\n\neffects.openEmployeeModal = async (employeeId) => {\n acts.setProcessing(true);\n if (!employeeId) {\n await fetchAddableEmployeesEff({});\n }\n acts.openEmployeeModal(employeeId);\n acts.setProcessing(false);\n};\ntypes.openEmployeeModal = P.Number;\n\neffects.closeEmployeeModal = () => {\n acts.closeEmployeeModal();\n};\n\neffects.setSelectedEmployeeId = async (employeeId) => {\n await acts.setSelectedEmployeeId(employeeId);\n};\ntypes.setSelectedEmployeeId = P.Number;\n\neffects.openDropzoneModal = () => {\n acts.openFileUploaderModal();\n};\ntypes.openDropzoneModal = P.Object;\n\neffects.closeDropzoneModal = () => {\n acts.closeFileUploaderModal();\n};\ntypes.closeDropzoneModal = P.Object;\n\neffects.removeEmployee = (employee) => {\n const onConfirm = guardHandled(async () => {\n const siteId = sels.site().id;\n const siteEmployees = sels.users();\n const employees = siteEmployees.filter(\n (siteEmployee) => siteEmployee.id !== employee.id,\n );\n\n try {\n acts.setProcessing(true);\n\n await decorateWithNotificationsEff(\n {\n id: 'remove-siteEmployee',\n failureStyle: 'error',\n loading: msgs.deleting,\n success: 'Työntekijä poistettu',\n },\n setSiteEmployees({id: siteId, employees}),\n );\n\n acts.setProcessing(false);\n } catch (e) {\n acts.setProcessing(false);\n throw e;\n }\n\n await updateSiteUsers(siteId);\n });\n\n confirmerEffs.show({\n message: `Poistetaanko työntekijä ${employee.name}?`,\n okText: 'Poista',\n okStyle: 'danger',\n cancelText: msgs.cancel,\n onCancel: () => {},\n onOk: onConfirm,\n });\n};\ntypes.removeEmployee = P.Object;\n\neffects.addEmployeeToSite = guardHandled(async (formData) => {\n const siteId = sels.site().id;\n const siteOrganizationId = sels.organization().id;\n const selectedEmployee = await sels.selectedEmployee();\n const organizationId = sels\n .addableEmployees()\n .find((e) => e.id === formData.id).organizationId;\n\n const hourPrice =\n siteOrganizationId !== selectedEmployee.organizationId\n ? selectedEmployee.baseWage\n : null;\n\n try {\n acts.setProcessing(true);\n\n const userData = {\n ...formData,\n hourPrice: !formData.hourPrice ? hourPrice : formData.hourPrice,\n organizationId,\n employmentStart: formatDate(formData.employmentStart),\n employmentEnd: formatDate(formData.employmentEnd),\n };\n const newUsers = [...sels.users(), userData];\n\n await decorateWithNotificationsEff(\n {\n id: 'employee-form',\n failureStyle: 'error',\n success: msgs.saveSuccess,\n },\n setSiteEmployees({employees: newUsers, id: sels.site().id}),\n );\n\n await updateSiteUsers(siteId);\n\n acts.closeEmployeeModal();\n acts.setProcessing(false);\n } catch (e) {\n acts.setProcessing(false);\n throw e;\n }\n});\ntypes.addEmployeeToSite = P.Object;\n\neffects.updateEmployeeToSite = guardHandled(async (formData) => {\n const siteId = sels.site().id;\n const organizationId = sels.organization().id;\n const openedEmployeeId = sels.openedEmployeeId();\n const users = sels.users();\n const userToUpdate = users.find((u) => u.id === openedEmployeeId);\n const wageMultiplier = userToUpdate.wageMultiplier;\n\n try {\n acts.setProcessing(true);\n\n const userData = {\n ...userToUpdate,\n ...formData,\n hourPrice:\n userToUpdate.organizationId === organizationId\n ? parseInt(userToUpdate.baseWage) * wageMultiplier\n : parseInt(formData.hourPrice),\n employmentStart: formatDate(formData.employmentStart),\n employmentEnd: formatDate(formData.employmentEnd),\n };\n\n const newUsers = [...users.filter((x) => x.id !== openedEmployeeId), userData];\n\n await decorateWithNotificationsEff(\n {\n id: 'employee-form',\n failureStyle: 'error',\n success: msgs.saveSuccess,\n },\n setSiteEmployees({employees: newUsers, id: siteId}),\n );\n\n await updateSiteUsers(siteId);\n\n acts.closeEmployeeModal();\n acts.setProcessing(false);\n } catch (e) {\n acts.setProcessing(false);\n throw e;\n }\n});\ntypes.updateEmployeeToSite = P.Object;\n\neffects.updateSite = guardHandled(async (formData) => {\n const locationCoords = formData.location;\n const splittedCoords = locationCoords.split(',');\n\n const {location, ...data} = formData;\n\n try {\n acts.setProcessing(true);\n\n const site = await decorateWithNotificationsEff(\n {\n id: 'update-site',\n failureStyle: 'error',\n success: 'Tallennettu',\n },\n\n putSite({\n ...data,\n latitude: parseFloat(splittedCoords[0]),\n longitude: parseFloat(splittedCoords[1]),\n id: sels.site().id,\n }),\n );\n\n acts.updateSite(site);\n acts.toggleSiteModal();\n acts.setProcessing(false);\n } catch (e) {\n acts.setProcessing(false);\n throw e;\n }\n});\ntypes.updateSite = P.Object;\n\neffects.openExpenseModal = (expenseId) => {\n acts.openExpenseModal(expenseId);\n};\ntypes.openExpenseModal = Nullable(P.Number);\n\neffects.closeExpenseModal = () => {\n acts.closeExpenseModal();\n};\n\neffects.saveExpense = guardHandled(async (formData) => {\n const {expenseItems, ...data} = formData;\n const activeExpense = sels.activeExpense();\n\n try {\n acts.setProcessing(true);\n await decorateWithNotificationsEff(\n {\n id: 'save-expense',\n failureStyle: 'error',\n success: 'Tallennettu',\n },\n activeExpense\n ? putExpense({...data, id: activeExpense.id}).then((expense) => {\n const deletedItems = activeExpense.expenseItems.filter(\n (item) => !expenseItems.find((x) => x._id === item.id),\n );\n return Promise.all([\n ...expenseItems.map((item) =>\n item._id\n ? putExpenseItem({...item, id: item._id})\n : postExpenseItem({...item, expenseId: expense.id}),\n ),\n ...deletedItems.map((item) => deleteExpenseItem(item.id)),\n ]);\n })\n : postExpense({...data, siteId: sels.site().id}).then((expense) => {\n return Promise.all(\n expenseItems.map((item) =>\n postExpenseItem({...item, expenseId: expense.id}),\n ),\n );\n }),\n );\n\n acts.closeExpenseModal();\n acts.setProcessing(false);\n await fetchExpenses();\n } catch (e) {\n acts.setProcessing(false);\n throw e;\n }\n});\ntypes.saveExpense = P.Object;\n\neffects.removeExpense = (expense) => {\n const onConfirm = guardHandled(async () => {\n try {\n acts.setProcessing(true);\n await decorateWithNotificationsEff(\n {\n id: 'remove-expense',\n failureStyle: 'error',\n loading: msgs.deleting,\n success: 'Poistettu',\n },\n deleteExpense(expense.id),\n );\n acts.setProcessing(false);\n await fetchExpenses();\n } catch (e) {\n acts.setProcessing(false);\n throw e;\n }\n });\n\n confirmerEffs.show({\n message: `Poistetaanko kulu ${expense.title}?`,\n okText: 'Poista',\n okStyle: 'danger',\n cancelText: msgs.cancel,\n onCancel: () => {},\n onOk: onConfirm,\n });\n};\ntypes.removeExpense = P.Object;\n\neffects.updateExpensesQuery = guardHandled(async (query) => {\n acts.updateExpensesQuery(query);\n await fetchExpenses();\n});\ntypes.updateExpensesQuery = P.Object;\n\neffects.uploadFiles = guardHandled(async ({files, name}) => {\n try {\n acts.setProcessing(true);\n\n if (files.length) {\n const uploadedFiles = await decorateWithNotificationsEff(\n {\n id: 'upload-files',\n failureStyle: 'error',\n },\n postUploadFiles(files),\n );\n await decorateWithNotificationsEff(\n {\n id: 'post-documents',\n failureStyle: 'error',\n success: 'Tiedosto tallennettu',\n },\n postDocument({\n path: uploadedFiles.map((f) => f.path),\n name,\n siteId: sels.site().id,\n }),\n );\n }\n\n acts.setProcessing(false);\n acts.closeFileUploaderModal();\n await fetchDocuments();\n } catch (e) {\n acts.setProcessing(false);\n throw e;\n }\n});\ntypes.uploadFiles = P.Object;\n\neffects.removeDocument = (id) => {\n const onConfirm = guardHandled(async () => {\n try {\n acts.setProcessing(true);\n await decorateWithNotificationsEff(\n {\n id: 'remove-document',\n failureStyle: 'error',\n loading: msgs.deleting,\n success: 'Dokumentti poistettu',\n },\n deleteDocument(id),\n );\n acts.removeDocument(id);\n acts.setProcessing(false);\n } catch (e) {\n acts.setProcessing(false);\n throw e;\n }\n });\n\n confirmerEffs.show({\n message: 'Poistetaanko dokumentti?',\n okText: 'Poista',\n okStyle: 'danger',\n cancelText: msgs.cancel,\n onCancel: () => {},\n onOk: onConfirm,\n });\n};\ntypes.removeDocument = P.Number;\n\neffects.updateDocument = guardHandled(async (data) => {\n try {\n acts.setProcessing(true);\n const doc = await decorateWithNotificationsEff(\n {\n id: 'update-document',\n failureStyle: 'error',\n success: 'Dokumentti tallennettu',\n },\n putDocument({...data, id: sels.activeDocumentId()}),\n );\n acts.updateDocument(doc);\n acts.setProcessing(false);\n acts.closeDocumentEditor();\n } catch (e) {\n acts.setProcessing(false);\n throw e;\n }\n});\ntypes.updateDocument = P.Object;\n\neffects.openDocumentEditor = (documentId) => {\n acts.openDocumentEditor(documentId);\n};\ntypes.openDocumentEditor = Nullable(P.Number);\n\neffects.closeDocumentEditor = () => {\n acts.closeDocumentEditor();\n};\n\neffects.selectSubContractors = (subContractors) => {\n acts.selectsubContractors(subContractors);\n};\ntypes.selectSubContractors = P.Array;\n\neffects.clearSubContractorSelection = () => {\n acts.clearSubContractorSelection();\n};\n\neffects.openContractNoticeModal = guardHandled(async () => {\n acts.openContractNoticeModal();\n await fetchContractNoticeRows();\n});\n\neffects.closeContractNoticeModal = guardHandled(async () => {\n acts.closeContractNoticeModal();\n});\n\neffects.updateContractNoticeQuery = guardHandled(async (query) => {\n acts.updateContractNoticeQuery(query);\n await fetchContractNoticeRows();\n});\ntypes.updateContractNoticeQuery = P.Object;\n\neffects.sendContractNotice = async () => {\n const selection = sels.subContractorSelection();\n const rowsToSend = sels.contractNoticeRows().filter((x) => includes(x.id, selection));\n\n // TODO: Send selected rows to API\n const organizationIds = rowsToSend.map((o) => o.id);\n const organizationId = commonSels.organizationId();\n const id = sels.site().id;\n const {startDate, endDate} = sels.contractNoticeQuery();\n const data = {\n organizationId,\n organizationIds,\n startDate: startDate.toISOString(),\n endDate: endDate.toISOString(),\n };\n\n acts.setProcessing(true);\n const file = await decorateWithNotificationsEff(\n {\n id: 'send-employeenotice',\n failureStyle: 'warning',\n success: 'Urakkailmoitus luotu ladattavaksi',\n },\n sendContractNotice({id, data}),\n );\n\n acts.setContractNoticeUrl(file.url);\n acts.setProcessing(false);\n};\n\neffects.openEmployeeNoticeModal = guardHandled(async () => {\n acts.openEmployeeNoticeModal();\n await fetchEmployeeNoticeRows();\n});\n\neffects.closeEmployeeNoticeModal = () => {\n acts.closeEmployeeNoticeModal();\n};\n\neffects.sendEmployeeNotice = async () => {\n const selection = sels.employeeSelection();\n const rowsToSend = sels.employeeNoticeRows().filter((x) => includes(x.id, selection));\n\n // TODO: Send selected rows to API\n const userIds = rowsToSend.map((e) => e.id);\n const organizationId = commonSels.organizationId();\n const id = sels.site().id;\n const {startDate, endDate} = sels.employeeNoticeQuery();\n const data = {\n organizationId,\n userIds,\n startDate: startDate.toISOString(),\n endDate: endDate.toISOString(),\n };\n\n acts.setProcessing(true);\n const file = await decorateWithNotificationsEff(\n {\n id: 'send-employeenotice',\n failureStyle: 'warning',\n success: 'Tiedosto luotu ladattavaksi',\n },\n sendEmployeeNotice({id, data}),\n );\n\n acts.setEmployeeNoticeUrl(file.url);\n acts.setProcessing(false);\n};\n\neffects.selectEmployees = (employees) => {\n acts.selectEmployees(employees);\n};\ntypes.selectEmployees = P.Array;\n\neffects.clearEmployeeSelection = () => {\n acts.clearEmployeeSelection();\n};\n\neffects.updateEmployeeNoticeQuery = guardHandled(async (query) => {\n acts.updateEmployeeNoticeQuery(query);\n await fetchEmployeeNoticeRows();\n});\ntypes.updateEmployeeNoticeQuery = P.Object;\n\neffects.destroy = async () => {\n acts.reset();\n};\n\neffects.addOrganizationToSite = guardHandled(async (formData) => {\n const organizations = commonSels.organizations();\n\n try {\n acts.setProcessing(true);\n\n const newSubContractor = {id: formData.subcontractor};\n\n const siteOrganizations = [...organizations, newSubContractor];\n\n await decorateWithNotificationsEff(\n {\n id: 'site-subcontractors',\n failureStyle: 'error',\n success: msgs.saveSuccess,\n },\n setSiteSubContractors({organizations: siteOrganizations, id: sels.site().id}),\n );\n\n acts.toggleSiteModal();\n acts.setProcessing(false);\n } catch (e) {\n acts.setProcessing(false);\n throw e;\n }\n});\ntypes.addOrganizationToSite = P.Object;\n\nexport default createEffects(namespace, services.get('channel').dispatch, types, effects);\n","import React, {useEffect, useState} from 'react';\nimport {\n HStack,\n Select,\n Input,\n InputRightElement,\n InputGroup,\n Icon,\n} from '@chakra-ui/react';\nimport {FiSearch} from 'react-icons/fi';\n\nconst SiteEmployeeFilters = ({updateQuery, siteOrganizations}) => {\n const [nameFilter, setNameFilter] = useState('');\n const [stateFilter, setStateFilter] = useState('');\n const [orgFilter, setOrgFilter] = useState('');\n\n useEffect(() => {\n updateQuery({\n name: nameFilter,\n state: stateFilter,\n organization: orgFilter !== '' ? Number(orgFilter) : null,\n });\n }, [nameFilter, stateFilter, orgFilter]);\n\n return (\n \n \n setNameFilter(e.target.value)}\n minWidth=\"180px\"\n />\n \n \n \n \n \n \n \n );\n};\n\nexport default SiteEmployeeFilters;\n","import React, {useEffect} from 'react';\nimport {\n Modal,\n ModalOverlay,\n ModalContent,\n ModalBody,\n ModalHeader,\n ModalCloseButton,\n ModalFooter,\n Stack,\n Input,\n FormControl,\n FormLabel,\n Button,\n FormErrorMessage,\n HStack,\n Select,\n Divider,\n Checkbox,\n} from '@chakra-ui/react';\nimport {useForm} from 'react-hook-form';\nimport {ReactDatepicker, ReactSelect} from 'components';\n\nconst SiteEmployeeModal = ({\n addableEmployees,\n isOpen,\n isLoading,\n onClose = () => {},\n onSubmit = () => {},\n defaultValues = {},\n setSelectedEmployee,\n selectedEmployeeId,\n openedEmployee,\n organizationId,\n}) => {\n const {\n handleSubmit,\n watch,\n formState: {errors},\n control,\n register,\n } = useForm({\n defaultValues,\n });\n\n useEffect(async () => {\n watch((value) => {\n setSelectedEmployee(value.id);\n });\n }, [watch]);\n\n const selectedEmployee = selectedEmployeeId\n ? addableEmployees.find((u) => u.id === selectedEmployeeId)\n : null;\n\n const employeeWage = () => {\n if (selectedEmployee?.organizationId === organizationId) {\n return selectedEmployee?.baseWage * selectedEmployee?.wageMultiplier;\n } else {\n return selectedEmployee?.baseWage;\n }\n };\n\n return (\n \n \n \n \n {openedEmployee ? 'Muokkaa työntekijää' : 'Lisää työntekijä'}\n \n \n \n \n \n\n \n \n \n \n \n \n );\n};\n\nexport default SiteEmployeeModal;\n","import React, {useEffect, useState, useRef} from 'react';\nimport {\n HStack,\n FormControl,\n Input,\n InputRightElement,\n InputGroup,\n Icon,\n} from '@chakra-ui/react';\nimport {FiSearch} from 'react-icons/fi';\nimport {equals} from 'ramda';\nimport {useDebounce} from 'utils/react';\n\nconst CostCalculationFilters = ({query = {}, updateQuery = () => {}}) => {\n const querySearch = query['filter[title]'] || '';\n const [search, setSearch] = useState(querySearch);\n const debouncedSearch = useDebounce(search, 500);\n const isInitialMount = useRef(true);\n\n // update filter to query debounced to prevent flooding API with requests\n // value also kept in local state that is updated immediately\n useEffect(() => {\n if (isInitialMount.current) {\n isInitialMount.current = false;\n } else if (!equals(debouncedSearch, querySearch)) {\n updateQuery({'filter[title]': debouncedSearch});\n }\n }, [debouncedSearch]);\n\n useEffect(() => {\n if (querySearch !== search) {\n setSearch(querySearch);\n }\n }, [querySearch]);\n\n return (\n \n \n \n setSearch(e.target.value)}\n />\n \n \n \n \n \n \n );\n};\n\nexport default CostCalculationFilters;\n","export const formatNumber = (num) => {\n if (!num) return 0;\n\n if (num >= 1000000) {\n return (num / 1000000).toFixed(1).replace(/\\.0$/, '') + 'M';\n }\n\n if (num >= 1000) {\n return (num / 1000).toFixed(1).replace(/\\.0$/, '') + 'k';\n }\n\n return num;\n};\n","import React from 'react';\nimport {\n Table,\n Thead,\n Tbody,\n Tr,\n Th,\n Td,\n IconButton,\n Menu,\n Portal,\n MenuButton,\n MenuList,\n MenuItem,\n Text,\n Icon,\n Progress,\n Grid,\n MenuDivider,\n} from '@chakra-ui/react';\nimport {sum} from 'ramda';\nimport {FiMoreHorizontal, FiChevronDown} from 'react-icons/fi';\nimport {formatNumber} from 'utils/numbers';\n\nconst CostCalculationRow = ({expense, onRowClick, onDelete}) => {\n const budgetUsed = expense.expenseItems\n ? sum(expense.expenseItems.map((item) => item.sum || 0))\n : 0;\n const totalBudget = expense.totalBudget;\n\n return (\n onRowClick(expense.id)}\n >\n \n {expense.title}\n | \n | \n \n \n totalBudget ? 'red.600' : 'blue.600'}\n >{`${formatNumber(budgetUsed)}€`}\n \n | \n \n \n | \n
\n );\n};\n\nconst CostCalculationTable = ({\n expenses,\n openExpense = () => {},\n removeExpense = () => {},\n}) => {\n const totalBudget = sum(expenses.map((e) => e.totalBudget || 0));\n const totalBudgetUsed = sum(\n expenses.map((e) => sum(e.expenseItems.map((item) => item.sum || 0))),\n );\n\n return (\n <>\n \n \n \n \n Kulun nimi\n {}}\n size=\"sm\"\n icon={}\n />\n | \n | \n Budjetti | \n | \n
\n \n \n {expenses.map((e) => (\n \n ))}\n \n | \n \n Yhteensä\n | \n \n \n {`${formatNumber(totalBudgetUsed)}€`}\n \n {`${formatNumber(totalBudget)}€`}\n \n | \n | \n
\n \n
\n >\n );\n};\n\nexport default CostCalculationTable;\n","import React from 'react';\nimport {\n Modal,\n ModalOverlay,\n ModalContent,\n ModalHeader,\n ModalCloseButton,\n ModalBody,\n ModalFooter,\n Button,\n Box,\n Input,\n Icon,\n Text,\n FormLabel,\n FormControl,\n List,\n ListItem,\n ListIcon,\n FormErrorMessage,\n} from '@chakra-ui/react';\nimport {useDropzone} from 'react-dropzone';\nimport {useForm} from 'react-hook-form';\nimport {FiFolderPlus, FiCheckCircle} from 'react-icons/fi';\n\nconst DropzoneModal = ({isOpen, isLoading, onClose, onSubmit, defaultValues}) => {\n const {\n handleSubmit,\n register,\n formState: {errors},\n } = useForm({defaultValues});\n\n const {getRootProps, getInputProps, open, acceptedFiles} = useDropzone({\n // Disable click and keydown behavior\n noClick: true,\n noKeyboard: true,\n // Disable multi file upload\n multiple: false,\n });\n\n const submit = (data) => {\n onSubmit({...data, files: acceptedFiles});\n };\n\n const files = acceptedFiles.map((file) => (\n \n \n \n {file.path}\n \n
\n ));\n\n return (\n \n \n \n Tiedosto\n \n \n \n \n\n \n \n \n \n \n \n );\n};\n\nexport default DropzoneModal;\n","import React from 'react';\nimport {\n Modal,\n ModalOverlay,\n ModalContent,\n ModalBody,\n ModalHeader,\n ModalCloseButton,\n ModalFooter,\n Stack,\n Input,\n FormControl,\n FormLabel,\n Button,\n FormErrorMessage,\n IconButton,\n Icon,\n HStack,\n} from '@chakra-ui/react';\nimport {useForm, useFieldArray} from 'react-hook-form';\nimport {FiPlusCircle, FiTrash} from 'react-icons/fi';\nimport {ModalSubHeader, ReactDatepicker} from 'components';\n\nconst ExpenseModal = ({\n isOpen,\n isLoading,\n onClose = () => {},\n onSubmit = () => {},\n defaultValues = {},\n}) => {\n const {\n handleSubmit,\n formState: {errors},\n register,\n control,\n } = useForm({defaultValues});\n\n const {fields, append, remove} = useFieldArray({control, name: 'expenseItems'});\n\n return (\n \n \n \n Kustannus\n \n \n \n \n\n \n \n \n \n \n \n );\n};\n\nexport default ExpenseModal;\n","import React from 'react';\nimport {\n Modal,\n ModalOverlay,\n ModalContent,\n ModalBody,\n ModalHeader,\n ModalCloseButton,\n ModalFooter,\n Stack,\n Input,\n FormControl,\n FormLabel,\n Button,\n FormErrorMessage,\n} from '@chakra-ui/react';\nimport {useForm} from 'react-hook-form';\n\nconst DocumentEditorModal = ({\n isOpen,\n isLoading,\n onClose = () => {},\n onSubmit = () => {},\n defaultValues = {},\n}) => {\n const {\n handleSubmit,\n formState: {errors},\n register,\n } = useForm({defaultValues});\n\n return (\n \n \n \n Tiedosto\n \n \n \n \n\n \n \n \n \n \n \n );\n};\n\nexport default DocumentEditorModal;\n","import React from 'react';\nimport {\n Table,\n Thead,\n Tbody,\n Tr,\n Th,\n Td,\n IconButton,\n Menu,\n Portal,\n MenuButton,\n MenuList,\n MenuItem,\n MenuDivider,\n Text,\n Icon,\n} from '@chakra-ui/react';\nimport {FiMoreHorizontal, FiChevronDown} from 'react-icons/fi';\nimport {format, parseISO} from 'date-fns';\nimport {sToTime} from 'utils/time';\n\nconst ExtraCostRow = ({extraCost, onDelete, onEdit}) => {\n return (\n \n \n {extraCost.name}\n | \n {extraCost.user.name} | \n {sToTime(extraCost.duration)} | \n {format(parseISO(extraCost.createdAt), 'd.M.yyyy')} | \n \n \n | \n
\n );\n};\n\nconst ExtraCostsTable = ({\n extraCosts,\n onExtraCostClick,\n removeExtraCost,\n editExtraCost,\n}) => {\n return (\n <>\n \n \n \n \n Nimi\n {}}\n size=\"sm\"\n icon={}\n />\n | \n \n Työntekijä\n {}}\n size=\"sm\"\n icon={}\n />\n | \n \n Kesto\n {}}\n size=\"sm\"\n icon={}\n />\n | \n \n Pvm.\n {}}\n size=\"sm\"\n icon={}\n />\n | \n | \n
\n \n \n {extraCosts.map((extraCost) => (\n \n ))}\n \n
\n >\n );\n};\n\nexport default ExtraCostsTable;\n","import React, {useEffect, useState, useRef} from 'react';\nimport {HStack, FormControl, FormLabel} from '@chakra-ui/react';\nimport {ReactDatepicker} from 'components';\nimport effs from 'modules/sites/sitePage/effects';\n\nconst ExtraCostsFilters = ({query = {}, updateQuery = () => {}}) => {\n const date = new Date();\n const [endDate, setEndDate] = useState(date);\n const firstDayOfMonth = new Date(date.getFullYear(), date.getMonth(), 1);\n const [startDate, setStartDate] = useState(firstDayOfMonth);\n\n const isInitialMount = useRef(true);\n\n useEffect(() => {\n if (isInitialMount.current) {\n isInitialMount.current = false;\n } else if (!(startDate && endDate)) {\n return;\n }\n effs.fetchExtraCosts({startDate, endDate});\n }, [startDate, endDate]);\n\n return (\n \n \n Alkaen\n setStartDate(date)}\n />\n \n \n Päättyen\n setEndDate(date)}\n />\n \n \n );\n};\n\nexport default ExtraCostsFilters;\n","import React from 'react';\nimport {\n Table,\n Thead,\n Tbody,\n Tr,\n Th,\n Td,\n IconButton,\n Badge,\n Menu,\n Portal,\n MenuButton,\n MenuList,\n MenuItem,\n Text,\n Icon,\n Link,\n} from '@chakra-ui/react';\nimport {FiMoreHorizontal, FiChevronDown} from 'react-icons/fi';\nimport {activityStatuses} from 'dicts/data';\nimport {sToTime} from 'utils/time';\nimport {Link as RouterLink} from 'react-router-dom';\n\nimport {encodeQuery} from 'utils/url';\n\nconst SiteEmployeeRow = ({\n employee,\n onEmployeeClick,\n onDelete,\n onEdit,\n site,\n referrerUrl,\n}) => {\n const ActivityStatusBadge = (activityStatus) => {\n if (activityStatus === 'Poissa') {\n return Poissa;\n } else if (activityStatus === 'Paikalla') {\n return Paikalla;\n } else if (activityStatus === 'Tauko') {\n return Tauko;\n } else if (activityStatus === 'Nouto') {\n return Nouto;\n } else if (activityStatus === 'Siirtymä') {\n return Siirtymä;\n }\n };\n\n const showCorrectEmployeeWages = () => {\n if (site.organizationId !== employee.organizationId) {\n return employee.hourPrice;\n } else {\n return employee.baseWage * employee.wageMultiplier;\n }\n };\n\n return (\n {\n onEdit(employee.id);\n }}\n >\n \n {\n e.stopPropagation();\n onEmployeeClick(employee.id);\n }}\n as={RouterLink}\n to={`/employees/${employee.id}${encodeQuery({\n referrerUrl,\n referrerTitle: 'Työntekijä',\n })}`}\n >\n {employee.name}\n \n | \n {employee.organization.name} | \n {employee.jobTitle} | \n {sToTime(employee.siteMonthlyTime)} | \n {showCorrectEmployeeWages()}€/h | \n {ActivityStatusBadge(activityStatuses[employee.activityStatus])} | \n \n \n | \n
\n );\n};\n\nconst SiteEmployeesTable = ({\n employees,\n site,\n onEmployeeClick,\n removeEmployee,\n editEmployeeDetails,\n}) => {\n return (\n <>\n \n \n \n \n Nimi\n {}}\n size=\"sm\"\n icon={}\n />\n | \n \n Yritys\n {}}\n size=\"sm\"\n icon={}\n />\n | \n \n Tehtävänimike\n {}}\n size=\"sm\"\n icon={}\n />\n | \n \n Työtunnit\n {}}\n size=\"sm\"\n icon={}\n />\n | \n \n Palkka\n {}}\n size=\"sm\"\n icon={}\n />\n | \n \n Tila\n {}}\n size=\"sm\"\n icon={}\n />\n | \n | \n
\n \n \n {employees.map((e) => (\n \n ))}\n \n
\n >\n );\n};\n\nexport default SiteEmployeesTable;\n","import React, {memo} from 'react';\nimport {includes, all} from 'ramda';\nimport {Table, Thead, Tbody, Tr, Th, Td, Checkbox} from '@chakra-ui/react';\nimport {sToTime} from 'utils/time';\n\nconst EmployeeRow = memo(function EmployeeRow({employee, isSelected, select = () => {}}) {\n // how many unique time entry dates (ignoring hours) employee has\n const totalDays = employee.timeEntries\n .map((te) => te.startDate.split('T')[0])\n .filter((s, i, a) => a.indexOf(s) === i).length;\n\n return (\n \n \n e.stopPropagation()}\n onChange={(e) => select([{id: employee.id, selected: e.target.checked}])}\n />\n | \n \n {employee.name}\n | \n {employee.organizationName} | \n {employee.birthday} | \n {employee.vatNumber} | \n {sToTime(employee.totalTime.total)} | \n {totalDays} | \n
\n );\n});\n\nconst EmployeeNoticeTable = ({\n employees = [],\n selection = [],\n selectEmployees = () => {},\n clearSelection = () => {},\n}) => {\n const handleSelectAll = (selected) => {\n if (selected) {\n selectEmployees(employees.map((e) => ({id: e.id, selected})));\n } else {\n clearSelection();\n }\n };\n\n return (\n <>\n \n \n \n \n includes(employee.id, selection), employees)\n }\n onClick={(e) => e.stopPropagation()}\n onChange={(e) => handleSelectAll(e.target.checked)}\n />\n | \n Nimi | \n Yritys | \n Syntymäaika | \n Veronumero | \n Työaika | \n Työpäivät | \n
\n \n \n {employees.map((e) => (\n \n ))}\n \n
\n >\n );\n};\n\nexport default EmployeeNoticeTable;\n","import React from 'react';\nimport {HStack, FormControl, Select, FormLabel} from '@chakra-ui/react';\nimport {ReactDatepicker} from 'components';\n\nconst EmployeeNoticeFilters = ({\n updateQuery = () => {},\n query = {},\n organizations = [],\n}) => {\n return (\n \n \n Alkaen\n updateQuery({startDate: date})}\n />\n \n \n Päättyen\n updateQuery({endDate: date})}\n />\n \n \n Yritys\n \n \n \n );\n};\n\nexport default EmployeeNoticeFilters;\n","import React, {useMemo} from 'react';\nimport {Link} from 'react-router-dom';\nimport {\n Modal,\n ModalOverlay,\n ModalContent,\n ModalBody,\n ModalHeader,\n ModalCloseButton,\n ModalFooter,\n Button,\n Flex,\n HStack,\n Box,\n Text,\n Center,\n Spinner,\n} from '@chakra-ui/react';\nimport {sum} from 'ramda';\nimport {sToTime} from 'utils/time';\nimport EmployeeNoticeTable from './employee-notice-table';\nimport EmployeeNoticeFilters from './employee-notice-filters';\n\nconst EmployeeNoticeModal = ({\n isOpen,\n employeeNoticeUrl,\n isLoading,\n onClose = () => {},\n onSubmit = () => {},\n employeeRows = [],\n employeeRowsLoading,\n selection = [],\n selectEmployees = () => {},\n clearSelection = () => {},\n updateQuery = () => {},\n query,\n organizations = [],\n}) => {\n const totalEmployees = employeeRows.length;\n\n // sum of unique time entry dates (ignoring hours) each employee has\n const totalDays = useMemo(\n () =>\n sum(\n employeeRows.map(\n (e) =>\n e.timeEntries\n .map((te) => te.startDate.split('T')[0])\n .filter((s, i, a) => a.indexOf(s) === i).length,\n ),\n ),\n [employeeRows],\n );\n\n const totalHours = useMemo(\n () => sToTime(sum(employeeRows.map((e) => e.totalTime.total))),\n [employeeRows],\n );\n\n return (\n \n \n \n Työntekijäilmoitus\n \n \n \n \n \n \n \n Henkilöt\n \n {totalEmployees}\n \n \n \n Työpäivät\n \n {totalDays}\n \n \n \n Tunnit\n \n {totalHours}\n \n \n \n {employeeRowsLoading ? (\n \n \n \n ) : !employeeRows.length ? (\n \n Ei kirjauksia\n \n ) : (\n \n )}\n \n \n \n {!employeeNoticeUrl ? (\n \n ) : (\n \n \n \n )}\n \n \n \n );\n};\n\nexport default EmployeeNoticeModal;\n","import React from 'react';\nimport {Box, Text, Progress} from '@chakra-ui/react';\n\nconst EmployeeCosts = ({site, users}) => {\n const sumTotalEuros = (users) =>\n users.reduce((sum, {siteTotalWages}) => sum + siteTotalWages, 0);\n\n const employeeCosts = site.employeeCosts;\n const accumulatedWages = Math.floor(sumTotalEuros(users));\n const percentage = (accumulatedWages / employeeCosts) * 100;\n\n return (\n \n {accumulatedWages}€\n \n );\n};\n\nexport default EmployeeCosts;\n","import React, {useEffect} from 'react';\nimport {\n SimpleGrid,\n Stack,\n Text,\n Center,\n Spinner,\n IconButton,\n Icon,\n Badge,\n Box,\n Button,\n Avatar,\n AvatarGroup,\n} from '@chakra-ui/react';\nimport {Link} from 'react-router-dom';\nimport {pick} from 'ramda';\nimport {connect} from 'react-redux';\nimport {FiEdit, FiPlusCircle, FiFileText} from 'react-icons/fi';\n\nimport {applyState} from 'utils/redux';\nimport {getDateRangeStr} from 'utils/time';\nimport {encodeQuery, createReferrerUrl} from 'utils/url';\nimport effs from 'modules/sites/sitePage/effects';\nimport sels from 'modules/sites/sitePage/selectors';\nimport commonSels from 'modules/common/selectors';\nimport {fullAddress} from 'modules/sites/sitePage/utils';\nimport SiteEmployeeFilters from './components/siteEmployee-filters';\nimport SiteEmployeeModal from './components/siteEmployee-modal';\nimport CostCalculationFilters from './components/costCalculation-filters';\nimport CostCalculationTable from './components/costCalculation-table';\nimport DropzoneModal from './components/dropZone-modal';\nimport ExpenseModal from './components/expense-modal';\nimport DocumentEditorModal from './components/document-editor-modal';\nimport ExtraCostsTable from './components/extraCosts-table';\nimport ExtraCostsFilter from './components/extraCosts-filter';\n\nimport {\n Content,\n PageHeader,\n Card,\n CardHeader,\n List,\n ListItem,\n FileList,\n File,\n} from 'components';\nimport SiteModal from '../sites/components/site-modal';\nimport SiteEmployeesTable from './components/siteEmployee-table';\nimport EmployeeNoticeModal from './components/employee-notice-modal';\nimport EmployeeCosts from './components/employeeCosts';\nimport {siteStatuses} from 'dicts/data';\n\nconst SiteStatusBadge = (status) => {\n if (status === 'Passiivinen') {\n return Passiivinen;\n } else if (status === 'Aktiivinen') {\n return Aktiivinen;\n }\n};\n\nconst Site = ({\n match: {\n params: {siteId},\n },\n organizations,\n organizationId,\n employeeNoticeUrl,\n processing,\n loading,\n site,\n extraCosts,\n extraCostsLoading,\n siteModalOpen,\n siteDefaultVals,\n siteSubContractors,\n organization,\n employeeDefaultVals,\n selectedEmployee,\n selectedEmployeeId,\n employeeModalOpen,\n addableEmployees,\n users,\n location,\n history,\n fileUploaderModalOpen,\n query,\n filteredUsers,\n siteOrganizations,\n expenses,\n expensesLoading,\n expenseModalOpen,\n expenseDefaultVals,\n expensesQuery,\n openedEmployee,\n documents,\n documentsLoading,\n documentEditorOpen,\n documentEditorDefaultVals,\n employeeNoticeModalOpen,\n employeeSelection,\n employeeNoticeRows,\n employeeNoticeLoading,\n employeeNoticeQuery,\n}) => {\n useEffect(() => {\n effs.initialize(Number(siteId));\n\n return () => {\n effs.destroy();\n };\n }, []);\n\n const addableOrganizations = organizations.filter((o) => o.id !== organizationId);\n\n const referrerUrl = createReferrerUrl(location);\n\n const openEmployee = (id) => {\n history.push(\n `/employees/${id}${encodeQuery({referrerUrl, referrerTitle: 'Työmaat'})}`,\n );\n };\n return (\n \n \n \n \n \n \n\n {loading ? (\n \n \n \n ) : (\n \n \n \n effs.toggleSiteModal()}\n size=\"sm\"\n icon={}\n />\n }\n />\n\n \n \n {organization.name}\n \n \n {fullAddress(site)}\n \n \n {getDateRangeStr(site.startDate, site.endDate)}\n \n \n {site.budget}€\n \n \n {SiteStatusBadge(siteStatuses[site.state])}\n \n \n \n {siteSubContractors.map((subContractor) => (\n \n ))}\n \n \n
\n \n\n \n }\n />\n }\n />\n\n \n {documentsLoading ? (\n \n \n \n ) : documents.length ? (\n documents.map((doc) => (\n window.open(doc.url, '_blank')}\n onEdit={() => effs.openDocumentEditor(doc.id)}\n onDelete={() => effs.removeDocument(doc.id)}\n >\n {doc.name}\n \n ))\n ) : (\n Ei tiedostoja\n )}\n \n \n \n \n \n {\n effs.openEmployeeModal(null);\n }}\n size=\"sm\"\n icon={}\n />\n }\n >\n \n \n\n {loading ? (\n \n \n \n ) : !filteredUsers.length ? (\n Ei työntekijöitä\n ) : (\n effs.openEmployeeModal(id)}\n />\n )}\n \n \n \n \n Työntekijäkulut\n \n \n \n \n \n effs.openExpenseModal(null)}\n size=\"sm\"\n icon={}\n />\n }\n >\n \n \n {expensesLoading ? (\n \n \n \n ) : !expenses.length ? (\n Ei kuluja\n ) : (\n \n )}\n \n \n {}}\n size=\"sm\"\n icon={}\n />\n }\n >\n \n \n {extraCostsLoading ? (\n \n \n \n ) : !extraCosts.length ? (\n Ei erillisveloitettavia\n ) : (\n \n )}\n \n \n \n )}\n\n {employeeModalOpen && (\n effs.closeEmployeeModal()}\n addableEmployees={addableEmployees}\n onSubmit={openedEmployee ? effs.updateEmployeeToSite : effs.addEmployeeToSite}\n selectedEmployee={selectedEmployee}\n setSelectedEmployee={effs.setSelectedEmployeeId}\n defaultValues={employeeDefaultVals}\n selectedEmployeeId={selectedEmployeeId}\n openedEmployee={openedEmployee}\n organizationId={organizationId}\n />\n )}\n\n {siteModalOpen && (\n effs.toggleSiteModal()}\n onSubmit={effs.updateSite}\n isNew={false}\n organizations={organizations}\n addableOrganizations={addableOrganizations}\n defaultSiteSubContractors={siteSubContractors}\n organizationId={organizationId}\n defaultValues={siteDefaultVals}\n />\n )}\n\n {fileUploaderModalOpen && (\n \n )}\n\n {expenseModalOpen && (\n effs.closeExpenseModal()}\n onSubmit={effs.saveExpense}\n defaultValues={expenseDefaultVals}\n />\n )}\n\n {documentEditorOpen && (\n effs.closeDocumentEditor()}\n onSubmit={effs.updateDocument}\n defaultValues={documentEditorDefaultVals}\n />\n )}\n\n {employeeNoticeModalOpen && (\n effs.closeEmployeeNoticeModal()}\n onSubmit={() => effs.sendEmployeeNotice()}\n employeeRows={employeeNoticeRows}\n employeeRowsLoading={employeeNoticeLoading}\n selection={employeeSelection}\n selectEmployees={effs.selectEmployees}\n clearSelection={effs.clearEmployeeSelection}\n updateQuery={effs.updateEmployeeNoticeQuery}\n query={employeeNoticeQuery}\n organizations={siteOrganizations}\n />\n )}\n \n );\n};\n\nexport default connect(\n applyState({\n ...pick(\n [\n 'processing',\n 'loading',\n 'employeeNoticeUrl',\n 'site',\n 'siteModalOpen',\n 'siteDefaultVals',\n 'organization',\n 'extraCosts',\n 'extraCostsLoading',\n 'employeeModalOpen',\n 'employeeDefaultVals',\n 'selectedEmployeeDefaultVals',\n 'selectedEmployeeId',\n 'selectedEmployee',\n 'addableEmployees',\n 'users',\n 'fileUploaderModalOpen',\n 'query',\n 'filteredUsers',\n 'selectSubContractors',\n 'siteOrganizations',\n 'siteSubContractors',\n 'expenseModalOpen',\n 'expenses',\n 'expensesLoading',\n 'expenseDefaultVals',\n 'expensesQuery',\n 'openedEmployee',\n 'documents',\n 'documentsLoading',\n 'documentEditorOpen',\n 'documentEditorDefaultVals',\n 'employeeNoticeModalOpen',\n 'employeeSelection',\n 'employeeNoticeRows',\n 'employeeNoticeLoading',\n 'employeeNoticeQuery',\n ],\n sels,\n ),\n ...pick(['organizations', 'organizationId'], commonSels),\n }),\n)(Site);\n","import namespace from '../namespace';\nimport name from './name';\n\nexport default [...namespace, name];\n","export default 'employees';\n","import namespace from '../namespace';\nimport name from './name';\n\nexport default [...namespace, name];\n","export default 'employeesPage';\n","import namespace from './namespace';\nimport {scopedStore} from 'utils/redux';\nimport {emptyPagination} from 'constants/pagination';\n\nexport const initialState = {\n query: {\n page: 1,\n sort: 'name',\n 'filter[name]': '',\n 'filter[organizationId]': '',\n },\n processing: false,\n pagination: emptyPagination,\n loading: false,\n employees: [],\n activeEmployees: [],\n employeeModalOpen: false,\n organizations: [],\n};\n\nexport const cases = {\n updateQuery: (st, all, payload) => {\n return {\n ...st,\n query: {...st.query, ...payload},\n loading: true,\n };\n },\n\n setEmployees: (st, all, payload) => {\n return {\n ...st,\n employees: payload.data,\n pagination: payload.pagination,\n loading: false,\n };\n },\n\n setActiveEmployees: (st, all, data) => {\n return {\n ...st,\n activeEmployees: data,\n };\n },\n\n setOrganizations: (st, all, organizations) => {\n return {...st, organizations, loading: false};\n },\n\n setLoading: (st, all, loading) => {\n return {...st, loading};\n },\n\n setProcessing: (st, all, processing) => {\n return {...st, processing};\n },\n\n openEmployeeModal: (st) => {\n return {...st, employeeModalOpen: true};\n },\n\n closeEmployeeModal: (st) => {\n return {...st, employeeModalOpen: false};\n },\n\n reset: (st) => {\n return initialState;\n },\n};\n\nexport const {actions, reducer} = scopedStore(namespace, cases, initialState);\n","import {actions} from './store';\nimport services from 'services';\nimport {bindActions} from 'utils/redux';\n\nexport default services\n .waitFor('store')\n .then((store) => bindActions(store.dispatch, actions));\n","import {evolve} from 'ramda';\nimport {replace} from 'utils/objects';\nimport {initialState} from './store';\n\nexport const parseUrlQuery = (query) => {\n const vals = evolve(\n {\n page: Number,\n },\n query,\n );\n return replace(vals, initialState.query);\n};\n\nexport const formatFetchableQuery = (query) => {\n return query;\n};\n","import namespace from './namespace';\nimport {scopedSelectors} from 'utils/redux';\nimport {createSelector} from 'reselect';\nimport {formatFetchableQuery} from './utils';\n\nlet sels = {};\n\nsels.processing = (st) => st.processing;\n\nsels.loading = (st) => st.loading;\n\nsels.employeeModalOpen = (st) => st.employeeModalOpen;\n\nsels.query = (st) => st.query;\n\nsels.queryFetchable = createSelector(sels.query, (q) => formatFetchableQuery(q));\n\nsels.employees = (st) => st.employees;\n\nsels.activeEmployees = (st) => st.activeEmployees;\n\nsels.pagination = (st) => st.pagination;\n\nexport default scopedSelectors(namespace, sels);\n","import selectors from './selectors';\nimport services from 'services';\nimport {bindSelectors} from 'utils/redux';\n\nexport default services\n .waitFor('store')\n .then((store) => bindSelectors(store.getState, selectors));\n","import services from 'services';\nimport {describeThrow} from 'utils/errors';\nimport {prop} from 'ramda';\nimport msgs from 'dicts/messages';\n\nlet httpJson = null;\nservices.waitFor('api').then((x) => (httpJson = x.httpJson));\n\nexport const getEmployees = (query = {}) =>\n httpJson('get', '/users', query).catch(describeThrow(msgs.fetchFailed));\n\nexport const postEmployee = (body) =>\n httpJson('post', '/users', {}, {body})\n .catch(describeThrow(msgs.saveFailed))\n .then(prop('data'));\n\nexport const getActiveUsers = () =>\n httpJson('get', '/users/getActiveSiteUsersToday', {}).catch(\n describeThrow(msgs.fetchFailed),\n );\n\nexport const deleteEmployee = (id) =>\n httpJson('delete', `/users/${id}`).catch(describeThrow(msgs.deleteFailed));\n","import {mergeLeft} from 'ramda';\nimport namespace from './namespace';\nimport {createEffects} from 'utils/events';\nimport services from 'services';\nimport {setPageTitleMessage, decorateWithNotificationsEff} from 'io/app';\nimport _acts from './boundActions';\nimport _sels from './boundSelectors';\nimport {P} from 'utils/types';\nimport {guardHandled} from 'io/errors';\nimport {pushQuery, getQuery} from 'io/history';\nimport {getEmployees, postEmployee, deleteEmployee, getActiveUsers} from './io';\nimport msgs from 'dicts/messages';\nimport confirmerEffs from 'modules/confirmer/effects';\nimport commonEffs from 'modules/common/effects';\nimport _commonSels from 'modules/common/boundSelectors';\nimport {parseUrlQuery} from './utils';\n\nlet acts, sels, commonSels;\n_acts.then((x) => (acts = x));\n_sels.then((x) => (sels = x));\n_commonSels.then((x) => (commonSels = x));\n\nlet effects = {};\nlet types = {};\n\nconst fetchEmployees = (notifyOpts = {}) => {\n acts.setLoading(true);\n\n return decorateWithNotificationsEff(\n {id: 'get-employees', failureStyle: 'warning', ...notifyOpts},\n getEmployees(sels.queryFetchable()),\n ).then(({data, meta}) => {\n acts.setEmployees({data, pagination: meta});\n });\n};\n\nconst getActiveEmployees = (notifyOpts = {}) => {\n const organizationId = commonSels.organizationId();\n acts.setLoading(true);\n\n return decorateWithNotificationsEff(\n {id: 'get-activeEmployees', failureStyle: 'warning', ...notifyOpts},\n getActiveUsers(),\n ).then((data) => {\n const activeUsers = data.filter(\n (user) =>\n user.organizationId === organizationId ||\n user.site.organization_id === organizationId,\n );\n acts.setActiveEmployees(activeUsers);\n acts.setLoading(false);\n //acts.setActiveEmployees({data});\n });\n};\n\neffects.initialize = guardHandled(async () => {\n setPageTitleMessage('Työntekijät');\n\n const query = parseUrlQuery(getQuery());\n acts.updateQuery(query);\n\n await fetchEmployees();\n await getActiveEmployees();\n await commonEffs.fetchOrganizations();\n});\n\neffects.openEmployeeModal = () => {\n acts.openEmployeeModal();\n};\n\neffects.closeEmployeeModal = () => {\n acts.closeEmployeeModal();\n};\n\neffects.createEmployee = guardHandled(async (formData) => {\n try {\n acts.setProcessing(true);\n await decorateWithNotificationsEff(\n {\n id: 'addEmployee-form',\n failureStyle: 'error',\n success: 'Tallennettu',\n },\n postEmployee(formData),\n );\n acts.closeEmployeeModal();\n acts.setProcessing(false);\n } catch (e) {\n acts.setProcessing(false);\n throw e;\n }\n\n await fetchEmployees();\n});\n\ntypes.createEmployee = P.Object;\n\neffects.removeEmployee = (employee) => {\n const onConfirm = guardHandled(async () => {\n try {\n acts.setProcessing(true);\n await decorateWithNotificationsEff(\n {\n id: 'remove-employee',\n failureStyle: 'error',\n loading: msgs.deleting,\n success: 'Työntekijä poistettu',\n },\n deleteEmployee(employee.id),\n );\n acts.setProcessing(false);\n } catch (e) {\n acts.setProcessing(false);\n throw e;\n }\n\n await fetchEmployees();\n });\n\n confirmerEffs.show({\n message: `Poistetaanko työntekijä ${employee.name}?`,\n okText: 'Poista',\n okStyle: 'danger',\n cancelText: msgs.cancel,\n onCancel: () => {},\n onOk: onConfirm,\n });\n};\ntypes.removeEmployee = P.Object;\n\neffects.updateQuery = guardHandled(async (query) => {\n acts.updateQuery(query);\n pushQuery(mergeLeft(sels.query()));\n\n await fetchEmployees();\n});\ntypes.updateQuery = P.Object;\n\neffects.destroy = async () => {\n acts.reset();\n};\n\nexport default createEffects(namespace, services.get('channel').dispatch, types, effects);\n","import React from 'react';\nimport {\n Table,\n Thead,\n Tbody,\n Tr,\n Th,\n Td,\n IconButton,\n Badge,\n Menu,\n Portal,\n MenuButton,\n MenuList,\n MenuItem,\n Text,\n Icon,\n HStack,\n Spacer,\n} from '@chakra-ui/react';\n\nimport {FiMoreHorizontal, FiChevronDown} from 'react-icons/fi';\nimport _commonSels from 'modules/common/boundSelectors';\n\nimport {emptyPagination} from 'constants/pagination';\nimport {Paginator} from 'components';\n\nlet commonSels;\n_commonSels.then((x) => (commonSels = x));\n\nconst EmployeeRow = ({employee, onRowClick, onDelete, referrerUrl}) => {\n const jobStatus = (id) => {\n const organizationId = commonSels.organization().id;\n\n if (id === organizationId) {\n return Palkkasuhde;\n } else {\n return Alihankinta;\n }\n };\n\n return (\n onRowClick(employee.id)}\n _hover={{bg: 'gray.50', cursor: 'pointer'}}\n >\n \n {employee.name}\n | \n {employee.address} | \n {employee.organization.name} | \n {jobStatus(employee.organizationId)} | \n\n \n \n | \n
\n );\n};\n\nconst EmployeesTable = ({\n employees,\n onEmployeeClick,\n removeEmployee,\n processing,\n pagination = emptyPagination,\n onPageSelect = () => {},\n openEmployee = () => {},\n}) => {\n return (\n <>\n \n \n \n \n Nimi\n {}}\n size=\"sm\"\n icon={}\n />\n | \n \n Osoite\n {}}\n size=\"sm\"\n icon={}\n />\n | \n \n Yritys\n {}}\n size=\"sm\"\n />\n | \n \n Työsuhde\n {}}\n size=\"sm\"\n icon={}\n />\n | \n | \n
\n \n \n {employees.map((e) => (\n \n ))}\n \n
\n \n \n \n \n >\n );\n};\n\nexport default EmployeesTable;\n","import React, {useEffect, useState, useRef} from 'react';\nimport {\n HStack,\n FormControl,\n FormLabel,\n Select,\n Input,\n InputRightElement,\n InputGroup,\n Icon,\n} from '@chakra-ui/react';\nimport {FiSearch} from 'react-icons/fi';\nimport {equals} from 'ramda';\nimport {useDebounce} from 'utils/react';\n\nconst EmployeeFilters = ({query = {}, updateQuery = () => {}, organizations = []}) => {\n const querySearch = query['filter[name]'] || '';\n const [search, setSearch] = useState(querySearch);\n const debouncedSearch = useDebounce(search, 500);\n const isInitialMount = useRef(true);\n\n // update filter to query debounced to prevent flooding API with requests\n // value also kept in local state that is updated immediately\n useEffect(() => {\n if (isInitialMount.current) {\n isInitialMount.current = false;\n } else if (!equals(debouncedSearch, querySearch)) {\n updateQuery({'filter[name]': debouncedSearch});\n }\n }, [debouncedSearch]);\n\n useEffect(() => {\n if (querySearch !== search) {\n setSearch(querySearch);\n }\n }, [querySearch]);\n\n return (\n \n \n Vapaahaku\n \n setSearch(e.target.value)}\n />\n \n \n \n \n \n\n {/* TODO: Add this back once API has support for such filter\n\n \n Työsuhde\n \n \n\n */}\n\n \n Yritys\n \n \n \n );\n};\n\nexport default EmployeeFilters;\n","import React, {useState} from 'react';\nimport {\n Modal,\n ModalOverlay,\n ModalContent,\n ModalBody,\n ModalHeader,\n ModalCloseButton,\n ModalFooter,\n Stack,\n Input,\n FormControl,\n Text,\n FormLabel,\n InputRightElement,\n IconButton,\n InputGroup,\n Button,\n FormErrorMessage,\n HStack,\n} from '@chakra-ui/react';\nimport {FiEye, FiEyeOff} from 'react-icons/fi';\n\nimport {useForm} from 'react-hook-form';\nimport {ReactSelect} from 'components';\n\nconst EmployeeModal = ({\n isOpen,\n isLoading,\n onClose = () => {},\n onSubmit = () => {},\n defaultValues = {},\n isNew = true,\n organizations,\n}) => {\n const {\n handleSubmit,\n formState: {errors},\n control,\n watch,\n register,\n } = useForm({defaultValues});\n const [show, setShow] = useState(false);\n const handleClick = () => setShow(!show);\n\n const role = watch('role');\n\n const showPasswordInput = !role ? false : role === 'employee' ? false : true;\n\n const userTypes = [\n {value: 'employee', label: 'Työntekijä'},\n {value: 'manager', label: 'Työnantaja'},\n {value: 'admin', label: 'Admin'},\n ];\n\n const onSubmitActual = (formData) => {\n if (formData.password !== '') {\n onSubmit(formData);\n } else {\n const {password, ...data} = formData;\n onSubmit(data);\n }\n };\n\n return (\n \n \n \n Työntekijä\n \n \n \n \n\n \n \n \n \n \n \n );\n};\n\nexport default EmployeeModal;\n","import React from 'react';\nimport {Table, Thead, Tbody, Tr, Th, Td, IconButton, Badge, Icon} from '@chakra-ui/react';\n\nimport {FiChevronDown} from 'react-icons/fi';\nimport {activityStatuses} from 'dicts/data';\nimport {sToTime} from 'utils/time';\n\nconst PresentEmployeeRow = ({employee, onRowClick, referrerUrl}) => {\n const ActivityStatusBadge = (activityStatus) => {\n if (activityStatus === 'Poissa') {\n return Poissa;\n } else if (activityStatus === 'Paikalla') {\n return Paikalla;\n } else if (activityStatus === 'Tauko') {\n return Tauko;\n } else if (activityStatus === 'Nouto') {\n return Nouto;\n } else if (activityStatus === 'Siirtymä') {\n return Siirtymä;\n }\n };\n\n return (\n onRowClick(employee.id)}\n _hover={{bg: 'gray.50', cursor: 'pointer'}}\n >\n \n {employee.name}\n | \n {employee.site.name} | \n {sToTime(employee.timeEntries)} | \n {ActivityStatusBadge(activityStatuses[employee.activityStatus])} | \n
\n );\n};\n\nconst PresentEmployeesTable = ({\n employees,\n onEmployeeClick,\n processing,\n openEmployee = () => {},\n}) => {\n return (\n <>\n \n \n \n \n Nimi\n {}}\n size=\"sm\"\n icon={}\n />\n | \n \n Työmaa\n {}}\n size=\"sm\"\n icon={}\n />\n | \n \n Päivän tunnit\n {}}\n size=\"sm\"\n icon={}\n />\n | \n \n Tila\n {}}\n size=\"sm\"\n icon={}\n />\n | \n
\n \n \n {employees.map((e) => (\n \n ))}\n \n
\n >\n );\n};\n\nexport default PresentEmployeesTable;\n","import React, {useEffect, useState} from 'react';\nimport {\n HStack,\n Box,\n Spacer,\n Button,\n Text,\n Spinner,\n Center,\n VStack,\n Switch,\n} from '@chakra-ui/react';\nimport {FiPlusCircle} from 'react-icons/fi';\nimport {pick} from 'ramda';\nimport {connect} from 'react-redux';\n\nimport {applyState} from 'utils/redux';\nimport {encodeQuery, createReferrerUrl} from 'utils/url';\nimport effs from 'modules/employees/employeesPage/effects';\nimport sels from 'modules/employees/employeesPage/selectors';\nimport commonSels from 'modules/common/selectors';\n\nimport {Content, Card} from 'components';\nimport EmployeeFilters from './components/employees-filters';\nimport EmployeesTable from './components/employees-table';\nimport EmployeeModal from './components/employees-modal';\nimport PresentEmployeesTable from './components/presentEmployees-table';\n\nconst Employees = ({\n history,\n location,\n processing,\n loading,\n pagination,\n employees,\n activeEmployees,\n employeeModalOpen,\n presentEmployeesModalOpen,\n organizations,\n query,\n}) => {\n useEffect(() => {\n effs.initialize();\n\n return () => {\n effs.destroy();\n };\n }, []);\n\n const referrerUrl = createReferrerUrl(location);\n const [checked, setChecked] = useState(true);\n\n const openEmployee = (id) => {\n history.push(\n `/employees/${id}${encodeQuery({referrerUrl, referrerTitle: 'Työntekijät'})}`,\n );\n };\n\n return (\n \n \n \n \n Aktiiviset työntekijät\n \n Näytä aktiiviset työntekijät\n {\n setChecked(!checked);\n }}\n />\n \n \n\n {checked ? (\n loading ? (\n \n \n \n ) : !activeEmployees.length ? (\n Ei aktiivisia työntekijöitä\n ) : (\n \n )\n ) : null}\n \n \n \n Työntekijät\n \n \n \n \n {loading ? (\n \n \n \n ) : !employees.length ? (\n Ei työntekijöitä\n ) : (\n effs.updateQuery({page})}\n openEmployee={openEmployee}\n removeEmployee={effs.removeEmployee}\n referrerUrl={referrerUrl}\n />\n )}\n \n \n\n {employeeModalOpen && (\n effs.closeEmployeeModal()}\n onSubmit={effs.createEmployee}\n />\n )}\n \n );\n};\n\nexport default connect(\n applyState({\n ...pick(\n [\n 'processing',\n 'loading',\n 'employeeModalOpen',\n 'presentEmployeesModalOpen',\n 'employees',\n 'pagination',\n 'query',\n 'organizations',\n 'activeEmployees',\n ],\n sels,\n ),\n ...pick(['organizations'], commonSels),\n }),\n)(Employees);\n","import namespace from '../namespace';\nimport name from './name';\n\nexport default [...namespace, name];\n","export default 'employeePage';\n","import namespace from './namespace';\nimport {scopedStore} from 'utils/redux';\n\nexport const initialState = {\n employee: [],\n sites: [],\n workPermits: [],\n openedPermitId: [],\n processing: false,\n loading: false,\n entriesLoading: false,\n employeeModalOpen: false,\n workPermitModalOpen: false,\n siteEntries: [],\n dateRange: {startDate: null, endDate: null},\n siteIdFilter: '',\n};\n\nexport const cases = {\n updateSiteIdFilter: (st, all, id) => {\n return {...st, siteIdFilter: id};\n },\n\n updateDateRange: (st, all, range) => {\n return {...st, dateRange: {startDate: range.startDate, endDate: range.endDate}};\n },\n\n setEmployee: (st, all, payload) => {\n return {\n ...st,\n employee: payload.data,\n loading: false,\n sites: payload.data.sites,\n workPermits: payload.data.workPermits,\n };\n },\n\n setWorkPermits: (st, all, payload) => {\n return {...st, workPermits: payload};\n },\n\n updateEmployee: (st, all, payload) => {\n return {\n ...st,\n employee: {...st.employee, ...payload},\n };\n },\n\n setLoading: (st, all, loading) => {\n return {...st, loading};\n },\n\n setEntriesLoading: (st, all, entriesLoading) => {\n return {...st, entriesLoading};\n },\n\n setProcessing: (st, all, processing) => {\n return {...st, processing};\n },\n\n openWorkPermitModal: (st, all, id) => {\n return {...st, workPermitModalOpen: true, openedPermitId: id};\n },\n\n closeWorkPermitModal: (st, all) => {\n return {...st, workPermitModalOpen: false, openedPermitId: null};\n },\n\n openEmployeeModal: (st, all) => {\n return {...st, employeeModalOpen: true};\n },\n\n closeEmployeeModal: (st, all) => {\n return {...st, employeeModalOpen: false};\n },\n\n setSiteEntries: (st, all, entries) => {\n return {...st, siteEntries: entries, setLoading: false};\n },\n\n reset: (st) => {\n return initialState;\n },\n};\n\nexport const {actions, reducer} = scopedStore(namespace, cases, initialState);\n","import {actions} from './store';\nimport services from 'services';\nimport {bindActions} from 'utils/redux';\n\nexport default services\n .waitFor('store')\n .then((store) => bindActions(store.dispatch, actions));\n","import namespace from './namespace';\nimport {createSelector} from 'reselect';\nimport {scopedSelectors} from 'utils/redux';\nimport {\n formatEmployeeDefaultVals,\n timeEntryQueryFetchable,\n formatWorkPermitDefaultVals,\n} from './utils';\n\nlet sels = {};\n\nsels.processing = (st) => st.processing;\n\nsels.loading = (st) => st.loading;\n\nsels.entriesLoading = (st) => st.entriesLoading;\n\nsels.employee = (st) => st.employee;\n\nsels.employeeId = (st) => st.employee.id;\n\nsels.siteIdFilter = (st) => st.siteIdFilter;\n\nsels.employeeModalOpen = (st) => st.employeeModalOpen;\n\nsels.employeeDefaultVals = createSelector(sels.employee, (employee) =>\n formatEmployeeDefaultVals(employee),\n);\n\nsels.workPermits = (st) => st.workPermits;\n\nsels.openedPermitId = (st) => st.openedPermitId;\n\nsels.selectedWorkPermit = createSelector(\n [sels.openedPermitId, sels.workPermits],\n (permitId, workPermits) => workPermits.find((permit) => permit.id === permitId),\n);\n\nsels.permitDefaultValues = createSelector(\n [sels.selectedWorkPermit],\n (selectedWorkPermit) => formatWorkPermitDefaultVals(selectedWorkPermit),\n);\n\nsels.workPermitModalOpen = (st) => st.workPermitModalOpen;\n\nsels.dateRange = (st) => st.dateRange;\n\nsels.timeEntryQueryFetchable = createSelector(\n [sels.dateRange, sels.siteIdFilter, sels.employeeId],\n (dateRange, siteIdFilter, employeeId) =>\n timeEntryQueryFetchable({dateRange, siteIdFilter, employeeId}),\n);\n\nsels.sites = (st) => st.sites;\n\nsels.siteEntries = (st) => st.siteEntries;\n\nexport default scopedSelectors(namespace, sels);\n","export const formatEmployeeDefaultVals = (employee) => {\n if (!employee) return {};\n\n return {\n name: employee.name,\n email: employee.email,\n address: employee.address,\n jobTitle: employee.jobTitle,\n birthday: employee.birthday,\n phone: employee.phone,\n vatNumber: employee.vatNumber,\n ssn: employee.ssn,\n };\n};\n\nexport const formatWorkPermitDefaultVals = (selectedWorkPermit) => {\n if (!selectedWorkPermit) return {};\n\n return {\n name: selectedWorkPermit.name,\n expires_at: new Date(selectedWorkPermit.expiresAt),\n description: selectedWorkPermit.description,\n number: selectedWorkPermit.number,\n admitter: selectedWorkPermit.admitter,\n };\n};\n\nexport const timeEntryQueryFetchable = ({siteIdFilter, dateRange, employeeId}) => {\n const startDate = dateRange.startDate?.toISOString();\n const endDate = dateRange.endDate?.toISOString();\n\n return {\n 'filter[startDateBetween]': `${startDate},${endDate}`,\n 'filter[siteId]': siteIdFilter,\n 'filter[userId]': employeeId,\n groupByDaysAndSites: 'true',\n };\n};\n","import selectors from './selectors';\nimport services from 'services';\nimport {bindSelectors} from 'utils/redux';\n\nexport default services\n .waitFor('store')\n .then((store) => bindSelectors(store.getState, selectors));\n","import {prop} from 'ramda';\nimport services from 'services';\nimport {describeThrow} from 'utils/errors';\nimport msgs from 'dicts/messages';\n\nlet httpJson = null;\nservices.waitFor('api').then((x) => (httpJson = x.httpJson));\n\nexport const getEmployee = (id) =>\n httpJson('get', `/users/${id}`, {include: 'sites,timeEntries, workPermits'}).catch(\n describeThrow(msgs.fetchFailed),\n );\n\nexport const getDayEntries = (query) =>\n httpJson('get', '/timeEntries', query, {})\n .catch(describeThrow(msgs.saveFailed))\n .then(prop('data'));\n\nexport const updateEmployee = (employee) =>\n httpJson('put', `/users/${employee.id}`, {}, {body: employee})\n .catch(describeThrow(msgs.saveFailed))\n .then(prop('data'));\n\nexport const createWorkPermit = (data) =>\n httpJson('post', '/workPermits', {}, {body: data})\n .catch(describeThrow(msgs.saveFailed))\n .then(prop('data'));\n\nexport const deleteWorkPermit = (id) =>\n httpJson('delete', `/workPermits/${id}`).catch(describeThrow(msgs.deleteFailed));\n\nexport const updateWorkPermit = ({permitId, permitData}) =>\n httpJson('put', `/workPermits/${permitId}`, {}, {body: permitData});\n","import namespace from './namespace';\nimport {createEffects} from 'utils/events';\nimport services from 'services';\nimport {setPageTitleMessage, decorateWithNotificationsEff} from 'io/app';\nimport _acts from './boundActions';\nimport _sels from './boundSelectors';\nimport {P, Record} from 'utils/types';\nimport {guardHandled, logInfo} from 'io/errors';\nimport msgs from 'dicts/messages';\nimport confirmerEffs from 'modules/confirmer/effects';\nimport {\n getDayEntries,\n getEmployee,\n updateEmployee,\n createWorkPermit,\n deleteWorkPermit,\n updateWorkPermit,\n} from './io';\n\nlet acts;\n_acts.then((x) => (acts = x));\nlet sels;\n_sels.then((x) => (sels = x));\n\nlet effects = {};\nlet types = {};\n\neffects.initialize = guardHandled(async (id) => {\n const date = new Date();\n const firstDayOfMonth = new Date(date.getFullYear(), date.getMonth(), 1);\n const lastDayOfMonth = new Date();\n\n acts.updateDateRange({startDate: firstDayOfMonth, endDate: lastDayOfMonth});\n\n acts.setLoading(true);\n const employee = await decorateWithNotificationsEff(\n {id: 'get-employee', failureStyle: 'warning'},\n getEmployee(id),\n );\n\n acts.setEmployee(employee);\n setPageTitleMessage(employee.data.name);\n\n //await fetchDayEntriesEff();\n});\ntypes.initialize = P.Number;\n\neffects.updateDateRange = guardHandled(async ({startDate, endDate}) => {\n acts.updateDateRange({startDate: startDate, endDate: endDate});\n\n await fetchDayEntriesEff();\n});\ntypes.updateDateRange = Record({startDate: P.Date, endDate: P.Date});\n\neffects.updateSiteIdFilter = guardHandled(async (id) => {\n acts.updateSiteIdFilter(id);\n\n await fetchDayEntriesEff();\n});\ntypes.updateSiteIdFilter = P.Object;\n\nconst fetchDayEntriesEff = async () => {\n acts.setEntriesLoading(true);\n const query = sels.timeEntryQueryFetchable();\n\n try {\n const siteEntries = await getDayEntries(query);\n await acts.setSiteEntries(siteEntries);\n } catch (e) {\n logInfo(e);\n }\n acts.setEntriesLoading(false);\n};\n\neffects.updateEmployee = guardHandled(async (formData) => {\n const employeeId = sels.employee().id;\n const employeeSites = sels.employee().sites;\n const employeesActiveSite = employeeSites.filter((s) => s.activityStatus !== 'away');\n const isActive = employeesActiveSite.length > 0 ? true : false;\n\n try {\n acts.setProcessing(true);\n const employee = await decorateWithNotificationsEff(\n {\n id: 'update-employee',\n failureStyle: 'error',\n success: 'Tiedot päivitetty',\n },\n\n updateEmployee({...formData, id: employeeId}),\n );\n acts.updateEmployee(employee);\n acts.closeEmployeeModal();\n acts.setProcessing(false);\n if (isActive) {\n window.location.reload();\n }\n } catch (e) {\n acts.setProcessing(false);\n throw e;\n }\n});\ntypes.updateEmployee = P.Object;\n\nconst fetchWorkPermits = async () => {\n const id = sels.employee().id;\n acts.setLoading(true);\n const employee = await decorateWithNotificationsEff(\n {id: 'get-employee', failureStyle: 'warning'},\n getEmployee(id),\n );\n\n acts.setEmployee(employee);\n};\n\neffects.createWorkPermit = guardHandled(async (formData) => {\n const userId = sels.employee().id;\n\n const expirationDate = formData.expires_at\n .toISOString()\n .substr(0, 19)\n .replace('T', ' ');\n\n const permitData = {\n ...formData,\n userId,\n expires_at: expirationDate,\n };\n\n try {\n acts.setProcessing(true);\n await decorateWithNotificationsEff(\n {\n id: 'create-work-permit',\n failureStyle: 'error',\n success: 'Lupa lisätty onnistuneesti!',\n },\n createWorkPermit(permitData),\n );\n acts.closeWorkPermitModal();\n await fetchWorkPermits();\n } catch (e) {\n acts.setProcessing(false);\n throw e;\n }\n});\ntypes.createWorkPermit = P.Object;\n\neffects.removeWorkPermit = (workPermit) => {\n const onConfirm = guardHandled(async () => {\n try {\n acts.setProcessing(true);\n await decorateWithNotificationsEff(\n {\n id: 'remove-workPermit',\n failureStyle: 'error',\n loading: msgs.deleting,\n success: 'Työlupa poistettu',\n },\n deleteWorkPermit(workPermit.id),\n );\n acts.setProcessing(false);\n await fetchWorkPermits();\n } catch (e) {\n acts.setProcessing(false);\n throw e;\n }\n });\n\n confirmerEffs.show({\n message: `Poistetaanko työlupa ${workPermit.name}?`,\n okText: 'Poista',\n okStyle: 'danger',\n cancelText: msgs.cancel,\n onCancel: () => {},\n onOk: onConfirm,\n });\n};\ntypes.removeWorkPermit = P.Object;\n\neffects.editWorkPermit = guardHandled(async (formData) => {\n const permitId = sels.openedPermitId();\n const expirationDate = formData.expires_at\n .toISOString()\n .substr(0, 19)\n .replace('T', ' ');\n\n const permitData = {\n ...formData,\n expires_at: expirationDate,\n };\n try {\n acts.setProcessing(true);\n await decorateWithNotificationsEff(\n {\n id: 'edit-work-permit',\n failureStyle: 'error',\n success: 'Luvan tietoja muokattu onnistuneesti!',\n },\n updateWorkPermit({permitData, permitId}),\n );\n acts.closeWorkPermitModal();\n await fetchWorkPermits();\n } catch (e) {\n acts.setProcessing(false);\n throw e;\n }\n});\ntypes.editWorkPermit = P.Object;\n\neffects.openEmployeeModal = () => {\n acts.openEmployeeModal();\n};\ntypes.openEmployeeModal = P.Object;\n\neffects.closeEmployeeModal = () => {\n acts.closeEmployeeModal();\n};\ntypes.closeEmployeeModal = P.Object;\n\neffects.openWorkPermitModal = async (permitId) => {\n acts.setProcessing(true);\n await acts.openWorkPermitModal(permitId);\n acts.setProcessing(false);\n};\ntypes.openWorkPermitModal = P.Number;\n\neffects.closeWorkPermitModal = () => {\n acts.closeWorkPermitModal();\n};\ntypes.closeWorkPermitModal = P.Object;\n\neffects.destroy = async () => {\n acts.reset();\n};\n\nexport default createEffects(namespace, services.get('channel').dispatch, types, effects);\n","import React from 'react';\nimport {\n Table,\n Thead,\n Tbody,\n Tr,\n Th,\n Td,\n IconButton,\n Badge,\n Menu,\n Portal,\n MenuButton,\n MenuList,\n MenuItem,\n Text,\n Icon,\n} from '@chakra-ui/react';\nimport {FiMoreHorizontal, FiChevronDown} from 'react-icons/fi';\nimport {activityStatuses} from 'dicts/data';\n\nconst SiteRow = ({site, onRowClick, onDelete}) => {\n const ActivityStatusBadge = (activityStatus) => {\n if (activityStatus === 'Poissa') {\n return Poissa;\n } else if (activityStatus === 'Paikalla') {\n return Paikalla;\n } else if (activityStatus === 'Tauko') {\n return Tauko;\n } else if (activityStatus === 'Nouto') {\n return Nouto;\n } else if (activityStatus === 'Siirtymä') {\n return Siirtymä;\n }\n };\n return (\n {\n const id = site.id;\n onRowClick(id);\n }}\n >\n \n {site.name}\n | \n {site.address} | \n {!site.hourPrice ? '-' : `${site.hourPrice}€`} | \n\n {ActivityStatusBadge(activityStatuses[site.activityStatus])} | \n \n \n | \n
\n );\n};\n\nconst SitesTable = ({sites, employee, openSite}) => {\n return (\n <>\n \n \n \n \n Nimi\n {}}\n size=\"sm\"\n icon={}\n />\n | \n \n Osoite\n {}}\n size=\"sm\"\n icon={}\n />\n | \n \n Tuntipalkka\n {}}\n size=\"sm\"\n icon={}\n />\n | \n \n Tila\n {}}\n size=\"sm\"\n icon={}\n />\n | \n | \n
\n \n \n {sites.map((s) => (\n \n ))}\n \n
\n >\n );\n};\n\nexport default SitesTable;\n","import React, {useEffect, useState} from 'react';\nimport {HStack, FormControl, FormLabel, Select} from '@chakra-ui/react';\nimport {ReactDatepicker} from 'components';\n\nconst TimeEntryFilters = ({\n siteIdFilter,\n dateRange,\n sites,\n updateSiteIdFilter,\n updateDateRange,\n}) => {\n const [endDate, setEndDate] = useState(dateRange.endDate);\n const [startDate, setStartDate] = useState(dateRange.startDate);\n\n useEffect(() => {\n if (!startDate && !endDate) {\n return;\n }\n updateDateRange({startDate, endDate});\n }, [startDate, endDate]);\n\n return (\n \n \n Alkaen\n setStartDate(date)}\n />\n \n \n Päättyen\n setEndDate(date)}\n />\n \n\n \n Työmaa\n \n \n \n );\n};\n\nexport default TimeEntryFilters;\n","import React from 'react';\nimport {\n Table,\n Thead,\n Tbody,\n Tr,\n Th,\n Td,\n IconButton,\n Menu,\n Portal,\n MenuButton,\n MenuList,\n MenuItem,\n Text,\n Icon,\n} from '@chakra-ui/react';\nimport {FiMoreHorizontal, FiChevronDown} from 'react-icons/fi';\nimport {sToTime} from 'utils/time';\n\nconst TimeEntryRow = ({entry, onRowClick, onEditClick, setEditableEntries}) => {\n return (\n \n \n {entry.day}\n | \n {entry.siteName} | \n {sToTime(entry.totalTime.total)} | \n\n \n \n | \n
\n );\n};\n\nconst TimeEntriesTable = ({siteEntries, editTimeEntries, setEditableEntries}) => {\n return (\n <>\n \n \n \n \n Päivämäärä\n {}}\n size=\"sm\"\n icon={}\n />\n | \n \n Työmaa\n {}}\n size=\"sm\"\n icon={}\n />\n | \n \n Aika\n {}}\n size=\"sm\"\n icon={}\n />\n | \n | \n
\n \n \n {siteEntries.map((e, index) => (\n \n ))}\n \n
\n >\n );\n};\n\nexport default TimeEntriesTable;\n","import React, {useState} from 'react';\nimport {\n Modal,\n ModalOverlay,\n ModalContent,\n ModalBody,\n ModalHeader,\n ModalCloseButton,\n ModalFooter,\n Stack,\n Input,\n FormControl,\n FormLabel,\n Button,\n InputRightElement,\n IconButton,\n InputGroup,\n FormErrorMessage,\n HStack,\n Divider,\n Text,\n} from '@chakra-ui/react';\nimport {useForm} from 'react-hook-form';\nimport {FiEye, FiEyeOff} from 'react-icons/fi';\n\nconst EmployeeModal = ({\n isOpen,\n isLoading,\n onClose = () => {},\n onSubmit = () => {},\n defaultValues = {},\n isNew = true,\n}) => {\n const {\n handleSubmit,\n formState: {errors},\n register,\n } = useForm({defaultValues});\n\n const [show, setShow] = useState(false);\n const handleClick = () => setShow(!show);\n\n return (\n \n \n \n Työntekijä\n \n \n \n \n\n \n \n \n \n \n \n );\n};\n\nexport default EmployeeModal;\n","import namespace from '../namespace';\nimport name from './name';\n\nexport default [...namespace, name];\n","export default 'timeEntries';\n","import namespace from './namespace';\nimport {scopedSelectors} from 'utils/redux';\nimport {createSelector} from 'reselect';\nimport {formatTimeEntryDefaultVals} from './utils';\n\nlet sels = {};\n\nsels.timeEntriesModalOpen = (st) => st.timeEntriesModalOpen;\n\nsels.editableEntries = (st) => st.editableEntries;\n\nsels.timeEntryDefaultValues = createSelector([sels.editableEntries], (editableEntries) =>\n formatTimeEntryDefaultVals(editableEntries),\n);\n\nexport default scopedSelectors(namespace, sels);\n","import {parseISO} from 'date-fns';\nexport const formatTimeEntryDefaultVals = (timeEntries) => {\n if (!timeEntries) {\n return {\n type: '',\n startDate: '',\n endDate: '',\n description: '',\n deleted: false,\n };\n }\n\n return {\n timeEntries:\n timeEntries?.map((entry) => ({\n id: entry.id,\n startDate: entry.startDate ? parseISO(entry.startDate) : '',\n endDate: entry.endDate ? parseISO(entry.endDate) : '',\n description: entry.description,\n type: entry.type,\n delete: false,\n })) || [],\n };\n};\n","import namespace from './namespace';\nimport {scopedStore} from 'utils/redux';\n\nexport const initialState = {\n timeEntriesModalOpen: false,\n editableEntries: [],\n processing: false,\n};\n\nexport const cases = {\n closeTimeEntriesModal: (st, all) => {\n return {...st, timeEntriesModalOpen: false};\n },\n\n openTimeEntriesModal: (st, all) => {\n return {...st, timeEntriesModalOpen: true};\n },\n\n setEditableEntries: (st, all, entries) => {\n return {...st, editableEntries: entries};\n },\n\n setProcessing: (st, all, value) => {\n return {...st, processing: value};\n },\n\n reset: (st) => {\n return initialState;\n },\n};\n\nexport const {actions, reducer} = scopedStore(namespace, cases, initialState);\n","import {actions} from './store';\nimport services from 'services';\nimport {bindActions} from 'utils/redux';\n\nexport default services\n .waitFor('store')\n .then((store) => bindActions(store.dispatch, actions));\n","import {prop} from 'ramda';\nimport services from 'services';\nimport {describeThrow} from 'utils/errors';\nimport msgs from 'dicts/messages';\n\nlet httpJson = null;\nservices.waitFor('api').then((x) => (httpJson = x.httpJson));\n\nexport const putTimeEntries = (data) =>\n httpJson('post', '/timeEntries/updateTimeEntries', {}, {body: data})\n .catch(describeThrow(msgs.saveFailed))\n .then(prop('data'));\n","import namespace from './namespace';\nimport {createEffects} from 'utils/events';\nimport services from 'services';\nimport _acts from './boundActions';\n//import _sels from './boundSelectors';\nimport {P} from 'utils/types';\nimport {guardHandled} from 'io/errors';\nimport {decorateWithNotificationsEff} from 'io/app';\nimport {putTimeEntries} from './io';\n\nlet acts;\n_acts.then((x) => (acts = x));\n//let sels;\n//_sels.then((x) => (sels = x));\n\nlet effects = {};\nlet types = {};\n\n// note: lazy, should store in state or something like that\nlet afterSaveCallback = null;\n\neffects.initialize = async () => {};\n\neffects.openTimeEntryModal = (afterSave = () => {}) => {\n afterSaveCallback = afterSave;\n acts.openTimeEntriesModal();\n};\ntypes.openTimeEntryModal = P.Function;\n\neffects.closeTimeEntryModal = () => {\n acts.closeTimeEntriesModal();\n};\n\neffects.setEditableEntries = (entries) => {\n acts.setEditableEntries(entries);\n};\ntypes.setEditableEntries = P.Array;\n\neffects.updateTimeEntries = guardHandled(async ({data, siteId}) => {\n try {\n acts.setProcessing(true);\n await decorateWithNotificationsEff(\n {\n id: 'timeEntry-form',\n failureStyle: 'error',\n success: 'Tallennettu',\n },\n putTimeEntries(data),\n );\n acts.closeTimeEntriesModal();\n\n afterSaveCallback();\n\n acts.setProcessing(false);\n } catch (e) {\n acts.setProcessing(false);\n throw e;\n }\n});\ntypes.updateTimeEntries = P.Object;\n\neffects.destroy = async () => {\n acts.reset();\n};\n\nexport default createEffects(namespace, services.get('channel').dispatch, types, effects);\n","import React, {useState, useEffect} from 'react';\nimport {\n Modal,\n ModalOverlay,\n ModalContent,\n ModalCloseButton,\n ModalBody,\n ModalHeader,\n ModalFooter,\n Button,\n HStack,\n FormControl,\n FormLabel,\n Checkbox,\n Select,\n Text,\n Spinner,\n Center,\n Input,\n FormErrorMessage,\n} from '@chakra-ui/react';\nimport {useForm, useFieldArray} from 'react-hook-form';\n\nimport {ReactDatepicker} from 'components';\n\nexport const TimeEntriesModal = ({isOpen, onClose, defaultValues, onSubmit, siteId}) => {\n const [renderEntries, setRenderEntries] = useState(false);\n useEffect(() => {\n setTimeout(() => {\n setRenderEntries(true);\n }, 500);\n }, []);\n\n const {\n handleSubmit,\n formState: {errors},\n register,\n control,\n } = useForm({defaultValues});\n\n const submit = (data) => {\n onSubmit({data, siteId});\n };\n\n const {fields} = useFieldArray({control, name: 'timeEntries'});\n\n return (\n \n \n \n Muokkaa työaikakirjauksia\n \n \n {!renderEntries ? (\n \n \n \n ) : (\n \n )}\n \n \n \n \n \n \n \n );\n};\n","import React from 'react';\nimport {\n Table,\n Thead,\n Tbody,\n Tr,\n Th,\n Td,\n IconButton,\n Menu,\n Portal,\n MenuButton,\n MenuList,\n MenuItem,\n Text,\n} from '@chakra-ui/react';\nimport {FiMoreHorizontal} from 'react-icons/fi';\n\nconst PermitRow = ({permit, onRowClick, onDelete}) => {\n return (\n {\n onRowClick(permit.id);\n }}\n >\n {permit.name} | \n {permit.description} | \n {permit.expiresAt} | \n {permit.number} | \n {permit.admitter} | \n \n \n | \n
\n );\n};\n\nconst WorkPermitTable = ({workPermits, editPermit, onDelete}) => {\n return (\n <>\n \n \n \n Nimi | \n Kuvaus | \n Voimassaolo | \n Numero | \n Myöntäjä | \n | \n
\n \n \n {workPermits.map((p) => (\n \n ))}\n \n
\n >\n );\n};\n\nexport default WorkPermitTable;\n","import React from 'react';\nimport {\n Modal,\n ModalOverlay,\n ModalContent,\n ModalBody,\n ModalHeader,\n ModalCloseButton,\n ModalFooter,\n Stack,\n Input,\n FormControl,\n FormLabel,\n Button,\n FormErrorMessage,\n HStack,\n} from '@chakra-ui/react';\nimport {useForm} from 'react-hook-form';\nimport {ReactDatepicker} from 'components';\n\nconst WorkPermitModal = ({\n isOpen,\n isLoading,\n onClose = () => {},\n onSubmit = () => {},\n defaultValues = {},\n isNew = true,\n}) => {\n const {\n handleSubmit,\n formState: {errors},\n register,\n control,\n } = useForm({defaultValues});\n\n return (\n \n \n \n Työlupa\n \n \n \n \n\n \n \n \n \n \n \n );\n};\n\nexport default WorkPermitModal;\n","import React, {useEffect} from 'react';\nimport {\n SimpleGrid,\n Stack,\n Text,\n Center,\n Spinner,\n IconButton,\n Icon,\n Box,\n Button,\n} from '@chakra-ui/react';\nimport {Link} from 'react-router-dom';\nimport {pick} from 'ramda';\nimport {connect} from 'react-redux';\nimport {FiEdit, FiFileText} from 'react-icons/fi';\n\nimport {applyState} from 'utils/redux';\nimport effs from 'modules/employees/employeePage/effects';\nimport sels from 'modules/employees/employeePage/selectors';\n\nimport {Content, PageHeader, Card, CardHeader, List, ListItem} from 'components';\nimport SitesTable from './components/sites-table';\nimport TimeEntryFilters from './components/timeEntries-filter';\nimport TimeEntriesTable from './components/timeEntries-table';\nimport {encodeQuery, createReferrerUrl} from 'utils/url';\nimport EmployeeModal from './components/employee-modal';\nimport timeEntrySels from 'modules/timeEntries/selectors';\nimport timeEntryEffs from 'modules/timeEntries/effects';\nimport {TimeEntriesModal} from 'views/timeEntries/timeEntriesModal';\nimport WorkPermitTable from './components/work-permit-table';\nimport WorkPermitModal from './components/work-permit-modal';\n\nconst Employee = ({\n match: {\n params: {employeeId},\n },\n processing,\n loading,\n entriesLoading,\n permitDefaultValues,\n employee,\n sites,\n dateRange,\n workPermits,\n siteEntries,\n siteIdFilter,\n workPermitModalOpen,\n employeeModalOpen,\n employeeDefaultVals,\n history,\n location,\n timeEntriesModalOpen,\n timeEntryDefaultValues,\n selectedWorkPermit,\n}) => {\n useEffect(() => {\n effs.initialize(Number(employeeId));\n\n return () => {\n effs.destroy();\n };\n }, []);\n\n const referrerUrl = createReferrerUrl(location);\n\n const openSite = (id) => {\n history.push(`/sites/${id}${encodeQuery({referrerUrl, referrerTitle: 'Työmaat'})}`);\n };\n\n return (\n \n \n \n \n \n \n\n {loading ? (\n \n \n \n ) : (\n \n \n \n effs.openEmployeeModal()}\n size=\"sm\"\n icon={}\n />\n }\n />\n \n \n {employee.address}\n \n \n {employee.phone}\n \n \n {employee.email}\n \n \n {employee.vatNumber}\n \n \n {!employee.baseWage ? '-' : `${employee.baseWage}€/h`}\n \n \n {employee.jobTitle}\n \n
\n \n \n \n \n {}} size=\"sm\" icon={} />\n }\n />\n {loading ? (\n \n \n \n ) : !sites.length ? (\n Ei työmaita\n ) : (\n effs.updateQuery({page})}\n />\n )}\n \n \n effs.openWorkPermitModal()}\n size=\"sm\"\n icon={}\n />\n }\n />\n {loading ? (\n \n \n \n ) : !sites.length ? (\n Ei työlupia\n ) : (\n effs.openWorkPermitModal(id)}\n />\n )}\n \n \n {}} size=\"sm\" icon={} />\n }\n >\n \n \n {entriesLoading ? (\n \n \n \n ) : !siteEntries.length ? (\n Ei kirjauksia\n ) : (\n effs.updateQuery({page})}\n />\n )}\n \n \n \n )}\n {employeeModalOpen && (\n \n )}\n {timeEntriesModalOpen && (\n timeEntryEffs.closeTimeEntryModal()}\n defaultValues={timeEntryDefaultValues}\n />\n )}\n {workPermitModalOpen && (\n \n )}\n \n );\n};\n\nexport default connect(\n applyState({\n ...pick(\n ['timeEntriesModalOpen', 'editableEntries', 'timeEntryDefaultValues'],\n timeEntrySels,\n ),\n ...pick(\n [\n 'processing',\n 'loading',\n 'entriesLoading',\n 'employee',\n 'sites',\n 'siteIdFilter',\n 'dateRange',\n 'siteEntries',\n 'workPermits',\n 'employeeModalOpen',\n 'employeeDefaultVals',\n 'workPermitModalOpen',\n 'permitDefaultValues',\n 'selectedWorkPermit',\n ],\n sels,\n ),\n }),\n)(Employee);\n","import namespace from '../namespace';\nimport name from './name';\n\nexport default [...namespace, name];\n","export default 'organizations';\n","import namespace from '../namespace';\nimport name from './name';\n\nexport default [...namespace, name];\n","export default 'organizationsPage';\n","import namespace from './namespace';\nimport {scopedStore} from 'utils/redux';\n\nexport const initialState = {\n query: {\n page: 1,\n 'filter[name]': '',\n include: 'contractSites,sites',\n },\n organizationModalOpen: false,\n processing: false,\n organizations: [],\n pagination: null,\n loading: false,\n};\n\nexport const cases = {\n reset: (st) => {\n return initialState;\n },\n\n updateQuery: (st, all, payload) => {\n return {\n ...st,\n query: {...st.query, ...payload},\n loading: true,\n };\n },\n\n setOrganizations: (st, all, payload) => {\n return {\n ...st,\n organizations: payload.data,\n pagination: payload.pagination,\n loading: false,\n };\n },\n\n setLoading: (st, all, loading) => {\n return {...st, loading};\n },\n\n openOrganizationModal: (st, all, value) => {\n return {...st, organizationModalOpen: true};\n },\n\n closeOrganizationModal: (st, all, value) => {\n return {...st, organizationModalOpen: false};\n },\n\n setProcessing: (st, all, value) => {\n return {...st, processing: value};\n },\n};\n\nexport const {actions, reducer} = scopedStore(namespace, cases, initialState);\n","import {evolve} from 'ramda';\nimport {replace} from 'utils/objects';\nimport {initialState} from './store';\n\nexport const parseUrlQuery = (query) => {\n const vals = evolve(\n {\n page: Number,\n },\n query,\n );\n return replace(vals, initialState.query);\n};\n\nexport const formatFetchableQuery = (query) => {\n return query;\n};\n","import {actions} from './store';\nimport services from 'services';\nimport {bindActions} from 'utils/redux';\n\nexport default services\n .waitFor('store')\n .then((store) => bindActions(store.dispatch, actions));\n","import services from 'services';\nimport {describeThrow} from 'utils/errors';\nimport {prop} from 'ramda';\nimport msgs from 'dicts/messages';\n\nlet httpJson = null;\nservices.waitFor('api').then((x) => (httpJson = x.httpJson));\n\nexport const getOrganizations = (query = {}) =>\n httpJson('get', '/organizations', query, {}).catch(describeThrow(msgs.fetchFailed));\n\nexport const postOrganization = (body) =>\n httpJson('post', '/organizations', {}, {body})\n .catch(describeThrow(msgs.saveFailed))\n .then(prop('data'));\n\nexport const deleteOrganization = (id) =>\n httpJson('delete', `/organizations/${id}`).catch(describeThrow(msgs.saveFailed));\n","import namespace from './namespace';\nimport {scopedSelectors} from 'utils/redux';\nimport {createSelector} from 'reselect';\nimport {formatFetchableQuery} from './utils';\n\nlet sels = {};\n\nsels.organizations = (st) => st.organizations;\n\nsels.pagination = (st) => st.pagination;\n\nsels.query = (st) => st.query;\n\nsels.loading = (st) => st.loading;\n\nsels.processing = (st) => st.processing;\n\nsels.queryFetchable = createSelector(sels.query, (q) => formatFetchableQuery(q));\n\nsels.organizationModalOpen = (st) => st.organizationModalOpen;\n\nexport default scopedSelectors(namespace, sels);\n","import namespace from './namespace';\nimport {mergeLeft} from 'ramda';\nimport {createEffects} from 'utils/events';\nimport services from 'services';\n\nimport {parseUrlQuery} from './utils';\nimport {getQuery, pushQuery} from 'io/history';\nimport msgs from 'dicts/messages';\nimport _acts from './boundActions';\nimport {setPageTitleMessage, decorateWithNotificationsEff} from 'io/app';\nimport {getOrganizations, postOrganization, deleteOrganization} from './io';\nimport _sels from './boundSelectors';\nimport {P} from 'utils/types';\nimport confirmerEffs from 'modules/confirmer/effects';\nimport {guardHandled} from 'io/errors';\n\nlet acts, sels;\n_acts.then((x) => (acts = x));\n_sels.then((x) => (sels = x));\n\nlet effects = {};\nlet types = {};\n\nconst fetchOrganizations = (notifyOpts = {}) => {\n acts.setLoading(true);\n\n return decorateWithNotificationsEff(\n {id: 'get-organizations', failureStyle: 'warning', ...notifyOpts},\n getOrganizations(sels.queryFetchable()),\n ).then(({data, meta}) => {\n acts.setOrganizations({data, pagination: meta});\n });\n};\n\neffects.initialize = async () => {\n setPageTitleMessage('Organisaatiot');\n\n const query = parseUrlQuery(getQuery());\n acts.updateQuery(query);\n await fetchOrganizations();\n};\n\neffects.updateQuery = guardHandled(async (query) => {\n acts.updateQuery(query);\n pushQuery(mergeLeft(sels.query()));\n\n await fetchOrganizations();\n});\ntypes.updateQuery = P.Object;\n\neffects.createOrganization = guardHandled(async (formData) => {\n try {\n acts.setProcessing(true);\n await decorateWithNotificationsEff(\n {\n id: 'create-organization',\n failureStyle: 'error',\n success: 'Tallennettu',\n },\n postOrganization(formData),\n );\n acts.closeOrganizationModal();\n acts.setProcessing(false);\n } catch (e) {\n acts.setProcessing(false);\n throw e;\n }\n\n await fetchOrganizations();\n});\ntypes.createOrganization = P.Object;\n\neffects.removeOrganization = (organization) => {\n const onConfirm = guardHandled(async () => {\n try {\n acts.setProcessing(true);\n await decorateWithNotificationsEff(\n {\n id: 'remove-organization',\n failureStyle: 'error',\n loading: msgs.deleting,\n success: 'Organisaatio poistettu',\n },\n deleteOrganization(organization.id),\n );\n acts.setProcessing(false);\n } catch (e) {\n acts.setProcessing(false);\n throw e;\n }\n\n await fetchOrganizations();\n });\n\n confirmerEffs.show({\n message: `Poistetaanko organisaatio ${organization.name}?`,\n okText: 'Poista',\n okStyle: 'danger',\n cancelText: msgs.cancel,\n onCancel: () => {},\n onOk: onConfirm,\n });\n};\ntypes.removeOrganization = P.Object;\n\neffects.openOrganizationModal = () => {\n acts.openOrganizationModal();\n};\n\neffects.closeOrganizationModal = () => {\n acts.closeOrganizationModal();\n};\n\neffects.destroy = async () => {\n acts.reset();\n};\n\nexport default createEffects(namespace, services.get('channel').dispatch, types, effects);\n","import selectors from './selectors';\nimport services from 'services';\nimport {bindSelectors} from 'utils/redux';\n\nexport default services\n .waitFor('store')\n .then((store) => bindSelectors(store.getState, selectors));\n","import React from 'react';\nimport {\n Table,\n Thead,\n Tbody,\n Tr,\n Th,\n Td,\n HStack,\n Spacer,\n IconButton,\n Icon,\n Menu,\n Portal,\n MenuButton,\n MenuList,\n MenuItem,\n Text,\n} from '@chakra-ui/react';\nimport {FiMoreHorizontal, FiChevronDown} from 'react-icons/fi';\nimport {emptyPagination} from 'constants/pagination';\nimport {Paginator} from 'components';\n\nconst OrganizationsRow = ({\n organization = {},\n onRowClick = () => {},\n onDelete = () => {},\n referrerUrl,\n}) => {\n const sitesAmount = organization.sites.length;\n const contractSitesAmount = organization.contractSites.length;\n\n return (\n onRowClick(organization.id)}\n _hover={{bg: 'gray.50', cursor: 'pointer'}}\n >\n \n {organization.name}\n | \n {organization.address} | \n {organization.contact} | \n {!organization.sites.length ? contractSitesAmount : sitesAmount} | \n \n \n | \n
\n );\n};\n\nconst OrganizationsTable = ({\n processing,\n organizations = [],\n removeOrganization,\n pagination = emptyPagination,\n referrerUrl,\n onPageSelect = () => {},\n openOrganization = () => {},\n}) => {\n return (\n <>\n \n \n \n \n Nimi\n {}}\n size=\"sm\"\n icon={}\n />\n | \n \n Osoite\n {}}\n size=\"sm\"\n icon={}\n />\n | \n Yhteyshenkilö | \n \n Työmaat\n {}}\n size=\"sm\"\n icon={}\n />\n | \n | \n
\n \n \n {organizations.map((o) => (\n \n ))}\n \n
\n \n \n \n \n >\n );\n};\n\nexport default OrganizationsTable;\n","import React, {useEffect, useState, useRef} from 'react';\nimport {\n HStack,\n FormControl,\n FormLabel,\n Input,\n InputRightElement,\n InputGroup,\n Icon,\n} from '@chakra-ui/react';\nimport {FiSearch} from 'react-icons/fi';\nimport {equals} from 'ramda';\nimport {useDebounce} from 'utils/react';\n\nconst OrganizationsFilters = ({query = {}, updateQuery = () => {}}) => {\n const querySearch = query['filter[name]'] || '';\n const [search, setSearch] = useState(querySearch);\n const debouncedSearch = useDebounce(search, 500);\n const isInitialMount = useRef(true);\n\n // update filter to query debounced to prevent flooding API with requests\n // value also kept in local state that is updated immediately\n useEffect(() => {\n if (isInitialMount.current) {\n isInitialMount.current = false;\n } else if (!equals(debouncedSearch, querySearch)) {\n updateQuery({'filter[name]': debouncedSearch});\n }\n }, [debouncedSearch]);\n\n useEffect(() => {\n if (querySearch !== search) {\n setSearch(querySearch);\n }\n }, [querySearch]);\n\n return (\n \n \n Vapaahaku\n \n setSearch(e.target.value)}\n />\n \n \n \n \n \n \n );\n};\n\nexport default OrganizationsFilters;\n","import React from 'react';\nimport {\n Modal,\n ModalOverlay,\n ModalContent,\n ModalBody,\n ModalHeader,\n ModalCloseButton,\n ModalFooter,\n Stack,\n Input,\n FormControl,\n FormLabel,\n Button,\n FormErrorMessage,\n HStack,\n} from '@chakra-ui/react';\nimport {useForm} from 'react-hook-form';\n\nconst OrganizationModal = ({\n isOpen,\n isLoading,\n onClose = () => {},\n onSubmit = () => {},\n defaultValues = {},\n isNew = true,\n}) => {\n const {\n handleSubmit,\n formState: {errors},\n register,\n } = useForm({defaultValues});\n\n return (\n \n \n \n \n {isNew ? 'Lisää organisaatio' : 'Muokkaa organisaatiota'}\n \n \n \n \n \n\n \n \n \n \n \n \n );\n};\n\nexport default OrganizationModal;\n","import React, {useEffect} from 'react';\nimport {HStack, Box, Spacer, Button, Text, Spinner, Center} from '@chakra-ui/react';\nimport {FiPlusCircle} from 'react-icons/fi';\nimport {pick} from 'ramda';\nimport {connect} from 'react-redux';\n\nimport {applyState} from 'utils/redux';\nimport {encodeQuery, createReferrerUrl} from 'utils/url';\nimport effs from 'modules/organizations/organizationsPage/effects';\nimport sels from 'modules/organizations/organizationsPage/selectors';\n\nimport {Content, Card} from 'components';\nimport OrganizationsTable from './components/organizations-table';\nimport OrganizationsFilters from './components/organizations-filters';\nimport OrganizationModal from './components/organization-modal';\n\nconst Organizations = ({\n history,\n location,\n processing,\n loading,\n pagination,\n query,\n organizations,\n organizationModalOpen,\n}) => {\n useEffect(() => {\n effs.initialize();\n\n return () => {\n effs.destroy();\n };\n }, []);\n\n const referrerUrl = createReferrerUrl(location);\n\n const openOrganization = (id) => {\n history.push(\n `/organizations/${id}${encodeQuery({\n referrerUrl,\n referrerTitle: 'Organisaatiot',\n })}`,\n );\n };\n\n return (\n \n \n \n \n Organisaatiot\n \n \n \n\n \n\n {loading ? (\n \n \n \n ) : !organizations.length ? (\n Ei organisaatioita\n ) : (\n effs.updateQuery({page})}\n openOrganization={openOrganization}\n referrerUrl={referrerUrl}\n removeOrganization={effs.removeOrganization}\n />\n )}\n \n \n {organizationModalOpen && (\n effs.closeOrganizationModal()}\n onSubmit={effs.createOrganization}\n isNew={true}\n />\n )}\n \n );\n};\n\nexport default connect(\n applyState(\n pick(\n [\n 'processing',\n 'loading',\n 'query',\n 'pagination',\n 'organizations',\n 'organizationModalOpen',\n ],\n sels,\n ),\n ),\n)(Organizations);\n","import namespace from '../namespace';\nimport name from './name';\n\nexport default [...namespace, name];\n","export default 'organizationPage';\n","import namespace from './namespace';\nimport {scopedStore} from 'utils/redux';\n\nexport const initialState = {\n loading: true,\n processing: false,\n organizationModalOpen: false,\n organization: [],\n sites: [],\n users: [],\n contractSites: [],\n};\n\nexport const cases = {\n setLoading: (st, all, value) => {\n return {...st, loading: value};\n },\n\n setOrganization: (st, all, payload) => {\n const {sites, users, contractSites, ...organization} = payload;\n return {\n ...st,\n organization,\n sites,\n contractSites,\n users,\n loading: false,\n };\n },\n\n updateOrganization: (st, all, payload) => {\n return {\n ...st,\n organization: {...st.organization, ...payload},\n };\n },\n\n openOrganizationModal: (st, all, value) => {\n return {...st, organizationModalOpen: true};\n },\n\n closeOrganizationModal: (st, all, value) => {\n return {...st, organizationModalOpen: false};\n },\n\n setProcessing: (st, all, value) => {\n return {...st, processing: value};\n },\n\n reset: (st) => {\n return initialState;\n },\n};\n\nexport const {actions, reducer} = scopedStore(namespace, cases, initialState);\n","import {actions} from './store';\nimport services from 'services';\nimport {bindActions} from 'utils/redux';\n\nexport default services\n .waitFor('store')\n .then((store) => bindActions(store.dispatch, actions));\n","import namespace from './namespace';\nimport {scopedSelectors} from 'utils/redux';\nimport {createSelector} from 'reselect';\nimport {formatOrganizationDefaultVals} from './utils';\n\nlet sels = {};\n\nsels.organization = (st) => st.organization;\n\nsels.loading = (st) => st.loading;\n\nsels.processing = (st) => st.processing;\n\nsels.users = (st) => st.users;\n\nsels.sites = (st) => st.sites;\n\nsels.contractSites = (st) => st.contractSites;\n\nsels.organizationModalOpen = (st) => st.organizationModalOpen;\n\nsels.organizationDefaultVals = createSelector(sels.organization, (organization) =>\n formatOrganizationDefaultVals(organization),\n);\n\nsels.query = (st) => st.query;\n\nexport default scopedSelectors(namespace, sels);\n","export const formatOrganizationDefaultVals = (organization) => {\n if (!organization) return {};\n\n return {\n name: organization.name,\n address: organization.address,\n postcode: organization.postcode,\n city: organization.city,\n businessId: organization.businessId,\n email: organization.email,\n phone: organization.phone,\n contact: organization.contact,\n industry: organization.industry,\n };\n};\n","import selectors from './selectors';\nimport services from 'services';\nimport {bindSelectors} from 'utils/redux';\n\nexport default services\n .waitFor('store')\n .then((store) => bindSelectors(store.getState, selectors));\n","import services from 'services';\nimport {describeThrow} from 'utils/errors';\nimport {prop} from 'ramda';\nimport msgs from 'dicts/messages';\n\nlet httpJson = null;\nservices.waitFor('api').then((x) => (httpJson = x.httpJson));\n\nexport const getOrganization = (id) =>\n httpJson(\n 'get',\n `/organizations/${id}`,\n {\n include:\n 'sites, users, contractSites, contractSitesCount, sites.users, contractSites.users',\n },\n {},\n )\n .catch(describeThrow(msgs.fetchFailed))\n .then(prop('data'));\n\nexport const updateOrganization = (organization) =>\n httpJson('put', `/organizations/${organization.id}`, {}, {body: organization})\n .catch(describeThrow(msgs.saveFailed))\n .then(prop('data'));\n","import namespace from './namespace';\nimport {createEffects} from 'utils/events';\nimport services from 'services';\nimport _acts from './boundActions';\nimport _sels from './boundSelectors';\nimport {P} from 'utils/types';\n//import {guardHandled} from 'io/errors';\nimport {setPageTitleMessage, decorateWithNotificationsEff} from 'io/app';\nimport {guardHandled} from 'io/errors';\nimport {getOrganization, updateOrganization} from './io';\n\nlet acts, sels;\n_acts.then((x) => (acts = x));\n_sels.then((x) => (sels = x));\n\nlet effects = {};\nlet types = {};\n\nconst fetchOrganizationEff = async (id) => {\n const organization = await decorateWithNotificationsEff(\n {id: 'get-organization', failureStyle: 'warning'},\n getOrganization(id),\n );\n acts.setOrganization(organization);\n};\n\neffects.updateOrganization = guardHandled(async (formData) => {\n try {\n acts.setProcessing(true);\n const organization = await decorateWithNotificationsEff(\n {\n id: 'update-organization',\n failureStyle: 'error',\n success: 'Tiedot päivitetty',\n },\n\n updateOrganization({...formData, id: sels.organization().id}),\n );\n acts.updateOrganization(organization);\n acts.closeOrganizationModal();\n acts.setProcessing(false);\n } catch (e) {\n acts.setProcessing(false);\n throw e;\n }\n});\ntypes.updateOrganization = P.Object;\n\neffects.initialize = async (id) => {\n await fetchOrganizationEff(id);\n setPageTitleMessage(sels.organization().name);\n};\ntypes.initialize = P.Number;\n\neffects.openOrganizationModal = () => {\n acts.openOrganizationModal();\n};\n\neffects.closeOrganizationModal = () => {\n acts.closeOrganizationModal();\n};\n\neffects.destroy = async () => {\n acts.reset();\n};\n\nexport default createEffects(namespace, services.get('channel').dispatch, types, effects);\n","import React from 'react';\nimport {\n Table,\n Thead,\n Tbody,\n Tr,\n Th,\n Td,\n IconButton,\n Menu,\n Portal,\n MenuButton,\n MenuList,\n MenuItem,\n Text,\n Icon,\n} from '@chakra-ui/react';\nimport {FiMoreHorizontal, FiChevronDown} from 'react-icons/fi';\n\nconst SiteRow = ({site, onRowClick, onDelete}) => {\n return (\n {\n const id = site.id;\n onRowClick(id);\n }}\n >\n \n {site.name}\n | \n {site.address} | \n {site.users.length} | \n \n \n | \n
\n );\n};\n\nconst SitesTable = ({sites, onSiteClick}) => {\n return (\n <>\n \n \n \n \n Nimi\n {}}\n size=\"sm\"\n icon={}\n />\n | \n \n Osoite\n {}}\n size=\"sm\"\n icon={}\n />\n | \n \n Työntekijät\n {}}\n size=\"sm\"\n icon={}\n />\n | \n | \n
\n \n \n {sites.map((s) => (\n \n ))}\n \n
\n >\n );\n};\n\nexport default SitesTable;\n","import React from 'react';\nimport {\n Table,\n Thead,\n Tbody,\n Tr,\n Th,\n Td,\n IconButton,\n Menu,\n Portal,\n MenuButton,\n MenuList,\n MenuItem,\n Text,\n Icon,\n} from '@chakra-ui/react';\nimport {FiMoreHorizontal, FiChevronDown} from 'react-icons/fi';\n\nconst EmployeeRow = ({user, onRowClick, onDelete}) => {\n return (\n {\n const id = user.id;\n onRowClick(id);\n }}\n >\n \n {user.name}\n | \n {user.job_title} | \n {!user.base_wage ? '-' : `${user.base_wage}€/h`} | \n \n \n | \n
\n );\n};\n\nconst EmployeesTable = ({users, onEmployeeClick}) => {\n return (\n <>\n \n \n \n \n Nimi\n {}}\n size=\"sm\"\n icon={}\n />\n | \n \n Tehtävänimike\n {}}\n size=\"sm\"\n icon={}\n />\n | \n \n Tuntipalkka\n {}}\n size=\"sm\"\n icon={}\n />\n | \n | \n
\n \n \n {users.map((u) => (\n \n ))}\n \n
\n >\n );\n};\n\nexport default EmployeesTable;\n","import React from 'react';\nimport {\n Table,\n Thead,\n Tbody,\n Tr,\n Th,\n Td,\n IconButton,\n Menu,\n Portal,\n MenuButton,\n MenuList,\n MenuItem,\n Text,\n Icon,\n} from '@chakra-ui/react';\nimport {FiMoreHorizontal, FiChevronDown} from 'react-icons/fi';\n\nconst ContractSiteRow = ({site, onRowClick, onDelete}) => {\n return (\n {\n const id = site.id;\n onRowClick(id);\n }}\n >\n \n {site.name}\n | \n {site.address} | \n {site.users.length} | \n \n \n | \n
\n );\n};\n\nconst ContractSitesTable = ({sites, onSiteClick}) => {\n return (\n <>\n \n \n \n \n Nimi\n {}}\n size=\"sm\"\n icon={}\n />\n | \n \n Osoite\n {}}\n size=\"sm\"\n icon={}\n />\n | \n \n Työntekijät\n {}}\n size=\"sm\"\n icon={}\n />\n | \n | \n
\n \n \n {sites.map((s) => (\n \n ))}\n \n
\n >\n );\n};\n\nexport default ContractSitesTable;\n","import React from 'react';\nimport {\n Modal,\n ModalOverlay,\n ModalContent,\n ModalBody,\n ModalHeader,\n ModalCloseButton,\n ModalFooter,\n Stack,\n Input,\n FormControl,\n FormLabel,\n Button,\n FormErrorMessage,\n HStack,\n} from '@chakra-ui/react';\nimport {useForm} from 'react-hook-form';\n\nconst OrganizationModal = ({\n isOpen,\n isLoading,\n onClose = () => {},\n onSubmit = () => {},\n defaultValues = {},\n isNew = true,\n}) => {\n const {\n handleSubmit,\n formState: {errors},\n register,\n } = useForm({defaultValues});\n\n return (\n \n \n \n \n {isNew ? 'Lisää organisaatio' : 'Muokkaa organisaatiota'}\n \n \n \n \n \n\n \n \n \n \n \n \n );\n};\n\nexport default OrganizationModal;\n","import React, {useEffect} from 'react';\nimport {\n SimpleGrid,\n Stack,\n Text,\n Center,\n Spinner,\n IconButton,\n Icon,\n Box,\n} from '@chakra-ui/react';\nimport {pick} from 'ramda';\nimport {connect} from 'react-redux';\nimport {FiEdit} from 'react-icons/fi';\nimport {encodeQuery, createReferrerUrl} from 'utils/url';\n\nimport {applyState} from 'utils/redux';\nimport effs from 'modules/organizations/organizationPage/effects';\nimport sels from 'modules/organizations/organizationPage/selectors';\nimport SitesTable from './components/sites-table';\nimport EmployeesTable from './components/employees-table';\nimport ContractSitesTable from './components/contractSites-table';\nimport OrganizationModal from './components/organization-modal';\n\nimport {Content, PageHeader, Card, CardHeader, List, ListItem} from 'components';\n\nconst Organization = ({\n match: {\n params: {organizationId},\n },\n processing,\n sites,\n organization,\n loading,\n users,\n location,\n history,\n contractSites,\n organizationModalOpen,\n organizationDefaultVals,\n}) => {\n useEffect(() => {\n effs.initialize(organizationId);\n\n return () => {\n effs.destroy();\n };\n }, []);\n\n const referrerUrl = createReferrerUrl(location);\n\n const openEmployee = (id) => {\n history.push(\n `/employees/${id}${encodeQuery({referrerUrl, referrerTitle: 'Työntekijät'})}`,\n );\n };\n\n const openSite = (id) => {\n history.push(`/sites/${id}${encodeQuery({referrerUrl, referrerTitle: 'Työmaat'})}`);\n };\n\n return (\n \n \n\n {loading ? (\n \n \n \n ) : (\n \n \n \n effs.openOrganizationModal()}\n size=\"sm\"\n icon={}\n />\n }\n />\n \n \n {organization.address}\n \n \n {organization.industry}\n \n \n {organization.contact}\n \n \n {organization.email}\n \n \n {organization.phone}\n \n
\n \n \n \n \n {}} size=\"sm\" icon={} />\n }\n />\n {loading ? (\n \n \n \n ) : !sites.length ? (\n Ei työmaita\n ) : (\n \n )}\n \n \n {}} size=\"sm\" icon={} />\n }\n />\n {loading ? (\n \n \n \n ) : !contractSites.length ? (\n Ei työmaita\n ) : (\n \n )}\n \n \n {}} size=\"sm\" icon={} />\n }\n />\n {loading ? (\n \n \n \n ) : !users.length ? (\n Ei työntekijöitä\n ) : (\n \n )}\n \n \n \n )}\n {organizationModalOpen && (\n effs.closeOrganizationModal()}\n onSubmit={effs.updateOrganization}\n defaultValues={organizationDefaultVals}\n isNew={true}\n />\n )}\n \n );\n};\n\nexport default connect(\n applyState(\n pick(\n [\n 'loading',\n 'processing',\n 'organization',\n 'sites',\n 'users',\n 'contractSites',\n 'organizationModalOpen',\n 'organizationDefaultVals',\n ],\n sels,\n ),\n ),\n)(Organization);\n","import namespace from '../namespace';\nimport name from './name';\n\nexport default [...namespace, name];\n","export default 'reportages';\n","export const parseUrlQuery = (query) => {\n let dateRange = null;\n if (query.dateRange) {\n dateRange = JSON.parse(query.dateRange);\n // startDate / endDate is never null since they're set in init\n dateRange.startDate = new Date(dateRange.startDate);\n dateRange.endDate = new Date(dateRange.endDate);\n }\n let user = null;\n if (query.user) {\n user = JSON.parse(query.user);\n }\n let site = null;\n if (query.site) {\n site = JSON.parse(query.site);\n }\n let referrerUrl = null;\n if (query.referrerUrl) {\n referrerUrl = query.referrerUrl;\n }\n return {\n referrerUrl: referrerUrl,\n user: user,\n site: site,\n dateRange: dateRange,\n reportageIndex: query.reportageIndex ? Number(query.reportageIndex) : null,\n };\n};\n\nexport const formatSiteQueryFetchable = ({siteQuery, dateRange}) => {\n const startDate = dateRange.startDate.toISOString();\n const endDate = dateRange.endDate.toISOString();\n return {\n 'filter[endDateBetween]': `${startDate},${endDate}`,\n // TODO: not currently supported by backend! add later!!\n //'filter[name]': siteQuery.name,\n 'filter[siteId]': siteQuery.siteId,\n 'filter[organizationId]': siteQuery.organizationId,\n groupBySite: 'true',\n };\n};\n\nexport const formatUserQueryFetchable = ({userQuery, dateRange}) => {\n const startDate = dateRange.startDate.toISOString();\n const endDate = dateRange.endDate.toISOString();\n return {\n 'filter[endDateBetween]': `${startDate},${endDate}`,\n 'filter[user.name]': userQuery.name,\n 'filter[siteId]': userQuery.siteId,\n 'filter[organizationId]': userQuery.organizationId,\n };\n};\n","import namespace from './namespace';\nimport {scopedSelectors} from 'utils/redux';\nimport {createSelector} from 'reselect';\nimport {formatSiteQueryFetchable, formatUserQueryFetchable} from './utils';\n\nlet sels = {};\n\nsels.initialized = (st) => st.initialized;\n\nsels.siteEntries = (st) => st.siteEntries;\n\nsels.userEntries = (st) => st.userEntries;\n\nsels.loading = (st) => st.loading;\n\nsels.processing = (st) => st.processing;\n\nsels.userQuery = (st) => st.userQuery;\n\nsels.generateReportageModalOpen = (st) => st.generateReportageModalOpen;\n\nsels.includeBreaksAndPickups = (st) => st.includeBreaksAndPickups;\n\nsels.siteQuery = (st) => st.siteQuery;\n\nsels.dateRange = (st) => st.dateRange;\n\nsels.referrerUrlBoolean = (st) => st.referrerUrlBoolean;\n\nsels.siteQueryFetchable = createSelector(\n [sels.siteQuery, sels.dateRange],\n (siteQuery, dateRange) => formatSiteQueryFetchable({siteQuery, dateRange}),\n);\n\nsels.userQueryFetchable = createSelector(\n [sels.userQuery, sels.dateRange],\n (userQuery, dateRange) => formatUserQueryFetchable({userQuery, dateRange}),\n);\n\nsels.siteQueryUrlFormatted = createSelector(sels.siteQuery, (siteQuery) => {\n return JSON.stringify(siteQuery);\n});\nsels.userQueryUrlFormatted = createSelector(sels.userQuery, (userQuery) => {\n return JSON.stringify(userQuery);\n});\nsels.dateRangeQueryUrlFormatted = createSelector(sels.dateRange, (dateRange) => {\n return JSON.stringify(dateRange);\n});\n\nsels.reportageIndex = (st) => st.reportageIndex;\n\nsels.userEntries = (st) => st.userEntries;\n\nsels.siteEntries = (st) => st.siteEntries;\n\nsels.userReportage = (st) => st.userReportage;\n\nsels.userReportageLoading = (st) => st.userReportageLoading;\n\nsels.siteReportage = (st) => st.siteReportage;\n\nsels.siteReportageLoading = (st) => st.siteReportageLoading;\n\nexport default scopedSelectors(namespace, sels);\n","import namespace from './namespace';\nimport {scopedStore} from 'utils/redux';\n\nexport const initialState = {\n initialized: false,\n loading: false,\n processing: false,\n reportageIndex: 0,\n siteQuery: {name: '', siteId: null},\n userQuery: {name: '', siteId: null, organizationId: null},\n dateRange: {startDate: null, endDate: null},\n referrerUrlBoolean: null,\n siteEntries: [],\n userEntries: [],\n userReportage: null,\n userReportageLoading: false,\n siteReportage: null,\n siteReportageLoading: false,\n generateReportageModalOpen: false,\n includeBreaksAndPickups: false,\n};\n\nexport const cases = {\n setLoading: (st, all, value) => {\n return {...st, loading: value};\n },\n setReferrerUrlBoolean: (st, all) => {\n return {...st, referrerUrlBoolean: true};\n },\n\n setIncludeBreaksAndPickups: (st, all, value) => {\n return {...st, setIncludeBreaksAndPickups: value};\n },\n\n setGenerateReportageModalOpen: (st, all, value) => {\n return {...st, generateReportageModalOpen: value};\n },\n\n setReportageIndex: (st, all, value) => {\n return {...st, reportageIndex: value};\n },\n\n updateSiteQuery: (st, all, payload) => {\n return {...st, siteQuery: {...st.siteQuery, ...payload}, loading: true};\n },\n\n updateUserQuery: (st, all, payload) => {\n return {...st, userQuery: {...st.userQuery, ...payload}, loading: true};\n },\n\n updateDateRange: (st, all, range) => {\n return {...st, dateRange: {startDate: range.startDate, endDate: range.endDate}};\n },\n\n setInitialized: (st, all, val) => {\n return {...st, initialized: val};\n },\n\n setProcessing: (st, all, value) => {\n return {...st, processing: value};\n },\n\n setSiteEntries: (st, all, siteEntries) => {\n return {...st, siteEntries};\n },\n\n setUserEntries: (st, all, userEntries) => {\n return {...st, userEntries};\n },\n\n setUserReportage: (st, all, data) => {\n return {...st, userReportage: data};\n },\n setUserReportageLoading: (st, all, value) => {\n return {...st, userReportageLoading: value};\n },\n setSiteReportage: (st, all, data) => {\n return {...st, siteReportage: data};\n },\n setSiteReportageLoading: (st, all, value) => {\n return {...st, siteReportageLoading: value};\n },\n\n reset: (st) => {\n return initialState;\n },\n};\n\nexport const {actions, reducer} = scopedStore(namespace, cases, initialState);\n","import {actions} from './store';\nimport services from 'services';\nimport {bindActions} from 'utils/redux';\n\nexport default services\n .waitFor('store')\n .then((store) => bindActions(store.dispatch, actions));\n","import selectors from './selectors';\nimport services from 'services';\nimport {bindSelectors} from 'utils/redux';\n\nexport default services\n .waitFor('store')\n .then((store) => bindSelectors(store.getState, selectors));\n","import {prop} from 'ramda';\nimport services from 'services';\nimport {describeThrow} from 'utils/errors';\nimport msgs from 'dicts/messages';\n\nlet httpJson = null;\nservices.waitFor('api').then((x) => (httpJson = x.httpJson));\n\nexport const getSiteEntries = (query) =>\n httpJson('get', '/timeEntries', {...query, groupBySite: 'true'}, {})\n .catch(describeThrow(msgs.fetchFailed))\n .then(prop('data'));\n\nexport const getUserEntries = (query) =>\n httpJson('get', '/timeEntries', {...query, groupByUserAndSite: 'true'}, {})\n .catch(describeThrow(msgs.fetchFailed))\n .then(prop('data'));\n\nexport const generateCsv = (body) =>\n httpJson('post', '/timeEntries/generateTimeEntryCsv', {}, {body})\n .catch(describeThrow(msgs.fetchFailed))\n .then(prop('data'));\n","import namespace from './namespace';\nimport {createEffects} from 'utils/events';\nimport services from 'services';\nimport _acts from './boundActions';\nimport _sels from './boundSelectors';\nimport {guardHandled} from 'io/errors';\nimport {P, Record} from 'utils/types';\nimport {decorateWithNotificationsEff} from 'io/app';\nimport {getQuery, replaceQuery} from 'io/history';\nimport {getSiteEntries, getUserEntries, generateCsv} from './io';\nimport {parseUrlQuery} from './utils';\nlet acts;\n_acts.then((x) => (acts = x));\nlet sels;\n_sels.then((x) => (sels = x));\n\nlet effects = {};\nlet types = {};\n\nconst fetchSiteEntriesEff = async () => {\n const query = sels.siteQueryFetchable();\n\n acts.setLoading(true);\n try {\n const siteEntries = await decorateWithNotificationsEff(\n {id: 'site-entries', failureStyle: 'warning'},\n getSiteEntries(query),\n );\n acts.setSiteEntries(siteEntries);\n acts.setLoading(false);\n } catch (e) {\n acts.setLoading(false);\n throw e;\n }\n};\n\nconst fetchUserEntriesEff = async () => {\n const query = sels.userQueryFetchable();\n\n acts.setLoading(true);\n try {\n const userEntries = await decorateWithNotificationsEff(\n {id: 'site-entries', failureStyle: 'error'},\n getUserEntries(query),\n );\n acts.setUserEntries(userEntries);\n acts.setLoading(false);\n } catch (e) {\n acts.setLoading(false);\n throw e;\n }\n};\n\neffects.initialize = guardHandled(async () => {\n // initialize date range \"lazily\" instead of in the component, so that info flow is one-way.\n const date = new Date();\n const firstDayOfMonth = new Date(date.getFullYear(), date.getMonth(), 1);\n const lastDayOfMonth = new Date();\n\n acts.updateDateRange({startDate: firstDayOfMonth, endDate: lastDayOfMonth});\n\n acts.setInitialized(true);\n\n const query = parseUrlQuery(getQuery());\n\n if (query.user) {\n acts.updateUserQuery(query.user);\n }\n if (query.site) {\n acts.updateSiteQuery(query.site);\n }\n if (query.dateRange) {\n acts.updateDateRange(query.dateRange);\n }\n if (query.reportageIndex != null) {\n acts.setReportageIndex(query.reportageIndex);\n }\n if (query.referrerUrl != null) {\n acts.setReferrerUrlBoolean(true);\n }\n\n const index = sels.reportageIndex();\n if (index === 0) {\n await fetchSiteEntriesEff();\n } else if (index === 1) {\n await fetchUserEntriesEff();\n }\n});\n\neffects.updateDateRange = guardHandled(async ({startDate, endDate}) => {\n acts.updateDateRange({startDate: startDate, endDate: endDate});\n\n replaceQuery((q) => ({...q, dateRange: sels.dateRangeQueryUrlFormatted()}));\n\n const index = sels.reportageIndex();\n if (index === 0) {\n await fetchSiteEntriesEff();\n } else if (index === 1) {\n await fetchUserEntriesEff();\n }\n});\ntypes.updateDateRange = Record({startDate: P.Date, endDate: P.Date});\n\neffects.changeTab = async (tabIndex) => {\n acts.setReportageIndex(tabIndex);\n replaceQuery((q) => ({...q, reportageIndex: tabIndex}));\n\n if (tabIndex === 0) {\n await fetchSiteEntriesEff();\n } else if (tabIndex === 1) {\n await fetchUserEntriesEff();\n }\n};\ntypes.changeTab = P.Number;\n\neffects.updateUserQuery = guardHandled(async (query) => {\n acts.updateUserQuery(query);\n replaceQuery((q) => ({...q, user: sels.userQueryUrlFormatted()}));\n\n await fetchUserEntriesEff();\n});\ntypes.updateUserQuery = P.Object;\n\neffects.updateSiteQuery = guardHandled(async (query) => {\n acts.updateSiteQuery(query);\n replaceQuery((q) => ({...q, site: sels.siteQueryUrlFormatted()}));\n\n await fetchSiteEntriesEff();\n});\ntypes.updateSiteQuery = P.Object;\n\neffects.generateReportageModalOpen = (value) => {\n acts.setGenerateReportageModalOpen(value);\n};\ntypes.generateReportageModalOpen = P.Boolean;\n\neffects.generateEmployeeCsv = guardHandled(async (checked) => {\n const entries = await sels.userEntries();\n const includeBreaksAndPickups = checked;\n const dateRange = await sels.dateRange();\n\n const strippedEntries = entries.map((e) => ({\n site: e.site,\n totalTime: e.totalTime.total,\n breakTime: e.totalTime.break,\n id: e.user.id,\n name: e.user.name,\n entries: e.items,\n organizationId: e.user.organizationId,\n organizationName: e.user.organizationName,\n }));\n\n acts.setUserReportageLoading(true);\n\n const data = await decorateWithNotificationsEff(\n {\n id: 'generateEmployeeCsv',\n failureStyle: 'error',\n success: 'Raportti luotu ladattavaksi',\n },\n generateCsv({\n employees: strippedEntries,\n dateRange: dateRange,\n includeBreaksAndPickups,\n }),\n );\n\n acts.setUserReportage(data.url);\n\n acts.setUserReportageLoading(false);\n acts.setGenerateReportageModalOpen(false);\n});\ntypes.generateEmployeeCsv = P.Object;\n\neffects.generateSiteCsv = guardHandled(async (checked) => {\n const entries = sels.siteEntries();\n const dateRange = sels.dateRange();\n const includeBreaksAndPickups = checked;\n\n acts.setSiteReportageLoading(true);\n const data = await decorateWithNotificationsEff(\n {\n id: 'generateSiteCsv',\n failureStyle: 'error',\n success: 'Raportti luotu ladattavaksi',\n },\n generateCsv({sites: entries, dateRange: dateRange, includeBreaksAndPickups}),\n );\n\n acts.setSiteReportage(data.url);\n acts.setSiteReportageLoading(false);\n acts.setGenerateReportageModalOpen(false);\n});\ntypes.generateSiteCsv = P.Object;\n\neffects.updateIncludeBreaksAndPickups = (value) => {\n acts.setIncludeBreaksAndPickups(value);\n};\ntypes.updateIncludeBreaksAndPickups = P.Boolean;\n\neffects.destroy = async () => {\n acts.reset();\n};\n\nexport default createEffects(namespace, services.get('channel').dispatch, types, effects);\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport {Router} from 'react-router-dom';\nimport {Provider as ReduxProvider} from 'react-redux';\nimport * as Sentry from '@sentry/react';\nimport App from 'views/App';\nimport reportWebVitals from 'io/reportWebVitals';\nimport services from 'services';\nimport {createEventLog, injectStack, printLatestEvents} from 'services/createChannel';\nimport createStoreActionHook from 'services/createStoreActionHook';\nimport createStore from 'services/createStore';\nimport createApi from 'services/createApi';\nimport {eventsConfig} from 'utils/events';\nimport {assertionsConfig} from 'utils/assertions';\nimport {isApiTokenError} from 'utils/app';\nimport {handleUncaught} from 'io/errors';\nimport {inDev} from 'constants/app';\nimport {medDur, longDur} from 'constants/notifications';\nimport nEffs from 'modules/notifications/effects';\nimport effs from 'modules/common/effects';\nimport _sels from 'modules/common/boundSelectors';\n\nif (process.env.NODE_ENV === 'production') {\n // Sentry.init({\n // dsn: 'https://...',\n // environment: process.env.REACT_APP_NODE_ENV,\n // });\n}\n\nwindow.addEventListener('error', (evt) => handleUncaught(evt.error));\nwindow.addEventListener('unhandledrejection', (evt) => handleUncaught(evt.reason));\n\n// configure dependencies\n\neventsConfig.enable = inDev;\nassertionsConfig.enable = inDev;\n\n// configure lazy variables\n\nlet sels;\n_sels.then((x) => (sels = x));\n\n// configure channel\n\nconst channel = services.get('channel');\n\n// this is currently disabled in prod because a) stack traces really don't work with the minified version b) could cause minor performance draw for no visible gain.\nif (inDev) {\n channel.addHandler(injectStack);\n}\n\nconst eventLog = createEventLog();\nservices.set('eventLog', eventLog);\n\nif (inDev) {\n console.info(\n // eslint-disable-next-line max-len\n 'Type \"evts\" for a full list of events, or \"es\" for the latest events with nice formatting (from newest to oldest). You can also use e.g. \"esn(50)\" to control the amount of events to print.',\n );\n window.evts = eventLog.events;\n const logEvents = (n) => printLatestEvents(eventLog.events, n);\n Object.defineProperty(window, 'es', {get: logEvents});\n window.esn = logEvents;\n}\n\nchannel.addHandler(eventLog.logEvent);\n\nconst sentryLogEvent = (evt) => {\n Sentry.addBreadcrumb({\n category: 'event',\n message: evt.type,\n level: Sentry.Severity.Info,\n });\n};\nchannel.addListener(sentryLogEvent);\n\n// init Redux store\n\nconst {instance: storeHook, enhancer: actionHookEnhancer} = createStoreActionHook();\nconst store = createStore({actionHookEnhancer});\nservices.set('store', store);\nservices.set('storeHook', storeHook);\n\n// init API\nconst onApiError = (e) => {\n if (isApiTokenError(e) && sels.apiToken()) {\n effs.logout();\n nEffs.info({\n id: 'api-401',\n message: 'Sessio vanhentunut, uusi kirjautuminen vaaditaan',\n duration: medDur,\n });\n } else if (e.response && e.response.status === 503) {\n nEffs.info({\n id: 'api-503',\n message:\n // eslint-disable-next-line max-len\n 'Palvelua päivitetään. Päivitä sivu hetken kuluttua uudelleen. Päivitystoimenpide voi kestää muutaman minuutin.',\n duration: longDur,\n });\n }\n};\n\nconst api = createApi({\n get: (key) => {\n return {\n apiToken: sels.apiToken(),\n onError: onApiError,\n }[key];\n },\n});\nservices.set('api', api);\n\n// delay starting a bit so that service listeners have time to receive our newly-created services before anything else happens\nsetTimeout(effs.initialize);\n\nReactDOM.render(\n \n \n \n \n ,\n document.getElementById('root'),\n);\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\nreportWebVitals();\n","import React, {useEffect, useState, useRef} from 'react';\nimport {HStack, FormControl, FormLabel} from '@chakra-ui/react';\nimport {ReactDatepicker} from 'components';\n\nconst TimeEntryFilters = ({query, updateQuery}) => {\n const [startDate, setStartDate] = useState(query.startDate);\n const [endDate, setEndDate] = useState(query.endDate);\n\n const isInitialMount = useRef(true);\n\n useEffect(() => {\n if (isInitialMount.current) {\n isInitialMount.current = false;\n return;\n }\n\n if (!(startDate && endDate)) {\n return;\n }\n\n updateQuery({startDate, endDate});\n }, [startDate, endDate]);\n\n return (\n \n \n Alkaen\n setStartDate(date)}\n />\n \n \n Päättyen\n setEndDate(date)}\n />\n \n \n );\n};\n\nexport default TimeEntryFilters;\n","import React from 'react';\nimport {\n Table,\n Thead,\n Tbody,\n Tr,\n Th,\n Td,\n IconButton,\n Icon,\n Box,\n Center,\n Spinner,\n Menu,\n MenuButton,\n MenuList,\n MenuItem,\n Text,\n} from '@chakra-ui/react';\nimport {FiChevronDown, FiMoreHorizontal} from 'react-icons/fi';\nimport {sToTime} from 'utils/time';\n\nconst SitesRow = ({site = {}, onRowClick, onEditClick, setEditableEntries}) => {\n return (\n {\n e.stopPropagation();\n setEditableEntries(site.timeEntries);\n onRowClick();\n }}\n _hover={{bg: 'gray.50', cursor: 'pointer'}}\n >\n \n {site.siteName}\n | \n {site.siteAddress} | \n {site.userCount.length} | \n {sToTime(site.totalTime.total)} | \n \n \n | \n
\n );\n};\n\nconst SitesTab = ({\n siteEntries = [],\n loading,\n onSiteClick,\n editTimeEntries,\n setEditableEntries,\n}) => {\n return (\n \n \n \n \n \n Työmaa\n {}}\n size=\"sm\"\n icon={}\n />\n | \n \n Osoite\n {}}\n size=\"sm\"\n icon={}\n />\n | \n \n Työntekijät\n {}}\n size=\"sm\"\n icon={}\n />\n | \n \n Työtunnit\n {}}\n size=\"sm\"\n icon={}\n />\n | \n | \n
\n \n {loading ? null : (\n \n {siteEntries.map((s) => (\n \n ))}\n \n )}\n
\n {loading ? (\n \n \n \n ) : !siteEntries.length ? (\n Ei kirjauksia\n ) : null}\n \n );\n};\n\nexport default SitesTab;\n","export const parseNullableJson = (deflt) => (str) => str !== '' ? JSON.parse(str) : deflt;\n\nexport const parseNullableNumber = (s) => (s !== '' ? Number(s) : null);\n\nexport const formatNullableNumber = (n) => (n == null ? '' : n);\n\nexport const parseCommaSeparated = (s) => (s ? s.split(',') : []);\n","import React, {useState, useEffect, useRef} from 'react';\nimport {\n HStack,\n FormControl,\n FormLabel,\n Input,\n InputRightElement,\n InputGroup,\n Icon,\n Select,\n Tooltip,\n Text,\n Box,\n Button,\n} from '@chakra-ui/react';\nimport {FiSearch} from 'react-icons/fi';\nimport {equals} from 'ramda';\nimport {useDebounce} from 'utils/react';\nimport {sToTime} from 'utils/time';\nimport effs from 'modules/reportages/effects';\nimport {parseNullableNumber, formatNullableNumber} from 'utils/fields';\nimport {Link} from 'react-router-dom';\n\nconst SitesTabFilters = ({\n query = {},\n updateQuery = () => {},\n siteEntries,\n sites,\n siteReportage,\n siteReportageLoading,\n}) => {\n const querySearch = query.name || '';\n const [search, setSearch] = useState(querySearch);\n const debouncedSearch = useDebounce(search, 500);\n const isInitialMount = useRef(true);\n\n useEffect(() => {\n if (isInitialMount.current) {\n isInitialMount.current = false;\n return;\n }\n\n if (!equals(debouncedSearch, querySearch)) {\n updateQuery({name: debouncedSearch});\n }\n }, [debouncedSearch]);\n\n useEffect(() => {\n if (querySearch !== search) {\n setSearch(querySearch);\n }\n }, [querySearch]);\n\n const totalHours = siteEntries\n .map((item) => item.totalTime.total)\n .reduce((prev, curr) => prev + curr, 0);\n\n return (\n \n \n \n Vapaahaku\n \n setSearch(e.target.value)}\n />\n \n \n \n \n \n \n Työmaa\n \n \n \n \n \n {!siteReportage ? (\n \n \n \n ) : (\n \n \n \n )}\n \n \n Kirjatut tunnit\n \n \n {sToTime(totalHours)}\n \n \n \n \n \n );\n};\n\nexport default SitesTabFilters;\n","import React from 'react';\nimport {\n Table,\n Thead,\n Tbody,\n Tr,\n Th,\n Td,\n IconButton,\n Icon,\n Box,\n Center,\n Spinner,\n MenuButton,\n Text,\n Menu,\n MenuList,\n MenuItem,\n} from '@chakra-ui/react';\nimport {FiChevronDown, FiMoreHorizontal} from 'react-icons/fi';\nimport {sToTime} from 'utils/time';\n\nconst EmployeesRow = ({\n userEntry,\n onRowClick,\n onEdit,\n onEditClick,\n setEditableEntries,\n}) => {\n const totalTime = userEntry.totalTime.total;\n return (\n {\n e.stopPropagation();\n setEditableEntries(userEntry.items);\n onRowClick();\n }}\n >\n \n {userEntry.user.name}\n | \n {userEntry.site.name} | \n {userEntry.user.organizationName} | \n {sToTime(totalTime)} | \n \n \n | \n
\n );\n};\n\nconst EmployeesTab = ({\n userEntries = [],\n loading,\n onEmployeeClick,\n editTimeEntries,\n setEditableEntries,\n}) => {\n return (\n \n \n \n \n \n Työntekijä\n {}}\n size=\"sm\"\n icon={}\n />\n | \n \n Työmaa\n {}}\n size=\"sm\"\n icon={}\n />\n | \n \n Organisaatio\n {}}\n size=\"sm\"\n icon={}\n />\n | \n \n Työtunnit\n {}}\n size=\"sm\"\n icon={}\n />\n | \n | \n
\n \n {loading ? null : (\n \n {userEntries.map((userEntry) => (\n \n ))}\n \n )}\n
\n {loading ? (\n \n \n \n ) : !userEntries.length ? (\n Ei kirjauksia\n ) : null}\n \n );\n};\n\nexport default EmployeesTab;\n","import React, {useState, useEffect, useRef} from 'react';\nimport {\n HStack,\n FormControl,\n FormLabel,\n Input,\n InputRightElement,\n InputGroup,\n Icon,\n Select,\n Tooltip,\n Button,\n Text,\n Box,\n} from '@chakra-ui/react';\n\nimport {FiSearch} from 'react-icons/fi';\nimport {equals} from 'ramda';\nimport {useDebounce} from 'utils/react';\nimport {sToTime} from 'utils/time';\nimport effs from 'modules/reportages/effects';\nimport {parseNullableNumber, formatNullableNumber} from 'utils/fields';\nimport {Link} from 'react-router-dom';\n\nconst EmployeesTabFilters = ({\n query = {},\n updateQuery = () => {},\n userEntries,\n siteId,\n organizationSites,\n organizations,\n userReportage,\n userReportageLoading,\n}) => {\n const querySearch = query.name || '';\n const [search, setSearch] = useState(querySearch);\n const debouncedSearch = useDebounce(search, 500);\n const isInitialMount = useRef(true);\n\n useEffect(() => {\n if (isInitialMount.current) {\n isInitialMount.current = false;\n return;\n }\n\n if (!equals(debouncedSearch, querySearch)) {\n updateQuery({name: debouncedSearch});\n }\n }, [debouncedSearch]);\n\n useEffect(() => {\n if (querySearch !== search) {\n setSearch(querySearch);\n }\n }, [querySearch]);\n\n const selectedSiteName = siteId\n ? organizationSites.find((site) => site.id === parseInt(siteId)).name\n : '';\n\n const totalHours = userEntries\n .map((item) => item.totalTime.total)\n .reduce((prev, curr) => prev + curr, 0);\n return (\n \n \n \n Vapaahaku\n \n setSearch(e.target.value)}\n />\n \n \n \n \n \n \n Työmaa\n \n \n \n Organisaatio\n \n \n \n \n {!userReportage ? (\n \n \n \n ) : (\n \n \n \n )}\n\n \n \n Kirjatut tunnit\n \n \n {sToTime(totalHours)}\n \n \n \n \n );\n};\n\nexport default EmployeesTabFilters;\n","import React, {useState} from 'react';\nimport {\n Modal,\n ModalOverlay,\n ModalContent,\n ModalBody,\n ModalHeader,\n ModalCloseButton,\n ModalFooter,\n Button,\n HStack,\n Box,\n Text,\n Switch,\n VStack,\n} from '@chakra-ui/react';\n\nconst GenerateCsvModal = ({\n isOpen,\n onClose = () => {},\n generateSiteCsv,\n generateEmployeeCsv,\n reportageIndex,\n includeBreaksAndPickups,\n}) => {\n const [checked, setChecked] = useState(includeBreaksAndPickups);\n\n const onSubmit = () => {\n if (reportageIndex === 1) {\n generateEmployeeCsv(checked);\n }\n\n if (reportageIndex === 0) {\n generateSiteCsv(checked);\n }\n };\n\n return (\n \n \n \n Raportin Luonti\n \n \n \n \n Näytä raportilla myös tauot ja noudot\n \n \n Ei\n {\n setChecked(!checked);\n }}\n />\n Kyllä\n \n \n \n \n \n \n \n \n );\n};\n\nexport default GenerateCsvModal;\n","import React, {useEffect} from 'react';\nimport {\n Box,\n Text,\n Tabs,\n TabList,\n TabPanels,\n Tab,\n TabPanel,\n Button,\n HStack,\n} from '@chakra-ui/react';\nimport {pick} from 'ramda';\nimport {connect} from 'react-redux';\nimport {applyState} from 'utils/redux';\nimport {encodeQuery, createReferrerUrl} from 'utils/url';\nimport sels from 'modules/reportages/selectors';\nimport timeEntrySels from 'modules/timeEntries/selectors';\nimport effs from 'modules/reportages/effects';\nimport {Content, Card, TabsHorizontalScroll, PageHeader} from 'components';\nimport timeEntryEffs from 'modules/timeEntries/effects';\nimport TimeEntryFilters from './components/TimeEntryFilters';\nimport SitesTab from './sites/SitesTab';\nimport SitesTabFilters from './sites/SitesTabFilters';\nimport EmployeesTab from './employees/EmployeesTab';\nimport EmployeesTabFilters from './employees/EmployeesTabFilters';\nimport commonSels from 'modules/common/selectors';\nimport {TimeEntriesModal} from 'views/timeEntries/timeEntriesModal';\nimport {FiChevronsLeft} from 'react-icons/fi';\nimport GenerateCsvModal from './components/GenerateCsvModal';\n\nconst Reportage = ({\n location,\n history,\n initialized,\n siteEntries,\n referrerUrlBoolean,\n userEntries,\n dateRange,\n userQuery,\n siteQuery,\n timeEntriesModalOpen,\n timeEntryDefaultValues,\n loading,\n organizationSites,\n organizations,\n reportageIndex,\n userReportageLoading,\n userReportage,\n siteReportage,\n siteReportageLoading,\n generateReportageModalOpen,\n includeBreaksAndPickups,\n}) => {\n useEffect(() => {\n effs.initialize();\n\n return () => {\n effs.destroy();\n };\n }, []);\n\n const referrerUrl = createReferrerUrl(location);\n\n const openEmployee = (id) => {\n history.push(\n `/employees/${id}${encodeQuery({referrerUrl, referrerTitle: 'Työntekijät'})}`,\n );\n };\n\n const openSite = (id) => {\n history.push(`/sites/${id}${encodeQuery({referrerUrl, referrerTitle: 'Työmaat'})}`);\n };\n\n const updateLists = () => {\n effs.updateUserQuery({});\n effs.updateSiteQuery({});\n };\n\n return (\n \n {referrerUrlBoolean ? (\n \n \n \n ) : null}\n \n \n Työaika\n \n {\n effs.changeTab(index);\n }}\n >\n \n \n \n Työmaat\n Työntekijät\n \n \n {initialized && (\n \n )}\n \n \n \n \n timeEntryEffs.openTimeEntryModal(updateLists)}\n setEditableEntries={timeEntryEffs.setEditableEntries}\n onSiteClick={openSite}\n />\n \n \n \n timeEntryEffs.openTimeEntryModal(updateLists)}\n setEditableEntries={timeEntryEffs.setEditableEntries}\n onEmployeeClick={openEmployee}\n />\n \n \n \n \n {timeEntriesModalOpen && (\n timeEntryEffs.closeTimeEntryModal()}\n defaultValues={timeEntryDefaultValues}\n />\n )}\n {generateReportageModalOpen && (\n \n )}\n \n );\n};\nexport default connect(\n applyState({\n ...pick(\n ['timeEntriesModalOpen', 'editableEntries', 'timeEntryDefaultValues'],\n timeEntrySels,\n ),\n ...pick(\n [\n 'initialized',\n 'siteEntries',\n 'referrerUrlBoolean',\n 'userEntries',\n 'loading',\n 'dateRange',\n 'userQuery',\n 'siteQuery',\n 'reportageIndex',\n 'siteReportage',\n 'siteReportageLoading',\n 'userReportage',\n 'userReportageLoading',\n 'generateReportageModalOpen',\n 'includeBreaksAndPickups',\n ],\n sels,\n ),\n ...pick(['organizationSites', 'organizations'], commonSels),\n }),\n)(Reportage);\n","import React from 'react';\nimport {Box, ChakraProvider, CSSReset, PortalManager} from '@chakra-ui/react';\nimport 'focus-visible/dist/focus-visible'; // disable border for non-keyboard interactions\nimport {Switch, Route, Redirect} from 'react-router-dom';\nimport {connect} from 'react-redux';\nimport {pick} from 'ramda';\n\nimport {applyState} from 'utils/redux';\nimport commonSels from 'modules/common/selectors';\nimport theme from '../theme/theme';\n\nimport {Header, PageLoader} from 'components';\nimport Login from './login';\nimport Notifications from './notifications';\nimport Confirmer from './confirmer';\nimport Styles from './Styles';\nimport Sites from './sites/sites';\nimport Site from './sites/site';\nimport Employees from './employees/employees';\nimport Employee from './employees/employee';\nimport Organizations from './organizations/organizations';\nimport Organization from './organizations/organization';\nimport Reportage from './reportages';\n\nconst App = ({initialized, loggedIn, user, organizationId}) => {\n const orgID = [5, 4];\n\n const showOrganizationTab = orgID.includes(organizationId);\n return (\n \n \n \n \n \n {!initialized ? null : !loggedIn ? (\n \n \n \n ) : !user ? (\n \n ) : (\n \n \n \n {showOrganizationTab ? (\n \n \n \n \n \n \n \n \n \n \n \n ) : (\n \n \n \n \n \n \n \n \n \n \n )}\n \n \n )}\n \n \n );\n};\n\nexport default connect(\n applyState({\n ...pick(['initialized', 'loggedIn', 'user', 'organizationId'], commonSels),\n }),\n)(App);\n","const reportWebVitals = (onPerfEntry) => {\n if (onPerfEntry && onPerfEntry instanceof Function) {\n import('web-vitals').then(({getCLS, getFID, getFCP, getLCP, getTTFB}) => {\n getCLS(onPerfEntry);\n getFID(onPerfEntry);\n getFCP(onPerfEntry);\n getLCP(onPerfEntry);\n getTTFB(onPerfEntry);\n });\n }\n};\n\nexport default reportWebVitals;\n","import {reducer} from './store';\n\nexport default reducer;\n","import {reducer} from './store';\n\nexport default reducer;\n","import {reducer} from './store';\n\nexport default reducer;\n","import {reducer} from './store';\n\nexport default reducer;\n","import {pipeReducers} from 'utils/redux';\nimport sitesPage from './sitesPage/reducer';\nimport sitePage from './sitePage/reducer';\n\nexport default pipeReducers(sitesPage, sitePage);\n","import {reducer} from './store';\n\nexport default reducer;\n","import {reducer} from './store';\n\nexport default reducer;\n","import {pipeReducers} from 'utils/redux';\nimport employeesPage from './employeesPage/reducer';\nimport employeePage from './employeePage/reducer';\n\nexport default pipeReducers(employeesPage, employeePage);\n","import {reducer} from './store';\n\nexport default reducer;\n","import {reducer} from './store';\n\nexport default reducer;\n","import {pipeReducers} from 'utils/redux';\nimport organizationsPage from './organizationsPage/reducer';\nimport organizationPage from './organizationPage/reducer';\n\nexport default pipeReducers(organizationsPage, organizationPage);\n","import {reducer} from './store';\n\nexport default reducer;\n","import {reducer} from './store';\n\nexport default reducer;\n","import {pipeReducers} from 'utils/redux';\nimport notifications from './notifications/reducer';\nimport confirmer from './confirmer/reducer';\nimport common from './common/reducer';\nimport login from './login/reducer';\nimport sites from './sites/reducer';\nimport employees from './employees/reducer';\nimport organizations from './organizations/reducer';\nimport reportages from './reportages/reducer';\nimport timeEntries from './timeEntries/reducer';\n\nexport default pipeReducers(\n notifications,\n confirmer,\n common,\n login,\n sites,\n employees,\n organizations,\n reportages,\n timeEntries,\n);\n","import {reducer} from './store';\n\nexport default reducer;\n","import {reducer} from './store';\n\nexport default reducer;\n","export const createFormData = (obj) => {\n const formData = new FormData();\n Object.keys(obj).forEach((k) => formData.append(k, obj[k]));\n return formData;\n};\n\nexport const validateResponse = (res) => {\n if (res.ok) return Promise.resolve(res);\n const e = new Error(`Request failed: ${res.url}`);\n e.response = res;\n return Promise.reject(e);\n};\n","import {encodeQuery} from 'utils/url';\nimport {validateResponse} from 'utils/http';\n\nexport const request = (method, url, query, conf = {}) =>\n new Request(`${url}${encodeQuery(query)}`, {...conf, method});\n\nexport const requestJson = (method, url, query, conf = {}) =>\n request(method, url, query, {\n ...conf,\n ...(conf.body ? {body: JSON.stringify(conf.body)} : {}),\n headers: {'content-type': 'application/json; charset=utf-8', ...(conf.headers || {})},\n });\n\nexport const fetch_ = (request) => fetch(request).then(validateResponse);\n\nexport const fetchJson = (request) =>\n fetch_(request)\n .then((res) => res.text())\n .then((text) => (text !== '' ? JSON.parse(text) : undefined));\n\nexport const http = (...args) => fetch_(request(...args));\n\nexport const httpJson = (...args) => fetchJson(requestJson(...args));\n","// create a simple hook that allows listening for actions (redux's own subscribe api is lacking). need to plug the enhancer into the store to setup the instance\nexport default () => {\n let listeners = {};\n let seq = 1;\n\n const subscribe = (f) => {\n const currSeq = seq;\n seq += 1;\n\n listeners[currSeq] = f;\n\n // unsubscribe\n return () => {\n delete listeners[currSeq];\n };\n };\n\n const instance = {\n subscribe,\n //subscribeToType,\n };\n\n const enhancer = (next) => (reducer, initialState, enhancer) => {\n const reducer_ = (state, action) => {\n const newState = reducer(state, action);\n Object.values(listeners).forEach((f) => f(action, state, newState));\n return newState;\n };\n\n return next(reducer_, initialState, enhancer);\n };\n\n return {\n instance,\n enhancer,\n };\n};\n","import {createStore, compose as reduxCompose, applyMiddleware} from 'redux';\nimport {stackInjectorMiddleware} from 'utils/redux';\nimport reducer from 'modules/reducer';\nimport {inDev} from 'constants/app';\n\nexport default ({actionHookEnhancer = null}) => {\n const compose = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || reduxCompose;\n\n const middleware = inDev ? [stackInjectorMiddleware] : [];\n\n const enhancers = [\n ...(actionHookEnhancer ? [actionHookEnhancer] : []),\n applyMiddleware(...middleware),\n ];\n\n const enhancer = compose(...enhancers);\n\n return createStore(reducer, enhancer);\n};\n","import {http, httpJson} from 'io/http';\nimport {apiUrl} from 'constants/app';\n\nexport default ({get}) => {\n const augmentArgs = ([method, url, query, conf = {}]) => {\n const headers = {\n Accept: 'application/json',\n ...(get('apiToken') ? {Authorization: `Bearer ${get('apiToken')}`} : {}),\n ...(conf.headers || {}),\n };\n\n const reqConf = {...conf, headers};\n const reqUrl = `${apiUrl}${url}`;\n\n return [method, reqUrl, query, reqConf];\n };\n\n const augmentResponse = (promise) =>\n promise.catch((e) => {\n if (get('onError')) get('onError')(e);\n throw e;\n });\n\n return {\n http: (...args) => augmentResponse(http(...augmentArgs(args))),\n httpJson: (...args) => augmentResponse(httpJson(...augmentArgs(args))),\n };\n};\n"],"sourceRoot":""}