{"version":3,"sources":["pages/preview/Preview.module.css","components/admin/visitorstatistics/VisitorStatistics.module.css","pages/developer/PageDeveloper.module.css","components/simple/salaryanalysis/salaryinterval/SalaryInterval.module.css","pages/simple/PageSimple.module.css","atoms/accordion/Accordion.module.css","components/advanced/reportsection/salarytable/SalaryTable.module.css","atoms/modal/Modal.module.css","components/header/Header.module.css","atoms/checkbox/Checkbox.module.css","atoms/select/Select.module.css","components/advanced/datasource/DataSource.module.css","pages/login/PageLogin.module.css","atoms/selectPreview/SelectPreview.module.css","components/header/menu/Menu.module.css","components/advanced/filters/filterlist/FilterList.module.css","components/advanced/reportsection/salarygraph/salarymarker/SalaryMarker.module.css","components/admin/filterexplanations/filterexplanationnotext/FilterExplanationNoText.module.css","components/admin/applicationlog/ApplicationLog.module.css","pages/admin/PageAdmin.module.css","pages/copyconfiguration/CopyConfiguration.module.css","components/admin/copyconfiguration/activeselections/ActiveSelections.module.css","pages/errorboundary/PageErrorBoundary.module.css","atoms/buttonlink/ButtonLink.module.css","atoms/statisticsometer/Statisticsometer.module.css","pages/advanced/PageAdvanced.module.css","atoms/button/Button.module.css","components/admin/level3advanced/datasourceconfig/sortablelist/SortableList.module.css","components/admin/level3advanced/datasourceconfig/DataSourceConfig.module.css","components/admin/applicationlog/logitem/LogItem.module.css","components/admin/copyconfiguration/statusbox/StatusBox.module.css","components/admin/notifications/notificationrow/NotificationRow.module.css","components/footer/Footer.module.css","pages/start/PageStart.module.css","atoms/input/Input.module.css","components/advanced/activefilters/ActiveFilters.module.css","components/start/analysiscard/AnalysisCard.module.css","components/simple/selectioncard/SelectionCard.module.css","atoms/panel/Panel.module.css","components/admin/accounts/Accounts.module.css","components/admin/navigationItem/NavigationItem.module.css","components/admin/copyconfiguration/CopyConfiguration.module.css","pages/loginInfo/LoginInfo.module.css","atoms/buttonactivefilter/ButtonActiveFilter.module.css","components/simple/checkboxselectgroup/CheckboxSelectGroup.module.css","components/simple/salaryprofile/SalaryProfile.module.css","components/advanced/toolbar/downloadsection/DownloadSection.module.css","components/advanced/filters/Filters.module.css","atoms/inputreadonly/InputReadOnly.module.css","components/admin/situationconfig/situationcard/SituationCard.module.css","components/admin/linksconfig/LinksConfig.module.css","components/admin/previewdatasourceconfig/previewdatasourcecard/PreviewDataSourceCard.module.css","components/admin/filterexplanations/FilterExplanations.module.css","pages/logout/Logout.module.css","atoms/breadcrumbs/breadcrumbsitem/BreadcrumbsItem.module.css","atoms/section/Section.module.css","atoms/radiobutton/RadioButton.module.css","components/simple/situation/Situation.module.css","components/advanced/reportsection/ReportSection.module.css","atoms/tab/Tab.module.css","components/advanced/reportsection/salarygraph/SalaryGraph.module.css","components/advanced/explanations/Explanations.module.css","components/advanced/custompresentation/CustomPresentation.module.css","atoms/buttonbar/ButtonBar.module.css","atoms/checkboxadmin/CheckboxAdmin.module.css","components/admin/linksconfig/linkcard/LinkCard.module.css","components/admin/level2simple/Level2Simple.module.css","atoms/sectionadmin/SectionAdmin.module.css","components/admin/previewconfig/PreviewConfig.module.css","components/admin/filterexplanations/filterexplanationitem/FilterExplanationItem.module.css","components/admin/generaltexts/generaltextitem/GeneralTextItem.module.css","components/header/banner/Banner.module.css","components/start/about/About.module.css","components/start/privacypolicy/PrivacyPolicy.module.css","components/simple/salaryanalysis/SalaryAnalysis.module.css","components/simple/salaryslider/SalarySlider.module.css","atoms/loader/Loader.module.css","atoms/notification/Notification.module.css","atoms/errornotification/ErrorNotification.module.css","components/advanced/toolbar/ToolBar.module.css","components/advanced/filters/filterlist/filteritem/FilterItem.module.css","components/advanced/datasource/datasourcesummary/DataSourceSummary.module.css","components/advanced/explanations/explanationgroup/explanationitem/ExplanationItem.module.css","components/advanced/explanations/explanationgroup/instructionsvideo/InstructionsVideo.module.css","atoms/textarea/Textarea.module.css","components/admin/salaryprofileconfig/SalaryProfileConfig.module.css","components/admin/level3advanced/datasourceconfig/loadconfiguration/LoadConfiguration.module.css","components/admin/previewsalaryprofileconfig/PreviewSalaryProfileConfig.module.css","components/admin/filterexplanations/filterexplanationedit/FilterExplanationEdit.module.css","atoms/unionlink/UnionLink.module.css","testdata/saco-lonesok_logotype.svg","App.module.css","atoms/explanationtext/ExplanationText.module.css","atoms/buttontransparent/ButtonTransparent.module.css","atoms/breadcrumbs/Breadcrumbs.module.css","components/simple/externallink/ExternalLink.module.css","components/simple/salaryslider/slider/Slider.module.css","components/advanced/toolbar/downloadsection/downloadexcel/DownloadExcel.module.css","components/advanced/presentation/Presentation.module.css","atoms/tabrow/TabRow.module.css","atoms/chart/Chart.module.css","components/advanced/explanations/explanationgroup/ExplanationGroup.module.css","images/box_plot_image.png","components/admin/level2simple/helpbox/HelpBox.module.css","components/admin/level3advanced/Level3Advanced.module.css","components/admin/level3advanced/standardconfig/StandardConfig.module.css","components/admin/previewconfig/helpbox/HelpBox.module.css","components/admin/accounts/accountrow/AccountRow.module.css","components/admin/accounts/createaccount/CreateAccount.module.css","components/admin/copyconfiguration/datasource/DataSource.module.css","components/admin/copyconfiguration/unionselect/UnionSelect.module.css","components/admin/copyconfiguration/helpbox/HelpBox.module.css","components/admin/notifications/addnotification/AddNotification.module.css","pages/404/Page404.module.css","testdata/flowchart_token-authentication.svg","pages/previewlab/PreviewLab.module.css","components/admin/filterexplanations/filterexplanationcreate/FilterExplanationCreate.module.css","pages/errorboundary/PageErrorBoundary.js","services/ApiService.js","atoms/visitorcounter/VisitorCounter.js","services/UseAuth.js","components/header/banner/Banner.js","atoms/buttonlink/ButtonLink.js","hooks/useVisible.js","components/header/menu/Menu.js","components/header/Header.js","atoms/unionlink/UnionLink.js","components/footer/Footer.js","components/start/analysiscard/AnalysisCard.js","atoms/explanationtext/ExplanationText.js","hooks/useScrollTo.js","atoms/buttontransparent/ButtonTransparent.js","atoms/accordion/Accordion.js","components/start/about/About.js","components/start/privacypolicy/TechnicalInformation.js","pages/start/PageStart.js","atoms/breadcrumbs/breadcrumbsitem/BreadcrumbsItem.js","atoms/breadcrumbs/Breadcrumbs.js","atoms/section/Section.js","lib/antal.js","components/simple/salaryanalysis/salaryinterval/SalaryInterval.js","components/simple/externallink/ExternalLink.js","components/simple/salaryanalysis/SalaryAnalysis.js","atoms/radiobutton/RadioButton.js","components/simple/selectioncard/SelectionCard.js","components/simple/situation/Situation.js","atoms/input/Input.js","components/simple/salaryslider/slider/Slider.js","components/simple/salaryslider/SalarySlider.js","atoms/buttonactivefilter/ButtonActiveFilter.js","components/advanced/activefilters/ActiveFilters.js","atoms/checkbox/Checkbox.js","components/simple/checkboxselectgroup/CheckboxSelectGroup.js","components/simple/salaryprofile/SalaryProfile.js","atoms/loader/Loader.js","lib/emptyValues.js","atoms/notification/Notification.js","atoms/errornotification/ErrorNotification.js","pages/simple/PageSimple.js","components/simple/sellingpoints/SellingPoints.js","components/simple/welcome/Welcome.js","pages/simple/PageSimpleFree.js","components/advanced/toolbar/downloadsection/downloadexcel/DownloadExcel.js","lib/excel.js","components/advanced/toolbar/downloadsection/DownloadSection.js","components/advanced/toolbar/ToolBar.js","components/advanced/filters/filterlist/filteritem/FilterItem.js","components/advanced/filters/filterlist/FilterList.js","components/advanced/filters/Filters.js","atoms/select/Select.js","components/advanced/datasource/datasourcesummary/DataSourceSummary.js","components/advanced/datasource/DataSource.js","components/advanced/presentation/Presentation.js","lib/salaryTable.js","atoms/tabrow/TabRow.js","atoms/tab/Tab.js","components/advanced/reportsection/salarytable/SalaryTable.js","atoms/chart/Chart.js","lib/time.js","lib/salaryGraph.js","components/advanced/reportsection/salarygraph/salarymarker/SalaryMarker.js","components/advanced/reportsection/salarygraph/SalaryGraph.js","components/advanced/reportsection/ReportSection.js","components/advanced/explanations/explanationgroup/explanationitem/ExplanationItem.js","components/advanced/explanations/explanationgroup/ExplanationGroup.js","components/advanced/explanations/explanationgroup/instructionsvideo/InstructionsVideo.js","components/advanced/explanations/Explanations.js","components/advanced/custompresentation/CustomPresentation.js","atoms/statisticsometer/Statisticsometer.js","pages/advanced/PageAdvanced.js","lib/pageAdvanced.js","atoms/panel/Panel.js","const.js","atoms/button/Button.js","atoms/buttonbar/ButtonBar.js","components/admin/datasourceselect/DataSourceSelect.js","components/admin/situationconfig/situationcreate/SituationCreate.js","atoms/checkboxadmin/CheckboxAdmin.js","atoms/inputreadonly/InputReadOnly.js","atoms/textarea/Textarea.js","components/admin/situationconfig/situationcard/SituationCard.js","components/admin/situationconfig/SituationConfig.js","components/admin/linksconfig/linkcreate/LinkCreate.js","components/admin/linksconfig/linkcard/LinkCard.js","components/admin/linksconfig/LinksConfig.js","components/admin/level3advanced/datasourceconfig/sortablelist/SortableList.js","components/admin/salaryprofileconfig/SalaryProfileConfig.js","components/admin/level2simple/helpbox/HelpBox.js","components/admin/level2simple/Level2Simple.js","atoms/sectionadmin/SectionAdmin.js","components/admin/level3advanced/datasourceconfig/loadconfiguration/LoadConfiguration.js","components/admin/level3advanced/datasourceconfig/DataSourceConfig.js","components/admin/level3advanced/standardconfig/defaultsourceconfig/DefaultSourceConfig.js","components/admin/level3advanced/standardconfig/StandardConfig.js","components/admin/level3advanced/Level3Advanced.js","components/admin/previewdatasourceconfig/previewdatasourcecreate/PreviewDataSourceCreate.js","components/admin/previewdatasourceconfig/previewdatasourcecard/PreviewDataSourceCard.js","components/admin/previewdatasourceconfig/PreviewDataSourceConfig.js","components/admin/previewsalaryprofileconfig/PreviewSalaryProfileConfig.js","components/admin/previewconfig/helpbox/HelpBox.js","components/admin/previewconfig/PreviewConfig.js","atoms/markdowneditor/MarkdownEditor.js","components/admin/filterexplanations/filterexplanationcreate/FilterExplanationCreate.js","components/admin/filterexplanations/filterexplanationnotext/FilterExplanationNoText.js","components/admin/filterexplanations/filterexplanationedit/FilterExplanationEdit.js","components/admin/filterexplanations/filterexplanationitem/FilterExplanationItem.js","components/admin/filterexplanations/FilterExplanations.js","components/admin/accounts/editaccount/EditAccount.js","components/admin/accounts/accountrow/AccountRow.js","components/admin/accounts/createaccount/CreateAccount.js","components/admin/accounts/Accounts.js","components/admin/applicationlog/logitem/LogItem.js","components/admin/applicationlog/ApplicationLog.js","components/admin/generaltexts/generaltextitem/GeneralTextItem.js","components/admin/generaltexts/GeneralTexts.js","components/admin/navigationItem/navigationItem.js","components/admin/unionConfig/unionlinkconfig/UnionLinkConfig.js","components/admin/unionConfig/UnionConfig.js","atoms/modal/Modal.js","components/admin/copyconfiguration/activeselections/ActiveSelections.js","components/admin/copyconfiguration/activeselections/ActiveUnionSelections.js","components/admin/copyconfiguration/datasource/DataSource.js","components/admin/copyconfiguration/unionselect/UnionSelect.js","components/admin/copyconfiguration/helpbox/HelpBox.js","components/admin/copyconfiguration/statusbox/StatusBox.js","components/admin/copyconfiguration/CopyConfiguration.js","components/admin/notifications/notificationrow/NotificationRow.js","components/admin/notifications/addnotification/AddNotification.js","components/admin/notifications/Notifications.js","assets/Colors.js","components/admin/visitorstatistics/barCharts/DayChart.js","components/admin/visitorstatistics/barCharts/WeekChart.js","components/admin/visitorstatistics/barCharts/MonthChart.js","components/admin/visitorstatistics/barCharts/YearChart.js","components/admin/visitorstatistics/barCharts/BarCharts.js","components/admin/visitorstatistics/pieCharts/ViewChart.js","components/admin/visitorstatistics/pieCharts/UnitChart.js","components/admin/visitorstatistics/pieCharts/BrowserChart.js","components/admin/visitorstatistics/pieCharts/PieCharts.js","components/admin/visitorstatistics/VisitorStatistics.js","pages/admin/PageAdmin.js","pages/404/Page404.js","pages/login/PageLogin.js","pages/developer/PageDeveloper.js","pages/logout/Logout.js","pages/copyconfiguration/CopyConfiguration.js","services/TokenRedirect.js","services/ForbundsKodRedirect.js","pages/loginInfo/LoginInfo.js","lib/preview.js","atoms/selectPreview/SelectPreview.js","atoms/svg/SVGComponent.js","pages/preview/Preview.js","pages/previewlab/PreviewLab.js","pages/instructionvideo/Instructionvideo.js","pages/errorboundary/PageErrorProvocation.js","AppRouter.js","App.js","index.js"],"names":["module","exports","PageErrorBoundary","state","hasError","error","this","className","styles","main","header","text","href","link","props","children","Component","withRouter","ApiService","BASE_URL","AppSettings","SERVER_URL","handleNetworkError","res","ok","createGetRequest","page","token","req","method","headers","Authorization","fetch","then","json","createDeleteRequest","createPostRequest","reqData","returnJson","body","JSON","stringify","createPostRequestWithCredentials","login","data","testLogin","tokenLogin","createPostRequestWithToken","forbundsKodLogin","getForbund","getFds","getConfiguration","copyConfigurationExecute","getActiveFds","getMenuselections","getPreviewMenuSelection","getMetatabs","getBreakby","getReport","getBinstat","getReportExcel","sendVistitorStats","getSituations","getPreviewSituations","createSituation","updateSituation","id","deleteSituation","updateSelections","postDatasource","getUnionByUnionId","unionId","getUnionByForbundsKod","forbundsKod","getUnion","getUnions","refreshAdminToken","postConfiguredYear","getTexts","getTextsBoth","postText","deleteText","getLogs","getMonitoringLogs","getVisitorStats","getVisitorStatsNew","getUserStatistics","getVisitorStatsByUnion","getVisitorExcel","clearCache","getSituationsFree","getReportFree","getMenuselectionsFree","createEventSource","messageEvent","EventSource","onmessage","e","getSubscribers","postSubscriber","updateAccount","subId","updatePassword","deleteSubscriber","getPresentations","postPresentations","Api","MESSAGES","VisitorCounter","path","user","useCookies","cookies","useEffect","low","high","active","request","message","setTimeout","statistics","Math","floor","random","propTypes","PropTypes","string","isRequired","shape","authContext","createContext","useAuth","useContext","ProvideAuth","auth","useState","parse","localStorage","getItem","setUser","decodeUser","usr","split","decodedJsonData","window","atob","decodedData","forbund","fk","unionid","role","exp","signout","removeItem","storeUser","decodedUser","setItem","signin","subscriberId","password","forbundsKodAdmin","catch","tokenSignin","browser","device","forbundSignin","forbundsId","autoRefreshToken","minutes","now","Date","soon","getTime","expires","expiresSoon","useProvideAuth","Provider","value","PrivateRoute","component","rest","render","to","pathname","AdminRoute","restrict","from","location","Banner","document","title","banner","ButtonLink","buttonIcon","label","altText","icon","large","menuItem","lastChild","accordionItem","disabled","onClick","style","buttonClassName","buttonIsLarge","isLarge","buttonIsMenuItem","isMenuItem","buttonIsAccordionItem","isAccordionItem","buttonIsLastChild","isLastChild","computedAltText","aria-label","size","color","fill","buttonLink","alt","type","buttonText","defaultProps","undefined","useVisible","initialIsVisible","isVisible","setIsVisible","ref","useRef","handleClickOutside","event","current","contains","target","addEventListener","removeEventListener","Menu","showMenu","setShowMenu","history","useHistory","goToPage","push","menuButtonContainer","menuButton","menuOptions","optionBtn","fallbackUnion","name","forbundskodSas","Header","imageLoadError","setImageLoadError","forbundList","setForbundList","union","setUnion","useLocation","process","getLogoSrc","str","toLowerCase","useCallback","foundUnion","find","d","length","sort","a","b","localeCompare","includes","headerElement","headerInner","headerDropshadow","headerClippath","headerContent","subMain","headerLogotype","src","onError","bannerCurveBackground","bannerDropshadow","bannerClippath","UnionLink","unionLink","capitalize","rel","Footer","showLogo","setUnionLink","groupId","textId","mainSection","innerContainerFull","subSection","subSectionContent","logo","Logo","AnalysisCard","description","analysisCard","simpleOption","advancedOption","cardSymbol","continueLink","getMarkdownText","rawMarkup","marked","replace","__html","DOMPurify","sanitize","ExplanationText","textItem","explanationText","dangerouslySetInnerHTML","useScrollTo","callback","hash","scrollIntoView","behavior","ButtonTransparent","buttonTransparent","Accordion","border","boxShadow","close","dark","initialOpen","marginBottom","slim","stacked","open","setOpen","accordionWrapper","isStacked","isSlim","hasBorder","hasBoxShadow","hasMarginBottom","accordion","heading","prevState","backgroundColor","accordionTitle","accordionContent","About","aboutText","setAboutText","txt","aboutWrapper","aboutInnerWrapper","TechnicalInformation","policyWrapper","policyInnerWrapper","PageStart","innerContainer","optionContainer","aboutCurveBackground","aboutDropshadow","aboutClippath","BreadcrumbsItem","match","index","routeName","url","isExact","breadcrumb","breadcrumbActive","breadcrumbInactive","Breadcrumbs","paths","pathList","reduce","prev","curr","currPath","getPaths","breadcrumbs","map","key","Section","dashed","extraClasses","sectionElement","isDashed","sectionHeading","numberOfRespondents","result","forEach","char","search","numbers","Number","formatRespondents","toLocaleString","roundToNearest","number","nearest","direction","ceil","round","SalaryInterval","salaryLimit","salaryMid","selectedSalary","calcPercent","salary","c","dinLonPercentage","salaryMidPercent","salaryLineOuter","lineFiller","salaryLineInner","background","percentileBound","left","midLine","yourSalary","yourSalaryCircle","strokeWidth","textContainer","percentileText","examples","midLineExplain","ExternalLink","externalLink","SalaryAnalysis","currentRespondents","salaryData","links","variant","average","lon_medel","overAverage","salaryAnalysis","RadioButton","onChange","checked","container","checkmarkWrapper","customCheckmark","SelectionCard","loading","selectedSituation","selectionChange","selected","describedby","selectionCard","onKeyUp","aria-describedby","htmlFor","inputContainer","selectionCardContent","Situation","situations","setSelectedSituation","subSectionTitle","DSL2","situation","DSL1","year","Input","forwardRef","autoComplete","placeholder","max","min","minLength","step","pattern","displayInline","inputWrapper","inputLabel","input","Slider","changeFunction","slider","aria-valuemin","aria-valuemax","aria-valuenow","onInput","tabIndex","SalarySlider","setSelectedSalary","ButtonActiveFilter","buttonActiveFilter","ActiveFilters","activeFilters","disableMenuselection","setActiveFilters","activeFiltersHeading","f","display","filterName","filterButtonWrapper","values","s","Fragment","desc","item","FilterString","optionName","filterOption","findIndex","filter","sel_var","filterToUpdate","tempState","element","removeFilterOption","Checkbox","antal","customCheckbox","primary","secondary","optionTextWrapper","filterCount","CheckboxSelectGroup","itemIndex","options","SELECTION_DATATYPE","SELECTION_TEXT","setSelectedValues","selectedValues","option","setValues","console","log","some","v","matching","handleChange","persist","tempValues","o","valKey","indexOf","selection_datatype","mobileEmpty","expandable","selectable","greyed","SalaryProfile","dataSources","selectionList","summary","YEAR","FORBUND","listItem","selectionRow","resetFiltersBtn","Loader","small","loader","isSmall","isEmpty","Notification","niva","dataSource","notifications","setNotifications","filteredNotifications","setFilteredNotifications","t","dsl1","dsl2","notification","ErrorNotification","errornotifications","setErrorNotifications","hasErrors","PageSimple","setDataSources","setSelectionList","setSituations","setSalaryData","setSalaryLimit","setHasErrors","isLoadingReport","setIsLoadingReport","totalRespondents","setTotalRespondents","setCurrentRespondents","setDisableMenuselection","setLinks","setState","handleError","status","selections","selection","isActive","opt","sortOptionsByNumber","SELECTION_ORDER","selectedValue","acc","Forbund","Dsl1","Dsl2","Year","selVars","filters","obj","filterObjects","Object","newObj","prevItem","matchingItem","filterItem","finally","lon_p10","lon_p90","total","listOfValues","val","diff","activeSituations","scrollTo","innerContainerSlim","topNav","mainContent","loaderAnimation","errorText","SellingPoints","Welcome","PageSimpleFree","pymChild","Child","polling","sendHeight","DownloadExcel","selectedPresentation","tableData","activeDataSource","measureVar","source","DSL1_DESC","DSL2_DESC","breakby1Header","REPORT_TEXT","breakby2Header","lonereport","row1","row2","_TYPE_","row","breakby1","x","isData","endpoint","errorFunction","payload","fileName","toLocaleDateString","blob","URL","createObjectURL","createElement","download","appendChild","click","remove","downloadExcel","DownloadSection","showOptions","setShowOptions","downloadSection","downloadBtn","downloadOptions","print","ToolBar","toolBar","FilterItem","handleSelectedFilters","list","activeFilter","filterValue","FilterList","filterList","showAllFilters","setShowAllFilters","newItem","filterListWrapper","hasItems","filterScrollArea","filterListPadding","slice","showAllFilterWrapper","Filters","userFilters","filterHeading","indicatorSymbol","Select","defaultValue","compact","shaded","filteredOptions","selectBox","isCompact","loaderWrapper","selectLoader","selectLabel","isShaded","selectWrapper","optionValue","optionDisabled","DataSourceSummary","availableDSL1","availableDSL2","forbundName","setForbundName","dslToString","dsl","availableDsl","DataSource","defaultYearFromDeepAnalysis","defaultYearToDeepAnalysis","setActiveDataSource","setForbund","availableYears","setAvailableYears","availableForbund","setAvailableForbund","setAvailableDSL1","setAvailableDSL2","yearRange","getAvailableSources","rules","every","property","expression","findSource","inRange","getYear","p","sequentiallyFindSource","arr","i","pop","setSource","measure_var","previousDatasource","availableSources","newSource","ds","y","lastYearsData","allAvailableYears","dataSourceHeading","dataSourceSelection","evt","latestAvailableYear","getYearOptions","toString","infoLink","Presentation","allowCustomPresentation","presentationList","setCustomPresentation","setSelectedPresentation","fetchingData","selectedBreakby","setSelectedBreakby","BREAKBY_VAR","presentation","matchingPresentation","pres","handleSelectedPresentation","formatNumber","formatAccessor","createOrSetObject","prevObj","keys","totalind","accessor","assign","getTotalCol","original","isTotalRow","customPresentation","TabRow","tabRow","Tab","tab","passive","SalaryTable","setMeasureVar","customReport","columns","useMemo","center","sticky","breakby2","groupingCol","generateCustomColumns","Cell","rows","totalRow","generateCustomData","table","useTable","initialState","hiddenColumns","footerGroups","getTableBodyProps","getTableProps","headerGroups","prepareRow","tableContainer","tableWrapperPrint","group","getHeaderGroupProps","column","getHeaderProps","getRowProps","cells","cell","getCellProps","getFooterGroupProps","tablefoot","getFooterProps","Chart","chartContainer","chartInstance","setChartInstance","Graph","plugins","unregister","ChartDataLabels","newChartInstance","update","scales","duration","chart","today","months","isValidHistoricalYear","num","getFullYear","getAvailableYears","yearsPassed","thisYear","dates","created","minYear","reverse","getSolidData","entry","lon_p25","lon_p50","lon_p75","calcChartData","q1","median","q3","outliers","genLabels","unique","self","filterCustomData","getCustomLabels","customColors","calcCustomChartData","solidData","groups","hoverBackgroundColor","medianColor","outlierColor","borderColor","borderWidth","maxBarThickness","tempGroup","genData","labels","datasets","defaultOptions","tension","pointStyle","getAnnotations","salaryMarkerValue","activeTab","annotations","mode","scaleID","borderDash","enabled","content","formatLabelNumber","chartHasData","allData","dataset","Boolean","boxOptions","responsive","legend","position","xAxes","ticks","beginAtZero","gridLines","scaleLabel","yAxes","events","onHover","barOptions","tooltips","callbacks","tooltipItem","datasetIndex","yLabel","lineOptions","usePointStyle","autoSkip","maxTicksLimit","SalaryMarker","setSalaryMarkerValue","salaryMarker","infoLabelWrapper","information","tooltip","tooltipText","SalaryGraph","datasetLabel","isCustomPresentation","setActiveTab","setXMin","setXMax","setYMin","setYMax","barLabels","lineLabels","boxLabels","barData","lineData","boxData","labelString","hasData","bool","showLineDiagram","breakbyValue","firstYear","isTimeUnit","addChartOptions","newConfig","annotation","salaryGraph","salaryMarkerWrapper","ReportSection","reportSection","noData","isReverse","ExplanationItem","renderImage","explanationItem","boxPlotImage","image","measurementsSortOrder","graphsSortOrder","ExplanationGroup","available","items","setItems","clicks","setClicks","toggled","setToggled","setFetchingData","responseData","mainIdx","mainText","splice","loaderContainer","InstructionsVideo","level","setVideoError","video","videoAdvanced","instructionsVideo","preload","width","autoplay","controls","kind","srcLang","startVideoAdvance","isAdvance","Explanations","newFilterList","concat","explanationGroups","helpSection","helpItemWrapper","explanationGroup","CustomPresentation","setBreakby1","setBreakby2","customPresentationHeading","customPresFlex","err","handleSelectBreakby1","handleSelectBreakby2","Statisticsometer","hasPartiallyFilledFilters","percent","roundedPercent","statisticsometer","statisticsText","meter","full","advanced","overview","PageAdvanced","setFilterList","setTableData","setPresentationList","setAllowCustomPresentation","selectedUnion","setSelectedUnion","shouldGetReportData","setShouldGetReportData","setDefaultYearFromDeepAnalysis","setDefaultYearToDeepAnalysis","sortedSelectedValues","promiseUnion","Promise","resolve","reject","promiseFds","all","unionData","fdsData","defaultSource","defaultDataSource","DEFAULT","resetMeasureVarToLon","Role","filterOrder","breakbys","breakbyItem","breakbyOrder","breakbyVar","breakbyText","sortOptionsByLetters","fltr","activeFltr","newState","newOptions","newOpt","logGetReportRequest","subSectionLeft","subSectionRight","reportSettings","Panel","admin","card","hasFieldset","panel","panelFieldset","panelLegend","regularPanel","isAdmin","level2Header","level3Header","level1Header","previewConfigHeader","filterExplanations","commonTexts","accounts","visitiorStatistics","applicationLog","copyConfigurationHeader","Button","flipIcon","button","hasText","hasIcon","ButtonBar","prevNext","buttonBar","DataSourceSelect","setDsl1","setDsl2","setRole","setYear","dsl1Temp","datasource","searchInput","availableYear","SituationCreate","configureLvl1","setCreateNewSituation","setSituationCopied","setSituationCreated","situationToCopy","setName","setDescription","saveDisabled","setSaveDisabled","handleSubmit","preventDefault","createdSituation","activeSelections","updateRequest","selVar","selectionOrder","updatedSituation","formWrapperHalf","onSubmit","CheckboxAdmin","checkboxAdmin","labelText","InputReadOnly","useHyphens","inputReadOnly","textField","Textarea","classTextArea","extraTextAreaClasses","textareaLabel","textareaText","SituationCard","copySituation","editMode","setEditMode","situationName","setSituationName","situationDescription","setSituationDescription","situationIsActive","setSituationIsActive","situationCardInner","textInput","situationToDelete","SituationConfig","createNewSituation","setSituationToCopy","situationCopied","situationCreated","situationDeleted","setSituationDeleted","situationUpdated","setSituationUpdated","remainingSituations","tempSituations","getDataSources","toast","success","autoClose","closeOnClick","addNew","marginLeft","LinkCreate","setCreateNewLink","setLinkCreated","linkName","setLinkName","linkUrl","setLinkUrl","isSaving","setIsSaving","LinkCard","setLinkUpdated","setLinkDeleted","linkBox","linkCol","l","tempLinks","handleUpdate","LinksConfig","createNewLink","linkCreated","linkUpdated","linkDeleted","linksConfig","addLinkButton","VARIANTS","order","breakby","SortableList","updateFunction","activeItems","handleItemUpdate","newList","filterType","configTable","colSpan","optionsList","itemList","unsortedItems","performMoveUp","performMoveDown","radioLabel","SalaryProfileConfig","currentSituation","setCurrentSituation","wrapForm","selectedSituationId","situationId","tempData","HelpBox","helpBox","Level2Simple","loadingSituations","setLoadingSituations","Const","helpLink","SectionAdmin","sectionAdmin","sectionContent","LoadConfiguration","previousYear","setBreakbys","setFilters","toastMessage","isLoading","setIsLoading","loadConfig","setLoadConfig","copyYear","setCopyYear","copyDsl1","setCopyDsl1","copyDsl2","setCopyDsl2","copyRole","setCopyRole","createObject","identificator","orderBy","sortBy","updateArray","object","count","tempItem","breakbyObject","filterObject","updatedBreakbys","breakbyCount","updatedFilters","DataSourceConfig","setIsActive","loadConfiguration","setLoadConfiguration","sortData","orderParameter","sourceSelectContainer","shown","hidden","DefaultSourceConfig","setDefaultDataSource","StandardYearConfig","grid","handleChangeStandardConfig","Level3Advanced","msg","warning","info","StandardConfig","PreviewDataSourceCreate","isPreview","PreviewDataSourceCard","PreviewDataSourceConfig","PreviewSalaryProfileConfig","PreviewConfig","MarkdownEditor","autofocus","toolbar","spellChecker","FilterExplanationCreate","selvars","setFilterTexts","filterText","setFilterText","setTextId","isDefault","selvar","arrayOf","String","null","FilterExplanationNoText","filterTexts","loadingYears","isCreatingNewText","setIsCreatingNewText","setSelvars","setLoading","uniqueSelvar","loadingContainer","searchResult","missingFilterExplanations","missingTextContainer","FilterExplanationEdit","hideEditor","setHideEditor","isDuplicate","performSave","FilterExplanationItem","subHeader","FilterExplanations","loadingText","setLoadingText","loadingData","setLoadingData","filteredFilterTexts","setFilteredFilterTexts","searchString","setSearchString","temp","searchContainer","textList","filterTextsMissing","EditAccount","userAccount","setUserList","setAccountDeleted","setAccountUpdated","setEditAccount","setIsAdmin","newPassword","setNewPassword","isRedaktor","isFortroendevald","passwordRef","reportValidity","handleUpdateAccount","AccountRow","account","editAccount","CreateAccount","setAccountCreated","setAddAccount","unionList","setUnionList","setPassword","setLabel","isFortroendeVald","performSubmit","Accounts","userList","addAccount","setFilter","accountUpdated","accountDeleted","accountCreated","filteredUserList","userObj","forbundsKodSas","accountTable","createAccountBox","LogItem","exception","properties","timeStamp","format","isExpanded","setIsExpanded","copied","setCopied","flipBackState","copyLogMessage","stopPropagation","navigator","clipboard","writeText","textArea","top","focus","select","execCommand","removeChild","fallbackCopyLogMessage","logItem","logRow","logChevron","extraInfo","extraContent","buttonRow","ApplicationLog","logs","setLogs","pages","setPages","currentPage","setCurrentPage","getMonth","monthFrom","setMonthFrom","monthTo","setMonthTo","yearFrom","setYearFrom","yearTo","setYearTo","logLevel","setLogLevel","refresh","setRefresh","filteredLogs","logTools","month","logPanel","pageIndicator","GeneralTextItem","txtGroup","updateCb","txtGroupCopy","setTxtGroupCopy","forbundSA","formatHelpText","textIn","txtObj","renderSubTexts","defaultOption","unionTexts","createCopy","newTxt","originalTxt","updateTxt","GeneralTexts","generalTexts","setGeneralTexts","sortedTexts","updateTexts","response","groupName","NavigationItem","navigationItem","isDisabled","isHidden","activeIcon","UnionLinkConfig","setHeader","setId","updateState","toLocaleUpperCase","UnionConfig","Modal","show","handleClose","modaldarkBG","modalCentered","modal","modalHeader","modalHeading","modalBody","modalMessage","modalContent","modalButtons","modalBtn","ActiveSelections","configurationType","dslConfigurations","dslConfiguration","dsL2Configs","dsL2Config","copyFromTestToProd","dsL1Config","filterString","trimStart","trimEnd","ActiveUnionSelections","unions","isSelected","dslConfig","handleUpdateConfiguration","dsl2Config","UnionSelect","handleUpdateUnionSelection","selectAllUnions","unSelectAllUnions","StatusBox","jobStatus","statusBox","isJobRunning","currentSummaryStatus","date","statusMessage","summaryStatuses","ul","li","CopyConfiguration","isLoadingSimpleConfiguration","setIsLoadingSimpleConfiguration","isLoadingAdvancedConfiguration","setIsLoadingAdvancedConfiguration","simpleConfiguration","setSimpleConfiguration","advancedConfiguration","setAdvancedConfiguration","previewConfiguration","setPreviewConfiguration","showModal","setShowModal","setJobStatus","hasAnySelectionsSimple","setHasAnySelectionsSimple","hasAnySelectionsPreview","setHasAnySelectionsPreview","hasAnySelectionsAdvanced","setHasAnySelectionsAdvanced","jobStatusRef","existingConfiguration","newdslConfigList","dslConfigs","newConfiguration","unSelectAllDataSources","configuration","newdsL2ConfigList","handleJobStatusUpdate","jobStatusUpdateMsg","jsonJobStatusUpdate","simpleConfigurationRequest","fds","configurationtype","previewConfigurationRequest","promiseUnions","promiseSimpleConfiguration","promisePreviewConfiguration","simpleConfigurationData","previewConfigurationData","advancedConfigurationRequest","dSL1","class","resultOk","advancedConfig","copyConfigurationJobRequest","copySimpleConfigurationJobRequest","copyAdvancedConfigurationJobRequest","copyPreviewConfigurationJobRequest","triggerCopyConfiguration","NotificationRow","deleteCb","expand","setExpand","setMessage","editable","setEditable","rowContainer","entries","k","parseDataSources","textTitle","nativeEvent","inputType","bottomWrapper","buttonContainer","AddNotification","createCb","setAvailableSources","setNiva","setText","parseForSelect","fromEntries","removeEmpty","Notifications","texts","setTexts","setUpdate","saveNotification","meta","deleteNotification","Colors","fontSize","fontColor","datalabels","anchor","align","formatter","afterDataLimits","scale","grace","dayLabelKeys","1","2","3","4","5","6","7","DayChart","stats","chartData","setChartData","isTableExpanded","setIsTableExpanded","currentDay","getDay","dayA","dayB","currentWeekDays","day","lastWeekDays","sortedEntries","statsMap","currentDate","currentWeek","getWeek","lastWeek","statsMapKeysArray","Array","dayKey","medlem","fortroendevald","mapStatsToChartData","Map","chartStats","tableToggle","dataPoint","WeekChart","currentYear","lastYear","weekA","weekB","lastYearWeeks","week","currentYearWeeks","weeksHalfyearBackEntries","weeksHalfyearBackStats","weekData","substring","mapStatsToTableData","marginRight","monthLabelKeys","8","9","10","11","12","MonthChart","currentYearMonthsCount","setCurrentYearMonthsCount","lastYearMonthsCount","setLastYearMonthsCount","currentMonth","monthA","monthB","currentYearMonths","lastYearMonths","text-align","YearChart","yearA","yearB","recentYears","BarCharts","statsPerDay","setStatsPerDay","statsPerWeek","setStatsPerWeek","statsPerMonth","setStatsPerMonth","statsPerYear","setStatsPerYear","periodsStatistics","visitorsPerDay","visitorsPerWeek","visitorsPerMonth","visitorsPerYear","font","weight","keyLabels","ViewChart","pink","turquoise","viewKey","unitKeyLabels","unknown","desktop","mobile","tablet","unitSortOrder","UnitChart","lightGrey","grey","sortedStats","unitA","unitB","unit","browserKeyLabels","Chrome","Safari","FireFox","Opera","Samsung","Unknown","Other","browserSortOrder","BrowserChart","darkGrey","yellow","orange","browserA","browserB","PieCharts","statsPerView","setStatsPerView","statsPerUnit","setStatsPerUnit","statsPerBrowser","setStatsPerUnitBrowser","userStatistics","views","devices","browsers","VisitorStatistics","PageAdmin","adminForbund","setAdminForbund","APP_ENVIRONMENT","pageAdmin","leftColumn","adminH1","forbundSelectWrapper","toUpperCase","refreshToken","ENABLE_COPY_CONFIGURATION","navHeader","Page404","PageLogin","userName","setUserName","loginType","setLoginType","loginForbund","setLoginForbund","loginLink","setLoginLink","handleLogin","origin","loginContainer","loginOptions","loginUnion","loginForm","loginTextInput","loginButton","PageDeveloper","developerContainer","preamble","box","attentionBox","flowchartSymbolContainer","FlowchartSymbol","noticeBox","noMarginTopBottom","Logout","TokenRedirect","browserData","Bowser","userAgent","version","platform","useParams","ForbundsKodRedirect","LoginInfo","calculatePercentBelowSalary","salaryStat","givenSalary","Bin","percentBelow","Pct","getSalaryMarkerValue","mapData","salaryStatistic","textColor","generateOptions","parsing","xAxisKey","yAxisKey","maxRotation","formatLabelNumberxAxes","formatLabelNumberyAxes","context","dataIndex","controller","getDatasetMeta","height","actualNumberValue","custom","tooltipModel","tooltipEl","getElementById","classList","add","lines","stringValue","formattedString","parseInt","innerHTML","_chart","canvas","getBoundingClientRect","opacity","pageXOffset","caretX","pageYOffset","caretY","fontFamily","fontStyle","padding","yPadding","xPadding","borderRadius","SelectPreview","SVGComponent","data-name","xmlns","viewBox","transform","Preview","displayValue","setSalary","chartRef","selectedDataSource","setSelectedDataSource","firstSelection","setFirstSelection","secondSelection","setSecondSelection","firstSelectedOption","setFirstSelectedOption","secondSelectedOption","setSecondSelectedOption","setSalaryStat","salaryPercentage","setSalaryPercentage","setTextColor","handleSelectionDataWrapper","selectionData","selectionObjects","firstSelectionObject","secondSelectionObject","handleSelectionData","mapStatsToChartDataWrapper","datasetIdKey","barColorBasedOnPercentage","updateTextPosition","existingDivElement","getSalaryForFirstMarker","salaryMarkerIndex","getSalaryMarkerIndex","userSpecifiedSalaryModel","_model","chartArea","canvasRect","querySelector","divElement","leftPosition","topPosition","zIndex","ReactDOMServer","renderToString","searchParams","URLSearchParams","get","chef","documentElement","setProperty","labelColor","backgroundHeader","styleElement","font2","head","applyPreviewFonts","selectionRequest","UnionId","Chef","handleResize","trimLeft","salaryStatRequest","Sel_var","promiseSalaryStat","salaryStatData","GetSrc","IsfirstSelection","speechBubbleContent","speechBubbleBoxLeft","speechBubbleBox","selectBoxRight","selectBoxLeft","InputLabel","labelId","strNumber","handleSalaryChange","arrowleft","dummyData","percentage","profession","sector","PreviewLab","education","setEducation","setSector","indexSalary","alignItems","FormControl","sx","m","MenuItem","allowLeadingZeros","allowNegative","customInput","TextField","onValueChange","floatValue","thousandSeparator","InputProps","endAdornment","InputAdornment","textAlign","Instructionvideo","PageErrorProvocation","Error","AppRouter","exact","App","contentContainer","smoothscroll","polyfill","ReactDOM","StrictMode","CookiesProvider"],"mappings":"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","file":"static/js/main.f491ec39.chunk.js","sourcesContent":["// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"Preview_container__2sVTc\",\"activeIcon\":\"Preview_activeIcon__QcwZt\",\"selectBox\":\"Preview_selectBox__3H4xd\",\"input\":\"Preview_input__1qtIc\",\"header\":\"Preview_header__16evW\",\"chart\":\"Preview_chart__zE3Ch\",\"monthlySalary\":\"Preview_monthlySalary__meGQu\",\"salaryPercentage\":\"Preview_salaryPercentage__1adcy\",\"source\":\"Preview_source__14Rn9\",\"result\":\"Preview_result__3AB8U\",\"chat\":\"Preview_chat__2TcTv\",\"arrowleft\":\"Preview_arrowleft__1uYvA\",\"selectBoxLeft\":\"Preview_selectBoxLeft__1Nhoz\",\"selectBoxRight\":\"Preview_selectBoxRight__HUwgO\",\"speechBubbleContent\":\"Preview_speechBubbleContent__3afek\",\"speechBubbleBoxLeft\":\"Preview_speechBubbleBoxLeft__30l9Z\",\"speechBubbleBox\":\"Preview_speechBubbleBox__1caiE\",\"activeIconRight\":\"Preview_activeIconRight__3W5JO\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"chart\":\"VisitorStatistics_chart__Y3OPX\",\"chartContainer\":\"VisitorStatistics_chartContainer__2vACa\",\"header\":\"VisitorStatistics_header__1xvRg\",\"tableToggle\":\"VisitorStatistics_tableToggle__2s5ua\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"main\":\"PageDeveloper_main__2WcoT\",\"topNav\":\"PageDeveloper_topNav__3wXZj\",\"innerContainerSlim\":\"PageDeveloper_innerContainerSlim__1X_Ak\",\"developerContainer\":\"PageDeveloper_developerContainer__1eJBR\",\"preamble\":\"PageDeveloper_preamble__3yv-t\",\"flowchartSymbolContainer\":\"PageDeveloper_flowchartSymbolContainer__1SIjv\",\"noticeBox\":\"PageDeveloper_noticeBox__1wTeg\",\"box\":\"PageDeveloper_box__N_Z0m\",\"attentionBox\":\"PageDeveloper_attentionBox__1OLJO\",\"noMarginTopBottom\":\"PageDeveloper_noMarginTopBottom__dRDC9\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"main\":\"SalaryInterval_main__aDUCX\",\"textContainer\":\"SalaryInterval_textContainer__3y6NQ\",\"examples\":\"SalaryInterval_examples__IXJUV\",\"percentileText\":\"SalaryInterval_percentileText___3Zv2\",\"salaryLineOuter\":\"SalaryInterval_salaryLineOuter__MEyEl\",\"salaryLineInner\":\"SalaryInterval_salaryLineInner___-Y5_\",\"lineFiller\":\"SalaryInterval_lineFiller__2UHbK\",\"midLine\":\"SalaryInterval_midLine__37-vb\",\"percentileBound\":\"SalaryInterval_percentileBound__2ShBu\",\"yourSalary\":\"SalaryInterval_yourSalary__2wm_W\",\"yourSalaryCircle\":\"SalaryInterval_yourSalaryCircle__1JtPD\",\"midLineExplain\":\"SalaryInterval_midLineExplain__1nqGc\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"main\":\"PageSimple_main__3FJUY\",\"mainContent\":\"PageSimple_mainContent__2IT-s\",\"innerContainerSlim\":\"PageSimple_innerContainerSlim__1mwRJ\",\"optionCard\":\"PageSimple_optionCard__2qJgV\",\"cardSymbol\":\"PageSimple_cardSymbol__1tp_-\",\"advancedOption\":\"PageSimple_advancedOption__26fH6\",\"errorText\":\"PageSimple_errorText__27nEf\",\"loaderAnimation\":\"PageSimple_loaderAnimation__2zKtE\",\"topNav\":\"PageSimple_topNav__3OJW-\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"accordionWrapper\":\"Accordion_accordionWrapper__FXgJn\",\"isStacked\":\"Accordion_isStacked__3t43v\",\"heading\":\"Accordion_heading__3LsK0\",\"accordion\":\"Accordion_accordion__g4Rvb\",\"open\":\"Accordion_open__SO6_q\",\"disabled\":\"Accordion_disabled__2GyU3\",\"isSlim\":\"Accordion_isSlim__2-dyw\",\"hasBorder\":\"Accordion_hasBorder__3_aL3\",\"hasBoxShadow\":\"Accordion_hasBoxShadow__2OrHo\",\"hasMarginBottom\":\"Accordion_hasMarginBottom__oTIbZ\",\"accordionContent\":\"Accordion_accordionContent__r_50X\",\"explanationItem\":\"Accordion_explanationItem__2XEgG\",\"loaderContainer\":\"Accordion_loaderContainer__3OF5M\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"SalaryTable_container__1JQAh\",\"tableContainer\":\"SalaryTable_tableContainer__1WP4_\",\"tabRow\":\"SalaryTable_tabRow__25YLv\",\"table\":\"SalaryTable_table__38GgZ\",\"sticky\":\"SalaryTable_sticky__rZDYa\",\"center\":\"SalaryTable_center__36DWu\",\"bottomRowPrint\":\"SalaryTable_bottomRowPrint__37rBA\",\"tableWrapperPrint\":\"SalaryTable_tableWrapperPrint__3Gw4R\",\"tablefoot\":\"SalaryTable_tablefoot__2Mcec\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"modaldarkBG\":\"Modal_modaldarkBG__22xJ7\",\"modalCentered\":\"Modal_modalCentered__2O2Cd\",\"modal\":\"Modal_modal__M3lRm\",\"modalHeader\":\"Modal_modalHeader__3pBEm\",\"modalHeading\":\"Modal_modalHeading__2UKdN\",\"modalBody\":\"Modal_modalBody__2aZg0\",\"modalMessage\":\"Modal_modalMessage__VXwXa\",\"modalContent\":\"Modal_modalContent__20HcO\",\"modalButtons\":\"Modal_modalButtons__2qZpF\",\"modalactionsContainer\":\"Modal_modalactionsContainer__38GUg\",\"modalBtn\":\"Modal_modalBtn__2xONK\",\"modalButton\":\"Modal_modalButton__2csEb\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"headerElement\":\"Header_headerElement__2MZ1L\",\"headerInner\":\"Header_headerInner__aGDS1\",\"headerContent\":\"Header_headerContent__1jPeU\",\"subMain\":\"Header_subMain__25k07\",\"headerLogotype\":\"Header_headerLogotype__3Atxc\",\"bannerCurveBackground\":\"Header_bannerCurveBackground__4ims_\",\"bannerDropshadow\":\"Header_bannerDropshadow__3vp1H\",\"bannerClippath\":\"Header_bannerClippath__3U114\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"customCheckbox\":\"Checkbox_customCheckbox__2Tfre\",\"loading\":\"Checkbox_loading__1-CMp\",\"disabled\":\"Checkbox_disabled__1gs8v\",\"checkmarkWrapper\":\"Checkbox_checkmarkWrapper__3Cs04\",\"customCheckmark\":\"Checkbox_customCheckmark__QbHpA\",\"primary\":\"Checkbox_primary__17P3T\",\"secondary\":\"Checkbox_secondary__46Rm3\",\"optionTextWrapper\":\"Checkbox_optionTextWrapper__4MM0L\",\"optionName\":\"Checkbox_optionName__joUkc\",\"filterCount\":\"Checkbox_filterCount__WDRNV\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"selectBox\":\"Select_selectBox__1w2-g\",\"selectLabel\":\"Select_selectLabel__12i-L\",\"isShaded\":\"Select_isShaded__UrRzq\",\"hasMarginBottom\":\"Select_hasMarginBottom__1OjSq\",\"selectWrapper\":\"Select_selectWrapper__b3lYy\",\"disabled\":\"Select_disabled__gsMKD\",\"isCompact\":\"Select_isCompact__3xQAz\",\"loaderWrapper\":\"Select_loaderWrapper__322Sf\",\"selectLoader\":\"Select_selectLoader__28B9w\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"dataSource\":\"DataSource_dataSource__3uHGV\",\"dataSourceHeading\":\"DataSource_dataSourceHeading__noGyE\",\"dataSourceSelection\":\"DataSource_dataSourceSelection__3msO5\",\"dataSourcesActive\":\"DataSource_dataSourcesActive__3vDaM\",\"toggleBtn\":\"DataSource_toggleBtn__3Ohgu\",\"indicatorSymbol\":\"DataSource_indicatorSymbol__QeRh3\",\"infoLink\":\"DataSource_infoLink__2K8OH\",\"print\":\"DataSource_print__15kZ_\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"loginContainer\":\"PageLogin_loginContainer__vYVx2\",\"main\":\"PageLogin_main__2nHdf\",\"loginOptions\":\"PageLogin_loginOptions__MWGB_\",\"loginForm\":\"PageLogin_loginForm__3ROZ6\",\"unionLink\":\"PageLogin_unionLink__18HBw\",\"loginButton\":\"PageLogin_loginButton__17Et4\",\"loginUnion\":\"PageLogin_loginUnion__2NHKX\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"selectLabel\":\"SelectPreview_selectLabel__1o5yl\",\"isShaded\":\"SelectPreview_isShaded__11UOB\",\"selectBox\":\"SelectPreview_selectBox__3InfT\",\"hasMarginBottom\":\"SelectPreview_hasMarginBottom__1c3zu\",\"selectWrapper\":\"SelectPreview_selectWrapper__20bW2\",\"disabled\":\"SelectPreview_disabled__261nK\",\"isCompact\":\"SelectPreview_isCompact__3v5gQ\",\"loaderWrapper\":\"SelectPreview_loaderWrapper__FOSwd\",\"selectLoader\":\"SelectPreview_selectLoader__8pYhq\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"menuButtonContainer\":\"Menu_menuButtonContainer__2XuZP\",\"menuButton\":\"Menu_menuButton__1xLEw\",\"menuOptions\":\"Menu_menuOptions__10brT\",\"optionBtn\":\"Menu_optionBtn__3M2VQ\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"disableMenuselection\":\"FilterList_disableMenuselection__39db1\",\"showAllFilterWrapper\":\"FilterList_showAllFilterWrapper__4uZK7\",\"showAllFilters\":\"FilterList_showAllFilters__3l9Tz\",\"filterScrollArea\":\"FilterList_filterScrollArea__XL8bn\",\"mobileEmpty\":\"FilterList_mobileEmpty__1Hf-n\",\"filterListPadding\":\"FilterList_filterListPadding__CvlS2\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"salaryMarker\":\"SalaryMarker_salaryMarker__LpXcF\",\"input\":\"SalaryMarker_input__317yQ\",\"infoLabelWrapper\":\"SalaryMarker_infoLabelWrapper__2wYF8\",\"information\":\"SalaryMarker_information__1smwA\",\"label\":\"SalaryMarker_label__1DH3M\",\"icon\":\"SalaryMarker_icon__n9cC-\",\"tooltip\":\"SalaryMarker_tooltip__1VZKK\",\"tooltipText\":\"SalaryMarker_tooltipText__2aZiA\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"selectBox\":\"FilterExplanationNoText_selectBox__oapTu\",\"loadingContainer\":\"FilterExplanationNoText_loadingContainer__1dj7A\",\"searchArea\":\"FilterExplanationNoText_searchArea__1563z\",\"searchInput\":\"FilterExplanationNoText_searchInput__1SJBK\",\"missingFilterExplanations\":\"FilterExplanationNoText_missingFilterExplanations__2WNUj\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"logTools\":\"ApplicationLog_logTools__3Q6iF\",\"loaderAnimation\":\"ApplicationLog_loaderAnimation__xdTKU\",\"logPanel\":\"ApplicationLog_logPanel__1Qbih\",\"errorText\":\"ApplicationLog_errorText__1V7qk\",\"panelFooter\":\"ApplicationLog_panelFooter__3szvJ\",\"pageIndicator\":\"ApplicationLog_pageIndicator__2eeF4\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"pageAdmin\":\"PageAdmin_pageAdmin__93x7u\",\"adminH1\":\"PageAdmin_adminH1__22hJq\",\"forbundSelectWrapper\":\"PageAdmin_forbundSelectWrapper__35qSs\",\"mainContent\":\"PageAdmin_mainContent__1QbpN\",\"navHeader\":\"PageAdmin_navHeader__13J_D\",\"toolBar\":\"PageAdmin_toolBar__1V2B8\",\"navButton\":\"PageAdmin_navButton__RROnd\",\"adminHeading\":\"PageAdmin_adminHeading__2x98v\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"main\":\"CopyConfiguration_main__3FGzK\",\"mainContent\":\"CopyConfiguration_mainContent__fx_iR\",\"innerContainerSlim\":\"CopyConfiguration_innerContainerSlim__1UuMC\",\"optionCard\":\"CopyConfiguration_optionCard__EDWZW\",\"cardSymbol\":\"CopyConfiguration_cardSymbol__3MnZA\",\"advancedOption\":\"CopyConfiguration_advancedOption__51tM8\",\"errorText\":\"CopyConfiguration_errorText__1TdWz\",\"loaderAnimation\":\"CopyConfiguration_loaderAnimation__2pV89\",\"topNav\":\"CopyConfiguration_topNav__2IcAh\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"activeFilters\":\"ActiveSelections_activeFilters__1Gvqb\",\"activeFiltersHeading\":\"ActiveSelections_activeFiltersHeading__2SHVX\",\"filterName\":\"ActiveSelections_filterName__1qrmG\",\"optionName\":\"ActiveSelections_optionName__Abd3K\",\"filterButtonWrapper\":\"ActiveSelections_filterButtonWrapper__37RSi\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"main\":\"PageErrorBoundary_main__1WSr9\",\"header\":\"PageErrorBoundary_header__m4C0W\",\"text\":\"PageErrorBoundary_text__3S2I8\",\"link\":\"PageErrorBoundary_link__3pJIR\",\"reloadBtn\":\"PageErrorBoundary_reloadBtn__27jW7\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"buttonLink\":\"ButtonLink_buttonLink__1UpTx\",\"buttonIcon\":\"ButtonLink_buttonIcon__3-yts\",\"buttonText\":\"ButtonLink_buttonText__6qXC0\",\"isLarge\":\"ButtonLink_isLarge__374f-\",\"isMenuItem\":\"ButtonLink_isMenuItem__3k5qz\",\"isLastChild\":\"ButtonLink_isLastChild__24E7U\",\"isAccordionItem\":\"ButtonLink_isAccordionItem__3rl2w\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"statisticsometer\":\"Statisticsometer_statisticsometer__3tdXl\",\"hasMarginBottom\":\"Statisticsometer_hasMarginBottom__3zTs7\",\"meter\":\"Statisticsometer_meter__2lILR\",\"full\":\"Statisticsometer_full__2_wYn\",\"overview\":\"Statisticsometer_overview__2O0WS\",\"advanced\":\"Statisticsometer_advanced__1s4Td\",\"statisticsText\":\"Statisticsometer_statisticsText__HwRA_\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"main\":\"PageAdvanced_main__3nLTQ\",\"mainSection\":\"PageAdvanced_mainSection__2PaY0\",\"innerContainerFull\":\"PageAdvanced_innerContainerFull__XiKn1\",\"subSectionLeft\":\"PageAdvanced_subSectionLeft__XfJlf\",\"subSectionRight\":\"PageAdvanced_subSectionRight__3W5tS\",\"subSectionContent\":\"PageAdvanced_subSectionContent__1eWw3\",\"reportSettings\":\"PageAdvanced_reportSettings__1nOOM\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"button\":\"Button_button__3Invw\",\"buttonIcon\":\"Button_buttonIcon__2XW3i\",\"hasText\":\"Button_hasText__1ilPf\",\"buttonText\":\"Button_buttonText__3_NxL\",\"hasIcon\":\"Button_hasIcon__3G1xq\",\"flipIcon\":\"Button_flipIcon__3WVZK\",\"primary\":\"Button_primary__3fj8r\",\"secondary\":\"Button_secondary__2qPG3\",\"ghost\":\"Button_ghost__2KFxn\",\"delete\":\"Button_delete__1iuWi\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"configTable\":\"SortableList_configTable__ENbbr\",\"center\":\"SortableList_center__343v0\",\"radioLabel\":\"SortableList_radioLabel__2emWn\",\"disabled\":\"SortableList_disabled__2X9MM\",\"configItem\":\"SortableList_configItem__3bL86\",\"optionsList\":\"SortableList_optionsList__m72xA\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"sourceSelectContainer\":\"DataSourceConfig_sourceSelectContainer__3JbEf\",\"tabRow\":\"DataSourceConfig_tabRow__QDJWV\",\"loaderContainer\":\"DataSourceConfig_loaderContainer__9sqDl\",\"shown\":\"DataSourceConfig_shown__2QUno\",\"hidden\":\"DataSourceConfig_hidden__2qmSq\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"logItem\":\"LogItem_logItem__27IHA\",\"logRow\":\"LogItem_logRow__23Iug\",\"logChevron\":\"LogItem_logChevron__2puqC\",\"extraInfo\":\"LogItem_extraInfo__1nClG\",\"copyButton\":\"LogItem_copyButton__IbtM_\",\"Information\":\"LogItem_Information__3v7oM\",\"Warning\":\"LogItem_Warning__1b16p\",\"Error\":\"LogItem_Error__3sd8Z\",\"timeStamp\":\"LogItem_timeStamp__3Eq77\",\"buttonRow\":\"LogItem_buttonRow__3DrBN\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"statusBox\":\"StatusBox_statusBox__3hVg_\",\"loaderAnimation\":\"StatusBox_loaderAnimation__1QM5X\",\"loaderWrapper\":\"StatusBox_loaderWrapper__A-ZzQ\",\"selectLoader\":\"StatusBox_selectLoader__2ddd3\",\"ul\":\"StatusBox_ul__1qjNx\",\"userFilters\":\"StatusBox_userFilters__3kfVz\",\"filterHeading\":\"StatusBox_filterHeading__wt0VM\",\"indicatorSymbol\":\"StatusBox_indicatorSymbol__3xvQ8\",\"resetFiltersBtn\":\"StatusBox_resetFiltersBtn__3lN3p\",\"disableMenuselection\":\"StatusBox_disableMenuselection__26n6q\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"rowContainer\":\"NotificationRow_rowContainer__ZhNHx\",\"header\":\"NotificationRow_header__1iBZw\",\"source\":\"NotificationRow_source__20zeF\",\"textTitle\":\"NotificationRow_textTitle__2RUO6\",\"bottomWrapper\":\"NotificationRow_bottomWrapper__bo2dn\",\"buttonContainer\":\"NotificationRow_buttonContainer__2fHfp\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"main\":\"Footer_main__1W_j6\",\"innerContainerFull\":\"Footer_innerContainerFull__1ZzPw\",\"mainSection\":\"Footer_mainSection__o48DQ\",\"subSection\":\"Footer_subSection__2zuAD\",\"subSectionContent\":\"Footer_subSectionContent__6UciD\",\"logo\":\"Footer_logo__1bFOo\",\"sacoLink\":\"Footer_sacoLink__PdbKf\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"main\":\"PageStart_main__2DOeM\",\"innerContainer\":\"PageStart_innerContainer__2ydSJ\",\"optionContainer\":\"PageStart_optionContainer__E5ku2\",\"aboutClippath\":\"PageStart_aboutClippath__IpFnG\",\"aboutCurveBackground\":\"PageStart_aboutCurveBackground__ksM8S\",\"aboutDropshadow\":\"PageStart_aboutDropshadow__3_Amq\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"inputWrapper\":\"Input_inputWrapper__3aeCw\",\"inputLabel\":\"Input_inputLabel__1EygG\",\"displayInline\":\"Input_displayInline__TE-rY\",\"input\":\"Input_input__3n7Rb\",\"number\":\"Input_number__1YDCe\",\"text\":\"Input_text__1z4y9\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"activeFilters\":\"ActiveFilters_activeFilters__1cruB\",\"activeFiltersHeading\":\"ActiveFilters_activeFiltersHeading__WRKin\",\"filterName\":\"ActiveFilters_filterName__ZYBRD\",\"optionName\":\"ActiveFilters_optionName__1K3jK\",\"filterButtonWrapper\":\"ActiveFilters_filterButtonWrapper__1_CBJ\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"analysisCard\":\"AnalysisCard_analysisCard__2R2Jg\",\"continueLink\":\"AnalysisCard_continueLink__3F5np\",\"cardSymbol\":\"AnalysisCard_cardSymbol__5GQMZ\",\"simpleOption\":\"AnalysisCard_simpleOption__2it-v\",\"advancedOption\":\"AnalysisCard_advancedOption__24gvd\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"selectionCard\":\"SelectionCard_selectionCard__1YZqL\",\"loading\":\"SelectionCard_loading__1Een1\",\"disabled\":\"SelectionCard_disabled__yItux\",\"selected\":\"SelectionCard_selected__3mJrA\",\"inputContainer\":\"SelectionCard_inputContainer__3a-7t\",\"selectionCardContent\":\"SelectionCard_selectionCardContent__2H66C\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"regularPanel\":\"Panel_regularPanel__3VmfW\",\"isAdmin\":\"Panel_isAdmin__15XEg\",\"panelFieldset\":\"Panel_panelFieldset__1rZLD\",\"panelLegend\":\"Panel_panelLegend__1AQPQ\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"loaderAnimation\":\"Accounts_loaderAnimation__1htrQ\",\"filter\":\"Accounts_filter__1CIXZ\",\"accountTable\":\"Accounts_accountTable__du2i0\",\"table\":\"Accounts_table__33HM8\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"navigationItem\":\"NavigationItem_navigationItem__1Knke\",\"isActive\":\"NavigationItem_isActive__1P58Z\",\"activeIcon\":\"NavigationItem_activeIcon__OVI-X\",\"isHidden\":\"NavigationItem_isHidden__1A5ho\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"tabRow\":\"CopyConfiguration_tabRow__3gUch\",\"loaderAnimation\":\"CopyConfiguration_loaderAnimation__1XwqJ\",\"helpLink\":\"CopyConfiguration_helpLink__1AqdG\",\"ul\":\"CopyConfiguration_ul__3ooJp\",\"li\":\"CopyConfiguration_li__1uQI2\",\"userFilters\":\"CopyConfiguration_userFilters__QvSVb\",\"filterHeading\":\"CopyConfiguration_filterHeading__20Ux0\",\"indicatorSymbol\":\"CopyConfiguration_indicatorSymbol__2iTho\",\"resetFiltersBtn\":\"CopyConfiguration_resetFiltersBtn__1iHoC\",\"disableMenuselection\":\"CopyConfiguration_disableMenuselection__2ktn8\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"LoginInfo_container__1oNgG\",\"header\":\"LoginInfo_header__2rSxx\",\"text\":\"LoginInfo_text__3Ni-D\",\"link\":\"LoginInfo_link__ftR-K\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"buttonActiveFilter\":\"ButtonActiveFilter_buttonActiveFilter__3B97Z\",\"buttonIcon\":\"ButtonActiveFilter_buttonIcon__2o-LI\",\"buttonText\":\"ButtonActiveFilter_buttonText__30xWm\",\"isLarge\":\"ButtonActiveFilter_isLarge__3G_Ce\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"main\":\"CheckboxSelectGroup_main__wTffo\",\"header\":\"CheckboxSelectGroup_header__1G-CY\",\"mobileEmpty\":\"CheckboxSelectGroup_mobileEmpty__1FsGq\",\"greyed\":\"CheckboxSelectGroup_greyed__3lsI0\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"resetFiltersBtn\":\"SalaryProfile_resetFiltersBtn__2Sxzt\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"downloadSection\":\"DownloadSection_downloadSection__3eDUQ\",\"downloadOptions\":\"DownloadSection_downloadOptions__1SMRS\",\"optionBtn\":\"DownloadSection_optionBtn__3cjG4\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"userFilters\":\"Filters_userFilters___R6wN\",\"filterHeading\":\"Filters_filterHeading__1z8ki\",\"indicatorSymbol\":\"Filters_indicatorSymbol__1b6cj\",\"resetFiltersBtn\":\"Filters_resetFiltersBtn__1lCZS\",\"disableMenuselection\":\"Filters_disableMenuselection__3MH4D\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"inputReadOnly\":\"InputReadOnly_inputReadOnly__xNh7a\",\"inputLabel\":\"InputReadOnly_inputLabel__3vxKX\",\"textField\":\"InputReadOnly_textField__1nvI5\",\"useHyphens\":\"InputReadOnly_useHyphens__3EOce\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"situationCard\":\"SituationCard_situationCard__1PolS\",\"situationCardInner\":\"SituationCard_situationCardInner__5NeUO\",\"situationDescription\":\"SituationCard_situationDescription__3w4WL\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"linkItem\":\"LinksConfig_linkItem__8rxta\",\"linkLabel\":\"LinksConfig_linkLabel__TEDkw\",\"loaderAnimation\":\"LinksConfig_loaderAnimation__dtnm_\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"situationCard\":\"PreviewDataSourceCard_situationCard__1-7Ft\",\"situationCardInner\":\"PreviewDataSourceCard_situationCardInner__1a_oz\",\"situationDescription\":\"PreviewDataSourceCard_situationDescription__wqYJT\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"main\":\"FilterExplanations_main__2XM4Q\",\"searchContainer\":\"FilterExplanations_searchContainer__3c7z-\",\"filterTextList\":\"FilterExplanations_filterTextList__2vzEj\",\"filterTextsMissing\":\"FilterExplanations_filterTextsMissing__2mER1\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"main\":\"Logout_main__1hPFO\",\"header\":\"Logout_header__1-aPH\",\"text\":\"Logout_text__2ivjb\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"breadcrumb\":\"BreadcrumbsItem_breadcrumb__8zZOr\",\"breadcrumbInactive\":\"BreadcrumbsItem_breadcrumbInactive__1SBOc\",\"breadcrumbActive\":\"BreadcrumbsItem_breadcrumbActive__2zqF3\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"sectionElement\":\"Section_sectionElement__3knBJ\",\"isDashed\":\"Section_isDashed__1ODy6\",\"sectionHeading\":\"Section_sectionHeading__3OFYk\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"RadioButton_container__394dx\",\"icon\":\"RadioButton_icon__2Q7cP\",\"checkmarkWrapper\":\"RadioButton_checkmarkWrapper__2edM1\",\"customCheckmark\":\"RadioButton_customCheckmark__2XIRn\",\"loading\":\"RadioButton_loading__v7jAg\",\"disabled\":\"RadioButton_disabled__1B0Hj\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"subSection\":\"Situation_subSection__2-CEF\",\"subSectionTitle\":\"Situation_subSectionTitle__35mM9\",\"subSectionContent\":\"Situation_subSectionContent__16-c_\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"reportSection\":\"ReportSection_reportSection__1ZPDQ\",\"noData\":\"ReportSection_noData__1J6tX\",\"loader\":\"ReportSection_loader__i0o57\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"tab\":\"Tab_tab__3zNqX\",\"active\":\"Tab_active__1QnzX\",\"passive\":\"Tab_passive__2LUj2\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"salaryGraph\":\"SalaryGraph_salaryGraph__2BSlv\",\"salaryMarkerWrapper\":\"SalaryGraph_salaryMarkerWrapper__2Y0Iy\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"helpSection\":\"Explanations_helpSection__1XWU3\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"customPresentation\":\"CustomPresentation_customPresentation__1vRvU\",\"customPresFlex\":\"CustomPresentation_customPresFlex__2NPKO\",\"customPresentationHeading\":\"CustomPresentation_customPresentationHeading__jNFm4\",\"customPresentationSelection\":\"CustomPresentation_customPresentationSelection__3TrGh\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"buttonBar\":\"ButtonBar_buttonBar__3GhT7\",\"prevNext\":\"ButtonBar_prevNext__aZHd-\",\"hasMarginBottom\":\"ButtonBar_hasMarginBottom__1qZLS\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"checkboxAdmin\":\"CheckboxAdmin_checkboxAdmin__3yrh-\",\"labelText\":\"CheckboxAdmin_labelText__29IFa\",\"disabled\":\"CheckboxAdmin_disabled__2mxP3\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"linksCard\":\"LinkCard_linksCard__2g6kf\",\"linkBox\":\"LinkCard_linkBox__3Adff\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"tabRow\":\"Level2Simple_tabRow__X-5QI\",\"loaderAnimation\":\"Level2Simple_loaderAnimation__21Z04\",\"helpLink\":\"Level2Simple_helpLink__qSQrd\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"sectionAdmin\":\"SectionAdmin_sectionAdmin__1QXYj\",\"sectionHeading\":\"SectionAdmin_sectionHeading__2G-Q8\",\"sectionContent\":\"SectionAdmin_sectionContent__rtqOJ\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"tabRow\":\"PreviewConfig_tabRow__1Dblu\",\"loaderAnimation\":\"PreviewConfig_loaderAnimation__2vdTf\",\"helpLink\":\"PreviewConfig_helpLink__1777N\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"defaultText\":\"FilterExplanationItem_defaultText__3AFZ4\",\"optionRow\":\"FilterExplanationItem_optionRow__3KKSF\",\"optionsList\":\"FilterExplanationItem_optionsList__3RtFh\",\"subHeader\":\"FilterExplanationItem_subHeader__WaE0x\",\"itemHeading\":\"FilterExplanationItem_itemHeading__2Eeki\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"defaultText\":\"GeneralTextItem_defaultText__mf969\",\"optionsList\":\"GeneralTextItem_optionsList__32h_Y\",\"label\":\"GeneralTextItem_label__3MxY8\",\"defaultOption\":\"GeneralTextItem_defaultOption__2SWGF\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"main\":\"Banner_main__310xB\",\"innerContainerFull\":\"Banner_innerContainerFull__3AccF\",\"banner\":\"Banner_banner__5NfI4\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"aboutWrapper\":\"About_aboutWrapper__35CBs\",\"aboutInnerWrapper\":\"About_aboutInnerWrapper__1-P7c\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"policyWrapper\":\"PrivacyPolicy_policyWrapper__3zjNl\",\"policyInnerWrapper\":\"PrivacyPolicy_policyInnerWrapper__jaWX7\",\"policySection\":\"PrivacyPolicy_policySection__RMstU\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"salaryAnalysis\":\"SalaryAnalysis_salaryAnalysis__1xM1D\",\"externalLink\":\"SalaryAnalysis_externalLink__2Xdg3\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"selectedSalary\":\"SalarySlider_selectedSalary__16iWr\",\"number\":\"SalarySlider_number__23Wy8\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"loader\":\"Loader_loader__3rSjE\",\"isSmall\":\"Loader_isSmall__x6W6B\",\"loaderSmall\":\"Loader_loaderSmall__1SCrt\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"Notification_container__3pfRZ\",\"notification\":\"Notification_notification__2t3DA\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"ErrorNotification_container__3-88k\",\"notification\":\"ErrorNotification_notification__2TQ7a\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"toolBar\":\"ToolBar_toolBar__1oGqX\",\"menuItem\":\"ToolBar_menuItem__Gw0UI\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"filterItem\":\"FilterItem_filterItem__3AyQR\",\"greyed\":\"FilterItem_greyed__1Y1Ab\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"summary\":\"DataSourceSummary_summary__3iFfU\",\"print\":\"DataSourceSummary_print__Vk-Dp\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"explanationItem\":\"ExplanationItem_explanationItem__2QFNS\",\"image\":\"ExplanationItem_image__2fUFi\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"instructionsVideo\":\"InstructionsVideo_instructionsVideo__ywMoV\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"inputWrapper\":\"Textarea_inputWrapper__2gUp1\",\"label\":\"Textarea_label__3Fmhv\",\"input\":\"Textarea_input__2-OC4\",\"number\":\"Textarea_number__2ivDT\",\"text\":\"Textarea_text__18aWr\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"main\":\"SalaryProfileConfig_main__1ZWuG\",\"wrapForm\":\"SalaryProfileConfig_wrapForm__oy3vb\",\"selectionRow\":\"SalaryProfileConfig_selectionRow__2AC4X\",\"subSection\":\"SalaryProfileConfig_subSection__1JR1L\",\"arrowButton\":\"SalaryProfileConfig_arrowButton__1gl3p\",\"saveSection\":\"SalaryProfileConfig_saveSection__3VCOd\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"LoadConfiguration_container__2huKk\",\"isLoading\":\"LoadConfiguration_isLoading__18Abo\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"main\":\"PreviewSalaryProfileConfig_main__12n-k\",\"wrapForm\":\"PreviewSalaryProfileConfig_wrapForm__3SoDV\",\"selectionRow\":\"PreviewSalaryProfileConfig_selectionRow__2uRR7\",\"subSection\":\"PreviewSalaryProfileConfig_subSection__3qoDt\",\"arrowButton\":\"PreviewSalaryProfileConfig_arrowButton__15RZ-\",\"saveSection\":\"PreviewSalaryProfileConfig_saveSection__33Sx_\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"grid\":\"FilterExplanationEdit_grid__19w5L\",\"subHeader\":\"FilterExplanationEdit_subHeader__11ki5\",\"left\":\"FilterExplanationEdit_left__lFW8-\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"unionLink\":\"UnionLink_unionLink__3iWys\"};","module.exports = __webpack_public_path__ + \"static/media/saco-lonesok_logotype.62c120b2.svg\";","// extracted by mini-css-extract-plugin\nmodule.exports = {\"contentContainer\":\"App_contentContainer__1Uo_h\",\"formWrapperAHalf\":\"App_formWrapperAHalf__3RCzp\",\"LonesokFlexBox\":\"App_LonesokFlexBox__16fJg\",\"LonesokFlexCol\":\"App_LonesokFlexCol__sgWbO\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"subHeader\":\"ExplanationText_subHeader__faPHq\",\"explanationText\":\"ExplanationText_explanationText__20Ch0\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"buttonTransparent\":\"ButtonTransparent_buttonTransparent__2DTKz\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"breadcrumbs\":\"Breadcrumbs_breadcrumbs__3tNdo\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"externalLink\":\"ExternalLink_externalLink__2zGpw\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"slider\":\"Slider_slider__V2rIE\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"optionBtn\":\"DownloadExcel_optionBtn__2VAAY\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"presentation\":\"Presentation_presentation__1kR40\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"tabRow\":\"TabRow_tabRow__3Asy0\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"chart\":\"Chart_chart__Ee-8A\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"loaderContainer\":\"ExplanationGroup_loaderContainer__CAAXD\"};","module.exports = __webpack_public_path__ + \"static/media/box_plot_image.bbb9e520.png\";","// extracted by mini-css-extract-plugin\nmodule.exports = {\"helpBox\":\"HelpBox_helpBox__2rCW5\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"loaderAnimation\":\"Level3Advanced_loaderAnimation__2RiaU\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"grid\":\"StandardConfig_grid__CXOZf\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"helpBox\":\"HelpBox_helpBox__3ESs6\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"admin\":\"AccountRow_admin__2XNG7\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"loaderAnimation\":\"CreateAccount_loaderAnimation__VWmOF\",\"createAccountHeader\":\"CreateAccount_createAccountHeader__3oQ2P\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"tabRow\":\"DataSource_tabRow__9NaLw\",\"loaderAnimation\":\"DataSource_loaderAnimation__1OYpr\",\"helpLink\":\"DataSource_helpLink__HXAac\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"tabRow\":\"UnionSelect_tabRow__3fKSc\",\"loaderAnimation\":\"UnionSelect_loaderAnimation__iyRwJ\",\"helpLink\":\"UnionSelect_helpLink__3BKPi\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"helpBox\":\"HelpBox_helpBox__1tuqD\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"AddNotification_container__3m8Le\",\"textInput\":\"AddNotification_textInput__3_iST\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"main\":\"Page404_main__2PLo0\"};","module.exports = __webpack_public_path__ + \"static/media/flowchart_token-authentication.cf7b52b4.svg\";","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"PreviewLab_container__iMb5s\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"filterExplanationCreate\":\"FilterExplanationCreate_filterExplanationCreate__1iKY2\",\"filterExplanationHeading\":\"FilterExplanationCreate_filterExplanationHeading__38ZfB\",\"textArea\":\"FilterExplanationCreate_textArea__30FLZ\"};","import React, { Component } from 'react';\nimport { withRouter } from 'react-router-dom';\nimport styles from './PageErrorBoundary.module.css';\n\nclass PageErrorBoundary extends Component {\n state = { hasError: false, error: '' };\n\n static getDerivedStateFromError(error) {\n return { hasError: true, error };\n }\n\n render() {\n if (this.state.hasError) {\n return (\n
\n

Ånej! Saco Lönesök fungerar inte.

\n\n

\n Tyvärr verkar det som att vår webbplats inte är tillgänglig för\n tillfället. Testa gärna igen senare, vi jobbar med problemet och\n hoppas att allt fungerar snart igen.\n

\n\n

\n Har du akuta frågor om lön eller statistik? Kontakta ditt förbund.\n

\n\n

\n Har du tekniska frågor om Lönesök på en övergripande nivå? Hör av\n dig till{' '}\n \n lonesok@saco.se\n {' '}\n och ange vilket förbund du tillhör.\n

\n\n

Tack för ditt tålamod!

\n
\n );\n }\n\n return this.props.children;\n }\n}\n\nexport default withRouter(PageErrorBoundary);\n","import AppSettings from '../appsettings.json';\n\nconst Api = () => {\n const BASE_URL = AppSettings.SERVER_URL;\n\n function handleNetworkError(res) {\n // console.log('res');\n // console.log(res);\n if (!res.ok) {\n // console.log('res.ok1');\n // console.log(res.ok);\n throw res;\n }\n // console.log('res.ok2');\n // console.log(res.ok);\n return res;\n }\n\n // TODO: Handle network errors\n // function handleNoContent(res) {\n // if (res.status === 204) {\n // throw res;\n // }\n\n // return res;\n // }\n\n function createGetRequest(page, token) {\n const req = {\n method: 'GET',\n headers: !token ? {} : { Authorization: `Bearer ${token}` },\n };\n\n return fetch(`${BASE_URL}/${page}`, req)\n .then(res => handleNetworkError(res))\n .then(res => res.json());\n }\n\n function createGetRequestWithCredentials(page, token) {\n const req = {\n method: 'GET',\n headers: !token ? {} : { Authorization: `Bearer ${token}` },\n credentials: 'include',\n };\n\n return fetch(`${BASE_URL}/${page}`, req)\n .then(res => handleNetworkError(res))\n .then(res => res.json());\n }\n\n function createDeleteRequest(page, token) {\n const req = {\n method: 'DELETE',\n headers: !token\n ? { 'Content-type': 'application/json' }\n : {\n 'Content-type': 'application/json',\n Authorization: `Bearer ${token}`,\n },\n };\n\n return fetch(`${BASE_URL}/${page}`, req)\n .then(res => handleNetworkError(res))\n .then(res => res.json());\n }\n\n function createPostRequest(page, reqData, token, returnJson = true) {\n const req = {\n method: 'POST',\n headers: !token\n ? { 'Content-type': 'application/json' }\n : {\n 'Content-type': 'application/json',\n Authorization: `Bearer ${token}`,\n },\n body: JSON.stringify(reqData),\n };\n\n return fetch(`${BASE_URL}/${page}`, req)\n .then(res => handleNetworkError(res))\n .then(res => (returnJson ? res.json() : res));\n }\n\n function createPostRequestWithCredentials(\n page,\n reqData,\n token,\n returnJson = true\n ) {\n const req = {\n method: 'POST',\n headers: !token\n ? { 'Content-type': 'application/json' }\n : {\n 'Content-type': 'application/json',\n Authorization: `Bearer ${token}`,\n },\n body: JSON.stringify(reqData),\n };\n\n return (\n fetch(`${BASE_URL}/${page}`, req)\n .then(res => handleNetworkError(res))\n // TODO: Handle network errors\n // .then(res => handleNoContent(res))\n .then(res => (returnJson ? res.json() : res))\n );\n }\n\n function createEventSource(page, messageEvent) {\n const eventSource = new EventSource(`${BASE_URL}/${page}`);\n eventSource.onmessage = e => messageEvent(e.data);\n }\n\n function createPostRequestWithToken(page, reqData, returnJson = true) {\n const { token } = reqData;\n const req = {\n method: 'POST',\n headers: {\n 'Content-type': 'application/json',\n Authorization: `Bearer ${token}`,\n },\n body: JSON.stringify(reqData),\n };\n\n return fetch(`${BASE_URL}/${page}`, req)\n .then(res => handleNetworkError(res))\n .then(res => res.json());\n }\n // API Endpoints:\n // forbund (get), fds, menuselection, metatabs, breakby, report.\n\n // DevLogin/AdminLogin\n return {\n login: data => createPostRequest('Token', data, false),\n testLogin: data => createPostRequest('Token/login', data),\n tokenLogin: data => createPostRequestWithToken('Token/session', data),\n forbundsKodLogin: data => createPostRequest('Token/forbund/session', data),\n\n // Getters\n getForbund: token =>\n createGetRequest('UnionSalaryStatistics/forbund', token),\n\n // Posts\n getFds: (data, token) =>\n createPostRequest('UnionSalaryStatistics/fds', data, token),\n\n getConfiguration: (data, token) =>\n createPostRequest('CopyConfiguration/config', data, token),\n copyConfigurationExecute: (data, token) =>\n createPostRequest('CopyConfigurationJob/execute', data, token, false),\n getActiveFds: (data, token) =>\n createPostRequest('Presentation/fds', data, token),\n getMenuselections: (data, token) =>\n createPostRequest('UnionSalaryStatistics/menuselection', data, token),\n getPreviewMenuSelection: data =>\n createPostRequest('UnionSalaryStatistics/menuselection/preview', data),\n getMetatabs: (data, token) =>\n createPostRequest('UnionSalaryStatistics/metatabs', data, token),\n getBreakby: (data, token) =>\n createPostRequest('UnionSalaryStatistics/breakby', data, token),\n getReport: (data, token) =>\n createPostRequest('UnionSalaryStatistics/lonereport', data, token),\n\n getBinstat: data =>\n createPostRequest('UnionSalaryStatistics/binstat', data),\n\n getReportExcel: (data, token) =>\n createPostRequest('File/excel', data, token, false),\n\n sendVistitorStats: (data, token) =>\n createPostRequest('Statistic', data, token),\n\n // Admin/New endpoints\n // FIXME: Måste få bättre koll.\n getSituations: token => createGetRequest('Situation', token),\n getPreviewSituations: token =>\n createGetRequest('Situation/getPreviewSituations', token),\n createSituation: (data, token) =>\n createPostRequest('Situation', data, token),\n updateSituation: (id, data, token) =>\n createPostRequest(`Situation/${id}`, data, token),\n deleteSituation: (id, token) =>\n createDeleteRequest(`Situation/${id}`, token),\n updateSelections: (id, data, token) =>\n createPostRequest(`Situation/${id}/selections`, data, token),\n postDatasource: (id, data, token) =>\n createPostRequest(`DataSource/${id}`, data, token),\n getUnionByUnionId: unionId => createPostRequest(`Union/${unionId}`),\n getUnionByForbundsKod: forbundsKod =>\n createPostRequest(`Union/forbundskod/${forbundsKod}`),\n\n getUnion: token => createGetRequest('Union', token),\n getUnions: token => createGetRequest('Union/getall', token),\n refreshAdminToken: (data, token) =>\n createPostRequest('Token/adminrefresh', data, token),\n postConfiguredYear: (unionId, data, token) =>\n createPostRequest(`Union/${unionId}/configuration`, data, token, false),\n\n /**\n * getAll: get all texts of groupId and textId. Texts with unionId take precedence.\n * both: get all texts, both with unionId and default texts.\n */\n getTexts: (data, token) => createPostRequest('Text/getall', data, token),\n getTextsBoth: (data, token) => createPostRequest('Text/both', data, token),\n postText: (data, token) => createPostRequest('Text', data, token),\n deleteText: (id, token) => createDeleteRequest(`Text/${id}`, token),\n\n getLogs: (data, token) => createPostRequest('Log/getall', data, token),\n getMonitoringLogs: (data, token) =>\n createPostRequest('MonitoringLog/getall', data, token),\n getVisitorStats: (data, token) =>\n createPostRequest('Statistic/getall', data, token),\n getVisitorStatsNew: (data, token) =>\n createPostRequest('Statistic/getPeriodsStatistics', data, token),\n getUserStatistics: (data, token) =>\n createPostRequest('Statistic/getUserStatistics', data, token),\n getVisitorStatsByUnion: (data, token) =>\n createPostRequest('Statistic/sessionsbyforbund', data, token),\n getVisitorExcel: (data, token) =>\n createPostRequest('Statistic/excel', data, token, false),\n\n clearCache: token =>\n createPostRequest('UnionSalaryStatistics/clearcache', {}, token, false),\n\n // Nivå 1 endpoints.\n getSituationsFree: () => createGetRequest('Situation/public'),\n getReportFree: data =>\n createPostRequestWithCredentials(\n 'UnionSalaryStatistics/lonereport/public',\n data\n ),\n getMenuselectionsFree: data =>\n createPostRequestWithCredentials(\n 'UnionSalaryStatistics/menuselection/public',\n data\n ),\n\n createEventSource: (page, messageEvent) => {\n const eventSource = new EventSource(`${BASE_URL}/${page}`);\n eventSource.onmessage = e => messageEvent(e.data);\n },\n\n // Kontohantering admin.\n getSubscribers: token => createGetRequest('Subscriber', token),\n postSubscriber: (data, token) =>\n createPostRequest('Subscriber', data, token),\n updateAccount: (subId, data, token) =>\n createPostRequest(`Subscriber/${subId}/Roles`, data, token, false),\n updatePassword: (subId, data, token) =>\n createPostRequest(`Subscriber/${subId}/Password`, data, token, false),\n deleteSubscriber: (id, token) =>\n createDeleteRequest(`Subscriber/${id}`, token),\n // Nivå 3 config.\n getPresentations: (data, token) =>\n createPostRequest('Presentation/getall', data, token),\n postPresentations: (data, token) =>\n createPostRequest('Presentation/breakbys', data, token),\n };\n};\n\nconst ApiService = Api();\nexport default ApiService;\n","import { useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { useCookies } from 'react-cookie';\nimport ApiService from 'services/ApiService';\n\nconst MESSAGES = {\n '/': 'Start',\n '/enkel': 'Nivå 2',\n '/avancerad': 'Nivå 3',\n};\n\nconst getRandomSeconds = (low, high) =>\n (Math.floor(Math.random() * high) + low) * 1000;\n\nconst VisitorCounter = ({ path, user }) => {\n const [cookies] = useCookies(['statistics']);\n\n useEffect(() => {\n let active = true;\n const request = { message: MESSAGES[path] || path };\n\n setTimeout(() => {\n // Only send statistic data if user allowed it\n if (active && cookies.statistics === 'allow') {\n ApiService.sendVistitorStats(request, user.token).then(() => {});\n }\n }, getRandomSeconds(10, 15));\n\n return () => {\n active = false;\n };\n }, [path, user, cookies.statistics]);\n return null;\n};\n\nVisitorCounter.propTypes = {\n path: PropTypes.string.isRequired,\n user: PropTypes.shape({}).isRequired,\n};\n\nexport default VisitorCounter;\n","/* eslint-disable react/prop-types */\nimport React, { useState, useContext, createContext } from 'react';\nimport { Route, Redirect } from 'react-router-dom';\nimport VisitorCounter from 'atoms/visitorcounter/VisitorCounter';\nimport ApiService from './ApiService';\n\nconst authContext = createContext();\n\nexport const useAuth = () => {\n return useContext(authContext);\n};\n\nfunction useProvideAuth() {\n // If there's a user in localStorage, the state will set it's initial value to that on mount.\n // Or else null.\n const [user, setUser] = useState(JSON.parse(localStorage.getItem('user')));\n\n const decodeUser = usr => {\n const data = usr.token.split('.')[1];\n const decodedJsonData = window.atob(data);\n const decodedData = JSON.parse(decodedJsonData);\n\n // FIXME: Anpassa när/om role-propertyn byter namn till role.\n return {\n token: usr.token,\n forbund: decodedData.fk,\n unionId: decodedData.unionid ? decodedData.unionid : '',\n role:\n decodedData[\n 'http://schemas.microsoft.com/ws/2008/06/identity/claims/role'\n ],\n exp: decodedData.exp,\n };\n };\n\n const signout = () => {\n // FIXME: User blir 'false' när man loggar ut? Borde kanske bli undefined/null.\n setUser(false);\n localStorage.removeItem('user');\n };\n\n const signin = (subscriberId, password, forbundsKodAdmin) => {\n return ApiService.login({ subscriberId, password, forbundsKodAdmin })\n .then(usr => {\n const decodedUser = decodeUser(usr);\n setUser(decodedUser);\n localStorage.setItem('user', JSON.stringify(decodedUser));\n })\n .catch(error => {\n throw error;\n });\n };\n\n const tokenSignin = (token, browser, device) => {\n return ApiService.tokenLogin({ token, browser, device }, signout)\n .then(usr => {\n const decodedUser = decodeUser(usr);\n setUser(decodedUser);\n localStorage.setItem('user', JSON.stringify(decodedUser));\n })\n .catch(error => {\n throw error;\n });\n };\n\n const forbundSignin = (forbundsId, browser, device) => {\n return ApiService.forbundsKodLogin({ forbundsId, browser, device })\n .then(usr => {\n const decodedUser = decodeUser(usr);\n setUser(decodedUser);\n localStorage.setItem('user', JSON.stringify(decodedUser));\n })\n .catch(error => {\n throw error;\n });\n };\n\n const storeUser = usr => {\n const decodedUser = decodeUser(usr);\n setUser(decodedUser);\n localStorage.setItem('user', JSON.stringify(decodedUser));\n };\n\n const autoRefreshToken = (token, minutes = 15) => {\n if (!token || !user) return;\n\n const now = new Date();\n const soon = new Date(now.getTime() + minutes * 60000);\n\n const decodedUser = decodeUser(user);\n\n // exp value comes in a shorter format for some reason\n const expires = new Date(decodedUser?.exp * 1000);\n const expiresSoon =\n now.getTime() <= expires.getTime() && soon.getTime() > expires.getTime();\n\n if (!expiresSoon) return;\n\n // use custom admin refresh endpoint, use current forbund\n if (user.role === 'admin') {\n ApiService.refreshAdminToken(\n { token, forbundsKodAdmin: user.forbund },\n token\n ).then(data => {\n storeUser(data);\n });\n return;\n }\n\n ApiService.tokenLogin({ token }).then(data => {\n storeUser(data);\n });\n };\n\n return {\n user,\n signin,\n storeUser,\n decodeUser,\n tokenSignin,\n forbundSignin,\n autoRefreshToken,\n signout,\n };\n}\n\nexport function ProvideAuth({ children }) {\n const auth = useProvideAuth();\n return {children};\n}\n\nexport const PrivateRoute = ({ component: Component, ...rest }) => {\n const { user } = useAuth();\n return (\n \n user ? (\n <>\n \n \n \n ) : (\n \n )\n }\n />\n );\n};\n\nexport const AdminRoute = ({\n component: Component,\n restrict = false,\n ...rest\n}) => {\n const { user } = useAuth();\n return (\n {\n if (\n user &&\n (user.role === 'admin' || (!restrict && user.role === 'redaktor'))\n ) {\n return ;\n }\n if (user) {\n return (\n \n );\n }\n return (\n \n );\n }}\n />\n );\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport styles from './Banner.module.css';\n\nconst Banner = ({ user }) => {\n document.title = 'Saco lönesök';\n return (\n
\n
\n
\n

Välkommen till Saco lönesök!

\n {user?.role === 'fortroendevald' ? (\n

\n Som förtroendevald har du tillgång till tre års lönestatistik och\n flera uppgifter.\n

\n ) : (\n

\n Lönesök finns i två olika varianter, en enkel och en avancerad.\n Den enkla sökningen är till för dig som vill ha en snabb överblick\n av ditt löneläge, medan du i den avancerade sökningen kan fördjupa\n dig i all tillgänglig lönestatistik.\n

\n )}\n
\n
\n
\n );\n};\n\nBanner.propTypes = {\n user: PropTypes.shape({\n role: PropTypes.string,\n }).isRequired,\n};\n\nexport default Banner;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport {\n IconX,\n IconChevronDown,\n IconPlus,\n IconFileDownload,\n IconHelp,\n IconMinus,\n} from 'tabler-icons';\nimport styles from './ButtonLink.module.css';\n\nconst ButtonLink = ({\n className,\n label,\n altText,\n icon,\n large,\n menuItem,\n lastChild,\n accordionItem,\n disabled,\n onClick,\n style,\n}) => {\n const buttonClassName = className && className !== '' ? className : '';\n const buttonIsLarge = large ? `${styles.isLarge}` : '';\n const buttonIsMenuItem = menuItem ? `${styles.isMenuItem}` : '';\n const buttonIsAccordionItem = accordionItem\n ? `${styles.isAccordionItem}`\n : '';\n const buttonIsLastChild = lastChild ? `${styles.isLastChild}` : '';\n const computedAltText = altText && altText !== '' ? altText : label;\n\n let buttonIcon;\n if (icon && icon === 'Help') {\n buttonIcon = (\n \n );\n } else if (icon && icon === 'Download') {\n buttonIcon = ;\n } else if (icon && icon === 'Plus') {\n buttonIcon = ;\n } else if (icon && icon === 'Minus') {\n buttonIcon = ;\n } else if (icon && icon === 'ChevronDown') {\n if (buttonIsLarge) {\n buttonIcon = (\n \n );\n } else {\n buttonIcon = ;\n }\n } else if (icon && icon === 'X') {\n buttonIcon = ;\n }\n\n return (\n \n {buttonIcon}\n {label}\n \n );\n};\n\nButtonLink.propTypes = {\n label: PropTypes.string.isRequired,\n altText: PropTypes.string,\n className: PropTypes.string,\n icon: PropTypes.string,\n large: PropTypes.bool,\n menuItem: PropTypes.bool,\n lastChild: PropTypes.bool,\n accordionItem: PropTypes.bool,\n disabled: PropTypes.bool,\n onClick: PropTypes.func,\n style: PropTypes.shape({}),\n};\n\nButtonLink.defaultProps = {\n altText: '',\n className: '',\n icon: '',\n large: false,\n menuItem: false,\n lastChild: false,\n accordionItem: false,\n disabled: false,\n onClick: () => {},\n style: undefined,\n};\n\nexport default ButtonLink;\n","import { useState, useRef, useEffect } from 'react';\n\nexport default function useVisible(initialIsVisible) {\n const [isVisible, setIsVisible] = useState(initialIsVisible);\n const ref = useRef(null);\n\n const handleClickOutside = event => {\n if (ref.current && !ref.current.contains(event.target)) {\n setIsVisible(false);\n }\n };\n\n useEffect(() => {\n document.addEventListener('click', handleClickOutside, true);\n return () => {\n document.removeEventListener('click', handleClickOutside, true);\n };\n }, []);\n\n return { ref, isVisible, setIsVisible };\n}\n","import React from 'react';\nimport { useHistory } from 'react-router-dom';\nimport ButtonLink from 'atoms/buttonlink/ButtonLink';\nimport { useAuth } from 'services/UseAuth';\nimport useVisible from 'hooks/useVisible';\nimport styles from './Menu.module.css';\n\nconst Menu = () => {\n const { ref, isVisible: showMenu, setIsVisible: setShowMenu } = useVisible(\n false\n );\n\n const { user } = useAuth();\n const history = useHistory();\n\n const goToPage = page => {\n setShowMenu(false);\n history.push(page);\n };\n\n const logout = () => {\n setShowMenu(false);\n history.push('/logga-ut');\n };\n\n return (\n
\n {user && (\n <>\n setShowMenu(!showMenu)}\n />\n\n {showMenu && (\n
\n goToPage('/enkel')}\n />\n goToPage('/avancerad')}\n />\n\n goToPage('/#om-saco-lonesok')}\n />\n goToPage('/#teknisk-info')}\n />\n {(user.role === 'admin' || user.role === 'redaktor') && (\n goToPage('/admin/nivå2')}\n />\n )}\n logout()}\n />\n
\n )}\n \n )}\n
\n );\n};\n\nexport default Menu;\n","/* eslint-disable camelcase */\nimport React, { useState, useEffect, useCallback } from 'react';\nimport { useLocation } from 'react-router-dom';\nimport { useAuth } from 'services/UseAuth';\nimport ApiService from 'services/ApiService';\nimport Banner from './banner/Banner';\nimport styles from './Header.module.css';\nimport Menu from './menu/Menu';\n\nconst fallbackUnion = {\n name: 'Saco lönesök',\n forbundskodSas: 'default',\n};\n\nconst Header = () => {\n const [imageLoadError, setImageLoadError] = useState(true);\n const [forbundList, setForbundList] = useState([]);\n const [union, setUnion] = useState(fallbackUnion);\n\n const location = useLocation();\n const { user } = useAuth();\n\n const path = `${process.env.PUBLIC_URL}/union_logotypes`;\n\n const getLogoSrc = str => `${path}/${str.toLowerCase()}_logo.svg`;\n\n const setFallbackSrc = e => {\n const { forbundskodSas, name } = fallbackUnion;\n if (imageLoadError) {\n setImageLoadError(false);\n e.target.src = getLogoSrc(forbundskodSas);\n e.target.title = name;\n e.target.alt = `${name} logotyp`;\n }\n };\n\n const getUnion = useCallback(() => {\n if (user) {\n const foundUnion = forbundList.find(\n d => d.forbundskodSas.toLowerCase() === user.forbund.toLowerCase()\n );\n\n if (foundUnion) {\n return foundUnion;\n }\n }\n return fallbackUnion;\n }, [user, forbundList]);\n\n useEffect(() => {\n if (forbundList.length === 0) return;\n setUnion(getUnion(forbundList));\n }, [forbundList, getUnion]);\n\n // Initially, get list of forbund\n useEffect(() => {\n if (user == null || forbundList.length !== 0) return;\n ApiService.getUnions(user.token).then(data => {\n setForbundList(\n data.sort((a, b) => `${a.name}`.localeCompare(b.name, 'sv'))\n );\n });\n }, [user, forbundList]);\n\n return (\n <>\n {location.pathname.includes('Instruktionsfilm') || location.pathname.includes('oppensokning') ? (\n <>\n ) : (\n
\n
\n
\n
\n
\n
\n
\n \n
\n \n
\n
\n {location.pathname === '/' && }\n
\n
\n
\n\n
\n
\n
\n
\n
\n
\n )}\n \n );\n};\n\nexport default Header;\n","import React from 'react';\nimport { bool, shape, string } from 'prop-types';\nimport styles from './UnionLink.module.css';\n\nexport default function UnionLink({ unionLink, capitalize }) {\n return (\n <>\n {unionLink ? (\n \n {capitalize ? 'K' : 'k'}ontakta {unionLink.header}\n \n ) : (\n `${capitalize ? 'K' : 'k'}ontakta ditt förbund`\n )}{' '}\n \n );\n}\n\nUnionLink.propTypes = {\n unionLink: shape({\n value: string,\n header: string,\n }),\n capitalize: bool,\n};\n\nUnionLink.defaultProps = {\n unionLink: null,\n capitalize: false,\n};\n","import UnionLink from 'atoms/unionlink/UnionLink';\nimport React, { useEffect, useState } from 'react';\nimport ApiService from 'services/ApiService';\nimport { useAuth } from 'services/UseAuth';\nimport Logo from '../../testdata/saco-lonesok_logotype.svg';\nimport styles from './Footer.module.css';\nimport { useLocation } from 'react-router-dom';\n\nconst Footer = () => {\n const { user } = useAuth();\n const token = user?.token;\n const location = useLocation();\n const { pathname } = location;\n const showLogo =\n pathname === '/inloggning-info' ||\n pathname === '/logga-ut' ||\n pathname === '/logga-in';\n\n const [unionLink, setUnionLink] = useState();\n\n useEffect(() => {\n if (!token) return;\n const request = [\n {\n groupId: 'unionLink',\n textId: ['unionLink'],\n },\n ];\n\n ApiService.getTexts(request, token).then(data => {\n if (data && data[0]) return setUnionLink(data[0]);\n return setUnionLink();\n });\n }, [token]);\n\n return (\n <>\n {location.pathname.includes('Instruktionsfilm') || location.pathname.includes('oppensokning') ? (\n <>\n ) : (\n
\n
\n
\n
\n

Har du frågor?

\n

\n om du har frågor om\n uppgifterna i lönestatistiken.\n

\n
\n {!showLogo && (\n
\n
\n \n
\n
\n )}\n
\n
\n
\n )}\n \n );\n};\n\nexport default Footer;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Link } from 'react-router-dom';\nimport { IconChevronRight } from 'tabler-icons';\nimport styles from './AnalysisCard.module.css';\n\nconst AnalysisCard = ({ description, link, title, type }) => {\n const path = `${process.env.PUBLIC_URL}/illustrations`;\n\n return (\n \n \n

{title}

\n

{description}

\n \n Gå vidare\n \n \n \n );\n};\n\nAnalysisCard.propTypes = {\n description: PropTypes.string.isRequired,\n link: PropTypes.string.isRequired,\n title: PropTypes.string.isRequired,\n type: PropTypes.oneOf(['simple', 'advanced']).isRequired,\n};\n\nexport default AnalysisCard;\n","/* eslint-disable react/no-array-index-key, react/no-danger */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport marked from 'marked/lib/marked';\nimport DOMPurify from 'dompurify';\nimport styles from './ExplanationText.module.css';\n\nconst getMarkdownText = value => {\n const rawMarkup = marked.parse(value.replace(/\\n/, '
'));\n return { __html: DOMPurify.sanitize(rawMarkup) };\n};\n\nconst ExplanationText = ({ textItem: { value } }) => (\n \n);\n\nExplanationText.propTypes = {\n textItem: PropTypes.shape({\n id: PropTypes.string.isRequired,\n value: PropTypes.string.isRequired,\n }).isRequired,\n};\n\nexport default ExplanationText;\n","import { useRef, useEffect } from 'react';\nimport { useLocation } from 'react-router-dom';\n\nconst useScrollTo = (id, callback) => {\n const location = useLocation();\n const ref = useRef();\n\n useEffect(() => {\n if (ref.current && location.hash === `#${id}`) {\n ref.current.scrollIntoView({ behavior: 'smooth' });\n\n if(callback) {\n callback();\n }\n }\n // eslint-disable-next-line\n }, [location, id]);\n\n return ref;\n};\n\nexport default useScrollTo;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport styles from './ButtonTransparent.module.css';\n\nconst ButtonTransparent = ({\n children,\n altText,\n className,\n disabled,\n onClick,\n style,\n}) => {\n const buttonClassName = className && className !== '' ? className : '';\n return (\n \n {children}\n \n );\n};\n\nButtonTransparent.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n ]).isRequired,\n className: PropTypes.string,\n altText: PropTypes.string.isRequired,\n disabled: PropTypes.bool,\n onClick: PropTypes.func,\n style: PropTypes.shape({}),\n};\n\nButtonTransparent.defaultProps = {\n className: undefined,\n disabled: false,\n onClick: () => {},\n style: undefined,\n};\n\nexport default ButtonTransparent;\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport useScrollTo from 'hooks/useScrollTo';\nimport { IconChevronDown, IconChevronUp } from 'tabler-icons';\nimport styles from './Accordion.module.css';\nimport ButtonTransparent from '../buttontransparent/ButtonTransparent';\n\nconst Accordion = ({\n border,\n boxShadow,\n children,\n className,\n close,\n dark,\n disabled,\n id,\n initialOpen,\n marginBottom,\n onClick,\n slim,\n stacked,\n title,\n}) => {\n const [open, setOpen] = useState(initialOpen);\n\n const ref = useScrollTo(id, () => {\n setOpen(true);\n onClick();\n });\n\n useEffect(() => {\n if (close) setOpen(false);\n }, [close]);\n\n // TODO: Maybe change this variable name\n // It does'nt imply interactivity.. but at the same time it serves two purposes.. ¯\\_(ツ)_/¯\n useEffect(() => {\n if (initialOpen) setOpen(true);\n }, [initialOpen]);\n\n return (\n \n
\n \n {\n setOpen(prevState => !prevState);\n onClick();\n }}\n /* eslint-disable-next-line react/jsx-props-no-spreading */\n {...(dark && {\n style: { backgroundColor: 'var(--bg-grey-darker)' },\n })}\n >\n {title}\n {open ? (\n \n ) : (\n \n )}\n \n \n <>\n \n {children}\n \n \n
\n \n );\n};\n\nAccordion.propTypes = {\n border: PropTypes.bool,\n boxShadow: PropTypes.bool,\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n ]).isRequired,\n className: PropTypes.string,\n close: PropTypes.bool,\n dark: PropTypes.bool,\n disabled: PropTypes.bool,\n id: PropTypes.string,\n initialOpen: PropTypes.bool,\n marginBottom: PropTypes.bool,\n onClick: PropTypes.func,\n slim: PropTypes.bool,\n stacked: PropTypes.bool,\n title: PropTypes.string.isRequired,\n};\n\nAccordion.defaultProps = {\n border: false,\n boxShadow: false,\n className: '',\n close: false,\n dark: false,\n disabled: false,\n id: '',\n initialOpen: false,\n marginBottom: false,\n onClick: () => {},\n slim: false,\n stacked: false,\n};\n\nexport default Accordion;\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport ApiService from 'services/ApiService';\nimport { useAuth } from 'services/UseAuth';\nimport ExplanationText from 'atoms/explanationtext/ExplanationText';\nimport styles from './About.module.css';\nimport Accordion from '../../../atoms/accordion/Accordion';\nimport useScrollTo from '../../../hooks/useScrollTo';\n\nconst About = ({ id }) => {\n const [aboutText, setAboutText] = useState('');\n const ref = useScrollTo(id);\n\n const { user } = useAuth();\n\n useEffect(() => {\n const request = [\n {\n groupId: 'about',\n },\n ];\n\n ApiService.getTexts(request, user.token).then(data => {\n setAboutText(\n data.find(txt => txt.groupId === 'about' && txt.textId === 'main')\n );\n });\n // eslint-disable-next-line\n }, []);\n\n return (\n
\n
\n \n {aboutText && }\n \n
\n
\n );\n};\n\nAbout.propTypes = {\n id: PropTypes.string.isRequired,\n};\n\nexport default About;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport useScrollTo from 'hooks/useScrollTo';\nimport styles from './PrivacyPolicy.module.css';\nimport Accordion from '../../../atoms/accordion/Accordion';\n\nconst TechnicalInformation = ({ id }) => {\n const ref = useScrollTo(id);\n\n return (\n
\n
\n \n

Integritetspolicy

\n

\n Uppgifterna i Saco lönesök består av anonymiserad data. Det innebär\n att det inte finns några personuppgifter i underlaget som används\n för lönestatistiken. För att visa statistik måste det finnas minst\n 30 observationer per förbund. Lönesök visar aldrig enskilda löner.\n

\n

\n För att du ska kunna vara inloggad i Saco lönesök och för att\n lönesök ska kunna hålla reda på vilket förbund besökaren tillhör,\n används cookies.\n

\n

Besöksstatistiken som Saco lönesök sparar:

\n
    \n
  • Vilket förbund besökaren tillhör.
  • \n
  • Vilken tid besökaren använder tjänsten.
  • \n
  • Om besökaren är medlem eller förtroendevald.
  • \n
  • Vilken del av tjänsten besökaren använder.
  • \n
  • Vilken webbläsare besökaren använder.
  • \n
  • Vilken enhet besökaren använder (desktop eller mobil).
  • \n
\n

Saco lönesök sparar inga personuppgifter.

\n

Teknisk information

\n

Rekommenderade webbläsare för Saco lönesök:

\n
\n Microsoft Edge (rekommenderad minimum version 107.0.1418.35)\n
\n
Google Chrome (rekommenderad minimum version 107.0.5304)
\n
Apple Safari (rekommenderad minimum version 15)
\n

\n Har du tekniska frågor eller hittat fel i systemet? Hör gärna av dig\n till{' '}\n \n lonesok@saco.se\n \n .\n

\n
\n
\n
\n );\n};\n\nTechnicalInformation.propTypes = {\n id: PropTypes.string.isRequired,\n};\n\nexport default TechnicalInformation;\n","import React from 'react';\nimport AnalysisCard from 'components/start/analysiscard/AnalysisCard';\nimport About from 'components/start/about/About';\nimport TechnicalInformation from 'components/start/privacypolicy/TechnicalInformation';\nimport styles from './PageStart.module.css';\n\nconst PageStart = () => {\n return (\n
\n
\n
\n
\n \n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n \n
\n
\n );\n};\n\nexport default PageStart;\n","import React from 'react';\nimport { Link } from 'react-router-dom';\nimport PropTypes from 'prop-types';\nimport styles from './BreadcrumbsItem.module.css';\n\nconst BreadcrumbsItem = ({ match, index, ...rest }) => {\n const routes = {\n '/': 'Start',\n '/enkel': 'Enkel',\n '/avancerad': 'Avancerad',\n '/for-utvecklare': 'För utvecklare',\n '/bli-medlem': 'Enkel (gratis)',\n };\n\n const routeName = routes[match.url];\n if (match.isExact) {\n document.title = `${routeName} - Saco lönesök`;\n }\n\n return (\n
  • \n {index !== 0 && ' / '}\n {match.isExact ? (\n

    {routeName}

    \n ) : (\n \n {routeName}\n \n )}\n
  • \n );\n};\n\nBreadcrumbsItem.propTypes = {\n match: PropTypes.shape({\n isExact: PropTypes.bool,\n params: PropTypes.shape({}),\n path: PropTypes.string,\n url: PropTypes.string,\n }).isRequired,\n index: PropTypes.number.isRequired,\n};\n\nexport default BreadcrumbsItem;\n","import React from 'react';\nimport { Route, useLocation } from 'react-router-dom';\nimport BreadcrumbsItem from './breadcrumbsitem/BreadcrumbsItem';\nimport styles from './Breadcrumbs.module.css';\n\nconst Breadcrumbs = () => {\n const getPaths = str => {\n const pathList = ['/'];\n\n if (str === '/') return pathList;\n\n str.split('/').reduce((prev, curr) => {\n const currPath = `${prev}/${curr}`;\n pathList.push(currPath);\n return currPath;\n });\n\n return pathList;\n };\n\n const { pathname } = useLocation();\n const paths = getPaths(pathname);\n\n return (\n \n );\n};\n\nexport default Breadcrumbs;\n","/* eslint-disable camelcase */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport useScrollTo from 'hooks/useScrollTo';\nimport styles from './Section.module.css';\n\nconst Section = ({ title, children, className, dashed, id }) => {\n const ref = useScrollTo(id);\n const extraClasses = className && className !== '' ? className : '';\n return (\n \n {title !== '' && (\n

    \n {title}\n

    \n )}\n {children}\n \n );\n};\n\nSection.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n ]).isRequired,\n id: PropTypes.string,\n className: PropTypes.string,\n title: PropTypes.string,\n dashed: PropTypes.bool,\n};\n\nSection.defaultProps = {\n id: '',\n title: '',\n className: '',\n dashed: false,\n};\n\nexport default Section;\n","// Returns array of numbers\n// \"1200 - 1299\" => [1200, 1299]\n// \" > 200000\" => [0, 200000]\n// \" < 5\" => [0, 5]\nexport function numberOfRespondents(str) {\n if (!str || typeof str !== 'string') return [0, 0];\n\n const splitChars = ['-', '<', '>'];\n\n let result = [];\n\n splitChars.forEach(char => {\n const found = str.search(char);\n\n if (found > -1) {\n const numbers = str.split(char);\n if (numbers.length > 1) {\n result = [Number(numbers[0]), Number(numbers[1])];\n } else {\n result = [0, 0];\n }\n }\n });\n\n return result;\n}\n\n// Returns boolean based on number of respondents\n// enoughRespondents(\"1200 - 1299\", 30) => true\nexport function enoughRespondents(str, limit) {\n if (!str || typeof str !== 'string') return false;\n const numbers = str.split('-');\n return Number(numbers[0]) >= limit;\n}\n\n// Returns antal string formatted to Swedish locale\n// \"1200 - 1299\" => \"1 200 - 1 299\"\nexport function formatRespondents(str) {\n if (!str || typeof str !== 'string') return '–';\n const numbers = str.split('-');\n if (numbers.length < 2) return str;\n return `${Number(numbers[0]).toLocaleString('sv')}–${Number(\n numbers[1]\n ).toLocaleString('sv')}`;\n}\n\nfunction roundToNearest(number, nearest, direction) {\n if (direction === 'up') return Math.ceil(number / nearest) * nearest;\n if (direction === 'down') return Math.floor(number / nearest) * nearest;\n return Math.round(number / nearest) * nearest;\n}\n\n// Contains hard coded numbers to round to, just to imitate the censoring of respondents\n// that is going on inside of sas.\n\n// Returns a censored range of respondents\n// 12349 => \"12 300 - 12 399\"\nexport function censorReponsondants(number) {\n if (number < 1) return '';\n if (number < 5) return '< 5';\n if (number < 16) return '5–15';\n if (number < 30) return '16–29';\n if (number < 50) return '30–49';\n if (number < 100) return '50–99';\n if (number < 150) return '100–149';\n\n return `${roundToNearest(number - 1, 100, 'down').toLocaleString('sv')}–${(\n roundToNearest(number, 100, 'up') - 1\n ).toLocaleString('sv')}`;\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { IconUser } from 'tabler-icons';\nimport styles from './SalaryInterval.module.css';\n\nconst SalaryInterval = ({ salaryLimit, salaryMid, selectedSalary }) => {\n const calcPercent = salary => {\n const a = salaryLimit[1] - salaryLimit[0];\n const b = salary - salaryLimit[0];\n\n let c = (b / a) * 100;\n\n // TODO: Någon bättre smooth overgång inte att allting bara blir max/min.\n if (c < -7) c = -7;\n if (c > 107) c = 107;\n\n return `${c}%`;\n };\n\n const dinLonPercentage = calcPercent(selectedSalary);\n const salaryMidPercent = calcPercent(salaryMid);\n\n return (\n
    \n
    \n
    \n \n
    \n
    \n \n {selectedSalary && (\n \n
    \n \n
    \n
    \n )}\n
    \n
    \n
    \n
    \n

    \n {Number(salaryLimit[0]).toLocaleString('sv')} kr.\n

    \n
    \n
    \n \n
    \n

    Din lön

    \n
    \n

    Medellön

    \n
    \n

    \n {Number(salaryLimit[1]).toLocaleString('sv')} kr.\n

    \n
    \n
    \n );\n};\n\nSalaryInterval.propTypes = {\n salaryLimit: PropTypes.arrayOf(Number).isRequired,\n salaryMid: PropTypes.number.isRequired,\n selectedSalary: PropTypes.string,\n};\n\nSalaryInterval.defaultProps = {\n selectedSalary: null,\n};\n\nexport default SalaryInterval;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { IconChevronRight } from 'tabler-icons';\nimport styles from './ExternalLink.module.css';\n\nfunction ExternalLink({ header, value }) {\n return (\n \n {header}\n \n \n );\n}\n\nExternalLink.propTypes = {\n header: PropTypes.string.isRequired,\n value: PropTypes.string.isRequired,\n};\n\nexport default ExternalLink;\n","import React, { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport Section from 'atoms/section/Section';\nimport { censorReponsondants } from 'lib/antal';\nimport { Link } from 'react-router-dom';\nimport { IconChevronRight } from 'tabler-icons';\nimport { useAuth } from 'services/UseAuth';\nimport ApiService from 'services/ApiService';\nimport UnionLink from 'atoms/unionlink/UnionLink';\nimport SalaryInterval from './salaryinterval/SalaryInterval';\nimport ExternalLink from '../externallink/ExternalLink';\nimport styles from './SalaryAnalysis.module.css';\n\nconst SalaryAnalysis = ({\n currentRespondents,\n salaryData,\n selectedSalary,\n salaryLimit,\n links,\n variant,\n}) => {\n const {\n user: { token },\n } = useAuth();\n\n const [unionLink, setUnionLink] = useState();\n\n useEffect(() => {\n const request = [\n {\n groupId: 'unionLink',\n textId: ['unionLink'],\n },\n ];\n\n ApiService.getTexts(request, token).then(data => {\n if (data && data[0]) return setUnionLink(data[0]);\n return setUnionLink();\n });\n }, [token]);\n\n const salary = {\n number: selectedSalary,\n string: {Number(selectedSalary).toLocaleString('sv')},\n };\n\n const average = {\n number: salaryData.lon_medel,\n string: (\n <>\n {salaryData.lon_medel.toLocaleString('sv')} kronor per månad.\n \n ),\n };\n\n const overAverage = salary.number > average.number;\n\n const SalaryDisclaimerString = () => {\n return (\n

    \n Det finns många faktorer som påverkar din lön. Använd{' '}\n Saco lönesöks avancerade sökning för att se\n mer detaljerad statistik eller för\n en personlig lönerådgivning.{' '}\n

    \n );\n };\n\n return (\n
    \n
    \n \n

    \n Medellönen för urvalet är {average.string}{' '}\n {selectedSalary && (\n <>\n Din lön om {salary.string} kronor ligger{' '}\n {overAverage ? 'över' : 'under'} medellönen.\n \n )}\n

    \n
      \n
    • \n 80 % har en lön mellan{' '}\n \n {`${salaryLimit[0].toLocaleString(\n 'sv'\n )}–${salaryLimit[1].toLocaleString('sv')}`}\n {' '}\n kronor.\n
    • \n
    • \n 10 % har en lön som är lägre än{' '}\n {salaryLimit[0].toLocaleString('sv')} kronor.\n
    • \n
    • \n 10 % har en lön som är högre än{' '}\n {salaryLimit[1].toLocaleString('sv')} kronor.\n
    • \n
    \n {currentRespondents && (\n

    \n Ditt urval består av uppgifter från{' '}\n {censorReponsondants(currentRespondents)} medlemmar.\n

    \n )}\n {variant === 'simple' && SalaryDisclaimerString()}\n
    \n\n {variant === 'simple' && (\n
    \n {links &&\n links[0] &&\n links.map(({ header, id, value }) => (\n \n ))}\n \n Jag vill veta mer, ta mig till Saco lönesöks avancerade sökning!\n \n \n
    \n )}\n
    \n );\n};\n\nSalaryAnalysis.propTypes = {\n currentRespondents: PropTypes.number,\n salaryData: PropTypes.shape(Object).isRequired,\n selectedSalary: PropTypes.string,\n salaryLimit: PropTypes.arrayOf(Number).isRequired,\n links: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string.isRequired,\n groupId: PropTypes.string.isRequired,\n textId: PropTypes.string.isRequired,\n unionId: PropTypes.string.isRequired,\n header: PropTypes.string.isRequired,\n isDefault: PropTypes.bool.isRequired,\n value: PropTypes.string.isRequired,\n })\n ),\n variant: PropTypes.oneOf(['free', 'simple']),\n};\n\nSalaryAnalysis.defaultProps = {\n currentRespondents: null,\n selectedSalary: null,\n links: [],\n variant: 'free',\n};\n\nexport default SalaryAnalysis;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport styles from './RadioButton.module.css';\n\nconst RadioButton = ({ disabled, value, name, onChange, checked }) => {\n return (\n
    \n \n \n \n \n
    \n );\n};\n\nRadioButton.propTypes = {\n disabled: PropTypes.bool.isRequired,\n name: PropTypes.string.isRequired,\n onChange: PropTypes.func.isRequired,\n value: PropTypes.string.isRequired,\n checked: PropTypes.bool.isRequired,\n};\n\nexport default RadioButton;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport ButtonTransparent from 'atoms/buttontransparent/ButtonTransparent';\nimport RadioButton from 'atoms/radiobutton/RadioButton';\nimport styles from './SelectionCard.module.css';\n\nconst SelectionCard = ({\n description,\n index,\n label,\n loading,\n name,\n selectedSituation,\n selectionChange,\n value,\n}) => {\n const selected = index === selectedSituation?.index;\n const disabled = selected || loading;\n const describedby = `${name}-${value}`;\n\n return (\n
    \n {\n if (e.key === 'Enter' || e.key === ' ') {\n selectionChange(e.target.value);\n }\n }}\n disabled={loading}\n >\n \n
    \n selectionChange(e.target.value)}\n disabled={disabled}\n value={value}\n name={name}\n checked={selected}\n />\n
    \n
    \n {label}\n

    {description}

    \n
    \n \n \n
    \n );\n};\n\nSelectionCard.propTypes = {\n description: PropTypes.string.isRequired,\n index: PropTypes.number.isRequired,\n label: PropTypes.string.isRequired,\n loading: PropTypes.bool.isRequired,\n name: PropTypes.string.isRequired,\n selectedSituation: PropTypes.shape({ index: PropTypes.number }),\n selectionChange: PropTypes.func.isRequired,\n value: PropTypes.string.isRequired,\n};\n\nSelectionCard.defaultProps = {\n selectedSituation: undefined,\n};\n\nexport default SelectionCard;\n","/* eslint-disable react/jsx-curly-newline */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport Section from 'atoms/section/Section';\nimport SelectionCard from '../selectioncard/SelectionCard';\nimport styles from './Situation.module.css';\n\nconst Situation = ({\n loading,\n situations,\n setSelectedSituation,\n selectedSituation,\n}) => {\n return (\n
    \n
    \n \n Välj den situation som passar dig bäst\n \n
    \n {situations\n .sort((a, b) => a.name.localeCompare(b.name))\n .sort((a, b) => {\n if (a.DSL2.toLowerCase() === 'df') return -1;\n if (b.DSL2.toLowerCase() !== 'df') return 1;\n return 0;\n })\n .map((situation, index) => (\n \n setSelectedSituation({\n index,\n DSL1: situation.DSL1,\n DSL2: situation.DSL2,\n year: situation.year,\n })\n }\n value={`wage${index}`}\n />\n ))}\n
    \n
    \n
    \n );\n};\n\nSituation.propTypes = {\n selectedSituation: PropTypes.shape({ index: PropTypes.number }),\n loading: PropTypes.bool.isRequired,\n situations: PropTypes.arrayOf(Object).isRequired,\n setSelectedSituation: PropTypes.func.isRequired,\n};\n\nSituation.defaultProps = {\n selectedSituation: undefined,\n};\nexport default Situation;\n","import PropTypes from 'prop-types';\nimport React, { forwardRef } from 'react';\nimport styles from './Input.module.css';\n\nconst Input = forwardRef(\n (\n {\n autoComplete,\n className,\n disabled,\n id,\n label,\n onChange,\n placeholder,\n type,\n value,\n max,\n min,\n minLength,\n step,\n title,\n pattern,\n displayInline,\n },\n ref\n ) => {\n return (\n \n {label && (\n \n {`${label}:`}\n \n )}\n \n
    \n );\n }\n);\n\nInput.propTypes = {\n autoComplete: PropTypes.string,\n className: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n displayInline: PropTypes.bool,\n disabled: PropTypes.bool,\n id: PropTypes.string.isRequired,\n label: PropTypes.string,\n max: PropTypes.number,\n min: PropTypes.number,\n minLength: PropTypes.number,\n onChange: PropTypes.func,\n pattern: PropTypes.string,\n placeholder: PropTypes.string,\n step: PropTypes.number,\n title: PropTypes.string,\n type: PropTypes.oneOf(['text', 'number', 'password']),\n value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n};\n\nInput.defaultProps = {\n autoComplete: 'on',\n className: '',\n displayInline: false,\n disabled: false,\n label: '',\n placeholder: null,\n type: 'text',\n value: '',\n max: null,\n min: null,\n minLength: null,\n step: null,\n title: null,\n pattern: null,\n onChange: () => {},\n};\n\nexport default Input;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport styles from './Slider.module.css';\n\nfunction Slider({ id, max, min, changeFunction, step, value }) {\n return (\n changeFunction(e.target.value)}\n aria-valuemin={min}\n aria-valuemax={max}\n aria-valuenow={value}\n onInput={e => changeFunction(e.target.value)}\n name={id}\n id={id}\n aria-label=\"Löneslider\"\n onKeyUp={e => {\n if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {\n changeFunction(e.target.value);\n }\n }}\n tabIndex=\"0\"\n />\n );\n}\n\nSlider.propTypes = {\n id: PropTypes.string.isRequired,\n max: PropTypes.number.isRequired,\n min: PropTypes.number.isRequired,\n changeFunction: PropTypes.func.isRequired,\n step: PropTypes.number.isRequired,\n value: PropTypes.string.isRequired,\n};\n\nexport default Slider;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Input from 'atoms/input/Input';\nimport Section from 'atoms/section/Section';\nimport styles from './SalarySlider.module.css';\nimport Slider from './slider/Slider';\n\nconst SalarySlider = ({ selectedSalary, setSelectedSalary, salaryLimit }) => {\n const min = salaryLimit[0] - 5000 >= 20000 ? 20000 : 10000;\n const max = salaryLimit[1] + 20000;\n const step = 100;\n const now = selectedSalary || '';\n\n return (\n <>\n

    Din lön

    \n
    \n
    \n
    \n setSelectedSalary(e.target.value)}\n step={step}\n type=\"number\"\n value={now}\n displayInline\n />\n kronor per månad\n
    \n \n
    \n
    \n \n );\n};\n\nSalarySlider.propTypes = {\n selectedSalary: PropTypes.string,\n setSelectedSalary: PropTypes.func.isRequired,\n salaryLimit: PropTypes.arrayOf(Number).isRequired,\n};\n\nSalarySlider.defaultProps = {\n selectedSalary: null,\n};\n\nexport default SalarySlider;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { IconX} from 'tabler-icons';\nimport styles from './ButtonActiveFilter.module.css';\n\nconst ButtonActiveFilter = ({\n label,\n className,\n disabled,\n onClick,\n style,\n}) => {\n const buttonClassName = className && className !== '' ? `${styles[className]}` : '';\n\n return (\n \n {label}\n \n \n );\n};\n\nButtonActiveFilter.propTypes = {\n label: PropTypes.string.isRequired,\n className: PropTypes.string,\n disabled: PropTypes.bool,\n onClick: PropTypes.func,\n style: PropTypes.shape({}),\n};\n\nButtonActiveFilter.defaultProps = {\n className: undefined,\n disabled: false,\n onClick: () => {},\n style: undefined,\n};\n\nexport default ButtonActiveFilter;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport ButtonActiveFilter from 'atoms/buttonactivefilter/ButtonActiveFilter';\nimport styles from './ActiveFilters.module.css';\n\nconst FilterString = (item, index, length) => {\n if (length === 1 || index === 0) {\n return item.desc;\n }\n if (index === length - 1) {\n return ` & ${item.desc}`;\n }\n return `, ${item.desc}`;\n};\n\nconst ActiveFilters = ({\n activeFilters,\n disableMenuselection,\n setActiveFilters,\n variant,\n}) => {\n const removeFilterOption = (f, filterOption) => {\n const index = activeFilters.findIndex(\n filter => filter.sel_var === f.sel_var\n );\n\n const filterToUpdate = activeFilters[index];\n\n filterToUpdate.values = filterToUpdate.values.filter(\n filter => filter.value !== filterOption.value\n );\n\n if (filterToUpdate) {\n setActiveFilters(prevState => {\n const tempState = [...prevState];\n tempState[index] = filterToUpdate;\n return tempState.filter(element => element.values.length > 0);\n });\n return;\n }\n\n setActiveFilters(prevState => [\n ...prevState.filter(prev => prev.sel_var !== f.sel_var),\n filterToUpdate,\n ]);\n };\n\n return (\n
    \n \n {variant === 'simple' ? 'Gjorda urval: ' : 'Valda filter: '}\n \n {activeFilters.map(f => (\n
    \n {`${f.name}:`}\n {variant === 'simple' ? (\n \n {f.values.map((s, index, { length }) => (\n \n {FilterString(s, index, length)}\n \n ))}\n \n ) : (\n f.values.map(s => {\n return (\n \n removeFilterOption(f, s)}\n />\n \n );\n })\n )}\n
    \n ))}\n
    \n );\n};\n\nActiveFilters.propTypes = {\n activeFilters: PropTypes.arrayOf(Object).isRequired,\n disableMenuselection: PropTypes.bool.isRequired,\n setActiveFilters: PropTypes.func.isRequired,\n variant: PropTypes.oneOf(['simple', 'advanced']),\n};\n\nActiveFilters.defaultProps = {\n variant: 'advanced',\n};\n\nexport default ActiveFilters;\n","/* eslint-disable camelcase */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { formatRespondents } from 'lib/antal';\nimport styles from './Checkbox.module.css';\n\nconst Checkbox = ({\n checked,\n disabled,\n item,\n loading,\n onChange,\n variant,\n className,\n}) => {\n const { antal, description, value, sel_var } = item;\n\n return (\n \n
    \n
    {description}
    \n
    \n

    \n {variant === 'secondary' && 'Antal uppgifter: '}\n {formatRespondents(antal)}\n

    \n
    \n
    \n \n \n \n \n \n );\n};\n\nCheckbox.propTypes = {\n checked: PropTypes.bool,\n className: PropTypes.string,\n disabled: PropTypes.bool.isRequired,\n item: PropTypes.shape({\n antal: PropTypes.string.isRequired,\n description: PropTypes.string,\n sel_var: PropTypes.string,\n value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired,\n }).isRequired,\n loading: PropTypes.bool,\n onChange: PropTypes.func.isRequired,\n variant: PropTypes.oneOf(['primary', 'secondary']).isRequired,\n};\n\nCheckbox.defaultProps = {\n className: '',\n checked: undefined,\n loading: false,\n};\n\nexport default Checkbox;\n","/* eslint-disable camelcase */\nimport React, { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport Checkbox from 'atoms/checkbox/Checkbox';\nimport Accordion from 'atoms/accordion/Accordion';\nimport styles from './CheckboxSelectGroup.module.css';\n\nconst CheckboxSelectGroup = ({\n loading,\n itemIndex,\n options,\n sel_var,\n SELECTION_DATATYPE,\n SELECTION_TEXT,\n setSelectedValues,\n selectedValues,\n}) => {\n const [values, setValues] = useState(\n options.map(option => ({\n ...option,\n checked: false,\n }))\n );\n console.log('setValues');\n console.log(values);\n console.log('options');\n console.log(options);\n\n useEffect(() => {\n if (\n options.some(\n option =>\n option.antal !== values.find(v => v.value === option.value).antal\n )\n ) {\n console.log('useEffect options');\n setValues(prevState => {\n return options.map(option => {\n const matching = prevState.find(prev => prev.value === option.value);\n return {\n ...option,\n checked: matching.checked || false,\n };\n });\n });\n }\n }, [options]);\n\n const handleChange = event => {\n event.persist();\n const { value, checked } = event.target;\n console.log('handleChange Event value:');\n console.log(value);\n setValues(prevState => [\n ...prevState.map(option => {\n if (option.value === value) {\n return { ...option, checked };\n }\n return option;\n }),\n ]);\n };\n\n // FIXME: The checkbox values are a little too decoupled from selectedValues\n useEffect(() => {\n // Reset if nothing selected\n if (!selectedValues.length) {\n setValues(prevState =>\n prevState.map(option => ({ ...option, checked: false }))\n );\n }\n }, [selectedValues]);\n\n useEffect(() => {\n const tempValues = values\n .filter(option => option.checked)\n .map(option => ({\n value: option.value,\n antal: option.antal,\n desc: option.description,\n }));\n\n setSelectedValues(prevState => {\n const item = prevState.find(o => o.valKey === sel_var);\n const tempState = [...prevState];\n\n if (item && tempValues.length > 0) {\n tempState[prevState.indexOf(item)] = {\n ...item,\n values: tempValues,\n };\n return tempState;\n }\n\n if (!item && tempValues.length > 0) {\n return [\n ...prevState,\n {\n name: SELECTION_TEXT,\n valKey: sel_var,\n sel_var,\n selection_datatype: SELECTION_DATATYPE,\n values: tempValues,\n },\n ];\n }\n\n if (item && tempValues.length < 1) {\n return [\n ...prevState.filter(o => JSON.stringify(o) !== JSON.stringify(item)),\n ];\n }\n return prevState;\n });\n\n console.log('Selected values:');\n console.log(selectedValues);\n // eslint-disable-next-line\n }, [values]);\n\n return (\n option.antal !== ' < 5') ? '' : styles.mobileEmpty\n }\n >\n
    \n
    \n Antal uppgifter\n
    \n {values.map(item => (\n \n ))}\n
    \n \n );\n};\n\nCheckboxSelectGroup.propTypes = {\n loading: PropTypes.bool.isRequired,\n itemIndex: PropTypes.number.isRequired,\n options: PropTypes.arrayOf(Object).isRequired,\n sel_var: PropTypes.string.isRequired,\n SELECTION_DATATYPE: PropTypes.string.isRequired,\n SELECTION_TEXT: PropTypes.string.isRequired,\n setSelectedValues: PropTypes.func.isRequired,\n selectedValues: PropTypes.arrayOf(Object),\n};\n\nCheckboxSelectGroup.defaultProps = {\n selectedValues: [],\n};\n\nexport default CheckboxSelectGroup;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Section from 'atoms/section/Section';\nimport ActiveFilters from 'components/advanced/activefilters/ActiveFilters';\nimport ButtonLink from 'atoms/buttonlink/ButtonLink';\nimport CheckboxSelectGroup from '../checkboxselectgroup/CheckboxSelectGroup';\nimport styles from './SalaryProfile.module.css';\n\nconst SalaryProfile = ({\n loading,\n dataSources,\n selectedValues,\n selectionList,\n setSelectedValues,\n}) => {\n const forbundToString = str => {\n if (!str) return '';\n if (str.toLowerCase() === 'sa') {\n return 'samtliga Sacoförbund';\n }\n\n return 'ditt förbund';\n };\n\n return (\n
    \n {dataSources.length > 0 && (\n

    \n {`Statistiken du ser baseras på ${\n dataSources[0].YEAR\n } års uppgifter från ${forbundToString(dataSources[0].FORBUND)}.`}\n

    \n )}\n {selectionList.map((listItem, index) => (\n
    \n
    \n \n
    \n
    \n ))}\n {selectedValues.length > 0 && (\n <>\n \n {\n setSelectedValues([]);\n }}\n />\n \n )}\n
    \n );\n};\n\nSalaryProfile.propTypes = {\n dataSources: PropTypes.arrayOf(Object),\n loading: PropTypes.bool.isRequired,\n selectedValues: PropTypes.arrayOf(String).isRequired,\n selectionList: PropTypes.arrayOf(Object).isRequired,\n setSelectedValues: PropTypes.func.isRequired,\n};\n\nSalaryProfile.defaultProps = {\n dataSources: [],\n};\n\nexport default SalaryProfile;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport styles from './Loader.module.css';\n\nconst Loader = ({ variant, small, className }) => {\n const color = variant === 'primary' ? '#99d2d9' : '#DA8BBA';\n const extraClasses = className && className !== '' ? className : '';\n return (\n \n
    \n
    \n
    \n
    \n );\n};\n\nLoader.propTypes = {\n variant: PropTypes.oneOf(['primary', 'secondary']).isRequired,\n small: PropTypes.bool,\n className: PropTypes.string,\n};\n\nLoader.defaultProps = {\n small: false,\n className: '',\n};\n\nexport default Loader;\n","// Checks if option value is \"empty\"\nexport default function isEmpty(value) {\n return value === '.' || value === '';\n}\n","import React, { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport ApiService from '../../services/ApiService';\nimport styles from './Notification.module.css';\n\nconst Notification = ({ token, forbund, niva, dataSource }) => {\n const [notifications, setNotifications] = useState([]);\n const [filteredNotifications, setFilteredNotifications] = useState([]);\n\n useEffect(() => {\n ApiService.getTextsBoth(\n [\n {\n groupId: 'notifications',\n unionId: [null, forbund],\n },\n ],\n token\n )\n .then(data => data.map(t => ({ ...t, textId: JSON.parse(t.textId) })))\n .then(data => setNotifications(data))\n .catch(error => {});\n // eslint-disable-next-line\n }, [token]);\n\n useEffect(() => {\n const { dsl1, dsl2, year } = dataSource;\n if (notifications.length) {\n setFilteredNotifications(\n notifications.filter(\n t =>\n (dataSource.forbund === 'SA' ? !t.unionId : !!t.unionId) &&\n (!t.textId.niva || niva === t.textId.niva) &&\n (!t.textId.dsl1 || dsl1 === t.textId.dsl1) &&\n (!t.textId.dsl2 || dsl2 === t.textId.dsl2) &&\n (!t.textId.year || year === Number(t.textId.year))\n )\n );\n }\n }, [notifications, dataSource, niva]);\n\n if (!notifications.length || !filteredNotifications.length) return null;\n return (\n
    \n {filteredNotifications.length &&\n filteredNotifications.map(t => (\n

    \n {t.value}\n

    \n ))}\n
    \n );\n};\n\nNotification.propTypes = {\n token: PropTypes.string.isRequired,\n forbund: PropTypes.string,\n niva: PropTypes.string.isRequired,\n dataSource: PropTypes.shape({\n forbund: PropTypes.string,\n dsl1: PropTypes.string,\n dsl2: PropTypes.string,\n year: PropTypes.number,\n }),\n};\n\nNotification.defaultProps = {\n forbund: '',\n dataSource: {\n forbund: 'SA',\n dsl1: null,\n dsl2: '',\n year: null,\n },\n};\n\nexport default Notification;\n","import React, { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { useAuth } from '../../services/UseAuth';\nimport ApiService from '../../services/ApiService';\nimport styles from './ErrorNotification.module.css';\n\nconst ErrorNotification = ({ token, forbund, niva, dataSource }) => {\n const [errornotifications, setErrorNotifications] = useState([]);\n const { user } = useAuth();\n useEffect(() => {\n console.log('Errornotification');\n ApiService.getMonitoringLogs(\n {\n niva: niva,\n unionId: user.unionId,\n },\n token\n )\n .then(data => setErrorNotifications(data))\n .catch(error => {});\n }, [token]);\n\n useEffect(() => {\n console.log('Errornotifications:');\n console.log(errornotifications);\n }, [errornotifications]);\n\n // return (\n //
    \n //
    \n //

    Error notification content

    \n //
    \n //
    \n // );\n\n return (\n
    \n {errornotifications && errornotifications.hasErrors && (\n
    \n {/* Visa din felnotis här */}\n

    \n Ett tillfälligt systemfel har uppstått. Vi jobbar på att lösa det så\n snabbt som möjligt. Vänligen försök igen senare.\n

    \n
    \n )}\n
    \n );\n};\n\nErrorNotification.propTypes = {\n token: PropTypes.string.isRequired,\n forbund: PropTypes.string,\n niva: PropTypes.string.isRequired,\n dataSource: PropTypes.shape({\n forbund: PropTypes.string,\n dsl1: PropTypes.string,\n dsl2: PropTypes.string,\n year: PropTypes.number,\n }),\n};\n\nErrorNotification.defaultProps = {\n forbund: '',\n dataSource: {\n forbund: 'SA',\n dsl1: null,\n dsl2: '',\n year: null,\n },\n};\n\nexport default ErrorNotification;\n","/* eslint-disable camelcase */\nimport React, { useState, useEffect, useCallback } from 'react';\nimport Breadcrumbs from 'atoms/breadcrumbs/Breadcrumbs';\nimport SalaryAnalysis from 'components/simple/salaryanalysis/SalaryAnalysis';\nimport Situation from 'components/simple/situation/Situation';\nimport SalarySlider from 'components/simple/salaryslider/SalarySlider';\nimport SalaryProfile from 'components/simple/salaryprofile/SalaryProfile';\nimport Loader from 'atoms/loader/Loader';\nimport ApiService from 'services/ApiService';\nimport { useHistory } from 'react-router-dom';\nimport { useAuth } from 'services/UseAuth';\nimport { numberOfRespondents } from 'lib/antal';\nimport isEmpty from 'lib/emptyValues';\nimport styles from './PageSimple.module.css';\nimport Notification from '../../atoms/notification/Notification';\nimport ErrorNotification from '../../atoms/errornotification/ErrorNotification';\n\n// FIXME: När en situation väljs görs en onödig request till menuselection.\nconst PageSimple = () => {\n const [dataSources, setDataSources] = useState([]);\n\n const [selectionList, setSelectionList] = useState([]);\n const [selectedSalary, setSelectedSalary] = useState();\n\n const [selectedValues, setSelectedValues] = useState([]);\n const [selectedSituation, setSelectedSituation] = useState();\n const [situations, setSituations] = useState();\n\n const [salaryData, setSalaryData] = useState();\n const [salaryLimit, setSalaryLimit] = useState([]);\n const [hasErrors, setHasErrors] = useState(false);\n const [isLoadingReport, setIsLoadingReport] = useState(false);\n\n const [totalRespondents, setTotalRespondents] = useState();\n const [currentRespondents, setCurrentRespondents] = useState();\n\n const [disableMenuselection, setDisableMenuselection] = useState(false);\n\n const [links, setLinks] = useState([]);\n\n const [, setState] = useState();\n\n const { user, signout, autoRefreshToken } = useAuth();\n const { token, forbund } = user;\n\n const history = useHistory();\n\n // TODO: Handle network errors\n const handleError = useCallback(\n error => {\n if (error.status === 401) {\n signout();\n history.push('/logga-ut');\n } else {\n setState(() => {\n throw error;\n });\n }\n },\n [signout, history]\n );\n\n useEffect(() => {\n if (!selectedSituation) return;\n\n // FIXME: Borde nollställa variabler som beror på val.\n setSelectedValues([]);\n setSalaryData(null);\n setSelectionList(\n situations[selectedSituation.index].selections\n .filter(selection => selection.isActive)\n .map(selection => {\n const options = selection.options\n .filter(opt => !isEmpty(opt.value))\n .sort((a, b) =>\n selection.sortOptionsByNumber\n ? Number(a.value) - Number(b.value)\n : a.description.localeCompare(b.description, 'sv')\n );\n return {\n ...selection,\n options,\n };\n })\n .sort((a, b) => a.SELECTION_ORDER - b.SELECTION_ORDER)\n );\n // eslint-disable-next-line\n }, [selectedSituation, situations]);\n\n // Get menu selections if selectedValues changes\n // Also get report\n useEffect(() => {\n if (!selectedSituation) return;\n setDisableMenuselection(true);\n let filter;\n\n if (selectedValues.length > 0) {\n filter = selectedValues.map(selectedValue => {\n const s = selectedValue.values.reduce((acc, curr) => {\n return `${\n selectedValue.selection_datatype === 'N'\n ? curr.value\n : `'${curr.value}'`\n }${acc ? `, ${acc}` : ''}`;\n }, null);\n\n return `${selectedValue.sel_var} in (${s})`;\n });\n }\n\n const request = {\n Forbund: forbund,\n Dsl1: selectedSituation.DSL1,\n Dsl2: selectedSituation.DSL2,\n Year: selectedSituation.year,\n filter,\n };\n\n ApiService.getMenuselections(request, token)\n .then(data => {\n const selVars = selectionList.map(selection => selection.sel_var);\n const filters = data\n .filter(obj => selVars.includes(obj.sel_var))\n .reduce((acc, curr) => {\n acc[curr.sel_var] = [...(acc[curr.sel_var] || []), curr];\n return acc;\n }, {});\n\n const filterObjects = Object.values(filters).map(obj => ({\n // TODO: Se över om datamodellen ska ändras\n // Då slipper man göra följande map\n options: obj\n .map(o => {\n const newObj = o;\n newObj.description = newObj.desc;\n return newObj;\n })\n // Rensar tomma värden, dom som heter Okänd/Inget värde.\n .filter(opt => !isEmpty(opt.value)),\n SELECTION_TEXT: obj[0].SELECTION_TEXT,\n sel_var: obj[0].sel_var,\n SELECTION_ORDER: obj[0].SELECTION_ORDER,\n SELECTION_DATATYPE: obj[0].SELECTION_DATATYPE,\n }));\n\n setSelectionList(prevState => {\n return prevState.map(prevItem => {\n const matchingItem = filterObjects.find(\n filterItem => filterItem.sel_var === prevItem.sel_var\n );\n if (matchingItem) {\n matchingItem.id = prevItem.id;\n matchingItem.isActive = prevItem.isActive;\n matchingItem.sortOptionsByNumber = prevItem.sortOptionsByNumber;\n matchingItem.options = matchingItem.options.sort((a, b) =>\n matchingItem.sortOptionsByNumber\n ? Number(a.value) - Number(b.value)\n : a.description.localeCompare(b.description, 'sv')\n );\n return matchingItem;\n }\n return prevItem;\n });\n });\n })\n .catch(error => handleError(error))\n .finally(() => setDisableMenuselection(false));\n\n ApiService.getReport(request, token)\n .then(data => {\n // TODO: Bättre felhantering.\n // Kolla igenom resultatdata och se om vi har något att visa.\n const { lon_p10, lon_p90, lon_medel } = data[0];\n if (\n data.length === 0 ||\n [lon_p10, lon_p90, lon_medel].some(item => item == null)\n ) {\n setHasErrors(true);\n setSalaryLimit([]);\n setSalaryData(null);\n } else {\n setHasErrors(false);\n setSalaryLimit([data[0].lon_p10, data[0].lon_p90]);\n setSalaryData(data[0]);\n }\n })\n // See if token is about to expire and keep the session alive\n .then(() => autoRefreshToken(token))\n .catch(error => handleError(error))\n .finally(() => setIsLoadingReport(false));\n // eslint-disable-next-line\n }, [selectedValues]);\n\n // Get total respondents and report for selected situation\n useEffect(() => {\n if (selectedSituation) {\n const request = {\n forbund: [user.forbund],\n year: selectedSituation.year,\n dsl1: selectedSituation.DSL1,\n dsl2: selectedSituation.DSL2,\n };\n\n ApiService.getFds(request, token).then(data => {\n setDataSources(data);\n const total = data.reduce((a, b) => a + b.total, 0);\n setTotalRespondents(total);\n setCurrentRespondents(total);\n });\n\n if (user == null) return;\n const linkRequest = [\n {\n groupId: 'level2link',\n },\n ];\n ApiService.getTexts(linkRequest, token).then(data => setLinks(data));\n }\n // eslint-disable-next-line\n }, [selectedSituation]);\n\n // Set current respondents when selectedValues changes\n // TODO: Refactor this code\n useEffect(() => {\n if (selectedValues.length > 0) {\n const { values, sel_var } = selectedValues[selectedValues.length - 1];\n const matchingItem = selectionList.find(\n selection => selection.sel_var === sel_var\n );\n const listOfValues = values.map(val => val.value);\n const actualValues = matchingItem.options.filter(val =>\n listOfValues.includes(val.value)\n );\n const current = actualValues.reduce((a, b) => {\n const low = numberOfRespondents(b.antal)[0];\n const high = numberOfRespondents(b.antal)[1];\n const diff = (high - low) / 2;\n\n if (Number(low) && Number(high)) {\n return a + low + diff;\n }\n\n return a;\n }, 0);\n setCurrentRespondents(current);\n } else {\n setCurrentRespondents(totalRespondents);\n }\n }, [selectionList, selectedValues, totalRespondents]);\n\n // Initial setup.\n useEffect(() => {\n ApiService.getSituations(token)\n .then(data => {\n const activeSituations = data.filter(d => d.isActive);\n setSituations(activeSituations);\n if (activeSituations.length === 1) {\n setSelectedSituation({\n index: 0,\n DSL1: activeSituations[0].DSL1,\n DSL2: activeSituations[0].DSL2,\n year: activeSituations[0].year,\n });\n }\n })\n .catch(error => handleError(error));\n\n window.scrollTo(0, 0);\n // eslint-disable-next-line\n }, []);\n\n return (\n
    \n
    \n \n \n
    \n \n
    \n
    \n {situations ? (\n <>\n {situations.length > 1 && (\n \n )}\n \n ) : (\n
    \n \n
    \n )}\n\n {selectedSituation && (\n <>\n {totalRespondents > 0 && currentRespondents > 0 ? (\n \n ) : (\n
    \n \n
    \n )}\n \n )}\n\n {salaryData &&\n !hasErrors &&\n totalRespondents > 0 &&\n currentRespondents > 0 && (\n <>\n {!hasErrors && (\n
    \n {isLoadingReport && (\n
    \n \n
    \n )}\n {!isLoadingReport && salaryData && (\n <>\n
    \n \n
    \n \n \n )}\n
    \n )}\n \n )}\n {hasErrors && (\n <>\n
    \n Urvalet gav inga resultat, testa sök bredare.\n
    \n \n )}\n
    \n
    \n
    \n );\n};\n\nexport default PageSimple;\n","import React from 'react';\nimport styles from './SellingPoints.module.css';\n\nconst SellingPoints = () => {\n return (\n
    \n
    \n

    Bli medlem för statistik i toppklass

    \n

    \n För att kunna föra en bra lönediskussion måste man kunna lita på sina\n argument. Då behöver man högkvalitativ lönestatistik att luta sig mot.\n Det får du med Saco lönesök, som bygger på löneuppgifter från över 370\n 000 akademiker.\n

    \n

    \n I Saco lönesök kan du kan göra lönejämförelser för att se hur\n ingångslönerna eller löneutvecklingen ser ut, både för din egen\n utbildning, ditt yrke och/eller för andra yrkesgrupper. Du kan också\n bryta ner statistiken på olika åldersgrupper, examensår, befattningar,\n regioner och arbetsmarknadssektorer.\n

    \n

    Som medlem får du tillgång till:

    \n
      \n
    • Branschspecifik lönestatistik från arbetsgivare och medlemmar
    • \n
    • Möjlighet till analys i två nivåer
    • \n
        \n
      • Enkel
      • \n
      • Avancerad
      • \n
      \n
    • Möjlighet att spara dina resultat
    • \n
    \n
    \n
    \n );\n};\n\nexport default SellingPoints;\n","import React from 'react';\nimport styles from './Welcome.module.css';\n\nconst Welcome = () => {\n return (\n
    \n

    Välkommen!

    \n

    \n Har du koll på ditt löneläge? Med Saco lönesök får du tillgång till\n Sveriges bästa lönestatistik för akademiker. Saco lönesök är flexibelt\n och ger dig stora möjligheter att anpassa lönestatistik utifrån ditt\n unika behov. Använd Saco lönesök inför ditt lönesamtal, innan du tackar\n ja till ett nytt jobb och när du funderar på att byta bransch, roll\n eller yrke. Lönestatistik är ditt främsta verktyg i löneförhandlingen.\n

    \n

    \n Nedan kan du göra en grov uppskattning av ditt löneläge. För att få\n tillgång till hela Saco lönesök behöver du vara medlem i ett\n Sacoförbund.\n

    \n
    \n );\n};\n\nexport default Welcome;\n","/* eslint-disable camelcase */\nimport React, { useState, useEffect, useCallback } from 'react';\nimport { Child } from 'pym.js';\nimport SalaryAnalysis from 'components/simple/salaryanalysis/SalaryAnalysis';\nimport Situation from 'components/simple/situation/Situation';\nimport SalarySlider from 'components/simple/salaryslider/SalarySlider';\nimport SalaryProfile from 'components/simple/salaryprofile/SalaryProfile';\nimport Loader from 'atoms/loader/Loader';\nimport ApiService from 'services/ApiService';\nimport SellingPoints from 'components/simple/sellingpoints/SellingPoints';\nimport ExternalLink from 'components/simple/externallink/ExternalLink';\nimport Welcome from 'components/simple/welcome/Welcome';\nimport isEmpty from 'lib/emptyValues';\nimport { useAuth } from 'services/UseAuth';\nimport { useHistory } from 'react-router-dom';\nimport styles from './PageSimple.module.css';\n\nconst PageSimpleFree = () => {\n const [selectionList, setSelectionList] = useState([]);\n const [selectedSalary, setSelectedSalary] = useState();\n\n const [selectedValues, setSelectedValues] = useState([]);\n const [selectedSituation, setSelectedSituation] = useState();\n const [situations, setSituations] = useState();\n\n const [salaryData, setSalaryData] = useState();\n const [salaryLimit, setSalaryLimit] = useState([]);\n const [hasErrors, setHasErrors] = useState(false);\n const [isLoadingReport, setIsLoadingReport] = useState(false);\n\n const [links, setLinks] = useState([]);\n\n const [disableMenuselection, setDisableMenuselection] = useState(false);\n\n const [, setState] = useState();\n\n const { signout } = useAuth();\n const history = useHistory();\n\n // TODO: Handle network errors\n const handleError = useCallback(\n error => {\n if (error.status === 401) {\n signout();\n history.push('/logga-ut');\n } else {\n setState(() => {\n throw error;\n });\n }\n },\n [signout, history]\n );\n\n // This page is included as an iframe\n useEffect(() => {\n let pymChild = new Child({ polling: 1000 });\n pymChild.sendHeight();\n\n return () => {\n pymChild = null;\n };\n }, []);\n\n useEffect(() => {\n if (!selectedSituation) return;\n\n // FIXME: Borde nollställa variabler som beror på val.\n setSelectedValues([]);\n setSalaryData(null);\n setSelectionList(\n situations[selectedSituation.index].selections\n .filter(selection => selection.isActive)\n .map(selection => ({\n ...selection,\n // filter out \"empty\" options initially\n options: selection.options.filter(opt => !isEmpty(opt.value)),\n }))\n .sort((a, b) => a.SELECTION_ORDER - b.SELECTION_ORDER)\n );\n }, [selectedSituation, situations]);\n\n // Get menu selections if selectedValues changes\n // Also get report\n useEffect(() => {\n if (!selectedSituation) return;\n setDisableMenuselection(true);\n let filter;\n\n if (selectedValues.length > 0) {\n filter = selectedValues.map(selectedValue => {\n const s = selectedValue.values.reduce((acc, curr) => {\n return `${\n selectedValue.selection_datatype === 'N'\n ? curr.value\n : `'${curr.value}'`\n }${acc ? `, ${acc}` : ''}`;\n }, null);\n\n return `${selectedValue.sel_var} in (${s})`;\n });\n }\n\n const request = {\n Dsl1: selectedSituation.DSL1,\n Dsl2: selectedSituation.DSL2,\n Year: selectedSituation.year,\n filter,\n };\n\n ApiService.getMenuselectionsFree(request)\n .then(data => {\n const selVars = selectionList.map(selection => selection.sel_var);\n const filters = data\n .filter(obj => selVars.includes(obj.sel_var))\n .reduce((acc, curr) => {\n acc[curr.sel_var] = [...(acc[curr.sel_var] || []), curr];\n return acc;\n }, {});\n\n const filterObjects = Object.values(filters).map(obj => ({\n // TODO: Se över om datamodellen ska ändras\n // Då slipper man göra följande map\n options: obj\n .map(o => {\n const newObj = o;\n newObj.description = newObj.desc;\n return newObj;\n })\n // Rensar tomma värden, dom som heter Okänd/Inget värde.\n .filter(opt => !isEmpty(opt.value)),\n SELECTION_TEXT: obj[0].SELECTION_TEXT,\n sel_var: obj[0].sel_var,\n SELECTION_ORDER: obj[0].SELECTION_ORDER,\n SELECTION_DATATYPE: obj[0].SELECTION_DATATYPE,\n }));\n\n setSelectionList(prevState => {\n return prevState.map(prevItem => {\n const matchingItem = filterObjects.find(\n filterItem => filterItem.sel_var === prevItem.sel_var\n );\n if (matchingItem) {\n matchingItem.id = prevItem.id;\n matchingItem.isActive = prevItem.isActive;\n return matchingItem;\n }\n return prevState;\n });\n });\n })\n .catch(error => handleError(error))\n .finally(() => setDisableMenuselection(false));\n\n ApiService.getReportFree(request)\n .then(data => {\n // TODO: Bättre felhantering.\n // Kolla igenom resultatdata och se om vi har något att visa.\n const { lon_p10, lon_p90, lon_medel } = data[0];\n if (\n data.length === 0 ||\n [lon_p10, lon_p90, lon_medel].some(item => item == null)\n ) {\n setHasErrors(true);\n setSalaryLimit([]);\n setSalaryData(null);\n } else {\n setHasErrors(false);\n setSalaryLimit([data[0].lon_p10, data[0].lon_p90]);\n setSalaryData(data[0]);\n }\n })\n .catch(error => handleError(error))\n .finally(() => setIsLoadingReport(false));\n // eslint-disable-next-line\n }, [handleError, selectedValues]);\n\n // Initial setup (situations and links).\n useEffect(() => {\n ApiService.getSituationsFree()\n .then(data => {\n const activeSituations = data.filter(d => d.isActive);\n setSituations(activeSituations);\n if (activeSituations.length === 1) {\n setSelectedSituation({\n index: 0,\n DSL1: activeSituations[0].DSL1,\n DSL2: activeSituations[0].DSL2,\n year: activeSituations[0].year,\n });\n }\n })\n .catch(error => handleError(error));\n const linkRequest = [\n {\n groupId: 'level1link',\n },\n ];\n ApiService.getTexts(linkRequest).then(data => setLinks(data));\n }, [handleError]);\n\n return (\n
    \n
    \n {/*
    \n \n
    */}\n
    \n \n {situations ? (\n <>\n {situations.length > 1 && (\n \n )}\n \n ) : (\n
    \n \n
    \n )}\n\n {selectedSituation && (\n \n )}\n\n {salaryData && !hasErrors && (\n <>\n {!hasErrors && (\n
    \n {isLoadingReport && (\n
    \n \n
    \n )}\n {!isLoadingReport && salaryData && (\n <>\n
    \n \n
    \n \n \n )}\n
    \n )}\n \n )}\n {hasErrors && (\n <>\n
    \n Urvalet gav inga resultat, testa sök bredare.\n
    \n \n )}\n
    \n \n {links[0] &&\n links.map(({ header, id, value }) => (\n \n ))}\n
    \n
    \n );\n};\n\nexport default PageSimpleFree;\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport ButtonLink from 'atoms/buttonlink/ButtonLink';\nimport { useAuth } from 'services/UseAuth';\nimport ApiService from 'services/ApiService';\nimport { useHistory } from 'react-router-dom';\nimport downloadExcel from 'lib/excel';\nimport styles from './DownloadExcel.module.css';\n\nconst DownloadExcel = ({ \n selectedPresentation, \n tableData, \n activeFilters, \n activeDataSource, \n dataSources, \n measureVar\n}) => {\n // TODO: Accept null for fields?\n // Would reflect the actual table html better\n const { DSL1_DESC, DSL2_DESC, FORBUND, YEAR } = activeDataSource && dataSources.find(\n source =>\n source.FORBUND === activeDataSource.forbund &&\n source.DSL1 === activeDataSource.dsl1 &&\n source.DSL2 === activeDataSource.dsl2 &&\n source.YEAR === activeDataSource.year\n );\n\n const request = {\n breakby1Header: selectedPresentation[0]\n ? selectedPresentation[0]?.REPORT_TEXT\n : null,\n breakby2Header: selectedPresentation[1]\n ? selectedPresentation[1]?.REPORT_TEXT\n : null,\n lonereport: tableData\n .sort((row1, row2) => row2._TYPE_ - row1._TYPE_) // eslint-disable-line no-underscore-dangle\n .map(row => row._TYPE_ === 0 ? {...row, breakby1: \"Samtliga\"} : row), // eslint-disable-line no-underscore-dangle\n\n dataSource: {\n forbund: FORBUND,\n dsl1: DSL1_DESC,\n dsl2: DSL2_DESC,\n year: YEAR\n },\n filters: activeFilters.map(f => { return {name: f.name, values: f.values.map(x => x.desc)}}),\n measureVar\n }\n const isData = request.lonereport.length > 0;\n\n const [, setState] = useState();\n\n const { user, signout } = useAuth();\n\n const history = useHistory();\n\n // TODO: Better error handling?\n const handleError = error => {\n if (error.status === 401) {\n signout();\n history.push('/logga-ut');\n } else {\n setState(() => {\n throw error;\n });\n }\n };\n\n return (\n {\n downloadExcel(\n 'Report',\n ApiService.getReportExcel,\n handleError,\n request,\n user.token\n );\n }}\n />\n );\n};\n\nDownloadExcel.propTypes = {\n selectedPresentation: PropTypes.arrayOf(Object),\n tableData: PropTypes.arrayOf(Object),\n activeDataSource: PropTypes.shape({\n forbund: PropTypes.string,\n dsl1: PropTypes.string,\n dsl2: PropTypes.string,\n year: PropTypes.number,\n }),\n dataSources: PropTypes.arrayOf(Object),\n activeFilters: PropTypes.arrayOf(Object),\n measureVar: PropTypes.string.isRequired\n};\n\nDownloadExcel.defaultProps = {\n selectedPresentation: null,\n tableData: [],\n dataSources: [],\n activeDataSource: {},\n activeFilters: [],\n};\n\nexport default DownloadExcel;\n","export default function downloadExcel(\n name,\n endpoint,\n errorFunction,\n payload,\n token\n) {\n // TODO: Access response headers and read fileName from there\n const fileName = `${name}_${new Date().toLocaleDateString('sv')}.xlsx`;\n\n // Download excel file\n endpoint(payload, token)\n .then(res => res.blob())\n .then(blob => {\n const url = window.URL.createObjectURL(blob);\n const a = document.createElement('a');\n a.href = url;\n a.download = fileName;\n document.body.appendChild(a); // we need to append the element to the dom -> otherwise it will not work in firefox\n a.click();\n a.remove(); // afterwards we remove the element again\n })\n .catch(error => errorFunction(error));\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport ButtonLink from 'atoms/buttonlink/ButtonLink';\nimport useVisible from 'hooks/useVisible';\nimport styles from './DownloadSection.module.css';\nimport DownloadExcel from './downloadexcel/DownloadExcel';\n\nconst DownloadSection = ({\n selectedPresentation,\n tableData,\n activeDataSource,\n activeFilters,\n dataSources,\n measureVar,\n}) => {\n const {\n ref,\n isVisible: showOptions,\n setIsVisible: setShowOptions,\n } = useVisible(false);\n\n return (\n
    \n setShowOptions(!showOptions)}\n />\n {showOptions && (\n
    \n window.print()}\n />\n \n
    \n )}\n
    \n );\n};\n\nDownloadSection.propTypes = {\n selectedPresentation: PropTypes.arrayOf(Object),\n tableData: PropTypes.arrayOf(Object),\n activeDataSource: PropTypes.shape({\n forbund: PropTypes.string,\n dsl1: PropTypes.string,\n dsl2: PropTypes.string,\n year: PropTypes.number,\n }).isRequired,\n dataSources: PropTypes.arrayOf(Object),\n activeFilters: PropTypes.arrayOf(Object),\n measureVar: PropTypes.string.isRequired,\n};\n\nDownloadSection.defaultProps = {\n tableData: [],\n selectedPresentation: null,\n dataSources: [],\n activeFilters: [],\n};\n\nexport default DownloadSection;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Breadcrumbs from 'atoms/breadcrumbs/Breadcrumbs';\nimport styles from './ToolBar.module.css';\nimport DownloadSection from './downloadsection/DownloadSection';\n\nconst ToolBar = ({\n selectedPresentation,\n tableData,\n activeFilters,\n activeDataSource,\n dataSources,\n measureVar,\n}) => {\n return (\n
    \n
    \n \n
    \n
    \n
    \n \n
    \n
    \n
    \n );\n};\n\nToolBar.propTypes = {\n selectedPresentation: PropTypes.arrayOf(Object),\n tableData: PropTypes.arrayOf(Object),\n activeDataSource: PropTypes.shape({\n forbund: PropTypes.string,\n dsl1: PropTypes.string,\n dsl2: PropTypes.string,\n year: PropTypes.number,\n }),\n dataSources: PropTypes.arrayOf(Object),\n activeFilters: PropTypes.arrayOf(Object),\n measureVar: PropTypes.string.isRequired,\n};\n\nToolBar.defaultProps = {\n selectedPresentation: null,\n tableData: [],\n dataSources: [],\n activeDataSource: {},\n activeFilters: [],\n};\n\nexport default ToolBar;\n","/* eslint-disable camelcase */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport Checkbox from 'atoms/checkbox/Checkbox';\nimport styles from './FilterItem.module.css';\n\nconst FilterItem = ({\n activeFilters,\n disableMenuselection,\n handleSelectedFilters,\n listItem,\n}) => {\n return (\n
    \n {listItem.list.map(item => {\n const { sel_var, value, selectable, antal } = item;\n return (\n activeFilter.sel_var === sel_var)\n .some(activeFilter =>\n activeFilter.values.some(\n filterValue => filterValue.value === value\n )\n )}\n disabled={disableMenuselection || !selectable || antal === ' < 5'}\n item={item}\n key={sel_var + value}\n onChange={() => handleSelectedFilters(item)}\n variant=\"secondary\"\n className={antal === ' < 5' ? styles.greyed : ''}\n />\n );\n })}\n
    \n );\n};\n\nFilterItem.propTypes = {\n activeFilters: PropTypes.arrayOf(Object).isRequired,\n disableMenuselection: PropTypes.bool.isRequired,\n handleSelectedFilters: PropTypes.func.isRequired,\n listItem: PropTypes.shape({\n list: PropTypes.arrayOf(\n PropTypes.shape({\n sel_var: PropTypes.string,\n value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n selectable: PropTypes.bool,\n antal: PropTypes.string,\n })\n ),\n }).isRequired,\n};\n\nexport default FilterItem;\n","import Accordion from 'atoms/accordion/Accordion';\nimport ButtonLink from 'atoms/buttonlink/ButtonLink';\nimport PropTypes from 'prop-types';\nimport React, { useState } from 'react';\nimport FilterItem from './filteritem/FilterItem';\nimport styles from './FilterList.module.css';\n\nconst FILTER_LIMIT = 4;\n\nconst FilterList = ({\n filterList,\n activeFilters,\n setActiveFilters,\n disableMenuselection,\n}) => {\n const [showAllFilters, setShowAllFilters] = useState(false);\n\n // FIXME: Borde lösa snyggare.\n // TODO: Behöver tillgång till namn på filter och namn på option.\n // TODO: Fixa datamodell överallt.\n const handleSelectedFilters = filterOption => {\n const index = activeFilters.findIndex(\n activeFilter => activeFilter.sel_var === filterOption.sel_var\n );\n\n const item = activeFilters[index];\n\n let newItem;\n\n if (item == null) {\n newItem = {\n name: filterOption.name,\n sel_var: filterOption.sel_var,\n selection_datatype: filterOption.SELECTION_DATATYPE,\n values: [\n {\n value: filterOption.value,\n desc: filterOption.description,\n antal: filterOption.antal,\n },\n ],\n };\n } else if (item.values.some(obj => obj.value === filterOption.value)) {\n newItem = {\n name: filterOption.name,\n sel_var: filterOption.sel_var,\n selection_datatype: filterOption.SELECTION_DATATYPE,\n values: item.values.filter(opt => opt.value !== filterOption.value),\n };\n } else {\n newItem = item;\n newItem.values.push({\n value: filterOption.value,\n desc: filterOption.description,\n antal: filterOption.antal,\n });\n }\n\n if (item) {\n setActiveFilters(prevState => {\n const tempState = [...prevState];\n tempState[index] = newItem;\n return tempState.filter(element => element.values.length > 0);\n });\n return;\n }\n\n setActiveFilters(prevState => [\n ...prevState.filter(prev => prev.sel_var !== newItem.sel_var),\n newItem,\n ]);\n };\n\n // TODO: Kanske bara borde visa alla filter som default och fixa scrollen istället?\n return (\n 0 ? styles.hasItems : ''\n }`}\n >\n
    \n
    \n {filterList.length > 0 &&\n filterList\n .slice(0, showAllFilters ? filterList.length : FILTER_LIMIT)\n .map(listItem => (\n option.antal !== ' < 5')\n ? ''\n : styles.mobileEmpty\n }\n >\n \n \n ))}\n
    \n
    \n {!showAllFilters && filterList.length > FILTER_LIMIT ? (\n
    \n setShowAllFilters(true)}\n />\n
    \n ) : (\n
    \n setShowAllFilters(false)}\n />\n
    \n )}\n
    \n );\n};\n\nFilterList.propTypes = {\n filterList: PropTypes.arrayOf(Object).isRequired,\n activeFilters: PropTypes.arrayOf(Object).isRequired,\n setActiveFilters: PropTypes.func.isRequired,\n disableMenuselection: PropTypes.bool.isRequired,\n};\n\nexport default FilterList;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { IconFilter } from 'tabler-icons';\nimport ButtonLink from 'atoms/buttonlink/ButtonLink';\nimport styles from './Filters.module.css';\nimport FilterList from './filterlist/FilterList';\n\nconst Filters = ({\n filterList,\n activeFilters,\n setActiveFilters,\n disableMenuselection,\n}) => {\n return (\n
    \n
    \n
    \n

    \n \n Filter\n

    \n
    \n
    \n setActiveFilters([])}\n />\n
    \n
    \n \n
    \n );\n};\n\nFilters.propTypes = {\n filterList: PropTypes.arrayOf(Object).isRequired,\n activeFilters: PropTypes.arrayOf(Object).isRequired,\n setActiveFilters: PropTypes.func.isRequired,\n disableMenuselection: PropTypes.bool.isRequired,\n};\n\nexport default Filters;\n","import Loader from 'atoms/loader/Loader';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport styles from './Select.module.css';\n\nfunction Select({\n defaultValue,\n disabled,\n loading,\n variant,\n label,\n id,\n onChange,\n options,\n value,\n compact,\n marginBottom,\n shaded,\n}) {\n const filteredOptions = value\n ? options.filter(opt => opt.value !== null)\n : options;\n\n return (\n \n {loading && (\n
    \n \n
    \n )}\n {label && (\n \n {`${label}:`}\n \n )}\n
    \n \n {filteredOptions.map(\n ({ desc, key, value: optionValue, disabled: optionDisabled }) => (\n \n )\n )}\n \n
    \n
    \n );\n}\n\nSelect.propTypes = {\n defaultValue: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n disabled: PropTypes.bool,\n loading: PropTypes.bool,\n compact: PropTypes.bool,\n marginBottom: PropTypes.bool,\n shaded: PropTypes.bool,\n id: PropTypes.string.isRequired,\n label: PropTypes.string,\n variant: PropTypes.oneOf(['primary', 'secondary']),\n onChange: PropTypes.func,\n options: PropTypes.arrayOf(Object).isRequired,\n value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n};\n\nSelect.defaultProps = {\n defaultValue: undefined,\n disabled: false,\n loading: false,\n compact: false,\n marginBottom: false,\n shaded: false,\n label: '',\n variant: 'primary',\n onChange: () => { },\n value: undefined,\n};\n\nexport default Select;\n","import React, { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport styles from './DataSourceSummary.module.css';\nimport { useAuth } from '../../../../services/UseAuth';\nimport ApiService from '../../../../services/ApiService';\n\nconst DataSourceSummary = ({\n activeDataSource,\n availableDSL1,\n availableDSL2,\n}) => {\n const { year, dsl1, dsl2, forbund } = activeDataSource;\n const [forbundName, setForbundName] = useState('samtliga Sacoförbund');\n const {\n user: { token },\n } = useAuth();\n\n useEffect(() => {\n ApiService.getUnion(token).then(res => setForbundName(res.name));\n }, []);\n\n const dslToString = (dsl, availableDsl) => {\n return availableDsl.find(item => item.dsl === dsl)?.desc;\n };\n\n return (\n <>\n

    \n {`Du tittar på statistik från ${year} från ${\n forbund === 'SA' ? 'samtliga Sacoförbund' : forbundName\n }.`}\n {!!availableDSL1.length && (\n \n {` Statistiken baseras på ${dslToString(dsl1, availableDSL1)}`}\n {!!availableDSL2.length && ` - ${dslToString(dsl2, availableDSL2)}`}\n .\n \n )}\n

    \n \n );\n};\n\nDataSourceSummary.propTypes = {\n activeDataSource: PropTypes.shape({\n year: PropTypes.number,\n dsl1: PropTypes.string,\n dsl2: PropTypes.string,\n }).isRequired,\n availableDSL1: PropTypes.arrayOf(Object),\n availableDSL2: PropTypes.arrayOf(Object),\n};\n\nDataSourceSummary.defaultProps = {\n availableDSL1: [],\n availableDSL2: [],\n};\n\nexport default DataSourceSummary;\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { useHistory } from 'react-router-dom';\nimport { IconDatabase } from 'tabler-icons';\nimport Select from 'atoms/select/Select';\nimport { useAuth } from 'services/UseAuth';\nimport styles from './DataSource.module.css';\nimport DataSourceSummary from './datasourcesummary/DataSourceSummary';\n\nconst DataSource = ({\n activeDataSource,\n dataSources,\n defaultYearFromDeepAnalysis,\n defaultYearToDeepAnalysis,\n disableMenuselection,\n setActiveDataSource,\n}) => {\n const history = useHistory();\n\n const [forbund, setForbund] = useState(activeDataSource.forbund);\n const [availableYears, setAvailableYears] = useState([]);\n const [availableForbund, setAvailableForbund] = useState([]);\n const [availableDSL1, setAvailableDSL1] = useState([]);\n const [availableDSL2, setAvailableDSL2] = useState([]);\n\n const { user } = useAuth();\n const { role } = user;\n\n const yearRange =\n defaultYearFromDeepAnalysis !== 0 &&\n defaultYearFromDeepAnalysis !== null &&\n defaultYearToDeepAnalysis - defaultYearFromDeepAnalysis > 1;\n\n const getAvailableSources = (source, rules) =>\n source.filter(item =>\n rules.every(({ property, expression }) => expression(item[property]))\n );\n\n const findSource = (source, rules) =>\n source.find(item =>\n rules.every(({ property, expression }) => expression(item[property]))\n );\n\n const inRange = (x, min, max) => (x - min) * (x - max) <= 0;\n\n const getYear = p => {\n const from = defaultYearFromDeepAnalysis;\n const to = defaultYearToDeepAnalysis;\n\n // defaultYearFromDeepAnalysis might be null, it might also be 0 in some cases\n const fromConfigured = from !== null && from !== 0;\n\n if (role === 'medlem' && fromConfigured && from !== to) {\n return inRange(p, from, to);\n }\n\n // If defaultYearFromDeepAnalysis is not configured members has to have the option\n // to search one year back in time, out of the configured range\n if (role === 'medlem') {\n return inRange(p, to - 1, to);\n }\n\n return p === activeDataSource.year;\n };\n\n // This function uses the findSource function recursively with a list of rules.\n // If the findSource function don't return a result for all of the defined rules\n // the function will try again with all rules except the last one.\n const sequentiallyFindSource = (arr, rules) => {\n let result;\n\n for (let i = 0; i < rules.length; i += 1) {\n result = findSource(arr, rules);\n if (!result) {\n rules.pop();\n }\n if (result) {\n break;\n }\n }\n\n // If no result, find the first source with the \"DEFAULT\" property set to 1\n if (!result) {\n result = findSource(arr, [\n { property: 'DEFAULT', expression: p => p === 1 },\n ]);\n }\n\n // If there's no default source configured, choose the first object in the array\n if (!result) [result] = arr;\n return result;\n };\n\n const setSource = source =>\n setActiveDataSource({\n forbund: source.FORBUND,\n dsl1: source.DSL1,\n dsl2: source.DSL2,\n measureVar: source.measure_var,\n year: source.YEAR,\n });\n\n const handleChange = (value, type) => {\n const previousDatasource = { ...activeDataSource };\n\n if (type === 'year') {\n const availableSources = getAvailableSources(dataSources, [\n { property: 'YEAR', expression: p => p === Number(value) },\n ]);\n\n const newSource = sequentiallyFindSource(availableSources, [\n { property: 'DSL1', expression: p => p === previousDatasource.dsl1 },\n {\n property: 'FORBUND',\n expression: p => p === previousDatasource.forbund,\n },\n { property: 'DSL2', expression: p => p === previousDatasource.dsl2 },\n ]);\n\n setSource(newSource);\n }\n\n // Helps members load the newest available source\n // Prevents 400-errors from lonereport endpoint\n // We're not sure if the 'SA'-union is configured the same way as the current union\n if (type === 'forbund') {\n // Two commented rules below caused errors. It tries to find sources that are\n // same as the chosen ones, which breaks if user changes datasource and there\n // aren't available sources from ex. same year or with the same dsl1.\n // Now it takes what it can get when forbund changes.\n const availableSources = getAvailableSources(dataSources, [\n { property: 'FORBUND', expression: p => p === value },\n // { property: 'YEAR', expression: p => getYear(p) },\n // { property: 'DSL1', expression: p => p === activeDataSource.dsl1 },\n ]).sort((a, b) => b?.YEAR - a?.YEAR);\n\n const newSource = sequentiallyFindSource(availableSources, [\n { property: 'DSL1', expression: p => p === previousDatasource.dsl1 },\n { property: 'DSL2', expression: p => p === previousDatasource.dsl2 },\n ]);\n\n setSource(newSource);\n setForbund(value);\n }\n\n if (type === 'dsl1') {\n const availableSources = getAvailableSources(dataSources, [\n {\n property: 'FORBUND',\n expression: p => p === activeDataSource.forbund,\n },\n { property: 'DSL1', expression: p => p === value },\n {\n property: 'YEAR',\n expression: p => getYear(p),\n },\n ]).sort((a, b) => {\n if (\n a.YEAR === activeDataSource.year &&\n b.YEAR !== activeDataSource.year\n ) {\n return -1;\n }\n if (\n a.YEAR !== activeDataSource.year &&\n b.YEAR === activeDataSource.year\n ) {\n return 1;\n }\n return b?.YEAR - a?.YEAR;\n });\n\n const newSource = sequentiallyFindSource(availableSources, [\n { property: 'YEAR', expression: p => p === previousDatasource.year },\n { property: 'DSL2', expression: p => p === previousDatasource.dsl2 },\n ]);\n\n setSource(newSource);\n }\n\n if (type === 'dsl2') {\n const availableSources = getAvailableSources(dataSources, [\n {\n property: 'FORBUND',\n expression: p => p === activeDataSource.forbund,\n },\n {\n property: 'YEAR',\n expression: p => getYear(p),\n },\n { property: 'DSL2', expression: p => p === value },\n ]).sort((a, b) => {\n if (\n a.YEAR === activeDataSource.year &&\n b.YEAR !== activeDataSource.year\n ) {\n return -1;\n }\n if (\n a.YEAR !== activeDataSource.year &&\n b.YEAR === activeDataSource.year\n ) {\n return 1;\n }\n return b?.YEAR - a?.YEAR;\n });\n\n let newSource;\n\n // Try an older source only if the user currently are viewing the default year\n // If not, the user should be redirected to the newest possible source\n if (role === 'medlem' && !yearRange) {\n newSource = sequentiallyFindSource(availableSources, [\n {\n property: 'YEAR',\n expression: p => {\n if (activeDataSource.year === defaultYearToDeepAnalysis) {\n return p >= defaultYearToDeepAnalysis - 1;\n }\n\n return p === defaultYearToDeepAnalysis;\n },\n },\n ]);\n } else {\n newSource = sequentiallyFindSource(availableSources, [\n {\n property: 'YEAR',\n expression: p => p === previousDatasource.year,\n },\n ]);\n }\n setSource(newSource);\n }\n };\n\n useEffect(() => {\n setAvailableForbund(\n dataSources.reduce((acc, curr) => {\n if (!acc.includes(curr.FORBUND)) acc.push(curr.FORBUND);\n return acc;\n }, [])\n );\n\n setAvailableYears(\n dataSources\n .filter(\n ds =>\n ds.DSL1 === activeDataSource.dsl1 &&\n ds.DSL2 === activeDataSource.dsl2\n )\n .reduce((acc, curr) => {\n if (!acc.includes(curr.YEAR)) acc.push(curr.YEAR);\n return acc;\n }, [])\n .filter(y => {\n if (\n role === 'medlem' &&\n defaultYearFromDeepAnalysis &&\n forbund !== 'SA'\n ) {\n return inRange(\n y,\n defaultYearFromDeepAnalysis,\n defaultYearToDeepAnalysis\n );\n }\n\n if (role === 'medlem') {\n return inRange(\n y,\n defaultYearToDeepAnalysis - 1,\n defaultYearToDeepAnalysis\n );\n }\n\n return y;\n })\n .sort()\n );\n }, [\n activeDataSource,\n role,\n dataSources,\n defaultYearFromDeepAnalysis,\n defaultYearToDeepAnalysis,\n forbund,\n ]);\n\n useEffect(() => {\n setAvailableDSL1(\n getAvailableSources(dataSources, [\n {\n property: 'FORBUND',\n expression: p => p === activeDataSource.forbund,\n },\n {\n property: 'YEAR',\n expression: p => getYear(p),\n },\n ])\n .map(ds => {\n return {\n dsl: ds.DSL1,\n desc: ds.DSL1_DESC,\n };\n })\n .reduce((acc, curr) => {\n if (!acc.some(a => a.dsl === curr.dsl)) acc.push(curr);\n return acc;\n }, [])\n );\n // eslint-disable-next-line\n }, [\n activeDataSource.year,\n activeDataSource.forbund,\n defaultYearFromDeepAnalysis,\n defaultYearToDeepAnalysis,\n role,\n ]);\n\n useEffect(() => {\n setAvailableDSL2(\n getAvailableSources(dataSources, [\n {\n property: 'FORBUND',\n expression: p => p === activeDataSource.forbund,\n },\n { property: 'DSL1', expression: p => p === activeDataSource.dsl1 },\n {\n property: 'YEAR',\n expression: p => getYear(p),\n },\n ])\n .sort((a, b) => b.YEAR - a.YEAR)\n .map(ds => {\n const lastYearsData = ds.YEAR !== activeDataSource.year;\n return {\n dsl: ds.DSL2,\n desc: lastYearsData ? `${ds.DSL2_DESC} - ${ds.YEAR}` : ds.DSL2_DESC,\n lastYearsData,\n };\n })\n .sort((a, b) => {\n // TODO: Do we need this?\n // if (activeDataSource.year < defaultYearToDeepAnalysis) {\n // return b.lastYearsData - a.lastYearsData;\n // }\n return a.lastYearsData - b.lastYearsData;\n })\n .reduce((acc, curr) => {\n if (!acc.some(a => a.dsl === curr.dsl)) acc.push(curr);\n return acc;\n }, [])\n .filter(a => a.desc !== 'Okänt')\n );\n // eslint-disable-next-line\n }, [\n activeDataSource.year,\n activeDataSource.dsl1,\n activeDataSource.forbund,\n defaultYearFromDeepAnalysis,\n defaultYearToDeepAnalysis,\n role,\n ]);\n\n const allAvailableYears = () =>\n availableYears.map(item => ({\n key: item,\n value: item,\n desc: item,\n }));\n\n // TODO: se över logiken, utför i backend och returnera en array med optionsen bara i ett API-kall\n const getYearOptions = () => {\n if (role === 'medlem') {\n if (activeDataSource.forbund === 'CF') {\n return allAvailableYears();\n }\n const latestAvailableYear = availableYears[availableYears.length - 1];\n\n return [\n {\n key: latestAvailableYear,\n value: latestAvailableYear,\n desc: latestAvailableYear,\n },\n ];\n }\n\n return allAvailableYears();\n };\n\n return (\n <>\n
    \n

    \n \n Statistikkällor\n

    \n \n
    \n handleChange(evt.target.value, 'forbund')}\n options={availableForbund.map(item => ({\n key: item,\n value: item,\n desc: item === 'SA' ? 'Samtliga Sacoförbund' : 'Mitt förbund',\n }))}\n value={activeDataSource.forbund}\n />\n
    \n
    \n handleChange(evt.target.value, 'dsl1')}\n options={availableDSL1.map(({ desc, dsl }) => ({\n key: dsl,\n value: dsl,\n desc,\n }))}\n value={activeDataSource.dsl1}\n />\n
    \n {availableDSL2.length > 0 && (\n
    \n handleChange(evt.target.value, 'dsl2')}\n options={availableDSL2.map(({ desc, dsl }) => ({\n key: dsl,\n value: dsl,\n desc,\n }))}\n value={activeDataSource.dsl2}\n />\n
    \n )}\n {/* Dont let users change year, unless there's an interval configured */}\n {/* That is: defaultYearFromDeepAnalysis can't be null, zero or just defaultYearToDeepAnalysis - 1 */}\n {(role !== 'medlem' || (role === 'medlem' && yearRange)) && (\n
    \n handleChange(evt.target.value, 'year')}\n value={activeDataSource.year.toString()}\n />\n
    \n )}\n history.push('#statistics')}\n >\n Läs om statistikkällorna\n \n
    \n
    \n \n
    \n \n );\n};\n\nDataSource.propTypes = {\n activeDataSource: PropTypes.shape({\n forbund: PropTypes.string.isRequired,\n dsl1: PropTypes.string.isRequired,\n dsl2: PropTypes.string.isRequired,\n measureVar: PropTypes.arrayOf(String).isRequired,\n year: PropTypes.number.isRequired,\n }).isRequired,\n dataSources: PropTypes.arrayOf(Object).isRequired,\n defaultYearFromDeepAnalysis: PropTypes.number,\n defaultYearToDeepAnalysis: PropTypes.number.isRequired,\n disableMenuselection: PropTypes.bool.isRequired,\n setActiveDataSource: PropTypes.func.isRequired,\n};\n\nDataSource.defaultProps = {\n defaultYearFromDeepAnalysis: null,\n};\n\nexport default DataSource;\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport Select from 'atoms/select/Select';\nimport styles from './Presentation.module.css';\n\nconst Presentation = ({\n allowCustomPresentation,\n presentationList,\n selectedPresentation,\n setCustomPresentation,\n setSelectedPresentation,\n fetchingData\n}) => {\n const [selectedBreakby, setSelectedBreakby] = useState();\n\n const handleSelectedPresentation = e => {\n if (e.target.value === 'custom') {\n setCustomPresentation(true);\n } else {\n setCustomPresentation(false);\n const matchingPresentation = presentationList.find(\n pres => pres.BREAKBY_VAR === e.target.value\n );\n setSelectedPresentation([matchingPresentation]);\n }\n\n setSelectedBreakby(e.target.value);\n };\n\n useEffect(() => {\n if (selectedPresentation.length === 1) {\n setSelectedBreakby(selectedPresentation[0].BREAKBY_VAR);\n }\n }, [selectedPresentation]);\n\n return (\n
    \n {presentationList.length > 0 && selectedBreakby && (\n handleSelectedPresentation(e)}\n options={[\n ...presentationList.map(({ BREAKBY_VAR, REPORT_TEXT }) => ({\n key: BREAKBY_VAR,\n value: BREAKBY_VAR,\n desc: REPORT_TEXT,\n })),\n ...(presentationList.length > 1 && allowCustomPresentation\n ? [\n {\n key: 'custom',\n value: 'custom',\n desc: 'Egen rapport',\n },\n ]\n : []),\n ]}\n value={selectedBreakby}\n />\n )}\n
    \n );\n};\n\nPresentation.propTypes = {\n allowCustomPresentation: PropTypes.bool.isRequired,\n presentationList: PropTypes.arrayOf(Object),\n selectedPresentation: PropTypes.arrayOf(Object),\n setCustomPresentation: PropTypes.func.isRequired,\n setSelectedPresentation: PropTypes.func.isRequired,\n};\n\nPresentation.defaultProps = {\n presentationList: [],\n selectedPresentation: [],\n};\n\nexport default Presentation;\n","/* eslint-disable camelcase, no-underscore-dangle, no-param-reassign */\n\nexport function debounce(func, timeout = 300) {\n let timer;\n return (...args) => {\n clearTimeout(timer);\n timer = setTimeout(() => {\n func.apply(this, args);\n }, timeout);\n };\n}\n\nexport function formatNumber(value) {\n if (!value) return '-';\n return value.toLocaleString('sv');\n}\n\nexport function formatAccessor(str) {\n return str && str.toLowerCase().replace(/\\s/g, '-').toLocaleString('en');\n}\n\nexport function generateCustomColumns(acc, curr, groupingCol) {\n if (!acc.find(item => item[groupingCol] === curr[groupingCol]))\n acc.push({ [groupingCol]: curr[groupingCol] });\n return acc;\n}\n\nexport function createOrSetObject({ acc, curr, prevObj, keys, id, totalind }) {\n if (prevObj) {\n keys.forEach(({ key, accessor }) => {\n prevObj[formatAccessor(accessor)] = curr[key];\n });\n\n return acc;\n }\n\n acc.push(\n Object.assign(\n {},\n {\n breakby1: id,\n _TYPE_: curr._TYPE_,\n totalind: totalind ? 'Y' : 'N',\n },\n ...keys.map(({ key, accessor }) => ({\n [formatAccessor(accessor)]: curr[key],\n }))\n )\n );\n\n return acc;\n}\n\nexport function generateCustomData(acc, curr) {\n const prevObj = acc.find(row => row.breakby1 === curr.breakby1);\n const totalRow = acc.find(row => row.breakby1 === formatAccessor('total'));\n\n // Hämta totalrad\n if (curr._TYPE_ === 0) {\n createOrSetObject({\n acc,\n curr,\n prevObj: totalRow,\n keys: [\n { key: 'antal', accessor: 'total-antal-samtliga' },\n { key: 'lon_medel', accessor: 'total-lon_medel-samtliga' },\n ],\n id: 'total',\n totalind: true,\n });\n }\n\n // Hämta samtliga-kolumner\n if (curr._TYPE_ === 1) {\n createOrSetObject({\n acc,\n curr,\n prevObj,\n keys: [\n { key: 'antal', accessor: 'antal-samtliga' },\n { key: 'lon_medel', accessor: 'lon_medel-samtliga' },\n ],\n id: curr.breakby1,\n totalind: false,\n });\n }\n\n // Hämta deltotalrader\n if (curr._TYPE_ === 2) {\n createOrSetObject({\n acc,\n curr,\n prevObj: totalRow,\n keys: [\n { key: 'antal', accessor: `total-antal-${curr.breakby2}` },\n { key: 'lon_medel', accessor: `total-lon_medel-${curr.breakby2}` },\n ],\n id: 'total',\n totalind: true,\n });\n }\n\n // Hämta vanliga rader\n if (curr._TYPE_ === 3) {\n createOrSetObject({\n acc,\n curr,\n prevObj,\n keys: [\n { key: 'antal', accessor: `antal-${curr.breakby2}` },\n { key: 'lon_medel', accessor: `lon_medel-${curr.breakby2}` },\n ],\n id: curr.breakby1,\n totalind: false,\n });\n }\n\n return acc;\n}\n\nexport function getTotalCol(arr, accessor) {\n return formatNumber(\n arr\n .filter(row => row.original.totalind === 'Y')\n .map(row => row.original[accessor])[0]\n );\n}\n\nexport function getWidth() {\n return (\n window.innerWidth ||\n document.documentElement.clientWidth ||\n document.body.clientWidth\n );\n}\n\nexport function isTotalRow(obj, customPresentation) {\n const { _TYPE_, totalind } = obj;\n if (customPresentation) {\n return totalind === 'Y' && _TYPE_ === 0;\n }\n return totalind === 'Y' && (_TYPE_ === 0 || _TYPE_ === 1);\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport styles from './TabRow.module.css';\n\nconst TabRow = ({ children, className }) => {\n return (\n
    {children}
    \n );\n};\n\nTabRow.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n ]).isRequired,\n className: PropTypes.string,\n};\n\nTabRow.defaultProps = {\n className: '',\n};\n\nexport default TabRow;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport styles from './Tab.module.css';\n\nconst Tab = ({ active, label, altText, onClick }) => {\n const computedAltText = altText && altText !== '' ? altText : label;\n return (\n \n {label}\n \n );\n};\n\nTab.propTypes = {\n active: PropTypes.bool.isRequired,\n label: PropTypes.string.isRequired,\n altText: PropTypes.string,\n onClick: PropTypes.func.isRequired,\n};\n\nTab.defaultProps = {\n altText: '',\n};\n\nexport default Tab;\n","/* eslint-disable react/jsx-props-no-spreading */\nimport React, { useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport { useTable } from 'react-table';\nimport TabRow from 'atoms/tabrow/TabRow';\nimport Tab from 'atoms/tab/Tab';\nimport { formatRespondents } from 'lib/antal';\nimport {\n formatAccessor,\n formatNumber,\n generateCustomColumns,\n generateCustomData,\n getTotalCol,\n isTotalRow,\n} from 'lib/salaryTable';\nimport styles from './SalaryTable.module.css';\n\nconst BREAKPOINT = 1024;\n\nconst SalaryTable = ({\n activeDataSource,\n measureVar,\n selectedPresentation,\n setMeasureVar,\n tableData,\n}) => {\n const customReport = selectedPresentation.length === 2;\n\n // Get a reference to the table\n const tableRef = ref => {\n if (!ref) return;\n const table = ref;\n };\n\n // Set up columns\n const columns = useMemo(\n () =>\n !customReport\n ? [\n {\n Header: selectedPresentation[0].REPORT_TEXT,\n accessor: 'breakby1',\n Footer: 'Samtliga',\n className: styles.sticky,\n },\n {\n Header: 'Antal',\n accessor: 'antal',\n Cell: ({ value }) => formatRespondents(value),\n Footer: ({ rows }) =>\n formatRespondents(getTotalCol(rows, 'antal')),\n },\n {\n Header: 'Medel',\n accessor: 'lon_medel',\n Cell: ({ value }) => formatNumber(value),\n Footer: ({ rows }) => getTotalCol(rows, 'lon_medel'),\n },\n {\n Header: '10:e perc',\n accessor: 'lon_p10',\n Cell: ({ value }) => formatNumber(value),\n Footer: ({ rows }) => getTotalCol(rows, 'lon_p10'),\n },\n {\n Header: 'Undre kvartil',\n accessor: 'lon_p25',\n Cell: ({ value }) => formatNumber(value),\n Footer: ({ rows }) => getTotalCol(rows, 'lon_p25'),\n },\n {\n Header: 'Median',\n accessor: 'lon_p50',\n Cell: ({ value }) => formatNumber(value),\n Footer: ({ rows }) => getTotalCol(rows, 'lon_p50'),\n },\n {\n Header: 'Övre kvartil',\n accessor: 'lon_p75',\n Cell: ({ value }) => formatNumber(value),\n Footer: ({ rows }) => getTotalCol(rows, 'lon_p75'),\n },\n {\n Header: '90:e perc',\n accessor: 'lon_p90',\n Cell: ({ value }) => formatNumber(value),\n Footer: ({ rows }) => getTotalCol(rows, 'lon_p90'),\n },\n {\n Header: 'Totalindikator',\n accessor: 'totalind',\n },\n {\n Header: 'Typ',\n accessor: '_TYPE_',\n },\n ]\n : [\n {\n Header: selectedPresentation[1].REPORT_TEXT,\n accessor: 'breakby2',\n className: styles.center,\n columns: [\n {\n Header: '',\n accessor: 'spacer-0',\n className: styles.sticky,\n columns: [\n {\n Header: selectedPresentation[0].REPORT_TEXT,\n accessor: 'breakby1',\n Footer: 'Samtliga',\n className: styles.sticky,\n },\n ],\n },\n ...tableData\n .filter(\n row =>\n row.breakby2 &&\n !['okänd', 'inget värde'].includes(\n row.breakby2.toLowerCase()\n )\n )\n .reduce(\n (acc, curr) => generateCustomColumns(acc, curr, 'breakby2'),\n []\n )\n // .sort((a, b) => a.breakby2.localeCompare(b.breakby2, 'sv'))\n .map(({ breakby2 }) => ({\n Header: breakby2,\n accessor: formatAccessor(breakby2),\n columns: [\n {\n Header: 'Antal',\n accessor: formatAccessor(`antal-${breakby2}`),\n Cell: ({ value }) => formatRespondents(value),\n Footer: ({ rows }) =>\n formatRespondents(\n getTotalCol(\n rows,\n formatAccessor(`total-antal-${breakby2}`)\n )\n ),\n },\n {\n Header: 'Medel',\n accessor: formatAccessor(`lon_medel-${breakby2}`),\n Cell: ({ value }) => formatNumber(value),\n Footer: ({ rows }) =>\n getTotalCol(\n rows,\n formatAccessor(`total-lon_medel-${breakby2}`)\n ),\n },\n ],\n })),\n {\n Header: 'Samtliga',\n accessor: 'samtliga-col',\n columns: [\n {\n Header: 'Antal',\n accessor: formatAccessor('antal-samtliga'),\n Cell: ({ value }) => formatRespondents(value),\n Footer: ({ rows }) =>\n formatRespondents(\n getTotalCol(\n rows,\n formatAccessor(`total-antal-samtliga`)\n )\n ),\n },\n {\n Header: 'Medel',\n accessor: formatAccessor('lon_medel-samtliga'),\n Cell: ({ value }) => formatNumber(value),\n Footer: ({ rows }) =>\n getTotalCol(\n rows,\n formatAccessor(`total-lon_medel-samtliga`)\n ),\n },\n ],\n },\n ],\n },\n {\n Header: 'Totalindikator',\n accessor: 'totalind',\n },\n {\n Header: 'Typ',\n accessor: '_TYPE_',\n },\n ],\n [selectedPresentation, customReport, tableData]\n );\n\n // Setup data\n const data = useMemo(\n () =>\n !customReport\n ? tableData\n : tableData.reduce((acc, curr) => generateCustomData(acc, curr), []),\n [customReport, tableData]\n );\n\n // Set up table\n const table = useTable({\n columns,\n data,\n initialState: {\n hiddenColumns: ['totalind', '_TYPE_'],\n },\n });\n\n const {\n footerGroups,\n getTableBodyProps,\n getTableProps,\n headerGroups,\n prepareRow,\n rows,\n } = table;\n\n return (\n
    \n {activeDataSource.measureVar.length > 1 && (\n \n setMeasureVar('LON')}\n />\n setMeasureVar('FLON')}\n />\n \n )}\n
    \n \n \n \n {headerGroups.map(group => (\n \n {group.headers.map(column => (\n \n {column.className === styles.center && (\n \n \n ))}\n \n ))}\n \n \n {rows\n .filter(row => !isTotalRow(row.values) && row.values.breakby1)\n .map(row => {\n prepareRow(row);\n return (\n \n {row.cells.map(cell => (\n \n ))}\n \n );\n })}\n {footerGroups\n // Dont print rows that are completely empty in the footer\n .filter(group => group.headers.every(header => header.Footer))\n .map(group => (\n \n {group.headers.map(column => (\n \n {column.render('Footer')}\n \n ))}\n \n ))}\n \n
    \n )}\n \n {column.render('Header')}\n
    \n {cell.value ? cell.render('Cell') : '-'}\n
    \n
    \n
    \n
    \n );\n};\n\nSalaryTable.propTypes = {\n activeDataSource: PropTypes.shape({\n forbund: PropTypes.string,\n dsl1: PropTypes.string,\n dsl2: PropTypes.string,\n measureVar: PropTypes.arrayOf(PropTypes.string),\n year: PropTypes.number,\n }).isRequired,\n measureVar: PropTypes.string.isRequired,\n selectedPresentation: PropTypes.arrayOf(Object).isRequired,\n setMeasureVar: PropTypes.func.isRequired,\n tableData: PropTypes.arrayOf(PropTypes.object).isRequired,\n};\n\nexport default SalaryTable;\n","import React, { useEffect, useRef, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { Chart as Graph } from 'chart.js';\nimport ChartDataLabels from 'chartjs-plugin-datalabels';\nimport 'chartjs-chart-box-and-violin-plot/build/Chart.BoxPlot';\nimport styles from './Chart.module.css';\n\nconst Chart = ({ data, id, options, setValues, type }) => {\n const chartContainer = useRef(null);\n const [chartInstance, setChartInstance] = useState(null);\n\n Graph.plugins.unregister(ChartDataLabels);\n\n useEffect(() => {\n if (chartContainer && chartContainer.current && !chartInstance) {\n const newChartInstance = new Graph(chartContainer.current, {\n data,\n options,\n type,\n });\n setChartInstance(newChartInstance);\n }\n // eslint-disable-next-line\n }, [chartContainer, data, options, type, chartInstance]);\n\n useEffect(() => {\n if (chartInstance && data) {\n chartInstance.data = data;\n chartInstance.update();\n setValues(\n chartInstance.scales['x-axis-0'],\n chartInstance.scales['y-axis-0']\n );\n }\n // eslint-disable-next-line\n }, [data, chartInstance]);\n\n useEffect(() => {\n if (chartInstance && options) {\n chartInstance.options = options;\n chartInstance.update({ duration: 0 });\n }\n // eslint-disable-next-line\n }, [options, chartInstance]);\n\n return (\n \n );\n};\n\nChart.propTypes = {\n data: PropTypes.shape({}).isRequired,\n id: PropTypes.string,\n options: PropTypes.shape({}),\n setValues: PropTypes.func,\n type: PropTypes.string.isRequired,\n};\n\nChart.defaultProps = {\n id: '',\n options: PropTypes.shape({}),\n setValues: () => {},\n};\n\nexport default Chart;\n","const STARTING_YEAR = 2021;\nexport const today = new Date();\nexport const oneYearFromNow = new Date(today.getTime() + 86400000 * 365);\n\nexport const months = [\n 'Januari',\n 'Februari',\n 'Mars',\n 'April',\n 'Maj',\n 'Juni',\n 'Juli',\n 'Augusti',\n 'September',\n 'Oktober',\n 'November',\n 'December',\n];\n\n// \"Valid\" is a year from 100 years ago up until this year\nfunction isValidHistoricalYear(num) {\n return num > today.getFullYear() - 100 && num <= today.getFullYear();\n}\n\nexport function isTimeUnit(breakbyValue) {\n if (!breakbyValue) return false;\n // The breakby value might be a year in a string\n // Like so: \"1965\"\n const year = Number(breakbyValue);\n\n // The breakby value might be a span of years which we also want to consider a unit of time\n // Like this: \"1940-1945\"\n const firstYear = !year && breakbyValue.split('-')[0];\n\n if (year && isValidHistoricalYear(year)) {\n return true;\n }\n\n if (firstYear && isValidHistoricalYear(firstYear)) {\n return true;\n }\n\n return false;\n}\n\n// Returns a list of all years from set of data or from STARTING_YEAR\nexport function getAvailableYears(data) {\n const thisYear = today.getFullYear();\n let yearsPassed;\n let list;\n\n if (data) {\n const dates = [...data]\n .map(({ created }) => created)\n .sort((a, b) => Date.parse(a) - Date.parse(b));\n\n const minYear = new Date(dates[0]).getFullYear();\n const maxYear = new Date(dates.reverse()[0]).getFullYear();\n yearsPassed = maxYear - minYear;\n list = [minYear];\n } else {\n yearsPassed = thisYear - STARTING_YEAR;\n list = [STARTING_YEAR];\n }\n\n if (yearsPassed > 0) {\n for (let i = 1; i < yearsPassed + 1; i += 1) {\n list.push(list[0] + i);\n }\n }\n\n return list;\n}\n\n// Returns a list of all available months from set of data\nexport function getAvailableMonths(data, year) {\n if (year === '' || year === 'all') return [];\n const dates = [...data]\n .map(({ created }) => created)\n .filter(date => {\n return new Date(date).getFullYear() === year;\n })\n .sort((a, b) => Date.parse(a) - Date.parse(b));\n\n const minMonth = new Date(dates[0]).getMonth();\n const maxMonth = new Date(dates.reverse()[0]).getMonth();\n const monthsPassed = maxMonth - minMonth;\n\n const res = [minMonth];\n\n if (monthsPassed > 0) {\n for (let i = 1; i < monthsPassed + 1; i += 1) {\n res.push(minMonth + i);\n }\n }\n\n return res;\n}\n","/* eslint-disable camelcase */\nimport { isTotalRow } from './salaryTable';\n\n// Returns a solid array of data for graphs\nexport function getSolidData(data, type = '') {\n return data\n .filter(entry => !isTotalRow(entry) && entry.breakby1)\n .filter(entry => {\n const { lon_p25, lon_p50, lon_medel, lon_p75, lon_p90 } = entry;\n\n if (type === 'box')\n return !Object.values({\n lon_p25,\n lon_p50,\n lon_p75,\n lon_p90,\n }).includes(null);\n\n if (type === 'bar') {\n return !Object.values({ lon_medel }).includes(null);\n }\n\n if (type === 'line')\n return !Object.values({ lon_p25, lon_p50, lon_p75 }).includes(null);\n\n return !Object.values(entry).includes(null);\n });\n}\n\n// Format chart data\nexport function calcChartData(data, type) {\n const result = getSolidData(data, type);\n\n if (type === 'box') {\n return result.map(x => ({\n min: x.lon_p10,\n q1: x.lon_p25,\n median: x.lon_p50,\n q3: x.lon_p75,\n max: x.lon_p90,\n outliers: [x.lon_medel],\n }));\n }\n\n if (type === 'line') {\n return result.map(x => ({\n q1: x.lon_p25,\n median: x.lon_p50,\n q3: x.lon_p75,\n }));\n }\n\n return result.map(x => x.lon_medel);\n}\n\n// Returns labels for charts\nexport function genLabels(data, type) {\n return getSolidData(data, type).map(x => Object.values(x)[0]);\n}\n\n// [1, 1, 2, 2] => [1, 2]\nexport function unique(value, index, self) {\n return self.indexOf(value) === index;\n}\n\nexport function uniqueByProp(arr, property) {\n return arr.filter(\n (e, i) => arr.findIndex(a => a[property] === e[property]) === i\n );\n}\n\nexport function filterCustomData(row) {\n return (\n row.breakby1 &&\n row.breakby2 &&\n !['inget värde', 'okänd'].includes(row.breakby2.toLowerCase()) &&\n !['inget värde', 'okänd'].includes(row.breakby1.toLowerCase())\n );\n}\n\nexport function getCustomLabels(data, type) {\n return getSolidData(data, type)\n .filter(row => filterCustomData(row))\n .map(row => row.breakby1)\n .sort((a, b) => a.localeCompare(b, 'sv'))\n .filter(unique);\n}\n\n// To be sure, we need at least 21 unique colors for customReport\nconst customColors = [\n '#DA8BBA', // secondary\n '#99D2D9', // primary\n '#FFFAFA', // white\n '#708090', // grey\n '#EEE8AA', // gold\n '#F08080', // red\n '#90EE90', // green\n '#6495ED', // blue\n '#FFB6C1', // pink\n '#BA55D3', // purple\n // These colors will most likely not be used, but in case:\n '#F4A460', // orange\n '#00BFFF', // deepskyblue\n '#696969', // dimgray\n '#DAA520', // goldenrod\n '#9400D3', // darkviolet\n '#00008B', // darkblue\n '#006400', // darkgreen\n '#8B0000', // darkred\n '#FF1493', // deeppink\n '#FF8C00', // darkorange\n '#4B0082', // indigo\n '#FFFFFF', // white\n];\n\n// TODO: Refactor this\nexport function calcCustomChartData(data, type) {\n const solidData = getSolidData(data, type)\n .filter(row => filterCustomData(row))\n .sort((a, b) => a.breakby1.localeCompare(b.breakby1, 'sv'));\n\n const groups = uniqueByProp(solidData, 'breakby2').map((row, i) => {\n const color = customColors[i % customColors.length];\n\n if (type === 'box') {\n return {\n data: {},\n label: row.breakby2,\n backgroundColor: color,\n hoverBackgroundColor: color,\n medianColor: '#333333',\n outlierColor: '#333333',\n borderColor: '#333333',\n borderWidth: 2,\n maxBarThickness: 40,\n };\n }\n\n return {\n data: {},\n label: row.breakby2,\n type,\n backgroundColor: color,\n hoverBackgroundColor: color,\n fill: false,\n borderColor: '#333333',\n borderWidth: 2,\n maxBarThickness: 80,\n };\n });\n\n solidData.forEach(item => {\n groups.map(group => {\n const tempGroup = { ...group };\n // It's a match\n if (group.label === item.breakby2) {\n if (type === 'box') {\n tempGroup.data[item.breakby1] = {\n min: item.lon_p10,\n q1: item.lon_p25,\n median: item.lon_p50,\n q3: item.lon_p75,\n max: item.lon_p90,\n outliers: [item.lon_medel],\n };\n }\n\n if (type === 'bar') {\n tempGroup.data[item.breakby1] = item.lon_medel;\n }\n }\n\n // Its not a match\n if (group.label !== item.breakby2) {\n // key does not exist\n if (!(item.breakby1 in group.data)) {\n tempGroup.data[item.breakby1] = null;\n }\n }\n return tempGroup;\n });\n });\n\n return groups.map(group => ({\n ...group,\n data: Object.values(group.data),\n }));\n}\n\n// Returns a mapped data object for a chart.js instance\nexport function genData(data, type, labels, customPresentation = false) {\n if (type === 'box') {\n return {\n labels: customPresentation ? getCustomLabels(data, type) : labels,\n datasets: customPresentation\n ? calcCustomChartData(data, type, customPresentation)\n : [\n {\n label: 'Löner',\n backgroundColor: '#DA8BBA',\n borderColor: '#333333',\n borderWidth: 2,\n medianColor: '#333333',\n outlierColor: '#333333',\n data: calcChartData(data, type),\n maxBarThickness: 40,\n },\n ],\n };\n }\n\n if (type === 'line') {\n const defaultOptions = {\n borderWidth: 2,\n fill: false,\n type,\n tension: 0.1,\n };\n\n return {\n labels,\n datasets: [\n {\n backgroundColor: '#33a0a0',\n borderColor: '#33a0a0',\n borderWidth: 0,\n data: calcChartData(data, type).map(({ q1 }) => q1),\n label: 'Undre kvartil',\n pointStyle: 'rect',\n ...defaultOptions,\n },\n {\n backgroundColor: '#DA8BBA',\n borderColor: '#DA8BBA',\n data: calcChartData(data, type).map(({ median }) => median),\n label: 'Median',\n pointStyle: 'circle',\n ...defaultOptions,\n },\n {\n backgroundColor: '#333333',\n borderColor: '#333333',\n data: calcChartData(data, type).map(({ q3 }) => q3),\n label: 'Övre kvartil',\n pointStyle: 'rectRounded',\n ...defaultOptions,\n },\n ],\n };\n }\n\n return {\n labels: customPresentation ? getCustomLabels(data, type) : labels,\n datasets: customPresentation\n ? calcCustomChartData(data, type, customPresentation)\n : [\n {\n type,\n label: 'Medellön',\n backgroundColor: '#DA8BBA',\n data: calcChartData(data, type),\n fill: false,\n maxBarThickness: 80,\n },\n ],\n };\n}\n\n// Returns configuration object for \"Ange din lön\"\nexport function getAnnotations(\n salaryMarkerValue,\n activeTab,\n) {\n if (!salaryMarkerValue) return {};\n return {\n annotations: [\n {\n type: 'line',\n mode: activeTab === 'box' ? 'vertical' : 'horizontal',\n scaleID: activeTab === 'box' ? 'x-axis-0' : 'y-axis-0',\n value: salaryMarkerValue,\n borderColor: '#333333',\n borderWidth: 2,\n borderDash: [2, 2],\n label: {\n enabled: true,\n content: 'Din lön',\n backgroundColor: 'rgba(0,0,0,0.75)',\n },\n },\n ],\n };\n}\n\n// Format labels to Swedish locale\nfunction formatLabelNumber(value) {\n if (typeof value === 'number') {\n return value.toLocaleString('sv');\n }\n return value;\n}\n\n// Check if chart has data to display\nexport function chartHasData(data, customPresentation, min = 0, max = 21) {\n if (customPresentation && data && data.datasets[0]) {\n let allData = [];\n\n data.datasets.forEach(dataset => {\n allData = [...allData, ...dataset.data.filter(Boolean)];\n });\n\n return allData.length > min && allData.length <= max;\n }\n\n return (\n data &&\n data.datasets[0] &&\n data.datasets[0].data.length > min &&\n data.datasets[0].data.length <= max\n );\n}\n\nexport const boxOptions = {\n responsive: true,\n legend: {\n position: 'bottom',\n },\n title: {\n display: false,\n },\n scales: {\n xAxes: [\n {\n ticks: {\n beginAtZero: false,\n callback: value => formatLabelNumber(value),\n },\n gridLines: { display: true },\n scaleLabel: {\n display: true,\n },\n },\n ],\n yAxes: [\n {\n gridLines: { display: false },\n ticks: {\n beginAtZero: false,\n callback: value => formatLabelNumber(value),\n },\n scaleLabel: {\n display: true,\n },\n },\n ],\n },\n events: ['hover'],\n onHover: null,\n};\n\nexport const barOptions = {\n responsive: true,\n title: {\n display: false,\n },\n legend: {\n position: 'bottom',\n },\n scales: {\n xAxes: [\n {\n gridLines: { display: false },\n scaleLabel: {\n display: true,\n },\n ticks: {\n callback: value => formatLabelNumber(value),\n },\n },\n ],\n yAxes: [\n {\n gridLines: { display: true },\n ticks: {\n beginAtZero: true,\n callback: value => formatLabelNumber(value),\n },\n scaleLabel: {\n display: true,\n },\n },\n ],\n },\n tooltips: {\n callbacks: {\n label(tooltipItem, d) {\n let label = d.datasets[tooltipItem.datasetIndex].label || '';\n\n if (label) {\n label += ': ';\n }\n\n label += Number(tooltipItem.yLabel).toLocaleString('sv');\n return `${label} kronor per månad`;\n },\n },\n },\n};\n\nexport const lineOptions = {\n responsive: true,\n title: {\n display: false,\n },\n legend: {\n position: 'bottom',\n labels: {\n usePointStyle: true,\n },\n },\n scales: {\n xAxes: [\n {\n gridLines: { display: true },\n scaleLabel: {\n display: true,\n },\n ticks: {\n autoSkip: true,\n maxTicksLimit: 32,\n callback: value => formatLabelNumber(value),\n },\n },\n ],\n yAxes: [\n {\n gridLines: { display: true },\n ticks: {\n beginAtZero: true,\n callback: value => formatLabelNumber(value),\n },\n scaleLabel: {\n display: true,\n },\n },\n ],\n },\n events: ['hover'],\n onHover: null,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Input from 'atoms/input/Input';\nimport styles from './SalaryMarker.module.css';\nimport { IconInfoCircle } from 'tabler-icons';\n\nconst SalaryMarker = ({ salaryMarkerValue, setSalaryMarkerValue }) => {\n return (\n
    \n
    \n
    \n
    \n \n

    \n Ange din egen månadslön och jämför med värdena i diagrammet.\n

    \n

    \n Ligger din lön utanför skalan syns den inte i diagrammet.\n

    \n
    \n Information\n
    \n \n
    \n setSalaryMarkerValue(e.target.value)}\n className={styles.input}\n value={salaryMarkerValue || ''}\n />\n
    \n );\n};\n\nSalaryMarker.propTypes = {\n salaryMarkerValue: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n setSalaryMarkerValue: PropTypes.func.isRequired,\n};\n\nSalaryMarker.defaultProps = {\n salaryMarkerValue: '',\n};\n\nexport default SalaryMarker;\n","import React, { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport 'chartjs-plugin-annotation';\nimport Chart from 'atoms/chart/Chart';\nimport { isTimeUnit } from 'lib/time';\nimport TabRow from 'atoms/tabrow/TabRow';\nimport Tab from 'atoms/tab/Tab';\nimport {\n barOptions,\n boxOptions,\n chartHasData,\n genData,\n genLabels,\n getAnnotations,\n lineOptions,\n} from 'lib/salaryGraph';\nimport SalaryMarker from './salarymarker/SalaryMarker';\nimport styles from './SalaryGraph.module.css';\n\nconst SalaryGraph = ({\n customPresentation,\n datasetLabel,\n salaryData,\n selectedPresentation,\n}) => {\n const isCustomPresentation =\n customPresentation && selectedPresentation.length === 2;\n const [activeTab, setActiveTab] = useState('box');\n const [salaryMarkerValue, setSalaryMarkerValue] = useState(null);\n const [xMin, setXMin] = useState(0);\n const [xMax, setXMax] = useState(0);\n const [yMin, setYMin] = useState(0);\n const [yMax, setYMax] = useState(0);\n\n // Labels\n const barLabels = genLabels(salaryData, 'bar');\n const lineLabels = genLabels(salaryData, 'line');\n const boxLabels = genLabels(salaryData, 'box');\n\n // Chart.js data objects\n const barData = genData(salaryData, 'bar', barLabels, isCustomPresentation);\n const lineData = genData(\n salaryData,\n 'line',\n lineLabels,\n isCustomPresentation\n );\n const boxData = genData(salaryData, 'box', boxLabels, isCustomPresentation);\n\n const labelString = datasetLabel[0].REPORT_TEXT || '';\n\n // Returns a boolean, is there any chart data at all?\n const hasData = [\n chartHasData(barData, isCustomPresentation),\n chartHasData(lineData, isCustomPresentation),\n chartHasData(boxData, isCustomPresentation),\n ].some(bool => bool);\n\n // Stores max and min values for X and Y Axis from the current graph\n const setValues = (x, y) => {\n setXMin(typeof x.min === 'number' ? x.min : 0);\n setXMax(typeof x.max === 'number' ? x.max : 0);\n setYMin(typeof y.min === 'number' ? y.min : 0);\n setYMax(typeof y.max === 'number' ? y.max : 0);\n };\n\n /*\n * Not every presentation is suitable for line charts\n * This code checks if the middle value in salaryData looks like time units\n * Additionally it checks for substring \"år\" in the labelString variable\n * TODO: Consider this implementation\n */\n const showLineDiagram =\n isTimeUnit(salaryData[Math.floor(salaryData.length / 2)]?.breakby1) &&\n labelString.toLowerCase().search('år') > -1;\n\n // Configure Chart.js options object\n const addChartOptions = (obj, type) => {\n const otherLabel = 'kronor per månad';\n\n const newConfig = {\n ...obj,\n annotation: getAnnotations(salaryMarkerValue, activeTab),\n };\n\n if (type === 'box') {\n newConfig.scales.xAxes[0].scaleLabel.labelString = otherLabel;\n newConfig.scales.yAxes[0].scaleLabel.labelString = labelString;\n return newConfig;\n }\n\n newConfig.scales.xAxes[0].scaleLabel.labelString = labelString;\n newConfig.scales.yAxes[0].scaleLabel.labelString = otherLabel;\n\n return newConfig;\n };\n\n // Set a default chart type initially\n useEffect(() => {\n if (chartHasData(barData, isCustomPresentation)) {\n setActiveTab('bar');\n return;\n }\n\n if (chartHasData(boxData, isCustomPresentation)) {\n setActiveTab('box');\n return;\n }\n\n if (chartHasData(lineData, isCustomPresentation, 1) && showLineDiagram) {\n setActiveTab('line');\n }\n\n // eslint-disable-next-line\n }, [isCustomPresentation]);\n\n return (\n <>\n {hasData && (\n
    \n
    \n \n
    \n \n {chartHasData(barData, isCustomPresentation) && (\n setActiveTab('bar')}\n />\n )}\n {chartHasData(boxData, isCustomPresentation) && (\n setActiveTab('box')}\n />\n )}\n {chartHasData(lineData, isCustomPresentation, 1) &&\n showLineDiagram &&\n !isCustomPresentation && (\n setActiveTab('line')}\n />\n )}\n \n\n {activeTab === 'box' && (\n \n )}\n {activeTab === 'bar' && (\n \n )}\n {activeTab === 'line' && (\n \n )}\n
    \n )}\n \n );\n};\n\nSalaryGraph.propTypes = {\n customPresentation: PropTypes.bool.isRequired,\n datasetLabel: PropTypes.arrayOf(PropTypes.object),\n salaryData: PropTypes.arrayOf(PropTypes.object).isRequired,\n selectedPresentation: PropTypes.arrayOf(PropTypes.shape({})),\n};\n\nSalaryGraph.defaultProps = {\n datasetLabel: [],\n selectedPresentation: [],\n};\n\nexport default SalaryGraph;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Loader from 'atoms/loader/Loader';\nimport { isTotalRow } from 'lib/salaryTable';\nimport { numberOfRespondents } from 'lib/antal';\nimport styles from './ReportSection.module.css';\nimport SalaryTable from './salarytable/SalaryTable';\nimport SalaryGraph from './salarygraph/SalaryGraph';\n\nconst ReportSection = ({\n activeDataSource,\n customPresentation,\n fetchingData,\n measureVar,\n selectedPresentation,\n setMeasureVar,\n tableData,\n}) => {\n return (\n
    \n {fetchingData ? (\n \n ) : (\n <>\n {tableData && tableData.length > 0 ? (\n <>\n {tableData.find(row => {\n return (\n isTotalRow(\n row,\n customPresentation && selectedPresentation.length > 1\n ) && numberOfRespondents(row.antal)[1] <= 30\n );\n }) ? (\n
    \n

    \n \n Statistikunderlaget är för litet. Resultat visas inte om\n urvalet är färre än 30.\n \n

    \n

    \n Bocka för fler likartade val, tag bort något val eller gör\n ett helt nytt val.\n

    \n
    \n ) : (\n <>\n \n i.isReverse)\n ? [...tableData].reverse()\n : tableData\n }\n selectedPresentation={selectedPresentation}\n />\n \n )}\n \n ) : (\n
    Data saknas för denna sökning.
    \n )}\n \n )}\n
    \n );\n};\n\nReportSection.propTypes = {\n activeDataSource: PropTypes.shape({}),\n customPresentation: PropTypes.bool.isRequired,\n fetchingData: PropTypes.bool.isRequired,\n measureVar: PropTypes.string.isRequired,\n selectedPresentation: PropTypes.arrayOf(Object),\n setMeasureVar: PropTypes.func.isRequired,\n tableData: PropTypes.arrayOf(Object).isRequired,\n};\n\nReportSection.defaultProps = {\n activeDataSource: null,\n selectedPresentation: [],\n};\n\nexport default ReportSection;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport ExplanationText from 'atoms/explanationtext/ExplanationText';\nimport styles from './ExplanationItem.module.css';\nimport boxPlotImage from '../../../../../images/box_plot_image.png';\nimport Accordion from '../../../../../atoms/accordion/Accordion';\n\nconst ExplanationItem = ({ header, textId, textItem }) => {\n const { groupId } = textItem;\n const renderImage = groupId === 'graph' && textId === 'box';\n\n return (\n
    \n {textId !== 'main' &&

    {header}

    }\n \n\n {renderImage && (\n \n \n \n )}\n
    \n );\n};\n\nExplanationItem.propTypes = {\n header: PropTypes.string,\n textId: PropTypes.string.isRequired,\n textItem: PropTypes.shape({\n id: PropTypes.string.isRequired,\n value: PropTypes.string.isRequired,\n }).isRequired,\n};\n\nExplanationItem.defaultProps = {\n header: '',\n};\n\nexport default ExplanationItem;\n","import React, { useState, useEffect, useCallback } from 'react';\nimport PropTypes from 'prop-types';\nimport Loader from 'atoms/loader/Loader';\nimport Accordion from 'atoms/accordion/Accordion';\nimport ApiService from 'services/ApiService';\nimport { useAuth } from 'services/UseAuth';\nimport { useHistory } from 'react-router-dom';\nimport styles from './ExplanationGroup.module.css';\nimport ExplanationItem from './explanationitem/ExplanationItem';\n\nconst measurementsSortOrder = [\n 'main',\n 'average',\n 'median',\n 'lowquartile',\n 'highquartile',\n '10perc',\n '90perc',\n];\n\nconst graphsSortOrder = ['bar', 'line', 'box'];\n\nconst ExplanationGroup = ({ available, groupId, textId, title }) => {\n // TODO: Refactor this component, it now holds data about its toggled state\n // This could maybe be moved to the accordion compoonent somehow.\n\n const { user, signout } = useAuth();\n const { token } = user;\n\n const [, setState] = useState();\n const [items, setItems] = useState([]);\n const [clicks, setClicks] = useState(0);\n const [toggled, setToggled] = useState(false);\n const [fetchingData, setFetchingData] = useState(false);\n\n const disabled = !toggled && fetchingData;\n\n const history = useHistory();\n\n const handleError = useCallback(\n error => {\n if (error.status === 401) {\n signout();\n history.push('/logga-ut');\n } else {\n setState(() => {\n throw error;\n });\n }\n },\n [signout, history]\n );\n\n const handleClick = () => {\n setToggled(!toggled);\n\n if (!toggled) {\n setClicks(prevState => prevState + 1);\n }\n };\n\n useEffect(() => {\n if (clicks === 1 || (clicks > 0 && items.length < 1 && !fetchingData)) {\n setFetchingData(true);\n if (!available) return;\n const request = [\n {\n groupId,\n textId,\n },\n ];\n\n ApiService.getTexts(request, token)\n .then(responseData => {\n const mainIdx = responseData.findIndex(a => a.textId === 'main');\n const mainText = responseData.splice(mainIdx, 1);\n responseData.sort((a, b) => a.header.localeCompare(b.header, 'sv'));\n\n if (mainText.length > 0) {\n responseData.splice(0, 0, mainText[0]);\n }\n\n setItems(responseData);\n })\n .catch(error => handleError(error))\n .finally(() => setFetchingData(false));\n }\n // eslint-disable-next-line\n }, [available, clicks, groupId, handleError, token]);\n\n // Reset accordion if data source changes\n useEffect(() => {\n setClicks(0);\n setToggled(false);\n }, [textId]);\n\n const sortMeasurements = () =>\n groupId === 'measurements' &&\n items.length > 0 &&\n items.sort(\n (a, b) =>\n measurementsSortOrder.indexOf(a.textId) -\n measurementsSortOrder.indexOf(b.textId)\n );\n\n const sortGraphs = () =>\n groupId === 'graph' &&\n items.length > 0 &&\n items.sort(\n (a, b) =>\n graphsSortOrder.indexOf(a.textId) - graphsSortOrder.indexOf(b.textId)\n );\n\n useEffect(() => {\n sortMeasurements();\n sortGraphs();\n }, [items]);\n\n return (\n \n {fetchingData ? (\n
    \n \n
    \n ) : (\n <>\n {items.length > 0 &&\n items.map(item => (\n \n ))}\n \n )}\n \n );\n};\n\nExplanationGroup.propTypes = {\n available: PropTypes.bool,\n groupId: PropTypes.string.isRequired,\n textId: PropTypes.arrayOf(PropTypes.string),\n title: PropTypes.string.isRequired,\n};\n\nExplanationGroup.defaultProps = {\n available: true,\n textId: [],\n};\n\nexport default ExplanationGroup;\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport styles from './InstructionsVideo.module.css';\n\n\nconst InstructionsVideo = ({ level }) => {\n\n const [videoError, setVideoError] = useState(false);\n const video = `${process.env.PUBLIC_URL}/instructions_video/instructionsVideo.mp4`;\n const videoAdvanced = `${process.env.PUBLIC_URL}/instructions_video/instructionsVideoAdvanced.mp4`;\n\n return (\n <>\n {level == 'enkel' &&\n
    \n \n
    \n }\n {level == 'avancerad' &&\n
    \n \n
    \n }\n \n );\n};\n\nexport default InstructionsVideo;\n","import React, { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport Accordion from 'atoms/accordion/Accordion';\nimport Section from 'atoms/section/Section';\nimport ExplanationGroup from './explanationgroup/ExplanationGroup';\nimport InstructionsVideo from './explanationgroup/instructionsvideo/InstructionsVideo';\nimport styles from './Explanations.module.css';\n\nconst Explanations = ({ filterList, forbund, id }) => {\n var newFilterList = filterList\n .map(filterItem => filterItem.sel_var)\n .concat('LON');\n\n if (forbund === 'SN' || 'LA' || 'CF') {\n newFilterList = newFilterList.concat('FLON');\n }\n\n const explanationGroups = [\n {\n groupId: 'statistics',\n title: 'Var kommer statistiken ifrån?',\n },\n\n {\n groupId: 'graph',\n title: 'Olika diagram',\n textId: ['line', 'bar', 'box'],\n },\n\n {\n groupId: 'measurements',\n title: 'Statistiska mått',\n },\n\n {\n groupId: 'menuselection',\n title: 'Förklaring av filter och begrepp',\n textId: newFilterList,\n available: newFilterList.length > 0,\n },\n ];\n return (\n \n \n\n {explanationGroups\n .filter(explanationGroup => explanationGroup.available !== false)\n .map(explanationGroup => (\n
    \n \n
    \n ))}\n \n );\n};\n\nconst startVideoAdvance = isAdvance => {\n if (isAdvance) {\n window.open(`Instruktionsfilm/avancerad`, '', 'height=500,width=900');\n } else {\n window.open(`Instruktionsfilm/enkel`, '', 'height=500,width=900');\n }\n};\n\nExplanations.propTypes = {\n filterList: PropTypes.arrayOf(Object).isRequired,\n id: PropTypes.string.isRequired,\n};\n\nexport default Explanations;\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport Select from 'atoms/select/Select';\nimport styles from './CustomPresentation.module.css';\n\nconst CustomPresentation = ({ presentationList, setSelectedPresentation }) => {\n const [breakby1, setBreakby1] = useState();\n const [breakby2, setBreakby2] = useState();\n\n useEffect(() => {\n if (breakby1 != null && breakby2 != null) {\n setSelectedPresentation([breakby1, breakby2]);\n }\n // eslint-disable-next-line\n }, [breakby1, breakby2]);\n\n const handleSelectBreakby1 = e => {\n try {\n setBreakby1(JSON.parse(e.target.value));\n } catch (err) {}\n };\n\n const handleSelectBreakby2 = e => {\n try {\n setBreakby2(JSON.parse(e.target.value));\n } catch (err) {}\n };\n\n return (\n
    \n

    Skapa egen rapport

    \n
    \n {presentationList && (\n <>\n
    \n handleSelectBreakby1(e)}\n options={[\n {\n key: 'null_breakby1',\n value: null,\n desc: 'Välj ett alternativ',\n },\n ...presentationList\n .filter(\n element => element?.BREAKBY_VAR !== breakby2?.BREAKBY_VAR\n )\n .map(p => ({\n key: p.BREAKBY_VAR,\n value: JSON.stringify(p),\n desc: p.REPORT_TEXT,\n })),\n ]}\n />\n
    \n
    \n handleSelectBreakby2(e)}\n options={[\n {\n key: 'null_breakby2',\n value: null,\n desc: 'Välj ett alternativ',\n },\n\n ...presentationList\n .filter(\n element => element?.BREAKBY_VAR !== breakby1?.BREAKBY_VAR\n )\n .map(p => ({\n // ...presentationList.map(p => ({\n key: p.BREAKBY_VAR,\n value: JSON.stringify(p),\n desc: p.REPORT_TEXT,\n })),\n ]}\n />\n
    \n \n )}\n
    \n
    \n );\n};\n\nCustomPresentation.propTypes = {\n presentationList: PropTypes.arrayOf(Object).isRequired,\n setSelectedPresentation: PropTypes.func.isRequired,\n};\n\nexport default CustomPresentation;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport styles from './Statisticsometer.module.css';\n\nconst ROUND_TO = 5;\nconst LIMIT = 97;\n\nconst Statisticsometer = ({\n currentRespondents,\n hasPartiallyFilledFilters,\n totalRespondents,\n variant,\n marginBottom,\n}) => {\n const percent = (currentRespondents / totalRespondents) * 100;\n const roundedPercent = Math.ceil(percent / ROUND_TO) * ROUND_TO;\n\n const presentationText = () => {\n if (roundedPercent < 10) {\n return 'Visar statistik som baseras på mindre än 10 % av tillgängligt dataunderlag';\n }\n\n if (roundedPercent >= LIMIT) {\n return `Visar statistik som baseras på ${\n hasPartiallyFilledFilters ? 'ca' : ''\n } 100 % av tillgängligt dataunderlag`;\n }\n\n return `Visar statistik som baseras på ca ${roundedPercent} % av tillgängligt dataunderlag`;\n };\n\n return (\n \n
    {presentationText()}
    \n = LIMIT ? styles.full : ''} ${\n variant === 'advanced' ? styles.advanced : styles.overview\n }`}\n style={{ width: `${roundedPercent >= 100 ? 100 : roundedPercent}%` }}\n />\n
    \n );\n};\n\nStatisticsometer.propTypes = {\n currentRespondents: PropTypes.number.isRequired,\n hasPartiallyFilledFilters: PropTypes.bool.isRequired,\n totalRespondents: PropTypes.number.isRequired,\n variant: PropTypes.string,\n marginBottom: PropTypes.bool,\n};\n\nStatisticsometer.defaultProps = {\n variant: 'overview',\n marginBottom: false,\n};\n\nexport default Statisticsometer;\n","import React, { useEffect, useState, useCallback } from 'react';\nimport ToolBar from 'components/advanced/toolbar/ToolBar';\nimport ActiveFilters from 'components/advanced/activefilters/ActiveFilters';\nimport Filters from 'components/advanced/filters/Filters';\nimport DataSource from 'components/advanced/datasource/DataSource';\nimport Presentation from 'components/advanced/presentation/Presentation';\nimport ReportSection from 'components/advanced/reportsection/ReportSection';\nimport Explanations from 'components/advanced/explanations/Explanations';\nimport CustomPresentation from 'components/advanced/custompresentation/CustomPresentation';\nimport Statisticsometer from 'atoms/statisticsometer/Statisticsometer';\nimport { useAuth } from 'services/UseAuth';\nimport { useHistory } from 'react-router-dom';\nimport ApiService from 'services/ApiService';\nimport { numberOfRespondents } from 'lib/antal';\nimport { resetMeasureVarToLon, logGetReportRequest } from 'lib/pageAdvanced';\nimport isEmpty from 'lib/emptyValues';\nimport styles from './PageAdvanced.module.css';\nimport Notification from '../../atoms/notification/Notification';\nimport ErrorNotification from '../../atoms/errornotification/ErrorNotification';\n\nconst PageAdvanced = () => {\n const [filterList, setFilterList] = useState([]);\n const [tableData, setTableData] = useState([]);\n const [fetchingData, setFetchingData] = useState(true);\n\n const [dataSources, setDataSources] = useState([]);\n const [activeDataSource, setActiveDataSource] = useState();\n const [measureVar, setMeasureVar] = useState('LON');\n const [activeFilters, setActiveFilters] = useState([]);\n const [disableMenuselection, setDisableMenuselection] = useState(false);\n\n const [, setState] = useState();\n const { user, signout, autoRefreshToken } = useAuth();\n const { forbund, token } = user;\n\n const [totalRespondents, setTotalRespondents] = useState(1);\n const [currentRespondents, setCurrentRespondents] = useState(1);\n\n const [presentationList, setPresentationList] = useState();\n const [selectedPresentation, setSelectedPresentation] = useState([]);\n const [allowCustomPresentation, setAllowCustomPresentation] = useState(false);\n const [customPresentation, setCustomPresentation] = useState(false);\n\n const [selectedUnion, setSelectedUnion] = useState(null);\n\n const [shouldGetReportData, setShouldGetReportData] = useState(true);\n\n const [\n defaultYearFromDeepAnalysis,\n setDefaultYearFromDeepAnalysis,\n ] = useState(0);\n const [defaultYearToDeepAnalysis, setDefaultYearToDeepAnalysis] = useState(0);\n\n const sortedSelectedValues = activeFilters.reduce((acc, curr) => {\n acc[curr.sel_var] = curr.values.length;\n return acc;\n }, {});\n\n const hasPartiallyFilledFilters = filterList.some(\n filter =>\n sortedSelectedValues[filter.sel_var] &&\n sortedSelectedValues[filter.sel_var] < filter.list.length\n );\n\n const history = useHistory();\n\n const handleError = useCallback(\n error => {\n if (error.status === 401) {\n signout();\n history.push('/logga-ut');\n } else {\n setState(() => {\n console.error(error);\n });\n }\n },\n [signout, history]\n );\n\n // Någon slags init.\n useEffect(() => {\n let active = true;\n\n if (active) {\n const promiseUnion = new Promise((resolve, reject) =>\n ApiService.getUnion(user.token)\n .then(data => resolve(data))\n .catch(error => reject(handleError(error)))\n );\n\n const request = {\n forbund: [forbund, 'SA'],\n };\n\n const promiseFds = new Promise((resolve, reject) =>\n ApiService.getActiveFds(request, token)\n .then(data => resolve(data))\n .catch(error => reject(handleError(error)))\n );\n\n Promise.all([promiseUnion, promiseFds]).then(([unionData, fdsData]) => {\n setSelectedUnion(unionData);\n setDataSources(fdsData);\n\n // Admin can define a default source in the admin panel\n const defaultSource =\n fdsData.find(\n ds =>\n ds.YEAR === unionData.defaultDataSource?.year &&\n ds.DSL1 === unionData.defaultDataSource?.DSL1 &&\n ds.DSL2 === unionData.defaultDataSource?.DSL2 &&\n ds.FORBUND === unionData.forbundskodSas\n ) ||\n // DSL2 Isn't required\n fdsData.find(\n ds =>\n ds.YEAR === unionData.defaultDataSource?.year &&\n ds.DSL1 === unionData.defaultDataSource?.DSL1 &&\n ds.FORBUND === unionData.forbundskodSas\n ) ||\n // If union doesn't have the data source\n fdsData.find(\n ds =>\n ds.YEAR === unionData.defaultDataSource?.year &&\n ds.DSL1 === unionData.defaultDataSource?.DSL1 &&\n ds.DSL2 === unionData.defaultDataSource?.DSL2\n ) ||\n // DSL2 Isn't required\n fdsData.find(\n ds =>\n ds.YEAR === unionData.defaultDataSource?.year &&\n ds.DSL1 === unionData.defaultDataSource?.DSL1\n ) ||\n // Datasources can also be flagged as \"DEFAULT\" in SAS\n fdsData\n .filter(ds => ds.YEAR === unionData.defaultYearToDeepAnalysis)\n .find(ds => ds.DEFAULT === 1) ||\n // The config is optional in both SAS and the admin panel, the standard year isn't\n fdsData.find(ds => ds.YEAR === unionData.defaultYearToDeepAnalysis) ||\n fdsData.sort((a, b) => b.YEAR - a.YEAR)[0];\n\n setActiveDataSource({\n forbund: defaultSource.FORBUND,\n dsl1: defaultSource.DSL1,\n dsl2: defaultSource.DSL2,\n measureVar: defaultSource.measure_var,\n year: defaultSource.YEAR,\n });\n\n setDefaultYearFromDeepAnalysis(unionData.defaultYearFromDeepAnalysis);\n setDefaultYearToDeepAnalysis(unionData.defaultYearToDeepAnalysis);\n setAllowCustomPresentation(unionData.allowCustomPresentation);\n });\n\n window.scrollTo(0, 0);\n }\n return () => {\n active = false;\n };\n // eslint-disable-next-line\n }, []);\n\n // Set selected presentation if theres a list\n useEffect(() => {\n if (presentationList) {\n setSelectedPresentation([presentationList[0]]);\n }\n // eslint-disable-next-line\n }, [presentationList]);\n\n // Get configured menuselections\n useEffect(() => {\n let active = true;\n if (activeDataSource != null) {\n resetMeasureVarToLon(activeDataSource, setMeasureVar);\n\n setDisableMenuselection(true);\n\n const request = {\n Forbund: activeDataSource.forbund,\n Dsl1: activeDataSource.dsl1,\n Dsl2: activeDataSource.dsl2, // FIXME: Vad händer när dsl2 är null?\n Year: activeDataSource.year,\n Role: user.role === 'fortoendevald' ? 'fortoendevald' : 'medlem',\n };\n\n if (active && activeFilters.length === 0) {\n ApiService.getPresentations(request, token)\n .then(data => {\n // Configured filters.\n const filters = data.filters\n .filter(filter => filter.isActive)\n .sort((a, b) => a.filterOrder - b.filterOrder)\n .reduce((acc, curr) => {\n if (acc[curr.sel_var] == null) {\n acc[curr.sel_var] = {\n options: curr.options\n .map(opt => {\n return {\n ...opt,\n sel_var: curr.sel_var,\n SELECTION_DATATYPE: curr.SELECTION_DATATYPE,\n name: curr.SELECTION_TEXT,\n value: opt.value,\n };\n })\n .filter(opt => !isEmpty(opt.value))\n .sort((a, b) =>\n curr.sortOptionsByNumber\n ? Number(a.value) - Number(b.value)\n : a.description.localeCompare(b.description, 'sv')\n ),\n name: curr.SELECTION_TEXT,\n sel_var: curr.sel_var,\n };\n } else {\n acc[curr.sel_var].options.push(...curr.options);\n }\n return acc;\n }, {});\n const filterObjects = Object.values(filters).map(obj => ({\n list: [...obj.options],\n name: obj.name,\n sel_var: obj.sel_var,\n }));\n setFilterList(filterObjects);\n\n // Configured breakbys.\n if (data.breakbys.length > 0) {\n setPresentationList(\n data.breakbys\n .filter(breakbyItem => breakbyItem.isActive)\n .sort((a, b) => {\n if (a.breakbyOrder != null && b.breakbyOrder != null) {\n return a.breakbyOrder - b.breakbyOrder;\n }\n return `${a.REPORT_TEXT}`.localeCompare(\n b.REPORT_TEXT,\n 'sv'\n );\n })\n .map(\n ({\n breakbyVar,\n breakbyText,\n sortOptionsByLetters,\n isReverse,\n }) => ({\n BREAKBY_VAR: breakbyVar,\n REPORT_TEXT: breakbyText,\n sortOptionsByLetters,\n isReverse,\n })\n )\n );\n } else {\n // FIXME: Agera på detta. Ibland är listan över breakbys tom\n }\n\n // Update total number.\n const dataSource = dataSources.find(\n source =>\n source.FORBUND === activeDataSource.forbund &&\n source.DSL1 === activeDataSource.dsl1 &&\n source.DSL2 === activeDataSource.dsl2 &&\n source.YEAR === activeDataSource.year\n );\n\n if (dataSource) {\n setTotalRespondents(dataSource.total);\n }\n })\n .catch(error => handleError(error))\n .finally(() => setDisableMenuselection(false));\n }\n }\n return () => {\n active = false;\n };\n // eslint-disable-next-line\n }, [activeDataSource, activeFilters]);\n\n useEffect(() => {\n let active = Boolean(filterList.length && activeFilters.length);\n\n if (activeDataSource != null) {\n let filter;\n if (\n activeFilters.length > 0 &&\n activeFilters.filter(({ values }) => values.length).length\n ) {\n filter = activeFilters\n .filter(activeFilter => activeFilter.values.length)\n .map(activeFilter => {\n const s = activeFilter.values.reduce((acc, curr) => {\n return `${activeFilter?.selection_datatype === 'N'\n ? curr.value\n : `'${curr.value}'`\n }${acc ? `, ${acc}` : ''}`;\n }, null);\n\n return `${activeFilter.sel_var} in (${s})`;\n });\n }\n\n const request = {\n Forbund: activeDataSource.forbund,\n Dsl1: activeDataSource.dsl1,\n Dsl2: activeDataSource.dsl2,\n Year: activeDataSource.year,\n filter,\n };\n\n if (active) {\n setDisableMenuselection(true);\n\n // Only used to update \"antal\" (counter) for each menuselection when changes are made.\n ApiService.getMenuselections(request, token)\n .then(data => {\n const filters = data\n .filter(fltr =>\n filterList.some(\n activeFltr => fltr.sel_var === activeFltr.sel_var\n )\n )\n .reduce(\n (acc, curr) => ({\n ...acc,\n [curr.sel_var]: acc[curr.sel_var]\n ? [...acc[curr.sel_var], curr]\n : [curr],\n }),\n {}\n );\n\n if (!Object.keys(filters).length) return;\n const newState = filterList.map(fltr => {\n const newOptions = filters[fltr.sel_var];\n if (newOptions)\n return {\n name: fltr.name,\n sel_var: fltr.sel_var,\n list: fltr.list.map(listItem => {\n const newOpt = newOptions.find(\n opt => opt.value === listItem.value\n );\n\n return {\n ...listItem,\n ...(newOpt && {\n antal: newOpt.antal,\n selectable: newOpt.selectable,\n }),\n };\n }),\n };\n\n return fltr;\n });\n\n setFilterList(newState);\n })\n .catch(error => handleError(error))\n .finally(() => setDisableMenuselection(false));\n }\n }\n\n return () => {\n active = false;\n };\n // eslint-disable-next-line\n }, [activeFilters]);\n\n useEffect(() => {\n let active = true;\n\n if (shouldGetReportData === true) {\n if (\n presentationList != null &&\n selectedPresentation != null &&\n activeDataSource != null\n ) {\n let filter;\n\n if (\n activeFilters.length > 0 &&\n activeFilters.filter(({ values }) => values.length).length\n ) {\n filter = activeFilters\n .filter(activeFilter =>\n filterList.some(\n fltr =>\n activeFilter.values.length &&\n fltr.sel_var === activeFilter.sel_var\n )\n )\n .map(activeFilter => {\n const s = activeFilter.values.reduce((acc, curr) => {\n return `${activeFilter?.selection_datatype === 'N'\n ? curr.value\n : `'${curr.value}'`\n }${acc ? `, ${acc}` : ''}`;\n }, null);\n\n return `${activeFilter.sel_var} in (${s})`;\n });\n }\n\n const request = {\n Forbund: activeDataSource.forbund,\n Dsl1: activeDataSource.dsl1,\n Dsl2: activeDataSource.dsl2,\n measure_var: measureVar,\n Year: activeDataSource.year,\n breakby1: selectedPresentation[0].BREAKBY_VAR\n ? selectedPresentation[0].BREAKBY_VAR\n : null,\n breakby2:\n selectedPresentation.length > 1\n ? selectedPresentation[1].BREAKBY_VAR\n : null,\n filter,\n };\n\n if (active) {\n setFetchingData(true);\n\n logGetReportRequest(request);\n\n ApiService.getReport(request, token)\n .then(data =>\n setTableData(() => {\n if (\n selectedPresentation.length > 0 &&\n selectedPresentation[0].sortOptionsByLetters\n ) {\n return data.sort(\n (a, b) =>\n a.breakby1 && a.breakby1.localeCompare(b.breakby1, 'sv')\n );\n }\n return data;\n })\n )\n // TODO: Just check if token is about to expire once, this code is a little everywhere\n .then(() => autoRefreshToken(token))\n .catch(error => handleError(error))\n .finally(() => setFetchingData(false));\n }\n }\n } else {\n setShouldGetReportData(true);\n }\n\n return () => {\n active = false;\n };\n\n // eslint-disable-next-line\n }, [activeFilters, selectedPresentation, measureVar]);\n\n useEffect(() => {\n if (activeFilters.length > 0) {\n const current = Math.ceil(\n []\n .concat(\n ...activeFilters\n .slice(activeFilters.length - 1)\n .map(item => item.values)\n )\n .reduce((a, b) => {\n const low = numberOfRespondents(b.antal)[0];\n const high = numberOfRespondents(b.antal)[1];\n const diff = (high - low) / 2;\n\n if (Number(low) && Number(high)) {\n return a + low + diff;\n }\n\n return a;\n }, 0)\n );\n setCurrentRespondents(current);\n } else {\n setCurrentRespondents(totalRespondents);\n }\n // eslint-disable-next-line\n }, [activeFilters, totalRespondents]);\n\n useEffect(() => {\n setShouldGetReportData(false);\n setActiveFilters([]);\n }, [activeDataSource]);\n\n // Tillåt ej \"Egen rapport\" om förbundet är SI (CF) och alternativ valt är chefslöner eller nyexaminerade\n useEffect(() => {\n if (activeDataSource) {\n if (\n (activeDataSource.forbund === 'CF' && activeDataSource.dsl2 === 'CH') ||\n activeDataSource.dsl2 === 'FJ'\n ) {\n setAllowCustomPresentation(false);\n } else if (selectedUnion.allowCustomPresentation) {\n setAllowCustomPresentation(true);\n } else {\n setAllowCustomPresentation(false);\n }\n }\n }, [activeDataSource]);\n\n // Disable CustomPresentation (Egen rapport) when current active data source is changed\n useEffect(() => {\n setCustomPresentation(false);\n }, [activeDataSource]);\n\n return (\n
    \n
    \n \n \n \n
    \n
    \n {activeDataSource && (\n \n )}\n \n
    \n
    \n
    \n {activeFilters.length > 0 && (\n \n )}\n
    \n \n \n
    \n {customPresentation && (\n \n )}\n \n \n
    \n
    \n
    \n
    \n
    \n );\n};\n\nexport default PageAdvanced;\n","export function resetMeasureVarToLon(dataSource, setMeasureVar) {\n if (dataSource.measureVar != null && dataSource.measureVar.length <= 1) {\n setMeasureVar('LON');\n }\n}\n\nexport function logGetReportRequest(request) {\n console.log('----------------------------');\n console.log(`getReport Forbund: ${request.Forbund}`);\n console.log(`getReport DSL1: ${request.Dsl1}`);\n console.log(`getReport DSL2: ${request.Dsl2}`);\n console.log(`getReport Measurevar: ${request.measure_var}`);\n console.log(`getReport year: ${request.Year}`);\n console.log(`getReport breakby1: ${request.breakby1}`);\n console.log(`getReport breakby2: ${request.breakby2}`);\n console.log(`getReport filter: ${request.filter}`);\n console.log('----------------------------');\n}\n","/* eslint-disable camelcase */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport styles from './Panel.module.css';\n\nconst Panel = ({children, className, legend, admin, card}) => {\n const extraClasses = className && className !== '' ? className : '';\n const hasFieldset = card && card !== '';\n return (\n
    \n {hasFieldset ? (\n
    \n {legend}\n {children}\n
    \n ) : (\n
    \n {children}\n
    \n )}\n
    \n );\n};\n\nPanel.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n ]).isRequired,\n className: PropTypes.string,\n legend: PropTypes.string,\n card: PropTypes.bool,\n admin: PropTypes.bool\n};\n\nPanel.defaultProps = {\n className: '',\n legend: '',\n card: false,\n admin: false\n};\n\nexport default Panel;\n","export default {\n admin: {\n level2Header: 'Enkel sökning',\n level3Header: 'Avancerad sökning',\n level1Header: 'Konfiguration',\n previewConfigHeader: 'Öppen sökning',\n filterExplanations: 'Filter',\n commonTexts: 'Informationstexter',\n union: 'Länk till förbundet',\n notifications: 'Notiser',\n accounts: 'Användarkonton',\n visitiorStatistics: 'Besöksstatistik',\n applicationLog: 'Applikationslogg',\n copyConfigurationHeader: 'Kopiera konfiguration',\n },\n};\n","import PropTypes from 'prop-types';\nimport React from 'react';\nimport {\n IconArrowNarrowDown,\n IconArrowNarrowUp,\n IconChevronsLeft,\n IconChevronsRight,\n IconCopy,\n IconDownload,\n IconEdit,\n IconPlus,\n IconRefresh,\n IconTrash,\n} from 'tabler-icons';\nimport styles from './Button.module.css';\n\nconst Button = ({ className, disabled, label, altText, onClick, style, type, variant, icon, flipIcon }) => {\n const extraClasses = className && className !== '' ? className : '';\n const computedAltText = altText && altText !== '' ? altText : label;\n return (\n \n {icon && (\n \n {icon === 'ArrowDown' && }\n {icon === 'ArrowUp' && }\n {icon === 'Copy' && }\n {icon === 'Download' && }\n {icon === 'Edit' && }\n {icon === 'Next' && }\n {icon === 'Plus' && }\n {icon === 'Previous' && }\n {icon === 'Refresh' && }\n {icon === 'Trash' && }\n \n )}\n \n {label}\n \n \n );\n};\n\nButton.propTypes = {\n className: PropTypes.string,\n disabled: PropTypes.bool,\n flipIcon: PropTypes.bool,\n label: PropTypes.string.isRequired,\n altText: PropTypes.string,\n onClick: PropTypes.func.isRequired,\n icon: PropTypes.string,\n style: PropTypes.shape({}),\n type: PropTypes.oneOf(['submit', 'button']),\n variant: PropTypes.oneOf(['primary', 'secondary', 'ghost', 'delete']).isRequired,\n};\n\nButton.defaultProps = {\n altText: '',\n className: undefined,\n disabled: false,\n flipIcon: false,\n style: undefined,\n icon: undefined,\n type: 'button',\n};\n\nexport default Button;\n","/* eslint-disable camelcase */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport styles from './ButtonBar.module.css';\n\nconst ButtonBar = ({children, prevNext, marginBottom}) => {\n return (\n
    \n {children}\n
    \n );\n};\n\nButtonBar.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n ]).isRequired,\n prevNext: PropTypes.bool,\n marginBottom: PropTypes.bool\n};\n\nButtonBar.defaultProps = {\n prevNext: false,\n marginBottom: false\n};\n\nexport default ButtonBar;\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport Select from 'atoms/select/Select';\nimport styles from './DataSourceSelect.module.css';\n\nconst DataSourceSelect = ({\n dataSources,\n dsl1,\n dsl2,\n role,\n setDsl1,\n setDsl2,\n setRole,\n setYear,\n year,\n}) => {\n const [availableYears, setAvailableYears] = useState([]);\n const [availableDSL1, setAvailableDSL1] = useState([]);\n const [availableDSL2, setAvailableDSL2] = useState([]);\n\n useEffect(() => {\n if (dataSources == null) return;\n setAvailableYears(\n dataSources\n .reduce((acc, curr) => {\n if (!acc.includes(curr.YEAR)) acc.push(curr.YEAR);\n return acc;\n }, [])\n .sort()\n .reverse()\n );\n }, [dataSources]);\n\n useEffect(() => {\n // TODO: Något sätt att hämta ut DSL1/2 baserat på år.\n if (year == null) {\n // Nollställ\n setAvailableDSL1([]);\n setAvailableDSL2([]);\n return;\n }\n\n const dsl1Temp = dataSources\n .filter(dataSource => dataSource.YEAR === year)\n .reduce((acc, curr) => {\n if (!acc.some(a => a.dsl === curr.DSL1))\n acc.push({ dsl: curr.DSL1, desc: curr.DSL1_DESC });\n return acc;\n }, []);\n setAvailableDSL1(dsl1Temp);\n }, [year, dataSources]);\n\n useEffect(() => {\n if (dsl1 === '') {\n setDsl2('');\n return;\n }\n\n setAvailableDSL2(\n dataSources\n .filter(dataSource => dataSource.YEAR === year)\n .filter(dataSource => dataSource.DSL1 === dsl1)\n .map(dataSource => {\n return { dsl: dataSource.DSL2, desc: dataSource.DSL2_DESC };\n })\n .filter(datasource => datasource.dsl.length)\n );\n // eslint-disable-next-line\n }, [dsl1, dataSources, year]);\n\n useEffect(() => {\n if (dsl2 !== '' && !availableDSL2.some(d => d.dsl === dsl2)) setDsl2('');\n if (dsl1 !== '' && !availableDSL1.some(d => d.dsl === dsl1)) setDsl1('');\n }, [availableDSL1, availableDSL2]);\n\n return (\n
    \n {\n e.persist();\n setYear(Number(e.target.value));\n }}\n options={[\n { key: 'year_null', value: '', desc: 'Inget valt' },\n ...availableYears\n .map(availableYear => ({\n key: availableYear,\n value: availableYear,\n desc: availableYear,\n }))\n .reverse(),\n ]}\n />\n {\n e.persist();\n setDsl1(e.target.value);\n }}\n options={[\n { key: 'dsl1_null', value: '', desc: 'Inget valt' },\n ...availableDSL1.map(({ dsl, desc }) => ({\n key: dsl,\n value: dsl,\n desc,\n })),\n ]}\n />\n {\n e.persist();\n setDsl2(e.target.value);\n }}\n options={[\n { key: 'dsl2_null', value: '', desc: 'Inget valt' },\n ...availableDSL2.map(({ dsl, desc }) => ({\n key: dsl,\n value: dsl,\n desc,\n })),\n ]}\n />\n {role !== null && (\n {\n e.persist();\n setRole(e.target.value);\n }}\n options={[\n { key: 'medlem', value: 'medlem', desc: 'Medlem' },\n {\n key: 'fortroendevald',\n value: 'fortroendevald',\n desc: 'Förtroendevald',\n },\n ]}\n />\n )}\n
    \n );\n};\n\nDataSourceSelect.propTypes = {\n dataSources: PropTypes.arrayOf(Object),\n dsl1: PropTypes.string.isRequired,\n dsl2: PropTypes.string.isRequired,\n role: PropTypes.string,\n setDsl1: PropTypes.func.isRequired,\n setDsl2: PropTypes.func.isRequired,\n setRole: PropTypes.func,\n setYear: PropTypes.func.isRequired,\n year: PropTypes.number,\n};\n\nDataSourceSelect.defaultProps = {\n dataSources: null,\n role: null,\n setRole: null,\n year: undefined,\n};\n\nexport default DataSourceSelect;\n","/* eslint-disable camelcase */\nimport React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport Button from 'atoms/button/Button';\nimport Input from 'atoms/input/Input';\nimport ButtonBar from 'atoms/buttonbar/ButtonBar';\nimport { useAuth } from 'services/UseAuth';\nimport ApiService from 'services/ApiService';\nimport Panel from 'atoms/panel/Panel';\nimport styles from './SituationCreate.module.css';\nimport DataSourceSelect from '../../datasourceselect/DataSourceSelect';\n\nconst SituationCreate = ({\n configureLvl1,\n dataSources,\n setCreateNewSituation,\n setSituationCopied,\n setSituationCreated,\n setSituations,\n situationToCopy,\n}) => {\n const [name, setName] = useState('');\n const [description, setDescription] = useState('');\n const [dsl1, setDsl1] = useState('');\n const [dsl2, setDsl2] = useState('');\n const [year, setYear] = useState();\n\n const [saveDisabled, setSaveDisabled] = useState(true);\n\n const { user } = useAuth();\n\n const handleSubmit = evt => {\n setSaveDisabled(true);\n evt.preventDefault();\n\n // Send network request.\n const request = {\n name,\n description,\n dsl1,\n dsl2,\n year,\n isActive: situationToCopy === null, // FIXME: Ska isActive defaulta till true när man skapar en ny?, åtminstone inte när man kopierar\n forbundsKod: configureLvl1 ? 'sa' : null,\n };\n\n const createSituation = new Promise((resolve, reject) =>\n ApiService.createSituation(request, user.token)\n .then(data => resolve(data))\n .catch(error => reject(error))\n );\n\n if (situationToCopy == null) {\n createSituation.then(data => {\n setSituations(prevState => [...prevState, data]);\n setCreateNewSituation(prevState => !prevState);\n setSituationCreated(true);\n });\n } else {\n createSituation.then(createdSituation => {\n const activeSelections = situationToCopy.selections.filter(\n situation => situation.isActive\n );\n\n const updateRequest = {\n selections: createdSituation.selections.map(selection => {\n const index = [...activeSelections]\n .map(({ sel_var }) => sel_var)\n .findIndex(selVar => selVar === selection.sel_var);\n\n return {\n id: selection.id,\n selectionOrder:\n index > -1\n ? activeSelections[index].SELECTION_ORDER\n : selection.SELECTION_ORDER,\n isActive: index > -1,\n };\n }),\n };\n\n ApiService.updateSelections(\n createdSituation.id,\n updateRequest,\n user.token\n ).then(updatedSituation => {\n setSituations(prevState => [...prevState, updatedSituation]);\n setCreateNewSituation(prevState => !prevState);\n setSituationCopied(true);\n });\n });\n }\n };\n\n useEffect(() => {\n if (name.length === 0 || description.length === 0) {\n setSaveDisabled(true);\n return;\n }\n\n if (\n dataSources.some(\n ds => ds.DSL1 === dsl1 && ds.DSL2 === dsl2 && ds.YEAR === year\n )\n ) {\n setSaveDisabled(false);\n } else setSaveDisabled(true);\n }, [name, description, year, dsl1, dsl2, dataSources]);\n\n useEffect(() => {\n if (situationToCopy != null) {\n setName(situationToCopy.name);\n setDescription(situationToCopy.description);\n setYear(situationToCopy.year);\n setDsl1(situationToCopy.DSL1);\n setDsl2(situationToCopy.DSL2 || '');\n }\n }, [situationToCopy]);\n\n return (\n \n
    \n
    \n setName(evt.target.value)}\n placeholder=\"Namn\"\n type=\"text\"\n value={name}\n />\n setDescription(evt.target.value)}\n placeholder=\"Beskrivning\"\n type=\"text\"\n value={description}\n />\n \n \n
    \n
    \n \n handleSubmit(evt)}\n label=\"Spara\"\n altText=\"Spara situation\"\n disabled={saveDisabled}\n />\n setCreateNewSituation(prevState => !prevState)}\n />\n \n
    \n );\n};\n\nSituationCreate.propTypes = {\n configureLvl1: PropTypes.bool.isRequired,\n dataSources: PropTypes.arrayOf(Object).isRequired,\n setCreateNewSituation: PropTypes.func.isRequired,\n setSituationCopied: PropTypes.func.isRequired,\n setSituationCreated: PropTypes.func.isRequired,\n setSituations: PropTypes.func.isRequired,\n situationToCopy: PropTypes.shape({\n name: PropTypes.string,\n description: PropTypes.string,\n year: PropTypes.number,\n DSL1: PropTypes.string,\n DSL2: PropTypes.string,\n selections: PropTypes.arrayOf(Object),\n }),\n};\n\nSituationCreate.defaultProps = {\n situationToCopy: null,\n};\n\nexport default SituationCreate;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport styles from './CheckboxAdmin.module.css';\n\nconst CheckboxAdmin = ({ id, label, checked, disabled, onChange }) => {\n return (\n \n \n {label !== null && {label}}\n \n );\n};\n\nCheckboxAdmin.propTypes = {\n checked: PropTypes.bool,\n disabled: PropTypes.bool,\n id: PropTypes.string.isRequired,\n label: PropTypes.string,\n onChange: PropTypes.func.isRequired,\n};\n\nCheckboxAdmin.defaultProps = {\n checked: false,\n disabled: false,\n label: null,\n};\n\nexport default CheckboxAdmin;\n","/* eslint-disable camelcase */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport styles from './InputReadOnly.module.css';\n\nconst InputReadOnly = ({label, text, className, useHyphens}) => {\n const extraClasses = className && className !== '' ? className : '';\n \n return (\n
    \n
    {label}:
    \n
    {text}
    \n
    \n );\n};\n\nInputReadOnly.propTypes = {\n label: PropTypes.string.isRequired,\n text: PropTypes.string.isRequired,\n className: PropTypes.string,\n useHyphens: PropTypes.bool\n};\n\nInputReadOnly.defaultProps = {\n className: '',\n useHyphens: false\n};\n\nexport default InputReadOnly;\n","import React, { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nimport styles from './Textarea.module.css';\n\nconst Textarea = forwardRef(\n (\n {\n className,\n classTextArea,\n disabled,\n id,\n label,\n onChange,\n placeholder,\n value\n },\n ref\n ) => {\n const extraClasses = className && className !== '' ? className : '';\n const extraTextAreaClasses = classTextArea && classTextArea !== '' ? classTextArea : '';\n return (\n \n {`${label}:`}\n \n \n );\n }\n);\n\nTextarea.propTypes = {\n className: PropTypes.string,\n classTextArea: PropTypes.string,\n disabled: PropTypes.bool,\n id: PropTypes.string.isRequired,\n label: PropTypes.string,\n onChange: PropTypes.func.isRequired,\n placeholder: PropTypes.string,\n value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n};\n\nTextarea.defaultProps = {\n className: '',\n classTextArea: '',\n disabled: false,\n label: '',\n placeholder: null,\n value: ''\n};\n\nexport default Textarea;\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport Button from 'atoms/button/Button';\nimport ButtonBar from 'atoms/buttonbar/ButtonBar';\nimport CheckboxAdmin from 'atoms/checkboxadmin/CheckboxAdmin';\nimport InputReadOnly from 'atoms/inputreadonly/InputReadOnly';\nimport Input from 'atoms/input/Input';\nimport Textarea from 'atoms/textarea/Textarea';\nimport Panel from 'atoms/panel/Panel';\nimport styles from './SituationCard.module.css';\n\nconst SituationCard = ({\n copySituation,\n deleteSituation,\n situation,\n updateSituation,\n}) => {\n const [editMode, setEditMode] = useState(false);\n\n const [situationName, setSituationName] = useState(situation.name);\n const [situationDescription, setSituationDescription] = useState(\n situation.description\n );\n const [situationIsActive, setSituationIsActive] = useState(\n situation.isActive\n );\n\n const handleDelete = () => {\n const situationToDelete = {\n id: situation.id,\n name: situationName,\n description: situationDescription,\n isActive: situationIsActive,\n };\n\n deleteSituation(situationToDelete);\n setEditMode(prevState => !prevState);\n };\n\n const handleUpdate = () => {\n const updatedSituation = {\n id: situation.id,\n name: situationName,\n description: situationDescription,\n isActive: situationIsActive,\n };\n\n updateSituation(updatedSituation);\n setEditMode(prevState => !prevState);\n };\n\n return (\n \n
    \n
    \n
    \n {!editMode && (\n \n )}\n {editMode && (\n setSituationName(e.target.value)}\n placeholder=\"Namn\"\n type=\"text\"\n value={situationName}\n />\n )}\n {!editMode && (\n \n )}\n {editMode && (\n setSituationDescription(e.target.value)}\n />\n )}\n \n
    \n\n
    \n \n \n \n
    \n
    \n\n
    \n \n setSituationIsActive(prevState => !prevState)}\n />\n {editMode ? (\n <>\n \n \n setEditMode(prevState => !prevState)}\n label=\"Avbryt\"\n />\n \n ) : (\n <>\n copySituation(situation)}\n />\n setEditMode(prevState => !prevState)}\n label=\"Redigera\"\n icon=\"Edit\"\n altText=\"Redigera situation\"\n />\n \n )}\n \n
    \n \n );\n};\n\nSituationCard.propTypes = {\n deleteSituation: PropTypes.func.isRequired,\n copySituation: PropTypes.func.isRequired,\n situation: PropTypes.shape({\n id: PropTypes.string,\n name: PropTypes.string,\n isActive: PropTypes.bool,\n description: PropTypes.string,\n DSL1: PropTypes.string,\n DSL2: PropTypes.string,\n year: PropTypes.number,\n }).isRequired,\n updateSituation: PropTypes.func.isRequired,\n};\n\nexport default SituationCard;\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { ToastContainer, toast } from 'react-toastify';\nimport 'react-toastify/dist/ReactToastify.css';\nimport Button from 'atoms/button/Button';\nimport { useAuth } from 'services/UseAuth';\nimport ApiService from 'services/ApiService';\nimport ButtonBar from 'atoms/buttonbar/ButtonBar';\nimport styles from './SituationConfig.module.css';\nimport SituationCreate from './situationcreate/SituationCreate';\nimport SituationCard from './situationcard/SituationCard';\n\nconst SituationConfig = ({ configureLvl1, setSituations, situations }) => {\n const [createNewSituation, setCreateNewSituation] = useState(false);\n const [dataSources, setDataSources] = useState();\n const [situationToCopy, setSituationToCopy] = useState();\n\n const [situationCopied, setSituationCopied] = useState(false);\n const [situationCreated, setSituationCreated] = useState(false);\n const [situationDeleted, setSituationDeleted] = useState(false);\n const [situationUpdated, setSituationUpdated] = useState(false);\n\n const { user } = useAuth();\n const { token, forbund } = user;\n\n const deleteSituation = situationToDelete => {\n ApiService.deleteSituation(situationToDelete.id, token).then(data => {\n const remainingSituations = situations.filter(\n situation => situation.id !== data\n );\n setSituations(remainingSituations);\n setSituationDeleted(true);\n });\n };\n\n const updateSituation = updatedSituation => {\n ApiService.updateSituation(\n updatedSituation.id,\n updatedSituation,\n token\n ).then(data => {\n const index = situations.findIndex(situation => situation.id === data.id);\n const tempSituations = [...situations];\n if (index !== -1) {\n tempSituations[index] = data;\n }\n setSituations(tempSituations);\n setSituationUpdated(true);\n });\n };\n\n const getDataSources = () => {\n const request = { forbund: configureLvl1 ? ['sa'] : [forbund] };\n ApiService.getFds(request, token).then(data => setDataSources(data));\n };\n\n useEffect(() => {\n getDataSources();\n // eslint-disable-next-line\n }, [token, forbund, configureLvl1]);\n\n useEffect(() => {\n if (\n !situationCopied &&\n !situationCreated &&\n !situationDeleted &&\n !situationUpdated\n )\n return;\n\n if (situationCopied) {\n toast.success('Situation duplicerad');\n setSituationCopied(false);\n }\n if (situationCreated) {\n toast.success('Situation skapad');\n setSituationCreated(false);\n }\n if (situationDeleted) {\n toast.success('Situation borttagen');\n setSituationDeleted(false);\n }\n if (situationUpdated) {\n toast.success('Situation uppdaterad');\n setSituationUpdated(false);\n }\n }, [situationCopied, situationCreated, situationDeleted, situationUpdated]);\n\n return (\n
    \n \n {situations\n .sort((a, b) => a.name.localeCompare(b.name))\n .sort((a, b) => {\n if (a.DSL2.toLowerCase() === 'df') return -1;\n if (b.DSL2.toLowerCase() !== 'df') return 1;\n return 0;\n })\n .map(situation => (\n {\n setCreateNewSituation(true);\n setSituationToCopy(s);\n }}\n deleteSituation={deleteSituation}\n key={situation.id}\n setSituationUpdated={setSituationUpdated}\n situation={situation}\n updateSituation={updateSituation}\n />\n ))}\n
    \n {!createNewSituation ? (\n \n {\n setCreateNewSituation(prevState => !prevState);\n setSituationToCopy(null);\n }}\n style={{ marginLeft: 'auto' }}\n variant=\"primary\"\n />\n \n ) : (\n \n )}\n
    \n
    \n );\n};\n\nSituationConfig.propTypes = {\n configureLvl1: PropTypes.bool,\n setSituations: PropTypes.func.isRequired,\n situations: PropTypes.arrayOf(Object).isRequired,\n};\n\nSituationConfig.defaultProps = {\n configureLvl1: false,\n};\n\nexport default SituationConfig;\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport Button from 'atoms/button/Button';\nimport Input from 'atoms/input/Input';\nimport ButtonBar from 'atoms/buttonbar/ButtonBar';\nimport { useAuth } from 'services/UseAuth';\nimport ApiService from 'services/ApiService';\nimport Panel from 'atoms/panel/Panel';\n\nconst LinkCreate = ({\n setLinks,\n configureLvl1,\n setCreateNewLink,\n setLinkCreated,\n}) => {\n const [linkName, setLinkName] = useState('');\n const [linkUrl, setLinkUrl] = useState('');\n const [isSaving, setIsSaving] = useState(false);\n\n const { user } = useAuth();\n\n const handleSubmit = () => {\n setIsSaving(true);\n const request = {\n unionId: configureLvl1 ? null : user.unionId,\n groupId: configureLvl1 ? 'level1link' : 'level2link',\n textId: linkName,\n header: linkName,\n value: linkUrl,\n };\n ApiService.postText(request, user.token)\n .then(data => {\n setLinks(prevState => [...prevState, data]);\n setLinkCreated(true);\n setCreateNewLink(false);\n })\n .finally(() => setIsSaving(false));\n };\n return (\n \n
    \n setLinkName(evt.target.value)}\n placeholder=\"Länktext\"\n type=\"text\"\n value={linkName}\n />\n setLinkUrl(evt.target.value)}\n placeholder=\"HTTP-länk\"\n type=\"text\"\n value={linkUrl}\n />\n \n \n handleSubmit()}\n disabled={isSaving}\n />\n setCreateNewLink(prevState => !prevState)}\n />\n \n
    \n );\n};\n\nLinkCreate.propTypes = {\n setLinks: PropTypes.func.isRequired,\n configureLvl1: PropTypes.bool.isRequired,\n setCreateNewLink: PropTypes.func.isRequired,\n setLinkCreated: PropTypes.func.isRequired,\n};\n\nexport default LinkCreate;\n","import Button from 'atoms/button/Button';\nimport ButtonBar from 'atoms/buttonbar/ButtonBar';\nimport Input from 'atoms/input/Input';\nimport Panel from 'atoms/panel/Panel';\nimport InputReadOnly from 'atoms/inputreadonly/InputReadOnly';\nimport PropTypes from 'prop-types';\nimport React, { useState } from 'react';\nimport ApiService from 'services/ApiService';\nimport { useAuth } from 'services/UseAuth';\nimport styles from './LinkCard.module.css';\n\nconst LinkCard = ({\n link,\n setLinks,\n setLinkUpdated,\n setLinkDeleted,\n configureLvl1,\n}) => {\n const { header, value, id, groupId, textId } = link;\n\n const [editMode, setEditMode] = useState(false);\n\n const [linkName, setLinkName] = useState(header);\n const [linkUrl, setLinkUrl] = useState(value);\n const [isSaving, setIsSaving] = useState(false);\n\n const { user } = useAuth();\n\n const handleUpdate = () => {\n setIsSaving(true);\n const request = {\n id,\n groupId,\n textId,\n unionId: configureLvl1 ? null : user.unionId,\n header: linkName,\n value: linkUrl,\n };\n\n ApiService.postText(request, user.token)\n .then(data => {\n setLinks(prevState => {\n const index = prevState.findIndex(\n situation => situation.id === data.id\n );\n const tempLinks = [...prevState];\n if (index !== -1) {\n tempLinks[index] = data;\n }\n\n return tempLinks;\n });\n setLinkUpdated(true);\n })\n .finally(() => {\n setIsSaving(false);\n setEditMode(false);\n });\n };\n\n const handleDelete = () => {\n ApiService.deleteText(id, user.token).then(data => {\n setLinks(prevState => [...prevState.filter(l => l.id !== data)]);\n setLinkDeleted(true);\n });\n };\n\n return (\n \n
    \n
    \n
    \n {editMode ? (\n setLinkName(evt.target.value)}\n placeholder=\"Länktext\"\n type=\"text\"\n value={linkName}\n />\n ) : (\n \n )}\n
    \n
    \n {editMode ? (\n setLinkUrl(evt.target.value)}\n placeholder=\"HTTP-länk\"\n type=\"text\"\n value={linkUrl}\n />\n ) : (\n \n )}\n
    \n
    \n
    \n
    \n \n {editMode && (\n <>\n handleDelete()}\n label=\"Ta bort\"\n icon=\"Trash\"\n altText=\"Ta bort länk\"\n disabled={isSaving}\n />\n handleUpdate()}\n label=\"Spara\"\n altText=\"Spara länk\"\n disabled={isSaving}\n />\n setEditMode(prevState => !prevState)}\n label=\"Avbryt\"\n disabled={isSaving}\n />\n \n )}\n {!editMode && (\n <>\n setEditMode(prevState => !prevState)}\n label=\"Redigera\"\n icon=\"Edit\"\n altText=\"Redigera länk\"\n />\n \n )}\n \n
    \n
    \n );\n};\n\nLinkCard.propTypes = {\n link: PropTypes.shape({\n header: PropTypes.string.isRequired,\n value: PropTypes.string.isRequired,\n id: PropTypes.string.isRequired,\n groupId: PropTypes.string.isRequired,\n textId: PropTypes.string.isRequired,\n }).isRequired,\n setLinks: PropTypes.func.isRequired,\n setLinkUpdated: PropTypes.func.isRequired,\n setLinkDeleted: PropTypes.func.isRequired,\n configureLvl1: PropTypes.bool.isRequired,\n};\n\nexport default LinkCard;\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { ToastContainer, toast } from 'react-toastify';\nimport Button from 'atoms/button/Button';\nimport Loader from 'atoms/loader/Loader';\nimport { useAuth } from 'services/UseAuth';\nimport ApiService from 'services/ApiService';\nimport ButtonBar from 'atoms/buttonbar/ButtonBar';\nimport styles from './LinksConfig.module.css';\nimport LinkCreate from './linkcreate/LinkCreate';\nimport LinkCard from './linkcard/LinkCard';\nimport 'react-toastify/dist/ReactToastify.css';\n\nconst LinksConfig = ({ configureLvl1 }) => {\n const [createNewLink, setCreateNewLink] = useState(false);\n const [linkCreated, setLinkCreated] = useState(false);\n const [linkUpdated, setLinkUpdated] = useState(false);\n const [linkDeleted, setLinkDeleted] = useState(false);\n const [links, setLinks] = useState();\n\n const { user } = useAuth();\n useEffect(() => {\n const request = [\n {\n groupId: configureLvl1 ? 'level1link' : 'level2link',\n },\n ];\n ApiService.getTexts(request, user.token).then(data => setLinks(data));\n }, [user.token, configureLvl1]);\n\n useEffect(() => {\n if (!linkCreated && !linkUpdated && !linkDeleted) return;\n\n if (linkCreated) {\n toast.success('Länk Skapad');\n setLinkCreated(false);\n }\n if (linkUpdated) {\n toast.success('Länk Uppdaterad');\n setLinkUpdated(false);\n }\n if (linkDeleted) {\n toast.success('Länk Borttagen');\n setLinkDeleted(false);\n }\n }, [linkCreated, linkUpdated, linkDeleted]);\n\n return (\n
    \n \n {links ? (\n links.map(link => (\n \n ))\n ) : (\n
    \n \n
    \n )}\n
    \n {!createNewLink ? (\n \n setCreateNewLink(prevState => !prevState)}\n icon=\"Plus\"\n label=\"Lägg till\"\n altText=\"Lägg till länk\"\n />\n \n ) : (\n \n )}\n
    \n
    \n );\n};\n\nLinksConfig.propTypes = {\n configureLvl1: PropTypes.bool,\n};\n\nLinksConfig.defaultProps = {\n configureLvl1: false,\n};\n\nexport default LinksConfig;\n","/* eslint-disable no-param-reassign */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport Button from 'atoms/button/Button';\nimport CheckboxAdmin from 'atoms/checkboxadmin/CheckboxAdmin';\nimport { IconCheck } from 'tabler-icons';\nimport Accordion from 'atoms/accordion/Accordion';\nimport isEmpty from 'lib/emptyValues';\nimport styles from './SortableList.module.css';\n\nconst VARIANTS = {\n filter: {\n order: 'filterOrder',\n title: 'SELECTION_TEXT',\n id: 'sel_var',\n },\n breakby: {\n order: 'breakbyOrder',\n title: 'breakbyText',\n id: 'breakbyVar',\n },\n selection: {\n order: 'SELECTION_ORDER',\n title: 'SELECTION_TEXT',\n id: 'sel_var',\n },\n};\n\nconst SortableList = ({ data, isSaving, updateFunction, variant }) => {\n const { order, title, id } = VARIANTS[variant];\n const activeItems = data.filter(a => a.isActive).length;\n\n const performMoveUp = (index, listItem) => {\n if (index === 0 && listItem[order] != null) {\n return;\n }\n\n const itemList = data.filter(item => item.isActive);\n const unsortedItems = data.filter(item => !item.isActive);\n\n if (index > 0 && itemList[index - 1][order] != null)\n itemList[index - 1][order] += 1;\n\n if (listItem[order] == null) {\n listItem[order] = index;\n } else {\n listItem[order] -= 1;\n }\n\n updateFunction([\n ...itemList.sort((a, b) => (a[order] > b[order] ? 1 : -1)),\n ...unsortedItems,\n ]);\n };\n\n const performMoveDown = (index, listItem) => {\n const itemList = data.filter(item => item.isActive);\n const unsortedItems = data.filter(item => !item.isActive);\n\n if (index === itemList.length - 1) return;\n\n if (itemList[index + 1][order] != null) itemList[index + 1][order] -= 1;\n\n if (listItem[order] == null) {\n listItem[order] = index;\n } else {\n listItem[order] += 1;\n }\n\n updateFunction([\n ...itemList.sort((a, b) => (a[order] > b[order] ? 1 : -1)),\n ...unsortedItems,\n ]);\n };\n\n const handleItemUpdate = (index, listItem, property, value = null) => {\n const newList = data.map(item => {\n if (item[id] === listItem[id]) {\n const updatedItem = {\n ...item,\n // TODO: Consider this\n [property]: value !== null ? value : !item[property],\n [order]: property === 'isActive' ? activeItems : item[order],\n };\n\n return updatedItem;\n }\n if (item[order] > index && item[property]) {\n item[order] -= 1;\n }\n return item;\n });\n\n updateFunction(newList);\n };\n\n const filterType = variant === 'filter' || variant === 'selection';\n\n return (\n \n \n \n \n \n \n {filterType ? : }\n {!filterType && }\n \n \n \n \n {variant === 'breakby' && }\n \n \n \n {data\n .sort((a, b) => a[order] - b[order])\n .sort((a, b) => {\n if (a.isActive === b.isActive) return 0;\n if (a.isActive) return -1;\n return 1;\n })\n .map((item, i) => (\n \n \n {!filterType && (\n \n )}\n \n \n \n \n {variant === 'breakby' && (\n \n )}\n \n ))}\n \n
    \n \n Ordning för{' '}\n {filterType ? 'filtervariabler' : 'presentationsvariabler'}\n
    FilterPresentationsvariabelFörvalt alternativOrdningAktivAlfabetiskNummerordningOmvänd ordning (diagram)
    \n {/* TODO: Merge with: components/admin/salaryprofileconfig/selectionitem/SelectionItem' */}\n {variant === 'filter' || variant === 'selection' ? (\n \n
    \n {item.options ? (\n item.options\n .filter(({ value }) => !isEmpty(value))\n .sort((a, b) =>\n item.sortOptionsByNumber\n ? Number(a.value) - Number(b.value)\n : a.description.localeCompare(b.description, 'sv')\n )\n .map(({ description }, index) => (\n // eslint-disable-next-line\n {description}\n ))\n ) : (\n \n )}\n
    \n
    \n ) : (\n item[title]\n )}\n
    \n {i === 0 && (\n \n )}\n \n performMoveUp(i, item)}\n icon=\"ArrowUp\"\n label=\"\"\n altText={`Flytta upp ${item[title]}`}\n disabled={!item.isActive || isSaving || i === 0}\n />\n performMoveDown(i, item)}\n icon=\"ArrowDown\"\n label=\"\"\n altText={`Flytta ner ${item[title]}`}\n disabled={\n !item.isActive ||\n isSaving ||\n i === data.filter(a => a.isActive).length - 1\n }\n />\n \n handleItemUpdate(i, item, 'isActive')}\n />\n \n \n {filterType ? (\n {\n return handleItemUpdate(\n i,\n item,\n 'sortOptionsByNumber',\n false\n );\n }}\n disabled={!item.isActive}\n checked={item.sortOptionsByNumber === false}\n />\n ) : (\n {\n return handleItemUpdate(\n i,\n item,\n 'sortOptionsByLetters',\n true\n );\n }}\n disabled={!item.isActive}\n checked={item.sortOptionsByLetters === true}\n />\n )}\n \n \n \n {filterType ? (\n {\n return handleItemUpdate(\n i,\n item,\n 'sortOptionsByNumber',\n true\n );\n }}\n disabled={!item.isActive}\n checked={item.sortOptionsByNumber === true}\n />\n ) : (\n {\n return handleItemUpdate(\n i,\n item,\n 'sortOptionsByLetters',\n false\n );\n }}\n disabled={!item.isActive}\n checked={item.sortOptionsByLetters === false}\n />\n )}\n \n \n \n handleItemUpdate(i, item, 'isReverse', !item.isReverse)\n }\n />\n
    \n );\n};\n\nSortableList.propTypes = {\n data: PropTypes.arrayOf(PropTypes.shape({})).isRequired,\n isSaving: PropTypes.bool.isRequired,\n updateFunction: PropTypes.func.isRequired,\n variant: PropTypes.oneOf(['filter', 'breakby', 'selection']).isRequired,\n};\n\nexport default SortableList;\n","import Button from 'atoms/button/Button';\nimport ButtonBar from 'atoms/buttonbar/ButtonBar';\nimport Select from 'atoms/select/Select';\nimport PropTypes from 'prop-types';\nimport React, { useState } from 'react';\nimport { toast, ToastContainer } from 'react-toastify';\nimport 'react-toastify/dist/ReactToastify.css';\nimport ApiService from 'services/ApiService';\nimport { useAuth } from 'services/UseAuth';\nimport SortableList from '../level3advanced/datasourceconfig/sortablelist/SortableList';\nimport styles from './SalaryProfileConfig.module.css';\n\nconst SalaryProfileConfig = ({ situations, setSituations }) => {\n const [selectionList, setSelectionList] = useState();\n const [currentSituation, setCurrentSituation] = useState();\n const [isSaving, setIsSaving] = useState(false);\n const { user } = useAuth();\n\n const handleSubmit = () => {\n setIsSaving(true);\n const situationId = currentSituation.id; // TODO: Hämta upp situationsid\n\n const request = {\n selections: selectionList.map(selection => {\n return {\n id: selection.id,\n isActive: selection.isActive,\n selectionOrder: selection.SELECTION_ORDER,\n sortOptionsByNumber: selection.sortOptionsByNumber,\n };\n }),\n };\n\n ApiService.updateSelections(situationId, request, user.token)\n .then(data => {\n const tempData = [...situations];\n const index = tempData.findIndex(\n situation => situation.id === situationId\n );\n\n if (index > -1) {\n tempData[index] = data;\n }\n\n setSituations(tempData);\n toast.success('Situation Uppdaterad');\n })\n .finally(() => setIsSaving(false));\n };\n\n return (\n
    \n \n
    \n
    \n {\n const { value } = evt.target;\n if (value !== null && value !== undefined && value !== '') {\n const selectedSituationId = value;\n\n const selectedSituation = situations.find(\n situation => situation.id === selectedSituationId\n );\n console.log('Situation');\n console.log(selectedSituation.id);\n console.log(selectedSituation.name);\n console.log('Selections');\n console.log(selectedSituation.selections);\n\n setSelectionList(selectedSituation.selections);\n setCurrentSituation({ id: selectedSituation.id });\n } else {\n setSelectionList(null);\n setCurrentSituation(null);\n }\n }}\n options={\n situations && [\n { desc: 'Ingen vald', key: '', value: '' },\n ...situations\n .filter(situation => situation.isActive)\n .map((situation, i) => ({\n key: situation.id,\n value: situation.id, // Konvertera indexet till en sträng\n desc: `${situation.name} - ${situation.year}`,\n })),\n ]\n }\n />\n
    \n
    \n {selectionList && (\n \n )}\n {currentSituation && (\n \n {/* TODO: Om man gör ändringar borde knappen bli enabled */}\n handleSubmit()}\n label=\"Spara\"\n altText=\"Spara vald ordning\"\n disabled={isSaving}\n />\n {/*
    \n );\n};\n\nSalaryProfileConfig.propTypes = {\n situations: PropTypes.arrayOf(Object).isRequired,\n setSituations: PropTypes.func.isRequired,\n};\n\nexport default SalaryProfileConfig;\n","/* eslint-disable camelcase */\nimport React from 'react';\nimport styles from './HelpBox.module.css';\n\nconst HelpBox = () => {\n return (\n
    \n

    Hjälp

    \n

    För att konfigurera förbundsanpassningar gör följande:

    \n
      \n
    • Skapa situationer
    • \n
        \n
      • 1..* (en till många)
      • \n
      • Om det bara finns en situation så visas den inte i Enkel vy.
      • \n
      • \n Tjänsten anropar automatiskt SAS och hämtar de år som är inlagda i\n SAS.\n
      • \n
      \n
    • Välj och ordna filter/urval
    • \n
        \n
      • \n Tjänsten anropar automatiskt SAS och hämtar den data (urval) som\n finns där.\n
      • \n
      • Om det bara finns en situation så visas den inte i Enkel vy.
      • \n
      \n
    • Länkar
    • \n
        \n
      • Lägg till flera länkar till förbundets sajt för mer läsning.
      • \n
      \n
    \n
    \n );\n};\n\nHelpBox.propTypes = {};\n\nHelpBox.defaultProps = {};\n\nexport default HelpBox;\n","import ButtonLink from 'atoms/buttonlink/ButtonLink';\nimport Loader from 'atoms/loader/Loader';\nimport Panel from 'atoms/panel/Panel';\nimport Section from 'atoms/section/Section';\nimport Tab from 'atoms/tab/Tab';\nimport TabRow from 'atoms/tabrow/TabRow';\nimport Const from 'const';\nimport useScrollTo from 'hooks/useScrollTo';\nimport React, { useEffect, useState } from 'react';\nimport { useHistory } from 'react-router-dom';\nimport ApiService from 'services/ApiService';\nimport { useAuth } from 'services/UseAuth';\nimport SituationConfig from 'components/admin/situationconfig/SituationConfig';\nimport LinksConfig from '../linksconfig/LinksConfig';\nimport SalaryProfileConfig from '../salaryprofileconfig/SalaryProfileConfig';\nimport HelpBox from './helpbox/HelpBox';\nimport styles from './Level2Simple.module.css';\n\nconst Level2Simple = () => {\n const history = useHistory();\n const ref = useScrollTo('hjalp');\n const { user, signout, autoRefreshToken } = useAuth();\n const { token } = user;\n\n const [activeTab, setActiveTab] = useState('situation');\n const [situations, setSituations] = useState();\n const [loadingSituations, setLoadingSituations] = useState(false);\n\n useEffect(() => {\n if (user.role === 'redaktor') return;\n setLoadingSituations(true);\n ApiService.getSituations(token)\n .then(data => {\n setSituations(data);\n })\n .then(() => autoRefreshToken(token))\n .catch(error => {\n if (error.status === 401) {\n signout();\n history.push('/logga-ut');\n }\n })\n .finally(() => setLoadingSituations(false));\n // eslint-disable-next-line\n }, [token, signout, history]);\n\n if (user.role === 'redaktor')\n return (\n \n
    \n \n
    \n
    \n );\n\n // admins\n return (\n \n
    \n \n setActiveTab('situation')}\n />\n setActiveTab('statistics')}\n />\n setActiveTab('links')}\n />\n\n history.push('#hjalp')}\n />\n \n\n {loadingSituations ? (\n
    \n \n
    \n ) : (\n <>\n {situations && (\n <>\n {activeTab === 'situation' && situations && (\n \n )}\n {activeTab === 'statistics' && situations && (\n \n )}\n {activeTab === 'links' && }\n \n )}\n \n )}\n
    \n \n
    \n
    \n
    \n );\n};\n\nexport default Level2Simple;\n","/* eslint-disable camelcase */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport styles from './SectionAdmin.module.css';\n\nconst SectionAdmin = ({title, children}) => {\n return (\n
    \n

    \n {title}\n

    \n
    \n {children}\n
    \n
    \n );\n};\n\nSectionAdmin.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n ]).isRequired,\n title: PropTypes.string.isRequired\n};\n\nSectionAdmin.defaultProps = {\n \n};\n\nexport default SectionAdmin;\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport SectionAdmin from 'atoms/sectionadmin/SectionAdmin';\nimport Button from 'atoms/button/Button';\nimport DataSourceSelect from 'components/admin/datasourceselect/DataSourceSelect';\nimport { useAuth } from 'services/UseAuth';\nimport ApiService from 'services/ApiService';\nimport Loader from 'atoms/loader/Loader';\nimport ButtonBar from 'atoms/buttonbar/ButtonBar';\nimport styles from './LoadConfiguration.module.css';\n\nfunction LoadConfiguration({\n breakbys,\n dataSources,\n dsl1,\n dsl2,\n filters,\n isSaving,\n previousYear,\n setBreakbys,\n setFilters,\n toastMessage,\n year,\n role,\n}) {\n const [isLoading, setIsLoading] = useState(false);\n const [loadConfig, setLoadConfig] = useState(false);\n\n const [copyYear, setCopyYear] = useState(previousYear || year);\n const [copyDsl1, setCopyDsl1] = useState(dsl1);\n const [copyDsl2, setCopyDsl2] = useState(dsl2);\n const [copyRole, setCopyRole] = useState(role);\n\n const {\n user: { forbund, token },\n } = useAuth();\n\n // Reduce an array into an object\n // [ { sel_var: \"ARBSEK\", filterOrder: 0, isActive: true } ] => { \"ARBSEK\": { filterOrder: 0, isActive: true } }\n const createObject = ({ data, key, identificator, orderBy, sortBy }) =>\n data[key].reduce((acc, curr) => {\n if (!acc[curr[identificator]]) {\n acc[curr[identificator]] = {\n [orderBy]: curr[orderBy],\n [sortBy]: curr[sortBy],\n isActive: curr.isActive,\n };\n }\n\n return acc;\n }, {});\n\n // Update array with copied data\n const updateArray = ({ data, object, identificator, orderBy, sortBy }) => {\n let count = 0;\n const updatedData = data.map(item => {\n const tempItem = { ...item };\n\n if (object[tempItem[identificator]]) {\n tempItem[orderBy] = object[tempItem[identificator]][orderBy];\n tempItem[sortBy] = object[tempItem[identificator]][sortBy];\n tempItem.isActive = object[tempItem[identificator]].isActive;\n\n count += 1;\n }\n\n return tempItem;\n });\n\n return [updatedData, count];\n };\n\n useEffect(() => {\n if (!loadConfig) return;\n if (\n dataSources == null ||\n !dataSources.some(\n ds =>\n ds.YEAR === copyYear && ds.DSL1 === copyDsl1 && ds.DSL2 === copyDsl2\n ) ||\n isLoading\n )\n return;\n setIsLoading(true);\n\n const request = {\n forbund,\n year: copyYear,\n dsl1: copyDsl1,\n dsl2: copyDsl2,\n role,\n };\n\n ApiService.getPresentations(request, token)\n .then(data => {\n const breakbyObject = createObject({\n data,\n key: 'breakbys',\n identificator: 'breakbyVar',\n orderBy: 'breakbyOrder',\n sortBy: 'sortOptionsByLetters',\n });\n\n const filterObject = createObject({\n data,\n key: 'filters',\n identificator: 'sel_var',\n orderBy: 'filterOrder',\n sortBy: 'sortOptionsByNumber',\n });\n\n const [updatedBreakbys, breakbyCount] = updateArray({\n data: breakbys,\n object: breakbyObject,\n identificator: 'breakbyVar',\n orderBy: 'breakbyOrder',\n sortBy: 'sortOptionsByLetters',\n });\n\n setBreakbys(updatedBreakbys);\n\n const [updatedFilters, filterCount] = updateArray({\n data: filters,\n object: filterObject,\n identificator: 'sel_var',\n orderBy: 'filterOrder',\n sortBy: 'sortOptionsByNumber',\n });\n\n setFilters(updatedFilters);\n\n if (breakbyCount > 0 || filterCount > 0) {\n toastMessage(\n 'info',\n `Kopieringen av konfigurationen lyckades, hittade ${breakbyCount} matchande presentationssätt och \n ${filterCount} matchande filter. Spara för att godkänna konfigurationen.`\n );\n } else {\n toastMessage(\n 'warning',\n `Försökte utföra kopiering av konfiguration, men datakällorna innehåller inga matchande presentationssätt \n eller filter.`\n );\n }\n })\n .catch(() => {\n toastMessage('error', 'Kopiering av konfiguration misslyckad');\n })\n .finally(() => {\n setIsLoading(false);\n setLoadConfig(false);\n });\n // eslint-disable-next-line\n }, [loadConfig]);\n\n return (\n \n
    \n {isLoading && (\n
    \n \n
    \n )}\n

    Välj en annan statistikkälla att kopiera konfiguration från.

    \n \n \n setLoadConfig(true)}\n variant=\"primary\"\n label=\"Ladda in konfiguration\"\n altText=\"Ladda in konfiguration\"\n disabled={isSaving || isLoading}\n />\n \n
    \n
    \n );\n}\n\nLoadConfiguration.propTypes = {\n breakbys: PropTypes.arrayOf(PropTypes.shape({})).isRequired,\n dataSources: PropTypes.arrayOf(PropTypes.shape({})).isRequired,\n dsl1: PropTypes.string.isRequired,\n dsl2: PropTypes.string.isRequired,\n filters: PropTypes.arrayOf(PropTypes.shape({})).isRequired,\n isSaving: PropTypes.bool.isRequired,\n previousYear: PropTypes.number,\n setBreakbys: PropTypes.func.isRequired,\n setFilters: PropTypes.func.isRequired,\n toastMessage: PropTypes.func.isRequired,\n year: PropTypes.number.isRequired,\n role: PropTypes.string.isRequired,\n};\n\nLoadConfiguration.defaultProps = {\n previousYear: null,\n};\n\nexport default LoadConfiguration;\n","/* eslint-disable camelcase */\nimport Button from 'atoms/button/Button';\nimport ButtonBar from 'atoms/buttonbar/ButtonBar';\nimport Loader from 'atoms/loader/Loader';\nimport SectionAdmin from 'atoms/sectionadmin/SectionAdmin';\nimport Tab from 'atoms/tab/Tab';\nimport TabRow from 'atoms/tabrow/TabRow';\nimport PropTypes from 'prop-types';\nimport React, { useEffect, useState } from 'react';\nimport ApiService from 'services/ApiService';\nimport { useAuth } from 'services/UseAuth';\nimport CheckboxAdmin from 'atoms/checkboxadmin/CheckboxAdmin';\nimport DataSourceSelect from '../../datasourceselect/DataSourceSelect';\nimport SortableList from './sortablelist/SortableList';\nimport styles from './DataSourceConfig.module.css';\nimport LoadConfiguration from './loadconfiguration/LoadConfiguration';\n\nconst DataSourceConfig = ({\n dataSources,\n toastMessage,\n isSaving,\n setIsSaving,\n}) => {\n const [activeTab, setActiveTab] = useState('filter');\n\n const [dsl1, setDsl1] = useState('');\n const [dsl2, setDsl2] = useState('');\n const [year, setYear] = useState();\n const [role, setRole] = useState('medlem');\n\n const [isActive, setIsActive] = useState(true);\n const [breakbys, setBreakbys] = useState([]);\n const [filters, setFilters] = useState([]);\n\n const [loadConfiguration, setLoadConfiguration] = useState(false);\n const [isLoading, setIsLoading] = useState(false);\n\n const {\n user: { forbund, token },\n } = useAuth();\n\n const handleSubmit = () => {\n if (isSaving) return;\n\n setIsSaving(true);\n\n const request = {\n forbund,\n dsl1,\n dsl2,\n year,\n isActive,\n breakbys,\n filters,\n role,\n };\n\n ApiService.postPresentations(request, token)\n .then(() =>\n toastMessage(\n 'success',\n 'Nivå 3 presentations och filtervariabler sparade.'\n )\n )\n .finally(() => setIsSaving(false));\n };\n\n // Sort the array, set the order of each item\n const sortData = (data, orderParameter) =>\n data\n .sort(a => (a[orderParameter] == null ? 1 : -1))\n .sort((a, b) => a[orderParameter] - b[orderParameter])\n .sort((a, b) => {\n if (a.isActive === b.isActive) return 0;\n if (a.isActive) return -1;\n return 1;\n })\n .map((item, index) => {\n const tempItem = { ...item };\n tempItem[orderParameter] = index;\n return tempItem;\n });\n\n useEffect(() => {\n if (isLoading) return;\n if (\n dataSources == null ||\n !dataSources.some(\n ds => ds.YEAR === year && ds.DSL1 === dsl1 && ds.DSL2 === dsl2\n )\n ) {\n setIsActive(true);\n setBreakbys([]);\n setFilters([]);\n return;\n }\n\n setIsLoading(true);\n\n ApiService.getPresentations(\n {\n forbund,\n year,\n dsl1,\n dsl2,\n role,\n },\n token\n )\n .then(data => {\n setBreakbys(sortData(data.breakbys, 'breakbyOrder'));\n setFilters(sortData(data.filters, 'filterOrder'));\n setIsActive(data.isActive);\n })\n .finally(() => setIsLoading(false));\n // eslint-disable-next-line\n }, [year, dsl1, dsl2, role]);\n\n return (\n <>\n \n
    \n

    \n Varje datakälla som du väljer kan ha sin egen uppsättning filter\n (urval) och presentationssätt.\n

    \n \n
    \n\n {isLoading && (\n
    \n \n
    \n )}\n\n {(breakbys.length > 0 || filters.length > 0) && !isLoading && (\n <>\n setIsActive(prevState => !prevState)}\n />\n \n setActiveTab('filter')}\n />\n setActiveTab('presentation')}\n />\n \n \n \n
    \n\n \n \n \n \n setLoadConfiguration(true)}\n variant=\"secondary\"\n label=\"Ladda in konfiguration\"\n altText=\"Ladda in konfiguration från annan källa\"\n disabled={isSaving}\n />\n handleSubmit(isSaving)}\n variant=\"primary\"\n label=\"Spara\"\n altText=\"Spara löneprofil\"\n disabled={isSaving}\n />\n \n \n )}\n \n {loadConfiguration && (\n ds.DSL1 === dsl1 && ds.DSL2 === dsl2)\n .sort((a, b) => b.YEAR - a.YEAR)\n .find(ds => ds.YEAR < year)?.YEAR\n }\n />\n )}\n \n );\n};\n\nDataSourceConfig.propTypes = {\n dataSources: PropTypes.arrayOf(Object),\n toastMessage: PropTypes.func.isRequired,\n isSaving: PropTypes.bool.isRequired,\n setIsSaving: PropTypes.func.isRequired,\n};\n\nDataSourceConfig.defaultProps = {\n dataSources: null,\n};\n\nexport default DataSourceConfig;\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport DataSourceSelect from 'components/admin/datasourceselect/DataSourceSelect';\n\nexport default function DefaultSourceConfig({\n dataSources,\n defaultDataSource,\n defaultYearFromDeepAnalysis,\n defaultYearToDeepAnalysis,\n setDefaultDataSource,\n}) {\n const [year, setYear] = useState(defaultDataSource?.year || 0);\n const [dsl1, setDsl1] = useState(defaultDataSource?.DSL1 || '');\n const [dsl2, setDsl2] = useState(defaultDataSource?.DSL2 || '');\n\n useEffect(() => {\n if (year && dsl1 && dsl2) {\n setDefaultDataSource({ year, DSL1: dsl1, DSL2: dsl2 });\n return;\n }\n\n if (year && dsl1) {\n setDefaultDataSource({ year, DSL1: dsl1, DSL2: null });\n }\n // eslint-disable-next-line\n }, [year, dsl1, dsl2]);\n\n useEffect(() => {\n if (!defaultDataSource) return;\n const { year: YEAR, DSL1, DSL2 } = defaultDataSource;\n\n if (year !== YEAR) setYear(YEAR);\n if (dsl1 !== DSL1) setDsl1(DSL1);\n if (dsl2 !== DSL2 && DSL2) setDsl2(DSL2);\n // eslint-disable-next-line\n }, [\n defaultDataSource?.year,\n defaultDataSource?.DSL1,\n defaultDataSource?.DSL2,\n ]);\n\n return (\n {\n // Administrator might not have configured the \"from year\"\n if (!defaultYearFromDeepAnalysis) {\n return (\n ds.YEAR >= defaultYearToDeepAnalysis - 1 &&\n ds.YEAR <= defaultYearToDeepAnalysis\n );\n }\n\n return (\n ds.YEAR >= defaultYearFromDeepAnalysis &&\n ds.YEAR <= defaultYearToDeepAnalysis\n );\n })\n }\n year={year}\n setYear={setYear}\n dsl1={dsl1}\n setDsl1={setDsl1}\n dsl2={dsl2}\n setDsl2={setDsl2}\n />\n );\n}\n\nDefaultSourceConfig.propTypes = {\n dataSources: PropTypes.arrayOf(PropTypes.shape({})).isRequired,\n defaultYearFromDeepAnalysis: PropTypes.number,\n defaultYearToDeepAnalysis: PropTypes.number,\n defaultDataSource: PropTypes.shape({\n year: PropTypes.number,\n DSL1: PropTypes.string,\n DSL2: PropTypes.string,\n }),\n setDefaultDataSource: PropTypes.func.isRequired,\n};\n\nDefaultSourceConfig.defaultProps = {\n defaultYearFromDeepAnalysis: null,\n defaultYearToDeepAnalysis: null,\n defaultDataSource: null,\n};\n","import Button from 'atoms/button/Button';\nimport ButtonBar from 'atoms/buttonbar/ButtonBar';\nimport CheckboxAdmin from 'atoms/checkboxadmin/CheckboxAdmin';\nimport SectionAdmin from 'atoms/sectionadmin/SectionAdmin';\nimport Select from 'atoms/select/Select';\nimport PropTypes from 'prop-types';\nimport React, { useEffect, useState } from 'react';\nimport ApiService from 'services/ApiService';\nimport { useAuth } from 'services/UseAuth';\nimport DefaultSourceConfig from './defaultsourceconfig/DefaultSourceConfig';\nimport styles from './StandardConfig.module.css';\n\nconst StandardYearConfig = ({ availableYears, toastMessage, dataSources }) => {\n const [\n defaultYearFromDeepAnalysis,\n setDefaultYearFromDeepAnalysis,\n ] = useState();\n const [defaultYearToDeepAnalysis, setDefaultYearToDeepAnalysis] = useState();\n const [defaultDataSource, setDefaultDataSource] = useState();\n const [allowCustomPresentation, setAllowCustomPresentation] = useState(false);\n\n const [isLoading, setIsLoading] = useState(false);\n const [isSaving, setIsSaving] = useState(false);\n const { user } = useAuth();\n\n const handleChangeStandardConfig = () => {\n setIsSaving(true);\n const request = {\n defaultDataSource,\n defaultYearFromDeepAnalysis:\n defaultYearFromDeepAnalysis < defaultYearToDeepAnalysis\n ? defaultYearFromDeepAnalysis\n : 0,\n defaultYearToDeepAnalysis,\n allowCustomPresentation,\n };\n\n ApiService.postConfiguredYear(user.unionId, request, user.token)\n .then(() => toastMessage('success', 'Standardkonfiguration uppdaterad'))\n .catch(err => {\n toastMessage('error', 'Fel vid uppdatering av standardkonfiguration');\n throw err;\n })\n .finally(() => setIsSaving(false));\n };\n\n useEffect(() => {\n setIsLoading(true);\n ApiService.getUnion(user.token)\n .then(data => {\n setDefaultDataSource(data.defaultDataSource);\n setDefaultYearFromDeepAnalysis(data.defaultYearFromDeepAnalysis);\n setDefaultYearToDeepAnalysis(data.defaultYearToDeepAnalysis);\n setAllowCustomPresentation(data?.allowCustomPresentation);\n })\n .finally(() => setIsLoading(false));\n }, [user]);\n\n return (\n \n

    Ställ in standardvärden för nivå 3

    \n

    Konfigurera standardår

    \n

    \n Utöka medlemmars befogenheter i nivå 3 genom att ange ett årsintervall\n inom vilket medlemmar får se lönestatistik. Begränsa medlemmars rätt att\n hämta rapporter genom att inte alls ange ett "år från" eller\n välja året innan "år till" (ex. år från: 2020, år till: 2021).\n

    \n

    \n Förtroendevalda ser alla urval och presentationssätt och kan också välja\n olika år.\n

    \n
    \n {\n return setDefaultYearFromDeepAnalysis(Number(evt.target.value));\n }}\n options={[\n {\n key: 'arfran_null',\n value: '',\n desc: 'Välj ett startår för intervallet...',\n },\n ...availableYears\n .filter(y => y < defaultYearToDeepAnalysis)\n .sort()\n .map(year => ({\n key: year,\n value: year,\n desc: year,\n })),\n ]}\n />\n {\n return setDefaultYearToDeepAnalysis(Number(evt.target.value));\n }}\n options={[\n {\n key: 'artill_null',\n value: '',\n desc: 'Välj ett slutår för intervallet...',\n },\n ...availableYears.sort().map(year => ({\n key: year,\n value: year,\n desc: year,\n })),\n ]}\n />\n
    \n

    Konfigurera standardkälla

    \n

    \n Välj en källa inom intervallet för standardår som är förvald för\n användare av nivå 3\n

    \n \n

    Tillåt egen rapport

    \n

    \n Tillåt medlemmar att välja "egen rapport" under presentationer\n för att skapa en egen lönerapport.\n

    \n setAllowCustomPresentation(prevState => !prevState)}\n />\n
    \n \n handleChangeStandardConfig()}\n variant=\"primary\"\n label=\"Spara\"\n altText=\"Spara sektion\"\n disabled={\n defaultYearFromDeepAnalysis === null ||\n defaultYearToDeepAnalysis === null ||\n isSaving\n }\n />\n \n
    \n
    \n );\n};\n\nStandardYearConfig.propTypes = {\n availableYears: PropTypes.arrayOf(PropTypes.number).isRequired,\n toastMessage: PropTypes.func.isRequired,\n dataSources: PropTypes.arrayOf(PropTypes.shape({})).isRequired,\n};\n\nStandardYearConfig.defaultProps = {};\n\nexport default StandardYearConfig;\n","import React, { useEffect, useState } from 'react';\nimport { useHistory } from 'react-router-dom';\nimport { toast, ToastContainer } from 'react-toastify';\nimport Loader from 'atoms/loader/Loader';\nimport Panel from 'atoms/panel/Panel';\nimport Section from 'atoms/section/Section';\nimport Const from 'const';\nimport 'react-toastify/dist/ReactToastify.css';\nimport ApiService from 'services/ApiService';\nimport { useAuth } from 'services/UseAuth';\nimport DataSourceConfig from './datasourceconfig/DataSourceConfig';\nimport styles from './Level3Advanced.module.css';\nimport StandardConfig from './standardconfig/StandardConfig';\n\nconst Level3Advanced = () => {\n const { user, signout, autoRefreshToken } = useAuth();\n const { token, forbund } = user;\n\n const history = useHistory();\n\n // Datasources.\n const [dataSources, setDataSources] = useState();\n const [availableYears, setAvailableYears] = useState(undefined);\n const [isLoading, setIsLoading] = useState(false);\n const [isSaving, setIsSaving] = useState(false);\n\n // INIT.\n useEffect(() => {\n setIsLoading(true);\n const request = {\n forbund: [forbund],\n };\n ApiService.getFds(request, token)\n .then(data => setDataSources(data))\n .then(() => {\n autoRefreshToken(token);\n })\n .catch(error => {\n if (error.status === 401) {\n signout();\n history.push('/logga-ut');\n }\n })\n .finally(() => setIsLoading(false));\n // eslint-disable-next-line\n }, [token, forbund]);\n\n useEffect(() => {\n if (dataSources == null) return;\n setAvailableYears(\n dataSources\n .reduce((acc, curr) => {\n if (!acc.includes(curr.YEAR)) acc.push(curr.YEAR);\n return acc;\n }, [])\n .sort()\n );\n }, [dataSources]);\n\n const toastMessage = (type, msg) => {\n if (type === 'success') {\n toast.success(msg);\n }\n if (type === 'error') {\n toast.error(msg);\n }\n if (type === 'warning') {\n toast.warning(msg);\n }\n if (type === 'info') {\n toast.info(msg);\n }\n };\n\n return (\n \n
    \n \n {isLoading ? (\n
    \n \n
    \n ) : (\n <>\n {availableYears && (\n \n )}\n \n \n )}\n
    \n
    \n );\n};\n\nexport default Level3Advanced;\n","/* eslint-disable camelcase */\nimport React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport Button from 'atoms/button/Button';\nimport Input from 'atoms/input/Input';\nimport ButtonBar from 'atoms/buttonbar/ButtonBar';\nimport { useAuth } from 'services/UseAuth';\nimport ApiService from 'services/ApiService';\nimport Panel from 'atoms/panel/Panel';\nimport styles from './PreviewDataSourceCreate.module.css';\nimport DataSourceSelect from '../../datasourceselect/DataSourceSelect';\n\nconst PreviewDataSourceCreate = ({\n configureLvl1,\n dataSources,\n setCreateNewSituation,\n setSituationCopied,\n setSituationCreated,\n setSituations,\n situationToCopy,\n}) => {\n const [name, setName] = useState('');\n const [description, setDescription] = useState('');\n const [dsl1, setDsl1] = useState('');\n const [dsl2, setDsl2] = useState('');\n const [year, setYear] = useState();\n\n const [saveDisabled, setSaveDisabled] = useState(true);\n\n const { user } = useAuth();\n\n const handleSubmit = evt => {\n setSaveDisabled(true);\n evt.preventDefault();\n\n // Send network request.\n const request = {\n name,\n description,\n dsl1,\n dsl2,\n year,\n isActive: situationToCopy === null, // FIXME: Ska isActive defaulta till true när man skapar en ny?, åtminstone inte när man kopierar\n isPreview: true,\n forbundsKod: configureLvl1 ? 'sa' : null,\n };\n\n const createSituation = new Promise((resolve, reject) =>\n ApiService.createSituation(request, user.token)\n .then(data => resolve(data))\n .catch(error => reject(error))\n );\n\n if (situationToCopy == null) {\n createSituation.then(data => {\n setSituations(prevState => [...prevState, data]);\n setCreateNewSituation(prevState => !prevState);\n setSituationCreated(true);\n });\n } else {\n createSituation.then(createdSituation => {\n const activeSelections = situationToCopy.selections.filter(\n situation => situation.isActive\n );\n\n const updateRequest = {\n selections: createdSituation.selections.map(selection => {\n const index = [...activeSelections]\n .map(({ sel_var }) => sel_var)\n .findIndex(selVar => selVar === selection.sel_var);\n\n return {\n id: selection.id,\n selectionOrder:\n index > -1\n ? activeSelections[index].SELECTION_ORDER\n : selection.SELECTION_ORDER,\n isActive: index > -1,\n };\n }),\n };\n\n ApiService.updateSelections(\n createdSituation.id,\n updateRequest,\n user.token\n ).then(updatedSituation => {\n setSituations(prevState => [...prevState, updatedSituation]);\n setCreateNewSituation(prevState => !prevState);\n setSituationCopied(true);\n });\n });\n }\n };\n\n useEffect(() => {\n if (name.length === 0 || description.length === 0) {\n setSaveDisabled(true);\n return;\n }\n\n if (\n dataSources.some(\n ds => ds.DSL1 === dsl1 && ds.DSL2 === dsl2 && ds.YEAR === year\n )\n ) {\n setSaveDisabled(false);\n } else setSaveDisabled(true);\n }, [name, description, year, dsl1, dsl2, dataSources]);\n\n useEffect(() => {\n if (situationToCopy != null) {\n setName(situationToCopy.name);\n setDescription(situationToCopy.description);\n setYear(situationToCopy.year);\n setDsl1(situationToCopy.DSL1);\n setDsl2(situationToCopy.DSL2 || '');\n }\n }, [situationToCopy]);\n\n return (\n \n
    \n
    \n setName(evt.target.value)}\n placeholder=\"Namn\"\n type=\"text\"\n value={name}\n />\n setDescription(evt.target.value)}\n placeholder=\"Beskrivning\"\n type=\"text\"\n value={description}\n />\n \n \n
    \n
    \n \n handleSubmit(evt)}\n label=\"Spara\"\n altText=\"Spara statistikkälla\"\n disabled={saveDisabled}\n />\n setCreateNewSituation(prevState => !prevState)}\n />\n \n
    \n );\n};\n\nPreviewDataSourceCreate.propTypes = {\n configureLvl1: PropTypes.bool.isRequired,\n dataSources: PropTypes.arrayOf(Object).isRequired,\n setCreateNewSituation: PropTypes.func.isRequired,\n setSituationCopied: PropTypes.func.isRequired,\n setSituationCreated: PropTypes.func.isRequired,\n setSituations: PropTypes.func.isRequired,\n situationToCopy: PropTypes.shape({\n name: PropTypes.string,\n description: PropTypes.string,\n year: PropTypes.number,\n DSL1: PropTypes.string,\n DSL2: PropTypes.string,\n selections: PropTypes.arrayOf(Object),\n }),\n};\n\nPreviewDataSourceCreate.defaultProps = {\n situationToCopy: null,\n};\n\nexport default PreviewDataSourceCreate;\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport Button from 'atoms/button/Button';\nimport ButtonBar from 'atoms/buttonbar/ButtonBar';\nimport CheckboxAdmin from 'atoms/checkboxadmin/CheckboxAdmin';\nimport InputReadOnly from 'atoms/inputreadonly/InputReadOnly';\nimport Input from 'atoms/input/Input';\nimport Textarea from 'atoms/textarea/Textarea';\nimport Panel from 'atoms/panel/Panel';\nimport styles from './PreviewDataSourceCard.module.css';\n\nconst PreviewDataSourceCard = ({\n copySituation,\n deleteSituation,\n situation,\n updateSituation,\n}) => {\n const [editMode, setEditMode] = useState(false);\n\n const [situationName, setSituationName] = useState(situation.name);\n const [situationDescription, setSituationDescription] = useState(\n situation.description\n );\n const [situationIsActive, setSituationIsActive] = useState(\n situation.isActive\n );\n\n const handleDelete = () => {\n const situationToDelete = {\n id: situation.id,\n name: situationName,\n description: situationDescription,\n isActive: situationIsActive,\n };\n\n deleteSituation(situationToDelete);\n setEditMode(prevState => !prevState);\n };\n\n const handleUpdate = () => {\n const updatedSituation = {\n id: situation.id,\n name: situationName,\n description: situationDescription,\n isActive: situationIsActive,\n };\n\n updateSituation(updatedSituation);\n setEditMode(prevState => !prevState);\n };\n\n return (\n \n
    \n
    \n
    \n {!editMode && (\n \n )}\n {editMode && (\n setSituationName(e.target.value)}\n placeholder=\"Namn\"\n type=\"text\"\n value={situationName}\n />\n )}\n {!editMode && (\n \n )}\n {editMode && (\n setSituationDescription(e.target.value)}\n />\n )}\n \n
    \n\n
    \n \n \n \n
    \n
    \n\n
    \n \n setSituationIsActive(prevState => !prevState)}\n />\n {editMode ? (\n <>\n \n \n setEditMode(prevState => !prevState)}\n label=\"Avbryt\"\n />\n \n ) : (\n <>\n copySituation(situation)}\n />\n setEditMode(prevState => !prevState)}\n label=\"Redigera\"\n icon=\"Edit\"\n altText=\"Redigera statistikkälla\"\n />\n \n )}\n \n
    \n \n );\n};\n\nPreviewDataSourceCard.propTypes = {\n deleteSituation: PropTypes.func.isRequired,\n copySituation: PropTypes.func.isRequired,\n situation: PropTypes.shape({\n id: PropTypes.string,\n name: PropTypes.string,\n isActive: PropTypes.bool,\n description: PropTypes.string,\n DSL1: PropTypes.string,\n DSL2: PropTypes.string,\n year: PropTypes.number,\n }).isRequired,\n updateSituation: PropTypes.func.isRequired,\n};\n\nexport default PreviewDataSourceCard;\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { ToastContainer, toast } from 'react-toastify';\nimport 'react-toastify/dist/ReactToastify.css';\nimport Button from 'atoms/button/Button';\nimport { useAuth } from 'services/UseAuth';\nimport ApiService from 'services/ApiService';\nimport ButtonBar from 'atoms/buttonbar/ButtonBar';\nimport styles from './PreviewDataSourceConfig.module.css';\nimport PreviewDataSourceCreate from './previewdatasourcecreate/PreviewDataSourceCreate';\nimport PreviewDataSourceCard from './previewdatasourcecard/PreviewDataSourceCard';\n\nconst PreviewDataSourceConfig = ({ configureLvl1, setSituations, situations }) => {\n const [createNewSituation, setCreateNewSituation] = useState(false);\n const [dataSources, setDataSources] = useState();\n const [situationToCopy, setSituationToCopy] = useState();\n\n const [situationCopied, setSituationCopied] = useState(false);\n const [situationCreated, setSituationCreated] = useState(false);\n const [situationDeleted, setSituationDeleted] = useState(false);\n const [situationUpdated, setSituationUpdated] = useState(false);\n\n const { user } = useAuth();\n const { token, forbund } = user;\n\n const deleteSituation = situationToDelete => {\n ApiService.deleteSituation(situationToDelete.id, token).then(data => {\n const remainingSituations = situations.filter(\n situation => situation.id !== data\n );\n setSituations(remainingSituations);\n setSituationDeleted(true);\n });\n };\n\n const updateSituation = updatedSituation => {\n ApiService.updateSituation(\n updatedSituation.id,\n updatedSituation,\n token\n ).then(data => {\n const index = situations.findIndex(situation => situation.id === data.id);\n const tempSituations = [...situations];\n if (index !== -1) {\n tempSituations[index] = data;\n }\n setSituations(tempSituations);\n setSituationUpdated(true);\n });\n };\n\n const getDataSources = () => {\n const request = { forbund: configureLvl1 ? ['sa'] : [forbund] };\n ApiService.getFds(request, token).then(data => setDataSources(data));\n };\n\n useEffect(() => {\n getDataSources();\n // eslint-disable-next-line\n }, [token, forbund, configureLvl1]);\n\n useEffect(() => {\n if (\n !situationCopied &&\n !situationCreated &&\n !situationDeleted &&\n !situationUpdated\n )\n return;\n\n if (situationCopied) {\n toast.success('Statistikkälla duplicerad');\n setSituationCopied(false);\n }\n if (situationCreated) {\n toast.success('Statistikkälla skapad');\n setSituationCreated(false);\n }\n if (situationDeleted) {\n toast.success('Statistikkälla borttagen');\n setSituationDeleted(false);\n }\n if (situationUpdated) {\n toast.success('Statistikkälla uppdaterad');\n setSituationUpdated(false);\n }\n }, [situationCopied, situationCreated, situationDeleted, situationUpdated]);\n\n return (\n
    \n \n {situations\n .sort((a, b) => a.name.localeCompare(b.name))\n .sort((a, b) => {\n if (a.DSL2.toLowerCase() === 'df') return -1;\n if (b.DSL2.toLowerCase() !== 'df') return 1;\n return 0;\n })\n .map(situation => (\n {\n setCreateNewSituation(true);\n setSituationToCopy(s);\n }}\n deleteSituation={deleteSituation}\n key={situation.id}\n setSituationUpdated={setSituationUpdated}\n situation={situation}\n updateSituation={updateSituation}\n />\n ))}\n
    \n {!createNewSituation ? (\n \n {\n setCreateNewSituation(prevState => !prevState);\n setSituationToCopy(null);\n }}\n style={{ marginLeft: 'auto' }}\n variant=\"primary\"\n />\n \n ) : (\n \n )}\n
    \n
    \n );\n};\n\nPreviewDataSourceConfig.propTypes = {\n configureLvl1: PropTypes.bool,\n setSituations: PropTypes.func.isRequired,\n situations: PropTypes.arrayOf(Object).isRequired,\n};\n\nPreviewDataSourceConfig.defaultProps = {\n configureLvl1: false,\n};\n\nexport default PreviewDataSourceConfig;\n","import Button from 'atoms/button/Button';\nimport ButtonBar from 'atoms/buttonbar/ButtonBar';\nimport Select from 'atoms/select/Select';\nimport PropTypes from 'prop-types';\nimport React, { useState } from 'react';\nimport { toast, ToastContainer } from 'react-toastify';\nimport 'react-toastify/dist/ReactToastify.css';\nimport ApiService from 'services/ApiService';\nimport { useAuth } from 'services/UseAuth';\nimport SortableList from '../level3advanced/datasourceconfig/sortablelist/SortableList';\nimport styles from './PreviewSalaryProfileConfig.module.css';\n\nconst PreviewSalaryProfileConfig = ({ situations, setSituations }) => {\n const [selectionList, setSelectionList] = useState();\n const [currentSituation, setCurrentSituation] = useState();\n const [isSaving, setIsSaving] = useState(false);\n const { user } = useAuth();\n\n const handleSubmit = () => {\n setIsSaving(true);\n const situationId = currentSituation.id; // TODO: Hämta upp situationsid\n\n const request = {\n selections: selectionList.map(selection => {\n return {\n id: selection.id,\n isActive: selection.isActive,\n selectionOrder: selection.SELECTION_ORDER,\n sortOptionsByNumber: selection.sortOptionsByNumber,\n };\n }),\n };\n\n ApiService.updateSelections(situationId, request, user.token)\n .then(data => {\n const tempData = [...situations];\n const index = tempData.findIndex(\n situation => situation.id === situationId\n );\n\n if (index > -1) {\n tempData[index] = data;\n }\n\n setSituations(tempData);\n toast.success('Statistikkälla uppdaterad');\n })\n .finally(() => setIsSaving(false));\n };\n\n return (\n
    \n \n
    \n
    \n {\n const { value } = evt.target;\n if (value) {\n setSelectionList(situations[Number(value)].selections);\n setCurrentSituation({ id: situations[Number(value)].id });\n } else {\n setSelectionList(null);\n setCurrentSituation(null);\n }\n }}\n options={\n situations && [\n { desc: 'Ingen vald', key: '', value: '' },\n ...situations\n .filter(situation => situation.isActive)\n .map((situation, i) => ({\n key: situation.id,\n value: i,\n desc: `${situation.name} - ${situation.year}`,\n })),\n ]\n }\n />\n
    \n
    \n {selectionList && (\n \n )}\n {currentSituation && (\n \n {/* TODO: Om man gör ändringar borde knappen bli enabled */}\n handleSubmit()}\n label=\"Spara\"\n altText=\"Spara vald ordning\"\n disabled={isSaving}\n />\n {/*
    \n );\n};\n\nPreviewSalaryProfileConfig.propTypes = {\n situations: PropTypes.arrayOf(Object).isRequired,\n setSituations: PropTypes.func.isRequired,\n};\n\nexport default PreviewSalaryProfileConfig;\n","/* eslint-disable camelcase */\nimport React from 'react';\nimport styles from './HelpBox.module.css';\n\nconst HelpBox = () => {\n return (\n
    \n

    Hjälp

    \n

    För att konfigurera förbundsanpassningar gör följande:

    \n
      \n
    • Skapa statistikkällor
    • \n
        \n
      • 1..* (en till många)
      • \n
      • \n Tjänsten anropar automatiskt SAS och hämtar de år som är inlagda i\n SAS.\n
      • \n
      \n
    • Välj och ordna filter/urval
    • \n
        \n
      • \n Tjänsten anropar automatiskt SAS och hämtar den data (urval) som\n finns där.\n
      • \n
      \n
    \n
    \n );\n};\n\nHelpBox.propTypes = {};\n\nHelpBox.defaultProps = {};\n\nexport default HelpBox;\n","import ButtonLink from 'atoms/buttonlink/ButtonLink';\nimport Loader from 'atoms/loader/Loader';\nimport Panel from 'atoms/panel/Panel';\nimport Section from 'atoms/section/Section';\nimport Tab from 'atoms/tab/Tab';\nimport TabRow from 'atoms/tabrow/TabRow';\nimport Const from 'const';\nimport useScrollTo from 'hooks/useScrollTo';\nimport React, { useEffect, useState } from 'react';\nimport { useHistory } from 'react-router-dom';\nimport ApiService from 'services/ApiService';\nimport { useAuth } from 'services/UseAuth';\nimport PreviewDataSourceConfig from 'components/admin/previewdatasourceconfig/PreviewDataSourceConfig';\nimport LinksConfig from '../linksconfig/LinksConfig';\nimport PreviewSalaryProfileConfig from '../previewsalaryprofileconfig/PreviewSalaryProfileConfig';\nimport HelpBox from './helpbox/HelpBox';\nimport styles from './PreviewConfig.module.css';\n\nconst PreviewConfig = () => {\n const history = useHistory();\n const ref = useScrollTo('hjalp');\n const { user, signout, autoRefreshToken } = useAuth();\n const { token } = user;\n\n const [activeTab, setActiveTab] = useState('situation');\n const [situations, setSituations] = useState();\n const [loadingSituations, setLoadingSituations] = useState(false);\n\n useEffect(() => {\n //if (!(user.role === 'admin' && user.forbund.toLowerCase() === 'sa')) return;\n setLoadingSituations(true);\n console.log('getPreviewSituations');\n ApiService.getPreviewSituations(token)\n .then(data => {\n setSituations(data);\n })\n .then(() => autoRefreshToken(token))\n .catch(error => {\n if (error.status === 401) {\n signout();\n history.push('/logga-ut');\n }\n })\n .finally(() => setLoadingSituations(false));\n // eslint-disable-next-line\n }, [token, signout, history]);\n\n // admins\n return (\n \n
    \n \n setActiveTab('situation')}\n />\n setActiveTab('statistics')}\n />\n\n history.push('#hjalp')}\n />\n \n\n {loadingSituations ? (\n
    \n \n
    \n ) : (\n <>\n {situations && (\n <>\n {activeTab === 'situation' && situations && (\n \n )}\n {activeTab === 'statistics' && situations && (\n \n )}\n {activeTab === 'links' && }\n \n )}\n \n )}\n
    \n \n
    \n
    \n
    \n );\n};\n\nexport default PreviewConfig;\n","import React, { useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport SimpleMdeReact from 'react-simplemde-editor';\nimport 'easymde/dist/easymde.min.css';\n\nexport default function MarkdownEditor({\n value,\n onChange,\n autofocus,\n status,\n toolbar,\n}) {\n const options = useMemo(() => {\n return {\n autofocus,\n spellChecker: false,\n status,\n toolbar,\n };\n }, [autofocus, status, toolbar]);\n\n return ;\n}\n\nMarkdownEditor.propTypes = {\n value: PropTypes.string,\n onChange: PropTypes.func.isRequired,\n autofocus: PropTypes.bool,\n status: PropTypes.bool,\n // eslint-disable-next-line\n toolbar: PropTypes.any,\n};\n\nMarkdownEditor.defaultProps = {\n value: '',\n autofocus: false,\n status: false,\n toolbar: [\n 'bold',\n 'italic',\n 'strikethrough',\n '|',\n 'quote',\n 'unordered-list',\n 'ordered-list',\n '|',\n 'undo',\n 'redo',\n '|',\n 'guide',\n 'preview',\n ],\n};\n","import Button from 'atoms/button/Button';\nimport ButtonBar from 'atoms/buttonbar/ButtonBar';\nimport MarkdownEditor from 'atoms/markdowneditor/MarkdownEditor';\nimport Panel from 'atoms/panel/Panel';\nimport Select from 'atoms/select/Select';\nimport PropTypes from 'prop-types';\nimport React, { useState } from 'react';\nimport ApiService from 'services/ApiService';\nimport { useAuth } from 'services/UseAuth';\nimport styles from './FilterExplanationCreate.module.css';\n\nconst FilterExplanationCreate = ({ selvars, setFilterTexts, setEditMode }) => {\n const { user } = useAuth();\n\n const [filterText, setFilterText] = useState('');\n const [textId, setTextId] = useState(selvars[0].sel_var);\n const isDefault = user.forbund === 'SA';\n\n const handleSubmit = () => {\n const request = {\n groupId: 'menuselection',\n textId,\n header: selvars.find(selvar => selvar.sel_var === textId).desc,\n value: filterText,\n isDefault,\n unionId: isDefault ? null : user.unionId,\n };\n\n ApiService.postText(request, user.token).then(data => {\n setFilterTexts(prevState => [...prevState, data]);\n\n if (setEditMode) setEditMode(prevState => !prevState);\n });\n };\n\n return (\n \n setTextId(evt.target.value)}\n value={textId}\n options={\n selvars &&\n selvars.map(selvar => ({\n key: selvar.sel_var,\n value: selvar.sel_var,\n desc: selvar.desc,\n }))\n }\n />\n
    \n setFilterText(value)}\n autofocus\n />\n
    \n \n handleSubmit()}\n label=\"Spara\"\n altText=\"Spara filtertext\"\n marginBottom\n />\n \n \n );\n};\n\nFilterExplanationCreate.propTypes = {\n selvars: PropTypes.arrayOf(String),\n setEditMode: PropTypes.func,\n setFilterTexts: PropTypes.func.isRequired,\n};\n\nFilterExplanationCreate.defaultProps = {\n selvars: PropTypes.arrayOf(String),\n setEditMode: PropTypes.null,\n};\n\nexport default FilterExplanationCreate;\n","import Button from 'atoms/button/Button';\nimport ButtonBar from 'atoms/buttonbar/ButtonBar';\nimport Loader from 'atoms/loader/Loader';\nimport SectionAdmin from 'atoms/sectionadmin/SectionAdmin';\nimport Select from 'atoms/select/Select';\nimport PropTypes from 'prop-types';\nimport React, { useEffect, useState } from 'react';\nimport ApiService from 'services/ApiService';\nimport { useAuth } from 'services/UseAuth';\nimport FilterExplanationCreate from '../filterexplanationcreate/FilterExplanationCreate';\nimport styles from './FilterExplanationNoText.module.css';\n\nconst FilterExplanationNoText = ({\n dataSources,\n filterTexts,\n setFilterTexts,\n loadingYears,\n}) => {\n const [dsl1, setDsl1] = useState('');\n const [dsl2, setDsl2] = useState('');\n const [year, setYear] = useState();\n\n const [availableYears, setAvailableYears] = useState([]);\n const [availableDSL1, setAvailableDSL1] = useState([]);\n const [availableDSL2, setAvailableDSL2] = useState([]);\n\n const [isCreatingNewText, setIsCreatingNewText] = useState(false);\n const [selvars, setSelvars] = useState();\n\n const [loading, setLoading] = useState(false);\n\n const { user } = useAuth();\n\n useEffect(() => {\n if (dataSources == null) return;\n setAvailableYears(\n dataSources\n .reduce((acc, curr) => {\n if (!acc.includes(curr.YEAR)) acc.push(curr.YEAR);\n return acc;\n }, [])\n .sort()\n );\n // eslint-disable-next-line\n }, [dataSources]);\n\n useEffect(() => {\n if (year == null) {\n // Nollställ\n setAvailableDSL1([]);\n setAvailableDSL2([]);\n return;\n }\n\n const dsl1Temp = dataSources\n .filter(dataSource => dataSource.YEAR === year)\n .reduce((acc, curr) => {\n if (!acc.some(a => a.dsl === curr.DSL1))\n acc.push({ dsl: curr.DSL1, desc: curr.DSL1_DESC });\n return acc;\n }, []);\n setAvailableDSL1(dsl1Temp);\n // eslint-disable-next-line\n }, [year, dataSources]);\n\n useEffect(() => {\n if (dsl1 === '') return;\n setDsl2('');\n setAvailableDSL2(\n dataSources\n .filter(dataSource => dataSource.YEAR === year)\n .filter(dataSource => dataSource.DSL1 === dsl1)\n .map(dataSource => {\n return { dsl: dataSource.DSL2, desc: dataSource.DSL2_DESC };\n })\n .filter(datasource => datasource.dsl.length)\n );\n // eslint-disable-next-line\n }, [dsl1, dataSources, year]);\n\n useEffect(() => {\n if (dataSources == null) return;\n\n let temp;\n if (dsl2 == null) {\n temp = dataSources.find(\n source =>\n source.DSL1 === dsl1 && source.YEAR === year && source.DSL2 === ''\n );\n } else {\n temp = dataSources.find(\n source =>\n source.DSL1 === dsl1 && source.YEAR === year && source.DSL2 === dsl2\n );\n }\n\n if (temp == null) return;\n\n const request = {\n Forbund: user.forbund,\n dsl1,\n dsl2: dsl2 || null,\n year, // År.\n };\n\n setLoading(true);\n ApiService.getMenuselections(request, user.token)\n .then(data => {\n // TODO: hämta ut alla unika sel_vars\n // TODO: Jämför unika sel_vars med vilka itemIds som finns i filterTexts.\n const uniqueSelvar = data.reduce((acc, curr) => {\n if (\n !acc.some(a => a.sel_var === curr.sel_var) &&\n !filterTexts.some(txt => txt.textId === curr.sel_var)\n )\n acc.push({ sel_var: curr.sel_var, desc: curr.SELECTION_TEXT });\n return acc;\n }, []);\n\n setSelvars(uniqueSelvar);\n })\n .finally(() => setLoading(false));\n // eslint-disable-next-line\n }, [year, dsl1, dsl2, user, dataSources]);\n\n return (\n
    \n \n
    \n

    För att hitta önskade filter behöver du välja år och datakälla.

    \n
    \n {\n e.persist();\n setYear(Number(e.target.value));\n }}\n options={[\n { key: 'year_null', value: '', desc: 'Inget valt' },\n ...availableYears.map(availableYear => ({\n key: availableYear,\n value: availableYear,\n desc: availableYear,\n })),\n ]}\n />\n
    \n
    \n {\n e.persist();\n setDsl1(e.target.value);\n }}\n options={[\n { key: 'dsl1_null', value: '', desc: 'Inget valt' },\n ...availableDSL1.map(dsl => ({\n key: dsl.dsl,\n value: dsl.dsl,\n desc: dsl.desc,\n })),\n ]}\n />\n
    \n
    \n {\n e.persist();\n setDsl2(e.target.value);\n }}\n options={[\n { key: 'dsl2_null', value: '', desc: 'Inget valt' },\n ...availableDSL2.map(dsl => ({\n key: dsl.dsl,\n value: dsl.dsl,\n desc: dsl.desc,\n })),\n ]}\n />\n
    \n
    \n {loading ? (\n
    \n \n
    \n ) : (\n <>\n
    \n {selvars && (\n
      \n {selvars.map(selvar => (\n \n {`${selvar.desc} - ${selvar.sel_var}`}\n \n ))}\n
    \n )}\n
    \n {selvars && !isCreatingNewText && (\n \n setIsCreatingNewText(prevState => !prevState)}\n icon=\"Plus\"\n label=\"Lägg till\"\n altText=\"Lägg till förklaring\"\n />\n \n )}\n \n )}\n {isCreatingNewText && (\n \n )}\n
    \n
    \n );\n};\n\nFilterExplanationNoText.propTypes = {\n dataSources: PropTypes.arrayOf(Object),\n filterTexts: PropTypes.arrayOf(Object),\n setFilterTexts: PropTypes.func.isRequired,\n loadingYears: PropTypes.bool,\n};\n\nFilterExplanationNoText.defaultProps = {\n dataSources: [],\n filterTexts: [],\n loadingYears: false,\n};\n\nexport default FilterExplanationNoText;\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport Button from 'atoms/button/Button';\nimport ButtonBar from 'atoms/buttonbar/ButtonBar';\nimport ApiService from 'services/ApiService';\nimport { useAuth } from 'services/UseAuth';\nimport MarkdownEditor from 'atoms/markdowneditor/MarkdownEditor';\nimport styles from './FilterExplanationEdit.module.css';\n\nconst FilterExplanationEdit = ({ text, setEditMode, setFilterTexts }) => {\n const [hideEditor, setHideEditor] = useState(false);\n const [filterText, setFilterText] = useState(text.value);\n\n const { user } = useAuth();\n const isDefault = user.forbund === 'SA';\n\n const performSave = () => {\n const request = {\n ...((isDefault || text.unionId === user.unionId) && { id: text.id }),\n header: text.header,\n textId: text.textId,\n groupId: text.groupId,\n value: filterText,\n isDefault,\n unionId: isDefault ? null : user.unionId,\n };\n\n ApiService.postText(request, user.token).then(data => {\n setFilterTexts(prevState => {\n const index = prevState.findIndex(i => i.textId === data.textId);\n const isDuplicate = prevState[index].id === data.id;\n return [\n ...prevState.slice(0, index),\n data,\n ...prevState.slice(isDuplicate ? index + 1 : index),\n ];\n });\n });\n\n setEditMode(false);\n };\n\n const performDelete = () => {\n setHideEditor(true);\n ApiService.deleteText(text.id, user.token).then(() =>\n setFilterTexts(prevState => prevState.filter(txt => txt.id !== text.id))\n );\n setEditMode(prevState => !prevState);\n };\n\n const performReset = () => {\n setFilterText(text.value);\n\n setEditMode(prevState => !prevState);\n };\n\n return (\n
    \n {!hideEditor && (\n {\n setFilterText(value);\n }}\n />\n )}\n \n {(isDefault || text.unionId === user.unionId) && (\n \n )}\n performSave()}\n label=\"Spara\"\n altText=\"Spara filtertext\"\n />\n performReset()}\n label=\"Avbryt\"\n />\n \n
    \n );\n};\n\nFilterExplanationEdit.propTypes = {\n text: PropTypes.shape({\n id: PropTypes.string,\n groupId: PropTypes.string,\n header: PropTypes.string,\n textId: PropTypes.string,\n value: PropTypes.string,\n unionId: PropTypes.string,\n isDefault: PropTypes.bool,\n }).isRequired,\n setEditMode: PropTypes.func.isRequired,\n setFilterTexts: PropTypes.func.isRequired,\n};\n\nexport default FilterExplanationEdit;\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport Button from 'atoms/button/Button';\nimport ExplanationText from 'atoms/explanationtext/ExplanationText';\nimport ButtonBar from 'atoms/buttonbar/ButtonBar';\nimport Accordion from 'atoms/accordion/Accordion';\nimport styles from './FilterExplanationItem.module.css';\nimport FilterExplanationEdit from '../filterexplanationedit/FilterExplanationEdit';\n\nconst FilterExplanationItem = ({ text, setFilterTexts }) => {\n const [editMode, setEditMode] = useState(false);\n\n return (\n \n {!editMode && (\n
    \n {!text.unionId && (\n Delad text:\n )}\n \n \n setEditMode(prevState => !prevState)}\n label=\"Redigera\"\n altText=\"Redigera filtertext\"\n icon=\"Edit\"\n />\n \n
    \n )}\n {editMode && (\n
    \n \n
    \n )}\n \n );\n};\n\nFilterExplanationItem.propTypes = {\n text: PropTypes.shape({\n id: PropTypes.string,\n groupId: PropTypes.string,\n header: PropTypes.string,\n textId: PropTypes.string,\n value: PropTypes.string,\n unionId: PropTypes.string,\n isDefault: PropTypes.bool,\n }).isRequired,\n setFilterTexts: PropTypes.func.isRequired,\n};\n\nexport default FilterExplanationItem;\n","import Input from 'atoms/input/Input';\nimport Panel from 'atoms/panel/Panel';\nimport Section from 'atoms/section/Section';\nimport SectionAdmin from 'atoms/sectionadmin/SectionAdmin';\nimport Const from 'const';\nimport React, { useEffect, useState } from 'react';\nimport ApiService from 'services/ApiService';\nimport { useAuth } from 'services/UseAuth';\nimport { useHistory } from 'react-router-dom';\nimport FilterExplanationNoText from './filterexplanationnotext/FilterExplanationNoText';\nimport FilterExplanationItem from './filterexplanationitem/FilterExplanationItem';\nimport styles from './FilterExplanations.module.css';\n\nconst FilterExplanations = () => {\n const { user, signout, autoRefreshToken } = useAuth();\n const { token, forbund } = user;\n const history = useHistory();\n\n const [loadingText, setLoadingText] = useState(false);\n const [loadingData, setLoadingData] = useState(false);\n const [dataSources, setDataSources] = useState();\n const [filterTexts, setFilterTexts] = useState([]);\n const [filteredFilterTexts, setFilteredFilterTexts] = useState([]);\n\n const [searchString, setSearchString] = useState('');\n\n useEffect(() => {\n const request = [\n {\n groupId: 'menuselection',\n },\n ];\n\n setLoadingText(true);\n ApiService.getTextsBoth(request, token)\n .then(data => setFilterTexts(data))\n .then(() => autoRefreshToken(token))\n .catch(error => {\n if (error.status === 401) {\n signout();\n history.push('/logga-ut');\n }\n })\n .finally(() => {\n setLoadingText(false);\n });\n\n const getDataSources = () => {\n const req = { forbund: [forbund] };\n setLoadingData(true);\n ApiService.getFds(req, token)\n .then(data => setDataSources(data))\n .finally(() => {\n setLoadingData(false);\n });\n };\n\n getDataSources();\n // eslint-disable-next-line\n }, [token, forbund]);\n\n useEffect(() => {\n if (!filterTexts.length) return;\n\n let temp = filterTexts;\n if (searchString.length < 3) {\n temp = temp.reduce(\n (acc, curr) =>\n acc.find(i => i.textId === curr.textId)\n ? [...acc, curr].filter(i => i.textId !== curr.textId || i.unionId)\n : [...acc, curr],\n []\n );\n } else {\n temp = temp.filter(\n obj =>\n obj.textId.toLowerCase().indexOf(searchString) > -1 ||\n obj.value.toLowerCase().indexOf(searchString) > -1 ||\n obj.header.toLowerCase().indexOf(searchString) > -1\n );\n }\n\n setFilteredFilterTexts(temp);\n }, [searchString, filterTexts]);\n\n return (\n \n
    \n

    \n Här kan du ändra beskrivningarna av de filter som Saco lönesök\n använder sig av.\n

    \n \n \n

    \n Beskrivningarna av filter kan vara gemensamma för alla förbund eller\n förbundsspecifika. Som grund har alla filter Sacos\n standardbeskrivningar.\n

    \n
    \n setSearchString(evt.target.value.toLowerCase())}\n value={searchString}\n />\n
    \n
    \n {filteredFilterTexts.length > 0 &&\n filteredFilterTexts.map((text, i) => (\n \n ))}\n {Object.keys(filteredFilterTexts).length === 0 && (\n
    \n Filterförklaringar saknas\n
    \n )}\n
    \n
    \n
    \n
    \n );\n};\n\nFilterExplanations.propTypes = {};\n\nexport default FilterExplanations;\n","import Button from 'atoms/button/Button';\nimport ButtonBar from 'atoms/buttonbar/ButtonBar';\nimport CheckboxAdmin from 'atoms/checkboxadmin/CheckboxAdmin';\nimport Input from 'atoms/input/Input';\nimport Panel from 'atoms/panel/Panel';\nimport PropTypes from 'prop-types';\nimport React, { useRef, useState } from 'react';\nimport ApiService from 'services/ApiService';\nimport { useAuth } from 'services/UseAuth';\n\nconst EditAccount = ({\n userAccount,\n setUserList,\n setAccountDeleted,\n setAccountUpdated,\n setEditAccount,\n}) => {\n const [isAdmin, setIsAdmin] = useState(userAccount.isAdmin);\n const [isSaving, setIsSaving] = useState(false);\n const [newPassword, setNewPassword] = useState('');\n\n const { isRedaktor, isFortroendevald } = userAccount;\n\n // Refs\n const passwordRef = useRef();\n\n const { user } = useAuth();\n const handleUpdateAccount = () => {\n setIsSaving(true);\n // FIXME: Borde göra en promise kedja här så vi kan vara säkra på att saker sker.\n // Nu är isSaving och toaster states inte 100% rätt.\n if (userAccount.isAdmin !== isAdmin) {\n ApiService.updateAccount(\n userAccount.id,\n { isAdmin, isRedaktor, isFortroendevald },\n user.token\n ).then(() => null);\n }\n if (newPassword.length > 0) {\n if (!passwordRef.current.reportValidity()) {\n setIsSaving(false);\n return;\n }\n\n ApiService.updatePassword(\n userAccount.id,\n { password: newPassword },\n user.token\n ).then(() => null);\n }\n\n setUserList(prevState =>\n prevState.map(usr => {\n if (usr.id === userAccount.id) {\n return {\n ...userAccount,\n isAdmin,\n };\n }\n return usr;\n })\n );\n setAccountUpdated(true);\n setIsSaving(false);\n setEditAccount(false);\n };\n\n const handleDeleteAccount = () => {\n setIsSaving(true);\n ApiService.deleteSubscriber(userAccount.id, user.token)\n .then(() => {\n setAccountDeleted(true);\n setUserList(prevState =>\n prevState.filter(usr => usr.id !== userAccount.id)\n );\n })\n .finally(() => {\n setEditAccount(false);\n setIsSaving(false);\n });\n };\n\n return (\n \n {user.role === 'admin' && (\n
    \n setIsAdmin(prevState => !prevState)}\n />\n
    \n
    \n setNewPassword(evt.target.value)}\n placeholder=\"Nytt lösenord...\"\n ref={passwordRef}\n type=\"password\"\n value={newPassword}\n />\n \n )}\n
    \n \n handleDeleteAccount()}\n label=\"Ta bort\"\n icon=\"Trash\"\n altText=\"Ta bort konto\"\n disabled={isSaving}\n />\n {user.role === 'admin' && (\n handleUpdateAccount()}\n label=\"Spara\"\n altText=\"Spara konto\"\n disabled={\n isSaving || (isAdmin === userAccount.isAdmin && !newPassword)\n }\n />\n )}\n \n
    \n );\n};\n\nEditAccount.propTypes = {\n userAccount: PropTypes.shape({\n id: PropTypes.string,\n name: PropTypes.string,\n isFortroendevald: PropTypes.bool,\n isRedaktor: PropTypes.bool,\n isAdmin: PropTypes.bool,\n label: PropTypes.string,\n }).isRequired,\n setUserList: PropTypes.func.isRequired,\n setAccountDeleted: PropTypes.func.isRequired,\n setAccountUpdated: PropTypes.func.isRequired,\n setEditAccount: PropTypes.func.isRequired,\n};\n\nexport default EditAccount;\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport Button from 'atoms/button/Button';\nimport EditAccount from '../editaccount/EditAccount';\nimport styles from './AccountRow.module.css';\n\nconst AccountRow = ({\n userAccount,\n setUserList,\n setAccountDeleted,\n setAccountUpdated,\n}) => {\n const [editAccount, setEditAccount] = useState(false);\n\n const { id, name, label } = userAccount;\n\n const getRole = account => {\n if (!account) return '';\n if (account.isAdmin) return 'Admin';\n if (account.isRedaktor) return 'Redaktör';\n if (account.isFortroendevald) return 'Förtroendevald';\n return 'Medlem';\n };\n\n return (\n <>\n \n {id}\n {name}\n {getRole(userAccount)}\n {label}\n \n {editAccount ? (\n setEditAccount(prevState => !prevState)}\n style={{ marginLeft: 'auto' }}\n label=\"Avbryt\"\n />\n ) : (\n setEditAccount(prevState => !prevState)}\n style={{ marginLeft: 'auto' }}\n label=\"Redigera\"\n icon=\"Edit\"\n />\n )}\n \n \n {editAccount && (\n \n \n \n \n \n )}\n \n );\n};\n\nAccountRow.propTypes = {\n userAccount: PropTypes.shape({\n id: PropTypes.string,\n name: PropTypes.string,\n isFortroendevald: PropTypes.bool,\n isRedaktor: PropTypes.bool,\n isAdmin: PropTypes.bool,\n label: PropTypes.string,\n }).isRequired,\n setUserList: PropTypes.func.isRequired,\n setAccountDeleted: PropTypes.func.isRequired,\n setAccountUpdated: PropTypes.func.isRequired,\n};\n\nexport default AccountRow;\n","import React, { useState, useEffect, useRef } from 'react';\nimport PropTypes from 'prop-types';\nimport Button from 'atoms/button/Button';\nimport Loader from 'atoms/loader/Loader';\nimport Select from 'atoms/select/Select';\nimport Input from 'atoms/input/Input';\nimport ButtonBar from 'atoms/buttonbar/ButtonBar';\nimport { useAuth } from 'services/UseAuth';\nimport ApiService from 'services/ApiService';\nimport Panel from 'atoms/panel/Panel';\nimport styles from './CreateAccount.module.css';\n\nconst CreateAccount = ({ setAccountCreated, setAddAccount, setUserList }) => {\n const [isSaving, setIsSaving] = useState(false);\n const [isLoading, setIsLoading] = useState(false);\n const [unionList, setUnionList] = useState([]);\n\n // Refs\n const passwordRef = useRef();\n\n // User input.\n const [password, setPassword] = useState('');\n const [role, setRole] = useState('medlem');\n const [selectedUnion, setSelectedUnion] = useState({});\n const [label, setLabel] = useState();\n\n const { user } = useAuth();\n\n const performSubmit = () => {\n if (!passwordRef.current.reportValidity()) return;\n setIsSaving(true);\n const request = {\n name: selectedUnion.name,\n password,\n forbundskodSas: selectedUnion.forbundskodSas,\n isFortroendeVald: role === 'fortroendevald',\n isRedaktor: role === 'redaktor',\n isAdmin: role === 'admin',\n label,\n };\n\n ApiService.postSubscriber(request, user.token)\n .then(data => {\n setUserList(prevState => [\n ...prevState,\n // TODO: Endpoint needs to return name of created account\n { ...data, name: selectedUnion.name },\n ]);\n setAccountCreated(true);\n })\n .finally(() => {\n setAddAccount(prevState => !prevState);\n setIsSaving(false);\n });\n };\n\n useEffect(() => {\n if (user.role === 'redaktor') {\n ApiService.getUnion(user.token).then(data => setSelectedUnion(data));\n return;\n }\n setIsLoading(true);\n\n ApiService.getUnions(user.token)\n .then(data => {\n setUnionList(\n data\n .filter(a => a.forbundskodSas !== 'XX')\n .sort((a, b) => `${a.name}`.localeCompare(b.name, 'sv'))\n );\n })\n .finally(() => setIsLoading(false));\n }, [user.token]);\n\n useEffect(() => {\n if (unionList.length > 0) {\n setSelectedUnion(unionList[0]);\n }\n }, [unionList]);\n\n return (\n \n {isLoading ? (\n
    \n \n
    \n ) : (\n <>\n
    \n {user.role === 'admin' && (\n setSelectedUnion(JSON.parse(evt.target.value))}\n options={[\n ...unionList.map(union => ({\n key: union.id,\n value: JSON.stringify(union),\n desc: union.name,\n })),\n ]}\n value={JSON.stringify(selectedUnion)}\n />\n )}\n setRole(e.target.value)}\n value={role}\n options={[\n { key: 'medlem', value: 'medlem', desc: 'Medlem' },\n {\n key: 'fortroendevald',\n value: 'fortroendevald',\n desc: 'Förtroendevald',\n },\n {\n key: 'redaktor',\n value: 'redaktor',\n desc: 'Redaktör',\n },\n ]}\n />\n setLabel(evt.target.value)}\n placeholder=\"Etikett\"\n type=\"text\"\n value={label}\n />\n setPassword(evt.target.value)}\n placeholder=\"Lösenord\"\n ref={passwordRef}\n type=\"password\"\n value={password}\n />\n
    \n \n performSubmit()}\n label=\"Spara\"\n altText=\"Spara konto\"\n disabled={isSaving || password.length < 10}\n />\n setAddAccount(false)}\n label=\"Avbryt\"\n disabled={isSaving}\n />\n \n \n \n )}\n
    \n );\n};\n\nCreateAccount.propTypes = {\n setAccountCreated: PropTypes.func.isRequired,\n setAddAccount: PropTypes.func.isRequired,\n setUserList: PropTypes.func.isRequired,\n};\n\nexport default CreateAccount;\n","import Button from 'atoms/button/Button';\nimport ButtonBar from 'atoms/buttonbar/ButtonBar';\nimport Loader from 'atoms/loader/Loader';\nimport Panel from 'atoms/panel/Panel';\nimport Section from 'atoms/section/Section';\nimport Select from 'atoms/select/Select';\nimport Const from 'const';\nimport React, { useEffect, useState } from 'react';\nimport { useHistory } from 'react-router-dom';\nimport { toast, ToastContainer } from 'react-toastify';\nimport 'react-toastify/dist/ReactToastify.css';\nimport ApiService from 'services/ApiService';\nimport { useAuth } from 'services/UseAuth';\nimport AccountRow from './accountrow/AccountRow';\nimport styles from './Accounts.module.css';\nimport CreateAccount from './createaccount/CreateAccount';\n\nconst Accounts = () => {\n const [userList, setUserList] = useState([]);\n const [addAccount, setAddAccount] = useState(false);\n const [isLoading, setIsLoading] = useState(false);\n\n const [filter, setFilter] = useState('');\n\n const [accountUpdated, setAccountUpdated] = useState(false);\n const [accountDeleted, setAccountDeleted] = useState(false);\n const [accountCreated, setAccountCreated] = useState(false);\n\n const history = useHistory();\n const { user, signout, autoRefreshToken } = useAuth();\n const { token } = user;\n\n useEffect(() => {\n setIsLoading(true);\n ApiService.getSubscribers(token)\n .then(data => {\n data.sort((a, b) => `${a.name}`.localeCompare(b.name, 'sv'));\n setUserList(data);\n })\n .then(() => autoRefreshToken(token))\n .catch(error => {\n if (error.status === 401) {\n signout();\n history.push('/logga-ut');\n }\n })\n .finally(() => setIsLoading(false));\n // eslint-disable-next-line\n }, [token]);\n\n useEffect(() => {\n if (!accountUpdated && !accountDeleted && !accountCreated) return;\n\n if (accountCreated) {\n toast.success('Konto Skapat');\n setAccountCreated(false);\n }\n if (accountUpdated) {\n toast.success('Konto Uppdaterat');\n setAccountUpdated(false);\n }\n if (accountDeleted) {\n toast.error('Konto Borttaget');\n setAccountDeleted(false);\n }\n }, [accountUpdated, accountDeleted, accountCreated]);\n\n const filteredUserList = userList.filter(\n userObj => filter === '' || userObj.forbundsKodSas === filter\n );\n\n return (\n \n
    \n \n {isLoading ? (\n
    \n \n
    \n ) : (\n <>\n {user.role === 'admin' && (\n
    \n setFilter(e.target.value)}\n options={[\n { key: 'user_null', value: '', desc: 'Samtliga förbund' },\n ...userList\n .filter(\n (a, b, arr) =>\n arr.findIndex(obj => obj.name === a.name) === b\n )\n .map(\n ({ id: key, forbundsKodSas: value, name: desc }) => ({\n key,\n value,\n desc,\n })\n ),\n ]}\n value={filter}\n />\n
    \n )}\n
    \n \n \n \n \n \n \n \n \n \n \n \n {filteredUserList.length > 0 &&\n filteredUserList.map(usr => (\n \n ))}\n \n
    AnvändarnamnFörbundRollEtikettHantera
    \n
    \n {!addAccount && (\n \n setAddAccount(prevState => !prevState)}\n icon=\"Plus\"\n altText=\"Lägg till konto\"\n label=\"Lägg till\"\n />\n \n )}\n\n
    \n {addAccount && (\n \n )}\n
    \n \n )}\n
    \n
    \n );\n};\n\nAccounts.propTypes = {};\n\nexport default Accounts;\n","import Button from 'atoms/button/Button';\nimport { format } from 'date-fns';\nimport PropTypes from 'prop-types';\nimport React, { useState } from 'react';\nimport { IconChevronDown, IconChevronUp } from 'tabler-icons';\nimport styles from './LogItem.module.css';\n\nconst LogItem = ({ log }) => {\n const { message, exception, properties } = log;\n const timeStamp = `[${format(\n new Date(log.timeStamp),\n 'yyyy-MM-dd HH:mm.ss'\n )}]:`;\n\n const [isExpanded, setIsExpanded] = useState(false);\n const [copied, setCopied] = useState(false);\n\n const flipBackState = () =>\n setTimeout(() => {\n setCopied(false);\n }, 2000);\n\n // IE support\n const fallbackCopyLogMessage = text => {\n const textArea = document.createElement('textarea');\n textArea.value = text;\n\n // Avoid scrolling to bottom\n textArea.style.top = '0';\n textArea.style.left = '0';\n textArea.style.position = 'fixed';\n\n document.body.appendChild(textArea);\n textArea.focus();\n textArea.select();\n\n try {\n document.execCommand('copy');\n setCopied(true);\n } catch (err) {\n // TODO: Handle errors?\n }\n\n document.body.removeChild(textArea);\n flipBackState();\n };\n\n // All other browsers\n const copyLogMessage = e => {\n e.preventDefault();\n e.stopPropagation();\n\n const text = `${timeStamp || ''} ${message || ''} \\n\\n ${exception || ''} ${\n properties || ''\n }`;\n\n if (!navigator.clipboard) {\n fallbackCopyLogMessage(text);\n return;\n }\n\n navigator.clipboard\n .writeText(text)\n .then(() => setCopied(true))\n .catch(err => {\n // TODO: Handle errors?\n })\n .finally(() => flipBackState());\n };\n\n return (\n setIsExpanded(prevState => !prevState)}\n onKeyUp={() => null}\n tabIndex={0}\n >\n
    \n \n {isExpanded ? : }\n \n \n {timeStamp}\n {message}\n \n
    \n {isExpanded && (\n <>\n
    \n
    \n

    {exception}

    \n

    {properties}

    \n
    \n
    \n
    \n copyLogMessage(e)}\n icon=\"Copy\"\n label={copied ? 'Meddelande kopierat' : 'Kopiera'}\n altText=\"Kopiera loggmeddelande\"\n />\n
    \n \n )}\n \n );\n};\n\nLogItem.propTypes = {\n log: PropTypes.shape({\n level: PropTypes.string,\n timeStamp: PropTypes.string,\n message: PropTypes.string,\n exception: PropTypes.string,\n properties: PropTypes.string,\n }).isRequired,\n};\n\nexport default LogItem;\n","import Button from 'atoms/button/Button';\nimport ButtonBar from 'atoms/buttonbar/ButtonBar';\nimport Loader from 'atoms/loader/Loader';\nimport Panel from 'atoms/panel/Panel';\nimport Section from 'atoms/section/Section';\nimport Select from 'atoms/select/Select';\nimport Const from 'const';\nimport { getAvailableYears, months, today } from 'lib/time';\nimport React, { useEffect, useState } from 'react';\nimport { useHistory } from 'react-router-dom';\nimport ApiService from 'services/ApiService';\nimport { useAuth } from 'services/UseAuth';\nimport styles from './ApplicationLog.module.css';\nimport LogItem from './logitem/LogItem';\n\nconst ApplicationLog = () => {\n const [logs, setLogs] = useState([]);\n const [loading, setLoading] = useState(true);\n\n const logsPerPage = 50;\n const [pages, setPages] = useState(0);\n const [currentPage, setCurrentPage] = useState(0);\n\n const [monthFrom, setMonthFrom] = useState(today.getMonth() + 1);\n const [monthTo, setMonthTo] = useState(today.getMonth() + 1);\n const [yearFrom, setYearFrom] = useState(today.getFullYear());\n const [yearTo, setYearTo] = useState(today.getFullYear());\n const [logLevel, setLogLevel] = useState('');\n\n const [refresh, setRefresh] = useState(true);\n\n const history = useHistory();\n const { user, signout, autoRefreshToken } = useAuth();\n const { token } = user;\n\n const logLevels = [\n { key: 'all', value: '', desc: 'Alla' },\n { key: 'warning', value: 'Warning', desc: 'Varning' },\n { key: 'error', value: 'Error', desc: 'Fel' },\n { key: 'info', value: 'Information', desc: 'Information' },\n ];\n\n useEffect(() => {\n if (!refresh) return;\n setLoading(true);\n\n const request = {\n level: logLevel || null,\n yearFrom: yearFrom || null,\n yearTo: yearTo || null,\n monthFrom: monthFrom || null,\n monthTo: monthTo || null,\n };\n\n ApiService.getLogs(request, token)\n .then(data => {\n setCurrentPage(0);\n setLogs(data);\n })\n .then(() => autoRefreshToken(token))\n .catch(error => {\n if (error.status === 401) {\n signout();\n history.push('/logga-ut');\n }\n })\n .finally(() => {\n setLoading(false);\n setRefresh(false);\n });\n // eslint-disable-next-line\n }, [token, logLevel, yearFrom, yearTo, monthFrom, monthTo, refresh]);\n\n useEffect(() => {\n setPages(Math.ceil(logs.length / logsPerPage));\n }, [logs]);\n\n const filteredLogs = logs.slice(\n currentPage * logsPerPage,\n currentPage * logsPerPage + logsPerPage\n );\n\n return (\n \n
    \n
    \n
    \n {\n setYearFrom(Number(e.target.value));\n setYearTo(Number(e.target.value));\n setRefresh(true);\n }}\n options={[\n { key: 'year_from_null', value: '', desc: 'Alla loggar' },\n ...getAvailableYears().map(year => ({\n key: year,\n value: year,\n desc: year,\n })),\n ]}\n value={yearFrom}\n />\n
    \n
    \n {\n setMonthFrom(Number(e.target.value));\n setMonthTo(Number(e.target.value));\n setRefresh(true);\n }}\n options={[\n { key: 'month_from_null', value: '', desc: 'Samtliga månader' },\n ...months.map((month, i) => ({\n key: month,\n value: i + 1,\n desc: month,\n disabled:\n i > today.getMonth() && yearFrom >= today.getFullYear(),\n })),\n ]}\n value={yearFrom && yearTo ? monthFrom : ''}\n />\n
    \n
    \n {\n setLogLevel(e.target.value);\n setRefresh(true);\n }}\n options={logLevels.map(({ key, value, desc }) => ({\n key,\n value,\n desc,\n }))}\n value={logLevel}\n />\n
    \n
    \n setRefresh(true)}\n label=\"Uppdatera\"\n altText=\"Uppdatera logg\"\n icon=\"Refresh\"\n />\n
    \n
    \n\n {loading ? (\n
    \n \n
    \n ) : (\n
    \n {filteredLogs.length > 0 ? (\n filteredLogs.map(log => )\n ) : (\n \n Hittade inga loggar, prova att justera filtret\n \n )}\n
    \n )}\n\n {pages > 0 && (\n \n setCurrentPage(prevState => prevState - 1)}\n label=\"Föregående sida\"\n />\n \n {`${currentPage + 1} / ${pages}`}\n \n setCurrentPage(prevState => prevState + 1)}\n label=\"Nästa sida\"\n />\n \n )}\n
    \n );\n};\n\nexport default ApplicationLog;\n","import React, { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport Button from 'atoms/button/Button';\nimport ButtonBar from 'atoms/buttonbar/ButtonBar';\nimport Accordion from 'atoms/accordion/Accordion';\nimport ApiService from 'services/ApiService';\nimport { useAuth } from 'services/UseAuth';\nimport MarkdownEditor from 'atoms/markdowneditor/MarkdownEditor';\nimport ExplanationText from 'atoms/explanationtext/ExplanationText';\nimport styles from './GeneralTextItem.module.css';\n\nconst GeneralTextItem = ({ txtGroup, updateCb }) => {\n const [editMode, setEditMode] = useState(false);\n const [txtGroupCopy, setTxtGroupCopy] = useState([...txtGroup]);\n\n const { user } = useAuth();\n const { unionId } = user;\n const forbundSA = user.forbund === 'SA';\n\n useEffect(() => {\n // Rerender on prop change\n setTxtGroupCopy([...txtGroup]);\n }, [txtGroup]);\n\n const formatHelpText = textIn => {\n if (editMode) {\n return (\n <>\n {\n setTxtGroupCopy(prevState =>\n prevState.map(txtObj => {\n return txtObj.id === textIn.id\n ? { ...txtObj, value }\n : txtObj;\n })\n );\n }}\n />\n \n );\n }\n return ;\n };\n\n const performSave = () => {\n // Copy to union specific text\n const createCopy = !forbundSA && !txtGroup[0].unionId;\n\n const textsToUpdate = txtGroupCopy.filter(newTxt => {\n const comp = txtGroup.find(originalTxt => originalTxt.id === newTxt.id);\n return comp.value !== newTxt.value || createCopy;\n });\n\n textsToUpdate.forEach(updateTxt => {\n const request = {\n ...(!createCopy && { id: updateTxt.id }),\n value: updateTxt.value,\n header: updateTxt.header,\n groupId: updateTxt.groupId,\n textId: updateTxt.textId,\n isDefault: forbundSA,\n ...(!forbundSA && { unionId }),\n };\n\n // TODO: Add user feedback\n ApiService.postText(request, user.token).then(() => {\n updateCb(txtGroup[0].groupId);\n });\n });\n return setEditMode(prevState => !prevState);\n };\n\n const performDelete = () => {\n // Don't delete default texts\n const unionTexts = txtGroup.filter(txt => txt.unionId);\n\n return Promise.all(\n unionTexts.map(txt => ApiService.deleteText(txt.id, user.token))\n ).then(() => {\n updateCb(txtGroup[0].groupId);\n setEditMode(prevState => !prevState);\n });\n };\n\n const performCancel = () => {\n setEditMode(prevState => !prevState);\n setTxtGroupCopy(txtGroup);\n };\n\n const renderSubTexts = () => {\n const textsToPrint = txtGroupCopy.filter(txt => txt.textId !== 'main');\n\n return textsToPrint.map(txt => {\n return (\n
    \n

    {txt.header}

    \n {formatHelpText(txt)}\n
    \n );\n });\n };\n\n return (\n txt.textId === 'main').header +\n (!txtGroup[0].unionId ? '' : ' - förbundsspecifik')\n }\n slim\n border\n marginBottom\n >\n {!editMode && (\n
    \n {formatHelpText(txtGroupCopy.find(txt => txt.textId === 'main'))}\n {renderSubTexts()}\n \n setEditMode(prevState => !prevState)}\n label=\"Redigera\"\n icon=\"Edit\"\n altText=\"Redigera text\"\n />\n \n
    \n )}\n {editMode && (\n
    \n {formatHelpText(txtGroupCopy.find(txt => txt.textId === 'main'))}\n {renderSubTexts()}\n \n {txtGroup[0].unionId && (\n \n )}\n performSave()}\n label=\"Spara\"\n altText=\"Spara text\"\n />\n performCancel()}\n label=\"Avbryt\"\n />\n \n
    \n )}\n \n );\n};\n\nGeneralTextItem.propTypes = {\n txtGroup: PropTypes.arrayOf(Object).isRequired,\n updateCb: PropTypes.func.isRequired,\n};\n\nexport default GeneralTextItem;\n","import Loader from 'atoms/loader/Loader';\nimport Panel from 'atoms/panel/Panel';\nimport Const from 'const';\nimport Section from 'atoms/section/Section';\nimport React, { useEffect, useState } from 'react';\nimport ApiService from 'services/ApiService';\nimport { useAuth } from 'services/UseAuth';\nimport { useHistory } from 'react-router-dom';\nimport GeneralTextItem from './generaltextitem/GeneralTextItem';\n\n/* \n TEXTER SOM SKA FINNAS:\n (about/main)\n (statistics/main)\n (statistics/survey)\n (statistics/employer)\n (presentation/main)\n (salary/main)\n (salary/fixed)\n (salary/total)\n (measurements/main)\n (measurements/average)\n (measurements/10perc)\n (measurements/lowquartile)\n (measurements/median)\n (measurements/highquartile)\n (measurements/90perc)\n (measurements/averagemedian)\n (graph/main)\n (graph/box)\n (graph/line)\n (graph/bar)\n*/\n\nconst GeneralTexts = () => {\n const [isLoading, setIsLoading] = useState(false);\n const [generalTexts, setGeneralTexts] = useState();\n\n const history = useHistory();\n const { user, signout, autoRefreshToken } = useAuth();\n const { token } = user;\n\n useEffect(() => {\n setIsLoading(true);\n const request = [\n {\n groupId: 'about',\n },\n {\n groupId: 'statistics',\n },\n {\n groupId: 'measurements',\n },\n {\n groupId: 'graph',\n textId: ['main', 'line', 'bar', 'box'],\n },\n ];\n\n // Dom här ska ALLTID finnas (även om value kan vara tomt (?)).\n // (about/main)\n // (statistics/main)\n // (statistics/survey)\n // (statistics/employer)\n // (presentation/main)\n // (salary/main)\n // (salary/fixed)\n // (salary/total)\n // (measurements/main)\n // (measurements/10percentile)\n // (graph/main)\n // (graph/box)\n // (graph/line)\n // (graph/bar)\n\n ApiService.getTexts(request, token)\n .then(data => {\n const sortedTexts = data.reduce((acc, curr) => {\n if (acc[curr.groupId] == null) {\n acc[curr.groupId] = [curr];\n } else {\n acc[curr.groupId].push(curr);\n }\n\n return acc;\n }, []);\n\n setGeneralTexts(sortedTexts);\n })\n .then(() => autoRefreshToken(token))\n .catch(error => {\n if (error.status === 401) {\n signout();\n history.push('/logga-ut');\n }\n })\n .finally(() => setIsLoading(false));\n // eslint-disable-next-line\n }, [token]);\n\n const updateTexts = groupId => {\n const request = [{ groupId }];\n ApiService.getTexts(request, token).then(response => {\n setGeneralTexts({ ...generalTexts, [groupId]: response });\n });\n };\n\n const renderGeneralTextItem = (txtGroup, groupName) => (\n \n );\n\n return (\n \n
    \n {isLoading && }\n {/* FIXME: renderar 2 gånger. */}\n {!isLoading &&\n generalTexts &&\n Object.keys(generalTexts).map(group =>\n renderGeneralTextItem(generalTexts[group], group)\n )}\n
    \n
    \n );\n};\n\nexport default GeneralTexts;\n","import { Link } from 'react-router-dom';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { IconChevronRight } from 'tabler-icons';\nimport styles from './NavigationItem.module.css';\n\nconst NavigationItem = ({ title, to, active, disabled, hidden }) => {\n return (\n \n {title}\n {active && (\n \n \n \n )}\n \n );\n};\n\nNavigationItem.propTypes = {\n hidden: PropTypes.bool,\n disabled: PropTypes.bool,\n active: PropTypes.bool,\n title: PropTypes.string.isRequired,\n to: PropTypes.string.isRequired,\n};\n\nNavigationItem.defaultProps = {\n hidden: false,\n disabled: false,\n active: false,\n};\n\nexport default NavigationItem;\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport ApiService from 'services/ApiService';\nimport { useAuth } from 'services/UseAuth';\nimport ButtonBar from 'atoms/buttonbar/ButtonBar';\nimport Button from 'atoms/button/Button';\nimport SectionAdmin from 'atoms/sectionadmin/SectionAdmin';\nimport Loader from 'atoms/loader/Loader';\nimport Panel from 'atoms/panel/Panel';\nimport Input from 'atoms/input/Input';\nimport InputReadOnly from 'atoms/inputreadonly/InputReadOnly';\nimport { toast } from 'react-toastify';\nimport styles from './UnionLinkConfig.module.css';\n\nconst groupId = 'unionLink';\nconst textId = 'unionLink';\n\nexport default function UnionLinkConfig({ forbundList }) {\n const {\n user: { forbund, unionId, token },\n } = useAuth();\n\n const [isLoading, setIsLoading] = useState(false);\n const [isSaving, setIsSaving] = useState(false);\n const [editMode, setEditMode] = useState(false);\n\n const [header, setHeader] = useState('');\n const [linkUrl, setLinkUrl] = useState('');\n const [id, setId] = useState('');\n\n const updateState = link => {\n if (!link) {\n setLinkUrl('');\n setId('');\n } else {\n setHeader(link?.header);\n setLinkUrl(link?.value);\n setId(link?.id);\n }\n setEditMode(false);\n };\n\n const handleUpdate = () => {\n setIsSaving(true);\n\n const request = {\n id: id || null,\n groupId,\n textId,\n header,\n value: linkUrl,\n unionId,\n };\n\n ApiService.postText(request, token)\n .then(data => {\n updateState(data);\n toast.success('Förbundslänk sparad');\n })\n .catch(() => toast.error('Misslyckades att spara förbundslänken'))\n .finally(() => setIsSaving(false));\n };\n\n const handleDelete = () => {\n setIsSaving(true);\n if (id) {\n ApiService.deleteText(id, token)\n .then(() => {\n updateState();\n toast.success('Förbundslänk raderad');\n })\n .catch(() => toast.error('Misslyckades att spara förbundslänken'))\n .finally(() => setIsSaving(false));\n }\n };\n\n useEffect(() => {\n if (forbundList.length === 0) return;\n const forbundName =\n forbundList.find(f => f.forbundskodSas === forbund?.toLocaleUpperCase())\n ?.name || '';\n\n setHeader(forbundName);\n }, [forbundList, forbund]);\n\n useEffect(() => {\n setIsLoading(true);\n const request = [\n {\n groupId,\n textId: [textId],\n },\n ];\n ApiService.getTexts(request, token)\n .then(data => {\n if (data && data[0]) return updateState(data[0]);\n return updateState();\n })\n .finally(() => setIsLoading(false));\n }, [token]);\n\n return (\n \n

    Här lägger du in en länk till förbundets hemsida. Visas i sidfoten.

    \n {isLoading && (\n
    \n \n
    \n )}\n\n {!isLoading && (\n \n
    \n
    \n
    \n {editMode ? (\n \n ) : (\n \n )}\n
    \n
    \n {editMode ? (\n setLinkUrl(evt.target.value)}\n placeholder=\"HTTP-länk\"\n type=\"text\"\n value={linkUrl}\n />\n ) : (\n \n )}\n
    \n
    \n
    \n
    \n \n {editMode && (\n <>\n handleDelete()}\n label=\"Ta bort\"\n icon=\"Trash\"\n altText=\"Ta bort länk\"\n disabled={isSaving || !id}\n />\n handleUpdate()}\n label=\"Spara\"\n altText=\"Spara länk\"\n disabled={isSaving || !linkUrl}\n />\n setEditMode(prevState => !prevState)}\n label=\"Avbryt\"\n disabled={isSaving}\n />\n \n )}\n {!editMode && (\n <>\n setEditMode(prevState => !prevState)}\n label=\"Redigera\"\n icon=\"Edit\"\n altText=\"Redigera länk\"\n />\n \n )}\n \n
    \n \n )}\n
    \n );\n}\n\nUnionLinkConfig.propTypes = {\n forbundList: PropTypes.arrayOf(PropTypes.shape({})),\n};\n\nUnionLinkConfig.defaultProps = {\n forbundList: [],\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Panel from 'atoms/panel/Panel';\nimport Section from 'atoms/section/Section';\nimport Const from 'const';\nimport { ToastContainer } from 'react-toastify';\nimport UnionLinkConfig from './unionlinkconfig/UnionLinkConfig';\n\nexport default function UnionConfig({ forbundList }) {\n return (\n \n \n
    \n \n
    \n
    \n );\n}\n\nUnionConfig.propTypes = {\n forbundList: PropTypes.arrayOf(PropTypes.shape({})),\n};\n\nUnionConfig.defaultProps = {\n forbundList: [],\n};\n","import React, { useState } from 'react';\nimport Button from 'atoms/button/Button';\nimport PropTypes from 'prop-types';\nimport styles from './Modal.module.css';\n\nconst Modal = ({ show, title, message, children, handleClose }) => {\n // const handleOkClick = () => {\n // console.log('Hej innifrån modal');\n // handleClose();\n // };\n\n if (show === false) {\n return null;\n }\n return (\n <>\n
    \n
    \n
    \n
    \n
    {title}
    \n
    \n
    \n
    {message}
    \n
    \n
    {children}
    \n
    \n handleClose('true')}\n variant=\"primary\"\n label=\" Ok \"\n altText=\"Ok\"\n disabled={false}\n />\n handleClose('false')}\n label=\"Avbryt\"\n altText=\"Avbryt\"\n disabled={false}\n />\n
    \n
    \n
    \n \n );\n};\n\nModal.propTypes = {\n show: PropTypes.bool,\n title: PropTypes.string,\n message: PropTypes.string,\n handleClose: PropTypes.func,\n};\n\nModal.defaultProps = {\n // setShow: PropTypes.func,\n};\n\nexport default Modal;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport styles from './ActiveSelections.module.css';\n\nconst FilterString = (item, index, length) => {\n let filterString = item.DSL2_DESC.trimStart().trimEnd();\n\n if (filterString === 'Okänt') {\n filterString = 'Samtliga';\n }\n\n if (length === 1 || index === 0) {\n return filterString;\n }\n if (index === length - 1) {\n return ` & ${filterString}`;\n }\n return `, ${filterString}`;\n};\n\nconst ActiveSelections = ({ configurationType, dslConfigurations }) => {\n return (\n
    \n {'Gjorda urval: '}\n {dslConfigurations.length > 0 &&\n dslConfigurations\n .filter(\n dslConfiguration =>\n dslConfiguration.dsL2Configs.filter(\n dsL2Config => dsL2Config.copyFromTestToProd === true\n ).length > 0\n )\n .map(dslConfiguration => (\n \n \n {`${dslConfiguration.dsL1Config.DSL1_DESC}:`}\n \n\n \n {dslConfiguration.dsL2Configs\n .filter(dsL2Config => dsL2Config.copyFromTestToProd === true)\n .map((dsL2Config, index, { length }) => (\n \n {FilterString(dsL2Config, index, length)}\n \n ))}\n \n
    \n ))}\n
    \n );\n};\n\nActiveSelections.propTypes = {\n configurationType: PropTypes.string.isRequired,\n dslConfigurations: PropTypes.arrayOf(Object).isRequired,\n};\n\nexport default ActiveSelections;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport styles from './ActiveSelections.module.css';\n\nconst FilterString = (item, index, length) => {\n let itemName = '';\n if (length === 1 || index === 0) {\n itemName = item.name;\n return itemName;\n }\n if (index === length - 1) {\n itemName = `& ${item.name}`;\n return itemName;\n }\n itemName = `, ${item.name}`;\n return itemName;\n};\n\nconst ActiveUnionSelections = ({ unions }) => {\n return (\n
    \n {'Gjorda urval: '}\n {unions\n .filter(union => union.isSelected === true)\n .map((union, index, { length }) => (\n
    \n \n {FilterString(union, index, length)}\n \n
    \n ))}\n
    \n );\n};\n\nActiveUnionSelections.propTypes = {\n unions: PropTypes.arrayOf(Object).isRequired,\n};\n\nexport default ActiveUnionSelections;\n","import CheckboxAdmin from 'atoms/checkboxadmin/CheckboxAdmin';\nimport PropTypes from 'prop-types';\nimport React, { useEffect, useState } from 'react';\nimport Accordion from 'atoms/accordion/Accordion';\nimport styles from './DataSource.module.css';\n\nconst DataSource = ({\n configurationType,\n dslConfig,\n handleUpdateConfiguration,\n}) => {\n const handleItemUpdate = (dsl1, dsl2) => {\n const newList = dslConfig.dsL2Configs.map(dsl2Config => {\n if (dsl2Config.DSL2 === dsl2) {\n const updateddsl2Config = {\n ...dsl2Config,\n copyFromTestToProd: !dsl2Config.copyFromTestToProd,\n };\n\n return updateddsl2Config;\n }\n\n return dsl2Config;\n });\n dslConfig.dsL2Configs = newList;\n handleUpdateConfiguration(dslConfig, configurationType);\n };\n\n return (\n <>\n \n
    \n {dslConfig.dsL2Configs.map(dsl2Config => (\n \n \n handleItemUpdate(dslConfig.dsL1Config.DSL1, dsl2Config.DSL2)\n }\n />\n
    \n
    \n ))}\n
    \n \n \n );\n};\n\nDataSource.defaultProps = {\n dslConfig: null,\n};\n\nexport default DataSource;\n","import React from 'react';\nimport CheckboxAdmin from 'atoms/checkboxadmin/CheckboxAdmin';\nimport PropTypes from 'prop-types';\nimport Button from 'atoms/button/Button';\nimport ButtonBar from 'atoms/buttonbar/ButtonBar';\nimport styles from './UnionSelect.module.css';\n\nconst UnionSelect = ({ unions, handleUpdateUnionSelection }) => {\n const handleItemUpdate = id => {\n const newList = unions.map(union => {\n if (union.id === id) {\n const updatedUnion = {\n ...union,\n isSelected: !union.isSelected,\n };\n return updatedUnion;\n }\n\n return union;\n });\n handleUpdateUnionSelection(newList);\n };\n\n const selectAllUnions = () => {\n const newList = unions.map(union => {\n const updatedUnion = {\n ...union,\n isSelected: true,\n };\n return updatedUnion;\n });\n handleUpdateUnionSelection(newList);\n };\n\n const unSelectAllUnions = () => {\n const newList = unions.map(union => {\n const updatedUnion = {\n ...union,\n isSelected: false,\n };\n return updatedUnion;\n });\n handleUpdateUnionSelection(newList);\n };\n\n return (\n
    \n {unions.map(union => (\n
    \n handleItemUpdate(union.id)}\n />\n
    \n
    \n ))}\n
    \n \n selectAllUnions()}\n label=\"Markera alla\"\n altText=\"Markera alla förbund\"\n disabled={false}\n />\n unSelectAllUnions()}\n label=\"Avmarkera alla\"\n altText=\"Avmarkera alla förbund\"\n disabled={false}\n />\n \n
    \n );\n};\n\nUnionSelect.propTypes = {\n unions: PropTypes.arrayOf(Object).isRequired,\n handleUpdateUnionSelection: PropTypes.func.isRequired,\n};\n\nexport default UnionSelect;\n","/* eslint-disable camelcase */\nimport React from 'react';\nimport styles from './HelpBox.module.css';\n\nconst HelpBox = () => {\n return (\n
    \n

    Hjälp

    \n

    \n För att kopiera konfiguration från testmiljö till produktionsmiljö för\n valt förbund gör följande:\n

    \n
      \n
    • Enkel sökning
    • \n
        \n
      • Välj datakällor som ska kopieras.
      • \n
      \n
    • Avancerad sökning
    • \n
        \n
      • Välj förbund för vilka konfiguration ska kopieras.
      • \n
      • Välj datakällor som ska kopieras.
      • \n
      \n
    • Öppen sökning
    • \n
        \n
      • Välj datakällor som ska kopieras.
      • \n
      \n
    • Klicka på Kopiera konfiguration
    • \n
        \n
      • \n Tjänsten kopierar konfiguration från testmiljö till produktionsmiljö\n för de vyer som har valts samt för valda förbund.\n
      • \n
      • \n All befintlig konfiguration för valda vyer och datakällor kommer att\n tas bort i produktionsmiljön och ersättas av konfiguration gjord i\n testmiljön. (Gäller konfiguration för samtliga år)\n
      • \n
      \n
    \n
    \n );\n};\n\nHelpBox.propTypes = {};\n\nHelpBox.defaultProps = {};\n\nexport default HelpBox;\n","/* eslint-disable camelcase */\nimport React from 'react';\nimport Loader from 'atoms/loader/Loader';\nimport { IconCircleCheck } from 'tabler-icons';\nimport styles from './StatusBox.module.css';\n\nconst StatusBox = ({ jobStatus }) => {\n return (\n <>\n
    \n

    Status

    \n\n {jobStatus !== null && jobStatus && jobStatus.isJobRunning ? (\n
    \n \n
    \n ) : (\n

    Inget jobb för att kopiera konfiguration körs för tillfället.

    \n )}\n {jobStatus !== null &&\n jobStatus &&\n jobStatus.isJobRunning &&\n jobStatus.currentSummaryStatus &&\n jobStatus.currentSummaryStatus !== null && (\n
    \n

    {`[${jobStatus.currentSummaryStatus.date}] ${jobStatus.currentSummaryStatus.statusMessage}`}

    \n
    \n )}\n\n {jobStatus !== null &&\n jobStatus &&\n jobStatus.summaryStatuses &&\n jobStatus.summaryStatuses.length > 0 ? (\n
      \n {jobStatus &&\n jobStatus.summaryStatuses.length > 0 &&\n jobStatus.summaryStatuses.map((\n status,\n index // Lägg till 'key' prop\n ) => (\n
    • \n
      \n \n \n {`[${status.date}] ${status.statusMessage} `}{' '}\n \n
      \n
    • \n ))}\n
    \n ) : (\n <>\n )}\n
    \n \n );\n};\n\nStatusBox.propTypes = {};\n\nStatusBox.defaultProps = {};\n\nexport default StatusBox;\n","import ButtonLink from 'atoms/buttonlink/ButtonLink';\nimport Panel from 'atoms/panel/Panel';\nimport Button from 'atoms/button/Button';\nimport ButtonBar from 'atoms/buttonbar/ButtonBar';\nimport Section from 'atoms/section/Section';\nimport Const from 'const';\nimport useScrollTo from 'hooks/useScrollTo';\nimport React, { useState, useEffect, useCallback, useRef } from 'react';\nimport { useHistory } from 'react-router-dom';\nimport ApiService from 'services/ApiService';\nimport { useAuth } from 'services/UseAuth';\nimport Modal from 'atoms/modal/Modal';\nimport Accordion from 'atoms/accordion/Accordion';\nimport ActiveSelections from 'components/admin/copyconfiguration/activeselections/ActiveSelections';\nimport ActiveUnionSelections from 'components/admin/copyconfiguration/activeselections/ActiveUnionSelections';\nimport DataSource from 'components/admin/copyconfiguration/datasource/DataSource';\nimport UnionSelect from 'components/admin/copyconfiguration/unionselect/UnionSelect';\nimport Loader from 'atoms/loader/Loader';\nimport { ToastContainer, toast } from 'react-toastify';\nimport 'react-toastify/dist/ReactToastify.css';\n\nimport HelpBox from './helpbox/HelpBox';\nimport StatusBox from './statusbox/StatusBox';\nimport styles from './CopyConfiguration.module.css';\n\nconst CopyConfiguration = () => {\n const history = useHistory();\n const ref = useScrollTo('hjalp');\n const { user, signout, autoRefreshToken } = useAuth();\n const { token, forbund } = user;\n const [, setState] = useState();\n const [\n isLoadingSimpleConfiguration,\n setIsLoadingSimpleConfiguration,\n ] = useState(false);\n const [\n isLoadingAdvancedConfiguration,\n setIsLoadingAdvancedConfiguration,\n ] = useState(false);\n\n const [simpleConfiguration, setSimpleConfiguration] = useState();\n const [advancedConfiguration, setAdvancedConfiguration] = useState();\n const [previewConfiguration, setPreviewConfiguration] = useState();\n const [unionList, setUnionList] = useState([]);\n const [showModal, setShowModal] = useState(false);\n const [jobStatus, setJobStatus] = useState();\n const [hasAnySelectionsSimple, setHasAnySelectionsSimple] = useState(false);\n const [hasAnySelectionsPreview, setHasAnySelectionsPreview] = useState(false);\n const [hasAnySelectionsAdvanced, setHasAnySelectionsAdvanced] = useState(\n false\n );\n\n const jobStatusRef = useRef();\n\n useEffect(() => {\n jobStatusRef.current = jobStatus;\n }, [jobStatus]);\n\n const HasAnySelectionsSimple = () => {\n setHasAnySelectionsSimple(false);\n if (\n simpleConfiguration &&\n simpleConfiguration.dslConfigs &&\n simpleConfiguration.dslConfigs.length > 0\n ) {\n simpleConfiguration.dslConfigs.forEach(dslConfig => {\n dslConfig.dsL2Configs.forEach(dsl2Config => {\n if (dsl2Config.copyFromTestToProd === true) {\n setHasAnySelectionsSimple(true);\n }\n });\n });\n }\n };\n\n const HasAnySelectionsPreview = () => {\n setHasAnySelectionsPreview(false);\n\n if (\n previewConfiguration &&\n previewConfiguration.dslConfigs &&\n previewConfiguration.dslConfigs.length > 0\n ) {\n previewConfiguration.dslConfigs.forEach(dslConfig => {\n dslConfig.dsL2Configs.forEach(dsl2Config => {\n if (dsl2Config.copyFromTestToProd === true) {\n setHasAnySelectionsPreview(true);\n }\n });\n });\n }\n };\n\n const HasAnySelectionsAdvanced = () => {\n setHasAnySelectionsAdvanced(false);\n\n if (\n advancedConfiguration &&\n advancedConfiguration.dslConfigs &&\n advancedConfiguration.dslConfigs.length > 0\n ) {\n advancedConfiguration.dslConfigs.forEach(dslConfig => {\n dslConfig.dsL2Configs.forEach(dsl2Config => {\n if (dsl2Config.copyFromTestToProd === true) {\n setHasAnySelectionsAdvanced(true);\n }\n });\n });\n }\n };\n\n const triggerCopyConfiguration = () => {\n let advancedConfig = {\n configurationType: 'advanced',\n forbund: [],\n dslConfigs: [],\n };\n\n if (advancedConfiguration !== null) {\n advancedConfig = advancedConfiguration;\n }\n const copyConfigurationJobRequest = {\n copySimpleConfigurationJobRequest: simpleConfiguration,\n copyAdvancedConfigurationJobRequest: advancedConfig,\n copyPreviewConfigurationJobRequest: previewConfiguration,\n };\n\n ApiService.copyConfigurationExecute(copyConfigurationJobRequest, token)\n .then(() => {\n toast.success('Kopiering av konfiguration startad.');\n })\n .catch(error => {\n if (error.status === 501) {\n toast.error(\n 'Ett jobb för kopiering av konfiguration körs redan. Det är inte tillåtet att köra mer än ett jobb samtidigt.'\n );\n } else if (error.status === 502) {\n toast.error(error.message);\n } else {\n toast.error('Något gick fel vid kopiering av konfiguration.');\n }\n });\n };\n\n const handleUpdateUnionSelection = unions => {\n setUnionList(unions);\n };\n\n const handleUpdateConfiguration = (dslConfiguration, configurationType) => {\n let existingConfiguration = {};\n\n if (configurationType === 'Simple') {\n existingConfiguration = simpleConfiguration;\n } else if (configurationType === 'Advanced') {\n existingConfiguration = advancedConfiguration;\n } else if (configurationType === 'Preview') {\n existingConfiguration = previewConfiguration;\n }\n\n const newdslConfigList = existingConfiguration.dslConfigs.map(item => {\n if (item.dsL1Config.DSL1 === dslConfiguration.dsL1Config.DSL1) {\n const updateddslConfig = {\n ...item,\n dsL2Configs: dslConfiguration.dsL2Configs,\n };\n return updateddslConfig;\n }\n return item;\n });\n\n const newConfiguration = { ...existingConfiguration };\n newConfiguration.dslConfigs = newdslConfigList;\n\n if (configurationType === 'Simple') {\n setSimpleConfiguration(newConfiguration);\n } else if (configurationType === 'Advanced') {\n setAdvancedConfiguration(newConfiguration);\n } else if (configurationType === 'Preview') {\n setPreviewConfiguration(newConfiguration);\n }\n };\n\n const handleModalClose = resultOk => {\n if (resultOk === 'true') {\n setShowModal(false);\n triggerCopyConfiguration();\n } else {\n setShowModal(false);\n }\n };\n\n const unSelectAllUnions = () => {\n const newList = unionList.map(union => {\n const updatedUnion = {\n ...union,\n isSelected: false,\n };\n return updatedUnion;\n });\n setUnionList(newList);\n };\n\n const unSelectAllDataSources = configuration => {\n if (!configuration) return;\n if (!configuration.dslConfigs) return;\n const newdslConfigList = configuration.dslConfigs.map(dslConfig => {\n const newdsL2ConfigList = dslConfig.dsL2Configs.map(dsl2Config => {\n const updateddsl2Config = {\n ...dsl2Config,\n copyFromTestToProd: false,\n };\n return updateddsl2Config;\n });\n\n const updateddslConfig = {\n dsL1Config: dslConfig.dsL1Config,\n dsL2Configs: newdsL2ConfigList,\n };\n\n return updateddslConfig;\n });\n\n const newConfiguration = { ...configuration };\n newConfiguration.dslConfigs = newdslConfigList;\n\n if (configuration.configurationType === 'Simple') {\n setSimpleConfiguration(newConfiguration);\n } else if (configuration.configurationType === 'Advanced') {\n setAdvancedConfiguration(newConfiguration);\n } else if (configuration.configurationType === 'Preview') {\n setPreviewConfiguration(newConfiguration);\n }\n };\n\n const handleError = useCallback(error => {\n if (error.status === 401) {\n console.log('error 401');\n signout();\n history.push('/logga-ut');\n } else {\n setState(() => {\n throw error;\n });\n }\n }, []);\n\n const handleJobStatusUpdate = jobStatusUpdateMsg => {\n try {\n const jsonJobStatusUpdate = JSON.parse(jobStatusUpdateMsg);\n\n console.log('JobStatusUpdate:');\n console.log(jsonJobStatusUpdate);\n setJobStatus(prevState => jsonJobStatusUpdate);\n } catch (err) {\n console.log(err);\n }\n };\n\n useEffect(() => {\n console.log('Efter setJobStatus:');\n console.log(jobStatus);\n }, [jobStatus]);\n\n // INIT.\n useEffect(() => {\n ApiService.createEventSource(\n 'CopyConfigurationJob/status',\n handleJobStatusUpdate\n );\n\n setIsLoadingSimpleConfiguration(true);\n\n const simpleConfigurationRequest = {\n fds: {\n forbund: [forbund],\n dsl1: null,\n dsl2: null,\n year: null,\n },\n configurationtype: 'simple',\n };\n\n const previewConfigurationRequest = {\n fds: {\n forbund: [forbund],\n dsl1: null,\n dsl2: null,\n year: null,\n },\n configurationtype: 'preview',\n };\n\n const promiseUnions = new Promise((resolve, reject) =>\n ApiService.getUnions(user.token)\n .then(data => resolve(data))\n .catch(error => reject(handleError(error)))\n );\n\n const promiseSimpleConfiguration = new Promise((resolve, reject) =>\n ApiService.getConfiguration(simpleConfigurationRequest, token)\n .then(data => resolve(data))\n .catch(error => reject(handleError(error)))\n );\n\n const promisePreviewConfiguration = new Promise((resolve, reject) =>\n ApiService.getConfiguration(previewConfigurationRequest, token)\n .then(data => resolve(data))\n .catch(error => reject(handleError(error)))\n );\n\n Promise.all([\n promiseUnions,\n promiseSimpleConfiguration,\n promisePreviewConfiguration,\n ])\n .then(\n ([unionData, simpleConfigurationData, previewConfigurationData]) => {\n setUnionList(\n unionData\n .filter(a => a.forbundskodSas !== 'XX')\n .sort((a, b) => `${a.name}`.localeCompare(b.name, 'sv'))\n .map(union => ({ ...union, isSelected: false }))\n );\n setSimpleConfiguration(simpleConfigurationData);\n setPreviewConfiguration(previewConfigurationData);\n autoRefreshToken(token);\n }\n )\n .finally(() => setIsLoadingSimpleConfiguration(false));\n }, [token, forbund]);\n\n useEffect(() => {\n HasAnySelectionsSimple();\n }, [simpleConfiguration]);\n\n useEffect(() => {\n HasAnySelectionsPreview();\n }, [previewConfiguration]);\n\n useEffect(() => {\n HasAnySelectionsAdvanced();\n }, [advancedConfiguration]);\n\n useEffect(() => {\n if (unionList && unionList.filter(union => union.isSelected).length > 0) {\n const selectedUnions = unionList\n .filter(union => union.isSelected)\n .map(union => {\n return union.forbundskodSas;\n });\n\n const advancedConfigurationRequest = {\n fds: {\n forbund: selectedUnions,\n dsl1: null,\n dsl2: null,\n year: null,\n },\n configurationtype: 'advanced',\n };\n setIsLoadingAdvancedConfiguration(true);\n ApiService.getConfiguration(advancedConfigurationRequest, token)\n .then(data => setAdvancedConfiguration(data))\n .then(() => {\n autoRefreshToken(token);\n })\n .catch(error => {\n if (error.status === 401) {\n signout();\n history.push('/logga-ut');\n }\n })\n .finally(() => setIsLoadingAdvancedConfiguration(false));\n } else {\n setAdvancedConfiguration(null);\n }\n }, [unionList]);\n\n return (\n <>\n \n \n
    \n

    \n Här kan du kopiera konfiguration från testmiljö till\n produktionsmiljö. Välj datakällor för respektive vy och klicka på\n kopiera konfiguration.\n

    \n\n \n
    \n
    \n

    Välj datakällor

    \n\n {isLoadingSimpleConfiguration ? (\n
    \n \n
    \n ) : (\n <>\n {simpleConfiguration &&\n simpleConfiguration.dslConfigs.map((dslConfig, index) => (\n \n \n
    \n
    \n ))}\n\n
    \n {simpleConfiguration && (\n \n )}\n {\n unSelectAllDataSources(simpleConfiguration);\n }}\n />\n \n )}\n
    \n \n\n \n
    \n
    \n

    Välj förbund

    \n

    \n Välj ett eller flera förbund för vilka inställningarna för\n avancerad sökning ska kopieras.\n

    \n \n {unionList && (\n \n )}\n\n
    \n \n\n
    \n {unionList && (\n \n )}\n {\n unSelectAllUnions();\n }}\n />\n\n

    Välj datakällor

    \n {isLoadingAdvancedConfiguration ? (\n
    \n \n
    \n ) : (\n <>\n {advancedConfiguration &&\n advancedConfiguration.dslConfigs.map((dslConfig, index) => (\n \n \n
    \n
    \n ))}\n
    \n\n {advancedConfiguration && (\n <>\n \n \n )}\n {\n unSelectAllDataSources(advancedConfiguration);\n }}\n />\n \n )}\n
    \n \n\n
    \n
    \n \n {user.role === 'admin' && (\n setShowModal(true)}\n label=\"Kopiera konfiguration\"\n altText=\"Starta jobb för att kopiera konfiguration\"\n disabled={\n !(\n hasAnySelectionsSimple ||\n hasAnySelectionsPreview ||\n hasAnySelectionsAdvanced\n )\n }\n />\n )}\n \n
    \n\n
    \n \n
    \n\n
    \n \n
    \n\n \n {simpleConfiguration && hasAnySelectionsSimple && (\n <>\n

    Enkel sökning

    \n \n \n )}\n\n {advancedConfiguration && hasAnySelectionsAdvanced && (\n <>\n

    Avancerad sökning

    \n Förbund\n {unionList && (\n \n )}\n Datakällor\n \n \n )}\n\n {previewConfiguration && hasAnySelectionsPreview && (\n <>\n

    Öppen sökning

    \n \n \n )}\n \n
    \n
    \n \n );\n};\n\nexport default CopyConfiguration;\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport styles from './NotificationRow.module.css';\nimport Button from '../../../../atoms/button/Button';\n\nconst NotificationRow = ({\n id,\n textId,\n unionId,\n value,\n deleteCb,\n updateCb,\n forbund,\n}) => {\n const [expand, setExpand] = useState(false);\n const [message, setMessage] = useState(value);\n const [editable, setEditable] = useState(false);\n\n const handleExpand = () => {\n if (!editable) setExpand(!expand);\n };\n\n const handleText = e => {\n // Return if user presses the enter key\n if (e.nativeEvent.inputType === 'insertLineBreak') return;\n\n setMessage(e.target.value);\n };\n\n const parseDataSources = json => {\n let dataSources;\n\n try {\n dataSources = Object.entries(JSON.parse(json)).map(\n ([k, v]) => ` ${k}:${v} `\n );\n } catch (e) {\n dataSources = [];\n }\n\n return dataSources.length ? dataSources : 'samtliga';\n };\n\n return (\n <>\n \n
    \n {(unionId &&

    {`endast förbund: ${forbund}`}

    ) || (\n

    samtliga förbund

    \n )}\n

    \n {`Källa: ${parseDataSources(textId)}`}\n

    \n
    \n

    meddelande

    \n {!editable ? (\n

    {`${message}`}

    \n ) : (\n